pax_global_header00006660000000000000000000000064145562252600014521gustar00rootroot0000000000000052 comment=4a5ea43f1bc32e58ce99a0c2f91c912e7afa753c synapse-1.100.0/000077500000000000000000000000001455622526000133425ustar00rootroot00000000000000synapse-1.100.0/.ci/000077500000000000000000000000001455622526000140135ustar00rootroot00000000000000synapse-1.100.0/.ci/complement_package.gotpl000066400000000000000000000064371455622526000207120ustar00rootroot00000000000000{{- /*gotype: github.com/haveyoudebuggedit/gotestfmt/parser.Package*/ -}} {{- /* This template contains the format for an individual package. GitHub actions does not currently support nested groups so we are creating a stylized header for each package. This template is based on https://github.com/haveyoudebuggedit/gotestfmt/blob/f179b0e462a9dcf7101515d87eec4e4d7e58b92a/.gotestfmt/github/package.gotpl which is under the Unlicense licence. */ -}} {{- $settings := .Settings -}} {{- if and (or (not $settings.HideSuccessfulPackages) (ne .Result "PASS")) (or (not $settings.HideEmptyPackages) (ne .Result "SKIP") (ne (len .TestCases) 0)) -}} {{- if eq .Result "PASS" -}} {{ "\033" }}[0;32m {{- else if eq .Result "SKIP" -}} {{ "\033" }}[0;33m {{- else -}} {{ "\033" }}[0;31m {{- end -}} 📦 {{ .Name }}{{- "\033" }}[0m {{- with .Coverage -}} {{- "\033" -}}[0;37m ({{ . }}% coverage){{- "\033" -}}[0m {{- end -}} {{- "\n" -}} {{- with .Reason -}} {{- " " -}}🛑 {{ . -}}{{- "\n" -}} {{- end -}} {{- with .Output -}} {{- . -}}{{- "\n" -}} {{- end -}} {{- with .TestCases -}} {{- /* Passing tests are first */ -}} {{- range . -}} {{- if eq .Result "PASS" -}} ::group::{{ "\033" }}[0;32m✅{{ " " }}{{- .Name -}} {{- "\033" -}}[0;37m ({{if $settings.ShowTestStatus}}{{.Result}}; {{end}}{{ .Duration -}} {{- with .Coverage -}} , coverage: {{ . }}% {{- end -}}) {{- "\033" -}}[0m {{- "\n" -}} {{- with .Output -}} {{- formatTestOutput . $settings -}} {{- "\n" -}} {{- end -}} ::endgroup::{{- "\n" -}} {{- end -}} {{- end -}} {{- /* Then skipped tests are second */ -}} {{- range . -}} {{- if eq .Result "SKIP" -}} ::group::{{ "\033" }}[0;33m🚧{{ " " }}{{- .Name -}} {{- "\033" -}}[0;37m ({{if $settings.ShowTestStatus}}{{.Result}}; {{end}}{{ .Duration -}} {{- with .Coverage -}} , coverage: {{ . }}% {{- end -}}) {{- "\033" -}}[0m {{- "\n" -}} {{- with .Output -}} {{- formatTestOutput . $settings -}} {{- "\n" -}} {{- end -}} ::endgroup::{{- "\n" -}} {{- end -}} {{- end -}} {{- /* and failing tests are last */ -}} {{- range . -}} {{- if and (ne .Result "PASS") (ne .Result "SKIP") -}} ::group::{{ "\033" }}[0;31m❌{{ " " }}{{- .Name -}} {{- "\033" -}}[0;37m ({{if $settings.ShowTestStatus}}{{.Result}}; {{end}}{{ .Duration -}} {{- with .Coverage -}} , coverage: {{ . }}% {{- end -}}) {{- "\033" -}}[0m {{- "\n" -}} {{- with .Output -}} {{- formatTestOutput . $settings -}} {{- "\n" -}} {{- end -}} ::endgroup::{{- "\n" -}} {{- end -}} {{- end -}} {{- end -}} {{- "\n" -}} {{- end -}} synapse-1.100.0/.ci/latest_deps_build_failed_issue_template.md000066400000000000000000000002111455622526000244240ustar00rootroot00000000000000--- title: CI run against latest deps is failing --- See https://github.com/{{env.GITHUB_REPOSITORY}}/actions/runs/{{env.GITHUB_RUN_ID}} synapse-1.100.0/.ci/postgres-config.yaml000066400000000000000000000007561455622526000200200ustar00rootroot00000000000000# Configuration file used for testing the 'synapse_port_db' script. # Tells the script to connect to the postgresql database that will be available in the # CI's Docker setup at the point where this file is considered. server_name: "localhost:8800" signing_key_path: ".ci/test.signing.key" report_stats: false database: name: "psycopg2" args: user: postgres host: localhost password: postgres database: synapse # Suppress the key server warning. trusted_key_servers: [] synapse-1.100.0/.ci/scripts/000077500000000000000000000000001455622526000155025ustar00rootroot00000000000000synapse-1.100.0/.ci/scripts/auditwheel_wrapper.py000077500000000000000000000110741455622526000217550ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # # Wraps `auditwheel repair` to first check if we're repairing a potentially abi3 # compatible wheel, if so rename the wheel before repairing it. import argparse import os import subprocess from typing import Optional from zipfile import ZipFile from packaging.tags import Tag from packaging.utils import parse_wheel_filename from packaging.version import Version def check_is_abi3_compatible(wheel_file: str) -> None: """Check the contents of the built wheel for any `.so` files that are *not* abi3 compatible. """ with ZipFile(wheel_file, "r") as wheel: for file in wheel.namelist(): if not file.endswith(".so"): continue if not file.endswith(".abi3.so"): raise Exception(f"Found non-abi3 lib: {file}") def cpython(wheel_file: str, name: str, version: Version, tag: Tag) -> str: """Replaces the cpython wheel file with a ABI3 compatible wheel""" if tag.abi == "abi3": # Nothing to do. return wheel_file check_is_abi3_compatible(wheel_file) # HACK: it seems that some older versions of pip will consider a wheel marked # as macosx_11_0 as incompatible with Big Sur. I haven't done the full archaeology # here; there are some clues in # https://github.com/pantsbuild/pants/pull/12857 # https://github.com/pypa/pip/issues/9138 # https://github.com/pypa/packaging/pull/319 # Empirically this seems to work, note that macOS 11 and 10.16 are the same, # both versions are valid for backwards compatibility. platform = tag.platform.replace("macosx_11_0", "macosx_10_16") abi3_tag = Tag(tag.interpreter, "abi3", platform) dirname = os.path.dirname(wheel_file) new_wheel_file = os.path.join( dirname, f"{name}-{version}-{abi3_tag}.whl", ) os.rename(wheel_file, new_wheel_file) print("Renamed wheel to", new_wheel_file) return new_wheel_file def main(wheel_file: str, dest_dir: str, archs: Optional[str]) -> None: """Entry point""" # Parse the wheel file name into its parts. Note that `parse_wheel_filename` # normalizes the package name (i.e. it converts matrix_synapse -> # matrix-synapse), which is not what we want. _, version, build, tags = parse_wheel_filename(os.path.basename(wheel_file)) name = os.path.basename(wheel_file).split("-")[0] if len(tags) != 1: # We expect only a wheel file with only a single tag raise Exception(f"Unexpectedly found multiple tags: {tags}") tag = next(iter(tags)) if build: # We don't use build tags in Synapse raise Exception(f"Unexpected build tag: {build}") # If the wheel is for cpython then convert it into an abi3 wheel. if tag.interpreter.startswith("cp"): wheel_file = cpython(wheel_file, name, version, tag) # Finally, repair the wheel. if archs is not None: # If we are given archs then we are on macos and need to use # `delocate-listdeps`. subprocess.run(["delocate-listdeps", wheel_file], check=True) subprocess.run( ["delocate-wheel", "--require-archs", archs, "-w", dest_dir, wheel_file], check=True, ) else: subprocess.run(["auditwheel", "repair", "-w", dest_dir, wheel_file], check=True) if __name__ == "__main__": parser = argparse.ArgumentParser(description="Tag wheel as abi3 and repair it.") parser.add_argument( "--wheel-dir", "-w", metavar="WHEEL_DIR", help="Directory to store delocated wheels", required=True, ) parser.add_argument( "--require-archs", metavar="archs", default=None, ) parser.add_argument( "wheel_file", metavar="WHEEL_FILE", ) args = parser.parse_args() wheel_file = args.wheel_file wheel_dir = args.wheel_dir archs = args.require_archs main(wheel_file, wheel_dir, archs) synapse-1.100.0/.ci/scripts/calculate_jobs.py000077500000000000000000000067531455622526000210440ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # # Calculate the trial jobs to run based on if we're in a PR or not. import json import os def set_output(key: str, value: str): # See https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter with open(os.environ["GITHUB_OUTPUT"], "at") as f: print(f"{key}={value}", file=f) IS_PR = os.environ["GITHUB_REF"].startswith("refs/pull/") # First calculate the various trial jobs. # # For PRs, we only run each type of test with the oldest Python version supported (which # is Python 3.8 right now) trial_sqlite_tests = [ { "python-version": "3.8", "database": "sqlite", "extras": "all", } ] if not IS_PR: trial_sqlite_tests.extend( { "python-version": version, "database": "sqlite", "extras": "all", } for version in ("3.9", "3.10", "3.11", "3.12") ) trial_postgres_tests = [ { "python-version": "3.8", "database": "postgres", "postgres-version": "11", "extras": "all", } ] if not IS_PR: trial_postgres_tests.append( { "python-version": "3.12", "database": "postgres", "postgres-version": "16", "extras": "all", } ) trial_no_extra_tests = [ { "python-version": "3.8", "database": "sqlite", "extras": "", } ] print("::group::Calculated trial jobs") print( json.dumps( trial_sqlite_tests + trial_postgres_tests + trial_no_extra_tests, indent=4 ) ) print("::endgroup::") test_matrix = json.dumps( trial_sqlite_tests + trial_postgres_tests + trial_no_extra_tests ) set_output("trial_test_matrix", test_matrix) # First calculate the various sytest jobs. # # For each type of test we only run on focal on PRs sytest_tests = [ { "sytest-tag": "focal", }, { "sytest-tag": "focal", "postgres": "postgres", }, { "sytest-tag": "focal", "postgres": "multi-postgres", "workers": "workers", }, { "sytest-tag": "focal", "postgres": "multi-postgres", "workers": "workers", "reactor": "asyncio", }, ] if not IS_PR: sytest_tests.extend( [ { "sytest-tag": "focal", "reactor": "asyncio", }, { "sytest-tag": "focal", "postgres": "postgres", "reactor": "asyncio", }, { "sytest-tag": "testing", "postgres": "postgres", }, ] ) print("::group::Calculated sytest jobs") print(json.dumps(sytest_tests, indent=4)) print("::endgroup::") test_matrix = json.dumps(sytest_tests) set_output("sytest_test_matrix", test_matrix) synapse-1.100.0/.ci/scripts/check_lockfile.py000077500000000000000000000011611455622526000210030ustar00rootroot00000000000000#! /usr/bin/env python import sys if sys.version_info < (3, 11): raise RuntimeError("Requires at least Python 3.11, to import tomllib") import tomllib with open("poetry.lock", "rb") as f: lockfile = tomllib.load(f) try: lock_version = lockfile["metadata"]["lock-version"] assert lock_version == "2.0" except Exception: print( """\ Lockfile is not version 2.0. You probably need to upgrade poetry on your local box and re-run `poetry lock --no-update`. See the Poetry cheat sheet at https://element-hq.github.io/synapse/develop/development/dependencies.html """ ) raise synapse-1.100.0/.ci/scripts/checkout_complement.sh000077500000000000000000000016731455622526000221000ustar00rootroot00000000000000#!/bin/bash # # Fetches a version of complement which best matches the current build. # # The tarball is unpacked into `./complement`. set -e mkdir -p complement # Pick an appropriate version of complement. Depending on whether this is a PR or release, # etc. we need to use different fallbacks: # # 1. First check if there's a similarly named branch (GITHUB_HEAD_REF # for pull requests, otherwise GITHUB_REF). # 2. Attempt to use the base branch, e.g. when merging into release-vX.Y # (GITHUB_BASE_REF for pull requests). # 3. Use the default complement branch ("HEAD"). for BRANCH_NAME in "$GITHUB_HEAD_REF" "$GITHUB_BASE_REF" "${GITHUB_REF#refs/heads/}" "HEAD"; do # Skip empty branch names and merge commits. if [[ -z "$BRANCH_NAME" || $BRANCH_NAME =~ ^refs/pull/.* ]]; then continue fi (wget -O - "https://github.com/matrix-org/complement/archive/$BRANCH_NAME.tar.gz" | tar -xz --strip-components=1 -C complement) && break done synapse-1.100.0/.ci/scripts/gotestfmt000077500000000000000000000014301455622526000174420ustar00rootroot00000000000000#!/bin/bash # # wraps `gotestfmt`, hiding output from successful packages unless # all tests passed. set -o pipefail set -e # tee the test results to a log, whilst also piping them into gotestfmt, # telling it to hide successful results, so that we can clearly see # unsuccessful results. tee complement.log | gotestfmt -hide successful-packages # gotestfmt will exit non-zero if there were any failures, so if we got to this # point, we must have had a successful result. echo "All tests successful; showing all test results" # Pipe the test results back through gotestfmt, showing all results. # The log file consists of JSON lines giving the test results, interspersed # with regular stdout lines (including reports of downloaded packages). grep '^{"Time":' complement.log | gotestfmt synapse-1.100.0/.ci/scripts/prepare_old_deps.sh000077500000000000000000000026001455622526000213460ustar00rootroot00000000000000#!/usr/bin/env bash # this script is run by GitHub Actions in a plain `focal` container; it # - installs the minimal system requirements, and poetry; # - patches the project definition file to refer to old versions only; # - creates a venv with these old versions using poetry; and finally # - invokes `trial` to run the tests with old deps. set -ex # Prevent virtualenv from auto-updating pip to an incompatible version export VIRTUALENV_NO_DOWNLOAD=1 # TODO: in the future, we could use an implementation of # https://github.com/python-poetry/poetry/issues/3527 # https://github.com/pypa/pip/issues/8085 # to select the lowest possible versions, rather than resorting to this sed script. # Patch the project definitions in-place: # - Replace all lower and tilde bounds with exact bounds # - Replace all caret bounds---but not the one that defines the supported Python version! # - Delete all lines referring to psycopg2 --- so no testing of postgres support. # - Use pyopenssl 17.0, which is the oldest version that works with # a `cryptography` compiled against OpenSSL 1.1. # - Omit systemd: we're not logging to journal here. sed -i \ -e "s/[~>]=/==/g" \ -e '/^python = "^/!s/\^/==/g' \ -e "/psycopg2/d" \ -e 's/pyOpenSSL = "==16.0.0"/pyOpenSSL = "==17.0.0"/' \ -e '/systemd/d' \ pyproject.toml echo "::group::Patched pyproject.toml" cat pyproject.toml echo "::endgroup::" synapse-1.100.0/.ci/scripts/setup_complement_prerequisites.sh000077500000000000000000000015661455622526000244200ustar00rootroot00000000000000#!/bin/sh # # Common commands to set up Complement's prerequisites in a GitHub Actions CI run. # # Must be called after Synapse has been checked out to `synapse/`. # set -eu alias block='{ set +x; } 2>/dev/null; func() { echo "::group::$*"; set -x; }; func' alias endblock='{ set +x; } 2>/dev/null; func() { echo "::endgroup::"; set -x; }; func' block Install Complement Dependencies sudo apt-get -qq update && sudo apt-get install -qqy libolm3 libolm-dev go install -v github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt@latest endblock block Install custom gotestfmt template mkdir .gotestfmt/github -p cp synapse/.ci/complement_package.gotpl .gotestfmt/github/package.gotpl endblock block Check out Complement # Attempt to check out the same branch of Complement as the PR. If it # doesn't exist, fallback to HEAD. synapse/.ci/scripts/checkout_complement.sh endblock synapse-1.100.0/.ci/scripts/test_export_data_command.sh000077500000000000000000000040061455622526000231100ustar00rootroot00000000000000#!/usr/bin/env bash # Test for the export-data admin command against sqlite and postgres # Expects Synapse to have been already installed with `poetry install --extras postgres`. # Expects `poetry` to be available on the `PATH`. set -xe cd "$(dirname "$0")/../.." echo "--- Generate the signing key" # Generate the server's signing key. poetry run synapse_homeserver --generate-keys -c .ci/sqlite-config.yaml echo "--- Prepare test database" # Make sure the SQLite3 database is using the latest schema and has no pending background update. poetry run update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates # Run the export-data command on the sqlite test database poetry run python -m synapse.app.admin_cmd -c .ci/sqlite-config.yaml export-data @anon-20191002_181700-832:localhost:8800 \ --output-directory /tmp/export_data # Test that the output directory exists and contains the rooms directory dir_r="/tmp/export_data/rooms" dir_u="/tmp/export_data/user_data" if [ -d "$dir_r" ] && [ -d "$dir_u" ]; then echo "Command successful, this test passes" else echo "No output directories found, the command fails against a sqlite database." exit 1 fi # Create the PostgreSQL database. psql -c "CREATE DATABASE synapse" # Port the SQLite databse to postgres so we can check command works against postgres echo "+++ Port SQLite3 databse to postgres" poetry run synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml # Run the export-data command on postgres database poetry run python -m synapse.app.admin_cmd -c .ci/postgres-config.yaml export-data @anon-20191002_181700-832:localhost:8800 \ --output-directory /tmp/export_data2 # Test that the output directory exists and contains the rooms directory dir_r2="/tmp/export_data2/rooms" dir_u2="/tmp/export_data2/user_data" if [ -d "$dir_r2" ] && [ -d "$dir_u2" ]; then echo "Command successful, this test passes" else echo "No output directories found, the command fails against a postgres database." exit 1 fi synapse-1.100.0/.ci/scripts/test_synapse_port_db.sh000077500000000000000000000057511455622526000223030ustar00rootroot00000000000000#!/usr/bin/env bash # # Test script for 'synapse_port_db'. # - configures synapse and a postgres server. # - runs the port script on a prepopulated test sqlite db. Checks that the # return code is zero. # - reruns the port script on the same sqlite db, targetting the same postgres db. # Checks that the return code is zero. # - runs the port script against a new sqlite db. Checks the return code is zero. # # Expects Synapse to have been already installed with `poetry install --extras postgres`. # Expects `poetry` to be available on the `PATH`. set -xe -o pipefail cd "$(dirname "$0")/../.." echo "--- Generate the signing key" poetry run synapse_homeserver --generate-keys -c .ci/sqlite-config.yaml echo "--- Prepare test database" # Make sure the SQLite3 database is using the latest schema and has no pending background updates. poetry run update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates # Create the PostgreSQL database. psql -c "CREATE DATABASE synapse" echo "+++ Run synapse_port_db against test database" # TODO: this invocation of synapse_port_db (and others below) used to be prepended with `coverage run`, # but coverage seems unable to find the entrypoints installed by `pip install -e .`. poetry run synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml # We should be able to run twice against the same database. echo "+++ Run synapse_port_db a second time" poetry run synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml ##### # Now do the same again, on an empty database. echo "--- Prepare empty SQLite database" # we do this by deleting the sqlite db, and then doing the same again. rm .ci/test_db.db poetry run update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates # re-create the PostgreSQL database. psql \ -c "DROP DATABASE synapse" \ -c "CREATE DATABASE synapse" echo "+++ Run synapse_port_db against empty database" poetry run synapse_port_db --sqlite-database .ci/test_db.db --postgres-config .ci/postgres-config.yaml echo "--- Create a brand new postgres database from schema" cp .ci/postgres-config.yaml .ci/postgres-config-unported.yaml sed -i -e 's/database: synapse/database: synapse_unported/' .ci/postgres-config-unported.yaml psql -c "CREATE DATABASE synapse_unported" poetry run update_synapse_database --database-config .ci/postgres-config-unported.yaml --run-background-updates echo "+++ Comparing ported schema with unported schema" # Ignore the tables that portdb creates. (Should it tidy them up when the porting is completed?) psql synapse -c "DROP TABLE port_from_sqlite3;" pg_dump --format=plain --schema-only --no-tablespaces --no-acl --no-owner synapse_unported > unported.sql pg_dump --format=plain --schema-only --no-tablespaces --no-acl --no-owner synapse > ported.sql # By default, `diff` returns zero if there are no changes and nonzero otherwise diff -u unported.sql ported.sql | tee schema_diffsynapse-1.100.0/.ci/sqlite-config.yaml000066400000000000000000000006471455622526000174520ustar00rootroot00000000000000# Configuration file used for testing the 'synapse_port_db' script. # Tells the 'update_database' script to connect to the test SQLite database to upgrade its # schema and run background updates on it. server_name: "localhost:8800" signing_key_path: ".ci/test.signing.key" report_stats: false database: name: "sqlite3" args: database: ".ci/test_db.db" # Suppress the key server warning. trusted_key_servers: [] synapse-1.100.0/.ci/test_db.db000066400000000000000001114700001455622526000157520ustar00rootroot00000000000000SQLite format 3@ zgaz.?fhtS^:G!' x݁cŁN7|bnCW!<   X:  X 5oCvX2 | X +  Y ;  X - m D  t I  57:58/15unread_count.sql*4Y:58/13remove_presence_allow_inbound.sql33:58/12room_stats.sql23:58/11user_id_seq.py)1W:58/10federation_pos_instance_name.sql)0W:58/10drop_local_rejections_stream.sql/3:58/09shadow_ban.sql/.c:58/08_media_safe_from_quarantine.sql.sqlite -E:58/07persist_ui_auth_ips.sql,=:58/06dlols_unique_idx.py+=:58/03persist_ui_auth.sql&*Q:58/02remove_dup_outbound_pokes.sql')S:58/00background_update_ordering.sql((U957/rooms_version_column_3.sql.sqlite('U957/rooms_version_column_2.sql.sqlite&C957/rooms_version_column.sql%%O957/remove_sent_outbound_pokes.sql"$I957/local_current_membership.py)#W957/device_list_remote_cache_stale.sql*"Y957/delete_old_current_state_events.sql!C856/state_group_room_idx.sql, ]856/signing_keys_nonunique_signatures.sql7856/room_retention.sql5856/room_key_etag.sql1g856/remove_tombstoned_rooms_from_directory.sql=856/redaction_censor4.sql)W856/nuke_empty_communities_from_db.sql$M856/hidden_devices_fix.sql.sqlite)W856/event_labels_background_update.sql3856/event_labels.sql3856/event_expiry.sql"I856/device_stream_id_insert.sql+[856/delete_keys_from_deleted_backups.sql"I856/unique_user_filter_index.py3856/signing_keys.sql=856/redaction_censor2.sqlC856/public_room_list_idx.sql7856/hidden_devices.sql#K856/drop_unused_event_tables.sql=856/devices_last_seen.sql$ M856/users_in_public_rooms_idx.sql =856/user_external_ids.sql 9856/stats_separated.sql A856/room_membership_idx.sql ;856/redaction_censor.sqlA856/fix_room_keys_index.sql"I856/destinations_failure_ts.sql.a856/current_state_events_membership_mk2.sql*Y856/current_state_events_membership.sql$M856/add_spans_to_device_lists.sql"I755/users_alter_deactivated.sql%O755/track_threepid_validations.sqlA755/access_token_expiry.sql 5ql?    k ?   j dl EM& 7 q F  ` F q7:58/15unread_count.sql5,Y:58/13remove_presence_allow_inbound.sql43:58/12room_stats.sql33:58/11user_id_seq.py2+W:58/10federation_pos_instance_name.sql1+W:58/10drop_local_rejections_stream.sql03:58/09shadow_ban.sql/1c:58/08_media_safe_from_quarantine.sql.sqlite."E:58/07persist_ui_auth_ips.sql-=:58/06dlols_unique_idx.py,=:58/03persist_ui_auth.sql+(Q:58/02remove_dup_outbound_pokes.sql*)S:58/00background_update_ordering.sql)*U957/rooms_version_column_3.sql.sqlite(*U957/rooms_version_column_2.sql.sqlite'!C957/rooms_version_column.sql&'O957/remove_sent_outbound_pokes.sql%$I957/local_current_membership.py$+W957/device_list_remote_cache_stale.sql#,Y957/delete_old_current_state_events.sql"!C856/state_group_room_idx.sql!.]856/signing_keys_nonunique_signatures.sql 7856/room_retention.sql5856/room_key_etag.sql3g856/remove_tombstoned_rooms_from_directory.sql=856/redaction_censor4.sql+W856/nuke_empty_communities_from_db.sql&M856/hidden_devices_fix.sql.sqlite+W856/event_labels_background_update.sql3856/event_labels.sql3856/event_expiry.sql$I856/device_stream_id_insert.sql-[856/delete_keys_from_deleted_backups.sql$I856/unique_user_filter_index.py3856/signing_keys.sql=856/redaction_censor2.sql!C856/public_room_list_idx.sql7856/hidden_devices.sql%K856/drop_unused_event_tables.sql=856/devices_last_seen.sql&M856/users_in_public_rooms_idx.sql =856/user_external_ids.sql 9856/stats_separated.sql A856/room_membership_idx.sql ;856/redaction_censor.sql A856/fix_room_keys_index.sql$I856/destinations_failure_ts.sql0a856/current_state_events_membership_mk2.sql,Y856/current_state_events_membership.sql&M856/add_spans_to_device_lists.sql$I755/users_alter_deactivated.sql'O755/track_threepid_validations.sqlA 755/access_token_expiry.sql    AS-1  AS-1 ;     UeE%eF' m >  S % Y  j^ </    s SD %   j* ; xIR#cg48 }N}/.Q!DSFBpkqfnvBQbGoMUK:localhost:8800th.Q!CAGaRyRvrohDRBsrWH:localhost:8800th.Q!AYFqrmxwClFQlcTTYq:localhost:8800th.Q!AjjrNwXmPTCruHxaJq:localhost:8800th.Q!BpTqIemsWFZIqTcgJO:localhost:8800th.Q!BoyzlWNkRPncpDjBDg:localhost:8800th.Q!BkzROHxDAfKIzYpmPV:localhost:8800th.Q!BfEFIDBthhkweqfhir:localhost:8800th.Q!BckZfhQgrcyiMhEAAJ:localhost:8800th.Q!BPNyKqmwcpGxIbGFZG:localhost:8800th.Q!BKZJsoFNhiLTDYNclB:localhost:8800th.Q!BGbJEmJRVJGlZFQbZe:localhost:8800th.Q!BDASLhdcKfNwxCTCSg:localhost:8800th.Q!AoAvmnwMkhYBQsbCsL:localhost:8800th.Q!CkNvQnbApPIcuKygDk:localhost:8800th.Q!CgVBWWcRJoHEcwoLcq:localhost:8800th.Q!CSqENqzAezaZnGktbE:localhost:8800th.Q!CQKLQUpSYakhxVDltC:localhost:8800th.Q!CNFopUEQTFbzjmLvii:localhost:8800th.Q!CKNftKKCaOCVUyYWNY:localhost:8800th.Q!CGckPHdSYcIocFvRAq:localhost:8800th.Q!DqxFmsXPclgGqpSwdy:localhost:8800m".Q!DoiZErAdypBUMZKaeJ:localhost:8800th.Q!DntdfAPfCfgdOoRMdl:localhost:8800th.Q!DnUHoxreGexNmjSVpq:localhost:8800th.Q!DelfBAGvCrTXgNxmNV:localhost:8800th-Q!EABRjdYuYumMhLSwIa:localhost:8800m{.Q!DuqHkpTfWCUblSrxQj:localhost:8800th.Q!DuqHkpTfWCUblSrxQj:localhost:8800mq.Q!DqxFmsXPclgGqpSwdy:localhost:8800th.Q!DoiZErAdypBUMZKaeJ:localhost:8800m.Q!DntdfAPfCfgdOoRMdl:localhost:8800m.Q!DnUHoxreGexNmjSVpq:localhost:8800m.Q!DelfBAGvCrTXgNxmNV:localhost:8800m).Q!DSFBpkqfnvBQbGoMUK:localhost:8800m.Q!CkNvQnbApPIcuKygDk:localhost:8800m-Q!CgVBWWcRJoHEcwoLcq:localhost:8800m=.Q!CSqENqzAezaZnGktbE:localhost:8800m3-Q!CQKLQUpSYakhxVDltC:localhost:8800m@.Q!CNFopUEQTFbzjmLvii:localhost:8800m.Q!CKNftKKCaOCVUyYWNY:localhost:8800m.Q!CGckPHdSYcIocFvRAq:localhost:8800m.Q!CAGaRyRvrohDRBsrWH:localhost:8800m-Q!BrssELMbasSzTFpIXm:localhost:8800m).Q!BpTqIemsWFZIqTcgJO:localhost:8800m.Q!BoyzlWNkRPncpDjBDg:localhost:8800m-Q!BkzROHxDAfKIzYpmPV:localhost:8800mG.Q!BfEFIDBthhkweqfhir:localhost:8800m-Q!BckZfhQgrcyiMhEAAJ:localhost:8800mw.Q!BPNyKqmwcpGxIbGFZG:localhost:8800m.Q!BKZJsoFNhiLTDYNclB:localhost:8800m-Q!BGbJEmJRVJGlZFQbZe:localhost:8800ma-Q!BDASLhdcKfNwxCTCSg:localhost:8800m.Q!AoAvmnwMkhYBQsbCsL:localhost:8800m5-Q!AjjrNwXmPTCruHxaJq:localhost:8800mH.Q!AYFqrmxwClFQlcTTYq:localhost:8800mh.Q!AWfbViAZparIjmDaVT:localhost:8800th-Q!AWfbViAZparIjmDaVT:localhost:8800m.Q!AOEdqVKPFddrqbKPOL:localhost:8800th.Q!AOEdqVKPFddrqbKPOL:localhost:8800m|.Q!AMLmLqizBFklpqKibP:localhost:8800th.Q!AMLmLqizBFklpqKibP:localhost:8800m.Q!ABHbfUdkHCJksMsaUt:localhost:8800th.Q!ABHbfUdkHCJksMsaUt:localhost:8800m1!9:localhost:42455th1!9:localhost:42455m1!8:localhost:42455m1!7:localhost:42455m~1!6:localhost:42455th1!6:localhost:42455my1!5:localhost:42455th1!5:localhost:42455mo3!13:localhost:42455th3!13:localhost:42455m3!12:localhost:42455th3!12:localhost:42455m3!11:localhost:42455th3!11:localhost:42455m3!10:localhost:42455th3!10:localhost:42455m1!0:localhost:44405m1!0:localhost:42455th1!0:localhost:42455mf1!0:localhost:41985m1!0:localhost:37265m AH T ` $ l 0 x < H X f(o1y;EQ`"m1|@97 Q  !LaLcEGFLpjdlYlYKGC:localhost:8800th&\;6 Q!LFBhoxJpmBqFrwEzGP:localhost:8800th&\95 Q  !KxhGcTbEWmtgGNpdox:localhost:8800th&\94 Q  !KmuRTfGFgJdgIDAgIW:localhost:8800th&\:3 Q !KetCYFxrTxawNOGnOf:localhost:8800th&\92 Q  !KeqmSjifajNKxtgqhj:localhost:8800th&\91 Q  !KeBlWUQiLYUoILKkTB:localhost:8800th&\90 Q   !KdOYYnOuwAyQzqwUki:localhost:8800th&\:/ Q !KcXNWNfbLcYsBKZHIp:localhost:8800th&\9. Q  !KXMUzALpMMMKqoQXUS:localhost:8800th&\9- Q  !KIHYKMzkRDrJwiywwz:localhost:8800th&\;, Q!JusxqeECtidaPlWqhp:localhost:8800th&\9+ Q  !JnAKXOrlyisFUpgJPw:localhost:8800th&\:* Q !JiUawCFQnodcpssOfK:localhost:8800th&\9) Q  !JZouHBRxCRbcxYJnbn:localhost:8800th&\9( Q  !JYLMokjOhZZlmbZvTf:localhost:8800th&\;' Q!JPTwFTSDaBXwUTgitj:localhost:8800th&\9& Q  !JGhlAUflyNxErGGZZu:localhost:8800th&\9% Q  !IlGJpjzrvvAFuwTAgo:localhost:8800th&\;$ Q!IfYYyzLHSOeyJBxBfn:localhost:8800th&\;# Q !IZkczIYykpZDvjuUWn:localhost:8800th&\;" Q!IYxUkyFHOgvhLpdkOA:localhost:8800th&\9! Q   !ITdmSQpjMnaPoHIbws:localhost:8800th&\; Q!IPYMCBwcyNIzqdiIWv:localhost:8800th&\; Q!IMiczgkCTjejbnbeyP:localhost:8800th&\9 Q  !ILbUVZOfPPwaZRrKJd:localhost:8800th&\; Q!IGVHKYcSuxzVPlFHlj:localhost:8800th&\; Q!HusOrLtWZTLbmQZxmm:localhost:8800th&\; Q!HhYREfUiJTpjWmOuPF:localhost:8800th&\; Q!HcMGemcRrLnLprOJJR:localhost:8800th&\: Q !HbYxdEuVIeLKHwqJEh:localhost:8800th&\; Q!HZqzpRgqekPOtxstVc:localhost:8800th&\; Q!HXfrGcvJCbRItyQLVE:localhost:8800th&\9 Q  !HWTlaNxUKnDsrtlOxU:localhost:8800th&\9 Q  !HOPyhZPcKkrvSmDIvX:localhost:8800th&\; Q!HIZTeBCxvpMSpcqGVD:localhost:8800th&\9 Q  !HAFNBarGuVZuWCgwWM:localhost:8800th&\9 Q  !GwXGurbyEmykmmHcHJ:localhost:8800th&\9 Q  !GwLdUoDplyVUogXDzu:localhost:8800th&\9 Q  !GsjDgpaxdwYfnefiWO:localhost:8800th&\9 Q  !GixhPUMvtKSWoKRgvw:localhost:8800th&\: Q !GiSxJsKZhQVHBkrVPn:localhost:8800th&\ 9 Q  !GgUNbVXspVTpOlaHBl:localhost:8800th&\: Q !GSxvxNevpCiwmFCHys:localhost:8800th&\; Q!GGXyLHdVXqhQjPRvac:localhost:8800th&\9 Q  !GGTWnzJfvPQBgQqDIE:localhost:8800th&\9 Q  !GBPGYLDkXcAsHgkfuS:localhost:8800th&\; Q!FklhVuCInffbDxunWv:localhost:8800th&\; Q!FbJSiQoZtZkaFwzzQq:localhost:8800th&\9 Q  !FZOLkaLbBpaibrbHZx:localhost:8800th&\; Q!FPcQcheNebvdFvmOnr:localhost:8800th&\; Q!FIOuvzpMhoERunVYYA:localhost:8800th&\9 Q  !FAYqpziHeVZugCGaij:localhost:8800th&\9 Q  !EyyNoldCLUdFHzXTDP:localhost:8800th&\9 Q   !EyEaTZElOkdURKbEXo:localhost:8800th&\; Q!EieRtaCFZJJCIOkRPp:localhost:8800th&\9 Q  !EhUxBjnSkVXpTrQlrn:localhost:8800th&\;~ Q!EhFUhsgQbBWmrnGmaz:localhost:8800th&\9} Q  !EfJcWhdjNARbuHYrqU:localhost:8800th&\;| Q!EWkoFeckhXlNyjuIEB:localhost:8800th&\;{ Q!EMhFCPhwmnWVnjtXXM:localhost:8800th&\9z Q  !ELBgBaMSIMNkjFSumH:localhost:8800th&\;y Q!EABRjdYuYumMhLSwIa:localhost:8800th&\:x Q !DuqHkpTfWCUblSrxQj:localhost:8800th&\:w Q !DqxFmsXPclgGqpSwdy:localhost:8800th&\yyuT3Rp O . Al K *Ѓ hGa%Y- hxEw#  j8p> ?-]@anon-20191002_181700-821:localhost:8800&-]@anon-20191002_181700-757:localhost:8800O-]@anon-20191002_181700-681:localhost:8800 u-]@anon-20191002_181700-610:localhost:8800_ -]@anon-20191002_181700-532:localhost:8800-]@anon-20191002_181700-438:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-297:localhost:8800Os-]@anon-20191002_181700-227:localhost:8800r-]@anon-20191002_181700-155:localhost:8800H[{uoic]WQKE?93-'! ysmga[ʆ xmubOW%LAŅ6+ F gtiф^SVHQ=.2 ʄ'  W 1 z ~o 6d كY N jC 38 - "  ]  v Tk `U|J?4U)w|Qqf[MPE:W/$́BxTmbWK@7u,s!po  R Q $ [ $1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAoV 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgo}1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwweW9JRFk5aGt3VmE9a3QKMDAyZnNpZ25hdHVyZSDHqwHHHtg_uF13OA88pF-q5kS_mwIyEV79B7ibema-lgoM>|vpjd^XRLF@:4.(" ztnhb\VPJD>ȆxndZP_F5<2܅({ 2vlhb$XND:U0K& τ  Y~ 2t j ` 'V L B 8 \. 2$  ̓  O| r h W^LTՂJ@(6,x"AւzxpZf)\RǁH>41*  Hxn'dZPYF<2(zy  {xs) 6b h ЃS GEU}#"R9{[9=anon-20191002_181700-746 5;anon-20191002_181700-65U =anon-20191002_181700-537!=anon-20191002_181700-408=anon-20191002_181700-303U9anon-20191002_181700-2h bo a<ts ')1570040430164localhost:8829< #example.com # example.com R {uoic]WQKE?93-'! ysmga[UOIC=71+%  } w q k e _ Y S M G A ; 5 / ) #     | v p j d ^ X RovV^4F.ڜ~fN6jU7kR*ۛ sZ@8%S/n=R8ڙ jNn6D -xd L 4 ٗ × l I k1 B  i Q 9 ! q nY [A B) * y ` G ȓ.  | ~c aJ E2 0  j R đ: " s [[ GC /+  { c ׏K 3   k gS R; <$  kS<č% uy]ZE?- }e׋L4kl`T@<*$ t׉\D,m}Te2N6 ՇnV?(tVx4`H0ΆiQn9[!6 qYAʄ)ya_I@1% iтQ9!y gqXY9A!)yaAI(*2 . D2  Y j8  ` x Rn\ \ B P 5  V & h1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E 0 1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48-1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A F3$26:localhost:42455 1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U d0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ 1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc:H1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM L1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc`1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8[[1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc. !1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEL'Q$1570043503343snlnn:localhost:8800 x'Q$1570042732244zDmQh:localhost:8800 -1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks N1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI 1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoyb1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE&O$157004180650ruqIl:localhost:8800 I1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE +1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8 1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U' 1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ &1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE V 0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs{1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA y@1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU^ 'Q$1570043712439XdJFc:localhost:8800  1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU;1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo$51e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI$1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoNt1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMl 1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE '1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4=2'Q$1570042655148eXOyA:localhost:8800  .H v n n  1 W H   =x2  V H % &md y y b = < ?,Q!fDISaqNBhlOwherxSt:localhost:8800 | | ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 =,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 l,Q!QnmLrBAxeItdHsaxWf:localhost:8800 h h,Q!SBEprlZiuliFNSfNmz:localhost:8800ooC,Q!EfJcWhdjNARbuHYrqU:localhost:8800]]t+Q !VAEDgDJVqmxXZyAlSW:localhost:8800J,Q!YQATbgbLImCDamiDHC:localhost:8800K,Q!cHtqiAyCHEAoBIbCmL:localhost:8800EE 6+Q !WhLedNwPGGGTtqeqam:localhost:8800 L4+Q !mfzIRinBAGGrZvQAuI:localhost:8800+Q !lEJUJZxqZPKZetemiR:localhost:8800 - -  +Q !XIqmzIFbkHGQPIpywk:localhost:8800SS,Q!TlJCaYlCkOOVzFDlLx:localhost:8800kk,Q!jIfvTrwedrWLubsnlM:localhost:8800o,Q!KIHYKMzkRDrJwiywwz:localhost:8800 / / /+Q !ZaOktTIVeRgBXxfubH:localhost:8800+Q !BrssELMbasSzTFpIXm:localhost:8800JJ,Q!PQZMTVTeCYqMZwkHvW:localhost:8800 ,Q!NPdjmIfsBVIIkvWBzD:localhost:8800aaP,Q!pduebXnTyxQWVxEICp:localhost:8800 . .*,Q!nvclDopiBLEOKBIheH:localhost:8800CC x,Q!tkajvIKHoOMWGsReBs:localhost:8800 ,Q!rQeYcODvQiLsOIbQrJ:localhost:8800// 4,Q!vyCFfUTJKYJSDadFhT:localhost:8800\\,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 0@,Q!aWvVRVaDflYyyGTOdD:localhost:8800 J/,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!NhWgOTYzEPRwAxRQvS:localhost:8800ss *Q!zhCsYcaweVFJLLNwBz:localhost:8800// ],Q!hnQOBexFYpvJntEChZ:localhost:8800s,Q!hFwigdYZkwYNSwelRH:localhost:8800 S S ,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800F,Q!DnUHoxreGexNmjSVpq:localhost:8800PP+Q !HAFNBarGuVZuWCgwWM:localhost:8800(( +Q !HmkcAMkMjWRhTDJMsy:localhost:8800\\. ,Q!SrMQpDMFREKRMELwbL:localhost:88000,Q!azRJNFPIRSFAskLILK:localhost:8800%,Q!LFBhoxJpmBqFrwEzGP:localhost:8800j,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a a ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 & &~,Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z Z,Q!bOSxzttDtclnrWnLov:localhost:8800cc1   & ( x Go47:hhhp?tableusersusersCREATE TABLE users( name TEXT, password_hash TEXT, creation_ts BIGINT, admin SMALLINT DEFAULT 0 NOT NULL, upgrade_ts BIGINT, is_guest SMALLINT DEFAULT 0 NOT NULL, appservice_id TEXT, consent_version TEXT, consent_server_notice_sent TEXT, user_type TEXT DEFAULT NULL, deactivated SMALLINT DEFAULT 0 NOT NULL, shadow_banned BOOLEAN, UNIQUE(name) )%%tabledestinationsdestinationsCREATE TABLE destinations( destination TEXT PRIMARY KEY, retry_last_ts BIGINT, retry_interval INTEGER , failure_ts BIGINT)N''[tableaccess_tokensaccess_tokensCREATE TABLE access_tokens( id BIGINT PRIMARY KEY, user_id TEXT NOT NULL, device_id TEXT, token TEXT NOT NULL, last_used BIGINT, valid_until_ms BIGINT, UNIQUE(token) )tableeventseventsCREATE TABLE events( stream_ordering INTEGER PRIMARY KEY, topological_ordering BIGINT NOT NULL, event_id TEXT NOT NULL, type TEXT NOT NULL, room_id TEXT NOT NULL, content TEXT, unrecognized_keys TEXT, processed BOOL NOT NULL, outlier BOOL NOT NULL, depth BIGINT DEFAULT 0 NOT NULL, origin_server_ts BIGINT, received_ts BIGINT, sender TEXT, contains_url BOOLEAN, UNIQUE (event_id) )7K%indexsqlite_autoindex_destinations_1destinationsI]7indexsqlite_autoindex_received_transactions_1received_transactions}77tablereceived_transactionsreceived_transactionsCREATE TABLE received_transactions( transaction_id TEXT, origin TEXT, ts BIGINT, response_code INTEGER, response_json bytea, has_been_referenced smallint default 0, UNIQUE (transaction_id, origin) )/Cindexsqlite_autoindex_profiles_1profilesQtableprofilesprofilesCREATE TABLE profiles( user_id TEXT NOT NULL, displayname TEXT, avatar_url TEXT, UNIQUE(user_id) )?Qtableuser_ipsuser_ipsCREATE TABLE user_ips ( user_id TEXT NOT NULL, access_token TEXT NOT NULL, device_id TEXT, ip TEXT NOT NULL, user_agent TEXT NOT NULL, last_seen BIGINT NOT NULL )9M'indexsqlite_autoindex_access_tokens_2access_tokens9M'indexsqlite_autoindex_access_tokens_1access_tokens)=indexsqlite_autoindex_users_1users qtablepresencepresence CREATE TABLE presence( user_id TEXT NOT NULL, state VARCHAR(20), status_msg TEXT, mtime BIGINT, UNIQUE (user_id) )/ Cindexsqlite_autoindex_presence_1presence E?-indexapplication_services_txns_idapplication_services_txns CREATE INDEX application_services_txns_id ON application_services_txns ( as_id )E ??tableapplication_services_txnsapplication_services_txns CREATE TABLE application_services_txns( as_id TEXT NOT NULL, txn_id INTEGER NOT NULL, event_ids TEXT NOT NULL, UNIQUE(as_id, txn_id) )Q e?indexsqlite_autoindex_application_services_txns_1application_services_txns &AAWtableapplication_services_stateapplication_services_stateCREATE TABLE application_services_state( as_id TEXT PRIMARY KEY, state VARCHAR(5), last_txn INTEGER )SgAindexsqlite_autoindex_application_services_state_1application_services_state (99ktableapplied_module_schemasapplied_module_schemasCREATE TABLE applied_module_schemas( module_name TEXT NOT NULL, file TEXT NOT NULL, UNIQUE(module_name, file) )K_9indexsqlite_autoindex_applied_module_schemas_1applied_module_schemas 77_tableapplied_schema_deltasapplied_schema_deltasCREATE TABLE applied_schema_deltas( version INTEGER NOT NULL, file TEXT NOT NULL, UNIQUE(version, file) )I]7indexsqlite_autoindex_applied_schema_deltas_1applied_schema_deltas4))#tableschema_versionschema_versionCREATE TABLE schema_version( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, version INTEGER NOT NULL, upgraded BOOL NOT NULL, CHECK (Lock='X') );O)indexsqlite_autoindex_schema_version_1schema_version Y[RQ . [ c J ObJ1_YYYYYYYY{$55tablecurrent_state_eventscurrent_state_events'CREATE TABLE current_state_events( event_id TEXT NOT NULL, room_id TEXT NOT NULL, type TEXT NOT NULL, state_key TEXT NOT NULL, membership TEXT, UNIQUE (event_id), UNIQUE (room_id, type, state_key) )z1]tableroomsrooms4CREATE TABLE rooms( room_id TEXT PRIMARY KEY NOT NULL, is_public BOOL, creator TEXT , room_version TEXT)f:5!indexpush_rules_user_namepush_rules=CREATE INDEX push_rules_user_name on push_rules (user_name)39G!indexsqlite_autoindex_push_rules_2push_rules<38G!indexsqlite_autoindex_push_rules_1push_rules;7!!wtablepush_rulespush_rules:CREATE TABLE push_rules ( id BIGINT PRIMARY KEY, user_name TEXT NOT NULL, rule_id TEXT NOT NULL, priority_class SMALLINT NOT NULL, priority INTEGER NOT NULL DEFAULT 0, conditions TEXT NOT NULL, actions TEXT NOT NULL, UNIQUE(user_name, rule_id) )36G!indexsqlite_autoindex_rejections_1rejections95!!utablerejectionsrejections8CREATE TABLE rejections( event_id TEXT NOT NULL, reason TEXT NOT NULL, last_check TEXT NOT NULL, UNIQUE (event_id) )I4]7indexsqlite_autoindex_server_signature_keys_1server_signature_keys7j377stableserver_signature_keysserver_signature_keys6CREATE TABLE server_signature_keys( server_name TEXT, key_id TEXT, from_server TEXT, ts_added_ms BIGINT, verify_key bytea, ts_valid_until_ms BIGINT, UNIQUE (server_name, key_id) ))2=indexsqlite_autoindex_rooms_1rooms5x*=-indexroom_memberships_user_idroom_memberships-CREATE INDEX room_memberships_user_id ON room_memberships (user_id)x)=-indexroom_memberships_room_idroom_memberships,CREATE INDEX room_memberships_room_id ON room_memberships (room_id)?(S-indexsqlite_autoindex_room_memberships_1room_memberships+'--_tableroom_membershipsroom_memberships*CREATE TABLE room_memberships( event_id TEXT NOT NULL, user_id TEXT NOT NULL, sender TEXT NOT NULL, room_id TEXT NOT NULL, membership TEXT NOT NULL, forgotten INTEGER DEFAULT 0, display_name TEXT, avatar_url TEXT, UNIQUE (event_id) )G&[5indexsqlite_autoindex_current_state_events_2current_state_events)G%[5indexsqlite_autoindex_current_state_events_1current_state_events(7#K%indexsqlite_autoindex_state_events_1state_events&@"%%Ctablestate_eventsstate_events%CREATE TABLE state_events( event_id TEXT NOT NULL, room_id TEXT NOT NULL, type TEXT NOT NULL, state_key TEXT NOT NULL, prev_state TEXT, UNIQUE (event_id) )^!1!yindexevent_json_room_idevent_json$CREATE INDEX event_json_room_id ON event_json(room_id)3 G!indexsqlite_autoindex_event_json_1event_json#I!!]tableevent_jsonevent_json"CREATE TABLE event_json( event_id TEXT NOT NULL, room_id TEXT NOT NULL, internal_metadata TEXT NOT NULL, json TEXT NOT NULL, format_version INTEGER, UNIQUE (event_id) )/Cindexevents_order_roomeventsCREATE INDEX events_order_room ON events ( room_id, topological_ordering, stream_ordering )+?indexsqlite_autoindex_events_1events ǖ7 Ƌ:V2H;(} ` X~. #   xH \ B N ^ Pd J  & G  |1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YNl1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo7 1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk: 1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I 'Q$1570043476325vnEPO:localhost:8800 J1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw\ 1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT431e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA G1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs F 1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQD&O$157004180650ruqIl:localhost:88001e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0hv'Q$1570042725233SjCnf:localhost:8800 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwW1'Q$1570042655148eXOyA:localhost:8800 } 1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No v0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_45 'Q$1570043646419zIOAX:localhost:8800 z K1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs )1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMW 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY J1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ Kc1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYZA1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA  1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1 &1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY{1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gV K1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQY1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA  1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMdG1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE>1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE ,1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo !1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIc1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA 1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs 1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ9-E | y 1  H E M P l @ Uq ] f  ! 9  *t$'Q!UyLoIXmzVFwycmBUeh:localhost:8800 )'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800 h'Q!NQgavrmiCPUVaVjssy:localhost:8800f 'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!EABRjdYuYumMhLSwIa:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!qInWQPtNQfBFoVzUtP:localhost:8800 q'Q!oXKJArsPmtgaYANBrg:localhost:8800 $&Q!wvnfKBSrUlfNmYoeil:localhost:8800z'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 lA'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 dG'Q!EieRtaCFZJJCIOkRPp:localhost:8800t'Q!HZqzpRgqekPOtxstVc:localhost:8800<'Q!GSxvxNevpCiwmFCHys:localhost:8800 r!'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!WFHIeSFQyuugGeBFxW:localhost:8800N~'Q!TlJCaYlCkOOVzFDlLx:localhost:8800g p'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 o'Q!rZWweGEChkxxtzyfDB:localhost:8800 &Q!kxTDuIasPNpXtiRsif:localhost:8800|i'Q!SUDzkfFBgpuCANOxRS:localhost:8800 z&Q!scyFsXcUIJiLIMwWMY:localhost:8800m 'Q!vOfeZvbtpuHfoqShFl:localhost:8800zc'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800='Q!bzPCFeFSMbCESvNbxl:localhost:8800/ i'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 @'Q!XNfwczePlyYFWLCaui:localhost:8800 'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800_ 'Q!JusxqeECtidaPlWqhp:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800^ 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:8800f'Q!aZwMKYDXJRlSKjQNWM:localhost:8800%\'Q!DnUHoxreGexNmjSVpq:localhost:8800M5'Q!eySSVuCclRpBDgwKIU:localhost:8800 F&Q!LaLcEGFLpjdlYlYKGC:localhost:8800Y ysmga[UOIC=71+% }wqke_YSMGA;5/)#  pKyW5ǗqlO?,ԕ]:u=mG$YB7% q ȒM * w Dh G &  xc HA  ~ Y 4 V o ܎M + t Ff 'D Ս"  [a $@{Xh4;kFŊzyVS4'rˈQ/q =iG%_c<.vڅT1ek82,& ~xrlf`ZTNHB<60*$  >X)yWؖ4skWC3ڔpF{"@rL)Ē}^yA9 ܑf A  l{ .Z A ' q ^V 2;  [ m6 8 ƍ_ = Z =x e Ԍ6  Qs Vދ:uaQ6) h‰H$q>]9z\v=U!!lچN/Wu/Y <!ƅfyGY,5vكZ:Xr2U9ق{U=7 [: $&; : u d p > B (L .  ^ x  gP 1 ^1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c J0e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4I 1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A21e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0a1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU @1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kL 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4'Q$1570043523355SbJjm:localhost:8800 <'Q$1570042712218KQzXb:localhost:8800 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIp1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ 1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0 0'1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI 1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA)C'Q$1570043748463euAqZ:localhost:8800 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ`1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk !m1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k&O$157004187089FLOwV:localhost:880011e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98g1e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEI(1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A}1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkI {1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$^1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQJ`1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg) ;1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g" m1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw`0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoX +1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0m1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQBQ? !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility^* |vpjd^XRLF@:4.(" .jVB$.dže~dM)7 #  -{ ߄g yS &? ҄+  5 Ӄm bY E 0 6ƃ0t`[K7#5́{SeN97"gzfQL<( B  L P x^p1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ6 'Q$1570043192266CXqej:localhost:8800 Q1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YQ1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90:581e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUj1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsh ,1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1EO 1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM0e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY)  vP$|J 'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800$'Q!pduebXnTyxQWVxEICp:localhost:8800|T'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800f*&'Q!TcaopYfMoJFEcjYRzJ:localhost:8800 'Q!bkwyieHZwSMJfuSKvV:localhost:8800U'Q!JZouHBRxCRbcxYJnbn:localhost:8800{ 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800h'Q!OXpGdKbowFUTChPdmF:localhost:8800 ' j8p> w-]@anon-20191002_181700-732:localhost:8800N-]@anon-20191002_181700-231:localhost:8800 -]@anon-20191002_181700-662:localhost:8800 -]@anon-20191002_181700-571:localhost:8800 e-]@anon-20191002_181700-505:localhost:8800S -]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-323:localhost:8800w*-]@anon-20191002_181700-269:localhost:8800/*-]@anon-20191002_181700-173:localhost:8800),]@anon-20191002_181700-113:localhost:8800l  H\3 H f= q(Q!QyLUggxrTnULUAOseq:localhost:8800'Q !zNCItZNbpkZKuufRhC:localhost:8800(Q!zFdNewlKnUiMBxnYrN:localhost:8800(Q!vyCFfUTJKYJSDadFhT:localhost:8800 (Q!sPWVGnipjiiWQpywNO:localhost:8800(Q!mOrKBPhetifKHDmElM:localhost:8800 (Q!lAGTcYIuMBXsVRGCOe:localhost:8800(Q!kkgEEVUJynguTqAoWD:localhost:8800(Q!beBXQofoOfxNBtzsut:localhost:8800 (Q!WVzjUePHrzCjfyTbmK:localhost:8800(Q!UyLoIXmzVFwycmBUeh:localhost:8800(Q!SfYtaUhCFosNfHfUVm:localhost:8800(Q!QyLUggxrTnULUAOseq:localhost:8800 (Q!NPdjmIfsBVIIkvWBzD:localhost:8800(Q!KmuRTfGFgJdgIDAgIW:localhost:8800 (Q!KeBlWUQiLYUoILKkTB:localhost:8800(Q!KcXNWNfbLcYsBKZHIp:localhost:8800 M{    &k@O 2 a "  < G%s l2T2kE&=^anon-20191002_181700-367{"presence":{"not_types":["m.presence"]}}%=anon-20191002_181700-366{}$=anon-20191002_181700-365{}#=anon-20191002_181700-364{}"=anon-20191002_181700-363{}/!=0anon-20191002_181700-353{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}/ =0anon-20191002_181700-352{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}};=Hanon-20191002_181700-351{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":1,"types":["a.made.up.filler.type"]}}};=Hanon-20191002_181700-350{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":1,"types":["a.made.up.filler.type"]}}}=anon-20191002_181700-349{}=anon-20191002_181700-348{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}=anon-20191002_181700-347{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}=anon-20191002_181700-346{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":[]}}}h="anon-20191002_181700-345{"room":{"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":2}}}/=0anon-20191002_181700-343{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}};=Hanon-20191002_181700-342{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"limit":1,"types":["a.made.up.filler.type"]}}}/=0anon-20191002_181700-341{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}}/=0anon-20191002_181700-339{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}}/=0anon-20191002_181700-338{"presence":{"types":[]},"room":{"ephemeral":{"types":[]},"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["a.madeup.test.state"]}}}A=Vanon-20191002_181700-337{"presence":{"types":["m.presence"]}}A=Vanon-20191002_181700-336{"presence":{"types":["m.presence"]}}A=Vanon-20191002_181700-335{"presence":{"types":["m.presence"]}}^=anon-20191002_181700-334{"account_data":{"types":[]},"presence":{"types":["m.presence"]}}==Nanon-20191002_181700-333{"room":{"timeline":{"limit":1}}}==Nanon-20191002_181700-332{"room":{"timeline":{"limit":1}}}= =Nanon-20191002_181700-331{"room":{"timeline":{"limit":1}}}? =Ranon-20191002_181700-330{"room":{"timeline":{"limit":100}}}" =anon-20191002_181700-329{"account_data":{"types":[]},"presence":{"types":[]},"room":{"state":{"types":[]},"timeline":{"limit":1,"types":["m.room.message"]}}}k =(anon-20191002_181700-328{"presence":{"types":[]},"room":{"state":{"types":[]},"timeline":{"limit":1}}}k =(anon-20191002_181700-327{"presence":{"types":[]},"room":{"state":{"types":[]},"timeline":{"limit":1}}}==Nanon-20191002_181700-326{"room":{"timeline":{"limit":2}}}o=0anon-20191002_181700-321{"room":{"state":{"types":[]},"timeline":{"limit":10,"types":["m.room.message"]}}}o=0anon-20191002_181700-320{"room":{"state":{"types":[]},"timeline":{"limit":10,"types":["m.room.message"]}}}>=Panon-20191002_181700-319{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-318{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-317{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-315{"room":{"timeline":{"limit":10}}}>=Panon-20191002_181700-314{"room":{"timeline":{"limit":10}}} |7|,@<^ . R'MWL,$}P'Q!bQDOrbAknnQZfUbhgS:localhost:88006'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+5'Q!JiUawCFQnodcpssOfK:localhost:8800 B$ h Z ++Llocalhost:41985ed25519:1localhost:41985mxui4PE/)F8ڵ o'pm Z++Llocalhost:44405ed25519:1localhost:44405m܈hh$ PWm~BJm Z++Llocalhost:37265ed25519:1localhost:37265mW1w:k~ : m9%3dm ^+'+Llocalhost:43723ed25519:key_2localhost:43723m7A\VR܄PYOktąQY7>mX^+'+Llocalhost:43723ed25519:key_1localhost:43723m jWX9[˫yë{rq6zTXvd&4mp`+'+Llocalhost:43723ed25519:key_0localhost:43723m $*+,36qYb u7or:Bv؋Z++Llocalhost:42455ed25519:1localhost:42455m mF'Uei3<פ&! NG\0 ڍHme])))Llocalhost:8800ed25519:a_OdAolocalhost:8800m(lN'wU/indexsqlite_autoindex_push_rules_enable_1push_rules_enableAXHU99+tablelocal_media_repositorylocal_media_repositoryYCREATE TABLE local_media_repository ( media_id TEXT, media_type TEXT, media_length INTEGER, created_ts BIGINT, upload_name TEXT, user_id TEXT, quarantined_by TEXT, url_cache TEXT, last_access_ts BIGINT, safe_from_quarantine BOOLEAN NOT NULL DEFAULT 0, UNIQUE (media_id) )E=//9tablepush_rules_enablepush_rules_enable@CREATE TABLE push_rules_enable ( id BIGINT PRIMARY KEY, user_name TEXT NOT NULL, rule_id TEXT NOT NULL, enabled SMALLINT, UNIQUE(user_name, rule_id) )  m>8 p ݃F S! %|ɂHR;1T0& / O / M N TeQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ!kjjUsMowsioSQRIJeg:localhost:8800 |SeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800-  JQQ$1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800TTeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800 TeQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800O `TeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800OTeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4!wBBQYEPjQGnoAzDpEu:localhost:8800!SeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800 TeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800$}|}'Q!beBXQofoOfxNBtzsut:localhost:8800''Q!TlJCaYlCkOOVzFDlLx:localhost:8800XX'Q!uGpSboYkgxVNOqNeUG:localhost:8800B 'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!JiUawCFQnodcpssOfK:localhost:8800YR )R_1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0m;1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0U 1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw51e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso)1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo41e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4Z  Za8 Z 0  )33$80:localhost:42455!13:localhost:42455)33$76:localhost:42455!12:localhost:42455) 33$73:localhost:42455!11:localhost:42455) 33$70:localhost:42455!10:localhost:42455( 31$67:localhost:42455!9:localhost:42455> ?Q$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:88008 3Q$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:880083Q$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800(31$12:localhost:42455!5:localhost:42455'11$2:localhost:42455!0:localhost:42455QeQ$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800QeQ$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800QeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800QeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829QeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829  v3 Q & v]Y+33$80:localhost:42455!13:localhost:42455+33$76:localhost:42455!12:localhost:42455+33$73:localhost:42455!11:localhost:42455 +33$70:localhost:42455!10:localhost:42455 *31$67:localhost:42455!9:localhost:42455 @?Q$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800 :3Q$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 :3Q$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800*31$12:localhost:42455!5:localhost:42455)11$2:localhost:42455!0:localhost:42455SeQ$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800SeQ$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800SeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800SeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829ReQ $0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829 $'lT<$>e3!13:localhost:424553!12:localhost:424553!11:localhost:42455 3!10:localhost:42455 1!9:localhost:42455 &Q!dBfASZrfiFeSKTjYJm:localhost:8800 &Q!LazKtcHZriKzCvvGwV:localhost:8800 &Q!lEJUJZxqZPKZetemiR:localhost:88001!5:localhost:424551!0:localhost:42455&Q!JnAKXOrlyisFUpgJPw:localhost:8800&Q!XRAZJeoZBhGeHKKjaG:localhost:8800&Q!hFwigdYZkwYNSwelRH:localhost:8800&Q!XiwGxQKwjgutEClKUy:localhost:8829%Q !NajQnqYmGyTjxhFYar:localhost:8829 w_G/ =n3$80:localhost:424553$76:localhost:424553$73:localhost:42455 3$70:localhost:42455 3$67:localhost:42455 ?$58_msg_c:localhost:42455 3$51:localhost:42455 3$45:localhost:424553$12:localhost:424551$2:localhost:424550e$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc0e$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E940e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd80e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro/e $0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfco jztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$  | v p jw]Y1;יaC`%4^ܘ5uM-(ؖa?]~/N5  ֔} ^ @ Q"  f ܓH * kn PP 12  q M ) l Fe +G ) m O 1 T 3u W 9 ݎ } _ A m# Z Dg I + ϋoQ3],vU4rvSX5+yۈ[=kCcE'݇ kMu/PsUօ7{{T] ?!eGp)K mOՂ1~ueWI9(}^? Px h teeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM!laUExtszUaoCpZoyEq:localhost:8800 IeeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800ƁeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800fŁeeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800 d]0 ' 2 M <'  j ] xh c B^kO 4   5P 1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI 1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkI1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY> 1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQc 1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMCG1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13QH1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA 1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIv1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8##1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM&O$157004181857fcmAB:localhost:8800? 1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc#1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k 3$69:localhost:42455 I 1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ y 1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U %'Q$1570042697199ROUNP:localhost:8800 1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0 1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM Y /1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0  3$22:localhost:42455 ) 1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sn1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA_'Q$1570043591414NuXxd:localhost:8800 'Q$1570043375299fbyXJ:localhost:8800 C1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwd\1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68f -1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI QF1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM 1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwP81e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0ur1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIx 1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 Y1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIY C1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc 1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc] 1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUF1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk S'Q$1570042654147iSsjl:localhost:8800 Y1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UG.,[ j W >R ? b  ~, B P x Z( $ \ ^f0*1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgX1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM ]1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw Y 1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0'Q$1570043391316OJaBO:localhost:8800 R 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis2 1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMD1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o 'Q$1570042699203fHFjU:localhost:8800 Q1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog'Q$1570043646419zIOAX:localhost:8800 81e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0h'1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok(1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A &O$157004183063NdEPw:localhost:8800M1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkR1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ect1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc_1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM 81e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-01e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgK 4 1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig3$22:localhost:42455 1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4R1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU3 1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 5 R'Q$1570042657151cITOZ:localhost:88001e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE y 1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc J1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs e1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsP_1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs e 1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 B1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8- 1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU +1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ]o1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkM1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M !1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE3 1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs^ 1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw5 c1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc &>E=c%}Q'Q!bQDOrbAknnQZfUbhgS:localhost:8800<'Q!TkluVzxeeCbMtbFWWS:localhost:8800 &Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+;'Q!JiUawCFQnodcpssOfK:localhost:8800%}Q'Q!bQDOrbAknnQZfUbhgS:localhost:8800:'Q!TkluVzxeeCbMtbFWWS:localhost:8800 &Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+9'Q!JiUawCFQnodcpssOfK:localhost:8800F^~xrlf`ZTNHB<60*$ |vpjd^e(*{N!tVGݖb2o0Jǔe42 N Ɠ r eE  ޑk > W d ې6  WP ! t G : m @ ?f9 H_/NTpCىi1<,b5L[.ކTq'Ez M߄ seF9lӂ?Pe$8 ]/  n n ` o~~ znLLe ysmga[UOIC=71+% }wqke_YSMGA;5/)#  i|EY7əuTv2eSh1C uQ0hv@J.uG#ҕ]x88j ޓG “# |` X@  ȑ_ > g ?} \ :  Cs XP #0  n L U* - g F i' ,eҌC!x~L[7܊mG"jC_>}[i9<tR/ gj8G%…b?mR{'\={Y\7=rR΂0pAN%- hG#0}wqke_YSMGA;5/)# 6"֜W AiI6c ח& Z  ˕D ry 0. Փc y .. בc  7M  7 hl !ʍVt @ns MΊy7$lو!V+ ܆@u*τ_"Iɂ~p3.hP!3  \ l2   K  x & j/ 4{ 6 IP G B h 1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM 1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM z1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs 1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck  1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjse.1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no41e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEz'Q$1570043193267ZyDyW:localhost:8800 &O$157004180448zlZXD:localhost:8800 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q"1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM%1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78'Q$1570043535366hhblx:localhost:8800 %M$15700426753WBESe:localhost:8829 } 1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo 3 ,C1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-Ml1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0sP1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI ,1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU O,;1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8j1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M g51e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg91e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU4 1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27EO c1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q@*1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc c1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4fc1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw !1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q }L1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYV `1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0: 1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8a 1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4<w1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU 3'Q$1570042635128KJCvL:localhost:8800 Z 1e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUv  (;x   a =]OuIItfanEtSFldECastnZGSRimage/pngm@anon-20191002_181700-693:localhost:8800m>e =!]DybAaZpILwgEOzaUcIYTBVUstext/plainm|🐔@anon-20191002_181700-686:localhost:8800m>f =!]fmVopMLTKYLkXaaGxvBXYFjctext/plainm'ascii@anon-20191002_181700-689:localhost:8800m> =]]lysZMZCYXnmEbKQByqnCYPHfimage/pngm@anon-20191002_181700-698:localhost:8800@anon-20191002_181700-697:localhost:8800m>~ C]M2019-10-02_BRGgNtEwftdNPMfvimage/pngme@anon-20191002_181700-695:localhost:8800https://localhost:43723/test.png C]O2019-10-02_aqhaEGPqafvXwwngtext/htmlGm@anon-20191002_181700-695:localhost:8800https://localhost:43723/test.html >Wa =]esDQYsESEKVKiaLxoRzGzdOoimage/pngm@anon-20191002_181700-692:localhost:8800m>Pu =!5]dwTcqLlLiLNEXhbvbWhfUwSStext/plainm1name;with;semicolons@anon-20191002_181700-689:localhost:8800m>q =!-]YjSlqOqjlzFiLdHmqwMzmeQdtext/plainm戚name with spaces@anon-20191002_181700-689:localhost:8800m>f =!]tmaPjQKoSEQYwKoAUSvRRjZDtext/plainmascii@anon-20191002_181700-688:localhost:8800m>[a =!]OtyUtaUSDlUJOuQSrGfOehBotext/plainm惓@anon-20191002_181700-687:localhost:8800m>` =![iuKQhJicCsIkiNVeywGedTigtext/plain#m%L@anon-20191002_181700-40:localhost:8800m S6p=lysZMZCYXnmEbKQByqnCYPHf C2019-10-02_BRGgNtEwftdNPMfv C2019-10-02_aqhaEGPqafvXwwng =OuIItfanEtSFldECastnZGSR =esDQYsESEKVKiaLxoRzGzdOo=dwTcqLlLiLNEXhbvbWhfUwSS=YjSlqOqjlzFiLdHmqwMzmeQd=fmVopMLTKYLkXaaGxvBXYFjc=tmaPjQKoSEQYwKoAUSvRRjZD=OtyUtaUSDlUJOuQSrGfOehBo=DybAaZpILwgEOzaUcIYTBVUs= iuKQhJicCsIkiNVeywGedTig g5d, 3 =lysZMZCYXnmEbKQByqnCYPHfimage/pngscale w0 =lysZMZCYXnmEbKQByqnCYPHf``image/pngcrop 0 =lysZMZCYXnmEbKQByqnCYPHf image/pngcrop6 C2019-10-02_BRGgNtEwftdNPMfvimage/pngscale w3C2019-10-02_BRGgNtEwftdNPMfv``image/pngcrop 3C2019-10-02_BRGgNtEwftdNPMfv image/pngcrop3=OuIItfanEtSFldECastnZGSRimage/pngscale w0=OuIItfanEtSFldECastnZGSR``image/pngcrop 0=OuIItfanEtSFldECastnZGSR image/pngcrop3=esDQYsESEKVKiaLxoRzGzdOoimage/pngscale w0=esDQYsESEKVKiaLxoRzGzdOo``image/pngcrop 0=esDQYsESEKVKiaLxoRzGzdOo image/pngcrop oS(~D ,=lysZMZCYXnmEbKQByqnCYPHfimage/png *=lysZMZCYXnmEbKQByqnCYPHf``image/png *=lysZMZCYXnmEbKQByqnCYPHf image/png /C2019-10-02_BRGgNtEwftdNPMfvimage/png -C2019-10-02_BRGgNtEwftdNPMfv``image/png-C2019-10-02_BRGgNtEwftdNPMfv image/png,=OuIItfanEtSFldECastnZGSRimage/png*=OuIItfanEtSFldECastnZGSR``image/png*=OuIItfanEtSFldECastnZGSR image/png,=esDQYsESEKVKiaLxoRzGzdOoimage/png*=esDQYsESEKVKiaLxoRzGzdOo``image/png)= esDQYsESEKVKiaLxoRzGzdOo image/png 3pS=lysZMZCYXnmEbKQByqnCYPHf =lysZMZCYXnmEbKQByqnCYPHf =lysZMZCYXnmEbKQByqnCYPHf C2019-10-02_BRGgNtEwftdNPMfv C2019-10-02_BRGgNtEwftdNPMfvC2019-10-02_BRGgNtEwftdNPMfv=OuIItfanEtSFldECastnZGSR=OuIItfanEtSFldECastnZGSR=OuIItfanEtSFldECastnZGSR=esDQYsESEKVKiaLxoRzGzdOo=esDQYsESEKVKiaLxoRzGzdOo= esDQYsESEKVKiaLxoRzGzdOo     @d    | wlcUG n 1 1IFi--?tableserver_keys_jsoK<^!!CtableredactionsredactionscCREATE TABLE redactions ( event_id TEXT NOT NULL, redacts TEXT NOT NULL, have_censored BOOL NOT NULL DEFAULT false, received_ts BIGINT, UNIQUE (event_id) )Kn_9indexsqlite_autoindex_e2e_one_time_keys_json_1e2e_one_time_keys_jsons?YaO[indexlocal_media_repository_thumbnails_media_idlocal_media_repository_thumbnails]CREATE INDEX local_media_repository_thumbnails_media_id ON local_media_repository_thumbnails (media_id)aXuOindexsqlite_autoindex_local_media_repository_thumbnails_1local_media_repository_thumbnails\Pm99;tablee2e_one_time_keys_jsone2e_one_time_keys_jsonrCREATE TABLE e2e_one_time_keys_json ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, algorithm TEXT NOT NULL, key_id TEXT NOT NULL, ts_added_ms BIGINT NOT NULL, key_json TEXT NOT NULL, CONSTRAINT e2e_one_time_keys_json_uniqueness UNIQUE (user_id, device_id, algorithm, key_id) )Gl[5indexsqlite_autoindex_e2e_device_keys_json_1e2e_device_keys_jsonqk55/tablee2e_device_keys_jsone2e_device_keys_jsonpCREATE TABLE e2e_device_keys_json ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, ts_added_ms BIGINT NOT NULL, key_json TEXT NOT NULL, CONSTRAINT e2e_device_keys_json_uniqueness UNIQUE (user_id, device_id) )?jS-indexsqlite_autoindex_server_keys_json_1server_keys_jsonoFi--?tableserver_keys_jsonserver_keys_jsonnCREATE TABLE "server_keys_json" ( server_name TEXT NOT NULL, key_id TEXT NOT NULL, from_server TEXT NOT NULL, ts_added_ms BIGINT NOT NULL, ts_valid_until_ms BIGINT NOT NULL, key_json bytea NOT NULL, CONSTRAINT server_keys_json_uniqueness UNIQUE (server_name, key_id, from_server) )h?9!indexevent_reference_hashes_idevent_reference_hashesmCREATE INDEX event_reference_hashes_id ON event_reference_hashes(event_id)Kg_9indexsqlite_autoindex_event_reference_hashes_1event_reference_hashesl(f99ktableevent_reference_hashesevent_reference_hasheskCREATE TABLE event_reference_hashes ( event_id TEXT, algorithm TEXT, hash bytea, UNIQUE (event_id, algorithm) )~e=1indexroom_alias_servers_aliasroom_alias_serversjCREATE INDEX room_alias_servers_alias ON room_alias_servers(room_alias)d11/tableroom_alias_serversroom_alias_serversiCREATE TABLE room_alias_servers( room_alias TEXT NOT NULL, server TEXT NOT NULL )\c+%windexroom_aliases_idroom_aliaseshCREATE INDEX room_aliases_id ON room_aliases(room_id)7bK%indexsqlite_autoindex_room_aliases_1room_aliasesga%%ktableroom_aliasesroom_aliasesfCREATE TABLE room_aliases( room_alias TEXT NOT NULL, room_id TEXT NOT NULL, creator TEXT, UNIQUE (room_alias) )_`1!{indexredactions_redactsredactionseCREATE INDEX redactions_redacts ON redactions (redacts)3_G!indexsqlite_autoindex_redactions_1redactionsdY]mGindexsqlite_autoindex_remote_media_cache_thumbnails_1remote_media_cache_thumbnailsay\GGqtableremote_media_cache_thumbnailsremote_media_cache_thumbnails`CREATE TABLE remote_media_cache_thumbnails ( media_origin TEXT, media_id TEXT, thumbnail_width INTEGER, thumbnail_height INTEGER, thumbnail_method TEXT, thumbnail_type TEXT, thumbnail_length INTEGER, filesystem_id TEXT, UNIQUE ( media_origin, media_id, thumbnail_width, thumbnail_height, thumbnail_type ) )C[W1indexsqlite_autoindex_remote_media_cache_1remote_media_cache_"Z11otableremote_media_cacheremote_media_cache^CREATE TABLE remote_media_cache ( media_origin TEXT, media_id TEXT, media_type TEXT, created_ts BIGINT, upload_name TEXT, media_length INTEGER, filesystem_id TEXT, last_access_ts BIGINT, quarantined_by TEXT, UNIQUE (media_origin, media_id) )  ]9 J 7  w  cee $VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8UmAcee $QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ymcee $GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0m)c ee $7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgm~GII $63_redaction1:localhost:42455$64_redaction2:localhost:42455mFKMM $15700426765pydev:localhost:8829$15700426764DoRhm:localhost:8829mO .;GII $64_redaction2:localhost:42455$63_redaction1:localhost:42455m< I?AA $lolredact:localhost:42455$lolredact:localhost:42455mDc ee $MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Em c ee $CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgm䊱 Pc ee $y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgmc ee $JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmkm88cee $y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRsmMOO $157004274411xArrT:localhost:8829$157004274310jCQYA:localhost:8829mDWcee $Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58m)Wcee $iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4km/  6 Y 6 _ n= |."I$64_redaction2:localhost:42455"I$63_redaction1:localhost:42455A$lolredact:localhost:424550e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 0e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE 0e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U 0e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A 0e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 0e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts0e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow%O$157004274411xArrT:localhost:8829$M$15700426765pydev:localhost:88290e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ0e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw580e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc/e $QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc  6 6 Y_=. n |"I$63_redaction1:localhost:42455"I$64_redaction2:localhost:42455A$lolredact:localhost:424550e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 0e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 0e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 0e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 0e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 0e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr00e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs%O$157004274310jCQYA:localhost:8829$M$15700426764DoRhm:localhost:88290e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw580e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U0e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k/e $8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y GFF# QZgG'{cDN j6 p D   h <  ` 4  2 V*zm.O## w L ^&Q#astest-__ANON__-31:localhost:8800Q+[#test-20191002_181700-47:localhost:8800PC#__ANON__-26:localhost:8800O+[#test-20191002_181700-46:localhost:8800N+[#test-20191002_181700-45:localhost:8800M+[#test-20191002_181700-44:localhost:8800LC#__ANON__-25:localhost:8800K+[#test-20191002_181700-43:localhost:8800JC#__ANON__-24:localhost:8800IC#__ANON__-23:localhost:8800HC#__ANON__-22:localhost:8800GC#__ANON__-21:localhost:8800FC#__ANON__-20:localhost:8800EC#__ANON__-19:localhost:8800DC#__ANON__-18:localhost:8800CC#__ANON__-17:localhost:8800BC#__ANON__-16:localhost:8800AC#__ANON__-15:localhost:8800@.a#publicroomalias_with_topic:localhost:8800?3k#publicroomalias_with_name_topic:localhost:8800>+[#publicroomalias_no_name:localhost:8800=C#__ANON__-14:localhost:8800<C#__ANON__-13:localhost:8800;+[#test-20191002_181700-42:localhost:8800:+[#test-20191002_181700-41:localhost:88009+[#test-20191002_181700-40:localhost:88008C#__ANON__-12:localhost:88007+[#test-20191002_181700-39:localhost:88006+[#test-20191002_181700-38:localhost:88005+[#test-20191002_181700-37:localhost:88004+[#test-20191002_181700-36:localhost:88003+[#test-20191002_181700-35:localhost:88002+[#test-20191002_181700-34:localhost:88001+[#test-20191002_181700-33:localhost:88000+[#test-20191002_181700-32:localhost:8800/+[#test-20191002_181700-31:localhost:8800.+[#test-20191002_181700-30:localhost:8800-+[#test-20191002_181700-29:localhost:8800,!G#worldreadable:localhost:8800+$M#nonworldreadable:localhost:8800* E#listingtest0:localhost:8800) E#listingtest2:localhost:8800( E#listingtest1:localhost:8800'+[#test-20191002_181700-28:localhost:8800&+[#test-20191002_181700-27:localhost:8800%+[#test-20191002_181700-26:localhost:8800$+[#test-20191002_181700-25:localhost:8800#+[#test-20191002_181700-24:localhost:8800"+[#test-20191002_181700-23:localhost:8800!+[#test-20191002_181700-22:localhost:8800 +[#test-20191002_181700-21:localhost:8800+[#test-20191002_181700-20:localhost:8800+[#test-20191002_181700-19:localhost:8800+[#test-20191002_181700-18:localhost:8800+[#test-20191002_181700-17:localhost:8800+[#test-20191002_181700-16:localhost:8800+[#test-20191002_181700-15:localhost:8800+[#test-20191002_181700-14:localhost:8800+[#test-20191002_181700-13:localhost:8800+[#test-20191002_181700-12:localhost:8800+[#test-20191002_181700-11:localhost:8800+[#test-20191002_181700-10:localhost:8800*Y#test-20191002_181700-9:localhost:8800*Y#test-20191002_181700-8:localhost:8800*Y#test-20191002_181700-7:localhost:8800*Y#test-20191002_181700-6:localhost:8800*Y#test-20191002_181700-5:localhost:8800*Y#test-20191002_181700-4:localhost:8800A#__ANON__-9:localhost:8800 *Y#test-20191002_181700-3:localhost:8800 A#__ANON__-8:localhost:8800 A#__ANON__-5:localhost:8800 3#☕:localhost:8800 *Y#test-20191002_181700-2:localhost:8800*Y#test-20191002_181700-1:localhost:8800A#__ANON__-4:localhost:8800A#__ANON__-3:localhost:8800A#__ANON__-2:localhost:8800A#__ANON__-1:localhost:8800A#__ANON__-0:localhost:8800 G #30room-create:localhost:8800 QT & ~  c h o{ 2 m  y ! ^ H> YA j <0eWF+ R C 7 M - t&Q!TkluVzxeeCbMtbFWWS:localhost:8800Q&Q!sqkBzbHHJOTNWwynqV:localhost:8800P&Q!OCEHAjcOXWNyWIESIS:localhost:8800O&Q!qjijQBfMwsCPTVgKPm:localhost:8800N&Q!kjjUsMowsioSQRIJeg:localhost:8800M&Q!UTAORDrNxIbSlGByAp:localhost:8800L&Q!MXhwoqNXvexeDDSOZT:localhost:8800K&Q!wBkUBAjOznOyxrLchl:localhost:8800J&Q!vBvlJEXUSQKUYmsKcO:localhost:8800I&Q!mogJVPxghalmKbblUq:localhost:8800H&Q!iKezIvJyjkNqKayFju:localhost:8800G&Q!kOmCTyiizHqfCJdhlR:localhost:8800F&Q!DqxFmsXPclgGqpSwdy:localhost:8800E&Q!yAzXcNLHMuqFOcOexj:localhost:8800D&Q!HbYxdEuVIeLKHwqJEh:localhost:8800C&Q!JPTwFTSDaBXwUTgitj:localhost:8800B&Q!yfizglmCXdcqCgDrTr:localhost:8800A&Q!ePtMOPPOgOcBIMNZpn:localhost:8800@&Q!NPdjmIfsBVIIkvWBzD:localhost:8800?&Q!vyCFfUTJKYJSDadFhT:localhost:8800>&Q!beBXQofoOfxNBtzsut:localhost:8800=&Q!vpuivIQDEhyuhOLWpg:localhost:8800<&Q!vpuivIQDEhyuhOLWpg:localhost:8800;&Q!krhefVncoErkCtnvsy:localhost:8800:&Q!mMsxpaIlcykPuOnDyl:localhost:88009&Q!VOhMAiLfKyTOZbmKGw:localhost:88008&Q!FAYqpziHeVZugCGaij:localhost:88007&Q!wsvXTJXouVkEZcCFsD:localhost:88006&Q!DoiZErAdypBUMZKaeJ:localhost:88005&Q!SvKwEALYoNreUvqAlp:localhost:88004&Q!fOJLpnbtgKNxxVDquX:localhost:88003&Q!KXMUzALpMMMKqoQXUS:localhost:88002&Q!NfaPEGKjnUDUTavzol:localhost:88001&Q!fcdNYFWFyxmdpKAknc:localhost:88000&Q!MWCLSWWGdWcSivNVLI:localhost:8800/&Q!bnTuVBaAJTPbcYZtRl:localhost:8800.&Q!BGbJEmJRVJGlZFQbZe:localhost:8800-&Q!tDsPLsKOLPePtEWRwn:localhost:8800,&Q!zFdNewlKnUiMBxnYrN:localhost:8800+&Q!KeBlWUQiLYUoILKkTB:localhost:8800*&Q!WVzjUePHrzCjfyTbmK:localhost:8800)&Q!lAGTcYIuMBXsVRGCOe:localhost:8800(&Q!UyLoIXmzVFwycmBUeh:localhost:8800'&Q!qxqNYKdtgvOQdhmgsj:localhost:8800&&Q!aBCvSXjtZUEPlPGHvY:localhost:8800%&Q!GiSxJsKZhQVHBkrVPn:localhost:8800$&Q!AjjrNwXmPTCruHxaJq:localhost:8800#&Q!BkzROHxDAfKIzYpmPV:localhost:8800"&Q!WWZVpyLeZfyfpWidLx:localhost:8800!&Q!XIqmzIFbkHGQPIpywk:localhost:8800 &Q!cHtqiAyCHEAoBIbCmL:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800&Q!CQKLQUpSYakhxVDltC:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800&Q!SyIWYOmcGiASNkPCTB:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800&Q!edbUkYJIZBNOiTuLJs:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:8800&Q!XgobMgBjNcDRJnRXLD:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800 &Q!xhbvqJDfxMSsZPqvld:localhost:8800 &Q!AWfbViAZparIjmDaVT:localhost:8800 &Q!OSHhtkGUjpUCkXwIhj:localhost:8800 &Q!AWfbViAZparIjmDaVT:localhost:8800 &Q!wnriPzXkIMmdTNoJKU:localhost:8800&Q!OaCEdDAiatpwYcagUb:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!NZHpBquHDfJAjiawGk:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800 ' &I QZgG'{cDN j6 p D   h <  ` 4  2 V*zm.O## w L ^&Q#astest-__ANON__-31:localhost:8800Q+[#test-20191002_181700-47:localhost:8800PC#__ANON__-26:localhost:8800O+[#test-20191002_181700-46:localhost:8800N+[#test-20191002_181700-45:localhost:8800M+[#test-20191002_181700-44:localhost:8800LC#__ANON__-25:localhost:8800K+[#test-20191002_181700-43:localhost:8800JC#__ANON__-24:localhost:8800IC#__ANON__-23:localhost:8800HC#__ANON__-22:localhost:8800GC#__ANON__-21:localhost:8800FC#__ANON__-20:localhost:8800EC#__ANON__-19:localhost:8800DC#__ANON__-18:localhost:8800CC#__ANON__-17:localhost:8800BC#__ANON__-16:localhost:8800AC#__ANON__-15:localhost:8800@.a#publicroomalias_with_topic:localhost:8800?3k#publicroomalias_with_name_topic:localhost:8800>+[#publicroomalias_no_name:localhost:8800=C#__ANON__-14:localhost:8800<C#__ANON__-13:localhost:8800;+[#test-20191002_181700-42:localhost:8800:+[#test-20191002_181700-41:localhost:88009+[#test-20191002_181700-40:localhost:88008C#__ANON__-12:localhost:88007+[#test-20191002_181700-39:localhost:88006+[#test-20191002_181700-38:localhost:88005+[#test-20191002_181700-37:localhost:88004+[#test-20191002_181700-36:localhost:88003+[#test-20191002_181700-35:localhost:88002+[#test-20191002_181700-34:localhost:88001+[#test-20191002_181700-33:localhost:88000+[#test-20191002_181700-32:localhost:8800/+[#test-20191002_181700-31:localhost:8800.+[#test-20191002_181700-30:localhost:8800-+[#test-20191002_181700-29:localhost:8800,!G#worldreadable:localhost:8800+$M#nonworldreadable:localhost:8800* E#listingtest0:localhost:8800) E#listingtest2:localhost:8800( E#listingtest1:localhost:8800'+[#test-20191002_181700-28:localhost:8800&+[#test-20191002_181700-27:localhost:8800%+[#test-20191002_181700-26:localhost:8800$+[#test-20191002_181700-25:localhost:8800#+[#test-20191002_181700-24:localhost:8800"+[#test-20191002_181700-23:localhost:8800!+[#test-20191002_181700-22:localhost:8800 +[#test-20191002_181700-21:localhost:8800+[#test-20191002_181700-20:localhost:8800+[#test-20191002_181700-19:localhost:8800+[#test-20191002_181700-18:localhost:8800+[#test-20191002_181700-17:localhost:8800+[#test-20191002_181700-16:localhost:8800+[#test-20191002_181700-15:localhost:8800+[#test-20191002_181700-14:localhost:8800+[#test-20191002_181700-13:localhost:8800+[#test-20191002_181700-12:localhost:8800+[#test-20191002_181700-11:localhost:8800+[#test-20191002_181700-10:localhost:8800*Y#test-20191002_181700-9:localhost:8800*Y#test-20191002_181700-8:localhost:8800*Y#test-20191002_181700-7:localhost:8800*Y#test-20191002_181700-6:localhost:8800*Y#test-20191002_181700-5:localhost:8800*Y#test-20191002_181700-4:localhost:8800A#__ANON__-9:localhost:8800 *Y#test-20191002_181700-3:localhost:8800 A#__ANON__-8:localhost:8800 A#__ANON__-5:localhost:8800 3#☕:localhost:8800 *Y#test-20191002_181700-2:localhost:8800*Y#test-20191002_181700-1:localhost:8800A#__ANON__-4:localhost:8800A#__ANON__-3:localhost:8800A#__ANON__-2:localhost:8800A#__ANON__-1:localhost:8800A#__ANON__-0:localhost:8800 G #30room-create:localhost:8800U~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" oUCޜk?Hg 4֛Tb"+m;ș \r-5oM ) | P C$ x L t YH + p ͓> gZ 7,  ؑT ( | JP $$x ˏL t VH "pٍDrl:@؋b3}RX,T(W|&P$χxLl ?tH؆phD,lЄ@lh?<҂d8j G`4؁[.E;2!O^v Q8  m U tp  G9   03 S`  $  T  aIF7e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czssha256M8e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcsha256 b8e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgsha256$8e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVAsha256 8e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8sha2568e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIsha256D 8e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQsha256 .Q$1570043477327AgpMM:localhost:8800sha256 N8e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUsha256 b8e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0sha256 8e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUsha256D8e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIsha2568e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMsha256ZT 8e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0sha256+ s8e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYsha256 7e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxosha256\8e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdEsha256 8e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwsha256d.Q$1570042728238dtqIB:localhost:8800sha256 .Q$1570042629121nZoNG:localhost:8800sha256 b' .Q$1570043585409JoQZw:localhost:8800sha256 = .Q$1570042664163IAHXd:localhost:8800sha256 -O$157004177030bmvvg:localhost:8800sha2568e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwsha2568e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEsha256 ,8e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTEsha2567e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcsha256r 7e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4sha256w 9 #8e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Qsha256w8e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4sha256 '#8e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8sha256 8e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYsha256" 8e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIsha256 #8e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEsha2568e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0sha256M8e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfosha2568e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8sha256 8e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0sha25648e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0sha256E8e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8sha256OE8e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwgsha2562 Z8e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgsha256 8e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwsha256 8e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQsha256 8e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcsha256bE8e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wsha2568e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0sha2568e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08sha2568e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8sha256 8e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMsha2568e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Qsha256 8e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8sha256 8e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4sha256a8e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMsha2568e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELosha256 h8e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Asha256 8e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUsha256 Yp8e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIsha256 m8e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWosha256V2H<(} ` X~. "   xH \ B N ^ Pd J  & G  }1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YNn1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo71e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk: 1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I 'Q$1570043476325vnEPO:localhost:8800 L1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw\ 1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT451e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA J1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs F 1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQD&O$157004180650ruqIl:localhost:88001e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0h{'Q$1570042725233SjCnf:localhost:8800 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwW4'Q$1570042655148eXOyA:localhost:8800 } 1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No x1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 'Q$1570043646419zIOAX:localhost:8800 x M1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs +1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY J1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ Ke1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYTD1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1 &1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY{1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gV M1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQZ1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA  1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMdI1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEA1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE .1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo "1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIf1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA 1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs 1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ9 : t ;I8 ++localhost:41985ed25519:1localhost:41985mxm {"old_verify_keys":{},"server_name":"localhost:41985","signatures":{"localhost:41985":{"ed25519:1":"rHXty21coGSEOxs1aITz7g6zUtGThhyBU/4pQDscyBTD/U6QBy9QM8/E8LFyTVDjFdl+w9EkZ7I622qnqmhXAA"}},"tls_fingerprints":[{"sha256":"Q0e0BkEHTFJ/AnClqOWJmcuJnNuB81JFb2HhvSZbQ7s"}],"valid_until_ts":1570129912000,"verify_keys":{"ed25519:1":{"key":"0XVpNFCrRS8p+RpGyxiHuK+JOO7J5LTI2rUgb8wncLw"}}}8++localhost:44405ed25519:1localhost:44405mm {"old_verify_keys":{},"server_name":"localhost:44405","signatures":{"localhost:44405":{"ed25519:1":"dWcskinL0RIu3j/yMurAECXPVGMzL6uTnYwxpQ0+IlHlRUms7lE1vduRD7rvlPKLS3SC2KHXjXMr56YeIqStCw"}},"tls_fingerprints":[{"sha256":"H9qsaZXJ4ROkn+ry5NJtg2uP72+eAWXw3KfSWz21zO0"}],"valid_until_ts":1570129911000,"verify_keys":{"ed25519:1":{"key":"3IgPaGjjJLf7mcYgULX56YRXHOwAbYV+G/ofQqqySuo"}}}8++localhost:37265ed25519:1localhost:37265mWm {"old_verify_keys":{},"server_name":"localhost:37265","signatures":{"localhost:37265":{"ed25519:1":"elpetIbv8dNHlj76cSjmS2UwnYSotmf5nXoStKh3LlJWcNR3eLb0mYpFza85sw48xNJMzPIoSGPYufsQN68zAw"}},"tls_fingerprints":[{"sha256":"MdDqmEu2fQI2lQTfTdFxPMoaKpPeYAR9nyvYXF+icZ8"}],"valid_until_ts":1570129909000,"verify_keys":{"ed25519:1":{"key":"MZmNd/E6lWv8fg06Dg2CbY65ORe59RElpZ+wopIzZIs"}}}v+'+zlocalhost:43723ed25519:key_2localhost:43723m7mX{"old_verify_keys":{},"server_name":"localhost:43723","signatures":{"localhost:43723":{"ed25519:key_2":"zOOHCGhxR73Srfo2De3/Cu8PW615RDgF4EC3w7e2Wky9loQbqpwOvrZDZLCPrRpkuwYRQRtiXZGycDg/8Iw7Bw"}},"valid_until_ts":1569956935000,"verify_keys":{"ed25519:key_2":{"key":"okFcVqBS3IRQWY7jT7i/lGt0Gn/YwsSFkp9RWZI3iD4"}}}v+'+zlocalhost:43723ed25519:key_1localhost:43723m mp{"old_verify_keys":{},"server_name":"localhost:43723","signatures":{"localhost:43723":{"ed25519:key_1":"pho2c/vuhPYYnhjFRa2bEtdsooBlXyXDiHxVLsW8pLxQK4t1AKRH4tJCqXlhJmFQYMJOvjIA60m5byhpbzPjAg"}},"valid_until_ts":1569956934000,"verify_keys":{"ed25519:key_1":{"key":"tqhq9ldYOVvLq3nDq+x7nXKArHH8NnpUWHZk1CY0mu4"}}}{+'+localhost:43723ed25519:key_0localhost:43723m Bv؋{"old_verify_keys":{},"server_name":"localhost:43723","signatures":{"localhost:43723":{"ed25519:key_0":"xPqfJUNKXzNMpjXlB+Y5xwfuayLPq3WSIOqsf0JHVv1nb1dkH5/G709RCAuwI2Bpb2IgZUtuOSFwqCxgIfrTAg"}},"valid_until_ts":1569956933713.81,"verify_keys":{"ed25519:key_0":{"key":"hyQqGv8r+6AstzM2cf1ZEmINFg91jTdvm++JctvkOoM"}}}8++localhost:42455ed25519:1localhost:42455m mme{"old_verify_keys":{},"server_name":"localhost:42455","signatures":{"localhost:42455":{"ed25519:1":"adkVhzOTFnCODgDOCPHihewnpWFvM6JHuvW2k4ZCSQxvlVrN3/4TCS2tOQN0vUQZ/I8BtKHKFKrNDgyCUic6Cw"}},"tls_fingerprints":[{"sha256":"K4Nhc3Bvz3piaGcJgEw+7+GZCG1CfF+LE4iAM67YY6c"}],"valid_until_ts":1570129733000,"verify_keys":{"ed25519:1":{"key":"Ru0fGSdVZWkzPB3XpPYmIQ2oThipRxlc2TC/CdqNEUg"}}}C)))localhost:8800ed25519:a_OdAolocalhost:8800mmזw{"old_verify_keys":{},"server_name":"localhost:8800","signatures":{"localhost:8800":{"ed25519:a_OdAo":"66nr1zCfVJcwBCGX3gH4dk8DTUjnH9y2PKpGju45U54Oxif08w7DBmLWgqOPqDu6z6RIc3ZRL+9YYV4SEPE1Ag"}},"tls_fingerprints":[{"sha256":"JZ6LdKuMUVw66lZan47UtygkfE+z7rzeQcjKQjGq87o"}],"valid_until_ts":1570126665335,"verify_keys":{"ed25519:a_OdAo":{"key":"KPm0/ZIc4uet6YjebE4C3Q8fn+XnGoyxFyd3PHTQTLY"}}}C)))localhost:8829ed25519:a_UxIGlocalhost:8829mLmC{"old_verify_keys":{},"server_name":"localhost:8829","signatures":{"localhost:8829":{"ed25519:a_UxIG":"HelZOBcYwxLUN73WGrWVrolsrQsnUCJIv5zZ/LpwjhYNw1UZHNrIUp97vbrN9VJ8cQdlEj3VWULaDrqU9XpmAg"}},"tls_fingerprints":[{"sha256":"/GoqocKx0mi1yh1hFdrbA11WU5Z1CpWDLmvNtbRuMfw"}],"valid_until_ts":1570126830147,"verify_keys":{"ed25519:a_UxIG":{"key":"nRXKaR7XL4fGnMIa8ZDWmshBD0h+o32Y98mhLUmVSqY"}}} QQq? -++localhost:41985ed25519:1localhost:41985 -++localhost:44405ed25519:1localhost:44405-++localhost:37265ed25519:1localhost:372651+'+localhost:43723ed25519:key_2localhost:437231+'+localhost:43723ed25519:key_1localhost:437231+'+localhost:43723ed25519:key_0localhost:43723-++localhost:42455ed25519:1localhost:424550)))localhost:8800ed25519:a_OdAolocalhost:8800/))) localhost:8829ed25519:a_UxIGlocalhost:8829  sB  p }.]!m@anon-20191002_181700-673:localhost:8800VPLLNWDDCEm9b{"device_id":"VPLLNWDDCE","device_keys":{"updated":"keys"},"user_id":"@anon-20191002_181700-673:localhost:8800"} ]!M@anon-20191002_181700-674:localhost:8800GKOEAKYNVTm7{"device_id":"GKOEAKYNVT","device_keys":{},"user_id":"@anon-20191002_181700-674:localhost:8800"}.]!m@anon-20191002_181700-671:localhost:8800KUQBONAEMFm{"device_id":"KUQBONAEMF","device_keys":{"updated":"keys"},"user_id":"@anon-20191002_181700-671:localhost:8800"}]!M@anon-20191002_181700-557:localhost:8800KTBNHNNWDAm2({"device_id":"KTBNHNNWDA","device_keys":{},"user_id":"@anon-20191002_181700-557:localhost:8800"}]!M@anon-20191002_181700-555:localhost:8800MAWHFJMVIZm{"device_id":"MAWHFJMVIZ","device_keys":{},"user_id":"@anon-20191002_181700-555:localhost:8800"} ]!+@anon-20191002_181700-549:localhost:8800BYOSFCFMSOm۬{"device_id":"BYOSFCFMSO","user_id":"@anon-20191002_181700-549:localhost:8800"} ]!+@anon-20191002_181700-532:localhost:8800FXXARIFXSSmڐ{"device_id":"FXXARIFXSS","user_id":"@anon-20191002_181700-532:localhost:8800"}]!M@anon-20191002_181700-527:localhost:8800BACKHRSCZNmr2{"device_id":"BACKHRSCZN","device_keys":{},"user_id":"@anon-20191002_181700-527:localhost:8800"} ]!%@anon-20191002_181700-524:localhost:8800IVEUVINDHFmj#{"device_id":"alices_first_device","user_id":"@50-e2e-alice:localhost:8480"}  Y!yA 7]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT 7]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE7]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF7]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDA7]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ7]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO7]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS7]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN6]! @anon-20191002_181700-524:localhost:8800IVEUVINDHF :t K a ]!%+@anon-20191002_181700-674:localhost:8800GKOEAKYNVTmy_algorithmmy_id_1m7"my+base64+key"a]!%+@anon-20191002_181700-673:localhost:8800VPLLNWDDCEmy_algorithmmy_id_1m4<"my+base64+key"a]!%+@anon-20191002_181700-671:localhost:8800KUQBONAEMFmy_algorithmmy_id_1m "my+base64+key"a]!%+@anon-20191002_181700-557:localhost:8800KTBNHNNWDAmy_algorithmmy_id_1m2("my+base64+key"a]!%+@anon-20191002_181700-555:localhost:8800MAWHFJMVIZmy_algorithmmy_id_1m"my+base64+key"a]!%+@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmy_algorithmmy_id_1m۬"my+base64+key"a]!%+@anon-20191002_181700-532:localhost:8800FXXARIFXSSmy_algorithmmy_id_1mڐ"my+base64+key"a]!%+@anon-20191002_181700-527:localhost:8800BACKHRSCZNmy_algorithmmy_id_1mr2"my+base64+key"a]!%+@anon-20191002_181700-524:localhost:8800IVEUVINDHFmy_algorithmmy_id_1mh"my+base64+key" Lg3 LL]!%@anon-20191002_181700-674:localhost:8800GKOEAKYNVTmy_algorithmmy_id_1 L]!%@anon-20191002_181700-673:localhost:8800VPLLNWDDCEmy_algorithmmy_id_1L]!%@anon-20191002_181700-671:localhost:8800KUQBONAEMFmy_algorithmmy_id_1L]!%@anon-20191002_181700-557:localhost:8800KTBNHNNWDAmy_algorithmmy_id_1L]!%@anon-20191002_181700-555:localhost:8800MAWHFJMVIZmy_algorithmmy_id_1L]!%@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmy_algorithmmy_id_1L]!%@anon-20191002_181700-532:localhost:8800FXXARIFXSSmy_algorithmmy_id_1L]!%@anon-20191002_181700-527:localhost:8800BACKHRSCZNmy_algorithmmy_id_1K]!% @anon-20191002_181700-524:localhost:8800IVEUVINDHFmy_algorithmmy_id_1  )c' M )QEm!vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455["$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc"]{"ts": 0}Q]m7!jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800["$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU"]{"ts": 1570043611354}Q]m7!jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800["$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI"]{"ts": 1570042413531}Q]m7!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800["$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg"]{"ts": 1570042407359}Q]m7!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800["$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg"]{"ts": 1570041137984}Q]m7!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800["$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"]{"ts": 1570041032639}Q]m7!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800["$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg"]{"ts": 1570041027642}Q[m7!aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800["$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"]{"ts": 1570040386366}  VO VTJQE!vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455VQ]!jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800VQ]!jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800VQ]!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800VQ]!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800VQ]!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800VQ]!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800TQ[ !aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800  9e- Y 9QEe !vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc{"ts": 0}Q]e7 !jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU{"ts": 1570043611354}Q]e7 !jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI{"ts": 1570042413531}Q]e7!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg{"ts": 1570042407359}Q]e7!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg{"ts": 1570041137984}Q]e7!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw{"ts": 1570041032639}Q]e7!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg{"ts": 1570041027642}Q[e7!aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q{"ts": 1570040386366}  VO VTJQE!vnFXnkCSfTbsSNKrtg:localhost:8800m.read@__ANON__-38:localhost:42455VQ]!jRuDexjFzIDOKbwDJQ:localhost:8800m.read@anon-20191002_181700-665:localhost:8800VQ]!jDKAOtmeAGbYTpwyEW:localhost:8800m.read@anon-20191002_181700-390:localhost:8800VQ]!JYLMokjOhZZlmbZvTf:localhost:8800m.read@anon-20191002_181700-389:localhost:8800VQ]!MWCLSWWGdWcSivNVLI:localhost:8800m.read@anon-20191002_181700-195:localhost:8800VQ]!ILbUVZOfPPwaZRrKJd:localhost:8800m.read@anon-20191002_181700-182:localhost:8800VQ]!wAyboOFgsOPwkmgMAI:localhost:8800m.read@anon-20191002_181700-181:localhost:8800TQ[ !aWbcZNVBalJilCEsdr:localhost:8800m.read@anon-20191002_181700-38:localhost:8800      4] (Q!vnFXnkCSfTbsSNKrtg:localhost:8800 (Q!jRuDexjFzIDOKbwDJQ:localhost:8800 (Q!jDKAOtmeAGbYTpwyEW:localhost:8800 (Q!JYLMokjOhZZlmbZvTf:localhost:8800(Q!MWCLSWWGdWcSivNVLI:localhost:8800(Q!ILbUVZOfPPwaZRrKJd:localhost:8800(Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q !aWbcZNVBalJilCEsdr:localhost:8800   v2 <Q  d GOE|p a2E<d33mtableroom_tags_revisionsroom_tags_revisionsCREATE TABLE room_tags_revisions ( user_id TEXT NOT NULL, room_id TEXT NOT NULL, stream_id BIGINT NOT NULL, CONSTRAINT room_tag_revisions_uniqueness UNIQUE (user_id, room_id) ) o))Qtablereceipts_graphreceipts_graphtCREATE TABLE receipts_graph( room_id TEXT NOT NULL, receipt_type TEXT NOT NULL, user_id TEXT NOT NULL, event_ids TEXT NOT NULL, data TEXT NOT NULL, CONSTRAINT receipts_graph_uniqueness UNIQUE (room_id, receipt_type, user_id) )2Eindexsqlite_autoindex_room_tags_1room_tagsSstableroom_tagsroom_tagsCREATE TABLE room_tags( user_id TEXT NOT NULL, room_id TEXT NOT NULL, tag TEXT NOT NULL, content TEXT NOT NULL, CONSTRAINT room_tag_uniqueness UNIQUE (user_id, room_id, tag) )ErY3indexsqlite_autoindex_receipts_linearized_1receipts_linearizedw:q33tablereceipts_linearizedreceipts_linearizedvCREATE TABLE receipts_linearized ( stream_id BIGINT NOT NULL, room_id TEXT NOT NULL, receipt_type TEXT NOT NULL, user_id TEXT NOT NULL, event_id TEXT NOT NULL, data TEXT NOT NULL, CONSTRAINT receipts_linearized_uniqueness UNIQUE (room_id, receipt_type, user_id) )o;pO)indexsqlite_autoindex_receipts_graph_1receipts_graphu _{x11!tablebackground_updatesbackground_updates~CREATE TABLE background_updates( update_name TEXT NOT NULL, progress_json TEXT NOT NULL, depends_on TEXT, ordering INT NOT NULL DEFAULT 0, CONSTRAINT background_updates_uniqueness UNIQUE (update_name) )t//tableevent_search_statevent_search_statCREATE TABLE 'event_search_stat'(id INTEGER PRIMARY KEY, value BLOB)55tableevent_search_docsizeevent_search_docsizeCREATE TABLE 'event_search_docsize'(docid INTEGER PRIMARY KEY, size BLOB)F~Y3indexsqlite_autoindex_event_search_segdir_1event_search_segdirR}33Itableevent_search_segdirevent_search_segdirCREATE TABLE 'event_search_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx))|77'tableevent_search_segmentsevent_search_segmentsCREATE TABLE 'event_search_segments'(blockid INTEGER PRIMARY KEY, block BLOB)/{55tableevent_search_contentevent_search_contentCREATE TABLE 'event_search_content'(docid INTEGER PRIMARY KEY, 'c0event_id', 'c1room_id', 'c2sender', 'c3key', 'c4value')zz%%9tableevent_searchevent_searchCREATE VIRTUAL TABLE event_search USING fts4 ( event_id, room_id, sender, key, value )CyW1indexsqlite_autoindex_background_updates_1background_updatesow9) indexuser_threepids_user_iduser_threepids}CREATE INDEX user_threepids_user_id ON user_threepids(user_id);vO)indexsqlite_autoindex_user_threepids_1user_threepids{yu))-tableuser_threepidsuser_threepidszCREATE TABLE "user_threepids" ( user_id TEXT NOT NULL, medium TEXT NOT NULL, address TEXT NOT NULL, validated_at BIGINT NOT NULL, added_at BIGINT NOT NULL, CONSTRAINT medium_address UNIQUE (medium, address) )tK3?indexreceipts_linearized_room_streamreceipts_linearizedyCREATE INDEX receipts_linearized_room_stream ON receipts_linearized( room_id, stream_id )}s93indexreceipts_linearized_idreceipts_linearizedxCREATE INDEX receipts_linearized_id ON receipts_linearized( stream_id )  !z' $B#<%{ F O) ] e A ߂ yU܁2 hiDa" YW V U T      YZE nIH GF E D C B!  D (     O3&  @v Q Y]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800test_tag{}Y]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800test_tag{}c]Q%@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800test_tag{"order": 1}c]Q%@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800test_tag{"order": 1}Y]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800test_tag{}  9OD 9 X]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800test_tagX]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800test_tagX]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800test_tagX]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800test_tagX]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800test_tagX]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800test_tagX]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800test_tagW]Q @anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800test_tag ^ k x ' O ]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800O ]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800O ]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800O]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800O]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800O]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800O]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800O]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800O]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800 O]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800 O]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800 aq! 1 O]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 O]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800 O]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800 O]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800O]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800O]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800O]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800O]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800O]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800O]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800N]Q @anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800    iX \  Y  y i]3@anon-20191002_181700-613:localhost:8800m.ignored_user_list7{"ignored_users": {"@anon-20191002_181700-614:localhost:8800": {}}} ]3@anon-20191002_181700-611:localhost:8800m.ignored_user_list6{"ignored_users": {"@anon-20191002_181700-612:localhost:8800": {}}} ]3@anon-20191002_181700-608:localhost:8800m.ignored_user_list5{"ignored_users": {"@anon-20191002_181700-609:localhost:8800": {}}}V ]-=@anon-20191002_181700-584:localhost:8800my.changing.type3{"cats_or_rats": "cats"}Y ]1?@anon-20191002_181700-584:localhost:8800my.unchanging.type/{"cats_or_rats": "lions"}R ]%=@anon-20191002_181700-583:localhost:8800my.test.type.{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-581:localhost:8800my.test.type){"cats_or_rats": "cats"}R]%=@anon-20191002_181700-580:localhost:8800my.test.type'{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-579:localhost:8800my.test.type#{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-578:localhost:8800my.test.type{"cats_or_rats": "cats"}R]%=@anon-20191002_181700-577:localhost:8800my.test.type{"cats_or_rats": "cats"}<]%@anon-20191002_181700-575:localhost:8800my.test.type{}1]@anon-20191002_181700-302:localhost:8800m.direct{"@anon-20191002_181700-302:localhost:8800": ["!EyyNoldCLUdFHzXTDP:localhost:8800", "!icheSPMgpemswIdQkw:localhost:8800"]}`[7I@anon-20191002_181700-59:localhost:8800a.made.up.filler.type{"id": "KH|M[LFJjtBREE{ONAQW"}  Og- u  4 @]3@anon-20191002_181700-613:localhost:8800m.ignored_user_list@]3@anon-20191002_181700-611:localhost:8800m.ignored_user_list @]3@anon-20191002_181700-608:localhost:8800m.ignored_user_list =]-@anon-20191002_181700-584:localhost:8800my.changing.type ?]1@anon-20191002_181700-584:localhost:8800my.unchanging.type 9]%@anon-20191002_181700-583:localhost:8800my.test.type 9]%@anon-20191002_181700-581:localhost:8800my.test.type9]%@anon-20191002_181700-580:localhost:8800my.test.type9]%@anon-20191002_181700-579:localhost:8800my.test.type9]%@anon-20191002_181700-578:localhost:8800my.test.type9]%@anon-20191002_181700-577:localhost:8800my.test.type9]%@anon-20191002_181700-575:localhost:8800my.test.type5]@anon-20191002_181700-302:localhost:8800m.direct@[7 @anon-20191002_181700-59:localhost:8800a.made.up.filler.type hd* , > P b hy ]Q-=@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.changing.type4{"cats_or_rats": "rats"}} ]Q1A@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.unchanging.type0{"cats_or_rats": "tigers"}u ]Q%=@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800my.test.type-{"cats_or_rats": "rats"}u ]Q%=@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800my.test.type*{"cats_or_rats": "rats"}u ]Q%=@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800my.test.type({"cats_or_rats": "rats"}u]Q%=@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800my.test.type${"cats_or_rats": "rats"}u]Q%=@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800my.test.type {"cats_or_rats": "rats"}u]Q%=@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800my.test.type{"cats_or_rats": "rats"}_]Q%@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800my.test.type{}]Q%@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800m.fully_read {"event_id": "$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs"}]Q%@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800m.fully_read{"event_id": "$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8"}]Q%@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800m.fully_read{"event_id": "$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw"}[Q%@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800m.fully_read{"event_id": "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"} ?H1 w  `  ? `]Q-@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.changing.type b]Q1@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800my.unchanging.type \]Q%@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800my.test.type \]Q%@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800my.test.type \]Q%@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800my.test.type \]Q%@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800my.test.type\]Q%@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800my.test.type\]Q%@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800my.test.type\]Q%@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800my.test.type\]Q%@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800m.fully_read\]Q%@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800m.fully_read\]Q%@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800m.fully_readZ[Q% @anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800m.fully_read  puF[,  p.]@anon-20191002_181700-613:localhost:88007.]@anon-20191002_181700-611:localhost:88006 .]@anon-20191002_181700-608:localhost:88005 .]@anon-20191002_181700-584:localhost:88003 .]@anon-20191002_181700-584:localhost:8800/ .]@anon-20191002_181700-583:localhost:8800. .]@anon-20191002_181700-581:localhost:8800).]@anon-20191002_181700-580:localhost:8800'.]@anon-20191002_181700-579:localhost:8800#.]@anon-20191002_181700-578:localhost:8800.]@anon-20191002_181700-577:localhost:8800.]@anon-20191002_181700-575:localhost:8800.]@anon-20191002_181700-302:localhost:8800,[ @anon-20191002_181700-59:localhost:8800 4%w L  4 T K oE711Ytableevent_push_actionsevent_push_actionsCREATE TABLE event_push_actions( room_id TEXT NOT NULL, event_id TEXT NOT NULL, user_id TEXT NOT NULL, profile_tag VARCHAR(32), actions TEXT NOT NULL, topological_ordering BIGINT, stream_ordering BIGINT, notif SMALLINT, highlight SMALLINT, unread SMALLINT, CONSTRAINT event_id_user_id_profile_tag_uniqueness UNIQUE (room_id, event_id, user_id, profile_tag) )8//tableex_outlier_streamex_outlier_streamCREATE TABLE ex_outlier_stream( event_stream_ordering BIGINT PRIMARY KEY NOT NULL, event_id TEXT NOT NULL, state_group BIGINT NOT NULL )M/9indexpush_rules_stream_user_stream_idpush_rules_streamCREATE INDEX push_rules_stream_user_stream_id on push_rules_stream(user_id, stream_id)E AAtableaccount_data_max_stream_idaccount_data_max_stream_idCREATE TABLE "account_data_max_stream_id"( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_id BIGINT NOT NULL, CHECK (Lock='X') )FY3indexsqlite_autoindex_room_tags_revisions_1room_tags_revisionst5/indexpush_rules_stream_idpush_rules_streamCREATE INDEX push_rules_stream_id ON push_rules_stream(stream_id)//etablepush_rules_streampush_rules_streamCREATE TABLE push_rules_stream( stream_id BIGINT NOT NULL, event_stream_ordering BIGINT NOT NULL, user_id TEXT NOT NULL, rule_id TEXT NOT NULL, op TEXT NOT NULL, priority_class SMALLINT, priority INTEGER, conditions TEXT, actions TEXT )t;+ indexpresence_stream_user_idpresence_streamCREATE INDEX presence_stream_user_id ON presence_stream(user_id)u1+indexpresence_stream_idpresence_streamCREATE INDEX presence_stream_id ON presence_stream(stream_id, user_id)t++tablepresence_streampresence_streamCREATE TABLE presence_stream( stream_id BIGINT, user_id TEXT, state TEXT, last_active_ts BIGINT, last_federation_update_ts BIGINT, last_user_sync_ts BIGINT, status_msg TEXT, currently_active BOOLEAN )6E1indexevent_push_actions_rm_tokensevent_push_actionsCREATE INDEX event_push_actions_rm_tokens on event_push_actions( user_id, room_id, topological_ordering, stream_ordering )=3indexreceipts_linearized_userreceipts_linearizedCREATE INDEX receipts_linearized_user ON receipts_linearized( user_id )U/qindexpublic_room_indexroomsCREATE INDEX public_room_index on rooms(is_public)i1indexevents_room_streameventsCREATE INDEX events_room_stream on events(room_id, stream_ordering)Q1;indexevent_push_actions_room_id_user_idevent_push_actionsCREATE INDEX event_push_actions_room_id_user_id on event_push_actions(room_id, user_id)DW1indexsqlite_autoindex_event_push_actions_1event_push_actions`indexevents_tseventsCREATE INDEX events_ts ON events(origin_server_ts, stream_ordering) C//indexroom_account_data_stream_idroom_account_dataCREATE INDEX room_account_data_stream_id on room_account_data(user_id, stream_id)w9%indexaccount_data_stream_idaccount_dataCREATE INDEX account_data_stream_id on account_data(user_id, stream_id)BU/indexsqlite_autoindex_room_account_data_1room_account_data' //{tableroom_account_dataroom_account_dataCREATE TABLE room_account_data( user_id TEXT NOT NULL, room_id TEXT NOT NULL, account_data_type TEXT NOT NULL, stream_id BIGINT NOT NULL, content TEXT NOT NULL, CONSTRAINT room_account_data_uniqueness UNIQUE (user_id, room_id, account_data_type) )8 K%indexsqlite_autoindex_account_data_1account_datas %%'tableaccount_dataaccount_dataCREATE TABLE account_data( user_id TEXT NOT NULL, account_data_type TEXT NOT NULL, stream_id BIGINT NOT NULL, content TEXT NOT NULL, CONSTRAINT account_data_uniqueness UNIQUE (user_id, account_data_type) )T gAindexsqlite_autoindex_account_data_max_stream_id_1account_data_max_stream_id uF[, .]@anon-20191002_181700-584:localhost:88004 .]@anon-20191002_181700-584:localhost:88000 .]@anon-20191002_181700-583:localhost:8800- .]@anon-20191002_181700-582:localhost:8800* .]@anon-20191002_181700-580:localhost:8800( .]@anon-20191002_181700-579:localhost:8800$.]@anon-20191002_181700-578:localhost:8800 .]@anon-20191002_181700-577:localhost:8800.]@anon-20191002_181700-576:localhost:8800.]@anon-20191002_181700-395:localhost:8800 .]@anon-20191002_181700-394:localhost:8800.]@anon-20191002_181700-393:localhost:8800,[ @anon-20191002_181700-39:localhost:8800+{hUB/ :m[^^Rm^. u uXm m݂$ mX m!U mG + + m)jXX 7mKI[mˁtmȍmŘ5m//mK2\\m"m*:mc   . ? % n ~  O  i : Y*s  yJ T d 5D  *Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800QQ*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!pduebXnTyxQWVxEICp:localhost:8800 , ,X*Q!nxLxsxzliamzflrEBs:localhost:8800&&*Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!eWRdwtyqHvuxZFvhNS:localhost:8800   *Q!yLccBXjjEasExpsXlt:localhost:8800 Q*Q!vyCFfUTJKYJSDadFhT:localhost:8800``*Q!uGpSboYkgxVNOqNeUG:localhost:8800 o*Q!WpThtNEVhrUbUdCdMJ:localhost:8800   *Q!SrwdtDytJDUBVZOueF:localhost:8800 "(Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e eO*Q!DnUHoxreGexNmjSVpq:localhost:8800WW*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 b*Q!kwXxkGQFkaeenFTQJr:localhost:8800 f*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800}}*Q!aZwMKYDXJRlSKjQNWM:localhost:8800//O*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 h h*Q!NajQnqYmGyTjxhFYar:localhost:8829 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 E*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 J*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800 *Q!drnXStKXkNQkouqUAg:localhost:8800 E E*Q!VUibrTIkcRbfrogbQV:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 3*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800 *Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW0*Q!ZOwibbprUCQrSJQCrx:localhost:8800 *Q!QyLUggxrTnULUAOseq:localhost:8800 a*Q!wnriPzXkIMmdTNoJKU:localhost:8800 @*Q!itKDOCtoMkFUETDtle:localhost:8800 *Q!hgjYwwwjWJNgwrzOto:localhost:8800ZZf*Q!SUDzkfFBgpuCANOxRS:localhost:8800 zupkfa\WRMHC>94/*%  {vqlgb]XS50+&!  z t n h b \ V P J D > 8 2 , &      x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     |vpjd^XRLF@:4.(" ztnhb\VPD>82,& ~xrlf`ZTNHB<60*$ NID?: ~ J ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!           ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\ [ Z Y X WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!         {N! E@__ANON__-38:localhost:42455,]@anon-20191002_181700-665:localhost:8800,]@anon-20191002_181700-390:localhost:8800,]@anon-20191002_181700-389:localhost:8800,]@anon-20191002_181700-195:localhost:8800,]@anon-20191002_181700-182:localhost:8800,]@anon-20191002_181700-181:localhost:8800*[ @anon-20191002_181700-38:localhost:8800 _ Յ - 2`u{^>]U,da, D0]@anon-20191002_181700-553:localhost:8829 00]@anon-20191002_181700-452:localhost:880080]I@anon-20191002_181700-318:localhost:8800H70]@anon-20191002_181700-206:localhost:88008Oj8 -]@anon-20191002_181700-581:localhost:8800 -]@anon-20191002_181700-479:localhost:88009Y-]@anon-20191002_181700-357:localhost:8800X-]@anon-20191002_181700-236:localhost:8800  /^ i ]i@anon-20191002_181700-300:localhost:8800global/room/!CNFopUEQTFbzjmLvii:localhost:8800DELETEN ]i E!@anon-20191002_181700-300:localhost:8800global/room/!NrxQuziwSWzsHuXIlG:localhost:8800ADD[{"kind": "event_match", "key": "room_id", "pattern": "!NrxQuziwSWzsHuXIlG:localhost:8800"}]["notify"]N ]iE!@anon-20191002_181700-300:localhost:8800global/room/!CNFopUEQTFbzjmLvii:localhost:8800ADD[{"kind": "event_match", "key": "room_id", "pattern": "!CNFopUEQTFbzjmLvii:localhost:8800"}]["notify"]   tt.]@anon-20191002_181700-300:localhost:8800.]@anon-20191002_181700-300:localhost:8800-] @anon-20191002_181700-300:localhost:8800 3$18:localhost:42455 3$17:localhost:42455 3$16:localhost:42455    >`(_ E ~wpib[TMF?81*#{tmf_XQJC<5.' EDCB~Ab@F? > = < ; : Y9 P8 f7 P6 H5 4 f3 2 1 p0"/.-,+q*f)V(>'$&%k$5#7"6!- MC8-"uj`zqo \ R L K BldR5'X ~ L~ K}]eQ@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829& 5g& {C= E 5( |ggg 507;;utabledevice_federation_inboxdevice_federation_inboxCREATE TABLE device_federation_inbox ( origin TEXT NOT NULL, message_id TEXT NOT NULL, received_ts BIGINT NOT NULL )?0AAtableappservice_stream_positionappservice_stream_positionCREATE TABLE appservice_stream_position( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_ordering BIGINT, CHECK (Lock='X') )T1gAindexsqlite_autoindex_appservice_stream_position_1appservice_stream_positionb,''tableevent_reportsevent_reportsCREATE TABLE event_reports( id BIGINT NOT NULL PRIMARY KEY, received_ts BIGINT NOT NULL, room_id TEXT NOT NULL, event_id TEXT NOT NULL, user_id TEXT NOT NULL, reason TEXT, content TEXT ):-M'indexsqlite_autoindex_event_reports_1event_reportsA*++7tablepusher_throttlepusher_throttleCREATE TABLE pusher_throttle( pusher BIGINT NOT NULL, room_id TEXT NOT NULL, last_sent_ts BIGINT, throttle_ms BIGINT, PRIMARY KEY (pusher, room_id) )>+Q+indexsqlite_autoindex_pusher_throttle_1pusher_throttle)M)1indexopen_id_tokens_ts_valid_until_msopen_id_tokensCREATE INDEX open_id_tokens_ts_valid_until_ms ON open_id_tokens(ts_valid_until_ms)3'))tableopen_id_tokensopen_id_tokensCREATE TABLE open_id_tokens ( token TEXT NOT NULL PRIMARY KEY, ts_valid_until_ms bigint NOT NULL, user_id TEXT NOT NULL, UNIQUE (token) )<(O)indexsqlite_autoindex_open_id_tokens_1open_id_tokens l #&Q1Oindexevent_push_actions_stream_orderingevent_push_actionsCREATE INDEX event_push_actions_stream_ordering on event_push_actions( stream_ordering, user_id )%A'_indexlocal_invites_for_user_idxlocal_invitesCREATE INDEX local_invites_for_user_idx ON local_invites(invitee, locally_rejected, replaced_by, room_id)c$-'indexlocal_invites_idlocal_invitesCREATE INDEX local_invites_id ON local_invites(stream_id)e#''tablelocal_inviteslocal_invitesCREATE TABLE local_invites( stream_id BIGINT NOT NULL, inviter TEXT NOT NULL, invitee TEXT NOT NULL, event_id TEXT NOT NULL, room_id TEXT NOT NULL, locally_rejected TEXT, replaced_by TEXT ) 56[=]indexdevice_federation_outbox_destination_iddevice_federation_outboxCREATE INDEX device_federation_outbox_destination_id ON device_federation_outbox(destination, stream_id)}4=7indexreceived_transactions_tsreceived_transactionsCREATE INDEX received_transactions_ts ON received_transactions(ts) 3C%;indexdevice_inbox_user_stream_iddevice_inboxCREATE INDEX device_inbox_user_stream_id ON device_inbox(user_id, device_id, stream_id))2%%tabledevice_inboxdevice_inboxCREATE TABLE device_inbox ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, stream_id BIGINT NOT NULL, message_json TEXT NOT NULL )3"QE[indexthreepid_guest_access_tokens_indexthreepid_guest_access_tokensCREATE UNIQUE INDEX threepid_guest_access_tokens_index ON threepid_guest_access_tokens(medium, address)}9!EEstablethreepid_guest_access_tokensthreepid_guest_access_tokensCREATE TABLE threepid_guest_access_tokens( medium TEXT, address TEXT, guest_access_token TEXT, first_inviter TEXT )B U/indexsqlite_autoindex_ex_outlier_stream_1ex_outlier_streamT5==9tabledevice_federation_outboxdevice_federation_outboxCREATE TABLE device_federation_outbox ( destination TEXT NOT NULL, stream_id BIGINT NOT NULL, queued_ts BIGINT NOT NULL, messages_json TEXT NOT NULL )  J=]lvsNRWfomUwYcbAznkuOytmqmT@anon-20191002_181700-585:localhost:8800 = lvsNRWfomUwYcbAznkuOytmq   mT       X%  X @S O I F@*]!o@anon-20191002_181700-598:localhost:8800TGNIJBJLOR{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-599:localhost:8829"}*]!o@anon-20191002_181700-597:localhost:8800TEPJNKLEKS{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-597:localhost:8800"})]!m@anon-20191002_181700-596:localhost:8800XLWTYGZVSG{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-596:localhost:8800"}) ]!m@anon-20191002_181700-596:localhost:8800WNSHUZKVHW{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-596:localhost:8800"} ) ]!m@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ {"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-595:localhost:8800"}*]!o@anon-20191002_181700-593:localhost:8800MHLBNUKOHT {"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-594:localhost:8829"}*]!o@anon-20191002_181700-590:localhost:8800WKVIGIMVPR{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-590:localhost:8800"})]!m@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-589:localhost:8800"})]!m@anon-20191002_181700-588:localhost:8800CHJPRGUPAU{"content": {"message": "second"}, "type": "my.test.type", "sender": "@anon-20191002_181700-588:localhost:8800"}*]!o@anon-20191002_181700-587:localhost:8800VGJOOHQHVE{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-587:localhost:8800"}*]!o@anon-20191002_181700-586:localhost:8800DOTBNZJMYC{"content": {"my_key": "my_value"}, "type": "my.test.type", "sender": "@anon-20191002_181700-586:localhost:8800"} S1 k9]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSG9]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHW 9]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS9]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ 9]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR9]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHT 9]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ9]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAU9]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPR9]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVE8]! @anon-20191002_181700-586:localhost:8800DOTBNZJMYC x }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    mH2x mCrw mvv mtKu mqt mnDs mOr mM:q mIp m,xo m*n m&m ml mk mj mi mh mqg m#f m e m d mc mb mXa mN` mv_ m ^ m䋘] m䅂\ m[ meZ mc]Y mGX muW mV mnU mfET mE S m`R m0Q m'P mO mgSN mM mʜL mTK mSJ m%I mbH mG mXF mQNE m%D m$C m#zB m!0A m@ m? m> m= ma< m`\; mF: m;9 m58 m27 mѕ6 m5 mٰ4 m٭ 3 mٗs2 mo1 m,0 m&v/ mؿ:. mؼS- m؛, mؘ4+ mJf* m#) mK( m' mׯ5& m׫% m׍2$ m׈# m#" m ! m m֨ m֥ mֆ4 mփ mO< m( m  m mդ/ mա mՃ mՁC m m7f m m ms m mX m m m W m Q m m mš m m[ m m  mE   ()-localhost:8829hNbIASrtTNVLfXIYm׮()-localhost:8829FNXeqVIqGFBRXVKTmN #)-localhost:8829hNbIASrtTNVLfXIY")- localhost:8829FNXeqVIqGFBRXVKT   T)|P$ t H *Q!QyLUggxrTnULUAOseq:localhost:8800*Q !KcXNWNfbLcYsBKZHIp:localhost:8800*Q !SfYtaUhCFosNfHfUVm:localhost:8800*Q !NPdjmIfsBVIIkvWBzD:localhost:8800* Q !vyCFfUTJKYJSDadFhT:localhost:8800* Q !beBXQofoOfxNBtzsut:localhost:8800* Q!KmuRTfGFgJdgIDAgIW:localhost:8800* Q !mOrKBPhetifKHDmElM:localhost:8800* Q !QyLUggxrTnULUAOseq:localhost:8800)Q \!zFdNewlKnUiMBxnYrN:localhost:8800)Q [!KeBlWUQiLYUoILKkTB:localhost:8800)Q Z!WVzjUePHrzCjfyTbmK:localhost:8800)Q Y!lAGTcYIuMBXsVRGCOe:localhost:8800)Q X!UyLoIXmzVFwycmBUeh:localhost:8800)Q !kkgEEVUJynguTqAoWD:localhost:8800)Q !sPWVGnipjiiWQpywNO:localhost:8800)Q !zNCItZNbpkZKuufRhC:localhost:8800      \[ZYX    ? i;  ? ] 4e )Q!QyLUggxrTnULUAOseq:localhost:8800)Q!KcXNWNfbLcYsBKZHIp:localhost:8800)Q!SfYtaUhCFosNfHfUVm:localhost:8800)Q!NPdjmIfsBVIIkvWBzD:localhost:8800)Q!vyCFfUTJKYJSDadFhT:localhost:8800 )Q!beBXQofoOfxNBtzsut:localhost:8800 )Q!KmuRTfGFgJdgIDAgIW:localhost:8800 )Q!mOrKBPhetifKHDmElM:localhost:8800 )Q!QyLUggxrTnULUAOseq:localhost:8800 (Q!zFdNewlKnUiMBxnYrN:localhost:8800\(Q!KeBlWUQiLYUoILKkTB:localhost:8800[(Q!WVzjUePHrzCjfyTbmK:localhost:8800Z(Q!lAGTcYIuMBXsVRGCOe:localhost:8800Y(Q!UyLoIXmzVFwycmBUeh:localhost:8800X(Q!kkgEEVUJynguTqAoWD:localhost:8800(Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q !zNCItZNbpkZKuufRhC:localhost:8800h= i A7/indexstate_group_edges_idxstate_group_edgesCREATE INDEX state_group_edges_idx ON state_group_edges(state_group)=//Ktablestate_group_edgesstate_group_edgesCREATE TABLE state_group_edges( state_group BIGINT NOT NULL, prev_state_group BIGINT NOT NULL )<I;Eindexpublic_room_list_stream_rm_idxpublic_room_list_streamCREATE INDEX public_room_list_stream_rm_idx on public_room_list_stream( room_id, stream_id );C;-indexpublic_room_list_stream_idxpublic_room_list_streamCREATE INDEX public_room_list_stream_idx on public_room_list_stream( stream_id )W:;;Ctablepublic_room_list_streampublic_room_list_streamCREATE TABLE public_room_list_stream ( stream_id BIGINT NOT NULL, room_id TEXT NOT NULL, visibility BOOLEAN NOT NULL , appservice_id TEXT, network_id TEXT) & B  | 13JM~ % A  | 02JL~T ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  P`3ݝYr,9~L~k?6ΙU$eu3H  m ? } ;e 8 Q ^ p1 L W ( u B U )b 5 ’ [ s. E T ' ȏz M } ^s =F l?^e 7ËV&hw2JщpCj3i<ۈbp5O[.uT@'z؄M }sFFڂl?mJe8ځ ]/ J  l J  Q~v3GL^]~ 1 a  % n *  " < T2 i ? Y f L    7s { D S *Q!rWGwSSefrZzQYCYFHs:localhost:8800 .U*Q!qSUSLLWjDxcGibUZdT:localhost:8800~ c*Q!TWETXUgfFZafDdbqLS:localhost:880000N*Q!DnUHoxreGexNmjSVpq:localhost:8800\ \*Q!mTlCLZQCmfDuQsJxxp:localhost:8800/l*Q!FAYqpziHeVZugCGaij:localhost:8800 *Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!LvARVIpJZeRQxbKefX:localhost:8800qwo*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!PCgUmZOwWmtDsuFqXg:localhost:8800,2 q*Q!UTAORDrNxIbSlGByAp:localhost:8800 = n*Q!fJXiUpbbOlLbHWmPgs:localhost:8800W*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 C *Q!bkwyieHZwSMJfuSKvV:localhost:8800 D*Q!vOfeZvbtpuHfoqShFl:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!BKZJsoFNhiLTDYNclB:localhost:8800gY*Q!NQgavrmiCPUVaVjssy:localhost:8800jn < 5(Q!zhCsYcaweVFJLLNwBz:localhost:8800,+(*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800.*Q!RmdhCjvouVLmyIHjaM:localhost:8800BB(Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800  h*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!csWEXfVEVxdviNvgAd:localhost:8800*T*Q!kjueCKHmYaYefEEpQY:localhost:8800!*Q!FklhVuCInffbDxunWv:localhost:880049*Q!SrMQpDMFREKRMELwbL:localhost:8800-*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800s*Q!raCWVWQGnXbmkexpCN:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800  q*Q!aLxrqpqLkbzyIxGgpk:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 "*Q!aZwMKYDXJRlSKjQNWM:localhost:88006X*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  V *Q!OJilSqnQvLgoXSqRaW:localhost:8800 p*Q!wAyboOFgsOPwkmgMAI:localhost:8800<@.*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 (Q!jYzridjeihmwPBuwLb:localhost:8800UT ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$  | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $    fGq(a TjCK-, nO0Ѳ±rS4~v_WK28oF߯ˮ`;rn]I:'|]=ի|X5thUE66'x Y 8 ߩ Ѩy Z ;  } ^ n? _ > $b C $  ٥f ƥG ( j jK U, G :n !O . ޢf ̢B  z V x3 d Hu 6V !7  y ҟZ ;  } p^ Y? H 8 *b C ڝ$ ͝ f G y( j Sj ;K !,  nOΚ0rS~4lXvGU53pP. ޖkʖK* hI|*d ZlFM1.  pQ2ӓtU6rxdYJ:9*|] >ߐяaÏB#exFf'DEi J+ mN/ŌqR3oudVX7L3yZ;}^?Ȉ bC$iZfPGE(- jK, nԄO0rS4Z?v5W'8z[Á<~_>lk1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw      events%!federation  @? { @<E+%@__ANON__-48:localhost:42455CURIOSITY_ROVER{"device_display_name": "Curiosity Rover", "device_id": "CURIOSITY_ROVER", "keys": {"keys": {"b": "flat", "c": "sharp"}, "device_id": "CURIOSITY_ROVER", "signatures": {"@__ANON__-48:localhost:42455": {"ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA"}}, "algorithms": ["fast", "and broken"], "user_id": "@__ANON__-48:localhost:42455"}}zE-@__ANON__-46:localhost:42455random_device_id{"device_display_name": "test display name", "keys": {"device_keys": {}}}A]!!@anon-20191002_181700-559:localhost:8829ESMCXDKMPQ{"device_id": "ESMCXDKMPQ", "keys": {"device_id": "ESMCXDKMPQ", "device_keys": {}, "user_id": "@anon-20191002_181700-559:localhost:8829"}}A]!!@anon-20191002_181700-553:localhost:8829UQYOPZHDDU{"device_id": "UQYOPZHDDU", "keys": {"device_id": "UQYOPZHDDU", "device_keys": {}, "user_id": "@anon-20191002_181700-553:localhost:8829"}}z]!@anon-20191002_181700-540:localhost:8829DTIXBTNGTL{"device_display_name": "test display name", "keys": {"device_id": "DTIXBTNGTL", "device_keys": {}, "user_id": "@anon-20191002_181700-540:localhost:8829"}, "org.matrix.opentracing_context": "{}"} sD" E@__ANON__-48:localhost:424553 E@__ANON__-46:localhost:424552-]@anon-20191002_181700-559:localhost:882966-]@anon-20191002_181700-553:localhost:882963-]@anon-20191002_181700-542:localhost:882958-]@anon-20191002_181700-540:localhost:882954 ='%t? y |:  &CP Hx5 r * d/[& B0]I@anon-20191002_181700-793:localhost:8800,=0] @anon-20191002_181700-725:localhost:88000]@anon-20191002_181700-654:localhost:8800 E0]w@anon-20191002_181700-579:localhost:8800^ i0] @anon-20191002_181700-492:localhost:8800 0]@anon-20191002_181700-406:localhost:88000]@anon-20191002_181700-333:localhost:880060]J@anon-20191002_181700-261:localhost:8800=V0]@anon-20191002_181700-196:localhost:88000]@anon-20191002_181700-130:localhost:8800-[Y@anon-20191002_181700-49:localhost:8800S U  <   X  X U# J B ]* y K UUUd A  cII9tableuser_directory_search_segmentsuser_directory_search_segmentsCREATE TABLE 'user_directory_search_segments'(blockid INTEGER PRIMARY KEY, block BLOB)'bGGKtableuser_directory_search_contentuser_directory_search_contentCREATE TABLE 'user_directory_search_content'(docid INTEGER PRIMARY KEY, 'c0user_id', 'c1value') \IA5indexcurrent_state_delta_stream_idxcurrent_state_delta_streamCREATE INDEX current_state_delta_stream_idx ON current_state_delta_stream(stream_id)n[AAetablecurrent_state_delta_streamcurrent_state_delta_streamCREATE TABLE current_state_delta_stream ( stream_id BIGINT NOT NULL, room_id TEXT NOT NULL, type TEXT NOT NULL, state_key TEXT NOT NULL, event_id TEXT, prev_event_id TEXT )Z91indexratelimit_override_idxratelimit_overrideCREATE UNIQUE INDEX ratelimit_override_idx ON ratelimit_override(user_id)Y11_tableratelimit_overrideratelimit_overrideCREATE TABLE ratelimit_override ( user_id TEXT NOT NULL, messages_per_second BIGINT, burst_count BIGINT )$XQC?indexdevice_lists_outbound_pokes_streamdevice_lists_outbound_pokesCREATE INDEX device_lists_outbound_pokes_stream ON device_lists_outbound_pokes(stream_id)>UQtablepusherspushersCREATE TABLE "pushers" ( id BIGINT PRIMARY KEY, user_name TEXT NOT NULL, access_token BIGINT DEFAULT NULL, profile_tag TEXT NOT NULL, kind TEXT NOT NULL, app_id TEXT NOT NULL, app_display_name TEXT NOT NULL, device_display_name TEXT NOT NULL, pushkey TEXT NOT NULL, ts BIGINT NOT NULL, lang TEXT, data TEXT, last_stream_ordering INTEGER, last_success BIGINT, failing_since BIGINT, UNIQUE (app_id, pushkey, user_name) ).WAindexsqlite_autoindex_pushers_2pushers.VAindexsqlite_autoindex_pushers_1pushersdTwQindexsqlite_autoindex_event_push_summary_stream_ordering_1event_push_summary_stream_ordering܁aSQQ+tableevent_push_summary_stream_orderingevent_push_summary_stream_orderingCREATE TABLE event_push_summary_stream_ordering ( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_ordering BIGINT NOT NULL, CHECK (Lock='X') ) RA1+indexevent_push_summary_user_rmevent_push_summaryCREATE INDEX event_push_summary_user_rm ON event_push_summary(user_id, room_id) 'R`e?indexsqlite_autoindex_user_directory_stream_pos_1user_directory_stream_pos7_??{tableuser_directory_stream_posuser_directory_stream_posCREATE TABLE user_directory_stream_pos ( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_id BIGINT, CHECK (Lock='X') )DUQ11Stableevent_push_summaryevent_push_summaryCREATE TABLE event_push_summary ( user_id TEXT NOT NULL, room_id TEXT NOT NULL, notif_count BIGINT NOT NULL, stream_ordering BIGINT NOT NULL , unread_count BIGINT)+PMCQindexdevice_lists_outbound_pokes_userdevice_lists_outbound_pokesCREATE INDEX device_lists_outbound_pokes_user ON device_lists_outbound_pokes(destination, user_id))OICQindexdevice_lists_outbound_pokes_iddevice_lists_outbound_pokesCREATE INDEX device_lists_outbound_pokes_id ON device_lists_outbound_pokes(destination, stream_id)~a77tableuser_directory_searchuser_directory_searchCREATE VIRTUAL TABLE user_directory_search USING fts4 ( user_id, value ) [  =   ` ysmga[UOIC=71+% }wqke_YSMGA;5/)#  Tb28pP0moQM -ؕdF" ~!Y7ܔv~PA/" j ɒG % ~ Sh I ) ő j \J 8*  ӏh E u# B a Ύ@  j} ?] (< ٍ kd 3F '،c{AS$}[8qtON/)qЈR2Pp'O1ԇoNU-! m݅L* ch>G* ƃkIj(JiJۂ) lHM), hG#&   r  } o[K4   X%  X`E&^c E U)  s nX <  @i6N2vW9   K  ||~               c B!  ]  - MQ]!zqQJfFCRlSEDPKlQPy:localhost:8800@anon-20191002_181700-604:localhost:8800 %Q !zqQJfFCRlSEDPKlQPy:localhost:8800 w OTChttps://localhost:43723/test.htmlmq{"og:title": "The Rock", "og:type": "video.movie", "og:url": "http://www.imdb.com/title/tt0117500/", "og:image": "mxc://localhost:8800/2019-10-02_BRGgNtEwftdNPMfv", "og:description": null, "og:image:width": 279, "og:image:height": 129, "og:image:type": "image/png", "matrix:image:size": 2239}2019-10-02_aqhaEGPqafvXwwngm sbY 6 [ zyq=ddXekEindexsqlite_autoindex_user_directory_search_segdir_1user_directory_search_segdirmdEE[tableuser_directory_search_segdiruser_directory_search_segdirCREATE TABLE 'user_directory_search_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx))Ux33Otablegroup_summary_usersgroup_summary_usersCREATE TABLE group_summary_users ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, role_id TEXT NOT NULL, user_order BIGINT NOT NULL, is_public BOOLEAN NOT NULL )Jw]7indexsqlite_autoindex_group_room_categories_1group_room_categoriescv77ctablegroup_room_categoriesgroup_room_categoriesCREATE TABLE group_room_categories ( group_id TEXT NOT NULL, category_id TEXT NOT NULL, profile TEXT NOT NULL, is_public BOOLEAN NOT NULL, UNIQUE (group_id, category_id) )ZumGindexsqlite_autoindex_group_summary_room_categories_1group_summary_room_categoriestGGtablegroup_summary_room_categoriesgroup_summary_room_categoriesCREATE TABLE group_summary_room_categories ( group_id TEXT NOT NULL, category_id TEXT NOT NULL, cat_order BIGINT NOT NULL, UNIQUE (group_id, category_id, cat_order), CHECK (cat_order > 0) )s?3Uindexgroup_summary_rooms_g_idxgroup_summary_roomsCREATE UNIQUE INDEX group_summary_rooms_g_idx ON group_summary_rooms(group_id, room_id, category_id)FrY3indexsqlite_autoindex_group_summary_rooms_1group_summary_rooms&q33qtablegroup_summary_roomsgroup_summary_roomsCREATE TABLE group_summary_rooms ( group_id TEXT NOT NULL, room_id TEXT NOT NULL, category_id TEXT NOT NULL, room_order BIGINT NOT NULL, is_public BOOLEAN NOT NULL, UNIQUE (group_id, category_id, room_id, room_order), CHECK (room_order > 0) ) p##Ytablegroup_roomsgroup_roomsCREATE TABLE group_rooms ( group_id TEXT NOT NULL, room_id TEXT NOT NULL, is_public BOOLEAN NOT NULL )to''%tablegroup_invitesgroup_invitesCREATE TABLE group_invites ( group_id TEXT NOT NULL, user_id TEXT NOT NULL )%n##tablegroup_usersgroup_usersCREATE TABLE group_users ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, is_admin BOOLEAN NOT NULL, is_public BOOLEAN NOT NULL )=maMWindexlocal_media_repository_url_cache_media_idxlocal_media_repository_url_cacheCREATE INDEX local_media_repository_url_cache_media_idx ON local_media_repository_url_cache(media_id)WlsMyindexlocal_media_repository_url_cache_by_url_download_tslocal_media_repository_url_cacheCREATE INDEX local_media_repository_url_cache_by_url_download_ts ON local_media_repository_url_cache(url, download_ts)CkeM_indexlocal_media_repository_url_cache_expires_idxlocal_media_repository_url_cacheCREATE INDEX local_media_repository_url_cache_expires_idx ON local_media_repository_url_cache(expires_ts)jjMMEtablelocal_media_repository_url_cachelocal_media_repository_url_cacheCREATE TABLE "local_media_repository_url_cache"( url TEXT, response_code INTEGER, etag TEXT, expires_ts BIGINT, og TEXT, media_id TEXT, download_ts BIGINT )ki/' indexblocked_rooms_idxblocked_roomsCREATE UNIQUE INDEX blocked_rooms_idx ON blocked_rooms(room_id)sh''#tableblocked_roomsblocked_roomsCREATE TABLE blocked_rooms ( room_id TEXT NOT NULL, user_id TEXT NOT NULL )gAA'tableuser_directory_search_statuser_directory_search_statCREATE TABLE 'user_directory_search_stat'(id INTEGER PRIMARY KEY, value BLOB)fGG1tableuser_directory_search_docsizeuser_directory_search_docsizeCREATE TABLE 'user_directory_search_docsize'(docid INTEGER PRIMARY KEY, size BLOB)   mq +O https://localhost:43723/test.htmlm C 2019-10-02_aqhaEGPqafvXwwng, PXVc]+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800 \ c j  Q cQ +__anon__-20191002_181700-28:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800Q cQ +__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800QcQ +__anon__-20191002_181700-26:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800QcQ +__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800QcQ +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800QcQ +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800QcQ +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800QcQ +__anon__-20191002_181700-10:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800PaQ +__anon__-20191002_181700-6:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800PaQ +__anon__-20191002_181700-1:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800 NVN ][cQ +__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800some_catTcQ  +__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800ScQ +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800ScQ +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800ScQ +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800 OWO ]\cQ +__anon__-20191002_181700-27:localhost:8800some_cat!CKNftKKCaOCVUyYWNY:localhost:8800Uc Q+__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800Tc Q +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800Tc Q +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800Sc Q +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800 UYU \[cQ+__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800some_catScQ +__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800ScQ +__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800ScQ +__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800RcQ +__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800 7c +__anon__-20191002_181700-28:localhost:8800some_cat7c +__anon__-20191002_181700-27:localhost:8800some_cat 9c +__anon__-20191002_181700-28:localhost:8800some_cat8c +__anon__-20191002_181700-27:localhost:8800some_cat [W[Qc? +__anon__-20191002_181700-28:localhost:8800some_cat{"name": "Category Name"}Qc? +__anon__-20191002_181700-27:localhost:8800some_cat{"name": "Category Name"}TcC +__anon__-20191002_181700-19:localhost:8800some_cat2{"name": "Category Name 2"}TcC +__anon__-20191002_181700-19:localhost:8800some_cat1{"name": "Category Name 1"}Qc? +__anon__-20191002_181700-17:localhost:8800some_cat{"name": "Category Name"} T8c+__anon__-20191002_181700-28:localhost:8800some_cat8c+__anon__-20191002_181700-27:localhost:8800some_cat9c+__anon__-20191002_181700-19:localhost:8800some_cat29c+__anon__-20191002_181700-19:localhost:8800some_cat17c +__anon__-20191002_181700-17:localhost:8800some_cat J&dbc] +__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800some_roleZc]  +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800Yc] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800Yc] +__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800 AqA0/c+__anon__-20191002_181700-32:localhost:8800/c+__anon__-20191002_181700-30:localhost:8800/c+__anon__-20191002_181700-30:localhost:8800.c +__anon__-20191002_181700-29:localhost:8800 8c +__anon__-20191002_181700-33:localhost:8800some_role8c +__anon__-20191002_181700-32:localhost:8800some_role :c +__anon__-20191002_181700-33:localhost:8800some_role9c +__anon__-20191002_181700-32:localhost:8800some_role b] bRc? +__anon__-20191002_181700-33:localhost:8800some_role{"name": "Category Name"}Rc? +__anon__-20191002_181700-32:localhost:8800some_role{"name": "Category Name"}Qc!; +__anon__-20191002_181700-22:localhost:8800some_role2{"name": "Role Name 2"}Qc!; +__anon__-20191002_181700-22:localhost:8800some_role1{"name": "Role Name 1"}Nc7 +__anon__-20191002_181700-20:localhost:8800some_role{"name": "Role Name"} Q9c+__anon__-20191002_181700-33:localhost:8800some_role9c+__anon__-20191002_181700-32:localhost:8800some_role:c!+__anon__-20191002_181700-22:localhost:8800some_role2:c!+__anon__-20191002_181700-22:localhost:8800some_role18c +__anon__-20191002_181700-20:localhost:8800some_role B]c]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829mP]c]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829mX]c]+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829m[ OXc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829Wc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829 zz,]@anon-20191002_181700-824:localhost:8829,]@anon-20191002_181700-817:localhost:8829+] @anon-20191002_181700-776:localhost:8829  mP mX  m[ 4> A e # V?O@ =60{?+indexdeleted_pushers_stream_iddeleted_pushersCREATE INDEX deleted_pushers_stream_id ON deleted_pushers (stream_id)bz33itablegroup_summary_rolesgroup_summary_rolesCREATE TABLE group_summary_roles ( group_id TEXT NOT NULL, role_id TEXT NOT NULL, role_order BIGINT NOT NULL, UNIQUE (group_id, role_id, role_order), CHECK (role_order > 0) )y?3indexgroup_summary_users_g_idxgroup_summary_usersCREATE INDEX group_summary_users_g_idx ON group_summary_users(group_id), ++ tabledeleted_pushersdeleted_pushersCREATE TABLE "deleted_pushers" ( stream_id BIGINT NOT NULL, app_id TEXT NOT NULL, pushkey TEXT NOT NULL, user_id TEXT NOT NULL ) ?5!indexremote_profile_cache_timeremote_profile_cacheCREATE INDEX remote_profile_cache_time ON remote_profile_cache(last_check)6}I#indexsqlite_autoindex_group_roles_1group_roles=|##?tablegroup_rolesgroup_rolesCREATE TABLE group_roles ( group_id TEXT NOT NULL, role_id TEXT NOT NULL, profile TEXT NOT NULL, is_public BOOLEAN NOT NULL, UNIQUE (group_id, role_id) )$F{Y3indexsqlite_autoindex_group_summary_roles_1group_summary_roles E5/indexremote_profile_cache_user_idremote_profile_cacheCREATE UNIQUE INDEX remote_profile_cache_user_id ON remote_profile_cache(user_id)0 55tableremote_profile_cacheremote_profile_cacheCREATE TABLE remote_profile_cache ( user_id TEXT NOT NULL, displayname TEXT, avatar_url TEXT, last_check BIGINT NOT NULL )L 33=tablelocal_group_updateslocal_group_updatesCREATE TABLE local_group_updates ( stream_id BIGINT NOT NULL, group_id TEXT NOT NULL, user_id TEXT NOT NULL, type TEXT NOT NULL, content TEXT NOT NULL ) E9'indexlocal_group_membership_g_idxlocal_group_membershipCREATE INDEX local_group_membership_g_idx ON local_group_membership(group_id)E99indexlocal_group_membership_u_idxlocal_group_membershipCREATE INDEX local_group_membership_u_idx ON local_group_membership(user_id, group_id){99tablelocal_group_membershiplocal_group_membershipCREATE TABLE local_group_membership ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, is_admin BOOLEAN NOT NULL, membership TEXT NOT NULL, is_publicised BOOLEAN NOT NULL, content TEXT NOT NULL )K??indexgroup_attestations_remote_v_idxgroup_attestations_remoteCREATE INDEX group_attestations_remote_v_idx ON group_attestations_remote(valid_until_ms)K?1indexgroup_attestations_remote_u_idxgroup_attestations_remoteCREATE INDEX group_attestations_remote_u_idx ON group_attestations_remote(user_id)"K?Eindexgroup_attestations_remote_g_idxgroup_attestations_remote CREATE INDEX group_attestations_remote_g_idx ON group_attestations_remote(group_id, user_id)X??=tablegroup_attestations_remotegroup_attestations_remote CREATE TABLE group_attestations_remote ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, valid_until_ms BIGINT NOT NULL, attestation_json TEXT NOT NULL )'OCGindexgroup_attestations_renewals_v_idxgroup_attestations_renewals CREATE INDEX group_attestations_renewals_v_idx ON group_attestations_renewals(valid_until_ms) OC9indexgroup_attestations_renewals_u_idxgroup_attestations_renewals CREATE INDEX group_attestations_renewals_u_idx ON group_attestations_renewals(user_id)*OCMindexgroup_attestations_renewals_g_idxgroup_attestations_renewalsCREATE INDEX group_attestations_renewals_g_idx ON group_attestations_renewals(group_id, user_id)>~CCtablegroup_attestations_renewalsgroup_attestations_renewalsCREATE TABLE group_attestations_renewals ( group_id TEXT NOT NULL, user_id TEXT NOT NULL, valid_until_ms BIGINT NOT NULL )  q{ qc]S+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829mr_{"group_id": "+__anon__-20191002_181700-42:localhost:8800", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "DmgTHKNuFoaBMfyCRpyEc1YIV3gGvBq056hPhKLHE8wbcXLhyPHlRXtkyDSlLncsJ7y4oPdmLF9I41lApmW2Aw"}}, "user_id": "@anon-20191002_181700-824:localhost:8829", "valid_until_ms": 1570321385567}c]S+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829ml{"group_id": "+__anon__-20191002_181700-38:localhost:8800", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "BznUesu9TQqFBll5aNtTG/dG1pIyfyF95QlzvF9cTpwEVq74sm4XiirItEh3eL2C/SyJiH++ynXHz1UyiZKWAQ"}}, "user_id": "@anon-20191002_181700-817:localhost:8829", "valid_until_ms": 1570366057499}c]S+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829mb_|{"group_id": "+__anon__-20191002_181700-14:localhost:8800", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "tkC8miM1JEBlqGJFgYGRa26NS0buuh1lVgEbvG/iKJU1eiB+rkMcLt7q4JiP9Fy8EA0Uu26RMhOVsx4BQuWOAg"}}, "user_id": "@anon-20191002_181700-776:localhost:8829", "valid_until_ms": 1570353864572} OXc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829Wc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829 zz,]@anon-20191002_181700-824:localhost:8829,]@anon-20191002_181700-817:localhost:8829+] @anon-20191002_181700-776:localhost:8829  mr_ ml  mb_|X]c@anon-20191002_181700-784:localhost:8800+__anon__-20191002_181700-20:localhost:8800 3{ k ; { K   [ + k ; t { K [+k;E {Z+/c+__anon__-20191002_181700-42:localhost:88003/c+__anon__-20191002_181700-41:localhost:88002/c+__anon__-20191002_181700-40:localhost:88001/c+__anon__-20191002_181700-40:localhost:88000/c+__anon__-20191002_181700-39:localhost:8800//c+__anon__-20191002_181700-38:localhost:8800./c+__anon__-20191002_181700-38:localhost:8800-/c+__anon__-20191002_181700-37:localhost:8800,/c+__anon__-20191002_181700-37:localhost:8800+/c+__anon__-20191002_181700-36:localhost:8800*/c+__anon__-20191002_181700-35:localhost:8800)/c+__anon__-20191002_181700-34:localhost:8800(/c+__anon__-20191002_181700-34:localhost:8800'/c+__anon__-20191002_181700-33:localhost:8800&/c+__anon__-20191002_181700-32:localhost:8800%/c+__anon__-20191002_181700-31:localhost:8800$/c+__anon__-20191002_181700-30:localhost:8800#/c+__anon__-20191002_181700-30:localhost:8800"/c+__anon__-20191002_181700-29:localhost:8800!/c+__anon__-20191002_181700-28:localhost:8800 /c+__anon__-20191002_181700-27:localhost:8800/c+__anon__-20191002_181700-26:localhost:8800/c+__anon__-20191002_181700-25:localhost:8800/c+__anon__-20191002_181700-24:localhost:8800/c+__anon__-20191002_181700-23:localhost:8800/c+__anon__-20191002_181700-22:localhost:8800/c+__anon__-20191002_181700-21:localhost:8800/c+__anon__-20191002_181700-20:localhost:8800/c+__anon__-20191002_181700-19:localhost:8800/c+__anon__-20191002_181700-18:localhost:8800/c+__anon__-20191002_181700-17:localhost:8800/c+__anon__-20191002_181700-16:localhost:8800/c+__anon__-20191002_181700-15:localhost:8800/c+__anon__-20191002_181700-14:localhost:8800/c+__anon__-20191002_181700-13:localhost:8800/c+__anon__-20191002_181700-13:localhost:8800/c+__anon__-20191002_181700-12:localhost:8800/c+__anon__-20191002_181700-12:localhost:8800/c+__anon__-20191002_181700-11:localhost:8800 /c+__anon__-20191002_181700-11:localhost:8800 /c+__anon__-20191002_181700-10:localhost:8800 .a+__anon__-20191002_181700-9:localhost:8800 .a+__anon__-20191002_181700-8:localhost:8800 .a+__anon__-20191002_181700-7:localhost:8800.a+__anon__-20191002_181700-6:localhost:8800.a+__anon__-20191002_181700-5:localhost:8800.a+__anon__-20191002_181700-4:localhost:8800.a+__anon__-20191002_181700-3:localhost:8800.a+__anon__-20191002_181700-2:localhost:8800.a+__anon__-20191002_181700-1:localhost:8800-a +__anon__-20191002_181700-0:localhost:88004 ffK]=@anon-20191002_181700-817:localhost:8829anon-20191002_181700-817mͽK]=@anon-20191002_181700-776:localhost:8829anon-20191002_181700-776m ,]@anon-20191002_181700-817:localhost:8829+] @anon-20191002_181700-776:localhost:8829  mͽ  m =![sytesta_push_key@anon-20191002_181700-55:localhost:8800=![sytesta_push_key@anon-20191002_181700-54:localhost:8800   +_Hk1 C H \ ! p 5 s 'Cp$GG _7+c +__anon__-20191002_181700-42:localhost:8800open9*c +__anon__-20191002_181700-41:localhost:8800invite7)c +__anon__-20191002_181700-40:localhost:8800open9(c +__anon__-20191002_181700-39:localhost:8800invite9'c +__anon__-20191002_181700-38:localhost:8800invite9&c +__anon__-20191002_181700-37:localhost:8800inviteC%c! +__anon__-20191002_181700-36:localhost:8800Test GroupinviteC$c! +__anon__-20191002_181700-35:localhost:8800Test GroupinviteC#c! +__anon__-20191002_181700-34:localhost:8800Test GroupinviteJ"c/ +__anon__-20191002_181700-33:localhost:8800Testing summariesinviteJ!c/ +__anon__-20191002_181700-32:localhost:8800Testing summariesinviteJ c/ +__anon__-20191002_181700-31:localhost:8800Testing summariesinvite9c +__anon__-20191002_181700-30:localhost:8800inviteJc/ +__anon__-20191002_181700-29:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-28:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-27:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-26:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-25:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-24:localhost:8800Testing summariesinviteJc/ +__anon__-20191002_181700-23:localhost:8800Testing summariesinvite9c +__anon__-20191002_181700-22:localhost:8800invite9c +__anon__-20191002_181700-21:localhost:8800invite9c +__anon__-20191002_181700-20:localhost:8800invite9c +__anon__-20191002_181700-19:localhost:8800invite9c +__anon__-20191002_181700-18:localhost:8800invite9c +__anon__-20191002_181700-17:localhost:8800invite9c +__anon__-20191002_181700-16:localhost:8800invite9c +__anon__-20191002_181700-15:localhost:8800invite9c +__anon__-20191002_181700-14:localhost:8800invite9c +__anon__-20191002_181700-13:localhost:8800invite9 c +__anon__-20191002_181700-12:localhost:8800invite9 c +__anon__-20191002_181700-11:localhost:8800inviteJ c/ +__anon__-20191002_181700-10:localhost:8800Testing summariesinvite8 a +__anon__-20191002_181700-9:localhost:8800invite8 a +__anon__-20191002_181700-8:localhost:8800invite a%?OQ +__anon__-20191002_181700-7:localhost:8800Random Groupmxc://example.org/fooooooA random topic for a random groupA longer desc for a random groupinviteIa/ +__anon__-20191002_181700-6:localhost:8800Testing summariesinvite8a +__anon__-20191002_181700-5:localhost:8800invite8a +__anon__-20191002_181700-4:localhost:8800invite a%?OQ +__anon__-20191002_181700-3:localhost:8800Random Groupmxc://example.org/fooooooA random topic for a random groupA longer desc for a random groupinvite8a +__anon__-20191002_181700-2:localhost:8800invite8a +__anon__-20191002_181700-1:localhost:8800inviteBa! +__anon__-20191002_181700-0:localhost:8800Test Groupinvite + k ; { K  [ + kt ; { K E[+Z+/c+__anon__-20191002_181700-42:localhost:8800+/c+__anon__-20191002_181700-41:localhost:8800*/c+__anon__-20191002_181700-40:localhost:8800)/c+__anon__-20191002_181700-39:localhost:8800(/c+__anon__-20191002_181700-38:localhost:8800'/c+__anon__-20191002_181700-37:localhost:8800&/c+__anon__-20191002_181700-36:localhost:8800%/c+__anon__-20191002_181700-35:localhost:8800$/c+__anon__-20191002_181700-34:localhost:8800#/c+__anon__-20191002_181700-33:localhost:8800"/c+__anon__-20191002_181700-32:localhost:8800!/c+__anon__-20191002_181700-31:localhost:8800 /c+__anon__-20191002_181700-30:localhost:8800/c+__anon__-20191002_181700-29:localhost:8800/c+__anon__-20191002_181700-28:localhost:8800/c+__anon__-20191002_181700-27:localhost:8800/c+__anon__-20191002_181700-26:localhost:8800/c+__anon__-20191002_181700-25:localhost:8800/c+__anon__-20191002_181700-24:localhost:8800/c+__anon__-20191002_181700-23:localhost:8800/c+__anon__-20191002_181700-22:localhost:8800/c+__anon__-20191002_181700-21:localhost:8800/c+__anon__-20191002_181700-20:localhost:8800/c+__anon__-20191002_181700-19:localhost:8800/c+__anon__-20191002_181700-18:localhost:8800/c+__anon__-20191002_181700-17:localhost:8800/c+__anon__-20191002_181700-16:localhost:8800/c+__anon__-20191002_181700-15:localhost:8800/c+__anon__-20191002_181700-14:localhost:8800/c+__anon__-20191002_181700-13:localhost:8800/c+__anon__-20191002_181700-12:localhost:8800 /c+__anon__-20191002_181700-11:localhost:8800 /c+__anon__-20191002_181700-10:localhost:8800 .a+__anon__-20191002_181700-9:localhost:8800 .a+__anon__-20191002_181700-8:localhost:8800 .a+__anon__-20191002_181700-7:localhost:8800.a+__anon__-20191002_181700-6:localhost:8800.a+__anon__-20191002_181700-5:localhost:8800.a+__anon__-20191002_181700-4:localhost:8800.a+__anon__-20191002_181700-3:localhost:8800.a+__anon__-20191002_181700-2:localhost:8800.a+__anon__-20191002_181700-1:localhost:8800-a +__anon__-20191002_181700-0:localhost:8800 tЄ; TN  ] /xȁN"g6@rk9@-]@anon-20191002_181700-728:localhost:8800U-]@anon-20191002_181700-319:localhost:8800j-]@anon-20191002_181700-242:localhost:8800i,]@anon-20191002_181700-152:localhost:8800X -]@anon-20191002_181700-542:localhost:8829 -]@anon-20191002_181700-448:localhost:8800YN-]@anon-20191002_181700-360:localhost:8800/ x-]@anon-20191002_181700-654:localhost:8800   , #ix V f  % , "[< yAA{tableevent_push_actions_stagingevent_push_actions_stagingCREATE TABLE event_push_actions_staging ( event_id TEXT NOT NULL, user_id TEXT NOT NULL, actions TEXT NOT NULL, notif SMALLINT NOT NULL, highlight SMALLINT NOT NULL , unread SMALLINT)v%99tablee2e_room_keys_versionse2e_room_keys_versions0CREATE TABLE "e2e_room_keys_versions" ( user_id TEXT NOT NULL, version BIGINT NOT NULL, algorithm TEXT NOT NULL, auth_data TEXT NOT NULL, deleted SMALLINT DEFAULT 0 NOT NULL , etag BIGINT)O!qindexgroups_idxgroupsCREATE UNIQUE INDEX groups_idx ON groups(group_id)Z tablegroupsgroupsCREATE TABLE "groups" ( group_id TEXT NOT NULL, name TEXT, avatar_url TEXT, short_description TEXT, long_description TEXT, is_public BOOL NOT NULL , join_policy TEXT NOT NULL DEFAULT 'invite')'''Ktablee2e_room_keyse2e_room_keys2CREATE TABLE "e2e_room_keys" ( user_id TEXT NOT NULL, room_id TEXT NOT NULL, session_id TEXT NOT NULL, version BIGINT NOT NULL, first_message_index INT, forwarded_count INT, is_verified BOOLEAN, session_data TEXT NOT NULL )&A9Aindexe2e_room_keys_versions_idxe2e_room_keys_versions1CREATE UNIQUE INDEX e2e_room_keys_versions_idx ON e2e_room_keys_versions(user_id, version)$K5+indexmonthly_active_users_time_stampmonthly_active_users/CREATE INDEX monthly_active_users_time_stamp ON monthly_active_users(timestamp) #A5+indexmonthly_active_users_usersmonthly_active_users.CREATE UNIQUE INDEX monthly_active_users_users ON monthly_active_users(user_id) "559tablemonthly_active_usersmonthly_active_users-CREATE TABLE monthly_active_users ( user_id TEXT NOT NULL, timestamp BIGINT NOT NULL )i!/% indexerased_users_usererased_users,CREATE UNIQUE INDEX erased_users_user ON erased_users(user_id)X %%stableerased_userserased_users+CREATE TABLE erased_users ( user_id TEXT NOT NULL )|=/indexuser_daily_visits_ts_idxuser_daily_visits*CREATE INDEX user_daily_visits_ts_idx ON user_daily_visits(timestamp)?/+indexuser_daily_visits_uts_idxuser_daily_visits)CREATE INDEX user_daily_visits_uts_idx ON user_daily_visits(user_id, timestamp)//Stableuser_daily_visitsuser_daily_visits(CREATE TABLE user_daily_visits ( user_id TEXT NOT NULL, device_id TEXT, timestamp BIGINT NOT NULL )_/#yindexgroup_rooms_r_idxgroup_rooms'CREATE INDEX group_rooms_r_idx ON group_rooms(room_id)q/#indexgroup_rooms_g_idxgroup_rooms&CREATE UNIQUE INDEX group_rooms_g_idx ON group_rooms(group_id, room_id)h3'indexgroup_invites_u_idxgroup_invites%CREATE INDEX group_invites_u_idx ON group_invites(user_id)_/#yindexgroup_users_u_idxgroup_users$CREATE INDEX group_users_u_idx ON group_users(user_id)q/#indexgroup_users_g_idxgroup_users#CREATE UNIQUE INDEX group_users_g_idx ON group_users(group_id, user_id)y3'#indexgroup_invites_g_idxgroup_invites"CREATE UNIQUE INDEX group_invites_g_idx ON group_invites(group_id, user_id)AAtableusers_pending_deactivationusers_pending_deactivation CREATE TABLE users_pending_deactivation ( user_id TEXT NOT NULL )GA1indexevent_push_actions_staging_idevent_push_actions_stagingCREATE INDEX event_push_actions_staging_id ON event_push_actions_staging(event_id)y;)indexuser_directory_user_idxuser_directoryCREATE UNIQUE INDEX user_directory_user_idx ON user_directory(user_id)r;) indexuser_directory_room_idxuser_directoryCREATE INDEX user_directory_room_idx ON user_directory(room_id)))_tableuser_directoryuser_directoryCREATE TABLE "user_directory" ( user_id TEXT NOT NULL, room_id TEXT, display_name TEXT, avatar_url TEXT ) OYWc] +__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800Xc]+__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800 3 zM l? ^ 1  } P # o B  a 4  S &rEd7 ,]@anon-20191002_181700-824:localhost:88293,]@anon-20191002_181700-823:localhost:88002,]@anon-20191002_181700-821:localhost:88001,]@anon-20191002_181700-820:localhost:88000,]@anon-20191002_181700-819:localhost:8800/,]@anon-20191002_181700-818:localhost:8800.,]@anon-20191002_181700-817:localhost:8829-,]@anon-20191002_181700-816:localhost:8800,,]@anon-20191002_181700-815:localhost:8800+,]@anon-20191002_181700-814:localhost:8800*,]@anon-20191002_181700-813:localhost:8800),]@anon-20191002_181700-812:localhost:8800(,]@anon-20191002_181700-811:localhost:8800',]@anon-20191002_181700-809:localhost:8800&,]@anon-20191002_181700-807:localhost:8800%,]@anon-20191002_181700-805:localhost:8800$,]@anon-20191002_181700-803:localhost:8800#,]@anon-20191002_181700-802:localhost:8800",]@anon-20191002_181700-801:localhost:8800!,]@anon-20191002_181700-799:localhost:8800 ,]@anon-20191002_181700-797:localhost:8800,]@anon-20191002_181700-795:localhost:8800,]@anon-20191002_181700-793:localhost:8800,]@anon-20191002_181700-791:localhost:8800,]@anon-20191002_181700-789:localhost:8800,]@anon-20191002_181700-787:localhost:8800,]@anon-20191002_181700-786:localhost:8800,]@anon-20191002_181700-785:localhost:8800,]@anon-20191002_181700-784:localhost:8800,]@anon-20191002_181700-783:localhost:8800,]@anon-20191002_181700-782:localhost:8800,]@anon-20191002_181700-781:localhost:8800,]@anon-20191002_181700-779:localhost:8800,]@anon-20191002_181700-777:localhost:8800,]@anon-20191002_181700-776:localhost:8829,]@anon-20191002_181700-775:localhost:8800,]@anon-20191002_181700-773:localhost:8800,]@anon-20191002_181700-771:localhost:8800,]@anon-20191002_181700-770:localhost:8800 ,]@anon-20191002_181700-769:localhost:8800 ,]@anon-20191002_181700-768:localhost:8800 ,]@anon-20191002_181700-767:localhost:8800 ,]@anon-20191002_181700-766:localhost:8800 ,]@anon-20191002_181700-764:localhost:8800,]@anon-20191002_181700-763:localhost:8800,]@anon-20191002_181700-762:localhost:8800,]@anon-20191002_181700-761:localhost:8800,]@anon-20191002_181700-759:localhost:8800,]@anon-20191002_181700-758:localhost:8800,]@anon-20191002_181700-757:localhost:8800+] @anon-20191002_181700-756:localhost:8800 -+] @anon-20191002_181700-810:localhost:8800  d k  ]RcQ+__anon__-20191002_181700-28:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800 RcQ+__anon__-20191002_181700-27:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800 RcQ+__anon__-20191002_181700-26:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800RcQ+__anon__-20191002_181700-25:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800RcQ+__anon__-20191002_181700-25:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800RcQ+__anon__-20191002_181700-24:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800RcQ+__anon__-20191002_181700-23:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800RcQ+__anon__-20191002_181700-10:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800QaQ+__anon__-20191002_181700-6:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800PaQ +__anon__-20191002_181700-1:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800 {{>e&Q!ELBgBaMSIMNkjFSumH:localhost:8800 &Q!CKNftKKCaOCVUyYWNY:localhost:8800 &Q!cvXpMzcxNNhsNttxvt:localhost:8800&Q!jlGSdNttccYxjfLkwW:localhost:8800&Q!ZNIjCvcWhgcwskanjT:localhost:8800&Q!NJdkYMskQwIpIWlWkn:localhost:8800&Q!jGQNGXehugtTvjUGKI:localhost:8800&Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!pTvdDtkgovsIdAdxCm:localhost:8800%Q !hNCwypIzdDZDVmCEfd:localhost:8800 sc5 4w ˃8 }zՂ<́~@A Uq8 4]@anon-20191002_181700-701:localhost:8800m4ja4]@anon-20191002_181700-648:localhost:8800m47 34]@anon-20191002_181700-584:localhost:8800m4 4]@anon-20191002_181700-512:localhost:8800m4 -4]@anon-20191002_181700-430:localhost:8800m44]@anon-20191002_181700-366:localhost:8800m4I4]@anon-20191002_181700-302:localhost:8800m4 4]@anon-20191002_181700-238:localhost:8800m44]@anon-20191002_181700-173:localhost:8800m4 / m4 . m4 *]@anon-20191002_181700-636:localhost:8800*]@anon-20191002_181700-267:localhost:8800 ,]@anon-20191002_181700-636:localhost:8800+] @anon-20191002_181700-267:localhost:8800    SZ a  h  o  v # } *Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q ]1-@anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1-@anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1-@anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1- @anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q ]1- @anon-20191002_181700-560:localhost:8800 m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Q]1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"Y]1=@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"adifferentopaquestring"P] 1-@anon-20191002_181700-560:localhost:8800m.megolm_backup.v1"anopaquestring"  uF[, p A  V ' .]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800 .]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800.]@anon-20191002_181700-560:localhost:8800,] @anon-20191002_181700-560:localhost:8800  ` SQ ]7@anon-20191002_181700-560:localhost:8800!abcd1234"anotheropaquestring"P ] 7@anon-20191002_181700-560:localhost:8800!abcd1234"anotheropaquestring"L ]-@anon-20191002_181700-560:localhost:8800!abcd1234"anopaquestring"  l$ 4 D T d t ,<L\lv]]Q@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800v]]Q@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800v]]Q@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800v]]Q@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800v]]Q@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800v]]Q@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800v]]Q@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800v]]Q@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800v]]Q@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800v]]Q@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800v]]Q@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800v]]Q@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800v]]Q@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800v]]Q@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800v]]Q@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800v]]Q@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800v ]]Q@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800v ]]Q@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800v ]]Q@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:8800v ]]Q@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800v ]]Q@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800v]]Q@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800v]]Q@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800v]]Q@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800v]]Q@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800v]]Q@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800v]]Q@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800t[[Q@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800t[[Q@anon-20191002_181700-87:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800 P! / = K Y gu &4BPx]]Q@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800x]]Q@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800x]]Q@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800x]]Q@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800x]]Q@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800x]]Q@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800x]]Q@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800x]]Q@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800x]]Q@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800x]]Q@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800x]]Q@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800x]]Q@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800x]]Q@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800x]]Q@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800x]]Q@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800x]]Q@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800x]]Q@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800 x]]Q@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800 x]]Q@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:8800 x]]Q@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800 x]]Q@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800 x]]Q@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800x]]Q@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800x]]Q@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800x]]Q@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800x]]Q@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800x]]Q@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800v[[Q@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800u[[Q @anon-20191002_181700-87:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800  j->  T Y 2e  { C &Q!sBcwyPoXKgnSGVTjNR:localhost:8800&Q!sBcwyPoXKgnSGVTjNR:localhost:8800&Q!LFBhoxJpmBqFrwEzGP:localhost:8800&Q!LFBhoxJpmBqFrwEzGP:localhost:8800&Q!URpLZLuBfVcfHVTBGS:localhost:8800&Q!URpLZLuBfVcfHVTBGS:localhost:8800&Q!NcJYmIbgjsaKJOzBcs:localhost:8800&Q!NcJYmIbgjsaKJOzBcs:localhost:8800&Q!aiOswwhoZqjhcjzbzc:localhost:8800&Q!aiOswwhoZqjhcjzbzc:localhost:8800&Q!yWhIsLsgNVGcnELrDS:localhost:8800&Q!yWhIsLsgNVGcnELrDS:localhost:8800&Q!CSqENqzAezaZnGktbE:localhost:8800&Q!RDEAXrqXQizuhCUFPq:localhost:8800&Q!RDEAXrqXQizuhCUFPq:localhost:8800&Q!rpVYLTJGcFNdGzFzXj:localhost:8800&Q!DelfBAGvCrTXgNxmNV:localhost:8800 &Q!DelfBAGvCrTXgNxmNV:localhost:8800 &Q!RSLvuCuAqKQQrKCxNq:localhost:8800 &Q!uqIEMXzdeNeXdJmuwh:localhost:8800 &Q!uqIEMXzdeNeXdJmuwh:localhost:8800 &Q!PcvmCDeVUSyJbXpTig:localhost:8800&Q!FbJSiQoZtZkaFwzzQq:localhost:8800&Q!FbJSiQoZtZkaFwzzQq:localhost:8800&Q!GSxvxNevpCiwmFCHys:localhost:8800&Q!XnUZiYJDWVNGfsBnGz:localhost:8800&Q!XnUZiYJDWVNGfsBnGz:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:8800%Q !duCKuavMBSfRbTFPsc:localhost:8800  O|"An 3 `   R % D q ,]@anon-20191002_181700-754:localhost:8800,]@anon-20191002_181700-755:localhost:8800,]@anon-20191002_181700-750:localhost:8800,]@anon-20191002_181700-751:localhost:8800,]@anon-20191002_181700-747:localhost:8800,]@anon-20191002_181700-746:localhost:8800,]@anon-20191002_181700-726:localhost:8800,]@anon-20191002_181700-727:localhost:8800,]@anon-20191002_181700-719:localhost:8800,]@anon-20191002_181700-718:localhost:8800,]@anon-20191002_181700-710:localhost:8800,]@anon-20191002_181700-711:localhost:8800,]@anon-20191002_181700-513:localhost:8829,]@anon-20191002_181700-508:localhost:8800,]@anon-20191002_181700-509:localhost:8800,]@anon-20191002_181700-498:localhost:8829,]@anon-20191002_181700-494:localhost:8800 ,]@anon-20191002_181700-493:localhost:8800 ,]@anon-20191002_181700-483:localhost:8829 ,]@anon-20191002_181700-478:localhost:8800 ,]@anon-20191002_181700-479:localhost:8800 ,]@anon-20191002_181700-468:localhost:8829,]@anon-20191002_181700-463:localhost:8800,]@anon-20191002_181700-464:localhost:8800,]@anon-20191002_181700-453:localhost:8829,]@anon-20191002_181700-448:localhost:8800,]@anon-20191002_181700-449:localhost:8800+[@anon-20191002_181700-87:localhost:8800*[ @anon-20191002_181700-86:localhost:8800 @a]]-C@anon-20191002_181700-825:localhost:8800emailbob1@example.comlocalhost.localdomain:40269 ?b^]-C @anon-20191002_181700-825:localhost:8800emailbob1@example.comlocalhost.localdomain:40269 <q  O o mAitFZ. =}GC35indexdevice_lists_stream_user_iddevice_lists_streamTCREATE INDEX device_lists_stream_user_id ON device_lists_stream (user_id, device_id)FI%-indexdevice_inbox_stream_id_user_iddevice_inboxRCREATE INDEX device_inbox_stream_id_user_id ON device_inbox (stream_id, user_id)EO51indexcurrent_state_events_member_indexcurrent_state_eventsQCREATE INDEX current_state_events_member_index ON current_state_events (state_key)CDS1 indexevent_push_actions_highlights_indexevent_push_actionsPCREATE INDEX event_push_actions_highlights_index ON event_push_actions (user_id, room_id, topological_ordering, stream_ordering)CI1Eindexevent_push_actions_u_highlightevent_push_actionsOCREATE INDEX event_push_actions_u_highlight ON event_push_actions (user_id, stream_ordering) B=Mindexevent_contains_url_indexeventsNCREATE INDEX event_contains_url_index ON events (room_id, topological_ordering, stream_ordering)sA1#indexuser_ips_device_iduser_ipsMCREATE INDEX user_ips_device_id ON user_ips (user_id, device_id, last_seen)|@;'!indexaccess_tokens_device_idaccess_tokensLCREATE INDEX access_tokens_device_id ON access_tokens (user_id, device_id)?G?;indexroom_stats_earliest_token_idxroom_stats_earliest_tokenKCREATE UNIQUE INDEX room_stats_earliest_token_idx ON room_stats_earliest_token(room_id)>??;tableroom_stats_earliest_tokenroom_stats_earliest_tokenJCREATE TABLE room_stats_earliest_token ( room_id TEXT NOT NULL, token BIGINT NOT NULL )5;+Yindexevent_relations_relatesevent_relationsACREATE INDEX event_relations_relates ON event_relations(relates_to_id, relation_type, aggregation_key)r41+indexevent_relations_idevent_relations@CREATE UNIQUE INDEX event_relations_id ON event_relations(event_id)33++tableevent_relationsevent_relations?CREATE TABLE event_relations ( event_id TEXT NOT NULL, relates_to_id TEXT NOT NULL, relation_type TEXT NOT NULL, aggregation_key TEXT )@2S-indexsqlite_autoindex_account_validity_1account_validity>;1--'tableaccount_validityaccount_validity=CREATE TABLE account_validity ( user_id TEXT PRIMARY KEY, expiration_ts_ms BIGINT NOT NULL, email_sent BOOLEAN NOT NULL, renewal_token TEXT )0C7Aindexusers_in_public_rooms_u_idxusers_in_public_roomsG wp'oWC*BX m?6l9 m<.Q!wBBQYEPjQGnoAzDpEu:localhost:8800m{:.Q!sfXbvAcOUJhzGwWEpZ:localhost:8800thQ8.Q!nvclDopiBLEOKBIheH:localhost:8800th- K.Q!aknLNLxfChlLvFYhkJ:localhost:8800m .Q!XGAmnfaVvjDtQJuufa:localhost:8800th.Q!SUDzkfFBgpuCANOxRS:localhost:8800tho.Q!ITdmSQpjMnaPoHIbws:localhost:8800th!i1.Q!NeYaCeYNFATCqlrlGT:localhost:8800thI.Q!EABRjdYuYumMhLSwIa:localhost:8800th1@.Q!jGQNGXehugtTvjUGKI:localhost:8800m4.Q!eWRdwtyqHvuxZFvhNS:localhost:8800th>6 th th m   &I U a &f6[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOjy8]!@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA 8]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGUo 8]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ7 8]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN 8]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJQ8]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGPV8]!@anon-20191002_181700-276:localhost:8800PBSDTTCZKK8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV y5i% Y  z?]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOSm?]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOBmzd=[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIm.;J?]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGIm,7` ?]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLMm, |?]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmۦ ^?]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPHmb?]!@anon-20191002_181700-414:localhost:8800JOACLHYIFXmr?]!@anon-20191002_181700-360:localhost:8800XKNFVZJCREmňd?]!@anon-20191002_181700-306:localhost:8800XZDIPYWWODm1t?]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJm{?]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVWm߄>]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSSmIr .H u n n  1 W H   =x2  V H % &md y y b = < >,Q!fDISaqNBhlOwherxSt:localhost:8800 | | ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 <,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 k,Q!QnmLrBAxeItdHsaxWf:localhost:8800 h h,Q!SBEprlZiuliFNSfNmz:localhost:8800ooB,Q!EfJcWhdjNARbuHYrqU:localhost:8800]]s+Q !VAEDgDJVqmxXZyAlSW:localhost:8800I,Q!YQATbgbLImCDamiDHC:localhost:8800J,Q!cHtqiAyCHEAoBIbCmL:localhost:8800EE 5+Q !WhLedNwPGGGTtqeqam:localhost:8800 L3+Q !mfzIRinBAGGrZvQAuI:localhost:8800+Q !lEJUJZxqZPKZetemiR:localhost:8800 - - +Q !XIqmzIFbkHGQPIpywk:localhost:8800SS,Q!TlJCaYlCkOOVzFDlLx:localhost:8800kk,Q!jIfvTrwedrWLubsnlM:localhost:8800n,Q!KIHYKMzkRDrJwiywwz:localhost:8800 / / /+Q !ZaOktTIVeRgBXxfubH:localhost:8800+Q !BrssELMbasSzTFpIXm:localhost:8800JJ,Q!PQZMTVTeCYqMZwkHvW:localhost:8800 ,Q!NPdjmIfsBVIIkvWBzD:localhost:8800aaN,Q!pduebXnTyxQWVxEICp:localhost:8800 . .),Q!nvclDopiBLEOKBIheH:localhost:8800CC w,Q!tkajvIKHoOMWGsReBs:localhost:8800 ,Q!rQeYcODvQiLsOIbQrJ:localhost:8800// 3,Q!vyCFfUTJKYJSDadFhT:localhost:8800\\,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 0?,Q!aWvVRVaDflYyyGTOdD:localhost:8800 J/,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!NhWgOTYzEPRwAxRQvS:localhost:8800ss *Q!zhCsYcaweVFJLLNwBz:localhost:8800// \,Q!hnQOBexFYpvJntEChZ:localhost:8800r,Q!hFwigdYZkwYNSwelRH:localhost:8800 S S ,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800E,Q!DnUHoxreGexNmjSVpq:localhost:8800PP+Q !HAFNBarGuVZuWCgwWM:localhost:8800(( +Q !HmkcAMkMjWRhTDJMsy:localhost:8800\\. ,Q!SrMQpDMFREKRMELwbL:localhost:88000,Q!azRJNFPIRSFAskLILK:localhost:8800$,Q!LFBhoxJpmBqFrwEzGP:localhost:8800i,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a a ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 & &},Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z Z,Q!bOSxzttDtclnrWnLov:localhost:8800cc1   e vh  rD 3 -]@anon-20191002_181700-102:localhost:8800$ -]@anon-20191002_181700-716:localhost:8800 9(C  ,[@anon-20191002_181700-95:localhost:8800-]@anon-20191002_181700-151:localhost:88009 X -]@anon-20191002_181700-522:localhost:8829H:/  -]@anon-20191002_181700-446:localhost:8800>:+[@anon-20191002_181700-36:localhost:8800m-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-300:localhost:8800 V-]@anon-20191002_181700-628:localhost:8800  0 C-]@anon-20191002_181700-234:localhost:8800 Et+ Z.]@anon-20191002_181700-596:localhost:8800.]@anon-20191002_181700-596:localhost:8800 .]@anon-20191002_181700-597:localhost:8800.] @anon-20191002_181700-595:localhost:8800 .]@anon-20191002_181700-598:localhost:8800.] @anon-20191002_181700-593:localhost:8800.]@anon-20191002_181700-589:localhost:8800.]@anon-20191002_181700-588:localhost:8800.]@anon-20191002_181700-590:localhost:8800.]@anon-20191002_181700-587:localhost:8800-] @anon-20191002_181700-586:localhost:8800 h6 M cKOx+ RTe?indexsqlite_autoindex_threepid_validation_token_1threepid_validation_tokenaQCC!tablethr ^E7#indexroom_stats_historical_end_tsroom_stats_historicalICREATE INDEX room_stats_historical_end_ts ON room_stats_historical (end_ts)J]]7indexsqlite_autoindex_room_stats_historical_1room_stats_historicalHS\77Ctableroom_stats_historicalroom_stats_historicalFCREATE TABLE room_stats_historical ( room_id TEXT NOT NULL, end_ts BIGINT NOT NULL, bucket_size BIGINT NOT NULL, current_state_events BIGINT NOT NULL, joined_members BIGINT NOT NULL, invited_members BIGINT NOT NULL, left_members BIGINT NOT NULL, banned_members BIGINT NOT NULL, local_users_in_room BIGINT NOT NULL, total_events BIGINT NOT NULL, total_event_bytes BIGINT NOT NULL, PRIMARY KEY (room_id, end_ts) )D[W1indexsqlite_autoindex_room_stats_current_1room_stats_currentEZZ11]tableroom_stats_currentroom_stats_currentDCREATE TABLE room_stats_current ( room_id TEXT NOT NULL PRIMARY KEY, current_state_events INT NOT NULL, joined_members INT NOT NULL, invited_members INT NOT NULL, left_members INT NOT NULL, banned_members INT NOT NULL, local_users_in_room INT NOT NULL, completed_delta_stream_id BIGINT NOT NULL )TYgAindexsqlite_autoindex_stats_incremental_position_1stats_incremental_positionCDXAAtablestats_incremental_positionstats_incremental_positionBCREATE TABLE stats_incremental_position ( Lock CHAR(1) NOT NULL DEFAULT 'X' UNIQUE, stream_id BIGINT NOT NULL, CHECK (Lock='X') )#VI'aindexe2e_room_keys_with_version_idxe2e_room_keyscCREATE UNIQUE INDEX e2e_room_keys_with_version_idx ON e2e_room_keys(user_id, version, room_id, session_id)%UU?Aindexthreepid_validation_token_session_idthreepid_validation_tokenbCREATE INDEX threepid_validation_token_session_id ON threepid_validation_token(session_id)RTe?indexsqlite_autoindex_threepid_validation_token_1threepid_validation_tokenaDS??tablethreepid_validation_tokenthreepid_validation_token`CREATE TABLE threepid_validation_token ( token TEXT PRIMARY KEY, session_id TEXT NOT NULL, next_link TEXT, expires BIGINT NOT NULL )VRiCindexsqlite_autoindex_threepid_validation_session_1threepid_validation_session_QCC!tablethreepid_validation_sessionthreepid_validation_session^CREATE TABLE threepid_validation_session ( session_id TEXT PRIMARY KEY, medium TEXT NOT NULL, address TEXT NOT NULL, client_secret TEXT NOT NULL, last_send_attempt BIGINT NOT NULL, validated_at BIGINT )PSKindexuser_ips_user_token_ip_unique_indexuser_ips]CREATE UNIQUE INDEX user_ips_user_token_ip_unique_index ON user_ips (user_id, access_token, ip)BOaKcindexdevice_lists_remote_extremeties_unique_idxdevice_lists_remote_extremeties\CREATE UNIQUE INDEX device_lists_remote_extremeties_unique_idx ON device_lists_remote_extremeties (user_id)NC1Eindexstate_groups_state_type_idxstate_groups_state[CREATE INDEX state_groups_state_type_idx ON state_groups_state(state_group, type, state_key)3MS?_indexdevice_lists_remote_cache_unique_iddevice_lists_remote_cacheZCREATE UNIQUE INDEX device_lists_remote_cache_unique_id ON device_lists_remote_cache (user_id, device_id)LI71indexevent_to_state_groups_sg_indexevent_to_state_groupsYCREATE INDEX event_to_state_groups_sg_index ON event_to_state_groups (state_group)XK/windexusers_creation_tsusersXCREATE INDEX users_creation_ts ON users (creation_ts)iJ;indexuser_ips_last_seen_onlyuser_ipsWCREATE INDEX user_ips_last_seen_only ON user_ips (last_seen)hI1 indexuser_ips_last_seenuser_ipsVCREATE INDEX user_ips_last_seen ON user_ips (user_id, last_seen)HI91indexlocal_media_repository_url_idxlocal_media_repositoryUCREATE INDEX local_media_repository_url_idx ON local_media_repository (created_ts) &I U c &8]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRW88]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNYT8]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK 78]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTX p6[!@anon-20191002_181700-56:localhost:8800UWHMGOHJLQ^ \8]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZk8]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAw8]!@anon-20191002_181700-261:localhost:8800HLJRYNNHWE=5Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF 8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT }} m me m m m m1 m戚 m' m m惓 m|  m%L yY u< |2[@anon-20191002_181700-77:localhost:8800m&@4]@anon-20191002_181700-703:localhost:8800m/* 4]@anon-20191002_181700-632:localhost:8800mH 4]@anon-20191002_181700-567:localhost:8800m _4]@anon-20191002_181700-490:localhost:8800m4]@anon-20191002_181700-411:localhost:8800mC4]@anon-20191002_181700-348:localhost:8800mVX4]@anon-20191002_181700-283:localhost:8800mԬ2[@anon-20191002_181700-21:localhost:8800m?z2[@anon-20191002_181700-14:localhost:8800mo MC mԚ B m!  ]  ]   Y * 5  ~ _C Cq@GMcba 'Y0E+@__ANON__-48:localhost:42455CURIOSITY_ROVER1E-@__ANON__-46:localhost:42455random_device_id7]!@anon-20191002_181700-559:localhost:8829ESMCXDKMPQ7]!@anon-20191002_181700-553:localhost:8829UQYOPZHDDU6]! @anon-20191002_181700-540:localhost:8829DTIXBTNGTL& z_>rK* { 8  K  d E ! w @ ! :"?  m.room.history_visibility Y>'] 9m.room.member@anon-20191002_181700-733:localhost:8800 o3  m.room.power_levels //  m.room.join_rules Y2'E bm.room.member@__ANON__-45:localhost:42455 '  .m.room.create 3  m.room.power_levels G2'E m.room.member@__ANON__-20:localhost:42455 =2'E dm.room.member@__ANON__-12:localhost:42455 9  m.room.canonical_alias 1 /  m.room.join_rules u>'] ]m.room.member@anon-20191002_181700-557:localhost:8800 l 3  m.room.power_levels  3 m.room.power_levels / im.room.join_rulesx >']m.room.member@anon-20191002_181700-464:localhost:8800% :>']m.room.member@anon-20191002_181700-443:localhost:8800 "? om.room.history_visibility~ 0>']m.room.member@anon-20191002_181700-381:localhost:8800" 3 m.room.power_levels / mm.room.join_rules|>']m.room.member@anon-20191002_181700-323:localhost:8800 "? m.room.history_visibility/ Qm.room.join_rulesUB3 m.room.power_levels3 m.room.power_levels]"? Em.room.history_visibilityH3 m.room.power_levelso"? m.room.history_visibility"? (m.room.history_visibility*>']m.room.member@anon-20191002_181700-169:localhost:88001>']pm.room.member@anon-20191002_181700-153:localhost:8800r/ $m.room.join_rules&S3 m.room.power_levels' jm.room.createl"? m.room.history_visibility='[m.room.member@anon-20191002_181700-75:localhost:8800/ am.room.join_rulesa  , zM E@__ANON__-48:localhost:42455 E@__ANON__-46:localhost:42455,]@anon-20191002_181700-559:localhost:8829,]@anon-20191002_181700-553:localhost:8829,]@anon-20191002_181700-542:localhost:8829+] @anon-20191002_181700-540:localhost:8829 , X Ԃd]c@anon-20191002_181700-710:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5Ao127.0.0.1 xd]c@anon-20191002_181700-588:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqSGd1d0BsaDFHO3BeaUwKMDAyZnNpZ25hdHVyZSA7uV5hX3vKBnLk0QaC8CYMcssMCkflw8aLsSo3BB2bIwo127.0.0.1!d]c@anon-20191002_181700-429:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7Qo127.0.0.1;d]c@anon-20191002_181700-309:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQo127.0.0.14:d]c@anon-20191002_181700-189:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVidUpNVXhuOGZWLl8zRUcKMDAyZnNpZ25hdHVyZSCXgK_fzAECd6qxDK5bXpGq3bXHnw2u9AkinbzsoF1L7wo127.0.0.1      SS:9]@anon-20191002_181700-560:localhost:8800!abcd12349]@anon-20191002_181700-560:localhost:8800!abcd12348] @anon-20191002_181700-560:localhost:8800!abcd1234  j8p> @-]@anon-20191002_181700-821:localhost:8800&-]@anon-20191002_181700-757:localhost:8800P-]@anon-20191002_181700-681:localhost:8800 v-]@anon-20191002_181700-610:localhost:8800_ -]@anon-20191002_181700-532:localhost:8800-]@anon-20191002_181700-438:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-297:localhost:8800Ou-]@anon-20191002_181700-227:localhost:8800t-]@anon-20191002_181700-155:localhost:8800L ĉM;O z P  &R r zTnVɄXYwNHӁF& oY oy@  b + P  4]@anon-20191002_181700-164:localhost:8800mR3[@anon-20191002_181700-89:localhost:8800m2]@anon-20191002_181700-783:localhost:8800aE 4]@anon-20191002_181700-733:localhost:8800m /Y@anon-20191002_181700-6:localhost:8800a#H4]@anon-20191002_181700-661:localhost:8800m r2]@anon-20191002_181700-626:localhost:8800aM {2]@anon-20191002_181700-580:localhost:8800a {2]@anon-20191002_181700-541:localhost:8800a 2]@anon-20191002_181700-493:localhost:8800a l2]@anon-20191002_181700-447:localhost:8800aOu4]@anon-20191002_181700-412:localhost:8800mO2]@anon-20191002_181700-343:localhost:8800a4]@anon-20191002_181700-303:localhost:8800mE4]@anon-20191002_181700-270:localhost:8800m4]@anon-20191002_181700-238:localhost:8800m4]@anon-20191002_181700-202:localhost:8800m~34]@anon-20191002_181700-120:localhost:8800m"2]@anon-20191002_181700-378:localhost:8800a7 L m 4 mJ aI aB a Ch_Ig t { :. +o4{ ap@_11)tableuser_stats_currentuser_stats_currentGCREATE TABLE user_stats_current ( user_id TEXT NOT NULL PRIMARY KEY, joined_rooms BIGINT NOT NULL, completed_delta_stream_id BIGINT NOT NULL )?l99tablee2e_cross_signing_keyse2e_cross_signing_keys0CREATE TABLE e2e_cross_signing_keys ( user_id TEXT NOT NULL, keytype TEXT NOT NULL, keydata TEXT NOT NULL, stream_id BIGINT NOT NULL ) kC!Cindexredactions_have_censored_tsredactions/CREATE INDEX redactions_have_censored_ts ON redactions(received_ts) WHERE not have_censored/jK;eindexpublic_room_list_stream_networkpublic_room_list_stream.CREATE INDEX public_room_list_stream_network ON public_room_list_stream (appservice_id, network_id, room_id)iU-=indexroom_memberships_user_room_forgottenroom_membershipsnCREATE INDEX room_memberships_user_room_forgotten ON room_memberships (user_id, room_id)hC7!indexusers_in_public_rooms_r_idxusers_in_public_roomsmCREATE INDEX users_in_public_rooms_r_idx ON users_in_public_rooms(room_id)Ef//7tableuser_external_idsuser_external_idskCREATE TABLE user_external_ids ( auth_provider TEXT NOT NULL, external_id TEXT NOT NULL, user_id TEXT NOT NULL, UNIQUE (auth_provider, external_id) )BgU/indexsqlite_autoindex_user_external_ids_1user_external_idslye7-indexroom_stats_state_roomroom_stats_statejCREATE UNIQUE INDEX room_stats_state_room ON room_stats_state(room_id)d--;tableroom_stats_stateroom_stats_stateiCREATE TABLE room_stats_state ( room_id TEXT NOT NULL, name TEXT, canonical_alias TEXT, join_rules TEXT, history_visibility TEXT, encryption TEXT, avatar TEXT, guest_access TEXT, is_federatable BOOLEAN, topic TEXT ) cE7#indexuser_stats_historical_end_tsuser_stats_historicalgCREATE INDEX user_stats_historical_end_ts ON user_stats_historical (end_ts)Jb]7indexsqlite_autoindex_user_stats_historical_1user_stats_historicalfda77etableuser_stats_historicaluser_stats_historicaleCREATE TABLE user_stats_historical ( user_id TEXT NOT NULL, end_ts BIGINT NOT NULL, bucket_size BIGINT NOT NULL, joined_rooms BIGINT NOT NULL, invites_sent BIGINT NOT NULL, rooms_created BIGINT NOT NULL, total_events BIGINT NOT NULL, total_event_bytes BIGINT NOT NULL, PRIMARY KEY (user_id, end_ts) ) s3%Iindexuser_filters_uniqueuser_filtersCREATE UNIQUE INDEX user_filters_unique ON "user_filters" (user_id, filter_id) q?7/indexuser_signature_stream_idxuser_signature_streamCREATE UNIQUE INDEX user_signature_stream_idx ON user_signature_stream(stream_id),p77utableuser_signature_streamuser_signature_streamCREATE TABLE user_signature_stream ( stream_id BIGINT NOT NULL, from_user_id TEXT NOT NULL, user_ids TEXT NOT NULL )unEEmtablee2e_cross_signing_signaturese2e_cross_signing_signatures2CREATE TABLE e2e_cross_signing_signatures ( user_id TEXT NOT NULL, key_id TEXT NOT NULL, target_user_id TEXT NOT NULL, target_device_id TEXT NOT NULL, signature TEXT NOT NULL )"mA9Windexe2e_cross_signing_keys_idxe2e_cross_signing_keys1CREATE UNIQUE INDEX e2e_cross_signing_keys_idx ON e2e_cross_signing_keys(user_id, keytype, stream_id)D`W1indexsqlite_autoindex_user_stats_current_1user_stats_currentdRxt%%1tableevent_expiryevent_expiryCREATE TABLE event_expiry ( event_id TEXT PRIMARY KEY, expiry_ts BIGINT NOT NULL )Nr%%]tableuser_filtersuser_filtersCREATE TABLE "user_filters" ( user_id TEXT NOT NULL, filter_id BIGINT NOT NULL, filter_json BYTEA NOT NULL ) Q (aWXzfy5%}Q'Q!bQDOrbAknnQZfUbhgS:localhost:8800A'Q!TkluVzxeeCbMtbFWWS:localhost:8800 &Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!hDAzBWYEyRVBRlrCHh:localhost:8800+@'Q!JiUawCFQnodcpssOfK:localhost:8800  ZP%|'Q!YgaGPEraeLCqHQirin:localhost:8800+ &Q!eKrOqiOabJcMgIJjwC:localhost:8800A|'Q!HZqzpRgqekPOtxstVc:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800}'Q!PgNDjhhIBAXKryuGKy:localhost:8800"    VX Y  Z  [ ` +P]Q@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800gP]Q@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800< P]Q@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800#N[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800 DEQ@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800 ?P]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800 sP]Q@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800 P]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800^ P]Q@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:88001 .P]Q@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800 OP]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800P]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:88009P]Q@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800OP]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800[P]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800/ZP]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800O]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800p P]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800aP]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800 U ? MQUQ K!K @chrtestuser-93-:localhost:8800HXQEHKTZDRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWLGRPaF92ZVAweXhAUiYKMDAyZnNpZ25hdHVyZSCyrYXuhBO9_ACodbjIlFuTQZFwMNWrU6IKmsYHIP4CMQoQ K!K @chrtestuser-91-:localhost:8800XTTHVJFCAEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkxLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9ZdyYtOGMwTklnVipVd0gKMDAyZnNpZ25hdHVyZSAqN5GeTyba8AtQt_NEvP4UNKXIcDnEfY5NN1vsU8R-EQoQ K!K @chrtestuser-64-:localhost:8800WQBPBXVRIIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTY0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZWO1FrV2t-TUZwOi1jaCoKMDAyZnNpZ25hdHVyZSDf3lQ4TmbmbkIw1M-a6n3wxFY1-Lh_hc6GFc-jFEW9zgoQK!K @chrtestuser-92-:localhost:8800CTWNGYMNFDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkyLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJDOWxhTWhSQCNufixZZ3cKMDAyZnNpZ25hdHVyZSDzLoJ5dpqIz0rBvXCYhlb3v6jEWz4h-04531Su4LsFRgoQK!K@chrtestuser-63-:localhost:8800DYMSSHFRNDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTYzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZETVFWeGlsSk4wblJOK1MKMDAyZnNpZ25hdHVyZSCn-wz9Tw-jjt4rqtaVHG0cFX3N3LpY5b0fOLeXehOZeQoQK!K@chrtestuser-58-:localhost:8800ZSYDIEMYSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTU4LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE52NmlnSy1kcGliXypDT0QKMDAyZnNpZ25hdHVyZSAy-4Mgs_9fC_7RAn96LN_adlNA10THGEv8fPInbQHL2woQK!K@chrtestuser-34-:localhost:8800JUJQTQDDTHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRod0QxZGlpdDA6bWJzUjUKMDAyZnNpZ25hdHVyZSDrxVNrCEJWqcDhcsHLeTxPxDitPxLC8RADDAGnL7LPWwoQK!K@chrtestuser-33-:localhost:8800ZAXVDOYTVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTMzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNpeU1ndWNuS0Q0N1hBWlMKMDAyZnNpZ25hdHVyZSCTD-9sDVpVUjQEBYf7UdI262xzQ-QpX9KIpTmx4UMBzwoGA%=@mycooluser:localhost:8800my_device_idMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQG15Y29vbHVzZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA4Yk9lOnhjO2ViSHktWXN4CjAwMmZzaWduYXR1cmUg2-cAmzT9LeZJSv-M-Cl-bAyyz7lR3q6wAxOrb6Hea5MKEA!=@user-upper:localhost:8800XOXAYMRLKGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQHVzZXItdXBwZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBAOTRvJkorc3U3OU0tOUFxCjAwMmZzaWduYXR1cmUgXpoBeubKg-Ik5ejvtr-psmVM1Oz0XAeT3O1OLE9I7YkKvk!u@01register-user-20191002_181700:localhost:8800KRNGWLGVFNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0MmNpZCB1c2VyX2lkID0gQDAxcmVnaXN0ZXItdXNlci0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBmSmN5T0AsNDBPZjE2IzR3CjAwMmZzaWduYXR1cmUg6amnW3IywB01VF1R8NJ0Ubcg_6jrRzSwysmfG4Z9EWwK : T RF{:>;!5@02login:localhost:8800OFRAEFMMXRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAsOHJ1YS5BS0Nmd0hRb0U7CjAwMmZzaWduYXR1cmUgzHYPunxJpBQiqir5P3VuwZSP0ZXB4j1LIt84JgdC5IMKd[!a@anon-20191002_181700-3a:localhost:8800KUKHFAMCTCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTNhOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmFsVDh1bWx-LkhEc1gwUwowMDJmc2lnbmF0dXJlINPPu22cfvWGUnbYiQp0rRf10U2OEfNRiMwG-qfutW0uCgaY!]@anon-20191002_181700-2:localhost:8800RDNVTAXLBRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBpaS1fKzkqPWtHdy5aMVczCjAwMmZzaWduYXR1cmUg8sQ2n3_x741YAfCyYun7Y2PkhdEyHXFnMOjwIdCuNhEKaY!]@anon-20191002_181700-1:localhost:8800IFSRUEYXNFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA0MzgtWU1vR1E5OjhpN2YtCjAwMmZzaWduYXR1cmUgIrUutjl3SLnqrTGy5LuefdrPdD9qydzxJ4bNNCs6O-AKQK!K@chrtestuser-39-:localhost:8800HQOBQJZUDVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM5LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBkdyt2LjFLRXNnOV9qdj0KMDAyZnNpZ25hdHVyZSCg1SFs7VvheJHXhWvw0soyxHYJz7h7hPCfX8Ct6ONo1QoQK!K@chrtestuser-10-:localhost:8800NPPZGPSUFOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEwLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGswMDl4YUJ-MFA1dC4sMm4KMDAyZnNpZ25hdHVyZSDyZa0gjEpSl2a-3QbLap_Tioclz0PXZZH3KADV9NVjjAoSM!M@chrtestuser-233-:localhost:8800AJJFHKXPHAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTIzMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtOWpWWWE3UVVMaU8xTkxVCjAwMmZzaWduYXR1cmUg-c7saPdHcjDLu8l7co2MAqkFGXisztLd7KEr6nWgIckKSM!M@chrtestuser-163-:localhost:8800FYFIWVYQAGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTE2My06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBwRWdYPVE0eF9HRllGQnI9CjAwMmZzaWduYXR1cmUge0lWfZnSWgtbomr2M2SHV93VNH-fMvhhYItKOnXvgqcKSM!M@chrtestuser-125-:localhost:8800YFYOOHMJPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNS06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBVazJvclRxSDNLYnJBKiwuCjAwMmZzaWduYXR1cmUgucH4RP5KP4QDWImn6lN9O1lV0P0xjlHxHermwF0i8c0KS M!M@chrtestuser-124-:localhost:8800BIQFYVWLZNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNC06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBxcGdTc1p-VHZKeSZ6cEZ2CjAwMmZzaWduYXR1cmUgqnOD7Bup756v5aI5CwmMojZvk4vLUdXDyfy7z2EgxR8KS M!M @chrtestuser-123-:localhost:8800GABZLTWEEJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBrS1M3Ji5PWlVlbGtLdllNCjAwMmZzaWduYXR1cmUgJH_PcBIs07GNF-zrpYgJwEjbPJa4ANT0uxPmE5GlPqwK , , t a M 3l>}MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NWNpZCB1c2VyX2lkID0gQF9hc3Rlc3QtMDFjcmVhdGUtMC0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBkOEdGK2hUQUl5Rzt3Ums6CjAwMmZzaWduYXR1cmUg-CanMzUXVM_nrXBr1DolihUkhdjrHy2fXncXv2KA26IK=MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQHVzZXItdXBwZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBAOTRvJkorc3U3OU0tOUFxCjAwMmZzaWduYXR1cmUgXpoBeubKg-Ik5ejvtr-psmVM1Oz0XAeT3O1OLE9I7YkK=MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZGNpZCB1c2VyX2lkID0gQG15Y29vbHVzZXI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA4Yk9lOnhjO2ViSHktWXN4CjAwMmZzaWduYXR1cmUg2-cAmzT9LeZJSv-M-Cl-bAyyz7lR3q6wAxOrb6Hea5MK9MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCg5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBfQEdaMUg4Q0o6anY3QyY6CjAwMmZzaWduYXR1cmUgiZgl-adzKYYaDaq_1fyQvWaLqv1LWEUfwX8nxHvPuuoK5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQlBpRlFlbzs2OVo0bEJJCjAwMmZzaWduYXR1cmUgwOK3oTNrjX_K4Brn9h2TRy5ZRpuEQ1X-lll2OrUD534K5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAzdERaSEtHXzRqLjs9VUhJCjAwMmZzaWduYXR1cmUgvwD1fT-pOqWMM2XjLxcB4Vhfw2QkPSXmV6fu-bjsElkK5MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAsOHJ1YS5BS0Nmd0hRb0U7CjAwMmZzaWduYXR1cmUgzHYPunxJpBQiqir5P3VuwZSP0ZXB4j1LIt84JgdC5IMK1MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyOGNpZCB1c2VyX2lkID0gQGFkbWluOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZis6ZT1Wc1c5ZDdQeHk2WAowMDJmc2lnbmF0dXJlIHqtTk4Xh7-OYbB6u-Bib0xNU0qc9P4IS6T4-ZrZOs8JCg<%MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6NDg4WTJ5QVRXUGk5QXZKCjAwMmZzaWduYXR1cmUgvLzn0wH0-sfnWpaRwSxJHZ0wtTVPh2Z7w5K2gN3eocoK%MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLLFpYOFVpLlFlZmwydkRyCjAwMmZzaWduYXR1cmUgYEGhRFNs0lRHngvsK-GRpseRLXHAVbnVmtbo3UIfeosKF%MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQ18weU5JbX4xM0JOSGFiCjAwMmZzaWduYXR1cmUg-Dgad0EACYaLWGOwYOoRIRLZToDmnw1csLvpA4s-iYEKG={MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NGNpZCB1c2VyX2lkID0gQGFzdGVzdC0wMWNyZWF0ZS0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg3Vlk5RURBKk5wVUY1fmUKMDAyZnNpZ25hdHVyZSBnfFubw9NgLkbaicepY-N33O3DczkknCqPfyu2xJSnaQo8u MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0MmNpZCB1c2VyX2lkID0gQDAxcmVnaXN0ZXItdXNlci0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBmSmN5T0AsNDBPZjE2IzR3CjAwMmZzaWduYXR1cmUg6amnW3IywB01VF1R8NJ0Ubcg_6jrRzSwysmfG4Z9EWwK    d > Z4/%MMDAxY2xvY2F0aW9uIGx%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTE2My06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBwRWdYPVE0eF9HRllGQnI9CjAwMmZzaWduYXR1cmUge0lWfZnSWgtbomr2M2SHV93VNH-fMvhhYItKOnXvgqcK$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkxLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9ZdyYtOGMwTklnVipVd0gKMDAyZnNpZ25hdHVyZSAqN5GeTyba8AtQt_NEvP4UNKXIcDnEfY5NN1vsU8R-EQo $KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTYzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZETVFWeGlsSk4wblJOK1MKMDAyZnNpZ25hdHVyZSCn-wz9Tw-jjt4rqtaVHG0cFX3N3LpY5b0fOLeXehOZeQo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTY0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZWO1FrV2t-TUZwOi1jaCoKMDAyZnNpZ25hdHVyZSDf3lQ4TmbmbkIw1M-a6n3wxFY1-Lh_hc6GFc-jFEW9zgo $KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTU4LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE52NmlnSy1kcGliXypDT0QKMDAyZnNpZ25hdHVyZSAy-4Mgs_9fC_7RAn96LN_adlNA10THGEv8fPInbQHL2wo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTMzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNpeU1ndWNuS0Q0N1hBWlMKMDAyZnNpZ25hdHVyZSCTD-9sDVpVUjQEBYf7UdI262xzQ-QpX9KIpTmx4UMBzwo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM5LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBkdyt2LjFLRXNnOV9qdj0KMDAyZnNpZ25hdHVyZSCg1SFs7VvheJHXhWvw0soyxHYJz7h7hPCfX8Ct6ONo1Qo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTM0LTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRod0QxZGlpdDA6bWJzUjUKMDAyZnNpZ25hdHVyZSDrxVNrCEJWqcDhcsHLeTxPxDitPxLC8RADDAGnL7LPWwo$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEwLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGswMDl4YUJ-MFA1dC4sMm4KMDAyZnNpZ25hdHVyZSDyZa0gjEpSl2a-3QbLap_Tioclz0PXZZH3KADV9NVjjAo%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTIzMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtOWpWWWE3UVVMaU8xTkxVCjAwMmZzaWduYXR1cmUg-c7saPdHcjDLu8l7co2MAqkFGXisztLd7KEr6nWgIckK%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNS06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBVazJvclRxSDNLYnJBKiwuCjAwMmZzaWduYXR1cmUgucH4RP5KP4QDWImn6lN9O1lV0P0xjlHxHermwF0i8c0K%MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyNC06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBxcGdTc1p-VHZKeSZ6cEZ2CjAwMmZzaWduYXR1cmUgqnOD7Bup756v5aI5CwmMojZvk4vLUdXDyfy7z2EgxR8K %MMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzM2NpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTEyMy06bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBrS1M3Ji5PWlVlbGtLdllNCjAwMmZzaWduYXR1cmUgJH_PcBIs07GNF-zrpYgJwEjbPJa4ANT0uxPmE5GlPqwK < } < 0f<_!Y]"@anon-20191002_181700-8:localhost:8800device_2MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLTXhlQ2QwWGJPQ2F5dmRzCjAwMmZzaWduYXR1cmUgM5dLNbhEha61joEng8Hx_u5bgSK7iHTvXeS_5s-_Hd0Ka Y!]!@anon-20191002_181700-8:localhost:8800EBQTKFPJODMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYKaY!] @anon-20191002_181700-7:localhost:8800FWKDVNUPWXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgKcY%]@anon-20191002_181700-6:localhost:8800login_deviceMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBFUERuKjBHKyMjMytzbFZDCjAwMmZzaWduYXR1cmUgLBoGUEjLVisGr9FV3LHFfZJqPnrzI5lxuWBAOaI6KWQKaY!]@anon-20191002_181700-6:localhost:8800YDTVVUXGOWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAKaY!]@anon-20191002_181700-5:localhost:8800WYYDRNGEZSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwKaY!]@anon-20191002_181700-4:localhost:8800OXDBJBCTVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcKA=!9@spyglass:localhost:8800BUNJZHLDRSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCg>;!5@02login:localhost:8800TUIMTGQXHFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQlBpRlFlbzs2OVo0bEJJCjAwMmZzaWduYXR1cmUgwOK3oTNrjX_K4Brn9h2TRy5ZRpuEQ1X-lll2OrUD534K?;#5@02login:localhost:8800my_super_idMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAzdERaSEtHXzRqLjs9VUhJCjAwMmZzaWduYXR1cmUgvwD1fT-pOqWMM2XjLxcB4Vhfw2QkPSXmV6fu-bjsElkK>;!5@02login:localhost:8800FHCBMHROPDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYWNpZCB1c2VyX2lkID0gQDAybG9naW46bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBfQEdaMUg4Q0o6anY3QyY6CjAwMmZzaWduYXR1cmUgiZgl-adzKYYaDaq_1fyQvWaLqv1LWEUfwX8nxHvPuuoK *Y s D U$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkzLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWLGRPaF92ZVAweXhAUiYKMDAyZnNpZ25hdHVyZSCyrYXuhBO9_ACodbjIlFuTQZFwMNWrU6IKmsYHIP4CMQo -]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA0MzgtWU1vR1E5OjhpN2YtCjAwMmZzaWduYXR1cmUgIrUutjl3SLnqrTGy5LuefdrPdD9qydzxJ4bNNCs6O-AK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBpaS1fKzkqPWtHdy5aMVczCjAwMmZzaWduYXR1cmUg8sQ2n3_x741YAfCyYun7Y2PkhdEyHXFnMOjwIdCuNhEK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBjYnJBan49QD0uTHJJckM4CjAwMmZzaWduYXR1cmUgZvoUJrtPWoPaYaOxmpzbYfNlPo2qKXvZ2cHa2mFkBgwK$-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtWnVHNlFHTnJGSip1O1hDCjAwMmZzaWduYXR1cmUgH0sSwQ71wzINqRanNx9XAgK_lZhq-GL6C1MYNEKwKvkK"-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLTXhlQ2QwWGJPQ2F5dmRzCjAwMmZzaWduYXR1cmUgM5dLNbhEha61joEng8Hx_u5bgSK7iHTvXeS_5s-_Hd0K!-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYK -]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgK-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBFUERuKjBHKyMjMytzbFZDCjAwMmZzaWduYXR1cmUgLBoGUEjLVisGr9FV3LHFfZJqPnrzI5lxuWBAOaI6KWQK  : m 8hd,[!a/@anon-20191002_181700-16:localhost:8800OZMNCFRFTFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3Cgd+[!a.@anon-20191002_181700-15:localhost:8800KLXIHUSAOGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCgf*[%a-@anon-20191002_181700-14:localhost:8800login_deviceMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbnlMLThPZW1EOFRLb3EzZAowMDJmc2lnbmF0dXJlIM7SjvTXKCgyTmaaWkqm5JrVgl3jJctC-s34a8tMqtrxCgd)[!a,@anon-20191002_181700-14:localhost:8800UAGQKBVBOWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCgd([!a*@anon-20191002_181700-12:localhost:8800ATMHTVRQSQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCgd'[!a)@anon-20191002_181700-13:localhost:8800VNBXZAVQZGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVgjPVk5Xm9QZD1kNmRXXwowMDJmc2lnbmF0dXJlIL-VI34WWyPiesTSXrpSLlJQIHTXePfNEs8nM59JpfX3Cgd&[!a'@anon-20191002_181700-11:localhost:8800GGVPWYJLFAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCgd%[!a&@anon-20191002_181700-10:localhost:8800FPVSQGRDQGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2Cgc$Y%]%@anon-20191002_181700-9:localhost:8800login_deviceMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBjYnJBan49QD0uTHJJckM4CjAwMmZzaWduYXR1cmUgZvoUJrtPWoPaYaOxmpzbYfNlPo2qKXvZ2cHa2mFkBgwKa#Y!]$@anon-20191002_181700-9:localhost:8800MGUQLDGKRQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsK_"Y]#@anon-20191002_181700-8:localhost:8800device_1MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBtWnVHNlFHTnJGSip1O1hDCjAwMmZzaWduYXR1cmUgH0sSwQ71wzINqRanNx9XAgK_lZhq-GL6C1MYNEKwKvkK  m < xG1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCg4/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVgjPVk5Xm9QZD1kNmRXXwowMDJmc2lnbmF0dXJlIL-VI34WWyPiesTSXrpSLlJQIHTXePfNEs8nM59JpfX3Cg'/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCg(/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCg&/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2Cg%/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbE86LjU5K0ImSks7YUVtOgowMDJmc2lnbmF0dXJlIKirgGiuZLjz6h_A3nQlvdC5Ef5akvhwtYCDB0r4aRZ1Cg//aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTkwwRzk9VyZOYmt3KnE5LgowMDJmc2lnbmF0dXJlIHrNx3JvH7A75a7LMXd1PJkFMZ0mKX00UA0dYcN1YHZyCg./aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYnNwUXFWLS12dzR-aEJlNQowMDJmc2lnbmF0dXJlIIvFYu5qn5ABIoXhtIWNkEwLMydgKrj6CF0IHDki-iamCg-/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3Cg,/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCg+/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbnlMLThPZW1EOFRLb3EzZAowMDJmc2lnbmF0dXJlIM7SjvTXKCgyTmaaWkqm5JrVgl3jJctC-s34a8tMqtrxCg*/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCg) #.R v  , O q  %BW+AVj~}k@01register-user-20191002_181700:localhost:8800$2b$04$Yp86TgPt1/1nTs0zQNX2f.4oseXM0iAX5s0g8NNSqJukpGrk/pnwS]t# [@anon-20191002_181700-15:localhost:8800$2b$04$S8095.t9JasJHWn0IMWCAeNqj0qX8qsy18iJYgv9oGZo3g/ao/k.6]t" [@anon-20191002_181700-14:localhost:8800$2b$04$TCjHoYpoOHBSjYU/dXKGK.huuT5chfU0vHhxd0lyiTUlZ4Pyf/NCO]t! [@anon-20191002_181700-12:localhost:8800$2b$04$tnUyhVCv9EV8ObguILm3GeFzlrU9n.mCmn5A.Gu/HqnMV.0sUwCI2]t [@anon-20191002_181700-13:localhost:8800$2b$04$FN183HJ78BjkL4Rm19yVr.l8MB57GIwVMMmGPA6IRb5FaTxnB7Mwa]t [@anon-20191002_181700-11:localhost:8800$2b$04$6MbTMOrkD/8iGTkzYFpoge81SNqITZ8zpz1m1TS7g2BhhhlpJ98fO]t [@anon-20191002_181700-10:localhost:8800$2b$04$eT/rAkZ5tU50DTTwTruVXegHnowOc7nTJeF3xxoG7lNGiy0xVIFti]s Y@anon-20191002_181700-9:localhost:8800$2b$04$nTkZTLQw.M/MmuSksmDyse5wgwdK9NXUljOY9aCO4DaSYglDqXfEm]s Y@anon-20191002_181700-8:localhost:8800$2b$04$RdNo.ZARpuQMLD627NG98exnXgcN9rubTxUnr7IFZJtI80ccidE3K]s Y@anon-20191002_181700-7:localhost:8800$2b$04$CfTr2SSzmPiq8Ypwi1OTXuvwh7jAsaUZzFbgewiingug2CJjQIiie]s Y@anon-20191002_181700-6:localhost:8800$2b$04$VxcrUVh9xKbcVQSixyoJ4u5Fn22LmWHpdRGSMvGslRAlpckqmLXR.]s Y@anon-20191002_181700-5:localhost:8800$2b$04$K1wISv2ocjsh4o7dPTLLG.Rk6lcJsjFlJlniZxg/Ro5TorKEDh6Ci]s Y@anon-20191002_181700-4:localhost:8800$2b$04$kzIGXYJ2QwgBFzruGIxHyeg5ODbn8pi7ErCo96TeEt//Gm3zN1JcC]e =@spyglass:localhost:8800$2b$04$9dhHYFZA6p79gsMg0da4fukJCdJCZPtV4pLkVB0RsteJCu0PFQXA.]d ;@02login:localhost:8800$2b$04$3fiNXYbSoO9KKuKTAn1P4ev9RQ7q5XtYJq8F88DwYyYNgM/gnZDVu]t [@anon-20191002_181700-3a:localhost:8800$2b$04$JqkKJhaRgtAIdaFQy9gdrujIe6mrCaz.8hQ0F.uVti1.w1C5ks7IK]s Y @anon-20191002_181700-2:localhost:8800$2b$04$FuDZ9lkb97DR4re0gj5hfOzacQfWT9X.Vt8ta2Y5ilN/dWiQ.yvMC]s Y@anon-20191002_181700-1:localhost:8800$2b$04$YYOknz2Aa82KiBIWTdvTEuceaL8BrafRPuc33580iKm5fyUeSI0Rq]l K@chrtestuser-39-:localhost:8800$2b$04$9ma0ulqgEnLrDpgyB8tcVOCkjK7.TdEnuF6OwQ1vQdM8Ap6sjkTx6]l K@chrtestuser-10-:localhost:8800$2b$04$OIvxhEv.2Wvq/vnTfq.dpe9xcqWeqQlidSEeSE0HBbLd0meTj59Mq]m M@chrtestuser-233-:localhost:8800$2b$04$7NI1J8iDLpvU6.qZ1pVmeeQ9DEp6KPeIqqmnz36/A1FWuz7bXyv5K]m M@chrtestuser-163-:localhost:8800$2b$04$7hDdVVqPd5RsvLIsySD8U.8K.smF6zBc6Md00dB/65/JJ6NU9MngW]m M@chrtestuser-125-:localhost:8800$2b$04$.gDopZnZ6sP9bjKzBNFgY./QfMdTyPnKXBpp2vaPpAVLpLaYAbQTu]m M@chrtestuser-124-:localhost:8800$2b$04$NB0ywjloEFYcQsb8WGLNQ.7Lim1puyBghb8r6UoYzsKsNZ4eoWXTm]m M@chrtestuser-123-:localhost:8800$2b$04$j6BLx0IQJaXFl0Y0z0JyqOHgC1s.elOVhY3EbwxvSmBqZfrAZv8g2]l K@chrtestuser-93-:localhost:8800$2b$04$ldRKwu.RnQGqtu/O0kHSd.N6HIGFUbBkV0RSjuBhvOULX43Th834.]l K@chrtestuser-91-:localhost:8800$2b$04$DOJrOVwbgAV2PRw1e8SIGe2DQuctZS9QY1b8FkPt4T/8OBZ/0KsA.]l K@chrtestuser-64-:localhost:8800$2b$04$Whm6eh6RD2NVW9T4QUSdsOGIG21NSqDwY4ZCWYuYEy0opkCv7H786]l K@chrtestuser-92-:localhost:8800$2b$04$GCnztRoriZEc33/tbY44S.wxXnWgWJpkYb0cmykN00M5UtQjQXbe6]l K@chrtestuser-63-:localhost:8800$2b$04$oDCzznj/v/ocNEvQBgzaFeE.NmIWgr/BIkTlv8BjBSgFCX9pxSxJ2]l K@chrtestuser-58-:localhost:8800$2b$04$GquR6cpdAHon/sh9AZDszeznhP5ZpeE5bjVOyreHM1qCJyN0ZLq5G]l K@chrtestuser-34-:localhost:8800$2b$04$lFkKbfeiPq93UDLewRSgj.zylCgaf7pSJ30hg0hdT9wkRjncyoeMC]l K@chrtestuser-33-:localhost:8800$2b$04$3sFdjE2uexhKLCduR9gLo.7r.Dx3ePDRNFLJJ32hZUEmNUavCUdpW]g A@mycooluser:localhost:8800$2b$04$/iTGMZKj2p940f9PzsmLm.IG65Onskbxt8cFzF1OUzmfl2miYUHsy]g A@user-upper:localhost:8800$2b$04$VH52uevdMNCZIBncGaHfWOfURv9z8N3TxOIZggIxNNaX1I9aniSqa] "( < P d x  *>Rfz.BV)tE [@anon-20191002_181700-48:localhost:8800$2b$04$RIFa4hVp1ovZetNNyEFVXO4hjLIMlHgo0Z6sY8Cupo1UVXXr4iDwy]J+D C@cas_user=21:localhost:8800]JtC [@anon-20191002_181700-47:localhost:8800$2b$04$w1wpDxwp5Qst4cfjpka3FOGN0EEoU12v2DZQ5fe15K8BNlO6JevdK]ItB [@anon-20191002_181700-46:localhost:8800$2b$04$0BgUqv6UH.3dklXfj1TkX.G735R6YH0jMwbUOX33SQfMc.eXLlvya]ItA [@anon-20191002_181700-45:localhost:8800$2b$04$JK4nltUzFH7HTk95IOMTMeezk1ww034FoSMzwODw6HJaxB/ZKo5z6]It@ [@anon-20191002_181700-44:localhost:8800$2b$04$3W8aCJhb5b6Dh.5MoVrSe.fYUjySTjIxif9CoPlgprcF8VLpbMVCm]Ht? [@anon-20191002_181700-43:localhost:8800$2b$04$Q1YSqFf266ln0QBnVlX9tO9CwPRAQ5jU48vWxcOojyBColAzyI7sK]H^> /@0:localhost:8800$2b$04$atjPbdU.f7vIlyYlCIdl4OaV3OCm9qgXg/d.0FfnYmWBecZ5qJxSa]Gt= [@anon-20191002_181700-41:localhost:8800$2b$04$C3QzcdpBLQtCuUW1A88eGe.KMZOzyd1zzO86Nk9ULsIOdY.J6uXpu]Gt< [@anon-20191002_181700-40:localhost:8800$2b$04$iSKOnVNKfzaKEhs6Ig1/tOwy2KI.iWlfdQhfkc7PKI6ivajGwp5kK]Ft; [@anon-20191002_181700-39:localhost:8800$2b$04$jFJ.4vf.vUBRjGCnLRknL.qCljLPE9yOBqHtXPvLNC0JFzELMuW32]Bt: [@anon-20191002_181700-38:localhost:8800$2b$04$W0XgNSpp4qVjvuUyAA4tUeg5zMQJu2gOpKX3rhGtvQfVWfhvR5mXq]>t9 [@anon-20191002_181700-37:localhost:8800$2b$04$NaDGWiGlNlYB1uAa0jOQ3ONQg1Kjh0vJOJ5VSNNL46iavX7YjBcxm]8t8 [@anon-20191002_181700-36:localhost:8800$2b$04$7veyAf0H8Uz9j1G4ZFswv.xEpq4KtZrZOZRE2J8ezWIqG2nz6f7Dq]4t7 [@anon-20191002_181700-35:localhost:8800$2b$04$IKat3A20ReGz0yD73mfIxeyYomeAup0QtsAFXBwCZikVUu5vb3h5i]0t6 [@anon-20191002_181700-34:localhost:8800$2b$04$FvxeiOaY3.YPxl8sM0PO6u.9nnx4IYNMHGWPHRAzpJY6jUHs47sW6]+t5 [@anon-20191002_181700-33:localhost:8800$2b$04$r4CWdborFhjxdDRkbCKxvuIq0ZQrKryvhS2T/4cePrPewrI5cne1a]'t4 [@anon-20191002_181700-32:localhost:8800$2b$04$PN2E4wBase945.8tvL8.Eu94aNWqTRvOIniRSeFB5IxPE.Y6y.nwq]#t3 [@anon-20191002_181700-31:localhost:8800$2b$04$TGPLCdB/.Hzr82DERi9tCeuGuFaMlPVrj3WHLrHGHGJaJic8iZJZa]t2 [@anon-20191002_181700-30:localhost:8800$2b$04$k6wbtua775uLq8zZzCWmEeX8C359QPJ/hn8wPTsF2Aatl08QJJe5a]t1 [@anon-20191002_181700-29:localhost:8800$2b$04$FwfskMzrd.MD2RQvtaAQLeegjaX9qWiVwCjNGXvwJZSXD.Of5PBi2]t0 [@anon-20191002_181700-28:localhost:8800$2b$04$9pel6kypFF8Dl5mvLAGK5.1yGsOIVRX0yx/7GLFj8H5l5RjRFp8Fm]t/ [@anon-20191002_181700-27:localhost:8800$2b$04$HPPuuuroyuAt7v.hIXeAuuVYKJCS7XBlXoJ2P36V/MEYMC122NedC]t. [@anon-20191002_181700-26:localhost:8800$2b$04$HgzZouH03QPshWp14yksSO/BPmIZCEBcQmEGQ4dEFDQlKfbDe0wg2]t- [@anon-20191002_181700-25:localhost:8800$2b$04$QC4n7ZJNj2u59XTpl8qRDOivUkgY.8zbB5XFO4NPovptezvcuZtge]t, [@anon-20191002_181700-24:localhost:8800$2b$04$tA5nG1AEh8C9uQokAirXhuJ7fEKoh0x6AVaawKw7x70eQtwfZ9YB6]t+ [@anon-20191002_181700-23:localhost:8800$2b$04$86QXELFV676B5b5VTHdvEu2BAvob4HLmXhTTam2rM/bI1iOH77WKC]t* [@anon-20191002_181700-22:localhost:8800$2b$04$1kZpf1N9onRJtzHc0IvdlegpntN.VjWjXl/rZ4CCl0znIsrrn9rcy]t) [@anon-20191002_181700-21:localhost:8800$2b$04$zNT5bDCCV/OaCyhJ2nKl8uUO32ZhMfkH7yys40T4p95IyyqK.L.SC] t( [@anon-20191002_181700-20:localhost:8800$2b$04$.5fNQWZQ6qQKRg0y9xYBA.44iWazXCywIqPtP0WgbfciyLuW4zVCi]t' [@anon-20191002_181700-19:localhost:8800$2b$04$fCN7coU7NKee7NPyy8qthOUukztfw0HGlnaef.ldQN.43rad9P9LO]t& [@anon-20191002_181700-18:localhost:8800$2b$04$.y5bpxkyP180LIbJZrQAu.xY/MTqt/Ymgb.moLF6nbGUE/CQzqFj2]t% [@anon-20191002_181700-17:localhost:8800$2b$04$xjy.UA6OAvnZ9LQOUb/ot.iy7/txUvJIKhRt34JdluctCqEnvy2cq]t$ [@anon-20191002_181700-16:localhost:8800$2b$04$bC2LzDqeZEpsTyfZ7LTUcu7IAHWRjfxVM7zBVs5jJJnZz6xVhfDim]   v Z> [a!E@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCgGGVPWYJLFA127.0.0.1Perl + Net::Async::HTTP/0.44m? [a%E@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWSN2WXVlPTMqcXUyMHloTwowMDJmc2lnbmF0dXJlIElgAWxLGP37kzHWr9kr-ryrZrd7J-ty0eNd8-BjBJODCglogin_device127.0.0.1Perl + Net::Async::HTTP/0.44m݃[a!E@anon-20191002_181700-10:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2CgFPVSQGRDQG127.0.0.1Perl + Net::Async::HTTP/0.44m Y]!E@anon-20191002_181700-9:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsKMGUQLDGKRQ127.0.0.1Perl + Net::Async::HTTP/0.44mk Y]!E@anon-20191002_181700-8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYKEBQTKFPJOD127.0.0.1Perl + Net::Async::HTTP/0.44m}( Y]!E@anon-20191002_181700-7:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgKFWKDVNUPWX127.0.0.1Perl + Net::Async::HTTP/0.44my Y]!E@anon-20191002_181700-6:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAKYDTVVUXGOW127.0.0.1Perl + Net::Async::HTTP/0.44mx1 Y]!E@anon-20191002_181700-5:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwKWYYDRNGEZS127.0.0.1Perl + Net::Async::HTTP/0.44mua Y]!E@anon-20191002_181700-4:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcKOXDBJBCTVL127.0.0.1Perl + Net::Async::HTTP/0.44ms-k=9!E@spyglass:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCgBUNJZHLDRS127.0.0.1Perl + Net::Async::HTTP/0.44mp Vo M + xV[a!E@anon-20191002_181700-25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCgIOMJWWQXRT127.0.0.1Perl + Net::Async::HTTP/0.44mm[a!E@anon-20191002_181700-24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCgMRUESCORNA127.0.0.1Perl + Net::Async::HTTP/0.44miŃ[a!E@anon-20191002_181700-22:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXkZ-UCo4LWgwa0smME5ZQAowMDJmc2lnbmF0dXJlICAVkALm609BDF9Y2vumo9-DSlIRHPOSzCA6jqF4sRmuCgHVNUPXSZHY127.0.0.1Perl + Net::Async::HTTP/0.44md[a!E@anon-20191002_181700-23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCgSNOHQGNOOL127.0.0.1Perl + Net::Async::HTTP/0.44mS[a!E@anon-20191002_181700-21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCgKHJDEDTDXI127.0.0.1Perl + Net::Async::HTTP/0.44m?z[a!E@anon-20191002_181700-20:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNFKnFwXmJJMix3UDNuWQowMDJmc2lnbmF0dXJlIDfDhxgG6hysISJ-WB62IY0t37xYWbLaH-RvW_dJ43CrCgMIHVANNPDD127.0.0.1Perl + Net::Async::HTTP/0.44m[[a!E@anon-20191002_181700-16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3CgOZMNCFRFTF127.0.0.1Perl + Net::Async::HTTP/0.44mƃ [a!E@anon-20191002_181700-15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCgKLXIHUSAOG127.0.0.1Perl + Net::Async::HTTP/0.44m [a!E@anon-20191002_181700-14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCgUAGQKBVBOW127.0.0.1Perl + Net::Async::HTTP/0.44mo [a!E@anon-20191002_181700-12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCgATMHTVRQSQ127.0.0.1Perl + Net::Async::HTTP/0.44m O b  u&9OM1a@21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLkJrQm5VakZGZGhsNU5PMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlICqXq1qwtskmVrJQMMDVdeu1qG_0zXa2l4F6RetlyoxKCg127.0.0.1M1a@20:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZlAqPSxXKn5pXnk0OkBHTwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIL2BeshVfhts8YQdae9DJ7UFQnVNTRFffV076i9L-S-fCg127.0.0.1J/]@1:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBILWZqUE89REFCbywjQVVDCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUg8ZO9wx6wxEiQt9dWUnClqLyWpIT77ZqZu670k0ka4MQK127.0.0.1M1a@19:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSW9DYTd2SmxyOXZBN2ErRwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFFXI1T8uka05JtyfHQJjVTGEQH2CNCA7MRgOMOM3XwICg127.0.0.1M1a@18:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNWs7aXNYaCwmMmJJXmpNYQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIHmvdGjZx9PDEzLghbbZRbAAXV1IrS8sTsspJDM2mfFwCg127.0.0.1M1a@17:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gVmxQPTBXLEQ1ck55a1NRVAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlID4TV4jDe8XzM8I1F_eV7pQOZB6XTMr8qJwbCeCcTjVjCg127.0.0.1M1a@16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRktoSStZMWlBQUR2bXA0YQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIGkMsfrX_CDXuP0Xf33Iks0_9DU-E_vtEQC4bgdLzvYJCg127.0.0.1M1a@15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gT2g9az0zZExCPURJdHkyagowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIH2hVUWzUTzg0iqiItdcOb0l4V8wVp-qZPorOSUIDDIwCg127.0.0.1M1a@14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZSZFNGErMHFfdXhzcCtzQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlINrCwOwQyMEAprIa-T8zRFMD9PdqAvsYHDRxJuawVJrKCg127.0.0.1M1a@13:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO3Y0Q29GWE5YeHR-OnRIcQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEx9qDT1ndFqTfeFHMHmfj2Bk8E4hOUXORN-m3pDpxhZCg127.0.0.1M1a@12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWFUOm9kWmNsaVVebUA3VAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDrrNTqIEv5XDg0_ZAJPV_qQ87WBt8jea6wyg-AODVijCg127.0.0.1M1a@11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRSxDaUN4SGZIRTQjWUxJbAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDRs-ffUemCTWinkCFDGYbanMbjSiUB8-Nm-RndeIcAtCg127.0.0.1  b  u&<OOM1a@32:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQkxsZ2xiN01rUmZUQjBVbgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIHKzSYjEA-zB0wRYasOxymogLRj9wnPYe2tZGJZRi1JVCg127.0.0.1̂M1a@31:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gV1RaZW8teFo3TXQyLm5eYwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBcgjCOdXWZjvWca0bZSwB6G6iOikXTUAnwMBj71C0TXCg127.0.0.1ʂM1a@30:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSVJoM1JodzR0aDBhRFNQMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC79MAQDFp0t3idDH3_RY6Fsr_JvLoo9JC8ioIEUQJ2-Cg127.0.0.1ȂJ/]@2:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBoWWlYb2h1R2kqN1crQjUxCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgHpgk2vQ0DD-k7UWviF0jEnMlkDFqd-Xn_UAauehqWo8K127.0.0.1M1a@29:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGRWeDBtMTRaWVdaMzhHdgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFYE829LgFsLU0wxq-mP25iUQ47uGCA9V2NnR9yK12LuCg127.0.0.1ƂM1a@28:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdmdKOkE7Rmg3NUN5MTdZQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIOj15xwG3phYCeKNDvJ3DIY52LVnQeTh3PXqDiUeUfrYCg127.0.0.1ĂM1a@27:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdy5-LiYxUDBMcSs4aUtEPQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBgisZ0dzzpY_I4SEha4cg4fLFhHOqfVh1xtFZMsv2KPCg127.0.0.1‚M1a@26:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNlVzLT1hJlpCOGRnXj1HNgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIIID_n1sZN-dByVrhmD9i10e8C-geZxqIJRIyJ2gBXSzCg127.0.0.1M1a@25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXBeVl44LUc7VHc7VnVCLQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC8MWi9BCBjMe8Iol7_FlZLzWel11x7K3eungbpV0kByCg127.0.0.1M1a@24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMSZOay5naWRnbkpGSm5ZbwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIKBWQyWY5hgZBnE-se3uKiVfly8hRLpUhBLZqOOEW7seCg127.0.0.1M1a@23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbV96RjtHb2t3YTlYLDcjYgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIElRnIis52jvPcLdLVPjrmWcDWODcOj4buElXA8jMUolCg127.0.0.1   @eQY#$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 5}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU"], "type": "m.room.canonical_alias", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"alias": "#30room-create:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040289498, "hashes": {"sha256": "QiQyIKHxd/d80Lje6DjPkev/2YM+8ehMHXOJob2fur4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bVTj/5SXk2hS/TQEK+aHze5+QljKkkS50J46hG8/J6nM54t3IvABUlKFQKQ920wkHiS0tpv1UiTuHP0LCuImCQ"}}, "unsigned": {"age_ts": 1570040289498}}eeQY_$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 4}{"auth_events": ["$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "type": "m.room.power_levels", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040288907, "hashes": {"sha256": "UgQgaX1JraFysKpDl1S2w27tdEMf7QQ8lLZT+jLUF8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kTuok8e/AHqIy2v6PViOVwxG/DJnkTHhXi3tzkFdYViWLSLtz8O2btvPMfl+ptISxmNV4t6dSpXyDPkYl0sDCg"}}, "unsigned": {"age_ts": 1570040288907}}oeQYs$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 3}{"auth_events": ["$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A"], "prev_events": ["$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A"], "type": "m.room.member", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040288444, "hashes": {"sha256": "5Qa2uVz/DqKkxcLk4cRu8Li7OGODfiuSIOQPiCmeeBQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Uoj8RnX5WDVr6T+jIavm94zLcLPdu6y2PrhOaQXhBX8fib3kz8hXIvWmfiOhfoodI4zn0npUvXltJ+e2zlgfBQ"}}, "unsigned": {"age_ts": 1570040288444}}ceQY[$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 2}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040287847, "hashes": {"sha256": "Bg20sM2tVBSKhF7iUO/0pC7jlMjrr8xv/pdNHw9DPvs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T8JGu++WjglN0qCqOOa4ITgBS1jSaJZlMZt84ftm8/qdQZjv01bzwdhWhbBnPxxEibv/56u99wezNnY3feS4Ag"}}, "unsigned": {"age_ts": 1570040287847}}  wceQY[$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 9}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040292438, "hashes": {"sha256": "T58Ez/ibHYRjUo7ThV6vV0xzW89XhGM4aK2+kNjECqY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uR0IvAyuNpMUkYj65+d73jSqGV6WzgDOCno/KZXMdfU7B5Q90C4PozKkX3UONuTqNYquw/Uw9ike6FkwHE3QCA"}}, "unsigned": {"age_ts": 1570040292438}}eQY7$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 8}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g"], "type": "m.room.aliases", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"aliases": ["#30room-create:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040291666, "hashes": {"sha256": "cx8dysc9pSQ+Y0uE1X1SDBblD+B0u4BNOiJY0lbWl6w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D14+sH6Az40KGuCP10tG+uRiRj2MG8dp7VA+t6+DCAw/+nnuxXdgqheID8qMODngjw60EFLQOgnFCH0qHn/KBg"}}, "unsigned": {"age_ts": 1570040291666}}eQY$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 7}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc"], "type": "m.room.history_visibility", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040290823, "hashes": {"sha256": "n9CGYstsLIMNYHJbxQaam7DKoYGIhsBW7jg8uKtCuZ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pJPRvpRC3+k8JxmgjhFW1EOuXpeJmgtMgBvgKbIhjr9arVx//pn8N7xZcqAprQ5VQlV1lHCoE+4UD2hk2OfuDQ"}}, "unsigned": {"age_ts": 1570040290823}}oeQYs$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc!zNCItZNbpkZKuufRhC:localhost:8800{"token_id": 47, "stream_ordering": 6}{"auth_events": ["$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU", "$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A", "$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA"], "prev_events": ["$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY"], "type": "m.room.join_rules", "room_id": "!zNCItZNbpkZKuufRhC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040290190, "hashes": {"sha256": "gcaDwGyEL3c1QjN2PXDMGIVBg+dGO71UJSQxYh0Bhq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vrwSRezXDxtKYZaPJNwBGSB7fmiBgTBHH1Vmam002cJgUVVO+MFfMMTnh+0bDH9Hi6vY3ifPnf7K6vzvDZ+VDw"}}, "unsigned": {"age_ts": 1570040290190}} - $- eQ[$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 13}{"auth_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA", "$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs"], "type": "m.room.history_visibility", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040294591, "hashes": {"sha256": "u2zwnEA3KLHUB+1fpJerRVuif91fZ2534ZBxKAbHjrA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jz+wQGmxk/H/iOFmF/1AMe7NuWhSxOisdEP17ZFHlVeyseUFRM9S2k4Q8k0K3ZcmPuxvRvHBhlAmWMyOP3YXCg"}}, "unsigned": {"age_ts": 1570040294591}}p eQ[s$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 12}{"auth_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA", "$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA"], "type": "m.room.join_rules", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040293989, "hashes": {"sha256": "1rH9SN1yo/bvstFDrrCC+hrfStPlYprY6M1QgJ4/MtE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WpF9MstyePa2YUML5HfkTRpz9vuYjJR/4+eDPMwWEfkxrwqTxxOfVd9YYGEbgzNT3Iq/hDA1Z23RmpYN0eSUDA"}}, "unsigned": {"age_ts": 1570040293989}}f eQ[_$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 11}{"auth_events": ["$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "type": "m.room.power_levels", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040293418, "hashes": {"sha256": "FWw/fR3a7u3DfIt3EQHwZ+I57Jm4NWpP2Mox5UxALnE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k6L9th91HTtyhRWoqQyKjjdympV/suvub+QPpaWhABDNT+iBYjgNuv1xnSDK9xs84+2WBp0uANw+FBAZwrbQDg"}}, "unsigned": {"age_ts": 1570040293418}}p eQ[s$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 10}{"auth_events": ["$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU"], "prev_events": ["$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU"], "type": "m.room.member", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040293012, "hashes": {"sha256": "d5rruh10ePp5+NsY/NVpLxG5DtzeaGzTnfcoy2Hzjns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p/dB3VVLxAnW8FjtvsyHNrS2hhXtc/efAmco06J3NATgVj60hJkgPiHmnMye2zf1bEySPZ+CieosTLe1Eo+QCQ"}}, "unsigned": {"age_ts": 1570040293012}}  ,feQ[_$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 17}{"auth_events": ["$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "type": "m.room.power_levels", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040297774, "hashes": {"sha256": "4V6dsASCXrgikAO0SNskUQu2ipyBBoom8y1N1hTCsGE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lrJ7LRYGac2dxOO1HqTCJue0u5f2LzPUl+Z/TgeVXIfTsPR9bx08WCoHUS/2nXhTmEnOYQK7xtUic9K+ZERrBg"}}, "unsigned": {"age_ts": 1570040297774}}peQ[s$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 16}{"auth_events": ["$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0"], "prev_events": ["$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0"], "type": "m.room.member", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040297295, "hashes": {"sha256": "iJ57K9mDqkneWMzoVBVaEJ6d17pqGMoBBnO/t2XE4k8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7mO9qhGBKyyccT2plMYrhQBSBvpYJ22zBXUH18M/Z2flCDXE+fN4IrwVCT6v8ljnfoLHUGA/+9rWhKVVBV0SDw"}}, "unsigned": {"age_ts": 1570040297295}}deQ[[$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 15}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040296688, "hashes": {"sha256": "yhjmJiYJBY9TnmPuCZchHe7xyJ3gsrWUoqqnV3284G0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yzskE5jqyk0iKUHILZdU+NMvmDz9C4u6olp5iZYzPwnXsrnEEP83ei8IDYIj8zHHw/aB/6Zp1gNJSm4wE+H+CQ"}}, "unsigned": {"age_ts": 1570040296688}}w eQ[$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ!QZhNrNpwObZGJZpdAG:localhost:8800{"token_id": 47, "stream_ordering": 14}{"auth_events": ["$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA", "$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU", "$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w"], "prev_events": ["$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU"], "type": "m.room.guest_access", "room_id": "!QZhNrNpwObZGJZpdAG:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040295441, "hashes": {"sha256": "Jgb2WE3SGq+MLRJmtNIObLcZQqZOkdePwHvwBzh5XyE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K5u2NaQ6KfiGcWSdCzgSYpvcKWu4Z5xMoLlLL2WBo0dqlcCfL7/SnnHcGTAiF26Cb+rWvvqmqvgBjx1EG2ajDA"}}, "unsigned": {"age_ts": 1570040295441}}  2 d/ad7[!a:@anon-20191002_181700-27:localhost:8800TWNKNEABLTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCgd6[!a9@anon-20191002_181700-26:localhost:8800UBEJKIDKFLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-Cgd5[!a8@anon-20191002_181700-25:localhost:8800IOMJWWQXRTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCgd4[!a7@anon-20191002_181700-24:localhost:8800MRUESCORNAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCgd3[!a6@anon-20191002_181700-23:localhost:8800SNOHQGNOOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCgd2[!a5@anon-20191002_181700-22:localhost:8800HVNUPXSZHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXkZ-UCo4LWgwa0smME5ZQAowMDJmc2lnbmF0dXJlICAVkALm609BDF9Y2vumo9-DSlIRHPOSzCA6jqF4sRmuCgd1[!a4@anon-20191002_181700-21:localhost:8800KHJDEDTDXIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCgd0[!a3@anon-20191002_181700-20:localhost:8800MIHVANNPDDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNFKnFwXmJJMix3UDNuWQowMDJmc2lnbmF0dXJlIDfDhxgG6hysISJ-WB62IY0t37xYWbLaH-RvW_dJ43CrCgd/[!a2@anon-20191002_181700-19:localhost:8800YBVCGWDMTLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbE86LjU5K0ImSks7YUVtOgowMDJmc2lnbmF0dXJlIKirgGiuZLjz6h_A3nQlvdC5Ef5akvhwtYCDB0r4aRZ1Cgd.[!a1@anon-20191002_181700-18:localhost:8800TRFQQDTHPKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTkwwRzk9VyZOYmt3KnE5LgowMDJmc2lnbmF0dXJlIHrNx3JvH7A75a7LMXd1PJkFMZ0mKX00UA0dYcN1YHZyCgd-[!a0@anon-20191002_181700-17:localhost:8800VRXIORHZEXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYnNwUXFWLS12dzR-aEJlNQowMDJmc2lnbmF0dXJlIIvFYu5qn5ABIoXhtIWNkEwLMydgKrj6CF0IHDki-iamCg  weQ[$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 20}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c"], "type": "m.room.guest_access", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040299824, "hashes": {"sha256": "62B/FGRscxlXt36bgx+7QkuhXTyz4PeT152FH/sBLrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "usJY910dWVk9EmYreAqGc3xRebhUoh/DMewPd1ktRMAMbE6iBr/efizTPV+QvhOkuJ9JIQuzqoibSgvbEsEMAQ"}}, "unsigned": {"age_ts": 1570040299824}}eQ[$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 19}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY"], "type": "m.room.history_visibility", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040299215, "hashes": {"sha256": "w4WP1rIcNauqqUm0XUxT6MtZ+RonkXOCPt1M97c7pvE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m74TRH3fs1Sb3LPVyEz4rQL6YBNt+scwYANJSJTDTfQR5TYWONxhz/xWkj4mhYlhLtlZ3FgXKJo45/ylnWorDA"}}, "unsigned": {"age_ts": 1570040299215}}peQ[s$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 18}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90"], "type": "m.room.join_rules", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040298624, "hashes": {"sha256": "KlPMZHuirJYCjQOqvtpc+/yLnyjVDZQ0WsoYo8YALzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BGU282NFxysUq49vnW/12fn8PlOFj5nZvupp2KhoKjmLjNt1gZnq2oCgyay9JL7CsrXJfp3RYyCPgaQ97Wl7AQ"}}, "unsigned": {"age_ts": 1570040298624}}  ~eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800~eeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~ eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800~eeQ$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800  ~>eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800~=eeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~<eeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~;eeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800~:eeQ$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~9eeQ$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~8eeQ$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~7eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~6eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~5eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800~4eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~3eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~2eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800~1eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~0eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~/eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800~.eeQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800~-eeQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~,eeQ$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800~+eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~*eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800~)eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~(eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~'eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~&eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~%eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~$eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~#eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800~"eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800~!eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800~ eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800  rpeQ[s$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 23}{"auth_events": ["$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0"], "prev_events": ["$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0"], "type": "m.room.member", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040302112, "hashes": {"sha256": "EopQCd5Pxy+DcXUDOQq4KR+KcRtsxUTDZQhujz4ghIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jBBEdVVQEWLBaPPyStXgUTs9rG/J31icoTJZyWldRCAQOsHT0SjBgwR8TYDGYc/HeDnvJ5gb6RFkdtniZzNpAA"}}, "unsigned": {"age_ts": 1570040302112}}deQ[[$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 22}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040301447, "hashes": {"sha256": "QVtbW2ZP1aZ4iXtvQURFyKKFnw7WT+m6Rw4mr0KiHEQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6l7WnCKKLGwxzXV/jVKCWh3X3I9MU0Cxp08EagrjJqApvMI/ZY43GlLWConmzEJU/j7jc1OYk+RkbIjcotgUCw"}}, "unsigned": {"age_ts": 1570040301447}} eQ[)$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800{"token_id": 47, "stream_ordering": 21}{"auth_events": ["$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90", "$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0", "$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY", "$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8"], "prev_events": ["$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs"], "type": "m.room.member", "room_id": "!plcvCHNbjCkNMMxnTk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-17", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-17:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040300507, "hashes": {"sha256": "cWPOUSa6Z+BYMNDOxJQ4pL6nvCEPwO3dfyA6ardcY5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5uzx5H2AH8UduTPUQW4natY3vWxFCf39ntPuqqD3a2LFBFPHgBqMh+3zJhSwufDiw9cCgEfsZd2C39uGdFSkBg"}}, "unsigned": {"age_ts": 1570040300507, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-16:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "sender": "@anon-20191002_181700-16:localhost:8800"}]}} 5 $5heQ[c$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 27}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ"], "type": "m.room.name", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"name": "Test Room"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040304635, "hashes": {"sha256": "0ykxiwmLpJzGhD6istgoh40cjC7XPwiyP/5IbzItWp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HmJVvNcO1wcjgECx39Y9bUnlaMyO2CK+xgupQn653b6LNYAlAMXNuIBXrvfhdcsg1dUwEgBvU2wgPcksVbfBCw"}}, "unsigned": {"age_ts": 1570040304635}}eQ[$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 26}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc"], "type": "m.room.history_visibility", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040303766, "hashes": {"sha256": "3c1qGnolJmPsEQYTp5Y+3OdC5rYDJaML52Rytxfk0xs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vDmrY+H8R3FF12nqnM+6bfFAv25MiCpt0l34yC8LqXkk1OA0t20hZWYjvpE+0/ZjxRYZ0cq2XPjkOGSnZtOxBA"}}, "unsigned": {"age_ts": 1570040303766}}peQ[s$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 25}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU"], "type": "m.room.join_rules", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040303167, "hashes": {"sha256": "EIV1J7xsy2LUqgtVI1Qng5r3ThZNbXDWzYqoqnEVwek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dtqeIB55fbJQvbJ2s/7ynndh1af1KthfaJFTyZfwaR+nLoQnrY7E+M7E8C/Bpf0YfNbhIa7DCJ9FAsCXSRgPBg"}}, "unsigned": {"age_ts": 1570040303167}}feQ[_$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 24}{"auth_events": ["$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "type": "m.room.power_levels", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040302592, "hashes": {"sha256": "wLplI4sLoJp1fLFsBNyZ7zWJ4Si906W4Xch6BEGDJzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r4aXu1MHn8vZ1AIGlKzCh/R+vfApcAinuyizh6Ser89fAThKm2QP/kzC9iiBVLVQw9dvA7Pza2/o9x5Q11r9BA"}}, "unsigned": {"age_ts": 1570040302592}} bb&N:` k  t 2 6Ll3)1 E $28:localhost:42455m.room.message!6:localhost:42455 mm6@__ANON__-20:localhost:42455l3)1 E $25:localhost:42455m.room.message!6:localhost:42455 mm1@__ANON__-20:localhost:42455l3)1 E$22:localhost:42455m.room.message!6:localhost:42455mm.-@__ANON__-20:localhost:42455l3)1 E$21:localhost:42455m.room.message!6:localhost:42455mm,u@__ANON__-20:localhost:42455l3)1 E$20:localhost:42455m.room.message!6:localhost:42455mm+O@__ANON__-20:localhost:42455l3)1 E$19:localhost:42455m.room.message!6:localhost:42455mm*@__ANON__-20:localhost:42455l3)1 E$24:localhost:42455m.room.message!6:localhost:42455mm0@__ANON__-20:localhost:42455l3)1 E$23:localhost:42455m.room.message!6:localhost:42455mm/b@__ANON__-20:localhost:42455l3)1 E $27:localhost:42455m.room.message!6:localhost:42455 mm4@__ANON__-20:localhost:42455l3)1 E $26:localhost:42455m.room.message!6:localhost:42455 mm3@__ANON__-20:localhost:42455#e/Q [$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYm.room.join_rules!plcvCHNbjCkNMMxnTk:localhost:8800mm4@anon-20191002_181700-16:localhost:8800%e3Q [$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90m.room.power_levels!plcvCHNbjCkNMMxnTk:localhost:8800m.m^@anon-20191002_181700-16:localhost:8800e'Q [$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8m.room.member!plcvCHNbjCkNMMxnTk:localhost:8800mOm@anon-20191002_181700-16:localhost:8800 e'Q  [$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0m.room.create!plcvCHNbjCkNMMxnTk:localhost:8800mmV@anon-20191002_181700-16:localhost:8800%e3Q [$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQm.room.guest_access!QZhNrNpwObZGJZpdAG:localhost:8800mm@anon-20191002_181700-16:localhost:8800+ e?Q [$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUm.room.history_visibility!QZhNrNpwObZGJZpdAG:localhost:8800mmW@anon-20191002_181700-16:localhost:8800# e/Q [$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxsm.room.join_rules!QZhNrNpwObZGJZpdAG:localhost:8800mem@anon-20191002_181700-16:localhost:8800% e3Q [$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkAm.room.power_levels!QZhNrNpwObZGJZpdAG:localhost:8800m*m@anon-20191002_181700-16:localhost:8800 e'Q [$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wm.room.member!QZhNrNpwObZGJZpdAG:localhost:8800mm@anon-20191002_181700-16:localhost:8800  e'Q  [$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXUm.room.create!QZhNrNpwObZGJZpdAG:localhost:8800mVm@anon-20191002_181700-16:localhost:8800 e)Q [$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0m.room.aliases!zNCItZNbpkZKuufRhC:localhost:8800mRmD@anon-20191002_181700-16:localhost:8800+e?Q [$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1gm.room.history_visibility!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800#e/Q [$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfcm.room.join_rules!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800(e9Q [$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYm.room.canonical_alias!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800%e3Q [$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdUm.room.power_levels!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800e'Q [$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAm.room.member!zNCItZNbpkZKuufRhC:localhost:8800mm@anon-20191002_181700-16:localhost:8800 e'Q  [$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_Am.room.create!zNCItZNbpkZKuufRhC:localhost:8800mgm@anon-20191002_181700-16:localhost:8800 MAR r ( 3 QU%e3Q [$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTsm.room.guest_access!plcvCHNbjCkNMMxnTk:localhost:8800m0m@anon-20191002_181700-16:localhost:8800+e?Q [$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4cm.room.history_visibility!plcvCHNbjCkNMMxnTk:localhost:8800mmp@anon-20191002_181700-16:localhost:8800 e'Q  [$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0m.room.create!odAvowLhHJcmkKlxFk:localhost:8800mLJm@anon-20191002_181700-16:localhost:8800#e/Q [$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApcm.room.join_rules!odAvowLhHJcmkKlxFk:localhost:8800m?m@anon-20191002_181700-16:localhost:8800%e3Q [$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntUm.room.power_levels!odAvowLhHJcmkKlxFk:localhost:8800mm@anon-20191002_181700-16:localhost:8800e'Q [$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQm.room.member!odAvowLhHJcmkKlxFk:localhost:8800m mʬ@anon-20191002_181700-16:localhost:8800e'Q [$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUm.room.member!plcvCHNbjCkNMMxnTk:localhost:8800mm<@anon-20191002_181700-16:localhost:8800+(e?Q [$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQm.room.history_visibility!loalEsWaTYwrVUNJLr:localhost:8800mEmw@anon-20191002_181700-16:localhost:8800#'e/Q [$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Ym.room.join_rules!loalEsWaTYwrVUNJLr:localhost:8800mm@anon-20191002_181700-16:localhost:8800%&e3Q [$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQm.room.power_levels!loalEsWaTYwrVUNJLr:localhost:8800m\mV@anon-20191002_181700-16:localhost:8800%e'Q [$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Ym.room.member!loalEsWaTYwrVUNJLr:localhost:8800mm@anon-20191002_181700-16:localhost:8800$ e'Q  [$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebom.room.create!loalEsWaTYwrVUNJLr:localhost:8800m'mw@anon-20191002_181700-16:localhost:8800#e#Q [$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjncm.room.test!LaLcEGFLpjdlYlYKGC:localhost:8800mm@anon-20191002_181700-16:localhost:8800"e%Q [$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEm.room.topic!LaLcEGFLpjdlYlYKGC:localhost:8800mxm@anon-20191002_181700-16:localhost:8800+!e?Q [$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0m.room.history_visibility!LaLcEGFLpjdlYlYKGC:localhost:8800mmW@anon-20191002_181700-16:localhost:8800# e/Q [$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEm.room.join_rules!LaLcEGFLpjdlYlYKGC:localhost:8800mm@anon-20191002_181700-16:localhost:8800%e3Q [$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0m.room.power_levels!LaLcEGFLpjdlYlYKGC:localhost:8800mߴm@anon-20191002_181700-16:localhost:8800e'Q [$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUm.room.member!LaLcEGFLpjdlYlYKGC:localhost:8800m-m~@anon-20191002_181700-16:localhost:8800 e'Q  [$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZIm.room.create!LaLcEGFLpjdlYlYKGC:localhost:8800mm]@anon-20191002_181700-16:localhost:8800e#Q [$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjYm.room.test!odAvowLhHJcmkKlxFk:localhost:8800mm@anon-20191002_181700-16:localhost:8800e#Q [$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iIm.room.name!odAvowLhHJcmkKlxFk:localhost:8800mmԵ@anon-20191002_181700-16:localhost:8800+e?Q [$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQm.room.history_visibility!odAvowLhHJcmkKlxFk:localhost:8800mЖmJ@anon-20191002_181700-16:localhost:8800  _feQ[_$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 31}{"auth_events": ["$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "type": "m.room.power_levels", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040307636, "hashes": {"sha256": "6lZZ7Kv6oAdHhkjA8VSA1F9fEjtTDlr4s/t0W2OriCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W1gDRtlZDH0OcfsJnKZS7wd4L4E7JQU/73JBEojwrt9Nsh/cr2pk5++iqAtNWtJsRzQoTgcKDipqHyOxMiuwBw"}}, "unsigned": {"age_ts": 1570040307636}}peQ[s$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 30}{"auth_events": ["$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI"], "prev_events": ["$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI"], "type": "m.room.member", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040307245, "hashes": {"sha256": "JWo1TN+BpliRdIWnSp9bqVbgT5qRWl5Mbbxz/mG0tgc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "to8Ald2rdrlv+oPPwmMyBz7kiOPJE17IgJpImrdvWZOTxrr6pIAAQTSmZhYIwmjWoS1MaNheWStWKAXhFTkrAg"}}, "unsigned": {"age_ts": 1570040307245}}deQ[[$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 29}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040306689, "hashes": {"sha256": "lwcdYcf8NL0gAXhIISrM8F7yUUbEMqWyyI3E1XtQ+b4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jdAFLUWqeZ4ty8g47SpFXr27y9mr25mPLCKnS4VAsQEXSj6VqHyo3JG+50LF8IxNcygiWOi5vHB8fcTaF9KPBg"}}, "unsigned": {"age_ts": 1570040306689}}DeQ[$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY!odAvowLhHJcmkKlxFk:localhost:8800{"token_id": 47, "stream_ordering": 28}{"auth_events": ["$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU", "$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0", "$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ"], "prev_events": ["$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI"], "type": "m.room.test", "room_id": "!odAvowLhHJcmkKlxFk:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040305897, "hashes": {"sha256": "YAL1eja0IqAUUGgjSE55rnD9fnF5607TJlaWGv1thGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iSc9+8cf9LunoxG8BmCA/XM6+qPu4cra8tSJ0JBKkA12dFe9VuLcZwTLagxMSyM/2GaElTQl8umY0ca3Pq76Ag"}}, "unsigned": {"age_ts": 1570040305897}} U UD"eQ[$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 35}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE"], "type": "m.room.test", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040310418, "hashes": {"sha256": "GF360rW8tGK/jNnzf9SDQYtx7Z3/XFPglkG8y7jEbhs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5uzzSHuzEhrlugs70OfJ9nIrAr8otzyvPb96Cf2RoxHmsXTMTYdOB8wvNCRNYYEhNK/WaOKKIduv79Q4V2sPBA"}}, "unsigned": {"age_ts": 1570040310418}}j!eQ[g$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 34}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0"], "type": "m.room.topic", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"topic": "Test Room"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040309624, "hashes": {"sha256": "kCULAt9RZlfZvFzQdcl0NIOeaWJoVHMUxh2mcCCSPwQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B5yH53AVL2IDQZRjHpMalVTrJp3LUGTdx4mlP5uwFW9lrLKKqpjwABgNEhQQhogRQaBKG0pited+3jpsMnOdCQ"}}, "unsigned": {"age_ts": 1570040309624}} eQ[$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 33}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE"], "type": "m.room.history_visibility", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040308757, "hashes": {"sha256": "YDrbr4IEGq3C4E+yeg9xtmvoNvivx1GlWIzKVYOOZi0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rm+naPrwFg4d25QUYZyGwoK+mIIo3CZ20MAU+78VDEDEqgXcDZVdxfghRGfTrerzsWHB5OycjNHAAsnczFyMCw"}}, "unsigned": {"age_ts": 1570040308757}}peQ[s$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE!LaLcEGFLpjdlYlYKGC:localhost:8800{"token_id": 47, "stream_ordering": 32}{"auth_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0", "$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI", "$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU"], "prev_events": ["$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0"], "type": "m.room.join_rules", "room_id": "!LaLcEGFLpjdlYlYKGC:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040308216, "hashes": {"sha256": "vWzSXvTN6c8M8A0E27MoRK0P59a8VtGGZd/pcUT3Rro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jhgH4CUCRvGJhjbA0JPTCKKHPoD182EADjcRA5lkBjAbvomFT3XUkjhJ0+6dMty9Jt8hqZIA/XFNtWyIVueoBA"}}, "unsigned": {"age_ts": 1570040308216}} !X 0`(XXXXXX~_eeQ$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800~^eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800~]eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800~\eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800~[eeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800~ZeeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800~YeeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800~XeeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800~WeeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800~VeeQ$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800fUMMQ$15700403164ksjyG:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fTMMQ$15700403164ksjyG:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fSMMQ$15700403164ksjyG:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fRMMQ$15700403163gHYKC:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fQMMQ$15700403163gHYKC:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fPMMQ$15700403163gHYKC:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fOMMQ$15700403152dWVZA:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fNMMQ$15700403152dWVZA:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800fMMMQ$15700403151blJmZ:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800~LeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800~KeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~JeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800~IeeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800~HeeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~GeeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800~FeeQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800~EeeQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~DeeQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800~CeeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~BeeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800~AeeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800~@eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800~?eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800   =p&eQ[s$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 39}{"auth_events": ["$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ", "$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo", "$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"], "prev_events": ["$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ"], "type": "m.room.join_rules", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040312534, "hashes": {"sha256": "BcpDXjxw04FYxkanMR3OD5Ts/3CQj376/VZ1CmLUvEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hn2AsDUCaxS8U8fB6GGpcUJcFB20e4Vs55vclsJ67UMu9nBXzTlaqXSCUPmzTwbCqLHY3lpXDR0Ijp/ntdwDBg"}}, "unsigned": {"age_ts": 1570040312534}}f%eQ[_$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 38}{"auth_events": ["$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo", "$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"], "prev_events": ["$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"], "type": "m.room.power_levels", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040311900, "hashes": {"sha256": "ug7+TcZ6782Pseszkp2zxyIrde8wocqrHb1BPWvbfeo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hqC9WOoivaxaahGfYmQv05atS8eV+bxUrqa3/N1s/wpiLyBwce35gsMbRGDyLgIH4zCRvl2kMrgjI8fzesGlCw"}}, "unsigned": {"age_ts": 1570040311900}}p$eQ[s$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 37}{"auth_events": ["$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo"], "prev_events": ["$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo"], "type": "m.room.member", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040311480, "hashes": {"sha256": "y5PexWzxOdCpWOsOGJHH5VfHmvprkyMHaAUuOTLcalE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "trC9Y0fbo0Aq9tLqNYluWpBjgVHSlNokk2AUW08HfB/jnYuJLq1fBtjsOVgbeNO+A39gZCYbPKKPbQyACfC/Cw"}}, "unsigned": {"age_ts": 1570040311480}}d#eQ[[$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800{"token_id": 47, "stream_ordering": 36}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!loalEsWaTYwrVUNJLr:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040310823, "hashes": {"sha256": "/EHIJYflUOgaoNYXGQ4YP4WPMYaBH3c8ze93WdoKBrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YFIiX9UPfy1QZU9AId8zleOFjDdCHCdDhr7pdiwGn8FLYAnzlPjqtgLDs42woMwuhRfiCYRm63OHPS6HmYorAA"}}, "unsigned": {"age_ts": 1570040310823}} }.&Fu  n  f N6> ^  V 6eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800eeQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo!mvgUHEsfGqDkPQUvfG:localhost:8800 ZeeQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800?eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800 ځeeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800 veeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800^eeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800 =eeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800` eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800 ɁeeQ$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800 YeeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800 ReeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800 VeeQ$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800 eeQ$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800́eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800ieeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800feeQ$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800ρeeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800<eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800݁eeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800ρeeQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800*eeQ$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY!zNCItZNbpkZKuufRhC:localhost:8800  |t L \  dD T <4,$ t l eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800ɁeeQ$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800 !eeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800eeQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800eeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800LeeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800ՁeeQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800 :eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800ÁeeQ$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800oeeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:88005 #: b - S c!+;i3=eh#Q3 e#!loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ "Q'[e"!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Yb!Q' e!!loalEsWaTYwrVUNJLr:localhost:8800m.room.create$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Eboa Q% e !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topic$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEnQ? e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibility$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0fQ/ e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rules$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEhQ3 e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levels$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0 Q'[e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUbQ' e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI`Q# e!odAvowLhHJcmkKlxFk:localhost:8800m.room.name$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iInQ? e!odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibility$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQfQ/ e!odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rules$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApchQ3 e!odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levels$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU Q'[e!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQbQ' e!odAvowLhHJcmkKlxFk:localhost:8800m.room.create$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUhQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_access$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTsnQ? e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibility$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4cfQ/ e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rules$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYhQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levels$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8bQ' e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.create$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0h Q3 e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_access$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQn Q? e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibility$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUf Q/ e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rules$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxsh Q3 e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA Q'[e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wbQ' e!QZhNrNpwObZGJZpdAG:localhost:8800m.room.create$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXUqQ))e!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0nQ? e!zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibility$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1gfQ/ e!zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rules$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2MsfckQ9 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_alias$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYhQ3 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levels$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU Q'[e!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAa Q' e!zNCItZNbpkZKuufRhC:localhost:8800m.room.create$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A $(Q 3 C q   :b*:h6SckGQ9 eG!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_alias$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUchFQ3 eF!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levels$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU EQ'[eE!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0bDQ' eD!jYzridjeihmwPBuwLb:localhost:8800m.room.create$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8qCQ))eC!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DknBQ? eB!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibility$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8fAQ/ eA!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rules$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4h@Q3 e@!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30 ?Q'[e?!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEb>Q' e>!NZHpBquHDfJAjiawGk:localhost:8800m.room.create$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYn=Q? e=!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibility$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcf<Q/ eeeQ$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800=eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800<eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800;eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800:eeQ$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:88009eeQ$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:88008eeQ$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:88007eeQ$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:88006eeQ$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms!uxKymrHZeXRYCZwekU:localhost:88005eeQ$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:88004eeQ$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:88003eeQ$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk!sPWVGnipjiiWQpywNO:localhost:88002eeQ$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk!sPWVGnipjiiWQpywNO:localhost:88001eeQ$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4!sPWVGnipjiiWQpywNO:localhost:88000eeQ$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0!sPWVGnipjiiWQpywNO:localhost:8800/eeQ$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw!sPWVGnipjiiWQpywNO:localhost:8800.eeQ$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc!sPWVGnipjiiWQpywNO:localhost:8800-eeQ$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800,eeQ$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko!GixhPUMvtKSWoKRgvw:localhost:8800+eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0!GixhPUMvtKSWoKRgvw:localhost:8800*eeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800)eeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800(eeQ$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800g'MMQ$15700403175seOtB:localhost:8800$15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g&MMQ$15700403164ksjyG:localhost:8800$15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g%MMQ$15700403163gHYKC:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g$MMQ$15700403152dWVZA:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800g#MMQ$15700403151blJmZ:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800"eeQ$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!loalEsWaTYwrVUNJLr:localhost:8800!eeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800 eeQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800 #5 [ ! E S$P|E|i#Q3 e&!loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ "Q'[e%!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Yc!Q' e$!loalEsWaTYwrVUNJLr:localhost:8800m.room.create$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebob Q% e"!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topic$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEoQ? e!!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibility$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0gQ/ e !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rules$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEiQ3 e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levels$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0 Q'[e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUcQ' e!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZIaQ# e!odAvowLhHJcmkKlxFk:localhost:8800m.room.name$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iIoQ? e!odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibility$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQgQ/ e!odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rules$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApciQ3 e!odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levels$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU Q'[e!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQcQ' e!odAvowLhHJcmkKlxFk:localhost:8800m.room.create$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUiQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_access$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTsoQ? e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibility$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4cgQ/ e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rules$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYiQ3 e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levels$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90 Q'[e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8cQ' e!plcvCHNbjCkNMMxnTk:localhost:8800m.room.create$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0i Q3 e!QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_access$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQo Q? e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibility$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUg Q/ e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rules$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxsi Q3 e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA Q'[e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wcQ' e !QZhNrNpwObZGJZpdAG:localhost:8800m.room.create$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXUrQ))e!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0oQ? e!zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibility$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1ggQ/ e!zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rules$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2MsfclQ9 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_alias$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYiQ3 e!zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levels$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU Q'[e!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAcQ' e!zNCItZNbpkZKuufRhC:localhost:8800m.room.create$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A $h&M , : f  *Py#Oy3AhlGQ9 eM!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_alias$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUciFQ3 eL!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levels$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU EQ'[eK!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0cDQ' eJ!jYzridjeihmwPBuwLb:localhost:8800m.room.create$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8rCQ))eI!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkoBQ? eH!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibility$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8gAQ/ eG!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rules$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4i@Q3 eF!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30 ?Q'[eE!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEc>Q' eD!NZHpBquHDfJAjiawGk:localhost:8800m.room.create$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYo=Q? eC!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibility$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcg<Q/ eB!uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rules$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dki;Q3 eA!uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM :Q'[e@!uxKymrHZeXRYCZwekU:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1msc9Q' e?!uxKymrHZeXRYCZwekU:localhost:8800m.room.create$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwb8Q% e>!sPWVGnipjiiWQpywNO:localhost:8800m.room.topic$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0a7Q# e=!sPWVGnipjiiWQpywNO:localhost:8800m.room.name$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4r6Q))ePMY!3ce$eQ/ $N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800m.room.join_rulesg#eQ3 $TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ!loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels"eQ'[$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800a!eQ' $T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800m.room.create` eQ% $y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topicmeQ? $2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibilityeeQ/ $5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rulesgeQ3 $1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levelseQ'[$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create_eQ# $a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800m.room.namemeQ? $_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ!odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibilityeeQ/ $XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc!odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rulesgeQ3 $gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levelseQ'[$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800m.room.createeQ'[$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800geQ3 $OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs!plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_accessmeQ? $reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c!plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibilityeeQ/ $s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rulesgeQ3 $BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levelseQ'[$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800m.room.createg eQ3 $FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ!QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_accessm eQ? $vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU!QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibilitye eQ/ $vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs!QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rulesg eQ3 $wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels eQ'[$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800m.room.createpeQ))$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800meQ? $6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g!zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibilityeeQ/ $-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc!zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rulesjeQ9 $HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY!zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_aliasgeQ3 $JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levelseQ'[$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800aeQ' $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800m.room.create $:_ > J t   JiCOy"LweHeQ/ $aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rulesjGeQ9 $iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_aliasgFeQ3 $mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levelsEeQ'[$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800aDeQ' $KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800m.room.createpCeQ))$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800mBeQ? $-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibilityeAeQ/ $paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rulesg@eQ3 $l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels?eQ'[$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800a>eQ' $dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800m.room.createm=eQ? $en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibilitye<eQ/ $UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rulesg;eQ3 $fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels:eQ'[$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms!uxKymrHZeXRYCZwekU:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800a9eQ' $UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:8800m.room.create`8eQ% $ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0!sPWVGnipjiiWQpywNO:localhost:8800m.room.topic_7eQ# $xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:8800m.room.namep6eQ))$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk!sPWVGnipjiiWQpywNO:localhost:8800m.room.aliaseslocalhost:8800m5eQ? $IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk!sPWVGnipjiiWQpywNO:localhost:8800m.room.history_visibilitye4eQ/ $TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4!sPWVGnipjiiWQpywNO:localhost:8800m.room.join_rulesj3eQ9 $WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0!sPWVGnipjiiWQpywNO:localhost:8800m.room.canonical_aliasg2eQ3 $gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw!sPWVGnipjiiWQpywNO:localhost:8800m.room.power_levels1eQ'[$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc!sPWVGnipjiiWQpywNO:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800a0eQ' $5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800m.room.createm/eQ? $mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko!GixhPUMvtKSWoKRgvw:localhost:8800m.room.history_visibilitye.eQ/ $h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0!GixhPUMvtKSWoKRgvw:localhost:8800m.room.join_rulesg-eQ3 $hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800m.room.power_levels,eQ'[$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800a+eQ' $drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800m.room.createa*MQ? $15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.history_visibilityY)MQ/ $15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.join_rules[(MQ3 $15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.power_levels|'MQ'[$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800U&MQ' $15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800m.room.createm%eQ? $Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!loalEsWaTYwrVUNJLr:localhost:8800m.room.history_visibility  h-MQ[} $15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 46}{"auth_events": [["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}], ["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "prev_events": [["$15700403163gHYKC:localhost:8800", {"sha256": "3vE7VNJbjajv2H/ko3n7edaDZc1TQ/4y4lpMl6fx+Tc"}]], "type": "m.room.history_visibility", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$15700403164ksjyG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040316952, "hashes": {"sha256": "e/12QvjYmwyUs0bieRKIZNSx8ReoimtHbh8ula12RG8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MfQxIXsthe5CHffmrEFHMBExIeCc/fXVwflAlkLCjt505+mvCOC+EkBWszJmX/S16kkeQ3JVsOy3PcgO1iUGAg"}}, "unsigned": {"age_ts": 1570040316952}}W,MQ[[ $15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 45}{"auth_events": [["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}], ["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}]], "prev_events": [["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}]], "type": "m.room.join_rules", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$15700403163gHYKC:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040316378, "hashes": {"sha256": "pM1yRptZUdnLF2Uy+OSkXjgL+GaxsUBgvMW74lgHKpU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TOXHT4y8EX6vV+Ai+T2MG5ik12iqJVMtd5YfiY5d5kYPgMf4UBjPEyG4IbHVuu4jEV6wiKJ8nwDNIOHSaeJlAA"}}, "unsigned": {"age_ts": 1570040316378}}+MQ[e $15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 44}{"auth_events": [["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "prev_events": [["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "type": "m.room.power_levels", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$15700403152dWVZA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040315787, "hashes": {"sha256": "FQFDub0ikVi9evgpVXlxoX74GZXUu0UhGfC99ROHirg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LnFpewLF9P558rjLQMU6GHf7K3SSjLoszVBIyhZ9iqufIyBXwtzXmrD6wi73D41phFQDkW8YsimfeBMO+xZnDA"}}, "unsigned": {"age_ts": 1570040315787}} M}m;3W ?esA y G  E -  MQ% _k9q  ] S !w Y '+ K 1e$-UT31e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYv1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYw1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE 1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c 1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c 1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQf1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQe1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMk1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE 1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE 1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I-1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I,1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8@1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8?1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8>1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMl1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gT1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMm1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQg1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYx1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg-1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYo1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYn1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cu1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2ct1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cs1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg,1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcb1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vca1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg.1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8n1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8m1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcc1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8o1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_5021e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUc1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUb1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUa1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggg1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggf1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k}1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k|1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k{1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_81e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_81e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_81e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQr0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc 0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc J Ph6( V $ \ *tT Z"NzHj8Bn<p> v D  b0 | J  h6rK1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg 1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcs1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Uq1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw 1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs &1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Ur1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Us1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac ;1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac :1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac 91e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM;1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsT1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUX1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUW1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsS1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsR1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcr1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw 1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs '1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI 1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sx1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sw1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sv1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3su1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc 1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg:1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg91e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg81e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg  ff1eQ[_$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800{"token_id": 47, "stream_ordering": 50}{"auth_events": ["$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg", "$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo"], "prev_events": ["$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo"], "type": "m.room.power_levels", "room_id": "!GixhPUMvtKSWoKRgvw:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"users": {"@anon-20191002_181700-16:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040319459, "hashes": {"sha256": "sXYjCymdmpVTY+eVvKAAm6AM1fwpSNnqZ9cJZqAyOT8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tywg/E+f6AscqTbzaAI0r/JzD8H7wm/pIzMCAfqYVtYwzu1pv2fiTHs2ur7YM3wwvpWS/OJgwRsafmoD8eztCA"}}, "unsigned": {"age_ts": 1570040319459}}p0eQ[s$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800{"token_id": 47, "stream_ordering": 49}{"auth_events": ["$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg"], "prev_events": ["$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg"], "type": "m.room.member", "room_id": "!GixhPUMvtKSWoKRgvw:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-16", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040319006, "hashes": {"sha256": "m2Hrhuo3hQRnyzALib4SichGoJPRTIFduz2++qgdazg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wDVDzk6ANFAuqad90I7K8t8GfM72IsME+k54FDS+GH0MpvpSzwEyMv+k9tpIWhMyN/Xqt8Ll1ccuSo3lG116CA"}}, "unsigned": {"age_ts": 1570040319006}}v/eQ[$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800{"token_id": 47, "stream_ordering": 48}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GixhPUMvtKSWoKRgvw:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {"room_version": "4", "test": "azerty", "creator": "@anon-20191002_181700-16:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040318368, "hashes": {"sha256": "Kxt2/mSZaVEM5vaqJTDiQJkndVJvcfR8iwT5IRcHcFQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vjSMfXU48t2KmFecGvB7K2SC9nBm8tfzza9on9y4jittWCRNfbtaiK5eIHNLlRghfcCQZdKjBUCJiUPnMUJQBw"}}, "unsigned": {"age_ts": 1570040318368}}+.MQ[ $15700403175seOtB:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800{"token_id": 47, "stream_ordering": 47}{"auth_events": [["$15700403152dWVZA:localhost:8800", {"sha256": "lIIHhTiQ+jPkE8NntZNuqwL5QbaHYcFxPmC9Br8gVcI"}], ["$15700403140fJvpV:localhost:8800", {"sha256": "oDEFGZBZFmVJR0kpIE5rZIKvkF3kM6SAVjz/qcgJUyo"}], ["$15700403151blJmZ:localhost:8800", {"sha256": "6QM+Y5mE3hehxUdZdbBYscUx7KlbaqQSE7Na2rF90l0"}]], "prev_events": [["$15700403164ksjyG:localhost:8800", {"sha256": "sCI/XhS8bO3QZue8YRWNcfu6y0O42ZTuVC9tDCBoV2M"}]], "type": "m.room.test", "room_id": "!zhCsYcaweVFJLLNwBz:localhost:8800", "sender": "@anon-20191002_181700-16:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "event_id": "$15700403175seOtB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040317768, "hashes": {"sha256": "CiW/k0IkAbPgaZLFixm+E+GdE8vwmfK6m5PzKetNCaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9+2pyEaUMraKAjSiFrJik3Kj6OSjTzycHLba2dt9pSF53Q9vzTjlZsndWXys6klKcGsYTEWfq7zCQ/8fZtyJBw"}}, "unsigned": {"age_ts": 1570040317768}} .xPH @ 8 0 ( x ph`XPH@\xJ.ML$15700403175seOtB:localhost:8800sha256,e3QJ)U!yr.J-ML$15700403164ksjyG:localhost:8800sha256"?^lfaqCٔT/m hWcJ,ML$15700403163gHYKC:localhost:8800sha256;T[yyփeSC2ZL7J+ML$15700403152dWVZA:localhost:8800sha25683gnAaq>` UJ*ML$15700403151blJmZ:localhost:8800sha256>cGYuX1[jZڱ}]J)ML$15700403140fJvpV:localhost:8800sha2561YeIGI) Nkd]3V< S*V(eL$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepwsha256F& WZA$;qWTb+zV'eL$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQsha256/qJxktz) zG|q]IVƷT4V&eL$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Ysha2567xjI#t[B%]WH7fV%eL$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQsha256LM`RZD4,TA$sWD Q}O7$V$eL$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Ysha256I㙲C*^ts C\GeVV#eL$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebosha256O&Lc<16s/sV"eL$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjncsha256Q'z{LB^hg2W[{۷*ǎwV!eL$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEsha256E T!\&=~qasNV eL$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0sha256ػ` l('vH_2E( VeL$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEsha256i tmyV›^[&5qDf#0VeL$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0sha256/ Th|Ja'z`_9WVeL$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUsha256yWC]_Pt 7LZVTeL$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIsha256%(/œp~ʰ !n=dbVSeL$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gsha2562`{ UäR%).$VReL$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicsha256-&y w<=AoHEeK BӚ'VQeL$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wsha256 h'lyt Ƅ[bBnxVPeL$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcsha256Oyb` WvP7k(04ص{'VOeL$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcsha2562,Y(Db0Ȃv2'\GVNeL$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4sha256vY(,뺬ڂx64{NqVMeL$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czssha256h݇`#f X:Ays;VLeL$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcsha2560oz5pS=vWpv}GVKeL$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUsha256RusQW\exVG VJeL$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0sha256V|O\"F|ܬk$MVIeL$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8sha256)rݗ% _fY4JAzVHeL$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dksha256?՗<2<.Ž:+J7؍o09VGeL$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8sha256Q$ r@4rA03VFeL$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4sha256].*^pF=?VEeL$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30sha256JEȉj ^T23.XhSg}VDeL$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEsha256?OBYP#VeӖ64AVCeL$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYsha256tw`"wMb:a0hzSVBeL$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcsha256z} Ҩ5DIHQ@`zx6d%VAeL$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dksha256Pwsu`ykO\LɞϚ?G/aAl߭V@eL$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMsha2562_GY' ϭ+uʺ-( cV?eL$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1mssha256umdJ+bG?jgkV>eL$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwsha256P8ć \]tLpM/0f1(ZƠV=eL$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0sha256]22%[lsMvГhL#`mV<eL$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4sha256xwϮ+l2;SaǼI>V;eL$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBksha256ťgWQ(%nޥ5>]Ixo&lV:eL$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYksha256 J/j6}uZ-ӥi9DѩV9eL$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4sha256LCzgًeɡ^V8eL$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0sha256XC7sjg~~LYÜҠNອnV7eL$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirwsha256; )Ft6͉&ԋSފV6eL$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNcsha2562#CwMP2lj M(jvV5eL$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4sha256K5( v7cBtlxNCV4eL$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPAsha256a4Z7 C<Qe?!uxKymrHZeXRYCZwekU:localhost:8800$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwS=Qe>!sPWVGnipjiiWQpywNO:localhost:8800$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0S<Qe=!sPWVGnipjiiWQpywNO:localhost:8800$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4S;QeQe>!NZHpBquHDfJAjiawGk:localhost:8800$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYS=Qe=!uxKymrHZeXRYCZwekU:localhost:8800$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcS<QeeQ[$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:8800{"token_id": 51, "stream_ordering": 63}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uxKymrHZeXRYCZwekU:localhost:8800", "sender": "@anon-20191002_181700-20:localhost:8800", "content": {"m.federate": false, "room_version": "4", "creator": "@anon-20191002_181700-20:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040328775, "hashes": {"sha256": "CUNoCzrD2yY7Keuobg3bmjBLGElYXHei4If9FjbJIz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ev+tbp6t8Z/bOaRMdUk4R2pRiUkz9rlkE6Lp/wSyZ8NzJgWlIjROca4Y3mHysJeUEVWzb+TvYGYH5IWz3eA1AQ"}}, "unsigned": {"age_ts": 1570040328775}}  | "fEeQ[_$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 70}{"auth_events": ["$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "type": "m.room.power_levels", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"users": {"@anon-20191002_181700-21:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040333261, "hashes": {"sha256": "E5MxceBEsrvbHveiyOGoDrGriEXGMp/LzcN2pX3CF+k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Lij62VIZtaTXPHZ1d9Cv74tZAUwWpf/8FahN5iiDr358BY1OKZ3PNWWFNm5kY9icbdyK/eDLARhnIbeTCPhAA"}}, "unsigned": {"age_ts": 1570040333261}}pDeQ[s$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 69}{"auth_events": ["$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY"], "prev_events": ["$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY"], "type": "m.room.member", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-21", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-21:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040332806, "hashes": {"sha256": "GmO5JOvOHvXPa3iiorzz5AcmaR1WFvBE4FOiO/1QrWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AynQaeG5onHkx20yXPKoM7xqB73v9oJ85vJacUalv3F0NqK1uUhmeXTy1lOnFXEPB0oXWyuDsYgZB5mPOQMpDw"}}, "unsigned": {"age_ts": 1570040332806}}dCeQ[[$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 68}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-21:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040332226, "hashes": {"sha256": "YeU9KnbW06uu1gFgmgMsU78V6odng+KVALOUZiaobug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gCQde49Qzee7ro7N8cXIIyO0zjTbXfSmQWUp8EKad6hhhEe1qt4wCf4kYle/n0mCffbFs7H/yq3tsKou7QfbDA"}}, "unsigned": {"age_ts": 1570040332226}}BeQ[$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800{"token_id": 51, "stream_ordering": 67}{"auth_events": ["$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM", "$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw", "$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms"], "prev_events": ["$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk"], "type": "m.room.history_visibility", "room_id": "!uxKymrHZeXRYCZwekU:localhost:8800", "sender": "@anon-20191002_181700-20:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040330834, "hashes": {"sha256": "Ow14NY6D7+lryEXw5rUPLS3RGZFZpAR4zWaYRN89Ga4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NUB7Hp25mquBzw9RZvVPHI9cp28oYeeD8asriBmWCs7MOb0PTXzuIe4Z3+ZDy1E+JYl2bbvXG6nq28E14JGnAA"}}, "unsigned": {"age_ts": 1570040330834}} >l5 M Y Y- h  5  QK  =J Xi#nYC+3/ !12:localhost:42455m.room.join_rules  O3']!13:localhost:42455m.room.member@anon-20191002_181700-677:localhost:8800 +3/ !13:localhost:42455m.room.join_rules '3' !13:localhost:42455m.room.create C3'E!13:localhost:42455m.room.member@__ANON__-51:localhost:42455 C3'E!13:localhost:42455m.room.member@__ANON__-50:localhost:42455 O3']!12:localhost:42455m.room.member@anon-20191002_181700-676:localhost:8800 C3'E!12:localhost:42455m.room.member@__ANON__-49:localhost:42455 '3' !12:localhost:42455m.room.create BQ? !ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibility :Q/ !ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rules <Q3 !ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels ^Q']!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800 6Q' !ABHbfUdkHCJksMsaUt:localhost:8800m.room.create :Q/ !AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules fBQ? !AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility g6Q' !AYFqrmxwClFQlcTTYq:localhost:8800m.room.create c<Q3 !AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels]Q'[!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800:Q/ !AWfbViAZparIjmDaVT:localhost:8800m.room.join_rulesBQ? !AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibility6Q' !AWfbViAZparIjmDaVT:localhost:8800m.room.createEQ))!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800<Q3 !AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levels ^Q']!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800 RQ'E!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455 :Q/ !AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rules BQ? !AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibility 6Q' !AOEdqVKPFddrqbKPOL:localhost:8800m.room.create <Q3 !AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels4Q# !AMLmLqizBFklpqKibP:localhost:8800m.room.name^Q']!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800^Q']!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800^Q']!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800:Q/ !AMLmLqizBFklpqKibP:localhost:8800m.room.join_rulesBQ? !AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibility6Q' !AMLmLqizBFklpqKibP:localhost:8800m.room.createN1']!9:localhost:42455m.room.member@anon-20191002_181700-671:localhost:8800 {B1'E!9:localhost:42455m.room.member@__ANON__-45:localhost:42455 z*1/ !9:localhost:42455m.room.join_rules y&1' !9:localhost:42455m.room.create xN1']!6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800 B1'E!6:localhost:42455m.room.member@__ANON__-20:localhost:42455 *1/ !6:localhost:42455m.room.join_rules &1' !6:localhost:42455m.room.create N1']!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800 B1'E!5:localhost:42455m.room.member@__ANON__-10:localhost:42455 *1/ !5:localhost:42455m.room.join_rules &1' !5:localhost:42455m.room.create O3']!11:localhost:42455m.room.member@anon-20191002_181700-674:localhost:8800 O3']!11:localhost:42455m.room.member@anon-20191002_181700-673:localhost:8800 C3'E!11:localhost:42455m.room.member@__ANON__-47:localhost:42455 +3/ !11:localhost:42455m.room.join_rules '3' !11:localhost:42455m.room.create O3']!10:localhost:42455m.room.member@anon-20191002_181700-672:localhost:8800 C3'E!10:localhost:42455m.room.member@__ANON__-46:localhost:42455 ~+3/ !10:localhost:42455m.room.join_rules |'3' !10:localhost:42455m.room.create }N1']!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800 \A1'C!0:localhost:42455m.room.member@__ANON__-0:localhost:42455 [*1/ !0:localhost:42455m.room.join_rules Y&1' !0:localhost:42455m.room.create Z =2M s\fR  9  D IhN l   W  r ; I=BQ? !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibility G^Q']!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800 BQ? !BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibility :Q/ !BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rules <Q3 !BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels ^Q']!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800 6Q' !BKZJsoFNhiLTDYNclB:localhost:8800m.room.create BQ? !AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibility 6Q' !AjjrNwXmPTCruHxaJq:localhost:8800m.room.createBQ? !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibility96Q' !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create5CQ?!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3 <Q3 !AjjrNwXmPTCruHxaJq:localhost:8800m.room.power_levels^Q']!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800 ^Q']!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-143:localhost:8800:Q/ !AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rules?Q9 !AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_aliasEQ))!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levels e<Q3 !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels E^Q']!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800 D6Q' !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.create C^Q']!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800 H:Q/ !BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rules F6Q' !BfEFIDBthhkweqfhir:localhost:8800m.room.create6Q' !BfEFIDBthhkweqfhir:localhost:8800m.room.avatar<Q3 !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels<^Q']!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800;HQ'1!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800@:Q/ !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rules=BQ? !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility><Q3 !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access?6Q' !BckZfhQgrcyiMhEAAJ:localhost:8800m.room.create:<Q3 !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels^Q']!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800^Q']!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800:Q/ !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rulesBQ? !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibility6Q' !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.create?Q9 !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_aliasEQ))!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800;Q3 !BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levelsZ\Q'[!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800Y9Q/ !BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rules[AQ? !BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility\5Q' !BDASLhdcKfNwxCTCSg:localhost:8800m.room.createX<Q3 !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels7^Q']!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829:^Q']!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:88006:Q/ !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rules8 b~ | z x v trpnljhfdb~eeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~eeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800~eeQ$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800  wdIeQ[[$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 74}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-23:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040337457, "hashes": {"sha256": "cYKbG6IeGZYA2yXoFpegEqodqf7u9+unUA2U/Nw/oro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "keGJEFpT1UZg+VIOcCvFMrgHyS5L+GzAx4Cv2+tqyQvXW55ttSDZVjIilhqumKbZ5Bd+r+x35rVy3Bn8DW24Aw"}}, "unsigned": {"age_ts": 1570040337457}}HeQ[1$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 73}{"auth_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30", "$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8"], "type": "m.room.aliases", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"aliases": ["#__ANON__-1:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040335536, "hashes": {"sha256": "X85bYn4qGSaXmpT9AD2IPXid4ICrTh/FuNP8iSZVDVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s3geuMjOOov07E0t+Y+34oEcDf9rNH886wttTws5zZCRPUyQ2/hAO0FPVHBwn6+VdKw0q/vhWGvLZkV1NCpqDg"}}, "unsigned": {"age_ts": 1570040335536}}GeQ[$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 72}{"auth_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30", "$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4"], "type": "m.room.history_visibility", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040334394, "hashes": {"sha256": "WyeJYX1Odu4jz1Srhw8IHbGXBsjXbkOwO6b6R/ypPgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NW/aijLkQv2dPBWi+KG0G805P6lu5Y2nF/6FpSRnZJnHAOJh++f2pvici+Qg4hUEbNX64nPDQ5uZEicII2tCBw"}}, "unsigned": {"age_ts": 1570040334394}}pFeQ[s$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800{"token_id": 52, "stream_ordering": 71}{"auth_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30", "$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY", "$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE"], "prev_events": ["$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30"], "type": "m.room.join_rules", "room_id": "!NZHpBquHDfJAjiawGk:localhost:8800", "sender": "@anon-20191002_181700-21:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040333877, "hashes": {"sha256": "IXeZC7aYlRwXDRIJSeGxqKd5gigh5XjmwkvLEQX4E8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xm58OLK5kNSTB++ayFs5tUnDQf8GXZeuIKKk261YKxxcTt1Fgl2surP/RqcxgkMm+zBr1QSmTTcKvAwIRdb5DA"}}, "unsigned": {"age_ts": 1570040333877}} EUr9 V  r 9 U  q 8 T p7So6Rn5Qm4P8e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQsha2568e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYsha2568e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4Esha2568e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUsha256 8e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgsha256 8e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwsha2568e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgsha2568e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Ysha256 8e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUsha2568e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acsha256*8e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMsha2568e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYsha2568e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcosha256 8e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Usha256c8e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6Msha256_8e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0sha2568e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMsha256q8e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZssha256F8e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcsha256q8e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5Msha2568e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAsha256 <8e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAsha256|8e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0sha256%8e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcsha256 8e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnksha2568e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88sha2568e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bwsha256*8e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4sha2568e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcsha256C8e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYsha256M8e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTcsha256 8e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbssha256#8e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBksha2568e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1Isha256>8e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYsha256q8e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUsha2568e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggsha2568e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMsha256 8e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0sha2568e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nssha256 8e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4sha256c8e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEsha2568e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwsha256I8e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEsha2568e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4sha256[8e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwsha256 8e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIsha256 8e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2csha256 *8e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50sha2568e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcsha2568e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUssha256 8e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8sha256 8e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0csha2568e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7ksha2568e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8sha256l8e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gsha256 a8e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwsha256+7e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8sha256G8e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYsha256 (8e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYsha2568e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygsha256 8e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUsha2568e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYsha256 8e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcsha256 $8e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQsha256S7e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfcsha2568e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5ksha256?8e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8sha256 ?8e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwsha256 MUq8 T  p 7 T  p 7 S o6S3H(j>a4~P"j<V(1$0:localhost:42455sha256 K-O$157004176929ezeJB:localhost:8800sha256-O$157004176828ZZJWh:localhost:8800sha256-O$157004176727QjUJj:localhost:8800sha256-O$157004175925JuKDZ:localhost:8800sha256-O$157004175824dFhko:localhost:8800sha256-O$157004175723CBKAp:localhost:8800sha256-O$157004175622yCTNM:localhost:8800sha256-O$157004175621DDceh:localhost:8800sha256-O$157004175520JddPP:localhost:8800sha256-O$157004174718wxlLH:localhost:8800sha256-O$157004174617osGDW:localhost:8800sha256-O$157004174616PvcHe:localhost:8800sha256-O$157004174515XsrNb:localhost:8800sha256-O$157004174414klNmS:localhost:8800sha256-O$157004174313OKfBg:localhost:8800sha256-O$157004173511wRnRr:localhost:8800sha256-O$157004173510EIiCi:localhost:8800sha256,M$15700417349vUcYV:localhost:8800sha256,M$15700417338MBNFd:localhost:8800sha256,M$15700417327EEUMr:localhost:8800sha256,M$15700417316amiRb:localhost:8800sha256+M$15700403175seOtB:localhost:8800sha256.+M$15700403164ksjyG:localhost:8800sha256-+M$15700403163gHYKC:localhost:8800sha256,+M$15700403152dWVZA:localhost:8800sha256++M$15700403151blJmZ:localhost:8800sha256*+M$15700403140fJvpV:localhost:8800sha256)3$14:localhost:42455sha256 8e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgsha2568e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Msha256 3$13:localhost:42455sha256 8e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSosha256"8e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgsha2563$12:localhost:42455sha256 }8e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYsha256 3$11:localhost:42455sha256 |3$10:localhost:42455sha256 {7e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0sha2568e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewsha2568e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUosha256|8e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQsha256:8e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQsha256 8e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wsha256 8e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4sha256 N8e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8sha2568e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwsha2568e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAsha2568e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbassha256Z8e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsksha256U8e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAssha2568e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkosha2568e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMsha2568e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8sha256.8e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAsha2568e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEsha256 8e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUsha256%8e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9osha256R7e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwsha256n8e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMsha256)8e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wsha256n8e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgsha256 8e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQsha256 B8e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIsha2568e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEsha256 8e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMsha2568e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4csha256k8e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuUsha25648e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0sha2568e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEsha2568e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3ssha25658e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfcsha2568e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwsha256o8e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcsha2568e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQsha256 I8e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIsha2568e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgsha256 ` k  t 0 Jd"2Aae'Q [$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAm.room.member!BDASLhdcKfNwxCTCSg:localhost:8800m7m@anon-20191002_181700-32:localhost:8800` e'Q  [$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvom.room.create!BDASLhdcKfNwxCTCSg:localhost:8800mmS@anon-20191002_181700-32:localhost:8800 _e)Q [$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYm.room.message!xwoIOPTGmJIlTXakxC:localhost:8800mum@anon-20191002_181700-31:localhost:8800+^e?Q [$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUm.room.history_visibility!xwoIOPTGmJIlTXakxC:localhost:8800mmm@anon-20191002_181700-31:localhost:8800#]e/Q [$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxom.room.join_rules!xwoIOPTGmJIlTXakxC:localhost:8800mmf@anon-20191002_181700-31:localhost:8800%\e3Q [$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwm.room.power_levels!xwoIOPTGmJIlTXakxC:localhost:8800mcmH@anon-20191002_181700-31:localhost:8800[e'Q [$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8m.room.member!xwoIOPTGmJIlTXakxC:localhost:8800mmo@anon-20191002_181700-31:localhost:8800Z e'Q  [$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMm.room.create!xwoIOPTGmJIlTXakxC:localhost:8800m_m@anon-20191002_181700-31:localhost:8800Ye'Q [$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwm.room.member!jYzridjeihmwPBuwLb:localhost:8800mm@anon-20191002_181700-23:localhost:8800Xe'Q [$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMm.room.member!jYzridjeihmwPBuwLb:localhost:8800mKm@anon-20191002_181700-23:localhost:8800We'Q [$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUm.room.member!jYzridjeihmwPBuwLb:localhost:8800m}Pm~@anon-20191002_181700-28:localhost:8800Ve'Q [ $sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mzm{@anon-20191002_181700-28:localhost:8800Ue'Q [ $JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mvmw-@anon-20191002_181700-27:localhost:8800Te'Q [ $msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mqmre@anon-20191002_181700-26:localhost:8800Se'Q [ $LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mmmn]@anon-20191002_181700-25:localhost:8800Re'Q [ $C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wm.room.member!jYzridjeihmwPBuwLb:localhost:8800 mimj+@anon-20191002_181700-24:localhost:8800Qe'Q [$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcm.room.member!jYzridjeihmwPBuwLb:localhost:8800memf@anon-20191002_181700-22:localhost:8800 Pe)Q [$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcm.room.aliases!jYzridjeihmwPBuwLb:localhost:8800mcymd5@anon-20191002_181700-23:localhost:8800+Oe?Q [$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4m.room.history_visibility!jYzridjeihmwPBuwLb:localhost:8800m`Pma@anon-20191002_181700-23:localhost:8800#Ne/Q [$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsm.room.join_rules!jYzridjeihmwPBuwLb:localhost:8800m]{m^:@anon-20191002_181700-23:localhost:8800(Me9Q [$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcm.room.canonical_alias!jYzridjeihmwPBuwLb:localhost:8800mZm[@anon-20191002_181700-23:localhost:8800%Le3Q [$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUm.room.power_levels!jYzridjeihmwPBuwLb:localhost:8800mXmY@anon-20191002_181700-23:localhost:8800Ke'Q [$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0m.room.member!jYzridjeihmwPBuwLb:localhost:8800mVmW(@anon-20191002_181700-23:localhost:8800J e'Q  [$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8m.room.create!jYzridjeihmwPBuwLb:localhost:8800mT1mT@anon-20191002_181700-23:localhost:8800 ) $)pMeQ[s$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 78}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc"], "type": "m.room.join_rules", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040339835, "hashes": {"sha256": "qOJa+MVmQQx44B7ztR/15ezR5ruLgXVNMa8mZU/NdmI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h7utsmJfDFyLHepoPiOOFf+fGqPYBLZ5RGHcrEKz74VjQyIPevqeFQWJU0TOr/zIBwqZz42xA3ZCV1b4OtKMBA"}}, "unsigned": {"age_ts": 1570040339835}}LeQ[$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 77}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU"], "type": "m.room.canonical_alias", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"alias": "#__ANON__-2:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040339185, "hashes": {"sha256": "y9V4UkeVkX2w0+6XeLQIUJ8NvLO+VtRcRY8qGq1Sbz8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T4YM4fjAEZM9afCB//OxeFiPIP/5BXtVjNPsc0hdDLYsa7jpwtqX83gkE3NJQnQjs5bn0eFyYj9EMXdu605aDw"}}, "unsigned": {"age_ts": 1570040339185}}fKeQ[_$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 76}{"auth_events": ["$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "type": "m.room.power_levels", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"users": {"@anon-20191002_181700-23:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040338595, "hashes": {"sha256": "xUCaXB5iLvWes426zbeotYSJrDZplxQM+f3ypKEqhjY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5bFLtZyna+9foOx+K1XEvKRtfIPwHEzFDmIzio3oRc8CLtAmDFs2CnYz8fyu6l1gwVIgEvvQRe+BVhhE7HW5DQ"}}, "unsigned": {"age_ts": 1570040338595}}pJeQ[s$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 75}{"auth_events": ["$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8"], "prev_events": ["$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-23", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-23:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040338108, "hashes": {"sha256": "ok7ERkkMNJ4/k6syIG+Q8/RRDFIqWbamqJD7RTg1EhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0egRsQcFo+WtXUr8lecSqvLzuAiIUNLgsrAoWkjnxGlMScNK9Gbf+vHvMxkKxqQnPaCR2z1VKK1WsJEeegWMBw"}}, "unsigned": {"age_ts": 1570040338108}}  |t l d E=%5- e ] U Mo Q weeQ$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxleeQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800%eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800DeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800 ́eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800DeeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829/eeQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800 teeQ$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800 TeeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800leeQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800eeQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800 &eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800eeQ$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800BeeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800 |eeQ$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800  a} { y w u sqomkigeca^eeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800]eeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800\eeQ$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800[eeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800ZeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800YeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800XeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800WeeQ$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800VeeQ$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800UeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800TeeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800SeeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800ReeQ$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800QeeQ$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800PeeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800OeeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800NeeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800MeeQ$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800LeeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800KeeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800JeeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800IeeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800HeeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800GeeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800FeeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800EeeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800DeeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800CeeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800BeeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800AeeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800@eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800 !()  m U eo3=eu 3CqbhQ' eh!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.create$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkngQ? eg!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibility$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMffQ/ ef!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rules$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwheQ3 ee!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levels$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc dQ'[ed!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgbcQ' ec!scyFsXcUIJiLIMwWMY:localhost:8800m.room.create$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMnbQ? eb!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibility$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYfaQ/ ea!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rules$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h`Q3 e`!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo _Q'[e_!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQb^Q' e^!aWJOsiuJONOvjKWEjO:localhost:8800m.room.create$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4n]Q? e]!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwf\Q/ e\!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rules$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoh[Q3 e[!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levels$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk ZQ'[eZ!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAbYQ' eY!BDASLhdcKfNwxCTCSg:localhost:8800m.room.create$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvonXQ? eX!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibility$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUfWQ/ eW!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rules$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxohVQ3 eV!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levels$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw UQ'[eU!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8bTQ' eT!xwoIOPTGmJIlTXakxC:localhost:8800m.room.create$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM SQ'[eS!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw RQ'[eR!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM QQ'[eQ!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU PQ'[eP!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU OQ'[eO!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI NQ'[eN!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g MQ'[eM!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic LQ'[eL!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w KQ'[eK!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcqJQ))eJ!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcnIQ? eI!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibility$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4fHQ/ eH!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rules$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs !P&% ~ d  ,4Zh#1]&PchQ' er!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.create$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkogQ? ep!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibility$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMgfQ/ eo!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rules$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwieQ3 en!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levels$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc dQ'[em!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgccQ' el!scyFsXcUIJiLIMwWMY:localhost:8800m.room.create$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMobQ? ej!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibility$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYgaQ/ ei!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rules$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0i`Q3 eh!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo _Q'[eg!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQc^Q' ef!aWJOsiuJONOvjKWEjO:localhost:8800m.room.create$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4o]Q? ed!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwg\Q/ ec!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rules$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoi[Q3 eb!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levels$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk ZQ'[ea!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAcYQ' e`!BDASLhdcKfNwxCTCSg:localhost:8800m.room.create$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvooXQ? e^!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibility$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUgWQ/ e]!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rules$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoiVQ3 e\!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levels$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw UQ'[e[!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8cTQ' eZ!xwoIOPTGmJIlTXakxC:localhost:8800m.room.create$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM SQ'[eY!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw RQ'[eX!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM6QQ'[eeW!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU PQ'[eV!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU OQ'[eU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI NQ'[eT!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g MQ'[eS!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic LQ'[eR!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w KQ'[eQ!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcrJQ))eP!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcoIQ? eO!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibility$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4gHQ/ eN!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rules$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs !  K S} D*) | #2:dr e[eQ/ $GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rulesgZeQ3 $VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levels YeQ'[$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800joinaXeQ' $4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.createmWeQ? $8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibilityeVeQ/ $CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rulesgUeQ3 $yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levels TeQ'[$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800joinaSeQ' $zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800m.room.create ReQ'[$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800banQeQ'[$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800invite PeQ'[$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800leavejGeQ9 $iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_aliasgFeQ3 $mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800m.room.power_levels EeQ'[$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800joinaDeQ' $KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800m.room.createpCeQ))$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800mBeQ? $-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibilityeAeQ/ $paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4!NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rulesg@eQ3 $l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels ?eQ'[$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800joina>eQ' $dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:8800m.room.createm=eQ? $en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibilitye<eQ/ $UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rulesg;eQ3 $fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels OeQ'[$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800join NeQ'[$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800join MeQ'[$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800join LeQ'[$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800join KeQ'[$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800joinpJeQ))$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800mIeQ? $doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibilityeHeQ/ $aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800m.room.join_rules D |DPQeQ[3$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 55, "stream_ordering": 82}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-24:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-24", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-24:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040342985, "hashes": {"sha256": "evmDL6FL2m3tbCvcq6yHJHqjPtBtqVsMia7xX33CmRA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MtVaEUZ/WzB9sMGc80hARmvgHzHNRmeeEhr+wbHM1sdAQJdrtObrN0SfQFqascCx6ys6nVPgjuUPCWf4MvE0Cg"}}, "unsigned": {"age_ts": 1570040342985}}PPeQ[3$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 53, "stream_ordering": 81}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-22:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-22", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-22:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040341950, "hashes": {"sha256": "QhoPyZekCUIREPo+vpv/u3Rz4/VsI3BFTnQIsg6rnWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9C1fW7rPMSmeWhS/vJFSe7QdhaqvbOKOuMAtJOj+5jFHbF0feQTitW3oTpAtM4mN+Cgtq0JAEPwsF1XiD6MrCw"}}, "unsigned": {"age_ts": 1570040341950}}OeQ[1$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 80}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4"], "type": "m.room.aliases", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"aliases": ["#__ANON__-2:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040341369, "hashes": {"sha256": "mWu5UUZEufOMsEi2J8e8bo4BimGvXttdR5x1JMaYNAg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2/atFwPu0Qc6qZbKcnHbQ/Q10pvsPWrQLIcrND/4fjbAKhO5GVCFM0ej7E6352ujAoFgdXOn+8T1zLPfBCGcBw"}}, "unsigned": {"age_ts": 1570040341369}}NeQ[$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 79}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "type": "m.room.history_visibility", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040340560, "hashes": {"sha256": "+mKdgrdciZZt4V5FEkN+dYY7W06W5VqD1dOownKZ7H0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QF3bwqmetvbXx8QsFvxlKVTgudNgbffiosy8vvJ4Zln0PJ9B7t1T5UhcRZbP/OBCVQOqaQhu521JeAvVlPHRAA"}}, "unsigned": {"age_ts": 1570040340560}} ! ~ h R < N~!Q$R^%ieQ'[$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800aheQ' $E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.createmgeQ? $ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibilityefeQ/ $0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rulesgeeQ3 $xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levelsdeQ'[$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800aceQ' $q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.creatembeQ? $oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibilityeaeQ/ $iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rulesg`eQ3 $BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels_eQ'[$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800a^eQ' $gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800m.room.createm]eQ? $I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibilitye\eQ/ $GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.join_rulesg[eQ3 $VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800m.room.power_levelsZeQ'[$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800m.room.member@anon-20191002_181700-32:localhost:8800aYeQ' $4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800m.room.createmXeQ? $8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibilityeWeQ/ $CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rulesgVeQ3 $yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levelsUeQ'[$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800aTeQ' $zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800m.room.createSeQ'[$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800ReQ'[$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800QeQ'[$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800PeQ'[$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800OeQ'[$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800NeQ'[$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800MeQ'[$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800LeQ'[$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800KeQ'[$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800pJeQ))$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800mIeQ? $doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibility Pk9q? w E  } K  Q  W % ] +c1 sMS!Y'_-e3k9q? 0Pe$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcK0Oe$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcJ0Ne$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4I0Me$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsH0Le$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcG0Ke$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUF0Je$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0E0Ie$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8D0He$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkC0Ge$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8B0Fe$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4A0Ee$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30@0De$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE?0Ce$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY>0Be$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc=0Ae$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk<0@e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM;0?e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms:0>e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw90=e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW080<e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT470;e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk60:e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk509e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4408e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0307e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw206e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc105e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4004e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA/03e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko/02e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0.01e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw-00e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo,0/e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg+$.M$15700403175seOtB:localhost:8800*$-M$15700403164ksjyG:localhost:8800*$,M$15700403163gHYKC:localhost:8800)$+M$15700403152dWVZA:localhost:8800($*M$15700403151blJmZ:localhost:8800'$)M$15700403140fJvpV:localhost:8800&0(e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw%0'e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ%0&e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$0%e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ#0$e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"0#e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!0"e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc 0!e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE 0 e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe00e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls00e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h00e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq900e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl80e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY00 e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 0 e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 0 e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 0 e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 0 e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ00e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A Mj8p> v D  | J  P  V $ \ *b0h6l9m:k7g3c/_+1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01 e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81 e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I01 e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1 e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1 e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E00e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE~0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M}0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q|0e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc{0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6My0e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Mx0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIw0e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkv0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMu0~e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAt0}e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ks0|e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcr0{e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsq0ze$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsp0ye$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgo0xe$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68n0we$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4m0ve$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkl0ue$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Al0te$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAk0se$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQj0re$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rci0qe$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkh0pe$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYg0oe$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMg0ne$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwf0me$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAce0le$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgd0ke$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMc0je$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsb0ie$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYb0he$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0a0ge$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo`0fe$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ_0ee$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4^0de$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU]0ce$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw]0be$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo\0ae$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk[0`e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAZ0_e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoY0^e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYX0]e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUX0\e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoW0[e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwV0Ze$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8U0Ye$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMT0Xe$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwS0We$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMR0Ve$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUQ0Ue$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUP0Te$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIO0Se$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gN0Re$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicM0Qe$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wL NDk|8p9 Pr@jJD x F v > ~ L   Rp  X &v>  ^  ,8d2821e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcI1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw 1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Uc1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ I1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c *1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY (1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA|1$0:localhost:42455 K1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8r1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 ?1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc $1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g a1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA <1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYw1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s51e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwo1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac*1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M_1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMq1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsF1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcq1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0%1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw*1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYM1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs#1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I>1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4c1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwI1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4[1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw+0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8G1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQS0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k? X&X`.tC{h6n< Xj9bI0fA _ 8  u N ' d =  z S ,  i B X1  }V/700417471e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 N3$13:localhost:42455 3$12:localhost:42455 }3$11:localhost:42455 |3$10:localhost:42455 {1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU%1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oR0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwn1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM)1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wn1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasZ1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskU1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8.01e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo(1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$14:localhost:42455  1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ B1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI81e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4ck1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU4&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800.$M$15700403164ksjyG:localhost:8800-$M$15700403163gHYKC:localhost:8800,$M$15700403152dWVZA:localhost:8800+$M$15700403151blJmZ:localhost:8800*$M$15700403140fJvpV:localhost:8800)1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ:1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w   ,JhQUeQ[5$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 59, "stream_ordering": 86}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-28:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-28", "avatar_url": null}, "depth": 13, "prev_state": [], "state_key": "@anon-20191002_181700-28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040347378, "hashes": {"sha256": "QzjHB4jFc4E+lOBI24O99qchyW68a10IPeNlJXrJGUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8ykqVSI/MSlc3Tjg7BraNfex7I1Xfg+pDxGJWwt1aAA+aBJp2oXCiy8D+quEkD/r5zjzWmsdBAqJhVp5Uao1Cg"}}, "unsigned": {"age_ts": 1570040347378}}_TeQ[Q$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 58, "stream_ordering": 85}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-27:localhost:8800", "content": {"foo": "bar", "membership": "join", "displayname": "anon-20191002_181700-27", "avatar_url": null}, "depth": 12, "prev_state": [], "state_key": "@anon-20191002_181700-27:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040346316, "hashes": {"sha256": "jSZXhhDGs904uj3k+cFOPzcvpK4XeHy2P9/Qufo0dYM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qngsm7yVZVWIMy+oc/bljO0Adt0jKrIzotYXKLgAhw8Up6dUi7rjGx3mPkv95JTJAUl/I9MZoIP/eN8idw/xBQ"}}, "unsigned": {"age_ts": 1570040346316}}_SeQ[Q$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 57, "stream_ordering": 84}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-26:localhost:8800", "content": {"foo": "bar", "membership": "join", "displayname": "anon-20191002_181700-26", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-26:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040345082, "hashes": {"sha256": "G+1GiG5RXU2xp2hdkjp7+oMcP7mXtong7/upvO5cJFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HbCBlrJp4ntcZdmjea9zXhXgMunGD7zPGp+1gAyvEPY9AgLqVV3833U01c7gshM68HdyZXzm+QnSaZYgCxcFAA"}}, "unsigned": {"age_ts": 1570040345082}}QReQ[5$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 56, "stream_ordering": 83}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs"], "prev_events": ["$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-25:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-25", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-25:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040344057, "hashes": {"sha256": "XivAXCFmRlAoWtlRbx9YM/NYK1aQz6JTn4s8xwoBaWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SekUsNfKKaGQyAi1xKJXE1iCzJSRtSrntsCN700lSTN9k0r+JmjPBpkMwY4HnX46tacrpo7f6QeKTNTrC3JRCg"}}, "unsigned": {"age_ts": 1570040344057}} NDk|8p9 Pr@jJD x F v > ~ L   Rp  X &v>  ^  ,8d2821e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcq1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw +1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Un1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ _1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c 51e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY 31e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1$0:localhost:42455 a1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV81e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 J1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc :1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g w1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA G1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s61e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwp1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac+1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY 1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M`1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMr1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsG1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc|1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF001e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw+1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYN1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1II1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4d1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwJ1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4\1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw,0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8H1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU 1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQT0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k@ X&X`.tC{h6n< Xj9bI0fA _ 8  u N ' d =  z S ,  i B X1  }V/1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 Y3$13:localhost:42455 3$12:localhost:42455 3$11:localhost:42455 3$10:localhost:42455 1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU&1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oS0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwo1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM41e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wy1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas[1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk`1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8901e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSoP1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$14:localhost:42455  1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ M1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI81e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4cv1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU5&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800/$M$15700403164ksjyG:localhost:8800.$M$15700403163gHYKC:localhost:8800-$M$15700403152dWVZA:localhost:8800,$M$15700403151blJmZ:localhost:8800+$M$15700403140fJvpV:localhost:8800*1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ;1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w  M%k}9r@ + x F  v] ~ L    R  Q X & ^ ,d2WDj8Kp>1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc q1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 01e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g Q1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA -1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ 91e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY p11e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0t1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYG1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8B1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s31e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwo1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUt1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac(1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_UT1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M_1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMo1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsF1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcb1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAm1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF01e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw*1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYM1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I/1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4c1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwG1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4Y1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw)0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8G1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY 1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQS0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k= QT"Z)j8p> v D  } K 2 k F ! e ?  | U . kDZ3 pI"_8zS,iB:1e$11WhPvhpUAeWTLW4aMSW-OFR1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU#x1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoR1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oR0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwn1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w_1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ 31e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c\&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800.$M$15700403164ksjyG:localhost:8800-$M$15700403163gHYKC:localhost:8800,$M$15700403152dWVZA:localhost:8800+$M$15700403151blJmZ:localhost:8800*$M$15700403140fJvpV:localhost:8800)3$14:localhost:42455 1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 3$13:localhost:42455 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ81e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w 1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 ?1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8w1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasZ1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskF1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu81e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE a} { y w u sqomkigeca~<eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800~;eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~:eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800~9eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800~8eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~7eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800~6eeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800~5eeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~4eeQ$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800~3eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~2eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~1eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~0eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800~/eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~.eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~-eeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~,eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800~+eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~*eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~)eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~(eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~'eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~&eeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~%eeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~$eeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~#eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~"eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~!eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800~ eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800~eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800~eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800 NDk|8p9 Pr@jJD x F v > ~ L   Rp  X &v>  ^  ,8d2821e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcC1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw 1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Uc1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ I1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c *1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY (1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA|1$0:localhost:42455 K1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8l1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y 1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 ?1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc $1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g a1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA <1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYq1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-01e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_501e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s51e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwo1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac*1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M_1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMq1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsF1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcq1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0%1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw*1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYM1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs#1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I>1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4c1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwI1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4[1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw+0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8G1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQS0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k? X&X`.tC{h6n< Xj9bI0fA _ 8  u N ' d =  z S ,  i B X1  }V/700417471e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 N3$13:localhost:42455 3$12:localhost:42455 }3$11:localhost:42455 |3$10:localhost:42455 {1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU%1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oR0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwn1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM)1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wn1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasZ1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskU1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8.01e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo"1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$14:localhost:42455  1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo|1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ B1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI81e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4ck1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU4&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178936zuJSX:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403175seOtB:localhost:8800.$M$15700403164ksjyG:localhost:8800-$M$15700403163gHYKC:localhost:8800,$M$15700403152dWVZA:localhost:8800+$M$15700403151blJmZ:localhost:8800*$M$15700403140fJvpV:localhost:8800)1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ:1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w  N:l:f4HNT"Z(j8p>  v D  e L 3  `. k R g B  a ; zsL%b;xQ*&O$151e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI 1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU ,1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU +1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU *1e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw1e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw1e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAr1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAq1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk 1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs s1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs r1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs q1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMc1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8 1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8 1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA%1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA#1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE&O$157004173510EIiCi:localhost:8800 &O$157004173510EIiCi:localhost:8800 &O$157004173510EIiCi:localhost:8800 %M$15700417349vUcYV:localhost:8800 %M$15700417349vUcYV:localhost:8800 %M$15700417349vUcYV:localhost:8800 %M$15700417338MBNFd:localhost:8800 %M$15700417338MBNFd:localhost:8800 %M$15700417327EEUMr:localhost:8800 $M$15700403164ksjyG:localhost:8800U$M$15700403164ksjyG:localhost:8800T$M$15700403164ksjyG:localhost:8800S$M$15700403163gHYKC:localhost:8800R$M$15700403163gHYKC:localhost:8800Q$M$15700403163gHYKC:localhost:8800P$M$15700403152dWVZA:localhost:8800O$M$15700403152dWVZA:localhost:8800N$M$15700403151blJmZ:localhost:8800M1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg3$13:localhost:42455F3$13:localhost:42455E3$13:localhost:42455D1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgp1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgo1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgn3$12:localhost:424553$12:localhost:424551e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYq3$11:localhost:424550e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0:0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls091e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew 91e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew 81e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew 71e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4U1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4T1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4S1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwl1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwk1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwj1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAs Vo M + xV[a!E@anon-20191002_181700-37:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICgVQICIZWNXH127.0.0.1Perl + Net::Async::HTTP/0.44m3[a!E@anon-20191002_181700-36:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0CgKRWZEWLMKO127.0.0.1Perl + Net::Async::HTTP/0.44mJ[a!E@anon-20191002_181700-35:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCgEALQMPIKHO127.0.0.1Perl + Net::Async::HTTP/0.44m [a!E@anon-20191002_181700-34:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCgZGZSYILFGA127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-33:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECgSKGXUBFLKN127.0.0.1Perl + Net::Async::HTTP/0.44mʃ[a!E@anon-20191002_181700-32:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCgDXDIQOFVCB127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-31:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdXZ2YjV2VFhLQHNtSU5PQAowMDJmc2lnbmF0dXJlIG8K-NkIgFpGsJHN3sw043DlgE-jXfCHIknS8igoO6sBCgZSHMPNTQHC127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-28:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCgXMXOPMIZZU127.0.0.1Perl + Net::Async::HTTP/0.44mz[a!E@anon-20191002_181700-27:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCgTWNKNEABLT127.0.0.1Perl + Net::Async::HTTP/0.44mvǃ[a!E@anon-20191002_181700-26:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-CgUBEJKIDKFL127.0.0.1Perl + Net::Async::HTTP/0.44mq xG m < /aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXkZ-UCo4LWgwa0smME5ZQAowMDJmc2lnbmF0dXJlICAVkALm609BDF9Y2vumo9-DSlIRHPOSzCA6jqF4sRmuCg2/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCg1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNFKnFwXmJJMix3UDNuWQowMDJmc2lnbmF0dXJlIDfDhxgG6hysISJ-WB62IY0t37xYWbLaH-RvW_dJ43CrCg0/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-Cg6/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCg3/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZmhkZVQ7TUVCc1ZtTmltegowMDJmc2lnbmF0dXJlIIOojyB1wE_CbxRc56Osbj64XPlgFP87DdNhJ7vRLCFTCg9/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCg8/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCg71/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICgA/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0Cg@/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCg?/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCg> a 2 d/ad@[!aC@anon-20191002_181700-36:localhost:8800KRWZEWLMKOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0Cgd?[!aB@anon-20191002_181700-35:localhost:8800EALQMPIKHOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCgd>[!aA@anon-20191002_181700-34:localhost:8800ZGZSYILFGAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCgd=[!a@@anon-20191002_181700-33:localhost:8800SKGXUBFLKNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECgd<[!a?@anon-20191002_181700-32:localhost:8800DXDIQOFVCBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCgd;[!a>@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdXZ2YjV2VFhLQHNtSU5PQAowMDJmc2lnbmF0dXJlIG8K-NkIgFpGsJHN3sw043DlgE-jXfCHIknS8igoO6sBCgd:[!a=@anon-20191002_181700-30:localhost:8800STWEJRRVAKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQzprMUdrLDA2MUNoJnVBZAowMDJmc2lnbmF0dXJlIDlbKhGkrevhF1Qdfl6Xb7EYl-XlieGqusfY198Be6UrCgd9[!a<@anon-20191002_181700-29:localhost:8800WSREAIROYNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZmhkZVQ7TUVCc1ZtTmltegowMDJmc2lnbmF0dXJlIIOojyB1wE_CbxRc56Osbj64XPlgFP87DdNhJ7vRLCFTCgd8[!a;@anon-20191002_181700-28:localhost:8800XMXOPMIZZUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCg K 'K,XeQ[k$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 89}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"reason": "Just testing", "membership": "ban"}, "depth": 16, "prev_state": [], "state_key": "@anon-20191002_181700-30:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040350166, "hashes": {"sha256": "rzhcwPTBs8eSSvpm9IHnZP+RP9SECnFO5sKrO2QoCyQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/xldL4tAI8WGKD/y2SxkMMDHCO66+8sij7GHOO+Uncp29vUikCjTJPmErJe17IHUW+pdfOhnjWtCe4Q89keABA"}}, "unsigned": {"age_ts": 1570040350166}}*WeQ[g$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 54, "stream_ordering": 88}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs", "$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0"], "prev_events": ["$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-23:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-29", "avatar_url": null}, "depth": 15, "prev_state": [], "state_key": "@anon-20191002_181700-29:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040349259, "hashes": {"sha256": "QILee2XSoDr/FnU5xr162+nZMSMYUh3DsvR4KYjWgAs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vKIe0bfedtvBoFCYCmWkIaFMrYRH7bn3w6ckdsdhn+ot9KVu7GJva5fAWMTzyHQj94folaLRZRAy81GOUV25CA"}}, "unsigned": {"age_ts": 1570040349259, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#__ANON__-2:localhost:8800"}, "sender": "@anon-20191002_181700-23:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-23:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-23:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-23", "avatar_url": null}, "sender": "@anon-20191002_181700-23:localhost:8800"}]}}VVeQ[?$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800{"token_id": 59, "stream_ordering": 87}{"auth_events": ["$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU", "$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8", "$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU"], "prev_events": ["$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU"], "type": "m.room.member", "room_id": "!jYzridjeihmwPBuwLb:localhost:8800", "sender": "@anon-20191002_181700-28:localhost:8800", "content": {"membership": "leave"}, "depth": 14, "prev_state": [], "state_key": "@anon-20191002_181700-28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040347984, "hashes": {"sha256": "7kRTsGv9jjRSV2Auaem72Qa9uc9bJsHapQj/wbSLWvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jVcSYsOdbEuWrv/ce9JFG1CD677aBItIc5t7b9yP6PdeAsMSyU5orMpqaZ9CeGsMFWoqnFY/oc8mlRJgkUUgDQ"}}, "unsigned": {"age_ts": 1570040347984, "replaces_state": "$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU"}} =z / l /l#`T* e[[Q$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU@anon-20191002_181700-28:localhost:8800@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800leave@ e[[Q;$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU@anon-20191002_181700-28:localhost:8800@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-28@ e[[Q;$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI@anon-20191002_181700-27:localhost:8800@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-27@ e[[Q;$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g@anon-20191002_181700-26:localhost:8800@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-26@ e[[Q;$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic@anon-20191002_181700-25:localhost:8800@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-25@ e[[Q;$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w@anon-20191002_181700-24:localhost:8800@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-24@ e[[Q;$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc@anon-20191002_181700-22:localhost:8800@anon-20191002_181700-22:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-22@ e[[Q;$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0@anon-20191002_181700-23:localhost:8800@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800joinanon-20191002_181700-23@ e[[Q;$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE@anon-20191002_181700-21:localhost:8800@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800joinanon-20191002_181700-21@ e[[Q;$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms@anon-20191002_181700-20:localhost:8800@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800joinanon-20191002_181700-20@ e[[Q;$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc@anon-20191002_181700-20:localhost:8800@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800joinanon-20191002_181700-20@ e[[Q;$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800joinanon-20191002_181700-164 M[[Q;$15700403151blJmZ:localhost:8800@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800joinanon-20191002_181700-16@ e[[Q;$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800joinanon-20191002_181700-16@ e[[Q;$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800joinanon-20191002_181700-16@ e[[Q;$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800joinanon-20191002_181700-16B e[[Q;$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU@anon-20191002_181700-17:localhost:8800@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800inviteanon-20191002_181700-17@ e[[Q;$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800joinanon-20191002_181700-16@ e[[Q;$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!QZhNrNpwObZGJZpdAG:localhost:8800joinanon-20191002_181700-16@ e[[Q;$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800joinanon-20191002_181700-16 ; G ;x/lP@( e[[Q;$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4@anon-20191002_181700-70:localhost:8800@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800joinanon-20191002_181700-70@' e[[Q;$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk@anon-20191002_181700-68:localhost:8800@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800joinanon-20191002_181700-68L& e[[Q3-$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE@anon-20191002_181700-66:localhost:8829@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800joinMy remote name heremxc://foo/remoteB% e[[Q%'$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM@anon-20191002_181700-67:localhost:8800@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800joinMy name heremxc://foo/bar@$ e[[Q;$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg@anon-20191002_181700-64:localhost:8800@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800joinanon-20191002_181700-64B# e[[Q%'$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI@anon-20191002_181700-65:localhost:8800@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800joinMy name heremxc://foo/bar@" e[[Q;$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA@anon-20191002_181700-63:localhost:8800@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800joinanon-20191002_181700-63@! e[[Q;$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE@anon-20191002_181700-62:localhost:8800@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800joinanon-20191002_181700-62@ e[[Q;$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q@anon-20191002_181700-61:localhost:8800@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800joinanon-20191002_181700-61@ e[[Q;$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A@anon-20191002_181700-39:localhost:8800@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800joinanon-20191002_181700-39@ e[[Q;$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q@anon-20191002_181700-38:localhost:8800@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800joinanon-20191002_181700-38@ e[[Q;$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k@anon-20191002_181700-37:localhost:8800@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800joinanon-20191002_181700-37@ e[[Q;$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68@anon-20191002_181700-36:localhost:8800@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800joinanon-20191002_181700-36@ e[[Q;$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc@anon-20191002_181700-35:localhost:8800@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800joinanon-20191002_181700-35@ e[[Q;$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg@anon-20191002_181700-34:localhost:8800@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800joinanon-20191002_181700-34@ e[[Q;$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ@anon-20191002_181700-33:localhost:8800@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800joinanon-20191002_181700-33@ e[[Q;$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA@anon-20191002_181700-32:localhost:8800@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800joinanon-20191002_181700-32@ e[[Q;$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8@anon-20191002_181700-31:localhost:8800@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800joinanon-20191002_181700-31( e[[Q$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw@anon-20191002_181700-30:localhost:8800@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800banB e[[Q;$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM@anon-20191002_181700-29:localhost:8800@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800inviteanon-20191002_181700-29 qKj99 q? x F  k ~ L   R XE & ? ^ ,d2j8p>&^,wd2q1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY 1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc 1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE g1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM =1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc C1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ 11e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw 1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o 0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwf1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQB1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIh1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0U1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw=1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ 1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI81e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1$0:localhost:42455 1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 61e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU 1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoe1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0'1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA 1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk-1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkG1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1GgF1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE/1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEf1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw _1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cy1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 i1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kg1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g 01e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8B1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYw1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8A1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw0 6Va/NT");[m_:}V/ l E  [ 4 q J # ` 9  v O ( e>{T-^7tM&3$12:localhost:42455 3$11:localhost:42455 1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg3$13:localhost:42455 ,3$10:localhost:42455 1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskb1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs51e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM\1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu81e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo 1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo k1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY B0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4L1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas(8&O$157004183365ZxPWz:localhost:8800Y&O$157004183264ktTbL:localhost:8800X&O$157004183063NdEPw:localhost:8800W&O$157004183062AwGkL:localhost:8800V&O$157004182060gAdxi:localhost:8800K&O$157004181959Afmmv:localhost:8800J&O$157004181958ixShg:localhost:8800I&O$157004181857fcmAB:localhost:8800H&O$157004181756ejZNp:localhost:8800G&O$157004181655JUAvO:localhost:8800F&O$157004180853KmrHT:localhost:8800>&O$157004180752YHMqi:localhost:8800=&O$157004180751hMlwg:localhost:8800<&O$157004180650ruqIl:localhost:8800;&O$157004180549mJBJB:localhost:8800:&O$157004180448zlZXD:localhost:88009&O$157004180347MMmFf:localhost:88008&O$157004180346TRucp:localhost:88007&O$157004180045QtsUE:localhost:88005&O$157004179944JKWNJ:localhost:88004&O$157004179843yDrjz:localhost:88002&O$157004179742OaMxS:localhost:88000&O$157004179541PbBIm:localhost:8800.&O$157004179340NSiie:localhost:8800,&O$157004179239LLqht:localhost:8800*&O$157004179138NbBYh:localhost:8800(&O$157004179037FGMFG:localhost:8800'&O$157004178936zuJSX:localhost:8800&&O$157004178835mLAyG:localhost:8800%&O$157004178734ZpFdg:localhost:8800$&O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800 &O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403164ksjyG:localhost:8800*$M$15700403163gHYKC:localhost:8800)$M$15700403152dWVZA:localhost:8800($M$15700403151blJmZ:localhost:8800'$M$15700403140fJvpV:localhost:8800&1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg Ij9r@  F  ~ LE  Q X & ^ ,d2 ?jW8wp?wE}}}}KK-1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M81e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc '1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY 1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1$0:localhost:42455 Z1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ W1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc ;1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg #1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw 1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 |1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY T1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 OK21e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ 1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50  21e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk 1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs1e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkos1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM41e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8p1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU=20e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwe1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg"1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw.1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgi1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acB1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM R21e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh41e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY x21e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk 1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg1e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw41e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJES1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI+1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c21e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k?1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8B1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kD1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG81e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw  _}*c \q?+pJ$!Ho qJ#c<yR+ h A  ~ W 0 m F  \ 5  r K $a:]5 &O$157004174515XsrNb:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:88004 $M$15700403140fJvpV:localhost:8800&1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg_1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176828ZZJWh:localhost:8800&O$157004176727QjUJj:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800P/1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo ]0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQV1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$13:localhost:42455 3$11:localhost:42455 3$10:localhost:42455 3$12:localhost:42455 %M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403164ksjyG:localhost:8800*$M$15700403163gHYKC:localhost:8800)$M$15700403152dWVZA:localhost:8800($M$15700403151blJmZ:localhost:8800'-1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU41e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw&O$157004186988RkcKb:localhost:88000&O$157004186887sKbQU:localhost:8800/&O$157004186786RVgKA:localhost:8800.&O$157004186785fjAIs:localhost:8800-&O$157004185983tEalY:localhost:8800%&O$157004185982diSTq:localhost:8800$&O$157004185881ahRFW:localhost:8800#&O$157004185780kUwpq:localhost:8800"&O$157004185679NNCIw:localhost:8800!&O$157004185678lyJsT:localhost:8800 &O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800&O$157004184672SfwvS:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004180650ruqIl:localhost:8800&O$157004180549mJBJB:localhost:8800&O$157004180448zlZXD:localhost:8800&O$157004180347MMmFf:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004180045QtsUE:localhost:8800&O$157004179944JKWNJ:localhost:8800&O$157004179843yDrjz:localhost:8800&O$157004179742OaMxS:localhost:8800&O$157004179541PbBIm:localhost:8800&O$157004179340NSiie:localhost:8800&O$157004179239LLqht:localhost:8800&O$157004179138NbBYh:localhost:8800&O$157004179037FGMFG:localhost:8800&O$157004178835mLAyG:localhost:8800&O$157004178734ZpFdg:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800   =p\eQ[s$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 93}{"auth_events": ["$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw", "$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM", "$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8"], "prev_events": ["$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw"], "type": "m.room.join_rules", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040353228, "hashes": {"sha256": "grlwA0fhyeIKQN5Do2u38U5GDprog7klT0Dh5Nso8ew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9yIwugzbyHoaZWOJK763GE9nbqlfjtFNMTm3OOUZr/UmrwWjeLoCrZfENDzPRjK+bS+3EwBs+BlTiprJGTkrBg"}}, "unsigned": {"age_ts": 1570040353228}}f[eQ[_$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 92}{"auth_events": ["$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM", "$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8"], "prev_events": ["$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8"], "type": "m.room.power_levels", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"users": {"@anon-20191002_181700-31:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040352611, "hashes": {"sha256": "RhDbOcP2MNnAYJKgLp7nYKiWK/MyOmHGN8uhm4LpgaM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Lv857pb3IwNgms4adMAfFD4Mtb3+nnMuHy/3IoBHCIA+cIWzRid9aJWg7QXi1vXVK+gMpf3jG7Vk8X+6TSlCQ"}}, "unsigned": {"age_ts": 1570040352611}}pZeQ[s$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 91}{"auth_events": ["$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM"], "prev_events": ["$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM"], "type": "m.room.member", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-31", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-31:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040352004, "hashes": {"sha256": "C3pf0KTpoBwb9EEValzB6Io50u/s0YkWvc1uSf2pTww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I/xIoOTa6V8VTH+E1a4599ERz+d3sXfU7+0f6YtwefFaBOm4+qUp71SeNRRm4Mm7KVWRZzVDfKd2inRKUvJSBQ"}}, "unsigned": {"age_ts": 1570040352004}}dYeQ[[$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800{"token_id": 62, "stream_ordering": 90}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xwoIOPTGmJIlTXakxC:localhost:8800", "sender": "@anon-20191002_181700-31:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-31:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040351327, "hashes": {"sha256": "KNttIlq67EZHdI7MHO7Ei/2Ni/Ely8lMwebUSARxpG8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+hvALpYgeU1Nxe54c7sRdAQJ+zqd1E2ChSvf0P+W1yvqyffIllkPv2FdNr/O1OWTjXN292QEAJcK5HuPDMRFCg"}}, "unsigned": {"age_ts": 1570040351327}} iFd2j8 Z & [ , a . ^ % ] $y@Xy/p8K Vf,u;8F [@anon-20191002_181700-31:localhost:8800a&\8E [@anon-20191002_181700-30:localhost:8800a&\8D [@anon-20191002_181700-29:localhost:8800a&\=C [@anon-20191002_181700-28:localhost:8800m&\8B [@anon-20191002_181700-28:localhost:8800a&\ [@anon-20191002_181700-26:localhost:8800a&\<= [  @anon-20191002_181700-25:localhost:8800m&\T8< [@anon-20191002_181700-25:localhost:8800a&\<; [  @anon-20191002_181700-24:localhost:8800m&\S8: [@anon-20191002_181700-24:localhost:8800a&\<9 [  @anon-20191002_181700-22:localhost:8800m&\S=8 [ @anon-20191002_181700-23:localhost:8800m&\ 087 [@anon-20191002_181700-23:localhost:8800a&\86 [@anon-20191002_181700-22:localhost:8800a&\=5 [  @anon-20191002_181700-21:localhost:8800m&\L84 [@anon-20191002_181700-21:localhost:8800a&\?3 [@anon-20191002_181700-20:localhost:8800m&\*@. [ @anon-20191002_181700-16:localhost:8800m&\4 81 [@anon-20191002_181700-19:localhost:8800a&\80 [@anon-20191002_181700-18:localhost:8800a&\8/ [@anon-20191002_181700-17:localhost:8800a&\82 [@anon-20191002_181700-20:localhost:8800a&\8- [@anon-20191002_181700-16:localhost:8800a&\8, [@anon-20191002_181700-15:localhost:8800a&\8+ [@anon-20191002_181700-14:localhost:8800a&\8* [@anon-20191002_181700-12:localhost:8800a&\8) [@anon-20191002_181700-13:localhost:8800a&\8( [@anon-20191002_181700-11:localhost:8800a&\8' [@anon-20191002_181700-10:localhost:8800a&\7& Y@anon-20191002_181700-9:localhost:8800a&\7% Y@anon-20191002_181700-8:localhost:8800a&\7$ Y@anon-20191002_181700-7:localhost:8800a&\7# Y@anon-20191002_181700-6:localhost:8800a&\7" Y@anon-20191002_181700-5:localhost:8800a&\7! Y@anon-20191002_181700-4:localhost:8800a&\) =@spyglass:localhost:8800a&\( ;@02login:localhost:8800a&\8 [@anon-20191002_181700-3a:localhost:8800a&\7 Y@anon-20191002_181700-2:localhost:8800a&\7 Y@anon-20191002_181700-1:localhost:8800a&\0 K@chrtestuser-39-:localhost:8800a&\0 K@chrtestuser-10-:localhost:8800a&\1 M@chrtestuser-233-:localhost:8800a&\1 M@chrtestuser-163-:localhost:8800a&\1 M@chrtestuser-125-:localhost:8800a&\1 M@chrtestuser-124-:localhost:8800a&\1 M@chrtestuser-123-:localhost:8800a&\0 K@chrtestuser-93-:localhost:8800a&\- A@user-upper:localhost:8800m&\- A@mycooluser:localhost:8800m&\2 K@chrtestuser-92-:localhost:8800m&\2 K@chrtestuser-64-:localhost:8800m&\2 K@chrtestuser-63-:localhost:8800m&\2 K@chrtestuser-58-:localhost:8800m&\0 K@chrtestuser-91-:localhost:8800a&\2 K@chrtestuser-34-:localhost:8800m&\2 K@chrtestuser-33-:localhost:8800m&\B k@01register-user-20191002_181700:localhost:8800m&\0 K@chrtestuser-64-:localhost:8800a&\0 K@chrtestuser-92-:localhost:8800a&\0 K@chrtestuser-63-:localhost:8800a&\0 K@chrtestuser-58-:localhost:8800a&\0 K@chrtestuser-34-:localhost:8800a&\0 K@chrtestuser-33-:localhost:8800a&\+ A@mycooluser:localhost:8800a&\+ A@user-upper:localhost:8800a&\@ k@01register-user-20191002_181700:localhost:8800a&\ BHV d * r 8 a ' y ?  c ){AYl-z@J]j*t4= [  @anon-20191002_181700-79:localhost:8800m&\T8 [@anon-20191002_181700-79:localhost:8800a&\= [  @anon-20191002_181700-77:localhost:8800m&\ t8 [@anon-20191002_181700-77:localhost:8800a&\= [  @anon-20191002_181700-75:localhost:8800m&\N8 [@anon-20191002_181700-75:localhost:8800a&\= [  @anon-20191002_181700-74:localhost:8800m&\J8 [@anon-20191002_181700-74:localhost:8800a&\8 [@anon-20191002_181700-73:localhost:8800a&\< [  @anon-20191002_181700-71:localhost:8800m&\S=~ [  @anon-20191002_181700-70:localhost:8800m&\8} [@anon-20191002_181700-71:localhost:8800a&\8| [@anon-20191002_181700-70:localhost:8800a&\={ [  @anon-20191002_181700-68:localhost:8800m&\i8z [@anon-20191002_181700-68:localhost:8800a&\=y [  @anon-20191002_181700-67:localhost:8800m&\T8x [@anon-20191002_181700-67:localhost:8800a&\8N [@anon-20191002_181700-35:localhost:8800a&\=M [  @anon-20191002_181700-34:localhost:8800m&\>8L [@anon-20191002_181700-34:localhost:8800a&\=K [  @anon-20191002_181700-33:localhost:8800m&\A8J [@anon-20191002_181700-33:localhost:8800a&\=I [  @anon-20191002_181700-32:localhost:8800m&\A8H [@anon-20191002_181700-32:localhost:8800a&\=G [  @anon-20191002_181700-31:localhost:8800m&\A hqT7iK- }/Y a E ( ~ c H -  n Q 4  ,x i <  [ . zM m@`3S&sFe8 X3!13:localhost:42455 M3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 ,Q!ABHbfUdkHCJksMsaUt:localhost:8800"",Q!ABHbfUdkHCJksMsaUt:localhost:8800!!,Q!ABHbfUdkHCJksMsaUt:localhost:8800  ,Q!ABHbfUdkHCJksMsaUt:localhost:8800+Q !ABHbfUdkHCJksMsaUt:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AjjrNwXmPTCruHxaJq:localhost:8800 {{,Q!ABHbfUdkHCJksMsaUt:localhost:8800##,Q!AjjrNwXmPTCruHxaJq:localhost:8800 zz,Q!AjjrNwXmPTCruHxaJq:localhost:8800yy,Q!AjjrNwXmPTCruHxaJq:localhost:8800xx,Q!AjjrNwXmPTCruHxaJq:localhost:8800ww,Q!AjjrNwXmPTCruHxaJq:localhost:8800vv,Q!AjjrNwXmPTCruHxaJq:localhost:8800uu,Q!AjjrNwXmPTCruHxaJq:localhost:8800tt,Q!AjjrNwXmPTCruHxaJq:localhost:8800ss+Q !AjjrNwXmPTCruHxaJq:localhost:8800rr,Q!AYFqrmxwClFQlcTTYq:localhost:8800 r r,Q!AYFqrmxwClFQlcTTYq:localhost:8800 q q,Q!AYFqrmxwClFQlcTTYq:localhost:8800 p p,Q!AYFqrmxwClFQlcTTYq:localhost:8800 o o+Q !AYFqrmxwClFQlcTTYq:localhost:8800 n n,Q!AWfbViAZparIjmDaVT:localhost:8800 ,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800+Q !AWfbViAZparIjmDaVT:localhost:8800,Q!AOEdqVKPFddrqbKPOL:localhost:8800  ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 +Q !AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800+Q !AMLmLqizBFklpqKibP:localhost:88001!9:localhost:42455 1!9:localhost:42455 1 !9:localhost:42455 1!9:localhost:42455 1!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:42455 1 !6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1 !5:localhost:42455 1!5:localhost:42455 3 !13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3 !12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3 !11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3 !10:localhost:42455 3!10:localhost:42455 1!0:localhost:44405 1!0:localhost:42455 g g1!0:localhost:42455 c c1 !0:localhost:42455 b b1!0:localhost:42455 a a1!0:localhost:41985  1!0:localhost:37265 nS `[.5 QEkr  y;hA |LS&> ] 0 $ C  puH c 6  V )N!n ,Q!BKZJsoFNhiLTDYNclB:localhost:8800ff,Q!BKZJsoFNhiLTDYNclB:localhost:8800ee*Q!BDASLhdcKfNwxCTCSg:localhost:8800cc,Q!BGbJEmJRVJGlZFQbZe:localhost:8800**,Q!BGbJEmJRVJGlZFQbZe:localhost:8800..,Q!BkzROHxDAfKIzYpmPV:localhost:8800ll +Q !BfEFIDBthhkweqfhir:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800 Q*Q!BDASLhdcKfNwxCTCSg:localhost:8800dd,Q!BGbJEmJRVJGlZFQbZe:localhost:8800))+Q !BGbJEmJRVJGlZFQbZe:localhost:8800((*Q!BDASLhdcKfNwxCTCSg:localhost:8800aa*Q!BDASLhdcKfNwxCTCSg:localhost:8800bb,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BPNyKqmwcpGxIbGFZG:localhost:8800~,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 -,Q!BPNyKqmwcpGxIbGFZG:localhost:8800+Q !BPNyKqmwcpGxIbGFZG:localhost:8800)Q !BDASLhdcKfNwxCTCSg:localhost:8800``,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !BKZJsoFNhiLTDYNclB:localhost:8800cc,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800hh,Q!BKZJsoFNhiLTDYNclB:localhost:8800gg,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800nn,Q!BkzROHxDAfKIzYpmPV:localhost:8800mm,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BpTqIemsWFZIqTcgJO:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 pp,Q!BkzROHxDAfKIzYpmPV:localhost:8800 oo,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BkzROHxDAfKIzYpmPV:localhost:8800gg,Q!BkzROHxDAfKIzYpmPV:localhost:8800hh+Q !BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800+Q !BoyzlWNkRPncpDjBDg:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 qq,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BkzROHxDAfKIzYpmPV:localhost:8800kk,Q!BkzROHxDAfKIzYpmPV:localhost:8800jj,Q!BkzROHxDAfKIzYpmPV:localhost:8800ii,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 *Q!BDASLhdcKfNwxCTCSg:localhost:8800ee,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800 00,Q!BGbJEmJRVJGlZFQbZe:localhost:8800//,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800--,Q!BGbJEmJRVJGlZFQbZe:localhost:8800,,,Q!BGbJEmJRVJGlZFQbZe:localhost:8800++,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800dd,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BoyzlWNkRPncpDjBDg:localhost:8800 hqT7iK- }/Y a E ( ~ c H -  n Q 4  ,x i <  [ . zM m@`3S&sFe8 X3!13:localhost:42455 M3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 ,Q!ABHbfUdkHCJksMsaUt:localhost:8800"",Q!ABHbfUdkHCJksMsaUt:localhost:8800!!,Q!ABHbfUdkHCJksMsaUt:localhost:8800  ,Q!ABHbfUdkHCJksMsaUt:localhost:8800+Q !ABHbfUdkHCJksMsaUt:localhost:8800,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AjjrNwXmPTCruHxaJq:localhost:8800 {{,Q!ABHbfUdkHCJksMsaUt:localhost:8800##,Q!AjjrNwXmPTCruHxaJq:localhost:8800 zz,Q!AjjrNwXmPTCruHxaJq:localhost:8800yy,Q!AjjrNwXmPTCruHxaJq:localhost:8800xx,Q!AjjrNwXmPTCruHxaJq:localhost:8800ww,Q!AjjrNwXmPTCruHxaJq:localhost:8800vv,Q!AjjrNwXmPTCruHxaJq:localhost:8800uu,Q!AjjrNwXmPTCruHxaJq:localhost:8800tt,Q!AjjrNwXmPTCruHxaJq:localhost:8800ss+Q !AjjrNwXmPTCruHxaJq:localhost:8800rr,Q!AYFqrmxwClFQlcTTYq:localhost:8800 r r,Q!AYFqrmxwClFQlcTTYq:localhost:8800 q q,Q!AYFqrmxwClFQlcTTYq:localhost:8800 p p,Q!AYFqrmxwClFQlcTTYq:localhost:8800 o o+Q !AYFqrmxwClFQlcTTYq:localhost:8800 n n,Q!AWfbViAZparIjmDaVT:localhost:8800 ,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800,Q!AWfbViAZparIjmDaVT:localhost:8800+Q !AWfbViAZparIjmDaVT:localhost:8800,Q!AOEdqVKPFddrqbKPOL:localhost:8800  ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AOEdqVKPFddrqbKPOL:localhost:8800 +Q !AOEdqVKPFddrqbKPOL:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800  ,Q!AMLmLqizBFklpqKibP:localhost:8800 ,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800,Q!AMLmLqizBFklpqKibP:localhost:8800+Q !AMLmLqizBFklpqKibP:localhost:88001!9:localhost:42455 1!9:localhost:42455 1 !9:localhost:42455 1!9:localhost:42455 1!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:42455 1 !6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1 !5:localhost:42455 1!5:localhost:42455 3 !13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3 !12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3 !11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3 !10:localhost:42455 3!10:localhost:42455 1!0:localhost:44405 1!0:localhost:42455 g g1!0:localhost:42455 c c1 !0:localhost:42455 b b1!0:localhost:42455 a a1!0:localhost:41985  1!0:localhost:37265 nS `[.5 QEkr  y;hA |LS&> ] 0 $ C  puH c 6  V )N!n ,Q!BKZJsoFNhiLTDYNclB:localhost:8800ff,Q!BKZJsoFNhiLTDYNclB:localhost:8800ee*Q!BDASLhdcKfNwxCTCSg:localhost:8800cc,Q!BGbJEmJRVJGlZFQbZe:localhost:8800**,Q!BGbJEmJRVJGlZFQbZe:localhost:8800..,Q!BkzROHxDAfKIzYpmPV:localhost:8800ll +Q !BfEFIDBthhkweqfhir:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800 Q*Q!BDASLhdcKfNwxCTCSg:localhost:8800dd,Q!BGbJEmJRVJGlZFQbZe:localhost:8800))+Q !BGbJEmJRVJGlZFQbZe:localhost:8800((*Q!BDASLhdcKfNwxCTCSg:localhost:8800aa*Q!BDASLhdcKfNwxCTCSg:localhost:8800bb,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BPNyKqmwcpGxIbGFZG:localhost:8800~,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 ,Q!BpTqIemsWFZIqTcgJO:localhost:8800 -,Q!BPNyKqmwcpGxIbGFZG:localhost:8800+Q !BPNyKqmwcpGxIbGFZG:localhost:8800)Q !BDASLhdcKfNwxCTCSg:localhost:8800``,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 +Q !BKZJsoFNhiLTDYNclB:localhost:8800cc,Q!AoAvmnwMkhYBQsbCsL:localhost:8800 ,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800hh,Q!BKZJsoFNhiLTDYNclB:localhost:8800gg,Q!BPNyKqmwcpGxIbGFZG:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800nn,Q!BkzROHxDAfKIzYpmPV:localhost:8800mm,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BpTqIemsWFZIqTcgJO:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 pp,Q!BkzROHxDAfKIzYpmPV:localhost:8800 oo,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800,Q!BpTqIemsWFZIqTcgJO:localhost:8800+Q !BkzROHxDAfKIzYpmPV:localhost:8800gg,Q!BkzROHxDAfKIzYpmPV:localhost:8800hh+Q !BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800,Q!BoyzlWNkRPncpDjBDg:localhost:8800+Q !BoyzlWNkRPncpDjBDg:localhost:8800,Q!BkzROHxDAfKIzYpmPV:localhost:8800 qq,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BkzROHxDAfKIzYpmPV:localhost:8800kk,Q!BkzROHxDAfKIzYpmPV:localhost:8800jj,Q!BkzROHxDAfKIzYpmPV:localhost:8800ii,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BfEFIDBthhkweqfhir:localhost:8800 *Q!BDASLhdcKfNwxCTCSg:localhost:8800ee,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800 00,Q!BGbJEmJRVJGlZFQbZe:localhost:8800//,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BfEFIDBthhkweqfhir:localhost:8800,Q!BGbJEmJRVJGlZFQbZe:localhost:8800--,Q!BGbJEmJRVJGlZFQbZe:localhost:8800,,,Q!BGbJEmJRVJGlZFQbZe:localhost:8800++,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BckZfhQgrcyiMhEAAJ:localhost:8800,Q!BKZJsoFNhiLTDYNclB:localhost:8800dd,Q!BfEFIDBthhkweqfhir:localhost:8800 ,Q!BoyzlWNkRPncpDjBDg:localhost:8800 -PH @ 8 0 ( x ph`XPG<1VeL$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUsha256{vo}6f!a!̃`VeL$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEsha256n%p{V}Uمq'lVeL$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3Msha256釐Yӣ֧GsVeL$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qsha256zNCɐ*@#;B"'w=i7BTVeL$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcsha256o!X`v8$DOΔ3VeL$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Msha256ExR6ghXʘSo?8wwVeL$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Msha256) (7 z9%[nfVeL$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIsha256rІN,oH=(P{әVeL$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrksha2566?|<8DVDꦑ%P:#I(h\VeL$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMsha256@6Ibtgmf4qSCx+3V~eL$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAsha256tv=yc?a6)5eBV}eL$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ksha256Xv09!Qċom6SYV|eL$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcsha256.צ]@Qsü(V{eL$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhssha256a?}A@4E &7x>FVzeL$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHssha256 }i^w;?"ۿ iLG{VyeL$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgsha256N^/cj44| a hVxeL$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68sha256 : _^.5/Tw:{VweL$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4sha256~ZO~2aH;XO ̝'noibUPVveL$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwksha256. HmuH[s\ 86 RG + VueL$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Asha256OMgޏ-p6^<@Bd~ZVteL$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAsha256$ Vc+ vӜ#~HVoeL$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMsha256츼}R5{@goO:nNAVneL$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwsha256,"k|i%GE:-xȌVmeL$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcsha256W?+{u*Q!AMLmLqizBFklpqKibP:localhost:8800  =*Q!AMLmLqizBFklpqKibP:localhost:8800 <*Q!AMLmLqizBFklpqKibP:localhost:8800 ;*Q!AMLmLqizBFklpqKibP:localhost:8800 :*Q!AMLmLqizBFklpqKibP:localhost:8800 9*Q!AMLmLqizBFklpqKibP:localhost:8800 8*Q!AMLmLqizBFklpqKibP:localhost:8800 71!9:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 1!0:localhost:42455 g TU P % yuw} # NR )LN# { H's y! V X -  J{P oDqF%TR })' T +*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800LL*Q!BrssELMbasSzTFpIXm:localhost:8800KK*Q!BrssELMbasSzTFpIXm:localhost:8800JJ*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800QQ*Q!BrssELMbasSzTFpIXm:localhost:8800PP*Q!BrssELMbasSzTFpIXm:localhost:8800OO*Q!BrssELMbasSzTFpIXm:localhost:8800NN*Q!BrssELMbasSzTFpIXm:localhost:8800MM*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BkzROHxDAfKIzYpmPV:localhost:8800jl*Q!BkzROHxDAfKIzYpmPV:localhost:8800ik*Q!BkzROHxDAfKIzYpmPV:localhost:8800mo*Q!BkzROHxDAfKIzYpmPV:localhost:8800km*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800RR*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BfEFIDBthhkweqfhir:localhost:8800 +V*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800np +*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800qs*Q!BkzROHxDAfKIzYpmPV:localhost:8800pr*Q!BkzROHxDAfKIzYpmPV:localhost:8800oq*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800J*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BpTqIemsWFZIqTcgJO:localhost:8800 *Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BKZJsoFNhiLTDYNclB:localhost:8800hZ*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800hj*Q!BkzROHxDAfKIzYpmPV:localhost:8800gi*Q!BkzROHxDAfKIzYpmPV:localhost:8800ln*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800+*Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!CKNftKKCaOCVUyYWNY:localhost:8800 *Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800 my^C' cG+ g K /  v ] D +  x ] B ' u J  s H qFoDmBk@i>g<e:c8 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AoAvmnwMkhYBQsbCsL:localhost:8800 *Q!AjjrNwXmPTCruHxaJq:localhost:8800{{*Q!AjjrNwXmPTCruHxaJq:localhost:8800zz*Q!AjjrNwXmPTCruHxaJq:localhost:8800yy*Q!AjjrNwXmPTCruHxaJq:localhost:8800xx*Q!AjjrNwXmPTCruHxaJq:localhost:8800ww*Q!AjjrNwXmPTCruHxaJq:localhost:8800vv*Q!AjjrNwXmPTCruHxaJq:localhost:8800uu*Q!AjjrNwXmPTCruHxaJq:localhost:8800tt*Q!AjjrNwXmPTCruHxaJq:localhost:8800ss*Q!AjjrNwXmPTCruHxaJq:localhost:8800rr*Q!AYFqrmxwClFQlcTTYq:localhost:8800 r r*Q!AYFqrmxwClFQlcTTYq:localhost:8800 q q*Q!AYFqrmxwClFQlcTTYq:localhost:8800 p p*Q!AYFqrmxwClFQlcTTYq:localhost:8800 o o*Q!AYFqrmxwClFQlcTTYq:localhost:8800 n n*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AWfbViAZparIjmDaVT:localhost:8800*Q!AOEdqVKPFddrqbKPOL:localhost:8800  *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AOEdqVKPFddrqbKPOL:localhost:8800 *Q!AMLmLqizBFklpqKibP:localhost:8800 *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800  *Q!AMLmLqizBFklpqKibP:localhost:8800 *Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!AMLmLqizBFklpqKibP:localhost:8800*Q!ABHbfUdkHCJksMsaUt:localhost:8800##*Q!ABHbfUdkHCJksMsaUt:localhost:8800""*Q!ABHbfUdkHCJksMsaUt:localhost:8800!!*Q!ABHbfUdkHCJksMsaUt:localhost:8800  *Q!ABHbfUdkHCJksMsaUt:localhost:8800*Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!6:localhost:424551!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 1!0:localhost:44405 1!0:localhost:42455 g g1!0:localhost:42455 c c1!0:localhost:42455 b b1!0:localhost:42455 a a1!0:localhost:41985  1!0:localhost:37265 sU  V mJ +RB}L!uw% { PT } N #  T y oH D#qN' )y{P R ' ) % Fs*Q!BKZJsoFNhiLTDYNclB:localhost:8800hh*Q!BKZJsoFNhiLTDYNclB:localhost:8800gg*Q!BKZJsoFNhiLTDYNclB:localhost:8800ff*Q!BKZJsoFNhiLTDYNclB:localhost:8800ee*Q!BGbJEmJRVJGlZFQbZe:localhost:8800***Q!BGbJEmJRVJGlZFQbZe:localhost:8800))*Q!BGbJEmJRVJGlZFQbZe:localhost:8800..*Q!BGbJEmJRVJGlZFQbZe:localhost:8800--*Q!BGbJEmJRVJGlZFQbZe:localhost:8800,,*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800oo*Q!BkzROHxDAfKIzYpmPV:localhost:8800nn*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BGbJEmJRVJGlZFQbZe:localhost:8800//*Q!BrssELMbasSzTFpIXm:localhost:8800PP*Q!BrssELMbasSzTFpIXm:localhost:8800OO*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800pp*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BGbJEmJRVJGlZFQbZe:localhost:8800++*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BGbJEmJRVJGlZFQbZe:localhost:880000 V*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800qq*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800KK*Q!BrssELMbasSzTFpIXm:localhost:8800JJ*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800LL*Q!BkzROHxDAfKIzYpmPV:localhost:8800ii *Q!BGbJEmJRVJGlZFQbZe:localhost:8800(((Q!BDASLhdcKfNwxCTCSg:localhost:8800ee+*Q!BkzROHxDAfKIzYpmPV:localhost:8800jj*Q!BKZJsoFNhiLTDYNclB:localhost:8800cc(Q!BDASLhdcKfNwxCTCSg:localhost:8800dd(Q!BDASLhdcKfNwxCTCSg:localhost:8800cc(Q!BDASLhdcKfNwxCTCSg:localhost:8800bb(Q!BDASLhdcKfNwxCTCSg:localhost:8800aa(Q!BDASLhdcKfNwxCTCSg:localhost:8800``*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800kk*Q!BoyzlWNkRPncpDjBDg:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800ll*Q!BrssELMbasSzTFpIXm:localhost:8800NN*Q!BrssELMbasSzTFpIXm:localhost:8800MM*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BKZJsoFNhiLTDYNclB:localhost:8800dd*Q!BPNyKqmwcpGxIbGFZG:localhost:8800*Q!BkzROHxDAfKIzYpmPV:localhost:8800hh*Q!BkzROHxDAfKIzYpmPV:localhost:8800gg*Q!BkzROHxDAfKIzYpmPV:localhost:8800mm*Q!BpTqIemsWFZIqTcgJO:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BckZfhQgrcyiMhEAAJ:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800*Q!BfEFIDBthhkweqfhir:localhost:8800 a} { y w u sqomkigeca~[eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800~ZeeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800~YeeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800~XeeQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800~WeeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800~VeeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~UeeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800~TeeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800~SeeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~ReeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800~QeeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800~PeeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~OeeQ$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800~NeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800~MeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~LeeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800~KeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800~JeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~IeeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800~HeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800~GeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~FeeQ$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800~EeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800~DeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800~CeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800~BeeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800~AeeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800~@eeQ$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800~?eeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800~>eeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800~=eeQ$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800 lKkr9rLx@~ xR: F  &  M ,  S ! ^  Y ' F@ _ -e3XlR1$0:localhost:42455 (1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA ;1e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc 1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y "1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 ;1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2ca1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY_1e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoE1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw U1e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 W1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 [1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw >1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g Z1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ '1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU }1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY S1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE u1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ w1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0E1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc51e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwE1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI(1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EC1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM 1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs 1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0x1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0v1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0s1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw881e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw0e$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4~1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY 1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkK1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg61e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE@1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEj1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8=1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ+0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k S}p> wEj8p> } w E , } K 2 y S -  l E  [ 4 qJ#`9vO(e>Y2 oH!1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo 1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8t1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU1e$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o*0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw_1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ ]1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIm&O$157004183062AwGkL:localhost:8800L&O$157004181959Afmmv:localhost:8800B&O$157004181958ixShg:localhost:8800A&O$157004181857fcmAB:localhost:8800@&O$157004181756ejZNp:localhost:8800?&O$157004181655JUAvO:localhost:8800>&O$157004180752YHMqi:localhost:88007&O$157004180751hMlwg:localhost:88006&O$157004180650ruqIl:localhost:88005&O$157004180549mJBJB:localhost:88004&O$157004180448zlZXD:localhost:88003&O$157004180347MMmFf:localhost:88002&O$157004180045QtsUE:localhost:88001&O$157004179944JKWNJ:localhost:8800/&O$157004179843yDrjz:localhost:8800.&O$157004179742OaMxS:localhost:8800,&O$157004179541PbBIm:localhost:8800*&O$157004179340NSiie:localhost:8800(&O$157004179239LLqht:localhost:8800&&O$157004179138NbBYh:localhost:8800$&O$157004179037FGMFG:localhost:8800#&O$157004178936zuJSX:localhost:8800"&O$157004178835mLAyG:localhost:8800!&O$157004178734ZpFdg:localhost:8800 &O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800&O$157004176929ezeJB:localhost:8800 &O$157004176828ZZJWh:localhost:8800 &O$157004176727QjUJj:localhost:8800 &O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004175520JddPP:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004174313OKfBg:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800%M$15700417316amiRb:localhost:8800$M$15700403164ksjyG:localhost:8800'$M$15700403163gHYKC:localhost:8800&$M$15700403152dWVZA:localhost:8800%$M$15700403151blJmZ:localhost:8800$$M$15700403140fJvpV:localhost:8800#3$14:localhost:42455 s1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 3$13:localhost:42455 r1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg3$12:localhost:42455 Q1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$11:localhost:42455 P3$10:localhost:42455 O0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ 1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w )1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 h1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs31e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM] Gk9D+%r@Q Wv x F  ~ L  R ] X & ^ ,d2j8p> |J1e$0rbDtkdjrcnON7kchQ1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA :1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw T1e$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY R1e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU |1e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ &1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg 1e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g Y1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE 1e$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 1e$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY 1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 :]1e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ v1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 V1e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c1e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU1e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0D1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc/1e$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwD1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc%1e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1e$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EB1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg 1e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y !1e$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU1e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYL1e$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U1e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr01e$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM 1e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs1e$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc1e$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1e$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0o1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY 1e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc 1e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg51e$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4 1e$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE?1e$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEi1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB41e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI 1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c`1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kf1e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw0e$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8<1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY^1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ*0e$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 Z1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw = PQX&j8p> v D  } K 2 x S .  n G ] 6 sL%b;xQ*g@lE[4 qJF1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo J1e$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE 1e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU0e$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw^1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMy1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMx1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMw1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w1e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg 1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIl1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE t&O$157004181756ejZNp:localhost:8800>&O$157004180853KmrHT:localhost:88007&O$157004180752YHMqi:localhost:88006&O$157004180751hMlwg:localhost:88005&O$157004180650ruqIl:localhost:88004&O$157004180549mJBJB:localhost:88003&O$157004180448zlZXD:localhost:88002&O$157004180346TRucp:localhost:88001&O$157004180045QtsUE:localhost:8800/&O$157004179944JKWNJ:localhost:8800.&O$157004179843yDrjz:localhost:8800,&O$157004179742OaMxS:localhost:8800*&O$157004179541PbBIm:localhost:8800(&O$157004179340NSiie:localhost:8800&&O$157004179239LLqht:localhost:8800$&O$157004179138NbBYh:localhost:8800#&O$157004179037FGMFG:localhost:8800"&O$157004178936zuJSX:localhost:8800!&O$157004178835mLAyG:localhost:8800 &O$157004177433OonrH:localhost:8800&O$157004177232wsJyW:localhost:8800&O$157004177131trwoi:localhost:8800&O$157004177030bmvvg:localhost:8800 &O$157004176929ezeJB:localhost:8800 &O$157004176828ZZJWh:localhost:8800 &O$157004175925JuKDZ:localhost:8800&O$157004175824dFhko:localhost:8800&O$157004175723CBKAp:localhost:8800&O$157004175622yCTNM:localhost:8800&O$157004175621DDceh:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004174617osGDW:localhost:8800&O$157004174616PvcHe:localhost:8800&O$157004174515XsrNb:localhost:8800&O$157004174414klNmS:localhost:8800&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800%M$15700417349vUcYV:localhost:8800%M$15700417338MBNFd:localhost:8800%M$15700417327EEUMr:localhost:8800$M$15700403175seOtB:localhost:8800'$M$15700403164ksjyG:localhost:8800&$M$15700403163gHYKC:localhost:8800%$M$15700403152dWVZA:localhost:8800$$M$15700403151blJmZ:localhost:8800#3$14:localhost:42455 r1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg3$13:localhost:42455 q1e$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo 1e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg3$12:localhost:42455 P1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 3$11:localhost:42455 O0e$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls01e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w (1e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4 g1e$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas11e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs21e$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM\1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8r1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA  $deQ$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "txn_id": "1234", "stream_ordering": 101}{"auth_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk", "$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw"], "type": "m.room.message", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"msgtype": "m.message", "body": "Here is the message content"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040359011, "hashes": {"sha256": "QVBTX2AR0jcKJykqXG3WLWqoBO9oxqii1WeGEdSSuvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6qGjOAIjyTge7N45kOPed/xObciboA5wsJBRU1LylfF7V2z4TRIhuVpM+t82tnyw14+1zf7pZMgKLo8S7AnZAw"}}, "unsigned": {"age_ts": 1570040359011}}ceQ]$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "stream_ordering": 100}{"auth_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk", "$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo"], "type": "m.room.history_visibility", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040358127, "hashes": {"sha256": "/dJ3dkX/msTqoTtxYLpL2AouqtFJAPo9zdxVowBBPtc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tchycd9vstp6RHCBipWA+rl4ITSEn04kSPDamSiPMwls72fSS6b5m1xMKOpjqiulsPf2ZrRXgHogGppoBjq5Dw"}}, "unsigned": {"age_ts": 1570040358127}}pbeQ[s$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "stream_ordering": 99}{"auth_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk", "$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk"], "type": "m.room.join_rules", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040357411, "hashes": {"sha256": "8kYWDvYLx0Av9DerN6O2solRsrjSp0SNppECvLuN7ao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yL9Z0Li3L0ea972MfhL63Z1tNPPCUVGhmpgoSW9z1wXTa7yvqZXUS1EML4AUXnQ/yQMiilEK5i1bJfSvo9beDQ"}}, "unsigned": {"age_ts": 1570040357411}}faeQ[_$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk!BDASLhdcKfNwxCTCSg:localhost:8800{"token_id": 63, "stream_ordering": 98}{"auth_events": ["$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo", "$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "prev_events": ["$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA"], "type": "m.room.power_levels", "room_id": "!BDASLhdcKfNwxCTCSg:localhost:8800", "sender": "@anon-20191002_181700-32:localhost:8800", "content": {"users": {"@anon-20191002_181700-32:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040356820, "hashes": {"sha256": "+PME7Lx/zDfTOkXSZxTbMr1IQLAvhKRVzra3GZPlXFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ly2etxVLFIAXiTwBmmng/qsArCTVkvDbpoI4Zv6B2CxNLAQm4y1Zl9cpvIXA63cF0LX3gv5q0hZmwr568wFwCg"}}, "unsigned": {"age_ts": 1570040356820}} |X a  w # >B]a|ye'Q [$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68m.room.member!wvnfKBSrUlfNmYoeil:localhost:8800mmB@anon-20191002_181700-36:localhost:8800x e'Q  [$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4m.room.create!wvnfKBSrUlfNmYoeil:localhost:8800mm@anon-20191002_181700-36:localhost:8800 we)Q [$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkm.room.message!NhWgOTYzEPRwAxRQvS:localhost:8800mRmܱ@anon-20191002_181700-35:localhost:8800+ve?Q [$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Am.room.history_visibility!NhWgOTYzEPRwAxRQvS:localhost:8800m/m@anon-20191002_181700-35:localhost:8800#ue/Q [$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAm.room.join_rules!NhWgOTYzEPRwAxRQvS:localhost:8800mm@anon-20191002_181700-35:localhost:8800%te3Q [$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQm.room.power_levels!NhWgOTYzEPRwAxRQvS:localhost:8800mӗm@anon-20191002_181700-35:localhost:8800se'Q [$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcm.room.member!NhWgOTYzEPRwAxRQvS:localhost:8800mхm@anon-20191002_181700-35:localhost:8800r e'Q  [$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkm.room.create!NhWgOTYzEPRwAxRQvS:localhost:8800mZmϥ@anon-20191002_181700-35:localhost:8800 qe)Q [$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYm.room.message!scyFsXcUIJiLIMwWMY:localhost:8800mm<@anon-20191002_181700-34:localhost:8800+pe?Q [$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMm.room.history_visibility!scyFsXcUIJiLIMwWMY:localhost:8800mšm@anon-20191002_181700-34:localhost:8800#oe/Q [$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwm.room.join_rules!scyFsXcUIJiLIMwWMY:localhost:8800mÊmB@anon-20191002_181700-34:localhost:8800%ne3Q [$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm.room.power_levels!scyFsXcUIJiLIMwWMY:localhost:8800m{m@anon-20191002_181700-34:localhost:8800me'Q [$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgm.room.member!scyFsXcUIJiLIMwWMY:localhost:8800mm@anon-20191002_181700-34:localhost:8800l e'Q  [$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMm.room.create!scyFsXcUIJiLIMwWMY:localhost:8800mmK@anon-20191002_181700-34:localhost:8800 ke)Q [$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsm.room.message!aWJOsiuJONOvjKWEjO:localhost:8800mNm@anon-20191002_181700-33:localhost:8800+je?Q [$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYm.room.history_visibility!aWJOsiuJONOvjKWEjO:localhost:8800mm@anon-20191002_181700-33:localhost:8800#ie/Q [$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0m.room.join_rules!aWJOsiuJONOvjKWEjO:localhost:8800mm@anon-20191002_181700-33:localhost:8800%he3Q [$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRom.room.power_levels!aWJOsiuJONOvjKWEjO:localhost:8800mm@anon-20191002_181700-33:localhost:8800ge'Q [$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQm.room.member!aWJOsiuJONOvjKWEjO:localhost:8800mmL@anon-20191002_181700-33:localhost:8800f e'Q  [$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4m.room.create!aWJOsiuJONOvjKWEjO:localhost:8800m(m@anon-20191002_181700-33:localhost:8800 ee)Q [$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUm.room.message!BDASLhdcKfNwxCTCSg:localhost:8800mcm@anon-20191002_181700-32:localhost:8800+de?Q [$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwm.room.history_visibility!BDASLhdcKfNwxCTCSg:localhost:8800mm1@anon-20191002_181700-32:localhost:8800#ce/Q [$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDom.room.join_rules!BDASLhdcKfNwxCTCSg:localhost:8800m#mn@anon-20191002_181700-32:localhost:8800%be3Q [$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kkm.room.power_levels!BDASLhdcKfNwxCTCSg:localhost:8800mm@anon-20191002_181700-32:localhost:8800 #.6 ` n  / = m <j r9AkyeeQ/ $dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rulesg~eQ3 $5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels }eQ'[$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800joina|eQ' $uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.createm{eQ? $e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibilityezeQ/ $EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rulesgyeQ3 $6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels xeQ'[$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800joinaweQ' $b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800m.room.createmueQ? $Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibilityeteQ/ $70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rulesgveQ3 $5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels reQ'[$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800joinaqeQ' $9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800m.room.creatempeQ? $YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibilityeoeQ/ $nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rulesgneQ3 $TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levels meQ'[$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800joinaleQ' $tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800m.room.createmkeQ? $4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibilityejeQ/ $FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rulesgieQ3 $8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels heQ'[$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800joinageQ' $E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.createmfeQ? $ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibilityeeeQ/ $0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_rulesgdeQ3 $xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levels ceQ'[$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800joinabeQ' $q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800m.room.createmaeQ? $oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibilitye`eQ/ $iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rulesg_eQ3 $BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels ^eQ'[$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800joina]eQ' $gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800m.room.createm\eQ? $I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800m.room.history_visibility FlDpu\+kReL3X@(hP8  x:" ~ P ( ` 8  p H X 0  h @ xP(`8pH X0 mF'Q!ABHbfUdkHCJksMsaUt:localhost:8800 3!11:localhost:42455 1!0:localhost:41985 3!11:localhost:42455 3!11:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 3!10:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 1!9:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!12:localhost:42455 3!11:localhost:42455 3!11:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 3!13:localhost:42455 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 :'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 'Q!AjjrNwXmPTCruHxaJq:localhost:8800z'Q!AjjrNwXmPTCruHxaJq:localhost:8800y'Q!AjjrNwXmPTCruHxaJq:localhost:8800x'Q!AjjrNwXmPTCruHxaJq:localhost:8800w'Q!AjjrNwXmPTCruHxaJq:localhost:8800v'Q!AjjrNwXmPTCruHxaJq:localhost:8800u'Q!AjjrNwXmPTCruHxaJq:localhost:8800t'Q!AjjrNwXmPTCruHxaJq:localhost:8800s'Q!AjjrNwXmPTCruHxaJq:localhost:8800r'Q!AjjrNwXmPTCruHxaJq:localhost:8800q'Q!AYFqrmxwClFQlcTTYq:localhost:8800 Y'Q!AYFqrmxwClFQlcTTYq:localhost:8800 X'Q!AYFqrmxwClFQlcTTYq:localhost:8800 W'Q!AYFqrmxwClFQlcTTYq:localhost:8800 V'Q!AYFqrmxwClFQlcTTYq:localhost:8800 U'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:88001!8:localhost:42455 1!7:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 1!5:localhost:42455 ~1!5:localhost:42455 }1!5:localhost:42455 |1!5:localhost:42455 {1!0:localhost:44405 1!0:localhost:42455 N1!0:localhost:42455 M1!0:localhost:42455 L1!0:localhost:42455 K1!0:localhost:37265 @X(  { SHph h @   P(pH`8`08P(Xx Hx p @h   (  ` X 0 8@P'Q!BPNyKqmwcpGxIbGFZG:localhost:8800k'Q!BPNyKqmwcpGxIbGFZG:localhost:8800j'Q!BkzROHxDAfKIzYpmPV:localhost:8800i'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800o'Q!BkzROHxDAfKIzYpmPV:localhost:8800n'Q!BfEFIDBthhkweqfhir:localhost:88000('Q!BGbJEmJRVJGlZFQbZe:localhost:8800-'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BKZJsoFNhiLTDYNclB:localhost:8800; &Q!BDASLhdcKfNwxCTCSg:localhost:8800_'Q!AoAvmnwMkhYBQsbCsL:localhost:8800 8x'Q!BGbJEmJRVJGlZFQbZe:localhost:8800.'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800/'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800p'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BrssELMbasSzTFpIXm:localhost:8800P'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800h'Q!BkzROHxDAfKIzYpmPV:localhost:8800g'Q!BkzROHxDAfKIzYpmPV:localhost:8800f'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800k'Q!BkzROHxDAfKIzYpmPV:localhost:8800m'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800 P&Q!BDASLhdcKfNwxCTCSg:localhost:8800a&Q!BDASLhdcKfNwxCTCSg:localhost:8800` 0('Q!BrssELMbasSzTFpIXm:localhost:8800Q'Q!BrssELMbasSzTFpIXm:localhost:8800N'Q!BrssELMbasSzTFpIXm:localhost:8800M'Q!BrssELMbasSzTFpIXm:localhost:8800L'Q!BrssELMbasSzTFpIXm:localhost:8800K'Q!BrssELMbasSzTFpIXm:localhost:8800I 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'&Q!BDASLhdcKfNwxCTCSg:localhost:8800d&Q!BDASLhdcKfNwxCTCSg:localhost:8800c&Q!BDASLhdcKfNwxCTCSg:localhost:8800b'Q!BkzROHxDAfKIzYpmPV:localhost:8800l'Q!BPNyKqmwcpGxIbGFZG:localhost:8800f'Q!BKZJsoFNhiLTDYNclB:localhost:8800@'Q!BKZJsoFNhiLTDYNclB:localhost:8800?'Q!BKZJsoFNhiLTDYNclB:localhost:8800>'Q!BKZJsoFNhiLTDYNclB:localhost:8800='Q!BKZJsoFNhiLTDYNclB:localhost:8800<'Q!BrssELMbasSzTFpIXm:localhost:8800OP'Q!BPNyKqmwcpGxIbGFZG:localhost:8800h'Q!BPNyKqmwcpGxIbGFZG:localhost:8800g'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BrssELMbasSzTFpIXm:localhost:8800J'Q!BPNyKqmwcpGxIbGFZG:localhost:8800i'Q!BGbJEmJRVJGlZFQbZe:localhost:8800)'Q!BGbJEmJRVJGlZFQbZe:localhost:8800*'Q!BGbJEmJRVJGlZFQbZe:localhost:8800+'Q!BGbJEmJRVJGlZFQbZe:localhost:8800('Q!BGbJEmJRVJGlZFQbZe:localhost:8800,'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800j .VW X  Y  Z  [  \ ]^ _ ` _ZUPT Qe!vJQYmOxOBLwFKzYkNj:localhost:8800$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4T Qe!kkgEEVUJynguTqAoWD:localhost:8800$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwT Qe!kkgEEVUJynguTqAoWD:localhost:8800$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EgTQe!kkgEEVUJynguTqAoWD:localhost:8800$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLETQe!kkgEEVUJynguTqAoWD:localhost:8800$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0TQe!kkgEEVUJynguTqAoWD:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QTQe!kkgEEVUJynguTqAoWD:localhost:8800$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0TQe!dUnULFLGtgaVdwHtnz:localhost:8800$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8TQe!dUnULFLGtgaVdwHtnz:localhost:8800$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0TQe!dUnULFLGtgaVdwHtnz:localhost:8800$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUTQe!dUnULFLGtgaVdwHtnz:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1ATQe!dUnULFLGtgaVdwHtnz:localhost:8800$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0SQe!aWbcZNVBalJilCEsdr:localhost:8800$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUS~Qe~!aWbcZNVBalJilCEsdr:localhost:8800$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAES}Qe}!aWbcZNVBalJilCEsdr:localhost:8800$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3MS|Qe|!aWbcZNVBalJilCEsdr:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1QS{Qe{!aWbcZNVBalJilCEsdr:localhost:8800$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcSzQez!kxTDuIasPNpXtiRsif:localhost:8800$nzIpPfyeKHRFGxE7irJSyrFr8stmD4wCpB0YX3jrI9YSyQey!kxTDuIasPNpXtiRsif:localhost:8800$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6MSxQex!kxTDuIasPNpXtiRsif:localhost:8800$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__MSwQew!kxTDuIasPNpXtiRsif:localhost:8800$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdISvQev!kxTDuIasPNpXtiRsif:localhost:8800$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkSuQeu!kxTDuIasPNpXtiRsif:localhost:8800$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMStQet!kxTDuIasPNpXtiRsif:localhost:8800$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsASsQes!kxTDuIasPNpXtiRsif:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kSrQer!kxTDuIasPNpXtiRsif:localhost:8800$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcSqQeq!wvnfKBSrUlfNmYoeil:localhost:8800$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsSpQep!wvnfKBSrUlfNmYoeil:localhost:8800$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsSoQeo!wvnfKBSrUlfNmYoeil:localhost:8800$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgSnQen!wvnfKBSrUlfNmYoeil:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68SmQem!wvnfKBSrUlfNmYoeil:localhost:8800$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4SlQel!NhWgOTYzEPRwAxRQvS:localhost:8800$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97ASkQek!NhWgOTYzEPRwAxRQvS:localhost:8800$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUASjQej!NhWgOTYzEPRwAxRQvS:localhost:8800$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQSiQei!NhWgOTYzEPRwAxRQvS:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79RcShQeh!NhWgOTYzEPRwAxRQvS:localhost:8800$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkSgQeg!scyFsXcUIJiLIMwWMY:localhost:8800$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMSfQef!scyFsXcUIJiLIMwWMY:localhost:8800$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIwSeQee!scyFsXcUIJiLIMwWMY:localhost:8800$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcSdQed!scyFsXcUIJiLIMwWMY:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgScQec!scyFsXcUIJiLIMwWMY:localhost:8800$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMSbQeb!aWJOsiuJONOvjKWEjO:localhost:8800$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYSaQea!aWJOsiuJONOvjKWEjO:localhost:8800$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0S`Qe`!aWJOsiuJONOvjKWEjO:localhost:8800$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRoS_Qe_!aWJOsiuJONOvjKWEjO:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQS^Qe^!aWJOsiuJONOvjKWEjO:localhost:8800$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4   :qheQ]s$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 105}{"auth_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo", "$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo"], "type": "m.room.join_rules", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040361704, "hashes": {"sha256": "fzH97NhcVmYC2R07UUafyMmokKZ8iWlraRcqH3FbAqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pBxL8KHWlCP4aR1K+LjYowqZ+K0omiWsXpRLAO4ZziL1Sywx6NnKfS+M7xden1FVZyWfJTzfPFYMWFtyTwYQAA"}}, "unsigned": {"age_ts": 1570040361704}}ggeQ]_$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 104}{"auth_events": ["$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "type": "m.room.power_levels", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"users": {"@anon-20191002_181700-33:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040361112, "hashes": {"sha256": "w+Rv1ixwO5bTE81wu9vI1Ls2O6+Or4Dj9HI8Qi/+ljc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9bTBLQMqSBGL/Betaxqji8RQsuAe8s2UY67LY4LutqXmwonShx98JW8496FAPKxSC/Ky2S+29JqqRiUvNkmJDA"}}, "unsigned": {"age_ts": 1570040361112}}qfeQ]s$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 103}{"auth_events": ["$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4"], "prev_events": ["$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4"], "type": "m.room.member", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-33", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-33:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040360683, "hashes": {"sha256": "L03PlugfWUnj7qvo4x97Kum6eG4OPxwGY0jmlJbvz9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6+OK2u+7u6IlOSZlF1o49d63VUAZaY0KDs/RShPocCjwUpCcDDgDd+8cqm2Ny66aPXPN1h7WouLcxOO5b5loCQ"}}, "unsigned": {"age_ts": 1570040360683}}eeeQ][$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 102}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-33:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040359976, "hashes": {"sha256": "UeaduyZrNkNNYmfJqEB07CUHXBQGFe1KqcjdU/hqpd0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LIq2oUu8SpQKDpX33E/aB8aElQ94iMUAXZHc+QrHK/nkAL891Ln7T/qndCV2qIjOgJN7ROrXqc85ml8X87XdDw"}}, "unsigned": {"age_ts": 1570040359976}}  {qleQ]s$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 109}{"auth_events": ["$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM"], "prev_events": ["$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM"], "type": "m.room.member", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-34", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-34:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040364742, "hashes": {"sha256": "BlVBwJHa6clr77oF2mCg8+yBztcKlZTcuo9hP6SK4+o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NjL9O8iPUOWXkCEv4ywOskwKSdP4sW4fbH/BWCJFBG/H2X0V7GKrPddH728GWr+8sZ3UVhnaCSs9vFqsJrUFBg"}}, "unsigned": {"age_ts": 1570040364742}}ekeQ][$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 108}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-34:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040364019, "hashes": {"sha256": "iYwRgcAKU7QvMlJkoKg9pi2+XpdkDNwG736aJ6Ps0ug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CvwmgS0qpbPUIx6wD1aADS2RsXt38ssYcvGNNPYiqKQGuSSnmEvBjqa+U1Zoq+KklVMiBFCn3gXCcSh5nFaSCQ"}}, "unsigned": {"age_ts": 1570040364019}}jeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "txn_id": "abcdef", "stream_ordering": 107}{"auth_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo", "$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY"], "type": "m.room.message", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"msgtype": "m.message", "body": "Here is the message content"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040363086, "hashes": {"sha256": "44CCJBCc10CQ9Gm338TquOv6TaZBG0gOndaVxralLp4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mrVFwD4jeMTCOsXXqhpnQCnmZqnZ+qw82d/6QT4M/Wrx2Cpd3kc0SZRt/v4VubLrSxN4em6qY7B8/DzslbnODQ"}}, "unsigned": {"age_ts": 1570040363086}}ieQ]$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800{"token_id": 64, "stream_ordering": 106}{"auth_events": ["$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo", "$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4", "$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ"], "prev_events": ["$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0"], "type": "m.room.history_visibility", "room_id": "!aWJOsiuJONOvjKWEjO:localhost:8800", "sender": "@anon-20191002_181700-33:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040362211, "hashes": {"sha256": "Bs/adPXuRS882a2GXEfkI9tTX2pB5DUNlgC2qJC1D2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6ju48VqVkvQHWlkh39sH8kfjM5eiRwg3TUmo0w9g10VHJ0f5mDAxSUcoVj1icpG9q+MZA6UqY5a5fNI7XHzHAw"}}, "unsigned": {"age_ts": 1570040362211}}  " peQ{$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "txn_id": "0", "stream_ordering": 113}{"auth_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc", "$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM"], "type": "m.room.message", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"body": "Here is the message content", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040367328, "hashes": {"sha256": "plyJpuWCNl1p4P3dm5ylLJPKu7qJp3tZnmOKjsiSWoo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1RdepUeGCoYhYuejHiIhO3Q8Q+ed4wnr5kYPeIjdtzTNlVUeJf05dyVDoSuo5yd8SJpUINGY/6ySO5neo5MbBg"}}, "unsigned": {"age_ts": 1570040367328}}oeQ]$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 112}{"auth_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc", "$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw"], "type": "m.room.history_visibility", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040366497, "hashes": {"sha256": "nzA4UAwJF2twGhijaIEvMtGcuVkE5Du+N2aeSJkJYPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eiERssl73ajZi6exhMko7U+6JUNJJzDsU2PPHIfDTO3AqPTMnvwCP3SusgScaWRhc/Pd9FSe3Fve/tP3/5qaBg"}}, "unsigned": {"age_ts": 1570040366497}}qneQ]s$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 111}{"auth_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc", "$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc"], "type": "m.room.join_rules", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040365962, "hashes": {"sha256": "notRDfpfbfAHdvdHO2/DkfixNJqylZg8qhHZp7FwK10"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W1eJE/Y22Cd5wy77xtiphLs9QZwyaW2ShYBUFftaxC9sOYnfP2182+mJF5lzvnOOzTF56VjgnWGyakX3LzUvCQ"}}, "unsigned": {"age_ts": 1570040365962}}gmeQ]_$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800{"token_id": 65, "stream_ordering": 110}{"auth_events": ["$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM", "$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "prev_events": ["$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg"], "type": "m.room.power_levels", "room_id": "!scyFsXcUIJiLIMwWMY:localhost:8800", "sender": "@anon-20191002_181700-34:localhost:8800", "content": {"users": {"@anon-20191002_181700-34:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040365179, "hashes": {"sha256": "34JLvpnIHcLuUgyJXtV5X6btHnMmhtqgiJLqLkWY1CQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GWXphkwP8NPG2eGyl8SunL47GjZ3YTS2WzLcRUeywPqu31XmyMOwaI0j1M/NpkrtllrVYXi1j1ZyGtnw4AzdCQ"}}, "unsigned": {"age_ts": 1570040365179}} !&L r  + Q w 0V|5[:`GlOOQ$157004185780kUwpq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800glOOQ$157004185679NNCIw:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800flOOQ$157004184976eGgUf:localhost:8800$157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800_lOOQ$157004184875Wzayo:localhost:8800$157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800^lOOQ$157004184774CHMNl:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800]lOOQ$157004184773rCaRK:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800\lOOQ$157004184672SfwvS:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800[lOOQ$157004183969fQFzs:localhost:8800$157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800UlOOQ$157004183868QRvOi:localhost:8800$157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800TlOOQ$157004183467WkNdH:localhost:8800$157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800PlOOQ$157004183366iKFsz:localhost:8800$157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800OlOOQ$157004183365ZxPWz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800NlOOQ$157004183264ktTbL:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800MlOOQ$157004183063NdEPw:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800LlOOQ$157004182060gAdxi:localhost:8800$157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800BlOOQ$157004181959Afmmv:localhost:8800$157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800AlOOQ$157004181958ixShg:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800@lOOQ$157004181857fcmAB:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800?lOOQ$157004181756ejZNp:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800>lOOQ$157004180853KmrHT:localhost:8800$157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88007lOOQ$157004180752YHMqi:localhost:8800$157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88006lOOQ$157004180751hMlwg:localhost:8800$157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88005lOOQ$157004180650ruqIl:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88004lOOQ$157004180549mJBJB:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88003lOOQ$157004180448zlZXD:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:88002lOOQ$157004180346TRucp:localhost:8800$157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:88001lOOQ$157004180045QtsUE:localhost:8800$157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800/lOOQ$157004179944JKWNJ:localhost:8800$157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800.lOOQ$157004179843yDrjz:localhost:8800$157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800,lOOQ$157004179742OaMxS:localhost:8800$157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800*lOOQ$157004179541PbBIm:localhost:8800$157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800(lOOQ$157004179340NSiie:localhost:8800$157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800&lOOQ$157004179239LLqht:localhost:8800$157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800$ a} { y w u sqomkigeca}eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800|eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800{eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800zeeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800yeeQ$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800xeeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800weeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800veeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800ueeQ$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800teeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800seeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800reeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800qeeQ$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800peeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800oeeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800neeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800meeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800leeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800keeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800jeeQ$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800ieeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800heeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800geeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800feeQ$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800eeeQ$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800deeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800ceeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800beeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800aeeQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800`eeQ$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800_eeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800   :qteQ]s$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 117}{"auth_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ", "$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ"], "type": "m.room.join_rules", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040370713, "hashes": {"sha256": "jQ6+XBssJ+U32ztUWlqEmMB/Py1aBBiKfT5lay4O5iU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eWNG1kKA8h6N+AeqMF8083JvsDKhZQZQ4oTmeIQs96Gi3QlR8DNp2JMwy5aWny2HRafX5UWwUSgJN9Az4qZaDA"}}, "unsigned": {"age_ts": 1570040370713}}gseQ]_$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 116}{"auth_events": ["$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "type": "m.room.power_levels", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"users": {"@anon-20191002_181700-35:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040370071, "hashes": {"sha256": "OBDCRc8lk+HAQwutKn2KrED5plKPGx+1YhfxGIwPzlY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2jY99tgGViNuJy2iIirDJXqYr8BhpEM1OwqkTuEDdotZ4GIpPmR0BsVUO2UdkBBbPTpqMKjYj2K3SsnFmwdYCQ"}}, "unsigned": {"age_ts": 1570040370071}}qreQ]s$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 115}{"auth_events": ["$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk"], "prev_events": ["$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk"], "type": "m.room.member", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-35", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-35:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040369541, "hashes": {"sha256": "nwUzYYVG+i2O74k9x3DvDzw64FuKtpy2xSbOJBTN3Jg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z32oh2X8PkS3uat8vc3jZMd1cmxI13pLDAAvieVKsQQ+5G7AAyH7h4TgOx3qL6PJ6fi7OE96BFsusgeUt5NlBQ"}}, "unsigned": {"age_ts": 1570040369541}}eqeQ][$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 114}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-35:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040368986, "hashes": {"sha256": "2j6quxCOzbCUtA9qlolZO8zHh5W+Obcfc6WZFX7WwP0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T7UN3fvYNZLbiuhJaJo06z5WKv56uW9JNPwueB1YqrPARWc7JUz7RGwbp/yQvLHkYjjPNVjmWuBfG0Y3RMNmAA"}}, "unsigned": {"age_ts": 1570040368986}} #t 2 B p  > d&6d*RX|c Q' e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4b Q% e!kkgEEVUJynguTqAoWD:localhost:8800m.room.topic$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwo Q? e!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibility$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EggQ/ e!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rules$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEiQ3 e!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0 Q'[e!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QcQ' e!kkgEEVUJynguTqAoWD:localhost:8800m.room.create$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0oQ? e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8gQ/ e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rules$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0iQ3 e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU Q'[e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1AcQ' e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.create$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0nQ? e!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibility$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUf~Q/ e~!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rules$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEh}Q3 e}!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M |Q'[e|!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qb{Q' e{!aWbcZNVBalJilCEsdr:localhost:8800m.room.create$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwchzQ3 ez!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$nzIpPfyeKHRFGxE7irJSyrFr8stmD4wCpB0YX3jrI9YhyQ3 ey!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6MhxQ3 ex!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__MhwQ3 ew!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdInvQ? ev!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibility$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkfuQ/ eu!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rules$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMhtQ3 et!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA sQ'[es!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kbrQ' er!kxTDuIasPNpXtiRsif:localhost:8800m.room.create$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcnqQ? eq!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibility$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsfpQ/ ep!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rules$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHshoQ3 eo!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levels$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg nQ'[en!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68bmQ' em!wvnfKBSrUlfNmYoeil:localhost:8800m.room.create$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4nlQ? el!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibility$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97AfkQ/ ek!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rules$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAhjQ3 ej!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ iQ'[ei!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc "is. < h  0 %)QUw6id Q' e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4c Q% e!kkgEEVUJynguTqAoWD:localhost:8800m.room.topic$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwpQ? e!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibility$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EghQ/ e!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rules$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEjQ3 e!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0 Q'[e!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QdQ' e!kkgEEVUJynguTqAoWD:localhost:8800m.room.create$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0pQ? e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8hQ/ e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rules$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0jQ3 e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU Q'[e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1AdQ' e!dUnULFLGtgaVdwHtnz:localhost:8800m.room.create$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0p~Q? e!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibility$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUh}Q/ e!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rules$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEj|Q3 e!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M {Q'[e!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1QdzQ' e!aWbcZNVBalJilCEsdr:localhost:8800m.room.create$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcyQ3 ee!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__MxQ3 ee!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIwQ3 ee!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsApvQ? e!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibility$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkhuQ/ e!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rules$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMitQ3 e!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levels$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA sQ'[e~!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kcrQ' e}!kxTDuIasPNpXtiRsif:localhost:8800m.room.create$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcoqQ? e|!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibility$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsgpQ/ e{!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rules$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsioQ3 ez!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levels$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg nQ'[ey!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68cmQ' ex!wvnfKBSrUlfNmYoeil:localhost:8800m.room.create$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4olQ? ev!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibility$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97AgkQ/ eu!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rules$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAijQ3 et!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ iQ'[es!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc $w0^ j  1 = g ,>n>jt 9Iwe eQ/ $SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rulesg eQ3 $6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels eQ'[$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800a eQ' $-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create` eQ% $X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800m.room.topicmeQ? $CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibilityeeQ/ $L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rulesgeQ3 $CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levelseQ'[$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800aeQ' $NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800m.room.createmeQ? $XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibilityeeQ/ $dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rulesgeQ3 $5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levelseQ'[$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800aeQ' $uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800m.room.createm~eQ? $e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibilitye}eQ/ $EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rulesg|eQ3 $6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levels{eQ'[$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800azeQ' $b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800m.room.creategyeQ3 $5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsgxeQ3 $6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsgweQ3 $cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsmveQ? $Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibilityeueQ/ $70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rulesgteQ3 $dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsseQ'[$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800areQ' $9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800m.room.createmqeQ? $YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibilityepeQ/ $nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rulesgoeQ3 $TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levelsneQ'[$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800ameQ' $tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800m.room.createmleQ? $4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibilityekeQ/ $FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rulesgjeQ3 $8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levels a} { y w u sqomkigeca~zeeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~yeeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800~xeeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~weeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~veeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800~ueeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~teeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~seeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800~reeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~qeeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~peeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800~oeeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~neeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~meeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800~leeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800~keeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~jeeQ$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800~ieeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800~heeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~geeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800~feeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800~eeeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~deeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800~ceeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800~beeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~aeeQ$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800~`eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800~_eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800~^eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800~]eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800~\eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800  {qxeQ]s$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800{"token_id": 67, "stream_ordering": 121}{"auth_events": ["$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4"], "prev_events": ["$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4"], "type": "m.room.member", "room_id": "!wvnfKBSrUlfNmYoeil:localhost:8800", "sender": "@anon-20191002_181700-36:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-36", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-36:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040373993, "hashes": {"sha256": "/pFkVeJGm1KOI/4UDdsEYJcAmooiTFplmQ0y6f9F1GY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nU1IqB66GZsOFuPMEojg8/V9u5xkGkQoEhsItmfxMyeqWaZUqAY/O6XNY/+DBSkb37d4KGmzagIa2uTv21ovBA"}}, "unsigned": {"age_ts": 1570040373993}}eweQ][$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800{"token_id": 67, "stream_ordering": 120}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wvnfKBSrUlfNmYoeil:localhost:8800", "sender": "@anon-20191002_181700-36:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-36:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040373394, "hashes": {"sha256": "h/DAMN14lqchvqzFoF9+z86o3w1ibyUr5L+F7Ltkmf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M0QiWuOWlQUpo35nZBefmlySLM4wEXnc65zbamiVOp6tiwNsIOKK9+iM7TuFSKGFfR1+u0atqBi9JXLiykcDAg"}}, "unsigned": {"age_ts": 1570040373394}}veQ{$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "txn_id": "1", "stream_ordering": 119}{"auth_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ", "$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A"], "type": "m.room.message", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"body": "Here is the message content", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040372306, "hashes": {"sha256": "6l/gwMVp7mZOj3kzQ7ERvKNkB5g2SRafFl5wYUTLGVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IAa4r3IYVxNK6LfC+rYvMLn2ZoPXcVIuUFXmOrq58iMUC4l6BOrxjt/+GHKIB2ATEO2U/GqmhvVm5h6zNvMlDg"}}, "unsigned": {"age_ts": 1570040372306}}ueQ]$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800{"token_id": 66, "stream_ordering": 118}{"auth_events": ["$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ", "$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk", "$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc"], "prev_events": ["$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA"], "type": "m.room.history_visibility", "room_id": "!NhWgOTYzEPRwAxRQvS:localhost:8800", "sender": "@anon-20191002_181700-35:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040371247, "hashes": {"sha256": "A2SkyJ8gNDnHZQmweve3DxdTAYBE6kUyTDFyEXa0Dfs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NFWVmg9n8z32DlXhJYZS2yMIO5KrtFiIhhDf5oZ6UvbHJAwC8UftuSJdEgtTDa10DRNhtdZhkE3H7KuT2EwFCg"}}, "unsigned": {"age_ts": 1570040371247}} `x_>tYD \ G R 7  } d C . L 1  m T 3 |cB-xc' Td(t_#}bI(m1pW6!3 `m.room.power_levels`;'[_m.room.member@anon-20191002_181700-33:localhost:8800_' ^m.room.create^ ? ]m.room.history_visibility]/ \m.room.join_rules\3 [m.room.power_levels[;'[Zm.room.member@anon-20191002_181700-32:localhost:8800Z' Ym.room.createY ? Xm.room.history_visibilityX/ Wm.room.join_rulesW3 Vm.room.power_levelsV;'[Um.room.member@anon-20191002_181700-31:localhost:8800U' Tm.room.createT;'[Sm.room.member@anon-20191002_181700-30:localhost:8800S;'[Rm.room.member@anon-20191002_181700-29:localhost:8800R;'[Qm.room.member@anon-20191002_181700-28:localhost:8800Q;'[Pm.room.member@anon-20191002_181700-28:localhost:8800P;'[Om.room.member@anon-20191002_181700-27:localhost:8800O;'[Nm.room.member@anon-20191002_181700-26:localhost:8800N;'[Mm.room.member@anon-20191002_181700-25:localhost:8800M;'[Lm.room.member@anon-20191002_181700-24:localhost:8800L;'[Km.room.member@anon-20191002_181700-22:localhost:8800K#))Jm.room.aliaseslocalhost:8800J ? Im.room.history_visibilityI/ Hm.room.join_rulesH9 Gm.room.canonical_aliasG3 Fm.room.power_levelsF;'[Em.room.member@anon-20191002_181700-23:localhost:8800E' Dm.room.createD#))Cm.room.aliaseslocalhost:8800C ? Bm.room.history_visibilityB/ Am.room.join_rulesA3 @m.room.power_levels@;'[?m.room.member@anon-20191002_181700-21:localhost:8800?' >m.room.create> ? =m.room.history_visibility=/ {T-vN&^6>fnF'f'Q$1570042619109qhpUv:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611100ueDzK:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042619110gZfPB:localhost:8800&O$157004188598DcHDt:localhost:8800 &O$157004188598DcHDt:localhost:8800 &O$157004188598DcHDt:localhost:8800 ~&O$157004188397MRiZP:localhost:8800 w&O$157004188397MRiZP:localhost:8800 v&O$157004188397MRiZP:localhost:8800 u&O$157004188296OVWxu:localhost:8800 t&O$157004188296OVWxu:localhost:8800 s&O$157004188296OVWxu:localhost:8800 r&O$157004188195thBOS:localhost:8800 q&O$157004188195thBOS:localhost:8800 p&O$157004188195thBOS:localhost:8800 o&O$157004188194vdqBG:localhost:8800 n&O$157004188194vdqBG:localhost:8800 m&O$157004188093UtRbN:localhost:8800 l&O$157004187190ZLRgN:localhost:8800 Y&O$157004187190ZLRgN:localhost:8800 X&O$157004187190ZLRgN:localhost:8800 W&O$157004187089FLOwV:localhost:8800 V&O$157004187089FLOwV:localhost:8800 U&O$157004187089FLOwV:localhost:8800 T&O$157004186988RkcKb:localhost:8800 S&O$157004186988RkcKb:localhost:8800 R&O$157004186988RkcKb:localhost:8800 Q&O$157004186887sKbQU:localhost:8800 P&O$157004186887sKbQU:localhost:8800 O&O$157004186786RVgKA:localhost:8800 N&O$157004185983tEalY:localhost:8800 >&O$157004185983tEalY:localhost:8800 =&O$157004185983tEalY:localhost:8800 <&O$157004185982diSTq:localhost:8800 ;&O$157004185982diSTq:localhost:8800 :&O$157004185982diSTq:localhost:8800 9&O$157004185881ahRFW:localhost:8800 8&O$157004185881ahRFW:localhost:8800 7&O$157004185881ahRFW:localhost:8800 6&O$157004185780kUwpq:localhost:8800 5&O$157004185780kUwpq:localhost:8800 4&O$157004185679NNCIw:localhost:8800 3&O$157004184976eGgUf:localhost:8800 #&O$157004184976eGgUf:localhost:8800 "&O$157004184976eGgUf:localhost:8800 !&O$157004184875Wzayo:localhost:8800 &O$157004184875Wzayo:localhost:8800 &O$157004184875Wzayo:localhost:8800 &O$157004184774CHMNl:localhost:8800 &O$157004184774CHMNl:localhost:8800 &O$157004184774CHMNl:localhost:8800 &O$157004184773rCaRK:localhost:8800 &O$157004184773rCaRK:localhost:8800 &O$157004184672SfwvS:localhost:8800 &O$157004183969fQFzs:localhost:8800 &O$157004183969fQFzs:localhost:8800 &O$157004183969fQFzs:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183868QRvOi:localhost:8800 &O$157004183467WkNdH:localhost:8800 &O$157004183467WkNdH:localhost:8800 &O$157004183467WkNdH:localhost:8800 &O$157004183366iKFsz:localhost:8800 &O$157004183366iKFsz:localhost:8800 &O$157004183366iKFsz:localhost:8800 &O$157004183365ZxPWz:localhost:8800 &O$157004183365ZxPWz:localhost:8800 &O$157004183365ZxPWz:localhost:8800 &O$157004183264ktTbL:localhost:8800 &O$157004183264ktTbL:localhost:8800 &O$157004183063NdEPw:localhost:8800 w  !}eeQ][$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 133}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-38:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040382803, "hashes": {"sha256": "cj8rj1W7wjdhS/dB/NLLz0Hfxa8A78fqOdJNWcaIs4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PcJ69w7pD5pfn0sLL43UzdkOZFtKBHFrbp9GJaY8TixrJq8birdZaPAxz+iWrNrfU5BKpPbsv8SCIxBqqGVEAA"}}, "unsigned": {"age_ts": 1570040382803}} eQ]Q$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800{"token_id": 68, "stream_ordering": 132}{"auth_events": ["$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M", "$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc", "$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k"], "prev_events": ["$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M"], "type": "m.room.power_levels", "room_id": "!kxTDuIasPNpXtiRsif:localhost:8800", "sender": "@anon-20191002_181700-37:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040381675, "hashes": {"sha256": "Abwab84RysESTKOR0Pugc7jxnunmMyj0i8TDP4Q5dpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HAgLV34m3aLWWSLDoLK6SQ6+Qvw47TsQf3CvTHpcTjiKk/gtHWHCFbGvj05WHmZtt40caG6wza7ec3fQfRqSBg"}}, "unsigned": {"age_ts": 1570040381675, "replaces_state": "$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M"}}YeQ]C$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800{"token_id": 68, "stream_ordering": 131}{"auth_events": ["$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI", "$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc", "$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k"], "prev_events": ["$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI"], "type": "m.room.power_levels", "room_id": "!kxTDuIasPNpXtiRsif:localhost:8800", "sender": "@anon-20191002_181700-37:localhost:8800", "content": {"users": {"@anon-20191002_181700-37:localhost:8800": 100}}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040381249, "hashes": {"sha256": "aAVNk7KZ32c5+IwJkxePMHWpWLA6V1aKTxjS8LFQbu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "scShulrn7uQB7Gra5sNxOvCl23g3M+AyNDlv7f8QAU9A6woP3otVy6ahbpCD79H1UHZsNe/pwH67JlwhgFHeBQ"}}, "unsigned": {"age_ts": 1570040381249, "replaces_state": "$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI"}}~eQ] $cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800{"token_id": 68, "stream_ordering": 130}{"auth_events": ["$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA", "$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc", "$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k"], "prev_events": ["$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk"], "type": "m.room.power_levels", "room_id": "!kxTDuIasPNpXtiRsif:localhost:8800", "sender": "@anon-20191002_181700-37:localhost:8800", "content": {"users": {"@anon-20191002_181700-37:localhost:8800": 100, "@random-other-user:their.home": 20}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.name": 50, "m.room.avatar": 50}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040380647, "hashes": {"sha256": "Epzs373zbvkeph+qU4TA8CNhjuuDwA1f5COaaPH6ZA4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AjJ39K4KyVWoE81A3lMpuymi+wtuV1j2tFX/HuwDErZxpgB4ZsQ3VRAlfvLARR78yX83CdaVRfxo3/TRTBF4Dw"}}, "unsigned": {"age_ts": 1570040380647, "replaces_state": "$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA"}} a} { y w u sqomkigeca~eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~eeQ$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800~ eeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800~ eeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800~eeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~eeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800~~eeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800~}eeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~|eeQ$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc!aWbcZNVBalJilCEsdr:localhost:8800~{eeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800 alQ4?"^{nQ4hK,h7TqL. d H * ! s > p ;  k 8  j 7 g2b/_*^1@35:localhost:8800a1@33:localhost:8800m1@32:localhost:8800m1@24:localhost:8800ap1@21:localhost:8800af1@19:localhost:8800a`1@17:localhost:8800m\1@14:localhost:8800aM1@16:localhost:8800mX1@16:localhost:8800aU1@15:localhost:8800mT1@15:localhost:8800aQ1@14:localhost:8800mP1@17:localhost:8800aY1@18:localhost:8800a]1@20:localhost:8800ac1@22:localhost:8800ai1@23:localhost:8800am1@30:localhost:8800a1@29:localhost:8800a1@28:localhost:8800m1@28:localhost:8800a|1@27:localhost:8800ay1@26:localhost:8800av1@25:localhost:8800as1@31:localhost:8800m1@31:localhost:8800a1@30:localhost:8800m1@32:localhost:8800a1@33:localhost:8800a1@34:localhost:8800a1@34:localhost:8800m)7@admin:localhost:8800a"1@36:localhost:8800a+<q@_astest-01create-0-20191002_181700:localhost:8800a|2]@anon-20191002_181700-120:localhost:8800a0[@anon-20191002_181700-11:localhost:8800a(4]@anon-20191002_181700-119:localhost:8800m2]@anon-20191002_181700-119:localhost:8800a4]@anon-20191002_181700-118:localhost:8800m2]@anon-20191002_181700-118:localhost:8800a4]@anon-20191002_181700-117:localhost:8800m2]@anon-20191002_181700-117:localhost:8800a4]@anon-20191002_181700-116:localhost:8800m2]@anon-20191002_181700-116:localhost:8800a4]@anon-20191002_181700-115:localhost:8800m2]@anon-20191002_181700-115:localhost:8800a4]@anon-20191002_181700-114:localhost:8800m2]@anon-20191002_181700-114:localhost:8800a4]@anon-20191002_181700-113:localhost:8800m2]@anon-20191002_181700-113:localhost:8800a4]@anon-20191002_181700-112:localhost:8800m2]@anon-20191002_181700-112:localhost:8800a4]@anon-20191002_181700-110:localhost:8800m2]@anon-20191002_181700-110:localhost:8800a0[@anon-20191002_181700-10:localhost:8800a'4]@anon-20191002_181700-109:localhost:8800m2]@anon-20191002_181700-109:localhost:8800a4]@anon-20191002_181700-108:localhost:8800m2]@anon-20191002_181700-108:localhost:8800a4]@anon-20191002_181700-107:localhost:8800m2]@anon-20191002_181700-107:localhost:8800a4]@anon-20191002_181700-106:localhost:8800m2]@anon-20191002_181700-106:localhost:8800a4]@anon-20191002_181700-104:localhost:8800m2]@anon-20191002_181700-104:localhost:8800a2]@anon-20191002_181700-103:localhost:8800a4]@anon-20191002_181700-102:localhost:8800m2]@anon-20191002_181700-102:localhost:8800a4]@anon-20191002_181700-101:localhost:8800m2]@anon-20191002_181700-101:localhost:8800a4]@anon-20191002_181700-100:localhost:8800m2]@anon-20191002_181700-100:localhost:8800a/@9:localhost:8800a&/@8:localhost:8800m(/@8:localhost:8800a#/@7:localhost:8800m"/@7:localhost:8800a/@6:localhost:8800m/@6:localhost:8800a/@5:localhost:8800m/@5:localhost:8800a/@4:localhost:8800a/@3:localhost:8800m/@3:localhost:8800a/@2:localhost:8800m/@2:localhost:8800a /@1:localhost:8800a 1@13:localhost:8800mL1@13:localhost:8800aI1@12:localhost:8800a01@11:localhost:8800a/1@10:localhost:8800a'/@0:localhost:8800aZ ;@02login:localhost:8800a:k@01register-user-20191002_181700:localhost:8800m 7k @01register-user-20191002_181700:localhost:8800a JtA e0`- a , ^ ) [ & Z % W "RQN~K{H|GwD?h2]@anon-20191002_181700-124:localhost:8800a4]@anon-20191002_181700-124:localhost:8800m2]@anon-20191002_181700-122:localhost:8800a2]@anon-20191002_181700-121:localhost:8800a4]@anon-20191002_181700-123:localhost:8800m2]@anon-20191002_181700-123:localhost:8800a52]@anon-20191002_181700-164:localhost:8800a4]@anon-20191002_181700-163:localhost:8800m2]@anon-20191002_181700-163:localhost:8800a4]@anon-20191002_181700-162:localhost:8800m2]@anon-20191002_181700-162:localhost:8800a4]@anon-20191002_181700-161:localhost:8800m2]@anon-20191002_181700-161:localhost:8800a4]@anon-20191002_181700-160:localhost:8800m2]@anon-20191002_181700-160:localhost:8800a 0[@anon-20191002_181700-15:localhost:8800a,2]@anon-20191002_181700-159:localhost:8800a 4]@anon-20191002_181700-158:localhost:8800m 2]@anon-20191002_181700-158:localhost:8800a2]@anon-20191002_181700-157:localhost:8800a4]@anon-20191002_181700-156:localhost:8800m2]@anon-20191002_181700-156:localhost:8800a2]@anon-20191002_181700-155:localhost:8800a4]@anon-20191002_181700-154:localhost:8800m2]@anon-20191002_181700-154:localhost:8800a4]@anon-20191002_181700-153:localhost:8800m2]@anon-20191002_181700-153:localhost:8800a4]@anon-20191002_181700-152:localhost:8800m2]@anon-20191002_181700-152:localhost:8800a4]@anon-20191002_181700-151:localhost:8800m2]@anon-20191002_181700-151:localhost:8800a4]@anon-20191002_181700-150:localhost:8800m2]@anon-20191002_181700-150:localhost:8800a0[@anon-20191002_181700-14:localhost:8800a+4]@anon-20191002_181700-149:localhost:8800m2]@anon-20191002_181700-149:localhost:8800a4]@anon-20191002_181700-146:localhost:8800m2]@anon-20191002_181700-146:localhost:8800a4]@anon-20191002_181700-144:localhost:8800m2]@anon-20191002_181700-144:localhost:8800a4]@anon-20191002_181700-143:localhost:8800m2]@anon-20191002_181700-143:localhost:8800a2]@anon-20191002_181700-142:localhost:8800a4]@anon-20191002_181700-141:localhost:8800m2]@anon-20191002_181700-141:localhost:8800a4]@anon-20191002_181700-140:localhost:8800m2]@anon-20191002_181700-140:localhost:8800a0[@anon-20191002_181700-13:localhost:8800a)4]@anon-20191002_181700-138:localhost:8800m2]@anon-20191002_181700-138:localhost:8800a4]@anon-20191002_181700-137:localhost:8800m2]@anon-20191002_181700-137:localhost:8800a4]@anon-20191002_181700-136:localhost:8800m2]@anon-20191002_181700-136:localhost:8800a2]@anon-20191002_181700-135:localhost:8800a4]@anon-20191002_181700-134:localhost:8800m2]@anon-20191002_181700-134:localhost:8800a2]@anon-20191002_181700-133:localhost:8800a4]@anon-20191002_181700-132:localhost:8800m2]@anon-20191002_181700-132:localhost:8800a4]@anon-20191002_181700-131:localhost:8800m2]@anon-20191002_181700-131:localhost:8800a2]@anon-20191002_181700-130:localhost:8800a0[@anon-20191002_181700-12:localhost:8800a*4]@anon-20191002_181700-129:localhost:8800m2]@anon-20191002_181700-129:localhost:8800a4]@anon-20191002_181700-128:localhost:8800m2]@anon-20191002_181700-128:localhost:8800a4]@anon-20191002_181700-127:localhost:8800m2]@anon-20191002_181700-127:localhost:8800a4]@anon-20191002_181700-126:localhost:8800m2]@anon-20191002_181700-126:localhost:8800a4]@anon-20191002_181700-125:localhost:8800m2]@anon-20191002_181700-125:localhost:8800a %  %eQ]$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 137}{"auth_events": ["$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M", "$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc", "$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "prev_events": ["$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE"], "type": "m.room.history_visibility", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040385221, "hashes": {"sha256": "J8j3Dn1w7vdHKrPX79VZ06PhKmZ3xnDwwxIqy3lErZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZY9tzV+r6jYkQkjsDHU1SJlJ2VMM5SqZObbF1jfd1Eawco/6znDEgi7cIcn3OurhMcSQCCKk8gnDYr/FRk2dAQ"}}, "unsigned": {"age_ts": 1570040385221}}qeQ]s$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 136}{"auth_events": ["$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M", "$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc", "$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "prev_events": ["$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M"], "type": "m.room.join_rules", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040384688, "hashes": {"sha256": "0kZC8WFeardWLdr2hrJd9NfzXSQzlI7BK63EH/CvH4Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IcnQtpwcpRRwUQQGDZVC/4gTKJ57T4MSVBtEVfm/ayrQhj0y13Jm00BseQrVs8ANSGkwjUd+PoOILo0ozkXjAQ"}}, "unsigned": {"age_ts": 1570040384688}}geQ]_$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 135}{"auth_events": ["$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc", "$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "prev_events": ["$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q"], "type": "m.room.power_levels", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"users": {"@anon-20191002_181700-38:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040383963, "hashes": {"sha256": "a09rztfFEff77yEu5l6K/D9b61TVmQyX5DiFOsqUiAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RT+f6HmMVBu8T9RaX77yeXhUFQ7mLtTYCvMrhlHURZsWmcAa9iwzGlCfLTFRBR592OjnaVIU/h7PryMR2wYNBQ"}}, "unsigned": {"age_ts": 1570040383963}}qeQ]s$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800{"token_id": 69, "stream_ordering": 134}{"auth_events": ["$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc"], "prev_events": ["$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc"], "type": "m.room.member", "room_id": "!aWbcZNVBalJilCEsdr:localhost:8800", "sender": "@anon-20191002_181700-38:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-38", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-38:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040383469, "hashes": {"sha256": "voDukrDMooUmowK4Lladn2T8LmcyVu2OLdLHNAbBAr0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Csbv3gYcaCUGkW71SaoHMMg3RkjHHMVaxRs7LQJbjBXXtFNIW38AtgfG0ZGqtYtBaK+pxUn/B/78f8skPjd4DQ"}}, "unsigned": {"age_ts": 1570040383469}} R1 R s4&i&\WIl y  F ^ #  m 0 P R^Q']!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800 6Q' !CAGaRyRvrohDRBsrWH:localhost:8800m.room.create >Q7 !BfEFIDBthhkweqfhir:localhost:8800m.room.related_groups<Q3 !BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels:Q/ !BfEFIDBthhkweqfhir:localhost:8800m.room.server_acl:Q/ !BkzROHxDAfKIzYpmPV:localhost:8800m.room.join_rulesBQ? !BkzROHxDAfKIzYpmPV:localhost:8800m.room.history_visibility6Q' !BkzROHxDAfKIzYpmPV:localhost:8800m.room.create?Q9 !BkzROHxDAfKIzYpmPV:localhost:8800m.room.canonical_aliasEQ))!BkzROHxDAfKIzYpmPV:localhost:8800m.room.aliaseslocalhost:88005Q% !BfEFIDBthhkweqfhir:localhost:8800m.room.topic^Q']!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800^Q']!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800^Q']!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-140:localhost:88004Q# !BpTqIemsWFZIqTcgJO:localhost:8800m.room.name^Q']!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800^Q']!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800^Q']!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800:Q/ !BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rulesBQ? !BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibility6Q' !BpTqIemsWFZIqTcgJO:localhost:8800m.room.create<Q3 !BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels^Q']!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800:Q/ !BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rulesBQ? !BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibility6Q' !BoyzlWNkRPncpDjBDg:localhost:8800m.room.createCQ?!BkzROHxDAfKIzYpmPV:localhost:8800m.room.third_party_invite2<Q3 !BkzROHxDAfKIzYpmPV:localhost:8800m.room.power_levels `BQ? !CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibility :Q/ !CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rules <Q3 !CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels ^Q']!CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800 6Q' !CKNftKKCaOCVUyYWNY:localhost:8800m.room.create BQ? !CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibility :Q/ !CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rules <Q3 !CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels 4Q# !BfEFIDBthhkweqfhir:localhost:8800m.room.name^Q']!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800:Q/ !BfEFIDBthhkweqfhir:localhost:8800m.room.join_rulesBQ? !BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility<Q3 !BfEFIDBthhkweqfhir:localhost:8800m.room.guest_accessBQ? !CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibility6Q' !CNFopUEQTFbzjmLvii:localhost:8800m.room.create<Q3 !CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels^Q']!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800:Q/ !CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rulesBQ? !CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibility6Q' !CGckPHdSYcIocFvRAq:localhost:8800m.room.create<Q3 !BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels [o M 0}[([a!E@anon-20191002_181700-51:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCgEXJVEMMDWD127.0.0.1Perl + Net::Async::HTTP/0.44m?'[a!E@anon-20191002_181700-50:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCgBNBHLRCHUX127.0.0.1Perl + Net::Async::HTTP/0.44m=&[a!E@anon-20191002_181700-49:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUYwRTlTOipQZThDdU9aMQowMDJmc2lnbmF0dXJlIMxDOMfQi7QpMEic-RaPEMXsMRJB1o80-j34WrEMdLcICgXXZIHXDAZY127.0.0.1Perl + Net::Async::HTTP/0.44m:%[a!E@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMExLdTVtY3hMMGo5d2dJNAowMDJmc2lnbmF0dXJlIOkvze_r9F0C3qDEEZB8FlDTKiRmp-FVbkGhwMBlMlMVCgXFFXACSKID127.0.0.1Perl + Net::Async::HTTP/0.44m6҃$[a!E@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLlp-aWV0aGpsb2VIdDhYaAowMDJmc2lnbmF0dXJlILz-X06NA3MCjvb6uGmoobDiJbicbG4nV2yzvbZkP-rwCgAJQOQZXPLW127.0.0.1Perl + Net::Async::HTTP/0.44m6ʃ #[aE@anon-20191002_181700-44:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0Cgxyzzy127.0.0.1Perl + Net::Async::HTTP/0.44m-"[a!E@anon-20191002_181700-41:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJjdjLW94WC5haSswXjpkbAowMDJmc2lnbmF0dXJlIMicE2dWZmTSWkQlL_dFdEb5UL5iuXwxyFxXiYecyuKlCgOLPAIVSAQX127.0.0.1Perl + Net::Async::HTTP/0.44m'#![a!E@anon-20191002_181700-40:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gX0ZsT2FNZiZrNXNfOGtPNAowMDJmc2lnbmF0dXJlIJNqzbEWoj9JkOWbaVGh5QZZNW-AjkyuhNXrGQdVqviaCgMBXHKMDVDX127.0.0.1Perl + Net::Async::HTTP/0.44m%K [a!E@anon-20191002_181700-39:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLipwfjtVQ3VJc1Z-UX46UQowMDJmc2lnbmF0dXJlIGVOSZR6uZ_XtI81neQU7GI-hz9O6cKZiLnIU-YzCBaKCgFJQMNXTSGY127.0.0.1Perl + Net::Async::HTTP/0.44m[a!E@anon-20191002_181700-38:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCgCOQUCEUZOK127.0.0.1Perl + Net::Async::HTTP/0.44m 0 2 eg_K[aN@anon-20191002_181700-45:localhost:8800xyzzyMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPTc0N1FpRnRmdXE5UkxRTwowMDJmc2lnbmF0dXJlIMoNZmY-XNh59FpalQrmNnYUsTPYIhOLgw9jcBySkeWyCg_J[aM@anon-20191002_181700-44:localhost:8800xyzzyMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0CgdB[!aE@anon-20191002_181700-38:localhost:8800COQUCEUZOKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCgdA[!aD@anon-20191002_181700-37:localhost:8800VQICIZWNXHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICgdI[!aL@anon-20191002_181700-43:localhost:8800QIUVDLRUPDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gY2Q5X1ZSS0ZuQ3ZoK0lQdgowMDJmc2lnbmF0dXJlICgJ_tDsFzgoqjbSMgd3egoxWDT2M0zA54qPLeNHN5FaCgdH[!aK@anon-20191002_181700-43:localhost:8800CHTLJMKZABMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTGc0Lis2MzYqM3VkXnNyUAowMDJmc2lnbmF0dXJlICIg6uN8HQaOzKNnj_FNg9FYNoiSqoT9TRnWywyeAag2Cg0G/!%J@0:localhost:8800BLOODGXNYNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBJQ18weU5JbX4xM0JOSGFiCjAwMmZzaWduYXR1cmUg-Dgad0EACYaLWGOwYOoRIRLZToDmnw1csLvpA4s-iYEK0F/!%I@0:localhost:8800DWCYKFLVQMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBLLFpYOFVpLlFlZmwydkRyCjAwMmZzaWduYXR1cmUgYEGhRFNs0lRHngvsK-GRpseRLXHAVbnVmtbo3UIfeosKdE[!aH@anon-20191002_181700-41:localhost:8800OLPAIVSAQXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJjdjLW94WC5haSswXjpkbAowMDJmc2lnbmF0dXJlIMicE2dWZmTSWkQlL_dFdEb5UL5iuXwxyFxXiYecyuKlCgdD[!aG@anon-20191002_181700-40:localhost:8800MBXHKMDVDXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gX0ZsT2FNZiZrNXNfOGtPNAowMDJmc2lnbmF0dXJlIJNqzbEWoj9JkOWbaVGh5QZZNW-AjkyuhNXrGQdVqviaCgdC[!aF@anon-20191002_181700-39:localhost:8800FJQMNXTSGYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLipwfjtVQ3VJc1Z-UX46UQowMDJmc2lnbmF0dXJlIGVOSZR6uZ_XtI81neQU7GI-hz9O6cKZiLnIU-YzCBaKCg   7q eQ]s$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 141}{"auth_events": ["$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU", "$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0", "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "prev_events": ["$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU"], "type": "m.room.join_rules", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040388981, "hashes": {"sha256": "odmi6kyQllliv0QJ0zvfezg66smmFEpkmI6GviBb0hg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Na+krHWR+cHk8H65s9+7XwduQt/xY/zt0oYw6SQ5nIenIk6NwM042j2giC0u8KXG3VsKYgc6citPj9zSbvw7Bw"}}, "unsigned": {"age_ts": 1570040388981}}g eQ]_$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 140}{"auth_events": ["$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0", "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "prev_events": ["$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "type": "m.room.power_levels", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"users": {"@anon-20191002_181700-39:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040388090, "hashes": {"sha256": "QAxc6VhA1JUBxaod/63UbBzRXY8+3eHDBb1YtgXW/IY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lJRxsrcMviu86nf4K2UCAY9ytF4d89/PjjDJwlCvCSsg3ur6P3QVrlswzlo4OvpGUUEES+EuycYnCgKAJa4UCQ"}}, "unsigned": {"age_ts": 1570040388090}}q eQ]s$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 139}{"auth_events": ["$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0"], "prev_events": ["$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0"], "type": "m.room.member", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-39", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-39:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040387645, "hashes": {"sha256": "2MfW3SUaLI9aWvw8pQzZHltVpQAWrCViGTE4Q41WJqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zf8J/FWzzkON/UlD+8pjL5hU5xrY16mbLfyrr6saYA+GL+CrEHjiPqvBYuG7/fPKSA5qDMCcQOxDIKI/W1sEDg"}}, "unsigned": {"age_ts": 1570040387645}}e eQ][$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 138}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-39:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040387053, "hashes": {"sha256": "kqnEw7oAv2FBQ9VC6sG0xWc56takZhUJu8tQBY7GmY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oFutbkzyIyiJ7Uk9yD/2gavW5wXxT9MxiBi/dWWknLEXhU53YLrslpOctWSCwaDYQKSAOWFjsj5NvyTDCkY4Cg"}}, "unsigned": {"age_ts": 1570040387053}} ,NC 8 - { " p  e ZOD9.|#qf V4eL$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMsha256-YCTOM;Ruq8ߐ ΀V3eL$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgsha256t?`Ɓ!齓" ֞ -d`ıV2eL$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUsha256{"8']p>o<4C \z=?%V1eL$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egsha256Z\&fTُs&4FR5eV0eL$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKosha256U~wd8xc)^1c%,V/eL$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjksha256`S<#|sAXӂ0~9V.eL$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwksha256 i\]_b!$X87 VJH V-eL$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYsha256y|n|D& [}vxmĹ9LV,eL$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEsha256?hy PQ@\ u2ߏ-TqV+eL$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwsha256@"&9M%0 ?EbzU5HnV*eL$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQsha256,l\@]k>a`z":v8DV)eL$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukiksha256꡹I%=\H`F_C~?B)V(eL$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcsha2569K3TY .\V'eL$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8sha256bRpUYW26vźyl6 ir_V&eL$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMsha256[ϛ:\-ie~#"D3V%eL$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8sha256Qn ' ''nLaZܐ. ?V$eL$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgsha256A0_rɱwdۥzt8V#eL$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIsha256$(R8$@FuBj=ʶ2V"eL$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIsha2560/89&S1Sv. .2%'akFVeL$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8sha256Kwqe8ӆ)!6qXKCCVeL$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Esha256IXe/YBM$qSVeL$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0sha256w+5zj=OvflM*VeL$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwsha256_ hiLCrygۍ VeL$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Egsha256 ,`Dq33RY$tb.^'BRHVeL$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEsha256/Ӏ|s?CzS{P ?E~ʼVeL$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0sha256 p5 0=Fzgkl 4MVeL$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qsha256,sRt*J!X*.Ti 9 4/*|%w rmhc T8Qe!OaCEdDAiatpwYcagUb:localhost:8800$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDoT7Qe!OaCEdDAiatpwYcagUb:localhost:8800$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgT6Qe!OaCEdDAiatpwYcagUb:localhost:8800$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6ET5Qe!OaCEdDAiatpwYcagUb:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4T4Qe!OaCEdDAiatpwYcagUb:localhost:8800$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMT3Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgT2Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUT1Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egT0Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoT/Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkT.Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkT-Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYT,Qe!cosGKKhHvKaVukBCic:localhost:8800$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccET+Qe!cosGKKhHvKaVukBCic:localhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwT*Qe!cosGKKhHvKaVukBCic:localhost:8800$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQT)Qe!cosGKKhHvKaVukBCic:localhost:8800$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikT(Qe!cosGKKhHvKaVukBCic:localhost:8800$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcT'Qe!cosGKKhHvKaVukBCic:localhost:8800$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8T&Qe!cosGKKhHvKaVukBCic:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMT%Qe!cosGKKhHvKaVukBCic:localhost:8800$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8T$Qe!rZWweGEChkxxtzyfDB:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgT#Qe!rZWweGEChkxxtzyfDB:localhost:8800$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIT"Qe!rZWweGEChkxxtzyfDB:localhost:8800$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIT!Qe!rZWweGEChkxxtzyfDB:localhost:8800$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPAT Qe!rZWweGEChkxxtzyfDB:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitITQe!rZWweGEChkxxtzyfDB:localhost:8800$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0TQe!uJtKGXTNdEnCPNOGDx:localhost:8800$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLoTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrATQe!uJtKGXTNdEnCPNOGDx:localhost:8800$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067kTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8TQe!vJQYmOxOBLwFKzYkNj:localhost:8800$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6ETQe!vJQYmOxOBLwFKzYkNj:localhost:8800$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0TQe!vJQYmOxOBLwFKzYkNj:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbETQe!vJQYmOxOBLwFKzYkNj:localhost:8800$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4TQe!kkgEEVUJynguTqAoWD:localhost:8800$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwTQe!kkgEEVUJynguTqAoWD:localhost:8800$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-EgTQe!kkgEEVUJynguTqAoWD:localhost:8800$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLETQe!kkgEEVUJynguTqAoWD:localhost:8800$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0TQe!kkgEEVUJynguTqAoWD:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7QTQe!kkgEEVUJynguTqAoWD:localhost:8800$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0T Qe!dUnULFLGtgaVdwHtnz:localhost:8800$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8T Qe!dUnULFLGtgaVdwHtnz:localhost:8800$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0  z geQ]_$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 145}{"auth_events": ["$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "type": "m.room.power_levels", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"users": {"@anon-20191002_181700-61:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040407149, "hashes": {"sha256": "zOpcYkUF0GHGClTY3fGtWzKXar4mAGNkX1Clq1FyBdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AtV8xOUY/pQMPuRVoPbEqCf5ur/faDjZkJYCWtLroP+XqKbAyRWMfGUx2rfpbWasCdDlUXlMOXmNslz9AWSQAg"}}, "unsigned": {"age_ts": 1570040407149}}qeQ]s$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 144}{"auth_events": ["$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0"], "prev_events": ["$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0"], "type": "m.room.member", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-61", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-61:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040406679, "hashes": {"sha256": "8IfjxFYqgfd2ldwRqlZ8biNDrBiaMnByEjfSF7WoxQE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sZbjrrFGMsWDwrobSDiajLAFobGkRavWqbPHjW+D6j/6Q2/rjKkOCmTx1mPOj8J3xeqWjgAVDsdzOd0mQHWgBQ"}}, "unsigned": {"age_ts": 1570040406679}}eeQ][$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 143}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-61:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040405908, "hashes": {"sha256": "EYUzBfHaiVzAOLDnv4xDYIu2uHevEROh9mbsaHdK4E0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QwvgoorJS4oSkNFGkyCrJNPTGYmOb/kJKGuI9qrEaHuF4Ze0w2TiyLArbyC6NkZ2vCjFtLJaAQXOu/gNxtXwAQ"}}, "unsigned": {"age_ts": 1570040405908}} eQ]$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800{"token_id": 70, "stream_ordering": 142}{"auth_events": ["$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU", "$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0", "$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A"], "prev_events": ["$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0"], "type": "m.room.history_visibility", "room_id": "!dUnULFLGtgaVdwHtnz:localhost:8800", "sender": "@anon-20191002_181700-39:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040389515, "hashes": {"sha256": "P44iPeZH6RvvBVCwJhD+BYO+8E4AmDr1CdhR9N5xdP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fwiJPeTm9LKTX3pKsrdDulXBj0kbAdu9ZxxM6y1UwIzFOMdtH/qVYByICECVddtosMTs618BMCYL2sT/lsG2AQ"}}, "unsigned": {"age_ts": 1570040389515}} ,2 Z  1 Y e#/]]i*GSY9jeQ9 $q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_aliasgeQ3 $9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels eQ'[$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800joinaeQ' $kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800m.room.create eQ'[$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800joinmeQ? $wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibilityeeQ/ $MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rulesgeQ3 $jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels eQ'[$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800joinaeQ' $r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800m.room.createmeQ? $Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibilityeeQ/ $yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rulesgeQ3 $rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels eQ'[$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800joina eQ' $d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.createe eQ/ $Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.typem eQ? $S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibilitye eQ/ $SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rulesg eQ3 $6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels eQ'[$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800joinaeQ' $-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create`eQ% $X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800m.room.topicmeQ? $CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibilityeeQ/ $L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rulesgeQ3 $CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels eQ'[$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800joinaeQ' $NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800m.room.createmeQ? $XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility  x mG  < /aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPTc0N1FpRnRmdXE5UkxRTwowMDJmc2lnbmF0dXJlIMoNZmY-XNh59FpalQrmNnYUsTPYIhOLgw9jcBySkeWyCgK/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0CgJ/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECg=/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCgk!@01register-user-20191002_181700:localhost:8800KRNGWLGVFN GT t <  \ $ | D d , L lJ(b*Hh0Pp8X x@`(6r[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSE6q[!~@anon-20191002_181700-80:localhost:8800YTTBSSDSAF6p[!}@anon-20191002_181700-79:localhost:8800EJTCNAZVHD6o[!|@anon-20191002_181700-77:localhost:8800FSPHKPOXWN6n[!{@anon-20191002_181700-75:localhost:8800RNMICKNMBM6m[!z@anon-20191002_181700-74:localhost:8800SVXLVPCWLX6l[!y@anon-20191002_181700-73:localhost:8800XAYBGVYWKC6k[!x@anon-20191002_181700-71:localhost:8800TCTQJEZQFI6j[!w@anon-20191002_181700-70:localhost:8800PGQYANGMEI6i[!v@anon-20191002_181700-68:localhost:8800GNKAPUDEUD6h[!u@anon-20191002_181700-67:localhost:8800ONYGLHFWXM6g[!t@anon-20191002_181700-64:localhost:8800NPZFHRJOQI6f[!s@anon-20191002_181700-65:localhost:8800JPWZALXKWP6e[!r@anon-20191002_181700-63:localhost:8800VLTVDGDALO6d[!q@anon-20191002_181700-62:localhost:8800PJTOWKTNYX6c[!p@anon-20191002_181700-61:localhost:8800SXUBBXHSVU6b[!o@anon-20191002_181700-60:localhost:8800JSZKVAFOZG6a[!n@anon-20191002_181700-59:localhost:8800DRVLOZZUPQ6`[!m@anon-20191002_181700-58:localhost:8800XSIUOLPWQX6_[!k@anon-20191002_181700-57:localhost:8800NFIQURSFUO6^[!j@anon-20191002_181700-56:localhost:8800UWHMGOHJLQ6][!g@anon-20191002_181700-55:localhost:8800GJICSOZSSM6\[!f@anon-20191002_181700-54:localhost:8800MQMQOGGONN6[[!d@anon-20191002_181700-54:localhost:8800WKSZTPHXTG6Z[!c@anon-20191002_181700-53:localhost:8800MVQZRCIGFU6Y[!a@anon-20191002_181700-53:localhost:8800HCQPROAEXN6X[!_@anon-20191002_181700-52:localhost:8800KYXATQJIHB6W[!^@anon-20191002_181700-51:localhost:8800IJUKQYPGHP6V[!\@anon-20191002_181700-51:localhost:8800EXJVEMMDWD6U[!Z@anon-20191002_181700-50:localhost:8800BNBHLRCHUX6T[!Y@anon-20191002_181700-49:localhost:8800XXZIHXDAZY6S[!Y@anon-20191002_181700-49:localhost:8800TMAZYGEOXO6R[!V@anon-20191002_181700-48:localhost:8800XFFXACSKID6J[!N@anon-20191002_181700-43:localhost:8800CHTLJMKZAB I/!M@0:localhost:8800BLOODGXNYN H/!L@0:localhost:8800DWCYKFLVQM6G[!K@anon-20191002_181700-41:localhost:8800OLPAIVSAQX6F[!J@anon-20191002_181700-40:localhost:8800MBXHKMDVDX6E[!I@anon-20191002_181700-39:localhost:8800FJQMNXTSGY6D[!H@anon-20191002_181700-38:localhost:8800COQUCEUZOK6C[!G@anon-20191002_181700-37:localhost:8800VQICIZWNXH6B[!F@anon-20191002_181700-36:localhost:8800KRWZEWLMKO6A[!E@anon-20191002_181700-35:localhost:8800EALQMPIKHO6@[!D@anon-20191002_181700-34:localhost:8800ZGZSYILFGA6?[!C@anon-20191002_181700-33:localhost:8800SKGXUBFLKN6>[!B@anon-20191002_181700-32:localhost:8800DXDIQOFVCB6=[!A@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC6<[!@@anon-20191002_181700-30:localhost:8800STWEJRRVAK6;[!?@anon-20191002_181700-29:localhost:8800WSREAIROYN6:[!>@anon-20191002_181700-28:localhost:8800XMXOPMIZZU69[!=@anon-20191002_181700-27:localhost:8800TWNKNEABLT68[!<@anon-20191002_181700-26:localhost:8800UBEJKIDKFL67[!;@anon-20191002_181700-25:localhost:8800IOMJWWQXRT66[!:@anon-20191002_181700-24:localhost:8800MRUESCORNA65[!9@anon-20191002_181700-23:localhost:8800SNOHQGNOOL64[!8@anon-20191002_181700-22:localhost:8800HVNUPXSZHY63[!7@anon-20191002_181700-21:localhost:8800KHJDEDTDXI62[!6@anon-20191002_181700-20:localhost:8800MIHVANNPDD61[!5@anon-20191002_181700-19:localhost:8800YBVCGWDMTL60[!4@anon-20191002_181700-18:localhost:8800TRFQQDTHPK6/[!3@anon-20191002_181700-17:localhost:8800VRXIORHZEX6.[!2@anon-20191002_181700-16:localhost:8800OZMNCFRFTF6-[!1@anon-20191002_181700-15:localhost:8800KLXIHUSAOG8,[%0@anon-20191002_181700-14:localhost:8800login_device6Q[!U@anon-20191002_181700-48:localhost:8800AJQOQZXPLW6+[!/@anon-20191002_181700-14:localhost:8800UAGQKBVBOW*OC!S@cas_user=21:localhost:8800BIHKGABDWP6N[!R@anon-20191002_181700-47:localhost:8800JCZSZIHLLU1M[Q@anon-20191002_181700-45:localhost:8800xyzzy1L[P@anon-20191002_181700-44:localhost:8800xyzzy6K[!O@anon-20191002_181700-43:localhost:8800QIUVDLRUPD KStM%tO* q M (  olG" K& '  u Q -k% I  e ,Jf-Kg.Jh$1%@36:localhost:8800guest_device%$1%@30:localhost:8800guest_device$1%@29:localhost:8800guest_device$1%@28:localhost:8800guest_device$1%@27:localhost:8800guest_device$1%@26:localhost:8800guest_device$1%@33:localhost:8800guest_device$1%@32:localhost:8800guest_device$1%@31:localhost:8800guest_device$1%@34:localhost:8800guest_device$1%@35:localhost:8800guest_device# 1E+@__ANON__-48:localhost:42455CURIOSITY_ROVER2E-@__ANON__-46:localhost:42455random_device_id%7!@admin:localhost:8800GMJMIKRCODq/Bq!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZQ8]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN8[%@anon-20191002_181700-12:localhost:8800login_device*6[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQ)8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBE8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS8[%@anon-20191002_181700-11:localhost:8800login_device'6[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFA&8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH6[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQG%8]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA8]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH8]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW8]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF8]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF8]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUI8]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL8]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMG8]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHG#/%@9:localhost:8800guest_device#/%@8:localhost:8800guest_device!/!@8:localhost:8800SPYUTHBEKD#/%@7:localhost:8800guest_device#/%@6:localhost:8800guest_device#/%@5:localhost:8800guest_device#/%@4:localhost:8800guest_device#/%@3:localhost:8800guest_device#/%@2:localhost:8800guest_device$1%@25:localhost:8800guest_device$1%@24:localhost:8800guest_device$1%@23:localhost:8800guest_device$1%@22:localhost:8800guest_device$1%@21:localhost:8800guest_device$1%@20:localhost:8800guest_device#/%@1:localhost:8800guest_device$1%@19:localhost:8800guest_device$1%@18:localhost:8800guest_device$1%@17:localhost:8800guest_device$1%@16:localhost:8800guest_device$1%@15:localhost:8800guest_device$1%@14:localhost:8800guest_device$1%@13:localhost:8800guest_device$1%@12:localhost:8800guest_device$1%@11:localhost:8800guest_device$1%@10:localhost:8800guest_device /!@0:localhost:8800DWCYKFLVQMH /!@0:localhost:8800BLOODGXNYNI';#@02login:localhost:8800my_super_id&;!@02login:localhost:8800TUIMTGQXHF&;!@02login:localhost:8800OFRAEFMMXR&;!@02login:localhost:8800FHCBMHROPD=k! @01register-user-20191002_181700:localhost:8800KRNGWLGVFN C_&Ws: X  t ;  W u <  X v=Y w>Z!x?["w@8]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS8]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA68]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA6[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL18]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS8]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ8]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ8]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD8]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA8]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ8]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM8]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT8]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ6[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK08]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ8]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB8]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF8]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN8]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH6[!@anon-20191002_181700-17:localhost:8800VRXIORHZEX/8]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY8]!@anon-20191002_181700-170:localhost:8800SULWIONTNX6[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTF.8]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW8]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ8]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE8]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ8]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL8]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF8]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN8]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD6[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOG-8]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN8]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV8]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT8]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD8]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY8]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG8]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA8]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8[%@anon-20191002_181700-14:localhost:8800login_device,6[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOW+8]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8]!@anon-20191002_181700-140:localhost:8800OLUEHITWUA6[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZG(8]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS hJ* k`M/KqS т5  w OY /;|]> 1^ m z ) 6 C R  _ ly*7DQ`mz)P]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800}P]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800|P]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800{P]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800zP]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800yP]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800xP]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800wP]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800vP]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800uP]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800tP]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800sN[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800P]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800rP]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800qP]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800pP]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800oP]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800nP]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800mP]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800lP]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800kP]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800jN[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800P]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800iP]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800hP]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800gP]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800fP]Q@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800eP]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800dP]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800cP]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800bP]Q@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800aP]Q@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800`N[Q@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800P]Q@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800_P]Q@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800^P]Q@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800]P]Q@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800\P]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800[P]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800ZP]Q@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800YP]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800XP]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800VP]Q@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800WP]Q@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800UP]Q@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800TN[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800P]Q@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800SP]Q@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800RP]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800~  } }   ~Q[e!kkgEEVUJynguTqAoWD:localhost:8800@anon-20191002_181700-61:localhost:8800$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qjoin~Q[e!dUnULFLGtgaVdwHtnz:localhost:8800@anon-20191002_181700-39:localhost:8800$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1Ajoin~Q[e!aWbcZNVBalJilCEsdr:localhost:8800@anon-20191002_181700-38:localhost:8800$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qjoin~Q[e!kxTDuIasPNpXtiRsif:localhost:8800@anon-20191002_181700-37:localhost:8800$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kjoin~Q[e!wvnfKBSrUlfNmYoeil:localhost:8800@anon-20191002_181700-36:localhost:8800$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68join~Q[e!NhWgOTYzEPRwAxRQvS:localhost:8800@anon-20191002_181700-35:localhost:8800$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcjoin~Q[e!scyFsXcUIJiLIMwWMY:localhost:8800@anon-20191002_181700-34:localhost:8800$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgjoin~Q[e!aWJOsiuJONOvjKWEjO:localhost:8800@anon-20191002_181700-33:localhost:8800$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQjoin~Q[e!BDASLhdcKfNwxCTCSg:localhost:8800@anon-20191002_181700-32:localhost:8800$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAjoin~Q[e!xwoIOPTGmJIlTXakxC:localhost:8800@anon-20191002_181700-31:localhost:8800$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8join}Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-30:localhost:8800$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwbanQ[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMinviteQ[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-28:localhost:8800$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUleave~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-27:localhost:8800$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-26:localhost:8800$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-25:localhost:8800$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-24:localhost:8800$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wjoin~Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-22:localhost:8800$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcjoin~ Q[e!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-23:localhost:8800$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0join~ Q[e!NZHpBquHDfJAjiawGk:localhost:8800@anon-20191002_181700-21:localhost:8800$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEjoin~ Q[e!uxKymrHZeXRYCZwekU:localhost:8800@anon-20191002_181700-20:localhost:8800$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1msjoin~ Q[e!sPWVGnipjiiWQpywNO:localhost:8800@anon-20191002_181700-20:localhost:8800$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNcjoin~ Q[e!GixhPUMvtKSWoKRgvw:localhost:8800@anon-20191002_181700-16:localhost:8800$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41LeojoinrQ[M!zhCsYcaweVFJLLNwBz:localhost:8800@anon-20191002_181700-16:localhost:8800$15700403151blJmZ:localhost:8800join~Q[e!loalEsWaTYwrVUNJLr:localhost:8800@anon-20191002_181700-16:localhost:8800$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Yjoin~Q[e!LaLcEGFLpjdlYlYKGC:localhost:8800@anon-20191002_181700-16:localhost:8800$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUjoin~Q[e!odAvowLhHJcmkKlxFk:localhost:8800@anon-20191002_181700-16:localhost:8800$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQjoinQ[e!plcvCHNbjCkNMMxnTk:localhost:8800@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUinvite~Q[e!plcvCHNbjCkNMMxnTk:localhost:8800@anon-20191002_181700-16:localhost:8800$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8join~Q[e!QZhNrNpwObZGJZpdAG:localhost:8800@anon-20191002_181700-16:localhost:8800$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wjoin~Q[e!zNCItZNbpkZKuufRhC:localhost:8800@anon-20191002_181700-16:localhost:8800$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAjoin DtM%?s; [ " y @  \ # z A  ] $y_B &{B ^%zAb)~Ec98]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8]!@anon-20191002_181700-140:localhost:8800OLUEHITWUA8]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS8]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS8]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA8]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA8]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBEc%7!@admin:localhost:8800GMJMIKRCOD<8]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT8]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD!/!@8:localhost:8800SPYUTHBEKDBq!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZ8]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY8]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG8]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA8]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8[%@anon-20191002_181700-14:localhost:8800login_device*6[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOW)6[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZG'8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN6[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQ(8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS6[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFA&8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH6[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQG%8]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA8]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH7]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW7]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF~7]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF}7]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUI{7]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL|7]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMGy7]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHGz /!@0:localhost:8800DWCYKFLVQMF /!@0:localhost:8800BLOODGXNYNG';#@02login:localhost:8800my_super_id&;!@02login:localhost:8800TUIMTGQXHF&;!@02login:localhost:8800OFRAEFMMXR&;!@02login:localhost:8800FHCBMHROPD=k! @01register-user-20191002_181700:localhost:8800KRNGWLGVFN >AWs: X  t ;  Y u <  X !v=Y zA]$y@ ^%zA_&8]!@anon-28]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP8]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH8]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN8]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF6[!@anon-20191002_181700-20:localhost:8800MIHVANNPDD08]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO8]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDH8]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIF8]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO8]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU8]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW5Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF6[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL/8]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS8]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ8]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ8]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD8]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA8]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ8]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM8]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT8]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ6[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK.8]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ8]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB8]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF8]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN8]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH6[!@anon-20191002_181700-17:localhost:8800VRXIORHZEX-8]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY8]!@anon-20191002_181700-170:localhost:8800SULWIONTNX6[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTF,8]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW8]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ8]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE8]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ8]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL8]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF8]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN8]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD6[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOG+8]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN 2 K}dW[!a_@anon-20191002_181700-57:localhost:8800NFIQURSFUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCgdU[!a[@anon-20191002_181700-54:localhost:8800WKSZTPHXTGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCgdT[!aY@anon-20191002_181700-53:localhost:8800HCQPROAEXNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3CgdS[!aX@anon-20191002_181700-52:localhost:8800KYXATQJIHBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCgdR[!aW@anon-20191002_181700-51:localhost:8800IJUKQYPGHPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJlVQTmN6N2ZrZ0AsZncudAowMDJmc2lnbmF0dXJlIJUSaBLHjckaJ7R3Ppmg1akirPJNWYeuvIErOqbAzrMgCgdQ[!aV@anon-20191002_181700-51:localhost:8800EXJVEMMDWDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCgdP[!aU@anon-20191002_181700-50:localhost:8800BNBHLRCHUXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCgHMC!AP@cas_user=21:localhost:8800BIHKGABDWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZWNpZCB1c2VyX2lkID0gQGNhc191c2VyPTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLmRpRWFhYk9OTTZ2OEh1SgowMDJmc2lnbmF0dXJlILOLH5HPvjexcEbks8f9RkkMx8yxtyhQZPbH0mI8YfWkCgdL[!aO@anon-20191002_181700-47:localhost:8800JCZSZIHLLUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2tfQndpViZYSElTfjpuawowMDJmc2lnbmF0dXJlIBTKbevNx3YzpjwgxT3xjUKRI8si9AGloAUDwSu4sxllCgdO[!aR@anon-20191002_181700-48:localhost:8800AJQOQZXPLWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLlp-aWV0aGpsb2VIdDhYaAowMDJmc2lnbmF0dXJlILz-X06NA3MCjvb6uGmoobDiJbicbG4nV2yzvbZkP-rwCgdV[!a]@anon-20191002_181700-55:localhost:8800GJICSOZSSMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCg #X( <  h |  .BVj~0DXth [@anon-20191002_181700-89:localhost:8800$2b$04$XHTTxfc7XfxTdgfLID0x.uNLdkr6HYzrsyM16IUGAmlwpA1ZQKG0G]tg [@anon-20191002_181700-86:localhost:8800$2b$04$xT.Y5nqfpO06eyBRXJbpTu4WFq.XA2hZ6vdDYB7TUepC4kZPLAhP2]tf [@anon-20191002_181700-87:localhost:8800$2b$04$1FJ2pV.yhVuSlr2WYN7hHeGXgszf8nu4nD52hOoux3zHdgmxV/6PS]te [@anon-20191002_181700-84:localhost:8800$2b$04$4HXEzkmiV592wvfzCn4BbO6wF7jRTVRvV5PfHYiIB/TYPePdwv4uC]td [@anon-20191002_181700-85:localhost:8800$2b$04$AVOmx2OplSpJgSQIQdjGtuOr0a9ptCuHSvFuTdMPyD2LzmYz9S3li]tc [@anon-20191002_181700-83:localhost:8800$2b$04$pxV7z34n/xQomFr.VyZiX.KJ3mLpWO1ePTrQxe5F2QtvuJXAu8DQ2]tb [@anon-20191002_181700-82:localhost:8800$2b$04$TP9e4RMBy7pRwukyx23RQOLU2s.aNfNQ9w.V1eBmixBqF1/bDqE9.]ta [@anon-20191002_181700-81:localhost:8800$2b$04$QPBXziWCFBPLgYH8Y5A3o.qTzIMIZwfKLCa.lWP0v/NYfUdfq6Cf.]t` [@anon-20191002_181700-80:localhost:8800$2b$04$bhu7vyY2DiS1p8ebebYsiei2cNML.Ovv5VEyUn8Rq1UxFipAOb5Wy]t_ [@anon-20191002_181700-79:localhost:8800$2b$04$QNR1dxI5.ABjYscVgJ/QQu/Qv/5QVJDiQohVm6F87ENooWKfuQsbq]t^ [@anon-20191002_181700-77:localhost:8800$2b$04$e1.eu7o17x0FIM6csxFrsufSucJsWnZyoC3BVy4Z171Xe0PXhzyCe]t] [@anon-20191002_181700-75:localhost:8800$2b$04$GnPae2RthgBPGec/OCGX9ONCBRrKD3BwdlHSos623lAxXld.EJDQq]t\ [@anon-20191002_181700-74:localhost:8800$2b$04$s50REOgJPHFkuyrrJZrLKODZvdwBZeeYkierCaixonH/dH8S.TQYO]t[ [@anon-20191002_181700-73:localhost:8800$2b$04$RVZpw.nEkN5vkeB1gK2D3upY5Hxojhi4G1phySGMdK8JgySYSEi/.]tZ [@anon-20191002_181700-71:localhost:8800$2b$04$JF07z/PbVFaezxUFH2vRsOzL7Q4ny.aePc8Bkxl9mNlXzpTYXXVvG]ytY [@anon-20191002_181700-70:localhost:8800$2b$04$ljmWByI/cFUPo7cWZvTNkeCidnG83tTfJkRaHWotlg9tlZkS7gHyC]ytX [@anon-20191002_181700-68:localhost:8800$2b$04$hr43mYpA0LiXmkFRE4YtHeN0PFadmWaxacRH37BPNyeZYQuZ1KW4e]stW [@anon-20191002_181700-67:localhost:8800$2b$04$eUuRJ4C7i0/9iQYq3lWAo.kGjZETmfIo.Hgi/pebvYQyuHazmOXlu]jtV [@anon-20191002_181700-64:localhost:8800$2b$04$5//IboQUv/ANaZ.B/CDCLu.BvRxrPG7aZeRdLg/PLqateuz0iWE3m]dtU [@anon-20191002_181700-65:localhost:8800$2b$04$zG178QrOoiPmI3b5zWkYn.xgmfEvbXWgIjxFgvAFafWvmC4ns5Eia]dtT [@anon-20191002_181700-63:localhost:8800$2b$04$ER81rHoxEbI8zvqV66Z5.OGXkvpOtD35RORFaghj8MoWQ7wtQH./W]`tS [@anon-20191002_181700-62:localhost:8800$2b$04$dvlxiDWzwMbxDjSEvHq8tOLHp0vfxOhG2NtwdWSLf63ftTfFKDfpu]ZtR [@anon-20191002_181700-61:localhost:8800$2b$04$X0nDUQ4coSITzL6fvkVMruqMuJYy3slx.tNxbfXGTUn89Q9j/xkSC]UtQ [@anon-20191002_181700-60:localhost:8800$2b$04$BwXhnjxi8sqyQ1w8UnYCk.JrkdYsPsoJ5BOhfJsAaoRTJouukyCIu]TtP [@anon-20191002_181700-59:localhost:8800$2b$04$Bow16lqaNKFFw3eCHpfEzuN1/govkNDqEPK1IN.yck0ZtfK/VV3x.]T7O [ @anon-20191002_181700-58:localhost:8800]StN [@anon-20191002_181700-57:localhost:8800$2b$04$vNSHMxG98OeY1e8t1kXKIO4felFasn1aJMBaX7mQXGDXrM2qOj3j6]R7M [ @anon-20191002_181700-56:localhost:8800]QtL [@anon-20191002_181700-55:localhost:8800$2b$04$EZw7tbUO1wxtTguOwR8zkej.0Tv.5/0PustsfQbwlYuSDQc3LHVaK]QtK [@anon-20191002_181700-54:localhost:8800$2b$04$OwxdiRTiEUxQMlZ.lCZQOOLVUScxSxK/.220j2mf6akFC.NS1kibu]OtJ [@anon-20191002_181700-53:localhost:8800$2b$04$DoDNqorN9ZC11lCSKfK9mOQ3AI1NytKRNBDoAxETGlZJQ3DlkpaB.]NtI [@anon-20191002_181700-52:localhost:8800$2b$04$Kqhj8en6./0p6wALgOnSSuNCmlRUtTLobMY3i/RKoYnykYIBJX9WK]NtH [@anon-20191002_181700-51:localhost:8800$2b$04$N4MxvLZHIJLbr8m1SP6wrO0Xe8KeKhVXSSPMPTZ566cx8AqLDpodi]MtG [@anon-20191002_181700-50:localhost:8800$2b$04$PpWeMVJXQv8dHvYHqsiB9.fxkEd.JygScKmYXQyrwtbgrzYHcx6.G]LtF [@anon-20191002_181700-49:localhost:8800$2b$04$/BRpwl4LxtqZ..I/z9Z.Au4bYNeCuqmTfrMNQUbnXVQfEmTIJFee6]K <  xG m </aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCgX/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCgW/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCgV/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gY2Q5X1ZSS0ZuQ3ZoK0lQdgowMDJmc2lnbmF0dXJlICgJ_tDsFzgoqjbSMgd3egoxWDT2M0zA54qPLeNHN5FaCgI/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3CgT/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCgS/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJlVQTmN6N2ZrZ0AsZncudAowMDJmc2lnbmF0dXJlIJUSaBLHjckaJ7R3Ppmg1akirPJNWYeuvIErOqbAzrMgCgR/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCgQ/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCgP1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0Cg]/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCg^/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCgU  4 h 9mfd]c@anon-20191002_181700-373:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-Bwo127.0.0.1qd]c@anon-20191002_181700-372:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgo127.0.0.1pd]c@anon-20191002_181700-371:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQo127.0.0.1od]c@anon-20191002_181700-370:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9go127.0.0.1na[a@anon-20191002_181700-36:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUI4b1dtNEQjdGNWWUw6NwowMDJmc2lnbmF0dXJlIIvBel_CJ6eVFPAFDPyG9toGuuzM11GsYXfeUgw-5br0Cg127.0.0.1d]c@anon-20191002_181700-369:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0wo127.0.0.1md]c@anon-20191002_181700-368:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-Qo127.0.0.1ld]c@anon-20191002_181700-367:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1Ewo127.0.0.1kd]c@anon-20191002_181700-366:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5Ao127.0.0.1id]c@anon-20191002_181700-365:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_go127.0.0.1j Vo M + xV2[a!E@anon-20191002_181700-59:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCgDRVLOZZUPQ127.0.0.1Perl + Net::Async::HTTP/0.44mZ1[a!E@anon-20191002_181700-58:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaVdGemVQMTNIbFouWCNQMwowMDJmc2lnbmF0dXJlIMS3QCp7F93TS2LA-booUWIaYlu3l9zJ8Gw8Sf7WHA_nCgXSIUOLPWQX127.0.0.1Perl + Net::Async::HTTP/0.44mVу0[a!E@anon-20191002_181700-57:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCgNFIQURSFUO127.0.0.1Perl + Net::Async::HTTP/0.44mUB/[a!E@anon-20191002_181700-56:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO0FsZFQwLSxGbjAzXixUXgowMDJmc2lnbmF0dXJlIFiy7c5jxVNqQKAd6fTEIOinfNma03Ww4HTuuirYbJ7_CgUWHMGOHJLQ127.0.0.1Perl + Net::Async::HTTP/0.44mQo.[a!E@anon-20191002_181700-55:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCgGJICSOZSSM127.0.0.1Perl + Net::Async::HTTP/0.44mN-[a!E@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCgWKSZTPHXTG127.0.0.1Perl + Net::Async::HTTP/0.44mK؃,[a!E@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaUQ6XkF1QW4wajMyUC1JLgowMDJmc2lnbmF0dXJlIE-_kuf73Jp-vYVvHnm5pGZPUIVOn9-qpj3OQ8fgERaZCgMQMQOGGONN127.0.0.1Perl + Net::Async::HTTP/0.44mK+[a!E@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3CgHCQPROAEXN127.0.0.1Perl + Net::Async::HTTP/0.44mG*[a!E@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGNyI2RHZVdfPXgxMmRPSAowMDJmc2lnbmF0dXJlICdrO5YfR0rOG-1uCgLG91mgocOY6hRHDoyFxBBlT9VDCgMVQZRCIGFU127.0.0.1Perl + Net::Async::HTTP/0.44mF)[a!E@anon-20191002_181700-52:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCgKYXATQJIHB127.0.0.1Perl + Net::Async::HTTP/0.44mBj Qc=Y2 p J  h J + w J  i ; U 'oA[-uGa3{Me7 ]/wI-[V@anon-20191002_181700-48:localhost:8800R-[U@anon-20191002_181700-48:localhost:8800Q!CS@cas_user=21:localhost:8800O-[R@anon-20191002_181700-47:localhost:8800N-[Q@anon-20191002_181700-45:localhost:8800M-[P@anon-20191002_181700-44:localhost:8800L-[O@anon-20191002_181700-43:localhost:8800K-[N@anon-20191002_181700-43:localhost:8800J/M@0:localhost:8800I/L@0:localhost:8800H-[K@anon-20191002_181700-41:localhost:8800G-[J@anon-20191002_181700-40:localhost:8800F-[I@anon-20191002_181700-39:localhost:8800E-[H@anon-20191002_181700-38:localhost:8800D-[G@anon-20191002_181700-37:localhost:8800C-[F@anon-20191002_181700-36:localhost:8800B-[E@anon-20191002_181700-35:localhost:8800A-[D@anon-20191002_181700-34:localhost:8800@-[C@anon-20191002_181700-33:localhost:8800?-[B@anon-20191002_181700-32:localhost:8800>-[A@anon-20191002_181700-31:localhost:8800=-[@@anon-20191002_181700-30:localhost:8800<-[?@anon-20191002_181700-29:localhost:8800;-[>@anon-20191002_181700-28:localhost:8800:-[=@anon-20191002_181700-27:localhost:88009-[<@anon-20191002_181700-26:localhost:88008-[;@anon-20191002_181700-25:localhost:88007-[:@anon-20191002_181700-24:localhost:88006-[9@anon-20191002_181700-23:localhost:88005-[8@anon-20191002_181700-22:localhost:88004-[7@anon-20191002_181700-21:localhost:88003-[6@anon-20191002_181700-20:localhost:88002-[5@anon-20191002_181700-19:localhost:88001-[4@anon-20191002_181700-18:localhost:88000-[3@anon-20191002_181700-17:localhost:8800/-[2@anon-20191002_181700-16:localhost:8800.-[1@anon-20191002_181700-15:localhost:8800--[0@anon-20191002_181700-14:localhost:8800,-[/@anon-20191002_181700-14:localhost:8800+-[.@anon-20191002_181700-12:localhost:8800*-[,@anon-20191002_181700-12:localhost:8800)-[+@anon-20191002_181700-13:localhost:8800(-[*@anon-20191002_181700-11:localhost:8800'-[(@anon-20191002_181700-11:localhost:8800&-['@anon-20191002_181700-10:localhost:8800%,Y&@anon-20191002_181700-9:localhost:8800$,Y$@anon-20191002_181700-9:localhost:8800#,Y#@anon-20191002_181700-8:localhost:8800",Y"@anon-20191002_181700-8:localhost:8800!,Y!@anon-20191002_181700-8:localhost:8800 ,Y @anon-20191002_181700-7:localhost:8800,Y@anon-20191002_181700-6:localhost:8800,Y@anon-20191002_181700-6:localhost:8800,Y@anon-20191002_181700-5:localhost:8800,Y@anon-20191002_181700-4:localhost:8800=@spyglass:localhost:8800;@02login:localhost:8800;@02login:localhost:8800;@02login:localhost:8800;@02login:localhost:8800-[@anon-20191002_181700-3a:localhost:8800,Y@anon-20191002_181700-2:localhost:8800,Y@anon-20191002_181700-1:localhost:8800%K@chrtestuser-39-:localhost:8800%K@chrtestuser-10-:localhost:8800&M@chrtestuser-233-:localhost:8800&M@chrtestuser-163-:localhost:8800&M@chrtestuser-125-:localhost:8800&M@chrtestuser-124-:localhost:8800 &M @chrtestuser-123-:localhost:8800 %K @chrtestuser-93-:localhost:8800 %K @chrtestuser-91-:localhost:8800 %K @chrtestuser-64-:localhost:8800 %K @chrtestuser-92-:localhost:8800%K@chrtestuser-63-:localhost:8800%K@chrtestuser-58-:localhost:8800%K@chrtestuser-34-:localhost:8800%K@chrtestuser-33-:localhost:8800 A@mycooluser:localhost:8800 A@user-upper:localhost:88004k @01register-user-20191002_181700:localhost:8800 I? ?Y+ d6~P"j<V(l=R#e4p? A  } L  W & b 1m m < x0]@anon-20191002_181700-106:localhost:88000]@anon-20191002_181700-104:localhost:88000]@anon-20191002_181700-102:localhost:88000]@anon-20191002_181700-103:localhost:88000]@anon-20191002_181700-100:localhost:88000]@anon-20191002_181700-101:localhost:8800/[@anon-20191002_181700-99:localhost:8800/[@anon-20191002_181700-96:localhost:8800.[@anon-20191002_181700-97:localhost:8800.[@anon-20191002_181700-95:localhost:8800~.[@anon-20191002_181700-93:localhost:8800}.[@anon-20191002_181700-90:localhost:8800|.[@anon-20191002_181700-91:localhost:8800{.[@anon-20191002_181700-88:localhost:8800z.[@anon-20191002_181700-89:localhost:8800y.[@anon-20191002_181700-86:localhost:8800x.[@anon-20191002_181700-87:localhost:8800w.[@anon-20191002_181700-84:localhost:8800v.[@anon-20191002_181700-85:localhost:8800u.[@anon-20191002_181700-83:localhost:8800t.[@anon-20191002_181700-82:localhost:8800s-[@anon-20191002_181700-81:localhost:8800r-[~@anon-20191002_181700-80:localhost:8800q-[}@anon-20191002_181700-79:localhost:8800p-[|@anon-20191002_181700-77:localhost:8800o-[{@anon-20191002_181700-75:localhost:8800n-[z@anon-20191002_181700-74:localhost:8800m-[y@anon-20191002_181700-73:localhost:8800l-[x@anon-20191002_181700-71:localhost:8800k-[w@anon-20191002_181700-70:localhost:8800j-[v@anon-20191002_181700-68:localhost:8800i-[u@anon-20191002_181700-67:localhost:8800h-[t@anon-20191002_181700-64:localhost:8800g-[s@anon-20191002_181700-65:localhost:8800f-[r@anon-20191002_181700-63:localhost:8800e-[q@anon-20191002_181700-62:localhost:8800d-[p@anon-20191002_181700-61:localhost:8800c-[o@anon-20191002_181700-60:localhost:8800b-[n@anon-20191002_181700-59:localhost:8800a-[m@anon-20191002_181700-58:localhost:8800`-[k@anon-20191002_181700-57:localhost:8800_-[j@anon-20191002_181700-56:localhost:8800^ r-[Y@anon-20191002_181700-49:localhost:8800T0]@anon-20191002_181700-124:localhost:88000]@anon-20191002_181700-123:localhost:88000]@anon-20191002_181700-122:localhost:88000]@anon-20191002_181700-121:localhost:88000]@anon-20191002_181700-120:localhost:88000]@anon-20191002_181700-118:localhost:88000]@anon-20191002_181700-119:localhost:88000]@anon-20191002_181700-117:localhost:88000]@anon-20191002_181700-116:localhost:88000]@anon-20191002_181700-115:localhost:88000]@anon-20191002_181700-114:localhost:88000]@anon-20191002_181700-113:localhost:88000]@anon-20191002_181700-112:localhost:88000]@anon-20191002_181700-110:localhost:88000]@anon-20191002_181700-109:localhost:88000]@anon-20191002_181700-108:localhost:88000]@anon-20191002_181700-107:localhost:8800,0]@anon-20191002_181700-127:localhost:8800-[g@anon-20191002_181700-55:localhost:8800]-[f@anon-20191002_181700-54:localhost:8800\-[d@anon-20191002_181700-54:localhost:8800[-[c@anon-20191002_181700-53:localhost:8800Z-[a@anon-20191002_181700-53:localhost:8800Y-[_@anon-20191002_181700-52:localhost:8800X-[^@anon-20191002_181700-51:localhost:8800W-[\@anon-20191002_181700-51:localhost:8800V-[Z@anon-20191002_181700-50:localhost:8800U0]@anon-20191002_181700-128:localhost:88000]@anon-20191002_181700-125:localhost:88000]@anon-20191002_181700-126:localhost:8800  2 d/adb[!ak@anon-20191002_181700-71:localhost:8800TCTQJEZQFIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCgda[!aj@anon-20191002_181700-70:localhost:8800PGQYANGMEIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09Cgd`[!ai@anon-20191002_181700-68:localhost:8800GNKAPUDEUDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCgd_[!ah@anon-20191002_181700-67:localhost:8800ONYGLHFWXMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8Cgd^[!ag@anon-20191002_181700-64:localhost:8800NPZFHRJOQIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCgd][!af@anon-20191002_181700-65:localhost:8800JPWZALXKWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0Cgd\[!ae@anon-20191002_181700-63:localhost:8800VLTVDGDALOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCgd[[!ad@anon-20191002_181700-62:localhost:8800PJTOWKTNYXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCgdZ[!ac@anon-20191002_181700-61:localhost:8800SXUBBXHSVUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCgdY[!ab@anon-20191002_181700-60:localhost:8800JSZKVAFOZGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCgdX[!aa@anon-20191002_181700-59:localhost:8800DRVLOZZUPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCg  4 h 9mfd]c@anon-20191002_181700-514:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9go127.0.0.1d]c@anon-20191002_181700-512:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAo127.0.0.1d]c@anon-20191002_181700-510:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-Ao127.0.0.1a[a@anon-20191002_181700-50:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTFpJQ3piXkxXTVYyUnEtTAowMDJmc2lnbmF0dXJlINtEp87l_axxqBeYsFORt-Crawh9XLMC_0O4lc7QuD4vCg127.0.0.1'd]c@anon-20191002_181700-509:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwo127.0.0.1d]c@anon-20191002_181700-508:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwo127.0.0.1d]c@anon-20191002_181700-507:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQo127.0.0.1߂d]c@anon-20191002_181700-506:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQo127.0.0.1ނd]c@anon-20191002_181700-505:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQo127.0.0.1݂d]c@anon-20191002_181700-503:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwo127.0.0.1 Vo M + xV<[a!E@anon-20191002_181700-71:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCgTCTQJEZQFI127.0.0.1Perl + Net::Async::HTTP/0.44m;[a!E@anon-20191002_181700-70:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09CgPGQYANGMEI127.0.0.1Perl + Net::Async::HTTP/0.44m.:[a!E@anon-20191002_181700-68:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCgGNKAPUDEUD127.0.0.1Perl + Net::Async::HTTP/0.44mA9[a!E@anon-20191002_181700-67:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8CgONYGLHFWXM127.0.0.1Perl + Net::Async::HTTP/0.44mg8[a!E@anon-20191002_181700-64:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCgNPZFHRJOQI127.0.0.1Perl + Net::Async::HTTP/0.44m7[a!E@anon-20191002_181700-65:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0CgJPWZALXKWP127.0.0.1Perl + Net::Async::HTTP/0.44m&6[a!E@anon-20191002_181700-63:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCgVLTVDGDALO127.0.0.1Perl + Net::Async::HTTP/0.44mK5[a!E@anon-20191002_181700-62:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCgPJTOWKTNYX127.0.0.1Perl + Net::Async::HTTP/0.44ms4[a!E@anon-20191002_181700-61:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCgSXUBBXHSVU127.0.0.1Perl + Net::Async::HTTP/0.44m^3[a!E@anon-20191002_181700-60:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCgJSZKVAFOZG127.0.0.1Perl + Net::Async::HTTP/0.44m\ TvHb4 | N h : T & n @  Z ,tF`2zLf8 P!e6zK`1.Q$1570042629120wtVFY:localhost:8800sha256 a.Q$1570042628119fxxBA:localhost:8800sha256 `.Q$1570042627118OLFSV:localhost:8800sha256 _.Q$1570042626117sfUAQ:localhost:8800sha256 ^.Q$1570042626116pKAbp:localhost:8800sha256 ].Q$1570042624115nZtIB:localhost:8800sha256 \.Q$1570042623114pBHTz:localhost:8800sha256 [.Q$1570042622113mtzjt:localhost:8800sha256 Z.Q$1570042621112AUAFX:localhost:8800sha256 Y.Q$1570042620111taWCG:localhost:8800sha256 X.Q$1570042619110gZfPB:localhost:8800sha256 W.Q$1570042619109qhpUv:localhost:8800sha256 V.Q$1570042618108WWxoQ:localhost:8800sha256 U.Q$1570042617107cANtu:localhost:8800sha256 T.Q$1570042616106fkZGL:localhost:8800sha256 S.Q$1570042615105OKfnm:localhost:8800sha256 R.Q$1570042614104FELge:localhost:8800sha256 Q.Q$1570042613103AHxGt:localhost:8800sha256 P.Q$1570042612102sQZCG:localhost:8800sha256 O.Q$1570042611101IffRu:localhost:8800sha256 N.Q$1570042611100ueDzK:localhost:8800sha256 M-O$157004261099UmKia:localhost:8800sha256 L-O$157004188598DcHDt:localhost:8800sha256>-O$157004188397MRiZP:localhost:8800sha256;-O$157004188296OVWxu:localhost:8800sha256:-O$157004188195thBOS:localhost:8800sha2569-O$157004188194vdqBG:localhost:8800sha2568-O$157004188093UtRbN:localhost:8800sha2567-O$157004187992XwpoQ:localhost:8800sha2566-O$157004187190ZLRgN:localhost:8800sha256--O$157004187089FLOwV:localhost:8800sha256,-O$157004186988RkcKb:localhost:8800sha256+-O$157004186887sKbQU:localhost:8800sha256*-O$157004186786RVgKA:localhost:8800sha256)-O$157004186785fjAIs:localhost:8800sha256(-O$157004185983tEalY:localhost:8800sha256 -O$157004185982diSTq:localhost:8800sha256-O$157004185881ahRFW:localhost:8800sha256-O$157004185780kUwpq:localhost:8800sha256-O$157004185679NNCIw:localhost:8800sha256-O$157004185678lyJsT:localhost:8800sha256-O$157004184976eGgUf:localhost:8800sha256-O$157004184875Wzayo:localhost:8800sha256-O$157004184774CHMNl:localhost:8800sha256-O$157004184773rCaRK:localhost:8800sha256-O$157004184672SfwvS:localhost:8800sha256-O$157004184571IVgQM:localhost:8800sha256-O$157004183969fQFzs:localhost:8800sha256-O$157004183868QRvOi:localhost:8800sha256-O$157004183467WkNdH:localhost:8800sha256-O$157004183366iKFsz:localhost:8800sha256-O$157004183365ZxPWz:localhost:8800sha256-O$157004183264ktTbL:localhost:8800sha256-O$157004183063NdEPw:localhost:8800sha256-O$157004183062AwGkL:localhost:8800sha256-O$157004182060gAdxi:localhost:8800sha256-O$157004181959Afmmv:localhost:8800sha256-O$157004181958ixShg:localhost:8800sha256-O$157004181857fcmAB:localhost:8800sha256-O$157004181756ejZNp:localhost:8800sha256-O$157004181655JUAvO:localhost:8800sha256-O$157004180853KmrHT:localhost:8800sha256-O$157004180752YHMqi:localhost:8800sha256-O$157004180751hMlwg:localhost:8800sha256-O$157004180650ruqIl:localhost:8800sha256-O$157004180549mJBJB:localhost:8800sha256-O$157004180448zlZXD:localhost:8800sha256-O$157004180347MMmFf:localhost:8800sha256-O$157004180346TRucp:localhost:8800sha256-O$157004180045QtsUE:localhost:8800sha256-O$157004179944JKWNJ:localhost:8800sha256-O$157004179843yDrjz:localhost:8800sha256-O$157004179742OaMxS:localhost:8800sha256-O$157004179541PbBIm:localhost:8800sha256-O$157004179340NSiie:localhost:8800sha256-O$157004179239LLqht:localhost:8800sha256-O$157004179138NbBYh:localhost:8800sha256-O$157004179037FGMFG:localhost:8800sha256-O$157004178936zuJSX:localhost:8800sha256-O$157004178835mLAyG:localhost:8800sha256-O$157004178734ZpFdg:localhost:8800sha256-O$157004177433OonrH:localhost:8800sha256-O$157004177232wsJyW:localhost:8800sha256-O$157004177131trwoi:localhost:8800sha256  feQ_[$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 149}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-62:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040411230, "hashes": {"sha256": "WPHzFLuI65nDDufJT+rdigG/npnTjht9+8Db8Ng0phk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q0S+l+YE5gNkDYF9exL0aJsXij7kH0auhUVWuWeXwIbvO0uCKRhJEfJWJH3g51EKrfM8lRJmV4Q+nvafdEl4Cg"}}, "unsigned": {"age_ts": 1570040411230}}eQ]$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 148}{"auth_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0", "$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg"], "type": "m.room.topic", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"topic": "Testing topic for the new room"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040410017, "hashes": {"sha256": "xS6hmmPr8TaVDZ9vzcspwiuIc8WylU/70T8gDMsEdyQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3M3n520QUyeowV/iEZVoI1oS4744C6hDPcVDWCM1Op/9tHqmJZTtBt77SEU6U12VATgA441xC3R/THOyBGk5BQ"}}, "unsigned": {"age_ts": 1570040410017}}eQ]$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 147}{"auth_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0", "$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE"], "type": "m.room.history_visibility", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040408608, "hashes": {"sha256": "vy5OJmGxfpAfpANOPfd34qS127zYzCoOW+t9OtSCqro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qh4CcxAiLKjTqKN2wiFUrItHV3kBgvYWJ0irD3Dk5QoxVGbAIyhGIGlUszppRN170TRRS5UlkA51Mg9TP01JCg"}}, "unsigned": {"age_ts": 1570040408608}}qeQ]s$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800{"token_id": 99, "stream_ordering": 146}{"auth_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0", "$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0", "$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q"], "prev_events": ["$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0"], "type": "m.room.join_rules", "room_id": "!kkgEEVUJynguTqAoWD:localhost:8800", "sender": "@anon-20191002_181700-61:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040407851, "hashes": {"sha256": "y35FtYHbROph+Vg63Cidod0dR5YaFM5jXYxH4h/H1dE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z1WxWOIjVrpyWKbzvkuxLhopXLssAo2zeQFBymK/LT6LPHepYaDP7pGdr65OTkZE5sJG0IUO6fWST/Foqss3BQ"}}, "unsigned": {"age_ts": 1570040407851}} \Y g  t  }1:GT\()e9Q [$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcm.room.canonical_alias!cosGKKhHvKaVukBCic:localhost:8800mm€@anon-20191002_181700-67:localhost:8800%(e3Q [$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8m.room.power_levels!cosGKKhHvKaVukBCic:localhost:8800mmd@anon-20191002_181700-67:localhost:8800'e'Q [$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMm.room.member!cosGKKhHvKaVukBCic:localhost:8800m0m@anon-20191002_181700-67:localhost:8800& e'Q  [$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8m.room.create!cosGKKhHvKaVukBCic:localhost:8800mm@anon-20191002_181700-67:localhost:8800%e'Q [$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgm.room.member!rZWweGEChkxxtzyfDB:localhost:8800mmI@anon-20191002_181700-64:localhost:8800+$e?Q [$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIm.room.history_visibility!rZWweGEChkxxtzyfDB:localhost:8800mmd@anon-20191002_181700-65:localhost:8800##e/Q [$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIm.room.join_rules!rZWweGEChkxxtzyfDB:localhost:8800mm@anon-20191002_181700-65:localhost:8800%"e3Q [$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPAm.room.power_levels!rZWweGEChkxxtzyfDB:localhost:8800m?m'@anon-20191002_181700-65:localhost:8800!e'Q [$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIm.room.member!rZWweGEChkxxtzyfDB:localhost:8800m>m@anon-20191002_181700-65:localhost:8800  e'Q  [$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0m.room.create!rZWweGEChkxxtzyfDB:localhost:8800mmQ@anon-20191002_181700-65:localhost:8800+e?Q [$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsm.room.history_visibility!uJtKGXTNdEnCPNOGDx:localhost:8800mm@anon-20191002_181700-63:localhost:8800#e/Q [$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMm.room.join_rules!uJtKGXTNdEnCPNOGDx:localhost:8800mmj@anon-20191002_181700-63:localhost:8800%e3Q [$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLom.room.power_levels!uJtKGXTNdEnCPNOGDx:localhost:8800m;mx@anon-20191002_181700-63:localhost:8800e'Q [$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAm.room.member!uJtKGXTNdEnCPNOGDx:localhost:8800mm@anon-20191002_181700-63:localhost:8800 e'Q  [$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Qm.room.create!uJtKGXTNdEnCPNOGDx:localhost:8800mm@anon-20191002_181700-63:localhost:8800#e/Q [$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067ka.test.state.type!vJQYmOxOBLwFKzYkNj:localhost:8800mm@anon-20191002_181700-62:localhost:8800+e?Q [$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8m.room.history_visibility!vJQYmOxOBLwFKzYkNj:localhost:8800m}m @anon-20191002_181700-62:localhost:8800#e/Q [$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Em.room.join_rules!vJQYmOxOBLwFKzYkNj:localhost:8800m{Gm|@anon-20191002_181700-62:localhost:8800%e3Q [$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0m.room.power_levels!vJQYmOxOBLwFKzYkNj:localhost:8800mxmy@anon-20191002_181700-62:localhost:8800e'Q [$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEm.room.member!vJQYmOxOBLwFKzYkNj:localhost:8800mvmw?@anon-20191002_181700-62:localhost:8800 e'Q  [$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4m.room.create!vJQYmOxOBLwFKzYkNj:localhost:8800mt^mt@anon-20191002_181700-62:localhost:8800e%Q [$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwm.room.topic!kkgEEVUJynguTqAoWD:localhost:8800momo@anon-20191002_181700-61:localhost:8800+e?Q [$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Egm.room.history_visibility!kkgEEVUJynguTqAoWD:localhost:8800mj ml6@anon-20191002_181700-61:localhost:8800#e/Q [$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEm.room.join_rules!kkgEEVUJynguTqAoWD:localhost:8800mg+mh6@anon-20191002_181700-61:localhost:8800 Rd@hB b 0 q $ \ ( X $ T PL|HxDl8L|HxD2R;;anon-20191002_181700-61anon-20191002_181700-612Q;;anon-20191002_181700-60anon-20191002_181700-602P;;anon-20191002_181700-59anon-20191002_181700-592O;;anon-20191002_181700-58anon-20191002_181700-582N;;anon-20191002_181700-57anon-20191002_181700-572M;;anon-20191002_181700-56anon-20191002_181700-562L;;anon-20191002_181700-55anon-20191002_181700-552K;;anon-20191002_181700-54anon-20191002_181700-542J;;anon-20191002_181700-53anon-20191002_181700-532I;;anon-20191002_181700-52anon-20191002_181700-522H;;anon-20191002_181700-51anon-20191002_181700-512G;;anon-20191002_181700-50anon-20191002_181700-502F;;anon-20191002_181700-49anon-20191002_181700-492E;;anon-20191002_181700-48anon-20191002_181700-48D##cas_user=21cas_user=212C;;anon-20191002_181700-47anon-20191002_181700-472B;;anon-20191002_181700-46anon-20191002_181700-462A;;anon-20191002_181700-45anon-20191002_181700-452@;;anon-20191002_181700-44anon-20191002_181700-442?;;anon-20191002_181700-43anon-20191002_181700-43>002=;;anon-20191002_181700-41anon-20191002_181700-412<;;anon-20191002_181700-40anon-20191002_181700-402;;;anon-20191002_181700-39anon-20191002_181700-392:;;anon-20191002_181700-38anon-20191002_181700-3829;;anon-20191002_181700-37anon-20191002_181700-3728;;anon-20191002_181700-36anon-20191002_181700-3627;;anon-20191002_181700-35anon-20191002_181700-3526;;anon-20191002_181700-34anon-20191002_181700-3425;;anon-20191002_181700-33anon-20191002_181700-3324;;anon-20191002_181700-32anon-20191002_181700-3223;;anon-20191002_181700-31anon-20191002_181700-3122;;anon-20191002_181700-30anon-20191002_181700-3021;;anon-20191002_181700-29anon-20191002_181700-2920;;anon-20191002_181700-28anon-20191002_181700-282/;;anon-20191002_181700-27anon-20191002_181700-272.;;anon-20191002_181700-26anon-20191002_181700-262-;;anon-20191002_181700-25anon-20191002_181700-252,;;anon-20191002_181700-24anon-20191002_181700-242+;;anon-20191002_181700-23anon-20191002_181700-232*;;anon-20191002_181700-22anon-20191002_181700-222);;anon-20191002_181700-21anon-20191002_181700-212(;;anon-20191002_181700-20anon-20191002_181700-202';;anon-20191002_181700-19anon-20191002_181700-192&;;anon-20191002_181700-18anon-20191002_181700-182%;;anon-20191002_181700-17anon-20191002_181700-172$;;anon-20191002_181700-16anon-20191002_181700-162#;;anon-20191002_181700-15anon-20191002_181700-152";;anon-20191002_181700-14anon-20191002_181700-142!;;anon-20191002_181700-12anon-20191002_181700-122 ;;anon-20191002_181700-13anon-20191002_181700-132;;anon-20191002_181700-11anon-20191002_181700-112;;anon-20191002_181700-10anon-20191002_181700-10099anon-20191002_181700-9anon-20191002_181700-9099anon-20191002_181700-8anon-20191002_181700-8099anon-20191002_181700-7anon-20191002_181700-7099anon-20191002_181700-6anon-20191002_181700-6K99Canon-20191002_181700-5anon-20191002_181700-5http://somewhere/my-pic.jpg-93anon-20191002_181700-4Testing Displaynamespyglassspyglass02login02login2;;anon-20191002_181700-3aanon-20191002_181700-3a099anon-20191002_181700-2anon-20191002_181700-2099anon-20191002_181700-1anon-20191002_181700-1"++chrtestuser-39-chrtestuser-39-"++chrtestuser-10-chrtestuser-10-$--chrtestuser-233-chrtestuser-233-$--chrtestuser-163-chrtestuser-163-$--chrtestuser-125-chrtestuser-125-$ --chrtestuser-124-chrtestuser-124-$ --chrtestuser-123-chrtestuser-123-" ++chrtestuser-93-chrtestuser-93-" ++chrtestuser-91-chrtestuser-91-" ++chrtestuser-64-chrtestuser-64-"++chrtestuser-92-chrtestuser-92-"++chrtestuser-63-chrtestuser-63-"++chrtestuser-58-chrtestuser-58-"++chrtestuser-34-chrtestuser-34-"++chrtestuser-33-chrtestuser-33-!!mycoolusermycooluser!!user-upperuser-upperBKK01register-user-20191002_18170001register-user-20191002_181700 I0d\( X $ T P  L  x B j4\&Lp9]&Jn7[$4==anon-20191002_181700-146anon-20191002_181700-1464==anon-20191002_181700-143anon-20191002_181700-1434==anon-20191002_181700-144anon-20191002_181700-1444==anon-20191002_181700-142anon-20191002_181700-1424==anon-20191002_181700-141anon-20191002_181700-1414==anon-20191002_181700-140anon-20191002_181700-1404==anon-20191002_181700-138anon-20191002_181700-1384==anon-20191002_181700-136anon-20191002_181700-1364==anon-20191002_181700-137anon-20191002_181700-1374==anon-20191002_181700-135anon-20191002_181700-1354==anon-20191002_181700-134anon-20191002_181700-1344==anon-20191002_181700-133anon-20191002_181700-1334==anon-20191002_181700-131anon-20191002_181700-1314==anon-20191002_181700-132anon-20191002_181700-1324 ==anon-20191002_181700-129anon-20191002_181700-1294 ==anon-20191002_181700-130anon-20191002_181700-1304 ==anon-20191002_181700-127anon-20191002_181700-1274 ==anon-20191002_181700-128anon-20191002_181700-1284 ==anon-20191002_181700-125anon-20191002_181700-1254==anon-20191002_181700-126anon-20191002_181700-1264==anon-20191002_181700-124anon-20191002_181700-1244==anon-20191002_181700-123anon-20191002_181700-1234==anon-20191002_181700-122anon-20191002_181700-1224==anon-20191002_181700-121anon-20191002_181700-1214==anon-20191002_181700-120anon-20191002_181700-1204==anon-20191002_181700-118anon-20191002_181700-1184==anon-20191002_181700-119anon-20191002_181700-1194==anon-20191002_181700-117anon-20191002_181700-1174==anon-20191002_181700-116anon-20191002_181700-1164~==anon-20191002_181700-115anon-20191002_181700-1154}==anon-20191002_181700-114anon-20191002_181700-1144|==anon-20191002_181700-113anon-20191002_181700-1134{==anon-20191002_181700-112anon-20191002_181700-1124z==anon-20191002_181700-110anon-20191002_181700-1104y==anon-20191002_181700-109anon-20191002_181700-1094x==anon-20191002_181700-108anon-20191002_181700-1084w==anon-20191002_181700-107anon-20191002_181700-1074v==anon-20191002_181700-106anon-20191002_181700-1064u==anon-20191002_181700-104anon-20191002_181700-1044t==anon-20191002_181700-102anon-20191002_181700-1024s==anon-20191002_181700-103anon-20191002_181700-1034r==anon-20191002_181700-100anon-20191002_181700-1004q==anon-20191002_181700-101anon-20191002_181700-1012p;;anon-20191002_181700-99anon-20191002_181700-992o;;anon-20191002_181700-96anon-20191002_181700-962n;;anon-20191002_181700-97anon-20191002_181700-972m;;anon-20191002_181700-95anon-20191002_181700-952l;;anon-20191002_181700-93anon-20191002_181700-932k;;anon-20191002_181700-90anon-20191002_181700-902j;;anon-20191002_181700-91anon-20191002_181700-912i;;anon-20191002_181700-88anon-20191002_181700-882h;;anon-20191002_181700-89anon-20191002_181700-892g;;anon-20191002_181700-86anon-20191002_181700-862f;;anon-20191002_181700-87anon-20191002_181700-872e;;anon-20191002_181700-84anon-20191002_181700-842d;;anon-20191002_181700-85anon-20191002_181700-852c;;anon-20191002_181700-83anon-20191002_181700-832b;;anon-20191002_181700-82anon-20191002_181700-822a;;anon-20191002_181700-81anon-20191002_181700-812`;;anon-20191002_181700-80anon-20191002_181700-802_;;anon-20191002_181700-79anon-20191002_181700-792^;;anon-20191002_181700-77anon-20191002_181700-772];;anon-20191002_181700-75anon-20191002_181700-752\;;anon-20191002_181700-74anon-20191002_181700-742[;;anon-20191002_181700-73anon-20191002_181700-732Z;;anon-20191002_181700-71anon-20191002_181700-712Y;;anon-20191002_181700-70anon-20191002_181700-704W;%'anon-20191002_181700-67My name heremxc://foo/bar4U;%'anon-20191002_181700-65My name heremxc://foo/bar2V;;anon-20191002_181700-64anon-20191002_181700-642X;;anon-20191002_181700-68anon-20191002_181700-682T;;anon-20191002_181700-63anon-20191002_181700-632S;;anon-20191002_181700-62anon-20191002_181700-62 -RM H C > 9 4/*|%w rmhc T8Qe!OaCEdDAiatpwYcagUb:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgT7Qe!OaCEdDAiatpwYcagUb:localhost:8800$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYT6Qe!OaCEdDAiatpwYcagUb:localhost:8800$lB_yrRS9T0c8GHqgQ7gg2M84vM5P9-FhCikwa8-D7CgT5Qe!OaCEdDAiatpwYcagUb:localhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFET4Qe!OaCEdDAiatpwYcagUb:localhost:8800$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8T3Qe!OaCEdDAiatpwYcagUb:localhost:8800$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDoT2Qe!OaCEdDAiatpwYcagUb:localhost:8800$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgT1Qe!OaCEdDAiatpwYcagUb:localhost:8800$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6ET0Qe!OaCEdDAiatpwYcagUb:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4T/Qe!OaCEdDAiatpwYcagUb:localhost:8800$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMT.Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$QCk_2lkr4QGMynLh-oy3fDeO-XqBnPIwjTA2b2C_tlkT-Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgT,Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUT+Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egT*Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoT)Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkT(Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkT'Qe!GGTWnzJfvPQBgQqDIE:localhost:8800$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYT&Qe!cosGKKhHvKaVukBCic:localhost:8800$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccET%Qe!cosGKKhHvKaVukBCic:localhost:8800$YcOkQ1aw2eRai8WI73BxGGABht8Nn4Si1nvwAWvlPE8T$Qe!cosGKKhHvKaVukBCic:localhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwT#Qe!cosGKKhHvKaVukBCic:localhost:8800$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQT"Qe!cosGKKhHvKaVukBCic:localhost:8800$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikT!Qe!cosGKKhHvKaVukBCic:localhost:8800$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcT Qe!cosGKKhHvKaVukBCic:localhost:8800$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8TQe!cosGKKhHvKaVukBCic:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMTQe!cosGKKhHvKaVukBCic:localhost:8800$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8TQe!rZWweGEChkxxtzyfDB:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgTQe!rZWweGEChkxxtzyfDB:localhost:8800$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjITQe!rZWweGEChkxxtzyfDB:localhost:8800$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqITQe!rZWweGEChkxxtzyfDB:localhost:8800$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPATQe!rZWweGEChkxxtzyfDB:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitITQe!rZWweGEChkxxtzyfDB:localhost:8800$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0TQe!uJtKGXTNdEnCPNOGDx:localhost:8800$5uWONOncDD6smZbW_xFpUEBCzgmhOGPCeOldG8nHGBsTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLoTQe!uJtKGXTNdEnCPNOGDx:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrATQe!uJtKGXTNdEnCPNOGDx:localhost:8800$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$46Ld1cDUVjDTUvkgLPA4mH-W1nB64zf9u6foX0tOCVITQe!vJQYmOxOBLwFKzYkNj:localhost:8800$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067kTQe!vJQYmOxOBLwFKzYkNj:localhost:8800$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8TQe!vJQYmOxOBLwFKzYkNj:localhost:8800$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6ET Qe!vJQYmOxOBLwFKzYkNj:localhost:8800$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0T Qe!vJQYmOxOBLwFKzYkNj:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE "fr* V b  & ,P\b &Mfr-Q))e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgo,Q? e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibility$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUg+Q/ e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rules$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egl*Q9 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_alias$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoi)Q3 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk (Q'[e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkc'Q' e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY &Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE %Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829$YcOkQ1aw2eRai8WI73BxGGABht8Nn4Si1nvwAWvlPE8r$Q))e!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwo#Q? e!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibility$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQg"Q/ e!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rules$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukikl!Q9 e!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_alias$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNci Q3 e!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8 Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMcQ' e!cosGKKhHvKaVukBCic:localhost:8800m.room.create$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8 Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgoQ? e!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibility$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIgQ/ e!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rules$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIiQ3 e!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIcQ' e!rZWweGEChkxxtzyfDB:localhost:8800m.room.create$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0 Q'[e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800$5uWONOncDD6smZbW_xFpUEBCzgmhOGPCeOldG8nHGBsoQ? e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibility$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPsgQ/ e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rules$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMiQ3 e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo Q'[e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAcQ' e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.create$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QgQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type$46Ld1cDUVjDTUvkgLPA4mH-W1nB64zf9u6foX0tOCVIgQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067koQ? e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8gQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rules$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Ei Q3 e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0 Q'[e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE ! !eQ_$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 153}{"auth_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0", "$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E"], "type": "m.room.history_visibility", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040413584, "hashes": {"sha256": "UO+vcP5Fu6SzR1Rstq3gkRMNJ6UgT/DjZMQ3dtjtAe4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FEkBqrmb/0g/V8JLk1nGx89KVYbl0q3Ho2nCy4tZrFXqjtptKcA/Os4erBxzPAxS2p0y3BndSQdqraPecZKjBg"}}, "unsigned": {"age_ts": 1570040413584}}reQ_s$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 152}{"auth_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0", "$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0"], "type": "m.room.join_rules", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040412999, "hashes": {"sha256": "I9CsztUyUsqIvFiLapXo/w0RzPMYDqRtiVSdfZ8MByQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WVVGdqAH9UnvW2D0DdT2GUIsuyA6ULv1MkeXYcJQina8rjyakbY8X2vZmjuVKsdPvQzjpQPVLKh+GRS0Lo7KBw"}}, "unsigned": {"age_ts": 1570040412999}}heQ__$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 151}{"auth_events": ["$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "type": "m.room.power_levels", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"users": {"@anon-20191002_181700-62:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040412344, "hashes": {"sha256": "Fi0Lh3wLHEqOCJfqPQLC+usnf3goNC8FpvWAFOp6/EU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fIBxNjFEfCDeRCpveKkVo5BioiuD9QmkUxKw5rgrfm3Fsbli2wKuQdIzpLA7iA67diQjZSj+g7yuQOKkrjUdAQ"}}, "unsigned": {"age_ts": 1570040412344}}reQ_s$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 150}{"auth_events": ["$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4"], "prev_events": ["$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4"], "type": "m.room.member", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-62", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-62:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040411847, "hashes": {"sha256": "SQgt1vNabYfrNmEFWxRNKFJLXodMp68g/8EIL6z8HPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WOnZ7e/5qDqly8lF0bMzfSGYPOKC9jzsfKVzPESWcwmsiCaGReLUlapxncK9t+NwCEOZtTY1fEK9ZjHBi9FqDg"}}, "unsigned": {"age_ts": 1570040411847}} a} { y w u sqomkigeca~8eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800~7eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800~6eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~5eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800~4eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800~3eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~2eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800~1eeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800~0eeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~/eeQ$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800~.eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800~-eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~,eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800~+eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800~*eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~)eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800~(eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800~'eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~&eeQ$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800~%eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~$eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~#eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800~"eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~!eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~ eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800 | x t p l hd`\XTPLHeeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800eeQ$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800eeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800eeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800eeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800eeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800 eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800 eeQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800 eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800 eeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800 eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800eeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800eeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800 "jq& T X z   9CGl!Cfjj,Q3 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E +Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4d*Q' e!OaCEdDAiatpwYcagUb:localhost:8800m.room.create$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMs)Q))e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgp(Q? e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibility$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUh'Q/ e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rules$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egm&Q9 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_alias$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoj%Q3 e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk $Q'[e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkd#Q' e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY "Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEs!Q))e!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwp Q? e!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibility$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQhQ/ e!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rules$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikmQ9 e!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_alias$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcjQ3 e!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8 Q'[e!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMdQ' e!cosGKKhHvKaVukBCic:localhost:8800m.room.create$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8 Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgpQ? e!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibility$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIhQ/ e!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rules$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIjQ3 e!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA Q'[e!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIdQ' e!rZWweGEChkxxtzyfDB:localhost:8800m.room.create$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0pQ? e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibility$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPshQ/ e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rules$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMjQ3 e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo Q'[e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAdQ' e!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.create$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7QhQ/ e!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067kpQ? e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8h Q/ e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rules$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6Ej Q3 e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0 Q'[e!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE V`8pH X 0  h @  x P ( ` 8  p H "^6nF~V0 nF~V.f>vN&b<('Q$1570042666166IBpPy:localhost:8800#'Q$1570042666165HDkhp:localhost:8800"'Q$1570042666165HDkhp:localhost:8800!'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042654147iSsjl:localhost:8800%M$15700426501OLytM:localhost:8829%M$15700426501OLytM:localhost:8829%M$15700426501OLytM:localhost:8829 %M$15700426501OLytM:localhost:8829 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042649143JxPAB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800%M$15700426410cEjWu:localhost:8829%M$15700426410cEjWu:localhost:8829%M$15700426410cEjWu:localhost:8829'Q$1570042639132zhjjB:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042620111taWCG:localhost:8800'Q$1570042620111taWCG:localhost:8800 #v(8 f  4 8 Hq &6@k$.Yvp0eQ))$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800m/eQ? $OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibilitye.eQ/ $kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rulesj-eQ9 $jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_aliasg,eQ3 $n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels+eQ'[$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800a*eQ' $vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800m.room.createp)eQ))$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800m(eQ? $e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibilitye'eQ/ $H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rulesj&eQ9 $HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_aliasg%eQ3 $YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels$eQ'[$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800a#eQ' $AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create"eQ'[$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829p!eQ))$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800m eQ? $xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibilityeeQ/ $6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rulesjeQ9 $q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_aliasgeQ3 $9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800m.room.power_levelseQ'[$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800aeQ' $kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800m.room.createeQ'[$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800meQ? $wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibilityeeQ/ $MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rulesgeQ3 $jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levelseQ'[$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800aeQ' $r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800m.room.createmeQ? $Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibilityeeQ/ $yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rulesgeQ3 $rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levelseQ'[$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800aeQ' $d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.createeeQ/ $Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.typemeQ? $S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility  -heQ__$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 157}{"auth_events": ["$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q", "$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "prev_events": ["$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "type": "m.room.power_levels", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"users": {"@anon-20191002_181700-63:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040417851, "hashes": {"sha256": "Stt8VlF9Uw12kcnThuoQToGkNjXD8u495YszoxlXXis"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "69OPAdqlSjMEvDBrgd+KryNmSG8AsPpy7yRCjLhLsL9ZrNxU7ebFIfnD0brfETVnCyWv8T4h7fPAxktAwbctAA"}}, "unsigned": {"age_ts": 1570040417851}}reQ_s$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 156}{"auth_events": ["$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q"], "prev_events": ["$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q"], "type": "m.room.member", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-63", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-63:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040417420, "hashes": {"sha256": "82pJbN6ImPQwrrYtFjXqdeJEp1AZXJptm0T1QhPZWZ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "plkQUtW6Sp64bvreiLon/S2DaeD3umJ/41ynWoyEwiVGpthncmSZvFdmrCEHIiDDdRN6eZcdreq2qj3bgzitAw"}}, "unsigned": {"age_ts": 1570040417420}}feQ_[$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 155}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-63:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040416672, "hashes": {"sha256": "wHHWe4CWZYnLbIBLrAt3+5YMQ0Cx0/4e91gC1usJCeU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CSl41INmQtxqdaNK2hYmgcUaXs3YXggA5EmQtauLxvJI6q1WkkZz+bnVTLpSRrd0CAitT/0qvGcVrwg0qaRNBQ"}}, "unsigned": {"age_ts": 1570040416672}}oeQ_m$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800{"token_id": 100, "stream_ordering": 154}{"auth_events": ["$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0", "$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4", "$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE"], "prev_events": ["$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8"], "type": "a.test.state.type", "room_id": "!vJQYmOxOBLwFKzYkNj:localhost:8800", "sender": "@anon-20191002_181700-62:localhost:8800", "content": {"a_key": "a_value"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040415251, "hashes": {"sha256": "KV+tfFpcl7BsoaUsQsIEFOGD5a/Jupex4sPRE/tILuk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IvqMPLxfSJUH2AfT1yvyk8vDZGykBPzp1VGpUPXQfLJ5wbAgSRKHLPEjFvQL0dfiYQm6IEFBjDHu8/gfylQaDQ"}}, "unsigned": {"age_ts": 1570040415251}}  r eQ_s$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 161}{"auth_events": ["$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0"], "prev_events": ["$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0"], "type": "m.room.member", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"membership": "join", "displayname": "My name here", "avatar_url": "mxc://foo/bar"}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-65:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040422462, "hashes": {"sha256": "ziJE1pIKuDxAVsOGio8uhrlYnj7yMaX2PuDYbVP9H/U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uEEQgC/AP6CE8zelHvB4ELknQFJ2nl4xmn6pD3hB2H/z47/Fasvgn5+ZGJ0rwBLdSg4Zs2hOSFZIeD4quw0vDg"}}, "unsigned": {"age_ts": 1570040422462}}feQ_[$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 160}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-65:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040421857, "hashes": {"sha256": "1D1NKKKCWQ8PA9/9k8Z6kR7Vm3/vibn9uQeGQYEiyzA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ShLE8RbMvKT469Sy6gCR+6DPtyJ1y65HBTVNU/+ff2CGM/zJmsEGkU17dRnyOVOB/xQrymm9O1rw50kHWjSOAA"}}, "unsigned": {"age_ts": 1570040421857}}eQ_$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 159}{"auth_events": ["$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo", "$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q", "$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "prev_events": ["$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM"], "type": "m.room.history_visibility", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040419025, "hashes": {"sha256": "ITvyBKe4zBeL0vbJd5Vr8qoNnhMRdvhlXqIcablCaes"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZYLvZGT6QCSCaBtNu1j+Bmc+UJP+xU05WmCIL8HU7ILbTWPRwE2FRQJI19RSmUA2rAmPIVAyvqMEvh/DXatjAQ"}}, "unsigned": {"age_ts": 1570040419025}}reQ_s$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM!uJtKGXTNdEnCPNOGDx:localhost:8800{"token_id": 101, "stream_ordering": 158}{"auth_events": ["$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo", "$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q", "$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"], "prev_events": ["$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo"], "type": "m.room.join_rules", "room_id": "!uJtKGXTNdEnCPNOGDx:localhost:8800", "sender": "@anon-20191002_181700-63:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040418491, "hashes": {"sha256": "POzdK08PoO2PVPe0LNrP/ebrDvlJpSIZUIjOBzLK8F8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UzN4ZPjgzr5V6h4FzrWUOUADPlsd3dOYqovdSQZ14RltIY6YjD1OKuVyczPuZ3u+vDpN1xI7l03+BIqEKiBKBQ"}}, "unsigned": {"age_ts": 1570040418491}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1he$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1ge$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1fe$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1ee$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41de$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1ce$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1be$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1ae$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1`e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1_e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1^e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1]e$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg1\e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1[e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1Ze$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81Ye$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1Xe$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1We$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1Ve$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1Ue$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081Te$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41Se$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1Re$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1Qe$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1Pe$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1Oe$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1Ne$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1Me$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1Le$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1Ke$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1Je$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1Ie$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1He$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1Ge$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1Fe$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1Ee$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1De$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1Ce$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1Be$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1Ae$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1@e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY1?e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1>e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1=e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1<e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg1;e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1:e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE19e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal818e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo17e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg16e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E15e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD414e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM13e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg12e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU11e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg10e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1/e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1.e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1-e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1,e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1+e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1*e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1)e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1(e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1'e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81&e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM1%e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81$e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg1#e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1"e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1!e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1 e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs m G < x m/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCge/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCgd/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09Cga/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCgY/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCg`/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCgb/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCgf/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCg\/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCg[/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCgZ1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8Cgc/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCgg  R$eQ_3$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 103, "stream_ordering": 165}{"auth_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA", "$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI"], "prev_events": ["$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI"], "type": "m.room.member", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-64:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-64", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-64:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040425651, "hashes": {"sha256": "glu9OEeRTVueCMgvDuFkvD1LEhxh1PTRX9sSPwXC3C0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2NtL6CT8DK9F3pB6/xT9DWp3KjbCSqM9KVCPsO4/CbUNwJd4yr86/6B4ZjLIAOV67h4VBqYTbItKDisyuBKxAQ"}}, "unsigned": {"age_ts": 1570040425651}}#eQ_$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 164}{"auth_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA", "$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "prev_events": ["$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI"], "type": "m.room.history_visibility", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040424440, "hashes": {"sha256": "PXPjrKq0ZmVA+Ow/DsQJEFr0aGXAhYRGPyoOyp6OH7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yAkj/uBEOaLkQmBQ53se4QTRSj07S2xQ1pCQ+uaudvm7yRcX+mwgZzYjVvMZDAA6ZelhBsHcsJWm4naaKzfEBQ"}}, "unsigned": {"age_ts": 1570040424440}}r"eQ_s$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 163}{"auth_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA", "$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "prev_events": ["$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA"], "type": "m.room.join_rules", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040423574, "hashes": {"sha256": "10ZukLz1zIi26OvwcIIpJtupzIiyzj1/JulaI3+QA1w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ygriSQX5Km0+n3T7JZpwoVwtE9LQavMlIwDuzj4ly3xioNqRmA8R5K0CF59XjIV8rr0EWOYg/AFyx0DA15EyAg"}}, "unsigned": {"age_ts": 1570040423574}}h!eQ__$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800{"token_id": 102, "stream_ordering": 162}{"auth_events": ["$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0", "$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "prev_events": ["$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI"], "type": "m.room.power_levels", "room_id": "!rZWweGEChkxxtzyfDB:localhost:8800", "sender": "@anon-20191002_181700-65:localhost:8800", "content": {"users": {"@anon-20191002_181700-65:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040422975, "hashes": {"sha256": "vVNPCBhpFGPzSWQog7rdBLDLRlK3Zcc4vtJI0torrzQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t6MNUjspq7kGeOMmRfLjXOvUmlmJa5mwMNuY3qHiD4ucMRLRZ0lvcguUwpgKE+X1vqMIF1mTOqorGdEZu4+HDg"}}, "unsigned": {"age_ts": 1570040422975}} [P)4 wE[  y R + hA~W0 l,|Td<`8pH X 0  h B  z R *  d <\4 &O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800'Q$1570042619110gZfPB:localhost:8800 W'Q$1570042619109qhpUv:localhost:8800 V'Q$1570042618108WWxoQ:localhost:8800 U'Q$1570042617107cANtu:localhost:8800 T'Q$1570042616106fkZGL:localhost:8800 S'Q$1570042615105OKfnm:localhost:8800 R&O$157004184672SfwvS:localhost:8800'Q$1570042611101IffRu:localhost:8800 N'Q$1570042612102sQZCG:localhost:8800 O'Q$1570042614104FELge:localhost:8800 Q'Q$1570042613103AHxGt:localhost:8800 P&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800'Q$1570042611100ueDzK:localhost:8800 M&O$157004261099UmKia:localhost:8800 L&O$157004188598DcHDt:localhost:8800>&O$157004188397MRiZP:localhost:8800;&O$157004188296OVWxu:localhost:8800:&O$157004188195thBOS:localhost:88009&O$157004188194vdqBG:localhost:88008&O$157004188093UtRbN:localhost:88007&O$157004187992XwpoQ:localhost:88006&O$157004187190ZLRgN:localhost:8800-&O$157004187089FLOwV:localhost:8800,&O$157004186988RkcKb:localhost:8800+&O$157004186887sKbQU:localhost:8800*&O$157004186786RVgKA:localhost:8800)&O$157004186785fjAIs:localhost:8800(&O$157004185983tEalY:localhost:8800 &O$157004185982diSTq:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:8800&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800'Q$1570042654147iSsjl:localhost:8800 |'Q$1570042653146dGCce:localhost:8800 {'Q$1570042651145wBynt:localhost:8800 z%M$15700426501OLytM:localhost:8829 y'Q$1570042649143JxPAB:localhost:8800 x'Q$1570042648142spuws:localhost:8800 w'Q$1570042648141xSHQB:localhost:8800 v'Q$1570042647140rNeEf:localhost:8800 u'Q$1570042646139VXLYO:localhost:8800 t'Q$1570042646138YEunv:localhost:8800 s'Q$1570042645137fBnPZ:localhost:8800 r'Q$1570042644136OugnY:localhost:8800 q'Q$1570042642135oMfQy:localhost:8800 p%M$15700426410cEjWu:localhost:8829 o'Q$1570042640133wGmrF:localhost:8800 n'Q$1570042639132zhjjB:localhost:8800 m'Q$1570042638131kazZm:localhost:8800 l'Q$1570042637130zlkqP:localhost:8800 k'Q$1570042636129shBTe:localhost:8800 j'Q$1570042635128KJCvL:localhost:8800 i'Q$1570042634127eDBry:localhost:8800 h'Q$1570042634126YmPkp:localhost:8800 g'Q$1570042632125lwdOR:localhost:8800 f'Q$1570042632124bMwzE:localhost:8800 e'Q$1570042631123SLyGA:localhost:8800 d'Q$1570042630122bUTeO:localhost:8800 c'Q$1570042629121nZoNG:localhost:8800 b'Q$1570042629120wtVFY:localhost:8800 a'Q$1570042628119fxxBA:localhost:8800 `'Q$1570042627118OLFSV:localhost:8800 _'Q$1570042626117sfUAQ:localhost:8800 ^'Q$1570042626116pKAbp:localhost:8800 ]'Q$1570042624115nZtIB:localhost:8800 \'Q$1570042623114pBHTz:localhost:8800 ['Q$1570042622113mtzjt:localhost:8800 Z'Q$1570042621112AUAFX:localhost:8800 Y'Q$1570042620111taWCG:localhost:8800 X [P)4 wE[  y R + hA~W0 l,|Td<`8pH X 0  h B  z R *  d <\4 &O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800'Q$1570042619110gZfPB:localhost:8800 b'Q$1570042619109qhpUv:localhost:8800 a'Q$1570042618108WWxoQ:localhost:8800 `'Q$1570042617107cANtu:localhost:8800 _'Q$1570042616106fkZGL:localhost:8800 ^'Q$1570042615105OKfnm:localhost:8800 ]&O$157004184672SfwvS:localhost:8800'Q$1570042611101IffRu:localhost:8800 Y'Q$1570042612102sQZCG:localhost:8800 Z'Q$1570042614104FELge:localhost:8800 \'Q$1570042613103AHxGt:localhost:8800 [&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800'Q$1570042611100ueDzK:localhost:8800 X&O$157004261099UmKia:localhost:8800 W&O$157004188598DcHDt:localhost:8800?&O$157004188397MRiZP:localhost:8800<&O$157004188296OVWxu:localhost:8800;&O$157004188195thBOS:localhost:8800:&O$157004188194vdqBG:localhost:88009&O$157004188093UtRbN:localhost:88008&O$157004187992XwpoQ:localhost:88007&O$157004187190ZLRgN:localhost:8800.&O$157004187089FLOwV:localhost:8800-&O$157004186988RkcKb:localhost:8800,&O$157004186887sKbQU:localhost:8800+&O$157004186786RVgKA:localhost:8800*&O$157004186785fjAIs:localhost:8800)&O$157004185983tEalY:localhost:8800!&O$157004185982diSTq:localhost:8800 &O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:8800&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800'Q$1570042654147iSsjl:localhost:8800 'Q$1570042653146dGCce:localhost:8800 'Q$1570042651145wBynt:localhost:8800 %M$15700426501OLytM:localhost:8829 'Q$1570042649143JxPAB:localhost:8800 'Q$1570042648142spuws:localhost:8800 'Q$1570042648141xSHQB:localhost:8800 'Q$1570042647140rNeEf:localhost:8800 'Q$1570042646139VXLYO:localhost:8800 'Q$1570042646138YEunv:localhost:8800 ~'Q$1570042645137fBnPZ:localhost:8800 }'Q$1570042644136OugnY:localhost:8800 |'Q$1570042642135oMfQy:localhost:8800 {%M$15700426410cEjWu:localhost:8829 z'Q$1570042640133wGmrF:localhost:8800 y'Q$1570042639132zhjjB:localhost:8800 x'Q$1570042638131kazZm:localhost:8800 w'Q$1570042637130zlkqP:localhost:8800 v'Q$1570042636129shBTe:localhost:8800 u'Q$1570042635128KJCvL:localhost:8800 t'Q$1570042634127eDBry:localhost:8800 s'Q$1570042634126YmPkp:localhost:8800 r'Q$1570042632125lwdOR:localhost:8800 q'Q$1570042632124bMwzE:localhost:8800 p'Q$1570042631123SLyGA:localhost:8800 o'Q$1570042630122bUTeO:localhost:8800 n'Q$1570042629121nZoNG:localhost:8800 m'Q$1570042629120wtVFY:localhost:8800 l'Q$1570042628119fxxBA:localhost:8800 k'Q$1570042627118OLFSV:localhost:8800 j'Q$1570042626117sfUAQ:localhost:8800 i'Q$1570042626116pKAbp:localhost:8800 h'Q$1570042624115nZtIB:localhost:8800 g'Q$1570042623114pBHTz:localhost:8800 f'Q$1570042622113mtzjt:localhost:8800 e'Q$1570042621112AUAFX:localhost:8800 d'Q$1570042620111taWCG:localhost:8800 c vI { T -  j C  Y 2 oHf?Q*xO(e>`8pH X 0  h @  lD|T,f>v*2&O$157004185678lyJsT:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185983tEalY:localhost:8800&O$157004185982diSTq:localhost:8800&O$157004180549mJBJB:localhost:8800&O$157004186887sKbQU:localhost:8800(&O$157004186786RVgKA:localhost:8800'&O$157004186785fjAIs:localhost:8800&&O$157004187089FLOwV:localhost:8800*&O$157004186988RkcKb:localhost:8800)'Q$1570042612102sQZCG:localhost:8800 @'Q$1570042611101IffRu:localhost:8800 ?'Q$1570042611100ueDzK:localhost:8800 >&O$157004261099UmKia:localhost:8800 =&O$157004188598DcHDt:localhost:8800<&O$157004188397MRiZP:localhost:88009&O$157004188296OVWxu:localhost:88008&O$157004188195thBOS:localhost:88007&O$157004188194vdqBG:localhost:88006&O$157004188093UtRbN:localhost:88005&O$157004187992XwpoQ:localhost:88004&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800&O$157004184672SfwvS:localhost:8800 &O$157004184571IVgQM:localhost:8800 &O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004180650ruqIl:localhost:8800'Q$1570042634127eDBry:localhost:8800 Y'Q$1570042634126YmPkp:localhost:8800 X'Q$1570042632125lwdOR:localhost:8800 W'Q$1570042632124bMwzE:localhost:8800 V'Q$1570042631123SLyGA:localhost:8800 U'Q$1570042630122bUTeO:localhost:8800 T'Q$1570042629121nZoNG:localhost:8800 S'Q$1570042629120wtVFY:localhost:8800 R'Q$1570042628119fxxBA:localhost:8800 Q'Q$1570042627118OLFSV:localhost:8800 P'Q$1570042626117sfUAQ:localhost:8800 O'Q$1570042626116pKAbp:localhost:8800 N'Q$1570042624115nZtIB:localhost:8800 M'Q$1570042623114pBHTz:localhost:8800 L'Q$1570042622113mtzjt:localhost:8800 K'Q$1570042621112AUAFX:localhost:8800 J'Q$1570042620111taWCG:localhost:8800 I'Q$1570042619110gZfPB:localhost:8800 H'Q$1570042619109qhpUv:localhost:8800 G'Q$1570042618108WWxoQ:localhost:8800 F'Q$1570042617107cANtu:localhost:8800 E'Q$1570042616106fkZGL:localhost:8800 D'Q$1570042615105OKfnm:localhost:8800 C'Q$1570042614104FELge:localhost:8800 B'Q$1570042613103AHxGt:localhost:8800 A&O$157004187190ZLRgN:localhost:8800+ [P)4 wE[  y R + hA~W0 l,|Td<`8pH X 0  h B  z R *  d <\4 &O$157004181655JUAvO:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180752YHMqi:localhost:8800&O$157004180751hMlwg:localhost:8800&O$157004183063NdEPw:localhost:8800&O$157004183062AwGkL:localhost:8800&O$157004182060gAdxi:localhost:8800'Q$1570042619110gZfPB:localhost:8800 W'Q$1570042619109qhpUv:localhost:8800 V'Q$1570042618108WWxoQ:localhost:8800 U'Q$1570042617107cANtu:localhost:8800 T'Q$1570042616106fkZGL:localhost:8800 S'Q$1570042615105OKfnm:localhost:8800 R&O$157004184672SfwvS:localhost:8800'Q$1570042611101IffRu:localhost:8800 N'Q$1570042612102sQZCG:localhost:8800 O'Q$1570042614104FELge:localhost:8800 Q'Q$1570042613103AHxGt:localhost:8800 P&O$157004181959Afmmv:localhost:8800&O$157004181958ixShg:localhost:8800&O$157004181857fcmAB:localhost:8800&O$157004181756ejZNp:localhost:8800&O$157004184571IVgQM:localhost:8800&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:8800&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&O$157004183365ZxPWz:localhost:8800&O$157004183264ktTbL:localhost:8800'Q$1570042611100ueDzK:localhost:8800 M&O$157004261099UmKia:localhost:8800 L&O$157004188598DcHDt:localhost:8800>&O$157004188397MRiZP:localhost:8800;&O$157004188296OVWxu:localhost:8800:&O$157004188195thBOS:localhost:88009&O$157004188194vdqBG:localhost:88008&O$157004188093UtRbN:localhost:88007&O$157004187992XwpoQ:localhost:88006&O$157004187190ZLRgN:localhost:8800-&O$157004187089FLOwV:localhost:8800,&O$157004186988RkcKb:localhost:8800+&O$157004186887sKbQU:localhost:8800*&O$157004186786RVgKA:localhost:8800)&O$157004186785fjAIs:localhost:8800(&O$157004185983tEalY:localhost:8800 &O$157004185982diSTq:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:8800&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800'Q$1570042654147iSsjl:localhost:8800 |'Q$1570042653146dGCce:localhost:8800 {'Q$1570042651145wBynt:localhost:8800 z%M$15700426501OLytM:localhost:8829 y'Q$1570042649143JxPAB:localhost:8800 x'Q$1570042648142spuws:localhost:8800 w'Q$1570042648141xSHQB:localhost:8800 v'Q$1570042647140rNeEf:localhost:8800 u'Q$1570042646139VXLYO:localhost:8800 t'Q$1570042646138YEunv:localhost:8800 s'Q$1570042645137fBnPZ:localhost:8800 r'Q$1570042644136OugnY:localhost:8800 q'Q$1570042642135oMfQy:localhost:8800 p%M$15700426410cEjWu:localhost:8829 o'Q$1570042640133wGmrF:localhost:8800 n'Q$1570042639132zhjjB:localhost:8800 m'Q$1570042638131kazZm:localhost:8800 l'Q$1570042637130zlkqP:localhost:8800 k'Q$1570042636129shBTe:localhost:8800 j'Q$1570042635128KJCvL:localhost:8800 i'Q$1570042634127eDBry:localhost:8800 h'Q$1570042634126YmPkp:localhost:8800 g'Q$1570042632125lwdOR:localhost:8800 f'Q$1570042632124bMwzE:localhost:8800 e'Q$1570042631123SLyGA:localhost:8800 d'Q$1570042630122bUTeO:localhost:8800 c'Q$1570042629121nZoNG:localhost:8800 b'Q$1570042629120wtVFY:localhost:8800 a'Q$1570042628119fxxBA:localhost:8800 `'Q$1570042627118OLFSV:localhost:8800 _'Q$1570042626117sfUAQ:localhost:8800 ^'Q$1570042626116pKAbp:localhost:8800 ]'Q$1570042624115nZtIB:localhost:8800 \'Q$1570042623114pBHTz:localhost:8800 ['Q$1570042622113mtzjt:localhost:8800 Z'Q$1570042621112AUAFX:localhost:8800 Y'Q$1570042620111taWCG:localhost:8800 X a} { y w u sqomkigeca~WeeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~VeeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~UeeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~TeeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~SeeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~ReeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~QeeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~PeeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~OeeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~NeeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~MeeQ$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~LeeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800~KeeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~JeeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~IeeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~HeeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~GeeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~FeeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~EeeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~DeeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~CeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~BeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~AeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~@eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~?eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~>eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800~=eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800~<eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~;eeQ$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800~:eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800~9eeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800 !"D f  ; ]  2Xz -Ou(JlnQQQ$15700nQQQ$1570042722229ehxUl:localhost:8800$1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042722228QkARL:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042721227mhNwo:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042720226wSTBF:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800lQMQ$1570042718224MBWNJ:localhost:8800$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800lMQQ$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042716222nflqt:localhost:8800$1570042715221Amlxc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042715221Amlxc:localhost:8800$1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042714220vWWFN:localhost:8800$1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042713219HcQXL:localhost:8800$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042712218KQzXb:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042712217nuYrc:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800nQQQ$1570042711216KdEEo:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800lQMQ$1570042709214PwhVu:localhost:8800$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800lMQQ$15700427086bDrAU:localhost:8829$1570042707212LkSAM:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042707212LkSAM:localhost:8800$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042706211NniIl:localhost:8800$1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042705210LweYn:localhost:8800$1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042704209JQwmT:localhost:8800$1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042704208yLiWU:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042703207yqsGA:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042702206BIYsS:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800nQQQ$1570042700204CxVfq:localhost:8800$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042698202juBqr:localhost:8800$1570042698201kDowV:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042698201kDowV:localhost:8800$1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042697200mrENr:localhost:8800$1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042697199ROUNP:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042696198qbnxj:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042695197vezoL:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042694196OHsWc:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800nQQQ$1570042692194rxboZ:localhost:8800$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042691193uVdPZ:localhost:8800$1570042691192yNWVM:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800   4(eQ_$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 169}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8"], "type": "m.room.canonical_alias", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"alias": "#__ANON__-3:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040431066, "hashes": {"sha256": "1ogpIWuOAjFlVAeUx7XGEnlO8sYhKCbfQmiNAbPnmPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hg8GOmIQkJOefWTCpNzMhtHWaPz6mslSn9KWgkym9+pGgFZZm6MLBeVKqvRXw0nkc9ge7ylZm/TgKF9oGVvFCw"}}, "unsigned": {"age_ts": 1570040431066}}h'eQ__$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 168}{"auth_events": ["$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "type": "m.room.power_levels", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"users": {"@anon-20191002_181700-67:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040429700, "hashes": {"sha256": "/crwT5yvST06HuYSBtSg5CcdLVQD3L59nLXLJZRORqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fnp8L1tCwgueyfcMhMn1u8Ly4JpXnJyvdjGPxE90GMZiWmprhoccy+SZu1FUlytEGSjqPlC8YCDHrquzddnxBQ"}}, "unsigned": {"age_ts": 1570040429700}}r&eQ_s$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 167}{"auth_events": ["$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8"], "prev_events": ["$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8"], "type": "m.room.member", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"membership": "join", "displayname": "My name here", "avatar_url": "mxc://foo/bar"}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-67:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040429104, "hashes": {"sha256": "aVzTP5ek2O0zTaPU/l6eRa7H8cy6T2CWlwASxSdBToM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "05KtrHPUWwF80nrXE+wk0W/2koxm7tWk8GEY2X3BdpK+0LFMXk2bd+iONrW+MV3QUs/cD4q/a0OHBuxSYAlzAw"}}, "unsigned": {"age_ts": 1570040429104}}f%eQ_[$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 166}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-67:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040427921, "hashes": {"sha256": "sOnMkmKQNl7eFkCXFq7jcnSuojPCBQsPWX/7/5hwcok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vbRAoSCpCObcMHp+vJ44BVNxqAzxlRajApUmjsNtahFEDHofV2lcRXor52iI1IiqnrNMDp2p7DeqBURwghCmBQ"}}, "unsigned": {"age_ts": 1570040427921}}  nw,eQ/+$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 173}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik"], "content": {"avatar_url": "mxc://foo/remote", "displayname": "My remote name here", "membership": "join"}, "depth": 8, "hashes": {"sha256": "Q3lXPYmCiX5Mb3VexXNcj3Yq3UZ4r+PM8W0LFwsqXD0"}, "origin": "localhost:8829", "origin_server_ts": 1570040434766, "prev_events": ["$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw"], "prev_state": [], "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-66:localhost:8829", "state_key": "@anon-20191002_181700-66:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2tVMTHDIkslzFNzEnjHe1l71BMxs19X7wMIuMlzkwdLaThSzr/yUJ+NVvasI62XXm8IHQVQZFN08hTKvkjwwCw"}, "localhost:8829": {"ed25519:a_UxIG": "wOno4L9lOckwXgo4Sd46fYAheb5zkRwXNQ+9eZK64e+u3nxF7S/JHncoyWA5s2tQjlSKc8DuzzrdOBaHzd3cAg"}}, "unsigned": {"age": 96}}+eQ_1$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 172}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ"], "type": "m.room.aliases", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"aliases": ["#__ANON__-3:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040433433, "hashes": {"sha256": "AXs+JuWduwDOg4/lKb5XdXf3H6nKk2xuP0Fs9huvjw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A7AgqAbIZvv4ZnE9l2Qh6xQ1qeCRGTnX5W5m6GjX5uP2lDaP3Hs41/CihmWPSUbmbw50xWXKS3bVIIz8A56ODw"}}, "unsigned": {"age_ts": 1570040433433}}*eQ_$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 171}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik"], "type": "m.room.history_visibility", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040432375, "hashes": {"sha256": "lryZ5TvG81Q0n9PkdYeV4L+l1Z9wF1xOSC6mQ5yB3+Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lS4zy2kGFKdJOy8rjztqObsU+7nvlc1Sx6kFlNripbSOuUWyZmhVSE/+ncS/Bq4La+IONl5IRvhJ3W7bsET+AQ"}}, "unsigned": {"age_ts": 1570040432375}}r)eQ_s$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800{"token_id": 104, "stream_ordering": 170}{"auth_events": ["$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8", "$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8", "$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM"], "prev_events": ["$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc"], "type": "m.room.join_rules", "room_id": "!cosGKKhHvKaVukBCic:localhost:8800", "sender": "@anon-20191002_181700-67:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040431758, "hashes": {"sha256": "tsgFxA+if2aTp2XMXNwGdY2y/nzbicH7eif3tuezNaE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J5OIHcEd6Ue9c+w2CT/Qgh+CY4Bg8NjLdmSHeFduGZvN988oq1g8svYnAlx8oc9Al8rAxECJu9CqETzKyMX2Bg"}}, "unsigned": {"age_ts": 1570040431758}} fY c  v # t/7=Sf%Ae3Q [$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYm.room.power_levels!jfshVGNDxkvqPxFxWB:localhost:8800mm@anon-20191002_181700-74:localhost:8800@e'Q [$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMm.room.member!jfshVGNDxkvqPxFxWB:localhost:8800mm@anon-20191002_181700-74:localhost:8800? e'Q  [$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYm.room.create!jfshVGNDxkvqPxFxWB:localhost:8800mPm@anon-20191002_181700-74:localhost:8800 >e)Q [ $XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQm.room.message!OaCEdDAiatpwYcagUb:localhost:8800 m cm @anon-20191002_181700-70:localhost:8800=e'Q [$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgm.room.member!OaCEdDAiatpwYcagUb:localhost:8800mm @anon-20191002_181700-71:localhost:8800<e'Q [$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYm.room.member!OaCEdDAiatpwYcagUb:localhost:8800mmr@anon-20191002_181700-72:localhost:8829 ;e)Q [$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEm.room.aliases!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:8800+:e?Q [$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8m.room.history_visibility!OaCEdDAiatpwYcagUb:localhost:8800mmJ@anon-20191002_181700-70:localhost:8800#9e/Q [$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDom.room.join_rules!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:8800(8e9Q [$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgm.room.canonical_alias!OaCEdDAiatpwYcagUb:localhost:8800mqm'@anon-20191002_181700-70:localhost:8800%7e3Q [$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6Em.room.power_levels!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:88006e'Q [$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4m.room.member!OaCEdDAiatpwYcagUb:localhost:8800m ma@anon-20191002_181700-70:localhost:88005 e'Q  [$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMm.room.create!OaCEdDAiatpwYcagUb:localhost:8800mm@anon-20191002_181700-70:localhost:8800 4e)Q [$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgm.room.aliases!GGTWnzJfvPQBgQqDIE:localhost:8800mBmK@anon-20191002_181700-68:localhost:8800+3e?Q [$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUm.room.history_visibility!GGTWnzJfvPQBgQqDIE:localhost:8800mm@anon-20191002_181700-68:localhost:8800#2e/Q [$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egm.room.join_rules!GGTWnzJfvPQBgQqDIE:localhost:8800m:mQ@anon-20191002_181700-68:localhost:8800(1e9Q [$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKom.room.canonical_alias!GGTWnzJfvPQBgQqDIE:localhost:8800mݹma@anon-20191002_181700-68:localhost:8800%0e3Q [$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkm.room.power_levels!GGTWnzJfvPQBgQqDIE:localhost:8800mQm@@anon-20191002_181700-68:localhost:8800/e'Q [$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkm.room.member!GGTWnzJfvPQBgQqDIE:localhost:8800mPmٹ@anon-20191002_181700-68:localhost:8800. e'Q  [$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYm.room.create!GGTWnzJfvPQBgQqDIE:localhost:8800mmD@anon-20191002_181700-68:localhost:8800-e'Q [$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEm.room.member!cosGKKhHvKaVukBCic:localhost:8800mNm@anon-20191002_181700-66:localhost:8829 ,e)Q [$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwm.room.aliases!cosGKKhHvKaVukBCic:localhost:8800mm+@anon-20191002_181700-67:localhost:8800++e?Q [$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQm.room.history_visibility!cosGKKhHvKaVukBCic:localhost:8800mmȥ@anon-20191002_181700-67:localhost:8800#*e/Q [$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukikm.room.join_rules!cosGKKhHvKaVukBCic:localhost:8800mĎmy@anon-20191002_181700-67:localhost:8800 dQ oH! i B   X 1 nG Z2< 4\tL$`8rJ" \ 4 l D  | V .  jB|T,d'Q$1570042616106fkZGL:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042626116pKAbp:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042620111taWCG:localhost:8800&O$157004184976eGgUf:localhost:8800l'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800&O$157004184875Wzayo:localhost:8800k&O$157004184774CHMNl:localhost:8800j&O$157004184773rCaRK:localhost:8800i&O$157004184672SfwvS:localhost:8800h&O$157004184571IVgQM:localhost:8800g&O$157004183969fQFzs:localhost:8800`&O$157004183868QRvOi:localhost:8800_&O$157004183467WkNdH:localhost:8800['Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611100ueDzK:localhost:8800&O$157004261099UmKia:localhost:8800&O$157004188598DcHDt:localhost:8800&O$157004188397MRiZP:localhost:8800&O$157004188296OVWxu:localhost:8800&O$157004188195thBOS:localhost:8800&O$157004188194vdqBG:localhost:8800&O$157004188093UtRbN:localhost:8800&O$157004187992XwpoQ:localhost:8800&O$157004187190ZLRgN:localhost:8800&O$157004187089FLOwV:localhost:8800&O$157004186988RkcKb:localhost:8800&O$157004186887sKbQU:localhost:8800&O$157004186786RVgKA:localhost:8800&O$157004186785fjAIs:localhost:8800&O$157004185983tEalY:localhost:8800y&O$157004185982diSTq:localhost:8800x&O$157004185881ahRFW:localhost:8800w&O$157004185780kUwpq:localhost:8800v&O$157004185679NNCIw:localhost:8800u&O$157004185678lyJsT:localhost:8800t'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800'Q$1570042670170TtDpX:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042663162sQrEh:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042654147iSsjl:localhost:8800'Q$1570042653146dGCce:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800'Q$1570042644136OugnY:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042634126YmPkp:localhost:8800'Q$1570042632124bMwzE:localhost:8800   0eQ_$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 177}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk"], "type": "m.room.canonical_alias", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"alias": "#__ANON__-4:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040438201, "hashes": {"sha256": "g1if5vtg30I4zMHVC0VO4zmOKeEQmr8hxsgV/ZHzZOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iSvh0b3LvpEyyzgXN3CkDB++OLAKFWqoTg4O8vsoz6NF2/dakjduT3xepbX+8K3tL9EB34LQWfvSfO4plA/bAw"}}, "unsigned": {"age_ts": 1570040438201}}h/eQ__$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 176}{"auth_events": ["$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "type": "m.room.power_levels", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"users": {"@anon-20191002_181700-68:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040437585, "hashes": {"sha256": "ChPhdvWorGk+tPs3Xql6W19u+DtgJLIZ3y5qfi66VXQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xsk+L/8IOwCtUtyxQMucwM0QlkpHvu9gkpV1oojfkA2S2VaVKTsqmUeDNYZSYILK0ufHZknPbvH8hCUFlR2IAw"}}, "unsigned": {"age_ts": 1570040437585}}r.eQ_s$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 175}{"auth_events": ["$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY"], "prev_events": ["$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY"], "type": "m.room.member", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-68", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-68:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040437072, "hashes": {"sha256": "/quI59H2VClKfg2jsMvryvdyR1moed3eiUgtfR6fTek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hmZ5IFMgiudKI/w/4cmRQn6vu24wZ4Ixz2d1Tsm0Gjn4cSPn7/W5CKkCWZsa2X97A3Yq7wvertZon0R2LPvODg"}}, "unsigned": {"age_ts": 1570040437072}}{-eQ_$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 174}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"m.federate": false, "room_version": "4", "creator": "@anon-20191002_181700-68:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040436455, "hashes": {"sha256": "kFSP6FRlHHLBeaa35673rex8bksdalADaOMOk3CdL3M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YXPOB0En+2V8MwkHAy7yDgrLw+/zHS+8UwlKJN0vLxIHHOPb2ZqzO2rSOSt29DnqUbK1XnUVlzEeBkWHiTTjCg"}}, "unsigned": {"age_ts": 1570040436455}} T[$U.|g? `8pH ,tL$b:tL$ \ 4 n F  X 0  h @  x P (X0hBdTP'Q$1570042639132zhjjB:localhost:8800R'Q$1570042638131kazZm:localhost:8800Q'Q$1570042637130zlkqP:localhost:8800PT'Q$1570042618108WWxoQ:localhost:8800?'Q$1570042617107cANtu:localhost:8800>'Q$1570042616106fkZGL:localhost:8800='Q$1570042613103AHxGt:localhost:8800<'Q$1570042612102sQZCG:localhost:8800;'Q$1570042611101IffRu:localhost:8800:'Q$1570042611100ueDzK:localhost:88009&O$157004261099UmKia:localhost:88008&O$157004188598DcHDt:localhost:8800C&O$157004188397MRiZP:localhost:8800@'Q$1570042636129shBTe:localhost:8800O&O$157004188093UtRbN:localhost:8800<&O$157004187992XwpoQ:localhost:8800;&O$157004187190ZLRgN:localhost:88002&O$157004188296OVWxu:localhost:8800?&O$157004188195thBOS:localhost:8800>'Q$1570042712217nuYrc:localhost:8800'Q$1570042711216KdEEo:localhost:8800'Q$1570042710215aaRza:localhost:8800%M$15700427086bDrAU:localhost:8829'Q$1570042706211NniIl:localhost:8800'Q$1570042705210LweYn:localhost:8800'Q$1570042704209JQwmT:localhost:8800'Q$1570042704208yLiWU:localhost:8800'Q$1570042703207yqsGA:localhost:8800'Q$1570042702206BIYsS:localhost:8800'Q$1570042701205bxgOX:localhost:8800'Q$1570042699203fHFjU:localhost:8800'Q$1570042697200mrENr:localhost:8800'Q$1570042635128KJCvL:localhost:8800N'Q$1570042634127eDBry:localhost:8800M'Q$1570042634126YmPkp:localhost:8800L'Q$1570042632124bMwzE:localhost:8800K'Q$1570042629121nZoNG:localhost:8800J'Q$1570042629120wtVFY:localhost:8800I'Q$1570042628119fxxBA:localhost:8800H'Q$1570042627118OLFSV:localhost:8800G'Q$1570042626117sfUAQ:localhost:8800F'Q$1570042626116pKAbp:localhost:8800E'Q$1570042623114pBHTz:localhost:8800D'Q$1570042621112AUAFX:localhost:8800C'Q$1570042620111taWCG:localhost:8800B'Q$1570042619110gZfPB:localhost:8800A'Q$1570042619109qhpUv:localhost:8800@'Q$1570042697199ROUNP:localhost:8800~'Q$1570042696198qbnxj:localhost:8800}'Q$1570042695197vezoL:localhost:8800|'Q$1570042694196OHsWc:localhost:8800{'Q$1570042693195hNKnU:localhost:8800z'Q$1570042691193uVdPZ:localhost:8800y'Q$1570042690191yQfnl:localhost:8800x'Q$1570042689190UkvMv:localhost:8800w'Q$1570042688189axPjv:localhost:8800v'Q$1570042687188ddQmS:localhost:8800u'Q$1570042687187gbArC:localhost:8800t'Q$1570042686186Qxqmn:localhost:8800s'Q$1570042685185RhcXe:localhost:8800r'Q$1570042681182ZiRRU:localhost:8800q'Q$1570042680181TFyrx:localhost:8800p'Q$1570042680180uuIxG:localhost:8800o'Q$1570042679179ZJCqE:localhost:8800n'Q$1570042678178HSUoI:localhost:8800m%M$15700426753WBESe:localhost:8829l'Q$1570042673174OxGuP:localhost:8800k'Q$1570042672173XsxsH:localhost:8800j'Q$1570042672172vPvbe:localhost:8800i'Q$1570042671171AQZaz:localhost:8800h'Q$1570042670170TtDpX:localhost:8800g%M$15700426692GLpqH:localhost:8829f'Q$1570042666166IBpPy:localhost:8800e'Q$1570042666165HDkhp:localhost:8800d'Q$1570042665164nYKmj:localhost:8800c'Q$1570042664163IAHXd:localhost:8800b'Q$1570042663162sQrEh:localhost:8800a'Q$1570042657151cITOZ:localhost:8800`'Q$1570042656150UsLRz:localhost:8800_'Q$1570042656149JNVWR:localhost:8800^'Q$1570042655148eXOyA:localhost:8800]'Q$1570042654147iSsjl:localhost:8800\'Q$1570042653146dGCce:localhost:8800[%M$15700426501OLytM:localhost:8829Z'Q$1570042648141xSHQB:localhost:8800Y'Q$1570042647140rNeEf:localhost:8800X'Q$1570042646139VXLYO:localhost:8800W'Q$1570042646138YEunv:localhost:8800V'Q$1570042645137fBnPZ:localhost:8800U'Q$1570042644136OugnY:localhost:8800T%M$15700426410cEjWu:localhost:8829S E-9?+H T }  2  LxEp)R&g7eQ3 $d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels 6eQ'[$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800joing"eQ3 $YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels !eQ'[$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800joina eQ' $AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create eQ'[$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829joinpeQ))$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800meQ? $xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibilityeeQ/ $6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800m.room.join_rulesa5eQ' $6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800m.room.createm4eQ? $cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibilitye3eQ/ $Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rulesg2eQ3 $24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels 1eQ'[$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800joina0eQ' $XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create /eQ'[$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800join .eQ'[$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829joinp-eQ))$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800m,eQ? $OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibilitye+eQ/ $kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rulesj*eQ9 $jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_aliasg)eQ3 $n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels (eQ'[$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800joina'eQ' $vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800m.room.createp&eQ))$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800m%eQ? $e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibilitye$eQ/ $H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rulesj#eQ9 $HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_alias  nf4eQ_[$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 181}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-70:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040442306, "hashes": {"sha256": "BQtqAnoxr4y0T6q7f/Tp+3xkSgSDYWv3b0YaBkknB6g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jnyvLRrmoPEZG3anA+KWsnSx1vQFfYcYF56cjdF9qq+eANcT1Ocugc6d9UxCSnnIgUczZVU71DGZ1WImPjDOBQ"}}, "unsigned": {"age_ts": 1570040442306}}3eQ_1$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 180}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU"], "type": "m.room.aliases", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"aliases": ["#__ANON__-4:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040440642, "hashes": {"sha256": "k+lUPaSlfNpuxH90sxLss7duA9YOPE0lzGCFbGEMYJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MAoAouC9fsXOue6dFLF3vTig756aFdX2Ox1rNvRv2jKqykQOgldenncFMBWsr1Oqh7QeicEMP94o38tD5tt7CA"}}, "unsigned": {"age_ts": 1570040440642}}2eQ_$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 179}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg"], "type": "m.room.history_visibility", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040439531, "hashes": {"sha256": "eRqpYCRPh50cipcGIEJg7edT3C/3c+qbWg+cfhRZ2ZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NJ6Oby6YIhgVwxeRILJ2Bd7iMUaz2zi87k9134mNMEwffJR0bQao3LGJrb2xfJZ+AOOtEZSoGHGKqPGebmggBQ"}}, "unsigned": {"age_ts": 1570040439531}}r1eQ_s$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800{"token_id": 105, "stream_ordering": 178}{"auth_events": ["$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk", "$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY", "$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk"], "prev_events": ["$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo"], "type": "m.room.join_rules", "room_id": "!GGTWnzJfvPQBgQqDIE:localhost:8800", "sender": "@anon-20191002_181700-68:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040438842, "hashes": {"sha256": "VHIarMZCLZo85iZMOqYKLk/pjTtshRIkIN9jW10aGSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hHmbG89/KOT1dSA/Mb5IMSNE9rgNda/jDKYhB84M3oRDJQpRvvOWa6nidjoAo9Md0uMPE50fb4KwaT1VbBseDg"}}, "unsigned": {"age_ts": 1570040438842}} a} { y w u sqomkigeca~veeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800~ueeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~teeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800~seeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800~reeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~qeeQ$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~peeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800~oeeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~neeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~meeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800~leeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~keeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~jeeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~ieeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~heeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~geeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~feeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~eeeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~deeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~ceeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~beeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~aeeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~`eeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~_eeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800~^eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800~]eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~\eeQ$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800~[eeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800~ZeeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800~YeeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800~XeeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800  7 k 9mcd]c@anon-20191002_181700-598:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEA0fmc3Y0QxWUdmKzQ6O2IKMDAyZnNpZ25hdHVyZSBG-uobgFAmq9NLJXvEdSpgFgmN1SswLvdwubfHzKrPbQo127.0.0.1*d]c@anon-20191002_181700-597:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhTQTFmTnE7LUtBQHlCTEMKMDAyZnNpZ25hdHVyZSB55WriqUdXCaW2zuQkGHisLRCQSwSiwmIsJDDKATirEAo127.0.0.1)d]c@anon-20191002_181700-596:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF8jcExhLjZqWioqb3JJTGIKMDAyZnNpZ25hdHVyZSATTRbNO7ghd-MJRhbJOUDzReRA2eNpboVfGfaE7b5togo127.0.0.1(d]c@anon-20191002_181700-596:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX153K2cxK1BOU2JSS3IKMDAyZnNpZ25hdHVyZSAe6JbkGlIFoVwqKgUpSQhIS91WBgnR3pTMnBpm3t9nswo127.0.0.1'd]c@anon-20191002_181700-595:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpIME1rMDJaNTVnQV4mKmQKMDAyZnNpZ25hdHVyZSDs0_JHyuwrzhsZIXxSBOdggNNwVbh6b2PSU7kjM6VnBAo127.0.0.1&d]c@anon-20191002_181700-593:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV1IzBqNDdWXm5ncklhR2MKMDAyZnNpZ25hdHVyZSDHpR8ZHjt5986DzBZP0MnU2IPu3q7JCmTn5Jzgxs2pmwo127.0.0.1%d]c@anon-20191002_181700-591:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWSmFLJl5ZK0heb2ZuOlkKMDAyZnNpZ25hdHVyZSAO7MSz5oG_iGGUxl0k6OcSlgjGpZGamFhhrRuRdokuIgo127.0.0.1$d]c@anon-20191002_181700-590:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFJQ2k6JnR1d2csZCtTYkoKMDAyZnNpZ25hdHVyZSA9wYUO1vJBMowK4IpWVG5FkeN2atNDe-McB9m6-qrfWQo127.0.0.1#a[a@anon-20191002_181700-58:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaVdGemVQMTNIbFouWCNQMwowMDJmc2lnbmF0dXJlIMS3QCp7F93TS2LA-booUWIaYlu3l9zJ8Gw8Sf7WHA_nCg127.0.0.11d]c@anon-20191002_181700-589:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlYRj1wM05EOS5vXjFKVnoKMDAyZnNpZ25hdHVyZSBYYHFUdAxAnXimtmCEKeGe9KUUuXOT8Dkgh7rJMizMtgo127.0.0.1" !r ~ 9 R 6  &Px~3X^ iNQ3 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levels$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM MQ'[e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4cLQ' e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.create$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UrKQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEoJQ? e!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibility$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjggIQ/ e!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rules$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YiHQ3 e!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M GQ'[e!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAcFQ' e!AWfbViAZparIjmDaVT:localhost:8800m.room.create$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYrEQ))e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgoDQ? e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibility$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sgCQ/ e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rules$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJElBQ9 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_alias$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8iAQ3 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI @Q'[e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Ac?Q' e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.create$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6co>Q? e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibility$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAg=Q/ e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rules$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYi<Q3 e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY ;Q'[e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMc:Q' e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY 9Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY 8Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg 7Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY 6Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$lB_yrRS9T0c8GHqgQ7gg2M84vM5P9-FhCikwa8-D7Cgr5Q))e!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEo4Q? e!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibility$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8g3Q/ e!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rules$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDol2Q9 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_alias$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgi1Q3 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E 0Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4c/Q' e!OaCEdDAiatpwYcagUb:localhost:8800m.room.create$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM .Q'[e!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-69:localhost:8829$QCk_2lkr4QGMynLh-oy3fDeO-XqBnPIwjTA2b2C_tlk Xb<~X1 o I  W * v H  b 3  z L f8 R$k< g8 Y*n?T%i: -X[ @anon-20191002_181700-68:localhost:8800-W[ @anon-20191002_181700-67:localhost:8800-V[ @anon-20191002_181700-64:localhost:8800-U[ @anon-20191002_181700-65:localhost:8800-T[ @anon-20191002_181700-63:localhost:8800-S[ @anon-20191002_181700-62:localhost:8800-R[ @anon-20191002_181700-61:localhost:8800-Q[@anon-20191002_181700-60:localhost:8800-P[@anon-20191002_181700-59:localhost:8800-O[@anon-20191002_181700-58:localhost:8800-N[@anon-20191002_181700-57:localhost:8800-M[@anon-20191002_181700-56:localhost:8800-L[@anon-20191002_181700-55:localhost:8800-K[@anon-20191002_181700-54:localhost:8800-J[@anon-20191002_181700-53:localhost:8800-I[@anon-20191002_181700-52:localhost:8800-H[@anon-20191002_181700-51:localhost:8800-G[@anon-20191002_181700-50:localhost:8800-F[@anon-20191002_181700-49:localhost:8800-E[@anon-20191002_181700-48:localhost:8800!DC@cas_user=21:localhost:8800-C[@anon-20191002_181700-47:localhost:8800-B[@anon-20191002_181700-46:localhost:8800-A[@anon-20191002_181700-45:localhost:8800-@[@anon-20191002_181700-44:localhost:8800-?[@anon-20191002_181700-43:localhost:8800>/@0:localhost:8800-=[@anon-20191002_181700-41:localhost:8800-<[@anon-20191002_181700-40:localhost:8800-;[ @anon-20191002_181700-39:localhost:8800-:[ @anon-20191002_181700-38:localhost:8800-9[ @anon-20191002_181700-37:localhost:8800,8[ @anon-20191002_181700-36:localhost:8800|,7[ @anon-20191002_181700-35:localhost:8800w,6[ @anon-20191002_181700-34:localhost:8800q,5[ @anon-20191002_181700-33:localhost:8800k,4[ @anon-20191002_181700-32:localhost:8800e,3[ @anon-20191002_181700-31:localhost:8800_,2[@anon-20191002_181700-30:localhost:8800X,1[@anon-20191002_181700-29:localhost:8800W,0[@anon-20191002_181700-28:localhost:8800W,/[ @anon-20191002_181700-27:localhost:8800U,.[ @anon-20191002_181700-26:localhost:8800T,-[ @anon-20191002_181700-25:localhost:8800S,,[ @anon-20191002_181700-24:localhost:8800R,+[ @anon-20191002_181700-23:localhost:8800Y,*[ @anon-20191002_181700-22:localhost:8800Q,)[ @anon-20191002_181700-21:localhost:8800I-([@anon-20191002_181700-20:localhost:8800C,'[@anon-20191002_181700-19:localhost:8800,&[@anon-20191002_181700-18:localhost:8800,%[@anon-20191002_181700-17:localhost:8800-$[@anon-20191002_181700-16:localhost:88005,#[@anon-20191002_181700-15:localhost:8800,"[@anon-20191002_181700-14:localhost:8800,![@anon-20191002_181700-12:localhost:8800, [@anon-20191002_181700-13:localhost:8800,[@anon-20191002_181700-11:localhost:8800,[@anon-20191002_181700-10:localhost:8800+Y@anon-20191002_181700-9:localhost:8800+Y@anon-20191002_181700-8:localhost:8800+Y@anon-20191002_181700-7:localhost:8800+Y@anon-20191002_181700-6:localhost:8800+Y@anon-20191002_181700-5:localhost:8800+Y@anon-20191002_181700-4:localhost:8800=@spyglass:localhost:8800;@02login:localhost:8800,[@anon-20191002_181700-3a:localhost:8800+Y@anon-20191002_181700-2:localhost:8800+Y@anon-20191002_181700-1:localhost:8800$K@chrtestuser-39-:localhost:8800$K@chrtestuser-10-:localhost:8800%M@chrtestuser-233-:localhost:8800%M@chrtestuser-163-:localhost:8800%M@chrtestuser-125-:localhost:8800% M@chrtestuser-124-:localhost:8800% M@chrtestuser-123-:localhost:8800$ K@chrtestuser-93-:localhost:8800$ K@chrtestuser-91-:localhost:8800$ K@chrtestuser-64-:localhost:8800$K@chrtestuser-92-:localhost:8800$K@chrtestuser-63-:localhost:8800$K@chrtestuser-58-:localhost:8800$K@chrtestuser-34-:localhost:8800$K@chrtestuser-33-:localhost:8800A@mycooluser:localhost:8800A@user-upper:localhost:88004k@01register-user-20191002_181700:localhost:8800 RsDY* n ?  T % h 8  x H  & W c2n= yHS"^-i8tCN4*/ @3:localhost:8800.)] @anon-20191002_181700-160:localhost:8800(/ @2:localhost:8800'/@1:localhost:8800.&]@anon-20191002_181700-159:localhost:8800.%] @anon-20191002_181700-158:localhost:8800.$]@anon-20191002_181700-157:localhost:8800.#] @anon-20191002_181700-156:localhost:8800."]@anon-20191002_181700-155:localhost:8800.!] @anon-20191002_181700-154:localhost:8800. ] @anon-20191002_181700-153:localhost:8800.] @anon-20191002_181700-152:localhost:8800.] @anon-20191002_181700-151:localhost:8800.]@anon-20191002_181700-149:localhost:8800.] @anon-20191002_181700-150:localhost:8800.] @anon-20191002_181700-146:localhost:8800.] @anon-20191002_181700-143:localhost:8800y.] @anon-20191002_181700-144:localhost:8800{.]@anon-20191002_181700-142:localhost:8800f.] @anon-20191002_181700-141:localhost:8800q.] @anon-20191002_181700-140:localhost:8800n.] @anon-20191002_181700-138:localhost:8800e.] @anon-20191002_181700-136:localhost:8800[.] @anon-20191002_181700-137:localhost:8800\.]@anon-20191002_181700-135:localhost:8800L.] @anon-20191002_181700-134:localhost:8800R.]@anon-20191002_181700-133:localhost:8800B.] @anon-20191002_181700-131:localhost:8800J.] @anon-20191002_181700-132:localhost:8800L. ] @anon-20191002_181700-129:localhost:8800B. ]@anon-20191002_181700-130:localhost:8800:. ]@anon-20191002_181700-127:localhost:88007. ] @anon-20191002_181700-128:localhost:8800:. ] @anon-20191002_181700-125:localhost:8800).] @anon-20191002_181700-126:localhost:8800'.] @anon-20191002_181700-124:localhost:8800.] @anon-20191002_181700-123:localhost:8800.]@anon-20191002_181700-122:localhost:8800 .]@anon-20191002_181700-121:localhost:8800 .] @anon-20191002_181700-120:localhost:8800.] @anon-20191002_181700-118:localhost:8800 .] @anon-20191002_181700-119:localhost:8800 .] @anon-20191002_181700-117:localhost:8800.] @anon-20191002_181700-116:localhost:8800/|]@anon-20191002_181700-113:localhost:8800/{]@anon-20191002_181700-112:localhost:8800.}] @anon-20191002_181700-114:localhost:8800/y]@anon-20191002_181700-109:localhost:8800.z] @anon-20191002_181700-110:localhost:8800.~] @anon-20191002_181700-115:localhost:8800.x] @anon-20191002_181700-108:localhost:8800.w] @anon-20191002_181700-107:localhost:8800~.v] @anon-20191002_181700-106:localhost:8800y.u] @anon-20191002_181700-104:localhost:8800t.t] @anon-20191002_181700-102:localhost:8800l.s]@anon-20191002_181700-103:localhost:8800d.r]@anon-20191002_181700-100:localhost:8800d.q]@anon-20191002_181700-101:localhost:8800c-p[@anon-20191002_181700-99:localhost:8800Z-o[@anon-20191002_181700-96:localhost:8800R-n[@anon-20191002_181700-97:localhost:8800Q-m[ @anon-20191002_181700-95:localhost:8800H-l[ @anon-20191002_181700-93:localhost:8800<-k[@anon-20191002_181700-90:localhost:88005-j[ @anon-20191002_181700-91:localhost:88004-i[@anon-20191002_181700-88:localhost:8800'-h[ @anon-20191002_181700-89:localhost:8800--g[ @anon-20191002_181700-86:localhost:8800&-f[ @anon-20191002_181700-87:localhost:8800'-e[ @anon-20191002_181700-84:localhost:8800-d[ @anon-20191002_181700-85:localhost:8800-c[ @anon-20191002_181700-83:localhost:8800-b[ @anon-20191002_181700-82:localhost:8800-a[ @anon-20191002_181700-81:localhost:8800 -`[@anon-20191002_181700-80:localhost:8800-_[ @anon-20191002_181700-79:localhost:8800-^[ @anon-20191002_181700-77:localhost:8800-][ @anon-20191002_181700-75:localhost:8800-\[ @anon-20191002_181700-74:localhost:8800-[[@anon-20191002_181700-73:localhost:8800-Z[ @anon-20191002_181700-71:localhost:8800-Y[ @anon-20191002_181700-70:localhost:8800  r8eQ_s$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 185}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg"], "type": "m.room.join_rules", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040444634, "hashes": {"sha256": "nFSHH7sLYX/iKXKcsUWlvT7Ru6EFHYnEZ91ZQmcsf7M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rc8N9myDkbR/EFj1hyUmyX1o5IKVaRLWUs2OoON8yAx7pbw58TSm82l5W8m5OhkSUKslxDJRRID1izIJGW7vBg"}}, "unsigned": {"age_ts": 1570040444634}}7eQ_5$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 184}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E"], "type": "m.room.canonical_alias", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"alias": "#test-20191002_181700-1:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040444017, "hashes": {"sha256": "qnlWWDnzEUI0cTcJppTeKDOve9YECylKrvHEX1fISU0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vdjLk2wz4ZpzRKaJnS+/DoS2ow3FOmsH4muigdFedpfsPiVNzm2NCKMP34HqYJu64tH05uplCK89fdilpLyAA"}}, "unsigned": {"age_ts": 1570040444017}}h6eQ__$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 183}{"auth_events": ["$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "type": "m.room.power_levels", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"users": {"@anon-20191002_181700-70:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040443343, "hashes": {"sha256": "rr5T93hoAjfR0pJ3dnukczmAh/QTuPLt/TM6zAyqzmc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "STx+2CVYnXQ3MPchgcaffGDvrfXJH46Mjk1cjcdXsrU3cWdOj8pWZDyAVqOXNoHmECzm2N1IqVGilkzj9/COAw"}}, "unsigned": {"age_ts": 1570040443343}}r5eQ_s$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 182}{"auth_events": ["$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM"], "prev_events": ["$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM"], "type": "m.room.member", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-70", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-70:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040442889, "hashes": {"sha256": "eBmH2/DAM2IuS5jjIGEgK/vHUCfmbKPy2cZFfTR4lMc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u6GVXyOu2WGuid2s9xlUnHQ/yOH/g3OoORBZl0cpnCw2pWV8YsLO9RHDp3fm5cQTbzlGeQapugVmVXheqZj/AQ"}}, "unsigned": {"age_ts": 1570040442889}} Wl v 7 ?pC_2~Q$  ^ 1yLyM  V ) d % r E RZ-gl? ;H,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800+Q !DnUHoxreGexNmjSVpq:localhost:8800OO,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CNFopUEQTFbzjmLvii:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  +Q !CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800MM,Q!BrssELMbasSzTFpIXm:localhost:8800LL,Q!BrssELMbasSzTFpIXm:localhost:8800KK,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 +Q !CSqENqzAezaZnGktbE:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 )),Q!CQKLQUpSYakhxVDltC:localhost:8800 ((,Q!CkNvQnbApPIcuKygDk:localhost:8800CC,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CkNvQnbApPIcuKygDk:localhost:8800EE,Q!CkNvQnbApPIcuKygDk:localhost:8800DD,Q!DelfBAGvCrTXgNxmNV:localhost:8800 b b,Q!DelfBAGvCrTXgNxmNV:localhost:8800 a a,Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` `,Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ _+Q !DelfBAGvCrTXgNxmNV:localhost:8800 ^ ^,Q!CkNvQnbApPIcuKygDk:localhost:8800FF,Q!DelfBAGvCrTXgNxmNV:localhost:8800 g g,Q!DelfBAGvCrTXgNxmNV:localhost:8800 f f,Q!DelfBAGvCrTXgNxmNV:localhost:8800 e e,Q!DelfBAGvCrTXgNxmNV:localhost:8800 d d,Q!DelfBAGvCrTXgNxmNV:localhost:8800 c c ,Q!BrssELMbasSzTFpIXm:localhost:8800OO+Q !CGckPHdSYcIocFvRAq:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800 RR,Q!BrssELMbasSzTFpIXm:localhost:8800QQ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!BrssELMbasSzTFpIXm:localhost:8800PP,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800+Q !CgVBWWcRJoHEcwoLcq:localhost:8800  ,Q!BrssELMbasSzTFpIXm:localhost:8800NN ,Q!CkNvQnbApPIcuKygDk:localhost:8800AA,Q!CkNvQnbApPIcuKygDk:localhost:8800@@+Q !CkNvQnbApPIcuKygDk:localhost:8800??,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CkNvQnbApPIcuKygDk:localhost:8800BB+Q !CAGaRyRvrohDRBsrWH:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CQKLQUpSYakhxVDltC:localhost:8800,Q!CQKLQUpSYakhxVDltC:localhost:8800!!,Q!CQKLQUpSYakhxVDltC:localhost:8800  ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 +Q !DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 '',Q!CQKLQUpSYakhxVDltC:localhost:8800&&,Q!CQKLQUpSYakhxVDltC:localhost:8800%%,Q!CQKLQUpSYakhxVDltC:localhost:8800$$,Q!CQKLQUpSYakhxVDltC:localhost:8800##,Q!CQKLQUpSYakhxVDltC:localhost:8800"" Wl v 7 ?pC_2~Q$  ^ 1yLyM  V ) d % r E RZ-gl? ;H,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800+Q !DnUHoxreGexNmjSVpq:localhost:8800OO,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CNFopUEQTFbzjmLvii:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CGckPHdSYcIocFvRAq:localhost:8800,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CKNftKKCaOCVUyYWNY:localhost:8800  +Q !CKNftKKCaOCVUyYWNY:localhost:8800  ,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!CAGaRyRvrohDRBsrWH:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800MM,Q!BrssELMbasSzTFpIXm:localhost:8800LL,Q!BrssELMbasSzTFpIXm:localhost:8800KK,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 +Q !CSqENqzAezaZnGktbE:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 )),Q!CQKLQUpSYakhxVDltC:localhost:8800 ((,Q!CkNvQnbApPIcuKygDk:localhost:8800CC,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CkNvQnbApPIcuKygDk:localhost:8800EE,Q!CkNvQnbApPIcuKygDk:localhost:8800DD,Q!DelfBAGvCrTXgNxmNV:localhost:8800 b b,Q!DelfBAGvCrTXgNxmNV:localhost:8800 a a,Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` `,Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ _+Q !DelfBAGvCrTXgNxmNV:localhost:8800 ^ ^,Q!CkNvQnbApPIcuKygDk:localhost:8800FF,Q!DelfBAGvCrTXgNxmNV:localhost:8800 g g,Q!DelfBAGvCrTXgNxmNV:localhost:8800 f f,Q!DelfBAGvCrTXgNxmNV:localhost:8800 e e,Q!DelfBAGvCrTXgNxmNV:localhost:8800 d d,Q!DelfBAGvCrTXgNxmNV:localhost:8800 c c ,Q!BrssELMbasSzTFpIXm:localhost:8800OO+Q !CGckPHdSYcIocFvRAq:localhost:8800,Q!BrssELMbasSzTFpIXm:localhost:8800 RR,Q!BrssELMbasSzTFpIXm:localhost:8800QQ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!CSqENqzAezaZnGktbE:localhost:8800 ,Q!BrssELMbasSzTFpIXm:localhost:8800PP,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800+Q !CgVBWWcRJoHEcwoLcq:localhost:8800  ,Q!BrssELMbasSzTFpIXm:localhost:8800NN ,Q!CkNvQnbApPIcuKygDk:localhost:8800AA,Q!CkNvQnbApPIcuKygDk:localhost:8800@@+Q !CkNvQnbApPIcuKygDk:localhost:8800??,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CgVBWWcRJoHEcwoLcq:localhost:8800,Q!CkNvQnbApPIcuKygDk:localhost:8800BB+Q !CAGaRyRvrohDRBsrWH:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800,Q!CNFopUEQTFbzjmLvii:localhost:8800+Q !CQKLQUpSYakhxVDltC:localhost:8800,Q!CQKLQUpSYakhxVDltC:localhost:8800!!,Q!CQKLQUpSYakhxVDltC:localhost:8800  ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!DSFBpkqfnvBQbGoMUK:localhost:8800 +Q !DSFBpkqfnvBQbGoMUK:localhost:8800 ,Q!CQKLQUpSYakhxVDltC:localhost:8800 '',Q!CQKLQUpSYakhxVDltC:localhost:8800&&,Q!CQKLQUpSYakhxVDltC:localhost:8800%%,Q!CQKLQUpSYakhxVDltC:localhost:8800$$,Q!CQKLQUpSYakhxVDltC:localhost:8800##,Q!CQKLQUpSYakhxVDltC:localhost:8800"" ,NC 8 - { " p  e ZOD9.|#qf V`eL$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTEsha2564Uٲ&|8Y>F~T[51V_eL$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcsha256zq/9!dѴ. E e>g'/V^eL$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMsha256毰StaG91u]ɽ-ՅL4cTCV]eL$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgsha256L +{]'VQ[vQe/V\eL$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_ssha256<@٫@j SY?TP&V[eL$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEsha256&N2\Uҗ/_sF4â"lVZeL$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8sha256gj&>p5:!zG=J3VYeL$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIsha256wq"@4 VW{xoyppC1VXeL$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Asha256}s&56볩ЙW7*VWeL$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6csha256|RQu¸{uz;VVeL$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzIsha256x:.1ܬZw+Ky8ڐJmU#2VUeL$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508sha256Z*~G&"|p7SnnOVTeL$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4sha2564-uqON8CB{d~e(KRVSeL$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kAsha256 <ԄuFPT'Q[N1(<%@VReL$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygsha256q^Euōnq/$O(VQeL$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQsha256&1?Wnkm;:;VPeL$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUsha256Q w|mlqTBv ϔ)9VOeL$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wsha256^7^ bKtSw;VNeL$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMsha256Lj1P+VtxUCK*};!VMeL$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1Usha256ּ@e()b$Rc4ycЅyrgUVLeL$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUsha256ʸmo@S" \^X%R]%VKeL$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQsha256!&^d69G^,R@ҾZc~]$VJeL$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wsha256Fz}~ qpJ͌y#K9 !ooVIeL$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQsha2566 Qd_Qh^~}~nVHeL$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01ssha256*G 1k5\ !m6;n[VGeL$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQsha256Aj s/c\m?^M"k VFeL$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfAsha256SD-rTDxCr+q4ýVEeL$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9Esha256k5%^in;%b^·VDeL$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCosha256p>U BxU5KZBIBt*VCeL$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wgsha256/ r5>Ua>NYL*T`hVBeL$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAsha256pHجܜ^d=]{3@?uVAeL$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYsha256"}_Ip,'BK쳓o{wV@eL$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYsha256ۈYhNkqϯ2%}uIox\#vV?eL$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMsha256\#=YM ;pʾAX^na9aV>eL$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYsha256]Rmw*.iYNbMt}8=IzgeV=eL$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQsha256\Z xu (8H[&1B@4V<eL$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgsha256kع<:qS.]E2IV;eL$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYsha256AT[f22dk(:V7eL$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgsha256 q}ÞuREV6eL$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6Esha256N~ѯ^ ?.V5eL$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4sha256|6W:z+A'Bc/> !%<  ( P v z ,OSu ,N5MQ))ee!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8LQ))ee!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEsKQ))e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0spJQ? e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibility$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIhIQ/ e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rules$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0mHQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwjGQ3 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levels$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM FQ'[e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4dEQ' e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.create$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UsDQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEpCQ? e!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibility$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjghBQ/ e!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rules$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YjAQ3 e!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M @Q'[e!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAd?Q' e!AWfbViAZparIjmDaVT:localhost:8800m.room.create$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYs>Q))e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgp=Q? e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibility$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sh<Q/ e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rules$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEm;Q9 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_alias$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8j:Q3 e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI 9Q'[e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Ad8Q' e!wnriPzXkIMmdTNoJKU:localhost:8800m.room.create$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cp7Q? e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibility$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAh6Q/ e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rules$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYj5Q3 e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY 4Q'[e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMd3Q' e!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY 2Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg 1Q'[e!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYs0Q))e!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEp/Q? e!OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibility$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8h.Q/ e!OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rules$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDom-Q9 e!OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_alias$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg ~z v r n j fb^ZVRNJF9eeQ$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:88008eeQ$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA!jfshVGNDxkvqPxFxWB:localhost:88007eeQ$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:88006eeQ$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:88005eeQ$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:88004eeQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:88003eeQ$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:88002eeQ$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:88001eeQ$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:88000eeQ$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800/eeQ$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800.eeQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800-eeQ$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800,eeQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800+eeQ$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800*eeQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800)eeQ$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800(eeQ$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800'eeQ$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800&eeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800%eeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800$eeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800#eeQ$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800"eeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800!eeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800 eeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800eeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800eeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800 -RM H C > 9 4/*|%w rmhc TeQe!wnriPzXkIMmdTNoJKU:localhost:8800$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARwTdQe!wnriPzXkIMmdTNoJKU:localhost:8800$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBcTcQe!wnriPzXkIMmdTNoJKU:localhost:8800$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkUTbQe!wnriPzXkIMmdTNoJKU:localhost:8800$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_noTaQe!wnriPzXkIMmdTNoJKU:localhost:8800$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTET`Qe!wnriPzXkIMmdTNoJKU:localhost:8800$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcT_Qe!wnriPzXkIMmdTNoJKU:localhost:8800$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMT^Qe!wnriPzXkIMmdTNoJKU:localhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgT]Qe!wnriPzXkIMmdTNoJKU:localhost:8800$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sT\Qe!wnriPzXkIMmdTNoJKU:localhost:8800$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJET[Qe!wnriPzXkIMmdTNoJKU:localhost:8800$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8TZQe!wnriPzXkIMmdTNoJKU:localhost:8800$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsITYQe!wnriPzXkIMmdTNoJKU:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9ATXQe!wnriPzXkIMmdTNoJKU:localhost:8800$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cTWQe!jfshVGNDxkvqPxFxWB:localhost:8800$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzITVQe!jfshVGNDxkvqPxFxWB:localhost:8800$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508TUQe!jfshVGNDxkvqPxFxWB:localhost:8800$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4TTQe!jfshVGNDxkvqPxFxWB:localhost:8800$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kATSQe!jfshVGNDxkvqPxFxWB:localhost:8800$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygTRQe!jfshVGNDxkvqPxFxWB:localhost:8800$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQTQQe!jfshVGNDxkvqPxFxWB:localhost:8800$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUTPQe!jfshVGNDxkvqPxFxWB:localhost:8800$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wTOQe!jfshVGNDxkvqPxFxWB:localhost:8800$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMTNQe!jfshVGNDxkvqPxFxWB:localhost:8800$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1UTMQe!jfshVGNDxkvqPxFxWB:localhost:8800$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUTLQe!jfshVGNDxkvqPxFxWB:localhost:8800$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQTKQe!jfshVGNDxkvqPxFxWB:localhost:8800$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wTJQe!jfshVGNDxkvqPxFxWB:localhost:8800$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQTIQe!jfshVGNDxkvqPxFxWB:localhost:8800$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01sTHQe!jfshVGNDxkvqPxFxWB:localhost:8800$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQTGQe!jfshVGNDxkvqPxFxWB:localhost:8800$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfATFQe!jfshVGNDxkvqPxFxWB:localhost:8800$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9ETEQe!jfshVGNDxkvqPxFxWB:localhost:8800$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCoTDQe!jfshVGNDxkvqPxFxWB:localhost:8800$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_WgTCQe!jfshVGNDxkvqPxFxWB:localhost:8800$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaATBQe!jfshVGNDxkvqPxFxWB:localhost:8800$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYTAQe!jfshVGNDxkvqPxFxWB:localhost:8800$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYT@Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMT?Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYT>Qe!OaCEdDAiatpwYcagUb:localhost:8800$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQT=Qe!OaCEdDAiatpwYcagUb:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgT<Qe!OaCEdDAiatpwYcagUb:localhost:8800$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYT;Qe!OaCEdDAiatpwYcagUb:localhost:8800$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYT:Qe!OaCEdDAiatpwYcagUb:localhost:8800$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFET9Qe!OaCEdDAiatpwYcagUb:localhost:8800$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8  ygR<eQ_3$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 107, "stream_ordering": 189}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo"], "prev_events": ["$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE"], "type": "m.room.member", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-71:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-71", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-71:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040448768, "hashes": {"sha256": "r8OkTt2swXWhYrtnlUK7H7EOpnc25VBnbMiS6Ihh+4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jhJT/9+KaTWXs0/t21JizAGIYZWJEkkzug2oWfvmVdflvzU+Uk7ERgdXUtcKePsTr38kVhj1NdZUBM3JnQjCCQ"}}, "unsigned": {"age_ts": 1570040448768}}m;eQ/$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 188}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-72", "membership": "join"}, "depth": 8, "hashes": {"sha256": "8NGSijME38+y1Xctg/ZKP207GViqMO7xzHWUVQNT9NQ"}, "origin": "localhost:8829", "origin_server_ts": 1570040448409, "prev_events": ["$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE"], "prev_state": [], "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-72:localhost:8829", "state_key": "@anon-20191002_181700-72:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BbcJdiOR4L4/9P21EwWvBSuoCh8hHqwLqrVMpk+oJ2xHg0Ppl6Ekn28Ab2+KB/WdVQf1amgF6BYN0HtfXu6+Dw"}, "localhost:8829": {"ed25519:a_UxIG": "NBE/SbM3duNxn5qUcK4INge+qqMSb1CxgWGSynD776tWiqqj+P1Qm6Qc3Je0D4Uw+2plGC264gBv1Ca61a92Bg"}}, "unsigned": {"age": 94}}:eQ_I$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 187}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8"], "type": "m.room.aliases", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"aliases": ["#test-20191002_181700-1:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040447400, "hashes": {"sha256": "1fKOcaAhfRlXcGMipTaCUQAi0Uoye1gliXYseIOdAJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4sIHps7BJNkamV3/JzBWTmQ8RlBp+tiU3woniqR7lggm+VjNJzm5IYWWYj3lFbsJTYpGA6AxM3rjdvP8LskKDw"}}, "unsigned": {"age_ts": 1570040447400}}9eQ_$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "stream_ordering": 186}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo"], "type": "m.room.history_visibility", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040445158, "hashes": {"sha256": "R508JNgWsoSfopXxmBDN+aKBY0RPU0cIHHgP6WwpmOg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AH2i98S7oXNOr20RJ2wwAUHhnPIJ3rjAmI9H1IF4mI77cSqznrMx2+bVhQ7dy+Sjyxr9kzp0zAvr6psszuFpDw"}}, "unsigned": {"age_ts": 1570040445158}} =z 1 n %bT \B< e[[Q;$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4@anon-20191002_181700-92:localhost:8829@anon-20191002_181700-93:localhost:8800!EyEaTZElOkdURKbEXo:localhost:8800inviteanon-20191002_181700-92@; e[[Q;$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo@anon-20191002_181700-93:localhost:8800@anon-20191002_181700-93:localhost:8800!EyEaTZElOkdURKbEXo:localhost:8800joinanon-20191002_181700-93*: e[[Q$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0@anon-20191002_181700-90:localhost:8800@anon-20191002_181700-90:localhost:8800!TWETXUgfFZafDdbqLS:localhost:8800leaveB9 e[[Q;$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk@anon-20191002_181700-90:localhost:8800@anon-20191002_181700-91:localhost:8800!TWETXUgfFZafDdbqLS:localhost:8800inviteanon-20191002_181700-90@8 e[[Q;$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8@anon-20191002_181700-91:localhost:8800@anon-20191002_181700-91:localhost:8800!TWETXUgfFZafDdbqLS:localhost:8800joinanon-20191002_181700-91@7 e[[Q;$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ@anon-20191002_181700-89:localhost:8800@anon-20191002_181700-89:localhost:8800!HAFNBarGuVZuWCgwWM:localhost:8800joinanon-20191002_181700-89@6 e[[Q;$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY@anon-20191002_181700-87:localhost:8800@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800joinanon-20191002_181700-87B5 e[[Q;$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg@anon-20191002_181700-87:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800inviteanon-20191002_181700-87@4 e[[Q;$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:8800joinanon-20191002_181700-86@3 e[[Q;$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo@anon-20191002_181700-85:localhost:8800@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800joinanon-20191002_181700-85@2 e[[Q;$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM@anon-20191002_181700-84:localhost:8800@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800joinanon-20191002_181700-84@1 e[[Q;$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg@anon-20191002_181700-83:localhost:8800@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800joinanon-20191002_181700-83@0 e[[Q;$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg@anon-20191002_181700-82:localhost:8800@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800joinanon-20191002_181700-82@/ e[[Q;$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o@anon-20191002_181700-81:localhost:8800@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800joinanon-20191002_181700-81@. e[[Q;$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4@anon-20191002_181700-79:localhost:8800@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800joinanon-20191002_181700-79@- e[[Q;$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA@anon-20191002_181700-77:localhost:8800@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800joinanon-20191002_181700-77@, e[[Q;$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A@anon-20191002_181700-75:localhost:8800@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800joinanon-20191002_181700-75@+ e[[Q;$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM@anon-20191002_181700-74:localhost:8800@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800joinanon-20191002_181700-74@* e[[Q;$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg@anon-20191002_181700-71:localhost:8800@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800joinanon-20191002_181700-71@) e[[Q;$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY@anon-20191002_181700-72:localhost:8829@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800joinanon-20191002_181700-72 #et & R \  @Jr8`z0:eeSeQ/ $XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rulesjReQ9 $sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliasgQeQ3 $KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levelsPeQ'[$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800aOeQ' $R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800m.room.createpNeQ))$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800pMeQ))$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800pLeQ))$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800pKeQ))$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800mJeQ? $Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibilityeIeQ/ $m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rulesjHeQ9 $Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_aliasgGeQ3 $SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levelsFeQ'[$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800aEeQ' $ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.createpDeQ))$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800mCeQ? $as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibilityeBeQ/ $jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rulesgAeQ3 $-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levels@eQ'[$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800a?eQ' $Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800m.room.createp>eQ))$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800m=eQ? $PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibilitye<eQ/ $55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rulesj;eQ9 $vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_aliasg:eQ3 $d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels9eQ'[$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800a8eQ' $6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800m.room.createm7eQ? $cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibilitye6eQ/ $Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rulesg5eQ3 $24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels4eQ'[$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800a3eQ' $XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800m.room.create2eQ'[$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:88001eQ'[$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829 yN { P % H  gqFoDmB s'k@T) J  L ! u N # w<e:i> oDB*Q!EWkoFeckhXlNyjuIEB:localhost:*Q!DnUHoxreGexNmjSVpq:localhost:8800[*Q!DnUHoxreGexNmjSVpq:localhost:8800Z*Q!DnUHoxreGexNmjSVpq:localhost:8800Z*Q!DnUHoxreGexNmjSVpq:localhost:8800Y~*Q!DnUHoxreGexNmjSVpq:localhost:8800Y}*Q!DnUHoxreGexNmjSVpq:localhost:8800X|*Q!DnUHoxreGexNmjSVpq:localhost:8800X{*Q!DnUHoxreGexNmjSVpq:localhost:8800Wz*Q!DnUHoxreGexNmjSVpq:localhost:8800Vy*Q!DnUHoxreGexNmjSVpq:localhost:8800Ux*Q!CQKLQUpSYakhxVDltC:localhost:8800(**Q!CQKLQUpSYakhxVDltC:localhost:8800')*Q!CQKLQUpSYakhxVDltC:localhost:8800&(*Q!CQKLQUpSYakhxVDltC:localhost:8800%'*Q!CQKLQUpSYakhxVDltC:localhost:8800$&*Q!DnUHoxreGexNmjSVpq:localhost:8800\*Q!DnUHoxreGexNmjSVpq:localhost:8800[*Q!CQKLQUpSYakhxVDltC:localhost:8800)+*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!CkNvQnbApPIcuKygDk:localhost:8800Fi*Q!CkNvQnbApPIcuKygDk:localhost:8800Eh*Q!CkNvQnbApPIcuKygDk:localhost:8800Dg*Q!CkNvQnbApPIcuKygDk:localhost:8800Cf*Q!CkNvQnbApPIcuKygDk:localhost:8800Be*Q!CkNvQnbApPIcuKygDk:localhost:8800Ad*Q!CkNvQnbApPIcuKygDk:localhost:8800@c*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ *Q!CQKLQUpSYakhxVDltC:localhost:8800!#*Q!CQKLQUpSYakhxVDltC:localhost:8800 "*Q!CQKLQUpSYakhxVDltC:localhost:8800!*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!DelfBAGvCrTXgNxmNV:localhost:8800 a *Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` *Q!DelfBAGvCrTXgNxmNV:localhost:8800 ^ *Q!DelfBAGvCrTXgNxmNV:localhost:8800 g *Q!DelfBAGvCrTXgNxmNV:localhost:8800 f *Q!DelfBAGvCrTXgNxmNV:localhost:8800 e *Q!DelfBAGvCrTXgNxmNV:localhost:8800 d *Q!DelfBAGvCrTXgNxmNV:localhost:8800 c *Q!DelfBAGvCrTXgNxmNV:localhost:8800 b *Q!DnUHoxreGexNmjSVpq:localhost:8800Tw*Q!DnUHoxreGexNmjSVpq:localhost:8800Sv*Q!DnUHoxreGexNmjSVpq:localhost:8800Ru*Q!DnUHoxreGexNmjSVpq:localhost:8800Qt*Q!DnUHoxreGexNmjSVpq:localhost:8800Ps*Q!DnUHoxreGexNmjSVpq:localhost:8800OrR*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CQKLQUpSYakhxVDltC:localhost:8800#%*Q!CQKLQUpSYakhxVDltC:localhost:8800"$*Q!CkNvQnbApPIcuKygDk:localhost:8800?b*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 W8e: ! # P % w L s H  y N' Ri>qFoDmBk@ u J  }) {Tg<c 8*Q!EieRtaCFZJJCIOkRPp:localh*Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!BrssELMbasSzTFpIXm:localhost:8800RR*Q!DnUHoxreGexNmjSVpq:localhost:8800TT*Q!DnUHoxreGexNmjSVpq:localhost:8800SS*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!DnUHoxreGexNmjSVpq:localhost:8800VV*Q!DnUHoxreGexNmjSVpq:localhost:8800UU*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!CAGaRyRvrohDRBsrWH:localhost:8800*Q!DnUHoxreGexNmjSVpq:localhost:8800OO*Q!DelfBAGvCrTXgNxmNV:localhost:8800 g g*Q!DelfBAGvCrTXgNxmNV:localhost:8800 f f*Q!DelfBAGvCrTXgNxmNV:localhost:8800 e e*Q!DelfBAGvCrTXgNxmNV:localhost:8800 d d*Q!DelfBAGvCrTXgNxmNV:localhost:8800 c c*Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CQKLQUpSYakhxVDltC:localhost:8800))*Q!CQKLQUpSYakhxVDltC:localhost:8800((*Q!CQKLQUpSYakhxVDltC:localhost:8800''*Q!CQKLQUpSYakhxVDltC:localhost:8800&&*Q!CkNvQnbApPIcuKygDk:localhost:8800FF*Q!CkNvQnbApPIcuKygDk:localhost:8800EE*Q!CkNvQnbApPIcuKygDk:localhost:8800DD*Q!CkNvQnbApPIcuKygDk:localhost:8800CC*Q!CkNvQnbApPIcuKygDk:localhost:8800BB*Q!CkNvQnbApPIcuKygDk:localhost:8800AA*Q!CkNvQnbApPIcuKygDk:localhost:8800@@*Q!CkNvQnbApPIcuKygDk:localhost:8800??*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800*Q!CgVBWWcRJoHEcwoLcq:localhost:8800  *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!CSqENqzAezaZnGktbE:localhost:8800 *Q!DnUHoxreGexNmjSVpq:localhost:8800PP*Q!CQKLQUpSYakhxVDltC:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CNFopUEQTFbzjmLvii:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CGckPHdSYcIocFvRAq:localhost:8800*Q!CQKLQUpSYakhxVDltC:localhost:8800""*Q!CQKLQUpSYakhxVDltC:localhost:8800!!*Q!CQKLQUpSYakhxVDltC:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!CKNftKKCaOCVUyYWNY:localhost:8800  *Q!DelfBAGvCrTXgNxmNV:localhost:8800 _ _V*Q!CQKLQUpSYakhxVDltC:localhost:8800$$*Q!CQKLQUpSYakhxVDltC:localhost:8800##*Q!CQKLQUpSYakhxVDltC:localhost:8800%%*Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DSFBpkqfnvBQbGoMUK:localhost:8800 *Q!DelfBAGvCrTXgNxmNV:localhost:8800 a a*Q!DelfBAGvCrTXgNxmNV:localhost:8800 ` `*Q!DelfBAGvCrTXgNxmNV:localhost:8800 ^ ^*Q!DelfBAGvCrTXgNxmNV:localhost:8800 b b*Q!DnUHoxreGexNmjSVpq:localhost:8800RR*Q!DnUHoxreGexNmjSVpq:localhost:8800QQ+ -RM H C > 9 4/*|%w rmhc TeQe!IGVHKYcSuxzVPlFHlj:localhost:8800$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsTdQe!IGVHKYcSuxzVPlFHlj:localhost:8800$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UTcQe!IGVHKYcSuxzVPlFHlj:localhost:8800$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcTbQe!IGVHKYcSuxzVPlFHlj:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgTaQe!IGVHKYcSuxzVPlFHlj:localhost:8800$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYT`Qe!xhbvqJDfxMSsZPqvld:localhost:8800$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYT_Qe!xhbvqJDfxMSsZPqvld:localhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5YT^Qe!xhbvqJDfxMSsZPqvld:localhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAT]Qe!xhbvqJDfxMSsZPqvld:localhost:8800$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6oT\Qe!xhbvqJDfxMSsZPqvld:localhost:8800$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5MT[Qe!xhbvqJDfxMSsZPqvld:localhost:8800$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4TZQe!xhbvqJDfxMSsZPqvld:localhost:8800$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wTYQe!xhbvqJDfxMSsZPqvld:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8oTXQe!xhbvqJDfxMSsZPqvld:localhost:8800$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUTWQe!AWfbViAZparIjmDaVT:localhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3poTVQe!AWfbViAZparIjmDaVT:localhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5YknkTUQe!AWfbViAZparIjmDaVT:localhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8TTQe!OSHhtkGUjpUCkXwIhj:localhost:8800$TChcbvxgUyPUybeHMi0Q0-C2AdPwC0BNACooTs5ZPmsTSQe!OSHhtkGUjpUCkXwIhj:localhost:8800$mFqN6ZQmnheRDWnDa9-KZgWEyNrbvnGGVcQ7dEPlkAITRQe!OSHhtkGUjpUCkXwIhj:localhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0sTQQe!OSHhtkGUjpUCkXwIhj:localhost:8800$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHITPQe!OSHhtkGUjpUCkXwIhj:localhost:8800$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0TOQe!OSHhtkGUjpUCkXwIhj:localhost:8800$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwTNQe!OSHhtkGUjpUCkXwIhj:localhost:8800$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMTMQe!OSHhtkGUjpUCkXwIhj:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4TLQe!OSHhtkGUjpUCkXwIhj:localhost:8800$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UTKQe!AWfbViAZparIjmDaVT:localhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPETJQe!AWfbViAZparIjmDaVT:localhost:8800$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgTIQe!AWfbViAZparIjmDaVT:localhost:8800$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YTHQe!AWfbViAZparIjmDaVT:localhost:8800$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5MTGQe!AWfbViAZparIjmDaVT:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqATFQe!AWfbViAZparIjmDaVT:localhost:8800$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYTEQe!wnriPzXkIMmdTNoJKU:localhost:8800$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgTDQe!wnriPzXkIMmdTNoJKU:localhost:8800$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sTCQe!wnriPzXkIMmdTNoJKU:localhost:8800$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJETBQe!wnriPzXkIMmdTNoJKU:localhost:8800$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8TAQe!wnriPzXkIMmdTNoJKU:localhost:8800$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIT@Qe!wnriPzXkIMmdTNoJKU:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9AT?Qe!wnriPzXkIMmdTNoJKU:localhost:8800$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cT>Qe!jfshVGNDxkvqPxFxWB:localhost:8800$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAT=Qe!jfshVGNDxkvqPxFxWB:localhost:8800$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYT<Qe!jfshVGNDxkvqPxFxWB:localhost:8800$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYT;Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMT:Qe!jfshVGNDxkvqPxFxWB:localhost:8800$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYT9Qe!OaCEdDAiatpwYcagUb:localhost:8800$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ f 2 Hfh@eQ__$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 193}{"auth_events": ["$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "type": "m.room.power_levels", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"users": {"@anon-20191002_181700-74:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040454303, "hashes": {"sha256": "ZoIWMpFkfzHUYpuT6p/g1HuFxP+N4GMuUPAhvapkqrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sfcGfeRdXEhfN+FTW0R/kCaugrAOkrTVg0d2+/2uwlb3iJ0DjMIct103/nDE+wdC6vmGKe1bTukd8YSO1n6zBQ"}}, "unsigned": {"age_ts": 1570040454303}}r?eQ_s$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 192}{"auth_events": ["$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY"], "prev_events": ["$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY"], "type": "m.room.member", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-74", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-74:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040453807, "hashes": {"sha256": "zH6XBJzKYHY/aXaDIiHeWyWn/a4u7N4e2bQNfI0YK0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W9nZlcznaI7HS+dK4IeWY3WS9bQrFRwELY+lMsDDoWY1n2NdFqC1sSNa/zEmBLtbBArDgmEvT87R9HtQlizqDQ"}}, "unsigned": {"age_ts": 1570040453807}}f>eQ_[$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 191}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-74:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040453200, "hashes": {"sha256": "x+UqHD+TrkgpqXj51RtJA43CsMW5mn0z9vU+5bAqlFs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "keANHXEVpCOJ0BGtkYnEvfkIGc5kZAYt2DB/4I9yHisv3OjxXmOxWBitAppYLmxQKNNgUxTtn9aeZUjrqq01BA"}}, "unsigned": {"age_ts": 1570040453200}}J=eQ}$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ!OaCEdDAiatpwYcagUb:localhost:8800{"token_id": 106, "txn_id": "2", "stream_ordering": 190}{"auth_events": ["$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E", "$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM", "$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4"], "prev_events": ["$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY", "$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg"], "type": "m.room.message", "room_id": "!OaCEdDAiatpwYcagUb:localhost:8800", "sender": "@anon-20191002_181700-70:localhost:8800", "content": {"msgtype": "m.message", "body": "Room message for 33room-messages"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040450403, "hashes": {"sha256": "736MuZFQxb0IgliIJ4xFYwHNyI1/SnpWPLf2CkOtgQ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wuI3pGfjSKhFPFx+lEkPcV0jlTpHWGdald6Bi7CMWr0tYWY2tCHzmRyWxi7blPeoHlLt/aWtopnP+x70c+0ZBQ"}}, "unsigned": {"age_ts": 1570040450403}} IEtM& c <  y R +  xP(`8X0h@`8rJ"Z4 l 0  p l DH \4 (&O$157004188397MRiZP:localhost:8800&O$157004261099UmKia:localhost:8800&O$157004183365ZxPWz:localhost:8800O&O$157004183264ktTbL:localhost:8800N'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800'Q$1570042654147iSsjl:localhost:8800'Q$1570042653146dGCce:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042648142spuws:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800'Q$1570042644136OugnY:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042640133wGmrF:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042636129shBTe:localhost:8800'Q$1570042635128KJCvL:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042634126YmPkp:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800'Q$1570042616106fkZGL:localhost:8800'Q$1570042614104FELge:localhost:8800&O$157004183366iKFsz:localhost:8800P'Q$1570042632124bMwzE:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042630122bUTeO:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042626116pKAbp:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042622113mtzjt:localhost:8800'Q$1570042619109qhpUv:localhost:8800&O$157004188296OVWxu:localhost:8800&O$157004188195thBOS:localhost:8800&O$157004188194vdqBG:localhost:8800&O$157004188093UtRbN:localhost:8800~&O$157004187992XwpoQ:localhost:8800}&O$157004187089FLOwV:localhost:8800u&O$157004186988RkcKb:localhost:8800t&O$157004186887sKbQU:localhost:8800s&O$157004186786RVgKA:localhost:8800r&O$157004186785fjAIs:localhost:8800q&O$157004185982diSTq:localhost:8800j&O$157004185881ahRFW:localhost:8800i&O$157004185780kUwpq:localhost:8800h&O$157004185679NNCIw:localhost:8800g&O$157004185678lyJsT:localhost:8800f&O$157004184875Wzayo:localhost:8800_&O$157004184774CHMNl:localhost:8800^&O$157004184773rCaRK:localhost:8800]&O$157004184672SfwvS:localhost:8800\&O$157004184571IVgQM:localhost:8800[&O$157004183868QRvOi:localhost:8800U&O$157004183467WkNdH:localhost:8800T'Q$1570042611101IffRu:localhost:8800'Q$1570042620111taWCG:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042611100ueDzK:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800 I}V/lE E  [ 4 q J_8tL$\4 lD8`pH Z 2 l|T,jBtL$\4 'Q$1570042635128KJCvL:localhost:8800 &O$157004184672SfwvS:localhost:8800[&O$157004183969fQFzs:localhost:8800U&O$157004183868QRvOi:localhost:8800T&O$157004183467WkNdH:localhost:8800P&O$157004183366iKFsz:localhost:8800O&O$157004183365ZxPWz:localhost:8800N&O$157004183264ktTbL:localhost:8800M&O$157004183063NdEPw:localhost:8800L&O$157004182060gAdxi:localhost:8800B&O$157004181959Afmmv:localhost:8800A&O$157004181958ixShg:localhost:8800@'Q$1570042629120wtVFY:localhost:8800'Q$1570042628119fxxBA:localhost:8800'Q$1570042627118OLFSV:localhost:8800'Q$1570042626117sfUAQ:localhost:8800'Q$1570042624115nZtIB:localhost:8800'Q$1570042623114pBHTz:localhost:8800'Q$1570042622113mtzjt:localhost:8800'Q$1570042621112AUAFX:localhost:8800'Q$1570042620111taWCG:localhost:8800'Q$1570042619110gZfPB:localhost:8800'Q$1570042619109qhpUv:localhost:8800'Q$1570042618108WWxoQ:localhost:8800'Q$1570042617107cANtu:localhost:8800'Q$1570042615105OKfnm:localhost:8800'Q$1570042614104FELge:localhost:8800'Q$1570042613103AHxGt:localhost:8800'Q$1570042612102sQZCG:localhost:8800'Q$1570042611101IffRu:localhost:8800'Q$1570042611100ueDzK:localhost:8800&O$157004188598DcHDt:localhost:8800&O$157004188397MRiZP:localhost:8800&O$157004188194vdqBG:localhost:8800~&O$157004188093UtRbN:localhost:8800}&O$157004188296OVWxu:localhost:8800&O$157004188195thBOS:localhost:8800&O$157004187190ZLRgN:localhost:8800u&O$157004187089FLOwV:localhost:8800t&O$157004186988RkcKb:localhost:8800s&O$157004186887sKbQU:localhost:8800r&O$157004186786RVgKA:localhost:8800q&O$157004185983tEalY:localhost:8800j&O$157004185982diSTq:localhost:8800i&O$157004185881ahRFW:localhost:8800h&O$157004185780kUwpq:localhost:8800g&O$157004185679NNCIw:localhost:8800f&O$157004184976eGgUf:localhost:8800_&O$157004184875Wzayo:localhost:8800^&O$157004184774CHMNl:localhost:8800]&O$157004184773rCaRK:localhost:8800\'Q$1570042651145wBynt:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042648142spuws:localhost:8800'Q$1570042648141xSHQB:localhost:8800'Q$1570042647140rNeEf:localhost:8800'Q$1570042646139VXLYO:localhost:8800'Q$1570042646138YEunv:localhost:8800'Q$1570042645137fBnPZ:localhost:8800'Q$1570042642135oMfQy:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042640133wGmrF:localhost:8800'Q$1570042639132zhjjB:localhost:8800'Q$1570042638131kazZm:localhost:8800'Q$1570042637130zlkqP:localhost:8800'Q$1570042629121nZoNG:localhost:8800'Q$1570042630122bUTeO:localhost:8800'Q$1570042631123SLyGA:localhost:8800'Q$1570042632124bMwzE:localhost:8800'Q$1570042634127eDBry:localhost:8800'Q$1570042632125lwdOR:localhost:8800'Q$1570042636129shBTe:localhost:8800(  2 d/adm[!av@anon-20191002_181700-84:localhost:8800YUGLTPPJENMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3Cgdl[!au@anon-20191002_181700-85:localhost:8800ITOHGGKZTVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCgdk[!at@anon-20191002_181700-83:localhost:8800STLQYGHMSUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCgdj[!as@anon-20191002_181700-82:localhost:8800JESTYYWXIOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECgdi[!ar@anon-20191002_181700-81:localhost:8800CWYDKHHDSEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCgdh[!aq@anon-20191002_181700-80:localhost:8800YTTBSSDSAFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCgdg[!ap@anon-20191002_181700-79:localhost:8800EJTCNAZVHDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCgdf[!ao@anon-20191002_181700-77:localhost:8800FSPHKPOXWNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCgde[!an@anon-20191002_181700-75:localhost:8800RNMICKNMBMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCgdd[!am@anon-20191002_181700-74:localhost:8800SVXLVPCWLXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCgdc[!al@anon-20191002_181700-73:localhost:8800XAYBGVYWKCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8Cg Q0h6n< tj8p> v D  | J  P  V $u \ *bBzaI1i7o= C1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk#1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds m1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds l1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I=1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I<1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I;1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w^1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w]1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w\1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1$2:localhost:424551$2:localhost:424553$29:localhost:424553$29:localhost:424553$29:localhost:424551e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYs1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nYr1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo 1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo 1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k@1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw,1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw+1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw*1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo 1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo 1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo 1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQt1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQs1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo;1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo:1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo91e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k 1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k 1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k 1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU x1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU w1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU v1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo(1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI 6^c,OO5xA[ O s ^ # M  M  v ?  ;B^Q']!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800^Q']!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800OBQ? !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibilityN:Q/ !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rulesM<Q3 !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levelsL^Q']!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800K6Q' !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.createJBQ? !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility:Q/ !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rules<Q3 !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels^Q']!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800 6Q' !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create HQ'1!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800:Q/ !EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rulesBQ? !EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility<Q3 !EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_access6Q' !EieRtaCFZJJCIOkRPp:localhost:8800m.room.create<Q3 !EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels^Q']!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800:Q/ !EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rulesBQ? !EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility6Q' !EfJcWhdjNARbuHYrqU:localhost:8800m.room.create<Q3 !EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels^Q']!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800^Q']!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800:Q/ !EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rulesBQ? !EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibility^Q']!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800PHQ'1!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800U:Q/ !FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rulesRBQ? !FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibilityS<Q3 !FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_accessT6Q' !FIOuvzpMhoERunVYYA:localhost:8800m.room.createO<Q3 !FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels^Q']!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800:Q/ !FAYqpziHeVZugCGaij:localhost:8800m.room.join_rules BQ? !FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibility 6Q' !FAYqpziHeVZugCGaij:localhost:8800m.room.create?Q9 !FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_aliasEQ))!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800 9Q- !EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstone<Q3 !EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels^Q']!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800:Q/ !EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rulesBQ? !EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility6Q' !EyyNoldCLUdFHzXTDP:localhost:8800m.room.create <Q3 !EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levels]Q'[!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-93:localhost:8800]Q'[!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829:Q/ !EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rulesBQ? !EyEaTZElOkdURKbEXo:localhost:8800m.room.history_visibility<Q3 !EyEaTZElOkdURKbEXo:localhost:8800m.room.guest_access6Q' !EyEaTZElOkdURKbEXo:localhost:8800m.room.create<Q3 !EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels  xDeQ}$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "4", "stream_ordering": 197}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040456992, "hashes": {"sha256": "v2c54IbCFTTHDmPBnf70CpNcNc6ZWT9Z4QkzEtgkWDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xN9nnjweM2nqIhckmUtek4s/PR/WD7hMr0RxuCa33a6/MfkvRzl/2Ja5e3c7E4WiazWWfHuOPS64eR0vOBcODQ"}}, "unsigned": {"age_ts": 1570040456992}}CeQ}$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "3", "stream_ordering": 196}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040456486, "hashes": {"sha256": "ZzEWvJVlKpBIK0DQkO8yRL56S69pe1izO+vt8+PrzdY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fp5KJKDLCLuc/FhU59z+dugVqWGc6p/+Mua35ypg1CdGGxyIqzDMuBw/sCFfNJlSNLC9U2u0ZsjnqK0kqwUOBA"}}, "unsigned": {"age_ts": 1570040456486}}BeQ_$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 195}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY"], "type": "m.room.history_visibility", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040455602, "hashes": {"sha256": "C0M81kC8UQowRWYfKZ2B2T4ueFM6ebg5BtSL2SOr98U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s/bMnD0qN0327zDiZLFjgMJf6gG4Dm28QpRlCXVa8I7Ajjrme8Ji7qM7KWWu6eisaaQDXvhXR7oq6qociGtaAg"}}, "unsigned": {"age_ts": 1570040455602}}rAeQ_s$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "stream_ordering": 194}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY"], "type": "m.room.join_rules", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040454901, "hashes": {"sha256": "RukMG3Esp9mPv4hM1AQDUhdlprRNWuupA5vJJmPn8Kg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q9Xw3+g019+rjB+6E1iZSkR5y6U7Zt6Ijf/bsIZtIdQqDXtRrY8x/04o2x94r3Z5Fc7hZT98VJTIB6KyF9DoBA"}}, "unsigned": {"age_ts": 1570040454901}} Y b  v . BVj"~9Ye'Q [$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Am.room.member!wnriPzXkIMmdTNoJKU:localhost:8800mKmL@anon-20191002_181700-75:localhost:8800X e'Q  [$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6cm.room.create!wnriPzXkIMmdTNoJKU:localhost:8800mIDmI@anon-20191002_181700-75:localhost:8800 We)Q [$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzIm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800mDmD@anon-20191002_181700-74:localhost:8800 Ve)Q [$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508m.room.message!jfshVGNDxkvqPxFxWB:localhost:8800mCmC@anon-20191002_181700-74:localhost:8800 Ue)Q [$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4m.room.message!jfshVGNDxkvqPxFxWB:localhost:8800mB>mBG@anon-20191002_181700-74:localhost:8800 Te)Q [$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kAm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m@m@@anon-20191002_181700-74:localhost:8800 Se)Q [$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m>m>@anon-20191002_181700-74:localhost:8800 Re)Q [$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m=Cm=I@anon-20191002_181700-74:localhost:8800 Qe)Q [$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m;m;@anon-20191002_181700-74:localhost:8800 Pe)Q [$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m:m:@anon-20191002_181700-74:localhost:8800 Oe)Q [$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m6m6@anon-20191002_181700-74:localhost:8800 Ne)Q [$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1Um.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m5bm5j@anon-20191002_181700-74:localhost:8800 Me)Q [$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m3]m3c@anon-20191002_181700-74:localhost:8800 Le)Q [$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m1m1@anon-20191002_181700-74:localhost:8800 Ke)Q [ $HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m0om0u@anon-20191002_181700-74:localhost:8800 Je)Q [ $NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m/ m/@anon-20191002_181700-74:localhost:8800 Ie)Q [ $AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01sm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m-am-k@anon-20191002_181700-74:localhost:8800 He)Q [ $QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m+m+@anon-20191002_181700-74:localhost:8800 Ge)Q [ $sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfAm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800 m*Ym*`@anon-20191002_181700-74:localhost:8800 Fe)Q [$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9Em.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m(~m(@anon-20191002_181700-74:localhost:8800 Ee)Q [$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCom.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m' m'&@anon-20191002_181700-74:localhost:8800 De)Q [$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wgm.room.message!jfshVGNDxkvqPxFxWB:localhost:8800m%&m%@anon-20191002_181700-74:localhost:8800+Ce?Q [$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAm.room.history_visibility!jfshVGNDxkvqPxFxWB:localhost:8800m!m#u@anon-20191002_181700-74:localhost:8800#Be/Q [$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYm.room.join_rules!jfshVGNDxkvqPxFxWB:localhost:8800mm@anon-20191002_181700-74:localhost:8800 Vo M + xVF[a!E@anon-20191002_181700-84:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3CgYUGLTPPJEN127.0.0.1Perl + Net::Async::HTTP/0.44mqE[a!E@anon-20191002_181700-83:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCgSTLQYGHMSU127.0.0.1Perl + Net::Async::HTTP/0.44m ;D[a!E@anon-20191002_181700-82:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECgJESTYYWXIO127.0.0.1Perl + Net::Async::HTTP/0.44mC[a!E@anon-20191002_181700-81:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCgCWYDKHHDSE127.0.0.1Perl + Net::Async::HTTP/0.44m:B[a!E@anon-20191002_181700-80:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCgYTTBSSDSAF127.0.0.1Perl + Net::Async::HTTP/0.44mA[a!E@anon-20191002_181700-79:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCgEJTCNAZVHD127.0.0.1Perl + Net::Async::HTTP/0.44m@[a!E@anon-20191002_181700-77:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCgFSPHKPOXWN127.0.0.1Perl + Net::Async::HTTP/0.44m&?[a!E@anon-20191002_181700-75:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCgRNMICKNMBM127.0.0.1Perl + Net::Async::HTTP/0.44mHm>[a!E@anon-20191002_181700-74:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCgSVXLVPCWLX127.0.0.1Perl + Net::Async::HTTP/0.44m=[a!E@anon-20191002_181700-73:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8CgXAYBGVYWKC127.0.0.1Perl + Net::Async::HTTP/0.44m a} { y w u sqomkigeca~eeQ$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~eeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~ eeQ$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~~eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~}eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800~|eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800~{eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~zeeQ$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800~yeeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800~xeeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800~weeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800  u^HeQ}$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "8", "stream_ordering": 201}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040458593, "hashes": {"sha256": "oqOXYWyanh44nuTekTW9w9Yp9KZK2Lw/XXHqI7NzSG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M1ZuJWZQuWwGRfGITaoQNAOaj0K6cJj6TSbmrp3HrPKHu1O+I8XkV3gJ9DCvUHwU/77CHotpkIwkgH1jBXK0Dw"}}, "unsigned": {"age_ts": 1570040458593}}GeQ}$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "7", "stream_ordering": 200}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040458226, "hashes": {"sha256": "XU2u1mUgpsfr2iRMhCgE5W6LpebSCwUdRvOIDX8X5Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NUoHsZ/QXBqeWScqyr249N9g90hluxb8/JVe80Rbmsmln1lbgcNTniBAPAlhvdVIWs75lw44tGWrK68OPyKZBQ"}}, "unsigned": {"age_ts": 1570040458226}}FeQ}$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "6", "stream_ordering": 199}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040457817, "hashes": {"sha256": "o9ghYuj9FwDAdFh18F5lnqmDzu+P3opBrKFGF5RF3Y0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sXUulpCyhfvpk7gJ2U801gs4OOQ0UZsyUciQ/Q1iDwzE62me93RTZ5ywosXB9UBTvggm6PdOAgSda8hklK5GCw"}}, "unsigned": {"age_ts": 1570040457817}}EeQ}$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "5", "stream_ordering": 198}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040457342, "hashes": {"sha256": "1XFek5rpxySfUVoeqzAmEq9yi8n4cPqGjcmFzv1i86o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LSzL+rI54Vq4RoZM8r0Yiyd2dZOVxMxXIo5u4grH5EVl4WodLxTNSqbGNsV14ekjhDaCUkAJ2imE1zkXSQ1lCw"}}, "unsigned": {"age_ts": 1570040457342}} V( H  p xP(X0pH xP@h H `8X`8p0h@  x P ( X  p H 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CQKLQUpSYakhxVDltC:localhost:8800!'Q!CQKLQUpSYakhxVDltC:localhost:8800 'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800''Q!CQKLQUpSYakhxVDltC:localhost:8800&'Q!CQKLQUpSYakhxVDltC:localhost:8800%'Q!CQKLQUpSYakhxVDltC:localhost:8800$'Q!CQKLQUpSYakhxVDltC:localhost:8800#'Q!CQKLQUpSYakhxVDltC:localhost:8800"'Q!CkNvQnbApPIcuKygDk:localhost:88007'Q!CkNvQnbApPIcuKygDk:localhost:88006'Q!CkNvQnbApPIcuKygDk:localhost:88005'Q!CkNvQnbApPIcuKygDk:localhost:88004'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CQKLQUpSYakhxVDltC:localhost:8800('Q!DelfBAGvCrTXgNxmNV:localhost:8800 Z'Q!DelfBAGvCrTXgNxmNV:localhost:8800 Y'Q!DelfBAGvCrTXgNxmNV:localhost:8800 X'Q!DelfBAGvCrTXgNxmNV:localhost:8800 W'Q!DelfBAGvCrTXgNxmNV:localhost:8800 V'Q!DelfBAGvCrTXgNxmNV:localhost:8800 U'Q!DelfBAGvCrTXgNxmNV:localhost:8800 T'Q!DelfBAGvCrTXgNxmNV:localhost:8800 S'Q!CkNvQnbApPIcuKygDk:localhost:8800;'Q!CkNvQnbApPIcuKygDk:localhost:8800:'Q!CkNvQnbApPIcuKygDk:localhost:88009'Q!CkNvQnbApPIcuKygDk:localhost:88008'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800H x'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800J'Q!DnUHoxreGexNmjSVpq:localhost:8800I'Q!DnUHoxreGexNmjSVpq:localhost:8800G'Q!DnUHoxreGexNmjSVpq:localhost:8800D'Q!DelfBAGvCrTXgNxmNV:localhost:8800 \'Q!DelfBAGvCrTXgNxmNV:localhost:8800 [@'Q!DnUHoxreGexNmjSVpq:localhost:8800L'Q!DnUHoxreGexNmjSVpq:localhost:8800K'Q!CgVBWWcRJoHEcwoLcq:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CSqENqzAezaZnGktbE:localhost:8800 'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800 'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 x'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 w'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 u'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 t'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 s'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 r'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 q'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 p'Q!DnUHoxreGexNmjSVpq:localhost:8800F'Q!DnUHoxreGexNmjSVpq:localhost:8800E  tZ LeQ$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "12", "stream_ordering": 205}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040460125, "hashes": {"sha256": "yVaQmBtr5wbCCGR8KdUaGdVLzNPbuNCQZFWw9oduEsg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q6e2xiQikn2bu5wdlp572+bVB2XMQajaOQB8E5foCU4/ULPPe9F9smkFfgrGvlOQyj4U5vZhGoBzJHNB833DBQ"}}, "unsigned": {"age_ts": 1570040460125}} KeQ$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "11", "stream_ordering": 204}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040459743, "hashes": {"sha256": "LNvymlF0ryYewlcG1P525FkVEuo0zXYhYKDFDIgtFv4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6PcY32ePCXml5PlZfXEqwyPhq/M+Ty4t0psiW7CsA2cZWDFltKNONYr7gtA18nBsxEEdUVXKeHulsWBsFrvqDw"}}, "unsigned": {"age_ts": 1570040459743}} JeQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "10", "stream_ordering": 203}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040459375, "hashes": {"sha256": "5raDdKDDyej+aOE0BVbhrxJKF43qMmKRSM9zLaw/ID8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3gqSDa+COOld9pcjEmxtXMTxa1SEwS2B0KKXTfwp9zrRW7b+5V45avQcUMBv5JxccVIdBLhvJwnS6GVLw40/CA"}}, "unsigned": {"age_ts": 1570040459375}}IeQ}$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "9", "stream_ordering": 202}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040459017, "hashes": {"sha256": "kkAR+yPqVmT3D5EVoL8XXEPXBxr6wnxBeMeF5taGmTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ae+B/nwY1obVhxNKMAgxJK2q5wn1CS0N8kYtrRhpo46UhIZ/Tu00wfo3CoS0IwpDaLvTRawjl8KVFOQjnQ1FDg"}}, "unsigned": {"age_ts": 1570040459017}} $X?a"D f  ; ] 4V{62XnQQQ$1570043195269hcCzg:localhost:8800$1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 nQQQ$1570043192266CXqej:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 nQQQ$1570043151259knbjg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 ynQQQ$1570043154263raEaa:localhost:8800$1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 }nQQQ$1570043153262hRyOa:localhost:8800$1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 |nQQQ$1570043152261Skczg:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 {nQQQ$1570043152260dkyqc:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 znQQQ$1570042725233SjCnf:localhost:8800$1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042725232UzIHq:localhost:8800$1570042724231dYSEq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042724231dYSEq:localhost:8800$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570043194268zlNeZ:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 nQQQ$1570043193267ZyDyW:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 lOOQ$157004274411xArrT:localhost:8829$157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800 lMQQ$15700427439Hwxyi:localhost:8829$1570042742256IYRor:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 kOMQ$157004274310jCQYA:localhost:8829$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042742256IYRor:localhost:8800$1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042742255yQzPA:localhost:8800$1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042741254DKIYz:localhost:8800$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042740253GkWgu:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042739252bWghU:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 nQQQ$1570042738251iukAg:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800 lMQQ$15700427368TlZQs:localhost:8829$1570042735248drnws:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042735248drnws:localhost:8800$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042734247SfTxR:localhost:8800$1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042733246cYViL:localhost:8800$1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042733245smHTZ:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042732244zDmQh:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042731243YuOkC:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800 nQQQ$1570042729241UUSiz:localhost:8800$1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800 nQQQ$1570042729240aBRvS:localhost:8800$1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800 nQQQ$1570042728239BMOBm:localhost:8800$1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042728238dtqIB:localhost:8800$1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042727237iUlYB:localhost:8800$1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042727236AOaiE:localhost:8800$1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042726235bahBo:localhost:8800$1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800nQQQ$1570042726234miteq:localhost:8800$1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800  rV PeQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "16", "stream_ordering": 209}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 14"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040462310, "hashes": {"sha256": "2E/NnrjRzx/jM5qQptihywPHwlMYlDTbhugCHmNtgh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TFYMUiWqkARfg5QrRkvixXmmstFAJaQ+XHtVXFMyESjOWuRMjtq4PNlfD64UTcHHysn0PIdU1aIzI7puVNV3BQ"}}, "unsigned": {"age_ts": 1570040462310}} OeQ$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "15", "stream_ordering": 208}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 13", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040461951, "hashes": {"sha256": "CfvfITYRRz7xXm2JfTpDXJPMLGIwtpCXQ5mIkDPCgnU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vx2pkbVS9Nh8f6rrjJNYrUGMArRI7MVfLyQ+GAmABtvpu0RHXskC8dGrsYXl/AaXhqOjQ4N/YWWGTJHL78+DBA"}}, "unsigned": {"age_ts": 1570040461951}} NeQ$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "14", "stream_ordering": 207}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 12", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040461043, "hashes": {"sha256": "0EUncMcMpDAhg4w8U6cTTOUHyD0CscetF09cQf4G0mI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x20MuObM/Wg6hkfDUz55K+c4PjR2DoVu/4piTUcOeE54peBY04llIe1Nmm+gritBMc9Y392mOZjfQMKqMs93Cw"}}, "unsigned": {"age_ts": 1570040461043}} MeQ$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "13", "stream_ordering": 206}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 11", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040460642, "hashes": {"sha256": "JZTa8zg6dmVW5kh3BM9Z8lwLI5IohTVpRnG9Wo3DyB0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Iqdg7Ra6kbtsn6Z0wz8SW25kDUB3pqiFt0etR/o8ZBk7ZLlakSWSZU3VeWwYXwFeL8XtopB3MGqF5IqERnzCw"}}, "unsigned": {"age_ts": 1570040460642}}  rV TeQ$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "20", "stream_ordering": 213}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 18", "msgtype": "m.text"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040463934, "hashes": {"sha256": "M9dhcSHYts98R9KU0akaEFXrvvpgu0RxwggHsO8PQRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SUCQm+k7SCaGb6f3SCUzsaeJMkoRcbPAqQcmJHJ8ypiNk3pwbtZu7GLCfV0V1GcSevnDi98zmTbQz29vc/YzBQ"}}, "unsigned": {"age_ts": 1570040463934}} SeQ$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "19", "stream_ordering": 212}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 17", "msgtype": "m.text"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040463551, "hashes": {"sha256": "qbMY2Oc4Nz9Gb9EmbJs+Oor7twa9SNJwjUVNHpz+oOg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YfAd9wVobPef1fSyCAiFl7+VfgkW/my1sSaikLlW4ZB9OrgvSWthe0pw4asZBNQHPf/zhxXAIizYVAmeA7GZCA"}}, "unsigned": {"age_ts": 1570040463551}} ReQ$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "18", "stream_ordering": 211}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 16", "msgtype": "m.text"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040463034, "hashes": {"sha256": "ssdahguGKgP/lf2U75ZCladGps9flfbKje+qfHt0Hsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0wtOgK0MLd+ITYroYkztZTygo4vU6FEJUaXue7Hb73XRGy1t+fnleyJeTou8aOpX533aK2KXsqjwofkmu1aMBQ"}}, "unsigned": {"age_ts": 1570040463034}} QeQ$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "17", "stream_ordering": 210}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 15"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040462659, "hashes": {"sha256": "I73AYnaa/QiuRbOzJeDlH87vX0+vO6RMRojbZNJoeU4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nDrTggisDdYh5aOfKwWOhDnbhjc+ixogqmHEaSHNzUI70TitmaNHM8jxjQ5TmFbBRn+zrJlfNFuXTa+XCR+HDA"}}, "unsigned": {"age_ts": 1570040462659}} "]': > B A J d~ %>Vn*C]q"eQ%-$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 3q!eQ%-$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 2q eQ%-$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 1reQ%/$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 20reQ%/$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 19reQ%/$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 18reQ%/$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 17reQ%/$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 16reQ%/$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 15reQ%/$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 14reQ%/$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 13reQ%/$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 12reQ%/$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 11reQ%/$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 10qeQ%-$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 9qeQ%-$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 8qeQ%-$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 7qeQ%-$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 6qeQ%-$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 5qeQ%-$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 4qeQ%-$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 3q eQ%-$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 2q eQ%-$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800content.bodyMessage number 1 eQ%M$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ!OaCEdDAiatpwYcagUb:localhost:8800content.bodyRoom message for 33room-messages eQ'I$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800content.topicTesting topic for the new room| eQ%C$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk!NhWgOTYzEPRwAxRQvS:localhost:8800content.bodyHere is the message content|eQ%C$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY!scyFsXcUIJiLIMwWMY:localhost:8800content.bodyHere is the message content|eQ%C$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs!aWJOsiuJONOvjKWEjO:localhost:8800content.bodyHere is the message content|eQ%C$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU!BDASLhdcKfNwxCTCSg:localhost:8800content.bodyHere is the message content|eQ%C$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY!xwoIOPTGmJIlTXakxC:localhost:8800content.bodyHere is the message contentzeQ'=$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0!sPWVGnipjiiWQpywNO:localhost:8800content.topicA new topic for the roomoeQ%)$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:8800content.nameroom name herekeQ'$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800content.topicTest RoomjeQ%$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800content.nameTest Room  sY deQ$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "29", "stream_ordering": 229}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040473252, "hashes": {"sha256": "RPS9oYVZxZtt38Dt72Pc/BGkOJvzhwSHrYQhxvLQ5kY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fyrzIwe8KvRn3ObxR53Pge3jiRghl9qOwA0dxagsD8DQ6DWPa6LFAYxeksZ+YIJ+tlc0aEXffYt9VnJPYUbsBg"}}, "unsigned": {"age_ts": 1570040473252}} ceQ$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "28", "stream_ordering": 228}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040472902, "hashes": {"sha256": "HesJVSV0wVRlfSDH3y2aufsFc86q5Em9Ev8lnEs44IQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pZ7UyEFbfoNUcgcweaQF/+grvPbOpvcuBYDMHx+9oGs0cCFJMVtEhqtL7vrImIxovSWtAMJFXku4NgLIB0t2AQ"}}, "unsigned": {"age_ts": 1570040472902}} beQ$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "27", "stream_ordering": 227}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040472493, "hashes": {"sha256": "A6ag9+pSMjJQZs06FUPhJ0HKSBTpn/vFyB6TSRPGe0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PwDHk2OVe0tq4AmLCAXyP7+1gYu6/f9cAOu8uRb3VPVJhvshhfFmxhy8u1R6tpnWZLtvJ2soLFZCNoAJ4yJXCg"}}, "unsigned": {"age_ts": 1570040472493}} aeQ$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "26", "stream_ordering": 226}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040471725, "hashes": {"sha256": "JtMFLX1avTN5npGFZWVCZDkD0hMRSD6PKdV02UxsN6s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0xTY1W5MRXdw4LTRfo39m4Ih2IIo0jyMXMOKbl4PRDcke73iHfkAXs7xtBMsKifMdYD2rnaTM5PKMtJtlIZsCg"}}, "unsigned": {"age_ts": 1570040471725}}  rrXeQ_s$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 217}{"auth_events": ["$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c"], "prev_events": ["$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c"], "type": "m.room.member", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-75", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-75:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040466340, "hashes": {"sha256": "1PlO5/EVzEyzsOkIanVEahHKez3cdrP9ea/xZPsvC7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zkMQuRMmSz3ZYyRoKaTn/4J846XjWY6GRXdFPiBNnmWVdVaX6AzYt3Kbm1VCjlWfsa/qgM0UIP2DYXb813vKDQ"}}, "unsigned": {"age_ts": 1570040466340}}fWeQ_[$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 216}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-75:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040465732, "hashes": {"sha256": "ctCIZ+HoLNhuWgfVEkSiyWIgsWJkXhyn6JN7LV26Dn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GInJjqSSz7znU1KdzmxjgCfcTKd34rhNBAorQ8smuJnMjLMgHo5FHMJ3giWJYCaGJq7p2CBK2vaNZEyHg1BPCg"}}, "unsigned": {"age_ts": 1570040465732}} VeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "22", "stream_ordering": 215}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 20"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040464626, "hashes": {"sha256": "Lkf1NxUg0CsL0kJRLe5yDTJdAeHwAMzabQOpr9RL5Rg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kG+9cCngtkECeUEicEAAdaWoChmb0OUWXrSdF3vkX1wS0YznIpwyT8//IIvGbAfOsB8Mhq8vF67AGUkvgNclDQ"}}, "unsigned": {"age_ts": 1570040464626}} UeQ$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800{"token_id": 109, "txn_id": "21", "stream_ordering": 214}{"auth_events": ["$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY", "$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY", "$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM"], "prev_events": ["$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4"], "type": "m.room.message", "room_id": "!jfshVGNDxkvqPxFxWB:localhost:8800", "sender": "@anon-20191002_181700-74:localhost:8800", "content": {"body": "Message number 19", "msgtype": "m.text"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040464268, "hashes": {"sha256": "cbTV+6wFNJyCG8rttBb3c5Wik6A6MqpdZtt+DKvkXP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1mKx0MFjfxavlVRW3y6YUpeb1dDTQ/fPMspFA76GOREA4uNmiYsfV4LEcbTuZEIsUWVvMIIN9U6P8rkTKUHDAg"}}, "unsigned": {"age_ts": 1570040464268}} 3LY* p A  V ) q B  W ( l = R#g8 |Mb5yJawHs2vGD3/.Q$1570042718224MBWNJ:localhost:8800sha256 s.Q$1570042723230DFoyn:localhost:8800sha256 .Q$1570042722229ehxUl:localhost:8800sha256 .Q$1570042722228QkARL:localhost:8800sha256 .Q$1570042721227mhNwo:localhost:8800sha256 .Q$1570042720226wSTBF:localhost:8800sha256 .Q$1570042719225dSNgP:localhost:8800sha256 r.Q$1570042727237iUlYB:localhost:8800sha256 .Q$1570042727236AOaiE:localhost:8800sha256 .Q$1570042726235bahBo:localhost:8800sha256 .Q$1570042726234miteq:localhost:8800sha256 ,M$15700427177BOUHn:localhost:8829sha256 .Q$1570042716222nflqt:localhost:8800sha256 .Q$1570042715221Amlxc:localhost:8800sha256 .Q$1570042714220vWWFN:localhost:8800sha256 .Q$1570042713219HcQXL:localhost:8800sha256 .Q$1570042712218KQzXb:localhost:8800sha256 .Q$1570042712217nuYrc:localhost:8800sha256 .Q$1570042711216KdEEo:localhost:8800sha256 .Q$1570042710215aaRza:localhost:8800sha256 .Q$1570042709214PwhVu:localhost:8800sha256 ,M$15700427086bDrAU:localhost:8829sha256 .Q$1570042707212LkSAM:localhost:8800sha256 .Q$1570042706211NniIl:localhost:8800sha256 .Q$1570042705210LweYn:localhost:8800sha256 .Q$1570042704209JQwmT:localhost:8800sha256 .Q$1570042704208yLiWU:localhost:8800sha256 .Q$1570042703207yqsGA:localhost:8800sha256 .Q$1570042702206BIYsS:localhost:8800sha256 .Q$1570042701205bxgOX:localhost:8800sha256 .Q$1570042700204CxVfq:localhost:8800sha256 .Q$1570042699203fHFjU:localhost:8800sha256 .Q$1570042698202juBqr:localhost:8800sha256 .Q$1570042698201kDowV:localhost:8800sha256 .Q$1570042697200mrENr:localhost:8800sha256 .Q$1570042697199ROUNP:localhost:8800sha256 .Q$1570042696198qbnxj:localhost:8800sha256 .Q$1570042695197vezoL:localhost:8800sha256 .Q$1570042694196OHsWc:localhost:8800sha256 .Q$1570042693195hNKnU:localhost:8800sha256 .Q$1570042692194rxboZ:localhost:8800sha256 .Q$1570042691193uVdPZ:localhost:8800sha256 .Q$1570042691192yNWVM:localhost:8800sha256 .Q$1570042690191yQfnl:localhost:8800sha256 .Q$1570042689190UkvMv:localhost:8800sha256 .Q$1570042688189axPjv:localhost:8800sha256 .Q$1570042687188ddQmS:localhost:8800sha256 .Q$1570042687187gbArC:localhost:8800sha256 .Q$1570042686186Qxqmn:localhost:8800sha256 .Q$1570042685185RhcXe:localhost:8800sha256 .Q$1570042683184TpChh:localhost:8800sha256 .Q$1570042682183iUUXF:localhost:8800sha256 .Q$1570042681182ZiRRU:localhost:8800sha256 .Q$1570042680181TFyrx:localhost:8800sha256 .Q$1570042680180uuIxG:localhost:8800sha256 .Q$1570042679179ZJCqE:localhost:8800sha256 .Q$1570042678178HSUoI:localhost:8800sha256 ,M$15700426765pydev:localhost:8829sha256 ,M$15700426764DoRhm:localhost:8829sha256 ,M$15700426753WBESe:localhost:8829sha256 .Q$1570042675176WKRiz:localhost:8800sha256 .Q$1570042674175gurnU:localhost:8800sha256 .Q$1570042673174OxGuP:localhost:8800sha256 .Q$1570042672173XsxsH:localhost:8800sha256 .Q$1570042672172vPvbe:localhost:8800sha256 .Q$1570042671171AQZaz:localhost:8800sha256 .Q$1570042670170TtDpX:localhost:8800sha256 ,M$15700426692GLpqH:localhost:8829sha256 .Q$1570042668168uCbYK:localhost:8800sha256 .Q$1570042667167mhSmJ:localhost:8800sha256 .Q$1570042666166IBpPy:localhost:8800sha256 .Q$1570042666165HDkhp:localhost:8800sha256 .Q$1570042665164nYKmj:localhost:8800sha256 .Q$1570042725233SjCnf:localhost:8800sha256 .Q$1570042725232UzIHq:localhost:8800sha256 .Q$1570042724231dYSEq:localhost:8800sha256 ~z v r n j fb^ZVRNJFWeeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800VeeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800UeeQ$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800TeeQ$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800SeeQ$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800ReeQ$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800QeeQ$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800PeeQ$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800OeeQ$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800NeeQ$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800MeeQ$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800LeeQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800KeeQ$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800JeeQ$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800IeeQ$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800HeeQ$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800GeeQ$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800FeeQ$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800EeeQ$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800DeeQ$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800CeeQ$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc!wnriPzXkIMmdTNoJKU:localhost:8800BeeQ$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800AeeQ$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800@eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800?eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800>eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800=eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800<eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800;eeQ$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800:eeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508!jfshVGNDxkvqPxFxWB:localhost:8800  \eQ_$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 221}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE"], "type": "m.room.history_visibility", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040468595, "hashes": {"sha256": "dsTlnQb6FhDjrvopc0oKUUPzs+OT4ZeJLXqlXCMcRrc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yS/Oaa0D/jBrWsDIG2RK0iDruxrr7m3KK9iardlbFYOtBRXRUzR4GeDwEqWjrsJRPuqZuxsb+JWnrmX8r/tLAg"}}, "unsigned": {"age_ts": 1570040468595}}r[eQ_s$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 220}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8"], "type": "m.room.join_rules", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040468035, "hashes": {"sha256": "CRPkGTn7Tz8KnWGEBFOBOLprVza7LjrGgQ3TA82muVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+ny3qRr9PMR75LJFWBO41b9W9H6D4d1ffiAfDH/ZIu3ucpDi/5rermUDyJ86/hUu+zZ+1IUbjUgaIYEbLPd1AQ"}}, "unsigned": {"age_ts": 1570040468035}}ZeQ_5$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 219}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI"], "type": "m.room.canonical_alias", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"alias": "#test-20191002_181700-2:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040467453, "hashes": {"sha256": "Tl+rEObN5CS+CNEq4yMMCOLAIry7AhK8ArhR4kjalds"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jTPT7A8X9mScDBLYxppkdlzhu57lJX5XSA26GDD+CTBbIEFnymtF5vhNeu5xMB83c94Ku3e65miHHN5GiYDODA"}}, "unsigned": {"age_ts": 1570040467453}}hYeQ__$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 218}{"auth_events": ["$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "type": "m.room.power_levels", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"users": {"@anon-20191002_181700-75:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040466804, "hashes": {"sha256": "yplSCvp31uVuBUz0Bv24v1ET4TSVG2omg3XdHYz2EC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+b7mszAjJjfi7tT7Y/1R4pnVU1Z6GeZACmez3EaVCAgiIem7XijMmj6hNskJnCz2WN4ht7GYen67gbh/rUeNDw"}}, "unsigned": {"age_ts": 1570040466804}} W U i ! }5I]q) qe)Q [$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0m.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mm@anon-20191002_181700-75:localhost:8800 pe)Q [$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tREm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800m@mE@anon-20191002_181700-75:localhost:8800 oe)Q [$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0sm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800m|m|@anon-20191002_181700-75:localhost:8800 ne)Q [$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFYm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mwmw@anon-20191002_181700-75:localhost:8800 me)Q [$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTcm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mu!mu*@anon-20191002_181700-75:localhost:8800 le)Q [$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIYm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mrmr @anon-20191002_181700-75:localhost:8800 ke)Q [$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mpWmpd@anon-20191002_181700-75:localhost:8800 je)Q [$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4m.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mnmn@anon-20191002_181700-75:localhost:8800 ie)Q [$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mom.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mmXmmb@anon-20191002_181700-75:localhost:8800 he)Q [$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gwm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mkmk@anon-20191002_181700-75:localhost:8800 ge)Q [$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNYm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mj!mj*@anon-20191002_181700-75:localhost:8800 fe)Q [$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4m.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mhmh@anon-20191002_181700-75:localhost:8800 ee)Q [$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARwm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mfmf@anon-20191002_181700-75:localhost:8800 de)Q [ $YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBcm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 meFmeO@anon-20191002_181700-75:localhost:8800 ce)Q [ $f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkUm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 mcmc@anon-20191002_181700-75:localhost:8800 be)Q [ $ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_nom.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 m`m`@anon-20191002_181700-75:localhost:8800 ae)Q [ $NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTEm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 m^m^@anon-20191002_181700-75:localhost:8800 `e)Q [ $eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800 m]m]b@anon-20191002_181700-75:localhost:8800 _e)Q [$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMm.room.message!wnriPzXkIMmdTNoJKU:localhost:8800mZ8mZ=@anon-20191002_181700-75:localhost:8800 ^e)Q [$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wgm.room.aliases!wnriPzXkIMmdTNoJKU:localhost:8800mWmXo@anon-20191002_181700-75:localhost:8800+]e?Q [$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_sm.room.history_visibility!wnriPzXkIMmdTNoJKU:localhost:8800mTsmU@anon-20191002_181700-75:localhost:8800#\e/Q [$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEm.room.join_rules!wnriPzXkIMmdTNoJKU:localhost:8800mRCmS@anon-20191002_181700-75:localhost:8800([e9Q [$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8m.room.canonical_alias!wnriPzXkIMmdTNoJKU:localhost:8800mOmP@anon-20191002_181700-75:localhost:8800%Ze3Q [$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIm.room.power_levels!wnriPzXkIMmdTNoJKU:localhost:8800mMtmNv@anon-20191002_181700-75:localhost:8800  _G `eQ$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "25", "stream_ordering": 225}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040471260, "hashes": {"sha256": "uiJaq9gDaMXr0OwOTpeiq2AxkBOCPlW+NtSm7xT76RU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KKqTR/xyKP+br9qlGXHndF+OfKZzixgm/uW6zTuspa2ie38F2bXksJIkJoh9xXtJi3srCNSQ2G0CzeiW6xKVBg"}}, "unsigned": {"age_ts": 1570040471260}}_eQ$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "24", "stream_ordering": 224}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040470784, "hashes": {"sha256": "kJ0MdPuQHRP9HRDgIf8yalu+jvGkNmEw6cP3IHGcrRA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GCtN7Tbcei2zGC/n0k8cY8JBp5zp40bK8nDLogr3qKFlSk2X18Qj+G5TlL2Os46tdtZRHhJtHJHxu2B9OHgDQ"}}, "unsigned": {"age_ts": 1570040470784}}^eQ$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "23", "stream_ordering": 223}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040470072, "hashes": {"sha256": "+ZDvEEgwwaGJngrON29xcfUQgE90vOGHewATg5AN+FU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i/QEN38l8EuLMETdLo9WQDFLFBtLR08vf/64SAWtagzy6KPhB2ugTKycob3b+GMrLoCRQDWp0eBb7U2SIqRMDA"}}, "unsigned": {"age_ts": 1570040470072}}]eQ_I$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "stream_ordering": 222}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s"], "type": "m.room.aliases", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"aliases": ["#test-20191002_181700-2:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040469435, "hashes": {"sha256": "+I/k8nmDxkZqPc1AxMnSYCxg5lnzLh+tlN3KI0GYWKA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0cHcZ5M0DSGJTXbst9qmHBwTu/vqbIYSfarfKHwlA4ew72UEJHIhyHtqvaGUBZlH/8+kC+JvhlGUh6BCJx/PCg"}}, "unsigned": {"age_ts": 1570040469435}} "4 N f ~ " :Vtg(B\urDeQ%/$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 12rCeQ%/$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 11rBeQ%/$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 10qAeQ%-$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 9q@eQ%-$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 8q?eQ%-$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 7q>eQ%-$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 6q=eQ%-$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 5q<eQ%-$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 4q;eQ%-$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 3q:eQ%-$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 2q9eQ%-$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 1q8eQ%-$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:8800content.bodyMessage number 0~7eQ%G$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800content.bodyRoom message for 90jira-SYT-1 6eQ']$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800content.topicHere I can set the topic at powerlevel 0p5eQ%+$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800content.nameA new room namen4eQ%'$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800content.nameThe room namen3eQ%'$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800content.nameThe room namer2eQ%/$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 19r1eQ%/$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 18r0eQ%/$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 17r/eQ%/$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 16r.eQ%/$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 15r-eQ%/$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 14r,eQ%/$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 13r+eQ%/$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 12r*eQ%/$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 11r)eQ%/$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 10q(eQ%-$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 9q'eQ%-$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 8q&eQ%-$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 7q%eQ%-$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 6q$eQ%-$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 5q#eQ%-$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800content.bodyMessage number 4 ,NC 8 - { " p  e ZOD9.|#qf V eL$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcsha256D-H'Ccט޳͗V eL$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgsha256io8N7>SΣ8>m $ oV}eL$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0ssha25699.gGTR1SDE_KV|eL$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIsha256cOqhաVbڡ[3LrV{eL$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0sha256IdBY։PbI}"I FVzeL$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwsha256xIϛ_EA VyeL$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMsha256HέٵUhbdN4mx[ 5OsVxeL$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4sha256 [2|eQ=3Ӊx*-e!z.VweL$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9Usha2562&σ Z2&pf7ŧjEs䣣VveL$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEsha256ؾsq $}%lm"`VueL$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgsha256j'Ui!{uc՛`t<gv8VteL$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Ysha256"9+|M_tKizUe6pQVseL$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5Msha256_rGGIzӇ6+^vHz  u_LeQw$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "324", "stream_ordering": 2007}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 30", "msgtype": "m.text"}, "depth": 40, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042227342, "hashes": {"sha256": "HjxXA4kHbIJ0/OnX1UAXyCz1HMuezFJ0wyWQ/C63wCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NNuznY5NNO1SgwZNbKzSIim8tkuQOuE4dmp0NCMss6IXc6HnZNkHOj9cMYGeLmaY2f4BTKbBjhqdLQ0KTkiqCA"}}, "unsigned": {"age_ts": 1570042227342}}KeQw$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "323", "stream_ordering": 2006}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 29"}, "depth": 39, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042226705, "hashes": {"sha256": "sdSqdc/0hfIE+/4YD9Rc9CXGmSL+bhFq1ooADO7JPng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZOuNkBIVG/kle0ZZ253CYByF7a2DqLBKeVh6QcmcvLkbVJ8Q+ljSuwzyJyeRj/BaeNolpmBotIodAsUOaD/IAg"}}, "unsigned": {"age_ts": 1570042226705}}JeQw$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "322", "stream_ordering": 2005}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 28", "msgtype": "m.text"}, "depth": 38, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042226197, "hashes": {"sha256": "UdwwkcIS5n72ZhLJ4voxJk8j4Os/wo/yC3PGAnbeYNA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z95HfIfqAEaK4+5AfXVtfmpW5g+GwLtq8SQp6+N1towdnGm1ZHTzBHhNDBtrB4oZwv9qJjDX/lUpIz7kXveKDg"}}, "unsigned": {"age_ts": 1570042226197}}IeQw$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "321", "stream_ordering": 2004}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 27"}, "depth": 37, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042225689, "hashes": {"sha256": "kfxpKlGqimpMkWWoGAR+ali6IjhAId2A+BHOd9UdTGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WhktcGcwVNCl0+sMW0lyTUJ0090nTZYgtgumLIaF+/X3h7UdQ9L5ZpRrRbHn34qKTpxXJ1M5+PUQVqKtL7DAAA"}}, "unsigned": {"age_ts": 1570042225689}} H i> u J  s H qk@mBFoDT)}R' { P % y N # w L !  >g<e:iq*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!EfJcWhdjNARbuHYrqU:localhost:8800^c*Q!EfJcWhdjNARbuHYrqU:localhost:8800]b*Q!EfJcWhdjNARbuHYrqU:localhost:8800\a*Q!EfJcWhdjNARbuHYrqU:localhost:8800[`*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ;*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 :*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 9*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 8*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 7*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 6*Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800 *Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyyNoldCLUdFHzXTDP:localhost:8800 *Q!EyEaTZElOkdURKbEXo:localhost:8800==*Q!EyEaTZElOkdURKbEXo:localhost:8800<<*Q!EyEaTZElOkdURKbEXo:localhost:8800;;*Q!EyEaTZElOkdURKbEXo:localhost:8800::*Q!EyEaTZElOkdURKbEXo:localhost:880099*Q!EyEaTZElOkdURKbEXo:localhost:880088*Q!EyEaTZElOkdURKbEXo:localhost:880077*Q!EyEaTZElOkdURKbEXo:localhost:880066*Q!EieRtaCFZJJCIOkRPp:localhost:8800uy*Q!EieRtaCFZJJCIOkRPp:localhost:8800tx*Q!EieRtaCFZJJCIOkRPp:localhost:8800sw*Q!EieRtaCFZJJCIOkRPp:localhost:8800rv*Q!EieRtaCFZJJCIOkRPp:localhost:8800qu*Q!EieRtaCFZJJCIOkRPp:localhost:8800pt*Q!EieRtaCFZJJCIOkRPp:localhost:8800os*Q!EieRtaCFZJJCIOkRPp:localhost:8800nr*Q!EieRtaCFZJJCIOkRPp:localhost:8800mq*Q!EieRtaCFZJJCIOkRPp:localhost:8800lp*Q!EieRtaCFZJJCIOkRPp:localhost:8800ko*Q!EfJcWhdjNARbuHYrqU:localhost:8800af*Q!EfJcWhdjNARbuHYrqU:localhost:8800`e*Q!EfJcWhdjNARbuHYrqU:localhost:8800_d -RM H C > 9 4/*|%w rmhc TQe!IGVHKYcSuxzVPlFHlj:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsTQe!IGVHKYcSuxzVPlFHlj:localhost:8800$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UT Qe !IGVHKYcSuxzVPlFHlj:localhost:8800$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcT Qe !IGVHKYcSuxzVPlFHlj:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgT Qe !IGVHKYcSuxzVPlFHlj:localhost:8800$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYT Qe !xhbvqJDfxMSsZPqvld:localhost:8800$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYT Qe !xhbvqJDfxMSsZPqvld:localhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5YTQe!xhbvqJDfxMSsZPqvld:localhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UATQe!xhbvqJDfxMSsZPqvld:localhost:8800$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6oTQe!xhbvqJDfxMSsZPqvld:localhost:8800$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5MTQe!xhbvqJDfxMSsZPqvld:localhost:8800$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4TQe!xhbvqJDfxMSsZPqvld:localhost:8800$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wTQe!xhbvqJDfxMSsZPqvld:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8oTQe!xhbvqJDfxMSsZPqvld:localhost:8800$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUTQe!AWfbViAZparIjmDaVT:localhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3poTQe!AWfbViAZparIjmDaVT:localhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5YknkTQe!AWfbViAZparIjmDaVT:localhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8T~Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0sT}Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIT|Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0T{Qe!OSHhtkGUjpUCkXwIhj:localhost:8800$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwTzQe!OSHhtkGUjpUCkXwIhj:localhost:8800$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMTyQe!OSHhtkGUjpUCkXwIhj:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4TxQe!OSHhtkGUjpUCkXwIhj:localhost:8800$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9UTwQe!AWfbViAZparIjmDaVT:localhost:8800$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPETvQe!AWfbViAZparIjmDaVT:localhost:8800$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgTuQe!AWfbViAZparIjmDaVT:localhost:8800$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_YTtQe!AWfbViAZparIjmDaVT:localhost:8800$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5MTsQe!AWfbViAZparIjmDaVT:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqATrQe!AWfbViAZparIjmDaVT:localhost:8800$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYTqQe!wnriPzXkIMmdTNoJKU:localhost:8800$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0TpQe!wnriPzXkIMmdTNoJKU:localhost:8800$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tREToQe!wnriPzXkIMmdTNoJKU:localhost:8800$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0sTnQe!wnriPzXkIMmdTNoJKU:localhost:8800$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFYTmQe!wnriPzXkIMmdTNoJKU:localhost:8800$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTcTlQe!wnriPzXkIMmdTNoJKU:localhost:8800$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIYTkQe!wnriPzXkIMmdTNoJKU:localhost:8800$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQTjQe!wnriPzXkIMmdTNoJKU:localhost:8800$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4TiQe!wnriPzXkIMmdTNoJKU:localhost:8800$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5MoThQe!wnriPzXkIMmdTNoJKU:localhost:8800$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22GwTgQe!wnriPzXkIMmdTNoJKU:localhost:8800$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNYTfQe!wnriPzXkIMmdTNoJKU:localhost:8800$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4  sX heQ$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "33", "stream_ordering": 233}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 11"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040474968, "hashes": {"sha256": "xmf1QO2C40KylZKX1nMc61quV9VVlFzPhmOxyJKVT0g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZktLC/ERAzgHVlW5TaXb6kM2ZQY1YRDQX2Luc7FtQ6DnreQ6oJ36lo37f87nlcr5t8gZ0eziHuBsG84/kl8sBg"}}, "unsigned": {"age_ts": 1570040474968}} geQ$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "32", "stream_ordering": 232}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 10"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040474594, "hashes": {"sha256": "kH7TlZFafb2iL6TfygvR6bBeI2kfghfVqdbn58a/Gn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UAGV/dybmOnG41jbAJUkAgvPB+fWIIcytYjI0JDCSxBSDIy0rfvZ8TMDUr+GCOo5QidQityBTdCFyKvvXaVgCg"}}, "unsigned": {"age_ts": 1570040474594}} feQ$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "31", "stream_ordering": 231}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040474145, "hashes": {"sha256": "glquuj1iUj+t2CHimWj9leFjY92YrFJAMqLwQbsV8Ek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HojfmIzCfBYJpDW+/C8fNlea0QdcI6sS+pO45GiU+Ip4odxhEPhBJEVlpRp21nJ6qYFF+NXg/lDOlK+KAflbDA"}}, "unsigned": {"age_ts": 1570040474145}} eeQ$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "30", "stream_ordering": 230}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 8"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040473618, "hashes": {"sha256": "AYpj1+wVlmWmcar706wP8w2NbJtShIpw3phraGMp4hI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nDBWs1Ip3/NUJ0RrODVckk2CNyq8P9JpTWxaXCmnbzHzz5Q5AoeQRtgjeOgYwo31tv1iNHSyKgqGrefw4rRyAw"}}, "unsigned": {"age_ts": 1570040473618}}  rV leQ$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "37", "stream_ordering": 237}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 15", "msgtype": "m.text"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040476961, "hashes": {"sha256": "Uy0kaADxDXyOojP4Bh7R7OTM8Xkv04Uc2dfzLSRXl+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MPKlpss2tHVXEqXfxSI2ws12bRAKt7omQkVV5L+pt8bQYo2OnUbnMKq+hZWzqYVAiq+XCDzciQGCYF9ey9vcAQ"}}, "unsigned": {"age_ts": 1570040476961}} keQ$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "36", "stream_ordering": 236}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 14"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040476185, "hashes": {"sha256": "q1adRLG5VqzGW6BDhnqnd1qoKrfxSRa3Oglzkp3xHPM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5nOwL1UP0mAwB+M7Dgdu0o/rVVCQ1gEp9zDki/TWktZHU+48/oQz8ZZriU1HO04fam3tBmtl1Jqz2a3nZiIhAw"}}, "unsigned": {"age_ts": 1570040476185}} jeQ$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "35", "stream_ordering": 235}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 13", "msgtype": "m.text"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040475735, "hashes": {"sha256": "f1Qg3xxq58zZeCO7MLwOC5+xT1XCivH9Vl7PqzSoaLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mzjb102MEJIe10vgXySBS1eNBHdFGfyri8GjKPV20BrOmr+VLkWASJcAP7OyDNnkNWi3gDRTk+d9NVNB1w1tBw"}}, "unsigned": {"age_ts": 1570040475735}} ieQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "34", "stream_ordering": 234}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 12", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040475320, "hashes": {"sha256": "afv9hQDpEthG39BsSQjuDfuaJ994q2JZwoeGVsj11rg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EeIfQz44peTTdBugfU27/InLFl2acAaQTfUMCsxtIP4hY9s5W/54jzfheS1UJwRa8rsWAyBjJ74/pBzZQwetCg"}}, "unsigned": {"age_ts": 1570040475320}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,13e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk 12e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo 11e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU 10e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY 1/e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201.e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK81-e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc1,e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1+e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1*e$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw1)e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ1(e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1'e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1&e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1%e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1$e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1#e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1"e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1!e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1 e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1 e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1 e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1 e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1 e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1 e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1~e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81}e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1|e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1{e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01ze$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1ye$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1xe$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41we$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1ve$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1ue$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1te$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1se$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M1re$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1qe$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1pe$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01oe$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1ne$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1me$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1le$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1ke$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1je$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1ie$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4  rV peQ$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "41", "stream_ordering": 241}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"body": "Message number 19", "msgtype": "m.text"}, "depth": 26, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040479953, "hashes": {"sha256": "bhhsNr64Ni+s+5dlb/51sdW5Dp4mFm6aaKcoScZuXaQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/flQ8b6MxFA/5yEXr+4km5hGKWVmyqxisw9SlrzL9sHAkDMzLcPwkHYnj2nFxbZIPTQ0UQXWgaZef2EtaHb3Dw"}}, "unsigned": {"age_ts": 1570040479953}} oeQ$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "40", "stream_ordering": 240}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 18"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040479552, "hashes": {"sha256": "QWwpe8mipNXv97tTTWUJydZh+Ny2zE2TRVsa67m0JSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XRhAEqFOaUg3C6fdmLPctxj1rSyMShu9xNAHUrb2OKaSAg9pmmrlBInT1Czs3SC/0VlgPXfLTT4Tj5cvGhFGCg"}}, "unsigned": {"age_ts": 1570040479552}} neQ$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "39", "stream_ordering": 239}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 17"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040478860, "hashes": {"sha256": "f8MZ9NqvJhjeLUTriq+GmcJaKr4KpjC1UdmGOhbLXIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WqbsUTYfZAzozYF05nG+j0hExMWZBi/z+cX6EE5FhfVPAuf24XTT6T7tXsDp5NMWU9Y3hI/qNloTogIIx8RTAg"}}, "unsigned": {"age_ts": 1570040478860}} meQ$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800{"token_id": 110, "txn_id": "38", "stream_ordering": 238}{"auth_events": ["$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI", "$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c", "$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A"], "prev_events": ["$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc"], "type": "m.room.message", "room_id": "!wnriPzXkIMmdTNoJKU:localhost:8800", "sender": "@anon-20191002_181700-75:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 16"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040477602, "hashes": {"sha256": "t5fW/TfNb9w8H+R5h9sxDXs1X4n43z4od8CLo2LYOGw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KseyDkdIHCvkBsSORr3yZXFqGj0oY5ObijMxcWkR8B9ZrcutUyOra111nRqZcZVqhbOQlep32xIgytKX337Cg"}}, "unsigned": {"age_ts": 1570040477602}} =_ w_G/lA)UiQ9!% >'Z- y L  l ?  [ /  w I  c 7 Q#m?Y+uGYk=ocalhost:=.1@36:localhost:88001@35:localhost:8800Y7q@_astest-01create-0-20191002_181700:localhost:880007@admin:localhost:8800U1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:88001@29:localhost:88001@28:localhost:88001@27:localhost:88001@26:localhost:88001@25:localhost:88001@24:localhost:88001@23:localhost:88001@22:localhost:8800.1@21:localhost:88001@20:localhost:88001@19:localhost:88001@18:localhost:88001@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:88001@13:localhost:88001@12:localhost:88001@11:localhost:8800-]@anon-20191002_181700-154:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-152:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-150:localhost:8800+[@anon-20191002_181700-14:localhost:8800"-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-140:localhost:8800+[@anon-20191002_181700-13:localhost:8800 -]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-131:localhost:8800-]@anon-20191002_181700-130:localhost:8800+[@anon-20191002_181700-12:localhost:8800!-]@anon-20191002_181700-129:localhost:8800-]@anon-20191002_181700-128:localhost:8800-]@anon-20191002_181700-127:localhost:8800-]@anon-20191002_181700-126:localhost:8800-]@anon-20191002_181700-125:localhost:8800-]@anon-20191002_181700-124:localhost:8800-]@anon-20191002_181700-123:localhost:8800-]@anon-20191002_181700-122:localhost:8800-]@anon-20191002_181700-121:localhost:8800-]@anon-20191002_181700-120:localhost:8800+[@anon-20191002_181700-11:localhost:8800-]@anon-20191002_181700-119:localhost:8800-]@anon-20191002_181700-118:localhost:8800-]@anon-20191002_181700-117:localhost:8800,]@anon-20191002_181700-116:localhost:8800,]@anon-20191002_181700-115:localhost:8800~,]@anon-20191002_181700-114:localhost:8800},]@anon-20191002_181700-113:localhost:8800|,]@anon-20191002_181700-112:localhost:8800{,]@anon-20191002_181700-110:localhost:8800z+[@anon-20191002_181700-10:localhost:8800,]@anon-20191002_181700-109:localhost:8800y,]@anon-20191002_181700-108:localhost:8800x,]@anon-20191002_181700-107:localhost:8800w,]@anon-20191002_181700-106:localhost:8800v,]@anon-20191002_181700-104:localhost:8800u,]@anon-20191002_181700-103:localhost:8800s,]@anon-20191002_181700-102:localhost:8800t,]@anon-20191002_181700-101:localhost:8800q,]@anon-20191002_181700-100:localhost:8800r/@9:localhost:8800/@8:localhost:8800/@7:localhost:8800/@6:localhost:8800/@5:localhost:8800/@4:localhost:8800/@3:localhost:8800/@2:localhost:8800/@1:localhost:88001@10:localhost:8800/@0:localhost:8800>;@02login:localhost:88002k @01register-user-20191002_181700:localhost:8800 K3}O!vHd6 R $ l >  Z , t F  e 7 Q#m?Y+uGai; W)-]@anon-20191002_181700-164:localhost:8800-]@anon-20191002_181700-163:localhost:8800-]@anon-20191002_181700-162:localhost:8800-]@anon-20191002_181700-161:localhost:8800-]@anon-20191002_181700-160:localhost:8800+[@anon-20191002_181700-15:localhost:8800#-]@anon-20191002_181700-159:localhost:8800-]@anon-20191002_181700-158:localhost:8800-]@anon-20191002_181700-157:localhost:8800-]@anon-20191002_181700-156:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-225:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-223:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-221:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800)-]@anon-20191002_181700-219:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800+[@anon-20191002_181700-20:localhost:8800(-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800*Y@anon-20191002_181700-1:localhost:8800+[@anon-20191002_181700-19:localhost:8800'-]@anon-20191002_181700-199:localhost:8800-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-196:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800+[@anon-20191002_181700-18:localhost:8800&-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800+[@anon-20191002_181700-17:localhost:8800%-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800$-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-168:localhost:8800-]@anon-20191002_181700-167:localhost:8800-]@anon-20191002_181700-165:localhost:8800 =_ w_G/lA)UiQ9!% >'Z- y L  l ?  [ /  w I  c 7 Q#m?Y+uGYk=ocalhost:=.1@36:localhost:88001@35:localhost:8800Y7q@_astest-01create-0-20191002_181700:localhost:880007@admin:localhost:8800U1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:88001@29:localhost:88001@28:localhost:88001@27:localhost:88001@26:localhost:88001@25:localhost:88001@24:localhost:88001@23:localhost:88001@22:localhost:8800.1@21:localhost:88001@20:localhost:88001@19:localhost:88001@18:localhost:88001@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:88001@13:localhost:88001@12:localhost:88001@11:localhost:8800-]@anon-20191002_181700-154:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-152:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-150:localhost:8800+[@anon-20191002_181700-14:localhost:8800"-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-140:localhost:8800+[@anon-20191002_181700-13:localhost:8800 -]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-131:localhost:8800-]@anon-20191002_181700-130:localhost:8800+[@anon-20191002_181700-12:localhost:8800!-]@anon-20191002_181700-129:localhost:8800-]@anon-20191002_181700-128:localhost:8800-]@anon-20191002_181700-127:localhost:8800-]@anon-20191002_181700-126:localhost:8800-]@anon-20191002_181700-125:localhost:8800-]@anon-20191002_181700-124:localhost:8800-]@anon-20191002_181700-123:localhost:8800-]@anon-20191002_181700-122:localhost:8800-]@anon-20191002_181700-121:localhost:8800-]@anon-20191002_181700-120:localhost:8800+[@anon-20191002_181700-11:localhost:8800-]@anon-20191002_181700-119:localhost:8800-]@anon-20191002_181700-118:localhost:8800-]@anon-20191002_181700-117:localhost:8800,]@anon-20191002_181700-116:localhost:8800,]@anon-20191002_181700-115:localhost:8800~,]@anon-20191002_181700-114:localhost:8800},]@anon-20191002_181700-113:localhost:8800|,]@anon-20191002_181700-112:localhost:8800{,]@anon-20191002_181700-110:localhost:8800z+[@anon-20191002_181700-10:localhost:8800,]@anon-20191002_181700-109:localhost:8800y,]@anon-20191002_181700-108:localhost:8800x,]@anon-20191002_181700-107:localhost:8800w,]@anon-20191002_181700-106:localhost:8800v,]@anon-20191002_181700-104:localhost:8800u,]@anon-20191002_181700-103:localhost:8800s,]@anon-20191002_181700-102:localhost:8800t,]@anon-20191002_181700-101:localhost:8800q,]@anon-20191002_181700-100:localhost:8800r/@9:localhost:8800/@8:localhost:8800/@7:localhost:8800/@6:localhost:8800/@5:localhost:8800/@4:localhost:8800/@3:localhost:8800/@2:localhost:8800/@1:localhost:88001@10:localhost:8800/@0:localhost:8800>;@02login:localhost:88002k @01register-user-20191002_181700:localhost:8800 K3}O!vHd6 R $ l >  Z , t F  e 7 Q#m?Y+uGai; W)-]@anon-20191002_181700-164:localhost:8800-]@anon-20191002_181700-163:localhost:8800-]@anon-20191002_181700-162:localhost:8800-]@anon-20191002_181700-161:localhost:8800-]@anon-20191002_181700-160:localhost:8800+[@anon-20191002_181700-15:localhost:8800#-]@anon-20191002_181700-159:localhost:8800-]@anon-20191002_181700-158:localhost:8800-]@anon-20191002_181700-157:localhost:8800-]@anon-20191002_181700-156:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-225:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-223:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-221:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800)-]@anon-20191002_181700-219:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800+[@anon-20191002_181700-20:localhost:8800(-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800*Y@anon-20191002_181700-1:localhost:8800+[@anon-20191002_181700-19:localhost:8800'-]@anon-20191002_181700-199:localhost:8800-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-196:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800+[@anon-20191002_181700-18:localhost:8800&-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800+[@anon-20191002_181700-17:localhost:8800%-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800$-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-168:localhost:8800-]@anon-20191002_181700-167:localhost:8800-]@anon-20191002_181700-165:localhost:8800 V`8pH X 0  j B  | V 0  h @  x P ( `8pH X0jBzR*d<tL$\4 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 %M$15700426753WBESe:localhost:8829 'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 'Q$1570042664163IAHXd:localhost:8800 'Q$1570042663162sQrEh:localhost:8800 'Q$1570042662161lGrSW:localhost:8800 'Q$1570042662160SrmtM:localhost:8800 'Q$1570042661159xQwJK:localhost:8800 'Q$1570042661158igwHF:localhost:8800 'Q$1570042660157svDcU:localhost:8800 'Q$1570042660156wxhvl:localhost:8800 'Q$1570042659155mEUeP:localhost:8800 'Q$1570042659154Fztdf:localhost:8800 'Q$1570042658153tmCYJ:localhost:8800 'Q$1570042658152btGpA:localhost:8800 'Q$1570042657151cITOZ:localhost:8800 'Q$1570042656150UsLRz:localhost:8800 'Q$1570042656149JNVWR:localhost:8800 ~   4rteQ_s$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 245}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M"], "type": "m.room.join_rules", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040485096, "hashes": {"sha256": "5NUS74J63xZLLbqLeE/G71ITToJYXVTqJjswkDuyXCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OAU5idwBWLMOETKXJqfcuHgXrwkvNm4QLyNJWzgX44AuAlfG0RbsC2MXZl6C8Wh0HDU46fZl2FMCCG4S8boAAQ"}}, "unsigned": {"age_ts": 1570040485096}}hseQ__$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 244}{"auth_events": ["$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "type": "m.room.power_levels", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"users": {"@anon-20191002_181700-77:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040484463, "hashes": {"sha256": "AKH0bMRE+XPxrAmtc6wW3jLix+k0R1VPq7ZfC0FzSSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H1L88DsAz+CwGI5nIps1DebLNDvnKCVsV4hGmqISadqkTnEYuJjvii29d2sl0jaEIsyGn98QGc+m7rAhuhc9AA"}}, "unsigned": {"age_ts": 1570040484463}}rreQ_s$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 243}{"auth_events": ["$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY"], "prev_events": ["$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY"], "type": "m.room.member", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-77", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-77:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040483583, "hashes": {"sha256": "eDjF9DNlevTkS81HG+ARcc0EsXfQ9ldMdxWjKPOa66M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tVhibvkJLuWJF1XRO+j14RVMv6goFxzSaKqxt2Yv19rAIQxF5OdwAavW0cIkKYefbKtuMgs4xbrtMCbjm+LnCA"}}, "unsigned": {"age_ts": 1570040483583}}fqeQ_[$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 242}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-77:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040480961, "hashes": {"sha256": "4E0Jw5/6sQIQanKGrnAJTbfyNjXq7SbRjo+lverepcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1BTAr2GgR0BlOCtgvea+w/KVvkeZ8uTAizu9TJZQEj1KijVafK48eY7W7caOojeBuSbi+eXMv9Y+n13J9L0TBQ"}}, "unsigned": {"age_ts": 1570040480961}} a`8pH X 0  j B  | V 0  h @  x P ( `8pH X0jBzR*d<tL$\4 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570042725233SjCnf:localhost:8800 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 %M$15700426753WBESe:localhost:8829 'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 'Q$1570042664163IAHXd:localhost:8800 'Q$1570042663162sQrEh:localhost:8800 'Q$1570042662161lGrSW:localhost:8800 'Q$1570042662160SrmtM:localhost:8800 'Q$1570042661159xQwJK:localhost:8800 'Q$1570042661158igwHF:localhost:8800 'Q$1570042660157svDcU:localhost:8800 'Q$1570042660156wxhvl:localhost:8800 'Q$1570042659155mEUeP:localhost:8800 'Q$1570042659154Fztdf:localhost:8800 'Q$1570042658153tmCYJ:localhost:8800 'Q$1570042658152btGpA:localhost:8800 'Q$1570042657151cITOZ:localhost:8800 'Q$1570042656150UsLRz:localhost:8800 'Q$1570042656149JNVWR:localhost:8800 c_ l  x , *>VZc e)Q [$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Ym.room.aliases!xhbvqJDfxMSsZPqvld:localhost:8800mm7@anon-20191002_181700-81:localhost:8800 e)Q [$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAm.room.aliases!xhbvqJDfxMSsZPqvld:localhost:8800mmmi@anon-20191002_181700-81:localhost:8800+e?Q [$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6om.room.history_visibility!xhbvqJDfxMSsZPqvld:localhost:8800mm@anon-20191002_181700-81:localhost:8800#e/Q [$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5Mm.room.join_rules!xhbvqJDfxMSsZPqvld:localhost:8800mem"@anon-20191002_181700-81:localhost:8800(e9Q [$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4m.room.canonical_alias!xhbvqJDfxMSsZPqvld:localhost:8800mm@anon-20191002_181700-81:localhost:8800%e3Q [$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wm.room.power_levels!xhbvqJDfxMSsZPqvld:localhost:8800mnmg@anon-20191002_181700-81:localhost:8800e'Q [$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8om.room.member!xhbvqJDfxMSsZPqvld:localhost:8800m֟mX@anon-20191002_181700-81:localhost:8800 e'Q  [$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUm.room.create!xhbvqJDfxMSsZPqvld:localhost:8800mʤm@anon-20191002_181700-81:localhost:8800 e)Q [ $WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3pom.room.aliases!AWfbViAZparIjmDaVT:localhost:8800 mm@anon-20191002_181700-77:localhost:8800 e)Q [$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknkm.room.aliases!AWfbViAZparIjmDaVT:localhost:8800mm @anon-20191002_181700-77:localhost:8800 e)Q [$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8m.room.aliases!AWfbViAZparIjmDaVT:localhost:8800mDm@anon-20191002_181700-77:localhost:8800 ~e)Q [$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0sm.room.aliases!OSHhtkGUjpUCkXwIhj:localhost:8800mpm3@anon-20191002_181700-79:localhost:8800+}e?Q [$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIm.room.history_visibility!OSHhtkGUjpUCkXwIhj:localhost:8800mm@anon-20191002_181700-79:localhost:8800#|e/Q [$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0m.room.join_rules!OSHhtkGUjpUCkXwIhj:localhost:8800m8m @anon-20191002_181700-79:localhost:8800({e9Q [$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwm.room.canonical_alias!OSHhtkGUjpUCkXwIhj:localhost:8800mmh@anon-20191002_181700-79:localhost:8800%ze3Q [$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMm.room.power_levels!OSHhtkGUjpUCkXwIhj:localhost:8800mm@anon-20191002_181700-79:localhost:8800ye'Q [$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4m.room.member!OSHhtkGUjpUCkXwIhj:localhost:8800mm~@anon-20191002_181700-79:localhost:8800x e'Q  [$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9Um.room.create!OSHhtkGUjpUCkXwIhj:localhost:8800mm@anon-20191002_181700-79:localhost:8800 we)Q [$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEm.room.aliases!AWfbViAZparIjmDaVT:localhost:8800mWm@anon-20191002_181700-77:localhost:8800+ve?Q [$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgm.room.history_visibility!AWfbViAZparIjmDaVT:localhost:8800m9m@anon-20191002_181700-77:localhost:8800#ue/Q [$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Ym.room.join_rules!AWfbViAZparIjmDaVT:localhost:8800mm@anon-20191002_181700-77:localhost:8800%te3Q [$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5Mm.room.power_levels!AWfbViAZparIjmDaVT:localhost:8800mom@anon-20191002_181700-77:localhost:8800se'Q [$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAm.room.member!AWfbViAZparIjmDaVT:localhost:8800mm@anon-20191002_181700-77:localhost:8800r e'Q  [$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYm.room.create!AWfbViAZparIjmDaVT:localhost:8800mm@anon-20191002_181700-77:localhost:8800 q\vN&^f> v N & ^ 6  n F  X 0  h @ zR*b:k[3 C`8I!6{nFq(&O$157004274310jCQYA:localhost:8829 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800  'Q$1570043152260dkyqc:localhost:8800 y&O$157004274411xArrT:localhost:8829 |'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 |'Q$1570043153262hRyOa:localhost:8800 {'Q$1570043152261Skczg:localhost:8800 z'Q$1570043151259knbjg:localhost:8800 x'Q$1570043150258cdaXl:localhost:8800 w'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570042725233SjCnf:localhost:8800 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 2%M$15700427439Hwxyi:localhost:8829 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 V`8pH X 0  j B  | V 0  h @  x P ( `8pH X0jBzR*d<tL$\4 'Q$1570042725232UzIHq:localhost:8800 'Q$1570042724231dYSEq:localhost:8800 'Q$1570042723230DFoyn:localhost:8800 'Q$1570042722229ehxUl:localhost:8800 'Q$1570042722228QkARL:localhost:8800 'Q$1570042721227mhNwo:localhost:8800 'Q$1570042720226wSTBF:localhost:8800 'Q$1570042719225dSNgP:localhost:8800 'Q$1570042718224MBWNJ:localhost:8800 %M$15700427177BOUHn:localhost:8829 'Q$1570042716222nflqt:localhost:8800 'Q$1570042715221Amlxc:localhost:8800 'Q$1570042714220vWWFN:localhost:8800 'Q$1570042713219HcQXL:localhost:8800 'Q$1570042712218KQzXb:localhost:8800 'Q$1570042712217nuYrc:localhost:8800 'Q$1570042711216KdEEo:localhost:8800 'Q$1570042710215aaRza:localhost:8800 'Q$1570042709214PwhVu:localhost:8800 %M$15700427086bDrAU:localhost:8829 'Q$1570042707212LkSAM:localhost:8800 'Q$1570042706211NniIl:localhost:8800 'Q$1570042705210LweYn:localhost:8800 'Q$1570042704209JQwmT:localhost:8800 'Q$1570042704208yLiWU:localhost:8800 'Q$1570042703207yqsGA:localhost:8800 'Q$1570042702206BIYsS:localhost:8800 'Q$1570042701205bxgOX:localhost:8800 'Q$1570042700204CxVfq:localhost:8800 'Q$1570042699203fHFjU:localhost:8800 'Q$1570042698202juBqr:localhost:8800 'Q$1570042698201kDowV:localhost:8800 'Q$1570042697200mrENr:localhost:8800 'Q$1570042697199ROUNP:localhost:8800 'Q$1570042696198qbnxj:localhost:8800 'Q$1570042695197vezoL:localhost:8800 'Q$1570042694196OHsWc:localhost:8800 'Q$1570042693195hNKnU:localhost:8800 'Q$1570042692194rxboZ:localhost:8800 'Q$1570042691193uVdPZ:localhost:8800 'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800 'Q$1570042685185RhcXe:localhost:8800 'Q$1570042683184TpChh:localhost:8800 'Q$1570042682183iUUXF:localhost:8800 'Q$1570042681182ZiRRU:localhost:8800 'Q$1570042680181TFyrx:localhost:8800 'Q$1570042680180uuIxG:localhost:8800 'Q$1570042679179ZJCqE:localhost:8800 'Q$1570042678178HSUoI:localhost:8800 %M$15700426765pydev:localhost:8829 %M$15700426764DoRhm:localhost:8829 %M$15700426753WBESe:localhost:8829 'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 'Q$1570042664163IAHXd:localhost:8800 'Q$1570042663162sQrEh:localhost:8800 'Q$1570042662161lGrSW:localhost:8800 'Q$1570042662160SrmtM:localhost:8800 'Q$1570042661159xQwJK:localhost:8800 'Q$1570042661158igwHF:localhost:8800 'Q$1570042660157svDcU:localhost:8800 'Q$1570042660156wxhvl:localhost:8800 'Q$1570042659155mEUeP:localhost:8800 'Q$1570042659154Fztdf:localhost:8800 'Q$1570042658153tmCYJ:localhost:8800 'Q$1570042658152btGpA:localhost:8800 'Q$1570042657151cITOZ:localhost:8800 'Q$1570042656150UsLRz:localhost:8800 'Q$1570042656149JNVWR:localhost:8800 ~  yrxeQ_s$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 249}{"auth_events": ["$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U"], "prev_events": ["$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U"], "type": "m.room.member", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-79", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-79:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040489442, "hashes": {"sha256": "uF1IYNOOVz6x+87ONdafc76Xuhd3ZxU5D9fOgWZYiXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZX/WggytwK9BYeLlslGe535CH9LtoPTVJ1CWX/G3ZHbjFpCFP2aL9NBGK9sTrr8E/35hRph1+nXUVBZJyJP8CA"}}, "unsigned": {"age_ts": 1570040489442}}fweQ_[$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 248}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-79:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040488725, "hashes": {"sha256": "bFu/C6Wf+08p2lbyTPHwFF6NRwNco1CYKgOBgWeQOYc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nLYYbZuraafAE4bkNsVqxL3AQlxo7ck3QpQQSxXx6LyjojcRSvrk36ZW1BwcyquxvHMOzysiA034DK595ElSAA"}}, "unsigned": {"age_ts": 1570040488725}} veQ_)$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 247}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040487511, "hashes": {"sha256": "Yj7iBvSOqmXa3RrKTc2hH6S30mOqqVeTEq9V9E4h6tw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E2jdjldDogBesiKBFSOYWtjCZe4XoD1u5VGSZPKowL354b+2UPwyYkURsvSvL323NhklQ2IIiw3Lt5q3zpsrAA"}}, "unsigned": {"age_ts": 1570040487511}}ueQ_$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 246}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y"], "type": "m.room.history_visibility", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040485945, "hashes": {"sha256": "6XKnsMp2UIzs8nNeCAC/9KXWHnooaisc/5B30GLIDcQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CHbfisR00LB+GWYosd9p2cVIDMp83ZsDDCCgqq1zyOCTh+4i5xSuwa1d+YwdVNPVLuV6MHdCIP6p+TJK/WRYAw"}}, "unsigned": {"age_ts": 1570040485945}} #|t l n - h ' b !  ` XP>d\UMFeeQ$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800 XeeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800 KeeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800܁eeQ$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0!dUnULFLGtgaVdwHtnz:localhost:8800ueeQ$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800 eeQ$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800*eeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800 EeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800eeQ$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800&eeQ$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800 _3QQ$29:localhost:42455$1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800qeeQ$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y!laUExtszUaoCpZoyEq:localhost:8800 >111$2:localhost:42455$1:localhost:42455!0:localhost:42455 )@331$28:localhost:42455$27:localhost:42455!6:localhost:42455 @331$27:localhost:42455$26:localhost:42455!6:localhost:42455 @331$26:localhost:42455$25:localhost:42455!6:localhost:42455 @331$25:localhost:42455$24:localhost:42455!6:localhost:42455 eeQ$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM!jfshVGNDxkvqPxFxWB:localhost:8800@331$24:localhost:42455$23:localhost:42455!6:localhost:42455 @331$23:localhost:42455$22:localhost:42455!6:localhost:42455 eeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800 @331$22:localhost:42455$21:localhost:42455!6:localhost:42455 @331$21:localhost:42455$20:localhost:42455!6:localhost:42455 @331$20:localhost:42455$19:localhost:42455!6:localhost:42455 eeQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800eeQ$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800 eeQ$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800 ~z v r n j fb^ZVRNJFueeQ$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800teeQ$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800seeQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800reeQ$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800qeeQ$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800peeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800oeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800neeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800meeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800leeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800keeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800jeeQ$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800ieeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800heeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800geeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800feeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800eeeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800deeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800ceeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800beeQ$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800aeeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800`eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800_eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800^eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800]eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800\eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800[eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800ZeeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800YeeQ$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800XeeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800    |eQ_$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 253}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0"], "type": "m.room.history_visibility", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040491938, "hashes": {"sha256": "T8+xvKeq4FIYpabme1ppkyeNg2fK8SRy3jZJouXkBME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "spyDiy4tRhJAa7SGepSY5V7//7ij3FhDOinE8phpFTneDFz8Fni2GI/nCH8SpMMuDaJx1kuWZu9dTzSjunNCBw"}}, "unsigned": {"age_ts": 1570040491938}}r{eQ_s$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 252}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw"], "type": "m.room.join_rules", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040491320, "hashes": {"sha256": "BXZvTxfb4LV2qiq2SJottztUIEdasHcCSv0XecRdty0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbYO2x6YGJzaEp5zDZbEQ5iZcvEB9PJWDum7EQLtlmp35Vi6OJGqPAztimYeQlluAI2xZAST5dAdo0bojrYuCQ"}}, "unsigned": {"age_ts": 1570040491320}}zeQ_$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 251}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM"], "type": "m.room.canonical_alias", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"alias": "#__ANON__-5:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040490661, "hashes": {"sha256": "CydaFqDKme0FmFijzI7rXMW+XhBQ0x3R734awLNWhnk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zBb5P8ipygzTXEJEahMvOsAdtVBXkPs6mQH25hH8fO62vQRf9c0GdKc2YSxERQASP9zOA92R+q9PngNGRJxyAA"}}, "unsigned": {"age_ts": 1570040490661}}hyeQ__$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 250}{"auth_events": ["$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "type": "m.room.power_levels", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"users": {"@anon-20191002_181700-79:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040489954, "hashes": {"sha256": "bxHWd3LWFOwGvKhKcoVvbDoM8S2vXtFzYVwgCUShdc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b6a5FTz0pcUoOx3YHo5DFgKd6zp2bBFdcwJg3e5cWrbTjaNHZOLX22mY8HhFvV1g2E+0ET+jtSThyjJSl7TNCA"}}, "unsigned": {"age_ts": 1570040489954}} a} { y w u sqomkigeca~4eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~3eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~2eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~1eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~0eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~/eeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~.eeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~-eeQ$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~,eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~+eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~*eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~)eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~(eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~'eeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~&eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800~%eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800~$eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800~#eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~"eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~!eeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~ eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800~eeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800 mG`4fX,A;9 ]1d9CG L P  T  X  \ `"e+1%@29:localhost:8800guest_devicemN+1%@25:localhost:8800guest_devicem؍+1%@24:localhost:8800guest_devicem+1%@22:localhost:8800guest_devicem+1%@21:localhost:8800guest_devicemd+1%@20:localhost:8800guest_devicemN+1%@19:localhost:8800guest_devicem1+1%@18:localhost:8800guest_devicemF+1%@17:localhost:8800guest_devicemE+1%@16:localhost:8800guest_devicem+1%@15:localhost:8800guest_devicem+1%@14:localhost:8800guest_devicem+1%@12:localhost:8800guest_devicem/Z+1%@11:localhost:8800guest_devicem+a(/!@8:localhost:8800SPYUTHBEKDm2*/%@8:localhost:8800guest_devicem\*/%@7:localhost:8800guest_devicemy*/%@6:localhost:8800guest_devicemY?*/%@5:localhost:8800guest_devicem8*/%@4:localhost:8800guest_devicem"*/%@3:localhost:8800guest_devicem*/%@2:localhost:8800guest_devicem޵*/%@1:localhost:8800guest_devicemȫ+1%@13:localhost:8800guest_devicemP<+1%@23:localhost:8800guest_devicem)+1%@27:localhost:8800guest_devicem+1%@26:localhost:8800guest_devicemf+1%@28:localhost:8800guest_devicem0,7!@admin:localhost:8800GMJMIKRCODmc++1%@36:localhost:8800guest_devicem¨+1%@35:localhost:8800guest_devicem‰+1%@34:localhost:8800guest_devicems+1%@33:localhost:8800guest_devicem3 +1%@32:localhost:8800guest_devicem+1%@31:localhost:8800guest_devicem+1%@30:localhost:8800guest_devicemq>]!@anon-20191002_181700-134:localhost:8800PCQACQPKQAm3q>]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRTm&p>]!@anon-20191002_181700-131:localhost:8800SOOHJVIHORmHo=[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQm >]!@anon-20191002_181700-129:localhost:8800PFGGATLHBEmn>]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLYm m>]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUImul>]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXFmk>]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQmcj>]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJmli>]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQmlh>]!@anon-20191002_181700-122:localhost:8800KKXSFRABDEm_f>]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRMm_g>]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGSm9e?[%@anon-20191002_181700-11:localhost:8800login_devicem =[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFAm? >]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCLmd>]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVGmc>]!@anon-20191002_181700-117:localhost:8800AOWWBWACSKmb>]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZmBa>]!@anon-20191002_181700-115:localhost:8800XPQYONRAEBmg`>]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIHm-_>]!@anon-20191002_181700-113:localhost:8800DEIMBREIQTm^>]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDEmɸ]>]!@anon-20191002_181700-110:localhost:8800LARRQIDFNHmq\=[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQGm>]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAAm[>]!@anon-20191002_181700-108:localhost:8800KLPFELDKEHm}Z>]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCWmpY>]!@anon-20191002_181700-106:localhost:8800SACQZSUOIFm[PX>]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAFmCW>]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUIm>V>]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVLm)U>]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMGmS>]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHGm"eT 7SL PDG I I I K K K K K K SS?]!@anon-20191002_181700-199:localhost:8800UANUDVZWCSm<>]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLIm^z>]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYHmy>]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKYmx>]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQmw>]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDUmv>]!@anon-20191002_181700-140:localhost:8800OLUEHITWUAmLu>]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXSmjt>]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQmds?]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZm?]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZm?]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDLmh?]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRDmh?]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYAmQ?]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJm6 ?]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCMm}?]!@anon-20191002_181700-191:localhost:8800CZZXBALTJTm?]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZm?]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJm5?]!@anon-20191002_181700-188:localhost:8800HQVPFKSROBm?]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFFm_?]!@anon-20191002_181700-186:localhost:8800MCDWETOPHNm2%?]!@anon-20191002_181700-185:localhost:8800VORURBUNEEmU?]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZm?]!@anon-20191002_181700-183:localhost:8800PNPQZSANHGmG?]!@anon-20191002_181700-182:localhost:8800TONQTGLEJVm?]!@anon-20191002_181700-181:localhost:8800EXTONIIZTHm)?]!@anon-20191002_181700-179:localhost:8800LJJECQVQQOm?]!@anon-20191002_181700-178:localhost:8800RLQRIRERLRm?]!@anon-20191002_181700-177:localhost:8800HOVRIDACJIm ?]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMAm\?]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPWmV?]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQWmH?]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTYm1B?]!@anon-20191002_181700-170:localhost:8800SULWIONTNXm'=[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTFm?]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFRmµ?]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWWm?]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZm?]!@anon-20191002_181700-165:localhost:8800YDADSUNIXEmf?]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJmE?]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWLm'?]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXFm ?]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKNm?]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUDm=[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOGm ?]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAVm?]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBDm?]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGmqh>]!@anon-20191002_181700-153:localhost:8800RAWLINNCFAm`y>]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYGmKN~>]!@anon-20191002_181700-151:localhost:8800OZBCDWREHRm=}>]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUMm/|=[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOWmo >]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGMmf{ "'@ b x   4 Xn 0TQgs.opQ? e!TleKOyAElrpgyyrAQA:localhost:8800m.room.history_visibility$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUgoQ/ e!TleKOyAElrpgyyrAQA:localhost:8800m.room.join_rules$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8oglnQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8imQ3 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.power_levels$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ lQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-84:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMckQ' e!TleKOyAElrpgyyrAQA:localhost:8800m.room.create$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsrjQ))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08riQ))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA hQ'[e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgrgQ))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMofQ? e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibility$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkgeQ/ e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rules$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsldQ9 e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_alias$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UicQ3 e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc bQ'[e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgcaQ' e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.create$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYl`Q9 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYr_Q))e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Yr^Q))e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAo]Q? e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6og\Q/ e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rules$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5Ml[Q9 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4iZQ3 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w YQ'[e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8ocXQ' e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.create$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUrWQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3porVQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5YknkrUQ))e!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8lTQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$TChcbvxgUyPUybeHMi0Q0-C2AdPwC0BNACooTs5ZPmslSQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$mFqN6ZQmnheRDWnDa9-KZgWEyNrbvnGGVcQ7dEPlkAIrRQ))e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0soQQ? e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibility$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIgPQ/ e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rules$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0lOQ9 e!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_alias$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw H p = io(+1\y 4D  ggTeQ3 $8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels SeQ'[$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800joinaReQ' $wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.createpPeQ))$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800mOeQ? $6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibilityeNeQ/ $XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rulesjQeQ9 $PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliasgLeQ3 $KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels KeQ'[$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800joinaJeQ' $R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800m.room.createpIeQ))$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800jEeQ9 $Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_aliasgDeQ3 $SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levels CeQ'[$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800joinaBeQ' $ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.createm@eQ? $as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800m.room.history_visibilitye?eQ/ $jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800m.room.join_rulesg>eQ3 $-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800m.room.power_levelsjUeQ9 $4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_alias =eQ'[$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA!AWfbViAZparIjmDaVT:localhost:8800m.room.member@anon-20191002_181700-77:localhost:8800joina<eQ' $Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800m.room.createp;eQ))$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800m:eQ? $PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibilitye9eQ/ $55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rulesj8eQ9 $vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_aliaspHeQ))$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800mGeQ? $Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibilityeFeQ/ $m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rules  kzmeQ_i$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 257}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800", "#__ANON__-8:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040496010, "hashes": {"sha256": "lZxwFEiFxxwnqZ7jvlw95lk/eqf0MXG7ngtAJKfy2TM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HyzZc+vtRanrz3RB0ih9AobgQOy71S0Rlg2ITIPsGR233hkZT0IQDbg9czkrF+OJHuLbUYWssF6H1/zBy+2SDQ"}}, "unsigned": {"age_ts": 1570040496010, "replaces_state": "$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk"}}OeQ_-$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 256}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040495023, "hashes": {"sha256": "H+qbzvKl54s1vqx2OyX0RjZxxkOSmWu6VAtfSD8yN7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zZczk6nqw0J2VNrYdaHD17oRJoP6LFhz/up6n0a5VFJ8lAaHsv/40jTeAy5NWNjEuCfSgiE1YYARThWBLOlHAQ"}}, "unsigned": {"age_ts": 1570040495023, "replaces_state": "$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8"}}m~eQ_i$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800{"token_id": 111, "stream_ordering": 255}{"auth_events": ["$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M", "$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY", "$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA"], "prev_events": ["$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE"], "type": "m.room.aliases", "room_id": "!AWfbViAZparIjmDaVT:localhost:8800", "sender": "@anon-20191002_181700-77:localhost:8800", "content": {"aliases": ["#\u2615:localhost:8800", "#__ANON__-6:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040494404, "hashes": {"sha256": "yZX0rTHIr0HAD/k8Z19iRQ+DcW/2Tg0pwA1hLwJ6JW8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SgWLGJn2ex6Wurb/xRifUmEnhMtNfY1MYHhUkS8Sb1agKgdkJXvbLPBpumf54i3WFtlFAY51P9LPgqU7UUPHAA"}}, "unsigned": {"age_ts": 1570040494404, "replaces_state": "$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE"}}}eQ_1$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800{"token_id": 112, "stream_ordering": 254}{"auth_events": ["$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM", "$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U", "$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4"], "prev_events": ["$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI"], "type": "m.room.aliases", "room_id": "!OSHhtkGUjpUCkXwIhj:localhost:8800", "sender": "@anon-20191002_181700-79:localhost:8800", "content": {"aliases": ["#__ANON__-5:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040493424, "hashes": {"sha256": "+6jfBHo7c3R9yKg5PzOWxGnncFC4aajUKMc0tzcXb8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KlCI+P44OK1ohGyTZxCEPZSd8XIjJUf7L1/GVsU0MHWEV5IqnGIa65dexZMiTSTnbDCQIN9wUFsDi1TZvhWWBA"}}, "unsigned": {"age_ts": 1570040493424}} t5 l d \ T LE=-|%`eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800 ]eeQ$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800 l@331$37:localhost:42455$36:localhost:42455!8:localhost:42455 eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800 J@331$33:localhost:42455$32:localhost:42455!7:localhost:42455 eeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800yeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU!QZhNrNpwObZGJZpdAG:localhost:8800eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800jeeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800eeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800eeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800ځeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800'eeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800oeeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800eeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800JeeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800 *eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800H SsDY* p A  Y + o @  U & j ; P!e6zK`1uF[,qBW(.Q$1570043377301OraEa:lo.Q$1570043477326hyTqo:localhost:8800sha256 .Q$1570043476325vnEPO:localhost:8800sha256 .Q$1570043468324DLhaB:localhost:8800sha256 .Q$1570043429322ZfcNc:localhost:8800sha256 .Q$1570043428321klTqJ:localhost:8800sha256 .Q$1570043428320JDiOD:localhost:8800sha256 .Q$1570043426319TNjnu:localhost:8800sha256 .Q$1570043425318lLfNb:localhost:8800sha256 .Q$1570043392317hujur:localhost:8800sha256 .Q$1570043391316OJaBO:localhost:8800sha256 ~.Q$1570043388312YDkJu:localhost:8800sha256 y-O$157004338812XhwjX:localhost:8829sha256 z.Q$1570043387311DGzYi:localhost:8800sha256 x.Q$1570043386310bGMNl:localhost:8800sha256 w.Q$1570043385309imdbl:localhost:8800sha256 v.Q$1570043384308gPogh:localhost:8800sha256 u.Q$1570043383307bhuDV:localhost:8800sha256 t.Q$1570043382306WhWIU:localhost:8800sha256 s.Q$1570043380304caenp:localhost:8800sha256 r.Q$1570043379303bCgUn:localhost:8800sha256 q.Q$1570043378302mKBGD:localhost:8800sha256 p.Q$1570043377301OraEa:localhost:8800sha256 o.Q$1570043377300CLPUi:localhost:8800sha256 n.Q$1570043375299fbyXJ:localhost:8800sha256 m.Q$1570043374298UIMFg:localhost:8800sha256 l.Q$1570043373297SOjrf:localhost:8800sha256 k.Q$1570043372296yAiBq:localhost:8800sha256 j.Q$1570043371295coDXo:localhost:8800sha256 i.Q$1570043369294rquKy:localhost:8800sha256 h.Q$1570043369293ssSMv:localhost:8800sha256 g.Q$1570043368292FAoRb:localhost:8800sha256 f.Q$1570043367291AEdax:localhost:8800sha256 e.Q$1570043366290YSCqz:localhost:8800sha256 d.Q$1570043364289XIEhE:localhost:8800sha256 c.Q$1570043364288SCpzq:localhost:8800sha256 b.Q$1570043363287eSyun:localhost:8800sha256 a.Q$1570043362286KwXMK:localhost:8800sha256 `.Q$1570043361285xsPbY:localhost:8800sha256 _.Q$1570043354284IVfTL:localhost:8800sha256 Y.Q$1570043353283ubEdk:localhost:8800sha256 X.Q$1570043352282iTcSU:localhost:8800sha256 W.Q$1570043351281XHPOP:localhost:8800sha256 V.Q$1570043350280ydSwy:localhost:8800sha256 U.Q$1570043347278WlNld:localhost:8800sha256 S.Q$1570043346277FsKPl:localhost:8800sha256 R.Q$1570043346276qTXUF:localhost:8800sha256 Q.Q$1570043345275UDVPY:localhost:8800sha256 P.Q$1570043344274cabjv:localhost:8800sha256 O.Q$1570043341273LsXNn:localhost:8800sha256 N.Q$1570043198272DGmin:localhost:8800sha256 .Q$1570043195270GcoLc:localhost:8800sha256 .Q$1570043195269hcCzg:localhost:8800sha256 .Q$1570043194268zlNeZ:localhost:8800sha256 .Q$1570043193267ZyDyW:localhost:8800sha256 .Q$1570043192266CXqej:localhost:8800sha256 .Q$1570043191265cqITi:localhost:8800sha256 .Q$1570043154263raEaa:localhost:8800sha256 .Q$1570043153262hRyOa:localhost:8800sha256 .Q$1570043152261Skczg:localhost:8800sha256 .Q$1570043152260dkyqc:localhost:8800sha256 .Q$1570043151259knbjg:localhost:8800sha256 .Q$1570043150258cdaXl:localhost:8800sha256 -O$157004274411xArrT:localhost:8829sha256 ,M$15700427439Hwxyi:localhost:8829sha256 -O$157004274310jCQYA:localhost:8829sha256 .Q$1570042742256IYRor:localhost:8800sha256 .Q$1570042742255yQzPA:localhost:8800sha256 .Q$1570042741254DKIYz:localhost:8800sha256 .Q$1570042740253GkWgu:localhost:8800sha256 .Q$1570042739252bWghU:localhost:8800sha256 .Q$1570042738251iukAg:localhost:8800sha256 .Q$1570042737250jmxWx:localhost:8800sha256 ,M$15700427368TlZQs:localhost:8829sha256 .Q$1570042735248drnws:localhost:8800sha256 .Q$1570042734247SfTxR:localhost:8800sha256 .Q$1570042733246cYViL:localhost:8800sha256 .Q$1570042733245smHTZ:localhost:8800sha256 .Q$1570042732244zDmQh:localhost:8800sha256 .Q$1570042731243YuOkC:localhost:8800sha256 .Q$1570042730242eYFxu:localhost:8800sha256 .Q$1570042729241UUSiz:localhost:8800sha256 .Q$1570042729240aBRvS:localhost:8800sha256 .Q$1570042728239BMOBm:localhost:8800sha256 @JT ^ # i . x = C  Q W^"i(o3v:z>|;F9H ]@anon-20191002_181700-119:localhost:8800a&\>G ] @anon-20191002_181700-117:localhost:8800m&\]>F ]  @anon-20191002_181700-116:localhost:8800m&\9E ]@anon-20191002_181700-117:localhost:8800a&\9D ]@anon-20191002_181700-116:localhost:8800a&\>C ]  @anon-20191002_181700-115:localhost:8800m&\69B ]@anon-20191002_181700-115:localhost:8800a&\>A ]  @anon-20191002_181700-114:localhost:8800m&\M9@ ]@anon-20191002_181700-114:localhost:8800a&\A> ]@anon-20191002_181700-112:localhost:8800m&\B?? ]@anon-20191002_181700-113:localhost:8800m&\ %9= ]@anon-20191002_181700-113:localhost:8800a&\@: ]@anon-20191002_181700-109:localhost:8800m&\5#>; ] @anon-20191002_181700-110:localhost:8800m&\9< ]@anon-20191002_181700-112:localhost:8800a&\99 ]@anon-20191002_181700-110:localhost:8800a&\98 ]@anon-20191002_181700-109:localhost:8800a&\=7 ]  @anon-20191002_181700-108:localhost:8800m&\V>6 ]  @anon-20191002_181700-107:localhost:8800m&\C95 ]@anon-20191002_181700-108:localhost:8800a&\94 ]@anon-20191002_181700-107:localhost:8800a&\>3 ]  @anon-20191002_181700-106:localhost:8800m&\C92 ]@anon-20191002_181700-106:localhost:8800a&\>1 ] @anon-20191002_181700-104:localhost:8800m&\90 ]@anon-20191002_181700-104:localhost:8800a&\>/ ] @anon-20191002_181700-102:localhost:8800m&\|9. ]@anon-20191002_181700-102:localhost:8800a&\9- ]@anon-20191002_181700-103:localhost:8800a&\=, ] @anon-20191002_181700-100:localhost:8800m&\Z>+ ] @anon-20191002_181700-101:localhost:8800m&\9* ]@anon-20191002_181700-100:localhost:8800a&\9) ]@anon-20191002_181700-101:localhost:8800a&\=( [ @anon-20191002_181700-99:localhost:8800m&\8' [@anon-20191002_181700-99:localhost:8800a&\<& [ @anon-20191002_181700-96:localhost:8800m&\X=% [ @anon-20191002_181700-97:localhost:8800m&\8$ [@anon-20191002_181700-96:localhost:8800a&\8# [@anon-20191002_181700-97:localhost:8800a&\>" [  @anon-20191002_181700-95:localhost:8800m&\ #c8! [@anon-20191002_181700-95:localhost:8800a&\= [ @anon-20191002_181700-93:localhost:8800m&\8 [@anon-20191002_181700-93:localhost:8800a&\< [ @anon-20191002_181700-90:localhost:8800m&\X= [ @anon-20191002_181700-91:localhost:8800m&\B8 [@anon-20191002_181700-90:localhost:8800a&\8 [@anon-20191002_181700-91:localhost:8800a&\= [  @anon-20191002_181700-89:localhost:8800m&\48 [@anon-20191002_181700-88:localhost:8800a&\8 [@anon-20191002_181700-89:localhost:8800a&\< [  @anon-20191002_181700-87:localhost:8800m&\= [ @anon-20191002_181700-86:localhost:8800m&\B8 [@anon-20191002_181700-86:localhost:8800a&\8 [@anon-20191002_181700-87:localhost:8800a&\= [ @anon-20191002_181700-85:localhost:8800m&\ 3= [  @anon-20191002_181700-84:localhost:8800m&\8 [@anon-20191002_181700-84:localhost:8800a&\8 [@anon-20191002_181700-85:localhost:8800a&\= [ @anon-20191002_181700-83:localhost:8800m&\ 3= [  @anon-20191002_181700-82:localhost:8800m&\l8 [@anon-20191002_181700-83:localhost:8800a&\8 [@anon-20191002_181700-82:localhost:8800a&\= [  @anon-20191002_181700-81:localhost:8800m&\ 48 [@anon-20191002_181700-81:localhost:8800a&\8 [@anon-20191002_181700-80:localhost:8800a&\ ~qdWJ=0# zm`SF9, v i \ O B 5 (     r e X K > 1 $  { n a T G : -   w j ] P C 6 )    | m ^ O @ 1 "  }n_PA2#~o`QB3$paRC4%qbSD5&rcTE6' sdUF7( teVG8) m`m^m]mZ8mWmTsmRCmOmMtmKmIDmDmCmB>m@m>m=Cm;m:m6m5bm3]m1m0om/ m-am+m*Ym(~m' m%&m!mmmmPm cmmmmmmqmm mmBmm:mݹmQmPmmNmmmĎmmm0mmmmm?m>mmmm;mmmm}m{Gmxmvmt^momj mg+mdmmbm_mmumm=mmm m mmSmmAmm0m m m~~ m}} mM|| m{{ mzz myy mxx mRww m/vv muu mӗtt mхss mZrr mqq mšpp mÊoo m{nn mmm mll mNkk mjj mii mhh mgg m(ff mcee mdd m#cc mbb m7aa m`` mu__ m^^ m]] mc\\ m[[ m_ZZ mYY mKXX m}PWW mzVV mvUU mqTT mmSS miRR meQQ mcyPP m`POO m]{NN mZMM mXLL mVKK mT1JJ mLII mH:HH mF5GG mCFF mBEE m?DD m:RCC m8oBB m69AA m4@@ m2G?? m/w>> m-== m*x<< m%*;; m#:: m 99 mC88 mu77 m66 m+55 m?44 m)33 m 22 m 11 m 00 mH// m.. m-- m,, m++ m** m)) mE(( m'' m\&& m%% m'$$ m## mx"" m!! m mߴ m- m m m mЖ m? m m  mLJ m m0 m m m. mO m m m me m* m mV mR m m m m m mg |yj[L=.zk\M>qbSD5&rcTE6' sdUF7( teVG8) ufWH9* vgXI:+ whYJ;, m ^ O @ 1 "   } n _ P A 2 #   ~ o ` Q B 3 $    p a R C 4 %  /  { l ] N ? 0 !   |mdyymbdxxm_wwm]vvm[uumVttmQssmQrrmMqqmK8ppmHoomFannmD mmm=jllm8(kkm8&jjm43iim1hhm.ggm,yffm)eem#ddm!eccmbbmaamO``m__m^^m]]m>\\m L[[m]ZZmYYmXXmWWmfVVmUUmTTmjSSmkRRmCQQmRPPmOOmYNNmfMMmDLLm KKmxJJmIIm̷HHmGGmFFmbEEmDDmCCmBBmAAm@@m=??m>>m==mh<<mF;;m::m99m88m77m66m55m44m33m!22m|11mz[00mx//mu..mn--mk,,miZ++mf**mdt))ma((mZ8''mW&&mT%%mP$$mN##mEz""mB!!m@3  m:Fm4m1m-m+Em'4m$m"bmm<m mmm mmUmamm  m  m  m  m  mmmmemmnm֟mʤm'm%Wm"mNmmmkm$mLmm pm mm#mmEmmmmmmJmImmVmommm"mm7mRm)mNm›mmmmm.mm3mUmDm.mmmmm'mmommSmTmz~~mx}}mu||ms{{mqzzmmmDmpmm8mmmmmWm9mmommmm@m|mwmu!mrmpWmnmmXmkmj!mhmfmeF a]g  6 #E@'IDalQ))ee!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8kQ9 ee!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8jQ))ee!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0 iQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-85:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yoshQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0pgQ? e!TleKOyAElrpgyyrAQA:localhost:8800m.room.history_visibility$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUhfQ/ e!TleKOyAElrpgyyrAQA:localhost:8800m.room.join_rules$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogmeQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8jdQ3 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.power_levels$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ cQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-84:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMdbQ' e!TleKOyAElrpgyyrAQA:localhost:8800m.room.create$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsaQ))ee!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA`Q))ee!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM _Q'[e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgs^Q))e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMp]Q? e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibility$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkh\Q/ e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rules$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsm[Q9 e!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_alias$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81UjZQ3 e !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc YQ'[e !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgdXQ' e !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.create$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYWQ9 ee !xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4VQ))ee !xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAsUQ))e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UApTQ? e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6ohSQ/ e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rules$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5MmRQ9 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_alias$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4jQQ3 e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w PQ'[e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8odOQ' e!xhbvqJDfxMSsZPqvld:localhost:8800m.room.create$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUNQ))ee!AWfbViAZparIjmDaVT:localhost:8800m.room.aliaseslocalhost:8800$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk   4eQ_5$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 261}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w"], "type": "m.room.canonical_alias", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"alias": "#test-20191002_181700-3:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040503839, "hashes": {"sha256": "Cb+eKYEpynCaarCdrnjoSFgUnTed7E8EObhvbLOn5gg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XNmyvEZ2MgBEHtMNoyWKWxMjxHkTOpTZ58NJO7DVkMYb1RNu+m0dDaNMCli6vuFGB7Uc4hGXVn90HAHUPGVaDg"}}, "unsigned": {"age_ts": 1570040503839}}heQ__$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 260}{"auth_events": ["$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "type": "m.room.power_levels", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"users": {"@anon-20191002_181700-81:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040502638, "hashes": {"sha256": "KcUqFQ6bb4zsWdgqhYg8mVwRY3I+7MqSicofYh2+590"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "76vhEaGkzlimcl5aMEaPeozdMNB+X38J9azozI8nSryeg25gu6kdcSnijIXhvfmN3leRhpaWw7rkhPe6f7IgAw"}}, "unsigned": {"age_ts": 1570040502638}}reQ_s$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 259}{"auth_events": ["$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU"], "prev_events": ["$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU"], "type": "m.room.member", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-81", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-81:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040501919, "hashes": {"sha256": "5psVXc0dmZWEw5/t85s5DMsooJcOmuN4P9/bdKIdnhg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nm3tdrrmLpxGq3tUdILzqfSpz3hn1f77jN5lv5F2iwqqObWoPdgow/gwKaRq9FLqiGoQjRXdlC2Gn0cRgEB3Cw"}}, "unsigned": {"age_ts": 1570040501919}}feQ_[$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 258}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-81:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040498852, "hashes": {"sha256": "94r+TAdCM2s8b0v8O+fqy9mquLiXdvlZOef75+t/IWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1L5NkbJWk44Pqgc7UPfBn052rpO6Y2hIHHRMYk3RG1aJeTWIxgxlTdU4i3xIpQwOJdIoXUK3hFkkYZepZeDDQ"}}, "unsigned": {"age_ts": 1570040498852}} Z]="gL)jG!oX y S 3  c = ^ A !   Y 9  f C &U8J-V?K zt6|>/ m.room.join_rules3 m.room.power_levels' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-77:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-95:localhost:8800' m.room.create='[m.room.member@anon-20191002_181700-92:localhost:8829='[m.room.member@anon-20191002_181700-92:localhost:8829='[m.room.member@anon-20191002_181700-92:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-93:localhost:8800' m.room.create='[ m.room.member@anon-20191002_181700-90:localhost:8800 ='[ m.room.member@anon-20191002_181700-90:localhost:8800 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3 m.room.power_levels='[m.room.member@anon-20191002_181700-91:localhost:8800' m.room.create='[m.room.member@anon-20191002_181700-88:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-89:localhost:8800' m.room.create='[m.room.member@anon-20191002_181700-87:localhost:8800='[m.room.member@anon-20191002_181700-87:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels='[m.room.member@anon-20191002_181700-86:localhost:8800' m.room.create9 m.room.canonical_alias%))m.room.aliaseslocalhost:88009 m.room.canonical_alias%))m.room.aliaseslocalhost:8800='[m.room.member@anon-20191002_181700-85:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-84:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800='[m.room.member@anon-20191002_181700-83:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-82:localhost:8800' m.room.create9 m.room.canonical_alias%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-81:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:88009 m.room.canonical_alias9 m.room.canonical_alias%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels='[m.room.member@anon-20191002_181700-79:localhost:8800 a ba}eQ_ $ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 265}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA"], "type": "m.room.aliases", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"aliases": ["#test-20191002_181700-3:localhost:8800", "#__ANON__-9:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040507271, "hashes": {"sha256": "74kAqRF/Nn09Cia0EqMWWCgpeB3+qKyuFu0J3v8XdTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rm0qT+wdzzTeY213VOpgi6N9EZKegZTeFtK3xYKFAClxzvQU8RZFCby4yJy/3tgNQho5ZzgsBowxQMLr9Cs6BQ"}}, "unsigned": {"age_ts": 1570040507271, "replaces_state": "$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA"}}eQ_I$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 264}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o"], "type": "m.room.aliases", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"aliases": ["#test-20191002_181700-3:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040505965, "hashes": {"sha256": "CNwnf7liifIouMyLZUehRvyiBknzzL8yOymcvfYccQc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5sUZFXHRim73+F85NrSRYm4EMmXY6aEwhzbf3mPHk89jx/jDhbow3XO8u80ydpJN0mysv1q6pTTgon+j9N6DBw"}}, "unsigned": {"age_ts": 1570040505965}}eQ_$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 263}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M"], "type": "m.room.history_visibility", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040504964, "hashes": {"sha256": "dukz4uUGyOYYjVjEUPYitxo+OrkPSPpYVMgXQzDUi1k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QDlNlQxd/svQYoNxZcq39T5TXQ93izVRO+6+rDNcOXof4MJfpfuovd3Nq76tVL0w0FUvzEOAb1JOAPMTChlPCw"}}, "unsigned": {"age_ts": 1570040504964}}reQ_s$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 262}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4"], "type": "m.room.join_rules", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040504421, "hashes": {"sha256": "Fb710LPapA22khFMu/cWeLJP1jPlemkdC15jSC/W+bg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hwo3vMPZAfPpjfkqnwoNwVfb0u27zxVi+t6gTFq0F0PXJPHd3IGEPRB7rXsMdD7w2H6cXSUFs+VWzEyn6iLNBg"}}, "unsigned": {"age_ts": 1570040504421}} a} { y w u sqomkigeca~SeeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800~ReeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~QeeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~PeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~OeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~NeeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~MeeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~LeeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~KeeQ$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~JeeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~IeeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~HeeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~GeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~FeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~EeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800~DeeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800~CeeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~BeeQ$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800~AeeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~@eeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~?eeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~>eeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~=eeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~<eeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~;eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~:eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~9eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~8eeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800~7eeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800~6eeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800~5eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800 "= M v  + , U_;dn,aueQ' $L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800m.room.createteQ'[$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800seQ'[$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800greQ3 $FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g!duCKuavMBSfRbTFPsc:localhost:8800m.room.guest_accessmqeQ? $_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck!duCKuavMBSfRbTFPsc:localhost:8800m.room.history_visibilityepeQ/ $Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800m.room.join_rulesgoeQ3 $mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800m.room.power_levelsneQ'[$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-86:localhost:8800ameQ' $3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800m.room.createpleQ))$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800jkeQ9 $1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_aliaspjeQ))$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800ieQ'[$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-85:localhost:8800pheQ))$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800mgeQ? $lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800m.room.history_visibilityefeQ/ $Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800m.room.join_rulesjeeQ9 $vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_aliasgdeQ3 $ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800m.room.power_levelsceQ'[$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-84:localhost:8800abeQ' $aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800m.room.createpaeQ))$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800p`eQ))$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800_eQ'[$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800p^eQ))$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800m]eQ? $N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibilitye\eQ/ $9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rulesj[eQ9 $4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_aliasgZeQ3 $8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levelsYeQ'[$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800aXeQ' $wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.createjWeQ9 $PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY!xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliaspVeQ))$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800pUeQ))$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800mTeQ? $6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility TuC~Lj8p> v D  | J  P  c1 W % ] +yGok9qX?i7&V=% 1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA{1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAz1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAy1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj41e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A3$39:localhost:424553$38:localhost:424553$38:localhost:424553$38:localhost:424551e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao\3$37:localhost:424553$37:localhost:424553$37:localhost:424551e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug11e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug01e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug/3$33:localhost:424553$33:localhost:424553$33:localhost:424551e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg *1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg )1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0@0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0?0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0>1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYb1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE 41$3:localhost:372651$3:localhost:372653$39:localhost:424553$39:localhost:424551e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k.1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k-1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kR1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kQ1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kP1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQu1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls:1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls91e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k C1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k B1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k A0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0f1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0e1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E01e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E/1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E.1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg 1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg 1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM 1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg + g 3 Igh eQ__$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 269}{"auth_events": ["$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "type": "m.room.power_levels", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"users": {"@anon-20191002_181700-82:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040511448, "hashes": {"sha256": "+SL17ET0JmHIJXgUS6OPwzPk59tZAnPVTDK8USImcUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "211ENDC9tUEvBJ6+K2f6AoKapgLg/gr0GuZZlLWIu3EI0G6jeJGcqRlkZaYPKU0Q9qjzxHFlZK299wJof6iMBA"}}, "unsigned": {"age_ts": 1570040511448}}r eQ_s$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 268}{"auth_events": ["$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY"], "prev_events": ["$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY"], "type": "m.room.member", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-82", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-82:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040510894, "hashes": {"sha256": "IxuiniP96oOBwsp/OMqNLXkHdlcgj6XXNLKccDG7BtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UoLqjczDuAYisGJuuXYHltXcdiTfuL29V3gQ2VFqmYDE6dwqDf7LtTb4TaBzbfXpm8rb1bsZyzhzjxcUNjyQCQ"}}, "unsigned": {"age_ts": 1570040510894}}f eQ_[$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 267}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-82:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040510186, "hashes": {"sha256": "dU0YJR6uCxi9gwOokbpCLi2PD9OOUd6qaxhIvcvxHSo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jiU72m1SYrlS2pK3QJEjTt5UVff4O1xLwKh7p5LA6Ek/5qPxyVP5aUsScKDiFSwcu3PGtqufaHcKY7MgpnI/BA"}}, "unsigned": {"age_ts": 1570040510186}}I eQ_!$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY!xhbvqJDfxMSsZPqvld:localhost:8800{"token_id": 114, "stream_ordering": 266}{"auth_events": ["$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w", "$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU", "$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o"], "prev_events": ["$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y"], "type": "m.room.canonical_alias", "room_id": "!xhbvqJDfxMSsZPqvld:localhost:8800", "sender": "@anon-20191002_181700-81:localhost:8800", "content": {"alias": "#__ANON__-9:localhost:8800"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040508058, "hashes": {"sha256": "r5Ull4eAy5Hq6nDMrnNKFZ7pvHi83LSinMoB8yK7eLU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BfhxhL2q2MnNGmZt8JFxo/IZAfHZbWtsRCCSQMNK2+dnTvuhZbA9QUOFxL4RMM2Mh3x7Naj6bnR8tzeHE0jcAw"}}, "unsigned": {"age_ts": 1570040508058, "replaces_state": "$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4"}} hT g  e  z5=CP h!e'Q [$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMm.room.member!duCKuavMBSfRbTFPsc:localhost:8800mBmC@anon-20191002_181700-86:localhost:8800  e'Q  [$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675om.room.create!duCKuavMBSfRbTFPsc:localhost:8800m@3m@@anon-20191002_181700-86:localhost:8800 e)Q [ $644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEm.room.aliases!TleKOyAElrpgyyrAQA:localhost:8800 m:Fm:@anon-20191002_181700-85:localhost:8800(e9Q [ $1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JEm.room.canonical_alias!TleKOyAElrpgyyrAQA:localhost:8800 m4m6/@anon-20191002_181700-84:localhost:8800 e)Q [ $y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8m.room.aliases!TleKOyAElrpgyyrAQA:localhost:8800 m1m2@anon-20191002_181700-85:localhost:8800e'Q [$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yom.room.member!TleKOyAElrpgyyrAQA:localhost:8800m-m.:@anon-20191002_181700-85:localhost:8800 e)Q [$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0m.room.aliases!TleKOyAElrpgyyrAQA:localhost:8800m+Em,@anon-20191002_181700-84:localhost:8800+e?Q [$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUm.room.history_visibility!TleKOyAElrpgyyrAQA:localhost:8800m'4m)@anon-20191002_181700-84:localhost:8800#e/Q [$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogm.room.join_rules!TleKOyAElrpgyyrAQA:localhost:8800m$m%@anon-20191002_181700-84:localhost:8800(e9Q [$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8m.room.canonical_alias!TleKOyAElrpgyyrAQA:localhost:8800m"bm#(@anon-20191002_181700-84:localhost:8800%e3Q [$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQm.room.power_levels!TleKOyAElrpgyyrAQA:localhost:8800mm @anon-20191002_181700-84:localhost:8800e'Q [$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMm.room.member!TleKOyAElrpgyyrAQA:localhost:8800m<m@anon-20191002_181700-84:localhost:8800 e'Q  [$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsm.room.create!TleKOyAElrpgyyrAQA:localhost:8800m m]@anon-20191002_181700-84:localhost:8800 e)Q [ $Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08m.room.aliases!IGVHKYcSuxzVPlFHlj:localhost:8800 mm@anon-20191002_181700-83:localhost:8800 e)Q [ $tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMAm.room.aliases!IGVHKYcSuxzVPlFHlj:localhost:8800 mm@anon-20191002_181700-83:localhost:8800e'Q [$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgm.room.member!IGVHKYcSuxzVPlFHlj:localhost:8800m m @anon-20191002_181700-83:localhost:8800 e)Q [$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMm.room.aliases!IGVHKYcSuxzVPlFHlj:localhost:8800mm{@anon-20191002_181700-82:localhost:8800+e?Q [$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkkm.room.history_visibility!IGVHKYcSuxzVPlFHlj:localhost:8800mUm@anon-20191002_181700-82:localhost:8800#e/Q [$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsm.room.join_rules!IGVHKYcSuxzVPlFHlj:localhost:8800mam@anon-20191002_181700-82:localhost:8800(e9Q [$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81Um.room.canonical_alias!IGVHKYcSuxzVPlFHlj:localhost:8800mm @anon-20191002_181700-82:localhost:8800% e3Q [$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcm.room.power_levels!IGVHKYcSuxzVPlFHlj:localhost:8800mm@anon-20191002_181700-82:localhost:8800 e'Q [$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgm.room.member!IGVHKYcSuxzVPlFHlj:localhost:8800mm @anon-20191002_181700-82:localhost:8800  e'Q  [$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYm.room.create!IGVHKYcSuxzVPlFHlj:localhost:8800mm@anon-20191002_181700-82:localhost:8800( e9Q [ $PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRYm.room.canonical_alias!xhbvqJDfxMSsZPqvld:localhost:8800 mm@anon-20191002_181700-81:localhost:8800 CUq8 T  l 1 E Y  m 2F Zn3G [ o4H \!85]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT84]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD83]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY82]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG81]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA80]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8/]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8.]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8-]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8,]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8+]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8*]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8)]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8(]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8']!@anon-20191002_181700-140:localhost:8800OLUEHITWUA8&]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS8%]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS8$]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8#]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA8"]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8!]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA8 ]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBE8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8 ]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8 ]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8 ]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH8 ]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA8 ]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH8]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW8]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF8]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF8]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL8]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUI8]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHG8]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMG7[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMY7[!@anon-20191002_181700-96:localhost:8800TASTZEHNVL7[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZ7~[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZT7}[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNB7|[!@anon-20191002_181700-90:localhost:8800BJDBLNAUER7{[!@anon-20191002_181700-91:localhost:8800UIADKEMPGA7z[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDI7y[!@anon-20191002_181700-89:localhost:8800OFESILMBJH7x[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYW7w[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZ7v[!@anon-20191002_181700-84:localhost:8800YUGLTPPJEN7u[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTV7t[!@anon-20191002_181700-83:localhost:8800STLQYGHMSU7s[!@anon-20191002_181700-82:localhost:8800JESTYYWXIO  xG m < 1/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCgq/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCgp/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCgu/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8Cgn/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30Cgo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCgw/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCgk/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECgj/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCgi/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCgh/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCgl/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCgv  ileQ_I$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 273}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk"], "type": "m.room.aliases", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"aliases": ["#test-20191002_181700-4:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040514497, "hashes": {"sha256": "CIKeTQPXKP1fzkPrUoC1aK+GJukzHhAnQpkY+jgyzag"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pdcpCjldlERQmj5xA1uhbE+HUCxbtafzEop5blU7xUAYE5JS9DeAV8ee5N1lP6vk8CqC0NsOJPPxES03WU2YAQ"}}, "unsigned": {"age_ts": 1570040514497}}eQ_$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 272}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs"], "type": "m.room.history_visibility", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040513621, "hashes": {"sha256": "NY/vPzB2vnLoIGlnBOQdSbW2PO/l3AE6MAr3g+fQ0tk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+tzZahWbWCPk3ftSFbZw8mp0dyaUhKUlZUFnHGHBYHkQ5sbwnVZcFC7l+0xwdf8lSWYtugec5QtPV/7mnlrQDQ"}}, "unsigned": {"age_ts": 1570040513621}}reQ_s$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 271}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U"], "type": "m.room.join_rules", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040513121, "hashes": {"sha256": "a7ZUqJi+vZxrYcSdqYvAIi8tcCB0GAQF32GMHMDizo8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vJjEl5WDOjRsep50MoX/YJLQ8fWT10rqH930fUTyjUe1C5NmIaQuFoPHb3tvheu0ywIOYSSzJLRM0w4yR6PwDw"}}, "unsigned": {"age_ts": 1570040513121}} eQ_5$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 115, "stream_ordering": 270}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg"], "prev_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc"], "type": "m.room.canonical_alias", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-82:localhost:8800", "content": {"alias": "#test-20191002_181700-4:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040512203, "hashes": {"sha256": "FeKVfi6F5VEc4drTJLe1LaqImW+AGLQP+C/2Jkji/r0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XV1Eo6J4XFP1/75HUeoBdOgDVLOpf5e1BGhSM+z+C0CWBAIA890y9NCe1cLjVsGZ4P9vAzkiMGqA1yQc+wnbAg"}}, "unsigned": {"age_ts": 1570040512203}} SRFFy\/Ji<M l? _ 2  ~ Q $ q D  d 7 W *v|O"nA'sa4S,Q!EfJcWhdjNARbuHYrqU:localhost:8800^^,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 +Q !FZOLkaLbBpaibrbHZx:localhost:8800 Z,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 +Q !FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800+Q !FPcQcheNebvdFvmOnr:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 +Q !EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 +Q !EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800+Q !FIOuvzpMhoERunVYYA:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800+Q !FAYqpziHeVZugCGaij:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  +Q !EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyEaTZElOkdURKbEXo:localhost:8800==,Q!EyEaTZElOkdURKbEXo:localhost:8800<<,Q!EyEaTZElOkdURKbEXo:localhost:8800;;,Q!EyEaTZElOkdURKbEXo:localhost:8800::,Q!EyEaTZElOkdURKbEXo:localhost:880099,Q!EyEaTZElOkdURKbEXo:localhost:880088,Q!EyEaTZElOkdURKbEXo:localhost:880077+Q !EyEaTZElOkdURKbEXo:localhost:880066,Q!EieRtaCFZJJCIOkRPp:localhost:8800 uu,Q!EieRtaCFZJJCIOkRPp:localhost:8800 tt,Q!EieRtaCFZJJCIOkRPp:localhost:8800 ss,Q!EieRtaCFZJJCIOkRPp:localhost:8800rr,Q!EieRtaCFZJJCIOkRPp:localhost:8800qq,Q!EieRtaCFZJJCIOkRPp:localhost:8800pp,Q!EieRtaCFZJJCIOkRPp:localhost:8800oo,Q!EieRtaCFZJJCIOkRPp:localhost:8800nn,Q!EieRtaCFZJJCIOkRPp:localhost:8800mm,Q!EieRtaCFZJJCIOkRPp:localhost:8800ll+Q !EieRtaCFZJJCIOkRPp:localhost:8800kk,Q!EfJcWhdjNARbuHYrqU:localhost:8800aa,Q!EfJcWhdjNARbuHYrqU:localhost:8800``,Q!EfJcWhdjNARbuHYrqU:localhost:8800__ SRFFy\/Ji<M l? _ 2  ~ Q $ q D  d 7 W *v|O"nA'sa4S,Q!EfJcWhdjNARbuHYrqU:localhost:8800^^,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 ,Q!FZOLkaLbBpaibrbHZx:localhost:8800 +Q !FZOLkaLbBpaibrbHZx:localhost:8800 Z,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FbJSiQoZtZkaFwzzQq:localhost:8800 +Q !FbJSiQoZtZkaFwzzQq:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800 ,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800,Q!FPcQcheNebvdFvmOnr:localhost:8800+Q !FPcQcheNebvdFvmOnr:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhFUhsgQbBWmrnGmaz:localhost:8800 +Q !EhFUhsgQbBWmrnGmaz:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!EhUxBjnSkVXpTrQlrn:localhost:8800 +Q !EhUxBjnSkVXpTrQlrn:localhost:8800 ,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800,Q!FIOuvzpMhoERunVYYA:localhost:8800+Q !FIOuvzpMhoERunVYYA:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800,Q!FAYqpziHeVZugCGaij:localhost:8800+Q !FAYqpziHeVZugCGaij:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyyNoldCLUdFHzXTDP:localhost:8800  +Q !EyyNoldCLUdFHzXTDP:localhost:8800  ,Q!EyEaTZElOkdURKbEXo:localhost:8800==,Q!EyEaTZElOkdURKbEXo:localhost:8800<<,Q!EyEaTZElOkdURKbEXo:localhost:8800;;,Q!EyEaTZElOkdURKbEXo:localhost:8800::,Q!EyEaTZElOkdURKbEXo:localhost:880099,Q!EyEaTZElOkdURKbEXo:localhost:880088,Q!EyEaTZElOkdURKbEXo:localhost:880077+Q !EyEaTZElOkdURKbEXo:localhost:880066,Q!EieRtaCFZJJCIOkRPp:localhost:8800 uu,Q!EieRtaCFZJJCIOkRPp:localhost:8800 tt,Q!EieRtaCFZJJCIOkRPp:localhost:8800 ss,Q!EieRtaCFZJJCIOkRPp:localhost:8800rr,Q!EieRtaCFZJJCIOkRPp:localhost:8800qq,Q!EieRtaCFZJJCIOkRPp:localhost:8800pp,Q!EieRtaCFZJJCIOkRPp:localhost:8800oo,Q!EieRtaCFZJJCIOkRPp:localhost:8800nn,Q!EieRtaCFZJJCIOkRPp:localhost:8800mm,Q!EieRtaCFZJJCIOkRPp:localhost:8800ll+Q !EieRtaCFZJJCIOkRPp:localhost:8800kk,Q!EfJcWhdjNARbuHYrqU:localhost:8800aa,Q!EfJcWhdjNARbuHYrqU:localhost:8800``,Q!EfJcWhdjNARbuHYrqU:localhost:8800__ ,NC 8 - { " p  e ZOD9.|#qf V8eL$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugsha256pUJ2.2.קB8jm vV7eL$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Mssha256O**P1y,d%æuZBNV6eL$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPosha256ָЬXа눉&x˜S*4V5eL$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvosha256^secB6< T/Cu:V4eL$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0sha256UJp\ Q/ղƑ V3eL$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbksha256וcziJd9 _CS"ԨAAAV2eL$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1josha256I3n(KV MS;m{:V1eL$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUsha256f:daTT8a8(|ƵV0eL$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYsha256+s_NW!Q ˏ&PhP0V/eL$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20sha256ՙ'8Km,_·聵^ mV.eL$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8sha2563&-&'C@wI_H[ DjV-eL$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMcsha256V T[֏L:%]ܽW~V,eL$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byosha256!^K*cX u<73/-Zwaf!RSKxˠ?'SV eL$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMsha256Q|MD[0sVeL$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675osha256R=Hky7-1$  ƜVeL$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEsha256'̎.IK($O3bXc-'\FjVeL$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JEsha256H$fҰg$-堮1PwMVeL$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8sha256i~)TodB^hJVeL$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yosha256d'=ϝ򋙅ó@7:Wn*VeL$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0sha256lڿUǼ Kh=x P?SIdO”VeL$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUsha256}-30j҄FsRNZ߮VeL$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogsha256e%rSse&1VeL$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8sha256sM "V1+ bk Yto?VeL$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQsha256>4=+30&Z  dVeL$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMsha2568q-IՕ\˟=jfu=v^VeL$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBssha256h! 9 4/*|%w rmhc TQe!EyEaTZElOkdURKbEXo:localhost:8800$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6ETQe!EyEaTZElOkdURKbEXo:localhost:8800$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugTQe!EyEaTZElOkdURKbEXo:localhost:8800$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7MsTQe!EyEaTZElOkdURKbEXo:localhost:8800$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPoTQe!EyEaTZElOkdURKbEXo:localhost:8800$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvoT Qe !TWETXUgfFZafDdbqLS:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0T Qe !TWETXUgfFZafDdbqLS:localhost:8800$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbkT Qe !TWETXUgfFZafDdbqLS:localhost:8800$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1joT Qe !TWETXUgfFZafDdbqLS:localhost:8800$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUT Qe !TWETXUgfFZafDdbqLS:localhost:8800$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYTQe!TWETXUgfFZafDdbqLS:localhost:8800$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20TQe!TWETXUgfFZafDdbqLS:localhost:8800$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8TQe!TWETXUgfFZafDdbqLS:localhost:8800$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMcTQe!HAFNBarGuVZuWCgwWM:localhost:8800$BeV5z_4UPE_DRrVHJtOw1oX23Hq5zj73SDAUFQ1QoNkTQe!HAFNBarGuVZuWCgwWM:localhost:8800$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byoTQe!HAFNBarGuVZuWCgwWM:localhost:8800$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqYTQe!HAFNBarGuVZuWCgwWM:localhost:8800$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bwTQe!HAFNBarGuVZuWCgwWM:localhost:8800$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQTQe!HAFNBarGuVZuWCgwWM:localhost:8800$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQTQe!HAFNBarGuVZuWCgwWM:localhost:8800$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TAT~Qe!duCKuavMBSfRbTFPsc:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOYT}Qe!duCKuavMBSfRbTFPsc:localhost:8800$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUgT|Qe!duCKuavMBSfRbTFPsc:localhost:8800$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-gT{Qe!duCKuavMBSfRbTFPsc:localhost:8800$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0CkTzQe!duCKuavMBSfRbTFPsc:localhost:8800$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJcTyQe!duCKuavMBSfRbTFPsc:localhost:8800$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKETxQe!duCKuavMBSfRbTFPsc:localhost:8800$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMTwQe!duCKuavMBSfRbTFPsc:localhost:8800$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675oTvQe!TleKOyAElrpgyyrAQA:localhost:8800$daMdPBvh4bjssCbadTihtjyoYVAW4iIPKay6Hjm_6CQTuQe!TleKOyAElrpgyyrAQA:localhost:8800$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbETtQe!TleKOyAElrpgyyrAQA:localhost:8800$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JETsQe!TleKOyAElrpgyyrAQA:localhost:8800$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8TrQe!TleKOyAElrpgyyrAQA:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yoTqQe!TleKOyAElrpgyyrAQA:localhost:8800$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0TpQe!TleKOyAElrpgyyrAQA:localhost:8800$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUToQe!TleKOyAElrpgyyrAQA:localhost:8800$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogTnQe!TleKOyAElrpgyyrAQA:localhost:8800$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8TmQe!TleKOyAElrpgyyrAQA:localhost:8800$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQTlQe!TleKOyAElrpgyyrAQA:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMTkQe!TleKOyAElrpgyyrAQA:localhost:8800$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBsTjQe!IGVHKYcSuxzVPlFHlj:localhost:8800$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08TiQe!IGVHKYcSuxzVPlFHlj:localhost:8800$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMAThQe!IGVHKYcSuxzVPlFHlj:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgTgQe!IGVHKYcSuxzVPlFHlj:localhost:8800$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMTfQe!IGVHKYcSuxzVPlFHlj:localhost:8800$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk Z *(DZfeQ_[$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 277}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-84:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040519435, "hashes": {"sha256": "rD3jVG06ICy/IvG5l3GwW2W6q0rHw1ZhXcCW0Z8G3UQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bcwyjH0SiDaZhjxw3NQefGl6QK8exxRorcWitDHoJbczVBl5tFtfWYEAr14UQLYgxWRAM8lwMth/cw9kZbSRAA"}}, "unsigned": {"age_ts": 1570040519435}}`eQ_O$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 116, "stream_ordering": 276}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg"], "prev_events": ["$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA"], "type": "m.room.aliases", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-83:localhost:8800", "content": {"aliases": ["#test-20191002_181700-4:localhost:8800"]}, "depth": 10, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040516839, "hashes": {"sha256": "tKQMCE3f9SIum075NecFrQDWwe39PYIJdxUR1iMWa/M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RU51A0jnEnKossMMejtquI10OsW/nTqt3SmHGlVIcprJHeDwnnc1q8+X4Bc2Wjj1+zjT73oDHWrIMs4nO9IVBA"}}, "unsigned": {"age_ts": 1570040516839, "replaces_state": "$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA"}}~eQ_ $tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 116, "stream_ordering": 275}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg"], "prev_events": ["$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg"], "type": "m.room.aliases", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-83:localhost:8800", "content": {"aliases": ["#test-20191002_181700-4:localhost:8800", "#__ANON__-10:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040516253, "hashes": {"sha256": "C/GVrJADjsbS0Ds/78iylybewPa8hnH1zVmUh28C1IU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aYdQz4qHH9qiLPLngH1s1HdcA9OhfIUDBBXvp+x3IXdx8RVhoD8xFvdoL9y7yJYu797We362lpJnBuotID9BCQ"}}, "unsigned": {"age_ts": 1570040516253, "replaces_state": "$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM"}}ReQ_3$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800{"token_id": 116, "stream_ordering": 274}{"auth_events": ["$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc", "$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY", "$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs"], "prev_events": ["$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM"], "type": "m.room.member", "room_id": "!IGVHKYcSuxzVPlFHlj:localhost:8800", "sender": "@anon-20191002_181700-83:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-83", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-83:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040515221, "hashes": {"sha256": "iEDlagH56YIq9H8kUhxqIOYa8oTH57tZaizhLwvJPlc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K7JPtguHb6688Y3DE9bo9wuNTe6nhEjRObZlgLMaNgCP5b1CadXJ06MgI/qmCCyZ2+bRo4nT08IU3Z/WlEeqAw"}}, "unsigned": {"age_ts": 1570040515221}} -RM H C > 9 4/*|%w rmhc T?Qe?!RmdhCjvouVLmyIHjaM:localhost:8800$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcT>Qe>!RmdhCjvouVLmyIHjaM:localhost:8800$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8T=Qe=!EyEaTZElOkdURKbEXo:localhost:8800$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7kT<Qe'Q$1570043367291AEdax:localhost:8800 ='Q$1570043366290YSCqz:localhost:8800 <'Q$1570043364288SCpzq:localhost:8800 ;'Q$1570043363287eSyun:localhost:8800 :'Q$1570043362286KwXMK:localhost:8800 9'Q$1570043361285xsPbY:localhost:8800 8'Q$1570043353283ubEdk:localhost:8800 3'Q$1570043352282iTcSU:localhost:8800 2'Q$1570043351281XHPOP:localhost:8800 1'Q$1570043350280ydSwy:localhost:8800 0'Q$1570043347278WlNld:localhost:8800 /'Q$1570043346277FsKPl:localhost:8800 .'Q$1570043346276qTXUF:localhost:8800 -'Q$1570043345275UDVPY:localhost:8800 ,'Q$1570043344274cabjv:localhost:8800 +'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 }'Q$1570043152261Skczg:localhost:8800 |'Q$1570043152260dkyqc:localhost:8800 {'Q$1570043151259knbjg:localhost:8800 z'Q$1570043150258cdaXl:localhost:8800 y%M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800'Q$1570042727237iUlYB:localhost:8800'Q$1570042727236AOaiE:localhost:8800'Q$1570042726235bahBo:localhost:8800'Q$1570042726234miteq:localhost:8800'Q$1570042725233SjCnf:localhost:8800'Q$1570042725232UzIHq:localhost:8800'Q$1570042724231dYSEq:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800'Q$1570042719225dSNgP:localhost:8800%M$15700427177BOUHn:localhost:8829'Q$1570042716222nflqt:localhost:8800'Q$1570042715221Amlxc:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712217nuYrc:localhost:8800 V( h @  x P ( b :  r L $\4 lD|T,f>wQ*X0h@xPpH X( 0  `8 P'Q$1570043372296yAiBq:localhost:8800 @'Q$1570043346277FsKPl:localhost:8800 -'Q$1570043346276qTXUF:localhost:8800 ,'Q$1570043345275UDVPY:localhost:8800 +'Q$1570043341273LsXNn:localhost:8800 *'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043154263raEaa:localhost:8800 }'Q$1570043153262hRyOa:localhost:8800 |'Q$1570043152261Skczg:localhost:8800 {'Q$1570043152260dkyqc:localhost:8800 z 'Q$1570043151259knbjg:localhost:8800 y&O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800'Q$1570042728238dtqIB:localhost:8800'Q$1570042727237iUlYB:localhost:8800'Q$1570042727236AOaiE:localhost:8800'Q$1570042726235bahBo:localhost:8800'Q$1570042726234miteq:localhost:8800'Q$1570042725233SjCnf:localhost:8800'Q$1570042725232UzIHq:localhost:8800'Q$1570042724231dYSEq:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800'Q$1570042718224MBWNJ:localhost:8800%M$15700427177BOUHn:localhost:8829'Q$1570042716222nflqt:localhost:8800'Q$1570042715221Amlxc:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712217nuYrc:localhost:8800'Q$1570042711216KdEEo:localhost:8800'Q$1570042709214PwhVu:localhost:8800%M$15700427086bDrAU:localhost:8829'Q$1570042707212LkSAM:localhost:8800'Q$1570042706211NniIl:localhost:8800'Q$1570042705210LweYn:localhost:8800'Q$1570042704209JQwmT:localhost:8800'Q$1570042704208yLiWU:localhost:8800'Q$1570042703207yqsGA:localhost:8800'Q$1570042702206BIYsS:localhost:8800'Q$1570042700204CxVfq:localhost:8800'Q$1570042699203fHFjU:localhost:8800'Q$1570042698202juBqr:localhost:8800'Q$1570042698201kDowV:localhost:8800'Q$1570042697200mrENr:localhost:88008w'Q$1570043373297SOjrf:localhost:8800 A'Q$1570043367291AEdax:localhost:8800 <'Q$1570043364289XIEhE:localhost:8800 ;'Q$1570043364288SCpzq:localhost:8800 :'Q$1570043363287eSyun:localhost:8800 9'Q$1570043362286KwXMK:localhost:8800 8'Q$1570043354284IVfTL:localhost:8800 3'Q$1570043353283ubEdk:localhost:8800 2'Q$1570043352282iTcSU:localhost:8800 1'Q$1570043351281XHPOP:localhost:8800 0'Q$1570043369294rquKy:localhost:8800 ?'Q$1570043369293ssSMv:localhost:8800 >'Q$1570043368292FAoRb:localhost:8800 =P'Q$1570043374298UIMFg:localhost:8800 B('Q$1570043347278WlNld:localhost:8800 .  reQ_s$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 281}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8"], "type": "m.room.join_rules", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040521940, "hashes": {"sha256": "EP9PaN92pzNJCIrK61RbSQLglmtc9q6FewHq4aacWic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WJI5QK5N53KNeyVc2ghhsQdtImN89gwcQhe0rnXHhGxXST4bXtZArfGDzdABL/RD6r3HQA7U96MYtnTCrRVhCQ"}}, "unsigned": {"age_ts": 1570040521940}}eQ_5$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 280}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ"], "type": "m.room.canonical_alias", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"alias": "#test-20191002_181700-5:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040521314, "hashes": {"sha256": "xgFPog9+8ZYpSiP0tEU/wTIuv8KOZ1jkXAZI4C5As7c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q/Jpz3MbEzGLkZrkPUtwpEjWCAGzXQPkSjn8knmyf3HgYN0rG7JdzwOlcHk+Y2gBwpAdEZuaAouWfkaJXtLDAw"}}, "unsigned": {"age_ts": 1570040521314}}heQ__$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 279}{"auth_events": ["$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "type": "m.room.power_levels", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"users": {"@anon-20191002_181700-84:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040520673, "hashes": {"sha256": "Zt2pp1807NPCjs7xCYnWs45EX8il2350vOf8k4N2EaQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D+X6avNkcZAioYYsZ3c5qQgd9FkoAwq3llySEAlvIZx5g8u5wPPuZ4R4CRgK8qR2w9C5635eBqEfM/zDUw9pDQ"}}, "unsigned": {"age_ts": 1570040520673}}reQ_s$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 278}{"auth_events": ["$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs"], "prev_events": ["$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs"], "type": "m.room.member", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-84", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-84:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040519996, "hashes": {"sha256": "DsdsPv4LYPlIK25nWdcLKvUWSpwxyUGETwuneObD1rY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbMl6t88cD7s8FHDtmXMrXwY0ptYmVpEKGS1lF6iSaaxMqe7/toRpLLMVWKE+JztqA5NnTHQrsGwxqlrOKGfDw"}}, "unsigned": {"age_ts": 1570040519996}}  1Mcr eQ_s$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800{"token_id": 120, "stream_ordering": 289}{"auth_events": ["$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o"], "prev_events": ["$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o"], "type": "m.room.member", "room_id": "!duCKuavMBSfRbTFPsc:localhost:8800", "sender": "@anon-20191002_181700-86:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-86", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-86:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040529553, "hashes": {"sha256": "lSdBEUGUVSRAiUNTTUKOpiDpdT27hTsHu6k1+LVh/iQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gt/+hXtqbHfYSffPS43evoiGU9YivRrbefpgzhuWWtfdRTfmhOHUPM0Ci6HX4lFa79GIPz2ROkE7bq29JLP/BA"}}, "unsigned": {"age_ts": 1570040529553}}feQ_[$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800{"token_id": 120, "stream_ordering": 288}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!duCKuavMBSfRbTFPsc:localhost:8800", "sender": "@anon-20191002_181700-86:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-86:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040528947, "hashes": {"sha256": "NIzV/QnSxx9Ci4zcsLQjfLW6BR3bhVNF8HNRKTkDc24"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U3SAJsWLikKSYGmToG8hT+pT4N3n4Wnc5EMizoW0YjExYUJR+RW1CHJW5ffBN5oENPvMXrsOEiBN7LtkooHeCw"}}, "unsigned": {"age_ts": 1570040528947}}`eQ_O$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 117, "stream_ordering": 287}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo"], "prev_events": ["$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE"], "type": "m.room.aliases", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-85:localhost:8800", "content": {"aliases": ["#test-20191002_181700-5:localhost:8800"]}, "depth": 11, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040527430, "hashes": {"sha256": "X5Zgoz+Ti4r7WG1S0KOP8xZWzjiEsj3755QbJtXOvzk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kWE/C04b6cKG27ZDALvrTLBBMqb+7rI/g+UwNzoF/vQ5kPQPJNQSL+Ne/8vF3c33ufK4pUeXqYHtp1CZW1//DA"}}, "unsigned": {"age_ts": 1570040527430, "replaces_state": "$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8"}}KeQ_%$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 286}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8"], "type": "m.room.canonical_alias", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"alias": "#__ANON__-11:localhost:8800"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040526069, "hashes": {"sha256": "jyfPE4gjVoKK7QkHVSRx/Hd1oXjoFhCNhf+vxfdF0y8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mEJHbCv9uvGggrQZ82V5t1ffGxCKzPOe5GQ3Uf/Pne1aetVZ6BdOQq3V8jqrxdFsBodsR9SzoHp3k5ecRKaqDA"}}, "unsigned": {"age_ts": 1570040526069, "replaces_state": "$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8"}}  4 h 6jfa[a@anon-20191002_181700-70:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRTlUZDpPNk9hOWd5QzF6ZQowMDJmc2lnbmF0dXJlIMqX8UTEG-s93VX8zbWDD8h2DCrhYuDhRBXbHpEs4b09Cg127.0.0.1;d]c@anon-20191002_181700-709:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1wo127.0.0.1d]c@anon-20191002_181700-708:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwo127.0.0.1d]c@anon-20191002_181700-707:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0Fwo127.0.0.1d]c@anon-20191002_181700-706:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQo127.0.0.1d]c@anon-20191002_181700-705:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAo127.0.0.1d]c@anon-20191002_181700-704:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAo127.0.0.1d]c@anon-20191002_181700-703:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQo127.0.0.1d]c@anon-20191002_181700-702:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwo127.0.0.1d]c@anon-20191002_181700-701:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAo127.0.0.1 [ u J {}  s H qFqFoDoDmBk@kB L ! )R' wsHT P % y N # *Q!GwLdUoDplyVUogXDzu:localhost:8800  7*Q!GwLdUoDplyVUogXDzu:localhost:8800  6*Q!GwLdUoDplyVUogXDzu:localhost:8800  5*Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800  *Q!GSxvxNevpCiwmFCHys:localhost:8800 ~ *Q!GSxvxNevpCiwmFCHys:localhost:8800 } *Q!GSxvxNevpCiwmFCHys:localhost:8800 | *Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800(Q!GixhPUMvtKSWoKRgvw:localhost:880054(Q!GixhPUMvtKSWoKRgvw:localhost:880043(Q!GixhPUMvtKSWoKRgvw:localhost:880032(Q!GixhPUMvtKSWoKRgvw:localhost:880021(Q!GixhPUMvtKSWoKRgvw:localhost:880010(Q!GixhPUMvtKSWoKRgvw:localhost:88000/*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800~*Q!GiSxJsKZhQVHBkrVPn:localhost:8800}*Q!GiSxJsKZhQVHBkrVPn:localhost:8800|~*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!FklhVuCInffbDxunWv:localhost:88008=*Q!FklhVuCInffbDxunWv:localhost:88007<*Q!FklhVuCInffbDxunWv:localhost:88006;*Q!FklhVuCInffbDxunWv:localhost:88005:*Q!GsjDgpaxdwYfnefiWO:localhost:8800,*Q!GsjDgpaxdwYfnefiWO:localhost:8800+*Q!GsjDgpaxdwYfnefiWO:localhost:8800**Q!GwLdUoDplyVUogXDzu:localhost:8800  8*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HAFNBarGuVZuWCgwWM:localhost:8800--*Q!HAFNBarGuVZuWCgwWM:localhost:8800,,*Q!HAFNBarGuVZuWCgwWM:localhost:8800++*Q!HAFNBarGuVZuWCgwWM:localhost:8800***Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GwLdUoDplyVUogXDzu:localhost:8800  3*Q!GwLdUoDplyVUogXDzu:localhost:8800  2*Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GsjDgpaxdwYfnefiWO:localhost:8800/!*Q!GsjDgpaxdwYfnefiWO:localhost:8800. *Q!GsjDgpaxdwYfnefiWO:localhost:8800-*Q!HAFNBarGuVZuWCgwWM:localhost:8800))*Q!HAFNBarGuVZuWCgwWM:localhost:8800((*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwLdUoDplyVUogXDzu:localhost:8800  4 Y iFoDmBk@T)}R' { P % y N # w L ! u J  c8 s H q>g<e:*Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!FklhVuCInffbDxunWv:localhost:880088*Q!FklhVuCInffbDxunWv:localhost:880077*Q!FklhVuCInffbDxunWv:localhost:880066*Q!FklhVuCInffbDxunWv:localhost:880055*Q!FklhVuCInffbDxunWv:localhost:880044*Q!FklhVuCInffbDxunWv:localhost:880033*Q!FklhVuCInffbDxunWv:localhost:880022*Q!FklhVuCInffbDxunWv:localhost:880011*Q!FklhVuCInffbDxunWv:localhost:880000*Q!FklhVuCInffbDxunWv:localhost:8800//*Q!FklhVuCInffbDxunWv:localhost:8800..*Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EyEaTZElOkdURKbEXo:localhost:880099*Q!EyEaTZElOkdURKbEXo:localhost:880088*Q!EyEaTZElOkdURKbEXo:localhost:880077*Q!EyEaTZElOkdURKbEXo:localhost:880066*Q!EieRtaCFZJJCIOkRPp:localhost:8800uu*Q!EieRtaCFZJJCIOkRPp:localhost:8800tt*Q!EieRtaCFZJJCIOkRPp:localhost:8800ss*Q!EieRtaCFZJJCIOkRPp:localhost:8800rr*Q!EieRtaCFZJJCIOkRPp:localhost:8800qq*Q!EieRtaCFZJJCIOkRPp:localhost:8800pp*Q!EieRtaCFZJJCIOkRPp:localhost:8800oo*Q!EieRtaCFZJJCIOkRPp:localhost:8800nn*Q!EieRtaCFZJJCIOkRPp:localhost:8800mm*Q!EieRtaCFZJJCIOkRPp:localhost:8800ll*Q!EieRtaCFZJJCIOkRPp:localhost:8800kk*Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!EhUxBjnSkVXpTrQlrn:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800*Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyyNoldCLUdFHzXTDP:localhost:8800  *Q!EyEaTZElOkdURKbEXo:localhost:8800==*Q!EyEaTZElOkdURKbEXo:localhost:8800<<*Q!EyEaTZElOkdURKbEXo:localhost:8800;;*Q!EyEaTZElOkdURKbEXo:localhost:8800:: ~z v r n j fb^ZVRNJFeeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800eeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g!duCKuavMBSfRbTFPsc:localhost:8800eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck!duCKuavMBSfRbTFPsc:localhost:8800eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800eeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800}eeQ$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800|eeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800{eeQ$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800zeeQ$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800yeeQ$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800xeeQ$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800weeQ$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800veeQ$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800  y~eQ_ $y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 117, "stream_ordering": 285}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo"], "prev_events": ["$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo"], "type": "m.room.aliases", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-85:localhost:8800", "content": {"aliases": ["#test-20191002_181700-5:localhost:8800", "#__ANON__-11:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040525220, "hashes": {"sha256": "u1OM75+1eg3D7W8e3SwWDQPJ8aLGVEcjkhGqJCmMQw8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GFMJtNvI+4XWAD7i5cisHlEmpcPeUh1Pfm2W1/XCkrX6zEW9ISVI4ENz46j1SHlMRA+cOZSHaSNV8e5IUUCAA"}}, "unsigned": {"age_ts": 1570040525220, "replaces_state": "$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0"}}ReQ_3$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 117, "stream_ordering": 284}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og"], "prev_events": ["$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0"], "type": "m.room.member", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-85:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-85", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-85:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040524217, "hashes": {"sha256": "OsCHjeYyRffh2RDMz7wIYCctSqAEIfGGl8IdTxGp/O0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dfohePob8K4X0enq85jhH0SADDl5oBBB23RkRLtU3pnoTVPadjUExBldpV1O2JbPSgn+RrVLa7wsxqqhewMYBA"}}, "unsigned": {"age_ts": 1570040524217}}eQ_I$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 283}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU"], "type": "m.room.aliases", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"aliases": ["#test-20191002_181700-5:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040523589, "hashes": {"sha256": "nzHDdajUkb6032FFBonZVHpn0Qvqt5lzY88e1T8fLhM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZX5hIcqJ9Nn9o/cnIRrOzVw7Bvsh9FnocxbS/Mg/6EqcURKj6nndPou0cboz4teD7I6pQ3zH3/0/sD5eBkBiCg"}}, "unsigned": {"age_ts": 1570040523589}}eQ_$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800{"token_id": 118, "stream_ordering": 282}{"auth_events": ["$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ", "$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs", "$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM"], "prev_events": ["$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og"], "type": "m.room.history_visibility", "room_id": "!TleKOyAElrpgyyrAQA:localhost:8800", "sender": "@anon-20191002_181700-84:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040522548, "hashes": {"sha256": "IlOxGdxY0yX40YRrhQmT6f+oVUP8Z6qVfZRKyIN7kdU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "11WRxamBEtcOC79c8rk9PVemq0WAPUd68Vbbk4MPZNahPy3vs1ehJkV8e9VCOdLdWRvt32b6DpHN0pGWz8nXAw"}}, "unsigned": {"age_ts": 1570040522548}} x/ [ `A'j. ) n  sW[ -s8z=)P s s s s s s s s<_^Q']!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:88004Q# !HXfrGcvJCbRItyQLVE:localhost:8800m.room.nameBQ? !HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibility:Q/ !HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rules<Q3 !HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels^Q']!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:88006Q' !HXfrGcvJCbRItyQLVE:localhost:8800m.room.create ^Q']!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829EQ))!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800BQ? !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility:Q/ !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules?Q9 !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias<Q3 !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levels^Q']!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:88006Q' !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create^Q']!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800<Q3 !HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levelsK^Q']!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800N^Q']!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800J:Q/ !HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rulesLBQ? !HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibilityM6Q' !HhYREfUiJTpjWmOuPF:localhost:8800m.room.createI<Q3 !HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels^Q']!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800^Q']!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800:Q/ !HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rulesBQ? !HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibility6Q' !HcMGemcRrLnLprOJJR:localhost:8800m.room.create?Q9 !HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_aliasEQ))!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800<Q3 !HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels^Q']!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800^Q']!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800:Q/ !HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rulesBQ? !HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility<Q3 !HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_access6Q' !HZqzpRgqekPOtxstVc:localhost:8800m.room.create<Q3 !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels9^Q']!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800<^Q']!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:88008:Q/ !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rules:BQ? !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibility;6Q' !HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create7c^Q']!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800:Q/ !HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rulesBQ? !HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibility6Q' !HusOrLtWZTLbmQZxmm:localhost:8800m.room.createy ! 5 A k q }5;GqwgQ/ e!EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rules$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugiQ3 e!EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levels$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms Q'[e!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-93:localhost:8800$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPocQ' e!EyEaTZElOkdURKbEXo:localhost:8800m.room.create$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo Q'[e !TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0 Q'[e !TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbki Q3 e !TWETXUgfFZafDdbqLS:localhost:8800m.room.guest_access$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1joo Q? e !TWETXUgfFZafDdbqLS:localhost:8800m.room.history_visibility$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUg Q/ e !TWETXUgfFZafDdbqLS:localhost:8800m.room.join_rules$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYiQ3 e!TWETXUgfFZafDdbqLS:localhost:8800m.room.power_levels$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20 Q'[e!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-91:localhost:8800$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8cQ' e!TWETXUgfFZafDdbqLS:localhost:8800m.room.create$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc Q'[e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-88:localhost:8800$BeV5z_4UPE_DRrVHJtOw1oX23Hq5zj73SDAUFQ1QoNkiQ3 e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.guest_access$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byooQ? e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.history_visibility$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqYgQ/ e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.join_rules$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bwiQ3 e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.power_levels$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ Q'[e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-89:localhost:8800$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQcQ' e!HAFNBarGuVZuWCgwWM:localhost:8800m.room.create$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA ~Q'[e!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY }Q'[e!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUgi|Q3 e!duCKuavMBSfRbTFPsc:localhost:8800m.room.guest_access$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-go{Q? e!duCKuavMBSfRbTFPsc:localhost:8800m.room.history_visibility$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0CkgzQ/ e!duCKuavMBSfRbTFPsc:localhost:8800m.room.join_rules$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJciyQ3 e!duCKuavMBSfRbTFPsc:localhost:8800m.room.power_levels$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE xQ'[e!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-86:localhost:8800$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMcwQ' e!duCKuavMBSfRbTFPsc:localhost:8800m.room.create$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675olvQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$daMdPBvh4bjssCbadTihtjyoYVAW4iIPKay6Hjm_6CQruQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEltQ9 e!TleKOyAElrpgyyrAQA:localhost:8800m.room.canonical_alias$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JErsQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8 rQ'[e!TleKOyAElrpgyyrAQA:localhost:8800m.room.member@anon-20191002_181700-85:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yorqQ))e!TleKOyAElrpgyyrAQA:localhost:8800m.room.aliaseslocalhost:8800$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0 9Oc( w <  Q  e + } C a ,]IEv1cO ;l6DEQ@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800 DEQ@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800DEQ@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800DEQ@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800DEQ@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800DEQ@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800DEQ@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800DEQ@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800DEQ@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800DEQ@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800DEQ@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800CCQ@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800DEQ@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800DEQ@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800DEQ@__ANON__-23:localhost:42455!TSFcaXDBqrCREHRHxv:localhost:8800DEQ@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800DEQ@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:88004E1@__ANON__-20:localhost:42455!6:localhost:42455DEQ@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800DEQ@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800DEQ@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800DEQ@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800DEQ@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800DEQ@__ANON__-14:localhost:42455!UluPYLGXtInKDTjRzp:localhost:8800DEQ@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800DEQ@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800DEQ@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:88004E1@__ANON__-10:localhost:42455!5:localhost:424553C1@__ANON__-0:localhost:42455!0:localhost:424559/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:88009/Q@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88009/Q@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88009/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:88009/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:88009/Q@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:88009/Q@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:88009/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800:1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800:1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800:1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800:1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800:1Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:88009/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800:1Q@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800:1Q@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800:1Q@12:localhost:8800!VCSCNemqikJZiRtxrs:localhost:8829:1Q@11:localhost:8800!StEnDjTJToXKXsOHNf:localhost:8829 2v1K d  k : J Z j z*:JZ jz*:DEQ@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800%qDEQ@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800+DEQ@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800)DEQ@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800'O]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800oO]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800lO]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800aO]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800dO]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800fO]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800jO]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800nO]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800hO]Q@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800kO]Q@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800`O]Q@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800cO]Q@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800eO]Q@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800iO]Q@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800mO]Q@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800gO]Q@anon-20191002_181700-111:localhost:8829!egCvzKpbEwmuvDoBTb:localhost:8800_O]Q@anon-20191002_181700-111:localhost:8829!egCvzKpbEwmuvDoBTb:localhost:8800^O]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800\O]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800[O]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800ZO]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800YO]Q@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800]O]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800XO]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800WO]Q@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800VO]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800UO]Q@anon-20191002_181700-105:localhost:8829!SBEprlZiuliFNSfNmz:localhost:8800TO]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800SO]Q@anon-20191002_181700-103:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800RO]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800QO]Q@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800OO]Q@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800MO]Q@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800PO]Q@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800NDEQ@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800#DEQ@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800!DEQ@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:88005E3@__ANON__-51:localhost:42455!13:localhost:424555E3@__ANON__-50:localhost:42455!13:localhost:424555E3@__ANON__-49:localhost:42455!12:localhost:42455DEQ@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:88005E3@__ANON__-47:localhost:42455!11:localhost:424555E3@__ANON__-46:localhost:42455!10:localhost:424554E1@__ANON__-45:localhost:42455!9:localhost:42455DEQ@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800DEQ@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800 E &L r  + Q w 0V|Aw 0V|5[hk[ @anon-20191002_181700-71:localhost:8800@anon-20191002_181700-71:localhost:8800 anon-20191002_181700-71k[ @anon-20191002_181700-72:localhost:8829@anon-20191002_181700-72:localhost:8829 anon-20191002_181700-72k[ @anon-20191002_181700-70:localhost:8800@anon-20191002_181700-70:localhost:8800 anon-20191002_181700-70k[ @anon-20191002_181700-68:localhost:8800@anon-20191002_181700-68:localhost:8800 anon-20191002_181700-68g[@anon-20191002_181700-66:localhost:8829@anon-20191002_181700-66:localhost:8829 My remote name here_[u@anon-20191002_181700-67:localhost:8800@anon-20191002_181700-67:localhost:8800 My name herek[ @anon-20191002_181700-64:localhost:8800@anon-20191002_181700-64:localhost:8800 anon-20191002_181700-64_[u@anon-20191002_181700-65:localhost:8800@anon-20191002_181700-65:localhost:8800 My name herek[ @anon-20191002_181700-63:localhost:8800@anon-20191002_181700-63:localhost:8800 anon-20191002_181700-63k[ @anon-20191002_181700-62:localhost:8800@anon-20191002_181700-62:localhost:8800 anon-20191002_181700-62k[ @anon-20191002_181700-61:localhost:8800@anon-20191002_181700-61:localhost:8800 anon-20191002_181700-61k[ @anon-20191002_181700-39:localhost:8800@anon-20191002_181700-39:localhost:8800 anon-20191002_181700-39k[ @anon-20191002_181700-38:localhost:8800@anon-20191002_181700-38:localhost:8800 anon-20191002_181700-38k[ @anon-20191002_181700-37:localhost:8800@anon-20191002_181700-37:localhost:8800 anon-20191002_181700-37k[ @anon-20191002_181700-36:localhost:8800@anon-20191002_181700-36:localhost:8800 anon-20191002_181700-36k[ @anon-20191002_181700-35:localhost:8800@anon-20191002_181700-35:localhost:8800 anon-20191002_181700-35k [ @anon-20191002_181700-34:localhost:8800@anon-20191002_181700-34:localhost:8800 anon-20191002_181700-34k [ @anon-20191002_181700-33:localhost:8800@anon-20191002_181700-33:localhost:8800 anon-20191002_181700-33k [ @anon-20191002_181700-32:localhost:8800@anon-20191002_181700-32:localhost:8800 anon-20191002_181700-32k [ @anon-20191002_181700-31:localhost:8800@anon-20191002_181700-31:localhost:8800 anon-20191002_181700-31k [ @anon-20191002_181700-27:localhost:8800@anon-20191002_181700-27:localhost:8800 anon-20191002_181700-27k[ @anon-20191002_181700-26:localhost:8800@anon-20191002_181700-26:localhost:8800 anon-20191002_181700-26k[ @anon-20191002_181700-25:localhost:8800@anon-20191002_181700-25:localhost:8800 anon-20191002_181700-25k[ @anon-20191002_181700-24:localhost:8800@anon-20191002_181700-24:localhost:8800 anon-20191002_181700-24k[ @anon-20191002_181700-22:localhost:8800@anon-20191002_181700-22:localhost:8800 anon-20191002_181700-22k[ @anon-20191002_181700-23:localhost:8800@anon-20191002_181700-23:localhost:8800 anon-20191002_181700-23k[ @anon-20191002_181700-21:localhost:8800@anon-20191002_181700-21:localhost:8800 anon-20191002_181700-21k[ @anon-20191002_181700-20:localhost:8800@anon-20191002_181700-20:localhost:8800 anon-20191002_181700-20k[ @anon-20191002_181700-16:localhost:8800@anon-20191002_181700-16:localhost:8800 anon-20191002_181700-16  N t  -S&L r  + [{ +Kk;[n8]@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800 anon-20191002_181700-113n7]@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800 anon-20191002_181700-112n6]@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-110:localhost:8800 anon-20191002_181700-110n5]@anon-20191002_181700-109:localhost:8800@anon-20191002_181700-109:localhost:8800 anon-20191002_181700-109n4]@anon-20191002_181700-108:localhost:8800@anon-20191002_181700-108:localhost:8800 anon-20191002_181700-108n3]@anon-20191002_181700-107:localhost:8800@anon-20191002_181700-107:localhost:8800 anon-20191002_181700-107n2]@anon-20191002_181700-106:localhost:8800@anon-20191002_181700-106:localhost:8800 anon-20191002_181700-106n1]@anon-20191002_181700-104:localhost:8800@anon-20191002_181700-104:localhost:8800 anon-20191002_181700-104n0]@anon-20191002_181700-102:localhost:8800@anon-20191002_181700-102:localhost:8800 anon-20191002_181700-102n9]@anon-20191002_181700-114:localhost:8800@anon-20191002_181700-114:localhost:8800 anon-20191002_181700-114k%[ @anon-20191002_181700-84:localhost:8800@anon-20191002_181700-84:localhost:8800 anon-20191002_181700-84k$[ @anon-20191002_181700-83:localhost:8800@anon-20191002_181700-83:localhost:8800 anon-20191002_181700-83k#[ @anon-20191002_181700-82:localhost:8800@anon-20191002_181700-82:localhost:8800 anon-20191002_181700-82k"[ @anon-20191002_181700-81:localhost:8800@anon-20191002_181700-81:localhost:8800 anon-20191002_181700-81k![ @anon-20191002_181700-79:localhost:8800@anon-20191002_181700-79:localhost:8800 anon-20191002_181700-79k [ @anon-20191002_181700-77:localhost:8800@anon-20191002_181700-77:localhost:8800 anon-20191002_181700-77k[ @anon-20191002_181700-75:localhost:8800@anon-20191002_181700-75:localhost:8800 anon-20191002_181700-75k[ @anon-20191002_181700-74:localhost:8800@anon-20191002_181700-74:localhost:8800 anon-20191002_181700-74n/]@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-101:localhost:8800 anon-20191002_181700-101k.[ @anon-20191002_181700-99:localhost:8800@anon-20191002_181700-99:localhost:8800 anon-20191002_181700-99k-[ @anon-20191002_181700-97:localhost:8800@anon-20191002_181700-97:localhost:8800 anon-20191002_181700-97k,[ @anon-20191002_181700-95:localhost:8800@anon-20191002_181700-95:localhost:8800 anon-20191002_181700-95k+[ @anon-20191002_181700-93:localhost:8800@anon-20191002_181700-93:localhost:8800 anon-20191002_181700-93k*[ @anon-20191002_181700-91:localhost:8800@anon-20191002_181700-91:localhost:8800 anon-20191002_181700-91k)[ @anon-20191002_181700-89:localhost:8800@anon-20191002_181700-89:localhost:8800 anon-20191002_181700-89k([ @anon-20191002_181700-87:localhost:8800@anon-20191002_181700-87:localhost:8800 anon-20191002_181700-87k'[ @anon-20191002_181700-86:localhost:8800@anon-20191002_181700-86:localhost:8800 anon-20191002_181700-86k&[ @anon-20191002_181700-85:localhost:8800@anon-20191002_181700-85:localhost:8800 anon-20191002_181700-85 Vo M + xVP[a!E@anon-20191002_181700-97:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCgJTJHHIHPPZ127.0.0.1Perl + Net::Async::HTTP/0.44m+O[a!E@anon-20191002_181700-95:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCgRLXRFTIWZT127.0.0.1Perl + Net::Async::HTTP/0.44mN[a!E@anon-20191002_181700-93:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6CgJXLBIPXXNB127.0.0.1Perl + Net::Async::HTTP/0.44mAM[a!E@anon-20191002_181700-90:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCgBJDBLNAUER127.0.0.1Perl + Net::Async::HTTP/0.44mL[a!E@anon-20191002_181700-91:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCgUIADKEMPGA127.0.0.1Perl + Net::Async::HTTP/0.44muIK[a!E@anon-20191002_181700-88:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCgGEBSMXLRDI127.0.0.1Perl + Net::Async::HTTP/0.44mqJ[a!E@anon-20191002_181700-89:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCgOFESILMBJH127.0.0.1Perl + Net::Async::HTTP/0.44ma+I[a!E@anon-20191002_181700-87:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8CgNPXBGXDHGZ127.0.0.1Perl + Net::Async::HTTP/0.44mYH[a!E@anon-20191002_181700-86:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30CgYRHRLSEQYW127.0.0.1Perl + Net::Async::HTTP/0.44m?܃G[a!E@anon-20191002_181700-85:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCgITOHGGKZTV127.0.0.1Perl + Net::Async::HTTP/0.44m, a} { y w u sqomkigeca~eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~ eeQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~~eeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~}eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~|eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~{eeQ$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~zeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~yeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~xeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800~weeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800~veeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~ueeQ$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800~teeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800~seeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800  2 d/aex[!a@anon-20191002_181700-99:localhost:8800ZATUVUGXMYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCgew[!a@anon-20191002_181700-96:localhost:8800TASTZEHNVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCgdv[!a@anon-20191002_181700-97:localhost:8800JTJHHIHPPZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCgdu[!a~@anon-20191002_181700-95:localhost:8800RLXRFTIWZTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCgdt[!a}@anon-20191002_181700-93:localhost:8800JXLBIPXXNBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6Cgds[!a|@anon-20191002_181700-90:localhost:8800BJDBLNAUERMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCgdr[!a{@anon-20191002_181700-91:localhost:8800UIADKEMPGAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCgdq[!az@anon-20191002_181700-88:localhost:8800GEBSMXLRDIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCgdp[!ay@anon-20191002_181700-89:localhost:8800OFESILMBJHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCgdo[!ax@anon-20191002_181700-86:localhost:8800YRHRLSEQYWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30Cgdn[!aw@anon-20191002_181700-87:localhost:8800NPXBGXDHGZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8Cg t 2 R   : Zdbl!%jt Q'[e?!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcd Q' e>!RmdhCjvouVLmyIHjaM:localhost:8800m.room.create$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq87 Q'[ee=!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4 Q'[e  f ^eeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800ӁeeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800FP33Q$44:localhost:42455$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 _3QQ$44:localhost:42455$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 _3QQ$43:localhost:42455$1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 _3QQ$40:localhost:42455$1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 ՁeeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800فeeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800ׁeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:88009eeQ$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800 feeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800 сeeQ$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800 eeQ$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg!ubmTdQFAhrhZkGULDx:localhost:8800 *eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800P33Q$49:localhost:42455$46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$49:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$46:localhost:42455$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$46:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$45:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 P33Q$48:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800 ށeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800 oeeQ$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA!NhWgOTYzEPRwAxRQvS:localhost:8800deeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800eeQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU!jYzridjeihmwPBuwLb:localhost:8800JeeQ$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800 !|t 2 d n  ,  $Rx`p.8 |eQ'[$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829eQ'[$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829geQ3 $IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_accessmeQ? $RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibilityeeQ/ $w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rulesg eQ3 $vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levels eQ'[$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800a eQ' $ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.create eQ'[$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829 eQ'[$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829geQ3 $gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800m.room.guest_accessmeQ? $2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800m.room.history_visibilityeeQ/ $cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rulesgeQ3 $5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levelseQ'[$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-93:localhost:8800aeQ' $GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800m.room.createeQ'[$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800eQ'[$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800geQ3 $iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800m.room.guest_accessmeQ? $ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800m.room.history_visibilitye~eQ/ $HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800m.room.join_rulesg}eQ3 $xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800m.room.power_levels|eQ'[$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-91:localhost:8800a{eQ' $VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800m.room.creategzeQ3 $IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo!HAFNBarGuVZuWCgwWM:localhost:8800m.room.guest_accessmyeQ? $IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY!HAFNBarGuVZuWCgwWM:localhost:8800m.room.history_visibilityexeQ/ $-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw!HAFNBarGuVZuWCgwWM:localhost:8800m.room.join_rulesgweQ3 $OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800m.room.power_levelsveQ'[$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-89:localhost:8800 [X0h@xP(`8`8pH X 0X0  h @  x P ( ` 8  pH  p H h@'Q!GSxvxNevpCiwmFCHys:localhost:8800 q'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800 m'Q!FZOLkaLbBpaibrbHZx:localhost:8800 l'Q!FZOLkaLbBpaibrbHZx:localhost:8800 k'Q!FZOLkaLbBpaibrbHZx:localhost:8800 j'Q!FZOLkaLbBpaibrbHZx:localhost:8800 i'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800 'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800<'Q!EyEaTZElOkdURKbEXo:localhost:8800;'Q!EyEaTZElOkdURKbEXo:localhost:8800:'Q!EyEaTZElOkdURKbEXo:localhost:88009'Q!EyEaTZElOkdURKbEXo:localhost:88008'Q!EyEaTZElOkdURKbEXo:localhost:88007'Q!EyEaTZElOkdURKbEXo:localhost:88006'Q!EyEaTZElOkdURKbEXo:localhost:88005'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:88007'Q!FklhVuCInffbDxunWv:localhost:88006'Q!FklhVuCInffbDxunWv:localhost:88005'Q!FklhVuCInffbDxunWv:localhost:88004'Q!FklhVuCInffbDxunWv:localhost:88003'Q!FklhVuCInffbDxunWv:localhost:88002'Q!FklhVuCInffbDxunWv:localhost:88001'Q!FklhVuCInffbDxunWv:localhost:88000'Q!FklhVuCInffbDxunWv:localhost:8800/'Q!FklhVuCInffbDxunWv:localhost:8800.'Q!FklhVuCInffbDxunWv:localhost:8800-'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FbJSiQoZtZkaFwzzQq:localhost:8800 'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800 fX[C+ i 7  o = 4;yGQ u C  { I  O U#[)a/g5m" sZA1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o/3$40:localhost:424551e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurases1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc m1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw 1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI3$45:localhost:424553$45:localhost:424553$45:localhost:424553$44:localhost:42455 3$44:localhost:42455 3$44:localhost:424553$44:localhost:424553$43:localhost:424553$43:localhost:424553$43:localhost:424551e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasf3$40:localhost:424553$40:localhost:424551e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc o1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw 1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM 1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM 1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM 1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE]1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE\1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE[1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cn1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg,1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM>1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM=1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM<1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kg1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kf1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-ke1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c 1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c 1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c 1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g 71e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g 61e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0 1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0 1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0 1e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IK1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kH1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kG1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kF1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY'1$3:localhost:444051$3:localhost:444051$3:localhost:444051$3:localhost:424551$3:localhost:424551$3:localhost:424551$3:localhost:419851$3:localhost:419851$3:localhost:419851e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoX1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoW1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoV1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU@1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU?1e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU3$45:localhost:424551e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc n  #h/eQ__$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 304}{"auth_events": ["$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "type": "m.room.power_levels", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"users": {"@anon-20191002_181700-91:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040543835, "hashes": {"sha256": "hRGncxreeBZKHJgkol5cR9zK+oGMEZAIbbI5LR+SEb0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wSIkOq44lB7pNnE99YOUD/EiIRp/2mh1whhuzcG5+6JLS8Y8ov23Eh8z+L82FuPJRwDhnzkKQzqgY3kQOdrMDw"}}, "unsigned": {"age_ts": 1570040543835}}r.eQ_s$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 303}{"auth_events": ["$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc"], "prev_events": ["$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc"], "type": "m.room.member", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-91", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-91:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040543371, "hashes": {"sha256": "ahVlYr8XYxHFiMpg5ODxKHMlMjmx3b9zWliETNKQDl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vJg4da0DfSgIqwnrbomVEzNEtMZxxPUJQa5MamZs9DhhxIIEb0AYsyMTZP3g3QkTls9+QEjk0A8J5wt8Qoy+Aw"}}, "unsigned": {"age_ts": 1570040543371}}f-eQ_[$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 302}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-91:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040542665, "hashes": {"sha256": "yPLB1YECa8D0A2K/iQdbZ3fgzZ6FA7TQ69LL/zAIJPs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bpoAEBkecAyqtgH+DI+xpkZ1i4Q/E4DryXv4jCpHJ0ZLMNcNSybhGQvsOp4x/j7n5zECflhdsNkaeX9QPP4ABw"}}, "unsigned": {"age_ts": 1570040542665}}y,eQ_$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo!HAFNBarGuVZuWCgwWM:localhost:8800{"token_id": 121, "stream_ordering": 301}{"auth_events": ["$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ", "$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA", "$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ"], "prev_events": ["$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY"], "type": "m.room.guest_access", "room_id": "!HAFNBarGuVZuWCgwWM:localhost:8800", "sender": "@anon-20191002_181700-89:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040540908, "hashes": {"sha256": "50LOwBZRaBxWO3m9ZEEmNvHnKpV54hFD81/HRddo4qQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AuFWxrBMGCCuxVDzIZXpPR5oiq0L1R91QpfqX708Uj1o2Psqdhg8xmRZ60ekgdhLRuqWAHeM3brffWU3O0+lAQ"}}, "unsigned": {"age_ts": 1570040540908}} a} { y w u sqomkigeca~0eeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~/eeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~.eeQ$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~-eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~,eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~+eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~*eeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~)eeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~(eeQ$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~'eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800~&eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~%eeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~$eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~#eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800~"eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~!eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~ eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc!TWETXUgfFZafDdbqLS:localhost:8800~eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800~eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ!HAFNBarGuVZuWCgwWM:localhost:8800 a} { y w u sqomkigeca]Q]e!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-125:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Disjoin\Q]e!GwXGurbyEmykmmHcHJ:localhost:8800@anon-20191002_181700-124:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsjoin[Q]e!VWYMJxEviBNDdJCuKT:localhost:8800@anon-20191002_181700-123:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsjoinZQ]e!CgVBWWcRJoHEcwoLcq:localhost:8800@anon-20191002_181700-120:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gjoinYQ]e!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-119:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYjoinXQ]e!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-118:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8joinWQ]e!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-117:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEjoinVQ]e!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-116:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYjoinUQ]e!msMfSdLIAvklSSAnci:localhost:8800@anon-20191002_181700-115:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQjoinTQ]e!GgUNbVXspVTpOlaHBl:localhost:8800@anon-20191002_181700-114:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-EjoinSQ]e!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-113:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8joinRQ]e!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-112:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-AjoinQQ]e!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-113:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYjoinPQ]e!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-112:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wjoinOQ]e!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-113:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEjoinNQ]e!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-112:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsjoinMQ]e!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-113:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5AjoinLQ]e!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-112:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsjoinKQ]e!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-113:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkjoinJQ]e!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-112:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMjoinIQ]e!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-113:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUjoinHQ]e!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-112:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYjoinGQ]e!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-113:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wjoinFQ]e!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-112:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIjoinEQ]e!egCvzKpbEwmuvDoBTb:localhost:8800@anon-20191002_181700-109:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUjoinDQ]e!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-110:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukjoinCQ]e!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-109:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcjoinBQ]e!wIhMbfQzYbJobPdwyi:localhost:8800@anon-20191002_181700-108:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wjoinAQ]e!wIhMbfQzYbJobPdwyi:localhost:8800@anon-20191002_181700-107:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEjoin@Q]e!cSUQGmpIsSCBAVTOHo:localhost:8800@anon-20191002_181700-106:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygjoin?Q]e!SBEprlZiuliFNSfNmz:localhost:8800@anon-20191002_181700-104:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsjoin F7Uq8 T  p 7W T  p P  e E & s:TVpr9Uq878e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsosha2568e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUsha2568e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5ksha2568e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0sha256~8e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurassha256i8e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHksha25618e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEsha256m8e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mgsha256U8e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgsha2568e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74csha2568e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egsha2568e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgsha256 8e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIsha256 8e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMsha256 8e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMsha256a8e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-ksha256N8e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5csha2568e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675osha2568e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gsha2568e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0sha2568e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4Isha256 \8e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExssha256L8e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuosha2568e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMsha2568e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5Usha2568e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-Asha256}8e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1ksha256 8e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLksha256g8e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iEsha256 8e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIsha256z8e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYsha2568e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIsha256 {8e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Asha256 8e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_Msha256{1$3:localhost:44405sha256 1$3:localhost:42455sha256 T1$3:localhost:41985sha256 1$3:localhost:37265sha256 3$39:localhost:42455sha256 8e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujosha256b3$38:localhost:42455sha256 8e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaosha256 T3$37:localhost:42455sha256 8e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugsha256 N3$33:localhost:42455sha256 8e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAsha256J8e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4sha256 8e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYsha2568e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Qsha2568e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlssha256E8e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0sha25668e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0ksha2567e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3wsha256 8e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUsha2568e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikksha2568e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAsha2568e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgsha2568e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0sha2568e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwsha2568e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYsha256k8e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Msha2568e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMsha2568e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAosha2568e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6Esha25698e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hgsha2568e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mksha256 .8e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMsha2568e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerAsha2568e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7ksha256 M8e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doosha256C  y2eQ_$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 307}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU"], "type": "m.room.guest_access", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040545783, "hashes": {"sha256": "DIEq9fYffXIXFn6PwFyEvQ8Ta5qNZI8eWbodZzsQV3A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dV5/ah8PHbyuQg17dmN0VvvGlH93NuHP/xdUY0hRUzEmS3GvRrpShQatfYoEL+KvPyEO/WcauV00Z+82CAFaDA"}}, "unsigned": {"age_ts": 1570040545783}}1eQ_$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 306}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY"], "type": "m.room.history_visibility", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040545057, "hashes": {"sha256": "L37Qe6WRXzYQKvaeoJRY9tL62krSGG1ztveVcXZBp1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mnsom60jAQ+o9UKhzHHE9A9P1EkPnu6aV3xHnWqIjEUUUvqdFePoxwmROz6ZRH7tBwflA4k+ltWHdcx3whB8AA"}}, "unsigned": {"age_ts": 1570040545057}}r0eQ_s$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 305}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20"], "type": "m.room.join_rules", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040544416, "hashes": {"sha256": "Q7rr/RAjQHDWohCO8Crw37CqRPZ5RzuZlFEz8b/7md8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nJZCWUjjGRCZ6lMxiduZnA0CV7HdVnGXGF8jw8xWtNuxbzO9ZxXlXOagyZa5UQDyJVkRWrbipYkepVb+7J4KBA"}}, "unsigned": {"age_ts": 1570040544416}} Ezupkfa\WRMHC>94/*%  {vqlgb]XSNID?:5/)#  { u o i c ] W Q K E ? 9 3 - ' !      y s m g a [ U O I C = 7 1 + %    } w q k e _ Y S M G A ; 5 / ) #     { u o i c ] W Q K E ? 9 3 - ' !      y s m g a [ U O I C = 7 1 + %     }wqke_YSMGA;5/)# {uoic]WQKE?93-'! ysmga[UOIC=71+% }wqke_YSMGA;5/)# {uoic]WQKEEEEEEEEEEEEEEEE?93-'! t                                                                                                           ~ } | { w v u t s r p n m l j i f c b a ^ \ [ Z Y W V S R Q O N K J I G E D C B @ > = < ; 9 7 6 5 3 1 0 / - + * ) ' $ # "                                                                                                    ~ } z y x u t s p o n k j g f e b a ` ] \ [ X V S R Q N K J I H F C B A @ > < ; : 8 7 6 5 3 1 0 / . - + ) ( ' & % #Z                                                                                              ~ | { z y w v u t q p o n l k j i g f e d b a ` _ ] \ [ Z X W V U S I H G F D B A @ > = < ; 9 8 7 5 4 3 2 0 / . - + * ) ( & % $ # !                              |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 , &    ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ h                                  } | { z x w v u s r q o n m l k j h g f c b ` _ ^ ] \ [ Z Y X U T S R Q O M L K I H G F D C B A @ ? > ; 9 8 5 4 3 2 1 0 / - , + ( ' & % $ # "                                                                                                                           } z y x w u s r q o n m l j i h g e b a ` ^ ] \ [ Y X W V T S R Q O I H G E B  @ ?  = < 2 : 6 5 0 / . , * ( & $ " !                                                                                                                       ~ } { y x w v t r q p o m k j i h f d c a ` ^ \ [ Y X V T S R Q O M L J I G F E D C A ? > = < : 9 6 5 4 2 0 / . - + * ) ( & % $ # !                auM'_7b:tL$ \ 4 l D  | T ,  d <  t L $\4 lD}U-e=oGW/.2'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570042731243YuOkC:localhost:8800'Q$1570042730242eYFxu:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800'Q$1570042719225dSNgP:localhost:8800%M$15700427177BOUHn:localhost:8829'Q$1570042714220vWWFN:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 'Q$1570043388312YDkJu:localhost:8800 &O$157004338812XhwjX:localhost:8829 'Q$1570043387311DGzYi:localhost:8800 'Q$1570043386310bGMNl:localhost:8800 'Q$1570043385309imdbl:localhost:8800 'Q$1570043384308gPogh:localhost:8800 'Q$1570043383307bhuDV:localhost:8800 'Q$1570043382306WhWIU:localhost:8800 'Q$1570043380304caenp:localhost:8800 'Q$1570043379303bCgUn:localhost:8800 'Q$1570043378302mKBGD:localhost:8800 ~'Q$1570043377301OraEa:localhost:8800 }'Q$1570043377300CLPUi:localhost:8800 |'Q$1570043375299fbyXJ:localhost:8800 {'Q$1570043374298UIMFg:localhost:8800 z'Q$1570043373297SOjrf:localhost:8800 y'Q$1570043372296yAiBq:localhost:8800 x'Q$1570043371295coDXo:localhost:8800 w'Q$1570043369294rquKy:localhost:8800 v'Q$1570043369293ssSMv:localhost:8800 u'Q$1570043368292FAoRb:localhost:8800 t'Q$1570043367291AEdax:localhost:8800 s'Q$1570043366290YSCqz:localhost:8800 r'Q$1570043364289XIEhE:localhost:8800 q'Q$1570043364288SCpzq:localhost:8800 p'Q$1570043363287eSyun:localhost:8800 o'Q$1570043362286KwXMK:localhost:8800 n'Q$1570043361285xsPbY:localhost:8800 m'Q$1570043354284IVfTL:localhost:8800 g'Q$1570043353283ubEdk:localhost:8800 f'Q$1570043352282iTcSU:localhost:8800 e'Q$1570043351281XHPOP:localhost:8800 d'Q$1570043350280ydSwy:localhost:8800 c'Q$1570043347278WlNld:localhost:8800 a'Q$1570043346277FsKPl:localhost:8800 `'Q$1570043346276qTXUF:localhost:8800 _'Q$1570043345275UDVPY:localhost:8800 ^'Q$1570043344274cabjv:localhost:8800 ]'Q$1570043341273LsXNn:localhost:8800 \'Q$1570043195270GcoLc:localhost:8800'Q$1570043195269hcCzg:localhost:8800'Q$1570043194268zlNeZ:localhost:8800'Q$1570043193267ZyDyW:localhost:8800'Q$1570043192266CXqej:localhost:8800'Q$1570043191265cqITi:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152260dkyqc:localhost:8800'Q$1570043151259knbjg:localhost:8800'Q$1570043150258cdaXl:localhost:8800%M$15700427439Hwxyi:localhost:8829'Q$1570042741254DKIYz:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042739252bWghU:localhost:8800'Q$1570042738251iukAg:localhost:8800'Q$1570042737250jmxWx:localhost:8800%M$15700427368TlZQs:localhost:8829'Q$1570042733246cYViL:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042732244zDmQh:localhost:8800 VwO'_7`:rJ" ^ 6  n F  ~ V .  f >  v N &^6nF~V.g?oGW/'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 ~'Q$1570043388312YDkJu:localhost:8800 y&O$157004338812XhwjX:localhost:8829 z'Q$1570043387311DGzYi:localhost:8800 x'Q$1570043386310bGMNl:localhost:8800 w'Q$1570043385309imdbl:localhost:8800 v'Q$1570043384308gPogh:localhost:8800 u'Q$1570043383307bhuDV:localhost:8800 t'Q$1570043382306WhWIU:localhost:8800 s'Q$1570043380304caenp:localhost:8800 r'Q$1570043379303bCgUn:localhost:8800 q'Q$1570043378302mKBGD:localhost:8800 p'Q$1570043377301OraEa:localhost:8800 o'Q$1570043377300CLPUi:localhost:8800 n'Q$1570043375299fbyXJ:localhost:8800 m'Q$1570043374298UIMFg:localhost:8800 l'Q$1570043373297SOjrf:localhost:8800 k'Q$1570043372296yAiBq:localhost:8800 j'Q$1570043371295coDXo:localhost:8800 i'Q$1570043369294rquKy:localhost:8800 h'Q$1570043369293ssSMv:localhost:8800 g'Q$1570043368292FAoRb:localhost:8800 f'Q$1570043367291AEdax:localhost:8800 e'Q$1570043366290YSCqz:localhost:8800 d'Q$1570043364289XIEhE:localhost:8800 c'Q$1570043364288SCpzq:localhost:8800 b'Q$1570043363287eSyun:localhost:8800 a'Q$1570043362286KwXMK:localhost:8800 `'Q$1570043361285xsPbY:localhost:8800 _'Q$1570043354284IVfTL:localhost:8800 Y'Q$1570043353283ubEdk:localhost:8800 X'Q$1570043352282iTcSU:localhost:8800 W'Q$1570043351281XHPOP:localhost:8800 V'Q$1570043350280ydSwy:localhost:8800 U'Q$1570043347278WlNld:localhost:8800 S'Q$1570043346277FsKPl:localhost:8800 R'Q$1570043346276qTXUF:localhost:8800 Q'Q$1570043345275UDVPY:localhost:8800 P'Q$1570043344274cabjv:localhost:8800 O'Q$1570043341273LsXNn:localhost:8800 N'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 'Q$1570043152261Skczg:localhost:8800 'Q$1570043152260dkyqc:localhost:8800 'Q$1570043151259knbjg:localhost:8800 'Q$1570043150258cdaXl:localhost:8800 &O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 4 o4r6eQ_s$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 311}{"auth_events": ["$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo"], "prev_events": ["$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo"], "type": "m.room.member", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-93", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-93:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040548997, "hashes": {"sha256": "LkWCcVRtNhWnCR5y+vdbuS31NjIK/jBVsddcVkJ1X40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rLMj7QF5Yvy+67QY05nmYS17ozkDQ+Std01SnIr8+n+S9DG1Hpk1xf6CmG1hjXqDtwhky/OE9OYPgDoDjd/Cw"}}, "unsigned": {"age_ts": 1570040548997}}f5eQ_[$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 310}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-93:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040548282, "hashes": {"sha256": "4r0Ta5YvTIKVaQORHa62o3FWORIKd4aV6ULQn2MStYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nK4Dp5OaFCaIgvjzeiG+QPucO/o4WFo2HplWodEZrVpNruupzX9l7TwFpwZJ+OfOb0BMKod7gSFmNVtNeM/sCg"}}, "unsigned": {"age_ts": 1570040548282}}W4eQ_=$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 124, "stream_ordering": 309}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"], "prev_events": ["$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"], "type": "m.room.member", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-90:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-90:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040547070, "hashes": {"sha256": "+KBZmLu9LNTuNV4zNkzyk/gby2Ennt70kb3dA8Vnyw8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SvGtmkjyKELx2mdApTEg6O78S9KGQ/X3sfp6bZepY5BbUmTmQrwZeAeopOBv1ceJgmCdCulZGx7VupFDTiMlDQ"}}, "unsigned": {"age_ts": 1570040547070, "replaces_state": "$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"}} 3eQ_)$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800{"token_id": 123, "stream_ordering": 308}{"auth_events": ["$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20", "$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc", "$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY", "$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8"], "prev_events": ["$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo"], "type": "m.room.member", "room_id": "!TWETXUgfFZafDdbqLS:localhost:8800", "sender": "@anon-20191002_181700-91:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-90", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-90:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040546489, "hashes": {"sha256": "n71V5RQzyhPdAfnwSV1A2YqnwfVgw3SG7Jj/9f4gaZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oI/W+faj8cFQ+HmbpHUXqhSeg8fppOXdqwsvgkf+83quq2jcxjYoE7H5aAZDwic3L0/kVOG/80RARlhehiQjCw"}}, "unsigned": {"age_ts": 1570040546489, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-91:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-91:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-91", "avatar_url": null}, "sender": "@anon-20191002_181700-91:localhost:8800"}]}} \`:rJ" ^ 6  n F  ~ V .  f >  v N &^6nF~V.g?wO'_7oGW/'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 'Q$1570043388312YDkJu:localhost:8800 &O$157004338812XhwjX:localhost:8829 'Q$1570043387311DGzYi:localhost:8800 'Q$1570043386310bGMNl:localhost:8800 'Q$1570043385309imdbl:localhost:8800 'Q$1570043384308gPogh:localhost:8800 'Q$1570043383307bhuDV:localhost:8800 'Q$1570043382306WhWIU:localhost:8800 'Q$1570043380304caenp:localhost:8800 'Q$1570043379303bCgUn:localhost:8800 'Q$1570043378302mKBGD:localhost:8800 'Q$1570043377301OraEa:localhost:8800 'Q$1570043377300CLPUi:localhost:8800 'Q$1570043375299fbyXJ:localhost:8800 'Q$1570043374298UIMFg:localhost:8800 'Q$1570043373297SOjrf:localhost:8800 'Q$1570043372296yAiBq:localhost:8800 'Q$1570043371295coDXo:localhost:8800 'Q$1570043369294rquKy:localhost:8800 'Q$1570043369293ssSMv:localhost:8800 'Q$1570043368292FAoRb:localhost:8800 'Q$1570043367291AEdax:localhost:8800 ~'Q$1570043366290YSCqz:localhost:8800 }'Q$1570043364289XIEhE:localhost:8800 |'Q$1570043364288SCpzq:localhost:8800 {'Q$1570043363287eSyun:localhost:8800 z'Q$1570043362286KwXMK:localhost:8800 y'Q$1570043361285xsPbY:localhost:8800 x'Q$1570043354284IVfTL:localhost:8800 r'Q$1570043353283ubEdk:localhost:8800 q'Q$1570043352282iTcSU:localhost:8800 p'Q$1570043351281XHPOP:localhost:8800 o'Q$1570043350280ydSwy:localhost:8800 n'Q$1570043347278WlNld:localhost:8800 l'Q$1570043346277FsKPl:localhost:8800 k'Q$1570043346276qTXUF:localhost:8800 j'Q$1570043345275UDVPY:localhost:8800 i'Q$1570043344274cabjv:localhost:8800 h'Q$1570043341273LsXNn:localhost:8800 g'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 'Q$1570043152261Skczg:localhost:8800 'Q$1570043152260dkyqc:localhost:8800 'Q$1570043151259knbjg:localhost:8800 'Q$1570043150258cdaXl:localhost:8800 &O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 Y`8pH X 0  h @  x P ( ` 8  q I !Y1 iAyQ)a9qI!Y1 iAyQ)'Q$'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 i'Q$1570043391316OJaBO:localhost:8800 h'Q$1570043388312YDkJu:localhost:8800 f&O$157004338812XhwjX:localhost:8829 g'Q$1570043387311DGzYi:localhost:8800 e'Q$1570043386310bGMNl:localhost:8800 d'Q$1570043385309imdbl:localhost:8800 c'Q$1570043384308gPogh:localhost:8800 b'Q$1570043383307bhuDV:localhost:8800 a'Q$1570043382306WhWIU:localhost:8800 `'Q$1570043380304caenp:localhost:8800 _'Q$1570043379303bCgUn:localhost:8800 ^'Q$1570043378302mKBGD:localhost:8800 ]'Q$1570043377301OraEa:localhost:8800 \'Q$1570043377300CLPUi:localhost:8800 ['Q$1570043375299fbyXJ:localhost:8800 Z'Q$1570043374298UIMFg:localhost:8800 Y'Q$1570043373297SOjrf:localhost:8800 X'Q$1570043372296yAiBq:localhost:8800 W'Q$1570043371295coDXo:localhost:8800 V'Q$1570043369294rquKy:localhost:8800 U'Q$1570043369293ssSMv:localhost:8800 T'Q$1570043368292FAoRb:localhost:8800 S'Q$1570043367291AEdax:localhost:8800 R'Q$1570043366290YSCqz:localhost:8800 Q'Q$1570043364289XIEhE:localhost:8800 P'Q$1570043364288SCpzq:localhost:8800 O'Q$1570043363287eSyun:localhost:8800 N'Q$1570043362286KwXMK:localhost:8800 M'Q$1570043361285xsPbY:localhost:8800 L'Q$1570043354284IVfTL:localhost:8800 F'Q$1570043353283ubEdk:localhost:8800 E'Q$1570043352282iTcSU:localhost:8800 D'Q$1570043351281XHPOP:localhost:8800 C'Q$1570043350280ydSwy:localhost:8800 B'Q$1570043347278WlNld:localhost:8800 @'Q$1570043346277FsKPl:localhost:8800 ?'Q$1570043346276qTXUF:localhost:8800 >'Q$1570043345275UDVPY:localhost:8800 ='Q$1570043344274cabjv:localhost:8800 <'Q$1570043341273LsXNn:localhost:8800 ;'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 VwO'_7`:rJ" ^ 6  n F  ~ V .  f >  v N &^6nF~V.g?oGW/'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 'Q$1570042732244zDmQh:localhost:8800 'Q$1570042731243YuOkC:localhost:8800 'Q$1570042730242eYFxu:localhost:8800 'Q$1570042729241UUSiz:localhost:8800 'Q$1570042729240aBRvS:localhost:8800 'Q$1570042728239BMOBm:localhost:8800 'Q$1570042728238dtqIB:localhost:8800 'Q$1570042727237iUlYB:localhost:8800 'Q$1570042727236AOaiE:localhost:8800 'Q$1570042726235bahBo:localhost:8800 'Q$1570042726234miteq:localhost:8800 'Q$1570043428321klTqJ:localhost:8800 'Q$1570043428320JDiOD:localhost:8800 'Q$1570043426319TNjnu:localhost:8800 'Q$1570043425318lLfNb:localhost:8800 'Q$1570043392317hujur:localhost:8800 'Q$1570043391316OJaBO:localhost:8800 ~'Q$1570043388312YDkJu:localhost:8800 y&O$157004338812XhwjX:localhost:8829 z'Q$1570043387311DGzYi:localhost:8800 x'Q$1570043386310bGMNl:localhost:8800 w'Q$1570043385309imdbl:localhost:8800 v'Q$1570043384308gPogh:localhost:8800 u'Q$1570043383307bhuDV:localhost:8800 t'Q$1570043382306WhWIU:localhost:8800 s'Q$1570043380304caenp:localhost:8800 r'Q$1570043379303bCgUn:localhost:8800 q'Q$1570043378302mKBGD:localhost:8800 p'Q$1570043377301OraEa:localhost:8800 o'Q$1570043377300CLPUi:localhost:8800 n'Q$1570043375299fbyXJ:localhost:8800 m'Q$1570043374298UIMFg:localhost:8800 l'Q$1570043373297SOjrf:localhost:8800 k'Q$1570043372296yAiBq:localhost:8800 j'Q$1570043371295coDXo:localhost:8800 i'Q$1570043369294rquKy:localhost:8800 h'Q$1570043369293ssSMv:localhost:8800 g'Q$1570043368292FAoRb:localhost:8800 f'Q$1570043367291AEdax:localhost:8800 e'Q$1570043366290YSCqz:localhost:8800 d'Q$1570043364289XIEhE:localhost:8800 c'Q$1570043364288SCpzq:localhost:8800 b'Q$1570043363287eSyun:localhost:8800 a'Q$1570043362286KwXMK:localhost:8800 `'Q$1570043361285xsPbY:localhost:8800 _'Q$1570043354284IVfTL:localhost:8800 Y'Q$1570043353283ubEdk:localhost:8800 X'Q$1570043352282iTcSU:localhost:8800 W'Q$1570043351281XHPOP:localhost:8800 V'Q$1570043350280ydSwy:localhost:8800 U'Q$1570043347278WlNld:localhost:8800 S'Q$1570043346277FsKPl:localhost:8800 R'Q$1570043346276qTXUF:localhost:8800 Q'Q$1570043345275UDVPY:localhost:8800 P'Q$1570043344274cabjv:localhost:8800 O'Q$1570043341273LsXNn:localhost:8800 N'Q$1570043198272DGmin:localhost:8800 'Q$1570043195270GcoLc:localhost:8800 'Q$1570043195269hcCzg:localhost:8800 'Q$1570043194268zlNeZ:localhost:8800 'Q$1570043193267ZyDyW:localhost:8800 'Q$1570043192266CXqej:localhost:8800 'Q$1570043191265cqITi:localhost:8800 'Q$1570043154263raEaa:localhost:8800 'Q$1570043153262hRyOa:localhost:8800 'Q$1570043152261Skczg:localhost:8800 'Q$1570043152260dkyqc:localhost:8800 'Q$1570043151259knbjg:localhost:8800 'Q$1570043150258cdaXl:localhost:8800 &O$157004274411xArrT:localhost:8829 %M$15700427439Hwxyi:localhost:8829 &O$157004274310jCQYA:localhost:8829 'Q$1570042742256IYRor:localhost:8800 'Q$1570042742255yQzPA:localhost:8800 'Q$1570042741254DKIYz:localhost:8800 'Q$1570042740253GkWgu:localhost:8800 'Q$1570042739252bWghU:localhost:8800 'Q$1570042738251iukAg:localhost:8800 'Q$1570042737250jmxWx:localhost:8800 %M$15700427368TlZQs:localhost:8829 'Q$1570042735248drnws:localhost:8800 'Q$1570042734247SfTxR:localhost:8800 'Q$1570042733246cYViL:localhost:8800 'Q$1570042733245smHTZ:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1~e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w]1}e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY\1|e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls[1{e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYZ1ze$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEY1ye$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwX1xe$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcV1we$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwU1ve$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcT1ue$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgS1te$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElER1se$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQQ1re$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQP1qe$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsO1pe$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsN1oe$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwM1ne$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooL1me$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsK1le$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcJ1ke$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AI1je$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAH1ie$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkG1he$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4F1ge$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61EE1fe$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYD1ee$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsC1de$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMB1ce$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIA1be$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA@1ae$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c?1`e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE>1_e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE=1^e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28<1]e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc;1\e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU:1[e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A91Ze$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas81Ye$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc61Xe$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng51We$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI41Ve$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY31Ue$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM21Te$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ11Se$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ01Re$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o/1Qe$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ.1Pe$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU-1Oe$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok,1Ne$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k+1Me$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I*1Le$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4)1Ke$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE(1Je$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI'1Ie$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs&1He$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y%1Ge$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU#1Fe$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs"1Ee$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI 1De$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1Ce$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA1Be$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1Ae$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81@e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1?e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c1>e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1=e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq81<e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k1;e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_41:e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU19e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E18e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug17e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms16e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo15e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo14e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0 ! !AeQ_$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 322}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U"], "type": "m.room.history_visibility", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040559617, "hashes": {"sha256": "U4zLRPJWrY5cb/mELzd5qTZvPLLvHmytSaSGck0gpx0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CqH+aGoajirc6WQwbu+LNZHW3cU/8znDrF7R6SRPru15SrAOsChfo2oVu0Bgsq9nwrkD8OrQCGSJgv7XvRtVAg"}}, "unsigned": {"age_ts": 1570040559617}}r@eQ_s$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 321}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c"], "type": "m.room.join_rules", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040558808, "hashes": {"sha256": "LF7+78i2aBxAwAd7q4IvdrLA8UenBk+cLtvpQNmD6Js"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GerMPztiejFlexBkA5d6ETlV0InJ95Qo1nxyDMgWZ1GeHG8OLYcWD0CkbJsuc0QUTthjnbvPSYmOPK7FZTEjDg"}}, "unsigned": {"age_ts": 1570040558808}}h?eQ__$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 320}{"auth_events": ["$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "type": "m.room.power_levels", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"users": {"@anon-20191002_181700-95:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040558077, "hashes": {"sha256": "3ptWq4Y0JG6L/csKZpm6lpa1EU+QYlo+KlHArDZlBhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PH3oO91yUI9I5adEdyYf8uuD4UslQsF5FxHf86t9In29l2V3v24mYUAyVHp1OTpBULm8oa2GtMwsSqGn02plDg"}}, "unsigned": {"age_ts": 1570040558077}}r>eQ_s$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 319}{"auth_events": ["$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8"], "prev_events": ["$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-95:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040557373, "hashes": {"sha256": "P5LVlKy/fYSUyE66Qso1kiu56Te/9wt1gSieaUUqCpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XLw6IExSRoB1v9NsT/aYLS93LR4be1dPTaif1X1hMk0BVOk1b4IK8HAMdNTuNvQ6b8QlB1OaKmEfIxG2hod5Bw"}}, "unsigned": {"age_ts": 1570040557373}}  y:eQ_$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 315}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E"], "type": "m.room.guest_access", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040551750, "hashes": {"sha256": "nlbh6iPq7aYogHmTC2iHo5U7yDTuWtqbds/AfGR+YlY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TOizQj6BEDGfw9g+S/MlDbzQx9l+5JkJk7Bvg6gWuEBOMXVpPKasSrOUA/zaX3fz9oz+hUnr9SM8++5gfvVjDw"}}, "unsigned": {"age_ts": 1570040551750}}9eQ_$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 314}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug"], "type": "m.room.history_visibility", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040551099, "hashes": {"sha256": "r5SrNWXyYK4b7zxBl4C1uGcag7MJFoXIfjG6W48SpdM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5sMaYih2XuTh9uQX6XtRkAKtWuNu3tZw0yPysl032gFHNxeUhAR8fggnx1O6ylAcnLMR4kEqivg8LcdnrYnaBw"}}, "unsigned": {"age_ts": 1570040551099}}r8eQ_s$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 313}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms"], "type": "m.room.join_rules", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040550324, "hashes": {"sha256": "9zVJHjKPLCsol2LzdZ+AAb+FGVYfg+NUjl3R5QrpAak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BC7Cgfxrp0pkYdamRgGrku2wBmsUUWCGRW6tTmMA4bYUiF5OdMnuCw92vE53TxuQF7HO+skNRNVrXMERCI/FDw"}}, "unsigned": {"age_ts": 1570040550324}}h7eQ__$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 312}{"auth_events": ["$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "type": "m.room.power_levels", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"users": {"@anon-20191002_181700-93:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040549576, "hashes": {"sha256": "KF/J/4ygyMNk74GjjaIgesbmIoCuI5QGiA9wu0M0l/k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GrRgZdAq9YacxTpvgVITNIQZPwL1hm0OUE2XThnu1+Om2NZpy9SPNumHxBUlfXPEEI+kRmy71CR0oqMC+HXuCA"}}, "unsigned": {"age_ts": 1570040549576}} QeF'nO0 w X 9  d F (  n :  j 6  g 3c/a-])Z&V"RO}H1@36:localhost:8800m¨1@35:localhost:8800m‰!7@admin:localhost:8800mc+3]@anon-20191002_181700-149:localhost:8800mf{3]@anon-20191002_181700-146:localhost:8800m^z3]@anon-20191002_181700-144:localhost:8800my3]@anon-20191002_181700-143:localhost:8800mx3]@anon-20191002_181700-142:localhost:8800mw3]@anon-20191002_181700-141:localhost:8800mv3]@anon-20191002_181700-140:localhost:8800mLu3]@anon-20191002_181700-138:localhost:8800mjt3]@anon-20191002_181700-137:localhost:8800mds3]@anon-20191002_181700-136:localhost:8800mIr3]@anon-20191002_181700-134:localhost:8800m3q3]@anon-20191002_181700-132:localhost:8800m&p3]@anon-20191002_181700-131:localhost:8800mHo2[@anon-20191002_181700-12:localhost:8800m 3]@anon-20191002_181700-129:localhost:8800mn3]@anon-20191002_181700-128:localhost:8800m m3]@anon-20191002_181700-127:localhost:8800mul3]@anon-20191002_181700-126:localhost:8800mk3]@anon-20191002_181700-125:localhost:8800mcj3]@anon-20191002_181700-124:localhost:8800mli3]@anon-20191002_181700-123:localhost:8800mlh3]@anon-20191002_181700-122:localhost:8800m_f3]@anon-20191002_181700-121:localhost:8800m_g3]@anon-20191002_181700-120:localhost:8800m9e2[@anon-20191002_181700-11:localhost:8800m? 2[@anon-20191002_181700-11:localhost:8800m 3]@anon-20191002_181700-119:localhost:8800md3]@anon-20191002_181700-118:localhost:8800mc3]@anon-20191002_181700-117:localhost:8800mb3]@anon-20191002_181700-116:localhost:8800mBa3]@anon-20191002_181700-115:localhost:8800mg`3]@anon-20191002_181700-114:localhost:8800m-_3]@anon-20191002_181700-113:localhost:8800m^3]@anon-20191002_181700-112:localhost:8800mɸ]3]@anon-20191002_181700-110:localhost:8800mq\2[@anon-20191002_181700-10:localhost:8800m3]@anon-20191002_181700-109:localhost:8800m[3]@anon-20191002_181700-108:localhost:8800m}Z3]@anon-20191002_181700-107:localhost:8800mpY3]@anon-20191002_181700-106:localhost:8800m[PX3]@anon-20191002_181700-104:localhost:8800mCW3]@anon-20191002_181700-103:localhost:8800m>V3]@anon-20191002_181700-102:localhost:8800m)U3]@anon-20191002_181700-101:localhost:8800mS3]@anon-20191002_181700-100:localhost:8800m"eT/@8:localhost:8800m2/@8:localhost:8800m\/@7:localhost:8800my/@6:localhost:8800mY?/@5:localhost:8800m8/@4:localhost:8800m"/@3:localhost:8800m1@34:localhost:8800ms1@33:localhost:8800m3 1@32:localhost:8800m1@31:localhost:8800m1@30:localhost:8800mq/@2:localhost:8800m޵1@29:localhost:8800mN1@28:localhost:8800m01@27:localhost:8800m1@26:localhost:8800mf1@25:localhost:8800m؍1@24:localhost:8800m1@23:localhost:8800m)1@22:localhost:8800m1@21:localhost:8800md1@20:localhost:8800mN/@1:localhost:8800mȫ1@19:localhost:8800m11@18:localhost:8800mF1@17:localhost:8800mE1@16:localhost:8800m1@15:localhost:8800m1@14:localhost:8800m1@13:localhost:8800mP<1@12:localhost:8800m/Z1@11:localhost:8800m+a B`8g2a,X% Q  } H  t ? k 6  b -Y$P|Iu@ l`-Y$4]@anon-20191002_181700-219:localhost:8800mu4]@anon-20191002_181700-160:localhost:8800m2[@anon-20191002_181700-15:localhost:8800m 4]@anon-20191002_181700-158:localhost:8800m4]@anon-20191002_181700-156:localhost:8800m4]@anon-20191002_181700-154:localhost:8800mqh3]@anon-20191002_181700-153:localhost:8800m`y3]@anon-20191002_181700-152:localhost:8800mKN~3]@anon-20191002_181700-151:localhost:8800m=}3]@anon-20191002_181700-150:localhost:8800m/|4]@anon-20191002_181700-218:localhost:8800mU4]@anon-20191002_181700-217:localhost:8800mU>4]@anon-20191002_181700-216:localhost:8800m/4]@anon-20191002_181700-215:localhost:8800m.4]@anon-20191002_181700-214:localhost:8800m 4]@anon-20191002_181700-213:localhost:8800m I4]@anon-20191002_181700-212:localhost:8800m]4]@anon-20191002_181700-211:localhost:8800mތ4]@anon-20191002_181700-210:localhost:8800m{2[@anon-20191002_181700-20:localhost:8800m[4]@anon-20191002_181700-209:localhost:8800m44]@anon-20191002_181700-208:localhost:8800mCZ4]@anon-20191002_181700-207:localhost:8800m^4]@anon-20191002_181700-206:localhost:8800mw4]@anon-20191002_181700-205:localhost:8800m}4]@anon-20191002_181700-204:localhost:8800mR4]@anon-20191002_181700-203:localhost:8800m e'Q  [$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8m.room.create!RmdhCjvouVLmyIHjaM:localhost:8800mmc@anon-20191002_181700-95:localhost:8800=e'Q [$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7km.room.member!EyEaTZElOkdURKbEXo:localhost:8800mm@anon-20191002_181700-92:localhost:8829<e'Q [$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4m.room.member!EyEaTZElOkdURKbEXo:localhost:8800mhm@anon-20191002_181700-93:localhost:8800%;e3Q [$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UUm.room.guest_access!EyEaTZElOkdURKbEXo:localhost:8800mFm @anon-20191002_181700-93:localhost:8800+:e?Q [$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6Em.room.history_visibility!EyEaTZElOkdURKbEXo:localhost:8800mm@anon-20191002_181700-93:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VdeL$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMsha256:/6dMq3t3VceL$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIsha256jd 0r\c"avyj_VVbeL$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAsha256%ڝ|͟ง7EF6+0VaeL$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0csha256pp+֙,>]Dz@SP/GV`eL$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEsha256pܷ8p;(E\XV_eL$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEsha256MPWn/^4PH_1]V^eL$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28sha256gf ]c }_ O݊oV]eL$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcsha256e &؇rY56GV\eL$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUsha256Ԑ[|Z7@'^ $<*V[eL$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2Asha256ɒ\Ÿbb)I&vE`VZeL$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbassha256eն5UesJLN۶Y@mVYeL$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncsha256TJyЏv}z'Mx梫6bqؿ-RwVXeL$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngsha256uiq ǚ nu(NZYj+>V_[xVWeL$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIsha2565F $ K& aUZn|اixw"eVVeL$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYsha256z8D$u?5pLe>r߇#8+&VUeL$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMsha2562VxhGe'8[ `c^`VTeL$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQsha256a*p{hBp cH-uC~ H$VSeL$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQsha256H<&Od39᛿%a`۬VReL$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9osha256%g ֳjz ˢlVQeL$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQsha256T%R] PlvVO TVPeL$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUsha256wI{"ޒ]Y{Z"'zچ VOeL$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Oksha256/Ĭ KCJx\ꘞMm6F0GVNeL$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-ksha256Hc hUщ@̒:;LB|0?VMeL$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Isha256FUH>1/?KV&g BVLeL$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4sha2562YPL#$dMaGSMYsLSh:>VKeL$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEsha256vk918{a6Zșݧ跴oVJeL$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIsha256uUg y%HKbC8桚lbVIeL$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGssha256q"JYmG34ʹL6MJhkVHeL$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Ysha256a 7Ǟ&^i*6 qqKpS*GFVGeL$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUsha256?=4J6m{f-^~!7YVFeL$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZssha2564zt_*ծ]5I5VEeL$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIsha256m-pMz 3߁Ԋ鍿UȄ>VDeL$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Ysha256aHgT6K da LvgFvVCeL$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAsha256-O  Plz𯕓,eWUTS?WVBeL$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUsha256"^#㣤eL$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcsha256l}Z>KYA{#"EfbGcV=eL$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8sha256zRhcZg{`vѽp.2;KHrV<eL$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7ksha256lwa2p.#xd ƎZ@3V;eL$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4sha256D`,NUؑ(g;i DmOV:eL$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UUsha256}rlop|)u90яD$\EV9eL$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6Esha256ٯ%Jmݣ#$ۙ+^82A' -RM H C > 9 4/*|%w rmhc T?Qe?!HmkcAMkMjWRhTDJMsy:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cT>Qe>!HmkcAMkMjWRhTDJMsy:localhost:8800$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbET=Qe=!HmkcAMkMjWRhTDJMsy:localhost:8800$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhET<QeeeQ$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~=eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800~<eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~;eeQ$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~:eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800~9eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~8eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~7eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~6eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800~5eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~4eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800~3eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800~2eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800~1eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800 ~z v r n j fb^ZVRNJF1eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:88000eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800/eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800.eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800-eeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800,eeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800+eeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800*eeQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800)eeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800(eeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800'eeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800&eeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800%eeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800$eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800#eeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800"eeQ$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800!eeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800 eeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800eeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800  f=eQ_[$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 318}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-95:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040556440, "hashes": {"sha256": "jvnwd7Kc4/JMHnzlphK9TNgEhZYy4G3rUezjBUkRlwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t/OrlSO5iyKlNH94VI0kEsJxWO0Uml4ZkV4nMSI5bTmiWHdQpDmNiFsn555ciNooI7yCB3qKj9P35IyH14gVCA"}}, "unsigned": {"age_ts": 1570040556440}}J<eQa!$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800{"outlier": false, "stream_ordering": 317}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "r56fRX/7SEpJk9SUMF+wOLslg76HwOf8YKV1GR1x8yQ"}, "origin": "localhost:8829", "origin_server_ts": 1570040554996, "prev_events": ["$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4"], "prev_state": [], "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-92:localhost:8829", "state_key": "@anon-20191002_181700-92:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3PUz2FWoxZrsJnL0k2X/NQ0hD0Xp41C7/k7PUXis6jMy/u/YwAsTSDCEphiOrwS2vHfLIUR3luRRN9yKlCB7DA"}, "localhost:8829": {"ed25519:a_UxIG": "G7E20sA/hyZMQ/j3XPIhw8pZgT11tqsMxDlj/REqgiXi6UFacmcRwHiPmkfIiHBD9KVPLHeiyrGzR+EF9RFDDQ"}}, "unsigned": {"age": 93, "replaces_state": "$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4"}} ;eQ_)$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800{"token_id": 125, "stream_ordering": 316}{"auth_events": ["$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms", "$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo", "$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug", "$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo"], "prev_events": ["$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU"], "type": "m.room.member", "room_id": "!EyEaTZElOkdURKbEXo:localhost:8800", "sender": "@anon-20191002_181700-93:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-92", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-92:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040552808, "hashes": {"sha256": "uSCBMSsi/Ugeh005HxMrP3dv15dgQ+J/Mq8mrWMXCJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xvPhmHO0H1LYKmg+b6gZ+qyQ9B87KKfsLpUYAmNFTBXgr00rNAcsufbFrJui6WFTQCl9zWeN1MMFPHFzSEA5Bg"}, "localhost:8829": {"ed25519:a_UxIG": "QfvQTzrdt7nVhJgsYi55TB0BzQXq9dE1/z5EMqtSYN3BZwZCQd25CHg26qsH/icmn3YMMJTUVDi3BxE+n+4cDQ"}}, "unsigned": {"age_ts": 1570040552808, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-93:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-93:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-93", "avatar_url": null}, "sender": "@anon-20191002_181700-93:localhost:8800"}]}} 3\If)}c r 7 y <  J O 2o O yB&Iv9\^Q']!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800U:Q/ !GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rulesWBQ? !GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibilityX<Q3 !GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_accessY6Q' !GSxvxNevpCiwmFCHys:localhost:8800m.room.createT<Q3 !GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels^Q']!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800^Q']!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800:Q/ !GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rulesBQ? !GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility<Q3 !GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_accessBQ? !FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility {:Q/ !FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules z<Q3 !FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levels y^Q']!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800 x6Q' !FZOLkaLbBpaibrbHZx:localhost:8800m.room.create w:Q/ !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rulesBQ? !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility<Q3 !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access<Q3 !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels^Q']!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:88006Q' !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.create6Q' !GGXyLHdVXqhQjPRvac:localhost:8800m.room.create<Q3 !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.power_levels]Q'[!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.member@anon-20191002_181700-68:localhost:8800:Q/ !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.join_rulesBQ? !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.history_visibility6Q' !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.create?Q9 !GGTWnzJfvPQBgQqDIE:localhost:8800m.room.canonical_aliasEQ))!GGTWnzJfvPQBgQqDIE:localhost:8800m.room.aliaseslocalhost:8800<Q3 !FklhVuCInffbDxunWv:localhost:8800m.room.power_levels}^Q']!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800^Q']!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800|:Q/ !FklhVuCInffbDxunWv:localhost:8800m.room.join_rules~BQ? !FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility<Q3 !FklhVuCInffbDxunWv:localhost:8800m.room.guest_access6Q' !FklhVuCInffbDxunWv:localhost:8800m.room.create{<Q3 !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels|^Q']!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800^Q']!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800{:Q/ !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules}BQ? !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility~<Q3 !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_access6Q' !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.createz<Q3 !FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels^Q']!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800HQ'1!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800:Q/ !FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rulesBQ? !FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibility<Q3 !FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_access6Q' !FPcQcheNebvdFvmOnr:localhost:8800m.room.create S  Y : wX#v9CQ e]]Q=$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs@anon-20191002_181700-102:localhost:8800@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800joinanon-20191002_181700-102,P e]]Q$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI@anon-20191002_181700-100:localhost:8800@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800leave,O e]]Q$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800leaveEN e]]Q=$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c@anon-20191002_181700-100:localhost:8800@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800inviteanon-20191002_181700-100CM e]]Q=$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800joinanon-20191002_181700-101*L e[[Q$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas@anon-20191002_181700-98:localhost:8829@anon-20191002_181700-98:localhost:8829!OMkiVTuuOEeiFAXtUY:localhost:8800leave*K e[[Q$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc@anon-20191002_181700-99:localhost:8800@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800leaveBJ e[[Q;$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng@anon-20191002_181700-98:localhost:8829@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800inviteanon-20191002_181700-98@I e[[Q;$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ@anon-20191002_181700-99:localhost:8800@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800joinanon-20191002_181700-99*H e[[Q$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ@anon-20191002_181700-96:localhost:8800@anon-20191002_181700-96:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800leave*G e[[Q$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU@anon-20191002_181700-97:localhost:8800@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800leaveBF e[[Q;$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok@anon-20191002_181700-96:localhost:8800@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800inviteanon-20191002_181700-96@E e[[Q;$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI@anon-20191002_181700-97:localhost:8800@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800joinanon-20191002_181700-97*D e[[Q$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800leaveBC e[[Q;$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800inviteanon-20191002_181700-94*B e[[Q$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800leaveBA e[[Q;$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800inviteanon-20191002_181700-94*@ e[[Q$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800leaveB? e[[Q;$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA@anon-20191002_181700-94:localhost:8829@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800inviteanon-20191002_181700-94@> e[[Q;$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc@anon-20191002_181700-95:localhost:8800@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800joinanon-20191002_181700-95*= e[[Q$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k@anon-20191002_181700-92:localhost:8829@anon-20191002_181700-92:localhost:8829!EyEaTZElOkdURKbEXo:localhost:8800leave  ! GRp. [ Z Z Z Z Z Z Z Z Z  d*d*e  eQ'[$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829leaveaeQ' $ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.create eQ'[$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800m.room.member@anon-20191002_181700-92:localhost:8829leavegeQ3 $gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800m.room.guest_accessm~eQ? $2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800m.room.history_visibilitye}eQ/ $cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug!EyEaTZElOkdURKbEXo:localhost:8800m.room.join_rulesg|eQ3 $5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800m.room.power_levelsgeQ3 $IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_accessmeQ? $RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibilityeeQ/ $w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rulesgeQ3 $vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levels eQ'[$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800join -RM H C > 9 4/*|%w rmhc TlQek!KxhGcTbEWmtgGNpdox:localhost:8800$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkTkQek!KxhGcTbEWmtgGNpdox:localhost:8800$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxATjQej!KxhGcTbEWmtgGNpdox:localhost:8800$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkTiQei!KxhGcTbEWmtgGNpdox:localhost:8800$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4ThQeh!KxhGcTbEWmtgGNpdox:localhost:8800$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61ETgQeg!KxhGcTbEWmtgGNpdox:localhost:8800$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYTfQef!KxhGcTbEWmtgGNpdox:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsTeQee!KxhGcTbEWmtgGNpdox:localhost:8800$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMTdQed!HmkcAMkMjWRhTDJMsy:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OITcQec!HmkcAMkMjWRhTDJMsy:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDATbQeb!HmkcAMkMjWRhTDJMsy:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cTaQea!HmkcAMkMjWRhTDJMsy:localhost:8800$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbET`Qe`!HmkcAMkMjWRhTDJMsy:localhost:8800$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhET_Qe_!HmkcAMkMjWRhTDJMsy:localhost:8800$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28T^Qe^!HmkcAMkMjWRhTDJMsy:localhost:8800$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcT]Qe]!HmkcAMkMjWRhTDJMsy:localhost:8800$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUT\Qe\!HmkcAMkMjWRhTDJMsy:localhost:8800$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2AT[Qe[!OMkiVTuuOEeiFAXtUY:localhost:8800$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasTZQeZ!OMkiVTuuOEeiFAXtUY:localhost:8800$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncTYQeY!OMkiVTuuOEeiFAXtUY:localhost:8800$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngTXQeX!OMkiVTuuOEeiFAXtUY:localhost:8800$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaITWQeW!OMkiVTuuOEeiFAXtUY:localhost:8800$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYTVQeV!OMkiVTuuOEeiFAXtUY:localhost:8800$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMTUQeU!OMkiVTuuOEeiFAXtUY:localhost:8800$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQTTQeT!OMkiVTuuOEeiFAXtUY:localhost:8800$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQTSQeS!OMkiVTuuOEeiFAXtUY:localhost:8800$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9oTRQeR!BrssELMbasSzTFpIXm:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQTQQeQ!BrssELMbasSzTFpIXm:localhost:8800$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUTPQeP!BrssELMbasSzTFpIXm:localhost:8800$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkTOQeO!BrssELMbasSzTFpIXm:localhost:8800$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kTNQeN!BrssELMbasSzTFpIXm:localhost:8800$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0ITMQeM!BrssELMbasSzTFpIXm:localhost:8800$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4TLQeL!BrssELMbasSzTFpIXm:localhost:8800$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirETKQeK!BrssELMbasSzTFpIXm:localhost:8800$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGITJQeJ!BrssELMbasSzTFpIXm:localhost:8800$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsTIQeI!RmdhCjvouVLmyIHjaM:localhost:8800$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YTHQeH!RmdhCjvouVLmyIHjaM:localhost:8800$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUTGQeG!RmdhCjvouVLmyIHjaM:localhost:8800$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsTFQeF!RmdhCjvouVLmyIHjaM:localhost:8800$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsITEQeE!RmdhCjvouVLmyIHjaM:localhost:8800$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YTDQeD!RmdhCjvouVLmyIHjaM:localhost:8800$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtATCQeC!RmdhCjvouVLmyIHjaM:localhost:8800$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUTBQeB!RmdhCjvouVLmyIHjaM:localhost:8800$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8TAQeA!RmdhCjvouVLmyIHjaM:localhost:8800$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_UT@Qe@!RmdhCjvouVLmyIHjaM:localhost:8800$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c E(H C  Dd_i"gEd)Q' e\!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.create$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A7(Q'[ee[!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng7'Q'[eeZ!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ &Q'[eY!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngj%Q3 eX!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.guest_access$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIp$Q? eW!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.history_visibility$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYh#Q/ eV!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.join_rules$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMj"Q3 eU!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.power_levels$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ !Q'[eT!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQd Q' eS!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.create$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o7Q'[eeR!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok7Q'[eeQ!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI Q'[eP!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkjQ3 eO!BrssELMbasSzTFpIXm:localhost:8800m.room.guest_access$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kpQ? eN!BrssELMbasSzTFpIXm:localhost:8800m.room.history_visibility$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IhQ/ eM!BrssELMbasSzTFpIXm:localhost:8800m.room.join_rules$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4jQ3 eL!BrssELMbasSzTFpIXm:localhost:8800m.room.power_levels$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE Q'[eK!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIdQ' eJ!BrssELMbasSzTFpIXm:localhost:8800m.room.create$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs7Q'[eeI!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU7Q'[eeH!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs7Q'[eeG!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI7Q'[eeF!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y7Q'[eeE!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA Q'[eD!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAjQ3 eC!RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_access$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUpQ? eB!RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibility$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8hQ/ eA!RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rules$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_Uj Q3 e@!RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levels$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c $ r$JDeQa!$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800{"outlier": false, "stream_ordering": 325}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "nKbBFLurkwZ1uicSBnp7JhTNchvULPPg6QZ0dA2JJVw"}, "origin": "localhost:8829", "origin_server_ts": 1570040562530, "prev_events": ["$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA"], "prev_state": [], "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-94:localhost:8829", "state_key": "@anon-20191002_181700-94:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2jhG0+AHTkHMPkzjxlPFeUVYp8EwP5Ym1cTb65+3aM5t/7a66XqiwWorUmTvkyRMeJUvycqiR6Hbzh7EUNJ0BA"}, "localhost:8829": {"ed25519:a_UxIG": "IpECeFw7N13qaUsJLz1M/HkJj/YbuJS3ktrlkan8z37TmzG2mDmz46fKoP2txuqtHn+rhZU4gJK7rAbz3TEbBQ"}}, "unsigned": {"age": 84, "replaces_state": "$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA"}} CeQ_)$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 324}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-94", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-94:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040561937, "hashes": {"sha256": "Ba/ur+nzhXfCEAnm7BanNxOHXZztOKMi6Fe8PsQyMYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XnBL/KAmkNF6jm1BPhxRWdqlxzYcX9TLc/3WW02BvNUF4J5A+9tJAxI2k3twwPWyAVKhv+rDo+pBDZm3zzCGDg"}, "localhost:8829": {"ed25519:a_UxIG": "fGCGRw4JiXxRtrDfU6yD0iQl9aD5mMWJCxlm6J8TtjhBUKNKxoevLPDWCsquoEfz5SceJf9MBV9F8tDvFrxeCQ"}}, "unsigned": {"age_ts": 1570040561937, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-95:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "sender": "@anon-20191002_181700-95:localhost:8800"}]}}yBeQ_$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 323}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8"], "type": "m.room.guest_access", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040560830, "hashes": {"sha256": "WZb5AWnXCW93ugdfrRWXyfr/JILNPrxAUk8iLVAsyxg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2lesGTurPviDkDSX9ifulfudX5ypyd68nnPv0t/FftlhZ2snnFr6rReHLGRHw23pkumqaa70LuxQjFOm2pW+CA"}}, "unsigned": {"age_ts": 1570040560830}} RUc8  u J  s H qFoDmBk@g< { P %e:' i>T) y N # w L ! }R*Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800UG*Q!IZkczIYykpZDvjuUWn:localhost:8800 Q *Q!IZkczIYykpZDvjuUWn:localhost:8800 P *Q!IZkczIYykpZDvjuUWn:localhost:8800 O *Q!IZkczIYykpZDvjuUWn:localhost:8800 N *Q!IZkczIYykpZDvjuUWn:localhost:8800 M *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!IZkczIYykpZDvjuUWn:localhost:8800 R *Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IPYMCBwcyNIzqdiIWv:localhost:8800MR*Q!IPYMCBwcyNIzqdiIWv:localhost:8800LQ*Q!IPYMCBwcyNIzqdiIWv:localhost:8800KP*Q!IPYMCBwcyNIzqdiIWv:localhost:8800JO*Q!IPYMCBwcyNIzqdiIWv:localhost:8800IN*Q!IPYMCBwcyNIzqdiIWv:localhost:8800HM*Q!IPYMCBwcyNIzqdiIWv:localhost:8800GL*Q!IPYMCBwcyNIzqdiIWv:localhost:8800FK*Q!IPYMCBwcyNIzqdiIWv:localhost:8800EJ*Q!IPYMCBwcyNIzqdiIWv:localhost:8800DI*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!ILbUVZOfPPwaZRrKJd:localhost:8800DH*Q!ILbUVZOfPPwaZRrKJd:localhost:8800CG*Q!ILbUVZOfPPwaZRrKJd:localhost:8800BF*Q!ILbUVZOfPPwaZRrKJd:localhost:8800AE*Q!ILbUVZOfPPwaZRrKJd:localhost:8800@D*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800WI*Q!IYxUkyFHOgvhLpdkOA:localhost:8800VH*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZL*Q!IYxUkyFHOgvhLpdkOA:localhost:8800YK*Q!IYxUkyFHOgvhLpdkOA:localhost:8800XJ*Q!IZkczIYykpZDvjuUWn:localhost:8800 V *Q!IZkczIYykpZDvjuUWn:localhost:8800 U *Q!IZkczIYykpZDvjuUWn:localhost:8800 T *Q!IZkczIYykpZDvjuUWn:localhost:8800 S *Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ^ ^KFeQa#$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800{"outlier": false, "stream_ordering": 327}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI"], "content": {"membership": "leave"}, "depth": 10, "hashes": {"sha256": "5n+If1sEwoirHMTnLgc8QitEYvTLC+maCdaf7XWJbv4"}, "origin": "localhost:8829", "origin_server_ts": 1570040564254, "prev_events": ["$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI"], "prev_state": [], "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-94:localhost:8829", "state_key": "@anon-20191002_181700-94:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bl+2MgeO0Sz+T+cbg9fCLJWYp+uW5jq78xveSplD1MToJyesqX0u9/9ad+OoaBHVI5ZGg6keACTUB4VlAFTrDQ"}, "localhost:8829": {"ed25519:a_UxIG": "pX68743+yOZphHRJAH3vqRD8WKwwFw9Sam0y0hbJe8XDFEbg7MTZp80Lxsk8kzPaTdY4QWPbUNPKXj4QaHbhBw"}}, "unsigned": {"age": 94, "replaces_state": "$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI"}}OEeQ_-$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 326}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-94", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-94:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040563185, "hashes": {"sha256": "2lbEBznvoKaXbIyYryFwkxkbHC08gllMR9c1PFGlKQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "punViDCSIFy5DVxKapSECiByxaBOpwhohtVcOo04HUEi2gSXiKBJEfFBjA/OnH/C2jSsyC612LY6Evz9EGoaCw"}, "localhost:8829": {"ed25519:a_UxIG": "bAIbQT7ghTu6clmNwxJKIk3zxRAtro9LwbSN+3ms+ovujaP94exEoXbY4uHtuIJjgUJ43fYKjvnEX+JgOQ8bAA"}}, "unsigned": {"age_ts": 1570040563185, "replaces_state": "$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y", "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-95:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "sender": "@anon-20191002_181700-95:localhost:8800"}]}} [qF y N # w L ! u J  oD} s H qFoDsJ! % T) PwL!uJsHR' {*Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800  *Q!GSxvxNevpCiwmFCHys:localhost:8800 ~ ~*Q!GSxvxNevpCiwmFCHys:localhost:8800 } }*Q!GSxvxNevpCiwmFCHys:localhost:8800 | |*Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!GBPGYLDkXcAsHgkfuS:localhost:8800 *Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HIZTeBCxvpMSpcqGVD:localhost:8800*Q!HAFNBarGuVZuWCgwWM:localhost:8800--*Q!HAFNBarGuVZuWCgwWM:localhost:8800,,*Q!HAFNBarGuVZuWCgwWM:localhost:8800++*Q!HAFNBarGuVZuWCgwWM:localhost:8800***Q!HAFNBarGuVZuWCgwWM:localhost:8800))*Q!HAFNBarGuVZuWCgwWM:localhost:8800((*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800*Q!GwXGurbyEmykmmHcHJ:localhost:8800(Q!GixhPUMvtKSWoKRgvw:localhost:880055(Q!GixhPUMvtKSWoKRgvw:localhost:880044(Q!GixhPUMvtKSWoKRgvw:localhost:880033(Q!GixhPUMvtKSWoKRgvw:localhost:880022(Q!GixhPUMvtKSWoKRgvw:localhost:880011(Q!GixhPUMvtKSWoKRgvw:localhost:880000*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800*Q!GiSxJsKZhQVHBkrVPn:localhost:8800~~*Q!GiSxJsKZhQVHBkrVPn:localhost:8800}}*Q!GiSxJsKZhQVHBkrVPn:localhost:8800||*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GgUNbVXspVTpOlaHBl:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGXyLHdVXqhQjPRvac:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GGTWnzJfvPQBgQqDIE:localhost:8800*Q!GsjDgpaxdwYfnefiWO:localhost:8800--*Q!GsjDgpaxdwYfnefiWO:localhost:8800,,*Q!GsjDgpaxdwYfnefiWO:localhost:8800++*Q!GsjDgpaxdwYfnefiWO:localhost:8800***Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GSxvxNevpCiwmFCHys:localhost:8800 *Q!GsjDgpaxdwYfnefiWO:localhost:8800//*Q!GsjDgpaxdwYfnefiWO:localhost:8800..*Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GwLdUoDplyVUogXDzu:localhost:8800  *Q!GSxvxNevpCiwmFCHys:localhost:8800 a} { y w u sqomkigeca~neeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~meeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~leeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~keeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~jeeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800~ieeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~heeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~geeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~feeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~eeeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~deeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~ceeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~beeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~aeeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~`eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~_eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800~^eeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800~]eeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~\eeQ$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~[eeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800~ZeeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~YeeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~XeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800~WeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800~VeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~UeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~TeeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI!RmdhCjvouVLmyIHjaM:localhost:8800~SeeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800~ReeQ$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800~QeeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800~PeeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800 r \rfIeQ_[$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 330}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-97:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040567416, "hashes": {"sha256": "ZsWoUZsXGDTRcbqACyAHJvSvoKoCE57o78yuH9fybOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p/L6Z1aiFy0FRwnSy0NdvdLtxSwWSSJfYJUk0FUFBjg3TCLTZpoQ8tKqMipHghe44XvgmoFBGsV8oU83lI/XCw"}}, "unsigned": {"age_ts": 1570040567416}}LHeQa%$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800{"outlier": false, "stream_ordering": 329}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU"], "content": {"membership": "leave"}, "depth": 12, "hashes": {"sha256": "n2toyo2ZyuoCW43cVFVALAPBcGtDf3dQ8IEDihSLF6Y"}, "origin": "localhost:8829", "origin_server_ts": 1570040565761, "prev_events": ["$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU"], "prev_state": [], "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-94:localhost:8829", "state_key": "@anon-20191002_181700-94:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JFiHL8E3QtDvioOTuSPfkBT4yerDP4ha45DoMAi36MDkSwCMZJjUcsOUHmANUJVDvpfHAqO0mS6ee1aeBYCbBQ"}, "localhost:8829": {"ed25519:a_UxIG": "tiaGm6fA/31NWofDkNAPuaSEqbMx8XS1DT/zlQuJ9K58SF8XIKGkxTq8Z+YrDXPKakeD42JvdH+YyW15zosFBA"}}, "unsigned": {"age": 170, "replaces_state": "$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU"}}PGeQ_/$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800{"token_id": 126, "stream_ordering": 328}{"auth_events": ["$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c", "$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8", "$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U", "$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc"], "prev_events": ["$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs"], "type": "m.room.member", "room_id": "!RmdhCjvouVLmyIHjaM:localhost:8800", "sender": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-94", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-94:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040564919, "hashes": {"sha256": "1KjwutUh1d8ZFve5FFxEzRoyi8oSOWdhT9Y+UQGXwuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jTBf/x6MGc5AkdFlhKH2vfKAfBFCYHpQSoemTw7gAeT4X9QR3UbR3uQEdq2lAPJGH7EPZdcLReTleANAKTaqAA"}, "localhost:8829": {"ed25519:a_UxIG": "vkyWKbmPRFoBaBhsEZ0tECkc5bI/pHCzDk3y60eibBLuoaZsT3PtcQPIvMMQiBH/yftDFCFIPHETM4TeJ5C9CA"}}, "unsigned": {"age_ts": 1570040564919, "replaces_state": "$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs", "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-95:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-95:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-95", "avatar_url": null}, "sender": "@anon-20191002_181700-95:localhost:8800"}]}} AG S _ " k . w : F W d'p3|?LXd(q4}A;A[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOm4;@[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEm4;?[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFm4:>Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWXm4;=[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDm4;<[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNm4;;[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMm4;:[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXm4;9[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCm4;8[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIm4;7[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIm4:6Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOWm4;5[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUDm4;4[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXMm4;3[!@anon-20191002_181700-65:localhost:8800JPWZALXKWPm4;2[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQIm4;1[!@anon-20191002_181700-63:localhost:8800VLTVDGDALOm4;0[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYXm4;/[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUm4;.[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGm4:-Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZSm4;,[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQm4;+[!@anon-20191002_181700-58:localhost:8800XSIUOLPWQXm4;*[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOm4;)[!@anon-20191002_181700-56:localhost:8800UWHMGOHJLQm4;([!@anon-20191002_181700-55:localhost:8800GJICSOZSSMm4;'[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGm4;&[!@anon-20191002_181700-54:localhost:8800MQMQOGGONNm4;%[!@anon-20191002_181700-53:localhost:8800MVQZRCIGFUm4;$[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNm4;#[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBm4;"[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDm4;![!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXm4: Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVLm4;[!@anon-20191002_181700-49:localhost:8800XXZIHXDAZYm4;[!@anon-20191002_181700-48:localhost:8800XFFXACSKIDm4;[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWm46[@anon-20191002_181700-44:localhost:8800xyzzym4;[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXm4;[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXm4;[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYm4;[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKm4;[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHm4;[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKOm4;[!@anon-20191002_181700-35:localhost:8800EALQMPIKHOm4;[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGAm4;[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKNm4;[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCBm4;[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCm4;[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZUm4;[!@anon-20191002_181700-27:localhost:8800TWNKNEABLTm4;[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFLm4; [!@anon-20191002_181700-25:localhost:8800IOMJWWQXRTm4; [!@anon-20191002_181700-24:localhost:8800MRUESCORNAm4; [!@anon-20191002_181700-23:localhost:8800SNOHQGNOOLm4; [!@anon-20191002_181700-22:localhost:8800HVNUPXSZHYm4; [!@anon-20191002_181700-21:localhost:8800KHJDEDTDXIm4;[!@anon-20191002_181700-20:localhost:8800MIHVANNPDDm4;[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTFm4;[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOGm4;[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOWm4;[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQm4=[%@anon-20191002_181700-11:localhost:8800login_devicem4;[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFAm4;[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQGm4 AI U b % } ?  G O  W _!g)o1w9AI Q[<]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGm4'/%@8:localhost:8800guest_devicem4%/!@8:localhost:8800SPYUTHBEKDm4;[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYm4;~[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZm4;}[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLm4<|]!@anon-20191002_181700-153:localhost:8800RAWLINNCFAm4<{]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYGm4 m8f1](!M!7@admin:localhost:8800m44]@anon-20191002_181700-170:localhost:8800m42[@anon-20191002_181700-16:localhost:8800m44]@anon-20191002_181700-169:localhost:8800m44]@anon-20191002_181700-168:localhost:8800m44]@anon-20191002_181700-167:localhost:8800m44]@anon-20191002_181700-165:localhost:8800m44]@anon-20191002_181700-164:localhost:8800m44]@anon-20191002_181700-163:localhost:8800m44]@anon-20191002_181700-162:localhost:8800m44]@anon-20191002_181700-161:localhost:8800m44]@anon-20191002_181700-160:localhost:8800m42[@anon-20191002_181700-15:localhost:8800m44]@anon-20191002_181700-158:localhost:8800m44]@anon-20191002_181700-156:localhost:8800m44]@anon-20191002_181700-154:localhost:8800m43]@anon-20191002_181700-153:localhost:8800m4|3]@anon-20191002_181700-152:localhost:8800m4{3]@anon-20191002_181700-151:localhost:8800m4z3]@anon-20191002_181700-150:localhost:8800m4y2[@anon-20191002_181700-14:localhost:8800m43]@anon-20191002_181700-149:localhost:8800m4x3]@anon-20191002_181700-146:localhost:8800m4w3]@anon-20191002_181700-144:localhost:8800m4v3]@anon-20191002_181700-143:localhost:8800m4u3]@anon-20191002_181700-142:localhost:8800m4t3]@anon-20191002_181700-141:localhost:8800m4s3]@anon-20191002_181700-140:localhost:8800m4r3]@anon-20191002_181700-138:localhost:8800m4q3]@anon-20191002_181700-137:localhost:8800m4p3]@anon-20191002_181700-136:localhost:8800m4o3]@anon-20191002_181700-134:localhost:8800m4n3]@anon-20191002_181700-132:localhost:8800m4m3]@anon-20191002_181700-131:localhost:8800m4l2[@anon-20191002_181700-12:localhost:8800m43]@anon-20191002_181700-129:localhost:8800m4k3]@anon-20191002_181700-128:localhost:8800m4j3]@anon-20191002_181700-127:localhost:8800m4i3]@anon-20191002_181700-126:localhost:8800m4h3]@anon-20191002_181700-125:localhost:8800m4g3]@anon-20191002_181700-124:localhost:8800m4f3]@anon-20191002_181700-123:localhost:8800m4e3]@anon-20191002_181700-122:localhost:8800m4d3]@anon-20191002_181700-121:localhost:8800m4c3]@anon-20191002_181700-120:localhost:8800m4b2[@anon-20191002_181700-11:localhost:8800m42[@anon-20191002_181700-11:localhost:8800m43]@anon-20191002_181700-119:localhost:8800m4a3]@anon-20191002_181700-118:localhost:8800m4`3]@anon-20191002_181700-117:localhost:8800m4_3]@anon-20191002_181700-116:localhost:8800m4^3]@anon-20191002_181700-115:localhost:8800m4]3]@anon-20191002_181700-114:localhost:8800m4\3]@anon-20191002_181700-113:localhost:8800m4[3]@anon-20191002_181700-112:localhost:8800m4Z3]@anon-20191002_181700-110:localhost:8800m4Y1[ @anon-20191002_181700-10:localhost:8800m43]@anon-20191002_181700-109:localhost:8800m4X3]@anon-20191002_181700-108:localhost:8800m4W3]@anon-20191002_181700-107:localhost:8800m4V3]@anon-20191002_181700-106:localhost:8800m4U3]@anon-20191002_181700-104:localhost:8800m4T3]@anon-20191002_181700-103:localhost:8800m4S3]@anon-20191002_181700-102:localhost:8800m4R3]@anon-20191002_181700-101:localhost:8800m4Q3]@anon-20191002_181700-100:localhost:8800m4P/@8:localhost:8800m4/@8:localhost:8800m4 B\a,X# O  { F  r =  i 4 ` +Y$P|Iu@ l7e0\'U 4]@anon-20191002_181700-237:localhost:8800m44]@anon-20191002_181700-236:localhost:8800m44]@anon-20191002_181700-235:localhost:8800m44]@anon-20191002_181700-234:localhost:8800m44]@anon-20191002_181700-233:localhost:8800m44]@anon-20191002_181700-232:localhost:8800m44]@anon-20191002_181700-231:localhost:8800m44]@anon-20191002_181700-230:localhost:8800m42[@anon-20191002_181700-22:localhost:8800m4 4]@anon-20191002_181700-229:localhost:8800m44]@anon-20191002_181700-228:localhost:8800m44]@anon-20191002_181700-227:localhost:8800m44]@anon-20191002_181700-226:localhost:8800m44]@anon-20191002_181700-225:localhost:8800m44]@anon-20191002_181700-224:localhost:8800m44]@anon-20191002_181700-223:localhost:8800m44]@anon-20191002_181700-222:localhost:8800m44]@anon-20191002_181700-221:localhost:8800m44]@anon-20191002_181700-220:localhost:8800m42[@anon-20191002_181700-21:localhost:8800m4 4]@anon-20191002_181700-219:localhost:8800m44]@anon-20191002_181700-218:localhost:8800m44]@anon-20191002_181700-217:localhost:8800m44]@anon-20191002_181700-216:localhost:8800m44]@anon-20191002_181700-215:localhost:8800m44]@anon-20191002_181700-214:localhost:8800m44]@anon-20191002_181700-213:localhost:8800m44]@anon-20191002_181700-212:localhost:8800m44]@anon-20191002_181700-211:localhost:8800m44]@anon-20191002_181700-210:localhost:8800m42[@anon-20191002_181700-20:localhost:8800m44]@anon-20191002_181700-209:localhost:8800m44]@anon-20191002_181700-208:localhost:8800m44]@anon-20191002_181700-207:localhost:8800m44]@anon-20191002_181700-206:localhost:8800m44]@anon-20191002_181700-205:localhost:8800m44]@anon-20191002_181700-204:localhost:8800m44]@anon-20191002_181700-203:localhost:8800m44]@anon-20191002_181700-202:localhost:8800m44]@anon-20191002_181700-201:localhost:8800m44]@anon-20191002_181700-200:localhost:8800m44]@anon-20191002_181700-199:localhost:8800m44]@anon-20191002_181700-198:localhost:8800m44]@anon-20191002_181700-197:localhost:8800m44]@anon-20191002_181700-196:localhost:8800m44]@anon-20191002_181700-195:localhost:8800m44]@anon-20191002_181700-194:localhost:8800m44]@anon-20191002_181700-193:localhost:8800m44]@anon-20191002_181700-192:localhost:8800m44]@anon-20191002_181700-191:localhost:8800m44]@anon-20191002_181700-190:localhost:8800m44]@anon-20191002_181700-189:localhost:8800m44]@anon-20191002_181700-188:localhost:8800m44]@anon-20191002_181700-187:localhost:8800m44]@anon-20191002_181700-186:localhost:8800m44]@anon-20191002_181700-185:localhost:8800m44]@anon-20191002_181700-184:localhost:8800m44]@anon-20191002_181700-183:localhost:8800m44]@anon-20191002_181700-182:localhost:8800m44]@anon-20191002_181700-181:localhost:8800m44]@anon-20191002_181700-179:localhost:8800m44]@anon-20191002_181700-178:localhost:8800m44]@anon-20191002_181700-177:localhost:8800m44]@anon-20191002_181700-176:localhost:8800m44]@anon-20191002_181700-175:localhost:8800m44]@anon-20191002_181700-174:localhost:8800m4 HssAc2d/ _ , \ ' [ & V # S NM}JzEwByFv> 2]@anon-20191002_181700-165:localhost:8800a 2]@anon-20191002_181700-168:localhost:8800a)4]@anon-20191002_181700-167:localhost:8800m%2]@anon-20191002_181700-167:localhost:8800a$4]@anon-20191002_181700-165:localhost:8800m!2]@anon-20191002_181700-202:localhost:8800a}4]@anon-20191002_181700-201:localhost:8800m{2]@anon-20191002_181700-201:localhost:8800az4]@anon-20191002_181700-200:localhost:8800mx2]@anon-20191002_181700-200:localhost:8800aw/Y@anon-20191002_181700-1:localhost:8800a0[@anon-20191002_181700-19:localhost:8800a14]@anon-20191002_181700-199:localhost:8800mu2]@anon-20191002_181700-199:localhost:8800at4]@anon-20191002_181700-198:localhost:8800mr2]@anon-20191002_181700-198:localhost:8800aq4]@anon-20191002_181700-197:localhost:8800mo2]@anon-20191002_181700-197:localhost:8800an2]@anon-20191002_181700-196:localhost:8800ak4]@anon-20191002_181700-195:localhost:8800ml2]@anon-20191002_181700-195:localhost:8800aj4]@anon-20191002_181700-194:localhost:8800mh2]@anon-20191002_181700-194:localhost:8800ag4]@anon-20191002_181700-193:localhost:8800me2]@anon-20191002_181700-193:localhost:8800ad4]@anon-20191002_181700-192:localhost:8800mb2]@anon-20191002_181700-192:localhost:8800aa4]@anon-20191002_181700-191:localhost:8800m_2]@anon-20191002_181700-191:localhost:8800a^4]@anon-20191002_181700-190:localhost:8800m[2]@anon-20191002_181700-190:localhost:8800aZ0[@anon-20191002_181700-18:localhost:8800a04]@anon-20191002_181700-189:localhost:8800mW2]@anon-20191002_181700-189:localhost:8800aV4]@anon-20191002_181700-188:localhost:8800mS2]@anon-20191002_181700-188:localhost:8800aR4]@anon-20191002_181700-187:localhost:8800mO2]@anon-20191002_181700-187:localhost:8800aN4]@anon-20191002_181700-186:localhost:8800mK2]@anon-20191002_181700-186:localhost:8800aJ4]@anon-20191002_181700-185:localhost:8800mH2]@anon-20191002_181700-185:localhost:8800aG4]@anon-20191002_181700-184:localhost:8800mF2]@anon-20191002_181700-184:localhost:8800aE4]@anon-20191002_181700-183:localhost:8800mD2]@anon-20191002_181700-183:localhost:8800aC4]@anon-20191002_181700-182:localhost:8800mB2]@anon-20191002_181700-182:localhost:8800aA4]@anon-20191002_181700-181:localhost:8800m@2]@anon-20191002_181700-181:localhost:8800a?0[@anon-20191002_181700-17:localhost:8800a/4]@anon-20191002_181700-179:localhost:8800m>2]@anon-20191002_181700-179:localhost:8800a<4]@anon-20191002_181700-178:localhost:8800m=2]@anon-20191002_181700-178:localhost:8800a;4]@anon-20191002_181700-177:localhost:8800m:2]@anon-20191002_181700-177:localhost:8800a94]@anon-20191002_181700-176:localhost:8800m82]@anon-20191002_181700-176:localhost:8800a74]@anon-20191002_181700-175:localhost:8800m62]@anon-20191002_181700-175:localhost:8800a44]@anon-20191002_181700-174:localhost:8800m52]@anon-20191002_181700-174:localhost:8800a34]@anon-20191002_181700-173:localhost:8800m22]@anon-20191002_181700-173:localhost:8800a14]@anon-20191002_181700-170:localhost:8800m.2]@anon-20191002_181700-170:localhost:8800a-2[@anon-20191002_181700-16:localhost:8800m.0[@anon-20191002_181700-16:localhost:8800a-4]@anon-20191002_181700-169:localhost:8800m,2]@anon-20191002_181700-169:localhost:8800a+4]@anon-20191002_181700-168:localhost:8800m* !> d L \ f $ %MV<Ky _7eQ# $rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800m.room.namem6eQ? $xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibilitye5eQ/ $U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rulesg4eQ3 $OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels 3eQ']$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800a2eQ' $FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800m.room.create 1eQ']$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800 0eQ']$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800 /eQ']$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800g.eQ3 $rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.guest_accessm-eQ? $TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.history_visibilitye,eQ/ $88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.join_rulesg+eQ3 $te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.power_levels *eQ']$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800a)eQ' $BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.create(eQ'[$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829'eQ'[$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800&eQ'[$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-98:localhost:8829g%eQ3 $pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.guest_accessm$eQ? $ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.history_visibilitye#eQ/ $MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.join_rulesg"eQ3 $1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.power_levels!eQ'[$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.member@anon-20191002_181700-99:localhost:8800a eQ' $0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800m.room.createeQ'[$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800eQ'[$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800eQ'[$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-96:localhost:8800geQ3 $3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800m.room.guest_accessmeQ? $RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800m.room.history_visibilityeeQ/ $MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800m.room.join_rulesgeQ3 $dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800m.room.power_levelseQ'[$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800m.room.member@anon-20191002_181700-97:localhost:8800aeQ' $cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800m.room.create ! !MeQ_$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 334}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4"], "type": "m.room.history_visibility", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040570713, "hashes": {"sha256": "cS1lfNAdsTcRJAXG5sJUA6R3k026UlhANfW9HjNQlEw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9LzAHQDzK2Ya/9UA89qMGg0V4HNJxxx31eEdELLyucXFPPXc04BXThEeBKouNZPEnP7nHakl3YcT18871jhyAQ"}}, "unsigned": {"age_ts": 1570040570713}}rLeQ_s$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 333}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE"], "type": "m.room.join_rules", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040569702, "hashes": {"sha256": "0OFpXass4/MzS4W+/0llafJtTauxQKActAhtq5B9fBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y4Tom0wlCX/zlHKgjlE++ypezsB+iZj9rSn878zbsHYAmhJ4LHvbYVyiaSR1gEjgaOyiVvDUJurDU2iunLiVDA"}}, "unsigned": {"age_ts": 1570040569702}}hKeQ__$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 332}{"auth_events": ["$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "type": "m.room.power_levels", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"users": {"@anon-20191002_181700-97:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040568644, "hashes": {"sha256": "yrpsk0bYIsharwgOl78Sjpo3xPo63tObKhS74Sh9kgw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BEmmo9KxA8LPEITjwkm3/BNz/VrS3jmgVGVH3L6MNYoLoDlspiSb0oJtafL3p8hyN4tbsOHoYOtLY6S8RlipBg"}}, "unsigned": {"age_ts": 1570040568644}}rJeQ_s$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 331}{"auth_events": ["$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs"], "prev_events": ["$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-97", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-97:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040568077, "hashes": {"sha256": "ExVkauMgLo7ik9mHAeTeEjp0cqsbWPKH5Gf0ptTaLKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CnqaSta/4XJOQ/obFTrx+nXG4tubX4xkgPorKPdjmdE4NhIIG8IdhJKek/pZXPBJYXzFMjjqAlUpXMRCcMeiDg"}}, "unsigned": {"age_ts": 1570040568077}}  WPeQ_=$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 337}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-97:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040572995, "hashes": {"sha256": "cI8P8hO4sz7H+m57wdwi+TxXzjq3uLwh01WEl29y660"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rnONWEqtcCOwcwUZJB/UdK2IHH9P23HUGRkKOi0AazczY/PskY6wuLqtYZI5PJqDTPg1nY3+OLGyXtAfyFYuAA"}}, "unsigned": {"age_ts": 1570040572995, "replaces_state": "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"}} OeQ_)$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 336}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-96", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-96:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040572498, "hashes": {"sha256": "SYFKsmnC3+NZhOZua5ZzLYf+2aUhw27xz63S2IX7CmU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rfowuiRGDOfMvYfjARiJ7KUidQzlyOgb6lywp94fVUAk632iicPxym/iS8vePhvA9zDGQO/KfBCtDg8tnuwtBA"}}, "unsigned": {"age_ts": 1570040572498, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-97:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-97:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-97", "avatar_url": null}, "sender": "@anon-20191002_181700-97:localhost:8800"}]}}yNeQ_$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 127, "stream_ordering": 335}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"], "prev_events": ["$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I"], "type": "m.room.guest_access", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-97:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040571668, "hashes": {"sha256": "eZqMx+TS9VC7BEtvp0rcwZIVfBGNd2fJvHkM9ty3lA4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V8ba/A9n3/iGQUF1dHsSYPtQyK2abvtJ1NvmYr5zdB/R8+VLZJd/0+jC3FiNVoW15VoP+RWuwXZxOYKaPoCIDQ"}}, "unsigned": {"age_ts": 1570040571668}} \`8pH X 0  i A  y Q )  a 9  q I !Y1 iAyQ)a9qI!Y1 iA[B(w'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 ~'Q$1570043536368agmuM:localhost:8800 }'Q$1570043536367lvGLr:localhost:8800 |'Q$1570043535366hhblx:localhost:8800 {'Q$1570043534365WVAkx:localhost:8800 z'Q$1570043533364iwqCT:localhost:8800 y'Q$1570043530362jRUtV:localhost:8800 w'Q$1570043529361Oytod:localhost:8800 v'Q$1570043528360cetnZ:localhost:8800 u'Q$1570043527359ScxWW:localhost:8800 t'Q$1570043527358wChxc:localhost:8800 s'Q$1570043525357VEfrE:localhost:8800 r'Q$1570043524356NlySy:localhost:8800 q'Q$1570043523355SbJjm:localhost:8800 p'Q$1570043522354IAAap:localhost:8800 o'Q$1570043521353geZrN:localhost:8800 n'Q$1570043518351Popej:localhost:8800 l'Q$1570043517350ncbDd:localhost:8800 k'Q$1570043517349uVTMj:localhost:8800 j'Q$1570043516348vThZG:localhost:8800 i'Q$1570043515347LGRKl:localhost:8800 h'Q$1570043506346EEQDj:localhost:8800 b'Q$1570043504345DCjlJ:localhost:8800 a'Q$1570043503344dJwGF:localhost:8800 `'Q$1570043503343snlnn:localhost:8800 _'Q$1570043502342mVJmO:localhost:8800 ^'Q$1570043501341JmcnI:localhost:8800 ]'Q$1570043479329kvsXb:localhost:8800 P'Q$1570043478328DMkRS:localhost:8800 O'Q$1570043477327AgpMM:localhost:8800 N'Q$1570043477326hyTqo:localhost:8800 M'Q$1570043476325vnEPO:localhost:8800 L'Q$1570043468324DLhaB:localhost:8800 K'Q$1570043429322ZfcNc:localhost:8800 +'Q$1570043428321klTqJ:localhost:8800 *'Q$1570043428320JDiOD:localhost:8800 )'Q$1570043426319TNjnu:localhost:8800 ('Q$1570043425318lLfNb:localhost:8800 ''Q$1570043391316OJaBO:localhost:8800 'Q$1570043388312YDkJu:localhost:8800 &O$157004338812XhwjX:localhost:8829 'Q$1570043387311DGzYi:localhost:8800 'Q$1570043386310bGMNl:localhost:8800 'Q$1570043385309imdbl:localhost:8800 'Q$1570043384308gPogh:localhost:8800 'Q$1570043383307bhuDV:localhost:8800 'Q$1570043382306WhWIU:localhost:8800 'Q$1570043380304caenp:localhost:8800 'Q$1570043379303bCgUn:localhost:8800 'Q$1570043378302mKBGD:localhost:8800 'Q$1570043377301OraEa:localhost:8800 'Q$1570043377300CLPUi:localhost:8800 'Q$1570043375299fbyXJ:localhost:8800 'Q$1570043374298UIMFg:localhost:8800 'Q$1570043373297SOjrf:localhost:8800 'Q$1570043372296yAiBq:localhost:8800 'Q$1570043371295coDXo:localhost:8800 'Q$1570043369294rquKy:localhost:8800 'Q$1570043369293ssSMv:localhost:8800 'Q$1570043368292FAoRb:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 Y % ;YhTeQ__$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 341}{"auth_events": ["$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "type": "m.room.power_levels", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"users": {"@anon-20191002_181700-99:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040576402, "hashes": {"sha256": "PXsZ8pnrlUq7FzgrafsLkedW1dp43biWiB9z69eql38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mram1VBAK2EBrC+ULoDaFuaaENbhq1lnnQLO2Ioc80lwmmLBjwSq0nRanUV5spqncBLPX3+R9hlwAEsnHj9hDw"}}, "unsigned": {"age_ts": 1570040576402}}rSeQ_s$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 340}{"auth_events": ["$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o"], "prev_events": ["$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o"], "type": "m.room.member", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-99", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-99:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040575891, "hashes": {"sha256": "KupgylG3zWGfAKxEwEOxdd3pQQMw2uFJP0/3bU09bN8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7ArDIde68EUxRvrhB52zdc80HalIwzsWo9xodL2+F2K0gNOeHRdU3nkaOkwov1PvkWL/HZSPVSlulGc7yalDw"}}, "unsigned": {"age_ts": 1570040575891}}fReQ_[$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 339}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-99:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040575082, "hashes": {"sha256": "nfYan8m7he1o5gu/jpMAwCf7cUG95f1nML43uNj0i7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O16ZzUXeLFB1znxQrVtnlbVm2v07ZWVNrzaNMfEs1c+UjZsae4WIZN6w8YiK7oTdKeopJ63AY9Wyh3yRymVqBg"}}, "unsigned": {"age_ts": 1570040575082}}WQeQ_=$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ!BrssELMbasSzTFpIXm:localhost:8800{"token_id": 128, "stream_ordering": 338}{"auth_events": ["$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE", "$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs", "$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok"], "prev_events": ["$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU"], "type": "m.room.member", "room_id": "!BrssELMbasSzTFpIXm:localhost:8800", "sender": "@anon-20191002_181700-96:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-96:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040573547, "hashes": {"sha256": "kwRA4mNSnYcovXSZSQiZO2WIKTLN+G2hM6mt8HaPR7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lGH7e9wgzc5n1KOUrAUx2Y3rSlQzUIbP2Sin64ZT/hFA2IsgXdHWenBivDsgJ45HhKhye9cyyIMQE4Qij9z1BQ"}}, "unsigned": {"age_ts": 1570040573547, "replaces_state": "$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok"}} b] p  q + B@Ndb,ie?Q ]$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4m.room.history_visibility!KxhGcTbEWmtgGNpdox:localhost:8800m43m5@anon-20191002_181700-102:localhost:8800$he/Q ]$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Em.room.join_rules!KxhGcTbEWmtgGNpdox:localhost:8800m1m2@anon-20191002_181700-102:localhost:8800&ge3Q ]$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYm.room.power_levels!KxhGcTbEWmtgGNpdox:localhost:8800m.m/@anon-20191002_181700-102:localhost:8800 fe'Q ]$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsm.room.member!KxhGcTbEWmtgGNpdox:localhost:8800m,ym-@anon-20191002_181700-102:localhost:8800e e'Q  ]$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMm.room.create!KxhGcTbEWmtgGNpdox:localhost:8800m)m*;@anon-20191002_181700-102:localhost:8800 de'Q ] $asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800 m#m#@anon-20191002_181700-100:localhost:8800 ce'Q ]$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800m!em!@anon-20191002_181700-101:localhost:8800 be'Q ]$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800&ae3Q ]$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEm.room.guest_access!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800,`e?Q ]$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEm.room.history_visibility!HmkcAMkMjWRhTDJMsy:localhost:8800mOm@anon-20191002_181700-101:localhost:8800$_e/Q ]$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28m.room.join_rules!HmkcAMkMjWRhTDJMsy:localhost:8800mmb@anon-20191002_181700-101:localhost:8800&^e3Q ]$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcm.room.power_levels!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800 ]e'Q ]$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUm.room.member!HmkcAMkMjWRhTDJMsy:localhost:8800mm@anon-20191002_181700-101:localhost:8800\ e'Q  ]$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2Am.room.create!HmkcAMkMjWRhTDJMsy:localhost:8800m>m@anon-20191002_181700-101:localhost:8800[e'Q [ $0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800 m Lm r@anon-20191002_181700-98:localhost:8829Ze'Q [$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800m]mF@anon-20191002_181700-99:localhost:8800Ye'Q [$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800%Xe3Q [$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIm.room.guest_access!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800+We?Q [$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYm.room.history_visibility!OMkiVTuuOEeiFAXtUY:localhost:8800mm'@anon-20191002_181700-99:localhost:8800#Ve/Q [$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMm.room.join_rules!OMkiVTuuOEeiFAXtUY:localhost:8800mfmR@anon-20191002_181700-99:localhost:8800%Ue3Q [$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQm.room.power_levels!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800Te'Q [$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQm.room.member!OMkiVTuuOEeiFAXtUY:localhost:8800mm@anon-20191002_181700-99:localhost:8800S e'Q  [$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9om.room.create!OMkiVTuuOEeiFAXtUY:localhost:8800mjm@anon-20191002_181700-99:localhost:8800Re'Q [ $hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQm.room.member!BrssELMbasSzTFpIXm:localhost:8800 mkm@anon-20191002_181700-96:localhost:8800 a} { y w u sqomkigeca~ eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~ eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~~eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~}eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~|eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~{eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~zeeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~yeeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~xeeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~weeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~veeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~ueeQ$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ!OMkiVTuuOEeiFAXtUY:localhost:8800~teeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800~seeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~reeQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o!OMkiVTuuOEeiFAXtUY:localhost:8800~qeeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800~peeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800~oeeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800  k 8 l9o31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCgs1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6Cgt/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCgr  7 k 9md]c@anon-20191002_181700-819:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8Qo127.0.0.1d]c@anon-20191002_181700-818:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgo127.0.0.1d]c@anon-20191002_181700-816:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4wo127.0.0.1d]c@anon-20191002_181700-815:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0Qpwo127.0.0.1d]c@anon-20191002_181700-814:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44Fgo127.0.0.1d]c@anon-20191002_181700-813:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgo127.0.0.1d]c@anon-20191002_181700-812:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQo127.0.0.1d]c@anon-20191002_181700-811:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_Ktwgo127.0.0.1d]c@anon-20191002_181700-810:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAo127.0.0.1a[a@anon-20191002_181700-80:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNmhVTjpYa2tYVFY9N0REaQowMDJmc2lnbmF0dXJlIH4g58KgK38OW76mpy3LdB_-Y811-rm096gvwRCT5CyNCg127.0.0.1Bd]c@anon-20191002_181700-809:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgo127.0.0.1 Fo K %lFZ]c!E@anon-20191002_181700-108:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAoKLPFELDKEH127.0.0.1Perl + Net::Async::HTTP/0.44m}Y]c!E@anon-20191002_181700-107:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3woIZRBPAPTCW127.0.0.1Perl + Net::Async::HTTP/0.44mpX]c!E@anon-20191002_181700-106:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQoSACQZSUOIF127.0.0.1Perl + Net::Async::HTTP/0.44m[PW]c!E@anon-20191002_181700-104:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_AoLWMHDFOEAF127.0.0.1Perl + Net::Async::HTTP/0.44mCV]c!E@anon-20191002_181700-103:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigoWCYOWUZDUI127.0.0.1Perl + Net::Async::HTTP/0.44m>ȃU]c!E@anon-20191002_181700-102:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQoGRLAMJPVVL127.0.0.1Perl + Net::Async::HTTP/0.44m)T]c!E@anon-20191002_181700-100:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEU2RHpoLVI4cnJSWFNPT3oKMDAyZnNpZ25hdHVyZSCANCtYnN5AyAhBu5Vj-kkdF3DfWcvAmn8qI0qr-BQc-goDHGUQTFIHG127.0.0.1Perl + Net::Async::HTTP/0.44m"eS]c!E@anon-20191002_181700-101:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6woPXXMUXFBMG127.0.0.1Perl + Net::Async::HTTP/0.44mR[a!E@anon-20191002_181700-99:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCgZATUVUGXMY127.0.0.1Perl + Net::Async::HTTP/0.44m*Q[a!E@anon-20191002_181700-96:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCgTASTZEHNVL127.0.0.1Perl + Net::Async::HTTP/0.44mQ "Y*L 0   I kMX]S^c#YaRQ# eQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.name$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUscQQ' eP!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQaPQ# eO!SBEprlZiuliFNSfNmz:localhost:8800m.room.name$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsoOQ? eN!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibility$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsgNQ/ eM!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rules$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwiMQ3 eL!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo LQ']eK!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIscKQ' eJ!SBEprlZiuliFNSfNmz:localhost:8800m.room.create$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc JQ']eI!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AaIQ# eI!KxhGcTbEWmtgGNpdox:localhost:8800m.room.name$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkcHQ' eH!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAaGQ# eG!KxhGcTbEWmtgGNpdox:localhost:8800m.room.name$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkoFQ? eF!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibility$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4gEQ/ eE!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rules$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61EiDQ3 eD!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY CQ']eC!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWscBQ' eB!KxhGcTbEWmtgGNpdox:localhost:8800m.room.create$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM AQ']eA!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI @Q']e@!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA ?Q']e?!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ci>Q3 e>!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.guest_access$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEo=Q? e=!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.history_visibility$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEg<Q/ e v D   | J  P   V $ z0 \ *T"Z(bHh61e$4AL1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA <1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0 11e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0 01e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0 /1e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU01e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT41e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT41e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw}1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk3$48:localhost:424553$48:localhost:42455 1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA ;1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk3$48:localhost:42455 3$48:localhost:42455 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw~1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU/1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU.1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0R1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA41e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA31e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA21e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA 1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw 1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw 1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw 1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 1e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A1e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A1e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A  \ LD=6/(  d| t l eeQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800 aeeQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc!cosGKKhHvKaVukBCic:localhost:8800eeQ$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800zeeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800zeeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800{eeQ$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800eeQ$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g$-0L2LsKrUJnrbNP2irYaaJqiKzmhNmUqd8R1Ni2Msfc!zNCItZNbpkZKuufRhC:localhost:8800eeQ$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800܁eeQ$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800eeQ$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI!kxTDuIasPNpXtiRsif:localhost:8800oeeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800eeQ$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q!aWbcZNVBalJilCEsdr:localhost:8800reeQ$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800VeeQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800BeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800 jA333$70:localhost:42455$69:localhost:42455!10:localhost:42455 JeeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800\eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800 peeQ$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800eeQ$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800+eeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800weeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800 UeeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800/  yWeQ_$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 344}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY"], "type": "m.room.guest_access", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040578526, "hashes": {"sha256": "JCwF7lEpu1EOHz4EaolX7qNZXbAsz4PiMEx97rciHxI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hl/vdjGzwoG8ECdH00WsqRP7jKXgSt02hKaM4YawlGrzBMuTkqJKInq/Nkvb6Slakzy77bWpsaUxqVnDoDiDCw"}}, "unsigned": {"age_ts": 1570040578526}}VeQ_$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 343}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM"], "type": "m.room.history_visibility", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040577927, "hashes": {"sha256": "vMbriC7P5KrNLu0Y4M31rmP0iqzhycApGRWN7PgHMbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LQ1pbaNuRglqllGVte/uXdWOyBnafYWzO+RfnEJp+qO7BaAZWgxQIEZVysN4t4EFwleJfK1EfrXjsUNT5aVmCw"}}, "unsigned": {"age_ts": 1570040577927}}rUeQ_s$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 342}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ"], "type": "m.room.join_rules", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040577126, "hashes": {"sha256": "EG1DC/weJd16b60pILflK2G2rcPGDip/PN86ZD3+9t8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bh2bZgdAx2xP5qRDcMBrIS4egfPRvYCl8n9fR/rji6LGEyDGkl7i2PVxU+AbzchT+NUeSmOPjHCEBx2bCG+jAw"}}, "unsigned": {"age_ts": 1570040577126}}  KZeQa#$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas!OMkiVTuuOEeiFAXtUY:localhost:8800{"outlier": false, "stream_ordering": 347}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng"], "content": {"membership": "leave"}, "depth": 9, "hashes": {"sha256": "2QL6dNexETtgTtHVbwA53CE2yFEXERF0ysF48aldIK8"}, "origin": "localhost:8829", "origin_server_ts": 1570040580428, "prev_events": ["$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc"], "prev_state": [], "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-98:localhost:8829", "state_key": "@anon-20191002_181700-98:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eWybqMDKt2bjQQHE8suoQ5UuiqjbCJbJD37bPqOLUhKfDJYWt/3K/Vt7TulbFIQ/2lB5DCYzK9mL6EPWNqhsBA"}, "localhost:8829": {"ed25519:a_UxIG": "zc+dLm4rC8237tLE+EFSPKNEaCbqe7L9U4JQ0MO7nwxJnSeYKhS8iXBoD5CS4SySIaCwWbIqotJ0r0mY2GCEBw"}}, "unsigned": {"age": 198, "replaces_state": "$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng"}}WYeQ_=$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 346}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng"], "type": "m.room.member", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-99:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040579677, "hashes": {"sha256": "aPXoSS7Eh284MjSA+YoW95yEVCJhUqx+zipmJdjoIFY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eRgggStCSPv8R0wBClfkS8iBA6JqTasdBgc0n6p9BHcSUHkDLWvWfEIwoYV2LtF3T7swzjFewD60IKM8PwayDQ"}}, "unsigned": {"age_ts": 1570040579677, "replaces_state": "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"}} XeQ_)$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:8800{"token_id": 129, "stream_ordering": 345}{"auth_events": ["$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ", "$0ekGJWf6BKK84Q0X_N_Ws2r596d6t-gLsAjLop1sx9o", "$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM", "$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ"], "prev_events": ["$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI"], "type": "m.room.member", "room_id": "!OMkiVTuuOEeiFAXtUY:localhost:8800", "sender": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-98", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-98:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040579226, "hashes": {"sha256": "sOaEgFwuvit+13s0I/H7QRYJk8FhRyhWeLeAwZON3UI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t9qRFcRga8uWiM0P+geCknXMuA3sCnCqxz1/97ma2jmMqG1Fh6woa3UXF6zGV3KZjT/6E9yWS6KwkcyJgOveAA"}, "localhost:8829": {"ed25519:a_UxIG": "iHNKZzy92cJdYDdzI77QMbdAOUei43Wuk2kq+yb4PyvQgUxjMVpqFi2+CmV5hhPY27/6FoI4RbcfwoYQXYCAAA"}}, "unsigned": {"age_ts": 1570040579226, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-99:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-99:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-99", "avatar_url": null}, "sender": "@anon-20191002_181700-99:localhost:8800"}]}} P; K z w ` "  l . I 2 | > m.w8kH3rU:A$ Q4 Z =   C; [*  . ^>']im.room.member@anon-20191002_181700-110:localhost:8800k='[#m.room.member@anon-20191002_181700-94:localhost:8829#='["m.room.member@anon-20191002_181700-94:localhost:8829""? \m.room.history_visibility^/ [m.room.join_rules]3 Zm.room.power_levels\>']Ym.room.member@anon-20191002_181700-107:localhost:8800[' Xm.room.createZ>']Wm.room.member@anon-20191002_181700-106:localhost:8800Y"? Vm.room.history_visibilityX/ Um.room.join_rulesW3 Tm.room.power_levelsV>']Sm.room.member@anon-20191002_181700-106:localhost:8800U' Rm.room.createT>']Qm.room.member@anon-20191002_181700-105:localhost:8829S# Qm.room.nameR' Pm.room.avatarQ# Om.room.nameP"? Nm.room.history_visibilityO/ Mm.room.join_rulesN3 Lm.room.power_levelsM>']Km.room.member@anon-20191002_181700-104:localhost:8800L' Jm.room.createK>']Im.room.member@anon-20191002_181700-103:localhost:8800J# Im.room.nameI' Hm.room.avatarH# Gm.room.nameG"? Fm.room.history_visibilityF/ Em.room.join_rulesE3 Dm.room.power_levelsD>']Cm.room.member@anon-20191002_181700-102:localhost:8800C' Bm.room.createB>']Am.room.member@anon-20191002_181700-100:localhost:8800A>']@m.room.member@anon-20191002_181700-101:localhost:8800@>']?m.room.member@anon-20191002_181700-100:localhost:8800?3 >m.room.guest_access>"? =m.room.history_visibility=/ ']:m.room.member@anon-20191002_181700-101:localhost:8800:' 9m.room.create9='[8m.room.member@anon-20191002_181700-98:localhost:88298='[7m.room.member@anon-20191002_181700-98:localhost:88297='[6m.room.member@anon-20191002_181700-99:localhost:88006='[5m.room.member@anon-20191002_181700-98:localhost:882953 4m.room.guest_access4"? 3m.room.history_visibility3/ 2m.room.join_rules23 1m.room.power_levels1='[0m.room.member@anon-20191002_181700-99:localhost:88000' /m.room.create/='[.m.room.member@anon-20191002_181700-96:localhost:8800. 3 m.room.guest_access%))em.room.aliaseslocalhost:8800g"? dm.room.history_visibilityf/ cm.room.join_rulese9 bm.room.canonical_aliasd3 am.room.power_levelsc>']`m.room.member@anon-20191002_181700-109:localhost:8800b' _m.room.createa>']^m.room.member@anon-20191002_181700-108:localhost:8800`>']]m.room.member@anon-20191002_181700-108:localhost:8800_='[-m.room.member@anon-20191002_181700-97:localhost:8800-='[,m.room.member@anon-20191002_181700-96:localhost:8800,3 +m.room.guest_access+"? *m.room.history_visibility*/ )m.room.join_rules)3 (m.room.power_levels(='['m.room.member@anon-20191002_181700-97:localhost:8800'' &m.room.create&='[%m.room.member@anon-20191002_181700-94:localhost:8829%='[$m.room.member@anon-20191002_181700-94:localhost:8829$='[!m.room.member@anon-20191002_181700-94:localhost:8829!='[ m.room.member@anon-20191002_181700-94:localhost:8829 ='[m.room.member@anon-20191002_181700-94:localhost:8829='[m.room.member@anon-20191002_181700-94:localhost:8829='[m.room.member@anon-20191002_181700-94:localhost:8829>']hm.room.member@anon-20191002_181700-110:localhost:8800j>']gm.room.member@anon-20191002_181700-110:localhost:8800i>']fm.room.member@anon-20191002_181700-110:localhost:8800h n , XDng]!c@anon-20191002_181700-112:localhost:8800NJWUEDBXDEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6Swog]!c@anon-20191002_181700-110:localhost:8800LARRQIDFNHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAog]!c@anon-20191002_181700-109:localhost:8800OVPPVZDCAAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5gog]!c@anon-20191002_181700-108:localhost:8800KLPFELDKEHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAog]!c@anon-20191002_181700-107:localhost:8800IZRBPAPTCWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3wog~]!c@anon-20191002_181700-106:localhost:8800SACQZSUOIFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQog}]!c@anon-20191002_181700-104:localhost:8800LWMHDFOEAFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_Aog|]!c@anon-20191002_181700-102:localhost:8800GRLAMJPVVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQog{]!c@anon-20191002_181700-103:localhost:8800WCYOWUZDUIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigogz]!c@anon-20191002_181700-100:localhost:8800DHGUQTFIHGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEU2RHpoLVI4cnJSWFNPT3oKMDAyZnNpZ25hdHVyZSCANCtYnN5AyAhBu5Vj-kkdF3DfWcvAmn8qI0qr-BQc-gogy]!c@anon-20191002_181700-101:localhost:8800PXXMUXFBMGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6wo >^^6F~VpH \ 5 &fV.nF n F  ~ V .  f >  v N &^68n`.vN'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800}'Q!GiSxJsKZhQVHBkrVPn:localhost:8800|'Q!GiSxJsKZhQVHBkrVPn:localhost:8800{'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800 y'Q!GSxvxNevpCiwmFCHys:localhost:8800 x'Q!GSxvxNevpCiwmFCHys:localhost:8800 w'Q!GSxvxNevpCiwmFCHys:localhost:8800 v'Q!GSxvxNevpCiwmFCHys:localhost:8800 u'Q!GSxvxNevpCiwmFCHys:localhost:8800 t'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800 s'Q!HZqzpRgqekPOtxstVc:localhost:8800;'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800~('Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800 z~('Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 ('Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800:'Q!HZqzpRgqekPOtxstVc:localhost:88009'Q!HZqzpRgqekPOtxstVc:localhost:88008'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800,'Q!HAFNBarGuVZuWCgwWM:localhost:8800+'Q!HAFNBarGuVZuWCgwWM:localhost:8800*'Q!HAFNBarGuVZuWCgwWM:localhost:8800)'Q!HAFNBarGuVZuWCgwWM:localhost:8800('Q!HAFNBarGuVZuWCgwWM:localhost:8800''Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:88004&Q!GixhPUMvtKSWoKRgvw:localhost:88003&Q!GixhPUMvtKSWoKRgvw:localhost:88002&Q!GixhPUMvtKSWoKRgvw:localhost:88001&Q!GixhPUMvtKSWoKRgvw:localhost:88000&Q!GixhPUMvtKSWoKRgvw:localhost:8800/'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800   -s^eQ_u$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 351}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc"], "type": "m.room.join_rules", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040583611, "hashes": {"sha256": "R1NyWsJ7FdSPEsg1qfina5EWkj7j0rEl8V2T4eChUxw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mei6rjnE8xiHQS399P3Uh6yUZw6V18HEH98jKqfrSvwJydFFjmGxjs7zPzhmsl5pT5XPyVduGkxNGfqt018qCg"}}, "unsigned": {"age_ts": 1570040583611}}j]eQ_c$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 350}{"auth_events": ["$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "type": "m.room.power_levels", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"users": {"@anon-20191002_181700-101:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040583052, "hashes": {"sha256": "nm4L/D2bmu1JPYXm9u6N3FoBanL0VT7iZ7T4nvlN+ps"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w466PMk9bX0wIL18oGYtBZf7KGAZZ7CPhwffIiYB3JMNtzPoVFyC8RU1lisisld1nDEiMkp2SCBgW3m/+mubBg"}}, "unsigned": {"age_ts": 1570040583052}}u\eQ_y$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 349}{"auth_events": ["$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A"], "prev_events": ["$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-101", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-101:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040582540, "hashes": {"sha256": "rM1jSkUCBoWbFkwM5QPEJpT3iv2IYcyyME6NLDtDbRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nhI0/6EPvOvC0FkkHqam30XjTVhUyWbWKAyGRDJnNOCxkznOnKIWySdZJonfUEtWF65eXn3P/cbn89JJeafwBg"}}, "unsigned": {"age_ts": 1570040582540}}h[eQ__$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 348}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-101:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040581950, "hashes": {"sha256": "w9vBecwMm1yJHQXTQH5R6FPwmoaL/F5aODIw625E2RE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1fgygpY+rh+ix4E5+nv8AQlW2hC8Va4ELsyEWEFU8apgAGWDD37mycXJAHkoKMdB7dRjC/0d0Cb9BsVre34eCw"}}, "unsigned": {"age_ts": 1570040581950}} (XpH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP((('Q$1570043589412JaDTY:localhost:8800 ('Q$1570043645418ABZkc:localhost:8800 7'Q$1570043593416CouYv:localhost:8800 'Q$1570043592415heiAH:localhost:8800 'Q$1570043591414NuXxd:localhost:8800 'Q$1570043590413Khvee:localhost:8800 'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043476325vnEPO:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 q'Q$1570043428321klTqJ:localhost:8800 p'Q$1570043428320JDiOD:localhost:8800 o'Q$1570043426319TNjnu:localhost:8800 n'Q$1570043425318lLfNb:localhost:8800 m ~z v r n j fb^ZVRNJFOeeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800NeeQ$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800MeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800LeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800KeeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800JeeQ$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800IeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800HeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800GeeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800FeeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800EeeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800DeeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800CeeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800BeeQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800AeeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800@eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800?eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800>eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800=eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800<eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800;eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800:eeQ$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:88009eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:88008eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:88007eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:88006eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:88005eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:88004eeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:88003eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:88002eeQ$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800 !cp% ( l I L n Ckt }2;chJQ/ e}!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rules$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsjIQ3 e|!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY HQ']e{!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEdGQ' ez!wIhMbfQzYbJobPdwyi:localhost:8800m.room.create$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwpFQ? ey!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibility$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTchEQ/ ex!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rules$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwjDQ3 ew!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc CQ']ev!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgdBQ' eu!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE AQ']et!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQd@Q' es!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQb?Q# er!SBEprlZiuliFNSfNmz:localhost:8800m.room.name$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsp>Q? eq!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibility$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsh=Q/ ep!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rules$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwj<Q3 eo!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo ;Q']en!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsd:Q' em!SBEprlZiuliFNSfNmz:localhost:8800m.room.create$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc 9Q']el!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ad8Q' ek!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAb7Q# ej!KxhGcTbEWmtgGNpdox:localhost:8800m.room.name$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkp6Q? ei!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibility$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h5Q/ eh!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rules$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Ej4Q3 eg!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY 3Q']ef!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsd2Q' ee!KxhGcTbEWmtgGNpdox:localhost:8800m.room.create$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM81Q']eed!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c80Q']eec!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU /Q']eb!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-100:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cj.Q3 ea!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.guest_access$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEp-Q? e`!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.history_visibility$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhEh,Q/ e_!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.join_rules$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28j+Q3 e^!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.power_levels$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc *Q']e]!HmkcAMkMjWRhTDJMsy:localhost:8800m.room.member@anon-20191002_181700-101:localhost:8800$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU SryLl? ^ 1  } P # p C  b 6 V )uHh;Z.zM S&rm@_2D,,Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZZ,Q!IYxUkyFHOgvhLpdkOA:localhost:8800YY,Q!IYxUkyFHOgvhLpdkOA:localhost:8800XX,Q!IYxUkyFHOgvhLpdkOA:localhost:8800WW,Q!IYxUkyFHOgvhLpdkOA:localhost:8800VV+Q !IYxUkyFHOgvhLpdkOA:localhost:8800UU,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800+Q !IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IZkczIYykpZDvjuUWn:localhost:8800 V V,Q!IZkczIYykpZDvjuUWn:localhost:8800 U U,Q!IZkczIYykpZDvjuUWn:localhost:8800 T T,Q!IZkczIYykpZDvjuUWn:localhost:8800 S S,Q!IZkczIYykpZDvjuUWn:localhost:8800 R R,Q!IZkczIYykpZDvjuUWn:localhost:8800 Q Q,Q!IZkczIYykpZDvjuUWn:localhost:8800 P P,Q!IZkczIYykpZDvjuUWn:localhost:8800 O O,Q!IZkczIYykpZDvjuUWn:localhost:8800 N N+Q !IZkczIYykpZDvjuUWn:localhost:8800 M M,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800+Q !ITdmSQpjMnaPoHIbws:localhost:8800,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 MM,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 LL,Q!IPYMCBwcyNIzqdiIWv:localhost:8800KK,Q!IPYMCBwcyNIzqdiIWv:localhost:8800JJ,Q!IPYMCBwcyNIzqdiIWv:localhost:8800II,Q!IPYMCBwcyNIzqdiIWv:localhost:8800HH,Q!IPYMCBwcyNIzqdiIWv:localhost:8800GG,Q!IPYMCBwcyNIzqdiIWv:localhost:8800FF,Q!IPYMCBwcyNIzqdiIWv:localhost:8800EE+Q !IPYMCBwcyNIzqdiIWv:localhost:8800DD,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800+Q !IMiczgkCTjejbnbeyP:localhost:8800,Q!ILbUVZOfPPwaZRrKJd:localhost:8800DD,Q!ILbUVZOfPPwaZRrKJd:localhost:8800CC,Q!ILbUVZOfPPwaZRrKJd:localhost:8800BB,Q!ILbUVZOfPPwaZRrKJd:localhost:8800AA+Q !ILbUVZOfPPwaZRrKJd:localhost:8800@@,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  +Q !IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800+Q !HusOrLtWZTLbmQZxmm:localhost:8800,Q!HmkcAMkMjWRhTDJMsy:localhost:8800 dd,Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc,Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb,Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa,Q!HmkcAMkMjWRhTDJMsy:localhost:8800``,Q!HmkcAMkMjWRhTDJMsy:localhost:8800__,Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^,Q!HmkcAMkMjWRhTDJMsy:localhost:8800]] U X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pHFnwE,'Q$1570043388312YDkJu:localhost:8800 M&O$157004338812XhwjX:localhost:8829 N'Q$1570043387311DGzYi:localhost:8800 L'Q$1570043386310bGMNl:localhost:8800 K'Q$1570043385309imdbl:localhost:8800 J'Q$1570043384308gPogh:localhost:8800 I'Q$1570043383307bhuDV:localhost:8800 H'Q$1570043380304caenp:localhost:8800 G'Q$1570043379303bCgUn:localhost:8800 F'Q$1570043378302mKBGD:localhost:8800 E'Q$1570043590413Khvee:localhost:8800 'Q$1570043588411PDBWG:localhost:8800 'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043575399SiSKs:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 'Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043468324DLhaB:localhost:8800 'Q$1570043429322ZfcNc:localhost:8800 p'Q$1570043428321klTqJ:localhost:8800 o'Q$1570043428320JDiOD:localhost:8800 n'Q$1570043426319TNjnu:localhost:8800 m'Q$1570043392317hujur:localhost:8800 R'Q$1570043391316OJaBO:localhost:8800 Q'Q$1570043377301OraEa:localhost:8800 D b xbaeQ_7$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 354}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-100", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-100:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040585979, "hashes": {"sha256": "3y2Fk2/lIhykFBbljNw8b1UZFEcAiAKGSYpKmpOwzno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mZb8awDUnote9xG7I1za2alZE0IMqYkS7Ii8NLNeJUuK6sa4gk1lVeGvjfIqMv5B04uM7nCO9vs0fLfOGcxvCw"}}, "unsigned": {"age_ts": 1570040585979, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-101:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-101", "avatar_url": null}, "sender": "@anon-20191002_181700-101:localhost:8800"}]}}z`eQ_$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 353}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE"], "type": "m.room.guest_access", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040585152, "hashes": {"sha256": "Cm0j0Dzle/8DZN9DFfl1yh0OBOCxkxo4oiW0h6TFN+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FwAINwalIvBSa2kMrgEQRsTNm14mgJvuUBn5u714SKUUHWrQHFqL/KKN/Zl2IU09RzMB5WG06/S/omj4v8nbCA"}}, "unsigned": {"age_ts": 1570040585152}}_eQ_$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 352}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28"], "type": "m.room.history_visibility", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040584527, "hashes": {"sha256": "bxqdYjE0kxT8r2I4ROC4YwZr/J+ESNaorcZSYk6/7dc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kFshN8T6AYIfe5Jso87kGH0wVxel4rJHsdSgOcQ/ur2CEDZEUAvw4z8lIEip2jUTLY8OfoH2ubl5rqZctImxDg"}}, "unsigned": {"age_ts": 1570040584527}} a} { y w u sqomkigeca~,eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~+eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~*eeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~)eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~(eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~'eeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~&eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~%eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~$eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~#eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~"eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~!eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800~ eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~eeQ$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:8800~eeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:8800 P6 x C  I  m  X J Gt7ZD K 6 y Y<IPstst6<Q3 !IZkczIYykpZDv6Q' !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.create<Q3 !IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels14Q# !IZkczIYykpZDvjuUWn:localhost:8800m.room.name4^Q']!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:88006^Q']!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:88007^Q']!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:88000:Q/ !IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules2BQ? !IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibility36Q' !IZkczIYykpZDvjuUWn:localhost:8800m.room.create/<Q3 !ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels^Q']!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800^Q']!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800 :Q/ !ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rulesBQ? !ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibility6Q' !ITdmSQpjMnaPoHIbws:localhost:8800m.room.create <Q3 !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels^Q']!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800^Q']!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800:Q/ !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rulesBQ? !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibility<Q3 !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_access6Q' !IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create<Q3 !IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levelsB^Q']!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800AGQ'/!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800F:Q/ !IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rulesCBQ? !IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibilityD<Q3 !IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_accessE6Q' !IMiczgkCTjejbnbeyP:localhost:8800m.room.create@<Q3 !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels^Q']!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800:Q/ !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rulesBQ? !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibility6Q' !ILbUVZOfPPwaZRrKJd:localhost:8800m.room.create<Q3 !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.power_levels]Q'[!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-83:localhost:8800]Q'[!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.member@anon-20191002_181700-82:localhost:8800:Q/ !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.join_rulesBQ? !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.history_visibility6Q' !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.create?Q9 !IGVHKYcSuxzVPlFHlj:localhost:8800m.room.canonical_aliasEQ))!IGVHKYcSuxzVPlFHlj:localhost:8800m.room.aliaseslocalhost:8800<Q3 !HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels4Q# !HusOrLtWZTLbmQZxmm:localhost:8800m.room.name^Q']!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800^Q']!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800 BQ? !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibility :Q/ !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rules <Q3 !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels ^Q']!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800 :Q/ !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rulesBQ? !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibility<Q3 !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_access6Q' !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.create -RM H C > 9 4/*|%w rmhc TlQel!egCvzKpbEwmuvDoBTb:localhost:8800$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0TkQek!egCvzKpbEwmuvDoBTb:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUTjQej!egCvzKpbEwmuvDoBTb:localhost:8800$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQTiQei!XgobMgBjNcDRJnRXLD:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukThQeh!XgobMgBjNcDRJnRXLD:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_PcTgQeg!XgobMgBjNcDRJnRXLD:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMTfQef!XgobMgBjNcDRJnRXLD:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMTeQee!XgobMgBjNcDRJnRXLD:localhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QTdQed!XgobMgBjNcDRJnRXLD:localhost:8800$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwTcQec!XgobMgBjNcDRJnRXLD:localhost:8800$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0ITbQeb!XgobMgBjNcDRJnRXLD:localhost:8800$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqITaQea!XgobMgBjNcDRJnRXLD:localhost:8800$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksT`Qe`!XgobMgBjNcDRJnRXLD:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcT_Qe_!XgobMgBjNcDRJnRXLD:localhost:8800$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYT^Qe^!wIhMbfQzYbJobPdwyi:localhost:8800$aCRkNlroYqeXIBSvwkqV6CGtk1jtlHW7P6P63as3oWoT]Qe]!wIhMbfQzYbJobPdwyi:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wT\Qe\!wIhMbfQzYbJobPdwyi:localhost:8800$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYT[Qe[!wIhMbfQzYbJobPdwyi:localhost:8800$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsTZQeZ!wIhMbfQzYbJobPdwyi:localhost:8800$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYTYQeY!wIhMbfQzYbJobPdwyi:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGETXQeX!wIhMbfQzYbJobPdwyi:localhost:8800$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwTWQeW!cSUQGmpIsSCBAVTOHo:localhost:8800$AKZ1HoWJTVWzDVZiwlV5S8VYT9TUQSuSS5rP48DorkETVQeV!cSUQGmpIsSCBAVTOHo:localhost:8800$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcTUQeU!cSUQGmpIsSCBAVTOHo:localhost:8800$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwTTQeT!cSUQGmpIsSCBAVTOHo:localhost:8800$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcTSQeS!cSUQGmpIsSCBAVTOHo:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgTRQeR!cSUQGmpIsSCBAVTOHo:localhost:8800$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElETQQeQ!SBEprlZiuliFNSfNmz:localhost:8800$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQTPQeP!SBEprlZiuliFNSfNmz:localhost:8800$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQTOQeO!SBEprlZiuliFNSfNmz:localhost:8800$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsTNQeN!SBEprlZiuliFNSfNmz:localhost:8800$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsTMQeM!SBEprlZiuliFNSfNmz:localhost:8800$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwTLQeL!SBEprlZiuliFNSfNmz:localhost:8800$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooTKQeK!SBEprlZiuliFNSfNmz:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsTJQeJ!SBEprlZiuliFNSfNmz:localhost:8800$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcTIQeI!KxhGcTbEWmtgGNpdox:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8ATHQeH!KxhGcTbEWmtgGNpdox:localhost:8800$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxATGQeG!KxhGcTbEWmtgGNpdox:localhost:8800$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkTFQeF!KxhGcTbEWmtgGNpdox:localhost:8800$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4TEQeE!KxhGcTbEWmtgGNpdox:localhost:8800$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61ETDQeD!KxhGcTbEWmtgGNpdox:localhost:8800$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYTCQeC!KxhGcTbEWmtgGNpdox:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsTBQeB!KxhGcTbEWmtgGNpdox:localhost:8800$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMTAQeA!HmkcAMkMjWRhTDJMsy:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIT@Qe@!HmkcAMkMjWRhTDJMsy:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA  #FZueeQ_y$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 358}{"auth_events": ["$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM"], "prev_events": ["$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM"], "type": "m.room.member", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-102", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-102:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040589433, "hashes": {"sha256": "8kb5UlDqODkvKh4RPP6/Ln8NWYJFUokxSfQVH+Lxjpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kzFs+6kmwF/BwPlksab2N5iGiLojgg7s5l6rEiDf0IZWruRnOJqQmkEM0yln1Z0m0li9cn6QPZwLGDCygdGfBQ"}}, "unsigned": {"age_ts": 1570040589433}}hdeQ__$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 357}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-102:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040588768, "hashes": {"sha256": "8Czy4DcCsS5gtDxMXnBBbGRtC/IDkUfu0/eSU53dDUw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "alfkZQ25OztqU4Gs6lTMoY86F5uO9L1roP1z2Fo7KSdAtevXth932fR7bQCE1Ypkk9R+QaqYcSMkxchBRLv3Aw"}}, "unsigned": {"age_ts": 1570040588768}}YceQ_A$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 131, "stream_ordering": 356}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c"], "prev_events": ["$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-100:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-100:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040587155, "hashes": {"sha256": "ViUav8Z51xFMTAk7ZofJk9PFPZBFJqmrmRQusiQsgxU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c9HcL7OZEoZOuSB7Ew+rbIZIvfh2Y6XRkKs6WkZ8rYOeRsNK60HREJTu7LTh2xN5sgJAgHpSVFY+KBVqJmf4Dw"}}, "unsigned": {"age_ts": 1570040587155, "replaces_state": "$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c"}}YbeQ_A$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:8800{"token_id": 130, "stream_ordering": 355}{"auth_events": ["$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc", "$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A", "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"], "prev_events": ["$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c"], "type": "m.room.member", "room_id": "!HmkcAMkMjWRhTDJMsy:localhost:8800", "sender": "@anon-20191002_181700-101:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-101:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040586597, "hashes": {"sha256": "9mm9xrNgbB3QoVcI/BXpA4Hc65lruLNM3ygupRGM2bU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aYeRGY/wbl5PHnIgSmYbIdJcOh6rquFNd2X4Zgnws1U5qljXnTf1pQdbq0c8clLHqF/9LDfWhzTKI2X+0FWuBg"}}, "unsigned": {"age_ts": 1570040586597, "replaces_state": "$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU"}} SryLl? ^ 1  } P # p C  b 6 V )uHh;Z.zM S&rm@_2D,,Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZZ,Q!IYxUkyFHOgvhLpdkOA:localhost:8800YY,Q!IYxUkyFHOgvhLpdkOA:localhost:8800XX,Q!IYxUkyFHOgvhLpdkOA:localhost:8800WW,Q!IYxUkyFHOgvhLpdkOA:localhost:8800VV+Q !IYxUkyFHOgvhLpdkOA:localhost:8800UU,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800+Q !IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IZkczIYykpZDvjuUWn:localhost:8800 V V,Q!IZkczIYykpZDvjuUWn:localhost:8800 U U,Q!IZkczIYykpZDvjuUWn:localhost:8800 T T,Q!IZkczIYykpZDvjuUWn:localhost:8800 S S,Q!IZkczIYykpZDvjuUWn:localhost:8800 R R,Q!IZkczIYykpZDvjuUWn:localhost:8800 Q Q,Q!IZkczIYykpZDvjuUWn:localhost:8800 P P,Q!IZkczIYykpZDvjuUWn:localhost:8800 O O,Q!IZkczIYykpZDvjuUWn:localhost:8800 N N+Q !IZkczIYykpZDvjuUWn:localhost:8800 M M,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800,Q!ITdmSQpjMnaPoHIbws:localhost:8800+Q !ITdmSQpjMnaPoHIbws:localhost:8800,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 MM,Q!IPYMCBwcyNIzqdiIWv:localhost:8800 LL,Q!IPYMCBwcyNIzqdiIWv:localhost:8800KK,Q!IPYMCBwcyNIzqdiIWv:localhost:8800JJ,Q!IPYMCBwcyNIzqdiIWv:localhost:8800II,Q!IPYMCBwcyNIzqdiIWv:localhost:8800HH,Q!IPYMCBwcyNIzqdiIWv:localhost:8800GG,Q!IPYMCBwcyNIzqdiIWv:localhost:8800FF,Q!IPYMCBwcyNIzqdiIWv:localhost:8800EE+Q !IPYMCBwcyNIzqdiIWv:localhost:8800DD,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800,Q!IMiczgkCTjejbnbeyP:localhost:8800+Q !IMiczgkCTjejbnbeyP:localhost:8800,Q!ILbUVZOfPPwaZRrKJd:localhost:8800DD,Q!ILbUVZOfPPwaZRrKJd:localhost:8800CC,Q!ILbUVZOfPPwaZRrKJd:localhost:8800BB,Q!ILbUVZOfPPwaZRrKJd:localhost:8800AA+Q !ILbUVZOfPPwaZRrKJd:localhost:8800@@,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!IGVHKYcSuxzVPlFHlj:localhost:8800  +Q !IGVHKYcSuxzVPlFHlj:localhost:8800  ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800 ,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800,Q!HusOrLtWZTLbmQZxmm:localhost:8800+Q !HusOrLtWZTLbmQZxmm:localhost:8800,Q!HmkcAMkMjWRhTDJMsy:localhost:8800 dd,Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc,Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb,Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa,Q!HmkcAMkMjWRhTDJMsy:localhost:8800``,Q!HmkcAMkMjWRhTDJMsy:localhost:8800__,Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^,Q!HmkcAMkMjWRhTDJMsy:localhost:8800]] {X'k9q? y GO  N  Ub $I Y 2 o H ![3 mEY1 kC}U/iA'O'+({?'Q$1570043151259knbjg:localhost:88001e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwj1e$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0c1e$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoX1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8Q1e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY3$13:localhost:424553$11:localhost:424551e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE91e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$%M$15700427439Hwxyi:localhost:8829,'Q$1570042742255yQzPA:localhost:8800+'Q$1570042738251iukAg:localhost:8800*%M$15700427368TlZQs:localhost:8829)'Q$1570042734247SfTxR:localhost:8800('Q$1570042731243YuOkC:localhost:8800''Q$1570042723230DFoyn:localhost:8800&'Q$1570042720226wSTBF:localhost:8800%%M$15700427177BOUHn:localhost:8829$'Q$1570042716222nflqt:localhost:8800#'Q$1570042711216KdEEo:localhost:8800"%M$15700427086bDrAU:localhost:8829!'Q$1570042702206BIYsS:localhost:8800 'Q$1570042699203fHFjU:localhost:8800'Q$1570042698202juBqr:localhost:8800'Q$1570042694196OHsWc:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042686186Qxqmn:localhost:8800'Q$1570042679179ZJCqE:localhost:8800%M$15700426753WBESe:localhost:8829'Q$1570042674175gurnU:localhost:8800'Q$1570042671171AQZaz:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042667167mhSmJ:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042654147iSsjl:localhost:8800%M$15700426501OLytM:localhost:8829'Q$1570042649143JxPAB:localhost:8800'Q$1570042645137fBnPZ:localhost:8800%M$15700426410cEjWu:localhost:8829'Q$1570042634127eDBry:localhost:8800 'Q$1570042632124bMwzE:localhost:8800 'Q$1570042631123SLyGA:localhost:8800 'Q$1570042626117sfUAQ:localhost:8800 'Q$1570042623114pBHTz:localhost:8800 'Q$1570042617107cANtu:localhost:8800'Q$1570042611100ueDzK:localhost:8800&O$157004188093UtRbN:localhost:8800h&O$157004186786RVgKA:localhost:8800f&O$157004185679NNCIw:localhost:8800d&O$157004184672SfwvS:localhost:8800b&O$157004183063NdEPw:localhost:8800`&O$157004181756ejZNp:localhost:8800^&O$157004180853KmrHT:localhost:8800\&O$157004180448zlZXD:localhost:8800[&O$157004178835mLAyG:localhost:8800X&O$157004176828ZZJWh:localhost:8800V&O$157004175621DDceh:localhost:8800T&O$157004174414klNmS:localhost:8800R%M$15700417327EEUMr:localhost:8800P$M$15700403151blJmZ:localhost:88001e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg0e$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg*1e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ1e$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w20e$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbasL1e$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s1e$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc0e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg$1e$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1e$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgt1e$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y00e$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM%1e$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr00e$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZsB1e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk1e$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k1e$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc0e$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQI1e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8? Z`8qI! Y 1 i A  y Q )  a 9  w F f4l; OZ(b0hP8 sAyG.1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkf21e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkk1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU3$43:localhost:424550e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5oz3$40:localhost:424551e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwI1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0w1e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k0e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYc1$3:localhost:444051$3:localhost:424551$3:localhost:419851$3:localhost:372653$39:localhost:424553$38:localhost:424551e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoC3$37:localhost:424551e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug3$33:localhost:424551e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj430e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w3$29:localhost:424551e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU0e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo;1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYY1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwm1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1$1:localhost:424551e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4#0e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQp3$17:localhost:424550e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk9'Q$1570043746461eQhrq:localhost:8800*'Q$1570043736453VtbeL:localhost:8800('Q$1570043727446CGYaE:localhost:8800&'Q$1570043711438bqOHL:localhost:8800"'Q$1570043683436iTOlZ:localhost:8800'Q$1570043680434abJWo:localhost:8800'Q$1570043670433bjAzo:localhost:8800'Q$1570043668432TfiHj:localhost:8800'Q$1570043664431IMLSL:localhost:8800'Q$1570043660430kLPpN:localhost:8800'Q$1570043653425AhyPB:localhost:8800 'Q$1570043646419zIOAX:localhost:8800 'Q$1570043590413Khvee:localhost:8800'Q$1570043580403vYYeb:localhost:8800'Q$1570043579402KDYtE:localhost:8800'Q$1570043567391GonfI:localhost:8800'Q$1570043566390qTwyJ:localhost:8800'Q$1570043557383IxQaJ:localhost:8800'Q$1570043546376YfkfL:localhost:8800'Q$1570043539370xCBJr:localhost:8800'Q$1570043534365WVAkx:localhost:8800'Q$1570043527359ScxWW:localhost:8800'Q$1570043522354IAAap:localhost:8800'Q$1570043516348vThZG:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043502342mVJmO:localhost:8800'Q$1570043477326hyTqo:localhost:8800'Q$1570043468324DLhaB:localhost:8800'Q$1570043426319TNjnu:localhost:8800'Q$1570043391316OJaBO:localhost:8800&O$157004338812XhwjX:localhost:8829'Q$1570043383307bhuDV:localhost:8800'Q$1570043377301OraEa:localhost:8800'Q$1570043372296yAiBq:localhost:8800'Q$1570043367291AEdax:localhost:8800'Q$1570043362286KwXMK:localhost:8800'Q$1570043351281XHPOP:localhost:8800'Q$1570043345275UDVPY:localhost:8800'Q$1570043341273LsXNn:localhost:8800( ,NC 8 - { " p  e ZOD9.|#qf VeL$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8sha256 jw QJ^cr伤|w?VeL$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgsha256%]BR\W7.^; 4jϑ (0ӕ0I,VeL$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0sha256k:S{s[e7Tb9v킝V eL$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgsha256ja~f82U9%8%)<&pv3;V eL$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0sha256|@>,aYSq_RzD5=V eL$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUsha256 ppQ*YD 3> K7PV eL$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQsha256Eǝd"6!h< ۰V eL$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuksha256*S 5#qdi {$qlK<]VeL$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pcsha256 Y06]`5y Re4=MRI,V= VeL$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMsha256uQP~`Ҋ'=It 3o~s̑;ۚ[V{eL$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYsha256>H)S:VreL$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQsha256.=DuAhd(r6~5 iR=DVqeL$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUssha256@]he u߮CcLPKVpeL$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexssha256r|c9gPjDLq쿨~Ze{VoeL$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwsha256\g =j\Oϩ6VFUjICGVieL$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vksha256 ,R`OwG޴1 /7BaVheL$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4sha256qUmYԳ#NO)A"nVgeL$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Esha256SQURFm\p{paiv%QVfeL$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYsha256; TBvK2Yt4VeeL$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWssha256J OJp ك}ǡ|2Wk CNo- g p u ; DO} NNNNNN| { 7 9eQ']$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800joina#eQ' $FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800m.room.createfa8eQ' $fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800m.room.createm7eQ? $ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibilitye6eQ/ $FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rulesg5eQ3 $54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels 4eQ']$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800joina3eQ' $fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create2eQ']$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829invitea1eQ' $Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar_0eQ# $QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800m.room.namem/eQ? $jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibilitye.eQ/ $0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rulesg-eQ3 $wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels ,eQ']$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800joina+eQ' $wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800m.room.create*eQ']$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800invitea)eQ' $PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar_(eQ# $rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800m.room.namem'eQ? $xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibilitye&eQ/ $U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rulesg%eQ3 $OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels $eQ']$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800join   oieQ_m$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 362}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4"], "type": "m.room.name", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"name": "The room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040592422, "hashes": {"sha256": "/sHVp1C91Opl5lTHwbIWfukhKZCu3CSZkliQ7TFw1MY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0f4Lk0swJRc27GiZ/i2c+C7vUmD2yRkMPgMUdtDteR+A/VthfMynPaOi/yAMlA8uTgf70VntRUig+bYMJFQICA"}}, "unsigned": {"age_ts": 1570040592422}}heQ_$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 361}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E"], "type": "m.room.history_visibility", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040591411, "hashes": {"sha256": "gupky+B3tenEiyby8TrHIfW7vio8SJK5cwrX/Fcs9OY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eUuV2a+TH9wfEcZ28bnhJCrQGVGqdTzDVmMtzERaQYwLO+Bh4JLGy4++dm7VMzr0mx46yyIgsBQLPvZiWY57Cw"}}, "unsigned": {"age_ts": 1570040591411}}sgeQ_u$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 360}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY"], "type": "m.room.join_rules", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040590827, "hashes": {"sha256": "UDX8Gsv0ZlLHjg/rcZx5YKaestQwSMup2y3srX2A548"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7d+yZrPqv+eumrLzbOlWP7AVG+RDWbS7G5bRLDSPITmnkx/4dASTvMvyXdom/r0fJjNby022RKthciUlAIbhDQ"}}, "unsigned": {"age_ts": 1570040590827}}jfeQ_c$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 359}{"auth_events": ["$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "type": "m.room.power_levels", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"users": {"@anon-20191002_181700-102:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040589953, "hashes": {"sha256": "ygxrb3WD21HIMyx9NiSgUGLhkOBGaGtYx2nShjQLfYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ET7e4/6OuAxbnF3/WRcFs+C82lDm+XNKbj4QxoeFEzjTsSz/T/Qhaq6ymjoBr3Mb4hE4vyyvoeU8AaRNZFRHCg"}}, "unsigned": {"age_ts": 1570040589953}}  4 k 9md]c@anon-20191002_181700-296:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAo127.0.0.1'd]c@anon-20191002_181700-295:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQo127.0.0.1&d]c@anon-20191002_181700-294:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQo127.0.0.1%d]c@anon-20191002_181700-293:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwo127.0.0.1$d]c@anon-20191002_181700-292:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_go127.0.0.1#d]c@anon-20191002_181700-291:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAo127.0.0.1"d]c@anon-20191002_181700-290:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwo127.0.0.1!a[a@anon-20191002_181700-28:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaDpXO0p1THl2aFBeYWxPdgowMDJmc2lnbmF0dXJlIAJUv0r1YDvsVOFfTdYShRFjrCpaShVGI43-X8i84VZjCg127.0.0.1d]c@anon-20191002_181700-289:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwo127.0.0.1 d]c@anon-20191002_181700-288:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElsOmlIcVhGQ2wyTEkzVzcKMDAyZnNpZ25hdHVyZSCzJfmtbG81Wrm2vimRJic-dEVRDEDntZmOEo-h59M2rwo127.0.0.1d]c@anon-20191002_181700-287:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLbHpJaVAweDZDd3JiPVUKMDAyZnNpZ25hdHVyZSAsElnH6_lTGWgAUIPCduvm_LujyRBeS5_Rv8VYp_0n3Ao127.0.0.1 j^ t & ~ , BLVTj e'Q ]$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800mm@anon-20191002_181700-109:localhost:8800 e'Q  ]$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYm.room.create!XgobMgBjNcDRJnRXLD:localhost:8800mSm@anon-20191002_181700-109:localhost:8800 e'Q ]$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wm.room.member!wIhMbfQzYbJobPdwyi:localhost:8800mTm@anon-20191002_181700-108:localhost:8800,~e?Q ]$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYm.room.history_visibility!wIhMbfQzYbJobPdwyi:localhost:8800mzm|B@anon-20191002_181700-107:localhost:8800$}e/Q ]$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsm.room.join_rules!wIhMbfQzYbJobPdwyi:localhost:8800mxmy@anon-20191002_181700-107:localhost:8800&|e3Q ]$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYm.room.power_levels!wIhMbfQzYbJobPdwyi:localhost:8800mumv@anon-20191002_181700-107:localhost:8800 {e'Q ]$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEm.room.member!wIhMbfQzYbJobPdwyi:localhost:8800msmtA@anon-20191002_181700-107:localhost:8800z e'Q  ]$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwm.room.create!wIhMbfQzYbJobPdwyi:localhost:8800mqmqe@anon-20191002_181700-107:localhost:8800,ye?Q ]$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcm.room.history_visibility!cSUQGmpIsSCBAVTOHo:localhost:8800mdmfo@anon-20191002_181700-106:localhost:8800$xe/Q ]$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwm.room.join_rules!cSUQGmpIsSCBAVTOHo:localhost:8800mbdmc@anon-20191002_181700-106:localhost:8800&we3Q ]$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcm.room.power_levels!cSUQGmpIsSCBAVTOHo:localhost:8800m_m`@anon-20191002_181700-106:localhost:8800 ve'Q ]$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygm.room.member!cSUQGmpIsSCBAVTOHo:localhost:8800m]m^x@anon-20191002_181700-106:localhost:8800u e'Q  ]$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEm.room.create!cSUQGmpIsSCBAVTOHo:localhost:8800m[m[@anon-20191002_181700-106:localhost:8800 te'Q ]$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQm.room.member!SBEprlZiuliFNSfNmz:localhost:8800mVmW@anon-20191002_181700-104:localhost:8800 se'Q ] $Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQm.room.avatar!SBEprlZiuliFNSfNmz:localhost:8800mQmT@anon-20191002_181700-104:localhost:8800re#Q ]$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsm.room.name!SBEprlZiuliFNSfNmz:localhost:8800mQmRy@anon-20191002_181700-104:localhost:8800,qe?Q ]$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsm.room.history_visibility!SBEprlZiuliFNSfNmz:localhost:8800mMmO @anon-20191002_181700-104:localhost:8800$pe/Q ]$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwm.room.join_rules!SBEprlZiuliFNSfNmz:localhost:8800mK8mK@anon-20191002_181700-104:localhost:8800&oe3Q ]$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoom.room.power_levels!SBEprlZiuliFNSfNmz:localhost:8800mHmI@anon-20191002_181700-104:localhost:8800 ne'Q ]$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm.room.member!SBEprlZiuliFNSfNmz:localhost:8800mFamG@anon-20191002_181700-104:localhost:8800m e'Q  ]$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcm.room.create!SBEprlZiuliFNSfNmz:localhost:8800mD mDp@anon-20191002_181700-104:localhost:8800 le'Q ]$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Am.room.member!KxhGcTbEWmtgGNpdox:localhost:8800m=jm=@anon-20191002_181700-102:localhost:8800 ke'Q ] $PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAm.room.avatar!KxhGcTbEWmtgGNpdox:localhost:8800m8(m;%@anon-20191002_181700-102:localhost:8800je#Q ]$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkm.room.name!KxhGcTbEWmtgGNpdox:localhost:8800m8&m8@anon-20191002_181700-102:localhost:8800  hleQ__$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 365}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-104:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040595468, "hashes": {"sha256": "mkaHlPkHiBZMRku14+LiNWDO98puW7nfY3Ym/4ooFQw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "voupR48trcIU2NkBDH1866IUkV5Bbcg5U/8trxKL6lSmHjzEK2yUhWdu8FO9QdbEUSWZ3W20G4mhLDtg9gRCAw"}}, "unsigned": {"age_ts": 1570040595468}}TkeQ_7$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 364}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk", "$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA"], "type": "m.room.member", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-103", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-103:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040593770, "hashes": {"sha256": "XllXlOS3RmNHLOO1ooe5ZDxftTUiAjTmoE7xc/7nF+o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "97NhA19mE031qszTyMw2dWBn4dhdRe1tR4amt1yvhAHepjXZQnjtD5HCOzNLQoFZPzzeuZRSJAvxvTYl2UshAQ"}}, "unsigned": {"age_ts": 1570040593770, "invite_room_state": [{"type": "m.room.member", "state_key": "@anon-20191002_181700-102:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-102", "avatar_url": null}, "sender": "@anon-20191002_181700-102:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-102:localhost:8800"}, {"type": "m.room.name", "state_key": "", "content": {"name": "The room name"}, "sender": "@anon-20191002_181700-102:localhost:8800"}, {"type": "m.room.avatar", "state_key": "", "content": {"url": "http://something"}, "sender": "@anon-20191002_181700-102:localhost:8800"}]}}sjeQ_u$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800{"token_id": 133, "stream_ordering": 363}{"auth_events": ["$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY", "$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM", "$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs"], "prev_events": ["$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4"], "type": "m.room.avatar", "room_id": "!KxhGcTbEWmtgGNpdox:localhost:8800", "sender": "@anon-20191002_181700-102:localhost:8800", "content": {"url": "http://something"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040592424, "hashes": {"sha256": "3EzlxOChHqG4QCJMH/ZtB5dZp86852yKk8dE+cfKr0Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ikeiL9hMjwhZLDE7sUxbHyGKl8XLcLGAR1CsUdJn+5Tqay+m34OwICshQYtHNyFwAXbkvKNn0+eQJtS4UbzGCQ"}}, "unsigned": {"age_ts": 1570040592424}} SI j , e 1 ! Y 'j _ -e3Wk9q? wE%}Kv]QD  v ]p> c3$61:localhost:424553$62:localhost:424551e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx01e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4h3$62:localhost:424553$61:localhost:424553$61:localhost:424551e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4g1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4f1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk\1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk[1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0*1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas @1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas ?1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0)1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0(1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk 1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk/1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk.1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk-1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk,1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q 1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q 1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA 0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE;1e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0 1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0 1e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw1e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw1e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE=0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE<3$67:localhost:424553$66:localhost:424553$62:localhost:424551e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA51e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0 1e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0 "^ L z  % . Ve#2;fiO^ YeQ']$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800aXeQ' $RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create WeQ']$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800 VeQ']$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800 UeQ']$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800 TeQ']$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800pSeQ))$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800mReQ? $Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibilityeQeQ/ $GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rulesjPeQ9 $snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_aliasgOeQ3 $x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels NeQ']$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800aMeQ' $6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create LeQ']$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800mKeQ? $t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibilityeJeQ/ $Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rulesgIeQ3 $PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels HeQ']$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800aGeQ' $fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800m.room.createmFeQ? $ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibilityeEeQ/ $FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rulesgDeQ3 $54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels CeQ']$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800aBeQ' $fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create AeQ']$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829a@eQ' $Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.avatar_?eQ# $QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800m.room.namem>eQ? $jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800m.room.history_visibilitye=eQ/ $0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800m.room.join_rulesg<eQ3 $wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800m.room.power_levels ;eQ']$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-104:localhost:8800a:eQ' $wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800m.room.create 9eQ']$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800a8eQ' $PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar -RM H C > 9 4/*|%w rmhc TQe!oXKJArsPmtgaYANBrg:localhost:8800$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfETQe!oXKJArsPmtgaYANBrg:localhost:8800$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4TQe!oXKJArsPmtgaYANBrg:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWITQe!oXKJArsPmtgaYANBrg:localhost:8800$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYTQe!egCvzKpbEwmuvDoBTb:localhost:8800$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzATQe!egCvzKpbEwmuvDoBTb:localhost:8800$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4TQe!egCvzKpbEwmuvDoBTb:localhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8TQe!egCvzKpbEwmuvDoBTb:localhost:8800$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgTQe!egCvzKpbEwmuvDoBTb:localhost:8800$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0TQe!egCvzKpbEwmuvDoBTb:localhost:8800$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgTQe!egCvzKpbEwmuvDoBTb:localhost:8800$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0TQe!egCvzKpbEwmuvDoBTb:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUT Qe!egCvzKpbEwmuvDoBTb:localhost:8800$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_PcT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMT Qe!XgobMgBjNcDRJnRXLD:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMTQe!XgobMgBjNcDRJnRXLD:localhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QTQe!XgobMgBjNcDRJnRXLD:localhost:8800$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwTQe!XgobMgBjNcDRJnRXLD:localhost:8800$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0ITQe!XgobMgBjNcDRJnRXLD:localhost:8800$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqITQe!XgobMgBjNcDRJnRXLD:localhost:8800$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksTQe!XgobMgBjNcDRJnRXLD:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcTQe!XgobMgBjNcDRJnRXLD:localhost:8800$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYTQe!wIhMbfQzYbJobPdwyi:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wTQe~!wIhMbfQzYbJobPdwyi:localhost:8800$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYTQe}!wIhMbfQzYbJobPdwyi:localhost:8800$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsT~Qe|!wIhMbfQzYbJobPdwyi:localhost:8800$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYT}Qe{!wIhMbfQzYbJobPdwyi:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGET|Qez!wIhMbfQzYbJobPdwyi:localhost:8800$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwT{Qey!cSUQGmpIsSCBAVTOHo:localhost:8800$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcTzQex!cSUQGmpIsSCBAVTOHo:localhost:8800$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwTyQew!cSUQGmpIsSCBAVTOHo:localhost:8800$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcTxQev!cSUQGmpIsSCBAVTOHo:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgTwQeu!cSUQGmpIsSCBAVTOHo:localhost:8800$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElETvQet!SBEprlZiuliFNSfNmz:localhost:8800$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQTuQes!SBEprlZiuliFNSfNmz:localhost:8800$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQTtQes!SBEprlZiuliFNSfNmz:localhost:8800$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsTsQer!SBEprlZiuliFNSfNmz:localhost:8800$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsTrQeq!SBEprlZiuliFNSfNmz:localhost:8800$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsTqQep!SBEprlZiuliFNSfNmz:localhost:8800$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTwTpQeo!SBEprlZiuliFNSfNmz:localhost:8800$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooToQen!SBEprlZiuliFNSfNmz:localhost:8800$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsTnQem!SBEprlZiuliFNSfNmz:localhost:8800$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcTmQel!KxhGcTbEWmtgGNpdox:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A a} { y w u sqomkigeca~KeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~JeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800~IeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800~HeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~GeeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800~FeeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800~EeeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~DeeQ$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800~CeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~BeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800~AeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~@eeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~?eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~>eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~=eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~<eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~;eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~:eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~9eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~8eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~7eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~6eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~5eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~4eeQ$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800~3eeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800~2eeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~1eeQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800~0eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800~/eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800~.eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800~-eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800 78r  X pqO7Cf e]]Q=$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800joinanon-20191002_181700-113Ce e]]Q=$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800joinanon-20191002_181700-112Cd e]]Q=$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800joinanon-20191002_181700-113Cc e]]Q=$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800joinanon-20191002_181700-112b e/]Q$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc@random_dude:test@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800banCa e]]Q=$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800joinanon-20191002_181700-113C` e]]Q=$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800joinanon-20191002_181700-112*_ e]]Q$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA@anon-20191002_181700-111:localhost:8829@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800banC^ e]]Q=$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4@anon-20191002_181700-111:localhost:8829@anon-20191002_181700-111:localhost:8829!egCvzKpbEwmuvDoBTb:localhost:8800joinanon-20191002_181700-111C] e]]Q=$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU@anon-20191002_181700-109:localhost:8800@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800joinanon-20191002_181700-109C\ e]]Q=$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800joinanon-20191002_181700-110,[ e]]Q$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800leave*Z e]]Q$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800banCY e]]Q=$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM@anon-20191002_181700-110:localhost:8800@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800joinanon-20191002_181700-110CX e]]Q=$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc@anon-20191002_181700-109:localhost:8800@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800joinanon-20191002_181700-109CW e]]Q=$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w@anon-20191002_181700-108:localhost:8800@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800joinanon-20191002_181700-108CV e]]Q=$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE@anon-20191002_181700-107:localhost:8800@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800joinanon-20191002_181700-107CU e]]Q=$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg@anon-20191002_181700-106:localhost:8800@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800joinanon-20191002_181700-106ET e]]Q=$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ@anon-20191002_181700-105:localhost:8829@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800inviteanon-20191002_181700-105CS e]]Q=$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs@anon-20191002_181700-104:localhost:8800@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800joinanon-20191002_181700-104ER e]]Q=$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A@anon-20191002_181700-103:localhost:8800@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800inviteanon-20191002_181700-103  peQ_$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 369}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw"], "type": "m.room.history_visibility", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040597935, "hashes": {"sha256": "IvDex/mcqIAHJ1RFnO1mDJhP2ecTQyigXy6TvOxRiQ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CiD+2UTUO3oPGcAy8RMw4eEsGC96oPh1UtTHMVHrSLX72WCcedpCFgVIdWyZ3E6a3r1PdLcm0mS/glwmwp42CQ"}}, "unsigned": {"age_ts": 1570040597935}}soeQ_u$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 368}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo"], "type": "m.room.join_rules", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040597304, "hashes": {"sha256": "QHGNwc75ocdU4x+2VkCIiSa3OGXeaz8kbnb8jxED6/E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L0TByMZmgKP3rzdPOiwTiXiwNPkCMldlJDBAtlvCnI7zskHyE/63KmbZEdknMnpzRzDveey7qVYjlojuR5WtDg"}}, "unsigned": {"age_ts": 1570040597304}}jneQ_c$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 367}{"auth_events": ["$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "type": "m.room.power_levels", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"users": {"@anon-20191002_181700-104:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040596619, "hashes": {"sha256": "HzRHtnrYaYkY9nuK2lTAacvXOavnkEvYlhOFcshf4Tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LODW3/bXlP0CpDVuS64f30FEiMWh2HQpSnJ1Ohvp86dvtEAYSMHaqCCDOMu7YkvDRdlCcyKV6gPLFJvd6cDTDQ"}}, "unsigned": {"age_ts": 1570040596619}}umeQ_y$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 366}{"auth_events": ["$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc"], "prev_events": ["$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc"], "type": "m.room.member", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-104", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-104:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040596065, "hashes": {"sha256": "c60KR3h+6G/lczBtR6RU1+Hfo86nX2N/Zq0ERItm6Lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JxQkTPhCmnjjCUhiy9Xu80+k0GwU+KDRQLlCIB32QDTw/wQo4T/mTV3fIc4N4PLNYcm5g8wlsc4pOPrzw9VZBA"}}, "unsigned": {"age_ts": 1570040596065}} V ~ V .  K#oGW/ f R  sS!Y'_-e3j8kp> v D  4 | J  n V > 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800'Q$1570043747462YuUEF:localhost:8800'Q$1570043746461eQhrq:localhost:8800'Q$1570043745460sJOiY:localhost:8800'Q$1570043744459BIUYb:localhost:8800'Q$1570043741458PZvre:localhost:8800'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk43$15:localhost:42455 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 1$1:localhost:42455 b1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY@3$19:localhost:424551e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY[1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwQ1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ ;1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo 71e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 <1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpsu1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QCo3$25:localhost:424551e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:424553$23:localhost:424551e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:424553$21:localhost:424551e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU o1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk'Q$1570043754467mNKfq:localhost:8800'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 3$20:localhost:424551e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0W1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4Q1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foB1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQU1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ 1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kH1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo71e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM?1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM 61e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk@1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIR YmBT)}R' { P % y Nk@i>c8 e:g< # w L ! u J  s H qFoD> *Q!KIHYKMzkRDrJwiywwz:loca*Q!JnAKXOrlyisFUpgJPw:localhost:8800  N*Q!JnAKXOrlyisFUpgJPw:localhost:8800  M*Q!JnAKXOrlyisFUpgJPw:localhost:8800  L*Q!JnAKXOrlyisFUpgJPw:localhost:8800  K*Q!JnAKXOrlyisFUpgJPw:localhost:8800  J*Q!JnAKXOrlyisFUpgJPw:localhost:8800  I*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' X*Q!JnAKXOrlyisFUpgJPw:localhost:8800 # T*Q!JnAKXOrlyisFUpgJPw:localhost:8800 " S*Q!JnAKXOrlyisFUpgJPw:localhost:8800 ! R*Q!JnAKXOrlyisFUpgJPw:localhost:8800 Q*Q!JnAKXOrlyisFUpgJPw:localhost:8800  P*Q!JnAKXOrlyisFUpgJPw:localhost:8800  O*Q!JnAKXOrlyisFUpgJPw:localhost:8800 & W*Q!JnAKXOrlyisFUpgJPw:localhost:8800 % V*Q!JnAKXOrlyisFUpgJPw:localhost:8800 $ U+*Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KIHYKMzkRDrJwiywwz:localhost:8800 : v*Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 u*Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 t*Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 s*Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 r*Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 q*Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 p*Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 o*Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 n*Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 m*Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 l*Q!KIHYKMzkRDrJwiywwz:localhost:8800 / k*Q!KIHYKMzkRDrJwiywwz:localhost:8800 . j*Q!KIHYKMzkRDrJwiywwz:localhost:8800 - i*Q!KIHYKMzkRDrJwiywwz:localhost:8800 , h*Q!KIHYKMzkRDrJwiywwz:localhost:8800 + g*Q!KIHYKMzkRDrJwiywwz:localhost:8800 * f*Q!KIHYKMzkRDrJwiywwz:localhost:8800 ) e*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 N [vD v j8|J p> # < P\* H  U 6V$ z S 0 hb0nh6 /b0 ) 1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU"G$83_outlier_C:localhost:424551e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok K1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok J1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok I1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A 1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw=1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw<1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw;1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMe1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMd1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Az1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk+1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk*1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk)1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE 1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsz1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsy1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsx1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8"G$83_outlier_C:localhost:424553$82:localhost:42455 3$87:localhost:4245521e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA3$82:localhost:424551e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 d1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQv1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud41e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk1e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIG1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud41e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug3$82:localhost:424553$81:localhost:424553$81:localhost:424553$81:localhost:424553$80:localhost:424553$80:localhost:42455"G$83_outlier_C:localhost:42455"G$83_outlier_C:localhost:424551e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf41e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf41e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Ar1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Aq1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-ga1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g`1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gb1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA 1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug  TseQ_7$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 372}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs", "$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ"], "type": "m.room.member", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-105", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-105:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040600286, "hashes": {"sha256": "7Wj2HTgHj2RlTE1BWgYWQeGH3Axkv69V8vFE1RhAaZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0vxBwIwLSdoJzN2t4UhZQ6E7yAPfs+RkkLMeFY0KEjD+KmF4il30NdWBnNN/vDpv5LZEXWEMNWJufq2j9iiGDw"}, "localhost:8829": {"ed25519:a_UxIG": "UsDCV65gAaj3Q4/za0z22g9YK+XHlJJReldT5k8SErtB/QpHLQK83h0KINvogREpFfDzZmvfGq+zJL6o5xw8Cw"}}, "unsigned": {"age_ts": 1570040600286, "invite_room_state": [{"type": "m.room.member", "state_key": "@anon-20191002_181700-104:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-104", "avatar_url": null}, "sender": "@anon-20191002_181700-104:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-104:localhost:8800"}, {"type": "m.room.name", "state_key": "", "content": {"name": "The room name"}, "sender": "@anon-20191002_181700-104:localhost:8800"}, {"type": "m.room.avatar", "state_key": "", "content": {"url": "http://something"}, "sender": "@anon-20191002_181700-104:localhost:8800"}]}}sreQ_u$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 371}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs"], "type": "m.room.avatar", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"url": "http://something"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040598957, "hashes": {"sha256": "sn0m8fjBHd/L1Cr3V8JGaMxXmVJM5JXGS5AVHEAgZJA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G7MDkRf6jQSFH2zw6ZCHEWebsXlITsxQbNveEXCiedNgKLiiF60Eb9HvjEusGN0+7bFctsqrwlvcOjlInqIbAw"}}, "unsigned": {"age_ts": 1570040598957}}oqeQ_m$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800{"token_id": 134, "stream_ordering": 370}{"auth_events": ["$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo", "$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc", "$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs"], "prev_events": ["$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs"], "type": "m.room.name", "room_id": "!SBEprlZiuliFNSfNmz:localhost:8800", "sender": "@anon-20191002_181700-104:localhost:8800", "content": {"name": "The room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040598956, "hashes": {"sha256": "1FZ+p3GbOq7cDN6s1t5Q8yo/dT0uG0BUwqLPqwxmp90"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gUf3Xov7SjWs0+ncf6+Y+1RQ5tqc9wTx9QCA+p9mrxGOk0xmUhvuLV0KGUj8IlsL3S+BlAnbl9GwRi99m38ADA"}}, "unsigned": {"age_ts": 1570040598956}} q | 4 ? D h JUz) |ArrQ))ep!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8oqQ? eo!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibility$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIggpQ/ en!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rules$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0loQ9 em!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_alias$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hginQ3 el!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0 mQ']ek!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUclQ' ej!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ kQ']ei!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk jQ']eh!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc iQ']eg!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM hQ']ef!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMrgQ))ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QofQ? ed!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibility$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwgeQ/ ec!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rules$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IldQ9 eb!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_alias$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIicQ3 ea!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks bQ']e`!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBccaQ' e_!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY `Q']e^!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800$aCRkNlroYqeXIBSvwkqV6CGtk1jtlHW7P6P63as3oWo _Q']e]!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wo^Q? e\!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibility$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYg]Q/ e[!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rules$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsi\Q3 eZ!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY [Q']eY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:8800$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEcZQ' eX!wIhMbfQzYbJobPdwyi:localhost:8800m.room.create$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw YQ']eW!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800$AKZ1HoWJTVWzDVZiwlV5S8VYT9TUQSuSS5rP48DorkEoXQ? eV!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibility$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcgWQ/ eU!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rules$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwiVQ3 eT!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc UQ']eS!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:8800$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgcTQ' eR!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE SQ']eQ!SBEprlZiuliFNSfNmz:localhost:8800m.room.member@anon-20191002_181700-105:localhost:8829$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ Ui>qFT)}R' u J w L ! oDg<@:  s H mBk { P % y N # ec8 *Q!IYxUkyFHOgvhLpdkOA:localhost:8800ZZ*Q!IYxUkyFHOgvhLpdkOA:localhost:8800YY*Q!IYxUkyFHOgvhLpdkOA:localhost:8800XX*Q!IYxUkyFHOgvhLpdkOA:localhost:8800WW*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!IGVHKYcSuxzVPlFHlj:localhost:8800  *Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!IYxUkyFHOgvhLpdkOA:localhost:8800VV*Q!IYxUkyFHOgvhLpdkOA:localhost:8800UU*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!IfYYyzLHSOeyJBxBfn:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!ITdmSQpjMnaPoHIbws:localhost:8800*Q!IPYMCBwcyNIzqdiIWv:localhost:8800MM*Q!IPYMCBwcyNIzqdiIWv:localhost:8800LL*Q!IPYMCBwcyNIzqdiIWv:localhost:8800KK*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IZkczIYykpZDvjuUWn:localhost:8800 V V*Q!IZkczIYykpZDvjuUWn:localhost:8800 U U*Q!IZkczIYykpZDvjuUWn:localhost:8800 T T*Q!IZkczIYykpZDvjuUWn:localhost:8800 S S*Q!IZkczIYykpZDvjuUWn:localhost:8800 R R*Q!IZkczIYykpZDvjuUWn:localhost:8800 Q Q*Q!IZkczIYykpZDvjuUWn:localhost:8800 P P*Q!IZkczIYykpZDvjuUWn:localhost:8800 O O*Q!IZkczIYykpZDvjuUWn:localhost:8800 N N*Q!IZkczIYykpZDvjuUWn:localhost:8800 M M*Q!IPYMCBwcyNIzqdiIWv:localhost:8800DD*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IPYMCBwcyNIzqdiIWv:localhost:8800JJ*Q!IPYMCBwcyNIzqdiIWv:localhost:8800II*Q!IPYMCBwcyNIzqdiIWv:localhost:8800HH*Q!IPYMCBwcyNIzqdiIWv:localhost:8800GG*Q!IPYMCBwcyNIzqdiIWv:localhost:8800FF*Q!IPYMCBwcyNIzqdiIWv:localhost:8800EE*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!IMiczgkCTjejbnbeyP:localhost:8800*Q!ILbUVZOfPPwaZRrKJd:localhost:8800DD*Q!ILbUVZOfPPwaZRrKJd:localhost:8800CC*Q!ILbUVZOfPPwaZRrKJd:localhost:8800BB*Q!ILbUVZOfPPwaZRrKJd:localhost:8800AA*Q!ILbUVZOfPPwaZRrKJd:localhost:8800@@*Q!IGVHKYcSuxzVPlFHlj:localhost:8800*Q!IGVHKYcSuxzVPlFHlj:localhost:8800 |t l d \ T MF>6.&eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800jeeQ$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800>eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800 فeeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800 eeQ$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE!BrssELMbasSzTFpIXm:localhost:8800$eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800 4eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800 5eeQ$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800 PeeQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800OeeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4!sPWVGnipjiiWQpywNO:localhost:8800-eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4!jYzridjeihmwPBuwLb:localhost:8800CeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800eeQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800ȁeeQ$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800 )eeQ$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800GeeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U!DnUHoxreGexNmjSVpq:localhost:8800eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800eeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800eeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH4!VCSCNemqikJZiRtxrs:localhost:8829eeQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800GeeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU!CSqENqzAezaZnGktbE:localhost:8800   -sweQ_u$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 376}{"auth_events": ["$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc", "$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE", "$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "prev_events": ["$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc"], "type": "m.room.join_rules", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040603236, "hashes": {"sha256": "ooO9Z5ISYFbXx9pk4N8q9MbOwF0eo1vmlN/cLNqPJh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xO8FewH6xBKN/C9cBrzb3/YB/DYe6UCOlXOoQubcABzyVjlF7mGuM1etQObMwwKBAEf4OdkTlyuBqdW/t4pfDA"}}, "unsigned": {"age_ts": 1570040603236}}jveQ_c$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 375}{"auth_events": ["$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE", "$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "prev_events": ["$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "type": "m.room.power_levels", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"users": {"@anon-20191002_181700-106:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040602587, "hashes": {"sha256": "hkm/0F/x2JkDKffX0D2LO5lrMhNsZrH8hOjQeHiY8a8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bdRrL1suVW0uvD1EJy4YD52Bdeehon5WolAnYsPFHkJZpfDukFmJIhPwlNuaGLdIUlGpP+XG3lO6QHB1IH/yBA"}}, "unsigned": {"age_ts": 1570040602587}}uueQ_y$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 374}{"auth_events": ["$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE"], "prev_events": ["$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE"], "type": "m.room.member", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-106", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-106:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040602082, "hashes": {"sha256": "PMlQQWrEdtM3akE7YH8iowBYjKjENo6U/o/k1ZYw4xY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1YdNgPQ5MN5nqnFzLjf1GoF6ihAkH3GNujBBKszZzgHEF/xEDl+w9L0/GO/klnl7LPGmZrlF8LflVp1Q5Mz8DA"}}, "unsigned": {"age_ts": 1570040602082}}hteQ__$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 373}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-106:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040601495, "hashes": {"sha256": "CPG8ho8i2beGtWhQRePlIxIbxvel6WlxYnwmqgAwHOQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xumzYHOv7IQHWeOpwvXktGHVgoWanfGJ85rOmK30u4CTsy5oaMpXBHXokMXxAJOPvHeqUyRR+sWzKpFiQUnIBg"}}, "unsigned": {"age_ts": 1570040601495}}  x j{eQ_c$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 380}{"auth_events": ["$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "prev_events": ["$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "type": "m.room.power_levels", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"users": {"@anon-20191002_181700-107:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040608195, "hashes": {"sha256": "4SUddcXwHQdXDG8xy1+Hoor5bqAFLLLycV6LeTF65Mk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "15OxdBV3UTcLUcTq8OyxT9Q7a6+uRhB6HRPFYyyRaN4uYin4FJxK18MevgEjHffU8TUszrTjz4E/HK/CCdrQCQ"}}, "unsigned": {"age_ts": 1570040608195}}uzeQ_y$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 379}{"auth_events": ["$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw"], "prev_events": ["$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw"], "type": "m.room.member", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-107", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-107:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040607651, "hashes": {"sha256": "WcX//OkYKaJ3Pm4xEBtQ4mLhp0CfmmD5inSLZUySO0M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O0MzB4gSVt5crbaF0/fssY6L8KY6OUJo52RApeRd4Eu+dLNFUKsauCneq68qKnlLis1I0mfuttUc/w2vqS54BA"}}, "unsigned": {"age_ts": 1570040607651}}hyeQ__$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 378}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-107:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040606994, "hashes": {"sha256": "PPLIgBKZQCw5AEvuqIe1Q4Txp+C3uNY3lUbZyTkFbQI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7gU+mQWD7ABO7S0Ac24SufPb4fkttj0J2vA3jV+gXlm8NRyN4IRxX50AKX8m5deCoKmuejcG6E/QJltc7avyAQ"}}, "unsigned": {"age_ts": 1570040606994}}xeQ_$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800{"token_id": 135, "stream_ordering": 377}{"auth_events": ["$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc", "$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE", "$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg"], "prev_events": ["$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw"], "type": "m.room.history_visibility", "room_id": "!cSUQGmpIsSCBAVTOHo:localhost:8800", "sender": "@anon-20191002_181700-106:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040603781, "hashes": {"sha256": "oLHDEYvij+40IWRy9AohoqK+aIbSb+NyXQNOifQK6/k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fSvgDXs9btALl15VpNcqbZB4TKNDKXMj8A34DUuiPK9g146EQgErFCbpKeDxUnaFsxFFSge2NI5DLSc1f/AbBg"}}, "unsigned": {"age_ts": 1570040603781}} a} { y w u sqomkigeca~jeeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800~ieeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~heeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~geeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~feeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~eeeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~deeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~ceeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~beeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~aeeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~`eeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~_eeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~^eeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~]eeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~\eeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800~[eeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800~ZeeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~YeeQ$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800~XeeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800~WeeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~VeeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800~UeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800~TeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~SeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800~ReeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800~QeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~PeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800~OeeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800~NeeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~MeeQ$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800~LeeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800 < (<heQ__$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 384}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-109:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040612435, "hashes": {"sha256": "ISlqa9pt7Ke3bnRWwGEUMr4WUWQ9PiVqElo9amF4y+A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yurC0/vL9hhiYTFfLhIVvU5F2xtV0TYAPGe9RGGIvfN/q3lz/gueCKBrv3wqFdZzlVX/bh27w3EuzT+K8pSpDg"}}, "unsigned": {"age_ts": 1570040612435}}U~eQ_9$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 137, "stream_ordering": 383}{"auth_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY", "$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls"], "prev_events": ["$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY"], "type": "m.room.member", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-108:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-108", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-108:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040610644, "hashes": {"sha256": "3Hc/J0PgDc6pNN8fikOntGu8D7HWVN5Q/a0FPuS17B4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/yBtPrimo69/A8FLzg7ZVpt4fwZc5FUfISu60u4Bgb3GHEfMRn3z3aUeFpcCADHF40jWF/MyCJWYyP8VjWzfDw"}}, "unsigned": {"age_ts": 1570040610644}}}eQ_$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 382}{"auth_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY", "$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "prev_events": ["$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls"], "type": "m.room.history_visibility", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040609479, "hashes": {"sha256": "C6YTzMb167qAGbuctAJNc9V/DrwhI89jWtQcultN9v8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1gxPtxuMzKf83jfxlcrWsRjVnO/OX2QOGTJL236xg5mm5MEVxPXlPXLSKRqlaLAY1nGfjZJzxs9nY2l/ivqpBw"}}, "unsigned": {"age_ts": 1570040609479}}s|eQ_u$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800{"token_id": 136, "stream_ordering": 381}{"auth_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY", "$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw", "$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE"], "prev_events": ["$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY"], "type": "m.room.join_rules", "room_id": "!wIhMbfQzYbJobPdwyi:localhost:8800", "sender": "@anon-20191002_181700-107:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040608938, "hashes": {"sha256": "IZB6Fhjz49QmKeHfRLUWfYSTb+oRbr3WYnZwHWOXntQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bqxSbQuK0qOs1oOAKEqpwLdXUffAi0huStN5ISePUVejf1Y3xiwARTneqln32kJfVsp6y4HEU44jY3n9w/TWBQ"}}, "unsigned": {"age_ts": 1570040608938}} ~z v r n j fb^ZVRNJFmeeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800leeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800keeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800jeeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800ieeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800heeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800geeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800feeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800eeeQ$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800deeQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800ceeQ$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800beeQ$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800aeeQ$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800`eeQ$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800_eeQ$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800^eeQ$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800]eeQ$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800\eeQ$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc!XgobMgBjNcDRJnRXLD:localhost:8800[eeQ$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800ZeeQ$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800YeeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800XeeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800WeeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800VeeQ$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800UeeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800TeeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800SeeQ$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800ReeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800QeeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800PeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800 K ) K E =_Y69^uKiQ3 ee!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 hQ']e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wsgQ))e!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwpfQ? e!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibility$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEheQ/ e!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rules$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgmdQ9 e!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_alias$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEjcQ3 e!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 bQ']e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIdaQ' e!oXKJArsPmtgaYANBrg:localhost:8800m.room.create$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY8`Q']ee!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4 _Q']e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4s^Q))e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8p]Q? e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibility$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgh\Q/ e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rules$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0m[Q9 e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_alias$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgjZQ3 e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0 YQ']e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUdXQ' e!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ8WQ']ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc8VQ']ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM8UQ']ee!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM TQ']e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMsSQ))e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QpRQ? e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibility$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwhQQ/ e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rules$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0ImPQ9 e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_alias$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIjOQ3 e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks NQ']e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcdMQ' e!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY LQ']e!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wpKQ? e~!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibility$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY 1WX ZD  ] l " D f >^}2U t)Kz/~UJQQ$1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800TeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800vTeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800dJQQ$1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800JQQ$1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800JQQ$1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800:Q1$1570043341273LsXNn:localhost:8800!0:localhost:42455JQQ$1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800JQQ$1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800IOQ$157004274411xArrT:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800HMQ$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800JQQ$1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800JQQ$1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800JQQ$1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800JQQ$1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800JQQ$1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800JQQ$1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800HMQ$15700426765pydev:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800HMQ$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800JQQ$1570042662161lGrSW:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800JQQ$1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800JQQ$1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800JQQ$1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800JQQ$1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800JQQ$1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800IOQ$157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800IOQ$157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800IOQ$157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800IOQ$157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800 IOQ$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800IOQ$157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800IOQ$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800IOQ$157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800IOQ$157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800IOQ$157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800IOQ$157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800IOQ$157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800GMQ$15700403175seOtB:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800TeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800TSeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800uTeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM!aZwMKYDXJRlSKjQNWM:localhost:8800OSeQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800;TeQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800SeQ$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg!rZWweGEChkxxtzyfDB:localhost:8800UTeQ$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc!ubmTdQFAhrhZkGULDx:localhost:8800TeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800TeQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800TeQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800SeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800Y 4{@_ R  S  , . /Ic'CE_#y$z>5TeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800gSeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:88000TeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800;3Q$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:88008;3Q$55:localhost:42455!taANXnGBZntAreRurn:localhost:88005;3Q$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800*;3Q$53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 TeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800hUTeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800lTeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800TeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800;3Q$49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800TeQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800;3Q$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800TeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800SeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800^TeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800TeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800;TeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800SeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800R:1Q$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800;3Q$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800;3Q$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800TeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800TeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800TeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800TeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800;3Q$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800 TeQ$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU!jRuDexjFzIDOKbwDJQ:localhost:8800:TeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800TeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA!nhbUIcIbhuXkRqfeDa:localhost:8800GSeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800_TeQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:8800TeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800TeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800;3Q$15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800JQQ$1570043754467mNKfq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800ZJQQ$1570043744459BIUYb:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800YJQQ$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800V;Q3$1570043683436iTOlZ:localhost:8800!13:localhost:42455I;Q3$1570043680434abJWo:localhost:8800!12:localhost:42455H;Q3$1570043670433bjAzo:localhost:8800!11:localhost:42455F;Q3$1570043664431IMLSL:localhost:8800!10:localhost:42455E:Q1$1570043660430kLPpN:localhost:8800!9:localhost:42455DJQQ$1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:88006JQQ$1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800+JQQ$1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800JQQ$1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800JQQ$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800:Q1$1570043468324DLhaB:localhost:8800!6:localhost:42455 :Q1$1570043392317hujur:localhost:8800!5:localhost:42455IOQ$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Ie$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1He$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41Ge$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1Fe$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1Ee$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1De$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281Ce$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1Be$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1Ae$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1@e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1?e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1>e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1=e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1<e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1;e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1:e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs19e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM18e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs17e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw16e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe415e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM14e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE13e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk12e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk11e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA10e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1/e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM1.e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1-e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs1,e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1+e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1*e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1)e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1(e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81'e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1&e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1%e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1$e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1#e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1"e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1!e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1 e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0}1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ|1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w{1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwz1e$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEy1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgx1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEw1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4v1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIu1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYt1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAs1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4r1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8p1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgo1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0n1 e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgm1 e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0l1 e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUk1 e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQj1 e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuki1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pch1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMg1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMf1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Qe1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwd1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0Ic1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIb1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksa1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc`1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY_ F o 6  u S Uo6So6Rn5  Rn5U Iq8 m M  u1978e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMsha2568e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4sha256 p8e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-ssha256 n3$49:localhost:42455sha256 3$46:localhost:42455sha256 3$45:localhost:42455sha256 3$48:localhost:42455sha256 3$44:localhost:42455sha256 3$43:localhost:42455sha256 3$40:localhost:42455sha256 8e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAsha256x8e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0sha2568e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAksha256#8e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vcsha256 8e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMsha2568e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUsha2568e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQsha256 8e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0sha256i7e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvosha256_8e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAsha2568e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUsha2568e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Ysha2568e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_ssha256 8e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAsha2568e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwsha2568e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMsha256 8e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0sha2568e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyUsha2568e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUsha2568e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3issha256 G8e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90sha256 18e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-Esha256 8e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUsha2568e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81Usha256 8e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REsha2567e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Asha256u8e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bYsha256 }8e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8sha2568e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAsha2568e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEksha256 8e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEsha2568e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0sha256U8e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQsha2567e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUsha256V8e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMsha256A8e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5osha256*8e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcsha256A8e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwsha256s8e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLksha2568e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIsha2568e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvksha2568e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980sha256G8e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNoksha256A8e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760sha25638e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNssha256,3$53:localhost:42455sha256 '8e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogsha2563$52:localhost:42455sha256 &3$50:localhost:42455sha256 %8e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgsha256 8e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPEsha2568e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1Usha2568e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYsha2568e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHYsha2568e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWosha256 Y8e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcsha2568e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogsha256Y8e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyosha2568e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwsha2568e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbssha256   seQ_u$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 388}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI"], "type": "m.room.join_rules", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040614695, "hashes": {"sha256": "xGz86QGPR2yYRmjLzpWQXC79EfQJhLJLvk+e0V5JeLk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tC9T8ynzR8ENEi+QAACMiqd41BVITk0/VlfXvYsmlHS9mBeRrOesP2hhkH+iz9POtzVDVF0pScsQWo61D4G1Ag"}}, "unsigned": {"age_ts": 1570040614695}}eQ_7$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 387}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks"], "type": "m.room.canonical_alias", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"alias": "#test-20191002_181700-6:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040614037, "hashes": {"sha256": "N72yBiKL1OcCsuYy/nQr4oh3U1spvp9WBVgGc2paR/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fQL3/rGvHg3iXkDTMiMUfq+je+P8wixTLzuOC0LoakTkjp5XR+TCHTuW+LbzPTxTzsZqaNEtpiI8HLEd8uF+Dw"}}, "unsigned": {"age_ts": 1570040614037}}jeQ_c$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 386}{"auth_events": ["$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "type": "m.room.power_levels", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"users": {"@anon-20191002_181700-109:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040613487, "hashes": {"sha256": "vxcByH/VSeFPLpFlI4xGh+cSnIdVqYP1/rZc2l7TUfs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0NjvHp1O9I6CIDjw8W1NMemokkDJDZ+gHFcm4mMlHMxGu/7UHcR1z0C9nIsNq+tV9R+RezABCJDOR4vIBitlDQ"}}, "unsigned": {"age_ts": 1570040613487}}ueQ_y$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 385}{"auth_events": ["$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY"], "prev_events": ["$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY"], "type": "m.room.member", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-109", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-109:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040613052, "hashes": {"sha256": "3QyrZvVJLvzKyfMB0Quzavl2OFKxJOfZ+NlFv0k7WhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9jPO4EpAuz4+8HVLnGnYdToiOAlRxG6/BE+EyWQ9fS0V4Y+DDNUeBDcVJTldvBsOe/UBSjnfiyT3pjpFgVhLDA"}}, "unsigned": {"age_ts": 1570040613052}} EV Q  d  z,':JE,e?Q ]$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEm.room.history_visibility!oXKJArsPmtgaYANBrg:localhost:8800m"mD@anon-20191002_181700-112:localhost:8800$e/Q ]$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgm.room.join_rules!oXKJArsPmtgaYANBrg:localhost:8800mmյ@anon-20191002_181700-112:localhost:8800)e9Q ]$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEm.room.canonical_alias!oXKJArsPmtgaYANBrg:localhost:8800m7m@anon-20191002_181700-112:localhost:8800&e3Q ]$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4m.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800mRmг@anon-20191002_181700-112:localhost:8800 e'Q ]$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIm.room.member!oXKJArsPmtgaYANBrg:localhost:8800m)mͨ@anon-20191002_181700-112:localhost:8800 e'Q  ]$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYm.room.create!oXKJArsPmtgaYANBrg:localhost:8800mNmʩ@anon-20191002_181700-112:localhost:8800 e'Q ] $_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAm.room.member!egCvzKpbEwmuvDoBTb:localhost:8800 m›mE@anon-20191002_181700-109:localhost:8800 e'Q ]$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4m.room.member!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-111:localhost:8829!e)Q ]$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8m.room.aliases!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800,e?Q ]$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgm.room.history_visibility!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800$e/Q ]$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0m.room.join_rules!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800)e9Q ]$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgm.room.canonical_alias!egCvzKpbEwmuvDoBTb:localhost:8800m.m @anon-20191002_181700-109:localhost:8800& e3Q ]$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0m.room.power_levels!egCvzKpbEwmuvDoBTb:localhost:8800mm@anon-20191002_181700-109:localhost:8800 e'Q ]$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUm.room.member!egCvzKpbEwmuvDoBTb:localhost:8800m3m@anon-20191002_181700-109:localhost:8800  e'Q  ]$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQm.room.create!egCvzKpbEwmuvDoBTb:localhost:8800mUm@anon-20191002_181700-109:localhost:8800 e'Q ] $Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukukm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800 mDm@anon-20191002_181700-110:localhost:8800 e'Q ] $ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pcm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800 m.m@anon-20191002_181700-109:localhost:8800 e'Q ] $dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800 mm>@anon-20191002_181700-109:localhost:8800 e'Q ]$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMm.room.member!XgobMgBjNcDRJnRXLD:localhost:8800mm>@anon-20191002_181700-110:localhost:8800!e)Q ]$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Qm.room.aliases!XgobMgBjNcDRJnRXLD:localhost:8800mmn@anon-20191002_181700-109:localhost:8800,e?Q ]$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwm.room.history_visibility!XgobMgBjNcDRJnRXLD:localhost:8800mm@anon-20191002_181700-109:localhost:8800$e/Q ]$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0Im.room.join_rules!XgobMgBjNcDRJnRXLD:localhost:8800m'm@anon-20191002_181700-109:localhost:8800)e9Q ]$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIm.room.canonical_alias!XgobMgBjNcDRJnRXLD:localhost:8800mmM@anon-20191002_181700-109:localhost:8800&e3Q ]$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksm.room.power_levels!XgobMgBjNcDRJnRXLD:localhost:8800momS@anon-20191002_181700-109:localhost:8800  4 h 6jfd]c@anon-20191002_181700-199:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8Qo127.0.0.1d]c@anon-20191002_181700-198:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwo127.0.0.1d]c@anon-20191002_181700-197:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0wo127.0.0.1d]c@anon-20191002_181700-196:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFktYixvQUtYZWF0VUBuWk0KMDAyZnNpZ25hdHVyZSDs1SpADqu4MI3Kkq0UCmbydwdHoJTXpqEYg9OJG7YBnAo127.0.0.1d]c@anon-20191002_181700-195:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwweW9JRFk5aGt3VmE9a3QKMDAyZnNpZ25hdHVyZSDHqwHHHtg_uF13OA88pF-q5kS_mwIyEV79B7ibema-lgo127.0.0.1d]c@anon-20191002_181700-194:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEyOm1aOWtBTU5mNjtLNn4KMDAyZnNpZ25hdHVyZSAJNq38xYsAafEMGJjV-gyFAhEIRQMSyJcyHE_26icm3Ao127.0.0.1d]c@anon-20191002_181700-193:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHMxS2NQZ2VtLGJvcCZibkMKMDAyZnNpZ25hdHVyZSA3TN7LnS5yl4h57FSwjwg9GfgdePN17_r5hXeFHnU2RAo127.0.0.1d]c@anon-20191002_181700-192:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZLT3hqPWp5PU9uRCM1VEMKMDAyZnNpZ25hdHVyZSC2EoqChhKnAKlLFg2seUiR0-JQqprG-ktdGIfMC6k8qAo127.0.0.1d]c@anon-20191002_181700-191:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtlMlJqT3UqWEIsNSs3YzAKMDAyZnNpZ25hdHVyZSA1yZh7wJF3PyG6ywgs4xxgTMQPJbBMDXW2BrgJlZc33go127.0.0.1d]c@anon-20191002_181700-190:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl0LCxpVnpnPWN4OFdEdyoKMDAyZnNpZ25hdHVyZSAvHPED72aJ9dwVSH5v0uE3tWyTMdN6NBhOex2nXfW16Qo127.0.0.1 Bm G !hBd]c!E@anon-20191002_181700-119:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwoCPKUOIOMCL127.0.0.1Perl + Net::Async::HTTP/0.44mc]c!E@anon-20191002_181700-118:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQoEGGHWNCYVG127.0.0.1Perl + Net::Async::HTTP/0.44mƃb]c!E@anon-20191002_181700-117:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwoAOWWBWACSK127.0.0.1Perl + Net::Async::HTTP/0.44ma]c!E@anon-20191002_181700-116:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1goNOEVNPHDUZ127.0.0.1Perl + Net::Async::HTTP/0.44mB`]c!E@anon-20191002_181700-115:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwoXPQYONRAEB127.0.0.1Perl + Net::Async::HTTP/0.44mg_]c!E@anon-20191002_181700-114:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4QoCMIIGGQSIH127.0.0.1Perl + Net::Async::HTTP/0.44m-^]c!E@anon-20191002_181700-113:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygoDEIMBREIQT127.0.0.1Perl + Net::Async::HTTP/0.44m]]c!E@anon-20191002_181700-112:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6SwoNJWUEDBXDE127.0.0.1Perl + Net::Async::HTTP/0.44mɸ\]c!E@anon-20191002_181700-110:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAoLARRQIDFNH127.0.0.1Perl + Net::Async::HTTP/0.44mq[]c!E@anon-20191002_181700-109:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5goOVPPVZDCAA127.0.0.1Perl + Net::Async::HTTP/0.44m  x leQ_g$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 392}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM"], "type": "m.room.member", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-110:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040618464, "hashes": {"sha256": "oVPlNgCvfxEJsDnHOi8GL93wU53ALmcLHxvpaLjjUIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "du2cPaSD3tVmv0S8NbalNFIQKmqBHIAoEWbW1OzwCkCT0ZR+D0ixi6G8P8jwmmxJaianitWYutSx5/mLj9ZTAg"}}, "unsigned": {"age_ts": 1570040618464, "replaces_state": "$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM"}}UeQ_9$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 139, "stream_ordering": 391}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I"], "prev_events": ["$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q"], "type": "m.room.member", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-110:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-110", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-110:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040617445, "hashes": {"sha256": "wK+I2AB+2QDnhxIrxwzB30VRItbjHSG27ixtNKXNS1s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mTKLS1QWKTQ3l+yuw4diV3vgZefI9vc0TSZ1FDocsQkSOTQ9/NzTzJYb+9XANktJzWoij2pv5XUejENAaJQ0CQ"}}, "unsigned": {"age_ts": 1570040617445}}eQ_K$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 390}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw"], "type": "m.room.aliases", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"aliases": ["#test-20191002_181700-6:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040616478, "hashes": {"sha256": "6VF3xEpyLXoJrf6HpJOJYn3hcOmqVPKeB5KNU0kcPLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LlxC9g8TSiOoUnsX4jgAP2bWm+LX6oz4JhUPs6NOmzdE/vJoZU04HL03CDdsLcv2ucn9Iey6jAJ/O5Xh2o2JDg"}}, "unsigned": {"age_ts": 1570040616478}}eQ_$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800{"token_id": 138, "stream_ordering": 389}{"auth_events": ["$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks", "$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY", "$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc"], "prev_events": ["$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I"], "type": "m.room.history_visibility", "room_id": "!XgobMgBjNcDRJnRXLD:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040615170, "hashes": {"sha256": "kdRLtpo08baJOzGWUjcqlcUhF2L2f7lxfoyWh+2+9H8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2myMUNkoVlsVsPl6vbQoy54NkCdHomRr2j4rLKefoqxumbGKoN9sMU/wiTtfpI2XaLs1m63Fo94nrQu7dkASCg"}}, "unsigned": {"age_ts": 1570040615170}}  ipX@(iQ9! i H &  | Z 8  l J (   ] ;  o M + A0dBk>]0|O"nA`3Rc!E@__ANON__-48:localhost:424556 !E@__ANON__-49:localhost:42455c !E@__ANON__-50:localhost:42455!E@__ANON__-58:localhost:42455+!E@__ANON__-57:localhost:42455)!E@__ANON__-56:localhost:42455'!E@__ANON__-55:localhost:42455%!E@__ANON__-54:localhost:42455#!E@__ANON__-53:localhost:42455!!E@__ANON__-52:localhost:42455!E@__ANON__-51:localhost:42455,]@anon-20191002_181700-113:localhost:8800j,]@anon-20191002_181700-113:localhost:8800h,]@anon-20191002_181700-113:localhost:8800f,]@anon-20191002_181700-113:localhost:8800d,]@anon-20191002_181700-113:localhost:8800a,]@anon-20191002_181700-112:localhost:8800m,]@anon-20191002_181700-112:localhost:8800k,]@anon-20191002_181700-112:localhost:8800i,]@anon-20191002_181700-112:localhost:8800g,]@anon-20191002_181700-112:localhost:8800e,]@anon-20191002_181700-112:localhost:8800c,]@anon-20191002_181700-112:localhost:8800`,]@anon-20191002_181700-111:localhost:8829_,]@anon-20191002_181700-111:localhost:8829^,]@anon-20191002_181700-110:localhost:8800\,]@anon-20191002_181700-110:localhost:8800[,]@anon-20191002_181700-110:localhost:8800Z,]@anon-20191002_181700-110:localhost:8800Y,]@anon-20191002_181700-109:localhost:8800],]@anon-20191002_181700-109:localhost:8800X,]@anon-20191002_181700-108:localhost:8800W,]@anon-20191002_181700-107:localhost:8800V,]@anon-20191002_181700-106:localhost:8800U,]@anon-20191002_181700-105:localhost:8829T,]@anon-20191002_181700-104:localhost:8800S,]@anon-20191002_181700-103:localhost:8800R,]@anon-20191002_181700-102:localhost:8800Q,]@anon-20191002_181700-101:localhost:8800O,]@anon-20191002_181700-101:localhost:8800M,]@anon-20191002_181700-100:localhost:8800P,]@anon-20191002_181700-100:localhost:8800N!E@__ANON__-47:localhost:42455!E@__ANON__-46:localhost:42455!E@__ANON__-45:localhost:42455!E@__ANON__-43:localhost:42455!E@__ANON__-41:localhost:42455 !E@__ANON__-40:localhost:42455 !E@__ANON__-40:localhost:42455!E@__ANON__-39:localhost:42455!E@__ANON__-38:localhost:42455!E@__ANON__-37:localhost:42455!E@__ANON__-36:localhost:42455!E@__ANON__-35:localhost:42455!E@__ANON__-34:localhost:42455!E@__ANON__-33:localhost:42455!E@__ANON__-32:localhost:42455!E@__ANON__-31:localhost:42455!E@__ANON__-30:localhost:42455 C@__ANON__-2:localhost:42455!E@__ANON__-28:localhost:42455!E@__ANON__-26:localhost:42455!E@__ANON__-23:localhost:42455!E@__ANON__-22:localhost:42455!E@__ANON__-21:localhost:42455!E@__ANON__-20:localhost:42455!E@__ANON__-19:localhost:42455!E@__ANON__-18:localhost:42455!E@__ANON__-17:localhost:42455!E@__ANON__-16:localhost:42455!E@__ANON__-15:localhost:42455!E@__ANON__-14:localhost:42455!E@__ANON__-13:localhost:42455!E@__ANON__-12:localhost:42455!E@__ANON__-11:localhost:42455!E@__ANON__-10:localhost:42455 C@__ANON__-0:localhost:42455/@8:localhost:8800/@7:localhost:8800/@7:localhost:8800/@6:localhost:8800/@6:localhost:8800/@5:localhost:8800/@5:localhost:8800/@3:localhost:88001@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:8800/@2:localhost:88001@28:localhost:88001@28:localhost:88001@17:localhost:88001@17:localhost:88001@16:localhost:88001@16:localhost:88001@15:localhost:88001@15:localhost:88001@14:localhost:88001@14:localhost:88001@13:localhost:88001@13:localhost:88001@12:localhost:88001@11:localhost:8800 7KtGf9  R$)kW=vHb4 | N h : T & n @  _ 3 W)yKe7--]@anon-20191002_18170,]@anon-20191002_181700-127:localhost:8800|,]@anon-20191002_181700-129:localhost:8800}-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-140:localhost:8800-]@anon-20191002_181700-139:localhost:8829-]@anon-20191002_181700-139:localhost:8829-]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-132:localhost:8800,]@anon-20191002_181700-131:localhost:8800,]@anon-20191002_181700-130:localhost:8800~,]@anon-20191002_181700-128:localhost:8800{,]@anon-20191002_181700-127:localhost:8800z,]@anon-20191002_181700-126:localhost:8800y,]@anon-20191002_181700-125:localhost:8800x,]@anon-20191002_181700-124:localhost:8800w,]@anon-20191002_181700-123:localhost:8800v,]@anon-20191002_181700-120:localhost:8800u,]@anon-20191002_181700-119:localhost:8800t,]@anon-20191002_181700-118:localhost:8800s,]@anon-20191002_181700-117:localhost:8800r,]@anon-20191002_181700-116:localhost:8800q,]@anon-20191002_181700-115:localhost:8800p,]@anon-20191002_181700-114:localhost:8800o,]@anon-20191002_181700-113:localhost:8800n-]@anon-20191002_181700-170:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800 +[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800*[ @anon-20191002_181700-16:localhost:8800-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-169:localhost:8800-]@anon-20191002_181700-168:localhost:8800-]@anon-20191002_181700-167:localhost:8800-]@anon-20191002_181700-166:localhost:8829-]@anon-20191002_181700-165:localhost:8800-]@anon-20191002_181700-164:localhost:8800-]@anon-20191002_181700-163:localhost:8800-]@anon-20191002_181700-162:localhost:8800-]@anon-20191002_181700-161:localhost:8800-]@anon-20191002_181700-160:localhost:8800-]@anon-20191002_181700-158:localhost:8800-]@anon-20191002_181700-156:localhost:8800-]@anon-20191002_181700-154:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-153:localhost:8800-]@anon-20191002_181700-152:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-151:localhost:8800-]@anon-20191002_181700-150:localhost:8800-]@anon-20191002_181700-150:localhost:8800-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-148:localhost:8829-]@anon-20191002_181700-148:localhost:8829-]@anon-20191002_181700-147:localhost:8829-]@anon-20191002_181700-147:localhost:8829-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-144:localhost:8800-]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-141:localhost:8800 =Oe* y @  e Q =  ~ 9k&WCt/IbN iDEQ@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800F DEQ@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800HO]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800/O]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800.O]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800-DEQ@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800DDEQ@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800BDEQ@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800@DEQ@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800>DEQ@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:8800<5E3@__ANON__-51:localhost:42455!13:localhost:4245585E3@__ANON__-50:localhost:42455!13:localhost:4245575E3@__ANON__-49:localhost:42455!12:localhost:424555DEQ@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:880045E3@__ANON__-47:localhost:42455!11:localhost:4245505E3@__ANON__-46:localhost:42455!10:localhost:42455.4E1@__ANON__-45:localhost:42455!9:localhost:42455,DEQ@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800+DEQ@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800)DEQ@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800%DEQ@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800'DEQ@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800#DEQ@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800!DEQ@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800DEQ@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800DEQ@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800DEQ@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800DEQ@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800DEQ@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800DEQ@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800DEQ@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800CCQ@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800DEQ@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800 DEQ@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800 DEQ@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800DEQ@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:88004E1@__ANON__-20:localhost:42455!6:localhost:42455DEQ@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800DEQ@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800DEQ@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800DEQ@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800DEQ@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800DEQ@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800DEQ@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800DEQ@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:88004E1@__ANON__-10:localhost:42455!5:localhost:424553C1@__ANON__-0:localhost:42455!0:localhost:424558/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800r8/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800n8/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800j:1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800:1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800:1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800:1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800:1Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:88008/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800h:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800 1`p 0 @ P `  p 0@P`p 0@P{O]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:88002O]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:88001O]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800cO]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800bO]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800aO]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800`O]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800]O]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800^O]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800\O]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800[O]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800ZO]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800YO]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800XO]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800WO]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800VO]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800UO]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800TO]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800SO]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800RO]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800QO]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800PO]Q@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800OO]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800MO]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800LO]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800KO]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800JO]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800IO]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800HO]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800GO]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800FO]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800EO]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800DO]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800CO]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800@O]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:88006O]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:88008O]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800:O]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800>O]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800BO]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800eQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800Q=eQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc!HcMGemcRrLnLprOJJR:localhost:8800Q<eQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc!SyIWYOmcGiASNkPCTB:localhost:8800Q;eQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800Q:eQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800Q9eQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800Q8eQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800Q7eQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800Q6eQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800Q5eQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800Q4eQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800Q3eQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800Q2eQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800 dc &Qn 4 \ MX6 X | E8m !/a>eQ' $6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800m.room.create =eQ']$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800joinm<eQ? $t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibilitye;eQ/ $Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rulesg:eQ3 $PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levelspTeQ))$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800mSeQ? $-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibilityeReQ/ $acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rulesjQeQ9 $7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_alias !j OeQ']$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaNeQ' $idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800m.room.create MeQ']$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829ban EeQ']$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-110:localhost:8800joinpDeQ))$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800mCeQ? $Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800m.room.history_visibilityeBeQ/ $GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800m.room.join_rulesjAeQ9 $snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI!XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_aliasg@eQ3 $x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800m.room.power_levels ?eQ']$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800join7 UeQ']$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpLeQ))$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800mKeQ? $JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibilityeJeQ/ $a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rulesjIeQ9 $amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_aliasgHeQ3 $mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels GeQ']$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-109:localhost:8800joinaFeQ' $RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800m.room.create Tj8tq? wE~zeM5j8p> H v D  | JB2   P   V $n U  ]< +d 1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuraso1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk71e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk)1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE3$49:localhost:42455 3$46:localhost:42455 3$45:localhost:42455 3$48:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 3$39:localhost:42455 3$38:localhost:42455 1$3:localhost:41985 1$3:localhost:44405 1$3:localhost:37265 3$37:localhost:42455 3$33:localhost:42455 1$3:localhost:42455 T1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujob1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao T1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug N1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAJ1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsE1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J061e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Au1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY }1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0U1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUV1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMA1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o*1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcA1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOws1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMZ1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEm1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgU1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMa1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kN1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I \1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsL1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A}1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkg1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIz1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI {1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M{ Nvj8 p> v D  K } K  Q  p W ? w E >}QW%]+vc1P7p1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0T1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras?1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0U1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ3$46:localhost:42455 0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUV3$44:localhost:42455 3$43:localhost:42455 1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM21e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o*3$40:localhost:42455 1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc?1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwq1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMX1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE^1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgS1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMR1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kN1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I L1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs=1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-An1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLke1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIz1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI k1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_My1$3:localhost:42455 A3$39:localhost:42455 1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujob3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao E1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug ?1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAJ1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls61e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0'1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYk1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E91e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k >1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooA Tj8tq? wE~zeM5j8p> H v D  | JB2   P   V $n U  ]< +d 1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasi1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk11e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk#1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE3$49:localhost:42455 3$46:localhost:42455 3$45:localhost:42455 3$48:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 3$39:localhost:42455 3$38:localhost:42455 1$3:localhost:41985 1$3:localhost:44405 1$3:localhost:37265 3$37:localhost:42455 3$33:localhost:42455 1$3:localhost:42455 T1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujob1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao T1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug N1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAJ1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsE1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J061e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Au1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY }1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0U1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUV1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMA1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o*1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcA1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOws1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMZ1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEm1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgU1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMa1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kN1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I \1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsL1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A}1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkg1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIz1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI {1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M{ Y`8pH X 0  h @  x P ( ` 8  p H v]D}KQW%]+c1i7o= 'Q$1570043712439X1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk 1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ"1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ 1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uou1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEx1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI\1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwp1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo91e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw[1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoz1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY+1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ}1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E;1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4d3$18:localhost:42455 J1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 I3$16:localhost:42455 H1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk'Q$1570043750466Tmiqu:localhost:8800 /'Q$1570043748464QpNXV:localhost:8800 -'Q$1570043748463euAqZ:localhost:8800 ,'Q$1570043747462YuUEF:localhost:8800 +'Q$1570043746461eQhrq:localhost:8800 *'Q$1570043745460sJOiY:localhost:8800 )'Q$1570043741458PZvre:localhost:8800 ('Q$1570043739456qeuuS:localhost:8800 &'Q$1570043738455KNDHf:localhost:8800 %'Q$1570043737454adOjg:localhost:8800 $'Q$1570043736453VtbeL:localhost:8800 #'Q$1570043736452Igyim:localhost:8800 "'Q$1570043733451EJhWh:localhost:8800 !'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 'Q$1570043648422SglHQ:localhost:8800 'Q$1570043647421dmTZW:localhost:8800 'Q$1570043646420mPrhj:localhost:8800 'Q$1570043646419zIOAX:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 'Q$1570043593416CouYv:localhost:8800 'Q$1570043592415heiAH:localhost:8800 'Q$1570043591414NuXxd:localhost:8800 'Q$1570043590413Khvee:localhost:8800 'Q$1570043589412JaDTY:localhost:8800 'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800  eQ_$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 400}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0"], "type": "m.room.history_visibility", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040624912, "hashes": {"sha256": "CNTsFXE8KaTVLkAwTr+DGy0/VmjIB/EAFufF4kdGPbM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ia+OZXQp/NVWJWIY+E1DiL9zLoRjWaMsNB2dJMSh1djGV80ruSGxY1b6NHqE915tIZR07HLmJ2n7W5w9UVg/Dg"}}, "unsigned": {"age_ts": 1570040624912}}seQ_u$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 399}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg"], "type": "m.room.join_rules", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040624372, "hashes": {"sha256": "mfDgNb2iBUmiIuKSsDKht+z7oRPF/YfJIVLqSULeuiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pcu/prLL+2sbrTM4EH8+XBQdQBKI2EPUhWgn6c04xAu1xGlYMGNICZ3D3mK5CaYVzAx/p2aPK4+l1DzAsCbPDQ"}}, "unsigned": {"age_ts": 1570040624372}} eQ_7$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 398}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0"], "type": "m.room.canonical_alias", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"alias": "#test-20191002_181700-7:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040623662, "hashes": {"sha256": "rgZS86wlturfwcAB/koHeptAfoIvjmcFXM/UkKV+4d4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xn6CgrV3WwM65cxpreWfNx8gqhvv4dP4cqbreA+WxQT8yaOZO1Hm+NJfZFML/2nVdUyVIQ7OWntpfpUQeFQ6Ag"}}, "unsigned": {"age_ts": 1570040623662}}j eQ_c$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 397}{"auth_events": ["$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "type": "m.room.power_levels", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"users": {"@anon-20191002_181700-109:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040622356, "hashes": {"sha256": "YMFdTg8XHD0oTW6ZodPCHkdLV8krIGP8GiyFr3rQtiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y/OdtzthJcBJMOIkpb8nv6wULsO5YGk8O9jZrdmHQEJP7EWTVKiaQkvmIYx+s8jy+TUteJ8duW+XmHOWf6cFDA"}}, "unsigned": {"age_ts": 1570040622356}} #i)Q Q ` i $ $Pq A^g1@ij|eQ9 $A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_aliasg{eQ3 $bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels zeQ']$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800ayeQ' $J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800m.room.create_xeQ# $Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.namegweQ3 $GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levelsgveQ3 $c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levelsgueQ3 $1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels teQ']$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800pseQ))$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800mreQ? $kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibilityeqeQ/ $i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rulesjpeQ9 $1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_aliasgoeQ3 $HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels neQ']$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800ameQ' $gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.createrleQ'/$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:testgkeQ3 $VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levelsgjeQ3 $TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levelsgieQ3 $FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels heQ']$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800pgeQ))$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800mfeQ? $-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibilityeeeQ/ $acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rulesjdeQ9 $7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_aliasgceQ3 $9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels beQ']$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aaeQ' $idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800m.room.create `eQ']$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829 _eQ']$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829p^eQ))$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800m.room.aliaseslocalhost:8800m]eQ? $JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.history_visibilitye\eQ/ $a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.join_rulesj[eQ9 $amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800m.room.canonical_aliasgZeQ3 $mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800m.room.power_levels -RM H C > 9 4/*|%w rmhc TQe!eySSVuCclRpBDgwKIU:localhost:8800$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMTQe!eySSVuCclRpBDgwKIU:localhost:8800$xROOFTUlx-3FUlG3Q3SGjI3owccAL018_sc6Tz8HZncTQe!eySSVuCclRpBDgwKIU:localhost:8800$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xETQe!eySSVuCclRpBDgwKIU:localhost:8800$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkTQe!eySSVuCclRpBDgwKIU:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkTQe!eySSVuCclRpBDgwKIU:localhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFATQe!eySSVuCclRpBDgwKIU:localhost:8800$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isTQe!eySSVuCclRpBDgwKIU:localhost:8800$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMTQe!eySSVuCclRpBDgwKIU:localhost:8800$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkTQe!eySSVuCclRpBDgwKIU:localhost:8800$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsTQe!eySSVuCclRpBDgwKIU:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMTQe!eySSVuCclRpBDgwKIU:localhost:8800$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYT Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IT Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3ET Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$EMmhoJ_-8_UITDaPtdQB8S0pvkFJDtjBABLPoFc1vNsT Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8T Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3UoTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYTQe!fJXiUpbbOlLbHWmPgs:localhost:8800$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwTQe!oXKJArsPmtgaYANBrg:localhost:8800$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcTQe!oXKJArsPmtgaYANBrg:localhost:8800$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0T~Qe~!oXKJArsPmtgaYANBrg:localhost:8800$32Lf1b7J36pLwmiF2YQxCwxXlE2IHivq6uGZx8xfneMT}Qe}!oXKJArsPmtgaYANBrg:localhost:8800$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0T|Qe|!oXKJArsPmtgaYANBrg:localhost:8800$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQT{Qe{!oXKJArsPmtgaYANBrg:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wTzQez!oXKJArsPmtgaYANBrg:localhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwTyQey!oXKJArsPmtgaYANBrg:localhost:8800$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJETxQex!oXKJArsPmtgaYANBrg:localhost:8800$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgTwQew!oXKJArsPmtgaYANBrg:localhost:8800$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfETvQev!oXKJArsPmtgaYANBrg:localhost:8800$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4TuQeu!oXKJArsPmtgaYANBrg:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWITtQet!oXKJArsPmtgaYANBrg:localhost:8800$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYTsQes!egCvzKpbEwmuvDoBTb:localhost:8800$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzATrQer!egCvzKpbEwmuvDoBTb:localhost:8800$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4TqQeq!egCvzKpbEwmuvDoBTb:localhost:8800$w7TrPGmnzzJgLwtRl9cor8J8Yra3EcrMt7ktvtambTQTpQep!egCvzKpbEwmuvDoBTb:localhost:8800$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8ToQeo!egCvzKpbEwmuvDoBTb:localhost:8800$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgTnQen!egCvzKpbEwmuvDoBTb:localhost:8800$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0TmQem!egCvzKpbEwmuvDoBTb:localhost:8800$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg (dz, B X n 6 Lbx*@Vl4I\ oWtL([Q@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800L'[Q@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800L&[Q@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800L%[Q@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800L$[Q@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800L#[Q@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800L"[Q@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800L![Q@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800L [Q@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800L[Q@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800L[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800L[Q@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800L[Q@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800L[Q@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800L[Q@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800L[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800L[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800L[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800L[Q@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800L[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800L[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800L[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800L[Q@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800L[Q@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800L[Q@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800L[Q@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-22:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800L [Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800L[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800L[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800L[Q@anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800 '0x* = 6I\ o 3FY l0b P  c  r # MM]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800ML]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800MK]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800MJ]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800MI]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800MH]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800MG]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800MF]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800ME]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800MD]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800MC]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800MB]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800MA]Q@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800M@]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800M?]Q@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800M>]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800M=]Q@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800M<]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800M;]Q@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800M:]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800M9]Q@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800M8]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800M7]Q@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800M6]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800M5]Q@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800M3]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800M2]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800M1]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800MP]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800M0]Q@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800M/]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800M.]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800M-]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800L,[Q@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800L+[Q@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800L*[Q@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800L)[Q@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800MO]Q@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800M4]Q@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800  ^ heQ__$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 404}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040629838, "hashes": {"sha256": "FuMwMT7tdtS+waO26ElJrWVpNL4KqV2h5pPZkT6OSuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qOzlr87fJC6qO1KGsbYF2C0Evn4/OfJ9gjB3k4Raa1wNNoigC+7O5U7IQLefUmhaAZeQxinSZ17KNZ23g49oAA"}}, "unsigned": {"age_ts": 1570040629838}}leQ_g$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 403}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4"], "type": "m.room.member", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-111:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040627867, "hashes": {"sha256": "+zzlFkkeZY2aInR8x0OaNYmrRA5AQHFY+VBj62hY6sA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y5kFYLbBV8ll80wtQoOrkiKKPP/3UcvBjvmkns43DnCPA2Pfjrk8c8zOq8MKj6d45r3tm+/1imyrpYw2SQGfCA"}}, "unsigned": {"age_ts": 1570040627867, "replaces_state": "$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4"}}qeQ/$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 402}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-111", "membership": "join"}, "depth": 8, "hashes": {"sha256": "5b33VlesaVRxEhp1z0dmef3ofywBOwrPQI6TzUJpbJg"}, "origin": "localhost:8829", "origin_server_ts": 1570040627145, "prev_events": ["$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8"], "prev_state": [], "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-111:localhost:8829", "state_key": "@anon-20191002_181700-111:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vyPujgyJjCkzby/qu4W54MjZd6TyHUCDkoL6FHPCYfNdzysjUk8OPV0Kt9mK4DsjKyXRWl2MENqvcEspvNegBQ"}, "localhost:8829": {"ed25519:a_UxIG": "UOyQAn1EzCrUf+nyeuhrzaG1eSNJuW54ZvFJnpRCJks6gOj/nH8UUqjOd5z0JccBqlgKDBW/NXTCSlWW+dDCAQ"}}, "unsigned": {"age": 114}}eQ_K$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800{"token_id": 138, "stream_ordering": 401}{"auth_events": ["$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0", "$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ", "$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU"], "prev_events": ["$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg"], "type": "m.room.aliases", "room_id": "!egCvzKpbEwmuvDoBTb:localhost:8800", "sender": "@anon-20191002_181700-109:localhost:8800", "content": {"aliases": ["#test-20191002_181700-7:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040626388, "hashes": {"sha256": "0nKwqI4gL2hp3Mzvrd/hIsZthxcb27IAnKDzXe6qHvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SB//B23eiXBpr96AivVttZNUMkywFnj4ea306VvlsHXXM2KPZwPpIKUfVdXM3jXRpt20p2jR2AR7qUe3yl22CQ"}}, "unsigned": {"age_ts": 1570040626388}} "{qS ^  2 7 Tq |7PUOT{gQ/ e!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rules$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMlQ9 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_alias$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs Q']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMcQ' e!eySSVuCclRpBDgwKIU:localhost:8800m.room.create$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYaQ# e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.name$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IiQ3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ea Q# e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.name$EMmhoJ_-8_UITDaPtdQB8S0pvkFJDtjBABLPoFc1vNsi Q3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8i Q3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo Q']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUr Q))e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgoQ? e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibility$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkgQ/ e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rules$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwlQ9 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_alias$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwiQ3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY Q']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYcQ' e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.create$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwtQ'/e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:test$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mciQ3 e!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0tQ'/e~!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:test$32Lf1b7J36pLwmiF2YQxCwxXlE2IHivq6uGZx8xfneMiQ3 e}!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0i~Q3 e|!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ }Q']e{!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wr|Q))ez!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwo{Q? ey!oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibility$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJEgzQ/ ex!oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rules$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrglyQ9 ew!oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_alias$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEixQ3 ev!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 wQ']eu!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIcvQ' et!oXKJArsPmtgaYANBrg:localhost:8800m.room.create$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY uQ']es!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA tQ']er!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4 sQ']eq!egCvzKpbEwmuvDoBTb:localhost:8800m.room.member@anon-20191002_181700-111:localhost:8829$w7TrPGmnzzJgLwtRl9cor8J8Yra3EcrMt7ktvtambTQ  T LD<4, $ |t l d \eeQ$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800ԁeeQ$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800ɁeeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800eeQ$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800eeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800(eeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800eeQ$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800 eeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800ƁeeQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:88003eeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ!cosGKKhHvKaVukBCic:localhost:8800eeQ$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800\eeQ$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800 &eeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800 ʁeeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800 ^eeQ$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA!DSFBpkqfnvBQbGoMUK:localhost:8800 6eeQ$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:88006eeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800&eeQ$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V<eL$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ysha256 ~G*_'#FUҲ4V;eL$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIsha256̒k;l GHЁkq+2V:eL$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIssha256CC"f)JEG9=ǒq'#ňV9eL$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMsha256o;:ˇ^TԄQV8eL$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLssha256 M?*K{WzS')NG(\V7eL$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwsha256GuR7d 5CU2::V6eL$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4sha2569vIfye_6`m,zd V5eL$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMsha256_+ќX-=\${W"s:ٺS>V4eL$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEsha256EHVEؖ76 FƃV3eL$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgksha256u˜ۃaȊmrnhN咩 V2eL$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lksha256eU-l^=]gxu0mҡV1eL$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAsha256~7bhv@_f875>\PV0eL$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7issha256m,J;8S V-eL$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrssha256m4w'ƺe$fSK$KmDy%*V,eL$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMsha256 x"TNƌWdpV+eL$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYsha256'mrQͼ9 Cx^TN)aŀ lV*eL$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Isha256^\MX- TvHH(V)eL$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Esha256vDBfՙ&%μQ"<[qV(eL$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8sha256sxV 9HwgHyꇮə%qV'eL$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uosha2563q`ElXyJ-JV&eL$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUsha25695n-@Ɯy8^_kV%eL$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgsha256W'<*1 V]YE2ƆyQjZhV$eL$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLksha256*t!Cx̫1۠OBrv.xV#eL$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwsha256g7Py.l%f?GK=K)k:\V"eL$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwsha2565;=ױ0[X΄K-?V!eL$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYsha256Z/9PqS8r.[V eL$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYsha256_smH-{Zu]>~G)ޕQr?&VeL$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwsha256~@RݨI˙;o[VeL$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIsha256sXR Ud&xKE5lF 7e{ybVeL$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYsha256YxxC aة?x#&VeL$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAsha256- yZK1O4K=~ǧt6`+0VeL$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4sha256g>niFReǢWJUxdz B[ c  s % x {-7GB,1e?Q ]$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7ism.room.history_visibility!eySSVuCclRpBDgwKIU:localhost:8800mmV@anon-20191002_181700-112:localhost:8800$0e/Q ]$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMm.room.join_rules!eySSVuCclRpBDgwKIU:localhost:8800mm@anon-20191002_181700-112:localhost:8800)/e9Q ]$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkm.room.canonical_alias!eySSVuCclRpBDgwKIU:localhost:8800mkm)@anon-20191002_181700-112:localhost:8800&.e3Q ]$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800m$m@anon-20191002_181700-112:localhost:8800 -e'Q ]$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMm.room.member!eySSVuCclRpBDgwKIU:localhost:8800mLm@anon-20191002_181700-112:localhost:8800, e'Q  ]$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYm.room.create!eySSVuCclRpBDgwKIU:localhost:8800mmN@anon-20191002_181700-112:localhost:8800+e#Q ] $Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Im.room.name!fJXiUpbbOlLbHWmPgs:localhost:8800 m pm >@anon-20191002_181700-113:localhost:8800&*e3Q ] $GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Em.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800 m m @anon-20191002_181700-112:localhost:8800&)e3Q ] $c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8m.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800 mmH@anon-20191002_181700-112:localhost:8800&(e3Q ] $1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uom.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800 m#m@anon-20191002_181700-112:localhost:8800 'e'Q ]$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUm.room.member!fJXiUpbbOlLbHWmPgs:localhost:8800mmW@anon-20191002_181700-113:localhost:8800!&e)Q ]$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgm.room.aliases!fJXiUpbbOlLbHWmPgs:localhost:8800mEm@anon-20191002_181700-112:localhost:8800,%e?Q ]$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkm.room.history_visibility!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800$$e/Q ]$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwm.room.join_rules!fJXiUpbbOlLbHWmPgs:localhost:8800mmj@anon-20191002_181700-112:localhost:8800)#e9Q ]$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwm.room.canonical_alias!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800&"e3Q ]$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYm.room.power_levels!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800 !e'Q ]$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYm.room.member!fJXiUpbbOlLbHWmPgs:localhost:8800mm@anon-20191002_181700-112:localhost:8800  e'Q  ]$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwm.room.create!fJXiUpbbOlLbHWmPgs:localhost:8800mJm@anon-20191002_181700-112:localhost:8800 e'Q ] $mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcm.room.member!oXKJArsPmtgaYANBrg:localhost:8800 mIm@anon-20191002_181700-113:localhost:8800&e3Q ] $VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0m.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800 mm@anon-20191002_181700-112:localhost:8800&e3Q ] $TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0m.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800 mVm@anon-20191002_181700-112:localhost:8800&e3Q ] $FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQm.room.power_levels!oXKJArsPmtgaYANBrg:localhost:8800 mom @anon-20191002_181700-112:localhost:8800 e'Q ]$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wm.room.member!oXKJArsPmtgaYANBrg:localhost:8800mmޕ@anon-20191002_181700-113:localhost:8800!e)Q ]$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwm.room.aliases!oXKJArsPmtgaYANBrg:localhost:8800mm@anon-20191002_181700-112:localhost:8800  xZeQ_C$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 412}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "invite": 0, "ban": 50, "redact": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "events": {"m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80}, "state_default": 50, "kick": 50, "events_default": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040636015, "hashes": {"sha256": "vI01lKoP9O4rkVbW63CKJpvFybTTwrReNdg26bOcafM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r8n/ZruBsL+6ILC2tv50Hj2/lh6IsjU+sHsy3G/48F8dnpzEJ7U1AcBqSyE/6RQL1eAopW1SO/Xl4WJKhS8pBA"}}, "unsigned": {"age_ts": 1570040636015, "replaces_state": "$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4"}}UeQ_9$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 141, "stream_ordering": 411}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg"], "prev_events": ["$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw"], "type": "m.room.member", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040634864, "hashes": {"sha256": "YpI9F7oq8WvwkprT7oYs2Q3w84uq/uU+3htvdR4ApTE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9+vH/mvaRjznfw/FZO8GsJX+KfyMD7ABznoObg3J3Zsc9aQTSizdo7Z0kY5Uk4ZXbuJd5/c1x7GqdLQogGmPCg"}}, "unsigned": {"age_ts": 1570040634864}}eQ_K$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 410}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE"], "type": "m.room.aliases", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-8:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040634139, "hashes": {"sha256": "LY/up/mlQIC44+E19stPe1dycTDcnwPU5RckMD7CTCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nTa47hbrn7iHyVq4WyKpcR1+e8iQHOdMqlnWL27az5CkENO+ISsT5RxudsHBiSg+hXEtb+frkp740bxNpBSrDg"}}, "unsigned": {"age_ts": 1570040634139}}eQ_$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 409}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg"], "type": "m.room.history_visibility", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040633122, "hashes": {"sha256": "HJiQOYiya+0t7nB7pEdq467Tf0eEws9uzBJutCmflvQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IO3qZG3btXiGL1THYTajB5MqrPXXv0PK4IQneMTcFkOGdYfMO3OblaC+kt0xWqhwhO4k0zgLiMqXJU/wbkAtBg"}}, "unsigned": {"age_ts": 1570040633122}} g * T~=gg]!c@anon-20191002_181700-123:localhost:8800GANYBEJLPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8Aog ]!c@anon-20191002_181700-122:localhost:8800KKXSFRABDEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgog ]!c@anon-20191002_181700-121:localhost:8800SXEBHSUFRMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQog ]!c@anon-20191002_181700-120:localhost:8800NYHQUMFAGSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5wog ]!c@anon-20191002_181700-118:localhost:8800EGGHWNCYVGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQog ]!c@anon-20191002_181700-119:localhost:8800CPKUOIOMCLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwog]!c@anon-20191002_181700-117:localhost:8800AOWWBWACSKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwog]!c@anon-20191002_181700-116:localhost:8800NOEVNPHDUZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1gog]!c@anon-20191002_181700-115:localhost:8800XPQYONRAEBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwog]!c@anon-20191002_181700-114:localhost:8800CMIIGGQSIHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4Qog]!c@anon-20191002_181700-113:localhost:8800DEIMBREIQTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygo V`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X03T; [)2'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 {'Q$1570043656428rZaqi:localhost:8800 s'Q$1570043655427tEtWD:localhost:8800 w'Q$1570043654426seixP:localhost:8800 t'Q$1570043653425AhyPB:localhost:8800 p'Q$1570043652424mkkFn:localhost:8800 u'Q$1570043648422SglHQ:localhost:8800 j'Q$1570043647421dmTZW:localhost:8800 n'Q$1570043646420mPrhj:localhost:8800 k'Q$1570043646419zIOAX:localhost:8800 g'Q$1570043645418ABZkc:localhost:8800 l'Q$1570043593416CouYv:localhost:8800 6'Q$1570043592415heiAH:localhost:8800 5'Q$1570043591414NuXxd:localhost:8800 4'Q$1570043590413Khvee:localhost:8800 3'Q$1570043589412JaDTY:localhost:8800 2'Q$1570043585409JoQZw:localhost:8800 0'Q$1570043584408XdGfO:localhost:8800 /'Q$1570043583407USfCf:localhost:8800 .'Q$1570043583406mAAxW:localhost:8800 -'Q$1570043582405uFoRY:localhost:8800 ,'Q$1570043581404AarAd:localhost:8800 +'Q$1570043580403vYYeb:localhost:8800 *'Q$1570043579402KDYtE:localhost:8800 )'Q$1570043578401arzBQ:localhost:8800 ('Q$1570043578400zncwP:localhost:8800 ''Q$1570043572397AAGBm:localhost:8800 %'Q$1570043572396lZXIU:localhost:8800 $'Q$1570043571395bDLFD:localhost:8800 #'Q$1570043570394QELCg:localhost:8800 "'Q$1570043569393UscIm:localhost:8800 !'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800   seQ_u$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 408}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE"], "type": "m.room.join_rules", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040632564, "hashes": {"sha256": "22ZHwlgkODtzNTvpT3IPhoj7r+491O/VoiMhf+nZkPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NPnCOQ9CYn6a2k2xz+1inK8LsTBATD2gC8iwvfldeASEMnSgpKSti2fX6cxD7lJI6MhObuoOKa/oU7qkpEbwCg"}}, "unsigned": {"age_ts": 1570040632564}}eQ_7$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 407}{"auth_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4"], "type": "m.room.canonical_alias", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-8:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040631863, "hashes": {"sha256": "sGcFAU8oigBG9aPFHhxH0j1UNzndKmrfHRaMwS1cEJU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ziw2BY76RjAu4z3BiytwwCiA2PkaI0BsmoAj8yMq0/P3pwhgE3ygKpBzus584NVoRK4oilf6pp7TKNa9mAKKCQ"}}, "unsigned": {"age_ts": 1570040631863}}jeQ_c$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 406}{"auth_events": ["$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040631122, "hashes": {"sha256": "PlJnha74UYB4Qefg1Wdu/V5B4ot7Pt8Uf8JWMKH6IcE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7Pd5z7ML9IT79XXSrasrOyO6fSQ+gxGALlVH+o8NQ/l2zqyahL6r0WWBRqwEmzkmkgKumY2uZDJYCy6G75cDA"}}, "unsigned": {"age_ts": 1570040631122}}ueQ_y$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 405}{"auth_events": ["$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY"], "prev_events": ["$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY"], "type": "m.room.member", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040630569, "hashes": {"sha256": "OLIZP+80fnLYljzwsJen7xwNaOM0ty8Z37czU1H5LDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mFmDdWY2I3YtOmDoV4I6A984BFhsy/oAPqxqHZ7E0q1IHZE6pMbcOno5f6iyKdIR3vWk0B4KAd1oOf8yfmZ0Dw"}}, "unsigned": {"age_ts": 1570040630569}} a} { y w u sqomkigeca~(eeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~'eeQ$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~&eeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800~%eeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~$eeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800~#eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~"eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~!eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800~ eeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800 -RM H C > 9 4/*|%w rmhc TFQe!edbUkYJIZBNOiTuLJs:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsTEQe!edbUkYJIZBNOiTuLJs:localhost:8800$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYTDQe!VAEDgDJVqmxXZyAlSW:localhost:8800$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_SoTCQe!VAEDgDJVqmxXZyAlSW:localhost:8800$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsTBQe!VAEDgDJVqmxXZyAlSW:localhost:8800$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQATAQe!VAEDgDJVqmxXZyAlSW:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5AT@Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgT?Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7YT>Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIT=Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsT<Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMT;Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsT:Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwT9Qe!eySSVuCclRpBDgwKIU:localhost:8800$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4T8Qe!eySSVuCclRpBDgwKIU:localhost:8800$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMT7Qe!eySSVuCclRpBDgwKIU:localhost:8800$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xET6Qe!eySSVuCclRpBDgwKIU:localhost:8800$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkT5Qe!eySSVuCclRpBDgwKIU:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkT4Qe!eySSVuCclRpBDgwKIU:localhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAT3Qe!eySSVuCclRpBDgwKIU:localhost:8800$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isT2Qe!eySSVuCclRpBDgwKIU:localhost:8800$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMT1Qe!eySSVuCclRpBDgwKIU:localhost:8800$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkT0Qe!eySSVuCclRpBDgwKIU:localhost:8800$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsT/Qe!eySSVuCclRpBDgwKIU:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMT.Qe!eySSVuCclRpBDgwKIU:localhost:8800$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYT-Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IT,Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3ET+Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8T*Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3UoT)Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUT(Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgT'Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkT&Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwT%Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwT$Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYT#Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYT"Qe!fJXiUpbbOlLbHWmPgs:localhost:8800$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwT!Qe!oXKJArsPmtgaYANBrg:localhost:8800$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcT Qe!oXKJArsPmtgaYANBrg:localhost:8800$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0TQe!oXKJArsPmtgaYANBrg:localhost:8800$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0TQe!oXKJArsPmtgaYANBrg:localhost:8800$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQTQe!oXKJArsPmtgaYANBrg:localhost:8800$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wTQe!oXKJArsPmtgaYANBrg:localhost:8800$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwTQe!oXKJArsPmtgaYANBrg:localhost:8800$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJETQe!oXKJArsPmtgaYANBrg:localhost:8800$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg Cj8p? y G   M  S ! Y ' _ -e3k9q? wE}KQ1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4d1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4c1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4b1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AF1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AE1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AD1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw 1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwh1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwg1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g k1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y41e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y41e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI:1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI91e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI81e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY 1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wj1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wi1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wh1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo a1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo `1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo _0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYkj0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYki0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYkh1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsS1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsR1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsQ1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9JtsP1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0^ SjQpX@( z H  (Z N  T " M Z ( ` .mT" sAzHNT"1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso o1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU e1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k ]1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk 1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 .1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA+1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is $1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 M1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Ad1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY 1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 3$49:localhost:42455 3$49:localhost:42455 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE3$48:localhost:42455 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi03$46:localhost:42455 3$46:localhost:42455 0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUJ3$45:localhost:42455 3$44:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o3$40:localhost:42455 1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c91e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg f1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM y1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k&1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I U1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM81e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k@1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI51e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYp1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M1$3:localhost:44405 1$3:localhost:42455 /1$3:localhost:41985 1$3:localhost:37265 3$39:localhost:42455 1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao l3$37:localhost:42455 1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug J3$33:localhost:42455 1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA 1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 *1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYH K KeQ_7$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 141, "stream_ordering": 415}{"auth_events": ["$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w"], "prev_events": ["$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0"], "type": "m.room.member", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 12, "prev_state": [], "state_key": "@random_dude:test", "origin": "localhost:8800", "origin_server_ts": 1570040638025, "hashes": {"sha256": "mgWQf34fSxh9+C+wcT2FGFWqBnCpFSd2N/7Qm9oUI8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NdQViDl+t9VA6W3xyh5bO4Q9ze+8fjgP25flH1ah81JWStn334BTj8mEKfT9acj7d69yHdwVkJIv/QS2cOjpBQ"}}, "unsigned": {"age_ts": 1570040638025}} eQ_%$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 414}{"auth_events": ["$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-113:localhost:8800": 80, "@anon-20191002_181700-112:localhost:8800": 100}, "kick": 50, "state_default": 50, "events_default": 0, "events": {"m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50, "m.room.canonical_alias": 50}, "redact": 50, "ban": 50, "invite": 0, "users_default": 0}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040637424, "hashes": {"sha256": "ZZlU22ExcNy3MzvuQb/Vlwv6yh4Fuilr+RXAKi7PTv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bVzV+QEhNBHhcIjDDvbc+NDw87o9aZxCDoxSN9gk1fvU9pLBxCE8aztVbzYouA5criBsAb1cQxunmsBjKEfPDw"}}, "unsigned": {"age_ts": 1570040637424, "replaces_state": "$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0"}} eQ_#$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800{"token_id": 140, "stream_ordering": 413}{"auth_events": ["$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ", "$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY", "$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI"], "prev_events": ["$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ"], "type": "m.room.power_levels", "room_id": "!oXKJArsPmtgaYANBrg:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"ban": 50, "invite": 0, "redact": 50, "users_default": 0, "events": {"m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50, "m.room.canonical_alias": 50}, "state_default": 50, "kick": 50, "events_default": 0, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 0}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040636758, "hashes": {"sha256": "ez5u2LV2PDi0fXRgmoAhykjD2i7erSQsnGAutB/d1c0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kgoogKUTtE7XsK9YbVwjUs5tWp0/PryWmovKER7Les+gJ/Qm4zO0N30ZvBH/kveYHvoaEkugqYCIIptGWrd3AQ"}}, "unsigned": {"age_ts": 1570040636758, "replaces_state": "$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ"}} ufT ]  ,  hir*A}IRumQ9 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_alias$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsjQ3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsdQ' e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.create$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkQ3 ee!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs Q']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LksQ))e!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAp~Q? e!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibility$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7ish}Q/ e!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rules$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMm|Q9 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_alias$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkj{Q3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs zQ']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMdyQ' e!eySSVuCclRpBDgwKIU:localhost:8800m.room.create$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYbxQ# e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.name$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IwQ3 ee!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8vQ3 ee!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3UouQ3 ee!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY tQ']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUssQ))e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgprQ? e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibility$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkhqQ/ e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rules$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1OlwmpQ9 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_alias$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwjoQ3 e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY nQ']e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYdmQ' e!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.create$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwulQ'/e!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:test$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mckQ3 ee!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0jQ3 ee!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ ~z v r n j fb^ZVRNJF eeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800eeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800eeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800eeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800eeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800~eeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800}eeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800|eeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800{eeQ$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800zeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800yeeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800xeeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800weeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800veeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800ueeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800teeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800seeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800reeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800qeeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800peeQ$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800oeeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800neeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800 +,l8ER_liv^ k x ' 4 A N [ fk{++OQ[!aWJOsiuJONOvjKWEjO:localhost:8800@anon-20191002_181700-33:localhost:88004OQ[!BDASLhdcKfNwxCTCSg:localhost:8800@anon-20191002_181700-32:localhost:88004O Q[!xwoIOPTGmJIlTXakxC:localhost:8800@anon-20191002_181700-31:localhost:88004O Q[!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-23:localhost:88004O Q[!NZHpBquHDfJAjiawGk:localhost:8800@anon-20191002_181700-21:localhost:88004O Q[!uxKymrHZeXRYCZwekU:localhost:8800@anon-20191002_181700-20:localhost:88004O Q [!sPWVGnipjiiWQpywNO:localhost:8800@anon-20191002_181700-20:localhost:88004OQ[!GixhPUMvtKSWoKRgvw:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!zhCsYcaweVFJLLNwBz:localhost:8800@anon-20191002_181700-16:localhost:88002OQ[!loalEsWaTYwrVUNJLr:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!LaLcEGFLpjdlYlYKGC:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!odAvowLhHJcmkKlxFk:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!plcvCHNbjCkNMMxnTk:localhost:8800@anon-20191002_181700-16:localhost:88004OQ[!QZhNrNpwObZGJZpdAG:localhost:8800@anon-20191002_181700-16:localhost:88004OQ [!zNCItZNbpkZKuufRhC:localhost:8800@anon-20191002_181700-16:localhost:88004 KOQ[!aWbcZNVBalJilCEsdr:localhost:8800@anon-20191002_181700-38:localhost:88004OQ[!kxTDuIasPNpXtiRsif:localhost:8800@anon-20191002_181700-37:localhost:88004OQ[!wvnfKBSrUlfNmYoeil:localhost:8800@anon-20191002_181700-36:localhost:88004OQ[!NhWgOTYzEPRwAxRQvS:localhost:8800@anon-20191002_181700-35:localhost:88004OQ[!scyFsXcUIJiLIMwWMY:localhost:8800@anon-20191002_181700-34:localhost:88004[P,Q]!KxhGcTbEWmtgGNpdox:localhost:8800@anon-20191002_181700-102:localhost:88004P+Q]!HmkcAMkMjWRhTDJMsy:localhost:8800@anon-20191002_181700-101:localhost:88004O*Q[!OMkiVTuuOEeiFAXtUY:localhost:8800@anon-20191002_181700-99:localhost:88004O)Q[!BrssELMbasSzTFpIXm:localhost:8800@anon-20191002_181700-97:localhost:88004O(Q[!RmdhCjvouVLmyIHjaM:localhost:8800@anon-20191002_181700-95:localhost:88004O'Q[!EyEaTZElOkdURKbEXo:localhost:8800@anon-20191002_181700-93:localhost:88004O&Q[!TWETXUgfFZafDdbqLS:localhost:8800@anon-20191002_181700-91:localhost:88004O%Q[!HAFNBarGuVZuWCgwWM:localhost:8800@anon-20191002_181700-89:localhost:88004O$Q[!duCKuavMBSfRbTFPsc:localhost:8800@anon-20191002_181700-86:localhost:88004O#Q[!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-84:localhost:88004O"Q[!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-82:localhost:88004O!Q[!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:88004O Q[!OSHhtkGUjpUCkXwIhj:localhost:8800@anon-20191002_181700-79:localhost:88004OQ[!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:88004OQ[!wnriPzXkIMmdTNoJKU:localhost:8800@anon-20191002_181700-75:localhost:88004OQ[!jfshVGNDxkvqPxFxWB:localhost:8800@anon-20191002_181700-74:localhost:88004OQ[!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-70:localhost:88004OQ[!GGTWnzJfvPQBgQqDIE:localhost:8800@anon-20191002_181700-68:localhost:88004OQ[!cosGKKhHvKaVukBCic:localhost:8800@anon-20191002_181700-67:localhost:88004OQ[!rZWweGEChkxxtzyfDB:localhost:8800@anon-20191002_181700-65:localhost:88004OQ[!uJtKGXTNdEnCPNOGDx:localhost:8800@anon-20191002_181700-63:localhost:88004OQ[!vJQYmOxOBLwFKzYkNj:localhost:8800@anon-20191002_181700-62:localhost:88004OQ [!kkgEEVUJynguTqAoWD:localhost:8800@anon-20191002_181700-61:localhost:88004OQ[!dUnULFLGtgaVdwHtnz:localhost:8800@anon-20191002_181700-39:localhost:88004 +>z(\ f p  z ( 2 < FPZdnx@PP3Q]!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-112:localhost:88004P-Q]!SBEprlZiuliFNSfNmz:localhost:8800@anon-20191002_181700-104:localhost:88004pFP2Q]!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-112:localhost:88004P1Q]!egCvzKpbEwmuvDoBTb:localhost:8800@anon-20191002_181700-109:localhost:88004P0Q]!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-109:localhost:88004P/Q]!wIhMbfQzYbJobPdwyi:localhost:8800@anon-20191002_181700-107:localhost:88004P.Q]!cSUQGmpIsSCBAVTOHo:localhost:8800@anon-20191002_181700-106:localhost:88004PWQ ]!UyLoIXmzVFwycmBUeh:localhost:8800@anon-20191002_181700-169:localhost:88004PVQ]!nteAxExBGJfaGIpuCx:localhost:8800@anon-20191002_181700-168:localhost:88004PUQ]!itKDOCtoMkFUETDtle:localhost:8800@anon-20191002_181700-167:localhost:88004PTQ]!qxqNYKdtgvOQdhmgsj:localhost:8800@anon-20191002_181700-165:localhost:88004PSQ]!MlzmtUYSZOiByAZdKx:localhost:8800@anon-20191002_181700-164:localhost:88004PRQ]!WjlTCJVOFJkanCtkFE:localhost:8800@anon-20191002_181700-163:localhost:88004PQQ]!aBCvSXjtZUEPlPGHvY:localhost:8800@anon-20191002_181700-162:localhost:88004PPQ]!IMiczgkCTjejbnbeyP:localhost:8800@anon-20191002_181700-161:localhost:88004POQ]!HIZTeBCxvpMSpcqGVD:localhost:8800@anon-20191002_181700-160:localhost:88004PNQ]!awHAhLuEkavTGACcUW:localhost:8800@anon-20191002_181700-158:localhost:88004PMQ]!OqPpVlCwmKdAUlwrXI:localhost:8800@anon-20191002_181700-156:localhost:88004PLQ]!quaZwrGnzbNWhwAOYB:localhost:8800@anon-20191002_181700-154:localhost:88004PKQ]!JusxqeECtidaPlWqhp:localhost:8800@anon-20191002_181700-152:localhost:88004PJQ]!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-149:localhost:88004PIQ]!GiSxJsKZhQVHBkrVPn:localhost:8800@anon-20191002_181700-146:localhost:88004PHQ]!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-143:localhost:88004PGQ]!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-140:localhost:88004PFQ]!WWZVpyLeZfyfpWidLx:localhost:8800@anon-20191002_181700-138:localhost:88004PEQ]!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-136:localhost:88004PDQ]!lMRBkbYJDQHgdBZBFJ:localhost:8800@anon-20191002_181700-134:localhost:88004PCQ]!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-131:localhost:88004PBQ]!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-129:localhost:88004PAQ]!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-127:localhost:88004P@Q]!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-125:localhost:88004P?Q]!GwXGurbyEmykmmHcHJ:localhost:8800@anon-20191002_181700-124:localhost:88004P>Q]!VWYMJxEviBNDdJCuKT:localhost:8800@anon-20191002_181700-123:localhost:88004P=Q]!CgVBWWcRJoHEcwoLcq:localhost:8800@anon-20191002_181700-120:localhost:88004P<Q]!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-118:localhost:88004P;Q]!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-116:localhost:88004P:Q]!msMfSdLIAvklSSAnci:localhost:8800@anon-20191002_181700-115:localhost:88004P9Q]!GgUNbVXspVTpOlaHBl:localhost:8800@anon-20191002_181700-114:localhost:88004P8Q]!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-112:localhost:88004P7Q]!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-112:localhost:88004P6Q]!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-112:localhost:88004P5Q]!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-112:localhost:88004P4Q]!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-112:localhost:88004   -"eQ_7$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 419}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY"], "type": "m.room.canonical_alias", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-9:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040641164, "hashes": {"sha256": "V7h0RlPN8rL0RJkOotQKsV5o9dB0qBUmJcQKqplEFUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/gSAmWMjNKM3nkA28MkJ92sdK8O2ehdHKfuK+jy3RDCKJd0wdZD/JI6W5Q4aZvtdSUYzpNw79CelW7mOqE6aDg"}}, "unsigned": {"age_ts": 1570040641164}}j!eQ_c$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 418}{"auth_events": ["$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040640248, "hashes": {"sha256": "OBzp9kf3e9/S3UTzJUO7+UUvByGwbuEo6FVNhTN4AeQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x0IsS+wvH7fsuOuoz7AoLV8asmPfo2ySo/ITSPU+gcOMemS++6ABePQN9N42uFNhbvp1uYqd9tFhStMRBf3GDQ"}}, "unsigned": {"age_ts": 1570040640248}}u eQ_y$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 417}{"auth_events": ["$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw"], "prev_events": ["$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw"], "type": "m.room.member", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040639510, "hashes": {"sha256": "8IdccT1TZllt276DQmgfXm6WFe5LvUIdMFnTtrX0ee4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XipGGxO7qkc4xqVo2HbT61zhkNCdNT1s0wg9CGhr015ce3kes1Sa80b5NaamJVg2bF6kTlIrusKUs8ij8GUMCA"}}, "unsigned": {"age_ts": 1570040639510}}heQ__$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 416}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040638794, "hashes": {"sha256": "1ZKhynw2NgwnJxC5ETgx3b261IDzW9XLTx9GgpXOtWA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yxVan7JeNAXesMzHf4x7KfqxvXkA9gZxbTnSUb72vjghspFUQAJbYmwGTA4EeTsW2hfQM/FKC3+5AlJX89vCCQ"}}, "unsigned": {"age_ts": 1570040638794}}  d% | ] U ME=5-t  leeQ$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800 !eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800 eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800?eeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800 TeeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800 ށeeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800 *eeQ$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:88006eeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800eeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800́eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800ށeeQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800́eeQ$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800eeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800geeQ$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800ׁeeQ$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE$-ayqzChek7Ox9KMR89qwgGwxyF_vlz7E0wdmbPdNKh4!vJQYmOxOBLwFKzYkNj:localhost:8800~eeQ$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g!duCKuavMBSfRbTFPsc:localhost:8800eeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800eeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800keeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800߁eeQ$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800 ReeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800 a} { y w u sqomkigeca~GeeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~FeeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~EeeQ$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~DeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800~CeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~BeeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800~AeeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~@eeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~?eeQ$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800~>eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~=eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~<eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800~;eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~:eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~9eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~8eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800~7eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~6eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~5eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~4eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~3eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~2eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~1eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~0eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~/eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~.eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~-eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~,eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800~+eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800~*eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800~)eeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800 2Kjk8p> R9  w E  8 } K  3 R X &X j  _ -e&^,dK2j8d21e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM 1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI |3$52:localhost:42455 3$51:localhost:42455 3$50:localhost:42455 3$50:localhost:42455 1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo r1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw@1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs@1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 /1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s -3$46:localhost:42455 3$44:localhost:42455 3$45:localhost:42455 3$44:localhost:42455 3$44:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM z1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg g1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is %1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU11e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T00e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoR1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA-1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 N1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Ae1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY 1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8}1e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUK1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c:1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k'1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c  _U&eQ_9$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 141, "stream_ordering": 423}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw"], "prev_events": ["$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg"], "type": "m.room.member", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040644062, "hashes": {"sha256": "7FRAbhffu+YkfEpf2H5ktP+z+Ex0VSBerHrHZgHtmRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P8s8bNP+Vlso4xjqMbJqwkBmmmQekh91M3UoFCqdP50qZNOFiyZWC4AbDDak/cQNxUyvEgyZrUpiYiDeSsoCCw"}}, "unsigned": {"age_ts": 1570040644062}}%eQ_K$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 422}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk"], "type": "m.room.aliases", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-9:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040643397, "hashes": {"sha256": "IvlqiF1aY8k3tvd062Nr5M3gnLCWItqlipBXfm9nMBU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZG/tlcyt1mgbfg3Fbs6IJoJLyPgMZSM+zDJVU1pMlR1q6FBKS6pNXPC0rAKyF9/kmjIxItsF/h80Qz+Kp4h+Cg"}}, "unsigned": {"age_ts": 1570040643397}}$eQ_$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 421}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw"], "type": "m.room.history_visibility", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040642575, "hashes": {"sha256": "dgEdbCq90v7hn47HaZ0zchMBTFSwEYjHFL5eyqfsCo8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jOdplObfsAzPF+qPH6D/o+TtIAOoTLsFkq3BYbT/hdXzHQ58f+tw/xe9O+5REU8y2dpPfiHipYCtgPC5BYwRDg"}}, "unsigned": {"age_ts": 1570040642575}}s#eQ_u$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 420}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw"], "type": "m.room.join_rules", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040641955, "hashes": {"sha256": "fcvJg/tTrz2LxqSBEiM2DGOWE54+rIy+8PT8nj9tTzs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KSFdM4NQ4benJFuYwCbO6Cpj+UFJFqwODPcQC70kJQsicQNeiGhdKDEk5Yv4lj7uMI0AK3tiz9LvR5bvl9J7Aw"}}, "unsigned": {"age_ts": 1570040641955}} ^iN+nQ1qT,mR/ {^I2 x R  k ,  L /  i N +  o X x9nN3qTcH%t]>']m.room.member@anon-20191002_181700-114:localhost:8800' m.room.create>']sm.room.member@anon-20191002_181700-111:localhost:8829u>']rm.room.member@anon-20191002_181700-111:localhost:8829t3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:88003 m.room.power_levels''/m.room.member@random_dude:test3 m.room.power_levels''/~m.room.member@random_dude:test3 }m.room.power_levels3 |m.room.power_levels~>']{m.room.member@anon-20191002_181700-113:localhost:8800}%))zm.room.aliaseslocalhost:8800|"? ym.room.history_visibility{/ xm.room.join_rulesz9 wm.room.canonical_aliasy3 vm.room.power_levelsx>']um.room.member@anon-20191002_181700-112:localhost:8800w' tm.room.createv>']qm.room.member@anon-20191002_181700-111:localhost:8829s%))pm.room.aliaseslocalhost:8800r"? om.room.history_visibilityq/ nm.room.join_rulesp9 mm.room.canonical_aliaso3 lm.room.power_levelsn>']km.room.member@anon-20191002_181700-109:localhost:8800m' m.room.create3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create% m.room.topic3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create# m.room.name3 m.room.power_levels# m.room.name3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-113:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-112:localhost:8800' m.room.create tc pW>%E-=%u]X}U1 iA z$L) R *  b :  s L %   ` 8  q I !Y1 iAyQd<t3!13:localhost:424553!13:localhost:424553!13:localhost:424551!5:localhost:424551!5:localhost:424551!9:localhost:424551!9:localhost:42455'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 1!0:localhost:419851!0:localhost:444051!0:localhost:372651!8:localhost:424551!7:localhost:42455'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:88001!6:localhost:424551!6:localhost:42455'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:88003!12:localhost:424553!12:localhost:424553!11:localhost:424553!11:localhost:424553!11:localhost:424553!10:localhost:424553!10:localhost:42455'Q!ABHbfUdkHCJksMsaUt:localhost:8800.'Q!DntdfAPfCfgdOoRMdl:localhost:8800-'Q!BKZJsoFNhiLTDYNclB:localhost:8800A'Q!BKZJsoFNhiLTDYNclB:localhost:8800B'Q!ELBgBaMSIMNkjFSumH:localhost:8800q'Q!CKNftKKCaOCVUyYWNY:localhost:8800p'Q!CAGaRyRvrohDRBsrWH:localhost:8800f'Q!BPNyKqmwcpGxIbGFZG:localhost:8800O'Q!BPNyKqmwcpGxIbGFZG:localhost:8800N'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800S'Q!EhFUhsgQbBWmrnGmaz:localhost:8800j'Q!EhFUhsgQbBWmrnGmaz:localhost:8800i'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800y'Q!EWkoFeckhXlNyjuIEB:localhost:8800x'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:88004'Q!DqxFmsXPclgGqpSwdy:localhost:88003'Q!DoiZErAdypBUMZKaeJ:localhost:8800 'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800E'Q!DelfBAGvCrTXgNxmNV:localhost:8800D'Q!DelfBAGvCrTXgNxmNV:localhost:8800C'Q!CkNvQnbApPIcuKygDk:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800u'Q!CSqENqzAezaZnGktbE:localhost:8800]'Q!CSqENqzAezaZnGktbE:localhost:8800\'Q!CSqENqzAezaZnGktbE:localhost:8800[&Q!CQKLQUpSYakhxVDltC:localhost:8800y&Q!CQKLQUpSYakhxVDltC:localhost:8800x'Q!CNFopUEQTFbzjmLvii:localhost:8800]'Q!CGckPHdSYcIocFvRAq:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800H&Q!BrssELMbasSzTFpIXm:localhost:8800G&Q!BrssELMbasSzTFpIXm:localhost:8800F&Q!BrssELMbasSzTFpIXm:localhost:8800E'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BkzROHxDAfKIzYpmPV:localhost:8800'Q!BfEFIDBthhkweqfhir:localhost:8800X'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800b'Q!AoAvmnwMkhYBQsbCsL:localhost:8800a'Q!AoAvmnwMkhYBQsbCsL:localhost:8800`'Q!AjjrNwXmPTCruHxaJq:localhost:8800'Q!AjjrNwXmPTCruHxaJq:localhost:8800'Q!AjjrNwXmPTCruHxaJq:localhost:8800'Q!AYFqrmxwClFQlcTTYq:localhost:8800&Q!AWfbViAZparIjmDaVT:localhost:8800-'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:88001!0:localhost:424551!0:localhost:42455 U7wPkC`8&_{S,d=`8pH Z 3 n F  X 0   h @  x P ( H kCX1 &Q!HAFNBarGuVZuWCgwWM:localhost:88007&Q!EyEaTZElOkdURKbEXo:localhost:8800;'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800''Q!GBPGYLDkXcAsHgkfuS:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800C&Q!EyEaTZElOkdURKbEXo:localhost:8800=&Q!EyEaTZElOkdURKbEXo:localhost:8800<'Q!IYxUkyFHOgvhLpdkOA:localhost:8800='Q!FbJSiQoZtZkaFwzzQq:localhost:8800&Q!GwXGurbyEmykmmHcHJ:localhost:8800w'Q!GwLdUoDplyVUogXDzu:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800 'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800'Q!GiSxJsKZhQVHBkrVPn:localhost:8800&Q!GgUNbVXspVTpOlaHBl:localhost:8800o'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:88001'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800a'Q!IYxUkyFHOgvhLpdkOA:localhost:8800<'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800_'Q!IlGJpjzrvvAFuwTAgo:localhost:8800^'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800 'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:88001&Q!IGVHKYcSuxzVPlFHlj:localhost:88000'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800P&Q!HmkcAMkMjWRhTDJMsy:localhost:8800O&Q!HmkcAMkMjWRhTDJMsy:localhost:8800N&Q!HmkcAMkMjWRhTDJMsy:localhost:8800M'Q!HhYREfUiJTpjWmOuPF:localhost:8800k'Q!HhYREfUiJTpjWmOuPF:localhost:8800j&Q!HcMGemcRrLnLprOJJR:localhost:8800t&Q!HcMGemcRrLnLprOJJR:localhost:8800s'Q!HbYxdEuVIeLKHwqJEh:localhost:8800!'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800z'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800  " )eQ_%$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 426}{"auth_events": ["$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"ban": 50, "invite": 0, "redact": 50, "users_default": 0, "events": {"m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50, "m.room.canonical_alias": 50}, "kick": 50, "state_default": 50, "events_default": 0, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 80}}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040646314, "hashes": {"sha256": "OPbhq99DqmPt4/NK4KL3jFkL3U2AoivRQ3Q51TIeh5A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ro55XJV/pgFu4vjPm44+xqBb4PZPEaBeifuI0B8wRpKJWIGzqmtqZy7ECWJlDel8zdy0cv1t6Js5iqHa6HXAAg"}}, "unsigned": {"age_ts": 1570040646314, "replaces_state": "$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8"}} (eQ_#$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 425}{"auth_events": ["$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"redact": 50, "invite": 0, "ban": 50, "users_default": 0, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 0}, "state_default": 50, "kick": 50, "events_default": 0, "events": {"m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50, "m.room.canonical_alias": 50}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040645577, "hashes": {"sha256": "DAiOzbmvD44AnGij5RnVbXdKc2VZzJeDxBK5n+yMrok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oA9XdOg32YHbE6FOBEsMrmuc+wTEX+vP0pkvOYXKSGprZoSo5argT51MP9C2V2JfrfMh6Dcv7olcQ9HgY6GWDQ"}}, "unsigned": {"age_ts": 1570040645577, "replaces_state": "$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo"}}Z'eQ_C$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 140, "stream_ordering": 424}{"auth_events": ["$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY"], "prev_events": ["$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU"], "type": "m.room.power_levels", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "ban": 50, "invite": 0, "redact": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040644899, "hashes": {"sha256": "oKuAP+9uFy+B5554CIyF3U2jpd+/twIEyZCtKbLpmTg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AZ+CZyB38l0agDy5UbUSfzhPpsbnDPlqZPEDnU8leYCfkNT+l5MOxWpc30qNckvhMS4nEzR6ENBzch3RDTTMBg"}}, "unsigned": {"age_ts": 1570040644899, "replaces_state": "$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY"}}  %j-eQ_c$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 430}{"auth_events": ["$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040648740, "hashes": {"sha256": "0Eb5AyVTSzNArlGjQFl1C4ZfW0PFtb1P1J7NsN8AEzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cRuC9D2PTDaf6h5YoYSaUXcWtk4m8qHf/YNzaJcN7nKGWTF92Od9+oDUh6kYhfxngIaxKQJge3aWinG1CQvCDA"}}, "unsigned": {"age_ts": 1570040648740}}u,eQ_y$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 429}{"auth_events": ["$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY"], "prev_events": ["$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY"], "type": "m.room.member", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040648268, "hashes": {"sha256": "PVb1ix0rzSIkbuurhbhVFJmnJh++2QQ3BTcopuxHouA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7cyElsqey06ZYV3WY2rSCbMNW1onM4zbqXpCD/4Y8AB8m+JQmuIqtbEQREAmeHeobBKe8LNoOlM64XuZ8BxDg"}}, "unsigned": {"age_ts": 1570040648268}}h+eQ__$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 428}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040647653, "hashes": {"sha256": "tGOwbwh3CJM/4fEaQ/D8jc+r2Rd2SGZXcgEZyUl/lTc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Onvnln7gfWAvoHaeuqqaq5n3pTARdOCJw9yxvK0MUTrqQUepeqsqTnOVmDu/zGHa/dODJ2jIP1BlKBKYGyyqDA"}}, "unsigned": {"age_ts": 1570040647653}}r*eQ_s$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800{"token_id": 141, "stream_ordering": 427}{"auth_events": ["$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E", "$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw", "$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU"], "prev_events": ["$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E"], "type": "m.room.name", "room_id": "!fJXiUpbbOlLbHWmPgs:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"name": "A new room name"}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040646768, "hashes": {"sha256": "guotQx7PJPtCERuhqDFfpW0tBgURAhRvxHmRZIBzqUk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yR9EyB/mXhk1cY2ceUjJphEVnRd/GcRMwTzBj9oBv8nJsuPCjYWFvygFUvJwrsjWcvfk5bYfrz6yppFKw84jBQ"}}, "unsigned": {"age_ts": 1570040646768}} N J y 9o* &kv7T, C  N ( reQ']$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpqeQ))$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800mpeQ? $C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibilityeoeQ/ $CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rulesjneQ9 $Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_aliasgVeQ3 $VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levels leQ']$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinakeQ' $nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.creategjeQ3 $la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsabeQ' $J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800m.room.create_aeQ# $Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.nameg`eQ3 $GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels _eQ']$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinp^eQ))$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800m]eQ? $kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibilitye\eQ/ $i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rulesj[eQ9 $1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_aliask YeQ']$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaXeQ' $gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.createuWeQ'/$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:testban ieQ']$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpheQ))$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800mgeQ? $yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibilityefeQ/ $qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rulesjeeQ9 $A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800m.room.canonical_alias ceQ']$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800join  gh1eQ_M$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 434}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is"], "type": "m.room.aliases", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-10:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040651598, "hashes": {"sha256": "/4K/buzBH1rPhkYvHi8gJJz+Nssg2XCtibHm13p4LrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OsW4PfgC/GWBAQ4gncz3DavBb7maprYBoaLGJXBYe0HAuGnOvsXF7AyBSopNfP7Ldt83r1ye2wGt0M02+KPdAg"}}, "unsigned": {"age_ts": 1570040651598}}0eQ_$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 433}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM"], "type": "m.room.history_visibility", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040650707, "hashes": {"sha256": "dbSMYrRBzT15jRV866QlftVZAzZ8AGN7kemP3eOYISA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FxNOeOuIpbipXodGv/wiVTzcSyMJG810qk4vmqkvNO7C5+7gfrQtX1rOwn60A3eayI1mNb7spXwymagP4FyJCw"}}, "unsigned": {"age_ts": 1570040650707}}s/eQ_u$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 432}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk"], "type": "m.room.join_rules", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040649981, "hashes": {"sha256": "mUKImE7PJzavUPu3D0FQf1L6dMcyhnGLRTcvBli+WzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nn0f0e3X20QhkVDOkY7cNbgy+P65deTHUX03xIt2hVCecfIminDiRnSuMgwlQcjibxXwnSJ0MWUbskkKd7bqDw"}}, "unsigned": {"age_ts": 1570040649981}}.eQ_9$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 431}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs"], "type": "m.room.canonical_alias", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-10:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040649323, "hashes": {"sha256": "i3CrbNeDVxtop9RQvsPvqFQNQH/Ti2vUteDXIUpCOSk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JMkWGRvYsMXP3JLYL3hIzpBgb2ingGewM9Rtrj25qwt+KsOFFWQwEklAf0+3qx3xaOzHPDObuZMxAu2m2BfmBw"}}, "unsigned": {"age_ts": 1570040649323}} a} { y w u sqomkigeca~feeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~eeeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~deeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~ceeQ$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~beeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800~aeeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~`eeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800~_eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~^eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~]eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800~\eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~[eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~ZeeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800~YeeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~XeeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~WeeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~VeeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800~UeeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~TeeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~SeeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~ReeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~QeeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~PeeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~OeeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~NeeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~MeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~LeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~KeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800~JeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800~IeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800~HeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800 #(( T  % P mv ENy  5DmmeQ? $LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibilityeeQ/ $izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rulesjeQ9 $pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_aliasgeQ3 $7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels eQ']$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aeQ' $6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800m.room.creategeQ3 $aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levelsgeQ3 $gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels eQ']$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800peQ))$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800meQ? $obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibilityeeQ/ $ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rulesjeQ9 $Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_aliasgeQ3 $xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels eQ']$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aeQ' $4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create`eQ% $Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topicgeQ3 $7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levelsg eQ3 $lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels eQ']$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800p eQ))$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800m eQ? $C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibilitye eQ/ $CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rulesjeQ9 $Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_aliasgeQ3 $8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels eQ']$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800aeQ' $nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.creategeQ3 $la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsgeQ3 $XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsgeQ3 $H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsgeQ3 $dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels eQ']$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800peQ))$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800m~eQ? $yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibilitye}eQ/ $qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800m.room.join_rules #S F n  y 4 MR G`e',Sg7Q/ e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rules$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYl6Q9 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_alias$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQi5Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto 4Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wc3Q' e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.create$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Ai2Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$suKbRPkLfO8HmfrJbs6D0wxzXYOlzmx55FEI1j6VLjoi1Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRki0Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q /Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEr.Q))e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4o-Q? e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibility$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wg,Q/ e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rules$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_ol+Q9 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_alias$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQi*Q3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28 )Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksc(Q' e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYb'Q% e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topic$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Soi&Q3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsi%Q3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA $Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Ar#Q))e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgo"Q? e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibility$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yg!Q/ e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rules$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIl Q9 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_alias$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsiQ3 e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLscQ' e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.create$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4iQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$xROOFTUlx-3FUlG3Q3SGjI3owccAL018_sc6Tz8HZnciQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEiQ3 e!eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levels$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk Q']e!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkrQ))e!eySSVuCclRpBDgwKIU:localhost:8800m.room.aliaseslocalhost:8800$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAoQ? e!eySSVuCclRpBDgwKIU:localhost:8800m.room.history_visibility$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is }wqke_YSMGA;5/)# {uoic]WQKE?93-'!   y s m g a [ U O I C = 7 1 + %     ~ v n f ^ V N F > 6 . &     ~ v n f ^ V N F > 6 . &     ~ v n f ^ V N F > 6 . &     ~ v n f ^ V N F > 6 . &    ~vnf^VNF>6.&~vnf^VNF>6.&~vnf^VNF>6.&~vnf^VNF>6.&~vnf^VNF>6.&~vn}|~{}z|y{xzwyvxuwtvsustrsqrpqopnomnlmklkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!          e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    }|~{}z|y{xzwyvxuwtvsurtqsproqnpmolnkmjlikhjgifhegdfcebdac`b_a^`]_\^[]Z\Y[XZWYVXUWTVSURTQSPROQNPMOLNKMJLIKHJGIFHEGDFCEBDAC@B?A>@=?<>;=:<9;8:7968574635241302/1.0-/,.+-*,)+(*')&(%'$&#%"$!# "!           ~ @[ c  m  ru'}8=@!Ie)Q ]$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4m.room.aliases!edbUkYJIZBNOiTuLJs:localhost:8800m]{m^&@anon-20191002_181700-112:localhost:8800,He?Q ]$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wm.room.history_visibility!edbUkYJIZBNOiTuLJs:localhost:8800mZ+m[@anon-20191002_181700-112:localhost:8800$Ge/Q ]$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_om.room.join_rules!edbUkYJIZBNOiTuLJs:localhost:8800mX mX@anon-20191002_181700-112:localhost:8800)Fe9Q ]$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQm.room.canonical_alias!edbUkYJIZBNOiTuLJs:localhost:8800mUmVr@anon-20191002_181700-112:localhost:8800&Ee3Q ]$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28m.room.power_levels!edbUkYJIZBNOiTuLJs:localhost:8800mRmT]@anon-20191002_181700-112:localhost:8800 De'Q ]$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksm.room.member!edbUkYJIZBNOiTuLJs:localhost:8800mPmQG@anon-20191002_181700-112:localhost:8800C e'Q  ]$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYm.room.create!edbUkYJIZBNOiTuLJs:localhost:8800mNNmN@anon-20191002_181700-112:localhost:8800Be%Q ] $Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Som.room.topic!VAEDgDJVqmxXZyAlSW:localhost:8800 mJYmKT@anon-20191002_181700-113:localhost:8800&Ae3Q ] $7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsm.room.power_levels!VAEDgDJVqmxXZyAlSW:localhost:8800 mGmH^@anon-20191002_181700-112:localhost:8800&@e3Q ] $lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAm.room.power_levels!VAEDgDJVqmxXZyAlSW:localhost:8800 mEmF)@anon-20191002_181700-112:localhost:8800 ?e'Q ]$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Am.room.member!VAEDgDJVqmxXZyAlSW:localhost:8800mBmCR@anon-20191002_181700-113:localhost:8800!>e)Q ]$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgm.room.aliases!VAEDgDJVqmxXZyAlSW:localhost:8800m@8m@@anon-20191002_181700-112:localhost:8800,=e?Q ]$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ym.room.history_visibility!VAEDgDJVqmxXZyAlSW:localhost:8800m<m>@anon-20191002_181700-112:localhost:8800$<e/Q ]$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIm.room.join_rules!VAEDgDJVqmxXZyAlSW:localhost:8800m:tm;7@anon-20191002_181700-112:localhost:8800);e9Q ]$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsm.room.canonical_alias!VAEDgDJVqmxXZyAlSW:localhost:8800m7m8@anon-20191002_181700-112:localhost:8800&:e3Q ]$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMm.room.power_levels!VAEDgDJVqmxXZyAlSW:localhost:8800m5m6@anon-20191002_181700-112:localhost:8800 9e'Q ]$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsm.room.member!VAEDgDJVqmxXZyAlSW:localhost:8800m2m2@anon-20191002_181700-112:localhost:88008 e'Q  ]$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwm.room.create!VAEDgDJVqmxXZyAlSW:localhost:8800m/}m/@anon-20191002_181700-112:localhost:8800&7e3Q ] $la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4m.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m, m,@anon-20191002_181700-113:localhost:8800&6e3Q ] $XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m*:m*@anon-20191002_181700-112:localhost:8800&5e3Q ] $H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m'm'@anon-20191002_181700-112:localhost:8800&4e3Q ] $dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkm.room.power_levels!eySSVuCclRpBDgwKIU:localhost:8800 m%Wm%@anon-20191002_181700-112:localhost:8800 3e'Q ]$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lkm.room.member!eySSVuCclRpBDgwKIU:localhost:8800m"m"@anon-20191002_181700-113:localhost:8800!2e)Q ]$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAm.room.aliases!eySSVuCclRpBDgwKIU:localhost:8800mNm @anon-20191002_181700-112:localhost:8800 ; 'I; 4eQ_#$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 437}{"auth_events": ["$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 0}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80}, "redact": 50, "invite": 0, "ban": 50, "users_default": 0}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040653718, "hashes": {"sha256": "qtp/bUBGRCX2VGT8q+/4y6dy6mgeKHfyPqRgdJXAP3M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m0hBFfgQ0f0d3ovoKXf9h3eTNdbK+FZ7HRxbQydC5moHRpKHmn7VtZd61pBJG8mTzMB0bKyvWyQ2rAg0c95YCQ"}}, "unsigned": {"age_ts": 1570040653718, "replaces_state": "$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk"}}Z3eQ_C$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 436}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040653143, "hashes": {"sha256": "7M5GBtAxIT3RgSKLCeNMag5X0ooubPkraEMEmRC9JqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L5duNPpRhaP9HGZHPfnhTGNljg30YfXL4geYpGgveTgxXSl5IliZWT4xB8cd51glkXPfQVwGhOFgPNW3y6R4Bg"}}, "unsigned": {"age_ts": 1570040653143, "replaces_state": "$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs"}}U2eQ_9$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 141, "stream_ordering": 435}{"auth_events": ["$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM"], "prev_events": ["$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA"], "type": "m.room.member", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040652415, "hashes": {"sha256": "EUSv9xBpHp77rVreM7DvHGXnlW3R1av3Vkl5ZOB/uuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aV3AKyLiuAbVzgJnXxsLyLmt/wM6ckfhRNCVUrsmnVqXnOhkskOWFfydjVp/aIJwRStrFw9Qr5xD+X1je9cZDw"}}, "unsigned": {"age_ts": 1570040652415}} (gWgx(8H^ k x ' 4 A N [ her#O]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800tO]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800sO]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800rO]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800qP]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800O]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800O]Q@anon-20191002_181700-130:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800~O]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800}O]Q@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800{O]Q@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800|O]Q@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800zO]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800yO]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800xO]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800wO]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800vO]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800uP]Q@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800P]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800P]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800P]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800P]Q@anon-20191002_181700-142:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800P]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800P]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800P]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800P]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800P]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800P]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800P]Q@anon-20191002_181700-135:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800P]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800P]Q@anon-20191002_181700-133:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800P]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800  ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  z t n h b \ V P J D > 8 2 , &      y q i a Y Q I A 9 1 ) !    y q i a Y Q I A 9 1 ) !    y q i a Y Q I A 9 1 ) !    y q i a Y Q I A 9 1 ) !   yqiaYQIA91)! yqiaYQIA91)! yqiaYQIA91)! yqiaYQIA91)! yqiaYQIA91)! yq`_]~\}[|Z{YzXyVxUwTvSuRtQsPrOqNpMoLnKmJlIkHjGiFhEgDfCeBdAc@b?a>`=_<^;]:\9[8Z6Y5X4W3V2U1T0S/R.Q-P,O+N*M)L(K'J&I%H#G"F EDCBA@?>=<;:98765 4 3 2 1 0/.-,+*)('&%$#"!      ~}|{yxwvut~s}r|q{pzoynxmwlvluktjsirhqgpgofnemdlckbjbiah`g_f^e]d]c\b[aZ`Y_X^X]W\V[UZTYSXRWQVPUOTNSMRLQKPJOINHMGLFKEJDICHBGAF@E?D>C=B8=7<6;5:4938271605/4/3.2-1,0+/*.*-),(+'*&)%(%'$&#%"$!# " !       e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xphX`PH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    TSR~Q}P|O{LzKyJxIwHvGuFtEsDrCqBp@o?n>m=l<k;j:i9h8g7f6e4d2c1b0a/`._-^,]+\*[)Z'Y&X%W$V#U"T!S RQPONMLKJIHGFEDCBA@ ? > = < ;:9876543210/.-,+*)('&%$#"!      ~}|{zyvutsrqpomlkjihgfdcba`_^]\[ZYXVU}|{zyxwvutsrponmlkjihgfedcb  h7eQ__$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 440}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040655741, "hashes": {"sha256": "v7z6XN3Gon90kICwlMsdbbdL1MsN0oDt3PHzASNgErk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U4UsZSDN8HBh0LXic1jEdDg8gLvIvSPLMEvAhdv+3R/z8efHFMn5B3HZOcXsvFfUhbAf5PbjWg5mbKxY80xXAQ"}}, "unsigned": {"age_ts": 1570040655741}})6eQ_a$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 141, "stream_ordering": 439}{"auth_events": ["$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk"], "prev_events": ["$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50}, "users": {"@anon-20191002_181700-113:localhost:8800": 80, "@anon-20191002_181700-112:localhost:8800": 100, "@some-random-user:here": 50}, "redact": 50, "invite": 0, "ban": 50, "users_default": 0}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040654859, "hashes": {"sha256": "lK4gTkXOU/Px0yAsyxSh+dlxmD4ULQy4Z6cHHFHMFI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLzq16gi2kiFOl/s9Z9/SN8MAuAk6Tg1S4NuJBHbYgMa6nBTwHQsSEVw6joWSA7eUgJ+W19IkugLFU+UDmOqBQ"}}, "unsigned": {"age_ts": 1570040654859, "replaces_state": "$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM"}} 5eQ_%$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800{"token_id": 140, "stream_ordering": 438}{"auth_events": ["$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE", "$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY", "$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM"], "prev_events": ["$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE"], "type": "m.room.power_levels", "room_id": "!eySSVuCclRpBDgwKIU:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "invite": 0, "ban": 50, "redact": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100, "@anon-20191002_181700-113:localhost:8800": 80}}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040654394, "hashes": {"sha256": "dg9vK6sX+cOkE5gc6Q3iumWkBhYZ69L04Pxkkdx1DQQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sVyrNl7jV+8gwK2aUQQv1+d3L2M9JUFqeL0NDGkWy70jGK5FJjnEi2vtuLlMCTKawK4+pt7aVpN1KrJMM7A9Aw"}}, "unsigned": {"age_ts": 1570040654394, "replaces_state": "$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE"}} -RM H C > 9 4/*|%w rmhc TFQe!eKrOqiOabJcMgIJjwC:localhost:8800$p3RSvJIioUnzTwblOB7REnaofAZlyDRqAbdOrVDoJOITEQe!eKrOqiOabJcMgIJjwC:localhost:8800$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUTDQe!eKrOqiOabJcMgIJjwC:localhost:8800$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQTCQe!eKrOqiOabJcMgIJjwC:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8TBQe!eKrOqiOabJcMgIJjwC:localhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwITAQe!eKrOqiOabJcMgIJjwC:localhost:8800$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduoT@Qe!eKrOqiOabJcMgIJjwC:localhost:8800$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggT?Qe!eKrOqiOabJcMgIJjwC:localhost:8800$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sT>Qe!eKrOqiOabJcMgIJjwC:localhost:8800$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTET=Qe!eKrOqiOabJcMgIJjwC:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-AT<Qe!eKrOqiOabJcMgIJjwC:localhost:8800$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4T;Qe!vVmSdclwPIqYDbnmPn:localhost:8800$oz9r46kXP9Bvvaw9ic4EMGz4-VdNDgAs-aEjevRH60QT:Qe!vVmSdclwPIqYDbnmPn:localhost:8800$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9TsT9Qe!vVmSdclwPIqYDbnmPn:localhost:8800$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8T8Qe!vVmSdclwPIqYDbnmPn:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYT7Qe!vVmSdclwPIqYDbnmPn:localhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUT6Qe!vVmSdclwPIqYDbnmPn:localhost:8800$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgT5Qe!vVmSdclwPIqYDbnmPn:localhost:8800$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYT4Qe!vVmSdclwPIqYDbnmPn:localhost:8800$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQT3Qe!vVmSdclwPIqYDbnmPn:localhost:8800$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtoT2Qe!vVmSdclwPIqYDbnmPn:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wT1Qe!vVmSdclwPIqYDbnmPn:localhost:8800$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9AT0Qe!edbUkYJIZBNOiTuLJs:localhost:8800$suKbRPkLfO8HmfrJbs6D0wxzXYOlzmx55FEI1j6VLjoT/Qe!edbUkYJIZBNOiTuLJs:localhost:8800$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRkT.Qe!edbUkYJIZBNOiTuLJs:localhost:8800$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3QT-Qe!edbUkYJIZBNOiTuLJs:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoET,Qe!edbUkYJIZBNOiTuLJs:localhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4T+Qe!edbUkYJIZBNOiTuLJs:localhost:8800$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wT*Qe!edbUkYJIZBNOiTuLJs:localhost:8800$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_oT)Qe!edbUkYJIZBNOiTuLJs:localhost:8800$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQT(Qe!edbUkYJIZBNOiTuLJs:localhost:8800$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28T'Qe!edbUkYJIZBNOiTuLJs:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsT&Qe!edbUkYJIZBNOiTuLJs:localhost:8800$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYT%Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_SoT$Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMsT#Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAT"Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5AT!Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgT Qe!VAEDgDJVqmxXZyAlSW:localhost:8800$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7YTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzITQe!VAEDgDJVqmxXZyAlSW:localhost:8800$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsTQe!VAEDgDJVqmxXZyAlSW:localhost:8800$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4OtwTQe!eySSVuCclRpBDgwKIU:localhost:8800$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4   s;eQ_u$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 444}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs"], "type": "m.room.join_rules", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040658548, "hashes": {"sha256": "jidNmbkbSqBsl7oqvOEGAv14+9/QA5/QCoKAg+KIqvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qupbc+22tTl7c7SVXPDOpW7d3RDO2Sl6HXzhCO09Z6w8wJTZH45A5fjfXTvaD10rbqbIZVbyNGZ/mkVtNibXAg"}}, "unsigned": {"age_ts": 1570040658548}}:eQ_9$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 443}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM"], "type": "m.room.canonical_alias", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-11:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040657915, "hashes": {"sha256": "vz7u7jBs06VJhYlAvUCbAxxtzWMNNaonqVZ9Zn2UoqA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MThoLgeEyby0fiUYEHObyfr+Apg6De8EIxtUULcqkgWeJc5JexuTlul5NcbrqbdvMHdkvTCZ+WsJkkxG1kvQCg"}}, "unsigned": {"age_ts": 1570040657915}}j9eQ_c$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 442}{"auth_events": ["$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "type": "m.room.power_levels", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040657282, "hashes": {"sha256": "h9E5T/2r5xYnRWGQutZG9KaaTYkCQNU4Fp+9Pfs+0gQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9Fw/s4flE4qoBSqgYHAWJLYAl/2yNsdfJdNENuJbMU18Kgf4EjC8IlGaPAke5yTJ9QzNURHJI7Vh+6MrCsdbDA"}}, "unsigned": {"age_ts": 1570040657282}}u8eQ_y$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 441}{"auth_events": ["$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw"], "prev_events": ["$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw"], "type": "m.room.member", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040656404, "hashes": {"sha256": "N71tvulkh9Ori94WYGz+OB6MKqGrlY0vCSfnP6OO9b4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vHd/lCIvoxXVHM64Japd6Rt48/0iSnyCHBJXlTWml5EIHe+tjqXP4ksmqACwPrx//1yvnMiPDdovQy1qbWdBDA"}}, "unsigned": {"age_ts": 1570040656404}} :t " \ D~,fNCz e]]Q=$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o@anon-20191002_181700-127:localhost:8800@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800joinanon-20191002_181700-127Cy e]]Q=$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg@anon-20191002_181700-126:localhost:8800@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800joinanon-20191002_181700-126Cx e]]Q=$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis@anon-20191002_181700-125:localhost:8800@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800joinanon-20191002_181700-125Cw e]]Q=$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs@anon-20191002_181700-124:localhost:8800@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800joinanon-20191002_181700-124Cv e]]Q=$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs@anon-20191002_181700-123:localhost:8800@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800joinanon-20191002_181700-123Cu e]]Q=$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g@anon-20191002_181700-120:localhost:8800@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800joinanon-20191002_181700-120Ct e]]Q=$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY@anon-20191002_181700-119:localhost:8800@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800joinanon-20191002_181700-119Cs e]]Q=$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8@anon-20191002_181700-118:localhost:8800@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800joinanon-20191002_181700-118Cr e]]Q=$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE@anon-20191002_181700-117:localhost:8800@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800joinanon-20191002_181700-117Cq e]]Q=$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY@anon-20191002_181700-116:localhost:8800@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800joinanon-20191002_181700-116Cp e]]Q=$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ@anon-20191002_181700-115:localhost:8800@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800joinanon-20191002_181700-115Co e]]Q=$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E@anon-20191002_181700-114:localhost:8800@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800joinanon-20191002_181700-114Cn e]]Q=$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800joinanon-20191002_181700-113Cm e]]Q=$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800joinanon-20191002_181700-112Cl e]]Q=$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800joinanon-20191002_181700-113Ck e]]Q=$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800joinanon-20191002_181700-112Cj e]]Q=$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800joinanon-20191002_181700-113Ci e]]Q=$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800joinanon-20191002_181700-112Ch e]]Q=$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A@anon-20191002_181700-113:localhost:8800@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800joinanon-20191002_181700-113Cg e]]Q=$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs@anon-20191002_181700-112:localhost:8800@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800joinanon-20191002_181700-112 o`d=GW/vN& ^ 6  n F  ^6nF ~ V .  f >  v N &~V.f>vN&^6'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800 ('Q!LazKtcHZriKzCvvGwV:localhost:8800 ''Q!LazKtcHZriKzCvvGwV:localhost:8800 &'Q!LazKtcHZriKzCvvGwV:localhost:8800 %'Q!LazKtcHZriKzCvvGwV:localhost:8800 $'Q!LazKtcHZriKzCvvGwV:localhost:8800 #'Q!LazKtcHZriKzCvvGwV:localhost:8800 "'Q!LazKtcHZriKzCvvGwV:localhost:8800 !'Q!LazKtcHZriKzCvvGwV:localhost:8800 ''Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800e'Q!NQgavrmiCPUVaVjssy:localhost:8800d'Q!NQgavrmiCPUVaVjssy:localhost:8800c'Q!NQgavrmiCPUVaVjssy:localhost:8800b'Q!NQgavrmiCPUVaVjssy:localhost:8800a'Q!NQgavrmiCPUVaVjssy:localhost:8800`'Q!NPdjmIfsBVIIkvWBzD:localhost:8800k'Q!NPdjmIfsBVIIkvWBzD:localhost:8800i'Q!NPdjmIfsBVIIkvWBzD:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800e'Q!NPdjmIfsBVIIkvWBzD:localhost:8800c'Q!NPdjmIfsBVIIkvWBzD:localhost:8800a'Q!NPdjmIfsBVIIkvWBzD:localhost:8800`'Q!NPdjmIfsBVIIkvWBzD:localhost:8800^'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800R'Q!NFWKQvZkIwvecnREOC:localhost:8800Q'Q!NFWKQvZkIwvecnREOC:localhost:8800P'Q!NFWKQvZkIwvecnREOC:localhost:8800O'Q!MXhwoqNXvexeDDSOZT:localhost:8800 &'Q!MXhwoqNXvexeDDSOZT:localhost:8800 $'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!NFWKQvZkIwvecnREOC:localhost:8800N'Q!NFWKQvZkIwvecnREOC:localhost:8800M'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MqstbCLZIQFiYNHrqR:localhost:8800 'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800s'Q!LvARVIpJZeRQxbKefX:localhost:8800r'Q!LvARVIpJZeRQxbKefX:localhost:8800q'Q!LvARVIpJZeRQxbKefX:localhost:8800p'Q!LvARVIpJZeRQxbKefX:localhost:8800o'Q!LvARVIpJZeRQxbKefX:localhost:8800n&Q!LaLcEGFLpjdlYlYKGC:localhost:8800"&Q!LaLcEGFLpjdlYlYKGC:localhost:8800!&Q!LaLcEGFLpjdlYlYKGC:localhost:8800 &Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800 a} { y w u sqomkigeca~eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~~eeQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~}eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800~|eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~{eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800~zeeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~yeeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~xeeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800~weeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~veeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~ueeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~teeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800~seeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~reeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~qeeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~peeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~oeeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~neeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~meeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~leeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~keeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~jeeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800~ieeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800~heeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800~geeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800 k"   C Z0/2WnDCFkh(Q/ e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rules$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggm'Q9 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_alias$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sj&Q3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE %Q']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Ad$Q' e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.create$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4#Q3 ee!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8"Q3 ee!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto !Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYs Q))e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUpQ? e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibility$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjghQ/ e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rules$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYmQ9 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_alias$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQjQ3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wdQ' e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.create$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9AQ3 ee!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3QQ3 ee!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28 Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEsQ))e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4pQ? e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibility$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1whQ/ e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rules$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_omQ9 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_alias$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQjQ3 e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28 Q']e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2KsdQ' e!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYcQ% e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topic$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_SoQ3 ee!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA Q3 ee!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM Q']e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5As Q))e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgp Q? e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibility$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yh Q/ e!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rules$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI  xZ?eQ_C$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 448}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A"], "type": "m.room.power_levels", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"redact": 50, "invite": 0, "ban": 50, "users_default": 0, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80}, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040661449, "hashes": {"sha256": "5URn/wuoOVrGKNFvQjwLUH6GSCGCyTbCPSqTRMzcpr4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rJbOsCjT7OtYfltJbURElTRjfVwkjiIsWSeZmr3OhYMuAuywLxOPic9J+RO9GQSFRCxgC0b4GcPIHdBRNG2fCQ"}}, "unsigned": {"age_ts": 1570040661449, "replaces_state": "$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM"}}U>eQ_9$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 141, "stream_ordering": 447}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI"], "prev_events": ["$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg"], "type": "m.room.member", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040660727, "hashes": {"sha256": "7Ib49BGu9J1ggvYzXeCOFCdEyCK0EtqKgksbrW2sf9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ipmDraII0xmNsvTjjCjdc8BgEB2gfhRAIHreMU8l0RlSQZUWdTMjH0V/2wxCASRBQNXhfhkMkyiaVZhtou9IBA"}}, "unsigned": {"age_ts": 1570040660727}}=eQ_M$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 446}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y"], "type": "m.room.aliases", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-11:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040660024, "hashes": {"sha256": "0XitWFHxWCNs1iXKcXMArAa8HaupmDXIFuZ9KTKcWOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HZlLg3MWKJQk4mIRpM2+blDu6Pj739ZsDS5Dhj3UoWBSRo7exlLWEotrq6faWTcBgAeeuA9VujQBWbGZiAcjBA"}}, "unsigned": {"age_ts": 1570040660024}}<eQ_$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 445}{"auth_events": ["$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI"], "type": "m.room.history_visibility", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040659143, "hashes": {"sha256": "ZvjffmRP/Q2f/IgDF1xnL0QHcrRePBK3YMAdLV9fAEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Qe2mFQuVk3boGoQN3rJQwlg65SZG/GFfitnM9wiasPzxVfo6OamV2CacLhv7q8edTSHoXGMXftin3BGth9YjDw"}}, "unsigned": {"age_ts": 1570040659143}} ,NC 8 - { " p  e ZOD9.|#qf VheL$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMsha256Tj>6B?\e9ܽ~BVgeL$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQsha256ײL+֑Q4s74ofTPiTVfeL$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8osha256d@HlNsVFyLj3VeeL$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUsha256o')nM*n7W4WsKۢlVdeL$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolksha256SXSF }|=ip)>0YVceL$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0sha256 [bx"'yxp 1^7&MVbeL$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Qsha256CŠ#M2+qWc̷%f$PgVaeL$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Esha256Iҭp*XwE \S EHApV`eL$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knlssha256c0T;.ˁz`Iٞ蚝{/[V_eL$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUsha2565k)nrs%rojW49 EV^eL$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQsha256 nHTD7 zz{:=t"T8V]eL$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8sha256\y?w4(k4 >oV\eL$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIsha256?Fxr+zzs9*IV[eL$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduosha256* qAey RK~\|IvVZeL$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggsha256@~Vʑٽ9r ?:PGVYeL$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8ssha2568H/!vr1>^n{sOVXeL$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTEsha2566"u^rVwϕđtB_R`f>1VWeL$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Asha256ĄQo>h6n3RTVVeL$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4sha256-)l Nޕk&EN>VUeL$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tssha256#ZIKeٵNK+ %v;VTeL$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8sha256dARFdr?, ~!:'ZU)\ݨOVSeL$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYsha256vאm}q~:R?oJD2㙶VReL$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUsha256Un|kI: p6v #/Xa! R[eVQeL$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgsha256,R (}O{Zow*k|:U8VPeL$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYsha2564*m8)}-VVOeL$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQsha256H4.ھ>h{(?=w1*V$VNeL$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtosha2563L}uA+^3-:6 ҞGNVMeL$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wsha256j\5ٿ.Nǡ~ L<VLeL$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Asha256`4'C釒JVKeL$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRksha256hM)i- mI5"VJeL$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Qsha256j`x%v'ZJ}F(1tVIeL$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEsha2565'7e c2L30xLqP6VHeL$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4sha256!~Tl[Ei\Tu(6B1>VGeL$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wsha25640m~s+4ր,Nć fC!44/\VFeL$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_osha256R]nq7sg'-KP_ 57_VEeL$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQsha256n}r~J%l!-VDeL$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28sha256Z.Bhge ; k>DOoVCeL$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Kssha256*QD+O::UOSigثVBeL$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYsha256Ƹ@Y?TyttdߞZ]g!fVAeL$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Sosha256- Z|:{+޺wEb*V@eL$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMssha2562+Hՠ&yX4C4ˇWi V?eL$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAsha256@X5HZUڎn2WqSpV>eL$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Asha256Bła iߒ0YV=eL$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgsha256:a]!X4R\|I Jp W  m ; Fxr@l:`.f4 S!Y' A sj8r@ x F  ~ M M M ` .f1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQA1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28[1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kn1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw[1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYi1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ e1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ E1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMe21e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cF1$2:localhost:42455 Y3$29:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4b1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JEM21e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kL1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU 3$18:localhost:42455 3$17:localhost:42455 3$16:localhost:42455 'Q$1570043748464QpNXV:localhost:8800 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU 1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk 1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI 1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk 1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 _1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwW1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Ml1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 [1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe41e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUD1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg+1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Mb1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A}0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds ?S}P#pC \yL^1 /  | O " o B  a 5  T (tGyLk-g: Zk>M -,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  +Q !JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' ',Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 + +,Q!KIHYKMzkRDrJwiywwz:localhost:8800 * *+Q !KIHYKMzkRDrJwiywwz:localhost:8800 ) ),Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800+Q !JusxqeECtidaPlWqhp:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800+Q !JZouHBRxCRbcxYJnbn:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800+Q !JYLMokjOhZZlmbZvTf:localhost:8800,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 +Q !JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800+Q !JGhlAUflyNxErGGZZu:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 - -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 , ,,Q!JnAKXOrlyisFUpgJPw:localhost:8800  -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 . .,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !JnAKXOrlyisFUpgJPw:localhost:8800  - ?S}P#pC \yL^1 /  | O " o B  a 5  T (tGyLk-g: Zk>M -,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800 ,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IfYYyzLHSOeyJBxBfn:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  +Q !JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800  ,,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' ',Q!JiUawCFQnodcpssOfK:localhost:8800,Q!JiUawCFQnodcpssOfK:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 + +,Q!KIHYKMzkRDrJwiywwz:localhost:8800 * *+Q !KIHYKMzkRDrJwiywwz:localhost:8800 ) ),Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800,Q!JusxqeECtidaPlWqhp:localhost:8800+Q !JusxqeECtidaPlWqhp:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800,Q!JZouHBRxCRbcxYJnbn:localhost:8800+Q !JZouHBRxCRbcxYJnbn:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800,Q!JYLMokjOhZZlmbZvTf:localhost:8800+Q !JYLMokjOhZZlmbZvTf:localhost:8800,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JPTwFTSDaBXwUTgitj:localhost:8800 +Q !JPTwFTSDaBXwUTgitj:localhost:8800 ,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800,Q!JGhlAUflyNxErGGZZu:localhost:8800+Q !JGhlAUflyNxErGGZZu:localhost:8800,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!KIHYKMzkRDrJwiywwz:localhost:8800 - -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 , ,,Q!JnAKXOrlyisFUpgJPw:localhost:8800  -,Q!KIHYKMzkRDrJwiywwz:localhost:8800 . .,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 ,Q!IlGJpjzrvvAFuwTAgo:localhost:8800 +Q !JnAKXOrlyisFUpgJPw:localhost:8800  - ~z v r n j fb^ZVRNJF)eeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800(eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800'eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800&eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800%eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800$eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800#eeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800"eeQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800!eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800 eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800 eeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800  ^U]eQ_9$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 141, "stream_ordering": 478}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg"], "prev_events": ["$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI"], "type": "m.room.member", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040683736, "hashes": {"sha256": "DfyenRXuDlrCM2xKwgz28PxNkkvoMfJ58phGQCxZY6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w+84Nk3PYXD06Rk0HP3QUEtt1DFbwsNiJwLzJEzHweb8iceX2QonHsZsl08gt7DR9cOFmId0O5OYqTv7b6GvBA"}}, "unsigned": {"age_ts": 1570040683736}}\eQ_M$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 477}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo"], "type": "m.room.aliases", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-14:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040682966, "hashes": {"sha256": "EvG3JGlSrSGb5Orm9GeO23bsGZeMD3c83rXUJufgRE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iz51EmRQ6vh96Dd7tYUeOcaC/R6MczZMc+Lw3Fe6pTXiT+kYr7oHkGFypzgHPdyYKAsX3JRuA9xSomOpViWUCQ"}}, "unsigned": {"age_ts": 1570040682966}}[eQ_$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 476}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg"], "type": "m.room.history_visibility", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040681750, "hashes": {"sha256": "/Wh+erbtiAfLQdIPOmjwpdYizvkq55DxNMFyAg1RFOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/fIvxyTBjZZAQ1RGV9Hx2iOzZcipXtgJ//sNYrA7I6MPiLDz5QXPNV07TdCbF+YT8zSE1vCW0Flx5rc3/N/eAQ"}}, "unsigned": {"age_ts": 1570040681750}}sZeQ_u$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 475}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s"], "type": "m.room.join_rules", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040681034, "hashes": {"sha256": "PTo+tZjgSVvhTU9H0GTkJhdaeGB8mMqvFthRKMa2AIM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GYvtjIB6ZyapeA2ly0ezSGvLY3giancwibl0+NxFCIocvziHCwIfKVkiCoFJOuwNbMhR0fraTKF2G2SbvR7SBQ"}}, "unsigned": {"age_ts": 1570040681034}}   -YeQ_9$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 474}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE"], "type": "m.room.canonical_alias", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-14:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040680391, "hashes": {"sha256": "YxmlIIUevuJ2VdHpnGOG6BQ+MSMR1OkXiwLg0OurQpU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xf/LAAJGuv9ynj7JLDeZlcgPAbeTdnosfpD1f6MrWmhAw1dXjExsw6ryXSTm4Yv20FNedl+rUyyQFlu8xyckAA"}}, "unsigned": {"age_ts": 1570040680391}}jXeQ_c$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 473}{"auth_events": ["$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "type": "m.room.power_levels", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040679701, "hashes": {"sha256": "oGw4AtDp1fYZ463kSY9Y/valZmgkZF1IqtFUkbs46Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gzhqal9JcMa7zcV9HpFkVetvI02KowP2O8vXjf4XB/nTXGLZFdnCww7uBZcFqGF+UChOEJOz3AKcvwUOEFQSDQ"}}, "unsigned": {"age_ts": 1570040679701}}uWeQ_y$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 472}{"auth_events": ["$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4"], "prev_events": ["$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4"], "type": "m.room.member", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040679087, "hashes": {"sha256": "y4aFUftdlibUMVjvqWGYA29RH3JU8bc0FvzrU/jcC4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JXzO5V1TUKBWr3bLQv7XFF9stO7GsakecSHwvGfYFC616sv/h4nI3QsbDdeJXY2yAqfUcd9ZPa0nOHLLf8c/AA"}}, "unsigned": {"age_ts": 1570040679087}}hVeQ__$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 471}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040678430, "hashes": {"sha256": "MPamKP3WwjHwXqb5z5OxSPFMY9YEX4MHoEmLiHSUE2A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sYIsWEHkUr14/A0U4GOcggIh00hcCp9NT5eO4uw060sEPksZkw6WWNJSSGW/MFFtW0HELAeqDVDi9HcIpjD/CQ"}}, "unsigned": {"age_ts": 1570040678430}}  }uCeQ_y$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 452}{"auth_events": ["$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY"], "prev_events": ["$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY"], "type": "m.room.member", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040664294, "hashes": {"sha256": "zRAeIJ+sFiJCv3L2Sm+IjM6usbBlBQTfe326DBTIY2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OvfSRgdyzAnWZAeZlrMVED9OByFBez+Lx8EKIfn1k36UKd2IXuNc7/OknUYr9UHt6VvkWBQvJq06hFgCp557Cg"}}, "unsigned": {"age_ts": 1570040664294}}hBeQ__$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 451}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040663630, "hashes": {"sha256": "HpyNxFnF+yzyscdU98YMaoRn9Q0EEYg+dcKxYv0m8Nw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5mkvOZ+ORIiVF7S7ddwfZi18aywPuco/I+MGcdo2ZrYpK6ehFfw+Y+MrcoczJla/KcrILn4KBFuK1AYGz1VvBg"}}, "unsigned": {"age_ts": 1570040663630}} AeQ_)$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 141, "stream_ordering": 450}{"auth_events": ["$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A"], "prev_events": ["$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs"], "type": "m.room.topic", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"topic": "Here I can set the topic at powerlevel 0"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040662617, "hashes": {"sha256": "G6Pqg8UbE+NnISOFLDjQ4l4ynVhrwLf/xf/DgIz54o8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8fXfXcl48uZfc9dhRa6nlOFieviF7aqNYsfP5K5mXi4H9F74uLS/7WsTbPZFFZyBvoyfsHnEeN5iBEvagzIdBA"}}, "unsigned": {"age_ts": 1570040662617}}n@eQ_k$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800{"token_id": 140, "stream_ordering": 449}{"auth_events": ["$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA", "$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw", "$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs"], "prev_events": ["$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA"], "type": "m.room.power_levels", "room_id": "!VAEDgDJVqmxXZyAlSW:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"invite": 0, "ban": 50, "redact": 50, "users_default": 0, "events": {"m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50, "m.room.topic": 0, "m.room.canonical_alias": 50}, "events_default": 0, "state_default": 50, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040661993, "hashes": {"sha256": "wVoltLF8uyAMSZ2kg9RUdpSf6OQTIT0L9050bXHyrmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MkiRQV4P9roNYFPxS0WRr3UqQLOH5dDaO/yxOw+WjxN4pyWs38roOxuNcz50p1SS942nWYr4rWJmRt06L/tBBw"}}, "unsigned": {"age_ts": 1570040661993, "replaces_state": "$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA"}} tQ\D+}K7Qk9q?i w E  } K   R X & w E , hW%]+6c11e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o 1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I r1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsW1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM 1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk_1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k 1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkh1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI{1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A-1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYe1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE T1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7we1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w`1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 c3$29:localhost:42455 3$28:localhost:424553$27:localhost:424551e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-kO1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI 1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M|1$3:localhost:44405 1$3:localhost:42455 m1$3:localhost:41985 1$3:localhost:37265 3$39:localhost:42455 !1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujoc3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao _3$37:localhost:42455 1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug Y3$33:localhost:42455 1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAK1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsP1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0A1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYl1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E:1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk D1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k X1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooD1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ q1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0! Er@ X&l: (p. T "j8 P f4    | J v DFRx~  L  Z@1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8x1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8w`3$87:localhost:4245541e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY"1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8X1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY#1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8y1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8Y1e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU1e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw 1e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE {1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8Z1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIML1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMM1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl281e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl281e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl281e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$1e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMN1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8u1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8t1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM1e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgE1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM Z1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD081e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74M 21e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48q1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48p1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48o1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0:1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD09>1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM`1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM_1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc-1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc,1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc+1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc*1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM81e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM81e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw |1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgG1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgF1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE z1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE y1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM 1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM 1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8v21e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74O1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74N1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM821e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAS1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAR1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAQ1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMa yQGM  k 9 j  X r @  & x F   ~pQ8 Ll S W >  R ^,@d2!l:ry1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cP3$52:localhost:42455 '1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 3$54:localhost:42455 33$53:localhost:42455 (1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU{1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is G1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 111e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0~1e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwX0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w^1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEL1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ(1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w~1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4g1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 r1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo Y1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms71e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA.1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcv1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8 1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogY1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAx1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0i0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo_1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s p?$59_msg_d:localhost:42455 H=$57_pl_x:localhost:42455 G3$56:localhost:42455 F3$55:localhost:42455 ?1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs21e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA,1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 3$51:localhost:42455 &3$50:localhost:42455 %1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980M1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokG1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7609 QL  D X & ^ ,dQvW% ^,d2 j8 p>K}K %Q W1e$4yXvw1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS9801e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog3$52:localhost:42455 3$50:localhost:42455 1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo J1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcp1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogJ1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAi1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0Z0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo_1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s Q1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 S1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw3$49:localhost:42455 3$56:localhost:42455 (3$55:localhost:42455 !1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcv3$54:localhost:42455 1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX83$53:localhost:42455 1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is 71e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 "1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U 1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Au1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY n1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk |>1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk~1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8o1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEL1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ(1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w~1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4e1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms71e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI?$59_msg_d:localhost:42455 )1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE ?Pj8p> v D   } K  Q  W % q ] +cJP7PV$9\*d2k?1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cJ1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980G21e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUu0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_451e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw 1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0~1e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwX0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w^1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA&1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEL1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ(1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w~1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4g1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms71e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI?$59_msg_d:localhost:42455 F3$56:localhost:42455 E1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA.1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE3$55:localhost:42455 >1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcv3$54:localhost:42455 21e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8 3$53:localhost:42455 '1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog3$52:localhost:42455 &3$50:localhost:42455 %1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI76031e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs,1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo Y1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokA1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogY1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAx1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0i0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo_1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s n1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 p1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM 1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is G1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 1 5e"_$ n 3 h - | A  7 1{@OCz7n+{@Cr5 Q[ ]!VAEDgDJVqmxXZyAlSW:localhost:8800#test-20191002_181700-11:localhost:8800publicsharedHere I can set the topic at powerlevel 0`4 Q[ !eySSVuCclRpBDgwKIU:localhost:8800#test-20191002_181700-10:localhost:8800publicsharedn3 Q+Y !fJXiUpbbOlLbHWmPgs:localhost:8800A new room name#test-20191002_181700-9:localhost:8800publicshared_2 QY !oXKJArsPmtgaYANBrg:localhost:8800#test-20191002_181700-8:localhost:8800publicshared_1 QY !egCvzKpbEwmuvDoBTb:localhost:8800#test-20191002_181700-7:localhost:8800publicshared_0 QY !XgobMgBjNcDRJnRXLD:localhost:8800#test-20191002_181700-6:localhost:8800publicshared9/ Q !wIhMbfQzYbJobPdwyi:localhost:8800publicshared9. Q !cSUQGmpIsSCBAVTOHo:localhost:8800publicsharedV- Q'- !SBEprlZiuliFNSfNmz:localhost:8800The room namepublicsharedhttp://somethingV, Q'- !KxhGcTbEWmtgGNpdox:localhost:8800The room namepublicsharedhttp://somethingA+ Q !HmkcAMkMjWRhTDJMsy:localhost:8800invitesharedcan_joinA* Q !OMkiVTuuOEeiFAXtUY:localhost:8800invitesharedcan_joinA) Q !BrssELMbasSzTFpIXm:localhost:8800invitesharedcan_joinA( Q !RmdhCjvouVLmyIHjaM:localhost:8800invitesharedcan_joinA' Q !EyEaTZElOkdURKbEXo:localhost:8800invitesharedcan_joinA& Q !TWETXUgfFZafDdbqLS:localhost:8800invitesharedcan_joinA% Q !HAFNBarGuVZuWCgwWM:localhost:8800invitesharedcan_joinA$ Q !duCKuavMBSfRbTFPsc:localhost:8800invitesharedcan_joinT# QC !TleKOyAElrpgyyrAQA:localhost:8800#__ANON__-11:localhost:8800publicshared_" QY !IGVHKYcSuxzVPlFHlj:localhost:8800#test-20191002_181700-4:localhost:8800publicsharedS! QA !xhbvqJDfxMSsZPqvld:localhost:8800#__ANON__-9:localhost:8800publicsharedS QA !OSHhtkGUjpUCkXwIhj:localhost:8800#__ANON__-5:localhost:8800publicshared9 Q !AWfbViAZparIjmDaVT:localhost:8800publicshared_ QY !wnriPzXkIMmdTNoJKU:localhost:8800#test-20191002_181700-2:localhost:8800publicshared9 Q !jfshVGNDxkvqPxFxWB:localhost:8800publicshared_ QY !OaCEdDAiatpwYcagUb:localhost:8800#test-20191002_181700-1:localhost:8800publicsharedS QA!GGTWnzJfvPQBgQqDIE:localhost:8800#__ANON__-4:localhost:8800publicsharedS QA !cosGKKhHvKaVukBCic:localhost:8800#__ANON__-3:localhost:8800publicshared9 Q !rZWweGEChkxxtzyfDB:localhost:8800publicshared9 Q !uJtKGXTNdEnCPNOGDx:localhost:8800publicshared9 Q !vJQYmOxOBLwFKzYkNj:localhost:8800publicsharedW Q I!kkgEEVUJynguTqAoWD:localhost:8800publicsharedTesting topic for the new room9 Q !dUnULFLGtgaVdwHtnz:localhost:8800publicshared9 Q !aWbcZNVBalJilCEsdr:localhost:8800publicshared9 Q !kxTDuIasPNpXtiRsif:localhost:8800publicshared9 Q !wvnfKBSrUlfNmYoeil:localhost:8800publicshared9 Q !NhWgOTYzEPRwAxRQvS:localhost:8800publicshared9 Q !scyFsXcUIJiLIMwWMY:localhost:8800publicshared9 Q !aWJOsiuJONOvjKWEjO:localhost:8800publicshared9 Q !BDASLhdcKfNwxCTCSg:localhost:8800publicshared9 Q !xwoIOPTGmJIlTXakxC:localhost:8800publicsharedS QA !jYzridjeihmwPBuwLb:localhost:8800#__ANON__-2:localhost:8800publicshared9 Q !NZHpBquHDfJAjiawGk:localhost:8800publicshared9 Q!uxKymrHZeXRYCZwekU:localhost:8800publicsharedy Q)A =!sPWVGnipjiiWQpywNO:localhost:8800room name here#__ANON__-0:localhost:8800publicsharedA new topic for the room9 Q !GixhPUMvtKSWoKRgvw:localhost:8800publicshared9 Q !zhCsYcaweVFJLLNwBz:localhost:8800publicshared9 Q !loalEsWaTYwrVUNJLr:localhost:8800publicsharedB Q !LaLcEGFLpjdlYlYKGC:localhost:8800publicsharedTest RoomB Q !odAvowLhHJcmkKlxFk:localhost:8800Test RoompublicsharedA Q !plcvCHNbjCkNMMxnTk:localhost:8800invitesharedcan_joinA Q !QZhNrNpwObZGJZpdAG:localhost:8800invitesharedcan_joinV QG !zNCItZNbpkZKuufRhC:localhost:8800#30room-create:localhost:8800publicshared 1q<d >  f " # _LP_~'yD Em2qIf Q) !hgjYwwwjWJNgwrzOto:localhost:8800publicworld_readablecan_join9e Q !dnZVySJLGNtUKsSgXW:localhost:8800publicshared9d Q !oznZaCpONuNDaLarkI:localhost:8800publicshared9c Q !eLsrBEnrHolwCNgkFW:localhost:8800publicshared9b Q !ILbUVZOfPPwaZRrKJd:localhost:8800publicshared9a Q !wAyboOFgsOPwkmgMAI:localhost:8800publicshared`` Q[ !bnTuVBaAJTPbcYZtRl:localhost:8800#test-20191002_181700-31:localhost:8800publicshared`_ Q[ !BGbJEmJRVJGlZFQbZe:localhost:8800#test-20191002_181700-30:localhost:8800publicshared`^ Q[ !tDsPLsKOLPePtEWRwn:localhost:8800#test-20191002_181700-29:localhost:8800publicshared9] Q !XMNRkfscQXRjgYrOSd:localhost:8800publicshared9\ Q !wUuodvgsmAJqKJUBCQ:localhost:8800publicshared[ QG)O !zFdNewlKnUiMBxnYrN:localhost:8800#worldreadable:localhost:8800publicworld_readablehttps://example.com/ringtails.jpgwZ QMI !KeBlWUQiLYUoILKkTB:localhost:8800#nonworldreadable:localhost:8800publicsharedhttps://example.com/ruffed.jpgUY QE !WVzjUePHrzCjfyTbmK:localhost:8800#listingtest0:localhost:8800publicsharedUX QE !lAGTcYIuMBXsVRGCOe:localhost:8800#listingtest2:localhost:8800publicsharedUW QE !UyLoIXmzVFwycmBUeh:localhost:8800#listingtest1:localhost:8800publicshared9V Q !nteAxExBGJfaGIpuCx:localhost:8800publicshared9U Q !itKDOCtoMkFUETDtle:localhost:8800publicsharediT Q[ !qxqNYKdtgvOQdhmgsj:localhost:8800#test-20191002_181700-28:localhost:8800publicsharedforbiddenAS Q !MlzmtUYSZOiByAZdKx:localhost:8800publicsharedcan_joinBR Q !WjlTCJVOFJkanCtkFE:localhost:8800publicsharedforbiddenhQ Q[) !aBCvSXjtZUEPlPGHvY:localhost:8800#test-20191002_181700-27:localhost:8800publicworld_readableAP Q !IMiczgkCTjejbnbeyP:localhost:8800publicsharedcan_joinAO Q !HIZTeBCxvpMSpcqGVD:localhost:8800publicsharedcan_join9N Q !awHAhLuEkavTGACcUW:localhost:8800publicshared9M Q !OqPpVlCwmKdAUlwrXI:localhost:8800publicshared9L Q !quaZwrGnzbNWhwAOYB:localhost:8800publicshared9K Q !JusxqeECtidaPlWqhp:localhost:8800publicshared9J Q !aWvVRVaDflYyyGTOdD:localhost:8800publicshared`I Q[ !GiSxJsKZhQVHBkrVPn:localhost:8800#test-20191002_181700-26:localhost:8800publicshared`H Q[ !AjjrNwXmPTCruHxaJq:localhost:8800#test-20191002_181700-25:localhost:8800publicshared`G Q[ !BkzROHxDAfKIzYpmPV:localhost:8800#test-20191002_181700-24:localhost:8800publicshared`F Q[ !WWZVpyLeZfyfpWidLx:localhost:8800#test-20191002_181700-23:localhost:8800publicshared`E Q[ !XIqmzIFbkHGQPIpywk:localhost:8800#test-20191002_181700-22:localhost:8800publicshared9D Q !lMRBkbYJDQHgdBZBFJ:localhost:8800publicshared`C Q[ !cHtqiAyCHEAoBIbCmL:localhost:8800#test-20191002_181700-21:localhost:8800publicshared`B Q[ !OBWkjfrDCNgYFfblia:localhost:8800#test-20191002_181700-20:localhost:8800publicshared~A QI[ !ntuwVdUxfzNIhIKYaz:localhost:8800N2. B's room name after A left#test-20191002_181700-19:localhost:8800publicshared`@ Q[ !CQKLQUpSYakhxVDltC:localhost:8800#test-20191002_181700-18:localhost:8800publicshared9? Q !GwXGurbyEmykmmHcHJ:localhost:8800publicshared9> Q !VWYMJxEviBNDdJCuKT:localhost:8800publicshared`= Q[ !CgVBWWcRJoHEcwoLcq:localhost:8800#test-20191002_181700-17:localhost:8800publicshared`< Q[ !HcMGemcRrLnLprOJJR:localhost:8800#test-20191002_181700-16:localhost:8800publicshared`; Q[ !SyIWYOmcGiASNkPCTB:localhost:8800#test-20191002_181700-15:localhost:8800publicshared9: Q !msMfSdLIAvklSSAnci:localhost:8800publicshared99 Q !GgUNbVXspVTpOlaHBl:localhost:8800publicshared`8 Q[ !eKrOqiOabJcMgIJjwC:localhost:8800#test-20191002_181700-14:localhost:8800publicshared`7 Q[ !vVmSdclwPIqYDbnmPn:localhost:8800#test-20191002_181700-13:localhost:8800publicshared`6 Q[ !edbUkYJIZBNOiTuLJs:localhost:8800#test-20191002_181700-12:localhost:8800publicshared q|ung`YRKD=6/(! yrkd]VOHA:3,%  } v o h a Z S L E > 7 0 ) "    { r i ` V L B 8 . $    z p f \ R H > 4 *   v l b X N D : 0 &    | r h ^ T J @ 6 , "   xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&|rh^TJ@6,"xndZPF<2( qponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM}L~}K}|J|{I{zHzyGyxFxwEwvDvuCutBsrArp@qp?po>on=nm<ml;lk:kj9ih8hg7gf6fe5ed4dc3cb2ba1a`0`_/^].]\-\[,[Z+ZY*YX)WV(VU'UT&TS%SR$QP#PN"ON!NM MLLKKJIHHFGFFEEDDCCBA@@??>>==<<;;::986 76 65 54 43 3221100/.--,,++**))(('~'&}%#|$#{#"z" y! x wvutsrqponmlkjihg  f  e  d  c ba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlk~j~}i}|h|{gzyfyxexwdwvcvubutats`sr_qp^po]on\nm[lkZkjYjiXihWgfVfeUedTdcSbaRa`Q`_P_^O]\N\[M[ZLZYKXWJWVIVUHUTGSRFRQEQPDPOCONBNMAML@LK?KJ>JI=IH<HG;GF:FE9ED8CB7BA6A@5@?4?>3=<2<;1;:0:9/87.76-65,54+43*32)21(10'/.&.-%-,$,+#*)")(!(' '&%$$##""!             T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&E)(D('C'&B&%A%$@#"?"!>! = <;:9876543210/. -  ,  +  * )('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543~2~1~}0}|/|{.{z-zy,xv+wv*vu)ut(ts'sr&rq%po$om#nm"ml!lk kjjiihgffdeddccbbaa``__^^]]\[ZZYYXXVWV VU UT TS SR RQQPPONLMLLKKJJIIHHGGF~FE}ED|DC{B@zA@y@?x?>w>=v=<u<;t;:s:9r98q87p64o54n42m32l21k10j0/i/.h.-g-,f,+e*)d)'c('b'&a&%`%$_$#^#"]"!\! [ZYXWVUTSRQPONML K  J  I  H  G FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsr -RM H C > 9 4/*|%w rmhc TsQe!msMfSdLIAvklSSAnci:localhost:8800$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4TrQe!msMfSdLIAvklSSAnci:localhost:8800$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gTqQe!msMfSdLIAvklSSAnci:localhost:8800$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJATpQe!msMfSdLIAvklSSAnci:localhost:8800$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4ToQe!msMfSdLIAvklSSAnci:localhost:8800$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4TnQe!msMfSdLIAvklSSAnci:localhost:8800$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUTmQe!msMfSdLIAvklSSAnci:localhost:8800$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUTlQe!msMfSdLIAvklSSAnci:localhost:8800$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssTkQe!msMfSdLIAvklSSAnci:localhost:8800$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMTjQe!msMfSdLIAvklSSAnci:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQTiQe!msMfSdLIAvklSSAnci:localhost:8800$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8oThQe!GgUNbVXspVTpOlaHBl:localhost:8800$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUTgQe!GgUNbVXspVTpOlaHBl:localhost:8800$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkTfQe!GgUNbVXspVTpOlaHBl:localhost:8800$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0TeQe!GgUNbVXspVTpOlaHBl:localhost:8800$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8QTdQe!GgUNbVXspVTpOlaHBl:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-ETcQe!GgUNbVXspVTpOlaHBl:localhost:8800$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-KnlsTbQe!eKrOqiOabJcMgIJjwC:localhost:8800$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUTaQe!eKrOqiOabJcMgIJjwC:localhost:8800$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQT`Qe!eKrOqiOabJcMgIJjwC:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8T_Qe!eKrOqiOabJcMgIJjwC:localhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIT^Qe!eKrOqiOabJcMgIJjwC:localhost:8800$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduoT]Qe!eKrOqiOabJcMgIJjwC:localhost:8800$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggT\Qe!eKrOqiOabJcMgIJjwC:localhost:8800$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sT[Qe!eKrOqiOabJcMgIJjwC:localhost:8800$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTETZQe!eKrOqiOabJcMgIJjwC:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-ATYQe!eKrOqiOabJcMgIJjwC:localhost:8800$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4TXQe!vVmSdclwPIqYDbnmPn:localhost:8800$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9TsTWQe!vVmSdclwPIqYDbnmPn:localhost:8800$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8TVQe!vVmSdclwPIqYDbnmPn:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYTUQe!vVmSdclwPIqYDbnmPn:localhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUTTQe!vVmSdclwPIqYDbnmPn:localhost:8800$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgTSQe!vVmSdclwPIqYDbnmPn:localhost:8800$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYTRQe!vVmSdclwPIqYDbnmPn:localhost:8800$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQTQQe!vVmSdclwPIqYDbnmPn:localhost:8800$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtoTPQe!vVmSdclwPIqYDbnmPn:localhost:8800$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wTOQe!vVmSdclwPIqYDbnmPn:localhost:8800$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9ATNQe!edbUkYJIZBNOiTuLJs:localhost:8800$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRkTMQe!edbUkYJIZBNOiTuLJs:localhost:8800$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3QTLQe!edbUkYJIZBNOiTuLJs:localhost:8800$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoETKQe!edbUkYJIZBNOiTuLJs:localhost:8800$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4TJQe!edbUkYJIZBNOiTuLJs:localhost:8800$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wTIQe!edbUkYJIZBNOiTuLJs:localhost:8800$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_oTHQe!edbUkYJIZBNOiTuLJs:localhost:8800$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQTGQe!edbUkYJIZBNOiTuLJs:localhost:8800$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28  GeQ_$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 456}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o"], "type": "m.room.history_visibility", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040666667, "hashes": {"sha256": "ZqY4O745JALIsyc6Y6fkdT0RctqWhydMEKUqYdXqc6o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RbbBYezqzi69cebY2nbmSonM+ibNK6E+eL4Chc9P6BxzphnQpEzABei+bdaHj1P3e5o5XvOruIunMI3fM95lDQ"}}, "unsigned": {"age_ts": 1570040666667}}sFeQ_u$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 455}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ"], "type": "m.room.join_rules", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040666124, "hashes": {"sha256": "BKSY7rp+CV8+GBq+7dlH0Zf8/Ugaro3JOG4U+M8wL8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iVFl98VsyBDqvPA0mPWXq/hF9UW+UFsiVd0nTGHAdX/OVHsUUxjVlbTxTBnNbq5GOW/pxxp6DgQJTha+/LmRAw"}}, "unsigned": {"age_ts": 1570040666124}}EeQ_9$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 454}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28"], "type": "m.room.canonical_alias", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-12:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040665524, "hashes": {"sha256": "fA+0mZmYX9gYOPy0TQiBXlBRUHrPWzyLYJ92n7Fq0Qs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FutAf9ACHlde3h1jVLX5TkGfzi9aVqfHvb55Nt09ibwYpJR7l/My0tGus5zauYMuG+88mKyJl+TyB05Ew92NCw"}}, "unsigned": {"age_ts": 1570040665524}}jDeQ_c$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 453}{"auth_events": ["$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "type": "m.room.power_levels", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040664782, "hashes": {"sha256": "Xo/nmER670GvC/f4g+hqYOtofZafGJe8CxBONkdiEb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c3u096a+HFcOTk4mJZXj/3G0XWDQmPyj2G0LEaoY5L4Sxd83tDK299Kh+qZGNGPWeNn/RZ1zESJ1jsOeLgYfBg"}}, "unsigned": {"age_ts": 1570040664782}} 'XFoDFsHN# H q P # N u J so  % { w L ! qDT)}RsJ!mB yyqV*Q!LazKtcHZriKzCvvGwV:localhost:8800 < Q*Q!LazKtcHZriKzCvvGwV:localhost:8800 ; P*Q!LazKtcHZriKzCvvGwV:localhost:8800 : O*Q!LazKtcHZriKzCvvGwV:localhost:8800 9 N*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 g |*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 f {*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e z*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d y*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 c x*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KxhGcTbEWmtgGNpdox:localhost:8800jj*Q!KxhGcTbEWmtgGNpdox:localhost:8800ii*Q!KxhGcTbEWmtgGNpdox:localhost:8800hh*Q!KxhGcTbEWmtgGNpdox:localhost:8800gg*Q!KxhGcTbEWmtgGNpdox:localhost:8800ff*Q!KdOYYnOuwAyQzqwUki:localhost:8800 *Q!KdOYYnOuwAyQzqwUki:localhost:8800  s*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800 *Q!KdOYYnOuwAyQzqwUki:localhost:8800 *Q!LvARVIpJZeRQxbKefX:localhost:8800pv*Q!LvARVIpJZeRQxbKefX:localhost:8800ou(Q!LaLcEGFLpjdlYlYKGC:localhost:8800#"(Q!LaLcEGFLpjdlYlYKGC:localhost:8800"!(Q!LaLcEGFLpjdlYlYKGC:localhost:8800! (Q!LaLcEGFLpjdlYlYKGC:localhost:8800 (Q!LaLcEGFLpjdlYlYKGC:localhost:8800(Q!LaLcEGFLpjdlYlYKGC:localhost:8800(Q!LaLcEGFLpjdlYlYKGC:localhost:8800*Q!KxhGcTbEWmtgGNpdox:localhost:8800lm*Q!KxhGcTbEWmtgGNpdox:localhost:8800kl*Q!KxhGcTbEWmtgGNpdox:localhost:8800kk*Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KcXNWNfbLcYsBKZHIp:localhost:8800 h }*Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KdOYYnOuwAyQzqwUki:localhost:8800*Q!KeqmSjifajNKxtgqhj:localhost:8800#)*Q!KeqmSjifajNKxtgqhj:localhost:8800"(*Q!KeqmSjifajNKxtgqhj:localhost:8800!*Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KeqmSjifajNKxtgqhj:localhost:8800 *Q!KeqmSjifajNKxtgqhj:localhost:8800*Q!KeqmSjifajNKxtgqhj:localhost:8800*Q!KxhGcTbEWmtgGNpdox:localhost:8800ee*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KmuRTfGFgJdgIDAgIW:localhost:8800*Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800 *Q!LazKtcHZriKzCvvGwV:localhost:8800 A U*Q!LazKtcHZriKzCvvGwV:localhost:8800 @ T*Q!LazKtcHZriKzCvvGwV:localhost:8800 > S*Q!LazKtcHZriKzCvvGwV:localhost:8800 = R*Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KeBlWUQiLYUoILKkTB:localhost:8800  *Q!KetCYFxrTxawNOGnOf:localhost:8800 *Q!KeqmSjifajNKxtgqhj:localhost:8800*Q!KeBlWUQiLYUoILKkTB:localhost:8800*Q!KeBlWUQiLYUoILKkTB:localhost:8800+*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!KetCYFxrTxawNOGnOf:localhost:8800*Q!KetCYFxrTxawNOGnOf:localhost:8800 a} { y w u sqomkigeca~$eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~#eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~"eeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~!eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~ eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~ eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800~eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800 ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  z t n h b \ V P J D > 8 2 , &     x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xp~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!        ]ZJeQ_C$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 459}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE"], "type": "m.room.power_levels", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "invite": 0, "ban": 50, "redact": 50}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040668928, "hashes": {"sha256": "MV8T0xRo5sdjl9y7qlrZhvuqdnXeU8irQz2qAQXxYto"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BNw+u2vVAkM2Wvs2IgjvfoQYZ1wJANGWQRQfFpcnJD/pNNuNR1MPolS57ZPwZjHIBqYhIVeyY4NRH5MwV1f9AQ"}}, "unsigned": {"age_ts": 1570040668928, "replaces_state": "$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28"}}UIeQ_9$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 141, "stream_ordering": 458}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o"], "prev_events": ["$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4"], "type": "m.room.member", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040668192, "hashes": {"sha256": "wRpPveu7RLsklfnfB8RoLi9ENPdTTlg2E9bJ7BJJATU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0V/QAE01rk0ynXFjbanEkmhp+OM2uxqxCRqZhcnu1oz/XXjJ4XXXVyQLi977bDvnZZRXHe9QGB1KtDiPTqTUDA"}}, "unsigned": {"age_ts": 1570040668192}}HeQ_M$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 457}{"auth_events": ["$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w"], "type": "m.room.aliases", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-12:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040667515, "hashes": {"sha256": "lvNf2gOvFTVF8BRiSVTkaeb57/uhpRtxXgNscJNWjZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1U+kxb52sKf6fk8YZuwf2pkHrB9GFWD08n1ywYlUNjIHEV3VW9GBQePIA2yJwn5vExyCRgBu9VsXIITWI+mfAA"}}, "unsigned": {"age_ts": 1570040667515}} B\ f  k  n v018Ba e'Q  ]$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knlsm.room.create!GgUNbVXspVTpOlaHBl:localhost:8800mm@anon-20191002_181700-114:localhost:8800&`e3Q ] $NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUm.room.power_levels!eKrOqiOabJcMgIJjwC:localhost:8800 mm@anon-20191002_181700-112:localhost:8800&_e3Q ] $Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQm.room.power_levels!eKrOqiOabJcMgIJjwC:localhost:8800 m^m@anon-20191002_181700-112:localhost:8800 ^e'Q ]$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8m.room.member!eKrOqiOabJcMgIJjwC:localhost:8800mme@anon-20191002_181700-113:localhost:8800!]e)Q ]$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIm.room.aliases!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800,\e?Q ]$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduom.room.history_visibility!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800$[e/Q ]$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggm.room.join_rules!eKrOqiOabJcMgIJjwC:localhost:8800mJm@anon-20191002_181700-112:localhost:8800)Ze9Q ]$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8sm.room.canonical_alias!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800&Ye3Q ]$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTEm.room.power_levels!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800 Xe'Q ]$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Am.room.member!eKrOqiOabJcMgIJjwC:localhost:8800mmU@anon-20191002_181700-112:localhost:8800W e'Q  ]$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4m.room.create!eKrOqiOabJcMgIJjwC:localhost:8800mm@anon-20191002_181700-112:localhost:8800&Ve3Q ] $HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tsm.room.power_levels!vVmSdclwPIqYDbnmPn:localhost:8800 mmN@anon-20191002_181700-112:localhost:8800&Ue3Q ] $ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8m.room.power_levels!vVmSdclwPIqYDbnmPn:localhost:8800 mHm@anon-20191002_181700-112:localhost:8800 Te'Q ]$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYm.room.member!vVmSdclwPIqYDbnmPn:localhost:8800m~m~r@anon-20191002_181700-113:localhost:8800!Se)Q ]$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUm.room.aliases!vVmSdclwPIqYDbnmPn:localhost:8800mzm{@anon-20191002_181700-112:localhost:8800,Re?Q ]$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgm.room.history_visibility!vVmSdclwPIqYDbnmPn:localhost:8800mv|mx@anon-20191002_181700-112:localhost:8800$Qe/Q ]$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYm.room.join_rules!vVmSdclwPIqYDbnmPn:localhost:8800mtmt@anon-20191002_181700-112:localhost:8800)Pe9Q ]$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQm.room.canonical_alias!vVmSdclwPIqYDbnmPn:localhost:8800mpmq@anon-20191002_181700-112:localhost:8800&Oe3Q ]$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtom.room.power_levels!vVmSdclwPIqYDbnmPn:localhost:8800mn'moD@anon-20191002_181700-112:localhost:8800 Ne'Q ]$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wm.room.member!vVmSdclwPIqYDbnmPn:localhost:8800mkmlW@anon-20191002_181700-112:localhost:8800M e'Q  ]$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Am.room.create!vVmSdclwPIqYDbnmPn:localhost:8800mi mi@anon-20191002_181700-112:localhost:8800&Le3Q ] $aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRkm.room.power_levels!edbUkYJIZBNOiTuLJs:localhost:8800 me`me@anon-20191002_181700-112:localhost:8800&Ke3Q ] $gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Qm.room.power_levels!edbUkYJIZBNOiTuLJs:localhost:8800 mcmcs@anon-20191002_181700-112:localhost:8800 Je'Q ]$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEm.room.member!edbUkYJIZBNOiTuLJs:localhost:8800m` m`{@anon-20191002_181700-113:localhost:8800 l3f!NeKX ^  D D m}c) 6 Y5(<7^Q']!fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-538:localhost:8800aEQ))!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.aliaseslocalhost:8800^<Q3 !fGkUEndqGrieltwbCh:localhost:8800m.room.power_levels^?Q9 !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.canonical_alias[9Q- !fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstoneBQ? !fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibility:Q/ !fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rules<Q3 !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels^Q']!fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:88006Q' !fdEymmlcUvjgshvVyl:localhost:8800m.room.create^Q']!fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-537:localhost:8800]:Q/ !fGkUEndqGrieltwbCh:localhost:8800m.room.join_rules_BQ? !fGkUEndqGrieltwbCh:localhost:8800m.room.history_visibility`6Q' !fGkUEndqGrieltwbCh:localhost:8800m.room.create\<Q3 !eySSVuCclRpBDgwKIU:localhost:8800m.room.power_levelsj^Q']!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800iBQ? !fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility q:Q/ !fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules p<Q3 !fDISaqNBhlOwherxSt:localhost:8800m.room.power_levels o^Q']!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800 n6Q' !fDISaqNBhlOwherxSt:localhost:8800m.room.create m:Q/ !fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rulesRBQ? !fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibilityS6Q' !fsbkkRBZlUcBVVfMME:localhost:8800m.room.createOQ<Q3 !ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levelsq^Q']!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800t^Q']!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800p:Q/ !ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rulesrBQ? !ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibilitys6Q' !ffijTnPMbTrDXHqOXf:localhost:8800m.room.createo<Q3 !fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels^Q']!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800:Q/ !fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rulesBQ? !fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility 6Q' !fcdNYFWFyxmdpKAknc:localhost:8800m.room.create?Q9 !fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_aliasEQ))!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800<Q3 !fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels^Q']!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800:Q/ !fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rulesBQ? !fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibility6Q' !fOJLpnbtgKNxxVDquX:localhost:8800m.room.create?Q9 !fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_aliasEQ))!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800<Q3 !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.power_levels`4Q# !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.namea^Q']!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800_^Q']!fJXiUpbbOlLbHWmPgs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800Y:Q/ !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.join_rules\BQ? !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.history_visibility]6Q' !fJXiUpbbOlLbHWmPgs:localhost:8800m.room.createX Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1 e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1 e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1 e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc1 e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k1 e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1~e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81}e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01|e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1{e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1ze$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1ye$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1xe$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01we$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM1ve$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1ue$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1te$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY1se$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1re$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1qe$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1pe$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41oe$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1ne$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1me$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym41le$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41ke$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1je$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1ie$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1he$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1ge$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ1fe$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1ee$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1de$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1ce$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01be$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1ae$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1`e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1_e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1^e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1]e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81\e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI1[e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1Ze$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1Ye$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1Xe$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1We$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1Ve$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41Ue$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1Te$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81Se$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1Re$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1Qe$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1Pe$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1Oe$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1Ne$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1Me$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1Le$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1Ke$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1Je$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q N !5NjNeQ_c$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 463}{"auth_events": ["$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "type": "m.room.power_levels", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040671783, "hashes": {"sha256": "So09/hE4Iy+v/fSTmNA5NDPGxhcDxXS6//P9E31T+lI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TCum50FXfxY6N2nXdEcA4Bjrdf2y5WdsV3Fpc9+AfPvzTm9jiZg/1q9kZwVX2zl1XrhBJn+BM0o/xA4VOVIUAA"}}, "unsigned": {"age_ts": 1570040671783}}uMeQ_y$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 462}{"auth_events": ["$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A"], "prev_events": ["$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A"], "type": "m.room.member", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-112", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-112:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040671219, "hashes": {"sha256": "/iI8470/TkJhxKEsBm1aDKtYCioKNT/KEE7+W34x3Fs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SphkW7gHstBWiFqGl61t2c7wOKBpNBo4loql/+hsv03Oi85nMxG3cfhSTRAG38YuGmYbUi2dQLJKFp6igqVxCA"}}, "unsigned": {"age_ts": 1570040671219}}hLeQ__$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 461}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-112:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040670474, "hashes": {"sha256": "kYkJIyD48TOobqLJmPUL26fLgB7wN0vXJoDv5MT3NIw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/5wJr2YF0Ic0ar12mqJjGX2j3ErOG6nE/PFW5arpiAwWDEvRywlV8q9AAyzq5QW7uBygD8qUWQ/dL00q6DL7Bw"}}, "unsigned": {"age_ts": 1570040670474}}[KeQ_E$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800{"token_id": 140, "stream_ordering": 460}{"auth_events": ["$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q", "$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY", "$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks"], "prev_events": ["$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q"], "type": "m.room.power_levels", "room_id": "!edbUkYJIZBNOiTuLJs:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "events": {"m.room.canonical_alias": 50, "m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80}, "events_default": 0, "state_default": 50, "kick": 50, "users_default": 0, "ban": 25, "invite": 0, "redact": 50}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040669536, "hashes": {"sha256": "0s3LcMs+vdQFGi5ByIBT0n8F6HV6DaYcd10qj545Ths"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z1XTill+AZEH8KJJF2UXuEQufTUk+5+ue/1FIcYwcXU1DqKUb83Kwv1mZNHHzyUEtx7trnzrCM1ruAdYwk6HCg"}}, "unsigned": {"age_ts": 1570040669536, "replaces_state": "$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q"}} e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!             GcC# q8 S   o 6 R n6So6Rn 6  _ ?  R o6R f -8e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacsha256 8e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYssha256 r8e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAsha2568e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAsha256^8e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rosha2568e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUsha256$7e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQsha256f8e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Asha2568e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEsha256 8e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCAsha256 8e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMsha256j8e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4sha2568e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUsha2568e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfosha2567e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMsha2568e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14Isha2568e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeosha2568e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7ksha2568e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5Esha2568e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qsha256 8e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETssha256n8e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8sha256 :8e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPksha2568e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukiksha2568e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYsha2568e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAsha256d8e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiMsha256 G8e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIsha256*8e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYsha256;7e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1gsha2568e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRMsha2568e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Asha2567e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0sha2568e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9Asha2568e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Msha2568e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgsha25668e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3Msha2568e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0sha2568e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6csha2568e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYsha2568e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwsha256^8e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0sha256h8e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUsha256X8e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUsha2568e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMsha2568e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygsha256n8e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYsha2568e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4sha256T8e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUssha2563$79:localhost:42455sha256 3$78:localhost:42455sha256 3$77:localhost:42455sha256 3$76:localhost:42455sha256 3$75:localhost:42455sha256 3$74:localhost:42455sha256 3$73:localhost:42455sha256 3$72:localhost:42455sha256 3$71:localhost:42455sha256 3$70:localhost:42455sha256 3$69:localhost:42455sha256 8e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUsha2568e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwsha2568e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6osha2568e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMsha2563$68:localhost:42455sha256 3$67:localhost:42455sha256 3$66:localhost:42455sha256 3$65:localhost:42455sha256 *I$64_redaction2:localhost:42455sha256 8e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8sha256 W8e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0sha256 } " = BM)Q M?;FtgeQ3 $4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels eQ']$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800joinaeQ' $2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800m.room.createmeQ? $vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibilityeeQ/ $5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rulesgeQ3 $Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels eQ']$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800joinaeQ' $5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800m.room.create eQ']$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinp eQ))$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800m eQ? $uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibilitye eQ/ $7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rulesj eQ9 $_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_aliasgeQ3 $NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels eQ']$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaeQ' $ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800m.room.creategeQ3 $HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels eQ']$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joina~eQ' $6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800m.room.createg}eQ3 $aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:8800m.room.power_levels |eQ']$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinp{eQ))$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800m.room.aliaseslocalhost:8800mzeQ? $obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800m.room.history_visibilityeyeQ/ $ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800m.room.join_rulesjxeQ9 $Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800m.room.canonical_alias veQ']$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800joinaueQ' $4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800m.room.create`teQ% $Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topic eQ']$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800joinpeQ))$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800meQ? $LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibilityeeQ/ $izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rulesjeQ9 $pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_aliasgseQ3 $7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levels  ghReQ_M$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 467}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg"], "type": "m.room.aliases", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"aliases": ["#test-20191002_181700-13:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040675016, "hashes": {"sha256": "YRuEycEQDcPjQXHS6pYcWKvPVh6LYmXzqM+sLZnTjK0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GzpHEIYq8QVLHlpqJjY2N3/AqdqDcG7U3A5XPvlyG0U+lro9D6A8f0VX2sR7t8jH02o7CxcLlrn9BIOC/mgnDw"}}, "unsigned": {"age_ts": 1570040675016}}QeQ_$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 466}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY"], "type": "m.room.history_visibility", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040673916, "hashes": {"sha256": "M0OF45wtTI+qmYoirsLOfCOMpLyWidn8LLKPL/ZjPW4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l5jHtg2BR64UJu+4HepWA+/xrKZH5UwhnQOP7AdrJx5ucTqkGGrKNJtTW8Y/T9uUhIoU3oGt1sbP8a7e9ToeAw"}}, "unsigned": {"age_ts": 1570040673916}}sPeQ_u$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 465}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ"], "type": "m.room.join_rules", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040673300, "hashes": {"sha256": "T/pKwV2F+ac+NJFfJr/p1wktxz4rRQ56KJ1jDB6bSJk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4B95n2MvLPx/E1HgqxpD0y0ULopfIvcGnJmwyGwjaciI1vRtNHlc1QQwF7SB+u3FxWs7kCwnFHhg83apaRp8CQ"}}, "unsigned": {"age_ts": 1570040673300}}OeQ_9$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 464}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto"], "type": "m.room.canonical_alias", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"alias": "#test-20191002_181700-13:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040672408, "hashes": {"sha256": "vMKf3yuHEAFvweQS6U4ggoZmiLVLKdIMHDtzWaFbsAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p4uHSUAklyscTZwb70elmcja+tws1Ruzjet1OOyVSkoQ16+cQ7DvLAHd3110p2bku+tzUB3iHcTeW744rFuxDg"}}, "unsigned": {"age_ts": 1570040672408}} K | J  Z( P  n V $ 8< \ *p>BzHNT"tb0h6jEP22YF1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IF1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YO1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM31e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM21e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM11e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM01e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YN1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YM1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE 1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE 1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMb1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMa1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM`1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IH1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IG1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI1e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAq1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAp1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAo1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM_1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0S1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc '1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc &1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc %1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewX1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewW1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewV1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYv1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYu1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYt1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ 1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUF1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUE1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUD1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA^1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA]1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA\1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgL1e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI1e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI " F Q v % *R] Jrw,rYQ))e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8oXQ? e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibility$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0gWQ/ e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rules$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6UlVQ9 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_alias$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggiUQ3 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA TQ']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYcSQ' e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.create$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0oRQ? e!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibility$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUgQQ/ e!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rules$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssiPQ3 e!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM OQ']e!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQcNQ' e!msMfSdLIAvklSSAnci:localhost:8800m.room.create$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8ooMQ? e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibility$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkgLQ/ e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rules$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0iKQ3 e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q JQ']e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-EcIQ' e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.create$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-KnlsiHQ3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$p3RSvJIioUnzTwblOB7REnaofAZlyDRqAbdOrVDoJOIiGQ3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUiFQ3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ EQ']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8rDQ))e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIoCQ? e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibility$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduogBQ/ e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rules$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gglAQ9 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_alias$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8si@Q3 e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE ?Q']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Ac>Q' e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.create$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4i=Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$oz9r46kXP9Bvvaw9ic4EMGz4-VdNDgAs-aEjevRH60Qi<Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tsi;Q3 e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8 :Q']e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYr9Q))e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUo8Q? e!vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibility$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg #W, ; d  " T]!*Ra"?NWgBeQ3 $rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels AeQ']$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800a@eQ' $UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800m.room.create ?eQ']$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800p>eQ))$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800m=eQ? $qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibilitye<eQ/ $Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rulesj;eQ9 $LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_aliasg:eQ3 $cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels 9eQ']$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800a8eQ' $Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.createm7eQ? $neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibilitye6eQ/ $A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rulesg5eQ3 $4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels 4eQ']$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800a3eQ' $2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800m.room.createm2eQ? $vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibilitye1eQ/ $5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rulesg0eQ3 $Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels /eQ']$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800a.eQ' $5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800m.room.createg-eQ3 $NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levelsg,eQ3 $Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels +eQ']$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800p*eQ))$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800m)eQ? $uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibilitye(eQ/ $7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rulesj'eQ9 $_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_aliasg&eQ3 $NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels %eQ']$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800a$eQ' $ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800m.room.createg#eQ3 $HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levelsg"eQ3 $ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels !eQ']$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800p eQ))$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800 j 'Ij[UeQ_E$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 470}{"auth_events": ["$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8"], "type": "m.room.power_levels", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"events_default": 0, "kick": 25, "state_default": 50, "events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.canonical_alias": 50}, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040677360, "hashes": {"sha256": "pjtY19fZK+zAdchav1eHYYKkiyPYJBIEZ0gYnPpX/LU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Je+hFKEsBvi7L7eoT9Kf0vjJy8WAMqK+qd24gSyAruN+d6qBj6niqJxd9I+E7wRSR645rGA8QUQeDAwMRslLCA"}}, "unsigned": {"age_ts": 1570040677360, "replaces_state": "$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8"}}ZTeQ_C$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 140, "stream_ordering": 469}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w"], "prev_events": ["$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY"], "type": "m.room.power_levels", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users": {"@anon-20191002_181700-112:localhost:8800": 100}, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 80, "m.room.history_visibility": 80, "m.room.avatar": 50, "m.room.name": 50}, "redact": 50, "ban": 50, "invite": 0, "users_default": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040676680, "hashes": {"sha256": "nN5ksE+Cw78WktVTJnM6MED4T95upa4Mlmtis1VUuIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2bIlV5kmZEskpHWC5XeAvAY0aXf1o8yTTr+leNcSV8ml1pOV9+qJAZXdY+EfnKvcE1R4bqkZJ/rSXdxcHPqSAA"}}, "unsigned": {"age_ts": 1570040676680, "replaces_state": "$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto"}}USeQ_9$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800{"token_id": 141, "stream_ordering": 468}{"auth_events": ["$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto", "$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A", "$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY"], "prev_events": ["$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU"], "type": "m.room.member", "room_id": "!vVmSdclwPIqYDbnmPn:localhost:8800", "sender": "@anon-20191002_181700-113:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-113", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-113:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040675859, "hashes": {"sha256": "X7SBzSAuDvOwkxPcIcYzTASBML4ILEHZ+IE/bUBB0E0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ghj3d4/CPX3NuliOyBxXDHh40v19iPQqWSXNlDVoiigCzuzrIp+qzo4/fu/imaO8gE2s2XzlIaYRVjZaRAQpDg"}}, "unsigned": {"age_ts": 1570040675859}} a} { y w u sqomkigeca~CeeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800~BeeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~AeeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~@eeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~?eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800~>eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~=eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~<eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~;eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~:eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~9eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~8eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~7eeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~6eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~5eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~4eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~3eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~2eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~1eeQ$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE!eKrOqiOabJcMgIJjwC:localhost:8800~0eeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~/eeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~.eeQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800~-eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~,eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~+eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800~*eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800~)eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~(eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800~'eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800~&eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800~%eeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800 !h S \   Bhk Ce_h IQ']e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gdHQ' e !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg GQ']e !HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYsFQ))e !HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUpEQ? e!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibility$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQhDQ/ e!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rules$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYmCQ9 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_alias$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAjBQ3 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM AQ']e!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8d@Q' e!HcMGemcRrLnLprOJJR:localhost:8800m.room.create$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo ?Q']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEs>Q))e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8p=Q? e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibility$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0h<Q/ e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rules$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Um;Q9 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_alias$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggj:Q3 e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA 9Q']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYd8Q' e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.create$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0p7Q? e!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibility$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUh6Q/ e!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rules$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssj5Q3 e!msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM 4Q']e!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQd3Q' e!msMfSdLIAvklSSAnci:localhost:8800m.room.create$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8op2Q? e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibility$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkh1Q/ e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rules$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0j0Q3 e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q /Q']e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Ed.Q' e!GgUNbVXspVTpOlaHBl:localhost:8800m.room.create$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls-Q3 ee!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ,Q3 ee!eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE +Q']e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8s*Q))e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIp)Q? e!eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibility$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo )Ve:c>}R' { P % y N # 8g<q@i w L ! uFoDmBk J  s H  c*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d d*Q!KcXNWNfbLcYsBKZHIp:localhost:8800 c c*Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!JGhlAUflyNxErGGZZu:localhost:8800*Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!IlGJpjzrvvAFuwTAgo:localhost:8800 *Q!JnAKXOrlyisFUpgJPw:localhost:8800 ' '*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!JnAKXOrlyisFUpgJPw:localhost:8800  *Q!KIHYKMzkRDrJwiywwz:localhost:8800 : :*Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 9*Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 8*Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 7*Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 6*Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 5*Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 4*Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 3*Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 2*Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 1*Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 0*Q!KIHYKMzkRDrJwiywwz:localhost:8800 / /*Q!KIHYKMzkRDrJwiywwz:localhost:8800 . .*Q!KIHYKMzkRDrJwiywwz:localhost:8800 - -*Q!KIHYKMzkRDrJwiywwz:localhost:8800 , ,*Q!KIHYKMzkRDrJwiywwz:localhost:8800 + +*Q!KIHYKMzkRDrJwiywwz:localhost:8800 * **Q!KIHYKMzkRDrJwiywwz:localhost:8800 ) )*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!JiUawCFQnodcpssOfK:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!KXMUzALpMMMKqoQXUS:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JusxqeECtidaPlWqhp:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JZouHBRxCRbcxYJnbn:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JYLMokjOhZZlmbZvTf:localhost:8800*Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JPTwFTSDaBXwUTgitj:localhost:8800 *Q!JiUawCFQnodcpssOfK:localhost:8800 V*Q!JiUawCFQnodcpssOfK:localhost:8800 V W "CWh`eQ__$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 481}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-114:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040686471, "hashes": {"sha256": "NbhWT3aVTUMg4vfSa01WCBtqeAXoIW4sL6JANg4Avao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ahytYMHtmWAD/4qUT+TxbpLopsA9DfvidXwTLkP/Shl2f12pnCkCwyzScko/gpjvZMJ3Th+AlrrnRsfFdPdqDQ"}}, "unsigned": {"age_ts": 1570040686471}}[_eQ_E$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 480}{"auth_events": ["$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ"], "type": "m.room.power_levels", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "redact": 25, "invite": 0, "ban": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.canonical_alias": 50}}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040685263, "hashes": {"sha256": "UVfd2FrEaTUssb1+3ptzBDUctkIJTGthgFmrwJZZqfc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zqw4RGdDw4TZ7eSHcqdjxEVjojC2D2GOHfkNYZw3hPfiCvaUkbIk8UvrUpit5WJJ8ovy/nFXScMOm1ZWkc4GBw"}}, "unsigned": {"age_ts": 1570040685263, "replaces_state": "$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ"}}Z^eQ_C$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800{"token_id": 140, "stream_ordering": 479}{"auth_events": ["$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE", "$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4", "$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A"], "prev_events": ["$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8"], "type": "m.room.power_levels", "room_id": "!eKrOqiOabJcMgIJjwC:localhost:8800", "sender": "@anon-20191002_181700-112:localhost:8800", "content": {"users_default": 0, "ban": 50, "invite": 0, "redact": 50, "events": {"m.room.history_visibility": 80, "m.room.power_levels": 80, "m.room.name": 50, "m.room.avatar": 50, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-112:localhost:8800": 100}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040684638, "hashes": {"sha256": "HQ2UwQMIaA1F1itm4dFEugV4mJ4wIPPMngf9eBlnO2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LHlbBv5DJ8n0FLR4zARKEAEdLyfcqB2ctf0RrrvRiI6cCO/mMoERo8vO98qwnWg1oO0NmLg7mh52aJLs6xGOBQ"}}, "unsigned": {"age_ts": 1570040684638, "replaces_state": "$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE"}} a} { y w u sqomkigeca~beeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~aeeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~`eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~_eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~^eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~]eeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~\eeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~[eeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~ZeeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~YeeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~XeeQ$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~WeeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800~VeeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~UeeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800~TeeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800~SeeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~ReeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800~QeeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800~PeeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~OeeQ$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800~NeeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800~MeeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~LeeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800~KeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800~JeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~IeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800~HeeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800~GeeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~FeeQ$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800~EeeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800~DeeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800 ~z v r n j fb^ZVRNJFGeeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800FeeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800EeeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800DeeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800CeeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800BeeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800AeeQ$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800@eeQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800?eeQ$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800>eeQ$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800=eeQ$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800<eeQ$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800;eeQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800:eeQ$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:88009eeQ$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:88008eeQ$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:88007eeQ$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:88006eeQ$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:88005eeQ$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:88004eeQ$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:88003eeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:88002eeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:88001eeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:88000eeQ$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800/eeQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800.eeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800-eeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800,eeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800+eeQ$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800*eeQ$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ!eKrOqiOabJcMgIJjwC:localhost:8800  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48Cwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR3U3A3TUhYfnBhPV5YLH4KMDAyZnNpZ25hdHVyZSAvfXoK5cLowkEwFacOTLTOKnWnFL1vaxZ2eDRCM6QvbQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEIjZDNkYWZqQ3YjJipPNHUKMDAyZnNpZ25hdHVyZSBflUd8wD7C3GL0vPhtx6UvSnD7Yx4lQbVrhQjPOkB8Bwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlCYk5kMHZueFlwRS1SdS4KMDAyZnNpZ25hdHVyZSAQ9iRcidiF5PYiJqsN0NvRlFCfmgqacVu3ZWNUC6AdHgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0Ao -RM H C > 9 4/*|%w rmhc TsQe!CQKLQUpSYakhxVDltC:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9DisTrQe!CQKLQUpSYakhxVDltC:localhost:8800$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKsTqQe!GwXGurbyEmykmmHcHJ:localhost:8800$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYTpQe!VWYMJxEviBNDdJCuKT:localhost:8800$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsToQe!GwXGurbyEmykmmHcHJ:localhost:8800$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OoTnQe!VWYMJxEviBNDdJCuKT:localhost:8800$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYTmQe!GwXGurbyEmykmmHcHJ:localhost:8800$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgTlQe!VWYMJxEviBNDdJCuKT:localhost:8800$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0TkQe!GwXGurbyEmykmmHcHJ:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsTjQe!VWYMJxEviBNDdJCuKT:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsTiQe!GwXGurbyEmykmmHcHJ:localhost:8800$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQThQe!VWYMJxEviBNDdJCuKT:localhost:8800$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VATgQe!CgVBWWcRJoHEcwoLcq:localhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUTfQe!CgVBWWcRJoHEcwoLcq:localhost:8800$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4TeQe!CgVBWWcRJoHEcwoLcq:localhost:8800$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8ITdQe!CgVBWWcRJoHEcwoLcq:localhost:8800$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZATcQe!CgVBWWcRJoHEcwoLcq:localhost:8800$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMTbQe!CgVBWWcRJoHEcwoLcq:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gTaQe!CgVBWWcRJoHEcwoLcq:localhost:8800$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgT`Qe!HcMGemcRrLnLprOJJR:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYT_Qe!HcMGemcRrLnLprOJJR:localhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUT^Qe!HcMGemcRrLnLprOJJR:localhost:8800$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQT]Qe!HcMGemcRrLnLprOJJR:localhost:8800$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYT\Qe!HcMGemcRrLnLprOJJR:localhost:8800$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAT[Qe!HcMGemcRrLnLprOJJR:localhost:8800$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMTZQe!HcMGemcRrLnLprOJJR:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8TYQe!HcMGemcRrLnLprOJJR:localhost:8800$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExoTXQe!SyIWYOmcGiASNkPCTB:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnETWQe!SyIWYOmcGiASNkPCTB:localhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8TVQe!SyIWYOmcGiASNkPCTB:localhost:8800$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0TUQe!SyIWYOmcGiASNkPCTB:localhost:8800$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6UTTQe!SyIWYOmcGiASNkPCTB:localhost:8800$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggTSQe!SyIWYOmcGiASNkPCTB:localhost:8800$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LATRQe!SyIWYOmcGiASNkPCTB:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYTQQe!SyIWYOmcGiASNkPCTB:localhost:8800$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0TPQe!msMfSdLIAvklSSAnci:localhost:8800$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUTOQe!msMfSdLIAvklSSAnci:localhost:8800$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssTNQe!msMfSdLIAvklSSAnci:localhost:8800$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMTMQe!msMfSdLIAvklSSAnci:localhost:8800$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQTLQe!msMfSdLIAvklSSAnci:localhost:8800$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8oTKQe!GgUNbVXspVTpOlaHBl:localhost:8800$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkTJQe!GgUNbVXspVTpOlaHBl:localhost:8800$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0TIQe!GgUNbVXspVTpOlaHBl:localhost:8800$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8QTHQe!GgUNbVXspVTpOlaHBl:localhost:8800$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-ETGQe!GgUNbVXspVTpOlaHBl:localhost:8800$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls  deQ_$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 485}{"auth_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q", "$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0"], "type": "m.room.history_visibility", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040689776, "hashes": {"sha256": "UmaFFR3FVLE4yA6IA8vgfpg5/Pq6wm/kwoeqwELejus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BRxo+KOX/CLxgFlANg0jHo3LCaWtA6ic0UqOGfdDfoeNEbbkQNtgXO5eTUzKULJRo9BuBHSJywT/jxP9AmLGBA"}}, "unsigned": {"age_ts": 1570040689776}}sceQ_u$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 484}{"auth_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q", "$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q"], "type": "m.room.join_rules", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040689175, "hashes": {"sha256": "nFREtLDYwAuA7dQcsmey2eG68I9t+z22rVmGcxJb7ss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HyomZR1gFSV9fDoKgABmVNJmzgN51lvxB8rRSXwYwcgmW1QtKPVyJnrE21LbZm8TliTVS3hhQktuELrRJLEbCg"}}, "unsigned": {"age_ts": 1570040689175}}jbeQ_c$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 483}{"auth_events": ["$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "type": "m.room.power_levels", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"users": {"@anon-20191002_181700-114:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040687627, "hashes": {"sha256": "jrymdHNoitiAj/yWt9hw0p2e1CVClmry8cruET7oXYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Px8u18+1/xRMzVwLny8r1u+HCFvzb82pXI20CosslUGq5WSF05BZqqgUPYZhrsxvXtlT8z3Y0UnGbL5A0TXpAw"}}, "unsigned": {"age_ts": 1570040687627}}uaeQ_y$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "stream_ordering": 482}{"auth_events": ["$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls"], "prev_events": ["$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls"], "type": "m.room.member", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-114", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-114:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040687080, "hashes": {"sha256": "XAY23LYeODRuzeuWFPZc3LY35yEfxYFddQSkYtwwl+I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GsMc70wl+swdIkwljfQGieiEBQgUKAnLrK9YEjwFcelyeYt36U6gJRK06X3+EvFxCk3x77ugqasdtbiKDCtgBw"}}, "unsigned": {"age_ts": 1570040687080}} j\ Z  o  m#~4EV jy e'Q  ]$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0m.room.create!SyIWYOmcGiASNkPCTB:localhost:8800mm7@anon-20191002_181700-116:localhost:8800!xe)Q ]$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMm.room.message!msMfSdLIAvklSSAnci:localhost:8800mmI@anon-20191002_181700-115:localhost:8800!we)Q ]$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Qm.room.message!msMfSdLIAvklSSAnci:localhost:8800mm@anon-20191002_181700-115:localhost:8800!ve)Q ]$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFIm.room.message!msMfSdLIAvklSSAnci:localhost:8800m(m2@anon-20191002_181700-115:localhost:8800!ue)Q ]$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYm.room.message!msMfSdLIAvklSSAnci:localhost:8800mݦmݯ@anon-20191002_181700-115:localhost:8800!te)Q ]$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQm.room.message!msMfSdLIAvklSSAnci:localhost:8800mm@anon-20191002_181700-115:localhost:8800!se)Q ] $qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Ym.room.message!msMfSdLIAvklSSAnci:localhost:8800 m2m8@anon-20191002_181700-115:localhost:8800!re)Q ] $FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDom.room.message!msMfSdLIAvklSSAnci:localhost:8800 meml@anon-20191002_181700-115:localhost:8800!qe)Q ] $PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4m.room.message!msMfSdLIAvklSSAnci:localhost:8800 m?mE@anon-20191002_181700-115:localhost:8800!pe)Q ] $eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gm.room.message!msMfSdLIAvklSSAnci:localhost:8800 mm@anon-20191002_181700-115:localhost:8800!oe)Q ] $Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJAm.room.message!msMfSdLIAvklSSAnci:localhost:8800 mymс@anon-20191002_181700-115:localhost:8800!ne)Q ]$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4m.room.message!msMfSdLIAvklSSAnci:localhost:8800mBmJ@anon-20191002_181700-115:localhost:8800!me)Q ]$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4m.room.message!msMfSdLIAvklSSAnci:localhost:8800mm@anon-20191002_181700-115:localhost:8800!le)Q ]$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUm.room.message!msMfSdLIAvklSSAnci:localhost:8800mZma@anon-20191002_181700-115:localhost:8800,ke?Q ]$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUm.room.history_visibility!msMfSdLIAvklSSAnci:localhost:8800mcm@anon-20191002_181700-115:localhost:8800$je/Q ]$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcssm.room.join_rules!msMfSdLIAvklSSAnci:localhost:8800m!m @anon-20191002_181700-115:localhost:8800&ie3Q ]$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpMm.room.power_levels!msMfSdLIAvklSSAnci:localhost:8800m,m@anon-20191002_181700-115:localhost:8800 he'Q ]$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQm.room.member!msMfSdLIAvklSSAnci:localhost:8800mmt@anon-20191002_181700-115:localhost:8800g e'Q  ]$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8om.room.create!msMfSdLIAvklSSAnci:localhost:8800mm'@anon-20191002_181700-115:localhost:8800!fe)Q ]$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUm.room.message!GgUNbVXspVTpOlaHBl:localhost:8800mm"@anon-20191002_181700-114:localhost:8800,ee?Q ]$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolkm.room.history_visibility!GgUNbVXspVTpOlaHBl:localhost:8800mpmD@anon-20191002_181700-114:localhost:8800$de/Q ]$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0m.room.join_rules!GgUNbVXspVTpOlaHBl:localhost:8800mm@anon-20191002_181700-114:localhost:8800&ce3Q ]$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Qm.room.power_levels!GgUNbVXspVTpOlaHBl:localhost:8800m m @anon-20191002_181700-114:localhost:8800 be'Q ]$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Em.room.member!GgUNbVXspVTpOlaHBl:localhost:8800mm>@anon-20191002_181700-114:localhost:8800 ~}wqke_YSMGA;5/)# {uoic]WQKE?93-'!   y s m g a [ U O I B ; 4 - &     | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $   |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tl~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONML~K}J|I{HzGyFxEwDvCuBtAs@r?q>p=o<n;m:l9k8j7i6h5g4f3e2d1c0b/a.`-_,^+]*\)[(Z'Y&X%W$V#U"T!S RQPONMLKJIHGFEDCBA@ ? > = < ;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvut~s}r|q{pzoynxmvluktjsirhpgofnemdlcjbiah`g_f^d]c\b[aZ`Y^X]W\V[UZTYSXRWQVPUOTNSMRLQKPJOINHMGLFKEJDICHBGAF@E?D>C=B<A;@:?9>8=7<6;5:4938271604/3.2-1,0+.*-),(+'*&(%'$&#%"$!" !         e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543~2}1|0{/z.y-x,w+v*u)t(s'r&q%p$o#n"m!l kjihgfedcba`_^]\[ZY X W V U TSRQPONMLKJIHGFEDCBA@?>=<;:9743210/.-,+*&%$#"!    3210/.-,+*)('&%$#"!        c wjheQ_c$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 489}{"auth_events": ["$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "type": "m.room.power_levels", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"users": {"@anon-20191002_181700-115:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040693036, "hashes": {"sha256": "O4YfoSFAUjKgLjLwFZvsHp4SiQ79RY4kLyPvFQJoges"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vcEPmODb/FDrZpJVZYkaMaze7uoHeCQ79LCK72o4gggpD83YnLRuCxFS/ZsibXM3yBuYnmhDVHEfRJ0m28m8Cw"}}, "unsigned": {"age_ts": 1570040693036}}ugeQ_y$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 488}{"auth_events": ["$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o"], "prev_events": ["$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o"], "type": "m.room.member", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-115", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-115:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040692507, "hashes": {"sha256": "VlHlXr4eX8MtQjN2VmsyIXsdrn8ea+w0boOrg0x2KN0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iBd2TvLd+ATNT8Gu8l64QG+2Oy9MDfaLtY9NaZjHec85s2wElDA12ALVTAHnuoNGMf+9E0YxuFxEyor43KhmDA"}}, "unsigned": {"age_ts": 1570040692507}}hfeQ__$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 487}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-115:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040691920, "hashes": {"sha256": "LUZjhfZPxh1wEHor4K7Cvl1priKnbOSPqQELzV8Lwcs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6Xhy8x0m/NEVW92FM8X1skxSYyHVG+45Q8rFEEKM7X+eUOVmcheAg4T9iN0t+AglyCU9ZfTTB/EUHWmOvpsMCA"}}, "unsigned": {"age_ts": 1570040691920}}eeQ!$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800{"token_id": 142, "txn_id": "42", "stream_ordering": 486}{"auth_events": ["$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q", "$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls", "$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E"], "prev_events": ["$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk"], "type": "m.room.message", "room_id": "!GgUNbVXspVTpOlaHBl:localhost:8800", "sender": "@anon-20191002_181700-114:localhost:8800", "content": {"msgtype": "m.message", "body": "Room message for 90jira-SYT-1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040690972, "hashes": {"sha256": "W5hPX0DmS9GXJrKnp18b7U2L6f83VbyTvqRDolHEyYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/69JVSGLlbRFJv6CeD/N3mZ38m63u9MwVq68JVAuRWx1jQKS6L+DxAyzrfJq/CTDKrVrRlUa4yU0z5PS5JlLBw"}}, "unsigned": {"age_ts": 1570040690972}} 6Rv1b N  : k & W  3dP <m(YCn'R }E6]=@anon-20191002_181700-110:localhost:8800anon-20191002_181700-110E5]=@anon-20191002_181700-109:localhost:8800anon-20191002_181700-109E4]=@anon-20191002_181700-108:localhost:8800anon-20191002_181700-108E3]=@anon-20191002_181700-107:localhost:8800anon-20191002_181700-107E2]=@anon-20191002_181700-106:localhost:8800anon-20191002_181700-106E1]=@anon-20191002_181700-104:localhost:8800anon-20191002_181700-104E0]=@anon-20191002_181700-102:localhost:8800anon-20191002_181700-102E/]=@anon-20191002_181700-101:localhost:8800anon-20191002_181700-101C.[;@anon-20191002_181700-99:localhost:8800anon-20191002_181700-99C-[;@anon-20191002_181700-97:localhost:8800anon-20191002_181700-97C,[;@anon-20191002_181700-95:localhost:8800anon-20191002_181700-95C+[;@anon-20191002_181700-93:localhost:8800anon-20191002_181700-93C*[;@anon-20191002_181700-91:localhost:8800anon-20191002_181700-91C)[;@anon-20191002_181700-89:localhost:8800anon-20191002_181700-89C([;@anon-20191002_181700-87:localhost:8800anon-20191002_181700-87C'[;@anon-20191002_181700-86:localhost:8800anon-20191002_181700-86C&[;@anon-20191002_181700-85:localhost:8800anon-20191002_181700-85C%[;@anon-20191002_181700-84:localhost:8800anon-20191002_181700-84C$[;@anon-20191002_181700-83:localhost:8800anon-20191002_181700-83C#[;@anon-20191002_181700-82:localhost:8800anon-20191002_181700-82C"[;@anon-20191002_181700-81:localhost:8800anon-20191002_181700-81C![;@anon-20191002_181700-79:localhost:8800anon-20191002_181700-79C [;@anon-20191002_181700-77:localhost:8800anon-20191002_181700-77C[;@anon-20191002_181700-75:localhost:8800anon-20191002_181700-75C[;@anon-20191002_181700-74:localhost:8800anon-20191002_181700-74C[;@anon-20191002_181700-71:localhost:8800anon-20191002_181700-71C[;@anon-20191002_181700-72:localhost:8829anon-20191002_181700-72C[;@anon-20191002_181700-70:localhost:8800anon-20191002_181700-70C[;@anon-20191002_181700-68:localhost:8800anon-20191002_181700-68O[3-@anon-20191002_181700-66:localhost:8829My remote name heremxc://foo/remoteE[%'@anon-20191002_181700-67:localhost:8800My name heremxc://foo/barC[;@anon-20191002_181700-64:localhost:8800anon-20191002_181700-64E[%'@anon-20191002_181700-65:localhost:8800My name heremxc://foo/barC[;@anon-20191002_181700-63:localhost:8800anon-20191002_181700-63C[;@anon-20191002_181700-62:localhost:8800anon-20191002_181700-62C[;@anon-20191002_181700-61:localhost:8800anon-20191002_181700-61C[;@anon-20191002_181700-39:localhost:8800anon-20191002_181700-39C[;@anon-20191002_181700-38:localhost:8800anon-20191002_181700-38C[;@anon-20191002_181700-37:localhost:8800anon-20191002_181700-37C[;@anon-20191002_181700-36:localhost:8800anon-20191002_181700-36C[;@anon-20191002_181700-35:localhost:8800anon-20191002_181700-35C [;@anon-20191002_181700-34:localhost:8800anon-20191002_181700-34C [;@anon-20191002_181700-33:localhost:8800anon-20191002_181700-33C [;@anon-20191002_181700-32:localhost:8800anon-20191002_181700-32C [;@anon-20191002_181700-31:localhost:8800anon-20191002_181700-31C [;@anon-20191002_181700-27:localhost:8800anon-20191002_181700-27C[;@anon-20191002_181700-26:localhost:8800anon-20191002_181700-26C[;@anon-20191002_181700-25:localhost:8800anon-20191002_181700-25C[;@anon-20191002_181700-24:localhost:8800anon-20191002_181700-24C[;@anon-20191002_181700-22:localhost:8800anon-20191002_181700-22C[;@anon-20191002_181700-23:localhost:8800anon-20191002_181700-23C[;@anon-20191002_181700-21:localhost:8800anon-20191002_181700-21C[;@anon-20191002_181700-20:localhost:8800anon-20191002_181700-20C[;@anon-20191002_181700-16:localhost:8800anon-20191002_181700-16 /Br+V : m&Q |5`Do( x 1 = O  z Al%G9E]]=@anon-20191002_181700-160:localhost:8800anon-20191002_181700-160E\]=@anon-20191002_181700-158:localhost:8800anon-20191002_181700-158E[]=@anon-20191002_181700-156:localhost:8800anon-20191002_181700-156EZ]=@anon-20191002_181700-154:localhost:8800anon-20191002_181700-154EY]=@anon-20191002_181700-153:localhost:8800anon-20191002_181700-153EX]=@anon-20191002_181700-152:localhost:8800anon-20191002_181700-152EV]=@anon-20191002_181700-150:localhost:8800anon-20191002_181700-150EW]=@anon-20191002_181700-151:localhost:8800anon-20191002_181700-151ET]=@anon-20191002_181700-147:localhost:8829anon-20191002_181700-147ES]=@anon-20191002_181700-148:localhost:8829anon-20191002_181700-148ER]=@anon-20191002_181700-146:localhost:8800anon-20191002_181700-146EQ]=@anon-20191002_181700-144:localhost:8800anon-20191002_181700-144EP]=@anon-20191002_181700-143:localhost:8800anon-20191002_181700-143EO]=@anon-20191002_181700-141:localhost:8800anon-20191002_181700-141EN]=@anon-20191002_181700-140:localhost:8800anon-20191002_181700-140EM]=@anon-20191002_181700-139:localhost:8829anon-20191002_181700-139EL]=@anon-20191002_181700-138:localhost:8800anon-20191002_181700-138EK]=@anon-20191002_181700-137:localhost:8800anon-20191002_181700-137EJ]=@anon-20191002_181700-136:localhost:8800anon-20191002_181700-136EI]=@anon-20191002_181700-134:localhost:8800anon-20191002_181700-134EH]=@anon-20191002_181700-132:localhost:8800anon-20191002_181700-132EG]=@anon-20191002_181700-131:localhost:8800anon-20191002_181700-131EF]=@anon-20191002_181700-129:localhost:8800anon-20191002_181700-129E9]=@anon-20191002_181700-114:localhost:8800anon-20191002_181700-114E8]=@anon-20191002_181700-113:localhost:8800anon-20191002_181700-113E7]=@anon-20191002_181700-112:localhost:8800anon-20191002_181700-112Eg]=@anon-20191002_181700-167:localhost:8800anon-20191002_181700-167Ef]=@anon-20191002_181700-166:localhost:8829anon-20191002_181700-166Ee]=@anon-20191002_181700-165:localhost:8800anon-20191002_181700-165d/@6:localhost:8800creeperEc]=@anon-20191002_181700-164:localhost:8800anon-20191002_181700-164Eb]=@anon-20191002_181700-163:localhost:8800anon-20191002_181700-163Ea]=@anon-20191002_181700-162:localhost:8800anon-20191002_181700-162`/@3:localhost:88003E_]=@anon-20191002_181700-161:localhost:8800anon-20191002_181700-161^/@2:localhost:88002EE]=@anon-20191002_181700-128:localhost:8800anon-20191002_181700-128EC]=@anon-20191002_181700-126:localhost:8800anon-20191002_181700-126EB]=@anon-20191002_181700-125:localhost:8800anon-20191002_181700-125EA]=@anon-20191002_181700-124:localhost:8800anon-20191002_181700-124E@]=@anon-20191002_181700-123:localhost:8800anon-20191002_181700-123E?]=@anon-20191002_181700-120:localhost:8800anon-20191002_181700-120E>]=@anon-20191002_181700-119:localhost:8800anon-20191002_181700-119E=]=@anon-20191002_181700-118:localhost:8800anon-20191002_181700-118E<]=@anon-20191002_181700-117:localhost:8800anon-20191002_181700-117E;]=@anon-20191002_181700-116:localhost:8800anon-20191002_181700-116E:]=@anon-20191002_181700-115:localhost:8800anon-20191002_181700-115  t leQ$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "44", "stream_ordering": 493}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040696275, "hashes": {"sha256": "7QbgyqakuVftck+gyfhlqzIYLYjDygw31bLAcvPSDsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JYuvbtjIm2Ydic6otoob5fwV0fiyKXyUmM0AHNO4pCk8YH5ZXJNSGlBhn8YBhOaVx1jFO6xiBFNbnSzF2GtxAw"}}, "unsigned": {"age_ts": 1570040696275}} keQ$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "43", "stream_ordering": 492}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 0", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040695898, "hashes": {"sha256": "3rLhbjulUXptak8GGSXyJxGv4CpvRFUDx3jglcNJDas"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SXZ8aI4nZQRePorx0iniVnDYkEVXkhAXwJdf6Rm7CGGjtFX7ybeXjOdJDANSQY+iyBoRYzNj8uFC2SrW0W5nBA"}}, "unsigned": {"age_ts": 1570040695898}}jeQ_$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 491}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss"], "type": "m.room.history_visibility", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040694627, "hashes": {"sha256": "M9v7JKr7wiZb/N0Lfav5o2y2TdprmEQMNPhoUGENAsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ll97nI19x9KmSr3Pbyp/rF+bMSZ++bvcbdPS3TPsRK9yK9dvs4LUqpTaNVwVyP5hAIOlVZmfiXiiGAi7HL+ABQ"}}, "unsigned": {"age_ts": 1570040694627}}sieQ_u$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "stream_ordering": 490}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM"], "type": "m.room.join_rules", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040693793, "hashes": {"sha256": "nuBnw8FPF8FVqQHO5brF8MpSMfXOPJxP4paITX0FUwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KoxVd5bQOeYTeRZEciV3MuDtWJYp1KKdybUsCFG5cEmr/NG+llggTgF3s2w7wJTc45JbvGvS6yjQWYj4I0uWCQ"}}, "unsigned": {"age_ts": 1570040693793}} ,NC 8 - { " p  e ZOD9.|#qf VeL$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQsha256GfF oUYLWVeL$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAsha2566s#&{&aM!'PVeL$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUsha256w|k\ЬYND$"!~۶bVeL$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4sha256DIP^"I$ɡQjcOFE/VeL$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8Isha256o2>I~4$t$3}pnÿ g#VeL$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAsha256>\a9mg]as 8`')UVeL$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMsha256BCIFɰO>./RۛH}1ރV eL$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gsha256^zCL/P$+lT)wxV eL$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgsha256 Z]-V>ϐ8XM3%Cf5 &XV eL$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcsha256A%jk<݊_Vu6qv'8 yF&GV eL$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4ksha256!f ~F>7x¹дb{V eL$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYsha256T'GEcT3T1fVeL$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcsha256Br;pA*$>>+ΦDh 흘^VeL$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ysha256ɈˑYa>%4pz cFVeL$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEsha2567ּV羱f+u]sOrbWqV~eL$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8sha256 >0&Xu|Ybͦwk* V}eL$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0sha256ZK p)w&WjV|eL$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Usha256*7&s ncue˷˵F}ǥV{eL$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggsha256-9._2UP|k =MVzeL$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAsha256qb4Oږ+d ^̺jWذVyeL$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYsha256gō},zۙi/ݱ&VxeL$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0sha256C3 =C[^ksn_qVweL$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMsha256@dtd*kؿ)<.RxĶ8#VveL$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Qsha256fDr!AڋRtkVueL$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFIsha256^ Nd`>oIn_.ؼ|RVteL$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYsha256Ы"~'p#抖DdVseL$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQsha256@ uPM^a"A]@v ?Я/4VreL$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Ysha256'ń[I4Yh޹ƁI骏tVqeL$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDosha256 k [*&2t[wKX96^,:VpeL$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4sha256=C5fSc&wk (LVoeL$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gsha256xC~ Er3Xp{VneL$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJAsha256 M3 &MX<&dq]%VmeL$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4sha256s;0ۥJ nVleL$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4sha256j~!L07A.5Z{M}[0ZnVkeL$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUsha256 XO|5n\]M33}AEVjeL$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUsha256i|&jnUb>uBbiql%VieL$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcsssha256yA'݄|bpHc r #S(3 \   ! Lity 4]hm3Sm:eQ? $bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibilitym9eQ? $wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibilitye8eQ/ $RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rulese7eQ/ $-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rulesg6eQ3 $s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levelsg5eQ3 $DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels 4eQ']$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800join 3eQ']$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800joina2eQ' $46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800m.room.createa1eQ' $NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800m.room.createp0eQ))$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800m/eQ? $REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibilitye.eQ/ $bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rulesj-eQ9 $FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_aliasg,eQ3 $Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels +eQ']$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800joina*eQ' $DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create )eQ']$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800joinp(eQ))$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800m'eQ? $BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibilitye&eQ/ $lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rulesj%eQ9 $ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_aliasg$eQ3 $rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels #eQ']$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800joina"eQ' $UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800m.room.create !eQ']$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800joinp eQ))$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800meQ? $qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibilityeeQ/ $Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rulesjeQ9 $LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_aliasgeQ3 $cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels eQ']$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800joinaeQ' $Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800m.room.createmeQ? $neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibilityeeQ/ $A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800m.room.join_rules  sX peQ$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "48", "stream_ordering": 497}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040698175, "hashes": {"sha256": "/IKxPw1EppCz+VIDoNlaKz32xL3tyLLu/P+F4AnHaek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e+faJGGKwyJAs1NVFK/7uK8nZZZRVLXoJ8KJ7i5hfDSupFUD8FNPM1OMA36YB024FE2oteoZeLq3nfSYEzyDBA"}}, "unsigned": {"age_ts": 1570040698175}} oeQ$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "47", "stream_ordering": 496}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040697592, "hashes": {"sha256": "jdsO0wWuzWsQ4j2zaLHlLx6PJWq+5LPiFmKvfYGwdCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G408NhQ8lYq4a8Y5q/jiOsr9C6ePgjTRbO2/+RXV7XTafTGho94wMPukoMgjyXgTIWXqbX2I4ZCb+eihtXrDAQ"}}, "unsigned": {"age_ts": 1570040697592}} neQ$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "46", "stream_ordering": 495}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 3"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040697209, "hashes": {"sha256": "4ZNA04OCvimAAO+RFXJqkQxOfXxbLloZJlYNzC4UUww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/dLZ+VOZp2/Ir5RcrK+xSKr5P9vBT9EWQWvbVgIRWerJoghp9IpTG9XGx16IYxQ6oGk0x3Nq7zFTGHkoKoZfAg"}}, "unsigned": {"age_ts": 1570040697209}} meQ$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "45", "stream_ordering": 494}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040696642, "hashes": {"sha256": "eFBv39wQPF5FFeGxC06db0kd64xDbE9Q3O//RYTtMOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aI33r4dkBFVlxOTeIwn9YdNIKc3oRXFHAQvdy51z+hQkwNRIXfkY43+Rtq5qIO30TWhmvtHYDwy+yojarEh4Cg"}}, "unsigned": {"age_ts": 1570040696642}}  |t l  d4 \ T < LD,$ eeQ$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829ceeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800teeQ$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800VeeQ$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU!xXYMxashIZAUOTuGAJ:localhost:8800}eeQ$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800ȁeeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800 0eeQ$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800 ÁeeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800 beeQ$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800ZeeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE!eySSVuCclRpBDgwKIU:localhost:8800eeQ$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800ŁeeQ$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800 6eeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800ՁeeQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800 ƁeeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829aeeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800 %eeQ$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800 ; g qSghxeQ__$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 505}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-116:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040703208, "hashes": {"sha256": "7JLxh+hHgxeg3dGxoEs6c29Wl6ogeh4/326LnXLp+Xg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Boi7DRfadj4IDOeF5QWpwhScBe5ypWUSrGR7q87KBn/2CtAbyUkdwoulJ7sdmAxhiCBHzWU0eGzyedUr0vBMAA"}}, "unsigned": {"age_ts": 1570040703208}} weQ$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "55", "stream_ordering": 504}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 12"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040701919, "hashes": {"sha256": "o5hwxEyL7gLAVEJg63qP6chQEtIp2f9DsvNtJtbNXTc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2maH/3qKWSIBvYHLrh9xkr51gAsMprJZuuqnVo5appJrd0QqbNFFuzj0ijOvcoh9z24fgpo0wsWdFpuGWTNbAg"}}, "unsigned": {"age_ts": 1570040701919}} veQ$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "54", "stream_ordering": 503}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 11", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040701367, "hashes": {"sha256": "MVuGmqLF2/3EGt/KaYoELre5KP23I+Gr96LIpyW9/1I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MEyEVAOqVlPKEdeu99Wt8t/4AS+vdozjvsP/mOlndq5Z//U7LzlOpvXLSfWuUlQb5OFsQa1HUuyCsQJ24a6GCw"}}, "unsigned": {"age_ts": 1570040701367}} ueQ$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "53", "stream_ordering": 502}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040700968, "hashes": {"sha256": "fGNRfkcNasz1+R+voXBDNqlUe48YVGsC+kGoT4LSqGo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zVjtAHVfUJygD6fvi8ApOrwv6/RyO8oJSttpqlGJEIeEHYveiJdmzwS3lUb9rHdO8VIbniehwdWFI6ULBRJxAw"}}, "unsigned": {"age_ts": 1570040700968}} -RM H C > 9 4/*|%w rmhc T Qe!VWYMJxEviBNDdJCuKT:localhost:8800$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04MTQe!GwXGurbyEmykmmHcHJ:localhost:8800$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYTQe!VWYMJxEviBNDdJCuKT:localhost:8800$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsTQe!GwXGurbyEmykmmHcHJ:localhost:8800$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OoTQe!VWYMJxEviBNDdJCuKT:localhost:8800$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYTQe!GwXGurbyEmykmmHcHJ:localhost:8800$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgTQe!VWYMJxEviBNDdJCuKT:localhost:8800$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0TQe!GwXGurbyEmykmmHcHJ:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsTQe!VWYMJxEviBNDdJCuKT:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsTQe!GwXGurbyEmykmmHcHJ:localhost:8800$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQTQe!VWYMJxEviBNDdJCuKT:localhost:8800$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VATQe!CgVBWWcRJoHEcwoLcq:localhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUTQe!CgVBWWcRJoHEcwoLcq:localhost:8800$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4TQe!CgVBWWcRJoHEcwoLcq:localhost:8800$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8ITQe!CgVBWWcRJoHEcwoLcq:localhost:8800$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZATQe!CgVBWWcRJoHEcwoLcq:localhost:8800$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMTQe!CgVBWWcRJoHEcwoLcq:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gTQe !CgVBWWcRJoHEcwoLcq:localhost:8800$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgTQe !HcMGemcRrLnLprOJJR:localhost:8800$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcT Qe !HcMGemcRrLnLprOJJR:localhost:8800$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4kT Qe !HcMGemcRrLnLprOJJR:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYT Qe !HcMGemcRrLnLprOJJR:localhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUT Qe!HcMGemcRrLnLprOJJR:localhost:8800$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQT Qe!HcMGemcRrLnLprOJJR:localhost:8800$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYTQe!HcMGemcRrLnLprOJJR:localhost:8800$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmATQe!HcMGemcRrLnLprOJJR:localhost:8800$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMTQe!HcMGemcRrLnLprOJJR:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8TQe!HcMGemcRrLnLprOJJR:localhost:8800$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExoTQe!SyIWYOmcGiASNkPCTB:localhost:8800$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcTQe!SyIWYOmcGiASNkPCTB:localhost:8800$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0YTQe!SyIWYOmcGiASNkPCTB:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnETQe!SyIWYOmcGiASNkPCTB:localhost:8800$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8TQe!SyIWYOmcGiASNkPCTB:localhost:8800$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0TQe!SyIWYOmcGiASNkPCTB:localhost:8800$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6UT~Qe!SyIWYOmcGiASNkPCTB:localhost:8800$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggT}Qe!SyIWYOmcGiASNkPCTB:localhost:8800$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAT|Qe!SyIWYOmcGiASNkPCTB:localhost:8800$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYT{Qe!SyIWYOmcGiASNkPCTB:localhost:8800$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0TzQe!msMfSdLIAvklSSAnci:localhost:8800$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCMTyQe!msMfSdLIAvklSSAnci:localhost:8800$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5QTxQe!msMfSdLIAvklSSAnci:localhost:8800$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFITwQe!msMfSdLIAvklSSAnci:localhost:8800$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltYTvQe!msMfSdLIAvklSSAnci:localhost:8800$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQTuQe!msMfSdLIAvklSSAnci:localhost:8800$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-YTtQe!msMfSdLIAvklSSAnci:localhost:8800$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo  rV teQ$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "52", "stream_ordering": 501}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 9", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040700326, "hashes": {"sha256": "jQNNbo9P3h+Qw1DtpAHn7Q9bT3ov6KIufH5Njy3H6SI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h/GUcYIiRRCszRgkX8k2lhrMxFFSr6WMmPzNfNiJUIrCtmHBTvvqNXF3kOySXNlZQHcVqR4DoC959JAu49fUCg"}}, "unsigned": {"age_ts": 1570040700326}} seQ$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "51", "stream_ordering": 500}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040699842, "hashes": {"sha256": "JS5MxBJeQTLztdnLT9ixXYMAnPtkgArjbLXMvUCeD38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/lIpe8Ui79wckolj5Ucbxk4IRzQOQy+79GHrqVSVcq4vklVZR0j5gZ6WsChkruohNvYQxe2Wm7A609p3XnxZBw"}}, "unsigned": {"age_ts": 1570040699842}} reQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "50", "stream_ordering": 499}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040699442, "hashes": {"sha256": "1LzooyIwqYALqP1fk0iYb8ABIp797yZjUp1fndLDs58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9WHpf6n7gvIUaXJg1DeHOsHQhaosGHZ1YhJcQAL7bpYayBtQBWn3KCSRfpGglUrieBh8pvDweuX+hhNjyEd8DA"}}, "unsigned": {"age_ts": 1570040699442}} qeQ$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800{"token_id": 143, "txn_id": "49", "stream_ordering": 498}{"auth_events": ["$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM", "$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o", "$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ"], "prev_events": ["$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4"], "type": "m.room.message", "room_id": "!msMfSdLIAvklSSAnci:localhost:8800", "sender": "@anon-20191002_181700-115:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040698725, "hashes": {"sha256": "+BJQoz6M9nBod3qy4aMpwgubMv/G2dpDBTSaUlPddDA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dd+bMfRcfMBJK2flVZW/LrP/HrcIz7//InId6N8YtuF0ePxNWScCIR4S1IDV0mos9gHFm0q8RR+lNsFVPtVyDg"}}, "unsigned": {"age_ts": 1570040698725}} > ~ o ` Q B 3 $    p a R C 4 %  /  { l ] N ? 0 !   |qbSD5&rcTE6' sdUF7( teVG8) ufWH9* vgXI:+ whYJ;, m ^ O @ 1 "   } n _ P A 2 #   yj[L=.zk\M>mjjmiimhhmggmffmseemddm~7ccmybbmv^aams``mq__mo^^mk]]mew\\may[[m^ZZm[YYmVXXmTWWmR4VVmOUUmLTTmJOSSmD5RRm?(QQm<;PPm9_OOm6NNm4;MMm-SLLm'KKm%JJm"IImQHHmzGGm[FFmvEEmdDDmCCm"BBmAAmf@@mh??m>>m==m<<m;;m::m99m88m77mZ66m'55mބ44m33mٲ22m'11mӫ00m//m..mˠ--m,,m++m**m$))m:((mq''mL&&m%%mc$$m"##m""m$!!m  mmm'mmm|mm]my mvmnmlm[mRZmNmJ mEm?m:  m.  m(M  m e  m  mPm<mm:m `mbmmmmmQmLmFmmbmmmm(mݦmm2m~mzmv|mtmpmn'mkmi me`mcm` m]{mZ+mX mUmRmPmNNmJYmGmEmBm@8m<m:tm7m5m2m/}m, mm m)mmmmgmmzmm~~m>}}mm||m{{mzzmܗyym1xxmwwmˈvvmǘuum ttm-ssm`rrmqqmppmoom nnmmmmllmkkmem?mmymBmmZmcm!m,mmmmpmm mmmm^mmmmJmmmmmmH U < R X &  ^ , h 6jQ8d>%p>   nvD~L R X&q2j8xT" e$5ed21e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pkn1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA 1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 F1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUw1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwP1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAC1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwL0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 ^1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No41e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o:1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wR1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEp1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAp1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI-?$59_msg_d:localhost:42455 3$56:localhost:42455 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA0e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUv3$55:localhost:42455 3$54:localhost:42455 3$53:localhost:42455 3$53:localhost:42455 3$53:localhost:42455 3$52:localhost:42455 3$52:localhost:42455 3$52:localhost:42455 3$50:localhost:42455 3$61:localhost:42455 ;0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Mp1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw 1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcK1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX81e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo q1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw?1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs?1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU01e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI {1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA `1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk C1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 61e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok 1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs 3$67:localhost:42455 G3$66:localhost:42455 F#I$64_redaction2:localhost:42455 E1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 D#I$63_redaction1:localhost:42455 C3$62:localhost:42455 B1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY?$60_msg_e:localhost:42455 1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg"1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4~1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo  t l d \  T LD<4,$|eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800 NeeQ$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800 seeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800 eeQ$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8!TleKOyAElrpgyyrAQA:localhost:8800eeQ$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800&eeQ$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800aeeQ$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE!wnriPzXkIMmdTNoJKU:localhost:8800āeeQ$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800eeQ$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58!CQKLQUpSYakhxVDltC:localhost:8800eeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800eeQ$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800jeeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:8800eeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800'eeQ$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800ˁeeQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:88007eeQ$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8!egCvzKpbEwmuvDoBTb:localhost:8800ceeQ$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800yeeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE!coGyOAgYnlBZAqznax:localhost:8800 eeQ$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800 NW%c]+j8r@ Q 8  W % ^ ,  d 2 j 8 p> 1vD|JQj8p> 91e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAr1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkc1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8Y1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok21e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U 1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkd1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4@1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA 1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YI1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 @0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU^1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc @1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E ?1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8w1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQP1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEI1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMB1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg o1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQZ1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU~1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM a1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA u1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMX1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQt1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc 1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0#1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwN3$89:localhost:42455 1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28_3$88:localhost:42455 1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AIA$86_sent_F:localhost:42455 1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4A$85_sent_E:localhost:42455 1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o%M$84_backfilled_D:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug "G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk X3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokG1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 3$81:localhost:42455 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNoa3$80:localhost:42455   s|eQ_u$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 509}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg"], "type": "m.room.join_rules", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040705868, "hashes": {"sha256": "wP6e+l1u2c6KflwKagD1+o7gE1p3N3UsgljmMzzjmCU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Inl6MtRqKFWcsu1S85/Qaw+81D/wDYjhQZ58cljF/vD+J8PWfXqfE6y2nqUvv8N2d7G7iTH9NsFGNtIDyziSAg"}}, "unsigned": {"age_ts": 1570040705868}}{eQ_9$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 508}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA"], "type": "m.room.canonical_alias", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"alias": "#test-20191002_181700-15:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040705094, "hashes": {"sha256": "bHND3wm9esHCUKo8ZYpBB03FSv/6hqvQlsg5S5qRAbE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TTyMa7T4VteaxOIiRtT6SYIUNGzlcBh5n0Zd6TRR9uMiGiGrlVdgdfWoLG5di0YwdbogRt/+DdiAwRTumISwDw"}}, "unsigned": {"age_ts": 1570040705094}}jzeQ_c$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 507}{"auth_events": ["$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "type": "m.room.power_levels", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"users": {"@anon-20191002_181700-116:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040704452, "hashes": {"sha256": "XLdFGxVTAMIBPJxgkL0qJsG+Eh0HPj72dpe8IWJhIpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a4Vj9tiyimbQlKUlwRYpt1BeHgSgjlvN0QYkbZQgZm3wCcx30ik+8HYUPS45XdFNEXX3ZWnBzIu1OZXP0IQKCQ"}}, "unsigned": {"age_ts": 1570040704452}}uyeQ_y$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 506}{"auth_events": ["$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0"], "prev_events": ["$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0"], "type": "m.room.member", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-116", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-116:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040703842, "hashes": {"sha256": "y+8DBRo25qX4ra3+Br6Fw6440PDSQwuJ65vcCvVFWw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWRnnB2sMNm8hA2Qlg9fJIoKDqIYhDWzrMACptdBXYi9FRAdpLXIHiI/4rLnLf7rQbvtJNk+bwRToNGd/W4yAw"}}, "unsigned": {"age_ts": 1570040703842}} I\ ]  d  v({#~5HI$e/Q ]$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8Im.room.join_rules!CgVBWWcRJoHEcwoLcq:localhost:8800mNmO@anon-20191002_181700-120:localhost:8800)e9Q ]$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAm.room.canonical_alias!CgVBWWcRJoHEcwoLcq:localhost:8800mJ mK@anon-20191002_181700-120:localhost:8800&e3Q ]$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMm.room.power_levels!CgVBWWcRJoHEcwoLcq:localhost:8800mEmG@anon-20191002_181700-120:localhost:8800 e'Q ]$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gm.room.member!CgVBWWcRJoHEcwoLcq:localhost:8800m?mBl@anon-20191002_181700-120:localhost:8800  e'Q  ]$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgm.room.create!CgVBWWcRJoHEcwoLcq:localhost:8800m:m;I@anon-20191002_181700-120:localhost:8800# e-Q ] $iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcm.room.redaction!HcMGemcRrLnLprOJJR:localhost:8800 m.m/@anon-20191002_181700-119:localhost:8800! e)Q ] $wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4km.room.message!HcMGemcRrLnLprOJJR:localhost:8800 m(Mm(R@anon-20191002_181700-119:localhost:8800 e'Q ]$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYm.room.member!HcMGemcRrLnLprOJJR:localhost:8800m em!Z@anon-20191002_181700-119:localhost:8800! e)Q ]$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUm.room.aliases!HcMGemcRrLnLprOJJR:localhost:8800mm@anon-20191002_181700-118:localhost:8800,e?Q ]$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQm.room.history_visibility!HcMGemcRrLnLprOJJR:localhost:8800mPm@anon-20191002_181700-118:localhost:8800$e/Q ]$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYm.room.join_rules!HcMGemcRrLnLprOJJR:localhost:8800m<m@anon-20191002_181700-118:localhost:8800)e9Q ]$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAm.room.canonical_alias!HcMGemcRrLnLprOJJR:localhost:8800mm@anon-20191002_181700-118:localhost:8800&e3Q ]$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMm.room.power_levels!HcMGemcRrLnLprOJJR:localhost:8800m:mX@anon-20191002_181700-118:localhost:8800 e'Q ]$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8m.room.member!HcMGemcRrLnLprOJJR:localhost:8800m `m @anon-20191002_181700-118:localhost:8800 e'Q  ]$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExom.room.create!HcMGemcRrLnLprOJJR:localhost:8800mbm@anon-20191002_181700-118:localhost:8800#e-Q ] $QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcm.room.redaction!SyIWYOmcGiASNkPCTB:localhost:8800 mm@anon-20191002_181700-116:localhost:8800!e)Q ] $8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ym.room.message!SyIWYOmcGiASNkPCTB:localhost:8800 mm@anon-20191002_181700-117:localhost:8800 e'Q ]$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEm.room.member!SyIWYOmcGiASNkPCTB:localhost:8800mms@anon-20191002_181700-117:localhost:8800!e)Q ]$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8m.room.aliases!SyIWYOmcGiASNkPCTB:localhost:8800mm@anon-20191002_181700-116:localhost:8800,~e?Q ]$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0m.room.history_visibility!SyIWYOmcGiASNkPCTB:localhost:8800mQm @anon-20191002_181700-116:localhost:8800$}e/Q ]$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Um.room.join_rules!SyIWYOmcGiASNkPCTB:localhost:8800mLm@anon-20191002_181700-116:localhost:8800)|e9Q ]$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggm.room.canonical_alias!SyIWYOmcGiASNkPCTB:localhost:8800mFm_@anon-20191002_181700-116:localhost:8800&{e3Q ]$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAm.room.power_levels!SyIWYOmcGiASNkPCTB:localhost:8800mm@anon-20191002_181700-116:localhost:8800 ze'Q ]$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYm.room.member!SyIWYOmcGiASNkPCTB:localhost:8800mbm@anon-20191002_181700-116:localhost:8800 O{uCo= j8up? w E{  ~ L  S ! C Y ' x _ ; sZ(`.f4m; W>% 31e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA a1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU `1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 71e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 !1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ 1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU 1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI.?$59_msg_d:localhost:42455 ?$58_msg_c:localhost:42455 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcL1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX80e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A0e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Mp1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3Ms1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUb1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYS1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUsx1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwl1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:42455 J1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMc3$68:localhost:42455 I3$67:localhost:42455 H3$66:localhost:42455 G3$65:localhost:42455 F1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 #I$63_redaction1:localhost:42455 E3$62:localhost:42455 D1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY3$61:localhost:42455 =1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg#1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas0e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUw1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pko1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 G1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4-1e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUx1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAD1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 `1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No/1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o;1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE 1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEq  6 l u?c]c@anon-20191002_181700-149:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20Ao127.0.0.1{c]c@anon-20191002_181700-144:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQo127.0.0.1yc]c@anon-20191002_181700-142:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAo127.0.0.1wc]c@anon-20191002_181700-143:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwo127.0.0.1xc]c@anon-20191002_181700-146:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwo127.0.0.1za[a@anon-20191002_181700-14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMHQ2PVVRLU5odEUzWjdGKgowMDJmc2lnbmF0dXJlIIjDgVqgagrzkqALJZaTBs9GC8LVg5XQfmAtEzdItGqZCg127.0.0.1 c]c@anon-20191002_181700-141:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_Ao127.0.0.1vc]c@anon-20191002_181700-140:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAo127.0.0.1uc]c@anon-20191002_181700-138:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAo127.0.0.1tc]c@anon-20191002_181700-137:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swo127.0.0.1sc]c@anon-20191002_181700-136:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0wo127.0.0.1r  eQ_$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 541}{"auth_events": ["$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg", "$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ", "$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "prev_events": ["$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo"], "type": "m.room.history_visibility", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040745511, "hashes": {"sha256": "X/YQt6fHt9wuWVLvA4YFtDf4xmgS99L7TE5wceWSc2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rBxx7+UbdJ9+3VqZbJwkmwmsmuzzm4H2Tuq2zLR0sHtKsY7dLjAcJIYpU6a4C+q2uofxbaXqMS1ccwHd+Uf7BQ"}}, "unsigned": {"age_ts": 1570040745511}}eQ_$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 540}{"auth_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0", "$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY"], "type": "m.room.history_visibility", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040744988, "hashes": {"sha256": "STBEoREb6iitJspl0nlLA7MGknxTdyMsRCd2QwZjdBI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bkwY4JWNU2bHU0BbQ+GvevipXZuv5oC7eK0y6eHDjIR8OWAopX9Mtb+u2/Meh55vcZHUAcgPyW148uqztaVUAw"}}, "unsigned": {"age_ts": 1570040744988}}seQ_u$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 539}{"auth_events": ["$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg", "$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ", "$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "prev_events": ["$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg"], "type": "m.room.join_rules", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040744186, "hashes": {"sha256": "Mw9zOWCL+HNPwuvAl5TfrO7OIf/2rGfoGFseQlajE9A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cNM48+BNBywSxgCWKM3hhWfkCmyjGQ/1ksGKCyFBCeTTnuCAbdl3tRRgJtv1GoqVSmV14JDxTXyYu9QLNVDzCw"}}, "unsigned": {"age_ts": 1570040744186}}seQ_u$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 538}{"auth_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0", "$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0"], "type": "m.room.join_rules", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040743804, "hashes": {"sha256": "Er7RziyysNorT1vcoLL6QmkBujUUlGFEgh27HmrXIqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aD8LTm8ML0vowHtWk4cvCehe7nQfLRYxp2MkWzAaxcmFF7iROngMw20vfNQj7sRfjo/yCfVhHFDKVG+jAQZRDg"}}, "unsigned": {"age_ts": 1570040743804}} ZY6n/xa"B+ q K 4  e J / v V ;  ] @  } ` K 0kN.t5UdI&tyS/r[ _9 #m.room.canonical_alias%/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-116:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-115:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 "m.room.power_levels$>']!m.room.member@anon-20191002_181700-136:localhost:8800#'  m.room.create">']m.room.member@anon-20191002_181700-135:localhost:8800!"? m.room.history_visibility / m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-134:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-133:localhost:8800>']m.room.member@anon-20191002_181700-132:localhost:8800>']m.room.member@anon-20191002_181700-132:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-131:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-130:localhost:8800%))m.room.aliaseslocalhost:8800"?  m.room.history_visibility/  m.room.join_rules9  m.room.canonical_alias 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-129:localhost:8800 ' m.room.create / madeup.test.state # m.room.name>']m.room.member@anon-20191002_181700-127:localhost:8800/ madeup.test.state# m.room.name3 m.room.power_levels>']m.room.member@anon-20191002_181700-128:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-127:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-126:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-125:localhost:8800' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-124:localhost:8800>']m.room.member@anon-20191002_181700-123:localhost:8800' m.room.create' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-120:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-119:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-118:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-117:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility  xZeQ#$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 145, "txn_id": "56", "stream_ordering": 513}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE"], "prev_events": ["$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE"], "type": "m.room.message", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-117:localhost:8800", "content": {}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040708849, "hashes": {"sha256": "oAsi/6K0jJsDg0Hng7MB+hegqHDlnMMlWX3YxCmX3Mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l5rWPiaeNMIJArr2lGf6AyxY1UErvlhsQqJHXGfLoF1zMpPY3MMxC1+rolxxwkFsTRpXKZkQooaxD0Fn1UhmBg"}}, "unsigned": {"age_ts": 1570040708849}}UeQ_9$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 145, "stream_ordering": 512}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U"], "prev_events": ["$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8"], "type": "m.room.member", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-117:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-117", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-117:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040708093, "hashes": {"sha256": "u8zgcXuJzKaiuXOw8VvfqESUqf4TTy8SBSMLNKtYu4c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8j5aoxjrsWiXoZU53983WpynndJUNXwQmxVzHdePQ8hzfMEcqkI0MlDKhqfotb5IMagGIRlEdQepHoOFagbAAg"}}, "unsigned": {"age_ts": 1570040708093}}~eQ_M$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 511}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0"], "type": "m.room.aliases", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"aliases": ["#test-20191002_181700-15:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040707318, "hashes": {"sha256": "YXUB/7icCiNQHfeyUyg8Fqpjzr2cNiRItFb11zwGCHA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C44U3/s8vbtYGFPQwT4+4IZUr3mZyPKZzIprYtTqk6KvJHDcJm65OO2ve9aoVYX2l1QOpFysu2Mq+7qcgkC+Ag"}}, "unsigned": {"age_ts": 1570040707318}}}eQ_$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 510}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U"], "type": "m.room.history_visibility", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040706385, "hashes": {"sha256": "Qo25wEgSyzzwIlcAV/YLawtlmx4yQtiL2Ewex/rVC4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RsyucuvRugjfRIPd8IUeNYqFt1+HLf54O6IJg6orWA0oGoS/EDWusZScioD1nZeqmc2Kxk2EbzEMDh70vberCw"}}, "unsigned": {"age_ts": 1570040706385}} a} { y w u sqomkigeca~eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800~~eeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~}eeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~|eeQ$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~{eeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800~zeeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~yeeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~xeeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~weeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~veeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~ueeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~teeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~seeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~reeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~qeeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~peeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~oeeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~neeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~meeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800~leeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800~keeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~jeeQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800~ieeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800~heeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~geeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~feeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800~eeeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800~deeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800~ceeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800 2|dyp@} 6 &lg*  D q . W>{|{8 CLiBQ? !JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibility (^Q']!JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800 %^Q']!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:88294<Q3 !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels1u~<Q3 !JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels &4Q# !JnAKXOrlyisFUpgJPw:localhost:8800m.room.name )L<Q3 !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels BQ? !JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility :Q/ !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules <Q3 !IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levels^Q']!JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800 6Q' !JiUawCFQnodcpssOfK:localhost:8800m.room.create 7CQ?!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6%^Q']!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800yEQ))!JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800xBQ? !JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibilityw:Q/ !JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rulesv?Q9 !JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_aliasu<Q3 !JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levelst^Q']!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800s6Q' !JPTwFTSDaBXwUTgitj:localhost:8800m.room.createrBQ? !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibility3:Q/ !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules26Q' !JnAKXOrlyisFUpgJPw:localhost:8800m.room.create $J RQ'E!JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455 ^Q']!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:880006Q' !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create/<Q3 !JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels"^Q']!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800&^Q']!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800!:Q/ !JusxqeECtidaPlWqhp:localhost:8800m.room.join_rules#BQ? !JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibility$6Q' !JusxqeECtidaPlWqhp:localhost:8800m.room.create <Q3 !JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels^Q']!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800:Q/ !JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rulesBQ? !JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibility6Q' !JZouHBRxCRbcxYJnbn:localhost:8800m.room.create<Q3 !JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels^Q']!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800:Q/ !JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rulesBQ? !JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibility6Q' !JYLMokjOhZZlmbZvTf:localhost:8800m.room.create<Q3 !JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels(^Q']!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800':Q/ !JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rules)BQ? !JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility*6Q' !JGhlAUflyNxErGGZZu:localhost:8800m.room.create&^Q']!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800:Q/ !JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rules ' "vq | 7 P [ ` :EJt &1Vzv {Q']e!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgrzQ))e!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:8800$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUoyQ? e!CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibility$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEgxQ/ e!CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rules$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828lwQ9 e!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_alias$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEivQ3 e!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg uQ']e!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9DisctQ' e!CQKLQUpSYakhxVDltC:localhost:8800m.room.create$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKsosQ? e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibility$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYorQ? e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibility$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsgqQ/ e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rules$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OogpQ/ e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rules$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYioQ3 e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levels$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVginQ3 e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0 mQ']e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs lQ']e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsckQ' e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.create$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQcjQ' e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.create$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAriQ))e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUohQ? e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibility$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4ggQ/ e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rules$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8IlfQ9 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_alias$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAieQ3 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM dQ']e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gccQ' e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg bQ']e!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYraQ))e!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlUo`Q? e!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibility$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQg_Q/ e!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rules$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYl^Q9 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_alias$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAi]Q3 e!HcMGemcRrLnLprOJJR:localhost:8800m.room.power_levels$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM \Q']e!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-118:localhost:8800$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8c[Q' e!HcMGemcRrLnLprOJJR:localhost:8800m.room.create$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo ZQ']e!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE ~z v r n j fb^ZVRNJFeeeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800deeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800ceeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800beeQ$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800aeeQ$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800`eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800_eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800^eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800]eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800\eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800[eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800ZeeQ$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800YeeQ$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800XeeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800WeeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800VeeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800UeeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800TeeQ$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800SeeQ$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800ReeQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800QeeQ$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800PeeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800OeeQ$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800NeeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800MeeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800LeeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800KeeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800JeeQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800IeeQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800HeeQ$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800 $U"  9 _ 6Y|Gy<i)UiheQ%$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800content.bodypre_joinggeQ%$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800content.bodysharedjfeQ%$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800content.bodypost_joinieeQ%$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800content.bodypre_joingdeQ%$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800content.bodysharedgceQ%$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800content.bodypublichbeQ%$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800content.bodyprivatehaeQ%$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg!NfaPEGKjnUDUTavzol:localhost:8800content.bodyprivateg`eQ%$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800content.bodypublich_eQ%$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800content.bodyprivatee^eQ%$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800content.bodymicee]eQ%$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800content.bodymicee\eQ%$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800content.bodymicee[eQ%$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800content.bodymiceeZeQ%$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800content.bodymicemYeQ%%$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800content.bodyAfter invitelXeQ%#$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800content.bodyBefore joinmWeQ%%$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800content.bodyAfter invitelVeQ%#$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800content.bodyBefore joinmUeQ%%$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800content.bodyAfter invitelTeQ%#$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800content.bodyBefore joinmSeQ%%$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800content.bodyAfter invitelReQ%#$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800content.bodyBefore joinmQeQ%%$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ!hgjYwwwjWJNgwrzOto:localhost:8800content.bodyAfter invitelPeQ%#$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800content.bodyBefore joinjOeQ%$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg!wAyboOFgsOPwkmgMAI:localhost:8800content.bodya messagedNeQ%$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw!IMiczgkCTjejbnbeyP:localhost:8800content.bodysupMeQ%I$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800content.nameN2. B's room name after A left}LeQ%E$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800content.bodyM3. B's message after A left~KeQ%G$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800content.bodyM2. B's message before A left~JeQ%G$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800content.bodyM1. B's message before A leftIeQ%K$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800content.nameN1. B's room name before A left{HeQ%A$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800content.bodyorangutans are not monkeyseGeQ%$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M!VWYMJxEviBNDdJCuKT:localhost:8800content.bodytest{FeQ%A$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800content.bodyorangutans are not monkeys{EeQ%A$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y!SyIWYOmcGiASNkPCTB:localhost:8800content.bodyorangutans are not monkeys  t jeQ_c$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 517}{"auth_events": ["$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "type": "m.room.power_levels", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"users": {"@anon-20191002_181700-118:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040712762, "hashes": {"sha256": "VTjb+hxAEVRjRtturbcpI7C//TSDGGMQz5qLcoTChZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "moIJRnX5ghpPcCWc93y2O0Lw/WFFQmBmalJ5wq0a82js+7iOfyBWcJWOJFbBeo1ty0zlV2L3RA+GeRIFy1XUBg"}}, "unsigned": {"age_ts": 1570040712762}}ueQ_y$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 516}{"auth_events": ["$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo"], "prev_events": ["$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo"], "type": "m.room.member", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-118", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-118:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040712032, "hashes": {"sha256": "tnuF+Hd3uOOlO2XhLeDoGOmqYBumRNhI4CD4Mlc6THo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HJ0W5b2KFWrAtPPoY2skNfn5HXcz0ULnqhHzYZOyc/nRHO3V5YdR06THJ5ZTo1oG65x0Oqm9xOW9dXbztjmxBg"}}, "unsigned": {"age_ts": 1570040712032}}heQ__$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 515}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-118:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040711266, "hashes": {"sha256": "etfa516NBGWx/rZWwdl9VB5IZ58TyZMRZO8h6hJg4Ow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GMoFgQoL95eb8Ihkhp6nImrO4FJ8vTrHRX9stbB+3XIh0FpkPPw/B10J35HQLjMQAi4Bqa2m0lXwEnvqBbRZAA"}}, "unsigned": {"age_ts": 1570040711266}}eQ_$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc!SyIWYOmcGiASNkPCTB:localhost:8800{"token_id": 144, "stream_ordering": 514}{"auth_events": ["$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA", "$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0", "$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY"], "prev_events": ["$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y"], "type": "m.room.redaction", "room_id": "!SyIWYOmcGiASNkPCTB:localhost:8800", "sender": "@anon-20191002_181700-116:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "redacts": "$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y", "origin": "localhost:8800", "origin_server_ts": 1570040709517, "hashes": {"sha256": "nHyD8AGxv86KNgplc+hKBXYUGpvF0EhARd/gbUcBq6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9gheMOIgjLhSlDzQ++9nyd7PnU4qfcxE5FSKS5wJFRiGUYDnz8cHIJuC9cBGv8ou9Hqkn0KNL6RpDCrrpqiiCA"}}, "unsigned": {"age_ts": 1570040709517}} ?BM  X V  \ g + m 1x<>IOT[` g+> ]  @anon-20191002_181700-156:localhost:8800m&\&9 ]@anon-20191002_181700-157:localhost:8800a&\9 ]@anon-20191002_181700-156:localhost:8800a&\> ]  @anon-20191002_181700-154:localhost:8800m&\&9 ]@anon-20191002_181700-155:localhost:8800a&\9 ]@anon-20191002_181700-154:localhost:8800a&\= ]  @anon-20191002_181700-153:localhost:8800m&\> ] @anon-20191002_181700-152:localhost:8800m&\w9 ]@anon-20191002_181700-153:localhost:8800a&\9~ ]@anon-20191002_181700-152:localhost:8800a&\?{ ] @anon-20191002_181700-149:localhost:8800m&\ "s=| ]  @anon-20191002_181700-150:localhost:8800m&\=} ]  @anon-20191002_181700-151:localhost:8800m&\9z ]@anon-20191002_181700-151:localhost:8800a&\9y ]@anon-20191002_181700-149:localhost:8800a&\9x ]@anon-20191002_181700-150:localhost:8800a&\?w ]  @anon-20191002_181700-146:localhost:8800m&\ 'f9v ]@anon-20191002_181700-146:localhost:8800a&\>u ] @anon-20191002_181700-144:localhost:8800m&\|>t ] @anon-20191002_181700-143:localhost:8800m&\:9s ]@anon-20191002_181700-143:localhost:8800a&\9r ]@anon-20191002_181700-144:localhost:8800a&\>q ] @anon-20191002_181700-141:localhost:8800m&\D>p ] @anon-20191002_181700-140:localhost:8800m&\:9o ]@anon-20191002_181700-142:localhost:8800a&\9n ]@anon-20191002_181700-141:localhost:8800a&\9m ]@anon-20191002_181700-140:localhost:8800a&\>l ] @anon-20191002_181700-138:localhost:8800m&\ !9k ]@anon-20191002_181700-138:localhost:8800a&\=j ]  @anon-20191002_181700-137:localhost:8800m&\>i ] @anon-20191002_181700-136:localhost:8800m&\ !#9h ]@anon-20191002_181700-136:localhost:8800a&\9g ]@anon-20191002_181700-137:localhost:8800a&\>f ] @anon-20191002_181700-134:localhost:8800m&\X9e ]@anon-20191002_181700-135:localhost:8800a&\9d ]@anon-20191002_181700-134:localhost:8800a&\>c ] @anon-20191002_181700-132:localhost:8800m&\ Z>b ] @anon-20191002_181700-131:localhost:8800m&\:9a ]@anon-20191002_181700-133:localhost:8800a&\9` ]@anon-20191002_181700-131:localhost:8800a&\9_ ]@anon-20191002_181700-132:localhost:8800a&\>^ ] @anon-20191002_181700-129:localhost:8800m&\:9] ]@anon-20191002_181700-129:localhost:8800a&\9\ ]@anon-20191002_181700-130:localhost:8800a&\>[ ] @anon-20191002_181700-128:localhost:8800m&\>Z ] @anon-20191002_181700-127:localhost:8800m&\ z9Y ]@anon-20191002_181700-127:localhost:8800a&\9X ]@anon-20191002_181700-128:localhost:8800a&\>W ] @anon-20191002_181700-126:localhost:8800m&\]>V ]  @anon-20191002_181700-125:localhost:8800m&\ 9U ]@anon-20191002_181700-125:localhost:8800a&\>R ]  @anon-20191002_181700-123:localhost:8800m&\19T ]@anon-20191002_181700-126:localhost:8800a&\>S ]  @anon-20191002_181700-124:localhost:8800m&\C9Q ]@anon-20191002_181700-124:localhost:8800a&\9P ]@anon-20191002_181700-123:localhost:8800a&\>O ]  @anon-20191002_181700-120:localhost:8800m&\y9N ]@anon-20191002_181700-122:localhost:8800a&\9M ]@anon-20191002_181700-121:localhost:8800a&\9L ]@anon-20191002_181700-120:localhost:8800a&\>K ] @anon-20191002_181700-119:localhost:8800m&\ f>J ]  @anon-20191002_181700-118:localhost:8800m&\y9I ]@anon-20191002_181700-118:localhost:8800a&\ #O { P % i>k@ :qFoDmB 'T) g<R} w L ! u J  e s H  y N #c8 #*Q!XIqmzIFbkHGQPIpywk:localhost:8800YY*Q!XIqmzIFbkHGQPIpywk:localhost:8800XX*Q!XIqmzIFbkHGQPIpywk:localhost:8800WW*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!XIqmzIFbkHGQPIpywk:localhost:8800VV*Q!XIqmzIFbkHGQPIpywk:localhost:8800UU*Q!XIqmzIFbkHGQPIpywk:localhost:8800TT*Q!XIqmzIFbkHGQPIpywk:localhost:8800SS*Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800  *Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800  *Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XIqmzIFbkHGQPIpywk:localhost:8800\\*Q!XIqmzIFbkHGQPIpywk:localhost:8800[[*Q!XIqmzIFbkHGQPIpywk:localhost:8800ZZ*Q!XiwGxQKwjgutEClKUy:localhost:8829%%*Q!XiwGxQKwjgutEClKUy:localhost:8829$$*Q!XiwGxQKwjgutEClKUy:localhost:8829!!*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  *Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XiwGxQKwjgutEClKUy:localhost:8829*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!WpThtNEVhrUbUdCdMJ:localhost:8800  *Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XGAmnfaVvjDtQJuufa:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800V*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800  *Q!XGAmnfaVvjDtQJuufa:localhost:8800 L]a:c;sK# [ 3 k C  iAyQ)t { S +  c ;  \4 $ u N ' a9qI!Y1 tL'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 ('Q!NcJYmIbgjsaKJOzBcs:localhost:8800l'Q!NcJYmIbgjsaKJOzBcs:localhost:8800e'Q!NcJYmIbgjsaKJOzBcs:localhost:8800^&Q!NZHpBquHDfJAjiawGk:localhost:8800E&Q!NZHpBquHDfJAjiawGk:localhost:8800D&Q!NZHpBquHDfJAjiawGk:localhost:8800C'Q!NQgavrmiCPUVaVjssy:localhost:8800i'Q!NQgavrmiCPUVaVjssy:localhost:8800h'Q!NQgavrmiCPUVaVjssy:localhost:8800gP'Q!NcJYmIbgjsaKJOzBcs:localhost:8800]'Q!NcJYmIbgjsaKJOzBcs:localhost:8800V'Q!NcJYmIbgjsaKJOzBcs:localhost:8800U'Q!NcJYmIbgjsaKJOzBcs:localhost:8800T'Q!NcJYmIbgjsaKJOzBcs:localhost:8800S'Q!NcJYmIbgjsaKJOzBcs:localhost:8800R'Q!NcJYmIbgjsaKJOzBcs:localhost:8800Q'Q!NcJYmIbgjsaKJOzBcs:localhost:8800P'Q!NcJYmIbgjsaKJOzBcs:localhost:8800O('Q!OCEHAjcOXWNyWIESIS:localhost:8800 J'Q!OCEHAjcOXWNyWIESIS:localhost:8800 I'Q!OCEHAjcOXWNyWIESIS:localhost:8800 H'Q!OCEHAjcOXWNyWIESIS:localhost:8800 G'Q!OCEHAjcOXWNyWIESIS:localhost:8800 F'Q!OCEHAjcOXWNyWIESIS:localhost:8800 E'Q!OBWkjfrDCNgYFfblia:localhost:8800A'Q!OBWkjfrDCNgYFfblia:localhost:8800@'Q!OBWkjfrDCNgYFfblia:localhost:8800?'Q!OBWkjfrDCNgYFfblia:localhost:8800>'Q!OBWkjfrDCNgYFfblia:localhost:8800='Q!OBWkjfrDCNgYFfblia:localhost:8800<'Q!OBWkjfrDCNgYFfblia:localhost:8800;'Q!OBWkjfrDCNgYFfblia:localhost:8800:'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800v&Q!NhWgOTYzEPRwAxRQvS:localhost:8800u&Q!NhWgOTYzEPRwAxRQvS:localhost:8800t&Q!NhWgOTYzEPRwAxRQvS:localhost:8800s&Q!NhWgOTYzEPRwAxRQvS:localhost:8800r&Q!NhWgOTYzEPRwAxRQvS:localhost:8800q'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800d'Q!NeYaCeYNFATCqlrlGT:localhost:8800c'Q!NeYaCeYNFATCqlrlGT:localhost:8800b'Q!NeYaCeYNFATCqlrlGT:localhost:8800a'Q!NeYaCeYNFATCqlrlGT:localhost:8800`'Q!NeYaCeYNFATCqlrlGT:localhost:8800_'Q!NboFFVLpJHTeuUKCjM:localhost:88003'Q!NboFFVLpJHTeuUKCjM:localhost:88002'Q!NboFFVLpJHTeuUKCjM:localhost:88001'Q!NboFFVLpJHTeuUKCjM:localhost:88000'Q!NboFFVLpJHTeuUKCjM:localhost:8800/'Q!NboFFVLpJHTeuUKCjM:localhost:8800.'Q!NboFFVLpJHTeuUKCjM:localhost:8800-'Q!NboFFVLpJHTeuUKCjM:localhost:8800,'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800 'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800H&Q!NZHpBquHDfJAjiawGk:localhost:8800G&Q!NZHpBquHDfJAjiawGk:localhost:8800F  gheQ_M$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 521}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ"], "type": "m.room.aliases", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"aliases": ["#test-20191002_181700-16:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040716415, "hashes": {"sha256": "KxJGNuLK8QU3l+eieA2VR0/24Q7RcNqOA1tDTKTP8+Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jlst5YlN+JwHot1nOTuz8Z5dVdk8QIcpyL9Li87X87yYn2XMcQxIB3YcOuDvIaxj1R77NCrwqcHUk+C+OQNACA"}}, "unsigned": {"age_ts": 1570040716415}}eQ_$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 520}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY"], "type": "m.room.history_visibility", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040714832, "hashes": {"sha256": "p0sj8RFiiJ5pSe7nQkzrOxfwiheyvhz+HUhkudtDKu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vs1bjY3C016BrWCCTfYJ2cOzzXzQv6O/jsDwO4K5msr8niyVDy85madSn6Y7+wfjemSEDwfDFutOGW5dta7JCA"}}, "unsigned": {"age_ts": 1570040714832}}seQ_u$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 519}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA"], "type": "m.room.join_rules", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040714044, "hashes": {"sha256": "aoBE6H+YRdD7yFdDyHuI2t2Ccd3F+5CZlIU1QH6YwcM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9z6DmHqM23iQs9IMFsXWvWMP7rkczJgg+fU50b8sZb98Dxd25WCUG1ufC4IqlaSu9gKzz9CcMyUXtHOwI3UpBw"}}, "unsigned": {"age_ts": 1570040714044}}eQ_9$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 147, "stream_ordering": 518}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8"], "prev_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM"], "type": "m.room.canonical_alias", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-118:localhost:8800", "content": {"alias": "#test-20191002_181700-16:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040713444, "hashes": {"sha256": "9DzCQuKw091Nz4hYWjmgQVQsC8XeflmXezWO/qevR0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4SrHdSn1EKbaSFtfpsa67/R4jCvYJsklELYtxlcItSRSkT/DbQlivNvKtHWG/B/dwXeMZK/S9882gSa/Lm+Dg"}}, "unsigned": {"age_ts": 1570040713444}} L, v D ^ } K  Q X &  ^ ,d3l:r@xF ~L>&RX j8p1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA W1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ Q1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 ;1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT41e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgF1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQT1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo 1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw q1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U71e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 [1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwU1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 g1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0K1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU.0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wR1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 A1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0Z0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 t1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM^1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg11e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uw1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A\1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAp1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYZ1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE{1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U 1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRoh1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q<1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs*21e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE 21e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek81e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 #r+H W `  D S\"BQz/>GreeeQ/ $WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rulesjdeQ9 $msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_aliasgceQ3 $NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels beQ']$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800aaeQ' $PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create `eQ']$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800p_eQ))$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:8800m^eQ? $QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibilitye]eQ/ $pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rulesj\eQ9 $aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_aliasg[eQ3 $PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels ZeQ']$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800aYeQ' $q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800m.room.createmXeQ? $bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibilitymWeQ? $wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibilityeVeQ/ $RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_ruleseUeQ/ $-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rulesgTeQ3 $s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levelsgSeQ3 $DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels ReQ']$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800 QeQ']$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800aPeQ' $46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800m.room.createaOeQ' $NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800m.room.createpNeQ))$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800mMeQ? $REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibilityeLeQ/ $bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rulesjKeQ9 $FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_aliasgJeQ3 $Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels IeQ']$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800aHeQ' $DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create GeQ']$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800m.room.member@anon-20191002_181700-119:localhost:8800pFeQ))$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800m.room.aliaseslocalhost:8800mEeQ? $BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ!HcMGemcRrLnLprOJJR:localhost:8800m.room.history_visibilityeDeQ/ $lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800m.room.join_rulesjCeQ9 $ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800m.room.canonical_alias  'h eQ__$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 525}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-120:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040724151, "hashes": {"sha256": "Z5u7CJoYXAMxvceDppVpad6Ug0edKojev5HnGpn0rbQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LcJdahV1m3Tk0N5PtrWgqofj5q6Ap1fFJrwNwtgKLXhOvVS0bimZC9N2Kn0N+iDwtgAwRdL9ZnTg4fCXUC/bDw"}}, "unsigned": {"age_ts": 1570040724151}}% eQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 146, "recheck_redaction": false, "stream_ordering": 524}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY"], "prev_events": ["$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k"], "type": "m.room.redaction", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-119:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "redacts": "$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k", "origin": "localhost:8800", "origin_server_ts": 1570040721150, "hashes": {"sha256": "dEXo8vOVuRne+w+yf0gsVT4KGcyWJ7uJ43B9qdkxT40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8IJpkObb8Xo5zbfNDyGPXvHKAkiQgYDdK2Dbdytn9XdICxBj/su+Gl44aUulyYtR3sE6csCx0NIfvMvopUQWBg"}}, "unsigned": {"age_ts": 1570040721150}}<Z eQ#$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 146, "txn_id": "57", "stream_ordering": 523}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY"], "prev_events": ["$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY"], "type": "m.room.message", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-119:localhost:8800", "content": {}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040719437, "hashes": {"sha256": "ZTKkqEL1A6v4hfvWvXzRGAgGlu9PfwAgJz2mDds682s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLu4k2pvW5tqv7UmiQM6fxi259+6wRGmk5pONen+EQtxWyaRbJTCbuWI7orTBpVXJbnmRja1ISVgBijwPDiHDw"}}, "unsigned": {"age_ts": 1570040719437}}U eQ_9$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800{"token_id": 146, "stream_ordering": 522}{"auth_events": ["$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM", "$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo", "$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY"], "prev_events": ["$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU"], "type": "m.room.member", "room_id": "!HcMGemcRrLnLprOJJR:localhost:8800", "sender": "@anon-20191002_181700-119:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-119", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-119:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040717413, "hashes": {"sha256": "PKY+INnwjyRZf/PVQmd/bojzno6LFpbCA1udBIuPkkY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQFP5+7HxdHs3ZOtF0qCK2aR/ES17T8/3/DQyXjNUBXkdFdk33+s8bGuq1vJtPsENrUHe3RU8LMA015lCJAGAQ"}}, "unsigned": {"age_ts": 1570040717413}} QeT)}R' { P % y N # w L ! u J  s H qFoeDmBk@i>g<*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NQgavrmiCPUVaVjssy:localhost:8800im*Q!NQgavrmiCPUVaVjssy:localhost:8800hl*Q!NQgavrmiCPUVaVjssy:localhost:8800gk*Q!NQgavrmiCPUVaVjssy:localhost:8800fj*Q!NQgavrmiCPUVaVjssy:localhost:8800ei*Q!NQgavrmiCPUVaVjssy:localhost:8800dh*Q!NQgavrmiCPUVaVjssy:localhost:8800cg*Q!NQgavrmiCPUVaVjssy:localhost:8800bf*Q!NQgavrmiCPUVaVjssy:localhost:8800ae*Q!NPdjmIfsBVIIkvWBzD:localhost:8800lr*Q!NPdjmIfsBVIIkvWBzD:localhost:8800jp*Q!NPdjmIfsBVIIkvWBzD:localhost:8800hn*Q!NPdjmIfsBVIIkvWBzD:localhost:8800fl*Q!NPdjmIfsBVIIkvWBzD:localhost:8800dj*Q!NPdjmIfsBVIIkvWBzD:localhost:8800bh*Q!NPdjmIfsBVIIkvWBzD:localhost:8800ag*Q!NPdjmIfsBVIIkvWBzD:localhost:8800_e*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NFWKQvZkIwvecnREOC:localhost:8800SX*Q!NFWKQvZkIwvecnREOC:localhost:8800RW*Q!NFWKQvZkIwvecnREOC:localhost:8800QV*Q!NFWKQvZkIwvecnREOC:localhost:8800PU*Q!NFWKQvZkIwvecnREOC:localhost:8800OT*Q!NFWKQvZkIwvecnREOC:localhost:8800NS*Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MXhwoqNXvexeDDSOZT:localhost:8800 < m*Q!MXhwoqNXvexeDDSOZT:localhost:8800 : k*Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 g*Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 f*Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 e*Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 d*Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 c*Q!MXhwoqNXvexeDDSOZT:localhost:8800 1 b*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!LvARVIpJZeRQxbKefX:localhost:8800tz*Q!LvARVIpJZeRQxbKefX:localhost:8800sy*Q!LvARVIpJZeRQxbKefX:localhost:8800rx BZZUq: V  r 9 W  s :  X t;Wu<Xv=Y u>!8]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU8]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW8]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO8]!@anon-20191002_181700-260:localhost:8800PEYMVGORHU<6[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRT78]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZA;8]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT:8]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTK98]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLF88]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEX78]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKS68]!@anon-20191002_181700-252:localhost:8800RURXOUWORG58]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ48]!@anon-20191002_181700-250:localhost:8800HLUDALFTVR36[!@anon-20191002_181700-24:localhost:8800MRUESCORNA68]!@anon-20191002_181700-249:localhost:8800TCARNJMFBO28]!@anon-20191002_181700-248:localhost:8800SFZRVIZXHM18]!@anon-20191002_181700-247:localhost:8800TRPUOTMOOT/8]!@anon-20191002_181700-246:localhost:8800VWLZTFZJKU08]!@anon-20191002_181700-245:localhost:8800BMGHUZBIKD.8]!@anon-20191002_181700-244:localhost:8800VWUTZPSOAH-8]!@anon-20191002_181700-243:localhost:8800FMNGREYZML,8]!@anon-20191002_181700-242:localhost:8800AYBUQGWFIB+8]!@anon-20191002_181700-241:localhost:8800AXXWURZRJC*8]!@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ)6[!@anon-20191002_181700-23:localhost:8800SNOHQGNOOL58]!@anon-20191002_181700-239:localhost:8800WFWDJJSKCM(8]!@anon-20191002_181700-238:localhost:8800CJBYPQAOBX'8]!@anon-20191002_181700-237:localhost:8800GTKLCHUYBN&8]!@anon-20191002_181700-236:localhost:8800ALVQESJRHC$8]!@anon-20191002_181700-235:localhost:8800OYRPJJEYFG"8]!@anon-20191002_181700-234:localhost:8800KLAICDFHKH!8]!@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY 8]!@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB6[!@anon-20191002_181700-22:localhost:8800HVNUPXSZHY48]!@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!@anon-20191002_181700-225:localhost:8800ZNKOABDJUU8]!@anon-20191002_181700-224:localhost:8800VJTZAJOEFY8]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDW8]!@anon-20191002_181700-222:localhost:8800VOKSLIDSSO8]!@anon-20191002_181700-221:localhost:8800REITENATXK8]!@anon-20191002_181700-220:localhost:8800OOLATWHSMP6[!@anon-20191002_181700-21:localhost:8800KHJDEDTDXI38]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP 8]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH 8]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN 8]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM 8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF6[!@anon-20191002_181700-20:localhost:8800MIHVANNPDD28]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT 8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO8]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDH8]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIF 8M T " Z) (ic1 ] +J  w S ! N 5   g o=# [uC{IP V ?q Q1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 }1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygn1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAd1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI*1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY;0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg61e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw^1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0h1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUX1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4T1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsn ?$60_msg_e:localhost:42455 I1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU3$62:localhost:42455 3$61:localhost:42455 ~1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 Y 1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m01e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykZ1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 )1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAd1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro3$69:localhost:42455 3$68:localhost:42455 3$67:localhost:42455 3$66:localhost:42455 3$65:localhost:42455 1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM#I$64_redaction2:localhost:42455 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 '1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYH1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM G1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 :21e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E  M% ]k9] r@~LxQ W % ( `.FW v D P  | J  }K +d2 +#I$63_host#I$63_redaction1:localhost:42455 g3$62:localhost:42455 f3$61:localhost:42455 _ 1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4T1e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU}1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o#I$64_redaction2:localhost:42455 h1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA41e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykK1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_451e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0|0e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwX0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w\1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM 81e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY,0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM|1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0U1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQQ1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUK1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg_1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAU0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwO1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0f1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUI1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 :1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 m1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 v1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY91e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw 1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B81e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg'?$60_msg_e:localhost:42455 *1e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A 8L T ( " ) Zic1 ]J D  S ! N 5  g o=# [uC{IP V  q Q1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 }1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygn1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAd1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI*1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY;0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg61e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw^1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0h1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUX1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4T1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsn ?$60_msg_e:localhost:42455 G1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU3$62:localhost:42455 1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYH3$61:localhost:42455 |1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 W 1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m01e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ{1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykZ1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 )1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA^1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro3$69:localhost:42455 3$68:localhost:42455 3$67:localhost:42455 1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM3$66:localhost:42455 3$65:localhost:42455 #I$64_redaction2:localhost:42455 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 '1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM G1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 :d1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E Bm G !hBn]c!E@anon-20191002_181700-129:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAoPFGGATLHBE127.0.0.1Perl + Net::Async::HTTP/0.44mm]c!E@anon-20191002_181700-128:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgoTAEIHPVZLY127.0.0.1Perl + Net::Async::HTTP/0.44m l]c!E@anon-20191002_181700-127:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgoDDIVPYVSUI127.0.0.1Perl + Net::Async::HTTP/0.44muk]c!E@anon-20191002_181700-126:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAoNXVZZYYNXF127.0.0.1Perl + Net::Async::HTTP/0.44m̃j]c!E@anon-20191002_181700-125:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAoKJCLUQSSUQ127.0.0.1Perl + Net::Async::HTTP/0.44mci]c!E@anon-20191002_181700-124:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwoCLOWKQMSAJ127.0.0.1Perl + Net::Async::HTTP/0.44mlh]c!E@anon-20191002_181700-123:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8AoGANYBEJLPQ127.0.0.1Perl + Net::Async::HTTP/0.44mlg]c!E@anon-20191002_181700-121:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQoSXEBHSUFRM127.0.0.1Perl + Net::Async::HTTP/0.44m_f]c!E@anon-20191002_181700-122:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgoKKXSFRABDE127.0.0.1Perl + Net::Async::HTTP/0.44m_e]c!E@anon-20191002_181700-120:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5woNYHQUMFAGS127.0.0.1Perl + Net::Async::HTTP/0.44m9   seQ_u$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 529}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA"], "type": "m.room.join_rules", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040729268, "hashes": {"sha256": "F1Luq5cgYJrWz1mX+VHsa/fxZ4lDphJIEMjVMashbYk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gNT8cSgeXcVE5bxMk8e84EUaQc8VuC5DEQa/58cAFcB7CUpsHDCY5rJnUYDwLGUW2D4sAACqhrMziElzxInlCA"}}, "unsigned": {"age_ts": 1570040729268}}eQ_9$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 528}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM"], "type": "m.room.canonical_alias", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"alias": "#test-20191002_181700-17:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040728076, "hashes": {"sha256": "heawuVnCk/L0qsx+m8YJB52m48A3Zlycx7aZtFZiNjw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xCqJ9JeW5tF77ttCniuMuzBJfQcQWCgXvVEPBRjD12+mM1kma1REB0hEC3WMkqrapREUPhAeZOcdsQwAZ6PSDA"}}, "unsigned": {"age_ts": 1570040728076}}jeQ_c$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 527}{"auth_events": ["$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "type": "m.room.power_levels", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"users": {"@anon-20191002_181700-120:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040726951, "hashes": {"sha256": "DHEzeymYGdg0rOg0cDwwO6CkC91XJi54libptHspXww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "opzc8P6PHUEwIPGJ2iy2Za8pV+jv/Y15dt+bA1nWeK8npExJ3ZJW2iU+cyzFp4GDyLfwnLNMCX/Eyi/DgWu/BA"}}, "unsigned": {"age_ts": 1570040726951}}u eQ_y$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 526}{"auth_events": ["$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg"], "prev_events": ["$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg"], "type": "m.room.member", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-120", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-120:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040725379, "hashes": {"sha256": "nmU7ud6S38oBmnPbtbs7EkPF6iW+6ZwirW4v6vg08oU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ym4xom6jObdUR7Vj0ewCZp8/GdkiR3Cm6hHNb7FqDCMlzOA60sHH2Hk1E4CmYBAAzLaORE3tBQRoPPVy1yWJCg"}}, "unsigned": {"age_ts": 1570040725379}} Ij8p> v D  | J  Ph  V $  \b0 *6W%n< tB}KQ1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs'0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs&0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs%1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY~1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY}1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI \1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI [1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI Z1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s L1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s K1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s J1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0F1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0E1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z981e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z981e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z981e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE 1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE 1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE 1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM s1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM r1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM q1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI 1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k11e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k01e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ "q#E h  q t  1 KTw #,/TkAqhkQ/ e4!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4bjQ# e3!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoiQ3 ee2!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k hQ']e1!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8sgQ))e0!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4pfQ? e/!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMheQ/ e.!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rules$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYmdQ9 e-!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_alias$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQjcQ3 e,!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k bQ']e+!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5odaQ' e*!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM `Q']e&!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgs_Q))e%!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:8800$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUp^Q? e$!CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibility$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEh]Q/ e#!CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rules$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828m\Q9 e"!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_alias$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEj[Q3 e!!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg ZQ']e !CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9DisdYQ' e!CQKLQUpSYakhxVDltC:localhost:8800m.room.create$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKspXQ? e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibility$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYpWQ? e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibility$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIshVQ/ e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rules$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3OohUQ/ e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rules$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYjTQ3 e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levels$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgjSQ3 e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0 RQ']e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs QQ']e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsdPQ' e!GwXGurbyEmykmmHcHJ:localhost:8800m.room.create$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQdOQ' e!VWYMJxEviBNDdJCuKT:localhost:8800m.room.create$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAsNQ))e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUpMQ? e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibility$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4hLQ/ e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rules$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8ImKQ9 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_alias$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAjJQ3 e!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM V ~ L  - S ! Z _ ( ` .{bI0  f4l:Cr@zHPuV$kR X& 1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA "1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 3$68:localhost:42455 3$67:localhost:42455 3$66:localhost:42455 3$65:localhost:42455 3$62:localhost:42455 3$61:localhost:42455 1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 3$70:localhost:42455 1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14In1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac ]1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 J1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro Y1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 :3$69:localhost:42455 1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kV1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E 1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qs1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8=1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk@1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A|0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A0e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__Mx1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgN0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M|1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYT1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwk1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUe1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUo1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg{1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnYM1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4 1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU*1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw{1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM^1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY]1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgQ1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6My1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw11e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr01e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pkj1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykg1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_401e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUz1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAL1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA 1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU 1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ 1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA 0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ_1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE3$79:localhost:42455 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMu a} { y w u sqomkigeca~ eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800~eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800~ eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~ eeQ$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800~ eeQ$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800~ eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~ eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800~eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800  xheQ__$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 533}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-124:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040737483, "hashes": {"sha256": "klhXoAV76woGMfyXh1bM/GVXOrhGVyVUNQ5Yu5D2Ok4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "domBXJzWB/ezxXMVCQ6TOyUnM85oGjeNDKiVmCobuBS/GCjYLz/CTnEXJaq0apZ3noT/llL04bMe2j4ECorYBg"}}, "unsigned": {"age_ts": 1570040737483}}heQ__$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 532}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-123:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040737017, "hashes": {"sha256": "zgUO5RQLWYJPg7+H0YYp7NAQJX3/8vhzAgf8M2tCxiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ytgvalJGPKL5BVWmFSEvgiY7ectJHhUF2LaQ9cQ1uaE6kuJG/fo7J96X9ThkgIhNkiCc/iwCtIVUknXdZWeKBQ"}}, "unsigned": {"age_ts": 1570040737017}}eQ_M$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 531}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4"], "type": "m.room.aliases", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"aliases": ["#test-20191002_181700-17:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040732568, "hashes": {"sha256": "zLTGjrBKn8bOCpx7DviPZ/8ZdntW7HdErhrx+lpY/f8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f1VATQBVmvsmix0brIKMVphAad13aZ9mgrRakXycjC3Q97XXWpBzn+yMhOny8gKV1Mou52oRZKyVqLuKGWS+CQ"}}, "unsigned": {"age_ts": 1570040732568}}eQ_$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800{"token_id": 148, "stream_ordering": 530}{"auth_events": ["$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM", "$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg", "$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g"], "prev_events": ["$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I"], "type": "m.room.history_visibility", "room_id": "!CgVBWWcRJoHEcwoLcq:localhost:8800", "sender": "@anon-20191002_181700-120:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040730202, "hashes": {"sha256": "omuFG0dqpjzLcnraNfpfRmlz4mtur3U6csc9TLfuNj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FhraK23/4BqVNMWTDbonL7b1y8tcwwqQJ8SkrBH9abbChFHal5ZIGHHoLbWcRDbrB4nUxzH/NlI0R46/NoJcDA"}}, "unsigned": {"age_ts": 1570040730202}} EP g  u # {v018E#)e-Q ] $Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQm.room.redaction!CQKLQUpSYakhxVDltC:localhost:8800 m$m)@anon-20191002_181700-125:localhost:8800#(e-Q ] $VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58m.room.redaction!CQKLQUpSYakhxVDltC:localhost:8800 m:mA@anon-20191002_181700-125:localhost:8800!'e)Q ] $f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8Um.room.message!CQKLQUpSYakhxVDltC:localhost:8800 mqmu@anon-20191002_181700-126:localhost:8800 &e'Q ]$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgm.room.member!CQKLQUpSYakhxVDltC:localhost:8800mLm@anon-20191002_181700-126:localhost:8800!%e)Q ]$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUm.room.aliases!CQKLQUpSYakhxVDltC:localhost:8800mm@anon-20191002_181700-125:localhost:8800,$e?Q ]$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEm.room.history_visibility!CQKLQUpSYakhxVDltC:localhost:8800mcmx@anon-20191002_181700-125:localhost:8800$#e/Q ]$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828m.room.join_rules!CQKLQUpSYakhxVDltC:localhost:8800m"m@anon-20191002_181700-125:localhost:8800)"e9Q ]$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEm.room.canonical_alias!CQKLQUpSYakhxVDltC:localhost:8800mm@anon-20191002_181700-125:localhost:8800&!e3Q ]$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckgm.room.power_levels!CQKLQUpSYakhxVDltC:localhost:8800m$m2@anon-20191002_181700-125:localhost:8800 e'Q ]$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dism.room.member!CQKLQUpSYakhxVDltC:localhost:8800mmE@anon-20191002_181700-125:localhost:8800 e'Q  ]$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKsm.room.create!CQKLQUpSYakhxVDltC:localhost:8800mmb@anon-20191002_181700-125:localhost:8800!e)Q ]$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04Mm.room.message!VWYMJxEviBNDdJCuKT:localhost:8800mm@anon-20191002_181700-123:localhost:8800,e?Q ]$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYm.room.history_visibility!GwXGurbyEmykmmHcHJ:localhost:8800m'mv@anon-20191002_181700-124:localhost:8800,e?Q ]$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIsm.room.history_visibility!VWYMJxEviBNDdJCuKT:localhost:8800mml@anon-20191002_181700-123:localhost:8800$e/Q ]$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oom.room.join_rules!GwXGurbyEmykmmHcHJ:localhost:8800mm:@anon-20191002_181700-124:localhost:8800$e/Q ]$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYm.room.join_rules!VWYMJxEviBNDdJCuKT:localhost:8800m|mG@anon-20191002_181700-123:localhost:8800&e3Q ]$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgm.room.power_levels!GwXGurbyEmykmmHcHJ:localhost:8800mm@anon-20191002_181700-124:localhost:8800&e3Q ]$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0m.room.power_levels!VWYMJxEviBNDdJCuKT:localhost:8800m]m@anon-20191002_181700-123:localhost:8800 e'Q ]$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsm.room.member!GwXGurbyEmykmmHcHJ:localhost:8800my m~@anon-20191002_181700-124:localhost:8800 e'Q ]$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsm.room.member!VWYMJxEviBNDdJCuKT:localhost:8800mvm{u@anon-20191002_181700-123:localhost:8800 e'Q  ]$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQm.room.create!GwXGurbyEmykmmHcHJ:localhost:8800mnmr@anon-20191002_181700-124:localhost:8800 e'Q  ]$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAm.room.create!VWYMJxEviBNDdJCuKT:localhost:8800mlmn@anon-20191002_181700-123:localhost:8800!e)Q ]$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUm.room.aliases!CgVBWWcRJoHEcwoLcq:localhost:8800m[m] @anon-20191002_181700-120:localhost:8800,e?Q ]$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4m.room.history_visibility!CgVBWWcRJoHEcwoLcq:localhost:8800mRZmV@anon-20191002_181700-120:localhost:8800 2vF o8 g  Q  X  ^ ' J XKzd)St7#6Q' !LFBhoxJpmBqFrwEzGP:localhost:880EQ))!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:88008<Q3 !KIHYKMzkRDrJwiywwz:localhost:8800m.room.power_levels^Q']!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829^Q']!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-484:localhost:8800:Q/ !KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rulesBQ? !KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibility9Q- !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstone<Q3 !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels^Q']!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800:Q/ !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rulesBQ? !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibility6Q' !KmuRTfGFgJdgIDAgIW:localhost:8800m.room.create<Q3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels ^Q']!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800 RQ'E!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455 :Q/ !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules BQ? !KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility 6Q' !KetCYFxrTxawNOGnOf:localhost:8800m.room.create 9Q- !KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstone&<Q3 !KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels'^Q']!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800:Q/ !KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rulesBQ? !KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibility6Q' !KeqmSjifajNKxtgqhj:localhost:8800m.room.create<Q3 !KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levels^Q']!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800:Q/ !KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rulesBQ? !KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibility6Q' !KeBlWUQiLYUoILKkTB:localhost:8800m.room.create?Q9 !KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_alias6Q' !KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatarEQ))!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800<Q3 !KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels&^Q']!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800+^Q']!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800%:Q/ !KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules*BQ? !KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibility(6Q' !KdOYYnOuwAyQzqwUki:localhost:8800m.room.create$<Q3 !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels :^Q']!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800 9RQ'E!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455 =:Q/ !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rules ;BQ? !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibility <6Q' !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.create 8<Q3 !KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels4^Q']!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:88003:Q/ !KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rules6BQ? !KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility96Q' !KXMUzALpMMMKqoQXUS:localhost:8800m.room.create2?Q9 !KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_alias5  6 k < pd]c@anon-20191002_181700-163:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgo127.0.0.1d]c@anon-20191002_181700-160:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgo127.0.0.1d]c@anon-20191002_181700-162:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwo127.0.0.1d]c@anon-20191002_181700-161:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgo127.0.0.1a[a@anon-20191002_181700-15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTjhxZDRQSW9ETUpkYWE0aQowMDJmc2lnbmF0dXJlIEFXKbUsFlOxlFRjJy7kHgY6RBvur7gpMAnCmMIqNXRYCg127.0.0.1 d]c@anon-20191002_181700-158:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswo127.0.0.1d]c@anon-20191002_181700-156:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAo127.0.0.1d]c@anon-20191002_181700-154:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0Ao127.0.0.1c]c@anon-20191002_181700-153:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48Cwo127.0.0.1c]c@anon-20191002_181700-152:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgo127.0.0.1~c]c@anon-20191002_181700-151:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwo127.0.0.1} g * T~=gg]!c@anon-20191002_181700-134:localhost:8800PCQACQPKQAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58wog]!c@anon-20191002_181700-133:localhost:8800LAOZZBUWCAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPcHdsY2xTMmxNRHhGelAKMDAyZnNpZ25hdHVyZSCRO3NI972HYQiWbTV_AWWTe36rrhxCS0LG7T3jgGN7_gog]!c@anon-20191002_181700-131:localhost:8800SOOHJVIHORMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwog]!c@anon-20191002_181700-132:localhost:8800JPOUKBEMRTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQog]!c@anon-20191002_181700-129:localhost:8800PFGGATLHBEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAog]!c@anon-20191002_181700-130:localhost:8800OESOAGWHDNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5JbFJkNypzTWs2eURlTnUKMDAyZnNpZ25hdHVyZSCDDhptP9gyMvPD-AX61QNi0vzkJgRqWaZ8eBWmEREh6Aog]!c@anon-20191002_181700-127:localhost:8800DDIVPYVSUIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgog]!c@anon-20191002_181700-128:localhost:8800TAEIHPVZLYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgog]!c@anon-20191002_181700-125:localhost:8800KJCLUQSSUQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAog]!c@anon-20191002_181700-126:localhost:8800NXVZZYYNXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAog]!c@anon-20191002_181700-124:localhost:8800CLOWKQMSAJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwo 2 2jeQ_c$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 537}{"auth_events": ["$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ", "$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "prev_events": ["$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs"], "type": "m.room.power_levels", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"users": {"@anon-20191002_181700-124:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040742834, "hashes": {"sha256": "/yrezdAxtlnGbj5sY3o2lp+Z9LBwCIJ6A89RLFh15Uw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PG4hkFNCy6Ilao3jNYvGGOFvyywTWjApu2WA0faXdh74Ynqpg/+6QmJSkjX1lI8bRLCc1Ld+b78LGUAw488zBw"}}, "unsigned": {"age_ts": 1570040742834}}jeQ_c$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 536}{"auth_events": ["$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "type": "m.room.power_levels", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"users": {"@anon-20191002_181700-123:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040741981, "hashes": {"sha256": "TO8ngDIB7W3athF2Y9w+qe/Tn/pt8tdm5MaZ8PI2WuI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RxFFYMbfC9LIfHa6AZTmkchuW3FPenLMZd5R3IwYeTO8OH5Gk+fygm75sr9u9gz5PI0iJnwZVgnh0lWnFJ6mCg"}}, "unsigned": {"age_ts": 1570040741981}}ueQ_y$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800{"token_id": 152, "stream_ordering": 535}{"auth_events": ["$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ"], "prev_events": ["$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ"], "type": "m.room.member", "room_id": "!GwXGurbyEmykmmHcHJ:localhost:8800", "sender": "@anon-20191002_181700-124:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-124", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-124:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040740105, "hashes": {"sha256": "J135xIpJ+ixGreNobvcyaHVm1ohYMEiyKLJvYJzI3+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xMu2Hz39uUPhPcBi3kmiFS3P61G545LGdRpRrfq28B9AeNyfy8nbNAniLS5xwcb1XknaG+SahsArEM01RDSEDw"}}, "unsigned": {"age_ts": 1570040740105}}ueQ_y$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "stream_ordering": 534}{"auth_events": ["$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA"], "prev_events": ["$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA"], "type": "m.room.member", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-123", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-123:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040739502, "hashes": {"sha256": "kBtNHQi1F5rH5s9Ql+3vvEzc3OILO5GHai2pvC1G7uY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IUAyX1hMWOn/KccFFYSbOHXlemO3HshtI8tSK9p+n9zXKhpvkbvZRb/IxuIxn3ERfGYX5biC8x5rGgsMDvEHBA"}}, "unsigned": {"age_ts": 1570040739502}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1_e$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M.1^e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE-1]e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc,1\e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM+1[e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs*1Ze$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ)1Ye$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0'1Xe$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8&1We$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k%1Ve$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$1Ue$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0#1Te$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4"1Se$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!1Re$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY 1Qe$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1Pe$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1Oe$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1Ne$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201Me$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY1Le$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE1Ke$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1Je$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1Ie$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI1He$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1Ge$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1Fe$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1Ee$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41De$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1Ce$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1Be$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q01Ae$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01@e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1?e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA 1>e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI 1=e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8 1<e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk 1;e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY 1:e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk19e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM18e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod417e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw16e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI15e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc14e$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU13e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu412e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko11e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag10e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81/e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41.e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1-e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY1,e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ1+e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k1*e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o1)e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1(e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ1'e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw581&e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U1%e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1$e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1#e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1"e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281!e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1 e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs ,NC 8 - { " p  e ZOD9.|#qf V@eL$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYsha256(%F=`2n.xM58s6V?eL$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAsha256b$ !2rؽ@^ͫ~EM V>eL$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIsha256Y:qJ 1@CnV=eL$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8sha256s>Q> DsG"z:`oV<eL$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xksha256>yd^Y3fq X-*EQFE_!1sA_5ßV&eL$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8Usha256a2-EPv V%eL$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgsha256zJġ/!(|MD4a0V$eL$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUsha256\1qɦ}{?h.5V#eL$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEsha256A!wV|-D`ZETu~U\"AV"eL$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828sha256mDΧ? K݅[]<%V 4oV!eL$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEsha256hq|$f8ļϹ V eL$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckgsha256>Kْ *8gsrHVeL$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dissha256J\6"ϖD-QӃVeL$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYsha256lJrXob#*K:Z+TVeL$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIssha2560 *OJsv?էiJ]g uAXVeL$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oosha256Dt:)=9 Rr,=AUVeL$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pYsha256Wf~kwR'34ʄ5ӌVfVeL$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgsha256c@⛆q=^_^]vsrIǥXVeL$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0sha256k0uKMO* SD1ŝVeL$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCssha256=qy4;~g=]w3߶ZܣP+VeL$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFssha256];n'wXu4⦐]ωFO[ MyM m@ _ 3   R % r E  d 7 W *wJi<\/|O"nAa4,Q!SBEprlZiuliFNSfNmz:localhost:8800nn+Q !SBEprlZiuliFNSfNmz:localhost:8800mm,Q!RmwbYvIIQyPlHlClty:localhost:8800||,Q!RmwbYvIIQyPlHlClty:localhost:8800{{,Q!RmwbYvIIQyPlHlClty:localhost:8800zz,Q!RmwbYvIIQyPlHlClty:localhost:8800yy,Q!RmwbYvIIQyPlHlClty:localhost:8800xx+Q !RmwbYvIIQyPlHlClty:localhost:8800ww,Q!RmdhCjvouVLmyIHjaM:localhost:8800 II,Q!RmdhCjvouVLmyIHjaM:localhost:8800 HH,Q!RmdhCjvouVLmyIHjaM:localhost:8800 GG,Q!RmdhCjvouVLmyIHjaM:localhost:8800 FF,Q!RmdhCjvouVLmyIHjaM:localhost:8800EE,Q!RmdhCjvouVLmyIHjaM:localhost:8800DD,Q!RmdhCjvouVLmyIHjaM:localhost:8800CC,Q!RmdhCjvouVLmyIHjaM:localhost:8800BB,Q!RmdhCjvouVLmyIHjaM:localhost:8800AA,Q!RmdhCjvouVLmyIHjaM:localhost:8800@@,Q!RmdhCjvouVLmyIHjaM:localhost:8800??+Q !RmdhCjvouVLmyIHjaM:localhost:8800>>,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 +Q !RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( (,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' ',Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & &,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % %,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ $,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # #,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " ",Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! !,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 +Q !RSLvuCuAqKQQrKCxNq:localhost:8800  ,Q!RPfffkmSEbWggEjnoI:localhost:8800--,Q!RPfffkmSEbWggEjnoI:localhost:8800++,Q!RPfffkmSEbWggEjnoI:localhost:8800((,Q!RPfffkmSEbWggEjnoI:localhost:8800%%,Q!RPfffkmSEbWggEjnoI:localhost:8800""+Q !RPfffkmSEbWggEjnoI:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800+Q !ROoilpDjLJfjKfSPIi:localhost:8800,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 +Q !RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800+Q !QyLUggxrTnULUAOseq:localhost:8800,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800  ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ ~+Q !QxqzQoEBIZhmzHIGrl:localhost:8800 } },Q!QnmLrBAxeItdHsaxWf:localhost:8800 k k,Q!QnmLrBAxeItdHsaxWf:localhost:8800 j j,Q!QnmLrBAxeItdHsaxWf:localhost:8800 i i MyM m@ _ 3   R % r E  d 7 W *wJi<\/|O"nAa4,Q!SBEprlZiuliFNSfNmz:localhost:8800nn+Q !SBEprlZiuliFNSfNmz:localhost:8800mm,Q!RmwbYvIIQyPlHlClty:localhost:8800||,Q!RmwbYvIIQyPlHlClty:localhost:8800{{,Q!RmwbYvIIQyPlHlClty:localhost:8800zz,Q!RmwbYvIIQyPlHlClty:localhost:8800yy,Q!RmwbYvIIQyPlHlClty:localhost:8800xx+Q !RmwbYvIIQyPlHlClty:localhost:8800ww,Q!RmdhCjvouVLmyIHjaM:localhost:8800 II,Q!RmdhCjvouVLmyIHjaM:localhost:8800 HH,Q!RmdhCjvouVLmyIHjaM:localhost:8800 GG,Q!RmdhCjvouVLmyIHjaM:localhost:8800 FF,Q!RmdhCjvouVLmyIHjaM:localhost:8800EE,Q!RmdhCjvouVLmyIHjaM:localhost:8800DD,Q!RmdhCjvouVLmyIHjaM:localhost:8800CC,Q!RmdhCjvouVLmyIHjaM:localhost:8800BB,Q!RmdhCjvouVLmyIHjaM:localhost:8800AA,Q!RmdhCjvouVLmyIHjaM:localhost:8800@@,Q!RmdhCjvouVLmyIHjaM:localhost:8800??+Q !RmdhCjvouVLmyIHjaM:localhost:8800>>,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RYNJAGdRhIlwRZFbrO:localhost:8800 +Q !RYNJAGdRhIlwRZFbrO:localhost:8800 ,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( (,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' ',Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & &,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % %,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ $,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # #,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " ",Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! !,Q!RSLvuCuAqKQQrKCxNq:localhost:8800 +Q !RSLvuCuAqKQQrKCxNq:localhost:8800  ,Q!RPfffkmSEbWggEjnoI:localhost:8800--,Q!RPfffkmSEbWggEjnoI:localhost:8800++,Q!RPfffkmSEbWggEjnoI:localhost:8800((,Q!RPfffkmSEbWggEjnoI:localhost:8800%%,Q!RPfffkmSEbWggEjnoI:localhost:8800""+Q !RPfffkmSEbWggEjnoI:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800,Q!ROoilpDjLJfjKfSPIi:localhost:8800+Q !ROoilpDjLJfjKfSPIi:localhost:8800,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!RDEAXrqXQizuhCUFPq:localhost:8800 +Q !RDEAXrqXQizuhCUFPq:localhost:8800 ,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800,Q!QyLUggxrTnULUAOseq:localhost:8800+Q !QyLUggxrTnULUAOseq:localhost:8800,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800  ,Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ ~+Q !QxqzQoEBIZhmzHIGrl:localhost:8800 } },Q!QnmLrBAxeItdHsaxWf:localhost:8800 k k,Q!QnmLrBAxeItdHsaxWf:localhost:8800 j j,Q!QnmLrBAxeItdHsaxWf:localhost:8800 i i }~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("  y r k d ] V O H A : 3 , %     | t l d \ T L D < 4 , $    D | t l d \ T L < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $   |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tl}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPON}M}L|K{JzIyHxGwFvEuDtCrBpAp@o?n>m=l<k;j:h9g8f7e6d5c4b3a2`1_0]/\.[-Z,Y+X*V)U(T'S&R%P$N#N"M!L KJHFFEDCB@?>=<;:966 5 4 3 2 10/-,+*)('&##"      ~}|{zyxwvutsrqponml~k}j|i{hygxfwevductbsar`p_o^n]m\k[jZiYhXfWeVdUcTaS`R_Q^P\O[NZMYLWKVJUITHRGQFPEODNCMBLAK@J?I>H=G<F;E:D9B8A7@6?5>4<3;2:1907/6.5-4,3+2*1)0(.'-&,%+$)#("'!& $#"!       e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( hpx`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    }|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987654~3~2}1|0{/z.y-v,v+u*t)s(r'q&o%m$m#l"k!j ihfddcba`_^]\ZYXVVU T S R Q POLLKJIHGFEDC@@?>=<;:987442210/.-,+)''&%$#"!      KIHGFEDCB@?==<;:976543210.-,+*('&%$"!     ~ }}wqke_YSMGA;5/)# {uoic]WQKE?93-'!   x q j c \ U N G @ 9 2 + $      { s k c [ S K C ; 3 + #    { s k c [ S K C ; 3 + #    { s k c [ S K C ; 3 + #    { s k c [ S K C ; 3 + #   {skc[SKC;3+# {skc[SKC;3+# {skc[SKC;3+# {skc[SKC;3+# {skc[SKC;3+# {sk}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM~L}K|J{IzHyGxFwEvDuCsBrAq@p?o>n=m<l;k:i9h8g7f6e5d4c3b2a1`0^/].\-[,Z+Y*W)V(U'T&S%Q$P#O"N!M LKIHGFEDCA@?>=<;:87 6 5 4 3 210.-,+*)('%$#"!      ~}|{zyxwvutsrqponmlk~j}i|hzgyfxewdvcubtas`q_p^o]n\l[kZjYiXgWfVeUdTbSaR`Q_P]O\N[MZLXKWJVIUHSGRFQEPDOCNBMAL@K?J>I=H<G;F:E9C8B7A6@5?4=3<2;1:08/7.6-5,4+3*2)1(/'.&-%,$*#)"(!' %$#"          e@xph`XPH@80( xph x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    }|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98765432~1}0|/{.z-x,w+v*u)t(s'r&p%o$n#m"l!k jigfedcba`_^][ZYXWV U T S R QPNMLKJIHGFEDBA@?>=<;:986543210/.-,*)('&%$#"!     LJIHGFEDCA@?>=<;:87654321/.-,+)('&%#"!     ~   j eQ_c$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 545}{"auth_events": ["$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "type": "m.room.power_levels", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"users": {"@anon-20191002_181700-125:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040751652, "hashes": {"sha256": "Zpj/pHIg3dw2Zh30HtThVF1Wl3QXuWPlzj6n3K8ZzL8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l3v6aLvonhQgtjM5rjc9gNXBq4JmTKHH+WVvG/fz2DcB0RDcr5/unkHLe6QfJOOkCFXKqRP/nn4MLnwWWS+ZBQ"}}, "unsigned": {"age_ts": 1570040751652}}ueQ_y$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 544}{"auth_events": ["$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs"], "prev_events": ["$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs"], "type": "m.room.member", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-125", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-125:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040749276, "hashes": {"sha256": "Nl2I4Z/u8Xd8hfPHLnh5iR3oFXMPIbFMxtbWexBoTnY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mOwHr6BfQb1neNUDXWwB7FuewieSj3cfNTuJhdOyufHmRFHeZFpN8wYr7F0x7EZA53EPishWfGLgWWvNkXSZDw"}}, "unsigned": {"age_ts": 1570040749276}}heQ__$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 543}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-125:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040748568, "hashes": {"sha256": "hMyHJiydY6LsaPrUq8rA2sBODvLcBIarWqn3z/0nVY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FYJgV/Am2QkGOrZim7PeAfoIy46fz3fxTFza2tdKnLXpHQBkouuc8Rt7LlU5aifPBz8/HUdQvAENY2KvNk9gAQ"}}, "unsigned": {"age_ts": 1570040748568}}}eQi$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M!VWYMJxEviBNDdJCuKT:localhost:8800{"token_id": 151, "txn_id": "58", "stream_ordering": 542}{"auth_events": ["$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0", "$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA", "$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs"], "prev_events": ["$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs"], "type": "m.room.message", "room_id": "!VWYMJxEviBNDdJCuKT:localhost:8800", "sender": "@anon-20191002_181700-123:localhost:8800", "content": {"body": "test", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040746912, "hashes": {"sha256": "X4ePuFhLISsJTrc5WPcGDFSlEkMBA8L1rcHLfoj1cKo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vyEoYHfSoqpMShthqoIh2JHlizjtZ+fHc2bYSflz7aSmJHx7Vt6Jql9rH89618/dKehDZMv6Xm/n+UrPG+X/Cg"}}, "unsigned": {"age_ts": 1570040746912}} -RM H C > 9 4/*|%w rmhc TMQeK!cHtqiAyCHEAoBIbCmL:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYATLQeJ!cHtqiAyCHEAoBIbCmL:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFITKQeI!cHtqiAyCHEAoBIbCmL:localhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3ETJQeH!cHtqiAyCHEAoBIbCmL:localhost:8800$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDATIQeG!cHtqiAyCHEAoBIbCmL:localhost:8800$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcTHQeF!cHtqiAyCHEAoBIbCmL:localhost:8800$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4TGQeE!cHtqiAyCHEAoBIbCmL:localhost:8800$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MTFQeD!cHtqiAyCHEAoBIbCmL:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRETEQeC!cHtqiAyCHEAoBIbCmL:localhost:8800$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0TDQeB!OBWkjfrDCNgYFfblia:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0TCQeA!OBWkjfrDCNgYFfblia:localhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYTBQe@!OBWkjfrDCNgYFfblia:localhost:8800$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSATAQe?!OBWkjfrDCNgYFfblia:localhost:8800$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIT@Qe>!OBWkjfrDCNgYFfblia:localhost:8800$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8T?Qe=!OBWkjfrDCNgYFfblia:localhost:8800$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkT>QeeQ9 $aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_aliasg=eQ3 $PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels <eQ']$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800joina;eQ' $q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800m.room.create ?FN V  \  d & l . q 1w9{;CH LNNR Q  !VWYMJxEviBNDdJCuKT:localhost:8800m&\1<= Q  !CgVBWWcRJoHEcwoLcq:localhost:8800m&\y>< Q!HcMGemcRrLnLprOJJR:localhost:8800m&\ >; Q!SyIWYOmcGiASNkPCTB:localhost:8800m&\ <: Q  !msMfSdLIAvklSSAnci:localhost:8800m&\6<9 Q  !GgUNbVXspVTpOlaHBl:localhost:8800m&\M>8 Q!eKrOqiOabJcMgIJjwC:localhost:8800m&\ !>7 Q!vVmSdclwPIqYDbnmPn:localhost:8800m&\ !>6 Q!edbUkYJIZBNOiTuLJs:localhost:8800m&\ !>5 Q!VAEDgDJVqmxXZyAlSW:localhost:8800m&\  $>4 Q!eySSVuCclRpBDgwKIU:localhost:8800m&\ *>3 Q!fJXiUpbbOlLbHWmPgs:localhost:8800m&\  )2>2 Q !oXKJArsPmtgaYANBrg:localhost:8800m&\  )T<1 Q  !egCvzKpbEwmuvDoBTb:localhost:8800m&\ >0 Q!XgobMgBjNcDRJnRXLD:localhost:8800m&\ #.>/ Q!wIhMbfQzYbJobPdwyi:localhost:8800m&\<. Q  !cSUQGmpIsSCBAVTOHo:localhost:8800m&\C<- Q  !SBEprlZiuliFNSfNmz:localhost:8800m&\<, Q  !KxhGcTbEWmtgGNpdox:localhost:8800m&\|=+ Q!HmkcAMkMjWRhTDJMsy:localhost:8800m&\ =* Q!OMkiVTuuOEeiFAXtUY:localhost:8800m&\ =) Q!BrssELMbasSzTFpIXm:localhost:8800m&\ <( Q   !RmdhCjvouVLmyIHjaM:localhost:8800m&\ .<' Q   !EyEaTZElOkdURKbEXo:localhost:8800m&\<& Q   !TWETXUgfFZafDdbqLS:localhost:8800m&\<% Q  !HAFNBarGuVZuWCgwWM:localhost:8800m&\4>$ Q!duCKuavMBSfRbTFPsc:localhost:8800m&\># Q!TleKOyAElrpgyyrAQA:localhost:8800m&\ ">" Q!IGVHKYcSuxzVPlFHlj:localhost:8800m&\  Q!OaCEdDAiatpwYcagUb:localhost:8800m&\  < Q  !GGTWnzJfvPQBgQqDIE:localhost:8800m&\i= Q !cosGKKhHvKaVukBCic:localhost:8800m&\#> Q!rZWweGEChkxxtzyfDB:localhost:8800m&\< Q  !uJtKGXTNdEnCPNOGDx:localhost:8800m&\:< Q  !vJQYmOxOBLwFKzYkNj:localhost:8800m&\*< Q  !kkgEEVUJynguTqAoWD:localhost:8800m&\<< Q  !dUnULFLGtgaVdwHtnz:localhost:8800m&\:< Q  !aWbcZNVBalJilCEsdr:localhost:8800m&\:< Q  !kxTDuIasPNpXtiRsif:localhost:8800m&\7< Q  !wvnfKBSrUlfNmYoeil:localhost:8800m&\:< Q  !NhWgOTYzEPRwAxRQvS:localhost:8800m&\>< Q  !scyFsXcUIJiLIMwWMY:localhost:8800m&\>< Q  !aWJOsiuJONOvjKWEjO:localhost:8800m&\A< Q  !BDASLhdcKfNwxCTCSg:localhost:8800m&\A< Q  !xwoIOPTGmJIlTXakxC:localhost:8800m&\A> Q !jYzridjeihmwPBuwLb:localhost:8800m&\5< Q  !NZHpBquHDfJAjiawGk:localhost:8800m&\L< Q  !uxKymrHZeXRYCZwekU:localhost:8800m&\O< Q  !sPWVGnipjiiWQpywNO:localhost:8800m&\ @< Q  !GixhPUMvtKSWoKRgvw:localhost:8800m&\< Q  !zhCsYcaweVFJLLNwBz:localhost:8800m&\b< Q  !loalEsWaTYwrVUNJLr:localhost:8800m&\< Q  !LaLcEGFLpjdlYlYKGC:localhost:8800m&\< Q  !odAvowLhHJcmkKlxFk:localhost:8800m&\< Q  !plcvCHNbjCkNMMxnTk:localhost:8800m&\B< Q  !QZhNrNpwObZGJZpdAG:localhost:8800m&\4< Q  !zNCItZNbpkZKuufRhC:localhost:8800m&\Z ?DG H  N  R  U   ! _h(l.s4t4x:BJ L <~ Q  !sfXbvAcOUJhzGwWEpZ:localhost:8800m&\ >} Q!YufaOfAlruTdjyUCwO:localhost:8800m&\ 9>| Q!ifQxHmNAcSSGHVMjfi:localhost:8800m&\ !>{ Q!EABRjdYuYumMhLSwIa:localhost:8800m&\ !>z Q!FIOuvzpMhoERunVYYA:localhost:8800m&\ 9>y Q!zNBpypJDRMlBdOcLlW:localhost:8800m&\ !l Q!FPcQcheNebvdFvmOnr:localhost:8800m&\ z>k Q!vOfeZvbtpuHfoqShFl:localhost:8800m&\ #>j Q!EieRtaCFZJJCIOkRPp:localhost:8800m&\ #>i Q!NQgavrmiCPUVaVjssy:localhost:8800m&\ z>h Q!hgjYwwwjWJNgwrzOto:localhost:8800m&\ #=g Q !dnZVySJLGNtUKsSgXW:localhost:8800m&\=f Q !oznZaCpONuNDaLarkI:localhost:8800m&\b Q!bnTuVBaAJTPbcYZtRl:localhost:8800m&\  <` Q  !tDsPLsKOLPePtEWRwn:localhost:8800m&\y>_ Q!XMNRkfscQXRjgYrOSd:localhost:8800m&\=^ Q !wUuodvgsmAJqKJUBCQ:localhost:8800m&\:] Q !VCSCNemqikJZiRtxrs:localhost:8829m&\ZU Q!itKDOCtoMkFUETDtle:localhost:8800m&\T=T Q  !qxqNYKdtgvOQdhmgsj:localhost:8800m&\  *j>S Q!MlzmtUYSZOiByAZdKx:localhost:8800m&\P Q!IMiczgkCTjejbnbeyP:localhost:8800m&\6>O Q!HIZTeBCxvpMSpcqGVD:localhost:8800m&\`K Q!JusxqeECtidaPlWqhp:localhost:8800m&\7>J Q !aWvVRVaDflYyyGTOdD:localhost:8800m&\ )=I Q !GiSxJsKZhQVHBkrVPn:localhost:8800m&\  / >H Q!AjjrNwXmPTCruHxaJq:localhost:8800m&\  #>G Q !BkzROHxDAfKIzYpmPV:localhost:8800m&\  *~=F Q !WWZVpyLeZfyfpWidLx:localhost:8800m&\  %>E Q!XIqmzIFbkHGQPIpywk:localhost:8800m&\  $C Q !cHtqiAyCHEAoBIbCmL:localhost:8800m&\  $@ Q!CQKLQUpSYakhxVDltC:localhost:8800m&\ " LYj8p> Y v ] D + | c 1 i 7  o = u C }KR Y(`.f4S!1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI 1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA 1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU 1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 x1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA A1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:42455 ~1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM3$68:localhost:42455 }3$67:localhost:42455 y3$66:localhost:42455 z3$65:localhost:42455 x1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 =1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE3$62:localhost:42455 v1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY3$61:localhost:42455 m1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM}1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4R1e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkL1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ \0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Mv1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas0e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU~1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr081e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 `1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8 0e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_401e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUR1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa00e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwR0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wc1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU V1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA 1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w=1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEJ1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c .1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI3$56:localhost:42455 71e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE3$55:localhost:42455 11e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc53$54:localhost:42455 &3$51:localhost:42455 3$50:localhost:42455 1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs 1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GYu1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok %1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo 1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0 fP101/2041627384951062738495:6;7<8=9>20?3@4A5B6C8E9F3y1G2H4I6J7K8L9M4{0N1O3P4Q6R7T8S5}0V1W2X3Y4Z6[8\6~0]1_2a3b4c5e6f7g8i9j70k3l4m5n6o8p9r80q1s7002t3u4v5w6x7z8|9~902^01910021234567 3`1 2 3 4 567896d123456787012457 9!8h1"2#3$4%5&6'7(80029*1 9)91*3+5,7-9.  7 7Fanoncreeperdhere   lemurlovervocalhostmyname   overridden lremote -RM H C > 9 4/*|%w rmhc T Qe !XIqmzIFbkHGQPIpywk:localhost:8800$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20TQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYTQe!lMRBkbYJDQHgdBZBFJ:localhost:8800$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSETQe!cHtqiAyCHEAoBIbCmL:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagTQe!cHtqiAyCHEAoBIbCmL:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYATQe!cHtqiAyCHEAoBIbCmL:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFITQe!cHtqiAyCHEAoBIbCmL:localhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3ETQe!cHtqiAyCHEAoBIbCmL:localhost:8800$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDATQe!cHtqiAyCHEAoBIbCmL:localhost:8800$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcTQe!cHtqiAyCHEAoBIbCmL:localhost:8800$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4TQe!cHtqiAyCHEAoBIbCmL:localhost:8800$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MTQe!cHtqiAyCHEAoBIbCmL:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRETQe!cHtqiAyCHEAoBIbCmL:localhost:8800$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0TQe!OBWkjfrDCNgYFfblia:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0TQe!OBWkjfrDCNgYFfblia:localhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYT Qe !OBWkjfrDCNgYFfblia:localhost:8800$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAT Qe !OBWkjfrDCNgYFfblia:localhost:8800$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIT Qe !OBWkjfrDCNgYFfblia:localhost:8800$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8T Qe !OBWkjfrDCNgYFfblia:localhost:8800$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkT Qe !OBWkjfrDCNgYFfblia:localhost:8800$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYTQe!OBWkjfrDCNgYFfblia:localhost:8800$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56VkTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEITQe!ntuwVdUxfzNIhIKYaz:localhost:8800$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agTQe!ntuwVdUxfzNIhIKYaz:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4TQe!ntuwVdUxfzNIhIKYaz:localhost:8800$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMT~Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYT}Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQT|Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3kT{Qe!ntuwVdUxfzNIhIKYaz:localhost:8800$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5oTzQe!ntuwVdUxfzNIhIKYaz:localhost:8800$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqMTyQe!CQKLQUpSYakhxVDltC:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgTxQe!CQKLQUpSYakhxVDltC:localhost:8800$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUTwQe!CQKLQUpSYakhxVDltC:localhost:8800$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEETvQe!CQKLQUpSYakhxVDltC:localhost:8800$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828TuQe!CQKLQUpSYakhxVDltC:localhost:8800$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPETtQe!CQKLQUpSYakhxVDltC:localhost:8800$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg  gh$eQ_M$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 549}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE"], "type": "m.room.aliases", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"aliases": ["#test-20191002_181700-18:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040754704, "hashes": {"sha256": "qJrOHmYoAzQnQvCTZYJTuu5bHPfDMm7dSGiZKZoQ9bM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6abx4lSw2WtBaf7arxKq2kIrO3Z+FKcVmr96uZHmbOsUkzanfAlHb5rVZFWNNYwK034COvfj4q4Za10C0pZpCA"}}, "unsigned": {"age_ts": 1570040754704}}#eQ_$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 548}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"], "type": "m.room.history_visibility", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040753507, "hashes": {"sha256": "GL4S172Gl12zqxB6rrLYeJ+UqyKxwzlhvxm40tOqV8w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3wd9urWbcVksNahpyr3zCoFP7ZzYKzk/Qpxxw/1KO7A6k/JZO2GqhJBDPr1qHX3nDUy0ZczQdETTM211P/7cAw"}}, "unsigned": {"age_ts": 1570040753507}}s"eQ_u$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 547}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE"], "type": "m.room.join_rules", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040752930, "hashes": {"sha256": "3tfCRuG4sY4txLcarG8r5hrYf8EDta/bc8ZSfkJk+OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KheeodYZUdkCzUVU49FCm3lPMGtg37JXOLJZMo6jRZTFbwfclHaZFtzGp0WpJKBrEMJIQAzqNEeYZRXONFm4BA"}}, "unsigned": {"age_ts": 1570040752930}}!eQ_9$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 546}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg"], "type": "m.room.canonical_alias", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {"alias": "#test-20191002_181700-18:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040752332, "hashes": {"sha256": "nW0XM9wE9e1JWR3FYTfRdbDdky+J3SdnHwtTSZ8P+ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qsYWSaVJ9RB4b3o+RmaMOAGyWfg3DnH3WseSoM5S6fWdfeil33p43cpQIcZzUHrjLpnwwWQOXta+VcztGnw9Aw"}}, "unsigned": {"age_ts": 1570040752332}} a} { y w u sqomkigeca~?eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~>eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~=eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~<eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~;eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~:eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~9eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~8eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~7eeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~6eeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~5eeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~4eeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~3eeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~2eeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~1eeQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~0eeQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~/eeQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~.eeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800~-eeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~,eeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~+eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~*eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~)eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~(eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~'eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~&eeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~%eeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~$eeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800~#eeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800~"eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800~!eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800 ~z v r n j fb^ZVRNJFeeQ$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800eeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800eeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800~eeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800}eeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800|eeQ$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800{eeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800zeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800yeeQ$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800xeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800weeQ$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800veeQ$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800ueeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800teeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800seeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800reeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800qeeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800peeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800oeeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800neeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800meeQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800leeQ$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800keeQ$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58!CQKLQUpSYakhxVDltC:localhost:8800jeeQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800ieeQ$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800heeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800geeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800feeQ$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828!CQKLQUpSYakhxVDltC:localhost:8800 V 'xV(eQ_$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 553}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58"], "type": "m.room.redaction", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {}, "depth": 11, "prev_state": [], "redacts": "$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58", "origin": "localhost:8800", "origin_server_ts": 1570040757540, "hashes": {"sha256": "WFQPyLctbiL03z6DC6pr0ghXBVcRCMJTjWnp8MS9We0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "owXjoQcedRqmiMBx0uFhXOWsO3R9KAednhZAdnwkvRQclRF5J9A6+PcLl2Cni0qRm/UG8E/JPP/KguedaLWRAw"}}, "unsigned": {"age_ts": 1570040757540}}M'eQ_)$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 154, "stream_ordering": 552}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis"], "prev_events": ["$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U"], "type": "m.room.redaction", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-125:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040757050, "hashes": {"sha256": "KjGpsPjT5dcsl44KFyLGCanb5btSgEEVedcejgQiaYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VX7tmEI+hMLApriqZPHkw5m0B9mv9n7qWwnvJ3t8/WezEo7df/VHUqOQ+Yhk6ZtFa5rzkB55btAuk1ezIzVWDQ"}}, "unsigned": {"age_ts": 1570040757050}}Z&eQ#$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 153, "txn_id": "59", "stream_ordering": 551}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg"], "prev_events": ["$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg"], "type": "m.room.message", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-126:localhost:8800", "content": {}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040756337, "hashes": {"sha256": "mRVaJFPDTU6NyObN7AKtrkSkHCmZVMOH3Df71oFZXBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Yr8exnAxOGRGDM7BLWtfYK8JWoBgm6cJu+PZQrJVHrcOJo1nGrQNIVcjN+ln8e1mvOouneZienYpJCW+FIAwBQ"}}, "unsigned": {"age_ts": 1570040756337}}U%eQ_9$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800{"token_id": 153, "stream_ordering": 550}{"auth_events": ["$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg", "$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs", "$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"], "prev_events": ["$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU"], "type": "m.room.member", "room_id": "!CQKLQUpSYakhxVDltC:localhost:8800", "sender": "@anon-20191002_181700-126:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-126", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-126:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040755532, "hashes": {"sha256": "v5PPwDaerkovCKrvpY2Zdj1pPDYQAGYhK0na95sXWi0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gRXkhxkJKlkjh93lx0i3CXc3w8tgBOgCjWg5qbT58R664FjQ6j2vAmTPs4J0ViNgUBAGPVkbpetmgjrL2lY2CA"}}, "unsigned": {"age_ts": 1570040755532}} $p 0 @ P ` p(8HXhD  pu- ]@anon-20191002_181700-162:localhost:8800$2b$04$i5xSH6eU8jakNTzW8p5ld.nsVvDK8BEm68MnZV./rPK0p84TOgaJS]K!, / @4:localhost:8800]Ku+ ]@anon-20191002_181700-161:localhost:8800$2b$04$0o3TSpWCE5106gJsz32tS.O5qGstK1SKyGoxHiLiGAfgsiVtBGpX.]C!* / @3:localhost:8800]Bu) ]@anon-20191002_181700-160:localhost:8800$2b$04$QUIQVwC/POVPj99X.Ift/uTwfdMUk0Fhp2QDfX9eMgNxo4c59TcnO];!( / @2:localhost:8800];!' / @1:localhost:8800];u& ]@anon-20191002_181700-159:localhost:8800$2b$04$yD58DqGX0mkrPSeGgUoIQuwgEsvBi80D7tPYfn6K0ouA8GlmiGQX2]3u% ]@anon-20191002_181700-158:localhost:8800$2b$04$8Kg6BxkvJ5rAS2Twoba49u8F7dRwiVpHTAoraZUl.D6R.mFVMyRwm]3u$ ]@anon-20191002_181700-157:localhost:8800$2b$04$sOd.OAO87i9ULYMauSE1oe4pAx9gK9ZSpeM3lDDIEMNipYBWuprQa]+u# ]@anon-20191002_181700-156:localhost:8800$2b$04$6XJmdjc8jOs2Mtqh6FCkb.yV/VPg7eoasZ.tLNv6mb2iW4Yoch/u.]*u" ]@anon-20191002_181700-155:localhost:8800$2b$04$POMbDLJ9p95iutvJplZ3re/arWQYPa7mPMs0Jfc.vZWdN1OVrS.1e]$u! ]@anon-20191002_181700-154:localhost:8800$2b$04$WsSQLGzUIiHQaCWufQmYVeOBUo1VsJwmmK6E/NomCDJMeLetqQKjK]$u ]@anon-20191002_181700-153:localhost:8800$2b$04$tmeI2JrIpki0UXkgATXL5.6A8ggupSPhJ0o/kXDm/5JXJNx7ZKffC]u ]@anon-20191002_181700-152:localhost:8800$2b$04$xjbk17XL/wsG323kEke7jeTlPc55Kh4oh3syONzj1K.GRY1xD/8kq]u ]@anon-20191002_181700-151:localhost:8800$2b$04$5wo5/18nhPJVe8xYRox7E.73u4FTSQwDDMRpB2Jp70i/kiQEk35uG]u ]@anon-20191002_181700-149:localhost:8800$2b$04$1RMfvFuh6Z6Qsrv1IxBfeeTud9Ou52yW7d1g6Kl5kqD69s8iPhcxu]u ]@anon-20191002_181700-150:localhost:8800$2b$04$byz1D8hQFz3fZUX81nCQCedsQWoIgKsTMpwWR9/RJzftclW6wX2e2]u ]@anon-20191002_181700-146:localhost:8800$2b$04$9InPJaJ.AZLKTOGgS1vu2uBkGA0x0fK3Rc.fSirT5yFX55lzUh6Ym]u ]@anon-20191002_181700-143:localhost:8800$2b$04$W0Bst5dKsTnCF4NOeJ2JX.hh12fZZgATSqBX1lE8C2PNaU7EJZMAm]u ]@anon-20191002_181700-144:localhost:8800$2b$04$DLN43kaqKun4BYU9InbduuUsygQF3GHnOLS1KJSEpr2xmU2T.OUQG]u ]@anon-20191002_181700-142:localhost:8800$2b$04$X8g8dW3bqgqoBXnhEKHEduaW1Fw8LPbUge1dpLHU7Uy5fLn1GR8cW]u ]@anon-20191002_181700-141:localhost:8800$2b$04$EK0l0pvKUeMdgaTWc3wUCe95TX8I.EqLhUKn0KRDnwipyoLzsQ16e]u ]@anon-20191002_181700-140:localhost:8800$2b$04$DYkWy/S.a5MNi.tuUvaDMuQvurNVtgWQ036s/r54ibpYrrXdFR9Iq]u ]@anon-20191002_181700-138:localhost:8800$2b$04$e4VBigcjuZ5a4qh8nPskJeVNcBUZz0Vx2.emWcCC0uFc9BwEb6pW2]u ]@anon-20191002_181700-136:localhost:8800$2b$04$opK1pzUOVesRdbRlud.fTOE6LgqNxrXQWNACBxi1xYLp2O8DT5OJm]u ]@anon-20191002_181700-137:localhost:8800$2b$04$beKushmAttf3SjctSh954ugvFDJDaK/k3TfT9hfZxnit1R8DSIBe6]u ]@anon-20191002_181700-135:localhost:8800$2b$04$fgm2H9.4rDLFYpZnEahnheMwmrOS5AiJcHpZ4MFSyVtADa7qdCepC]u ]@anon-20191002_181700-134:localhost:8800$2b$04$qe3j/sNng9hfDQtZ/yO30OuAXfiL01mL4nHInyOJD9lyVafffMZMC]u ]@anon-20191002_181700-133:localhost:8800$2b$04$2nwXlgQ5T2ENeVlZt1tnquHVob1xBBwmUGAadGq5MB2N7x5qeibdq]u ]@anon-20191002_181700-131:localhost:8800$2b$04$kOhwL24kDwkOe1ao.u/Gq.MubTF/0thgTHVI4aP0IICToHsBS.y0e]u ]@anon-20191002_181700-132:localhost:8800$2b$04$KSLDh9u9eIEzY7I5tPzF6.aMTtqVPry/1X0Pa1Evf.y4NoG5IfdMe]u ]@anon-20191002_181700-129:localhost:8800$2b$04$tvrCuHBc7LjuEIepEwY7NOeLI9Z.eqEJoHl3zXob0otFzl9zZswhm]u ]@anon-20191002_181700-130:localhost:8800$2b$04$mdNxjHymtmmMe/trsS0KB.kzhnumBfwEtp88N05nPPy649iPsX5MW]u ]@anon-20191002_181700-127:localhost:8800$2b$04$ToyuRrW23TWE87k3NRqoQ.kJ5lpIrjJjOcshQZHc8jI1O6eq4fvsW]u ]@anon-20191002_181700-128:localhost:8800$2b$04$VNGewciYdjkMbbw1T6klQ.SV0yQ7RynWK6MyLQ3A0UYU.a3BHAWEi] h g 4 5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6Swo ! 0 T P  # SX  9]Y;cQ' e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.create$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIrQ))e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EoQ? e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibility$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAgQ/ e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rules$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UclQ9 e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_alias$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4iQ3 e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M Q']e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREcQ' e!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0 Q']e!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0rQ))e!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYoQ? e !OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibility$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAgQ/ e !OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rules$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIl Q9 e !OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_alias$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8i Q3 e !OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk Q']e !OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-129:localhost:8800$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYc Q' e!OBWkjfrDCNgYFfblia:localhost:8800m.room.create$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vkg Q/ e!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMaQ# e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4 Q']e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIgQ/ e!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4aQ# e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoiQ3 e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag Q']e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8rQ))e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4oQ? e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMgQ/ e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rules$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYlQ9 e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_alias$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQi~Q3 e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k }Q']e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5oc|Q' e!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM   -,eQ_9$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 557}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k"], "type": "m.room.canonical_alias", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"alias": "#test-20191002_181700-19:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040761248, "hashes": {"sha256": "sBu1K+xSTcMQotMElylGn+r5WHGce8GJsnnN68TE3RU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cUhkr4q50mEU/KTW0eqMaXj2hZR5aJ0Szc/nhTKr9D5Mi7O32klGTp0FfaCSlU+9pNq+TOxp04isnW+U1sA5AA"}}, "unsigned": {"age_ts": 1570040761248}}j+eQ_c$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 556}{"auth_events": ["$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "type": "m.room.power_levels", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"users": {"@anon-20191002_181700-127:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040760349, "hashes": {"sha256": "A5a9Lkr+Y0/CK1oWUM4Ouil92wW9P9JS4SbYho/eBzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RSF4DOjHcUgFkA0H8tXueTmwcm5+M/Krl+1dCMyKlPuM/dvBMt4FTLWYQwC63llmW+TImLevoTRXgaiRPlCDBQ"}}, "unsigned": {"age_ts": 1570040760349}}u*eQ_y$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 555}{"auth_events": ["$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM"], "prev_events": ["$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM"], "type": "m.room.member", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-127", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-127:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040759785, "hashes": {"sha256": "HOt3EEddIXpcga81jei2p2To4qByldCgB4IgRgtP97Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3He4hNe1QRbdBmnUYlxCvxDZ7SDHgSjVlH1WNWew9KuoKJmHrPpINNQsPHQ2jT1ru7O+DITllg7jeQn5RLPDBQ"}}, "unsigned": {"age_ts": 1570040759785}}h)eQ__$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 554}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-127:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040759060, "hashes": {"sha256": "BLEUop/nVGcTr3YZG0X3re644zqvkk68WDakdaNwAYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8jFx09NYWdaT2qpwyUqnmJwH/Yay6OAM0wJca42PUaLKLMNjPb33zgWXGw/4ylXc4LKSChEb6ujjYweLbwxyBw"}}, "unsigned": {"age_ts": 1570040759060}} W^ c f  v);OTW!Ae)Q ]$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYm.room.aliases!OBWkjfrDCNgYFfblia:localhost:8800mmh@anon-20191002_181700-129:localhost:8800,@e?Q ]$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAm.room.history_visibility!OBWkjfrDCNgYFfblia:localhost:8800mfm9@anon-20191002_181700-129:localhost:8800$?e/Q ]$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIm.room.join_rules!OBWkjfrDCNgYFfblia:localhost:8800mhm@anon-20191002_181700-129:localhost:8800)>e9Q ]$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8m.room.canonical_alias!OBWkjfrDCNgYFfblia:localhost:8800mmK@anon-20191002_181700-129:localhost:8800&=e3Q ]$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkm.room.power_levels!OBWkjfrDCNgYFfblia:localhost:8800mm@anon-20191002_181700-129:localhost:8800 <e'Q ]$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYm.room.member!OBWkjfrDCNgYFfblia:localhost:8800mm@anon-20191002_181700-129:localhost:8800; e'Q  ]$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vkm.room.create!OBWkjfrDCNgYFfblia:localhost:8800mm@anon-20191002_181700-129:localhost:8800$:e/Q ]$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMmadeup.test.state!ntuwVdUxfzNIhIKYaz:localhost:8800mm@anon-20191002_181700-128:localhost:88009e#Q ]$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4m.room.name!ntuwVdUxfzNIhIKYaz:localhost:8800mm)@anon-20191002_181700-128:localhost:8800!8e)Q ]$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhwm.room.message!ntuwVdUxfzNIhIKYaz:localhost:8800mm@anon-20191002_181700-128:localhost:8800 7e'Q ]$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIm.room.member!ntuwVdUxfzNIhIKYaz:localhost:8800mm/@anon-20191002_181700-127:localhost:8800!6e)Q ] $yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Scm.room.message!ntuwVdUxfzNIhIKYaz:localhost:8800 mZmd@anon-20191002_181700-128:localhost:8800!5e)Q ] $0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuUm.room.message!ntuwVdUxfzNIhIKYaz:localhost:8800 m'm@anon-20191002_181700-128:localhost:8800$4e/Q ] $nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4madeup.test.state!ntuwVdUxfzNIhIKYaz:localhost:8800 mބm@anon-20191002_181700-128:localhost:88003e#Q ] $wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkom.room.name!ntuwVdUxfzNIhIKYaz:localhost:8800 mmܽ@anon-20191002_181700-128:localhost:8800&2e3Q ] $Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agm.room.power_levels!ntuwVdUxfzNIhIKYaz:localhost:8800 mٲm@anon-20191002_181700-127:localhost:8800 1e'Q ]$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8m.room.member!ntuwVdUxfzNIhIKYaz:localhost:8800m'm~@anon-20191002_181700-128:localhost:8800!0e)Q ]$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4m.room.aliases!ntuwVdUxfzNIhIKYaz:localhost:8800mӫmU@anon-20191002_181700-127:localhost:8800,/e?Q ]$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMm.room.history_visibility!ntuwVdUxfzNIhIKYaz:localhost:8800mmW@anon-20191002_181700-127:localhost:8800$.e/Q ]$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYm.room.join_rules!ntuwVdUxfzNIhIKYaz:localhost:8800mmΧ@anon-20191002_181700-127:localhost:8800)-e9Q ]$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQm.room.canonical_alias!ntuwVdUxfzNIhIKYaz:localhost:8800mˠmW@anon-20191002_181700-127:localhost:8800&,e3Q ]$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3km.room.power_levels!ntuwVdUxfzNIhIKYaz:localhost:8800mm@anon-20191002_181700-127:localhost:8800 +e'Q ]$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5om.room.member!ntuwVdUxfzNIhIKYaz:localhost:8800mmE@anon-20191002_181700-127:localhost:8800* e'Q  ]$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqMm.room.create!ntuwVdUxfzNIhIKYaz:localhost:8800mmÆ@anon-20191002_181700-127:localhost:8800 d 7 Kdj<eQ_c$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 573}{"auth_events": ["$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "type": "m.room.power_levels", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"users": {"@anon-20191002_181700-129:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040772865, "hashes": {"sha256": "EshxAKVeTB5uE2naXLRkQknsGH+kTiFxBtNMMY7K8YE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lfeoENNTc6qaVzY0E1YArx/8xQN2nQukCwz+KitDQaxT/1Em5P/uzJxQKDXXdADw29q/Vmynrx0PjmM5Tl/vAA"}}, "unsigned": {"age_ts": 1570040772865}}u;eQ_y$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 572}{"auth_events": ["$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk"], "prev_events": ["$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk"], "type": "m.room.member", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-129", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-129:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040772344, "hashes": {"sha256": "FQUz45dGIObKEtEnVgAo/8KYHm8rVrvMrwWzUH3CEf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s3+IBQBYkf5nHnbv2w2GJmjxVeUHQuWJHY9Q0LXJynzN8jjxL1d8WN7OTdlhQWTslFdQCy3nIKP0rSHuPRIPAg"}}, "unsigned": {"age_ts": 1570040772344}}h:eQ__$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 571}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-129:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040771713, "hashes": {"sha256": "2vKMEubttI35AhxbSJR3n0nNBd25mrfSnqD6zdpHJPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nhd2qZGxOoOpDEzUqugcKxDvOQZIPRU9BaO/h7Nab9y/6He4Z5LojxSFY5B9/x768Uxnx+DAvxY2W4FBK6XbAQ"}}, "unsigned": {"age_ts": 1570040771713}}E9eQ_$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 570}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4"], "type": "madeup.test.state", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "S2. B's state after A left"}, "depth": 17, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040769557, "hashes": {"sha256": "9ytOmL+WoKqWDGl/bqy722GzHrk++DnFL2Nu9Qm214Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BadjAUDXMYpOTLaVyUQYyDROR1ZdGB3fKgnBM5Iuti7r5eocELtIW9HlNpHq3ShHHPd0tpToiDFATPHs2ZueCw"}}, "unsigned": {"age_ts": 1570040769557, "replaces_state": "$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4"}} D/O k hr j1 P q9L M 4 2Ni  Q0 1 3V   m l 3$82:localhost:42455sha256 8e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gsha256 h8e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYsha2568e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQsha2568e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9Msha2568e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4sha2568e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwsha256M8e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0rosha2568e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8sha2568e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWEsha256 8e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Asha256H8e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4sha256F8e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28sha256^8e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0osha2568e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQoksha256F8e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNosha256`8e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsMsha2568e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Oksha25618e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Asha2568e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEsha2568e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1ggsha2568e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMssha2568e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgsha2568e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMsha2568e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRosha256o8e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0sha256 8e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugsha256 8e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpAsha256 )G$83_outlier_C:localhost:42455sha256 8e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMsha256 8e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4sha256 8e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTtosha2568e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8sha256X8e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08sha2568e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQsha256 8e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1ksha256J8e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4sha256 8e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0sha256"8e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyksha256 B8e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMosha2568e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgsha2568e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74sha256 8e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7wsha2568e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Asha256 _8e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Ysha2568e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Ysha256 3$87:localhost:42455sha256 8e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUsha256 8e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMsha256 8e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMsha256 V3$80:localhost:42455sha256 8e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8Usha256 e 23$89:localhost:42455sha256 3$88:localhost:42455sha256 8e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlksha256Y8e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIsha256K8e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAsha256 _r8e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywsha2568e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4sha2568e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAsha256D8e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfksha25658e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUsha2568e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqUsha256}8e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0sha2568e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMsha256W7e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQsha256s8e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZcsha256 8e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8sha256  ^U0eQ_9$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 561}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY"], "prev_events": ["$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4"], "type": "m.room.member", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-128", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-128:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040763943, "hashes": {"sha256": "9gSN4jBJ/d2NG3DkSikuGXKcSpoJ8eOOW5K5boUBRSs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ohMT+6HJG53SGl8++hN3KW8mVs44cKbNB5Y1mXCP2bTA62O2yiMtIp744h6XWGn3kdG7F/PeYyovtYXPJCpzCA"}}, "unsigned": {"age_ts": 1570040763943}}/eQ_M$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 560}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM"], "type": "m.room.aliases", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"aliases": ["#test-20191002_181700-19:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040763307, "hashes": {"sha256": "GaVekx1c/pGX5n4TRLoHB84pMphHlAiD/HIokUJh0zE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3xE5984HLwR0ry0B5I0F18vs1egQ4Vc0ukw2ADOBJhk1sGAWDQ4tfZsEG2UK+FHJfJnqulcJbVjDQSJrtKpIBg"}}, "unsigned": {"age_ts": 1570040763307}}.eQ_$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 559}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY"], "type": "m.room.history_visibility", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040762355, "hashes": {"sha256": "/934++9a/Rw2LK7NrlqY48fxfJvq8W8/Th+8CRBpu3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mUR67ZqQ60VrxRHJBMUgt6a1NLhLXUHM8pOtRHo7os2DQ0rOggNPG41QUMw0SHgVnOd8G1gz4mHXblYg/b92BQ"}}, "unsigned": {"age_ts": 1570040762355}}s-eQ_u$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 558}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ"], "type": "m.room.join_rules", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040761855, "hashes": {"sha256": "+z6t+nq2t0IOah0JwPrbM6p+3RuBneZpelZFTpRasWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ob2Kq9ls4Z55MqJJ9lJwinuDiOqmeCihkQrN4iklOBjBDuyEsLIEWGLYSOAon/03yJaT5afrp7xCCEN7jtVnBA"}}, "unsigned": {"age_ts": 1570040761855}} "& \ m   = eet 5R8GPxaeQ' $KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800m.room.create eQ']$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800meQ? $pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibilityeeQ/ $hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rulesgeQ3 $PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels eQ']$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800aeQ' $5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.create eQ']$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800 eQ']$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800 ~eQ']$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800p}eQ))$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800m|eQ? $JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibilitye{eQ/ $KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rulesjzeQ9 $LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_aliasgyeQ3 $oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels xeQ']$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800aweQ' $frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create veQ']$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800pueQ))$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800mteQ? $GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibilityeseQ/ $pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rulesjreQ9 $mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_aliasgqeQ3 $Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels peQ']$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-129:localhost:8800aoeQ' $jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800m.room.createeneQ/ $UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state_meQ# $U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name leQ']$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800ekeQ/ $nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state_jeQ# $wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.namegieQ3 $Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels heQ']$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800pgeQ))$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800mfeQ? $d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility a} { y w u sqomkigeca~^eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~]eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~\eeQ$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~[eeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~ZeeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~YeeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~XeeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~WeeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~VeeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~UeeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~TeeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~SeeQ$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~ReeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~QeeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~PeeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~OeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~NeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~MeeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~LeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~KeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~JeeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~IeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~HeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~GeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~FeeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800~EeeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~DeeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800~CeeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o!ntuwVdUxfzNIhIKYaz:localhost:8800~BeeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM!ntuwVdUxfzNIhIKYaz:localhost:8800~AeeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800~@eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800 : 7 n NH @y- e]]Q$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4@anon-20191002_181700-142:localhost:8800@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800inviteC e]]Q=$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800joinanon-20191002_181700-141E e]]Q=$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800inviteanon-20191002_181700-141C e]]Q=$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8@anon-20191002_181700-140:localhost:8800@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800joinanon-20191002_181700-140C e]]Q=$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0@anon-20191002_181700-139:localhost:8829@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800joinanon-20191002_181700-139- e]]Q$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk@anon-20191002_181700-139:localhost:8829@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800inviteC e]]Q=$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc@anon-20191002_181700-138:localhost:8800@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800joinanon-20191002_181700-138C e]]Q=$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs@anon-20191002_181700-137:localhost:8800@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800joinanon-20191002_181700-137- e]]Q$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ@anon-20191002_181700-137:localhost:8800@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800inviteC e]]Q=$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg@anon-20191002_181700-136:localhost:8800@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800joinanon-20191002_181700-136E e]]Q=$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ@anon-20191002_181700-135:localhost:8800@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800inviteanon-20191002_181700-135C e]]Q=$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY@anon-20191002_181700-134:localhost:8800@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800joinanon-20191002_181700-134E e]]Q=$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag@anon-20191002_181700-133:localhost:8800@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800inviteanon-20191002_181700-133C e]]Q=$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800joinanon-20191002_181700-132E e]]Q=$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800inviteanon-20191002_181700-132C e]]Q=$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE@anon-20191002_181700-131:localhost:8800@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800joinanon-20191002_181700-131E~ e]]Q=$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0@anon-20191002_181700-130:localhost:8800@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800inviteanon-20191002_181700-130C} e]]Q=$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY@anon-20191002_181700-129:localhost:8800@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800joinanon-20191002_181700-129,| e]]Q$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI@anon-20191002_181700-127:localhost:8800@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800leaveC{ e]]Q=$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8@anon-20191002_181700-128:localhost:8800@anon-20191002_181700-128:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800joinanon-20191002_181700-128 . Q.4eQ$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "txn_id": "60", "stream_ordering": 565}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4"], "type": "m.room.message", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "M1. B's message before A left", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040766759, "hashes": {"sha256": "+uV71p53vCatgNlErFeEz35yeavv0CQ1SLCIc48hQEo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IPEbHr3tzo9Tfes0mNL1Yp6auEXdLk/56IKOB9YSGy5yJPMdPS45wwI6jOslVuRNEdFX3aw1CGdneAtyTeybBg"}}, "unsigned": {"age_ts": 1570040766759}}3eQ_$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 564}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko"], "type": "madeup.test.state", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "S1. B's state before A left"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040766084, "hashes": {"sha256": "pCqrkF/y7c6Vz5uvOgRDiV1Iwufn5Vn0Tua5I8x4Jmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xeh+kWfw2/IGbUP08SW07IytgD4nhYk7O5YbBq8Gq8DMN350WQftEer+h+x7zHXbJ8xHFic9J/zr2ddfkQtlBQ"}}, "unsigned": {"age_ts": 1570040766084}}2eQ_$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 563}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag"], "type": "m.room.name", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"name": "N1. B's room name before A left"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040765464, "hashes": {"sha256": "/WlOs2rDjxvxwrQ+jWrVPSdf+d0KZLEwBiVG3WjUKdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h4cOqhOcbS7YaxIMZqIFV8yQzoF2B+eoiTMRMDl1fxb+EyKiZckJntWwzbwOOrXlM/l2W/+ENlnuRQTsJS1HCQ"}}, "unsigned": {"age_ts": 1570040765464}}%1eQ_Y$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 562}{"auth_events": ["$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "type": "m.room.power_levels", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "madeup.test.state": 50, "m.room.canonical_alias": 50}, "users": {"@anon-20191002_181700-127:localhost:8800": 100, "@anon-20191002_181700-128:localhost:8800": 50}, "redact": 50, "invite": 0, "ban": 50, "users_default": 0}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040764850, "hashes": {"sha256": "YFvxAD1EORXRd03xQ0PvODWE69fXCA5MYJ2Oz2O1Dnw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AElPQXBNH0SoCsFJf7Wti/73ZDzpdMwAVFUyWFm9uYk6QbtzZWWogYnS3Tmf11q5Nz+uk/XWUlO7xICKJorOAw"}}, "unsigned": {"age_ts": 1570040764850, "replaces_state": "$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k"}} & e&C8eQ_$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "stream_ordering": 569}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw"], "type": "m.room.name", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"name": "N2. B's room name after A left"}, "depth": 16, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040768980, "hashes": {"sha256": "Y0p/pnbLgL4LQpS4qyLj6abkY4B3nvH1KIALcephOng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C2OT5HixwTzicmsBv6YbIUjWBWyOoEmH4LgChiPLTpL1gS07p6Ua/vLsUgBqeYf+6M08Dt9VpaiesE6Z32zVBw"}}, "unsigned": {"age_ts": 1570040768980, "replaces_state": "$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko"}}7eQ$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "txn_id": "62", "stream_ordering": 568}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI"], "type": "m.room.message", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"body": "M3. B's message after A left", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040768206, "hashes": {"sha256": "i6E2sMZcfGv5uXF1WTJGYC1d46zN9y9gn2vFuxLvhTE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5FlneaNB0IUY5sH0mnMqTkk5NDgKh8aCZs4v0rUaWlIswpozyjl33lEurN2YoejMSlYXWVGrtPJfyIulB3PCBQ"}}, "unsigned": {"age_ts": 1570040768206}}Z6eQ_C$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 156, "stream_ordering": 567}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"], "prev_events": ["$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc"], "type": "m.room.member", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-127:localhost:8800", "content": {"membership": "leave"}, "depth": 14, "prev_state": [], "state_key": "@anon-20191002_181700-127:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040767697, "hashes": {"sha256": "jRy5zm4Zk3tNRe8vmxf2wUdba8cI/VzSbHV+/+swdzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C+lvGmWzlBuiVAiHcu6IGPMb0XGK/rRVJArHGM7sxKiocIXLenzUv6tOslsumRzaCQShC9zVPcSyinpjEJTZDA"}}, "unsigned": {"age_ts": 1570040767697, "replaces_state": "$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o"}}5eQ$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800{"token_id": 155, "txn_id": "61", "stream_ordering": 566}{"auth_events": ["$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag", "$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM", "$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8"], "prev_events": ["$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU"], "type": "m.room.message", "room_id": "!ntuwVdUxfzNIhIKYaz:localhost:8800", "sender": "@anon-20191002_181700-128:localhost:8800", "content": {"msgtype": "m.text", "body": "M2. B's message before A left"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040767322, "hashes": {"sha256": "6b1tXsIT91yFtW4dJvmr5ym/jX7aHiNmNmmdEfdwu5M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LaLgHZAPCqhOz5LL3GR6qwC4bRrGiP/BHUmha1ozvFtOseIbctoA2Dq6hNzV/t+n0ZfyeV6920gCcOpKMWd/Bw"}}, "unsigned": {"age_ts": 1570040767322}} MD # F h b k#:^g%(Mh Q/ eW!XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rules$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQm Q9 eV!XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_alias$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0j Q3 eU!XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4 Q']eT!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgdQ' eS!XIqmzIFbkHGQPIpywk:localhost:8800m.room.create$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY Q']eR!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQpQ? eQ!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibility$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2chQ/ eP!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rules$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUjQ3 eO!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20 Q']eN!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYdQ' eM!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.create$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE Q']eL!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag8Q']eeK!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI ~Q']eJ!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIs}Q))eI!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Ep|Q? eH!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibility$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAh{Q/ eG!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rules$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcmzQ9 eF!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_alias$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4jyQ3 eE!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M xQ']eD!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREdwQ' eC!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0 vQ']eB!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0suQ))eA!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYptQ? e@!OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibility$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAhsQ/ e?!OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rules$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cImrQ9 e>!OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_alias$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8jqQ3 e=!OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk pQ']e\#8]!@anon-20191002_181700-272:localhost:8800NRGYAKPXEL8]!@anon-20191002_181700-275:localhost:8800BROWKVODJU8]!@anon-20191002_181700-274:localhost:8800RXKZBCJOXK8]!@anon-20191002_181700-224:localhost:8800VJTZAJOEFY8]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDW8]!@anon-20191002_181700-222:localhost:8800VOKSLIDSSO8]!@anon-20191002_181700-221:localhost:8800REITENATXK8]!@anon-20191002_181700-220:localhost:8800OOLATWHSMP6[!@anon-20191002_181700-21:localhost:8800KHJDEDTDXI18]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-273:localhost:8800SZMGOEVXQW8]!@anon-20191002_181700-271:localhost:8800EYEJMZUSJY8]!@anon-20191002_181700-270:localhost:8800SRSYWQDCQU6[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFL68]!@anon-20191002_181700-269:localhost:8800EDTNFCDRMR8]!@anon-20191002_181700-268:localhost:8800BTQHLEFFPU8]!@anon-20191002_181700-266:localhost:8800MREALOZRTW8]!@anon-20191002_181700-265:localhost:8800COAARRCECC8]!@anon-20191002_181700-264:localhost:8800DYYKUWOSTJ8]!@anon-20191002_181700-263:localhost:8800KUHOBSXQVM8]!@anon-20191002_181700-262:localhost:8800OLJVXJZUXG8]!@anon-20191002_181700-261:localhost:8800HLJRYNNHWE8]!@anon-20191002_181700-260:localhost:8800PEYMVGORHU6[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRT58]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZA8]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT 8]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTK 8]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLF 8]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEX 8]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKS 8]!@anon-20191002_181700-252:localhost:8800RURXOUWORG8]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ8]!@anon-20191002_181700-250:localhost:8800HLUDALFTVR6[!@anon-20191002_181700-24:localhost:8800MRUESCORNA48]!@anon-20191002_181700-249:localhost:8800TCARNJMFBO8]!@anon-20191002_181700-248:localhost:8800SFZRVIZXHM8]!@anon-20191002_181700-247:localhost:8800TRPUOTMOOT8]!@anon-20191002_181700-246:localhost:8800VWLZTFZJKU8]!@anon-20191002_181700-245:localhost:8800BMGHUZBIKD8]!@anon-20191002_181700-244:localhost:8800VWUTZPSOAH8]!@anon-20191002_181700-243:localhost:8800FMNGREYZML8]!@anon-20191002_181700-242:localhost:8800AYBUQGWFIB8]!@anon-20191002_181700-241:localhost:8800AXXWURZRJC8]!@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ6[!@anon-20191002_181700-23:localhost:8800SNOHQGNOOL38]!@anon-20191002_181700-239:localhost:8800WFWDJJSKCM8]!@anon-20191002_181700-238:localhost:8800CJBYPQAOBX8]!@anon-20191002_181700-237:localhost:8800GTKLCHUYBN8]!@anon-20191002_181700-236:localhost:8800ALVQESJRHC8]!@anon-20191002_181700-235:localhost:8800OYRPJJEYFG8]!@anon-20191002_181700-234:localhost:8800KLAICDFHKH8]!@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY8]!@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB6[!@anon-20191002_181700-22:localhost:8800HVNUPXSZHY28]!@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!@anon-20191002_181700-225:localhost:8800ZNKOABDJUU  gh@eQ_M$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 577}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA"], "type": "m.room.aliases", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"aliases": ["#test-20191002_181700-20:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040775831, "hashes": {"sha256": "aNO+adAaIvf5r46v3zp8ckt4rn4dBlMiP3LvUrycXI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6S+mRKNJA/Ca3m0HxbbQsl2x80UlJ29usAQzsiiq9Ovzv2uptrH+YesqCgZBpV4uO8r60uNZl8jiDK8tYXnAAw"}}, "unsigned": {"age_ts": 1570040775831}}?eQ_$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 576}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI"], "type": "m.room.history_visibility", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040774758, "hashes": {"sha256": "zZPUl+mDC6Z+ugKHBmAGL9/qn3zF997WSAnQRu1RKGo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zha7Yy8fLj+pXmisr+tpE0mzsJh6iGilAI/JPGFHKcYmvdNHGT1jNFq6jtYe62sC7fsf+Kmk8e6Ih6/K1qS0CQ"}}, "unsigned": {"age_ts": 1570040774758}}s>eQ_u$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 575}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8"], "type": "m.room.join_rules", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040774248, "hashes": {"sha256": "qdVRUGQePeWPd5a5GYpGJlErLXUN4IO/J1QdRc6VRFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oPob4qALMb7MlkVCYLoTzsnkdqvzfyj9SN+IkzIn6JkWAyoTqUQs6hC4CJcjOgASrjeCDVt6fLemrs1v7TtXAA"}}, "unsigned": {"age_ts": 1570040774248}}=eQ_9$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 574}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk"], "type": "m.room.canonical_alias", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"alias": "#test-20191002_181700-20:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040773523, "hashes": {"sha256": "6XPvNQw7B1ZXlwUsQ3IOgMvL1D4+Pr1gMIwPYcl2TC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uuhR7f+gcWQ0R260iaV4LhX2HrbIL9q2oJfZKZtCyZ+e+YbkCDlsYbg5ivLBTpSkSIikeJhCLM+GGu0/5YUxBQ"}}, "unsigned": {"age_ts": 1570040773523}} Le] 3 P  | J k9 v Dq? wj E8 }KQ  W% V $ \ *p>+1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8u1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8t1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8s1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk 1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgq1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgp1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgo1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ[1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQZ1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQY1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo 1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8g1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8f1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8e1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU81e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU71e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU61e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ /1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY 1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY 1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY 1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY1e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIy1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIx1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIw1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g|1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g{1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gz1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk 1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk 1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4t1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4s1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgD1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgC1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgB a} { y w u sqomkigeca~}eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~|eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~{eeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800~zeeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~yeeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~xeeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~weeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800~veeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~ueeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~teeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~seeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~reeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~qeeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~peeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~oeeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~neeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~meeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~leeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~keeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~jeeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~ieeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800~heeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800~geeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~feeQ$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800~eeeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~deeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI!OBWkjfrDCNgYFfblia:localhost:8800~ceeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~beeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800~aeeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800~`eeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800~_eeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800 W WuCeQ_y$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 580}{"auth_events": ["$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0"], "prev_events": ["$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-131", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-131:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040779620, "hashes": {"sha256": "eV/aY1ElZqRx+AVXjfZClgJzP82a3vwGdilwF+EsG70"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lJ68kTFYd2d04afVrD/JAPlhTWu0bNQL1oWgwTNQMzViLaKEVO67eSWOM0xWLAnipZbuj5WJoOYH+Djag8DoCw"}}, "unsigned": {"age_ts": 1570040779620}}hBeQ__$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 579}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-131:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040779037, "hashes": {"sha256": "5giiWEPECdVhEEt+fOP0b7cyZLYQCRKyKEE3ol6VLJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O+XsVjtMmzrULsTGLudatxQ3m/OTmHyaWguM6/0SwHzQkPZ5oE/JjmeP9E5Fg6JHTFeSu0wDBcExh65r2clfAQ"}}, "unsigned": {"age_ts": 1570040779037}}@AeQ_$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800{"token_id": 158, "stream_ordering": 578}{"auth_events": ["$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk", "$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk", "$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI", "$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY"], "prev_events": ["$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY"], "type": "m.room.member", "room_id": "!OBWkjfrDCNgYFfblia:localhost:8800", "sender": "@anon-20191002_181700-129:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-130", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-130:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040776738, "hashes": {"sha256": "Gsk7U96J5Afv6bt2HG9TcSYEyf2PHkUETd+Z4SrE/WE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3yaxkBl8QR1rtCcw9FPCQ3KXJVw2mNi9ue0WdBSkIr9oFybWBm56O7Vz67Yl/crB7QcobcsWJgXYTOFL6BVyAA"}}, "unsigned": {"age_ts": 1570040776738, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-20:localhost:8800"}, "sender": "@anon-20191002_181700-129:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-129:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-129:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-129", "avatar_url": null}, "sender": "@anon-20191002_181700-129:localhost:8800"}]}} P\ l  g  z4>HMP!Ye)Q ]$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8m.room.aliases!XIqmzIFbkHGQPIpywk:localhost:8800m[m\t@anon-20191002_181700-136:localhost:8800,Xe?Q ]$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5km.room.history_visibility!XIqmzIFbkHGQPIpywk:localhost:8800mVmY@anon-20191002_181700-136:localhost:8800$We/Q ]$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQm.room.join_rules!XIqmzIFbkHGQPIpywk:localhost:8800mTmUk@anon-20191002_181700-136:localhost:8800)Ve9Q ]$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0m.room.canonical_alias!XIqmzIFbkHGQPIpywk:localhost:8800mR4mR@anon-20191002_181700-136:localhost:8800&Ue3Q ]$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4m.room.power_levels!XIqmzIFbkHGQPIpywk:localhost:8800mOmP@anon-20191002_181700-136:localhost:8800 Te'Q ]$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgm.room.member!XIqmzIFbkHGQPIpywk:localhost:8800mLmMi@anon-20191002_181700-136:localhost:8800S e'Q  ]$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYm.room.create!XIqmzIFbkHGQPIpywk:localhost:8800mJOmJ@anon-20191002_181700-136:localhost:8800 Re'Q ]$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQm.room.member!lMRBkbYJDQHgdBZBFJ:localhost:8800mD5mD@anon-20191002_181700-134:localhost:8800,Qe?Q ]$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cm.room.history_visibility!lMRBkbYJDQHgdBZBFJ:localhost:8800m?(m@@anon-20191002_181700-134:localhost:8800$Pe/Q ]$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUm.room.join_rules!lMRBkbYJDQHgdBZBFJ:localhost:8800m<;m=g@anon-20191002_181700-134:localhost:8800&Oe3Q ]$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20m.room.power_levels!lMRBkbYJDQHgdBZBFJ:localhost:8800m9_m:@anon-20191002_181700-134:localhost:8800 Ne'Q ]$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYm.room.member!lMRBkbYJDQHgdBZBFJ:localhost:8800m6m7@anon-20191002_181700-134:localhost:8800M e'Q  ]$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEm.room.create!lMRBkbYJDQHgdBZBFJ:localhost:8800m4;m4@anon-20191002_181700-134:localhost:8800 Le'Q ] $E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800 m-Sm-@anon-20191002_181700-132:localhost:8800 Ke'Q ] $32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800 m'm({@anon-20191002_181700-132:localhost:8800 Je'Q ]$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800m%m&@anon-20191002_181700-131:localhost:8800!Ie)Q ]$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Em.room.aliases!cHtqiAyCHEAoBIbCmL:localhost:8800m"m#@anon-20191002_181700-131:localhost:8800,He?Q ]$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAm.room.history_visibility!cHtqiAyCHEAoBIbCmL:localhost:8800mQm!!@anon-20191002_181700-131:localhost:8800$Ge/Q ]$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucm.room.join_rules!cHtqiAyCHEAoBIbCmL:localhost:8800mzm@anon-20191002_181700-131:localhost:8800)Fe9Q ]$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4m.room.canonical_alias!cHtqiAyCHEAoBIbCmL:localhost:8800m[md@anon-20191002_181700-131:localhost:8800&Ee3Q ]$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Mm.room.power_levels!cHtqiAyCHEAoBIbCmL:localhost:8800mvm@anon-20191002_181700-131:localhost:8800 De'Q ]$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREm.room.member!cHtqiAyCHEAoBIbCmL:localhost:8800mdm@anon-20191002_181700-131:localhost:8800C e'Q  ]$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0m.room.create!cHtqiAyCHEAoBIbCmL:localhost:8800mmi@anon-20191002_181700-131:localhost:8800 Be'Q ]$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0m.room.member!OBWkjfrDCNgYFfblia:localhost:8800m"m}@anon-20191002_181700-129:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VleL$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8sha256F^WA6׳ۧx.[t"•/VkeL$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYsha256jP򸜅p/~t_%O*n6.(*fVjeL$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMsha256!JX^GYRῪoURdSVieL$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0sha2560% jU(P|7VheL$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0sha256 Ztsx3 ESKK x]VgeL$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8sha256qNIYAUrAJ:zǏ@YT3|5KVfeL$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4sha256_3l"+δ\&GN=E*[mVeeL$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0sha256/|,]$@wZ Y'oVVdeL$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuksha256o#LuUs xh-Q@HVceL$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4sha256]=j6_.y/uWTVbeL$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujosha256YuT*c|<7"<+}ҕ/&t:VaeL$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8sha2566bX8 HQ΁/ٽoV`eL$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Msha256PIȩ.,k/óY`D8V_eL$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6Msha25605Id3sc 9ATWwV^eL$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tEsha256x_ߚp]$T$5ÑF,>KwlV]eL$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcsha256gCc\eV=٬)V\eL$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCMsha256AIl79!>6(f=_5LlQq#V[eL$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBssha256VPϜ^cdN$+IuT; VZeL$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQsha256leX7IwaLc: +.+`2ldVYeL$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0sha256zFtWnIˠH5_VͪVXeL$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8sha256HX %}į8Iط'7 TOVWeL$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5ksha256Y/ʻZ>~jR5sȠVVVeL$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQsha256Kt7o;o25yx*T$VUeL$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0sha256Z젅c+& Vޚ:-VTeL$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4sha256t#0[h*FUer.VSeL$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgsha256KgxPy0~8$d첋GPHVReL$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYsha256+`e DR}&uG̜֨sVQeL$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQsha256>@KhpFi<,'wnLPPxmZVPeL$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2csha2565]~isg~IahDqpۙ~TgVOeL$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUsha256?$to8"GbuiόϪBVNeL$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20sha256= gVh3䐄ʖ:)$m<[,]mVMeL$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYsha256vT?~ߋObЈ&VLeL$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEsha256䄜jΩqdpAFNhߠym\љ!VKeL$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagsha256鹹r(ѩ Y/cB VJeL$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAsha256k8VI hD" n\(OVIeL$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIsha256.Եa+Ӂ|UC(%U OwdxRVHeL$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Esha256sgqKF\oPo6Ԥ3qVGeL$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAsha256%&lB%ՎZ }*.cCX.SĤ0VFeL$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucsha256*^+3D]4^~?GVEeL$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4sha256.KDG&B(qHݵ\t 5M$>VDeL$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Msha256V (.TeGMo9@dOuq VCeL$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREsha256_d1`!~!;=Ҏs=-VBeL$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0sha256~R  [*e6ʔL) VAeL$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0sha256 {:Nne8ְe!  U |tme]UME=5-%}`C& x \ ? "  r T 8  f H * x Z <  l N 0 ~`B$rT6fH* vZ<jL0|^@"sU7gI'Q_astest-01create-0-20191002_1817000 adminU=anon-20191002_181700-199=anon-20191002_181700-198=anon-20191002_181700-197=anon-20191002_181700-196=anon-20191002_181700-195=anon-20191002_181700-194=anon-20191002_181700-193=anon-20191002_181700-192=anon-20191002_181700-191=anon-20191002_181700-190;anon-20191002_181700-19'=anon-20191002_181700-189=anon-20191002_181700-188=anon-20191002_181700-187=anon-20191002_181700-186=anon-20191002_181700-185=anon-20191002_181700-184=anon-20191002_181700-183=anon-20191002_181700-182=anon-20191002_181700-181;anon-20191002_181700-18&=anon-20191002_181700-179=anon-20191002_181700-178=anon-20191002_181700-177=anon-20191002_181700-176=anon-20191002_181700-175=anon-20191002_181700-174=anon-20191002_181700-173=anon-20191002_181700-170;anon-20191002_181700-17%=anon-20191002_181700-169=anon-20191002_181700-168=anon-20191002_181700-167=anon-20191002_181700-165=anon-20191002_181700-164=anon-20191002_181700-163=anon-20191002_181700-162=anon-20191002_181700-161=anon-20191002_181700-160;anon-20191002_181700-16$=anon-20191002_181700-159=anon-20191002_181700-158=anon-20191002_181700-157=anon-20191002_181700-156=anon-20191002_181700-155=anon-20191002_181700-154=anon-20191002_181700-153=anon-20191002_181700-152=anon-20191002_181700-151=anon-20191002_181700-150;anon-20191002_181700-15#=anon-20191002_181700-149=anon-20191002_181700-146=anon-20191002_181700-144=anon-20191002_181700-143=anon-20191002_181700-142=anon-20191002_181700-141=anon-20191002_181700-140;anon-20191002_181700-14"=anon-20191002_181700-138=anon-20191002_181700-137=anon-20191002_181700-136=anon-20191002_181700-135=anon-20191002_181700-134=anon-20191002_181700-133=anon-20191002_181700-132=anon-20191002_181700-131=anon-20191002_181700-130;anon-20191002_181700-13 =anon-20191002_181700-129=anon-20191002_181700-128=anon-20191002_181700-127=anon-20191002_181700-126=anon-20191002_181700-125=anon-20191002_181700-124=anon-20191002_181700-123=anon-20191002_181700-122=anon-20191002_181700-121=anon-20191002_181700-120;anon-20191002_181700-12!=anon-20191002_181700-119=anon-20191002_181700-118=anon-20191002_181700-117=anon-20191002_181700-116=anon-20191002_181700-115~=anon-20191002_181700-114}=anon-20191002_181700-113|=anon-20191002_181700-112{=anon-20191002_181700-110z;anon-20191002_181700-11=anon-20191002_181700-109y=anon-20191002_181700-108x=anon-20191002_181700-107w=anon-20191002_181700-106v=anon-20191002_181700-104u=anon-20191002_181700-103s=anon-20191002_181700-102t=anon-20191002_181700-101q=anon-20191002_181700-100r;anon-20191002_181700-109anon-20191002_181700-1987654363534333231303292827262524232221202191817161514131211101 02login"K 01register-user-20191002_1817000> qz\> lP2jL.|^@" p R 4  d F ( t V :  h J ,  z \ > nP2bD&rT8fH* ~`B$rT6==anon-20191002_181700-302T=anon-20191002_181700-212=anon-20191002_181700-211=anon-20191002_181700-210;anon-20191002_181700-21)=anon-20191002_181700-209=anon-20191002_181700-208=anon-20191002_181700-207=anon-20191002_181700-206=anon-20191002_181700-205=anon-20191002_181700-204=anon-20191002_181700-203=anon-20191002_181700-202=anon-20191002_181700-201=anon-20191002_181700-200;anon-20191002_181700-20(=anon-20191002_181700-301S=anon-20191002_181700-300R;anon-20191002_181700-302=anon-20191002_181700-299Q=anon-20191002_181700-298P=anon-20191002_181700-297O=anon-20191002_181700-296N=anon-20191002_181700-295M=anon-20191002_181700-294L=anon-20191002_181700-293K=anon-20191002_181700-292J=anon-20191002_181700-291I=anon-20191002_181700-290H;anon-20191002_181700-291=anon-20191002_181700-289G=anon-20191002_181700-288F=anon-20191002_181700-287E=anon-20191002_181700-286D=anon-20191002_181700-285C=anon-20191002_181700-284B=anon-20191002_181700-283A=anon-20191002_181700-282@=anon-20191002_181700-281?=anon-20191002_181700-280>;anon-20191002_181700-280=anon-20191002_181700-279==anon-20191002_181700-278<=anon-20191002_181700-277;=anon-20191002_181700-276:=anon-20191002_181700-2759=anon-20191002_181700-2748=anon-20191002_181700-2736=anon-20191002_181700-2727=anon-20191002_181700-2714=anon-20191002_181700-2705;anon-20191002_181700-27/=anon-20191002_181700-2693=anon-20191002_181700-2682=anon-20191002_181700-2671=anon-20191002_181700-2660=anon-20191002_181700-265/=anon-20191002_181700-264.=anon-20191002_181700-263-=anon-20191002_181700-262,=anon-20191002_181700-261+=anon-20191002_181700-260*;anon-20191002_181700-26.=anon-20191002_181700-259)=anon-20191002_181700-258(=anon-20191002_181700-257'=anon-20191002_181700-255&=anon-20191002_181700-254%=anon-20191002_181700-253$=anon-20191002_181700-252#=anon-20191002_181700-251"=anon-20191002_181700-250!;anon-20191002_181700-25-=anon-20191002_181700-249 =anon-20191002_181700-248=anon-20191002_181700-247=anon-20191002_181700-246=anon-20191002_181700-245=anon-20191002_181700-244=anon-20191002_181700-243=anon-20191002_181700-242=anon-20191002_181700-241=anon-20191002_181700-240;anon-20191002_181700-24,=anon-20191002_181700-239=anon-20191002_181700-238=anon-20191002_181700-237=anon-20191002_181700-236=anon-20191002_181700-235=anon-20191002_181700-234=anon-20191002_181700-233=anon-20191002_181700-232 =anon-20191002_181700-231 =anon-20191002_181700-230 ;anon-20191002_181700-23+=anon-20191002_181700-229 =anon-20191002_181700-228 =anon-20191002_181700-227=anon-20191002_181700-226=anon-20191002_181700-225=anon-20191002_181700-224=anon-20191002_181700-223=anon-20191002_181700-222=anon-20191002_181700-221=anon-20191002_181700-220;anon-20191002_181700-22*=anon-20191002_181700-219=anon-20191002_181700-218=anon-20191002_181700-217=anon-20191002_181700-216=anon-20191002_181700-215=anon-20191002_181700-214=anon-20191002_181700-213 Bm G !hBx]c!E@anon-20191002_181700-143:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwoZFSJBJHVKY127.0.0.1Perl + Net::Async::HTTP/0.44mw]c!E@anon-20191002_181700-142:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAoDLSRULHTCQ127.0.0.1Perl + Net::Async::HTTP/0.44mv]c!E@anon-20191002_181700-141:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_AoXOYNHFFWDU127.0.0.1Perl + Net::Async::HTTP/0.44mu]c!E@anon-20191002_181700-140:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAoOLUEHITWUA127.0.0.1Perl + Net::Async::HTTP/0.44mLt]c!E@anon-20191002_181700-138:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAoJFLHGXHKXS127.0.0.1Perl + Net::Async::HTTP/0.44mjڃs]c!E@anon-20191002_181700-137:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swoTZFFQCVKWQ127.0.0.1Perl + Net::Async::HTTP/0.44mdr]c!E@anon-20191002_181700-136:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0woHMGQCGXZSS127.0.0.1Perl + Net::Async::HTTP/0.44mIq]c!E@anon-20191002_181700-134:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58woPCQACQPKQA127.0.0.1Perl + Net::Async::HTTP/0.44m3كp]c!E@anon-20191002_181700-132:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQoJPOUKBEMRT127.0.0.1Perl + Net::Async::HTTP/0.44m&o]c!E@anon-20191002_181700-131:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwoSOOHJVIHOR127.0.0.1Perl + Net::Async::HTTP/0.44mH  GeQ_$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 584}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc"], "type": "m.room.history_visibility", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040782673, "hashes": {"sha256": "yrF2mQfyfRhUYT2dyo0YqdYG1W7I+ZFGkaNcwCj7Wuw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NMxAbOaK1pHDqIw8UgaVIO7Pwsbws4837qRcHAAaYtjlsoPkt/fA5tYEAE8qlGvPPAxAvi86RZmlud9P7x37AA"}}, "unsigned": {"age_ts": 1570040782673}}sFeQ_u$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 583}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4"], "type": "m.room.join_rules", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040781690, "hashes": {"sha256": "imNY9k+IlZ5cXJtu+U5IJwTzZxgFfgMKSNv4dEBvH9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NdUMVx+pOmGckGozozeDYYYDGfm7bsmunemqfzgRvsoXKwY2HQwf3ZaDcpY05vX78JPGKNcu3PZ8aNvAZZOpBQ"}}, "unsigned": {"age_ts": 1570040781690}}EeQ_9$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 582}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M"], "type": "m.room.canonical_alias", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"alias": "#test-20191002_181700-21:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040780891, "hashes": {"sha256": "SOi4+nZ5TUAbS/ri3VgmxA0azrXRbop9FIk+kJm5zEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YPd5TNFUFjFpd3lF2m3PpIrrOwZDS7L/huiKA4hZHFb6dNcCH97kVn+V8tN4+LpNXSyFvOpfroBQA0/KdrT8CQ"}}, "unsigned": {"age_ts": 1570040780891}}jDeQ_c$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 581}{"auth_events": ["$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "type": "m.room.power_levels", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"users": {"@anon-20191002_181700-131:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040780150, "hashes": {"sha256": "VL4cG/OaVGl60ADcX9TYNH0wgD3CTuXFhPjvy9K2r5g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "veNaw5oKYI7mCCI2xLAxslI/Dny8z5yQAlDdvbwaHF1l4+8iyBblxLRiKhlB6+w6LoHy1IgRbFu/q8UyXq9MCw"}}, "unsigned": {"age_ts": 1570040780150}} ~z v r n j fb^ZVRNJF!eeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800 eeQ$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800  ]JeQ_=$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 159, "stream_ordering": 587}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc"], "prev_events": ["$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-132:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-132", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-132:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040784871, "hashes": {"sha256": "dvrOuIYIljgVUFZfpUx9ZgOVByo94539I38dusbd00o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QHDEO507iLrayA+zsDVyxjdofGcc5ZCdk2rhUclMo9C63vWsFSTITIOQBJtnWI5KvkC5PJqeoZX+liO3HsZFAw"}}, "unsigned": {"age_ts": 1570040784871, "replaces_state": "$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI"}}@IeQ_$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 586}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-132", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-132:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040784306, "hashes": {"sha256": "2KDL3+xDlOPC2mi4M627o1R7kAjjIgR/jWFdae6gFHw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cH9H8o7lOTjMiI5Csx1oXn7DHbnf2omvd47rnqgQcWhbM5TN3AoJDrJvWCKYFjN7+nDG/3RWDICwX3MPxHWVDw"}}, "unsigned": {"age_ts": 1570040784306, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-21:localhost:8800"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-131:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-131", "avatar_url": null}, "sender": "@anon-20191002_181700-131:localhost:8800"}]}}HeQ_M$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 160, "stream_ordering": 585}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE"], "prev_events": ["$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA"], "type": "m.room.aliases", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-131:localhost:8800", "content": {"aliases": ["#test-20191002_181700-21:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040783607, "hashes": {"sha256": "1MfnKgwPLdAlOc5eYxKtUXQYVirjbUQsmTeE7ADvDNo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h+5xVX9HCtTa9XlOpbLTpDl0rY6uOKkItXdUHolHT+Na0rFNOcWFjCJiOids+2vhvZRnwE65ZN3GL57LhtO+DA"}}, "unsigned": {"age_ts": 1570040783607}}  h|uSeQ_y$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800{"token_id": 165, "stream_ordering": 596}{"auth_events": ["$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY"], "prev_events": ["$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY"], "type": "m.room.member", "room_id": "!XIqmzIFbkHGQPIpywk:localhost:8800", "sender": "@anon-20191002_181700-136:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-136", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-136:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040794337, "hashes": {"sha256": "IIGBgvb9ebIUm3sIi61QUeVFgWTKTR8rDDk2Tbu3bZE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GoDhUC1BXx5EonstBYnMUdkmza5KYrKAAbHMJD01ME8nDa5no0c4/GXgCaHcLa6n1tgc6EkrVcQ2xC05wm5vCg"}}, "unsigned": {"age_ts": 1570040794337}}hReQ__$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800{"token_id": 165, "stream_ordering": 595}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XIqmzIFbkHGQPIpywk:localhost:8800", "sender": "@anon-20191002_181700-136:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-136:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040793679, "hashes": {"sha256": "iqyjC+kDS0/dcGZxnWeXl2XmoBJFDIwVo4xuOfvLfT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CmgWsf/kdfnF+ClPJvFjXFL9hE6ZCbYniNl8SSLco852ZAzxmmpwQxW6feWR9XhJillIvmKkqG90SZl9nytECQ"}}, "unsigned": {"age_ts": 1570040793679}}QeQ_7$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 594}{"auth_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20", "$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c"], "type": "m.room.member", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-135", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-135:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040792117, "hashes": {"sha256": "DjUHObScyjJfPZBlg5j2/9fb3JsoObWQAFrfArhD97I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7+agiVneBysH9tn/ifKUbeVxbdatOMpOCnQ6U41+8h72a/OINi9YqszFSymlXpiK1zl8pULB88o7+kbBD/chAg"}}, "unsigned": {"age_ts": 1570040792117, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-134:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-134:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-134", "avatar_url": null}, "sender": "@anon-20191002_181700-134:localhost:8800"}]}} -RM H C > 9 4/*|%w rmhc TzQex!AjjrNwXmPTCruHxaJq:localhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMTyQew!AjjrNwXmPTCruHxaJq:localhost:8800$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UTxQev!AjjrNwXmPTCruHxaJq:localhost:8800$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNoTwQeu!AjjrNwXmPTCruHxaJq:localhost:8800$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98TvQet!AjjrNwXmPTCruHxaJq:localhost:8800$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8TuQes!AjjrNwXmPTCruHxaJq:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvoTtQer!AjjrNwXmPTCruHxaJq:localhost:8800$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9ATsQeq!BkzROHxDAfKIzYpmPV:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4TrQep!BkzROHxDAfKIzYpmPV:localhost:8800$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoTqQeo!BkzROHxDAfKIzYpmPV:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQTpQen!BkzROHxDAfKIzYpmPV:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUToQem!BkzROHxDAfKIzYpmPV:localhost:8800$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8TnQel!BkzROHxDAfKIzYpmPV:localhost:8800$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmYTmQek!BkzROHxDAfKIzYpmPV:localhost:8800$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMTlQej!BkzROHxDAfKIzYpmPV:localhost:8800$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0TkQei!BkzROHxDAfKIzYpmPV:localhost:8800$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0TjQeh!BkzROHxDAfKIzYpmPV:localhost:8800$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8TiQeg!BkzROHxDAfKIzYpmPV:localhost:8800$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4ThQef!WWZVpyLeZfyfpWidLx:localhost:8800$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0TgQee!WWZVpyLeZfyfpWidLx:localhost:8800$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukTfQed!WWZVpyLeZfyfpWidLx:localhost:8800$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4TeQec!WWZVpyLeZfyfpWidLx:localhost:8800$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4QujoTdQeb!WWZVpyLeZfyfpWidLx:localhost:8800$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8TcQea!WWZVpyLeZfyfpWidLx:localhost:8800$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96MTbQe`!WWZVpyLeZfyfpWidLx:localhost:8800$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6MTaQe_!WWZVpyLeZfyfpWidLx:localhost:8800$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tET`Qe^!WWZVpyLeZfyfpWidLx:localhost:8800$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcT_Qe]!WWZVpyLeZfyfpWidLx:localhost:8800$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCMT^Qe\!XIqmzIFbkHGQPIpywk:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBsT]Qe[!XIqmzIFbkHGQPIpywk:localhost:8800$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQT\QeZ!XIqmzIFbkHGQPIpywk:localhost:8800$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0T[QeY!XIqmzIFbkHGQPIpywk:localhost:8800$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8TZQeX!XIqmzIFbkHGQPIpywk:localhost:8800$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kTYQeW!XIqmzIFbkHGQPIpywk:localhost:8800$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQTXQeV!XIqmzIFbkHGQPIpywk:localhost:8800$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0TWQeU!XIqmzIFbkHGQPIpywk:localhost:8800$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4TVQeT!XIqmzIFbkHGQPIpywk:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgTUQeS!XIqmzIFbkHGQPIpywk:localhost:8800$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYTTQeR!lMRBkbYJDQHgdBZBFJ:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQTSQeQ!lMRBkbYJDQHgdBZBFJ:localhost:8800$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cTRQeP!lMRBkbYJDQHgdBZBFJ:localhost:8800$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUTQQeO!lMRBkbYJDQHgdBZBFJ:localhost:8800$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20TPQeN!lMRBkbYJDQHgdBZBFJ:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYTOQeM!lMRBkbYJDQHgdBZBFJ:localhost:8800$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSETNQeL!cHtqiAyCHEAoBIbCmL:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag V VuMeQ_y$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 590}{"auth_events": ["$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE"], "prev_events": ["$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE"], "type": "m.room.member", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-134", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-134:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040788730, "hashes": {"sha256": "XI+pWLquEKaK5YAKnW6LlWcRwCAZhwiGKmlr2PEYqHw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jBz/ajJBWbxPQGHetwmdfkdKa2PdSPqlWyh94nHC9WM6PeP0wUnjqHFkxkmG1YbTipjwieY0pj+x3wmh+15dDg"}}, "unsigned": {"age_ts": 1570040788730}}hLeQ__$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 589}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-134:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040788027, "hashes": {"sha256": "Xq7xcBrL/TxKiQV4i+gGu5NDXEnwCvCSokzX9eS/HlQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zej832djKgVWJtjcO93z0LhTZrjx21eguJ5sPAtIvJMc6ZLebg3KCCNscwl9Yd9Uo3EKcmn8DtkT145ZsUh0CQ"}}, "unsigned": {"age_ts": 1570040788027}}AKeQ_$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800{"token_id": 159, "stream_ordering": 588}{"auth_events": ["$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M", "$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0", "$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc", "$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA"], "prev_events": ["$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA"], "type": "m.room.member", "room_id": "!cHtqiAyCHEAoBIbCmL:localhost:8800", "sender": "@anon-20191002_181700-132:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-133", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-133:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040786259, "hashes": {"sha256": "gZcoMxgSzM9ExCE94z63zev7NABss9/mMAAOXrRGw58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gcv+0DBWgEMQgldHR1xTXVN3YvRM1NqcUMqDGhXRit0IFPc8r0W95gbKsm4WUDBL/35MBWYfSGqxF82AOrKqBA"}}, "unsigned": {"age_ts": 1570040786259, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-21:localhost:8800"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-131:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-132:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-132", "avatar_url": null}, "sender": "@anon-20191002_181700-132:localhost:8800"}]}} a} { y w u sqomkigeca~eeQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800~eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~ eeQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~ eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800~eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800~~eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800 |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l Z N B < 6 0 * $    | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ z V T S R P N M L J F E D C A ? > = ; 9 8 7 5 3 2 1 / - , + * ( % $ # "                                                                                                                   ~ } | z w v u t r q p o m k j i g e d c a _ ^ ] [ Y X W V T Q P O N L J I H G E B A @ ? = < ; : 8 4 3 2 1 / ) ( ' % " !                                                                                                                     ~ | H t s r q p o l k i T g ` e  ` ^ ] \ Z` A @ ? = ; : 9 7 5 4 3 1 , ) ( & !                                                                             34m x 6 ? D o &+V3OZ_mveQ? $NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800m.room.history_visibility `eQ']$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800joinp_eQ))$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800m^eQ? $JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibilitye]eQ/ $KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rulesj\eQ9 $LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_aliasg[eQ3 $oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levelseueQ/ $ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800m.room.join_rulesjteQ9 $-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800m.room.canonical_aliasgseQ3 $eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800m.room.power_levels reQ']$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-138:localhost:8800joinaqeQ' $QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800m.room.create peQ']$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800joinnoeQ?$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0!XIqmzIFbkHGQPIpywk:localhost:8800m.room.third_party_invite0pneQ))$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8!XIqmzIFbkHGQPIpywk:localhost:8800m.room.aliaseslocalhost:8800mmeQ? $zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k!XIqmzIFbkHGQPIpywk:localhost:8800m.room.history_visibilityeleQ/ $S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ!XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rulesjkeQ9 $47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0!XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_aliasgjeQ3 $6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4!XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels ieQ']$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800joinaheQ' $KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800m.room.creategeQ']$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800invitemfeQ? $pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibilityeeeQ/ $hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rulesgdeQ3 $PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels ceQ']$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800joinabeQ' $5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.createaeQ']$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800invite g * T~=gg$]!c@anon-20191002_181700-150:localhost:8800RWWSTPGDUMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwog#]!c@anon-20191002_181700-146:localhost:8800FNNRVHNVLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwog"]!c@anon-20191002_181700-143:localhost:8800ZFSJBJHVKYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtzNTRILHVvJkN3RV4uOUkKMDAyZnNpZ25hdHVyZSCiIEum5Hf_4MjwGQS_AqIN-iYZUl8KXnl0342oJRdXWwog!]!c@anon-20191002_181700-144:localhost:8800KPCPVEDJYHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQog ]!c@anon-20191002_181700-142:localhost:8800DLSRULHTCQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl0dHBoeStRSFhJeGxnMjoKMDAyZnNpZ25hdHVyZSCDxRBFLLPq8CV6E0q2_33jQFTMQrJnpgiB6D7QnZDFrAog]!c@anon-20191002_181700-141:localhost:8800XOYNHFFWDUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs1enFlKlJlYnJ3X1osRlIKMDAyZnNpZ25hdHVyZSBr0JeM3gCEh5pr16KP1r00hyhTL6873v8QycPluvRH_Aog]!c@anon-20191002_181700-140:localhost:8800OLUEHITWUAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUuVTU7WCtjWl5PXlB6WDYKMDAyZnNpZ25hdHVyZSDfnchEtXbDWus5HZ51X441pe4YaqzABkQ536ahzKZdjAog]!c@anon-20191002_181700-138:localhost:8800JFLHGXHKXSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAog]!c@anon-20191002_181700-136:localhost:8800HMGQCGXZSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0wog]!c@anon-20191002_181700-137:localhost:8800TZFFQCVKWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swog]!c@anon-20191002_181700-135:localhost:8800SDWTGMDDUAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBLSjRYeXQ3R0B-X3RSOkkKMDAyZnNpZ25hdHVyZSAFX_b11eBwS97oCMz-uAp99gjpBtPRgBv8NVG-G8slwwo !Oq) 4 9 ` y  wYd86#(Og=Q/ e;!BkzROHxDAfKIzYpmPV:localhost:8800m.room.join_rules$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMl<Q9 e:!BkzROHxDAfKIzYpmPV:localhost:8800m.room.canonical_alias$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i;Q3 e9!BkzROHxDAfKIzYpmPV:localhost:8800m.room.power_levels$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0 :Q']e8!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-140:localhost:8800$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8c9Q' e7!BkzROHxDAfKIzYpmPV:localhost:8800m.room.create$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4 8Q']e6!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0 7Q']e5!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$GesYsoj-4zm2I-jni0RMOKDmuskdbSK6yAFZnCMj52U 6Q']e4!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk 5Q']e3!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829$PBccJlN_hz4p6U9vI4K7-gONRRjPVpS1ayqbEedfgs8p4Q?e2!WWZVpyLeZfyfpWidLx:localhost:8800m.room.third_party_invite1$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4r3Q))e1!WWZVpyLeZfyfpWidLx:localhost:8800m.room.aliaseslocalhost:8800$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujoo2Q? e0!WWZVpyLeZfyfpWidLx:localhost:8800m.room.history_visibility$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8g1Q/ e/!WWZVpyLeZfyfpWidLx:localhost:8800m.room.join_rules$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Ml0Q9 e.!WWZVpyLeZfyfpWidLx:localhost:8800m.room.canonical_alias$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6Mi/Q3 e-!WWZVpyLeZfyfpWidLx:localhost:8800m.room.power_levels$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE .Q']e,!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-138:localhost:8800$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcc-Q' e+!WWZVpyLeZfyfpWidLx:localhost:8800m.room.create$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM ,Q']e*!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs +Q']e)!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ *Q']e(!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800$_osteQkqmrqJIH4VnHv7Ml-LORJqPB5jddG9d4QqbBYp)Q?e'!XIqmzIFbkHGQPIpywk:localhost:8800m.room.third_party_invite0$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0r(Q))e&!XIqmzIFbkHGQPIpywk:localhost:8800m.room.aliaseslocalhost:8800$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8o'Q? e%!XIqmzIFbkHGQPIpywk:localhost:8800m.room.history_visibility$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kg&Q/ e$!XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rules$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQl%Q9 e#!XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_alias$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0i$Q3 e"!XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4 #Q']e!!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgc"Q' e !XIqmzIFbkHGQPIpywk:localhost:8800m.room.create$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY !Q']e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQo Q? e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibility$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cgQ/ e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rules$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUiQ3 e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levels$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20 Q']e!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY ?0( W O |8u  m e G _ )eeQ$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800eeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800ieeQ$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800YeeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800 `eeQ$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE!PgNDjhhIBAXKryuGKy:localhost:8800 'eeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800 zeeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800 heeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk!fJXiUpbbOlLbHWmPgs:localhost:8800ueeQ$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU!msMfSdLIAvklSSAnci:localhost:8800eeQ$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28!edbUkYJIZBNOiTuLJs:localhost:8800eeQ $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A!zNCItZNbpkZKuufRhC:localhost:8800eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM!OSHhtkGUjpUCkXwIhj:localhost:8800ہeeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw!wIhMbfQzYbJobPdwyi:localhost:8800NeeQ$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ!aWJOsiuJONOvjKWEjO:localhost:8800XeeQ$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY!HcMGemcRrLnLprOJJR:localhost:8800 >Ur9 V  7 r 9 U   q 8  T pS5o6nRn5QQ8e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegosha256z8e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEsha2568e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdEsha256 f8e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicosha256 Eq8e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXssha2568e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYsha256!8e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Egsha2568e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIsha2568e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIsha256e8e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQsha2568e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tssha256}8e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__csha256o8e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0sha2568e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIsha256g8e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQsha256 8e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8sha2568e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEsha256V8e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYsha256 8e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48sha2568e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQsha2568e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-Msha2568e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQosha2568e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7eksha25678e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcsha2568e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAsha2568e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4sha2568e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igsha256E8e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8sha256 %8e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RMsha2568e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMsha2568e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUgsha256 8e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0sha2568e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMsha256 8e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQsha256S8e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0sha2568e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIsha2568e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Esha2568e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieosha256 p8e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lwsha2568e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwsha256 [8e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4Usha25668e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10sha256 P8e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jEsha256 8e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwsha256J8e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4sha256 \8e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gsha2568e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4sha2568e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8sha256 8e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4sha2568e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ysha2568e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0sha2568e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0sha256@8e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUsha256-7e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wsha256Q8e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjosha256 8e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70sha256 68e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0sha256O7e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90sha2568e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pcsha2568e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmksha256 8e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8sha256 ^8e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Isha256  PeQ_$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 593}{"auth_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20", "$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU"], "type": "m.room.history_visibility", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040790824, "hashes": {"sha256": "xu52b7BfE5Lce0PdwWab/tQoOsYPQF2uRWWWqCO4bvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "etYCVy2G07i+3bPAp0qLoZ+PnHrnIRt781jAQ2QsuFoA4OBYjaK6WwMbf50lwfTh0N5XVi3WP8Xx+nLsrq0vAA"}}, "unsigned": {"age_ts": 1570040790824}}sOeQ_u$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 592}{"auth_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20", "$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20"], "type": "m.room.join_rules", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040790075, "hashes": {"sha256": "Tm1I6q+nWIJa85kSdRQhu9lw1g7sPOlS8FhkKYTx+/M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xCYy0QxWOqW6aHxIYAw6TEwFPkLLFon6TwErxHOVPtLAX+Vs8e4DE7QDZPIH4otsHafN7H9P7qwxPt3j4wNSDA"}}, "unsigned": {"age_ts": 1570040790075}}jNeQ_c$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800{"token_id": 162, "stream_ordering": 591}{"auth_events": ["$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE", "$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "prev_events": ["$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY"], "type": "m.room.power_levels", "room_id": "!lMRBkbYJDQHgdBZBFJ:localhost:8800", "sender": "@anon-20191002_181700-134:localhost:8800", "content": {"users": {"@anon-20191002_181700-134:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040789343, "hashes": {"sha256": "XigdTHgAH8XQ2CPkahScNS9RRVv+Hvb+BfcV60JG+nI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IlD36ot24VcryEgCZjUqoqhAcWzLd8GHBwshWZOXFoBOGHrGgZoKli/RKu7pJddD/4sD0dbwYJhzI+tCifSyAg"}}, "unsigned": {"age_ts": 1570040789343}} -RM H C > 9 4/*|%w rmhc TMQeM!AjjrNwXmPTCruHxaJq:localhost:8800$uXaQfdGMi7wi7vhRnFFHiTN1tigFEBnxGrl36KN7IhMTLQeL!AjjrNwXmPTCruHxaJq:localhost:8800$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SITKQeK!AjjrNwXmPTCruHxaJq:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMTJQeJ!AjjrNwXmPTCruHxaJq:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHITIQeI!AjjrNwXmPTCruHxaJq:localhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMTHQeH!AjjrNwXmPTCruHxaJq:localhost:8800$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UTGQeG!AjjrNwXmPTCruHxaJq:localhost:8800$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNoTFQeF!AjjrNwXmPTCruHxaJq:localhost:8800$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98TEQeE!AjjrNwXmPTCruHxaJq:localhost:8800$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8TDQeD!AjjrNwXmPTCruHxaJq:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvoTCQeC!AjjrNwXmPTCruHxaJq:localhost:8800$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9ATBQeB!BkzROHxDAfKIzYpmPV:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4TAQeA!BkzROHxDAfKIzYpmPV:localhost:8800$OLFNJqOLKWBVd4nTdKFKnN_Ls51W3F1_yjnATq13u0gT@Qe@!BkzROHxDAfKIzYpmPV:localhost:8800$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoT?Qe?!BkzROHxDAfKIzYpmPV:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQT>Qe>!BkzROHxDAfKIzYpmPV:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUT=Qe=!BkzROHxDAfKIzYpmPV:localhost:8800$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8T<Qe e3 Y ' yk9  vj8 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMR1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMQ1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMP1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4 1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4 1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws H1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34 n1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws J1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws I1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI21e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34 o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4 1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI41e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI31e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMi1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs 1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUs1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUr1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMk1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMj1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUt P @ ` 0 P p  @`0P  p \ nV]@anon-20191002_181700-150:localhost:8800@anon-20191002_181700-150:localhost:8800 anon-20191002_181700-150n:]@anon-20191002_181700-115:localhost:8800@anon-20191002_181700-115:localhost:8800 anon-20191002_181700-115nT]@anon-20191002_181700-147:localhost:8829@anon-20191002_181700-147:localhost:8829 anon-20191002_181700-147nS]@anon-20191002_181700-148:localhost:8829@anon-20191002_181700-148:localhost:8829 anon-20191002_181700-148nR]@anon-20191002_181700-146:localhost:8800@anon-20191002_181700-146:localhost:8800 anon-20191002_181700-146nQ]@anon-20191002_181700-144:localhost:8800@anon-20191002_181700-144:localhost:8800 anon-20191002_181700-144nP]@anon-20191002_181700-143:localhost:8800@anon-20191002_181700-143:localhost:8800 anon-20191002_181700-143nO]@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-141:localhost:8800 anon-20191002_181700-141nN]@anon-20191002_181700-140:localhost:8800@anon-20191002_181700-140:localhost:8800 anon-20191002_181700-140nM]@anon-20191002_181700-139:localhost:8829@anon-20191002_181700-139:localhost:8829 anon-20191002_181700-139nL]@anon-20191002_181700-138:localhost:8800@anon-20191002_181700-138:localhost:8800 anon-20191002_181700-138nJ]@anon-20191002_181700-136:localhost:8800@anon-20191002_181700-136:localhost:8800 anon-20191002_181700-136nI]@anon-20191002_181700-134:localhost:8800@anon-20191002_181700-134:localhost:8800 anon-20191002_181700-134nH]@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-132:localhost:8800 anon-20191002_181700-132nG]@anon-20191002_181700-131:localhost:8800@anon-20191002_181700-131:localhost:8800 anon-20191002_181700-131nF]@anon-20191002_181700-129:localhost:8800@anon-20191002_181700-129:localhost:8800 anon-20191002_181700-129nE]@anon-20191002_181700-128:localhost:8800@anon-20191002_181700-128:localhost:8800 anon-20191002_181700-128nC]@anon-20191002_181700-126:localhost:8800@anon-20191002_181700-126:localhost:8800 anon-20191002_181700-126nB]@anon-20191002_181700-125:localhost:8800@anon-20191002_181700-125:localhost:8800 anon-20191002_181700-125pnW]@anon-20191002_181700-151:localhost:8800@anon-20191002_181700-151:localhost:8800 anon-20191002_181700-151nA]@anon-20191002_181700-124:localhost:8800@anon-20191002_181700-124:localhost:8800 anon-20191002_181700-124n@]@anon-20191002_181700-123:localhost:8800@anon-20191002_181700-123:localhost:8800 anon-20191002_181700-123n?]@anon-20191002_181700-120:localhost:8800@anon-20191002_181700-120:localhost:8800 anon-20191002_181700-120n>]@anon-20191002_181700-119:localhost:8800@anon-20191002_181700-119:localhost:8800 anon-20191002_181700-119n=]@anon-20191002_181700-118:localhost:8800@anon-20191002_181700-118:localhost:8800 anon-20191002_181700-118n<]@anon-20191002_181700-117:localhost:8800@anon-20191002_181700-117:localhost:8800 anon-20191002_181700-117n;]@anon-20191002_181700-116:localhost:8800@anon-20191002_181700-116:localhost:8800 anon-20191002_181700-116nK]@anon-20191002_181700-137:localhost:8800@anon-20191002_181700-137:localhost:8800 anon-20191002_181700-137 T P ( @ H xP`8pH PX0h@ 8 `  X 0hx(p X0 p x `8(p  h @P('Q!OtBUhGeUSiDMWRKIOT:localhost:8800 >'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OMkiVTuuOEeiFAXtUY:localhost:8800Z'Q!OMkiVTuuOEeiFAXtUY:localhost:8800Y'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800)'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800&'Q!OMkiVTuuOEeiFAXtUY:localhost:8800R'Q!PCgUmZOwWmtDsuFqXg:localhost:8800#'Q!OMkiVTuuOEeiFAXtUY:localhost:8800S'Q!PCgUmZOwWmtDsuFqXg:localhost:8800 'Q!OMkiVTuuOEeiFAXtUY:localhost:8800T'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OMkiVTuuOEeiFAXtUY:localhost:8800U'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OMkiVTuuOEeiFAXtUY:localhost:8800X'Q!OMkiVTuuOEeiFAXtUY:localhost:8800W'Q!OMkiVTuuOEeiFAXtUY:localhost:8800V'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800 @P'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800 H'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 ='Q!OtBUhGeUSiDMWRKIOT:localhost:8800 <'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 ;'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 :'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 9'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 8'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 7('Q!PCgUmZOwWmtDsuFqXg:localhost:8800+'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800x   s`eQ_u$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 609}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M"], "type": "m.room.join_rules", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040804958, "hashes": {"sha256": "aHsXcQqKzbGEbLPjyFVKbCGhopv10wpLHHwXm4RSVJ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mS2cIM3Epw6ndXPZ6wMGlgMpGMfvzqnjTC/iL8T/7F2kSITP9MFBvKtmO8B7JAOK2vd0pX0LlCYdkXrrClVpDQ"}}, "unsigned": {"age_ts": 1570040804958}}_eQ_9$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 608}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE"], "type": "m.room.canonical_alias", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"alias": "#test-20191002_181700-23:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040804325, "hashes": {"sha256": "s8IRLyiW2GwRHHrVWr1iWfgPAkfXULtJhJnj+LES5Qg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f9Ds13t93578iadpDCRpB6xlxuc+FgOv06lXR39vlpVIj0pf/cqZvusuINK1yZb7KCOCtPNkndNkrdYkCLXHBQ"}}, "unsigned": {"age_ts": 1570040804325}}j^eQ_c$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 607}{"auth_events": ["$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "type": "m.room.power_levels", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"users": {"@anon-20191002_181700-138:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040803751, "hashes": {"sha256": "EAS/I3AfYUXKarNxQWp+tEiDoJwCT9qP/beIcDPbTI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "98XvfDe8yYvWyvBSze0a236uZHN/l2Va32NBI3l7nZcwzmqfP+GXac/BLIXcss5uzUjr4tHOcbXMfXGLROEjBQ"}}, "unsigned": {"age_ts": 1570040803751}}u]eQ_y$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 606}{"auth_events": ["$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM"], "prev_events": ["$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM"], "type": "m.room.member", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-138", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-138:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040803215, "hashes": {"sha256": "3LojN0FIhI9+AF0AGBLCa5I4j+AbfUyr407qDnj5Pg0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EEtMZ7wbYdBgPifnrtxazCe5fGdXAjYLyTLRHvcpBqO2Te9WjPCG2AV/0hBXQY1RNnF265t08aBbeKRsgiImBw"}}, "unsigned": {"age_ts": 1570040803215}} @Q2W%vE,dW% ^ , d 2 j 8  p > v D 8|jJPV$\*1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU :1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA k1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:42455 V1e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU3$74:localhost:42455 U3$73:localhost:42455 N3$72:localhost:42455 M3$71:localhost:42455 L0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMm3$70:localhost:42455 K1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I]1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k,1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qx1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 V1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk01e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 q1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY{1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM b0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y+1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE f1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEh1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ41e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM\1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g `1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo,1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A w1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro41e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0J0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQX1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44AK1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs a1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 3$79:localhost:42455 Z1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM'3$78:localhost:42455 Y3$77:localhost:42455 X3$76:localhost:42455 W1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA d ?L w E  { } K ) Q  U W % ] +c1i7oO= uCj8#[I1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4C1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4B1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4A1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo _1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo ^1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M01e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M01e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M01e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA41e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA31e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA21e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo `1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEc1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI 1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI 1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI 1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwS1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwR1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwQ1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg M1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg L1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg K1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM F1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM E1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM D1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU91e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU81e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT81e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT81e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 1e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk1e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk1e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y 1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y 1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE 1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwIc1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEd1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs 1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E%1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E#1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1*e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1)e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1(e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1'e$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM1&e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1%e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns~1$e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE}1#e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA|1"e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M{1!e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEz1 e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwy1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYv1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iou1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYt1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAs1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4r1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4q1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIp1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwo1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4m1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48l1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsk1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAj1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4i1e$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkh1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0g1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0f1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8d1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoc1 e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokb1 e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0a1 e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI`1 e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4_1 e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c^1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs]1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4\1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg[1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsZ1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvoY1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nIX1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30V1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgU1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kT1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQS1~e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoR1}e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyEQ1|e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkP1{e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEO1ze$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIL1ye$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMK1xe$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIJ1we$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMI1ve$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UH1ue$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNoG1te$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98F1se$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8E1re$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvoD1qe$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9AC1pe$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4B1oe$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo@1ne$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ?1me$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU>1le$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8=1ke$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY<1je$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM;1ie$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0:1he$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF091ge$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx881fe$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ471ee$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr061de$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk41ce$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw421be$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo11ae$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW801`e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M/ o xobceQ_S$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 612}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo"], "type": "m.room.third_party_invite", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:46213/_matrix/identity/v2/pubkey/isvalid", "public_key": "T6DriTFG1NKhbYa+RaM2rNgmMdyk1sRUyDXJhmBZK1s"}, {"public_key": "eQfS9yJgFxwmx1oYxGYkum++glXz1/jR1pfZMsVKTsw", "key_validity_url": "https://localhost.localdomain:46213/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:46213/_matrix/identity/v2/pubkey/isvalid", "public_key": "T6DriTFG1NKhbYa+RaM2rNgmMdyk1sRUyDXJhmBZK1s"}, "depth": 8, "prev_state": [], "state_key": "1", "origin": "localhost:8800", "origin_server_ts": 1570040807668, "hashes": {"sha256": "2RyuWhztYukBJsI7pe+9YIyFB3vzn/HfVqnW5BdGlrc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/teTilxEmL483/veRJsrxcALpDHUHiYaolwp6JKZaO118EsAOkGgzmHNCX1kRLGHU+bQQHfRSN72F1N/tNhEDQ"}}, "unsigned": {"age_ts": 1570040807668}}beQ_M$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 611}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8"], "type": "m.room.aliases", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"aliases": ["#test-20191002_181700-23:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040806967, "hashes": {"sha256": "rngzio1NvFXK5z5+FJzWxTucL43qz6sHYItoWvO2nRA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RKsp49YS85EhzcvunOmEpmNd/l5KbZGiQk+P6AiEam3H2MtgAefWtWXc1Lx6P4/mQEcykgJo5BeDB9Gb9H69Cg"}}, "unsigned": {"age_ts": 1570040806967}}aeQ_$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800{"token_id": 166, "stream_ordering": 610}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc"], "prev_events": ["$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M"], "type": "m.room.history_visibility", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040805808, "hashes": {"sha256": "rExcMDFOYbuVBTKWRTvhCl+Kd9cEhmf61T9TdTIUOM0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5n3wFhE+mnOTA2B7u4LcpJJE3SkPAMnc08QYzSBTAzjPLmoK3O+n9zIUNfTHU2GRwy8+uJTKec8doFVMyjG8Dg"}}, "unsigned": {"age_ts": 1570040805808}} {g{hfeQ__$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 615}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-140:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040812526, "hashes": {"sha256": "sLmHYunO7lyg0pBfVjItYyZJXhvoYBcow8ChlKx6H2A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BF+zGOGSJ+DgyarxTy0SUhsSyrddikRf4KBbtetkatgLejDLditrtgQ4Ze7qXQS4Aqsl8NC66Mif12j60bMTDQ"}}, "unsigned": {"age_ts": 1570040812526}}4eeQ/%$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0!WWZVpyLeZfyfpWidLx:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 614}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-139", "membership": "join"}, "depth": 10, "hashes": {"sha256": "uvRSoWmO7bN5hWYBI4BZzLqpDl5HWBvNsfc0nNiu8xg"}, "origin": "localhost:8829", "origin_server_ts": 1570040809972, "prev_events": ["$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk"], "prev_state": [], "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-139:localhost:8829", "state_key": "@anon-20191002_181700-139:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BN2ZpTIObSHZY7vvbYoiZxNXRjMoxjc2PIp6Yd4tS9vv7YY9w3XE84DVqHH7ACOLgf3sqRyW9bKD+kZaZkDzBw"}, "localhost:8829": {"ed25519:a_UxIG": "rVtiDG4ZYawwUxKL6ut2DcO33foGq7zgSYlQbd1eou4nO3UE6Qu9X7iRgYvEDlRnOrgBfrYzxWwa9R18bwsDCQ"}}, "unsigned": {"age": 138, "replaces_state": "$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk"}}]deQ $b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!WWZVpyLeZfyfpWidLx:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 613}{"auth_events": ["$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE", "$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM", "$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M", "$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc", "$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4"], "prev_events": ["$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4"], "type": "m.room.member", "room_id": "!WWZVpyLeZfyfpWidLx:localhost:8800", "sender": "@anon-20191002_181700-138:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"mxid": "@anon-20191002_181700-139:localhost:8829", "signatures": {"localhost.localdomain:46213": {"ed25519:0": "q11GEcod8XEfLb5U+flWATO7H96azpaE3HUAh4NcMYO0Ic+9eOQXdUKO79vhgx+iNFFEsh5AkNZJQSB/dJHSAQ"}}, "token": "1"}, "display_name": "Bob"}}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-139:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040808563, "hashes": {"sha256": "1MmkI/6CuIla35XXJoJMjNgTG6E3QxexLGAaXzM9z4Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XYexViH0ZCY0QUDbq5Y/kr6/NW7EWSo9PXMEhbqRP52amG1+22sRFJ0IyOU7uJx8LM3S1P0umuPPSfRmygIMCg"}, "localhost:8829": {"ed25519:a_UxIG": "A2+bHW3Y/g+WMRhYcRYbkmnLWeqKootfGxgYYzTN86rFyFdX6GZWK/u23TeepVa6BtdK0PNqDmaR6FWjIUV8Bw"}}, "unsigned": {"age_ts": 1570040808563, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-23:localhost:8800"}, "sender": "@anon-20191002_181700-138:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-138:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-138:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-138", "avatar_url": null}, "sender": "@anon-20191002_181700-138:localhost:8800"}]}} a} { y w u sqomkigeca~ZeeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~YeeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800~XeeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~WeeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~VeeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800~UeeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~TeeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~SeeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~ReeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800~QeeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~PeeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~OeeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~NeeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~MeeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~LeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~KeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~JeeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~IeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~HeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~GeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~FeeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~EeeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~DeeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800~CeeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800~BeeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~AeeQ$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800~@eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800~?eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800~>eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE!WWZVpyLeZfyfpWidLx:localhost:8800~=eeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800~<eeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800 =|t l d \ T  LE5-%eeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800UeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800SeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800TeeQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800́eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800 ÁeeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800ځeeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800eeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800 &eeQ$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800 eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800 +eeQ$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800%eeQ$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc!jYzridjeihmwPBuwLb:localhost:8800AeeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:88002eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!CQKLQUpSYakhxVDltC:localhost:8800eeQ$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800meeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc!wnriPzXkIMmdTNoJKU:localhost:8800ǁeeQ$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800ǁeeQ$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800 teeQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800]eeQ$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800eeQ$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg!egCvzKpbEwmuvDoBTb:localhost:8800` ~z v r n j fb^ZVRNJF?eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800>eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800=eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800<eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800;eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800:eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:88009eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:88008eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:88007eeQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:88006eeQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:88005eeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:88004eeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:88003eeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:88002eeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:88001eeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:88000eeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800/eeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800.eeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800-eeQ$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800,eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800+eeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800*eeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU!BkzROHxDAfKIzYpmPV:localhost:8800)eeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!BkzROHxDAfKIzYpmPV:localhost:8800(eeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY!BkzROHxDAfKIzYpmPV:localhost:8800'eeQ$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800&eeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800%eeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800$eeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800#eeQ$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800"eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!WWZVpyLeZfyfpWidLx:localhost:8800   gh5 4i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPcHdsY2xTMmxNRHhGelAKMDAyZnNpZ25hdHVyZSCRO3NI972HYQiWbTV_AWWTe36rrhxCS0LG7T3jgGN7_go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5JbFJkNypzTWs2eURlTnUKMDAyZnNpZ25hdHVyZSCDDhptP9gyMvPD-AX61QNi0vzkJgRqWaZ8eBWmEREh6Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAo Gc0`+ _ , \ ' W $ T  O PK}JzEyFvAq> n94]@anon-20191002_181700-377:localhost:8800m2]@anon-20191002_181700-377:localhost:8800a4]@anon-20191002_181700-376:localhost:8800m2]@anon-20191002_181700-376:localhost:8800a4]@anon-20191002_181700-375:localhost:8800m2]@anon-20191002_181700-375:localhost:8800a4]@anon-20191002_181700-374:localhost:8800m2]@anon-20191002_181700-374:localhost:8800a4]@anon-20191002_181700-373:localhost:8800m2]@anon-20191002_181700-373:localhost:8800a4]@anon-20191002_181700-372:localhost:8800m2]@anon-20191002_181700-372:localhost:8800a4]@anon-20191002_181700-371:localhost:8800m2]@anon-20191002_181700-371:localhost:8800a4]@anon-20191002_181700-370:localhost:8800m2]@anon-20191002_181700-370:localhost:8800a2[@anon-20191002_181700-36:localhost:8800mQ0[@anon-20191002_181700-36:localhost:8800aP4]@anon-20191002_181700-369:localhost:8800m2]@anon-20191002_181700-369:localhost:8800a4]@anon-20191002_181700-368:localhost:8800m2]@anon-20191002_181700-368:localhost:8800a4]@anon-20191002_181700-367:localhost:8800m2]@anon-20191002_181700-367:localhost:8800a2]@anon-20191002_181700-366:localhost:8800a4]@anon-20191002_181700-365:localhost:8800m2]@anon-20191002_181700-365:localhost:8800a2]@anon-20191002_181700-364:localhost:8800a4]@anon-20191002_181700-363:localhost:8800m2]@anon-20191002_181700-363:localhost:8800a4]@anon-20191002_181700-362:localhost:8800m2]@anon-20191002_181700-362:localhost:8800a4]@anon-20191002_181700-361:localhost:8800m2]@anon-20191002_181700-361:localhost:8800a4]@anon-20191002_181700-360:localhost:8800m2]@anon-20191002_181700-360:localhost:8800a2[@anon-20191002_181700-35:localhost:8800mO0[@anon-20191002_181700-35:localhost:8800aN4]@anon-20191002_181700-359:localhost:8800m2]@anon-20191002_181700-359:localhost:8800a4]@anon-20191002_181700-358:localhost:8800m2]@anon-20191002_181700-358:localhost:8800a4]@anon-20191002_181700-357:localhost:8800m2]@anon-20191002_181700-357:localhost:8800a4]@anon-20191002_181700-356:localhost:8800m2]@anon-20191002_181700-356:localhost:8800a4]@anon-20191002_181700-355:localhost:8800m2]@anon-20191002_181700-355:localhost:8800a4]@anon-20191002_181700-354:localhost:8800m2]@anon-20191002_181700-354:localhost:8800a4]@anon-20191002_181700-353:localhost:8800m2]@anon-20191002_181700-353:localhost:8800a4]@anon-20191002_181700-352:localhost:8800m2]@anon-20191002_181700-352:localhost:8800a4]@anon-20191002_181700-351:localhost:8800m2]@anon-20191002_181700-351:localhost:8800a4]@anon-20191002_181700-350:localhost:8800m2]@anon-20191002_181700-350:localhost:8800a2[@anon-20191002_181700-34:localhost:8800mM0[@anon-20191002_181700-34:localhost:8800aL4]@anon-20191002_181700-349:localhost:8800m2]@anon-20191002_181700-349:localhost:8800a4]@anon-20191002_181700-348:localhost:8800m2]@anon-20191002_181700-348:localhost:8800a4]@anon-20191002_181700-347:localhost:8800m2]@anon-20191002_181700-347:localhost:8800a4]@anon-20191002_181700-346:localhost:8800m2]@anon-20191002_181700-346:localhost:8800a4]@anon-20191002_181700-345:localhost:8800m2]@anon-20191002_181700-345:localhost:8800a4]@anon-20191002_181700-343:localhost:8800m   sjeQ_u$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 619}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "prev_events": ["$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0"], "type": "m.room.join_rules", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040816010, "hashes": {"sha256": "BNdNOZAMFseYlZR25T05FQ4m0KsaP6tNsozXBzPHYFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nXQbxb8ItsbG/coCRE9eLyfTt6ezx0e0hdj0lUwBudzLfYvspn7rY9SPGsCIkr4NC5Bo+DQnKRDbmunTrfrADg"}}, "unsigned": {"age_ts": 1570040816010}}ieQ_9$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 618}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "prev_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0"], "type": "m.room.canonical_alias", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"alias": "#test-20191002_181700-24:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040815067, "hashes": {"sha256": "fy0+WaVb11+NEGQwvpoa+Zg/zRlsJmIcHmeB48ZBmk0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9VTSk58UanO/SK7GFgXrjoS1ZsV4pgxXWSoq5Ud3L5AhBVjtIzH6ocq2Dim636RKkls3pMbAm1MFUb5Qmb7bBQ"}}, "unsigned": {"age_ts": 1570040815067}}jheQ_c$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 617}{"auth_events": ["$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "prev_events": ["$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8"], "type": "m.room.power_levels", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"users": {"@anon-20191002_181700-140:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040814302, "hashes": {"sha256": "3AQC7EqfwG0QteBdh4LSNbYVPzM/RaynLKQBw7FXJH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f9qT3giUnx9byQhGyKeFB+MFqLildfv/SSSSan75YcGJit1MH2z5JSZdzGVrBmzgTueTqbc1OR0mg0aFUOCrAg"}}, "unsigned": {"age_ts": 1570040814302}}ugeQ_y$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 167, "stream_ordering": 616}{"auth_events": ["$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4"], "prev_events": ["$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4"], "type": "m.room.member", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-140:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-140", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-140:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040813710, "hashes": {"sha256": "v34n2h32Iz2QUpkv5LoeoWEFToVcwuH0/zG5Jb7RPoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WrkO+YdMDffBtvRdwUWt4Kcstw24OdudFug8zc8Jk/wR2uI3fjM5XEQD+lae5oSeyfeAaNqDIer70a3+M2qvCA"}}, "unsigned": {"age_ts": 1570040813710}}  K v D  | J  P   V $ \ *b0h6n< tBzHNT"]+j81e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw01e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw/1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY50e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0d0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0c0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0b1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw 1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo @1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo ?1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo >1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE 1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE 1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE 1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0 1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0 1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0 1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkB1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkA1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE~1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEW1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEj1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEi1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEh1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0#1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0"1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE 1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MY1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MX1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw%1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw#1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s#1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"1e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk1e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl471e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4 1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0'1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0&1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0%1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY71e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY61e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1 \$ T t LD<4,  l d eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800 "eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800<eeQ$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800eeQ$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA!HmkcAMkMjWRhTDJMsy:localhost:88009eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800 ~eeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800 YeeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800 XeeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800 seeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800 )eeQ$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y!AWfbViAZparIjmDaVT:localhost:8800ׁeeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800keeQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800ceeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0!egCvzKpbEwmuvDoBTb:localhost:8800_eeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE!oXKJArsPmtgaYANBrg:localhost:8800heeQ$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800;eeQ$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800 \eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800>eeQ$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800?eeQ$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800eeQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800  K ' \ * VSM0i>7o j= Y! J u | { 8 $ICb  p R D 1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico [1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY$1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA 1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cw1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cz1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M )1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM 1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts~1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs01e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc#1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA 1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ]1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQf0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo]1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIf1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIh1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEa1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM O1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0p1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kl1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEH1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4F }1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ u1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkr1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagL1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk]1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o|1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o ?1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 11e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE O1e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o S1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA /1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU .  j  u 0 I+)49`y[Y \Q']eZ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsp[Q?eY!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo ZQ']eX!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI YQ']eW!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$yRMhVLnxeFdjrJfX5LJoNXmsoJ9RaoL8DBiSqs6Exmk XQ']eV!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30rWQ))eU!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgoVQ? eT!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibility$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kgUQ/ eS!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rules$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQlTQ9 eR!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_alias$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoiSQ3 eQ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE RQ']eP!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkcQQ' eO!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.create$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE PQ']eN!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-145:localhost:8829$zx789KIhAnVMgxg_3YnlXjechhEygoKwTRi6B-h53pM OQ']eM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-145:localhost:8829$uXaQfdGMi7wi7vhRnFFHiTN1tigFEBnxGrl36KN7IhMpNQ?eL!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI MQ']eK!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM LQ']eJ!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIrKQ))eI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMoJQ? eH!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibility$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3UgIQ/ eG!AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rules$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNolHQ9 eF!AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_alias$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98iGQ3 eE!AjjrNwXmPTCruHxaJq:localhost:8800m.room.power_levels$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8 FQ']eD!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-143:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvocEQ' eC!AjjrNwXmPTCruHxaJq:localhost:8800m.room.create$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A DQ']eB!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4 CQ']eA!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800$OLFNJqOLKWBVd4nTdKFKnN_Ls51W3F1_yjnATq13u0gpBQ?e@!BkzROHxDAfKIzYpmPV:localhost:8800m.room.third_party_invite2$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo AQ']e?!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ @Q']e>!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUr?Q))e=!BkzROHxDAfKIzYpmPV:localhost:8800m.room.aliaseslocalhost:8800$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8o>Q? e l:8K^2,d2k1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAJ1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk;1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU#3$89:localhost:42455 3$88:localhost:42455 3$87:localhost:42455 A$86_sent_F:localhost:42455 1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQs1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc 1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0"1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwM1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28^1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AH1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4A$85_sent_E:localhost:42455 1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o%M$84_backfilled_D:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug "G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk B3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokF1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 3$81:localhost:42455 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo`3$80:localhost:42455 1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok11e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 3$79:localhost:42455 3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 3$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 3$70:localhost:42455 1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U g1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkY1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4F1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g h1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIK1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A _1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kJ1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8X1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQf1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMj1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM N  ~ L  S ! Y ' ` .f4l:r@xF~LR qX&Q|J*p> 9IUFyd1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AFA$86_sent_F:localhost:42455 1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4A$85_sent_E:localhost:42455 1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o%M$84_backfilled_D:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 23$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokD1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 3$81:localhost:42455 u1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo^1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok/1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U H1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkJ1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4D1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU 1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g X1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI<1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A P1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kH1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8X1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQf1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs x1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMj1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsl1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 +1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0 1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwK3$89:localhost:42455 1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU v1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28^3$88:localhost:42455 1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk RK2k9jq? x F  ~ L  R  X & 8 ^ ,dW%S!rY'xFM1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAD1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk51e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMW1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQs1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc 1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir81e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0"1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwM3$89:localhost:42455 1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28^3$88:localhost:42455 1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AH1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug "G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk B3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokF1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo`3$80:localhost:42455 1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok11e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 3$79:localhost:42455 3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 3$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 3$70:localhost:42455 1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U e1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM 1e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkY1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4F1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g h1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIK1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRoo1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A _1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kJ1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8X1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQf1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMj1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM ,NC 8 - { " p  e ZOD9.|#qf VeL$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwsha256;׃A2oh ε Ք¬VeL$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4sha256خtE(Zœ:su+)4uVeL$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48sha256 "L զq 1k"@?VeL$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNssha256JIFZ&cpwƘKxze~ uJpVeL$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAsha256Ky! Y)KjH`t=©VeL$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4sha256U楎eKs,k~ K 9=ݱaZ^VeL$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBksha256{wb>lێG8yFbEIuVeL$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0sha256PJ3 "x"\QW Z¼#e3VeL$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0sha256zbȺȝ~0>5X^%ͽJגPh1]VeL$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8sha256(o[D;ixYZ@AhEIzh)@VeL$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxosha256_K` (֪v{Y#!,M5ו畐oV eL$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9woksha256#^]!mnRrwiCK w)}‰V eL$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0sha256 ב |\Y^v̋Y*cL>n-V eL$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIsha256N.CD\J ɣn$<̜&bV eL$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4sha256 W9.M _E!+[)L*~V eL$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-csha256pXb<MJ]41. @/yaVzeL$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIsha256m)L%O!PH~k;@ol"VyeL$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMsha256QV0ׄ;'V=w2y4o`h`|VxeL$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIsha256N.Cp77ܥ5dwJrVweL$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMsha256p$J"ޮ&xQq OnhC;#VveL$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Usha256͐u)Z!){&ic7uVueL$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNosha256dc=>hꬬ ,VteL$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98sha2566RMd&CdCԁ C[H+}VseL$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8sha256nS>7C|znk/UEI0eoVreL$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvosha256_YOrm UtDžqDVqeL$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Asha256݃Bʁ١cVoeL$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRosha256?Q9 !XgobMgBjNcDRJnRXLD:localhost:8800m.room.canonical_aliasAEQ))!XgobMgBjNcDRJnRXLD:localhost:8800m.room.aliaseslocalhost:8800D<Q3 !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels^Q']!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800:Q/ !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rulesBQ? !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibility6Q' !XcaKxZsPvbZhAGKKdx:localhost:8800m.room.create<Q3 !XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels ^Q']!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800#^Q']!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800:Q/ !XNfwczePlyYFWLCaui:localhost:8800m.room.join_rules!BQ? !XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibility"6Q' !XNfwczePlyYFWLCaui:localhost:8800m.room.create<Q3 !XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels^Q']!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800^Q']!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800 P\3\1 Z /  X -  V +  T ) } R '{P%yN#wL!uJsHqFoDmB*Q!RmdhCjvouVLmyIHjaM:localhost:8800AA*Q!RmdhCjvouVLmyIHjaM:localhost:8800@@*Q!RmdhCjvouVLmyIHjaM:localhost:8800??*Q!RmdhCjvouVLmyIHjaM:localhost:8800>>*Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( d*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' c*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & b*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % a*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ `*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # _*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " ^*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! ]*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 \*Q!RSLvuCuAqKQQrKCxNq:localhost:8800  [*Q!RPfffkmSEbWggEjnoI:localhost:8800-3*Q!RPfffkmSEbWggEjnoI:localhost:8800+1*Q!RPfffkmSEbWggEjnoI:localhost:8800(.*Q!RPfffkmSEbWggEjnoI:localhost:8800%+*Q!RPfffkmSEbWggEjnoI:localhost:8800"(*Q!RPfffkmSEbWggEjnoI:localhost:8800%*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800  *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 } *Q!QnmLrBAxeItdHsaxWf:localhost:8800 k *Q!QnmLrBAxeItdHsaxWf:localhost:8800 j *Q!QnmLrBAxeItdHsaxWf:localhost:8800 i *Q!QnmLrBAxeItdHsaxWf:localhost:8800 h *Q!QnmLrBAxeItdHsaxWf:localhost:8800 g *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QcaNrIiUsWpTiVGOnt:localhost:8800<i*Q!QcaNrIiUsWpTiVGOnt:localhost:8800:g*Q!QcaNrIiUsWpTiVGOnt:localhost:88008e*Q!QcaNrIiUsWpTiVGOnt:localhost:88006c*Q!QcaNrIiUsWpTiVGOnt:localhost:88005b(Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 ~ ~coeQ_U$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 168, "stream_ordering": 624}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ"], "prev_events": ["$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ"], "type": "m.room.third_party_invite", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-141:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:41099/_matrix/identity/v2/pubkey/isvalid", "public_key": "FbyKncvpQLqMGCtHNQCZ6MkYPyKDlmPLgMm9ktXrlwk"}, {"key_validity_url": "https://localhost.localdomain:41099/_matrix/identity/v2/pubkey/isvalid", "public_key": "OefadBZjnA/DvLrfUjA9DWXooxJIE4XPhfg+rm7f2jQ"}], "key_validity_url": "https://localhost.localdomain:41099/_matrix/identity/v2/pubkey/isvalid", "public_key": "FbyKncvpQLqMGCtHNQCZ6MkYPyKDlmPLgMm9ktXrlwk"}, "depth": 10, "prev_state": [], "state_key": "2", "origin": "localhost:8800", "origin_server_ts": 1570040820891, "hashes": {"sha256": "iYCloOHSun1hEPyQCyijTfFtO9X7Eo802V9PTz0WGnI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R5u03hpN1fVTwrI+Ej0qAxPF0SViIle0m5GZ0yJfbfXU/Un9jv2qwqPNop4yRMzon53wkClI8XVgm1s4VxCwAQ"}}, "unsigned": {"age_ts": 1570040820891}}neQ_=$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800{"token_id": 168, "stream_ordering": 623}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM"], "prev_events": ["$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU"], "type": "m.room.member", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-141:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-141", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-141:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040819594, "hashes": {"sha256": "hdzUSqDZcpxvWTAUcEisduVoV19kZg7qUZLmwprPSiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cmieDZ8Eu5if8tleyCq04FW9OYTcURjpfUBqpXK72G2tQWArfjz3LyZOtArlIdL4VLVUi6YAC47BDQiRQ+RIDA"}}, "unsigned": {"age_ts": 1570040819594, "replaces_state": "$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU"}} RoDF w L !mBk@qT)e:g<}R' { P % y N # c8  ui> J  s H *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & &*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % %*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ $*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # #*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 " "*Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i i*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] ]*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ \*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ [*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z Z*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y Y*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m m*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l l*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k k*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j j*Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n n*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800X*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X X*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 W W*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q q*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p p*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o o*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YtVXQjSPgVtbxrzUOA:localhost:8800ii*Q!YtVXQjSPgVtbxrzUOA:localhost:8800hh*Q!YtVXQjSPgVtbxrzUOA:localhost:8800gg*Q!YtVXQjSPgVtbxrzUOA:localhost:8800ff*Q!YtVXQjSPgVtbxrzUOA:localhost:8800ee*Q!YtVXQjSPgVtbxrzUOA:localhost:8800dd*Q!YgaGPEraeLCqHQirin:localhost:8800??*Q!YgaGPEraeLCqHQirin:localhost:8800<<*Q!YgaGPEraeLCqHQirin:localhost:8800;;*Q!YgaGPEraeLCqHQirin:localhost:8800::*Q!YgaGPEraeLCqHQirin:localhost:880099*Q!YgaGPEraeLCqHQirin:localhost:880088*Q!YgaGPEraeLCqHQirin:localhost:880077*Q!YQATbgbLImCDamiDHC:localhost:8800 KN(G0TA$ a " i * J i R  r 3Rb#BnQ6qZCF / /m.room.join_rules19 .m.room.canonical_alias03 -m.room.power_levels/>'],m.room.member@anon-20191002_181700-138:localhost:8800.' +m.room.create->']*m.room.member@anon-20191002_181700-137:localhost:8800,>'])m.room.member@anon-20191002_181700-137:localhost:8800+>'](m.room.member@anon-20191002_181700-137:localhost:8800*#?'m.room.third_party_invite0)%))&m.room.aliaseslocalhost:8800("? %m.room.history_visibility'>']om.room.member@anon-20191002_181700-153:localhost:8800q>']nm.room.member@anon-20191002_181700-153:localhost:8800p#?mm.room.third_party_invite6o"? lm.room.history_visibilityn/ km.room.join_rulesm3 jm.room.power_levelsl>']im.room.member@anon-20191002_181700-152:localhost:8800k' hm.room.createj>']gm.room.member@anon-20191002_181700-151:localhost:8800i>']fm.room.member@anon-20191002_181700-151:localhost:8800h>']em.room.member@anon-20191002_181700-151:localhost:8800g>']dm.room.member@anon-20191002_181700-149:localhost:8800f#?cm.room.third_party_invite5e>']bm.room.member@anon-20191002_181700-150:localhost:8800d>']am.room.member@anon-20191002_181700-150:localhost:8800c"? `m.room.history_visibilityb/ _m.room.join_rulesa3 ^m.room.power_levels`>']]m.room.member@anon-20191002_181700-149:localhost:8800_' \m.room.create^>'][m.room.member@anon-20191002_181700-147:localhost:8829]>']Zm.room.member@anon-20191002_181700-147:localhost:8829\#?Ym.room.third_party_invite4[>']Xm.room.member@anon-20191002_181700-148:localhost:8829Z>']Wm.room.member@anon-20191002_181700-148:localhost:8829Y>']Vm.room.member@anon-20191002_181700-148:localhost:8829X%))Um.room.aliaseslocalhost:8800W"? Tm.room.history_visibilityV/ Sm.room.join_rulesU9 Rm.room.canonical_aliasT3 Qm.room.power_levelsS>']Pm.room.member@anon-20191002_181700-146:localhost:8800R' Om.room.createQ>']Nm.room.member@anon-20191002_181700-145:localhost:8829P>']Mm.room.member@anon-20191002_181700-145:localhost:8829O#?Lm.room.third_party_invite3N>']Km.room.member@anon-20191002_181700-144:localhost:8800M>']Jm.room.member@anon-20191002_181700-144:localhost:8800L%))Im.room.aliaseslocalhost:8800K"? Hm.room.history_visibilityJ/ Gm.room.join_rulesI9 Fm.room.canonical_aliasH3 Em.room.power_levelsG>']Dm.room.member@anon-20191002_181700-143:localhost:8800F' Cm.room.createE>']Bm.room.member@anon-20191002_181700-142:localhost:8800D>']Am.room.member@anon-20191002_181700-142:localhost:8800C#?@m.room.third_party_invite2B>']?m.room.member@anon-20191002_181700-141:localhost:8800A>']>m.room.member@anon-20191002_181700-141:localhost:8800@%))=m.room.aliaseslocalhost:8800?"? / ;m.room.join_rules=9 :m.room.canonical_alias<3 9m.room.power_levels;>']8m.room.member@anon-20191002_181700-140:localhost:8800:' 7m.room.create9>']6m.room.member@anon-20191002_181700-139:localhost:88298>']5m.room.member@anon-20191002_181700-139:localhost:88297>']4m.room.member@anon-20191002_181700-139:localhost:88296>']3m.room.member@anon-20191002_181700-139:localhost:88295#?2m.room.third_party_invite14%))1m.room.aliaseslocalhost:88003"? 0m.room.history_visibility2 99ureQ_y$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 627}{"auth_events": ["$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A"], "prev_events": ["$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A"], "type": "m.room.member", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-143", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-143:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040824365, "hashes": {"sha256": "FFg92OV+lNkCwCeRDJZb6rU3k4vhsbgPqai+YSsTHeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ircWlxsBYU7XiTG05KXFbpMG72oWxr57i42KJA101O6diFBUz6UJkI3M+N7je9OET7j17UMeCqm/Nyh/D8XBBA"}}, "unsigned": {"age_ts": 1570040824365}}hqeQ__$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 626}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-143:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040823648, "hashes": {"sha256": "CAzqMHU0LLPoaBFgRDY/6ys4p+anhWWK2W7Zyt62lyU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZHw/VbktJ/0i2elOkBPjCIJ8zBGPFe9Nv4J4RIoNr9212KP3p4nUu9YE4tEW4+8gwZDBS+qZIYvK231r2W1tBQ"}}, "unsigned": {"age_ts": 1570040823648}}^peQ $cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 625}{"auth_events": ["$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0", "$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4", "$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM", "$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ", "$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo"], "prev_events": ["$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo"], "type": "m.room.member", "room_id": "!BkzROHxDAfKIzYpmPV:localhost:8800", "sender": "@anon-20191002_181700-141:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"mxid": "@anon-20191002_181700-142:localhost:8800", "signatures": {"localhost.localdomain:41099": {"ed25519:0": "csGIOmpI8sU3Cs6NMJvpj+IUt7n22naNzdH19wogmLYPIYGvrvN1TPRokNvy7IsbQVvvswKPATXCRjbEl9joAA"}}, "token": "2"}, "display_name": "Bob"}}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-142:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040821731, "hashes": {"sha256": "HL4x81Pm4Ok7GVWvY3GIehcTnNv1cdyG6EW/QGFrEF8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6/DdCftDP14oncxH2PeVKAGEXfD2fm/H6I4VgMn8lqduqtKMMcrEko45MNk53RB7//qzqe06s9l3GNTD4+n3AQ"}}, "unsigned": {"age_ts": 1570040821731, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-24:localhost:8800"}, "sender": "@anon-20191002_181700-140:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-140:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-141:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-141", "avatar_url": null}, "sender": "@anon-20191002_181700-141:localhost:8800"}]}} a} { y w u sqomkigeca~yeeQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~xeeQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~weeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800~veeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~ueeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~teeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800~seeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~reeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~qeeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~peeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800~oeeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~neeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~meeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~leeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~keeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~jeeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~ieeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~heeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~geeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~feeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~eeeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~deeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~ceeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~beeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800~aeeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800~`eeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~_eeQ$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800~^eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800~]eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800~\eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800~[eeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800 xN F  ~ L  R X & ^ ,dKyGjf4m; sAyGMS!9q? JPSogZKX50rSYi1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA 1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk ~1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI 1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUY1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc91e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw%1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwU1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8y1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 t1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg (1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8M1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgE1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMR1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA .1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM 1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 10e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQj1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8N1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUq1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28,1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYT3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug m"G$83_outlier_C:localhost:42455 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 3$82:localhost:42455 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 z3$80:localhost:42455 1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkf1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0YU1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEd1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ41e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU f1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM[1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g 71e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA 1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0AY1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf41e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8 1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0Ec1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU <1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4M1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA =1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM 21e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUX1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw 1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM [ r } [ Hplm x 9 Vj- L yg|eQ3 $jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800m.room.power_levelseeQ/ $p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rulesjeQ9 $qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_aliasgeQ3 $GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels eQ']$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800joina eQ' $KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.createn eQ?$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3 eQ']$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800joinneQ?$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800m.room.third_party_invite2 eQ']$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-141:localhost:8800joinpeQ))$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!BkzROHxDAfKIzYpmPV:localhost:8800m.room.aliaseslocalhost:8800meQ? $2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY!BkzROHxDAfKIzYpmPV:localhost:8800m.room.history_visibilitye~eQ/ $78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM!BkzROHxDAfKIzYpmPV:localhost:8800m.room.join_rulesj}eQ9 $MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800m.room.canonical_alias7 {eQ']$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-140:localhost:8800joinazeQ' $XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800m.room.create yeQ']$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829joinnxeQ?$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800m.room.third_party_invite1pweQ))$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo!WWZVpyLeZfyfpWidLx:localhost:8800m.room.aliaseslocalhost:8800p eQ))$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800m eQ? $Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibilityeeQ/ $gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rulesjeQ9 $NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_aliasgeQ3 $blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800m.room.power_levels eQ']$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-143:localhost:8800joinaeQ' $wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800m.room.createeQ']$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800m.room.member@anon-20191002_181700-142:localhost:8800invite N^ c f  n(~)y08N e'Q ]$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsm.room.member!aWvVRVaDflYyyGTOdD:localhost:8800m"m#~@anon-20191002_181700-149:localhost:8800 e'Q  ]$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4m.room.create!aWvVRVaDflYyyGTOdD:localhost:8800mm@anon-20191002_181700-149:localhost:8800 e'Q ] $la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800 m m@anon-20191002_181700-147:localhost:8829 e'Q ] $4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800 m)m @anon-20191002_181700-146:localhost:8800,e?Q ] $Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvom.room.third_party_invite!GiSxJsKZhQVHBkrVPn:localhost:8800 mmC@anon-20191002_181700-146:localhost:8800 e'Q ] $Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nIm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800 mm@anon-20191002_181700-148:localhost:8829 e'Q ]$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30m.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800mmt@anon-20191002_181700-146:localhost:8800!e)Q ]$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Egm.room.aliases!GiSxJsKZhQVHBkrVPn:localhost:8800mgm'@anon-20191002_181700-146:localhost:8800,e?Q ]$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0km.room.history_visibility!GiSxJsKZhQVHBkrVPn:localhost:8800mm`@anon-20191002_181700-146:localhost:8800$e/Q ]$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQm.room.join_rules!GiSxJsKZhQVHBkrVPn:localhost:8800mzm9@anon-20191002_181700-146:localhost:8800)e9Q ]$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevom.room.canonical_alias!GiSxJsKZhQVHBkrVPn:localhost:8800mm@anon-20191002_181700-146:localhost:8800&~e3Q ]$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyEm.room.power_levels!GiSxJsKZhQVHBkrVPn:localhost:8800mm@anon-20191002_181700-146:localhost:8800 }e'Q ]$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkm.room.member!GiSxJsKZhQVHBkrVPn:localhost:8800m>m@anon-20191002_181700-146:localhost:8800| e'Q  ]$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEm.room.create!GiSxJsKZhQVHBkrVPn:localhost:8800mmm@anon-20191002_181700-146:localhost:8800,{e?Q ] $3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIm.room.third_party_invite!AjjrNwXmPTCruHxaJq:localhost:8800 mm@anon-20191002_181700-144:localhost:8800 ze'Q ] $uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMm.room.member!AjjrNwXmPTCruHxaJq:localhost:8800 mm~@anon-20191002_181700-144:localhost:8800 ye'Q ]$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIm.room.member!AjjrNwXmPTCruHxaJq:localhost:8800mܗm@anon-20191002_181700-143:localhost:8800!xe)Q ]$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMm.room.aliases!AjjrNwXmPTCruHxaJq:localhost:8800m1mٽ@anon-20191002_181700-143:localhost:8800,we?Q ]$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Um.room.history_visibility!AjjrNwXmPTCruHxaJq:localhost:8800mm԰@anon-20191002_181700-143:localhost:8800$ve/Q ]$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNom.room.join_rules!AjjrNwXmPTCruHxaJq:localhost:8800mˈm@anon-20191002_181700-143:localhost:8800)ue9Q ]$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98m.room.canonical_alias!AjjrNwXmPTCruHxaJq:localhost:8800mǘm@anon-20191002_181700-143:localhost:8800&te3Q ]$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8m.room.power_levels!AjjrNwXmPTCruHxaJq:localhost:8800m m6@anon-20191002_181700-143:localhost:8800 se'Q ]$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvom.room.member!AjjrNwXmPTCruHxaJq:localhost:8800m-m„@anon-20191002_181700-143:localhost:8800r e'Q  ]$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Am.room.create!AjjrNwXmPTCruHxaJq:localhost:8800m`m@anon-20191002_181700-143:localhost:8800 9p  R J"[UC" e]]Q=$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM@anon-20191002_181700-158:localhost:8800@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800joinanon-20191002_181700-158C! e]]Q=$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE@anon-20191002_181700-156:localhost:8800@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800joinanon-20191002_181700-156C e]]Q=$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4@anon-20191002_181700-154:localhost:8800@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800joinanon-20191002_181700-154C e]]Q=$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI@anon-20191002_181700-153:localhost:8800@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800joinanon-20191002_181700-153- e]]Q$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw@anon-20191002_181700-153:localhost:8800@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800inviteC e]]Q=$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4@anon-20191002_181700-152:localhost:8800@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800joinanon-20191002_181700-152C e]]Q=$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0@anon-20191002_181700-151:localhost:8800@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800joinanon-20191002_181700-151- e]]Q$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0@anon-20191002_181700-151:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800invite, e]]Q$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800leaveC e]]Q=$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok@anon-20191002_181700-150:localhost:8800@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800joinanon-20191002_181700-150E e]]Q=$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0@anon-20191002_181700-150:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800inviteanon-20191002_181700-150C e]]Q=$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800joinanon-20191002_181700-149C e]]Q=$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg@anon-20191002_181700-147:localhost:8829@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800joinanon-20191002_181700-147- e]]Q$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs@anon-20191002_181700-147:localhost:8829@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800inviteC e]]Q=$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI@anon-20191002_181700-148:localhost:8829@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800joinanon-20191002_181700-148E e]]Q=$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30@anon-20191002_181700-148:localhost:8829@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800inviteanon-20191002_181700-148C e]]Q=$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk@anon-20191002_181700-146:localhost:8800@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800joinanon-20191002_181700-146C e]]Q=$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM@anon-20191002_181700-144:localhost:8800@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800joinanon-20191002_181700-144E e]]Q=$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI@anon-20191002_181700-144:localhost:8800@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800inviteanon-20191002_181700-144C e]]Q=$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo@anon-20191002_181700-143:localhost:8800@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800joinanon-20191002_181700-143  veQ_$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 631}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo"], "type": "m.room.history_visibility", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040828160, "hashes": {"sha256": "MSjXa0lOinZNvPLYeXgYCqANnIyoX/VkSddlD9dOEvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n2inq5mBxu+Gh+8F+VcITjGBKRad9MlMHpw2FoutWMriGMjSYJ1bfbBRy82eQZw4xnkGSs5nyTEuLy8JhH/WBQ"}}, "unsigned": {"age_ts": 1570040828160}}sueQ_u$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 630}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98"], "type": "m.room.join_rules", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040826760, "hashes": {"sha256": "Pv5cVfy+0OvhVOHiskKloFnBiiIcMGMhlZC06d2Vieg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dhdAvftzrzMrxKKX+Se3Kt7uawzmYu8+ZqgC9gvUaPWdWJQH6YGR0f8cjOexBkQ6aWc+SN1rYPY9meYd5+y6BA"}}, "unsigned": {"age_ts": 1570040826760}}teQ_9$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 629}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8"], "type": "m.room.canonical_alias", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"alias": "#test-20191002_181700-25:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040825752, "hashes": {"sha256": "zIRmRBmzHtChRMAxg9wtTdbMGYhSKNW/7PezQEB1ENk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Eb0XVjUbLTRlrNRlyHuKnVn4zPe6mS8jIvz8ix4EIrBoYBMqFum8dM+JgO7Ful8yB//thviTcsYqxgZcf/xqCA"}}, "unsigned": {"age_ts": 1570040825752}}jseQ_c$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 628}{"auth_events": ["$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "type": "m.room.power_levels", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"users": {"@anon-20191002_181700-143:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040824845, "hashes": {"sha256": "j8iNys1eB9k17LDgZ3Q1US4pgeVl1Y0imVKp59Qvjcc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "udLHQpj9/bezAbKgUY/fMG1J1FJaMN7d2SSSbtu0bd90hRJbcy7w9eDdUZQP2copxe2MlT8AXebNSUotz+O6CA"}}, "unsigned": {"age_ts": 1570040824845}}  4 h 9md]c@anon-20191002_181700-177:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAo127.0.0.1d]c@anon-20191002_181700-176:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgo127.0.0.1d]c@anon-20191002_181700-175:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgo127.0.0.1d]c@anon-20191002_181700-174:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywo127.0.0.1d]c@anon-20191002_181700-173:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAo127.0.0.1d]c@anon-20191002_181700-170:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwo127.0.0.1a[a@anon-20191002_181700-16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMklXb19aNjpTbmM1QHJIUAowMDJmc2lnbmF0dXJlIEWPbKwbzi5-_C0h579vTIfdN2naCv1MDSLnwfmPJ8Q3Cg127.0.0.1d]c@anon-20191002_181700-169:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAo127.0.0.1d]c@anon-20191002_181700-168:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9wo127.0.0.1d]c@anon-20191002_181700-167:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwo127.0.0.1d]c@anon-20191002_181700-165:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgo127.0.0.1 D  Z r 7cۂc]c@anon-20191002_181700-101:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6wo127.0.0.1Sc]c@anon-20191002_181700-110:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEkyYThJMzZMUGFEalk9WmQKMDAyZnNpZ25hdHVyZSBfN7fiMSP-oSyS8JB6Gd_DtX_95EbQpIUKagDycjkrZAo127.0.0.1\9d]c@anon-20191002_181700-178:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAo127.0.0.1̂d]c@anon-20191002_181700-164:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgo127.0.0.1c]c@anon-20191002_181700-150:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwo127.0.0.1|c]c@anon-20191002_181700-134:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpzUmtkV3BjN0QyOzhJbmMKMDAyZnNpZ25hdHVyZSBJk9cFZmUR657c4rKBmoLu_yGBIvfrOWMxuBGhkgV58wo127.0.0.1qǂc]c@anon-20191002_181700-127:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGV-LWg9Q1RucmFoSXNVJjoKMDAyZnNpZ25hdHVyZSCDLtbOkfSW0s-mWf9niCTfk1UvEFyZITRHmrWGcgN3tgo127.0.0.1lc]c@anon-20191002_181700-121:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1IblJ1QUJzcFlISnA6diwKMDAyZnNpZ25hdHVyZSAlji_OzlFTajvj7WiLBRh6xA3amEki734wtR5vKuAHbQo127.0.0.1gc]c@anon-20191002_181700-117:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJNQUpoU1dAQV9CVUtpUFIKMDAyZnNpZ25hdHVyZSDtBh3Z6eHQI2J3kq-VnxhM7fKQgj8aF8zFrnROPJvhfwo127.0.0.1b|M1a@33:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQXp2VTpsckdjK0Z3ajVDQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEj340icC11gde7sJcw2G9z4f2FFkEZhOxA16sQRUUD7Cg127.0.0.1{M1a@22:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQV5hazNoM0tPNWZxa1NrSQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBZOXTG7MCWWYCqevi_fF2y634we-GSf2Z3Q7ZUVMWmaCg127.0.0.1 f  XF ,rj߂d]c@anon-20191002_181700-276:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwo127.0.0.1d]c@anon-20191002_181700-265:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHU6ck1wSz1tVWVTMkVtVzgKMDAyZnNpZ25hdHVyZSDrXYqnfYXyORP9VnmM0xCb799bIeWZ0dEYe7F9SxtHtgo127.0.0.1 md]c@anon-20191002_181700-221:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQo127.0.0.1d]c@anon-20191002_181700-210:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdzZSZ6VnRTO3ZNYmYrTG4KMDAyZnNpZ25hdHVyZSAw_sTACB0grGYIQZBZO4mmUJGT8kaw30JozrC7XeOYYwo127.0.0.1(d]c@anon-20191002_181700-243:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_Qo127.0.0.1&d]c@anon-20191002_181700-200:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDF4dzt5NVhUQzR2aXp0JisKMDAyZnNpZ25hdHVyZSD9QSywnh8104wl3lN9t2uWjOUpqEtvPgW6Z2v56L6tXQo127.0.0.1[d]c@anon-20191002_181700-253:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8go127.0.0.1d]c@anon-20191002_181700-232:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAo127.0.0.1 d]c@anon-20191002_181700-297:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAo127.0.0.1(#d]c@anon-20191002_181700-286:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMuU1k6WlRjNHMzOW4zWC4KMDAyZnNpZ25hdHVyZSCm1CYMbpJeBEIlSqvHQLlTmNccB_w09A-mofLOOCns2wo127.0.0.1 +H . Y b  BEG-< HeQ']$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800aGeQ' $-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800m.room.create FeQ']$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800 EeQ']$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800 DeQ']$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800nCeQ?$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5 BeQ']$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800 AeQ']$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800m@eQ? $9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibilitye?eQ/ $C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rulesg>eQ3 $cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels =eQ']$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800a<eQ' $HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create ;eQ']$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829 :eQ']$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829n9eQ?$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4 8eQ']$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829 7eQ']$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829p6eQ))$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800m5eQ? $nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibilitye4eQ/ $p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rulesj3eQ9 $qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_aliasg2eQ3 $GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels 1eQ']$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800a0eQ' $KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.createn/eQ?$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3 .eQ']$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800 -eQ']$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800p,eQ))$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800m+eQ? $Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibilitye*eQ/ $gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:8800m.room.join_rulesj)eQ9 $NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:8800m.room.canonical_alias ah`8pH @ p H x ` 8  xP(  x P (  @ X0h`8X0P(pH X 0  h @'Q!bOSxzttDtclnrWnLov:localhost:8800['Q!bOSxzttDtclnrWnLov:localhost:8800Z'Q!bOSxzttDtclnrWnLov:localhost:8800Y'Q!bOSxzttDtclnrWnLov:localhost:8800X'Q!bOSxzttDtclnrWnLov:localhost:8800W'Q!bOSxzttDtclnrWnLov:localhost:8800V'Q!bOSxzttDtclnrWnLov:localhost:8800U'Q!bOSxzttDtclnrWnLov:localhost:8800T'Q!bzPCFeFSMbCESvNbxl:localhost:8800-'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bzPCFeFSMbCESvNbxl:localhost:8800.'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800\'Q!beBXQofoOfxNBtzsut:localhost:8800Z'Q!beBXQofoOfxNBtzsut:localhost:8800X'Q!beBXQofoOfxNBtzsut:localhost:8800V'Q!beBXQofoOfxNBtzsut:localhost:8800T'Q!beBXQofoOfxNBtzsut:localhost:8800R'Q!beBXQofoOfxNBtzsut:localhost:8800O'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 ~'Q!bQDOrbAknnQZfUbhgS:localhost:8800 }'Q!bQDOrbAknnQZfUbhgS:localhost:8800 |'Q!bQDOrbAknnQZfUbhgS:localhost:8800 {'Q!bnTuVBaAJTPbcYZtRl:localhost:88008'Q!bnTuVBaAJTPbcYZtRl:localhost:88007'Q!bnTuVBaAJTPbcYZtRl:localhost:88006'Q!bnTuVBaAJTPbcYZtRl:localhost:88005'Q!bnTuVBaAJTPbcYZtRl:localhost:88004'Q!bnTuVBaAJTPbcYZtRl:localhost:88003'Q!bnTuVBaAJTPbcYZtRl:localhost:88002'Q!bnTuVBaAJTPbcYZtRl:localhost:88001'Q!bnTuVBaAJTPbcYZtRl:localhost:88000'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800N'Q!biBIcqnGelHvLnpkOu:localhost:8800M'Q!biBIcqnGelHvLnpkOu:localhost:8800L'Q!biBIcqnGelHvLnpkOu:localhost:8800K'Q!biBIcqnGelHvLnpkOu:localhost:8800J'Q!biBIcqnGelHvLnpkOu:localhost:8800I'Q!bQDOrbAknnQZfUbhgS:localhost:8800 'Q!bOSxzttDtclnrWnLov:localhost:8800\  W `  / o#,TQ!edGQ' e!JusxqeECtidaPlWqhp:localhost:8800m.room.create$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk8FQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0 EQ']e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV08DQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsqCQ?e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo8BQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0 AQ']e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0p@Q? e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibility$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIh?Q/ e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rules$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4j>Q3 e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c =Q']e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsd<Q' e!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M48;Q']ee!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs :Q']e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsq9Q?e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo88Q']ee!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30 7Q']e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30s6Q))e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Egp5Q? e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibility$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kh4Q/ e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rules$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQm3Q9 e!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_alias$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoj2Q3 e~!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE 1Q']e}!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkd0Q' e|!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.create$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEq/Q?e{!AjjrNwXmPTCruHxaJq:localhost:8800m.room.third_party_invite3$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI8.Q']eez!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI -Q']ey!AjjrNwXmPTCruHxaJq:localhost:8800m.room.member@anon-20191002_181700-144:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIs,Q))ex!AjjrNwXmPTCruHxaJq:localhost:8800m.room.aliaseslocalhost:8800$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMp+Q? ew!AjjrNwXmPTCruHxaJq:localhost:8800m.room.history_visibility$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U  ]yeQ_=$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 170, "stream_ordering": 634}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo"], "prev_events": ["$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI"], "type": "m.room.member", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-144:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-144", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-144:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040831770, "hashes": {"sha256": "qiMtEED/aK6dCt8mrrycUwSDrI/uD/JAXDVyXGSbEqs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LoisPpSNPBH8tLYHXJKYrVqRkHimREtcGVEl6encThAovueFV7v4t/wc889zC1goWXktWC7WFSDcT+6kfMMXAQ"}}, "unsigned": {"age_ts": 1570040831770, "replaces_state": "$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI"}}@xeQ_$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 633}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM"], "type": "m.room.member", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-144", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-144:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040831127, "hashes": {"sha256": "BV3e3JiXROAC+BpixXhsT1gyCKxZJVMThgXtKQ7j3wk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4S1rTdkdSrYp/BpEr8NtqMtnvZF3+HXKKfR67+357UhAZOC8UduDgoLx0S6hMUZbjPFOKuABoWcLcB6qLIFODA"}}, "unsigned": {"age_ts": 1570040831127, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-25:localhost:8800"}, "sender": "@anon-20191002_181700-143:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-143:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-143:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-143", "avatar_url": null}, "sender": "@anon-20191002_181700-143:localhost:8800"}]}}weQ_M$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 171, "stream_ordering": 632}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo"], "prev_events": ["$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U"], "type": "m.room.aliases", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-143:localhost:8800", "content": {"aliases": ["#test-20191002_181700-25:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040830001, "hashes": {"sha256": "uAsovKaszLdmJ6g1GFPS5Mffo+VhIL+EpSdp5j91gw8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Il+LMh8Z2KMQ7a2CQNWH/TgxhV2V4W1C5LJg3RZQsTs3h6yAxHVd6lAPtJk4pvcum2Merly9i0LZ5JFIegJ7DA"}}, "unsigned": {"age_ts": 1570040830001}} -RM H C > 9 4/*|%w rmhc T'Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDET&Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAT%Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MT$Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILET#Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwT"Qe!quaZwrGnzbNWhwAOYB:localhost:8800$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYT!Qe!quaZwrGnzbNWhwAOYB:localhost:8800$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioT Qe!quaZwrGnzbNWhwAOYB:localhost:8800$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYTQe!quaZwrGnzbNWhwAOYB:localhost:8800$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fATQe!quaZwrGnzbNWhwAOYB:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4TQe!quaZwrGnzbNWhwAOYB:localhost:8800$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4TQe!JusxqeECtidaPlWqhp:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRITQe!JusxqeECtidaPlWqhp:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwTQe!JusxqeECtidaPlWqhp:localhost:8800$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4TQe!JusxqeECtidaPlWqhp:localhost:8800$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48TQe!JusxqeECtidaPlWqhp:localhost:8800$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsTQe!JusxqeECtidaPlWqhp:localhost:8800$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BATQe!JusxqeECtidaPlWqhp:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4TQe!JusxqeECtidaPlWqhp:localhost:8800$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkTQe!aWvVRVaDflYyyGTOdD:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0TQe!aWvVRVaDflYyyGTOdD:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0TQe!aWvVRVaDflYyyGTOdD:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8TQe!aWvVRVaDflYyyGTOdD:localhost:8800$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoTQe!aWvVRVaDflYyyGTOdD:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokTQe!aWvVRVaDflYyyGTOdD:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0TQe!aWvVRVaDflYyyGTOdD:localhost:8800$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIT Qe!aWvVRVaDflYyyGTOdD:localhost:8800$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4T Qe!aWvVRVaDflYyyGTOdD:localhost:8800$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cT Qe!aWvVRVaDflYyyGTOdD:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsT Qe!aWvVRVaDflYyyGTOdD:localhost:8800$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4T Qe!GiSxJsKZhQVHBkrVPn:localhost:8800$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvoTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nITQe!GiSxJsKZhQVHBkrVPn:localhost:8800$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30TQe!GiSxJsKZhQVHBkrVPn:localhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQTQe!GiSxJsKZhQVHBkrVPn:localhost:8800$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoTQe~!GiSxJsKZhQVHBkrVPn:localhost:8800$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyETQe}!GiSxJsKZhQVHBkrVPn:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkT~Qe|!GiSxJsKZhQVHBkrVPn:localhost:8800$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWET}Qe{!AjjrNwXmPTCruHxaJq:localhost:8800$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIT|Qez!AjjrNwXmPTCruHxaJq:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMT{Qey!AjjrNwXmPTCruHxaJq:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI Mj8Vp>  v D  | J  Q  W % \ ]1 +c$i7*o= uC{IO1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmct1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0H1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kD1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE h0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkq1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagK1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk\1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM D1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 91e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc"1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs/1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY ]1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oq1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA $1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cl1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico E1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o =1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM 1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU #1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM|1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ\1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ[1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o )0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo\1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIe1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts}1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__co1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIg1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEV1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek71e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA 4 4u|eQ_y$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 637}{"auth_events": ["$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE"], "prev_events": ["$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE"], "type": "m.room.member", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-146", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-146:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040836158, "hashes": {"sha256": "vaSDzlnHNfcajlCEnIbni581vqyPERrpdUisVNxPXrQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KjJjhwCEcLU7abC2YhE9MbWUHneGvwGdWRyq+A9K7nRHGExFx/JgcBHRDjicguSFzEEV/wS7OKPS7LIW583wCA"}}, "unsigned": {"age_ts": 1570040836158}}h{eQ__$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 636}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-146:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040834669, "hashes": {"sha256": "8mEMl+C4dyloMkLfJYIetnQqmBaJ+KSlCyZ52n5GRT0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yLQby7x6oFWzj6h3IrhX5xvzrL8QaUFaIkyKt6iXwStcoI9P/b3uFfGJdhKQd/B0QwyxwsIPgid7N4kOgt15DA"}}, "unsigned": {"age_ts": 1570040834669}}czeQ_U$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI!AjjrNwXmPTCruHxaJq:localhost:8800{"token_id": 170, "stream_ordering": 635}{"auth_events": ["$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8", "$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A", "$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM"], "prev_events": ["$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM"], "type": "m.room.third_party_invite", "room_id": "!AjjrNwXmPTCruHxaJq:localhost:8800", "sender": "@anon-20191002_181700-144:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"public_key": "Sq3IS691msKOCPbzR73uOTHr7gSMb0UkA86rZdMClh8", "key_validity_url": "https://localhost.localdomain:41229/_matrix/identity/v2/pubkey/isvalid"}, {"public_key": "u6J8ItLWcMNCuYzFutG7NBDDiH3UZ1Ug8zHsC5zaYsI", "key_validity_url": "https://localhost.localdomain:41229/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:41229/_matrix/identity/v2/pubkey/isvalid", "public_key": "Sq3IS691msKOCPbzR73uOTHr7gSMb0UkA86rZdMClh8"}, "depth": 10, "prev_state": [], "state_key": "3", "origin": "localhost:8800", "origin_server_ts": 1570040832938, "hashes": {"sha256": "l+9U+8B6OtRxtJ7xa/DaQm7d201GH5Qk1NG6e1O/EXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YnOwFfaMaerdtQf/oH3OIvctFd4kNSVsh3hH4cpoG2IThHekocDpNppG+BiIF35494ev/Bej1+uhjBkn9oU3Cw"}}, "unsigned": {"age_ts": 1570040832938}} Ek9Qq? w E  } K  Q Y ' _ -e3k9q? wE}K]+k9 1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegoP1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYW1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEz1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U Y1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE I1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo}1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek51e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT41e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgC1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQQ1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0t1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo `1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw K1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U41e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 A1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw;1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 M1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV011e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU+0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wQ1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 '1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0@0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 N1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM[1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uv1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A[1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAm1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDkl0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRog1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 11e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ Mj8Vp>  v D  | J  Q  W % \ ]1 +c$i7*o= uC{IO1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcn1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0B1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k>1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE f0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkq1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagK1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk\1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM D1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 91e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc"1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs/1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY ]1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oq1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA $1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cl1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico E1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o =1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM 1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU #1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM|1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ\1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ[1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o )0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo\1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIe1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts}1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__co1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIg1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEV1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek71e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA -RM H C > 9 4/*|%w rmhc TzQez!OqPpVlCwmKdAUlwrXI:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILETyQey!OqPpVlCwmKdAUlwrXI:localhost:8800$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwTxQex!quaZwrGnzbNWhwAOYB:localhost:8800$a8pTE_6G9aGtNSW3C2nfpR5LTln7R7aa_15BOphsdPQTwQew!quaZwrGnzbNWhwAOYB:localhost:8800$OzrFWbF1BEYcT3aNcFRgRp0SXgwFdQoALxdzUQgTftUTvQev!quaZwrGnzbNWhwAOYB:localhost:8800$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYTuQeu!quaZwrGnzbNWhwAOYB:localhost:8800$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioTtQet!quaZwrGnzbNWhwAOYB:localhost:8800$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYTsQes!quaZwrGnzbNWhwAOYB:localhost:8800$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fATrQer!quaZwrGnzbNWhwAOYB:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4TqQeq!quaZwrGnzbNWhwAOYB:localhost:8800$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4TpQep!JusxqeECtidaPlWqhp:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIToQeo!JusxqeECtidaPlWqhp:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwTnQen!JusxqeECtidaPlWqhp:localhost:8800$0sFOiBFAgoj-vcKac45A6hPXKYvf03jJ6U-_hxApZNcTmQem!JusxqeECtidaPlWqhp:localhost:8800$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4TlQel!JusxqeECtidaPlWqhp:localhost:8800$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48TkQek!JusxqeECtidaPlWqhp:localhost:8800$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsTjQej!JusxqeECtidaPlWqhp:localhost:8800$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BATiQei!JusxqeECtidaPlWqhp:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4ThQeh!JusxqeECtidaPlWqhp:localhost:8800$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkTgQeg!aWvVRVaDflYyyGTOdD:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0TfQef!aWvVRVaDflYyyGTOdD:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0TeQee!aWvVRVaDflYyyGTOdD:localhost:8800$4HnS4R-03r-eGZ0oqE12X466wChAuA4-BygiL9ZOH_ITdQed!aWvVRVaDflYyyGTOdD:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8TcQec!aWvVRVaDflYyyGTOdD:localhost:8800$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoTbQeb!aWvVRVaDflYyyGTOdD:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokTaQea!aWvVRVaDflYyyGTOdD:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0T`Qe`!aWvVRVaDflYyyGTOdD:localhost:8800$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIT_Qe_!aWvVRVaDflYyyGTOdD:localhost:8800$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4T^Qe^!aWvVRVaDflYyyGTOdD:localhost:8800$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cT]Qe]!aWvVRVaDflYyyGTOdD:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsT\Qe\!aWvVRVaDflYyyGTOdD:localhost:8800$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4T[Qe[!GiSxJsKZhQVHBkrVPn:localhost:8800$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgTZQeZ!GiSxJsKZhQVHBkrVPn:localhost:8800$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbsTYQeY!GiSxJsKZhQVHBkrVPn:localhost:8800$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvoTXQeX!GiSxJsKZhQVHBkrVPn:localhost:8800$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nITWQeW!GiSxJsKZhQVHBkrVPn:localhost:8800$yRMhVLnxeFdjrJfX5LJoNXmsoJ9RaoL8DBiSqs6ExmkTVQeV!GiSxJsKZhQVHBkrVPn:localhost:8800$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30TUQeU!GiSxJsKZhQVHBkrVPn:localhost:8800$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1EgTTQeT!GiSxJsKZhQVHBkrVPn:localhost:8800$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0kTSQeS!GiSxJsKZhQVHBkrVPn:localhost:8800$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQTRQeR!GiSxJsKZhQVHBkrVPn:localhost:8800$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevoTQQeQ!GiSxJsKZhQVHBkrVPn:localhost:8800$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyETPQeP!GiSxJsKZhQVHBkrVPn:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkTOQeO!GiSxJsKZhQVHBkrVPn:localhost:8800$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWETNQeN!AjjrNwXmPTCruHxaJq:localhost:8800$zx789KIhAnVMgxg_3YnlXjechhEygoKwTRi6B-h53pM #Y+Y  ; i  +?Rdv#5GYu#[Q]#test-20191002_181700-25:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-143:localhost:8800u"[Q]#test-20191002_181700-24:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-140:localhost:8800u![Q]#test-20191002_181700-23:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800@anon-20191002_181700-138:localhost:8800u [Q]#test-20191002_181700-22:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-136:localhost:8800u[Q]#test-20191002_181700-21:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-131:localhost:8800u[Q]#test-20191002_181700-20:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-129:localhost:8800u[Q]#test-20191002_181700-19:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-127:localhost:8800u[Q]#test-20191002_181700-18:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-125:localhost:8800u[Q]#test-20191002_181700-17:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800@anon-20191002_181700-120:localhost:8800u[Q]#test-20191002_181700-16:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800@anon-20191002_181700-118:localhost:8800u[Q]#test-20191002_181700-15:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800@anon-20191002_181700-116:localhost:8800u[Q]#test-20191002_181700-14:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-13:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-12:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-11:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800@anon-20191002_181700-112:localhost:8800u[Q]#test-20191002_181700-10:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800@anon-20191002_181700-112:localhost:8800tYQ]#test-20191002_181700-9:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800@anon-20191002_181700-112:localhost:8800tYQ]#test-20191002_181700-8:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800@anon-20191002_181700-112:localhost:8800tYQ]#test-20191002_181700-7:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800@anon-20191002_181700-109:localhost:8800tYQ]#test-20191002_181700-6:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800@anon-20191002_181700-109:localhost:8800sYQ[#test-20191002_181700-5:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-84:localhost:8800sYQ[#test-20191002_181700-4:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-82:localhost:8800g AQ[#__ANON__-9:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:8800s YQ[#test-20191002_181700-3:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:8800g AQ[#__ANON__-8:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:8800g AQ[#__ANON__-5:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800@anon-20191002_181700-79:localhost:8800` 3Q[#☕:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:8800sYQ[#test-20191002_181700-2:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800@anon-20191002_181700-75:localhost:8800sYQ[#test-20191002_181700-1:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-70:localhost:8800gAQ[#__ANON__-4:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800@anon-20191002_181700-68:localhost:8800gAQ[#__ANON__-3:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800@anon-20191002_181700-67:localhost:8800gAQ[#__ANON__-2:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800@anon-20191002_181700-23:localhost:8800gAQ[#__ANON__-1:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800@anon-20191002_181700-21:localhost:8800gAQ[#__ANON__-0:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800@anon-20191002_181700-20:localhost:8800jGQ[#30room-create:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800@anon-20191002_181700-16:localhost:8800 #Z/ W z   ' 9K]{"@Gq0ZiFCQ]#__ANON__-21:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-491:localhost:8800iECQ]#__ANON__-20:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800@anon-20191002_181700-480:localhost:8800iDCQ]#__ANON__-19:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-476:localhost:8800iCCQ]#__ANON__-18:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800@anon-20191002_181700-465:localhost:8800iBCQ]#__ANON__-17:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-461:localhost:8800iACQ]#__ANON__-16:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800@anon-20191002_181700-450:localhost:8800i@CQ]#__ANON__-15:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-446:localhost:8800x?aQ]#publicroomalias_with_topic:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800@anon-20191002_181700-311:localhost:8800}>kQ]#publicroomalias_with_name_topic:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800@anon-20191002_181700-311:localhost:8800u=[Q]#publicroomalias_no_name:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800@anon-20191002_181700-311:localhost:8800i<CQ]#__ANON__-14:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:8800i;CQ]#__ANON__-13:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:8800u:[Q]#test-20191002_181700-42:localhost:8800!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-292:localhost:8800u9[Q]#test-20191002_181700-41:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-290:localhost:8800u8[Q]#test-20191002_181700-40:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-288:localhost:8800i7CQ]#__ANON__-12:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800@anon-20191002_181700-254:localhost:8800u6[Q]#test-20191002_181700-39:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800@anon-20191002_181700-237:localhost:8800u5[Q]#test-20191002_181700-38:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800@anon-20191002_181700-236:localhost:8800u4[Q]#test-20191002_181700-37:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800@anon-20191002_181700-231:localhost:8800u3[Q]#test-20191002_181700-36:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800@anon-20191002_181700-228:localhost:8800u2[Q]#test-20191002_181700-35:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800@anon-20191002_181700-201:localhost:8800u1[Q]#test-20191002_181700-34:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800@anon-20191002_181700-200:localhost:8800u0[Q]#test-20191002_181700-33:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800@anon-20191002_181700-197:localhost:8800u/[Q]#test-20191002_181700-32:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800@anon-20191002_181700-195:localhost:8800u.[Q]#test-20191002_181700-31:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-178:localhost:8800u-[Q]#test-20191002_181700-30:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-176:localhost:8800u,[Q]#test-20191002_181700-29:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800@anon-20191002_181700-176:localhost:8800k+GQ]#worldreadable:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800@anon-20191002_181700-170:localhost:8800n*MQ]#nonworldreadable:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800@anon-20191002_181700-170:localhost:8800j)EQ]#listingtest0:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800@anon-20191002_181700-169:localhost:8800j(EQ]#listingtest2:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800@anon-20191002_181700-169:localhost:8800j'EQ]#listingtest1:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800@anon-20191002_181700-169:localhost:8800u&[Q]#test-20191002_181700-28:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800@anon-20191002_181700-165:localhost:8800u%[Q]#test-20191002_181700-27:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800@anon-20191002_181700-162:localhost:8800u$[Q]#test-20191002_181700-26:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800@anon-20191002_181700-146:localhost:8800 ?m G !g?]c!E@anon-20191002_181700-158:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswoXSKFBBFHAV127.0.0.1Perl + Net::Async::HTTP/0.44mǃ]c!E@anon-20191002_181700-156:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAoKJWWDXWUBD127.0.0.1Perl + Net::Async::HTTP/0.44mÃ]c!E@anon-20191002_181700-154:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0AoZNFFHUUXFG127.0.0.1Perl + Net::Async::HTTP/0.44mqh]c!E@anon-20191002_181700-153:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48CwoRAWLINNCFA127.0.0.1Perl + Net::Async::HTTP/0.44m`y~]c!E@anon-20191002_181700-152:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgoGXUCZNSPYG127.0.0.1Perl + Net::Async::HTTP/0.44mKN}]c!E@anon-20191002_181700-151:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwoOZBCDWREHR127.0.0.1Perl + Net::Async::HTTP/0.44m=|]c!E@anon-20191002_181700-150:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHIsVjVsdV9DLV4zXmw2OmoKMDAyZnNpZ25hdHVyZSDFrf_vrUbxuitedr5U7gn_0rWtnyY9Pubch5aWcNIkpwoRWWSTPGDUM127.0.0.1Perl + Net::Async::HTTP/0.44m/{]c!E@anon-20191002_181700-149:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20AoAGJMWNVTGM127.0.0.1Perl + Net::Async::HTTP/0.44mfz]c!E@anon-20191002_181700-146:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGo5anRqSDtuM1hZRmM9OFAKMDAyZnNpZ25hdHVyZSDt9DRraEa6tHA3B08EDTu-cSW0oarjf3l57okDyLdmUwoFNNRVHNVLI127.0.0.1Perl + Net::Async::HTTP/0.44m^y]c!E@anon-20191002_181700-144:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGkzOFVzNWh-Jm8zfnVzNWgKMDAyZnNpZ25hdHVyZSBYObdM7znI6bSXcPf4lSC6e6fciAY33AsonOSFteqiNQoKPCPVEDJYH127.0.0.1Perl + Net::Async::HTTP/0.44m wRa4T'sG"j= Q % q D OoBzM l? _ 2  ~]0|K U (  csG",Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XNfwczePlyYFWLCaui:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800  ,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800+Q !XMNRkfscQXRjgYrOSd:localhost:8800,Q!XIqmzIFbkHGQPIpywk:localhost:8800 \\,Q!XIqmzIFbkHGQPIpywk:localhost:8800 [[,Q!XIqmzIFbkHGQPIpywk:localhost:8800ZZ,Q!XIqmzIFbkHGQPIpywk:localhost:8800YY,Q!XIqmzIFbkHGQPIpywk:localhost:8800XX,Q!XIqmzIFbkHGQPIpywk:localhost:8800WW,Q!XIqmzIFbkHGQPIpywk:localhost:8800VV,Q!XIqmzIFbkHGQPIpywk:localhost:8800UU,Q!XIqmzIFbkHGQPIpywk:localhost:8800TT,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800+Q !XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q q,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p p,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o o,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n n,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m m,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l l,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k k,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j j,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i i+Q !XnUZiYJDWVNGfsBnGz:localhost:8800 h h,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y Y,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X X+Q !YGUjVdVdpcQoGkRnWB:localhost:8800 W W ++Q !YQATbgbLImCDamiDHC:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] ],Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ \,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ [,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z Z,Q!XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 +Q !XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!XNfwczePlyYFWLCaui:localhost:8800  ,Q!XiwGxQKwjgutEClKUy:localhost:8829%%,Q!XiwGxQKwjgutEClKUy:localhost:8829$$,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829!!,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829+Q !XiwGxQKwjgutEClKUy:localhost:8829,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800+Q !XgobMgBjNcDRJnRXLD:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800 wRa4T'sG"j= Q % q D OoBzM l? _ 2  ~]0|K U (  csG",Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XUbDuPDiMTXJZDyAPc:localhost:8800 +Q !XNfwczePlyYFWLCaui:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800  ,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800,Q!XMNRkfscQXRjgYrOSd:localhost:8800+Q !XMNRkfscQXRjgYrOSd:localhost:8800,Q!XIqmzIFbkHGQPIpywk:localhost:8800 \\,Q!XIqmzIFbkHGQPIpywk:localhost:8800 [[,Q!XIqmzIFbkHGQPIpywk:localhost:8800ZZ,Q!XIqmzIFbkHGQPIpywk:localhost:8800YY,Q!XIqmzIFbkHGQPIpywk:localhost:8800XX,Q!XIqmzIFbkHGQPIpywk:localhost:8800WW,Q!XIqmzIFbkHGQPIpywk:localhost:8800VV,Q!XIqmzIFbkHGQPIpywk:localhost:8800UU,Q!XIqmzIFbkHGQPIpywk:localhost:8800TT,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800+Q !XcaKxZsPvbZhAGKKdx:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XUbDuPDiMTXJZDyAPc:localhost:8800 ,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q q,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p p,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o o,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n n,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m m,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l l,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k k,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j j,Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i i+Q !XnUZiYJDWVNGfsBnGz:localhost:8800 h h,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!XNfwczePlyYFWLCaui:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y Y,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X X+Q !YGUjVdVdpcQoGkRnWB:localhost:8800 W W ++Q !YQATbgbLImCDamiDHC:localhost:8800,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] ],Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ \,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ [,Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z Z,Q!XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!YQATbgbLImCDamiDHC:localhost:8800,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ,Q!XRAZJeoZBhGeHKKjaG:localhost:8800 +Q !XRAZJeoZBhGeHKKjaG:localhost:8800  ,Q!XNfwczePlyYFWLCaui:localhost:8800  ,Q!XiwGxQKwjgutEClKUy:localhost:8829%%,Q!XiwGxQKwjgutEClKUy:localhost:8829$$,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829!!,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829,Q!XiwGxQKwjgutEClKUy:localhost:8829+Q !XiwGxQKwjgutEClKUy:localhost:8829,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800 ,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800,Q!XgobMgBjNcDRJnRXLD:localhost:8800+Q !XgobMgBjNcDRJnRXLD:localhost:8800,Q!XcaKxZsPvbZhAGKKdx:localhost:8800  eQ_$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 641}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ"], "type": "m.room.history_visibility", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040838569, "hashes": {"sha256": "5k7FQ+GMGZzAf5e0OwqRF3HfY7XvmIvMKW6bLf1xWN0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T9aahSDVLEWvEix8T3VNRVjHYBuJw4kmZH+Y6FPQ2yNLot8exbsORyto8w/j7HGEwidaopaVyaHGfVVm8p8kBw"}}, "unsigned": {"age_ts": 1570040838569}}seQ_u$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 640}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo"], "type": "m.room.join_rules", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040838010, "hashes": {"sha256": "Az1samYyH1dlZXKv+ocqdVjiQ8J7Te8uKiIQgQSz4Yk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9lofXn+SunPiODMPrRwzkD5dLKSVz6J1z7Eq4hir5MlS0cs8c6DZDZo6gdY6fiWD52mj4WT+3YYX3mXaQmklAg"}}, "unsigned": {"age_ts": 1570040838010}}~eQ_9$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 639}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE"], "type": "m.room.canonical_alias", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"alias": "#test-20191002_181700-26:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040837403, "hashes": {"sha256": "C0FQj9BTJJtL7mS8gQWV3iOeK0l55V5ftkmD5dP3sv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YG4LWIcC7aIqWw1IklzaCxHV6XAvr9JSwNLe0WjU4Mt58PvhOQtlHzW0STOGsxMjQVivQh3AARwCx7EmvJffDQ"}}, "unsigned": {"age_ts": 1570040837403}}j}eQ_c$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 638}{"auth_events": ["$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "type": "m.room.power_levels", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"users": {"@anon-20191002_181700-146:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040836762, "hashes": {"sha256": "NKWVJRk/1gTcte1Q7HSr+ve0CxsYgtlzki/lMNMzQzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QWb/oouiyKRROgvKu4ac7qxYgz40pM1pYWTpE1DOYKdlYYB3bGP0ZnfOVBBjWAiGiDtv8mgL5JM5pQHCijXOAA"}}, "unsigned": {"age_ts": 1570040836762}} a} { y w u sqomkigeca~eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~ eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~~eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~}eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800~|eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE!GiSxJsKZhQVHBkrVPn:localhost:8800~{eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:8800~zeeQ$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk!GiSxJsKZhQVHBkrVPn:localhost:8800 T=P  o p 6 S  4 R  7 n5Q m4 QPmm5U T  o8e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcsha256n8e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54sha256 8e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIsha256 8e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8osha256 )8e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAsha256 8e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKAsha256 $8e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUsha256 #8e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8sha256 8e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMsha256 D8e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYsha256 ]8e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKciosha256 8e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98sha2568e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEsha256 98e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIsha256 8e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQsha256 j8e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4csha2567e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODUsha2567e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjksha256q8e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagsha256K8e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYsha2568e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWksha256\8e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMsha2568e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0ssha2568e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJcsha256"8e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGssha256/8e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0sha2568e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04Msha2568e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Isha2568e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAsha2568e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYsha2568e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMsha2568e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQsha2568e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPwsha2568e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQsha2568e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9osha256q8e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0csha256l8e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kAsha2568e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcsha2568e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGAsha2568e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwksha2568e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlgsha256 8e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAsha2568e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMsha256 8e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0Msha256 8e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQsha256\8e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4sha2568e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIsha2568e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQsha256[8e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0sha256B8e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48ksha256>8e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4sha2568e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwsha2568e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYsha256 8e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUsha256 8e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMsha256|8e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0sha256 8e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5osha256 =8e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVosha2568e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUsha256 *8e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70sha256U8e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPEsha256 K  lheQ__$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 659}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-152:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040859632, "hashes": {"sha256": "fvNnFFMGGiFdf1muBPL/nZry9DCj/PT+SnTlT6QfL3I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sIqJsuPJFpfAT+aghQRGwPNj09qMvfVyhIf8bqFDNqHeEpHCO9U4TSJKMZL/FrgEj/nEK9U3QIrqbjEmMVkTBA"}}, "unsigned": {"age_ts": 1570040859632}}eQ_?$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 175, "stream_ordering": 658}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4"], "prev_events": ["$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-151:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-151", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-151:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040856221, "hashes": {"sha256": "1x1mrGam5arlj8JQk+7had+MxNE+7yUcRXeO6S9hiSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KHGi4iXUKtloCKcZSmKH/t9FzJuJQ8wI3XpPaq4A9xI7d+4Vo373thct7m+XjqXqrdh9cWYTzoSvcDhcO15YAQ"}}, "unsigned": {"age_ts": 1570040856221, "replaces_state": "$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0"}}teQ I$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 657}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4", "$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8", "$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo"], "prev_events": ["$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"signatures": {"localhost.localdomain:46319": {"ed25519:0": "oSZLF+KC1Ipti4MX/8cJ09bHIqZowl+3uOoAAPejKNwBf3//VgtzGw8nyLRVSOKhvk9ZWF4wLl5bKNze+p0RAw"}}, "token": "5", "mxid": "@anon-20191002_181700-151:localhost:8800"}, "display_name": "Bob"}}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-151:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040855231, "hashes": {"sha256": "eCRVcNlbiNynmcKazOTcBuEkGl1z2CR1PnJi+0BvsX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OI3uUyRrmsY2bWUuzQMoXN/qJRQhUtgEWRiB01/YVD7LsYGeJxGruiOwtny/1wTne1gyNiBYMEd8LYWZbz86AA"}}, "unsigned": {"age_ts": 1570040855231, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-149:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "leave"}, "sender": "@anon-20191002_181700-149:localhost:8800"}]}}  ]2eQ/!$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 644}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-148", "membership": "join"}, "depth": 9, "hashes": {"sha256": "9gTmU4KpFeY4WqyGp1HI2MmrcsGg47WerHLaDlPY7K8"}, "origin": "localhost:8829", "origin_server_ts": 1570040840934, "prev_events": ["$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30"], "prev_state": [], "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-148:localhost:8829", "state_key": "@anon-20191002_181700-148:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DyJXhQFxHWEzouv/5bS+A575uvh4pIFfkE41fJEZQVYrqYMkXftOS+vK4vqx07UiVcE1/eSiUsRp5Ykvhvf7Bg"}, "localhost:8829": {"ed25519:a_UxIG": "MnEcsnuFuZVWf4EPa8AbT0bX6zv7gqpDmi0jQpmuLzzenU+OeVMrJzaxNtyi9yPe3fUrP/TLn7frRCZ3IcnTAQ"}}, "unsigned": {"age": 94, "replaces_state": "$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30"}}@eQ_$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 643}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg"], "type": "m.room.member", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-148", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-148:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570040840192, "hashes": {"sha256": "dvXNFOTHOdWUZ84MOyqyzsv8GzMsHfq2/6osy1V1nyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7uyxo6ulNPec5/8dy4EHJjF3YEBvEy4fqdttMA8jvEimwlbsWIOdRx65qyzTd964auJxSOCYZ4nrz1HMEMr6BQ"}, "localhost:8829": {"ed25519:a_UxIG": "nf+qBX7AZjNJ4+l0EkT7zu2op95Ldu1Io16aDMgmHgj2nIemewZYcTBwLywaIBxiDNcVeUpES5Y30haS1x1JCA"}}, "unsigned": {"age_ts": 1570040840192, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-26:localhost:8800"}, "sender": "@anon-20191002_181700-146:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-146:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-146:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-146", "avatar_url": null}, "sender": "@anon-20191002_181700-146:localhost:8800"}]}}eQ_M$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 642}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k"], "type": "m.room.aliases", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"aliases": ["#test-20191002_181700-26:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040839527, "hashes": {"sha256": "RAmqbTPAKh7aZ3NTW+pGMqkEYSdizBm4GC3qIxo4PP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VAHD/2G14ZJUGBcDaIajMUE+6RCEl1+hDxXadS+uAIHiJX0UiouWxUQuEoAzcRKkj6mldhWVn78zZ1VDCjcQAA"}}, "unsigned": {"age_ts": 1570040839527}} M MHeQa$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800{"outlier": false, "stream_ordering": 646}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk", "$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo"], "content": {"membership": "invite", "third_party_invite": {"display_name": "Bob", "signed": {"mxid": "@anon-20191002_181700-147:localhost:8829", "signatures": {"localhost.localdomain:35601": {"ed25519:0": "EIUHuMFNpiHMV0Jl9xXFlX4qqR64oZavJ0KYlVOtB+gygUSpLgllLoyKvBabsfmJH9Dzp6U7jrMIWgE+KKHoDg"}}, "token": "4"}}}, "depth": 11, "hashes": {"sha256": "Z0ZEVsNjHQEVdgOGlpBABKjwOxRKr05OlWrf4yO9//M"}, "origin": "localhost:8829", "origin_server_ts": 1570040842281, "prev_events": ["$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo"], "prev_state": [], "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "@anon-20191002_181700-147:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "cgss7Ybb0jQcuhSW0znNI8Wwnwe6E8NW4sUrSJpRgSydXwHcTbQfMNtFc4+vBXpW7FmwsvSpQe2CqlHUY4jfCw"}}, "unsigned": {"age_ts": 1570040842281, "invite_room_state": [{"content": {"alias": "#test-20191002_181700-26:localhost:8800"}, "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "", "type": "m.room.canonical_alias"}, {"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-146", "membership": "join"}, "sender": "@anon-20191002_181700-146:localhost:8800", "state_key": "@anon-20191002_181700-146:localhost:8800", "type": "m.room.member"}]}}ceQ_U$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800{"token_id": 172, "stream_ordering": 645}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk"], "prev_events": ["$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI"], "type": "m.room.third_party_invite", "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-146:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"public_key": "4AE/+R4ppb0aU4h80h+ptaVOg2jg3KDU8zFin6FR24U", "key_validity_url": "https://localhost.localdomain:35601/_matrix/identity/v2/pubkey/isvalid"}, {"key_validity_url": "https://localhost.localdomain:35601/_matrix/identity/v2/pubkey/isvalid", "public_key": "JQhY6nQGe86+KYddThK8td5ZDllD5NUCrgaejATUDtU"}], "key_validity_url": "https://localhost.localdomain:35601/_matrix/identity/v2/pubkey/isvalid", "public_key": "4AE/+R4ppb0aU4h80h+ptaVOg2jg3KDU8zFin6FR24U"}, "depth": 10, "prev_state": [], "state_key": "4", "origin": "localhost:8800", "origin_server_ts": 1570040841953, "hashes": {"sha256": "CVYXTq4vg4eYuByb0JUUZTTVq94RYaGEdlK06KtC3OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fd05q1od+3IUls6EeYHnufVOpgCFY6yUSAe9/vTI2rapimOddlWzKW7M12jmEVE+L4NfT8XY5YTK0J763wsRDw"}}, "unsigned": {"age_ts": 1570040841953}} Np> v D  | J  P  V $ ] +c2j8p> vD|JPV$\*j81e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI 1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwM1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh3071e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMe1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Ac1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0,1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o L1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI E1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY M1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMx1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk|1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs;1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV41e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wF1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewI1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAM1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUki1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk21e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks 0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcr1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4z1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk |1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4c1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIW1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg <1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYX1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc<1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI@1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw /1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w41e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM 1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ481e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE\3$94:localhost:42455 .3$90:localhost:42455 '21e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU 31e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkD1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas=1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk9 q | 4   g r*( ?Z<c{Q' ey!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.create$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw zQ']ex!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-155:localhost:8800$a8pTE_6G9aGtNSW3C2nfpR5LTln7R7aa_15BOphsdPQ yQ']ew!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-155:localhost:8800$OzrFWbF1BEYcT3aNcFRgRp0SXgwFdQoALxdzUQgTftUpxQ?ev!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYowQ? eu!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibility$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iogvQ/ et!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rules$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYiuQ3 es!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA tQ']er!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4csQ' eq!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4 rQ']ep!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI qQ']eo!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw pQ']en!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$0sFOiBFAgoj-vcKac45A6hPXKYvf03jJ6U-_hxApZNcpoQ?em!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4onQ? el!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibility$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48gmQ/ ek!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rules$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsilQ3 ej!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA kQ']ei!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4cjQ' eh!JusxqeECtidaPlWqhp:localhost:8800m.room.create$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk iQ']eg!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0 hQ']ef!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0 gQ']ee!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800$4HnS4R-03r-eGZ0oqE12X466wChAuA4-BygiL9ZOH_I fQ']ed!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8peQ?ec!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo dQ']eb!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok cQ']ea!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0obQ? e`!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibility$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIgaQ/ e_!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rules$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4i`Q3 e^!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c _Q']e]!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsc^Q' e\!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4 ]Q']e[!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg  ~j eQ_c$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 650}{"auth_events": ["$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "type": "m.room.power_levels", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"users": {"@anon-20191002_181700-149:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040849688, "hashes": {"sha256": "DLuboBNY4XHBPIFzcJ8HvIYTkoKKMEzmuaiR+RewtRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "72oxm26rbJpgTqe6p+X2NM/rjkylj74YxtxBePgDi9nCQ4U0j7Xw1x3CAWZCxfs1pPuEvBQO1P7VT1cJbtQqDA"}}, "unsigned": {"age_ts": 1570040849688}}ueQ_y$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 649}{"auth_events": ["$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4"], "prev_events": ["$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-149", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-149:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040849099, "hashes": {"sha256": "l1lvIuPXzZQv6pO+LSalhh3nVDCcL+FgTVuQjvpaOQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZmckrCIB6rjJhm4049D2U8IaNw+F+FHp+9HBhbSYrG8kNkqxO5WnwT/shv+3X6zYOWjcW2crnA8uZIyMgJ0BAg"}}, "unsigned": {"age_ts": 1570040849099}}heQ__$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 648}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-149:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040848056, "hashes": {"sha256": "/wkYZKisXe7cXyvBuiGkEIeVqUk0GU2MOysOvhvwi00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HZLZWOPqxumbE4QJkeSKtJ7oBMNW3g4/PDjSqnWdwN5ZrS77tbYFH/2GyXOgLAVoQyGUokYQGxQ0H9hUs9a2DA"}}, "unsigned": {"age_ts": 1570040848056}}eQa?$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800{"outlier": false, "stream_ordering": 647}{"auth_events": ["$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE", "$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE", "$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-147", "membership": "join"}, "depth": 12, "hashes": {"sha256": "j+Gkkui3MEWFCFc4OCJpbaW4bxA51c336hZ2lNCkv0w"}, "origin": "localhost:8829", "origin_server_ts": 1570040843686, "prev_events": ["$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs"], "prev_state": [], "room_id": "!GiSxJsKZhQVHBkrVPn:localhost:8800", "sender": "@anon-20191002_181700-147:localhost:8829", "state_key": "@anon-20191002_181700-147:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "qFx756Mib67IEdrS7bqnLnvr6HYbHUjcrpglxaOiSENm7p/m4rFOpL+eXkVnRt2u683JgUg6JNpWBayhZF04CQ"}}, "unsigned": {"age_ts": 1570040843686, "replaces_state": "$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs"}} ~z v r n j fb^ZVRNJF]eeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800\eeQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800[eeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800ZeeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800YeeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800XeeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800WeeQ$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800VeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800UeeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800TeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800SeeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800ReeQ$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800QeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800PeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800OeeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800NeeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800MeeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800LeeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800KeeQ$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800JeeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800IeeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800HeeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800GeeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800FeeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800EeeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800DeeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800CeeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800BeeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800AeeQ$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800@eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800 b[$H Z Q   K Z  R    ` ) M uj3(mb+ eZ#h]&`UXM [$H4}==anon-20191002_181700-216anon-20191002_181700-2164|==anon-20191002_181700-215anon-20191002_181700-2154{==anon-20191002_181700-214anon-20191002_181700-2144z==anon-20191002_181700-213anon-20191002_181700-2134y==anon-20191002_181700-212anon-20191002_181700-2124x==anon-20191002_181700-211anon-20191002_181700-2114w==anon-20191002_181700-209anon-20191002_181700-2094v==anon-20191002_181700-210anon-20191002_181700-2104u==anon-20191002_181700-208anon-20191002_181700-208t34344s==anon-20191002_181700-207anon-20191002_181700-207r33334q==anon-20191002_181700-206anon-20191002_181700-206p32324o==anon-20191002_181700-205anon-20191002_181700-205n31314m==anon-20191002_181700-204anon-20191002_181700-204l30304k==anon-20191002_181700-203anon-20191002_181700-203j29294i==anon-20191002_181700-202anon-20191002_181700-202h28284g==anon-20191002_181700-201anon-20191002_181700-201f27274e==anon-20191002_181700-200anon-20191002_181700-200d26264c==anon-20191002_181700-199anon-20191002_181700-199b25254a==anon-20191002_181700-198anon-20191002_181700-198`24244_==anon-20191002_181700-197anon-20191002_181700-197^23234]==anon-20191002_181700-196anon-20191002_181700-1964\==anon-20191002_181700-195anon-20191002_181700-195[22224Z==anon-20191002_181700-194anon-20191002_181700-194Y21214X==anon-20191002_181700-193anon-20191002_181700-193W20204V==anon-20191002_181700-192anon-20191002_181700-192U19194T==anon-20191002_181700-191anon-20191002_181700-191S18184R==anon-20191002_181700-190anon-20191002_181700-190Q17174P==anon-20191002_181700-189anon-20191002_181700-189O16164N==anon-20191002_181700-188anon-20191002_181700-188M15154L==anon-20191002_181700-187anon-20191002_181700-187K14144J==anon-20191002_181700-186anon-20191002_181700-186I1313>H==!anon-20191002_181700-185anon-20191002_181700-185LemurLover&G=!anon-20191002_181700-184LemurLover4F==anon-20191002_181700-183anon-20191002_181700-1834E==anon-20191002_181700-182anon-20191002_181700-1824D==anon-20191002_181700-181anon-20191002_181700-1814C==anon-20191002_181700-179anon-20191002_181700-1794B==anon-20191002_181700-178anon-20191002_181700-1784A==anon-20191002_181700-177anon-20191002_181700-1774@==anon-20191002_181700-176anon-20191002_181700-1764?==anon-20191002_181700-175anon-20191002_181700-1754>==anon-20191002_181700-174anon-20191002_181700-1744===anon-20191002_181700-173anon-20191002_181700-173<1212;11114:==anon-20191002_181700-170anon-20191002_181700-17049==anon-20191002_181700-169anon-20191002_181700-16948==anon-20191002_181700-168anon-20191002_181700-1687101069945==anon-20191002_181700-167anon-20191002_181700-16748843==anon-20191002_181700-165anon-20191002_181700-165 06creeper41==anon-20191002_181700-164anon-20191002_181700-1642774/==anon-20191002_181700-163anon-20191002_181700-163.554-==anon-20191002_181700-162anon-20191002_181700-162,444+==anon-20191002_181700-161anon-20191002_181700-161*334)==anon-20191002_181700-160anon-20191002_181700-160(22'114&==anon-20191002_181700-159anon-20191002_181700-1594%==anon-20191002_181700-158anon-20191002_181700-1584$==anon-20191002_181700-157anon-20191002_181700-1574#==anon-20191002_181700-156anon-20191002_181700-1564"==anon-20191002_181700-155anon-20191002_181700-1554!==anon-20191002_181700-154anon-20191002_181700-1544 ==anon-20191002_181700-153anon-20191002_181700-1534==anon-20191002_181700-152anon-20191002_181700-1524==anon-20191002_181700-151anon-20191002_181700-1514==anon-20191002_181700-149anon-20191002_181700-1494==anon-20191002_181700-150anon-20191002_181700-150 QW&b1m< xG R ! Z @  y _ .  ~ d I  O Z)e4P5lQ R7nS"0]@anon-20191002_181700-195:localhost:88001@22:localhost:88000]@anon-20191002_181700-138:localhost:88000]@anon-20191002_181700-136:localhost:88000]@anon-20191002_181700-137:localhost:88000]@anon-20191002_181700-135:localhost:88000]@anon-20191002_181700-134:localhost:88000]@anon-20191002_181700-133:localhost:88000]@anon-20191002_181700-131:localhost:88000]@anon-20191002_181700-132:localhost:88000]@anon-20191002_181700-129:localhost:88000]@anon-20191002_181700-194:localhost:88001@21:localhost:88000]@anon-20191002_181700-193:localhost:88001@20:localhost:88000]@anon-20191002_181700-192:localhost:88001@19:localhost:88000]@anon-20191002_181700-191:localhost:88001@18:localhost:88000]@anon-20191002_181700-190:localhost:88001@17:localhost:88000]@anon-20191002_181700-189:localhost:88001@16:localhost:88000]@anon-20191002_181700-188:localhost:88001@15:localhost:88000]@anon-20191002_181700-187:localhost:88001@14:localhost:88000]@anon-20191002_181700-186:localhost:88001@13:localhost:88000]@anon-20191002_181700-185:localhost:88000]@anon-20191002_181700-184:localhost:88000]@anon-20191002_181700-183:localhost:88000]@anon-20191002_181700-182:localhost:88000]@anon-20191002_181700-181:localhost:88000]@anon-20191002_181700-179:localhost:88000]@anon-20191002_181700-178:localhost:88000]@anon-20191002_181700-177:localhost:88000]@anon-20191002_181700-176:localhost:88000]@anon-20191002_181700-175:localhost:88000]@anon-20191002_181700-174:localhost:88000]@anon-20191002_181700-173:localhost:88001@12:localhost:88001@11:localhost:88000]@anon-20191002_181700-170:localhost:88000]@anon-20191002_181700-169:localhost:88000]@anon-20191002_181700-168:localhost:88001@10:localhost:8800/@9:localhost:8800/@8:localhost:88000]@anon-20191002_181700-167:localhost:8800/@8:localhost:88000]@anon-20191002_181700-165:localhost:8800/@7:localhost:88000]@anon-20191002_181700-164:localhost:8800/@6:localhost:88000]@anon-20191002_181700-163:localhost:8800/@5:localhost:88000]@anon-20191002_181700-162:localhost:8800/@4:localhost:88000]@anon-20191002_181700-161:localhost:8800/@3:localhost:88000]@anon-20191002_181700-160:localhost:8800/@2:localhost:8800/@1:localhost:88000]@anon-20191002_181700-159:localhost:88000]@anon-20191002_181700-158:localhost:88000]@anon-20191002_181700-157:localhost:88000]@anon-20191002_181700-156:localhost:88000]@anon-20191002_181700-155:localhost:88000]@anon-20191002_181700-154:localhost:88000]@anon-20191002_181700-153:localhost:88000]@anon-20191002_181700-152:localhost:88000]@anon-20191002_181700-151:localhost:88000]@anon-20191002_181700-149:localhost:88000]@anon-20191002_181700-150:localhost:88000]@anon-20191002_181700-146:localhost:88000]@anon-20191002_181700-143:localhost:88000]@anon-20191002_181700-144:localhost:88000]@anon-20191002_181700-142:localhost:88000]@anon-20191002_181700-141:localhost:88000]@anon-20191002_181700-140:localhost:8800 g * T~=gg/]!c@anon-20191002_181700-160:localhost:8800RSEHRUSFUDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgog.]!c@anon-20191002_181700-159:localhost:8800AHWAAMEKYNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR3U3A3TUhYfnBhPV5YLH4KMDAyZnNpZ25hdHVyZSAvfXoK5cLowkEwFacOTLTOKnWnFL1vaxZ2eDRCM6QvbQog-]!c@anon-20191002_181700-158:localhost:8800XSKFBBFHAVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNBamtFVSYwUnJGMXQ4TFEKMDAyZnNpZ25hdHVyZSAH1WvAaNPdKvegs79Ux0k-0avHdQrDKHfYx-8WLXUsswog,]!c@anon-20191002_181700-157:localhost:8800FXSFHLELFTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEIjZDNkYWZqQ3YjJipPNHUKMDAyZnNpZ25hdHVyZSBflUd8wD7C3GL0vPhtx6UvSnD7Yx4lQbVrhQjPOkB8Bwog+]!c@anon-20191002_181700-156:localhost:8800KJWWDXWUBDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNZM0JYZS0xSm1MRFB5a0sKMDAyZnNpZ25hdHVyZSDtRqDxnBgxVF2aMwTHZLsJdNZSY4TrlvIanPEuMrLusAog*]!c@anon-20191002_181700-155:localhost:8800LVXDKVKVJYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlCYk5kMHZueFlwRS1SdS4KMDAyZnNpZ25hdHVyZSAQ9iRcidiF5PYiJqsN0NvRlFCfmgqacVu3ZWNUC6AdHgog)]!c@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFCPUdnTVJsYWhsIzVHY3IKMDAyZnNpZ25hdHVyZSAX_k-w-2txiRyHs8o3sVOuUA1ncFo4FKGhouO3ukWL0Aog(]!c@anon-20191002_181700-153:localhost:8800RAWLINNCFAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBPQE9DNk5kI15WWVMxaUYKMDAyZnNpZ25hdHVyZSC_STJdThD88a4krgxFn-60Wdmaoqjernynlp0NWF48Cwog']!c@anon-20191002_181700-152:localhost:8800GXUCZNSPYGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgog&]!c@anon-20191002_181700-151:localhost:8800OZBCDWREHRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2dmZnK1k9O2M1TTdxNl8KMDAyZnNpZ25hdHVyZSCDLFFuvNBvrvqDbMr3y-xI7eCyn46Ef9s-CcTZYWdHwwog%]!c@anon-20191002_181700-149:localhost:8800AGJMWNVTGMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElJeXVwLjFNbDZSS0hETEQKMDAyZnNpZ25hdHVyZSB_Zo2EOEb43v8BHgSAON7TCnUyN3kJ0Rjou1idW4u20Ao a} { y w u sqomkigeca~7eeQ$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~6eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~5eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~4eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~3eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800~2eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800~1eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~0eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~/eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~.eeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~-eeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~,eeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~+eeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~*eeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~)eeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~(eeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~'eeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~&eeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~%eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~$eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800~#eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~"eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~!eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~ eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800~eeQ$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800  W S Q o z 8 "'Oz6 n,eQ?$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7m+eQ? $vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibilitye*eQ/ $ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rulesg)eQ3 $oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels (eQ']$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800joina'eQ' $poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create &eQ']$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800joineQ']$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800leaveneQ?$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5 eQ']$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800joinmeQ? $9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibilityeeQ/ $C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rulesgeQ3 $cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levelsaeQ' $HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800m.room.create eQ']$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829joinneQ?$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4 eQ']$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829joinpeQ))$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800meQ? $nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibilityn%eQ?$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6m$eQ? $CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibilitye#eQ/ $gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rulesg"eQ3 $Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels !eQ']$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800joina eQ' $-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800m.room.create eQ']$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800join +z`^ k x ' 4 A N ] ly(5BmzS)P]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800P]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800P]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800P]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800P]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800P]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800N[Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800 P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-210:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800 N[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800 P]Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800P]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800P]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800P]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800P]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800P]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800P]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800P]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800P]Q@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800P]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800P]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800P]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800P]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800P]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800P]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800P]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800P]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800P]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800P]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800P]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800 @V Z  b  x*"~8B@! e'Q  ]$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwm.room.create!OqPpVlCwmKdAUlwrXI:localhost:8800m%mu@anon-20191002_181700-156:localhost:8800, e?Q ]$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYm.room.third_party_invite!quaZwrGnzbNWhwAOYB:localhost:8800mm@anon-20191002_181700-154:localhost:8800,e?Q ]$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iom.room.history_visibility!quaZwrGnzbNWhwAOYB:localhost:8800m}m@anon-20191002_181700-154:localhost:8800$e/Q ]$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYm.room.join_rules!quaZwrGnzbNWhwAOYB:localhost:8800m{Bm{@anon-20191002_181700-154:localhost:8800&e3Q ]$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAm.room.power_levels!quaZwrGnzbNWhwAOYB:localhost:8800mx\my@anon-20191002_181700-154:localhost:8800 e'Q ]$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4m.room.member!quaZwrGnzbNWhwAOYB:localhost:8800muKmv]@anon-20191002_181700-154:localhost:8800 e'Q  ]$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4m.room.create!quaZwrGnzbNWhwAOYB:localhost:8800mr0mr@anon-20191002_181700-154:localhost:8800 e'Q ]$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIm.room.member!JusxqeECtidaPlWqhp:localhost:8800mjmjy@anon-20191002_181700-153:localhost:8800 e'Q ]$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwm.room.member!JusxqeECtidaPlWqhp:localhost:8800meYmg@anon-20191002_181700-152:localhost:8800,e?Q ]$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4m.room.third_party_invite!JusxqeECtidaPlWqhp:localhost:8800m\8m]1@anon-20191002_181700-152:localhost:8800,e?Q ]$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48m.room.history_visibility!JusxqeECtidaPlWqhp:localhost:8800mWmY@anon-20191002_181700-152:localhost:8800$e/Q ]$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsm.room.join_rules!JusxqeECtidaPlWqhp:localhost:8800mUDmV6@anon-20191002_181700-152:localhost:8800&e3Q ]$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAm.room.power_levels!JusxqeECtidaPlWqhp:localhost:8800mRPmS@anon-20191002_181700-152:localhost:8800 e'Q ]$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4m.room.member!JusxqeECtidaPlWqhp:localhost:8800mOmP@anon-20191002_181700-152:localhost:8800 e'Q  ]$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBkm.room.create!JusxqeECtidaPlWqhp:localhost:8800mKmL@anon-20191002_181700-152:localhost:8800 e'Q ] $qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800 m>m?@anon-20191002_181700-151:localhost:8800 e'Q ] $7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800 m:m<@anon-20191002_181700-149:localhost:8800 e'Q ] $tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800 m5Pm6@anon-20191002_181700-149:localhost:8800,e?Q ]$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxom.room.third_party_invite!aWvVRVaDflYyyGTOdD:localhost:8800m3m3@anon-20191002_181700-149:localhost:8800 e'Q ]$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokm.room.member!aWvVRVaDflYyyGTOdD:localhost:8800m0m0@anon-20191002_181700-150:localhost:8800 e'Q ]$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0m.room.member!aWvVRVaDflYyyGTOdD:localhost:8800m.cm.@anon-20191002_181700-149:localhost:8800, e?Q ]$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIm.room.history_visibility!aWvVRVaDflYyyGTOdD:localhost:8800m*Lm,@anon-20191002_181700-149:localhost:8800$ e/Q ]$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4m.room.join_rules!aWvVRVaDflYyyGTOdD:localhost:8800m'm(@anon-20191002_181700-149:localhost:8800& e3Q ]$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cm.room.power_levels!aWvVRVaDflYyyGTOdD:localhost:8800m%m& @anon-20191002_181700-149:localhost:8800 i i eQ_7$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 653}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-150", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-150:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040852067, "hashes": {"sha256": "LYMogqBveAhnhONn+QeWtOc4IWJpD1+RlcBLZQcCuJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bK6tAfRU8uH8jQRSL1/oP6gLtIHXs2VmK6pbNTGiXk06SqdcFo63YzI9myPR5ie9iSTU6n9x3lB9CXuqmvCKBA"}}, "unsigned": {"age_ts": 1570040852067, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-149:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-149", "avatar_url": null}, "sender": "@anon-20191002_181700-149:localhost:8800"}]}} eQ_$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 652}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4"], "type": "m.room.history_visibility", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040851020, "hashes": {"sha256": "Ve1Xdgo2YiM7I+JNEdarCCb6Wt0fxVxYYTKTkTEJfso"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yjk0NfTIlSsqtMcu8D/BaqFjKPeCsdNWhuJTdyIZnZS53IrASXp+xEknLPoAqexn1TPAImYN8YoIjHzyPuYNAg"}}, "unsigned": {"age_ts": 1570040851020}}s eQ_u$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 651}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c"], "type": "m.room.join_rules", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040850346, "hashes": {"sha256": "Gv7+s+N+bt8GY6m3+/gRCqiYOkzijx6duvL94ceDP+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpUSNbA/7e4sX/t/5TmPeySM+9gwCr52SVVvxiM24dlSrLHplBBiRA8WvM2C7nvhC2mpo0y6MLyVtKPsEpFSCw"}}, "unsigned": {"age_ts": 1570040850346}} Lj8pW> ] + d 2  j 8  p > v DJ |QW%sW;" e3k91e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w M1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 Q1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk T1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBER9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 3$94:localhost:42455 3$94:localhost:42455 9$91_m1:localhost:42455 9$91_m1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 3$90:localhost:42455 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI )1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA 1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx41e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM x1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUQ1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU^1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc R1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 P1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM 1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 41e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw71e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wH1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwW1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4B1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L81e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg T1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8=1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM o1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 x0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQc1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8>1e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo*1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl2853$88:localhost:42455 1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY'3$87:localhost:42455 3$87:localhost:42455 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk !3$82:localhost:42455 p1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok3$80:localhost:42455 [1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM F | h6 $^n<  D  0uC|J  P , X  Jb &j8p>  v \ * V 1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk01e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV00e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wL0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU|1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U 21e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU81e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQx0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY[1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY^1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE90e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo_1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg^1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GcP1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkN1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEk1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQF1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego [1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA M1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yp 1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs 1e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwQ V21e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ- 21e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$ P11e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYx1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8c21e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico S1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA P1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 <1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O81e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY(1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE 1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT41e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgZ1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIo1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6EB1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw  YeQ_A$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 656}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-149:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040853840, "hashes": {"sha256": "xUivEAovkMTlujjVCJm8c5yHtFBlR8G8eAMyl5RkLwI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cvXNZx+qPSSTXbWjjMd/jFJ0tZ3K0vqH+QwzUpbkXqRt5vEZUoDVfj57iW3PVLpwzSsdd3eDijsWos21/g33BQ"}}, "unsigned": {"age_ts": 1570040853840, "replaces_state": "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"}}beQ_S$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 174, "stream_ordering": 655}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs"], "prev_events": ["$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok"], "type": "m.room.third_party_invite", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-149:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:46319/_matrix/identity/v2/pubkey/isvalid", "public_key": "z/aG2znABshpHan3tCZlbGbHN5ZgBbHfBCIltbX1qso"}, {"key_validity_url": "https://localhost.localdomain:46319/_matrix/identity/v2/pubkey/isvalid", "public_key": "ympIEbqLIGXG/cIaLJWfg78EVpeSyx3xW0O/nsXwxpg"}], "key_validity_url": "https://localhost.localdomain:46319/_matrix/identity/v2/pubkey/isvalid", "public_key": "z/aG2znABshpHan3tCZlbGbHN5ZgBbHfBCIltbX1qso"}, "depth": 8, "prev_state": [], "state_key": "5", "origin": "localhost:8800", "origin_server_ts": 1570040853397, "hashes": {"sha256": "RJQWShH18IgL0LoZzR0xGZIF/U+dzZy4zEmtvPEPllU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xs9lqMtbTfGqtw+3KrFV2Lnrn4hQFDtuBYwa+BwNKYbqWxEBtubUZV3IQRunnH3sQwBQUiKZjLR1FU1512SvCg"}}, "unsigned": {"age_ts": 1570040853397}} eQ_=$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800{"token_id": 173, "stream_ordering": 654}{"auth_events": ["$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c", "$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4", "$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4"], "prev_events": ["$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0"], "type": "m.room.member", "room_id": "!aWvVRVaDflYyyGTOdD:localhost:8800", "sender": "@anon-20191002_181700-150:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-150", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-150:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040852635, "hashes": {"sha256": "eRLQdhxb3Lsto5IXuKYdlld3mpuIj07lPQZqFxJKI5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "euYSBzhd/aZJvv4BzmlNmNCrLcsTVeuwT2GwqAjUELoxMaokrzqSxzRvxU8CWitvgVV9LMBu+qKIjaDkhxATDg"}}, "unsigned": {"age_ts": 1570040852635, "replaces_state": "$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0"}} N*CV{I p> v D u O  VP $  ] +c18i 7\j {  Io= $1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 t1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUk1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU e1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcc1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q 1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 R1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAu1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g%1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwG1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskt1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag21e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYj1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70t1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg#1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo s1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4_1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsY1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYS1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wD1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y(1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsU0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgm1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA@1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoc1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE~1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEl1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo61e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E)1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8:1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoL1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM:1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 51e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM Q1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9wo  eQ_$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 663}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs"], "type": "m.room.history_visibility", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040862671, "hashes": {"sha256": "CsRSqugIxuNbAbkIYh+I7s1CoesIudZ5QfofwVIsWwo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VgHSbkFxpdx2wE35Bv3Tucf/Z0M8QRi06owFd+n2iXjJxpOqE09hzI+VTjD50Qw3XZkDzd5F6KqFLYBARgzeBA"}}, "unsigned": {"age_ts": 1570040862671}}seQ_u$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 662}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA"], "type": "m.room.join_rules", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040862020, "hashes": {"sha256": "gDAkl5Miyidz5G8tsSYEXZGRqP9+BJmPPwOitlqaZ6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OWbAE0cQHFVA55fLfEbcNUz90VPi3wGDKCa6DwMGzefNuJcDsz7l2SiZH7YbjerV5+M4/QovtXp2ek441uwoDA"}}, "unsigned": {"age_ts": 1570040862020}}jeQ_c$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 661}{"auth_events": ["$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "type": "m.room.power_levels", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"users": {"@anon-20191002_181700-152:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040861264, "hashes": {"sha256": "gQrFS43CTg3mCCaoN21C9VFE5rI+OYA33rm4ZJs/3rQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "byRk51RfYY+jhDZ/Ovhvl0dzhC7PfxW4NPjkPCvJbSrL/HpKWvoQkBt1GwDVoD8ofUuX2SLSPzTyWZJgzbQMDg"}}, "unsigned": {"age_ts": 1570040861264}}ueQ_y$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 660}{"auth_events": ["$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk"], "prev_events": ["$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk"], "type": "m.room.member", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-152", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-152:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040860669, "hashes": {"sha256": "kZxBZ46H1cTWhKPSzbyrIifOkrlJ3WEOBWlnVqEjfrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vh0TRndDh0Yz6bDzg8ZXQEuneNp6Latw9+1ZiHxRbyVdOYL7On2Ug4OWLEz89rDrRsYRuNIAN3rUrplhyuEkCQ"}}, "unsigned": {"age_ts": 1570040860669}} !p% ! e n  # HKm*CLtdhQ' e!IMiczgkCTjejbnbeyP:localhost:8800m.room.create$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMugQ'/e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kjfQ3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_access$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkpeQ? e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibility$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwhdQ/ e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rules$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gjcQ3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU bQ']e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4daQ' e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.create$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQq`Q?e!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUp_Q? e!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibility$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoh^Q/ e!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rules$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQj]Q3 e!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w \Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMd[Q' e!awHAhLuEkavTGACcUW:localhost:8800m.room.create$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMqZQ?e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznspYQ? e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibility$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEhXQ/ e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rules$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAjWQ3 e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M VQ']e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEdUQ' e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.create$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwqTQ?e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYpSQ? e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibility$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iohRQ/ e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rules$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYjQQ3 e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA PQ']e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4dOQ' e!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg48NQ']ee!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw MQ']e!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwqLQ?e!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4pKQ? e!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibility$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48hJQ/ e!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rules$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsjIQ3 e!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA HQ']e!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-152:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4 a} { y w u sqomkigeca~VeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~UeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~TeeQ$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800~SeeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~ReeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~QeeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800~PeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~OeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~NeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800~MeeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800~LeeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~KeeQ$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800~JeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800~IeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~HeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~GeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800~FeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~EeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800~DeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~CeeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~BeeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~AeeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~@eeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~?eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~>eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~=eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~<eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~;eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800~:eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800~9eeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800~8eeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800 #r.M 3 B p + 4\(GV5DrekeQ/ $p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rulesgjeQ3 $jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels ieQ']$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800aheQ' $kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800m.room.creatergeQ'/$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800gfeQ3 $_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_accessmeeQ? $Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibilityedeQ/ $h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rulesgceQ3 $RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels beQ']$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800aaeQ' $DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.createn`eQ?$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9m_eQ? $rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibilitye^eQ/ $Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rulesg]eQ3 $G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels \eQ']$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800a[eQ' $7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800m.room.createnZeQ?$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8mYeQ? $XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibilityeXeQ/ $SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rulesgWeQ3 $VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels VeQ']$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800aUeQ' $8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.createnTeQ?$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7mSeQ? $vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibilityeReQ/ $ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rulesgQeQ3 $oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels PeQ']$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800aOeQ' $poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800m.room.create NeQ']$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800 MeQ']$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800m.room.member@anon-20191002_181700-153:localhost:8800nLeQ?$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800m.room.third_party_invite6mKeQ? $CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800m.room.history_visibilityeJeQ/ $gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800m.room.join_rulesgIeQ3 $Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800m.room.power_levels  geQ /$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800{"send_on_behalf_of": "localhost:8800", "stream_ordering": 665}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4", "$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4"], "prev_events": ["$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4"], "type": "m.room.member", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"membership": "invite", "third_party_invite": {"signed": {"mxid": "@anon-20191002_181700-153:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "signatures": {"localhost.localdomain:43793": {"ed25519:0": "+/+EWJrkgnkqLbLgg3SfQCxT4pxCukMdcGV6rLSOIBtfJK4Rjqm0R4XvwPuK3DBaTkhMsZKvnEIL67mxd+XvAA"}}, "token": "6"}, "display_name": "Bob"}}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-153:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040866137, "hashes": {"sha256": "dvqH1H49u0oXVPQ53jsLKXikJvczhIiWCaAhP3rHA3k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zw6mw62eMDXlMPvmJxnYB29N3AtJ4R0qaIACNUvIaD8Zv19xRM8VLc3SUSPeTcwTZfN4cTZ2w4pW0/+AuMHEAg"}}, "unsigned": {"age_ts": 1570040866137, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-152:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-152:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-152", "avatar_url": null}, "sender": "@anon-20191002_181700-152:localhost:8800"}]}}beQ_S$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 176, "stream_ordering": 664}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4"], "prev_events": ["$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48"], "type": "m.room.third_party_invite", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:43793/_matrix/identity/v2/pubkey/isvalid", "public_key": "X0tNmMR6HWSPTfKc+x5k3+gD/5CfgySsOI2zJoLlvF0"}, {"public_key": "gjSbZdBjn3YCtBvZBW1nWE3jbM9KWUKhi6m6ajPYr04", "key_validity_url": "https://localhost.localdomain:43793/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:43793/_matrix/identity/v2/pubkey/isvalid", "public_key": "X0tNmMR6HWSPTfKc+x5k3+gD/5CfgySsOI2zJoLlvF0"}, "depth": 6, "prev_state": [], "state_key": "6", "origin": "localhost:8800", "origin_server_ts": 1570040863800, "hashes": {"sha256": "Tzb5Ub20GMqZAUHqIX5XYJFyOUHvVSwo2EGuVaA0grE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sM7DhLamtpblPQVXCIEX3n0wysLNEBpORXPdpKr5GF32PKLbmFDGgcUFAewVuNi8MA8jCWSlCKVFqylz4kVLDg"}}, "unsigned": {"age_ts": 1570040863800}} X XueQ_y$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 668}{"auth_events": ["$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4"], "prev_events": ["$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4"], "type": "m.room.member", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-154", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-154:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040870219, "hashes": {"sha256": "9Eoheh5mnqo/VmYWsUz0XXxB6ZRaLJylfH6+ljGSBNk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dfvko0p0Z2U5vp+GE87HqiK+j8DsDXO2dA0dfTuSqQjeihQ8MQtqCoxQwrdiDimokCnWdQP+HPKJrvEdymuLCw"}}, "unsigned": {"age_ts": 1570040870219}}heQ__$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 667}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-154:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040869424, "hashes": {"sha256": "ng7GJIbw54TnR6fsYS+NMMJ6fUW9UUNvGaSBl0+zvXs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZIGWQzlYtXmEhllY/lZvxf76Sqz0jLJpKXZ4GyQmrFxtrWKBNeuahTCRU675qxOxhMcKSjZ3CNNpaLp8L8gBA"}}, "unsigned": {"age_ts": 1570040869424}}?eQ_ $yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800{"token_id": 177, "stream_ordering": 666}{"auth_events": ["$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA", "$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk", "$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs"], "prev_events": ["$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw"], "type": "m.room.member", "room_id": "!JusxqeECtidaPlWqhp:localhost:8800", "sender": "@anon-20191002_181700-153:localhost:8800", "content": {"third_party_signed": {"mxid": "@anon-20191002_181700-153:localhost:8800", "sender": "@anon-20191002_181700-152:localhost:8800", "signatures": {"localhost.localdomain:43793": {"ed25519:0": "+/+EWJrkgnkqLbLgg3SfQCxT4pxCukMdcGV6rLSOIBtfJK4Rjqm0R4XvwPuK3DBaTkhMsZKvnEIL67mxd+XvAA"}}, "token": "6"}, "membership": "join", "displayname": "anon-20191002_181700-153", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-153:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040867343, "hashes": {"sha256": "4aA6IIcQjye++z5M3K829S4J1IjzX5JdJOYVDHhOy3Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lZ4Yj9aOThkUw3vvT79OVGO9Q9FtaMi+b6Gz8xSzQ0gBIGJ6Bpa6cGq/8W6ojcad/7FopP1IPSX8WuXMYsUGCQ"}}, "unsigned": {"age_ts": 1570040867343, "replaces_state": "$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw"}} ,NC 8 - { " p  e ZOD9.|#qf VDeL$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0sha256aiF;$mjg2Wv0z5)0 .VCeL$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMsha256{Ci6Ä RZ.3uu$cVBeL$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAsha256p:oOgSP [[t)_lcLE`VAeL$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0sha256- qpfގ.}& ]zڼ6 V@eL$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0sha256Tpǡeh2LvNיw<-V?eL$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcsha256{\m8b*Vk[|tpE&I3V>eL$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEsha256oİσLAֲǮ/fTw Cɀ&vV=eL$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUsha256 !%VL~N fp $ V<eL$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4sha256Pr a:EuUV6eL$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIsha256/q%ny/ ZL~/s]ylSb]LV5eL$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMsha256GϢ6vϦ` !z>YcV4eL$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRsssha256C.";P-E,z;~~%x Y0M#FV3eL$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMsha256qӪsihh/Jlf[V2eL$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7ksha256ojCV۸v[Nu,^ùV1eL$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPksha256ɀ0*M@N=C7<:;V0eL$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwsha256z7#{mϠ2H%DsFCv)~9V/eL$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gsha256斈7\*WϓLxHV.eL$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUsha256G;fDL֎-=-YX5V-eL$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4sha256rY.33=e9 &~V,eL$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQsha256 *͍wdJu4 3.sލ#?+V+eL$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUsha256vbLsE˞$: nPnmvXեV*eL$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVosha256<ոwtp$]=]9gr/A%ZV)eL$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQsha256>^@cщ] lւxTV(eL$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wsha256J&WB*tʳ- V'eL$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMsha256,C?J3߉D61>v/^α NV&eL$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMsha2569Pͱned+*UthZ~bj1AV%eL$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznssha256V ,lcדK7/0Д|}{V$eL$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEsha256\WЬc{.ßZ(jWfPT 61V#eL$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAsha256J\k+7yHൊN*tZV"eL$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51Msha256Va.wv=UnH8|{SV!eL$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEsha256[w+D+N ] F^0 V eL$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwsha256񴐳&/\@˜WSbiֺC6Tȵ VeL$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYsha256~sbt0[M||ݘ07ֻrVeL$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iosha256 ӣ [ wD) ֭qfNB,*VeL$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYsha256RrְY("vU95!FVeL$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAsha256ZxfNUt1 ^n VeL$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4sha256&fVDr BF HX<)C/RVeL$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4sha256[8@p? S=^VeL$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIsha2568B+џР{Ҭ<~5{eڅ `v^F.yW5 i G %  | Z 8  l J (  ~ \ :   q o B a4S&rEd7 V)uH Y,!E@__ANON__-52:localhost:42455-, !E@__ANON__-53:localhost:42455/E!E@__ANON__-58:localhost:424559!E@__ANON__-57:localhost:424557!E@__ANON__-56:localhost:424555!E@__ANON__-55:localhost:424553!E@__ANON__-54:localhost:424551,]@anon-20191002_181700-151:localhost:8800W,]@anon-20191002_181700-150:localhost:8800V,]@anon-20191002_181700-148:localhost:8829S,]@anon-20191002_181700-147:localhost:8829T,]@anon-20191002_181700-146:localhost:8800R,]@anon-20191002_181700-144:localhost:8800Q,]@anon-20191002_181700-143:localhost:8800P,]@anon-20191002_181700-141:localhost:8800O,]@anon-20191002_181700-140:localhost:8800N,]@anon-20191002_181700-139:localhost:8829M,]@anon-20191002_181700-138:localhost:8800L,]@anon-20191002_181700-137:localhost:8800K,]@anon-20191002_181700-136:localhost:8800J,]@anon-20191002_181700-134:localhost:8800I,]@anon-20191002_181700-132:localhost:8800H,]@anon-20191002_181700-131:localhost:8800G,]@anon-20191002_181700-129:localhost:8800F,]@anon-20191002_181700-128:localhost:8800E,]@anon-20191002_181700-126:localhost:8800C,]@anon-20191002_181700-125:localhost:8800B,]@anon-20191002_181700-124:localhost:8800A,]@anon-20191002_181700-123:localhost:8800@,]@anon-20191002_181700-120:localhost:8800?,]@anon-20191002_181700-119:localhost:8800>,]@anon-20191002_181700-118:localhost:8800=,]@anon-20191002_181700-117:localhost:8800<,]@anon-20191002_181700-116:localhost:8800;,]@anon-20191002_181700-115:localhost:8800:,]@anon-20191002_181700-114:localhost:88009,]@anon-20191002_181700-113:localhost:88008,]@anon-20191002_181700-112:localhost:88007,]@anon-20191002_181700-110:localhost:88006,]@anon-20191002_181700-109:localhost:88005,]@anon-20191002_181700-108:localhost:88004,]@anon-20191002_181700-107:localhost:88003,]@anon-20191002_181700-106:localhost:88002,]@anon-20191002_181700-104:localhost:88001,]@anon-20191002_181700-102:localhost:88000,]@anon-20191002_181700-101:localhost:8800/!E@__ANON__-51:localhost:42455)!E@__ANON__-50:localhost:42455(!E@__ANON__-49:localhost:42455&!E@__ANON__-48:localhost:42455%!E@__ANON__-47:localhost:42455!!E@__ANON__-46:localhost:42455!E@__ANON__-45:localhost:42455!E@__ANON__-43:localhost:42455!E@__ANON__-41:localhost:42455!E@__ANON__-40:localhost:42455!E@__ANON__-39:localhost:42455!E@__ANON__-38:localhost:42455!E@__ANON__-37:localhost:42455!E@__ANON__-36:localhost:42455!E@__ANON__-35:localhost:42455!E@__ANON__-34:localhost:42455 !E@__ANON__-33:localhost:42455 !E@__ANON__-32:localhost:42455!E@__ANON__-31:localhost:42455!E@__ANON__-30:localhost:42455 C@__ANON__-2:localhost:42455!E@__ANON__-28:localhost:42455!E@__ANON__-26:localhost:42455!E@__ANON__-22:localhost:42455!E@__ANON__-21:localhost:42455!E@__ANON__-20:localhost:42455!E@__ANON__-19:localhost:42455!E@__ANON__-18:localhost:42455!E@__ANON__-17:localhost:42455!E@__ANON__-16:localhost:42455!E@__ANON__-15:localhost:42455!E@__ANON__-13:localhost:42455!E@__ANON__-12:localhost:42455!E@__ANON__-11:localhost:42455!E@__ANON__-10:localhost:42455 C@__ANON__-0:localhost:42455/@8:localhost:8800h/@6:localhost:8800d/@3:localhost:8800`1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:8800/@2:localhost:8800^1@17:localhost:88001@16:localhost:88001@15:localhost:8800}1@14:localhost:8800{1@13:localhost:8800y K d 7 V)uG.a[i<3|N vHb4 ~ P " j >  X , t F  j<X*-]@anon-20191002,]@anon-20191002_181700-169:localhost:8800j,]@anon-20191002_181700-173:localhost:8800l,]@anon-20191002_181700-179:localhost:8800r,]@anon-20191002_181700-183:localhost:8800u,]@anon-20191002_181700-182:localhost:8800t,]@anon-20191002_181700-181:localhost:8800s,]@anon-20191002_181700-187:localhost:8800z,]@anon-20191002_181700-186:localhost:8800x,]@anon-20191002_181700-185:localhost:8800w,]@anon-20191002_181700-184:localhost:8800v-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800,]@anon-20191002_181700-189:localhost:8800~,]@anon-20191002_181700-188:localhost:8800|,]@anon-20191002_181700-180:localhost:8829q,]@anon-20191002_181700-178:localhost:8800p,]@anon-20191002_181700-176:localhost:8800o,]@anon-20191002_181700-175:localhost:8800n,]@anon-20191002_181700-174:localhost:8800m,]@anon-20191002_181700-170:localhost:8800k*[ @anon-20191002_181700-16:localhost:8800,]@anon-20191002_181700-168:localhost:8800i,]@anon-20191002_181700-167:localhost:8800g,]@anon-20191002_181700-166:localhost:8829f,]@anon-20191002_181700-165:localhost:8800e,]@anon-20191002_181700-164:localhost:8800c,]@anon-20191002_181700-163:localhost:8800b,]@anon-20191002_181700-162:localhost:8800a,]@anon-20191002_181700-161:localhost:8800_,]@anon-20191002_181700-160:localhost:8800],]@anon-20191002_181700-158:localhost:8800\,]@anon-20191002_181700-156:localhost:8800[,]@anon-20191002_181700-154:localhost:8800Z,]@anon-20191002_181700-153:localhost:8800Y-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-236:localhost:8800-]@anon-20191002_181700-234:localhost:8800-]@anon-20191002_181700-232:localhost:8800-]@anon-20191002_181700-231:localhost:8800+[@anon-20191002_181700-22:localhost:8800-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800+[@anon-20191002_181700-20:localhost:8800-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800-]@anon-20191002_181700-199:localhost:8800  eQ_$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 671}{"auth_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA", "$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY"], "type": "m.room.history_visibility", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040872405, "hashes": {"sha256": "MjwJAEKAe9ll+Mdn1xo16IFPCRGAh2LYnGzb6lxjL6c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hdWxfSdyU8L+b5ucTHisFZvarqOLZ++XzCZ19bkU4hgufg6HgJuLfifnQAYMMcM6QvpV6vj+JpK12SH3TnXAAA"}}, "unsigned": {"age_ts": 1570040872405}}seQ_u$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 670}{"auth_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA", "$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA"], "type": "m.room.join_rules", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040871746, "hashes": {"sha256": "NDMChLt0wsknX2nlFvUUnwmFFTDtDurcEPJPWCSqJUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "If7sgQIDNN0WoDtIIi1ev3DZdBJhfFVoFMCu+EoL2Kfkwhs5hCdjrUro4Vk+pJ6f/BqwXFVmIY4WIHlDK6MZAQ"}}, "unsigned": {"age_ts": 1570040871746}}jeQ_c$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 669}{"auth_events": ["$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "type": "m.room.power_levels", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"users": {"@anon-20191002_181700-154:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040871004, "hashes": {"sha256": "23EhjSkkO9F5sW5kR+tm6Uso9Wa1GkixQt1KldakRww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jLJML2WNOCuHdWmVVFO5OBFhoS+hbeu/wkDr9PQBJ9RXyfmBTAt8oajg/WonOBSlqxZ1qMy4iBdfkY8P15r/Bg"}}, "unsigned": {"age_ts": 1570040871004}} 5 5u!eQ_y$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 674}{"auth_events": ["$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw"], "prev_events": ["$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw"], "type": "m.room.member", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-156", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-156:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040877255, "hashes": {"sha256": "KGLBT3GXrmqWGROZTL9hqY8qY5fiwAP3nPRcOVjcyD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DmZ01BepZFPXeOZupT+j6zeO1MNzG3Fw4e8JoBPRT5U/ZDVObMtL0FzYHRktV/hvuZE/U/H6ipnE9NQX7eKHAw"}}, "unsigned": {"age_ts": 1570040877255}}h eQ__$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 673}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-156:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040876069, "hashes": {"sha256": "CiEc6eMtAFTXLzwqgfkTob+8JE7VbXuNsSx+Xl9PZpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ejVQ0Xy39pflcN0gAANd1AB1pbsfi04emmEHsIYcRSzgTr0LSG14clPzOYf8iLG+2C1UJQ/ocdis/ugjj2USDA"}}, "unsigned": {"age_ts": 1570040876069}}beQ_S$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY!quaZwrGnzbNWhwAOYB:localhost:8800{"token_id": 178, "stream_ordering": 672}{"auth_events": ["$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA", "$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4", "$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4"], "prev_events": ["$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io"], "type": "m.room.third_party_invite", "room_id": "!quaZwrGnzbNWhwAOYB:localhost:8800", "sender": "@anon-20191002_181700-154:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:44181/_matrix/identity/v2/pubkey/isvalid", "public_key": "aOLm69mwDHiqO2jMooNzOmWBkiQlD3ZahYGdCcCAR5M"}, {"key_validity_url": "https://localhost.localdomain:44181/_matrix/identity/v2/pubkey/isvalid", "public_key": "Zm3H20l7gStcmLSCe12vYFHvAv0G4U6yV+qEkJx3Mvo"}], "key_validity_url": "https://localhost.localdomain:44181/_matrix/identity/v2/pubkey/isvalid", "public_key": "aOLm69mwDHiqO2jMooNzOmWBkiQlD3ZahYGdCcCAR5M"}, "depth": 6, "prev_state": [], "state_key": "7", "origin": "localhost:8800", "origin_server_ts": 1570040874115, "hashes": {"sha256": "SVVT0wYIh2tr7s8EnxspYttPYzuFEZic9DeD3//DuUo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x/fOJFkkmM1MWI8hFqkafySzXOfnF6NCJRaxtdk7ZsRzgsi5DEpw/nZVQLdCubIKIYRTAgWCaxdMt/8Vlb4jAQ"}}, "unsigned": {"age_ts": 1570040874115}} "Pq) ' 2 7 [ Ydi!DIm$)PgQ/ e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rules$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxclQ9 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_alias$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEiQ3 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU Q']e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4cQ' e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.create$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBItQ'/e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgiQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_access$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIoQ? e!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibility$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUgQ/ e!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rules$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIiQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM Q']e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRsscQ' e!IMiczgkCTjejbnbeyP:localhost:8800m.room.create$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMtQ'/e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kiQ3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_access$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkoQ? e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibility$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwgQ/ e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rules$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gi Q3 e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU Q']e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4c Q' e!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.create$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-159:localhost:8800$pDZCc_muU7FZEV0l-bbrrkwShHurv9Zyg8JCphVzgAw Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-159:localhost:8800$Ork2nbB51j5NApw3JOJldmCVNa3KzuiSvgtPW6Xp-iApQ?e!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUoQ? e!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibility$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVogQ/ e!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rules$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQiQ3 e!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w Q']e!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMcQ' e!awHAhLuEkavTGACcUW:localhost:8800m.room.create$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM Q']e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-157:localhost:8800$GlYkfN6Wk8HA6D0yW_ILUHEvSnGFCe9qP87ETDxa4DA Q']e!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-157:localhost:8800$VpPduyG1nYeJTivWXejIiiZrTsLpfFGft-gO5yZruPopQ?e~!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsoQ? e}!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibility$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEg~Q/ e|!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rules$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAi}Q3 e{!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M |Q']ez!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE A\ Z  d  blj3CA&9e3Q ]$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIm.room.guest_access!IMiczgkCTjejbnbeyP:localhost:8800mm@anon-20191002_181700-161:localhost:8800,8e?Q ]$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUm.room.history_visibility!IMiczgkCTjejbnbeyP:localhost:8800mm@anon-20191002_181700-161:localhost:8800$7e/Q ]$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIm.room.join_rules!IMiczgkCTjejbnbeyP:localhost:8800mqm0@anon-20191002_181700-161:localhost:8800&6e3Q ]$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMm.room.power_levels!IMiczgkCTjejbnbeyP:localhost:8800mm)@anon-20191002_181700-161:localhost:8800 5e'Q ]$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssm.room.member!IMiczgkCTjejbnbeyP:localhost:8800mm@anon-20191002_181700-161:localhost:88004 e'Q  ]$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMm.room.create!IMiczgkCTjejbnbeyP:localhost:8800mmT@anon-20191002_181700-161:localhost:8800 3e'Q /$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7km.room.member!HIZTeBCxvpMSpcqGVD:localhost:8800mxm@2:localhost:8800&2e3Q ]$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkm.room.guest_access!HIZTeBCxvpMSpcqGVD:localhost:8800m+m߽@anon-20191002_181700-160:localhost:8800,1e?Q ]$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwm.room.history_visibility!HIZTeBCxvpMSpcqGVD:localhost:8800m m@anon-20191002_181700-160:localhost:8800$0e/Q ]$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gm.room.join_rules!HIZTeBCxvpMSpcqGVD:localhost:8800mbm@anon-20191002_181700-160:localhost:8800&/e3Q ]$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUm.room.power_levels!HIZTeBCxvpMSpcqGVD:localhost:8800mԘm@anon-20191002_181700-160:localhost:8800 .e'Q ]$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4m.room.member!HIZTeBCxvpMSpcqGVD:localhost:8800mmm@anon-20191002_181700-160:localhost:8800- e'Q  ]$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQm.room.create!HIZTeBCxvpMSpcqGVD:localhost:8800m`mͷ@anon-20191002_181700-160:localhost:8800,,e?Q ]$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUm.room.third_party_invite!awHAhLuEkavTGACcUW:localhost:8800mmG@anon-20191002_181700-158:localhost:8800,+e?Q ]$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVom.room.history_visibility!awHAhLuEkavTGACcUW:localhost:8800mm|@anon-20191002_181700-158:localhost:8800$*e/Q ]$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQm.room.join_rules!awHAhLuEkavTGACcUW:localhost:8800mm[@anon-20191002_181700-158:localhost:8800&)e3Q ]$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wm.room.power_levels!awHAhLuEkavTGACcUW:localhost:8800mkm2@anon-20191002_181700-158:localhost:8800 (e'Q ]$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMm.room.member!awHAhLuEkavTGACcUW:localhost:8800mm@anon-20191002_181700-158:localhost:8800' e'Q  ]$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMm.room.create!awHAhLuEkavTGACcUW:localhost:8800mmu@anon-20191002_181700-158:localhost:8800,&e?Q ]$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsm.room.third_party_invite!OqPpVlCwmKdAUlwrXI:localhost:8800mm#@anon-20191002_181700-156:localhost:8800,%e?Q ]$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEm.room.history_visibility!OqPpVlCwmKdAUlwrXI:localhost:8800m8mh@anon-20191002_181700-156:localhost:8800$$e/Q ]$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAm.room.join_rules!OqPpVlCwmKdAUlwrXI:localhost:8800mm@anon-20191002_181700-156:localhost:8800&#e3Q ]$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51Mm.room.power_levels!OqPpVlCwmKdAUlwrXI:localhost:8800mLmh@anon-20191002_181700-156:localhost:8800 "e'Q ]$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEm.room.member!OqPpVlCwmKdAUlwrXI:localhost:8800mm}@anon-20191002_181700-156:localhost:8800 a} { y w u sqomkigeca~ueeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~teeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~seeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~reeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~qeeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~peeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~oeeQ$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~neeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~meeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~leeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800~keeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~jeeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~ieeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800~heeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~geeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~feeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800~eeeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800~deeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~ceeQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800~beeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~aeeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~`eeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800~_eeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~^eeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~]eeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800~\eeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~[eeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~ZeeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800~YeeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800~XeeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800~WeeQ$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800 Q Z ( T  k: sB) a / 70 gb) " N 5 S![  h6n=i uDM1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK00e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q)1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY0e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A,1e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI0e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YD0e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU]1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc;1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw@3$54:localhost:424551e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog3$50:localhost:424551e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI51e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U0e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsS1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w0e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIE0e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y@0e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYq1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVAv1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0p1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM 1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx41e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIQ1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAm1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI\1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAM1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cG1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAE1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokD1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760?1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs=3$94:localhost:42455+3$90:localhost:42455)3$87:localhost:42455'3$82:localhost:42455#3$80:localhost:424553$78:localhost:424553$75:localhost:424553$72:localhost:424553$69:localhost:424551e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A-1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw3$66:localhost:424553$62:localhost:424553$61:localhost:42455 0e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo31e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk%1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk0e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx00e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ70e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wW1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA&3$56:localhost:424553$55:localhost:42455 -RM H C > 9 4/*|%w rmhc T'Qe!WjlTCJVOFJkanCtkFE:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oT&Qe!WjlTCJVOFJkanCtkFE:localhost:8800$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacT%Qe!WjlTCJVOFJkanCtkFE:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboT$Qe!WjlTCJVOFJkanCtkFE:localhost:8800$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIT#Qe!WjlTCJVOFJkanCtkFE:localhost:8800$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8T"Qe!WjlTCJVOFJkanCtkFE:localhost:8800$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUT!Qe!WjlTCJVOFJkanCtkFE:localhost:8800$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYT Qe!WjlTCJVOFJkanCtkFE:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0TQe!WjlTCJVOFJkanCtkFE:localhost:8800$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMTQe!aBCvSXjtZUEPlPGHvY:localhost:8800$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGATQe!aBCvSXjtZUEPlPGHvY:localhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0TQe!aBCvSXjtZUEPlPGHvY:localhost:8800$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0TQe!aBCvSXjtZUEPlPGHvY:localhost:8800$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcTQe!aBCvSXjtZUEPlPGHvY:localhost:8800$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvETQe!aBCvSXjtZUEPlPGHvY:localhost:8800$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUTQe!aBCvSXjtZUEPlPGHvY:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4TQe!aBCvSXjtZUEPlPGHvY:localhost:8800$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBITQe!IMiczgkCTjejbnbeyP:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgTQe!IMiczgkCTjejbnbeyP:localhost:8800$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbITQe!IMiczgkCTjejbnbeyP:localhost:8800$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUTQe!IMiczgkCTjejbnbeyP:localhost:8800$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIITQe!IMiczgkCTjejbnbeyP:localhost:8800$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMTQe!IMiczgkCTjejbnbeyP:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssTQe!IMiczgkCTjejbnbeyP:localhost:8800$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMTQe!HIZTeBCxvpMSpcqGVD:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kTQe!HIZTeBCxvpMSpcqGVD:localhost:8800$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUT Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4T Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQTQe!awHAhLuEkavTGACcUW:localhost:8800$pDZCc_muU7FZEV0l-bbrrkwShHurv9Zyg8JCphVzgAwTQe!awHAhLuEkavTGACcUW:localhost:8800$Ork2nbB51j5NApw3JOJldmCVNa3KzuiSvgtPW6Xp-iATQe!awHAhLuEkavTGACcUW:localhost:8800$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUTQe!awHAhLuEkavTGACcUW:localhost:8800$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoTQe!awHAhLuEkavTGACcUW:localhost:8800$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQTQe!awHAhLuEkavTGACcUW:localhost:8800$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wTQe!awHAhLuEkavTGACcUW:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMTQe!awHAhLuEkavTGACcUW:localhost:8800$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMTQe!OqPpVlCwmKdAUlwrXI:localhost:8800$GlYkfN6Wk8HA6D0yW_ILUHEvSnGFCe9qP87ETDxa4DATQe!OqPpVlCwmKdAUlwrXI:localhost:8800$VpPduyG1nYeJTivWXejIiiZrTsLpfFGft-gO5yZruPoT~Qe~!OqPpVlCwmKdAUlwrXI:localhost:8800$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsT}Qe}!OqPpVlCwmKdAUlwrXI:localhost:8800$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDET|Qe|!OqPpVlCwmKdAUlwrXI:localhost:8800$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAT{Qe{!OqPpVlCwmKdAUlwrXI:localhost:8800$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M  $eQ_$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 677}{"auth_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M", "$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA"], "type": "m.room.history_visibility", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040879416, "hashes": {"sha256": "5fjW3b3NNT9ctK4rlUWwL0NxHRs0O9OLGfOt7YcUduA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hEsveGbAl0R9+WzBncmbJTGwyu9q4pucYb01d9VZuhPpHCXlgdjM3nPKKW9K8hECVTtdSD3Fx45HcM7VAvNCDg"}}, "unsigned": {"age_ts": 1570040879416}}s#eQ_u$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 676}{"auth_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M", "$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M"], "type": "m.room.join_rules", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040878875, "hashes": {"sha256": "KRh25geEnHNjeBZP/4T2vQO+v2GqhnOgHCTArDqD24Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vql2HQ5d/KvuDT33e9NUFk4eCsxDCO2Ee2XDC7B6wlDRO74e9RanrkHfu12BXL5PLet0LuG3sqpjhHLZdz3DQ"}}, "unsigned": {"age_ts": 1570040878875}}j"eQ_c$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 675}{"auth_events": ["$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "type": "m.room.power_levels", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"users": {"@anon-20191002_181700-156:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040877900, "hashes": {"sha256": "1O5cyqzF0l6MNRq22D694F5qf/hAX6Ie19PIRp5bKbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GinTkAp4SVXX1uyfgWJcNtg7EMnqCiplQi3cPkNZbm7hfEpB2lapSwxA4ds+80+bQOvb1J27R8P5FVq6UbRDCA"}}, "unsigned": {"age_ts": 1570040877900}} P( g  z  c  v ' :MbT`(;e)x<O_o PkMz]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800Mx]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800My]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800Mv]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800Mu]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800Mt]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800Ms]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:88006r/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800Mq]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800Mp]Q@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800Mo]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88006n/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800Mm]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800Ml]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800Mk]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800Md]Q@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800Mc]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800Mb]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800Ma]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800M`]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800M^]Q@anon-20191002_181700-147:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800M]]Q@anon-20191002_181700-148:localhost:8829!GiSxJsKZhQVHBkrVPn:localhost:8800M\]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800M[]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800MZ]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800MY]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800MX]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800MW]Q@anon-20191002_181700-139:localhost:8829!WWZVpyLeZfyfpWidLx:localhost:8800*MV]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800MU]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800MT]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800MS]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800MR]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800MQ]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:88006j/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800Mi]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:88006h/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800Mg]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800Mf]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800Me]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800 7J J BB B  D  D  D  F FFHHJJ J ?]!@anon-20191002_181700-250:localhost:8800HLUDALFTVRm{$?]!@anon-20191002_181700-207:localhost:8800FTYKIESLCCm^?]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLVmw?]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDOm}?]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDHmR?]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIFm?]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJm/?]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFOm.?]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWPm ?]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGHm I?]!@anon-20191002_181700-212:localhost:8800RTYZTLKABNm]?]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSMmތ?]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDFm{=[!@anon-20191002_181700-20:localhost:8800MIHVANNPDDm[?]!@anon-20191002_181700-209:localhost:8800LYXETIOPNTm4?]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEYmCZ -RM H C > 9 4/*|%w rmhc TTQe!MlzmtUYSZOiByAZdKx:localhost:8800$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYTSQe!MlzmtUYSZOiByAZdKx:localhost:8800$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuITRQe!MlzmtUYSZOiByAZdKx:localhost:8800$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcTQQe!MlzmtUYSZOiByAZdKx:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMTPQe!MlzmtUYSZOiByAZdKx:localhost:8800$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8TOQe!WjlTCJVOFJkanCtkFE:localhost:8800$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacTNQe!WjlTCJVOFJkanCtkFE:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oTMQe!WjlTCJVOFJkanCtkFE:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oTLQe!WjlTCJVOFJkanCtkFE:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboTKQe!WjlTCJVOFJkanCtkFE:localhost:8800$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaITJQe!WjlTCJVOFJkanCtkFE:localhost:8800$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8TIQe!WjlTCJVOFJkanCtkFE:localhost:8800$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUTHQe!WjlTCJVOFJkanCtkFE:localhost:8800$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYTGQe!WjlTCJVOFJkanCtkFE:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0TFQe!WjlTCJVOFJkanCtkFE:localhost:8800$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMTEQe!aBCvSXjtZUEPlPGHvY:localhost:8800$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGATDQe!aBCvSXjtZUEPlPGHvY:localhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0TCQe!aBCvSXjtZUEPlPGHvY:localhost:8800$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0TBQe!aBCvSXjtZUEPlPGHvY:localhost:8800$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcTAQe!aBCvSXjtZUEPlPGHvY:localhost:8800$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvET@Qe!aBCvSXjtZUEPlPGHvY:localhost:8800$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUT?Qe!aBCvSXjtZUEPlPGHvY:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4T>Qe!aBCvSXjtZUEPlPGHvY:localhost:8800$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIT=Qe!IMiczgkCTjejbnbeyP:localhost:8800$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwT<Qe!IMiczgkCTjejbnbeyP:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgT;Qe!IMiczgkCTjejbnbeyP:localhost:8800$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIT:Qe!IMiczgkCTjejbnbeyP:localhost:8800$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUT9Qe!IMiczgkCTjejbnbeyP:localhost:8800$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIT8Qe!IMiczgkCTjejbnbeyP:localhost:8800$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMT7Qe!IMiczgkCTjejbnbeyP:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssT6Qe!IMiczgkCTjejbnbeyP:localhost:8800$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMT5Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kT4Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkT3Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwT2Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gT1Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUT0Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4T/Qe!HIZTeBCxvpMSpcqGVD:localhost:8800$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQT.Qe!awHAhLuEkavTGACcUW:localhost:8800$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUT-Qe!awHAhLuEkavTGACcUW:localhost:8800$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoT,Qe!awHAhLuEkavTGACcUW:localhost:8800$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQT+Qe!awHAhLuEkavTGACcUW:localhost:8800$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wT*Qe!awHAhLuEkavTGACcUW:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMT)Qe!awHAhLuEkavTGACcUW:localhost:8800$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQMT(Qe!OqPpVlCwmKdAUlwrXI:localhost:8800$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns 5 5u'eQ_y$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 680}{"auth_events": ["$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM"], "prev_events": ["$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM"], "type": "m.room.member", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-158", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-158:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040885244, "hashes": {"sha256": "QsmKgP4FLT+cWTUSfZ2DD7vQ3dYJPUrE7eJ7a/sKl+g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ilaxiIriUmGrQcJ5sZxtoT1ECUk7/0y8ux0bfFWwQM1f1SObq0rxMlAxzJ+0JUYDYfRgPhnwRKrIunt51CpGBQ"}}, "unsigned": {"age_ts": 1570040885244}}h&eQ__$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 679}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-158:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040884508, "hashes": {"sha256": "zjGAxJxgk0Bs1+MRWvL3qNenKAeidS2RwuBxLDAoXuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JAWqDZlv4bWTI8O8abB3VNj1S8WweJI6CUTQDVpk4E3Ob9/TMqtUzHCHRzKGOBt9vPxJZ1Nih5r5PTkcMymiDw"}}, "unsigned": {"age_ts": 1570040884508}}b%eQ_S$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800{"token_id": 180, "stream_ordering": 678}{"auth_events": ["$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M", "$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw", "$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE"], "prev_events": ["$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE"], "type": "m.room.third_party_invite", "room_id": "!OqPpVlCwmKdAUlwrXI:localhost:8800", "sender": "@anon-20191002_181700-156:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"key_validity_url": "https://localhost.localdomain:35155/_matrix/identity/v2/pubkey/isvalid", "public_key": "znqYscU5jX2zho8VfhRqUTh0bOlkv463JmNHQL7FiSU"}, {"key_validity_url": "https://localhost.localdomain:35155/_matrix/identity/v2/pubkey/isvalid", "public_key": "laOn5X9FA0X6yw9ikXXWGm96/ZYAt90UU5r6HPxZmEw"}], "key_validity_url": "https://localhost.localdomain:35155/_matrix/identity/v2/pubkey/isvalid", "public_key": "znqYscU5jX2zho8VfhRqUTh0bOlkv463JmNHQL7FiSU"}, "depth": 6, "prev_state": [], "state_key": "8", "origin": "localhost:8800", "origin_server_ts": 1570040882120, "hashes": {"sha256": "85jzFGr/NTqxMKQohdgvijRpfOhe1F4MnebR3UA/5Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WbCHC+kzWqHmDTGcH00+H9+8TVQ9cAZlO0uJFY7B/zqDFsBXxLXilXp29C+LRjUUT/vZNJ5Q46lcMGHFFBt8Ag"}}, "unsigned": {"age_ts": 1570040882120}} RGG"[2 f * G  {  - a % V k /o3h'n.2uy9?E f%9N ]@anon-20191002_181700-187:localhost:8800a&\#M 1@14:localhost:8800a&\'L 1  @13:localhost:8800m&\h>K ] @anon-20191002_181700-186:localhost:8800m&\ b9J ]@anon-20191002_181700-186:localhost:8800a&\#I 1@13:localhost:8800a&\>H ]  @anon-20191002_181700-185:localhost:8800m&\9G ]@anon-20191002_181700-185:localhost:8800a&\>F ]  @anon-20191002_181700-184:localhost:8800m&\9E ]@anon-20191002_181700-184:localhost:8800a&\>D ]  @anon-20191002_181700-183:localhost:8800m&\C9C ]@anon-20191002_181700-183:localhost:8800a&\>B ]  @anon-20191002_181700-182:localhost:8800m&\C9A ]@anon-20191002_181700-182:localhost:8800a&\>@ ]  @anon-20191002_181700-181:localhost:8800m&\69? ]@anon-20191002_181700-181:localhost:8800a&\=> ]  @anon-20191002_181700-179:localhost:8800m&\V>= ]  @anon-20191002_181700-178:localhost:8800m&\y9< ]@anon-20191002_181700-179:localhost:8800a&\9; ]@anon-20191002_181700-178:localhost:8800a&\@8 ]@anon-20191002_181700-176:localhost:8800m&\.a99 ]@anon-20191002_181700-177:localhost:8800a&\ =: ] @anon-20191002_181700-177:localhost:8800m&\V97 ]@anon-20191002_181700-176:localhost:8800a&\=6 ]  @anon-20191002_181700-175:localhost:8800m&\H>5 ]  @anon-20191002_181700-174:localhost:8800m&\C94 ]@anon-20191002_181700-175:localhost:8800a&\93 ]@anon-20191002_181700-174:localhost:8800a&\>2 ]  @anon-20191002_181700-173:localhost:8800m&\91 ]@anon-20191002_181700-173:localhost:8800a&\#0 1@12:localhost:8800a&\#/ 1@11:localhost:8800a&\@. ]@anon-20191002_181700-170:localhost:8800m&\4&9- ]@anon-20191002_181700-170:localhost:8800a&\@, ]@anon-20191002_181700-169:localhost:8800m&\@)9+ ]@anon-20191002_181700-169:localhost:8800a&\>* ]  @anon-20191002_181700-168:localhost:8800m&\C9) ]@anon-20191002_181700-168:localhost:8800a&\&( /  @8:localhost:8800m&\#' 1@10:localhost:8800a&\>% ]  @anon-20191002_181700-167:localhost:8800m&\C'" /@7:localhost:8800m&\a9$ ]@anon-20191002_181700-167:localhost:8800a&\"# /@8:localhost:8800a&\>! ]  @anon-20191002_181700-165:localhost:8800m&\ 9 ]@anon-20191002_181700-165:localhost:8800a&\' / @6:localhost:8800m&\" /@7:localhost:8800a&\"& /@9:localhost:8800a&\> ]  @anon-20191002_181700-164:localhost:8800m&\>9 ]@anon-20191002_181700-164:localhost:8800a&\" /@6:localhost:8800a&\' /@5:localhost:8800m&\_> ]  @anon-20191002_181700-163:localhost:8800m&\|9 ]@anon-20191002_181700-163:localhost:8800a&\" /@5:localhost:8800a&\> ]  @anon-20191002_181700-162:localhost:8800m&\9 ]@anon-20191002_181700-162:localhost:8800a&\" /@4:localhost:8800a&\' / @3:localhost:8800m&\> ]  @anon-20191002_181700-161:localhost:8800m&\>9 ]@anon-20191002_181700-161:localhost:8800a&\& /  @2:localhost:8800m&\"" /@3:localhost:8800a&\> ]  @anon-20191002_181700-160:localhost:8800m&\>9 ]@anon-20191002_181700-160:localhost:8800a&\" /@2:localhost:8800a&\" /@1:localhost:8800a&\> ]  @anon-20191002_181700-158:localhost:8800m&\&9 ]@anon-20191002_181700-159:localhost:8800a&\9 ]@anon-20191002_181700-158:localhost:8800a&\ Nd>|A  Y  s L  t M  a & u :b'c<x=yRzST-i.jC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV$1%@32:localhost:8800guest_device8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO$1% @31:localhost:8800guest_device8]! @anon-20191002_181700-204:localhost:8800HOFBXQYKDH$~1% @30:localhost:8800guest_device8}]! @anon-20191002_181700-203:localhost:8800UCNLRVNQIF$|1% @29:localhost:8800guest_device8{]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO$z1%@28:localhost:8800guest_device8y]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU$x1%@27:localhost:8800guest_device8w]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW$v1%@26:localhost:8800guest_device8u]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS$t1%@25:localhost:8800guest_device8s]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ$r1%@24:localhost:8800guest_device8q]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ$p1%@23:localhost:8800guest_device8o]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8n]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD$m1%@22:localhost:8800guest_device8l]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA$k1%@21:localhost:8800guest_device8j]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ$i1%@20:localhost:8800guest_device8h]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM$g1%@19:localhost:8800guest_device8f]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT$e1%@18:localhost:8800guest_device8d]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ$c1%@17:localhost:8800guest_device8b]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ$a1%@16:localhost:8800guest_device8`]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB$_1%@15:localhost:8800guest_device8^]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF$]1%@14:localhost:8800guest_device8\]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN$[1%@13:localhost:8800guest_device8Z]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8Y]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8X]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8W]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8V]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH8U]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8T]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8S]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8R]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8Q]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8P]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8O]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY$N1%@12:localhost:8800guest_device$M1%@11:localhost:8800guest_device8L]!@anon-20191002_181700-170:localhost:8800SULWIONTNX8K]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8J]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW$I1%@10:localhost:8800guest_device#H/%@9:localhost:8800guest_device!G/!@8:localhost:8800SPYUTHBEKD8F]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ#E/%@8:localhost:8800guest_device8D]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE#C/%@7:localhost:8800guest_device8B]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ#A/%@6:localhost:8800guest_device8@]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL#?/%@5:localhost:8800guest_device8>]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF#=/%@4:localhost:8800guest_device8<]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN#;/%@3:localhost:8800guest_device8:]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD#9/%@2:localhost:8800guest_device#8/%@1:localhost:8800guest_device87]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN86]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV /]|o- X ]  > Ck$|:Vaa3eQ' $7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800m.room.createn2eQ?$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite8m1eQ? $XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibilitye0eQ/ $SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rulesg/eQ3 $VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels .eQ']$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800joina-eQ' $8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.createaGeQ' $ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.createvFeQ'/$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800joingEeQ3 $_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_accessmDeQ? $2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibilityeCeQ/ $p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rulesgBeQ3 $jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels AeQ']$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800joina@eQ' $kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800m.room.createv?eQ'/$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800joing>eQ3 $_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.guest_accessm=eQ? $Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.history_visibilitye<eQ/ $h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rulesg;eQ3 $RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels :eQ']$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800joina9eQ' $DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.createn8eQ?$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite9m7eQ? $rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibilitye6eQ/ $Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800m.room.join_rulesg5eQ3 $G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels 4eQ']$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:8800join  *eQ_$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 683}{"auth_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w", "$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ"], "type": "m.room.history_visibility", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040887805, "hashes": {"sha256": "rr0agqRLl0hJOkYV9yxjgkD3sYn3C3TS4YKHBURaAxA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "92ZQ00O7hphFgOlxqjlElh1le11w2hvqGvSbpmUwEa75yHu2gvLLg2YsZ9i7ETu6OrYvV39u16asaGqDav/4CQ"}}, "unsigned": {"age_ts": 1570040887805}}s)eQ_u$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 682}{"auth_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w", "$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w"], "type": "m.room.join_rules", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040887190, "hashes": {"sha256": "UkG0gTyr8XyjGpoEBUJd6a2/KeO+umxzsijj8vzAXpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XynP6mcvdXltKZnoktP8Fkjd10yibUOP7vuuklUo+HFEsnegsbJff8GF05D2pqIolDuk3BvO8MtAlsJi53/NAg"}}, "unsigned": {"age_ts": 1570040887190}}j(eQ_c$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 681}{"auth_events": ["$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "type": "m.room.power_levels", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"users": {"@anon-20191002_181700-158:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040886123, "hashes": {"sha256": "rVwzE2ayxWM19M6zwVL1SSw78iEdJDXO9C+sCLgNF0k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gOlu5y7AM3DEfhP8u2sunuG26yqav1OjKKNfjTTEz7QrM3vc6MoyQiDZBLawCwS5umZyuDFK5wnfhHl+YX9ZCg"}}, "unsigned": {"age_ts": 1570040886123}} ~z v r n j fb^ZVRNJF{eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800zeeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!WjlTCJVOFJkanCtkFE:localhost:8800yeeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800xeeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800weeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800veeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800ueeQ$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800teeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800seeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800reeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800qeeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800peeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800oeeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800neeQ$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800meeQ$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800leeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800keeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800jeeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800ieeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800heeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800geeQ$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800feeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800eeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800deeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800ceeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800beeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800aeeQ$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800`eeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800_eeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800^eeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800 e*gN5pH Y2 mE m E   W /  jkC B  z R *  b : rJ"Z2 kDY2 kC'Q!CKNftKKCaOCVUyYWNY:localhost:8800{3!11:localhost:4245503!10:localhost:42455.'Q!DSFBpkqfnvBQbGoMUK:localhost:8800''Q!DSFBpkqfnvBQbGoMUK:localhost:8800&1!9:localhost:42455,1!9:localhost:42455-3!10:localhost:42455/3!11:localhost:424551'Q!CAGaRyRvrohDRBsrWH:localhost:8800q'Q!BPNyKqmwcpGxIbGFZG:localhost:8800h'Q!BPNyKqmwcpGxIbGFZG:localhost:8800g'Q!BKZJsoFNhiLTDYNclB:localhost:8800Z'Q!BKZJsoFNhiLTDYNclB:localhost:8800Y'Q!ELBgBaMSIMNkjFSumH:localhost:8800|'Q!ABHbfUdkHCJksMsaUt:localhost:8800K'Q!DntdfAPfCfgdOoRMdl:localhost:8800J3!13:localhost:4245593!13:localhost:4245583!13:localhost:4245573!12:localhost:4245563!12:localhost:4245553!11:localhost:424552x'Q!HXfrGcvJCbRItyQLVE:localhost:8800V'Q!HXfrGcvJCbRItyQLVE:localhost:8800U'Q!HXfrGcvJCbRItyQLVE:localhost:8800T'Q!HWTlaNxUKnDsrtlOxU:localhost:88001'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800h&Q!HIZTeBCxvpMSpcqGVD:localhost:8800g&Q!GwXGurbyEmykmmHcHJ:localhost:8800K'Q!GwLdUoDplyVUogXDzu:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800^&Q!GiSxJsKZhQVHBkrVPn:localhost:8800]&Q!GiSxJsKZhQVHBkrVPn:localhost:8800\&Q!GgUNbVXspVTpOlaHBl:localhost:8800C'Q!GGXyLHdVXqhQjPRvac:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800 'Q!EWkoFeckhXlNyjuIEB:localhost:8800 'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800%'Q!DnUHoxreGexNmjSVpq:localhost:8800$'Q!CkNvQnbApPIcuKygDk:localhost:8800"&Q!CgVBWWcRJoHEcwoLcq:localhost:8800I&Q!CQKLQUpSYakhxVDltC:localhost:8800M&Q!CQKLQUpSYakhxVDltC:localhost:8800L'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800H'Q!BpTqIemsWFZIqTcgJO:localhost:8800P'Q!BpTqIemsWFZIqTcgJO:localhost:8800O'Q!BpTqIemsWFZIqTcgJO:localhost:8800N'Q!BoyzlWNkRPncpDjBDg:localhost:8800G&Q!BkzROHxDAfKIzYpmPV:localhost:8800Y&Q!BkzROHxDAfKIzYpmPV:localhost:8800X'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800~&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800&Q!AjjrNwXmPTCruHxaJq:localhost:8800[&Q!AjjrNwXmPTCruHxaJq:localhost:8800Z'Q!AYFqrmxwClFQlcTTYq:localhost:8800&Q!AWfbViAZparIjmDaVT:localhost:8800&'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800\'Q!AMLmLqizBFklpqKibP:localhost:8800['Q!AMLmLqizBFklpqKibP:localhost:8800Z1!6:localhost:424551!6:localhost:424551!5:localhost:424551!5:localhost:424551!0:localhost:424551!0:localhost:42455 ^oG Y1 lE=`8pH! Z 3 e m E  } V /   g ?  x P ( -a:uN'_}UG'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800W'Q!KetCYFxrTxawNOGnOf:localhost:8800H'Q!KetCYFxrTxawNOGnOf:localhost:8800G'Q!JiUawCFQnodcpssOfK:localhost:8800F'Q!JiUawCFQnodcpssOfK:localhost:8800E'Q!NgkQVVUNzoyCVPtckM:localhost:8800D'Q!NgkQVVUNzoyCVPtckM:localhost:8800C'Q!PUIxAaiCnbqaVbawGu:localhost:8800@'Q!PUIxAaiCnbqaVbawGu:localhost:8800?'Q!OJilSqnQvLgoXSqRaW:localhost:8800>'Q!OJilSqnQvLgoXSqRaW:localhost:8800='Q!PVyTvKbqnjSXfGWAMy:localhost:8800:'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800j&Q!IMiczgkCTjejbnbeyP:localhost:8800i'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800*&Q!IGVHKYcSuxzVPlFHlj:localhost:8800)'Q!HusOrLtWZTLbmQZxmm:localhost:8800S'Q!HusOrLtWZTLbmQZxmm:localhost:8800R'Q!HusOrLtWZTLbmQZxmm:localhost:8800Q'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800H(&Q!HcMGemcRrLnLprOJJR:localhost:8800G'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800w'Q!IYxUkyFHOgvhLpdkOA:localhost:8800XP'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800&Q!OqPpVlCwmKdAUlwrXI:localhost:8800e&Q!OaCEdDAiatpwYcagUb:localhost:8800#&Q!OaCEdDAiatpwYcagUb:localhost:8800"&Q!OaCEdDAiatpwYcagUb:localhost:8800!'Q!OXpGdKbowFUTChPdmF:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800''Q!OCEHAjcOXWNyWIESIS:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800P'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800@'Q!NboFFVLpJHTeuUKCjM:localhost:8800!'Q!NboFFVLpJHTeuUKCjM:localhost:8800 'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800}'Q!MqstbCLZIQFiYNHrqR:localhost:8800|&Q!MlzmtUYSZOiByAZdKx:localhost:8800n&Q!MlzmtUYSZOiByAZdKx:localhost:8800m'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800-'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800x'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800&Q!JusxqeECtidaPlWqhp:localhost:8800c&Q!JusxqeECtidaPlWqhp:localhost:8800b'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800B'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800t'Q!IZkczIYykpZDvjuUWn:localhost:8800r 5 5u-eQ_y$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 686}{"auth_events": ["$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ"], "prev_events": ["$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ"], "type": "m.room.member", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-160", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-160:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040893805, "hashes": {"sha256": "YYzpPJ6Rh9pCwiLZS73suw4q9P6MwJ9kmmVd71dVAOE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T921j6dz3iumHqKb02sY+tjwuSraAy/o5qmbSXo/ygvf/MgHsqL4VOTg8AI1+tiDWPuE+lG6Petehb3/7++1BA"}}, "unsigned": {"age_ts": 1570040893805}}h,eQ__$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 685}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-160:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040892768, "hashes": {"sha256": "DE1nsBnjt6uE3FWN3w/zV/xqCPM8JHpo+NabjAIUM44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J0r0mvtthXpR/uehY8DPh0FEISx72qjcgAcqkK3yDET/7LsU/Nb6CnmShzR7DiESogQJg4O9mVSSHhOFW33wBQ"}}, "unsigned": {"age_ts": 1570040892768}}b+eQ_S$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800{"token_id": 182, "stream_ordering": 684}{"auth_events": ["$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w", "$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM", "$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM"], "prev_events": ["$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo"], "type": "m.room.third_party_invite", "room_id": "!awHAhLuEkavTGACcUW:localhost:8800", "sender": "@anon-20191002_181700-158:localhost:8800", "content": {"display_name": "Bob", "public_keys": [{"public_key": "s73MN4eaZx2KiDL6af1TGAQOQGZLP+BOL6yTDyNz8MM", "key_validity_url": "https://localhost.localdomain:43041/_matrix/identity/v2/pubkey/isvalid"}, {"public_key": "JWek1+rpJhGZjB4vSYETfkr2AEnsv1G5ZrIYtVijbR4", "key_validity_url": "https://localhost.localdomain:43041/_matrix/identity/v2/pubkey/isvalid"}], "key_validity_url": "https://localhost.localdomain:43041/_matrix/identity/v2/pubkey/isvalid", "public_key": "s73MN4eaZx2KiDL6af1TGAQOQGZLP+BOL6yTDyNz8MM"}, "depth": 6, "prev_state": [], "state_key": "9", "origin": "localhost:8800", "origin_server_ts": 1570040889027, "hashes": {"sha256": "XGWP9BVnc3zT07sAeV8bwAhEenLyE9xsA0qZcjg+7Pw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8UaeFb9oJKincuxT+OUR+pXwzjesIZ34wlpLhXV+09/VKjqnDPvtJkSpyi0yh7tgY91ks7hgq6UjsYtECmf8Ag"}}, "unsigned": {"age_ts": 1570040889027}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1ue$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81te$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1se$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1re$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1qe$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1pe$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1oe$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1ne$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41me$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1le$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1ke$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1je$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko1ie$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1he$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1ge$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1fe$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81ee$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81de$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1ce$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41be$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1ae$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1`e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1_e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41^e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1]e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1\e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41[e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1Ze$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1Ye$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01Xe$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1We$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1Ve$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1Ue$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1Te$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1Se$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1Re$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1Qe$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1Pe$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1Oe$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1Ne$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1Me$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1Le$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81Ke$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1Je$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1Ie$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1He$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1Ge$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81Fe$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1Ee$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1De$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01Ce$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM1Be$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1Ae$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01@e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01?e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1>e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1=e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1<e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41;e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1:e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw19e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg18e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI17e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU16e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII15e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM14e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss13e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM12e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k11e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk10e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1/e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1.e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1-e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41,e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1+e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU 9 p a  I8qUC9 e]]Q=$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM@anon-20191002_181700-170:localhost:8800@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800joinanon-20191002_181700-170C8 e]]Q=$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60@anon-20191002_181700-170:localhost:8800@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800joinanon-20191002_181700-170C7 e]]Q=$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800joinanon-20191002_181700-169C6 e]]Q=$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800joinanon-20191002_181700-169C5 e]]Q=$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800joinanon-20191002_181700-169C4 e]]Q=$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs@anon-20191002_181700-168:localhost:8800@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800joinanon-20191002_181700-168~3 e//Q$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8@8:localhost:8800@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800join8C2 e]]Q=$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y@anon-20191002_181700-167:localhost:8800@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800joinanon-20191002_181700-167~1 e//Q$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4@7:localhost:8800@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800leave~0 e//Q$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg@7:localhost:8800@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800join7C/ e]]Q=$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM@anon-20191002_181700-166:localhost:8829@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800joinanon-20191002_181700-166C. e]]Q=$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU@anon-20191002_181700-165:localhost:8800@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800joinanon-20191002_181700-165- e//Q$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg@6:localhost:8800@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800joincreeper~, e//Q$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog@6:localhost:8800@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800join6C+ e]]Q=$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM@anon-20191002_181700-164:localhost:8800@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800joinanon-20191002_181700-164~* e//Q$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o@5:localhost:8800@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800leave~) e//Q$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo@5:localhost:8800@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800join5C( e]]Q=$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0@anon-20191002_181700-163:localhost:8800@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800joinanon-20191002_181700-163C' e]]Q=$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4@anon-20191002_181700-162:localhost:8800@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800joinanon-20191002_181700-162~& e//Q$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg@3:localhost:8800@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800join3C% e]]Q=$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss@anon-20191002_181700-161:localhost:8800@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800joinanon-20191002_181700-161~$ e//Q$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k@2:localhost:8800@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800join2C# e]]Q=$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4@anon-20191002_181700-160:localhost:8800@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800joinanon-20191002_181700-160  z1eQ_$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 690}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw"], "type": "m.room.guest_access", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040897323, "hashes": {"sha256": "R/APGo6JRIdcMx1A/sOOHI0yEE8DN8buur/ST8YFfNg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPpsnMLox3FrMfId98Bt9RfC/hGtUj1pA6pbEK8bXb9MXZc5th6usHjR8MjfjyEd/a4gaaw7siikKtbzVQ4LDQ"}}, "unsigned": {"age_ts": 1570040897323}}0eQ_$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 689}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g"], "type": "m.room.history_visibility", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040896265, "hashes": {"sha256": "jyWzlqV38CnPrTRjwwFCJU2Tr5rfMdMa2FUbF8ldsDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uNuf8yEkHLvaAqNS1dv3q797ekNyWliJfbU9b7O9HxpTR2cGEsuP6Tu8do+3E9BX/i9NPAFBwLYt8yHlmWx3AQ"}}, "unsigned": {"age_ts": 1570040896265}}s/eQ_u$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 688}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU"], "type": "m.room.join_rules", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040895330, "hashes": {"sha256": "AuxGMlU9I+ATGpMUnqRHA1ooQx/MCrP5a3siu4hJIAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UVFesMJYil3zqB0amAHaZrEe/QysxCkp0zCEXPweSWQgipdT4azuOl3QrAMIIyCpNkBytzSjAnSi4w4VbGxQAQ"}}, "unsigned": {"age_ts": 1570040895330}}j.eQ_c$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800{"token_id": 184, "stream_ordering": 687}{"auth_events": ["$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "prev_events": ["$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4"], "type": "m.room.power_levels", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@anon-20191002_181700-160:localhost:8800", "content": {"users": {"@anon-20191002_181700-160:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040894616, "hashes": {"sha256": "lRCZinzImwNU4xKh7Qqbx/gO7DhBBHU1cvumFVK1sIg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W3qBH64TBxrITRFjvvF8VI9SdFmE5Ea6ovquFu08DfVobx6sMVfwo8vhP3yDe9gngnr3Lez9T7vvENjsSIQrDQ"}}, "unsigned": {"age_ts": 1570040894616}}  t dTD ]c!E@anon-20191002_181700-164:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgoGPCCYGLLRJ127.0.0.1Perl + Net::Async::HTTP/0.44mEx /]%E@5:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAyMDFPRDZYNmhzJiZkai53CjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgPZ5hdnk3FstSSp8kf0DgtiUvX3xsJfAkKe2wDarudX8Kguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m8 ]c!E@anon-20191002_181700-163:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgoIWJPSDUPWL127.0.0.1Perl + Net::Async::HTTP/0.44m'x /]%E@4:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBWZzZraVB-XnJ1emI9TC5ACjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUg5NsSLwWAfmVU5_yZd-FdLBRssM7Om4a05_zqOuOY1ycKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m"]c!E@anon-20191002_181700-162:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwoPCGWJXGQXF127.0.0.1Perl + Net::Async::HTTP/0.44m x/]%E@3:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDM6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzSzhKUV4mcUtASkBCYUhsCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgrveDuRq97DeRCmk50DpZAFTVqh_77ueJH23PsBB8K3cKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mŃ]c!E@anon-20191002_181700-161:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgoEYZNWDJKKN127.0.0.1Perl + Net::Async::HTTP/0.44m詂x/]%E@2:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDI6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBoWWlYb2h1R2kqN1crQjUxCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgHpgk2vQ0DD-k7UWviF0jEnMlkDFqd-Xn_UAauehqWo8Kguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m޵]c!E@anon-20191002_181700-160:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8tcysjVzpMU2hDZkFtRFAKMDAyZnNpZ25hdHVyZSC4NNRgd2a82KskTGUCUVHHGwH9mWw_jDiHcDWSk_PRcgoRSEHRUSFUD127.0.0.1Perl + Net::Async::HTTP/0.44mx/]%E@1:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDE6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBILWZqUE89REFCbywjQVVDCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUg8ZO9wx6wxEiQt9dWUnClqLyWpIT77ZqZu670k0ka4MQKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mȫ H_j8q? w F  ~ L  ' R  X & _ -3Yl:_r@xF~LS!1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 z1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig y1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU P1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs 41e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprky1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw\1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk31e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ61e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Sot21e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQu1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30sle21e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc C1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8}0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAY1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT801e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA 21e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAF1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4 1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4{1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xsg1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wH1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 61e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw=1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s00e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgc1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E`1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0M1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun40e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo[1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 K1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IB1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I Q1hXH8(l C W  h x(x^ ^ k x ' 4 O]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800~O]Q@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800}O]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800QN[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800O]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800uP]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800P]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800P]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800O]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800eO]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800fO]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800gO]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800iO]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800lO]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800kO]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800oO]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800mO]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800qO]Q@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800pO]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800tO]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800vO]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800sO]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800|O]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800{O]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800zO]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800yO]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800xN[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800M[Q @anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800P]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800P]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800P]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800P]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800P]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800P]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800P]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800P]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800P]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800P]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800P]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800P]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800P]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800P]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800 a} { y w u sqomkigeca~eeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~ eeQ$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~ eeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800~ eeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~ eeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~ eeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800~eeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~~eeQ$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800~}eeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g!HIZTeBCxvpMSpcqGVD:localhost:8800~|eeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~{eeQ$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~zeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~yeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800~xeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800~weeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800~veeQ$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800  l j5eQ_c$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 694}{"auth_events": ["$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "type": "m.room.power_levels", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"users": {"@anon-20191002_181700-161:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040901607, "hashes": {"sha256": "wqMXNggXtobrEHMT9PkWZayLs/1GK4Rr4o9wl7EHI+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njL2TvVAXq3FUELdSJRhluKN5kLDE44OuQHDOcFEKSAqd1chu13kGxeW0bIImtjnZ7WBPt6nXAvUNYnThVQ0DA"}}, "unsigned": {"age_ts": 1570040901607}}u4eQ_y$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 693}{"auth_events": ["$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM"], "prev_events": ["$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM"], "type": "m.room.member", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-161", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-161:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040901003, "hashes": {"sha256": "e13x+TA2L6Gsmy4y3YnqUaxHoqmHk3b3Bcw7lYVcY/I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DcG/DRgYs1Gqw/+eW+vnyOwdRBMbAnbY4zwTsbI+0KoPni2E6tBhfehbvPw07tTMyaAbMEmZqkKt2PVJqD6jDA"}}, "unsigned": {"age_ts": 1570040901003}}h3eQ__$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 692}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-161:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040899843, "hashes": {"sha256": "V1Czhl+b4jOhUuNJhkv5BrH8V+SbcDkIpIdKXeKNjAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M0B9vtGoLaHK3XTvyxdvjvtwzFqOt5TRBgZIje3MaN0VPNTTIzpElKWIbzfvlV3AUij/AohsT9Y3BIzaxYv0Bg"}}, "unsigned": {"age_ts": 1570040899843}}2eQ=Q$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7k!HIZTeBCxvpMSpcqGVD:localhost:8800{"stream_ordering": 691}{"auth_events": ["$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU", "$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ", "$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g"], "prev_events": ["$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk"], "type": "m.room.member", "room_id": "!HIZTeBCxvpMSpcqGVD:localhost:8800", "sender": "@2:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "2", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@2:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040898168, "hashes": {"sha256": "WDK4VOYhi8rk98qsnXmVjviVcjneETOelYGMFQtVWWc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7pSwcOu5APy7nDv1qZUw4AoZSCGv3gutjii+aKju3+94SDCowq1WoMaxQGWf0GWK9H2yQlV8FNDi+x6arzb/CQ"}}, "unsigned": {"age_ts": 1570040898168}} gL_-  GSMs vm;'  P  | J5 D! VYA % a /jp>  8yg1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwA1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI 1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A41e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA 1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoi1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoh1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnog1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A41e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQT1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0G1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8j1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8i1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI 1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQU1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwB 21e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0H1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4g0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4f0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4e0e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQF0e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQE1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYI1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYH1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYG1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8k1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw=1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw<1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw;1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQE1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQD1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwC1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M21e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA 1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQj1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcQ1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQF1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIJ1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ G1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQk  d \u $ T LD< 4, m}eeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0!SyIWYOmcGiASNkPCTB:localhost:8800 eeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q!kkgEEVUJynguTqAoWD:localhost:8800zeeQ$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800eeQ$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs!JusxqeECtidaPlWqhp:localhost:8800NeeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8!bkwyieHZwSMJfuSKvV:localhost:8800ՁeeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800eeQ$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800݁eeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800eeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800ԁeeQ$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800qeeQ$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800eeQ$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800ceeQ$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800eeQ$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800ԁeeQ$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800 ɁeeQ$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800 &eeQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800eeQ$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE!kkgEEVUJynguTqAoWD:localhost:8800| -RM H C > 9 4/*|%w rmhc TTQe!UyLoIXmzVFwycmBUeh:localhost:8800$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDoTSQe!lAGTcYIuMBXsVRGCOe:localhost:8800$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60QTRQe!WVzjUePHrzCjfyTbmK:localhost:8800$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8TQQe!UyLoIXmzVFwycmBUeh:localhost:8800$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMTPQe!lAGTcYIuMBXsVRGCOe:localhost:8800$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUTOQe!WVzjUePHrzCjfyTbmK:localhost:8800$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8ETNQe!WVzjUePHrzCjfyTbmK:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosTMQe!lAGTcYIuMBXsVRGCOe:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwITLQe!UyLoIXmzVFwycmBUeh:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgTKQe!WVzjUePHrzCjfyTbmK:localhost:8800$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4TJQe!lAGTcYIuMBXsVRGCOe:localhost:8800$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wTIQe!UyLoIXmzVFwycmBUeh:localhost:8800$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQTHQe!nteAxExBGJfaGIpuCx:localhost:8800$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0oTGQe!nteAxExBGJfaGIpuCx:localhost:8800$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkoTFQe!nteAxExBGJfaGIpuCx:localhost:8800$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tETEQe!nteAxExBGJfaGIpuCx:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsTDQe!nteAxExBGJfaGIpuCx:localhost:8800$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksTCQe!itKDOCtoMkFUETDtle:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8TBQe!itKDOCtoMkFUETDtle:localhost:8800$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8TAQe!itKDOCtoMkFUETDtle:localhost:8800$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukT@Qe!itKDOCtoMkFUETDtle:localhost:8800$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4T?Qe!itKDOCtoMkFUETDtle:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YT>Qe!itKDOCtoMkFUETDtle:localhost:8800$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYT=Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4T<Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYT;Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgT:Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoT9Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4T8Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMT7Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$CF04RdjpJ7K-mLsJyANRCJNCr6Jg55SLV1iHydG6OyUT6Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYT5Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0T4Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_MT3Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUT2Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQT1Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUT0Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwT/Qe!MlzmtUYSZOiByAZdKx:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgT.Qe!MlzmtUYSZOiByAZdKx:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogT-Qe!MlzmtUYSZOiByAZdKx:localhost:8800$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scT,Qe!MlzmtUYSZOiByAZdKx:localhost:8800$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYT+Qe!MlzmtUYSZOiByAZdKx:localhost:8800$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIT*Qe!MlzmtUYSZOiByAZdKx:localhost:8800$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcT)Qe!MlzmtUYSZOiByAZdKx:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMT(Qe!MlzmtUYSZOiByAZdKx:localhost:8800$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8 ]j9X># s X ' 1 c m < s X ' t C (_D{J/fKg6R!],h7sB.] @anon-20191002_181700-226:localhost:8800g.]@anon-20191002_181700-225:localhost:8800`.] @anon-20191002_181700-224:localhost:8800a.]@anon-20191002_181700-223:localhost:8800Y.] @anon-20191002_181700-222:localhost:8800Z.]@anon-20191002_181700-221:localhost:8800R.] @anon-20191002_181700-220:localhost:8800S.]@anon-20191002_181700-219:localhost:8800M.] @anon-20191002_181700-218:localhost:8800M.~] @anon-20191002_181700-217:localhost:8800L.}] @anon-20191002_181700-216:localhost:8800C.|] @anon-20191002_181700-215:localhost:8800B.{] @anon-20191002_181700-214:localhost:88008.z] @anon-20191002_181700-213:localhost:88007.y] @anon-20191002_181700-212:localhost:8800-.x] @anon-20191002_181700-211:localhost:8800,.w] @anon-20191002_181700-209:localhost:8800#.v]@anon-20191002_181700-210:localhost:8800.u] @anon-20191002_181700-208:localhost:8800t1 @34:localhost:8800.s] @anon-20191002_181700-207:localhost:8800r1 @33:localhost:8800.q] @anon-20191002_181700-206:localhost:8800p1 @32:localhost:8800.o] @anon-20191002_181700-205:localhost:8800n1 @31:localhost:8800.m] @anon-20191002_181700-204:localhost:8800l1 @30:localhost:8800.k] @anon-20191002_181700-203:localhost:8800j1@29:localhost:8800.i] @anon-20191002_181700-202:localhost:8800h1@28:localhost:8800.g] @anon-20191002_181700-201:localhost:8800f1@27:localhost:8800.e] @anon-20191002_181700-200:localhost:8800d1@26:localhost:8800.c] @anon-20191002_181700-199:localhost:8800b1@25:localhost:8800.a] @anon-20191002_181700-198:localhost:8800`1@24:localhost:8800._] @anon-20191002_181700-197:localhost:8800^1@23:localhost:8800.]]@anon-20191002_181700-196:localhost:8800.\] @anon-20191002_181700-195:localhost:8800[1@22:localhost:8800.Z] @anon-20191002_181700-194:localhost:8800Y1@21:localhost:8800.X] @anon-20191002_181700-193:localhost:8800W1@20:localhost:8800.V] @anon-20191002_181700-192:localhost:8800U1@19:localhost:8800.T] @anon-20191002_181700-191:localhost:8800S1@18:localhost:8800.R] @anon-20191002_181700-190:localhost:8800Q1 @17:localhost:8800.P] @anon-20191002_181700-189:localhost:8800O1 @16:localhost:8800.N] @anon-20191002_181700-188:localhost:8800tM1 @15:localhost:8800u.L] @anon-20191002_181700-187:localhost:8800iK1 @14:localhost:8800j.J] @anon-20191002_181700-186:localhost:8800_I1 @13:localhost:8800`.H] @anon-20191002_181700-185:localhost:8800U.G] @anon-20191002_181700-184:localhost:8800O.F] @anon-20191002_181700-183:localhost:8800I.E] @anon-20191002_181700-182:localhost:8800D.D] @anon-20191002_181700-181:localhost:8800?.C] @anon-20191002_181700-179:localhost:88009/@]@anon-20191002_181700-176:localhost:88000.A]@anon-20191002_181700-177:localhost:88000.B] @anon-20191002_181700-178:localhost:88007.?] @anon-20191002_181700-175:localhost:8800 .>] @anon-20191002_181700-174:localhost:8800.=] @anon-20191002_181700-173:localhost:8800<1@12:localhost:8800;1@11:localhost:8800/:]@anon-20191002_181700-170:localhost:8800/9]@anon-20191002_181700-169:localhost:8800.8] @anon-20191002_181700-168:localhost:880071@10:localhost:88006/@9:localhost:8800.5] @anon-20191002_181700-167:localhost:88004/ @8:localhost:8800.3] @anon-20191002_181700-165:localhost:88002/@7:localhost:8800.1] @anon-20191002_181700-164:localhost:88000/ @6:localhost:8800./] @anon-20191002_181700-163:localhost:8800./@5:localhost:8800.-] @anon-20191002_181700-162:localhost:8800,/@4:localhost:8800.+] @anon-20191002_181700-161:localhost:8800  * T~Isg:]!c@anon-20191002_181700-173:localhost:8800HMAAIYSKTYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAog9]!c@anon-20191002_181700-170:localhost:8800SULWIONTNXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwog8]!c@anon-20191002_181700-169:localhost:8800MFKRKTWRFRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAog7]!c@anon-20191002_181700-168:localhost:8800LFMVYJKZWWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9wo16/!%@8:localhost:8800SPYUTHBEKDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6NDg4WTJ5QVRXUGk5QXZKCjAwMmZzaWduYXR1cmUgvLzn0wH0-sfnWpaRwSxJHZ0wtTVPh2Z7w5K2gN3eocoKg5]!c@anon-20191002_181700-167:localhost:8800CZRBBMXBTZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwog4]!c@anon-20191002_181700-165:localhost:8800YDADSUNIXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgog3]!c@anon-20191002_181700-164:localhost:8800GPCCYGLLRJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlhMHdyNTprQ09mSm4ub1EKMDAyZnNpZ25hdHVyZSBrJoZEu1ErsjAmlIiPMPPA25wwKmhIiAidkbNYAFPsGgog2]!c@anon-20191002_181700-163:localhost:8800IWJPSDUPWLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdDNEFkWS0yNFBFazp4dFoKMDAyZnNpZ25hdHVyZSDxPLR9viFgoVlLdtuvMwQordF8y2jBF5Kzi9gL21PNJgog1]!c@anon-20191002_181700-162:localhost:8800PCGWJXGQXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4Z2JsLktCQjFzN1J-VT0KMDAyZnNpZ25hdHVyZSDf8m84nURkbFOgZ8YN8TKH3wWsaSK_zKS3xzoHAm4vHwog0]!c@anon-20191002_181700-161:localhost:8800EYZNWDJKKNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRtT3BzaWdTRkpkQGdPUkgKMDAyZnNpZ25hdHVyZSBn_OoFQ1lEMjzOdUGBzu9lUjA99QKD2UiWZt_LkvCNwgo 'OgmB # oDqF H  % T<k@ P y e: L ! u J  s { i>) w Nc8 mB g*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SfYtaUhCFosNfHfUVm:localhost:8800nt*Q!SfYtaUhCFosNfHfUVm:localhost:8800ms*Q!SfYtaUhCFosNfHfUVm:localhost:8800kq*Q!SfYtaUhCFosNfHfUVm:localhost:8800io*Q!SfYtaUhCFosNfHfUVm:localhost:8800gm*Q!RmdhCjvouVLmyIHjaM:localhost:8800EE*Q!RmdhCjvouVLmyIHjaM:localhost:8800DD*Q!RmdhCjvouVLmyIHjaM:localhost:8800CC*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!RmdhCjvouVLmyIHjaM:localhost:8800HH*Q!RmdhCjvouVLmyIHjaM:localhost:8800GG*Q!RmdhCjvouVLmyIHjaM:localhost:8800FF*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!RmwbYvIIQyPlHlClty:localhost:8800w|*Q!RmdhCjvouVLmyIHjaM:localhost:8800II*Q!SBEprlZiuliFNSfNmz:localhost:8800mn*Q!RmwbYvIIQyPlHlClty:localhost:8800|*Q!RmwbYvIIQyPlHlClty:localhost:8800{*Q!SpXEytywhTbAftyVBr:localhost:88005'*Q!SBEprlZiuliFNSfNmz:localhost:8800rs*Q!SBEprlZiuliFNSfNmz:localhost:8800qr*Q!SBEprlZiuliFNSfNmz:localhost:8800pq*Q!SBEprlZiuliFNSfNmz:localhost:8800op*Q!SBEprlZiuliFNSfNmz:localhost:8800no*Q!SfYtaUhCFosNfHfUVm:localhost:8800ek*Q!SfYtaUhCFosNfHfUVm:localhost:8800ci*Q!SBEprlZiuliFNSfNmz:localhost:8800tv*Q!SBEprlZiuliFNSfNmz:localhost:8800su*Q!SBEprlZiuliFNSfNmz:localhost:8800st*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!RmwbYvIIQyPlHlClty:localhost:8800y~*Q!RmwbYvIIQyPlHlClty:localhost:8800x}*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SpXEytywhTbAftyVBr:localhost:88007)*Q!SpXEytywhTbAftyVBr:localhost:88008**Q!RmwbYvIIQyPlHlClty:localhost:8800z*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SpXEytywhTbAftyVBr:localhost:88006(*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SpXEytywhTbAftyVBr:localhost:88009+*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 V   6 n c]c@anon-20191002_181700-132:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHd0RTYyWjlKdG4uJmw1YW4KMDAyZnNpZ25hdHVyZSCB6p1eShPszX4ttcTUuR9oDFUTJiIOkOIr6y4ZOVtJlQo127.0.0.1pc]c@anon-20191002_181700-131:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtHeVFUQ01FPW9EbCNJeEcKMDAyZnNpZ25hdHVyZSDtImlITxPrSqgWTbVL8OoB8fyb7GX7-N0G16iVKgAvcwo127.0.0.1oa[a@anon-20191002_181700-12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRnJeYzJ0azVeQDNqQUh-bgowMDJmc2lnbmF0dXJlIPCUjObIsEaTF4meVm4W7L1Hg0mjZF3oXRPhc9fkljhXCg127.0.0.1 c]c@anon-20191002_181700-129:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNwNUozel5EZiZmWSpoQDMKMDAyZnNpZ25hdHVyZSCJ85nOEByknbJtTihDAZeSEPOdVZLLHCvwAEyEkAvxqAo127.0.0.1nc]c@anon-20191002_181700-128:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1oPUA1PXhETjN5b2RqZlAKMDAyZnNpZ25hdHVyZSDRmSp8H3rEfSqkMcJFTc0-PCsPLYDmf2yKRXZy1KdNkgo127.0.0.1m j 4 h 6jd]c@anon-20191002_181700-188:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAjPUM3bmpqTndOZnYrMUoKMDAyZnNpZ25hdHVyZSC_kz-E8YmMBNcAclPvn3n3UpiiaFAKSaPlBkz2lbFOAQo127.0.0.1d]c@anon-20191002_181700-187:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZHK005MFlxMkksc35acnoKMDAyZnNpZ25hdHVyZSB77-Jon2mI9xbF7QXvmsgb-UWL0tcYtDp9oWaY2oeTbQo127.0.0.1d]c@anon-20191002_181700-186:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG00TmlBRUNYaklfIzUxQy0KMDAyZnNpZ25hdHVyZSAhw-vznghM1qodIeuqnym4f7ESqx4RXazHU0ls-7TVmQo127.0.0.1d]c@anon-20191002_181700-185:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwo127.0.0.1d]c@anon-20191002_181700-184:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1Qo127.0.0.1d]c@anon-20191002_181700-183:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1Ao127.0.0.1d]c@anon-20191002_181700-182:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4go127.0.0.1d]c@anon-20191002_181700-181:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswo127.0.0.1d]c@anon-20191002_181700-179:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQo127.0.0.1 [}>!A*BuR. Z = " d G , n Q 1  T 7  o X yQ:Zz]5\E~?iI. |' m.room.create' m.room.create>']zm.room.member@anon-20191002_181700-156:localhost:8800|' ym.room.create{>']xm.room.member@anon-20191002_181700-155:localhost:8800z>']wm.room.member@anon-20191002_181700-155:localhost:8800y#?vm.room.third_party_invite7x"? um.room.history_visibilityw/ tm.room.join_rulesv3 sm.room.power_levelsu>']rm.room.member@anon-20191002_181700-154:localhost:8800t' qm.room.creates' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-168:localhost:8800' m.room.create''/m.room.member@8:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-167:localhost:8800' m.room.create''/m.room.member@7:localhost:88003 m.room.guest_access''/m.room.member@7:localhost:88003 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-166:localhost:8829>']m.room.member@anon-20191002_181700-166:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-165:localhost:8800' m.room.create''/m.room.member@6:localhost:8800''/m.room.member@6:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-164:localhost:8800' m.room.create''/m.room.member@5:localhost:88003 m.room.guest_access''/m.room.member@5:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-163:localhost:8800' m.room.create"? m.room.history_visibility%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-162:localhost:8800' m.room.create''/m.room.member@3:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-161:localhost:8800' m.room.create''/m.room.member@2:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-160:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-159:localhost:8800>']m.room.member@anon-20191002_181700-159:localhost:8800#?m.room.third_party_invite9"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-158:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-157:localhost:8800>']m.room.member@anon-20191002_181700-157:localhost:8800#?~m.room.third_party_invite8"? }m.room.history_visibility/ |m.room.join_rules~3 {m.room.power_levels} T % P ! u3} {R'X-/\1d9f; H w L y N # T)^Z b7`5  J  s 3 *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 x x*Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!ffijTnPMbTrDXHqOXf:localhost:8800cc*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fkvdYkesQOFCAQkzky:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 y y*Q!ffijTnPMbTrDXHqOXf:localhost:8800jj*Q!ffijTnPMbTrDXHqOXf:localhost:8800ii*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 { {*Q!fDISaqNBhlOwherxSt:localhost:8800 z z*Q!fkvdYkesQOFCAQkzky:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 | |*Q!ffijTnPMbTrDXHqOXf:localhost:8800ll*Q!ffijTnPMbTrDXHqOXf:localhost:8800kk*Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fsbkkRBZlUcBVVfMME:localhost:8800;;*Q!fsbkkRBZlUcBVVfMME:localhost:8800::*Q!fsbkkRBZlUcBVVfMME:localhost:880099*Q!fJXiUpbbOlLbHWmPgs:localhost:8800 =V*Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fkvdYkesQOFCAQkzky:localhost:8800  *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!ffijTnPMbTrDXHqOXf:localhost:8800dd*Q!fOJLpnbtgKNxxVDquX:localhost:8800ll*Q!fOJLpnbtgKNxxVDquX:localhost:8800kk*Q!fOJLpnbtgKNxxVDquX:localhost:8800jj*Q!fOJLpnbtgKNxxVDquX:localhost:8800ii*Q!fOJLpnbtgKNxxVDquX:localhost:8800hh*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fOJLpnbtgKNxxVDquX:localhost:8800nn*Q!fOJLpnbtgKNxxVDquX:localhost:8800mm*Q!fsbkkRBZlUcBVVfMME:localhost:8800>>*Q!fsbkkRBZlUcBVVfMME:localhost:8800==*Q!fsbkkRBZlUcBVVfMME:localhost:8800<< *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fuHSJcznvGQnoYoLPW:localhost:8800..*Q!fuHSJcznvGQnoYoLPW:localhost:8800--*Q!fuHSJcznvGQnoYoLPW:localhost:8800,,*Q!fuHSJcznvGQnoYoLPW:localhost:8800++*Q!fuHSJcznvGQnoYoLPW:localhost:8800***Q!fuHSJcznvGQnoYoLPW:localhost:8800))*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800 +*Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!fGkUEndqGrieltwbCh:localhost:8800  *Q!fGkUEndqGrieltwbCh:localhost:8800  *Q!fGkUEndqGrieltwbCh:localhost:8800  *Q!fGkUEndqGrieltwbCh:localhost:8800 *Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fGkUEndqGrieltwbCh:localhost:8800 *Q!fGkUEndqGrieltwbCh:localhost:8800 *Q!ffijTnPMbTrDXHqOXf:localhost:8800hh*Q!ffijTnPMbTrDXHqOXf:localhost:8800gg*Q!ffijTnPMbTrDXHqOXf:localhost:8800ff*Q!ffijTnPMbTrDXHqOXf:localhost:8800ee*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fdEymmlcUvjgshvVyl:localhost:8800 Mj8p> v D  | J  P 0T V $ \ *bh6n< tBzH"Z(NTd1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE 1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE 1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8m1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k}1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI 21e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI 11e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI 01e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550m1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550l1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Ud1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66IS1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ91e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ81e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ71e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ01e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ/1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ.1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUX1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUW1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUV1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUn1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUm1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUl1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA+1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA*1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd41e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd41e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd41e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE^ !Op% @ I l   x 6QCcFO Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUdQ' e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.create$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!Q'/ee!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826woguQ'/e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogjQ3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_access$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scpQ? e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibility$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYhQ/ e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rules$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIjQ3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc Q']e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMdQ' e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.create$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8Q3 ee!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!~Q'/ee!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbou}Q'/e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboj|Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIp{Q? e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibility$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8hzQ/ e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rules$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUjyQ3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY xQ']e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0dwQ' e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.create$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMvQ? ee!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0suQ))e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0ptQ? e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0hsQ/ e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rules$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcmrQ9 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_alias$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEjqQ3 e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU pQ']e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4doQ' e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.create$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIunQ'/e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgjmQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_access$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIplQ? e!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibility$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUhkQ/ e!IMiczgkCTjejbnbeyP:localhost:8800m.room.join_rules$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIjjQ3 e!IMiczgkCTjejbnbeyP:localhost:8800m.room.power_levels$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM iQ']e!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@anon-20191002_181700-161:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss #&M V  . = k=Lz +R[peQ))$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800m eQ? $OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibilitye eQ/ $2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rulesj eQ9 $l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_aliasg eQ3 $eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels eQ']$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800aeQ' $ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.createreQ'/$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800reQ'/$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800geQ3 $cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_accessmeQ? $BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibilityeeQ/ $rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rulesgeQ3 $nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels eQ']$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800aeQ' $4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800m.room.creategeQ3 $M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accessr~eQ'/$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800r}eQ'/$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800g|eQ3 $EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accessm{eQ? $FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibilityezeQ/ $5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rulesgyeQ3 $J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels xeQ']$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800aweQ' $pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800m.room.createmveQ? $qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilitypueQ))$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800mteQ? $VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilityeseQ/ $wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rulesjreQ9 $5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_aliasgqeQ3 $poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels peQ']$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800aoeQ' $ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.createrneQ'/$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800m.room.member@3:localhost:8800gmeQ3 $_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800m.room.guest_accessmleQ? $2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800m.room.history_visibility  9eQ=Q$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800{"stream_ordering": 698}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII"], "prev_events": ["$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI"], "type": "m.room.member", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@3:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "3", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@3:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040905373, "hashes": {"sha256": "OjrVnwo/ShMbMuHVCAY1Z+1eiEVbeyJODXcUvecZY9M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BZfEWpkEq4xOBqOOkL9/a+STSA+Dms/UVK2ZqzpALxTwjNuyaQhQ2V9ZiXxzs686v4RaX5zKsMr8zHauOW1jCg"}}, "unsigned": {"age_ts": 1570040905373}}z8eQ_$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 697}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU"], "type": "m.room.guest_access", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040904476, "hashes": {"sha256": "/EZxo+2GAfzeFkuiSx7AJmZoUwybyrAZwnD85vjMy3c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mc/QN82z3HFknIRSYh6Xbay9583jelIaotePdIT8FS7+INtgs7X1xrYDCwZDZ8GU66z5MKZy21GFWVKvkxoGAw"}}, "unsigned": {"age_ts": 1570040904476}}7eQ_$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVU!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 696}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII"], "type": "m.room.history_visibility", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040903116, "hashes": {"sha256": "xMzn6x+SirLy37sT/w9hXXFn2iOvHJcso6/JEhFeXWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D2mVTZtHimcpQslrhvA5OJptcd7s18pItRo5KvtlFg0qtCYjcb67yy80y7N2bMr1dRy6ploD4S3JQ0puX1UKAw"}}, "unsigned": {"age_ts": 1570040903116}}s6eQ_u$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII!IMiczgkCTjejbnbeyP:localhost:8800{"token_id": 185, "stream_ordering": 695}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss"], "prev_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM"], "type": "m.room.join_rules", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@anon-20191002_181700-161:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040902257, "hashes": {"sha256": "oTpcxpIPzu3ojtLTzsXkdGXVZkWzStyO5Cy5joGBshw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HVTX/tKckEWGgK6/J+7eVOAycRi/ev3nG7Byud6Xh27z/KVcMI4YMCkgkyjiHZn0XDrqasvy8wZWdHT7XXivBg"}}, "unsigned": {"age_ts": 1570040902257}} sC H K USCM,Qe?Q ]$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYm.room.history_visibility!MlzmtUYSZOiByAZdKx:localhost:8800mRmT@anon-20191002_181700-164:localhost:8800$Pe/Q ]$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIm.room.join_rules!MlzmtUYSZOiByAZdKx:localhost:8800mPMmQ@anon-20191002_181700-164:localhost:8800&Oe3Q ]$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcm.room.power_levels!MlzmtUYSZOiByAZdKx:localhost:8800mL2mN{@anon-20191002_181700-164:localhost:8800 Ne'Q ]$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMm.room.member!MlzmtUYSZOiByAZdKx:localhost:8800mImJ@anon-20191002_181700-164:localhost:8800M e'Q  ]$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8m.room.create!MlzmtUYSZOiByAZdKx:localhost:8800mFjmF@anon-20191002_181700-164:localhost:8800&Le3Q ]$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacm.room.guest_access!WjlTCJVOFJkanCtkFE:localhost:8800m<m@X@anon-20191002_181700-163:localhost:8800 Ke'Q /$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07om.room.member!WjlTCJVOFJkanCtkFE:localhost:8800m=qm>@5:localhost:8800 Je'Q /$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbom.room.member!WjlTCJVOFJkanCtkFE:localhost:8800m9qm9@5:localhost:8800&Ie3Q ]$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIm.room.guest_access!WjlTCJVOFJkanCtkFE:localhost:8800m6*m6@anon-20191002_181700-163:localhost:8800,He?Q ]$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8m.room.history_visibility!WjlTCJVOFJkanCtkFE:localhost:8800m1m3@anon-20191002_181700-163:localhost:8800$Ge/Q ]$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUm.room.join_rules!WjlTCJVOFJkanCtkFE:localhost:8800m/Am0@anon-20191002_181700-163:localhost:8800&Fe3Q ]$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYm.room.power_levels!WjlTCJVOFJkanCtkFE:localhost:8800m,m-@anon-20191002_181700-163:localhost:8800 Ee'Q ]$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0m.room.member!WjlTCJVOFJkanCtkFE:localhost:8800m*m+@anon-20191002_181700-163:localhost:8800D e'Q  ]$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMm.room.create!WjlTCJVOFJkanCtkFE:localhost:8800m'm(:@anon-20191002_181700-163:localhost:8800,Ce?Q ]$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAm.room.history_visibility!aBCvSXjtZUEPlPGHvY:localhost:8800m_m @anon-20191002_181700-162:localhost:8800!Be)Q ]$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0m.room.aliases!aBCvSXjtZUEPlPGHvY:localhost:8800mmf@anon-20191002_181700-162:localhost:8800,Ae?Q ]$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0m.room.history_visibility!aBCvSXjtZUEPlPGHvY:localhost:8800m&m@anon-20191002_181700-162:localhost:8800$@e/Q ]$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcm.room.join_rules!aBCvSXjtZUEPlPGHvY:localhost:8800mm@anon-20191002_181700-162:localhost:8800)?e9Q ]$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEm.room.canonical_alias!aBCvSXjtZUEPlPGHvY:localhost:8800m#m@anon-20191002_181700-162:localhost:8800&>e3Q ]$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUm.room.power_levels!aBCvSXjtZUEPlPGHvY:localhost:8800mm@anon-20191002_181700-162:localhost:8800 =e'Q ]$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4m.room.member!aBCvSXjtZUEPlPGHvY:localhost:8800mm2@anon-20191002_181700-162:localhost:8800< e'Q  ]$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIm.room.create!aBCvSXjtZUEPlPGHvY:localhost:8800m m d@anon-20191002_181700-162:localhost:8800 ;e)Q /$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwm.room.message!IMiczgkCTjejbnbeyP:localhost:8800mKm@3:localhost:8800 :e'Q /$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgm.room.member!IMiczgkCTjejbnbeyP:localhost:8800mm4@3:localhost:8800  Cj=eQ_c$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 702}{"auth_events": ["$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "type": "m.room.power_levels", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"users": {"@anon-20191002_181700-162:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040910075, "hashes": {"sha256": "7e/PnoiK/GQxHwyssoEKLuwaiJU7++qg9YxoB1cz00I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1iA3qwN9YnS8PeqqhNUHbnB7fgTficXRx3egIxRyZ+hUlFam/PavJklY5Xjfez050o6rP8ycck6GpceHGpDOAA"}}, "unsigned": {"age_ts": 1570040910075}}u<eQ_y$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 701}{"auth_events": ["$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI"], "prev_events": ["$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI"], "type": "m.room.member", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-162", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-162:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040909527, "hashes": {"sha256": "N/dTT8XoPsRu2QraA3wtULzBGsGyCjrIu4zVTJCk5ig"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P9tSHMt2wROKiCY8Ai/CpsANfVFPVobv9d4fjp1q8b8mNap0QuG4bZRAEKBGG5BRhVKjREzsrDlRh8H1jzltBA"}}, "unsigned": {"age_ts": 1570040909527}}h;eQ__$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 700}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-162:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040908686, "hashes": {"sha256": "5w+kEWFYsPGzEqO99+ZHtaT8xvfYAleecuAPmKw2bYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "icOOwbd5yvVAUGlFD4VhrtVEm54GvPsd0gufogZ/al5HhIBZZbH/OCE5CoESFXv+RTzM/BsA1GnqAbRN1a4bDQ"}}, "unsigned": {"age_ts": 1570040908686}}T:eQ]9$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw!IMiczgkCTjejbnbeyP:localhost:8800{"txn_id": "63", "stream_ordering": 699}{"auth_events": ["$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM", "$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM", "$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg"], "prev_events": ["$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg"], "type": "m.room.message", "room_id": "!IMiczgkCTjejbnbeyP:localhost:8800", "sender": "@3:localhost:8800", "content": {"msgtype": "m.text", "body": "sup"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570040906059, "hashes": {"sha256": "Jqd3EeWEqzgaN8dRB1gR97ylcgc0W3KGH/L4wWlDcVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cbsU4SbZivwarodAF0dx0CEURyTvpi/vZqdChr9LwR5kWXKoSNOLdW33NqSWCF+tZn1RQA3bW0udWqUV3ByTBA"}}, "unsigned": {"age_ts": 1570040906059}} {UFkr@9 I $ a :  w P ( ` :  t L $_7pH X0h@i8W%xMR921e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0;1e$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8v0e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SIR1$3:localhost:424553$39:localhost:424553$38:localhost:424551e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c3$29:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU:1e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAG0e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY_1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd41e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$15:localhost:42455'Q$1570043754467mNKfq:localhost:8800Z'Q$1570043744459BIUYb:localhost:8800Y'Q$1570043715443SSqOY:localhost:8800V'Q$1570043683436iTOlZ:localhost:8800I'Q$1570043680434abJWo:localhost:8800H'Q$1570043670433bjAzo:localhost:8800F'Q$1570043664431IMLSL:localhost:8800E'Q$1570043660430kLPpN:localhost:8800D'Q$1570043588411PDBWG:localhost:88006'Q$1570043575399SiSKs:localhost:8800+'Q$1570043536368agmuM:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043468324DLhaB:localhost:8800 'Q$1570043392317hujur:localhost:8800&O$157004338812XhwjX:localhost:8829'Q$1570043380304caenp:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043341273LsXNn:localhost:8800'Q$1570043198272DGmin:localhost:8800'Q$1570043154263raEaa:localhost:8800&O$157004274411xArrT:localhost:8829%M$15700427368TlZQs:localhost:8829'Q$1570042729241UUSiz:localhost:8800'Q$1570042718224MBWNJ:localhost:8800'Q$1570042709214PwhVu:localhost:8800'Q$1570042700204CxVfq:localhost:8800'Q$1570042692194rxboZ:localhost:8800'Q$1570042683184TpChh:localhost:8800%M$15700426765pydev:localhost:8829%M$15700426692GLpqH:localhost:8829'Q$1570042662161lGrSW:localhost:8800'Q$1570042651145wBynt:localhost:8800'Q$1570042642135oMfQy:localhost:8800'Q$1570042632125lwdOR:localhost:8800'Q$1570042624115nZtIB:localhost:8800'Q$1570042615105OKfnm:localhost:8800&O$157004188598DcHDt:localhost:8800&O$157004187190ZLRgN:localhost:8800&O$157004185983tEalY:localhost:8800&O$157004184976eGgUf:localhost:8800 &O$157004183969fQFzs:localhost:8800&O$157004182060gAdxi:localhost:8800&O$157004180853KmrHT:localhost:8800&O$157004180346TRucp:localhost:8800&O$157004177433OonrH:localhost:8800&O$157004175925JuKDZ:localhost:8800&O$157004174718wxlLH:localhost:8800&O$157004173511wRnRr:localhost:8800$M$15700403175seOtB:localhost:88001e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew10e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAu1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMO0e$0UDC5LsIG5FkdMxkKmvYvymZH8U8mi6oUol4gcS2OCM;1e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc0e$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDg21e$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEd1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns1e$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB40e$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kY M k9 }EwqX? TZ(a/ g 5  K; n < u C  | J    P V%]+c11121e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s\3$89:localhost:42455X0e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw 1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNoT0e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw0e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w01e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegox1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAr1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokl1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsh1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAg1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rob1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA3$56:localhost:4245583$55:localhost:4245553$54:localhost:42455*3$53:localhost:42455 1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU3$49:localhost:424551e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE3$40:localhost:424551e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw0e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg^ 1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwG1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-MB1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC41e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0|1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zego0e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUX1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z81e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY=1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMD1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEL1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g>1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkW1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx81e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK090e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA0e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y)1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ1e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA1e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ00e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ob1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud41e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo1e$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U<1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg21e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA1e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIQ1e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYS0e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYV1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU#I$64_redaction2:localhost:42455C0e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$?$60_msg_e:localhost:424557 PFvh&8Vp@}M [ + e 5  s B  N  V $`.l: xFNZ(. Q  !zhCsYcaweVFJLLNwBz:localhost:8800%. Q  !zNCItZNbpkZKuufRhC:localhost:8800%. Q  !xwoIOPTGmJIlTXakxC:localhost:8800%. Q  !wvnfKBSrUlfNmYoeil:localhost:8800%. Q  !uxKymrHZeXRYCZwekU:localhost:8800%. Q  !scyFsXcUIJiLIMwWMY:localhost:8800%. Q  !sPWVGnipjiiWQpywNO:localhost:8800 %. Q  !plcvCHNbjCkNMMxnTk:localhost:8800%. Q  !odAvowLhHJcmkKlxFk:localhost:8800%. Q  !loalEsWaTYwrVUNJLr:localhost:8800%0 Q !jYzridjeihmwPBuwLb:localhost:8800%. Q  !aWJOsiuJONOvjKWEjO:localhost:8800%. Q  !QZhNrNpwObZGJZpdAG:localhost:8800%. Q  !NhWgOTYzEPRwAxRQvS:localhost:8800%. Q  !NZHpBquHDfJAjiawGk:localhost:8800%. Q  !LaLcEGFLpjdlYlYKGC:localhost:8800%. Q  !GixhPUMvtKSWoKRgvw:localhost:8800%. Q  !BDASLhdcKfNwxCTCSg:localhost:8800%0P Q!IMiczgkCTjejbnbeyP:localhost:8800%0O Q!HIZTeBCxvpMSpcqGVD:localhost:8800%.N Q  !awHAhLuEkavTGACcUW:localhost:8800%.M Q  !OqPpVlCwmKdAUlwrXI:localhost:8800%.L Q  !quaZwrGnzbNWhwAOYB:localhost:8800%0K Q!JusxqeECtidaPlWqhp:localhost:8800%0J Q !aWvVRVaDflYyyGTOdD:localhost:8800%/I Q !GiSxJsKZhQVHBkrVPn:localhost:8800 %0H Q!AjjrNwXmPTCruHxaJq:localhost:8800 %0G Q !BkzROHxDAfKIzYpmPV:localhost:8800 %/F Q !WWZVpyLeZfyfpWidLx:localhost:8800 %0E Q!XIqmzIFbkHGQPIpywk:localhost:8800 %.D Q  !lMRBkbYJDQHgdBZBFJ:localhost:8800%0C Q !cHtqiAyCHEAoBIbCmL:localhost:8800 %.B Q  !OBWkjfrDCNgYFfblia:localhost:8800%.A Q   !ntuwVdUxfzNIhIKYaz:localhost:8800 %0@ Q!CQKLQUpSYakhxVDltC:localhost:8800%.> Q  !VWYMJxEviBNDdJCuKT:localhost:8800%.? Q  !GwXGurbyEmykmmHcHJ:localhost:8800%.= Q  !CgVBWWcRJoHEcwoLcq:localhost:8800%0< Q!HcMGemcRrLnLprOJJR:localhost:8800%0; Q!SyIWYOmcGiASNkPCTB:localhost:8800%.: Q  !msMfSdLIAvklSSAnci:localhost:8800%.9 Q  !GgUNbVXspVTpOlaHBl:localhost:8800%08 Q!eKrOqiOabJcMgIJjwC:localhost:8800%07 Q!vVmSdclwPIqYDbnmPn:localhost:8800%06 Q!edbUkYJIZBNOiTuLJs:localhost:8800%05 Q!VAEDgDJVqmxXZyAlSW:localhost:8800 %04 Q!eySSVuCclRpBDgwKIU:localhost:8800%03 Q!fJXiUpbbOlLbHWmPgs:localhost:8800 %02 Q !oXKJArsPmtgaYANBrg:localhost:8800 %.1 Q  !egCvzKpbEwmuvDoBTb:localhost:8800%00 Q!XgobMgBjNcDRJnRXLD:localhost:8800%0/ Q!wIhMbfQzYbJobPdwyi:localhost:8800%.. Q  !cSUQGmpIsSCBAVTOHo:localhost:8800%.- Q  !SBEprlZiuliFNSfNmz:localhost:8800%., Q  !KxhGcTbEWmtgGNpdox:localhost:8800%/+ Q!HmkcAMkMjWRhTDJMsy:localhost:8800d/* Q!OMkiVTuuOEeiFAXtUY:localhost:8800[/) Q!BrssELMbasSzTFpIXm:localhost:8800R.( Q   !RmdhCjvouVLmyIHjaM:localhost:8800%.' Q   !EyEaTZElOkdURKbEXo:localhost:8800%.& Q   !TWETXUgfFZafDdbqLS:localhost:8800%.% Q  !HAFNBarGuVZuWCgwWM:localhost:8800%0$ Q!duCKuavMBSfRbTFPsc:localhost:8800%0# Q!TleKOyAElrpgyyrAQA:localhost:8800%0" Q!IGVHKYcSuxzVPlFHlj:localhost:8800%.! Q  !xhbvqJDfxMSsZPqvld:localhost:8800%. Q  !OSHhtkGUjpUCkXwIhj:localhost:8800%. Q  !AWfbViAZparIjmDaVT:localhost:8800%. Q  !wnriPzXkIMmdTNoJKU:localhost:8800%. Q  !jfshVGNDxkvqPxFxWB:localhost:8800%0 Q!OaCEdDAiatpwYcagUb:localhost:8800 %. Q  !GGTWnzJfvPQBgQqDIE:localhost:8800%/ Q !cosGKKhHvKaVukBCic:localhost:8800%0 Q!rZWweGEChkxxtzyfDB:localhost:8800%. Q  !uJtKGXTNdEnCPNOGDx:localhost:8800%. Q  !vJQYmOxOBLwFKzYkNj:localhost:8800%. Q  !kkgEEVUJynguTqAoWD:localhost:8800%. Q  !dUnULFLGtgaVdwHtnz:localhost:8800%. Q  !aWbcZNVBalJilCEsdr:localhost:8800%. Q  !kxTDuIasPNpXtiRsif:localhost:8800% On= K{  ] * h 8  t B  | L  \ ,l:rBwFQ \+_,f5m <00 Q !bzPCFeFSMbCESvNbxl:localhost:8800%. Q  !nxLxsxzliamzflrEBs:localhost:8800%. Q  !RPfffkmSEbWggEjnoI:localhost:8800%. Q !PCgUmZOwWmtDsuFqXg:localhost:8800,0 Q !egbhiBqOGhloZzopol:localhost:8800%. Q   !KdOYYnOuwAyQzqwUki:localhost:8800%0 Q!XNfwczePlyYFWLCaui:localhost:8800%. Q   !PQZMTVTeCYqMZwkHvW:localhost:8800%. Q   !kpTPWDZdBbbXKLonZK:localhost:8800%. Q   !ITdmSQpjMnaPoHIbws:localhost:8800%. Q  !FAYqpziHeVZugCGaij:localhost:8800%0 Q!ZaOktTIVeRgBXxfubH:localhost:8800%0 Q!ZaltdIYVZjCHsCWTZD:localhost:8800%0 Q!kwXxkGQFkaeenFTQJr:localhost:8800%0 Q!EMhFCPhwmnWVnjtXXM:localhost:8800%0 Q!GGXyLHdVXqhQjPRvac:localhost:8800%0 Q!IfYYyzLHSOeyJBxBfn:localhost:8800%. Q  !ZYKvjplZRyIWvzkRyM:localhost:8800%. Q   !ROoilpDjLJfjKfSPIi:localhost:8800%. Q  !wsvXTJXouVkEZcCFsD:localhost:8800%. Q  !DoiZErAdypBUMZKaeJ:localhost:8800%. Q  !qSUSLLWjDxcGibUZdT:localhost:8800%. Q  !RmwbYvIIQyPlHlClty:localhost:8800%. Q  !SvKwEALYoNreUvqAlp:localhost:8800%. Q  !fOJLpnbtgKNxxVDquX:localhost:8800%. Q  !vAUAIZrCnHTeMGeNuw:localhost:8800%. Q  !EfJcWhdjNARbuHYrqU:localhost:8800%. Q  !vRRNxNyGboLHNhqQvr:localhost:8800%. Q  !NFWKQvZkIwvecnREOC:localhost:8800%0 Q!IPYMCBwcyNIzqdiIWv:localhost:8800%0 Q!HZqzpRgqekPOtxstVc:localhost:8800%0 Q!FklhVuCInffbDxunWv:localhost:8800%0 Q!eJPTUgihvSwaOhIkrC:localhost:8800%.~ Q  !sfXbvAcOUJhzGwWEpZ:localhost:8800%0} Q!YufaOfAlruTdjyUCwO:localhost:8800%0| Q!ifQxHmNAcSSGHVMjfi:localhost:8800%0{ Q!EABRjdYuYumMhLSwIa:localhost:8800%0z Q!FIOuvzpMhoERunVYYA:localhost:8800%0y Q!zNBpypJDRMlBdOcLlW:localhost:8800%.x Q  !TcaopYfMoJFEcjYRzJ:localhost:8800%.w Q   !BckZfhQgrcyiMhEAAJ:localhost:8800%.v Q  !KXMUzALpMMMKqoQXUS:localhost:8800%.u Q  !NfaPEGKjnUDUTavzol:localhost:8800%.t Q  !JGhlAUflyNxErGGZZu:localhost:8800%.s Q  !tkajvIKHoOMWGsReBs:localhost:8800%.r Q  !fcdNYFWFyxmdpKAknc:localhost:8800%.q Q  !MWCLSWWGdWcSivNVLI:localhost:8800%.p Q  !erBPdgtUsiOfIKUkho:localhost:8800%.o Q  !dWgOTucBVQBKZjfndN:localhost:8800%.n Q  !hSzBsirdPWHtVjagXn:localhost:8800%.m Q  !mfzIRinBAGGrZvQAuI:localhost:8800%0l Q!FPcQcheNebvdFvmOnr:localhost:8800%0k Q!vOfeZvbtpuHfoqShFl:localhost:8800%0j Q!EieRtaCFZJJCIOkRPp:localhost:8800%0i Q!NQgavrmiCPUVaVjssy:localhost:8800%0h Q!hgjYwwwjWJNgwrzOto:localhost:8800%.g Q  !dnZVySJLGNtUKsSgXW:localhost:8800%.f Q  !oznZaCpONuNDaLarkI:localhost:8800%.e Q  !eLsrBEnrHolwCNgkFW:localhost:8800%.d Q  !ILbUVZOfPPwaZRrKJd:localhost:8800%.c Q  !wAyboOFgsOPwkmgMAI:localhost:8800%0b Q!bnTuVBaAJTPbcYZtRl:localhost:8800 %.a Q   !BGbJEmJRVJGlZFQbZe:localhost:8800%.` Q  !tDsPLsKOLPePtEWRwn:localhost:8800%0_ Q!XMNRkfscQXRjgYrOSd:localhost:8800%.^ Q  !wUuodvgsmAJqKJUBCQ:localhost:8800%-] Q!VCSCNemqikJZiRtxrs:localhost:8829.Z Q  !KeBlWUQiLYUoILKkTB:localhost:8800%.[ Q  !zFdNewlKnUiMBxnYrN:localhost:8800%-\ Q!StEnDjTJToXKXsOHNf:localhost:8829.X Q  !lAGTcYIuMBXsVRGCOe:localhost:8800%.Y Q  !WVzjUePHrzCjfyTbmK:localhost:8800%.W Q  !UyLoIXmzVFwycmBUeh:localhost:8800%.V Q  !nteAxExBGJfaGIpuCx:localhost:8800%0U Q!itKDOCtoMkFUETDtle:localhost:8800%/T Q  !qxqNYKdtgvOQdhmgsj:localhost:8800 %0S Q!MlzmtUYSZOiByAZdKx:localhost:8800%.R Q   !WjlTCJVOFJkanCtkFE:localhost:8800%.Q Q  !aBCvSXjtZUEPlPGHvY:localhost:8800% <D, T L 4 \ $ t|< deeQ$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY!oXKJArsPmtgaYANBrg:localhost:8800eeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800eeQ$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs!aWvVRVaDflYyyGTOdD:localhost:8800BeeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo!fJXiUpbbOlLbHWmPgs:localhost:8800xeeQ$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:8800 7eeQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:88001eeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800 ׁeeQ$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800TeeQ$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo!AjjrNwXmPTCruHxaJq:localhost:8800.eeQ$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA!CgVBWWcRJoHEcwoLcq:localhost:8800ցeeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800;eeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800eeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800 deeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA!KIHYKMzkRDrJwiywwz:localhost:8800 B leeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800 3eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800 2eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800  ghAeQ_M$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 706}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0"], "type": "m.room.aliases", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"aliases": ["#test-20191002_181700-27:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040913065, "hashes": {"sha256": "0ZiAiYeMomAWk7qBGngDHloiKCUkhYCRpVBj29x9kJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3j3gHFxuzbbXYj4//uLEbAJVx77yEaldnHKGC/ic2eyy9JCsRvMgBw7+DAxTGJNbYdrsWWyZN09AnHTuzkNaBQ"}}, "unsigned": {"age_ts": 1570040913065}}@eQ_$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 705}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc"], "type": "m.room.history_visibility", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040912166, "hashes": {"sha256": "PzmArNK8AtyAobj7vXGBIUlLC046zrGFvkdiDakbOh0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6S6kKv9ePNaVqxOoUCaYnyLN87JGXv9twH4VCKvKtB7X7EYIoduuaiaLNdgkUFuU4leKDfxkEZ8yokTwW7e5Aw"}}, "unsigned": {"age_ts": 1570040912166}}s?eQ_u$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 704}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE"], "type": "m.room.join_rules", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040911575, "hashes": {"sha256": "tj6RIBX+Q3it5Bb6bHhj6R+NDIKmtCd1e0vkm78tgRY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Iw02tUpAhtiRdYaeRi1k5fPGzrJk4WSEUgQ+VEI1riMGWYvB+eKk1DpklRy4RoD5XyLB3HQz/LUWglcSmTi1Aw"}}, "unsigned": {"age_ts": 1570040911575}}>eQ_9$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 703}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU"], "type": "m.room.canonical_alias", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"alias": "#test-20191002_181700-27:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040910883, "hashes": {"sha256": "i3Q5ksCnKTU3sZYM+kAsMqsUPAZCdQvk1x4T3WTbndU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HPOSUcMWdI3bqh5lNM9lRvFSNZSzrngABgSP7M+gyGc+4Q5zhEd4A/809towXi+dOfqxd/RDhALf8wSR3W77AQ"}}, "unsigned": {"age_ts": 1570040910883}} a} { y w u sqomkigeca~3eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~2eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~1eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~0eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800~/eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~.eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~-eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800~,eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~+eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~*eeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~)eeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~(eeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~'eeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~&eeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~%eeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~$eeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~#eeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~"eeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800~!eeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800~ eeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~eeQ$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800~eeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800~eeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800 "A F j  > Cg =a]bt?Q'/e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4i>Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYt=Q'/e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgi<Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoi;Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4 :Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM 9Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829$CF04RdjpJ7K-mLsJyANRCJNCr6Jg55SLV1iHydG6OyUr8Q))e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYo7Q? e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibility$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0g6Q/ e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rules$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Ml5Q9 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_alias$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUi4Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ 3Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUc2Q' e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.create$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwt1Q'/e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgt0Q'/e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogi/Q3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_access$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sco.Q? e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibility$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYg-Q/ e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rules$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIi,Q3 e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc +Q']e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMc*Q' e!MlzmtUYSZOiByAZdKx:localhost:8800m.room.create$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8t)Q'/e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oi(Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXact'Q'/e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboi&Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_access$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIo%Q? e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibility$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8g$Q/ e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rules$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUi#Q3 e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY "Q']e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0c!Q' e!WjlTCJVOFJkanCtkFE:localhost:8800m.room.create$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMo Q? e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGArQ))e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0oQ? e!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibility$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0 AQc1i7}o= vDk9q? w E  } K  Q Q  K W %  ] +X&^,1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo Z1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc 1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE &1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY0e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg|1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c0e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0z1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48N1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4q1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMw1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Iz1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAL1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY V1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA A1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA61e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAK1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM91e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0MU1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU @1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw)1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4.1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoO [ . B[jEeQ_c$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 710}{"auth_events": ["$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM", "$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0"], "prev_events": ["$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0"], "type": "m.room.power_levels", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"users": {"@anon-20191002_181700-163:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040917133, "hashes": {"sha256": "BF7D8pjXoBmzN0/JqK6xIctof6VNKcK9+BhcZVwpenE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+9yHRpdu1e9TeA9xSlL3TysfBvu3wiUZhZeMKpXgrELfnv2rzjr/+vUrJQMBNQjm8x4kouZ/IJVRthDHWyggBQ"}}, "unsigned": {"age_ts": 1570040917133}}uDeQ_y$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 709}{"auth_events": ["$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM"], "prev_events": ["$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM"], "type": "m.room.member", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-163", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-163:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040916642, "hashes": {"sha256": "FVrhZ/H5SGe1aa36EwOCmxpRXnbO2OXORIjHfKtse8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BzMCCEMfLBvbv9BC4oqn88lmVfUvjYIPWAyDgowGzoSew62B6AGN+Kasm3qRpL9blm1OpW8tzZV5K1SWK//rBw"}}, "unsigned": {"age_ts": 1570040916642}}hCeQ__$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 708}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-163:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040915946, "hashes": {"sha256": "ePh/6oQQscoimPzmXxwZBn+wseSJse27LWdKVobMzsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SCgWqINHrbHDCdYij/cTMWqnahtTs4D2dPB8IbG2Kx+vMxpfE9NYyEaKb/s9Ap5KJePOid3cn/FxeChLwYcKDw"}}, "unsigned": {"age_ts": 1570040915946}}NBeQ_+$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800{"token_id": 186, "stream_ordering": 707}{"auth_events": ["$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU", "$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI", "$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4"], "prev_events": ["$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0"], "type": "m.room.history_visibility", "room_id": "!aBCvSXjtZUEPlPGHvY:localhost:8800", "sender": "@anon-20191002_181700-162:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040913759, "hashes": {"sha256": "qI+Bs8gIw17HGnKYpn+o55qx9j9kHyNcqCEfQ5fMNWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xZqMNq528okI6UdkFX3JGWTz47jBNDeYuePYLRi7FLnSfUeJ3FosodDRhNhhsd6W4j7GEqWPvRu7B2tYda0RAA"}}, "unsigned": {"age_ts": 1570040913759, "replaces_state": "$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0"}} ,d@, +    y T d t ,zU@~iD"Y 1 @21:localhost:8800]"uX ]@anon-20191002_181700-193:localhost:8800$2b$04$ABLHNKBiRO.wwS.eSkfbauH7v77CFudpvrJ00lsxzB5JWxY0Mwv/u]"W 1 @20:localhost:8800]uV ]@anon-20191002_181700-192:localhost:8800$2b$04$IvULN03tfmCLm6pcQWoFd.DeSeMmJXGnVzOy0M6BNGaO8L4eyQtay]"U 1 @19:localhost:8800]uT ]@anon-20191002_181700-191:localhost:8800$2b$04$OdEarasUtTVHSUnWSq7e7urL4K9sdvV7283dG59YnJeqdBghutf9C]"S 1 @18:localhost:8800]uR ]@anon-20191002_181700-190:localhost:8800$2b$04$orOeSgVPnnaB.hUMItiKMeQD3SFgfsKAZ6NKtcjT.BeTyE68dj.rW]"Q 1 @17:localhost:8800]uP ]@anon-20191002_181700-189:localhost:8800$2b$04$XaUf4NES1jP3NUVXKfg3nuv9KpueTESd3smbXM.Z5O0TvNeKXHjdW]"O 1 @16:localhost:8800]uN ]@anon-20191002_181700-188:localhost:8800$2b$04$QtD0rsoW/cFquP./KnwAQOIKuuyG.aJiIfSTc9QOrcqm.xP09a.FO]"M 1 @15:localhost:8800]uL ]@anon-20191002_181700-187:localhost:8800$2b$04$nlNUvI2JwlH.o2QThnyhXOo/iYQUAtkaeFmF7SXUEBb4NFqvNerqG]"K 1 @14:localhost:8800]uJ ]@anon-20191002_181700-186:localhost:8800$2b$04$s5cwd3y8QZorHnDIrWWvLejtmMCHoVz1rImeBAvhDzCJQHZsJPi6y]"I 1 @13:localhost:8800]uH ]@anon-20191002_181700-185:localhost:8800$2b$04$RqUQdZkZATalvcCRttw8suQjRdwrqEF.tipbPFko3915cDaE/gF6i]uG ]@anon-20191002_181700-184:localhost:8800$2b$04$pRgoqWIY6D9t.xHORE0ane.iezVelS6U8b2u4Tb/zQ7kZaY8nUg7O]uF ]@anon-20191002_181700-183:localhost:8800$2b$04$ConOZpQFvSSMsuueixPIDe2BUAb2OrCeda6qf5WMLTB2sVHtOzk0e]uE ]@anon-20191002_181700-182:localhost:8800$2b$04$FLczDjy3Jei5CHicT2..FO0SX1SyVqi8pEuXev2gHTQa9UYQobXRm]uD ]@anon-20191002_181700-181:localhost:8800$2b$04$yfMIHs9iBdsMOyIxXqGAkesIFj6l7LgNYA4TYNotlwoSNqcphi2Ri]uC ]@anon-20191002_181700-179:localhost:8800$2b$04$ZlIc.Oi.4cjPhwjUQMHpouGulbC8FJ0zNl0TqyIW5Bs0A0QYvTJrW]uB ]@anon-20191002_181700-178:localhost:8800$2b$04$anBCVwQvelBCWFxGULcPfe8dn74OsfQb4IDZ4M94yNFg7v23hlWru]uA ]@anon-20191002_181700-177:localhost:8800$2b$04$E5RmPNQDQ3PAc9VaiRvA8eQh92DVKlfui90/3L.CwX7mEJGXKepOC]u@ ]@anon-20191002_181700-176:localhost:8800$2b$04$RyPVb3vEua.QncGxhBX8benuGdtCiX0nWHBZeZo2IAq6cEMAKP.KG]u? ]@anon-20191002_181700-175:localhost:8800$2b$04$VpoIBiooc7.st3lvNgwIXOfY09CCbaTRGpphyg3f8Dg9Oul3ML16u]u> ]@anon-20191002_181700-174:localhost:8800$2b$04$j5K8zAjHXEllRA1vmBNxquXnfQyLFUfjVjTGZeqosGrHfFluFWg9S]u= ]@anon-20191002_181700-173:localhost:8800$2b$04$eGqOXMn6p/gj5rjfkzfbDuhTrSFmWSeVhHp8czTkaQYbzkIxN1Nkm]"< 1 @12:localhost:8800]"; 1 @11:localhost:8800]u: ]@anon-20191002_181700-170:localhost:8800$2b$04$4tHBoslZWBe9neake.lfGeTDp2qh/jl1yegOvRg5Lo3Y/FFxxMDfu]u9 ]@anon-20191002_181700-169:localhost:8800$2b$04$snyLkw3VaFZ2a4vmR165AeBcJ4.883V3vSgXpMPUHMpB8kiCiwGLy]{u8 ]@anon-20191002_181700-168:localhost:8800$2b$04$ZaS2dLPz93JG4OKWJUdsre/AKt.al64w9AHNQSfxifs9jk2YQKfpq]u"7 1 @10:localhost:8800]ub4 /@8:localhost:8800$2b$04$bfceBWy3XaxFegGdC8mlzOc9SZpUa6DvdNZ8swfHks3ieCMlVdRDy]m]tu5 ]@anon-20191002_181700-167:localhost:8800$2b$04$Atm1xEbFcAX3l49M9y5Zi.P0oMqNuqwbqCO0BEiOFvAAhBAORefFy]n!6 / @9:localhost:8800]uu3 ]@anon-20191002_181700-165:localhost:8800$2b$04$/N79dDNrK2UtQj9NHLrTneNlWTz.UgMPVX1KMsQpPgjq0cyb7F5um]b!2 / @7:localhost:8800]bu1 ]@anon-20191002_181700-164:localhost:8800$2b$04$nbCqpHQicMU2A3BCDRikc.wSR8dMKMoMDK9T01aGi39VmE7Uks3ZC]Z!0 / @6:localhost:8800]Zu/ ]@anon-20191002_181700-163:localhost:8800$2b$04$Yyi2I5.smSlTV/fcosOTlee290nlOW22rAMpmycrOwXlAPtq8.1nK]S!. / @5:localhost:8800]S C{e0`- ] ( ^ ) Y & V ! Q RQNOL~K{FzG2]@an2]@anon-20191002_181700-238:localhost:8800a4]@anon-20191002_181700-237:localhost:8800m2]@anon-20191002_181700-237:localhost:8800a4]@anon-20191002_181700-236:localhost:8800m2]@anon-20191002_181700-236:localhost:8800a2]@anon-20191002_181700-235:localhost:8800a4]@anon-20191002_181700-234:localhost:8800m2]@anon-20191002_181700-234:localhost:8800a2]@anon-20191002_181700-233:localhost:8800a4]@anon-20191002_181700-232:localhost:8800m2]@anon-20191002_181700-232:localhost:8800a4]@anon-20191002_181700-231:localhost:8800m2]@anon-20191002_181700-231:localhost:8800a2]@anon-20191002_181700-230:localhost:8800a2[@anon-20191002_181700-22:localhost:8800m90[@anon-20191002_181700-22:localhost:8800a62]@anon-20191002_181700-229:localhost:8800a4]@anon-20191002_181700-228:localhost:8800m2]@anon-20191002_181700-228:localhost:8800a2]@anon-20191002_181700-227:localhost:8800a4]@anon-20191002_181700-226:localhost:8800m2]@anon-20191002_181700-226:localhost:8800a2]@anon-20191002_181700-225:localhost:8800a4]@anon-20191002_181700-224:localhost:8800m2]@anon-20191002_181700-224:localhost:8800a2]@anon-20191002_181700-223:localhost:8800a4]@anon-20191002_181700-222:localhost:8800m2]@anon-20191002_181700-222:localhost:8800a2]@anon-20191002_181700-221:localhost:8800a4]@anon-20191002_181700-220:localhost:8800m2]@anon-20191002_181700-220:localhost:8800a2[@anon-20191002_181700-21:localhost:8800m50[@anon-20191002_181700-21:localhost:8800a42]@anon-20191002_181700-219:localhost:8800a4]@anon-20191002_181700-218:localhost:8800m2]@anon-20191002_181700-218:localhost:8800a4]@anon-20191002_181700-217:localhost:8800m2]@anon-20191002_181700-217:localhost:8800a4]@anon-20191002_181700-216:localhost:8800m2]@anon-20191002_181700-216:localhost:8800a4]@anon-20191002_181700-215:localhost:8800m2]@anon-20191002_181700-215:localhost:8800a4]@anon-20191002_181700-214:localhost:8800m2]@anon-20191002_181700-214:localhost:8800a4]@anon-20191002_181700-213:localhost:8800m2]@anon-20191002_181700-213:localhost:8800a4]@anon-20191002_181700-212:localhost:8800m2]@anon-20191002_181700-212:localhost:8800a4]@anon-20191002_181700-211:localhost:8800m2]@anon-20191002_181700-211:localhost:8800a2]@anon-20191002_181700-210:localhost:8800a2[@anon-20191002_181700-20:localhost:8800m30[@anon-20191002_181700-20:localhost:8800a24]@anon-20191002_181700-209:localhost:8800m2]@anon-20191002_181700-209:localhost:8800a4]@anon-20191002_181700-208:localhost:8800m2]@anon-20191002_181700-208:localhost:8800a4]@anon-20191002_181700-207:localhost:8800m2]@anon-20191002_181700-207:localhost:8800a4]@anon-20191002_181700-206:localhost:8800m2]@anon-20191002_181700-206:localhost:8800a4]@anon-20191002_181700-205:localhost:8800m2]@anon-20191002_181700-205:localhost:8800a4]@anon-20191002_181700-204:localhost:8800m2]@anon-20191002_181700-204:localhost:8800a4]@anon-20191002_181700-203:localhost:8800m2]@anon-20191002_181700-203:localhost:8800a ,NC 8 - { " p  e ZOD9.|#qf VpeL$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIsha256¤4P'RN/Οqa<0*VoeL$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJossha256fds>a}, ذم&VneL$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4sha256[B==/T;?`JxCK?qUR*~VmeL$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wsha256E)j°R*Zkޓ?Mh]kʔVleL$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQsha256 _-?vn Hk03F,FptVkeL$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0osha256󟦆h\xi?DO S$v*ʋJVjeL$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkosha256!gl DMh]-|&PneyX ,sFJVieL$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEsha256{}4*?|h}$Ғi oCaVheL$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fssha25630dGv<'][VgeL$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhkssha256+mzYZUъ 5\ھՂ 6ΆKVfeL$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8sha256p$9U?:P,h,~/VeeL$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8sha256qazuA,925l ;7vvS/VdeL$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuksha256Y 3;Z8=4DbV_eL$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4sha2561Q vgI@o6lJV^eL$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgsha256A3[͑_nK?;xOV]eL$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEosha256?UPqq-:E\uOZ48e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_osha2568e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWssha256e8e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGssha256 !7e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQsha256'8e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUsha25698e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJAsha2568e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYsha2568e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHssha256 ;8e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQsha256r8e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1csha2568e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIsha256  T L  dD| l< \4, $ t \ eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800 eeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800 )eeQ$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829eeeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800*eeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800eeQ$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800^eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4!BkzROHxDAfKIzYpmPV:localhost:8800#eeQ$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY!SyIWYOmcGiASNkPCTB:localhost:8800eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms!EyEaTZElOkdURKbEXo:localhost:8800eeQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800BeeQ$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE!HmkcAMkMjWRhTDJMsy:localhost:88007eeQ$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800 leeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800 geeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800ՁeeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8!vRmMcoJDeCupADwqac:localhost:8800 eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800 ׁeeQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800 ReeQ$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800 3 + Q+uMeQ_y$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 718}{"auth_events": ["$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8"], "prev_events": ["$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8"], "type": "m.room.member", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-164", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-164:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040924663, "hashes": {"sha256": "H+7N2Vz8RxlBHNy7705l4CWHKL+XPrLT5wpRMupjN5w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gzNvpjd+0wbyJB0j08G5fshHlhDmKjISy7sUJsJ8GurEDpI6/DkH/0HIaAQop/mI9sg71J1mhq4T0XTLzT5WBw"}}, "unsigned": {"age_ts": 1570040924663}}hLeQ__$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 717}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-164:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040923754, "hashes": {"sha256": "WpmNtnvh5iPkI7YjPT+r76Xpv2A9c9N0k1g5o8Vetd4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9dOnPK5T2RLu+9cAts4IHgyzGeE/y1PcrvvLdqo8XqWXJT5LDPSotnFpQ3lFsPEnPg52oaS8PQUEpkI5qICbDA"}}, "unsigned": {"age_ts": 1570040923754}}=KeQ_ $M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac!WjlTCJVOFJkanCtkFE:localhost:8800{"token_id": 187, "stream_ordering": 716}{"auth_events": ["$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY", "$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM", "$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0"], "prev_events": ["$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"], "type": "m.room.guest_access", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@anon-20191002_181700-163:localhost:8800", "content": {"guest_access": "forbidden"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040921287, "hashes": {"sha256": "c1ZWnT74we0ugTnezDrFwMGlg4aC24qNmwyaNDyG41c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "isTaH6CUfdW5qcPqcBDotkEuPUMrqhBLLO7UrJnu7W03RjVnETFd7X6krvuYw69hZPAUXmCdY7jxOWzawlZ8AQ"}}, "unsigned": {"age_ts": 1570040921287, "replaces_state": "$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI"}}+JeQ=$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800{"stream_ordering": 715}{"auth_events": ["$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY", "$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM", "$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"], "prev_events": ["$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"], "type": "m.room.member", "room_id": "!WjlTCJVOFJkanCtkFE:localhost:8800", "sender": "@5:localhost:8800", "content": {"membership": "leave", "kind": "guest"}, "depth": 8, "prev_state": [], "state_key": "@5:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040921457, "hashes": {"sha256": "/QL1Ch5tjVc91ugCWTdZ5vyipkiIetP67b9cItLfskE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uyaOh3MKmZ4xeV7Op4K6cxuOUO79PbOE3iH9o6qfOr2Qp7fLThdF5Yigq1jsB9wXSLasqLDGbYmqVpMFWVIABw"}}, "unsigned": {"age_ts": 1570040921457, "replaces_state": "$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo"}} ~z v r n j fb^ZVRNJFeeQ$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800eeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800eeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800eeQ$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800eeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800eeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800eeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800eeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800eeQ$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800eeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800 eeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~eeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800}eeQ$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800|eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800 a} { y w u sqomkigeca~ReeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~QeeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~PeeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~OeeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~NeeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~MeeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~LeeQ$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~KeeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~JeeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~IeeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~HeeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~GeeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~FeeQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~EeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800~DeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~CeeQ$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~BeeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800~AeeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~@eeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~?eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~>eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~=eeQ$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~<eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~;eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~:eeQ$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~9eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~8eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~7eeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800~6eeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~5eeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800~4eeQ$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800 XFX0h@`8pH X 0  h @  x P ( ` 8  p H xP(nFd=vN&^6'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800 U'Q!QnmLrBAxeItdHsaxWf:localhost:8800 T'Q!QnmLrBAxeItdHsaxWf:localhost:8800 S'Q!QnmLrBAxeItdHsaxWf:localhost:8800 R'Q!QnmLrBAxeItdHsaxWf:localhost:8800 Q'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 'Q!QcaNrIiUsWpTiVGOnt:localhost:88001'Q!QcaNrIiUsWpTiVGOnt:localhost:8800/'Q!QcaNrIiUsWpTiVGOnt:localhost:8800-'Q!QcaNrIiUsWpTiVGOnt:localhost:8800+'Q!QcaNrIiUsWpTiVGOnt:localhost:8800*&Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800I'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!QMrkSPlQDGborAyWtQ:localhost:8800H'Q!QMrkSPlQDGborAyWtQ:localhost:8800G'Q!QMrkSPlQDGborAyWtQ:localhost:8800F'Q!QMrkSPlQDGborAyWtQ:localhost:8800E'Q!QMrkSPlQDGborAyWtQ:localhost:8800D'Q!QMrkSPlQDGborAyWtQ:localhost:8800C'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PgNDjhhIBAXKryuGKy:localhost:8800 i'Q!PgNDjhhIBAXKryuGKy:localhost:8800 h'Q!PgNDjhhIBAXKryuGKy:localhost:8800 g'Q!PgNDjhhIBAXKryuGKy:localhost:8800 f'Q!PgNDjhhIBAXKryuGKy:localhost:8800 e'Q!PgNDjhhIBAXKryuGKy:localhost:8800 d'Q!PgNDjhhIBAXKryuGKy:localhost:8800 c'Q!PgNDjhhIBAXKryuGKy:localhost:8800 b'Q!PgNDjhhIBAXKryuGKy:localhost:8800 a'Q!PgNDjhhIBAXKryuGKy:localhost:8800 `'Q!PgNDjhhIBAXKryuGKy:localhost:8800 _'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ^'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800  zQeQ_$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 722}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY"], "type": "m.room.guest_access", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040927922, "hashes": {"sha256": "fpBvMNTYVTmz+2MQWZyJZOpIRn1wc5sb/Xqg/udT6IU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vxA+Y/zFn5Hx/0snqZDSnHRT9G+uhfhk5nKFhH8ks6Q+MsPco2Qqy1CNO4uv0mSMj33Cyc7Lo25JsQNYNOi1Bw"}}, "unsigned": {"age_ts": 1570040927922}}PeQ_$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 721}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI"], "type": "m.room.history_visibility", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040926925, "hashes": {"sha256": "7w5vdDTSFnsqNICOyIvIo/MdFkbvF90Ns2mo2qOzZZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NWSfmAgiNNwq/X6x187mFJ0zJMeoXim1FlMoXa1gXZNa95dXbXgTcbj66Z+UkCPljSN54bqEqY1BLBm93otMCQ"}}, "unsigned": {"age_ts": 1570040926925}}sOeQ_u$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 720}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc"], "type": "m.room.join_rules", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040926285, "hashes": {"sha256": "uaGlZtUOzNEuh166CqhaYd15uRydGXDm8Furm0sRiIs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QvaY7q5Z2hS+oe8+eWvBwsYmlvYArgCrXjv00PSOo92yDbPtNJ14Y4u4UYFhfm+SnvoC6+mYC/fz1uOF0vqnAw"}}, "unsigned": {"age_ts": 1570040926285}}jNeQ_c$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800{"token_id": 188, "stream_ordering": 719}{"auth_events": ["$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "prev_events": ["$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM"], "type": "m.room.power_levels", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@anon-20191002_181700-164:localhost:8800", "content": {"users": {"@anon-20191002_181700-164:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040925234, "hashes": {"sha256": "cOhLhvdca5b7UiJRixt0BD7Zj7jP23uyb9fRRT+ArGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zOLGvgXf4/AhuO9kkYpGbK3cpa+QgwaChdthmpFKglfgf+P63WH1KwGHLN9xShToYmUL5DI6zrHf4DJ7zLypCg"}}, "unsigned": {"age_ts": 1570040925234}} p Y  = B j".T#Ltp(-U eeQ']$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829joinpdeQ))$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800mceQ? $OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibilityebeQ/ $2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rulesjaeQ9 $l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_aliasgfeQ3 $Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels _eQ']$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800joina^eQ' $ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.createv]eQ'/$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800join XeQ']$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800joinaWeQ' $4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800m.room.creategVeQ3 $M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac!WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accesswUeQ'/$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800leavemSeQ? $FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibilityeReQ/ $5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rulesgQeQ3 $J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levels PeQ']$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800joinaOeQ' $pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800m.room.createmNeQ? $qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilitypMeQ))$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800eKeQ/ $wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rulesjJeQ9 $5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_aliasgIeQ3 $poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levels HeQ']$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800joing\eQ3 $cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_accessm[eQ? $BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY!MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibilityeZeQ/ $rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI!MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rulesgYeQ3 $nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levels Q X+]0|O"nA 5  l? ^ 1  } P #g L U (  ztG c9 p Cj=w+,,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 22,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 11,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 00,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 //,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 ..,Q!aZwMKYDXJRlSKjQNWM:localhost:8800--,Q!aZwMKYDXJRlSKjQNWM:localhost:8800,,,Q!aZwMKYDXJRlSKjQNWM:localhost:8800++,Q!aZwMKYDXJRlSKjQNWM:localhost:8800**,Q!aZwMKYDXJRlSKjQNWM:localhost:8800)),Q!aZwMKYDXJRlSKjQNWM:localhost:8800((,Q!aZwMKYDXJRlSKjQNWM:localhost:8800''+Q !aZwMKYDXJRlSKjQNWM:localhost:8800&&J,,Q!aiOswwhoZqjhcjzbzc:localhost:8800 ii,Q!aiOswwhoZqjhcjzbzc:localhost:8800bb,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800+Q !azRJNFPIRSFAskLILK:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800 pp,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aiOswwhoZqjhcjzbzc:localhost:8800\\+Q !aiOswwhoZqjhcjzbzc:localhost:8800[[,Q!anErKtXIsVKEEsrzWM:localhost:8800SS,Q!anErKtXIsVKEEsrzWM:localhost:8800RR,Q!anErKtXIsVKEEsrzWM:localhost:8800QQ,Q!anErKtXIsVKEEsrzWM:localhost:8800PP,Q!anErKtXIsVKEEsrzWM:localhost:8800OO,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800+Q !aknLNLxfChlLvFYhkJ:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800]],Q!aZwMKYDXJRlSKjQNWM:localhost:8800 66,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 55,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 44,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 33,Q!atnRTMliktaVUhMVID:localhost:8800  +Q !atnRTMliktaVUhMVID:localhost:8800  ,Q!aiOswwhoZqjhcjzbzc:localhost:8800^^,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800+Q !awHAhLuEkavTGACcUW:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800+Q !aaRwQZdNAliyvRHpjs:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 -,Q!aiOswwhoZqjhcjzbzc:localhost:8800__+Q !anErKtXIsVKEEsrzWM:localhost:8800NN,Q!aiOswwhoZqjhcjzbzc:localhost:8800aa,Q!aiOswwhoZqjhcjzbzc:localhost:8800`` Q X+]0|O"nA 5  l? ^ 1  } P #g L U (  ztG c9 p Cj=w+,,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!atnRTMliktaVUhMVID:localhost:8800  ,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 22,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 11,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 00,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 //,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 ..,Q!aZwMKYDXJRlSKjQNWM:localhost:8800--,Q!aZwMKYDXJRlSKjQNWM:localhost:8800,,,Q!aZwMKYDXJRlSKjQNWM:localhost:8800++,Q!aZwMKYDXJRlSKjQNWM:localhost:8800**,Q!aZwMKYDXJRlSKjQNWM:localhost:8800)),Q!aZwMKYDXJRlSKjQNWM:localhost:8800((,Q!aZwMKYDXJRlSKjQNWM:localhost:8800''+Q !aZwMKYDXJRlSKjQNWM:localhost:8800&&J,,Q!aiOswwhoZqjhcjzbzc:localhost:8800 ii,Q!aiOswwhoZqjhcjzbzc:localhost:8800bb,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800,Q!azRJNFPIRSFAskLILK:localhost:8800+Q !azRJNFPIRSFAskLILK:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800 pp,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800,Q!atnRTMliktaVUhMVID:localhost:8800 ,Q!aiOswwhoZqjhcjzbzc:localhost:8800\\+Q !aiOswwhoZqjhcjzbzc:localhost:8800[[,Q!anErKtXIsVKEEsrzWM:localhost:8800SS,Q!anErKtXIsVKEEsrzWM:localhost:8800RR,Q!anErKtXIsVKEEsrzWM:localhost:8800QQ,Q!anErKtXIsVKEEsrzWM:localhost:8800PP,Q!anErKtXIsVKEEsrzWM:localhost:8800OO,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800+Q !aknLNLxfChlLvFYhkJ:localhost:8800,Q!aiOswwhoZqjhcjzbzc:localhost:8800]],Q!aZwMKYDXJRlSKjQNWM:localhost:8800 66,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 55,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 44,Q!aZwMKYDXJRlSKjQNWM:localhost:8800 33,Q!atnRTMliktaVUhMVID:localhost:8800  +Q !atnRTMliktaVUhMVID:localhost:8800  ,Q!aiOswwhoZqjhcjzbzc:localhost:8800^^,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!aknLNLxfChlLvFYhkJ:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800,Q!awHAhLuEkavTGACcUW:localhost:8800+Q !awHAhLuEkavTGACcUW:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800 ,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800,Q!aaRwQZdNAliyvRHpjs:localhost:8800+Q !aaRwQZdNAliyvRHpjs:localhost:8800,Q!aWvVRVaDflYyyGTOdD:localhost:8800 ,Q!aWvVRVaDflYyyGTOdD:localhost:8800 -,Q!aiOswwhoZqjhcjzbzc:localhost:8800__+Q !anErKtXIsVKEEsrzWM:localhost:8800NN,Q!aiOswwhoZqjhcjzbzc:localhost:8800aa,Q!aiOswwhoZqjhcjzbzc:localhost:8800`` 6~KX f  V  y <  ( q 6G3?\j{DT~ ]<Q3 !ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels ^Q']!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800 BQ? !ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibility :Q/ !ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rules :Q/ !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rules MBQ? !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibility N6Q' !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.create J6Q' !ZNIjCvcWhgcwskanjT:localhost:8800m.room.create <Q3 !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels \^Q']!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800 _RQ'E!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455 ^:Q/ !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules `BQ? !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibility T6Q' !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create ]<Q3 !YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levelsh^Q']!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800gHQ'1!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800l:Q/ !YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rulesiBQ? !YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibilityj<Q3 !YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_accessk6Q' !YufaOfAlruTdjyUCwO:localhost:8800m.room.createf<Q3 !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels^Q']!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800:Q/ !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rulesBQ? !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibility6Q' !YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create<Q3 !YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels ^Q']!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800 RQ'E!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455 :Q/ !YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rules BQ? !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility 6Q' !YpcmaMNMzjvtgYtrli:localhost:8800m.room.create <Q3 !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levels ^Q']!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800 :Q/ !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules BQ? !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility 6Q' !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.create <Q3 !YgaGPEraeLCqHQirin:localhost:8800m.room.power_levelsC^Q']!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800<:Q/ !YgaGPEraeLCqHQirin:localhost:8800m.room.join_rules@BQ? !YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility?<Q3 !YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access>6Q' !YgaGPEraeLCqHQirin:localhost:8800m.room.create;<Q3 !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels ^^Q']!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800 ]:Q/ !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rules _BQ? !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibility a6Q' !YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create \<Q3 !YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels4Q# !YQATbgbLImCDamiDHC:localhost:8800m.room.name^Q']!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800^Q']!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800:Q/ !YQATbgbLImCDamiDHC:localhost:8800m.room.join_rulesBQ? !YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibility7 -RM H C > 9 4/*|%w rmhc TQe!lAGTcYIuMBXsVRGCOe:localhost:8800$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-EgTQe!WVzjUePHrzCjfyTbmK:localhost:8800$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXoTQe!UyLoIXmzVFwycmBUeh:localhost:8800$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIT~Qe!lAGTcYIuMBXsVRGCOe:localhost:8800$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0T}Qe!WVzjUePHrzCjfyTbmK:localhost:8800$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgT|Qe!UyLoIXmzVFwycmBUeh:localhost:8800$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDoT{Qe!lAGTcYIuMBXsVRGCOe:localhost:8800$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60QTzQe!WVzjUePHrzCjfyTbmK:localhost:8800$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8TyQe!UyLoIXmzVFwycmBUeh:localhost:8800$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMTxQe!lAGTcYIuMBXsVRGCOe:localhost:8800$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUTwQe!WVzjUePHrzCjfyTbmK:localhost:8800$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8ETvQe!UyLoIXmzVFwycmBUeh:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgTuQe!lAGTcYIuMBXsVRGCOe:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwITtQe!WVzjUePHrzCjfyTbmK:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosTsQe!WVzjUePHrzCjfyTbmK:localhost:8800$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4TrQe!lAGTcYIuMBXsVRGCOe:localhost:8800$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wTqQe!UyLoIXmzVFwycmBUeh:localhost:8800$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQTpQe!nteAxExBGJfaGIpuCx:localhost:8800$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0oToQe!nteAxExBGJfaGIpuCx:localhost:8800$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkoTnQe!nteAxExBGJfaGIpuCx:localhost:8800$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tETmQe!nteAxExBGJfaGIpuCx:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsTlQe!nteAxExBGJfaGIpuCx:localhost:8800$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksTkQe!itKDOCtoMkFUETDtle:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8TjQe!itKDOCtoMkFUETDtle:localhost:8800$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8TiQe!itKDOCtoMkFUETDtle:localhost:8800$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukThQe!itKDOCtoMkFUETDtle:localhost:8800$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4TgQe!itKDOCtoMkFUETDtle:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YTfQe!itKDOCtoMkFUETDtle:localhost:8800$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYTeQe!qxqNYKdtgvOQdhmgsj:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4TdQe!qxqNYKdtgvOQdhmgsj:localhost:8800$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYTcQe!qxqNYKdtgvOQdhmgsj:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4TbQe!qxqNYKdtgvOQdhmgsj:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgTaQe!qxqNYKdtgvOQdhmgsj:localhost:8800$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoT`Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4T_Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMT^Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYT]Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0T\Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_MT[Qe!qxqNYKdtgvOQdhmgsj:localhost:8800$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUTZQe!qxqNYKdtgvOQdhmgsj:localhost:8800$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQTYQe!qxqNYKdtgvOQdhmgsj:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUTXQe!qxqNYKdtgvOQdhmgsj:localhost:8800$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwTWQe!MlzmtUYSZOiByAZdKx:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgTVQe!MlzmtUYSZOiByAZdKx:localhost:8800$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogTUQe!MlzmtUYSZOiByAZdKx:localhost:8800$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc V< L G TDNo ie'Q ]$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fsm.room.member!nteAxExBGJfaGIpuCx:localhost:8800m/m@anon-20191002_181700-168:localhost:8800h e'Q  ]$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksm.room.create!nteAxExBGJfaGIpuCx:localhost:8800mAm@anon-20191002_181700-168:localhost:8800 ge'Q /$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8m.room.member!itKDOCtoMkFUETDtle:localhost:8800m6m@8:localhost:8800,fe?Q ]$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8m.room.history_visibility!itKDOCtoMkFUETDtle:localhost:8800mm@anon-20191002_181700-167:localhost:8800$ee/Q ]$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukm.room.join_rules!itKDOCtoMkFUETDtle:localhost:8800mmu@anon-20191002_181700-167:localhost:8800&de3Q ]$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4m.room.power_levels!itKDOCtoMkFUETDtle:localhost:8800mm+@anon-20191002_181700-167:localhost:8800 ce'Q ]$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Ym.room.member!itKDOCtoMkFUETDtle:localhost:8800m m@anon-20191002_181700-167:localhost:8800b e'Q  ]$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYm.room.create!itKDOCtoMkFUETDtle:localhost:8800m`m@anon-20191002_181700-167:localhost:8800&ae3Q ] $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oYm.room.guest_access!qxqNYKdtgvOQdhmgsj:localhost:8800 mm@anon-20191002_181700-166:localhost:8829 `e'Q / $l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4m.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800 mm@7:localhost:8800 _e'Q / $oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgm.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800 mm/@7:localhost:8800&^e3Q ] $pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEom.room.guest_access!qxqNYKdtgvOQdhmgsj:localhost:8800 mma@anon-20191002_181700-165:localhost:8800&]e3Q ] $Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4m.room.power_levels!qxqNYKdtgvOQdhmgsj:localhost:8800 mm@anon-20191002_181700-165:localhost:8800 \e'Q ]$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMm.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800m|m}Z@anon-20191002_181700-166:localhost:8829![e)Q ]$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYm.room.aliases!qxqNYKdtgvOQdhmgsj:localhost:8800mymz@anon-20191002_181700-165:localhost:8800,Ze?Q ]$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0m.room.history_visibility!qxqNYKdtgvOQdhmgsj:localhost:8800mumw@anon-20191002_181700-165:localhost:8800$Ye/Q ]$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Mm.room.join_rules!qxqNYKdtgvOQdhmgsj:localhost:8800ms:mtd@anon-20191002_181700-165:localhost:8800)Xe9Q ]$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUm.room.canonical_alias!qxqNYKdtgvOQdhmgsj:localhost:8800mpmq>@anon-20191002_181700-165:localhost:8800&We3Q ]$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQm.room.power_levels!qxqNYKdtgvOQdhmgsj:localhost:8800mm=mnE@anon-20191002_181700-165:localhost:8800 Ve'Q ]$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUm.room.member!qxqNYKdtgvOQdhmgsj:localhost:8800mjmk0@anon-20191002_181700-165:localhost:8800U e'Q  ]$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwm.room.create!qxqNYKdtgvOQdhmgsj:localhost:8800mfmg@anon-20191002_181700-165:localhost:8800 Te'Q /$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgm.room.member!MlzmtUYSZOiByAZdKx:localhost:8800m^m_;@6:localhost:8800 Se'Q /$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wogm.room.member!MlzmtUYSZOiByAZdKx:localhost:8800mZm[W@6:localhost:8800&Re3Q ]$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scm.room.guest_access!MlzmtUYSZOiByAZdKx:localhost:8800mVmW{@anon-20191002_181700-164:localhost:8800 + l+uUeQ_y$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 726}{"auth_events": ["$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw"], "prev_events": ["$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw"], "type": "m.room.member", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-165", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-165:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040932991, "hashes": {"sha256": "W/xtbyHN3TEn+GP496tCGl4h5OVPPTC/3H/sKKM06vQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vr43CzfKBjEdKK+4mwXe0hIlhIk80k0OrTq4IeCe0J041zrztt5zHwPhbrHdoPubyh7WmNoHycqv2SHDAeMyDw"}}, "unsigned": {"age_ts": 1570040932991}}hTeQ__$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 725}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-165:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040932081, "hashes": {"sha256": "8M/3pLJfCc4zc6+XatmyX+k0md+7SeagTwDjiFwOFs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hBhQpobUfZ2RNTAzVqm93WEfqNELHyj1ozWEhv/pAKQE9zK7QzbOgNu+gnVOATnt/+xA1TaQ4jSnOF5kb3WAAw"}}, "unsigned": {"age_ts": 1570040932081}}XSeQ=a$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg!MlzmtUYSZOiByAZdKx:localhost:8800{"stream_ordering": 724}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI"], "prev_events": ["$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog"], "type": "m.room.member", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@6:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "creeper", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@6:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040929965, "hashes": {"sha256": "VSu/okp3Sep08QBIpUhyb6QabWqpWGiSox6JvZMyuKg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vfrSp/0iCGA4DEJjv3mNgT8f10orbWW2LXDfuV2G8l02iaU9A9dtPdocVJPPUjVrJjX0dc25YpG1gX7wHVnDDQ"}}, "unsigned": {"age_ts": 1570040929965, "replaces_state": "$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog"}}ReQ=Q$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog!MlzmtUYSZOiByAZdKx:localhost:8800{"stream_ordering": 723}{"auth_events": ["$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc", "$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8", "$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI"], "prev_events": ["$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc"], "type": "m.room.member", "room_id": "!MlzmtUYSZOiByAZdKx:localhost:8800", "sender": "@6:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "6", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@6:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040928921, "hashes": {"sha256": "Rsys+nAeIJRbJj5bqP6sXJrAbKnM5hufVyf6NEDCuO4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rNEVdb5cxZri2J35G+lFgnVRd2KCeEyRTgyTVX1dKAd5LPFu9yzlJdnKun559wC7Pw3V8z/is9+h5fKXoChZCg"}}, "unsigned": {"age_ts": 1570040928921}}  t drJ{1a%E@11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRSxDaUN4SGZIRTQjWUxJbAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDRs-ffUemCTWinkCFDGYbanMbjSiUB8-Nm-RndeIcAtCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m+a]c!E@anon-20191002_181700-170:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFUwa1EuNSM1aFRLanE1QDEKMDAyZnNpZ25hdHVyZSDahbGCMR04ilzPJrOd_D_3-SzOZrZzmh7w0Uea2HVXXwoSULWIONTNX127.0.0.1Perl + Net::Async::HTTP/0.44m']c!E@anon-20191002_181700-169:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB2SDpiQWNKMW13QjpOOkEKMDAyZnNpZ25hdHVyZSBC7rhQEXLfVBOkX97k84uFmQpNGN-fyKBL3qQ3kApXkAoMFKRKTWRFR127.0.0.1Perl + Net::Async::HTTP/0.44mµ]c!E@anon-20191002_181700-168:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEzLUFEYW1-ZEpSSXd2SWcKMDAyZnNpZ25hdHVyZSDndi6HmuFRwBtZb5eZRki3nKcylctGqeqG270mHdbK9woLFMVYJKZWW127.0.0.1Perl + Net::Async::HTTP/0.44mZ/%!E@8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6NDg4WTJ5QVRXUGk5QXZKCjAwMmZzaWduYXR1cmUgvLzn0wH0-sfnWpaRwSxJHZ0wtTVPh2Z7w5K2gN3eocoKSPYUTHBEKD127.0.0.1Perl + Net::Async::HTTP/0.44m2x/]%E@8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSB6d3NWM2ZicnRyM3lRbGlsCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgcajuWqQWVZJZ4N46e0cYOyxlQ44hNCyrjs_BbbpZQUoKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m\]c!E@anon-20191002_181700-167:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFl6eTtmJmthNTBvSz05NGsKMDAyZnNpZ25hdHVyZSAID6CazeAl-p5824MvsoSAggvayLP0KJhBNcXRQal5iwoCZRBBMXBTZ127.0.0.1Perl + Net::Async::HTTP/0.44mx/]%E@7:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBHR3FtVDJSJm49NWNOWXEmCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgv9X5LbiYTmJlZGf63oLZ5jpPigCq9uv2saobAmUqhSwKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44my]c!E@anon-20191002_181700-165:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgoYDADSUNIXE127.0.0.1Perl + Net::Async::HTTP/0.44mfx /]%E@6:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNGNpZCB1c2VyX2lkID0gQDY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMZnlQQVc6LSo2M1dqXlIjCjAwMTVjaWQgZ3Vlc3QgPSB0cnVlCjAwMmZzaWduYXR1cmUgQcV1gU-zOQ0MGI70Woi2nKJui6104TaX8QB36thjEEUKguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mY? ~z v r n j n~&6FVfvu/Q]Q!kAxKaIQhXTtGFWSUgr:localhost:8800@anon-20191002_181700-473:localhost:8800$1570042738251iukAg:localhost:8800joinu.Q]Q!WhLedNwPGGGTtqeqam:localhost:8800@anon-20191002_181700-471:localhost:8800$1570042731243YuOkC:localhost:8800joinu-Q]Q!yLccBXjjEasExpsXlt:localhost:8800@anon-20191002_181700-469:localhost:8800$1570042720226wSTBF:localhost:8800joinu,Q]Q!PcvmCDeVUSyJbXpTig:localhost:8800@anon-20191002_181700-467:localhost:8800$1570042711216KdEEo:localhost:8800joinu+Q]Q!HbYxdEuVIeLKHwqJEh:localhost:8800@anon-20191002_181700-465:localhost:8800$1570042702206BIYsS:localhost:8800joinu*Q]Q!FbJSiQoZtZkaFwzzQq:localhost:8800@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800joinu)Q]Q!FbJSiQoZtZkaFwzzQq:localhost:8800@anon-20191002_181700-463:localhost:8800$1570042694196OHsWc:localhost:8800joinu(Q]Q!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-462:localhost:8800$1570042691193uVdPZ:localhost:8800joinu'Q]Q!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-461:localhost:8800$1570042686186Qxqmn:localhost:8800joinu&Q]Q!RYNJAGdRhIlwRZFbrO:localhost:8800@anon-20191002_181700-460:localhost:8800$1570042679179ZJCqE:localhost:8800joinu%Q]Q!MqstbCLZIQFiYNHrqR:localhost:8800@anon-20191002_181700-458:localhost:8800$1570042671171AQZaz:localhost:8800joinu$Q]Q!WuiaqqIOvBjgETqdus:localhost:8800@anon-20191002_181700-456:localhost:8800$1570042664163IAHXd:localhost:8800joinu#Q]Q!bQDOrbAknnQZfUbhgS:localhost:8800@anon-20191002_181700-454:localhost:8800$1570042654147iSsjl:localhost:8800joinu"Q]Q!GSxvxNevpCiwmFCHys:localhost:8800@anon-20191002_181700-452:localhost:8800$1570042645137fBnPZ:localhost:8800joinu!Q]Q!yfizglmCXdcqCgDrTr:localhost:8800@anon-20191002_181700-450:localhost:8800$1570042634127eDBry:localhost:8800joinu Q]Q!XnUZiYJDWVNGfsBnGz:localhost:8800@anon-20191002_181700-449:localhost:8800$1570042632124bMwzE:localhost:8800joinuQ]Q!XnUZiYJDWVNGfsBnGz:localhost:8800@anon-20191002_181700-448:localhost:8800$1570042626117sfUAQ:localhost:8800joinuQ]Q!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-447:localhost:8800$1570042623114pBHTz:localhost:8800joinuQ]Q!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-446:localhost:8800$1570042617107cANtu:localhost:8800joinuQ]Q!YGUjVdVdpcQoGkRnWB:localhost:8800@anon-20191002_181700-445:localhost:8800$1570042611100ueDzK:localhost:8800joinQ]e!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-443:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPEleaveQ]e!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-444:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYjoinQ]e!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-442:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-441:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-440:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-439:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_QsjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-438:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-437:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMjoinQ]e!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-436:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsjoinQ]e!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-435:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70joinQ]e!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-434:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMjoinQ]e!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-433:localhost:8800$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sjoin  g 4 h531cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEyOm1aOWtBTU5mNjtLNn4KMDAyZnNpZ25hdHVyZSAJNq38xYsAafEMGJjV-gyFAhEIRQMSyJcyHE_26icm3Ao΂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1AoÂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHMxS2NQZ2VtLGJvcCZibkMKMDAyZnNpZ25hdHVyZSA3TN7LnS5yl4h57FSwjwg9GfgdePN17_r5hXeFHnU2RAo͂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZLT3hqPWp5PU9uRCM1VEMKMDAyZnNpZ25hdHVyZSC2EoqChhKnAKlLFg2seUiR0-JQqprG-ktdGIfMC6k8qAô1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtlMlJqT3UqWEIsNSs3YzAKMDAyZnNpZ25hdHVyZSA1yZh7wJF3PyG6ywgs4xxgTMQPJbBMDXW2BrgJlZc33go˂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl0LCxpVnpnPWN4OFdEdyoKMDAyZnNpZ25hdHVyZSAvHPED72aJ9dwVSH5v0uE3tWyTMdN6NBhOex2nXfW16Qoʂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVidUpNVXhuOGZWLl8zRUcKMDAyZnNpZ25hdHVyZSCXgK_fzAECd6qxDK5bXpGq3bXHnw2u9AkinbzsoF1L7woɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAjPUM3bmpqTndOZnYrMUoKMDAyZnNpZ25hdHVyZSC_kz-E8YmMBNcAclPvn3n3UpiiaFAKSaPlBkz2lbFOAQoȂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZHK005MFlxMkksc35acnoKMDAyZnNpZ25hdHVyZSB77-Jon2mI9xbF7QXvmsgb-UWL0tcYtDp9oWaY2oeTbQoǂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG00TmlBRUNYaklfIzUxQy0KMDAyZnNpZ25hdHVyZSAhw-vznghM1qodIeuqnym4f7ESqx4RXazHU0ls-7TVmQoƂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwoł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1Qo  o : f1U7a1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEYyNGYzNkRyKm1Xd2JuQ1MKMDAyZnNpZ25hdHVyZSBIAnwx7AG5jBEwlmCp8V5f5vcwkCse04obdrPp1IZBXgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHQqLT1oYjpzKkFMNWtsbkkKMDAyZnNpZ25hdHVyZSALqQiSY9cy5FoczntWD6U5rjuJdlVUvTiogXwvIxRZUgo/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCgx//aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3Cgm/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8Cg_ /aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTGc0Lis2MzYqM3VkXnNyUAowMDJmc2lnbmF0dXJlICIg6uN8HQaOzKNnj_FNg9FYNoiSqoT9TRnWywyeAag2CgHȂ/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCgBv/aMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCg5t-]MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsK#r$KMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzMmNpZCB1c2VyX2lkID0gQGNocnRlc3R1c2VyLTkyLTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJDOWxhTWhSQCNufixZZ3cKMDAyZnNpZ25hdHVyZSDzLoJ5dpqIz0rBvXCYhlb3v6jEWz4h-04531Su4LsFRgoqAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyZWNpZCB1c2VyX2lkID0gQGNhc191c2VyPTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLmRpRWFhYk9OTTZ2OEh1SgowMDJmc2lnbmF0dXJlILOLH5HPvjexcEbks8f9RkkMx8yxtyhQZPbH0mI8YfWkCgM l [ $  lH57g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMuO3R3Z0lFdHlFNTFhOEoKMDAyZnNpZ25hdHVyZSA9WCMhYxIQ6llnmPpchLmEr6jOQg0B6NxG_uxP6dlbywo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQom#1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQo`g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmQkcsd34xVTBlNml5TTAKMDAyZnNpZ25hdHVyZSABdTcPgyX8yVTD-6TbXkRBMIld0slF_WoLEFV4QpTzWwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3Ao"1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0Qo!1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBLSjRYeXQ3R0B-X3RSOkkKMDAyZnNpZ25hdHVyZSAFX_b11eBwS97oCMz-uAp99gjpBtPRgBv8NVG-G8slwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgo"1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwo-݂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgo  ] \eQ_'$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 733}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM"], "type": "m.room.power_levels", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"users_default": 0, "ban": 50, "invite": 0, "redact": 50, "events": {"m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50}, "events_default": 0, "state_default": 50, "kick": 50, "users": {"@anon-20191002_181700-165:localhost:8800": 100, "@anon-20191002_181700-166:localhost:8829": 50}}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040938381, "hashes": {"sha256": "TRGYk9bjliqdB0APsW5IB9MgcW66qeDqBHErJDaVvp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QQpbm/eHCl3I8ENb8rUy2zRACqtdxO/gE7D8xF6ZIi66rlwFvz8MopErfMrDNtfGviJ73RJ4H3WSm9jOs4HOCA"}}, "unsigned": {"age_ts": 1570040938381, "replaces_state": "$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ"}}p[eQ/$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 732}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-166", "membership": "join"}, "depth": 8, "hashes": {"sha256": "gChUSbLAaNI/y5ABTWOiViUxz4OwecPxqH7aNnnKSE8"}, "origin": "localhost:8829", "origin_server_ts": 1570040937625, "prev_events": ["$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY"], "prev_state": [], "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-166:localhost:8829", "state_key": "@anon-20191002_181700-166:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OQQWnCisAN/0BxdZ4qb5NkyvRHTe1tatf6NqfwdcVNT2STgktlyukjwK0j9Y7rpKSfJg1hq/fuyExR9Evv20AQ"}, "localhost:8829": {"ed25519:a_UxIG": "P5/nzhrdGIrXZs3wVexeEO+Su+qA6Y1JhHjGML69tGcwUZvemZWQNtOJXC5K6YCJN4N0E+TRsFXD2qMoev4RAA"}}, "unsigned": {"age": 86}}ZeQ_M$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 731}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0"], "type": "m.room.aliases", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"aliases": ["#test-20191002_181700-28:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040936848, "hashes": {"sha256": "3dVyDkKViP1qpA+712SWkKtq8Ai3slTdahlCZM6tmZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BldUYAfTa2qbsTHUKLru9qOFy5KWdeIwmI0huOTuaChEGeqCiWdtQs7JCKZ91raUyCASE7EqhbUioUOLp8VOBg"}}, "unsigned": {"age_ts": 1570040936848}}  YeQ_$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 730}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M"], "type": "m.room.history_visibility", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040935892, "hashes": {"sha256": "n/GKVyUUxSsri0xC3elyT/ZKvOQah6XKtC6WoPdkghI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Afchiy5alLPPjBefYZ6yms+POCNaDjr1ZN+kDNbP5SnqNs9PXlGg9+Kd1eQL52CsOWYI+VRoCkl70ybEjul7AA"}}, "unsigned": {"age_ts": 1570040935892}}sXeQ_u$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 729}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU"], "type": "m.room.join_rules", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040935226, "hashes": {"sha256": "MHiEngugWmsfKfYjYpq+l/jJBMfmNWJxzGxb5cfh9oA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EeCYJUCW8pXpFJHPJJgsSsWhVx4Ws65E+sn+qXnzw7Id3uk0c7vRYe8YSuMRbapyhNNSSes75dpuKa9LSvVqCQ"}}, "unsigned": {"age_ts": 1570040935226}}WeQ_9$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 728}{"auth_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ"], "type": "m.room.canonical_alias", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"alias": "#test-20191002_181700-28:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040934527, "hashes": {"sha256": "r30d2Ik2EKdp8nkR7MyY25EqDUGXJyaqL7X+DaWa2mg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7sp0dhGxxf4R3KSuSUbnuNaISKGTexC8y1r/6s1HvewxUGxDC2p/8Et+COSFa0e3/1p9/mXPNTxQmJz8LDgtBw"}}, "unsigned": {"age_ts": 1570040934527}}jVeQ_c$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 727}{"auth_events": ["$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "type": "m.room.power_levels", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"users": {"@anon-20191002_181700-165:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040933693, "hashes": {"sha256": "quHy36fFN7PRtSK87/X4cJZ+T2ihm4TRCBrHzMvoqTA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "olU+vREEw0BoyLecCk2i/aVtps2DBONp2D+fpE6sevsJj/PH5ZmzPWz6gXPqL3ZSqExKC2S6uS9UyLceJEMmAw"}}, "unsigned": {"age_ts": 1570040933693}} L,2p>  & v D   | J 8 Q  j W % ^ ,d,j8^p> wEX~LR j8d1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q n1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 f1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc Z1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg +1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I b1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Yg1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho01e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg\1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ey1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EH1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKsI0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoT1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE71e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IV1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AE1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4C1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwj1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w]1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qss1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE:1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMs1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4%1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA[1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU&1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkO0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAc1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY1e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD701e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI<1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQl1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4s1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI 1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwL1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8x1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE41e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM 1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ/1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY n1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw Y1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg S1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI B !y#E ? 8   ?`cP03Yym*Q9 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_alias$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qm)Q9 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_alias$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8j(Q3 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levels$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMj'Q3 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levels$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUj&Q3 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E %Q']e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg $Q']e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI #Q']e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosd"Q' e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.create$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4d!Q' e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.create$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wd Q' e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.create$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQpQ? e!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibility$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ohQ/ e!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rules$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkojQ3 e!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE Q']e!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsdQ' e!nteAxExBGJfaGIpuCx:localhost:8800m.room.create$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksuQ'/e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8pQ? e!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibility$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8hQ/ e!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rules$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukjQ3 e!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4 Q']e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YdQ' e!itKDOCtoMkFUETDtle:localhost:8800m.room.create$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYQ3 ee!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!Q'/ee!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqguQ'/e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgjQ3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_access$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEoQ3 ee!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ Q']e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpMsQ))e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYp Q? e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibility$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0h Q/ e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rules$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_Mm Q9 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_alias$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUj Q3 e!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ N)U [ ) $  C# ua /  U { h6 j n<  t[B {Ip8  > IP O  1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 81e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA *1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI ]1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 q1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk;1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY,1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0s1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68y1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkq1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwd1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s51e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwK1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAa1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk{1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0V1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMP1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UW1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY11e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490 1e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU}1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY.1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA {1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 /1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg C1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8#1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 `1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsj1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgb1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA^1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc n1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g a} { y w u sqomkigeca~qeeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~peeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800~oeeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800~neeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~meeQ$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800~leeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800~keeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~jeeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800~ieeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800~heeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~geeQ$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800~feeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800~eeeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~deeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~ceeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800~beeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~aeeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~`eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800~_eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~^eeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~]eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~\eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~[eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800~ZeeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~YeeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~XeeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~WeeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800~VeeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800~UeeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800~TeeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800~SeeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800 #s * K Z  ? Hp D*3_Hpm1eQ? $75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibilitym0eQ? $3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibilitym/eQ? $TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibilitye.eQ/ $p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rulese-eQ/ $4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rulese,eQ/ $nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rulesj+eQ9 $seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_aliasj*eQ9 $5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_aliasj)eQ9 $rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_aliasg(eQ3 $60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levelsg'eQ3 $BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levelsg&eQ3 $x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels %eQ']$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800 $eQ']$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800 #eQ']$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800a"eQ' $F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800m.room.createa!eQ' $RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.createa eQ' $HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800m.room.createmeQ? $85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibilityeeQ/ $0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rulesgeQ3 $e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels eQ']$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800aeQ' $K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800m.room.createreQ'/$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800meQ? $cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibilityeeQ/ $WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rulesgeQ3 $xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels eQ']$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800aeQ' $gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800m.room.creategeQ3 $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accessreQ'/$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800reQ'/$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800geQ3 $pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accessgeQ3 $Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levels eQ']$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829 y <y?`eQa $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800{"outlier": false, "stream_ordering": 737}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM"], "content": {"guest_access": "forbidden"}, "depth": 11, "hashes": {"sha256": "Q3ca4EP9yojvW3AaVN9Cmx5XapEVsq1dcG8Y91emwcI"}, "origin": "localhost:8829", "origin_server_ts": 1570040940782, "prev_events": ["$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo"], "prev_state": [], "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-166:localhost:8829", "state_key": "", "type": "m.room.guest_access", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "f33OCN8BqqaHiloZQ3gHJKjl0+0NPTNgj7h+p+BIZHo/1Z8jMMw3/dgd/wts451sVEuhcLGemZYCg4P471vwBg"}}, "unsigned": {"age_ts": 1570040940782, "replaces_state": "$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo"}},_eQ= $l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800{"stream_ordering": 736}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg"], "prev_events": ["$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg"], "type": "m.room.member", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@7:localhost:8800", "content": {"membership": "leave", "kind": "guest"}, "depth": 12, "prev_state": [], "state_key": "@7:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040941799, "hashes": {"sha256": "G1potxuH6QAfO/STtq+OvEx/0HFpd5NKBaYxXqJezoo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XUcSco4BqIcuXPMAUXMD3hTCGLKxFCwgOMO5THgWi/qO9wnlfN2Yt6NdeRBTvHqszj5tkxJ1dDvxfuqi4SaUAw"}}, "unsigned": {"age_ts": 1570040941799, "replaces_state": "$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg"}}^eQ=S$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800{"stream_ordering": 735}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M"], "prev_events": ["$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo"], "type": "m.room.member", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@7:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "7", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@7:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040940503, "hashes": {"sha256": "QsFi3HtWfAGQ8vG2RlET29V6/7leFAKhPIWb5pBei6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zIRJQJq8EZNW6bewx/KSFu9wICAxge7HPU/TmDj9awsiEaJC98WcMtCLYBFT1Uxe2U/6CA6mv3y0fjD2Ca6HDA"}}, "unsigned": {"age_ts": 1570040940503}}{]eQ_$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800{"token_id": 189, "stream_ordering": 734}{"auth_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4", "$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw", "$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU"], "prev_events": ["$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4"], "type": "m.room.guest_access", "room_id": "!qxqNYKdtgvOQdhmgsj:localhost:8800", "sender": "@anon-20191002_181700-165:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040939688, "hashes": {"sha256": "U2/V9gdu6k7zcwayoYeQI/dgkJhk9BBjPVebb2FcXFw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RSVaBGIL0lwToiGzACHfXEOYH/UfdpaD1dJjjwx5BIPfJ8oVqWiRkX2mX093dr22Jpjoke9+7gQusr84BN7MCw"}}, "unsigned": {"age_ts": 1570040939688}} N p V $ 3 > D ^, ^ - P ek9q? | J x vF~LR &j8X1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd41e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd41e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsf1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dse1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsd1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMN1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMM1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iML1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok w1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfws1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY |1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY {1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4\1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8 b1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg j1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg i1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg h1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY c1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY b1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY a0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ,1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs f1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs e1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs d1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwu1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwt1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo 0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc|0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc{0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcz1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYH1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd41e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kb1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_ka1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k`1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYE1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYG1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYF1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcY1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD&5rcTE6' sdU7F( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m==m<<m;;m::m99m88m777m66m55mL44m33m22mV11m00m//ma..m--m}!,,mz++mx**mv))ms,((mm''mj&&mhm%%me$$mcc##ma""m^!!mW  mT mQmOmMmI>mBm>Dm<m9Am4.m1m-Mm&2m>m@m<mmm ?  m >  mv  mu  m  mmemcm9m;m|m{mmmkmmmmOmNmLmmmm.m-m,mɍmɎmɐmmmmmbmm/mAm6mmmm m`mmmmmm|mymums:mpmm=mjmfm^mZmVmRmPMmL2mImFjm=qm<m9qm6*m1m/Am,mF[[mBZZm@YYm=XXm7gWWm2sVVm,UUm(ETTm%SSm#lRRm LQQmPPmOOmXNNmiMMm LLm *KKmyJJmwIImcHHmTGGmFFmEEmDDmGCCmHBBmAAm@@mY??mB>>m*m'm_mm&mm#mmm mKmmmmqmmmmxm+m mbmԘmmm`mmmmkmmmm8mmLmm%mm}m{Bmx\muKmr0mjmeYm\8mWmUDmRPmOmKm>m:m5Pm3m0m.cm*Lm'm% #Q 5 L W  C N0X}5a} !FQ bQ']e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMcaQ' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.create$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qc`Q' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.create$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncr_Q))e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYr^Q))e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAr]Q))e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgo\Q? e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibility$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4o[Q? e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibility$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-EgoZQ? e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibility$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXogYQ/ e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rules$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIgXQ/ e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rules$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0gWQ/ e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rules$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICglVQ9 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_alias$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDolUQ9 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_alias$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60QlTQ9 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_alias$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8iSQ3 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levels$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMiRQ3 e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levels$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUiQQ3 e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E PQ']e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos OQ']e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI NQ']e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgcMQ' e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.create$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4cLQ' e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.create$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wcKQ' e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.create$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQoJQ? e!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibility$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ogIQ/ e!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rules$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkoiHQ3 e!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE GQ']e!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FscFQ' e!nteAxExBGJfaGIpuCx:localhost:8800m.room.create$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhkstEQ'/e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8oDQ? e!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibility$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8gCQ/ e!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rules$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukiBQ3 e!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4 AQ']e!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Yc@Q' e!itKDOCtoMkFUETDtle:localhost:8800m.room.create$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY   -sdeQ_u$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 741}{"auth_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4", "$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "prev_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4"], "type": "m.room.join_rules", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040946627, "hashes": {"sha256": "/BjnefDfv8oNTqpIQUJxlXjCjx5/H+Hr5jAexzjCRdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EzCa/NCMoNA1owMXG+KECjRJH4oBcoqArKMAMHZJqeP4olY/qUYePPcMv4UKjy5vhk4lOj1nx8Heb6JUGyTFDQ"}}, "unsigned": {"age_ts": 1570040946627}}jceQ_c$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 740}{"auth_events": ["$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "prev_events": ["$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "type": "m.room.power_levels", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"users": {"@anon-20191002_181700-167:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040945845, "hashes": {"sha256": "U6+GMrDk6ej7Xa8OGe0+HiP800Rctd2kgyAflTj4jmk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nDdPIZwnx3SUanjoyrSWseGt6dUTUEnFWPTarc/S4+4nqqNZPXTSAWQLS17Nn8Al4EAHtFCurfEeHK3V0RhxCQ"}}, "unsigned": {"age_ts": 1570040945845}}ubeQ_y$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 739}{"auth_events": ["$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY"], "prev_events": ["$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY"], "type": "m.room.member", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-167", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-167:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040945184, "hashes": {"sha256": "XYnVTvDuCkBAIYRmoQvu0i+fpdUIBUaKrxxYgOLV6bU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AsFvBqPQS8K+PJ47fIvQmYEr9J8Su6fWl4B1TOXPUNLZ85sX0XJ6FUE540Annq5AtkEbTB/vVFiv8wvQUGQDBg"}}, "unsigned": {"age_ts": 1570040945184}}haeQ__$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 738}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-167:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040944224, "hashes": {"sha256": "eN9n6ZfXGyZfocJgui9Cj+TRduToZpaIqOnPrtjy4Kk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xs21qnDa7a1sAO1jPcHDeCWQb7uRZ9opRwucqJu/eMIr96TJ/NKauCkJGhC3YtTLjlu2nJfXonHrvUXIIYokAA"}}, "unsigned": {"age_ts": 1570040944224}}  xuheQ_y$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 745}{"auth_events": ["$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks"], "prev_events": ["$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks"], "type": "m.room.member", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-168", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-168:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040951855, "hashes": {"sha256": "odskUCKU38xDBMeVIvVCsCwhm+USgjnQJoUIuaTZhvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PfQisXt75bYZOk4GGwRK4S/1LqAmp94GeGQXrrqj/CJj+3IH0MwsVqopHYFlSywLFyH49Uj8RgzcmOlhxbwVDw"}}, "unsigned": {"age_ts": 1570040951855}}hgeQ__$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 744}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-168:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040951105, "hashes": {"sha256": "HNu/R9VxtbFVHzc3cvMR6p4apSNz/KbbMnARbdTFd5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ghMvYenW3+CkZQXKhBdo19btRIHhvwZiy72vSchIMN2AswtobwcRKOUzWiiXbKYN1lXz2215rYDmecieu0kuDw"}}, "unsigned": {"age_ts": 1570040951105}}feQ_/$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 191, "stream_ordering": 743}{"auth_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4", "$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk"], "prev_events": ["$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8"], "type": "m.room.member", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@8:localhost:8800", "content": {"membership": "join", "displayname": "8", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@8:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040948534, "hashes": {"sha256": "WYyws+ZA+e3zAI5EdY/6x5U6Ycy69dJDKRaUByabrRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x4t2t6S7b+7wZPk2z96sMoxEYoAnfePpxUQYLZDSHZVxUF4P7C+xrq6USIwGpqEV/ajJlUV4UiObMXyrdDuIDg"}}, "unsigned": {"age_ts": 1570040948534}}eeQ_$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800{"token_id": 190, "stream_ordering": 742}{"auth_events": ["$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4", "$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY", "$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y"], "prev_events": ["$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk"], "type": "m.room.history_visibility", "room_id": "!itKDOCtoMkFUETDtle:localhost:8800", "sender": "@anon-20191002_181700-167:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040947178, "hashes": {"sha256": "01IqVtITEkBPX3gtXbMxgcKgo+WaJiZ1oVVxzEyxmKE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uOUb2Z7JfSRicS4uJKw2KFQxuKSM+zJ3rP6tPqOJXFZR3z2tYjhdCKwD1T+EcZKslVeY/NAVm/PoqiHie2OtAw"}}, "unsigned": {"age_ts": 1570040947178}} a} { y w u sqomkigeca~eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~ eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~ eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~ eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~ eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~ eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~~eeQ$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~}eeQ$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~|eeQ$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~{eeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800~zeeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~yeeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800~xeeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800~weeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~veeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800~ueeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800~teeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~seeQ$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800~reeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800 8Cq#( P $  q  3YC!MsmneQ? $cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibilityemeQ/ $WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk!itKDOCtoMkFUETDtle:localhost:8800m.room.join_rulesgleQ3 $xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800m.room.power_levels keQ']$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800joinajeQ' $gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800m.room.creategieQ3 $1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accesswheQ'/$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800leaveeeQ/ $4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_ruleseeQ/ $nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rulesjeQ9 $seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_aliasjeQ9 $5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_aliasj~eQ9 $rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_aliasg}eQ3 $60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levelsg|eQ3 $BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levelsg{eQ3 $x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels zeQ']$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800join yeQ']$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800join xeQ']$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800joinaweQ' $F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800m.room.createaveQ' $RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.createaueQ' $HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800m.room.createmteQ? $85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibilityeseQ/ $0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rulesgreQ3 $e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levels qeQ']$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800joinapeQ' $K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800m.room.createvoeQ'/$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800join   6 l c]c@anon-20191002_181700-126:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkwaUJKR010aTdeTUpqciwKMDAyZnNpZ25hdHVyZSDwNFzBL3u3nE70GqeCLYkHxESI4bAaIVruAaV6mi_uvAo127.0.0.1kc]c@anon-20191002_181700-125:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5vMFYuUSYzWT1FZzc7V20KMDAyZnNpZ25hdHVyZSBI9UkDkqnkWcFTzQUFWoP3KJpUkn5SW8y_q8_9cfY_OAo127.0.0.1jc]c@anon-20191002_181700-124:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB3bXkmLEtBdXZiSjJ2MGcKMDAyZnNpZ25hdHVyZSBwj2oLoPx4biBLR-0s3t-iptK6hcoSGHghBK_nsi-iPwo127.0.0.1ic]c@anon-20191002_181700-123:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaZTtuKkEqdWFXeHZiejoKMDAyZnNpZ25hdHVyZSAc0SPONEgZE4xaGWkKBrpheBQs6JPif7Yo7OlOiZkM8Ao127.0.0.1hc]c@anon-20191002_181700-122:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVGLWQ2QFUwMjpkWDIyUT0KMDAyZnNpZ25hdHVyZSA6L41GzKz8PjEASAlZiwIiaVdjZa-J9u7dHamWJtUocgo127.0.0.1f Pk< sDa[{,L   2 r C     ZQ ,"    rf D7   o @ Z +   qU C' Y.Q!IGVHKYcSuxzVPlFHlj:localhost:8800th.Q!HIZTeBCxvpMSpcqGVD:localhost:8800th.Q!FZOLkaLbBpaibrbHZx:localhost:8800th.Q!EhFUhsgQbBWmrnGmaz:localhost:8800th.Q!EfJcWhdjNARbuHYrqU:localhost:8800th.Q!EyEaTZElOkdURKbEXo:localhost:8800th.Q!EieRtaCFZJJCIOkRPp:localhost:8800th.Q!EhUxBjnSkVXpTrQlrn:localhost:8800th.Q!FAYqpziHeVZugCGaij:localhost:8800th.Q!EyyNoldCLUdFHzXTDP:localhost:8800th.Q!FPcQcheNebvdFvmOnr:localhost:8800th.Q!FbJSiQoZtZkaFwzzQq:localhost:8800th.Q!GBPGYLDkXcAsHgkfuS:localhost:8800th .Q!HAFNBarGuVZuWCgwWM:localhost:8800th.Q!GwXGurbyEmykmmHcHJ:localhost:8800th.Q!GwLdUoDplyVUogXDzu:localhost:8800th.Q!GsjDgpaxdwYfnefiWO:localhost:8800th.Q!GixhPUMvtKSWoKRgvw:localhost:8800th.Q!GiSxJsKZhQVHBkrVPn:localhost:8800th.Q!GgUNbVXspVTpOlaHBl:localhost:8800th .Q!GSxvxNevpCiwmFCHys:localhost:8800th .Q!GGXyLHdVXqhQjPRvac:localhost:8800th .Q!GGTWnzJfvPQBgQqDIE:localhost:8800th .Q!EWkoFeckhXlNyjuIEB:localhost:8800m.Q!EMhFCPhwmnWVnjtXXM:localhost:8800th.Q!EMhFCPhwmnWVnjtXXM:localhost:8800m.Q!ELBgBaMSIMNkjFSumH:localhost:8800th.Q!ELBgBaMSIMNkjFSumH:localhost:8800m.Q!ILbUVZOfPPwaZRrKJd:localhost:8800th-Q!ILbUVZOfPPwaZRrKJd:localhost:8800md.Q!HusOrLtWZTLbmQZxmm:localhost:8800th.Q!HhYREfUiJTpjWmOuPF:localhost:8800th.Q!HcMGemcRrLnLprOJJR:localhost:8800th.Q!HbYxdEuVIeLKHwqJEh:localhost:8800th.Q!HZqzpRgqekPOtxstVc:localhost:8800th.Q!HXfrGcvJCbRItyQLVE:localhost:8800th.Q!HWTlaNxUKnDsrtlOxU:localhost:8800th.Q!HOPyhZPcKkrvSmDIvX:localhost:8800th.Q!ITdmSQpjMnaPoHIbws:localhost:8800m.Q!IPYMCBwcyNIzqdiIWv:localhost:8800th .Q!IPYMCBwcyNIzqdiIWv:localhost:8800m.Q!IMiczgkCTjejbnbeyP:localhost:8800th-Q!IMiczgkCTjejbnbeyP:localhost:8800mP-Q!IGVHKYcSuxzVPlFHlj:localhost:8800m".Q!HusOrLtWZTLbmQZxmm:localhost:8800m-Q!HmkcAMkMjWRhTDJMsy:localhost:8800m+.Q!HhYREfUiJTpjWmOuPF:localhost:8800m-Q!HcMGemcRrLnLprOJJR:localhost:8800m<.Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.Q!HZqzpRgqekPOtxstVc:localhost:8800m.Q!HXfrGcvJCbRItyQLVE:localhost:8800m.Q!HWTlaNxUKnDsrtlOxU:localhost:8800m.Q!HOPyhZPcKkrvSmDIvX:localhost:8800m-Q!HIZTeBCxvpMSpcqGVD:localhost:8800mO-Q!HAFNBarGuVZuWCgwWM:localhost:8800m%-Q!GwXGurbyEmykmmHcHJ:localhost:8800m?.Q!GwLdUoDplyVUogXDzu:localhost:8800m].Q!GsjDgpaxdwYfnefiWO:localhost:8800m-Q!GixhPUMvtKSWoKRgvw:localhost:8800m-Q!GiSxJsKZhQVHBkrVPn:localhost:8800mI-Q!GgUNbVXspVTpOlaHBl:localhost:8800m9.Q!GSxvxNevpCiwmFCHys:localhost:8800m.Q!GGXyLHdVXqhQjPRvac:localhost:8800m-Q!GGTWnzJfvPQBgQqDIE:localhost:8800m.Q!GBPGYLDkXcAsHgkfuS:localhost:8800mP.Q!FklhVuCInffbDxunWv:localhost:8800m.Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.Q!FZOLkaLbBpaibrbHZx:localhost:8800ml-Q!FPcQcheNebvdFvmOnr:localhost:8800ml-Q!FIOuvzpMhoERunVYYA:localhost:8800mz.Q!FAYqpziHeVZugCGaij:localhost:8800m.Q!EyyNoldCLUdFHzXTDP:localhost:8800m-Q!EyEaTZElOkdURKbEXo:localhost:8800m'-Q!EieRtaCFZJJCIOkRPp:localhost:8800mj.Q!EhUxBjnSkVXpTrQlrn:localhost:8800m/.Q!EhFUhsgQbBWmrnGmaz:localhost:8800m8.Q!EfJcWhdjNARbuHYrqU:localhost:8800m.Q!EWkoFeckhXlNyjuIEB:localhost:8800th.Q!FklhVuCInffbDxunWv:localhost:8800th.Q!FIOuvzpMhoERunVYYA:localhost:8800th FOY* o @  U & k < R # h 9 }N e6zKa3w[H,_0tuFF/.Q!NNiyzThHMivrxhojfp:localhost:8800thA.Q!NJdkYMskQwIpIWlWkn:localhost:8800th@.Q!NFWKQvZkIwvecnREOC:localhost:8800th?.Q!NajQnqYmGyTjxhFYar:localhost:8829thE.Q!NZHpBquHDfJAjiawGk:localhost:8800thD.Q!NQgavrmiCPUVaVjssy:localhost:8800thC.Q!NPdjmIfsBVIIkvWBzD:localhost:8800thBD..Q!NcJYmIbgjsaKJOzBcs:localhost:8800m.Q!NboFFVLpJHTeuUKCjM:localhost:8800thG.Q!NboFFVLpJHTeuUKCjM:localhost:8800m.Q!NanhNmCnVVpmZRJrTF:localhost:8800thF.Q!NanhNmCnVVpmZRJrTF:localhost:8800mp.Q!NajQnqYmGyTjxhFYar:localhost:8829m-Q!NZHpBquHDfJAjiawGk:localhost:8800m -Q!NQgavrmiCPUVaVjssy:localhost:8800mi.Q!NPdjmIfsBVIIkvWBzD:localhost:8800m.Q!NNiyzThHMivrxhojfp:localhost:8800m.Q!NJdkYMskQwIpIWlWkn:localhost:8800m.Q!NFWKQvZkIwvecnREOC:localhost:8800m.Q!MqstbCLZIQFiYNHrqR:localhost:8800th>.Q!MqstbCLZIQFiYNHrqR:localhost:8800m.Q!MlzmtUYSZOiByAZdKx:localhost:8800th=-Q!MlzmtUYSZOiByAZdKx:localhost:8800mS.Q!MXhwoqNXvexeDDSOZT:localhost:8800th<.Q!MXhwoqNXvexeDDSOZT:localhost:8800ma.Q!MWCLSWWGdWcSivNVLI:localhost:8800th;-Q!MWCLSWWGdWcSivNVLI:localhost:8800mq.Q!MBWnwKRwFznvRpAzxr:localhost:8800th:.Q!MBWnwKRwFznvRpAzxr:localhost:8800m.Q!LvARVIpJZeRQxbKefX:localhost:8800th9.Q!LvARVIpJZeRQxbKefX:localhost:8800m.Q!LazKtcHZriKzCvvGwV:localhost:8800th8.Q!LazKtcHZriKzCvvGwV:localhost:8800m.Q!LaLcEGFLpjdlYlYKGC:localhost:8800th7-Q!LaLcEGFLpjdlYlYKGC:localhost:8800m.Q!LFBhoxJpmBqFrwEzGP:localhost:8800th6.Q!LFBhoxJpmBqFrwEzGP:localhost:8800m.Q!KxhGcTbEWmtgGNpdox:localhost:8800th5-Q!KxhGcTbEWmtgGNpdox:localhost:8800m,.Q!KmuRTfGFgJdgIDAgIW:localhost:8800th4.Q!KmuRTfGFgJdgIDAgIW:localhost:8800m.Q!KetCYFxrTxawNOGnOf:localhost:8800th3.Q!KetCYFxrTxawNOGnOf:localhost:8800m.Q!KeqmSjifajNKxtgqhj:localhost:8800th2.Q!KeqmSjifajNKxtgqhj:localhost:8800m.Q!KeBlWUQiLYUoILKkTB:localhost:8800th1-Q!KeBlWUQiLYUoILKkTB:localhost:8800mZ.Q!KdOYYnOuwAyQzqwUki:localhost:8800th0.Q!KdOYYnOuwAyQzqwUki:localhost:8800m.Q!KcXNWNfbLcYsBKZHIp:localhost:8800th/.Q!KcXNWNfbLcYsBKZHIp:localhost:8800m.Q!KXMUzALpMMMKqoQXUS:localhost:8800th.-Q!KXMUzALpMMMKqoQXUS:localhost:8800mv.Q!KIHYKMzkRDrJwiywwz:localhost:8800th-.Q!KIHYKMzkRDrJwiywwz:localhost:8800m$.Q!JusxqeECtidaPlWqhp:localhost:8800th,-Q!JusxqeECtidaPlWqhp:localhost:8800mK.Q!JnAKXOrlyisFUpgJPw:localhost:8800th+.Q!JnAKXOrlyisFUpgJPw:localhost:8800m_.Q!JiUawCFQnodcpssOfK:localhost:8800th*.Q!JiUawCFQnodcpssOfK:localhost:8800m.Q!JZouHBRxCRbcxYJnbn:localhost:8800th).Q!JZouHBRxCRbcxYJnbn:localhost:8800m.Q!JYLMokjOhZZlmbZvTf:localhost:8800th(.Q!JYLMokjOhZZlmbZvTf:localhost:8800m.Q!JPTwFTSDaBXwUTgitj:localhost:8800th'.Q!JPTwFTSDaBXwUTgitj:localhost:8800m.Q!JGhlAUflyNxErGGZZu:localhost:8800th&-Q!JGhlAUflyNxErGGZZu:localhost:8800mt.Q!IlGJpjzrvvAFuwTAgo:localhost:8800th%.Q!IlGJpjzrvvAFuwTAgo:localhost:8800m4.Q!IfYYyzLHSOeyJBxBfn:localhost:8800th$.Q!IfYYyzLHSOeyJBxBfn:localhost:8800m.Q!IZkczIYykpZDvjuUWn:localhost:8800th#.Q!IZkczIYykpZDvjuUWn:localhost:8800m.Q!IYxUkyFHOgvhLpdkOA:localhost:8800th".Q!IYxUkyFHOgvhLpdkOA:localhost:8800m^.Q!NeYaCeYNFATCqlrlGT:localhost:8800m.Q!NcJYmIbgjsaKJOzBcs:localhost:8800thH ,`m^ m z ) 6 E R  _ n{*7DQ|+P]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800.P]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800 P]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800 P]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800 P]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800 P]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800N[Q@anon-20191002_181700-22:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:88000P]Q@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800-P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800,P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800+P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800*P]Q@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800)P]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800(P]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800'P]Q@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800&P]Q@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800%P]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800$P]Q@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800#P]Q@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800"N[Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800!P]Q@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800 P]Q@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800P]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800P]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800N[Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800N[Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800 `? \ . v J  d 6 ~P$R f82zLzLf8 R $ n @  l>Z,tF`-]@anon-2019-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-190:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-199:localhost:8800-]@anon-20191002_181700-198:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-203:localhost:8800-]@anon-20191002_181700-202:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800-]@anon-20191002_181700-186:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800-]@anon-20191002_181700-180:localhost:8829+[@anon-20191002_181700-17:localhost:8800-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800+[@anon-20191002_181700-22:localhost:8800-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800 -]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800+[@anon-20191002_181700-20:localhost:8800 +[@anon-20191002_181700-20:localhost:8800 -]@anon-20191002_181700-209:localhost:8800 NWi%  8| J v* |c Jj   7 Q 1 p>  W\ % D  ] Po= +vD1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs ?1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70U0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pww1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4J1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c)1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kY1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0L1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-oz1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kD0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFII1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ j1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE K1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs !1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i81e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs u1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI l1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwK1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMp1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ81e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U{1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs,1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWse0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ'1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU *1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg +1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc b1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU91e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY?1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs ;1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y S  hleQ__$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 749}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-169:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040956125, "hashes": {"sha256": "10DVyVIKFZ2DcNCgCcyXAqtklNoeuCtOQ/d6a1/5Trs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o5PUjaRKsauX+gOfqMsDkA63z/1gaeV9vzgn/GGtE067zDDCqawhPG9/G4qdTG212dY+wfsJwZ9cdLlEWLyyDA"}}, "unsigned": {"age_ts": 1570040956125}}keQ_$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 748}{"auth_events": ["$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE", "$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks", "$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "prev_events": ["$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko"], "type": "m.room.history_visibility", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040953852, "hashes": {"sha256": "RtQv38CW96f4RSegNk0AMx1iNbA0fx/opCB4C9+3JY0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2j+1vVqjV7PrdKjNtHqruLCgTwsjdINOJUxPspmxjERxB1RvXNdFfHY94Rt5DnLL7xG2dAiolriMSJwaWYQOAg"}}, "unsigned": {"age_ts": 1570040953852}}sjeQ_u$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 747}{"auth_events": ["$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE", "$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks", "$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "prev_events": ["$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE"], "type": "m.room.join_rules", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040953186, "hashes": {"sha256": "IXV3sNVQZVbYqWxhLYHwrt4IxDKRuVRGGZD1FyVLuTg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4mLCtYsfDlS/134DynbHhajxtDFbeXNAjsgT8jnlnZVZqULFsrzj+YszoIhRVanqOLh7xdsOlT1hJUu6vH8uCA"}}, "unsigned": {"age_ts": 1570040953186}}jieQ_c$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800{"token_id": 192, "stream_ordering": 746}{"auth_events": ["$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks", "$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "prev_events": ["$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs"], "type": "m.room.power_levels", "room_id": "!nteAxExBGJfaGIpuCx:localhost:8800", "sender": "@anon-20191002_181700-168:localhost:8800", "content": {"users": {"@anon-20191002_181700-168:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040952546, "hashes": {"sha256": "WnlXqh8o+way1bZDd8sapgVyVpFzvfcysUp+kGBQhNI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UUdcYQkPCnj6wJglY3AvkDT7Oi2O6qJvmaYlMXM1+UIkVD9QoVavW1kna8elsNKbOVBzP3FkRv7tFRqkUP8uDA"}}, "unsigned": {"age_ts": 1570040952546}} V \  t , .'/z!e)Q ]$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAm.room.aliases!lAGTcYIuMBXsVRGCOe:localhost:8800mm@anon-20191002_181700-169:localhost:8800!e)Q ]$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgm.room.aliases!WVzjUePHrzCjfyTbmK:localhost:8800mkm@anon-20191002_181700-169:localhost:8800,~e?Q ]$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4m.room.history_visibility!UyLoIXmzVFwycmBUeh:localhost:8800mm@anon-20191002_181700-169:localhost:8800,}e?Q ]$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egm.room.history_visibility!lAGTcYIuMBXsVRGCOe:localhost:8800mmb@anon-20191002_181700-169:localhost:8800,|e?Q ]$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXom.room.history_visibility!WVzjUePHrzCjfyTbmK:localhost:8800mm@anon-20191002_181700-169:localhost:8800${e/Q ]$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIm.room.join_rules!UyLoIXmzVFwycmBUeh:localhost:8800mOm:@anon-20191002_181700-169:localhost:8800$ze/Q ]$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0m.room.join_rules!lAGTcYIuMBXsVRGCOe:localhost:8800mNmO@anon-20191002_181700-169:localhost:8800$ye/Q ]$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgm.room.join_rules!WVzjUePHrzCjfyTbmK:localhost:8800mLmޮ@anon-20191002_181700-169:localhost:8800)xe9Q ]$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDom.room.canonical_alias!UyLoIXmzVFwycmBUeh:localhost:8800mmj@anon-20191002_181700-169:localhost:8800)we9Q ]$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qm.room.canonical_alias!lAGTcYIuMBXsVRGCOe:localhost:8800mm@anon-20191002_181700-169:localhost:8800)ve9Q ]$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8m.room.canonical_alias!WVzjUePHrzCjfyTbmK:localhost:8800mmA@anon-20191002_181700-169:localhost:8800&ue3Q ]$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMm.room.power_levels!UyLoIXmzVFwycmBUeh:localhost:8800m.m0@anon-20191002_181700-169:localhost:8800&te3Q ]$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUm.room.power_levels!lAGTcYIuMBXsVRGCOe:localhost:8800m-mӁ@anon-20191002_181700-169:localhost:8800&se3Q ]$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8Em.room.power_levels!WVzjUePHrzCjfyTbmK:localhost:8800m,m@anon-20191002_181700-169:localhost:8800 re'Q ]$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgm.room.member!UyLoIXmzVFwycmBUeh:localhost:8800mɍmW@anon-20191002_181700-169:localhost:8800 qe'Q ]$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIm.room.member!lAGTcYIuMBXsVRGCOe:localhost:8800mɎm̳@anon-20191002_181700-169:localhost:8800 pe'Q ]$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosm.room.member!WVzjUePHrzCjfyTbmK:localhost:8800mɐm"@anon-20191002_181700-169:localhost:8800o e'Q  ]$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4m.room.create!WVzjUePHrzCjfyTbmK:localhost:8800mm@anon-20191002_181700-169:localhost:8800n e'Q  ]$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wm.room.create!lAGTcYIuMBXsVRGCOe:localhost:8800mm{@anon-20191002_181700-169:localhost:8800m e'Q  ]$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQm.room.create!UyLoIXmzVFwycmBUeh:localhost:8800mm@anon-20191002_181700-169:localhost:8800,le?Q ]$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0om.room.history_visibility!nteAxExBGJfaGIpuCx:localhost:8800mm@anon-20191002_181700-168:localhost:8800$ke/Q ]$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRkom.room.join_rules!nteAxExBGJfaGIpuCx:localhost:8800mbmP@anon-20191002_181700-168:localhost:8800&je3Q ]$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEm.room.power_levels!nteAxExBGJfaGIpuCx:localhost:8800mm@anon-20191002_181700-168:localhost:8800 D4UPq8 T  p 7 S  o 6 R n5Rn5Qm4Qm8e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94sha2568e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snssha2568e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ysha2568e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3csha256p8e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4sha256S8e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYsha2568e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4sha256 8e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIsha256 ,8e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBYsha2568e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlEsha2568e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEsha2567e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwksha256v8e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4sha256E8e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQosha256f8e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYsha2568e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwsha2568e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQsha256r8e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcsha256?8e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcsha2568e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMsha256 8e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4sha256 8e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0pssha2568e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIsha2568e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gsha256V8e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50sha256 8e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyEsha2568e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0sha2568e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLksha2568e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBggsha2568e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8sha256o8e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAsha256C7e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicsha256R8e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0sha2568e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgsha2568e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wksha256 8e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQsha2568e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjgsha2568e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gsha2568e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIsha256;8e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0osha256 8e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScsha256,8e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888sha256 8e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAsha256d8e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMsha256 98e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_Esha256 8e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAsha256 8e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEsha256-8e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGEsha2568e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqosha256 8e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Oksha256O8e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TAsha256'8e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcsha2568e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUsha2568e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Lssha256 8e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Kssha2568e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0sha256e8e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcsha2568e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tosha256<8e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLEsha2568e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Asha2568e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYsha256R8e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6Usha2568e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8sha256 {8e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIsha2568e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zosha256 8e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucsha256F8e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYsha256 8e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYsha256 A Fji7o= ]u , C 0>{ Ip8O V%b+ ^ v D  | K   X & 01e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k 1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQb1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL980e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkh1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Ix1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAI1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQa1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcR1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM^1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU31e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR411e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQh0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoW1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo 1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc 1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc  1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo W1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 D1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY ?1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI &21e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 A]1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs>1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQp1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI|1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEl0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE}1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4#1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4n1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI t1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 a1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY ,1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70 G%j8p> x F  ~ L2  R X & ^ ,dk9W%q? wE}KQ1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc R1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI}1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwI1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMn1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ)1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg 1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y D1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs 01e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Uy1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWse1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs 0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ'1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU*1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcf1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs ,1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4H1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c'1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs V1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI M1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kW1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0J1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU 1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70S1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE <1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ [1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkq1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagK1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkZ1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM 51e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMy1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE )1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc" NWi%  8| J v* |c Jj   7 Q 1 p>  W\ % D  ] Po= +vD1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs ?1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70U0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pww1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4J1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c)1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kY1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0L1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-oz1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kD0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFII1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ j1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE K1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs !1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs s1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI j1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwK1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMp1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ81e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U{1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs,1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWse0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ'1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU *1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg +1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc b1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU91e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY91e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs ;1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y S KxJJb6 ~ P " j >  X * t F  ` 2 |N h: V(pB^0xd6U'-]@anon-20191002_181700-296:localhost:8800N-]@anon-20191002_181700-236:localhost:8800-]@anon-20191002_181700-235:localhost:8800-]@anon-20191002_181700-234:localhost:8800-]@anon-20191002_181700-233:localhost:8800-]@anon-20191002_181700-295:localhost:8800M-]@anon-20191002_181700-294:localhost:8800L-]@anon-20191002_181700-293:localhost:8800K-]@anon-20191002_181700-292:localhost:8800J-]@anon-20191002_181700-291:localhost:8800I-]@anon-20191002_181700-290:localhost:8800H+[@anon-20191002_181700-28:localhost:88000-]@anon-20191002_181700-289:localhost:8800G-]@anon-20191002_181700-288:localhost:8800F-]@anon-20191002_181700-287:localhost:8800E-]@anon-20191002_181700-286:localhost:8800D-]@anon-20191002_181700-285:localhost:8800C-]@anon-20191002_181700-284:localhost:8800B-]@anon-20191002_181700-283:localhost:8800A-]@anon-20191002_181700-282:localhost:8800@-]@anon-20191002_181700-281:localhost:8800?-]@anon-20191002_181700-280:localhost:8800>+[@anon-20191002_181700-27:localhost:8800/-]@anon-20191002_181700-279:localhost:8800=-]@anon-20191002_181700-278:localhost:8800<-]@anon-20191002_181700-277:localhost:8800;-]@anon-20191002_181700-276:localhost:8800:-]@anon-20191002_181700-275:localhost:88009-]@anon-20191002_181700-274:localhost:88008-]@anon-20191002_181700-273:localhost:88006-]@anon-20191002_181700-272:localhost:88007-]@anon-20191002_181700-271:localhost:88004-]@anon-20191002_181700-270:localhost:88005+[@anon-20191002_181700-26:localhost:8800.-]@anon-20191002_181700-269:localhost:88003-]@anon-20191002_181700-268:localhost:88002-]@anon-20191002_181700-267:localhost:88001-]@anon-20191002_181700-266:localhost:88000-]@anon-20191002_181700-265:localhost:8800/-]@anon-20191002_181700-264:localhost:8800.-]@anon-20191002_181700-263:localhost:8800--]@anon-20191002_181700-262:localhost:8800,-]@anon-20191002_181700-261:localhost:8800+-]@anon-20191002_181700-260:localhost:8800*+[@anon-20191002_181700-25:localhost:8800--]@anon-20191002_181700-259:localhost:8800)-]@anon-20191002_181700-258:localhost:8800(-]@anon-20191002_181700-257:localhost:8800'-]@anon-20191002_181700-255:localhost:8800&-]@anon-20191002_181700-254:localhost:8800%-]@anon-20191002_181700-253:localhost:8800$-]@anon-20191002_181700-252:localhost:8800#-]@anon-20191002_181700-251:localhost:8800"-]@anon-20191002_181700-250:localhost:8800!+[@anon-20191002_181700-24:localhost:8800,-]@anon-20191002_181700-249:localhost:8800 -]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-241:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800+-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-232:localhost:8800 -]@anon-20191002_181700-231:localhost:8800 -]@anon-20191002_181700-230:localhost:8800 +[@anon-20191002_181700-22:localhost:8800*-]@anon-20191002_181700-229:localhost:8800 -]@anon-20191002_181700-228:localhost:8800 KxJJb6 ~ P " j >  X * t F  ` 2 |N h: V(pB^0xd6U'-]@anon-20191002_181700-296:localhost:8800N-]@anon-20191002_181700-236:localhost:8800-]@anon-20191002_181700-235:localhost:8800-]@anon-20191002_181700-234:localhost:8800-]@anon-20191002_181700-233:localhost:8800-]@anon-20191002_181700-295:localhost:8800M-]@anon-20191002_181700-294:localhost:8800L-]@anon-20191002_181700-293:localhost:8800K-]@anon-20191002_181700-292:localhost:8800J-]@anon-20191002_181700-291:localhost:8800I-]@anon-20191002_181700-290:localhost:8800H+[@anon-20191002_181700-28:localhost:88000-]@anon-20191002_181700-289:localhost:8800G-]@anon-20191002_181700-288:localhost:8800F-]@anon-20191002_181700-287:localhost:8800E-]@anon-20191002_181700-286:localhost:8800D-]@anon-20191002_181700-285:localhost:8800C-]@anon-20191002_181700-284:localhost:8800B-]@anon-20191002_181700-283:localhost:8800A-]@anon-20191002_181700-282:localhost:8800@-]@anon-20191002_181700-281:localhost:8800?-]@anon-20191002_181700-280:localhost:8800>+[@anon-20191002_181700-27:localhost:8800/-]@anon-20191002_181700-279:localhost:8800=-]@anon-20191002_181700-278:localhost:8800<-]@anon-20191002_181700-277:localhost:8800;-]@anon-20191002_181700-276:localhost:8800:-]@anon-20191002_181700-275:localhost:88009-]@anon-20191002_181700-274:localhost:88008-]@anon-20191002_181700-273:localhost:88006-]@anon-20191002_181700-272:localhost:88007-]@anon-20191002_181700-271:localhost:88004-]@anon-20191002_181700-270:localhost:88005+[@anon-20191002_181700-26:localhost:8800.-]@anon-20191002_181700-269:localhost:88003-]@anon-20191002_181700-268:localhost:88002-]@anon-20191002_181700-267:localhost:88001-]@anon-20191002_181700-266:localhost:88000-]@anon-20191002_181700-265:localhost:8800/-]@anon-20191002_181700-264:localhost:8800.-]@anon-20191002_181700-263:localhost:8800--]@anon-20191002_181700-262:localhost:8800,-]@anon-20191002_181700-261:localhost:8800+-]@anon-20191002_181700-260:localhost:8800*+[@anon-20191002_181700-25:localhost:8800--]@anon-20191002_181700-259:localhost:8800)-]@anon-20191002_181700-258:localhost:8800(-]@anon-20191002_181700-257:localhost:8800'-]@anon-20191002_181700-255:localhost:8800&-]@anon-20191002_181700-254:localhost:8800%-]@anon-20191002_181700-253:localhost:8800$-]@anon-20191002_181700-252:localhost:8800#-]@anon-20191002_181700-251:localhost:8800"-]@anon-20191002_181700-250:localhost:8800!+[@anon-20191002_181700-24:localhost:8800,-]@anon-20191002_181700-249:localhost:8800 -]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-241:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800+-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-232:localhost:8800 -]@anon-20191002_181700-231:localhost:8800 -]@anon-20191002_181700-230:localhost:8800 +[@anon-20191002_181700-22:localhost:8800*-]@anon-20191002_181700-229:localhost:8800 -]@anon-20191002_181700-228:localhost:8800 6  (6upeQ_y$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 753}{"auth_events": ["$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w"], "prev_events": ["$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w"], "type": "m.room.member", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-169", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-169:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040957326, "hashes": {"sha256": "6CijxQ+lYojZsr5RJlyvYxbqjI9TszepVocdBvE6nQc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JGYakKJSyfdPlmzdGfeEifCwWspJQyqdgPauSN7pKpEdmpqGnpeiku1oTOUv6GNm5IFhFOloVd3r2g5xAN5DDA"}}, "unsigned": {"age_ts": 1570040957326}}uoeQ_y$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 752}{"auth_events": ["$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4"], "prev_events": ["$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4"], "type": "m.room.member", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-169", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-169:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040957328, "hashes": {"sha256": "8gmq+qlasGrl/F8wa0QhRIPi73C40J6f7MfDmBHnnEM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hYPgJCXpSjN9JL8JC5blP29O2nIefPdrfB4v6z9Do/DzF2GZULPLmUG/rPZbEQXrreHd4ktdgvMzRJasCHbGCQ"}}, "unsigned": {"age_ts": 1570040957328}}hneQ__$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 751}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-169:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040956127, "hashes": {"sha256": "ZIYNCEmCuugiu78PgCxTsghkEcjlNmIPjeHpbwMa0Qs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MlhWQOmP1uSE3CijjRvtjZA6hRUDi4RbGk6N+GpEM9tKzQ+rw1zEauCEYQS0oPx81RsJKofsHdpBM4UUy1xbBg"}}, "unsigned": {"age_ts": 1570040956127}}hmeQ__$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 750}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-169:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040956126, "hashes": {"sha256": "Gam8IFiqeNCMCGuuTU0/wIf6c3Rt9FHh96y9L4UCC7Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CXoyL1nqytdXIWALuZeX7R68yNzI5qaPi4Mt9lIhCByO6K6kaAwpGC8pR6NrXUJ5hBcsB5KPI/DIxl8qcabnAw"}}, "unsigned": {"age_ts": 1570040956126}} ~z v r n j fb^ZVRNJF7eeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:88006eeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:88005eeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I!zFdNewlKnUiMBxnYrN:localhost:88004eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:88003eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:88002eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:88001eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:88000eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800/eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800.eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800-eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800,eeQ$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800+eeQ$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800*eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800)eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800(eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800'eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800&eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800%eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800$eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800#eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800"eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800!eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800 eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800  jseQ_c$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 756}{"auth_events": ["$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "type": "m.room.power_levels", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"users": {"@anon-20191002_181700-169:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040958765, "hashes": {"sha256": "LN0PJXBRhOo/WRd/HZlvK01nLnoVbTOF9d+xrb8jdsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qQCymEkjIu8PnShp7HBfVLdR1eWWRUzTu+H68IRK9SZzF+j8XvVgdK2Q68U6o5/dxyx9x7wwNkT+c1etJoQqCA"}}, "unsigned": {"age_ts": 1570040958765}}jreQ_c$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 755}{"auth_events": ["$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "type": "m.room.power_levels", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"users": {"@anon-20191002_181700-169:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040958764, "hashes": {"sha256": "YvFdrCNFyU/w8ICPC9HWJMsO692BdXhXR494iSZTpZc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rxfDdBSHn9Epu4PwdospjXJORlEXPYKEc3+gAStmxmy7OGFLziyu54JorIiv0VKL3PrEP547/DNwF0Dp5lg9DQ"}}, "unsigned": {"age_ts": 1570040958764}}uqeQ_y$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 754}{"auth_events": ["$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ"], "prev_events": ["$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ"], "type": "m.room.member", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-169", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-169:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040957325, "hashes": {"sha256": "CY7xlGB5wUsdWXLW4a6efB66tV48kyRlB9306EUdKCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R+cOwYsvqNDI2+dv4+pMYDaqjhXNXceglxsFTibVeihd0XvxMFEN4RhHIGdTT5ieQHgId7JlBW77S4VnHAg6Aw"}}, "unsigned": {"age_ts": 1570040957325}} ,NC 8 - { " p  e ZOD9.|#qf VeL$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0sha256ډ%4OE]l*[:VeL$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Usha256xU>@5iO]@F1#qgVeL$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqosha2569)<&# KoN͹VeL$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUsha256EaZJt *j>xOVeL$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53Asha256FE16s2"2N IKpVeL$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMsha256͆QyGI8J VeL$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAsha2564֒_XmHec2†VeL$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4sha256f9xFg4n&q\nVeL$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwsha256g3EWU&U 6k0ʗVeL$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qksha25616*JҫkT:ˆ֩VeL$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jtssha256 !2PVߗtfȄGvbS]-&VeL$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7ssha256K@W48)ŻD: Mٕ̝b˻VeL$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhosha256VL 8rgie {aVVeL$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYsha256OS39]Y!SV9=s .VeL$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6Esha256~w=q.*s$d<+6>trV eL$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMsha256W*ϼ}pJ,R~vV eL$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4sha256T]N/"r"y N[0$r4jWGB>V eL$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4Isha256L6שPBSaۃ3ť1ցV eL$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inosha256`{ATJw-0:qErq.Og2g}+z~Jfca~+1vVeL$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAsha256$\S$$_'Yy5-S(բd, V~eL$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgsha256kNIT`8:?`hΥ$dV}eL$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4sha256) a36!7Gmd0ԉV|eL$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egsha256i<."W nH saxEr<{(HV{eL$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXosha256L"Gk]s0 ~m / %zVzeL$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIsha256w;C̓Xs'?T6rxg5VyeL$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0sha256~eU'nLq!65y)VxeL$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgsha256KUGp~/Ql 8Qᜂ5 (VweL$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDosha256暄q/1"4 GG_&Hx:VveL$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qsha256忹u#baAzgDVueL$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8sha256G7l9h_xVteL$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMsha256CzWp BVc$kRG5sVseL$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISUsha256`}V8muV3gCv܅!%VreL$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8Esha2560~g|Εл`kl)VqeL$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgsha256tcf|Ol6 &FPʳUk(ź  @ ` V , L l < \R@` ?2hZU_v]s@anon-20191002_181700-184:localhost:8800@anon-20191002_181700-184:localhost:8800 LemurLovernt]@anon-20191002_181700-182:localhost:8800@anon-20191002_181700-182:localhost:8800 anon-20191002_181700-182ns]@anon-20191002_181700-181:localhost:8800@anon-20191002_181700-181:localhost:8800 anon-20191002_181700-181nr]@anon-20191002_181700-179:localhost:8800@anon-20191002_181700-179:localhost:8800 anon-20191002_181700-179nq]@anon-20191002_181700-180:localhost:8829@anon-20191002_181700-180:localhost:8829 anon-20191002_181700-180np]@anon-20191002_181700-178:localhost:8800@anon-20191002_181700-178:localhost:8800 anon-20191002_181700-178no]@anon-20191002_181700-176:localhost:8800@anon-20191002_181700-176:localhost:8800 anon-20191002_181700-176_n]s@anon-20191002_181700-175:localhost:8800@anon-20191002_181700-175:localhost:8800 Overriddennm]@anon-20191002_181700-174:localhost:8800@anon-20191002_181700-174:localhost:8800 anon-20191002_181700-174_l]s@anon-20191002_181700-173:localhost:8800@anon-20191002_181700-173:localhost:8800 Overriddennk]@anon-20191002_181700-170:localhost:8800@anon-20191002_181700-170:localhost:8800 anon-20191002_181700-170ni]@anon-20191002_181700-168:localhost:8800@anon-20191002_181700-168:localhost:8800 anon-20191002_181700-168(h/3@8:localhost:8800@8:localhost:8800 8ng]@anon-20191002_181700-167:localhost:8800@anon-20191002_181700-167:localhost:8800 anon-20191002_181700-167nf]@anon-20191002_181700-166:localhost:8829@anon-20191002_181700-166:localhost:8829 anon-20191002_181700-166ne]@anon-20191002_181700-165:localhost:8800@anon-20191002_181700-165:localhost:8800 anon-20191002_181700-165.d/?@6:localhost:8800@6:localhost:8800 creepernc]@anon-20191002_181700-164:localhost:8800@anon-20191002_181700-164:localhost:8800 anon-20191002_181700-164nb]@anon-20191002_181700-163:localhost:8800@anon-20191002_181700-163:localhost:8800 anon-20191002_181700-163na]@anon-20191002_181700-162:localhost:8800@anon-20191002_181700-162:localhost:8800 anon-20191002_181700-162nu]@anon-20191002_181700-183:localhost:8800@anon-20191002_181700-183:localhost:8800 anon-20191002_181700-183(`/3@3:localhost:8800@3:localhost:8800 3n_]@anon-20191002_181700-161:localhost:8800@anon-20191002_181700-161:localhost:8800 anon-20191002_181700-161(^/3@2:localhost:8800@2:localhost:8800 2n]]@anon-20191002_181700-160:localhost:8800@anon-20191002_181700-160:localhost:8800 anon-20191002_181700-160n\]@anon-20191002_181700-158:localhost:8800@anon-20191002_181700-158:localhost:8800 anon-20191002_181700-158n[]@anon-20191002_181700-156:localhost:8800@anon-20191002_181700-156:localhost:8800 anon-20191002_181700-156nZ]@anon-20191002_181700-154:localhost:8800@anon-20191002_181700-154:localhost:8800 anon-20191002_181700-154nY]@anon-20191002_181700-153:localhost:8800@anon-20191002_181700-153:localhost:8800 anon-20191002_181700-153nX]@anon-20191002_181700-152:localhost:8800@anon-20191002_181700-152:localhost:8800 anon-20191002_181700-152nj]@anon-20191002_181700-169:localhost:8800@anon-20191002_181700-169:localhost:8800 anon-20191002_181700-169 #yC R [  G gI]l*9BjyaTeQ' $XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800m.room.create SeQ']$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800mReQ? $0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibilityeQeQ/ $SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rulesgPeQ3 $2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels OeQ']$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800aNeQ' $5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800m.room.create MeQ']$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800mLeQ? $gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibilityeKeQ/ $DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rulesgJeQ3 $uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels IeQ']$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800aHeQ' $ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.createsGeQ'1$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk!VCSCNemqikJZiRtxrs:localhost:8829m.room.member@12:localhost:8800sFeQ'1$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts!StEnDjTJToXKXsOHNf:localhost:8829m.room.member@11:localhost:8800aEeQ' $S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avataraDeQ' $mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatarmCeQ? $T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibilitypBeQ))$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800pAeQ))$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800m@eQ? $pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibilitym?eQ? $2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibilitye>eQ/ $ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rulese=eQ/ $wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rulesj<eQ9 $4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_aliasj;eQ9 $9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_aliasg:eQ3 $cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levelsg9eQ3 $FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels 8eQ']$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800 7eQ']$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800a6eQ' $fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800m.room.createa5eQ' $1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800m.room.createp4eQ))$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800p3eQ))$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800p2eQ))$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800  v weQ_#$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 760}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM"], "type": "m.room.canonical_alias", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"alias": "#listingtest1:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040960730, "hashes": {"sha256": "Ni9Dgj8NR9WOcEvmNa/JU7UOTvcR+F1g5o8qlc9HgNo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cBkfQdk8w+sPy6GV+wozknS2Z+MtbZmY1EwxfzfIvKaeZ4zfk2eYiFIe49C+8CiqFcp8F5LjWQyfQBF6fI2lAA"}}, "unsigned": {"age_ts": 1570040960730}} veQ_#$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 759}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU"], "type": "m.room.canonical_alias", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"alias": "#listingtest2:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040960729, "hashes": {"sha256": "RB4t7iqjyu8lwYRLG2u4ClZLQsLJpNBQWXguLXPctgM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tc1v/54OdZz9LT6MWllhQ6N8Q+FqLDCOoH/aB/57eJvtrbPm7MnqNhUzQz/AH2WfIjnMFbUGdbUgf6dvOHO6CQ"}}, "unsigned": {"age_ts": 1570040960729}} ueQ_#$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 758}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E"], "type": "m.room.canonical_alias", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"alias": "#listingtest0:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040960727, "hashes": {"sha256": "+mCSKpvBgyuBLHXj3OOV/RZOC/rPteNOFKvRQIkRRRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h3oq+ittaY9Cn9+mG4pAC7t13FweNq0PZd/x0aW7QZrtFSUzAoIuwkTaN4G7v2w5zhYZRUmFT2hxDXb86azsCQ"}}, "unsigned": {"age_ts": 1570040960727}}jteQ_c$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 757}{"auth_events": ["$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "type": "m.room.power_levels", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"users": {"@anon-20191002_181700-169:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040958766, "hashes": {"sha256": "NZNm4X6wi9RMqhizv99u4++mdGFVfzKOVrEkX6M6EBM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bb3dQKxVJnG+ZimiyXRTew1DWlTCVzuElg8XCoxkcVkZSAv1AGCJe3P0BFAG5qJVkVFoiggHa/cRyghH9FTzAQ"}}, "unsigned": {"age_ts": 1570040958766}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1@e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1?e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1>e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1=e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1<e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg1;e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1:e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw19e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg18e$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ17e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y816e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX415e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM14e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q13e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc12e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI11e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk10e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho 1/e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4 1.e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0 1-e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo 1,e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY 1+e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1*e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01)e$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw1(e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1'e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1&e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1%e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81$e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041#e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01"e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg1!e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1 e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1 e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1 e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41 e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1 e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1 e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA1~e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1}e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41|e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1{e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1ze$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1ye$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01xe$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1we$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1ve$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q "q%O i - 6 9\0D=orqdLQ' e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.create$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo8KQ']ee!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4pJQ? e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibility$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53AhIQ/ e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rules$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMjHQ3 e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA GQ']e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4dFQ' e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.create$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwdEQ' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avatar$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sdDQ' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatar$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoCQ? ee!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4IsBQ))e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6EsAQ))e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMp@Q? e !KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibility$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4p?Q? e !zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4Ih>Q/ e !KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rules$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoh=Q/ e !zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rules$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4m<Q9 e !KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_alias$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAm;Q9 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_alias$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0j:Q3 e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levels$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIj9Q3 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg 8Q']e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM 7Q']e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60d6Q' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.create$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qd5Q' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.create$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncs4Q))e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYs3Q))e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAs2Q))e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgp1Q? e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibility$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4p0Q? e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibility$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Egp/Q? e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibility$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXoh.Q/ e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rules$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIh-Q/ e!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rules$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0h,Q/ e!WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rules$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgm+Q9 e!UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_alias$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo -RM H C > 9 4/*|%w rmhc TQe!tDsPLsKOLPePtEWRwn:localhost:8800$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04TQe!tDsPLsKOLPePtEWRwn:localhost:8800$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0TQe!tDsPLsKOLPePtEWRwn:localhost:8800$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgT~Qe!tDsPLsKOLPePtEWRwn:localhost:8800$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAT}Qe!tDsPLsKOLPePtEWRwn:localhost:8800$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0T|Qe!tDsPLsKOLPePtEWRwn:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMT{Qe!tDsPLsKOLPePtEWRwn:localhost:8800$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwTzQe!XMNRkfscQXRjgYrOSd:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMTyQe!XMNRkfscQXRjgYrOSd:localhost:8800$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwTxQe!XMNRkfscQXRjgYrOSd:localhost:8800$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoTwQe!XMNRkfscQXRjgYrOSd:localhost:8800$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0TvQe!XMNRkfscQXRjgYrOSd:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6UTuQe!XMNRkfscQXRjgYrOSd:localhost:8800$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqoTtQe!wUuodvgsmAJqKJUBCQ:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUTsQe!wUuodvgsmAJqKJUBCQ:localhost:8800$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53ATrQe!wUuodvgsmAJqKJUBCQ:localhost:8800$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMTqQe!wUuodvgsmAJqKJUBCQ:localhost:8800$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwATpQe!wUuodvgsmAJqKJUBCQ:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4ToQe!wUuodvgsmAJqKJUBCQ:localhost:8800$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwTnQe!KeBlWUQiLYUoILKkTB:localhost:8800$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoTmQe!zFdNewlKnUiMBxnYrN:localhost:8800$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sTlQe!zFdNewlKnUiMBxnYrN:localhost:8800$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYTkQe!KeBlWUQiLYUoILKkTB:localhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ETjQe!zFdNewlKnUiMBxnYrN:localhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMTiQe!KeBlWUQiLYUoILKkTB:localhost:8800$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4ThQe!zFdNewlKnUiMBxnYrN:localhost:8800$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4ITgQe!KeBlWUQiLYUoILKkTB:localhost:8800$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoTfQe!zFdNewlKnUiMBxnYrN:localhost:8800$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4TeQe!KeBlWUQiLYUoILKkTB:localhost:8800$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FATdQe!zFdNewlKnUiMBxnYrN:localhost:8800$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0TcQe!KeBlWUQiLYUoILKkTB:localhost:8800$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdITbQe!zFdNewlKnUiMBxnYrN:localhost:8800$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USgTaQe!zFdNewlKnUiMBxnYrN:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60T`Qe!KeBlWUQiLYUoILKkTB:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMT_Qe!zFdNewlKnUiMBxnYrN:localhost:8800$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7QT^Qe!KeBlWUQiLYUoILKkTB:localhost:8800$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncT]Qe!UyLoIXmzVFwycmBUeh:localhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYT\Qe!lAGTcYIuMBXsVRGCOe:localhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbAT[Qe!WVzjUePHrzCjfyTbmK:localhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgTZQe!UyLoIXmzVFwycmBUeh:localhost:8800$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4TYQe!lAGTcYIuMBXsVRGCOe:localhost:8800$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-EgTXQe!WVzjUePHrzCjfyTbmK:localhost:8800$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXoTWQe!UyLoIXmzVFwycmBUeh:localhost:8800$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKITVQe!lAGTcYIuMBXsVRGCOe:localhost:8800$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0TUQe!WVzjUePHrzCjfyTbmK:localhost:8800$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg  {eQ_$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 764}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg"], "type": "m.room.history_visibility", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040963557, "hashes": {"sha256": "ETWLq7awi3bCEjcfvjKMeeLf3Ln1uaSTv6l2VmoBF50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4P/CbuGzrdzh5g1KuDVSl7ESZQ25ZxLYr4sPvGwipZ8unnoVhuU2SdyN1iCZmG4uuQtxIF3r8ODbDYmLaLaQDA"}}, "unsigned": {"age_ts": 1570040963557}}szeQ_u$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 763}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo"], "type": "m.room.join_rules", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040962127, "hashes": {"sha256": "DdGRsOae/CMyhvUEPI8mhOL4ZReoHpXKY3bpsd/BWGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ehFRwEQC5P5F/wW3UGPBPgy/mIJ5do/TagOU+JcX1idkm8MJ+WiaEYlTphK1u+CSlKwmBrQEBPn7TZsh2DL0Aw"}}, "unsigned": {"age_ts": 1570040962127}}syeQ_u$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 762}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q"], "type": "m.room.join_rules", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040962126, "hashes": {"sha256": "4JLPM+QLvCxSDG/JrW0ZOvOkBXMXViLaKT+4k2REnPM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "057xHLuiPFmXDkSl1fMhS26b6Si1/Xwe+juPIYhKr+BW/FaP3U8SE4SBfnTgmRMG/bB26Ma9+75iMt1jP8LRCA"}}, "unsigned": {"age_ts": 1570040962126}}sxeQ_u$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 761}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8"], "type": "m.room.join_rules", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040962124, "hashes": {"sha256": "pQm92Tq0DP11fhy7oSf3tbWbQ3FIgf/szoHoPliQwm0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gi88S5AyPa3ULixK0WUNXLkwG/J7fQ+i60VEAqqXPykLvy6wKblLBcdCWFYCZbYKFpEQuXcrNXhS8zD51qoFCg"}}, "unsigned": {"age_ts": 1570040962124}} a} { y w u sqomkigeca~/eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~.eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~-eeQ$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~,eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~+eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~*eeQ$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~)eeQ$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~(eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~'eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~&eeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~%eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~$eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~#eeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800~"eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~!eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~ eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800~eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800~eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800~eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800  xXeQ_7$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 768}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg"], "type": "m.room.aliases", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"aliases": ["#listingtest2:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040965553, "hashes": {"sha256": "Kmpz+TBAOJkbY1yD2mMMzpDTl9K/TIalApsDXzhUe5A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wv3rCMk4Qlfgq5k8txBLxX5+f2gZZByJn9L3SmTnvwnHScx9OQ5c5tI4N/ZwZF65CXfHnwXoFl9CZhPorJMyAQ"}}, "unsigned": {"age_ts": 1570040965553}}~eQ_7$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800{"token_id": 193, "stream_ordering": 767}{"auth_events": ["$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E", "$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4", "$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos"], "prev_events": ["$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo"], "type": "m.room.aliases", "room_id": "!WVzjUePHrzCjfyTbmK:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"aliases": ["#listingtest0:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040965483, "hashes": {"sha256": "QGW67fz0vEv8ZFKICt3xZmHYueemYCr4FJmZ3i6hCGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TIKsOlk/6zJf+qMkYbuHtRblSbF75Twu/Qoj9QL34Q76vFsD4jnZ4/lr/4bhFGscdozlQKIkI1jqvdEdKXZWAQ"}}, "unsigned": {"age_ts": 1570040965483}}}eQ_$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 766}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI"], "type": "m.room.history_visibility", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040963560, "hashes": {"sha256": "0jNXXfTjmB77hkCatcPU3Z6VZRDtsnhyB0u+3Zqc+JE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YnpjJ6GiTAxmEBvV9K2lU/+rNeQ5IUc3F1SG4shokOD9g2NgmGQR73W9guJrFs3DQ4RCDcfoIkvAiDib4RoNAg"}}, "unsigned": {"age_ts": 1570040963560}}|eQ_$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800{"token_id": 193, "stream_ordering": 765}{"auth_events": ["$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU", "$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w", "$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI"], "prev_events": ["$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0"], "type": "m.room.history_visibility", "room_id": "!lAGTcYIuMBXsVRGCOe:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040963559, "hashes": {"sha256": "TKOGdFaJyX/zD5XwKKpqSLHEbQac0lgL3v4CkWJnWtA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wS5MdfEa3xy35hqKYHO1Y9K15qnRX01f24NKTMH/PSNcwEs9zbRV4U0VLk5O6h/+mwl+pbugy5xePYT1SlejAA"}}, "unsigned": {"age_ts": 1570040963559}} -RM H C > 9 4/*|%w rmhc T.Qe+!BGbJEmJRVJGlZFQbZe:localhost:8800$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwT-Qe*!BGbJEmJRVJGlZFQbZe:localhost:8800$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1cT,Qe)!BGbJEmJRVJGlZFQbZe:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYT+Qe(!BGbJEmJRVJGlZFQbZe:localhost:8800$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8T*Qe'!tDsPLsKOLPePtEWRwn:localhost:8800$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04T)Qe&!tDsPLsKOLPePtEWRwn:localhost:8800$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0T(Qe%!tDsPLsKOLPePtEWRwn:localhost:8800$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgT'Qe$!tDsPLsKOLPePtEWRwn:localhost:8800$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAT&Qe#!tDsPLsKOLPePtEWRwn:localhost:8800$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0T%Qe"!tDsPLsKOLPePtEWRwn:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMT$Qe!!tDsPLsKOLPePtEWRwn:localhost:8800$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwT#Qe !XMNRkfscQXRjgYrOSd:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMT"Qe!XMNRkfscQXRjgYrOSd:localhost:8800$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwT!Qe!XMNRkfscQXRjgYrOSd:localhost:8800$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoT Qe!XMNRkfscQXRjgYrOSd:localhost:8800$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0TQe!XMNRkfscQXRjgYrOSd:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6UTQe!XMNRkfscQXRjgYrOSd:localhost:8800$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqoTQe!wUuodvgsmAJqKJUBCQ:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUTQe!wUuodvgsmAJqKJUBCQ:localhost:8800$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53ATQe!wUuodvgsmAJqKJUBCQ:localhost:8800$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMTQe!wUuodvgsmAJqKJUBCQ:localhost:8800$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwATQe!wUuodvgsmAJqKJUBCQ:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4TQe!wUuodvgsmAJqKJUBCQ:localhost:8800$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwTQe!zFdNewlKnUiMBxnYrN:localhost:8800$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYTQe!zFdNewlKnUiMBxnYrN:localhost:8800$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sTQe!KeBlWUQiLYUoILKkTB:localhost:8800$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoTQe!zFdNewlKnUiMBxnYrN:localhost:8800$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYTQe!KeBlWUQiLYUoILKkTB:localhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ETQe!zFdNewlKnUiMBxnYrN:localhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMTQe !KeBlWUQiLYUoILKkTB:localhost:8800$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4TQe !zFdNewlKnUiMBxnYrN:localhost:8800$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4ITQe !KeBlWUQiLYUoILKkTB:localhost:8800$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoTQe !zFdNewlKnUiMBxnYrN:localhost:8800$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4T Qe !KeBlWUQiLYUoILKkTB:localhost:8800$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAT Qe!zFdNewlKnUiMBxnYrN:localhost:8800$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0T Qe!KeBlWUQiLYUoILKkTB:localhost:8800$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIT Qe!zFdNewlKnUiMBxnYrN:localhost:8800$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USgT Qe!KeBlWUQiLYUoILKkTB:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMTQe!zFdNewlKnUiMBxnYrN:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60TQe!zFdNewlKnUiMBxnYrN:localhost:8800$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7QTQe!KeBlWUQiLYUoILKkTB:localhost:8800$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncTQe!UyLoIXmzVFwycmBUeh:localhost:8800$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYTQe!lAGTcYIuMBXsVRGCOe:localhost:8800$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbATQe!WVzjUePHrzCjfyTbmK:localhost:8800$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgTQe!UyLoIXmzVFwycmBUeh:localhost:8800$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4 >KW%E+}KQ  v D  |]p J  8 P  V $ \ *b0j9q? wjp>1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww 1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww 1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Aq1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Ap1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Ao1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE71e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE61e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE51e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y 1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk (1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk '1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk &1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww 1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0 1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ 1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dky0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkx0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkw1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0 1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA `1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA _1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA ^1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA W1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA V1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA U1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4O1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4N1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4M1e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E1e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg1e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo j21e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4]1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Md1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M L+}KQp> v D  | J  Q  W ] Wj % ] ,+d28j8p> wE%1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 m1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc J1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 91e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig 71e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA 1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 S1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw /1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU r1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkA1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM `1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8S1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA 1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokF0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwU1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ^1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53ER1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0[1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0Z1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0Y1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 %0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAR1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8X1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 }1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs-1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak 1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0g0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY 1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYq1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI k1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY 1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk h1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sR1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sQ1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 {1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg |t l d \ U MF>6.&eeQ$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800 eeeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800eeQ$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800eeQ$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800 ieeQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:8800 2eeQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800 teeQ$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800HeeQ$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c!aWvVRVaDflYyyGTOdD:localhost:8800CeeQ$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800 eeQ$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!aWvVRVaDflYyyGTOdD:localhost:8800EeeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800сeeQ$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc!jYzridjeihmwPBuwLb:localhost:8800EeeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800XeeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800keeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8!plcvCHNbjCkNMMxnTk:localhost:8800 eeQ$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM!XgobMgBjNcDRJnRXLD:localhost:8800[eeQ$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800 WeeQ$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800jeeQ$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800leeQ$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo!AjjrNwXmPTCruHxaJq:localhost:88001eeQ$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800  I] ~ L  R X &  ^ ,pd28j8q? wWE}jKQ> v D  %]]]+1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI|1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScn1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks61e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toA1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Ap1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukE1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8D1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q' 21e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k11e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE 1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4IC1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhksp1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw}1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY;1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IR1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk01e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E &1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEE1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI 1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y k1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c S1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY 71e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 61e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE  h |ueQ_y$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 772}{"auth_events": ["$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q"], "prev_events": ["$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q"], "type": "m.room.member", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-170", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-170:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040969019, "hashes": {"sha256": "254khwPyey+IOJmKtWwu2w6eFSGQxmFdFTfrV3hJEAQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c1hTwf30LlfmEVn3hVlXelaWBC7Pg+7SIe/GyPdBl6QmRziNMy93xbDcR0d9Pt69fl3E50idUdC/u5trT/w4Dw"}}, "unsigned": {"age_ts": 1570040969019}}heQ__$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 771}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-170:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040968060, "hashes": {"sha256": "7hoxHrnlDRa2Wq977uitzmclhzufz2t/Dc+Uvjp78Kg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rh3LoLQXtin7me+eZAkNlqHlzaac1dE8K8gVL9bSQK8ga1aYzZWE1BXmwqjNVyy9ikRi0/mwV3t5O9iR5/rFAA"}}, "unsigned": {"age_ts": 1570040968060}}heQ__$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 770}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-170:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040968059, "hashes": {"sha256": "0a1U2Ovhdw5K2Rm8cKwIdZNjcqU+CKYRXIyd02ZXiKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GtUap1D60qXvJ1pteUk11CyqSI5apUn9xzUhdnnGnjRpu2dFbmfd+QkbHZwEuNXtOyiJGmXDm20jwA4rgfyKCA"}}, "unsigned": {"age_ts": 1570040968059}}eQ_7$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY!UyLoIXmzVFwycmBUeh:localhost:8800{"token_id": 193, "stream_ordering": 769}{"auth_events": ["$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM", "$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ", "$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg"], "prev_events": ["$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4"], "type": "m.room.aliases", "room_id": "!UyLoIXmzVFwycmBUeh:localhost:8800", "sender": "@anon-20191002_181700-169:localhost:8800", "content": {"aliases": ["#listingtest1:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040965554, "hashes": {"sha256": "u4nwEVnwE9sn0U1YBQhiai/43t1lrYdstSxkSAZ/+Vg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ayzhInCtxYiVevbw7tFFKBAR5pgDsRCSUP4IuSzbp8BWhdm44I9zBVizLV2aAP4esH0lX6btu4OBQIzpeQhyAw"}}, "unsigned": {"age_ts": 1570040965554}} O[ s % { ! y!q'w/EO$e/Q ]$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMm.room.join_rules!wUuodvgsmAJqKJUBCQ:localhost:8800m<m<@anon-20191002_181700-173:localhost:8800&e3Q ]$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAm.room.power_levels!wUuodvgsmAJqKJUBCQ:localhost:8800m9Am:D@anon-20191002_181700-173:localhost:8800 e'Q ]$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4m.room.member!wUuodvgsmAJqKJUBCQ:localhost:8800m4.m4@anon-20191002_181700-173:localhost:8800 e'Q  ]$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwm.room.create!wUuodvgsmAJqKJUBCQ:localhost:8800m1m1@anon-20191002_181700-173:localhost:8800 e'Q ]$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkm.room.member!VCSCNemqikJZiRtxrs:localhost:8829m-Mm-Z@anon-20191002_181700-172:localhost:8829 e'Q ]$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jtsm.room.member!StEnDjTJToXKXsOHNf:localhost:8829m&2m(%@anon-20191002_181700-171:localhost:8829 e'Q ] $S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sm.room.avatar!zFdNewlKnUiMBxnYrN:localhost:8800m>m%=@anon-20191002_181700-170:localhost:8800 e'Q ] $mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhom.room.avatar!KeBlWUQiLYUoILKkTB:localhost:8800m@m"l@anon-20191002_181700-170:localhost:8800,e?Q ]$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYm.room.history_visibility!zFdNewlKnUiMBxnYrN:localhost:8800m<m!@anon-20191002_181700-170:localhost:8800!e)Q ]$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6Em.room.aliases!KeBlWUQiLYUoILKkTB:localhost:8800mm@anon-20191002_181700-170:localhost:8800!e)Q ]$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMm.room.aliases!zFdNewlKnUiMBxnYrN:localhost:8800mm@anon-20191002_181700-170:localhost:8800, e?Q ]$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4m.room.history_visibility!KeBlWUQiLYUoILKkTB:localhost:8800m ?m @anon-20191002_181700-170:localhost:8800, e?Q ]$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4Im.room.history_visibility!zFdNewlKnUiMBxnYrN:localhost:8800m >m 2@anon-20191002_181700-170:localhost:8800$ e/Q ]$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inom.room.join_rules!KeBlWUQiLYUoILKkTB:localhost:8800mvm@anon-20191002_181700-170:localhost:8800$ e/Q ]$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4m.room.join_rules!zFdNewlKnUiMBxnYrN:localhost:8800mum@anon-20191002_181700-170:localhost:8800) e9Q ]$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAm.room.canonical_alias!KeBlWUQiLYUoILKkTB:localhost:8800mmd@anon-20191002_181700-170:localhost:8800)e9Q ]$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0m.room.canonical_alias!zFdNewlKnUiMBxnYrN:localhost:8800mm@anon-20191002_181700-170:localhost:8800&e3Q ]$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIm.room.power_levels!KeBlWUQiLYUoILKkTB:localhost:8800mem?@anon-20191002_181700-170:localhost:8800&e3Q ]$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USgm.room.power_levels!zFdNewlKnUiMBxnYrN:localhost:8800mcm@anon-20191002_181700-170:localhost:8800 e'Q ]$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMm.room.member!KeBlWUQiLYUoILKkTB:localhost:8800m9m@anon-20191002_181700-170:localhost:8800 e'Q ]$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60m.room.member!zFdNewlKnUiMBxnYrN:localhost:8800m;m.@anon-20191002_181700-170:localhost:8800 e'Q  ]$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qm.room.create!zFdNewlKnUiMBxnYrN:localhost:8800m|m@anon-20191002_181700-170:localhost:8800 e'Q  ]$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2ncm.room.create!KeBlWUQiLYUoILKkTB:localhost:8800m{mX@anon-20191002_181700-170:localhost:8800!e)Q ]$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYm.room.aliases!UyLoIXmzVFwycmBUeh:localhost:8800mm2@anon-20191002_181700-169:localhost:8800   eQ_%$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 776}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg"], "type": "m.room.canonical_alias", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"alias": "#worldreadable:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040971928, "hashes": {"sha256": "Jns2UvSlwcr9v9/I7JNLnfWUy/gBBIboCxNy72+Hya0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ULVVehjIKatSDJgnnUf3d3afAQwy8aYlJ+adEldJqA7DJ26oBWhPNJUE/cbochKwmm7syF3SEJ0Z4gUVLph+DQ"}}, "unsigned": {"age_ts": 1570040971928}}jeQ_c$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 775}{"auth_events": ["$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "type": "m.room.power_levels", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"users": {"@anon-20191002_181700-170:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040970341, "hashes": {"sha256": "dHOFTHErGzDHH4woKQBkoOC/h3lxQy4s/60/DYmBFOo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EIEql4EWDMx0fWBC2ybFh+aah6W+cMEix1EMLaWq4PASxMpHdZdB6juQZSGYevwR4YSrzvtiHZ7NNBQvn/H+Bw"}}, "unsigned": {"age_ts": 1570040970341}}jeQ_c$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 774}{"auth_events": ["$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "type": "m.room.power_levels", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"users": {"@anon-20191002_181700-170:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040970339, "hashes": {"sha256": "9bkRqHHoSvMgjcDUkPIDK/qgiT5l58nZNwZaD/A2lpk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o2j5c+pwk8Wj5/1Xd6IYRIpb5tqProBJq4c6CbVpO9gEXOqB2kYt/DhVavhiOmyYWIU93j80FROIoisnk2/zAA"}}, "unsigned": {"age_ts": 1570040970339}}ueQ_y$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 773}{"auth_events": ["$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc"], "prev_events": ["$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc"], "type": "m.room.member", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-170", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-170:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040969017, "hashes": {"sha256": "ygpRJZbYo9cLdrFAWrHYvjgkQ9SvybkNB54AnsmCI70"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9CsQE5TS48t2TVJIjs6JP8KDz8y5ISYIX90T5onEs7//9rJMAn3J/9+bYjcIxOiwjXjJnvQQHLctzVs6ifpNCw"}}, "unsigned": {"age_ts": 1570040969017}} "q* Q u   A uzDCNs "cQ' e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.create$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8rQ))e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04oQ? e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibility$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0gQ/ e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rules$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEglQ9 e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_alias$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAiQ3 e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0 ~Q']e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMc}Q' e!tDsPLsKOLPePtEWRwn:localhost:8800m.room.create$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw |Q']e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMo{Q? e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibility$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwgzQ/ e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rules$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnoiyQ3 e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0 xQ']e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6UcwQ' e!XMNRkfscQXRjgYrOSd:localhost:8800m.room.create$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo vQ']e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUouQ? e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibility$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53AgtQ/ e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rules$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpMisQ3 e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA rQ']e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4cqQ' e!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.create$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwcpQ' e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatar$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhocoQ' e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avatar$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sonQ? e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuYrmQ))e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ErlQ))e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMokQ? e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibility$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4ojQ? e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4IgiQ/ e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_rules$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inoghQ/ e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rules$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4lgQ9 e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_alias$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FAlfQ9 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_alias$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0ieQ3 e!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levels$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIidQ3 e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg cQ']e!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60 ^G,d2Qk9q? wE,j8q? K w F  ~ L   R  X X & ^ ,}&^2^21e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I e1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc K1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig 80e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo 41e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk i1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y81e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4D1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwk1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w^1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE;1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMu1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4&1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA\1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU'1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkP1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAd1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYr1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-41e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s]1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s[1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 01e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU s1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkB1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM a1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwe1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Yh1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho11e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s001e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg]1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ez1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EI1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDoU1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE81e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0IW1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AF1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo a} { y w u sqomkigeca~NeeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~MeeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~LeeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~KeeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~JeeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~IeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~HeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~GeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~FeeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~EeeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~DeeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~CeeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~BeeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~AeeQ$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~@eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~?eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~>eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~=eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~<eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~;eeQ$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~:eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~9eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~8eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~7eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~6eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800~5eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800~4eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800~3eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800~2eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800~1eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800~0eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800  n eQ_$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 780}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4"], "type": "m.room.history_visibility", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040973886, "hashes": {"sha256": "0pg5dtl1sZ8Qxvnwkv5HDOqUc0qHisdYclWjYviwQOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2QyS3faHOxqhTmK6NHnaKPv8+dgi5WEg8VMBq3vQhO0b2jmfFKhjCDMWWklRez7pEr5miNOf0TLDz3uTeulvCg"}}, "unsigned": {"age_ts": 1570040973886}}s eQ_u$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 779}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA"], "type": "m.room.join_rules", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040972918, "hashes": {"sha256": "85hHEvmyGkIfq4/agAmVFodeVZ6UhsQNaVCbjuvGKJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "56xNH0WBnEm2vTQHsdzayHDJIc+ROjK3gN7yIogbIZoh47XaDmnd1cOMuzQfIevbDsVbVF/sOOUuc4roXFwtCg"}}, "unsigned": {"age_ts": 1570040972918}}s eQ_u$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 778}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0"], "type": "m.room.join_rules", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040972917, "hashes": {"sha256": "Z+Hh+j4s+Gzw1s4ZImsYdSmwYB1y9Tt0oPI2xgs7luY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BofS4l8VvRp451RoXZ5ChUiK6tA6FiyGpL/7O9ncT63zEydElf5hR8oskfcSznQwb0epKiQYM6Apc9tr5osPDw"}}, "unsigned": {"age_ts": 1570040972917}}eQ_+$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 777}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI"], "type": "m.room.canonical_alias", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"alias": "#nonworldreadable:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040971930, "hashes": {"sha256": "73sSqH1oEwcMzSCrxaM62POVhuSciuU3mh1r8xY8Tf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iw3wrW5KUAfHA6f0Wfl0X5vHorZA303VZCp18L+EVkRKtSxfuBRntFl2ZemtRLquFkJLyHG/mP4IbCbXkVwPBw"}}, "unsigned": {"age_ts": 1570040971930}} V  4 ] hm)0P jU*V[a!eQ' $5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800m.room.createmeQ? $gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibilityeeQ/ $DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rulesgeQ3 $uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels eQ']$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800joinaeQ' $ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.createaeQ' $S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800m.room.avataraeQ' $mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800m.room.avatarmeQ? $T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibilityjeQ9 $4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800m.room.canonical_aliasjeQ9 $9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_aliasgeQ3 $cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800m.room.power_levelsgeQ3 $FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels eQ']$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM!KeBlWUQiLYUoILKkTB:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800join eQ']$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800joina eQ' $fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800m.room.createa eQ' $1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800m.room.createp eQ))$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800peQ))$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800peQ))$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800meQ? $75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibilitymeQ? $3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibilitymeQ? $TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibilitypeQ))$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800m.room.aliaseslocalhost:8800peQ))$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800meQ? $pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800m.room.history_visibilityeeQ/ $p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_ruleseeQ/ $ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800m.room.join_ruleseeQ/ $wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4!zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rules q xCqNeQ_+$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 784}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM"], "type": "m.room.history_visibility", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040977980, "hashes": {"sha256": "1POr0OeYvLLfOSk1r3ibreWuHvao6jtzIndsxgC+6ts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CGlgXLy/JBw2PzwFzVJWr4OecqsaInI559TSvvryJeOLinUpL3SpXsLcZIFUm4d2jBAsP51KigGBBoCDFtA/Aw"}}, "unsigned": {"age_ts": 1570040977980, "replaces_state": "$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I"}}eQ_?$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 783}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4"], "type": "m.room.aliases", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"aliases": ["#nonworldreadable:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040975043, "hashes": {"sha256": "wHO4K0Pc30CBOVAW+/uLdI8PwlC+uPf7sLDdyPqr3y4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RN5t5Q97cIL05/GoNl3PAML0cR6ZwFft9WnRxzdg3rGWAB36vfcY4ser/fQBybO+WXX67rlSl7Jwpnfp+WvNCg"}}, "unsigned": {"age_ts": 1570040975043}} eQ_9$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 782}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I"], "type": "m.room.aliases", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"aliases": ["#worldreadable:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040975041, "hashes": {"sha256": "Bq6Awbfye8mXQeGwwjfI8pzoZU5XlgndNDorVUnTZAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6Nh37VbvgDSB8bbK0yfai2RdHu98YJWUhHgHWjOUcoXlUqCkj0H9rcOmBJtzRU1QjRBEgeSkfkSS7bkWS620Dg"}}, "unsigned": {"age_ts": 1570040975041}} eQ_$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 781}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino"], "type": "m.room.history_visibility", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040973887, "hashes": {"sha256": "bARW44Qy1SoBI2q1F0BQXbC7k6chHaTWMlwtQPiYuvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "55aO9QGEAF3UTpTP7l0p+EGBywsYdooFygj2N03KAYA57MttVZX0iCMUwJNlILHSOroIJbbcBVxUWYij7vzBBQ"}}, "unsigned": {"age_ts": 1570040973887}}  {zeQA$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts!StEnDjTJToXKXsOHNf:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 787}{"auth_events": ["$aZOoh1G2uwIQY35RIJsN5Nol-X67s9EZkgq6wolJV3o", "$oqef6H00voZpTwKaiclPcy6NB6CKguORI2afgN6nIWE", "$8_X27WizqdZONc8_x2b4SKQ-oxpbE1qT0QRe5kRcp98", "$1wxdDQwaKWXSPPbdxLajTapfMh68eVXrq9cn2SG00F4"], "content": {"avatar_url": null, "displayname": "11", "membership": "invite"}, "depth": 8, "hashes": {"sha256": "St4LNJdTKVO/YjZkd43QVOusRUptSj4NmyKwHKpLYfg"}, "origin": "localhost:8829", "origin_server_ts": 1570040981042, "prev_events": ["$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk"], "prev_state": [], "room_id": "!StEnDjTJToXKXsOHNf:localhost:8829", "sender": "@anon-20191002_181700-171:localhost:8829", "state_key": "@11:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "hDrH+P/J5m9tcBQxkVRGPqY+aqZyI7zA2JaNEUeJaTcOBCgfMr/wx7HTbh/WA1rqMU2UlV2GpfYWer994iFJDQ"}, "localhost:8800": {"ed25519:a_OdAo": "HxraPZqqEnLrc0kZPmZOyNyUkcpiTQeENECIdWFbB9eY6ry5pVmV1IGahWguGJoiy2P6fLJepG54DwkA83lOAA"}}, "unsigned": {"age": 7, "invite_room_state": [{"content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-171:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-171", "membership": "join"}, "sender": "@anon-20191002_181700-171:localhost:8829", "state_key": "@anon-20191002_181700-171:localhost:8829", "type": "m.room.member"}]}}eQ_$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800{"token_id": 194, "stream_ordering": 786}{"auth_events": ["$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg", "$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q", "$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60"], "prev_events": ["$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM"], "type": "m.room.avatar", "room_id": "!zFdNewlKnUiMBxnYrN:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"url": "https://example.com/ringtails.jpg"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040977982, "hashes": {"sha256": "Y3tpzj7B2UHWT+YNhmYOiRJ3iom+hbzkJ9WKaMMOW0k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OarTb3mYjNo78QSVfyoYw92qxONPkkVzTlp4wGLBWB2Qtjvjmx39kjrIOAdm/UTg6sXBPyQDN/xYsT/5D/oYDA"}}, "unsigned": {"age_ts": 1570040977982}}eQ_$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800{"token_id": 194, "stream_ordering": 785}{"auth_events": ["$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI", "$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc", "$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM"], "prev_events": ["$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E"], "type": "m.room.avatar", "room_id": "!KeBlWUQiLYUoILKkTB:localhost:8800", "sender": "@anon-20191002_181700-170:localhost:8800", "content": {"url": "https://example.com/ruffed.jpg"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040977984, "hashes": {"sha256": "/XadDILHPIencRznCShjvRhFpSf4YZjgWZIxh46laZk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mWkW5+oJfuFMrbBk+OlParpzMj/ee4hkZEZ79aMB3JAQ2szaeVXTCy0Xt7TMsEBefljrDxDnZjgiT8SAErKMAQ"}}, "unsigned": {"age_ts": 1570040977984}} ~z v r n j fb^ZVRNJFUeeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800TeeQ$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800SeeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800ReeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800QeeQ$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800PeeQ$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800OeeQ$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800NeeQ$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800MeeQ$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800LeeQ$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800KeeQ$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800JeeQ$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800IeeQ$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800HeeQ$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800GeeQ$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800FeeQ$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800EeeQ$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800DeeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800CeeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800BeeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800AeeQ$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800@eeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800?eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800>eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800=eeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800<eeQ$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800;eeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH4!VCSCNemqikJZiRtxrs:localhost:8829:eeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk!StEnDjTJToXKXsOHNf:localhost:88299eeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:88008eeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800 a} { y w u sqomkigeca~meeQ$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800~leeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800~keeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~jeeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800~ieeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800~heeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~geeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800~feeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800~eeeQ$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~deeQ$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800~ceeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800~beeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~aeeQ$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800~`eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800~_eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~^eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800~]eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800~\eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~[eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800~ZeeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800~YeeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~XeeQ$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800~WeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$vg1PldPyHXQjZRe62yrZ_TeLuhqs2uKk2GBlCxkB5e8!VCSCNemqikJZiRtxrs:localhost:8829~VeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$WAZSK7WwpL2K4mliboAFFWgXOPUDW14kxXeE2t3rn24!VCSCNemqikJZiRtxrs:localhost:8829~UeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$RbLYxz9wpsLZYH1_2FBk_ArpAo3RY3FDxxuwFp_1c08!VCSCNemqikJZiRtxrs:localhost:8829~TeeQ$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk$muLIa9hfLAC8hk3ZNvOwcxU3AzZyauMBaYkDmf7dXXk!VCSCNemqikJZiRtxrs:localhost:8829~SeeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$1wxdDQwaKWXSPPbdxLajTapfMh68eVXrq9cn2SG00F4!StEnDjTJToXKXsOHNf:localhost:8829~ReeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$8_X27WizqdZONc8_x2b4SKQ-oxpbE1qT0QRe5kRcp98!StEnDjTJToXKXsOHNf:localhost:8829~QeeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$oqef6H00voZpTwKaiclPcy6NB6CKguORI2afgN6nIWE!StEnDjTJToXKXsOHNf:localhost:8829~PeeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$aZOoh1G2uwIQY35RIJsN5Nol-X67s9EZkgq6wolJV3o!StEnDjTJToXKXsOHNf:localhost:8829~OeeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800 8c F  8 q3lP8CN e]]Q=$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0@anon-20191002_181700-186:localhost:8800@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800joinanon-20191002_181700-186MM e]]Q=!$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8@anon-20191002_181700-185:localhost:8800@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800joinanon-20191002_181700-185LemurLoverCL e]]Q=$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ@anon-20191002_181700-185:localhost:8800@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800joinanon-20191002_181700-1855K e]]Q!$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY@anon-20191002_181700-184:localhost:8800@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800joinLemurLoverCJ e]]Q=$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw@anon-20191002_181700-184:localhost:8800@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800joinanon-20191002_181700-184CI e]]Q=$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A@anon-20191002_181700-183:localhost:8800@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800joinanon-20191002_181700-183CH e]]Q=$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw@anon-20191002_181700-182:localhost:8800@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800joinanon-20191002_181700-182CG e]]Q=$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ@anon-20191002_181700-181:localhost:8800@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800joinanon-20191002_181700-181CF e]]Q=$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4@anon-20191002_181700-179:localhost:8800@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800joinanon-20191002_181700-179CE e]]Q=$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM@anon-20191002_181700-180:localhost:8829@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800joinanon-20191002_181700-180CD e]]Q=$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4@anon-20191002_181700-178:localhost:8800@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800joinanon-20191002_181700-178,C e]]Q$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo@anon-20191002_181700-177:localhost:8800@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800leaveCB e]]Q=$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY@anon-20191002_181700-177:localhost:8800@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800joinanon-20191002_181700-177CA e]]Q=$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY@anon-20191002_181700-176:localhost:8800@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800joinanon-20191002_181700-176C@ e]]Q=$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM@anon-20191002_181700-176:localhost:8800@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800joinanon-20191002_181700-1765? e]]Q!$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM@anon-20191002_181700-175:localhost:8800@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800joinOverriddenC> e]]Q=$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U@anon-20191002_181700-174:localhost:8800@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800joinanon-20191002_181700-1745= e]]Q!$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU@anon-20191002_181700-173:localhost:8800@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800joinOverriddenC< e]]Q=$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4@anon-20191002_181700-173:localhost:8800@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800joinanon-20191002_181700-173; e1]Q$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk@12:localhost:8800@anon-20191002_181700-172:localhost:8829!VCSCNemqikJZiRtxrs:localhost:8829invite12: e1]Q$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts@11:localhost:8800@anon-20191002_181700-171:localhost:8829!StEnDjTJToXKXsOHNf:localhost:8829invite11  ueQ_y$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 790}{"auth_events": ["$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw"], "prev_events": ["$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw"], "type": "m.room.member", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-173", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-173:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040984622, "hashes": {"sha256": "hkdWZ8h3Hbg0VuqA4Y0fr9Jp1mLF0R47PhwQKAAM64Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VgNpA9SOJ4WiMEDMEM/zIUIGo/reMLNfp3Txn9KV09JOcnccCQwrcFBVhWpP3G8yQ30JzS6/0Dxi3B1WayTlBA"}}, "unsigned": {"age_ts": 1570040984622}}heQ__$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 789}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-173:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040983957, "hashes": {"sha256": "i8AzCxnRV5/c8GNH9KwsKngCDnwBFHGU0WNL9je9Tpo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7bekTcg/jZIPMMGDA0yBzRy8fQoh43qq9tyyaWSVn1yIvWLmidSAgOxP5wCpYR+1YWxcDg0LpCfCpHYmJhz7BA"}}, "unsigned": {"age_ts": 1570040983957}}zeQA$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk!VCSCNemqikJZiRtxrs:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 788}{"auth_events": ["$muLIa9hfLAC8hk3ZNvOwcxU3AzZyauMBaYkDmf7dXXk", "$RbLYxz9wpsLZYH1_2FBk_ArpAo3RY3FDxxuwFp_1c08", "$WAZSK7WwpL2K4mliboAFFWgXOPUDW14kxXeE2t3rn24", "$vg1PldPyHXQjZRe62yrZ_TeLuhqs2uKk2GBlCxkB5e8"], "content": {"avatar_url": null, "displayname": "12", "membership": "invite"}, "depth": 8, "hashes": {"sha256": "70ioKWgda3BBPEObZzFs9kjX7Sq93BQieUDjUCUg+QM"}, "origin": "localhost:8829", "origin_server_ts": 1570040982861, "prev_events": ["$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH4"], "prev_state": [], "room_id": "!VCSCNemqikJZiRtxrs:localhost:8829", "sender": "@anon-20191002_181700-172:localhost:8829", "state_key": "@12:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "leDLjMx8+6uQtwTYlt6RHcPWrBGlwzNcER/xKKSg3K7Gcch0TbG2tw7ansfx1DzpF8So3V2lzJXY2gdHAJNTAQ"}, "localhost:8800": {"ed25519:a_OdAo": "Ut1K8rIT0A7bLym5NWO3EvhtEOWgRx2MKlBeXPnPWzK3r4HrJt1/madMFTvDEaygQLs8jjrPO48XfkGoPyrdBA"}}, "unsigned": {"age": 5, "invite_room_state": [{"content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-172:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-172", "membership": "join"}, "sender": "@anon-20191002_181700-172:localhost:8829", "state_key": "@anon-20191002_181700-172:localhost:8829", "type": "m.room.member"}]}} M Y 1 uM ]c!E@anon-20191002_181700-182:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4goTONQTGLEJV127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-181:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswoEXTONIIZTH127.0.0.1Perl + Net::Async::HTTP/0.44m)]c!E@anon-20191002_181700-179:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQoLJJECQVQQO127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-178:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAoRLQRIRERLR127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-177:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAoHOVRIDACJI127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-176:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgoKYCPIRLNMA127.0.0.1Perl + Net::Async::HTTP/0.44m\]c!E@anon-20191002_181700-175:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgoLQUTZGXEPW127.0.0.1Perl + Net::Async::HTTP/0.44mV]c!E@anon-20191002_181700-174:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywoXYSQAGTUQW127.0.0.1Perl + Net::Async::HTTP/0.44mH]c!E@anon-20191002_181700-173:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElzXk9QVEBPZVV-T1Y5M1IKMDAyZnNpZ25hdHVyZSCTzqm0af1C-otF_4gvZk0hH_ThXpbKovKhdcpskG50CAoHMAAIYSKTY127.0.0.1Perl + Net::Async::HTTP/0.44m1B{1a%E@12:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWFUOm9kWmNsaVVebUA3VAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIDrrNTqIEv5XDg0_ZAJPV_qQ87WBt8jea6wyg-AODVijCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m/Z   eQ_!$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxU!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 794}{"auth_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA", "$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM"], "prev_events": ["$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A"], "type": "m.room.member", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"displayname": "Overridden", "membership": "join", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-173:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040988371, "hashes": {"sha256": "BPWTRuk2Q0icOJPv7Fx1/D1EWrgdojGTKUqqb6Hf44U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RUKeleaAv8DVLye7hsSYH9CDl9g7LNfOTOpHnDNgDfdQHNCpxbCDz0qpJntxr3ZBsiHToF+91h8VkxqiJN5xBQ"}}, "unsigned": {"age_ts": 1570040988371, "replaces_state": "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"}}eQ_$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 793}{"auth_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA", "$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "prev_events": ["$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM"], "type": "m.room.history_visibility", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040987204, "hashes": {"sha256": "QzpXCF5J85V2LYfA+GUsAtHQQSQMWodA2inXUmgwm+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fpb1MZrmATxP81+OqJvP6bNv7AjF17STTNIDOZShn5FtwluzMxq+TFfbQVLaBthbyUbdM1yHQJT9hVqmqW98Ag"}}, "unsigned": {"age_ts": 1570040987204}}seQ_u$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 792}{"auth_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA", "$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "prev_events": ["$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA"], "type": "m.room.join_rules", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040986629, "hashes": {"sha256": "V3uYbHBX1+SLlZh2cq2yKdiEdLTe5gEMfjf1nR22ydM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cioUU9EDSV4Ydft7tTq5196zC0umL6Zc1m3uj1PEIj1WLiAmsOiV/6jfMc8cTLCWjJsJw+ahGuTqYbqKAfzOAw"}}, "unsigned": {"age_ts": 1570040986629}}jeQ_c$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800{"token_id": 195, "stream_ordering": 791}{"auth_events": ["$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw", "$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "prev_events": ["$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4"], "type": "m.room.power_levels", "room_id": "!wUuodvgsmAJqKJUBCQ:localhost:8800", "sender": "@anon-20191002_181700-173:localhost:8800", "content": {"users": {"@anon-20191002_181700-173:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040985921, "hashes": {"sha256": "n6NTyF7Tmf1bPSDX0rwrvl0tfUUakE84Y9T2uJ3YUAg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ogH+8NPkBQ30ZVHjT1nfXYcCPrU901dixAJ4b6aM/sbGwhhrBiI3aZCfc5irE7n3/jNyHNiCkk9hMHoBC51QCA"}}, "unsigned": {"age_ts": 1570040985921}} F'R  P  > W % D  ] +Y v d-2  Jj8 p> wE } | _L p' v D21e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4T1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 $1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk s1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY p11e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI R1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8P1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 U1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68x1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkp1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s*1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwJ1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA`1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAkp1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0K1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMO1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 f1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UL1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA61e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8\1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc U1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsW1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsB1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg:1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUs1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM41e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY01e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg -,1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk81e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU " DP f  d  z#{&61D 0e'Q ] $qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUom.room.member!BGbJEmJRVJGlZFQbZe:localhost:8800 mm@anon-20191002_181700-176:localhost:8800 /e'Q ]$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYm.room.member!BGbJEmJRVJGlZFQbZe:localhost:8800mm@anon-20191002_181700-177:localhost:8800!.e)Q ]$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUm.room.aliases!BGbJEmJRVJGlZFQbZe:localhost:8800mam@anon-20191002_181700-176:localhost:8800,-e?Q ]$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0m.room.history_visibility!BGbJEmJRVJGlZFQbZe:localhost:8800mm<@anon-20191002_181700-176:localhost:8800$,e/Q ]$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwm.room.join_rules!BGbJEmJRVJGlZFQbZe:localhost:8800m}!m}@anon-20191002_181700-176:localhost:8800)+e9Q ]$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwm.room.canonical_alias!BGbJEmJRVJGlZFQbZe:localhost:8800mzm{n@anon-20191002_181700-176:localhost:8800&*e3Q ]$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1cm.room.power_levels!BGbJEmJRVJGlZFQbZe:localhost:8800mxmy@anon-20191002_181700-176:localhost:8800 )e'Q ]$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYm.room.member!BGbJEmJRVJGlZFQbZe:localhost:8800mvmv@anon-20191002_181700-176:localhost:8800( e'Q  ]$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8m.room.create!BGbJEmJRVJGlZFQbZe:localhost:8800ms,ms@anon-20191002_181700-176:localhost:8800!'e)Q ]$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04m.room.aliases!tDsPLsKOLPePtEWRwn:localhost:8800mmmn@anon-20191002_181700-176:localhost:8800,&e?Q ]$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0m.room.history_visibility!tDsPLsKOLPePtEWRwn:localhost:8800mjmk@anon-20191002_181700-176:localhost:8800$%e/Q ]$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgm.room.join_rules!tDsPLsKOLPePtEWRwn:localhost:8800mhmmi@anon-20191002_181700-176:localhost:8800)$e9Q ]$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAm.room.canonical_alias!tDsPLsKOLPePtEWRwn:localhost:8800memfn@anon-20191002_181700-176:localhost:8800&#e3Q ]$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0m.room.power_levels!tDsPLsKOLPePtEWRwn:localhost:8800mccmd\@anon-20191002_181700-176:localhost:8800 "e'Q ]$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMm.room.member!tDsPLsKOLPePtEWRwn:localhost:8800mamab@anon-20191002_181700-176:localhost:8800! e'Q  ]$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwm.room.create!tDsPLsKOLPePtEWRwn:localhost:8800m^m^@anon-20191002_181700-176:localhost:8800 e'Q ]$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMm.room.member!XMNRkfscQXRjgYrOSd:localhost:8800mWmXQ@anon-20191002_181700-175:localhost:8800,e?Q ]$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUwm.room.history_visibility!XMNRkfscQXRjgYrOSd:localhost:8800mT mUk@anon-20191002_181700-174:localhost:8800$e/Q ]$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTnom.room.join_rules!XMNRkfscQXRjgYrOSd:localhost:8800mQmRo@anon-20191002_181700-174:localhost:8800&e3Q ]$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0m.room.power_levels!XMNRkfscQXRjgYrOSd:localhost:8800mOmP@anon-20191002_181700-174:localhost:8800 e'Q ]$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Um.room.member!XMNRkfscQXRjgYrOSd:localhost:8800mMmMj@anon-20191002_181700-174:localhost:8800 e'Q  ]$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqom.room.create!XMNRkfscQXRjgYrOSd:localhost:8800mI>mI@anon-20191002_181700-174:localhost:8800 e'Q ]$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUm.room.member!wUuodvgsmAJqKJUBCQ:localhost:8800mBmCX@anon-20191002_181700-173:localhost:8800,e?Q ]$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53Am.room.history_visibility!wUuodvgsmAJqKJUBCQ:localhost:8800m>Dm@q@anon-20191002_181700-173:localhost:8800 H8Qj w E + }>] L%W   S ! Y '  _ -3epk9q? wE}K1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs'1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM&1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA U21e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8,1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwu1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUB1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A 61e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds 1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw-1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQd1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo,1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY,1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoK1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUc1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk:1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY+1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0Y1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 F1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68x1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkn1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 q21e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E F'R  P  > W % D  ] +Y v d-2  Jj8 p> wE } | _L p' v D21e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4T1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 $1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk s1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY p11e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI R1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8P1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 U1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68x1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkp1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s*1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwJ1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA`1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAkp1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0K1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMO1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 f1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UL1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA01e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8V1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc S1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsQ1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs<1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg41e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUm1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM41e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY01e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg -,1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk81e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU " [a"kP5nH1bB" Z 7 { X   h )  { X 2  a ;gJ*H {XAQ4]FmV' </ 'm.room.join_rules)3 &m.room.power_levels("? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules/ m.room.join_rules9 m.room.canonical_alias9 m.room.canonical_alias9 m.room.canonical_alias3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-169:localhost:8800>']m.room.member@anon-20191002_181700-169:localhost:8800>']%m.room.member@anon-20191002_181700-184:localhost:8800'' $m.room.create&"? #m.room.history_visibility%/ "m.room.join_rules$3 !m.room.power_levels#>'] m.room.member@anon-20191002_181700-183:localhost:8800"' m.room.create!"? m.room.history_visibility / m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-182:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-181:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-179:localhost:8800>']m.room.member@anon-20191002_181700-180:localhost:8829>']m.room.member@anon-20191002_181700-180:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3  m.room.power_levels>'] m.room.member@anon-20191002_181700-178:localhost:8800'  m.room.create >'] m.room.member@anon-20191002_181700-177:localhost:8800 >'] m.room.member@anon-20191002_181700-177:localhost:8800 %))m.room.aliaseslocalhost:8800 "? m.room.history_visibility / m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-176:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-176:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-175:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-174:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-173:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-173:localhost:8800' m.room.create' m.room.avatar' m.room.avatar"? m.room.history_visibility%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules9 m.room.canonical_alias9 m.room.canonical_alias3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-170:localhost:8800>']m.room.member@anon-20191002_181700-170:localhost:8800' m.room.create' m.room.create%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility"? m.room.history_visibility g * T~=ggE]!c@anon-20191002_181700-185:localhost:8800VORURBUNEEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwogD]!c@anon-20191002_181700-184:localhost:8800VWQCQPUGVZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1QogC]!c@anon-20191002_181700-183:localhost:8800PNPQZSANHGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1AogB]!c@anon-20191002_181700-182:localhost:8800TONQTGLEJVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExiLWRSWDRLQGp1dDImXnUKMDAyZnNpZ25hdHVyZSDADuu54gy4E73eV5ZAPqmlNEaS8_W0rrTDABMMnVmV4gogA]!c@anon-20191002_181700-181:localhost:8800EXTONIIZTHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGEjbWhKcjh-NWFXNX51OzsKMDAyZnNpZ25hdHVyZSAiWLGvcFlCjAqmA6RpPhy1bWMsuj5Hp1uJrqwnDqyTswog@]!c@anon-20191002_181700-179:localhost:8800LJJECQVQQOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNqckhZTDVYLkF3QWlAZDMKMDAyZnNpZ25hdHVyZSD5aetm0lQRS8pejCnd6NnKhHh9SbEWRyMH7afmAUkhzQog?]!c@anon-20191002_181700-178:localhost:8800RLQRIRERLRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEhhcjlVRHNEeW4rLmo6I3YKMDAyZnNpZ25hdHVyZSCQqK8EQqer9QjZGUMJqpaJ5mPAprJ6HeO-2wz1HKpYTAog>]!c@anon-20191002_181700-177:localhost:8800HOVRIDACJIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZ1TS43LDlXS1lTWjp-XngKMDAyZnNpZ25hdHVyZSCgn93p_Qb1ujDVUn-xagNdss_OQ0WE5f4fipEqRqbfvAog=]!c@anon-20191002_181700-176:localhost:8800KYCPIRLNMAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEFLY1hsS2N0blh3JiZWUSoKMDAyZnNpZ25hdHVyZSAW1zIf77ZRc0W56RNLI4nzUEoiyhgAJXx9WispI8JCJgog<]!c@anon-20191002_181700-175:localhost:8800LQUTZGXEPWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlPdlExQ2pmRFY3ayM6XkUKMDAyZnNpZ25hdHVyZSBi6sGZEgSSviVw2-8SHRHSwIdZ7NNUhSnAOSMdguAyrgog;]!c@anon-20191002_181700-174:localhost:8800XYSQAGTUQWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpXWXpFdGpfSVA6bUB6YXAKMDAyZnNpZ25hdHVyZSBGgWpzVdUdjs0a2wPgo_T3or8VETdTZEi-8lgnb_2kywo .oLM` b cdm)WX Z  \  ] o ^ e _ TeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800TeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800SeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M!kxTDuIasPNpXtiRsif:localhost:8800TeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:88006TeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800TeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800rTeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro!wCsDjKBtuUbrmZgjsB:localhost:8800bTeQ$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s!DntdfAPfCfgdOoRMdl:localhost:8800\FIQ$64_redaction2:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800CSeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE!TleKOyAElrpgyyrAQA:localhost:8800$A?Q$60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:88007;3Q$89:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800XTeQ$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo!PVyTvKbqnjSXfGWAMy:localhost:8800TTeQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800TeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U!PgNDjhhIBAXKryuGKy:localhost:8800TeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800TeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800WTeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800TeQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800TeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:88009SeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800TeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA!WpThtNEVhrUbUdCdMJ:localhost:8800TeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0!fGkUEndqGrieltwbCh:localhost:8800TeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800SeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!RmdhCjvouVLmyIHjaM:localhost:8800)TeQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800TeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800TeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800TeQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800SeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o!nteAxExBGJfaGIpuCx:localhost:8800b |t l d \ T LD<4,$eeQ$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800ԁeeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800teeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800ueeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800veeQ$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800 ReeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU!coGyOAgYnlBZAqznax:localhost:8800 eeQ$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800ҁeeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800؁eeQ$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800 eeQ$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10!kOmCTyiizHqfCJdhlR:localhost:8800 jeeQ$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800 leeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800eeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800eeQ$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4!quaZwrGnzbNWhwAOYB:localhost:8800SeeQ$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800    -seQ_u$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 798}{"auth_events": ["$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0", "$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo", "$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U"], "prev_events": ["$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0"], "type": "m.room.join_rules", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040992180, "hashes": {"sha256": "Qo0Cis3LkIr9goj80ozzS5YFJJjo3nevCnBe80vwihs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iKt94Zn6iyESmoPmRIdALqi5aozxDDjNpFOLykPAFDakLPCa9K7xbMjybhiMYudx8K/qXcWugXLp5wlcyL3EDg"}}, "unsigned": {"age_ts": 1570040992180}}jeQ_c$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 797}{"auth_events": ["$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo", "$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U"], "prev_events": ["$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U"], "type": "m.room.power_levels", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"users": {"@anon-20191002_181700-174:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040991507, "hashes": {"sha256": "i4gstDdEnIMIx3Be97ofJHDE7P8WGj9WAhQ2ahbt15U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v4HHEPUO3ZxLwJqBOD50d/w5UUIEzi9dqiR4OBgGt0CUmXtg3HpjspUsDq8a6ZUrHck/RdVxEWqm4SD/5vH3Bw"}}, "unsigned": {"age_ts": 1570040991507}}ueQ_y$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 796}{"auth_events": ["$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo"], "prev_events": ["$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo"], "type": "m.room.member", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-174", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-174:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040990981, "hashes": {"sha256": "vFkfDxce/vTXt4YAUh77UI/5CtYwS9AHpHW8ec2gLNk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wEc4LL8MsrOHWLxyKuAX1Tu2GYsSpuKZsD2bBAtBU5sxXm6/pDf4jCs9Tsdqn3pWGa9WDjxu2Aj2mttydzizDA"}}, "unsigned": {"age_ts": 1570040990981}}heQ__$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800{"token_id": 196, "stream_ordering": 795}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XMNRkfscQXRjgYrOSd:localhost:8800", "sender": "@anon-20191002_181700-174:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-174:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040990014, "hashes": {"sha256": "7AKmUTDtSTZUUTf5akY6a1jtdtwUKwgic1Xfq4Cp/MI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uRf0jkOFxFY6wSeS6j4N+D96Wm8w66rFxOzMQIFNQssx0uSIbLf8SEyyiqoeRcv5fD4PsDM5WQvf8+AU3BCVDA"}}, "unsigned": {"age_ts": 1570040990014}} !Mp% . 1 V m  v .E%GAJMjmQ3 ee?Q ]$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Mm.room.history_visibility!wAyboOFgsOPwkmgMAI:localhost:8800mBm!@anon-20191002_181700-181:localhost:8800$=e/Q ]$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwm.room.join_rules!wAyboOFgsOPwkmgMAI:localhost:8800mm@anon-20191002_181700-181:localhost:8800&<e3Q ]$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgm.room.power_levels!wAyboOFgsOPwkmgMAI:localhost:8800mm-@anon-20191002_181700-181:localhost:8800 ;e'Q ]$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQm.room.member!wAyboOFgsOPwkmgMAI:localhost:8800mm@anon-20191002_181700-181:localhost:8800: e'Q  ]$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8m.room.create!wAyboOFgsOPwkmgMAI:localhost:8800mm@anon-20191002_181700-181:localhost:8800 9e'Q ]$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4m.room.member!bnTuVBaAJTPbcYZtRl:localhost:8800mm%@anon-20191002_181700-179:localhost:8800 8e'Q ]$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMm.room.member!bnTuVBaAJTPbcYZtRl:localhost:8800mm@anon-20191002_181700-180:localhost:8829!7e)Q ]$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Qm.room.aliases!bnTuVBaAJTPbcYZtRl:localhost:8800m7m!@anon-20191002_181700-178:localhost:8800,6e?Q ]$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycm.room.history_visibility!bnTuVBaAJTPbcYZtRl:localhost:8800mmV@anon-20191002_181700-178:localhost:8800$5e/Q ]$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIm.room.join_rules!bnTuVBaAJTPbcYZtRl:localhost:8800mmC@anon-20191002_181700-178:localhost:8800)4e9Q ]$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkm.room.canonical_alias!bnTuVBaAJTPbcYZtRl:localhost:8800mLm4@anon-20191002_181700-178:localhost:8800&3e3Q ]$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhom.room.power_levels!bnTuVBaAJTPbcYZtRl:localhost:8800mm@anon-20191002_181700-178:localhost:8800 2e'Q ]$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4m.room.member!bnTuVBaAJTPbcYZtRl:localhost:8800mm!@anon-20191002_181700-178:localhost:88001 e'Q  ]$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0m.room.create!bnTuVBaAJTPbcYZtRl:localhost:8800mVm@anon-20191002_181700-178:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VHeL$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMsha256| .0Ⱦy~fZpFsQVGeL$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSksha256z ZbĹ~<5 zoR=})VFeL$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQoksha256Z k"شN@䈻5 !WGBVEeL$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20Asha256WuY!gXȩwQ$̙v*@VDeL$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAsha256]=_UnWVtR)Ѝ2L+FVCeL$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doosha256>a3|$Q5 3W8q3=y7vVBeL$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Qsha256mf`buҚa'2&=TVAeL$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcsha256(IS7K@PaR+ 㯃lIWV@eL$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwsha256蔵9-~C(,Ơ%pFp5άV?eL$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xksha256Jf!a}"GeL$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOgsha256:VΤ6-?F}Ty>v$V=eL$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Msha256xpCM5&BvL w V<eL$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwsha256[ƤNW] ,̃T˪I*#V;eL$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgsha2564> <45M̍O4lV:eL$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQsha256Ƹ kbSJH$+tvM tV9eL$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8sha2569EL^sa$ 䩎yڐxz/V8eL$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4sha2565wG3 J1 (Br@~V7eL$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMsha256U}@AT5(fq[ho_Xd V6eL$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Qsha256ox&i} Zkros:/tV5eL$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycsha256xߗI, UIG%pd+'V4eL$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIsha256`Sm?6:X% +lY7 "V3eL$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilksha256]Q]L,qiwk*x^YV2eL$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhosha256^y=l~%A ogaLDV1eL$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4sha256hT9{| PVږƭ|V0eL$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0sha256%_ }"8 &̓O6')V/eL$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUosha256&<)E>> JV.eL$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYsha256!]ϡT{8YU@&V-eL$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUsha256 i: z5zTVk} v D  } K  R X & _ -e3k9q? wE}KQ1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 =1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYy1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmId1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA ,1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoP1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4C1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AE1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw?1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds-1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y41e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI &1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8*1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY'1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI^1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgn1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wG1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo 0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk51e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA 41e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0u1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0Q1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68n1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 [1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs 1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg }1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8^1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokB0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw]1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ^1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 51e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g [ "s 4 Q ` ! > $3\4`imveQ? $2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibilityeueQ/ $1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rulesgteQ3 $tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels seQ']$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800areQ' $1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.createmqeQ? $eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibilityepeQ/ $W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rulesgoeQ3 $NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levels neQ']$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800ameQ' $GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800m.room.create leQ']$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800 keQ']$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829pjeQ))$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800mieQ? $oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibilityeheQ/ $YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rulesjgeQ9 $su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_aliasgfeQ3 $Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels eeQ']$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800adeQ' $JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create ceQ']$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800 beQ']$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800paeQ))$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800m`eQ? $Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibilitye_eQ/ $-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rulesj^eQ9 $yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_aliasg]eQ3 $ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels \eQ']$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800a[eQ' $_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.createpZeQ))$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800mYeQ? $o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibilityeXeQ/ $XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rulesjWeQ9 $YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_aliasgVeQ3 $yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels UeQ']$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800 *)o0 M X  6 @Ep4?Da'eQ' $XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800m.room.create &eQ']$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-175:localhost:8800joinm%eQ? $0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibilitye$eQ/ $SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rulesg#eQ3 $2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800m.room.power_levels "eQ']$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U!XMNRkfscQXRjgYrOSd:localhost:8800m.room.member@anon-20191002_181700-174:localhost:8800joinp<eQ))$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800m;eQ? $oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibilitye:eQ/ $YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rulesj9eQ9 $su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_aliasg8eQ3 $Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels 7eQ']$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800joina6eQ' $JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create5eQ']$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800leavep4eQ))$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800m3eQ? $Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibilitye2eQ/ $-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rulesj1eQ9 $yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_aliasg0eQ3 $ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels /eQ']$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800joina.eQ' $_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.createp-eQ))$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800m,eQ? $o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibilitye+eQ/ $XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rulesj*eQ9 $YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_aliasg)eQ3 $yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels (eQ']$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800join 4 d \| T t,$ LD< l eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800`eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800 %eeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800 .eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800 eeQ$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o!duCKuavMBSfRbTFPsc:localhost:8800eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800eeQ$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo!GiSxJsKZhQVHBkrVPn:localhost:88009eeQ$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800eeQ$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800ȁeeQ$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800 eeQ$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800EeeQ$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo!HcMGemcRrLnLprOJJR:localhost:8800ʁeeQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800 MeeQ$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800߁eeQ$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800keeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800 ieeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800 eeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800_  %eQ_$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 806}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg"], "type": "m.room.history_visibility", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040998530, "hashes": {"sha256": "hXtHe8PCL1fVMXT3Ts5n3v1P8bHb8u3FB2sX7YkiXvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ti1sQV2bAut9aUP/cZ3Pzuxp3JbNqTF9ozH6C/5NbfoQapkztKOlRAcJn3NbjAPRIOEIqzCadmJbbcygI833BQ"}}, "unsigned": {"age_ts": 1570040998530}}s$eQ_u$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 805}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA"], "type": "m.room.join_rules", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040997997, "hashes": {"sha256": "znjJ0dgyRPgI0STM4qIFjGrYsPeNEWYl85NY6vl2XEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "krCVx24gspFaAN1y3tmraZ1t6846lM0SIvAnEKWsZwE2f/hMyQwXs4UiGTBK7L/45EpS5VeeTSDjVC0adFlHDQ"}}, "unsigned": {"age_ts": 1570040997997}}#eQ_9$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 804}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0"], "type": "m.room.canonical_alias", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"alias": "#test-20191002_181700-29:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040997305, "hashes": {"sha256": "e/KKjnUfe81AjP7C2EVboY3/RS2Xf0+WdsDquSnpLOo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "27wfIv1x00us5mCEdPvBjOvBPeMeqgu7kmacYQ2kVAtVqfyMVdyo/K5Cw4y1y2s2Fcz3P5E2GVVcnwW/HqJCBw"}}, "unsigned": {"age_ts": 1570040997305}}j"eQ_c$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 803}{"auth_events": ["$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "type": "m.room.power_levels", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"users": {"@anon-20191002_181700-176:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570040996707, "hashes": {"sha256": "5OfsMQ+JIgS1OeWdWT/NSTyurRU0NdFTAzd52Wbl9h0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HU5aWyORrhfxn4/suYA3CQbb6SBiGvi/2MibZa9iHNjzMByr3YTuFiB38mrsHzo++rOk98ergF5aT71kBCSQBA"}}, "unsigned": {"age_ts": 1570040996707}} $59<]HIr& O; ! j / } @ D P9"Rv6Q' !itfjLXhEaORJLkbfVS:localhost:8800m.room.create ^Q']!itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800 $:Q/ !itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rules BQ? !jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibility :Q/ !jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rules <Q3 !jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels ^Q']!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800 6Q' !jGQNGXehugtTvjUGKI:localhost:8800m.room.create BQ? !itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibility <Q3 !itKDOCtoMkFUETDtle:localhost:8800m.room.power_levelsl^Q']!itKDOCtoMkFUETDtle:localhost:8800m.room.member@anon-20191002_181700-167:localhost:8800kGQ'/!itKDOCtoMkFUETDtle:localhost:8800m.room.member@8:localhost:8800o:Q/ !itKDOCtoMkFUETDtle:localhost:8800m.room.join_rulesmBQ? !itKDOCtoMkFUETDtle:localhost:8800m.room.history_visibilityn6Q' !itKDOCtoMkFUETDtle:localhost:8800m.room.createj<Q3 !ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels]Q'[!jfshVGNDxkvqPxFxWB:localhost:8800m.room.member@anon-20191002_181700-74:localhost:8800:Q/ !jfshVGNDxkvqPxFxWB:localhost:8800m.room.join_rulesBQ? !jfshVGNDxkvqPxFxWB:localhost:8800m.room.history_visibility6Q' !jfshVGNDxkvqPxFxWB:localhost:8800m.room.create;Q3 !jYzridjeihmwPBuwLb:localhost:8800m.room.power_levelsF\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-30:localhost:8800R\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-29:localhost:8800Q\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-28:localhost:8800P\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-27:localhost:8800O\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-26:localhost:8800N\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-25:localhost:8800M\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-24:localhost:8800L\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-23:localhost:8800E\Q'[!jYzridjeihmwPBuwLb:localhost:8800m.room.member@anon-20191002_181700-22:localhost:8800K9Q/ !jYzridjeihmwPBuwLb:localhost:8800m.room.join_rulesHAQ? !jYzridjeihmwPBuwLb:localhost:8800m.room.history_visibilityI5Q' !jYzridjeihmwPBuwLb:localhost:8800m.room.createD>Q9 !jYzridjeihmwPBuwLb:localhost:8800m.room.canonical_aliasGDQ))!jYzridjeihmwPBuwLb:localhost:8800m.room.aliaseslocalhost:8800J<Q3 !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels @^Q']!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800 ?RQ'E!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455 C:Q/ !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules ABQ? !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibility B6Q' !jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create ><Q3 !jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels"^Q']!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800!:Q/ !jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rules%BQ? !jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility$<Q3 !jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access#6Q' !jIfvTrwedrWLubsnlM:localhost:8800m.room.create <Q3 !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels^Q']!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800:Q/ !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rulesBQ? !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibility6Q' !jDKAOtmeAGbYTpwyEW:localhost:8800m.room.create<Q3 !itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels  ] U M |&E>6.t l d eeQ$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800MeeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800 \eeQ$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800ƁeeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800SeeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800veeQ$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E!EyEaTZElOkdURKbEXo:localhost:8800eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800eeQ$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA!JusxqeECtidaPlWqhp:localhost:8800MeeQ$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800ŁeeQ$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc!sPWVGnipjiiWQpywNO:localhost:8800.eeQ$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM!OMkiVTuuOEeiFAXtUY:localhost:8800-eeQ$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM!TleKOyAElrpgyyrAQA:localhost:8800eeQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4!sPWVGnipjiiWQpywNO:localhost:88004eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800zeeQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800 jeeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA!UGVFuRGyPQmBbGsEDo:localhost:8800>eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800 eeQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800  ] qj)eQ_c$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 810}{"auth_events": ["$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "type": "m.room.power_levels", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"users": {"@anon-20191002_181700-176:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041001998, "hashes": {"sha256": "lqIgwZAzJ7ENseElV0JwuEAswbMogaiG6W3y2W7qeYI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V0l2R94PTzj6NGKfoAzlrvBsBvt+QklShbzB4tpIQ6ttvsSm+eJKDigl1Ytw+4jy+HLLPegwoczgi3ZJomXlCg"}}, "unsigned": {"age_ts": 1570041001998}}u(eQ_y$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 809}{"auth_events": ["$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8"], "prev_events": ["$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8"], "type": "m.room.member", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-176", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-176:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041001490, "hashes": {"sha256": "CrKhMcwtlEaPSGFf75zcKp1n23ELD7eWm8gRifwaF1k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u22z4H5FrUFU93qM14+95BSCTZRGP694xLNVbd5jjo8aldaoLGw1qjJCd+w3JZ8unJLklAMyNGe76UjD+CKTCw"}}, "unsigned": {"age_ts": 1570041001490}}h'eQ__$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 808}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-176:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041000748, "hashes": {"sha256": "HqAfGboLe2ixXvnW1Ad6xBBAM118DfUu73ASwEyl8LM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "frrKHCmIJSArPlXbDMgMMpXsFLBhdSoDKVFO0YF6/70xeVDQF63AlLT+T0Q7bTf/QY+bMgDokCYWMTlPq6FfBw"}}, "unsigned": {"age_ts": 1570041000748}}&eQ_M$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04!tDsPLsKOLPePtEWRwn:localhost:8800{"token_id": 198, "stream_ordering": 807}{"auth_events": ["$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0", "$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw", "$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"], "prev_events": ["$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0"], "type": "m.room.aliases", "room_id": "!tDsPLsKOLPePtEWRwn:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"aliases": ["#test-20191002_181700-29:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570040999390, "hashes": {"sha256": "0ME2H30AKsUXDFamT3LbdmyVOXc1N8MK1CYTZJEQhYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S2brMbXZ5ZMAvfnV0hRk0/SGivWAJon2nOBnGhnU+FT5rauetK1ffaKDoENY1WRiM8/GwnpkSplHUZaOYlCzDQ"}}, "unsigned": {"age_ts": 1570040999390}} -RM H C > 9 4/*|%w rmhc T.Qe.!dnZVySJLGNtUKsSgXW:localhost:8800$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQT-Qe-!dnZVySJLGNtUKsSgXW:localhost:8800$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYT,Qe,!dnZVySJLGNtUKsSgXW:localhost:8800$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMT+Qe+!dnZVySJLGNtUKsSgXW:localhost:8800$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQT*Qe*!dnZVySJLGNtUKsSgXW:localhost:8800$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMT)Qe)!oznZaCpONuNDaLarkI:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYT(Qe(!oznZaCpONuNDaLarkI:localhost:8800$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMT'Qe'!oznZaCpONuNDaLarkI:localhost:8800$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgT&Qe&!oznZaCpONuNDaLarkI:localhost:8800$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAT%Qe%!oznZaCpONuNDaLarkI:localhost:8800$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwT$Qe$!oznZaCpONuNDaLarkI:localhost:8800$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80T#Qe#!eLsrBEnrHolwCNgkFW:localhost:8800$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMT"Qe"!eLsrBEnrHolwCNgkFW:localhost:8800$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkT!Qe!!eLsrBEnrHolwCNgkFW:localhost:8800$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokT Qe !eLsrBEnrHolwCNgkFW:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20ATQe!eLsrBEnrHolwCNgkFW:localhost:8800$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgATQe!ILbUVZOfPPwaZRrKJd:localhost:8800$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwTQe!ILbUVZOfPPwaZRrKJd:localhost:8800$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkTQe!wAyboOFgsOPwkmgMAI:localhost:8800$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MTQe!wAyboOFgsOPwkmgMAI:localhost:8800$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwTQe!wAyboOFgsOPwkmgMAI:localhost:8800$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgTQe!wAyboOFgsOPwkmgMAI:localhost:8800$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQTQe!wAyboOFgsOPwkmgMAI:localhost:8800$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8TQe!bnTuVBaAJTPbcYZtRl:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4TQe!bnTuVBaAJTPbcYZtRl:localhost:8800$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$Gby745twfjOw81-KFSSbVeIfLZqqYisOgUSAyVUguBgTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3QTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycTQe!bnTuVBaAJTPbcYZtRl:localhost:8800$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCITQe!bnTuVBaAJTPbcYZtRl:localhost:8800$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkT Qe !bnTuVBaAJTPbcYZtRl:localhost:8800$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhoT Qe !bnTuVBaAJTPbcYZtRl:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4T Qe !bnTuVBaAJTPbcYZtRl:localhost:8800$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0T Qe !BGbJEmJRVJGlZFQbZe:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUoT Qe !BGbJEmJRVJGlZFQbZe:localhost:8800$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0TQe!BGbJEmJRVJGlZFQbZe:localhost:8800$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1cTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYTQe!BGbJEmJRVJGlZFQbZe:localhost:8800$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8 !q, E ' 2 W { wYd'Qy~o%Q? e#!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibility$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMg$Q/ e"!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rules$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSki#Q3 e!!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok "Q']e !eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20Ac!Q' e!eLsrBEnrHolwCNgkFW:localhost:8800m.room.create$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAo Q? e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibility$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doogQ/ e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rules$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QiQ3 e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc Q']e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwcQ' e!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.create$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkoQ? e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MgQ/ e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rules$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwiQ3 e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levels$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg Q']e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQcQ' e!wAyboOFgsOPwkmgMAI:localhost:8800m.room.create$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8 Q']e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4 Q']e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM Q']e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829$Gby745twfjOw81-KFSSbVeIfLZqqYisOgUSAyVUguBgrQ))e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3QoQ? e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibility$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycgQ/ e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rules$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIlQ9 e!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_alias$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkiQ3 e !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho Q']e !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4c Q' e !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0 Q']e !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo Q']e !BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-177:localhost:8800$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYr Q))e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.aliaseslocalhost:8800$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUo Q? e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.history_visibility$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0gQ/ e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.join_rules$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRwlQ9 e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.canonical_alias$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwiQ3 e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.power_levels$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c Q']e!BGbJEmJRVJGlZFQbZe:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY  gh-eQ_M$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 814}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0"], "type": "m.room.aliases", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"aliases": ["#test-20191002_181700-30:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041004897, "hashes": {"sha256": "eybInNtdmLfgvFWzlzBxY/3FiTOzIUKzk+EVrfECWOQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7mD1OUQa7WZ1TIw1CNY4/uyqiIA+Gvj/W8eiSxvEQIurPhEIGa3DnRHliacvYEWr5VvgX/LIsSTdSyr9jzJAg"}}, "unsigned": {"age_ts": 1570041004897}},eQ_$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 813}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw"], "type": "m.room.history_visibility", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041003913, "hashes": {"sha256": "jUYn4UTOWrlVae4n0gXJJMHXvu6UY+Qj/cg2FEFRuH0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GIXzshHNr8lpyzD3tCBKNnd8fxqb3N4nodBVGBvTkp+5Wpp6Ku6uhGCWtNk8kzshCtzD+qUMNiagjWyTi2haCA"}}, "unsigned": {"age_ts": 1570041003913}}s+eQ_u$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 812}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw"], "type": "m.room.join_rules", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041003297, "hashes": {"sha256": "2frSZHV/ir8m9nMBRyZEb9Xhk+j+WDmJt3/qUNd52MA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c+/lBDjz4LOEBzQj3F7WnkRBA+z4u/YY26/RuJrNlBAiwv0I68eJWCxAF5vEU9FXy+aMMJhrpJ75IaLULDeTCA"}}, "unsigned": {"age_ts": 1570041003297}}*eQ_9$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 811}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c"], "type": "m.room.canonical_alias", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"alias": "#test-20191002_181700-30:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041002664, "hashes": {"sha256": "PyLu7jAVmFAR+3ONCeYB2g9iB8WTJXU8Tqh2HL7bXI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m0o+1R3OpVcxY4reGLUWMxC08TBnSn/rOJrVo0NH/3HmTGEwDK1PeokfCWKitpEigGyvRuDDT4BWwwZ87mbKBA"}}, "unsigned": {"age_ts": 1570041002664}} -RM H C > 9 4/*|%w rmhc T[QeW!hgjYwwwjWJNgwrzOto:localhost:8800$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0TZQeV!hgjYwwwjWJNgwrzOto:localhost:8800$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70TYQeU!dnZVySJLGNtUKsSgXW:localhost:8800$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8TXQeT!dnZVySJLGNtUKsSgXW:localhost:8800$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQTWQeS!dnZVySJLGNtUKsSgXW:localhost:8800$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYTVQeR!dnZVySJLGNtUKsSgXW:localhost:8800$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMTUQeQ!dnZVySJLGNtUKsSgXW:localhost:8800$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQTTQeP!dnZVySJLGNtUKsSgXW:localhost:8800$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMTSQeO!oznZaCpONuNDaLarkI:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYTRQeN!oznZaCpONuNDaLarkI:localhost:8800$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMTQQeM!oznZaCpONuNDaLarkI:localhost:8800$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgTPQeL!oznZaCpONuNDaLarkI:localhost:8800$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIATOQeK!oznZaCpONuNDaLarkI:localhost:8800$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwTNQeJ!oznZaCpONuNDaLarkI:localhost:8800$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80TMQeI!eLsrBEnrHolwCNgkFW:localhost:8800$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMTLQeH!eLsrBEnrHolwCNgkFW:localhost:8800$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkTKQeG!eLsrBEnrHolwCNgkFW:localhost:8800$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQokTJQeF!eLsrBEnrHolwCNgkFW:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20ATIQeE!eLsrBEnrHolwCNgkFW:localhost:8800$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgATHQeD!ILbUVZOfPPwaZRrKJd:localhost:8800$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooTGQeC!ILbUVZOfPPwaZRrKJd:localhost:8800$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QTFQeB!ILbUVZOfPPwaZRrKJd:localhost:8800$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcTEQeA!ILbUVZOfPPwaZRrKJd:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwTDQe@!ILbUVZOfPPwaZRrKJd:localhost:8800$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkTCQe?!wAyboOFgsOPwkmgMAI:localhost:8800$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOgTBQe>!wAyboOFgsOPwkmgMAI:localhost:8800$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MTAQe=!wAyboOFgsOPwkmgMAI:localhost:8800$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwT@QeQe:!wAyboOFgsOPwkmgMAI:localhost:8800$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8T=Qe9!bnTuVBaAJTPbcYZtRl:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4T<Qe9!bnTuVBaAJTPbcYZtRl:localhost:8800$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMT;Qe8!bnTuVBaAJTPbcYZtRl:localhost:8800$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMT:Qe7!bnTuVBaAJTPbcYZtRl:localhost:8800$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3QT9Qe6!bnTuVBaAJTPbcYZtRl:localhost:8800$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycT8Qe5!bnTuVBaAJTPbcYZtRl:localhost:8800$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIT7Qe4!bnTuVBaAJTPbcYZtRl:localhost:8800$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilkT6Qe3!bnTuVBaAJTPbcYZtRl:localhost:8800$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhoT5Qe2!bnTuVBaAJTPbcYZtRl:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4T4Qe1!bnTuVBaAJTPbcYZtRl:localhost:8800$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0T3Qe0!BGbJEmJRVJGlZFQbZe:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUoT2Qe/!BGbJEmJRVJGlZFQbZe:localhost:8800$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYT1Qe.!BGbJEmJRVJGlZFQbZe:localhost:8800$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKUT0Qe-!BGbJEmJRVJGlZFQbZe:localhost:8800$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0T/Qe,!BGbJEmJRVJGlZFQbZe:localhost:8800$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw a} { y w u sqomkigeca~+eeQ$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800~*eeQ$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~)eeQ$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~(eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800~'eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~&eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~%eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800~$eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~#eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~"eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~!eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~ eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800~eeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8!BGbJEmJRVJGlZFQbZe:localhost:8800~eeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800~ eeQ$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800  '5Iu1eQ_y$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 818}{"auth_events": ["$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0"], "prev_events": ["$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0"], "type": "m.room.member", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-178", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-178:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041009090, "hashes": {"sha256": "KlHg6VfJiolNDRQNi2260VPiawOC8GVUKXFvvaE87vA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xbTiJJsY6Lpp+scWlfvXRer9bXfatsFBChWzTyj0fWUb4cPSAEpQwOPeGo4VnMcqXrHxslhHEV+zLYYF85f+Bw"}}, "unsigned": {"age_ts": 1570041009090}}h0eQ__$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 817}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-178:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041008470, "hashes": {"sha256": "vphvrK1w5bjWN2K/GXq93EELM5mVkB/x4V71l4n/Vl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "REeEo0iprugp0buoQvVDQAgr7E/io4ZHoUteNYxcx5DgNx0jr2Jd+3cthSlWTtYNeW/+u6aV6X8MRdmNpo2XCw"}}, "unsigned": {"age_ts": 1570041008470}}n/eQ_k$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 198, "stream_ordering": 816}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY"], "prev_events": ["$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY"], "type": "m.room.member", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-176:localhost:8800", "content": {"reason": "testing", "membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-177:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041006476, "hashes": {"sha256": "bCUFxZJEDu+3iehK3z560+fPRyHxCF9TQKXjW0bnoSo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xy5o982qmwQZSxcn3oTI/waXVs1s2Q2GmC/kACnK6e9bpWD5xfdJRvRsSzZ24CnIRrJFuT2kT15OOZ/qZyV+AQ"}}, "unsigned": {"age_ts": 1570041006476, "replaces_state": "$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY"}}U.eQ_9$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800{"token_id": 199, "stream_ordering": 815}{"auth_events": ["$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c", "$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8", "$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw"], "prev_events": ["$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU"], "type": "m.room.member", "room_id": "!BGbJEmJRVJGlZFQbZe:localhost:8800", "sender": "@anon-20191002_181700-177:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-177", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-177:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041005591, "hashes": {"sha256": "DV8XQRNtSjdPT7dc/m86jIpVAG8p4NXAOUrUq+pDaHA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "35i9aYOJefsEpfuvmX8unDeM002XAmqw2HzSn6oA2D2tcUMkkxTrMz+dU5gLr2M7FNnQrxOpYKo9JzHP8m3gAQ"}}, "unsigned": {"age_ts": 1570041005591}}  5eQ_$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 822}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI"], "type": "m.room.history_visibility", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041012131, "hashes": {"sha256": "GxG9Hj5/WYtPaBH1oFByQW8vlCVXrqm9J1ZP19RAfZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VFV298C9WR5b3UpMGfRjQESMBWs+EPyEvMypjpsPVZcEtt0GMTzq9Fwty+CX60QMN5nzem0aDSVxkR2VML2nDw"}}, "unsigned": {"age_ts": 1570041012131}}s4eQ_u$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 821}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk"], "type": "m.room.join_rules", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041011589, "hashes": {"sha256": "cQatDEOtd8lZ2pxS7P5wEGtRNEmsad++YRgyFoAy5OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hjSyV2Ky978kyXqraAEn9Ek89srJ1DXo8fCU0iJ7HlYLG1MUt43JKsOSif+tfKWmoJMohG+Wl9iAbV/sIqckAg"}}, "unsigned": {"age_ts": 1570041011589}}3eQ_9$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 820}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho"], "type": "m.room.canonical_alias", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"alias": "#test-20191002_181700-31:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041010764, "hashes": {"sha256": "k8EyO0AFh6axvw0SvKvcH2rznBIsRURByBTZKm98rww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7gHyGSRoQ66HtFkRJl4hLK54kWEiuT12bPvrayd9LF58RKDqA34km/zmh9t2ixK3F1hZDpfA/KCUIKlrAIloAg"}}, "unsigned": {"age_ts": 1570041010764}}j2eQ_c$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 819}{"auth_events": ["$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "type": "m.room.power_levels", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"users": {"@anon-20191002_181700-178:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041009567, "hashes": {"sha256": "ZcklzeYvIcURwwC5rI6MogelqPFLDLds1oHmmWm64Y8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HqOUFRO5cvPHwe4jFq6xd+XO9nzYe0ivrUtKRt9+I8P9yLl7OCkCqhynkY+XKnFgJH8oYVEiHeB9RCIOOSeOAw"}}, "unsigned": {"age_ts": 1570041009567}} Bb k6c.Z% Q   J  v A o :  f 1_*V!O{Ft?b-Y$4]@anon-20191002_181700-282:localhost:8800m4]@anon-20191002_181700-227:localhost:8800mߞ4]@anon-20191002_181700-226:localhost:8800m4]@anon-20191002_181700-225:localhost:8800m_4]@anon-20191002_181700-224:localhost:8800m4]@anon-20191002_181700-223:localhost:8800m4]@anon-20191002_181700-222:localhost:8800mE4]@anon-20191002_181700-221:localhost:8800m4]@anon-20191002_181700-220:localhost:8800mvV4]@anon-20191002_181700-281:localhost:8800m4]@anon-20191002_181700-280:localhost:8800mƳ2[@anon-20191002_181700-27:localhost:8800mv4]@anon-20191002_181700-279:localhost:8800mƘ94]@anon-20191002_181700-278:localhost:8800mƔ4]@anon-20191002_181700-277:localhost:8800mƄ`4]@anon-20191002_181700-276:localhost:8800mj4]@anon-20191002_181700-274:localhost:8800m[t4]@anon-20191002_181700-273:localhost:8800m[s4]@anon-20191002_181700-272:localhost:8800mA}4]@anon-20191002_181700-271:localhost:8800m4]@anon-20191002_181700-270:localhost:8800m2[@anon-20191002_181700-26:localhost:8800mq4]@anon-20191002_181700-269:localhost:8800mq 4]@anon-20191002_181700-268:localhost:8800m 4]@anon-20191002_181700-267:localhost:8800m! 4]@anon-20191002_181700-266:localhost:8800m  4]@anon-20191002_181700-265:localhost:8800mſ; 4]@anon-20191002_181700-264:localhost:8800mų4]@anon-20191002_181700-263:localhost:8800mšT4]@anon-20191002_181700-262:localhost:8800mő'4]@anon-20191002_181700-261:localhost:8800mŁ4]@anon-20191002_181700-260:localhost:8800mq2[@anon-20191002_181700-25:localhost:8800mm4]@anon-20191002_181700-259:localhost:8800ma4]@anon-20191002_181700-258:localhost:8800mE4]@anon-20191002_181700-257:localhost:8800m/4]@anon-20191002_181700-254:localhost:8800m4]@anon-20191002_181700-253:localhost:8800m<4]@anon-20191002_181700-252:localhost:8800m04]@anon-20191002_181700-251:localhost:8800m{4]@anon-20191002_181700-250:localhost:8800m{$2[@anon-20191002_181700-24:localhost:8800mi4]@anon-20191002_181700-249:localhost:8800m(84]@anon-20191002_181700-248:localhost:8800m'\4]@anon-20191002_181700-247:localhost:8800mi*4]@anon-20191002_181700-246:localhost:8800mk4]@anon-20191002_181700-245:localhost:8800m 4]@anon-20191002_181700-244:localhost:8800m x4]@anon-20191002_181700-243:localhost:8800m4]@anon-20191002_181700-242:localhost:8800m?4]@anon-20191002_181700-241:localhost:8800mϕ4]@anon-20191002_181700-240:localhost:8800mϒ2[@anon-20191002_181700-23:localhost:8800mS4]@anon-20191002_181700-239:localhost:8800m¬G4]@anon-20191002_181700-238:localhost:8800m«4]@anon-20191002_181700-237:localhost:8800mŒ{4]@anon-20191002_181700-236:localhost:8800mpa4]@anon-20191002_181700-235:localhost:8800mXl4]@anon-20191002_181700-234:localhost:8800mXj4]@anon-20191002_181700-233:localhost:8800m?4]@anon-20191002_181700-232:localhost:8800m?4]@anon-20191002_181700-231:localhost:8800m4]@anon-20191002_181700-230:localhost:8800m"2[@anon-20191002_181700-22:localhost:8800md4]@anon-20191002_181700-229:localhost:8800m4]@anon-20191002_181700-228:localhost:8800m ~z v r n j fb^ZVRNJFseeQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800reeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800qeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800peeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800oeeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800neeQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800meeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800leeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800keeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800jeeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800ieeQ$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800heeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800geeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800feeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800eeeQ$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800deeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800ceeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800beeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800aeeQ$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800`eeQ$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800_eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800^eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800]eeQ$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800\eeQ$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800[eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800ZeeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800YeeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800XeeQ$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI!bnTuVBaAJTPbcYZtRl:localhost:8800WeeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800VeeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800 H^,~L> v De   p } K   Q   X & j& _ -X4l:r@xF^8,1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 T1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI Z1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs.1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak 1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0i1e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI _1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA ]1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 &81e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 n1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU 1e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs 1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg 1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g&1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 71e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY91e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgm1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490J1e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w71e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYj1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk21e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt01e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 n1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68g1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8V1e$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY1e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokG0e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwV1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ_1e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w1e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo1e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30so1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU 1e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAS1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4A1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8Y1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 |1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 21e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg 1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 2 # ]#h9eQ__$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 826}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-181:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041016751, "hashes": {"sha256": "YRJY++icC8OnXXeNDxX2b5/sECYaNGkRtg5i6MhEK/A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gp2yENZcvgyLrAqrkTCw3bd0C58b31+0AstzaQmgBoQrSqMH9nIC6L1Y+L2Yd/EPAG0U10SBN2SVAdVSYLMJAw"}}, "unsigned": {"age_ts": 1570041016751}}U8eQ_9$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 201, "stream_ordering": 825}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI"], "prev_events": ["$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q"], "type": "m.room.member", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-179:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-179", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-179:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041014189, "hashes": {"sha256": "9O8/wDUaWpFe6z7Ix5+V8yZ+CSr1Ml4YwCk5XIzNcE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nv3JiFbDJX6ufTLg1GRx/Q0o11apEcaGMimkXt2TDrjMjf72QTOxJI2ZgG8C/bjNsPG8S5V2rlD9hIYA0qFfAg"}}, "unsigned": {"age_ts": 1570041014189}}q7eQ/$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 824}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-180", "membership": "join"}, "depth": 8, "hashes": {"sha256": "HpN18De0xWs7EqDZbMXTsd3qNa5s4MaXTSzXxlIFPl0"}, "origin": "localhost:8829", "origin_server_ts": 1570041013778, "prev_events": ["$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q"], "prev_state": [], "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-180:localhost:8829", "state_key": "@anon-20191002_181700-180:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7DVdkI7NweoIO/sXBLT0MzgOc4tS1gJThS7fLB7oC2zq67Qd0LXULHl6qdljKIFgKzsEWO63UXLYKfC53urXAg"}, "localhost:8829": {"ed25519:a_UxIG": "6XqzDjVabDQZcmPpfwfPfKEFUxCnn4grCAEE3LWpC6SwfTYSL+Fky2n6hfwkqHyEO4BSqW2zf37uNLkz4+nfDg"}}, "unsigned": {"age": 137}}6eQ_M$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800{"token_id": 200, "stream_ordering": 823}{"auth_events": ["$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho", "$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0", "$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4"], "prev_events": ["$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc"], "type": "m.room.aliases", "room_id": "!bnTuVBaAJTPbcYZtRl:localhost:8800", "sender": "@anon-20191002_181700-178:localhost:8800", "content": {"aliases": ["#test-20191002_181700-31:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041013047, "hashes": {"sha256": "3sScjK/cOJRZLCDrxAJwUctHnEFuhCKW+n0UqrSAMg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "roYICBAfMyH6dDmuopGyhgn6G88mfn+IIxSM5GPHq1WYRXApK56clxwLE9xVu4B+zbY0KCPHE6lD3uHNZQ9HDQ"}}, "unsigned": {"age_ts": 1570041013047}} YlT<uN& _ 7  q I " [ 3 k C  { S , d<uN'b;sL$_7oGX0h@'Q!CAGaRyRvrohDRBsrWH:localhost:8800g'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800>'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800h'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800Z'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800#'Q!HusOrLtWZTLbmQZxmm:localhost:8800 ''Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800='Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800\'Q!HOPyhZPcKkrvSmDIvX:localhost:8800=&Q!HIZTeBCxvpMSpcqGVD:localhost:8800Y&Q!HAFNBarGuVZuWCgwWM:localhost:8800&&Q!GwXGurbyEmykmmHcHJ:localhost:8800H'Q!GwLdUoDplyVUogXDzu:localhost:8800'Q!GsjDgpaxdwYfnefiWO:localhost:8800_&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800S&Q!GgUNbVXspVTpOlaHBl:localhost:8800:'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800'Q!FPcQcheNebvdFvmOnr:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800 &Q!EyEaTZElOkdURKbEXo:localhost:8800('Q!EieRtaCFZJJCIOkRPp:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800<'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800'Q!DqxFmsXPclgGqpSwdy:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800\'Q!DnUHoxreGexNmjSVpq:localhost:8800V'Q!DnUHoxreGexNmjSVpq:localhost:8800U'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DSFBpkqfnvBQbGoMUK:localhost:8800A'Q!CkNvQnbApPIcuKygDk:localhost:8800S&Q!CgVBWWcRJoHEcwoLcq:localhost:8800>'Q!CSqENqzAezaZnGktbE:localhost:8800&Q!CQKLQUpSYakhxVDltC:localhost:8800J'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800''Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800Q'Q!BfEFIDBthhkweqfhir:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800t'Q!BKZJsoFNhiLTDYNclB:localhost:8800j'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800&Q!AjjrNwXmPTCruHxaJq:localhost:8800R'Q!AYFqrmxwClFQlcTTYq:localhost:8800&Q!AWfbViAZparIjmDaVT:localhost:8800!'Q!AOEdqVKPFddrqbKPOL:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:8800]1!9:localhost:42455D1!6:localhost:42455 1!5:localhost:424553!13:localhost:42455I3!12:localhost:42455H3!11:localhost:42455F3!10:localhost:42455E1!0:localhost:42455 T=~V.ge`8?qI" Z 2 l D  X 0 h @  x P ) a9rJ#[3 mE{S=+'V(&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800} b'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800-'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800Z'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:88009'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800&Q!JusxqeECtidaPlWqhp:localhost:8800U'Q!TeraguiGoZoeOGFzlI:localhost:8800G'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800d&Q!TWETXUgfFZafDdbqLS:localhost:8800''Q!TSFcaXDBqrCREHRHxv:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800[&Q!SyIWYOmcGiASNkPCTB:localhost:8800<'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800S'Q!SrMQpDMFREKRMELwbL:localhost:8800Z'Q!SpXEytywhTbAftyVBr:localhost:8800a'Q!SnROoiDBapNNtMmKnT:localhost:8800C'Q!SfYtaUhCFosNfHfUVm:localhost:88006'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800.'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800)'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800w&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800{'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800='Q!PgNDjhhIBAXKryuGKy:localhost:8800<'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800T'Q!PUIxAaiCnbqaVbawGu:localhost:8800V'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:8800J ('Q!OtBUhGeUSiDMWRKIOT:localhost:8800&Q!OqPpVlCwmKdAUlwrXI:localhost:8800W&Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800 (&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 ''Q!OJilSqnQvLgoXSqRaW:localhost:8800U'Q!OCEHAjcOXWNyWIESIS:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800L'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800X'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800u'Q!NboFFVLpJHTeuUKCjM:localhost:8800R'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:8829I&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:88005'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800^'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:88007'Q!LazKtcHZriKzCvvGwV:localhost:8800 LM%}U-tL$ \ 5  o G 5]e=`8 pH!Y1  jCud<  W 0 }U h @  x P ( 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800I'Q!NcJYmIbgjsaKJOzBcs:localhost:8800G'Q!LazKtcHZriKzCvvGwV:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800O'Q!LvARVIpJZeRQxbKefX:localhost:8800q'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800''Q!NgkQVVUNzoyCVPtckM:localhost:8800&'Q!JiUawCFQnodcpssOfK:localhost:8800)'Q!JiUawCFQnodcpssOfK:localhost:8800('Q!OJilSqnQvLgoXSqRaW:localhost:8800!'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:88009'Q!KIHYKMzkRDrJwiywwz:localhost:88008'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800&Q!OMkiVTuuOEeiFAXtUY:localhost:8800I'Q!OCEHAjcOXWNyWIESIS:localhost:8800&Q!OBWkjfrDCNgYFfblia:localhost:8800~&Q!OBWkjfrDCNgYFfblia:localhost:8800}'Q!NrxQuziwSWzsHuXIlG:localhost:8800^&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800o'Q!NNiyzThHMivrxhojfp:localhost:8800U'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800HG'Q!NJdkYMskQwIpIWlWkn:localhost:8800l'Q!LFBhoxJpmBqFrwEzGP:localhost:8800^'Q!LFBhoxJpmBqFrwEzGP:localhost:8800]'Q!LFBhoxJpmBqFrwEzGP:localhost:8800\'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800R&Q!KxhGcTbEWmtgGNpdox:localhost:8800Q'Q!KmuRTfGFgJdgIDAgIW:localhost:8800S'Q!KetCYFxrTxawNOGnOf:localhost:8800+'Q!KetCYFxrTxawNOGnOf:localhost:8800*'Q!KeqmSjifajNKxtgqhj:localhost:8800c'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800,'Q!KdOYYnOuwAyQzqwUki:localhost:8800+'Q!KdOYYnOuwAyQzqwUki:localhost:8800*'Q!KdOYYnOuwAyQzqwUki:localhost:8800)'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800.&Q!OMkiVTuuOEeiFAXtUY:localhost:8800L&Q!OMkiVTuuOEeiFAXtUY:localhost:8800K&Q!OMkiVTuuOEeiFAXtUY:localhost:8800J  =eQ_$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 830}{"auth_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg", "$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw"], "type": "m.room.history_visibility", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041022274, "hashes": {"sha256": "TcDUkLO5ezS6qwKVuY8zlzz7OmyjWsEQ2kwNAKDgHqQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j0vDU35U5xyfzIQoocvqfceGrBeSGjWryUb/889AfCMbfSr9i+ylXTMMs4evLyTykQOCxTGitiqhLAyRRCu1CQ"}}, "unsigned": {"age_ts": 1570041022274}}s<eQ_u$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 829}{"auth_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg", "$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg"], "type": "m.room.join_rules", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041020379, "hashes": {"sha256": "3T0Dqfbl7QIHmOgLnHsTG+6Lm25yEIXKiBDFD/4T92U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QA2T3olyAgPEYANXalmmM3KimfPU0+EJnw6GukLYMF4/3e+RbwiHp8ycr1IUt9rUcNTXBJxyLYJcqSoN7tJKAA"}}, "unsigned": {"age_ts": 1570041020379}}j;eQ_c$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 828}{"auth_events": ["$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "type": "m.room.power_levels", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"users": {"@anon-20191002_181700-181:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041019015, "hashes": {"sha256": "dsCm1OW5yusOkW6jimwxnrde+bkOrMVVAHeXvGvIGIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u/XP2owo6R9Ig5GPN/GkFM4cDtLME6zNpDHPikX1nwkcABWcx8SW4OBqWhz9/S13frP+6g0fAUQLVbHNNynbCA"}}, "unsigned": {"age_ts": 1570041019015}}u:eQ_y$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "stream_ordering": 827}{"auth_events": ["$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8"], "prev_events": ["$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8"], "type": "m.room.member", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-181", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-181:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041017749, "hashes": {"sha256": "0+cwZgWFgIemPCt+5qKbwEJfoJ2mZSRwnqvWYDLHjz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "laIiFrpV37YKb0GJhsvIw1dyQAJuDLl3yhK5gkyhsvjU3YnzOfZCArz9rBG/0BoCVtC8Iwj/XsKO50FdPPWICA"}}, "unsigned": {"age_ts": 1570041017749}} ;p)bT r+Z? { 4  m % M  u - U E)}a~6^E"]=@anon-20191002_181700-222:localhost:8800anon-20191002_181700-222E!]=@anon-20191002_181700-220:localhost:8800anon-20191002_181700-220E ]=@anon-20191002_181700-218:localhost:8800anon-20191002_181700-218E]=@anon-20191002_181700-217:localhost:8800anon-20191002_181700-217E]=@anon-20191002_181700-216:localhost:8800anon-20191002_181700-216E]=@anon-20191002_181700-215:localhost:8800anon-20191002_181700-215E]=@anon-20191002_181700-214:localhost:8800anon-20191002_181700-214E]=@anon-20191002_181700-213:localhost:8800anon-20191002_181700-213Er]=@anon-20191002_181700-179:localhost:8800anon-20191002_181700-179Eq]=@anon-20191002_181700-180:localhost:8829anon-20191002_181700-180Ep]=@anon-20191002_181700-178:localhost:8800anon-20191002_181700-178Eo]=@anon-20191002_181700-176:localhost:8800anon-20191002_181700-1767n]!@anon-20191002_181700-175:localhost:8800OverriddenEm]=@anon-20191002_181700-174:localhost:8800anon-20191002_181700-1747l]!@anon-20191002_181700-173:localhost:8800OverriddenEk]=@anon-20191002_181700-170:localhost:8800anon-20191002_181700-170Ej]=@anon-20191002_181700-169:localhost:8800anon-20191002_181700-169Ei]=@anon-20191002_181700-168:localhost:8800anon-20191002_181700-168h/@8:localhost:88008E]=@anon-20191002_181700-212:localhost:8800anon-20191002_181700-212E]=@anon-20191002_181700-211:localhost:8800anon-20191002_181700-211E]=@anon-20191002_181700-209:localhost:8800anon-20191002_181700-2091@34:localhost:880034E]=@anon-20191002_181700-208:localhost:8800anon-20191002_181700-2081@33:localhost:880033E]=@anon-20191002_181700-207:localhost:8800anon-20191002_181700-2071@32:localhost:880032E]=@anon-20191002_181700-206:localhost:8800anon-20191002_181700-2061@31:localhost:880031E]=@anon-20191002_181700-205:localhost:8800anon-20191002_181700-2051@30:localhost:880030E]=@anon-20191002_181700-204:localhost:8800anon-20191002_181700-204E ]=@anon-20191002_181700-203:localhost:8800anon-20191002_181700-203E ]=@anon-20191002_181700-202:localhost:8800anon-20191002_181700-202E ]=@anon-20191002_181700-201:localhost:8800anon-20191002_181700-201E ]=@anon-20191002_181700-200:localhost:8800anon-20191002_181700-200E ]=@anon-20191002_181700-199:localhost:8800anon-20191002_181700-199E]=@anon-20191002_181700-198:localhost:8800anon-20191002_181700-198E]=@anon-20191002_181700-197:localhost:8800anon-20191002_181700-197E]=@anon-20191002_181700-195:localhost:8800anon-20191002_181700-195E]=@anon-20191002_181700-194:localhost:8800anon-20191002_181700-194E]=@anon-20191002_181700-193:localhost:8800anon-20191002_181700-193E]=@anon-20191002_181700-192:localhost:8800anon-20191002_181700-192E]=@anon-20191002_181700-191:localhost:8800anon-20191002_181700-1911@17:localhost:880017E]=@anon-20191002_181700-190:localhost:8800anon-20191002_181700-1901@16:localhost:880016E~]=@anon-20191002_181700-189:localhost:8800anon-20191002_181700-189}1@15:localhost:880015E|]=@anon-20191002_181700-188:localhost:8800anon-20191002_181700-188{1@14:localhost:880014Ez]=@anon-20191002_181700-187:localhost:8800anon-20191002_181700-187y1@13:localhost:880013Ex]=@anon-20191002_181700-186:localhost:8800anon-20191002_181700-186Ow]=!@anon-20191002_181700-185:localhost:8800anon-20191002_181700-185LemurLover7v]!@anon-20191002_181700-184:localhost:8800LemurLoverEu]=@anon-20191002_181700-183:localhost:8800anon-20191002_181700-183Et]=@anon-20191002_181700-182:localhost:8800anon-20191002_181700-182Es]=@anon-20191002_181700-181:localhost:8800anon-20191002_181700-181 ]J p> vD|J9k W% X v D  & ^ ,p>+d2jQ | J  S1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs 1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs 21e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo41e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM Z1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM Y1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM X0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU-1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU.1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQq1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQp1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6EF1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6EE1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6ED1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg f1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg e1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg d1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI61e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI51e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI41e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8 1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8  d1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMv 1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg 0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0s0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0r0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0q1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 {1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 z1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 y1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE 1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE 1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE 1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg21e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs 1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQr0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMu1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg a} { y w u sqomkigeca~JeeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800~IeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800~HeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~GeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800~FeeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800~EeeQ$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~DeeQ$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~CeeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800~BeeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~AeeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800~@eeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800~?eeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~>eeQ$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800~=eeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800~<eeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~;eeQ$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800~:eeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800~9eeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~8eeQ$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800~7eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800~6eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~5eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800~4eeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800~3eeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~2eeQ$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800~1eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800~0eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~/eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800~.eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800~-eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800~,eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800 "+ S y |  7 :\9<^;>`Sv Q'1e^!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMj Q3 e\!hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_access$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg Q? ee[!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibility$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kp Q? eZ!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibility$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kh Q/ eY!hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rules$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksjQ3 eX!hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM Q']eW!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0dQ' eV!hgjYwwwjWJNgwrzOto:localhost:8800m.room.create$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_708Q']eeU!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQpQ? eT!dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibility$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQhQ/ eS!dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rules$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYjQ3 eR!dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM Q']eQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQdQ' eP!dnZVySJLGNtUKsSgXW:localhost:8800m.room.create$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM8Q']eeO!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwp~Q? eN!oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibility$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMh}Q/ eM!oznZaCpONuNDaLarkI:localhost:8800m.room.join_rules$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgj|Q3 eL!oznZaCpONuNDaLarkI:localhost:8800m.room.power_levels$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA {Q']eK!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwdzQ' eJ!oznZaCpONuNDaLarkI:localhost:8800m.room.create$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80pyQ? eI!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibility$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMhxQ/ eH!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rules$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkjwQ3 eG!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok vQ']eF!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AduQ' eE!eLsrBEnrHolwCNgkFW:localhost:8800m.room.create$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAptQ? eD!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibility$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doohsQ/ eC!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rules$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QjrQ3 eB!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc qQ']eA!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwdpQ' e@!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.create$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xkpoQ? e>!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_MhnQ/ e=!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rules$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw  z jAeQ_c$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 834}{"auth_events": ["$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk", "$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "prev_events": ["$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "type": "m.room.power_levels", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"users": {"@anon-20191002_181700-182:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041030216, "hashes": {"sha256": "xPJIFTTt9dqswI9HikCrqiRAp/nt4q77BLtMovLt8FA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iwx6sTMFCGhQSgxZotIt/je81PSR9JH/EnpTi/lHo/AbLXSO4QXdEY6KXfBG4yVk6freYgrp5HoGvYfEpfTMBA"}}, "unsigned": {"age_ts": 1570041030216}}u@eQ_y$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 833}{"auth_events": ["$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk"], "prev_events": ["$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk"], "type": "m.room.member", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-182", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-182:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041029587, "hashes": {"sha256": "79f/KRTZSJny0LkE2n+J8tdtYPQutMEoEgw28jzyERA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LLwTVn06LmsqFQqplnFxgzEqnbSAKKxrxUoBXp+Yw5f/R/KBSPZV1u2R54m7DKNZaNdTxvau1NFIobehcgk2Dg"}}, "unsigned": {"age_ts": 1570041029587}}h?eQ__$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 832}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-182:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041028861, "hashes": {"sha256": "Scx90BBYmP5HTXLEvTV8nXZqZZPbjuLGIFG8JCKwwoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x43x0JpV0KeAhkIJCVwdBDxxpKBZr8N6XKCMcexd6xpVH0YVCxA5OzSQPt2HjBVZ9BGF9VcmezX2mvusmAPlDg"}}, "unsigned": {"age_ts": 1570041028861}}>eQs$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg!wAyboOFgsOPwkmgMAI:localhost:8800{"token_id": 202, "txn_id": "64", "stream_ordering": 831}{"auth_events": ["$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg", "$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8", "$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ"], "prev_events": ["$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M"], "type": "m.room.message", "room_id": "!wAyboOFgsOPwkmgMAI:localhost:8800", "sender": "@anon-20191002_181700-181:localhost:8800", "content": {"body": "a message", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041026649, "hashes": {"sha256": "a/tdEdVHN6aN+fInd+vX//p8m0vuqoWyQmiROOTwZu0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jZWVRTSCg8Iu4NaWJ5U8y6UzCvE2haUGHULdK0VMSVI6wwmELO0sitaxcht3rkRwcYljnNmgUIl3yXbZRR1oAw"}}, "unsigned": {"age_ts": 1570041026649}} h m 7  jm60cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigo{0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_Ao}0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQo~1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8Qoӂ0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3wof1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwo҂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0woт1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFktYixvQUtYZWF0VUBuWk0KMDAyZnNpZ25hdHVyZSDs1SpADqu4MI3Kkq0UCmbydwdHoJTXpqEYg9OJG7YBnAoЂ0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQo|0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5KQSNiV2R3PVFoWCNwRDQKMDAyZnNpZ25hdHVyZSCiLKpgk7aT6ZRbb8tt_POFZzV7dO__lqZmc2TrUqpo6woy0cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEU2RHpoLVI4cnJSWFNPT3oKMDAyZnNpZ25hdHVyZSCANCtYnN5AyAhBu5Vj-kkdF3DfWcvAmn8qI0qr-BQc-goz Sk>]0}P#pCzM l? _ 2   R % qc6 U( E  d 7 W *uH,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800 ,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800+Q !LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800+Q !KetCYFxrTxawNOGnOf:localhost:8800,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 h h,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 g g,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 f f,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e e,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d d+Q !KcXNWNfbLcYsBKZHIp:localhost:8800 c c,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800+Q !KXMUzALpMMMKqoQXUS:localhost:8800,Q!KIHYKMzkRDrJwiywwz:localhost:8800 : :,Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 9,Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 8,Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 7,Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 6,Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 5,Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 4,Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 3,Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 2,Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 1,Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 0,Q!KxhGcTbEWmtgGNpdox:localhost:8800ll,Q!KxhGcTbEWmtgGNpdox:localhost:8800kk,Q!KxhGcTbEWmtgGNpdox:localhost:8800jj,Q!KxhGcTbEWmtgGNpdox:localhost:8800ii,Q!KxhGcTbEWmtgGNpdox:localhost:8800hh,Q!KxhGcTbEWmtgGNpdox:localhost:8800gg,Q!KxhGcTbEWmtgGNpdox:localhost:8800ff+Q !KxhGcTbEWmtgGNpdox:localhost:8800ee,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800+Q !KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800##,Q!KeqmSjifajNKxtgqhj:localhost:8800"",Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800+Q !KeqmSjifajNKxtgqhj:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800+Q !KeBlWUQiLYUoILKkTB:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  +Q !KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KXMUzALpMMMKqoQXUS:localhost:8800  Sk>]0}P#pCzM l? _ 2   R % qc6 U( E  d 7 W *uH,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800 ,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800+Q !LFBhoxJpmBqFrwEzGP:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800 ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800  ,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800,Q!KetCYFxrTxawNOGnOf:localhost:8800+Q !KetCYFxrTxawNOGnOf:localhost:8800,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 h h,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 g g,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 f f,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 e e,Q!KcXNWNfbLcYsBKZHIp:localhost:8800 d d+Q !KcXNWNfbLcYsBKZHIp:localhost:8800 c c,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800,Q!KXMUzALpMMMKqoQXUS:localhost:8800+Q !KXMUzALpMMMKqoQXUS:localhost:8800,Q!KIHYKMzkRDrJwiywwz:localhost:8800 : :,Q!KIHYKMzkRDrJwiywwz:localhost:8800 9 9,Q!KIHYKMzkRDrJwiywwz:localhost:8800 8 8,Q!KIHYKMzkRDrJwiywwz:localhost:8800 7 7,Q!KIHYKMzkRDrJwiywwz:localhost:8800 6 6,Q!KIHYKMzkRDrJwiywwz:localhost:8800 5 5,Q!KIHYKMzkRDrJwiywwz:localhost:8800 4 4,Q!KIHYKMzkRDrJwiywwz:localhost:8800 3 3,Q!KIHYKMzkRDrJwiywwz:localhost:8800 2 2,Q!KIHYKMzkRDrJwiywwz:localhost:8800 1 1,Q!KIHYKMzkRDrJwiywwz:localhost:8800 0 0,Q!KxhGcTbEWmtgGNpdox:localhost:8800ll,Q!KxhGcTbEWmtgGNpdox:localhost:8800kk,Q!KxhGcTbEWmtgGNpdox:localhost:8800jj,Q!KxhGcTbEWmtgGNpdox:localhost:8800ii,Q!KxhGcTbEWmtgGNpdox:localhost:8800hh,Q!KxhGcTbEWmtgGNpdox:localhost:8800gg,Q!KxhGcTbEWmtgGNpdox:localhost:8800ff+Q !KxhGcTbEWmtgGNpdox:localhost:8800ee,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KmuRTfGFgJdgIDAgIW:localhost:8800+Q !KmuRTfGFgJdgIDAgIW:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800##,Q!KeqmSjifajNKxtgqhj:localhost:8800"",Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800,Q!KeqmSjifajNKxtgqhj:localhost:8800+Q !KeqmSjifajNKxtgqhj:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800  ,Q!KeBlWUQiLYUoILKkTB:localhost:8800,Q!KeBlWUQiLYUoILKkTB:localhost:8800+Q !KeBlWUQiLYUoILKkTB:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800 ,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KdOYYnOuwAyQzqwUki:localhost:8800  +Q !KdOYYnOuwAyQzqwUki:localhost:8800  ,Q!KXMUzALpMMMKqoQXUS:localhost:8800  fnU<$ tL% ` 8q  r KI #! ] 5 m E  ~ V / jB{S,g@yQ*e>vN'_8''Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!KXMUzALpMMMKqoQXUS:localhost:8800v'Q!KIHYKMzkRDrJwiywwz:localhost:8800$&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!JnAKXOrlyisFUpgJPw:localhost:8800_'Q!JiUawCFQnodcpssOfK:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800&Q!JGhlAUflyNxErGGZZu:localhost:8800t'Q!IlGJpjzrvvAFuwTAgo:localhost:88004'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800P&Q!ILbUVZOfPPwaZRrKJd:localhost:8800d&Q!IGVHKYcSuxzVPlFHlj:localhost:8800"'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800+'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800<'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800O&Q!HAFNBarGuVZuWCgwWM:localhost:8800%&Q!GwXGurbyEmykmmHcHJ:localhost:8800?'Q!GwLdUoDplyVUogXDzu:localhost:8800]'Q!GsjDgpaxdwYfnefiWO:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800I&Q!GgUNbVXspVTpOlaHBl:localhost:88009'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800P'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800l&Q!FPcQcheNebvdFvmOnr:localhost:8800l&Q!FIOuvzpMhoERunVYYA:localhost:8800z'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800&Q!EyEaTZElOkdURKbEXo:localhost:8800'&Q!EieRtaCFZJJCIOkRPp:localhost:8800j'Q!EhUxBjnSkVXpTrQlrn:localhost:8800/'Q!EhFUhsgQbBWmrnGmaz:localhost:88008'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800&Q!EABRjdYuYumMhLSwIa:localhost:8800{'Q!DuqHkpTfWCUblSrxQj:localhost:8800q'Q!DqxFmsXPclgGqpSwdy:localhost:8800"'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800)'Q!DSFBpkqfnvBQbGoMUK:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800='Q!CSqENqzAezaZnGktbE:localhost:88003&Q!CQKLQUpSYakhxVDltC:localhost:8800@'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800G'Q!BfEFIDBthhkweqfhir:localhost:8800&Q!BckZfhQgrcyiMhEAAJ:localhost:8800w'Q!BKZJsoFNhiLTDYNclB:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800a&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:88005&Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AYFqrmxwClFQlcTTYq:localhost:8800h&Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800|'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:424551!8:localhost:424551!7:localhost:42455~1!6:localhost:42455y1!5:localhost:42455o3!13:localhost:424553!12:localhost:424553!11:localhost:424553!10:localhost:424551!0:localhost:444051!0:localhost:42455f1!0:localhost:419851!0:localhost:37265  ` YDlap9sKH# ^ 6  p I " Z 2 j B  { S + d<uM&a9rJ"1]6 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!MWCLSWWGdWcSivNVLI:localhost:8800q'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!NJdkYMskQwIpIWlWkn:localhost:8800&'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800X&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VUibrTIkcRbfrogbQV:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800&Q!VCSCNemqikJZiRtxrs:localhost:8829]&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800s'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800b'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800x&Q!TWETXUgfFZafDdbqLS:localhost:8800&'Q!TSFcaXDBqrCREHRHxv:localhost:8800}&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800&Q!StEnDjTJToXKXsOHNf:localhost:8829\'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800M&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800#'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:88001'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800k'Q!QnmLrBAxeItdHsaxWf:localhost:8800F'Q!QkkdnzvdrjHaFGkzMt:localhost:8800r'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800u'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88009'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800C&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800Z'Q!OWGKxAmTrHLciIdrJi:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 &Q!OMkiVTuuOEeiFAXtUY:localhost:8800*'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!OCEHAjcOXWNyWIESIS:localhost:8800e&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800&Q!NfaPEGKjnUDUTavzol:localhost:8800u'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800p'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800i'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!MXhwoqNXvexeDDSOZT:localhost:8800a XoDmg<Bk@T)i> N # y w L ! u J   { P e'R}: % c8 s H qF*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 ;*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 :*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XcaKxZsPvbZhAGKKdx:localhost:8800*Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800  C*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  @*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 <*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  [*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  Z*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  Y*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  X*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  W*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  V*Q!WpThtNEVhrUbUdCdMJ:localhost:8800  U*Q!XIqmzIFbkHGQPIpywk:localhost:8800XZ*Q!XIqmzIFbkHGQPIpywk:localhost:8800WY*Q!XIqmzIFbkHGQPIpywk:localhost:8800VX*Q!XIqmzIFbkHGQPIpywk:localhost:8800UW*Q!XIqmzIFbkHGQPIpywk:localhost:8800TV*Q!XIqmzIFbkHGQPIpywk:localhost:8800SU*Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WuiaqqIOvBjgETqdus:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  E*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  HV*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XgobMgBjNcDRJnRXLD:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800*Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XNfwczePlyYFWLCaui:localhost:8800 *Q!XMNRkfscQXRjgYrOSd:localhost:8800 #*Q!XMNRkfscQXRjgYrOSd:localhost:8800"*Q!XMNRkfscQXRjgYrOSd:localhost:8800!*Q!XIqmzIFbkHGQPIpywk:localhost:8800Y[*Q!XIqmzIFbkHGQPIpywk:localhost:8800Z\*Q!XIqmzIFbkHGQPIpywk:localhost:8800\^*Q!XIqmzIFbkHGQPIpywk:localhost:8800[]*Q!XMNRkfscQXRjgYrOSd:localhost:8800 *Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XMNRkfscQXRjgYrOSd:localhost:8800*Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XUbDuPDiMTXJZDyAPc:localhost:8800 *Q!XRAZJeoZBhGeHKKjaG:localhost:8800  ?*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 >*Q!XRAZJeoZBhGeHKKjaG:localhost:8800 =*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  B*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  A*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  D*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  F*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  G*Q!XRAZJeoZBhGeHKKjaG:localhost:8800  9*Q!XGAmnfaVvjDtQJuufa:localhost:8800 +*Q!XGAmnfaVvjDtQJuufa:localhost:8800 **Q!XGAmnfaVvjDtQJuufa:localhost:8800 )*Q!XGAmnfaVvjDtQJuufa:localhost:8800 (*Q!XGAmnfaVvjDtQJuufa:localhost:8800 '*Q!XUbDuPDiMTXJZDyAPc:localhost:8800 !*Q!XUbDuPDiMTXJZDyAPc:localhost:8800  uEeQ_y$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 838}{"auth_events": ["$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA"], "prev_events": ["$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA"], "type": "m.room.member", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-183", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-183:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041034400, "hashes": {"sha256": "S8SUI+JiMx9fPD01mU2ZQp1Qi9iy1NrmvoK/rZ/63BU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xmmJFl/7z853VNarRwAkzCPlcZt0BFj6hS4SRWh0k3I/8Ywt+euBTAGtoNkeIOpjqZysZNHOsdsAhFeNcDPGBA"}}, "unsigned": {"age_ts": 1570041034400}}hDeQ__$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 837}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-183:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041033627, "hashes": {"sha256": "QdP3Nbp2ylZ1A1H3/6tyw+W6gaPwPCynCA49E1fLmDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JzgYD5hszVOwEGvf48ETyOVqmiyA0Kpd6Ec7LGjcu46yzzW1Y3O+AkVWWJjnKzkP8/C9wUpt0ZYGb9aWHhNCBg"}}, "unsigned": {"age_ts": 1570041033627}}CeQ_$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 836}{"auth_events": ["$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc", "$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk", "$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "prev_events": ["$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q"], "type": "m.room.history_visibility", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041031835, "hashes": {"sha256": "uEQQVr5KBKZDY9rsksFtLirgrRQZkXEtqd382Shx8gw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GQ3F5WLxbOhHeHsZu+fk4vmNqLogzmf8Zvm5007f0I2Yq8hurcwy4wkp4M6ll1DCI59KZS4I2TvXqeZTio/QBw"}}, "unsigned": {"age_ts": 1570041031835}}sBeQ_u$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800{"token_id": 203, "stream_ordering": 835}{"auth_events": ["$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc", "$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk", "$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw"], "prev_events": ["$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc"], "type": "m.room.join_rules", "room_id": "!ILbUVZOfPPwaZRrKJd:localhost:8800", "sender": "@anon-20191002_181700-182:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041030983, "hashes": {"sha256": "UbEBEPEQXGZoIZeEpMiq+dVnXxkO+6TJMpQbCG3pWnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q5G1oz6lAQADrKXD3phSp+NvII6Yge5QYXsaftClYsH5AAXSb7onyYrpTfPDpt6KCpnCEd1UM5oxWiXqA+hLDw"}}, "unsigned": {"age_ts": 1570041030983}} J? \ * P   j 8p> D    $b0 Vi7o v= uC|JQ  v D  P | J \ * X1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8A0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4S1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ/1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw#1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkr1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA90e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8N1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI 1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicV1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicR1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgb1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb01e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0v1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGII1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk^1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw91e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds ;1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY{1e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA U1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ,1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip431e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A `1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU B1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoV1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsB1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA s1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 .1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds ,1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYw1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI 1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko z1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko t1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 8 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1 e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk_1 e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0^1 e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw]1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ\1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk[1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgZ1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwZ1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gY1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0Y1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32LwX1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIW1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0IV1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcU1~e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0T1}e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUS1|e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmoR1{e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIR1ze$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcQ1ye$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIQ1xe$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsP1we$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEO1ve$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoN1ue$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcM1te$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNoL1se$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIK1re$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsJ1qe$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70I1pe$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QI1oe$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMH1ne$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoH1me$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAG1le$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekF1ke$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAE1je$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccD1ie$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEC1he$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUB1ge$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukA1fe$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk@1ee$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI@1de$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI?1ce$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To?1be$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w=1ae$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0<1`e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI;1_e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0:1^e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g91]e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc81\e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ71[e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM71Ze$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA61Ye$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg61Xe$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ51We$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k41Ve$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks31Ue$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM21Te$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr011Se$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_7001Re$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8/1Qe$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ.1Pe$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY-1Oe$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM,1Ne$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ+1Me$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM*1Le$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY)1Ke$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM(1Je$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg'1Ie$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA&1He$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw%1Ge$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80$1Fe$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM#1Ee$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk"1De$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!1Ce$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A 1Be$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA1Ae$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo ?QRo6q8 7 T  p 7 S  q 8 n 5 T pTp7SQU8e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAsha256 8e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4sha2568e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKAsha2568e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacsha2568e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavksha256 8e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gsha256 B8e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcsha256 >8e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590sha256 8e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAsha256 U8e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wsha2568e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0sha2568e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0sha256 8e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqIsha2568e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXrosha2568e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5Esha256 /8e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Ysha256)8e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMsha256 8e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQsha2568e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSssha2568e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8sha2568e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPgsha256;8e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0sha256 8e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUsha256[8e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4sha2568e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8sha256 8e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcsha2568e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwsha256 8e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgssha256G7e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Ysha256&8e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkksha2568e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgsha2568e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEsha256 8e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8sha256.8e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4sha256 8e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMsha256U8e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwsha2568e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04sha256&8e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMsha256 58e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAsha2568e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4sha256L8e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpssha2568e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28ssha2567e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNcsha25668e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Ysha256+7e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcsha256O8e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYsha256N8e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wosha256D8e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8sha256 8e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00sha256 8e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hssha2568e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUsha256S8e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8sha2568e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qksha2568e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Ysha256j8e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8Usha2568e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAsha256m8e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkksha2568e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38sha2568e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0sha256i8e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4sha2568e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAsha256 u8e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIsha256 8e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0sha256 K[j8p> v D  | J  P  V $ [ \ *b0h6o= uUC{#IO1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs41e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4,1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0f1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to=1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYS1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcG1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY L1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY Z1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYy0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8J1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw A1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU$1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 21e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA 1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoU1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE|1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM T1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM"1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM 1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYA1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM K1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts%1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMN1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwG1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8T1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IN1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A l1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI |1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo}1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 #g= i r  JM\@Tc!AgaeQ' $FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800m.room.createseQ'1$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800seQ'1$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800geQ3 $wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_accessmeQ? $2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibilityeeQ/ $gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rulesgeQ3 $pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels eQ']$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800aeQ' $bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800m.room.createseQ'1$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800seQ'1$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800geQ3 $JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_accessm eQ? $QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibilitym eQ? $EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibilitye eQ/ $9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rulesg eQ3 $8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels eQ']$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800aeQ' $EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800m.room.create eQ']$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800meQ? $ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibilityeeQ/ $GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rulesgeQ3 $VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels eQ']$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800aeQ' $HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.create eQ']$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800meQ? $K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibilityeeQ/ $iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800m.room.join_rulesg~eQ3 $Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800m.room.power_levels }eQ']$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800a|eQ' $fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800m.room.createm{eQ? $fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibilityezeQ/ $gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rulesgyeQ3 $81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels xeQ']$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800aweQ' $Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800m.room.create   _ v ?o- JU ( V _~ eBeQ/ $W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rulesmXeQ? $ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibilityeWeQ/ $GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rulesgVeQ3 $VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels YeQ']$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800joinaTeQ' $HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800m.room.create SeQ']$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800joinaIeQ' $Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800m.room.createmHeQ? $2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.history_visibilityeGeQ/ $1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.join_rulesgFeQ3 $tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.power_levels EeQ']$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.member@anon-20191002_181700-182:localhost:8800joinaDeQ' $1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800m.room.createmCeQ? $eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M!wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility @eQ']$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800joina?eQ' $GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800m.room.create >eQ']$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800join =eQ']$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829joinmReQ? $K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibilityeQeQ/ $iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800m.room.join_rulesgPeQ3 $Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800m.room.power_levelsgAeQ3 $NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levelsaNeQ' $fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800m.room.createmMeQ? $fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibilityeLeQ/ $gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rulesgKeQ3 $81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels JeQ']$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800join zJ. H  N  T " Z ( a 0h6n< tBzHNT"Z(`.j8sA9d1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gt1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gs1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gr1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU %1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU $1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs&1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs%1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQD1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQC1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQB1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg"1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY`1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY_1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY^1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew\1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew[1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewZ1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsB1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsA1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os@1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU31e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU21e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU11e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs<1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs;1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs:1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI :1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirwa0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw`1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYz1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYy1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYx1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0h1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0g1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0x1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A`1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A_1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A^1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5At1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5As1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Arc1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg"1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0[0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0Z0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0Y1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 wl D 1 w*]c!E@anon-20191002_181700-189:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVidUpNVXhuOGZWLl8zRUcKMDAyZnNpZ25hdHVyZSCXgK_fzAECd6qxDK5bXpGq3bXHnw2u9AkinbzsoF1L7woRWJCTIMOHJ127.0.0.1Perl + Net::Async::HTTP/0.44m5{)1a%E@15:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gT2g9az0zZExCPURJdHkyagowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIH2hVUWzUTzg0iqiItdcOb0l4V8wVp-qZPorOSUIDDIwCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m(]c!E@anon-20191002_181700-188:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAjPUM3bmpqTndOZnYrMUoKMDAyZnNpZ25hdHVyZSC_kz-E8YmMBNcAclPvn3n3UpiiaFAKSaPlBkz2lbFOAQoHQVPFKSROB127.0.0.1Perl + Net::Async::HTTP/0.44m{'1a%E@14:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZSZFNGErMHFfdXhzcCtzQwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlINrCwOwQyMEAprIa-T8zRFMD9PdqAvsYHDRxJuawVJrKCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m&]c!E@anon-20191002_181700-187:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZHK005MFlxMkksc35acnoKMDAyZnNpZ25hdHVyZSB77-Jon2mI9xbF7QXvmsgb-UWL0tcYtDp9oWaY2oeTbQoPTZIGIMOFF127.0.0.1Perl + Net::Async::HTTP/0.44m_{%1a%E@13:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDEzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO3Y0Q29GWE5YeHR-OnRIcQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEx9qDT1ndFqTfeFHMHmfj2Bk8E4hOUXORN-m3pDpxhZCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mP<$]c!E@anon-20191002_181700-186:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG00TmlBRUNYaklfIzUxQy0KMDAyZnNpZ25hdHVyZSAhw-vznghM1qodIeuqnym4f7ESqx4RXazHU0ls-7TVmQoMCDWETOPHN127.0.0.1Perl + Net::Async::HTTP/0.44m2%#]c!E@anon-20191002_181700-185:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNLflkzbUY6X3pNLmkrYjAKMDAyZnNpZ25hdHVyZSB-dJuZ3kD9JvjsgzjQJ222J1uZJCww2laumCK2PNbrTwoVORURBUNEE127.0.0.1Perl + Net::Async::HTTP/0.44mU"]c!E@anon-20191002_181700-184:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYrYzd4M0JqXzRhTHQmNHoKMDAyZnNpZ25hdHVyZSCt3U7so-BBhxeh0J3Q980OkHzI6IEiFzDbMQTDXhTi1QoVWQCQPUGVZ127.0.0.1Perl + Net::Async::HTTP/0.44m!]c!E@anon-20191002_181700-183:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl5NnNyJnJ6Ymo2Y0c3UE8KMDAyZnNpZ25hdHVyZSBQORj4-f0xTB0UczSNleHKRal1-s8w8dB-FDtSOl6s1AoPNPQZSANHG127.0.0.1Perl + Net::Async::HTTP/0.44mG  hIeQ__$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 842}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-184:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041038457, "hashes": {"sha256": "7sO4ndybwTxHSXYR320tMG3BnPQ0wztPMWwc0oljCoY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VaJvUabja1AdFcc4JR6Zg3N8ExjxLShKE4QxLzmy+3j9SrXzCJ+9pTr2/mckXeyNllyb2j3QIILpfng3dI1gCA"}}, "unsigned": {"age_ts": 1570041038457}}HeQ_$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 841}{"auth_events": ["$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok", "$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA", "$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "prev_events": ["$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk"], "type": "m.room.history_visibility", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041036407, "hashes": {"sha256": "GI9gazjoU45s6Jnj/c017RD1KD0z6nAr30lO4cq8n1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TyFIFVfeHqJWBJoRdYYLtkKoYURkoYijc8HtHZjnKMBED5rioA2H0yzEC4Dj7dh6vR5xSaWd2coWdJlqsFCGBw"}}, "unsigned": {"age_ts": 1570041036407}}sGeQ_u$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 840}{"auth_events": ["$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok", "$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA", "$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "prev_events": ["$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok"], "type": "m.room.join_rules", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041035875, "hashes": {"sha256": "5F1lAeLoJv4qX0sWb7bCM1K8++JSbb/igaSk4zGRGcE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5ILg5jxahCdyn8adq7JIJDBv32Co0LG0f4oVX/Qy4F9UCFyHW1i7LobYV8X3LTKGAPCdOHQWUumVbrdj8RQjAQ"}}, "unsigned": {"age_ts": 1570041035875}}jFeQ_c$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok!eLsrBEnrHolwCNgkFW:localhost:8800{"token_id": 204, "stream_ordering": 839}{"auth_events": ["$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA", "$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "prev_events": ["$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A"], "type": "m.room.power_levels", "room_id": "!eLsrBEnrHolwCNgkFW:localhost:8800", "sender": "@anon-20191002_181700-183:localhost:8800", "content": {"users": {"@anon-20191002_181700-183:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041035092, "hashes": {"sha256": "ZoLHnHoMg95ZqEP9Rc8Gt1lqmYpX+HT3TI0vDbcO0wY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hKdu7eqeV6mRVlECaZuyyUhQVuT7gE3i3H0fHQxXV3V8GgSJTET2Lxjqy3CBrOOTvLLLljt3nQAMxrrsTLLbCA"}}, "unsigned": {"age_ts": 1570041035092}} he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph          ~}|{z~y}x|w{vzuytxswrvquptosnrmqlpkojnimhlgkfjeidhcgbfae`d_c^b]a\`[_Z^Y]X\W[VZUYTXSWRVQUPTOSNRMQLPKOJNIM          FKEJDICHBGAF@E?D>C=B<A;@:?9>8=7<6;5:4938271605/4.3-2,1+0*/).(-',&+%*$)#("'!& %$#"! HLGKFJEIDHCGBFAE@D?C>B=A<@;?:>9=9<8;7:69584736251403/2.1-0,/+.*-),(+'*&)%($'#&"%!$ #"!  ZP `  d  tx201Z `e'Q 1 $_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcm.room.member!hgjYwwwjWJNgwrzOto:localhost:8800 mUumV6@13:localhost:8800!_e)Q ] $gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQm.room.message!hgjYwwwjWJNgwrzOto:localhost:8800 mSSmSW@anon-20191002_181700-186:localhost:8800 ^e'Q ] $BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMm.room.member!hgjYwwwjWJNgwrzOto:localhost:8800 mPmQ4@anon-20191002_181700-186:localhost:8800!]e)Q ]$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAm.room.message!hgjYwwwjWJNgwrzOto:localhost:8800mN mN%@anon-20191002_181700-186:localhost:8800&\e3Q ]$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgm.room.guest_access!hgjYwwwjWJNgwrzOto:localhost:8800mK2mK@anon-20191002_181700-186:localhost:8800,[e?Q ]$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQm.room.history_visibility!hgjYwwwjWJNgwrzOto:localhost:8800mFmG@anon-20191002_181700-186:localhost:8800,Ze?Q ]$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1km.room.history_visibility!hgjYwwwjWJNgwrzOto:localhost:8800mBmD@anon-20191002_181700-186:localhost:8800$Ye/Q ]$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mksm.room.join_rules!hgjYwwwjWJNgwrzOto:localhost:8800m@mAF@anon-20191002_181700-186:localhost:8800&Xe3Q ]$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMm.room.power_levels!hgjYwwwjWJNgwrzOto:localhost:8800m=m>@anon-20191002_181700-186:localhost:8800 We'Q ]$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0m.room.member!hgjYwwwjWJNgwrzOto:localhost:8800m7gm9@anon-20191002_181700-186:localhost:8800V e'Q  ]$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70m.room.create!hgjYwwwjWJNgwrzOto:localhost:8800m2sm2@anon-20191002_181700-186:localhost:8800 Ue'Q ]$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8m.room.member!dnZVySJLGNtUKsSgXW:localhost:8800m,m-.@anon-20191002_181700-185:localhost:8800,Te?Q ]$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQm.room.history_visibility!dnZVySJLGNtUKsSgXW:localhost:8800m(Em)@anon-20191002_181700-185:localhost:8800$Se/Q ]$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYm.room.join_rules!dnZVySJLGNtUKsSgXW:localhost:8800m%m&@anon-20191002_181700-185:localhost:8800&Re3Q ]$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMm.room.power_levels!dnZVySJLGNtUKsSgXW:localhost:8800m#lm$v@anon-20191002_181700-185:localhost:8800 Qe'Q ]$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQm.room.member!dnZVySJLGNtUKsSgXW:localhost:8800m Lm @anon-20191002_181700-185:localhost:8800P e'Q  ]$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMm.room.create!dnZVySJLGNtUKsSgXW:localhost:8800mm@anon-20191002_181700-185:localhost:8800 Oe'Q ]$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYm.room.member!oznZaCpONuNDaLarkI:localhost:8800mmE@anon-20191002_181700-184:localhost:8800,Ne?Q ]$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMm.room.history_visibility!oznZaCpONuNDaLarkI:localhost:8800mXm@anon-20191002_181700-184:localhost:8800$Me/Q ]$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgm.room.join_rules!oznZaCpONuNDaLarkI:localhost:8800mimB@anon-20191002_181700-184:localhost:8800&Le3Q ]$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAm.room.power_levels!oznZaCpONuNDaLarkI:localhost:8800m m@anon-20191002_181700-184:localhost:8800 Ke'Q ]$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwm.room.member!oznZaCpONuNDaLarkI:localhost:8800m *m @anon-20191002_181700-184:localhost:8800J e'Q  ]$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80m.room.create!oznZaCpONuNDaLarkI:localhost:8800mym@anon-20191002_181700-184:localhost:8800,Ie?Q ]$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMm.room.history_visibility!eLsrBEnrHolwCNgkFW:localhost:8800mwmH@anon-20191002_181700-183:localhost:8800 ZlT<uN& a 9  s K # ] 5 m E  ~ V . iB|T,g@zS+f?xP(a9sL$'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800&Q!JGhlAUflyNxErGGZZu:localhost:8800r'Q!IlGJpjzrvvAFuwTAgo:localhost:88003'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800P&Q!ILbUVZOfPPwaZRrKJd:localhost:8800b&Q!IGVHKYcSuxzVPlFHlj:localhost:8800"'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800+'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800<'Q!HbYxdEuVIeLKHwqJEh:localhost:8800&Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800O&Q!HAFNBarGuVZuWCgwWM:localhost:8800%&Q!GwXGurbyEmykmmHcHJ:localhost:8800?'Q!GwLdUoDplyVUogXDzu:localhost:8800\'Q!GsjDgpaxdwYfnefiWO:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800I&Q!GgUNbVXspVTpOlaHBl:localhost:88009'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800O&Q!FklhVuCInffbDxunWv:localhost:8800~'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800k&Q!FPcQcheNebvdFvmOnr:localhost:8800j&Q!FIOuvzpMhoERunVYYA:localhost:8800x'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800&Q!EyEaTZElOkdURKbEXo:localhost:8800'&Q!EieRtaCFZJJCIOkRPp:localhost:8800h'Q!EhUxBjnSkVXpTrQlrn:localhost:8800.'Q!EhFUhsgQbBWmrnGmaz:localhost:88007'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800&Q!EABRjdYuYumMhLSwIa:localhost:8800y'Q!DuqHkpTfWCUblSrxQj:localhost:8800p'Q!DqxFmsXPclgGqpSwdy:localhost:8800!'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800('Q!DSFBpkqfnvBQbGoMUK:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800='Q!CSqENqzAezaZnGktbE:localhost:88002&Q!CQKLQUpSYakhxVDltC:localhost:8800@'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800G'Q!BfEFIDBthhkweqfhir:localhost:8800&Q!BckZfhQgrcyiMhEAAJ:localhost:8800u'Q!BPNyKqmwcpGxIbGFZG:localhost:8800'Q!BKZJsoFNhiLTDYNclB:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800_&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:88004&Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AYFqrmxwClFQlcTTYq:localhost:8800g&Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800{'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:424551!6:localhost:42455x1!5:localhost:42455n3!13:localhost:424553!12:localhost:424553!11:localhost:424553!10:localhost:424551!0:localhost:42455e Ug~ jg@xP(Z2 rD>-b:bUrJ B#  k [ 3 m E :"  J  X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800^&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800Y'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800#'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800t&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800q'Q!OCEHAjcOXWNyWIESIS:localhost:8800d&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800j'Q!MXhwoqNXvexeDDSOZT:localhost:8800`&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800|&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800o'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800L&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800"'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:88000'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800E'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88008'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800B&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800( p%:DN\ f p  z ( 2 < FPt#0=PdQ]!oznZaCpONuNDaLarkI:localhost:8800@anon-20191002_181700-184:localhost:88004PXQ ]!lAGTcYIuMBXsVRGCOe:localhost:8800@anon-20191002_181700-169:localhost:880040:PcQ]!eLsrBEnrHolwCNgkFW:localhost:8800@anon-20191002_181700-183:localhost:88004PbQ]!ILbUVZOfPPwaZRrKJd:localhost:8800@anon-20191002_181700-182:localhost:88004PaQ]!wAyboOFgsOPwkmgMAI:localhost:8800@anon-20191002_181700-181:localhost:88004P`Q]!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-178:localhost:88004P_Q]!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-176:localhost:88004P^Q]!tDsPLsKOLPePtEWRwn:localhost:8800@anon-20191002_181700-176:localhost:88004P]Q]!XMNRkfscQXRjgYrOSd:localhost:8800@anon-20191002_181700-174:localhost:88004P\Q]!wUuodvgsmAJqKJUBCQ:localhost:8800@anon-20191002_181700-173:localhost:88004P[Q ]!zFdNewlKnUiMBxnYrN:localhost:8800@anon-20191002_181700-170:localhost:88004PZQ ]!KeBlWUQiLYUoILKkTB:localhost:8800@anon-20191002_181700-170:localhost:88004PYQ ]!WVzjUePHrzCjfyTbmK:localhost:8800@anon-20191002_181700-169:localhost:88004 P|Q]!sfXbvAcOUJhzGwWEpZ:localhost:8800@anon-20191002_181700-209:localhost:88004P{Q]!YufaOfAlruTdjyUCwO:localhost:8800@anon-20191002_181700-208:localhost:88004PzQ]!ifQxHmNAcSSGHVMjfi:localhost:8800@anon-20191002_181700-207:localhost:88004PyQ]!EABRjdYuYumMhLSwIa:localhost:8800@anon-20191002_181700-206:localhost:88004PxQ]!FIOuvzpMhoERunVYYA:localhost:8800@anon-20191002_181700-205:localhost:88004PwQ]!zNBpypJDRMlBdOcLlW:localhost:8800@anon-20191002_181700-204:localhost:88004PvQ]!TcaopYfMoJFEcjYRzJ:localhost:8800@anon-20191002_181700-203:localhost:88004PuQ]!BckZfhQgrcyiMhEAAJ:localhost:8800@anon-20191002_181700-202:localhost:88004PtQ]!KXMUzALpMMMKqoQXUS:localhost:8800@anon-20191002_181700-201:localhost:88004PsQ]!NfaPEGKjnUDUTavzol:localhost:8800@anon-20191002_181700-200:localhost:88004PrQ]!JGhlAUflyNxErGGZZu:localhost:8800@anon-20191002_181700-199:localhost:88004PqQ]!tkajvIKHoOMWGsReBs:localhost:8800@anon-20191002_181700-198:localhost:88004PpQ]!fcdNYFWFyxmdpKAknc:localhost:8800@anon-20191002_181700-197:localhost:88004PoQ]!MWCLSWWGdWcSivNVLI:localhost:8800@anon-20191002_181700-195:localhost:88004PnQ]!erBPdgtUsiOfIKUkho:localhost:8800@anon-20191002_181700-194:localhost:88004PmQ]!dWgOTucBVQBKZjfndN:localhost:8800@anon-20191002_181700-193:localhost:88004PlQ]!hSzBsirdPWHtVjagXn:localhost:8800@anon-20191002_181700-192:localhost:88004PkQ]!mfzIRinBAGGrZvQAuI:localhost:8800@anon-20191002_181700-191:localhost:88004PjQ]!FPcQcheNebvdFvmOnr:localhost:8800@anon-20191002_181700-190:localhost:88004PiQ]!vOfeZvbtpuHfoqShFl:localhost:8800@anon-20191002_181700-189:localhost:88004PhQ]!EieRtaCFZJJCIOkRPp:localhost:8800@anon-20191002_181700-188:localhost:88004PgQ]!NQgavrmiCPUVaVjssy:localhost:8800@anon-20191002_181700-187:localhost:88004PfQ]!hgjYwwwjWJNgwrzOto:localhost:8800@anon-20191002_181700-186:localhost:88004PeQ]!dnZVySJLGNtUKsSgXW:localhost:8800@anon-20191002_181700-185:localhost:88004 " 5 4 ? i h  s +M]h BR]gGQ/ eE!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rules$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAiFQ3 eD!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc EQ']eC!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEcDQ' eB!EieRtaCFZJJCIOkRPp:localhost:8800m.room.create$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUuCQ'1eA!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukuBQ'1e@!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIiAQ3 e?!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_access$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Too@Q? e>!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility$FoUAmMH_0UK92eU5EB9Aa8u3hMKir0klOhiqwMhM1uYo?Q? e=!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wg>Q/ e-b::ZUrJ B#  k [ 3 m E bJ  r " X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800]&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800X'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800"'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800s&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800p'Q!OCEHAjcOXWNyWIESIS:localhost:8800c&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800i'Q!MXhwoqNXvexeDDSOZT:localhost:8800_&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800{&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800n'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800K&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800/'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800D'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88007'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800A&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800( ZlT<uN& a 9  s K # ] 5 m E  ~ V . iB|T,g@zS+f?xP(a9sL$'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800&Q!JGhlAUflyNxErGGZZu:localhost:8800r'Q!IlGJpjzrvvAFuwTAgo:localhost:88002'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800P&Q!ILbUVZOfPPwaZRrKJd:localhost:8800b&Q!IGVHKYcSuxzVPlFHlj:localhost:8800"'Q!HusOrLtWZTLbmQZxmm:localhost:8800&Q!HmkcAMkMjWRhTDJMsy:localhost:8800+'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800<'Q!HbYxdEuVIeLKHwqJEh:localhost:8800&Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800&Q!HIZTeBCxvpMSpcqGVD:localhost:8800O&Q!HAFNBarGuVZuWCgwWM:localhost:8800%&Q!GwXGurbyEmykmmHcHJ:localhost:8800?'Q!GwLdUoDplyVUogXDzu:localhost:8800['Q!GsjDgpaxdwYfnefiWO:localhost:8800&Q!GixhPUMvtKSWoKRgvw:localhost:8800&Q!GiSxJsKZhQVHBkrVPn:localhost:8800I&Q!GgUNbVXspVTpOlaHBl:localhost:88009'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800&Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800N&Q!FklhVuCInffbDxunWv:localhost:8800~'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800j&Q!FPcQcheNebvdFvmOnr:localhost:8800j&Q!FIOuvzpMhoERunVYYA:localhost:8800x'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800&Q!EyEaTZElOkdURKbEXo:localhost:8800'&Q!EieRtaCFZJJCIOkRPp:localhost:8800h'Q!EhUxBjnSkVXpTrQlrn:localhost:8800-'Q!EhFUhsgQbBWmrnGmaz:localhost:88006'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800&Q!EABRjdYuYumMhLSwIa:localhost:8800y'Q!DuqHkpTfWCUblSrxQj:localhost:8800o'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800''Q!DSFBpkqfnvBQbGoMUK:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800&Q!CgVBWWcRJoHEcwoLcq:localhost:8800='Q!CSqENqzAezaZnGktbE:localhost:88001&Q!CQKLQUpSYakhxVDltC:localhost:8800@'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800'Q!CAGaRyRvrohDRBsrWH:localhost:8800&Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BpTqIemsWFZIqTcgJO:localhost:8800'Q!BoyzlWNkRPncpDjBDg:localhost:8800&Q!BkzROHxDAfKIzYpmPV:localhost:8800G'Q!BfEFIDBthhkweqfhir:localhost:8800&Q!BckZfhQgrcyiMhEAAJ:localhost:8800u'Q!BPNyKqmwcpGxIbGFZG:localhost:8800'Q!BKZJsoFNhiLTDYNclB:localhost:8800&Q!BGbJEmJRVJGlZFQbZe:localhost:8800_&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:88003&Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AYFqrmxwClFQlcTTYq:localhost:8800f&Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800z'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:88001!9:localhost:424551!6:localhost:42455w1!5:localhost:42455m3!13:localhost:424553!12:localhost:424553!11:localhost:424553!10:localhost:424551!0:localhost:42455d Ug~ jg@xP(2 D>-b::ZUrJ B#  k [ 3 m E bJ  r " X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800]&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800X'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800"'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800s&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800p'Q!OCEHAjcOXWNyWIESIS:localhost:8800c&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800i'Q!MXhwoqNXvexeDDSOZT:localhost:8800_&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800{&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800n'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800K&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800/'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800D'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88007'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800A&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800( cd=zS, i B   X 1 n G ] 6  s L %b;xQ*g@}V/lE[4 qJ#`9%cQ !eLsrBEnrHolwCNgkFW:localhost:8800%bQ !ILbUVZOfPPwaZRrKJd:localhost:8800%aQ !wAyboOFgsOPwkmgMAI:localhost:8800%`Q !bnTuVBaAJTPbcYZtRl:localhost:8800%_Q !BGbJEmJRVJGlZFQbZe:localhost:8800%^Q !tDsPLsKOLPePtEWRwn:localhost:8800%]Q !XMNRkfscQXRjgYrOSd:localhost:8800%\Q !wUuodvgsmAJqKJUBCQ:localhost:8800%[Q !zFdNewlKnUiMBxnYrN:localhost:8800%ZQ !KeBlWUQiLYUoILKkTB:localhost:8800%YQ !WVzjUePHrzCjfyTbmK:localhost:8800%XQ !lAGTcYIuMBXsVRGCOe:localhost:8800%WQ !UyLoIXmzVFwycmBUeh:localhost:8800%VQ !nteAxExBGJfaGIpuCx:localhost:8800%UQ !itKDOCtoMkFUETDtle:localhost:8800%TQ !qxqNYKdtgvOQdhmgsj:localhost:8800%SQ !MlzmtUYSZOiByAZdKx:localhost:8800%RQ !WjlTCJVOFJkanCtkFE:localhost:8800%QQ !aBCvSXjtZUEPlPGHvY:localhost:8800%PQ !IMiczgkCTjejbnbeyP:localhost:8800%OQ !HIZTeBCxvpMSpcqGVD:localhost:8800%NQ !awHAhLuEkavTGACcUW:localhost:8800%MQ !OqPpVlCwmKdAUlwrXI:localhost:8800%LQ !quaZwrGnzbNWhwAOYB:localhost:8800%KQ !JusxqeECtidaPlWqhp:localhost:8800%JQ !aWvVRVaDflYyyGTOdD:localhost:8800%IQ !GiSxJsKZhQVHBkrVPn:localhost:8800%HQ !AjjrNwXmPTCruHxaJq:localhost:8800%GQ !BkzROHxDAfKIzYpmPV:localhost:8800%FQ !WWZVpyLeZfyfpWidLx:localhost:8800%EQ !XIqmzIFbkHGQPIpywk:localhost:8800%DQ !lMRBkbYJDQHgdBZBFJ:localhost:8800%CQ !cHtqiAyCHEAoBIbCmL:localhost:8800%BQ !OBWkjfrDCNgYFfblia:localhost:8800%AQ !ntuwVdUxfzNIhIKYaz:localhost:8800%@Q !CQKLQUpSYakhxVDltC:localhost:8800%?Q !GwXGurbyEmykmmHcHJ:localhost:8800%>Q !VWYMJxEviBNDdJCuKT:localhost:8800%=Q !CgVBWWcRJoHEcwoLcq:localhost:8800%<Q !HcMGemcRrLnLprOJJR:localhost:8800%;Q !SyIWYOmcGiASNkPCTB:localhost:8800%:Q !msMfSdLIAvklSSAnci:localhost:8800%9Q !GgUNbVXspVTpOlaHBl:localhost:8800%8Q !eKrOqiOabJcMgIJjwC:localhost:8800%7Q !vVmSdclwPIqYDbnmPn:localhost:8800%6Q !edbUkYJIZBNOiTuLJs:localhost:8800%5Q !VAEDgDJVqmxXZyAlSW:localhost:8800%4Q !eySSVuCclRpBDgwKIU:localhost:8800%3Q !fJXiUpbbOlLbHWmPgs:localhost:8800%2Q !oXKJArsPmtgaYANBrg:localhost:8800%1Q !egCvzKpbEwmuvDoBTb:localhost:8800%0Q !XgobMgBjNcDRJnRXLD:localhost:8800%/Q !wIhMbfQzYbJobPdwyi:localhost:8800%.Q !cSUQGmpIsSCBAVTOHo:localhost:8800%-Q !SBEprlZiuliFNSfNmz:localhost:8800%,Q !KxhGcTbEWmtgGNpdox:localhost:8800%+Q !HmkcAMkMjWRhTDJMsy:localhost:8800%*Q !OMkiVTuuOEeiFAXtUY:localhost:8800%)Q !BrssELMbasSzTFpIXm:localhost:8800%(Q !RmdhCjvouVLmyIHjaM:localhost:8800%'Q !EyEaTZElOkdURKbEXo:localhost:8800%&Q !TWETXUgfFZafDdbqLS:localhost:8800%%Q !HAFNBarGuVZuWCgwWM:localhost:8800%$Q !duCKuavMBSfRbTFPsc:localhost:8800%#Q !TleKOyAElrpgyyrAQA:localhost:8800%"Q !IGVHKYcSuxzVPlFHlj:localhost:8800%!Q !xhbvqJDfxMSsZPqvld:localhost:8800% Q !OSHhtkGUjpUCkXwIhj:localhost:8800%Q !AWfbViAZparIjmDaVT:localhost:8800%Q !wnriPzXkIMmdTNoJKU:localhost:8800%Q !jfshVGNDxkvqPxFxWB:localhost:8800%Q !OaCEdDAiatpwYcagUb:localhost:8800%Q !GGTWnzJfvPQBgQqDIE:localhost:8800%Q !cosGKKhHvKaVukBCic:localhost:8800%Q !rZWweGEChkxxtzyfDB:localhost:8800%Q !uJtKGXTNdEnCPNOGDx:localhost:8800%Q !vJQYmOxOBLwFKzYkNj:localhost:8800%Q !kkgEEVUJynguTqAoWD:localhost:8800%Q !dUnULFLGtgaVdwHtnz:localhost:8800%Q !aWbcZNVBalJilCEsdr:localhost:8800%Q !kxTDuIasPNpXtiRsif:localhost:8800%Q !wvnfKBSrUlfNmYoeil:localhost:8800%Q !NhWgOTYzEPRwAxRQvS:localhost:8800%Q !scyFsXcUIJiLIMwWMY:localhost:8800%Q !aWJOsiuJONOvjKWEjO:localhost:8800%Q !BDASLhdcKfNwxCTCSg:localhost:8800% Q !xwoIOPTGmJIlTXakxC:localhost:8800% Q !jYzridjeihmwPBuwLb:localhost:8800% Q !NZHpBquHDfJAjiawGk:localhost:8800% Q !uxKymrHZeXRYCZwekU:localhost:8800% Q !sPWVGnipjiiWQpywNO:localhost:8800%Q !GixhPUMvtKSWoKRgvw:localhost:8800%Q !zhCsYcaweVFJLLNwBz:localhost:8800%Q !loalEsWaTYwrVUNJLr:localhost:8800%Q !LaLcEGFLpjdlYlYKGC:localhost:8800%Q !odAvowLhHJcmkKlxFk:localhost:8800%Q !plcvCHNbjCkNMMxnTk:localhost:8800%Q !QZhNrNpwObZGJZpdAG:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800 bd=zS, i B   X 1 l D  | T ,  d < tL$\4 lD|T,d<tL$\4 lD%EQ !NPdjmIfsBVIIkvWBzD:localhost:8800%DQ !vyCFfUTJKYJSDadFhT:localhost:8800%CQ !beBXQofoOfxNBtzsut:localhost:8800%BQ !xvblqEscwOtCqJntfF:localhost:8800%AQ !HhYREfUiJTpjWmOuPF:localhost:8800%@Q !nvclDopiBLEOKBIheH:localhost:8800%?Q !YgaGPEraeLCqHQirin:localhost:8800%>Q !aVxOoyiLLnxmzgLJat:localhost:8800%=Q !fuHSJcznvGQnoYoLPW:localhost:8800%<Q !hYPSaMPGsLnvYSmwhg:localhost:8800%;Q !jIfvTrwedrWLubsnlM:localhost:8800%:Q !KeqmSjifajNKxtgqhj:localhost:8800%9Q !icheSPMgpemswIdQkw:localhost:8800%8Q !EyyNoldCLUdFHzXTDP:localhost:8800%7Q !vpuivIQDEhyuhOLWpg:localhost:8800%6Q !uSBqTezaFcMnlowsEf:localhost:8800%5Q !NrxQuziwSWzsHuXIlG:localhost:8800%4Q !CNFopUEQTFbzjmLvii:localhost:8800%3Q !WhqVaRReBxJXADAyYD:localhost:8800%2Q !aLxrqpqLkbzyIxGgpk:localhost:8800%1Q !BfEFIDBthhkweqfhir:localhost:8800%0Q !aaRwQZdNAliyvRHpjs:localhost:8800%/Q !ZShBIxwbJmxjjZmoRQ:localhost:8800%.Q !NNiyzThHMivrxhojfp:localhost:8800%-Q !QFiJrWFFeTAAAUCjCE:localhost:8800%,Q !KmuRTfGFgJdgIDAgIW:localhost:8800%+Q !mOrKBPhetifKHDmElM:localhost:8800%*Q !QyLUggxrTnULUAOseq:localhost:8800%)Q !azRJNFPIRSFAskLILK:localhost:8800%(Q !MBWnwKRwFznvRpAzxr:localhost:8800%'Q !krhefVncoErkCtnvsy:localhost:8800%&Q !mMsxpaIlcykPuOnDyl:localhost:8800%%Q !VOhMAiLfKyTOZbmKGw:localhost:8800%$Q !ffijTnPMbTrDXHqOXf:localhost:8800%#Q !wLitJYvgvNJzanSIvO:localhost:8800%"Q !hWHyATwKfuznrqTiyu:localhost:8800%!Q !cGkVFpidyBBxUxsszG:localhost:8800% Q !jveVPZSXJOJyNDebPO:localhost:8800%Q !rJhSRzmWBQHlIhuDXT:localhost:8800%Q !fsbkkRBZlUcBVVfMME:localhost:8800%Q !bzPCFeFSMbCESvNbxl:localhost:8800%Q !RPfffkmSEbWggEjnoI:localhost:8800%Q !nxLxsxzliamzflrEBs:localhost:8800%Q !PCgUmZOwWmtDsuFqXg:localhost:8800%Q !egbhiBqOGhloZzopol:localhost:8800%Q !KdOYYnOuwAyQzqwUki:localhost:8800%Q !XNfwczePlyYFWLCaui:localhost:8800%Q !PQZMTVTeCYqMZwkHvW:localhost:8800%Q !kpTPWDZdBbbXKLonZK:localhost:8800%Q !ITdmSQpjMnaPoHIbws:localhost:8800%Q !FAYqpziHeVZugCGaij:localhost:8800%Q !ZaOktTIVeRgBXxfubH:localhost:8800%Q !ZaltdIYVZjCHsCWTZD:localhost:8800%Q !kwXxkGQFkaeenFTQJr:localhost:8800%Q !EMhFCPhwmnWVnjtXXM:localhost:8800%Q !GGXyLHdVXqhQjPRvac:localhost:8800% Q !IfYYyzLHSOeyJBxBfn:localhost:8800% Q !ZYKvjplZRyIWvzkRyM:localhost:8800% Q !ROoilpDjLJfjKfSPIi:localhost:8800% Q !wsvXTJXouVkEZcCFsD:localhost:8800% Q !DoiZErAdypBUMZKaeJ:localhost:8800%Q !qSUSLLWjDxcGibUZdT:localhost:8800%Q !RmwbYvIIQyPlHlClty:localhost:8800%Q !SvKwEALYoNreUvqAlp:localhost:8800%Q !fOJLpnbtgKNxxVDquX:localhost:8800%Q !vAUAIZrCnHTeMGeNuw:localhost:8800%Q !EfJcWhdjNARbuHYrqU:localhost:8800%Q !vRRNxNyGboLHNhqQvr:localhost:8800%Q !NFWKQvZkIwvecnREOC:localhost:8800%Q !IPYMCBwcyNIzqdiIWv:localhost:8800%Q !HZqzpRgqekPOtxstVc:localhost:8800%~Q !FklhVuCInffbDxunWv:localhost:8800%}Q !eJPTUgihvSwaOhIkrC:localhost:8800%|Q !sfXbvAcOUJhzGwWEpZ:localhost:8800%{Q !YufaOfAlruTdjyUCwO:localhost:8800%zQ !ifQxHmNAcSSGHVMjfi:localhost:8800%yQ !EABRjdYuYumMhLSwIa:localhost:8800%xQ !FIOuvzpMhoERunVYYA:localhost:8800%wQ !zNBpypJDRMlBdOcLlW:localhost:8800%vQ !TcaopYfMoJFEcjYRzJ:localhost:8800%uQ !BckZfhQgrcyiMhEAAJ:localhost:8800%tQ !KXMUzALpMMMKqoQXUS:localhost:8800%sQ !NfaPEGKjnUDUTavzol:localhost:8800%rQ !JGhlAUflyNxErGGZZu:localhost:8800%qQ !tkajvIKHoOMWGsReBs:localhost:8800%pQ !fcdNYFWFyxmdpKAknc:localhost:8800%oQ !MWCLSWWGdWcSivNVLI:localhost:8800%nQ !erBPdgtUsiOfIKUkho:localhost:8800%mQ !dWgOTucBVQBKZjfndN:localhost:8800%lQ !hSzBsirdPWHtVjagXn:localhost:8800%kQ !mfzIRinBAGGrZvQAuI:localhost:8800%jQ !FPcQcheNebvdFvmOnr:localhost:8800%iQ !vOfeZvbtpuHfoqShFl:localhost:8800%hQ !EieRtaCFZJJCIOkRPp:localhost:8800%gQ !NQgavrmiCPUVaVjssy:localhost:8800%fQ !hgjYwwwjWJNgwrzOto:localhost:8800%eQ !dnZVySJLGNtUKsSgXW:localhost:8800%dQ !oznZaCpONuNDaLarkI:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VteL$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpssha256Ԥ*Y|a>2)dž#킛VseL$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70sha256eΓNmn H|GVreL$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qsha256Wa//c-Ő4):Tq"]]!VqeL$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMsha256#ZZŁbp sn'<׳HAVpeL$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYosha256{' wȹ!v 㲻LYOVheL$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJksha256\|\㨘@li/u|?dVgeL$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIsha256iK>D;JLUd:5+F`VVfeL$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIsha256f1% r#^%NVeeL$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tosha256 5~4C%,TX<:VdeL$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wsha256؉Yc6Ebİъ,)+VceL$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0sha256 ٟT%w itjyVbeL$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIsha256j'mR%` zrXOY1Cxu3w2VaeL$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0sha256L < ;y`vͭqnLVI}V`eL$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gsha256mGEȗD]:A[sޫV_eL$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcsha256qQ"`$Vs~ee.-V^eL$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQsha256W%79xFp%9V]eL$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMsha256٥\xJ@" o#+Z kޓV\eL$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAsha256anıMNnT6d&Ya%d V[eL$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgsha256$kS˖@oaÑ1VZeL$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQsha256A/ԃXR/Z #{G VYeL$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1ksha256گc9;לDH JpთYVXeL$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mkssha256X+iLxj K2KVWeL$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMsha256iIqMoըk^=3lTVVeL$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0sha256O_XEq&-GqGa*aUnVUeL$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70sha256Dv^jh;-RRk GY DVTeL$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8sha256]}?%t0+E-a@ VSeL$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQsha256uT*z|E7MY߁]|h"|VReL$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYsha256ǕQh:gO , - kJVQeL$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMsha256T^*P TlغyVKT*JVPeL$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQsha256m$Ad[Ac:-b::ZUrJ B#  k [ 3 m E bJ  r " X 0 f | U . 'Q!NJdkYMskQwIpIWlWkn:localhost:8800'Q!JnAKXOrlyisFUpgJPw:localhost:8800]&Q!OMkiVTuuOEeiFAXtUY:localhost:8800*&Q!JusxqeECtidaPlWqhp:localhost:8800K'Q!OXpGdKbowFUTChPdmF:localhost:8800X'Q!LazKtcHZriKzCvvGwV:localhost:8800&Q!OSHhtkGUjpUCkXwIhj:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800"'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800s&Q!KXMUzALpMMMKqoQXUS:localhost:8800t'Q!QkkdnzvdrjHaFGkzMt:localhost:8800p'Q!OCEHAjcOXWNyWIESIS:localhost:8800c&Q!OBWkjfrDCNgYFfblia:localhost:8800B'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800i'Q!MXhwoqNXvexeDDSOZT:localhost:8800_&Q!MWCLSWWGdWcSivNVLI:localhost:8800o'Q!TSFcaXDBqrCREHRHxv:localhost:8800{&Q!NfaPEGKjnUDUTavzol:localhost:8800s'Q!NeYaCeYNFATCqlrlGT:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!NboFFVLpJHTeuUKCjM:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!NcJYmIbgjsaKJOzBcs:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800'Q!OJilSqnQvLgoXSqRaW:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!NanhNmCnVVpmZRJrTF:localhost:8800n'Q!NajQnqYmGyTjxhFYar:localhost:8829&Q!NZHpBquHDfJAjiawGk:localhost:8800 &Q!NQgavrmiCPUVaVjssy:localhost:8800g'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800&Q!MlzmtUYSZOiByAZdKx:localhost:8800S'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800&Q!KxhGcTbEWmtgGNpdox:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800&Q!KeBlWUQiLYUoILKkTB:localhost:8800Z'Q!TeraguiGoZoeOGFzlI:localhost:8800&Q!TcaopYfMoJFEcjYRzJ:localhost:8800v&Q!TWETXUgfFZafDdbqLS:localhost:8800&&Q!SyIWYOmcGiASNkPCTB:localhost:8800;'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800K&Q!SBEprlZiuliFNSfNmz:localhost:8800-'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:8800('Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800/'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800D'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:88007'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800A&Q!OqPpVlCwmKdAUlwrXI:localhost:8800M&Q!OaCEdDAiatpwYcagUb:localhost:8800(  MeQ_$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 846}{"auth_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA", "$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "prev_events": ["$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg"], "type": "m.room.history_visibility", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041042008, "hashes": {"sha256": "EZUxAmzPrXTVDt7iVKnAEgx7wgF3C84rLZ7/5TBBYKQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G2qxz/yzTDDyHXg/O9dZMLutbld3zkaVxRD4jDyPnM02GihGyrEWWxB5RMD5OplgJJUyr8Tn8uT0m6YEsrdIDA"}}, "unsigned": {"age_ts": 1570041042008}}sLeQ_u$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 845}{"auth_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA", "$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "prev_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA"], "type": "m.room.join_rules", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041041001, "hashes": {"sha256": "9GafK9pCNZT+laJ8PRBgilvDUiVAjSi/GuCIpDI+fow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QIMmffl3DX1Vu8o2Yailc0331+FFjWGZTMqNDGcYg3ptfplmHgDCLwHwvIRvUlPZ8kY3Ukw5DCdNvGWHRdwFDQ"}}, "unsigned": {"age_ts": 1570041041001}}jKeQ_c$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 844}{"auth_events": ["$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "prev_events": ["$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"], "type": "m.room.power_levels", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"users": {"@anon-20191002_181700-184:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041040141, "hashes": {"sha256": "IdroYWOJOnDF5Gkde1Nrup+32p4X4IBgrdFwrXwuAgc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A6cP09N+rUhgat1txRRZMswOnYsQLnxBy63DAsuFYB1ePfQztHPU469/sWALNo60gwyUewYenqp1r5BDIbBWAg"}}, "unsigned": {"age_ts": 1570041040141}}uJeQ_y$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 843}{"auth_events": ["$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80"], "prev_events": ["$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80"], "type": "m.room.member", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-184", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-184:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041039402, "hashes": {"sha256": "KuhiiW1jgWDBG3pKkV/28JSjplk7lJE5L1YAGepKWSU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UH7FTc+Bz5hwuWuDSuqBeHjsHGQ27zcn4dOHop8Z/AAIbhCE3B2UI/Lqg3FHGxMgiUJ+YQvDeCkNtRbS1Db4BA"}}, "unsigned": {"age_ts": 1570041039402}} l|vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X 4 . ( "     z t n h b \ V P J D > 8 2 , &      f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.("                                     }  |  y  x  s  w  u  t  j  n  l  k  Z  e  b  a  T  `  ]  \  N  M  L  J  H  G  F  D  B  A  @  >  <  ;  :  8  6  5  4  2  0  /  .  -  ,  +  (  '  %  $  #  "  !                            Z                                                                                                                                                  }  |  y  x  w  u  t  s  n  l  k  j  e  b  a  `  ]  \  Z  T  N  M  L  J  H  G  F  D  B  A  @  >  <  ;  :  8  6  5  4  2  0  /  .  -  ,  +  (  '  %  $  #  "  !                                                                                                                                          :                                            ~  |  {  z  y  w  v  u  t  r  q  p  o  m  l  k  j  h  g  f  e  c  a  `  _  ]  Z  Y  W  V  U  S  P  O  N  M  K  H  G  F  E  C  ?  >  =  <  8  7  6  5  4  2  )  (  '  &  $  #  "  !                                                                                                                                                     ~ } | z x w v t r q p n l k j h f e d b ` _ ^ \ Z Y a} { y w u sqomkigeca~eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~~eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~}eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~|eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~{eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~zeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~yeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~xeeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~weeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~veeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~ueeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~teeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800~seeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~reeQ$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800~qeeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800~peeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~oeeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~neeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~meeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800~leeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~keeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~jeeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800 a} { y w u sqomkigeca~ieeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~heeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~geeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~feeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~eeeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~deeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~ceeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~beeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~aeeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~`eeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~_eeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800~^eeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800~]eeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~\eeQ$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800~[eeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800~ZeeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~YeeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800~XeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800~WeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~VeeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800~UeeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800~TeeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~SeeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800~ReeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800~QeeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~PeeQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800~OeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800~NeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800~MeeQ$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800~LeeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw!oznZaCpONuNDaLarkI:localhost:8800~KeeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800   jQeQ_c$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 850}{"auth_events": ["$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "prev_events": ["$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "type": "m.room.power_levels", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"users": {"@anon-20191002_181700-185:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041045868, "hashes": {"sha256": "rEMYK6glZ1gDxja3ffuCZBioHNjdDTgVq96qNYMJktg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c20PANK6DDb2vMpLKWm0N+sLTq8pURvyrPXQHZZJJ5mbBDx53L5dGiXRahVdKqeD3DmJmMlReHG+s44peNHIBQ"}}, "unsigned": {"age_ts": 1570041045868}}uPeQ_y$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 849}{"auth_events": ["$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM"], "prev_events": ["$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM"], "type": "m.room.member", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-185", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-185:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041045068, "hashes": {"sha256": "GUxMwwVWFnaX8cYxVa5KAyeIr8iqdVo/4ji62PdssYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E+tOaTXWGHM8RZnUnM1+AbiqlwGL0+x/RszmfJmr7pDrZ2mHzbMLvzfTbxHaEj/fncABxiya0BLhdU2Tp8tFCw"}}, "unsigned": {"age_ts": 1570041045068}}hOeQ__$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 848}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-185:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041044399, "hashes": {"sha256": "NqEpaFJ90ZzgVpHd1tXowOWezb0pUl3OsyEWNz9cDwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pLvGrstJQh7+JTAHqLqhmDJ6X2rqz515Ephzt0Ya36/4phyRmUTyyL6HHe8QU7u4fh8TExhEN+Nt5JozvxO9AQ"}}, "unsigned": {"age_ts": 1570041044399}} NeQ_!$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY!oznZaCpONuNDaLarkI:localhost:8800{"token_id": 205, "stream_ordering": 847}{"auth_events": ["$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA", "$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80", "$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg"], "prev_events": ["$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM"], "type": "m.room.member", "room_id": "!oznZaCpONuNDaLarkI:localhost:8800", "sender": "@anon-20191002_181700-184:localhost:8800", "content": {"membership": "join", "displayname": "LemurLover", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-184:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041043159, "hashes": {"sha256": "HMWtN6y7maYfLsSmI8uTeMb21cnRuAM4L1tNcH/M2pA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mvi7mO9wRYs1Y6N2BrOvRSoxjVUyP583odrlDaKlWAq4b6o0xLTRwhLIKxorL6vDXDhZlAFNB/jv/7mASd5DCA"}}, "unsigned": {"age_ts": 1570041043159, "replaces_state": "$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw"}} he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     ~}|{zzyxwvutsrrqponmmlkjihggfedcb``_^]\[ZZYYXWVUT~S}R|R{QzQyPxOwNvMuLtKsJrIqIpHoHnGmFlEkDjCiBhAg@f@e?d?c=b<a;`:_9^8]7\7[6Z6Y5X4W3V2U1T0S/R.Q-P,O+N     LKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! *M)L(K'J&I%H$G#F"E!D CBA@?>=<;:987654321 0 / . - ,+*)('&%$#"!  T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&     ~}|{zyxwvutsrqponml~k}|j|{i{zhzygyxfxwewvdvuctsbsrarq`qp_po^on]ml\lk[kjZjiYihXhgWgfVedUdcTcbSbaRa`Q`_P_^O][N\[M[ZLZYKYXJXWIWVHUTGTSFSRERQDQPCPOBONAML@LK?KJ>JI=IH<GF;FD:EC9DC8CB7BA6A@5@?4>=3=<2<;1;:0:9/98.87-65,54+43*32)21(10'/.&.-%-,$,+#+*")(!(' '&&%%$#""!!               ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ~~} }| |{ zy yx xwwvvuuttsrqqppoonmllk~kj}ji|ih{gfzfeyedxdcwcbva`u`_t_^s^]r]\q[ZpZYoYXnXWmWVlVUkUTjSRiRQhQPgPOfONeNMdMLcLKbJIaIH`HG_GF^FE]ED\DC[CBZA@Y@?X?=W>=V=<U<;T;:S:9R87Q76P65O54N43M32L21K10J/.I.-H-,G,+F+* Szqh_VMD;2) ~ulcZQH?6-$  y p g ^ U L C : 1 (    } s i _ U K A 7 - #    y o e [ Q G = 3 )     u k a W M C 9 / %    { q g ] S I ? 5 + !  wmcYOE;1' }si_UKA7-#yoe[QG=3) ukaWMC9/%{qg]SI?5+! wmcYOE;1'   a@ a> a< a: a8 a6 a4 a2 a/ a. a+ a* a' a& a# a" a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a} a| az ay aw av at as aq ap an am ak aj ai ag af ad ac aa a` a^ a] aZ aY aV aU aR aQ aN aM aJ aI aG aE aC aA a? a< a; a9 a7 a4 a3 a1 a0 a/ a- a+ a) a' a& a$ a# a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a aa}a|azaxauatarapanamalakajaiahagafaeadacabaaa`a_a^a]a\a[aZaYaXaVaTaRaPaNaLaJaHaFaEaDaBa@a>a<a:a7a6a4a2a1a0a/a-a,a+a*a)a(a'a&a%a$a#a"a!a aaaaaaaaaaaaa a aaaaaaa a >zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ,"|rh^TJ@6vlbXND:0&~tj~tj`VLB8.$qg]SI?5+~ aC a a a a a a a a a a a a0 a/ a. a+ a* a) a' a& a$ a# a" a! a a a a a a a a a a a` a^ a\ aZ aX aV aT aS aR aP aO aM aK aI aG aE+ a a a a a a a a} a{ ay aw av au at as ar ap am al a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a| a{ ax aw au as aq ao am ak ah ag ad ac aa a_ a] a[ aY aW aT aS aP aO aM aI aH aG a@ a? a> a= a< a; a7 a6 a5 a1 a0 a/ a+ a* a) a% a$ a# a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a~ a} a| az ax av at ar ap an al ai ah ae ad aa a` a^ a\ aZ aY aX aW aU aS aQ aP aM aL aJ aH aF aD aj ah af ad ab aB a@ a? a= a; a: a8 a7 a5 a4  hUeQ__$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 854}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-186:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041049715, "hashes": {"sha256": "bBibhWSGL3YtVCPTLOQWmmNmxDriukPuaHuASvwAAVk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k7tEjgCIVM7w3CHOyspGMJPBCdBrfL4TKewX1GDgZNnIZGKxNObk91PL8IS7XxB4osuPrF1pX6y7EbxMDf0XDg"}}, "unsigned": {"age_ts": 1570041049715}}TeQ_M$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 853}{"auth_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM", "$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY"], "prev_events": ["$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ"], "type": "m.room.member", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-185", "avatar_url": "LemurLover"}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-185:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041048236, "hashes": {"sha256": "s5E3C1TVFbefv2MwXTevuPhvuJJX9q7yQuNJzWLSt7w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1zH/lQBafJGGRT1v7p7aAWVPRs8LQ4GsnxFWpWP+X/F3zCW9WdaCxDoGOJ93OXJPylPzgANHx1JuySxENrcDw"}}, "unsigned": {"age_ts": 1570041048236, "replaces_state": "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"}}SeQ_$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 852}{"auth_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM", "$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "prev_events": ["$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY"], "type": "m.room.history_visibility", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041047109, "hashes": {"sha256": "t8mzuDm0W7W3mePGvENjNyCnrWWLAvV9R7g0STm8IRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yCpHu0c5NUMdyUbOKOnbQYdNyNNC/CMOcGQZL+SDiiStY7Ow5rzIsqTADqBmvsJYP5oBNMWkU6wnIXnog+6PAQ"}}, "unsigned": {"age_ts": 1570041047109}}sReQ_u$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800{"token_id": 206, "stream_ordering": 851}{"auth_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM", "$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM", "$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ"], "prev_events": ["$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM"], "type": "m.room.join_rules", "room_id": "!dnZVySJLGNtUKsSgXW:localhost:8800", "sender": "@anon-20191002_181700-185:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041046484, "hashes": {"sha256": "1DCUtbWRGqF8YTGYKR0pXbkWxfPiz1zSSYfFikSEbUw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4184kuKn2IBSWAPUA1KPpUrxPUuXPASDeBcO6HVpZ37bRiAzvAumTaFCcUKAXR+X3XsjurralcV/95vFl/O/CA"}}, "unsigned": {"age_ts": 1570041046484}} -RM H C > 9 4/*|%w rmhc T[Qe[!FPcQcheNebvdFvmOnr:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukTZQeZ!FPcQcheNebvdFvmOnr:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwTYQeY!FPcQcheNebvdFvmOnr:localhost:8800$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0TXQeX!FPcQcheNebvdFvmOnr:localhost:8800$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32LwTWQeW!FPcQcheNebvdFvmOnr:localhost:8800$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzITVQeV!FPcQcheNebvdFvmOnr:localhost:8800$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0ITUQeU!FPcQcheNebvdFvmOnr:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcTTQeT!FPcQcheNebvdFvmOnr:localhost:8800$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0TSQeS!vOfeZvbtpuHfoqShFl:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUTRQeR!vOfeZvbtpuHfoqShFl:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxITQQeQ!vOfeZvbtpuHfoqShFl:localhost:8800$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLITPQeP!vOfeZvbtpuHfoqShFl:localhost:8800$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsTOQeO!vOfeZvbtpuHfoqShFl:localhost:8800$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWETNQeN!vOfeZvbtpuHfoqShFl:localhost:8800$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoTMQeM!vOfeZvbtpuHfoqShFl:localhost:8800$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcTLQeL!vOfeZvbtpuHfoqShFl:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNoTKQeK!vOfeZvbtpuHfoqShFl:localhost:8800$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShITJQeJ!EieRtaCFZJJCIOkRPp:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsTIQeI!EieRtaCFZJJCIOkRPp:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QTHQeH!EieRtaCFZJJCIOkRPp:localhost:8800$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoTGQeG!EieRtaCFZJJCIOkRPp:localhost:8800$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GATFQeF!EieRtaCFZJJCIOkRPp:localhost:8800$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekTEQeE!EieRtaCFZJJCIOkRPp:localhost:8800$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFATDQeD!EieRtaCFZJJCIOkRPp:localhost:8800$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccTCQeC!EieRtaCFZJJCIOkRPp:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydETBQeB!EieRtaCFZJJCIOkRPp:localhost:8800$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUTAQeA!NQgavrmiCPUVaVjssy:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukT@Qe@!NQgavrmiCPUVaVjssy:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIT?Qe?!NQgavrmiCPUVaVjssy:localhost:8800$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86ToT>Qe>!NQgavrmiCPUVaVjssy:localhost:8800$FoUAmMH_0UK92eU5EB9Aa8u3hMKir0klOhiqwMhM1uYT=Qe=!NQgavrmiCPUVaVjssy:localhost:8800$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wT<Qe 9 4/*|%w rmhc TQe!FPcQcheNebvdFvmOnr:localhost:8800$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzITQe!FPcQcheNebvdFvmOnr:localhost:8800$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0ITQe!FPcQcheNebvdFvmOnr:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcTQe!FPcQcheNebvdFvmOnr:localhost:8800$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0TQe!vOfeZvbtpuHfoqShFl:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUTQe!vOfeZvbtpuHfoqShFl:localhost:8800$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmoTQe~!vOfeZvbtpuHfoqShFl:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxITQe}!vOfeZvbtpuHfoqShFl:localhost:8800$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcTQe|!vOfeZvbtpuHfoqShFl:localhost:8800$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLITQe{!vOfeZvbtpuHfoqShFl:localhost:8800$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsT~Qez!vOfeZvbtpuHfoqShFl:localhost:8800$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWET}Qey!vOfeZvbtpuHfoqShFl:localhost:8800$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoT|Qex!vOfeZvbtpuHfoqShFl:localhost:8800$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcT{Qew!vOfeZvbtpuHfoqShFl:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNoTzQev!vOfeZvbtpuHfoqShFl:localhost:8800$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShITyQeu!EieRtaCFZJJCIOkRPp:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsTxQet!EieRtaCFZJJCIOkRPp:localhost:8800$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70TwQes!EieRtaCFZJJCIOkRPp:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QTvQer!EieRtaCFZJJCIOkRPp:localhost:8800$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMTuQeq!EieRtaCFZJJCIOkRPp:localhost:8800$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoTtQep!EieRtaCFZJJCIOkRPp:localhost:8800$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GATsQeo!EieRtaCFZJJCIOkRPp:localhost:8800$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekTrQen!EieRtaCFZJJCIOkRPp:localhost:8800$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFATqQem!EieRtaCFZJJCIOkRPp:localhost:8800$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccTpQel!EieRtaCFZJJCIOkRPp:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEToQek!EieRtaCFZJJCIOkRPp:localhost:8800$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUTnQej!NQgavrmiCPUVaVjssy:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9PrukTmQei!NQgavrmiCPUVaVjssy:localhost:8800$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkTlQeh!NQgavrmiCPUVaVjssy:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbITkQeg!NQgavrmiCPUVaVjssy:localhost:8800$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqITjQef!NQgavrmiCPUVaVjssy:localhost:8800$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86ToTiQee!NQgavrmiCPUVaVjssy:localhost:8800$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wThQed!NQgavrmiCPUVaVjssy:localhost:8800$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0TgQec!NQgavrmiCPUVaVjssy:localhost:8800$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzITfQeb!NQgavrmiCPUVaVjssy:localhost:8800$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0TeQea!NQgavrmiCPUVaVjssy:localhost:8800$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gTdQe`!hgjYwwwjWJNgwrzOto:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcTcQe_!hgjYwwwjWJNgwrzOto:localhost:8800$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQTbQe^!hgjYwwwjWJNgwrzOto:localhost:8800$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMTaQe]!hgjYwwwjWJNgwrzOto:localhost:8800$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAT`Qe\!hgjYwwwjWJNgwrzOto:localhost:8800$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgT_Qe[!hgjYwwwjWJNgwrzOto:localhost:8800$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQT^QeZ!hgjYwwwjWJNgwrzOto:localhost:8800$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kT]QeY!hgjYwwwjWJNgwrzOto:localhost:8800$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksT\QeX!hgjYwwwjWJNgwrzOto:localhost:8800$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM ~z v r n j fb^ZVRNJFeeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800eeQ$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800eeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800eeQ$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800eeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800~eeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800}eeQ$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800|eeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ!hgjYwwwjWJNgwrzOto:localhost:8800{eeQ$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800zeeQ$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800yeeQ$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800xeeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800weeQ$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k!hgjYwwwjWJNgwrzOto:localhost:8800veeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800ueeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800teeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800 ( .(\eQw$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "txn_id": "65", "stream_ordering": 861}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg"], "type": "m.room.message", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041056800, "hashes": {"sha256": "Do1FiyzsKXhl0dF3pgWxvNuCVD0CsFIOj5v1ktgAi1I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pkVmW0pwkcN9If91/LJdnm7rfkroTG8s//czw9hlrYcU/EV/8oW/cu5EAU+A5vqCQ/v7MRlYrLmNAnjgzdDrCg"}}, "unsigned": {"age_ts": 1570041056800}}z[eQ_$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 860}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ"], "type": "m.room.guest_access", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041056050, "hashes": {"sha256": "nZ2ytDfJUtge/hfj3kXpgLgBw7rJE9eD8GLd7+EN2UI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lnD5vrMhAJfug86LATMart012F1VNxAH15GzNBYj3T8aOVSOY3X2+X6ynk5ZKW7cUSaZs5xqkRybeSZ01rdEDw"}}, "unsigned": {"age_ts": 1570041056050}}NZeQ_+$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 859}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k"], "type": "m.room.history_visibility", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041054930, "hashes": {"sha256": "A02ue7fWkB3w+o3TYYg7w+BnlwQdtcCgdv5qhQoTh0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wkJFYPuGoYX8sepqicIhRXkuD8naj2Yqrki35Sduk2QYCEZURjOJgvohUW6VHrB8w/JU4zxKZEORkPvHqIyJBA"}}, "unsigned": {"age_ts": 1570041054930, "replaces_state": "$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k"}} D  0Dh`eQ__$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 865}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-187:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041061226, "hashes": {"sha256": "ilrBTD4mmG6EpBdKe4OfqQUxYN6tf5iujBcy6NvskCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZlB67k+9Wc3FiZF4jiHBOVORPSo4cjGaQaoXvNUaTv7856bVMpy0Xm0/QWUezTumQlhPiAttm9q0+bic57oGCw"}}, "unsigned": {"age_ts": 1570041061226}}V_eQ=]$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800{"stream_ordering": 864}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks"], "prev_events": ["$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ"], "type": "m.room.member", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@13:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "13", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@13:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041058677, "hashes": {"sha256": "oBtGJLuG+NDNOkETbPXea6ahSoHp5Shq3wN6v7XpWn8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y9oyTVfiyyys67BUbMYAanZJMf+N0XHU4N7xYfRC45hFdgqOjT8CsxDO+nzzz6l0Tq8kB/SOBx3md6vIxY3JCQ"}}, "unsigned": {"age_ts": 1570041058677, "replaces_state": "$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM"}}^eQ{$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "txn_id": "66", "stream_ordering": 863}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM"], "type": "m.room.message", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041058131, "hashes": {"sha256": "E0l9WPXNt686Js1q0U47g4d2KafTCrZcdU3pGCX53zA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tajMNjOdVCh+MZhjP6G83cHER287Dud343h9yVv6Nxq34ENdPRXdpBHc6Ka9fygatWTu5XVb21tRQnGGEyPSDQ"}}, "unsigned": {"age_ts": 1570041058131}}h]eQ__$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800{"token_id": 207, "stream_ordering": 862}{"auth_events": ["$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM", "$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70", "$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks", "$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0"], "prev_events": ["$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA"], "type": "m.room.member", "room_id": "!hgjYwwwjWJNgwrzOto:localhost:8800", "sender": "@anon-20191002_181700-186:localhost:8800", "content": {"membership": "invite", "displayname": "13", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@13:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041057479, "hashes": {"sha256": "8pC+seXwcB8MzHfaE5qyvu8N8hZXiI07orhao9FdhRY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mEdMR/0RlYyzsxJeC1kBcqm/AoR6sWM+jZ1SQlO5g4wnWoApqU8g5bethT409C9b9JKwWS+rmSmK2nfCKV0kAg"}}, "unsigned": {"age_ts": 1570041057479, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-186:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-186:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-186", "avatar_url": null}, "sender": "@anon-20191002_181700-186:localhost:8800"}]}} ;c z . E #\:sW;Ce e]]Q=$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4@anon-20191002_181700-200:localhost:8800@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800joinanon-20191002_181700-200Cd e]]Q=$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps@anon-20191002_181700-199:localhost:8800@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800joinanon-20191002_181700-199Cc e]]Q=$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0@anon-20191002_181700-198:localhost:8800@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800joinanon-20191002_181700-198Cb e]]Q=$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI@anon-20191002_181700-197:localhost:8800@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800joinanon-20191002_181700-197Ca e]]Q=$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c@anon-20191002_181700-195:localhost:8800@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800joinanon-20191002_181700-195C` e]]Q=$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE@anon-20191002_181700-194:localhost:8800@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800joinanon-20191002_181700-194C_ e]]Q=$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ@anon-20191002_181700-193:localhost:8800@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800joinanon-20191002_181700-193C^ e]]Q=$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM@anon-20191002_181700-192:localhost:8800@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800joinanon-20191002_181700-192C] e]]Q=$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw@anon-20191002_181700-191:localhost:8800@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800joinanon-20191002_181700-191\ e11Q$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk@17:localhost:8800@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800join17[ e1]Q$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw@17:localhost:8800@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800invite17CZ e]]Q=$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc@anon-20191002_181700-190:localhost:8800@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800joinanon-20191002_181700-190Y e11Q$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU@16:localhost:8800@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800join16X e1]Q$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI@16:localhost:8800@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800invite16CW e]]Q=$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo@anon-20191002_181700-189:localhost:8800@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800joinanon-20191002_181700-189V e11Q$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps@15:localhost:8800@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800join15U e1]Q$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q@15:localhost:8800@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800invite15CT e]]Q=$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE@anon-20191002_181700-188:localhost:8800@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800joinanon-20191002_181700-188S e11Q$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk@14:localhost:8800@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800join14R e1]Q$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI@14:localhost:8800@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800invite14CQ e]]Q=$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0@anon-20191002_181700-187:localhost:8800@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800joinanon-20191002_181700-187P e11Q$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc@13:localhost:8800@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800join13O e1]Q$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM@13:localhost:8800@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800invite13 6Nd-r 0 {  e * H  SX!DRW CQ~NRQ'E!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455 BQ? !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.history_visibility :Q/ !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.join_rules ^Q']!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@anon-20191002_181700-675:localhost:8800 6Q' !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.create <Q3 !nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels ^Q']!nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800 :Q/ !nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rules BQ? !nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibility 6Q' !nfxDdcgDfooxyiAzaB:localhost:8800m.room.create <Q3 !nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels^Q']!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800:Q/ !nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rulesBQ? !nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibility6Q' !nftGLlLhVgzOwOFufp:localhost:8800m.room.create<Q3 !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels^Q']!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829^Q']!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800:Q/ !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rulesBQ? !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibility6Q' !mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create<Q3 !msMfSdLIAvklSSAnci:localhost:8800m.room.power_levels^Q']!msMfSdLIAvklSSAnci:localhost:8800m.room.member@anon-20191002_181700-115:localhost:8800:Q/ !msMfSdLIAvklSSAnci:localhost:8800m.room.join_rulesBQ? !msMfSdLIAvklSSAnci:localhost:8800m.room.history_visibility6Q' !msMfSdLIAvklSSAnci:localhost:8800m.room.create<Q3 !mogJVPxghalmKbblUq:localhost:8800m.room.power_levels^Q']!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800^Q']!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800:Q/ !mogJVPxghalmKbblUq:localhost:8800m.room.join_rulesBQ? !mogJVPxghalmKbblUq:localhost:8800m.room.history_visibility6Q' !mogJVPxghalmKbblUq:localhost:8800m.room.create?Q9 !mogJVPxghalmKbblUq:localhost:8800m.room.canonical_aliasEQ))!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800<Q3 !mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels^Q']!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800:Q/ !mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rulesBQ? !mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility6Q' !mfzIRinBAGGrZvQAuI:localhost:8800m.room.create<Q3 !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels^Q']!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800:Q/ !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rulesBQ? !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibility6Q' !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.createVQ3A!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_changeNQ31!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes<Q3 !mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels^Q']!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800:Q/ !mOrKBPhetifKHDmElM:localhost:8800m.room.join_rulesBQ? !mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility<Q3 !mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access6Q' !mOrKBPhetifKHDmElM:localhost:8800m.room.create<Q3 !mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels^Q']!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800 nZc  2 % ( J='O<VILnp-Q? e!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibility$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lwh,Q/ e!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rules$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIj+Q3 e!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I *Q']e!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcd)Q' e!FPcQcheNebvdFvmOnr:localhost:8800m.room.create$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0"(Q'1ee!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIv'Q'1e~!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIj&Q3 e|!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_access$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI%Q? ee{!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEp$Q? ez!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEh#Q/ ey!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rules$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoj"Q3 ex!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc !Q']ew!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNod Q' ev!vOfeZvbtpuHfoqShFl:localhost:8800m.room.create$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"Q'1eeu!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QvQ'1es!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QjQ3 eq!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_access$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoQ? eep!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekpQ? eo!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekhQ/ en!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rules$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAjQ3 em!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc Q']el!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEdQ' ek!EieRtaCFZJJCIOkRPp:localhost:8800m.room.create$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU"Q'1eej!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIvQ'1eh!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIjQ3 ef!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_access$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86TopQ? ee!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7whQ/ ed!NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rules$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0jQ3 ec!NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI Q']eb!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0dQ' ea!NQgavrmiCPUVaVjssy:localhost:8800m.room.create$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g"Q'1ee`!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM ^ h  i LJKt.&xe3Q ]$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcm.room.power_levels!vOfeZvbtpuHfoqShFl:localhost:8800mm @anon-20191002_181700-189:localhost:8800 we'Q ]$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNom.room.member!vOfeZvbtpuHfoqShFl:localhost:8800mmA@anon-20191002_181700-189:localhost:8800v e'Q  ]$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIm.room.create!vOfeZvbtpuHfoqShFl:localhost:8800mm@anon-20191002_181700-189:localhost:8800 ue'Q 1 $1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpsm.room.member!EieRtaCFZJJCIOkRPp:localhost:8800 mVm@15:localhost:8800!te)Q ] $FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70m.room.message!EieRtaCFZJJCIOkRPp:localhost:8800 mm@anon-20191002_181700-188:localhost:8800 se'Q ] $f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qm.room.member!EieRtaCFZJJCIOkRPp:localhost:8800 mmr@anon-20191002_181700-188:localhost:8800!re)Q ]$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeMm.room.message!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800&qe3Q ]$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYom.room.guest_access!EieRtaCFZJJCIOkRPp:localhost:8800mkm @anon-20191002_181700-188:localhost:8800,pe?Q ]$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAm.room.history_visibility!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800,oe?Q ]$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekm.room.history_visibility!EieRtaCFZJJCIOkRPp:localhost:8800m&m@anon-20191002_181700-188:localhost:8800$ne/Q ]$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAm.room.join_rules!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800&me3Q ]$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccm.room.power_levels!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800 le'Q ]$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEm.room.member!EieRtaCFZJJCIOkRPp:localhost:8800m$m@anon-20191002_181700-188:localhost:8800k e'Q  ]$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUm.room.create!EieRtaCFZJJCIOkRPp:localhost:8800mm@anon-20191002_181700-188:localhost:8800 je'Q 1 $wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukm.room.member!NQgavrmiCPUVaVjssy:localhost:8800 mmw@14:localhost:8800!ie)Q ] $qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkm.room.message!NQgavrmiCPUVaVjssy:localhost:8800 mWm\@anon-20191002_181700-187:localhost:8800 he'Q ]$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIm.room.member!NQgavrmiCPUVaVjssy:localhost:8800mmT@anon-20191002_181700-187:localhost:8800!ge)Q ]$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIm.room.message!NQgavrmiCPUVaVjssy:localhost:8800mm@anon-20191002_181700-187:localhost:8800&fe3Q ]$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tom.room.guest_access!NQgavrmiCPUVaVjssy:localhost:8800mm(@anon-20191002_181700-187:localhost:8800,ee?Q ]$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wm.room.history_visibility!NQgavrmiCPUVaVjssy:localhost:8800mw.mz@anon-20191002_181700-187:localhost:8800$de/Q ]$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0m.room.join_rules!NQgavrmiCPUVaVjssy:localhost:8800mqImtZ@anon-20191002_181700-187:localhost:8800&ce3Q ]$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIm.room.power_levels!NQgavrmiCPUVaVjssy:localhost:8800mgmj@anon-20191002_181700-187:localhost:8800 be'Q ]$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0m.room.member!NQgavrmiCPUVaVjssy:localhost:8800mcmc@anon-20191002_181700-187:localhost:8800a e'Q  ]$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gm.room.create!NQgavrmiCPUVaVjssy:localhost:8800m_jm_@anon-20191002_181700-187:localhost:8800  D r   ) W} 9)KPx05]ywueQ'1$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800joingteQ3 $zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_accessmseQ? $gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibilityereQ/ $SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rulesgqeQ3 $jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels peQ']$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800joinaoeQ' $ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.createwneQ'1$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800joingmeQ3 $e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_accessmleQ? $Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibilitywgeQ'1$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800joingfeQ3 $wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_accessmeeQ? $2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibilityedeQ/ $gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rulesgceQ3 $pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels beQ']$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800joinaaeQ' $bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800m.room.createw`eQ'1$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800joing_eQ3 $JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_accessm^eQ? $QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibilitye]eQ/ $9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rulesg\eQ3 $8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels [eQ']$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800joinaZeQ' $EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70!hgjYwwwjWJNgwrzOto:localhost:8800m.room.createekeQ/ $MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rulesgjeQ3 $VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels ieQ']$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800joinaheQ' $FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800m.room.create 8y6|A 2 J R  = l (e(MbHt/k`$4p9 Q !fsbkkRBZlUcBVVfMME:localhost:8800publicshared9 Q !bzPCFeFSMbCESvNbxl:localhost:8800publicshared9 Q !PCgUmZOwWmtDsuFqXg:localhost:8800publicshared9 Q !nxLxsxzliamzflrEBs:localhost:8800publicshared9 Q !RPfffkmSEbWggEjnoI:localhost:8800publicshared9 Q !egbhiBqOGhloZzopol:localhost:8800publicshared9 Q !KdOYYnOuwAyQzqwUki:localhost:8800inviteshared9 Q !XNfwczePlyYFWLCaui:localhost:8800publicshared9 Q !PQZMTVTeCYqMZwkHvW:localhost:8800publicshared9 Q !kpTPWDZdBbbXKLonZK:localhost:8800publicshared9 Q !ITdmSQpjMnaPoHIbws:localhost:8800publicsharedT QC !FAYqpziHeVZugCGaij:localhost:8800#__ANON__-12:localhost:8800publicshared9 Q !ZaOktTIVeRgBXxfubH:localhost:8800publicsharedA Q !ZaltdIYVZjCHsCWTZD:localhost:8800publicsharedcan_joinA Q !kwXxkGQFkaeenFTQJr:localhost:8800publicjoinedcan_joinB Q !EMhFCPhwmnWVnjtXXM:localhost:8800publicinvitedcan_joinA Q !GGXyLHdVXqhQjPRvac:localhost:8800publicsharedcan_joinI Q) !IfYYyzLHSOeyJBxBfn:localhost:8800publicworld_readablecan_joinA Q !ZYKvjplZRyIWvzkRyM:localhost:8800publicsharedcan_joinI Q) !ROoilpDjLJfjKfSPIi:localhost:8800publicworld_readablecan_joinh Q[) !wsvXTJXouVkEZcCFsD:localhost:8800#test-20191002_181700-39:localhost:8800publicworld_readable` Q[ !DoiZErAdypBUMZKaeJ:localhost:8800#test-20191002_181700-38:localhost:8800publicsharedA Q) !qSUSLLWjDxcGibUZdT:localhost:8800publicworld_readableA Q) !RmwbYvIIQyPlHlClty:localhost:8800publicworld_readable` Q[ !SvKwEALYoNreUvqAlp:localhost:8800#test-20191002_181700-37:localhost:8800publicshared` Q[ !fOJLpnbtgKNxxVDquX:localhost:8800#test-20191002_181700-36:localhost:8800publicshared9 Q !vAUAIZrCnHTeMGeNuw:localhost:8800publicshared9 Q !EfJcWhdjNARbuHYrqU:localhost:8800publicjoined: Q !vRRNxNyGboLHNhqQvr:localhost:8800publicinvited9 Q !NFWKQvZkIwvecnREOC:localhost:8800publicsharedA Q !IPYMCBwcyNIzqdiIWv:localhost:8800publicsharedcan_joinA Q !HZqzpRgqekPOtxstVc:localhost:8800publicjoinedcan_joinB~ Q !FklhVuCInffbDxunWv:localhost:8800publicinvitedcan_joinA} Q !eJPTUgihvSwaOhIkrC:localhost:8800publicsharedcan_joinI| Q) !sfXbvAcOUJhzGwWEpZ:localhost:8800publicworld_readablecan_joinA{ Q !YufaOfAlruTdjyUCwO:localhost:8800publicsharedcan_joinAz Q !ifQxHmNAcSSGHVMjfi:localhost:8800publicjoinedcan_joinBy Q !EABRjdYuYumMhLSwIa:localhost:8800publicinvitedcan_joinAx Q !FIOuvzpMhoERunVYYA:localhost:8800publicsharedcan_joinIw Q) !zNBpypJDRMlBdOcLlW:localhost:8800publicworld_readablecan_joinAv Q !TcaopYfMoJFEcjYRzJ:localhost:8800publicsharedcan_joinIu Q) !BckZfhQgrcyiMhEAAJ:localhost:8800publicworld_readablecan_joinht Q[) !KXMUzALpMMMKqoQXUS:localhost:8800#test-20191002_181700-35:localhost:8800publicworld_readable`s Q[ !NfaPEGKjnUDUTavzol:localhost:8800#test-20191002_181700-34:localhost:8800publicsharedAr Q) !JGhlAUflyNxErGGZZu:localhost:8800publicworld_readableAq Q) !tkajvIKHoOMWGsReBs:localhost:8800publicworld_readablehp Q[) !fcdNYFWFyxmdpKAknc:localhost:8800#test-20191002_181700-33:localhost:8800publicworld_readableho Q[) !MWCLSWWGdWcSivNVLI:localhost:8800#test-20191002_181700-32:localhost:8800publicworld_readable9n Q !erBPdgtUsiOfIKUkho:localhost:8800publicshared9m Q !dWgOTucBVQBKZjfndN:localhost:8800publicjoined:l Q !hSzBsirdPWHtVjagXn:localhost:8800publicinvited9k Q !mfzIRinBAGGrZvQAuI:localhost:8800publicsharedAj Q !FPcQcheNebvdFvmOnr:localhost:8800publicsharedcan_joinAi Q !vOfeZvbtpuHfoqShFl:localhost:8800publicjoinedcan_joinBh Q !EieRtaCFZJJCIOkRPp:localhost:8800publicinvitedcan_joinAg Q !NQgavrmiCPUVaVjssy:localhost:8800publicsharedcan_join Jo3f% X .  e ) E  | @  a }Wx7n2d#V0c'ZL"9 ]@anon-20191002_181700-209:localhost:8800a&\9 ]@anon-20191002_181700-210:localhost:8800a&\' 1  @34:localhost:8800m&\%> ]  @anon-20191002_181700-208:localhost:8800m&\ 9 ]@anon-20191002_181700-208:localhost:8800a&\# 1@34:localhost:8800a&\' 1  @33:localhost:8800m&\&> ]  @anon-20191002_181700-207:localhost:8800m&\ [9 ]@anon-20191002_181700-207:localhost:8800a&\# 1@33:localhost:8800a&\' 1  @32:localhost:8800m&\&> ]  @anon-20191002_181700-206:localhost:8800m&\ \9 ]@anon-20191002_181700-206:localhost:8800a&\# 1@32:localhost:8800a&\' 1  @31:localhost:8800m&\%> ]  @anon-20191002_181700-205:localhost:8800m&\ 9 ]@anon-20191002_181700-205:localhost:8800a&\# 1@31:localhost:8800a&\' 1  @30:localhost:8800m&\&> ]  @anon-20191002_181700-204:localhost:8800m&\ c9 ]@anon-20191002_181700-204:localhost:8800a&\# 1@30:localhost:8800a&\> ]  @anon-20191002_181700-203:localhost:8800m&\>9 ]@anon-20191002_181700-203:localhost:8800a&\# 1@29:localhost:8800a&\( 1@28:localhost:8800m&\>~ ]  @anon-20191002_181700-202:localhost:8800m&\9} ]@anon-20191002_181700-202:localhost:8800a&\#| 1@28:localhost:8800a&\>{ ]  @anon-20191002_181700-201:localhost:8800m&\ 9z ]@anon-20191002_181700-201:localhost:8800a&\#y 1@27:localhost:8800a&\>x ]  @anon-20191002_181700-200:localhost:8800m&\j9w ]@anon-20191002_181700-200:localhost:8800a&\#v 1@26:localhost:8800a&\>u ]  @anon-20191002_181700-199:localhost:8800m&\9t ]@anon-20191002_181700-199:localhost:8800a&\#s 1@25:localhost:8800a&\>r ]  @anon-20191002_181700-198:localhost:8800m&\9q ]@anon-20191002_181700-198:localhost:8800a&\#p 1@24:localhost:8800a&\>o ]  @anon-20191002_181700-197:localhost:8800m&\ 9n ]@anon-20191002_181700-197:localhost:8800a&\#m 1@23:localhost:8800a&\>l ]  @anon-20191002_181700-195:localhost:8800m&\ 9k ]@anon-20191002_181700-196:localhost:8800a&\9j ]@anon-20191002_181700-195:localhost:8800a&\#i 1@22:localhost:8800a&\>h ]  @anon-20191002_181700-194:localhost:8800m&\19g ]@anon-20191002_181700-194:localhost:8800a&\#f 1@21:localhost:8800a&\>e ]  @anon-20191002_181700-193:localhost:8800m&\x9d ]@anon-20191002_181700-193:localhost:8800a&\#c 1@20:localhost:8800a&\>b ]  @anon-20191002_181700-192:localhost:8800m&\y9a ]@anon-20191002_181700-192:localhost:8800a&\#` 1@19:localhost:8800a&\>_ ]  @anon-20191002_181700-191:localhost:8800m&\19^ ]@anon-20191002_181700-191:localhost:8800a&\#] 1@18:localhost:8800a&\'\ 1  @17:localhost:8800m&\h>[ ] @anon-20191002_181700-190:localhost:8800m&\ 9Z ]@anon-20191002_181700-190:localhost:8800a&\#Y 1@17:localhost:8800a&\'X 1  @16:localhost:8800m&\h>W ] @anon-20191002_181700-189:localhost:8800m&\ Z9V ]@anon-20191002_181700-189:localhost:8800a&\#U 1@16:localhost:8800a&\'T 1  @15:localhost:8800m&\h>S ] @anon-20191002_181700-188:localhost:8800m&\ [9R ]@anon-20191002_181700-188:localhost:8800a&\#Q 1@15:localhost:8800a&\'P 1  @14:localhost:8800m&\h>O ] @anon-20191002_181700-187:localhost:8800m&\   deQ_$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 869}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0"], "type": "m.room.history_visibility", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041067310, "hashes": {"sha256": "zCVSLos5ty3/chyLwhR/6dEkaoW1MXfTTWEDv8RE2j8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R9kId2FYiq9zjKDfsDu/IHg+bxZvf+LRvizcG3ph+Utkuf3e3NlLYsMKIJUVt2wcvyP8T7te+Sdt+hvH7LcQDQ"}}, "unsigned": {"age_ts": 1570041067310}}sceQ_u$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 868}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI"], "type": "m.room.join_rules", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041065801, "hashes": {"sha256": "cbmlDOoWJYNfyc2hsEHPlYe12fCdCMPlmGE/OoTjEhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZCjBRZjZAPF4rsCfaOvkVuAuPTSkQv05ZlmgpnVChAjnUsQL8tOL+roWtuvzjsWe5Jx57hpbhMmhSa83YoHSCw"}}, "unsigned": {"age_ts": 1570041065801}}jbeQ_c$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 867}{"auth_events": ["$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "type": "m.room.power_levels", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"users": {"@anon-20191002_181700-187:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041063168, "hashes": {"sha256": "FBSbX8rfdSTulZIXe/bQU6o2a4tJQb12OYLuTHKxhQo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cEqxH4uDFoueQmYZ+t0zE2tLdsX/3CIM0h4tK0Mg00XDWxsaM2NuSI4bUL7hJHQLxx5EyBszOCklwxikBXltBQ"}}, "unsigned": {"age_ts": 1570041063168}}uaeQ_y$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 866}{"auth_events": ["$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g"], "prev_events": ["$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g"], "type": "m.room.member", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-187", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-187:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041062158, "hashes": {"sha256": "l3ivMME6PlDDOC+N2i59j5BIUBvKP7sVSY0hZgq68nA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NfJQmYfWJmmCCHRISjMRNxHsmd70iIhcluoqp2xY2//5XH4pnNhPJ6MBqLrtAXsTRmW/JRlp1hjgvdwQqkprDw"}}, "unsigned": {"age_ts": 1570041062158}} Nj8p? x F  ~ L  R X & ^ ,d2j8p> vD|JPV$]+11e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwb1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58(1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s U0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kkb1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM81e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ051e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM11e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMR1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs{1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccm1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikC1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8P1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws'1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 =1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncZ1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wW1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU 1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU 1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY*1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AF1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0D1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls}1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U\1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs 1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gv1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUG1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM:1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw F1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 71e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQk1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMU1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw ,0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw?1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 d1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkB1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE)1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk "1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly081e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc  hgeQ__$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 872}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI"], "type": "m.room.member", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"membership": "invite", "displayname": "14", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@14:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041071337, "hashes": {"sha256": "6UzxzPxrarmeH03Xu8UeUt7Mp8Yy0YNcW4Mc9TAq4dY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HCv7KxO3+g2VIntxLrIm90aswZksnBRV8iyzT5a8J0SdE1TbfDIS/Bhm6NEnN8OxMU0gAdVkQbrhKBAoKKFFAw"}}, "unsigned": {"age_ts": 1570041071337, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-187:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-187:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-187", "avatar_url": null}, "sender": "@anon-20191002_181700-187:localhost:8800"}]}}feQw$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "txn_id": "67", "stream_ordering": 871}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To"], "type": "m.room.message", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041070293, "hashes": {"sha256": "PMp0KYW9wIehdhNwomgSvoaZST1Gjz0JQrczuxuUgfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v8aT/v+PTsQbDO4sHlWVR8BtA/TkLFd7ZSqJr0OwrK+LHOKANcyINz7Olu4+//wO9jp9saKyNSFPXuLZGsMuAg"}}, "unsigned": {"age_ts": 1570041070293}}zeeQ_$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "stream_ordering": 870}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w"], "type": "m.room.guest_access", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041069504, "hashes": {"sha256": "LXN+mqXt1nfxJH3gumqIyNQyXu37Mt/Vqduxjpk0oho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "grrA83D0QyJBNsd4pnXG7fy22Xm8asXIMewZcVKC6Y9MFPC1mBp+8ZLNdaDeXUvQT78wYAwEsYqFy6Lb0+8ZDw"}}, "unsigned": {"age_ts": 1570041069504}} *w1Y A ]  y - U w +Sn-Rw*aP{.{{EU ]V@anon-20191002_181700-148:localhost:8829offlinem>m?S ]U@anon-20191002_181700-147:localhost:8829offlinem?R ]U@anon-20191002_181700-139:localhost:8829offlinemEO ]P@anon-20191002_181700-128:localhost:8800offlinemmKN ] P@anon-20191002_181700-127:localhost:8800offlinemmwmEJ ]K@anon-20191002_181700-126:localhost:8800offlinemmEI ]J@anon-20191002_181700-123:localhost:8800offlinemmKH ] I@anon-20191002_181700-115:localhost:8800offlinem*mfm˙KG ] H@anon-20191002_181700-114:localhost:8800offlinemmRmEF ]G@anon-20191002_181700-119:localhost:8800offlinem)m)EE ]F@anon-20191002_181700-117:localhost:8800offlinemm?B ]C@anon-20191002_181700-111:localhost:8829offlinemIKA ] B@anon-20191002_181700-100:localhost:8800offlinem$m|m&J? [ @@anon-20191002_181700-96:localhost:8800offlinemmmyJ= [ >@anon-20191002_181700-90:localhost:8800offlinemmmD9 [:@anon-20191002_181700-75:localhost:8800offlinemmZJ8 [ 9@anon-20191002_181700-74:localhost:8800offlinemFm$mGD7 [8@anon-20191002_181700-72:localhost:8829offlinemmJ6 [ 7@anon-20191002_181700-70:localhost:8800offlinemmmJ5 [ 7@anon-20191002_181700-71:localhost:8800offlinemmmD4 [ 5@anon-20191002_181700-61:localhost:8800offlinem^mZJ3 [ 5@anon-20191002_181700-67:localhost:8800offlinemimZmJD2 [ 5@anon-20191002_181700-60:localhost:8800offlinem\mZD0 [1@anon-20191002_181700-66:localhost:8829offlinemmZJ. [ /@anon-20191002_181700-65:localhost:8800offlinemm3m\J, [ -@anon-20191002_181700-64:localhost:8800offlinemCm \mJ# [ $@anon-20191002_181700-59:localhost:8800offlinemZm<mZJ" [ #@anon-20191002_181700-52:localhost:8800offlinemBmmCJ! [ #@anon-20191002_181700-53:localhost:8800offlinemFmmG J [ #@anon-20191002_181700-48:localhost:8800offlinem7mm8/J [ @anon-20191002_181700-35:localhost:8800offlinemOm] mJ [ @anon-20191002_181700-34:localhost:8800offlinemɧmImͩD [@anon-20191002_181700-39:localhost:8800offlinem!m!D [@anon-20191002_181700-38:localhost:8800offlinemmD [@anon-20191002_181700-36:localhost:8800offlinemmD [ @anon-20191002_181700-33:localhost:8800offlinem m D [ @anon-20191002_181700-32:localhost:8800offlinemGmGJ [ @anon-20191002_181700-16:localhost:8800offlinemmmD [ @anon-20191002_181700-31:localhost:8800offlinem>m>D [ @anon-20191002_181700-15:localhost:8800offlinemm4J [ @anon-20191002_181700-11:localhost:8800offlinemm|m9; = @spyglass:localhost:8800offlinempmmqS ,5k*lX G | 3 x / B w (}4iGl#Ha;F> ]@anon-20191002_181700-222:localhost:8800offlinemmL= ] @anon-20191002_181700-214:localhost:8800offlinem+,mdm+5Kh ] j@anon-20191002_181700-179:localhost:8800offlinemNm4mEd ]h@anon-20191002_181700-181:localhost:8800offlinemݠmԵ?] ]^@anon-20191002_181700-166:localhost:8829offlinem.K\ ] ]@anon-20191002_181700-165:localhost:8800offlinemmmKZ ] [@anon-20191002_181700-161:localhost:8800offlinemmm].W /X@3:localhost:8800offlinemmKV ] W@anon-20191002_181700-146:localhost:8800offlinem qmmL< ] @anon-20191002_181700-212:localhost:8800offlinem mm F: ]@anon-20191002_181700-220:localhost:8800offlinem~m~L6 ] @anon-20191002_181700-210:localhost:8800offlinemhmSDm 61 1 @34:localhost:8800offlinemCm$m;F- ]@anon-20191002_181700-206:localhost:8800offlinemmݤF, ]@anon-20191002_181700-208:localhost:8800offlinempmiF+ ]@anon-20191002_181700-207:localhost:8800offlinem9m%D6( 1 @33:localhost:8800offlinem;tmm=6% 1 @32:localhost:8800offlinem|m|lm6" 1 @31:localhost:8800offlinemm.LmbL ] @anon-20191002_181700-201:localhost:8800offlinem8mm6 1 @30:localhost:8800offlinemwTmmzYF ]@anon-20191002_181700-204:localhost:8800offlinemvmkF ]@anon-20191002_181700-205:localhost:8800offlinemmL ] @anon-20191002_181700-197:localhost:8800offlinemkm~mL ] @anon-20191002_181700-195:localhost:8800offlinem-mWtmi(L ] @anon-20191002_181700-196:localhost:8800offlinemmWtmizF ]@anon-20191002_181700-200:localhost:8800offlinemm6 1 @17:localhost:8800offlinemmmF ]@anon-20191002_181700-194:localhost:8800offlinemcmc6 1 @16:localhost:8800offlinemmYmF ]@anon-20191002_181700-193:localhost:8800offlinemMwmMw6 1 @15:localhost:8800offlinemBm2|mKF ]@anon-20191002_181700-192:localhost:8800offlinem0-m0-F ]@anon-20191002_181700-191:localhost:8800offlinemmF ]@anon-20191002_181700-188:localhost:8800offlinemHmF ]@anon-20191002_181700-187:localhost:8800offlinemmS6~ 1 @14:localhost:8800offlinemm lmF| ]@anon-20191002_181700-186:localhost:8800offlinemSmNFz ]@anon-20191002_181700-190:localhost:8800offlinemBmFy ]@anon-20191002_181700-189:localhost:8800offlinemmM5r 1 s@13:localhost:8800offlinemYmmYKm ] n@anon-20191002_181700-182:localhost:8800offlinemmo,mEj ]k@anon-20191002_181700-180:localhost:8829offlinemHm4Ki ] j@anon-20191002_181700-178:localhost:8800offlinemm4m 7X  1 Z  -)~"7>]1eQe`@anon-20191002_181700-186:localhost:8800@13:localhost:8800$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM!hgjYwwwjWJNgwrzOto:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc]1eQ@anon-20191002_181700-172:localhost:8829@12:localhost:8800$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk!VCSCNemqikJZiRtxrs:localhost:8829]1eQ@anon-20191002_181700-171:localhost:8829@11:localhost:8800$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts!StEnDjTJToXKXsOHNf:localhost:8829T]]eQe@anon-20191002_181700-152:localhost:8800@anon-20191002_181700-153:localhost:8800$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIT]]eQe@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-151:localhost:8800$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0T]]eQe@anon-20191002_181700-149:localhost:8800@anon-20191002_181700-150:localhost:8800$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokT]]eQez@anon-20191002_181700-143:localhost:8800@anon-20191002_181700-144:localhost:8800$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM(]]eQq@anon-20191002_181700-141:localhost:8800@anon-20191002_181700-142:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800T ]]eQeo@anon-20191002_181700-140:localhost:8800@anon-20191002_181700-141:localhost:8800$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU!BkzROHxDAfKIzYpmPV:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQT ]]eQe\@anon-20191002_181700-136:localhost:8800@anon-20191002_181700-137:localhost:8800$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ!XIqmzIFbkHGQPIpywk:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs( ]]eQR@anon-20191002_181700-134:localhost:8800@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ!lMRBkbYJDQHgdBZBFJ:localhost:8800( ]]eQL@anon-20191002_181700-132:localhost:8800@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800T ]]eQeK@anon-20191002_181700-131:localhost:8800@anon-20191002_181700-132:localhost:8800$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI!cHtqiAyCHEAoBIbCmL:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA(]]eQB@anon-20191002_181700-129:localhost:8800@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800(]]eQl@anon-20191002_181700-102:localhost:8800@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A!KxhGcTbEWmtgGNpdox:localhost:8800T]]eQed@anon-20191002_181700-101:localhost:8800@anon-20191002_181700-100:localhost:8800$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIR[[eQeR@anon-20191002_181700-97:localhost:8800@anon-20191002_181700-96:localhost:8800$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQR[[eQe5@anon-20191002_181700-91:localhost:8800@anon-20191002_181700-90:localhost:8800$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0R[[eQe'@anon-20191002_181700-86:localhost:8800@anon-20191002_181700-87:localhost:8800$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY%[[eQX@anon-20191002_181700-23:localhost:8800@anon-20191002_181700-29:localhost:8800$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800%[[eQ@anon-20191002_181700-16:localhost:8800@anon-20191002_181700-17:localhost:8800$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU!plcvCHNbjCkNMMxnTk:localhost:8800 ?~ Q z sCl<T(]]eQeV@anon-20191002_181700-350:localhost:8800@anon-20191002_181700-351:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0T']]eQe>@anon-20191002_181700-346:localhost:8800@anon-20191002_181700-347:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40T&]]eQe$@anon-20191002_181700-344:localhost:8829@anon-20191002_181700-343:localhost:8800$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsT%]]eQe@anon-20191002_181700-340:localhost:8829@anon-20191002_181700-339:localhost:8800$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4T$]]eQek@anon-20191002_181700-286:localhost:8800@anon-20191002_181700-287:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoT!]]eQe6@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-273:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM(#]]eQ5@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-275:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800T"]]eQe7@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-274:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg( ]]eQ-@anon-20191002_181700-271:localhost:8800@anon-20191002_181700-270:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800T]]eQe@anon-20191002_181700-265:localhost:8800@anon-20191002_181700-266:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kT]]eQeM@anon-20191002_181700-217:localhost:8800@anon-20191002_181700-218:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0T]]eQeC@anon-20191002_181700-215:localhost:8800@anon-20191002_181700-216:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikT]]eQe8@anon-20191002_181700-213:localhost:8800@anon-20191002_181700-214:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekT]]eQe-@anon-20191002_181700-211:localhost:8800@anon-20191002_181700-212:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ(]]eQ"@anon-20191002_181700-209:localhost:8800@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800>]1eQe@anon-20191002_181700-190:localhost:8800@17:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk>]1eQe@anon-20191002_181700-189:localhost:8800@16:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU>]1eQeu@anon-20191002_181700-188:localhost:8800@15:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps>]1eQej@anon-20191002_181700-187:localhost:8800@14:localhost:8800$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk 8 w8ukeQ_y$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 876}{"auth_events": ["$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU"], "prev_events": ["$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU"], "type": "m.room.member", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-188", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-188:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041075236, "hashes": {"sha256": "GYSGUlivdd3j3sLlYoq51iOpPJ7DTE4lnvq7HWcD14w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "puhWf7nSdV3rpUJXvSTUakJT/Ad5QLENDYhyne4X21S6sMZ2M4fbx3UGBma9gC6kt5ubTIwWRUnvOwRiINUtBg"}}, "unsigned": {"age_ts": 1570041075236}}hjeQ__$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 875}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-188:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041074577, "hashes": {"sha256": "sHp641aGcHZs+nhLpevCk/QIHHKrA1xxdJKnuX4fVBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NH1fNqimRAgyfkBaythStB2F9Xbbo5FQD76ZHjC7xAfMsa7yT4YmtRUTpCHhba9U9FJW9f8DzzPSA0ZzVTxmBg"}}, "unsigned": {"age_ts": 1570041074577}}VieQ=]$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800{"stream_ordering": 874}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0"], "prev_events": ["$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk"], "type": "m.room.member", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@14:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "14", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@14:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041072389, "hashes": {"sha256": "kmYqHbxOejqZuEHwmZ4g7fSO1Y7uj0SnkvClc/cqeug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/jsxpQzO8S17/CFhOjdKE7vk6ejK1mIuwoUDkEvF2EHhsZHDvgyLphX6vTQN2kTL6PPBX/5Ie7XWxtyuysGWAw"}}, "unsigned": {"age_ts": 1570041072389, "replaces_state": "$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI"}}heQy$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800{"token_id": 208, "txn_id": "68", "stream_ordering": 873}{"auth_events": ["$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI", "$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g", "$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0"], "prev_events": ["$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI"], "type": "m.room.message", "room_id": "!NQgavrmiCPUVaVjssy:localhost:8800", "sender": "@anon-20191002_181700-187:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041071959, "hashes": {"sha256": "pWxQ1Aw+jDvTZkSMcZDPnGszwF+hI3MEpT+HjC0sWIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/gV7jrbhcqEnYwe/lvOieJmDwfcSK4ywzADt1OX+HiXYscNLO7FjkHgr3eqOBXmgW3cd7kY2M/qlrmXpfx+JAA"}}, "unsigned": {"age_ts": 1570041071959}} P!uJ+ y Nw L % } R ' { ##yNT)}R'{P%T)X-V}R' { P %  T ) P *Q!kOmCTyiizHqfCJdhlR:localhost:8800 T T*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!kOmCTyiizHqfCJdhlR:localhost:8800 \ \*Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y Y*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kOmCTyiizHqfCJdhlR:localhost:8800 U U*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800 P*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kOmCTyiizHqfCJdhlR:localhost:8800 X X*Q!kOmCTyiizHqfCJdhlR:localhost:8800 W W*Q!kOmCTyiizHqfCJdhlR:localhost:8800 V V*Q!kOmCTyiizHqfCJdhlR:localhost:8800 [ [*Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z Z*Q!kOmCTyiizHqfCJdhlR:localhost:8800 ] ] +*Q!kjjUsMowsioSQRIJeg:localhost:8800 Q Q*Q!kjjUsMowsioSQRIJeg:localhost:8800 P P*Q!kjjUsMowsioSQRIJeg:localhost:8800 O O*Q!kjjUsMowsioSQRIJeg:localhost:8800 N N*Q!kjjUsMowsioSQRIJeg:localhost:8800 M M*Q!kjjUsMowsioSQRIJeg:localhost:8800 L L*Q!kjjUsMowsioSQRIJeg:localhost:8800 K K*Q!kjjUsMowsioSQRIJeg:localhost:8800 J J*Q!kjjUsMowsioSQRIJeg:localhost:8800 I I}*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800 #s 1 W k  z  8 ^r?_&R[m<eQ? $sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibilitye;eQ/ $sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rulesg:eQ3 $kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels 9eQ']$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800a8eQ' $0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800m.room.createm7eQ? $FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibilitye6eQ/ $n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rulesg5eQ3 $O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels 4eQ']$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800a3eQ' $aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800m.room.creates2eQ'1$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800s1eQ'1$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800g0eQ3 $sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_accessm/eQ? $CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibilitye.eQ/ $fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rulesg-eQ3 $xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels ,eQ']$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800a+eQ' $tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800m.room.creates*eQ'1$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800s)eQ'1$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800g(eQ3 $zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_accessm'eQ? $gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibilitym&eQ? $WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibilitye%eQ/ $SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rulesg$eQ3 $jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels #eQ']$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800a"eQ' $ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800m.room.creates!eQ'1$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800s eQ'1$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800geQ3 $e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_accessmeQ? $Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibilitymeQ? $b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibilityeeQ/ $MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800m.room.join_rulesgeQ3 $VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800m.room.power_levels eQ']$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@anon-20191002_181700-188:localhost:8800 :0 s 0 Y # l 1 L  UHk Uh+t9{>0j*gj'^Q']!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800 3:Q/ !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules B6Q' !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create -?Q9 !NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_alias.EQ))!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:88001<Q3 !NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels^Q']!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800:Q/ !NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rulesBQ? !NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibility6Q' !NeYaCeYNFATCqlrlGT:localhost:8800m.room.create<Q3 !NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels^Q']!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800^Q']!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800:Q/ !NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rulesBQ? !NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibility6Q' !NboFFVLpJHTeuUKCjM:localhost:8800m.room.create<Q3 !NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.state<Q3 !NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels ^Q']!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800 RQ'E!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455 :Q/ !NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules BQ? !NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibility 6Q' !NanhNmCnVVpmZRJrTF:localhost:8800m.room.create <Q3 !NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels^Q']!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829^Q']!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800:Q/ !NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rulesBQ? !NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibility6Q' !NajQnqYmGyTjxhFYar:localhost:8829m.room.create<Q3 !NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.state;Q3 !NZHpBquHDfJAjiawGk:localhost:8800m.room.power_levels@\Q'[!NZHpBquHDfJAjiawGk:localhost:8800m.room.member@anon-20191002_181700-21:localhost:8800?9Q/ !NZHpBquHDfJAjiawGk:localhost:8800m.room.join_rulesAAQ? !NZHpBquHDfJAjiawGk:localhost:8800m.room.history_visibilityB5Q' !NZHpBquHDfJAjiawGk:localhost:8800m.room.create>DQ))!NZHpBquHDfJAjiawGk:localhost:8800m.room.aliaseslocalhost:8800C<Q3 !NQgavrmiCPUVaVjssy:localhost:8800m.room.power_levels^Q']!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@anon-20191002_181700-187:localhost:8800HQ'1!NQgavrmiCPUVaVjssy:localhost:8800m.room.member@14:localhost:8800:Q/ !NQgavrmiCPUVaVjssy:localhost:8800m.room.join_rulesBQ? !NQgavrmiCPUVaVjssy:localhost:8800m.room.history_visibility<Q3 !NQgavrmiCPUVaVjssy:localhost:8800m.room.guest_access6Q' !NQgavrmiCPUVaVjssy:localhost:8800m.room.create5Q% !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topicn<Q3 !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levelsf^Q']!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800e:Q/ !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rulesjBQ? !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibilityl6Q' !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.createc?Q9 !NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_aliashEQ))!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800p9Q- !NNiyzThHMivrxhojfp:localhost:8800m.room.tombstone<Q3 !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_access 2<Q3 !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels /BQ? !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility IBQ? !NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility06Q' !NfaPEGKjnUDUTavzol:localhost:8800m.room.create+^Q']!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800 .  GoeQ_$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 880}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek"], "type": "m.room.history_visibility", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041078263, "hashes": {"sha256": "cJpXDv0ehPFXt94km7ADzj7FR9RuCnZo1b/ZCvsX2KA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8qc/xDSvA2EJjtmhqGnPm8yAFLhiFHUek1gFaR9D3fncQhRSzE5KPfOYZuagZaJ5Gp+9TcbG+c/sg4Tu+qr4CQ"}}, "unsigned": {"age_ts": 1570041078263, "replaces_state": "$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek"}}neQ_$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 879}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA"], "type": "m.room.history_visibility", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041077286, "hashes": {"sha256": "aBBGljpgNgAh92wEeM1rAtbxjw4HC7vxmbU5mb/FD38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S4yzTWEjayiDxkd5XBIrAOOHqNyq/fAH6PaQWyG1ubMpeHBrZRtn69rSvPs/vr/Yz4qnx9oFKsmkYX+ck0gSDQ"}}, "unsigned": {"age_ts": 1570041077286}}smeQ_u$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 878}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc"], "type": "m.room.join_rules", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041076677, "hashes": {"sha256": "F7iIH68YcKFi3lZrG4qMZVZnIMbKqqXqwjlD/vkWWDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oKdH3vOTs9NSQTChz+Io5jdUTveWZ4YITx1k2pPlZ+/Bh/g6LkeDQUk8XygIi/U7A94HtM5/oifbzL2TuoOJBA"}}, "unsigned": {"age_ts": 1570041076677}}jleQ_c$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 877}{"auth_events": ["$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "type": "m.room.power_levels", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"users": {"@anon-20191002_181700-188:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041075972, "hashes": {"sha256": "+3Tx1jyvLIu+1+zTJeRuoDUmOybLKHSmbFo6AAXv6MA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZxkA9+UFV8Hn3dGfGSDTnqUN/lTvVAMfAMdSHVCg0euicewkYns7H28yxXQTh/OR3VmPQ6LN6edyeOQvZJijAA"}}, "unsigned": {"age_ts": 1570041075972}} a} { y w u sqomkigeca~'eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~&eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~%eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~$eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~#eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~"eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~!eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~ eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~eeQ$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800~ eeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU!EieRtaCFZJJCIOkRPp:localhost:8800 #X8 Z _  - OTx 'Qmx 0XcjQ' eh!dWgOTucBVQBKZjfndN:localhost:8800m.room.create$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkoiQ? eg!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwohQ? ef!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosggQ/ ee!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rules$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UifQ3 ed!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ eQ']ec!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMcdQ' eb!hSzBsirdPWHtVjagXn:localhost:8800m.room.create$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIocQ? ea!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility$r_hXaVKZmV0IIXEBxUBb7sDraQn2hcW9UKClFAINECAobQ? e`!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUgaQ/ e_!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rules$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtki`Q3 e^!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0 _Q']e]!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwc^Q' e\!mfzIRinBAGGrZvQAuI:localhost:8800m.room.create$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQu]Q'1e[!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuku\Q'1eZ!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwi[Q3 eY!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_access$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0oZQ? eX!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibility$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32LwgYQ/ eW!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rules$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIiXQ3 eV!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I WQ']eU!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrccVQ' eT!FPcQcheNebvdFvmOnr:localhost:8800m.room.create$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0uUQ'1eS!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUuTQ'1eR!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIiSQ3 eQ!vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_access$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIoRQ? eP!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsoQQ? eO!vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEgPQ/ eN!vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rules$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQoiOQ3 eM!vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc NQ']eL!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNocMQ' eK!vOfeZvbtpuHfoqShFl:localhost:8800m.room.create$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIuLQ'1eJ!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsuKQ'1eI!EieRtaCFZJJCIOkRPp:localhost:8800m.room.member@15:localhost:8800$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7QiJQ3 eH!EieRtaCFZJJCIOkRPp:localhost:8800m.room.guest_access$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYooIQ? eG!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAoHQ? eF!EieRtaCFZJJCIOkRPp:localhost:8800m.room.history_visibility$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek  hreQ__$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 883}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM"], "type": "m.room.member", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"membership": "invite", "displayname": "15", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@15:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041081089, "hashes": {"sha256": "pL8a7jKWj/ZcofdQ/KZKXSGU2n4ULHQtQIfEnqTNaXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ep/9W3aZ/dAqTM5/TMrF7HfA8c78SziiB/DEFT3Nz5jKfh0HRuTy+HQ3K4VfGsW7Bp6YgarTybSxEfJSeDPgDw"}}, "unsigned": {"age_ts": 1570041081089, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-188:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-188:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-188", "avatar_url": null}, "sender": "@anon-20191002_181700-188:localhost:8800"}]}}qeQw$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "txn_id": "69", "stream_ordering": 882}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo"], "type": "m.room.message", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041080089, "hashes": {"sha256": "8QqTLD336ioBpPnS4WXGsiGYpLsKAejuuL3CT+jz1uo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9F/nFqid3jIHoNSnDNxLr64mqw/y6qM3XagKSQf28Id7IXaQkLxcCFk+hmH6oFupKD7yh5t2tNAloRJFKdfHAg"}}, "unsigned": {"age_ts": 1570041080089}}zpeQ_$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "stream_ordering": 881}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA"], "type": "m.room.guest_access", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041079147, "hashes": {"sha256": "1t7ultHCKI++2AaXkpEUVIjx9H90cr4BG6i0Q9g840Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hxRz2mwAfRHrzJAVc8TXPt/Ffv74i5AgTfUsPJgLwpTkJ+jQTT0mcPa6Lb4F9n9razYvhVP88jB86xII5NDYDQ"}}, "unsigned": {"age_ts": 1570041079147}} 7 v7uveQ_y$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 887}{"auth_events": ["$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"], "prev_events": ["$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"], "type": "m.room.member", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-189", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-189:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041085622, "hashes": {"sha256": "SOQ4aLOab1jGobvmozL+bew5On+aIBOUfkuunj4gM2Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uDtdTrMo5IKFHEi3p5icOD2lZTFGc1r0Rwcv0XrLAKcbUpRhC/g+U04kqyyizKKoEzAuR2SMCJuRRNg6LYhHCQ"}}, "unsigned": {"age_ts": 1570041085622}}hueQ__$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 886}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-189:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041084819, "hashes": {"sha256": "JmnF3i6gFNSFTb7I2RwwgMP2eNU3ZBAqiyjAExmO47c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RbLUXqiHUg55i/L3i0ze1ELm8qhximMaEYYATwY2A6Sim6f4qVNLetocgdoflaRsfikolAxsCbCNP2kLXMw+Cw"}}, "unsigned": {"age_ts": 1570041084819}}VteQ=]$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800{"stream_ordering": 885}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA"], "prev_events": ["$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70"], "type": "m.room.member", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@15:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "15", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@15:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041082454, "hashes": {"sha256": "9WwIFAq98cs3oMv7iJzgJLAB2xRlyC4hx4ZmcHMmsJw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "likrBtdn4qgizcdZOQBrduX5jscZf4xFWNVoNOjvA+lk70aL4Ni1ba8zS4pdJQWPzIXS15Q5PcvHd1m/A04kAw"}}, "unsigned": {"age_ts": 1570041082454, "replaces_state": "$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q"}}seQ{$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800{"token_id": 209, "txn_id": "70", "stream_ordering": 884}{"auth_events": ["$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc", "$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU", "$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE"], "prev_events": ["$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q"], "type": "m.room.message", "room_id": "!EieRtaCFZJJCIOkRPp:localhost:8800", "sender": "@anon-20191002_181700-188:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041081769, "hashes": {"sha256": "fEHKktszfkkKVUi4Td6/vi4iPmVQ0BXvTXI129m8nuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gz1NKm6umdePVrLKp7rmGhM6DsLINqHmkPyr/kwnAUDNPJixu3njzJvda5ekuakXBpdnYzD9K1ZdJSvDvjFeBQ"}}, "unsigned": {"age_ts": 1570041081769}} N | J  * vV$p> wE d2 8 Q   W %  ^j > ,\|J P D pj81e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0B1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoc1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcH1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEp1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM(1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY@1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts 1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMK1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw-1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8Q1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU~1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0.1e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIT1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAG1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA l1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU 51e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y?1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgY1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI j1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI b1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IK1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAb0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8Z1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oO1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk *1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsb1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA|1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8d1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg u1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A F1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM 11e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w >?Uq8 V  r 9 W  s :  V t;Wx?["w>\#x?]$8]!@ano8]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJv8]!@anon-20191002_181700-317:localhost:8800KSXFFXWMCBu8]!@anon-20191002_181700-316:localhost:8800JHIWJLKOFGt8]!@anon-20191002_181700-315:localhost:8800KXXAQONTRLs8]!@anon-20191002_181700-314:localhost:8800BTSWZNQVTPr8]!@anon-20191002_181700-312:localhost:8800LFIOTRIQVMq8]!@anon-20191002_181700-311:localhost:8800BNVFQNMSXMp8]!@anon-20191002_181700-310:localhost:8800UKYXDPZQOOo6[!@anon-20191002_181700-30:localhost:8800STWEJRRVAK<8]!@anon-20191002_181700-309:localhost:8800OEPQWZYGARn8]!@anon-20191002_181700-308:localhost:8800VRKBCOUWEFm8]!@anon-20191002_181700-307:localhost:8800BEZNVUIADUl8]!@anon-20191002_181700-306:localhost:8800XZDIPYWWODk8]!@anon-20191002_181700-305:localhost:8800PDQTBQSPGXj8]!@anon-20191002_181700-304:localhost:8800MQWNAFYDXKi8]!@anon-20191002_181700-303:localhost:8800FUOYNGGDMQh8]!@anon-20191002_181700-302:localhost:8800PAWIWMHYHHg8]!@anon-20191002_181700-301:localhost:8800SJPGITTBTXf8]!@anon-20191002_181700-300:localhost:8800ZZJIQPLATKe5Y!@anon-20191002_181700-2:localhost:8800RDNVTAXLBR6[!@anon-20191002_181700-29:localhost:8800WSREAIROYN;8]!@anon-20191002_181700-299:localhost:8800BPDORAMNSEd8]!@anon-20191002_181700-298:localhost:8800GTROHDSCGVc8]!@anon-20191002_181700-297:localhost:8800DVSKNCGFXXb8]!@anon-20191002_181700-296:localhost:8800SBLEQBXZQLa8]!@anon-20191002_181700-295:localhost:8800CIYGWJHPPN`8]!@anon-20191002_181700-294:localhost:8800RKGLRVXFMG_8]!@anon-20191002_181700-293:localhost:8800PVLMJRXINQ^8]!@anon-20191002_181700-292:localhost:8800GGCVZACJDJ]8]!@anon-20191002_181700-291:localhost:8800OPDSPHGDRK\8]!@anon-20191002_181700-290:localhost:8800HIUKIRMYDG[6[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZU:8]!@anon-20191002_181700-289:localhost:8800WRUIAYGXANZ8]!@anon-20191002_181700-288:localhost:8800BKSOCJCTFTY8]!@anon-20191002_181700-287:localhost:8800UVZQFXTZFVX8]!@anon-20191002_181700-286:localhost:8800SFUJRXTQDYW8]!@anon-20191002_181700-285:localhost:8800RKYDKAHKAAV8]!@anon-20191002_181700-284:localhost:8800IDXGKZHMAKU8]!@anon-20191002_181700-283:localhost:8800GHCLSNIYIAT8]!@anon-20191002_181700-282:localhost:8800MZNVLNKEUXS8]!@anon-20191002_181700-281:localhost:8800HVGEGIPOZPR8]!@anon-20191002_181700-280:localhost:8800PLHJASTUFRQ6[!@anon-20191002_181700-27:localhost:8800TWNKNEABLT98]!@anon-20191002_181700-279:localhost:8800DVKCMEFQMCP8]!@anon-20191002_181700-278:localhost:8800OHJBILRNUPO8]!@anon-20191002_181700-277:localhost:8800YSVOUTLGFPN8]!@anon-20191002_181700-276:localhost:8800PBSDTTCZKKM8]!@anon-20191002_181700-275:localhost:8800BROWKVODJUL8]!@anon-20191002_181700-274:localhost:8800RXKZBCJOXKK8]!@anon-20191002_181700-273:localhost:8800SZMGOEVXQWI8]!@anon-20191002_181700-272:localhost:8800NRGYAKPXELJ8]!@anon-20191002_181700-271:localhost:8800EYEJMZUSJYG8]!@anon-20191002_181700-270:localhost:8800SRSYWQDCQUH6[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFL88]!@anon-20191002_181700-269:localhost:8800EDTNFCDRMRE8]!@anon-20191002_181700-268:localhost:8800BTQHLEFFPUD8]!@anon-20191002_181700-267:localhost:8800LUADSGSJTGF8]!@anon-20191002_181700-266:localhost:8800MREALOZRTWB8]!@anon-20191002_181700-265:localhost:8800COAARRCECCA8]!@anon-20191002_181700-264:localhost:8800DYYKUWOSTJ@8]!@anon-20191002_181700-263:localhost:8800KUHOBSXQVM?8]!@anon-20191002_181700-262:localhost:8800OLJVXJZUXG> ,NC 8 - { " p  e ZOD9.|#qf V eL$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggsha256D.JnzR~)ỵe@H\hVeL$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEsha2567Jz2sm`ўLPe㨗VeL$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4sha256y@;1 ;h12lCuɘڄ -faVeL$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcsha256R̀ UXį&c{!?o|d=gVeL$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4sha256"o!=Pؼzm|Z5VeL$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIsha256ndLQvbاi"^NrVeL$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjssha256"z$PٷN 3p;VeL$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPksha256RO牞3h]2`IlHi`VeL$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQsha256&QSc~V4K5Bcw.qTVeL$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWksha256|@(NpVeL$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwsha256iPR q\t"$g,VeL$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsossha256IE>יeuMSKK5ϲVeL$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Usha256fFS7`ъ):EJ)$WUVeL$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQsha2563$p.P0UDѯsu4VeL$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMsha256X! 8ɢDw9/VxeU\Je7ȚVeL$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0sha256&C$g9.a&Yܡ&e]h7?IVeL$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUsha256aGqLi(SsקqےV~eL$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmosha256B'R|]wx'BjV}eL$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIsha256H5ܬY q=ƘPWĤaoV|eL$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcsha256Й"" r#1c=VԺwV{eL$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIsha256D SŁk&\r{ϝVzeL$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxssha256Q wRY5K8beiGi6 VyeL$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEsha256Y>(Yr%2±}Rb{:aVxeL$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQosha256I١>!E `r_ ^.y) VweL$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcsha256>dEA܍+J?nVveL$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNosha256 SX}@\ObMOw\^MbdVueL$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIsha256kG}OMv!n$7R{J  4 h 6md]c@anon-20191002_181700-220:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgo127.0.0.1܂d]c@anon-20191002_181700-211:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlOUGI3cm0zS0NuM28wRy4KMDAyZnNpZ25hdHVyZSD4OpM6ZfPo7DlTj2wvV2Lfc6R4avGRyYucfSs91WVPAwo127.0.0.1ӂa[a@anon-20191002_181700-21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gKmJTNk9AYXZmSmNmKzVvKwowMDJmc2lnbmF0dXJlIBW67kVj5zaT9ur1XW9SA_aePqdTF7AWoyMKnqSMMMuSCg127.0.0.1d]c@anon-20191002_181700-219:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwo127.0.0.1ۂd]c@anon-20191002_181700-218:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQo127.0.0.1ڂd]c@anon-20191002_181700-217:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAo127.0.0.1قd]c@anon-20191002_181700-216:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0wo127.0.0.1؂d]c@anon-20191002_181700-215:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgo127.0.0.1ׂd]c@anon-20191002_181700-214:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3Ao127.0.0.1ւd]c@anon-20191002_181700-213:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBqSkBkdkBPR3EzaUx4eDUKMDAyZnNpZ25hdHVyZSBVuF6NBtiMz2bEdBixHOtv14eE0aYcLIdRBBgkOtjMIQo127.0.0.1Ղd]c@anon-20191002_181700-212:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHUjUyZPTkhCdTZQJlozd3AKMDAyZnNpZ25hdHVyZSDa3KCf8uR1pbc8KNvlnD4kU4zB76gI3XvbVm_g7R-GrAo127.0.0.1 he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph          ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMM          KKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!  LLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!   _r[k,nW}T+ z W :  u Z 7  O 2  n /  [ > # jO, {XAa>'mG$ pYF) M G"? m.room.history_visibility/ m.room.join_rules"? 4m.room.history_visibility6/ 3m.room.join_rules53 2m.room.power_levels4>']1m.room.member@anon-20191002_181700-186:localhost:88003' 0m.room.create2>']/m.room.member@anon-20191002_181700-185:localhost:88001"? .m.room.history_visibility0/ -m.room.join_rules/3 ,m.room.power_levels.>']+m.room.member@anon-20191002_181700-185:localhost:8800-' *m.room.create,>'])m.room.member@anon-20191002_181700-184:localhost:8800+3 m.room.power_levels>']m.room.member@anon-20191002_181700-198:localhost:8800' m.room.create"? m.room.history_visibility%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 ~m.room.canonical_alias3 }m.room.power_levels>']|m.room.member@anon-20191002_181700-197:localhost:8800~' {m.room.create}"? zm.room.history_visibility|%))ym.room.aliaseslocalhost:8800{"? xm.room.history_visibilityz/ wm.room.join_rulesy9 vm.room.canonical_aliasx3 um.room.power_levelsw>']tm.room.member@anon-20191002_181700-195:localhost:8800v' sm.room.createu"? rm.room.history_visibilityt/ qm.room.join_ruless3 pm.room.power_levelsr>']om.room.member@anon-20191002_181700-194:localhost:8800q' nm.room.createp"? mm.room.history_visibilityo"? lm.room.history_visibilityn/ km.room.join_rulesm3 jm.room.power_levelsl>']im.room.member@anon-20191002_181700-193:localhost:8800k' hm.room.createj"? gm.room.history_visibilityi"? fm.room.history_visibilityh/ em.room.join_rulesg3 dm.room.power_levelsf>']cm.room.member@anon-20191002_181700-192:localhost:8800e' bm.room.created"? am.room.history_visibilityc"? `m.room.history_visibilityb/ _m.room.join_rulesa3 ^m.room.power_levels`>']]m.room.member@anon-20191002_181700-191:localhost:8800_' \m.room.create^('1[m.room.member@17:localhost:8800]('1Zm.room.member@17:localhost:8800\3 Ym.room.guest_access["? Xm.room.history_visibilityZ/ Wm.room.join_rulesY3 Vm.room.power_levelsX>']Um.room.member@anon-20191002_181700-190:localhost:8800W' Tm.room.createV('1Sm.room.member@16:localhost:8800U('1Rm.room.member@16:localhost:8800T3 Qm.room.guest_accessS"? Pm.room.history_visibilityR"? Om.room.history_visibilityQ/ Nm.room.join_rulesP3 Mm.room.power_levelsO>']Lm.room.member@anon-20191002_181700-189:localhost:8800N' Km.room.createM('1Jm.room.member@15:localhost:8800L('1Im.room.member@15:localhost:8800K3 Hm.room.guest_accessJ"? Gm.room.history_visibilityI"? Fm.room.history_visibilityH/ Em.room.join_rulesG3 Dm.room.power_levelsF>']Cm.room.member@anon-20191002_181700-188:localhost:8800E' Bm.room.createD('1Am.room.member@14:localhost:8800C('1@m.room.member@14:localhost:8800B3 ?m.room.guest_accessA"? >m.room.history_visibility@"? =m.room.history_visibility?/ 3 ;m.room.power_levels=>']:m.room.member@anon-20191002_181700-187:localhost:8800<' 9m.room.create;('18m.room.member@13:localhost:8800:('17m.room.member@13:localhost:880093 6m.room.guest_access8"? 5m.room.history_visibility7 -RM H C > 9 4/*|%w rmhc T5Qe!fcdNYFWFyxmdpKAknc:localhost:8800$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikT4Qe!fcdNYFWFyxmdpKAknc:localhost:8800$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8T3Qe!fcdNYFWFyxmdpKAknc:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIT2Qe!fcdNYFWFyxmdpKAknc:localhost:8800$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQT1Qe!MWCLSWWGdWcSivNVLI:localhost:8800$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgT0Qe!MWCLSWWGdWcSivNVLI:localhost:8800$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15AumwT/Qe!MWCLSWWGdWcSivNVLI:localhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAT.Qe!MWCLSWWGdWcSivNVLI:localhost:8800$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8T-Qe!MWCLSWWGdWcSivNVLI:localhost:8800$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8T,Qe!MWCLSWWGdWcSivNVLI:localhost:8800$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsET+Qe!MWCLSWWGdWcSivNVLI:localhost:8800$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNET*Qe!MWCLSWWGdWcSivNVLI:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cT)Qe!MWCLSWWGdWcSivNVLI:localhost:8800$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQT(Qe!erBPdgtUsiOfIKUkho:localhost:8800$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8T'Qe!erBPdgtUsiOfIKUkho:localhost:8800$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0T&Qe!erBPdgtUsiOfIKUkho:localhost:8800$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wT%Qe!erBPdgtUsiOfIKUkho:localhost:8800$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1GgT$Qe!erBPdgtUsiOfIKUkho:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxET#Qe!erBPdgtUsiOfIKUkho:localhost:8800$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4T"Qe!dWgOTucBVQBKZjfndN:localhost:8800$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcT!Qe!dWgOTucBVQBKZjfndN:localhost:8800$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4T Qe!dWgOTucBVQBKZjfndN:localhost:8800$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnITQe!dWgOTucBVQBKZjfndN:localhost:8800$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsTQe!dWgOTucBVQBKZjfndN:localhost:8800$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkTQe!dWgOTucBVQBKZjfndN:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQTQe!dWgOTucBVQBKZjfndN:localhost:8800$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkTQe!hSzBsirdPWHtVjagXn:localhost:8800$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUTQe!hSzBsirdPWHtVjagXn:localhost:8800$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwTQe!hSzBsirdPWHtVjagXn:localhost:8800$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosTQe!hSzBsirdPWHtVjagXn:localhost:8800$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UTQe!hSzBsirdPWHtVjagXn:localhost:8800$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQTQe!hSzBsirdPWHtVjagXn:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMTQe!hSzBsirdPWHtVjagXn:localhost:8800$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXITQe!mfzIRinBAGGrZvQAuI:localhost:8800$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0TQe!mfzIRinBAGGrZvQAuI:localhost:8800$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUTQe!mfzIRinBAGGrZvQAuI:localhost:8800$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkTQe!mfzIRinBAGGrZvQAuI:localhost:8800$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0TQe!mfzIRinBAGGrZvQAuI:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwTQe!mfzIRinBAGGrZvQAuI:localhost:8800$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQTQe!FPcQcheNebvdFvmOnr:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukT Qe!FPcQcheNebvdFvmOnr:localhost:8800$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgT Qe!FPcQcheNebvdFvmOnr:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwT Qe!FPcQcheNebvdFvmOnr:localhost:8800$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gT Qe!FPcQcheNebvdFvmOnr:localhost:8800$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0T Qe!FPcQcheNebvdFvmOnr:localhost:8800$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw  FzeQ_$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 891}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE"], "type": "m.room.history_visibility", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041088649, "hashes": {"sha256": "HNxkVhnZWg172hbqlQmtRkToLNI6Sjx6aCNv5+Glwnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xTVpTN5hKREitUA595/TEF/Ka6zd3NO/IaY33VB+mGJ31voOBlf9FmSYJ+glTWOepPInxCY5N6DsTO5iCQcdCA"}}, "unsigned": {"age_ts": 1570041088649, "replaces_state": "$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE"}}yeQ_$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 890}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo"], "type": "m.room.history_visibility", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041087586, "hashes": {"sha256": "MdYTljQqWAVI+W2S61CnDMymIiVM9Gl9qxvz7IlJVkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZKSTVg2nL6w8qAvfvW9jYJgR4+kiMqZAtyLbGx+uFjesdlRvO39tUCJPpJD63ZxfLmo/ytowXHrh0alCS5HRCg"}}, "unsigned": {"age_ts": 1570041087586}}sxeQ_u$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 889}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc"], "type": "m.room.join_rules", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041087003, "hashes": {"sha256": "MP8qiz/QlJmbs40/IMf2+XwM7DRG+KovE/RSDIsrFic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EedbK7btppwuBK1JRzEkKo1I7XjWKf+nQBnzGkpNFtvQZKzvn3Rq+CbeTgMMVuhDzGg5Sx7XpF7RQZS2nUsJBA"}}, "unsigned": {"age_ts": 1570041087003}}jweQ_c$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 888}{"auth_events": ["$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "type": "m.room.power_levels", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"users": {"@anon-20191002_181700-189:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041086189, "hashes": {"sha256": "iCaRdJoKXsVnF7sEVnGk7aahqJaW5F/0ULN2aUGwo4g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jceihoLtkMYlqZUjDwk8e9oe34fH7KoL8HKG5IChQ/1SrYoWM/HB8yC04rnwA0/AcgqZsnH0rQi9T2ru2O/wCw"}}, "unsigned": {"age_ts": 1570041086189}} SuByLl? ^ 1  ~ Q $ q D  c 6 V )vIh;[.{N!nb5U(u+Q !hFwigdYZkwYNSwelRH:localhost:8800 R R,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800+Q !hDAzBWYEyRVBRlrCHh:localhost:8800  ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 +Q !gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800..,Q!fuHSJcznvGQnoYoLPW:localhost:8800--,Q!fuHSJcznvGQnoYoLPW:localhost:8800,,+Q !fGkUEndqGrieltwbCh:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800++,Q!fuHSJcznvGQnoYoLPW:localhost:8800**+Q !fuHSJcznvGQnoYoLPW:localhost:8800)),Q!fsbkkRBZlUcBVVfMME:localhost:8800>>,Q!fsbkkRBZlUcBVVfMME:localhost:8800==,Q!fsbkkRBZlUcBVVfMME:localhost:8800<<,Q!fsbkkRBZlUcBVVfMME:localhost:8800;;,Q!fsbkkRBZlUcBVVfMME:localhost:8800::+Q !fsbkkRBZlUcBVVfMME:localhost:880099,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800+Q !fkvdYkesQOFCAQkzky:localhost:8800,Q!ffijTnPMbTrDXHqOXf:localhost:8800 ll,Q!ffijTnPMbTrDXHqOXf:localhost:8800 kk,Q!ffijTnPMbTrDXHqOXf:localhost:8800jj,Q!ffijTnPMbTrDXHqOXf:localhost:8800ii,Q!ffijTnPMbTrDXHqOXf:localhost:8800hh,Q!ffijTnPMbTrDXHqOXf:localhost:8800gg,Q!ffijTnPMbTrDXHqOXf:localhost:8800ff,Q!ffijTnPMbTrDXHqOXf:localhost:8800ee,Q!ffijTnPMbTrDXHqOXf:localhost:8800dd+Q !ffijTnPMbTrDXHqOXf:localhost:8800cc,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 +Q !fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800+Q !fcdNYFWFyxmdpKAknc:localhost:8800,Q!fOJLpnbtgKNxxVDquX:localhost:8800nn,Q!fOJLpnbtgKNxxVDquX:localhost:8800mm,Q!fOJLpnbtgKNxxVDquX:localhost:8800ll,Q!fOJLpnbtgKNxxVDquX:localhost:8800kk,Q!fOJLpnbtgKNxxVDquX:localhost:8800jj,Q!fOJLpnbtgKNxxVDquX:localhost:8800ii+Q !fOJLpnbtgKNxxVDquX:localhost:8800hh,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800+Q !fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800 ,Q!fGkUEndqGrieltwbCh:localhost:8800 SuByLl? ^ 1  ~ Q $ q D  c 6 V )vIh;[.{N!nb5U(u+Q !hFwigdYZkwYNSwelRH:localhost:8800 R R,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800,Q!hDAzBWYEyRVBRlrCHh:localhost:8800+Q !hDAzBWYEyRVBRlrCHh:localhost:8800  ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 +Q !gXfXRDTXeVvOHQdaaQ:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800..,Q!fuHSJcznvGQnoYoLPW:localhost:8800--,Q!fuHSJcznvGQnoYoLPW:localhost:8800,,+Q !fGkUEndqGrieltwbCh:localhost:8800 ,Q!fuHSJcznvGQnoYoLPW:localhost:8800++,Q!fuHSJcznvGQnoYoLPW:localhost:8800**+Q !fuHSJcznvGQnoYoLPW:localhost:8800)),Q!fsbkkRBZlUcBVVfMME:localhost:8800>>,Q!fsbkkRBZlUcBVVfMME:localhost:8800==,Q!fsbkkRBZlUcBVVfMME:localhost:8800<<,Q!fsbkkRBZlUcBVVfMME:localhost:8800;;,Q!fsbkkRBZlUcBVVfMME:localhost:8800::+Q !fsbkkRBZlUcBVVfMME:localhost:880099,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800  ,Q!fkvdYkesQOFCAQkzky:localhost:8800+Q !fkvdYkesQOFCAQkzky:localhost:8800,Q!ffijTnPMbTrDXHqOXf:localhost:8800 ll,Q!ffijTnPMbTrDXHqOXf:localhost:8800 kk,Q!ffijTnPMbTrDXHqOXf:localhost:8800jj,Q!ffijTnPMbTrDXHqOXf:localhost:8800ii,Q!ffijTnPMbTrDXHqOXf:localhost:8800hh,Q!ffijTnPMbTrDXHqOXf:localhost:8800gg,Q!ffijTnPMbTrDXHqOXf:localhost:8800ff,Q!ffijTnPMbTrDXHqOXf:localhost:8800ee,Q!ffijTnPMbTrDXHqOXf:localhost:8800dd+Q !ffijTnPMbTrDXHqOXf:localhost:8800cc,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fdEymmlcUvjgshvVyl:localhost:8800 +Q !fdEymmlcUvjgshvVyl:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800 ,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800,Q!fcdNYFWFyxmdpKAknc:localhost:8800+Q !fcdNYFWFyxmdpKAknc:localhost:8800,Q!fOJLpnbtgKNxxVDquX:localhost:8800nn,Q!fOJLpnbtgKNxxVDquX:localhost:8800mm,Q!fOJLpnbtgKNxxVDquX:localhost:8800ll,Q!fOJLpnbtgKNxxVDquX:localhost:8800kk,Q!fOJLpnbtgKNxxVDquX:localhost:8800jj,Q!fOJLpnbtgKNxxVDquX:localhost:8800ii+Q !fOJLpnbtgKNxxVDquX:localhost:8800hh,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800 ,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fJXiUpbbOlLbHWmPgs:localhost:8800+Q !fJXiUpbbOlLbHWmPgs:localhost:8800,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800  ,Q!fGkUEndqGrieltwbCh:localhost:8800 ,Q!fGkUEndqGrieltwbCh:localhost:8800 wX N  ` 0 :;dtw!e)Q ]$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0m.room.message!mfzIRinBAGGrZvQAuI:localhost:8800mZm_@anon-20191002_181700-191:localhost:8800,e?Q ]$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUm.room.history_visibility!mfzIRinBAGGrZvQAuI:localhost:8800mm"@anon-20191002_181700-191:localhost:8800$e/Q ]$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkm.room.join_rules!mfzIRinBAGGrZvQAuI:localhost:8800mmH@anon-20191002_181700-191:localhost:8800& e3Q ]$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0m.room.power_levels!mfzIRinBAGGrZvQAuI:localhost:8800m m @anon-20191002_181700-191:localhost:8800 e'Q ]$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwm.room.member!mfzIRinBAGGrZvQAuI:localhost:8800m[m@anon-20191002_181700-191:localhost:8800  e'Q  ]$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQm.room.create!mfzIRinBAGGrZvQAuI:localhost:8800m}m@anon-20191002_181700-191:localhost:8800 e'Q 1 $9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kukm.room.member!FPcQcheNebvdFvmOnr:localhost:8800 mmS@17:localhost:8800! e)Q ] $bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgm.room.message!FPcQcheNebvdFvmOnr:localhost:8800 m\ma@anon-20191002_181700-190:localhost:8800 e'Q ]$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwm.room.member!FPcQcheNebvdFvmOnr:localhost:8800mm7@anon-20191002_181700-190:localhost:8800!e)Q ]$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gm.room.message!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800&e3Q ]$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0m.room.guest_access!FPcQcheNebvdFvmOnr:localhost:8800mBm@anon-20191002_181700-190:localhost:8800,e?Q ]$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lwm.room.history_visibility!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800$e/Q ]$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIm.room.join_rules!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800&e3Q ]$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0Im.room.power_levels!FPcQcheNebvdFvmOnr:localhost:8800mCmN@anon-20191002_181700-190:localhost:8800 e'Q ]$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcm.room.member!FPcQcheNebvdFvmOnr:localhost:8800mm@anon-20191002_181700-190:localhost:8800 e'Q  ]$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0m.room.create!FPcQcheNebvdFvmOnr:localhost:8800mUm@anon-20191002_181700-190:localhost:8800 e'Q 1 $6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUm.room.member!vOfeZvbtpuHfoqShFl:localhost:8800 m#mڍ@16:localhost:8800!e)Q ] $QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmom.room.message!vOfeZvbtpuHfoqShFl:localhost:8800 mm@anon-20191002_181700-189:localhost:8800 ~e'Q ] $qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIm.room.member!vOfeZvbtpuHfoqShFl:localhost:8800 mhm@anon-20191002_181700-189:localhost:8800!}e)Q ]$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcm.room.message!vOfeZvbtpuHfoqShFl:localhost:8800mm@anon-20191002_181700-189:localhost:8800&|e3Q ]$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIm.room.guest_access!vOfeZvbtpuHfoqShFl:localhost:8800m-mό@anon-20191002_181700-189:localhost:8800,{e?Q ]$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsm.room.history_visibility!vOfeZvbtpuHfoqShFl:localhost:8800mʉm˄@anon-20191002_181700-189:localhost:8800,ze?Q ]$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEm.room.history_visibility!vOfeZvbtpuHfoqShFl:localhost:8800mbm%@anon-20191002_181700-189:localhost:8800$ye/Q ]$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQom.room.join_rules!vOfeZvbtpuHfoqShFl:localhost:8800mm@anon-20191002_181700-189:localhost:8800 ~z v r n j fb^ZVRNJF/eeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800.eeQ$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800-eeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800,eeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800+eeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800*eeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800)eeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800(eeQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800'eeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800&eeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800%eeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800$eeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800#eeQ$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800"eeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800!eeQ$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800 eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800eeQ$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800eeQ$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800 <(0 ]  p ! 1 A b Nv&L ^n~Dj0V| | , <  <7"1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800M!]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:88007 1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800M]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:880071Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800M]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800M]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800M]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800M]Q@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800M]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800M]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800M]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800M]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800M]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:88007 1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800M ]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:88007 1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800M ]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:880071Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800M]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800M]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800M]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800M]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800M]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800M]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800M]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800M]Q@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800M]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800M~]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800M}]Q@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800M|]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800M{]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800M]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800M]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800M]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800M]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:880071Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800M]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:880071Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800M ]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800  h}eQ__$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 894}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc"], "type": "m.room.member", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"membership": "invite", "displayname": "16", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041091432, "hashes": {"sha256": "3I5X7QLZG3MQo7VeyOH5VsU4SY6DuHA86Ias1bF9n9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TYi9QA3gn7E4Xr0fu14Ij4BuVLslv9K6qGupn4GGyWU6WZzwWR8snrwYkAnBCvytqbsG3wh/qIiJwKccpAQ5Bg"}}, "unsigned": {"age_ts": 1570041091432, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-189:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-189:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-189", "avatar_url": null}, "sender": "@anon-20191002_181700-189:localhost:8800"}]}}|eQw$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "txn_id": "71", "stream_ordering": 893}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI"], "type": "m.room.message", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041090777, "hashes": {"sha256": "HLxYukQJP7EKZUEYVrqi15kv6VosndaxVBFk92KEWnk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ylERT5r28XiMsCRSSU8QuSRSlR5N2zFbOHmbYYU9WJryKskvQyyhWeRmSPTXot1RXLLx+x+r70PND1pTPteGAQ"}}, "unsigned": {"age_ts": 1570041090777}}z{eQ_$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "stream_ordering": 892}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs"], "type": "m.room.guest_access", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041089837, "hashes": {"sha256": "35YTEve+nIXTngUy61KgEocRbIHXFuEkqc9TI8GH6zE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1+z8d+JMcKjLhJjkUviRuzTgmILalC8yNkQXsRKvIUm04Iwne6Evu+/ACV7lJWHrWb78E0NUPhZrUV9YbNCyAA"}}, "unsigned": {"age_ts": 1570041089837}} a} { y w u sqomkigeca~FeeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800~EeeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~DeeQ$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~CeeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800~BeeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~AeeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~@eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~?eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800~>eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~=eeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~<eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~;eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~:eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~9eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~8eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~7eeQ$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~6eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~5eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~4eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800~3eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800~2eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~1eeQ$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800~0eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800~/eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~.eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~-eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~,eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800~+eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800~*eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800~)eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800~(eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800 H V v Dn<   (p>jN 8 *  6tb \T"ZzHB $h | J  P061e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU)1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo 1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo A1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo @1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU+1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU*1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY1e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo B1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94w1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po I1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po H1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0d1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc d1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94x1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgx1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgw1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94y1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgy1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0d1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0c1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0b1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEz1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEy1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsga1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg`1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg_1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q *1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEo21e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU|1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU{1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUz1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEp21e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEq1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0e 7 v7ueQ_y$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 898}{"auth_events": ["$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0"], "prev_events": ["$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0"], "type": "m.room.member", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-190", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-190:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041095404, "hashes": {"sha256": "EfmeXrBWLN3+6YJb7kPv8vOaupCJ1BIi1+Oc/WfeuZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zCKdOaRDeMBDfU8naLF2QanYZ/eI8fqXGEl22D9YRTjki83YnBjbfzs6aHdP8z+aRC7jRXOtIHYgcbL/rm9LAg"}}, "unsigned": {"age_ts": 1570041095404}}heQ__$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 897}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-190:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041094485, "hashes": {"sha256": "gMvrFvf9x4Y/zN+9AGDngVo1hoLYNs0Xt21DH4zBxEA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RALWl3zerHnaSmsgy9v8lAn9pCcWxtGI/LQwYmJumYYgCBoW49FgIPIP6IlRlNl7zJMNGEZq5M8tyMAglQqoCw"}}, "unsigned": {"age_ts": 1570041094485}}VeQ=]$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800{"stream_ordering": 896}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo"], "prev_events": ["$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo"], "type": "m.room.member", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@16:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "16", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@16:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041092643, "hashes": {"sha256": "KHU3F5ZfnLhqMjQUlReCFiFokQD/oPzSfbjVPCFIfV0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pa/p1lwKbXn2lDSl7efXXFAZupLepMlTO4LWcDt0bcrnWnx2uw0PBMFGO/IGdbx8Yh5Qs9IrfObTgmtBEqM9Ag"}}, "unsigned": {"age_ts": 1570041092643, "replaces_state": "$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI"}}~eQ{$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800{"token_id": 210, "txn_id": "72", "stream_ordering": 895}{"auth_events": ["$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc", "$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI", "$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo"], "prev_events": ["$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI"], "type": "m.room.message", "room_id": "!vOfeZvbtpuHfoqShFl:localhost:8800", "sender": "@anon-20191002_181700-189:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041092069, "hashes": {"sha256": "WX1eQTvMljongYea50BmVvUrINklLYuSUBxKAYnX2M4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SgRmRd1Hqv6uNT/kYIjZPsJdAk/+paOdtpaqXuB7aSTHMtMJwWhtWb7isHk8uflrVbbCcT3pF40WAcKz8+BrAQ"}}, "unsigned": {"age_ts": 1570041092069}} ?7/' | l d \ T  MFteeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800 8teeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800 ܁eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800eeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800eeQ$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk!kxTDuIasPNpXtiRsif:localhost:8800neeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800weeQ$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU!dUnULFLGtgaVdwHtnz:localhost:8800weeQ$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k!kxTDuIasPNpXtiRsif:localhost:8800keeQ$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQ!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800ށeeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800[eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800@eeQ$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:88008eeQ$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800 R;W% & ^ , jd288p> ]v+D  |J  XP  } K  R &  ^ ,1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY+1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUr1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY#1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk:1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA e1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg[1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEr1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM*1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0Q1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew&1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUB1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMV1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw/1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQs1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo,1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY.1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoM1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 91e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI jP1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A E1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds 21e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 2 R;W% & ^ , jd288p> ]v+D  |J  XP  } K  R &  ^ ,1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY+1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUr1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY#1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk:1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA e1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg[1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEr1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM*1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0Q1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew&1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUB1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMP1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw/1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQs1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo,1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY.1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoM1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 91e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI jP1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A E1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds 21e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 2 Whp`8X0 ` 8  p H  x P ( X h @  X0h@ 0  xP(`Hh8pH P(`8p'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800f'Q!TlJCaYlCkOOVzFDlLx:localhost:8800e'Q!TlJCaYlCkOOVzFDlLx:localhost:8800d'Q!TlJCaYlCkOOVzFDlLx:localhost:8800c'Q!TlJCaYlCkOOVzFDlLx:localhost:8800b'Q!TlJCaYlCkOOVzFDlLx:localhost:8800a'Q!TlJCaYlCkOOVzFDlLx:localhost:8800`'Q!TlJCaYlCkOOVzFDlLx:localhost:8800_'Q!TlJCaYlCkOOVzFDlLx:localhost:8800^'Q!TlJCaYlCkOOVzFDlLx:localhost:8800]'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TWETXUgfFZafDdbqLS:localhost:88004'Q!TWETXUgfFZafDdbqLS:localhost:88003'Q!TWETXUgfFZafDdbqLS:localhost:88002'Q!TWETXUgfFZafDdbqLS:localhost:88001'Q!TWETXUgfFZafDdbqLS:localhost:88000'Q!TWETXUgfFZafDdbqLS:localhost:8800/'Q!TWETXUgfFZafDdbqLS:localhost:8800.'Q!TWETXUgfFZafDdbqLS:localhost:8800-'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800u'Q!SvKwEALYoNreUvqAlp:localhost:8800t'Q!SvKwEALYoNreUvqAlp:localhost:8800s'Q!SvKwEALYoNreUvqAlp:localhost:8800r'Q!SvKwEALYoNreUvqAlp:localhost:8800q'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!SvKwEALYoNreUvqAlp:localhost:8800p'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800#'Q!TcCLuIBUrtFqghDgay:localhost:8800"'Q!TcCLuIBUrtFqghDgay:localhost:8800!'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!SvKwEALYoNreUvqAlp:localhost:8800o'Q!SvKwEALYoNreUvqAlp:localhost:8800n'Q!StEnDjTJToXKXsOHNf:localhost:8829'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!SrwdtDytJDUBVZOueF:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800$'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800   6 p c]c@anon-20191002_181700-120:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVTOipCdzg5VyYreHpQU3QKMDAyZnNpZ25hdHVyZSAYUQgfytGViSF2as3CC_8kYmwKeQ0QKXuEETBOzCFR5wo127.0.0.1ea[a@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWSN2WXVlPTMqcXUyMHloTwowMDJmc2lnbmF0dXJlIElgAWxLGP37kzHWr9kr-ryrZrd7J-ty0eNd8-BjBJODCg127.0.0.1 a[a@anon-20191002_181700-11:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1NHK2U7Nll6emJHNDQ0KwowMDJmc2lnbmF0dXJlIEni_p5RLjJp-9jVuRCXWlD2ZeFaYCol1AW77S1Zb0nlCg127.0.0.1 c]c@anon-20191002_181700-119:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZaMHhvUCwjR2o2bS4jeDYKMDAyZnNpZ25hdHVyZSBGI1DZjNSoWO5ccdR8moMaFp3sqkXQMlto9vtETidKXwo127.0.0.1dc]c@anon-20191002_181700-118:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJjMG5YR1VMM24zKndZWGkKMDAyZnNpZ25hdHVyZSBwJ9KOfYWJyYplbLuMNEy-m3u4ADztrmKSQjsR1cFGhQo127.0.0.1c  n [H54]c!E@anon-20191002_181700-194:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEyOm1aOWtBTU5mNjtLNn4KMDAyZnNpZ25hdHVyZSAJNq38xYsAafEMGJjV-gyFAhEIRQMSyJcyHE_26icm3AoQUCVOCSWYA127.0.0.1Perl + Net::Async::HTTP/0.44mQ{31a%E@20:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZlAqPSxXKn5pXnk0OkBHTwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIL2BeshVfhts8YQdae9DJ7UFQnVNTRFffV076i9L-S-fCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mN2]c!E@anon-20191002_181700-193:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHMxS2NQZ2VtLGJvcCZibkMKMDAyZnNpZ25hdHVyZSA3TN7LnS5yl4h57FSwjwg9GfgdePN17_r5hXeFHnU2RAoPFHPRPBSVJ127.0.0.1Perl + Net::Async::HTTP/0.44m6 {11a%E@19:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSW9DYTd2SmxyOXZBN2ErRwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFFXI1T8uka05JtyfHQJjVTGEQH2CNCA7MRgOMOM3XwICgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m10]c!E@anon-20191002_181700-192:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZLT3hqPWp5PU9uRCM1VEMKMDAyZnNpZ25hdHVyZSC2EoqChhKnAKlLFg2seUiR0-JQqprG-ktdGIfMC6k8qAoOXPLOWSTCM127.0.0.1Perl + Net::Async::HTTP/0.44m}{/1a%E@18:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNWs7aXNYaCwmMmJJXmpNYQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIHmvdGjZx9PDEzLghbbZRbAAXV1IrS8sTsspJDM2mfFwCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mF.]c!E@anon-20191002_181700-191:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtlMlJqT3UqWEIsNSs3YzAKMDAyZnNpZ25hdHVyZSA1yZh7wJF3PyG6ywgs4xxgTMQPJbBMDXW2BrgJlZc33goCZZXBALTJT127.0.0.1Perl + Net::Async::HTTP/0.44m{-1a%E@17:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gVmxQPTBXLEQ1ck55a1NRVAowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlID4TV4jDe8XzM8I1F_eV7pQOZB6XTMr8qJwbCeCcTjVjCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mE,]c!E@anon-20191002_181700-190:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl0LCxpVnpnPWN4OFdEdyoKMDAyZnNpZ25hdHVyZSAvHPED72aJ9dwVSH5v0uE3tWyTMdN6NBhOex2nXfW16QoQIEZENAKEZ127.0.0.1Perl + Net::Async::HTTP/0.44m{+1a%E@16:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDE2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRktoSStZMWlBQUR2bXA0YQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIGkMsfrX_CDXuP0Xf33Iks0_9DU-E_vtEQC4bgdLzvYJCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m !dt }  2 ; c PYnw ,5XzdNQ? ee!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8sMQ))e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoApLQ? e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8hKQ/ e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rules$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8mJQ9 e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_alias$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEjIQ3 e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE HQ']e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cdGQ' e!MWCLSWWGdWcSivNVLI:localhost:8800m.room.create$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQpFQ? e!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibility$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0hEQ/ e!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rules$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wjDQ3 e!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg CQ']e!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEdBQ' e!erBPdgtUsiOfIKUkho:localhost:8800m.room.create$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4AQ? ee!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIp@Q? e!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIh?Q/ e!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rules$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsj>Q3 e!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk =Q']e!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQd<Q' e!dWgOTucBVQBKZjfndN:localhost:8800m.room.create$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk;Q? ee!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosp:Q? e!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosh9Q/ e!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rules$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Uj8Q3 e!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ 7Q']e!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMd6Q' e!hSzBsirdPWHtVjagXn:localhost:8800m.room.create$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIp5Q? e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibility$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUh4Q/ e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rules$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkj3Q3 e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0 2Q']e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwd1Q' e!mfzIRinBAGGrZvQAuI:localhost:8800m.room.create$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ"0Q'1ee!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwv/Q'1e!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAwj.Q3 e!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_access$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0  zeQ_$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 902}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw"], "type": "m.room.guest_access", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041098306, "hashes": {"sha256": "3+v9zKQngz0ZblyLGd2xAjCKVPJMiyLBWRu1l2ORCvI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lO7yzkMj2tw6XvaA2NVxUhEZBxc25sen0UCPaB3L9fBvKjuy3cp0dNa6aiZn52Yj/ckznF8kamqdqc1RxZ1bDA"}}, "unsigned": {"age_ts": 1570041098306}}eQ_$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 901}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI"], "type": "m.room.history_visibility", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041097213, "hashes": {"sha256": "B5GjQBScjeX3sA5RIoAFlFjgPaSsiPVira4BpD2Xq50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a60n9vcafhE47fFN36Pf5meeOsP/R/T6XdcgCWErrPm+g0Y6RlSC/hk3srB5q4XMllv/Ydek9S/8NqITM5hmBQ"}}, "unsigned": {"age_ts": 1570041097213}}seQ_u$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 900}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I"], "type": "m.room.join_rules", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041096645, "hashes": {"sha256": "B2vPvKyb3oqlwUeNnMtdEj3yEmGFFchpy35NwVZpQZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lFAdAseVKUt669v5i4bG4RkRVKdOqxBf9tA4tnYvAReJk8IZLUFdgvf5T11i68blk54IDFJIcdVWWG4pybjTAA"}}, "unsigned": {"age_ts": 1570041096645}}jeQ_c$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 899}{"auth_events": ["$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "type": "m.room.power_levels", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"users": {"@anon-20191002_181700-190:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041096003, "hashes": {"sha256": "h+7/Lrvii+4RVglZhyola4E2a6FkswUOif01m/A0y9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7P4MzvQ4LwuRf3vSnt2xTZK0PBZvllX88p8PgAlOb2Fa3/slJqK4G2/uRgu8r98+nVUMrMpEj+/UnAgAKgnFDA"}}, "unsigned": {"age_ts": 1570041096003}} Nj8p> $V x F  ~d L  R X & ^ ,2j8p> vD|JP\+1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58'1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s J0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kka1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM-1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 K1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU 1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM71e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ041e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM01e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMQ1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsz1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccl1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikB1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8O1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws&1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 21e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncY1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wV1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 !1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU r1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AE1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0C1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls|1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UQ1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs o1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gu1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM91e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw ;1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQj1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw !0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkA1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0-1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo~1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo#1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 n  x eQy$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "txn_id": "74", "stream_ordering": 905}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw"], "type": "m.room.message", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041100636, "hashes": {"sha256": "U/ihOdfmR9R3HS/TxEaXC0CGdLKWDJk8TYVmgpqEnDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xP1GbwMG1As4LOvGTg3ssfUyOXR3g/YLVKpAVlg6x2X8anNlSSXRVmAMx9Cr+MkghbZRbtmAchT2Phyivk30AQ"}}, "unsigned": {"age_ts": 1570041100636}}heQ__$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "stream_ordering": 904}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g"], "type": "m.room.member", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"membership": "invite", "displayname": "17", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@17:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041099745, "hashes": {"sha256": "acttZoNqV2BfjsnlBlKPrgZRu39qO/ZylsEimF+LwC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lDd/3z+f2Vv6ECeiV3igojAG17gDsnRpwxdzev5QGFwB2zVTjRKjqDFH0wukqK+ufByHjSvJl4byzVuK10xnCw"}}, "unsigned": {"age_ts": 1570041099745, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-190:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-190:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-190", "avatar_url": null}, "sender": "@anon-20191002_181700-190:localhost:8800"}]}}eQw$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800{"token_id": 211, "txn_id": "73", "stream_ordering": 903}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc"], "prev_events": ["$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0"], "type": "m.room.message", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@anon-20191002_181700-190:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041098994, "hashes": {"sha256": "FeUOZDVKaivP+yPa0sP69hoUaM6LI3hTfCm+dq/tJT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P231RR3K54uSNyDQEJ0hl17mCk3pc/XDq40aUhFeU/vZhNm007iN3RLywZ6vcYWaZI2DXky6PLN/I6xX4Q49DQ"}}, "unsigned": {"age_ts": 1570041098994}} Nj8p> $V x F  ~d L  R X & ^ ,2j8p> vD|JP\+1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58'1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s J0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kka1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM'1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 I1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU 1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM71e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ041e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM01e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMQ1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsz1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccl1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikB1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8O1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws&1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 21e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncY1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wV1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 !1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU r1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AE1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0C1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls|1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UQ1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs o1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gu1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM91e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw ;1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90 1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQj1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw !0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkA1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0-1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo~1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo#1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 n S & :Sj eQ_c$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 909}{"auth_events": ["$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "type": "m.room.power_levels", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"users": {"@anon-20191002_181700-191:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041105024, "hashes": {"sha256": "IZebBlyo4AaroTONyfXMokGN19hplrogKNxtKtxu6c0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T1JSID1///ZgylW7yD5xu+n2haC8Dydq9XU1Q+OiMT6LFjLZbVF2flkyrmFkxQslXQknnyPuXRRPG28rLwCsDg"}}, "unsigned": {"age_ts": 1570041105024}}u eQ_y$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 908}{"auth_events": ["$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ"], "prev_events": ["$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ"], "type": "m.room.member", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-191", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-191:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041103963, "hashes": {"sha256": "yc816pJgLDClvj0cIIAoawnikAgtoOuOulIwtYvBZ7I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6FAX9pf4vt0NQx/AxIqBkddJbXl6+IiBWqI7uCjLGqgMt6FUMQzCMY7pTQ0rmo+8ikz/WCdu4FISnblI6Mz6Bw"}}, "unsigned": {"age_ts": 1570041103963}}h eQ__$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 907}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-191:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041103229, "hashes": {"sha256": "IbC0g2k6D4LmwU8QoBURfgnzwcAzQtTVOyzdKCUQnRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I9d36HIsqua05vE0gS5Jl7q4XPtfWPIa8U79ltLRqfZ74SV8ekwEGOhHoXoKRLzEOxNGRiAMaTuGT7/4f136Aw"}}, "unsigned": {"age_ts": 1570041103229}}V eQ=]$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800{"stream_ordering": 906}{"auth_events": ["$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I", "$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0", "$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI"], "prev_events": ["$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg"], "type": "m.room.member", "room_id": "!FPcQcheNebvdFvmOnr:localhost:8800", "sender": "@17:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "17", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@17:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041101224, "hashes": {"sha256": "yr8a7xUZPgodcAeT4bPDbz/90n+wyAAKRArSsFj4giQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqRIb4IxoB+ADms1Cmu6LpGdOleS2varGQrrfawas51I4hjIr8l9zQuECvAAmw1CLcpzpRZJlTKTQYm5rQ+WCA"}}, "unsigned": {"age_ts": 1570041101224, "replaces_state": "$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw"}} -RM H C > 9 4/*|%w rmhc TQe!tkajvIKHoOMWGsReBs:localhost:8800$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObITQe!tkajvIKHoOMWGsReBs:localhost:8800$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0TQe!tkajvIKHoOMWGsReBs:localhost:8800$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkTQe!tkajvIKHoOMWGsReBs:localhost:8800$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0TQe!tkajvIKHoOMWGsReBs:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0TQe!tkajvIKHoOMWGsReBs:localhost:8800$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gTQe!fcdNYFWFyxmdpKAknc:localhost:8800$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYTQe!fcdNYFWFyxmdpKAknc:localhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVITQe!fcdNYFWFyxmdpKAknc:localhost:8800$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00TQe!fcdNYFWFyxmdpKAknc:localhost:8800$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0T~Qe~!fcdNYFWFyxmdpKAknc:localhost:8800$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikT}Qe}!fcdNYFWFyxmdpKAknc:localhost:8800$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8T|Qe|!fcdNYFWFyxmdpKAknc:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIT{Qe{!fcdNYFWFyxmdpKAknc:localhost:8800$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQTzQez!MWCLSWWGdWcSivNVLI:localhost:8800$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15AumwTyQey!MWCLSWWGdWcSivNVLI:localhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoATxQex!MWCLSWWGdWcSivNVLI:localhost:8800$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8TwQew!MWCLSWWGdWcSivNVLI:localhost:8800$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8TvQev!MWCLSWWGdWcSivNVLI:localhost:8800$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsETuQeu!MWCLSWWGdWcSivNVLI:localhost:8800$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNETtQet!MWCLSWWGdWcSivNVLI:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cTsQes!MWCLSWWGdWcSivNVLI:localhost:8800$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQTrQer!erBPdgtUsiOfIKUkho:localhost:8800$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0TqQeq!erBPdgtUsiOfIKUkho:localhost:8800$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wTpQep!erBPdgtUsiOfIKUkho:localhost:8800$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1GgToQeo!erBPdgtUsiOfIKUkho:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxETnQen!erBPdgtUsiOfIKUkho:localhost:8800$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4TmQem!dWgOTucBVQBKZjfndN:localhost:8800$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4TlQel!dWgOTucBVQBKZjfndN:localhost:8800$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnITkQek!dWgOTucBVQBKZjfndN:localhost:8800$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsTjQej!dWgOTucBVQBKZjfndN:localhost:8800$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkTiQei!dWgOTucBVQBKZjfndN:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQThQeh!dWgOTucBVQBKZjfndN:localhost:8800$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkTgQeg!hSzBsirdPWHtVjagXn:localhost:8800$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwTfQef!hSzBsirdPWHtVjagXn:localhost:8800$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosTeQee!hSzBsirdPWHtVjagXn:localhost:8800$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UTdQed!hSzBsirdPWHtVjagXn:localhost:8800$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQTcQec!hSzBsirdPWHtVjagXn:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMTbQeb!hSzBsirdPWHtVjagXn:localhost:8800$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXITaQea!mfzIRinBAGGrZvQAuI:localhost:8800$r_hXaVKZmV0IIXEBxUBb7sDraQn2hcW9UKClFAINECAT`Qe`!mfzIRinBAGGrZvQAuI:localhost:8800$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUT_Qe_!mfzIRinBAGGrZvQAuI:localhost:8800$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkT^Qe^!mfzIRinBAGGrZvQAuI:localhost:8800$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0T]Qe]!mfzIRinBAGGrZvQAuI:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwT\Qe\!mfzIRinBAGGrZvQAuI:localhost:8800$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ  ; a 9 e j /4\gw-R~eeQ/ $IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rulesgeQ3 $-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels eQ']$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800joina eQ' $edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800m.room.createm eQ? $Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibilitye eQ/ $riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rulesg eQ3 $6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels eQ']$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800joinaeQ' $PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800m.room.createmeQ? $n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibilitytmeQ? $jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibilityw|eQ'1$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@17:localhost:8800joing{eQ3 $sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800m.room.guest_accessmzeQ? $CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800m.room.history_visibilityeyeQ/ $fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI!FPcQcheNebvdFvmOnr:localhost:8800m.room.join_rulesgxeQ3 $xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800m.room.power_levels weQ']$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800m.room.member@anon-20191002_181700-190:localhost:8800joinaveQ' $tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0!FPcQcheNebvdFvmOnr:localhost:8800m.room.createeeQ/ $sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rulesgeQ3 $kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels eQ']$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800joinaeQ' $0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800m.room.createmeQ? $FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800m.room.history_visibilityeeQ/ $n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800m.room.join_rulesgeQ3 $O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800m.room.power_levels ~eQ']$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800m.room.member@anon-20191002_181700-191:localhost:8800joina}eQ' $aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800m.room.create Mj8p> v D  | J  P  V $ \ *b0i7o= uD}KQW%^,1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA e1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoh1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Ys1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE_1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Wwz1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI ;1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF490e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ%1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 {1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0_1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo/1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw71e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo#1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg r1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 31e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQC1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT011e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8r1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo s1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ K1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwc1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg41e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQov1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog D1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ew1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg}1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s 1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAO1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc J1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI  heQ__$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 913}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-192:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041110350, "hashes": {"sha256": "vSUG88UwmAlc57JPCZVtturtw4jdokBG0DJgSHPjoX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AQUYW6RPq8Zg93Xe3Irds/quFk8LzKGPVY3xHR7o+dhwEk/3wSR0ULAl/+sQDh9eGj09CknDygs9hDxOt+4oAw"}}, "unsigned": {"age_ts": 1570041110350}}}eQi$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "txn_id": "75", "stream_ordering": 912}{"auth_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0", "$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU"], "type": "m.room.message", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041108314, "hashes": {"sha256": "PwJOCgpjsGPs4OBaYT2JmmKPMOnrs8PFo8Cdjl3QX2Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HHaSkvbtm3/etQ+nu3FPqnaldKK5YwGiUqVlt/SutOWp+splNC5aLKBAsUm3ATdbJtFljxJeSZgXTcjpWljmBw"}}, "unsigned": {"age_ts": 1570041108314}}eQ_$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 911}{"auth_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0", "$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk"], "type": "m.room.history_visibility", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041106914, "hashes": {"sha256": "VTokMT+XMQ82OEn5x0JlZ7XGoB+aL7eSBM4eWEfoZz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZF4PkjKIFlkkWn9E/5dqCnVwImHw7ktOSXF2wkp439wuOmewqXT/fulvz/ldSycY93U0skdVP+B1XwTCVD/8Cg"}}, "unsigned": {"age_ts": 1570041106914}}s eQ_u$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800{"token_id": 212, "stream_ordering": 910}{"auth_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0", "$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ", "$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw"], "prev_events": ["$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0"], "type": "m.room.join_rules", "room_id": "!mfzIRinBAGGrZvQAuI:localhost:8800", "sender": "@anon-20191002_181700-191:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041106197, "hashes": {"sha256": "crR0BTrwY4cDAdWy0C0zCMnjqKvYHq11G+K8BIm/3pA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c7AHl/ao2QUxurJpdUVYRB2yt6tmWsaHFCfu1HcHSES7Uj1i72uj6189HyfLNYnG2/6nKGsWXB0/b82PArNYAA"}}, "unsigned": {"age_ts": 1570041106197}} a} { y w u sqomkigeca~eeeQ$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800~deeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~ceeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~beeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800~aeeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~`eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~_eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800~^eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~]eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~\eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800~[eeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800~ZeeQ$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~YeeQ$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800~XeeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~WeeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~VeeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800~UeeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~TeeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~SeeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800~ReeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~QeeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~PeeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800~OeeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800~NeeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~MeeQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800~LeeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800~KeeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~JeeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800~IeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800~HeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800~GeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Ve$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781Ue$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41Te$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1Se$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk1Re$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1Qe$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1Pe$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1Oe$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1Ne$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41Me$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1Le$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1Ke$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1Je$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1Ie$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1He$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1Ge$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41Fe$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81Ee$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81De$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701Ce$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1Be$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41Ae$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg1@e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1?e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1>e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1=e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1<e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1;e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1:e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI19e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j018e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk17e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws016e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie015e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g14e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs13e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY12e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w11e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI10e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001/e$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI01.e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik~1-e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8}1,e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI|1+e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ{1*e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgz1)e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwz1(e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAy1'e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8x1&e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8w1%e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEv1$e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEu1#e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74ct1"e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQs1!e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8r1 e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0r1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wq1e$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggp1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEo1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4n1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcm1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4m1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIl1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsk1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkj1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQi1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkh1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUg1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwg1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosf1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Ue1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQd1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMc1e$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIb1 e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0`1 e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU` <^ h  c  sk$.~7<)(e9Q ]$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEm.room.canonical_alias!MWCLSWWGdWcSivNVLI:localhost:8800msmt@anon-20191002_181700-195:localhost:8800&'e3Q ]$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEm.room.power_levels!MWCLSWWGdWcSivNVLI:localhost:8800mq3mr}@anon-20191002_181700-195:localhost:8800 &e'Q ]$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cm.room.member!MWCLSWWGdWcSivNVLI:localhost:8800mnmn@anon-20191002_181700-195:localhost:8800% e'Q  ]$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQm.room.create!MWCLSWWGdWcSivNVLI:localhost:8800mj(mjv@anon-20191002_181700-195:localhost:8800!$e)Q ]$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8m.room.message!erBPdgtUsiOfIKUkho:localhost:8800mb2mb@anon-20191002_181700-194:localhost:8800,#e?Q ]$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0m.room.history_visibility!erBPdgtUsiOfIKUkho:localhost:8800m^m`x@anon-20191002_181700-194:localhost:8800$"e/Q ]$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wm.room.join_rules!erBPdgtUsiOfIKUkho:localhost:8800m\Cm]@anon-20191002_181700-194:localhost:8800&!e3Q ]$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Ggm.room.power_levels!erBPdgtUsiOfIKUkho:localhost:8800mWmX@anon-20191002_181700-194:localhost:8800 e'Q ]$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEm.room.member!erBPdgtUsiOfIKUkho:localhost:8800mUnmU@anon-20191002_181700-194:localhost:8800 e'Q  ]$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4m.room.create!erBPdgtUsiOfIKUkho:localhost:8800mRCmR@anon-20191002_181700-194:localhost:8800!e)Q ]$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcm.room.message!dWgOTucBVQBKZjfndN:localhost:8800mLemL@anon-20191002_181700-193:localhost:8800,e?Q ]$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4m.room.history_visibility!dWgOTucBVQBKZjfndN:localhost:8800mIfmJk@anon-20191002_181700-193:localhost:8800,e?Q ]$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIm.room.history_visibility!dWgOTucBVQBKZjfndN:localhost:8800mCmE@anon-20191002_181700-193:localhost:8800$e/Q ]$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsm.room.join_rules!dWgOTucBVQBKZjfndN:localhost:8800mA>mB@anon-20191002_181700-193:localhost:8800&e3Q ]$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkm.room.power_levels!dWgOTucBVQBKZjfndN:localhost:8800m>rm?@anon-20191002_181700-193:localhost:8800 e'Q ]$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQm.room.member!dWgOTucBVQBKZjfndN:localhost:8800m9m;6@anon-20191002_181700-193:localhost:8800 e'Q  ]$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWkm.room.create!dWgOTucBVQBKZjfndN:localhost:8800m6m6@anon-20191002_181700-193:localhost:8800!e)Q ]$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUm.room.message!hSzBsirdPWHtVjagXn:localhost:8800m/Hm/@anon-20191002_181700-192:localhost:8800,e?Q ]$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwm.room.history_visibility!hSzBsirdPWHtVjagXn:localhost:8800m,m-@anon-20191002_181700-192:localhost:8800,e?Q ]$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosm.room.history_visibility!hSzBsirdPWHtVjagXn:localhost:8800m)(m+>@anon-20191002_181700-192:localhost:8800$e/Q ]$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Um.room.join_rules!hSzBsirdPWHtVjagXn:localhost:8800m&m'q@anon-20191002_181700-192:localhost:8800&e3Q ]$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQm.room.power_levels!hSzBsirdPWHtVjagXn:localhost:8800m$5m%E@anon-20191002_181700-192:localhost:8800 e'Q ]$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMm.room.member!hSzBsirdPWHtVjagXn:localhost:8800m"m"@anon-20191002_181700-192:localhost:8800 e'Q  ]$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXIm.room.create!hSzBsirdPWHtVjagXn:localhost:8800mNm@anon-20191002_181700-192:localhost:8800  eQ_$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 917}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U"], "type": "m.room.history_visibility", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041112872, "hashes": {"sha256": "2xTXco3N/h4+ejHFu0CjzoJiBNpjWs9ErgOI+kXCU30"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cFX3jeb+SVmNVMsLJ4GfbXAqVuUHvGcHNZh2KVbpzlL60zbryjmN6BhQ3IVreNCb7TKQtgvjIqSMKDJfHZY3Dg"}}, "unsigned": {"age_ts": 1570041112872}}seQ_u$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 916}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ"], "type": "m.room.join_rules", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041112230, "hashes": {"sha256": "ooYV6Zh4WYZ7mrYYcZmDLd8RlGTHc9PC0QV5IHgNqio"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "anRenQ9hMnQ/kPAfn/YQBLK7F7v/sR4TtfknRHKybhltLvi+MFCItQRG6FnmR3elz5R1Jhldz9BSCzSoe+dNCg"}}, "unsigned": {"age_ts": 1570041112230}}jeQ_c$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 915}{"auth_events": ["$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "type": "m.room.power_levels", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"users": {"@anon-20191002_181700-192:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041111605, "hashes": {"sha256": "/hYzWlyj7g01ilsB3tndNxynGKSkRtXGgTo7B3twktM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WyH7tm8Lm5NJ5JZoz1diNUTI+HAjDDWf03GolOU3RCIqEdmnflxcG/zdJyyyjLswnkro4a/OsMFGGBdXqXWzBA"}}, "unsigned": {"age_ts": 1570041111605}}ueQ_y$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 914}{"auth_events": ["$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI"], "prev_events": ["$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI"], "type": "m.room.member", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-192", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-192:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041111063, "hashes": {"sha256": "OldJE3/+oUDqD+D4B6Vbb4ItZ20+VLD9PXMXMbLXvEg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fUH5KMkHwGnX00/hSc6uyDieYwRN4dbJlLIjNq7M/CHVTA9z2Ijk51gpysVI6MsPQfW8UkZEdaZ+g2HJUaA3Cg"}}, "unsigned": {"age_ts": 1570041111063}} [\1Z/ X -  V +  T )oD } R ' { P %yN#wL!umBk@JsHqF*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!kjjUsMowsioSQRIJeg:localhost:8800 Q *Q!kjjUsMowsioSQRIJeg:localhost:8800 P *Q!kjjUsMowsioSQRIJeg:localhost:8800 O *Q!kjjUsMowsioSQRIJeg:localhost:8800 N *Q!kjjUsMowsioSQRIJeg:localhost:8800 M *Q!kjjUsMowsioSQRIJeg:localhost:8800 L ~*Q!kjjUsMowsioSQRIJeg:localhost:8800 K }*Q!kjjUsMowsioSQRIJeg:localhost:8800 J |*Q!kjjUsMowsioSQRIJeg:localhost:8800 I {*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jomrpmwwQQtghscizn:localhost:8800)*Q!jomrpmwwQQtghscizn:localhost:8800(*Q!jomrpmwwQQtghscizn:localhost:8800'*Q!jomrpmwwQQtghscizn:localhost:8800&*Q!jomrpmwwQQtghscizn:localhost:8800%*Q!jomrpmwwQQtghscizn:localhost:8800$*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kOmCTyiizHqfCJdhlR:localhost:8800 ] *Q!kOmCTyiizHqfCJdhlR:localhost:8800 \ *Q!kOmCTyiizHqfCJdhlR:localhost:8800 [ *Q!kOmCTyiizHqfCJdhlR:localhost:8800 Z *Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y *Q!kOmCTyiizHqfCJdhlR:localhost:8800 X *Q!kOmCTyiizHqfCJdhlR:localhost:8800 W *Q!kOmCTyiizHqfCJdhlR:localhost:8800 V *Q!kOmCTyiizHqfCJdhlR:localhost:8800 U *Q!kOmCTyiizHqfCJdhlR:localhost:8800 T *Q!kAxKaIQhXTtGFWSUgr:localhost:8800 5*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 4*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 3*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 2*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 1*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 0*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 /*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 .*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 -*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,*Q!jveVPZSXJOJyNDebPO:localhost:8800LR*Q!jveVPZSXJOJyNDebPO:localhost:8800KQ*Q!jveVPZSXJOJyNDebPO:localhost:8800JP*Q!jveVPZSXJOJyNDebPO:localhost:8800IO*Q!jveVPZSXJOJyNDebPO:localhost:8800HN*Q!jveVPZSXJOJyNDebPO:localhost:8800GM*Q!jveVPZSXJOJyNDebPO:localhost:8800FL*Q!jveVPZSXJOJyNDebPO:localhost:8800EK*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800(Q!jYzridjeihmwPBuwLb:localhost:8800YX(Q!jYzridjeihmwPBuwLb:localhost:8800XW(Q!jYzridjeihmwPBuwLb:localhost:8800WV(Q!jYzridjeihmwPBuwLb:localhost:8800VU PoF {@ y N # L ! u J  % <g >i w k Pi@ s HmB qFoD'T)   {*Q!laUExtszUaoCpZoyEq:localhost:8800 (Q!kxTDuIasPNpXtiRsif:localhost:8800(Q!kxTDuIasPNpXtiRsif:localhost:8800~~(Q!kxTDuIasPNpXtiRsif:localhost:8800}}*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800(Q!loalEsWaTYwrVUNJLr:localhost:8800))(Q!loalEsWaTYwrVUNJLr:localhost:8800(((Q!loalEsWaTYwrVUNJLr:localhost:8800''(Q!loalEsWaTYwrVUNJLr:localhost:8800&&(Q!loalEsWaTYwrVUNJLr:localhost:8800%%(Q!loalEsWaTYwrVUNJLr:localhost:8800$$*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OO*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QQ*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PP*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RR*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!mBQpGaIiadEuKBXfOw:localhost:8800MM*Q!mBQpGaIiadEuKBXfOw:localhost:8800LL*Q!mBQpGaIiadEuKBXfOw:localhost:8800KK*Q!mBQpGaIiadEuKBXfOw:localhost:8800JJ*Q!mBQpGaIiadEuKBXfOw:localhost:8800II*Q!mBQpGaIiadEuKBXfOw:localhost:8800HH*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mMsxpaIlcykPuOnDyl:localhost:8800~~*Q!mMsxpaIlcykPuOnDyl:localhost:8800}}*Q!mMsxpaIlcykPuOnDyl:localhost:8800||*Q!mMsxpaIlcykPuOnDyl:localhost:8800{{*Q!mMsxpaIlcykPuOnDyl:localhost:8800zz*Q!mMsxpaIlcykPuOnDyl:localhost:8800yy*Q!mMsxpaIlcykPuOnDyl:localhost:8800xx*Q!mMsxpaIlcykPuOnDyl:localhost:8800ww*Q!mMsxpaIlcykPuOnDyl:localhost:8800vv*Q!mMsxpaIlcykPuOnDyl:localhost:8800uu*Q!mBQpGaIiadEuKBXfOw:localhost:8800GG*Q!mBQpGaIiadEuKBXfOw:localhost:8800FF*Q!lEJUJZxqZPKZetemiR:localhost:8800 7 7*Q!lEJUJZxqZPKZetemiR:localhost:8800 6 6*Q!lEJUJZxqZPKZetemiR:localhost:8800 5 5*Q!lEJUJZxqZPKZetemiR:localhost:8800 4 4*Q!lEJUJZxqZPKZetemiR:localhost:8800 3 3*Q!lEJUJZxqZPKZetemiR:localhost:8800 2 2*Q!lEJUJZxqZPKZetemiR:localhost:8800 1 1*Q!lEJUJZxqZPKZetemiR:localhost:8800 0 0*Q!lEJUJZxqZPKZetemiR:localhost:8800 / /*Q!lEJUJZxqZPKZetemiR:localhost:8800 . .*Q!lEJUJZxqZPKZetemiR:localhost:8800 - -*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NN*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800MM*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lEJUJZxqZPKZetemiR:localhost:8800 8 8*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 a0pH  h@ x PXxP(px P ( ` 8  `8h@`8 p H XH X 0  ( h @  0'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800}'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:88000'Q!cOFSwLSkxZECJMvjjZ:localhost:8800~'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!bzPCFeFSMbCESvNbxl:localhost:88003'Q!bzPCFeFSMbCESvNbxl:localhost:88002'Q!bzPCFeFSMbCESvNbxl:localhost:88001'Q!cHtqiAyCHEAoBIbCmL:localhost:8800H'Q!cHtqiAyCHEAoBIbCmL:localhost:8800G'Q!cHtqiAyCHEAoBIbCmL:localhost:8800F'Q!cHtqiAyCHEAoBIbCmL:localhost:8800E'Q!cHtqiAyCHEAoBIbCmL:localhost:8800D'Q!bzPCFeFSMbCESvNbxl:localhost:88007'Q!bzPCFeFSMbCESvNbxl:localhost:88006'Q!bzPCFeFSMbCESvNbxl:localhost:88005'Q!bzPCFeFSMbCESvNbxl:localhost:88004'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!coGyOAgYnlBZAqznax:localhost:8800 'Q!cGkVFpidyBBxUxsszG:localhost:8800M'Q!cGkVFpidyBBxUxsszG:localhost:8800L'Q!cSUQGmpIsSCBAVTOHo:localhost:8800t'Q!cHtqiAyCHEAoBIbCmL:localhost:8800K'Q!cHtqiAyCHEAoBIbCmL:localhost:8800J'Q!cHtqiAyCHEAoBIbCmL:localhost:8800I'Q!cGkVFpidyBBxUxsszG:localhost:8800O'Q!cGkVFpidyBBxUxsszG:localhost:8800N'Q!cGkVFpidyBBxUxsszG:localhost:8800U'Q!cGkVFpidyBBxUxsszG:localhost:8800T'Q!cGkVFpidyBBxUxsszG:localhost:8800S'Q!cGkVFpidyBBxUxsszG:localhost:8800R'Q!cGkVFpidyBBxUxsszG:localhost:8800Q'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cSUQGmpIsSCBAVTOHo:localhost:8800x'Q!cSUQGmpIsSCBAVTOHo:localhost:8800w'Q!cSUQGmpIsSCBAVTOHo:localhost:8800v'Q!cSUQGmpIsSCBAVTOHo:localhost:8800u'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cGkVFpidyBBxUxsszG:localhost:8800P'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cHtqiAyCHEAoBIbCmL:localhost:8800B'Q!cOFSwLSkxZECJMvjjZ:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800 G'Q!dBfASZrfiFeSKTjYJm:localhost:8800 F'Q!dBfASZrfiFeSKTjYJm:localhost:8800 E'Q!dBfASZrfiFeSKTjYJm:localhost:8800 D'Q!dBfASZrfiFeSKTjYJm:localhost:8800 C'Q!dBfASZrfiFeSKTjYJm:localhost:8800 B'Q!dBfASZrfiFeSKTjYJm:localhost:8800 A'Q!csWEXfVEVxdviNvgAd:localhost:8800('Q!csWEXfVEVxdviNvgAd:localhost:8800''Q!csWEXfVEVxdviNvgAd:localhost:8800&'Q!csWEXfVEVxdviNvgAd:localhost:8800%'Q!csWEXfVEVxdviNvgAd:localhost:8800"'Q!csWEXfVEVxdviNvgAd:localhost:8800!'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800|'Q!cOFSwLSkxZECJMvjjZ:localhost:8800{'Q!dBfASZrfiFeSKTjYJm:localhost:8800 I'Q!dBfASZrfiFeSKTjYJm:localhost:8800 H'Q!cidyuyekVzJHHvyomb:localhost:8800 ,'Q!cidyuyekVzJHHvyomb:localhost:8800 +'Q!cidyuyekVzJHHvyomb:localhost:8800 *'Q!cidyuyekVzJHHvyomb:localhost:8800 )'Q!cidyuyekVzJHHvyomb:localhost:8800 ('Q!cidyuyekVzJHHvyomb:localhost:8800 ' O 5OueQ_y$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 921}{"auth_events": ["$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk"], "prev_events": ["$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk"], "type": "m.room.member", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-193", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-193:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041117154, "hashes": {"sha256": "bKnDqIDs3HceNiPpom2RjYYRbkQMM5lWlEL/MEbGqDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ulb3hMGA+w3dlH3+ZK9cqntv8DcNRU4/wA3nVlzAxH4eI4rR6jJ1xQJf2o/lZAHi0Vg61irDvWoxhVdB7iGSDg"}}, "unsigned": {"age_ts": 1570041117154}}heQ__$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 920}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-193:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041116288, "hashes": {"sha256": "y5KbEqdllQEYE3q61F3wQxUNuwyDgaUUO0XaEmOGHaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GqkE4X7+/rbDa77trzFF+ktmQYULR3DY7VjcYkfDk4axNFoocF3gtAYHUuAizM9x0PvumwdTI9W1szaq2Ry+Dw"}}, "unsigned": {"age_ts": 1570041116288}}}eQi$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "txn_id": "76", "stream_ordering": 919}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw"], "type": "m.room.message", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041114440, "hashes": {"sha256": "YE8FvI+WLzSce2e500LQAQdqByvdrPJxJsDwGVzqsf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mlcWtCf1eP5fnHHB31MDpX9+D6IebjVt42yT4PT1qfi+QcWqWqe+AY8yYxZMfQXuUyJJJ1/gKPoqUWx0FbT0BQ"}}, "unsigned": {"age_ts": 1570041114440}}GeQ_$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800{"token_id": 213, "stream_ordering": 918}{"auth_events": ["$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ", "$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI", "$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM"], "prev_events": ["$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos"], "type": "m.room.history_visibility", "room_id": "!hSzBsirdPWHtVjagXn:localhost:8800", "sender": "@anon-20191002_181700-192:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041113831, "hashes": {"sha256": "ta7WlcZhzpLJiJg8i68xC4al6QLfNYt/efN8o+Wppq8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oasm5YesqzNAwJXL6MWHSKESUv7IzzLsrKpIe1c9emFiAp94BfAxgcC0Yt8WLDG9U89IcEwHay6YSrNyqiBQBQ"}}, "unsigned": {"age_ts": 1570041113831, "replaces_state": "$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos"}} #,5 ] * V _7Fo$PYa_eQ' $cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800m.room.createm^eQ? $IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibilitym]eQ? $KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibilitye\eQ/ $kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rulesg[eQ3 $OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels ZeQ']$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800aYeQ' $fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800m.room.createmXeQ? $31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibilitypWeQ))$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800mVeQ? $rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibilityeUeQ/ $0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rulesjTeQ9 $hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_aliasgSeQ3 $qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels ReQ']$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800aQeQ' $jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800m.room.createmPeQ? $4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibilitypOeQ))$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800mNeQ? $8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibilityeMeQ/ $8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rulesjLeQ9 $sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_aliasgKeQ3 $G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels JeQ']$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800aIeQ' $YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800m.room.createmHeQ? $jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibilityeGeQ/ $IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rulesgFeQ3 $-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels EeQ']$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800aDeQ' $edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800m.room.createmCeQ? $Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibilitymBeQ? $bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibilityeAeQ/ $riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rulesg@eQ3 $6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels ?eQ']$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800a>eQ' $PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800m.room.createm=eQ? $n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility "q) Q V z   @Y;T_? Q']e!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsc Q' e!JGhlAUflyNxErGGZZu:localhost:8800m.room.create$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMo Q? e!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIo Q? e!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0gQ/ e!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rules$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkiQ3 e!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0 Q']e!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0cQ' e!tkajvIKHoOMWGsReBs:localhost:8800m.room.create$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1goQ? e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYrQ))e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIoQ? e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00gQ/ e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rules$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0lQ9 e~!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_alias$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikiQ3 e}!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8 ~Q']e|!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIc}Q' e{!fcdNYFWFyxmdpKAknc:localhost:8800m.room.create$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQo|Q? ez!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwr{Q))ey!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAozQ? ex!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8gyQ/ ew!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rules$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8lxQ9 ev!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_alias$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEiwQ3 eu!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE vQ']et!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74ccuQ' es!MWCLSWWGdWcSivNVLI:localhost:8800m.room.create$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQotQ? er!erBPdgtUsiOfIKUkho:localhost:8800m.room.history_visibility$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0gsQ/ eq!erBPdgtUsiOfIKUkho:localhost:8800m.room.join_rules$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wirQ3 ep!erBPdgtUsiOfIKUkho:localhost:8800m.room.power_levels$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg qQ']eo!erBPdgtUsiOfIKUkho:localhost:8800m.room.member@anon-20191002_181700-194:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEcpQ' en!erBPdgtUsiOfIKUkho:localhost:8800m.room.create$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4ooQ? em!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4onQ? el!dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIgmQ/ ek!dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rules$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsilQ3 ej!dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk kQ']ei!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ  N<eQ_+$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 957}{"auth_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0", "$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0"], "type": "m.room.history_visibility", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041151884, "hashes": {"sha256": "0+IreckMr1jS4/drZE+znYOMXIAfXtZNXDHpnQ1K/Lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "adLJGdPMGizEPknwlQp8S55r9RJvSj8Ei5jb9krdjRzyRW8V3LVxxwFRv0fr+ZTloFX0HmYpEjllVq26Bgi0Cg"}}, "unsigned": {"age_ts": 1570041151884, "replaces_state": "$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0"}};eQ_$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 956}{"auth_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0", "$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk"], "type": "m.room.history_visibility", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041150502, "hashes": {"sha256": "StIdO1zYF0OsqUkkztk+9LCVUEBi/HkoFBLNaZ9fiD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c43/CbOF0httb1M5KXOkvaHArXwSbdDiC1lUiqADpQBMJhxYv9+73p0h51CXAv6wvYFn6fuE+ey2ykaSte44Cg"}}, "unsigned": {"age_ts": 1570041150502}}s:eQ_u$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 955}{"auth_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0", "$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0"], "type": "m.room.join_rules", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041149759, "hashes": {"sha256": "yw6R/WcGPHb5TtZHK+58Up/AxAOfleDVlXK3wngMBa4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "00UTCcNa8jTD+xWO7S5n0bWUeJ74yHUM+0TgWQGZLLmH5fLWaW+254vrQo8ecg124T+lmWMLYOCbejJfBuwDDA"}}, "unsigned": {"age_ts": 1570041149759}}j9eQ_c$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 954}{"auth_events": ["$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g", "$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "prev_events": ["$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"], "type": "m.room.power_levels", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"users": {"@anon-20191002_181700-198:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041149132, "hashes": {"sha256": "d8BdG+kE7szOO6GQBlV3xyGt+CvEPcJa+rjh9A5QTmw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ULDlp607x5SR327H8nFqx4R2iu1x+3c5cG6LwLG1Eu9yMRO7jaTh+fNTe5IqzNbHGiXdkAiypzUknJAQFCYaDg"}}, "unsigned": {"age_ts": 1570041149132}}  FeQ_$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 925}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI"], "type": "m.room.history_visibility", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041121126, "hashes": {"sha256": "pTvaCWLA0FbiY0TX2Ony8yYLfBayprPw/wt/bmWZKcY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xW4H0/pWKCvphrzaVwkp7Y8yxECQIkj7aU4WnuHij5PETSuJjRhgP4jJSBRV8mA+W7f3k9a/Ycfz47UdCE/yCA"}}, "unsigned": {"age_ts": 1570041121126, "replaces_state": "$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI"}}eQ_$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 924}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs"], "type": "m.room.history_visibility", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041119656, "hashes": {"sha256": "p4LfTxZ8sn4mGhEJE/LoxkqW2+fAHadyH8bFWqey0dI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eL6fmXq+gOvJ3fpOpkBt1iM9nGfp9ywX/8UCqjcnW/fwUQrb4hnD5pFK+TDw3PV28fcnz3odxR3SbY/lCJI7BQ"}}, "unsigned": {"age_ts": 1570041119656}}seQ_u$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 923}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk"], "type": "m.room.join_rules", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041119038, "hashes": {"sha256": "chN6vHfJveAxzbIrWfaGz6WRMYIOoRcYUyKeXk0ep5g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y3q7Mo4Xdx+CtqooLjtlRCPl+ToQ4pBEVpDUG7mx364V0axFI8+aOxdQc2rxyU7hMfQ+Xwfgx8fmpOpVJA/VCQ"}}, "unsigned": {"age_ts": 1570041119038}}jeQ_c$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "stream_ordering": 922}{"auth_events": ["$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "type": "m.room.power_levels", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"users": {"@anon-20191002_181700-193:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041118322, "hashes": {"sha256": "xQA09HH+Hus491r6KLWrrnbN2URjwVviyQzr0l8ut58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d32Rww8vHzelXK5ZBqCpiJpXDpNYyqxzKFkM6SGhodTEGLE29/XGX3QpHkr75U//AfI0uBc4QvCBGa7RI8ykCw"}}, "unsigned": {"age_ts": 1570041118322}} Hj8"p> v D b0 | J  P  V $ \ *h6n< tBTzHN1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUl1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUk1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAi1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAh1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAg1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk z1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwG1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwF1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwE1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwD1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwC1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c 1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ C1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI B1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI A1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU\1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU[1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUZ1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI @1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI ?1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U#1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkJ1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkI1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQkH1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w 1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w 1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w 1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI\1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoU1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoT1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YM1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YL1e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YK1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew 1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew 1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs p1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs o1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs n1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA ~z v r n j fb^ZVRNJFMeeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800LeeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800KeeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800JeeQ$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800IeeQ$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800HeeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800GeeQ$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800FeeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800EeeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800DeeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800CeeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800BeeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800AeeQ$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800@eeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800?eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800>eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800=eeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800<eeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800;eeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800:eeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:88009eeQ$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:88008eeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:88007eeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:88006eeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:88005eeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:88004eeQ$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:88003eeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:88002eeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:88001eeQ$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs!dWgOTucBVQBKZjfndN:localhost:88000eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:8800   j eQ_c$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 929}{"auth_events": ["$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "type": "m.room.power_levels", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"users": {"@anon-20191002_181700-194:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041124831, "hashes": {"sha256": "gi71+qoMLqPMy86ouvFTViB3/VSQSwzP804FGRp98TA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ib7/IRuHpHH409mHIC+6naXnHAL0vrd+hJluW2Hp413TDVEEvK5NspwXDuR+giZOub8Ovglp0i9q/NK82taeBg"}}, "unsigned": {"age_ts": 1570041124831}}ueQ_y$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 928}{"auth_events": ["$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4"], "prev_events": ["$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4"], "type": "m.room.member", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-194", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-194:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041124206, "hashes": {"sha256": "Vw0Si9m//gFWKD0YmnWPfrP76I6DeYL3P6CnVr9/Y/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Lt1PCL4S81VJBBEN7kOR7/WmyUCzkCe6v9xp1En5nDgYEwa+VtIhBEiCFcB4pfpNxp1zlmRe9jgNjVPXJZHCw"}}, "unsigned": {"age_ts": 1570041124206}}heQ__$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 927}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-194:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041123395, "hashes": {"sha256": "KPJNZYT2egJQfpaZD/XBYsmjdHbPMrn40Vyj1Guzm7s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FFYGpFtsbwvuVBKXFmnB+kZBQ0EdaW6qK5WN/f1h9XvwzEL6u2gzqmGHfoYqZyuVZ30UKM4ai+tCHyOuimXiDg"}}, "unsigned": {"age_ts": 1570041123395}}}eQi$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800{"token_id": 214, "txn_id": "77", "stream_ordering": 926}{"auth_events": ["$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk", "$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk", "$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ"], "prev_events": ["$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4"], "type": "m.room.message", "room_id": "!dWgOTucBVQBKZjfndN:localhost:8800", "sender": "@anon-20191002_181700-193:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041121893, "hashes": {"sha256": "kjpVbZFQt9peIoZN6c6twcNK+tHg4RDOmq4Qv6F8Xh0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "viAyFxzU0/4btUn8PUWI1MV83ZKAKpBgXzNLj3NbVLk8/QbgBtg6b6u5WT8Pf81P6LhE7NyOh75tw8SL1UmNBg"}}, "unsigned": {"age_ts": 1570041121893}} >CG K O  S  W  [ _ c$g(k,o0s4w8{<<@]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDWm4]!@anon-20191002_181700-221:localhost:8800REITENATXKm4<=]!@anon-20191002_181700-220:localhost:8800OOLATWHSMPm4<<]!@anon-20191002_181700-219:localhost:8800KBEVVOFICUm4<;]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQm4<:]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWWm4<9]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJm4<8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFOm4<7]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWPm4<6]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGHm4<5]!@anon-20191002_181700-212:localhost:8800RTYZTLKABNm4<4]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSMm4<3]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDFm4<2]!@anon-20191002_181700-209:localhost:8800LYXETIOPNTm4<1]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEYm4<0]!@anon-20191002_181700-207:localhost:8800FTYKIESLCCm4  X  ~ . > N^n~.>N^n~.]$yx?]$O]Q@anon-20191002_181700-127:localhost:8800!ntuwVdUxfzNIhIKYaz:localhost:8800`O]Q@anon-20191002_181700-126:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800^O]Q@anon-20191002_181700-125:localhost:8800!CQKLQUpSYakhxVDltC:localhost:8800]O]Q@anon-20191002_181700-124:localhost:8800!GwXGurbyEmykmmHcHJ:localhost:8800\O]Q@anon-20191002_181700-123:localhost:8800!VWYMJxEviBNDdJCuKT:localhost:8800[O]Q@anon-20191002_181700-120:localhost:8800!CgVBWWcRJoHEcwoLcq:localhost:8800ZO]Q@anon-20191002_181700-119:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800YO]Q@anon-20191002_181700-118:localhost:8800!HcMGemcRrLnLprOJJR:localhost:8800XO]Q@anon-20191002_181700-117:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800WO]Q@anon-20191002_181700-116:localhost:8800!SyIWYOmcGiASNkPCTB:localhost:8800VO]Q@anon-20191002_181700-115:localhost:8800!msMfSdLIAvklSSAnci:localhost:8800UO]Q@anon-20191002_181700-114:localhost:8800!GgUNbVXspVTpOlaHBl:localhost:8800TO]Q@anon-20191002_181700-113:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800QO]Q@anon-20191002_181700-113:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800GO]Q@anon-20191002_181700-113:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800IO]Q@anon-20191002_181700-113:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800KO]Q@anon-20191002_181700-113:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800OO]Q@anon-20191002_181700-113:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800SO]Q@anon-20191002_181700-113:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800MO]Q@anon-20191002_181700-112:localhost:8800!vVmSdclwPIqYDbnmPn:localhost:8800PO]Q@anon-20191002_181700-112:localhost:8800!oXKJArsPmtgaYANBrg:localhost:8800FO]Q@anon-20191002_181700-112:localhost:8800!fJXiUpbbOlLbHWmPgs:localhost:8800HO]Q@anon-20191002_181700-112:localhost:8800!eySSVuCclRpBDgwKIU:localhost:8800JO]Q@anon-20191002_181700-112:localhost:8800!edbUkYJIZBNOiTuLJs:localhost:8800NO]Q@anon-20191002_181700-112:localhost:8800!eKrOqiOabJcMgIJjwC:localhost:8800RO]Q@anon-20191002_181700-112:localhost:8800!VAEDgDJVqmxXZyAlSW:localhost:8800LO]Q@anon-20191002_181700-110:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800DO]Q@anon-20191002_181700-109:localhost:8800!egCvzKpbEwmuvDoBTb:localhost:8800EO]Q@anon-20191002_181700-109:localhost:8800!XgobMgBjNcDRJnRXLD:localhost:8800CO]Q@anon-20191002_181700-108:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800BO]Q@anon-20191002_181700-107:localhost:8800!wIhMbfQzYbJobPdwyi:localhost:8800AO]Q@anon-20191002_181700-106:localhost:8800!cSUQGmpIsSCBAVTOHo:localhost:8800@O]Q@anon-20191002_181700-104:localhost:8800!SBEprlZiuliFNSfNmz:localhost:8800?O]Q@anon-20191002_181700-103:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800>O]Q@anon-20191002_181700-102:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800=O]Q@anon-20191002_181700-101:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800;O]Q@anon-20191002_181700-100:localhost:8800!HmkcAMkMjWRhTDJMsy:localhost:8800<9/Q@8:localhost:8800!itKDOCtoMkFUETDtle:localhost:88009/Q@7:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:88009/Q@6:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:88008/Q@5:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:88008/Q@3:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800|:1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800:1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800:1Q@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800:1Q@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800:1Q@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:88008/Q@2:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800z:1Q@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800:1Q@17:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800:1Q@16:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800:1Q@15:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800:1Q@14:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800:1Q@13:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800 V?=\ _ 2  ~Ji/ R % q D  c 6 V )v{N!mAa4tGT'yM m,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!itfjLXhEaORJLkbfVS:localhost:880044,Q!itfjLXhEaORJLkbfVS:localhost:880033,Q!itfjLXhEaORJLkbfVS:localhost:880022,Q!itfjLXhEaORJLkbfVS:localhost:880011+Q !itfjLXhEaORJLkbfVS:localhost:880000,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800+Q !jDKAOtmeAGbYTpwyEW:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800+Q !itKDOCtoMkFUETDtle:localhost:8800,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 +Q !ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800   ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 +Q !hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 +Q !iLHJbsFszubrnybDNz:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!ifQxHmNAcSSGHVMjfi:localhost:8800+Q !ifQxHmNAcSSGHVMjfi:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800+Q !icheSPMgpemswIdQkw:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800+Q !iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iKezIvJyjkNqKayFju:localhost:8800 q q,Q!iKezIvJyjkNqKayFju:localhost:8800 p p,Q!iKezIvJyjkNqKayFju:localhost:8800 o o,Q!iKezIvJyjkNqKayFju:localhost:8800 n n,Q!iKezIvJyjkNqKayFju:localhost:8800 m m,Q!iKezIvJyjkNqKayFju:localhost:8800 l l,Q!iKezIvJyjkNqKayFju:localhost:8800 k k,Q!iKezIvJyjkNqKayFju:localhost:8800 j j,Q!iKezIvJyjkNqKayFju:localhost:8800 i i+Q !iKezIvJyjkNqKayFju:localhost:8800 h h,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jIfvTrwedrWLubsnlM:localhost:8800+Q !jIfvTrwedrWLubsnlM:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800+Q !jGQNGXehugtTvjUGKI:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800 V?=\ _ 2  ~Ji/ R % q D  c 6 V )v{N!mAa4tGT'yM m,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!itfjLXhEaORJLkbfVS:localhost:880044,Q!itfjLXhEaORJLkbfVS:localhost:880033,Q!itfjLXhEaORJLkbfVS:localhost:880022,Q!itfjLXhEaORJLkbfVS:localhost:880011+Q !itfjLXhEaORJLkbfVS:localhost:880000,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800+Q !jDKAOtmeAGbYTpwyEW:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800,Q!itKDOCtoMkFUETDtle:localhost:8800+Q !itKDOCtoMkFUETDtle:localhost:8800,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ijOiudvuzOLNmgNKfG:localhost:8800 +Q !ijOiudvuzOLNmgNKfG:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800   ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800  ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!hrhDJbmXvXBizKoiiK:localhost:8800 +Q !hrhDJbmXvXBizKoiiK:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 ,Q!iLHJbsFszubrnybDNz:localhost:8800 +Q !iLHJbsFszubrnybDNz:localhost:8800 ,Q!ifQxHmNAcSSGHVMjfi:localhost:8800,Q!ifQxHmNAcSSGHVMjfi:localhost:8800+Q !ifQxHmNAcSSGHVMjfi:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800,Q!icheSPMgpemswIdQkw:localhost:8800+Q !icheSPMgpemswIdQkw:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800 ,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iTQSCiLqRMDtgXtUdC:localhost:8800+Q !iTQSCiLqRMDtgXtUdC:localhost:8800,Q!iKezIvJyjkNqKayFju:localhost:8800 q q,Q!iKezIvJyjkNqKayFju:localhost:8800 p p,Q!iKezIvJyjkNqKayFju:localhost:8800 o o,Q!iKezIvJyjkNqKayFju:localhost:8800 n n,Q!iKezIvJyjkNqKayFju:localhost:8800 m m,Q!iKezIvJyjkNqKayFju:localhost:8800 l l,Q!iKezIvJyjkNqKayFju:localhost:8800 k k,Q!iKezIvJyjkNqKayFju:localhost:8800 j j,Q!iKezIvJyjkNqKayFju:localhost:8800 i i+Q !iKezIvJyjkNqKayFju:localhost:8800 h h,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jIfvTrwedrWLubsnlM:localhost:8800+Q !jIfvTrwedrWLubsnlM:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800,Q!jGQNGXehugtTvjUGKI:localhost:8800+Q !jGQNGXehugtTvjUGKI:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800,Q!jDKAOtmeAGbYTpwyEW:localhost:8800 FW0p> v D  | J  P  Vh6 $ \ *bj8n< tBzHOW1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ41e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ31e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ20e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko^0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko]0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko\1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0 1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0 1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0 1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw~1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw}1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g+1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g*1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gp1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0go1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gn1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840141e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840141e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840141e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEL1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEK1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEJ1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ }1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ |1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ {1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8X1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8W1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8V1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY 1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ #1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4 1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI 1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI 1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI 1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU1e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM41e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g)1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoL1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoK1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhoJ  ih g 4i 5 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6Two1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1ZLjR5Tkc7SklaSEo6VHAKMDAyZnNpZ25hdHVyZSDoPzLVxph2AvKo7t8C-wSZZEZYZ5lTDR-0fgs7USTc0wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJfSX5RQ3dmSDFzVjI6U0oKMDAyZnNpZ25hdHVyZSCQxwiXY3APZXo6_daz2ZoX55uqsWQbgkffTXjDj6gtWAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQraVExajhxYTcwPSZTSCYKMDAyZnNpZ25hdHVyZSB6YP-c1U0w6wXdTFBOgQG_b0QToxdI-ywqOPPsxnr8swo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwo a} { y w u sqomkigeca~eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~~eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~}eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~|eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~{eeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~zeeQ$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~yeeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~xeeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~weeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~veeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~ueeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~teeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~seeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~reeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~qeeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800~peeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800~oeeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~neeQ$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800~meeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800~leeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800~keeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800~jeeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800~ieeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800~heeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:8800~geeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE!erBPdgtUsiOfIKUkho:localhost:8800~feeQ$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:8800  h$eQ__$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 933}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-195:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041129512, "hashes": {"sha256": "IGTEDqS3NwqdHIkklp/8rKiS55js7Jmi9aN/fYhTqYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jv5ItY6jym6IbfsnIYHd1bVqOe6WqN7CdQA85JWfpPdxzQHMGtiNIW2z3neId0MtOogXR4qa6y/nZDGvIOsnAA"}}, "unsigned": {"age_ts": 1570041129512}}}#eQi$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "txn_id": "78", "stream_ordering": 932}{"auth_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg", "$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0"], "type": "m.room.message", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041127474, "hashes": {"sha256": "A2o1ObBBH8qkvivGYrygceE/y6oUaf/zNx6HcqVx23g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bYeVBlZdtkV5G6pV85jUYiz2/zZ0HXw49ZnvRxvieNZrycv4cyvaa3XMW+RN90y9B1vb0eSa67xtHbcs8fW2DQ"}}, "unsigned": {"age_ts": 1570041127474}}"eQ_$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 931}{"auth_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg", "$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w"], "type": "m.room.history_visibility", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041126581, "hashes": {"sha256": "HWe+8R65gjDOs+Wn6JZe4ya6dwGe1ULfG2fGjfHXIT0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QhylGBv7eW5PgwcspM05BzGZ//ib+JxlRturSXmsdAO1JjE50qwWdZ55bF41zO4nz1gDYw7Wh+O0JBX+mK2RBQ"}}, "unsigned": {"age_ts": 1570041126581}}s!eQ_u$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:8800{"token_id": 215, "stream_ordering": 930}{"auth_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg", "$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4", "$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE"], "prev_events": ["$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg"], "type": "m.room.join_rules", "room_id": "!erBPdgtUsiOfIKUkho:localhost:8800", "sender": "@anon-20191002_181700-194:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041125955, "hashes": {"sha256": "ClWaJ6CA0aX2rUPpMIgO35DD8+GrMcEJq0JMd23kLPg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uI+RI27XnGBasL7HGfFpGjEiNfAWYNQKDdnBdENxoZkTS/1/MxsJLIlVPXDLYfZvZNbJTMtZ3t7DzTuvbgL6DQ"}}, "unsigned": {"age_ts": 1570041125955}} ,NC 8 - { " p  e ZOD9.|#qf VLeL$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAsha2569T N 6X8ARb/) VKeL$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcsha2567M7!ԀdxER>xA7VJeL$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgsha256/ ŧ \QwߋI$!=08VIeL$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4sha256U*  c 1=TdhHi>nVHeL$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8sha256O+-.[\Mm.,i2'??VGeL$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8sha256$J X6@̣h p+zm9̟VFeL$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70sha256] m̪GsX TZ'oVEeL$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcsha256u#r $”>a g4Yd@t$CGVDeL$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4sha256o֦]q>&po̡&[Z(NzVCeL$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgsha256ڗdMCTA}2 ~FVBeL$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIsha256'qF_ !qazp9bVAeL$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQsha2564+}9J,5_j<̐NjՋU׬hDV@eL$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgsha256?a">q2!4eHlTxV?eL$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45ksha256rGtcD$1'eߜV>eL$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpssha2562ARDNsgbT$~V=eL$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMsha256pOdkp`QZ?qV<eL$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIsha256 "&%KJL ̐\ 9V;eL$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0sha256*#֤N_&IOb $u:7y*=V:eL$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLksha2566# 5^WvL߱V9eL$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0sha256:aKGOzeWFB5-[lꎞpV8eL$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0sha256_V 5fI)hJ)k V:iŰV4eL$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wsha256CA|T[〙b5 }rٺqV3eL$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIsha2562X`R/Îg^,OsQ^%RV2eL$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00sha256 X:~G%'hdbgMV1eL$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0sha256 Pv c%bѴbOa8OV0eL$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fviksha256=f_XO$\3ЉW:Nž)V/eL$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8sha256HqhP&5 cKAdoV.eL$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIsha256\@APQmP5ZfV-eL$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQsha256Bpp6. AJLgKhqV,eL$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgsha256w>xD5&Z@ss|= +U[g0yV+eL$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwsha256XL56og䩻~3|x?^@lV*eL$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAsha2562IqyÍ~`?ȬzW_ʀV)eL$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8sha2567Fu[{]̭~mח|l- rָKV(eL$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8sha256.Tm ^OY0Aa`S`JV'eL$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEsha256ᚚ=o `n3Be^U^x Zg^V&eL$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEsha256q￯w,7n )b qUuŰV%eL$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74csha256r>p]71a%E@25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXBeVl44LUc7VHc7VnVCLQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC8MWi9BCBjMe8Iol7_FlZLzWel11x7K3eungbpV0kByCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m؍=]c!E@anon-20191002_181700-199:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8QoUANUDVZWCS127.0.0.1Perl + Net::Async::HTTP/0.44m<{<1a%E@24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMSZOay5naWRnbkpGSm5ZbwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIKBWQyWY5hgZBnE-se3uKiVfly8hRLpUhBLZqOOEW7seCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m;]c!E@anon-20191002_181700-198:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwoMKVWNPADZZ127.0.0.1Perl + Net::Async::HTTP/0.44m{:1a%E@23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbV96RjtHb2t3YTlYLDcjYgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIElRnIis52jvPcLdLVPjrmWcDWODcOj4buElXA8jMUolCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m)9]c!E@anon-20191002_181700-197:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0woQFRRVNJLDZ127.0.0.1Perl + Net::Async::HTTP/0.44m{81a%E@22:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQV5hazNoM0tPNWZxa1NrSQowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIBZOXTG7MCWWYCqevi_fF2y634we-GSf2Z3Q7ZUVMWmaCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m7]c!E@anon-20191002_181700-196:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFktYixvQUtYZWF0VUBuWk0KMDAyZnNpZ25hdHVyZSDs1SpADqu4MI3Kkq0UCmbydwdHoJTXpqEYg9OJG7YBnAoRTTTFCSQDL127.0.0.1Perl + Net::Async::HTTP/0.44mh̓6]c!E@anon-20191002_181700-195:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwweW9JRFk5aGt3VmE9a3QKMDAyZnNpZ25hdHVyZSDHqwHHHtg_uF13OA88pF-q5kS_mwIyEV79B7ibema-lgoBSLOCEIQRD127.0.0.1Perl + Net::Async::HTTP/0.44mh˂{51a%E@21:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDIxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLkJrQm5VakZGZGhsNU5PMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlICqXq1qwtskmVrJQMMDVdeu1qG_0zXa2l4F6RetlyoxKCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44md   s(eQ_u$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 937}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE"], "type": "m.room.join_rules", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041132705, "hashes": {"sha256": "3z+fe34v6vzkRoyEH+aJ8eEDk6au1SOzt6TzAKrlEcU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l0wmDHCFHZ4zC1xJQueRuXw7u/G+0CBtcvwBHu4ggRQB6Nuo8vOjvZ4Ot/r0z/5fpJMAYCErRBo1aR/PRekhBA"}}, "unsigned": {"age_ts": 1570041132705}}'eQ_9$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 936}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE"], "type": "m.room.canonical_alias", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"alias": "#test-20191002_181700-32:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041132031, "hashes": {"sha256": "1ZqCZ32E2jFKj1psyu0+iedA2sguGIZnLM7xgj7PC7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CfOZK4dx/hiF6+bOTlbj1WRFIjAU15Jd3Ag6XJ3OvYeXldXZk22qrKnhlcoiXUjpzKAli6o+wasfhqKUQzkmBQ"}}, "unsigned": {"age_ts": 1570041132031}}j&eQ_c$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 935}{"auth_events": ["$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "type": "m.room.power_levels", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"users": {"@anon-20191002_181700-195:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041131315, "hashes": {"sha256": "bIR7ICXOA60iZCc+uU8VdN/+/NWZ3/FHYf559aRxivE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q6yEaFIdTZJCd1DXEn+ymso+whoeyipH5BiwLh3AuWj9X5KrYiaWp6kin6yBrCVy4iegRSl8pzDKnANBtZb5AA"}}, "unsigned": {"age_ts": 1570041131315}}u%eQ_y$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 934}{"auth_events": ["$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ"], "prev_events": ["$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ"], "type": "m.room.member", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-195", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-195:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041130625, "hashes": {"sha256": "EPPgJB5yuvPlSziE+QHhWRoNCTWFxKqzSIdhf3QClX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NRsrhfuXeqrljJxG/lSWDO50NGYuWS1F5aV4o+MNukHK8FGmCf6pynOrMMY64xvK8ztglsiza7C+0ghROw/WCg"}}, "unsigned": {"age_ts": 1570041130625}} X S h  iox*" ?e'Q ]$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsm.room.member!JGhlAUflyNxErGGZZu:localhost:8800m`m@anon-20191002_181700-199:localhost:8800> e'Q  ]$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMm.room.create!JGhlAUflyNxErGGZZu:localhost:8800mȑm@anon-20191002_181700-199:localhost:8800,=e?Q ]$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIm.room.history_visibility!tkajvIKHoOMWGsReBs:localhost:8800mm@anon-20191002_181700-198:localhost:8800,<e?Q ]$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0m.room.history_visibility!tkajvIKHoOMWGsReBs:localhost:8800m&m\@anon-20191002_181700-198:localhost:8800$;e/Q ]$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkm.room.join_rules!tkajvIKHoOMWGsReBs:localhost:8800m?m>@anon-20191002_181700-198:localhost:8800&:e3Q ]$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0m.room.power_levels!tkajvIKHoOMWGsReBs:localhost:8800mm@anon-20191002_181700-198:localhost:8800 9e'Q ]$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0m.room.member!tkajvIKHoOMWGsReBs:localhost:8800mm"@anon-20191002_181700-198:localhost:88008 e'Q  ]$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gm.room.create!tkajvIKHoOMWGsReBs:localhost:8800mm^@anon-20191002_181700-198:localhost:8800!7e)Q ] $GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKsm.room.message!fcdNYFWFyxmdpKAknc:localhost:8800 m$m@anon-20191002_181700-197:localhost:8800,6e?Q ] $31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYm.room.history_visibility!fcdNYFWFyxmdpKAknc:localhost:8800 mm@anon-20191002_181700-197:localhost:8800!5e)Q ]$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wm.room.message!fcdNYFWFyxmdpKAknc:localhost:8800mmb@anon-20191002_181700-197:localhost:8800!4e)Q ]$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIm.room.aliases!fcdNYFWFyxmdpKAknc:localhost:8800mmf@anon-20191002_181700-197:localhost:8800,3e?Q ]$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00m.room.history_visibility!fcdNYFWFyxmdpKAknc:localhost:8800mm@anon-20191002_181700-197:localhost:8800$2e/Q ]$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0m.room.join_rules!fcdNYFWFyxmdpKAknc:localhost:8800mm@anon-20191002_181700-197:localhost:8800)1e9Q ]$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvikm.room.canonical_alias!fcdNYFWFyxmdpKAknc:localhost:8800m}m{@anon-20191002_181700-197:localhost:8800&0e3Q ]$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8m.room.power_levels!fcdNYFWFyxmdpKAknc:localhost:8800m6m6@anon-20191002_181700-197:localhost:8800 /e'Q ]$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIm.room.member!fcdNYFWFyxmdpKAknc:localhost:8800mm@anon-20191002_181700-197:localhost:8800. e'Q  ]$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQm.room.create!fcdNYFWFyxmdpKAknc:localhost:8800mmh@anon-20191002_181700-197:localhost:8800!-e)Q ] $d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgm.room.message!MWCLSWWGdWcSivNVLI:localhost:8800 m$m)@anon-20191002_181700-195:localhost:8800,,e?Q ]$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumwm.room.history_visibility!MWCLSWWGdWcSivNVLI:localhost:8800mVm@anon-20191002_181700-195:localhost:8800!+e)Q ]$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAm.room.aliases!MWCLSWWGdWcSivNVLI:localhost:8800m~m~@anon-20191002_181700-195:localhost:8800,*e?Q ]$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8m.room.history_visibility!MWCLSWWGdWcSivNVLI:localhost:8800mym{@anon-20191002_181700-195:localhost:8800$)e/Q ]$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8m.room.join_rules!MWCLSWWGdWcSivNVLI:localhost:8800mvmwo@anon-20191002_181700-195:localhost:8800 he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     ~}|{zyxwutsrqponmlkjihfedcb`_^]\[YXWVUTRQPONMKIHGFEDCA?>=<;:98643210/.-+)('&%$"    ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLlkjhfedcba`^ \ [ Z Y XWVUTSRQPONMLKJIHGFEDCBA@>=<;:98765JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! KJIHGFEDCBA@?>=<;:9876543210/.-,+*)(~'|&{%z$y#x"w!v usqponm F P b ] V $ {  W \ *jh6n< vD+ v I|JQp> %0  %21e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590u1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAe1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4*1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMy1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId41e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w 1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC501e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs21e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKga1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK821e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM#1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA21e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps'1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc1 D20e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcJ1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk:1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIy1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Yk1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXacV1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ11e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8x0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicM1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0M1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA "1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI B 1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEU1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE|1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE821e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc21e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 21e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 21e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc  x},eQi$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "txn_id": "79", "stream_ordering": 941}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw"], "type": "m.room.message", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041137444, "hashes": {"sha256": "cProvEv7P3Mo9sEO7UrIi54LBpmEcct8tjexm8s7YaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kao48alKIZFxuDeGpwDaAuiZj/W2U1ntjobgS+9vdApsVSsNBGOfETz+27hXLwLVhcGmsdID8Ywlx7QosbYRAQ"}}, "unsigned": {"age_ts": 1570041137444}}N+eQ_+$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 940}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA"], "type": "m.room.history_visibility", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041135446, "hashes": {"sha256": "QN29xlBLkKLbvHU/zLV80LRfi7On4ITbT4tkyQBjcDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IUhATXm4akkjL58eNyR4rO57kF0SFc7gWBHbXK9sAIuFMZ6VozEOu/+Np1/DyA9iL5ShHQcKzxvsUCt8j/RVBA"}}, "unsigned": {"age_ts": 1570041135446, "replaces_state": "$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8"}}*eQ_M$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 939}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8"], "type": "m.room.aliases", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"aliases": ["#test-20191002_181700-32:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041134616, "hashes": {"sha256": "9YbDDKpZIkfJsz9CzMQVRJbhhr4xUwGNIJjYuUci8ks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uT5nuf9Zf9yis4IvAexqxCjsD3rG1OtLIwtmckWotcf1lUtoItP06eLM59pvcEl76anOsj7vrg3tAiL1uIIUBg"}}, "unsigned": {"age_ts": 1570041134616}})eQ_$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8!MWCLSWWGdWcSivNVLI:localhost:8800{"token_id": 216, "stream_ordering": 938}{"auth_events": ["$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE", "$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ", "$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c"], "prev_events": ["$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8"], "type": "m.room.history_visibility", "room_id": "!MWCLSWWGdWcSivNVLI:localhost:8800", "sender": "@anon-20191002_181700-195:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041133330, "hashes": {"sha256": "4+C9meXcO16cq08YIWQ4qH1YKpj43LiyEEL9V6cNp2U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8p14/I23oWUp8gr3BhhMPON5x6WM0S+FT2iifeKXdBWIGbypn+LaAeeMNsmMbCLMEabmLSvv0VYqrF/J/SuoDg"}}, "unsigned": {"age_ts": 1570041133330}} >H dP R ^ x F  ~ L  , \$*j 8pV|Jj>2 vD   X &81e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 21e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s G1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ 1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2KkT1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4L1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw _1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYp1e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4Z1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU h1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QX1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsQ1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwC1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM)1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEX1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER01e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0o1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEe1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MY1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc 1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw581e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYg1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0c1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo>1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU 1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc (1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMr1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr81e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsp1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0s1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc11e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kk1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh001e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwd1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg21e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41 CwFzEe0`- ] ( \ ) Y $ V ! Q RM}JzEywBr? 2]@anon-20191002_181700-270:localhost:8800a4]@anon-20191002_181700-242:localhost:8800m2]@anon-20191002_181700-242:localhost:8800a2]@anon-20191002_181700-241:localhost:8800a4]@anon-20191002_181700-240:localhost:8800m2]@anon-20191002_181700-240:localhost:8800a2[@anon-20191002_181700-23:localhost:8800m80[@anon-20191002_181700-23:localhost:8800a74]@anon-20191002_181700-239:localhost:8800m2]@anon-20191002_181700-239:localhost:8800a2[@anon-20191002_181700-26:localhost:8800m?0[@anon-20191002_181700-26:localhost:8800a>4]@anon-20191002_181700-269:localhost:8800m2]@anon-20191002_181700-269:localhost:8800a4]@anon-20191002_181700-268:localhost:8800m2]@anon-20191002_181700-268:localhost:8800a4]@anon-20191002_181700-267:localhost:8800m2]@anon-20191002_181700-267:localhost:8800a4]@anon-20191002_181700-266:localhost:8800m2]@anon-20191002_181700-266:localhost:8800a4]@anon-20191002_181700-265:localhost:8800m2]@anon-20191002_181700-265:localhost:8800a4]@anon-20191002_181700-264:localhost:8800m2]@anon-20191002_181700-264:localhost:8800a4]@anon-20191002_181700-263:localhost:8800m2]@anon-20191002_181700-263:localhost:8800a4]@anon-20191002_181700-262:localhost:8800m2]@anon-20191002_181700-262:localhost:8800a4]@anon-20191002_181700-261:localhost:8800m2]@anon-20191002_181700-261:localhost:8800a4]@anon-20191002_181700-260:localhost:8800m2]@anon-20191002_181700-260:localhost:8800a2[@anon-20191002_181700-25:localhost:8800m=0[@anon-20191002_181700-25:localhost:8800a<4]@anon-20191002_181700-259:localhost:8800m2]@anon-20191002_181700-259:localhost:8800a4]@anon-20191002_181700-258:localhost:8800m2]@anon-20191002_181700-258:localhost:8800a4]@anon-20191002_181700-257:localhost:8800m2]@anon-20191002_181700-257:localhost:8800a2]@anon-20191002_181700-255:localhost:8800a4]@anon-20191002_181700-254:localhost:8800m2]@anon-20191002_181700-254:localhost:8800a4]@anon-20191002_181700-253:localhost:8800m2]@anon-20191002_181700-253:localhost:8800a4]@anon-20191002_181700-252:localhost:8800m2]@anon-20191002_181700-252:localhost:8800a4]@anon-20191002_181700-251:localhost:8800m2]@anon-20191002_181700-251:localhost:8800a4]@anon-20191002_181700-250:localhost:8800m2]@anon-20191002_181700-250:localhost:8800a2[@anon-20191002_181700-24:localhost:8800m;0[@anon-20191002_181700-24:localhost:8800a:4]@anon-20191002_181700-249:localhost:8800m2]@anon-20191002_181700-249:localhost:8800a4]@anon-20191002_181700-248:localhost:8800m2]@anon-20191002_181700-248:localhost:8800a4]@anon-20191002_181700-247:localhost:8800m2]@anon-20191002_181700-247:localhost:8800a4]@anon-20191002_181700-246:localhost:8800m2]@anon-20191002_181700-246:localhost:8800a4]@anon-20191002_181700-245:localhost:8800m2]@anon-20191002_181700-245:localhost:8800a4]@anon-20191002_181700-244:localhost:8800m2]@anon-20191002_181700-244:localhost:8800a4]@anon-20191002_181700-243:localhost:8800m2]@anon-20191002_181700-243:localhost:8800a  |t l d \ T < LD4,$ eeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800 neeQ$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w!oXKJArsPmtgaYANBrg:localhost:8800leeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800seeQ$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8!laUExtszUaoCpZoyEq:localhost:8800 eeQ$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs!CQKLQUpSYakhxVDltC:localhost:8800eeQ$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc!cSUQGmpIsSCBAVTOHo:localhost:8800LeeQ$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU!WjlTCJVOFJkanCtkFE:localhost:8800xeeQ$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800eeQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo!wnriPzXkIMmdTNoJKU:localhost:8800́eeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800 eeQ$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800 HeeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800 BeeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4!erBPdgtUsiOfIKUkho:localhost:88004eeQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800 ZeeQ$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800eeQ$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800/eeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800eeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800eeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800 +eeQ$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4!msMfSdLIAvklSSAnci:localhost:8800eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800seeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800́eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800́eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800t 4Dm4Pl S  o  6 q U R o6 T R n 75  pQ8 P 8e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUsha2568e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0sha2568e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYsha256f8e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Esha256^8e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEsha2568e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgsha256 8e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMsha256 88e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrksha2568e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98sha256t8e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEsha2568e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEsha2568e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cgsha2568e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMsha2568e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIsha256u8e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0sha2568e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UUsha2568e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hgsha2568e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVssha2568e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3ksha256+8e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0sha2568e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yksha2568e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hosha256c8e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Asha2568e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBgsha2568e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQsha256'8e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfosha2568e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8sha2568e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwsha256s8e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUsha2568e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIsha2568e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4sha256m8e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQsha256)8e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgsha2568e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMsha2568e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcssha2568e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEsha2567e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTssha2568e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYsha2568e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIsha256.8e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0ssha2568e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0sha2568e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZksha2568e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEsha256 8e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5ssha2568e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8sha256a8e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VAsha2568e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0csha256 8e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTEsha2568e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4sha256 8e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gsha256 8e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAsha256 8e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQsha256 8e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIsha256 8e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0sha256 58e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0sha256 8e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4sha256 8e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjssha2568e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQsha2568e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nksha256 8e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8sha256 `8e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwsha2568e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgsha2568e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAsha2568e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08sha2568e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qsha256E8e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wsha256.8e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6Isha256%8e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djsssha256 g * T~=gg[]!c@anon-20191002_181700-207:localhost:8800FTYKIESLCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICthcW5Dd2RoSnR-SF5lQ3YKMDAyZnNpZ25hdHVyZSBMaVQIlYxk5iDLt3ZqIvealffzFFXqSMQ9PEHlBhHh8gogZ]!c@anon-20191002_181700-206:localhost:8800AXGAUUMYLVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt1LS1YcDRrbjdjZEBNI2EKMDAyZnNpZ25hdHVyZSAYRHK0Z7R9RbffAIxQ6fMy4jbgrwX9p-pxyQGa-b1i2gogY]!c@anon-20191002_181700-205:localhost:8800MIXIJDMFDOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9ellVaTBvSWpHQ2Q4SnYKMDAyZnNpZ25hdHVyZSCpItHanU8_7u5Hd4n_6FLrV9BZVJt1cj4KHiC-lweYigogX]!c@anon-20191002_181700-204:localhost:8800HOFBXQYKDHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpLakxYWVUmREppenJxMmEKMDAyZnNpZ25hdHVyZSBN0jSmRAyfm65inJM6fRbjhvy_F10vt604j1fMtsvhHgogW]!c@anon-20191002_181700-203:localhost:8800UCNLRVNQIFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMuO3R3Z0lFdHlFNTFhOEoKMDAyZnNpZ25hdHVyZSA9WCMhYxIQ6llnmPpchLmEr6jOQg0B6NxG_uxP6dlbywogV]!c@anon-20191002_181700-202:localhost:8800TBTWVFPOAOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5jbWhGI3NVbzdRN0ZVOUYKMDAyZnNpZ25hdHVyZSDFOi3T8ib3QFWEJRdS9JEKRlY1pXMW0qqy2gWfbH2x3gogU]!c@anon-20191002_181700-201:localhost:8800OUGKUQQECUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1VeSt5ODEuWm87UjdKY0YKMDAyZnNpZ25hdHVyZSDTpoEgR9XlmVmJc5SliwVUnFErAOv6y_GJpoo2kiEBAwogT]!c@anon-20191002_181700-200:localhost:8800XLQZYUOVVWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDF4dzt5NVhUQzR2aXp0JisKMDAyZnNpZ25hdHVyZSD9QSywnh8104wl3lN9t2uWjOUpqEtvPgW6Z2v56L6tXQogS]!c@anon-20191002_181700-199:localhost:8800UANUDVZWCSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE55SlFMWUp3dypXbDdsPSYKMDAyZnNpZ25hdHVyZSAFgdYcLHgqenQUj3rzFQVVSWod5xJDGK-OHqoibVBJ8QogR]!c@anon-20191002_181700-198:localhost:8800MKVWNPADZZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVyNXd3MlpMZ2lAI3kuZCoKMDAyZnNpZ25hdHVyZSCEbNB5i3D6I4Sa2BIAuiFWUeI9x9pVChKk8uleBMzKfwogQ]!c@anon-20191002_181700-197:localhost:8800QFRRVNJLDZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTE5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJ0cHh0bno6SklZQlM0UXIKMDAyZnNpZ25hdHVyZSBqIDKkTZmOsHijGqAb535clCc2ZbaOH6fLptj7gaKs0wo   -0eQ_9$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 945}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8"], "type": "m.room.canonical_alias", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"alias": "#test-20191002_181700-33:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041141373, "hashes": {"sha256": "7nODvuqvqvCS49C2BpsvikcgEmEKKsdJMaMnFlPMW8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kRuDWNJv52Ihq9U/FRxqJTni61B7YPoKfHon1nQ8fS4BPchrpEEo/YVjGur4MzN7vB85tHNlMRXHJ5uxYDIgCw"}}, "unsigned": {"age_ts": 1570041141373}}j/eQ_c$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 944}{"auth_events": ["$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "type": "m.room.power_levels", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"users": {"@anon-20191002_181700-197:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041140790, "hashes": {"sha256": "9N90jaTWkFLaNxTbxM0by/8+AQtUotSDzNmLtDcU4k0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+QYAeEPGppWJxoGRAv3+B0sXSATK7dgduluvNGYLyVM/kwGoAaGQRXP1grYDoSCEFo3XmXmOLEiqu1tHs66VBQ"}}, "unsigned": {"age_ts": 1570041140790}}u.eQ_y$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 943}{"auth_events": ["$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ"], "prev_events": ["$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ"], "type": "m.room.member", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-197", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-197:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041140125, "hashes": {"sha256": "8hKO41br+IVT1uXw4nf4eoOjOWrhJnOBs46veWdH0yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QATAfhoSLpXHDs1XyPCsbyhYSnzhLWIsn1fPnaO1nNb9AoO+GwLLp6X2F0otjFNjfWHCJhfK6RheapJYBqmHBw"}}, "unsigned": {"age_ts": 1570041140125}}h-eQ__$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 942}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-197:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041139447, "hashes": {"sha256": "EODOpe2V0fjxt2pPvg+fFN2trLFQR9jSgUKjs0X2vSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d9ZqTcHVboHWZ1WnMyhrPhwzA06F0YIkIXh+RJmSU/Es0EBZPjwLrky3CSw8xGj52BUXIxoY4u09OoNE+bWOCA"}}, "unsigned": {"age_ts": 1570041139447}} ! , N 8 A i V_t }5LUx poQ? e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4hnQ/ e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rules$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXommQ9 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_alias$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkjlQ3 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I kQ']e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAdjQ' e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.create$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcsiQ))e!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4phQ? e!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8hgQ/ e!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rules$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8mfQ9 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_alias$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70jeQ3 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc dQ']e!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4dcQ' e!NfaPEGKjnUDUTavzol:localhost:8800m.room.create$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgbQ? ee!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQpaQ? e!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQh`Q/ e!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rules$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgj_Q3 e!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k ^Q']e!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsd]Q' e!JGhlAUflyNxErGGZZu:localhost:8800m.room.create$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM\Q? ee!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0p[Q? e!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0hZQ/ e!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rules$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkjYQ3 e!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0 XQ']e!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0dWQ' e!tkajvIKHoOMWGsReBs:localhost:8800m.room.create$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gVQ? ee!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00sUQ))e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIpTQ? e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibility$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00hSQ/ e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rules$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0mRQ9 e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_alias$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikjQQ3 e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8 PQ']e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIdOQ' e!fcdNYFWFyxmdpKAknc:localhost:8800m.room.create$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ E .Eu8eQ_y$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 953}{"auth_events": ["$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g"], "prev_events": ["$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g"], "type": "m.room.member", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-198", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-198:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041148578, "hashes": {"sha256": "97NaVZzSHYLzizOA6PoPOPC0uegNz/4NgOTn3hmaRg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vEwgtybxlonaxRCKRSoz2LJLcrI0Z5J+8zEDNeZ3h9MNfCBMYUi3G2F/xDt4Kop87P+0denRCXmrU+b4aYF2Dw"}}, "unsigned": {"age_ts": 1570041148578}}h7eQ__$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800{"token_id": 219, "stream_ordering": 952}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tkajvIKHoOMWGsReBs:localhost:8800", "sender": "@anon-20191002_181700-198:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-198:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041147922, "hashes": {"sha256": "2L8y5GGROWFI5Eoay9rdTMxnVQutf7q6V55Qu2c/xxM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CNZq/OAjfVzkg+rSr3EWiQCgKoEtkZCCfSs11UoQQ9W3iAj4H9G678bo56VXe8FmC6ksqQ1BlFlGEiJ6vc45CQ"}}, "unsigned": {"age_ts": 1570041147922}}6eQo$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "txn_id": "81", "stream_ordering": 951}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY"], "type": "m.room.message", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"body": "public", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041146148, "hashes": {"sha256": "7Qju0Z8k9sjnW0Qie19L6tmcnn1AFyMT9wwsSti2qXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7H9er8rgQCi2oatmtcPxpx4XdxID2vvHo+z9BcT8WJJ83ZhQhGtDhadWzkMY5xmchAxoAfviGVdz3e/g/1M5BQ"}}, "unsigned": {"age_ts": 1570041146148}}N5eQ_+$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 950}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w"], "type": "m.room.history_visibility", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041145374, "hashes": {"sha256": "O7ONu8X/4Y77PBBZIxRpjv/O6FiqqcwJVGgtlQx7zYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VSVwNh1twLq5N0vDerd44gTjJ197RQ2pwx2sdnXJIigKDgaEoG8uvTM7OtqoH8dwk8htIIcz2rC+Ns8rbSuFBA"}}, "unsigned": {"age_ts": 1570041145374, "replaces_state": "$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00"}} a} { y w u sqomkigeca~#eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~"eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~!eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800~ eeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~eeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~eeQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~eeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800~eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~ eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800~eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800 1M> v D  } K  \ Q  W % V ] +cpi7o= uC*|$JPj81e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I b1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns 1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU 1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM 1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU q1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw `1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g|1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ks1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYv1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAB1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ya1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0a1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 51e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIr1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIV21e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIe1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs01e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsn1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssA1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkc1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsi1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUJ1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY:1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA)1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo,1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw&1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY 1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoN1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wv1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q J1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s -RM H C > 9 4/*|%w rmhc TbQe!BckZfhQgrcyiMhEAAJ:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwTaQe!BckZfhQgrcyiMhEAAJ:localhost:8800$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4T`Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYT_Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYT^Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0T]Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78T\Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4T[Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYTZQe!BckZfhQgrcyiMhEAAJ:localhost:8800$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkTYQe!KXMUzALpMMMKqoQXUS:localhost:8800$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUTXQe!KXMUzALpMMMKqoQXUS:localhost:8800$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuITWQe!KXMUzALpMMMKqoQXUS:localhost:8800$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcTVQe!KXMUzALpMMMKqoQXUS:localhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakTUQe!KXMUzALpMMMKqoQXUS:localhost:8800$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4TTQe!KXMUzALpMMMKqoQXUS:localhost:8800$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXoTSQe!KXMUzALpMMMKqoQXUS:localhost:8800$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkTRQe!KXMUzALpMMMKqoQXUS:localhost:8800$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14ITQQe!KXMUzALpMMMKqoQXUS:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxATPQe!KXMUzALpMMMKqoQXUS:localhost:8800$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcTOQe!NfaPEGKjnUDUTavzol:localhost:8800$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgTNQe!NfaPEGKjnUDUTavzol:localhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4TMQe!NfaPEGKjnUDUTavzol:localhost:8800$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8TLQe!NfaPEGKjnUDUTavzol:localhost:8800$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8TKQe!NfaPEGKjnUDUTavzol:localhost:8800$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70TJQe!NfaPEGKjnUDUTavzol:localhost:8800$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcTIQe!NfaPEGKjnUDUTavzol:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4THQe!NfaPEGKjnUDUTavzol:localhost:8800$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgTGQe!JGhlAUflyNxErGGZZu:localhost:8800$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmITFQe!JGhlAUflyNxErGGZZu:localhost:8800$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQTEQe!JGhlAUflyNxErGGZZu:localhost:8800$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgTDQe!JGhlAUflyNxErGGZZu:localhost:8800$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kTCQe!JGhlAUflyNxErGGZZu:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsTBQe!JGhlAUflyNxErGGZZu:localhost:8800$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMTAQe!tkajvIKHoOMWGsReBs:localhost:8800$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIT@Qe!tkajvIKHoOMWGsReBs:localhost:8800$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0T?Qe!tkajvIKHoOMWGsReBs:localhost:8800$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkT>Qe!tkajvIKHoOMWGsReBs:localhost:8800$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0T=Qe!tkajvIKHoOMWGsReBs:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0T<Qe!tkajvIKHoOMWGsReBs:localhost:8800$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gT;Qe!fcdNYFWFyxmdpKAknc:localhost:8800$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKsT:Qe!fcdNYFWFyxmdpKAknc:localhost:8800$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYT9Qe!fcdNYFWFyxmdpKAknc:localhost:8800$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wT8Qe!fcdNYFWFyxmdpKAknc:localhost:8800$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIT7Qe!fcdNYFWFyxmdpKAknc:localhost:8800$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00T6Qe!fcdNYFWFyxmdpKAknc:localhost:8800$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0  ^4eQo$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "txn_id": "80", "stream_ordering": 949}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI"], "type": "m.room.message", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"body": "private", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041144819, "hashes": {"sha256": "mn7GSGJYBENLS/DC0SnpJULYTxdqNFYC4fhY28iLSlo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bdc7iwkwE2uB+U0UPlfSz0mzUpHpCR4d6/7PsSIruITUJh2VVqWykzLS33KLQW+aKo/jw1KyjsqBL66apTzLBg"}}, "unsigned": {"age_ts": 1570041144819}}3eQ_M$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 948}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00"], "type": "m.room.aliases", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"aliases": ["#test-20191002_181700-33:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041144192, "hashes": {"sha256": "HuU8Rb0Ttr33BWQfcS/YuvGvHY3zwp96Gr3ubtfKWNE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5zuijhc+zzKYSuusTPeGb9JYZH0QaJLegbDxxaizABaiZKTis3hpMbaogIMDVRr6nyPpINPC75Hh6x7+S2tsAQ"}}, "unsigned": {"age_ts": 1570041144192}}2eQ_$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 947}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0"], "type": "m.room.history_visibility", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041143026, "hashes": {"sha256": "NYKc6bALZG0N6zpPF8JnbgU0TVRnVXUvkcAfOw/Pj6g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bDDNBMxmkQSR3ZC2HpnOYzzh4PnHBU7JbFWoJL6oir2WMhlwZ0nj04Rve5Qm5nT3NUoDFhwpYPsQ6ixAuIdGDA"}}, "unsigned": {"age_ts": 1570041143026}}s1eQ_u$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800{"token_id": 218, "stream_ordering": 946}{"auth_events": ["$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8", "$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ", "$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI"], "prev_events": ["$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik"], "type": "m.room.join_rules", "room_id": "!fcdNYFWFyxmdpKAknc:localhost:8800", "sender": "@anon-20191002_181700-197:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041142264, "hashes": {"sha256": "dzEMs5P4DYPafAW73Piz7dWwlb27PBRkV1XER1LeJyk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E0MZSQiARqIOUiFNFEW9XgRI2tRBqtmyeEzB2cYi+elg/bBl2rWd/dc9I2DwoOsioE2uRiV7gvECLaDOJtbMBg"}}, "unsigned": {"age_ts": 1570041142264}} E&j W^d8> 2 % Q Kv   pj} L>p X  vR D  D },8 ^ ,&j1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns 1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4u1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y1e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk$1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ5901e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAO1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT41e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps`0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc10e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcJ1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g 1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sL1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsH1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38.1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw(1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE#1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY]1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w 91e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ@1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4W1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk ^1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE x1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcl0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y$1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK81e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM#1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UQ1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM,21e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 [1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk2 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mCm8m3%m-  m)u  m$Q  mQ  m<  m0m Fmmmmmmm7mmmmBmSmmDmmmmmm^mmm}mumrmnmmmjmgmb)m_#mZmVmSamKmGhmDmAm@m<m3m1m+m+m&m$m!mnmKmmmm !mmmm/mmmmmJmm.mmVm\mmJmmm`mȑmm&m?mmmm$mmmmmm}m6mmm$mVm~mymvmsmq3mnmj(mb2m^m\CmWmUnmRCmLemIfmCmA>m>rm9m ..m--m,,mM++m**mU))m((m''m&&m%%m`$$m##mО""m!!m  m mmmmmMmm msmmumh?mamVmQamLmI#m6m/Hm,m)(m&m$5m"mNmZmmm m[m}mm\mmmBmmmCmmUm#mmh~~m}}m-||mʉ{{mbzzmyymxxmwwmvvmVuumttmssmrrmkqqmppm&oomnnmmmm$llmkkmjjmWiimhhmggmffmw.eemqIddmgccmcbbm_jaamUu``mSS__mP^^mN ]] 0 4 Y  B ns 7<do0MX :e/eQ/ $lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rulesj.eQ9 $XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_aliasg-eQ3 $dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels ,eQ']$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800joina+eQ' $2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800m.room.createm*eQ? $J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibilitye)eQ/ $k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rulesg(eQ3 $tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels 'eQ']$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800joina&eQ' $cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800m.room.createm%eQ? $IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibilitye$eQ/ $kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rulesg#eQ3 $OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels "eQ']$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800joina!eQ' $fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800m.room.createm eQ? $31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY!fcdNYFWFyxmdpKAknc:localhost:8800m.room.history_visibilitypeQ))$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.aliaseslocalhost:8800eeQ/ $0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800m.room.join_rulesjeQ9 $hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik!fcdNYFWFyxmdpKAknc:localhost:8800m.room.canonical_aliasgeQ3 $qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800m.room.power_levels eQ']$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800m.room.member@anon-20191002_181700-197:localhost:8800joinaeQ' $jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800m.room.createmeQ? $4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw!MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibilitypeQ))$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:8800eeQ/ $8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rulesjeQ9 $sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_aliasgeQ3 $G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels eQ']$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800joinaeQ' $YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ!MWCLSWWGdWcSivNVLI:localhost:8800m.room.create   u H : g  2Pn^N  .Lj x n]@anon-20191002_181700-208:localhost:8800@anon-20191002_181700-208:localhost:8800 anon-20191002_181700-208+17@33:localhost:8800@33:localhost:8800 33n]@anon-20191002_181700-207:localhost:8800@anon-20191002_181700-207:localhost:8800 anon-20191002_181700-207+17@32:localhost:8800@32:localhost:8800 32n]@anon-20191002_181700-206:localhost:8800@anon-20191002_181700-206:localhost:8800 anon-20191002_181700-206+17@31:localhost:8800@31:localhost:8800 31n]@anon-20191002_181700-205:localhost:8800@anon-20191002_181700-205:localhost:8800 anon-20191002_181700-205+17@30:localhost:8800@30:localhost:8800 30n]@anon-20191002_181700-204:localhost:8800@anon-20191002_181700-204:localhost:8800 anon-20191002_181700-204n ]@anon-20191002_181700-203:localhost:8800@anon-20191002_181700-203:localhost:8800 anon-20191002_181700-203n ]@anon-20191002_181700-202:localhost:8800@anon-20191002_181700-202:localhost:8800 anon-20191002_181700-202n ]@anon-20191002_181700-201:localhost:8800@anon-20191002_181700-201:localhost:8800 anon-20191002_181700-201n ]@anon-20191002_181700-200:localhost:8800@anon-20191002_181700-200:localhost:8800 anon-20191002_181700-200n]@anon-20191002_181700-198:localhost:8800@anon-20191002_181700-198:localhost:8800 anon-20191002_181700-198n]@anon-20191002_181700-197:localhost:8800@anon-20191002_181700-197:localhost:8800 anon-20191002_181700-197n]@anon-20191002_181700-195:localhost:8800@anon-20191002_181700-195:localhost:8800 anon-20191002_181700-195n]@anon-20191002_181700-194:localhost:8800@anon-20191002_181700-194:localhost:8800 anon-20191002_181700-194n]@anon-20191002_181700-193:localhost:8800@anon-20191002_181700-193:localhost:8800 anon-20191002_181700-193n]@anon-20191002_181700-192:localhost:8800@anon-20191002_181700-192:localhost:8800 anon-20191002_181700-192n]@anon-20191002_181700-191:localhost:8800@anon-20191002_181700-191:localhost:8800 anon-20191002_181700-191+17@17:localhost:8800@17:localhost:8800 174n]@anon-20191002_181700-190:localhost:8800@anon-20191002_181700-190:localhost:8800 anon-20191002_181700-190+17@16:localhost:8800@16:localhost:8800 16n~]@anon-20191002_181700-189:localhost:8800@anon-20191002_181700-189:localhost:8800 anon-20191002_181700-189+}17@15:localhost:8800@15:localhost:8800 15n|]@anon-20191002_181700-188:localhost:8800@anon-20191002_181700-188:localhost:8800 anon-20191002_181700-188+{17@14:localhost:8800@14:localhost:8800 14nz]@anon-20191002_181700-187:localhost:8800@anon-20191002_181700-187:localhost:8800 anon-20191002_181700-187+y17@13:localhost:8800@13:localhost:8800 13nx]@anon-20191002_181700-186:localhost:8800@anon-20191002_181700-186:localhost:8800 anon-20191002_181700-186nw]@anon-20191002_181700-185:localhost:8800@anon-20191002_181700-185:localhost:8800 anon-20191002_181700-185n ]@anon-20191002_181700-199:localhost:8800@anon-20191002_181700-199:localhost:8800 anon-20191002_181700-199   6 l c]c@anon-20191002_181700-116:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNyalBrVkBSVHRQV3BtcjkKMDAyZnNpZ25hdHVyZSBGv9zh89YlSLJ7tr6qNAFySmE6Wq350j_pOcE1ZLfB1go127.0.0.1ac]c@anon-20191002_181700-115:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEsuMmNeejJ1dC5Ken5XTngKMDAyZnNpZ25hdHVyZSDp48ne4hpvsjKm20KHlw3ejATpzQLmb7jcln5ei-fUEwo127.0.0.1`c]c@anon-20191002_181700-114:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdpbX56OHY6YUJnMTo3NDYKMDAyZnNpZ25hdHVyZSD-MPIDttpm02jXHimDdKNpj7_uy6Hd1JlElFlxPtHI4Qo127.0.0.1_c]c@anon-20191002_181700-113:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlFOS5YeFlncyxPdXFCMWEKMDAyZnNpZ25hdHVyZSCvLH6FKbwv7qlAlCfRE5jSudZptVuq-gxNXnCHarQ3ygo127.0.0.1^c]c@anon-20191002_181700-112:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTExMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV6QnAjLFhSa0ZjbWkzSVEKMDAyZnNpZ25hdHVyZSCMpVE2VFNgsVXDn11xjIY4Dre2PcyL3S7OZfgOzdh6Swo127.0.0.1] ~z v r n j fb^ZVRNJFkeeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800jeeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800ieeQ$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800heeQ$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800geeQ$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800feeQ$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800eeeQ$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800deeQ$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800ceeQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800beeQ$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800aeeQ$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800`eeQ$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800_eeQ$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800^eeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800]eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800\eeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800[eeQ$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800ZeeQ$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800YeeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800XeeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800WeeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800VeeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800UeeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800TeeQ$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800SeeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800ReeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800QeeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800PeeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800OeeQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800NeeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800 -RM H C > 9 4/*|%w rmhc T5Qe!FIOuvzpMhoERunVYYA:localhost:8800$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kT4Qe!zNBpypJDRMlBdOcLlW:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYT3Qe!zNBpypJDRMlBdOcLlW:localhost:8800$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sT2Qe!zNBpypJDRMlBdOcLlW:localhost:8800$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kT1Qe!zNBpypJDRMlBdOcLlW:localhost:8800$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0T0Qe!zNBpypJDRMlBdOcLlW:localhost:8800$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwT/Qe!zNBpypJDRMlBdOcLlW:localhost:8800$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAT.Qe!zNBpypJDRMlBdOcLlW:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8T-Qe!zNBpypJDRMlBdOcLlW:localhost:8800$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkT,Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cT+Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8T*Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYT)Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4IT(Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6ET'Qe!TcaopYfMoJFEcjYRzJ:localhost:8800$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQT&Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkT%Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwT$Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4T#Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYT"Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0T!Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78T Qe!BckZfhQgrcyiMhEAAJ:localhost:8800$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4TQe!BckZfhQgrcyiMhEAAJ:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYTQe!BckZfhQgrcyiMhEAAJ:localhost:8800$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkTQe!KXMUzALpMMMKqoQXUS:localhost:8800$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuITQe!KXMUzALpMMMKqoQXUS:localhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakTQe!KXMUzALpMMMKqoQXUS:localhost:8800$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4TQe!KXMUzALpMMMKqoQXUS:localhost:8800$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXoTQe!KXMUzALpMMMKqoQXUS:localhost:8800$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkTQe!KXMUzALpMMMKqoQXUS:localhost:8800$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14ITQe!KXMUzALpMMMKqoQXUS:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxATQe!KXMUzALpMMMKqoQXUS:localhost:8800$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcTQe!NfaPEGKjnUDUTavzol:localhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4TQe!NfaPEGKjnUDUTavzol:localhost:8800$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8TQe!NfaPEGKjnUDUTavzol:localhost:8800$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8TQe!NfaPEGKjnUDUTavzol:localhost:8800$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70TQe!NfaPEGKjnUDUTavzol:localhost:8800$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcTQe!NfaPEGKjnUDUTavzol:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4TQe!NfaPEGKjnUDUTavzol:localhost:8800$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgTQe!JGhlAUflyNxErGGZZu:localhost:8800$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIT Qe!JGhlAUflyNxErGGZZu:localhost:8800$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQT Qe!JGhlAUflyNxErGGZZu:localhost:8800$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgT Qe!JGhlAUflyNxErGGZZu:localhost:8800$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kT Qe!JGhlAUflyNxErGGZZu:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsT Qe!JGhlAUflyNxErGGZZu:localhost:8800$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM   -s@eQ_u$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 961}{"auth_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k", "$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k"], "type": "m.room.join_rules", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041155825, "hashes": {"sha256": "SJ6BEY4Sp8Ys2G43HsMu2qOC6ASwnQoQRe5xIhAldt8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i8Mgz38MPdjrmBpwEtgz4QNksBJ56cGD59rzU5DsTyxr59AS5rVWYlL5oEX/gexzlfA864I1lCymjf/XH23aBg"}}, "unsigned": {"age_ts": 1570041155825}}j?eQ_c$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 960}{"auth_events": ["$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "type": "m.room.power_levels", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"users": {"@anon-20191002_181700-199:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041155016, "hashes": {"sha256": "qLNnI7DHK379r+TTHGHaE5gZc7Vuu/026HEgI8vzxbc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CzsJP5xjNRHT51q0VoOGvKqNifXonqZVlb9YHb94AcXA6saKX6cFcD2clkXvgKvfeBwF4yO68JdiizP3AP5sAw"}}, "unsigned": {"age_ts": 1570041155016}}u>eQ_y$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 959}{"auth_events": ["$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM"], "prev_events": ["$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM"], "type": "m.room.member", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-199", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-199:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041154400, "hashes": {"sha256": "hD+aUWTxX8YTCzvoWBhMGtUETwjl1FMWGyuLZcLh+dw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jN2wbt5h3XZ8vCuX7pCGnNEdAOLog2y1kqTSipVhQ/FVT4y+lhit9d/UMWqjKuZmsoDrdlCWs6Gi9wezT6cNBQ"}}, "unsigned": {"age_ts": 1570041154400}}h=eQ__$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 958}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-199:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041153681, "hashes": {"sha256": "wcxmSqlvdDlkv8TRJ7rtOxv2xzh3M00e47dB73YHxjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "arx7ERt7nJ/1a9lvKXIlk11Z0//Y4JxneHULHErTLLdb73xngerFYyw/UzZ2YTssbVDRJTG4ecwXjnXupbfWCA"}}, "unsigned": {"age_ts": 1570041153681}} #s 1 ] f ! J S~+:h2AogeQ3 $2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_accessmeQ? $rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibilityeeQ/ $VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rulesgeQ3 $KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels ~eQ']$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800a}eQ' $1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.creates|eQ'1$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800s{eQ'1$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800gzeQ3 $9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_accessmyeQ? $T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibilitymxeQ? $HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibilityeweQ/ $WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rulesgveQ3 $x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels ueQ']$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800ateQ' $uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.createmseQ? $SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibilitypreQ))$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800mqeQ? $jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibilityepeQ/ $mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rulesjoeQ9 $JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_aliasgneQ3 $7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels meQ']$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800aleQ' $N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800m.room.createpkeQ))$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800mjeQ? $HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibilityeieQ/ $lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rulesjheQ9 $XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_aliasggeQ3 $dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels feQ']$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800aeeQ' $2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800m.room.createmdeQ? $J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibilitymceQ? $NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibilityebeQ/ $k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rulesgaeQ3 $tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels `eQ']$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800m.room.member@anon-20191002_181700-199:localhost:8800 #r*F Q v % 0 Uy,1Uw &Pri/Q3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_access$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9co.Q? e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibility$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8g-Q/ e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rules$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYi,Q3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I +Q']e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Ec*Q' e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.create$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQu)Q'1e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQku(Q'1e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwi'Q3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4i&Q3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4o%Q? e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYo$Q? e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0g#Q/ e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rules$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78i"Q3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4 !Q']e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYc Q' e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.create$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkoQ? e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIrQ))e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakoQ? e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4gQ/ e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rules$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXolQ9 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_alias$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkiQ3 e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I Q']e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAcQ' e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.create$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcrQ))e!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4oQ? e!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8gQ/ e!NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rules$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8lQ9 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.canonical_alias$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70iQ3 e!NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc Q']e!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4cQ' e!NfaPEGKjnUDUTavzol:localhost:8800m.room.create$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgoQ? e!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIoQ? e!JGhlAUflyNxErGGZZu:localhost:8800m.room.history_visibility$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQgQ/ e!JGhlAUflyNxErGGZZu:localhost:8800m.room.join_rules$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgi Q3 e!JGhlAUflyNxErGGZZu:localhost:8800m.room.power_levels$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k V N  ^ Ymru {V e'Q  ]$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkm.room.create!BckZfhQgrcyiMhEAAJ:localhost:8800mKm@anon-20191002_181700-202:localhost:8800!Ue)Q ] $ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUm.room.message!KXMUzALpMMMKqoQXUS:localhost:8800 mm@anon-20191002_181700-201:localhost:8800,Te?Q ] $SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIm.room.history_visibility!KXMUzALpMMMKqoQXUS:localhost:8800 mm@anon-20191002_181700-201:localhost:8800!Se)Q ]$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcm.room.message!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800!Re)Q ]$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakm.room.aliases!KXMUzALpMMMKqoQXUS:localhost:8800m !m @anon-20191002_181700-201:localhost:8800,Qe?Q ]$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4m.room.history_visibility!KXMUzALpMMMKqoQXUS:localhost:8800mm A@anon-20191002_181700-201:localhost:8800$Pe/Q ]$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXom.room.join_rules!KXMUzALpMMMKqoQXUS:localhost:8800mml@anon-20191002_181700-201:localhost:8800)Oe9Q ]$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAkm.room.canonical_alias!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800&Ne3Q ]$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14Im.room.power_levels!KXMUzALpMMMKqoQXUS:localhost:8800m/m-@anon-20191002_181700-201:localhost:8800 Me'Q ]$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAm.room.member!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800L e'Q  ]$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jcm.room.create!KXMUzALpMMMKqoQXUS:localhost:8800mm@anon-20191002_181700-201:localhost:8800!Ke)Q ]$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDgm.room.message!NfaPEGKjnUDUTavzol:localhost:8800mmY@anon-20191002_181700-200:localhost:8800!Je)Q ]$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4m.room.aliases!NfaPEGKjnUDUTavzol:localhost:8800mm~@anon-20191002_181700-200:localhost:8800,Ie?Q ]$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8m.room.history_visibility!NfaPEGKjnUDUTavzol:localhost:8800mJm@anon-20191002_181700-200:localhost:8800$He/Q ]$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8m.room.join_rules!NfaPEGKjnUDUTavzol:localhost:8800mm@anon-20191002_181700-200:localhost:8800)Ge9Q ]$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70m.room.canonical_alias!NfaPEGKjnUDUTavzol:localhost:8800m.m@anon-20191002_181700-200:localhost:8800&Fe3Q ]$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcm.room.power_levels!NfaPEGKjnUDUTavzol:localhost:8800mm@anon-20191002_181700-200:localhost:8800 Ee'Q ]$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4m.room.member!NfaPEGKjnUDUTavzol:localhost:8800mVm@anon-20191002_181700-200:localhost:8800D e'Q  ]$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgm.room.create!NfaPEGKjnUDUTavzol:localhost:8800m\m@anon-20191002_181700-200:localhost:8800,Ce?Q ]$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIm.room.history_visibility!JGhlAUflyNxErGGZZu:localhost:8800mmm@anon-20191002_181700-199:localhost:8800,Be?Q ]$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQm.room.history_visibility!JGhlAUflyNxErGGZZu:localhost:8800mJm.@anon-20191002_181700-199:localhost:8800$Ae/Q ]$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgm.room.join_rules!JGhlAUflyNxErGGZZu:localhost:8800mmѺ@anon-20191002_181700-199:localhost:8800&@e3Q ]$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45km.room.power_levels!JGhlAUflyNxErGGZZu:localhost:8800mmr@anon-20191002_181700-199:localhost:8800 VG\k9q?2 $  w E   P } K   Q   W % ^ ,dj8p> \vD|JV*V1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 01e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk'1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU71e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4c1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE s1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8y1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE p1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4G1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigK1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 .1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU51e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo b1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 D1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsi1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o{1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c71e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcm1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90c1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEt1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMV1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg}1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0Z1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM 1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M 1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 61e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQa1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 %1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls ;1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMK1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8 A xAuDeQ_y$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800{"token_id": 221, "stream_ordering": 965}{"auth_events": ["$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg"], "prev_events": ["$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg"], "type": "m.room.member", "room_id": "!NfaPEGKjnUDUTavzol:localhost:8800", "sender": "@anon-20191002_181700-200:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-200", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-200:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041160534, "hashes": {"sha256": "TA7GrYw3tTOv0M+9qFuPAoHpzlM5rCzU1/dlkLmLDf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A0xikx6mwOa0UZlkuQ7yoyJ+06ZQQKq91jM4Z5Bahksv26DctAT5bXIJDjhpQ4n/Hh60rkvx9rBH/t88FOKBCQ"}}, "unsigned": {"age_ts": 1570041160534}}hCeQ__$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800{"token_id": 221, "stream_ordering": 964}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NfaPEGKjnUDUTavzol:localhost:8800", "sender": "@anon-20191002_181700-200:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-200:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041159772, "hashes": {"sha256": "XgNZldkn7sN2TniiJCnZdFzzmRtY/QCGslnTIYPdCbA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "azgJH8JJi2BLOt8ATZIw1tYvetef+J2+ce3SOehEL1GpON+jR9qPZFvgQzjUQO/4pFzOWYa/59/TDb/SsG0ACA"}}, "unsigned": {"age_ts": 1570041159772}}NBeQ_+$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 963}{"auth_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k", "$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ"], "type": "m.room.history_visibility", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041157908, "hashes": {"sha256": "O9PTNlaAk9tiiFQLfUwutorcw7GBPyISlFyne4BMMwA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q6NOZgC7PDQLLbjISzgZpqghBx2wwQOQ5X8ncjWt/K9t//auMnRRWhEF/RHHwrlFs5MPak1tloQQmYDXeEFWDA"}}, "unsigned": {"age_ts": 1570041157908, "replaces_state": "$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ"}}AeQ_$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800{"token_id": 220, "stream_ordering": 962}{"auth_events": ["$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k", "$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM", "$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps"], "prev_events": ["$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg"], "type": "m.room.history_visibility", "room_id": "!JGhlAUflyNxErGGZZu:localhost:8800", "sender": "@anon-20191002_181700-199:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041156426, "hashes": {"sha256": "gLEjlO06rsX3N2Es7hXrOvk3U3BPiy86uc/q0y74l88"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OkFFY845Sf4WBXcxzVvd8DgoDIBhrTS6ixvnLRgUttd/dtA/zzGZR3rnsZ679vUumUzisMMOJ8HXV/QycqwTDA"}}, "unsigned": {"age_ts": 1570041156426}} a} { y w u sqomkigeca~BeeQ$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800~AeeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800~@eeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~?eeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800~>eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800~=eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~<eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800~;eeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800~:eeQ$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~9eeQ$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800~8eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~7eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~6eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~5eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~4eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~3eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~2eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~1eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~0eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~/eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~.eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~-eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800~,eeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800~+eeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~*eeQ$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsg!NfaPEGKjnUDUTavzol:localhost:8800~)eeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~(eeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~'eeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800~&eeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800~%eeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM!JGhlAUflyNxErGGZZu:localhost:8800~$eeQ$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800 <4,$ l  d \ T  L |tDeeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800 7eeQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800 keeQ$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU!zNCItZNbpkZKuufRhC:localhost:8800eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800 JeeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800 /eeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800 eeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800 heeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800eeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo!DelfBAGvCrTXgNxmNV:localhost:8800 reeQ$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI!msMfSdLIAvklSSAnci:localhost:8800eeQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800AeeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800eeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800 `eeQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800ԁeeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800-eeQ$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY!fJXiUpbbOlLbHWmPgs:localhost:8800qeeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800 eeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800QeeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800ReeQ$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk!eySSVuCclRpBDgwKIU:localhost:8800eeQ$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800geeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:88002h  / I c } rb"RCVx eeQ$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg!AWfbViAZparIjmDaVT:localhost:8800eeQ$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800 : eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800:eeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800x$_3QQ$87:localhost:42455$1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 ́eeQ$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA!kxTDuIasPNpXtiRsif:localhost:8800l eeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800 ρeeQ$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw!qxqNYKdtgvOQdhmgsj:localhost:8800ہeeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800 $_3QQ$38:localhost:42455$1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 }eeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800 f]eeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800eeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w!whuymJoLfUdkFdxoyE:localhost:8800bznQQQ$1570043729448XmFHA:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 ~ nQQQ$1570043580403vYYeb:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800 (nQQQ$1570043524356NlySy:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043388312YDkJu:localhost:8800$1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 M^nQQQ$1570043195270GcoLc:localhost:8800$1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800 6nQQQ$1570042723230DFoyn:localhost:8800$1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800 nQQQ$1570042691192yNWVM:localhost:8800$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800 nQQQ$1570042660157svDcU:localhost:8800$1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042629121nZoNG:localhost:8800$1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800lOOQ$157004185881ahRFW:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h lOOQ$157004179138NbBYh:localhost:8800$157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800#lOOQ$157004174414klNmS:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800ԁeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800 gseeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800 H v `0p Xxh P 8 @ )P@ eeQ$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!FPcQcheNebvdFvmOnr:localhost:8800" ~eeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800 eeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo!awHAhLuEkavTGACcUW:localhost:8800`eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800eeQ$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0!tDsPLsKOLPePtEWRwn:localhost:8800āeeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800 NeeQ$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800qeeQ$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs!BrssELMbasSzTFpIXm:localhost:8800" eeQ$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw!xwoIOPTGmJIlTXakxC:localhost:8800OeeQ$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800m HeeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:8800 5NeeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800/eeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800(HeeQ$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc!EieRtaCFZJJCIOkRPp:localhost:8800 <eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800 eeQ$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk!hDAzBWYEyRVBRlrCHh:localhost:8800ReeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ!JGhlAUflyNxErGGZZu:localhost:8800S eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800 DeeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800 veeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM!CgVBWWcRJoHEcwoLcq:localhost:8800 veeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:88295 l Y F3 {H1a%E@30:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDMwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSVJoM1JodzR0aDBhRFNQMgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIC79MAQDFp0t3idDH3_RY6Fsr_JvLoo9JC8ioIEUQJ2-Cgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mqŃG]c!E@anon-20191002_181700-204:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpLakxYWVUmREppenJxMmEKMDAyZnNpZ25hdHVyZSBN0jSmRAyfm65inJM6fRbjhvy_F10vt604j1fMtsvhHgoHOFBXQYKDH127.0.0.1Perl + Net::Async::HTTP/0.44mRЂ{F1a%E@29:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDI5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGRWeDBtMTRaWVdaMzhHdgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIFYE829LgFsLU0wxq-mP25iUQ47uGCA9V2NnR9yK12LuCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44mNE]c!E@anon-20191002_181700-203:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMuO3R3Z0lFdHlFNTFhOEoKMDAyZnNpZ25hdHVyZSA9WCMhYxIQ6llnmPpchLmEr6jOQg0B6NxG_uxP6dlbywoUCNLRVNQIF127.0.0.1Perl + Net::Async::HTTP/0.44m >*Q!LazKtcHZriKzCvvGwV:localhost:8800 = =*Q!LazKtcHZriKzCvvGwV:localhost:8800 < <*Q!LazKtcHZriKzCvvGwV:localhost:8800 ; ;*Q!LvARVIpJZeRQxbKefX:localhost:8800tt 9r i V Cr&_?xE{ e]]Q=$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s@anon-20191002_181700-214:localhost:8800@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800inviteanon-20191002_181700-214Cz e]]Q=$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0@anon-20191002_181700-213:localhost:8800@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800joinanon-20191002_181700-213Cy e]]Q=$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ@anon-20191002_181700-212:localhost:8800@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800joinanon-20191002_181700-212Ex e]]Q=$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM@anon-20191002_181700-212:localhost:8800@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800inviteanon-20191002_181700-212Cw e]]Q=$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I@anon-20191002_181700-211:localhost:8800@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800joinanon-20191002_181700-211Ev e]]Q=$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k@anon-20191002_181700-210:localhost:8800@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800inviteanon-20191002_181700-210Cu e]]Q=$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k@anon-20191002_181700-209:localhost:8800@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800joinanon-20191002_181700-209t e11Q$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M@34:localhost:8800@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800join34Cs e]]Q=$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU@anon-20191002_181700-208:localhost:8800@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800joinanon-20191002_181700-208r e11Q$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI@33:localhost:8800@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800join33Cq e]]Q=$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg@anon-20191002_181700-207:localhost:8800@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800joinanon-20191002_181700-207p e11Q$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms@32:localhost:8800@32:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800join32Co e]]Q=$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM@anon-20191002_181700-206:localhost:8800@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800joinanon-20191002_181700-206n e11Q$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE@31:localhost:8800@31:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800join31Cm e]]Q=$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY@anon-20191002_181700-205:localhost:8800@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800joinanon-20191002_181700-205l e11Q$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY@30:localhost:8800@30:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800join30Ck e]]Q=$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8@anon-20191002_181700-204:localhost:8800@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800joinanon-20191002_181700-204Cj e]]Q=$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E@anon-20191002_181700-203:localhost:8800@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800joinanon-20191002_181700-203i e11Q$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk@28:localhost:8800@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800leaveh e11Q$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw@28:localhost:8800@28:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800join28Cg e]]Q=$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY@anon-20191002_181700-202:localhost:8800@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800joinanon-20191002_181700-202Cf e]]Q=$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA@anon-20191002_181700-201:localhost:8800@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800joinanon-20191002_181700-201  PeQ_$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 977}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo"], "type": "m.room.history_visibility", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041170160, "hashes": {"sha256": "PyqoncRmQ1edu7NduQTuiGQwVyZLbHcQbyX8fuwNzB8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K4hoBfv+oQqynPj5TZs4KUt8rECS4mWoH2MG/qOwl0xBYmPOQegMqRRZP4ZUDVERqUJj07ybxW0znsNs9ieLBw"}}, "unsigned": {"age_ts": 1570041170160}}sOeQ_u$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 976}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk"], "type": "m.room.join_rules", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041169542, "hashes": {"sha256": "JPjvlWeu4Q/CltRuCEfriOj+xDlwq6pyjpdn2E6GIjI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LHYqFF4fuxcBjTAMNwNeSuubENZNs+VCoYGWIPSdootKAdyW5+kOsp0d7J8fY2Irnux9y8DOwai6KuaqhkJLCA"}}, "unsigned": {"age_ts": 1570041169542}}NeQ_9$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 975}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I"], "type": "m.room.canonical_alias", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"alias": "#test-20191002_181700-35:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041168859, "hashes": {"sha256": "UXEzkLy1zHsWoVLb2+BsRMgrthiCvsBlnHz7pg5B7is"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nu1JjHsNVmSdvq00O/hP8eORkMXOHQgYCOeMk2Y1fu5LcK9wXg0ZSRZxMS6M95N7/GVqVsufoN952HM/zIauCA"}}, "unsigned": {"age_ts": 1570041168859}}jMeQ_c$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 974}{"auth_events": ["$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "type": "m.room.power_levels", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"users": {"@anon-20191002_181700-201:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041168175, "hashes": {"sha256": "hSdisjs9g1xRUU2+OnW+Ye1OLiDWiMcxTb7b+18/0n4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "215gY88R8v8b30/ImSPcg/zjeBXzpPLL0j2/3oiIYqmdS/PdTre/0Kmwjqv4kxgDzcW/ebWO9+2REFH45I4TDw"}}, "unsigned": {"age_ts": 1570041168175}} ,NC 8 - { " p  e ZOD9.|#qf VxeL$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIsha2569&!6޺p+;`VweL$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEsha2565T\(?#]:;|$o#AVveL$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Qsha256Uwϟ@~{,7K 1qtVueL$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIosha256^`VҦܬDҁԘG,LVteL$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUsha256}BN,@CIEhB_zh[%VseL$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUsha256 }kIj#PͪO7VreL$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4sha256I- ?!7!gX#FI7.dLh,aVqeL$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwsha256Sa2Y d MnG4ޏ@^̧VjeL$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUssha256C3p)}0ˏbS ]W!&UEEV`eL$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Isha256(2NEdgQEְ -V_eL$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Esha256qlAyk,_4i8V^eL$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQsha256P"n@Ã{z۫KV]eL$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQksha256KsڝVm2dFka V\eL$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwsha256@И.M1wO w NlV[eL$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4sha256EcSԽTg۞[Q _ruVZeL$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYsha256O]Ѥ¬CTD=*4VYeL$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0sha256Υ뛸17gHUIţ=VXeL$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78sha256YBS{gELx{^wќ-2[$TVWeL$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4sha256H)\uэtsY\ݥidVVeL$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYsha256'8;l*ז#ԙ AؖY6VUeL$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgksha256CtK77E f<GD UF VTeL$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUsha256jUH]"mɬ+}I^Xn" H=`VSeL$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIsha256H1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYC1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs:d1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w w1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8  ]TeQo$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "txn_id": "84", "stream_ordering": 981}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI"], "type": "m.room.message", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"body": "public", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041173405, "hashes": {"sha256": "Mvk6SJHuqjVc1rJo3E8mR0XtGVDSi4Q4CLpLzQx06as"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zhaMhIUdwJAqiEOEBGXDR6hixvcXLsCYXjig9spSGzZJ1vdyN+InBfkHZso637glv5Ejqk76WALr/MHjA9ZXBg"}}, "unsigned": {"age_ts": 1570041173405}}NSeQ_+$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 980}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc"], "type": "m.room.history_visibility", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041172359, "hashes": {"sha256": "8cFRHx+H8kBrc6JhW1mnzwsVwiria+K0G6i0mBCjZ2k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9a1eMRCmvlHUo4v/MhjvcpALoyT8mkvbgQ99Kew2FJ4sxJoHOKyV3VRVV1iME0b0HdW7XIWlTbXdfI8UmRQLBQ"}}, "unsigned": {"age_ts": 1570041172359, "replaces_state": "$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4"}}ReQo$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "txn_id": "83", "stream_ordering": 979}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak"], "type": "m.room.message", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"msgtype": "m.text", "body": "private"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041171945, "hashes": {"sha256": "gPahpuGqrceRuD8Rm1o5F/MvAIwvzajUgtY+0BBra8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tnzn7/enpSi1mmXy1ZenHSztYY31bawGCJashiewtcxdzuGBVvueEsP4tcNTGChIVsUD4hOlDabQsJY+JDjrBw"}}, "unsigned": {"age_ts": 1570041171945}}QeQ_M$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800{"token_id": 222, "stream_ordering": 978}{"auth_events": ["$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I", "$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc", "$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA"], "prev_events": ["$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4"], "type": "m.room.aliases", "room_id": "!KXMUzALpMMMKqoQXUS:localhost:8800", "sender": "@anon-20191002_181700-201:localhost:8800", "content": {"aliases": ["#test-20191002_181700-35:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041171233, "hashes": {"sha256": "ibPcJU1cobFqhiMs3IWJofKtaVAD8ToMbCSbuTSlnh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5hwMha/8MDrphQXFkj1ztnpV1Otp3PkZCKRBIDahiqmDiutW/EyHXvWYWfBdx67ajN7iqlwt+6OCAB2Vq5XtCQ"}}, "unsigned": {"age_ts": 1570041171233}} !v   " |  :fi~6VvdQ' e!EABRjdYuYumMhLSwIa:localhost:8800m.room.create$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcvQ'1e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEjQ3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_access$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUp Q? e!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibility$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUh Q/ e!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rules$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4j Q3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw Q']e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYd Q' e!FIOuvzpMhoERunVYYA:localhost:8800m.room.create$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kvQ'1e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYQ? ee!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0jQ3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_access$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kpQ? e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0hQ/ e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rules$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwjQ3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA Q']e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8dQ' e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.create$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkjQ3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_access$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cpQ? e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibility$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8h~Q/ e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rules$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYj}Q3 e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I |Q']e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Ed{Q' e!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.create$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ"zQ'1ee!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwvyQ'1e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwjxQ3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_access$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4wQ? ee!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0pvQ? e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibility$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0huQ/ e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rules$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78jtQ3 e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4 sQ']e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYdrQ' e!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.create$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkqQ? ee!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibility$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4spQ))e!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak x\ Z r B LPZ[x ne'Q 1 $6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYm.room.member!zNBpypJDRMlBdOcLlW:localhost:8800 mrmr@30:localhost:8800!me)Q ] $Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8m.room.message!zNBpypJDRMlBdOcLlW:localhost:8800 mnmo@anon-20191002_181700-204:localhost:8800,le?Q ]$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sm.room.history_visibility!zNBpypJDRMlBdOcLlW:localhost:8800mmmmd@anon-20191002_181700-204:localhost:8800!ke)Q ]$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUsm.room.message!zNBpypJDRMlBdOcLlW:localhost:8800mjmj@anon-20191002_181700-204:localhost:8800&je3Q ]$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-km.room.guest_access!zNBpypJDRMlBdOcLlW:localhost:8800mgmg@anon-20191002_181700-204:localhost:8800,ie?Q ]$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0m.room.history_visibility!zNBpypJDRMlBdOcLlW:localhost:8800mb)mdw@anon-20191002_181700-204:localhost:8800$he/Q ]$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwm.room.join_rules!zNBpypJDRMlBdOcLlW:localhost:8800m_#m`*@anon-20191002_181700-204:localhost:8800&ge3Q ]$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAm.room.power_levels!zNBpypJDRMlBdOcLlW:localhost:8800mZm\@anon-20191002_181700-204:localhost:8800 fe'Q ]$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8m.room.member!zNBpypJDRMlBdOcLlW:localhost:8800mVmWM@anon-20191002_181700-204:localhost:8800e e'Q  ]$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkm.room.create!zNBpypJDRMlBdOcLlW:localhost:8800mSamS@anon-20191002_181700-204:localhost:8800&de3Q ]$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cm.room.guest_access!TcaopYfMoJFEcjYRzJ:localhost:8800mKmL@anon-20191002_181700-203:localhost:8800,ce?Q ]$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8m.room.history_visibility!TcaopYfMoJFEcjYRzJ:localhost:8800mGhmID@anon-20191002_181700-203:localhost:8800$be/Q ]$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYm.room.join_rules!TcaopYfMoJFEcjYRzJ:localhost:8800mDmE@anon-20191002_181700-203:localhost:8800&ae3Q ]$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Im.room.power_levels!TcaopYfMoJFEcjYRzJ:localhost:8800mAmB@anon-20191002_181700-203:localhost:8800 `e'Q ]$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Em.room.member!TcaopYfMoJFEcjYRzJ:localhost:8800m@m@@anon-20191002_181700-203:localhost:8800_ e'Q  ]$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQm.room.create!TcaopYfMoJFEcjYRzJ:localhost:8800m<m=@anon-20191002_181700-203:localhost:8800 ^e'Q 1$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkm.room.member!BckZfhQgrcyiMhEAAJ:localhost:8800m3m5@28:localhost:8800 ]e'Q 1$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmwm.room.member!BckZfhQgrcyiMhEAAJ:localhost:8800m1m2@28:localhost:8800&\e3Q ]$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4m.room.guest_access!BckZfhQgrcyiMhEAAJ:localhost:8800m+m.(@anon-20191002_181700-202:localhost:8800,[e?Q ]$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYm.room.history_visibility!BckZfhQgrcyiMhEAAJ:localhost:8800m+m,%@anon-20191002_181700-202:localhost:8800,Ze?Q ]$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0m.room.history_visibility!BckZfhQgrcyiMhEAAJ:localhost:8800m&m)@anon-20191002_181700-202:localhost:8800$Ye/Q ]$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78m.room.join_rules!BckZfhQgrcyiMhEAAJ:localhost:8800m$m%y@anon-20191002_181700-202:localhost:8800&Xe3Q ]$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4m.room.power_levels!BckZfhQgrcyiMhEAAJ:localhost:8800m!m!@anon-20191002_181700-202:localhost:8800 We'Q ]$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYm.room.member!BckZfhQgrcyiMhEAAJ:localhost:8800mnm@anon-20191002_181700-202:localhost:8800   -sXeQ_u$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 985}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4"], "type": "m.room.join_rules", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041177267, "hashes": {"sha256": "zKG/unzeo2EFmYxBvpDXBAosYnkvvq6upMLgry/Bqgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DKwRaoXYI9f3ow1DSty2zWkydrgqJAvgQhpsvzruR9FB5cNi3pRFi7A65L8edYfSywv6KGhmnf1BfcpDreEiCA"}}, "unsigned": {"age_ts": 1570041177267}}jWeQ_c$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 984}{"auth_events": ["$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "type": "m.room.power_levels", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"users": {"@anon-20191002_181700-202:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041176320, "hashes": {"sha256": "+AR1OVe0eACP5ySz643h6GFM5X8j2FWxgdlAyHnggjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IjrV02Ovd3vfyZ1sm+wzOpbHoAD6amlbv+i7uByn7TCZ+CDc68pwXnlOxMS/XQaOvcGg9wXwGT2lmCTv98nHDg"}}, "unsigned": {"age_ts": 1570041176320}}uVeQ_y$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 983}{"auth_events": ["$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk"], "prev_events": ["$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk"], "type": "m.room.member", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-202", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-202:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041175662, "hashes": {"sha256": "vxk26R8txZQrEQUW0VMV12BqyMww2WtyZwN7djPaMYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sMGu4jLok9BPP96ffj22AZAbvCF5fEU4Tj0TgfzcSIkX2YV0vwwB9sQdEDXMMCOzRqv90O1ieaPaXZpVAg3pDQ"}}, "unsigned": {"age_ts": 1570041175662}}hUeQ__$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 982}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-202:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041174859, "hashes": {"sha256": "PFmBVFYcn8ZqQt/u3JBwir0Ob4hl9I2YoxSOAkUciaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "935tFOulFZN167NQMXgs9fgslgsA3syAvW+AJFflOupm6iqcV3RYUCtOy1k9iT5dD71P68j3ktV3g5h81aLFBQ"}}, "unsigned": {"age_ts": 1570041174859}} LJ Dj8p $ \ *b0  h6 Rn= u VC > {I O)  vU# [ ~ L1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg $1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAd1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s\1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg 1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwc1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4`1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro_1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIk1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qq1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY81e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y {1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU 1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwb1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8&1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMca1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk #1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg 1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns s1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA N1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE L1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs 51e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs 41e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo %1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg 1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk 1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX01e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8j1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ } a x(aC\eQ=7$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800{"stream_ordering": 989}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78"], "prev_events": ["$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY", "$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4"], "type": "m.room.member", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@28:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "28", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041180595, "hashes": {"sha256": "c4czAEgUwJEQwl3mb9y0/ZMvYbwRKFR4hKfrjXz1PRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dev4qiLYEbqlzouo81mD6cQE0wC6MfS+Zw5LugocFVtQvXn2ej+pN7bl/scTIUg28L2Ckq+IMbRnJUOPgzTOCg"}}, "unsigned": {"age_ts": 1570041180595}}z[eQ_$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 988}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0"], "type": "m.room.guest_access", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041179016, "hashes": {"sha256": "PbLRDv0DGMYEvonp6EwHsw5XCvQTYdpNl4J+hfPDkiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQYzmYgXB3kf1bo6bV7Y1wLXQ9h27bPGs1GAYF7mDYBgRGdMewALd7lTO+uUcpVFbq5rzYqoR5wQQ10FVAZ5Cw"}}, "unsigned": {"age_ts": 1570041179016}}NZeQ_+$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 987}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0"], "type": "m.room.history_visibility", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041179015, "hashes": {"sha256": "yaz75gTAz5UfE67QPYV+RVgIwDwqH2gzkQIrVvYLerU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ijFUQtwYuqdr55zroYWSzcVOq5E5UTg2GMWs3XcZRJOZaLMYc5yRaUv2POxCZEV8dDOyLY3ymFXtj0I3XmC2Aw"}}, "unsigned": {"age_ts": 1570041179015, "replaces_state": "$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0"}}YeQ_$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800{"token_id": 223, "stream_ordering": 986}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY"], "prev_events": ["$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78"], "type": "m.room.history_visibility", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@anon-20191002_181700-202:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041177809, "hashes": {"sha256": "9sWDIj8lmkS4oUM2zh8DB9mu8nbPSxIQ6E2wvGNCUdg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HfMGipRuFDql4/zzisRGUPTsq6bu2n5ZFM8v7Y6JWxIW30JUIcUjwB9ii99onR2XilhjYx07tcBpx+KAJYGyBA"}}, "unsigned": {"age_ts": 1570041177809}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1!e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI1 e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ01e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX81e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1 e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1 e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1 e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1 e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE1 e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01~e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81}e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1|e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281{e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1ze$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1ye$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1xe$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1we$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1ve$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1ue$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1te$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1se$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo1re$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1qe$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1pe$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41oe$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1ne$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1me$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1le$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1ke$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1je$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81ie$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1he$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1ge$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1fe$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01ee$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1de$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1ce$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81be$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1ae$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1`e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81_e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1^e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1]e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1\e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1[e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1Ze$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1Ye$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41Xe$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1We$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0 .( Q v   ? e#IT.9gwNeQ'1$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800joinmMeQ? $bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilitygLeQ3 $q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_accesseJeQ/ $EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rulesgIeQ3 $hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels HeQ']$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800joinaGeQ' $JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800m.room.creategFeQ3 $2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_accessmEeQ? $rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibilityeDeQ/ $VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rulesgCeQ3 $KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levels BeQ']$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800joinaAeQ' $1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.createx@eQ'1$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@28:localhost:8800leaveg?eQ3 $9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.guest_accessm>eQ? $T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.history_visibilitye=eQ/ $WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.join_rulesg<eQ3 $x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.power_levels ;eQ']$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.member@anon-20191002_181700-202:localhost:8800joina:eQ' $uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800m.room.createm9eQ? $SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI!KXMUzALpMMMKqoQXUS:localhost:8800m.room.history_visibilityp8eQ))$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak!KXMUzALpMMMKqoQXUS:localhost:8800m.room.aliaseslocalhost:8800e6eQ/ $mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800m.room.join_rulesj5eQ9 $JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800m.room.canonical_aliasg4eQ3 $7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800m.room.power_levels 3eQ']$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA!KXMUzALpMMMKqoQXUS:localhost:8800m.room.member@anon-20191002_181700-201:localhost:8800joina2eQ' $N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800m.room.createp1eQ))$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800m.room.aliaseslocalhost:8800m0eQ? $HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800m.room.history_visibility -RM H C > 9 4/*|%w rmhc TQe !ifQxHmNAcSSGHVMjfi:localhost:8800$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkTQe !ifQxHmNAcSSGHVMjfi:localhost:8800$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZkT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgT Qe!ifQxHmNAcSSGHVMjfi:localhost:8800$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60T Qe!EABRjdYuYumMhLSwIa:localhost:8800$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlITQe!EABRjdYuYumMhLSwIa:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsTQe!EABRjdYuYumMhLSwIa:localhost:8800$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0TQe!EABRjdYuYumMhLSwIa:localhost:8800$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8TQe!EABRjdYuYumMhLSwIa:localhost:8800$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwTQe!EABRjdYuYumMhLSwIa:localhost:8800$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28TQe!EABRjdYuYumMhLSwIa:localhost:8800$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaATQe!EABRjdYuYumMhLSwIa:localhost:8800$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYTQe!EABRjdYuYumMhLSwIa:localhost:8800$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQTQe!EABRjdYuYumMhLSwIa:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMTQe!EABRjdYuYumMhLSwIa:localhost:8800$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcT~Qe!FIOuvzpMhoERunVYYA:localhost:8800$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIT}Qe!FIOuvzpMhoERunVYYA:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkET|Qe!FIOuvzpMhoERunVYYA:localhost:8800$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13QT{Qe!FIOuvzpMhoERunVYYA:localhost:8800$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIoTzQe!FIOuvzpMhoERunVYYA:localhost:8800$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUTyQe!FIOuvzpMhoERunVYYA:localhost:8800$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUTxQe!FIOuvzpMhoERunVYYA:localhost:8800$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4TwQe!FIOuvzpMhoERunVYYA:localhost:8800$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwTvQe!FIOuvzpMhoERunVYYA:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYTuQe!FIOuvzpMhoERunVYYA:localhost:8800$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kTtQe!zNBpypJDRMlBdOcLlW:localhost:8800$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zoTsQe!zNBpypJDRMlBdOcLlW:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYTrQe!zNBpypJDRMlBdOcLlW:localhost:8800$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8TqQe!zNBpypJDRMlBdOcLlW:localhost:8800$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sTpQe!zNBpypJDRMlBdOcLlW:localhost:8800$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUsToQe!zNBpypJDRMlBdOcLlW:localhost:8800$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kTnQe!zNBpypJDRMlBdOcLlW:localhost:8800$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0TmQe!zNBpypJDRMlBdOcLlW:localhost:8800$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwTlQe!zNBpypJDRMlBdOcLlW:localhost:8800$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWATkQe!zNBpypJDRMlBdOcLlW:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8TjQe!zNBpypJDRMlBdOcLlW:localhost:8800$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkTiQe!TcaopYfMoJFEcjYRzJ:localhost:8800$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cThQe!TcaopYfMoJFEcjYRzJ:localhost:8800$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8TgQe!TcaopYfMoJFEcjYRzJ:localhost:8800$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYTfQe!TcaopYfMoJFEcjYRzJ:localhost:8800$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4ITeQe!TcaopYfMoJFEcjYRzJ:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6ETdQe!TcaopYfMoJFEcjYRzJ:localhost:8800$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQTcQe!BckZfhQgrcyiMhEAAJ:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk | O c|j`eQ_c$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 993}{"auth_events": ["$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "type": "m.room.power_levels", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"users": {"@anon-20191002_181700-203:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041184761, "hashes": {"sha256": "21MJFhKIuIkxHLndhssocxlRE0VG4nsNm2yu/PTPX4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uWrwwH1J27+c7wDtAlp3UNF5/z1qB3m/FucDvOkBGmP9+0aCMsOIcn3s+lrdxRfWX9joYjB9O10UZqyEk+FADA"}}, "unsigned": {"age_ts": 1570041184761}}u_eQ_y$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 992}{"auth_events": ["$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ"], "prev_events": ["$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ"], "type": "m.room.member", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-203", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-203:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041184260, "hashes": {"sha256": "0aK5JEoXHex6bwBN9qYwyET89U5MWDhEA1W05Qfs8Us"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E84EASpflk/jzoC1OydBiw+slly9NKdmp2X0AQBYR6pu9zqSia3dLuPZYO8RIEX49oiEn4LgEp7C34z5cUxaBQ"}}, "unsigned": {"age_ts": 1570041184260}}h^eQ__$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 991}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-203:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041183466, "hashes": {"sha256": "C1Q4IqOIWNKYvxXRqGIrZdx3zvPuQ/4AV8xc46cAdVY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYK19fK+40Ff2AxFq9HT+gH6nevAoFbbk7quVQ6izaKV+xTMCnnbm/ByYMaSl5yxOsGtEQ792kCnodCViicqDA"}}, "unsigned": {"age_ts": 1570041183466}}-]eQ= $rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800{"stream_ordering": 990}{"auth_events": ["$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4", "$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk", "$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw"], "prev_events": ["$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw"], "type": "m.room.member", "room_id": "!BckZfhQgrcyiMhEAAJ:localhost:8800", "sender": "@28:localhost:8800", "content": {"membership": "leave", "kind": "guest"}, "depth": 8, "prev_state": [], "state_key": "@28:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041181182, "hashes": {"sha256": "0cdwbjbtxXKP3CrTM/FsWNjn6mrhwHIgw6C7DJoDPbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XFGLdfmBanrGb5rvVILGWesfjBqGeTcxu7AhzEno4Rjy3NwmOabBkk/SwSxaUyfcX30GE0uAfrC2hNzzVbcMDw"}}, "unsigned": {"age_ts": 1570041181182, "replaces_state": "$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw"}} ~z v r n j fb^ZVRNJF eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800eeQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800eeQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800eeQ$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800eeQ$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800}eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800|eeQ$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800{eeQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800zeeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800yeeQ$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800xeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800weeQ$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800veeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800ueeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800teeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800seeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800reeQ$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800qeeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800peeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800oeeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800neeQ$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800meeQ$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800leeQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800 M E  } K  Q  W % ^ ,e> k9q? W wwE%}pKQ]+3j8 1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEw1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvos1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo V1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE M1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 J1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4&1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI@1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Al1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo )1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo 81e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEz1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o\1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQu1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k~1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM H1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY.0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh091e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEY1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw=1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsL1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksJ1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER091e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ11e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs\1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQM1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA91e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y81e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 P a} { y w u sqomkigeca~eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~~eeQ$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~}eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800~|eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~{eeQ$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~zeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~yeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~xeeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~weeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~veeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~ueeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~teeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~seeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~reeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~qeeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~peeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~oeeQ$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800~neeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800~meeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~leeQ$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800~keeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800~jeeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800~ieeQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800~heeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800~geeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800~feeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800~eeeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800~deeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ!TcaopYfMoJFEcjYRzJ:localhost:8800~ceeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800~beeQ$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800  hdeQ__$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 997}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-204:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041189217, "hashes": {"sha256": "+0dzqUNQreE+7poxMAE8Lsqg3JTEafPXUNE7eQPLaN8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AFgHHl64Sci+Ygn3qL+gYiZa0bBUdccvtbzWYdRgiNu5TqzOr2iGlTKyAigqVYr5cZBeNRs5OAzxaluEAGLAAQ"}}, "unsigned": {"age_ts": 1570041189217}}zceQ_$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 996}{"auth_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I", "$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8"], "type": "m.room.guest_access", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041187252, "hashes": {"sha256": "CsK8q/o+uBH1j3m4lE+usMFjpYISqZZ8YgBdKSXihE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G25/oQXn16XcoCZBCuCgfQSbuRGe6336bhqbTh4e29Rx7PnCRCfq8k8zrcehzPge+KiNilGGZVanxpV/VbChCw"}}, "unsigned": {"age_ts": 1570041187252}}beQ_$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 995}{"auth_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I", "$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY"], "type": "m.room.history_visibility", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041186152, "hashes": {"sha256": "XgVQDXFK0pGwy5bE9LXZm5FXYO/f4hznETaq1eISYcU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BobTWSRvjvGNT3ewEnsWsEqXad95yIvlgZZFC1uOy+eSndYbY1SAg4Um4WB2Au25LEDTze/NU4hQTmtq/HtTDw"}}, "unsigned": {"age_ts": 1570041186152}}saeQ_u$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800{"token_id": 224, "stream_ordering": 994}{"auth_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I", "$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ", "$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E"], "prev_events": ["$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I"], "type": "m.room.join_rules", "room_id": "!TcaopYfMoJFEcjYRzJ:localhost:8800", "sender": "@anon-20191002_181700-203:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041185527, "hashes": {"sha256": "fMcBtX+6sCUpI9M144ig1vamRwo3xBV+8iWz4fuYpBA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YZwZg1+aJdGNHSrxvKF1ztVwK1YuyYpqJoNhfmSw1icnZTRIZynOPnbUVt1mRpA1yOcvjmIz2spx5ztjJfrqAw"}}, "unsigned": {"age_ts": 1570041185527}} FQ v D  n< t $ p> %W |0h6 *  V \ P ]+zHBb  1e$nH5JNtqyD91e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4G1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40 21e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwW1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40 31e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA#1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40 41e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g1e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA%1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwX1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E] /1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI,1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc%1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E^1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI-1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc&1e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs1e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k 1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI/1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI.1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4H1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4I1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI}1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guci1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4o1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4n1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkI1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkH1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkG1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU 1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwV1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU bHtBh6<  D z Z( N0 | JH  T" P   p>j V $ 8 vnn<tB1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Mz1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1My1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY91e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs461e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4~1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgd1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgc1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgb1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYa1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY`1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY_1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh41e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg [1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg Z1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qn,1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI/1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucn1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucm1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Ucl1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg .1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg -1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMp1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY81e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY71e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc 1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYX1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYW1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYV1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs451e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY _f' S6gG, jM2 ` I { <   x a "  ^ G  m D -vS*y\3_BuR/}|a>i* ">']m.room.member@anon-20191002_181700-213:localhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-200:localhost:8800' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-199:localhost:8800' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-212:localhost:8800>']m.room.member@anon-20191002_181700-212:localhost:88003 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-211:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-210:localhost:88003 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-209:localhost:8800' m.room.create('1m.room.member@34:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-208:localhost:8800' m.room.create('1m.room.member@33:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-207:localhost:8800' m.room.create('1m.room.member@32:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-206:localhost:8800' m.room.create('1m.room.member@31:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-205:localhost:8800' m.room.create('1m.room.member@30:localhost:8800"? m.room.history_visibility3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-204:localhost:8800' m.room.create3 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-203:localhost:8800' m.room.create('1m.room.member@28:localhost:8800('1m.room.member@28:localhost:88003 m.room.guest_access3 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-202:localhost:8800' m.room.create"? m.room.history_visibility%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-201:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800 #S 5 W m  x 0 Rty1GR| ,NSiRQ3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s QQ']e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUcPQ' e!YufaOfAlruTdjyUCwO:localhost:8800m.room.create$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIuOQ'1e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIoNQ? e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYiMQ3 e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_access$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkoLQ? e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kgKQ/ e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rules$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgiJQ3 e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk IQ']e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgcHQ' e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.create$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60uGQ'1e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsoFQ? e!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8iEQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_access$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28oDQ? e!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAgCQ/ e!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rules$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYiBQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ AQ']e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMc@Q' e!EABRjdYuYumMhLSwIa:localhost:8800m.room.create$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcu?Q'1e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEo>Q? e!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibility$F2xtT1ByuijDFDK0pAwURiTVKXS3eRKRq_eWNNWXLmoi=Q3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_access$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUo<Q? e!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibility$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUg;Q/ e!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rules$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4i:Q3 e!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw 9Q']e!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYc8Q' e!FIOuvzpMhoERunVYYA:localhost:8800m.room.create$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6ku7Q'1e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYo6Q? e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_si5Q3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_access$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-ko4Q? e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibility$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0g3Q/ e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rules$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwi2Q3 e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA 1Q']e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8c0Q' e!zNBpypJDRMlBdOcLlW:localhost:8800m.room.create$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk #= c }  " J j y7]$Jds e%eQ/ $xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rulesg$eQ3 $JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels #eQ']$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800a"eQ' $yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800m.room.creates!eQ'1$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800m eQ? $YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilitygeQ3 $Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_accessmeQ? $ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilityeeQ/ $N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rulesgeQ3 $pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels eQ']$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800aeQ' $_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.createseQ'1$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800meQ? $dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibilitygeQ3 $1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_accessmeQ? $2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibilityeeQ/ $aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rulesgeQ3 $gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels eQ']$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800aeQ' $kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800m.room.createseQ'1$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800geQ3 $n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_accessmeQ? $nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibilityeeQ/ $5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rulesg eQ3 $U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels eQ']$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800a eQ' $YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800m.room.creates eQ'1$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800m eQ? $bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilitygeQ3 $q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_accessmeQ? $JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilityeeQ/ $EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rulesgeQ3 $hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levels eQ']$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800aeQ' $JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800m.room.create  heQa$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1001}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw"], "type": "m.room.history_visibility", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041193001, "hashes": {"sha256": "RRnPnukJzmpQpZRkXg1U7S+Wa26Car5xWv0ryL5BeTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OAIhC8XrY7f09PzsaAngBiazM5vrIX1ChMW+cHg6xu6cZR9KmQG/2PGLd9WU/Gg/7vJPpCnO47C1Wm3/9MLZBg"}}, "unsigned": {"age_ts": 1570041193001}}tgeQau$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1000}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA"], "type": "m.room.join_rules", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041192227, "hashes": {"sha256": "txiwMeCPCEdQRX+59tMioAla9jOFlDIFS7Q99QMpUUU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vx1kvwNVBIAKbl6wz7mkIPIk2sjxxOhmzyXnyZazMcLpnFX59IqM/omrn3lSlu5N5yLKxsC8AdTYfvLmtKvwAw"}}, "unsigned": {"age_ts": 1570041192227}}jfeQ_c$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 999}{"auth_events": ["$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "type": "m.room.power_levels", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"users": {"@anon-20191002_181700-204:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041191159, "hashes": {"sha256": "I0eYOSK8dLeVjkzUVMQNG+HPv45v4xhLkOaUKYiEm4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zelhrQdruIkdYGTNK9zvxiZyEmt0BUAsD/8iJT3lh9adFyFviWBSiFVc54dqLgi9PgOpwvyc6rRuwhUzXtxLCg"}}, "unsigned": {"age_ts": 1570041191159}}ueeQ_y$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 998}{"auth_events": ["$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk"], "prev_events": ["$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk"], "type": "m.room.member", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-204", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-204:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041190102, "hashes": {"sha256": "R7H/6ApIpf+L/AST+iVRw5EkRib3HCqgI58m9BF9NYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4fj3N2wnqp9tb11BmjMBuo3+OdINsCycbLySujgOCKMu8762sW4XOqXSA4cJMbw7tdAV0dwc0cW0L+vXC44IAA"}}, "unsigned": {"age_ts": 1570041190102}} ? 6 l c]c@anon-20191002_181700-104:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC51QCNleGw1Z1RCcDpEK3YKMDAyZnNpZ25hdHVyZSBbESTEc8UYOmNPsAO98P14Zb6h-Ru25m0vtH4k7c1s_Ao127.0.0.1Wc]c@anon-20191002_181700-103:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhvQk5BY0ROb3l0c3otZHoKMDAyZnNpZ25hdHVyZSB8NUbaWJEV2zcAZQBgLGqozR7-xr7mw9rj5of15dOLigo127.0.0.1Vc]c@anon-20191002_181700-102:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYyIz00MUw7NUYxUmZ4OXkKMDAyZnNpZ25hdHVyZSCsCQgkueDEDsqJk1RndfzUAZ0OLFB5gDVseP1AQGQuwQo127.0.0.1Ua[a@anon-20191002_181700-10:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gREVpRzAjMCZtbTp3WVJONQowMDJmc2lnbmF0dXJlIGXBB2k0P7TdCgyQPgMFoB6OPmJZSfSYNKTxcYkoTKa2Cg127.0.0.1c]c@anon-20191002_181700-109:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExeZGZHZzZfI2VRM1hLbU0KMDAyZnNpZ25hdHVyZSAipKDPuUC2ALNcQxXnbp__lkUkN9RTiye74SGAyLDo5go127.0.0.1[c]c@anon-20191002_181700-108:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9-LHdQMXplM3RzbUMjRlkKMDAyZnNpZ25hdHVyZSBrW8kUVlf9sqtKXR0FQ7jbm7vSlhjaW84eDhIyjflvHAo127.0.0.1Zc]c@anon-20191002_181700-107:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1rWkUxRzNWOzp3bl5tcG4KMDAyZnNpZ25hdHVyZSDp8-tzBeMxMMx544dgUUOZWf3lCma33mKb0YQiwT5p3wo127.0.0.1Yc]c@anon-20191002_181700-106:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTEwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI0TVNEXm5qYk80QlVjN3YKMDAyZnNpZ25hdHVyZSDBHY-GnrwAjInQa-VxRPNUhBkL0_Qz9VgS1eIcNYb3bQo127.0.0.1X 6.>|u' F m e ]  U NeeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800 xeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800 eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM!vBvlJEXUSQKUYmsKcO:localhost:8800 ŁeeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800eeQ$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800 EeeQ$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800 \eeQ$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800́eeQ$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw!GixhPUMvtKSWoKRgvw:localhost:8800*eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800eeQ$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU!HIZTeBCxvpMSpcqGVD:localhost:8800ceeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800LeeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800 ^eeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800 ueeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800ŁeeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800 UeeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800сeeQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!loalEsWaTYwrVUNJLr:localhost:8800eeQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800eeQ$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800heeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800{eeQ$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8!zNBpypJDRMlBdOcLlW:localhost:8800seeQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800eeQ$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY!BkzROHxDAfKIzYpmPV:localhost:8800(eeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800`eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo!GixhPUMvtKSWoKRgvw:localhost:8800)eeQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE!cSUQGmpIsSCBAVTOHo:localhost:8800J ,bo`m z ) 8 E R  a n},9HU|+IP]Q@anon-20191002_18170P]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800P]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800P]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800P]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800P]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800P]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800P]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800P]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800N[Q@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800P]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800P]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800P]Q@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800N[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800N[Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800P]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800P]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800P]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800N[Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800N[Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800  )leQq$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "txn_id": "87", "stream_ordering": 1005}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s"], "type": "m.room.message", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041196237, "hashes": {"sha256": "1VcGtDjUs8Q7EUwyWpYmG+M4nLjN8eV2SUYw+2WK2T8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JbCfFAY0Ns0Vc3wrB1JVoRzlcd1lZhDKyPMt66JMBQroVdMwNCzVidQpPdTy9yozLlFg6ylhQuSo8168Ks5hBA"}}, "unsigned": {"age_ts": 1570041196237}}OkeQa+$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1004}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs"], "type": "m.room.history_visibility", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041195784, "hashes": {"sha256": "zKhwlgWEIdj4MeOtqTKgSu26wWlfRomjsVeHjOq2F0o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nc7zn+/+gJvhlN6VsT2FG+xqQ5IfNdh3oOMRC1QfdFxq28U+9y5hBbMdVq4xWdhmuXclzmU5+p6gFG3duxulBA"}}, "unsigned": {"age_ts": 1570041195784, "replaces_state": "$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0"}}jeQm$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "txn_id": "86", "stream_ordering": 1003}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k"], "type": "m.room.message", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"msgtype": "m.text", "body": "shared"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041195239, "hashes": {"sha256": "3N5AQXK446qtgJ9QeB4AaAhAVppgF/Ui+21J+szXwAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VOeIK0TniC14U2c8plIBPuN/0lR79luFzEjhmBOl0A5lfrTAHqEUaUZSMc4jeFxDyibpDB4lsxrF33te44b/BA"}}, "unsigned": {"age_ts": 1570041195239}}{ieQa$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "stream_ordering": 1002}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0"], "type": "m.room.guest_access", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041194377, "hashes": {"sha256": "uwyDEXiogF+r8mlT5VvvJM5oi3mHLoCoyK6d7CYlQy0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k4q8Qq7U6bXJoAYCGMueCrq/skQlLki4abXAF6tzO9S9NKI2yYEmJC+wrncEJCRAgxoIkXs5egHUac6wpOGVAQ"}}, "unsigned": {"age_ts": 1570041194377}} w gwvpeQay$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1009}{"auth_events": ["$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k"], "prev_events": ["$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k"], "type": "m.room.member", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-205", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-205:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041201078, "hashes": {"sha256": "QkoGaL5S+BvySN9ee2Axn3UBkFzbv4LK2R5h+E9IyD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ReRzs26BJzohY6QR07vh4s2+OP0/D+JaENG9/nDADjYOc4Tqhe19r+B3RVTb+qjhXeUQ5cSuJ//bQfeNIN+TDQ"}}, "unsigned": {"age_ts": 1570041201078}}ioeQa_$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1008}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-205:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041200100, "hashes": {"sha256": "Ewa6r7zaLTArICPT2TpRgtt4eS8Hk1Pe7G8zrkGSM2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "InAg3/RjYIGL3eY48qNtFNF+IY9LGAa/5bF9aR3Fgo3n1bhuFtLe3BOB8PXNvesdLOXEB3OfJ7HzBLcK6OyMDA"}}, "unsigned": {"age_ts": 1570041200100}}neQu$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800{"token_id": 225, "txn_id": "88", "stream_ordering": 1007}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8"], "prev_events": ["$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY"], "type": "m.room.message", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@anon-20191002_181700-204:localhost:8800", "content": {"msgtype": "m.text", "body": "post_join"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041198053, "hashes": {"sha256": "NFg9i37NsOxK6q9b9CWotpLK2i6qFaKsG5FJKoouaiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2xoJfBXq/r66M9ELZryXJrItKGwGd37AWah9WJsQbonKLmjq9Y/Te0YfG3W5BqasYkN/HB19zCg59dFu7MDLAw"}}, "unsigned": {"age_ts": 1570041198053}}meQ?Y$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800{"stream_ordering": 1006}{"auth_events": ["$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA", "$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk", "$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw"], "prev_events": ["$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8"], "type": "m.room.member", "room_id": "!zNBpypJDRMlBdOcLlW:localhost:8800", "sender": "@30:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "30", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@30:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041197084, "hashes": {"sha256": "ofZCIF0gfvewfVxgBgTaSuWt5UnC+HNz6SyCGWAcxRM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tNq5uBpDec7WkG6k2BUokSp4ig2FwAHcUz6mlZGi0/82m1aAXdvonHAceqID7HVqU1hULChJ8GByD3uiNuWxAw"}}, "unsigned": {"age_ts": 1570041197084}} [ k  i  JTUr+ e'Q ]$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgm.room.member!ifQxHmNAcSSGHVMjfi:localhost:8800mmx@anon-20191002_181700-207:localhost:8800 e'Q  ]$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60m.room.create!ifQxHmNAcSSGHVMjfi:localhost:8800mm@anon-20191002_181700-207:localhost:8800!e)Q ] $_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlIm.room.message!EABRjdYuYumMhLSwIa:localhost:8800 mm@anon-20191002_181700-206:localhost:8800 e'Q 1 $VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsm.room.member!EABRjdYuYumMhLSwIa:localhost:8800 mm@32:localhost:8800!e)Q ] $roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0m.room.message!EABRjdYuYumMhLSwIa:localhost:8800 mm{@anon-20191002_181700-206:localhost:8800,e?Q ]$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8m.room.history_visibility!EABRjdYuYumMhLSwIa:localhost:8800mm=@anon-20191002_181700-206:localhost:8800!e)Q ]$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwm.room.message!EABRjdYuYumMhLSwIa:localhost:8800m7m=@anon-20191002_181700-206:localhost:8800&e3Q ]$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28m.room.guest_access!EABRjdYuYumMhLSwIa:localhost:8800mm @anon-20191002_181700-206:localhost:8800,~e?Q ]$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAm.room.history_visibility!EABRjdYuYumMhLSwIa:localhost:8800mm@anon-20191002_181700-206:localhost:8800$}e/Q ]$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYm.room.join_rules!EABRjdYuYumMhLSwIa:localhost:8800mm:@anon-20191002_181700-206:localhost:8800&|e3Q ]$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQm.room.power_levels!EABRjdYuYumMhLSwIa:localhost:8800mBmƫ@anon-20191002_181700-206:localhost:8800 {e'Q ]$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMm.room.member!EABRjdYuYumMhLSwIa:localhost:8800mSm@anon-20191002_181700-206:localhost:8800z e'Q  ]$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcm.room.create!EABRjdYuYumMhLSwIa:localhost:8800mm@anon-20191002_181700-206:localhost:8800!ye)Q ] $hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIm.room.message!FIOuvzpMhoERunVYYA:localhost:8800 mDmI@anon-20191002_181700-205:localhost:8800 xe'Q 1 $NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEm.room.member!FIOuvzpMhoERunVYYA:localhost:8800 mm@31:localhost:8800!we)Q ]$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Qm.room.message!FIOuvzpMhoERunVYYA:localhost:8800mm@anon-20191002_181700-205:localhost:8800!ve)Q ]$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIom.room.message!FIOuvzpMhoERunVYYA:localhost:8800mm@anon-20191002_181700-205:localhost:8800&ue3Q ]$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUm.room.guest_access!FIOuvzpMhoERunVYYA:localhost:8800mm @anon-20191002_181700-205:localhost:8800,te?Q ]$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUm.room.history_visibility!FIOuvzpMhoERunVYYA:localhost:8800mmO@anon-20191002_181700-205:localhost:8800$se/Q ]$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4m.room.join_rules!FIOuvzpMhoERunVYYA:localhost:8800m^mu@anon-20191002_181700-205:localhost:8800&re3Q ]$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwm.room.power_levels!FIOuvzpMhoERunVYYA:localhost:8800mm@anon-20191002_181700-205:localhost:8800 qe'Q ]$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYm.room.member!FIOuvzpMhoERunVYYA:localhost:8800mm5@anon-20191002_181700-205:localhost:8800p e'Q  ]$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6km.room.create!FIOuvzpMhoERunVYYA:localhost:8800m}m<@anon-20191002_181700-205:localhost:8800!oe)Q ] $mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zom.room.message!zNBpypJDRMlBdOcLlW:localhost:8800 mumu@anon-20191002_181700-204:localhost:8800 7HF@@ B  B  B  D  D DFFFFHH?]!@anon-20191002_181700-305:localhost:8800PDQTBQSPGXm&0=[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRTmm?]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZAma?]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDTmE?]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTKm/?]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEXm?]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKSm<?]!@anon-20191002_181700-252:localhost:8800RURXOUWORGm0?]!@anon-20191002_181700-304:localhost:8800MQWNAFYDXKməB/?]!@anon-20191002_181700-303:localhost:8800FUOYNGGDMQmp,.?]!@anon-20191002_181700-302:localhost:8800PAWIWMHYHHm=o-?]!@anon-20191002_181700-301:localhost:8800SJPGITTBTXmo,?]!@anon-20191002_181700-300:localhost:8800ZZJIQPLATKm̔+?]!@anon-20191002_181700-299:localhost:8800BPDORAMNSEmȃ*?]!@anon-20191002_181700-298:localhost:8800GTROHDSCGVmE)?]!@anon-20191002_181700-297:localhost:8800DVSKNCGFXXm(?]!@anon-20191002_181700-296:localhost:8800SBLEQBXZQLm'?]!@anon-20191002_181700-295:localhost:8800CIYGWJHPPNmǷ3&?]!@anon-20191002_181700-294:localhost:8800RKGLRVXFMGmdžg%?]!@anon-20191002_181700-293:localhost:8800PVLMJRXINQm{$?]!@anon-20191002_181700-292:localhost:8800GGCVZACJDJmg#?]!@anon-20191002_181700-291:localhost:8800OPDSPHGDRKm^t"?]!@anon-20191002_181700-290:localhost:8800HIUKIRMYDGmD`!=[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZUmz?]!@anon-20191002_181700-289:localhost:8800WRUIAYGXANm 9 4/*|%w rmhc TbQe!eJPTUgihvSwaOhIkrC:localhost:8800$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4ETaQe!eJPTUgihvSwaOhIkrC:localhost:8800$2DJ9MnVKofe1c6evu8PTksxjjAd_E1h06A6etRaEyocT`Qe!eJPTUgihvSwaOhIkrC:localhost:8800$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQT_Qe!eJPTUgihvSwaOhIkrC:localhost:8800$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewT^Qe!eJPTUgihvSwaOhIkrC:localhost:8800$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoT]Qe!eJPTUgihvSwaOhIkrC:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66IT\Qe!eJPTUgihvSwaOhIkrC:localhost:8800$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIT[Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kTZQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgTYQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgTXQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_ITWQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6ATVQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkTUQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kTTQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8TSQe!YufaOfAlruTdjyUCwO:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6MTRQe!YufaOfAlruTdjyUCwO:localhost:8800$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaETQQe!YufaOfAlruTdjyUCwO:localhost:8800$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgTPQe!YufaOfAlruTdjyUCwO:localhost:8800$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkTOQe!YufaOfAlruTdjyUCwO:localhost:8800$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sTNQe!YufaOfAlruTdjyUCwO:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUTMQe!YufaOfAlruTdjyUCwO:localhost:8800$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxITLQe!ifQxHmNAcSSGHVMjfi:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzITKQe!ifQxHmNAcSSGHVMjfi:localhost:8800$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYTJQe!ifQxHmNAcSSGHVMjfi:localhost:8800$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkTIQe!ifQxHmNAcSSGHVMjfi:localhost:8800$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kTHQe!ifQxHmNAcSSGHVMjfi:localhost:8800$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgTGQe!ifQxHmNAcSSGHVMjfi:localhost:8800$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZkTFQe!ifQxHmNAcSSGHVMjfi:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgTEQe!ifQxHmNAcSSGHVMjfi:localhost:8800$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60TDQe!EABRjdYuYumMhLSwIa:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsTCQe!EABRjdYuYumMhLSwIa:localhost:8800$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8TBQe!EABRjdYuYumMhLSwIa:localhost:8800$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28TAQe!EABRjdYuYumMhLSwIa:localhost:8800$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAT@Qe!EABRjdYuYumMhLSwIa:localhost:8800$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYT?Qe!EABRjdYuYumMhLSwIa:localhost:8800$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQT>Qe!EABRjdYuYumMhLSwIa:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMT=Qe!EABRjdYuYumMhLSwIa:localhost:8800$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcT<Qe!FIOuvzpMhoERunVYYA:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkET;Qe!FIOuvzpMhoERunVYYA:localhost:8800$F2xtT1ByuijDFDK0pAwURiTVKXS3eRKRq_eWNNWXLmoT:Qe!FIOuvzpMhoERunVYYA:localhost:8800$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUT9Qe!FIOuvzpMhoERunVYYA:localhost:8800$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUT8Qe!FIOuvzpMhoERunVYYA:localhost:8800$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4T7Qe!FIOuvzpMhoERunVYYA:localhost:8800$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwT6Qe!FIOuvzpMhoERunVYYA:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY UQuH  e ^ 1  Y . yL,)Ll?hk 8 W $ p C } P_Yy2>: uH,Q!NcJYmIbgjsaKJOzBcs:localhost:8800yy,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800>>,Q!NboFFVLpJHTeuUKCjM:localhost:8800==+Q !NQgavrmiCPUVaVjssy:localhost:8800aa,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800::,Q!NboFFVLpJHTeuUKCjM:localhost:880099,Q!NboFFVLpJHTeuUKCjM:localhost:880088+Q !NboFFVLpJHTeuUKCjM:localhost:880077,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829+Q !NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800<<,Q!NboFFVLpJHTeuUKCjM:localhost:8800;;,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 +Q !NcJYmIbgjsaKJOzBcs:localhost:8800ww,Q!NcJYmIbgjsaKJOzBcs:localhost:8800zz,Q!NcJYmIbgjsaKJOzBcs:localhost:8800{{,Q!NcJYmIbgjsaKJOzBcs:localhost:8800||,Q!NPdjmIfsBVIIkvWBzD:localhost:8800jj,Q!NPdjmIfsBVIIkvWBzD:localhost:8800hh,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ff,Q!NPdjmIfsBVIIkvWBzD:localhost:8800dd,Q!NPdjmIfsBVIIkvWBzD:localhost:8800bb,Q!NanhNmCnVVpmZRJrTF:localhost:8800 +Q !NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800~~,Q!NcJYmIbgjsaKJOzBcs:localhost:8800}},Q!NQgavrmiCPUVaVjssy:localhost:8800dd,Q!NQgavrmiCPUVaVjssy:localhost:8800cc,Q!NQgavrmiCPUVaVjssy:localhost:8800bb,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ll)Q !NhWgOTYzEPRwAxRQvS:localhost:8800rr,Q!NeYaCeYNFATCqlrlGT:localhost:8800oo,Q!NeYaCeYNFATCqlrlGT:localhost:8800nn,Q!NeYaCeYNFATCqlrlGT:localhost:8800mm,Q!NeYaCeYNFATCqlrlGT:localhost:8800ll,Q!NeYaCeYNFATCqlrlGT:localhost:8800kk+Q !NeYaCeYNFATCqlrlGT:localhost:8800jj,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800+Q !NfaPEGKjnUDUTavzol:localhost:8800*Q!NZHpBquHDfJAjiawGk:localhost:8800II*Q!NZHpBquHDfJAjiawGk:localhost:8800HH*Q!NZHpBquHDfJAjiawGk:localhost:8800GG*Q!NZHpBquHDfJAjiawGk:localhost:8800FF*Q!NZHpBquHDfJAjiawGk:localhost:8800EE)Q !NZHpBquHDfJAjiawGk:localhost:8800DD,Q!NQgavrmiCPUVaVjssy:localhost:8800 jj,Q!NQgavrmiCPUVaVjssy:localhost:8800 ii,Q!NQgavrmiCPUVaVjssy:localhost:8800hh,Q!NQgavrmiCPUVaVjssy:localhost:8800gg,Q!NQgavrmiCPUVaVjssy:localhost:8800ff,Q!NQgavrmiCPUVaVjssy:localhost:8800ee+Q !NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800xx,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 UQuH  e ^ 1  Y . yL,)Ll?hk 8 W $ p C } P_Yy2>: uH,Q!NcJYmIbgjsaKJOzBcs:localhost:8800yy,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800>>,Q!NboFFVLpJHTeuUKCjM:localhost:8800==+Q !NQgavrmiCPUVaVjssy:localhost:8800aa,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800::,Q!NboFFVLpJHTeuUKCjM:localhost:880099,Q!NboFFVLpJHTeuUKCjM:localhost:880088+Q !NboFFVLpJHTeuUKCjM:localhost:880077,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829+Q !NajQnqYmGyTjxhFYar:localhost:8829,Q!NajQnqYmGyTjxhFYar:localhost:8829,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NboFFVLpJHTeuUKCjM:localhost:8800<<,Q!NboFFVLpJHTeuUKCjM:localhost:8800;;,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 +Q !NcJYmIbgjsaKJOzBcs:localhost:8800ww,Q!NcJYmIbgjsaKJOzBcs:localhost:8800zz,Q!NcJYmIbgjsaKJOzBcs:localhost:8800{{,Q!NcJYmIbgjsaKJOzBcs:localhost:8800||,Q!NPdjmIfsBVIIkvWBzD:localhost:8800jj,Q!NPdjmIfsBVIIkvWBzD:localhost:8800hh,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ff,Q!NPdjmIfsBVIIkvWBzD:localhost:8800dd,Q!NPdjmIfsBVIIkvWBzD:localhost:8800bb,Q!NanhNmCnVVpmZRJrTF:localhost:8800 +Q !NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800~~,Q!NcJYmIbgjsaKJOzBcs:localhost:8800}},Q!NQgavrmiCPUVaVjssy:localhost:8800dd,Q!NQgavrmiCPUVaVjssy:localhost:8800cc,Q!NQgavrmiCPUVaVjssy:localhost:8800bb,Q!NPdjmIfsBVIIkvWBzD:localhost:8800ll)Q !NhWgOTYzEPRwAxRQvS:localhost:8800rr,Q!NeYaCeYNFATCqlrlGT:localhost:8800oo,Q!NeYaCeYNFATCqlrlGT:localhost:8800nn,Q!NeYaCeYNFATCqlrlGT:localhost:8800mm,Q!NeYaCeYNFATCqlrlGT:localhost:8800ll,Q!NeYaCeYNFATCqlrlGT:localhost:8800kk+Q !NeYaCeYNFATCqlrlGT:localhost:8800jj,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800,Q!NfaPEGKjnUDUTavzol:localhost:8800+Q !NfaPEGKjnUDUTavzol:localhost:8800*Q!NZHpBquHDfJAjiawGk:localhost:8800II*Q!NZHpBquHDfJAjiawGk:localhost:8800HH*Q!NZHpBquHDfJAjiawGk:localhost:8800GG*Q!NZHpBquHDfJAjiawGk:localhost:8800FF*Q!NZHpBquHDfJAjiawGk:localhost:8800EE)Q !NZHpBquHDfJAjiawGk:localhost:8800DD,Q!NQgavrmiCPUVaVjssy:localhost:8800 jj,Q!NQgavrmiCPUVaVjssy:localhost:8800 ii,Q!NQgavrmiCPUVaVjssy:localhost:8800hh,Q!NQgavrmiCPUVaVjssy:localhost:8800gg,Q!NQgavrmiCPUVaVjssy:localhost:8800ff,Q!NQgavrmiCPUVaVjssy:localhost:8800ee+Q !NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NcJYmIbgjsaKJOzBcs:localhost:8800xx,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NanhNmCnVVpmZRJrTF:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800 ,Q!NgkQVVUNzoyCVPtckM:localhost:8800  {teQa$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1013}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU"], "type": "m.room.guest_access", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041203892, "hashes": {"sha256": "bmROe22sel4nUWgBHBJcwtaBCVGSEuBP61t1NJzz6LQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3EQRyED/dkQlAunK6SdJsrxLDRwmeHODIqgIY0IhZWhL2ayML1I8faPua6u230+UfeSGSHXVPGmdRTlqagpMAw"}}, "unsigned": {"age_ts": 1570041203892}}seQa$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1012}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4"], "type": "m.room.history_visibility", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041202928, "hashes": {"sha256": "rXJ9TA4mbbPGk5/9slrCEkbdtlkOVIGzK5oCppB0mkM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lalHoLU3Y9Zp4Mu/WqH3SbelEMrehU5J1PXKqEwxM2A4spQXM5VpMqkaPpy0J9GwZ2TpEVMGrbctOQmkDdpeBQ"}}, "unsigned": {"age_ts": 1570041202928}}treQau$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1011}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw"], "type": "m.room.join_rules", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041202270, "hashes": {"sha256": "yG1DNsCpoMpSCH0HzjdE6B9f4hCNMwU80MvHB0q8dxo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Yn2VkTdl8TjETG7ZKZobiLx9AUpl3xyqdPIDYP6pTnXE8WXdnxd06Vee2LIKrui+GqvRAFZNFs25RIABV9TDw"}}, "unsigned": {"age_ts": 1570041202270}}kqeQac$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "stream_ordering": 1010}{"auth_events": ["$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "type": "m.room.power_levels", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"users": {"@anon-20191002_181700-205:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041201603, "hashes": {"sha256": "OFpzHGRxCDd4Bupc3zONqe/CBzuZREtDBzqcHVvG9nk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qSPrj6rqWIDazoOSICJzzitSraqirKfU3izjoVtaXRpeZUy7Mol8Cvoi6rQeffzpEU19rY7H7hnPfheN1kAEAQ"}}, "unsigned": {"age_ts": 1570041201603}} O 8c:T)}R' { PqB % y N #k@e<g w L ! u J  si>o H DmF*Q!XnUZiYJDWVNGfsBnGz:localhost:8800 h *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 i *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 j *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 k *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 m *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 l *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 p *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 o *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 n *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!YpcmaMNMzjvtgYtrli:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!ZKPJvrCZHMHPEksYDc:localhost:8800 *Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & =*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % <*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ ;*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # :*Q!YmRuIWixFpaqEeDQLZ:localhost:8800 " 9*Q!XiwGxQKwjgutEClKUy:localhost:8829%<*Q!XiwGxQKwjgutEClKUy:localhost:8829$;m+*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!YaLuQzmJKSMTSFEqjO:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!ZNIjCvcWhgcwskanjT:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YufaOfAlruTdjyUCwO:localhost:8800*Q!YtVXQjSPgVtbxrzUOA:localhost:8800i*Q!YtVXQjSPgVtbxrzUOA:localhost:8800h*Q!YtVXQjSPgVtbxrzUOA:localhost:8800g*Q!YtVXQjSPgVtbxrzUOA:localhost:8800f*Q!YtVXQjSPgVtbxrzUOA:localhost:8800e*Q!YtVXQjSPgVtbxrzUOA:localhost:8800d*Q!YgaGPEraeLCqHQirin:localhost:8800?E*Q!YgaGPEraeLCqHQirin:localhost:8800<B*Q!YgaGPEraeLCqHQirin:localhost:8800;A*Q!YgaGPEraeLCqHQirin:localhost:8800:@*Q!YgaGPEraeLCqHQirin:localhost:88009?*Q!YgaGPEraeLCqHQirin:localhost:88008>*Q!YgaGPEraeLCqHQirin:localhost:88007=*Q!YQATbgbLImCDamiDHC:localhost:8800 *Q!YQATbgbLImCDamiDHC:localhost:8800 *Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YQATbgbLImCDamiDHC:localhost:8800*Q!YGUjVdVdpcQoGkRnWB:localhost:8800 ] *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 \ *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 [ *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Z *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Y *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 X *Q!YGUjVdVdpcQoGkRnWB:localhost:8800 W *Q!XnUZiYJDWVNGfsBnGz:localhost:8800 q a} { y w u sqomkigeca~eeQ$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800~eeQ$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~ eeQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800~ eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800~ eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~ eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~ eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800 KPx"' U k  v : P[05:`OwleQ'1$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800joingTeQ3 $n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800m.room.guest_accessmSeQ? $nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800m.room.history_visibilityeReQ/ $5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800m.room.join_rulesgQeQ3 $U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levels PeQ']$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@anon-20191002_181700-205:localhost:8800joinaOeQ' $YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800m.room.creategkeQ3 $AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_accessmjeQ? $rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibilityeieQ/ $xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rulesgheQ3 $JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels geQ']$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800joinafeQ' $yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800m.room.createweeQ'1$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800joinmdeQ? $YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilitygceQ3 $Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_accesseaeQ/ $N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rulesg`eQ3 $pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels _eQ']$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800joina^eQ' $_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.createw]eQ'1$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800joinm\eQ? $dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibilityg[eQ3 $1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_accesseYeQ/ $aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rulesgXeQ3 $gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels WeQ']$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800joinaVeQ' $kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800m.room.createwUeQ'1$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800m.room.member@31:localhost:8800join TT)}R' { P % y N # w L ! u J  s H qFqFoDmBk@i>qH*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NJdkYMskQwIpIWlWkn:localhost:8800*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829(Q!NZHpBquHDfJAjiawGk:localhost:8800II(Q!NZHpBquHDfJAjiawGk:localhost:8800HH(Q!NZHpBquHDfJAjiawGk:localhost:8800GG(Q!NZHpBquHDfJAjiawGk:localhost:8800FF(Q!NZHpBquHDfJAjiawGk:localhost:8800EE(Q!NZHpBquHDfJAjiawGk:localhost:8800DD*Q!NQgavrmiCPUVaVjssy:localhost:8800jj*Q!NQgavrmiCPUVaVjssy:localhost:8800ii*Q!NQgavrmiCPUVaVjssy:localhost:8800hh*Q!NQgavrmiCPUVaVjssy:localhost:8800gg*Q!NQgavrmiCPUVaVjssy:localhost:8800ff*Q!NQgavrmiCPUVaVjssy:localhost:8800ee*Q!NQgavrmiCPUVaVjssy:localhost:8800dd*Q!NQgavrmiCPUVaVjssy:localhost:8800cc*Q!NQgavrmiCPUVaVjssy:localhost:8800bb*Q!NQgavrmiCPUVaVjssy:localhost:8800aa*Q!NPdjmIfsBVIIkvWBzD:localhost:8800ll*Q!NPdjmIfsBVIIkvWBzD:localhost:8800jj*Q!NPdjmIfsBVIIkvWBzD:localhost:8800hh*Q!NPdjmIfsBVIIkvWBzD:localhost:8800ff*Q!NPdjmIfsBVIIkvWBzD:localhost:8800dd*Q!NPdjmIfsBVIIkvWBzD:localhost:8800bb*Q!NPdjmIfsBVIIkvWBzD:localhost:8800aa*Q!NPdjmIfsBVIIkvWBzD:localhost:8800__*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NNiyzThHMivrxhojfp:localhost:8800*Q!NFWKQvZkIwvecnREOC:localhost:8800SS*Q!NFWKQvZkIwvecnREOC:localhost:8800RR*Q!NFWKQvZkIwvecnREOC:localhost:8800QQ*Q!NFWKQvZkIwvecnREOC:localhost:8800PP*Q!NFWKQvZkIwvecnREOC:localhost:8800OO*Q!NFWKQvZkIwvecnREOC:localhost:8800NN*Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MqstbCLZIQFiYNHrqR:localhost:8800 *Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MlzmtUYSZOiByAZdKx:localhost:8800*Q!MXhwoqNXvexeDDSOZT:localhost:8800 < <*Q!MXhwoqNXvexeDDSOZT:localhost:8800 : :*Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 6*Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 5*Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 4*Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 3*Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 2*Q!MXhwoqNXvexeDDSOZT:localhost:8800 1 1*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MWCLSWWGdWcSivNVLI:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800*Q!MBWnwKRwFznvRpAzxr:localhost:8800  {\xeQu$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "txn_id": "91", "stream_ordering": 1017}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE"], "type": "m.room.message", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041210948, "hashes": {"sha256": "jGWOLhZZq6KyC0EhlN1P4FN7NnYK1cF3FWz02gYLSkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6gOZOmTYP+i0qRGYFyQcZL/nv+81NlUgWF83IMDeVyp+Ti7BrkTXztLEKGGrR1wIZ9CiCoxdyZxkWU2orqfFAA"}}, "unsigned": {"age_ts": 1570041210948}}weQ?W$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE!FIOuvzpMhoERunVYYA:localhost:8800{"stream_ordering": 1016}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4"], "prev_events": ["$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q"], "type": "m.room.member", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@31:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "31", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@31:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041207699, "hashes": {"sha256": "KKsfEXHXUjirGon4Oe0/WtQKfVYs8QBjg8cB0u6ZMlo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vs/XYwfseepS3MnHxqfCyFzvo264hY+HNRUnBYcpY20cRidL8pY+GM7hecMXgHC7L5Z7DVkDoDxRYlZfiKxHDg"}}, "unsigned": {"age_ts": 1570041207699}}veQq$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "txn_id": "90", "stream_ordering": 1015}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo"], "type": "m.room.message", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041206753, "hashes": {"sha256": "mPWuQurmpTUKJWQrglQ6rtaeTCWRfAPcYomtMRV5MZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pmJcEiPb6FtfjqGKk4rLuDgSqnWxhw6+ARxVM9CqT1JwQgv53XhloJbzlwWXtC0tILi3CSxwO1MvahAcUxICCQ"}}, "unsigned": {"age_ts": 1570041206753}}ueQm$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo!FIOuvzpMhoERunVYYA:localhost:8800{"token_id": 226, "txn_id": "89", "stream_ordering": 1014}{"auth_events": ["$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw", "$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k", "$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY"], "prev_events": ["$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU"], "type": "m.room.message", "room_id": "!FIOuvzpMhoERunVYYA:localhost:8800", "sender": "@anon-20191002_181700-205:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041205225, "hashes": {"sha256": "m6LKXzqgzg0pDAT1zt/Mgvt3wKpj0mgI6F8avT1dURw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ZOUE6QRMlfIrFLySys8EnjhRGbBGSf53z/M/xS0sLT7fr7Bqp+cjLZy3QAmkQTUHtxzyUcNlNHKPA60tylICg"}}, "unsigned": {"age_ts": 1570041205225}} %u+T  @ f  =`N{;e"Lug eQ%$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800content.bodysharedj eQ%$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800content.bodypost_joini eQ%$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:8800content.bodypre_joing eQ%$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:8800content.bodysharedi eQ%$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800content.bodypre_joingeQ%$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800content.bodysharedjeQ%$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800content.bodypost_joinieQ%$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800content.bodypre_joingeQ%$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800content.bodysharedgeQ%$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800content.bodypublicheQ%$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800content.bodyprivateheQ%$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo!DoiZErAdypBUMZKaeJ:localhost:8800content.bodyprivateheQ%$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800content.bodyprivateeeQ%$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800content.bodymiceeeQ%$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800content.bodymicee~eQ%$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800content.bodymicee}eQ%$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800content.bodymicem|eQ%%$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800content.bodyAfter invitel{eQ%#$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800content.bodyBefore joinmzeQ%%$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800content.bodyAfter invitelyeQ%#$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800content.bodyBefore joinmxeQ%%$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800content.bodyAfter invitelweQ%#$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800content.bodyBefore joinmveQ%%$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:8800content.bodyAfter invitelueQ%#$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:8800content.bodyBefore joinmteQ%%$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800content.bodyAfter invitelseQ%#$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800content.bodyBefore joinjreQ%$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800content.bodypost_joiniqeQ%$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800content.bodypre_joingpeQ%$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800content.bodysharedjoeQ%$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800content.bodypost_joinineQ%$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800content.bodypre_joingmeQ%$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800content.bodysharedjleQ%$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800content.bodypost_joinikeQ%$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800content.bodypre_joingjeQ%$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800content.bodysharedjieQ%$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800content.bodypost_join   *t|eQau$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1021}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ"], "type": "m.room.join_rules", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041219353, "hashes": {"sha256": "eADAHpWXU0Trb4bGFuY7JUFB3FYRBbmbkHmaRfcSJJQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l8vSIJv/KJScLcFJD+lmpcR773wIvAXIzRdb+rLpHXxITge68zGvhkDF1Zxh0KW2LdMMAQnocJQ8fLjGaPKKCw"}}, "unsigned": {"age_ts": 1570041219353}}k{eQac$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1020}{"auth_events": ["$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "type": "m.room.power_levels", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"users": {"@anon-20191002_181700-206:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041218114, "hashes": {"sha256": "VyvJt2okM4ZT9OeCxmbQ0a3B+NfV6S5RMYEd0R3bELA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ROnx8MdL4VnmczT2/W2xBbNy7MW9uBTPbLP9UOExF5tZ+kxo2oajY55mvftTmnU6r4omE7ADrIDwxva/ZSTJCw"}}, "unsigned": {"age_ts": 1570041218114}}vzeQay$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1019}{"auth_events": ["$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc"], "prev_events": ["$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc"], "type": "m.room.member", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-206", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-206:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041216339, "hashes": {"sha256": "LngqVcK/sLmz6jYWQrE9njDLFB1WxfuslJ6mWFVHlaM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Plt/0A4/Ne0ZxuAlz0oSooI+9lTZXEUMOYIP49wQKHjmQHhTAh8nRdnVkRXam14MNg7yKmv7P6kxCGQpgcIRBA"}}, "unsigned": {"age_ts": 1570041216339}}iyeQa_$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1018}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-206:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041214484, "hashes": {"sha256": "1b2fLE7TW7wiiWOFfagzv6nx8DPS6ubF5Eqh3ePO4lM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zLPNLuu/VdVx80ou+5tq2Qwy0zpduZYJfeOaP+Grq8yiu6E5I5fE8y5zUIix3JewLYpuua25tTobn2mdfLQBBA"}}, "unsigned": {"age_ts": 1570041214484}} ,NC 8 - { " p  e ZOD9.|#qf V$eL$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Isha256{J X eݵ^ t=nCzmeV#eL$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIsha256.Spq]J|8ɱIXS0WBV"eL$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0sha256,baTLY \uA@"\V!eL$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ksha256DMjsH.T>i7u @WV eL$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8sha256|w8\-u`>0I1eVeL$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgsha256%0yxCtZƓ kpQ"4,>VeL$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngsha256dlb1&TN1 O<'VVeL$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Isha256$zCفL1% /5ZHCVeL$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Asha256+ mWz9h%˖B8VeL$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMksha256[lcZJfr]O|5+2VeL$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0ksha256?6 BξV_T.!ؙ la^IVeL$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8sha256lW%j&{*6| 0g23,VeL$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcsha256:o۷ OMtiS}VeL$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Msha256*1/\6<[)Tm[VeL$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcsha256OTi))b@w;WVeL$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8sha256ATˋ{4?$o;v"Ǐ2îa/_VeL$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEsha256. skKsXW'9{VeL$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgsha256VLXYpPn|P nVeL$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSksha256"r^7!\crRZ{!e)VeL$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8ssha256&FW!qDMʙ9z ]h+LJVeL$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUsha2565BC!ڠ'ۦܻ r9uVeL$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIsha2566O֘QTU,ȗaI ^fY ;VeL$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Qsha256#"LջGNVVl8vV eL$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIsha256@(nwAv4|O0XbL =)?2V eL$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BEsha256lKB \'Svn:fm)WV eL$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYsha256b~0ljK L%OZh\qPV eL$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8sha256DiQ[^5xE Tt.uV eL$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbksha256Caݱ@Q yU «ã6(݃SiRQVeL$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-ksha256d8/1yUy~~6t KzVeL$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgsha2567jDܿ8w2mTmKMŁLti匨VeL$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZksha256ST[t CE`éVVeL$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgsha256wⱟκJc1VeL$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60sha256  91CL^K7)VeL$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlIsha256]|/&nԧ"H͍ ȎbRVeL$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmssha256UtYâG`&.k0WPRK_kVeL$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0sha256P9@óUw4S__VeL$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8sha256vvOJ10b|:̈R|E r6[VeL$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwsha256g f^ mz7i+E^`B|V~eL$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28sha256e\Z5 -uzrh_9(aLx3oV}eL$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAsha256ښE80_l4= :E[.]V|eL$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYsha256h׌ yl7(w<˕`V{eL$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQsha256dY).:ZzxLttMUVzeL$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMsha256N W@t{=]t^^;g}qBdݓVyeL$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcsha2562[VtlfQ}^g !lp%  8 ; ] Pps(HKm`ilj1Q3 e&!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo 0Q']e%!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Id/Q' e$!eJPTUgihvSwaOhIkrC:localhost:8800m.room.create$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI .Q']e"!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kj-Q3 e !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_access$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg,Q? ee!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Ip+Q? e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Ih*Q/ e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rules$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Aj)Q3 e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk (Q']e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kd'Q' e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.create$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8v&Q'1e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Mj%Q3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_access$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEp$Q? e!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibility$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgh#Q/ e!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rules$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkj"Q3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.power_levels$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s !Q']e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@anon-20191002_181700-208:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUd Q' e!YufaOfAlruTdjyUCwO:localhost:8800m.room.create$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIvQ'1e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIQ? ee !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-kjQ3 e !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_access$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkpQ? e !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibility$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-khQ/ e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rules$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgjQ3 e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk Q']e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__XpqxgdQ' e!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.create$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60vQ'1e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsQ? ee!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAjQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_access$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28pQ? e!EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaAhQ/ e!EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rules$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYjQ3 e!EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levels$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ Q']e!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM  wsHeQa$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1025}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw"], "type": "m.room.history_visibility", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041225381, "hashes": {"sha256": "jcZr3j7PIklrD3tQpvFj66RLxFIOho6lX2k7ym14mmA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SUt73Hr3JTlEtsfyIgjOyS2nj2uApeGp4P/BSNG3arqX43ImOPz8FPH8kX+lzsgmtiPRw7H2PNaioLmEzeABCA"}}, "unsigned": {"age_ts": 1570041225381, "replaces_state": "$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA"}}eQm$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "txn_id": "92", "stream_ordering": 1024}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28"], "type": "m.room.message", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041224247, "hashes": {"sha256": "ZuAvqOxkoMuxwB1rxAKkFUZO2e6ntKxGDoFtn5PgaGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbgpdfiTBCLCmNQY0Hg5EBYBRZQunHl2aQlenc7sHVBWqkFNFg4CCSOC07m3jcOrb3MdNv26Zy0wT3bBMoLeDw"}}, "unsigned": {"age_ts": 1570041224247}}{~eQa$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1023}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA"], "type": "m.room.guest_access", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041222680, "hashes": {"sha256": "gjSkukE+vKkdYZx5h2M8JtvHtz5Y1Fj3+DlYdtf1ck8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EswM7W5JWxxO3DjT45f5t4kGXuFD16XbNUO5q77y0f5OnBOpU5RcOfc/FFfkdBpW1rPcakyZnbMwWsALvR2YBg"}}, "unsigned": {"age_ts": 1570041222680}}}eQa$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "stream_ordering": 1022}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY"], "type": "m.room.history_visibility", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041220862, "hashes": {"sha256": "9Dmlu0o0OKVfw4CAUdYL2fBDyuGZOL6JY3c14XLsfAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9+EP4VPuljF8PkoEl2CID7UwzK8AC/vNhNE0wktj4ddGk/Icxe2vsFIypw+r20+FGDqTb3wHnKikBB0O/5CkAw"}}, "unsigned": {"age_ts": 1570041220862}} ,J^0zLvHd6 R $ l >  Z t F  b 4 |N j<V(pBf8 R$-]@anon-20191002_181700-300:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800E-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-236:localhost:8800+[@anon-20191002_181700-29:localhost:8800Q-]@anon-20191002_181700-299:localhost:8800-]@anon-20191002_181700-299:localhost:8800-]@anon-20191002_181700-298:localhost:8800-]@anon-20191002_181700-298:localhost:8800-]@anon-20191002_181700-297:localhost:8800-]@anon-20191002_181700-297:localhost:8800-]@anon-20191002_181700-296:localhost:8800-]@anon-20191002_181700-296:localhost:8800-]@anon-20191002_181700-295:localhost:8800-]@anon-20191002_181700-295:localhost:8800-]@anon-20191002_181700-294:localhost:8800-]@anon-20191002_181700-294:localhost:8800-]@anon-20191002_181700-293:localhost:8800-]@anon-20191002_181700-292:localhost:8800-]@anon-20191002_181700-291:localhost:8800-]@anon-20191002_181700-290:localhost:8800~+[@anon-20191002_181700-28:localhost:8800P-]@anon-20191002_181700-289:localhost:8800|-]@anon-20191002_181700-288:localhost:8800v-]@anon-20191002_181700-287:localhost:8800t-]@anon-20191002_181700-286:localhost:8800p-]@anon-20191002_181700-284:localhost:8800k-]@anon-20191002_181700-283:localhost:8800f-]@anon-20191002_181700-282:localhost:8800d-]@anon-20191002_181700-281:localhost:8800c-]@anon-20191002_181700-280:localhost:8800_+[@anon-20191002_181700-27:localhost:8800O-]@anon-20191002_181700-279:localhost:8800Z-]@anon-20191002_181700-277:localhost:8800U-]@anon-20191002_181700-276:localhost:8800P-]@anon-20191002_181700-275:localhost:8800L-]@anon-20191002_181700-274:localhost:8800N-]@anon-20191002_181700-273:localhost:8800M-]@anon-20191002_181700-272:localhost:8800F-]@anon-20191002_181700-271:localhost:88009-]@anon-20191002_181700-270:localhost:8800D.-]@anon-20191002_181700-270:localhost:88007+[@anon-20191002_181700-26:localhost:8800N-]@anon-20191002_181700-269:localhost:88002-]@anon-20191002_181700-268:localhost:88001-]@anon-20191002_181700-267:localhost:88003-]@anon-20191002_181700-266:localhost:8800+-]@anon-20191002_181700-265:localhost:8800%-]@anon-20191002_181700-264:localhost:8800#-]@anon-20191002_181700-263:localhost:8800-]@anon-20191002_181700-262:localhost:8800-]@anon-20191002_181700-261:localhost:8800-]@anon-20191002_181700-260:localhost:8800+[@anon-20191002_181700-25:localhost:8800M-]@anon-20191002_181700-259:localhost:8800-]@anon-20191002_181700-258:localhost:8800-]@anon-20191002_181700-257:localhost:8800 -]@anon-20191002_181700-254:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800+[@anon-20191002_181700-24:localhost:8800L-]@anon-20191002_181700-249:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800 Nj8p> ( v D  } K  3 ` R X & . _ -ek9q? xFMS"Z1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgs1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE m1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi01e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgw1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4h1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU%1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo31e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwT0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 91e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM>1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0B1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQt1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQQ1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY 0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0i1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo I1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgM1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8j0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcM1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk :1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQR1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68D1e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUP1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 )1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4W1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A41e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcr0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y%1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEz1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw51e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8m1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sV1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI 31e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA]0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw21e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM,1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygv1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF031e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM=1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE741e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ#1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU#1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs{1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQn1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgB1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY '1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew z1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os 1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkH ~z v r n j fb^ZVRNJF'eeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800&eeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800%eeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800$eeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800#eeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800"eeQ$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800!eeQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800 eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800eeQ$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800eeQ$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800eeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800eeQ$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800eeQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800 eeQ$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800 he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     ~|{zyxwvusrqponlkjihgfdcba`_^[[ZYXWVTSRQPONLKJIHFDCCBA@?=<;:987543210.-,+*('&%$"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK~}| { y x w vutsqponlkjihfedcb`_^]\ZYXWVUTRQPONMIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  he@ 0 (    x p h ` X P H @ 8 0 (    `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph     }|{zyxwvtsrqpomlkjihgedcba`_]\[ZYXWUTSRQPOMLKJIGFEDCBA@>=<;:98654321/.-,+)('&%#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK~} | z y x wvutrqpomlkjigfedca`_^][ZYXWVUSRQPONIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  j yWjieQa_$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1029}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-207:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041233669, "hashes": {"sha256": "bcJjTaICmjnz8e7sOhFE3y6LEvs5WXQEaS4oqGFjy1I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TCY/c+e/nMcnTmfbpcsrUcTEMbynbMnpOEaw7SIGXgaJGcznOb2B8Atk8BYhF117GGOf7rp1avkKaInT/Xl0Cw"}}, "unsigned": {"age_ts": 1570041233669}}eQu$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "txn_id": "94", "stream_ordering": 1028}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms"], "type": "m.room.message", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"msgtype": "m.text", "body": "post_join"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041229332, "hashes": {"sha256": "/0GO832/vG6GGaOL+AC/QkZo/j/cXXL0MZYb63XQ0zA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sVB+0YFzm29FEBC+sCTT6cYOl8JYnxKKOBvQ0bPg6Obq2KvYY+oHSnwdNgAOgBqsjquB8JfZu7aavCSQ4vOhDw"}}, "unsigned": {"age_ts": 1570041229332}}eQ?Y$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800{"stream_ordering": 1027}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY"], "prev_events": ["$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0"], "type": "m.room.member", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@32:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "32", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@32:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041227712, "hashes": {"sha256": "rIJ+qEOC7XcOSta2bE1QXLppMtacgHxanOTD/ODyM5E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UoHgHKnG3gxmSq6UbBrU2Hq8gWxe90vHEBvvlYodawlQx1w6+TEM8urMEJe7TuOWsl+zrG0A7kF3YVrVxu7yDw"}}, "unsigned": {"age_ts": 1570041227712}}eQq$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800{"token_id": 227, "txn_id": "93", "stream_ordering": 1026}{"auth_events": ["$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ", "$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc", "$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM"], "prev_events": ["$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8"], "type": "m.room.message", "room_id": "!EABRjdYuYumMhLSwIa:localhost:8800", "sender": "@anon-20191002_181700-206:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041226714, "hashes": {"sha256": "CC69l4MvlaUK/T60s/MUbPoy/AVaHlz7mTGIf/DnW7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oh3ud+jG9UfoOR4MRyKX4XdX3WuRXS3vG89MyFRsFL0g5QtEDSD9i1wrBsUiUx9M6t2w1sbDbGyB4W5qQktLAw"}}, "unsigned": {"age_ts": 1570041226714}} M.k9q? ` y G   M   T " [ ) a 046hn< vD|JfR!Z(1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cg1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8b1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8]1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8K1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMI1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg@1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF471e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i801e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE,1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j81e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ0e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAO0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM80e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o/0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds71e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY0e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4.1e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe681e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn41e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk01e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk701e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-601e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYd1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUD1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc21e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI0e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Disx1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwl1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mku1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o.1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Us0e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc>0e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsQ1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR41e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY IxP((`8pxh@P H  H (h@XX0 p0` 8   `8 P(h@`8xP('Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800 %'Q!UTAORDrNxIbSlGByAp:localhost:8800 #'Q!UTAORDrNxIbSlGByAp:localhost:8800 !'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800 +'Q!UTAORDrNxIbSlGByAp:localhost:8800 *'Q!UTAORDrNxIbSlGByAp:localhost:8800 )'Q!UTAORDrNxIbSlGByAp:localhost:8800 ('Q!UTAORDrNxIbSlGByAp:localhost:8800 ''Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800{'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 -'Q!UTAORDrNxIbSlGByAp:localhost:8800 , ('Q!UMFUOnYRvwKwSPkYHB:localhost:8800z'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 /'Q!UTAORDrNxIbSlGByAp:localhost:8800 .'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800~'Q!UMFUOnYRvwKwSPkYHB:localhost:8800}'Q!UMFUOnYRvwKwSPkYHB:localhost:8800|'Q!UTAORDrNxIbSlGByAp:localhost:8800 2'Q!UTAORDrNxIbSlGByAp:localhost:8800 1'Q!UTAORDrNxIbSlGByAp:localhost:8800 0'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!UluPYLGXtInKDTjRzp:localhost:8800 'Q!URpLZLuBfVcfHVTBGS:localhost:8800 PP'Q!URpLZLuBfVcfHVTBGS:localhost:8800H'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800 Dw<P d ) x =  Q  e * y > z?Sg,{@Th-|AU8H]!U@anon-20191002_181700-270:localhost:8800SRSYWQDCQU8G]!T@anon-20191002_181700-271:localhost:8800EYEJMZUSJY8E]!R@anon-20191002_181700-269:localhost:8800EDTNFCDRMR8D]!Q@anon-20191002_181700-268:localhost:8800BTQHLEFFPU8F]!S@anon-20191002_181700-267:localhost:8800LUADSGSJTG8B]!O@anon-20191002_181700-266:localhost:8800MREALOZRTW8A]!N@anon-20191002_181700-265:localhost:8800COAARRCECC8@]!M@anon-20191002_181700-264:localhost:8800DYYKUWOSTJ8?]!L@anon-20191002_181700-263:localhost:8800KUHOBSXQVM8>]!K@anon-20191002_181700-262:localhost:8800OLJVXJZUXG8=]!J@anon-20191002_181700-261:localhost:8800HLJRYNNHWE8<]!I@anon-20191002_181700-260:localhost:8800PEYMVGORHU8;]!H@anon-20191002_181700-259:localhost:8800CBTLKTDDZA8:]!G@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT89]!F@anon-20191002_181700-257:localhost:8800AZPFFCLWTK88]!E@anon-20191002_181700-255:localhost:8800QPFIMVOQLF87]!D@anon-20191002_181700-254:localhost:8800XJEYVFLUEX86]!C@anon-20191002_181700-253:localhost:8800VCNUHOFNKS85]!B@anon-20191002_181700-252:localhost:8800RURXOUWORG84]!A@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ83]!@@anon-20191002_181700-250:localhost:8800HLUDALFTVR82]!?@anon-20191002_181700-249:localhost:8800TCARNJMFBO81]!>@anon-20191002_181700-248:localhost:8800SFZRVIZXHM80]!=@anon-20191002_181700-246:localhost:8800VWLZTFZJKU8/]!<@anon-20191002_181700-247:localhost:8800TRPUOTMOOT8.]!;@anon-20191002_181700-245:localhost:8800BMGHUZBIKD8-]!:@anon-20191002_181700-244:localhost:8800VWUTZPSOAH8,]!9@anon-20191002_181700-243:localhost:8800FMNGREYZML8+]!8@anon-20191002_181700-242:localhost:8800AYBUQGWFIB8*]!7@anon-20191002_181700-241:localhost:8800AXXWURZRJC8)]!6@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ8(]!5@anon-20191002_181700-239:localhost:8800WFWDJJSKCM8']!4@anon-20191002_181700-238:localhost:8800CJBYPQAOBX8&]!3@anon-20191002_181700-237:localhost:8800GTKLCHUYBN$%1%2@36:localhost:8800guest_device8$]!1@anon-20191002_181700-236:localhost:8800ALVQESJRHC$#1%0@35:localhost:8800guest_device8"]!/@anon-20191002_181700-235:localhost:8800OYRPJJEYFG8!]!.@anon-20191002_181700-234:localhost:8800KLAICDFHKH8 ]!-@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY8]!,@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!+@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!*@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB8]!)@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!(@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!'@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!&@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!%@anon-20191002_181700-225:localhost:8800ZNKOABDJUU8]!$@anon-20191002_181700-224:localhost:8800VJTZAJOEFY8]!#@anon-20191002_181700-223:localhost:8800IOQWEQAUDW8]!"@anon-20191002_181700-222:localhost:8800VOKSLIDSSO8]!!@anon-20191002_181700-221:localhost:8800REITENATXK8]! @anon-20191002_181700-220:localhost:8800OOLATWHSMP8]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8 ]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP8 ]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH8 ]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN8 ]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM8 ]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY$1%@34:localhost:8800guest_device8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC$1%@33:localhost:8800guest_device =z@^%Us: V  r 9  Z ! v =  [ "w>Z#x?["yzA]$8]!@anon-20191002_181700-38]!@anon-20191002_181700-331:localhost:8800COONNUXFOLU8]!@anon-20191002_181700-283:localhost:8800GHCLSNIYIA&8]!@anon-20191002_181700-282:localhost:8800MZNVLNKEUX%8]!@anon-20191002_181700-281:localhost:8800HVGEGIPOZP$8]!@anon-20191002_181700-280:localhost:8800PLHJASTUFR#6[!@anon-20191002_181700-27:localhost:8800TWNKNEABLT78]!@anon-20191002_181700-279:localhost:8800DVKCMEFQMC"8]!@anon-20191002_181700-278:localhost:8800OHJBILRNUP!8]!@anon-20191002_181700-277:localhost:8800YSVOUTLGFP 8]!@anon-20191002_181700-330:localhost:8800TFGJMHITULT6[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCB<8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLSS8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUOR8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHCQ8]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYTP8]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGSO8]!@anon-20191002_181700-324:localhost:8800KKATIXOBNFN8]!@anon-20191002_181700-323:localhost:8800BHOVENVWZCM8]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTL8]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCK8]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBJ6[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC;8]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAI8]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJH8]!@anon-20191002_181700-317:localhost:8800KSXFFXWMCBG8]!@anon-20191002_181700-316:localhost:8800JHIWJLKOFGF8]!@anon-20191002_181700-315:localhost:8800KXXAQONTRLE8]!@anon-20191002_181700-314:localhost:8800BTSWZNQVTPD8]!@anon-20191002_181700-312:localhost:8800LFIOTRIQVMC8]!@anon-20191002_181700-311:localhost:8800BNVFQNMSXMB8]!@anon-20191002_181700-310:localhost:8800UKYXDPZQOOA6[!@anon-20191002_181700-30:localhost:8800STWEJRRVAK:8]!@anon-20191002_181700-309:localhost:8800OEPQWZYGAR@8]!@anon-20191002_181700-308:localhost:8800VRKBCOUWEF?8]!@anon-20191002_181700-307:localhost:8800BEZNVUIADU>8]!@anon-20191002_181700-306:localhost:8800XZDIPYWWOD=8]!@anon-20191002_181700-305:localhost:8800PDQTBQSPGX<8]!@anon-20191002_181700-304:localhost:8800MQWNAFYDXK;8]!@anon-20191002_181700-303:localhost:8800FUOYNGGDMQ:8]!@anon-20191002_181700-302:localhost:8800PAWIWMHYHH98]!@anon-20191002_181700-301:localhost:8800SJPGITTBTX88]!@anon-20191002_181700-300:localhost:8800ZZJIQPLATK75Y!@anon-20191002_181700-2:localhost:8800RDNVTAXLBR6[!@anon-20191002_181700-29:localhost:8800WSREAIROYN98]!@anon-20191002_181700-299:localhost:8800BPDORAMNSE68]!@anon-20191002_181700-298:localhost:8800GTROHDSCGV58]!@anon-20191002_181700-297:localhost:8800DVSKNCGFXX48]!@anon-20191002_181700-296:localhost:8800SBLEQBXZQL38]!@anon-20191002_181700-295:localhost:8800CIYGWJHPPN28]!@anon-20191002_181700-294:localhost:8800RKGLRVXFMG18]!@anon-20191002_181700-293:localhost:8800PVLMJRXINQ08]!@anon-20191002_181700-292:localhost:8800GGCVZACJDJ/8]!@anon-20191002_181700-291:localhost:8800OPDSPHGDRK.8]!@anon-20191002_181700-290:localhost:8800HIUKIRMYDG-6[!@anon-20191002_181700-28:localhost:8800XMXOPMIZZU88]!@anon-20191002_181700-289:localhost:8800WRUIAYGXAN,8]!@anon-20191002_181700-288:localhost:8800BKSOCJCTFT+8]!@anon-20191002_181700-287:localhost:8800UVZQFXTZFV*8]!@anon-20191002_181700-286:localhost:8800SFUJRXTQDY)8]!@anon-20191002_181700-285:localhost:8800RKYDKAHKAA(8]!@anon-20191002_181700-284:localhost:8800IDXGKZHMAK'  eQa$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1033}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg"], "type": "m.room.history_visibility", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041239356, "hashes": {"sha256": "uyGh34b8bO8E/z6YU9yEVcgiTjKfw4qwEpNuo7RSvus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZH28LgEBs5PeUdSJrBAmbYeHcHdenb7B3eES4FnFrHV4GyGU2+A9zds92alXN9SM4NFfFwt+mHCHqtC7902EAg"}}, "unsigned": {"age_ts": 1570041239356}}teQau$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1032}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk"], "type": "m.room.join_rules", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041238064, "hashes": {"sha256": "8GHxA/XBe78yI7qCGYQlLqFJ1IbofEPtt1oSF87hc+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n9tLco7VlJgbDJnLn66J+2MNvxl/LMvyKFEcXSSs4Jw9hQBfbYZJ+TAZy7g8Nr2IzzCp7euRLRzklYDPF7SXCQ"}}, "unsigned": {"age_ts": 1570041238064}}keQac$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1031}{"auth_events": ["$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "type": "m.room.power_levels", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"users": {"@anon-20191002_181700-207:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041236550, "hashes": {"sha256": "Ml6JMMExiIWVMWMSPRpeUwYjiakq9DaTDlZah0+Jk4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iwGGacn5imj8KHY0yQbvTUObQlfX0NmFsNigEOpcCaPpKPcGLOCktJJbD38P94vR+5yL5L+4A0WRb+sEHybVCw"}}, "unsigned": {"age_ts": 1570041236550}}veQay$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1030}{"auth_events": ["$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60"], "prev_events": ["$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60"], "type": "m.room.member", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-207", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-207:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041234863, "hashes": {"sha256": "q+fbcZ2oKdqLhaBfZnUGHW0p38SxMScSMYCAEhJu9bc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x1RzMtWA+lJFthY4DUFBn7ihXL9MSrQOZWRZNUFRTEhUPVDTZ7Sulg9XpueBXUNMJplz3OtXTRuP5tvEdJuICg"}}, "unsigned": {"age_ts": 1570041234863}} 9 i & O OV!r/X!DJmK\& M  c ( j - N w_<Q3 !oznZaCpONuNDaLarkI:localhost:8800m.room.power_levels^Q']!oznZaCpONuNDaLarkI:localhost:8800m.room.member@anon-20191002_181700-184:localhost:8800:Q/ !oznZaCpONuNDaLarkI:localhost:8800m.room.join_rules<Q3 !oXKJArsPmtgaYANBrg:localhost:8800m.room.power_levelsVGQ'/!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@random_dude:testW^Q']!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800U^Q']!oXKJArsPmtgaYANBrg:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800O:Q/ !oXKJArsPmtgaYANBrg:localhost:8800m.room.join_rulesRBQ? !oXKJArsPmtgaYANBrg:localhost:8800m.room.history_visibilityS6Q' !oXKJArsPmtgaYANBrg:localhost:8800m.room.createN?Q9 !oXKJArsPmtgaYANBrg:localhost:8800m.room.canonical_aliasQEQ))!oXKJArsPmtgaYANBrg:localhost:8800m.room.aliaseslocalhost:8800T<Q3 !nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels:^Q']!nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:88007:Q/ !nxLxsxzliamzflrEBs:localhost:8800m.room.join_rules=BQ? !nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibility@6Q' !nxLxsxzliamzflrEBs:localhost:8800m.room.create5<Q3 !nvclDopiBLEOKBIheH:localhost:8800m.room.power_levelsF^Q']!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800E:Q/ !nvclDopiBLEOKBIheH:localhost:8800m.room.join_rulesGBQ? !nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibilityH6Q' !nvclDopiBLEOKBIheH:localhost:8800m.room.createD:Q/ !ntuwVdUxfzNIhIKYaz:localhost:8800madeup.test.state<Q3 !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.power_levels4Q# !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.name^Q']!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-128:localhost:8800^Q']!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.member@anon-20191002_181700-127:localhost:8800:Q/ !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.join_rulesBQ? !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.history_visibility6Q' !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.create?Q9 !ntuwVdUxfzNIhIKYaz:localhost:8800m.room.canonical_aliasEQ))!ntuwVdUxfzNIhIKYaz:localhost:8800m.room.aliaseslocalhost:8800<Q3 !nteAxExBGJfaGIpuCx:localhost:8800m.room.power_levelsr^Q']!nteAxExBGJfaGIpuCx:localhost:8800m.room.member@anon-20191002_181700-168:localhost:8800q:Q/ !nteAxExBGJfaGIpuCx:localhost:8800m.room.join_rulessBQ? !nteAxExBGJfaGIpuCx:localhost:8800m.room.history_visibilityt6Q' !nteAxExBGJfaGIpuCx:localhost:8800m.room.createpBQ? !oznZaCpONuNDaLarkI:localhost:8800m.room.history_visibility6Q' !oznZaCpONuNDaLarkI:localhost:8800m.room.create<Q3 !ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levelsp^Q']!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800u^Q']!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800n:Q/ !ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_rulesrBQ? !ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibilityt6Q' !ozgnwUlebxvzLVwyHW:localhost:8800m.room.createk;Q3 !odAvowLhHJcmkKlxFk:localhost:8800m.room.power_levels3Q# !odAvowLhHJcmkKlxFk:localhost:8800m.room.name\Q'[!odAvowLhHJcmkKlxFk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:88009Q/ !odAvowLhHJcmkKlxFk:localhost:8800m.room.join_rulesAQ? !odAvowLhHJcmkKlxFk:localhost:8800m.room.history_visibility5Q' !odAvowLhHJcmkKlxFk:localhost:8800m.room.create<Q3 !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levels ^Q']!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800 RQ'E!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455 :Q/ !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules BQ? !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility 6Q' !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.create pV T Z ' 75]r p,e?Q ]$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Im.room.history_visibility!sfXbvAcOUJhzGwWEpZ:localhost:8800mm^@anon-20191002_181700-209:localhost:8800$e/Q ]$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6Am.room.join_rules!sfXbvAcOUJhzGwWEpZ:localhost:8800mmH@anon-20191002_181700-209:localhost:8800&e3Q ]$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkm.room.power_levels!sfXbvAcOUJhzGwWEpZ:localhost:8800mmmM@anon-20191002_181700-209:localhost:8800 e'Q ]$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0km.room.member!sfXbvAcOUJhzGwWEpZ:localhost:8800mMm@anon-20191002_181700-209:localhost:8800 e'Q  ]$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8m.room.create!sfXbvAcOUJhzGwWEpZ:localhost:8800mm@anon-20191002_181700-209:localhost:8800!e)Q ] $jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcm.room.message!YufaOfAlruTdjyUCwO:localhost:8800 m m@anon-20191002_181700-208:localhost:8800 e'Q 1 $1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Mm.room.member!YufaOfAlruTdjyUCwO:localhost:8800 msmt@34:localhost:8800!e)Q ]$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcm.room.message!YufaOfAlruTdjyUCwO:localhost:8800mmumm}@anon-20191002_181700-208:localhost:8800!e)Q ]$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8m.room.message!YufaOfAlruTdjyUCwO:localhost:8800mh?mhC@anon-20191002_181700-208:localhost:8800&e3Q ]$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEm.room.guest_access!YufaOfAlruTdjyUCwO:localhost:8800mamb@anon-20191002_181700-208:localhost:8800,e?Q ]$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgm.room.history_visibility!YufaOfAlruTdjyUCwO:localhost:8800mVm\m@anon-20191002_181700-208:localhost:8800$e/Q ]$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkm.room.join_rules!YufaOfAlruTdjyUCwO:localhost:8800mQamSi@anon-20191002_181700-208:localhost:8800&e3Q ]$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sm.room.power_levels!YufaOfAlruTdjyUCwO:localhost:8800mLmN@anon-20191002_181700-208:localhost:8800 e'Q ]$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUm.room.member!YufaOfAlruTdjyUCwO:localhost:8800mI#mI@anon-20191002_181700-208:localhost:8800 e'Q  ]$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIm.room.create!YufaOfAlruTdjyUCwO:localhost:8800mCmD@anon-20191002_181700-208:localhost:8800!e)Q ] $uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Qm.room.message!ifQxHmNAcSSGHVMjfi:localhost:8800 m8m8@anon-20191002_181700-207:localhost:8800 e'Q 1 $QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIm.room.member!ifQxHmNAcSSGHVMjfi:localhost:8800 m3%m3@33:localhost:8800! e)Q ] $bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BEm.room.message!ifQxHmNAcSSGHVMjfi:localhost:8800 m-m0n@anon-20191002_181700-207:localhost:8800, e?Q ]$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYm.room.history_visibility!ifQxHmNAcSSGHVMjfi:localhost:8800m)um*.@anon-20191002_181700-207:localhost:8800! e)Q ]$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8m.room.message!ifQxHmNAcSSGHVMjfi:localhost:8800m$Qm$V@anon-20191002_181700-207:localhost:8800& e3Q ]$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbkm.room.guest_access!ifQxHmNAcSSGHVMjfi:localhost:8800mQm@anon-20191002_181700-207:localhost:8800, e?Q ]$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-km.room.history_visibility!ifQxHmNAcSSGHVMjfi:localhost:8800m<m@anon-20191002_181700-207:localhost:8800$e/Q ]$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKgm.room.join_rules!ifQxHmNAcSSGHVMjfi:localhost:8800m0m@anon-20191002_181700-207:localhost:8800&e3Q ]$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZkm.room.power_levels!ifQxHmNAcSSGHVMjfi:localhost:8800m Fm@anon-20191002_181700-207:localhost:8800 a} { y w u sqomkigeca~>eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~=eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~<eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~;eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~:eeQ$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~9eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~8eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~7eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~6eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~5eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~4eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800~3eeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800~2eeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~1eeQ$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800~0eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg!ifQxHmNAcSSGHVMjfi:localhost:8800~/eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~.eeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~-eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~,eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~+eeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~*eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~)eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~(eeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~'eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~&eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~%eeQ$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~$eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~#eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800~"eeQ$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!ifQxHmNAcSSGHVMjfi:localhost:8800~!eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800~ eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800  1 eQq$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "txn_id": "96", "stream_ordering": 1037}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY"], "type": "m.room.message", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041245174, "hashes": {"sha256": "rD6ckRb22CqvnqPT0xiZa8pIAesAGbqQcu1LYR4gn2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWAN9WlJ4gZYU7zJJjO7bJuCRHD9RYUmOrCSpBsfrGOY+InMb4z0eWOdN6GHMUjDQ9R/uwhDfeKZ6QsGajBFAg"}}, "unsigned": {"age_ts": 1570041245174}}G eQa$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1036}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8"], "type": "m.room.history_visibility", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041244021, "hashes": {"sha256": "e10owe0zuaMydClkOIQCJbq3ADxYLJ5ZaslPVwGkaNs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mH15Ym+OnyVq7zDHRbeYozoZiQ2c90XkMI0K4qJKQaJTULplvptOZhIKByV3qT81jUgBh9sJvdMMtc5NN3xSAA"}}, "unsigned": {"age_ts": 1570041244021, "replaces_state": "$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k"}} eQm$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "txn_id": "95", "stream_ordering": 1035}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk"], "type": "m.room.message", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"msgtype": "m.text", "body": "shared"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041242705, "hashes": {"sha256": "Ht5Mv2g7JbC/S7vb4FdFqF8rKL2bFtuOE/nm11ZeMkw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZOX5UKBWP3mXxLeKhWoh8CG7rAW8FSrpwAvJG3znrwaOXabQ6hx2nRiCjp2e0x8Gyp7OhMWBRHhydY+AMISzBw"}}, "unsigned": {"age_ts": 1570041242705}}{ eQa$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "stream_ordering": 1034}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k"], "type": "m.room.guest_access", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041241425, "hashes": {"sha256": "mOUJjD/FnGRd2AH86UoLItpO3L68NQfxB5Q4EQbW3lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fPmyLn90x001C9TKrr+PhmuvSj/k+dTP46mzU9LhvaQR8AkuC/H9v3Eqx1s8X4lNqbQIJ/HZ/213CIKbHZQHBQ"}}, "unsigned": {"age_ts": 1570041241425}} -RM H C > 9 4/*|%w rmhc T<Qe7!FklhVuCInffbDxunWv:localhost:8800$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4UT;Qe6!FklhVuCInffbDxunWv:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sT:Qe5!FklhVuCInffbDxunWv:localhost:8800$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0T9Qe4!FklhVuCInffbDxunWv:localhost:8800$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9AT8Qe3!FklhVuCInffbDxunWv:localhost:8800$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYT7Qe2!FklhVuCInffbDxunWv:localhost:8800$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgT6Qe1!FklhVuCInffbDxunWv:localhost:8800$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMT5Qe0!FklhVuCInffbDxunWv:localhost:8800$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-JwT4Qe/!FklhVuCInffbDxunWv:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0T3Qe.!FklhVuCInffbDxunWv:localhost:8800$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQT2Qe-!eJPTUgihvSwaOhIkrC:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQT1Qe,!eJPTUgihvSwaOhIkrC:localhost:8800$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMT0Qe+!eJPTUgihvSwaOhIkrC:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMT/Qe*!eJPTUgihvSwaOhIkrC:localhost:8800$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxAT.Qe)!eJPTUgihvSwaOhIkrC:localhost:8800$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4ET-Qe(!eJPTUgihvSwaOhIkrC:localhost:8800$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQT,Qe'!eJPTUgihvSwaOhIkrC:localhost:8800$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewT+Qe&!eJPTUgihvSwaOhIkrC:localhost:8800$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4YoT*Qe%!eJPTUgihvSwaOhIkrC:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66IT)Qe$!eJPTUgihvSwaOhIkrC:localhost:8800$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIT(Qe#!sfXbvAcOUJhzGwWEpZ:localhost:8800$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0T'Qe"!sfXbvAcOUJhzGwWEpZ:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kT&Qe!!sfXbvAcOUJhzGwWEpZ:localhost:8800$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8T%Qe !sfXbvAcOUJhzGwWEpZ:localhost:8800$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgT$Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgT#Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IT"Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AT!Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMkT Qe!sfXbvAcOUJhzGwWEpZ:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kTQe!sfXbvAcOUJhzGwWEpZ:localhost:8800$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8TQe!YufaOfAlruTdjyUCwO:localhost:8800$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcTQe!YufaOfAlruTdjyUCwO:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6MTQe!YufaOfAlruTdjyUCwO:localhost:8800$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcTQe!YufaOfAlruTdjyUCwO:localhost:8800$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8TQe!YufaOfAlruTdjyUCwO:localhost:8800$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaETQe!YufaOfAlruTdjyUCwO:localhost:8800$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgTQe!YufaOfAlruTdjyUCwO:localhost:8800$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSkTQe!YufaOfAlruTdjyUCwO:localhost:8800$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sTQe!YufaOfAlruTdjyUCwO:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUTQe!YufaOfAlruTdjyUCwO:localhost:8800$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxITQe!ifQxHmNAcSSGHVMjfi:localhost:8800$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5QTQe!ifQxHmNAcSSGHVMjfi:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzITQe !ifQxHmNAcSSGHVMjfi:localhost:8800$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BETQe !ifQxHmNAcSSGHVMjfi:localhost:8800$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYTQe !ifQxHmNAcSSGHVMjfi:localhost:8800$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8  S K  2*| k cBt: [" eeQ$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800eeQ$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0!aWvVRVaDflYyyGTOdD:localhost:8800JeeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800 eeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8!cosGKKhHvKaVukBCic:localhost:8800eeQ$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc!bnTuVBaAJTPbcYZtRl:localhost:8800فeeQ$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0!zNBpypJDRMlBdOcLlW:localhost:8800veeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800seeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800r eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY!eySSVuCclRpBDgwKIU:localhost:8800{eeQ$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4!wnriPzXkIMmdTNoJKU:localhost:8800ɁeeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800 GeeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY!BGbJEmJRVJGlZFQbZe:localhost:8800ӁeeQ$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8!IZkczIYykpZDvjuUWn:localhost:8800{eeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800qeeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:88005eeQ$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ!fcdNYFWFyxmdpKAknc:localhost:8800A w gwveQay$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1041}{"auth_events": ["$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI"], "prev_events": ["$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI"], "type": "m.room.member", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-208", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-208:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041252131, "hashes": {"sha256": "7S0iBjzevCowCUBFBErrLJHJLPH3NlqL/BRBgGbWhjI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kws6rJvib9wwzbz7ptjvh6SPat+9S7gKlmudIgp+Y7EC03kPj++Pw5bkysMVYn2T14DItZBX9MjLuNBFP8PRBg"}}, "unsigned": {"age_ts": 1570041252131}}ieQa_$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1040}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-208:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041250813, "hashes": {"sha256": "Wc1n2al5h0jkosJud/Ay1z1OdqlaOijUNXEcDQ04bDk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g77qBugO0xhuZPFMdCm5VsBcuijqho8gTqvpnqrWkwUgcHhKpNAODZOVHS1AZi5+hYx1UdmadmH9+edpiURRDQ"}}, "unsigned": {"age_ts": 1570041250813}}eQu$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800{"token_id": 228, "txn_id": "97", "stream_ordering": 1039}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg"], "prev_events": ["$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI"], "type": "m.room.message", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@anon-20191002_181700-207:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041247941, "hashes": {"sha256": "ye7o4NzUhGvrJGI2VWTB0wqQjL7Waqr9s6lXZ/YK/KY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dvurxq5NyrIZCSlGoxbqP1U+xhco0fXYcyaaQjkAMNS3V65bGKLFZq0rFgMzLQ/IoGEbXnyM8Nrc0AGogj2JAQ"}}, "unsigned": {"age_ts": 1570041247941}} eQ?Y$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800{"stream_ordering": 1038}{"auth_events": ["$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk", "$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60", "$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg"], "prev_events": ["$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE"], "type": "m.room.member", "room_id": "!ifQxHmNAcSSGHVMjfi:localhost:8800", "sender": "@33:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "33", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@33:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041246501, "hashes": {"sha256": "SN5Dhr8mcWsIaY5jYJLmes9ThKXuNtzBAuU3CsheGXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mCZcZ/KHzNKItMHmBC+xnNfx5U7KL1+7bDYxz9VfeRyXSBaAVhpfc0RvEtfWfmfR3avURO83eEXdjsdsz1KwCQ"}}, "unsigned": {"age_ts": 1570041246501}} g * T~=ggf]!c@anon-20191002_181700-218:localhost:8800EJUSKMCYXQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQoge]!c@anon-20191002_181700-217:localhost:8800UMNJQPXSWWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAogd]!c@anon-20191002_181700-216:localhost:8800RYBXPLVXBJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0wogc]!c@anon-20191002_181700-215:localhost:8800YMMAIPPEFOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgogb]!c@anon-20191002_181700-214:localhost:8800MEYMCWHAWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3Aoga]!c@anon-20191002_181700-213:localhost:8800LEQWCYQYGHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBqSkBkdkBPR3EzaUx4eDUKMDAyZnNpZ25hdHVyZSBVuF6NBtiMz2bEdBixHOtv14eE0aYcLIdRBBgkOtjMIQog`]!c@anon-20191002_181700-212:localhost:8800RTYZTLKABNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHUjUyZPTkhCdTZQJlozd3AKMDAyZnNpZ25hdHVyZSDa3KCf8uR1pbc8KNvlnD4kU4zB76gI3XvbVm_g7R-GrAog_]!c@anon-20191002_181700-211:localhost:8800FQOBFRKZSMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlOUGI3cm0zS0NuM28wRy4KMDAyZnNpZ25hdHVyZSD4OpM6ZfPo7DlTj2wvV2Lfc6R4avGRyYucfSs91WVPAwog^]!c@anon-20191002_181700-209:localhost:8800LYXETIOPNTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8mc1E2cU87S0JPRzsqRHQKMDAyZnNpZ25hdHVyZSCE3lpnX8pbD2KC0McwXLUdzZuwlkbmxKEofNSySIjndgog]]!c@anon-20191002_181700-210:localhost:8800PHSGQQQBDFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdzZSZ6VnRTO3ZNYmYrTG4KMDAyZnNpZ25hdHVyZSAw_sTACB0grGYIQZBZO4mmUJGT8kaw30JozrC7XeOYYwog\]!c@anon-20191002_181700-208:localhost:8800NIDXMAEJEYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGIuM1JSNklvaWNiSjg4T14KMDAyZnNpZ25hdHVyZSCx9B_4CF5OokMqPENr8hBCMYZmdCxfyfiY1V2OUK9UeAo  {eQa$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1045}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg"], "type": "m.room.guest_access", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041258440, "hashes": {"sha256": "KeA6o6xXcEbJmnoA9AcvBkrU043PJ8pIL0Ie669GCro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0lUjthgZA2MOtP2XToMYQ/niEwB1hI1n9YF0sPUFoBpu4zH6UNmiBVbgyLExcQqGncSMfixf52YLJPxb6Q7QAw"}}, "unsigned": {"age_ts": 1570041258440}}eQa$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1044}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk"], "type": "m.room.history_visibility", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041255424, "hashes": {"sha256": "n84srN09BKsg2WVu6tf2q63jY+UH2v+0W6wK1zBqo9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0V7QgIVEYjz0cLJSp4jW0FwWK4LofLF9DvPKqILKgwxo6k/9yoLUkWVBMUA7JQzY8dQG+LhaQrYLUFSrp1/iAw"}}, "unsigned": {"age_ts": 1570041255424}}teQau$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1043}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s"], "type": "m.room.join_rules", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041254241, "hashes": {"sha256": "RVU4e0E/2+o8a5J0v6YXp3Ldg+NODEA8dKoHMIKpJWQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bSLwpivaG6CwQYww+6Mp1O6O3lnaHZgQnyA33CZeI1Tgd7f99jub7J16ZXbJ5cjvwW3CvEZI8GIagHP+n5D9CA"}}, "unsigned": {"age_ts": 1570041254241}}keQac$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "stream_ordering": 1042}{"auth_events": ["$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "type": "m.room.power_levels", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"users": {"@anon-20191002_181700-208:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041253115, "hashes": {"sha256": "hideaHfWM9z8QBtVgss7XNooUZVukgmVhbkjaEGDMdM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zEpSNBjZVsQ4AlNdLcqGcMuqP8reH7NgVqmhcpXpIhhNVmXkp1yNE/gM23grH/PgEf2uVVv69OCpZX/u8lcDCw"}}, "unsigned": {"age_ts": 1570041253115}} "Y$@ K u  % 0 5Y{]h B$/YgtQ/ e!HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rules$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4isQ3 e!HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs rQ']e!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQcqQ' e!HZqzpRgqekPOtxstVc:localhost:8800m.room.create$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw pQ']e!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek oQ']e!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sinQ3 e!FklhVuCInffbDxunWv:localhost:8800m.room.guest_access$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9AomQ? e!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYolQ? e!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHggkQ/ e!FklhVuCInffbDxunWv:localhost:8800m.room.join_rules$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMijQ3 e!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw iQ']e!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0chQ' e!FklhVuCInffbDxunWv:localhost:8800m.room.create$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ gQ']e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ fQ']e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMieQ3 e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_access$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4EodQ? e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibility$2DJ9MnVKofe1c6evu8PTksxjjAd_E1h06A6etRaEyococQ? e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibility$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQgbQ/ e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rules$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewiaQ3 e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo `Q']e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Ic_Q' e!eJPTUgihvSwaOhIkrC:localhost:8800m.room.create$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI ^Q']e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ki]Q3 e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_access$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgo\Q? e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngo[Q? e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_IgZQ/ e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rules$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AiYQ3 e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk XQ']e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kcWQ' e!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.create$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8uVQ'1e!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6MiUQ3 e!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_access$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEoTQ? e!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibility$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrggSQ/ e!YufaOfAlruTdjyUCwO:localhost:8800m.room.join_rules$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk "&L U }  % Sy_n,R8GumGeQ? $vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibilitymFeQ? $h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibilityeEeQ/ $kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rulesgDeQ3 $ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels CeQ']$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800aBeQ' $qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800m.room.create AeQ']$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800 @eQ']$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800g?eQ3 $hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800m.room.guest_accessm>eQ? $ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibilitym=eQ? $kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibilitye<eQ/ $VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800m.room.join_rulesg;eQ3 $IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels :eQ']$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800a9eQ' $vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800m.room.create 8eQ']$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800 7eQ']$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800g6eQ3 $GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_accessm5eQ? $OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibilitye4eQ/ $IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rulesg3eQ3 $A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels 2eQ']$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800a1eQ' $py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800m.room.create 0eQ']$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800g/eQ3 $JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_accessm.eQ? $ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibilitym-eQ? $JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibilitye,eQ/ $KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rulesg+eQ3 $W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels *eQ']$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800a)eQ' $bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.creates(eQ'1$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800m.room.member@34:localhost:8800g'eQ3 $AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE!YufaOfAlruTdjyUCwO:localhost:8800m.room.guest_accessm&eQ? $rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg!YufaOfAlruTdjyUCwO:localhost:8800m.room.history_visibility  {\eQu$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "txn_id": "100", "stream_ordering": 1049}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M"], "type": "m.room.message", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041265930, "hashes": {"sha256": "LT3VROhGlST1vEGS81DbnioFPKMScSt288WWAvhPmMo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M7rQIFSYcvv3/TFd5UoTKWqSy3KMplzTgBIcSB+/71E56AHpV5UEItPR818lbFszTvmy27fUw0ul7rghzmDLDQ"}}, "unsigned": {"age_ts": 1570041265930}}eQ?W$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800{"stream_ordering": 1048}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk"], "prev_events": ["$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc"], "type": "m.room.member", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@34:localhost:8800", "content": {"membership": "join", "kind": "guest", "displayname": "34", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@34:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041262856, "hashes": {"sha256": "NbKzEtMWKAzSpaz7gsrHLRg6MhvaKnBQqv5b+2e9ghM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CwDVDGbakdgGHdfczN223Ye6AX4st4mdPkV+muEaZvsGyO/XTjbW/kKUpgMBbKzy/LoRBwEe9/RRTI6c0FnHBg"}}, "unsigned": {"age_ts": 1570041262856}}eQq$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "txn_id": "99", "stream_ordering": 1047}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8"], "type": "m.room.message", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041261429, "hashes": {"sha256": "lwNucu3UN51XKVQ8JldiGN24LFdfmr3FrxX5eYSjl1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FIYWGT/XsnMOyZDkU9dD2S7nJhmmS9WCUWeLZCBlI1Q4JdH6ljBLq/cn4L1s/OBArGZ7p2HsAsK/wO5n3/EjAw"}}, "unsigned": {"age_ts": 1570041261429}}eQm$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800{"token_id": 229, "txn_id": "98", "stream_ordering": 1046}{"auth_events": ["$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s", "$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI", "$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU"], "prev_events": ["$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE"], "type": "m.room.message", "room_id": "!YufaOfAlruTdjyUCwO:localhost:8800", "sender": "@anon-20191002_181700-208:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041260095, "hashes": {"sha256": "sCiKWDfaCflpoqBqH9qDw7orD/FQDdCpCV1i3zG6eks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITVH3C++3UMMVLB2HJph0g2GR6/PQpqigjQ1UHkQDMNSX1ctmAnDTq653qSsIZ0J5ni1NZ5dk5WBjziiPw6XBQ"}}, "unsigned": {"age_ts": 1570041260095}} WOx"v NzO$ y' M"U*~S(|Q& N $ w | Q & z O}RvK $xM, $W { P % *Q!lEJUJZxqZPKZetemiR:localhost:8800 8 M*Q!lEJUJZxqZPKZetemiR:localhost:8800 7 L*Q!lEJUJZxqZPKZetemiR:localhost:8800 4 K*Q!lEJUJZxqZPKZetemiR:localhost:8800 3 J*Q!lEJUJZxqZPKZetemiR:localhost:8800 2 I*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwXxkGQFkaeenFTQJr:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kwJgbtogEzCqYbUXfh:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kjueCKHmYaYefEEpQY:localhost:8800*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RT*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QS*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PR*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OQ*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NP*Q!lMRBkbYJDQHgdBZBFJ:localhost:8800MO*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!lAGTcYIuMBXsVRGCOe:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800(Q!kxTDuIasPNpXtiRsif:localhost:8800}|(Q!kxTDuIasPNpXtiRsif:localhost:8800~})Q!kxTDuIasPNpXtiRsif:localhost:8800(Q!kxTDuIasPNpXtiRsif:localhost:8800~*Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800 *Q!kkgEEVUJynguTqAoWD:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800)*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!krhefVncoErkCtnvsy:localhost:8800*Q!lEJUJZxqZPKZetemiR:localhost:8800 1 H*Q!lEJUJZxqZPKZetemiR:localhost:8800 0 G*Q!lEJUJZxqZPKZetemiR:localhost:8800 / F*Q!lEJUJZxqZPKZetemiR:localhost:8800 . E*Q!lEJUJZxqZPKZetemiR:localhost:8800 - DV*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800*Q!kpTPWDZdBbbXKLonZK:localhost:8800 a} { y w u sqomkigeca~]eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~\eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~[eeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~ZeeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~YeeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~XeeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~WeeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~VeeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~UeeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~TeeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~SeeQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~ReeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~QeeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800~PeeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~OeeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~NeeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~MeeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~LeeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~KeeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~JeeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~IeeQ$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~HeeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~GeeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~FeeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~EeeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~DeeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~CeeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800~BeeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800~AeeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~@eeQ$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800~?eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800  d \t< T  LD|, l$4 eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800 :eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800 leeQ$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg!IlGJpjzrvvAFuwTAgo:localhost:8800 ցeeQ$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU!BGbJEmJRVJGlZFQbZe:localhost:8800ҁeeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800 6eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:88008eeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw!wnriPzXkIMmdTNoJKU:localhost:8800ˁeeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800ρeeQ$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800 _eeQ$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800āeeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800 reeQ$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800+eeQ$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI!dWgOTucBVQBKZjfndN:localhost:88002eeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:88008eeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800eeQ$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800%eeQ$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w!jfshVGNDxkvqPxFxWB:localhost:8800 eeQ$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800 eeQ$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o!xhbvqJDfxMSsZPqvld:localhost:8800   *teQau$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1053}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk"], "type": "m.room.join_rules", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041274808, "hashes": {"sha256": "y90+ENLpz5PZV+QP/Cej09l6Fmd63LsElIAAYvOqTD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/T3hhhgekExExTHgY1EvlgXB01w0SgF7GhzpxuymKZZ9sivbFD+ZGTl1aTyKlegqFBSfecbC0aEAt3v+Tv5aAQ"}}, "unsigned": {"age_ts": 1570041274808}}keQac$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1052}{"auth_events": ["$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "type": "m.room.power_levels", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"users": {"@anon-20191002_181700-209:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041272941, "hashes": {"sha256": "1T4kbYH0Lpqw//B5nsq/gN7/dFZpqd5MukmnvznbGb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eOFIbpOhJmpyjHfw+9C/O46VHrfPx1+VYAGkq8g5/K9FwsPQXrMjx7yelq4mV/Y5xEqNpBs1EHIDrD1swfMPAQ"}}, "unsigned": {"age_ts": 1570041272941}}veQay$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1051}{"auth_events": ["$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8"], "prev_events": ["$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8"], "type": "m.room.member", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-209", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-209:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041271629, "hashes": {"sha256": "I4IprA/GcuHIxGu2AkPj6a0BZYgmDyGdV8j4nXgEZLc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iYnrro+4CgzT2pO9ODKL2Ak38x+muQoWC+hOTcQ690cOPuWL9yQxIDk5hIz7k9MetZoJa4VTCGJtayvQqMnrBg"}}, "unsigned": {"age_ts": 1570041271629}}ieQa_$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1050}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-209:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041269455, "hashes": {"sha256": "cppm6piRFcLr0DcQLzTNd34aPEn4rv88elOfeFUtfI4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ncNybtTO40QzOyRg7TkaSHYjluJpUvbu8EutoIdJarCJHlDJdTq0KVcEF14RSKGpR1ccTy+LY0VNPSFIt40WAw"}}, "unsigned": {"age_ts": 1570041269455}} @GN U  \  c " i - t 8CI Tu4U[f%m,9X ]@anon-20191002_181700-247:localhost:8800a&\=W ]  @anon-20191002_181700-245:localhost:8800m&\V>V ]  @anon-20191002_181700-244:localhost:8800m&\ 9U ]@anon-20191002_181700-245:localhost:8800a&\9T ]@anon-20191002_181700-244:localhost:8800a&\=S ]  @anon-20191002_181700-243:localhost:8800m&\W>R ]  @anon-20191002_181700-242:localhost:8800m&\ c9Q ]@anon-20191002_181700-243:localhost:8800a&\9P ]@anon-20191002_181700-242:localhost:8800a&\>O ]  @anon-20191002_181700-240:localhost:8800m&\>9N ]@anon-20191002_181700-241:localhost:8800a&\9M ]@anon-20191002_181700-240:localhost:8800a&\>L ]@anon-20191002_181700-239:localhost:8800m&\>K ]  @anon-20191002_181700-238:localhost:8800m&\9J ]@anon-20191002_181700-239:localhost:8800a&\9I ]@anon-20191002_181700-238:localhost:8800a&\>H ]  @anon-20191002_181700-237:localhost:8800m&\ 9G ]@anon-20191002_181700-237:localhost:8800a&\#F 1@36:localhost:8800a&\>E ]  @anon-20191002_181700-236:localhost:8800m&\j9D ]@anon-20191002_181700-236:localhost:8800a&\#C 1@35:localhost:8800a&\>B ]  @anon-20191002_181700-234:localhost:8800m&\9A ]@anon-20191002_181700-235:localhost:8800a&\9@ ]@anon-20191002_181700-234:localhost:8800a&\>? ]  @anon-20191002_181700-232:localhost:8800m&\9> ]@anon-20191002_181700-233:localhost:8800a&\9= ]@anon-20191002_181700-232:localhost:8800a&\>< ]  @anon-20191002_181700-231:localhost:8800m&\j9; ]@anon-20191002_181700-231:localhost:8800a&\9: ]@anon-20191002_181700-230:localhost:8800a&\>9 ]  @anon-20191002_181700-228:localhost:8800m&\y98 ]@anon-20191002_181700-229:localhost:8800a&\97 ]@anon-20191002_181700-228:localhost:8800a&\96 ]@anon-20191002_181700-227:localhost:8800a&\>5 ]  @anon-20191002_181700-226:localhost:8800m&\194 ]@anon-20191002_181700-226:localhost:8800a&\93 ]@anon-20191002_181700-225:localhost:8800a&\>2 ]  @anon-20191002_181700-224:localhost:8800m&\x91 ]@anon-20191002_181700-224:localhost:8800a&\90 ]@anon-20191002_181700-223:localhost:8800a&\>/ ]  @anon-20191002_181700-222:localhost:8800m&\y9. ]@anon-20191002_181700-222:localhost:8800a&\9- ]@anon-20191002_181700-221:localhost:8800a&\>, ]  @anon-20191002_181700-220:localhost:8800m&\19+ ]@anon-20191002_181700-220:localhost:8800a&\9* ]@anon-20191002_181700-219:localhost:8800a&\=) ]  @anon-20191002_181700-218:localhost:8800m&\>( ] @anon-20191002_181700-217:localhost:8800m&\ >9' ]@anon-20191002_181700-218:localhost:8800a&\9& ]@anon-20191002_181700-217:localhost:8800a&\=% ]  @anon-20191002_181700-216:localhost:8800m&\>$ ] @anon-20191002_181700-215:localhost:8800m&\ 9# ]@anon-20191002_181700-216:localhost:8800a&\9" ]@anon-20191002_181700-215:localhost:8800a&\=! ]  @anon-20191002_181700-214:localhost:8800m&\> ] @anon-20191002_181700-213:localhost:8800m&\ 9 ]@anon-20191002_181700-214:localhost:8800a&\9 ]@anon-20191002_181700-213:localhost:8800a&\= ]  @anon-20191002_181700-212:localhost:8800m&\> ] @anon-20191002_181700-211:localhost:8800m&\ >9 ]@anon-20191002_181700-212:localhost:8800a&\9 ]@anon-20191002_181700-211:localhost:8800a&\> ] @anon-20191002_181700-209:localhost:8800m&\  w% eQw$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "txn_id": "101", "stream_ordering": 1057}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg"], "type": "m.room.message", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041285626, "hashes": {"sha256": "XjDwLnPVj8DuOCd1YD7G4+KpGikOJb6A4xGmGHF8Czg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TBsm1QMH0bKjhKzpn+Jwbk0Fs+eQrW9qEQHFTQ1RaZPouVrOC+cUtUVJ3XW7/ejuId2ttBjnqbqQ3e1SGfTaCA"}}, "unsigned": {"age_ts": 1570041285626}}{eQa$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1056}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng"], "type": "m.room.guest_access", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041282532, "hashes": {"sha256": "WtnWwj8Dd/OgVDAn2UntiqSVWFE7fJ/YtoB7TtMPtOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DaPes0Oe66J8U4ProOQHbC0c1Y16Ybx13gFJWkWInbEIZaMizkztXvqTuUFn2VsjG8XqTspDL7D4cH4kK7fWCA"}}, "unsigned": {"age_ts": 1570041282532}}OeQa+$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1055}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I"], "type": "m.room.history_visibility", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041278985, "hashes": {"sha256": "zQ3+exG/t7hquKExEXVZUaELsu1nYRkc7aIYMN73ldY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ghUJL0Ow5q46LCJpHeS/QNSGoageoBcN0AaTWUimTeXnE+/suHs/O9tFnXfW04vSz2e6b2SnWs3Bj+dslgIDQ"}}, "unsigned": {"age_ts": 1570041278985, "replaces_state": "$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I"}}eQa$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1054}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A"], "type": "m.room.history_visibility", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041276415, "hashes": {"sha256": "zdgt6AONSKUuq0yaOcQKiKgZNshq8p1QYtqAqIRfR+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "svhS5ahOymmechBMb/zs6SkFM8tC9FWdJvZa/qWqOnWaIzwpp/nlUod3bJ9l0irU13xnL0yg2+78w8peW1bXBA"}}, "unsigned": {"age_ts": 1570041276415}} IP ]  r p!}4D<I 6e'Q ] $0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sm.room.member!FklhVuCInffbDxunWv:localhost:8800 m#m$Z@anon-20191002_181700-213:localhost:8800!5e)Q ]$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0m.room.message!FklhVuCInffbDxunWv:localhost:8800m!m!@anon-20191002_181700-213:localhost:8800&4e3Q ]$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Am.room.guest_access!FklhVuCInffbDxunWv:localhost:8800mmm@anon-20191002_181700-213:localhost:8800,3e?Q ]$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYm.room.history_visibility!FklhVuCInffbDxunWv:localhost:8800mum@anon-20191002_181700-213:localhost:8800,2e?Q ]$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgm.room.history_visibility!FklhVuCInffbDxunWv:localhost:8800mm@anon-20191002_181700-213:localhost:8800$1e/Q ]$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMm.room.join_rules!FklhVuCInffbDxunWv:localhost:8800mim%@anon-20191002_181700-213:localhost:8800&0e3Q ]$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwm.room.power_levels!FklhVuCInffbDxunWv:localhost:8800mm@anon-20191002_181700-213:localhost:8800 /e'Q ]$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0m.room.member!FklhVuCInffbDxunWv:localhost:8800mm`@anon-20191002_181700-213:localhost:8800. e'Q  ]$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQm.room.create!FklhVuCInffbDxunWv:localhost:8800m m]@anon-20191002_181700-213:localhost:8800 -e'Q ] $9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQm.room.member!eJPTUgihvSwaOhIkrC:localhost:8800 mmS@anon-20191002_181700-212:localhost:8800!,e)Q ] $h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMm.room.message!eJPTUgihvSwaOhIkrC:localhost:8800 mm @anon-20191002_181700-211:localhost:8800 +e'Q ]$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMm.room.member!eJPTUgihvSwaOhIkrC:localhost:8800mMm@anon-20191002_181700-211:localhost:8800!*e)Q ]$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxAm.room.message!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800&)e3Q ]$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Em.room.guest_access!eJPTUgihvSwaOhIkrC:localhost:8800mUm@anon-20191002_181700-211:localhost:8800,(e?Q ]$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQm.room.history_visibility!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800$'e/Q ]$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewm.room.join_rules!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800&&e3Q ]$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yom.room.power_levels!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800 %e'Q ]$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Im.room.member!eJPTUgihvSwaOhIkrC:localhost:8800mm@anon-20191002_181700-211:localhost:8800$ e'Q  ]$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIm.room.create!eJPTUgihvSwaOhIkrC:localhost:8800m`m@anon-20191002_181700-211:localhost:8800!#e)Q ] $8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0m.room.message!sfXbvAcOUJhzGwWEpZ:localhost:8800 mm@anon-20191002_181700-209:localhost:8800 "e'Q ] $RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9km.room.member!sfXbvAcOUJhzGwWEpZ:localhost:8800 mОmG@anon-20191002_181700-209:localhost:8800!!e)Q ]$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8m.room.message!sfXbvAcOUJhzGwWEpZ:localhost:8800mm@anon-20191002_181700-209:localhost:8800& e3Q ]$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgm.room.guest_access!sfXbvAcOUJhzGwWEpZ:localhost:8800mm@anon-20191002_181700-209:localhost:8800,e?Q ]$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngm.room.history_visibility!sfXbvAcOUJhzGwWEpZ:localhost:8800m m@anon-20191002_181700-209:localhost:8800  & d |t \ T MF> l6.eeQ$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800؁eeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800eeeQ$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800QeeQ$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:8800 8eeQ$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800}eeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800 VeeQ$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM!AjjrNwXmPTCruHxaJq:localhost:88003eeQ$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!duCKuavMBSfRbTFPsc:localhost:8800eeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY!zNBpypJDRMlBdOcLlW:localhost:8800{eeQ$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM!WjlTCJVOFJkanCtkFE:localhost:8800ueeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0!oXKJArsPmtgaYANBrg:localhost:8800oeeQ$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk!KXMUzALpMMMKqoQXUS:localhost:8800^eeQ$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic!jYzridjeihmwPBuwLb:localhost:8800GeeQ$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0!GixhPUMvtKSWoKRgvw:localhost:8800+eeQ$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U!AjjrNwXmPTCruHxaJq:localhost:88002eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8!YufaOfAlruTdjyUCwO:localhost:8800eeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw!cosGKKhHvKaVukBCic:localhost:8800eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800eeQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk!IlGJpjzrvvAFuwTAgo:localhost:8800 ߁eeQ$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk!OBWkjfrDCNgYFfblia:localhost:8800eeQ$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800 [ ~z v r n j fb^ZVRNJFEeeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800DeeQ$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800CeeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800BeeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800AeeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800@eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800?eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800>eeQ$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800=eeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800<eeQ$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800;eeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800:eeQ$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:88009eeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:88008eeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:88007eeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:88006eeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:88005eeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:88004eeQ$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:88003eeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:88002eeQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:88001eeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:88000eeQ$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800/eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800.eeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800-eeQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800,eeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800+eeQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800*eeQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800)eeQ$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!sfXbvAcOUJhzGwWEpZ:localhost:8800(eeQ$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800 s gsv$eQay$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1061}{"auth_events": ["$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI"], "prev_events": ["$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI"], "type": "m.room.member", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-211", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-211:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041292050, "hashes": {"sha256": "Xjy+zASZtFPHmNkPZRPT3IIDqmmNHYLrwx8TM12++9g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vH3vENLUFk0K2WZVJOEE31xjgp55XfqbMN1bNOSkZwy96MGnWrNzLMIvYnBAZSI1Odxkl1CF5ZhAZY5gwv8FAA"}}, "unsigned": {"age_ts": 1570041292050}}i#eQa_$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1060}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-211:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041290592, "hashes": {"sha256": "zhl4TojhAGj3uYSpS2PZZ4aB0XBsCU4wcb4CqmD3ZCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yvF3F7O/0sW4iqqB+uDsL+sf0nzBzMcP/ud6Se52U2fGl9Jtxc0aAo9rruowYs6aieBaoDO3lVPXTn+EIoLhDQ"}}, "unsigned": {"age_ts": 1570041290592}} "eQ{$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "txn_id": "102", "stream_ordering": 1059}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k"], "type": "m.room.message", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041287875, "hashes": {"sha256": "0a+t564rezDfHdy2fJTqR0TI6k6Qp1J2DwOLlRzexn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NqE+m00bat53Pf2PUBRSmTvEkFpbmVRPCGk/aRlbW1g0Uox0O1ig+NmsKTa50LMYbItvPF6Vvo8fLPoEjt2CBA"}}, "unsigned": {"age_ts": 1570041287875}}!eQa7$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800{"token_id": 231, "stream_ordering": 1058}{"auth_events": ["$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk", "$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8", "$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A", "$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k"], "prev_events": ["$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8"], "type": "m.room.member", "room_id": "!sfXbvAcOUJhzGwWEpZ:localhost:8800", "sender": "@anon-20191002_181700-209:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-210", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-210:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041286814, "hashes": {"sha256": "qmVrOtyzJXKryQLuGJ7RPIYlo11fc+G8AnCLLJlpB9Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A8t7fhqvIOMgSN5Me43djoD50pccJ1ZTwBK14SPl4Jul9eFPAYJ/GYvXHlz/EJk+LuZRxBAeV+yE4PQkq91ZDQ"}}, "unsigned": {"age_ts": 1570041286814, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-209:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-209:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-209", "avatar_url": null}, "sender": "@anon-20191002_181700-209:localhost:8800"}]}} L  7 W % ] +({I=COj"8Tp>Z  wcou E  } K    Q1i"1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg@1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwD1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM ]1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU d1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk 1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak+1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns {1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM 1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU 1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ 1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs?1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM~1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So w1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY $1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA )21e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y O1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 91e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q 1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U ?21e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw 1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU '1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8i1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssi1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk01e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYI1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s71e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIc1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioB1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s~1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk11e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc*1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k,1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI&  D I H K Vo z :?JxF > I l meQ? $vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibilityeeQ/ $kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800m.room.join_rulesgeQ3 $ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800m.room.power_levels eQ']$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-215:localhost:8800joinaeQ' $qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800m.room.create eQ']$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800joingeQ3 $hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800m.room.guest_accessmeQ? $ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibilitygyeQ3 $GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_accessmxeQ? $OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibilityeweQ/ $IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rulesgveQ3 $A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levels ueQ']$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800joinateQ' $py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800m.room.createseQ']$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800invitegreQ3 $JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_accessmqeQ? $ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibility)epeQ/ $KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rulesgoeQ3 $W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levels neQ']$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800joinameQ' $bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.createe~eQ/ $VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800m.room.join_rulesg}eQ3 $IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels |eQ']$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800joina{eQ' $vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800m.room.create zeQ']$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800join  i 4 gih5 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZVcXBRRmdlRi5Ld0dsdn4KMDAyZnNpZ25hdHVyZSC7-jUKU9NYTOVklufnDf5gGiyL1nsbucv8MyAzrMBrjwo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8go 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13Zgo3 >>@ D  H F  D  F  HJ L J NRVZ<< Q  !KeqmSjifajNKxtgqhj:localhost:8800m&\<; Q  !icheSPMgpemswIdQkw:localhost:8800m&\4<: Q  !EyyNoldCLUdFHzXTDP:localhost:8800m&\<9 Q  !vpuivIQDEhyuhOLWpg:localhost:8800m&\c<8 Q  !uSBqTezaFcMnlowsEf:localhost:8800m&\ &<7 Q  !NrxQuziwSWzsHuXIlG:localhost:8800m&\4<6 Q  !CNFopUEQTFbzjmLvii:localhost:8800m&\<5 Q  !WhqVaRReBxJXADAyYD:localhost:8800m&\*<4 Q  !aLxrqpqLkbzyIxGgpk:localhost:8800m&\<3 Q  !BfEFIDBthhkweqfhir:localhost:8800m&\ 4<2 Q  !aaRwQZdNAliyvRHpjs:localhost:8800m&\ /<1 Q  !ZShBIxwbJmxjjZmoRQ:localhost:8800m&\<0 Q  !NNiyzThHMivrxhojfp:localhost:8800m&\b( Q!mMsxpaIlcykPuOnDyl:localhost:8800m&\ >' Q!VOhMAiLfKyTOZbmKGw:localhost:8800m&\>& Q!ffijTnPMbTrDXHqOXf:localhost:8800m&\ !!<% Q  !wLitJYvgvNJzanSIvO:localhost:8800m&\9<$ Q  !hWHyATwKfuznrqTiyu:localhost:8800m&\9># Q!cGkVFpidyBBxUxsszG:localhost:8800m&\ <" Q  !jveVPZSXJOJyNDebPO:localhost:8800m&\$ Q !bzPCFeFSMbCESvNbxl:localhost:8800m&\ )J< Q  !nxLxsxzliamzflrEBs:localhost:8800m&\C< Q  !RPfffkmSEbWggEjnoI:localhost:8800m&\X< Q !PCgUmZOwWmtDsuFqXg:localhost:8800m&\> Q !egbhiBqOGhloZzopol:localhost:8800m&\ 8< Q   !KdOYYnOuwAyQzqwUki:localhost:8800m&\ !> Q!XNfwczePlyYFWLCaui:localhost:8800m&\< Q   !PQZMTVTeCYqMZwkHvW:localhost:8800m&\< Q   !kpTPWDZdBbbXKLonZK:localhost:8800m&\< Q   !ITdmSQpjMnaPoHIbws:localhost:8800m&\< Q  !FAYqpziHeVZugCGaij:localhost:8800m&\a> Q!ZaOktTIVeRgBXxfubH:localhost:8800m&\ %3> Q!ZaltdIYVZjCHsCWTZD:localhost:8800m&\ j> Q!kwXxkGQFkaeenFTQJr:localhost:8800m&\ !> Q!EMhFCPhwmnWVnjtXXM:localhost:8800m&\ !> Q!GGXyLHdVXqhQjPRvac:localhost:8800m&\ v> Q!IfYYyzLHSOeyJBxBfn:localhost:8800m&\ !< Q  !ZYKvjplZRyIWvzkRyM:localhost:8800m&\>< Q   !ROoilpDjLJfjKfSPIi:localhost:8800m&\ m< Q  !wsvXTJXouVkEZcCFsD:localhost:8800m&\ < Q  !DoiZErAdypBUMZKaeJ:localhost:8800m&\j< Q  !qSUSLLWjDxcGibUZdT:localhost:8800m&\< Q  !RmwbYvIIQyPlHlClty:localhost:8800m&\< Q  !SvKwEALYoNreUvqAlp:localhost:8800m&\j< Q  !fOJLpnbtgKNxxVDquX:localhost:8800m&\y< Q  !vAUAIZrCnHTeMGeNuw:localhost:8800m&\1< Q  !EfJcWhdjNARbuHYrqU:localhost:8800m&\x< Q  !vRRNxNyGboLHNhqQvr:localhost:8800m&\y< Q  !NFWKQvZkIwvecnREOC:localhost:8800m&\1> Q!IPYMCBwcyNIzqdiIWv:localhost:8800m&\ > Q!HZqzpRgqekPOtxstVc:localhost:8800m&\ $> Q!FklhVuCInffbDxunWv:localhost:8800m&\ $ > Q!eJPTUgihvSwaOhIkrC:localhost:8800m&\ Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1le$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1ke$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41je$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1ie$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1he$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1ge$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1fe$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01ee$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41de$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw1ce$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1be$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1ae$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1`e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1_e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1^e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo1]e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1\e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1[e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1Ze$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk 1Ye$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o 1Xe$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY 1We$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ 1Ve$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ 1Ue$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q 1Te$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1Se$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1Re$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1Qe$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81Pe$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD41Oe$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1Ne$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1Me$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1Le$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1Ke$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1Je$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01Ie$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo1He$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41Ge$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw1Fe$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1Ee$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1De$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1Ce$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1Be$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1Ae$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01@e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1?e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY1>e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1=e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY1<e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1;e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01:e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM19e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim418e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs17e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ16e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw15e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek14e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U13e$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s12e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o011e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A10e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1/e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1.e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1-e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1,e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01+e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ1*e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1)e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM1(e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1'e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA1&e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1%e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ1$e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1#e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1"e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I  {(eQa$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1065}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ"], "type": "m.room.guest_access", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041298261, "hashes": {"sha256": "W3L4bmEneYlrvCmjeJEZRQznfrwQPEHcEy/m6bFnBiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oPWgbywP1Ziju07ts2Di9x5w0PyXRl3Xa8aoGo36RHQNprBwOFt+JE3vqsMuYgNq0CbAGIEPwXWIcWbNIUeMCA"}}, "unsigned": {"age_ts": 1570041298261}}'eQa$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1064}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew"], "type": "m.room.history_visibility", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041296072, "hashes": {"sha256": "r62lZQFWbpEWMPQqkHlD18aGJ3ZnNY5rScbF1vpNPrY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zd8SE0OTrSePycU5XPN109OrcuVWbAU9S5Vq4RKpwW6tjqV7xRTXFvUoCPPfuLXyXoX77AHyew63ZRPkO4lVAg"}}, "unsigned": {"age_ts": 1570041296072}}t&eQau$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1063}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo"], "type": "m.room.join_rules", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041294491, "hashes": {"sha256": "cSUr3FZkWXMaYfitiZU50g0y/FkpSgdFg+igEEgeIV4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "id56aYmVsTTyxbDWldKOBut8T5fd8nB5Sr0TJ5bClowoGnLabw2WzCMzQTBZ27QGv8J3OGqIHakM6KquwJFsAA"}}, "unsigned": {"age_ts": 1570041294491}}k%eQac$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1062}{"auth_events": ["$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "type": "m.room.power_levels", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"users": {"@anon-20191002_181700-211:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041293018, "hashes": {"sha256": "cP2L46mH22b8FRw6v06H/OQYW4eYtX7eLLhuMgHTqHI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/h2a6IG30GTjpVJOYVD72+7r8X7Exh67/DPROUvs5Vmjy+4YWa/2enDM/M2GhiPLMo8NyZ8voTrZtBiIoL4pAg"}}, "unsigned": {"age_ts": 1570041293018}} ,NC 8 - { " p  e ZOD9.|#qf VPeL$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEssha256vZ9ٚ]< mjD"oKVOeL$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQsha256~ajYŝ19( "6DVNeL$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3ksha256D.с+h_&^}(C9KyVMeL$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmosha256 nR/1Ԑ4_8!^T96Ak7ZjVLeL$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0sha256X1q0G摙uv=dĊ6=VKeL$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXosha256Y;9y\x>ɡ?A.4zVJeL$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4sha256e D5vV(mO fn _P.VIeL$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwsha256 @aL2lŦt$Sf0VHeL$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6csha256g\oE~v!÷{#'VGeL$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQsha256OA{N 3 _Z$VFeL$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUsha256>gd$͘c#U3-;adXEVEeL$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrssha256^пUl560PI,if{^VDeL$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wosha2561 h94F3( Dy ojVCeL$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0sha256WohXd=__|IU_R03ڽVBeL$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6iksha256T/oa$6pD =Wو)VAeL$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYsha256R@V?eL$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxYsha256x'T=N<-M;ۘ8oV>eL$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUsha2566XI;3"!š7Tf@4FMƵV=eL$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0sha256K]6G_)#'AoR R:aV<eL$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMsha256qtv)txH e[ O.@V;eL$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4sha256 \w ḐoݷnV:eL$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRssha256j4i/hyPփX8]d|nO1V9eL$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQsha256pHwe+{ ez2 7x;8TV8eL$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwsha256ʚ\4 7$@$6HV7eL$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7eksha256 bz^*-v@0=ZV6eL$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4Usha256k|K.\eM ^Y%rB"V5eL$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3ssha256>0E^ǮN4:[szȏi{V4eL$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0sha256DNdm7!IX!׻^{@ yOV3eL$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Asha256'5\MXȭVP簙n",UV2eL$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYsha256dqPoNDX %6'CSv,V1eL$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgsha256#q) ;Ѥp@ FVBxV0eL$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMsha256U1٤ii-㤦Zob p,jV/eL$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwsha256!װ`*`u/zMNI$R:V.eL$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0sha256 JS{Ű9F83E[Hܐ V-eL$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQsha256M2`р M OĸV,eL$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQsha256nZ\rVԣg煝_۷S<ܹV+eL$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMsha256ȋ(H2u3^z'~y'#V*eL$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMsha256$,{++M@\Engr!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMpDQ? e=!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMhCQ/ eQ']e6!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-214:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sj=Q3 e4!FklhVuCInffbDxunWv:localhost:8800m.room.guest_access$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A<Q? ee3!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgp;Q? e2!FklhVuCInffbDxunWv:localhost:8800m.room.history_visibility$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgh:Q/ e1!FklhVuCInffbDxunWv:localhost:8800m.room.join_rules$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMj9Q3 e0!FklhVuCInffbDxunWv:localhost:8800m.room.power_levels$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw 8Q']e/!FklhVuCInffbDxunWv:localhost:8800m.room.member@anon-20191002_181700-213:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0d7Q' e.!FklhVuCInffbDxunWv:localhost:8800m.room.create$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ86Q']ee-!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM 5Q']e+!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMj4Q3 e)!eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_access$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Ep3Q? e(!eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibility$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQh2Q/ e'!eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_rules$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew  4 h m9d]c@anon-20191002_181700-242:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwo127.0.0.1d]c@anon-20191002_181700-240:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6Two127.0.0.1d]c@anon-20191002_181700-238:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2go127.0.0.1d]c@anon-20191002_181700-239:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwo127.0.0.1d]c@anon-20191002_181700-241:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQo127.0.0.1a[a@anon-20191002_181700-23:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLTFJcFE5NEE2bmxwS1JEegowMDJmc2lnbmF0dXJlIPCcmXYygcWmlP2gjnkq3_v_1fayTCPkv-OUX-UvMx-WCg127.0.0.1d]c@anon-20191002_181700-237:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgo127.0.0.1d]c@anon-20191002_181700-236:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQo127.0.0.1d]c@anon-20191002_181700-235:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwo127.0.0.1d]c@anon-20191002_181700-234:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2Ao127.0.0.1d]c@anon-20191002_181700-233:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAo127.0.0.1 8l D `8\]c!E@anon-20191002_181700-220:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgoOOLATWHSMP127.0.0.1Perl + Net::Async::HTTP/0.44mvV[]c!E@anon-20191002_181700-219:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwoKBEVVOFICU127.0.0.1Perl + Net::Async::HTTP/0.44muZ]c!E@anon-20191002_181700-218:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQoEJUSKMCYXQ127.0.0.1Perl + Net::Async::HTTP/0.44mUY]c!E@anon-20191002_181700-217:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAoUMNJQPXSWW127.0.0.1Perl + Net::Async::HTTP/0.44mU>X]c!E@anon-20191002_181700-216:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0woRYBXPLVXBJ127.0.0.1Perl + Net::Async::HTTP/0.44m/W]c!E@anon-20191002_181700-215:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgoYMMAIPPEFO127.0.0.1Perl + Net::Async::HTTP/0.44m.V]c!E@anon-20191002_181700-214:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxsVHNLc3FRUUhBSnBXNiwKMDAyZnNpZ25hdHVyZSDzWR4PFGPlwQNuoufcESNczn0gJjjq5U8vhLLp8lmC3AoMEYMCWHAWP127.0.0.1Perl + Net::Async::HTTP/0.44m U]c!E@anon-20191002_181700-213:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBqSkBkdkBPR3EzaUx4eDUKMDAyZnNpZ25hdHVyZSBVuF6NBtiMz2bEdBixHOtv14eE0aYcLIdRBBgkOtjMIQoLEQWCYQYGH127.0.0.1Perl + Net::Async::HTTP/0.44m IT]c!E@anon-20191002_181700-212:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHUjUyZPTkhCdTZQJlozd3AKMDAyZnNpZ25hdHVyZSDa3KCf8uR1pbc8KNvlnD4kU4zB76gI3XvbVm_g7R-GrAoRTYZTLKABN127.0.0.1Perl + Net::Async::HTTP/0.44m]S]c!E@anon-20191002_181700-211:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlOUGI3cm0zS0NuM28wRy4KMDAyZnNpZ25hdHVyZSD4OpM6ZfPo7DlTj2wvV2Lfc6R4avGRyYucfSs91WVPAwoFQOBFRKZSM127.0.0.1Perl + Net::Async::HTTP/0.44mތ a} { y w u sqomkigeca~|eeQ$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~{eeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800~zeeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~yeeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~xeeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~weeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800~veeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~ueeQ$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~teeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~seeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~reeQ$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~qeeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~peeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~oeeQ$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~neeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~meeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~leeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~keeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~jeeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~ieeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800~heeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800~geeQ$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~feeQ$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800~eeeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800~deeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~ceeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~beeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800~aeeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800~`eeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800~_eeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo!eJPTUgihvSwaOhIkrC:localhost:8800~^eeQ$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800 P uP+eQy$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "txn_id": "104", "stream_ordering": 1068}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM"], "type": "m.room.message", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"body": "After invite", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041300231, "hashes": {"sha256": "YVdUfDVUIaoVji4zlm5rLFLtqIdaZEGKqKHuEPXaQv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2KxgDGjLwb9ug+03BMZMhLQSLWpiPmnI2/FozccAXz2qvBNmSZ/c0JhR4kgg19XDOuNuScOy7pbo5vDY4nWBDg"}}, "unsigned": {"age_ts": 1570041300231}}*eQa7$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "stream_ordering": 1067}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA"], "type": "m.room.member", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-212", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-212:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041299533, "hashes": {"sha256": "vgv8ECowjC4SeeAk+VUHggDnq3v+nk1o73jpIY/ynNk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rM11NnTgS36OI40SzK9aIkAQhNDsYroxKuwiiygTZZ+GHvTt6Zs5p0AJEepSa+XL/kA2oNaRI+Aqo0bLbBaLBQ"}}, "unsigned": {"age_ts": 1570041299533, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-211:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-211:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-211", "avatar_url": null}, "sender": "@anon-20191002_181700-211:localhost:8800"}]}})eQw$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 232, "txn_id": "103", "stream_ordering": 1066}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"], "prev_events": ["$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E"], "type": "m.room.message", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-211:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041298930, "hashes": {"sha256": "w5XrgHTAGCJ9yp17ZJVbXqs3t2ZWblza6ZVXv2dn+FE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+ynQx1QewGbGiKxBT/R2iIhwWVuPlVFnrzc0eUHjDNg/62QOcxrDheBox6+70cdG6W31q2ZJq5CxyxomUcegDw"}}, "unsigned": {"age_ts": 1570041298930}} -RM H C > 9 4/*|%w rmhc TQe!EfJcWhdjNARbuHYrqU:localhost:8800$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsTQe!EfJcWhdjNARbuHYrqU:localhost:8800$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIT Qe !EfJcWhdjNARbuHYrqU:localhost:8800$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkT Qe !EfJcWhdjNARbuHYrqU:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9oT Qe !EfJcWhdjNARbuHYrqU:localhost:8800$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYT Qe !vRRNxNyGboLHNhqQvr:localhost:8800$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQT Qe !vRRNxNyGboLHNhqQvr:localhost:8800$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QTQe!vRRNxNyGboLHNhqQvr:localhost:8800$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMTQe!vRRNxNyGboLHNhqQvr:localhost:8800$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgTQe!vRRNxNyGboLHNhqQvr:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoTQe!vRRNxNyGboLHNhqQvr:localhost:8800$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8TQe!NFWKQvZkIwvecnREOC:localhost:8800$Z1pbz4OPCbNrADxpDdYFj731zJFx2iLp29kJgdzLoZoTQe!NFWKQvZkIwvecnREOC:localhost:8800$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEATQe!NFWKQvZkIwvecnREOC:localhost:8800$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsTQe!NFWKQvZkIwvecnREOC:localhost:8800$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQTQe!NFWKQvZkIwvecnREOC:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kTQe!NFWKQvZkIwvecnREOC:localhost:8800$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoT~Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0T}Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4T|Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cT{Qe!IPYMCBwcyNIzqdiIWv:localhost:8800$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQTzQe!IPYMCBwcyNIzqdiIWv:localhost:8800$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUTyQe!IPYMCBwcyNIzqdiIWv:localhost:8800$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsTxQe!IPYMCBwcyNIzqdiIWv:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoTwQe!IPYMCBwcyNIzqdiIWv:localhost:8800$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0TvQe!HZqzpRgqekPOtxstVc:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikTuQe!HZqzpRgqekPOtxstVc:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkATtQe!HZqzpRgqekPOtxstVc:localhost:8800$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUTsQe!HZqzpRgqekPOtxstVc:localhost:8800$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0TrQe!HZqzpRgqekPOtxstVc:localhost:8800$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMTqQe!HZqzpRgqekPOtxstVc:localhost:8800$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4TpQe!HZqzpRgqekPOtxstVc:localhost:8800$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRsToQe!HZqzpRgqekPOtxstVc:localhost:8800$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQTnQe!HZqzpRgqekPOtxstVc:localhost:8800$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwTmQe!FklhVuCInffbDxunWv:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekTlQe!FklhVuCInffbDxunWv:localhost:8800$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3sTkQe!FklhVuCInffbDxunWv:localhost:8800$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9ATjQe!FklhVuCInffbDxunWv:localhost:8800$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYTiQe!FklhVuCInffbDxunWv:localhost:8800$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgThQe!FklhVuCInffbDxunWv:localhost:8800$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMTgQe!FklhVuCInffbDxunWv:localhost:8800$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-JwTfQe!FklhVuCInffbDxunWv:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0TeQe!FklhVuCInffbDxunWv:localhost:8800$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQTdQe!eJPTUgihvSwaOhIkrC:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQTcQe!eJPTUgihvSwaOhIkrC:localhost:8800$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM GtB ] } vKQW %b0 j8p J  P+ |  h6n<  \ * \ \ * D 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc 1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4b 21e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8 1e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc 1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc 1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgx1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgw1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgv0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc10e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc00e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc/1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE_1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE^1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE]1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdoh1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdog1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ 1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs 1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8 1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8 1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M U1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M T1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M S1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUZ1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUY1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU[1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU>d1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMv1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMu21e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas 1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas 1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas  | k/eQac$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1072}{"auth_events": ["$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "type": "m.room.power_levels", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"users": {"@anon-20191002_181700-213:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041303802, "hashes": {"sha256": "JFxfzcx0orjtmhvfpq8+Xphkm+xNctetUmtwmRGhBUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W9jnrGZDgI0yEFmlGMaiAUJ/vwYIxCRXiPw2I57f0TDtfrrNDkYIgIPdMrymFUrGvpVdrfaTFkOnjE5k49c7BA"}}, "unsigned": {"age_ts": 1570041303802}}v.eQay$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1071}{"auth_events": ["$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ"], "prev_events": ["$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ"], "type": "m.room.member", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-213", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-213:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041303301, "hashes": {"sha256": "mnasQX8o8e/r81rwbd8zerOKF0W2XCX7aDJiQZG6iD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TE/eZCsc9b637M6Wpoa18IsXSAxic4QX3qxYRZWGhWpfqc0uZUC4RL1/JngAoglCK/EHUK2pDZ4cKFNGGmLAAA"}}, "unsigned": {"age_ts": 1570041303301}}i-eQa_$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1070}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-213:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041302437, "hashes": {"sha256": "VGsy63GyIbHDj+CE9NnJV1kJBVMbCmoALQ91aM6eD6s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AcqCLFY1+rHiNRi5yA8qsZQO6BmveCIHH/lyta7NvolefsM73agjD+DfzQUhKpc64ZChQrJ9nzP53K9OUNHMBg"}}, "unsigned": {"age_ts": 1570041302437}},eQa?$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800{"token_id": 233, "stream_ordering": 1069}{"auth_events": ["$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo", "$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI", "$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew"], "prev_events": ["$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM"], "type": "m.room.member", "room_id": "!eJPTUgihvSwaOhIkrC:localhost:8800", "sender": "@anon-20191002_181700-212:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-212", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-212:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041300724, "hashes": {"sha256": "Gh7kWjJb06IVFG471eCLBtiK9t0A04cCTspAnwesMqU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2i+HcBXijUD5UWTOZeyj7Bj0PRIRytFRSoYS6RcQ6V5EsbRgJWSeZ5BbhKZzEV5s0Cuk6a680HdqQZKfLMHiDA"}}, "unsigned": {"age_ts": 1570041300724, "replaces_state": "$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM"}}  3{3eQa$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1076}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY"], "type": "m.room.guest_access", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041306897, "hashes": {"sha256": "aDlbhuOJOpBa25MdHcJ0/DrhuEEBEEY2ck8krnqbcZ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9veAUiOLgRRbPYYPiXRgkW6j6TMDFE1vW7S5uN/T432KsvZkD/7SelYyaUN0qKcV2v4lc+QbY/wSUYdKk4CoBg"}}, "unsigned": {"age_ts": 1570041306897}}H2eQa$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1075}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg"], "type": "m.room.history_visibility", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041306229, "hashes": {"sha256": "YaMWAXdcXvaXuyXBP8aflwNLNuzFdL7AxhSh6eQd0Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sklkwhW+/MBo68Mo8Fr2ZOte38WLIdd3gZ0LjCzX3nCCaqn3RPBdBRa4pw/Daw7H8e6KPF6v7SxGc3I34YZ3Ag"}}, "unsigned": {"age_ts": 1570041306229, "replaces_state": "$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg"}}1eQa$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1074}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM"], "type": "m.room.history_visibility", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041305017, "hashes": {"sha256": "VNlDPFlFt6ADWPbmWIkzwKzPbrCFaGuN363xUwshH8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uE93bJ4DQthnRN/xV8srM2XRoHqmWe0kDhaV1U+VhMqcUWJ/8h6RyNkaTJGCIY8bGGwivART2rE3goAaNAI7Ag"}}, "unsigned": {"age_ts": 1570041305017}}t0eQau$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1073}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw"], "type": "m.room.join_rules", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041304425, "hashes": {"sha256": "R5naqAOg//Q39HVqNsssZsyIfk3yEzbHqvDadf6/77o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3y+ntNr8k2/mDcofV3t4vTGHaBpeuC0E3hJz+bKub6XwWl57LPA2Ug+GEn3NrGd4V81rj19PbbNk//YIAQ1YAw"}}, "unsigned": {"age_ts": 1570041304425}} O uO 6eQ{$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "txn_id": "106", "stream_ordering": 1079}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s"], "type": "m.room.message", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041308757, "hashes": {"sha256": "gzaPnxLnQNRB7NBiPeaJzS04BmSFxd80hfk/7+QmQNY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a9elOwhoIqfcO7CyuPflNCjyQvDcOwCGaXyE4A+C2L3OXTtgPVikYGBH8ORhON+5bKV8WN01VvXKa3sKYMMWBQ"}}, "unsigned": {"age_ts": 1570041308757}}5eQa7$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "stream_ordering": 1078}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0"], "type": "m.room.member", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-214", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-214:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041308158, "hashes": {"sha256": "SH/aPstYuh/OKMwKrH+52Owti7+7Hw4wBeeFlG2BE8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2i7uy4CMEu6cjhYk52RzRRbHaMttneg8YtNugElScbo1NMQYuvtlwLONFNA5melq9UKHZsiD5+eXysDWBti/Bg"}}, "unsigned": {"age_ts": 1570041308158, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-213:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-213:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-213", "avatar_url": null}, "sender": "@anon-20191002_181700-213:localhost:8800"}]}}4eQw$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o0!FklhVuCInffbDxunWv:localhost:8800{"token_id": 234, "txn_id": "105", "stream_ordering": 1077}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0"], "prev_events": ["$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A"], "type": "m.room.message", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-213:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041307551, "hashes": {"sha256": "s7LLZ/5IxvRM6n+9K5zWuqzykkA7mKe2And15Tx6q9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "krF0gEVAqnIhKWJ6eKs4fzuGAbS2reITJ9WTbptlDvoWRCLvfklLY+vscv9nizteIMHgqzjHDrUzJ61RWQ4WCA"}}, "unsigned": {"age_ts": 1570041307551}} -RM H C > 9 4/*|%w rmhc T<Qee?Q ]$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0m.room.history_visibility!HZqzpRgqekPOtxstVc:localhost:8800mALmBS@anon-20191002_181700-215:localhost:8800,=e?Q ]$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMm.room.history_visibility!HZqzpRgqekPOtxstVc:localhost:8800ma@anon-20191002_181700-215:localhost:8800$<e/Q ]$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4m.room.join_rules!HZqzpRgqekPOtxstVc:localhost:8800m9Jm:@anon-20191002_181700-215:localhost:8800&;e3Q ]$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRsm.room.power_levels!HZqzpRgqekPOtxstVc:localhost:8800m5Zm7~@anon-20191002_181700-215:localhost:8800 :e'Q ]$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQm.room.member!HZqzpRgqekPOtxstVc:localhost:8800m2m3@@anon-20191002_181700-215:localhost:88009 e'Q  ]$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwm.room.create!HZqzpRgqekPOtxstVc:localhost:8800m/m0{@anon-20191002_181700-215:localhost:8800 8e'Q ] $CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekm.room.member!FklhVuCInffbDxunWv:localhost:8800 m(m(g@anon-20191002_181700-214:localhost:8800!7e)Q ] $CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4Um.room.message!FklhVuCInffbDxunWv:localhost:8800 m&Um&Y@anon-20191002_181700-213:localhost:8800 -RM H C > 9 4/*|%w rmhc TiQed!vAUAIZrCnHTeMGeNuw:localhost:8800$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUThQec!vAUAIZrCnHTeMGeNuw:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMTgQeb!vAUAIZrCnHTeMGeNuw:localhost:8800$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7ITfQea!EfJcWhdjNARbuHYrqU:localhost:8800$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNoTeQe`!EfJcWhdjNARbuHYrqU:localhost:8800$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2JwTdQe_!EfJcWhdjNARbuHYrqU:localhost:8800$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsTcQe^!EfJcWhdjNARbuHYrqU:localhost:8800$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTITbQe]!EfJcWhdjNARbuHYrqU:localhost:8800$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkTaQe\!EfJcWhdjNARbuHYrqU:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9oT`Qe[!EfJcWhdjNARbuHYrqU:localhost:8800$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYT_QeZ!vRRNxNyGboLHNhqQvr:localhost:8800$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQT^QeY!vRRNxNyGboLHNhqQvr:localhost:8800$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQT]QeX!vRRNxNyGboLHNhqQvr:localhost:8800$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QT\QeW!vRRNxNyGboLHNhqQvr:localhost:8800$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMT[QeV!vRRNxNyGboLHNhqQvr:localhost:8800$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgTZQeU!vRRNxNyGboLHNhqQvr:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoTYQeT!vRRNxNyGboLHNhqQvr:localhost:8800$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8TXQeS!NFWKQvZkIwvecnREOC:localhost:8800$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4TWQeR!NFWKQvZkIwvecnREOC:localhost:8800$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEATVQeQ!NFWKQvZkIwvecnREOC:localhost:8800$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsTUQeP!NFWKQvZkIwvecnREOC:localhost:8800$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQTTQeO!NFWKQvZkIwvecnREOC:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kTSQeN!NFWKQvZkIwvecnREOC:localhost:8800$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmoTRQeM!IPYMCBwcyNIzqdiIWv:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0TQQeL!IPYMCBwcyNIzqdiIWv:localhost:8800$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoTPQeK!IPYMCBwcyNIzqdiIWv:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4TOQeJ!IPYMCBwcyNIzqdiIWv:localhost:8800$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBwTNQeI!IPYMCBwcyNIzqdiIWv:localhost:8800$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cTMQeH!IPYMCBwcyNIzqdiIWv:localhost:8800$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQTLQeG!IPYMCBwcyNIzqdiIWv:localhost:8800$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUTKQeF!IPYMCBwcyNIzqdiIWv:localhost:8800$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsTJQeE!IPYMCBwcyNIzqdiIWv:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoTIQeD!IPYMCBwcyNIzqdiIWv:localhost:8800$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0THQeC!HZqzpRgqekPOtxstVc:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikTGQeB!HZqzpRgqekPOtxstVc:localhost:8800$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYTFQeA!HZqzpRgqekPOtxstVc:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkATEQe@!HZqzpRgqekPOtxstVc:localhost:8800$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxYTDQe?!HZqzpRgqekPOtxstVc:localhost:8800$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUTCQe>!HZqzpRgqekPOtxstVc:localhost:8800$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0TBQe=!HZqzpRgqekPOtxstVc:localhost:8800$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMTAQeQe9!HZqzpRgqekPOtxstVc:localhost:8800$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwT=Qe8!FklhVuCInffbDxunWv:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek  | k:eQac$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1083}{"auth_events": ["$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "type": "m.room.power_levels", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"users": {"@anon-20191002_181700-215:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041312602, "hashes": {"sha256": "TEbM+INOUgrZx+6TCOlx31nvm45gl30VksGhaqTgozA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mGg9VGsEr0KNld39S0laCchGLa6s0H8UwHKs2AkAekpHRhtfxMsTEAyvAoJE9px34eWed3RKJdzONR6Y5r+KDA"}}, "unsigned": {"age_ts": 1570041312602}}v9eQay$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1082}{"auth_events": ["$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw"], "prev_events": ["$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw"], "type": "m.room.member", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-215", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-215:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041311934, "hashes": {"sha256": "1VoS9ivr5hr4akUvSz8V28lWEmWfUiBGKYfEP6jfmYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lxb02tDueoLQdvVVkPB+zxUMIsgosW4WZHVfrDe0nnO2d5+42lDOSrHjGpPVc0TLqCxXErI+fqlhkAgTd2r4Bw"}}, "unsigned": {"age_ts": 1570041311934}}i8eQa_$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1081}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-215:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041311119, "hashes": {"sha256": "U8jhx4jLdfkrm26U8y963OtnEEhxR9QRVjAVMlATMrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "feji4SnLmYbR7+DQl6j0A1V0MOUBm2c3yqLuB+ARqnq3tdqRzwBc8cP2yKlHhb5+K1CKvLXNSN8NJ8q5+33yAw"}}, "unsigned": {"age_ts": 1570041311119}}7eQa?$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800{"token_id": 235, "stream_ordering": 1080}{"auth_events": ["$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw", "$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ", "$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM"], "prev_events": ["$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U"], "type": "m.room.member", "room_id": "!FklhVuCInffbDxunWv:localhost:8800", "sender": "@anon-20191002_181700-214:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-214", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-214:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041309198, "hashes": {"sha256": "8Zai3aKTTJWrhx2HOzIbTnGjdbmnVLwvjrZ19QxzevU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "04IErPTr4APLsjrdUnFyb1mXFq3+pxAe+A1SXwubVojE8ZET7VdJe8qP8iqaD8Gq7JunKvA+3SomHxwuimFBAw"}}, "unsigned": {"age_ts": 1570041309198, "replaces_state": "$0MXOPpYwuUWOXhLix65ONBw6W5bT_o7Tc3obyI9py3s"}} 9r  R 6oS7, e]]Q$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0@anon-20191002_181700-239:localhost:8800@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800leaveC e]]Q=$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc@anon-20191002_181700-239:localhost:8800@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800joinanon-20191002_181700-239C e]]Q=$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8@anon-20191002_181700-238:localhost:8800@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800joinanon-20191002_181700-238C e]]Q=$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM@anon-20191002_181700-237:localhost:8800@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800joinanon-20191002_181700-237C e]]Q=$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE@anon-20191002_181700-236:localhost:8800@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800joinanon-20191002_181700-236C e]]Q=$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4@anon-20191002_181700-234:localhost:8800@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800joinanon-20191002_181700-234C e]]Q=$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI@anon-20191002_181700-232:localhost:8800@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800joinanon-20191002_181700-232C e]]Q=$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg@anon-20191002_181700-231:localhost:8800@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800joinanon-20191002_181700-231C e]]Q=$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0@anon-20191002_181700-228:localhost:8800@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800joinanon-20191002_181700-228C e]]Q=$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM@anon-20191002_181700-226:localhost:8800@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800joinanon-20191002_181700-226C e]]Q=$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o@anon-20191002_181700-224:localhost:8800@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800joinanon-20191002_181700-224C e]]Q=$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho@anon-20191002_181700-222:localhost:8800@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800joinanon-20191002_181700-222C e]]Q=$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k@anon-20191002_181700-220:localhost:8800@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800joinanon-20191002_181700-220C e]]Q=$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0@anon-20191002_181700-218:localhost:8800@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800joinanon-20191002_181700-218E e]]Q=$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4@anon-20191002_181700-218:localhost:8800@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800inviteanon-20191002_181700-218C e]]Q=$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo@anon-20191002_181700-217:localhost:8800@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800joinanon-20191002_181700-217C e]]Q=$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik@anon-20191002_181700-216:localhost:8800@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800joinanon-20191002_181700-216E~ e]]Q=$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA@anon-20191002_181700-216:localhost:8800@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800inviteanon-20191002_181700-216C} e]]Q=$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ@anon-20191002_181700-215:localhost:8800@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800joinanon-20191002_181700-215C| e]]Q=$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek@anon-20191002_181700-214:localhost:8800@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800joinanon-20191002_181700-214 MwtY( uZ)vE*m< xG R ! ] , h 7  X = y H S"a0l; wFQ 0]I@anon-20191002_181700-260:localhost:8800<0]H@anon-20191002_181700-259:localhost:8800;0]@anon-20191002_181700-201:localhost:88000]G@anon-20191002_181700-258:localhost:8800:0]F@anon-20191002_181700-257:localhost:880090]E@anon-20191002_181700-255:localhost:880080]D@anon-20191002_181700-254:localhost:880070]C@anon-20191002_181700-253:localhost:880060]B@anon-20191002_181700-252:localhost:880050]A@anon-20191002_181700-251:localhost:880040]@@anon-20191002_181700-250:localhost:880031@34:localhost:88000]@anon-20191002_181700-207:localhost:88001@33:localhost:88000]@anon-20191002_181700-206:localhost:88001@32:localhost:88000]@anon-20191002_181700-205:localhost:88001 @31:localhost:88000] @anon-20191002_181700-204:localhost:88001 @30:localhost:88000] @anon-20191002_181700-203:localhost:88001 @29:localhost:88000]@anon-20191002_181700-202:localhost:88001@28:localhost:88001@27:localhost:88000]@anon-20191002_181700-200:localhost:88001@26:localhost:88000]@anon-20191002_181700-199:localhost:88001@25:localhost:88000]@anon-20191002_181700-198:localhost:88001@24:localhost:88000]@anon-20191002_181700-197:localhost:88001@23:localhost:88000]?@anon-20191002_181700-249:localhost:880020]>@anon-20191002_181700-248:localhost:880010]=@anon-20191002_181700-246:localhost:880000]<@anon-20191002_181700-247:localhost:8800/0];@anon-20191002_181700-245:localhost:8800.0]:@anon-20191002_181700-244:localhost:8800-0]9@anon-20191002_181700-243:localhost:8800,0]8@anon-20191002_181700-242:localhost:8800+0]7@anon-20191002_181700-241:localhost:8800*0]6@anon-20191002_181700-240:localhost:8800)0]5@anon-20191002_181700-239:localhost:8800(0]4@anon-20191002_181700-238:localhost:8800'0]3@anon-20191002_181700-237:localhost:8800&12@36:localhost:8800%0]1@anon-20191002_181700-236:localhost:8800$10@35:localhost:8800#0]/@anon-20191002_181700-235:localhost:8800"0].@anon-20191002_181700-234:localhost:8800!0]-@anon-20191002_181700-233:localhost:8800 0],@anon-20191002_181700-232:localhost:88000]+@anon-20191002_181700-231:localhost:88000]*@anon-20191002_181700-230:localhost:88000])@anon-20191002_181700-229:localhost:88000](@anon-20191002_181700-228:localhost:88000]'@anon-20191002_181700-227:localhost:88000]&@anon-20191002_181700-226:localhost:88000]%@anon-20191002_181700-225:localhost:88000]$@anon-20191002_181700-224:localhost:88000]#@anon-20191002_181700-223:localhost:88000]"@anon-20191002_181700-222:localhost:88000]!@anon-20191002_181700-221:localhost:88000] @anon-20191002_181700-220:localhost:88000]@anon-20191002_181700-219:localhost:88000]@anon-20191002_181700-218:localhost:88000]@anon-20191002_181700-217:localhost:88000]@anon-20191002_181700-216:localhost:88000]@anon-20191002_181700-215:localhost:88000]@anon-20191002_181700-214:localhost:8800 0]@anon-20191002_181700-213:localhost:8800 0]@anon-20191002_181700-212:localhost:8800 0]@anon-20191002_181700-211:localhost:8800 0]@anon-20191002_181700-209:localhost:8800 0]@anon-20191002_181700-210:localhost:88000]@anon-20191002_181700-208:localhost:8800 MW)qC ] /  w I  c 5  { L  a 2 vG/sDT$b1~MX= Y( zI{1@33:localhost:88001@32:localhost:88001@31:localhost:88000]@anon-20191002_181700-201:localhost:88001@30:localhost:88000]@anon-20191002_181700-205:localhost:88000]@anon-20191002_181700-204:localhost:88000]@anon-20191002_181700-197:localhost:88000]@anon-20191002_181700-196:localhost:88000]@anon-20191002_181700-195:localhost:88000]@anon-20191002_181700-200:localhost:88001@17:localhost:88000]@anon-20191002_181700-194:localhost:88001@16:localhost:88000]@anon-20191002_181700-193:localhost:88001@15:localhost:88000]@anon-20191002_181700-192:localhost:88000]@anon-20191002_181700-191:localhost:8800/]@anon-20191002_181700-190:localhost:8800z/]@anon-20191002_181700-189:localhost:8800y0]@anon-20191002_181700-188:localhost:8800/]@anon-20191002_181700-187:localhost:8800/]@anon-20191002_181700-186:localhost:8800|1@14:localhost:8800~1s@13:localhost:8800r.]n@anon-20191002_181700-182:localhost:8800m.]k@anon-20191002_181700-180:localhost:8829j.]j@anon-20191002_181700-179:localhost:8800h.]j@anon-20191002_181700-178:localhost:8800i.]h@anon-20191002_181700-181:localhost:8800d.]^@anon-20191002_181700-166:localhost:8829].]]@anon-20191002_181700-165:localhost:8800\.][@anon-20191002_181700-161:localhost:8800Z/X@3:localhost:8800W.]W@anon-20191002_181700-146:localhost:8800V.]V@anon-20191002_181700-148:localhost:8829U.]U@anon-20191002_181700-147:localhost:8829S.]U@anon-20191002_181700-139:localhost:8829R.]P@anon-20191002_181700-128:localhost:8800O.]P@anon-20191002_181700-127:localhost:8800N.]K@anon-20191002_181700-126:localhost:8800J.]J@anon-20191002_181700-123:localhost:8800I.]I@anon-20191002_181700-115:localhost:8800H.]H@anon-20191002_181700-114:localhost:8800G.]G@anon-20191002_181700-119:localhost:8800F.]F@anon-20191002_181700-117:localhost:8800E.]C@anon-20191002_181700-111:localhost:8829B.]B@anon-20191002_181700-100:localhost:8800A-[@@anon-20191002_181700-96:localhost:8800?-[>@anon-20191002_181700-90:localhost:8800=-[:@anon-20191002_181700-75:localhost:88009-[9@anon-20191002_181700-74:localhost:88008-[8@anon-20191002_181700-72:localhost:88297-[7@anon-20191002_181700-71:localhost:88005-[7@anon-20191002_181700-70:localhost:88006-[5@anon-20191002_181700-67:localhost:88003-[5@anon-20191002_181700-61:localhost:88004-[5@anon-20191002_181700-60:localhost:88002-[1@anon-20191002_181700-66:localhost:88290-[/@anon-20191002_181700-65:localhost:8800.-[-@anon-20191002_181700-64:localhost:8800,-[$@anon-20191002_181700-59:localhost:8800#-[#@anon-20191002_181700-53:localhost:8800!-[#@anon-20191002_181700-52:localhost:8800"-[#@anon-20191002_181700-48:localhost:8800 -[@anon-20191002_181700-35:localhost:8800-[@anon-20191002_181700-34:localhost:8800-[@anon-20191002_181700-39:localhost:8800-[@anon-20191002_181700-38:localhost:8800-[@anon-20191002_181700-36:localhost:8800-[ @anon-20191002_181700-33:localhost:8800 -[ @anon-20191002_181700-32:localhost:8800 -[ @anon-20191002_181700-16:localhost:8800 -[ @anon-20191002_181700-31:localhost:8800-[@anon-20191002_181700-15:localhost:8800-[@anon-20191002_181700-11:localhost:8800=@spyglass:localhost:8800 GS"tCm< xG R ! ] , h 7  s B  ~ M X'c2n= yHNY(0]G@anon-20191002_181700-317:localhost:8800F0]@anon-20191002_181700-211:localhost:88000]@anon-20191002_181700-209:localhost:88000]@anon-20191002_181700-222:localhost:88000]@anon-20191002_181700-214:localhost:88000]@anon-20191002_181700-212:localhost:88000]@anon-20191002_181700-220:localhost:88000]@anon-20191002_181700-210:localhost:88001@34:localhost:88000]@anon-20191002_181700-208:localhost:88000]@anon-20191002_181700-207:localhost:88000]E@anon-20191002_181700-316:localhost:8800D0]:@anon-20191002_181700-300:localhost:880090]9@anon-20191002_181700-299:localhost:880080]6@anon-20191002_181700-298:localhost:880050]4@anon-20191002_181700-297:localhost:880030]1@anon-20191002_181700-294:localhost:880000].@anon-20191002_181700-290:localhost:8800-0]*@anon-20191002_181700-286:localhost:8800)0]*@anon-20191002_181700-280:localhost:8800'0]*@anon-20191002_181700-279:localhost:8800(0]&@anon-20191002_181700-284:localhost:8800%0]%@anon-20191002_181700-283:localhost:8800$0]"@anon-20191002_181700-277:localhost:8800!0]!@anon-20191002_181700-269:localhost:88000]!@anon-20191002_181700-268:localhost:8800 0]@anon-20191002_181700-276:localhost:88000]@anon-20191002_181700-266:localhost:88000]@anon-20191002_181700-262:localhost:88000]@anon-20191002_181700-267:localhost:88000]@anon-20191002_181700-260:localhost:88000]@anon-20191002_181700-265:localhost:88000]@anon-20191002_181700-258:localhost:88000]@anon-20191002_181700-263:localhost:88000]@anon-20191002_181700-261:localhost:88000]@anon-20191002_181700-253:localhost:88000] @anon-20191002_181700-259:localhost:8800 0] @anon-20191002_181700-252:localhost:88000] @anon-20191002_181700-250:localhost:8800 0]@anon-20191002_181700-257:localhost:88000]@anon-20191002_181700-251:localhost:88000]@anon-20191002_181700-249:localhost:88000]@anon-20191002_181700-248:localhost:88000]@anon-20191002_181700-246:localhost:88000]@anon-20191002_181700-247:localhost:88000]@anon-20191002_181700-245:localhost:88000]@anon-20191002_181700-244:localhost:88000]@anon-20191002_181700-243:localhost:88000]@anon-20191002_181700-242:localhost:88000]@anon-20191002_181700-237:localhost:88000]@anon-20191002_181700-241:localhost:88000]@anon-20191002_181700-239:localhost:88000]@anon-20191002_181700-231:localhost:88000]@anon-20191002_181700-235:localhost:88000]@anon-20191002_181700-233:localhost:88000]@anon-20191002_181700-230:localhost:88000]@anon-20191002_181700-236:localhost:88000]@anon-20191002_181700-229:localhost:88000]@anon-20191002_181700-228:localhost:88000]@anon-20191002_181700-227:localhost:88000]@anon-20191002_181700-225:localhost:88000]@anon-20191002_181700-223:localhost:88000]@anon-20191002_181700-221:localhost:88000]@anon-20191002_181700-219:localhost:88000]@anon-20191002_181700-218:localhost:88000]@anon-20191002_181700-226:localhost:88000]@anon-20191002_181700-216:localhost:88000]@anon-20191002_181700-224:localhost:88000]@anon-20191002_181700-217:localhost:88000]@anon-20191002_181700-215:localhost:88000]@anon-20191002_181700-213:localhost:8800 a} { y w u sqomkigeca~eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~ eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800~eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800~~eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ!HZqzpRgqekPOtxstVc:localhost:8800~}eeQ$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800  4{>eQa$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1087}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0"], "type": "m.room.guest_access", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041316494, "hashes": {"sha256": "h4qjVrJfpVPu+Gjy6n1hkYJkcV+YR0gAw5rFJdDzQUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8qrOqMKEK+6Xk5V7KkKmfS5ESCuNtqtqBupYlfhHNJvysXWDpubiOqYxJU8DJlpqpJwcIlMKz8FM6tI4S4GLBQ"}}, "unsigned": {"age_ts": 1570041316494}}G=eQa$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1086}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM"], "type": "m.room.history_visibility", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041315660, "hashes": {"sha256": "AHkIn7NYIWfx1zfX+snHcMXKG+yKYXhE5LZ/OUhBP/A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y3eDUuUDAMubylTZcRBHBf8dMA/I3aoog7Ez/iVFOuv9wpn/1vgt18LuoNND6VWK3LgyPEnk/QqhycV6W6q3BA"}}, "unsigned": {"age_ts": 1570041315660, "replaces_state": "$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM"}}<eQa$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1085}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4"], "type": "m.room.history_visibility", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041314402, "hashes": {"sha256": "T5DInfFN5dtoMIZmd76/xF0rAiFYXHfovClqthGdEM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lZQTMreJHubm+YDuhd0XZC3VN4CJBNBAD/vSlsEMQPtGczItD9EeIi4bInBH7icCuru8vrrRZEzmXVfc5+dIBw"}}, "unsigned": {"age_ts": 1570041314402}}t;eQau$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1084}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs"], "type": "m.room.join_rules", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041313610, "hashes": {"sha256": "sSIvaHQUiXag+ZJMOyt+lxwsK3M98xTc1Cq06uGFqSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fd8IDLGbvA5MJV2YH9XV8xGXfNn+Lk94Du+MM7AkEyEqAi3k1D6f846M8H1RkteNJ3TWXQkVCGR4fL2Jx6ExAg"}}, "unsigned": {"age_ts": 1570041313610}} J S ! Y ' _ -e3k9&q?X wE^}K8R, p> w E  } K 1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM t1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI o1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYob0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcB1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYU1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsR1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk #1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kk1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE^1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M;1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY 1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550R1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I"1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ -1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYon1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI?1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA 61e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ (1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUP1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA.1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsN1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg/j11e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEt1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMF1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw 1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU 40e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U `1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qp1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4j "]! , 1 U Z ej'Qmx 0X]iQ3 e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU Q']e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMcQ' e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.create$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7IoQ? e!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2JwoQ? e!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsgQ/ e!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rules$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIiQ3 e !EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk Q']e !EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9ocQ' e !EfJcWhdjNARbuHYrqU:localhost:8800m.room.create$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYo Q? e !vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQo Q? e !vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Qg Q/ e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rules$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMi Q3 e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg Q']e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhocQ' e!vRRNxNyGboLHNhqQvr:localhost:8800m.room.create$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8oQ? e!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility$Z1pbz4OPCbNrADxpDdYFj731zJFx2iLp29kJgdzLoZooQ? e!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAgQ/ e!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rules$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsiQ3 e!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ Q']e!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kcQ' e!NFWKQvZkIwvecnREOC:localhost:8800m.room.create$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo Q']e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0 Q']e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4iQ3 e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_access$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6co~Q? e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibility$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQg}Q/ e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rules$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUi|Q3 e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs {Q']e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoczQ' e!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0 yQ']e!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik xQ']e!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkAiwQ3 e!HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_access$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUovQ? e!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0ouQ? e!HZqzpRgqekPOtxstVc:localhost:8800m.room.history_visibility$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM " | ! I R a j .7_,L[aieQ' $5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.createmheQ? $QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibilityegeQ/ $LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rulesgfeQ3 $myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels eeQ']$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800adeQ' $FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.createmceQ? $zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibilitymbeQ? $RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibilityeaeQ/ $wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rulesg`eQ3 $E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels _eQ']$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800a^eQ' $1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800m.room.createm]eQ? $_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibilitym\eQ? $9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibilitye[eQ/ $sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rulesgZeQ3 $3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels YeQ']$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800aXeQ' $K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800m.room.createmWeQ? $SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibilityeVeQ/ $dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rulesgUeQ3 $8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels TeQ']$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800aSeQ' $IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800m.room.create ReQ']$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800 QeQ']$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800gPeQ3 $sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_accessmOeQ? $irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibilityeNeQ/ $PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rulesgMeQ3 $yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels LeQ']$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800aKeQ' $V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create JeQ']$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800 IeQ']$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800gHeQ3 $tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_access Ldp>  Q  v D }K  ~9q+ 8k L  X &  ^ R] ,W%wE ? j21e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 71e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo @1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQj1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo -1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI51e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ak1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksI1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER081e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvor1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEv1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsA1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q 11e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM =1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQu1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ%1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 ?1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEy1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg |1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o[1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk21e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 E1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k}1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY-0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh081e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw<1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc-1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs[1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y-1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEX1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg O uO AeQ{$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "txn_id": "108", "stream_ordering": 1090}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA"], "type": "m.room.message", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041318387, "hashes": {"sha256": "k1L3n2syuoAfVSt6X9gWCSeBJwbyVRRup9ryQ+h6MOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EhwbW7LOEdIs/gFFB1b5rQ9u2VhFxaheFYGtq9eO0MA0dDYwOdbAXo7vq/ruEk2gYyRuNYpBi9C2ql+2jnvSAw"}}, "unsigned": {"age_ts": 1570041318387}}@eQa7$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "stream_ordering": 1089}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY"], "type": "m.room.member", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-216", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-216:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041317764, "hashes": {"sha256": "Eb/dKkaWr9BCU9k5ijFQDpLgH2THxDslyX+R/hwCm4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IQy0gkHs1ywzcmj7zsby/L9ewaQC7T8oYtrryZrwJb7Ndfx8v2YBnFZGGwulPHCVVjBTWTtcraVMHC4MRGtRCw"}}, "unsigned": {"age_ts": 1570041317764, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-215:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-215:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-215", "avatar_url": null}, "sender": "@anon-20191002_181700-215:localhost:8800"}]}}?eQw$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 236, "txn_id": "107", "stream_ordering": 1088}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ"], "prev_events": ["$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU"], "type": "m.room.message", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-215:localhost:8800", "content": {"msgtype": "m.text", "body": "Before join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041317173, "hashes": {"sha256": "egVo9n3nQ7vipmpAYIIGlZBEXPxSy7KqwwdJ0LR84Q8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0td7Sk8ktNAZPhfV8nN+u6LhYqTIhgLvhSHu20X/TNSxHhUUpiZsSyffigTv0r3iVEKUftFf7lZtsjaEHhvGCQ"}}, "unsigned": {"age_ts": 1570041317173}} }J K &Q ,2 ^j d8q?]W%  X } K  Q   w+jD8p> v21e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y41e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIF1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc71e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAe1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE.1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkP1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA(1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU E11e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYE1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0@1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Yu1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAn1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g M1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0j1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E E1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM &1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI B1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM +1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkw1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4F1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQog1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQs1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcJ1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4ga 21e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 21e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8p1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAD0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicS1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM D Ldp>  Q  v D }K  ~9q+ 8k L  X &  ^ R] ,W%wE ? j21e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 71e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo @1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQj1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo -1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI51e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ak1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksI1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER081e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvor1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEv1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsA1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q 11e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM =1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQo1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 ?1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEy1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg |1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o[1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk21e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 E1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k}1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY-0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh081e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw<1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc-1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs[1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y-1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEX1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg  Mj8 v \ JT"Z(zHB |  p> * P  V $ D nb0th6< Nn1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k[1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kZ1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kY1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ}1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ|1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ{1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q $1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE !1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE 1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q %1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE "1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA 1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q &1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI71e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E ?1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI81e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U}1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E A1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E @1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA 1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA 1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U~1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAM1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAL1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8@1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8?1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8>1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc11e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Yx1e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Mh1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Mg21e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY1e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E`1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg ~z v r n j fb^ZVRNJFceeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800beeQ$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800aeeQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800`eeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800_eeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800^eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800]eeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800\eeQ$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800[eeQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800ZeeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q!vRRNxNyGboLHNhqQvr:localhost:8800YeeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800XeeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800WeeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800VeeQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800UeeQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800TeeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800SeeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800ReeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800QeeQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800PeeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800OeeQ$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800NeeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800MeeQ$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800LeeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800KeeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800JeeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800IeeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800HeeQ$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800GeeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800FeeQ$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800  | kEeQac$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1094}{"auth_events": ["$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "type": "m.room.power_levels", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"users": {"@anon-20191002_181700-217:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041322428, "hashes": {"sha256": "Iog0q8Wzgbi1Bwgkuyp1MCVyW4eYfRQMZofYqhkIEMQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oFMVldUmfMQd5N9HEGM7gCfEZfwKj5FUAD6QiCMRVTaRYQ7Cgjm5p67i8Pbt9GFVKNIE6Yg6eoaUzdxutGkhDg"}}, "unsigned": {"age_ts": 1570041322428}}vDeQay$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1093}{"auth_events": ["$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0"], "prev_events": ["$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0"], "type": "m.room.member", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-217", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-217:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041321852, "hashes": {"sha256": "qexk+yLYC88Ii6kDvSDkqQBZ6Ee4F42PpFkxbLyFskU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LWXCfPcQvUf+kG2+UGY4zpqEN2lWzxDJrchN+0lhfsChZ7xP+EUUJLB0js0R6ZgB8+te2vZQg7B3cklBB7vLCg"}}, "unsigned": {"age_ts": 1570041321852}}iCeQa_$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1092}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-217:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041320869, "hashes": {"sha256": "WXn/FABLGbBdG9lajMcO1hUxQCvx1X0N9p5Hmw4f988"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G9pzbEYrZqdqJsvwDxnqoiyfeRdKzAIdEiOjgcVG6WgBS5Xo9BFgP2QzMCNqfrjXrsf1F8Bb0B4Lp8mVuYb4BA"}}, "unsigned": {"age_ts": 1570041320869}}BeQa?$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800{"token_id": 237, "stream_ordering": 1091}{"auth_events": ["$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs", "$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw", "$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4"], "prev_events": ["$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY"], "type": "m.room.member", "room_id": "!HZqzpRgqekPOtxstVc:localhost:8800", "sender": "@anon-20191002_181700-216:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-216", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-216:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041318824, "hashes": {"sha256": "Kv9uHKwX/ICBtdynFNmNyAFuuioH2ccIMHIO6K/SF3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b7OyfLGsouP9qHVoFZ6jDQfJhNS39i/ApN3MnKLBCdelpZZ+ZQd+vGq2ZlBs8JzBEG/S/H26vfCDTjHrZpttCg"}}, "unsigned": {"age_ts": 1570041318824, "replaces_state": "$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA"}} CVr9 U  q 8 U 5 rQ 9 8 U qTp7Son6R8e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urksha256H8e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMsha256'8e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUsha2568e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAsha256 o8e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4sha256 I8e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEsha256 8e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iUsha256 8e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIsha256 8e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwssha256&8e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0sha2568e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8sha256 28e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xcsha256 8e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncsha256Y8e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wsha256V8e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8osha2568e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYsha256 8e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8sha256 8e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4sha2568e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUsha256 r8e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYsha2568e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20Asha256E8e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0sha256C8e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qsha256 8e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlssha256|8e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4sha2568e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4Usha256Q8e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egsha256 8e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6ksha2568e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVssha256 o8e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4sha2568e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gsha256u8e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Ysha256 8e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4sha256 !8e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWcsha2568e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMsha25698e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwsha256 ;8e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9Usha2568e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIsha256 8e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExosha2568e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34sha2568e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90sha256 8e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQsha256j8e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRUsha2568e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwsha256 !7e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJwsha256>8e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAAsha2567e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dksha256A8e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUsha256 8e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Ysha256 8e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEsha2568e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyksha256 8e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0sha256-8e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPosha256~8e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8sha2568e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcsha2568e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCosha256#8e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4sha256 n8e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAsha2568e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAsha2568e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4sha25688e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwsha2568e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Msha256 8e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0sha256t8e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Esha256g8e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Asha256 7e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgsha256y8e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMsha256  eQa$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1153}{"auth_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA", "$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8"], "type": "m.room.history_visibility", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041390315, "hashes": {"sha256": "qTM51c13wqTpgmGb7muL3qPtLi29bWeNVHJJ6sPf+SY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XZL7qTxSqfiWBU5bffQrK4Ie1BrZlCfLwPXLZFLtYektFwK+2TrFTFqAcQzhQiZwpLpUbsUMJCj8zQkOkXZRCg"}}, "unsigned": {"age_ts": 1570041390315}}teQau$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1152}{"auth_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA", "$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA"], "type": "m.room.join_rules", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041389682, "hashes": {"sha256": "DaX2eXksD5yO3JtLNRcB9/wKgVPjWYcfJXFEONpvv9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+u9KNccaH+qHW3ulLd3VTChYguL3zQOA8xb1D0xXCfIhzB2x3Mn9B5Mkdf28r96asn4Psp+LKNB5CbYPtKwvBA"}}, "unsigned": {"age_ts": 1570041389682}}k~eQac$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1151}{"auth_events": ["$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "type": "m.room.power_levels", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"users": {"@anon-20191002_181700-234:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041389009, "hashes": {"sha256": "gFTK2WbL6E6/OpBwp3zahFSjQV9eg+yLwsNVP+TIPls"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Me6T6L33kQL3F9qOm4exA/2ydBbGOz01nQmz3MvDcqYDM4x1EIkOSveusBy3gfyrPwWmOGbYhzz0vKHKScw0DQ"}}, "unsigned": {"age_ts": 1570041389009}}v}eQay$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1150}{"auth_events": ["$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o"], "prev_events": ["$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o"], "type": "m.room.member", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-234", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-234:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041388095, "hashes": {"sha256": "D5qqpqDXzbcLnipk6FOvtmjieioRN+2VKR9YREbSNqg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWdntnpeNsKBfTwTgbTTdDYJRpRGhqDmAyrTJmD3vKR55yQogfo5XGIzhlJom1qFbEkwubRPbGDUm7ixbC2wBQ"}}, "unsigned": {"age_ts": 1570041388095}} H[$H l 5 Y " g 0 T  x A e.Rv?c,P,tPt=4E==anon-20191002_181700-287anon-20191002_181700-2874D==anon-20191002_181700-286anon-20191002_181700-2864C==anon-20191002_181700-285anon-20191002_181700-2854B==anon-20191002_181700-284anon-20191002_181700-2844A==anon-20191002_181700-283anon-20191002_181700-2834@==anon-20191002_181700-282anon-20191002_181700-2824?==anon-20191002_181700-281anon-20191002_181700-2814>==anon-20191002_181700-280anon-20191002_181700-2804===anon-20191002_181700-279anon-20191002_181700-2794<==anon-20191002_181700-278anon-20191002_181700-2784;==anon-20191002_181700-277anon-20191002_181700-277E7=%Ganon-20191002_181700-272Display Namehttp://example.com/avatar.png49==anon-20191002_181700-275anon-20191002_181700-27548==anon-20191002_181700-274anon-20191002_181700-2744:==anon-20191002_181700-276anon-20191002_181700-27646==anon-20191002_181700-273anon-20191002_181700-27345==anon-20191002_181700-270anon-20191002_181700-27044==anon-20191002_181700-271anon-20191002_181700-27143==anon-20191002_181700-269anon-20191002_181700-26942==anon-20191002_181700-268anon-20191002_181700-26841==anon-20191002_181700-267anon-20191002_181700-26740==anon-20191002_181700-266anon-20191002_181700-2664/==anon-20191002_181700-265anon-20191002_181700-2654.==anon-20191002_181700-264anon-20191002_181700-2644-==anon-20191002_181700-263anon-20191002_181700-2634,==anon-20191002_181700-262anon-20191002_181700-2624+==anon-20191002_181700-261anon-20191002_181700-2614*==anon-20191002_181700-260anon-20191002_181700-2604)==anon-20191002_181700-259anon-20191002_181700-2594(==anon-20191002_181700-258anon-20191002_181700-2584'==anon-20191002_181700-257anon-20191002_181700-2574&==anon-20191002_181700-255anon-20191002_181700-2554%==anon-20191002_181700-254anon-20191002_181700-2544$==anon-20191002_181700-253anon-20191002_181700-2534#==anon-20191002_181700-252anon-20191002_181700-2524"==anon-20191002_181700-251anon-20191002_181700-2514!==anon-20191002_181700-250anon-20191002_181700-2504 ==anon-20191002_181700-249anon-20191002_181700-2494==anon-20191002_181700-248anon-20191002_181700-2484==anon-20191002_181700-246anon-20191002_181700-2464==anon-20191002_181700-247anon-20191002_181700-2474==anon-20191002_181700-245anon-20191002_181700-2454==anon-20191002_181700-244anon-20191002_181700-2444==anon-20191002_181700-243anon-20191002_181700-2434==anon-20191002_181700-242anon-20191002_181700-2424==anon-20191002_181700-241anon-20191002_181700-2414==anon-20191002_181700-240anon-20191002_181700-2404==anon-20191002_181700-239anon-20191002_181700-2394==anon-20191002_181700-238anon-20191002_181700-2384==anon-20191002_181700-237anon-20191002_181700-23736364==anon-20191002_181700-236anon-20191002_181700-23635354==anon-20191002_181700-235anon-20191002_181700-2354==anon-20191002_181700-234anon-20191002_181700-2344==anon-20191002_181700-233anon-20191002_181700-2334 ==anon-20191002_181700-232anon-20191002_181700-2324 ==anon-20191002_181700-231anon-20191002_181700-2314 ==anon-20191002_181700-230anon-20191002_181700-2304 ==anon-20191002_181700-229anon-20191002_181700-2294 ==anon-20191002_181700-228anon-20191002_181700-2284==anon-20191002_181700-227anon-20191002_181700-2274==anon-20191002_181700-226anon-20191002_181700-2264==anon-20191002_181700-225anon-20191002_181700-2254==anon-20191002_181700-224anon-20191002_181700-2244==anon-20191002_181700-223anon-20191002_181700-2234==anon-20191002_181700-222anon-20191002_181700-2224==anon-20191002_181700-221anon-20191002_181700-2214==anon-20191002_181700-220anon-20191002_181700-2204==anon-20191002_181700-219anon-20191002_181700-2194==anon-20191002_181700-218anon-20191002_181700-2184~==anon-20191002_181700-217anon-20191002_181700-217  IeQw$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "txn_id": "109", "stream_ordering": 1098}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c"], "type": "m.room.message", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"body": "Before join", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041325725, "hashes": {"sha256": "7zcUmOe4Hw3fLlWN0zeHSHuJgv9vF459mV7rhU0ONew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mBOkd+RR/F7FmAGnkZp93nooN9sd9qwToPWfz5YoAcsdUNaJJgqQzsFIr+DQO+53yRNvKisnCv/lLXgBLyEsAw"}}, "unsigned": {"age_ts": 1570041325725}}{HeQa$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1097}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ"], "type": "m.room.guest_access", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041324696, "hashes": {"sha256": "v8fkMLX1bCiI0B9jJb4O1eCqLIWNuthMLLcBT78wpjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FenJ4K7ieq5/ajN7JeiuvtwFDCHg1RW7r30p184jgUHVdz/0gpYofEf21+o3/64ytanz+WP+mqA6STcHZyJADg"}}, "unsigned": {"age_ts": 1570041324696}}GeQa$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1096}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU"], "type": "m.room.history_visibility", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041323652, "hashes": {"sha256": "ienFVpqr2g0NIKyABgJjmnhh5w8A9t3RY8sCufiEVzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZhI6XwKU9gkrmh/xRr5ZD+4TKBZdp9Qs7JIa6Nl2JBOQVKZW4eDh/OQeVOg4NydKNnwN73XSB4QFwgP48zfSCQ"}}, "unsigned": {"age_ts": 1570041323652}}tFeQau$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1095}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs"], "type": "m.room.join_rules", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041323069, "hashes": {"sha256": "3li9angNWkiR337V6oNahdFUK9DUu1pqLPhxLIlXIKc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3LpY8nvK8eK3ZtFio2ro92owbwZbNlcddQDMALByBYG8BLen1b40kBbccKBGaIaJG5jxMbCmUwUsER+gCC6QDA"}}, "unsigned": {"age_ts": 1570041323069}} <&#OuCoYb1 i=> vj D  T | J 7 8z& PH C"N7221e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA s1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 +1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo ~1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPke1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g;1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs]1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0`1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 K1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE?1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE<1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usm1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s t1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E &1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE21e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM "1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ%0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsA1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawpX1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw )1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI91e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0k1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUc1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg_1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgh1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUU1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUS1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w21e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg Xd1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg Y21e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs a} { y w u sqomkigeca~:eeQ$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~9eeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~8eeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~7eeQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800~6eeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~5eeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~4eeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800~3eeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~2eeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~1eeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800~0eeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800~/eeQ$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~.eeQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800~-eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800~,eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~+eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800~*eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800~)eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~(eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800~'eeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800~&eeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~%eeQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800~$eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800~#eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~"eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~!eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~ eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800~eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800 ~z v r n j fb^ZVRNJFQ]e!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-432:localhost:8800$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwjoinQ]e!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-431:localhost:8800$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCojoin Q]e!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-430:localhost:8800$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsjoin Q]e!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-429:localhost:8800$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsjoin Q]e!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-428:localhost:8800$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuojoin Q]e!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-427:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4join Q]e!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-426:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEjoinQ]e!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-425:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QjoinQ]e!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-424:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIjoinQ]e!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-422:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kjoinQ]e!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-421:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEjoinQ]e!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-420:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMjoinQ]e!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-419:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEjoinQ]e!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-418:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisjoinQ]e!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-417:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kjoinQ]e!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-416:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYjoinQ]e!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-415:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4join~Q]e!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-414:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsjoin}Q]e!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-413:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sjoin|Q]e!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-412:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMjoin{Q]e!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-411:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcjoinzQ]e!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-409:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkjoinyQ]e!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-408:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakjoinxQ]e!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-407:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgjoinwQ]e!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-405:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAjoinvQ]e!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-404:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEjoinuQ]e!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-403:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQjointQ]e!YQATbgbLImCDamiDHC:localhost:8800@anon-20191002_181700-401:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUjoinsQ]e!YQATbgbLImCDamiDHC:localhost:8800@anon-20191002_181700-400:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4joinrQ]e!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-399:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkjoin  I+vD e|J3 vP  J  D PV% j8p>   X &  ^ - ]i7o=1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo 1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A X1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs[1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM@1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0B1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg91e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80G1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUn1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U&1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwy1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q11e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE#1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIf1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 f1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A 1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU H1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 21e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ\0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0=1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q N1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4e1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo |d1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 21e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgw1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc"1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0a1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNou1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwd1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgr1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM3  gLeQa?$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 239, "stream_ordering": 1101}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU"], "prev_events": ["$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo"], "type": "m.room.member", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-218:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-218", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-218:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041327323, "hashes": {"sha256": "hgGb9Nx9IjEqCs3AKzQTnPUr0r2BMryyknTYzVxJgLI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4k4KkxJfnYJidneiUDzOokd63X4lfZxxlkfgxS/OPsmiSr6/FPu//7I2d3MYvx9muOtqFRAfKTCn6MxiOk+qAA"}}, "unsigned": {"age_ts": 1570041327323, "replaces_state": "$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4"}}KeQy$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "txn_id": "110", "stream_ordering": 1100}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4"], "type": "m.room.message", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"msgtype": "m.text", "body": "After invite"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041326923, "hashes": {"sha256": "rrl/cDYqcCauX6rHxRgTL3oaJXqN/i1WiEwm59Bqqz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7kSB0r1bUPLL4D0+sTGOdUxalWWQmRcpUdhPqspN1xZXD85ylu2pVnhCik9J1gWXMILYySo0Nyl5adLv9WfFDA"}}, "unsigned": {"age_ts": 1570041326923}}JeQa7$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800{"token_id": 238, "stream_ordering": 1099}{"auth_events": ["$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs", "$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0", "$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU", "$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo"], "prev_events": ["$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw"], "type": "m.room.member", "room_id": "!IPYMCBwcyNIzqdiIWv:localhost:8800", "sender": "@anon-20191002_181700-217:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-218", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-218:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041326290, "hashes": {"sha256": "2xWCdL/lbITSOPViws4OREopz5Cs1DbdoWXuaQskv64"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kXOL8wfJCce9NfU4r+wA527oMGjuvLLh+XNyD2P6mLVPzP4xt6xsSHT0Z+9kQdVhKfTrk1qq5wtmCVWCXMaUCg"}}, "unsigned": {"age_ts": 1570041326290, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-217:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-217:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-217", "avatar_url": null}, "sender": "@anon-20191002_181700-217:localhost:8800"}]}} |t l d ] U ME>6.&eeQ$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800#eeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800KeeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800eeQ$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800WeeQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800@eeQ$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA!zNCItZNbpkZKuufRhC:localhost:8800eeQ$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4!quaZwrGnzbNWhwAOYB:localhost:8800ReeQ$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU!YufaOfAlruTdjyUCwO:localhost:8800eeQ$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk!dWgOTucBVQBKZjfndN:localhost:8800.eeQ$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800"eeQ$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c!HmkcAMkMjWRhTDJMsy:localhost:88008eeQ$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sM!xwoIOPTGmJIlTXakxC:localhost:8800MeeQ$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800IeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800HeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800JeeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800 eeQ$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0!egCvzKpbEwmuvDoBTb:localhost:8800a ,`m^ k x ' 6 C P ] n{*7DQz+P]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800WP]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:88001P]Q@anon-20191002_181700-270:localhost:8800!RPfffkmSEbWggEjnoI:localhost:88005P]Q@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:88004P]Q@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:88002N[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800XP]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800VP]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800UP]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800TP]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800SP]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800RP]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800QP]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800PP]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800OP]Q@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800NP]Q@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800MP]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800LP]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800KP]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800JN[Q@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800N[Q@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800IP]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800HP]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800GP]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800FP]Q@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800EP]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800DP]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800CP]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800BP]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800AP]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800@N[Q@anon-20191002_181700-27:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800?P]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800>P]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800=P]Q@anon-20191002_181700-275:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:88009P]Q@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800Go(JmpjpQ3 eq!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU oQ']ep!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgdnQ' eo!SvKwEALYoNreUvqAlp:localhost:8800m.room.create$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hksmQ))en!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4plQ? em!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibility$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUhkQ/ el!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rules$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEmjQ9 ek!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_alias$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3ojiQ3 ej!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY hQ']ei!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0dgQ' eh!fOJLpnbtgKNxxVDquX:localhost:8800m.room.create$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4pfQ? ef!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibility$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekheQ/ ee!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rules$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAjdQ3 ed!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU cQ']ec!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMdbQ' eb!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.create$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7IaQ? ee`!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsp`Q? e_!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibility$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsh_Q/ e^!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rules$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIj^Q3 e]!EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk ]Q']e\!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9od\Q' e[!EfJcWhdjNARbuHYrqU:localhost:8800m.room.create$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY[Q? eeY!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QpZQ? eX!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QhYQ/ eW!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rules$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMjXQ3 eV!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg WQ']eU!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhodVQ' eT!vRRNxNyGboLHNhqQvr:localhost:8800m.room.create$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8pUQ? eR!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAhTQ/ eQ!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rules$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsjSQ3 eP!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ RQ']eO!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kdQQ' eN!NFWKQvZkIwvecnREOC:localhost:8800m.room.create$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo8PQ']eeM!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4 g * T~=ggq]!c@anon-20191002_181700-229:localhost:8800HEUCKALXOCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJqc15IV1dGS25wcE9uYlEKMDAyZnNpZ25hdHVyZSCYjNjyDWdteJjxc8W-kRRu5ptViIlvWWCgl3LHeciJZgogp]!c@anon-20191002_181700-228:localhost:8800UJAKRYEXDSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmQkcsd34xVTBlNml5TTAKMDAyZnNpZ25hdHVyZSABdTcPgyX8yVTD-6TbXkRBMIld0slF_WoLEFV4QpTzWwogo]!c@anon-20191002_181700-227:localhost:8800WRSATVMLKKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2cV5HQmpVLmszdC46Z0kKMDAyZnNpZ25hdHVyZSBxHji81-3Tl3UczSXzJg5qfZZgB13uIQbfIRym3wSDDgogn]!c@anon-20191002_181700-226:localhost:8800AUORQAXWJLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFd5NFZtUHRFOSYxblE1LVkKMDAyZnNpZ25hdHVyZSCVI9s0qIkXNTwkwqnYOkibSgJyaCo_fwegq8COseHYwwogm]!c@anon-20191002_181700-225:localhost:8800ZNKOABDJUUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGgrMUR4Q0JRdSYqMCo6cFYKMDAyZnNpZ25hdHVyZSA-bbqwnLjAzn7aFa0FsGgHBD5osaljIstOUBLYh80AXwogl]!c@anon-20191002_181700-224:localhost:8800VJTZAJOEFYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA9QDRGT0t0TFkyXnlQMTkKMDAyZnNpZ25hdHVyZSD6ykFyEMZQKJtLTzJ9yjKPCcaZOJZWxkGQFtSCDeqSIAogk]!c@anon-20191002_181700-223:localhost:8800IOQWEQAUDWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZXVy50MVdNTHF1bEZ5TFoKMDAyZnNpZ25hdHVyZSCgkIRbXxnz-j2-gK-uHrcaHrgl60CO4Wf6nYmqJ5O6BQogj]!c@anon-20191002_181700-222:localhost:8800VOKSLIDSSOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVzOEBHLlItVjA4SjBGZGsKMDAyZnNpZ25hdHVyZSAKqdb-hXlfoAJG4zWoJDQqElxSrySuPjAMSbDJIEx7TQogi]!c@anon-20191002_181700-221:localhost:8800REITENATXKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQogh]!c@anon-20191002_181700-220:localhost:8800OOLATWHSMPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgogg]!c@anon-20191002_181700-219:localhost:8800KBEVVOFICUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwo $0X\ ` d  h  l  p t x$|(,048<Q;eQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800Q:eQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800Q9eQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800Q8eQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800Q7eQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800Q6eQ$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo!DoiZErAdypBUMZKaeJ:localhost:8800Q5eQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800Q4eQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800Q3eQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800Q2eQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800Q1eQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800Q0eQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800Q/eQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800Q-eQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800Q,eQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800Q+eQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800Q*eQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800Q)eQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0!sfXbvAcOUJhzGwWEpZ:localhost:8800Q(eQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800Q'eQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800Q&eQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800Q%eQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800Q$eQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800Q#eQ$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c!TcaopYfMoJFEcjYRzJ:localhost:8800Q"eQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800Q!eQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800Q eQ$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg!NfaPEGKjnUDUTavzol:localhost:8800QeQ$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI!JGhlAUflyNxErGGZZu:localhost:8800QeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI!tkajvIKHoOMWGsReBs:localhost:8800QeQ$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800QeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800QeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800QeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800QeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800QeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0!mfzIRinBAGGrZvQAuI:localhost:8800Q.eQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800   *tPeQau$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1105}{"auth_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ", "$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ"], "type": "m.room.join_rules", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041331945, "hashes": {"sha256": "m3cfxuMlYYJATy3b88ugi5zINOzs4u0rPOkRvu51rUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eAPROix/r+CTy9jrMjPm0jCN2obZhvR/QCYoRGMXD0GV/Cn/04TWjpJzHknW0aDO/hcylDvjun/5AOwV2cCRCg"}}, "unsigned": {"age_ts": 1570041331945}}kOeQac$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1104}{"auth_events": ["$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "type": "m.room.power_levels", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"users": {"@anon-20191002_181700-220:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041331254, "hashes": {"sha256": "D5gCRcqw9tjsfljWMUloHIuBe8vP9Lqgut8BTInvqX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "82QpEFxSFVqk2eCF0YqEhgz1NKJEe2f++AEeN2LGqEnGfOgr93LFCOowyOnSX8iXpfNNZGh7JVgjd9a1RvyxCQ"}}, "unsigned": {"age_ts": 1570041331254}}vNeQay$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1103}{"auth_events": ["$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo"], "prev_events": ["$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo"], "type": "m.room.member", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-220", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-220:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041330025, "hashes": {"sha256": "lo4RAzbRIXVSL9ZjGD2IiUdXyrZW4AkbgIkM6QZcXnM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m4GYp06YmlRpBT7rrUz9CEe0opiIw+ABPNYLKVSGQWyOB1cpa9KnuBSkLkccrmBw/tznltqVNgHdQ5AqecliBQ"}}, "unsigned": {"age_ts": 1570041330025}}iMeQa_$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1102}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-220:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041329318, "hashes": {"sha256": "VBcHu7Q9bPykR5g1sfslZmiqbBGIdVY/6sCZWR4WwO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dcw0V0rgsFHzPuJ+vO6DYQ1vR2ituai3dbTFmPRO8ntmv2dF1Yrl++caIRdhfCFgUPiukimVLCAx96C7AGHtDQ"}}, "unsigned": {"age_ts": 1570041329318}} \ Z  o  mv( {5$ee/Q ]$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAm.room.join_rules!vAUAIZrCnHTeMGeNuw:localhost:8800mdm@anon-20191002_181700-226:localhost:8800&de3Q ]$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUm.room.power_levels!vAUAIZrCnHTeMGeNuw:localhost:8800mmu@anon-20191002_181700-226:localhost:8800 ce'Q ]$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMm.room.member!vAUAIZrCnHTeMGeNuw:localhost:8800mme@anon-20191002_181700-226:localhost:8800b e'Q  ]$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Im.room.create!vAUAIZrCnHTeMGeNuw:localhost:8800m"mt@anon-20191002_181700-226:localhost:8800!ae)Q ]$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNom.room.message!EfJcWhdjNARbuHYrqU:localhost:8800mmc@anon-20191002_181700-224:localhost:8800,`e?Q ]$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jwm.room.history_visibility!EfJcWhdjNARbuHYrqU:localhost:8800m?m.@anon-20191002_181700-224:localhost:8800,_e?Q ]$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBsm.room.history_visibility!EfJcWhdjNARbuHYrqU:localhost:8800mm@anon-20191002_181700-224:localhost:8800$^e/Q ]$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIm.room.join_rules!EfJcWhdjNARbuHYrqU:localhost:8800mm|@anon-20191002_181700-224:localhost:8800&]e3Q ]$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWkm.room.power_levels!EfJcWhdjNARbuHYrqU:localhost:8800m:mm@anon-20191002_181700-224:localhost:8800 \e'Q ]$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9om.room.member!EfJcWhdjNARbuHYrqU:localhost:8800mmh@anon-20191002_181700-224:localhost:8800[ e'Q  ]$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYm.room.create!EfJcWhdjNARbuHYrqU:localhost:8800mUm@anon-20191002_181700-224:localhost:8800!Ze)Q ]$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQm.room.message!vRRNxNyGboLHNhqQvr:localhost:8800mm@anon-20191002_181700-222:localhost:8800,Ye?Q ]$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQm.room.history_visibility!vRRNxNyGboLHNhqQvr:localhost:8800m:m@anon-20191002_181700-222:localhost:8800,Xe?Q ]$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Qm.room.history_visibility!vRRNxNyGboLHNhqQvr:localhost:8800mmD@anon-20191002_181700-222:localhost:8800$We/Q ]$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMm.room.join_rules!vRRNxNyGboLHNhqQvr:localhost:8800m'm@anon-20191002_181700-222:localhost:8800&Ve3Q ]$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mgm.room.power_levels!vRRNxNyGboLHNhqQvr:localhost:8800mm>@anon-20191002_181700-222:localhost:8800 Ue'Q ]$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhom.room.member!vRRNxNyGboLHNhqQvr:localhost:8800mmd@anon-20191002_181700-222:localhost:8800T e'Q  ]$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8m.room.create!vRRNxNyGboLHNhqQvr:localhost:8800mm@anon-20191002_181700-222:localhost:8800!Se)Q ]$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4m.room.message!NFWKQvZkIwvecnREOC:localhost:8800mm@anon-20191002_181700-220:localhost:8800,Re?Q ]$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAm.room.history_visibility!NFWKQvZkIwvecnREOC:localhost:8800mm/@anon-20191002_181700-220:localhost:8800$Qe/Q ]$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsm.room.join_rules!NFWKQvZkIwvecnREOC:localhost:8800mm@anon-20191002_181700-220:localhost:8800&Pe3Q ]$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQm.room.power_levels!NFWKQvZkIwvecnREOC:localhost:8800m~6mM@anon-20191002_181700-220:localhost:8800 Oe'Q ]$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3km.room.member!NFWKQvZkIwvecnREOC:localhost:8800myim|@anon-20191002_181700-220:localhost:8800  f  q  / 4?(3 aep.9g+S|g!eQ3 $myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels eQ']$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800joinaeQ' $FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.createmeQ? $zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800m.room.history_visibilityeeQ/ $wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800m.room.join_rulesgeQ3 $E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800m.room.power_levels eQ']$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800m.room.member@anon-20191002_181700-224:localhost:8800joinaeQ' $1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800m.room.createmeQ? $_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibilitygeQ3 $8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels eQ']$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800joinaeQ' $IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800m.room.create eQ']$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-218:localhost:8800joingeQ3 $sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.guest_accessm eQ? $irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.history_visibilitye eQ/ $PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.join_rulesg eQ3 $yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.power_levels eQ']$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.member@anon-20191002_181700-217:localhost:8800joina eQ' $V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0!IPYMCBwcyNIzqdiIWv:localhost:8800m.room.create eQ']$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800m.room.member@anon-20191002_181700-216:localhost:8800joingeQ3 $tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800m.room.guest_accesseeQ/ $sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rulesgeQ3 $3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels eQ']$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800joinaeQ' $K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800m.room.createmeQ? $SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibilityeeQ/ $dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rules  wvTeQay$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1109}{"auth_events": ["$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8"], "prev_events": ["$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8"], "type": "m.room.member", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-222", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-222:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041336328, "hashes": {"sha256": "0y3cdOX8p7GjjzAhv3C5xbkDJNg66x99L9BaP3ZOz38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "humkTYVdRePPCyOwpb8Cg9XqRSarmDM/Ukne0FABjuYcjm9BWl4Ki3OabOfROyQNg2xcgOGAH5+coRBkemNIBA"}}, "unsigned": {"age_ts": 1570041336328}}iSeQa_$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1108}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-222:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041335185, "hashes": {"sha256": "cFMav+sNJ/UaoKDlEuER2ewd/qVqxk2cXKgDs3Vg/LQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3WPVViLoz1TZFqKx1/nk5QOQ7YaPJ33miTf/QFJe43kPKM2BPmsge743GIL1jYEjjw2tnfejNk2BdN4yZk2HAQ"}}, "unsigned": {"age_ts": 1570041335185}}ReQi$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "txn_id": "111", "stream_ordering": 1107}{"auth_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ", "$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA"], "type": "m.room.message", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041333735, "hashes": {"sha256": "mIJCiP5qNNJA5ruSoh2M6AcB64ghacKB3FMdzDKMk7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wjOKf+sykbe6TkxXpugctO24oumEr4ovyou2h1cbdOkgtmEnmqG8h9cwCiGWKuQfmilaJ/tjZ8WBbk7ip7/+DQ"}}, "unsigned": {"age_ts": 1570041333735}}QeQa$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800{"token_id": 241, "stream_ordering": 1106}{"auth_events": ["$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ", "$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo", "$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k"], "prev_events": ["$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs"], "type": "m.room.history_visibility", "room_id": "!NFWKQvZkIwvecnREOC:localhost:8800", "sender": "@anon-20191002_181700-220:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041332661, "hashes": {"sha256": "eGARqDCHYJyiHueoMEe5A/gvpkxwDr3MELYDQO8kBUE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XJSo6djdevrsP/0U7lVYGJVmiH4mlTMCXiLhpwgqd/saK7GOy6VHXiV/MBS14WtQ1jga4wdHcznaBpt6tLhODQ"}}, "unsigned": {"age_ts": 1570041332661}} ,NC 8 - { " p  e ZOD9.|#qf V|eL$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7osha256c[llBYu3 ̤V= ,cV{eL$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMsha256e;$mڅ.qQĒe#VzeL$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEsha256㢤7fe0 EX7P?bTVyeL$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwsha256-ITXY2YKFdօL= %ĴVxeL$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYsha256)ջ4%IQ!Yrg؜,x:XVVweL$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIsha256e]p߁g  ݞ&QG\FVveL$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Msha2561ENrQc=g;sVueL$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gsha256R6`eqQ渓Z*zoB WVteL$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcsha256b@FAVqeL$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMosha256V}|e¯ݑꎻƔm GȸVpeL$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUsha256}=;["$; 1_u5DȒ5VoeL$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgsha256Ȫ—m`M*.a G.XVneL$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hksha2564P>Oesl?7gYVmeL$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4sha2568b/Nockrc6(3nVleL$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUsha256i\dT<df/i2VkeL$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEsha256|7Wz_Z6, QM]6VjeL$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3osha2567JS0(y|ٙס O'4zVieL$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYsha256+b FiQ :x?!QR6VheL$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0sha256mT͑2i1;3QBH.PN VgeL$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4sha256DkqxENF$ cj.Fx.VfeL$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwsha2563$gmPJxsV(LĴi|VeeL$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veksha256@mǺ}+@VdeL$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAsha256,OFd<Ց_o}q|VDu@VceL$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUsha256+PwN|itHz5M9DVbeL$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMsha256d i.: \@['TyVaeL$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Isha256ɿ^=vjX jbt馏V`eL$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNosha256LB'@9D!_`nXC()V_eL$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jwsha256@o[I+%"lJZN؜V^eL$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBssha256F$ YOsa/O0Enö+30V]eL$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIsha256kVQeL$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAsha256Hpt.pp~)k2@ٱ&_؟@ PrZB*uH h ;  Z .  { N ! m @  \ . vHb4|N h: T&n@Z,tF -]@anon-20191002_181700-235:localhost:8800-]@anon-20191002_181700-233:localhost:8800-]@anon-20191002_181700-231:localhost:8800-]@anon-20191002_181700-230:localhost:8800-]@anon-20191002_181700-229:localhost:8800-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-227:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-225:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-223:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-221:localhost:8800-]@anon-20191002_181700-220:localhost:8800-]@anon-20191002_181700-219:localhost:8800-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800-]@anon-20191002_181700-212:localhost:8800-]@anon-20191002_181700-211:localhost:8800-]@anon-20191002_181700-210:localhost:8800-]@anon-20191002_181700-209:localhost:8800-]@anon-20191002_181700-208:localhost:8800-]@anon-20191002_181700-207:localhost:8800-]@anon-20191002_181700-206:localhost:8800-]@anon-20191002_181700-205:localhost:8800-]@anon-20191002_181700-204:localhost:8800-]@anon-20191002_181700-201:localhost:8800-]@anon-20191002_181700-200:localhost:8800-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-196:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800-]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800,]@anon-20191002_181700-190:localhost:8800z,]@anon-20191002_181700-189:localhost:8800y-]@anon-20191002_181700-188:localhost:8800,]@anon-20191002_181700-187:localhost:8800,]@anon-20191002_181700-186:localhost:8800|,]@anon-20191002_181700-182:localhost:8800m,]@anon-20191002_181700-181:localhost:8800d,]@anon-20191002_181700-180:localhost:8829j,]@anon-20191002_181700-179:localhost:8800h,]@anon-20191002_181700-178:localhost:8800i+[@anon-20191002_181700-16:localhost:8800 ,]@anon-20191002_181700-166:localhost:8829],]@anon-20191002_181700-165:localhost:8800\,]@anon-20191002_181700-161:localhost:8800Z+[@anon-20191002_181700-15:localhost:8800,]@anon-20191002_181700-148:localhost:8829U,]@anon-20191002_181700-147:localhost:8829S,]@anon-20191002_181700-146:localhost:8800V,]@anon-20191002_181700-139:localhost:8829R,]@anon-20191002_181700-128:localhost:8800O,]@anon-20191002_181700-127:localhost:8800N,]@anon-20191002_181700-126:localhost:8800J,]@anon-20191002_181700-123:localhost:8800I+[@anon-20191002_181700-11:localhost:8800,]@anon-20191002_181700-119:localhost:8800F,]@anon-20191002_181700-117:localhost:8800E,]@anon-20191002_181700-115:localhost:8800H,]@anon-20191002_181700-114:localhost:8800G,]@anon-20191002_181700-111:localhost:8829B,]@anon-20191002_181700-100:localhost:8800A/@3:localhost:8800W1@34:localhost:88001@33:localhost:88001@32:localhost:88001@31:localhost:88001@30:localhost:88001@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:8800~1@13:localhost:8800r KZ,tFvHb4 | N h : T & n @  \ . vHd6~R$l>`2|N -]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-241:localhost:8800-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-237:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-351:localhost:8800+[@anon-20191002_181700-34:localhost:8800-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800|-]@anon-20191002_181700-341:localhost:8800z+[@anon-20191002_181700-33:localhost:8800 -]@anon-20191002_181700-339:localhost:8800y-]@anon-20191002_181700-338:localhost:8800w-]@anon-20191002_181700-337:localhost:8800u-]@anon-20191002_181700-336:localhost:8800t-]@anon-20191002_181700-334:localhost:8800q-]@anon-20191002_181700-333:localhost:8800r-]@anon-20191002_181700-332:localhost:8800j-]@anon-20191002_181700-331:localhost:8800e-]@anon-20191002_181700-330:localhost:8800b+[@anon-20191002_181700-32:localhost:8800 -]@anon-20191002_181700-329:localhost:8800Q-]@anon-20191002_181700-328:localhost:8800\-]@anon-20191002_181700-327:localhost:8800[-]@anon-20191002_181700-326:localhost:8800Y-]@anon-20191002_181700-324:localhost:8800U-]@anon-20191002_181700-323:localhost:8800P-]@anon-20191002_181700-321:localhost:8800N-]@anon-20191002_181700-320:localhost:8800T+[@anon-20191002_181700-31:localhost:8800-]@anon-20191002_181700-319:localhost:8800I-]@anon-20191002_181700-318:localhost:8800H-]@anon-20191002_181700-317:localhost:8800F-]@anon-20191002_181700-316:localhost:8800D-]@anon-20191002_181700-300:localhost:88009-]@anon-20191002_181700-299:localhost:88008-]@anon-20191002_181700-298:localhost:88005-]@anon-20191002_181700-297:localhost:88003-]@anon-20191002_181700-294:localhost:88000-]@anon-20191002_181700-290:localhost:8800--]@anon-20191002_181700-286:localhost:8800)-]@anon-20191002_181700-284:localhost:8800%-]@anon-20191002_181700-283:localhost:8800$-]@anon-20191002_181700-280:localhost:8800'-]@anon-20191002_181700-279:localhost:8800(-]@anon-20191002_181700-277:localhost:8800!-]@anon-20191002_181700-276:localhost:8800-]@anon-20191002_181700-269:localhost:8800-]@anon-20191002_181700-268:localhost:8800 -]@anon-20191002_181700-267:localhost:8800-]@anon-20191002_181700-266:localhost:8800-]@anon-20191002_181700-265:localhost:8800-]@anon-20191002_181700-263:localhost:8800-]@anon-20191002_181700-262:localhost:8800-]@anon-20191002_181700-261:localhost:8800-]@anon-20191002_181700-260:localhost:8800-]@anon-20191002_181700-259:localhost:8800 -]@anon-20191002_181700-258:localhost:8800-]@anon-20191002_181700-257:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800 -]@anon-20191002_181700-249:localhost:8800 8l D `8f]c!E@anon-20191002_181700-230:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJTUWhsR0JMUi1oYkNYYWcKMDAyZnNpZ25hdHVyZSAGiLKsOqoQuxKK_4Pmg-XFWgoT-qrRMYFwGMFT-hQ-YQoZDQWNSBGEB127.0.0.1Perl + Net::Async::HTTP/0.44m"e]c!E@anon-20191002_181700-229:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJqc15IV1dGS25wcE9uYlEKMDAyZnNpZ25hdHVyZSCYjNjyDWdteJjxc8W-kRRu5ptViIlvWWCgl3LHeciJZgoHEUCKALXOC127.0.0.1Perl + Net::Async::HTTP/0.44mփd]c!E@anon-20191002_181700-228:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmQkcsd34xVTBlNml5TTAKMDAyZnNpZ25hdHVyZSABdTcPgyX8yVTD-6TbXkRBMIld0slF_WoLEFV4QpTzWwoUJAKRYEXDS127.0.0.1Perl + Net::Async::HTTP/0.44mԃc]c!E@anon-20191002_181700-227:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2cV5HQmpVLmszdC46Z0kKMDAyZnNpZ25hdHVyZSBxHji81-3Tl3UczSXzJg5qfZZgB13uIQbfIRym3wSDDgoWRSATVMLKK127.0.0.1Perl + Net::Async::HTTP/0.44mߞb]c!E@anon-20191002_181700-226:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFd5NFZtUHRFOSYxblE1LVkKMDAyZnNpZ25hdHVyZSCVI9s0qIkXNTwkwqnYOkibSgJyaCo_fwegq8COseHYwwoAUORQAXWJL127.0.0.1Perl + Net::Async::HTTP/0.44mÃa]c!E@anon-20191002_181700-225:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGgrMUR4Q0JRdSYqMCo6cFYKMDAyZnNpZ25hdHVyZSA-bbqwnLjAzn7aFa0FsGgHBD5osaljIstOUBLYh80AXwoZNKOABDJUU127.0.0.1Perl + Net::Async::HTTP/0.44m_`]c!E@anon-20191002_181700-224:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA9QDRGT0t0TFkyXnlQMTkKMDAyZnNpZ25hdHVyZSD6ykFyEMZQKJtLTzJ9yjKPCcaZOJZWxkGQFtSCDeqSIAoVJTZAJOEFY127.0.0.1Perl + Net::Async::HTTP/0.44m_]c!E@anon-20191002_181700-223:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZXVy50MVdNTHF1bEZ5TFoKMDAyZnNpZ25hdHVyZSCgkIRbXxnz-j2-gK-uHrcaHrgl60CO4Wf6nYmqJ5O6BQoIOQWEQAUDW127.0.0.1Perl + Net::Async::HTTP/0.44m^]c!E@anon-20191002_181700-222:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVzOEBHLlItVjA4SjBGZGsKMDAyZnNpZ25hdHVyZSAKqdb-hXlfoAJG4zWoJDQqElxSrySuPjAMSbDJIEx7TQoVOKSLIDSSO127.0.0.1Perl + Net::Async::HTTP/0.44mE]]c!E@anon-20191002_181700-221:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQoREITENATXK127.0.0.1Perl + Net::Async::HTTP/0.44m   4 h 9md]c@anon-20191002_181700-252:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13Zgo127.0.0.1d]c@anon-20191002_181700-250:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgo127.0.0.1d]c@anon-20191002_181700-251:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awo127.0.0.1fa[a@anon-20191002_181700-24:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRG9HRm12alVGYWFfMUJFQAowMDJmc2lnbmF0dXJlIFFoL9mI5NswhyeyhrjrJx_8FHF1m-2F6u5c_gMDbULCCg127.0.0.1d]c@anon-20191002_181700-249:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0Qo127.0.0.1d]c@anon-20191002_181700-248:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813Qo127.0.0.1d]c@anon-20191002_181700-247:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwo127.0.0.1d]c@anon-20191002_181700-246:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwo127.0.0.1d]c@anon-20191002_181700-245:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAo127.0.0.1d]c@anon-20191002_181700-244:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQo127.0.0.1  HXeQa$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1113}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q"], "type": "m.room.history_visibility", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041339706, "hashes": {"sha256": "UgjCTfOOLhy5PgFXNG5Al3hTyJxCqbZimZWlCmy59xI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rFi0DCPwGMwGuXNmCrxs1Ye/WxIZG9x3Tto/Ovh+k8CQCfwkob8K/x1fX5ZltgGcX2GrYBE/a75PdFk2JapDg"}}, "unsigned": {"age_ts": 1570041339706, "replaces_state": "$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q"}}WeQa$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1112}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM"], "type": "m.room.history_visibility", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041338761, "hashes": {"sha256": "NsIpxg33Lq+fwhxvxcBvh9NItAfDncB/CopAGe3WG/g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "39CycjQjpT65s9xV2fDoMyljrjZd+lHNfqkcX39CrNPfU++7ICNWaZ9WdIrXyMgJgAO2RCPP4xUA5trUJV+XCw"}}, "unsigned": {"age_ts": 1570041338761}}tVeQau$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1111}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg"], "type": "m.room.join_rules", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041337895, "hashes": {"sha256": "cYLMXQ1D/0WzdCLFwaMmTg7JwrM1J9spxazvNcARRLs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KCHiFbZ6x74Y3kJ781UWrolVWqg64mMtVPrXVkqz37N0FnQLYddAdX3ScwahwSx4E6eBPtEoJHikx5hTSl/lDA"}}, "unsigned": {"age_ts": 1570041337895}}kUeQac$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "stream_ordering": 1110}{"auth_events": ["$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "type": "m.room.power_levels", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"users": {"@anon-20191002_181700-222:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041337004, "hashes": {"sha256": "8zisB5ulpI+sLz6UH1gNkG0hFqQ2n+RmLogT8o5ZldA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9gjAKR69T/KJrox0y05BT+jPJMUEqTpE5LKp7ToMY4UGs5O84uB4Dv80pPl79ym/C75m4dxIfUNC6cQ8Dd1WAg"}}, "unsigned": {"age_ts": 1570041337004}} ]yV3B% B+t5 h E " q N 7 z c $  s V 6  | _ ? $ hM*yV3b<%kE" a"pU2 P 3 Dm.room.guest_accessG"? Cm.room.history_visibilityF"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-215:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-214:localhost:8800>']m.room.member@anon-20191002_181700-214:localhost:88003 m.room.guest_access"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ Bm.room.join_rulesE3 Am.room.power_levelsD>']@m.room.member@anon-20191002_181700-238:localhost:8800C' ?m.room.createB"? >m.room.history_visibilityA%))=m.room.aliaseslocalhost:8800@"? 9 :m.room.canonical_alias=3 9m.room.power_levels<>']8m.room.member@anon-20191002_181700-237:localhost:8800;' 7m.room.create:%))6m.room.aliaseslocalhost:88009"? 5m.room.history_visibility8/ 4m.room.join_rules79 3m.room.canonical_alias63 2m.room.power_levels5>']1m.room.member@anon-20191002_181700-236:localhost:88004' 0m.room.create3"? /m.room.history_visibility2"? .m.room.history_visibility1/ -m.room.join_rules03 ,m.room.power_levels/>']+m.room.member@anon-20191002_181700-234:localhost:8800.' *m.room.create-"? )m.room.history_visibility,"? (m.room.history_visibility+/ 'm.room.join_rules*3 &m.room.power_levels)>']%m.room.member@anon-20191002_181700-232:localhost:8800(' $m.room.create'%))#m.room.aliaseslocalhost:8800&"? "m.room.history_visibility%/ !m.room.join_rules$9  m.room.canonical_alias#3 m.room.power_levels">']m.room.member@anon-20191002_181700-231:localhost:8800!' m.room.create %))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-228:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-226:localhost:8800' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3  m.room.power_levels>'] m.room.member@anon-20191002_181700-224:localhost:8800'  m.room.create"?  m.room.history_visibility "?  m.room.history_visibility / m.room.join_rules 3 m.room.power_levels >']m.room.member@anon-20191002_181700-222:localhost:8800 ' m.room.create"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-220:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-218:localhost:8800>']m.room.member@anon-20191002_181700-218:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-217:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-216:localhost:8800>']m.room.member@anon-20191002_181700-216:localhost:88003 m.room.guest_access"? m.room.history_visibility  | k\eQac$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1117}{"auth_events": ["$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "type": "m.room.power_levels", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"users": {"@anon-20191002_181700-224:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041343546, "hashes": {"sha256": "DGEnmB28Veqnafrjz2VhSRfFQ/7aSnIIKUNcnxS0FJs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pnQAlfNREuej8agLDYF2+ao6SvLleV4AiSmu/0QxcMsQE6Ig7zyFHIR0RoYHpEBdP37qCT+3wRJXxinrmsS5Ag"}}, "unsigned": {"age_ts": 1570041343546}}v[eQay$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1116}{"auth_events": ["$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY"], "prev_events": ["$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY"], "type": "m.room.member", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-224", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-224:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041342979, "hashes": {"sha256": "Zj2cykMFonudY3i4SGRYe1oOpZulzxJZf0/QmFXAcEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ncs4skbVXqHUXlLuCoJJtUT9R0Zej3ngWQLjV3VD29iBQov6GIBbklXjRBsH2QqzPSQmaITzu7CMTwuqFLX8AQ"}}, "unsigned": {"age_ts": 1570041342979}}iZeQa_$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1115}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-224:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041342293, "hashes": {"sha256": "73nCH7cwiG4vDoSQEbc75ZOcrWL58CMVtRIC6F4yf4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EqbZte8AINK5uHlzELK8x5+ebpcThLBuqHugByIoo0VsqNxOYHcfO8tgMYcEwDgrgr679OGQi86Sn+iGGgFpDg"}}, "unsigned": {"age_ts": 1570041342293}}YeQi$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ!vRRNxNyGboLHNhqQvr:localhost:8800{"token_id": 243, "txn_id": "112", "stream_ordering": 1114}{"auth_events": ["$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg", "$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8", "$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho"], "prev_events": ["$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ"], "type": "m.room.message", "room_id": "!vRRNxNyGboLHNhqQvr:localhost:8800", "sender": "@anon-20191002_181700-222:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041340550, "hashes": {"sha256": "oz8v4CbENVdmGA4eWBCYPmMJO0UicE83ResWwbTm2uE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GfvewCG9if6+lhUPh3qyJhewf1eW9JdRSfe0jqAOcrfZvyI067o2QsK8fst3YDx+miclmS75o6a8co0VBHatBg"}}, "unsigned": {"age_ts": 1570041340550}} VG\*|Jjp  v D $1 | J  PP  >  W % ] +ci8p>8 vDV\*1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 11e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo:1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM 1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo - 1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw 41e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4G1e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78g1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w:1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M 1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQb1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 &1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcML1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo <1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 61e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70W1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE[1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo{1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo.1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4c1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0K1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoH1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCky1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIy1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEE1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4d1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 C1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 =1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls <1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 71e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 !1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo c1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko j1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 R6 / y > ! Q Er;Et5 PSv9D%RK^Q']!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800 BQ? !anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibility :Q/ !anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rules <Q3 !anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels ^Q']!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800 6Q' !anErKtXIsVKEEsrzWM:localhost:8800m.room.create  7<Q3 !atnRTMliktaVUhMVID:localhost:8800m.room.power_levelsX^Q']!atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-536:localhost:8800[^Q']!atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800W:Q/ !atnRTMliktaVUhMVID:localhost:8800m.room.join_rulesYBQ? !atnRTMliktaVUhMVID:localhost:8800m.room.history_visibilityZ6Q' !atnRTMliktaVUhMVID:localhost:8800m.room.createV<Q3 !aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels?^Q']!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800>:Q/ !aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rules@BQ? !aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibilityA6Q' !aknLNLxfChlLvFYhkJ:localhost:8800m.room.create=5Q% !aaRwQZdNAliyvRHpjs:localhost:8800m.room.topic9Q- !aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstone:Q/ !aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_acl>Q7 !aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups<Q3 !aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels4Q# !aaRwQZdNAliyvRHpjs:localhost:8800m.room.name^Q']!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800:Q/ !aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rulesBQ? !aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility<Q3 !aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access:Q/ !aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption6Q' !aaRwQZdNAliyvRHpjs:localhost:8800m.room.create6Q' !aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatar<Q3 !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels^Q']!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800:Q/ !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rulesBQ? !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibility6Q' !aZwMKYDXJRlSKjQNWM:localhost:8800m.room.createVQ3A!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_changeNQ31!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changesCQ?!aWvVRVaDflYyyGTOdD:localhost:8800m.room.third_party_invite5<Q3 !aWvVRVaDflYyyGTOdD:localhost:8800m.room.power_levels^Q']!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-151:localhost:8800^Q']!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-150:localhost:8800^Q']!aWvVRVaDflYyyGTOdD:localhost:8800m.room.member@anon-20191002_181700-149:localhost:8800:Q/ !aWvVRVaDflYyyGTOdD:localhost:8800m.room.join_rulesBQ? !aWvVRVaDflYyyGTOdD:localhost:8800m.room.history_visibility6Q' !aWvVRVaDflYyyGTOdD:localhost:8800m.room.create;Q3 !aWbcZNVBalJilCEsdr:localhost:8800m.room.power_levelsy\Q'[!aWbcZNVBalJilCEsdr:localhost:8800m.room.member@anon-20191002_181700-38:localhost:8800xK BQ? !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility &:Q/ !aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rules <Q3 !aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels ^Q']!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800 ^Q']!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800 <Q3 !aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_access ~6Q' !aiOswwhoZqjhcjzbzc:localhost:8800m.room.create  " 0 @ P ` K &6FVfv.u% ]@anon-20191002_181700-254:localhost:8800$2b$04$F1N2X/qfoZ.aaFe9eoR1QuHvaL.HiXSKCzR5PQZhX6bstchyAL9wa]u$ ]@anon-20191002_181700-253:localhost:8800$2b$04$rbTGO3Kw2vs5CdlA2QR5AennjxYx.dop45xazryBfpyOXx4oZaujy]u# ]@anon-20191002_181700-252:localhost:8800$2b$04$RRFaEpieIohI/7YotMVWPOglkM.zTgsQ0EN8lQPSVmZyPyhwXT662]u" ]@anon-20191002_181700-251:localhost:8800$2b$04$9BJ7FXvr4MleL60kge1AmegI2yr4L8.5Yj1g8.CVbG05w5M9dUmqO]u! ]@anon-20191002_181700-250:localhost:8800$2b$04$pHjn.0xQQbcpiV3Tj7AM.uRLFWslpiCWCoGqOb6zhCxL7Pdqv0Zga]u ]@anon-20191002_181700-249:localhost:8800$2b$04$Qx1Mc9/NJcqAFkeL5aaUWOZCdT3IdJP8OOHXlx5G8PbTnYsmyjSbi]u ]@anon-20191002_181700-248:localhost:8800$2b$04$s9.NI9DyzGBS5zUuuHAgQ.IPhHYr9PTr0kJLWztlPixH5MeQsSUhe]u ]@anon-20191002_181700-246:localhost:8800$2b$04$fNa5lTMzTh6grAMuD8vMOucwVOtMYvFY65f2WVQgYLSrSzM4GInRS]nu ]@anon-20191002_181700-247:localhost:8800$2b$04$baR9dWo8uzjVdzeESeEaLOjdT.VtC0K6bRiO2TJvtnDwYSlcDmShu]mu ]@anon-20191002_181700-245:localhost:8800$2b$04$t1RZHs94HV4AwdUiscwT1uVj1fOD0wsMdlQHeNFYHPpODHj9sulbu]Xu ]@anon-20191002_181700-244:localhost:8800$2b$04$g5xNohsWrwiX.FBIGOopvuNisK9qIbjI6r.CdARwdS57ZVUF5M5Rq]Xu ]@anon-20191002_181700-243:localhost:8800$2b$04$hvZdTP6XA0wGj5zNvnPQWeAPKdnrjiaIOR0En84oGb66Nhe2ZjPxq]Nu ]@anon-20191002_181700-242:localhost:8800$2b$04$ONLD4oZV/LKFnouXj3JEbuOvvTpLvlRGjeWmMBV7nQrRYw5MfwluW]Nu ]@anon-20191002_181700-241:localhost:8800$2b$04$nv2lcdLaIefdFbtMLRGAke4gkzDegvEfQQZE2qnu2SLgyfFni0u8W]Hu ]@anon-20191002_181700-240:localhost:8800$2b$04$jp7jCeAVJdvNcvWUc9AYFeWBiVRsBgbrZw405Z63B.BS/V8Bqxs0m]Hu ]@anon-20191002_181700-239:localhost:8800$2b$04$7lismPReykr5t24SYKe0NuPheUZU1Ali5SwBh96Lm7hYcVl/mKPYe]?u ]@anon-20191002_181700-238:localhost:8800$2b$04$q5HdsknvoLQYGmgMcUWAHuKlfw8AT3lDWavO83gNiNJhX8r3MtSjO]?u ]@anon-20191002_181700-237:localhost:8800$2b$04$S88maDtvD36.srzELSP7ZekqxL/uQGYj3r8y9/bJHU6chKF7cpF7q]7" 1 @36:localhost:8800]7u ]@anon-20191002_181700-236:localhost:8800$2b$04$6zqmG8WPWTLMP7b9HYkng.ThTcMq1IMOEMUhYvt9oHBq3gMBvKTzq]0" 1 @35:localhost:8800]0u ]@anon-20191002_181700-235:localhost:8800$2b$04$24oAADm9RjzGcy2M2u3Js.qYOa1hbNx.D2nNz.eQGQoVI2iYMFcp.]*u ]@anon-20191002_181700-234:localhost:8800$2b$04$ktppnquTTc/3.ldQbx5CJemS0ZvXlQAAAsfSFoBKIqpjaEXyQki0a]*u ]@anon-20191002_181700-233:localhost:8800$2b$04$DNNi6y4ARwF8jONpXvsgA.mOfg.UfRj6c.HrsnVUZzQlaFny5OTTG]#u ]@anon-20191002_181700-232:localhost:8800$2b$04$dO4JJIM3gX6JrF5DSP9o1esLxNecGetSSSUDKNJLz2gO0TZGOywQS]#u ]@anon-20191002_181700-231:localhost:8800$2b$04$2OM0zPRA6A6yO5YiToc/ZuyzWL8bl5Co1L..//k56j9L4S/nxhI1e]u ]@anon-20191002_181700-230:localhost:8800$2b$04$TsLRa7SXCPj7i62B0zewq.B8JJHjbm7/VzN8EZ1kSrB1f4Uzgk8oq]u ]@anon-20191002_181700-229:localhost:8800$2b$04$R/pa5utiAUeucsNnrL9XiO.tYTu4cW3jHqMPa8U.iAkb4wLOEArkK] u ]@anon-20191002_181700-228:localhost:8800$2b$04$Blm2VXTI24GbnLLxqveVfOj8eD/NQ2CvZWQp4femaGVhsovSXQI.C] u ]@anon-20191002_181700-227:localhost:8800$2b$04$aJ0j3pHeCtLr6eZoBgy4gOiyCvQ.CZexuqNSZYfEUc1n7C9IthAH2] u ]@anon-20191002_181700-226:localhost:8800$2b$04$mHO.08CUQEBK7qNGbVg9gus2DHCE5xNUc1WV1vfJsC4FKD.SpOWLK]u ]@anon-20191002_181700-225:localhost:8800$2b$04$s7rmd5r74BEpcqD1r/S5YeaQdNFbNEXfGJHxcOyfT0XVJ5nlFehWy]u ]@anon-20191002_181700-224:localhost:8800$2b$04$ReAQlLGc5NC1uXMzy4P/9e387EGO3/y6wVFcykU136WTf6D7.k8tK]u ]@anon-20191002_181700-223:localhost:8800$2b$04$3VN7N4nsdJizKOYqKo.oXObEAVQ0LpnNybd2LCXzFsC0YY/2sIEiK] CP QU8l 3 T  p 7   T S o6Rn qq n55 7 Or8e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEsha256y8e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4sha2568e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awsha2568e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEsha2568e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51Msha2568e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4sha2568e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAMsha25608e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbssha2568e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMsha256Q8e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccsha256l8e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6iksha256B8e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ecsha2568e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQosha2568e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUsha2568e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Qsha2567e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ksha256}8e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMsha256 =8e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatYsha256-8e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEsha256 78e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wsha256 8e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4ssha256 J8e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIosha2568e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYsha2568e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQsha256j8e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGosha2568e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEsha256X8e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxwsha256<8e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0sha2568e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMksha2568e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCssha256A8e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivkssha256I8e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxgsha2568e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Qsha2568e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEsha2568e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFEsha2568e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0sha25688e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0sha2568e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4sha256 8e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78sha2568e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3posha2568e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwsha256W8e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuksha2568e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMsha2568e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebhosha256 8e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9osha256[7e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0sha25688e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBssha256[8e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMcsha256-8e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58sha256'7e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kksha256a8e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4sha2568e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4sha2568e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmssha2568e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArMsha25678e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYsha2568e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0sha25648e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gsha2568e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpgsha256 |8e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGIsha2568e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUssha256z8e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIsha2568e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFosha256 @8e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwsha2568e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAsha256 8e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIsha2568e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawsha2568e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQsha256 PL  W %  ] +ci8*p> $\vD|J  }P V18q? K w E  jj21e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo l1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls =1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 81e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw t1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc 91e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ901e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE01e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg:1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA#1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw&1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4f1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM ~1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIt1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho21e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAD1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMW1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY&1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8T1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasx1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMg1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsK1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ21e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0~1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8f1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso31e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 H1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o|1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F41e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs{1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI41e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII a} { y w u sqomkigeca~YeeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~XeeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~WeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~VeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~UeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~TeeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~SeeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~ReeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~QeeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~PeeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~OeeQ$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~NeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800~MeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~LeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800~KeeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800~JeeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~IeeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800~HeeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800~GeeQ$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~FeeQ$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800~EeeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~DeeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~CeeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800~BeeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~AeeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~@eeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800~?eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~>eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800~=eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800~<eeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800~;eeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800  4`eQi$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "txn_id": "113", "stream_ordering": 1121}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw"], "type": "m.room.message", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"msgtype": "m.text", "body": "mice"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041346562, "hashes": {"sha256": "8eejzS1thmojy+6kf8HEYKp7l/vZEGWjjZEjm0uWtzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WY6cHRiXf0VdUMfNgEJhck2B+ARFTthZjl/sj87I0Iyde86qvjVzNEIUmiVQQAnXQF3ZcJCyp3fNSpufsAc2AA"}}, "unsigned": {"age_ts": 1570041346562}}G_eQa$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1120}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs"], "type": "m.room.history_visibility", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041345855, "hashes": {"sha256": "VJ8MlcB+0c0vs42cGen22qN17U4LxMNCWS3Gjn5ziPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmwi0SN+ZDpxTrztnFF9CKakx14JWoBoecPEffo6icCnw58qhpou41TI2s5nmUc4buOqj/ebVvdWeYMVFScPCg"}}, "unsigned": {"age_ts": 1570041345855, "replaces_state": "$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs"}}^eQa$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1119}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI"], "type": "m.room.history_visibility", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041344747, "hashes": {"sha256": "p8RnFC0hu2ujDhtxvrBMfW4/RS8fkKMKc980WuTSERk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lYSlnmqXNuX3pn9OT2DTPh09epDG9eVrnbW1l1iIKcCYLfch+wc0AzmjBZ03eQFr4w7NdIw5rTQc6Mvh/GOTBQ"}}, "unsigned": {"age_ts": 1570041344747}}t]eQau$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800{"token_id": 245, "stream_ordering": 1118}{"auth_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk", "$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY", "$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o"], "prev_events": ["$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk"], "type": "m.room.join_rules", "room_id": "!EfJcWhdjNARbuHYrqU:localhost:8800", "sender": "@anon-20191002_181700-224:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041344204, "hashes": {"sha256": "Oa8IdXCL1+u2V+FT4hJUxnLmHHxjHNEpigV8XqngIec"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7qOxgbyXCFyhiYyLB4BOh3FflAoK2RLvH1VnYs+zz5P7V3eyZik4bsY10m1ErSSrwykk7JKYY3vTdld45kgBQ"}}, "unsigned": {"age_ts": 1570041344204}} PL  W %  ] +ci8*p> $\vD|J  }P V18q? K w E  jj21e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo l1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls =1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo 81e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw r1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc 91e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ901e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE01e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg:1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA#1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw&1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4f1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM ~1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIt1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho21e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw 1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAD1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMW1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY&1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8T1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasx1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMg1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsK1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ21e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0x1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8`1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso-1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 H1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o|1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F41e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs{1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI41e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII i g 4 h5i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2cV5HQmpVLmszdC46Z0kKMDAyZnNpZ25hdHVyZSBxHji81-3Tl3UczSXzJg5qfZZgB13uIQbfIRym3wSDDgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFd5NFZtUHRFOSYxblE1LVkKMDAyZnNpZ25hdHVyZSCVI9s0qIkXNTwkwqnYOkibSgJyaCo_fwegq8COseHYwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGgrMUR4Q0JRdSYqMCo6cFYKMDAyZnNpZ25hdHVyZSA-bbqwnLjAzn7aFa0FsGgHBD5osaljIstOUBLYh80AXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA9QDRGT0t0TFkyXnlQMTkKMDAyZnNpZ25hdHVyZSD6ykFyEMZQKJtLTzJ9yjKPCcaZOJZWxkGQFtSCDeqSIAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZXVy50MVdNTHF1bEZ5TFoKMDAyZnNpZ25hdHVyZSCgkIRbXxnz-j2-gK-uHrcaHrgl60CO4Wf6nYmqJ5O6BQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVzOEBHLlItVjA4SjBGZGsKMDAyZnNpZ25hdHVyZSAKqdb-hXlfoAJG4zWoJDQqElxSrySuPjAMSbDJIEx7TQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9TU0BZXztMcDUmRXR6S0AKMDAyZnNpZ25hdHVyZSCvaKxJ8cAdKo-ZMgmVZOP8lhm-QuW_YXdN7lNO46YgiQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl4cGFES0h0TFlpbHRQWWgKMDAyZnNpZ25hdHVyZSB5CParrO0ayH3edYllbDYrH1xpBlCw5uqkLaUD9NDOEgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE0US5UZWNCSmktNWZnLj0KMDAyZnNpZ25hdHVyZSDpBiFDhrg6WRbu9V2DbpTAfx1K6hhRD5bg4veaC3HPxwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDE1RXhYI2QtYUxpSjMuaTQKMDAyZnNpZ25hdHVyZSA-xnryH5X9m-_3vJOBjJKQV8QlwG8nOKBm4wyO5nDshQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtHLEpmeUphemFwNjBidkUKMDAyZnNpZ25hdHVyZSBEhECRtjZoApGuPKn83dHoPgZuk0uf0wEzkZJnBRHzeAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlwSi06TU9-al5NX1B3SEIKMDAyZnNpZ25hdHVyZSBTT_OqPRPEVhgdKHeaw1uty4TfBfv-BH8unS_Eq8Cz0wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVXlh3I1d6b2RsNEFFOjoKMDAyZnNpZ25hdHVyZSAHzQWs-vSAnweH1KyXmnNdlp7bNk42yOMD8Gumby3NAgo   *tdeQau$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1125}{"auth_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU", "$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU"], "type": "m.room.join_rules", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041350756, "hashes": {"sha256": "rUx/v8nPjki9R8QiZUHYbF6jJkHg+tDl8Wf78VAG6As"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J2N6r2tBCSuLUbDxmMF5UIavhIfWYpBqHgr0VldooS9kpgfOutPWEUg51q/US7ijDkNb0X3PAwhg0XyP3e/GAw"}}, "unsigned": {"age_ts": 1570041350756}}kceQac$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1124}{"auth_events": ["$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "type": "m.room.power_levels", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"users": {"@anon-20191002_181700-226:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041349663, "hashes": {"sha256": "g0VFanJS8J5M8lp1mkDUKA6GxezUfteTZntSKIY2M90"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "De1PPilyjW2qCukz1mU5ZBT4Fe9dBEhSFCQ+FD3idSQyniCm/ybwAJGBGItzDhcbH1tCrmCVGRSl8BvCO07VDA"}}, "unsigned": {"age_ts": 1570041349663}}vbeQay$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1123}{"auth_events": ["$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I"], "prev_events": ["$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I"], "type": "m.room.member", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-226", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-226:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041349112, "hashes": {"sha256": "kkYrPGmlpjnTJTX3G0md5z2tC3QzIWQEg4H3uP77BYk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rDcXRsQqHjZ9AVCXbXQiVGwn5il34eetTUbyQLiNDQfdyyTsNu4zKcYDtmAXG0QmuHYxIU17s1txWAEvScRFAQ"}}, "unsigned": {"age_ts": 1570041349112}}iaeQa_$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1122}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-226:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041348386, "hashes": {"sha256": "QqPfg18mzu4GlTF4v1AIvDicqUj0gjE9xUoOhY8m9OE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BFZ7pEbd+mRhKxFR8FR0ujO78uRuAoIQKRNldtcNus8hR22ug+RmLeVQza3AevUxzZqRz21+DWXsDPE3lp6aBg"}}, "unsigned": {"age_ts": 1570041348386}} #c$/ T x   3 W|3>h#Jcr9Q))e6!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9go8Q? e5!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibility$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwg7Q/ e4!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rules$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYl6Q9 e3!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwi5Q3 e2!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo 4Q']e1!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEc3Q' e0!DoiZErAdypBUMZKaeJ:localhost:8800m.room.create$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSko2Q? e/!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7ko1Q? e.!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIg0Q/ e-!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rules$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8i/Q3 e,!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA .Q']e+!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4c-Q' e*!qSUSLLWjDxcGibUZdT:localhost:8800m.room.create$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7oo,Q? e)!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMo+Q? e(!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEg*Q/ e'!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rules$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwi)Q3 e&!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY (Q']e%!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIc'Q' e$!RmwbYvIIQyPlHlClty:localhost:8800m.room.create$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mr&Q))e#!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwco%Q? e"!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibility$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwg$Q/ e!!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rules$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUl#Q9 e !SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_alias$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoi"Q3 e!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU !Q']e!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgc Q' e!SvKwEALYoNreUvqAlp:localhost:8800m.room.create$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkrQ))e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4oQ? e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibility$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUgQ/ e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rules$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqElQ9 e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_alias$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oiQ3 e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY Q']e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0cQ' e!fOJLpnbtgKNxxVDquX:localhost:8800m.room.create$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4oQ? e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibility$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekgQ/ e!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rules$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA -RM H C > 9 4/*|%w rmhc TQe!wsvXTJXouVkEZcCFsD:localhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKETQe!wsvXTJXouVkEZcCFsD:localhost:8800$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuITQe!wsvXTJXouVkEZcCFsD:localhost:8800$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2ATQe!wsvXTJXouVkEZcCFsD:localhost:8800$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RETQe!wsvXTJXouVkEZcCFsD:localhost:8800$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpATQe!wsvXTJXouVkEZcCFsD:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMTQe!wsvXTJXouVkEZcCFsD:localhost:8800$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQTQe!DoiZErAdypBUMZKaeJ:localhost:8800$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfoTQe!DoiZErAdypBUMZKaeJ:localhost:8800$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzoT Qe!DoiZErAdypBUMZKaeJ:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGETQe!DoiZErAdypBUMZKaeJ:localhost:8800$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSkTQe!qSUSLLWjDxcGibUZdT:localhost:8800$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7kTQe!qSUSLLWjDxcGibUZdT:localhost:8800$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czITQe!qSUSLLWjDxcGibUZdT:localhost:8800$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8TQe!qSUSLLWjDxcGibUZdT:localhost:8800$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFATQe~!qSUSLLWjDxcGibUZdT:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4TQe}!qSUSLLWjDxcGibUZdT:localhost:8800$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7oTQe|!RmwbYvIIQyPlHlClty:localhost:8800$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMTQe{!RmwbYvIIQyPlHlClty:localhost:8800$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMETQez!RmwbYvIIQyPlHlClty:localhost:8800$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwT~Qey!RmwbYvIIQyPlHlClty:localhost:8800$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYT}Qex!RmwbYvIIQyPlHlClty:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIT|Qew!RmwbYvIIQyPlHlClty:localhost:8800$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3MT{Qev!SvKwEALYoNreUvqAlp:localhost:8800$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gTzQeu!SvKwEALYoNreUvqAlp:localhost:8800$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcTyQet!SvKwEALYoNreUvqAlp:localhost:8800$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwTxQes!SvKwEALYoNreUvqAlp:localhost:8800$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUTwQer!SvKwEALYoNreUvqAlp:localhost:8800$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoTvQeq!SvKwEALYoNreUvqAlp:localhost:8800$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUTuQep!SvKwEALYoNreUvqAlp:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgTtQeo!SvKwEALYoNreUvqAlp:localhost:8800$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkTsQen!fOJLpnbtgKNxxVDquX:localhost:8800$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4TrQem!fOJLpnbtgKNxxVDquX:localhost:8800$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUTqQel!fOJLpnbtgKNxxVDquX:localhost:8800$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqETpQek!fOJLpnbtgKNxxVDquX:localhost:8800$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oToQej!fOJLpnbtgKNxxVDquX:localhost:8800$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYTnQei!fOJLpnbtgKNxxVDquX:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0TmQeh!fOJLpnbtgKNxxVDquX:localhost:8800$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4TlQeg!vAUAIZrCnHTeMGeNuw:localhost:8800$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0XwTkQef!vAUAIZrCnHTeMGeNuw:localhost:8800$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekTjQee!vAUAIZrCnHTeMGeNuw:localhost:8800$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA ~z v r n j fb^ZVRNJFeeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800}eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI!qSUSLLWjDxcGibUZdT:localhost:8800|eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800{eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800zeeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800yeeQ$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800xeeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800weeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800veeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800ueeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800teeQ$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800seeQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800reeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800qeeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800peeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800oeeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800neeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800meeQ$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800leeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800keeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800jeeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800ieeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800heeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800geeQ$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800feeQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800eeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800deeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800  wvheQay$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1129}{"auth_events": ["$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4"], "prev_events": ["$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4"], "type": "m.room.member", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-228", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-228:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041358734, "hashes": {"sha256": "AkxNrLkh8DkJejq7pn9urZO1GEJnXywGQbfLkjUAYIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "doIL9bUdlSGjrTD+wpep/83ytYu36307KTvtnhrQbSL1sEs9TsGFLkibcYsUKbRWAPHQrlT5RlEtPr5cgu+5CA"}}, "unsigned": {"age_ts": 1570041358734}}igeQa_$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1128}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-228:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041357468, "hashes": {"sha256": "NioK2yQfbYKc0aVAWZ1N1l1FKovuxdhY25ytGOOdd+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gzPzXi+7lGRE9QBg68l2U3AqSjdcLXRjw8mZe5ID4NyPJ+0IRraGSg2v7QPCJ5RgCAON0FqoV6xaUY+fkVO6BQ"}}, "unsigned": {"age_ts": 1570041357468}}feQi$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "txn_id": "114", "stream_ordering": 1127}{"auth_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU", "$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek"], "type": "m.room.message", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"body": "mice", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041353134, "hashes": {"sha256": "mrUM/pe1hfX1b2Ljo0u3iI234vAHxy4VGNfu3m3U52A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MlSogDzhyMsgYbw+52YCK3QtUBpceuebais2R60i4F/Nc5ft0oZ2ix9jAJK55P0KTOSHCxW72eRv/TFFuC/3Dw"}}, "unsigned": {"age_ts": 1570041353134}}eeQa$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800{"token_id": 247, "stream_ordering": 1126}{"auth_events": ["$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU", "$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I", "$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM"], "prev_events": ["$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA"], "type": "m.room.history_visibility", "room_id": "!vAUAIZrCnHTeMGeNuw:localhost:8800", "sender": "@anon-20191002_181700-226:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041351746, "hashes": {"sha256": "N/kaZiyBZiQ7VrMDKOUvzBeiwiNxJoyvglS8P1ei/Xw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QnQrssxYOxaT8U2fJ+F0djAje8sYRhjBu0is8EQ5XqCY6z0WDNCJPipHyXCkSWWSu9ebgGRI+Nf+zGRsGEo2DQ"}}, "unsigned": {"age_ts": 1570041351746}} 8P e  f  o!tw0:8} e'Q  ]$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7om.room.create!qSUSLLWjDxcGibUZdT:localhost:8800mYZmY@anon-20191002_181700-234:localhost:8800,|e?Q ]$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMm.room.history_visibility!RmwbYvIIQyPlHlClty:localhost:8800mPmQ@anon-20191002_181700-232:localhost:8800,{e?Q ]$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEm.room.history_visibility!RmwbYvIIQyPlHlClty:localhost:8800mKmM@anon-20191002_181700-232:localhost:8800$ze/Q ]$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwm.room.join_rules!RmwbYvIIQyPlHlClty:localhost:8800mIjmJ.@anon-20191002_181700-232:localhost:8800&ye3Q ]$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYm.room.power_levels!RmwbYvIIQyPlHlClty:localhost:8800mDmFT@anon-20191002_181700-232:localhost:8800 xe'Q ]$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIm.room.member!RmwbYvIIQyPlHlClty:localhost:8800mBmC#@anon-20191002_181700-232:localhost:8800w e'Q  ]$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mm.room.create!RmwbYvIIQyPlHlClty:localhost:8800m@Gm@@anon-20191002_181700-232:localhost:8800!ve)Q ]$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gm.room.message!SvKwEALYoNreUvqAlp:localhost:8800m8{m8@anon-20191002_181700-231:localhost:8800!ue)Q ]$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcm.room.aliases!SvKwEALYoNreUvqAlp:localhost:8800m5m5@anon-20191002_181700-231:localhost:8800,te?Q ]$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwm.room.history_visibility!SvKwEALYoNreUvqAlp:localhost:8800m1[m3@anon-20191002_181700-231:localhost:8800$se/Q ]$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUm.room.join_rules!SvKwEALYoNreUvqAlp:localhost:8800m.m/@anon-20191002_181700-231:localhost:8800)re9Q ]$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMom.room.canonical_alias!SvKwEALYoNreUvqAlp:localhost:8800m).m,@anon-20191002_181700-231:localhost:8800&qe3Q ]$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUm.room.power_levels!SvKwEALYoNreUvqAlp:localhost:8800m$m&O@anon-20191002_181700-231:localhost:8800 pe'Q ]$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgm.room.member!SvKwEALYoNreUvqAlp:localhost:8800mm@anon-20191002_181700-231:localhost:8800o e'Q  ]$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkm.room.create!SvKwEALYoNreUvqAlp:localhost:8800m[m@anon-20191002_181700-231:localhost:8800!ne)Q ]$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4m.room.aliases!fOJLpnbtgKNxxVDquX:localhost:8800mm@anon-20191002_181700-228:localhost:8800,me?Q ]$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUm.room.history_visibility!fOJLpnbtgKNxxVDquX:localhost:8800mAmu@anon-20191002_181700-228:localhost:8800$le/Q ]$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEm.room.join_rules!fOJLpnbtgKNxxVDquX:localhost:8800m)m@anon-20191002_181700-228:localhost:8800)ke9Q ]$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3om.room.canonical_alias!fOJLpnbtgKNxxVDquX:localhost:8800mm@anon-20191002_181700-228:localhost:8800&je3Q ]$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYm.room.power_levels!fOJLpnbtgKNxxVDquX:localhost:8800mQm@anon-20191002_181700-228:localhost:8800 ie'Q ]$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0m.room.member!fOJLpnbtgKNxxVDquX:localhost:8800mm1@anon-20191002_181700-228:localhost:8800h e'Q  ]$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4m.room.create!fOJLpnbtgKNxxVDquX:localhost:8800mm1@anon-20191002_181700-228:localhost:8800!ge)Q ]$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwm.room.message!vAUAIZrCnHTeMGeNuw:localhost:8800mӮm$@anon-20191002_181700-226:localhost:8800,fe?Q ]$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekm.room.history_visibility!vAUAIZrCnHTeMGeNuw:localhost:8800mBmѦ@anon-20191002_181700-226:localhost:8800 @H KzH.ZN Q T"q? w E( ` W % ] + j8c1i71e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4 1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMI1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4 1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw g1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw f1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM 1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM 1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s 0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKwX0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKwW1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg a1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew,1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi01e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsK1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsJ1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQq1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQp1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQo1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw.1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw-1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsL }21e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98;1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9At1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9As1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Ar1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc 1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc 1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc 0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31YD1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw h1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc1e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k >1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4X1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw/ Pm< xG, ~ M  X ' c 2  n = y H S"^-i8tCNY(`.f4/W]@anon-20191002_181700-305:localhost:8800?/V]@anon-20191002_181700-304:localhost:88000/U]@anon-20191002_181700-303:localhost:8800#/T]@anon-20191002_181700-302:localhost:8800/S]@anon-20191002_181700-301:localhost:8800 /R]@anon-20191002_181700-300:localhost:8800/Q]@anon-20191002_181700-299:localhost:8800/P]@anon-20191002_181700-298:localhost:8800/O]@anon-20191002_181700-297:localhost:8800/N]@anon-20191002_181700-296:localhost:8800/M]@anon-20191002_181700-295:localhost:8800/L]@anon-20191002_181700-294:localhost:8800.K]@anon-20191002_181700-293:localhost:8800.J] @anon-20191002_181700-292:localhost:8800.I] @anon-20191002_181700-291:localhost:8800}.H] @anon-20191002_181700-290:localhost:8800~.G] @anon-20191002_181700-289:localhost:8800t.F] @anon-20191002_181700-288:localhost:8800s.E] @anon-20191002_181700-287:localhost:8800k.D] @anon-20191002_181700-286:localhost:8800l.C]@anon-20191002_181700-285:localhost:8800[.B] @anon-20191002_181700-284:localhost:8800b.A] @anon-20191002_181700-283:localhost:8800\.@] @anon-20191002_181700-282:localhost:8800S.?] @anon-20191002_181700-281:localhost:8800R.>] @anon-20191002_181700-280:localhost:8800V.=] @anon-20191002_181700-279:localhost:8800L.<]@anon-20191002_181700-278:localhost:8800=.;] @anon-20191002_181700-277:localhost:8800D.:] @anon-20191002_181700-276:localhost:8800>.9]@anon-20191002_181700-275:localhost:8800-.8]@anon-20191002_181700-274:localhost:88008.7] @anon-20191002_181700-272:localhost:88005.6] @anon-20191002_181700-273:localhost:88006.5] @anon-20191002_181700-270:localhost:8800,.4] @anon-20191002_181700-271:localhost:8800-.3] @anon-20191002_181700-269:localhost:8800.2] @anon-20191002_181700-268:localhost:8800.1]@anon-20191002_181700-267:localhost:8800.0]@anon-20191002_181700-266:localhost:8800./] @anon-20191002_181700-265:localhost:8800..] @anon-20191002_181700-264:localhost:8800.-] @anon-20191002_181700-263:localhost:8800 .,]@anon-20191002_181700-262:localhost:8800.+] @anon-20191002_181700-261:localhost:8800.*]@anon-20191002_181700-260:localhost:8800.)] @anon-20191002_181700-259:localhost:8800.(]@anon-20191002_181700-258:localhost:8800.'] @anon-20191002_181700-257:localhost:8800.&]@anon-20191002_181700-255:localhost:8800.%] @anon-20191002_181700-254:localhost:8800.$] @anon-20191002_181700-253:localhost:8800.#] @anon-20191002_181700-252:localhost:8800."] @anon-20191002_181700-251:localhost:8800.!] @anon-20191002_181700-250:localhost:8800. ] @anon-20191002_181700-249:localhost:8800.] @anon-20191002_181700-248:localhost:8800.] @anon-20191002_181700-246:localhost:8800.] @anon-20191002_181700-247:localhost:8800.] @anon-20191002_181700-245:localhost:8800.] @anon-20191002_181700-244:localhost:8800.] @anon-20191002_181700-243:localhost:8800.] @anon-20191002_181700-242:localhost:8800.]@anon-20191002_181700-241:localhost:8800.] @anon-20191002_181700-240:localhost:8800.]@anon-20191002_181700-239:localhost:8800.] @anon-20191002_181700-238:localhost:8800.] @anon-20191002_181700-237:localhost:88001@36:localhost:8800.] @anon-20191002_181700-236:localhost:88001@35:localhost:8800.]@anon-20191002_181700-235:localhost:8800|.] @anon-20191002_181700-234:localhost:8800.]@anon-20191002_181700-233:localhost:8800u. ] @anon-20191002_181700-232:localhost:8800|. ] @anon-20191002_181700-231:localhost:8800v. ]@anon-20191002_181700-230:localhost:8800n. ]@anon-20191002_181700-229:localhost:8800f. ] @anon-20191002_181700-228:localhost:8800n.]@anon-20191002_181700-227:localhost:8800f Kj8q? x F  ~ L  R Y ' ` .f4l:r@xF~LR X&^,1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms]1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYD1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ01e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W411e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho%1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM~1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs}1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8T1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws+ 21e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7we1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYg1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls;1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj401e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg/1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Yj1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU 1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI:1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 81e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQo1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM 1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw921e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 90e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk<1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUA1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0o1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc?1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo(1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzwQ1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Ml1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E&1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA d1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk ,1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AU0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgn1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMW1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGot1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y~21e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE #s 4 Q ` ! > M{ 7@h0Xg eQ3 $7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels eQ']$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800a eQ' $Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800m.room.createp eQ))$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800meQ? $Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibilityeeQ/ $qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rulesjeQ9 $4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_aliasgeQ3 $1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels eQ']$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800aeQ' $1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800m.room.createmeQ? $ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibilitymeQ? $o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibilityeeQ/ $NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rulesgeQ3 $zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels ~eQ']$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800a}eQ' $Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800m.room.createm|eQ? $ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibilitym{eQ? $w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibilityezeQ/ $vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rulesgyeQ3 $KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels xeQ']$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800aweQ' $ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800m.room.createpveQ))$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800mueQ? $OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibilityeteQ/ $9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rulesjseQ9 $g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_aliasgreQ3 $fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels qeQ']$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800apeQ' $qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800m.room.createpoeQ))$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800mneQ? $l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibilityemeQ/ $9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rulesjleQ9 $mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_aliasgkeQ3 $kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels jeQ']$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800 a} { y w u sqomkigeca~xeeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~weeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~veeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800~ueeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~teeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~seeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800~reeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~qeeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~peeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800~oeeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800~neeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~meeQ$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800~leeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~keeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~jeeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~ieeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~heeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~geeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~feeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~eeeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~deeQ$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~ceeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~beeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~aeeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800~`eeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800~_eeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~^eeQ$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800~]eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800~\eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800~[eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800~ZeeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800  leQa$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1133}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE"], "type": "m.room.history_visibility", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041363521, "hashes": {"sha256": "zsqvR1uqObXg9GL3mWcG4x3Nq8yj5d6zau7aQT6AchM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d814YyqEstTvP3XRyA7Dvnw9DyCEIjPzKMGgQslAGSh5FZ7XvTKwPMveiHvPUWykOfsQCNS/gYeSDgG3j+VZDg"}}, "unsigned": {"age_ts": 1570041363521}}tkeQau$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1132}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o"], "type": "m.room.join_rules", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041362473, "hashes": {"sha256": "15n0vTnA4NJMB3XbRiij2wX9bG4Vzej9VTxSnQPmtPc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d0PonahalleCaF9yzKFWcHf6Z+XWnPcZBqqrZPfuIkhmSQXWhFSyloTnQkdIGtenBMqObGs/EnZP4Pjj3e85AQ"}}, "unsigned": {"age_ts": 1570041362473}}jeQa9$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1131}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY"], "type": "m.room.canonical_alias", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"alias": "#test-20191002_181700-36:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041360854, "hashes": {"sha256": "TvFQl3vmDb344H864UOcG2roQEZ4tW3r8DfQ8GzsMVs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6S2txiDRplgJzqseofLFBkShPTbzMEXEGfaUDT4BNB0ty+K9fszNq+Gi2ucaiHbXpn0+wRu+5V0wshGmkVsDAg"}}, "unsigned": {"age_ts": 1570041360854}}kieQac$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1130}{"auth_events": ["$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "type": "m.room.power_levels", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"users": {"@anon-20191002_181700-228:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041359697, "hashes": {"sha256": "y9hKmDzYYbvCCB1XYLEO4RmVP5BvIQ9YNycROxoLn2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "03T5Sz4dYtChXRbl8GEYMrnMP1VfGv0cvX5cw/6ZoEJQm5M2dJy+4Q+XZ8kmhL/vEjVVcOW/c5+FzixaURPpCA"}}, "unsigned": {"age_ts": 1570041359697}} Nj8p> w E  ) } K  Q  a W % ` .g5/m; sAzHO[U#1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 z1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU H1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y G1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo :1e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE 1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI R1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo 1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAy1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU)1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg(1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4O0e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4C1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMZ1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8f1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM*1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng01e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIi1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM[1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcV0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms61e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk0e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0x0e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY90e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAl1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ 91e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8\1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s01e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI91e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX41e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIo1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE_1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg S  \ okpeQac$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1137}{"auth_events": ["$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "type": "m.room.power_levels", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"users": {"@anon-20191002_181700-231:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041373865, "hashes": {"sha256": "Wa/SpALW7whzo9ZaFULVjZ8TT7lMg2zKAwy4ZYtX2Kw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9y9VDS6TCQvUMfqbyis6QQsaIemQKZRS9KcNTkcxxe656grxNkJoOyYWFAltrqkNnB/t3MV50LSLD/j7mKRXDw"}}, "unsigned": {"age_ts": 1570041373865}}voeQay$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1136}{"auth_events": ["$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk"], "prev_events": ["$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk"], "type": "m.room.member", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-231", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-231:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041372042, "hashes": {"sha256": "jKqy7VqsarLjCtAYs13+GsBoBn0UcQPhKTtHlWIrPBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j6DHS8zVPvcK6ZLMTEbv28ZNuB1CEJz4uEouY6OMS1OG4PfRv2vfPjgduyXeADSEplErduFFPwfevYlpcN3RAw"}}, "unsigned": {"age_ts": 1570041372042}}ineQa_$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1135}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-231:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041369947, "hashes": {"sha256": "pUEvcFWSYMYUiH3rsrpsh88PM2J28JtANOMIC8WlSks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iPEdDNCg84UVlkUDGU1kgP372kVo5ydnep2Q5VG8JeVlbtpIhb2yxNtFVBswixzBXUZbqOmRQ31PNDUA1+JyDg"}}, "unsigned": {"age_ts": 1570041369947}} meQaM$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800{"token_id": 249, "stream_ordering": 1134}{"auth_events": ["$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY", "$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4", "$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0"], "prev_events": ["$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU"], "type": "m.room.aliases", "room_id": "!fOJLpnbtgKNxxVDquX:localhost:8800", "sender": "@anon-20191002_181700-228:localhost:8800", "content": {"aliases": ["#test-20191002_181700-36:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041365948, "hashes": {"sha256": "0JrfuWhz2Eykc5K7cVwLr4iAxLNgNQH9uJrNN6QDQJM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7fEljZ7f22/OYvN9wdJ721n00GgVu9v3x0Ucz7xPzLt4RxeUpPCrMbC4yznqpxO89t8L2HF7vQelJXXhNjMNAA"}}, "unsigned": {"age_ts": 1570041365948}} <hm(). Y v   ? Jx%Mv{) =eQ']$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800joinm)eQ? $l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800m.room.history_visibilitye(eQ/ $9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800m.room.join_rulesj'eQ9 $mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800m.room.canonical_aliasg&eQ3 $kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800m.room.power_levels %eQ']$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800m.room.member@anon-20191002_181700-228:localhost:8800joina$eQ' $5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.createm#eQ? $QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibilitye"eQ/ $LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rulesa<eQ' $1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800m.room.createm;eQ? $ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibilitye:eQ/ $NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rulesg9eQ3 $zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels 8eQ']$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800joina7eQ' $Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800m.room.createm6eQ? $ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibilitye5eQ/ $vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rulesg4eQ3 $KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels 3eQ']$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800joina2eQ' $ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800m.room.createp1eQ))$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800m0eQ? $OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibilitye/eQ/ $9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rulesj.eQ9 $g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_aliasg-eQ3 $fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels ,eQ']$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800joina+eQ' $qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800m.room.createp*eQ))$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4!fOJLpnbtgKNxxVDquX:localhost:8800m.room.aliaseslocalhost:8800 g * T~=gg|]!c@anon-20191002_181700-240:localhost:8800CDHFDOSRPZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6Twog{]!c@anon-20191002_181700-239:localhost:8800WFWDJJSKCMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwogz]!c@anon-20191002_181700-238:localhost:8800CJBYPQAOBXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2gogy]!c@anon-20191002_181700-237:localhost:8800GTKLCHUYBNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgogx]!c@anon-20191002_181700-236:localhost:8800ALVQESJRHCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQogw]!c@anon-20191002_181700-235:localhost:8800OYRPJJEYFGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwogv]!c@anon-20191002_181700-234:localhost:8800KLAICDFHKHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2Aogu]!c@anon-20191002_181700-233:localhost:8800ZGKUWUKWUYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAogt]!c@anon-20191002_181700-232:localhost:8800UUXEQUNCHPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAogs]!c@anon-20191002_181700-231:localhost:8800BJMMTIEXWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhmczo4aXNLYlQ7cmc0c2YKMDAyZnNpZ25hdHVyZSCii7eda4u_cvWaTXkgDXF3fvhq4uqd2pt3gHuBIPdixAogr]!c@anon-20191002_181700-230:localhost:8800ZDQWNSBGEBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJTUWhsR0JMUi1oYkNYYWcKMDAyZnNpZ25hdHVyZSAGiLKsOqoQuxKK_4Pmg-XFWgoT-qrRMYFwGMFT-hQ-YQo bl D  ubp]c!E@anon-20191002_181700-238:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2goCJBYPQAOBX127.0.0.1Perl + Net::Async::HTTP/0.44m«{o1a%E@36:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDM2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPTNFZyNSODRzWjorLENIQgowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIKQM99obt2UECGGZ1pdZMzcnYKVP-dzKMkmX8ObbkGkwCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m¨n]c!E@anon-20191002_181700-237:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgoGTKLCHUYBN127.0.0.1Perl + Net::Async::HTTP/0.44mŒ{{m1a%E@35:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyNWNpZCB1c2VyX2lkID0gQDM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdTc6TjRZT1NUQT0rMmd3TwowMDE1Y2lkIGd1ZXN0ID0gdHJ1ZQowMDJmc2lnbmF0dXJlIEL0zz_q8O_cYu0ZgqeGOMGgdcuXKyl6Sehn2Vtqr_FBCgguest_device127.0.0.1Perl + Net::Async::HTTP/0.44m‰l]c!E@anon-20191002_181700-236:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQoALVQESJRHC127.0.0.1Perl + Net::Async::HTTP/0.44mpak]c!E@anon-20191002_181700-235:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwoOYRPJJEYFG127.0.0.1Perl + Net::Async::HTTP/0.44mXlj]c!E@anon-20191002_181700-234:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2AoKLAICDFHKH127.0.0.1Perl + Net::Async::HTTP/0.44mXji]c!E@anon-20191002_181700-233:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAoZGKUWUKWUY127.0.0.1Perl + Net::Async::HTTP/0.44m?h]c!E@anon-20191002_181700-232:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAoUUXEQUNCHP127.0.0.1Perl + Net::Async::HTTP/0.44m?g]c!E@anon-20191002_181700-231:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhmczo4aXNLYlQ7cmc0c2YKMDAyZnNpZ25hdHVyZSCii7eda4u_cvWaTXkgDXF3fvhq4uqd2pt3gHuBIPdixAoBJMMTIEXWQ127.0.0.1Perl + Net::Async::HTTP/0.44m Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,17e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU`16e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4_15e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk^14e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM]13e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4[12e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ[11e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38[10e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMZ1/e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kY1.e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1YgX1-e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcW1,e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsV1+e$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcU1*e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwU1)e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNoT1(e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwT1'e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLkS1&e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIS1%e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUR1$e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygQ1#e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEP1"e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0O1!e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0N1 e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYM1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0kL1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGoK1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgoJ1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAI1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAH1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0G1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcF1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIE1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awD1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4C1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gB1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8A1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8@1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U?1e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM>1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA=1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE=1 e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI<1 e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A;1 e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE:1 e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA91 e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM81e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ71e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo61e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g61e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw51e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY41e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw31e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo21e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE11e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk01e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k/1~e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI.1}e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8-1|e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA,1{e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4+1ze$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o*1ye$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM)1xe$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME(1we$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw'1ve$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY&1ue$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI%1te$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M$1se$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g#1re$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc#1qe$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw"1pe$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!1oe$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo 1ne$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1me$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg   LtD<  \4, l % d| T|eeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800 eeQ$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800 ЁeeQ$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800 weeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:8800eeQ$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY!NZHpBquHDfJAjiawGk:localhost:88009eeQ$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs!KxhGcTbEWmtgGNpdox:localhost:8800;eeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800eeQ$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0!tkajvIKHoOMWGsReBs:localhost:8800KeeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800āeeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800 .eeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800 ށeeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800leeQ$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:88007eeQ$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg!hnQOBexFYpvJntEChZ:localhost:8800XeeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800 eeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800 u (n%{2Eu& 9 R  e  ~ / Hg=\d}.GqHGF ]@anon-20191002_181700-263:localhost:8800offlinemŹ'mŹ'LU ] @anon-20191002_181700-221:localhost:8800offlinemm*mLR ] @anon-20191002_181700-219:localhost:8800offlinemum mLQ ] @anon-20191002_181700-218:localhost:8800offlinemrmmrFM ]@anon-20191002_181700-226:localhost:8800offlinemmLL ] @anon-20191002_181700-216:localhost:8800offlinemQRmsmQYFJ ]@anon-20191002_181700-224:localhost:8800offlinemmFI ]@anon-20191002_181700-209:localhost:8800offlinemՊḿF ]@anon-20191002_181700-261:localhost:8800offlinemŖmŖL ] @anon-20191002_181700-253:localhost:8800offlinemKmŅ|mSF ] @anon-20191002_181700-259:localhost:8800offlinemwmwF ] @anon-20191002_181700-250:localhost:8800offlinemĸmĦiF ] @anon-20191002_181700-252:localhost:8800offlinemmF ]@anon-20191002_181700-257:localhost:8800offlinemOzmOzL ] @anon-20191002_181700-251:localhost:8800offlinemĺm7\mĺL ] @anon-20191002_181700-249:localhost:8800offlinemqmm{ F ]@anon-20191002_181700-246:localhost:8800offlinemmm0F~ ]@anon-20191002_181700-248:localhost:8800offlinemomTLy ] @anon-20191002_181700-247:localhost:8800offlinemi+mTmkFx ]@anon-20191002_181700-242:localhost:8800offlinemmLw ] @anon-20191002_181700-237:localhost:8800offlinem§mÉmŒLv ] @anon-20191002_181700-243:localhost:8800offlinemhmÉmFt ]@anon-20191002_181700-244:localhost:8800offlinemBm;dLs ] @anon-20191002_181700-245:localhost:8800offlinem mÉm )Ln ] @anon-20191002_181700-241:localhost:8800offlinemϘmOm2Ll ] @anon-20191002_181700-239:localhost:8800offlinem¬Im(m¬Lj ] @anon-20191002_181700-231:localhost:8800offlinem9mmLg ] @anon-20191002_181700-235:localhost:8800offlinemY mmYWLe ] @anon-20191002_181700-233:localhost:8800offlinem?m\m@EL^ ] @anon-20191002_181700-230:localhost:8800offlinem%m‹mF] ]@anon-20191002_181700-236:localhost:8800offlinem‡m‡L\ ] @anon-20191002_181700-228:localhost:8800offlinemmdmL[ ] @anon-20191002_181700-227:localhost:8800offlinemߞmdmLZ ] @anon-20191002_181700-229:localhost:8800offlinemmdmKLX ] @anon-20191002_181700-225:localhost:8800offlinem`mQ,mLV ] @anon-20191002_181700-223:localhost:8800offlinemm=mFH ]@anon-20191002_181700-213:localhost:8800offlinem&m"YFG ]@anon-20191002_181700-215:localhost:8800offlinemLmGFB ]@anon-20191002_181700-217:localhost:8800offlinemmmiBFA ]@anon-20191002_181700-211:localhost:8800offlinemm  fe teQaM$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1141}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw"], "type": "m.room.aliases", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"aliases": ["#test-20191002_181700-37:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041378056, "hashes": {"sha256": "yv4aTAOKzXSCDw82JqfKLoivOCeEibzSehV7B2gG4XE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Lip9CuyH8kv/1dOdrUJHakygskbOnD5XmHDyo00sj14tJZPAWKcb6MZujqWON5o4LLj4zguuv+yCKH5AkjHAA"}}, "unsigned": {"age_ts": 1570041378056}}seQa$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1140}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU"], "type": "m.room.history_visibility", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041377115, "hashes": {"sha256": "jisa0B3U2wUWRqjEwsUzY1xjM1eT3ctpFdjMYbLdjKE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5WxEOhfena5oFwPjJ2MuKquUByojIUSujf6YvxRWYuedjAuSvXQa3cvSiWGdAttTowy7F4dQxFVCgrJvg74VAg"}}, "unsigned": {"age_ts": 1570041377115}}treQau$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1139}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo"], "type": "m.room.join_rules", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041376480, "hashes": {"sha256": "iRfc4q8csgiE4QXwwRGV2iZpm/L1tvv3TqMgkGyZnvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lEzGt8blsCd7M+5Qy09oi9RNqHsCSDmMpR+FLY+KD3gtpz16Oa7DBr5ByrY8M4YyIdpLrIGQNM+ejpGgKaVnBA"}}, "unsigned": {"age_ts": 1570041376480}}qeQa9$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "stream_ordering": 1138}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU"], "type": "m.room.canonical_alias", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"alias": "#test-20191002_181700-37:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041375022, "hashes": {"sha256": "7kOzPvM3zb8RdTQi209O3qTUmlEX9HaxNjqU+LwkHUA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0HuKBeq8YYze5ketZTxJXCIH2RC1zVkBOqEFzNdWRgQTwAZMT/dXmCXqRkzVxzb7G3l7FJXICNOpDby94iwzCA"}}, "unsigned": {"age_ts": 1570041375022}} V 2  d7  X -  V +  T ) v I h;Z-yL _ M ll?^2~Q$pDy? ,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n n,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m m,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l l,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k k,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j j+Q !jRuDexjFzIDOKbwDJQ:localhost:8800 i i,Q!kOmCTyiizHqfCJdhlR:localhost:8800 U U+Q !kOmCTyiizHqfCJdhlR:localhost:8800 T T,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o o,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 +Q !kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jveVPZSXJOJyNDebPO:localhost:8800LL,Q!jveVPZSXJOJyNDebPO:localhost:8800KK,Q!jveVPZSXJOJyNDebPO:localhost:8800JJ,Q!jveVPZSXJOJyNDebPO:localhost:8800II,Q!jveVPZSXJOJyNDebPO:localhost:8800HH,Q!jveVPZSXJOJyNDebPO:localhost:8800GG,Q!jveVPZSXJOJyNDebPO:localhost:8800FF+Q !jveVPZSXJOJyNDebPO:localhost:8800EE,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800+Q !jfshVGNDxkvqPxFxWB:localhost:8800*Q!jYzridjeihmwPBuwLb:localhost:8800YY*Q!jYzridjeihmwPBuwLb:localhost:8800XX*Q!jYzridjeihmwPBuwLb:localhost:8800WW*Q!jYzridjeihmwPBuwLb:localhost:8800 VV*Q!jYzridjeihmwPBuwLb:localhost:8800 UU*Q!jYzridjeihmwPBuwLb:localhost:8800 TT*Q!jYzridjeihmwPBuwLb:localhost:8800 SS*Q!jYzridjeihmwPBuwLb:localhost:8800 RR*Q!jYzridjeihmwPBuwLb:localhost:8800QQ*Q!jYzridjeihmwPBuwLb:localhost:8800PP*Q!jYzridjeihmwPBuwLb:localhost:8800OO*Q!jYzridjeihmwPBuwLb:localhost:8800NN*Q!jYzridjeihmwPBuwLb:localhost:8800MM*Q!jYzridjeihmwPBuwLb:localhost:8800LL*Q!jYzridjeihmwPBuwLb:localhost:8800KK)Q !jYzridjeihmwPBuwLb:localhost:8800JJ,Q!jIfvTrwedrWLubsnlM:localhost:8800!!,Q!jIfvTrwedrWLubsnlM:localhost:8800  ,Q!jIfvTrwedrWLubsnlM:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800+Q !jlGSdNttccYxjfLkwW:localhost:8800-,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y Y,Q!jomrpmwwQQtghscizn:localhost:8800)),Q!jomrpmwwQQtghscizn:localhost:8800((,Q!jomrpmwwQQtghscizn:localhost:8800'',Q!jomrpmwwQQtghscizn:localhost:8800&&,Q!jomrpmwwQQtghscizn:localhost:8800%%+Q !jomrpmwwQQtghscizn:localhost:8800$$,Q!kOmCTyiizHqfCJdhlR:localhost:8800 X X,Q!kOmCTyiizHqfCJdhlR:localhost:8800 W W,Q!kOmCTyiizHqfCJdhlR:localhost:8800 V V V 2  d7  X -  V +  T ) v I h;Z-yL _ M ll?^2~Q$pDy? ,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n n,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m m,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l l,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k k,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j j+Q !jRuDexjFzIDOKbwDJQ:localhost:8800 i i,Q!kOmCTyiizHqfCJdhlR:localhost:8800 U U+Q !kOmCTyiizHqfCJdhlR:localhost:8800 T T,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o o,Q!kAxKaIQhXTtGFWSUgr:localhost:8800 +Q !kAxKaIQhXTtGFWSUgr:localhost:8800 ,Q!jveVPZSXJOJyNDebPO:localhost:8800LL,Q!jveVPZSXJOJyNDebPO:localhost:8800KK,Q!jveVPZSXJOJyNDebPO:localhost:8800JJ,Q!jveVPZSXJOJyNDebPO:localhost:8800II,Q!jveVPZSXJOJyNDebPO:localhost:8800HH,Q!jveVPZSXJOJyNDebPO:localhost:8800GG,Q!jveVPZSXJOJyNDebPO:localhost:8800FF+Q !jveVPZSXJOJyNDebPO:localhost:8800EE,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800 ,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800,Q!jfshVGNDxkvqPxFxWB:localhost:8800+Q !jfshVGNDxkvqPxFxWB:localhost:8800*Q!jYzridjeihmwPBuwLb:localhost:8800YY*Q!jYzridjeihmwPBuwLb:localhost:8800XX*Q!jYzridjeihmwPBuwLb:localhost:8800WW*Q!jYzridjeihmwPBuwLb:localhost:8800 VV*Q!jYzridjeihmwPBuwLb:localhost:8800 UU*Q!jYzridjeihmwPBuwLb:localhost:8800 TT*Q!jYzridjeihmwPBuwLb:localhost:8800 SS*Q!jYzridjeihmwPBuwLb:localhost:8800 RR*Q!jYzridjeihmwPBuwLb:localhost:8800QQ*Q!jYzridjeihmwPBuwLb:localhost:8800PP*Q!jYzridjeihmwPBuwLb:localhost:8800OO*Q!jYzridjeihmwPBuwLb:localhost:8800NN*Q!jYzridjeihmwPBuwLb:localhost:8800MM*Q!jYzridjeihmwPBuwLb:localhost:8800LL*Q!jYzridjeihmwPBuwLb:localhost:8800KK)Q !jYzridjeihmwPBuwLb:localhost:8800JJ,Q!jIfvTrwedrWLubsnlM:localhost:8800!!,Q!jIfvTrwedrWLubsnlM:localhost:8800  ,Q!jIfvTrwedrWLubsnlM:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800+Q !jlGSdNttccYxjfLkwW:localhost:8800-,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!jlGSdNttccYxjfLkwW:localhost:8800,Q!kOmCTyiizHqfCJdhlR:localhost:8800 Y Y,Q!jomrpmwwQQtghscizn:localhost:8800)),Q!jomrpmwwQQtghscizn:localhost:8800((,Q!jomrpmwwQQtghscizn:localhost:8800'',Q!jomrpmwwQQtghscizn:localhost:8800&&,Q!jomrpmwwQQtghscizn:localhost:8800%%+Q !jomrpmwwQQtghscizn:localhost:8800$$,Q!kOmCTyiizHqfCJdhlR:localhost:8800 X X,Q!kOmCTyiizHqfCJdhlR:localhost:8800 W W,Q!kOmCTyiizHqfCJdhlR:localhost:8800 V V |t l  d \ T LD <5-%eeQ$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800 beeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800 ;eeQ$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800HeeQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800xeeQ$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus!csWEXfVEVxdviNvgAd:localhost:8800neeQ$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800eeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800ցeeQ$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk!eySSVuCclRpBDgwKIU:localhost:8800~eeQ$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!loalEsWaTYwrVUNJLr:localhost:8800"eeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800 eeQ$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw!HZqzpRgqekPOtxstVc:localhost:8800eeQ$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI!fcdNYFWFyxmdpKAknc:localhost:8800BeeQ$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g!FPcQcheNebvdFvmOnr:localhost:8800 eeQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo!msMfSdLIAvklSSAnci:localhost:8800eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800PeeQ$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U!SyIWYOmcGiASNkPCTB:localhost:8800ŁeeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800EeeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800NeeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0!aBCvSXjtZUEPlPGHvY:localhost:8800teeQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800ÁeeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800|eeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks!nteAxExBGJfaGIpuCx:localhost:8800eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800 !%< E m Z c x9PY|(! Q']e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8dQ' e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.create$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5UQ? ee!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIsQ))e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEp Q? e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIh Q/ e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rules$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Am Q9 e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_alias$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REj Q3 e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA Q']e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMdQ' e!wsvXTJXouVkEZcCFsD:localhost:8800m.room.create$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQsQ))e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gpQ? e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibility$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwhQ/ e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rules$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYmQ9 e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwjQ3 e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo Q']e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEdQ' e!DoiZErAdypBUMZKaeJ:localhost:8800m.room.create$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSkQ? ee!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIpQ? e!qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIh~Q/ e!qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rules$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8j}Q3 e!qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA |Q']e~!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4d{Q' e}!qSUSLLWjDxcGibUZdT:localhost:8800m.room.create$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7ozQ? ee|!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEpyQ? e{!RmwbYvIIQyPlHlClty:localhost:8800m.room.history_visibility$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEhxQ/ ez!RmwbYvIIQyPlHlClty:localhost:8800m.room.join_rules$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwjwQ3 ey!RmwbYvIIQyPlHlClty:localhost:8800m.room.power_levels$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY vQ']ex!RmwbYvIIQyPlHlClty:localhost:8800m.room.member@anon-20191002_181700-232:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIduQ' ew!RmwbYvIIQyPlHlClty:localhost:8800m.room.create$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3MstQ))eu!SvKwEALYoNreUvqAlp:localhost:8800m.room.aliaseslocalhost:8800$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcpsQ? et!SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibility$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwhrQ/ es!SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rules$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUmqQ9 er!SvKwEALYoNreUvqAlp:localhost:8800m.room.canonical_alias$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo  y kxeQac$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1145}{"auth_events": ["$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "type": "m.room.power_levels", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"users": {"@anon-20191002_181700-232:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041382110, "hashes": {"sha256": "f1jjQSvajhBg6t4EylK8kuLFv32+2UIT0Fa/64gQRiU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "duqFxMssA1kpXzbU/wJsHPSdvPiqZbNplcUhLFBArQDpfGQZomyTEbHqWDOaCHYoOakx9znEs8CHe6c5+11EBA"}}, "unsigned": {"age_ts": 1570041382110}}vweQay$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1144}{"auth_events": ["$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M"], "prev_events": ["$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M"], "type": "m.room.member", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-232", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-232:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041381576, "hashes": {"sha256": "3mpt24tCM33PIGX9VbNh2iTZ2Ccst1va+ufzErg0/Xo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y37L/m/++ktTlyTXyzO1ajAMwKcJJsEzLcpd4sZO4A7D0QYsxBNCvWkqzWelnNe+8SM4WsUEi9VEnRItazN0DQ"}}, "unsigned": {"age_ts": 1570041381576}}iveQa_$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1143}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-232:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041380935, "hashes": {"sha256": "ewHwbGUwXlb7oe8KyPfGb8QsT84Kqt9i7t+BAsFbWnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TFkXhOplUeVCXCcATo8hSmByO57U6beY2pJmmQrF1nSHt8RcOVyYu71x9/MwxIan220BAzeei7/5fu49fxFwDQ"}}, "unsigned": {"age_ts": 1570041380935}}ueQo$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800{"token_id": 252, "txn_id": "115", "stream_ordering": 1142}{"auth_events": ["$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU", "$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk", "$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg"], "prev_events": ["$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc"], "type": "m.room.message", "room_id": "!SvKwEALYoNreUvqAlp:localhost:8800", "sender": "@anon-20191002_181700-231:localhost:8800", "content": {"body": "private", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041378939, "hashes": {"sha256": "siBKvfqWq0MlQI+8OtCxQyHB7xc4KlLUnZr2Mff0t10"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "odNOfMRNSvL36RpoLzMaMtc0OJ6xnoyis9Lb+6xuNxTC16+qTqMTTej25SqWHj03D17OqszFvVZDq/rphEqDCA"}}, "unsigned": {"age_ts": 1570041378939}} ? ,?i|eQa_$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1149}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-234:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041387354, "hashes": {"sha256": "f20uzwQQn1AaZZDlsRXKoFVhu4S3eg5FlJrqw1WGu/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g+OOOELKq1alaqMfwq8+DQxwJYg489RmTKVSOJHFa0E6tR5pkOZdp1woMhISKvg9fSSVRo+Yi7f0PXeR+eepDA"}}, "unsigned": {"age_ts": 1570041387354}}O{eQa+$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1148}{"auth_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY", "$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME"], "type": "m.room.history_visibility", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041385185, "hashes": {"sha256": "tSAKTcaoGlbBmAzLZeDmht+Ifg+kWQD3A2lY80h7dEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NnZscnbYQ/ijuwZtLmJPQlunnTaonsVHo8yfqcHVSrUN2thGUFKSwYs79eY7x3ojH3NcPZReQmzP282O60HbDQ"}}, "unsigned": {"age_ts": 1570041385185, "replaces_state": "$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME"}}zeQa$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1147}{"auth_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY", "$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw"], "type": "m.room.history_visibility", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041383881, "hashes": {"sha256": "aDx8Wf/1GneaFLQtDpwjwIHPEsFWnwQvSvy74Kvd9zo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V1vjlSYeuZP/KDxDgjPCsUMu4cFhrIrKewhLYX3HfOPTzxTmoDHlZBuwYUo4Rfy00g86BlP3euFVikE3QV0uCA"}}, "unsigned": {"age_ts": 1570041383881}}tyeQau$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800{"token_id": 253, "stream_ordering": 1146}{"auth_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY", "$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M", "$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI"], "prev_events": ["$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY"], "type": "m.room.join_rules", "room_id": "!RmwbYvIIQyPlHlClty:localhost:8800", "sender": "@anon-20191002_181700-232:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041383274, "hashes": {"sha256": "4DzzEfs7ABFrthRAEZfbgqO0QZ0M0sh4JCz/RKfu18w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GwVxMMsz7gfB8icfHR09fZzue5LZEwra54RQLgUJxyMLKCnBGH6ZE1gAxIN921ZPlQV3E0P/z1Y2Dv99Jb7FBw"}}, "unsigned": {"age_ts": 1570041383274}} \ Z  d ek%{&v,|!e)Q ] $FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMm.room.message!wsvXTJXouVkEZcCFsD:localhost:8800 m¦m§@anon-20191002_181700-237:localhost:8800,e?Q ] $CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMm.room.history_visibility!wsvXTJXouVkEZcCFsD:localhost:8800 m£%m£@anon-20191002_181700-237:localhost:8800!e)Q ]$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAAm.room.message!wsvXTJXouVkEZcCFsD:localhost:8800m m¡N@anon-20191002_181700-237:localhost:8800!e)Q ]$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEm.room.aliases!wsvXTJXouVkEZcCFsD:localhost:8800mmžw@anon-20191002_181700-237:localhost:8800,e?Q ]$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIm.room.history_visibility!wsvXTJXouVkEZcCFsD:localhost:8800m™wm›@anon-20191002_181700-237:localhost:8800$e/Q ]$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Am.room.join_rules!wsvXTJXouVkEZcCFsD:localhost:8800m—?m—@anon-20191002_181700-237:localhost:8800)e9Q ]$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REm.room.canonical_alias!wsvXTJXouVkEZcCFsD:localhost:8800m”m•@anon-20191002_181700-237:localhost:8800& e3Q ]$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpAm.room.power_levels!wsvXTJXouVkEZcCFsD:localhost:8800m’Om“\@anon-20191002_181700-237:localhost:8800 e'Q ]$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMm.room.member!wsvXTJXouVkEZcCFsD:localhost:8800mem@anon-20191002_181700-237:localhost:8800  e'Q  ]$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQm.room.create!wsvXTJXouVkEZcCFsD:localhost:8800mmŽ@anon-20191002_181700-237:localhost:8800! e)Q ]$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfom.room.message!DoiZErAdypBUMZKaeJ:localhost:8800m…m‡@@anon-20191002_181700-236:localhost:8800! e)Q ]$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gm.room.aliases!DoiZErAdypBUMZKaeJ:localhost:8800m‚amƒ@anon-20191002_181700-236:localhost:8800,e?Q ]$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwm.room.history_visibility!DoiZErAdypBUMZKaeJ:localhost:8800m~m€ @anon-20191002_181700-236:localhost:8800$e/Q ]$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYm.room.join_rules!DoiZErAdypBUMZKaeJ:localhost:8800m|[m}@anon-20191002_181700-236:localhost:8800)e9Q ]$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwm.room.canonical_alias!DoiZErAdypBUMZKaeJ:localhost:8800mymzd@anon-20191002_181700-236:localhost:8800&e3Q ]$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzom.room.power_levels!DoiZErAdypBUMZKaeJ:localhost:8800mvmw@anon-20191002_181700-236:localhost:8800 e'Q ]$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEm.room.member!DoiZErAdypBUMZKaeJ:localhost:8800mt%mt@anon-20191002_181700-236:localhost:8800 e'Q  ]$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSkm.room.create!DoiZErAdypBUMZKaeJ:localhost:8800mpmqY@anon-20191002_181700-236:localhost:8800,e?Q ]$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7km.room.history_visibility!qSUSLLWjDxcGibUZdT:localhost:8800mimj@anon-20191002_181700-234:localhost:8800,e?Q ]$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIm.room.history_visibility!qSUSLLWjDxcGibUZdT:localhost:8800mdmg@anon-20191002_181700-234:localhost:8800$e/Q ]$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8m.room.join_rules!qSUSLLWjDxcGibUZdT:localhost:8800mbrmcJ@anon-20191002_181700-234:localhost:8800&e3Q ]$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFAm.room.power_levels!qSUSLLWjDxcGibUZdT:localhost:8800m_m`@anon-20191002_181700-234:localhost:8800 ~e'Q ]$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4m.room.member!qSUSLLWjDxcGibUZdT:localhost:8800m\?m\@anon-20191002_181700-234:localhost:8800 a} { y w u sqomkigeca~eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~ eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800~eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800~~eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~}eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~|eeQ$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA!qSUSLLWjDxcGibUZdT:localhost:8800~{eeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800~zeeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800~yeeQ$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o!qSUSLLWjDxcGibUZdT:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V(eL$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIsha256A ƧWo,pZ{62V'eL$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUsha256n]|g\+z%ck7@uV&eL$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygsha256>g[wju,ŦBw/ jt(V%eL$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEsha256.ƢH(oPV6jt@5p79aV$eL$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0sha256?&;YpgyQV!X <-V#eL$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0sha256pDX32, DI۪_^T=V"eL$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYsha256䌫9DɷGEjgSV!eL$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0ksha256Y6]"YmF-*#.ŅA]IV eL$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGosha256Xh(jY[\^51 ';՛#xjVeL$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgosha256`v8sX+c|}" VeL$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAsha2565Wp ) ?1I&Hwr[VeL$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAsha256 fo/GN\]%(f]2bVeL$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0sha256>HYt;ydgH!}VeL$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcsha256-c9d7NmCORIwVeL$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIsha256-]<\I'Lgk5#VeL$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awsha256Is&g,;좄ztѬVeL$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4sha256% is\^8u6QR|'= VeL$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gsha256zY+P˚, p'I XVeL$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8sha256'4SZ<?.;+8!8\DlvVeL$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8sha256¥s,e k5G-kJUH^ݲVeL$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5Usha256EC86,0b'/}x:]&'VeL$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMsha256'(BEx136/2}J!ʔVeL$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMsha256 # nkB#,َ\|'{&z7 cVeL$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAAsha256Pl|f7V&/?$o]sVeL$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEsha256jM|=FzU d]3hVeL$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIsha256HVD5O3yaYmUӻo&VeL$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Asha256:pk QoMye`V eL$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REsha256r]H[H4fCwtNdV eL$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpAsha2560A!lh\wlikQJ<"4@;ƖV eL$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMsha256`5@ LaM|K/"--V eL$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQsha256&=eKT8H.a\ʺ #jV eL$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfosha256q>+S|Of.q',`8(EVeL$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9gsha256U=kzE!ᚽP J~|u5/VeL$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigwsha2562˘.1י7(o0q@ VeL$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYsha256~9"<(e$i!Ʒ;1^Y@VeL$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxwsha256=ir3i 4Q9N&kVeL$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzosha256W#6mu3BLNc:VeL$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEsha256;gѮļ_z00lZaVeL$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSksha256A^\a&>9NBN(=#St%)VeL$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7ksha256g! V5^}͌"x'aڞ*VeL$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIsha256mqoP঺oc #s2VeL$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8sha2564K:~v9H@ ŒoQ ЏV~eL$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFAsha256 !^UAcfC7#߉:{^2?PV}eL$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4sha2562\y'31+=?S {~+on a , J h  3Qo:Xv#A_n2]@anon-20191002_181700-247:localhost:8800@anon-20191002_181700-247:localhost:8800 anon-20191002_181700-247n1]@anon-20191002_181700-246:localhost:8800@anon-20191002_181700-246:localhost:8800 anon-20191002_181700-246n0]@anon-20191002_181700-245:localhost:8800@anon-20191002_181700-245:localhost:8800 anon-20191002_181700-245n/]@anon-20191002_181700-244:localhost:8800@anon-20191002_181700-244:localhost:8800 anon-20191002_181700-244n.]@anon-20191002_181700-243:localhost:8800@anon-20191002_181700-243:localhost:8800 anon-20191002_181700-243n-]@anon-20191002_181700-242:localhost:8800@anon-20191002_181700-242:localhost:8800 anon-20191002_181700-242n,]@anon-20191002_181700-240:localhost:8800@anon-20191002_181700-240:localhost:8800 anon-20191002_181700-240n+]@anon-20191002_181700-238:localhost:8800@anon-20191002_181700-238:localhost:8800 anon-20191002_181700-238n*]@anon-20191002_181700-237:localhost:8800@anon-20191002_181700-237:localhost:8800 anon-20191002_181700-237n)]@anon-20191002_181700-236:localhost:8800@anon-20191002_181700-236:localhost:8800 anon-20191002_181700-236n']@anon-20191002_181700-232:localhost:8800@anon-20191002_181700-232:localhost:8800 anon-20191002_181700-232n&]@anon-20191002_181700-231:localhost:8800@anon-20191002_181700-231:localhost:8800 anon-20191002_181700-231n%]@anon-20191002_181700-228:localhost:8800@anon-20191002_181700-228:localhost:8800 anon-20191002_181700-228n$]@anon-20191002_181700-226:localhost:8800@anon-20191002_181700-226:localhost:8800 anon-20191002_181700-226n#]@anon-20191002_181700-224:localhost:8800@anon-20191002_181700-224:localhost:8800 anon-20191002_181700-224n"]@anon-20191002_181700-222:localhost:8800@anon-20191002_181700-222:localhost:8800 anon-20191002_181700-222n!]@anon-20191002_181700-220:localhost:8800@anon-20191002_181700-220:localhost:8800 anon-20191002_181700-220n ]@anon-20191002_181700-218:localhost:8800@anon-20191002_181700-218:localhost:8800 anon-20191002_181700-218n]@anon-20191002_181700-217:localhost:8800@anon-20191002_181700-217:localhost:8800 anon-20191002_181700-217n]@anon-20191002_181700-216:localhost:8800@anon-20191002_181700-216:localhost:8800 anon-20191002_181700-216n]@anon-20191002_181700-215:localhost:8800@anon-20191002_181700-215:localhost:8800 anon-20191002_181700-215n]@anon-20191002_181700-214:localhost:8800@anon-20191002_181700-214:localhost:8800 anon-20191002_181700-214n]@anon-20191002_181700-213:localhost:8800@anon-20191002_181700-213:localhost:8800 anon-20191002_181700-213n]@anon-20191002_181700-212:localhost:8800@anon-20191002_181700-212:localhost:8800 anon-20191002_181700-212n]@anon-20191002_181700-211:localhost:8800@anon-20191002_181700-211:localhost:8800 anon-20191002_181700-211n]@anon-20191002_181700-209:localhost:8800@anon-20191002_181700-209:localhost:8800 anon-20191002_181700-209+17@34:localhost:8800@34:localhost:8800 34n(]@anon-20191002_181700-234:localhost:8800@anon-20191002_181700-234:localhost:8800 anon-20191002_181700-234 ? R  TQ  8n5 p 7Q S4m4 PR  n5m o 6  qt5uew8cYlDyb8e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4sha256*8e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-Usha2568e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdMsha256 8e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAsha256N8e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIsha2568e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYsha2568e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUsha256 8e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUsha256 8e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYsha2568e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQsha256 8e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4sha256 8e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIsha2568e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oEsha256 >8e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0sha256 8e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8Isha2568e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4sha2568e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOUsha2568e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYsha2568e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIsha2568e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hosha2568e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8sha256s6e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_Asha2568e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUsha2568e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAsha256L8e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7Usha2568e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuksha256d8e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrssha2568e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9gsha256`8e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_ssha2568e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYgsha2568e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIsha25668e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7ksha256<8e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wsha2568e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BEsha256 8e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQsha256Z8e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8sha2568e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYsha2568e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcsha2568e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFeksha256n8e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4sha256/8e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-csha2568e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3csha256b8e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620sha256 8e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Esha256H8e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8sha2568e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Qsha2568e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMsha2568e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYsha2568e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEsha2568e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5Usha256 L8e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90sha256 %8e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEsha256 8e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUsha256 B8e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUsha256 <8e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4sha256 18e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Esha256 t8e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owsha256?8e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhssha2568e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMsha256X8e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYsha256 8e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938sha256U98e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gsha256 r8e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Isha256 W - @WkeQac$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1157}{"auth_events": ["$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "type": "m.room.power_levels", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"users": {"@anon-20191002_181700-236:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041394834, "hashes": {"sha256": "wImUO/J9hgVnMDFud7O9vT9oc5y6jWANtEZ4aES9EIY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iORv/MEY8jiUS2pa/Q52WTFTNTi6kDsPHPgiZknHNaoAKw/qvTLnPFsI5cpJ44Y7cJhyeR0naG2g52Zqi5SZCQ"}}, "unsigned": {"age_ts": 1570041394834}}veQay$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1156}{"auth_events": ["$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk"], "prev_events": ["$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk"], "type": "m.room.member", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-236", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-236:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041394213, "hashes": {"sha256": "7L1hQQpnxCNMjC8C2KmgIp7/1pwkFWTT/a6xSeuVyvM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J/uvIo325vaBFWi5mXfOq1C9e+1qoCI5tBGPyxTJoATyHE2kz44goVYZZLGKZ5uoj7DR03RmAcr7mbQwQi0LCA"}}, "unsigned": {"age_ts": 1570041394213}}ieQa_$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1155}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-236:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041393407, "hashes": {"sha256": "48oUwRNmLExGJ4UBTnijLM0oB6XUjYtCiXawxquqkIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UZ8awqe6OIStbqQsfUDZUOGfrpCJrXvMugTCXGcnEqZhFMKdo0SWP7/AR7eO1eExNwXVVQ0+fRxorjbLgm+EAw"}}, "unsigned": {"age_ts": 1570041393407}}OeQa+$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800{"token_id": 255, "stream_ordering": 1154}{"auth_events": ["$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA", "$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o", "$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4"], "prev_events": ["$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI"], "type": "m.room.history_visibility", "room_id": "!qSUSLLWjDxcGibUZdT:localhost:8800", "sender": "@anon-20191002_181700-234:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041391558, "hashes": {"sha256": "f5Jzl23imZf7kVk6shLWKiK+jmhN0E4FfPv1VWbmj8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pYeKen6BY8kzPcVykOizBvZ3+c/8pesuKRZpcDVMNNfs7pBjHfaT4XHvwTC6NaLwKFy8orh8GSeREoQxXJ6cAg"}}, "unsigned": {"age_ts": 1570041391558, "replaces_state": "$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI"}} DCK{Fe0d1 a . ^ ) [ & V % W "ROJN~vCs> 2]@anon-20191002_181700-303:localhost:8800aD4]@anon-20191002_181700-302:localhost:8800mC2]@anon-20191002_181700-275:localhost:8800a 4]@anon-20191002_181700-274:localhost:8800m2]@anon-20191002_181700-274:localhost:8800a 4]@anon-20191002_181700-273:localhost:8800m2]@anon-20191002_181700-273:localhost:8800a 4]@anon-20191002_181700-272:localhost:8800m 2]@anon-20191002_181700-272:localhost:8800a 4]@anon-20191002_181700-271:localhost:8800m2]@anon-20191002_181700-271:localhost:8800a2]@anon-20191002_181700-302:localhost:8800aB4]@anon-20191002_181700-301:localhost:8800mA2]@anon-20191002_181700-301:localhost:8800a@4]@anon-20191002_181700-300:localhost:8800m?2]@anon-20191002_181700-300:localhost:8800a>/Y@anon-20191002_181700-2:localhost:8800a0[@anon-20191002_181700-29:localhost:8800aD4]@anon-20191002_181700-299:localhost:8800m=2]@anon-20191002_181700-299:localhost:8800a<4]@anon-20191002_181700-298:localhost:8800m;2]@anon-20191002_181700-298:localhost:8800a:4]@anon-20191002_181700-297:localhost:8800m92]@anon-20191002_181700-297:localhost:8800a84]@anon-20191002_181700-296:localhost:8800m72]@anon-20191002_181700-296:localhost:8800a64]@anon-20191002_181700-295:localhost:8800m52]@anon-20191002_181700-295:localhost:8800a44]@anon-20191002_181700-294:localhost:8800m32]@anon-20191002_181700-294:localhost:8800a24]@anon-20191002_181700-293:localhost:8800m12]@anon-20191002_181700-293:localhost:8800a/4]@anon-20191002_181700-292:localhost:8800m02]@anon-20191002_181700-292:localhost:8800a.4]@anon-20191002_181700-291:localhost:8800m-2]@anon-20191002_181700-291:localhost:8800a+4]@anon-20191002_181700-290:localhost:8800m,2]@anon-20191002_181700-290:localhost:8800a*2[@anon-20191002_181700-28:localhost:8800mC0[@anon-20191002_181700-28:localhost:8800aB4]@anon-20191002_181700-289:localhost:8800m)2]@anon-20191002_181700-289:localhost:8800a'4]@anon-20191002_181700-288:localhost:8800m(2]@anon-20191002_181700-288:localhost:8800a&4]@anon-20191002_181700-287:localhost:8800m%2]@anon-20191002_181700-287:localhost:8800a#4]@anon-20191002_181700-286:localhost:8800m$2]@anon-20191002_181700-286:localhost:8800a"2]@anon-20191002_181700-285:localhost:8800a 4]@anon-20191002_181700-284:localhost:8800m!2]@anon-20191002_181700-284:localhost:8800a4]@anon-20191002_181700-283:localhost:8800m2]@anon-20191002_181700-283:localhost:8800a4]@anon-20191002_181700-282:localhost:8800m2]@anon-20191002_181700-282:localhost:8800a4]@anon-20191002_181700-281:localhost:8800m2]@anon-20191002_181700-281:localhost:8800a4]@anon-20191002_181700-280:localhost:8800m2]@anon-20191002_181700-280:localhost:8800a2[@anon-20191002_181700-27:localhost:8800mA0[@anon-20191002_181700-27:localhost:8800a@4]@anon-20191002_181700-279:localhost:8800m2]@anon-20191002_181700-279:localhost:8800a2]@anon-20191002_181700-278:localhost:8800a4]@anon-20191002_181700-277:localhost:8800m2]@anon-20191002_181700-277:localhost:8800a4]@anon-20191002_181700-276:localhost:8800m2]@anon-20191002_181700-276:localhost:8800a Hj8p> v D  |K]+ J  P  V $ \ *b0k9q? wW%E}Q1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0M1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0L1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0K1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0J1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ81e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ71e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ61e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc,1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Yj1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Yi1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Yh1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE1e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE1e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4o1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs^1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs]1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs\1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao 1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo-1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo,1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo+0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c#0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c"1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM=1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM<1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM;1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU 1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4{1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4z1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4y1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo(1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo'1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo =1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo <1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ D1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ C1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ B1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg.1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg-1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg,1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o ^1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o ]1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o \1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs Ij$8p> w E  ~ L  R X & ^ ,d2j8p> VvD|JP1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA G1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y *1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o 1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY 1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY >1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY h1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0M1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk\1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM 1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 a1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 51e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 D1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM|1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M k1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE h1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcZ1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM31e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg'1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4In1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg w1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM =1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts`1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw~1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYd1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo#1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QK1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgW1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8@0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4R1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ.1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw"1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA80e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8M1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI 1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicJ1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicI1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicH1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIga1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU FWj8p> v DW  }3 K  Q  W % ] +ek9q? wE}KQ1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw 1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoC1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4}1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkt1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A91e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA T1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo.1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q?1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ 1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC01e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE&1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4E1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78w1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo(1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw 1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQw1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ h1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo-1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 50e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1ks1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh031e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwA1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM91e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW081e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEV1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER01e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0k1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE`1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MW1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwd1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s 0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk[1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4H1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ01e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g 1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4k1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w b  fe eQaM$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1161}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw"], "type": "m.room.aliases", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"aliases": ["#test-20191002_181700-38:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041397857, "hashes": {"sha256": "zldzU2M+QfmoSZfOsMsw091AipuAqEv+qSq9aaPT6Zw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4DiHXIiyhVElGapQpWBGsCVOfOjgFAHZn9KQ+DYOJgpj+f5RLBFhHbajjYap+onUF6kapuA3FRgiI4PhQqRnDg"}}, "unsigned": {"age_ts": 1570041397857}}eQa$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1160}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY"], "type": "m.room.history_visibility", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041396882, "hashes": {"sha256": "cZwu3eDLkv4C6heDfLMlDOTx84Ya6053RkiJ1dxZYWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VjJvPo2/mDDpDrI8Xjh2xjqnXE2HpevKEEZAXS0AmDpUfS41qRWXEDxY8D+UV6z91xwAf/cMejMS5Ueunxx+AA"}}, "unsigned": {"age_ts": 1570041396882}}teQau$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1159}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw"], "type": "m.room.join_rules", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041396315, "hashes": {"sha256": "gW7HohqizFcfCg77AiTRZ4m7wCtVzpzjK6DjB1TwP6s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H62P5JZcB5SrWXt4VzphmKVsWLCcPAeJEn1h2N/fUXxTITeFrcGzRMB8rUFnTIH0RBhA7VMEIfHaxqje9q5cAw"}}, "unsigned": {"age_ts": 1570041396315}}eQa9$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800{"token_id": 257, "stream_ordering": 1158}{"auth_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo", "$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk", "$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE"], "prev_events": ["$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo"], "type": "m.room.canonical_alias", "room_id": "!DoiZErAdypBUMZKaeJ:localhost:8800", "sender": "@anon-20191002_181700-236:localhost:8800", "content": {"alias": "#test-20191002_181700-38:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041395608, "hashes": {"sha256": "2kxM0BpLuXUf2fA1XUrCYXiHsYdpIVboKpqgp5uhg74"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "32zJDoUm/jMo7ppuH6sOuUrs5/iRlAvjaPa9zxAWt/tGVvKvo9CzmTjiTziWk3IgPlycODuojr0/xiFAoSi9AA"}}, "unsigned": {"age_ts": 1570041395608}} i g 4 5ih1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQo^1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhmczo4aXNLYlQ7cmc0c2YKMDAyZnNpZ25hdHVyZSCii7eda4u_cvWaTXkgDXF3fvhq4uqd2pt3gHuBIPdixAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJTUWhsR0JMUi1oYkNYYWcKMDAyZnNpZ25hdHVyZSAGiLKsOqoQuxKK_4Pmg-XFWgoT-qrRMYFwGMFT-hQ-YQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJqc15IV1dGS25wcE9uYlEKMDAyZnNpZ25hdHVyZSCYjNjyDWdteJjxc8W-kRRu5ptViIlvWWCgl3LHeciJZgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAo_1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoemU3KiZZfjErVjR0d1cKMDAyZnNpZ25hdHVyZSBesxQcyLpUfuvpFw4FOMhmT76s5pJ2qw0pUoOGVnap2go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlWVnVEbUcta3d3Z1B1cnUKMDAyZnNpZ25hdHVyZSAvzIdryvj2VvX81JyT-ZVH5vtDqkgNXhOU_DFQFrNbtgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFIwU3l4M3NIRDppOzF2bkUKMDAyZnNpZ25hdHVyZSDJvTQqn3mEl-Z2hMW-RHHCMJMr20AAhMo-cCNUEvJtNQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR1X0pDV1ZxUXpTZFFWSUIKMDAyZnNpZ25hdHVyZSCNUhoISpYf3EU5ByBbXI1rnJ4Kw52Y1ag8yCeVYqkouwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFnT1EsRDVQcTpnano0c0cKMDAyZnNpZ25hdHVyZSAWx7EelX_3lpi8a6Pzr2kK3g7UnzZ9DlO-hYaWKLCs2Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFyZllhOUVKWFpWNE16ZlQKMDAyZnNpZ25hdHVyZSCu-F_rfXT8070IQsGvL2NMoIH0lsgDjD-vLHp6Ln3bFAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ0WDJGQE9xWEJ6Kk8wajcKMDAyZnNpZ25hdHVyZSArNqTJoKmkiBVvKGv14E7jO1iz3Gh6obbmELJFN2SUUAo ~z v r n j fb^ZVRNJFeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800 eeQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800 DUq8  T    p 7  S  4 P o 6 R Rn5Qm4mn5R98e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8sha256 8e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUsha256 8e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncsha256 8e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Ysha256 8e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wsha256 8e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdosha2568e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90sha256_8e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQsha256 :8e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_Isha256 )8e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4sha256 8e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udcksha256 8e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73csha256^8e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAsha2568e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcsha2567e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1mssha256?8e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgksha2568e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9Esha256 F8e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEsha256/8e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0sha2568e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gsha256 8e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgcsha256 8e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1osha256 7e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYsha256C7e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAsha256~8e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgsha2568e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Msha2568e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8sha2568e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDossha2568e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYsha256 8e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRgsha2568e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3ssha2568e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Qsha2568e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsIsha2568e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCMsha256.8e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qsha256h8e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MIsha2568e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4sha256<8e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYsha25698e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQsha2568e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uosha256 8e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYsha2568e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIsha2568e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8Msha2568e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4sha256p8e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwsha2568e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEsha2568e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8sha2568e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOcsha2568e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4sha256?8e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREsha2568e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdIsha2568e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgsha256 68e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Msha256T8e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8sha256g8e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGssha256I8e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LAsha2568e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Usha256 8e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-scsha2568e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijksha256t8e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ugsha25688e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4sha2568e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMsha2568e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0csha256a8e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8sha2568e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAsha2568e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMsha2568e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Aksha2568e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMsha256 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mmmmmfmmmلmmmm?mķmįEmĪmĤzmĝmĕYmĐmĉmăm{mnmem`mZmSGmNsmDGm>m6m0.m(<mmmmm>mmmmÃ#m|zmmmFmA:m9m0+m Emmmm mmmHmQmm!mm_mAmmmm"mm$mm5mmm¼m¼m¸m¶m²m°m¬Jm¦m£%m mm™wm—?m”m’Omemm…m‚am~m|[mymvmt%mpmimdmbrm_m\?~~mYZ}}mP||mK{{mIjzzmDyymBxxm@Gwwm8{vvm5uum1[ttm.ssm).rrm$qqmppm[oomnnmAmmm)llmŕmŒmōmŋ[mňmŅYmłwmxmvmsPmlmjhmgmdmamTmL mHm@m<m6Cm3Gm/m'mmmmmm cmmkkmQjjmiimhhmӮggmBffmdeemddmccm"bbmaam?``m__m^^m:]]m\\mU[[mZZm:YYmXXm'WWmVVmUUmTTmSSmRRmQQm~6PPmyiOOmvNNmnMMmmKLLmjKKmhJJmdIIm`HHm^=GGm[FFmY|EEmUDDmMCCmKBBmIAAmG5@@mD??mAL>>m!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMr@Q))e=!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKEo?Q? eQ/ e;!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rules$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2Al=Q9 e:!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_alias$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2REi<Q3 e9!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA ;Q']e8!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMc:Q' e7!wsvXTJXouVkEZcCFsD:localhost:8800m.room.create$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ  fe eQaM$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1169}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI"], "type": "m.room.aliases", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"aliases": ["#test-20191002_181700-39:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041404849, "hashes": {"sha256": "5CcdU/9N82XzYk1JXkCnVZmieZahuP+uiljJ4wfJKo0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "afBvArwYDDN4vS6UcroTgtqtNI179f5XXZzVHuFGzvLf5yAFuTHlKG0KDrEx1NbQ7ZyrMszMDO+/zmX8/3+mAw"}}, "unsigned": {"age_ts": 1570041404849}}eQa$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1168}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A"], "type": "m.room.history_visibility", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041403767, "hashes": {"sha256": "NtDCy1345B3vhqeQzC+VO8LnmQcYyacItCzVfvu755Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/AfawULLzIsSdqRviQ51KyXaKWs3KOEQU6GuGFq41DUggvAqAy6XxKxj/3Tw6LvJKAg3sP6M3kov34JWQ+a0AA"}}, "unsigned": {"age_ts": 1570041403767}}teQau$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1167}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE"], "type": "m.room.join_rules", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041403199, "hashes": {"sha256": "U1i6T/6FUV+QmWQmtIjGOJQJJgPpW/Gkw2TBTJnorfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZuO7/gQ7qIsa9D5j0Y/slxtGhVmNJZuz4RSzCjZ9vjNKwzBV3zhWKF7CnO5zOmC9fHycnWjd58Ha001LJKTdDg"}}, "unsigned": {"age_ts": 1570041403199}} eQa9$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1166}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA"], "type": "m.room.canonical_alias", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"alias": "#test-20191002_181700-39:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041402557, "hashes": {"sha256": "NVFl2d9qeRyuiEkkGqJLZKEB2GwKxDZ3kg4W9rZkrqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X2eg9YNrmEjUD2fzGM59dnrL+k/vkR0AbZo1mhVkRv/28NKCK48elYNHtKLd8XFKiAS08X628sSU3gM1ewx0Dw"}}, "unsigned": {"age_ts": 1570041402557}} a} { y w u sqomkigeca~6eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~5eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~4eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~3eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~2eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~1eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~0eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~/eeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~.eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~-eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~,eeQ$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~+eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~*eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~)eeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~(eeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800~'eeQ$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~&eeQ$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~%eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~$eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~#eeQ$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~"eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~!eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~ eeQ$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800~eeQ$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800 #P+H t }  ; > MV~#QwzGP /eQ']$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800g.eQ3 $MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_accessm-eQ? $dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibilitye,eQ/ $QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rulesg+eQ3 $KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels *eQ']$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800a)eQ' $fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800m.room.create (eQ']$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800m'eQ? $JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibilityg&eQ3 $QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_accessm%eQ? $bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibilitye$eQ/ $Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rulesg#eQ3 $LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levels "eQ']$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800a!eQ' $8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.createg eQ3 $pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_accessmeQ? $2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibilityeeQ/ $WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rulesgeQ3 $rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels eQ']$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800aeQ' $pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.create eQ']$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800 eQ']$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800meQ? $LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibilitygeQ3 $uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_accessmeQ? $JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibilityeeQ/ $t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rulesgeQ3 $JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels eQ']$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800aeQ' $3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800m.room.createmeQ? $CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibilitypeQ))$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800meQ? $SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibilityeeQ/ $OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rulesj eQ9 $4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_alias Jj8h0p> v D  6 | J   P  V $   \ *b%n< tBzHPW1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90e1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms?1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E F1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE/1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYC0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA~1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ :1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM.1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qh1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4<1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY91e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E v1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4p1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4?1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg 61e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MT1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8g1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsI1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkt1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug81e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ca1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I )1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow?1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cb1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EH1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q Jj8h0p> v D  6 | J   P  V $   \ *b%n< tBzHPW1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90_1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms?1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E F1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE/1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYC0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA~1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ :1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM.1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qh1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4<1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY91e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E t1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4p1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4?1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg 61e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MT1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8g1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsI1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkt1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug81e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ca1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I )1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow?1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cb1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EH1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q -RM H C > 9 4/*|%w rmhc TiQei!kwXxkGQFkaeenFTQJr:localhost:8800$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7EThQeh!kwXxkGQFkaeenFTQJr:localhost:8800$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYTgQeg!kwXxkGQFkaeenFTQJr:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkTfQef!kwXxkGQFkaeenFTQJr:localhost:8800$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerATeQee!EMhFCPhwmnWVnjtXXM:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sTdQed!EMhFCPhwmnWVnjtXXM:localhost:8800$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQTcQec!EMhFCPhwmnWVnjtXXM:localhost:8800$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsTbQeb!EMhFCPhwmnWVnjtXXM:localhost:8800$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5HsTaQea!EMhFCPhwmnWVnjtXXM:localhost:8800$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoT`Qe`!EMhFCPhwmnWVnjtXXM:localhost:8800$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUT_Qe_!EMhFCPhwmnWVnjtXXM:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4T^Qe^!EMhFCPhwmnWVnjtXXM:localhost:8800$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxkT]Qe]!GGXyLHdVXqhQjPRvac:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMT\Qe\!GGXyLHdVXqhQjPRvac:localhost:8800$OC1oFZ4uuSXshsXR3huYiKBYsaTA1gL0P6dcIqnAfwAT[Qe[!GGXyLHdVXqhQjPRvac:localhost:8800$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38TZQeZ!GGXyLHdVXqhQjPRvac:localhost:8800$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMTYQeY!GGXyLHdVXqhQjPRvac:localhost:8800$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kTXQeX!GGXyLHdVXqhQjPRvac:localhost:8800$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1YgTWQeW!GGXyLHdVXqhQjPRvac:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcTVQeV!GGXyLHdVXqhQjPRvac:localhost:8800$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsTUQeU!IfYYyzLHSOeyJBxBfn:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwTTQeT!IfYYyzLHSOeyJBxBfn:localhost:8800$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwTSQeS!IfYYyzLHSOeyJBxBfn:localhost:8800$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTITRQeR!IfYYyzLHSOeyJBxBfn:localhost:8800$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUTQQeQ!IfYYyzLHSOeyJBxBfn:localhost:8800$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygTPQeP!IfYYyzLHSOeyJBxBfn:localhost:8800$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWETOQeO!IfYYyzLHSOeyJBxBfn:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0TNQeN!IfYYyzLHSOeyJBxBfn:localhost:8800$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0TMQeM!ZYKvjplZRyIWvzkRyM:localhost:8800$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYTLQeL!ZYKvjplZRyIWvzkRyM:localhost:8800$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0kTKQeK!ZYKvjplZRyIWvzkRyM:localhost:8800$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGoTJQeJ!ZYKvjplZRyIWvzkRyM:localhost:8800$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgoTIQeI!ZYKvjplZRyIWvzkRyM:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeATHQeH!ZYKvjplZRyIWvzkRyM:localhost:8800$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKATGQeG!ROoilpDjLJfjKfSPIi:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0TFQeF!ROoilpDjLJfjKfSPIi:localhost:8800$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcTEQeE!ROoilpDjLJfjKfSPIi:localhost:8800$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdITDQeD!ROoilpDjLJfjKfSPIi:localhost:8800$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awTCQeC!ROoilpDjLJfjKfSPIi:localhost:8800$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4TBQeB!ROoilpDjLJfjKfSPIi:localhost:8800$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gTAQeA!ROoilpDjLJfjKfSPIi:localhost:8800$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8T@Qe@!ROoilpDjLJfjKfSPIi:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8T?Qe?!ROoilpDjLJfjKfSPIi:localhost:8800$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5UT>Qe>!wsvXTJXouVkEZcCFsD:localhost:8800$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMT=Qe=!wsvXTJXouVkEZcCFsD:localhost:8800$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE -RM H C > 9 4/*|%w rmhc TCQe!EMhFCPhwmnWVnjtXXM:localhost:8800$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsTBQe!EMhFCPhwmnWVnjtXXM:localhost:8800$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5HsTAQe!EMhFCPhwmnWVnjtXXM:localhost:8800$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoT@Qe!EMhFCPhwmnWVnjtXXM:localhost:8800$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUT?Qe!EMhFCPhwmnWVnjtXXM:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4T>Qe!EMhFCPhwmnWVnjtXXM:localhost:8800$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxkT=Qe!GGXyLHdVXqhQjPRvac:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMT<Qe!GGXyLHdVXqhQjPRvac:localhost:8800$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4T;Qe!GGXyLHdVXqhQjPRvac:localhost:8800$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQT:Qe!GGXyLHdVXqhQjPRvac:localhost:8800$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38T9Qe!GGXyLHdVXqhQjPRvac:localhost:8800$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMT8Qe!GGXyLHdVXqhQjPRvac:localhost:8800$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kT7Qe!GGXyLHdVXqhQjPRvac:localhost:8800$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1YgT6Qe!GGXyLHdVXqhQjPRvac:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcT5Qe!GGXyLHdVXqhQjPRvac:localhost:8800$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsT4Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcT3Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwT2Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNoT1Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwT0Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLkT/Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIT.Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUT-Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygT,Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWET+Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0T*Qe!IfYYyzLHSOeyJBxBfn:localhost:8800$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0T)Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYT(Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0kT'Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGoT&Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgoT%Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAT$Qe!ZYKvjplZRyIWvzkRyM:localhost:8800$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAT#Qe!ROoilpDjLJfjKfSPIi:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0T"Qe!ROoilpDjLJfjKfSPIi:localhost:8800$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcT!Qe!ROoilpDjLJfjKfSPIi:localhost:8800$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awT Qe!ROoilpDjLJfjKfSPIi:localhost:8800$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdITQe!ROoilpDjLJfjKfSPIi:localhost:8800$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awTQe!ROoilpDjLJfjKfSPIi:localhost:8800$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4TQe!ROoilpDjLJfjKfSPIi:localhost:8800$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gTQe!ROoilpDjLJfjKfSPIi:localhost:8800$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8TQe!ROoilpDjLJfjKfSPIi:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8TQe!ROoilpDjLJfjKfSPIi:localhost:8800$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5UTQe!wsvXTJXouVkEZcCFsD:localhost:8800$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMTQe!wsvXTJXouVkEZcCFsD:localhost:8800$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GMTQe!wsvXTJXouVkEZcCFsD:localhost:8800$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA 2 y2ieQa_$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1173}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-238:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041408586, "hashes": {"sha256": "JMtyJCdUK7yZ5LhglnmPrlv0+mgxwX8UQLOiskBVa9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tNm1BgU3Y//Tu5KglzZA1kxgck2ZFieh9sl43QPlVJy4XmTYk2FSXIKOAOePcj16hYgeOAx3pWvyFeNjEo31CA"}}, "unsigned": {"age_ts": 1570041408586}}eQo$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "txn_id": "118", "stream_ordering": 1172}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM"], "type": "m.room.message", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"msgtype": "m.text", "body": "public"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041407230, "hashes": {"sha256": "sSCwqnAR2ubb4RuqpPzrBwPOctVY3ObWK6gHJ7UX6zU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VI+w4jKpF3HMRCR9WSSVKHcUneiFnD7fBvfQFY5zgnu6KUfpwj21BxuHDWhXRpvzTdCuikHswxB1O5EGwtd9Dg"}}, "unsigned": {"age_ts": 1570041407230}}OeQa+$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "stream_ordering": 1171}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA"], "type": "m.room.history_visibility", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041406245, "hashes": {"sha256": "SPjBernq10vWyLXhgwCb9XRLUM3kdEtCVB0ATqKU0sM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mYkKtWE3vtSWeRgXeGCJbhqy3ciTaTd9Z1Ytx58EZ+Js3cfZiggquqCm1bTC7O6jsFWjpiEXyz9zzfjfQ34TBQ"}}, "unsigned": {"age_ts": 1570041406245, "replaces_state": "$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI"}}eQo$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA!wsvXTJXouVkEZcCFsD:localhost:8800{"token_id": 258, "txn_id": "117", "stream_ordering": 1170}{"auth_events": ["$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA", "$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ", "$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM"], "prev_events": ["$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE"], "type": "m.room.message", "room_id": "!wsvXTJXouVkEZcCFsD:localhost:8800", "sender": "@anon-20191002_181700-237:localhost:8800", "content": {"body": "private", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041405619, "hashes": {"sha256": "gj8jnbq+Ugc+eEeMyuXmh4z5N8c78e/h/PsjCtcvh1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mPTU9q63KTRyjs6XMuzCHbcem30i1VaziuHgElApeQmBHxezMRw6o81ibP5O/y6WYblR+B66HVbDycqtVffRAA"}}, "unsigned": {"age_ts": 1570041405619}} 8^ h  ^  t&~$428!,e)Q ] $JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNom.room.message!IfYYyzLHSOeyJBxBfn:localhost:8800 mHm]@anon-20191002_181700-242:localhost:8800,+e?Q ]$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwm.room.history_visibility!IfYYyzLHSOeyJBxBfn:localhost:8800mQm@anon-20191002_181700-242:localhost:8800!*e)Q ]$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLkm.room.message!IfYYyzLHSOeyJBxBfn:localhost:8800mm@anon-20191002_181700-242:localhost:8800&)e3Q ]$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIm.room.guest_access!IfYYyzLHSOeyJBxBfn:localhost:8800m!m@anon-20191002_181700-242:localhost:8800,(e?Q ]$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUm.room.history_visibility!IfYYyzLHSOeyJBxBfn:localhost:8800mm@anon-20191002_181700-242:localhost:8800$'e/Q ]$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygm.room.join_rules!IfYYyzLHSOeyJBxBfn:localhost:8800m_mb@anon-20191002_181700-242:localhost:8800&&e3Q ]$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWEm.room.power_levels!IfYYyzLHSOeyJBxBfn:localhost:8800mAm@@anon-20191002_181700-242:localhost:8800 %e'Q ]$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0m.room.member!IfYYyzLHSOeyJBxBfn:localhost:8800mm@anon-20191002_181700-242:localhost:8800$ e'Q  ]$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0m.room.create!IfYYyzLHSOeyJBxBfn:localhost:8800mmB@anon-20191002_181700-242:localhost:8800&#e3Q ]$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYm.room.guest_access!ZYKvjplZRyIWvzkRyM:localhost:8800mmy@anon-20191002_181700-240:localhost:8800,"e?Q ]$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0km.room.history_visibility!ZYKvjplZRyIWvzkRyM:localhost:8800m"m@anon-20191002_181700-240:localhost:8800$!e/Q ]$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGom.room.join_rules!ZYKvjplZRyIWvzkRyM:localhost:8800mm٧@anon-20191002_181700-240:localhost:8800& e3Q ]$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgom.room.power_levels!ZYKvjplZRyIWvzkRyM:localhost:8800m$m@anon-20191002_181700-240:localhost:8800 e'Q ]$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAm.room.member!ZYKvjplZRyIWvzkRyM:localhost:8800mmF@anon-20191002_181700-240:localhost:8800 e'Q  ]$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAm.room.create!ZYKvjplZRyIWvzkRyM:localhost:8800m5mА@anon-20191002_181700-240:localhost:8800 e'Q ]$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0m.room.member!ROoilpDjLJfjKfSPIi:localhost:8800mm@anon-20191002_181700-239:localhost:8800 e'Q ]$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcm.room.member!ROoilpDjLJfjKfSPIi:localhost:8800mm*@anon-20191002_181700-239:localhost:8800,e?Q ]$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdIm.room.history_visibility!ROoilpDjLJfjKfSPIi:localhost:8800m¼m¿}@anon-20191002_181700-238:localhost:8800&e3Q ]$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awm.room.guest_access!ROoilpDjLJfjKfSPIi:localhost:8800m¼m½>@anon-20191002_181700-238:localhost:8800,e?Q ]$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4m.room.history_visibility!ROoilpDjLJfjKfSPIi:localhost:8800m¸mºq@anon-20191002_181700-238:localhost:8800$e/Q ]$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gm.room.join_rules!ROoilpDjLJfjKfSPIi:localhost:8800m¶m¶@anon-20191002_181700-238:localhost:8800&e3Q ]$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8m.room.power_levels!ROoilpDjLJfjKfSPIi:localhost:8800m²m´r@anon-20191002_181700-238:localhost:8800 e'Q ]$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8m.room.member!ROoilpDjLJfjKfSPIi:localhost:8800m°m±@anon-20191002_181700-238:localhost:8800 e'Q  ]$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5Um.room.create!ROoilpDjLJfjKfSPIi:localhost:8800m¬Jm¬@anon-20191002_181700-238:localhost:8800  eQa$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1177}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g"], "type": "m.room.history_visibility", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041411716, "hashes": {"sha256": "sNxDYV1KNf6uVCPfMxUVSFAkoiBDp2LovVEsAtdUlSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mxS3AGWRp0JJiJKcSufQRFIvzcHM8g6BNw2BMw+lYF3VdVuPskeaNOKw16WKNdV1l9SfTgPU5y/RDHnzTW5ODg"}}, "unsigned": {"age_ts": 1570041411716}}teQau$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1176}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8"], "type": "m.room.join_rules", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041411101, "hashes": {"sha256": "gILuZqvHXkzmOCO98zrsdcgy8UAUvSpTBwQ/j/78bhY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BV3XfBwqZj7464WpjKmM7cXLVO8NoQrOgPyFqJAnwZiNkW/eZP/T6sVEKpnll0/WM6TJNbx81qGcKsTnbESaBQ"}}, "unsigned": {"age_ts": 1570041411101}}keQac$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1175}{"auth_events": ["$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "type": "m.room.power_levels", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"users": {"@anon-20191002_181700-238:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041410268, "hashes": {"sha256": "T/byRDv1tKqfPc8x1qccngVX78AT8bFCdwr+lfVBuRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8hiEI3C7Azp5r1KnQbynbTOHPLrFkPL/dIjBzfQTwOFIG3b13MEUsNoiJyR11ocoiPppvtCud5OEDY7/fgr9DA"}}, "unsigned": {"age_ts": 1570041410268}}veQay$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1174}{"auth_events": ["$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U"], "prev_events": ["$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U"], "type": "m.room.member", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-238", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-238:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041409705, "hashes": {"sha256": "sMObq6UvsuqdOkjPNtGVaq+yVJI0vLYcBuszgloWgLY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEQuGrFjo1NX5XXRomZw2Bv8Oyw9z83jlTkrTwmJeAzkk8wOIYkedqfadPmJuL08ZewgSPZqsv9u3x08RmQsDg"}}, "unsigned": {"age_ts": 1570041409705}}  4 h 9mfd]c@anon-20191002_181700-264:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdHci43UW5SQF5CQEd4U1MKMDAyZnNpZ25hdHVyZSDpw2G5Yx2gvOJSbmwv08VdYUxuigJtfQ4pOnDbSLCHBQo127.0.0.1d]c@anon-20191002_181700-263:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswo127.0.0.1d]c@anon-20191002_181700-262:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAo127.0.0.1d]c@anon-20191002_181700-261:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwo127.0.0.1d]c@anon-20191002_181700-260:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgo127.0.0.1a[a@anon-20191002_181700-25:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWXo9aW8sLmpzOE93Q0NeeAowMDJmc2lnbmF0dXJlIEuRc5lmyqCO7MMGFu-YmNbLfKEc22BKubJve_lRO1fvCg127.0.0.1d]c@anon-20191002_181700-259:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQo127.0.0.1d]c@anon-20191002_181700-258:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQo127.0.0.1d]c@anon-20191002_181700-257:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgo127.0.0.1d]c@anon-20191002_181700-254:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgo127.0.0.1  w , XFrj d]c@anon-20191002_181700-405:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAo127.0.0.1 d]c@anon-20191002_181700-394:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ7MzBOJnJ4MjdkRlY4TH4KMDAyZnNpZ25hdHVyZSDEWdLU6ypMTjm7IoIQyEblzSvLEBWgti22-K26eYOJfwo127.0.0.1 d]c@anon-20191002_181700-384:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrSWNNYyMtcztDOTpSXl4KMDAyZnNpZ25hdHVyZSB-FTDcMYIrakCJawDmb3aBv18F3P31mU-pI3jX6M9MQQo127.0.0.1}d]c@anon-20191002_181700-374:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAo127.0.0.1r 5d]c@anon-20191002_181700-364:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAo127.0.0.1gd]c@anon-20191002_181700-353:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQo127.0.0.1\d]c@anon-20191002_181700-342:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAo127.0.0.1SQd]c@anon-20191002_181700-331:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAo127.0.0.1Id]c@anon-20191002_181700-321:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7Qwo127.0.0.1? d]c@anon-20191002_181700-417:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwo127.0.0.1 8l D `8z]c!E@anon-20191002_181700-248:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813QoSFZRVIZXHM127.0.0.1Perl + Net::Async::HTTP/0.44m'\y]c!E@anon-20191002_181700-246:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwoVWLZTFZJKU127.0.0.1Perl + Net::Async::HTTP/0.44mkx]c!E@anon-20191002_181700-247:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwoTRPUOTMOOT127.0.0.1Perl + Net::Async::HTTP/0.44mi*w]c!E@anon-20191002_181700-245:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAoBMGHUZBIKD127.0.0.1Perl + Net::Async::HTTP/0.44m Ӄv]c!E@anon-20191002_181700-244:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQoVWUTZPSOAH127.0.0.1Perl + Net::Async::HTTP/0.44m xu]c!E@anon-20191002_181700-243:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_QoFMNGREYZML127.0.0.1Perl + Net::Async::HTTP/0.44m椃t]c!E@anon-20191002_181700-242:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwoAYBUQGWFIB127.0.0.1Perl + Net::Async::HTTP/0.44m?s]c!E@anon-20191002_181700-241:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQoAXXWURZRJC127.0.0.1Perl + Net::Async::HTTP/0.44mϕr]c!E@anon-20191002_181700-240:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpYTzhJWComdipkcGQsTT0KMDAyZnNpZ25hdHVyZSDstO-w3coS5FucmXjGSXAd564d60f92JbtzT8MoQN6TwoCDHFDOSRPZ127.0.0.1Perl + Net::Async::HTTP/0.44mϒq]c!E@anon-20191002_181700-239:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4qV0RwT35KN15Kc2ZaYWQKMDAyZnNpZ25hdHVyZSDo-B5VCLAWSZTenD2MHi0YsT1wbIpdA6Gbmi89qIbJtwoWFWDJJSKCM127.0.0.1Perl + Net::Async::HTTP/0.44m¬G !M(H  \ e  FIk^gj(+Mp2Q? e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsh1Q/ e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rules$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoj0Q3 e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU /Q']e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4d.Q' e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk -Q']e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMj,Q3 e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_access$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38p+Q? e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMh*Q/ e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rules$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1kj)Q3 e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg (Q']e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcd'Q' e!GGXyLHdVXqhQjPRvac:localhost:8800m.room.create$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs &Q']e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw%Q? ee!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibility$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUj$Q3 e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_access$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIp#Q? e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibility$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHUh"Q/ e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rules$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHygj!Q3 e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levels$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE Q']e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0dQ' e!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.create$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0jQ3 e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_access$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYpQ? e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibility$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0khQ/ e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rules$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGojQ3 e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo Q']e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAdQ' e!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.create$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA8Q']ee!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc Q']e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXcQ? ee!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibility$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4jQ3 e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_access$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awpQ? e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibility$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4hQ/ e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rules$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gjQ3 e!ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8 (&. X u   A ^i6\-&LW-2(e\eQ/ $Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.join_rulesg[eQ3 $LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.power_levelsaYeQ' $8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.creategXeQ3 $pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_accessmWeQ? $2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibilityeVeQ/ $WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rulesgUeQ3 $rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels TeQ']$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800joinaSeQ' $pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.createReQ']$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800leavemQeQ? $LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibilitygMeQ3 $JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels LeQ']$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800joinaKeQ' $3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800m.room.createmJeQ? $CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibilitypIeQ))$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800eGeQ/ $OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rulesjFeQ9 $4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE!wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_aliasgEeQ3 $7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA!wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels DeQ']$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800joinaCeQ' $Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800m.room.createpBeQ))$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800mAeQ? $Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibilitye@eQ/ $qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY!DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rulesj?eQ9 $4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw!DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias ZeQ']$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800joingPeQ3 $uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_accessg>eQ3 $1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levelseNeQ/ $t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rules &`&L r " 2 B R  b r"2BRb2B`p pMH]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800MG]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800MF]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800ME]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800MD]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800MC]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800MB]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800MA]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800M@]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800M?]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800M>]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800M=]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800M<]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800M;]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800M9]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800M8]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800M7]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800M6]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800M5]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800M4]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800M3]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800M2]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800M1]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800M0]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800M/]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800M.]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800M-]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800M,]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800M+]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800M*]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800M)]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800:M(]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800M']Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:88007&1Q@34:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800M%]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:88007$1Q@33:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800M#]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800M:]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800  ZeQaA$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 260, "stream_ordering": 1181}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc"], "prev_events": ["$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc"], "type": "m.room.member", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-239:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-239:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041415159, "hashes": {"sha256": "hcS83dFiIigSN0hfwH7lC5FFz04T8Kxg+amNuZOUMt8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pCrNoazhoS5Ra0ptXEi8pRFWwOXHkB3dVpPM6rI4wQXKoJDs6gV4/uJ9YWkN2Jali9zotSNNcDMXd10MYk0cDw"}}, "unsigned": {"age_ts": 1570041415159, "replaces_state": "$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc"}}eQa$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 260, "stream_ordering": 1180}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g"], "prev_events": ["$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw", "$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI"], "type": "m.room.member", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-239:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-239", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-239:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041414611, "hashes": {"sha256": "liT7e7aMiRDe7OxDLIzEc6x5itmwFXgEDZlDqoJ+KnY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "01sOD45+r2r0ZJ3yMlaXzotAag3a/aZCTnuvAxzcAuZYNOszb4zN8ULO8EV6HHf9+27G8fKwaJQRHjff1AsVCA"}}, "unsigned": {"age_ts": 1570041414611}}OeQa+$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1179}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4"], "type": "m.room.history_visibility", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041412754, "hashes": {"sha256": "+LkvomR4LinvjMouXfPR3wfR/qVtvYaYxEYE9S1pVnI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "60YhYD0W1IXPOt4+yKgdzVseodckAjchZvDi2Hy8YC1cf8vBEMQel/mwWvrnXaZnIANPcBldCcyZ6QlSN9L1DQ"}}, "unsigned": {"age_ts": 1570041412754, "replaces_state": "$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4"}}{eQa$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800{"token_id": 259, "stream_ordering": 1178}{"auth_events": ["$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8", "$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U", "$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8"], "prev_events": ["$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4"], "type": "m.room.guest_access", "room_id": "!ROoilpDjLJfjKfSPIi:localhost:8800", "sender": "@anon-20191002_181700-238:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041412753, "hashes": {"sha256": "IQY48xQrm2oAzuY+k6sUPdm1ULK0NGRdbJOx0UzBcAw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dj/e5KlK/vbK2mXT2UVkE5eh42CdGwyxrjETTFlUBpzQ8WvzC2DAqG/nV8AsPQ3g7Q01R8ojObcFD9N3gY8BDA"}}, "unsigned": {"age_ts": 1570041412753}} -omWX  Y  Z  \  ` b ocefginkTeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800TeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800TeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800TeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800TeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800xTeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800mTeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800USeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts!vVmSdclwPIqYDbnmPn:localhost:88008TeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0!mTlCLZQCmfDuQsJxxp:localhost:8800KSeQ$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08!IGVHKYcSuxzVPlFHlj:localhost:8800#TeQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800TeQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800TeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800SeQ$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs!uJtKGXTNdEnCPNOGDx:localhost:8800TeQ$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ!UMFUOnYRvwKwSPkYHB:localhost:88009TeQ$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts!laUExtszUaoCpZoyEq:localhost:8800TeQ$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs!fcdNYFWFyxmdpKAknc:localhost:8800TeQ$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800TeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800TeQ$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg!ABHbfUdkHCJksMsaUt:localhost:8800]TeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800JSeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ!QZhNrNpwObZGJZpdAG:localhost:8800TeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800^TeQ$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM!wsvXTJXouVkEZcCFsD:localhost:8800TeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800:TeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829ISeQ$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw!IMiczgkCTjejbnbeyP:localhost:8800ZTeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800TeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800SeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag!cHtqiAyCHEAoBIbCmL:localhost:8800MSeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s!OSHhtkGUjpUCkXwIhj:localhost:8800 SeQ$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M!VWYMJxEviBNDdJCuKT:localhost:8800ISeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I!fJXiUpbbOlLbHWmPgs:localhost:88004TeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800TeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800GTeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800TeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M!nftGLlLhVgzOwOFufp:localhost:8800BTeQ$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800TeQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800TeQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE!DqxFmsXPclgGqpSwdy:localhost:8800TeQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800TeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800TeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800|TeQ$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg!csWEXfVEVxdviNvgAd:localhost:8800oSeQ$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU!awHAhLuEkavTGACcUW:localhost:8800XU M $ \ S *c1 i7o=  uC}KR   X&^, Y !k9r @ y G   M 1e1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMT1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM-1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng&1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMU1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcg0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms:1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E 1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY>0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAt1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ 1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M 1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX41e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYQ1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ:1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY%0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIw1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4%1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw;1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4V1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREZ1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 51e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y 1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo 1e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE 1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA \1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 71e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 21e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ?1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcF1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU~1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ:1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w71e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg+1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM@1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4I1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8 a} { y w u sqomkigeca~UeeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~TeeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~SeeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~ReeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~QeeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~PeeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~OeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~NeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~MeeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~LeeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~KeeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~JeeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800~IeeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800~HeeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~GeeQ$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~FeeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~EeeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~DeeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800~CeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~BeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~AeeQ$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800~@eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~?eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~>eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800~=eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800~<eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~;eeQ$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800~:eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800~9eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800~8eeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800~7eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g!ROoilpDjLJfjKfSPIi:localhost:8800 2 K S "t * | B: [ l eeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800 6eeQ$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk!zNBpypJDRMlBdOcLlW:localhost:8800reeQ$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs!NFWKQvZkIwvecnREOC:localhost:8800ԁeeQ$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800#eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800$eeQ$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800heeQ$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800?eeQ$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4!BrssELMbasSzTFpIXm:localhost:8800% ceeQ$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4!HIZTeBCxvpMSpcqGVD:localhost:8800b eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI!EfJcWhdjNARbuHYrqU:localhost:8800߁eeQ$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0!FPcQcheNebvdFvmOnr:localhost:8800eeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800eeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800āeeQ$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:88293eeQ$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc!KXMUzALpMMMKqoQXUS:localhost:8800beeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800ÁeeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800ueeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800] g * T~=gg]!c@anon-20191002_181700-251:localhost:8800PMDEYZFDXJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awog]!c@anon-20191002_181700-250:localhost:8800HLUDALFTVRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgog]!c@anon-20191002_181700-249:localhost:8800TCARNJMFBOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0Qog]!c @anon-20191002_181700-248:localhost:8800SFZRVIZXHMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID00UzlIVURWNzZrbl9yOl8KMDAyZnNpZ25hdHVyZSCy-hsUdi7QVcihD-wFS5GG8-eCS3Zgrk7y3J3Dop813Qog]!c @anon-20191002_181700-246:localhost:8800VWLZTFZJKUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBWdUNaYiMqRFZrSUluZUIKMDAyZnNpZ25hdHVyZSAKA3kI_OxT2wBBe0dsv9ZVLVEVAQCbZ1ymxME67_OlJwog]!c @anon-20191002_181700-247:localhost:8800TRPUOTMOOTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEVXT3lAaioyNitaRUwxIzsKMDAyZnNpZ25hdHVyZSBMuwf7_bEfQX7wKKT6slAVIcXOiS23ZC0gG54cKrwZMwog]!c @anon-20191002_181700-245:localhost:8800BMGHUZBIKDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHN0OFdLOXZeNDJzX24zXlcKMDAyZnNpZ25hdHVyZSBIR4VGV_bFgXxxamK_TWSCJLu8kG04X4lOcTTLvuhMVAog]!c @anon-20191002_181700-244:localhost:8800VWUTZPSOAHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxUZDVJd0dAcGc6Kkpxd14KMDAyZnNpZ25hdHVyZSAhmqbD3ugYUtPRk9Kg7Qinpa0OuX97ZRtPbYITLPTMEQog]!c@anon-20191002_181700-243:localhost:8800FMNGREYZMLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhMbjM5PWk3SF5xMnJ4akEKMDAyZnNpZ25hdHVyZSBK145_NKOK78vywBGmG1tMK07TQ3QNeClKVVQ2IyCP_Qog~]!c@anon-20191002_181700-242:localhost:8800AYBUQGWFIBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5IeEJyJmVofmVoK2MufjAKMDAyZnNpZ25hdHVyZSDR2FuDtHNdPhy3mLW6BPxTJlBmpWGuhSlQWb7zSzySVwog}]!c@anon-20191002_181700-241:localhost:8800AXXWURZRJCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpfRmNySTpLVW1RZVBhdkQKMDAyZnNpZ25hdHVyZSBldoC8YmUTPWE2umqv3HOhgZ3sVUFYDGSPcToBXiWxQQo   *t eQau$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1185}{"auth_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo", "$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo"], "type": "m.room.join_rules", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041420011, "hashes": {"sha256": "vKpkiG08oLuAKD+yPP+5jiCZGaMbNHLNlJYFZHOOqc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bpR3hqjQA+7oYryqqhNvI+V/yIqQsGmx/L8DjZGckD2pK1jqGztwRunSsq56m5y8XU5D9lxC0jPtymsm9mRADw"}}, "unsigned": {"age_ts": 1570041420011}}keQac$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1184}{"auth_events": ["$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "type": "m.room.power_levels", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"users": {"@anon-20191002_181700-240:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041419044, "hashes": {"sha256": "CucScchgh3LwAtMZQm9DgmKfTmlVPnGx6E9ddbJfjiQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4zNJZIBdgYJknL6taPcmgQo8K/XjltkqxlMDU2KFlt3Yz8NdMW5cscKU89E8LBVLTVMHX1tBRoSyhuih1UtkDg"}}, "unsigned": {"age_ts": 1570041419044}}veQay$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1183}{"auth_events": ["$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA"], "prev_events": ["$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA"], "type": "m.room.member", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-240", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-240:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041418471, "hashes": {"sha256": "gPnXOKII2Vzmkhfx639Kg03TI4c/C0PqkrSWO/XFFD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U77YRLRM7o6aNsLOnqI+SOdAxl09JaJoIso0sBFQybPbb7JlTBFqB9oq80B3vUeDNw/A/LhcIazNDlhHLVaOAA"}}, "unsigned": {"age_ts": 1570041418471}}ieQa_$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1182}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-240:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041417781, "hashes": {"sha256": "dkGjDObqJot0Ir4JK0KCitzWIZwadK9CHuiHblJVWoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pdte5j8OhF38FQues9ClU2es7cjJp+PHeHfc4W43jfwYlcWe2ZZ7/bNfH6vtks5lf4yFGo3cNt3Q71yxeOJbAA"}}, "unsigned": {"age_ts": 1570041417781}} 9r  V :sWR,# e]]Q $18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4@anon-20191002_181700-260:localhost:8800@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800leaveC" e]]Q =$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI@anon-20191002_181700-260:localhost:8800@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800joinanon-20191002_181700-260C! e]]Q=$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0@anon-20191002_181700-259:localhost:8800@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800joinanon-20191002_181700-259, e]]Q $Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw@anon-20191002_181700-258:localhost:8800@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800leaveC e]]Q =$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM@anon-20191002_181700-258:localhost:8800@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800joinanon-20191002_181700-258C e]]Q=$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s@anon-20191002_181700-257:localhost:8800@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800joinanon-20191002_181700-257C e]]Q=$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM@anon-20191002_181700-254:localhost:8800@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800joinanon-20191002_181700-254C e]]Q=$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE@anon-20191002_181700-253:localhost:8800@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800joinanon-20191002_181700-253C e]]Q=$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8@anon-20191002_181700-252:localhost:8800@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800joinanon-20191002_181700-252C e]]Q=$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w@anon-20191002_181700-251:localhost:8800@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800joinanon-20191002_181700-251C e]]Q=$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw@anon-20191002_181700-250:localhost:8800@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800joinanon-20191002_181700-250C e]]Q=$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8@anon-20191002_181700-249:localhost:8800@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800joinanon-20191002_181700-249C e]]Q=$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk@anon-20191002_181700-248:localhost:8800@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800joinanon-20191002_181700-248C e]]Q=$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s@anon-20191002_181700-247:localhost:8800@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800joinanon-20191002_181700-247C e]]Q=$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4@anon-20191002_181700-246:localhost:8800@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800joinanon-20191002_181700-246C e]]Q=$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM@anon-20191002_181700-245:localhost:8800@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800joinanon-20191002_181700-245C e]]Q=$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc@anon-20191002_181700-244:localhost:8800@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800joinanon-20191002_181700-244C e]]Q=$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw@anon-20191002_181700-243:localhost:8800@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800joinanon-20191002_181700-243C e]]Q=$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0@anon-20191002_181700-242:localhost:8800@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800joinanon-20191002_181700-242C e]]Q=$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA@anon-20191002_181700-240:localhost:8800@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800joinanon-20191002_181700-240 A9e0a,X# O  { F  r =  i 4  b -Y$R~IwB n^)W"4]@anon-20191002_181700-347:localhost:8800m5kW4]@anon-20191002_181700-290:localhost:8800mD`!2[@anon-20191002_181700-28:localhost:8800mz4]@anon-20191002_181700-289:localhost:8800m2[@anon-20191002_181700-31:localhost:8800m4]@anon-20191002_181700-319:localhost:8800m=4]@anon-20191002_181700-318:localhost:8800mʳ<4]@anon-20191002_181700-317:localhost:8800mʝt;4]@anon-20191002_181700-316:localhost:8800mʛ:4]@anon-20191002_181700-315:localhost:8800mʙ94]@anon-20191002_181700-314:localhost:8800mʗT84]@anon-20191002_181700-312:localhost:8800mi74]@anon-20191002_181700-311:localhost:8800m:64]@anon-20191002_181700-310:localhost:8800m%54]@anon-20191002_181700-309:localhost:8800m#44]@anon-20191002_181700-308:localhost:8800ms34]@anon-20191002_181700-307:localhost:8800m .24]@anon-20191002_181700-306:localhost:8800m14]@anon-20191002_181700-305:localhost:8800m&04]@anon-20191002_181700-304:localhost:8800məB/4]@anon-20191002_181700-303:localhost:8800mp,.4]@anon-20191002_181700-302:localhost:8800m=o-4]@anon-20191002_181700-301:localhost:8800mo,4]@anon-20191002_181700-300:localhost:8800m̔+4]@anon-20191002_181700-299:localhost:8800mȃ*4]@anon-20191002_181700-298:localhost:8800mE)4]@anon-20191002_181700-297:localhost:8800m(4]@anon-20191002_181700-296:localhost:8800m'4]@anon-20191002_181700-295:localhost:8800mǷ3&4]@anon-20191002_181700-294:localhost:8800mdžg%4]@anon-20191002_181700-293:localhost:8800m{$4]@anon-20191002_181700-292:localhost:8800mg#4]@anon-20191002_181700-291:localhost:8800m^t"  w v$eQay$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1189}{"auth_events": ["$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0"], "prev_events": ["$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0"], "type": "m.room.member", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-242", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-242:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041424307, "hashes": {"sha256": "SqKn3RaBguk7jV1ZhHs8SQswbY8UMyKQIg1aFc3Wze8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jD/vnw6hAgwgIvWXDQ7hHLbqGgjW1/J3fVXtbAOCltFRvFu4L7vt0wQ4RafpOaq4yItOrcwwuzNo1wsLhVaCAA"}}, "unsigned": {"age_ts": 1570041424307}}i#eQa_$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1188}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-242:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041423528, "hashes": {"sha256": "U0M+9peTj8LIQAdQIiVirV+FlJ0k3OoxXm05kleztWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/L8rjCfct9tyrEpcMmfwY9pmM1y31x4VWWeMcVFikNuHO0OZd2AQ4UM0mkUSa9fEfSvHSU5gnOYG7Drs5HkpBw"}}, "unsigned": {"age_ts": 1570041423528}}{"eQa$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1187}{"auth_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo", "$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k"], "type": "m.room.guest_access", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041421851, "hashes": {"sha256": "WugCWbUMlq1XXXE8VWTk6EqoHrI47qC3ZmUvXw575z8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6SaHJJVdGQ39+h6Gkda0h3zv0VB5jKwd5zRbnaTP4z1MNj/hKA/gMvCELkJLyogWz9onQZbqvs4Ki9HIFR4qBw"}}, "unsigned": {"age_ts": 1570041421851}}!eQa$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800{"token_id": 261, "stream_ordering": 1186}{"auth_events": ["$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo", "$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA", "$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA"], "prev_events": ["$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo"], "type": "m.room.history_visibility", "room_id": "!ZYKvjplZRyIWvzkRyM:localhost:8800", "sender": "@anon-20191002_181700-240:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041420834, "hashes": {"sha256": "7V2WcNA25S0YOW/t8FoBy34DRJVpTJUtY9JTDwVMDg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SmM/RUw/qVLlDhI/ysw2mi1AsFeGtnfOoHJL4qw/HbK/5HeIdbVsz89dubdouy9Upz2HqIfaVxHAzmLe3VF5BA"}}, "unsigned": {"age_ts": 1570041420834}}  {(eQa$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1193}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU"], "type": "m.room.guest_access", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041427489, "hashes": {"sha256": "xvtJwkrRpHd6J3YSkAtzxKDMDe6AdDyd/xq2eLMJXp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYoG0bKfTSUYs4oP/JtYRvL9nSdgqgEO7TVXZmVi+wKcLoDNJlvVRYefOklkinEttCqNaWu3TwSHmbV4/BcWCg"}}, "unsigned": {"age_ts": 1570041427489}}'eQa$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1192}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg"], "type": "m.room.history_visibility", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041426451, "hashes": {"sha256": "5AVMsPAAMGQYfVQxS2OEbBOU3OIrFoKBPTkA3Kw9ZSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mbRKmfrFQ6XSj7oFrMg4oh8jIsIw0KH2ahpWBeGAtfFc04XkvcV5ngUKlJZ7HGLaciqXrFYCPULJ/ym/g+tYCw"}}, "unsigned": {"age_ts": 1570041426451}}t&eQau$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1191}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE"], "type": "m.room.join_rules", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041425759, "hashes": {"sha256": "MeOWJorM3lVe+/TCtH3zw/MbTuXcf1hcPDoAlp+9wik"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ayv+8udsWFqqaQyZHVnng+RJwqSEq/OpIs8KIx+pGFtesRtq5Bmxzh5ptRca8MRhmTvHyCERTnefOhbefnUnBQ"}}, "unsigned": {"age_ts": 1570041425759}}k%eQac$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1190}{"auth_events": ["$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "type": "m.room.power_levels", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"users": {"@anon-20191002_181700-242:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041424961, "hashes": {"sha256": "y5RWyAHfeUo7CZxXX0K3LN5tpEEsUGXr/de1WZU8P6c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/GLA+YGtwLmsHOGYvWQWzHEyOHeqeiUA2K6qFl/jreeDBpHgiqdSBEuk6dNIEOQz6T1E4v3MJCKl8m2ks9kaBA"}}, "unsigned": {"age_ts": 1570041424961}} Um:DR'c8 <T)}gk@ s H qFo Bi>  J u # w y N { P %e L # *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!beBXQofoOfxNBtzsut:localhost:8800U[*Q!beBXQofoOfxNBtzsut:localhost:8800SY*Q!beBXQofoOfxNBtzsut:localhost:8800PV*Q!bOSxzttDtclnrWnLov:localhost:8800g*Q!bOSxzttDtclnrWnLov:localhost:8800f*Q!bOSxzttDtclnrWnLov:localhost:8800e*Q!bOSxzttDtclnrWnLov:localhost:8800d*Q!bOSxzttDtclnrWnLov:localhost:8800c*Q!bOSxzttDtclnrWnLov:localhost:8800b*Q!bOSxzttDtclnrWnLov:localhost:8800a*Q!bOSxzttDtclnrWnLov:localhost:8800`*Q!bOSxzttDtclnrWnLov:localhost:8800_*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!biBIcqnGelHvLnpkOu:localhost:8800qc*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!beBXQofoOfxNBtzsut:localhost:8800W]*Q!beBXQofoOfxNBtzsut:localhost:8800Y_*Q!beBXQofoOfxNBtzsut:localhost:8800[a*Q!beBXQofoOfxNBtzsut:localhost:8800]c *Q!biBIcqnGelHvLnpkOu:localhost:8800vh*Q!biBIcqnGelHvLnpkOu:localhost:8800ug*Q!biBIcqnGelHvLnpkOu:localhost:8800tf*Q!biBIcqnGelHvLnpkOu:localhost:8800se*Q!biBIcqnGelHvLnpkOu:localhost:8800rd*Q!bjdLCdBwkKaihRIRFG:localhost:8800  6*Q!bjdLCdBwkKaihRIRFG:localhost:8800  5*Q!bjdLCdBwkKaihRIRFG:localhost:8800  4*Q!bjdLCdBwkKaihRIRFG:localhost:8800  3+*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! 8*Q!bjdLCdBwkKaihRIRFG:localhost:8800 7*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800 ~z v r n j fb^ZVRNJF=eeQ$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800<eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800;eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800:eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:88009eeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:88008eeQ$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:88007eeQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:88006eeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:88005eeQ$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:88004eeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:88003eeQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:88002eeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:88001eeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:88000eeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800/eeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800.eeQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800-eeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800,eeQ$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800+eeQ$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800*eeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800)eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800(eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800'eeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800&eeQ$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800%eeQ$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800$eeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800#eeQ$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800"eeQ$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800!eeQ$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800 eeQ$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU!IfYYyzLHSOeyJBxBfn:localhost:8800 5~^'ue"Kr#Y~ ^ N q  M3v O  ;xj<4<Q3 !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.power_levels6Q' !ZaOktTIVeRgBXxfubH:localhost:8800m.room.create!^Q']!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800 6Q' !ZWANpHlizyLrUiVvAm:localhost:8800m.room.create :Q/ !ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rules ?BQ? !ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibility @6Q' !ZOwibbprUCQrSJQCrx:localhost:8800m.room.create <<Q3 !ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels L^Q']!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800 O^Q']!ZYKvjplZRyIWvzkRyM:localhost:8800m.room.member@anon-20191002_181700-240:localhost:8800:Q/ !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.join_rulesBQ? !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.history_visibility<Q3 !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.guest_access6Q' !ZYKvjplZRyIWvzkRyM:localhost:8800m.room.create<Q3 !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels^Q']!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800:Q/ !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rulesBQ? !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility<Q3 !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access6Q' !ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.create<Q3 !ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels >^Q']!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800 A^Q']!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800 =^Q']!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-546:localhost:8829yBQ? !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.history_visibilityx:Q/ !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.join_rulesw<Q3 !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.power_levelsv^Q']!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800u6Q' !ZvLVbnHjeymRiFIkYr:localhost:8800m.room.createt<<Q3 !ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels 6Q' !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.createZ<Q3 !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.power_levelsI^Q']!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.member@anon-20191002_181700-162:localhost:8800H:Q/ !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.join_rulesKBQ? !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.history_visibilityN6Q' !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.createG?Q9 !aBCvSXjtZUEPlPGHvY:localhost:8800m.room.canonical_aliasJEQ))!aBCvSXjtZUEPlPGHvY:localhost:8800m.room.aliaseslocalhost:8800M<Q3 !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels^Q']!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800^Q']!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800:Q/ !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rulesBQ? !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibility<Q3 !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_access6Q' !ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create<Q3 !ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels^Q']!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800^Q']!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800:Q/ !ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rulesBQ? !ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility^Q']!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800 BQ? !ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibility :Q/ !ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rules D zDW,eQa;$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 264, "stream_ordering": 1197}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg"], "prev_events": ["$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo"], "type": "m.room.member", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-243:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-243", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-243:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041430662, "hashes": {"sha256": "q2zns2xbEIC5LtkE7/OGGDqx4n2vLNm6uh4pJIZPK0I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbNCSKZD7A9CZmryWYVgcWIZ8Z1O/GoLKRNElCleXSsONOk19dwgAqf5+wTZhzj6YB8wYQTUcSkvsZfP4IFKDQ"}}, "unsigned": {"age_ts": 1570041430662}}+eQq$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "txn_id": "121", "stream_ordering": 1196}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw"], "type": "m.room.message", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041429320, "hashes": {"sha256": "NBCdEN7Ff9rj0aC2XnccGJfzTWCCkWyQAnes4ikiTXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Conm6DH9VX+dhO/CK5dO7pBpeeTziKhPyDN2RKJr3yGuLycL96of0VeWphGchOWSD4D+lehJBMap/Eym5WFjAg"}}, "unsigned": {"age_ts": 1570041429320}}O*eQa+$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "stream_ordering": 1195}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk"], "type": "m.room.history_visibility", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041428817, "hashes": {"sha256": "AatzlEvrLZc2iQLUrKIo1/dlVZ+GpSgKCA0vioUksXc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s9OdNxmttwdrjeoqVq93KMvBM6k9+PEPcsVXcShDHSKTXe9/8CkprCkWc7kGTS93uBXV43aBGoEe3ypkTF3VDA"}}, "unsigned": {"age_ts": 1570041428817, "replaces_state": "$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU"}})eQm$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "txn_id": "120", "stream_ordering": 1194}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI"], "type": "m.room.message", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041428248, "hashes": {"sha256": "1gqr2SLYkGQRFacWo2E5ysHCHvHsqW6VyUmB9+usnik"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b732PWZ1xq/LBcz9NzfAeWCf57YnwJnfXRijpVvzmPyh+vVViHTfbtUOHg9umkAUPuBAE2Wew67AoKQKvgqLCA"}}, "unsigned": {"age_ts": 1570041428248}} ,NC 8 - { " p  e ZOD9.|#qf VTeL$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bssha256w "9_%cԢY&-=|"*VNeL$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwsha256X0VhR3wVW+~\VMeL$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6Esha256ΰnB~D=/]C_W^X?vTO̩VLeL$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIsha256X!"0SjPd?xCsAǰ[rVKeL$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8sha256&+⬌i1"7(s1Ž,n ?VJeL$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTosha256F|^K( [ 1FvC:VIeL$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAsha256|p?"k4TAsAm VHeL$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyEsha256-d(hj`js)oI%!VGeL$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcsha256~W9%~OA& N9% 7rjLVFeL$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucsha256  {]gR\EhrVEeL$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Esha2566}Zt[*HDS l˱VDeL$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYsha256|֏:y^b!&VCeL$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWksha256?ĀVZuUd;O/8 iVBeL$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerAsha256BAv1FZ{ ̢4 *FzVAeL$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUsha256d ӖhPg=bnx_XTq0EV@eL$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1ssha256D̅}>tA(fӳ7dDoR[k[V?eL$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEsha256pvӖ-!U?A_!V>eL$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQsha256yg]Ԟc{EAèݺbb DV=eL$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwsha256@0PkyMћ6)^ɹkوV<eL$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAssha256%m }xRI/% !U8Lx> V;eL$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hssha256rSP^DԇXe/+eYxu{V:eL$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhosha256R\hr>%w6V9eL$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUsha256/q ds?tBSpO0dhD,6,V8eL$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4sha256_jj8)@rI*AǞV7eL$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxksha256?3ac5azHŻ|QzgV6eL$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMsha256 .y0,SZgEeIV5eL$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4sha256HS@<":z\ڬ|MV4eL$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQsha256"sA:֙G?%9{0¾!8V3eL$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38sha2560.?V2{W9'*s2C ?V2eL$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMsha256v1d Hߦȗwr*^^V1eL$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1ksha256AcM,GlJGe lIݛ`AYV0eL$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Ygsha256(:9Ga1&A,Naa^zF8ՈV/eL$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcsha256BK`C e}TpgڵË< @_ V.eL$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgssha256}S2|CKjؖXΰ. V-eL$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcsha256Qz18]:TTHwV,eL$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwsha256.2/NeέҤ*K^ѰK 3[=,V+eL$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNosha256'1ղ/9-kt m&2zv=kV*eL$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttwsha256%XF,GlmWV)eL$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLksha256EM nĥ^@tG_UɽyĹ T(xP(`8@`8pH X 0  h @  x P ( ` 8  p H pHX0hxP(h@ X00P'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 0('Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XNfwczePlyYFWLCaui:localhost:8800x'Q!YgaGPEraeLCqHQirin:localhost:8800>'Q!YgaGPEraeLCqHQirin:localhost:8800;'Q!YgaGPEraeLCqHQirin:localhost:8800:'Q!YgaGPEraeLCqHQirin:localhost:88009'Q!YgaGPEraeLCqHQirin:localhost:88008'Q!YgaGPEraeLCqHQirin:localhost:88007'Q!YgaGPEraeLCqHQirin:localhost:88006'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 R'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 Q'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 P'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 O'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 N'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 M'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 L'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 f'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 e'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 d'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 c'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 b'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 a'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 `'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 _'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 ^'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 ]'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XgobMgBjNcDRJnRXLD:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800 \\ q  o {5?@G\ De'Q ]$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkm.room.member!kwXxkGQFkaeenFTQJr:localhost:8800m0.m1@anon-20191002_181700-248:localhost:8800C e'Q  ]$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerAm.room.create!kwXxkGQFkaeenFTQJr:localhost:8800m(<m)@anon-20191002_181700-248:localhost:8800!Be)Q ] $ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUm.room.message!EMhFCPhwmnWVnjtXXM:localhost:8800 mm@anon-20191002_181700-246:localhost:8800 Ae'Q ] $RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sm.room.member!EMhFCPhwmnWVnjtXXM:localhost:8800 mm@anon-20191002_181700-247:localhost:8800!@e)Q ] $9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEm.room.message!EMhFCPhwmnWVnjtXXM:localhost:8800 mm@anon-20191002_181700-246:localhost:8800,?e?Q ]$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQm.room.history_visibility!EMhFCPhwmnWVnjtXXM:localhost:8800mm @anon-20191002_181700-246:localhost:8800!>e)Q ]$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwm.room.message!EMhFCPhwmnWVnjtXXM:localhost:8800m>mE@anon-20191002_181700-246:localhost:8800&=e3Q ]$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsm.room.guest_access!EMhFCPhwmnWVnjtXXM:localhost:8800mm@anon-20191002_181700-246:localhost:8800,<e?Q ]$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsm.room.history_visibility!EMhFCPhwmnWVnjtXXM:localhost:8800mm@anon-20191002_181700-246:localhost:8800$;e/Q ]$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhom.room.join_rules!EMhFCPhwmnWVnjtXXM:localhost:8800mmj@anon-20191002_181700-246:localhost:8800&:e3Q ]$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPUm.room.power_levels!EMhFCPhwmnWVnjtXXM:localhost:8800mÃ#mÇ@anon-20191002_181700-246:localhost:8800 9e'Q ]$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4m.room.member!EMhFCPhwmnWVnjtXXM:localhost:8800m|zm}@anon-20191002_181700-246:localhost:88008 e'Q  ]$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxkm.room.create!EMhFCPhwmnWVnjtXXM:localhost:8800mmmp@anon-20191002_181700-246:localhost:8800 7e'Q ] $kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMm.room.member!GGXyLHdVXqhQjPRvac:localhost:8800 mFmH@anon-20191002_181700-245:localhost:8800!6e)Q ]$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4m.room.message!GGXyLHdVXqhQjPRvac:localhost:8800mA:mA>@anon-20191002_181700-244:localhost:8800!5e)Q ]$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQm.room.message!GGXyLHdVXqhQjPRvac:localhost:8800m9m9@anon-20191002_181700-244:localhost:8800&4e3Q ]$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38m.room.guest_access!GGXyLHdVXqhQjPRvac:localhost:8800m0+m1@anon-20191002_181700-244:localhost:8800,3e?Q ]$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMm.room.history_visibility!GGXyLHdVXqhQjPRvac:localhost:8800m Em$B@anon-20191002_181700-244:localhost:8800$2e/Q ]$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1km.room.join_rules!GGXyLHdVXqhQjPRvac:localhost:8800mm@anon-20191002_181700-244:localhost:8800&1e3Q ]$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Ygm.room.power_levels!GGXyLHdVXqhQjPRvac:localhost:8800mm;@anon-20191002_181700-244:localhost:8800 0e'Q ]$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcm.room.member!GGXyLHdVXqhQjPRvac:localhost:8800mm@anon-20191002_181700-244:localhost:8800/ e'Q  ]$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgsm.room.create!GGXyLHdVXqhQjPRvac:localhost:8800m m @anon-20191002_181700-244:localhost:8800!.e)Q ] $0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXcm.room.message!IfYYyzLHSOeyJBxBfn:localhost:8800 mm@anon-20191002_181700-242:localhost:8800 -e'Q ] $LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwm.room.member!IfYYyzLHSOeyJBxBfn:localhost:8800 mm@anon-20191002_181700-243:localhost:8800 a} { y w u sqomkigeca~teeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~seeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~reeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~qeeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~peeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~oeeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~neeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~meeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~leeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~keeQ$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~jeeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~ieeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~heeQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~geeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800~feeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~eeeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~deeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~ceeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~beeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~aeeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~`eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~_eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~^eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~]eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~\eeQ$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800~[eeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800~ZeeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~YeeQ$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800~XeeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800~WeeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800~VeeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800  v k0eQac$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1201}{"auth_events": ["$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "type": "m.room.power_levels", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"users": {"@anon-20191002_181700-244:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041434522, "hashes": {"sha256": "nIMVithOlqgSlmehit84KERU0u7JRgwYDwI4cjQtHsg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xledTpGNlAyJOEy2F/w2/zSKEIrQ/+TE8AN2AIb47rDIK7w3mGkRhnYe/1VJwdvw9G/EDxa2M+94aVITWzXBCw"}}, "unsigned": {"age_ts": 1570041434522}}v/eQay$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1200}{"auth_events": ["$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs"], "prev_events": ["$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs"], "type": "m.room.member", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-244", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-244:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041433775, "hashes": {"sha256": "SFzRdoLU/dIYLmozWwtVAjzfAlbV3cVIu+tzLl8msIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iAwaH7oAPt+HCcpuXQXFxV+FVnlmDH1BpA18LA91dLRNeiIdvaJGE9RiBG3fqeZGSM5Y9TVg2pJnoajmwjEFCA"}}, "unsigned": {"age_ts": 1570041433775}}i.eQa_$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1199}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-244:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041433045, "hashes": {"sha256": "e++U0s7PBbw4M3rFdNYTDcj7erRkVbemZcJHBVeVOCU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Kgi83BKObzhRGtMckzzhNyU+9+B8QMlBEbnibM82QF0STM+6TnnzGH0+1ijVrIRYf0opv9XXaL0hQJmswqcDQ"}}, "unsigned": {"age_ts": 1570041433045}}-eQu$0FHGehoZ8467-Y8xoDjuXTqcVKPnFcnMBOBUBUgViXc!IfYYyzLHSOeyJBxBfn:localhost:8800{"token_id": 263, "txn_id": "122", "stream_ordering": 1198}{"auth_events": ["$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE", "$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0", "$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"], "prev_events": ["$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw"], "type": "m.room.message", "room_id": "!IfYYyzLHSOeyJBxBfn:localhost:8800", "sender": "@anon-20191002_181700-242:localhost:8800", "content": {"msgtype": "m.text", "body": "post_join"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041431516, "hashes": {"sha256": "uKDfbeIZ9T3vmTJDTif5H0J1Zlr2C7WE3EcqBUyAaY0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S/Q3r0RKGo2W3qFLyiyUnvux4U5GqzsdsVV3DQf54S91FcZdcoJNCA+GhgPi5yeql1UFPJ0CICceB45K+Zw+Dg"}}, "unsigned": {"age_ts": 1570041431516}} Li^0}O!vHd6 ~ R $ l >  Z , t F  b 4 |N j<V(rDi;W)-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-305:localhost:8800W-]@anon-20191002_181700-304:localhost:8800V-]@anon-20191002_181700-303:localhost:8800U-]@anon-20191002_181700-302:localhost:8800T-]@anon-20191002_181700-301:localhost:8800S-]@anon-20191002_181700-300:localhost:8800R*Y@anon-20191002_181700-2:localhost:8800+[@anon-20191002_181700-29:localhost:88001-]@anon-20191002_181700-299:localhost:8800Q-]@anon-20191002_181700-298:localhost:8800P-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:88007-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:88006-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800}-]@anon-20191002_181700-346:localhost:8800~-]@anon-20191002_181700-345:localhost:8800|-]@anon-20191002_181700-343:localhost:8800{-]@anon-20191002_181700-342:localhost:8800z-]@anon-20191002_181700-341:localhost:8800y+[@anon-20191002_181700-33:localhost:88005-]@anon-20191002_181700-339:localhost:8800x-]@anon-20191002_181700-338:localhost:8800w-]@anon-20191002_181700-337:localhost:8800v-]@anon-20191002_181700-336:localhost:8800u-]@anon-20191002_181700-335:localhost:8800t-]@anon-20191002_181700-334:localhost:8800s-]@anon-20191002_181700-333:localhost:8800r-]@anon-20191002_181700-332:localhost:8800q-]@anon-20191002_181700-331:localhost:8800p-]@anon-20191002_181700-330:localhost:8800o+[@anon-20191002_181700-32:localhost:88004-]@anon-20191002_181700-329:localhost:8800n-]@anon-20191002_181700-328:localhost:8800m-]@anon-20191002_181700-327:localhost:8800l-]@anon-20191002_181700-326:localhost:8800k-]@anon-20191002_181700-325:localhost:8800j-]@anon-20191002_181700-324:localhost:8800i-]@anon-20191002_181700-323:localhost:8800h-]@anon-20191002_181700-322:localhost:8800g-]@anon-20191002_181700-321:localhost:8800f-]@anon-20191002_181700-320:localhost:8800e+[@anon-20191002_181700-31:localhost:88003-]@anon-20191002_181700-319:localhost:8800d-]@anon-20191002_181700-318:localhost:8800c-]@anon-20191002_181700-317:localhost:8800b-]@anon-20191002_181700-316:localhost:8800a-]@anon-20191002_181700-315:localhost:8800`-]@anon-20191002_181700-314:localhost:8800_-]@anon-20191002_181700-312:localhost:8800^-]@anon-20191002_181700-311:localhost:8800]-]@anon-20191002_181700-310:localhost:8800\+[@anon-20191002_181700-30:localhost:88002-]@anon-20191002_181700-309:localhost:8800[-]@anon-20191002_181700-308:localhost:8800Z-]@anon-20191002_181700-307:localhost:8800Y-]@anon-20191002_181700-306:localhost:8800X Li^0}O!vHd6 ~ R $ l >  Z , t F  b 4 |N j<V(rDi;W)-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-305:localhost:8800W-]@anon-20191002_181700-304:localhost:8800V-]@anon-20191002_181700-303:localhost:8800U-]@anon-20191002_181700-302:localhost:8800T-]@anon-20191002_181700-301:localhost:8800S-]@anon-20191002_181700-300:localhost:8800R*Y@anon-20191002_181700-2:localhost:8800+[@anon-20191002_181700-29:localhost:88001-]@anon-20191002_181700-299:localhost:8800Q-]@anon-20191002_181700-298:localhost:8800P-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:88007-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:88006-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800}-]@anon-20191002_181700-346:localhost:8800~-]@anon-20191002_181700-345:localhost:8800|-]@anon-20191002_181700-343:localhost:8800{-]@anon-20191002_181700-342:localhost:8800z-]@anon-20191002_181700-341:localhost:8800y+[@anon-20191002_181700-33:localhost:88005-]@anon-20191002_181700-339:localhost:8800x-]@anon-20191002_181700-338:localhost:8800w-]@anon-20191002_181700-337:localhost:8800v-]@anon-20191002_181700-336:localhost:8800u-]@anon-20191002_181700-335:localhost:8800t-]@anon-20191002_181700-334:localhost:8800s-]@anon-20191002_181700-333:localhost:8800r-]@anon-20191002_181700-332:localhost:8800q-]@anon-20191002_181700-331:localhost:8800p-]@anon-20191002_181700-330:localhost:8800o+[@anon-20191002_181700-32:localhost:88004-]@anon-20191002_181700-329:localhost:8800n-]@anon-20191002_181700-328:localhost:8800m-]@anon-20191002_181700-327:localhost:8800l-]@anon-20191002_181700-326:localhost:8800k-]@anon-20191002_181700-325:localhost:8800j-]@anon-20191002_181700-324:localhost:8800i-]@anon-20191002_181700-323:localhost:8800h-]@anon-20191002_181700-322:localhost:8800g-]@anon-20191002_181700-321:localhost:8800f-]@anon-20191002_181700-320:localhost:8800e+[@anon-20191002_181700-31:localhost:88003-]@anon-20191002_181700-319:localhost:8800d-]@anon-20191002_181700-318:localhost:8800c-]@anon-20191002_181700-317:localhost:8800b-]@anon-20191002_181700-316:localhost:8800a-]@anon-20191002_181700-315:localhost:8800`-]@anon-20191002_181700-314:localhost:8800_-]@anon-20191002_181700-312:localhost:8800^-]@anon-20191002_181700-311:localhost:8800]-]@anon-20191002_181700-310:localhost:8800\+[@anon-20191002_181700-30:localhost:88002-]@anon-20191002_181700-309:localhost:8800[-]@anon-20191002_181700-308:localhost:8800Z-]@anon-20191002_181700-307:localhost:8800Y-]@anon-20191002_181700-306:localhost:8800X =w["Us: V  t ;  W  u <  X t;Y u<Z!v=w>\#8]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGS}8]!@anon-20191002_181700-324:localhost:8800KKATIXOBNF|8]!@anon-20191002_181700-323:localhost:8800BHOVENVWZC{8]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTz8]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCy8]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBx6[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC=8]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY8]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ8]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM8]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO8]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJ6[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKOB8]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRA8]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJ8]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXT8]!@anon-20191002_181700-366:localhost:8800FABJQITKMR8]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWO8]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTB8]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXF8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSUR8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJ8]!@anon-20191002_181700-360:localhost:8800XKNFVZJCRE6[!@anon-20191002_181700-35:localhost:8800EALQMPIKHOA8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBR8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILN8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERT8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFN8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJI8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKH8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRW8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMP8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFR8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAI6[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGA@8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYS8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZ8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYU8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROP8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHA8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML8]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP8]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW6[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKN?8]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH8]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD8]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQIS8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLI8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYY8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTU8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGP8]!@anon-20191002_181700-331:localhost:8800COONNUXFOL8]!@anon-20191002_181700-330:localhost:8800TFGJMHITUL6[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCB>8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLS8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUO8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHC8]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYT~ i  g5 4h i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAoh1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwoj1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQoi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5Qol1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQob1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3Grbcgoe1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAok1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAon1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgoa1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwod1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgoc1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgof1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwog PUX08`pH X 0  `8pH xh@ h@X p x h( 0 H ` @  8   P ( PxP('Q!ffijTnPMbTrDXHqOXf:localhost:8800h'Q!ffijTnPMbTrDXHqOXf:localhost:8800f'Q!ffijTnPMbTrDXHqOXf:localhost:8800d('Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800i'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800P'Q!ffijTnPMbTrDXHqOXf:localhost:8800g'Q!ffijTnPMbTrDXHqOXf:localhost:8800b'Q!fOJLpnbtgKNxxVDquX:localhost:8800j'Q!fsbkkRBZlUcBVVfMME:localhost:88008'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800m'Q!fOJLpnbtgKNxxVDquX:localhost:8800l'Q!fOJLpnbtgKNxxVDquX:localhost:8800k'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800 `'Q!fDISaqNBhlOwherxSt:localhost:8800 _'Q!ffijTnPMbTrDXHqOXf:localhost:8800i'Q!fdEymmlcUvjgshvVyl:localhost:8800 ('Q!fDISaqNBhlOwherxSt:localhost:8800 c'Q!fDISaqNBhlOwherxSt:localhost:8800 b'Q!fDISaqNBhlOwherxSt:localhost:8800 a'Q!ffijTnPMbTrDXHqOXf:localhost:8800k'Q!ffijTnPMbTrDXHqOXf:localhost:8800j'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800+'Q!fuHSJcznvGQnoYoLPW:localhost:8800*'Q!fuHSJcznvGQnoYoLPW:localhost:8800)'Q!fuHSJcznvGQnoYoLPW:localhost:8800('Q!fOJLpnbtgKNxxVDquX:localhost:8800h'Q!fOJLpnbtgKNxxVDquX:localhost:8800g'Q!fuHSJcznvGQnoYoLPW:localhost:8800,P'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 k'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 j'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fsbkkRBZlUcBVVfMME:localhost:8800='Q!fsbkkRBZlUcBVVfMME:localhost:8800<'Q!fsbkkRBZlUcBVVfMME:localhost:8800;'Q!fsbkkRBZlUcBVVfMME:localhost:8800:'Q!fsbkkRBZlUcBVVfMME:localhost:88009'Q!ffijTnPMbTrDXHqOXf:localhost:8800c'Q!ffijTnPMbTrDXHqOXf:localhost:8800e'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 ('Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800- Kf8 J ~ P " l >  X * v H  b 4 |N j<V(pB^0xxJd6~P$-]@anon-20191002_181700-322:localhost:8800v-]@anon-20191002_181700-274:localhost:88008-]@anon-20191002_181700-273:localhost:8800:-]@anon-20191002_181700-273:localhost:88007-]@anon-20191002_181700-272:localhost:88006-]@anon-20191002_181700-317:localhost:8800q-]@anon-20191002_181700-312:localhost:8800p-]@anon-20191002_181700-311:localhost:8800o-]@anon-20191002_181700-311:localhost:8800n-]@anon-20191002_181700-311:localhost:8800m-]@anon-20191002_181700-310:localhost:8800l+[@anon-20191002_181700-30:localhost:8800-]@anon-20191002_181700-308:localhost:8800k-]@anon-20191002_181700-307:localhost:8800j-]@anon-20191002_181700-306:localhost:8800i-]@anon-20191002_181700-305:localhost:8800h-]@anon-20191002_181700-305:localhost:8800g-]@anon-20191002_181700-304:localhost:8800f-]@anon-20191002_181700-304:localhost:8800e-]@anon-20191002_181700-303:localhost:8800d-]@anon-20191002_181700-303:localhost:8800c-]@anon-20191002_181700-302:localhost:8800b-]@anon-20191002_181700-302:localhost:8800a-]@anon-20191002_181700-301:localhost:8800`-]@anon-20191002_181700-301:localhost:8800_-]@anon-20191002_181700-300:localhost:8800^-]@anon-20191002_181700-300:localhost:8800]+[@anon-20191002_181700-29:localhost:8800-]@anon-20191002_181700-299:localhost:8800[-]@anon-20191002_181700-299:localhost:8800Y-]@anon-20191002_181700-298:localhost:8800X-]@anon-20191002_181700-298:localhost:8800W-]@anon-20191002_181700-297:localhost:8800V-]@anon-20191002_181700-297:localhost:8800U-]@anon-20191002_181700-296:localhost:8800T-]@anon-20191002_181700-296:localhost:8800S-]@anon-20191002_181700-295:localhost:8800R-]@anon-20191002_181700-295:localhost:8800Q-]@anon-20191002_181700-294:localhost:8800P-]@anon-20191002_181700-294:localhost:8800O-]@anon-20191002_181700-293:localhost:8800N-]@anon-20191002_181700-293:localhost:8800M-]@anon-20191002_181700-292:localhost:8800L-]@anon-20191002_181700-291:localhost:8800K-]@anon-20191002_181700-290:localhost:8800J+[@anon-20191002_181700-28:localhost:8800+[@anon-20191002_181700-28:localhost:8800-]@anon-20191002_181700-289:localhost:8800I-]@anon-20191002_181700-288:localhost:8800H-]@anon-20191002_181700-287:localhost:8800G-]@anon-20191002_181700-287:localhost:8800F-]@anon-20191002_181700-286:localhost:8800E-]@anon-20191002_181700-284:localhost:8800D-]@anon-20191002_181700-283:localhost:8800C-]@anon-20191002_181700-282:localhost:8800B-]@anon-20191002_181700-281:localhost:8800A-]@anon-20191002_181700-280:localhost:8800@+[@anon-20191002_181700-27:localhost:8800-]@anon-20191002_181700-279:localhost:8800?-]@anon-20191002_181700-277:localhost:8800>-]@anon-20191002_181700-276:localhost:8800=-]@anon-20191002_181700-275:localhost:88009-]@anon-20191002_181700-274:localhost:8800<-]@anon-20191002_181700-274:localhost:8800;-]@anon-20191002_181700-271:localhost:88003-]@anon-20191002_181700-270:localhost:88005-]@anon-20191002_181700-270:localhost:88004-]@anon-20191002_181700-270:localhost:88002-]@anon-20191002_181700-270:localhost:88001+[@anon-20191002_181700-26:localhost:8800-]@anon-20191002_181700-321:localhost:8800u-]@anon-20191002_181700-320:localhost:8800t+[@anon-20191002_181700-31:localhost:8800-]@anon-20191002_181700-319:localhost:8800s-]@anon-20191002_181700-318:localhost:8800r 7 ' &o- 2 = k Ydi'27 2Z  khgzeQ3 $nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels yeQ']$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800joinaxeQ' $zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create weQ']$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800joingueQ3 $sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_accessmveQ? $z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibilityeseQ/ $1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rulesgreQ3 $fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels qeQ']$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800joinapeQ' $2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create oeQ']$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800joinmneQ? $jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility aaeQ' $fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs!GGXyLHdVXqhQjPRvac:localhost:8800m.room.create `eQ']$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-243:localhost:8800joinm_eQ? $JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.history_visibilityg^eQ3 $QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.guest_accessgmeQ3 $0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_accesspekeQ/ $GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rulesgjeQ3 $L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels ieQ']$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800joinaheQ' $PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create geQ']$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800joingfeQ3 $MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_accessmeeQ? $dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibilityedeQ/ $QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rulesgceQ3 $KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels beQ']$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-244:localhost:8800join "*L K V  0 ;@d,NY^o}Q? ey!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0g|Q/ ex!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rules$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8i{Q3 ew!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew zQ']ev!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8cyQ' eu!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g xQ']et!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wiwQ3 es!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_access$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4ovQ? er!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibility$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AguQ/ eq!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rules$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkitQ3 ep!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo sQ']eo!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwcrQ' en!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E qQ']em!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8opQ? el!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAioQ3 ek!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_access$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBconQ? ej!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucgmQ/ ei!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rules$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7EilQ3 eh!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY kQ']eg!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkcjQ' ef!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA iQ']ee!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sohQ? ed!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQigQ3 ec!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_access$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsofQ? eb!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5HsgeQ/ ea!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rules$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoidQ3 e`!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU cQ']e_!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4cbQ' e^!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk aQ']e]!GGXyLHdVXqhQjPRvac:localhost:8800m.room.member@anon-20191002_181700-245:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMo`Q? e\!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility$OC1oFZ4uuSXshsXR3huYiKBYsaTA1gL0P6dcIqnAfwAi_Q3 e[!GGXyLHdVXqhQjPRvac:localhost:8800m.room.guest_access$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38o^Q? eZ!GGXyLHdVXqhQjPRvac:localhost:8800m.room.history_visibility$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMg]Q/ eY!GGXyLHdVXqhQjPRvac:localhost:8800m.room.join_rules$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1ki\Q3 eX!GGXyLHdVXqhQjPRvac:localhost:8800m.room.power_levels$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg  4eQm$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "txn_id": "123", "stream_ordering": 1205}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38"], "type": "m.room.message", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041444828, "hashes": {"sha256": "vef5ZZjDU2VAiGARSRyG7tUSSi5xE6JY53m2RYM23uk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w0P0LJBMmvLwXhVPgyBU2X4byuPwcV1Rbb3HWClWtO+owdnO9KCxvT3ZAgo5dKH+zkgkEJrTC+002w081GWJCw"}}, "unsigned": {"age_ts": 1570041444828}}{3eQa$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1204}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM"], "type": "m.room.guest_access", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041442347, "hashes": {"sha256": "phmua075hnaXa6WS/fyqL5uzV3ooX1PzXRm2uf/nRb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9mvhuHOYW4WrKKY1g+3VLY0RZXnBBkzj2WeYaUEcQi0CsmAELDEkUc6VSNoaUO/8ex4quPj/aC9KsFCUoWgWCg"}}, "unsigned": {"age_ts": 1570041442347}}2eQa$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1203}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k"], "type": "m.room.history_visibility", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041438277, "hashes": {"sha256": "KCWENwXo4LEqCXqVI6GRX2wzbWtfPjkW1LP8vurpLgM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KBDNC/veqRwCUbQ1tEMY+sNLugsVrt17wJx1n6/bdYhv5GzQIVaGLKOr5NHsvjY9lJbgAk+1Iku74nnNStkCQ"}}, "unsigned": {"age_ts": 1570041438277}}t1eQau$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "stream_ordering": 1202}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg"], "type": "m.room.join_rules", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041436444, "hashes": {"sha256": "8e5cKS4bSxFCqGevW4NnZgexrHPyq7TuzDkSAHMQwik"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ffG7LbSJ1mfnFpNWn+FyIbWZdpK/H7KvXbZ5nguNf7imBKjQF9nWo2oskCppxZQpAJ9FrX2PvlQaH3BeVoDECw"}}, "unsigned": {"age_ts": 1570041436444}} M v O N U $8 T \ * p | J Db0"  h6I(>nZ< j uC{   1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU [1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V4031e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0c1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs]1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY 1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4e1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNou1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwf1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM51e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoq0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM@1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0B1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg;1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80I1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUp1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U&1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwy1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEt1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMH1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qr1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U o1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q ]1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A g 1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU=1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo -1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU C1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ )1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw #1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc121e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo M v O N U $8 T \ * p | J Db0"  h6I(>nZ< j uC{   1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU [1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V4031e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0c1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs]1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY 1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4e1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNou1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwf1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM51e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMoq0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM@1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0B1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg;1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80I1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUp1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U&1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwy1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEt1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMH1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qr1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U o1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q ]1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A g 1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU71e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo -1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU C1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ )1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw #1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc121e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo WK & d ^ , } ?  w k9 K ESr@  xYGqM Q j8_-(!2 1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0L1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi41e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo /1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgJ1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ 1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY e0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEw1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY 1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQN1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgo1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg(1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUO1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4T1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A11e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdco0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw21e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8l1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sS1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAZ0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw11e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM)1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygu0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF021e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM:1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew T1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU 1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsx1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkE1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU:1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA>0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw7 21e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0A1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQQ1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68A1e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE z1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg v 21e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI 1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5El21e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQT1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk 1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE741e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sks1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8P0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcL1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y  Dj8p> v D  | J  P  V $ \ *b0h6n< tBzHN1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 31e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o g1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMB1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c71e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I )1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 31e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 21e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cB1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8x1e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIe1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4T1e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 B1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI11e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI;1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 71e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8.1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4f1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs|1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE21e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sx1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg!1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wk1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUp1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM 1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U e1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g \ 7 x7v8eQay$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1209}{"auth_events": ["$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk"], "prev_events": ["$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk"], "type": "m.room.member", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-246", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-246:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041461882, "hashes": {"sha256": "0944A6KoG2PZ1SKGmFgwM8I61U8Za+cKPviz1TYOeR0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q+PyCe+LIPYDBqjmwSPIDbZ5H5O387MRNpdjNfxirF92fxr1Ba9fxud10JFBGj0tur1HfO2blVJIAfhsD4GMDQ"}}, "unsigned": {"age_ts": 1570041461882}}i7eQa_$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1208}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-246:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041458164, "hashes": {"sha256": "Rq7eRXGfu2s+V6VK10hQCZOPcxHEeMf+IuCaPLCPqjk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PyHx0Zyd/60rkpBmsx6HTmecc42vpewzWmB56gPfLJiJmgV93b1zgdhL57L/rw9HW2CFNRYxB0vrdz3tA/MNAA"}}, "unsigned": {"age_ts": 1570041458164}}V6eQa9$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 266, "stream_ordering": 1207}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k"], "prev_events": ["$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4"], "type": "m.room.member", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-245:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-245", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-245:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041448178, "hashes": {"sha256": "8/RG6sqnwX+eWMhca+uScpahzBiM3LWat1ZBfsLCMbE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MNUd4kevTNwxuIjxAvK36VgUSx68mmdan8L8iICto5oDOW7ipbePj1bn7bjW+cSHm9aNRS5BcMKsGv3lVxM4Aw"}}, "unsigned": {"age_ts": 1570041448178}}5eQq$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800{"token_id": 265, "txn_id": "124", "stream_ordering": 1206}{"auth_events": ["$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg", "$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs", "$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc"], "prev_events": ["$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ"], "type": "m.room.message", "room_id": "!GGXyLHdVXqhQjPRvac:localhost:8800", "sender": "@anon-20191002_181700-244:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041446714, "hashes": {"sha256": "vJpplFcYmk4mKbN4J+G2WFJdUFfoGUCYO+QqmoJ7Yms"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RlNnDahO1Yy/cdBlLIS90URVRMfTnhgopZIeGUxP6hZhG34JXat28rx2SbaXSewQ2bgbIqlP+AUJuQXwPUdZBg"}}, "unsigned": {"age_ts": 1570041446714}} OU " n A  ` 3 0 S &rFe8 }C]Q$pX+wJyLj=k> _ 2   ho,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 +Q !SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  +Q !TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !THHfVSOSWiBQTHRAnJ:localhost:8800,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!THHfVSOSWiBQTHRAnJ:localhost:8800 +Q !TcCLuIBUrtFqghDgay:localhost:8800GG,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !TeraguiGoZoeOGFzlI:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800+Q !TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TWETXUgfFZafDdbqLS:localhost:880055,Q!TWETXUgfFZafDdbqLS:localhost:880044,Q!TWETXUgfFZafDdbqLS:localhost:880033,Q!TWETXUgfFZafDdbqLS:localhost:880022,Q!TWETXUgfFZafDdbqLS:localhost:880011,Q!TWETXUgfFZafDdbqLS:localhost:880000,Q!TWETXUgfFZafDdbqLS:localhost:8800//+Q !TWETXUgfFZafDdbqLS:localhost:8800..,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800+Q !SyIWYOmcGiASNkPCTB:localhost:8800,Q!SvKwEALYoNreUvqAlp:localhost:8800vv,Q!SvKwEALYoNreUvqAlp:localhost:8800uu,Q!SvKwEALYoNreUvqAlp:localhost:8800tt,Q!SvKwEALYoNreUvqAlp:localhost:8800ss,Q!SvKwEALYoNreUvqAlp:localhost:8800rr,Q!SvKwEALYoNreUvqAlp:localhost:8800qq,Q!SvKwEALYoNreUvqAlp:localhost:8800pp+Q !SvKwEALYoNreUvqAlp:localhost:8800oo,Q!StEnDjTJToXKXsOHNf:localhost:8829,Q!SrMQpDMFREKRMELwbL:localhost:8800=,Q!SrMQpDMFREKRMELwbL:localhost:8800<,Q!SrMQpDMFREKRMELwbL:localhost:8800;,Q!SrMQpDMFREKRMELwbL:localhost:8800:,Q!SrMQpDMFREKRMELwbL:localhost:88009,Q!SrMQpDMFREKRMELwbL:localhost:88008,Q!SrMQpDMFREKRMELwbL:localhost:88007,Q!SrMQpDMFREKRMELwbL:localhost:88006,Q!SrMQpDMFREKRMELwbL:localhost:88005,Q!SrMQpDMFREKRMELwbL:localhost:88004,Q!SrMQpDMFREKRMELwbL:localhost:88003,Q!SrMQpDMFREKRMELwbL:localhost:88002,Q!SrMQpDMFREKRMELwbL:localhost:88001\,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800+Q !TkluVzxeeCbMtbFWWS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800jj,Q!TlJCaYlCkOOVzFDlLx:localhost:8800ii+Q !TlJCaYlCkOOVzFDlLx:localhost:8800hh,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TcCLuIBUrtFqghDgay:localhost:8800LL,Q!TcCLuIBUrtFqghDgay:localhost:8800KK,Q!TcCLuIBUrtFqghDgay:localhost:8800JJ,Q!TcCLuIBUrtFqghDgay:localhost:8800II,Q!TcCLuIBUrtFqghDgay:localhost:8800HH OU " n A  ` 3 0 S &rFe8 }C]Q$pX+wJyLj=k> _ 2   ho,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 +Q !SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!TSFcaXDBqrCREHRHxv:localhost:8800  +Q !TSFcaXDBqrCREHRHxv:localhost:8800  ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !THHfVSOSWiBQTHRAnJ:localhost:8800,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!SrwdtDytJDUBVZOueF:localhost:8800 ,Q!THHfVSOSWiBQTHRAnJ:localhost:8800,Q!THHfVSOSWiBQTHRAnJ:localhost:8800 +Q !TcCLuIBUrtFqghDgay:localhost:8800GG,Q!THHfVSOSWiBQTHRAnJ:localhost:8800+Q !TeraguiGoZoeOGFzlI:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TcaopYfMoJFEcjYRzJ:localhost:8800+Q !TcaopYfMoJFEcjYRzJ:localhost:8800,Q!TWETXUgfFZafDdbqLS:localhost:880055,Q!TWETXUgfFZafDdbqLS:localhost:880044,Q!TWETXUgfFZafDdbqLS:localhost:880033,Q!TWETXUgfFZafDdbqLS:localhost:880022,Q!TWETXUgfFZafDdbqLS:localhost:880011,Q!TWETXUgfFZafDdbqLS:localhost:880000,Q!TWETXUgfFZafDdbqLS:localhost:8800//+Q !TWETXUgfFZafDdbqLS:localhost:8800..,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800 ,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800,Q!SyIWYOmcGiASNkPCTB:localhost:8800+Q !SyIWYOmcGiASNkPCTB:localhost:8800,Q!SvKwEALYoNreUvqAlp:localhost:8800vv,Q!SvKwEALYoNreUvqAlp:localhost:8800uu,Q!SvKwEALYoNreUvqAlp:localhost:8800tt,Q!SvKwEALYoNreUvqAlp:localhost:8800ss,Q!SvKwEALYoNreUvqAlp:localhost:8800rr,Q!SvKwEALYoNreUvqAlp:localhost:8800qq,Q!SvKwEALYoNreUvqAlp:localhost:8800pp+Q !SvKwEALYoNreUvqAlp:localhost:8800oo,Q!StEnDjTJToXKXsOHNf:localhost:8829,Q!SrMQpDMFREKRMELwbL:localhost:8800=,Q!SrMQpDMFREKRMELwbL:localhost:8800<,Q!SrMQpDMFREKRMELwbL:localhost:8800;,Q!SrMQpDMFREKRMELwbL:localhost:8800:,Q!SrMQpDMFREKRMELwbL:localhost:88009,Q!SrMQpDMFREKRMELwbL:localhost:88008,Q!SrMQpDMFREKRMELwbL:localhost:88007,Q!SrMQpDMFREKRMELwbL:localhost:88006,Q!SrMQpDMFREKRMELwbL:localhost:88005,Q!SrMQpDMFREKRMELwbL:localhost:88004,Q!SrMQpDMFREKRMELwbL:localhost:88003,Q!SrMQpDMFREKRMELwbL:localhost:88002,Q!SrMQpDMFREKRMELwbL:localhost:88001\,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800,Q!TkluVzxeeCbMtbFWWS:localhost:8800+Q !TkluVzxeeCbMtbFWWS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800jj,Q!TlJCaYlCkOOVzFDlLx:localhost:8800ii+Q !TlJCaYlCkOOVzFDlLx:localhost:8800hh,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TeraguiGoZoeOGFzlI:localhost:8800,Q!TcCLuIBUrtFqghDgay:localhost:8800LL,Q!TcCLuIBUrtFqghDgay:localhost:8800KK,Q!TcCLuIBUrtFqghDgay:localhost:8800JJ,Q!TcCLuIBUrtFqghDgay:localhost:8800II,Q!TcCLuIBUrtFqghDgay:localhost:8800HH + `  @h Hp(P x 0 p(PxGo'Ow X  8  EN]=@anon-20191002_181700-284:localhost:8800anon-20191002_181700-284EM]=@anon-20191002_181700-283:localhost:8800anon-20191002_181700-283EL]=@anon-20191002_181700-282:localhost:8800anon-20191002_181700-282EK]=@anon-20191002_181700-281:localhost:8800anon-20191002_181700-281EJ]=@anon-20191002_181700-280:localhost:8800anon-20191002_181700-280EI]=@anon-20191002_181700-279:localhost:8800anon-20191002_181700-279EH]=@anon-20191002_181700-277:localhost:8800anon-20191002_181700-277EG]=@anon-20191002_181700-276:localhost:8800anon-20191002_181700-276EF]=@anon-20191002_181700-273:localhost:8800anon-20191002_181700-273VE]%G@anon-20191002_181700-272:localhost:8800Display Namehttp://example.com/avatar.pngED]=@anon-20191002_181700-271:localhost:8800anon-20191002_181700-271EB]=@anon-20191002_181700-269:localhost:8800anon-20191002_181700-269EA]=@anon-20191002_181700-268:localhost:8800anon-20191002_181700-268EC]=@anon-20191002_181700-270:localhost:8800anon-20191002_181700-270E?]=@anon-20191002_181700-265:localhost:8800anon-20191002_181700-265E>]=@anon-20191002_181700-264:localhost:8800anon-20191002_181700-264E=]=@anon-20191002_181700-263:localhost:8800anon-20191002_181700-263E<]=@anon-20191002_181700-261:localhost:8800anon-20191002_181700-261E;]=@anon-20191002_181700-259:localhost:8800anon-20191002_181700-259E/]=@anon-20191002_181700-244:localhost:8800anon-20191002_181700-244E.]=@anon-20191002_181700-243:localhost:8800anon-20191002_181700-243E-]=@anon-20191002_181700-242:localhost:8800anon-20191002_181700-242E,]=@anon-20191002_181700-240:localhost:8800anon-20191002_181700-240E+]=@anon-20191002_181700-238:localhost:8800anon-20191002_181700-238E*]=@anon-20191002_181700-237:localhost:8800anon-20191002_181700-237E)]=@anon-20191002_181700-236:localhost:8800anon-20191002_181700-236E(]=@anon-20191002_181700-234:localhost:8800anon-20191002_181700-234E']=@anon-20191002_181700-232:localhost:8800anon-20191002_181700-232E&]=@anon-20191002_181700-231:localhost:8800anon-20191002_181700-231E%]=@anon-20191002_181700-228:localhost:8800anon-20191002_181700-228E$]=@anon-20191002_181700-226:localhost:8800anon-20191002_181700-226E#]=@anon-20191002_181700-224:localhost:8800anon-20191002_181700-224@E:]=@anon-20191002_181700-257:localhost:8800anon-20191002_181700-257E9]=@anon-20191002_181700-254:localhost:8800anon-20191002_181700-254E8]=@anon-20191002_181700-253:localhost:8800anon-20191002_181700-253E7]=@anon-20191002_181700-252:localhost:8800anon-20191002_181700-252E6]=@anon-20191002_181700-251:localhost:8800anon-20191002_181700-251E5]=@anon-20191002_181700-250:localhost:8800anon-20191002_181700-250E4]=@anon-20191002_181700-249:localhost:8800anon-20191002_181700-249E3]=@anon-20191002_181700-248:localhost:8800anon-20191002_181700-248E2]=@anon-20191002_181700-247:localhost:8800anon-20191002_181700-247E1]=@anon-20191002_181700-246:localhost:8800anon-20191002_181700-246E0]=@anon-20191002_181700-245:localhost:8800anon-20191002_181700-245 ?CJ Q  X  c ' i - o 3v:}AG JO_`f*9 ]@anon-20191002_181700-280:localhost:8800a&\> ]  @anon-20191002_181700-279:localhost:8800m&\$9 ]@anon-20191002_181700-279:localhost:8800a&\> ]  @anon-20191002_181700-277:localhost:8800m&\99 ]@anon-20191002_181700-278:localhost:8800a&\9 ]@anon-20191002_181700-277:localhost:8800a&\> ]  @anon-20191002_181700-276:localhost:8800m&\99 ]@anon-20191002_181700-276:localhost:8800a&\> ]@anon-20191002_181700-274:localhost:8800m&\= ]  @anon-20191002_181700-273:localhost:8800m&\? ]  @anon-20191002_181700-272:localhost:8800m&\9 ]@anon-20191002_181700-275:localhost:8800a&\9 ]@anon-20191002_181700-274:localhost:8800a&\9 ]@anon-20191002_181700-272:localhost:8800a&\9 ]@anon-20191002_181700-273:localhost:8800a&\? ] @anon-20191002_181700-270:localhost:8800m&\ !> ] @anon-20191002_181700-271:localhost:8800m&\X9 ]@anon-20191002_181700-270:localhost:8800a&\9 ]@anon-20191002_181700-271:localhost:8800a&\= ]  @anon-20191002_181700-269:localhost:8800m&\V= ]  @anon-20191002_181700-268:localhost:8800m&\V> ] @anon-20191002_181700-267:localhost:8800m&\9 ]@anon-20191002_181700-269:localhost:8800a&\9 ]@anon-20191002_181700-268:localhost:8800a&\9 ]@anon-20191002_181700-267:localhost:8800a&\>~ ]@anon-20191002_181700-266:localhost:8800m&\#>} ] @anon-20191002_181700-265:localhost:8800m&\9| ]@anon-20191002_181700-266:localhost:8800a&\9{ ]@anon-20191002_181700-265:localhost:8800a&\=z ]  @anon-20191002_181700-264:localhost:8800m&\V>y ]  @anon-20191002_181700-263:localhost:8800m&\09x ]@anon-20191002_181700-264:localhost:8800a&\9w ]@anon-20191002_181700-263:localhost:8800a&\=v ] @anon-20191002_181700-262:localhost:8800m&\V>u ]  @anon-20191002_181700-261:localhost:8800m&\9t ]@anon-20191002_181700-262:localhost:8800a&\9s ]@anon-20191002_181700-261:localhost:8800a&\>r ]@anon-20191002_181700-260:localhost:8800m&\>q ]  @anon-20191002_181700-259:localhost:8800m&\09p ]@anon-20191002_181700-260:localhost:8800a&\9o ]@anon-20191002_181700-259:localhost:8800a&\>n ]@anon-20191002_181700-258:localhost:8800m&\>m ]  @anon-20191002_181700-257:localhost:8800m&\09l ]@anon-20191002_181700-258:localhost:8800a&\9k ]@anon-20191002_181700-257:localhost:8800a&\>j ]  @anon-20191002_181700-254:localhost:8800m&\a9i ]@anon-20191002_181700-255:localhost:8800a&\9h ]@anon-20191002_181700-254:localhost:8800a&\=g ]  @anon-20191002_181700-253:localhost:8800m&\W>f ]  @anon-20191002_181700-252:localhost:8800m&\ !9e ]@anon-20191002_181700-253:localhost:8800a&\9d ]@anon-20191002_181700-252:localhost:8800a&\=c ]  @anon-20191002_181700-251:localhost:8800m&\V>b ]  @anon-20191002_181700-250:localhost:8800m&\ 9a ]@anon-20191002_181700-251:localhost:8800a&\9` ]@anon-20191002_181700-250:localhost:8800a&\=_ ]  @anon-20191002_181700-249:localhost:8800m&\W>^ ]  @anon-20191002_181700-248:localhost:8800m&\ [9] ]@anon-20191002_181700-249:localhost:8800a&\9\ ]@anon-20191002_181700-248:localhost:8800a&\=[ ]  @anon-20191002_181700-247:localhost:8800m&\W>Z ]  @anon-20191002_181700-246:localhost:8800m&\ \9Y ]@anon-20191002_181700-246:localhost:8800a&\ Y T)}R'FoDe: { P % y N # w L ! u J  s H qmBk@i>g<c8 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SpXEytywhTbAftyVBr:localhost:880099*Q!SpXEytywhTbAftyVBr:localhost:880088*Q!SpXEytywhTbAftyVBr:localhost:880077*Q!SpXEytywhTbAftyVBr:localhost:880066*Q!SpXEytywhTbAftyVBr:localhost:880055*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SnROoiDBapNNtMmKnT:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SfYtaUhCFosNfHfUVm:localhost:8800nn*Q!SfYtaUhCFosNfHfUVm:localhost:8800mm*Q!SfYtaUhCFosNfHfUVm:localhost:8800kk*Q!SfYtaUhCFosNfHfUVm:localhost:8800ii*Q!SfYtaUhCFosNfHfUVm:localhost:8800gg*Q!SfYtaUhCFosNfHfUVm:localhost:8800ee*Q!SfYtaUhCFosNfHfUVm:localhost:8800cc*Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 "= c f  u 3 Yhq />Go. QeQ']$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800aPeQ' $IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800m.room.create OeQ']$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800mNeQ? $sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilitymMeQ? $9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilitymLeQ? $kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilitymKeQ? $qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilityeJeQ/ $wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rulesgIeQ3 $9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels HeQ']$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800aGeQ' $kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create FeQ']$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800gEeQ3 $WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_accessmDeQ? $GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibilityeCeQ/ $tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rulesgBeQ3 $nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels AeQ']$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800a@eQ' $zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create ?eQ']$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800m>eQ? $z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibilityg=eQ3 $sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_accessm<eQ? $9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibilitye;eQ/ $1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rulesg:eQ3 $fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels 9eQ']$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800a8eQ' $2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create 7eQ']$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800m6eQ? $jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibilityg5eQ3 $0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_accessm4eQ? $nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibilitye3eQ/ $GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rulesg2eQ3 $L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels 1eQ']$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800a0eQ' $PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create  {<eQa$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1213}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs"], "type": "m.room.guest_access", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041494558, "hashes": {"sha256": "NYOkmOM5lmZ6sICa8dvuxpoIGn7GAZqw4RIvL3cerOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lLpD1Ng8S0h1gH9yDGy2s1hfh4e0Vj1yG7ISqxQJxfMKlSOjybSz2wFlUlRU0YZhav55sc0K9H6R2A5ONh0yCA"}}, "unsigned": {"age_ts": 1570041494558}};eQa$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1212}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho"], "type": "m.room.history_visibility", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041490358, "hashes": {"sha256": "hmkVi4gTwA6HTDPtDJ2olhH3T4lxkbKtcv4w2qhFUYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WKRKJ0Sc7BdrCM8+Lc8/ng6OMTNalKN6LWcieB7AbLa64B9mI/+UTZxK4HKnKAY5vvNS486sozuQUlY2m0ByBw"}}, "unsigned": {"age_ts": 1570041490358}}t:eQau$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1211}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU"], "type": "m.room.join_rules", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041485027, "hashes": {"sha256": "UxGWt1NEOj1EmOiKpvZDEK9OdmeZ6zcWBAlOaPWoasU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "942E/GLeRT38G+J6VWV3b+9E3BIS6JqJ6lXqky1STJt0cDf0I0II+R1dNf9rhYbhUyGV0QVhQLztv6+8bCemBw"}}, "unsigned": {"age_ts": 1570041485027}}k9eQac$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1210}{"auth_events": ["$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "type": "m.room.power_levels", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"users": {"@anon-20191002_181700-246:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041463587, "hashes": {"sha256": "mV4ee50Ww6RtML/AICCfAoDE2Xq6Nz+0J7EEvMe42gI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zUZUioZJiOqg5hTyiS/6RiwUn+rbUmkKCh8w8u8dpUX2D5wV5zTRwz1Rro+eEVrHkbGYqlDAS4/9pu/6cYKmAw"}}, "unsigned": {"age_ts": 1570041463587}} >CG K O  S  W  [ _ c$g(k,o0s4w8{<<~]!@anon-20191002_181700-288:localhost:8800BKSOCJCTFTm4<}]!@anon-20191002_181700-287:localhost:8800UVZQFXTZFVm4<|]!@anon-20191002_181700-286:localhost:8800SFUJRXTQDYm4<{]!@anon-20191002_181700-285:localhost:8800RKYDKAHKAAm4e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1se1=e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEd1<e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQd1;e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwc1:e$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAsc19e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsb18e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhoa -l/ V   E u 8 [  a %k(QI|<)KKKKKKKKKRQ'E!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455 =]Q'[!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.member@anon-20191002_181700-79:localhost:8800:Q/ !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.join_rulesBQ? !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.history_visibility6Q' !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.create?Q9 !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.canonical_aliasEQ))!OSHhtkGUjpUCkXwIhj:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels ^Q']!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800 RQ'E!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455 :Q/ !OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules BQ? !OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibility 6Q' !OJilSqnQvLgoXSqRaW:localhost:8800m.room.create <Q3 !OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels U^Q']!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800 T:Q/ !OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rules VBQ? !OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibility W6Q' !OCEHAjcOXWNyWIESIS:localhost:8800m.room.create SEQ))!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800 X<Q3 !OBWkjfrDCNgYFfblia:localhost:8800m.room.power_levels^Q']!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-130:localhost:8800^Q']!OBWkjfrDCNgYFfblia:localhost:8800m.room.member@anon-20191002_181700-129:localhost:8800:Q/ !OBWkjfrDCNgYFfblia:localhost:8800m.room.join_rulesBQ? !OBWkjfrDCNgYFfblia:localhost:8800m.room.history_visibility6Q' !OBWkjfrDCNgYFfblia:localhost:8800m.room.create?Q9 !OBWkjfrDCNgYFfblia:localhost:8800m.room.canonical_aliasEQ))!OBWkjfrDCNgYFfblia:localhost:8800m.room.aliaseslocalhost:8800<Q3 !NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels^Q']!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800:Q/ !NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rulesBQ? !NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility<Q3 !NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access6Q' !NrxQuziwSWzsHuXIlG:localhost:8800m.room.create;Q3 !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.power_levelsi\Q'[!NhWgOTYzEPRwAxRQvS:localhost:8800m.room.member@anon-20191002_181700-35:localhost:8800h9Q/ !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.join_rulesjAQ? !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.history_visibilityk5Q' !NhWgOTYzEPRwAxRQvS:localhost:8800m.room.createg^Q']!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800 6Q' !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create K<Q3 !NfaPEGKjnUDUTavzol:localhost:8800m.room.power_levels-^Q']!NfaPEGKjnUDUTavzol:localhost:8800m.room.member@anon-20191002_181700-200:localhost:8800,<Q3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels BQ? !NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility z:Q/ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules Tc l !   BENvc#,/ThRQ/ e!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rules$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpImQQ9 e!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_alias$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwjPQ3 e!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg OQ']e!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMdNQ' e!FAYqpziHeVZugCGaij:localhost:8800m.room.create$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo MQ']e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QELQ? ee!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAKQ? ee!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08JQ? ee!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0pIQ? e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0hHQ/ e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rules$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8jGQ3 e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew FQ']e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8dEQ' e!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g DQ']e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wjCQ3 e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_access$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4pBQ? e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibility$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AhAQ/ e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_rules$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkj@Q3 e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.power_levels$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo ?Q']e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-250:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwd>Q' e!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.create$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E =Q']e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8<Q? ee!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucj;Q3 e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_access$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcp:Q? e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuch9Q/ e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rules$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Ej8Q3 e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY 7Q']e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkd6Q' e!kwXxkGQFkaeenFTQJr:localhost:8800m.room.create$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA 5Q']e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s4Q? ee!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hsj3Q3 e!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_access$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs -RM H C > 9 4/*|%w rmhc TpQe!FAYqpziHeVZugCGaij:localhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIToQe!FAYqpziHeVZugCGaij:localhost:8800$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcTnQe!FAYqpziHeVZugCGaij:localhost:8800$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpITmQe!FAYqpziHeVZugCGaij:localhost:8800$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwTlQe!FAYqpziHeVZugCGaij:localhost:8800$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgTkQe!FAYqpziHeVZugCGaij:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMTjQe!FAYqpziHeVZugCGaij:localhost:8800$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoTiQe!ZaOktTIVeRgBXxfubH:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEThQe!ZaOktTIVeRgBXxfubH:localhost:8800$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruITgQe!ZaOktTIVeRgBXxfubH:localhost:8800$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MTfQe!ZaOktTIVeRgBXxfubH:localhost:8800$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGETeQe!ZaOktTIVeRgBXxfubH:localhost:8800$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwATdQe!ZaOktTIVeRgBXxfubH:localhost:8800$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMTcQe!ZaOktTIVeRgBXxfubH:localhost:8800$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08TbQe!ZaOktTIVeRgBXxfubH:localhost:8800$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0TaQe!ZaOktTIVeRgBXxfubH:localhost:8800$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8T`Qe!ZaOktTIVeRgBXxfubH:localhost:8800$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewT_Qe!ZaOktTIVeRgBXxfubH:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8T^Qe!ZaOktTIVeRgBXxfubH:localhost:8800$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gT]Qe!ZaltdIYVZjCHsCWTZD:localhost:8800$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAT\Qe!ZaltdIYVZjCHsCWTZD:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wT[Qe!ZaltdIYVZjCHsCWTZD:localhost:8800$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsTZQe!ZaltdIYVZjCHsCWTZD:localhost:8800$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4TYQe!ZaltdIYVZjCHsCWTZD:localhost:8800$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4TXQe!ZaltdIYVZjCHsCWTZD:localhost:8800$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_ATWQe!ZaltdIYVZjCHsCWTZD:localhost:8800$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkTVQe!ZaltdIYVZjCHsCWTZD:localhost:8800$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoTUQe!ZaltdIYVZjCHsCWTZD:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwTTQe!ZaltdIYVZjCHsCWTZD:localhost:8800$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6ETSQe!kwXxkGQFkaeenFTQJr:localhost:8800$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnITRQe!kwXxkGQFkaeenFTQJr:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8TQQe!kwXxkGQFkaeenFTQJr:localhost:8800$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnToTPQe!kwXxkGQFkaeenFTQJr:localhost:8800$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhATOQe!kwXxkGQFkaeenFTQJr:localhost:8800$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyETNQe!kwXxkGQFkaeenFTQJr:localhost:8800$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcTMQe!kwXxkGQFkaeenFTQJr:localhost:8800$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucTLQe!kwXxkGQFkaeenFTQJr:localhost:8800$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7ETKQe!kwXxkGQFkaeenFTQJr:localhost:8800$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYTJQe!kwXxkGQFkaeenFTQJr:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkTIQe!kwXxkGQFkaeenFTQJr:localhost:8800$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerATHQe!EMhFCPhwmnWVnjtXXM:localhost:8800$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUTGQe!EMhFCPhwmnWVnjtXXM:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sTFQe!EMhFCPhwmnWVnjtXXM:localhost:8800$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyETEQe!EMhFCPhwmnWVnjtXXM:localhost:8800$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQTDQe!EMhFCPhwmnWVnjtXXM:localhost:8800$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw K z&KW@eQa;$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 267, "stream_ordering": 1217}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho"], "prev_events": ["$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE"], "type": "m.room.member", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-247:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-247", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-247:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041500849, "hashes": {"sha256": "dfaJncwNpozm8pjNshu2tAXfFHu8I0eiIqah3k9nM3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eH8TjkRr+VCO70eenD/gre+GmiENIhnxCaTNJFDc6kt/1o3dEoY5sH481OmAmNu5JqAsvWHfJdyn1cFsO9KvBQ"}}, "unsigned": {"age_ts": 1570041500849}}?eQq$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "txn_id": "126", "stream_ordering": 1216}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ"], "type": "m.room.message", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041499531, "hashes": {"sha256": "eholfpYsBp+MCltKXuwWLbtrUMe96YesmQuFwdWOwhY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g5NixqyGrerbIrxQp6wzxG0N4ZhYZWxOSrV3+GU7zEWIFa/SDWGneZcE8FFUWgAkkvnGP/BADHsl1URemvgUDg"}}, "unsigned": {"age_ts": 1570041499531}}H>eQa$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "stream_ordering": 1215}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw"], "type": "m.room.history_visibility", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041497822, "hashes": {"sha256": "Tvb7aidFAbvDappfDDnAkJcemXVbFufP/wRrCjNdwPg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q6AowOC1U+39LInKGih+/R4BwZTTiQiNhZBGLrt26e/SRJyxD94YjJ5b7CxpsiFv2kZB7mXZ0FEQTlQc05xCAA"}}, "unsigned": {"age_ts": 1570041497822, "replaces_state": "$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs"}}=eQm$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "txn_id": "125", "stream_ordering": 1214}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs"], "type": "m.room.message", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041496126, "hashes": {"sha256": "Fdre97WmhdD3VBdrFSQuMJyo2IyKuXoxbu3vU6h725o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/nRYPCouw1qXzdhryyFzwIhM8hNQAa9ACfWgMk/S7eyVDOiJFkhJFHDNMIh1IqLeSobvTp6Ui/CYYa1OPlOoBw"}}, "unsigned": {"age_ts": 1570041496126}} a} { y w u sqomkigeca~eeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800~ eeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~ eeQ$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~ eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800~ eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~ eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~~eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~}eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800~|eeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800~{eeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~zeeQ$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800~yeeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:8800~xeeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800~weeQ$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU!EMhFCPhwmnWVnjtXXM:localhost:8800~veeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800~ueeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800  v kDeQac$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1221}{"auth_events": ["$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "type": "m.room.power_levels", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"users": {"@anon-20191002_181700-248:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041509509, "hashes": {"sha256": "IBgXhtAJpkzkVs6k9I5796rNE5b5bC2iuy1BDKehu9c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IwendqPbX/vJHrD7v/jZi8csE/qxDbj58IO/2J26Hge301A9m+/W6UM6lUcviSUgz2JOD+iU7+LZ4O8wfq0NAQ"}}, "unsigned": {"age_ts": 1570041509509}}vCeQay$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1220}{"auth_events": ["$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA"], "prev_events": ["$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA"], "type": "m.room.member", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-248", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-248:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041507886, "hashes": {"sha256": "6dtJLWacoq4Kax69DP3n+J8rgLyi9Xv8cKG+jIKwqLU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k8wwvsKYi2Jq1bP+1CGcQ4EyiYkSRGj9fEgNyYSvzWnvR217VIFsoi+M0JEmTeFzU7g/v++5jzGQ6x7w5pPECg"}}, "unsigned": {"age_ts": 1570041507886}}iBeQa_$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1219}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-248:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041505852, "hashes": {"sha256": "8LtD8qRH6QL5AoaNzRHBiuagtXhAu22AJMnb2VUlSBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mmf5tKkG0W2Zp7ZTnnr9v5RcU/Gt31worY2pfxgna3EhsdOUV+PmIQa2hVvLr79qM5GDlj2LNdU/REsdqgu+BQ"}}, "unsigned": {"age_ts": 1570041505852}}AeQu$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800{"token_id": 268, "txn_id": "127", "stream_ordering": 1218}{"auth_events": ["$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU", "$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk", "$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4"], "prev_events": ["$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s"], "type": "m.room.message", "room_id": "!EMhFCPhwmnWVnjtXXM:localhost:8800", "sender": "@anon-20191002_181700-246:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041502688, "hashes": {"sha256": "ica4k44GZD7zlN2RMZ04DVbzxZ0PRhz9Jse+NkGyX2M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pBqv4dYXCQDRiyD/aRbk/60bDYCOd/ciaTwAmqCLlmNMt4fd98V4nCcytlO3ARlPPvuRc8uYSv3jYBV92F1hAQ"}}, "unsigned": {"age_ts": 1570041502688}} Wq_  jG* ` ! p S p 1  c @ sP3{^C nQ6kTt]E. 6  z c $   qT9 {`=   >']m.room.member@anon-20191002_181700-263:localhost:8800>']Om.room.member@anon-20191002_181700-242:localhost:8800S>']m.room.member@anon-20191002_181700-259:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-258:localhost:8800>']m.room.member@anon-20191002_181700-258:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-257:localhost:8800' m.room.create%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-254:localhost:8800' ~m.room.create>']}m.room.member@anon-20191002_181700-253:localhost:8800"? |m.room.history_visibility"? {m.room.history_visibility"? zm.room.history_visibility~"? ym.room.history_visibility}/ xm.room.join_rules|3 wm.room.power_levels{>']vm.room.member@anon-20191002_181700-252:localhost:8800z' um.room.createy>']tm.room.member@anon-20191002_181700-251:localhost:8800x3 sm.room.guest_accessw"? rm.room.history_visibilityv/ qm.room.join_rulesu3 pm.room.power_levelst>']om.room.member@anon-20191002_181700-250:localhost:8800s' nm.room.creater>']mm.room.member@anon-20191002_181700-249:localhost:8800q"? lm.room.history_visibilityp3 km.room.guest_accesso"? jm.room.history_visibilityn/ im.room.join_rulesm3 hm.room.power_levelsl>']gm.room.member@anon-20191002_181700-248:localhost:8800k' fm.room.createj>']em.room.member@anon-20191002_181700-247:localhost:8800i"? dm.room.history_visibilityh3 cm.room.guest_accessg"? bm.room.history_visibilityf/ am.room.join_rulese3 `m.room.power_levelsd>']_m.room.member@anon-20191002_181700-246:localhost:8800c' ^m.room.createb>']]m.room.member@anon-20191002_181700-245:localhost:8800a"? \m.room.history_visibility` ' Hm.room.createL' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-261:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-260:localhost:8800>']m.room.member@anon-20191002_181700-260:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels3 [m.room.guest_access_"? Zm.room.history_visibility^/ Ym.room.join_rules]3 Xm.room.power_levels\>']Wm.room.member@anon-20191002_181700-244:localhost:8800[' Vm.room.createZ>']Um.room.member@anon-20191002_181700-243:localhost:8800Y"? Tm.room.history_visibilityX3 Sm.room.guest_accessW"? Rm.room.history_visibilityV/ Qm.room.join_rulesU3 Pm.room.power_levelsT' Nm.room.createR3 Mm.room.guest_accessQ"? Lm.room.history_visibilityP/ Km.room.join_rulesO3 Jm.room.power_levelsN>']Im.room.member@anon-20191002_181700-240:localhost:8800M>']Gm.room.member@anon-20191002_181700-239:localhost:8800K>']Fm.room.member@anon-20191002_181700-239:localhost:8800J"? Fm.room.history_visibilityI>']m.room.member@anon-20191002_181700-262:localhost:8800>']m.room.member@anon-20191002_181700-262:localhost:8800 8l D `8]c!E@anon-20191002_181700-260:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgoPEYMVGORHU127.0.0.1Perl + Net::Async::HTTP/0.44mq]c!E@anon-20191002_181700-259:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQoCBTLKTDDZA127.0.0.1Perl + Net::Async::HTTP/0.44ma]c!E@anon-20191002_181700-258:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQoZRYHQQPEDT127.0.0.1Perl + Net::Async::HTTP/0.44mE]c!E@anon-20191002_181700-257:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgoAZPFFCLWTK127.0.0.1Perl + Net::Async::HTTP/0.44m/]c!E@anon-20191002_181700-254:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgoXJEYVFLUEX127.0.0.1Perl + Net::Async::HTTP/0.44mӃ]c!E@anon-20191002_181700-253:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8goVCNUHOFNKS127.0.0.1Perl + Net::Async::HTTP/0.44m<~]c!E@anon-20191002_181700-252:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13ZgoRURXOUWORG127.0.0.1Perl + Net::Async::HTTP/0.44m0}]c!E@anon-20191002_181700-251:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw9bHYuaGpyRlF5OnlCaHgKMDAyZnNpZ25hdHVyZSB6XH_KDDeiz2vUoiymT4LaOZYv35iWPxJWF2am6hN7awoPMDEYZFDXJ127.0.0.1Perl + Net::Async::HTTP/0.44m{߃|]c!E@anon-20191002_181700-250:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJkYTUzRUJ0SmdRI1hVNF8KMDAyZnNpZ25hdHVyZSDStgyG0am63rN-bO2v7CK7F1LgOnjE36x_pYNbORauDgoHLUDALFTVR127.0.0.1Perl + Net::Async::HTTP/0.44m{${]c!E@anon-20191002_181700-249:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBXTXRuVWMqWExLLXRyUVUKMDAyZnNpZ25hdHVyZSB3CEhzhWaewwq0xxvCAtoP_SXASnfhsu5ngJ2PA9nu0QoTCARNJMFBO127.0.0.1Perl + Net::Async::HTTP/0.44m(8 DV T Z  o!yz1FD,\e?Q ]$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0m.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800mلm@anon-20191002_181700-252:localhost:8800$[e/Q ]$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8m.room.join_rules!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800&Ze3Q ]$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewm.room.power_levels!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800 Ye'Q ]$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8m.room.member!ZaOktTIVeRgBXxfubH:localhost:8800mmi@anon-20191002_181700-252:localhost:8800X e'Q  ]$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gm.room.create!ZaOktTIVeRgBXxfubH:localhost:8800m?m@anon-20191002_181700-252:localhost:8800!We)Q ] $zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAm.room.message!ZaltdIYVZjCHsCWTZD:localhost:8800 mķmķ@anon-20191002_181700-250:localhost:8800 Ve'Q ] $A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wm.room.member!ZaltdIYVZjCHsCWTZD:localhost:8800 mįEmİY@anon-20191002_181700-251:localhost:8800!Ue)Q ]$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsm.room.message!ZaltdIYVZjCHsCWTZD:localhost:8800mĪmĪ@anon-20191002_181700-250:localhost:8800!Te)Q ]$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4m.room.message!ZaltdIYVZjCHsCWTZD:localhost:8800mĤzmĤ~@anon-20191002_181700-250:localhost:8800&Se3Q ]$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4m.room.guest_access!ZaltdIYVZjCHsCWTZD:localhost:8800mĝmĞ@anon-20191002_181700-250:localhost:8800,Re?Q ]$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_Am.room.history_visibility!ZaltdIYVZjCHsCWTZD:localhost:8800mĕYmĘ@anon-20191002_181700-250:localhost:8800$Qe/Q ]$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkm.room.join_rules!ZaltdIYVZjCHsCWTZD:localhost:8800mĐmđ@anon-20191002_181700-250:localhost:8800&Pe3Q ]$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCom.room.power_levels!ZaltdIYVZjCHsCWTZD:localhost:8800mĉmČ@anon-20191002_181700-250:localhost:8800 Oe'Q ]$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwm.room.member!ZaltdIYVZjCHsCWTZD:localhost:8800mămĄ@anon-20191002_181700-250:localhost:8800N e'Q  ]$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6Em.room.create!ZaltdIYVZjCHsCWTZD:localhost:8800m{m}@anon-20191002_181700-250:localhost:8800!Me)Q ] $WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIm.room.message!kwXxkGQFkaeenFTQJr:localhost:8800 mnmn@anon-20191002_181700-248:localhost:8800 Le'Q ] $Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8m.room.member!kwXxkGQFkaeenFTQJr:localhost:8800 memg@anon-20191002_181700-249:localhost:8800!Ke)Q ] $Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTom.room.message!kwXxkGQFkaeenFTQJr:localhost:8800 m`ma@anon-20191002_181700-248:localhost:8800,Je?Q ]$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAm.room.history_visibility!kwXxkGQFkaeenFTQJr:localhost:8800mZm[@anon-20191002_181700-248:localhost:8800!Ie)Q ]$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyEm.room.message!kwXxkGQFkaeenFTQJr:localhost:8800mSGmSL@anon-20191002_181700-248:localhost:8800&He3Q ]$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcm.room.guest_access!kwXxkGQFkaeenFTQJr:localhost:8800mNsmO1@anon-20191002_181700-248:localhost:8800,Ge?Q ]$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucm.room.history_visibility!kwXxkGQFkaeenFTQJr:localhost:8800mDGmH @anon-20191002_181700-248:localhost:8800$Fe/Q ]$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Em.room.join_rules!kwXxkGQFkaeenFTQJr:localhost:8800m>m@@anon-20191002_181700-248:localhost:8800&Ee3Q ]$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYm.room.power_levels!kwXxkGQFkaeenFTQJr:localhost:8800m6m:@anon-20191002_181700-248:localhost:8800  HeQm$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "txn_id": "128", "stream_ordering": 1225}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc"], "type": "m.room.message", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"msgtype": "m.text", "body": "shared"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041516871, "hashes": {"sha256": "CZP+VKwKDU6kwgVkrx68rns9xmXEpRooDJFv3iL9PII"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3lesipYX2vvA5lHXQ2v37J1VwdiQcX1S9LM7FQhbwGj1u82zJO4zi4BnbPKMDZuqvsSuYKM9YXN/F+NArU8jBw"}}, "unsigned": {"age_ts": 1570041516871}}{GeQa$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1224}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc"], "type": "m.room.guest_access", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041515635, "hashes": {"sha256": "3OV3jJfrLmbB2lwC/fRJS5Dxg+mVP/G1e54CIvf/Q64"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y6VmTgT04bYt3Og2D97SZ5yvcLjmoWGfWGa24GJMBRXTg6rxYTSm9CgzWJPP2f4MLZnTprm7WjgcqInG9jIlCg"}}, "unsigned": {"age_ts": 1570041515635}}FeQa$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1223}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E"], "type": "m.room.history_visibility", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041513031, "hashes": {"sha256": "yuOCzpIGO8hcORTNteiSWclyecKxEqVx3jpK/QVPbxk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e7YkYcpQiP40MgjMHkoJMypYtZJLPNNE3DTTH/KbBHyIhxSsf34gxKWOTuqYqFBYdIX/RNlsmxhW6w1V2MzPBQ"}}, "unsigned": {"age_ts": 1570041513031}}tEeQau$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1222}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY"], "type": "m.room.join_rules", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041511576, "hashes": {"sha256": "TpktC2IhLw4cWfh1ombcmzoCyb2pB92w+XjysT3E/YI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pm2EG6l5ChHzTcmHyiM+m7fhTSVJOhxFifs+sBwq4NoqyjqKySn3zxL4IFV6Z5gH0o3hucEh7NUmNaEB8HboAw"}}, "unsigned": {"age_ts": 1570041511576}} -RM H C > 9 4/*|%w rmhc TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7ITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUTQe!kpTPWDZdBbbXKLonZK:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4TQe!kpTPWDZdBbbXKLonZK:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVITQe!kpTPWDZdBbbXKLonZK:localhost:8800$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfoTQe!kpTPWDZdBbbXKLonZK:localhost:8800$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HITQe!kpTPWDZdBbbXKLonZK:localhost:8800$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuET Qe!kpTPWDZdBbbXKLonZK:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0T Qe!kpTPWDZdBbbXKLonZK:localhost:8800$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMT Qe!ITdmSQpjMnaPoHIbws:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwT Qe!ITdmSQpjMnaPoHIbws:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMT Qe!ITdmSQpjMnaPoHIbws:localhost:8800$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGATQe!ITdmSQpjMnaPoHIbws:localhost:8800$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRETQe!ITdmSQpjMnaPoHIbws:localhost:8800$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVATQe!ITdmSQpjMnaPoHIbws:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sTQe!ITdmSQpjMnaPoHIbws:localhost:8800$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8TQe!FAYqpziHeVZugCGaij:localhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAITQe!FAYqpziHeVZugCGaij:localhost:8800$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcTQe!FAYqpziHeVZugCGaij:localhost:8800$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpITQe!FAYqpziHeVZugCGaij:localhost:8800$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwTQe!FAYqpziHeVZugCGaij:localhost:8800$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgTQe!FAYqpziHeVZugCGaij:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMT~Qe~!FAYqpziHeVZugCGaij:localhost:8800$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMoT}Qe}!ZaOktTIVeRgBXxfubH:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QET|Qe|!ZaOktTIVeRgBXxfubH:localhost:8800$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MT{Qe{!ZaOktTIVeRgBXxfubH:localhost:8800$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwATzQez!ZaOktTIVeRgBXxfubH:localhost:8800$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08TyQey!ZaOktTIVeRgBXxfubH:localhost:8800$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0TxQex!ZaOktTIVeRgBXxfubH:localhost:8800$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8TwQew!ZaOktTIVeRgBXxfubH:localhost:8800$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewTvQev!ZaOktTIVeRgBXxfubH:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8TuQeu!ZaOktTIVeRgBXxfubH:localhost:8800$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gTtQet!ZaltdIYVZjCHsCWTZD:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wTsQes!ZaltdIYVZjCHsCWTZD:localhost:8800$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4TrQer!ZaltdIYVZjCHsCWTZD:localhost:8800$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_ATqQeq!ZaltdIYVZjCHsCWTZD:localhost:8800$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkTpQep!ZaltdIYVZjCHsCWTZD:localhost:8800$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoToQeo!ZaltdIYVZjCHsCWTZD:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwTnQen!ZaltdIYVZjCHsCWTZD:localhost:8800$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6ETmQem!kwXxkGQFkaeenFTQJr:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8TlQel!kwXxkGQFkaeenFTQJr:localhost:8800$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhATkQek!kwXxkGQFkaeenFTQJr:localhost:8800$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcTjQej!kwXxkGQFkaeenFTQJr:localhost:8800$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc H 5HLeQu$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "txn_id": "130", "stream_ordering": 1229}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8"], "type": "m.room.message", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041523894, "hashes": {"sha256": "uUyPqmG8fr8BS9Fxx5i0o+2fFltraZNp4YOkMR36WsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3gkftkSh+fhhJyc9PrPmiCirdReAeiNRcieFIGX8A4sokCXOGmhYZPb5qKVl3uY1uRNuC2R/EeEpkzP9M+HhDw"}}, "unsigned": {"age_ts": 1570041523894}}WKeQa;$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 270, "stream_ordering": 1228}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E"], "prev_events": ["$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo"], "type": "m.room.member", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-249:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-249", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-249:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041521601, "hashes": {"sha256": "3UiJSpDjzOve87NC83Fe3TS+gUtNGHhiT3BO7s+Lgpg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E18KRIXcMG71bsLrZVKk5mx9Pb6Cg4w9Oq1lTpBjzUYG2YeUsZHzPKRhpHYQ5o00j5jRW3yh0vJSUEbIxolhDg"}}, "unsigned": {"age_ts": 1570041521601}}JeQq$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "txn_id": "129", "stream_ordering": 1227}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA"], "type": "m.room.message", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"body": "pre_join", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041520345, "hashes": {"sha256": "04ANczYnJdKtMASv6ZM8qKdMMx44328Gnf4QUYdNXrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/sSpwW9OOqclbGXy8O5ULkYlzOe4YlOdUgZrsXjEdNe01F9rmBEFh3OmcoSlH7GgSoFS3r1PQ5XIV4+J3z5SAw"}}, "unsigned": {"age_ts": 1570041520345}}GIeQa$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800{"token_id": 269, "stream_ordering": 1226}{"auth_events": ["$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY", "$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA", "$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk"], "prev_events": ["$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE"], "type": "m.room.history_visibility", "room_id": "!kwXxkGQFkaeenFTQJr:localhost:8800", "sender": "@anon-20191002_181700-248:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041518791, "hashes": {"sha256": "jxk/cZhdj5dtZ/zjf50oMqeIxtIvPkBvwuLEAZwWs+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hd+zvHLnWxpu6iXkLsdNkGE2o1FaGyD3yIY9X7NY1m7gaJ5URFtPZxqJhqas+qTZjCB09+yCZZzLBYX8NMM9CA"}}, "unsigned": {"age_ts": 1570041518791, "replaces_state": "$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc"}} ~z v r n j fb^ZVRNJF[eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800ZeeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800YeeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800XeeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800WeeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800VeeQ$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800UeeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800TeeQ$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800SeeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800ReeQ$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800QeeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800PeeQ$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800OeeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800NeeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800MeeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800LeeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800KeeQ$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800JeeQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800IeeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800HeeQ$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800GeeQ$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800FeeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800EeeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800DeeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800CeeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800BeeQ$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800AeeQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800@eeQ$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800?eeQ$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA!kwXxkGQFkaeenFTQJr:localhost:8800>eeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800 %u'Q   N  @ `-Kl!O)Qul2eQ'!$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800content.topicTest Topicj1eQ%$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800content.nameTest Namei0eQ'$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800content.topictopic_1i/eQ'$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800content.topictopic_2g.eQ%$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800content.namename_2\-OQ'$157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800content.topictopicZ,OQ%$157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800content.namenamee+eQ%$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800content.namenameg*eQ'$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800content.topictopick)eQ%!$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800content.bodyHello backl(eQ%#$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800content.bodyHello worldk'eQ%!$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800content.bodyafter joinl&eQ%#$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800content.bodybefore joinm%eQ%%$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800content.bodyhello, worldm$eQ%%$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800content.bodyhello, worldo#eQ%)$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw!cGkVFpidyBBxUxsszG:localhost:8800content.bodyhello, world 3o"eQ%)$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:8800content.bodyhello, world 2o!eQ%)$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:8800content.bodyhello, world 1l eQ%#$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800content.bodyevent aftermeQ%%$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800content.bodyhello, worldmeQ%%$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800content.bodyevent beforemeQ%%$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800content.bodyhello, worldmeQ%%$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800content.bodyhello, worldfeQ%$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800content.bodybody1meQ%%$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800content.bodybefore leavedeQ%$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800content.bodysupdeQ%$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800content.bodysupdeQ%$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800content.bodysupdeQ%$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64!ITdmSQpjMnaPoHIbws:localhost:8800content.bodysupbeQ%$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800content.body3beQ%$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800content.body2beQ%$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800content.body1jeQ%$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800content.bodypost_joinieQ%$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800content.bodypre_joingeQ%$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800content.bodysharedjeQ%$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800content.bodypost_joinieQ%$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo!kwXxkGQFkaeenFTQJr:localhost:8800content.bodypre_join  g 4h 5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdqVDFKT29rWEZRNCpROTcKMDAyZnNpZ25hdHVyZSC7lrKg9ImbTr8CkrYFvEEaWOzFNKfny6Qb31PEyfA4qgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVjBCO0NjMSswVWZoLHAKMDAyZnNpZ25hdHVyZSDv6IXplpGvW3jlO-0FOtxQ-E9qECaMgAeY8CAFUiL5ogo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBIdFo6SE85UUI3c2tXT1AKMDAyZnNpZ25hdHVyZSAFrwK26z26wZ38qQfYMIVB0i1v_8Hz2xQeFaaLRU2Vwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6Kkl4PTlUVU5KR3FheHoKMDAyZnNpZ25hdHVyZSBEN8WLrmQ2ofBQpLcVp4rDef2c2cjqk-3Tk2HecBbGhQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxFSCtCXjNzWFlZI2xeX1oKMDAyZnNpZ25hdHVyZSDPXAcW6JNqPJs4riWA-zStsg-aiwS5kychQygDCDgfBQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBESiZaMFpHcjBoMG9kaHYKMDAyZnNpZ25hdHVyZSB3cWspWGVRCZ23VJaGDJZEBWFBnLLtl-E0M7Fd3yI2Jgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVmeFMyeTlFdTAmcXdhLEAKMDAyZnNpZ25hdHVyZSAIHU-v60P7pi1FdbOEzdxbszKriuPshWipgFf-j3oEbQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0wRXVIdkQyT1RQcUZlMV8KMDAyZnNpZ25hdHVyZSCLKe7rBRRX4aJO_x_3H4GczclWYX5FRJw6F5fXglIgTAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBSMlBnb0dJWUY0UWRGcHcKMDAyZnNpZ25hdHVyZSA5TlH1MPC9AiHHA_RZQuGZo5OFkBI5DfuqzVVW_KuJoQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdHci43UW5SQF5CQEd4U1MKMDAyZnNpZ25hdHVyZSDpw2G5Yx2gvOJSbmwv08VdYUxuigJtfQ4pOnDbSLCHBQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHU6ck1wSz1tVWVTMkVtVzgKMDAyZnNpZ25hdHVyZSDrXYqnfYXyORP9VnmM0xCb799bIeWZ0dEYe7F9SxtHtgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwo   *tPeQau$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1233}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo"], "type": "m.room.join_rules", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041532420, "hashes": {"sha256": "YZiNXx6vQviqZSJiZ8WYjYQMNyvu4DRueJpO+k6GouM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/EJe+UAjvCGtEoPDKrZCGwFJ2HluiQGffxVZMv7Cq1PR9TQ59Zk/KtbKjK5JJd2koc5pwzkCG7eUjt4u0ztxCw"}}, "unsigned": {"age_ts": 1570041532420}}kOeQac$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1232}{"auth_events": ["$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "type": "m.room.power_levels", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"users": {"@anon-20191002_181700-250:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041530626, "hashes": {"sha256": "sUmXckDC5wEEVR7/g8b4sSqQO+gpXRC53RBph/S1mFU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vpEOCGNY/WfodvcHNGx+N719OPKbLE4nRZCQhP3iXpGuW3dLiaqCH43f7soOlQyRQFzX+bVOagKIoiTh77WYAQ"}}, "unsigned": {"age_ts": 1570041530626}}vNeQay$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1231}{"auth_events": ["$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E"], "prev_events": ["$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E"], "type": "m.room.member", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-250", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-250:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041529321, "hashes": {"sha256": "lNIsz7DIo3TxrNWTUmPAx3K9WudL7xTxK6YoO0IgHZg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5/bfIdsRKVAD49dX1QA2ljGXf5aN78OxpJKYX7TbYQ5KKmYocymLwTD53JezZQii4qnPBmUkyP3byTpucWnSBg"}}, "unsigned": {"age_ts": 1570041529321}}iMeQa_$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1230}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-250:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041527265, "hashes": {"sha256": "ZYUOctibAjONBBQgxnPDj2YiJpptz5TJgASipgJ/QPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nh7mfMNQ81HFV5pTjF2W4QZqIJrQF6+N/InVpYcuFJ8RgVdlZF20gl1znds/cGHw7mXnwpsNq2Ri1G+JBT7aBw"}}, "unsigned": {"age_ts": 1570041527265}}  4 k 9mfd]c@anon-20191002_181700-266:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBSMlBnb0dJWUY0UWRGcHcKMDAyZnNpZ25hdHVyZSA5TlH1MPC9AiHHA_RZQuGZo5OFkBI5DfuqzVVW_KuJoQo127.0.0.1 d]c@anon-20191002_181700-274:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6Kkl4PTlUVU5KR3FheHoKMDAyZnNpZ25hdHVyZSBEN8WLrmQ2ofBQpLcVp4rDef2c2cjqk-3Tk2HecBbGhQo127.0.0.1d]c@anon-20191002_181700-273:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0wRXVIdkQyT1RQcUZlMV8KMDAyZnNpZ25hdHVyZSCLKe7rBRRX4aJO_x_3H4GczclWYX5FRJw6F5fXglIgTAo127.0.0.1d]c@anon-20191002_181700-272:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVjBCO0NjMSswVWZoLHAKMDAyZnNpZ25hdHVyZSDv6IXplpGvW3jlO-0FOtxQ-E9qECaMgAeY8CAFUiL5ogo127.0.0.1d]c@anon-20191002_181700-271:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBESiZaMFpHcjBoMG9kaHYKMDAyZnNpZ25hdHVyZSB3cWspWGVRCZ23VJaGDJZEBWFBnLLtl-E0M7Fd3yI2Jgo127.0.0.1d]c@anon-20191002_181700-270:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxFSCtCXjNzWFlZI2xeX1oKMDAyZnNpZ25hdHVyZSDPXAcW6JNqPJs4riWA-zStsg-aiwS5kychQygDCDgfBQo127.0.0.1a[a@anon-20191002_181700-26:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUU15I2txOjVTVWpKTnhFTQowMDJmc2lnbmF0dXJlIC5kE664vh5U1219PlFin_HIBRBDIIz3_349ZmDAi-p-Cg127.0.0.1d]c@anon-20191002_181700-269:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBIdFo6SE85UUI3c2tXT1AKMDAyZnNpZ25hdHVyZSAFrwK26z26wZ38qQfYMIVB0i1v_8Hz2xQeFaaLRU2Vwwo127.0.0.1 d]c@anon-20191002_181700-268:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVmeFMyeTlFdTAmcXdhLEAKMDAyZnNpZ25hdHVyZSAIHU-v60P7pi1FdbOEzdxbszKriuPshWipgFf-j3oEbQo127.0.0.1 d]c@anon-20191002_181700-267:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEw9MV4wSUhjLnlNOWdVKk0KMDAyZnNpZ25hdHVyZSC0r7JuAI_YJyIGJfxb0zRZBRfiDT-Bp42jtVHYGfMVnAo127.0.0.1  wrTeQq$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "txn_id": "132", "stream_ordering": 1237}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4"], "type": "m.room.message", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"msgtype": "m.text", "body": "pre_join"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041539307, "hashes": {"sha256": "z5QnkkysdbAThZE6Gb36TxbNbEqxpsI+lKRm/c+owes"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pxIo1uy0no2VpH8k8F1Fnf5F1N1sSq38drP4yMjvduRSOXgLbHCj5DEuKtRRIRbFkOzWqVMSzZvg+p2WqqsGAw"}}, "unsigned": {"age_ts": 1570041539307}}SeQm$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "txn_id": "131", "stream_ordering": 1236}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4"], "type": "m.room.message", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"body": "shared", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041537658, "hashes": {"sha256": "0QkBXlXIsyFx7byjubIzcwdkQ4vBl9yYLGP7otV9+JA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UfFeDTc1mEd2kuX+8J3q5pc5oYqKvvbI8fqDgSxY5zKTI039i796aUGpLL+J9VAui8XSjADiH916At+M8bxFBA"}}, "unsigned": {"age_ts": 1570041537658}}{ReQa$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1235}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A"], "type": "m.room.guest_access", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041535933, "hashes": {"sha256": "0mwSvDf7ROn9Vjf+MF2xe1uWWBvb3FDa4JwJ4LCdSk0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEuPQp2/Syycb+NPamdVwkRUc6NcE3uEMpE3QT1Ki5khpPGiVhNJiIf3cJxu89nDLMM92RyDRq3ffGDaZlP6CQ"}}, "unsigned": {"age_ts": 1570041535933}}QeQa$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "stream_ordering": 1234}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk"], "type": "m.room.history_visibility", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041533785, "hashes": {"sha256": "xujwZ3MRDfA2JZ0TPvwMElbGdhZxxCWbHDlWCYpeWoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C8mi3/YpYLKKQR5kUFLKRsGFA1xtGxGRABmn+vm0TdVxZxwyqvNTu6++/kCjagkrQu/LwMZnbwv5DqAFkphUDQ"}}, "unsigned": {"age_ts": 1570041533785}} a} { y w u sqomkigeca~2eeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~1eeQ$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~0eeQ$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~/eeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800~.eeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~-eeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~,eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~+eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~*eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~)eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~(eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~'eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~&eeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~%eeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~$eeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~#eeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~"eeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~!eeQ$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~ eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800~eeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800~eeQ$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800 N h V6Z #(n = > uC $  { vI | D U  O  \ *b0 P  J pj91e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY z1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc 1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYH 1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc L1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE K1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0i1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk;1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYB1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcx1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0{1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcs1e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkS1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQH1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA e1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg |1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0Q1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0'1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY 1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w"1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIp1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIK1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsq1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI+1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA (1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624"1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMh1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQJ1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgD1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 R1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c/1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o%0e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA51e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0/1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M 1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94 5 &5vXeQay$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1241}{"auth_events": ["$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g"], "prev_events": ["$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g"], "type": "m.room.member", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-252", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-252:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041546982, "hashes": {"sha256": "uGI0LOzN3DpRtZJbOpT5rLOxbDbk/9WpRDY90qjybyY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9jtNFTf2HgYjr14cQoCjLuSkBmfQ3lz10U/CoC90U1VbTQbcBLXAOLFc2VaNLxxo2bowGdYtlQST6mstw1lBAw"}}, "unsigned": {"age_ts": 1570041546982}}iWeQa_$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1240}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-252:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041545535, "hashes": {"sha256": "qsN6cGyVvBXpGK37f3BVr62+QOJ1unz+5LmsrCOrJ58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tz97upnkq+oDwbciGtKOuGkISk9G6H2xvnprYfjRqCKXQj+a2Jh3azdiHsf++f9hrQF0PapsJOHXSQSSPofBAQ"}}, "unsigned": {"age_ts": 1570041545535}}VeQu$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 271, "txn_id": "133", "stream_ordering": 1239}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw"], "prev_events": ["$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w"], "type": "m.room.message", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-250:localhost:8800", "content": {"body": "post_join", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041542555, "hashes": {"sha256": "iDWEd/IOrs1dvw3Yl96X3MjoxWk6ATUsxr/fPTC9sQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q9xcF8hz/MzA1BIWXlu91JoDAt5rWF8c3OOOFOJAvhcZx0S5UmQf9TRL8Qg4mDbWj5RVEWoUK2fLNHP12jJgAA"}}, "unsigned": {"age_ts": 1570041542555}}VUeQa9$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800{"token_id": 272, "stream_ordering": 1238}{"auth_events": ["$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo", "$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E", "$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk"], "prev_events": ["$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs"], "type": "m.room.member", "room_id": "!ZaltdIYVZjCHsCWTZD:localhost:8800", "sender": "@anon-20191002_181700-251:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-251", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-251:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041540421, "hashes": {"sha256": "jzd0RXvpdMGRsGWSxe/wnw+z3r65Lj6Xt14mHUF3N9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y0LMO7tHR9/B8x6FwMevCki049gbIo1BnQTxZcL78biJDBZShBhXFyj2bP+HALUeDLwh4wCh3Pb1IgJP+4vFDQ"}}, "unsigned": {"age_ts": 1570041540421}} ,NC 8 - { " p  e ZOD9.|#qf VeL$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAosha256#5F^c׊YڙlCY@{\ VeL$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pksha256 E!Mt#n[n X.V~eL$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10sha256}F03R 4_N[6Lr};]V}eL$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIsha256[fHxO䕍ҝB9bV|eL$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0sha256jFk8;ryǑ|iCE V{eL$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Isha256zw x`r-J=h CsmHVzeL$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUsha256vB86$gL>#UVyeL$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4sha256t<"҄_p<85beVxeL$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQsha256gI*JN3lc9b!p>$VweL$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIsha256D؊];0hC5A?v!Z6؝eRVveL$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfosha2569c8SNcFjF|m]q VueL$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIsha256<Hr Q$&^qPrVteL$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEsha256Vc@v:duu^C9KIz҂<(FVseL$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0sha256 e?͏ZqTo&$z0VreL$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMsha25679DneSuƽD2o3VqeL$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwsha256fx!lLFlsmdH$lVpeL$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64sha256uQ8DEڍ\'[F4jcVoeL$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMsha25608#3>{WV^ !C7VYSVneL$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAsha256uKC&:9):>ᒡ`VmeL$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREsha256qJ(Sܼ3! GzS.{"BUUVleL$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAsha256K#9> ܺV{Y͔yp!PVkeL$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6ssha256f:#t,' e%|6**` 20.{VjeL$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8sha256Y$@߻悎뽂VieL$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIsha256x{7%2qMEj< 3T[VVheL$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcsha256(.eo NH@gt :)0m$gVgeL$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIsha256& &Êt5@Ct[YDbVfeL$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwsha256!F >U&LaŨ󋮇VR VeeL$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgsha256&wlvv<`pS?q2]\ ,F8VdeL$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMsha256`fAǴJ-bYڨ HZ?%sVceL$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMosha256"mo|6&ߡ cvKl=8:/ڒe9΀\ PN-fS ! & K o  /.9>bDOyxcQ' e!XNfwczePlyYFWLCaui:localhost:8800m.room.create$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8 Q']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA Q']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkoQ? e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibility$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10gQ/ e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rules$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIiQ3 e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 Q']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7IcQ' e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIoQ? e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibility$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfogQ/ e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rules$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIiQ3 e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0cQ' e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.create$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM Q']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw Q']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMo Q? e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibility$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAg Q/ e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rules$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREi Q3 e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA Q']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sc Q' e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.create$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8rQ))e!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIoQ? e!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibility$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcgQ/ e!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rules$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIlQ9 e!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_alias$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwiQ3 e!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg Q']e!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMcQ' e~!FAYqpziHeVZugCGaij:localhost:8800m.room.create$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo Q']e}!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEoQ? e|!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MoQ? e{!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAo~Q? ez!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibility$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08  e ] | U ME= 6.&t meeQ$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800 (eeQ$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800 IeeQ$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800 ]eeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800 eeQ$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE!MWCLSWWGdWcSivNVLI:localhost:8800;eeQ$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800SeeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800+eeQ$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw!FPcQcheNebvdFvmOnr:localhost:8800eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800ReeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs!GwXGurbyEmykmmHcHJ:localhost:8800܁eeQ$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ!awHAhLuEkavTGACcUW:localhost:8800_eeQ$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk!YufaOfAlruTdjyUCwO:localhost:8800eeQ$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800сeeQ$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY!TcaopYfMoJFEcjYRzJ:localhost:8800peeQ$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE!HmkcAMkMjWRhTDJMsy:localhost:88006eeQ$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ!HIZTeBCxvpMSpcqGVD:localhost:8800aeeQ$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8!EABRjdYuYumMhLSwIa:localhost:8800eeQ$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800 $eeQ$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI!jYzridjeihmwPBuwLb:localhost:8800IeeQ$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg!vRRNxNyGboLHNhqQvr:localhost:8800؁eeQ$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ!hSzBsirdPWHtVjagXn:localhost:8800*eeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800 ' g * T~=gg]!c@anon-20191002_181700-263:localhost:8800KUHOBSXQVMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswog]!c@anon-20191002_181700-262:localhost:8800OLJVXJZUXGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAog]!c@anon-20191002_181700-261:localhost:8800HLJRYNNHWEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwog]!c@anon-20191002_181700-260:localhost:8800PEYMVGORHUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqUW5JdVNJaUNSRzFFajEKMDAyZnNpZ25hdHVyZSDHbtfHKxn0rVhtueeJ2fquSuwj470djNkGyuU-OHTeTgog]!c@anon-20191002_181700-259:localhost:8800CBTLKTDDZAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFDXkktc3RJcTl-PTtiV1QKMDAyZnNpZ25hdHVyZSDerzLKHXCMs4rFhn40Mgn2hE7oTo2kHClmiEGweHaSeQog ]!c@anon-20191002_181700-258:localhost:8800ZRYHQQPEDTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5HTmRLZlEjMGRGLmYyU3AKMDAyZnNpZ25hdHVyZSAD093-qZQsQxmp59dQyRdRxoIqQxE_rNzs47dNtOBWqQog ]!c@anon-20191002_181700-257:localhost:8800AZPFFCLWTKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLdzpBeHdfT2s6KmEsNGsKMDAyZnNpZ25hdHVyZSD-wVicH78WQx3mzv9F_TzVVghAR9rjEahf7DWaJcH0jgog ]!c@anon-20191002_181700-255:localhost:8800QPFIMVOQLFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZVcXBRRmdlRi5Ld0dsdn4KMDAyZnNpZ25hdHVyZSC7-jUKU9NYTOVklufnDf5gGiyL1nsbucv8MyAzrMBrjwog ]!c@anon-20191002_181700-254:localhost:8800XJEYVFLUEXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMwSU1vcjpkQkoqNDdpM0UKMDAyZnNpZ25hdHVyZSDACcgeTxJDrgb0PXeDEGDN9X8Jiw3AlT3_KZ8p4n_EAgog ]!c@anon-20191002_181700-253:localhost:8800VCNUHOFNKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM7VGFVS3kjV2g1Km86Si4KMDAyZnNpZ25hdHVyZSC98VvY5MFBPxO_427tpkUtNk-hmrW9RZSioArm4XPz8gog]!c@anon-20191002_181700-252:localhost:8800RURXOUWORGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhmTGRMX15UUk1ZemJOLEgKMDAyZnNpZ25hdHVyZSD88f8XQm5E1Dtc3MOSxLkCxwbiZ61zTIIZ5Oc4-C13Zgo f 2fH`eQa$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1249}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041557390, "hashes": {"sha256": "pMNh6Iww9OUO3tKm5ArycpJ9JPUPM/s62XlOg9PP3Sk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vwYabUSWv0SrVZIllwKtxt67RM8MOL6j4D6UptsfQhFe3OdmKo8OE3cHGutLhcOfH+fQXZGZgkvQIldPZUkkDw"}}, "unsigned": {"age_ts": 1570041557390, "replaces_state": "$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA"}}}_eQc$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "txn_id": "135", "stream_ordering": 1248}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA"], "type": "m.room.message", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"body": "2", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041556946, "hashes": {"sha256": "8nyP5e32ay/zZDRKECiOI6gX8TyDotbswiCRA5I5gms"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/jfojnOL+VUy0uOcT7tMLwMkqOOtmU7thu57X47qIresbdnst815LwwQsYfERpB4StmG1id3aXFQkSFLqWVNAA"}}, "unsigned": {"age_ts": 1570041556946}}H^eQa$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1247}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "invited"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041556070, "hashes": {"sha256": "l66FkjUNOuYHUMpRevVXHZkPSsOvpqehsMNXW1ZW0U8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vQ6tb5rc2CSnZ9bf83Ik6xmubUQe43kn1DfeVCDcJMrXkbLJSe1WJ1OZ7QdDxqNP5AxQ9t93oY6FjgUwiSg6BA"}}, "unsigned": {"age_ts": 1570041556070, "replaces_state": "$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08"}}}]eQc$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "txn_id": "134", "stream_ordering": 1246}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08"], "type": "m.room.message", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041555119, "hashes": {"sha256": "E61dRdJBhEMj8061dvN0g08zzvXILGxzpq69hhvbHmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wKJw5VVAzBdauN5HmT2XQEUBnKYgyRoQOg2Gf/HSWPHiDAN70LUF3BGxKYMrNShTRbeeJ41YzqFCttFcvM2HAg"}}, "unsigned": {"age_ts": 1570041555119}}  G\eQa$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1245}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041553602, "hashes": {"sha256": "+EvXWk4ptzLAUWTSD2lfNSFt6xOQMan7iGnBYTASUM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JOejWPzj13RVn04rZDRBZkEN8N6Gbymbu8sWrIkDlssgNgSwRT1IJEzQv7hoohC1VWAS1RnROJxprLu8NUY5BA"}}, "unsigned": {"age_ts": 1570041553602, "replaces_state": "$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0"}}[eQa$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1244}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8"], "type": "m.room.history_visibility", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041551236, "hashes": {"sha256": "PYaeHcE7r5XkILlOXx8ytQ1dxQDGt96QPS6fn/yM5b8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4qxalQ5lEjrby6KaMQI/v8qbn3F740RolV8s+KzeTyQuCujjmevvtuozUpFJjfSuGi6dcO21IPWEYM4E1IrQAA"}}, "unsigned": {"age_ts": 1570041551236}}tZeQau$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1243}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew"], "type": "m.room.join_rules", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041548992, "hashes": {"sha256": "BbnFAP1lShCGbu+Yx6nNBfDboHJk2E9ravUww1XoB5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EnfaKYrqKzuNex4EXZsApkQBTgQjIIsplKLK+uHoz5ke/hcWOPHUeBV2ardvnO+aIzIC2o4t3hQZ7cXks5X6BQ"}}, "unsigned": {"age_ts": 1570041548992}}kYeQac$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "stream_ordering": 1242}{"auth_events": ["$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "type": "m.room.power_levels", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"users": {"@anon-20191002_181700-252:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041547768, "hashes": {"sha256": "GSrbVKesAYvb5dALYACKStpk85Qev11Nx4Lcrv2hqrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "driZbheYbATgyEEbhjFya1Wl+h4ICU/J4iufPzGsDcv/96QS40i8Np5WASYW8Du/KqSU/+eMbYD+APFSj8PXDQ"}}, "unsigned": {"age_ts": 1570041547768}} %5-|t l d \ T = ME eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800 ^eeQ$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8!OaCEdDAiatpwYcagUb:localhost:8800eeQ$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0!oXKJArsPmtgaYANBrg:localhost:8800neeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800deeQ$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE!OqPpVlCwmKdAUlwrXI:localhost:8800XeeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY!HZqzpRgqekPOtxstVc:localhost:8800ǁeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800ʁeeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800ǁeeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800ȁeeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800 FeeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800eeQ$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U!CQKLQUpSYakhxVDltC:localhost:8800eeQ$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kk$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA!BDASLhdcKfNwxCTCSg:localhost:8800SeeQ$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4$-Xuad4lirsY-Ghxs246uHpYcRzh5Rvxik_tFSZV1zBk!JusxqeECtidaPlWqhp:localhost:8800KeeQ$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:88290eeQ$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0!EABRjdYuYumMhLSwIa:localhost:8800eeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800ځeeQ$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I!TcaopYfMoJFEcjYRzJ:localhost:8800oeeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!TWETXUgfFZafDdbqLS:localhost:8800eeQ$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8!NfaPEGKjnUDUTavzol:localhost:8800YeeQ$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw!FklhVuCInffbDxunWv:localhost:8800eeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800eeQ$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ!dnZVySJLGNtUKsSgXW:localhost:8800 C ! u J  s H qFoe:i>g<T)}R' { P % y N # w LFoDmBk@**Q!oZGRyBAkNDrEeiAqWL:localhost: *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800  *Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L L*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K K*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J J*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I I*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H H*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G G*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F F*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E E*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D D*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 C C*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800 J+WK8Dp8]Qp>  v D  | J% jv  } P   W % ]> +c2j+21e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q l1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc61e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI 1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIj1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg?1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwZ1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E"1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv811e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ c1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8t1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0C1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO421e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk31e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7ME1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMp1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mw1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUn1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIc1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cQ1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIX1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4C1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI?1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE30e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4G1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQO1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828#1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM!1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0(1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE`1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo :1e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE {21e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI ^1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q 1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw w HP V  ]  mh!}+{2H te'Q ]$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0m.room.member!kpTPWDZdBbbXKLonZK:localhost:8800mdme@anon-20191002_181700-259:localhost:8800s e'Q  ]$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMm.room.create!kpTPWDZdBbbXKLonZK:localhost:8800mambA@anon-20191002_181700-259:localhost:8800 re'Q ]$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwm.room.member!ITdmSQpjMnaPoHIbws:localhost:8800mTmUw@anon-20191002_181700-258:localhost:8800!qe)Q ]$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64m.room.message!ITdmSQpjMnaPoHIbws:localhost:8800mL mN@anon-20191002_181700-257:localhost:8800 pe'Q ]$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMm.room.member!ITdmSQpjMnaPoHIbws:localhost:8800mHmH@anon-20191002_181700-258:localhost:8800,oe?Q ]$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAm.room.history_visibility!ITdmSQpjMnaPoHIbws:localhost:8800m@mD<@anon-20191002_181700-257:localhost:8800$ne/Q ]$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREm.room.join_rules!ITdmSQpjMnaPoHIbws:localhost:8800m<m>p@anon-20191002_181700-257:localhost:8800&me3Q ]$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAm.room.power_levels!ITdmSQpjMnaPoHIbws:localhost:8800m6Cm9O@anon-20191002_181700-257:localhost:8800 le'Q ]$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sm.room.member!ITdmSQpjMnaPoHIbws:localhost:8800m3Gm3@anon-20191002_181700-257:localhost:8800k e'Q  ]$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8m.room.create!ITdmSQpjMnaPoHIbws:localhost:8800m/m0S@anon-20191002_181700-257:localhost:8800!je)Q ]$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIm.room.aliases!FAYqpziHeVZugCGaij:localhost:8800m'm)@anon-20191002_181700-254:localhost:8800,ie?Q ]$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcm.room.history_visibility!FAYqpziHeVZugCGaij:localhost:8800mmm!i@anon-20191002_181700-254:localhost:8800$he/Q ]$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIm.room.join_rules!FAYqpziHeVZugCGaij:localhost:8800mm@anon-20191002_181700-254:localhost:8800)ge9Q ]$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwm.room.canonical_alias!FAYqpziHeVZugCGaij:localhost:8800mmc@anon-20191002_181700-254:localhost:8800&fe3Q ]$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgm.room.power_levels!FAYqpziHeVZugCGaij:localhost:8800mm@anon-20191002_181700-254:localhost:8800 ee'Q ]$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMm.room.member!FAYqpziHeVZugCGaij:localhost:8800m cm @anon-20191002_181700-254:localhost:8800d e'Q  ]$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMom.room.create!FAYqpziHeVZugCGaij:localhost:8800mm@anon-20191002_181700-254:localhost:8800 ce'Q ] $eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEm.room.member!ZaOktTIVeRgBXxfubH:localhost:8800 mm@@anon-20191002_181700-253:localhost:8800!be)Q ] $OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIm.room.message!ZaOktTIVeRgBXxfubH:localhost:8800 mm@anon-20191002_181700-252:localhost:8800,ae?Q ] $sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5Mm.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800 mm@anon-20191002_181700-252:localhost:8800!`e)Q ] $L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGEm.room.message!ZaOktTIVeRgBXxfubH:localhost:8800 mm@anon-20191002_181700-252:localhost:8800,_e?Q ]$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAm.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800mfm @anon-20191002_181700-252:localhost:8800!^e)Q ]$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMm.room.message!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800,]e?Q ]$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08m.room.history_visibility!ZaOktTIVeRgBXxfubH:localhost:8800mm@anon-20191002_181700-252:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@x~w}v|u{tzsyrxqwpvountmslrkqjpiohngmflekdjcibhag`f_e^d]c\b[aZ`Y_X^W]V\U[TZSYRXQWPVOUNTMSLRKQJPIOHNGMFLEKDJCIBHAG@F?E>D=C<B;A:@9?8>7=6<5;4:39281706/5.4-3,2+1*0)/(.'-&,%+$*#)"(!' &%$#"!           ~}|{zy~}|{zy~x}w|v{uztysxrwqvpuotnsmrlqkpjoinhmglfkejdichbgaf`e_d^c]b\a[`Z_Y^X]W\V[UZTYSXRWQVPUOTNSMRLQKPJOINHM < ~<vdeQay$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1253}{"auth_events": ["$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo"], "prev_events": ["$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo"], "type": "m.room.member", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-254", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-254:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041564515, "hashes": {"sha256": "4qCi5VkWXFiFPziaIKLPXPaNjtTNarhrb+gIHZAXa9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TEnSgNSw0tHKd88iwBwyyEvBWWmxIo+yOSmySVGyHC2mMPQxrwyHnB51aKP8g8JQfWwvwCBj6OdTqQ3Z3lTABw"}}, "unsigned": {"age_ts": 1570041564515}}iceQa_$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1252}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-254:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041562774, "hashes": {"sha256": "zD6R5eHTsxQdEXkVs0/5+w9H/Sd4k8YiEHcoS/CWBF8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EsosxFBlOe8EAmT23lUg8gEIf/kIm1X8tNbl1UlUoHs+XZYSWR5qRQbU92fIU9q9eFDOisKM3fTIW4rGeNpfAA"}}, "unsigned": {"age_ts": 1570041562774}}WbeQa;$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 274, "stream_ordering": 1251}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8"], "prev_events": ["$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI"], "type": "m.room.member", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-253:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-253", "avatar_url": null}, "depth": 12, "prev_state": [], "state_key": "@anon-20191002_181700-253:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041558946, "hashes": {"sha256": "JuoOC5Mm7jdyXa9om+8bg61Z0UEb8qxMT/hVEokufm4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3+3J9i8qYO5oZO3tlH41esPahzCjk3i3QCnjZmCj6OeGRorT4XyQJrGH19xRLSDT6k/spObcth0lifhWal5eCg"}}, "unsigned": {"age_ts": 1570041558946}}~aeQe$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800{"token_id": 273, "txn_id": "136", "stream_ordering": 1250}{"auth_events": ["$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew", "$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g", "$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8"], "prev_events": ["$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M"], "type": "m.room.message", "room_id": "!ZaOktTIVeRgBXxfubH:localhost:8800", "sender": "@anon-20191002_181700-252:localhost:8800", "content": {"msgtype": "m.text", "body": "3"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041558155, "hashes": {"sha256": "6HW/s4bRHA/Et2EcQjuB4gquNNDkUT4JF1VJcY+ezmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kK0NQ5XwFVvoDhK2Ea/9ekH3h1Nc2sHzs925xHfGgxDN4KrYpqj0CZBujXg4Z2Hp7dHrnLZGzF9q4qsygivgAg"}}, "unsigned": {"age_ts": 1570041558155}} ? T & d n @  \ . v"P~6\.vHvHb4 | N h : f8 R$n@d-]@anon-20191002_181700-269:localhost:8800+[@anon-20191002_181700-26:localhost:8800-]@anon-20191002_181700-270:localhost:8800-]@anon-20191002_181700-271:localhost:8800-]@anon-20191002_181700-273:localhost:8800-]@anon-20191002_181700-272:localhost:8800-]@anon-20191002_181700-277:localhost:8800-]@anon-20191002_181700-276:localhost:8800-]@anon-20191002_181700-279:localhost:8800+[@anon-20191002_181700-24:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-289:localhost:8800-]@anon-20191002_181700-288:localhost:8800-]@anon-20191002_181700-287:localhost:8800-]@anon-20191002_181700-286:localhost:8800-]@anon-20191002_181700-284:localhost:8800-]@anon-20191002_181700-283:localhost:8800-]@anon-20191002_181700-282:localhost:8800-]@anon-20191002_181700-281:localhost:8800-]@anon-20191002_181700-280:localhost:8800+[@anon-20191002_181700-27:localhost:8800 -]@anon-20191002_181700-268:localhost:8800-]@anon-20191002_181700-265:localhost:8800-]@anon-20191002_181700-264:localhost:8800-]@anon-20191002_181700-263:localhost:8800-]@anon-20191002_181700-261:localhost:8800+[@anon-20191002_181700-25:localhost:8800-]@anon-20191002_181700-259:localhost:8800-]@anon-20191002_181700-257:localhost:8800-]@anon-20191002_181700-254:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800-]@anon-20191002_181700-249:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-318:localhost:8800-]@anon-20191002_181700-317:localhost:8800-]@anon-20191002_181700-312:localhost:8800-]@anon-20191002_181700-311:localhost:8800-]@anon-20191002_181700-310:localhost:8800-]@anon-20191002_181700-308:localhost:8800-]@anon-20191002_181700-307:localhost:8800-]@anon-20191002_181700-306:localhost:8800-]@anon-20191002_181700-305:localhost:8800-]@anon-20191002_181700-304:localhost:8800-]@anon-20191002_181700-303:localhost:8800-]@anon-20191002_181700-302:localhost:8800-]@anon-20191002_181700-301:localhost:8800-]@anon-20191002_181700-300:localhost:8800-]@anon-20191002_181700-299:localhost:8800-]@anon-20191002_181700-298:localhost:8800-]@anon-20191002_181700-297:localhost:8800-]@anon-20191002_181700-296:localhost:8800-]@anon-20191002_181700-295:localhost:8800-]@anon-20191002_181700-294:localhost:8800-]@anon-20191002_181700-292:localhost:8800-]@anon-20191002_181700-291:localhost:8800-]@anon-20191002_181700-290:localhost:8800 "M 0 @ P % 5EUeu -=MuG ]@anon-20191002_181700-289:localhost:8800$2b$04$tE8YEWwlJrSIYkmGezuEpesffcK1BfbfWF40eTzKNwGL/HPTLf67m]duF ]@anon-20191002_181700-288:localhost:8800$2b$04$D26kQFKUjrG8Tnt39.QGUuwbHVzZNhz2p8opJ5vMTpBplwK223c.a]duE ]@anon-20191002_181700-287:localhost:8800$2b$04$jPYc9ui3iInerQBcKhLUpuHdMmA3AhsgByFe491Pn4bglv5U13lS6][uD ]@anon-20191002_181700-286:localhost:8800$2b$04$c/nXzsqBedmjIjrDNmErx.W44XkVPr4doEYQ/l4u/3Fzfybcn5mii][uC ]@anon-20191002_181700-285:localhost:8800$2b$04$hoLmw.f2mAxSiKCAlO0LNOioW9VDoLKBP399OEuPHsZqa4sxuFU3C]VuB ]@anon-20191002_181700-284:localhost:8800$2b$04$xmBi8dKP2RbglvOOHd1P5uwKadhnFMZmmvbhdIwPf/RNnrzF5WRTu]VuA ]@anon-20191002_181700-283:localhost:8800$2b$04$DTMdt6vyJljsYcEF5AKR2elT3/fMfyqRfu9tetmW/9Luoj8dtfOE6]Pu@ ]@anon-20191002_181700-282:localhost:8800$2b$04$SgOpMtej8fBX6BkvzpRE.OW676DtweT9zSE3yAmmKbVCB5zVRjfOS]Gu? ]@anon-20191002_181700-281:localhost:8800$2b$04$g6Ox62ygmSw9qeNHrDEaa.OfYcdI95pBlj3BMuuxJEiAc479oGCzm]Gu> ]@anon-20191002_181700-280:localhost:8800$2b$04$DOmZ3GqDECNFC.ilJhe20eCynlZYjZxlJrTqfzsd5BBxEU3It2b3O]Gu= ]@anon-20191002_181700-279:localhost:8800$2b$04$wM2ZOKrrwgX6F1TURRK3zOWskTA6zZRrDrVxcbCSf0HX0Q/r1w82i]@u< ]@anon-20191002_181700-278:localhost:8800$2b$04$Q4NVcQuBqzTu5UiJOcsc1eOP58AvJ0jVxny15gCL4Uxxabzh4YR82];u; ]@anon-20191002_181700-277:localhost:8800$2b$04$uz5N7mHKw5ADwBjxNmb4h.Te6UoxB3xzmDS1le4NdF1u6CBV7aVYu];u: ]@anon-20191002_181700-276:localhost:8800$2b$04$YIH0b2TwTxCHnKwZDIOHgO.LEiEU.Ro1RKzKTsE0lnUyviYD7Lfom]5u9 ]@anon-20191002_181700-275:localhost:8800$2b$04$T/Gl1H5jMxwKb9JkcJb6j.DxpM.UO.6Wyjl1sItY/UAiYO1AcKzIy]+u8 ]@anon-20191002_181700-274:localhost:8800$2b$04$kxHWwsrq1QjPAoXj9kQPxOIq2Q1TetTrjHjuhAe5fyweXAL6aZDmG])u7 ]@anon-20191002_181700-272:localhost:8800$2b$04$.A1MthwyqlsUwbn6cWfRX.JvfQgw.8nIj3qh2J35AihWEvVhbD0RC])u6 ]@anon-20191002_181700-273:localhost:8800$2b$04$EgIJSXL9CxpAfbhqDaidGOOZJ/7PWlKbeAxaEPBEK9ohf0Kz1wISG])u5 ]@anon-20191002_181700-270:localhost:8800$2b$04$eoNBtD3dJidIe4FVaazKO.B33b312NWLjUPeJJaZ4L6OxD4Ss51Ja]u4 ]@anon-20191002_181700-271:localhost:8800$2b$04$XAD7fdL/dvqBOqE7tHyXlObzWUk.bXUm3.qfdNUbb.hh0ZVxbPhSq]u3 ]@anon-20191002_181700-269:localhost:8800$2b$04$939JqvSwNgHws4GxiPT6Cu/GH6vq6z.OWaR6yPL3vF6QFWGO.awk6]u2 ]@anon-20191002_181700-268:localhost:8800$2b$04$.XPyeKVYoAELHeFzQLJZdOAsP.4nraOmpbuafKEthY.HcECu/GecS]81 ] @anon-20191002_181700-267:localhost:8800]u0 ]@anon-20191002_181700-266:localhost:8800$2b$04$OzZ9VLSGGQfxJqOZXFgHje20I84BFIFai6SHWjeoIppAGNHxtraF2] u/ ]@anon-20191002_181700-265:localhost:8800$2b$04$/Z9O2mlHnAk1pASWIba0QOmFhgGS0DtKtRcgY1aLtF9BelpY93upa] u. ]@anon-20191002_181700-264:localhost:8800$2b$04$BFlpvltY.VSPGWqhHM2FP.1nkfeHh8MGsVjnVnH./4Zbs6A/sZkiK]u- ]@anon-20191002_181700-263:localhost:8800$2b$04$9CO3v0UGabEzVRkkkP3P0OoUzDnpFqQC0iHmNlbJvpCjXsbEzXBF.]u, ]@anon-20191002_181700-262:localhost:8800$2b$04$oajtgU6EomvK8Vv0I/XmBuGoiHYVRyMbzbYtL2LZPQi6VoKwN/UaK]u+ ]@anon-20191002_181700-261:localhost:8800$2b$04$ZwDxrgHrMTnqkqfAw1xGjelOYMVIYd86B3x2UwoErecR6RzXUS6d6]u* ]@anon-20191002_181700-260:localhost:8800$2b$04$Tf0EC013kOpov0wl0fV.ruPE3wpBh975ja1qgcLQKxF9yUth5Vb.y]u) ]@anon-20191002_181700-259:localhost:8800$2b$04$5JrPXJu3N3.ifdCK6ynbCO76PfdLt7arc3oauRPkNzmSi.d/nl3iq]u( ]@anon-20191002_181700-258:localhost:8800$2b$04$2Rk6QSM9sYNuN1NYFZcwEu04ltfRsTHyxaMmu4vokEAsEQcS6rGYu]u' ]@anon-20191002_181700-257:localhost:8800$2b$04$URoeaw9cQkS06RxfkQ5k5Oxp.lJPILBkEODtUYid/ziqfnn84v3kG]u& ]@anon-20191002_181700-255:localhost:8800$2b$04$swrpwubl0Hsjup1jbzRyGeXk/pd50V/Lowru7AugZKW7VzHejYCmC] 1`p 0 @ P `  p 0@MZ k~/ANP]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800M[Q @anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!loalEsWaTYwrVUNJLr:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!QZhNrNpwObZGJZpdAG:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800 P]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800P]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800P]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800P]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800P]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800O]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800~O]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800}O]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800{O]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800yO]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800xO]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800wO]Q@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800vO]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800uO]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800tO]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800sO]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800qO]Q@anon-20191002_181700-149:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800rO]Q@anon-20191002_181700-146:localhost:8800!GiSxJsKZhQVHBkrVPn:localhost:8800pO]Q@anon-20191002_181700-144:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800oO]Q@anon-20191002_181700-143:localhost:8800!AjjrNwXmPTCruHxaJq:localhost:8800nO]Q@anon-20191002_181700-142:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800mO]Q@anon-20191002_181700-141:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800lO]Q@anon-20191002_181700-140:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800kO]Q@anon-20191002_181700-138:localhost:8800!WWZVpyLeZfyfpWidLx:localhost:8800jO]Q@anon-20191002_181700-137:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800iO]Q@anon-20191002_181700-136:localhost:8800!XIqmzIFbkHGQPIpywk:localhost:8800hO]Q@anon-20191002_181700-135:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800gO]Q@anon-20191002_181700-134:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800fO]Q@anon-20191002_181700-133:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800eO]Q@anon-20191002_181700-132:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800dO]Q@anon-20191002_181700-131:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800cO]Q@anon-20191002_181700-130:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800bO]Q@anon-20191002_181700-129:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800a  < GLto0 M X &$/][e{eQ/ $tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.join_ruleseeQ/ $PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rulesgeQ3 $VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels eQ']$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800joinaeQ' $6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800m.room.createeQ']$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800leaveaeQ' $IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800m.room.create eQ']$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-253:localhost:8800joinmeQ? $sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800m.room.history_visibilityeeQ/ $wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.join_rulesgeQ3 $9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800m.room.power_levels eQ']$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800m.room.member@anon-20191002_181700-252:localhost:8800joinaeQ' $kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800m.room.create ~eQ']$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.member@anon-20191002_181700-251:localhost:8800joing}eQ3 $WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.guest_accessm|eQ? $GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800m.room.history_visibilitymeQ? $onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibilityeeQ/ $cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rulesgeQ3 $S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels eQ']$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800joina eQ' $ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800m.room.createp eQ))$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800m eQ? $KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibilitye eQ/ $mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rulesjeQ9 $uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_aliasgeQ3 $JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels eQ']$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800m.room.member@anon-20191002_181700-254:localhost:8800join yUg<e: !@i> u 8FoDmB { Pk N # w LT H qc J  s)}R'  % { P*Q!cGkVFpidyBBxUxsszG:localhost:8800NT*Q!cGkVFpidyBBxUxsszG:localhost:8800OU*Q!cGkVFpidyBBxUxsszG:localhost:8800PV*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!bzPCFeFSMbCESvNbxl:localhost:880006*Q!bzPCFeFSMbCESvNbxl:localhost:8800/5*Q!bnTuVBaAJTPbcYZtRl:localhost:88009=*Q!bnTuVBaAJTPbcYZtRl:localhost:88009<*Q!bnTuVBaAJTPbcYZtRl:localhost:88008;*Q!bnTuVBaAJTPbcYZtRl:localhost:88007:*Q!bnTuVBaAJTPbcYZtRl:localhost:880069*Q!bnTuVBaAJTPbcYZtRl:localhost:880058*Q!bnTuVBaAJTPbcYZtRl:localhost:880047*Q!bnTuVBaAJTPbcYZtRl:localhost:880036*Q!bnTuVBaAJTPbcYZtRl:localhost:880025*Q!bnTuVBaAJTPbcYZtRl:localhost:880014*Q!csWEXfVEVxdviNvgAd:localhost:8800(R*Q!csWEXfVEVxdviNvgAd:localhost:8800&P*Q!csWEXfVEVxdviNvgAd:localhost:8800#M*Q!bzPCFeFSMbCESvNbxl:localhost:88007=*Q!bzPCFeFSMbCESvNbxl:localhost:88006<*Q!bzPCFeFSMbCESvNbxl:localhost:88005;*Q!bzPCFeFSMbCESvNbxl:localhost:88004:*Q!bzPCFeFSMbCESvNbxl:localhost:880039*Q!bzPCFeFSMbCESvNbxl:localhost:880028*Q!bzPCFeFSMbCESvNbxl:localhost:880017*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cSUQGmpIsSCBAVTOHo:localhost:8800uw*Q!cHtqiAyCHEAoBIbCmL:localhost:8800LN*Q!cHtqiAyCHEAoBIbCmL:localhost:8800KM*Q!cHtqiAyCHEAoBIbCmL:localhost:8800JL*Q!cHtqiAyCHEAoBIbCmL:localhost:8800IK*Q!cHtqiAyCHEAoBIbCmL:localhost:8800HJ*Q!cHtqiAyCHEAoBIbCmL:localhost:8800GI*Q!cHtqiAyCHEAoBIbCmL:localhost:8800FH*Q!cHtqiAyCHEAoBIbCmL:localhost:8800EG*Q!cHtqiAyCHEAoBIbCmL:localhost:8800DF*Q!cHtqiAyCHEAoBIbCmL:localhost:8800CE*Q!cGkVFpidyBBxUxsszG:localhost:8800V\*Q!cGkVFpidyBBxUxsszG:localhost:8800U[*Q!cGkVFpidyBBxUxsszG:localhost:8800TZ*Q!cGkVFpidyBBxUxsszG:localhost:8800SY*Q!cGkVFpidyBBxUxsszG:localhost:8800RX*Q!cGkVFpidyBBxUxsszG:localhost:8800QW*Q!cidyuyekVzJHHvyomb:localhost:8800 7 t*Q!cidyuyekVzJHHvyomb:localhost:8800 6 s*Q!cidyuyekVzJHHvyomb:localhost:8800 5 r*Q!cidyuyekVzJHHvyomb:localhost:8800 4 q*Q!cidyuyekVzJHHvyomb:localhost:8800 3 p*Q!cidyuyekVzJHHvyomb:localhost:8800 2 o*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!cGkVFpidyBBxUxsszG:localhost:8800MS*Q!bzPCFeFSMbCESvNbxl:localhost:88008>*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!bzPCFeFSMbCESvNbxl:localhost:8800.4*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cSUQGmpIsSCBAVTOHo:localhost:8800y{*Q!cSUQGmpIsSCBAVTOHo:localhost:8800xz*Q!cSUQGmpIsSCBAVTOHo:localhost:8800wy*Q!cSUQGmpIsSCBAVTOHo:localhost:8800vx  heQa$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1257}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI"], "type": "m.room.history_visibility", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041568877, "hashes": {"sha256": "XJK1+ouWoGBGZxdQa+mkG+89zVYLU+1KXFUHR1p6jwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VcWN/eIOJTIyklH1QZii0gcweMtT+OArD/u1oQC52WFYpkMmfJXjfsmCdMnpgY18jwz0YJr1dy8GHXelCO+ZCA"}}, "unsigned": {"age_ts": 1570041568877}}tgeQau$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1256}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw"], "type": "m.room.join_rules", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041567893, "hashes": {"sha256": "AtCenbHcWgf2G+FqMDpXJmskMI0UU4ViLtwYufDn1SY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WPByh4neR1QmO9rTWt5g/VS4dt9cYuESJYjSrnkT+1nuh5EHQioQoBWGfiLmBekipnt3UDHbNEncBGZ2bDNBDg"}}, "unsigned": {"age_ts": 1570041567893}} feQa!$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1255}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg"], "type": "m.room.canonical_alias", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"alias": "#__ANON__-12:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041566703, "hashes": {"sha256": "wZS70+IjkNJFSSzOzCb/zTF0pBh6/kZ6EuK3NlhbmhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PmZBOkucVyJXG3G0AuU15ciu1KouhqoAKDGMehnPzQM/99Uy/Chucloz6hVZpNjneYtUI/c14W2toGXlkrwBCg"}}, "unsigned": {"age_ts": 1570041566703}}keeQac$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1254}{"auth_events": ["$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "type": "m.room.power_levels", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"users": {"@anon-20191002_181700-254:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041565436, "hashes": {"sha256": "z/V4jjMJ0nPQsUntMvcGaq8X8104qlQbPUD1HmQpkCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9nj23VdXyj7B3y3d/dR7Vekh9hK60AYUugmGdaniakD7NHtgtrZLLgEE79wXccE2UkZequ0CZsU87nzlDZXKCw"}}, "unsigned": {"age_ts": 1570041565436}} !)Q z   - 6^DS47areQ' $pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800m.room.create qeQ']$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800mpeQ? $Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibilityeoeQ/ $FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800m.room.join_rulesgneQ3 $tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels meQ']$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800aleQ' $U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800m.room.create keQ']$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800 jeQ']$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800mieQ? $fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibilityeheQ/ $0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rulesggeQ3 $araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels feQ']$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800aeeQ' $g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create deQ']$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800 ceQ']$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800mbeQ? $OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibilityeaeQ/ $PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rulesg`eQ3 $VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels _eQ']$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800a^eQ' $6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800m.room.create ]eQ']$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800 \eQ']$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800m[eQ? $onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibilityeZeQ/ $cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rulesgYeQ3 $S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels XeQ']$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800aWeQ' $ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800m.room.createpVeQ))$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800mUeQ? $KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibilityeTeQ/ $mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800m.room.join_rulesjSeQ9 $uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800m.room.canonical_aliasgReQ3 $JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800m.room.power_levels a} { y w u sqomkigeca~QeeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~PeeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800~OeeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~NeeQ$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~MeeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800~LeeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~KeeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~JeeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800~IeeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~HeeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~GeeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800~FeeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~EeeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~DeeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800~CeeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~BeeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800~AeeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800~@eeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~?eeQ$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800~>eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~=eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~<eeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800~;eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~:eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~9eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800~8eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~7eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~6eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800~5eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM!FAYqpziHeVZugCGaij:localhost:8800~4eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo!FAYqpziHeVZugCGaij:localhost:8800~3eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}||{{zzyxwvuttsssrqponmmllkkjihgfeeddccba`_^]?>=<;:976543210/.-,+)('&%$#"!     [[[ZYXWVUUTTSSRQPONMLKJIHGFEDCBA@?>>==<;:98766543210/.~-},|+{*z)y(x'w&v%u$t#s#r"q!p onmlkjihgfedcba`_^]\[ Z Y X W V UTSRQPON  H E " % G,)mv +4 qQ']e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QdpQ' e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.create$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU oQ']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzopnQ? e!XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibility$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQhmQ/ e!XNfwczePlyYFWLCaui:localhost:8800m.room.join_rules$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4jlQ3 e!XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI kQ']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4djQ' e!XNfwczePlyYFWLCaui:localhost:8800m.room.create$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl88iQ']ee!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk hQ']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkpgQ? e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibility$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10hfQ/ e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rules$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIjeQ3 e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 dQ']e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7IdcQ' e!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU8bQ']ee!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI aQ']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIp`Q? e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibility$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfoh_Q/ e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rules$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIj^Q3 e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE ]Q']e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0d\Q' e!kpTPWDZdBbbXKLonZK:localhost:8800m.room.create$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM8[Q']ee!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM ZQ']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-258:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMpYQ? e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.history_visibility$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAhXQ/ e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.join_rules$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBREjWQ3 e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.power_levels$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA VQ']e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.member@anon-20191002_181700-257:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sdUQ' e!ITdmSQpjMnaPoHIbws:localhost:8800m.room.create$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8sTQ))e!FAYqpziHeVZugCGaij:localhost:8800m.room.aliaseslocalhost:8800$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIpSQ? e!FAYqpziHeVZugCGaij:localhost:8800m.room.history_visibility$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc  h {kleQac$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1261}{"auth_events": ["$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "type": "m.room.power_levels", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"users": {"@anon-20191002_181700-257:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041574979, "hashes": {"sha256": "aYj2yZhOxAGmDSxfqbc0RYjeA4+J9Y1/WT8ves9HNo4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tEXFHf/T3YrKG/CLr5niez6Tr29AW74RlM12+iv6qb7sHQX2bBn4MVGo52pawhgXH2BiINDm7TmyuLxLkdJvDQ"}}, "unsigned": {"age_ts": 1570041574979}}vkeQay$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1260}{"auth_events": ["$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8"], "prev_events": ["$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8"], "type": "m.room.member", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-257", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-257:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041574215, "hashes": {"sha256": "PzSQ9L2pp7HGojomORr1ubEmWsqpY712khsfZy6FxBk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gAGNWbT4Zr5FxgqoAwuPs3S2wcv7ctZ4dhEq6QZEIa9Yo112BTwlHXr/5m90dheVJ9y1pd/qdGMMYqLxk/2TDg"}}, "unsigned": {"age_ts": 1570041574215}}ijeQa_$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1259}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-257:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041573360, "hashes": {"sha256": "q55RPPzrEPhipT6xTjH6ZxwTjVaCd94yL5EndZxoRoY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mjb2I+71spe9/E3MW3bZ0SpOq+6ZcxXflBW3/YDQTzLB4wlPPBOfxu5vT2zTjAXnYJjLkWdKZj40Arv7fojoCw"}}, "unsigned": {"age_ts": 1570041573360}}ieQa5$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800{"token_id": 275, "stream_ordering": 1258}{"auth_events": ["$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg", "$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo", "$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM"], "prev_events": ["$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc"], "type": "m.room.aliases", "room_id": "!FAYqpziHeVZugCGaij:localhost:8800", "sender": "@anon-20191002_181700-254:localhost:8800", "content": {"aliases": ["#__ANON__-12:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041571091, "hashes": {"sha256": "zid4hyrYR46wRSsdG3AZdggHEDMADDDDoBuPaaATglk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ijsPn5ikAfG7WBi9QpdkQ9Q5dAzklLdHXgpEnFD9kTkNRxt8iXfOUchqTV+uIh3hihUQ9Js9c4fP8EcPG0pcBw"}}, "unsigned": {"age_ts": 1570041571091}} q( F (  t V 8   n P 2  T6Pn2`~B$Wu9dpR4FbD&(r bs D &  T r 6W<  dlN0|^@ T=anon-20191002_181700-386=anon-20191002_181700-377=anon-20191002_181700-366=anon-20191002_181700-339x=anon-20191002_181700-338w=anon-20191002_181700-337v=anon-20191002_181700-336u=anon-20191002_181700-335t=anon-20191002_181700-334s=anon-20191002_181700-333r=anon-20191002_181700-332q=anon-20191002_181700-388=anon-20191002_181700-387=anon-20191002_181700-385=anon-20191002_181700-384=anon-20191002_181700-383=anon-20191002_181700-382=anon-20191002_181700-381=anon-20191002_181700-380=anon-20191002_181700-379=anon-20191002_181700-378=anon-20191002_181700-375=anon-20191002_181700-376=anon-20191002_181700-374=anon-20191002_181700-372=anon-20191002_181700-373=anon-20191002_181700-371=anon-20191002_181700-370=anon-20191002_181700-369=anon-20191002_181700-368=anon-20191002_181700-367=anon-20191002_181700-365=anon-20191002_181700-359=anon-20191002_181700-357=anon-20191002_181700-358=anon-20191002_181700-356=anon-20191002_181700-354=anon-20191002_181700-355=anon-20191002_181700-353=anon-20191002_181700-352=anon-20191002_181700-350=anon-20191002_181700-351=anon-20191002_181700-349=anon-20191002_181700-348=anon-20191002_181700-346~=anon-20191002_181700-347}=anon-20191002_181700-345|=anon-20191002_181700-343{=anon-20191002_181700-342z=anon-20191002_181700-341y;anon-20191002_181700-313;anon-20191002_181700-40<9anon-20191002_181700-4;anon-20191002_181700-3a;anon-20191002_181700-39;;anon-20191002_181700-38:;anon-20191002_181700-379;anon-20191002_181700-368;anon-20191002_181700-357;anon-20191002_181700-346=anon-20191002_181700-363=anon-20191002_181700-364=anon-20191002_181700-360=anon-20191002_181700-361=anon-20191002_181700-362@=anon-20191002_181700-318c=anon-20191002_181700-317b=anon-20191002_181700-316a=anon-20191002_181700-315`=anon-20191002_181700-314_=anon-20191002_181700-312^=anon-20191002_181700-311]=anon-20191002_181700-310\=anon-20191002_181700-309[=anon-20191002_181700-308Z=anon-20191002_181700-307Y=anon-20191002_181700-306X=anon-20191002_181700-305W=anon-20191002_181700-304V=anon-20191002_181700-406=anon-20191002_181700-405=anon-20191002_181700-404=anon-20191002_181700-403=anon-20191002_181700-402=anon-20191002_181700-401=anon-20191002_181700-400=anon-20191002_181700-399=anon-20191002_181700-397=anon-20191002_181700-398=anon-20191002_181700-396=anon-20191002_181700-395=anon-20191002_181700-394=anon-20191002_181700-393=anon-20191002_181700-392=anon-20191002_181700-391=anon-20191002_181700-390=anon-20191002_181700-389=anon-20191002_181700-331p=anon-20191002_181700-330o;anon-20191002_181700-335=anon-20191002_181700-329n=anon-20191002_181700-328m=anon-20191002_181700-327l=anon-20191002_181700-326k=anon-20191002_181700-325j=anon-20191002_181700-324i=anon-20191002_181700-323h=anon-20191002_181700-322g=anon-20191002_181700-321f=anon-20191002_181700-320e;anon-20191002_181700-324=anon-20191002_181700-319d=anon-20191002_181700-407 -RM H C > 9 4/*|%w rmhc TQe!egbhiBqOGhloZzopol:localhost:8800$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5AgTQe!egbhiBqOGhloZzopol:localhost:8800$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYTQe!egbhiBqOGhloZzopol:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5ATQe!egbhiBqOGhloZzopol:localhost:8800$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgTQe!KdOYYnOuwAyQzqwUki:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUTQe!KdOYYnOuwAyQzqwUki:localhost:8800$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpcTQe!KdOYYnOuwAyQzqwUki:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kTQe!KdOYYnOuwAyQzqwUki:localhost:8800$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMTQe!KdOYYnOuwAyQzqwUki:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSETQe!KdOYYnOuwAyQzqwUki:localhost:8800$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBoTQe !KdOYYnOuwAyQzqwUki:localhost:8800$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgTQe !KdOYYnOuwAyQzqwUki:localhost:8800$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkTQe !KdOYYnOuwAyQzqwUki:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QTQe !KdOYYnOuwAyQzqwUki:localhost:8800$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUTQe !XNfwczePlyYFWLCaui:localhost:8800$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYTQe!XNfwczePlyYFWLCaui:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzoT Qe!XNfwczePlyYFWLCaui:localhost:8800$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQT Qe!XNfwczePlyYFWLCaui:localhost:8800$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4T Qe!XNfwczePlyYFWLCaui:localhost:8800$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIT Qe!XNfwczePlyYFWLCaui:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4T Qe!XNfwczePlyYFWLCaui:localhost:8800$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHATQe!PQZMTVTeCYqMZwkHvW:localhost:8800$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAoTQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkTQe!PQZMTVTeCYqMZwkHvW:localhost:8800$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7ITQe!PQZMTVTeCYqMZwkHvW:localhost:8800$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUTQe!kpTPWDZdBbbXKLonZK:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4TQe!kpTPWDZdBbbXKLonZK:localhost:8800$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQT~Qe!kpTPWDZdBbbXKLonZK:localhost:8800$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIT}Qe!kpTPWDZdBbbXKLonZK:localhost:8800$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfoT|Qe!kpTPWDZdBbbXKLonZK:localhost:8800$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIT{Qe!kpTPWDZdBbbXKLonZK:localhost:8800$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuETzQe!kpTPWDZdBbbXKLonZK:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0TyQe!kpTPWDZdBbbXKLonZK:localhost:8800$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTMTxQe!ITdmSQpjMnaPoHIbws:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwTwQe!ITdmSQpjMnaPoHIbws:localhost:8800$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64TvQe!ITdmSQpjMnaPoHIbws:localhost:8800$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMTuQe!ITdmSQpjMnaPoHIbws:localhost:8800$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGATtQe!ITdmSQpjMnaPoHIbws:localhost:8800$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRETsQe!ITdmSQpjMnaPoHIbws:localhost:8800$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVATrQe!ITdmSQpjMnaPoHIbws:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sTqQe!ITdmSQpjMnaPoHIbws:localhost:8800$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8 ~z v r n j fb^ZVRNJFyeeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800xeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800weeQ$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800veeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800ueeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800teeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800seeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800reeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800qeeQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800peeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800oeeQ$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800neeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800meeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800leeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800keeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800jeeQ$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800ieeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800heeQ$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800geeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800feeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800eeeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800deeQ$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800ceeQ$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800beeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64!ITdmSQpjMnaPoHIbws:localhost:8800aeeQ$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800`eeQ$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800_eeQ$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800^eeQ$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA!ITdmSQpjMnaPoHIbws:localhost:8800]eeQ$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s!ITdmSQpjMnaPoHIbws:localhost:8800\eeQ$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800  %peQg$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "txn_id": "137", "stream_ordering": 1265}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM"], "type": "m.room.message", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041580557, "hashes": {"sha256": "hY0ALdsUO6hZcfq4AV9sEpTHRjSvs6pQcIcUC22uFe0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mvyn4Tc1fmTeLGz6AzKZRYV8o1/eMcKWnjYzfp1T1hWkIAv9Pqj2evtldvKisPansg4TKFXmwi0djrxh7AWaDA"}}, "unsigned": {"age_ts": 1570041580557}}VoeQa9$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 278, "stream_ordering": 1264}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE"], "prev_events": ["$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA"], "type": "m.room.member", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-258:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-258", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-258:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041579551, "hashes": {"sha256": "xLitqJukRzGrG0aM3dKjYikW9A1EmF7TYbv2eGWwUeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f+goWgAV0DEHJh+gKtf9qrohjDb8dGjrsm+PpUcRa9U5pS4R2F0ROQ5J6dSbxFh/nGcdYi8XB/xTe80YxIcpDg"}}, "unsigned": {"age_ts": 1570041579551}}neQa$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1263}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE"], "type": "m.room.history_visibility", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041577627, "hashes": {"sha256": "sQIOoY9ARssQVwAdqeRJkkDSDFNxI42oQUyMiNudV/Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JmVB04LeqXrgIMKO+ofV14a/CfEcVMMBFvyrDDAvBsmm0Wf6ArRJ0RRlZ1tvOeSV13DW7UL0t6a7Q0fqx7dBDQ"}}, "unsigned": {"age_ts": 1570041577627}}tmeQau$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 277, "stream_ordering": 1262}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s"], "prev_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA"], "type": "m.room.join_rules", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-257:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041576679, "hashes": {"sha256": "8ja7msXWqq7vWSF9P/KBwcRcF6gv2bS7XVm3ZGY8lLw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MRmLBXS+B8ma3hyOjHkoXoGroXd28NyFOsaIIuf6A7f1FmpKmwo/eiwdV03JFYst00vm9SUlgrZwoj6Ha7NDAw"}}, "unsigned": {"age_ts": 1570041576679}} jKVO w Fj82p$  \ ~ L  R X & ^ ,uCdp> * 8= {Ij81e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM&1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0`1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 y1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 x1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg81e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg71e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAe0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVok1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoj1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVoi1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg91e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo 1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo 1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk#1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk"1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcY1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcX1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcW1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM'1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oz1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oy1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7ox1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM(1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo 1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub41e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UR1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UQ1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1UP1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEs1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEr1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEq1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M 1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M 1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M 1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0<1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0;1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr0:0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAg1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAf1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk 2L  ] v D  W | J  P  W &  Q ^ ,%}dpj8p>> K+wEj8>21e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ-1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo1e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE G1e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC01e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp41e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM*1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo O1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo41e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70.1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE11e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo(1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4c1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0"1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk&1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A*1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc821e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHukm1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78=1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kr1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh031e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE]1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW01e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMko1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE.1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0O1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0V1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M/1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw 0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2KkZ1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ R1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw u ]+kCh@xQ) a9[3sK#b:rK$ S ] 6  p I !{ Z 2 n F   X 0 g?'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800}'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800#'Q!VNdqhtoDkyMoQdMTtM:localhost:8800u'Q!WgXzOXLTeqaGfiDFhL:localhost:8800o'Q!YaLuQzmJKSMTSFEqjO:localhost:8800n'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:88006'Q!QMrkSPlQDGborAyWtQ:localhost:8800;'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800R'Q!TcCLuIBUrtFqghDgay:localhost:8800Q'Q!SpXEytywhTbAftyVBr:localhost:8800O'Q!THHfVSOSWiBQTHRAnJ:localhost:8800I'Q!SrwdtDytJDUBVZOueF:localhost:8800<'Q!SrwdtDytJDUBVZOueF:localhost:8800;'Q!TlJCaYlCkOOVzFDlLx:localhost:8800)'Q!TlJCaYlCkOOVzFDlLx:localhost:8800('Q!TlJCaYlCkOOVzFDlLx:localhost:8800''Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800&Q!SyIWYOmcGiASNkPCTB:localhost:8800F&Q!SyIWYOmcGiASNkPCTB:localhost:8800E'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800/'Q!SrMQpDMFREKRMELwbL:localhost:8800.'Q!SrMQpDMFREKRMELwbL:localhost:8800-'Q!SnROoiDBapNNtMmKnT:localhost:8800+'Q!SnROoiDBapNNtMmKnT:localhost:8800*'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800.'Q!RmwbYvIIQyPlHlClty:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800~'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800M'Q!YQATbgbLImCDamiDHC:localhost:8800L'Q!YGUjVdVdpcQoGkRnWB:localhost:8800u'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88003&Q!XgobMgBjNcDRJnRXLD:localhost:88002'Q!XcaKxZsPvbZhAGKKdx:localhost:8800D'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800|&Q!XMNRkfscQXRjgYrOSd:localhost:8800{&Q!XIqmzIFbkHGQPIpywk:localhost:8800U&Q!XIqmzIFbkHGQPIpywk:localhost:8800T'Q!XGAmnfaVvjDtQJuufa:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800{'Q!WpThtNEVhrUbUdCdMJ:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800l'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800W&Q!WWZVpyLeZfyfpWidLx:localhost:8800V&Q!WVzjUePHrzCjfyTbmK:localhost:8800t'Q!WFHIeSFQyuugGeBFxW:localhost:8800='Q!WFHIeSFQyuugGeBFxW:localhost:8800<'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800J'Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:8800<&Q!VAEDgDJVqmxXZyAlSW:localhost:8800;&Q!UyLoIXmzVFwycmBUeh:localhost:8800v'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800_'Q!UGVFuRGyPQmBbGsEDo:localhost:8800^'Q!UGVFuRGyPQmBbGsEDo:localhost:8800]&Q!TleKOyAElrpgyyrAQA:localhost:8800,&Q!TleKOyAElrpgyyrAQA:localhost:8800+ +\ c j  q  x %  , 3s z'.5<CP Q]!jveVPZSXJOJyNDebPO:localhost:8800@anon-20191002_181700-279:localhost:88004kCP'Q]!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-292:localhost:88004P&Q]!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-290:localhost:88004P%Q]!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-288:localhost:88004P$Q]!ffijTnPMbTrDXHqOXf:localhost:8800@anon-20191002_181700-286:localhost:88004P#Q]!wLitJYvgvNJzanSIvO:localhost:8800@anon-20191002_181700-284:localhost:88004P"Q]!hWHyATwKfuznrqTiyu:localhost:8800@anon-20191002_181700-283:localhost:88004P!Q]!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-280:localhost:88004PQ]!rJhSRzmWBQHlIhuDXT:localhost:8800@anon-20191002_181700-277:localhost:88004PQ]!fsbkkRBZlUcBVVfMME:localhost:8800@anon-20191002_181700-276:localhost:88004PQ]!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-272:localhost:88004PQ]!RPfffkmSEbWggEjnoI:localhost:8800@anon-20191002_181700-271:localhost:88004PQ]!nxLxsxzliamzflrEBs:localhost:8800@anon-20191002_181700-270:localhost:88004PQ]!PCgUmZOwWmtDsuFqXg:localhost:8800@anon-20191002_181700-270:localhost:88004PQ]!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-267:localhost:88004PQ]!KdOYYnOuwAyQzqwUki:localhost:8800@anon-20191002_181700-265:localhost:88004PQ]!XNfwczePlyYFWLCaui:localhost:8800@anon-20191002_181700-263:localhost:88004PQ]!PQZMTVTeCYqMZwkHvW:localhost:8800@anon-20191002_181700-261:localhost:88004PQ]!kpTPWDZdBbbXKLonZK:localhost:8800@anon-20191002_181700-259:localhost:88004P}Q]!eJPTUgihvSwaOhIkrC:localhost:8800@anon-20191002_181700-211:localhost:88004"PQ]!ITdmSQpjMnaPoHIbws:localhost:8800@anon-20191002_181700-257:localhost:88004PQ]!FAYqpziHeVZugCGaij:localhost:8800@anon-20191002_181700-254:localhost:88004PQ]!ZaOktTIVeRgBXxfubH:localhost:8800@anon-20191002_181700-252:localhost:88004PQ]!ZaltdIYVZjCHsCWTZD:localhost:8800@anon-20191002_181700-250:localhost:88004PQ]!kwXxkGQFkaeenFTQJr:localhost:8800@anon-20191002_181700-248:localhost:88004PQ]!EMhFCPhwmnWVnjtXXM:localhost:8800@anon-20191002_181700-246:localhost:88004PQ]!GGXyLHdVXqhQjPRvac:localhost:8800@anon-20191002_181700-244:localhost:88004P Q]!IfYYyzLHSOeyJBxBfn:localhost:8800@anon-20191002_181700-242:localhost:88004P Q]!ZYKvjplZRyIWvzkRyM:localhost:8800@anon-20191002_181700-240:localhost:88004P Q]!ROoilpDjLJfjKfSPIi:localhost:8800@anon-20191002_181700-238:localhost:88004P Q]!wsvXTJXouVkEZcCFsD:localhost:8800@anon-20191002_181700-237:localhost:88004P Q]!DoiZErAdypBUMZKaeJ:localhost:8800@anon-20191002_181700-236:localhost:88004PQ]!qSUSLLWjDxcGibUZdT:localhost:8800@anon-20191002_181700-234:localhost:88004PQ]!RmwbYvIIQyPlHlClty:localhost:8800@anon-20191002_181700-232:localhost:88004PQ]!SvKwEALYoNreUvqAlp:localhost:8800@anon-20191002_181700-231:localhost:88004PQ]!fOJLpnbtgKNxxVDquX:localhost:8800@anon-20191002_181700-228:localhost:88004PQ]!vAUAIZrCnHTeMGeNuw:localhost:8800@anon-20191002_181700-226:localhost:88004PQ]!EfJcWhdjNARbuHYrqU:localhost:8800@anon-20191002_181700-224:localhost:88004PQ]!vRRNxNyGboLHNhqQvr:localhost:8800@anon-20191002_181700-222:localhost:88004PQ]!NFWKQvZkIwvecnREOC:localhost:8800@anon-20191002_181700-220:localhost:88004PQ]!IPYMCBwcyNIzqdiIWv:localhost:8800@anon-20191002_181700-217:localhost:88004PQ]!HZqzpRgqekPOtxstVc:localhost:8800@anon-20191002_181700-215:localhost:88004P~Q]!FklhVuCInffbDxunWv:localhost:8800@anon-20191002_181700-213:localhost:88004 L " 5LkteQac$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1269}{"auth_events": ["$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "type": "m.room.power_levels", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"users": {"@anon-20191002_181700-259:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041587595, "hashes": {"sha256": "reorR51AyHiyTpnaTAA/d1nRz7KI/Qj2JQiJ/aaWbg0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K7q1/xDyUXyjs5IGKXYwo9oXZ6QvmMPIIPKDxNE1HQM2fhezd3RQOhY6AlLLwK9PQzLDbJW8dpHkHB+pjIgNBA"}}, "unsigned": {"age_ts": 1570041587595}}vseQay$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1268}{"auth_events": ["$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM"], "prev_events": ["$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM"], "type": "m.room.member", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-259", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-259:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041586865, "hashes": {"sha256": "fQWRTdauSHWPwMrA2W/drWIPxwlcbIt2SQikmgsZD9A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sviCeNmqgtaEOk3J2JSiNFTM4Eb2a6bKVC+oDC/bEohgfCQUf2OjHETSsxu3IjL7QDiRx31Ul5pWay26jiXZDA"}}, "unsigned": {"age_ts": 1570041586865}}ireQa_$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1267}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-259:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041586162, "hashes": {"sha256": "QzvlyJrVLAzrDGF/XuXZP+qlQr/dDDV0zdkHtZpW1zg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2BHSyMFnHUdDgqYrqq+J7Lv+YA5vq8EyhO/J3VJPb3zUF0n4wIJF9z3oENt7Yi7qQiNB40Iafq/nZQ9FQQoSCg"}}, "unsigned": {"age_ts": 1570041586162}}ZqeQaA$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800{"token_id": 278, "stream_ordering": 1266}{"auth_events": ["$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA", "$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8", "$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM"], "prev_events": ["$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64"], "type": "m.room.member", "room_id": "!ITdmSQpjMnaPoHIbws:localhost:8800", "sender": "@anon-20191002_181700-258:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-258:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041582792, "hashes": {"sha256": "cUQRb8hpEzLMQZ6wmGImWh3Y/CoKOWRHC/1RH1TOiLQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I5U5S1T0mjho2Kp/Itm/SPBMDmXebwb3/aSko5Fyr5RxW3mXZIZ+/mVZCe+uU9Y2mJ518V8+yduKVUaAdjutBg"}}, "unsigned": {"age_ts": 1570041582792, "replaces_state": "$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM"}} wP'{P%yN#wL!L! N #w- V V +  T ) L! } R ' {wL P % yT)}Rw%yN#)+*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 j j*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 i i*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 h h)*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 (Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!nxLxsxzliamzflrEBs:localhost:8800))*Q!paDmNxsOZIKyApbxXs:localhost:8800 Q Q*Q!paDmNxsOZIKyApbxXs:localhost:8800 P P*Q!paDmNxsOZIKyApbxXs:localhost:8800 O O*Q!paDmNxsOZIKyApbxXs:localhost:8800 N N*Q!paDmNxsOZIKyApbxXs:localhost:8800 M M*Q!paDmNxsOZIKyApbxXs:localhost:8800 L L*Q!paDmNxsOZIKyApbxXs:localhost:8800 K K*Q!paDmNxsOZIKyApbxXs:localhost:8800 J J'*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!pTvdDtkgovsIdAdxCm:localhost:8800*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pUSFAnuwUuMlbiInDR:localhost:8800*Q!pJUItjYTOUJQFIxyiX:localhost:8800 S S*Q!pJUItjYTOUJQFIxyiX:localhost:8800 R R*Q!pJUItjYTOUJQFIxyiX:localhost:8800 Q Q*Q!pJUItjYTOUJQFIxyiX:localhost:8800 P P*Q!pJUItjYTOUJQFIxyiX:localhost:8800 O O*Q!pJUItjYTOUJQFIxyiX:localhost:8800 N N*Q!pJUItjYTOUJQFIxyiX:localhost:8800 M M*Q!oznZaCpONuNDaLarkI:localhost:8800OO*Q!oznZaCpONuNDaLarkI:localhost:8800NN*Q!oznZaCpONuNDaLarkI:localhost:8800MM*Q!oznZaCpONuNDaLarkI:localhost:8800LL*Q!oznZaCpONuNDaLarkI:localhost:8800KK*Q!oznZaCpONuNDaLarkI:localhost:8800JJ*Q!ozgnwUlebxvzLVwyHW:localhost:8800>>*Q!ozgnwUlebxvzLVwyHW:localhost:8800==*Q!ozgnwUlebxvzLVwyHW:localhost:8800;;*Q!ozgnwUlebxvzLVwyHW:localhost:880099*Q!ozgnwUlebxvzLVwyHW:localhost:880077*Q!ozgnwUlebxvzLVwyHW:localhost:880044(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 m m*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 l l(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800V*Q!pHoEnhQYhwlbJXqKQE:localhost:8800 k k K^ v D  }9 K  Q  W & ^ -k ^eq? &wE~LR  X3?j8q1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQa1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 k1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg{1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYT1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os?1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsN1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw/1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY.1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEw1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwp1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcK1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q u1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg '1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ`1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74W1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74U1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcH1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcG1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMaka1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4W1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo11e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUj1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEI1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM71e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gJ1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q01e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 F1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE `1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM v1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0+1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gd1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg`1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74Y WxP(@ hh@ ` 8  p pH  H  @  xP(`8pH X0 x P (h`8X0 xP( X 0 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 n'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 m'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hFwigdYZkwYNSwelRH:localhost:8800 N'Q!hFwigdYZkwYNSwelRH:localhost:8800 M'Q!hFwigdYZkwYNSwelRH:localhost:8800 L'Q!hFwigdYZkwYNSwelRH:localhost:8800 K'Q!hFwigdYZkwYNSwelRH:localhost:8800 J'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800]'Q!hgjYwwwjWJNgwrzOto:localhost:8800\'Q!hgjYwwwjWJNgwrzOto:localhost:8800['Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hYPSaMPGsLnvYSmwhg:localhost:8800/'Q!hYPSaMPGsLnvYSmwhg:localhost:8800.'Q!hYPSaMPGsLnvYSmwhg:localhost:8800''Q!hYPSaMPGsLnvYSmwhg:localhost:8800&'Q!hYPSaMPGsLnvYSmwhg:localhost:8800%'Q!hYPSaMPGsLnvYSmwhg:localhost:8800$'Q!hYPSaMPGsLnvYSmwhg:localhost:8800#'Q!hWHyATwKfuznrqTiyu:localhost:8800['Q!hWHyATwKfuznrqTiyu:localhost:8800Z'Q!hWHyATwKfuznrqTiyu:localhost:8800Y'Q!hWHyATwKfuznrqTiyu:localhost:8800X'Q!hWHyATwKfuznrqTiyu:localhost:8800W'Q!hWHyATwKfuznrqTiyu:localhost:8800V'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 H'Q!hFwigdYZkwYNSwelRH:localhost:8800 G'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800U'Q!hZuwenlFDapIPBOyfi:localhost:8800y'Q!hZuwenlFDapIPBOyfi:localhost:8800x'Q!hZuwenlFDapIPBOyfi:localhost:8800w'Q!hZuwenlFDapIPBOyfi:localhost:8800v'Q!hZuwenlFDapIPBOyfi:localhost:8800u'Q!hZuwenlFDapIPBOyfi:localhost:8800t'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 P'Q!hFwigdYZkwYNSwelRH:localhost:8800 O'Q!hegUPDZCEEmBhsNJJR:localhost:8800 i'Q!hegUPDZCEEmBhsNJJR:localhost:8800 h'Q!hegUPDZCEEmBhsNJJR:localhost:8800 g'Q!hegUPDZCEEmBhsNJJR:localhost:8800 f'Q!hegUPDZCEEmBhsNJJR:localhost:8800 e'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 I'Q!hGsPmWXboxZZtOlsxY:localhost:8800 @'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hgjYwwwjWJNgwrzOto:localhost:8800Z'Q!hgjYwwwjWJNgwrzOto:localhost:8800Y'Q!hgjYwwwjWJNgwrzOto:localhost:8800X'Q!hgjYwwwjWJNgwrzOto:localhost:8800V'Q!hgjYwwwjWJNgwrzOto:localhost:8800WP [V Z  o ! y%:DK[& e3Q ]$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkm.room.power_levels!KdOYYnOuwAyQzqwUki:localhost:8800mƬm@anon-20191002_181700-265:localhost:8800 e'Q ]$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qm.room.member!KdOYYnOuwAyQzqwUki:localhost:8800mĉm@anon-20191002_181700-265:localhost:8800  e'Q  ]$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUm.room.create!KdOYYnOuwAyQzqwUki:localhost:8800mſm@anon-20191002_181700-265:localhost:8800! e)Q ]$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYm.room.message!XNfwczePlyYFWLCaui:localhost:8800mŷmŸ@anon-20191002_181700-263:localhost:8800 e'Q ]$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzom.room.member!XNfwczePlyYFWLCaui:localhost:8800mŴmŵF@anon-20191002_181700-264:localhost:8800,e?Q ]$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQm.room.history_visibility!XNfwczePlyYFWLCaui:localhost:8800mŮmű@anon-20191002_181700-263:localhost:8800$e/Q ]$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4m.room.join_rules!XNfwczePlyYFWLCaui:localhost:8800mŪmŬ@anon-20191002_181700-263:localhost:8800&e3Q ]$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIm.room.power_levels!XNfwczePlyYFWLCaui:localhost:8800mŨ mũ@anon-20191002_181700-263:localhost:8800 e'Q ]$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4m.room.member!XNfwczePlyYFWLCaui:localhost:8800mťmŦT@anon-20191002_181700-263:localhost:8800 e'Q  ]$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8m.room.create!XNfwczePlyYFWLCaui:localhost:8800mšmŢL@anon-20191002_181700-263:localhost:8800 e'Q ]$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAm.room.member!PQZMTVTeCYqMZwkHvW:localhost:8800mŘ5mŘ@anon-20191002_181700-261:localhost:8800!e)Q ]$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAom.room.message!PQZMTVTeCYqMZwkHvW:localhost:8800mŕmŖW@anon-20191002_181700-261:localhost:8800 e'Q ]$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pkm.room.member!PQZMTVTeCYqMZwkHvW:localhost:8800mŒmœ?@anon-20191002_181700-262:localhost:8800,e?Q ]$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10m.room.history_visibility!PQZMTVTeCYqMZwkHvW:localhost:8800mōmŏ@anon-20191002_181700-261:localhost:8800$~e/Q ]$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmIm.room.join_rules!PQZMTVTeCYqMZwkHvW:localhost:8800mŋ[mŌ&@anon-20191002_181700-261:localhost:8800&}e3Q ]$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0m.room.power_levels!PQZMTVTeCYqMZwkHvW:localhost:8800mňmʼn@anon-20191002_181700-261:localhost:8800 |e'Q ]$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Im.room.member!PQZMTVTeCYqMZwkHvW:localhost:8800mŅYmņ@anon-20191002_181700-261:localhost:8800{ e'Q  ]$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUm.room.create!PQZMTVTeCYqMZwkHvW:localhost:8800młwmł@anon-20191002_181700-261:localhost:8800 ze'Q ]$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4m.room.member!kpTPWDZdBbbXKLonZK:localhost:8800mxmy@anon-20191002_181700-260:localhost:8800!ye)Q ]$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQm.room.message!kpTPWDZdBbbXKLonZK:localhost:8800mvmv@anon-20191002_181700-259:localhost:8800 xe'Q ]$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIm.room.member!kpTPWDZdBbbXKLonZK:localhost:8800msPms@anon-20191002_181700-260:localhost:8800,we?Q ]$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfom.room.history_visibility!kpTPWDZdBbbXKLonZK:localhost:8800mlmo@anon-20191002_181700-259:localhost:8800$ve/Q ]$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIm.room.join_rules!kpTPWDZdBbbXKLonZK:localhost:8800mjhmk2@anon-20191002_181700-259:localhost:8800&ue3Q ]$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEm.room.power_levels!kpTPWDZdBbbXKLonZK:localhost:8800mgmh@anon-20191002_181700-259:localhost:8800 . N>F| &6 l Ut e ]eeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800 zeeQ$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0!mfzIRinBAGGrZvQAuI:localhost:8800%eeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800}eeQ$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4!OaCEdDAiatpwYcagUb:localhost:8800eeQ$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ!GiSxJsKZhQVHBkrVPn:localhost:8800:eeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800eeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos!hSzBsirdPWHtVjagXn:localhost:8800,eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800 ҁeeQ$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800IeeQ$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800oeeQ$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4!FIOuvzpMhoERunVYYA:localhost:8800eeQ$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800eeQ$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg!wvnfKBSrUlfNmYoeil:localhost:8800heeQ$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k!FIOuvzpMhoERunVYYA:localhost:8800|eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800 ceeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss!msMfSdLIAvklSSAnci:localhost:8800eeQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU!xwoIOPTGmJIlTXakxC:localhost:8800QeeQ$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800   %xeQg$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "txn_id": "138", "stream_ordering": 1273}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"], "type": "m.room.message", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041591313, "hashes": {"sha256": "4y8oN2IhA4APSmzIV63GZf0W18SZBHduYsL7FEfoYNE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qL2sI1PBpQZnsp1zNWoUskFyLa/auBzMFCJbsyiPghJ5S0dJ3UGH6estNaYllB1oRlG05Ng8fmN8DO4JIL0fAg"}}, "unsigned": {"age_ts": 1570041591313}}VweQa9$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 280, "stream_ordering": 1272}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI"], "prev_events": ["$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo"], "type": "m.room.member", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-260:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-260", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-260:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041590608, "hashes": {"sha256": "q51twREc9VlczXnmUDS7hbKSjktOpagKD1Q6eUKDb1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CttRE6UhK8t9sUfN/Ao6HZkJpIURJZw+34kTuvrsTbTNzpquW1OSo3H5rBlbilBQbDRGDV0ty2BcNWfDHGxVDg"}}, "unsigned": {"age_ts": 1570041590608}}veQa$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1271}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI"], "type": "m.room.history_visibility", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041588928, "hashes": {"sha256": "JfjjxLdC+qR8PRiHixPy1EWiR8LjNO/H5Lbq1KVh1eE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2p/CXUGpQdCwtRka5QCGXDhKDOZ1C4sX7PDDIaDuXRipR0PxaF/wqHx0wGljWTH4qULbnlBAXtGPb5JwjsgYBQ"}}, "unsigned": {"age_ts": 1570041588928}}tueQau$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 279, "stream_ordering": 1270}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0"], "prev_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE"], "type": "m.room.join_rules", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-259:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041588328, "hashes": {"sha256": "gJ30pniVxJVmj4EQ6Zt22vTPScRxT7KEWxrlQdhUEqU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MOgXcsBloGu/A+h2zai2XLLB7NmUTGJahsrWcj7Udr7a9hz8aCuOZvIdqZTDWvLCzM1c5PMtVBNl+u0w7fMdAQ"}}, "unsigned": {"age_ts": 1570041588328}} a} { y w u sqomkigeca~peeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~oeeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800~neeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800~meeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~leeQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~keeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~jeeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~ieeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~heeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800~geeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~feeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~eeeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~deeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~ceeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~beeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~aeeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~`eeQ$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800~_eeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800~^eeQ$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~]eeQ$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800~\eeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI!kpTPWDZdBbbXKLonZK:localhost:8800~[eeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~ZeeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~YeeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI!kpTPWDZdBbbXKLonZK:localhost:8800~XeeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~WeeQ$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~VeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800~UeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800~TeeQ$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800~SeeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!kpTPWDZdBbbXKLonZK:localhost:8800~ReeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM!kpTPWDZdBbbXKLonZK:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Me$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01Le$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1Ke$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1Je$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA1Ie$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs1He$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns1Ge$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks1Fe$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1Ee$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1De$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1Ce$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig1Be$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI1Ae$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC681@e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1?e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1>e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1=e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1<e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-41;e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz01:e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX419e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg18e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU17e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc16e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER015e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo14e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg13e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM12e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE11e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7810e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE1/e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1.e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1-e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1,e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1+e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE1*e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1)e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y1(e$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac1'e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1&e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01%e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01$e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1#e$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU1"e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc1!e$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs1 e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1 e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1 e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE1 e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo1 e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg1 e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4  %eQg$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "txn_id": "140", "stream_ordering": 1289}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo"], "type": "m.room.message", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041608143, "hashes": {"sha256": "gkmetPiRAFXFt+CihzdAc7ZHegzlicJ1JCGzMTRDqCY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O86J5Zpj7n+cLKi9RUgW0KgBuWTjIJcbtryc7vQ88A9F8k+QYPhAqoeTG8yxnW9rO7U2XgHWIH8XfUk3E2piBw"}}, "unsigned": {"age_ts": 1570041608143}}VeQa9$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 284, "stream_ordering": 1288}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4"], "prev_events": ["$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ"], "type": "m.room.member", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-264:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-264", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-264:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041607391, "hashes": {"sha256": "gK12dx+3VbVZfBHTWq4TFk8AHbRh23uDppeuCOwt/GA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2P8ysSYfl7Pe5+0NVdQ9DKUEOqyIn17kzwQyAqCyZTduuWdX1l761wBrRlNnDVA/73nfb8l1aSL46vzdoP81Bw"}}, "unsigned": {"age_ts": 1570041607391}}eQa$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1287}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4"], "type": "m.room.history_visibility", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041605805, "hashes": {"sha256": "tA56pIfJ0u147aSO7vkwaWemMmS7i2uVPb73VoQjaTw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qc95q4A5B5pZr6QvQ1Dn48GHL4bXdqsbtGNXoSWIK82/Nn0NAY8Tm0vnVH2JOuX0chZNr8WmmwgyyPvAj5NhDw"}}, "unsigned": {"age_ts": 1570041605805}}teQau$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1286}{"auth_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI", "$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI"], "type": "m.room.join_rules", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041604762, "hashes": {"sha256": "NzvlTQOQDCoCV9yOZluewD+BU8XAarti0CHwJQPN29k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QDqFum96fTXv0C/eUXzk7C3eaKKc94nYk7B7gei5+1b67OjcWagLJv3NJ77XPOn62RDNu2lTr4HNTIamLvyWCA"}}, "unsigned": {"age_ts": 1570041604762}} N D  } K  R  Y ' ^, _ -e3 vk9r@&XxF~Lj8R p> 1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc o1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY a1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE T1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 61e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 51e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8w1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM]1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcw1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI@1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIe1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0z1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY=1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 G1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcr1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkR1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQG1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdou1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgh1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo21e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwI0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 .1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM31e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0A1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQs1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQP1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY t0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo >1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgL1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8_0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcL1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI 1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ6241e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgO1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4@1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ"1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYA1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc N  J |  P  Z( V $ \ *p> b0h6n< tBzHNj8T"  v D  1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Yy1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA&1e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs1e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs1e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag 1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag 1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c 1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c 1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90 1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90 1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90 1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM 1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkO1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjkN1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg(1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg'1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg&1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAu1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAt1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAs1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8 1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8 1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8 1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw /1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw .1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw -1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k%1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k$1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM^1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM_1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k#1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk~1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I 1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR41e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUv1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUu1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUt1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I N D  } K  R  Y ' ^, _ -e3 vk9r@&XxF~Lj8R p> 1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc m1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY _1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE R1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 61e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 51e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8w1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM]1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcw1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI@1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIe1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0z1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY=1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 G1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcr1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkR1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQG1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdou1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgh1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo21e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwI0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 .1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM31e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0A1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQs1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQP1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY t0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0h1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo >1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgL1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8_0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcL1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI 1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ6241e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgI1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4:1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYA1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 5O r5 ! \   i .[ M p3~h-W CQBQ? !hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibility ^Q']!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800:Q/ !hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rulesBQ? !hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibility6Q' !hegUPDZCEEmBhsNJJR:localhost:8800m.room.create<Q3 !hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levelsz^Q']!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800y:Q/ !hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rules{BQ? !hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibility|6Q' !hZuwenlFDapIPBOyfi:localhost:8800m.room.createx9Q- !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstone3<Q3 !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels4^Q']!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800):Q/ !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rules+BQ? !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibility,6Q' !hYPSaMPGsLnvYSmwhg:localhost:8800m.room.create(<Q3 !hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levelsg^Q']!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800f:Q/ !hWHyATwKfuznrqTiyu:localhost:8800m.room.join_ruleshBQ? !hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibilityi6Q' !hWHyATwKfuznrqTiyu:localhost:8800m.room.createe<Q3 !hSzBsirdPWHtVjagXn:localhost:8800m.room.power_levels^Q']!hSzBsirdPWHtVjagXn:localhost:8800m.room.member@anon-20191002_181700-192:localhost:8800:Q/ !hSzBsirdPWHtVjagXn:localhost:8800m.room.join_rulesBQ? !hSzBsirdPWHtVjagXn:localhost:8800m.room.history_visibility6Q' !hSzBsirdPWHtVjagXn:localhost:8800m.room.create<Q3 !hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels ^Q']!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800 :Q/ !hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rules 6Q' !hNCwypIzdDZDVmCEfd:localhost:8800m.room.create <Q3 !hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels^Q']!hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800:Q/ !hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rulesBQ? !hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibility6Q' !hGsPmWXboxZZtOlsxY:localhost:8800m.room.create<Q3 !hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels^Q']!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829^Q']!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800:Q/ !hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rulesBQ? !hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility6Q' !hFwigdYZkwYNSwelRH:localhost:8800m.room.createQ<Q3 !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels^Q']!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800:Q/ !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rulesBQ? !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibility6Q' !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.create<Q3 !fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels/^Q']!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800.:Q/ !fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rules2BQ? !fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility1<Q3 !fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access06Q' !fuHSJcznvGQnoYoLPW:localhost:8800m.room.create-<Q3 !fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levelsQ L " 5Lk|eQac$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1277}{"auth_events": ["$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "type": "m.room.power_levels", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"users": {"@anon-20191002_181700-261:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041596115, "hashes": {"sha256": "egt7AQbk72RXancDZlLw7h3XqlPrGUVHKHhhOkH72dE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QT9gesGUyjgK+tn6J31uPdtP8ONY3pK+zBzyg/p/+R+9FXTtcDpC3iwqA6V20VVsKsdY6KQv/SW/ORT+GO8BDA"}}, "unsigned": {"age_ts": 1570041596115}}v{eQay$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1276}{"auth_events": ["$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU"], "prev_events": ["$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU"], "type": "m.room.member", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-261", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-261:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041595225, "hashes": {"sha256": "2BCFWCkr5hG4GfJl5ztfGb+869LfNeJk7VmEsi79PlY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4HzcN9SHqN34HVKadODm1EtYYPt1JA+P5F2EgjGa3Jt+fJdYfxuYRz0+iOZ5J9mfKYF+qw+2qX4qdXOtaTLBDA"}}, "unsigned": {"age_ts": 1570041595225}}izeQa_$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1275}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-261:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041594487, "hashes": {"sha256": "i32nUjoSBrdbkfiXhwSN7gUNQVp13spQ2q1zwi6OVoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4f4dE/YW2fSrpcheqSl8HVZoPKMC2vDe+vOcueX3NNjVA3VduW9c1emBgiablhsXn9cUT8QKesRDSNThbrbaBg"}}, "unsigned": {"age_ts": 1570041594487}}ZyeQaA$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800{"token_id": 280, "stream_ordering": 1274}{"auth_events": ["$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE", "$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM", "$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"], "prev_events": ["$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ"], "type": "m.room.member", "room_id": "!kpTPWDZdBbbXKLonZK:localhost:8800", "sender": "@anon-20191002_181700-260:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-260:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041592023, "hashes": {"sha256": "aXt1MiDxJ7OEVxHyZoL+Ub4TO0kRrma8kg2oQZc+FNM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jaqi7mg4A/KVHMlGx3QavJyxvuBEBEHtUcBy9Eg6ftdb/fI/9o+354jG99rkiVmXREe+O08ZIDGbQDNhreHpBA"}}, "unsigned": {"age_ts": 1570041592023, "replaces_state": "$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"}} <(N h6b0 P   $ *  \T"Z(tBzH 8 Vn<   | J   221e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM11e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Okk1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Okj1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AC1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E11e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E01e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g "1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g !1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g 1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc 1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6AD1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to z1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to y1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to x1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU i1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cu1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Oki1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Okh1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU j1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cs1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk&1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO9471e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO9461e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYj1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk'1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk(1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYd1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3ct 8l D `8]c!E@anon-20191002_181700-270:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxFSCtCXjNzWFlZI2xeX1oKMDAyZnNpZ25hdHVyZSDPXAcW6JNqPJs4riWA-zStsg-aiwS5kychQygDCDgfBQoSRSYWQDCQU127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-269:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBIdFo6SE85UUI3c2tXT1AKMDAyZnNpZ25hdHVyZSAFrwK26z26wZ38qQfYMIVB0i1v_8Hz2xQeFaaLRU2VwwoEDTNFCDRMR127.0.0.1Perl + Net::Async::HTTP/0.44mq ]c!E@anon-20191002_181700-268:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVmeFMyeTlFdTAmcXdhLEAKMDAyZnNpZ25hdHVyZSAIHU-v60P7pi1FdbOEzdxbszKriuPshWipgFf-j3oEbQoBTQHLEFFPU127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-267:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEw9MV4wSUhjLnlNOWdVKk0KMDAyZnNpZ25hdHVyZSC0r7JuAI_YJyIGJfxb0zRZBRfiDT-Bp42jtVHYGfMVnAoLUADSGSJTG127.0.0.1Perl + Net::Async::HTTP/0.44m! ]c!E@anon-20191002_181700-266:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBSMlBnb0dJWUY0UWRGcHcKMDAyZnNpZ25hdHVyZSA5TlH1MPC9AiHHA_RZQuGZo5OFkBI5DfuqzVVW_KuJoQoMREALOZRTW127.0.0.1Perl + Net::Async::HTTP/0.44m  ]c!E@anon-20191002_181700-265:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHU6ck1wSz1tVWVTMkVtVzgKMDAyZnNpZ25hdHVyZSDrXYqnfYXyORP9VnmM0xCb799bIeWZ0dEYe7F9SxtHtgoCOAARRCECC127.0.0.1Perl + Net::Async::HTTP/0.44mſ;]c!E@anon-20191002_181700-264:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdHci43UW5SQF5CQEd4U1MKMDAyZnNpZ25hdHVyZSDpw2G5Yx2gvOJSbmwv08VdYUxuigJtfQ4pOnDbSLCHBQoDYYKUWOSTJ127.0.0.1Perl + Net::Async::HTTP/0.44mų]c!E@anon-20191002_181700-263:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJlU21TdWo3MV9fZk1KcCsKMDAyZnNpZ25hdHVyZSBfGowSNlG9PW6kBZJRMa9lEppfyDkOhDK0KJhm38veswoKUHOBSXQVM127.0.0.1Perl + Net::Async::HTTP/0.44mšT]c!E@anon-20191002_181700-262:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1lZlU2eEVEQHc3Lk1LSXoKMDAyZnNpZ25hdHVyZSDAVfq5QjOxbYXZl720d8Hu2Q4iyuaCMmL_6ot5CtBHqAoOLJVXJZUXG127.0.0.1Perl + Net::Async::HTTP/0.44mő']c!E@anon-20191002_181700-261:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE4Xys5OlhlLjV6RjQuTjcKMDAyZnNpZ25hdHVyZSBzdmP39YOveEENyrkA-DfMjxSYz8O10bXNwSZxcDWPAwoHLJRYNNHWE127.0.0.1Perl + Net::Async::HTTP/0.44mŁ L+j8p> W v D  | J  P  W % + ] ^ ,d2j8p> v%D|JQ1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0*1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAj1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg 1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo01e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20N1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM)1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo71e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcs1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg ;1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 D1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg'1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU 1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwct1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0 1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 71e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkH1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y01e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE21e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwU1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkED1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYf1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E^1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 `1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hoc1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ'1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 51e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIws1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI DK?  ( | J   P  p Zj W % "N ] +>zH wTBd2tj8 p v D1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso[1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU "1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc D1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo C1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM 1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE;1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgE1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA$1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU'1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA81e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 S1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a01e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls H1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o}1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4 1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs|1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI51e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw'1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G01e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4g1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho31e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAE0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMX1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY'1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8U1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasy1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsL1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc831e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg%1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 g1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMr21e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc2 9r 4 m -f(a#ZE7 e]]Q=$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE@anon-20191002_181700-273:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800inviteanon-20191002_181700-273T6 e]]Q%G$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800joinDisplay Namehttp://example.com/avatar.pngE5 e]]Q=$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800inviteanon-20191002_181700-270,4 e]]Q$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:8800leaveC3 e]]Q=$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY@anon-20191002_181700-271:localhost:8800@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800joinanon-20191002_181700-271C2 e]]Q=$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:8800joinanon-20191002_181700-270C1 e]]Q=$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800joinanon-20191002_181700-270,0 e]]Q$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk@anon-20191002_181700-267:localhost:8800@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800leaveC/ e]]Q=$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U@anon-20191002_181700-269:localhost:8800@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800joinanon-20191002_181700-269C. e]]Q=$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o@anon-20191002_181700-268:localhost:8800@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800joinanon-20191002_181700-268C- e]]Q=$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A@anon-20191002_181700-267:localhost:8800@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800joinanon-20191002_181700-267,, e]]Q $a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU@anon-20191002_181700-266:localhost:8800@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800leaveC+ e]]Q =$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k@anon-20191002_181700-266:localhost:8800@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800joinanon-20191002_181700-266E* e]]Q =$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE@anon-20191002_181700-266:localhost:8800@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800inviteanon-20191002_181700-266C) e]]Q=$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q@anon-20191002_181700-265:localhost:8800@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800joinanon-20191002_181700-265C( e]]Q=$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo@anon-20191002_181700-264:localhost:8800@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800joinanon-20191002_181700-264C' e]]Q=$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4@anon-20191002_181700-263:localhost:8800@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800joinanon-20191002_181700-263,& e]]Q $5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA@anon-20191002_181700-262:localhost:8800@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800leaveC% e]]Q =$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk@anon-20191002_181700-262:localhost:8800@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800joinanon-20191002_181700-262C$ e]]Q=$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I@anon-20191002_181700-261:localhost:8800@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800joinanon-20191002_181700-261 L+j8p> W v D  | J  P  W % + ] ^ ,d2j8p> v%D|JQ1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAj1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg 1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo01e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20N1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM)1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo71e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcs1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg ;1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 D1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg'1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU 1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwct1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0 1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 71e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkH1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y01e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE21e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwU1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkED1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYf1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E^1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 `1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hoc1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ'1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 51e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIws1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI  %eQg$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "txn_id": "139", "stream_ordering": 1281}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk"], "type": "m.room.message", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"body": "sup", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041599378, "hashes": {"sha256": "eR5eikvhjXUnLAf/fiHJHASpgiSw17KC3SQEdlF/H7I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xI7pck/5wqAScJ+8DNK1c/BqX/pS9HCb/ra4AzcVNuZoBV2ELmg1mkb2xzFGnDw+v7uN4egS5EWTcuoWLOetCg"}}, "unsigned": {"age_ts": 1570041599378}}VeQa9$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 282, "stream_ordering": 1280}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI"], "prev_events": ["$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10"], "type": "m.room.member", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-262:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-262", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-262:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041598612, "hashes": {"sha256": "kMbV3IVZnW2v/JsbA8CPyoylbBAULS6+91i32vVUsSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+d1IySTa2zY8/mNShjRHNmpt1t0OGiid9EGBfJEylfiFjoodwsG6HwTjy5/trwZrGhB3m7JT4sTiUNFak4SvCw"}}, "unsigned": {"age_ts": 1570041598612}}~eQa$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1279}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI"], "type": "m.room.history_visibility", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041597372, "hashes": {"sha256": "txccxRISFDKmmw1+wM8xhJ5w4MI+4dQtb7+/Upm5bOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gV2FUpdAMjMGzX3GyQJPV0WCFDcFpHZEVTT4o61Q6tkxqhueEbZ0NKbP1rX63bTtHJleLcL6Tll+m9u56NZCCw"}}, "unsigned": {"age_ts": 1570041597372}}t}eQau$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1278}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0"], "type": "m.room.join_rules", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041596763, "hashes": {"sha256": "BO4cgjqyqRIsttrPDBh8JJkntf8cmDQIjHpNZ3bwX+Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RoeibG0hYZ1A57rQm4N7K52ULDZ3NWl0KBmeTW/Op3uyUqjq8BqkJ5Nxu4OksaHx/crtamoU5M85af2oA84LDw"}}, "unsigned": {"age_ts": 1570041596763}} -RM H C > 9 4/*|%w rmhc TCQe!bzPCFeFSMbCESvNbxl:localhost:8800$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohETBQe!RPfffkmSEbWggEjnoI:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBITAQe!PCgUmZOwWmtDsuFqXg:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YT@Qe!RPfffkmSEbWggEjnoI:localhost:8800$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acT?Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYT>Qe!nxLxsxzliamzflrEBs:localhost:8800$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0T=Qe!RPfffkmSEbWggEjnoI:localhost:8800$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0T<Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwT;Qe!nxLxsxzliamzflrEBs:localhost:8800$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUT:Qe!RPfffkmSEbWggEjnoI:localhost:8800$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcT9Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsT8Qe!nxLxsxzliamzflrEBs:localhost:8800$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUT7Qe!RPfffkmSEbWggEjnoI:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYT6Qe!nxLxsxzliamzflrEBs:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cT5Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcT4Qe!RPfffkmSEbWggEjnoI:localhost:8800$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIT3Qe!nxLxsxzliamzflrEBs:localhost:8800$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQT2Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcT1Qe!egbhiBqOGhloZzopol:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkT0Qe!egbhiBqOGhloZzopol:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7UT/Qe!egbhiBqOGhloZzopol:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36oT.Qe!egbhiBqOGhloZzopol:localhost:8800$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMT-Qe!egbhiBqOGhloZzopol:localhost:8800$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5AgT,Qe!egbhiBqOGhloZzopol:localhost:8800$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYT+Qe!egbhiBqOGhloZzopol:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5AT*Qe!egbhiBqOGhloZzopol:localhost:8800$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgT)Qe!KdOYYnOuwAyQzqwUki:localhost:8800$vB9qJoYdYSyxUHqoWm4X5tLXhkzmY9ELabFFbawF5LcT(Qe!KdOYYnOuwAyQzqwUki:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUT'Qe!KdOYYnOuwAyQzqwUki:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kT&Qe!KdOYYnOuwAyQzqwUki:localhost:8800$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMT%Qe!KdOYYnOuwAyQzqwUki:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSET$Qe!KdOYYnOuwAyQzqwUki:localhost:8800$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBoT#Qe!KdOYYnOuwAyQzqwUki:localhost:8800$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgT"Qe!KdOYYnOuwAyQzqwUki:localhost:8800$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkT!Qe!KdOYYnOuwAyQzqwUki:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QT Qe!KdOYYnOuwAyQzqwUki:localhost:8800$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUTQe!XNfwczePlyYFWLCaui:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzoTQe!XNfwczePlyYFWLCaui:localhost:8800$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQTQe!XNfwczePlyYFWLCaui:localhost:8800$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4TQe!XNfwczePlyYFWLCaui:localhost:8800$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjITQe!XNfwczePlyYFWLCaui:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4TQe!XNfwczePlyYFWLCaui:localhost:8800$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8TQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHATQe!PQZMTVTeCYqMZwkHvW:localhost:8800$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19PkTQe!PQZMTVTeCYqMZwkHvW:localhost:8800$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10 L " 5LkeQac$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1285}{"auth_events": ["$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8", "$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "prev_events": ["$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4"], "type": "m.room.power_levels", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"users": {"@anon-20191002_181700-263:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041604106, "hashes": {"sha256": "7p88xQijN0Q5rDCPSFPS/srIvw33FTuLJiyK00bwvaU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KGVi6oNQfo4rN0g/Ak6ei51+teMo6G2WCrg3gCPD1OfQ9uzNuoxuGulxhEGw9Nuorxdy8mxZ9TSEZppXX1Q3Bg"}}, "unsigned": {"age_ts": 1570041604106}}veQay$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1284}{"auth_events": ["$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8"], "prev_events": ["$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8"], "type": "m.room.member", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-263", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-263:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041603534, "hashes": {"sha256": "Zfqiyl61HFqfURK2XAAc61NxpIKTYTvHYVvzHCs6ymQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JVmd9lh6xbTE6FeUFFOnD7yPPme765jFxqJL10ea/6vQRfKVjtZhgvarBoXdnZjdBlUXRtwjaEK1shXyzqlyCg"}}, "unsigned": {"age_ts": 1570041603534}}ieQa_$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800{"token_id": 283, "stream_ordering": 1283}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XNfwczePlyYFWLCaui:localhost:8800", "sender": "@anon-20191002_181700-263:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-263:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041602486, "hashes": {"sha256": "s8bOwgPor793+vZmPhN/x+BOO4iXBhGa16iB306ck8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Pid5cjB7dFFloDu4OLWkBU91m7FJ7qVi8QEaGMD8ufBKzZNRKUhkx/0CV4vV4YqMQLGGbeaXgu+rp2dwMwrCQ"}}, "unsigned": {"age_ts": 1570041602486}}ZeQaA$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800{"token_id": 281, "stream_ordering": 1282}{"auth_events": ["$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0", "$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU", "$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I"], "prev_events": ["$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo"], "type": "m.room.member", "room_id": "!PQZMTVTeCYqMZwkHvW:localhost:8800", "sender": "@anon-20191002_181700-261:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-262:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041600053, "hashes": {"sha256": "Tcm5hSV1dB8ocD97WtSl2WYXLuM+XJ9OC54L4RBx9Xg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UqbOyZOMFRGQ2oQ7HjkPhiPFcX//ttOT5qJaILUT1GbzJf2RD3449/vhF44OC+sIZsPf0gHOwbkXjoHZFk1GCA"}}, "unsigned": {"age_ts": 1570041600053, "replaces_state": "$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk"}} ,NC 8 - { " p  e ZOD9.|#qf V,eL$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIsha2566x x$Tt#ى4V+eL$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Ysha2562u0j3 A噄V*eL$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acsha256.)סHΉ^ű$ѹl٧V)eL$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYsha256jC=<7m~'L,_tZp~V(eL$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0sha256-ʳ>_]ViR"*G28 >V'eL$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0sha256Nё4f'r&'=#= V&eL$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwsha256cQ  `s:g~PJUc~çM\V%eL$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUsha256覺i<."OR6tDȜ5V$eL$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcsha256uF0&p&ۿ@MO=j7lC dVeL$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcsha256R%9~yI6=75s혤gVeL$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFksha25630ΣYÑ9dP VYVeL$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7Usha256mH竿j8 Bp閗HCVeL$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUsha256cˋNJ&,5mxphl2dggVeL$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36osha256"ʵm4H U dz=ߪVeL$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMsha256 eF\!@HgZي 2,&`4'(F8cVeL$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agsha256`*cKpzY>m<$6VeL$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYsha256ne`9O9SI;{'%VeL$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Asha256hH猃aPnVeL$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIsha256 W lJF`ck*Ȉ2VeL$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4sha256 BCvht,} Y>VeL$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8sha256S ~ԅ EEksX`_VeL$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAsha256,,Wø۳s 4zY~p 7J@@ @ B  B  B  D DFFFHHJ J =[!@anon-20191002_181700-35:localhost:8800EALQMPIKHOm ?]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBRmβ c?]!@anon-20191002_181700-358:localhost:8800YPZTVFTILNm)b?]!@anon-20191002_181700-357:localhost:8800TFBXZDXERTm]a?]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFNm`?]!@anon-20191002_181700-355:localhost:8800LDOCSGURJIms_?]!@anon-20191002_181700-354:localhost:8800EEONPHMPKHm^?]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRWm\?]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMPm]?]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFRm͒+[?]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAIm͒)Z=[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGAm?]!@anon-20191002_181700-349:localhost:8800IPTJJENAYSmsY?]!@anon-20191002_181700-348:localhost:8800KYSIYINERZmVX?]!@anon-20191002_181700-347:localhost:8800CFRSANQZYUm5kW?]!@anon-20191002_181700-346:localhost:8800CIUYDTNROPm5hV?]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHAm U?]!@anon-20191002_181700-343:localhost:8800QPHBRHJQMLmT?]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXPm„S?]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMWm̢VR=[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKNm?]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOHm̑*Q?]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBDmoP?]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLFmSO?]!@anon-20191002_181700-336:localhost:8800OFRRIKPQISmRN?]!@anon-20191002_181700-335:localhost:8800WEGENLHOLImMM?]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYYmKL?]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUm.K?]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGPmJ?]!@anon-20191002_181700-331:localhost:8800COONNUXFOLm$I?]!@anon-20191002_181700-330:localhost:8800TFGJMHITULmͺH=[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCBm?]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLSm˟eG?]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUOmˈ F?]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHCmnE?]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYTmPD?]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGSmHC?]!@anon-20191002_181700-324:localhost:8800KKATIXOBNFm&B?]!@anon-20191002_181700-323:localhost:8800BHOVENVWZCmA?]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTm @?]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCm??]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBm>=[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCm?]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAm=?]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJmʳQ3 e!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levels$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTci=Q3 e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.power_levels$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsi<Q3 e!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU ;Q']e!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY :Q']e!nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c 9Q']e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcc8Q' e!RPfffkmSEbWggEjnoI:localhost:8800m.room.create$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIc7Q' e!nxLxsxzliamzflrEBs:localhost:8800m.room.create$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQc6Q' e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.create$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc 5Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 4Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-269:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 3Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-268:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36oo2Q? e!egbhiBqOGhloZzopol:localhost:8800m.room.history_visibility$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMg1Q/ e!egbhiBqOGhloZzopol:localhost:8800m.room.join_rules$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agi0Q3 e!egbhiBqOGhloZzopol:localhost:8800m.room.power_levels$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY /Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Ac.Q' e!egbhiBqOGhloZzopol:localhost:8800m.room.create$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg -Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$vB9qJoYdYSyxUHqoWm4X5tLXhkzmY9ELabFFbawF5Lc ,Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU +Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1kg*Q/ e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM )Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEo(Q? e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibility$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBog'Q/ e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgi&Q3 e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk %Q']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Qc$Q' e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.create$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU #Q']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-264:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzoo"Q? e!XNfwczePlyYFWLCaui:localhost:8800m.room.history_visibility$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQg!Q/ e!XNfwczePlyYFWLCaui:localhost:8800m.room.join_rules$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4i Q3 e!XNfwczePlyYFWLCaui:localhost:8800m.room.power_levels$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI Q']e!XNfwczePlyYFWLCaui:localhost:8800m.room.member@anon-20191002_181700-263:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4 a} { y w u sqomkigeca~eeQ$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800~ eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~~eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~}eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~|eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~{eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800~zeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800~yeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~xeeQ$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800~weeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800~veeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~ueeQ$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800~teeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800~seeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8!XNfwczePlyYFWLCaui:localhost:8800~reeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI!XNfwczePlyYFWLCaui:localhost:8800~qeeQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800 Z`8pH h@ X 0  h @  | U .  k D  X 0 xP(`8pH xP(X0h@'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800K'Q!jveVPZSXJOJyNDebPO:localhost:8800J'Q!jveVPZSXJOJyNDebPO:localhost:8800I'Q!jveVPZSXJOJyNDebPO:localhost:8800H'Q!jveVPZSXJOJyNDebPO:localhost:8800G'Q!jveVPZSXJOJyNDebPO:localhost:8800F'Q!jveVPZSXJOJyNDebPO:localhost:8800E'Q!jveVPZSXJOJyNDebPO:localhost:8800D'Q!jomrpmwwQQtghscizn:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800X&Q!jYzridjeihmwPBuwLb:localhost:8800W&Q!jYzridjeihmwPBuwLb:localhost:8800V&Q!jYzridjeihmwPBuwLb:localhost:8800U&Q!jYzridjeihmwPBuwLb:localhost:8800T&Q!jYzridjeihmwPBuwLb:localhost:8800S&Q!jYzridjeihmwPBuwLb:localhost:8800R&Q!jYzridjeihmwPBuwLb:localhost:8800Q&Q!jYzridjeihmwPBuwLb:localhost:8800P&Q!jYzridjeihmwPBuwLb:localhost:8800O&Q!jYzridjeihmwPBuwLb:localhost:8800N&Q!jYzridjeihmwPBuwLb:localhost:8800M&Q!jYzridjeihmwPBuwLb:localhost:8800L&Q!jYzridjeihmwPBuwLb:localhost:8800K&Q!jYzridjeihmwPBuwLb:localhost:8800J&Q!jYzridjeihmwPBuwLb:localhost:8800I'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 V'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 U'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 T'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 S'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 R'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 Q'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 P'Q!jIfvTrwedrWLubsnlM:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800  g 4 h5 g31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElsOmlIcVhGQ2wyTEkzVzcKMDAyZnNpZ25hdHVyZSCzJfmtbG81Wrm2vimRJic-dEVRDEDntZmOEo-h59M2rwo+1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMuU1k6WlRjNHMzOW4zWC4KMDAyZnNpZ25hdHVyZSCm1CYMbpJeBEIlSqvHQLlTmNccB_w09A-mofLOOCns2wo)1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGh1Q2kwWEtidWhRXjBEdToKMDAyZnNpZ25hdHVyZSAI9iPJyhUOhKPHzi0-DhXtv-V-HO0MnRbZvorFZptFhQo&1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLbHpJaVAweDZDd3JiPVUKMDAyZnNpZ25hdHVyZSAsElnH6_lTGWgAUIPCduvm_LujyRBeS5_Rv8VYp_0n3Ao*1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE6ZkwqeXVWQmhvWlleLnMKMDAyZnNpZ25hdHVyZSA8StBFwTVrjsV83F87BN0vcrrxEk92vGKl74R0SlFJRwo(1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg4SzFYZkhSVzlsbjJpalcKMDAyZnNpZ25hdHVyZSBxpaFTVrHdAtO3AwwUhNdQv_6hppCrsEFY91uIeRE0Ywo'1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVlc0phJitwKngyYURqODoKMDAyZnNpZ25hdHVyZSAp6TSwG3iNBrpimH2OUgfOfHhlH7rlFKNTnyY4t3P88wo%1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAo$1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygo#1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_go!1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgo"1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwo,  4 k 9md]c@anon-20191002_181700-277:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgo127.0.0.1d]c@anon-20191002_181700-285:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE6ZkwqeXVWQmhvWlleLnMKMDAyZnNpZ25hdHVyZSA8StBFwTVrjsV83F87BN0vcrrxEk92vGKl74R0SlFJRwo127.0.0.1d]c@anon-20191002_181700-284:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg4SzFYZkhSVzlsbjJpalcKMDAyZnNpZ25hdHVyZSBxpaFTVrHdAtO3AwwUhNdQv_6hppCrsEFY91uIeRE0Ywo127.0.0.1d]c@anon-20191002_181700-283:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGh1Q2kwWEtidWhRXjBEdToKMDAyZnNpZ25hdHVyZSAI9iPJyhUOhKPHzi0-DhXtv-V-HO0MnRbZvorFZptFhQo127.0.0.1d]c@anon-20191002_181700-282:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVlc0phJitwKngyYURqODoKMDAyZnNpZ25hdHVyZSAp6TSwG3iNBrpimH2OUgfOfHhlH7rlFKNTnyY4t3P88wo127.0.0.1d]c@anon-20191002_181700-281:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAo127.0.0.1d]c@anon-20191002_181700-280:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygo127.0.0.1a[a@anon-20191002_181700-27:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gM0NwcHUrVUx4UUw0Mm5sQQowMDJmc2lnbmF0dXJlICKk1N0RA3UlWzHS4iiI4hjVKPdmZaAItbJeLOZyTZePCg127.0.0.1d]c@anon-20191002_181700-279:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgo127.0.0.1d]c@anon-20191002_181700-278:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_go127.0.0.1   *t eQau$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1293}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk"], "type": "m.room.join_rules", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041612747, "hashes": {"sha256": "NDEcnjd/mIlVlw1fzS587spSdk7I5Z2fHuW+k99JIlE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d3Chz8+1bGzPkYPJoP4Nj+J/oaCcmD9X21EHyN5KdGO1zWouosJDiL+SeT5lP4b8/Qh7VTNQTzUir8eyUDPxAw"}}, "unsigned": {"age_ts": 1570041612747}}k eQac$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1292}{"auth_events": ["$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "type": "m.room.power_levels", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"users": {"@anon-20191002_181700-265:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041611948, "hashes": {"sha256": "xMQwlwKv9bSijdZ6e0+ftogOTiNyFGxbJoJgyiHM36k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sBWtkiF38uiyi/Or8a7xwLyAIs3b83YypTd1CcHJ3y7b0ccienzjQo98czIyuiQTum/FaOt3D0WWLWpT7T9ICg"}}, "unsigned": {"age_ts": 1570041611948}}v eQay$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1291}{"auth_events": ["$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU"], "prev_events": ["$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-265", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-265:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041611401, "hashes": {"sha256": "tMEjjN3idwIlC6ZoK12mTSfrwSjIVn4nT/Rdryoh9Ss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L3QLGBM4TEBdXd7Dua2kVVn5H21vfiO6ZIaAF+fVwnu335lykGMOXys/OMaETbfH6bSqcgNux1JS3vRg0NDDBQ"}}, "unsigned": {"age_ts": 1570041611401}}i eQa_$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1290}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-265:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041610204, "hashes": {"sha256": "+B1UMGckwMqIgDHmRq1ZuahzhpdoL0r597LpH79mAgY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eiJJxe0F0qbPSAShCw38FDLUM1xj5grM8LK+XinH2xz/ngp93zOfpmC8oA+O0fAZ720CrtdCtTRtCiQGtsqBDw"}}, "unsigned": {"age_ts": 1570041610204}} N $ | J  V P  \ *pb0 h6 o= uC {>IOU$ ]+ v Dj8 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc 1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls|1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k}1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY-0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh081e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEV1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw:1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs21e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksG1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER061e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ01e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs[1e$VhwJs5hUHP38W9aPTIvuOswl3l0Q6Ny9pFeYCBZ-hMc-1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwH1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw58'0e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2Kka1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM51e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gY1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ041e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM.1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStMO1e$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsx1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRccj1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIu1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik@1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8M1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC01e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wT1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncY1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r0A1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 #1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AC1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM .1e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawl1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ 1e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU w1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 01e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE '1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU b1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s ;1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ[1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec Vc;sK# [ 3 k C  { S ,  d <  t L $\5rK#]5 mE}V/iB'Q!QWLJZmJqjWZjVOjdYF:localhost:8800v'Q!QWLJZmJqjWZjVOjdYF:localhost:8800u'Q!TcCLuIBUrtFqghDgay:localhost:88009'Q!TcCLuIBUrtFqghDgay:localhost:88008&Q!TWETXUgfFZafDdbqLS:localhost:8800:&Q!TWETXUgfFZafDdbqLS:localhost:88009&Q!TWETXUgfFZafDdbqLS:localhost:88008'Q!TSFcaXDBqrCREHRHxv:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800'Q!THHfVSOSWiBQTHRAnJ:localhost:8800,&Q!SyIWYOmcGiASNkPCTB:localhost:8800r&Q!SyIWYOmcGiASNkPCTB:localhost:8800q'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!StEnDjTJToXKXsOHNf:localhost:8829'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:88003'Q!SnROoiDBapNNtMmKnT:localhost:8800'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SfYtaUhCFosNfHfUVm:localhost:8800p'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800T&Q!SBEprlZiuliFNSfNmz:localhost:8800S'Q!RmwbYvIIQyPlHlClty:localhost:8800 &Q!RmdhCjvouVLmyIHjaM:localhost:8800D&Q!RmdhCjvouVLmyIHjaM:localhost:8800C&Q!RmdhCjvouVLmyIHjaM:localhost:8800B&Q!RmdhCjvouVLmyIHjaM:localhost:8800A&Q!RmdhCjvouVLmyIHjaM:localhost:8800@&Q!RmdhCjvouVLmyIHjaM:localhost:8800?&Q!RmdhCjvouVLmyIHjaM:localhost:8800>'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:88007'Q!RSLvuCuAqKQQrKCxNq:localhost:88006'Q!RSLvuCuAqKQQrKCxNq:localhost:88005'Q!RPfffkmSEbWggEjnoI:localhost:88005'Q!RPfffkmSEbWggEjnoI:localhost:88003'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800X'Q!RDEAXrqXQizuhCUFPq:localhost:8800W'Q!RDEAXrqXQizuhCUFPq:localhost:8800V'Q!QyLUggxrTnULUAOseq:localhost:8800Q'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:8800T'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:8800'Q!PcvmCDeVUSyJbXpTig:localhost:8800$'Q!PcvmCDeVUSyJbXpTig:localhost:8800#'Q!PcvmCDeVUSyJbXpTig:localhost:8800"'Q!PVyTvKbqnjSXfGWAMy:localhost:8800'Q!PUIxAaiCnbqaVbawGu:localhost:8800#'Q!PUIxAaiCnbqaVbawGu:localhost:8800"'Q!PQZMTVTeCYqMZwkHvW:localhost:8800&'Q!PQZMTVTeCYqMZwkHvW:localhost:8800%'Q!PQZMTVTeCYqMZwkHvW:localhost:8800$'Q!PHkVrXAyfGkFtzSagu:localhost:8800l'Q!PHkVrXAyfGkFtzSagu:localhost:8800k'Q!PEcOacvKaBKpXjytEF:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:88004'Q!PCgUmZOwWmtDsuFqXg:localhost:88002'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800&Q!OaCEdDAiatpwYcagUb:localhost:8800*&Q!OaCEdDAiatpwYcagUb:localhost:8800)&Q!OaCEdDAiatpwYcagUb:localhost:8800( !s 1 < " 1 _ bHu 7g" eQ']$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800 eQ']$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800meQ? $-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibilitymeQ? $aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.history_visibilitymeQ? $ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibilityeeQ/ $p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rulese eQ/ $Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.join_rulese eQ/ $0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rulesg eQ3 $wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levelsg eQ3 $-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.power_levelsg eQ3 $gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels eQ']$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:8800 eQ']$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800 eQ']$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800aeQ' $ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800m.room.createaeQ' $DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800m.room.createaeQ' $-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.create eQ']$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800 eQ']$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-269:localhost:8800 eQ']$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-268:localhost:8800meQ? $IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800m.room.history_visibilitye~eQ/ $YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800m.room.join_rulesg}eQ3 $bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800m.room.power_levels |eQ']$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800a{eQ' $vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800m.room.create zeQ']$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800 yeQ']$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800exeQ/ $A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules weQ']$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800mveQ? $X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibilityeueQ/ $tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rulesgteQ3 $WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels seQ']$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-265:localhost:8800 $ w$6eQay$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1296}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE"], "type": "m.room.join_rules", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"join_rule": "invite"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041615964, "hashes": {"sha256": "m4BU1iaz8H0s15TAq0cOm/7KenbPcjqepOrSn4iHWWQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kvq56pyijL/QI0vYBTUgXtbrQMB7/iimEWLQJ3xET78s1TRToJ7OPw72laSr4zgySKAM8IkuYYhVJP/7zFBECg"}}, "unsigned": {"age_ts": 1570041615964, "replaces_state": "$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg"}}eQa7$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1295}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-266", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-266:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041615477, "hashes": {"sha256": "0kmO8vWcCLrapiKbPHWcd4pXwLndqZexrE5tXDKfgmI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "maO1c1YYmbksdGRgo3+jKLBGiGeSy3o6fgedDTT8Z5lVw2ss2B1bAHGnjA7ksln0vM9Ww+zMfT1CzbOngonuBA"}}, "unsigned": {"age_ts": 1570041615477, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-265:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-265:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-265", "avatar_url": null}, "sender": "@anon-20191002_181700-265:localhost:8800"}]}} eQa$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "stream_ordering": 1294}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg"], "type": "m.room.history_visibility", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041614073, "hashes": {"sha256": "k6RBU+eJ22IL+TiL7wW1ZNLCKU+NSdT87Cu8xW+iUsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wHpadA2POTOyF4p9s40ARUqZmswghtmCeYg/Adyxltdhg+2BPmf5xMN7grIoS+NcArE1VKhHex/GTxjKTAQaCw"}}, "unsigned": {"age_ts": 1570041614073}} u(%   F C)28`1u8Q']ee,!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcpQ? e+!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibility$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acpQ? e*!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.history_visibility$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYp Q? e)!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibility$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0h Q/ e(!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0h Q/ e'!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.join_rules$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwh Q/ e&!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rules$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUj Q3 e%!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levels$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcjQ3 e$!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.power_levels$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsjQ3 e#!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU Q']e"!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY Q']e!!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc Q']e !nxLxsxzliamzflrEBs:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cdQ' e!RPfffkmSEbWggEjnoI:localhost:8800m.room.create$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIdQ' e!nxLxsxzliamzflrEBs:localhost:8800m.room.create$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQdQ' e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.create$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc8Q']ee!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-269:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U ~Q']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-268:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36op}Q? e!egbhiBqOGhloZzopol:localhost:8800m.room.history_visibility$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMh|Q/ e!egbhiBqOGhloZzopol:localhost:8800m.room.join_rules$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agj{Q3 e!egbhiBqOGhloZzopol:localhost:8800m.room.power_levels$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY zQ']e!egbhiBqOGhloZzopol:localhost:8800m.room.member@anon-20191002_181700-267:localhost:8800$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5AdyQ' e!egbhiBqOGhloZzopol:localhost:8800m.room.create$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg8xQ']ee!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k8wQ']ee!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEvQ/ ee!KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg uQ']e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.member@anon-20191002_181700-266:localhost:8800$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEptQ? e!KdOYYnOuwAyQzqwUki:localhost:8800m.room.history_visibility$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBohsQ/ e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.join_rules$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgjrQ3 e !KdOYYnOuwAyQzqwUki:localhost:8800m.room.power_levels$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk pX \  o ) ':R hp&$e3Q ]$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsm.room.power_levels!PCgUmZOwWmtDsuFqXg:localhost:8800m'm"7@anon-20191002_181700-270:localhost:8800&#e3Q ]$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUm.room.power_levels!nxLxsxzliamzflrEBs:localhost:8800m%m!]@anon-20191002_181700-270:localhost:8800 "e'Q ]$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYm.room.member!RPfffkmSEbWggEjnoI:localhost:8800mm4@anon-20191002_181700-271:localhost:8800 !e'Q ]$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcm.room.member!PCgUmZOwWmtDsuFqXg:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q ]$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cm.room.member!nxLxsxzliamzflrEBs:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q  ]$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIm.room.create!RPfffkmSEbWggEjnoI:localhost:8800mme@anon-20191002_181700-271:localhost:8800 e'Q  ]$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQm.room.create!nxLxsxzliamzflrEBs:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q  ]$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcm.room.create!PCgUmZOwWmtDsuFqXg:localhost:8800mm@anon-20191002_181700-270:localhost:8800 e'Q ] $HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkm.room.member!egbhiBqOGhloZzopol:localhost:8800 m |m <@anon-20191002_181700-267:localhost:8800 e'Q ]$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7Um.room.member!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-269:localhost:8800!e)Q ]$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUm.room.message!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-267:localhost:8800 e'Q ]$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36om.room.member!egbhiBqOGhloZzopol:localhost:8800mmy@anon-20191002_181700-268:localhost:8800,e?Q ]$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMm.room.history_visibility!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-267:localhost:8800$e/Q ]$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agm.room.join_rules!egbhiBqOGhloZzopol:localhost:8800mqmd@anon-20191002_181700-267:localhost:8800&e3Q ]$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaYm.room.power_levels!egbhiBqOGhloZzopol:localhost:8800mm@anon-20191002_181700-267:localhost:8800 e'Q ]$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5Am.room.member!egbhiBqOGhloZzopol:localhost:8800mWm@anon-20191002_181700-267:localhost:8800 e'Q  ]$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgm.room.create!egbhiBqOGhloZzopol:localhost:8800m~m@anon-20191002_181700-267:localhost:8800 e'Q ] $a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUm.room.member!KdOYYnOuwAyQzqwUki:localhost:8800 m{m2@anon-20191002_181700-266:localhost:8800!e)Q ] $oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpcm.room.message!KdOYYnOuwAyQzqwUki:localhost:8800 mym2@anon-20191002_181700-265:localhost:8800 e'Q ]$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1km.room.member!KdOYYnOuwAyQzqwUki:localhost:8800mm@anon-20191002_181700-266:localhost:8800$e/Q ]$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScMm.room.join_rules!KdOYYnOuwAyQzqwUki:localhost:8800m\m%@anon-20191002_181700-265:localhost:8800 e'Q ]$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSEm.room.member!KdOYYnOuwAyQzqwUki:localhost:8800mum@anon-20191002_181700-265:localhost:8800,e?Q ]$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBom.room.history_visibility!KdOYYnOuwAyQzqwUki:localhost:8800mm%@anon-20191002_181700-265:localhost:8800$ e/Q ]$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgm.room.join_rules!KdOYYnOuwAyQzqwUki:localhost:8800mmʙ@anon-20191002_181700-265:localhost:8800 ~z v r n j fb^ZVRNJFeeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800 eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800 eeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800 eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800 eeQ$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800 eeQ$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800eeQ$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800eeQ$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800eeQ$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800eeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800~eeQ$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800}eeQ$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM!KdOYYnOuwAyQzqwUki:localhost:8800|eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800{eeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800zeeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800 \ (I\ieQa_$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1300}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-267:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041621630, "hashes": {"sha256": "8Z8f1bqNBg7UV1F8v1b1Rl6ZYrb4fjakIOk+pfn6/po"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uJPya1yZ0Z9GKzaQHzK0YcGUfuDeFkFnZjXaoQkF3NTJFzmtztQ9g5cXIJLlOvyiVeT46/IFhO03sgoXVoblDg"}}, "unsigned": {"age_ts": 1570041621630}}[eQaC$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 286, "stream_ordering": 1299}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k"], "prev_events": ["$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-266:localhost:8800", "content": {"membership": "leave"}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-266:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041618811, "hashes": {"sha256": "/teL7OwpLxpVCtxCdeqIg4AEVsdEH61CdjGPt/RUnac"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d964JD5FyIH9zc/VfrKIGulAy6+9xvpL5NcoYwr2Si4aduol8bCq5o1OEKx6kmBvMp7IfzQce2aY0Cf8gDHYAg"}}, "unsigned": {"age_ts": 1570041618811, "replaces_state": "$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k"}}eQy$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 285, "txn_id": "141", "stream_ordering": 1298}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q"], "prev_events": ["$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k"], "type": "m.room.message", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-265:localhost:8800", "content": {"msgtype": "m.text", "body": "before leave"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041618041, "hashes": {"sha256": "UDnAof7eT56kobFozhddasJSwhN4t67jSdqMH86ZJiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0zKnWIdVAl26EwdIa5PJT9alGLEZ2V5Zv51ndZ8k+KgKXvv/DNEFCKApJzO07Dwths4H2Iw+wqg6Hwh2xI5hDA"}}, "unsigned": {"age_ts": 1570041618041}}HeQa$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800{"token_id": 286, "stream_ordering": 1297}{"auth_events": ["$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk", "$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU", "$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM", "$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE"], "prev_events": ["$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM"], "type": "m.room.member", "room_id": "!KdOYYnOuwAyQzqwUki:localhost:8800", "sender": "@anon-20191002_181700-266:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-266", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-266:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041617166, "hashes": {"sha256": "oabQS2xtAjUQB73g5FyeyizHB+ssKNtG/nIZtT6HvOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uRcs/SMEAYmxuWUQLbp6Hp16kVaf/AvXFVkHEHXxkV9tMvF/pqbo3nnmk9cyHwuUKQwqo/oFMnh/x2cT22SMDA"}}, "unsigned": {"age_ts": 1570041617166, "replaces_state": "$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE"}}  weZ+eQaA$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1324}{"auth_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs", "$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY"], "type": "m.room.member", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"membership": "leave"}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041639706, "hashes": {"sha256": "C20ZpNWtksrC7xMnQkQYOw/wxWqQDMLIQbci+eAuHFQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/6RCG2eOyRHVC3/FyxjaiP/MY/wTbEmbCWvaEiRCiyQ2+DtlTc1DTasM/ZURIuL+eJvn+XBWVMdgyGvm3CK1DA"}}, "unsigned": {"age_ts": 1570041639706, "replaces_state": "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"}}*eQa$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1323}{"auth_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc", "$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0"], "type": "m.room.history_visibility", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041637861, "hashes": {"sha256": "rvRZcnUUwK/mpvMO5pBB8lbIjFZL4J+fEDaLNGrD+DQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9PuuYBSr7nmO7XP9wfwRlkNwGFfrGm1JW1W7Nfc2YjBT26LnsnjS80psUJSRqR0mpdXC04qbprmAoC0VtPF3Ag"}}, "unsigned": {"age_ts": 1570041637861}})eQa$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1322}{"auth_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs", "$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw"], "type": "m.room.history_visibility", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041637860, "hashes": {"sha256": "Nt3hn7Q3a0Ll5upIzDUhIplaCWn5E/8RV+feSmrDDbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7wTbSz+R2L3t1LoebA98DYPru0GSrWRM/25PKPXYJ7McgynPDSggGof6c99OIha8sJ431Mp4WobXftvQaw9CA"}}, "unsigned": {"age_ts": 1570041637860}}(eQa$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1321}{"auth_events": ["$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU", "$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ", "$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "prev_events": ["$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU"], "type": "m.room.history_visibility", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041637858, "hashes": {"sha256": "KHQieaeeoSqRgTv8TRQsy7ff7893EA5WTmKMuSZcxY4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X7wOXsOv1LeJiyE+n3UJsoAxwG/t+8KYaPoc+7u4cIziMXRmlywOoqsKwYrmt5fRNE2m3zZYiQX0tgYg04loCw"}}, "unsigned": {"age_ts": 1570041637858}} PT)}R' { P % y N # w L ! u J  s H qFoDmBk@i>g<e:c:*Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oZGRyBAkNDrEeiAqWL:localhost:8800 *Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!oXKJArsPmtgaYANBrg:localhost:8800*Q!nxLxsxzliamzflrEBs:localhost:8800)/*Q!nxLxsxzliamzflrEBs:localhost:8800&,*Q!nxLxsxzliamzflrEBs:localhost:8800#)*Q!nxLxsxzliamzflrEBs:localhost:8800 &*Q!nxLxsxzliamzflrEBs:localhost:8800$*Q!nvclDopiBLEOKBIheH:localhost:8800DJ*Q!nvclDopiBLEOKBIheH:localhost:8800CI*Q!nvclDopiBLEOKBIheH:localhost:8800BH*Q!nvclDopiBLEOKBIheH:localhost:8800AG*Q!nvclDopiBLEOKBIheH:localhost:8800@F*Q!ntuwVdUxfzNIhIKYaz:localhost:8800:<*Q!ntuwVdUxfzNIhIKYaz:localhost:88009;*Q!ntuwVdUxfzNIhIKYaz:localhost:88008:*Q!ntuwVdUxfzNIhIKYaz:localhost:880079*Q!ntuwVdUxfzNIhIKYaz:localhost:880068*Q!ntuwVdUxfzNIhIKYaz:localhost:880057*Q!ntuwVdUxfzNIhIKYaz:localhost:880046*Q!ntuwVdUxfzNIhIKYaz:localhost:880035*Q!ntuwVdUxfzNIhIKYaz:localhost:880024*Q!ntuwVdUxfzNIhIKYaz:localhost:880013*Q!ntuwVdUxfzNIhIKYaz:localhost:880002*Q!ntuwVdUxfzNIhIKYaz:localhost:8800/1*Q!ntuwVdUxfzNIhIKYaz:localhost:8800.0*Q!ntuwVdUxfzNIhIKYaz:localhost:8800-/*Q!ntuwVdUxfzNIhIKYaz:localhost:8800,.*Q!ntuwVdUxfzNIhIKYaz:localhost:8800+-*Q!ntuwVdUxfzNIhIKYaz:localhost:8800*,*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 1*Q!nfxDdcgDfooxyiAzaB:localhost:8800 0*Q!nfxDdcgDfooxyiAzaB:localhost:8800 /*Q!nfxDdcgDfooxyiAzaB:localhost:8800 .*Q!nfxDdcgDfooxyiAzaB:localhost:8800 -*Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E *Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D M ~ L 9 ' R S_  X &!   k _j -eq? wFMY38q? - w E1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os>1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg =1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ_1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew \1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 j1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMG1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY f1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYS1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 41e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW041e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcD1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs81e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak`1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo01e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI'1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcu1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo 1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEv1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEH1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM61e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok*1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10m1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY91e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg"11e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 E1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgz1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsM1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw.1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI 1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY-1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo J1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg &  eQa$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1304}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag"], "type": "m.room.history_visibility", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041624540, "hashes": {"sha256": "/BfBzEJ9RZ9fZdVnTJCH3ShXaYQ2FxtIH/tKlketDXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D4cUO/JnC3GWEBOlMH2CisDdIlGrwaX0EXSGI0AsxVKi5yk4pNgJI5xzxwS25t2UL5zZtv+2pZv10MkuUNujCQ"}}, "unsigned": {"age_ts": 1570041624540}}teQau$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1303}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY"], "type": "m.room.join_rules", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041623665, "hashes": {"sha256": "ptJwR7eukAxljrqJNIkX0zANdHW9bFJRAbvehr6KxhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pojip8CPd2TZKIKbd4WL/yw4dCsqJMNcTEUH9XQuFpm0ZndDvKOGRgX2gx1M2KJ/gm+ldBD9RZqpeDyOi8NEDA"}}, "unsigned": {"age_ts": 1570041623665}}keQac$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1302}{"auth_events": ["$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "type": "m.room.power_levels", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"users": {"@anon-20191002_181700-267:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041622923, "hashes": {"sha256": "4/zfoMxAh8mrIYUAQ2zHYwtL0DiDubdhGpbDVVFvrkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nTa61KivznYRWsO7U25pdz7Dd7aE9+DPNCswrWPLBt1Ccuya3rgNUcRd3eOOLbG/ey59APiBENSUBcGWlDC8Dg"}}, "unsigned": {"age_ts": 1570041622923}}veQay$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "stream_ordering": 1301}{"auth_events": ["$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg"], "prev_events": ["$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-267", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-267:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041622359, "hashes": {"sha256": "AoAvCf3bGDXvo9axELHMR6gNom+nbQLkL1p8uJg8Krk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kPXovtVWbXPbcKjZ8TjjcAiuA/BYs5wumlBZWQajpdsMTfgl5GhUB6j8npcP09kf3kFxKuYEGdcUEJnfnufcCQ"}}, "unsigned": {"age_ts": 1570041622359}} a} { y w u sqomkigeca~.eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~-eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800~,eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800~+eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~*eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800~)eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~(eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~'eeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800~&eeQ$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~%eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800~$eeQ$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~#eeQ$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~"eeQ$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~!eeQ$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~ eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800~eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800~eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800~eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800~eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A!egbhiBqOGhloZzopol:localhost:8800~eeQ$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg!egbhiBqOGhloZzopol:localhost:8800 -RM H C > 9 4/*|%w rmhc TJQeD!rJhSRzmWBQHlIhuDXT:localhost:8800$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68TIQeC!rJhSRzmWBQHlIhuDXT:localhost:8800$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_ITHQeB!rJhSRzmWBQHlIhuDXT:localhost:8800$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcTGQeA!rJhSRzmWBQHlIhuDXT:localhost:8800$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUITFQe@!rJhSRzmWBQHlIhuDXT:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owTEQe?!rJhSRzmWBQHlIhuDXT:localhost:8800$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4TDQe>!fsbkkRBZlUcBVVfMME:localhost:8800$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0TCQe=!fsbkkRBZlUcBVVfMME:localhost:8800$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4TBQeQe8!bzPCFeFSMbCESvNbxl:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoT=Qe7!bzPCFeFSMbCESvNbxl:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgT<Qe6!bzPCFeFSMbCESvNbxl:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMT;Qe5!bzPCFeFSMbCESvNbxl:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWET:Qe4!bzPCFeFSMbCESvNbxl:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78T9Qe3!bzPCFeFSMbCESvNbxl:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUET8Qe2!bzPCFeFSMbCESvNbxl:localhost:8800$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkT7Qe1!bzPCFeFSMbCESvNbxl:localhost:8800$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwT6Qe0!bzPCFeFSMbCESvNbxl:localhost:8800$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsT5Qe/!bzPCFeFSMbCESvNbxl:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQT4Qe.!bzPCFeFSMbCESvNbxl:localhost:8800$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohET3Qe-!RPfffkmSEbWggEjnoI:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIT2Qe,!PCgUmZOwWmtDsuFqXg:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YT1Qe+!RPfffkmSEbWggEjnoI:localhost:8800$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acT0Qe*!PCgUmZOwWmtDsuFqXg:localhost:8800$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYT/Qe)!nxLxsxzliamzflrEBs:localhost:8800$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0T.Qe(!RPfffkmSEbWggEjnoI:localhost:8800$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0T-Qe'!PCgUmZOwWmtDsuFqXg:localhost:8800$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwT,Qe&!nxLxsxzliamzflrEBs:localhost:8800$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUT+Qe%!RPfffkmSEbWggEjnoI:localhost:8800$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcT*Qe$!PCgUmZOwWmtDsuFqXg:localhost:8800$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbsT)Qe#!nxLxsxzliamzflrEBs:localhost:8800$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUT(Qe"!RPfffkmSEbWggEjnoI:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYT'Qe!!PCgUmZOwWmtDsuFqXg:localhost:8800$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcT&Qe !nxLxsxzliamzflrEBs:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cT%Qe!RPfffkmSEbWggEjnoI:localhost:8800$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIT$Qe!nxLxsxzliamzflrEBs:localhost:8800$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQT#Qe!PCgUmZOwWmtDsuFqXg:localhost:8800$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWcT"Qe!egbhiBqOGhloZzopol:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkT!Qe!egbhiBqOGhloZzopol:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7UT Qe!egbhiBqOGhloZzopol:localhost:8800$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUTQe!egbhiBqOGhloZzopol:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36oTQe!egbhiBqOGhloZzopol:localhost:8800$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 2T~Q$L ~ Q $ V)uH ^ 1  u J  p C  b 6 g: Z-zM l?^yk> +Q !lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 4 4,Q!lEJUJZxqZPKZetemiR:localhost:8800 3 3,Q!lEJUJZxqZPKZetemiR:localhost:8800 2 2,Q!lEJUJZxqZPKZetemiR:localhost:8800 1 1,Q!lEJUJZxqZPKZetemiR:localhost:8800 0 0,Q!lEJUJZxqZPKZetemiR:localhost:8800 / /,Q!lEJUJZxqZPKZetemiR:localhost:8800 . . ,,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800   ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800+Q !mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800+Q !mOrKBPhetifKHDmElM:localhost:8800,Q!mMsxpaIlcykPuOnDyl:localhost:8800 ~~,Q!mMsxpaIlcykPuOnDyl:localhost:8800 }},Q!mMsxpaIlcykPuOnDyl:localhost:8800||,Q!mMsxpaIlcykPuOnDyl:localhost:8800{{,Q!mMsxpaIlcykPuOnDyl:localhost:8800zz,Q!mMsxpaIlcykPuOnDyl:localhost:8800yy,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 +Q !laUExtszUaoCpZoyEq:localhost:8800 ,Q!mMsxpaIlcykPuOnDyl:localhost:8800xx,Q!mMsxpaIlcykPuOnDyl:localhost:8800ww,Q!mMsxpaIlcykPuOnDyl:localhost:8800vv+Q !mMsxpaIlcykPuOnDyl:localhost:8800uu,Q!mBQpGaIiadEuKBXfOw:localhost:8800MM,Q!mBQpGaIiadEuKBXfOw:localhost:8800LL,Q!mBQpGaIiadEuKBXfOw:localhost:8800KK,Q!mBQpGaIiadEuKBXfOw:localhost:8800JJ,Q!mBQpGaIiadEuKBXfOw:localhost:8800II,Q!mBQpGaIiadEuKBXfOw:localhost:8800HH,Q!mBQpGaIiadEuKBXfOw:localhost:8800GG+Q !mBQpGaIiadEuKBXfOw:localhost:8800FF*Q!loalEsWaTYwrVUNJLr:localhost:8800))*Q!loalEsWaTYwrVUNJLr:localhost:8800((*Q!loalEsWaTYwrVUNJLr:localhost:8800''*Q!loalEsWaTYwrVUNJLr:localhost:8800&&*Q!loalEsWaTYwrVUNJLr:localhost:8800%%)Q !loalEsWaTYwrVUNJLr:localhost:8800$$,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RR,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QQ,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PP,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OO,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NN+Q !lMRBkbYJDQHgdBZBFJ:localhost:8800MM,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 Y,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 8 8,Q!lEJUJZxqZPKZetemiR:localhost:8800 7 7,Q!lEJUJZxqZPKZetemiR:localhost:8800 6 6,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 5 5 2T~Q$L ~ Q $ V)uH ^ 1  u J  p C  b 6 g: Z-zM l?^yk> +Q !lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 4 4,Q!lEJUJZxqZPKZetemiR:localhost:8800 3 3,Q!lEJUJZxqZPKZetemiR:localhost:8800 2 2,Q!lEJUJZxqZPKZetemiR:localhost:8800 1 1,Q!lEJUJZxqZPKZetemiR:localhost:8800 0 0,Q!lEJUJZxqZPKZetemiR:localhost:8800 / /,Q!lEJUJZxqZPKZetemiR:localhost:8800 . . ,,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800   ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800  ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mTlCLZQCmfDuQsJxxp:localhost:8800+Q !mTlCLZQCmfDuQsJxxp:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800,Q!mOrKBPhetifKHDmElM:localhost:8800+Q !mOrKBPhetifKHDmElM:localhost:8800,Q!mMsxpaIlcykPuOnDyl:localhost:8800 ~~,Q!mMsxpaIlcykPuOnDyl:localhost:8800 }},Q!mMsxpaIlcykPuOnDyl:localhost:8800||,Q!mMsxpaIlcykPuOnDyl:localhost:8800{{,Q!mMsxpaIlcykPuOnDyl:localhost:8800zz,Q!mMsxpaIlcykPuOnDyl:localhost:8800yy,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 ,Q!laUExtszUaoCpZoyEq:localhost:8800 +Q !laUExtszUaoCpZoyEq:localhost:8800 ,Q!mMsxpaIlcykPuOnDyl:localhost:8800xx,Q!mMsxpaIlcykPuOnDyl:localhost:8800ww,Q!mMsxpaIlcykPuOnDyl:localhost:8800vv+Q !mMsxpaIlcykPuOnDyl:localhost:8800uu,Q!mBQpGaIiadEuKBXfOw:localhost:8800MM,Q!mBQpGaIiadEuKBXfOw:localhost:8800LL,Q!mBQpGaIiadEuKBXfOw:localhost:8800KK,Q!mBQpGaIiadEuKBXfOw:localhost:8800JJ,Q!mBQpGaIiadEuKBXfOw:localhost:8800II,Q!mBQpGaIiadEuKBXfOw:localhost:8800HH,Q!mBQpGaIiadEuKBXfOw:localhost:8800GG+Q !mBQpGaIiadEuKBXfOw:localhost:8800FF*Q!loalEsWaTYwrVUNJLr:localhost:8800))*Q!loalEsWaTYwrVUNJLr:localhost:8800((*Q!loalEsWaTYwrVUNJLr:localhost:8800''*Q!loalEsWaTYwrVUNJLr:localhost:8800&&*Q!loalEsWaTYwrVUNJLr:localhost:8800%%)Q !loalEsWaTYwrVUNJLr:localhost:8800$$,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800RR,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800QQ,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800PP,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800OO,Q!lMRBkbYJDQHgdBZBFJ:localhost:8800NN+Q !lMRBkbYJDQHgdBZBFJ:localhost:8800MM,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 Y,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lgejtcwlywOoIXwEgy:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 8 8,Q!lEJUJZxqZPKZetemiR:localhost:8800 7 7,Q!lEJUJZxqZPKZetemiR:localhost:8800 6 6,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!mTlCLZQCmfDuQsJxxp:localhost:8800 ,Q!lEJUJZxqZPKZetemiR:localhost:8800 5 5  &IeQ?A$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk!egbhiBqOGhloZzopol:localhost:8800{"stream_ordering": 1308}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-267:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041629308, "hashes": {"sha256": "qTxOabzjZQKqDWSLQqv/bEWrjjMWTH0nUUdpC+2j3L0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TqM2Q7yTka4zh/RheTO6Br2jMwXRTx79f1tjipfEGBlvNlQaXNrH8mQztd+Eq7bCrbJFehwrdeqthY+3/NLYDQ"}}, "unsigned": {"age_ts": 1570041629308, "replaces_state": "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"}}VeQa9$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800{"token_id": 289, "stream_ordering": 1307}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag"], "prev_events": ["$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-269:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-269", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-269:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041627339, "hashes": {"sha256": "45RiAtG1QR7jmXTuAM5G94mr9nXr4W9Z3t+BWSZWqOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sy07Bn6J72bNDwn8FF6k17wM7mTO023DWdqCJ+4beTxJVnONYjCOE8m8+rnCXcYAf8R3wiet5C1X1wJI5p15Bg"}}, "unsigned": {"age_ts": 1570041627339}}eQk$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800{"token_id": 287, "txn_id": "142", "stream_ordering": 1306}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A"], "prev_events": ["$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o"], "type": "m.room.message", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-267:localhost:8800", "content": {"body": "body1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041626852, "hashes": {"sha256": "8NpyCXlKSec5m2yU0POQgfEH4x7eDoLTy2mYnvfV+fU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DSi6P1Y6S41pq89u++1YsDq5KqE72RJW7xjiRkQ0X8dqIsnSaY8NgEFVkZkT1ol3nr05gJYJ8zIEzXULGTbQDg"}}, "unsigned": {"age_ts": 1570041626852}}VeQa9$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o!egbhiBqOGhloZzopol:localhost:8800{"token_id": 288, "stream_ordering": 1305}{"auth_events": ["$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY", "$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg", "$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag"], "prev_events": ["$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM"], "type": "m.room.member", "room_id": "!egbhiBqOGhloZzopol:localhost:8800", "sender": "@anon-20191002_181700-268:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-268", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-268:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041625872, "hashes": {"sha256": "TSvfwgPfs3C3sr82F/UZvGbIKeoo2/DxKTCsQlRAOKA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fFCmRAAN/0HIQ6PJZye737yacEz26+y/9So8xjfT6od3NhA6rfxx3/xCQYvVw1YMvX+a7FDhSCNjBtpIHnP3Dw"}}, "unsigned": {"age_ts": 1570041625872}} < Z x  % C a9Wu" @^| nN]@anon-20191002_181700-284:localhost:8800@anon-20191002_181700-284:localhost:8800 anon-20191002_181700-284nM]@anon-20191002_181700-283:localhost:8800@anon-20191002_181700-283:localhost:8800 anon-20191002_181700-283nL]@anon-20191002_181700-282:localhost:8800@anon-20191002_181700-282:localhost:8800 anon-20191002_181700-282nK]@anon-20191002_181700-281:localhost:8800@anon-20191002_181700-281:localhost:8800 anon-20191002_181700-281nJ]@anon-20191002_181700-280:localhost:8800@anon-20191002_181700-280:localhost:8800 anon-20191002_181700-280nI]@anon-20191002_181700-279:localhost:8800@anon-20191002_181700-279:localhost:8800 anon-20191002_181700-279nH]@anon-20191002_181700-277:localhost:8800@anon-20191002_181700-277:localhost:8800 anon-20191002_181700-277nG]@anon-20191002_181700-276:localhost:8800@anon-20191002_181700-276:localhost:8800 anon-20191002_181700-276nF]@anon-20191002_181700-273:localhost:8800@anon-20191002_181700-273:localhost:8800 anon-20191002_181700-273aE]w@anon-20191002_181700-272:localhost:8800@anon-20191002_181700-272:localhost:8800 Display NamenC]@anon-20191002_181700-270:localhost:8800@anon-20191002_181700-270:localhost:8800 anon-20191002_181700-270nB]@anon-20191002_181700-269:localhost:8800@anon-20191002_181700-269:localhost:8800 anon-20191002_181700-269nA]@anon-20191002_181700-268:localhost:8800@anon-20191002_181700-268:localhost:8800 anon-20191002_181700-268n?]@anon-20191002_181700-265:localhost:8800@anon-20191002_181700-265:localhost:8800 anon-20191002_181700-265n>]@anon-20191002_181700-264:localhost:8800@anon-20191002_181700-264:localhost:8800 anon-20191002_181700-264n=]@anon-20191002_181700-263:localhost:8800@anon-20191002_181700-263:localhost:8800 anon-20191002_181700-263n<]@anon-20191002_181700-261:localhost:8800@anon-20191002_181700-261:localhost:8800 anon-20191002_181700-261n;]@anon-20191002_181700-259:localhost:8800@anon-20191002_181700-259:localhost:8800 anon-20191002_181700-259qn:]@anon-20191002_181700-257:localhost:8800@anon-20191002_181700-257:localhost:8800 anon-20191002_181700-257n9]@anon-20191002_181700-254:localhost:8800@anon-20191002_181700-254:localhost:8800 anon-20191002_181700-254n8]@anon-20191002_181700-253:localhost:8800@anon-20191002_181700-253:localhost:8800 anon-20191002_181700-253n7]@anon-20191002_181700-252:localhost:8800@anon-20191002_181700-252:localhost:8800 anon-20191002_181700-252n6]@anon-20191002_181700-251:localhost:8800@anon-20191002_181700-251:localhost:8800 anon-20191002_181700-251n5]@anon-20191002_181700-250:localhost:8800@anon-20191002_181700-250:localhost:8800 anon-20191002_181700-250n4]@anon-20191002_181700-249:localhost:8800@anon-20191002_181700-249:localhost:8800 anon-20191002_181700-249n3]@anon-20191002_181700-248:localhost:8800@anon-20191002_181700-248:localhost:8800 anon-20191002_181700-248nD]@anon-20191002_181700-271:localhost:8800@anon-20191002_181700-271:localhost:8800 anon-20191002_181700-271 +gZ ^ k x ' 4 A N [ hu$1>Mgt#P]Q@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800P]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800P]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800P]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800N[Q@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800P]Q@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800P]Q@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800P]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800P]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800P]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800P]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800P]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800P]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800P]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800P]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800P]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800 Ly ; V $j ^ -s y g 5  M 8AmNT" \* G   b1G k9rA1e1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC01e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV01e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB81e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI0e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUd1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMX0e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM21e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE*1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0s1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE0e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoEj1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIr1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs0e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK881e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4P1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590z1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc 1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y41e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYge1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM{1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HoE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE\1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM=1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEM1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM61e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888/1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI-1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g0e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA?0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gy1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc0e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkF1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr00e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI#0e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk\1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMa1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wt1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAi1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08e1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg^1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w>1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I;1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY61e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g051e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMW0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo 0e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCsw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo<1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE 1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8 ,`m^ k x ' 4 C P ] ly(5DQz)P]Q@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800_P]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800^P]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800]N[Q@anon-20191002_181700-29:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800YP]Q@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800P]Q@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800P]Q@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800P]Q@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800~N[Q@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800P]Q@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800}P]Q@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800|P]Q@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800{P]Q@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800zP]Q@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800yP]Q@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800xP]Q@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800wP]Q@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800vP]Q@anon-20191002_181700-321:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800uP]Q@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800tN[Q@anon-20191002_181700-31:localhost:8800!xwoIOPTGmJIlTXakxC:localhost:8800P]Q@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800sP]Q@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800rP]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800qP]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800pP]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800mP]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800nP]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800oP]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800lN[Q@anon-20191002_181700-30:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800kP]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800jP]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800iP]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800gP]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hP]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800eP]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800fP]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800dP]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800cP]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800bP]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800aP]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800` E  &9Ev eQay$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1313}{"auth_events": ["$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc"], "prev_events": ["$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc"], "type": "m.room.member", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-270", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041632718, "hashes": {"sha256": "zP1xyH/MBBdjx9qhyP5glpdgYtoOXGgXlg3nnNi227o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OlAaCbIUiMFx6wk2YXQ/kzkiW8LfBB57g7DW4CmwVc039LeFtjavETCgnbRSnRYoPrW3m6uMcrbfxaQANd0ODg"}}, "unsigned": {"age_ts": 1570041632718}}veQay$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1312}{"auth_events": ["$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ"], "prev_events": ["$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ"], "type": "m.room.member", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-270", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041632720, "hashes": {"sha256": "YqO5K4py28xYuIlISfDHFobVHa1Sy9FbEsObvPwjEfY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "spdbWrj9uGA4tRj0pnvURCBNQXBNmbrsJ1ojDQQ7SSYiU4KcmZwDRBz2cB6ctZgiu9mZgfBFh6wl4ZdKExCvDA"}}, "unsigned": {"age_ts": 1570041632720}}ieQa_$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1311}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-271:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041631442, "hashes": {"sha256": "/NgSbL5NGLBnZDhhnq5Ay9QuCT/923OYzCHb5w5TrW8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q8AGtKRV44LM5Tjtuwr0VgRPHue8cb/+5AsuZvhE9knsdCMsVkMOR9S7/SQ1vAWoZWUw68bG6Mm/hBy8F6nRBQ"}}, "unsigned": {"age_ts": 1570041631442}}ieQa_$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1310}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-270:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041631441, "hashes": {"sha256": "cqgmNcz16mZEmOR3Up0yAFtqWRxT5rmJgq992H09izA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d4voPkphY6NHpe0rTnTIhMDlv7RSbFgiILBfthMIgG8ROECza0HqE0I+j0LGNnDZBvcTkphi2S53F9Kpt1uzDw"}}, "unsigned": {"age_ts": 1570041631441}}ieQa_$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1309}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-270:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041631440, "hashes": {"sha256": "ZkDNd2+Tk9acqTpXu4lMva6Ghge5grbLMjHreDfMIQM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MzeePuoSinmu8Np7myguHsvHzQAtsNikN7oEPoRjwUlNk/S5jll21p5pL7zQupMuKlwRzw29E3441NLUx5NvAA"}}, "unsigned": {"age_ts": 1570041631440}} A )q '? Y x F  ~ M   > !ZS!wE }L/`i78 b 0i70e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08#0e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s 1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV00e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnYv0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk0e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac]1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUV0e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g<1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk0e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADagM1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIo20e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo&1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc}1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY=1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks[0e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0P0e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk11e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52oE1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0K1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE0e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts80e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So6d1e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 S0e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04MI0e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I41e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8pj21e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8^1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv41e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w0e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ91e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg]1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIJ0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ1e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk:1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4I0e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwZ1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH0421e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&m?>l>=k=<j;:i:9h98g87f65e54d43c32b10a0/`/._.-^,+]+*\*)[)(Z'&Y&%X%$W$#V"!U! T SRQPONMLKJIHGFE D  C  B  A @?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM{LKJ~I~}H}|G{zFzyEyxDxwCwuBvsAtk@sr?rq>qp=po<on;nm:li9kg8jW7ih6hf5ge4fd3ec2db1ca0b`/a_.`^-_],^\+\[*[Z)ZY(YX'WV&VU%UT$TS#SR"RP!QP POONNMMLLKKJJIIHGEF?EDDCCBBAA@?>>==<<; ;: :9 86 70 65544332210//..--,,+*(~)"}('|'&{&%z%$y$#x"!w! v utsrqponmlkjihg f  e  d  c  b a`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!   k#eQac$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1316}{"auth_events": ["$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "type": "m.room.power_levels", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"users": {"@anon-20191002_181700-270:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041634343, "hashes": {"sha256": "75aX/ZnE4gApcBPXEAiKes5yndjz6t3I4u1pldB62Sg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s5XTJcJeApo7sgfdCLH6qez6EgPnVQjFSwWUQ6EUf+Glr8gmATiVoYvlBziBd7FOA1P9bOFJY3QIE25AeQnJAg"}}, "unsigned": {"age_ts": 1570041634343}}k"eQac$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1315}{"auth_events": ["$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ", "$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "prev_events": ["$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "type": "m.room.power_levels", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"users": {"@anon-20191002_181700-270:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041634341, "hashes": {"sha256": "q8jfvSvEeZjRQxB0hc0jBTsGmdJ4GD9Na7/J75iM3P8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PYIlnaWWv21ScLUcXhsAwBrCTclfz6znn+45ppOS7hA179Bh6THQRXniFalxxO4anNOYsp2/FpB+63yqfFbHAg"}}, "unsigned": {"age_ts": 1570041634341}}v!eQay$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1314}{"auth_events": ["$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI"], "prev_events": ["$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI"], "type": "m.room.member", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-271", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-271:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041632722, "hashes": {"sha256": "PDhYQYXmWSyou0bh9IAGFCzoJK7ZxkewxkGeTbFGgbo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wl3QREtGuvpa14vjMZ655HXcLymfgzaIQuHGW6v8AVg7z6lY/ij+utKc53hLt7KnKgeHR3CI/KT+vfngS8GaAw"}}, "unsigned": {"age_ts": 1570041632722}} RZ  :  N%M0\a%*RRRRRm]eQ? $8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibilitye\eQ/ $mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rulesg[eQ3 $Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels ZeQ']$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800joinaYeQ' $dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800m.room.createmXeQ? $9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibilityeWeQ/ $3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rulesgVeQ3 $QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels UeQ']$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800joinaTeQ' $soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.createmSeQ? $d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibilityeReQ/ $fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rulesgQeQ3 $vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levels PeQ']$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800joinNeQ']$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800leaveLeQ']$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800invite -aOeQ' $VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800m.room.create MeQ']$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800joinmIeQ? $7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibilityeHeQ/ $Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rulesgGeQ3 $Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levels FeQ']$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800joinaEeQ' $LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.createDeQ']$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800invite mBeQ? $-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibility pm@eQ? $ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibilitye?eQ/ $p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules,he=eQ/ $0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rulesg<eQ3 $wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levelsjg:eQ3 $gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800m.room.power_levels ) )t'eQau$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1320}{"auth_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc", "$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc"], "type": "m.room.join_rules", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041636412, "hashes": {"sha256": "JEhi2wRD0Z98ETfDJGVW8h1Uqe9qPkuIGacHZ3pmAwU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3eUBbzmLktX6MsTijlqnXXW0Jtt3PV4fHz8R6YwjZcBEL5kxLdH5gjgskNfnUo1mXwZxjrQqt+MKGD5AmkSbDA"}}, "unsigned": {"age_ts": 1570041636412}}t&eQau$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw!PCgUmZOwWmtDsuFqXg:localhost:8800{"token_id": 291, "stream_ordering": 1319}{"auth_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs", "$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc", "$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc"], "prev_events": ["$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs"], "type": "m.room.join_rules", "room_id": "!PCgUmZOwWmtDsuFqXg:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041636409, "hashes": {"sha256": "vFbh6BDW7+TpSLDVK0o6KhtCFPHHTP9GMDrMBJx7dFg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rk5FNMsIftQt0Wy3AbDnTg83vFXj+K9Iovag3loIXJM8PbA7UnTTuuU/KkeAnugR/wFIkkt88DQIKz++dIiiDg"}}, "unsigned": {"age_ts": 1570041636409}}t%eQau$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800{"token_id": 291, "stream_ordering": 1318}{"auth_events": ["$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU", "$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ", "$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c"], "prev_events": ["$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU"], "type": "m.room.join_rules", "room_id": "!nxLxsxzliamzflrEBs:localhost:8800", "sender": "@anon-20191002_181700-270:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041636407, "hashes": {"sha256": "71yNNTnMg+pzthP0XbxpxhiABphBsOsxb9ervCa5Nu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e2ozBOd3AmsOt41toj9bX7Ep2W7COpbnYgZ9fwzpKtAJtvmJKvAhMyaLaoxxoZjzGfOkN2fKcKuzgWYt8ANoCA"}}, "unsigned": {"age_ts": 1570041636407}}k$eQac$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1317}{"auth_events": ["$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "type": "m.room.power_levels", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"users": {"@anon-20191002_181700-271:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041634348, "hashes": {"sha256": "pEBtyghlJ3Dl3BRB5FSyu2UWe3DxEYWanSgcbG+EyEg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ByetpOPgZkpHHCnyThrordtgKHTtjJiBmb1uzA3Xnf6EvUANd0UZg2Qta6bGM+hyRfmUy7wmLiMi9GfCvVc7Cg"}}, "unsigned": {"age_ts": 1570041634348}} NV ^ N  dnv.DN$<e/Q ]$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgm.room.join_rules!fsbkkRBZlUcBVVfMME:localhost:8800mvmw@anon-20191002_181700-276:localhost:8800&;e3Q ]$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUm.room.power_levels!fsbkkRBZlUcBVVfMME:localhost:8800msmtE@anon-20191002_181700-276:localhost:8800 :e'Q ]$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gcm.room.member!fsbkkRBZlUcBVVfMME:localhost:8800mp(mqF@anon-20191002_181700-276:localhost:88009 e'Q  ]$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0m.room.create!fsbkkRBZlUcBVVfMME:localhost:8800mjmk@anon-20191002_181700-276:localhost:8800 8e'Q ] $PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYom.room.member!bzPCFeFSMbCESvNbxl:localhost:8800 mcmev@anon-20191002_181700-274:localhost:8800 7e'Q ] $uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800 maWma@anon-20191002_181700-274:localhost:8800 6e'Q ] $g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800 m^0m^@anon-20191002_181700-273:localhost:8800 5e'Q ]$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mYmZP@anon-20191002_181700-272:localhost:8800 4e'Q ]$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78m.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mWmW@anon-20191002_181700-272:localhost:8800 3e'Q ]$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mTmUS@anon-20191002_181700-272:localhost:8800,2e?Q ]$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Okm.room.history_visibility!bzPCFeFSMbCESvNbxl:localhost:8800mPmR@anon-20191002_181700-272:localhost:8800$1e/Q ]$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgwm.room.join_rules!bzPCFeFSMbCESvNbxl:localhost:8800mNcmO%@anon-20191002_181700-272:localhost:8800&0e3Q ]$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsm.room.power_levels!bzPCFeFSMbCESvNbxl:localhost:8800mKmL@anon-20191002_181700-272:localhost:8800 /e'Q ]$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQm.room.member!bzPCFeFSMbCESvNbxl:localhost:8800mHmJ>@anon-20191002_181700-272:localhost:8800. e'Q  ]$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEm.room.create!bzPCFeFSMbCESvNbxl:localhost:8800mCmD@anon-20191002_181700-272:localhost:8800 -e'Q ]$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIm.room.member!RPfffkmSEbWggEjnoI:localhost:8800m4m7@anon-20191002_181700-271:localhost:8800 ,e'Q ]$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Ym.room.member!PCgUmZOwWmtDsuFqXg:localhost:8800m3m6@anon-20191002_181700-270:localhost:8800,+e?Q ]$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acm.room.history_visibility!RPfffkmSEbWggEjnoI:localhost:8800m+m0@anon-20191002_181700-271:localhost:8800,*e?Q ]$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYm.room.history_visibility!PCgUmZOwWmtDsuFqXg:localhost:8800m+m0P@anon-20191002_181700-270:localhost:8800,)e?Q ]$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0m.room.history_visibility!nxLxsxzliamzflrEBs:localhost:8800m+m/@anon-20191002_181700-270:localhost:8800$(e/Q ]$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0m.room.join_rules!RPfffkmSEbWggEjnoI:localhost:8800m&<m)@anon-20191002_181700-271:localhost:8800$'e/Q ]$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwm.room.join_rules!PCgUmZOwWmtDsuFqXg:localhost:8800m&9m(@anon-20191002_181700-270:localhost:8800$&e/Q ]$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjUm.room.join_rules!nxLxsxzliamzflrEBs:localhost:8800m&7m'@anon-20191002_181700-270:localhost:8800&%e3Q ]$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcm.room.power_levels!RPfffkmSEbWggEjnoI:localhost:8800m,m"@anon-20191002_181700-271:localhost:8800 8l D `8]c!E@anon-20191002_181700-281:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAoHVGEGIPOZP127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-280:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygoPLHJASTUFR127.0.0.1Perl + Net::Async::HTTP/0.44mƳЃ]c!E@anon-20191002_181700-279:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgoDVKCMEFQMC127.0.0.1Perl + Net::Async::HTTP/0.44mƘ9]c!E@anon-20191002_181700-278:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_goOHJBILRNUP127.0.0.1Perl + Net::Async::HTTP/0.44mƔ]c!E@anon-20191002_181700-277:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgoYSVOUTLGFP127.0.0.1Perl + Net::Async::HTTP/0.44mƄ`]c!E@anon-20191002_181700-276:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwoPBSDTTCZKK127.0.0.1Perl + Net::Async::HTTP/0.44mj]c!E@anon-20191002_181700-274:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6Kkl4PTlUVU5KR3FheHoKMDAyZnNpZ25hdHVyZSBEN8WLrmQ2ofBQpLcVp4rDef2c2cjqk-3Tk2HecBbGhQoRXKZBCJOXK127.0.0.1Perl + Net::Async::HTTP/0.44m[t]c!E@anon-20191002_181700-273:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0wRXVIdkQyT1RQcUZlMV8KMDAyZnNpZ25hdHVyZSCLKe7rBRRX4aJO_x_3H4GczclWYX5FRJw6F5fXglIgTAoSZMGOEVXQW127.0.0.1Perl + Net::Async::HTTP/0.44m[s]c!E@anon-20191002_181700-272:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVjBCO0NjMSswVWZoLHAKMDAyZnNpZ25hdHVyZSDv6IXplpGvW3jlO-0FOtxQ-E9qECaMgAeY8CAFUiL5ogoNRGYAKPXEL127.0.0.1Perl + Net::Async::HTTP/0.44mA}]c!E@anon-20191002_181700-271:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBESiZaMFpHcjBoMG9kaHYKMDAyZnNpZ25hdHVyZSB3cWspWGVRCZ23VJaGDJZEBWFBnLLtl-E0M7Fd3yI2JgoEYEJMZUSJY127.0.0.1Perl + Net::Async::HTTP/0.44m Sl-x9 e H - M 6   K .  ] : f I . Nz;mR/~g( O8H+z_<E( 9>']m.room.member@anon-20191002_181700-286:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-284:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-283:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-282:localhost:8800>']m.room.member@anon-20191002_181700-281:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-280:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-279:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-277:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-276:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-274:localhost:8800>']m.room.member@anon-20191002_181700-274:localhost:8800>']m.room.member@anon-20191002_181700-273:localhost:8800>']m.room.member@anon-20191002_181700-275:localhost:8800>']m.room.member@anon-20191002_181700-274:localhost:8800>']m.room.member@anon-20191002_181700-273:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-272:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-270:localhost:8800>']m.room.member@anon-20191002_181700-270:localhost:8800"? m.room.history_visibility"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-271:localhost:8800>']m.room.member@anon-20191002_181700-270:localhost:8800>']m.room.member@anon-20191002_181700-270:localhost:8800' m.room.create' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-267:localhost:8800>']m.room.member@anon-20191002_181700-269:localhost:8800>']m.room.member@anon-20191002_181700-268:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-267:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-266:localhost:8800>']m.room.member@anon-20191002_181700-266:localhost:8800>']m.room.member@anon-20191002_181700-266:localhost:8800/ m.room.join_rules>']m.room.member@anon-20191002_181700-266:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-265:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-264:localhost:8800"? m.room.history_visibility/ m.room.join_rules !r,P l N Y  dFQVz=Hrg_Q/ e!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rules$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVci^Q3 e!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw ]Q']e!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igc\Q' e!jveVPZSXJOJyNDebPO:localhost:8800m.room.create$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIo[Q? e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibility$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IgZQ/ e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rules$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhciYQ3 e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI XQ']e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owcWQ' e!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.create$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4oVQ? e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibility$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4gUQ/ e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rules$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgiTQ3 e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levels$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU SQ']e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GccRQ' e!fsbkkRBZlUcBVVfMME:localhost:8800m.room.create$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0 QQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo PQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg OQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM NQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE MQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 LQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEoKQ? e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibility$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkgJQ/ e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rules$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwiIQ3 e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levels$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs HQ']e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQcGQ' e!bzPCFeFSMbCESvNbxl:localhost:8800m.room.create$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE FQ']e!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI EQ']e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YoDQ? e!RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibility$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2acoCQ? e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.history_visibility$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYoBQ? e!nxLxsxzliamzflrEBs:localhost:8800m.room.history_visibility$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0gAQ/ e!RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0g@Q/ e!PCgUmZOwWmtDsuFqXg:localhost:8800m.room.join_rules$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwg?Q/ e!nxLxsxzliamzflrEBs:localhost:8800m.room.join_rules$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU |t l d  \ T LD< 4,$eeQ$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800 ZeeQ$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4!JusxqeECtidaPlWqhp:localhost:8800LeeQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800 VeeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800 AeeQ$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg!rWGwSSefrZzQYCYFHs:localhost:8800$eeQ$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:88006eeQ$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800 eeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800KeeQ$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:88009eeQ$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800UeeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800 @eeQ$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800́eeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800)eeQ$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk!EMhFCPhwmnWVnjtXXM:localhost:8800.eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800eeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800  BUq8 T  p 7 S  o 6 R n5Rn5Qm5Qm4Pr8e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5Msha2568e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUsha256 8e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuosha256 88e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwsha256 r8e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqhosha25628e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQwsha256 8e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdosha256 l8e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgsha256 8e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQsha2568e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8sha256 8e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6wsha2568e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lssha256 =8e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAsha256D8e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUsha2567e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMsha256W8e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOYsha256&8e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8sha256T8e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGassha256x8e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMsha256g8e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrssha256K8e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXcsha2568e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfYsha2568e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFssha2568e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8sha2568e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUsha256 8e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70sha2568e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcsha2568e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5Msha2568e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEgsha256$8e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUsha2567e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApcsha2568e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQsha256 8e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4sha256 8e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQsha2568e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEsha2568e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIsha2568e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ysha256-8e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4sha256 E8e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicsha256 8e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMsha2568e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEsha256v8e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBosha256 8e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvosha256r8e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTAsha2568e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQwsha2568e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4sha2568e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0sha2568e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxosha2568e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4sha256 8e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCksha256 8e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQsha2568e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIsha25658e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Asha256k8e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAsha256 8e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxosha256 8e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qsha2568e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuosha256 -8e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8sha2568e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkosha256 8e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEsha2568e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wosha2568e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQsha256o8e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4sha2568e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4sha256 ?8e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmgsha256 98e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMssha256 a} { y w u sqomkigeca~MeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~LeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~KeeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~JeeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~IeeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~HeeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~GeeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~FeeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~EeeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~DeeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~CeeQ$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~BeeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~AeeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0!RPfffkmSEbWggEjnoI:localhost:8800~@eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~?eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800~>eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800~=eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~<eeQ$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800~;eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~:eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~9eeQ$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800~8eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800~7eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$-IOWxv1SjCW3OX55F87dSck2Gj3ZNzXpc-2YpJeJsWc!PCgUmZOwWmtDsuFqXg:localhost:8800~6eeQ$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY$-Ytl1K08Is5OgEMzyzMzPCyjXhjZnkc78LJ5uB1iXbs!PCgUmZOwWmtDsuFqXg:localhost:8800~5eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c!nxLxsxzliamzflrEBs:localhost:8800~4eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800~3eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800~2eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800~1eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI!RPfffkmSEbWggEjnoI:localhost:8800~0eeQ$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc!RPfffkmSEbWggEjnoI:localhost:8800~/eeQ$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc!PCgUmZOwWmtDsuFqXg:localhost:8800 M Y ' _ _8 -e Ql: sA'-yGYMS!jp3>  v D  |  J  Vo1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA E1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI 31e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk 21e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY $1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ 71e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kz1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE^1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M=1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550a1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYop1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIN1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUP1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA=1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsP1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg/1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4N1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsT1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEK1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngX1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQS1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648d1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaID1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c^01e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEm1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYod0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcB1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg+1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYd1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ <1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ Ej8p> v D  | J  b P0  V $ \ *h6n< tBzHN1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4X1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA|1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAM1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 <1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuke1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9ga1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI71e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k=1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU M1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU G1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ[1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U W1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFeko1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE T1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe401e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE 1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA f1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE 1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OId1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY*1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQS1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs;1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIh1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg 1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wl1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc !1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY M Y ' _ _8 -e Ql: sA'-yGYMS!jp3>  v D  |  J  Vo1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA E1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI 31e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk 21e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY $1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ 71e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kz1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE^1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M=1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550a1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYop1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIN1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUP1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA=1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsP1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg/1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4N1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsT1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEK1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngX1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQS1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648d1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaID1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c^01e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEg1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYod0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcB1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg+1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYd1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ <1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ D%j8p> v D  |W J  P  V $ \ *b0h6n= wE}K%1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y 1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8\1e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE J d1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c71e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648i1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIY1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cl1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc-0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms:1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE40e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeY>1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgz1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8]1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo {1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qm1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI91e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4S1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 B1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8n1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx821e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc\1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk}1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU91e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM&1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owU1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c  I I4lanondisplay localhostname 8l D `8T]c!E@anon-20191002_181700-343:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQoQPHBRHJQML127.0.0.1Perl + Net::Async::HTTP/0.44m˃S]c!E@anon-20191002_181700-342:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAoTTVUAXXSXP127.0.0.1Perl + Net::Async::HTTP/0.44m„R]c!E@anon-20191002_181700-341:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQoGZLOUPOIMW127.0.0.1Perl + Net::Async::HTTP/0.44m̢VQ]c!E@anon-20191002_181700-339:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAoDEVPCFFDOH127.0.0.1Perl + Net::Async::HTTP/0.44m̑*P]c!E@anon-20191002_181700-338:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgoOUNFKLKIBD127.0.0.1Perl + Net::Async::HTTP/0.44moO]c!E@anon-20191002_181700-337:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwoAOHNBPYYLF127.0.0.1Perl + Net::Async::HTTP/0.44mSN]c!E@anon-20191002_181700-336:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwoOFRRIKPQIS127.0.0.1Perl + Net::Async::HTTP/0.44mRM]c!E@anon-20191002_181700-335:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAoWEGENLHOLI127.0.0.1Perl + Net::Async::HTTP/0.44mMփL]c!E@anon-20191002_181700-334:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgoKPXDOKYVYY127.0.0.1Perl + Net::Async::HTTP/0.44mKK]c!E@anon-20191002_181700-333:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8QoZFSXBCPVTU127.0.0.1Perl + Net::Async::HTTP/0.44m.  gz.eQa$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1327}{"auth_events": ["$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE"], "prev_events": ["$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-272:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041645243, "hashes": {"sha256": "ny6lh9ok9DOqsFiLRwd15QujMj7Wj/khN/hteL9sD9A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S5qq6xEKWsLLgVgDJvNDWUoX/siwW6/1YMSMWshdm8BTRN6JzWRp/JwioR8UxK0XYveKbEFoSoShdSKGvXjyBQ"}}, "unsigned": {"age_ts": 1570041645243}}i-eQa_$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1326}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-272:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041644022, "hashes": {"sha256": "0PtTXl9F4Ni0kuvFmawMee5bvs9gBa0FFHJz/sKRVdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZ2lSRxrNE8Rj9W/wnykzUSe1pY/kuAruurzPCWiBXp6OWiVNlJnRX6KsD/fIETHip1YvHIxKe/YD+HemjxsAg"}}, "unsigned": {"age_ts": 1570041644022}},eQa7$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800{"token_id": 290, "stream_ordering": 1325}{"auth_events": ["$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc", "$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI", "$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0", "$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY"], "prev_events": ["$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac"], "type": "m.room.member", "room_id": "!RPfffkmSEbWggEjnoI:localhost:8800", "sender": "@anon-20191002_181700-271:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-270", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-270:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041640188, "hashes": {"sha256": "wXuDgoy8ZnQ7f1fHsH4nffRFVj2wxQRUATV+Rb1W8iY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S4kwLJQp6r5PcVY3/NJHwFkYKdbvHz97MCcEax+KogqFtz4gdC9QA8htaSaCV3DfmsnJKsxYIu1Rnbi53QtIDw"}}, "unsigned": {"age_ts": 1570041640188, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-271:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-271:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-271", "avatar_url": null}, "sender": "@anon-20191002_181700-271:localhost:8800"}]}} p y .  ~  JS{9_b h/Q/ eP!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rules$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0j.Q3 eO!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s -Q']eN!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwd,Q' eM!cGkVFpidyBBxUxsszG:localhost:8800m.room.create$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAp+Q? eI!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibility$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEh*Q/ eH!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rules$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcj)Q3 eG!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw (Q']eF!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igd'Q' eE!jveVPZSXJOJyNDebPO:localhost:8800m.room.create$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIp&Q? eC!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibility$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Ih%Q/ eB!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rules$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcj$Q3 eA!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI #Q']e@!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owd"Q' e?!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.create$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4p!Q? e=!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibility$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4h Q/ eRf+z?Sg,{@8 ]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH8 ]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD8 ]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQIS8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLI8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYY8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTU8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGP8]!@anon-20191002_181700-331:localhost:8800COONNUXFOL8]!@anon-20191002_181700-330:localhost:8800TFGJMHITUL8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLS8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUO8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHC8~]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYT8}]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGS8|]!@anon-20191002_181700-324:localhost:8800KKATIXOBNF8{]!@anon-20191002_181700-323:localhost:8800BHOVENVWZC8z]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXT8y]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGC8x]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGB8w]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIA8v]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJ8u]!@anon-20191002_181700-317:localhost:8800KSXFFXWMCB8t]!@anon-20191002_181700-316:localhost:8800JHIWJLKOFG8s]!@anon-20191002_181700-315:localhost:8800KXXAQONTRL8r]!@anon-20191002_181700-314:localhost:8800BTSWZNQVTP8q]!~@anon-20191002_181700-312:localhost:8800LFIOTRIQVM8p]!}@anon-20191002_181700-311:localhost:8800BNVFQNMSXM8o]!|@anon-20191002_181700-310:localhost:8800UKYXDPZQOO8n]!{@anon-20191002_181700-309:localhost:8800OEPQWZYGAR8m]!z@anon-20191002_181700-308:localhost:8800VRKBCOUWEF8l]!y@anon-20191002_181700-307:localhost:8800BEZNVUIADU8k]!x@anon-20191002_181700-306:localhost:8800XZDIPYWWOD8j]!w@anon-20191002_181700-305:localhost:8800PDQTBQSPGX8i]!v@anon-20191002_181700-304:localhost:8800MQWNAFYDXK8h]!u@anon-20191002_181700-303:localhost:8800FUOYNGGDMQ8g]!t@anon-20191002_181700-302:localhost:8800PAWIWMHYHH8f]!s@anon-20191002_181700-301:localhost:8800SJPGITTBTX8e]!r@anon-20191002_181700-300:localhost:8800ZZJIQPLATK8d]!q@anon-20191002_181700-299:localhost:8800BPDORAMNSE8c]!p@anon-20191002_181700-298:localhost:8800GTROHDSCGV8b]!o@anon-20191002_181700-297:localhost:8800DVSKNCGFXX8a]!n@anon-20191002_181700-296:localhost:8800SBLEQBXZQL8`]!m@anon-20191002_181700-295:localhost:8800CIYGWJHPPN8_]!l@anon-20191002_181700-294:localhost:8800RKGLRVXFMG8^]!k@anon-20191002_181700-293:localhost:8800PVLMJRXINQ8]]!j@anon-20191002_181700-292:localhost:8800GGCVZACJDJ8\]!i@anon-20191002_181700-291:localhost:8800OPDSPHGDRK8[]!h@anon-20191002_181700-290:localhost:8800HIUKIRMYDG8Z]!g@anon-20191002_181700-289:localhost:8800WRUIAYGXAN8Y]!f@anon-20191002_181700-288:localhost:8800BKSOCJCTFT8X]!e@anon-20191002_181700-287:localhost:8800UVZQFXTZFV8W]!d@anon-20191002_181700-286:localhost:8800SFUJRXTQDY8V]!c@anon-20191002_181700-285:localhost:8800RKYDKAHKAA8U]!b@anon-20191002_181700-284:localhost:8800IDXGKZHMAK8T]!a@anon-20191002_181700-283:localhost:8800GHCLSNIYIA8S]!`@anon-20191002_181700-282:localhost:8800MZNVLNKEUX8R]!_@anon-20191002_181700-281:localhost:8800HVGEGIPOZP8Q]!^@anon-20191002_181700-280:localhost:8800PLHJASTUFR8P]!]@anon-20191002_181700-279:localhost:8800DVKCMEFQMC8O]!\@anon-20191002_181700-278:localhost:8800OHJBILRNUP8N]![@anon-20191002_181700-277:localhost:8800YSVOUTLGFP8M]!Z@anon-20191002_181700-276:localhost:8800PBSDTTCZKK8L]!Y@anon-20191002_181700-275:localhost:8800BROWKVODJU8K]!X@anon-20191002_181700-274:localhost:8800RXKZBCJOXK8J]!W@anon-20191002_181700-272:localhost:8800NRGYAKPXEL8I]!V@anon-20191002_181700-273:localhost:8800SZMGOEVXQW =w;WUq8 V  r 9 W  s :  V t;Wu<Xtw>Z!88]!@anon-20191002_181700-6[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKB6[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKN=8]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH]8]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD\8]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF[8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQISZ8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLIY8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYYX8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUW8]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE8]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH8]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS8]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE8]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP8]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ8]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM8]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO8]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF6[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHA8]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT8]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZ8]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY~8]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ|8]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM}8]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO{8]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJz6[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKO@8]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRAy8]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJx8]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXTw8]!@anon-20191002_181700-366:localhost:8800FABJQITKMRu8]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWOv8]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTBs8]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXFt8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSURp8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJq8]!@anon-20191002_181700-360:localhost:8800XKNFVZJCREr6[!@anon-20191002_181700-35:localhost:8800EALQMPIKHO?8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBRo8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILNm8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERTn8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFNl8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJIj8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKHk8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRWi8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMPh8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFRf8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAIg6[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGA>8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYSe8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZd8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYUb8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROPc8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHAa8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML`8]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP_8]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW^ ,NC 8 - { " p  e ZOD9.|#qf VXeL$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xssha256Uqs>+YEU;{VWeL$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEsha256Wa7wbœCU데϶ ![ƑVVeL$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wsha256TA!͈hFˆ" |ƝVUeL$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwsha256?i%[음`=`?"_VTeL$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqssha256yu#!BňS],ρ1";+˛l~«VSeL$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQsha256Vݲg]ne,DA RVReL$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQksha256Ʃӝn2 q9mA)7rhRm VQeL$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawsha256h "?9J)NJ?E7ڴ+RV8u xVPeL$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4sha256'( @Jo獌;i6C ARVOeL$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0sha256AH4QVKBlꐱ`mVNeL$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0ssha2569 I-͊[[@VLxN|/KVMeL$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwsha256vDi6}E0/#gu},3QlVLeL$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAsha256mڤY(OPqÚ0p?%8VKeL$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrssha256]iU4Pה6B+~TCrVJeL$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Nssha256duHO8f 2Iws棲ޛtVIeL$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivkssha256[abeL<؇b ΏIabKVHeL$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEsha256sG⛖aw/\QOx_VGeL$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcsha256MRҴSg\TsuB$}UWVFeL$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwsha256NV lRx`݋UVVEeL$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igsha256 AX냈`049Z,$Z%XVDeL$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIsha256uXQ1 -p1߬IBpMJM{ VCeL$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68sha256%#JHB#ǧ =_A')X VBeL$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Isha256%9w yQ4C] WVAeL$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcsha256*Ac/=M1 t4)VV@eL$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIsha256@ov+lSC;D;/lABV?eL$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owsha256phuZvtN5 D﹒V>eL$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4sha25668.dFb?7IV=eL$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0sha256BF\f?ZNWg~b=V<eL$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4sha256wڐDDGm0Y!Gkpw\;~V;eL$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgsha256~+{YeOIu4/9/A=} `KxV:eL$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUsha256>.}igWgO@=%V9eL$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gcsha256wYAۓ i YUgV8eL$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0sha256V.? Xʦ #\>oIV7eL$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYosha256=,pP['Wj yMʾCB]'x)V6eL$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgsha256-PTJ7g ,{Շ? ]*8V5eL$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMsha256W2w[>(\rœу H]cV4eL$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEsha256Fߗ%wFmH9a1l3%aV3eL$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78sha256N sݭ2IX=v V2eL$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEsha256ب] JGFhœ h;fAV1eL$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Oksha256xp b:mS^*V0eL$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgwsha256gM idSJ.p.VsGΧN V/eL$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGssha256(t`<3apW.;1kV.eL$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQsha256Q3bxlJxV7WycV-eL$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohEsha256,1ExX9.jX``n != @ &   $L[(V#& 4eQ']$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800 3eQ']$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800m2eQ? $1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibilitye1eQ/ $QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rulesg0eQ3 $xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels /eQ']$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800a.eQ' $bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800m.room.createm-eQ? $8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibilitye,eQ/ $mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rulesg+eQ3 $Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels *eQ']$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800a)eQ' $dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800m.room.createm(eQ? $9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibilitye'eQ/ $3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rulesg&eQ3 $QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levels %eQ']$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800a$eQ' $soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.createm#eQ? $d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800m.room.history_visibilitye"eQ/ $fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800m.room.join_rulesg!eQ3 $vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800m.room.power_levels eQ']$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800aeQ' $VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800m.room.create eQ']$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800 eQ']$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800 eQ']$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800 eQ']$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800 eQ']$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800 eQ']$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800meQ? $7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibilityeeQ/ $Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rulesgeQ3 $Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levels eQ']$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800aeQ' $LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800m.room.create -RM H C > 9 4/*|%w rmhc TpQe!ffijTnPMbTrDXHqOXf:localhost:8800$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoToQe!ffijTnPMbTrDXHqOXf:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HoTnQe!ffijTnPMbTrDXHqOXf:localhost:8800$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMTmQe!wLitJYvgvNJzanSIvO:localhost:8800$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4TlQe!wLitJYvgvNJzanSIvO:localhost:8800$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrITkQe!wLitJYvgvNJzanSIvO:localhost:8800$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cTjQe!wLitJYvgvNJzanSIvO:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMTiQe!wLitJYvgvNJzanSIvO:localhost:8800$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQThQe!hWHyATwKfuznrqTiyu:localhost:8800$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsTgQe!hWHyATwKfuznrqTiyu:localhost:8800$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgTfQe!hWHyATwKfuznrqTiyu:localhost:8800$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsTeQe!hWHyATwKfuznrqTiyu:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpETdQe!hWHyATwKfuznrqTiyu:localhost:8800$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wTcQe!cGkVFpidyBBxUxsszG:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkTbQe!cGkVFpidyBBxUxsszG:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawTaQe!cGkVFpidyBBxUxsszG:localhost:8800$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4T`Qe!cGkVFpidyBBxUxsszG:localhost:8800$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0T_Qe!cGkVFpidyBBxUxsszG:localhost:8800$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sT^Qe!cGkVFpidyBBxUxsszG:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwT]Qe!cGkVFpidyBBxUxsszG:localhost:8800$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAT\Qe!jveVPZSXJOJyNDebPO:localhost:8800$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxET[Qe!jveVPZSXJOJyNDebPO:localhost:8800$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcTZQe!jveVPZSXJOJyNDebPO:localhost:8800$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwTYQe!jveVPZSXJOJyNDebPO:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgTXQe!jveVPZSXJOJyNDebPO:localhost:8800$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaITWQe!rJhSRzmWBQHlIhuDXT:localhost:8800$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_ITVQe!rJhSRzmWBQHlIhuDXT:localhost:8800$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcTUQe!rJhSRzmWBQHlIhuDXT:localhost:8800$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUITTQe!rJhSRzmWBQHlIhuDXT:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owTSQe!rJhSRzmWBQHlIhuDXT:localhost:8800$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4TRQe!fsbkkRBZlUcBVVfMME:localhost:8800$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4TQQe!fsbkkRBZlUcBVVfMME:localhost:8800$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgTPQe!fsbkkRBZlUcBVVfMME:localhost:8800$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUTOQe!fsbkkRBZlUcBVVfMME:localhost:8800$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GcTNQe!fsbkkRBZlUcBVVfMME:localhost:8800$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0TMQe!bzPCFeFSMbCESvNbxl:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoTLQe!bzPCFeFSMbCESvNbxl:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgTKQe!bzPCFeFSMbCESvNbxl:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMTJQe!bzPCFeFSMbCESvNbxl:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWETIQe!bzPCFeFSMbCESvNbxl:localhost:8800$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78THQe!bzPCFeFSMbCESvNbxl:localhost:8800$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUETGQe!bzPCFeFSMbCESvNbxl:localhost:8800$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-OkTFQe!bzPCFeFSMbCESvNbxl:localhost:8800$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwTEQe!bzPCFeFSMbCESvNbxl:localhost:8800$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsTDQe!bzPCFeFSMbCESvNbxl:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ g * T~=gg)]!c2@anon-20191002_181700-286:localhost:8800SFUJRXTQDYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMuU1k6WlRjNHMzOW4zWC4KMDAyZnNpZ25hdHVyZSCm1CYMbpJeBEIlSqvHQLlTmNccB_w09A-mofLOOCns2wog(]!c1@anon-20191002_181700-285:localhost:8800RKYDKAHKAAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHE6ZkwqeXVWQmhvWlleLnMKMDAyZnNpZ25hdHVyZSA8StBFwTVrjsV83F87BN0vcrrxEk92vGKl74R0SlFJRwog']!c0@anon-20191002_181700-284:localhost:8800IDXGKZHMAKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg4SzFYZkhSVzlsbjJpalcKMDAyZnNpZ25hdHVyZSBxpaFTVrHdAtO3AwwUhNdQv_6hppCrsEFY91uIeRE0Ywog&]!c/@anon-20191002_181700-283:localhost:8800GHCLSNIYIAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGh1Q2kwWEtidWhRXjBEdToKMDAyZnNpZ25hdHVyZSAI9iPJyhUOhKPHzi0-DhXtv-V-HO0MnRbZvorFZptFhQog%]!c.@anon-20191002_181700-282:localhost:8800MZNVLNKEUXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVlc0phJitwKngyYURqODoKMDAyZnNpZ25hdHVyZSAp6TSwG3iNBrpimH2OUgfOfHhlH7rlFKNTnyY4t3P88wog$]!c-@anon-20191002_181700-281:localhost:8800HVGEGIPOZPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENsWGJ6YyYwLEs3eGU9MDIKMDAyZnNpZ25hdHVyZSAL4BnaHsxXdcncv4DIZda7HeQfGXOGRDGc7HyAujX2IAog#]!c,@anon-20191002_181700-280:localhost:8800PLHJASTUFRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNiZEBubzpRanYzSCNmOVAKMDAyZnNpZ25hdHVyZSBJ-X-8SYlWORiowPrLuRkJUQtN1xs-rD1hKkoRGdibygog"]!c+@anon-20191002_181700-279:localhost:8800DVKCMEFQMCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhVNk92T0NTUm9FOjlrQy0KMDAyZnNpZ25hdHVyZSAbaGJBUo3GyMSclf9OCRhOGri2pH7NPJdQCGFH4tkVVgog!]!c*@anon-20191002_181700-278:localhost:8800OHJBILRNUPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJlREpka3JLYmZuOzVLVTYKMDAyZnNpZ25hdHVyZSDuN6f-L9oRPwlJRPM_MFrqOctSXBeQHAw63QNDKQ-9_gog ]!c)@anon-20191002_181700-277:localhost:8800YSVOUTLGFPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEd3NmUmTGwwfkw7clBlKlkKMDAyZnNpZ25hdHVyZSA_MC_tJuHVKRiV7Pk-Id9W0b5hVyYroZxqtW_7YtwOsgog]!c(@anon-20191002_181700-276:localhost:8800PBSDTTCZKKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk5amd5QDg1dTRnNyxrRXkKMDAyZnNpZ25hdHVyZSBbMhZIQFwlACvO76jF2MVJPraNTTkDoYjEok4gFiL7qwo Hn< tBj8p>  v D  O | J  P  V $ \ *U#[){Ib01e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg=1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg<1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg;1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg:1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Um1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Ul1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Uk1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsh1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM21e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41LeoV1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs 1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs ,1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM41e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM31e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsg1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIsf1e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss~1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk*1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk)1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk(1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0 :1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0 91e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0 81e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs 1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs 1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs 1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xkT1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU 1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg L1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg K1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg J1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM  1eQa$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1330}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw"], "type": "m.room.history_visibility", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041647341, "hashes": {"sha256": "ip3Tk0nard3bOZbnZUgcCqaG1vC6sbkPITYyNG4SxIA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/Rxrf/IrWQytKf6+nqZBvHpCFDMMRSdxvsne4g2dURpZZGFHOkAUq1rbrVyyPqlOBhHNRPItEqrjWPVGPgc9Dw"}}, "unsigned": {"age_ts": 1570041647341}}t0eQau$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1329}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs"], "type": "m.room.join_rules", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041646691, "hashes": {"sha256": "2ajwNlaqY53lWYHQKpz5EtuTAGZqf1ErS+RpwSujBws"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EaZpZp8QSyJY3awwSW13wQdlpHog0Xm/AP953eUxnNbwEQxIKzCA6UMdPUvkjLHbhBJn9lPXxnPVk6ax1Dy7Dw"}}, "unsigned": {"age_ts": 1570041646691}}k/eQac$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1328}{"auth_events": ["$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "type": "m.room.power_levels", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"users": {"@anon-20191002_181700-272:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041646050, "hashes": {"sha256": "SdzLw+H2OTeue9pS8qfg5mlSHT1hYJK0Oxxyp1AcMow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IFom1CI67tOnCEq2vOnC+5PwZJ78gVp2En43DrJdXXMO59AULvEkpmbwTYNlatgfM7Hp8c6xmwiPX6QsLB+fCA"}}, "unsigned": {"age_ts": 1570041646050}} ~z v r n j fb^ZVRNJF5eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:88004eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:88003eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:88002eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:88001eeQ$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:88000eeQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800/eeQ$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800.eeQ$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800-eeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800,eeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800+eeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800*eeQ$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800)eeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800(eeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800'eeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800&eeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800%eeQ$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800$eeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800#eeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800"eeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800!eeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800 eeQ$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800  X$3eQaU$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1332}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-274", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-274:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041649028, "hashes": {"sha256": "MK7Wo1oqm4i8pgyZlNI/03bP/1iXwZKLQY6P977MYzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oqK1bv8tBqGvdxPtRsnPa72KWI2JxpGWr1p/70TwxqV7QWPoknlIm4Bp3Oyu2AcD2hDgtjfZjRmfD/Gg1YI+Cg"}}, "unsigned": {"age_ts": 1570041649028, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-272:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "sender": "@anon-20191002_181700-272:localhost:8800"}]}}$2eQaU$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1331}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-273", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-273:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041648361, "hashes": {"sha256": "NUulgEGDbpIsls6wvjWR2iwynsYusyrIsiLUQZnHvbM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GrusZNiJgbHDy9UMDABbdkKuqLM3Jp319Mzih2E3iDj37AukaH/MVNIgituEhCO2jWiLVw2DLRm3OIvPPKuYCQ"}}, "unsigned": {"age_ts": 1570041648361, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-272:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "sender": "@anon-20191002_181700-272:localhost:8800"}]}} a} { y w u sqomkigeca~leeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800~keeQ$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~jeeQ$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~ieeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800~heeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~geeQ$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800~feeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800~eeeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~deeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800~ceeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800~beeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~aeeQ$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800~`eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800~_eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~^eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~]eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~\eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~[eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~ZeeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~YeeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~XeeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~WeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~VeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~UeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~TeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~SeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~ReeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800~QeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800~PeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800~OeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800~NeeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800 7n 0 i M1hLCK e]]Q=$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww@anon-20191002_181700-291:localhost:8800@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800joinanon-20191002_181700-291CJ e]]Q=$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y@anon-20191002_181700-290:localhost:8800@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800joinanon-20191002_181700-290CI e]]Q=$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw@anon-20191002_181700-289:localhost:8800@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800joinanon-20191002_181700-289CH e]]Q=$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY@anon-20191002_181700-288:localhost:8800@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800joinanon-20191002_181700-288CG e]]Q=$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo@anon-20191002_181700-287:localhost:8800@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800joinanon-20191002_181700-287EF e]]Q=$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk@anon-20191002_181700-287:localhost:8800@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800inviteanon-20191002_181700-287CE e]]Q=$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho@anon-20191002_181700-286:localhost:8800@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800joinanon-20191002_181700-286CD e]]Q=$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM@anon-20191002_181700-284:localhost:8800@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800joinanon-20191002_181700-284CC e]]Q=$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE@anon-20191002_181700-283:localhost:8800@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800joinanon-20191002_181700-283CB e]]Q=$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk@anon-20191002_181700-282:localhost:8800@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800joinanon-20191002_181700-282CA e]]Q=$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw@anon-20191002_181700-281:localhost:8800@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800joinanon-20191002_181700-281C@ e]]Q=$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw@anon-20191002_181700-280:localhost:8800@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800joinanon-20191002_181700-280C? e]]Q=$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig@anon-20191002_181700-279:localhost:8800@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800joinanon-20191002_181700-279C> e]]Q=$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow@anon-20191002_181700-277:localhost:8800@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800joinanon-20191002_181700-277C= e]]Q=$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc@anon-20191002_181700-276:localhost:8800@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800joinanon-20191002_181700-276,< e]]Q$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo@anon-20191002_181700-274:localhost:8800@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800leaveC; e]]Q=$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg@anon-20191002_181700-274:localhost:8800@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800joinanon-20191002_181700-274C: e]]Q=$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM@anon-20191002_181700-273:localhost:8800@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800joinanon-20191002_181700-273E9 e]]Q=$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE@anon-20191002_181700-275:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800inviteanon-20191002_181700-275E8 e]]Q=$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78@anon-20191002_181700-274:localhost:8800@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800inviteanon-20191002_181700-274  X<6eQa?$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 294, "stream_ordering": 1335}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw"], "prev_events": ["$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-274:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-274", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-274:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041651543, "hashes": {"sha256": "V2ZxYTOJmTSMN60esTDibSV/N0yRAsVwJmxL71U+YkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0WyRg56JPsyqgbcRroL6tdbmi4m/B9xuFDxGq5hSOF3e7+iV0EDfQhOUxEkzRmSZ6Ud7DGI+CtGLpegdYWEvCw"}}, "unsigned": {"age_ts": 1570041651543, "replaces_state": "$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78"}}5eQa=$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 292, "stream_ordering": 1334}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw"], "prev_events": ["$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-273:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-273", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-273:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041650736, "hashes": {"sha256": "wH+wNbBI9EX8w4PzgUzxqlw8IPJow+ckNlGZwxLj1KY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WHlpGjEd/0TTsPSgMRm3A8feXjzPunI/Yh/mDDe3urz2ea6s9MFiDppbdWW+dMMfC2hsL9bvefvWaC3XDiCPDw"}}, "unsigned": {"age_ts": 1570041650736, "replaces_state": "$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE"}}$4eQaU$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 293, "stream_ordering": 1333}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw", "$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ"], "prev_events": ["$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-275", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-275:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041649637, "hashes": {"sha256": "hC4daz5N/Ks457MsjOQPj7O5pM8RLh9LzkFM4cwD6CI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xMQUe9HS8289FJ0usIf/Q1tWxIDSzIXs82zAD/cMoEnN87AWAb6GokTFG9W32ljph9T6nxmbNgW6n0gWzIscDA"}}, "unsigned": {"age_ts": 1570041649637, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-272:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-272:localhost:8800", "content": {"membership": "join", "displayname": "Display Name", "avatar_url": "http://example.com/avatar.png"}, "sender": "@anon-20191002_181700-272:localhost:8800"}]}} K ! 4Kk:eQac$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1339}{"auth_events": ["$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "type": "m.room.power_levels", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"users": {"@anon-20191002_181700-276:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041656092, "hashes": {"sha256": "f3ZjK/IOIg4+9PGfugiIl70kfryCCB18wqbcZmEPY9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nZR43axIVrWtLq2Rto0Lqho1BR/cCqlJXD1MZf/TsFCB6LmcCOVKDhn8+Uf+SwvRGLJueGSi6/8yZd+Qj336DA"}}, "unsigned": {"age_ts": 1570041656092}}v9eQay$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1338}{"auth_events": ["$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0"], "prev_events": ["$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0"], "type": "m.room.member", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-276", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-276:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041655336, "hashes": {"sha256": "FZyTPT7FzPySmwylZyliTcT0e09cHRfgKxPJfEGEEQ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qlIacggMxRKhUz/hgjhKdBh7ELHJOJpSn4lpV9eoh5eYaBLmVHy/knOwCTy4kuKu8XF/M0UiZefYFmSDhOB2Bg"}}, "unsigned": {"age_ts": 1570041655336}}i8eQa_$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1337}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-276:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041654008, "hashes": {"sha256": "q6G1Q9QICS7kO5/knAXnQSp46mspgYHE+LmbSoMiHAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mdolABM+7BgkC9wlz5S07gBRkPJE+T1AZ52HKZgqU1BQFKcZGOdD+N3kyc6qJ1qFPIrNIIWqtHFrUOJwx0kYAg"}}, "unsigned": {"age_ts": 1570041654008}}[7eQaC$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800{"token_id": 294, "stream_ordering": 1336}{"auth_events": ["$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs", "$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE", "$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg"], "prev_events": ["$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg"], "type": "m.room.member", "room_id": "!bzPCFeFSMbCESvNbxl:localhost:8800", "sender": "@anon-20191002_181700-274:localhost:8800", "content": {"membership": "leave"}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-274:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041652168, "hashes": {"sha256": "Sum2wjKx67zPf00BuQZ6PvdHzjwvf8gq1FHSF1gj6JI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u1hELeZE/U/+bh9kaSX00Y17TinJ7560EFnsgxFmSwNuLtbzVyCMP5Nt6IVQjEqusIIS3dJS/glugevU/qdDBQ"}}, "unsigned": {"age_ts": 1570041652168, "replaces_state": "$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg"}} Om: r? { J  U $ ` / k : v E NW$^-i6q?xDzIT#.n Q  !csWEXfVEVxdviNvgAd:localhost:8800%.m Q   !aHyAJEOSdKqTiRjOvw:localhost:8800%.l Q !hnQOBexFYpvJntEChZ:localhost:8800.k Q !hDAzBWYEyRVBRlrCHh:localhost:8800.j Q !fkvdYkesQOFCAQkzky:localhost:8800 .i Q !OWGKxAmTrHLciIdrJi:localhost:8800.h Q  !aknLNLxfChlLvFYhkJ:localhost:8800%.g Q  !HWTlaNxUKnDsrtlOxU:localhost:8800%.f Q  !pUSFAnuwUuMlbiInDR:localhost:8800%0e Q!SrMQpDMFREKRMELwbL:localhost:8800%0d Q!bNSXSTadOMhIrYpMzH:localhost:8800%0c Q!TlJCaYlCkOOVzFDlLx:localhost:8800%.b Q   !bOSxzttDtclnrWnLov:localhost:8800%0a Q!DnUHoxreGexNmjSVpq:localhost:8800%.` Q  !rwUuVBrftGHDBOlEZm:localhost:8800%._ Q  !CkNvQnbApPIcuKygDk:localhost:8800%0^ Q!NboFFVLpJHTeuUKCjM:localhost:8800%.] Q  !aZwMKYDXJRlSKjQNWM:localhost:8800%/\ Q !XiwGxQKwjgutEClKUy:localhost:8829%.[ Q  !mTlCLZQCmfDuQsJxxp:localhost:8800%.Z Q  !PEcOacvKaBKpXjytEF:localhost:8800%/Y Q !NajQnqYmGyTjxhFYar:localhost:8829%.X Q  !sJnuQYOyruhUpXDsLY:localhost:8800%0W Q!TeraguiGoZoeOGFzlI:localhost:8800%.V Q  !UaitDdkGDcwvRLJSvp:localhost:8800%.U Q  !dDqNKNFdIjCAwnyaxp:localhost:8800%.T Q  !kjueCKHmYaYefEEpQY:localhost:8800%.S Q  !nftGLlLhVgzOwOFufp:localhost:8800%.R Q  !raCWVWQGnXbmkexpCN:localhost:8800%.Q Q  !kwJgbtogEzCqYbUXfh:localhost:8800%.P Q  !JZouHBRxCRbcxYJnbn:localhost:8800%.O Q  !HOPyhZPcKkrvSmDIvX:localhost:8800%0N Q!EWkoFeckhXlNyjuIEB:localhost:8800%0M Q!utJsNQubeIXvcTKGpx:localhost:8800%0L Q!iTQSCiLqRMDtgXtUdC:localhost:8800%.K Q  !UMFUOnYRvwKwSPkYHB:localhost:8800%.J Q  !hZuwenlFDapIPBOyfi:localhost:8800%.I Q  !LvARVIpJZeRQxbKefX:localhost:8800%.H Q  !SfYtaUhCFosNfHfUVm:localhost:8800%.G Q  !NPdjmIfsBVIIkvWBzD:localhost:8800%.E Q  !beBXQofoOfxNBtzsut:localhost:8800%.F Q  !vyCFfUTJKYJSDadFhT:localhost:8800 %.D Q  !xvblqEscwOtCqJntfF:localhost:8800%0C Q!HhYREfUiJTpjWmOuPF:localhost:8800%.B Q  !nvclDopiBLEOKBIheH:localhost:8800%.A Q  !YgaGPEraeLCqHQirin:localhost:8800%.@ Q  !aVxOoyiLLnxmzgLJat:localhost:8800%.? Q  !fuHSJcznvGQnoYoLPW:localhost:8800%.> Q  !hYPSaMPGsLnvYSmwhg:localhost:8800%.= Q  !jIfvTrwedrWLubsnlM:localhost:8800%.< Q  !KeqmSjifajNKxtgqhj:localhost:8800%.; Q  !icheSPMgpemswIdQkw:localhost:8800%.: Q  !EyyNoldCLUdFHzXTDP:localhost:8800%.9 Q  !vpuivIQDEhyuhOLWpg:localhost:8800%.8 Q  !uSBqTezaFcMnlowsEf:localhost:8800%.7 Q  !NrxQuziwSWzsHuXIlG:localhost:8800%.6 Q  !CNFopUEQTFbzjmLvii:localhost:8800%.5 Q  !WhqVaRReBxJXADAyYD:localhost:8800%.4 Q  !aLxrqpqLkbzyIxGgpk:localhost:8800%.3 Q  !BfEFIDBthhkweqfhir:localhost:8800 %.2 Q  !aaRwQZdNAliyvRHpjs:localhost:8800 %.1 Q  !ZShBIxwbJmxjjZmoRQ:localhost:8800%.0 Q  !NNiyzThHMivrxhojfp:localhost:8800%./ Q  !QFiJrWFFeTAAAUCjCE:localhost:8800%.. Q  !KmuRTfGFgJdgIDAgIW:localhost:8800%.- Q  !mOrKBPhetifKHDmElM:localhost:8800%., Q  !QyLUggxrTnULUAOseq:localhost:8800%.+ Q  !azRJNFPIRSFAskLILK:localhost:8800%.* Q  !MBWnwKRwFznvRpAzxr:localhost:8800%.) Q   !krhefVncoErkCtnvsy:localhost:8800%0( Q!mMsxpaIlcykPuOnDyl:localhost:8800%0' Q!VOhMAiLfKyTOZbmKGw:localhost:8800%0& Q!ffijTnPMbTrDXHqOXf:localhost:8800%.% Q  !wLitJYvgvNJzanSIvO:localhost:8800%.$ Q  !hWHyATwKfuznrqTiyu:localhost:8800%0# Q!cGkVFpidyBBxUxsszG:localhost:8800%." Q  !jveVPZSXJOJyNDebPO:localhost:8800%.! Q  !rJhSRzmWBQHlIhuDXT:localhost:8800%. Q  !fsbkkRBZlUcBVVfMME:localhost:8800%  si>eQa_$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1343}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-277:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041660607, "hashes": {"sha256": "VN9pXxmowhCyo0O9YWWXb2jOVTUA4OXCruB+XMwUqHc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rgkWnkgLF+zZ48ExibcGIP2uh7kfl7FH4xpFGMbKBdxLTA4G4bf87y3SgfoITFS4uoiw5oFmO/kpc7E1iEs3AA"}}, "unsigned": {"age_ts": 1570041660607}}=eQy$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "txn_id": "143", "stream_ordering": 1342}{"auth_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU", "$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4"], "type": "m.room.message", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"msgtype": "m.text", "body": "hello, world"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041658911, "hashes": {"sha256": "AkCDek/2N/w/zCmw49WLb8oxfZj3jtVDHkadx4ZV4g8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fOXEKGuHMirLo0dX17wIG5jmmop27qJ2WtfJ0G27Ejdr1wEcdnjlB8giQB+OwBfnkZiokED2S0lAqZVl//KYAw"}}, "unsigned": {"age_ts": 1570041658911}}<eQa$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1341}{"auth_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU", "$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg"], "type": "m.room.history_visibility", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041657743, "hashes": {"sha256": "Wek7Smx1xte8FTXyLDPQpmNCWP2IxviznNPYbmeHV+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8zAcHwlB9xnG2CNQ6N0aDdygNe2oBr03bzL43wW/+Ebz98Lx0EoKlEUEn7DCGrBrAuJcJ2KnLVy6cZc8QwpFAA"}}, "unsigned": {"age_ts": 1570041657743}}t;eQau$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg!fsbkkRBZlUcBVVfMME:localhost:8800{"token_id": 296, "stream_ordering": 1340}{"auth_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU", "$VrcGGS64u8c_DJcTWLT4yqYMsSOOkq5cPm_3SaKeER0", "$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc"], "prev_events": ["$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU"], "type": "m.room.join_rules", "room_id": "!fsbkkRBZlUcBVVfMME:localhost:8800", "sender": "@anon-20191002_181700-276:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041657001, "hashes": {"sha256": "f8gbRd4MzdXRTJxlH/gZaBjKYDt9criBNbX52RipYC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/gwBy4BloFAfOSoDRKAWHssnni9oau296SuMOgB808oxG7CEKPplQfr1yhlGBpB5oNSCmluDZyYaoxrXMK5LCA"}}, "unsigned": {"age_ts": 1570041657001}} RP e  c  x&v,A?R!Te)Q ]$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQm.room.message!cGkVFpidyBBxUxsszG:localhost:8800mLm@anon-20191002_181700-280:localhost:8800 Se'Q ]$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkm.room.member!cGkVFpidyBBxUxsszG:localhost:8800mɔm@anon-20191002_181700-282:localhost:8800 Re'Q ]$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawm.room.member!cGkVFpidyBBxUxsszG:localhost:8800mAmƯ@anon-20191002_181700-281:localhost:8800,Qe?Q ]$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4m.room.history_visibility!cGkVFpidyBBxUxsszG:localhost:8800m må@anon-20191002_181700-280:localhost:8800$Pe/Q ]$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0m.room.join_rules!cGkVFpidyBBxUxsszG:localhost:8800mƼmƽ@anon-20191002_181700-280:localhost:8800&Oe3Q ]$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sm.room.power_levels!cGkVFpidyBBxUxsszG:localhost:8800mƺ5mƻ(@anon-20191002_181700-280:localhost:8800 Ne'Q ]$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwm.room.member!cGkVFpidyBBxUxsszG:localhost:8800mƸ+mƸ@anon-20191002_181700-280:localhost:8800M e'Q  ]$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAm.room.create!cGkVFpidyBBxUxsszG:localhost:8800mƴ5mƴ@anon-20191002_181700-280:localhost:8800!Le)Q ]$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsm.room.message!jveVPZSXJOJyNDebPO:localhost:8800mƬ^mƬe@anon-20191002_181700-279:localhost:8800!Ke)Q ]$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Nsm.room.message!jveVPZSXJOJyNDebPO:localhost:8800mƪmƪ@anon-20191002_181700-279:localhost:8800!Je)Q ]$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksm.room.message!jveVPZSXJOJyNDebPO:localhost:8800mƧmƧ@anon-20191002_181700-279:localhost:8800,Ie?Q ]$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEm.room.history_visibility!jveVPZSXJOJyNDebPO:localhost:8800mƣ:mƥ@anon-20191002_181700-279:localhost:8800$He/Q ]$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcm.room.join_rules!jveVPZSXJOJyNDebPO:localhost:8800mƠmơq@anon-20191002_181700-279:localhost:8800&Ge3Q ]$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwm.room.power_levels!jveVPZSXJOJyNDebPO:localhost:8800mƝmƞ@anon-20191002_181700-279:localhost:8800 Fe'Q ]$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Igm.room.member!jveVPZSXJOJyNDebPO:localhost:8800mƛmƛ@anon-20191002_181700-279:localhost:8800E e'Q  ]$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIm.room.create!jveVPZSXJOJyNDebPO:localhost:8800mƘmƘ@anon-20191002_181700-279:localhost:8800!De)Q ]$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68m.room.message!rJhSRzmWBQHlIhuDXT:localhost:8800mƒmƒ@anon-20191002_181700-277:localhost:8800,Ce?Q ]$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Im.room.history_visibility!rJhSRzmWBQHlIhuDXT:localhost:8800mƏmƐ@anon-20191002_181700-277:localhost:8800$Be/Q ]$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcm.room.join_rules!rJhSRzmWBQHlIhuDXT:localhost:8800mƌmƍR@anon-20191002_181700-277:localhost:8800&Ae3Q ]$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIm.room.power_levels!rJhSRzmWBQHlIhuDXT:localhost:8800mƉmƊ@anon-20191002_181700-277:localhost:8800 @e'Q ]$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owm.room.member!rJhSRzmWBQHlIhuDXT:localhost:8800mƇmƈ-@anon-20191002_181700-277:localhost:8800? e'Q  ]$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4m.room.create!rJhSRzmWBQHlIhuDXT:localhost:8800mƄmƅ@anon-20191002_181700-277:localhost:8800!>e)Q ]$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0m.room.message!fsbkkRBZlUcBVVfMME:localhost:8800m~m~$@anon-20191002_181700-276:localhost:8800,=e?Q ]$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4m.room.history_visibility!fsbkkRBZlUcBVVfMME:localhost:8800mym{g@anon-20191002_181700-276:localhost:8800 9L5 o 3 o 3 o N No3o3w;tg+w;K[9W Q !NajQnqYmGyTjxhFYar:localhost:8829publicshared9V Q !sJnuQYOyruhUpXDsLY:localhost:8800publicshared9U Q !TeraguiGoZoeOGFzlI:localhost:8800publicshared9T Q !UaitDdkGDcwvRLJSvp:localhost:8800publicshared9S Q !dDqNKNFdIjCAwnyaxp:localhost:8800publicshared9R Q !kjueCKHmYaYefEEpQY:localhost:8800publicshared9Q Q !nftGLlLhVgzOwOFufp:localhost:8800publicshared9P Q !raCWVWQGnXbmkexpCN:localhost:8800publicshared9O Q !kwJgbtogEzCqYbUXfh:localhost:8800publicshared9N Q !JZouHBRxCRbcxYJnbn:localhost:8800publicshared9M Q !HOPyhZPcKkrvSmDIvX:localhost:8800publicshared9L Q !EWkoFeckhXlNyjuIEB:localhost:8800publicshared9K Q !utJsNQubeIXvcTKGpx:localhost:8800publicshared9J Q !iTQSCiLqRMDtgXtUdC:localhost:8800publicshared9I Q !UMFUOnYRvwKwSPkYHB:localhost:8800publicshared9H Q !hZuwenlFDapIPBOyfi:localhost:8800publicshared9G Q !LvARVIpJZeRQxbKefX:localhost:8800publicsharedjE Qa !NPdjmIfsBVIIkvWBzD:localhost:8800#publicroomalias_with_topic:localhost:8800publicsharedtopic_1`C Q[ !beBXQofoOfxNBtzsut:localhost:8800#publicroomalias_no_name:localhost:8800publicshared LF Q !!SfYtaUhCFosNfHfUVm:localhost:8800Test NamepublicsharedTest TopicuD Qk !vyCFfUTJKYJSDadFhT:localhost:8800name_2#publicroomalias_with_name_topic:localhost:8800publicsharedtopic_29B Q !xvblqEscwOtCqJntfF:localhost:8800publicshared9A Q !HhYREfUiJTpjWmOuPF:localhost:8800publicshared9@ Q !nvclDopiBLEOKBIheH:localhost:8800publicsharedA? Q !YgaGPEraeLCqHQirin:localhost:8800publicsharedcan_join9> Q !aVxOoyiLLnxmzgLJat:localhost:8800publicsharedA= Q !fuHSJcznvGQnoYoLPW:localhost:8800publicsharedcan_join9< Q !hYPSaMPGsLnvYSmwhg:localhost:8800publicsharedA; Q!jIfvTrwedrWLubsnlM:localhost:8800publicsharedcan_join9: Q!KeqmSjifajNKxtgqhj:localhost:8800publicsharedA9 Q !icheSPMgpemswIdQkw:localhost:8800publicsharedcan_join98 Q !EyyNoldCLUdFHzXTDP:localhost:8800publicshared\7 QC !vpuivIQDEhyuhOLWpg:localhost:8800#__ANON__-13:localhost:8800publicsharedcan_join96 Q !uSBqTezaFcMnlowsEf:localhost:8800publicsharedA5 Q !NrxQuziwSWzsHuXIlG:localhost:8800publicsharedcan_join94 Q !CNFopUEQTFbzjmLvii:localhost:8800publicsharedA3 Q !WhqVaRReBxJXADAyYD:localhost:8800publicsharedcan_join92 Q !aLxrqpqLkbzyIxGgpk:localhost:8800publicsharedo1 Q5- !BfEFIDBthhkweqfhir:localhost:8800namepublicjoinedm.megolm.v1.aes-sha2http://somethingforbiddentopico0 Q5- !aaRwQZdNAliyvRHpjs:localhost:8800namepublicjoinedm.megolm.v1.aes-sha2http://somethingforbiddentopicA/ Q !ZShBIxwbJmxjjZmoRQ:localhost:8800publicsharedcan_join9. Q !NNiyzThHMivrxhojfp:localhost:8800publicsharedA- Q !QFiJrWFFeTAAAUCjCE:localhost:8800publicsharedcan_join9, Q !KmuRTfGFgJdgIDAgIW:localhost:8800publicsharedA+ Q !mOrKBPhetifKHDmElM:localhost:8800publicsharedcan_join9* Q !QyLUggxrTnULUAOseq:localhost:8800publicsharedA) Q !azRJNFPIRSFAskLILK:localhost:8800publicsharedcan_join9( Q !MBWnwKRwFznvRpAzxr:localhost:8800publicshared`' Q[ !krhefVncoErkCtnvsy:localhost:8800#test-20191002_181700-42:localhost:8800publicshared`& Q[ !mMsxpaIlcykPuOnDyl:localhost:8800#test-20191002_181700-41:localhost:8800publicshared`% Q[ !VOhMAiLfKyTOZbmKGw:localhost:8800#test-20191002_181700-40:localhost:8800publicshared9$ Q !ffijTnPMbTrDXHqOXf:localhost:8800publicjoined9# Q !wLitJYvgvNJzanSIvO:localhost:8800publicshared9" Q !hWHyATwKfuznrqTiyu:localhost:8800publicshared9! Q !cGkVFpidyBBxUxsszG:localhost:8800publicshared9 Q !jveVPZSXJOJyNDebPO:localhost:8800publicshared9 Q !rJhSRzmWBQHlIhuDXT:localhost:8800publicshared  BeQa$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1347}{"auth_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI", "$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc"], "type": "m.room.history_visibility", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041663250, "hashes": {"sha256": "gFRhSog9Y3XIzDHjwl9tRmhk+ce+c4/UmFcwL8Znopo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h4fmDBzWZINwgnc1GvWhHsk1sHzUov1sDta/r7QpWQqVpu3lDaOvepN+pgmcYxCWKjKv1KtUJx/khHsHJyx+DA"}}, "unsigned": {"age_ts": 1570041663250}}tAeQau$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1346}{"auth_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI", "$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI"], "type": "m.room.join_rules", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041662625, "hashes": {"sha256": "kvzdw7A3TvsamAccizl8DstKPbF9n6h0MNKOcF/UCCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LyqRz7ibeCvhj0IOZ1SAaMQa1M3MzOeJHk2+5uj+ozno4+u0RU8D88uZz46lQhQfYA5NWXdouYE2S2dI+LtWCQ"}}, "unsigned": {"age_ts": 1570041662625}}k@eQac$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1345}{"auth_events": ["$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "type": "m.room.power_levels", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"users": {"@anon-20191002_181700-277:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041661926, "hashes": {"sha256": "59x+6kKTxRTma1HeA0D1zoYnPTVECITP/tzEU6mql7A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sGUpmu1XX6INp9NdUgygpEWI9xgbq1f5ALzjdJZUidbVQoueQYct1l8H6Tng7Ii8W3k9nIx0U5Uji0Hcyh5gBA"}}, "unsigned": {"age_ts": 1570041661926}}v?eQay$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "stream_ordering": 1344}{"auth_events": ["$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4"], "prev_events": ["$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4"], "type": "m.room.member", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-277", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-277:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041661380, "hashes": {"sha256": "IopQeLoKXClQcXRcul2TllHhJACkMfawlNMk2fCmn0A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nbbrhBf0BpcdX95M7nP6eoXPci3Iwv2RTXzgQYIMp5+SU/Jlf6/bs4KgZ8Wb6xNAXqYuI//eDB1T28ue/qC6BA"}}, "unsigned": {"age_ts": 1570041661380}} H[)a/j8p>g V $ \ * b 0 i 7  o = uC{IO5U#o= 1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQz1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V871e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc |1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-401e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY ;1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ;1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8=1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q n1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY>1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw71e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNot1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc]1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4m1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U !1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oh1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt81e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 40e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUK1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcE1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUG1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcA1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT81e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A 1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoA$lolredact:localhost:42455 `1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4;1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8 a} { y w u sqomkigeca~ eeQ$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800~ eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800~ eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~eeQ$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800~~eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800~}eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~|eeQ$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800~{eeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800~zeeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~yeeQ$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800~xeeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800~weeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~veeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800~ueeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800~teeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~seeQ$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800~reeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800~qeeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~peeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800~oeeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow!rJhSRzmWBQHlIhuDXT:localhost:8800~neeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4!rJhSRzmWBQHlIhuDXT:localhost:8800~meeQ$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI!rJhSRzmWBQHlIhuDXT:localhost:8800  t  kFeQac$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1351}{"auth_events": ["$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "type": "m.room.power_levels", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"users": {"@anon-20191002_181700-279:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041666945, "hashes": {"sha256": "gsd4g3p8pWhsMEEZZo4aMeRI/Q8D9Wd7PJoPWIA+9+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aPgQYP9MZCSO2MIBU+ZCiy5huDFldtwRZsso01GWuAen1W3tmdEeWkPQu7VVDOlpwnznpo6rHpdLOOUrAeYjBg"}}, "unsigned": {"age_ts": 1570041666945}}vEeQay$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1350}{"auth_events": ["$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI"], "prev_events": ["$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI"], "type": "m.room.member", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-279", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-279:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041666439, "hashes": {"sha256": "ZWeZX8MZw+qkVZdPlQk5cOINuJYjWmxhijtLQRsUITs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dERhnxtOt/maCK1vpqveq1IN5x7e7x2GELgUifZylYKg2rRz9QN5w57muv4I+mUNVvVvG7v/qPk6FeaBK0+fDg"}}, "unsigned": {"age_ts": 1570041666439}}iDeQa_$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1349}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-279:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041665693, "hashes": {"sha256": "KR3GEwgcaoy6Qx1mRo1cZFOEMN5X5OwK5tcqtdKLjb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aWws12iZ9CEkCScB0AmC8CF8GQTyFDP0vNMVQMhhHWmaJp5uJJMgKoLo56Lq0IZA3sq6KuHHvgOuFzVCTcH3Aw"}}, "unsigned": {"age_ts": 1570041665693}}CeQy$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800{"token_id": 297, "txn_id": "144", "stream_ordering": 1348}{"auth_events": ["$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI", "$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4", "$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow"], "prev_events": ["$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I"], "type": "m.room.message", "room_id": "!rJhSRzmWBQHlIhuDXT:localhost:8800", "sender": "@anon-20191002_181700-277:localhost:8800", "content": {"msgtype": "m.text", "body": "hello, world"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041664228, "hashes": {"sha256": "QBBb6t370KYB9YrKkkH9idjhfBL9yXUp23Nsvg8aDLE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FLsc8x+d9F7xImBo2zmFerbwh1H+Zl89Tt9IS0WoFu/vlE6RP6PkbsYy3sGrLu1aZVxTzMjbQvDNqsaeGWZRCw"}}, "unsigned": {"age_ts": 1570041664228}}  4 h 6jd]c@anon-20191002_181700-308:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgo127.0.0.13d]c@anon-20191002_181700-307:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgo127.0.0.12d]c@anon-20191002_181700-306:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwo127.0.0.11d]c@anon-20191002_181700-305:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQo127.0.0.10d]c@anon-20191002_181700-304:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1Owo127.0.0.1/d]c@anon-20191002_181700-303:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAo127.0.0.1.d]c@anon-20191002_181700-302:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQo127.0.0.1-d]c@anon-20191002_181700-301:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwo127.0.0.1,d]c@anon-20191002_181700-300:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0Qo127.0.0.1+d]c@anon-20191002_181700-299:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQo127.0.0.1*d]c@anon-20191002_181700-298:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4Qo127.0.0.1) 5 i 4 h gi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1VeSt5ODEuWm87UjdKY0YKMDAyZnNpZ25hdHVyZSDTpoEgR9XlmVmJc5SliwVUnFErAOv6y_GJpoo2kiEBAwoՂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5jbWhGI3NVbzdRN0ZVOUYKMDAyZnNpZ25hdHVyZSDFOi3T8ib3QFWEJRdS9JEKRlY1pXMW0qqy2gWfbH2x3goւ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQo61cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAo331cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4Qo51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAo41cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQo21cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQo11cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwo01cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTIwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDF4dzt5NVhUQzR2aXp0JisKMDAyZnNpZ25hdHVyZSD9QSywnh8104wl3lN9t2uWjOUpqEtvPgW6Z2v56L6tXQoԂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_go/1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAo. -RM H C > 9 4/*|%w rmhc TwQeq!VOhMAiLfKyTOZbmKGw:localhost:8800$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkTvQep!VOhMAiLfKyTOZbmKGw:localhost:8800$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8TuQeo!VOhMAiLfKyTOZbmKGw:localhost:8800$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwTtQen!VOhMAiLfKyTOZbmKGw:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYTsQem!VOhMAiLfKyTOZbmKGw:localhost:8800$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8TrQel!ffijTnPMbTrDXHqOXf:localhost:8800$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wTqQek!ffijTnPMbTrDXHqOXf:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoTpQej!ffijTnPMbTrDXHqOXf:localhost:8800$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0ToQei!ffijTnPMbTrDXHqOXf:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkTnQeh!ffijTnPMbTrDXHqOXf:localhost:8800$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkTmQeg!ffijTnPMbTrDXHqOXf:localhost:8800$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoTlQef!ffijTnPMbTrDXHqOXf:localhost:8800$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiITkQee!ffijTnPMbTrDXHqOXf:localhost:8800$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoTjQed!ffijTnPMbTrDXHqOXf:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HoTiQec!ffijTnPMbTrDXHqOXf:localhost:8800$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMThQeb!wLitJYvgvNJzanSIvO:localhost:8800$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4TgQea!wLitJYvgvNJzanSIvO:localhost:8800$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4TfQe`!wLitJYvgvNJzanSIvO:localhost:8800$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrITeQe_!wLitJYvgvNJzanSIvO:localhost:8800$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cTdQe^!wLitJYvgvNJzanSIvO:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMTcQe]!wLitJYvgvNJzanSIvO:localhost:8800$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQTbQe\!hWHyATwKfuznrqTiyu:localhost:8800$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4TaQe[!hWHyATwKfuznrqTiyu:localhost:8800$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsT`QeZ!hWHyATwKfuznrqTiyu:localhost:8800$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgT_QeY!hWHyATwKfuznrqTiyu:localhost:8800$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsT^QeX!hWHyATwKfuznrqTiyu:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpET]QeW!hWHyATwKfuznrqTiyu:localhost:8800$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wT\QeV!cGkVFpidyBBxUxsszG:localhost:8800$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwT[QeU!cGkVFpidyBBxUxsszG:localhost:8800$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsTZQeT!cGkVFpidyBBxUxsszG:localhost:8800$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQTYQeS!cGkVFpidyBBxUxsszG:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkTXQeR!cGkVFpidyBBxUxsszG:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawTWQeQ!cGkVFpidyBBxUxsszG:localhost:8800$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4TVQeP!cGkVFpidyBBxUxsszG:localhost:8800$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0TUQeO!cGkVFpidyBBxUxsszG:localhost:8800$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sTTQeN!cGkVFpidyBBxUxsszG:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwTSQeM!cGkVFpidyBBxUxsszG:localhost:8800$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeATRQeL!jveVPZSXJOJyNDebPO:localhost:8800$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsTQQeK!jveVPZSXJOJyNDebPO:localhost:8800$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsTPQeJ!jveVPZSXJOJyNDebPO:localhost:8800$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivksTOQeI!jveVPZSXJOJyNDebPO:localhost:8800$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxETNQeH!jveVPZSXJOJyNDebPO:localhost:8800$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcTMQeG!jveVPZSXJOJyNDebPO:localhost:8800$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwTLQeF!jveVPZSXJOJyNDebPO:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgTKQeE!jveVPZSXJOJyNDebPO:localhost:8800$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI  sJeQy$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "txn_id": "146", "stream_ordering": 1355}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks"], "type": "m.room.message", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"body": "hello, world", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041670158, "hashes": {"sha256": "zQ+94Jt5SD3N25Se4zcLKt0rz9XYUeRhsUCA5s4slw0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C9hJn7gxvPCAyBKsq6jyEml81NAvQ3UANeyBgnLPKUNLGkl2uWbzYZaX8xP17k31jGVH2ZmSYgDACuC9D8HnAQ"}}, "unsigned": {"age_ts": 1570041670158}}IeQy$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "txn_id": "145", "stream_ordering": 1354}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE"], "type": "m.room.message", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"msgtype": "m.text", "body": "event before"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041669570, "hashes": {"sha256": "cOUtD2JMGHVbKLL5Ix0+oU3h9OEnFgD+gcLR6/dFvGA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "snl1Vqldaw/JoMS4DpslsFIjRTJznxh8Hqx986JLWvfisHpPkGRDhcelY3TTofT1qYcL8BRfRpkurza3I/gYCA"}}, "unsigned": {"age_ts": 1570041669570}}HeQa$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1353}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc"], "type": "m.room.history_visibility", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041668410, "hashes": {"sha256": "7K0HN+LKn3yTdNSDTVwGxEOd85Ldq7tpLOw4zKoLoCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eCd0dLONYVZ9YsX1SIYUQzEWKo2gBM7Ycbz+E+P2e/TtlKDvyctMeSdghNrhUr2J5TA+0rFP2lwC6LAwjnZZCw"}}, "unsigned": {"age_ts": 1570041668410}}tGeQau$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "stream_ordering": 1352}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw"], "type": "m.room.join_rules", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041667743, "hashes": {"sha256": "MN7kNd0tQ4ZHAoR3wxPiEZcZTMs3JqCiZh+ZA6YriD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F8iahVlZ+8Uiuv3/T2Kkzy4Nib/JLS+1YVFBZbKtnCHPtX2g+zkUJfTT9rQQrhpJmdyRoDefi1H4puUQ2duDDQ"}}, "unsigned": {"age_ts": 1570041667743}} !(- Q 3 > h +SX| {@rQ))e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQoQ? e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibility$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcg~Q/ e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rules$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkl}Q9 e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_alias$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8i|Q3 e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levels$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw {Q']e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYczQ' e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.create$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8 yQ']e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo xQ']e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkowQ? e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkovQ? e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoguQ/ e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rules$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIitQ3 e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levels$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo sQ']e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HocrQ' e!ffijTnPMbTrDXHqOXf:localhost:8800m.room.create$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMoqQ? e!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibility$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4gpQ/ e!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rules$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIioQ3 e!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c nQ']e!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMcmQ' e!wLitJYvgvNJzanSIvO:localhost:8800m.room.create$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQolQ? e!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibility$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsgkQ/ e!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rules$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgijQ3 e!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs iQ']e!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEchQ' e!hWHyATwKfuznrqTiyu:localhost:8800m.room.create$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w gQ']e!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk fQ']e!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawoeQ? e!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibility$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4gdQ/ e!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rules$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0icQ3 e!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s bQ']e!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwcaQ' e!cGkVFpidyBBxUxsszG:localhost:8800m.room.create$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAo`Q? e!jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibility$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE R[ p  n ' 1:D@R!le)Q ] $aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wm.room.message!ffijTnPMbTrDXHqOXf:localhost:8800 mm@anon-20191002_181700-286:localhost:8800 ke'Q ] $TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGom.room.member!ffijTnPMbTrDXHqOXf:localhost:8800 mCm@anon-20191002_181700-287:localhost:8800!je)Q ]$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0m.room.message!ffijTnPMbTrDXHqOXf:localhost:8800mm@anon-20191002_181700-286:localhost:8800 ie'Q ]$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkm.room.member!ffijTnPMbTrDXHqOXf:localhost:8800mm@anon-20191002_181700-286:localhost:8800,he?Q ]$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkm.room.history_visibility!ffijTnPMbTrDXHqOXf:localhost:8800mm1@anon-20191002_181700-286:localhost:8800,ge?Q ]$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQom.room.history_visibility!ffijTnPMbTrDXHqOXf:localhost:8800mm>@anon-20191002_181700-286:localhost:8800$fe/Q ]$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIm.room.join_rules!ffijTnPMbTrDXHqOXf:localhost:8800m m P@anon-20191002_181700-286:localhost:8800&ee3Q ]$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYom.room.power_levels!ffijTnPMbTrDXHqOXf:localhost:8800m m @anon-20191002_181700-286:localhost:8800 de'Q ]$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hom.room.member!ffijTnPMbTrDXHqOXf:localhost:8800mmI@anon-20191002_181700-286:localhost:8800c e'Q  ]$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMm.room.create!ffijTnPMbTrDXHqOXf:localhost:8800mm @anon-20191002_181700-286:localhost:8800!be)Q ]$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4m.room.message!wLitJYvgvNJzanSIvO:localhost:8800mm(@anon-20191002_181700-284:localhost:8800,ae?Q ]$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4m.room.history_visibility!wLitJYvgvNJzanSIvO:localhost:8800m@m@anon-20191002_181700-284:localhost:8800$`e/Q ]$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIm.room.join_rules!wLitJYvgvNJzanSIvO:localhost:8800mm@anon-20191002_181700-284:localhost:8800&_e3Q ]$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73cm.room.power_levels!wLitJYvgvNJzanSIvO:localhost:8800mmV@anon-20191002_181700-284:localhost:8800 ^e'Q ]$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMm.room.member!wLitJYvgvNJzanSIvO:localhost:8800mm^@anon-20191002_181700-284:localhost:8800] e'Q  ]$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQm.room.create!wLitJYvgvNJzanSIvO:localhost:8800mim@anon-20191002_181700-284:localhost:8800!\e)Q ]$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4m.room.message!hWHyATwKfuznrqTiyu:localhost:8800mm@anon-20191002_181700-283:localhost:8800,[e?Q ]$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsm.room.history_visibility!hWHyATwKfuznrqTiyu:localhost:8800m,m&@anon-20191002_181700-283:localhost:8800$Ze/Q ]$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgm.room.join_rules!hWHyATwKfuznrqTiyu:localhost:8800mpmY@anon-20191002_181700-283:localhost:8800&Ye3Q ]$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xsm.room.power_levels!hWHyATwKfuznrqTiyu:localhost:8800mRmܬ@anon-20191002_181700-283:localhost:8800 Xe'Q ]$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEm.room.member!hWHyATwKfuznrqTiyu:localhost:8800m+mج@anon-20191002_181700-283:localhost:8800W e'Q  ]$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7wm.room.create!hWHyATwKfuznrqTiyu:localhost:8800mmՊ@anon-20191002_181700-283:localhost:8800!Ve)Q ] $P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwm.room.message!cGkVFpidyBBxUxsszG:localhost:8800 mЀmЇ@anon-20191002_181700-280:localhost:8800!Ue)Q ] $eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsm.room.message!cGkVFpidyBBxUxsszG:localhost:8800 mm@anon-20191002_181700-280:localhost:8800 Ej18p> v D   } K  Q  W % ] +ci7o= uC{IO1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE a1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM 1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0%1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE]1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo 1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw ]1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg<1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw@1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI 81e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv801e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4/1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E;1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ91e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MD1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ w1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIP1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc31e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k B1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ h1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y $0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYi1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0#1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkq1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU\1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIJ1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY{1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ/1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ K1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI~1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY;1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 ]1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwM1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg  u kNeQac$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1359}{"auth_events": ["$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "type": "m.room.power_levels", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"users": {"@anon-20191002_181700-280:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041674293, "hashes": {"sha256": "JiJlQtbVEsFu4+W/5+tVP7KtXXMcieCPj0b3g+tMW+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nYGf1DuOCcUJFB2p1CFkF3RgbZoehLQwkhWNYhrK9bhLS1yHKRCE15PT7SYc/yfFuS7/D2qwIM3P1vKZEfQ8BQ"}}, "unsigned": {"age_ts": 1570041674293}}vMeQay$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1358}{"auth_events": ["$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA"], "prev_events": ["$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA"], "type": "m.room.member", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-280", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-280:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041673771, "hashes": {"sha256": "dcWKvZuRJwmxPOgwOGzp+6iW/7P1sbpmah3O1OMokA8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JB//GjLg3gIKzTlB1SzgeyCFXFanaSthdU+3Sz5INKL2Zh6GeGc0kudHGtbA1Umz3R0A3Qo7HbcTqoFWgVsCCQ"}}, "unsigned": {"age_ts": 1570041673771}}iLeQa_$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1357}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-280:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041672757, "hashes": {"sha256": "GTJRH4JWUhILYI3rFLNWHrk/6lT3uXYO0om8nsKu2mM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FWuwxXT/weHgenDTCg/UCy6ZHLk4rHu8OLR9xnOzimrwBl0VlnhmlllNS1ZepN3LO/LNIJ9/WfbGweMlYSV0Dw"}}, "unsigned": {"age_ts": 1570041672757}}KeQw$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800{"token_id": 299, "txn_id": "147", "stream_ordering": 1356}{"auth_events": ["$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw", "$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaI", "$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig"], "prev_events": ["$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns"], "type": "m.room.message", "room_id": "!jveVPZSXJOJyNDebPO:localhost:8800", "sender": "@anon-20191002_181700-279:localhost:8800", "content": {"body": "event after", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041670750, "hashes": {"sha256": "9Co0jinwRcFIKvYdejE5nT4pS0UUKVYkojAaF2DmOD0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KepK6guagCGhNSuxuajZ8tFdJIbwuJAbwrafUi5IrlevYQFPbMvoos9kGUJV4V1WISHa401Ea/74Knj3IHJeAA"}}, "unsigned": {"age_ts": 1570041670750}} ?GJ U  \ c ' j . p -r/t1v3x5z7|;BM >V ]  @anon-20191002_181700-312:localhost:8800m&\9U ]@anon-20191002_181700-312:localhost:8800a&\@T ]@anon-20191002_181700-311:localhost:8800m&\IB9S ]@anon-20191002_181700-311:localhost:8800a&\>R ]  @anon-20191002_181700-310:localhost:8800m&\C9Q ]@anon-20191002_181700-310:localhost:8800a&\9P ]@anon-20191002_181700-309:localhost:8800a&\=O ]  @anon-20191002_181700-308:localhost:8800m&\V>N ]  @anon-20191002_181700-307:localhost:8800m&\C9M ]@anon-20191002_181700-308:localhost:8800a&\9L ]@anon-20191002_181700-307:localhost:8800a&\>K ]  @anon-20191002_181700-306:localhost:8800m&\C9J ]@anon-20191002_181700-306:localhost:8800a&\@I ]@anon-20191002_181700-305:localhost:8800m&\79H ]@anon-20191002_181700-305:localhost:8800a&\@G ]@anon-20191002_181700-304:localhost:8800m&\ .9F ]@anon-20191002_181700-304:localhost:8800a&\@E ]@anon-20191002_181700-303:localhost:8800m&\ .=9D ]@anon-20191002_181700-303:localhost:8800a&\@C ]@anon-20191002_181700-302:localhost:8800m&\ .9B ]@anon-20191002_181700-302:localhost:8800a&\@A ]@anon-20191002_181700-301:localhost:8800m&\F79@ ]@anon-20191002_181700-301:localhost:8800a&\@? ]@anon-20191002_181700-300:localhost:8800m&\ .9> ]@anon-20191002_181700-300:localhost:8800a&\@= ]@anon-20191002_181700-299:localhost:8800m&\59< ]@anon-20191002_181700-299:localhost:8800a&\@; ]@anon-20191002_181700-298:localhost:8800m&\d9: ]@anon-20191002_181700-298:localhost:8800a&\@9 ]@anon-20191002_181700-297:localhost:8800m&\798 ]@anon-20191002_181700-297:localhost:8800a&\@7 ]@anon-20191002_181700-296:localhost:8800m&\ .96 ]@anon-20191002_181700-296:localhost:8800a&\@5 ]@anon-20191002_181700-295:localhost:8800m&\ .94 ]@anon-20191002_181700-295:localhost:8800a&\@3 ]@anon-20191002_181700-294:localhost:8800m&\ -92 ]@anon-20191002_181700-294:localhost:8800a&\>1 ]@anon-20191002_181700-293:localhost:8800m&\>0 ]  @anon-20191002_181700-292:localhost:8800m&\y9/ ]@anon-20191002_181700-293:localhost:8800a&\9. ]@anon-20191002_181700-292:localhost:8800a&\=- ]  @anon-20191002_181700-291:localhost:8800m&\V>, ]  @anon-20191002_181700-290:localhost:8800m&\ c9+ ]@anon-20191002_181700-291:localhost:8800a&\9* ]@anon-20191002_181700-290:localhost:8800a&\=) ]  @anon-20191002_181700-289:localhost:8800m&\V>( ]  @anon-20191002_181700-288:localhost:8800m&\y9' ]@anon-20191002_181700-289:localhost:8800a&\9& ]@anon-20191002_181700-288:localhost:8800a&\=% ]  @anon-20191002_181700-287:localhost:8800m&\>$ ] @anon-20191002_181700-286:localhost:8800m&\ 9# ]@anon-20191002_181700-287:localhost:8800a&\9" ]@anon-20191002_181700-286:localhost:8800a&\>! ]  @anon-20191002_181700-284:localhost:8800m&\99 ]@anon-20191002_181700-285:localhost:8800a&\9 ]@anon-20191002_181700-284:localhost:8800a&\> ]  @anon-20191002_181700-283:localhost:8800m&\99 ]@anon-20191002_181700-283:localhost:8800a&\= ]  @anon-20191002_181700-282:localhost:8800m&\V= ]  @anon-20191002_181700-281:localhost:8800m&\V> ]  @anon-20191002_181700-280:localhost:8800m&\,9 ]@anon-20191002_181700-282:localhost:8800a&\9 ]@anon-20191002_181700-281:localhost:8800a&\ I>g<T)k@qF c8oDmB w L ! u J  e: s H i y N # g<T*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!drnXStKXkNQkouqUAg:localhost:8800 L `*Q!drnXStKXkNQkouqUAg:localhost:8800 K _*Q!drnXStKXkNQkouqUAg:localhost:8800 I ]*Q!drnXStKXkNQkouqUAg:localhost:8800 G [*Q!drnXStKXkNQkouqUAg:localhost:8800 E Y*Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ o*Q!dBfASZrfiFeSKTjYJm:localhost:8800 Z n*Q!csWEXfVEVxdviNvgAd:localhost:88003`*Q!csWEXfVEVxdviNvgAd:localhost:88003_*Q!csWEXfVEVxdviNvgAd:localhost:88003^*Q!csWEXfVEVxdviNvgAd:localhost:88002]*Q!csWEXfVEVxdviNvgAd:localhost:88002\*Q!csWEXfVEVxdviNvgAd:localhost:88002[*Q!csWEXfVEVxdviNvgAd:localhost:88000Z*Q!csWEXfVEVxdviNvgAd:localhost:8800-W*Q!csWEXfVEVxdviNvgAd:localhost:8800,V*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dBfASZrfiFeSKTjYJm:localhost:8800 a u*Q!dBfASZrfiFeSKTjYJm:localhost:8800 a t*Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ s*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ r*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] q*Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ p*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 b v*Q!duCKuavMBSfRbTFPsc:localhost:8800''*Q!duCKuavMBSfRbTFPsc:localhost:8800&&*Q!duCKuavMBSfRbTFPsc:localhost:8800%%*Q!duCKuavMBSfRbTFPsc:localhost:8800$$*Q!duCKuavMBSfRbTFPsc:localhost:8800##*Q!duCKuavMBSfRbTFPsc:localhost:8800""*Q!duCKuavMBSfRbTFPsc:localhost:8800!!*Q!duCKuavMBSfRbTFPsc:localhost:8800  *Q!dnZVySJLGNtUKsSgXW:localhost:8800UY*Q!dnZVySJLGNtUKsSgXW:localhost:8800TX*Q!dnZVySJLGNtUKsSgXW:localhost:8800SW*Q!dnZVySJLGNtUKsSgXW:localhost:8800RV*Q!dnZVySJLGNtUKsSgXW:localhost:8800QU*Q!dnZVySJLGNtUKsSgXW:localhost:8800PT*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!drnXStKXkNQkouqUAg:localhost:8800 C W*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 b w*Q!dDqNKNFdIjCAwnyaxp:localhost:8800 9 Ly6_   y(Kx5<JO;HR >  L  WBQ? !pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibility 5Q' !plcvCHNbjCkNMMxnTk:localhost:8800m.room.create<Q3 !peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels^Q']!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800:Q/ !peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rulesBQ? !peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibility6Q' !peJMRJtXBvIiCttNmm:localhost:8800m.room.create<Q3 !pduebXnTyxQWVxEICp:localhost:8800m.room.power_levels|^Q']!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-549:localhost:8800^Q']!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-548:localhost:8800{:Q/ !pduebXnTyxQWVxEICp:localhost:8800m.room.join_rules}BQ? !pduebXnTyxQWVxEICp:localhost:8800m.room.history_visibility~6Q' !pduebXnTyxQWVxEICp:localhost:8800m.room.createz<Q3 !paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels^Q']!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800^Q']!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800:Q/ !paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rulesBQ? !paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibility6Q' !paDmNxsOZIKyApbxXs:localhost:8800m.room.create<Q3 !pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels3^Q']!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:88006^Q']!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:88002:Q/ !pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rules4BQ? !pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibility56Q' !pUSFAnuwUuMlbiInDR:localhost:8800m.room.create1<Q3 !pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels^Q']!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800:Q/ !pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rulesBQ? !pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibility6Q' !pJUItjYTOUJQFIxyiX:localhost:8800m.room.create<Q3 !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levels _^Q']!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800 ^QQ'C!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455 b:Q/ !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules `BQ? !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility a:Q/ !pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rules ?Q9 !qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_alias NEQ))!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800 Q<Q3 !qSUSLLWjDxcGibUZdT:localhost:8800m.room.power_levels^Q']!qSUSLLWjDxcGibUZdT:localhost:8800m.room.member@anon-20191002_181700-234:localhost:8800<Q3 !pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels ^Q']!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800 6Q' !pTvdDtkgovsIdAdxCm:localhost:8800m.room.create :Q/ !qSUSLLWjDxcGibUZdT:localhost:8800m.room.join_rulesBQ? !qSUSLLWjDxcGibUZdT:localhost:8800m.room.history_visibility6Q' !qSUSLLWjDxcGibUZdT:localhost:8800m.room.create<Q3 !qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels ~^Q']!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800 }:Q/ !qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules BQ? !qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility 6Q' !qInWQPtNQfBFoVzUtP:localhost:8800m.room.create |;Q3 !plcvCHNbjCkNMMxnTk:localhost:8800m.room.power_levels\Q'[!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-17:localhost:8800\Q'[!plcvCHNbjCkNMMxnTk:localhost:8800m.room.member@anon-20191002_181700-16:localhost:88009Q/ !plcvCHNbjCkNMMxnTk:localhost:8800m.room.join_rulesAQ? !plcvCHNbjCkNMMxnTk:localhost:8800m.room.history_visibility;Q3 !plcvCHNbjCkNMMxnTk:localhost:8800m.room.guest_access "j 9 8 C H p { 9Drq |=ZejgeQ3 $XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels ~eQ']$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800joina}eQ' $cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800m.room.create |eQ']$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800joinp{eQ))$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800mzeQ? $houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibilityeyeQ/ $I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rulesjxeQ9 $LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_aliasgweQ3 $xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levels veQ']$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800joinaueQ' $uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.create teQ']$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800joinmseQ? $3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibilityereQ/ $QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rulesgqeQ3 $eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levels peQ']$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800joinaoeQ' $Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800m.room.createmneQ? $_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibilityemeQ/ $nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rulesgleQ3 $dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels keQ']$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800joinajeQ' $D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800m.room.createmieQ? $PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibilityeheQ/ $zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rulesggeQ3 $GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels feQ']$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800joinaeeQ' $VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800m.room.create deQ']$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800join ceQ']$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800joinmbeQ? $1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibilityeaeQ/ $QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rulesg`eQ3 $xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s!cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels _eQ']$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800joina^eQ' $bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800m.room.create K %KVReQa9$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 302, "stream_ordering": 1363}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0"], "prev_events": ["$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw"], "type": "m.room.member", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-282:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-282", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-282:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041678228, "hashes": {"sha256": "fsOnXWpVXRD2PhVeJeGjeIlIUy4oGfhiaRY7bxlRB9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AslIdC/DfOCWwzRa81fUL/jmxEYkzq79gCiuq6fDA20KNmub4ejGKQLxk5qM6Yp61kVpRYB6OSDfnXB4sNQBBQ"}}, "unsigned": {"age_ts": 1570041678228}}VQeQa9$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 301, "stream_ordering": 1362}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0"], "prev_events": ["$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4"], "type": "m.room.member", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-281:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-281", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-281:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041677377, "hashes": {"sha256": "tWDdu9JInSkkf0pNyaZmyvCWBqn3+wLmxAQeuFvaUjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OH6MPJ3OqcfnIKQlvVriENtVxmiRdGnsEhWVf0gz0NLclASvn7sqg/ype+XyyA8QdCoyRER1f6Fxmdgfq2Q5DA"}}, "unsigned": {"age_ts": 1570041677377}}PeQa$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1361}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0"], "type": "m.room.history_visibility", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041676301, "hashes": {"sha256": "VJ9wy2QtKJW3vj/4mQMtwF83PVV8hT4ZVfaU89ggfXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cJNnFLxUnC+b5v/mUNBhRKpOVhe4a/Qkfoa/rHbKU7VYXCyFVbhxfedPaJBzJHQh7dOqYmyielU73Yzl+j1wBw"}}, "unsigned": {"age_ts": 1570041676301}}tOeQau$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "stream_ordering": 1360}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s"], "type": "m.room.join_rules", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041674943, "hashes": {"sha256": "BAwHHRelLATi04PNTOtdKr5Ruy3vSeAOpT3UgWNmctg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yq3LPh7gBRIgcv1E2L8nAVRY8C4xntevmYH2yIZlopnKsWfd2CLqLe2pjpN4Crp0IhYQxk3fEVegG6HMAAumDw"}}, "unsigned": {"age_ts": 1570041674943}} Nd0`, \ ( X $ T P  L |HxDt@ p<l8X0vBrI &O$157004174617osGDW:localhost:8800'&O$157004174616PvcHe:localhost:8800&&O$157004174515XsrNb:localhost:8800%&O$157004174414klNmS:localhost:8800$&O$157004174313OKfBg:localhost:8800#1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg 1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I&O$157004173511wRnRr:localhost:8800&O$157004173510EIiCi:localhost:8800% M$15700417349vUcYV:localhost:8800% M$15700417338MBNFd:localhost:8800% M$15700417327EEUMr:localhost:8800% M$15700417316amiRb:localhost:88001 e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg 1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1~e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1}e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1|e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1{e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU1ze$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1ye$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M1xe$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01we$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1ve$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1ue$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41te$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1se$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1re$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk1qe$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw1pe$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1oe$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc1ne$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk1me$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts81le$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1ke$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1je$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz81ie$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w1he$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1ge$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-01fe$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1ee$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1de$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1ce$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1be$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo1ae$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho1`e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM1_e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H41^e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41]e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1\e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1[e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1Ze$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ1Ye$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB41Xe$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1We$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1Ve$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1Ue$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1Te$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w1Se$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw1Re$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs1Qe$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ1Pe$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1Oe$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw1Ne$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 m v + 4 \ wTW|  jOQ3 ew!mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE NQ']ev!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YdMQ' eu!mMsxpaIlcykPuOnDyl:localhost:8800m.room.create$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk LQ']et!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwsKQ))es!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQpJQ? er!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibility$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdchIQ/ eq!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rules$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkmHQ9 ep!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_alias$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8jGQ3 eo!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levels$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw FQ']en!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYdEQ' em!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.create$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz88DQ']eek!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk CQ']ei!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-287:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkBQ? eeh!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQopAQ? eg!ffijTnPMbTrDXHqOXf:localhost:8800m.room.history_visibility$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoh@Q/ ef!ffijTnPMbTrDXHqOXf:localhost:8800m.room.join_rules$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIj?Q3 ee!ffijTnPMbTrDXHqOXf:localhost:8800m.room.power_levels$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo >Q']ed!ffijTnPMbTrDXHqOXf:localhost:8800m.room.member@anon-20191002_181700-286:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hod=Q' ec!ffijTnPMbTrDXHqOXf:localhost:8800m.room.create$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMp<Q? ea!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibility$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4h;Q/ e`!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rules$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIj:Q3 e_!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c 9Q']e^!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMd8Q' e]!wLitJYvgvNJzanSIvO:localhost:8800m.room.create$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQp7Q? e[!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibility$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsh6Q/ eZ!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rules$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgj5Q3 eY!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs 4Q']eX!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEd3Q' eW!hWHyATwKfuznrqTiyu:localhost:8800m.room.create$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w 2Q']eS!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk 1Q']eR!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawp0Q? eQ!cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibility$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4 KZj8p> v D  | J  PZ   V $ T" \ *b0h6n< tBzHN1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0I1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0H1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI}1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI|1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI{1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ 1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ 1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ 1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecv1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecu1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTect1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI[1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIZ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIY1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E51e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE O1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE N1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE M1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE L1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qx1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qw1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qv1e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_41e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_41e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_41e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828%1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828#1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct41e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY F1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY E1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY D1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY01e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY01e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY01e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4@1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4?1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4>1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ d1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ c1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0 21e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0 11e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0 01e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ}1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ|1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ{1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE ~z v r n j fb^ZVRNJFSeeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800ReeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800QeeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800PeeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800OeeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800NeeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800MeeQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800LeeQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800KeeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800JeeQ$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800IeeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800HeeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo!ffijTnPMbTrDXHqOXf:localhost:8800GeeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800FeeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800EeeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800DeeQ$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800CeeQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800BeeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800AeeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800@eeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800?eeQ$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800>eeQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800=eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800<eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800;eeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800:eeQ$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:88009eeQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:88008eeQ$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:88007eeQ$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk!cGkVFpidyBBxUxsszG:localhost:88006eeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800 h rUhiVeQa_$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1367}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-283:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041681174, "hashes": {"sha256": "vU3CKjIyagFwQFduDdHIuAa1uiQxCPhF+M9FUHmyW9c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njSkd8BW7l7Qs1Ko6RAxbKfVjIFawjVrigZAdSP4shazOH+5Ba7m8/BZAm3qbIX/BM28UsK9W6iJXL77ImstCA"}}, "unsigned": {"age_ts": 1570041681174}} UeQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "txn_id": "150", "stream_ordering": 1366}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs"], "type": "m.room.message", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"body": "hello, world 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041680000, "hashes": {"sha256": "HNFkLZcSTYUA0KEak0GiXv3XTNzz9Yf3osbJ4xZ89xg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YB+GVOE2oNEUbX797wK3Zlk6tSbyVLaNGCkuesLfMgA3Y1dwqOSPcaCvJRMxTGMsLfQ1/+fR5dRRhpq4hXNeAw"}}, "unsigned": {"age_ts": 1570041680000}} TeQ}$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "txn_id": "149", "stream_ordering": 1365}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ"], "type": "m.room.message", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"body": "hello, world 2", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041679577, "hashes": {"sha256": "lPTMM8d/y+qRZqJOMZYgTNlSxOPgWMXHfpktqrH9gdY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xDBBv0TomwdqtPenasPmZmEO4eX/jdfIgBEwx9tR9qzAYF0dZKljp3ia8G0uzc9dohwyU1ld+XzPRkgUTbvCCw"}}, "unsigned": {"age_ts": 1570041679577}} SeQ}$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:8800{"token_id": 300, "txn_id": "148", "stream_ordering": 1364}{"auth_events": ["$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s", "$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA", "$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw"], "prev_events": ["$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk"], "type": "m.room.message", "room_id": "!cGkVFpidyBBxUxsszG:localhost:8800", "sender": "@anon-20191002_181700-280:localhost:8800", "content": {"body": "hello, world 1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041678924, "hashes": {"sha256": "YQIGSWSUsu7Tkpxtky8bqD55GhWgnBu/lr6mE5gAR+k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MByy2umYv5dhomxrbqvggXvIvn25Qana2RrHniKXPRbCrWS6Kjmmku+U7ShGFH4+VfpAubVxBFPUBBSZ1kPnCA"}}, "unsigned": {"age_ts": 1570041678924}} 8l D `8"]c!E@anon-20191002_181700-291:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAoOPDSPHGDRK127.0.0.1Perl + Net::Async::HTTP/0.44m^t!]c!E@anon-20191002_181700-290:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwoHIUKIRMYDG127.0.0.1Perl + Net::Async::HTTP/0.44mD` ]c!E@anon-20191002_181700-289:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwoWRUIAYGXAN127.0.0.1Perl + Net::Async::HTTP/0.44meQ? $_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibilitye=eQ/ $nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rulesg<eQ3 $dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levels ;eQ']$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800a:eQ' $D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800m.room.createm9eQ? $PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800m.room.history_visibilitye8eQ/ $zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800m.room.join_rulesg7eQ3 $GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800m.room.power_levels 6eQ']$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800m.room.member@anon-20191002_181700-283:localhost:8800a5eQ' $VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800m.room.create exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            ~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMM  ZeQa$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1371}{"auth_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs", "$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg"], "type": "m.room.history_visibility", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041684268, "hashes": {"sha256": "OdZdhxhBvxb+sWPUPgl+gp68Fz8Y8sEyqI9cAxGMYD0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pjUC5PMbpqwxFJ8IOj9rmi/QXWyH0gHsFaw8RBxoZ97XB8UzV6E6BJ8ECmqdm2pnWdu2gqN/+dOQc46UMNPXDg"}}, "unsigned": {"age_ts": 1570041684268}}tYeQau$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1370}{"auth_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs", "$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs"], "type": "m.room.join_rules", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041683568, "hashes": {"sha256": "KNZaMjJblfhXkHaoAhiHqb9DzvnhaiBgIcQHPcI1aMo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ifAa1zSZBRqJF2LDT7IIYDqCyTSbBfk+UtHwxS+ovSRtS68hsn3wPZ3ENq6SArjm2YmofOp0Pl+8lrl0IqXwAw"}}, "unsigned": {"age_ts": 1570041683568}}kXeQac$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1369}{"auth_events": ["$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "type": "m.room.power_levels", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"users": {"@anon-20191002_181700-283:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041682514, "hashes": {"sha256": "NUjAhqZfwt98h4Nmg1mpGdNL8AlE4rUayOKQucLKdyI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bMx6PBZiT7DmsW91seunfcj0Jnmzm3MopzykB6ag7fga9Gh7FpEv3wi5lspy2PWtCJ0dj8QwtSMlBflV6EFXDg"}}, "unsigned": {"age_ts": 1570041682514}}vWeQay$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "stream_ordering": 1368}{"auth_events": ["$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w"], "prev_events": ["$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w"], "type": "m.room.member", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-283", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-283:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041681963, "hashes": {"sha256": "NSTy2Fbp8TwOPsDBZlcTPH6LCruNOOU2gB23N+0E87c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TekwO91+Xb7C8UDXbeJEfcfTcpJivhwzbJemjO7VPnZ3kL63CNOJReEDEFm/b78SpNRaiStVvxHixmOUr4t/DA"}}, "unsigned": {"age_ts": 1570041681963}} a} { y w u sqomkigeca~*eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~)eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~(eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~'eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~&eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~%eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~$eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~#eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~"eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~!eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~ eeQ$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800~eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800~eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800~ eeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE!hWHyATwKfuznrqTiyu:localhost:8800~ eeQ$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VeL$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejgsha256"7rpVkJuX8G}W\z8VeL$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8Msha256r>Iӿ~!c)Br>LW~[x{VeL$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcsha256bp#F RpJ5"D)*ٜ}b(N+,ЁVpeL$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprksha256#]&s)XE{[}dvA_֦VoeL$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8sha256-Ip5+mM -{poP6`VneL$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwsha256,{bظa$0A=x79)PLVmeL$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYsha256D󤷫9qDbPƍR:t}BVleL$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8sha256*77l(:W;}Uc}F:?VkeL$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wsha256imӖj[/>M}of"%gAyzVYeL$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgsha256:B1?^'VlFq@ɬ[+:X %p @ P `  p 0`p 0@P`p 0@PMo]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800Mn]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800Mm]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800Ml]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800Mk]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800Mj]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800Mi]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800Mh]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800Mg]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800Mf]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800Me]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800M[]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800MZ]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800MY]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800MX]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800MW]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800MV]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800MU]Q@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800MT]Q@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800MS]Q@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800MQ]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800MP]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800MO]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800MM]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800ML]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800MK]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800MJ]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800MI]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800Md]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800Mc]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800Mb]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800Ma]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800M`]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800M_]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800M^]Q@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800M]]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800M\]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800 E V * vE p}K Dq \V$Q  | v? $ J P   [ )a/g _I5mli8_J8gWac1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 s1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU01e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg+1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!921e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw^1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUe1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Iu1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU{1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEr1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4 1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq81e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElE31e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q? .1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGw81e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kN1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoq0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc= 1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V401e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg  21e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw 1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA~>21e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 821e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA20e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ  t  k^eQac$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1375}{"auth_events": ["$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "type": "m.room.power_levels", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"users": {"@anon-20191002_181700-284:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041688603, "hashes": {"sha256": "IeqGGlSg6RS6tsf5uXOnqg/CPIzwy3aSxF1lRQt6LsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "caDPtjaJyEG7qeP9M7w5VNv985iPq4cJrweg9epCbvFvOBGlFNvpwNs3SMxw55T9AEg80PBhf2C+OrAVxxuxAA"}}, "unsigned": {"age_ts": 1570041688603}}v]eQay$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1374}{"auth_events": ["$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ"], "prev_events": ["$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ"], "type": "m.room.member", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-284", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-284:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041688072, "hashes": {"sha256": "o909XUZLn9LOXX0bA9SrQHUpaAQIMGtInFW1GmVc7lE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UH5MPFZ39lo094G/itVm85YgqZk8EWExpg6QlFuRAnWmX3fa9Dfu9ZY6/j5XptBcRKu2BWbMcD1ZpfYVPgqbBA"}}, "unsigned": {"age_ts": 1570041688072}}i\eQa_$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1373}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-284:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041687401, "hashes": {"sha256": "GZo0Uw0kg/uWiRsToOFXVzugyAPCVaM5JRckCem3Bb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IDLS50GusLR/oMnUgl0NKfV1Z4EA5bX5KLVauVPblQ7J67334ZFAzgxZh1BJdaWUmNGSt07dNxstwvo6q5cFAQ"}}, "unsigned": {"age_ts": 1570041687401}}[eQy$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800{"token_id": 303, "txn_id": "151", "stream_ordering": 1372}{"auth_events": ["$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs", "$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w", "$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE"], "prev_events": ["$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs"], "type": "m.room.message", "room_id": "!hWHyATwKfuznrqTiyu:localhost:8800", "sender": "@anon-20191002_181700-283:localhost:8800", "content": {"body": "hello, world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041685652, "hashes": {"sha256": "7UXf2K/4GmHhbaHl0AkwEolYibKTX7W9ABPedasM0w0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ydkWsg/gPFa5J6wKo0u4bsE3BtAz/0lXE9atFeb/VCU1pqNDLfKgGSQFC+lri9XupPL/rjqizDWkD7i9B//cAA"}}, "unsigned": {"age_ts": 1570041685652}} g A 2 #   yj[L=.zk\M>/  { l ] N ? 0 !   ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) 9ufWH* gv | m ^ O @ 1 "   } n _ PXI:+ whYJ;,wm$m9'm6|m3 m/[m)Wm%3m!mmWmm5m)m dmm]mmm`mmmQmmommmmdm؀mՒmmmmmLmmǽmǺmǷmǮmǚ`mǪomǧmǥmǢUmǝmǚmǓWmǐmǍdmljmdžmǀCm|mymvmsXmpmm3mkPmhm`z~~m^w}}m[||mX{{mUzzmRyymPxxmKEwwmHjvvmE4uum=ttm:ssm2rrm0qqm.!ppm+Yoom(snnm%mmmllmCkkmjjmiimhhmggm ffm eemddmccmbbm@aam``m__m^^mi]]m\\m,[[mpZZmRYYm+XXmWWmЀVVmUUmLTTmɔSSmARRm QQmƼPPmƺ5OOmƸ+NNmƴ5MMmƬ^LLmƪKKmƧJJmƣ:IImƠHHmƝGGmƛFFmƘEEmƒDDmƏCCmƌBBmƉAAmƇ@@mƄ??mƬ  mĉ  mſ  mŷ  mŴmŮmŪmŨ mťmšmȉ&mȈmȅfmȅemȁm{%mw.msmrmnmkmhmdmam^Lm[mYmU?mQ_mNmKmHmEm@m=hm~>>my==mv<<ms;;mp(::mj99mc88maW77m^066mY55mW44mT33mP22mNc11mK00mH//mC..m4--m3,,m+++m+**m+))m&<((m&9''m&7&&m,%%m'$$m%##m""m  Km!!mmmm |mmmmmqmmWm~m{mymm\mumm  NS Z {N y  s8 =f 4'  ( #jl U O:p`  CA! u  G .   Y I 1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30;1e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0_1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakG0e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU@1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA 1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8X1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4z1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg<1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14?1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoN1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAJ1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc<1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE<1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg$1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEh1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 1e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8C1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA>1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo "1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw u1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQz1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc b1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q W1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY v1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk %1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY~1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 @1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIZ1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ e1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo T1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM D1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0/1e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8"1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 A1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 J ,NC 8 - { " p  e ZOD9.|#qf VxeL$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEsha256Zq0=Ҭ `*6Hn VweL$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4sha256 /N[ֳ,?ĭʄ>VveL$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4Esha256Ө޽&fyqt ֟^OfkoVueL$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4sha256Z~TUN6[Ί)i6jE!NVteL$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8sha256k]*Fs2 ,~ԨEKfVseL$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAsha256M>ZGBF`-o`L7b)vpVreL$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4sha256EVp@4ŨFVqeL$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYsha256o\Mx%5? VpeL$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Qsha256z9qƥ54εJ)W==6 VoeL$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXossha2567Vu=d`Pt9% T^VneL$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xwsha256ju29'^kmyo h|VmeL$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gsha256iQVqPÏIrb:uy6)CVleL$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4ssha256rzRH_Z:L^3 n')6VkeL$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkksha2560Dc b }OyQYFouZIVjeL$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MIsha256wiTG+D&J G(Y#UVieL$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMsha256?cXHG:OtF h3㳿փVheL$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgsha256ܩ^5Gڠڭݩӓv5ɲnCJQҺVceL$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEsha256mLyKLZ/Joj _[~aVbeL$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5ksha256)$M8M6(=h +5xo6*)VaeL$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4sha256R[Y~tu lɴzċ3>V`eL$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-osha256PT2My㤽35ui@OV_eL$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecsha256;a;0;q8܀:UV^eL$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0sha256bQ1Z;.sr挙 -mV]eL$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cgsha2565 |B~*ӬQdbg%S8mgٗ(V\eL$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8sha256c4X}t 0V[eL$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyEsha256HߓubhyFWN!'r.*N9!VZeL$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85ssha256ؖ#ژ0Rd(n(w] !VYeL$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMosha256%**Uʎ#͖߸t0 s VXeL$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwsha256?Ka/1bf94a1,VWeL$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYsha256emrթ&IFݳL6VVeL$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8sha256e_Jd(X_KoKcVUeL$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQsha256hM9*s7H6bS}tVTeL$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWAsha256Fbk$'dH&xaV"E`VSeL$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vcsha256~ȧs56yai7=5WVReL$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMsha256%8R2*qГqVf3VQeL$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8sha256}oގ#20r$‹Jy$њnVPeL$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwsha256b SQQx-&c߇d.+}MJLVOeL$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQsha256 ?v+ S%41cڄ? TVNeL$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNosha256$x) ; ~ LpVMeL$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94sha256.l?xw C{K6 C`Q k  sibeQa_$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1379}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-286:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041693059, "hashes": {"sha256": "GAz46O/nCSBvz6TDUeTOTqLkfxAgA6wkBG+SGI8JG48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "npcdOQ5SPHSX+TIwroIC5FRdqCQqLO7/veJslEAJSsSlhtKyfcKWxDzLpQ0JYdHnWQSq/sWF/0OzXOCHeD1FCg"}}, "unsigned": {"age_ts": 1570041693059}}aeQy$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "txn_id": "152", "stream_ordering": 1378}{"auth_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c", "$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4"], "type": "m.room.message", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"body": "hello, world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041691081, "hashes": {"sha256": "EIt6ExR1l1MOWOlIJugJ+O+sS9Ak4xY1yXzL3CrOqQk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "znEnKF712RylhI5/NXQZ764P5Q9oq97++PmFH5ZHBw16k50b1cPxuXr9xMBaK9oP2u0rIf92rlSaFhBC9sbOAA"}}, "unsigned": {"age_ts": 1570041691081}}`eQa$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1377}{"auth_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c", "$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI"], "type": "m.room.history_visibility", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041689920, "hashes": {"sha256": "6R0wxtSf07eA/Jux7rVULQ6CZxFz3ksR7Idh5Jr2Tck"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a+sUraeYSc3mHSfQp0+JHNnDpgevR6FvMaEPVv0lud3qXODWVhG+LSaZHywrDDfGa/rJUqyay3Nu0utALqWxBA"}}, "unsigned": {"age_ts": 1570041689920}}t_eQau$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800{"token_id": 304, "stream_ordering": 1376}{"auth_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c", "$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ", "$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM"], "prev_events": ["$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c"], "type": "m.room.join_rules", "room_id": "!wLitJYvgvNJzanSIvO:localhost:8800", "sender": "@anon-20191002_181700-284:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041689345, "hashes": {"sha256": "YQ0DjQVJ9Dtpb9f7VDc+NPl35V+VGm/mlVoKMctSW0M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pU9p/hSz/l+4YQpXXJAyWxs/CkkOS8HCSSj68LhuqZCBzskYDq0kP7aRjgUji6gXRD4SpOGHUDsV+oeLjsAaDg"}}, "unsigned": {"age_ts": 1570041689345}} g * T~=gg4]!c=@anon-20191002_181700-297:localhost:8800DVSKNCGFXXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAog3]!c<@anon-20191002_181700-296:localhost:8800SBLEQBXZQLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAog2]!c;@anon-20191002_181700-295:localhost:8800CIYGWJHPPNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQog1]!c:@anon-20191002_181700-294:localhost:8800RKGLRVXFMGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQog0]!c9@anon-20191002_181700-293:localhost:8800PVLMJRXINQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwog/]!c8@anon-20191002_181700-292:localhost:8800GGCVZACJDJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_gog.]!c7@anon-20191002_181700-291:localhost:8800OPDSPHGDRKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk6XlFKZ0NZdVFSXypGNWQKMDAyZnNpZ25hdHVyZSA4B_mDKS9LpKF54uAQ_9P_bDwYMcNFiieDGb5Ih5fapAog-]!c6@anon-20191002_181700-290:localhost:8800HIUKIRMYDGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTWmdoWkpNWWJxO3JzNEoKMDAyZnNpZ25hdHVyZSDlj5ZCtndvKzC35w96ec30r3OrsXQ7P5PAA8iRywzNAwog,]!c5@anon-20191002_181700-289:localhost:8800WRUIAYGXANMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtQcXBzKjUudmlxVFppYjUKMDAyZnNpZ25hdHVyZSDYE4d4nZbow6Ow7f2915din121XKUdYQ5GPEBrr5rslwog+]!c4@anon-20191002_181700-288:localhost:8800BKSOCJCTFTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElsOmlIcVhGQ2wyTEkzVzcKMDAyZnNpZ25hdHVyZSCzJfmtbG81Wrm2vimRJic-dEVRDEDntZmOEo-h59M2rwog*]!c3@anon-20191002_181700-287:localhost:8800UVZQFXTZFVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLbHpJaVAweDZDd3JiPVUKMDAyZnNpZ25hdHVyZSAsElnH6_lTGWgAUIPCduvm_LujyRBeS5_Rv8VYp_0n3Ao  feQa$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1383}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI"], "type": "m.room.history_visibility", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041695986, "hashes": {"sha256": "G+c9pi5JMH6Ow49YTGcjuF0pTdfiI2P3sxxL+SoDVhc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f8c7pMB/jQuotrewIBupezbl/In/9f3JeDSTOXO9Yc8KecA7j/p1xCEYLlqaLubu+jVInYAY4zgz6FrpLrVvBw"}}, "unsigned": {"age_ts": 1570041695986}}teeQau$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1382}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo"], "type": "m.room.join_rules", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041695244, "hashes": {"sha256": "/C+lPmlTmOUV9s6iLE5CjmkFDtKFTqelfk28uzB4gVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E6+mVEU/hcg7pqCCLLeXdUVkRKio64pprLULpVDJNhub7phowJQ9Wa2FAQpeyhJZr85/6PyomH8NI0ge6TxvDA"}}, "unsigned": {"age_ts": 1570041695244}}kdeQac$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1381}{"auth_events": ["$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "type": "m.room.power_levels", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"users": {"@anon-20191002_181700-286:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041694481, "hashes": {"sha256": "QwOSYiqb7gy/FwLSbvsC5xjxG86L1swpzZIfHJ40e+Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WjGySpBObeuhNkTJfsFe1ndmSftyyDtnShIjqI24+g/Dh3Kuce14JHnequ19GLNWH+yBqoGtcPQyHZfNnxQiCw"}}, "unsigned": {"age_ts": 1570041694481}}vceQay$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1380}{"auth_events": ["$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM"], "prev_events": ["$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM"], "type": "m.room.member", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-286", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-286:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041693882, "hashes": {"sha256": "WY5KgIEcYvmV9G9FnHVhSCM6NhrO1jbpXdrV13M9W8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z8VIsZ9jiQoEE4kTanCLzVmQUD1noWi8jBelVwlkLCmtmdMUH3fowJTaM2C+4Je1+8Gc95F+3mbeYPhXOET8Cw"}}, "unsigned": {"age_ts": 1570041693882}} .RM H C > 9 4/*|%w ry.L]TQe!QyLUggxrTnULUAOseq:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoITQe!QyLUggxrTnULUAOseq:localhost:8800$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_WoIQO!azRJNFPIRSFAskLILK:localhost:8800$157004173712pxBJg:localhost:8800TQe!MBWnwKRwFznvRpAzxr:localhost:8800$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8IQO!azRJNFPIRSFAskLILK:localhost:8800$157004173511wRnRr:localhost:8800IQO!azRJNFPIRSFAskLILK:localhost:8800$157004173510EIiCi:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417349vUcYV:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417338MBNFd:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417327EEUMr:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417316amiRb:localhost:8800TQe!MBWnwKRwFznvRpAzxr:localhost:8800$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6ITQe!MBWnwKRwFznvRpAzxr:localhost:8800$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cTQe!MBWnwKRwFznvRpAzxr:localhost:8800$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3YkTQe!MBWnwKRwFznvRpAzxr:localhost:8800$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlETQe!MBWnwKRwFznvRpAzxr:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4TQe!MBWnwKRwFznvRpAzxr:localhost:8800$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4TQe!krhefVncoErkCtnvsy:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8T Qe !krhefVncoErkCtnvsy:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYET Qe !krhefVncoErkCtnvsy:localhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgT Qe !krhefVncoErkCtnvsy:localhost:8800$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MT Qe !krhefVncoErkCtnvsy:localhost:8800$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3EjcT Qe !krhefVncoErkCtnvsy:localhost:8800$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMTQe!krhefVncoErkCtnvsy:localhost:8800$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUTQe!krhefVncoErkCtnvsy:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoTQe!krhefVncoErkCtnvsy:localhost:8800$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyATQe!mMsxpaIlcykPuOnDyl:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwTQe!mMsxpaIlcykPuOnDyl:localhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0TQe!mMsxpaIlcykPuOnDyl:localhost:8800$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61ETQe!mMsxpaIlcykPuOnDyl:localhost:8800$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasTQe!mMsxpaIlcykPuOnDyl:localhost:8800$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4TQe!mMsxpaIlcykPuOnDyl:localhost:8800$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICETQe!mMsxpaIlcykPuOnDyl:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YT~Qe!mMsxpaIlcykPuOnDyl:localhost:8800$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkT}Qe!VOhMAiLfKyTOZbmKGw:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwT|Qe!VOhMAiLfKyTOZbmKGw:localhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQT{Qe!VOhMAiLfKyTOZbmKGw:localhost:8800$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcTzQe!VOhMAiLfKyTOZbmKGw:localhost:8800$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkTyQe!VOhMAiLfKyTOZbmKGw:localhost:8800$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8TxQe!VOhMAiLfKyTOZbmKGw:localhost:8800$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwTwQe!VOhMAiLfKyTOZbmKGw:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYTvQe!VOhMAiLfKyTOZbmKGw:localhost:8800$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8TuQe!ffijTnPMbTrDXHqOXf:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoTtQe!ffijTnPMbTrDXHqOXf:localhost:8800$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkTsQe!ffijTnPMbTrDXHqOXf:localhost:8800$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLkTrQe!ffijTnPMbTrDXHqOXf:localhost:8800$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQoTqQe!ffijTnPMbTrDXHqOXf:localhost:8800$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI  5ieQw$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "txn_id": "153", "stream_ordering": 1386}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk"], "type": "m.room.message", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"body": "before join", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041698455, "hashes": {"sha256": "JGRsApKqw+h0GrggCXLhUUQioJiypfkVdgqLE9hsPpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mNTeTD79I1XtqZuYg1KddweUIX0mngxnTzpjqINpRFfpnT8Qn2VmtRaO++qC534v10hoPitkIcgnsKGc6mxBDA"}}, "unsigned": {"age_ts": 1570041698455}}heQa7$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1385}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk"], "type": "m.room.member", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-287", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-287:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041697936, "hashes": {"sha256": "N/nIaXURmgS02tyALlHlt5vSDTdfqgBwk7q/gY5tnss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pyw6k+HSokqt4+SwIhh1VjjX/ROMfD1RH1oDwPLPLJhHtmf9dTuX5HW/AMjb/2UmpapqFsicZTBuWmApZLSaAw"}}, "unsigned": {"age_ts": 1570041697936, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-286:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-286:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-286", "avatar_url": null}, "sender": "@anon-20191002_181700-286:localhost:8800"}]}}GgeQa$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "stream_ordering": 1384}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo"], "type": "m.room.history_visibility", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041697222, "hashes": {"sha256": "UPu5SvYIXoqu7VUd7myqCVMaatnQhX1lyW1y1zsS6Qg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cWBX16wAX6vAucPC5zOp83KX/8npltL/q106o2fg2f4aT48sdXQMCCJBC66w2EgfPZ19bvS8MXcvx9SRGhlOCA"}}, "unsigned": {"age_ts": 1570041697222, "replaces_state": "$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo"}} a} { y w u sqomkigeca~IeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~HeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~GeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~FeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~EeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~DeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~CeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~BeeQ$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~AeeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800~@eeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~?eeQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~>eeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~=eeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~<eeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~;eeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~:eeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~9eeQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~8eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~7eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~6eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~5eeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~4eeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~3eeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800~2eeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800~1eeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~0eeQ$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800~/eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800~.eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM!ffijTnPMbTrDXHqOXf:localhost:8800~-eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo!ffijTnPMbTrDXHqOXf:localhost:8800~,eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800~+eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800 [e=E}U-md=vN& ^ 6&^  n F vN ~ V .  f >  v N &^6sL%6]5 'Q!qInWQPtNQfBFoVzUtP:localhost:8800 p'Q!qInWQPtNQfBFoVzUtP:localhost:8800 o'Q!qInWQPtNQfBFoVzUtP:localhost:8800 n'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 T'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 S'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 R'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 Q'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 P'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 O'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 &Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800 _'Q!peJMRJtXBvIiCttNmm:localhost:8800 ^'Q!peJMRJtXBvIiCttNmm:localhost:8800 ]'Q!peJMRJtXBvIiCttNmm:localhost:8800 \'Q!peJMRJtXBvIiCttNmm:localhost:8800 ['Q!pduebXnTyxQWVxEICp:localhost:8800 &'Q!pduebXnTyxQWVxEICp:localhost:8800 %'Q!pduebXnTyxQWVxEICp:localhost:8800 $'Q!pduebXnTyxQWVxEICp:localhost:8800 #'Q!pduebXnTyxQWVxEICp:localhost:8800 "'Q!pduebXnTyxQWVxEICp:localhost:8800 !'Q!paDmNxsOZIKyApbxXs:localhost:8800 F'Q!paDmNxsOZIKyApbxXs:localhost:8800 E'Q!paDmNxsOZIKyApbxXs:localhost:8800 D'Q!paDmNxsOZIKyApbxXs:localhost:8800 C'Q!paDmNxsOZIKyApbxXs:localhost:8800 B'Q!paDmNxsOZIKyApbxXs:localhost:8800 A'Q!paDmNxsOZIKyApbxXs:localhost:8800 @'Q!paDmNxsOZIKyApbxXs:localhost:8800 ?'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800 H'Q!pJUItjYTOUJQFIxyiX:localhost:8800 G'Q!pJUItjYTOUJQFIxyiX:localhost:8800 F'Q!pJUItjYTOUJQFIxyiX:localhost:8800 E'Q!pJUItjYTOUJQFIxyiX:localhost:8800 D'Q!pJUItjYTOUJQFIxyiX:localhost:8800 C'Q!pJUItjYTOUJQFIxyiX:localhost:8800 B'Q!oznZaCpONuNDaLarkI:localhost:8800N'Q!oznZaCpONuNDaLarkI:localhost:8800M'Q!oznZaCpONuNDaLarkI:localhost:8800L'Q!oznZaCpONuNDaLarkI:localhost:8800K'Q!oznZaCpONuNDaLarkI:localhost:8800J'Q!oznZaCpONuNDaLarkI:localhost:8800I'Q!ozgnwUlebxvzLVwyHW:localhost:88003'Q!ozgnwUlebxvzLVwyHW:localhost:88002'Q!ozgnwUlebxvzLVwyHW:localhost:88000'Q!ozgnwUlebxvzLVwyHW:localhost:8800.'Q!ozgnwUlebxvzLVwyHW:localhost:8800,'Q!ozgnwUlebxvzLVwyHW:localhost:8800)&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800  YlvmeQay$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1390}{"auth_events": ["$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8"], "prev_events": ["$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8"], "type": "m.room.member", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-288", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-288:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041702515, "hashes": {"sha256": "6ons5o/2HSPgLnu9iYxOXvAuTBvGu8aH+kH2Qvqb+sU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JaBLbVCpFJpJr8b+a/UBKe1XSmQNxcVCYfld1rZ/a6bFOSXqEVm9Xh2/ZUpUdOZFQReWn+NEt9sVIvDHCKuxAA"}}, "unsigned": {"age_ts": 1570041702515}}ileQa_$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1389}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-288:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041701776, "hashes": {"sha256": "SaAHaLInR0PdPM4M36/gd1bvu5qfrJkEnIfiM14wgP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zhU7G2tyYte1p6kCq9iGDVv34jOYNG4uZDIHvHj8/QAzF1emth5vjqueEbs9HMOj79oSMORwi/hO5aIV11aNBQ"}}, "unsigned": {"age_ts": 1570041701776}}keQw$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 306, "txn_id": "154", "stream_ordering": 1388}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho"], "prev_events": ["$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo"], "type": "m.room.message", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-286:localhost:8800", "content": {"msgtype": "m.text", "body": "after join"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041700078, "hashes": {"sha256": "5Idjxl+7Agn0m5ZgzKstVehIgIJDc7nJAau7ihWQxf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bS5SAgIXeDxrYHpjhu0C6hV3Ma0c3l7lFPeCRzbF47fWHrTHVAQFYwFcKy1tEzR4DuLOunCg8KYrkr+NOGTZAw"}}, "unsigned": {"age_ts": 1570041700078}}jeQa=$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800{"token_id": 307, "stream_ordering": 1387}{"auth_events": ["$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo", "$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM", "$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI"], "prev_events": ["$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0"], "type": "m.room.member", "room_id": "!ffijTnPMbTrDXHqOXf:localhost:8800", "sender": "@anon-20191002_181700-287:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-287", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-287:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041699139, "hashes": {"sha256": "R4Cl64xvBexUdBECEt4K2gl0UlCXQlNWwthxUzIJ1kY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mcduVwjfiZR+cdXNcGlJGrYyMdjiG9EKatNV0IGqmOqRC6XZjOgGha8uulNUVgTu5Ct8RLbImQ9/8ElIifuEDw"}}, "unsigned": {"age_ts": 1570041699139, "replaces_state": "$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk"}} MKoUuD}j8p> w E   } K#  Q)= Q  W %   ] +c1 [i71e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI p1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 d1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k 1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwf1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8J1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck h1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA d1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 {1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0v1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo_0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gH1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko,1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM31e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk c1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ 1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI 1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 921e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs21e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoD1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw<1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k;1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu41e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0q1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsi1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY}1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k~1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw-1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk&1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI41e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU G[$H l 5 Y " } F  j 3 W {D h1UyB f/Sw@ d-4 ==anon-20191002_181700-361anon-20191002_181700-3614 ==anon-20191002_181700-362anon-20191002_181700-3624 ==anon-20191002_181700-359anon-20191002_181700-3594 ==anon-20191002_181700-357anon-20191002_181700-3574==anon-20191002_181700-358anon-20191002_181700-3584==anon-20191002_181700-356anon-20191002_181700-3564==anon-20191002_181700-354anon-20191002_181700-3544==anon-20191002_181700-355anon-20191002_181700-3554==anon-20191002_181700-353anon-20191002_181700-3534==anon-20191002_181700-352anon-20191002_181700-3524==anon-20191002_181700-350anon-20191002_181700-3504==anon-20191002_181700-351anon-20191002_181700-3514==anon-20191002_181700-349anon-20191002_181700-3494==anon-20191002_181700-348anon-20191002_181700-3484~==anon-20191002_181700-346anon-20191002_181700-3464}==anon-20191002_181700-347anon-20191002_181700-3474|==anon-20191002_181700-345anon-20191002_181700-3454{==anon-20191002_181700-343anon-20191002_181700-3434z==anon-20191002_181700-342anon-20191002_181700-3424y==anon-20191002_181700-341anon-20191002_181700-3414x==anon-20191002_181700-339anon-20191002_181700-3394w==anon-20191002_181700-338anon-20191002_181700-3384v==anon-20191002_181700-337anon-20191002_181700-3374u==anon-20191002_181700-336anon-20191002_181700-3364t==anon-20191002_181700-335anon-20191002_181700-3354s==anon-20191002_181700-334anon-20191002_181700-3344r==anon-20191002_181700-333anon-20191002_181700-3334q==anon-20191002_181700-332anon-20191002_181700-3324p==anon-20191002_181700-331anon-20191002_181700-3314o==anon-20191002_181700-330anon-20191002_181700-3304n==anon-20191002_181700-329anon-20191002_181700-3294m==anon-20191002_181700-328anon-20191002_181700-3284l==anon-20191002_181700-327anon-20191002_181700-3274k==anon-20191002_181700-326anon-20191002_181700-3264j==anon-20191002_181700-325anon-20191002_181700-3254i==anon-20191002_181700-324anon-20191002_181700-3244h==anon-20191002_181700-323anon-20191002_181700-3234g==anon-20191002_181700-322anon-20191002_181700-3224f==anon-20191002_181700-321anon-20191002_181700-3214e==anon-20191002_181700-320anon-20191002_181700-3204d==anon-20191002_181700-319anon-20191002_181700-3194c==anon-20191002_181700-318anon-20191002_181700-3184b==anon-20191002_181700-317anon-20191002_181700-3174a==anon-20191002_181700-316anon-20191002_181700-3164`==anon-20191002_181700-315anon-20191002_181700-3154_==anon-20191002_181700-314anon-20191002_181700-3144^==anon-20191002_181700-312anon-20191002_181700-3124]==anon-20191002_181700-311anon-20191002_181700-3114\==anon-20191002_181700-310anon-20191002_181700-3104[==anon-20191002_181700-309anon-20191002_181700-3094Z==anon-20191002_181700-308anon-20191002_181700-3084Y==anon-20191002_181700-307anon-20191002_181700-3074X==anon-20191002_181700-306anon-20191002_181700-3064W==anon-20191002_181700-305anon-20191002_181700-3054V==anon-20191002_181700-304anon-20191002_181700-3044U==anon-20191002_181700-303anon-20191002_181700-3034T==anon-20191002_181700-302anon-20191002_181700-3024S==anon-20191002_181700-301anon-20191002_181700-3014R==anon-20191002_181700-300anon-20191002_181700-3004Q==anon-20191002_181700-299anon-20191002_181700-2994P==anon-20191002_181700-298anon-20191002_181700-2984O==anon-20191002_181700-297anon-20191002_181700-2974N==anon-20191002_181700-296anon-20191002_181700-2964M==anon-20191002_181700-295anon-20191002_181700-2954L==anon-20191002_181700-294anon-20191002_181700-2944K==anon-20191002_181700-293anon-20191002_181700-2934J==anon-20191002_181700-292anon-20191002_181700-2924I==anon-20191002_181700-291anon-20191002_181700-2914H==anon-20191002_181700-290anon-20191002_181700-2904G==anon-20191002_181700-289anon-20191002_181700-2894F==anon-20191002_181700-288anon-20191002_181700-288 |v p j f ` \YURNJFB>qQ]e!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-398:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4AjoinpQ]e!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-397:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0joinoQ]e!CGckPHdSYcIocFvRAq:localhost:8800@anon-20191002_181700-395:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiojoinnQ]e!BoyzlWNkRPncpDjBDg:localhost:8800@anon-20191002_181700-394:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UjoinmQ]e!djwLhpJUYOKsgQtrky:localhost:8800@anon-20191002_181700-393:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYjoinlQ]e!bkwyieHZwSMJfuSKvV:localhost:8800@anon-20191002_181700-392:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIjoinkQ]e!XcaKxZsPvbZhAGKKdx:localhost:8800@anon-20191002_181700-391:localhost:8800$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYjoinjQ]e!jDKAOtmeAGbYTpwyEW:localhost:8800@anon-20191002_181700-390:localhost:8800$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkjoiniQ]e!JYLMokjOhZZlmbZvTf:localhost:8800@anon-20191002_181700-389:localhost:8800$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kjoinhQ]e!zoTQAhGwmDDUECKtbL:localhost:8800@anon-20191002_181700-388:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAjoingQ]e!NeYaCeYNFATCqlrlGT:localhost:8800@anon-20191002_181700-387:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwjoinfQ]e!YtVXQjSPgVtbxrzUOA:localhost:8800@anon-20191002_181700-386:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYjoin~eQ]e!zsXPhIPzeXXLvuazzQ:localhost:8800@anon-20191002_181700-385:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gbandQ]e!zsXPhIPzeXXLvuazzQ:localhost:8800@anon-20191002_181700-384:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0joincQ]e!WFHIeSFQyuugGeBFxW:localhost:8800@anon-20191002_181700-383:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0joinbQ]e!WFHIeSFQyuugGeBFxW:localhost:8800@anon-20191002_181700-382:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIjoin~aQ]e!QMrkSPlQDGborAyWtQ:localhost:8800@anon-20191002_181700-381:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0ban`Q]e!QMrkSPlQDGborAyWtQ:localhost:8800@anon-20191002_181700-380:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kjoin_Q]e!mBQpGaIiadEuKBXfOw:localhost:8800@anon-20191002_181700-379:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIjoin^Q]e!mBQpGaIiadEuKBXfOw:localhost:8800@anon-20191002_181700-378:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwjoin]Q]e!xXYMxashIZAUOTuGAJ:localhost:8800@anon-20191002_181700-377:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgleave\Q]e!ozgnwUlebxvzLVwyHW:localhost:8800@anon-20191002_181700-376:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMjoin[Q]e!ozgnwUlebxvzLVwyHW:localhost:8800@anon-20191002_181700-375:localhost:8800$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScjoinZQ]e!QcaNrIiUsWpTiVGOnt:localhost:8800@anon-20191002_181700-375:localhost:8800$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0joinYQ]e!rQeYcODvQiLsOIbQrJ:localhost:8800@anon-20191002_181700-374:localhost:8800$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUleaveXQ]e!csWEXfVEVxdviNvgAd:localhost:8800@anon-20191002_181700-374:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4joinWQ]e!aHyAJEOSdKqTiRjOvw:localhost:8800@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wleaveVQ]e!aHyAJEOSdKqTiRjOvw:localhost:8800@anon-20191002_181700-373:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYjoinUQ]e!hnQOBexFYpvJntEChZ:localhost:8800@anon-20191002_181700-371:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8leaveTQ]e!hDAzBWYEyRVBRlrCHh:localhost:8800@anon-20191002_181700-370:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Eleave Fm< xG R ! ]  ~ M X'c2n= yHS"^- , h 7  s B i8tC0]@anon-20191002_181700-319:localhost:8800w0]@anon-20191002_181700-318:localhost:8800v0]@anon-20191002_181700-317:localhost:8800u0]@anon-20191002_181700-316:localhost:8800t0]@anon-20191002_181700-315:localhost:8800s0]@anon-20191002_181700-314:localhost:8800r0]~@anon-20191002_181700-312:localhost:8800q0]}@anon-20191002_181700-311:localhost:8800p0]|@anon-20191002_181700-310:localhost:8800o0]{@anon-20191002_181700-309:localhost:8800n0]z@anon-20191002_181700-308:localhost:8800m0]y@anon-20191002_181700-307:localhost:8800l0]x@anon-20191002_181700-306:localhost:8800k0]w@anon-20191002_181700-305:localhost:8800j0]v@anon-20191002_181700-304:localhost:8800i0]u@anon-20191002_181700-303:localhost:8800h0]t@anon-20191002_181700-302:localhost:8800g0]s@anon-20191002_181700-301:localhost:8800f0]r@anon-20191002_181700-300:localhost:8800e0]q@anon-20191002_181700-299:localhost:8800d0]p@anon-20191002_181700-298:localhost:8800c0]o@anon-20191002_181700-297:localhost:8800b0]n@anon-20191002_181700-296:localhost:8800a0]m@anon-20191002_181700-295:localhost:8800`0]l@anon-20191002_181700-294:localhost:8800_0]k@anon-20191002_181700-293:localhost:8800^0]j@anon-20191002_181700-292:localhost:8800]0]i@anon-20191002_181700-291:localhost:8800\0]h@anon-20191002_181700-290:localhost:8800[0]g@anon-20191002_181700-289:localhost:8800Z0]f@anon-20191002_181700-288:localhost:8800Y0]e@anon-20191002_181700-287:localhost:8800X0]d@anon-20191002_181700-286:localhost:8800W0]c@anon-20191002_181700-285:localhost:8800V0]b@anon-20191002_181700-284:localhost:8800U0]a@anon-20191002_181700-283:localhost:8800T0]`@anon-20191002_181700-282:localhost:8800S0]_@anon-20191002_181700-281:localhost:8800R0]^@anon-20191002_181700-280:localhost:8800Q0]]@anon-20191002_181700-279:localhost:8800P0]@anon-20191002_181700-330:localhost:88000]@anon-20191002_181700-329:localhost:88000]@anon-20191002_181700-328:localhost:88000]@anon-20191002_181700-327:localhost:88000]@anon-20191002_181700-326:localhost:8800~0]@anon-20191002_181700-325:localhost:8800}0]@anon-20191002_181700-324:localhost:8800|0]@anon-20191002_181700-323:localhost:8800{0]@anon-20191002_181700-322:localhost:8800z0]@anon-20191002_181700-321:localhost:8800y0]@anon-20191002_181700-320:localhost:8800x0]\@anon-20191002_181700-278:localhost:8800O0][@anon-20191002_181700-277:localhost:8800N0]Z@anon-20191002_181700-276:localhost:8800M0]Y@anon-20191002_181700-275:localhost:8800L0]X@anon-20191002_181700-274:localhost:8800K0]W@anon-20191002_181700-272:localhost:8800J0]V@anon-20191002_181700-273:localhost:8800I0]U@anon-20191002_181700-270:localhost:8800H0]@anon-20191002_181700-332:localhost:88000]T@anon-20191002_181700-271:localhost:8800G0]S@anon-20191002_181700-267:localhost:8800F0]R@anon-20191002_181700-269:localhost:8800E0]Q@anon-20191002_181700-268:localhost:8800D0]O@anon-20191002_181700-266:localhost:8800B0]N@anon-20191002_181700-265:localhost:8800A0]M@anon-20191002_181700-264:localhost:8800@0]L@anon-20191002_181700-263:localhost:8800?0]K@anon-20191002_181700-262:localhost:8800>0]@anon-20191002_181700-331:localhost:8800 s$rX\ ` d  w # { '+:Ic) 8Ga p eQeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800FOQ$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800Q<eQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800FOQ$157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800Q~eQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800FoOQ$157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800QneQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800FjOQ$157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800QkeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800FgOQ$157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800QheQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800FdOQ$157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800QeeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800QbeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800QaeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800Q_eQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800Q^eQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800Q]eQ$-MNkM7FrdV_mzCRwGktTaZImtwq366CUX_TW0XwHCB4!hWHyATwKfuznrqTiyu:localhost:8800Q\eQ$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw!cGkVFpidyBBxUxsszG:localhost:8800Q[eQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800QZeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800QYeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800QXeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo!bzPCFeFSMbCESvNbxl:localhost:8800QWeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI!RPfffkmSEbWggEjnoI:localhost:8800 TQSeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800IQFeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk!egbhiBqOGhloZzopol:localhost:8800QEeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800QDeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800QCeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA!PQZMTVTeCYqMZwkHvW:localhost:8800QBeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4!kpTPWDZdBbbXKLonZK:localhost:8800QAeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800Q@eQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800Q?eQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800Q>eQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800Q=eQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800Q`eQ$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800 E^ c f |%}(:JE,e?Q ]$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8Mm.room.history_visibility!krhefVncoErkCtnvsy:localhost:8800mvmw@anon-20191002_181700-292:localhost:8800$e/Q ]$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcm.room.join_rules!krhefVncoErkCtnvsy:localhost:8800msXmt(@anon-20191002_181700-292:localhost:8800)e9Q ]$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMm.room.canonical_alias!krhefVncoErkCtnvsy:localhost:8800mpmqI@anon-20191002_181700-292:localhost:8800&e3Q ]$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUm.room.power_levels!krhefVncoErkCtnvsy:localhost:8800mm3mo@anon-20191002_181700-292:localhost:8800 e'Q ]$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQom.room.member!krhefVncoErkCtnvsy:localhost:8800mkPmk@anon-20191002_181700-292:localhost:8800 e'Q  ]$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyAm.room.create!krhefVncoErkCtnvsy:localhost:8800mhmi@anon-20191002_181700-292:localhost:8800!~e)Q ] $8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqUm.room.message!mMsxpaIlcykPuOnDyl:localhost:8800 m`zma@anon-20191002_181700-290:localhost:8800 }e'Q ] $TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Wwm.room.member!mMsxpaIlcykPuOnDyl:localhost:8800 m^wm^@anon-20191002_181700-291:localhost:8800!|e)Q ]$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_Mm.room.message!mMsxpaIlcykPuOnDyl:localhost:8800m[m\@anon-20191002_181700-290:localhost:8800!{e)Q ]$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0m.room.aliases!mMsxpaIlcykPuOnDyl:localhost:8800mXmY@anon-20191002_181700-290:localhost:8800,ze?Q ]$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Em.room.history_visibility!mMsxpaIlcykPuOnDyl:localhost:8800mUmV@anon-20191002_181700-290:localhost:8800$ye/Q ]$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasm.room.join_rules!mMsxpaIlcykPuOnDyl:localhost:8800mRmS@anon-20191002_181700-290:localhost:8800)xe9Q ]$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4m.room.canonical_alias!mMsxpaIlcykPuOnDyl:localhost:8800mPmP@anon-20191002_181700-290:localhost:8800&we3Q ]$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEm.room.power_levels!mMsxpaIlcykPuOnDyl:localhost:8800mKEmL@anon-20191002_181700-290:localhost:8800 ve'Q ]$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Ym.room.member!mMsxpaIlcykPuOnDyl:localhost:8800mHjmH@anon-20191002_181700-290:localhost:8800u e'Q  ]$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkm.room.create!mMsxpaIlcykPuOnDyl:localhost:8800mE4mE@anon-20191002_181700-290:localhost:8800 te'Q ]$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwm.room.member!VOhMAiLfKyTOZbmKGw:localhost:8800m=m=@anon-20191002_181700-289:localhost:8800!se)Q ]$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQm.room.aliases!VOhMAiLfKyTOZbmKGw:localhost:8800m:m;N@anon-20191002_181700-288:localhost:8800,re?Q ]$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcm.room.history_visibility!VOhMAiLfKyTOZbmKGw:localhost:8800m2m5@anon-20191002_181700-288:localhost:8800$qe/Q ]$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprkm.room.join_rules!VOhMAiLfKyTOZbmKGw:localhost:8800m0m1;@anon-20191002_181700-288:localhost:8800)pe9Q ]$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8m.room.canonical_alias!VOhMAiLfKyTOZbmKGw:localhost:8800m.!m.@anon-20191002_181700-288:localhost:8800&oe3Q ]$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwm.room.power_levels!VOhMAiLfKyTOZbmKGw:localhost:8800m+Ym,[@anon-20191002_181700-288:localhost:8800 ne'Q ]$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYm.room.member!VOhMAiLfKyTOZbmKGw:localhost:8800m(sm(@anon-20191002_181700-288:localhost:8800m e'Q  ]$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8m.room.create!VOhMAiLfKyTOZbmKGw:localhost:8800m%m%@anon-20191002_181700-288:localhost:8800  qeQa$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1394}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk"], "type": "m.room.history_visibility", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041705103, "hashes": {"sha256": "t/hijqauLI6vxynqOll5RR2n6cJsfRc6stxaRnVmNo4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/YbelcrzMsEmP8ecSitM8+VtMQmWEjFGbol4soqcwR/W7wfdzybPYdnDS4e9p2Gfan5IvQZpVEvxLFjHjCeuBg"}}, "unsigned": {"age_ts": 1570041705103}}tpeQau$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1393}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8"], "type": "m.room.join_rules", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041704579, "hashes": {"sha256": "8dDO1LsFLRcPuWq8Xu+aujVPXwSGu+VIvNfCN0enbM8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3NC+UpT3lEE5d4jA+xPILNhTm1g1RXK6jSxUfwi+9i9Zh/8XU1iahXW5rv4sj9/BpKpLFUhHdovbGiLq7gGyDA"}}, "unsigned": {"age_ts": 1570041704579}}oeQa9$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1392}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw"], "type": "m.room.canonical_alias", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"alias": "#test-20191002_181700-40:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041703969, "hashes": {"sha256": "uPnP4WlVQe/ggfAsL6052U+EvEumtottn/c/U1EB0Fw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "juX3h80bDXfDTyY+ogFGN7k3dNRudTRfzx2CYOK3pvVzd9qlVBGCHooV1dmWr1wJdIlaCTZcXwegaMn9g7/ECA"}}, "unsigned": {"age_ts": 1570041703969}}kneQac$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1391}{"auth_events": ["$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "type": "m.room.power_levels", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"users": {"@anon-20191002_181700-288:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041703257, "hashes": {"sha256": "NFr4buzsCOPFBfl3eamygTXSfZCL7m/KHQ6oHFZE/Mw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wrvW9ukN/JawJQhrZ6RIPs7DQeUQwkGLcTGkqax6/o+72x59g9t1DmOxUFIEOUGhdZU0lAFosKOQyQny0IMtBQ"}}, "unsigned": {"age_ts": 1570041703257}} L w  R X & ^ E , d2k9q@xF~LR  ~X&^, Lk9q?  1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc *1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gY1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQx1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q01e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu801e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI.1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs)1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10i1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMh1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY:1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8 1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A_1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwG1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEB1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E X1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Uf1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q 1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40K1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc=1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsr1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8 1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4D1e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYq1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEO1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ)1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIs1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg 1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 c1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw 81e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo*1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUe1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DER1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4|1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM;1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY   4 h m9d]c@anon-20191002_181700-320:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgo127.0.0.1>d]c@anon-20191002_181700-318:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAo127.0.0.1 9 4/*=[a \b~2T&Qe!QyLUggxrTnULUAOseq:localhost:8800$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0cI%QO!mOrKBPhetifKHDmElM:localhost:8800$157004174718wxlLH:localhost:8800I$QO!mOrKBPhetifKHDmElM:localhost:8800$157004174617osGDW:localhost:8800I#QO!mOrKBPhetifKHDmElM:localhost:8800$157004174616PvcHe:localhost:8800I"QO!mOrKBPhetifKHDmElM:localhost:8800$157004174515XsrNb:localhost:8800I!QO!mOrKBPhetifKHDmElM:localhost:8800$157004174414klNmS:localhost:8800I QO!mOrKBPhetifKHDmElM:localhost:8800$157004174313OKfBg:localhost:8800TQe!QyLUggxrTnULUAOseq:localhost:8800$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5HoTQe!QyLUggxrTnULUAOseq:localhost:8800$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgTQe!QyLUggxrTnULUAOseq:localhost:8800$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbsTQe!QyLUggxrTnULUAOseq:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoITQe!QyLUggxrTnULUAOseq:localhost:8800$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_WoTQe!MBWnwKRwFznvRpAzxr:localhost:8800$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8TQe!MBWnwKRwFznvRpAzxr:localhost:8800$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6IIQO!azRJNFPIRSFAskLILK:localhost:8800$157004173511wRnRr:localhost:8800IQO!azRJNFPIRSFAskLILK:localhost:8800$157004173510EIiCi:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417349vUcYV:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417338MBNFd:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417327EEUMr:localhost:8800HQM!azRJNFPIRSFAskLILK:localhost:8800$15700417316amiRb:localhost:8800TQe!MBWnwKRwFznvRpAzxr:localhost:8800$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cTQe!MBWnwKRwFznvRpAzxr:localhost:8800$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3YkTQe!MBWnwKRwFznvRpAzxr:localhost:8800$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlETQe!MBWnwKRwFznvRpAzxr:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4TQe!MBWnwKRwFznvRpAzxr:localhost:8800$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4T Qe!krhefVncoErkCtnvsy:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8T Qe!krhefVncoErkCtnvsy:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYET Qe!krhefVncoErkCtnvsy:localhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgT Qe!krhefVncoErkCtnvsy:localhost:8800$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MT Qe!krhefVncoErkCtnvsy:localhost:8800$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3EjcTQe!krhefVncoErkCtnvsy:localhost:8800$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMTQe!krhefVncoErkCtnvsy:localhost:8800$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUTQe!krhefVncoErkCtnvsy:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoTQe!krhefVncoErkCtnvsy:localhost:8800$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyATQe~!mMsxpaIlcykPuOnDyl:localhost:8800$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqUTQe}!mMsxpaIlcykPuOnDyl:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwTQe|!mMsxpaIlcykPuOnDyl:localhost:8800$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_MTQe{!mMsxpaIlcykPuOnDyl:localhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0TQez!mMsxpaIlcykPuOnDyl:localhost:8800$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61ETQey!mMsxpaIlcykPuOnDyl:localhost:8800$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasT~Qex!mMsxpaIlcykPuOnDyl:localhost:8800$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4T}Qew!mMsxpaIlcykPuOnDyl:localhost:8800$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICET|Qev!mMsxpaIlcykPuOnDyl:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YT{Qeu!mMsxpaIlcykPuOnDyl:localhost:8800$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkTzQet!VOhMAiLfKyTOZbmKGw:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwTyQes!VOhMAiLfKyTOZbmKGw:localhost:8800$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQTxQer!VOhMAiLfKyTOZbmKGw:localhost:8800$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc G%|JPj8p> % v D  } K  Q  W % ] +c1Wi7o= uC[)1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o ?1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 <1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ 1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8|1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQA1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYj0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0a1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8M1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs>1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA 1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMj1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg 1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU01e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4q1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo 1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0H1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4N1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ e1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg31e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg _1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ61e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQQ1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYT1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qp1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rci1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc 1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYa1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo 1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 41e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw^  \vueQay$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1398}{"auth_events": ["$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk"], "prev_events": ["$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk"], "type": "m.room.member", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-290", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-290:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041710698, "hashes": {"sha256": "1BAPZ/UU1JyRWS2XJ+EHmqQliceQtSo9YVbH8D+e7AI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2OJdH5bek9BMEkRqXYmM+uhjil5FmqQlU+G+yECc6f3SKtmDoCBB1f+EfvCciAJeNFOOU4IlWlVSc9Hx5To9Dg"}}, "unsigned": {"age_ts": 1570041710698}}iteQa_$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1397}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-290:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041709876, "hashes": {"sha256": "MNaa0f7yN+jjXhFTaqlBbszy5GK9n8ohN+yNRJW/BU0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MUNMWWOPe3x4SRIh7BxsSjp/mC/03St1flm0vCXOf+wSr/dzYZG7MsAP/HSPF7RVEVyVHgVrjecFpPFZYEc1AQ"}}, "unsigned": {"age_ts": 1570041709876}}VseQa9$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 309, "stream_ordering": 1396}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk"], "prev_events": ["$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ"], "type": "m.room.member", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-289:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-289", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-289:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041707904, "hashes": {"sha256": "zqoSJ1kWL0bQ6V1sids3f0CNe6IeW6sla4rxAdTCn/M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "byv575WbbdSLodoQRUTv73RwsXs/hq0Bp4rxDKnd6Y4tYEGGl9wswK+7umGts1zJnbQaXM/JDlw+lVos/E4aBw"}}, "unsigned": {"age_ts": 1570041707904}} reQaM$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ!VOhMAiLfKyTOZbmKGw:localhost:8800{"token_id": 308, "stream_ordering": 1395}{"auth_events": ["$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw", "$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8", "$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY"], "prev_events": ["$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc"], "type": "m.room.aliases", "room_id": "!VOhMAiLfKyTOZbmKGw:localhost:8800", "sender": "@anon-20191002_181700-288:localhost:8800", "content": {"aliases": ["#test-20191002_181700-40:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041707139, "hashes": {"sha256": "EeTV53icrzAHhy0BsfrSTV2fDVagn22NcqKXvWsj768"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmfUOL+LxDPI4bJbSoZql2pO5Xq/I5kwhFxhliraCdGp58I2Z8WradloIrsQyTIEH54y+s2TJ9erNiLZ1yKWDg"}}, "unsigned": {"age_ts": 1570041707139}} "q | 7 P [ ` !E@zG "Q']e!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIc!Q' e!QyLUggxrTnULUAOseq:localhost:8800m.room.create$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo^ Q3 O!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels$157004173712pxBJg:localhost:8800iQ3 e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8\Q/ O!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rules$157004173511wRnRr:localhost:8800dQ? O!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility$157004173510EIiCi:localhost:8800]Q3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access$15700417349vUcYV:localhost:8800]Q3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels$15700417338MBNFd:localhost:8800Q']M!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$15700417327EEUMr:localhost:8800WQ' M!azRJNFPIRSFAskLILK:localhost:8800m.room.create$15700417316amiRb:localhost:8800fQ- e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstone$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6IoQ? e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibility$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cgQ/ e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rules$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3YkiQ3 e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE Q']e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4cQ' e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4 Q']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8 Q']e !krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYErQ))e !krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgoQ? e !krhefVncoErkCtnvsy:localhost:8800m.room.history_visibility$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MgQ/ e !krhefVncoErkCtnvsy:localhost:8800m.room.join_rules$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcl Q9 e !krhefVncoErkCtnvsy:localhost:8800m.room.canonical_alias$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMi Q3 e!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU Q']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoc Q' e!krhefVncoErkCtnvsy:localhost:8800m.room.create$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA Q']e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwrQ))e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0oQ? e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibility$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61EgQ/ e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rules$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGaslQ9 e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_alias$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4iQ3 e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.power_levels$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE Q']e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YcQ' e!mMsxpaIlcykPuOnDyl:localhost:8800m.room.create$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk Q']e!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw ! 0 @ P ` p(8HXhxuh ]@anon-20191002_181700-323:localhost:8800$2b$04$C/w98EvhoECVV6pOT2cYauAdWr5Yc5Y2YPEccotEHWs5U5l0GyNZe]dug ]@anon-20191002_181700-322:localhost:8800$2b$04$5E9uYzjVikTgJ07fg38x/OmwwEvbFO8yztOuJGtRdGnhuZhrFMdzy]duf ]@anon-20191002_181700-321:localhost:8800$2b$04$ZKG9xAeuwXBPoTqGD5S.8Owlz2uPjqU1nDF0rxoNGuxilFbmW7wTy]Yue ]@anon-20191002_181700-320:localhost:8800$2b$04$7xSju11bhFAvKi90tWCBxubptNlR4lJa3oG78d8AjTA0m.WqM5z6q]Yud ]@anon-20191002_181700-319:localhost:8800$2b$04$pZGzEuq4DIw1nr2g0v8HW.fydygfODrTLcB2QhLpxSrv6X8AjGK4y]Tuc ]@anon-20191002_181700-318:localhost:8800$2b$04$zwo3/Ws9wNdMDXs9KA2jY.nbHrb5Tl6NSKjVEUTZrE/DQBF.iP5pK]Nub ]@anon-20191002_181700-317:localhost:8800$2b$04$is66zpjFRb5b8LTQ9ZzYUuXajeUlXlDpYdL4YTWuCd53uDl/VhsnG]Hua ]@anon-20191002_181700-316:localhost:8800$2b$04$cv7EATBligFVjdhZ/e3cie112Rk0/4xhlw7l4UIbECBQekJwJZR.6]Hu` ]@anon-20191002_181700-315:localhost:8800$2b$04$xJNtW7DrktdzqAORR3NZVeU70vweHHbL09ghqa.KDydwqeU5Wo/R6]Gu_ ]@anon-20191002_181700-314:localhost:8800$2b$04$0lPRg5m4V/iNGII2JLdZAui4.oPgZmoalBbmhgKrBU.cVgIl.2WEu]Fu^ ]@anon-20191002_181700-312:localhost:8800$2b$04$Y3hzG8mwGMWmCdFPCde63uTNUxc7VxrIUfM/9e32YpmA3UHRy1M5G]:u] ]@anon-20191002_181700-311:localhost:8800$2b$04$fspmyx3ye8Rm5.mDtLUKTuA2q383wXS13FLYM2wgekMKcfCfWRsRq]/u\ ]@anon-20191002_181700-310:localhost:8800$2b$04$28nOFKr6L53oVmqFEeAVL.rK8SDojGVUGGachdbvK40iSVV7Olk.G])u[ ]@anon-20191002_181700-309:localhost:8800$2b$04$XSIcjlohLsZ5NQGisu1W8.LM85HtqwlLBVdyCHtgWA/MM1EnfiMlq])uZ ]@anon-20191002_181700-308:localhost:8800$2b$04$mMxZ3ZZZuQH3sg3lpdoehuvPrOgeS2XlDo1jBuP/M9OMS5lNkYUli]#uY ]@anon-20191002_181700-307:localhost:8800$2b$04$dSm4quUvSB9LPitsEgv2Ue84RSB2sSb2z//eOmeHV0IYYvDzlOhim]#uX ]@anon-20191002_181700-306:localhost:8800$2b$04$acrmKqEuHk6xophyYHZQP.yfGMBXFE50D24qGMFj3PVDYY6KZPAiC]uW ]@anon-20191002_181700-305:localhost:8800$2b$04$klDFGyDne3g1yIDeFPhh2.Cfxf1e7f77/fTn7xANweMSjMiaTyREi]uV ]@anon-20191002_181700-304:localhost:8800$2b$04$o4QvVEA5B.3FNWykvJpote5v4K6nS0rgx72ugmc.78/6ttJJ6NtW2]uU ]@anon-20191002_181700-303:localhost:8800$2b$04$oMwTVUej0MlqOy.dHIfSOewQ29TUcIyBM8vO3yoOLprtMI2SYHPZ2]uT ]@anon-20191002_181700-302:localhost:8800$2b$04$krxNvWOET3n4v7u9QYyoJO15NcrCGuG3RQEf4Pg6pJjPfkRpJV7yS]uS ]@anon-20191002_181700-301:localhost:8800$2b$04$XZAw9.ioz3vBi3JNJsgG9u.IMIiiUoDO4hevkp6bk4ZGNDE/OmYpC]uR ]@anon-20191002_181700-300:localhost:8800$2b$04$PpTDxyRGzSOYU3kv999N4u6B5Ohrl7OzfJ.TOtrx687nWMPOHvlDe]uQ ]@anon-20191002_181700-299:localhost:8800$2b$04$ne33lXy0yhFKKMcjNIFwxeP52n7mni4oQ7ctTLZnxVyspQW49yM06]uP ]@anon-20191002_181700-298:localhost:8800$2b$04$TDhvogHr9wzqXuzx7WbXM.WPGei.SbJiv7YVJlS8iuq/vHfG96L1C]uO ]@anon-20191002_181700-297:localhost:8800$2b$04$dTLyxL8yJVwoYJy/uruuj.nLBm2ZaTRCTxAe50w4o6mbJdMtfd5YW]uN ]@anon-20191002_181700-296:localhost:8800$2b$04$3pPr2lNphEAFVFpNhKUvIOxv6lfOY3u2JvP6rVmPzs9xQqnH/FD2G]uM ]@anon-20191002_181700-295:localhost:8800$2b$04$940QPvV9VJNgH6vTOGzzSeMkbP4tcc..7tuqNrlbwlr7Jy6x5WEci]uL ]@anon-20191002_181700-294:localhost:8800$2b$04$MJLlJ6y1blZ9MSzi7eubxOHITRnc7xKuDn.4.wcZJhTvt57hYcBk2]~uK ]@anon-20191002_181700-293:localhost:8800$2b$04$G4jV48WoqhsFWsFeUlokGeRsHdIjYwOJwhLy1B0IMhcXEaBjvra7q]vuJ ]@anon-20191002_181700-292:localhost:8800$2b$04$wX0v1fAMV5N5ShrcyljvJ.uu2NEFVKecKpxWMxytwtbOQxe582B4K]uuI ]@anon-20191002_181700-291:localhost:8800$2b$04$Yu2LQFeOFbtj7CTVTDi9XOqE8Qj5YM5BTdVaba.DJAJRPb1Pp.p8y]luH ]@anon-20191002_181700-290:localhost:8800$2b$04$Lt1iHPPVy.Q3YK4Usyrq3uQjU6D9lLVvSygmObXGY1FhNwMrV7ZVu]l ~z v r n j fb^ZVA=9reeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800qeeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800peeQ$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800oeeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800neeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800imOOQ$157004173511wRnRr:localhost:8800$157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800hlOMQ$157004173510EIiCi:localhost:8800$15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gkMMQ$15700417349vUcYV:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gjMMQ$15700417338MBNFd:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800giMMQ$15700417327EEUMr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800heeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800geeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800feeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800eeeQ$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800deeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800ceeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800beeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800aeeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800`eeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800_eeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800^eeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800]eeQ$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800\eeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800[eeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800ZeeQ$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800YeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800XeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800WeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800VeeQ$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800UeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800TeeQ$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800 !y} { y w  < j -Y}{y~ eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800~eeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~eeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~~eeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800g}OMQ$157004173511wRnRr:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800g|OMQ$157004173511wRnRr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800g{OMQ$157004173511wRnRr:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gzOMQ$157004173510EIiCi:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gyOMQ$157004173510EIiCi:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800gxOMQ$157004173510EIiCi:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fwMMQ$15700417349vUcYV:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fvMMQ$15700417349vUcYV:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fuMMQ$15700417349vUcYV:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800ftMMQ$15700417338MBNFd:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800fsMMQ$15700417338MBNFd:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800frMMQ$15700417327EEUMr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800~qeeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~peeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~oeeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800~neeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~meeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~leeQ$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800~keeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800~jeeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800~ieeQ$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800  yeQa$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1402}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas"], "type": "m.room.history_visibility", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041714071, "hashes": {"sha256": "NLNnVSoUXd+O2Z+7HGixBiPUTGm59KHNVb5n/bY12bg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C1PZaEGebibpo1SoCGcx7kWbx59UECnNRQmW/K3NRyw3YTECVhQXx7uuTSGtuqlMjhSKuq9D7jK3uGaFHzH+Aw"}}, "unsigned": {"age_ts": 1570041714071}}txeQau$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1401}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4"], "type": "m.room.join_rules", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041713355, "hashes": {"sha256": "+zYuzfO0GWja5oLabSOVn0LuulnUP16ihUDw3YA1NR0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zBJGG/t9n4VFZ/6aeaA2f96ByFmVMnMK2GgdW1oV5WMjep3Pkk3XBfKUD5byJwTeLH0y3HAutDaMXG9LAjCNCA"}}, "unsigned": {"age_ts": 1570041713355}}weQa9$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1400}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE"], "type": "m.room.canonical_alias", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"alias": "#test-20191002_181700-41:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041712665, "hashes": {"sha256": "uPRPg8dZ38s1z6Lole/QnqSv/5g8nf+vo5CYNwJUPJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c8Ut8gHH3i9VQ+sdxokrvuUZLJ8ktzMPbo0zqsRs7DWNmJ1l9VssV2m51H3CTtJlBD0kGQvs6dWBQj1jDe8fAQ"}}, "unsigned": {"age_ts": 1570041712665}}kveQac$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1399}{"auth_events": ["$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "type": "m.room.power_levels", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"users": {"@anon-20191002_181700-290:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041711429, "hashes": {"sha256": "mbFzs9oy/XeSSVPx2N51ilbeDEfrxfGHqTGzhwLPrvw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPNmGgoW9istCOhr7fJJfjW4+vt8KP638ZMI8vBXF3EAujhjhwm/5lrHUR6sVlcAsJNQZN2/KiWT+qM04B3bAQ"}}, "unsigned": {"age_ts": 1570041711429}} "f%< E H m 8AiU#"%GfqQ']O!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$157004174414klNmS:localhost:8800YpQ' O!mOrKBPhetifKHDmElM:localhost:8800m.room.create$157004174313OKfBg:localhost:8800poQ? e!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibility$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5HohnQ/ e!QyLUggxrTnULUAOseq:localhost:8800m.room.join_rules$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgjmQ3 e!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs lQ']e!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIdkQ' e!QyLUggxrTnULUAOseq:localhost:8800m.room.create$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_WojQ3 ee!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlEgiQ- e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstone$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I]hQ/ O!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rules$157004173511wRnRr:localhost:8800egQ? O!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility$157004173510EIiCi:localhost:8800^fQ3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access$15700417349vUcYV:localhost:8800^eQ3 M!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels$15700417338MBNFd:localhost:8800dQ']M!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$15700417327EEUMr:localhost:8800XcQ' M!azRJNFPIRSFAskLILK:localhost:8800m.room.create$15700417316amiRb:localhost:8800pbQ? e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibility$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5chaQ/ e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rules$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Ykj`Q3 e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE _Q']e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4d^Q' e!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox48]Q']ee!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE \Q']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEs[Q))e!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8IejgpZQ? e!krhefVncoErkCtnvsy:localhost:8800m.room.history_visibility$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8MhYQ/ e!krhefVncoErkCtnvsy:localhost:8800m.room.join_rules$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3EjcmXQ9 e!krhefVncoErkCtnvsy:localhost:8800m.room.canonical_alias$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMjWQ3 e!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU VQ']e!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQodUQ' e!krhefVncoErkCtnvsy:localhost:8800m.room.create$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA TQ']e}!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwsSQ))e{!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0pRQ? ez!mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibility$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61EhQQ/ ey!mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rules$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasmPQ9 ex!mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_alias$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 #+H S X   G>| NAZ$OQ/ $157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rulesb#OQ? $157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility\"OQ3 $157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access\!OQ3 $157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels OQ']$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800joinVOQ' $157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.createmeQ? $boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibilityeeQ/ $PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800m.room.join_rulesj eQ']$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800joinaeQ' $WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800m.room.createdeQ- $YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstoneZOQ/ $157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rulesbOQ? $157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility[MQ3 $15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access[MQ3 $15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levelsMQ']$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800joinUMQ' $15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.createmeQ? $3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibilityeeQ/ $OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rulesgeQ3 $fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels eQ']$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800joina eQ' $C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create eQ']$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800leavep eQ))$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800m eQ? $coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800m.room.history_visibilitye eQ/ $YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800m.room.join_rulesjeQ9 $HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800m.room.canonical_aliasgeQ3 $JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels eQ']$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800joinaeQ' $KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800m.room.create eQ']$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-291:localhost:8800joinpeQ))$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800meQ? $SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibilityeeQ/ $XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rulesjeQ9 $qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_alias a} { y w u sqomkigeca~heeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800~geeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~feeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~eeeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800~deeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~ceeQ$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~beeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~aeeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~`eeQ$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~_eeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~^eeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~]eeQ$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~\eeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~[eeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~ZeeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~YeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~XeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~WeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800~VeeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800~UeeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~TeeQ$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800~SeeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800~ReeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~QeeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~PeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~OeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~NeeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~MeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800~LeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800~KeeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE!mMsxpaIlcykPuOnDyl:localhost:8800~JeeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800 l \l}eQw$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "txn_id": "156", "stream_ordering": 1406}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww"], "type": "m.room.message", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"body": "Hello back", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041716858, "hashes": {"sha256": "7faWvdsopt7TR3wbfjJGGrT9gLFbvXvOtl/7DqOBowE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CVl2LReCErkhKNvbtU08bA+OPyUqHV0aDZmH4U3/470MNJLL4fiGoBZczGVezT+e8gfkn0QubYdnfQ3M7BYhDA"}}, "unsigned": {"age_ts": 1570041716858}}V|eQa9$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 311, "stream_ordering": 1405}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas"], "prev_events": ["$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M"], "type": "m.room.member", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-291:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-291", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-291:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041716343, "hashes": {"sha256": "ZmlDDLbv/NiK+E1osAMmyRRjgE+ZchQIPbVNQpYZ9bE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KGu21JJ+EQQLDn8xaw+O4bB/tdAeQPCFNr6ewnwmfr82dagMr0iwnQRZyWft0w4DZhVPYQtqQFtXdxoALD9vAg"}}, "unsigned": {"age_ts": 1570041716343}}{eQw$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "txn_id": "155", "stream_ordering": 1404}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0"], "type": "m.room.message", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"msgtype": "m.text", "body": "Hello world"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041715608, "hashes": {"sha256": "rn2UGymw2CEOBqKTWH4R8ERKDsfsvJ2VCq3TyoVXiCk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JlkHv10RryU/OsfArpY7p5XBVqT3LBRBGlQXSzVafd1FGHCDnuZzMX6LQV2jHQHMBvzCI0beFz/oNY2pRdC6Dg"}}, "unsigned": {"age_ts": 1570041715608}} zeQaM$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800{"token_id": 310, "stream_ordering": 1403}{"auth_events": ["$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE", "$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk", "$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y"], "prev_events": ["$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E"], "type": "m.room.aliases", "room_id": "!mMsxpaIlcykPuOnDyl:localhost:8800", "sender": "@anon-20191002_181700-290:localhost:8800", "content": {"aliases": ["#test-20191002_181700-41:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041714929, "hashes": {"sha256": "yJfQfNWGBSzCQbXnGtf6DIs18yZP1QsVlmgbWbygHPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XjdDtbsuRMuNe/BgR96k9d3Q3AxQwE37P47v1t5nqsUReXFim+Nw+vdoGFt2dw4aOKSCY70RGZMxhS5y5nPZCw"}}, "unsigned": {"age_ts": 1570041714929}}   *eQa9$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1410}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU"], "type": "m.room.canonical_alias", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"alias": "#test-20191002_181700-42:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041720980, "hashes": {"sha256": "bSX5Ec/yJm3CS5UpOzM0l1R/nzBh0JzAoFXrHv4QLQ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g8bEV0VghsVjB3yC06d7hLb2PEIhLHT3xdm2TBlM5pjuWM5v7C0ihzAE8o3wviFvh5A+CSvQMIvUQDhzbiCLDQ"}}, "unsigned": {"age_ts": 1570041720980}}keQac$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1409}{"auth_events": ["$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "type": "m.room.power_levels", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"users": {"@anon-20191002_181700-292:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041720115, "hashes": {"sha256": "8TustHf3Tj5EafhpWXq+UiFw3xoircOy3QIo4q3jAqg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "plsTHUUr0i7THamv02h3KEDu8JVIenIS9+gFXcLxJJZI4QQbcq6qTTSLvlSRRRRVjrO5Sjw3ICvAz+VGa/4BBg"}}, "unsigned": {"age_ts": 1570041720115}}veQay$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1408}{"auth_events": ["$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA"], "prev_events": ["$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA"], "type": "m.room.member", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-292", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-292:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041719632, "hashes": {"sha256": "ZbxsQi+i2JjfTrRnCBosLFKESLLscCC+RWD3sdChOzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6LJtgjMnw5lSstCDokcgqAPob0ICSvZPDqms+xxPrtnIUaZpDDZhwOmD48e8C8wP+zCjNKft4QTrU4bssSl5DA"}}, "unsigned": {"age_ts": 1570041719632}}i~eQa_$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1407}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-292:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041718969, "hashes": {"sha256": "REbXmKq5E8LdMCiYJNpyRFn5MYCl1AFPO7nD5sqcJjQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "529GB32JJPDXct8GXLbuCbpxt9ENszXNs8VSeC/XwQT6LQyxzt4RIzEobxwyIO/agadbJNTCHB4Ysq6Ou6taAQ"}}, "unsigned": {"age_ts": 1570041718969}} $8 ` ` o x  Hj JyFl IazeQ' $wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.creategyeQ3 $q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levelsdxeQ- $-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstoneZwOQ/ $157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rulesbvOQ? $157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility\uOQ3 $157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access\tOQ3 $157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels~sOQ']$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800VrOQ' $157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800m.room.createmqeQ? $boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibilityepeQ/ $PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800m.room.join_rulesgoeQ3 $VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels neQ']$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800ameQ' $WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800m.room.creategleQ3 $fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levelsdkeQ- $YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstoneZjOQ/ $157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.join_rulesbiOQ? $157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility[hMQ3 $15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access[gMQ3 $15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels}fMQ']$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800UeMQ' $15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800m.room.createmdeQ? $3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibilityeceQ/ $OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rulesgbeQ3 $Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels aeQ']$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800a`eQ' $C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800m.room.create _eQ']$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800 ^eQ']$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800p]eQ))$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800m\eQ? $coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800m.room.history_visibilitye[eQ/ $YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800m.room.join_rulesjZeQ9 $HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800m.room.canonical_aliasgYeQ3 $JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800m.room.power_levels XeQ']$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800aWeQ' $KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA!krhefVncoErkCtnvsy:localhost:8800m.room.create 9r @ y :s4mH8` O]]Q=$157004183063NdEPw:localhost:8800@anon-20191002_181700-301:localhost:8800@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800joinanon-20191002_181700-301C_ e]]Q=$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw@anon-20191002_181700-301:localhost:8800@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800joinanon-20191002_181700-3018^ O]]Q=$157004181756ejZNp:localhost:8800@anon-20191002_181700-300:localhost:8800@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800joinanon-20191002_181700-300C] e]]Q=$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao@anon-20191002_181700-300:localhost:8800@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800joinanon-20191002_181700-300\ O+]Q$157004180853KmrHT:localhost:8800@bob:matrix.org@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800ban8[ O]]Q=$157004180448zlZXD:localhost:8800@anon-20191002_181700-299:localhost:8800@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800joinanon-20191002_181700-299Z e+]Q$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE@bob:matrix.org@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800banCY e]]Q=$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY@anon-20191002_181700-299:localhost:8800@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800joinanon-20191002_181700-2998X O]]Q=$157004178835mLAyG:localhost:8800@anon-20191002_181700-298:localhost:8800@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800joinanon-20191002_181700-298CW e]]Q=$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw@anon-20191002_181700-298:localhost:8800@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800joinanon-20191002_181700-2988V O]]Q=$157004176828ZZJWh:localhost:8800@anon-20191002_181700-297:localhost:8800@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800joinanon-20191002_181700-297CU e]]Q=$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI@anon-20191002_181700-297:localhost:8800@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800joinanon-20191002_181700-2978T O]]Q=$157004175621DDceh:localhost:8800@anon-20191002_181700-296:localhost:8800@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800joinanon-20191002_181700-296CS e]]Q=$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE@anon-20191002_181700-296:localhost:8800@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800joinanon-20191002_181700-2968R O]]Q=$157004174414klNmS:localhost:8800@anon-20191002_181700-295:localhost:8800@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800joinanon-20191002_181700-295CQ e]]Q=$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI@anon-20191002_181700-295:localhost:8800@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800joinanon-20191002_181700-2957P M]]Q=$15700417327EEUMr:localhost:8800@anon-20191002_181700-294:localhost:8800@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800joinanon-20191002_181700-294CO e]]Q=$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4@anon-20191002_181700-294:localhost:8800@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800joinanon-20191002_181700-294,N e]]Q$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8@anon-20191002_181700-293:localhost:8800@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800leaveCM e]]Q=$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE@anon-20191002_181700-293:localhost:8800@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800joinanon-20191002_181700-293CL e]]Q=$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo@anon-20191002_181700-292:localhost:8800@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800joinanon-20191002_181700-292 8l D `8,]c!E@anon-20191002_181700-301:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwoSJPGITTBTX127.0.0.1Perl + Net::Async::HTTP/0.44mo+]c!E@anon-20191002_181700-300:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0QoZZJIQPLATK127.0.0.1Perl + Net::Async::HTTP/0.44m̔*]c!E@anon-20191002_181700-299:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQoBPDORAMNSE127.0.0.1Perl + Net::Async::HTTP/0.44mȃ)]c!E@anon-20191002_181700-298:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4QoGTROHDSCGV127.0.0.1Perl + Net::Async::HTTP/0.44mE(]c!E@anon-20191002_181700-297:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdHenVAd24sWVlZfmp3eVUKMDAyZnNpZ25hdHVyZSAOFRxX1cLJnYVRUMDlG9HE6iPKE5M0OqIb4Z5fs5uAkAoDVSKNCGFXX127.0.0.1Perl + Net::Async::HTTP/0.44mɃ']c!E@anon-20191002_181700-296:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGE9bEh1VC1NMF9rSSZ-LFgKMDAyZnNpZ25hdHVyZSBksFioy8Chwmxm9qJmXkM81yr8yRBiSP5ezVX07CCseAoSBLEQBXZQL127.0.0.1Perl + Net::Async::HTTP/0.44m&]c!E@anon-20191002_181700-295:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZyLVhqMXhudkllcVlHPXQKMDAyZnNpZ25hdHVyZSD73VH_4bgyhj5sg8dy3Ty4_ZgoTUxFSQJ0hYA0aUocrQoCIYGWJHPPN127.0.0.1Perl + Net::Async::HTTP/0.44mǷ3%]c!E@anon-20191002_181700-294:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQrRVJWSkxpMVFJbEA3M3YKMDAyZnNpZ25hdHVyZSAQmSzRVN8RMJ2UHIi9Oev7oQ32aNFBPxyjULl8qCaXQQoRKGLRVXFMG127.0.0.1Perl + Net::Async::HTTP/0.44mdžg$]c!E@anon-20191002_181700-293:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZBUn5QZmJsUHJqMnRDVzYKMDAyZnNpZ25hdHVyZSArKTbcr1rV1SRr-n6DU5UwftqGNxb2ZtORiLPfdHACLwoPVLMJRXINQ127.0.0.1Perl + Net::Async::HTTP/0.44m{#]c!E@anon-20191002_181700-292:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJESktDcStZWnVyc0szSmMKMDAyZnNpZ25hdHVyZSCSUC73q2iGei99tipKQf__QdNbdkZLIaKhjRiCwVpY_goGGCVZACJDJ127.0.0.1Perl + Net::Async::HTTP/0.44mg o:U# b0h6  { u J VIZ(= P O v D | C  $ *>o 8  b \ 1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08L1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9AL1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU 1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w 1e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkr1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg61e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM/1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo;1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14.1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA &1e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8^1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg X1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A A1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 21e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg 1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ:1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg> *c1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM/1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMh1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4p1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA<1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgb1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I q1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0"1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk\0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30@ ,1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw 21e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gG1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4 21e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU Y1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0  d1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ601e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQI 21e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino>21e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMd1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo  [VeQa9$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800{"token_id": 313, "stream_ordering": 1414}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc"], "prev_events": ["$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg"], "type": "m.room.member", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-293:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-293", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-293:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041724061, "hashes": {"sha256": "vInYYt6NDLWBOCedPdHxZOCT83W07d/OZuGlt09mDSk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8dHEHKyxockdqU6xMR9ErcqRQlu8kfT41/wTpHHtXYIi/YbB7p+rA/g9HfBsfC+HzqlXcrK8ZmxUqhWihVRkCg"}}, "unsigned": {"age_ts": 1570041724061}} eQaM$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1413}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M"], "type": "m.room.aliases", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"aliases": ["#test-20191002_181700-42:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041723355, "hashes": {"sha256": "3FjQRizUCo+h+s0zr9noQVAf/W4RbaiQtYYN68P4CuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Yepei9c7oz/PcS7xBU3SF+bgw7YVj67i3yYhJzt8buhuu4M/7R0MCITRLskX1JBAZxARn75fo4lW8bvhWeYYBg"}}, "unsigned": {"age_ts": 1570041723355}}eQa$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1412}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc"], "type": "m.room.history_visibility", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041722371, "hashes": {"sha256": "oheBZnFYA/7fEwabWd6ERukUTNjsva32wRQ/VKswQeI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DGfoTYOszZ3jLUGY/iUg1GBkkMSEOEz2oKw2StkfTbd5GB10NREXDSirv5THxuBl2JQfr7AD8suKVWFhjX7RCQ"}}, "unsigned": {"age_ts": 1570041722371}}teQau$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc!krhefVncoErkCtnvsy:localhost:8800{"token_id": 312, "stream_ordering": 1411}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo"], "prev_events": ["$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM"], "type": "m.room.join_rules", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-292:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041721688, "hashes": {"sha256": "JWTbI17urqHVi2TrT/37oeQE2d3mC9rezb3PncMpWTI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yxLqxFv2924mb7Kfiil/a3L2WW1H9JiFiPp4aApREwkzqDIm0KdsQk6olZWkqMUNyAV9oLKlhCLSNqKLcINGDA"}}, "unsigned": {"age_ts": 1570041721688}} [ q # { 5 ax,6VO3Q ]$157004174515XsrNb:localhost:8800m.room.power_levels!mOrKBPhetifKHDmElM:localhost:8800mm}@anon-20191002_181700-295:localhost:8800O'Q ]$157004174414klNmS:localhost:8800m.room.member!mOrKBPhetifKHDmElM:localhost:8800mm͂@anon-20191002_181700-295:localhost:8800 O'Q  ]$157004174313OKfBg:localhost:8800m.room.create!mOrKBPhetifKHDmElM:localhost:8800mm8@anon-20191002_181700-295:localhost:8800,e?Q ]$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hom.room.history_visibility!QyLUggxrTnULUAOseq:localhost:8800mLm @anon-20191002_181700-295:localhost:8800$e/Q ]$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgm.room.join_rules!QyLUggxrTnULUAOseq:localhost:8800mm<@anon-20191002_181700-295:localhost:8800&e3Q ]$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbsm.room.power_levels!QyLUggxrTnULUAOseq:localhost:8800mǽmǾ@anon-20191002_181700-295:localhost:8800 e'Q ]$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIm.room.member!QyLUggxrTnULUAOseq:localhost:8800mǺmǻg@anon-20191002_181700-295:localhost:8800 e'Q  ]$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wom.room.create!QyLUggxrTnULUAOseq:localhost:8800mǷmǸ@anon-20191002_181700-295:localhost:8800&e3Q ]$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8m.room.power_levels!MBWnwKRwFznvRpAzxr:localhost:8800mǮmǰ@anon-20191002_181700-294:localhost:8800#e-Q ]$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6Im.room.tombstone!MBWnwKRwFznvRpAzxr:localhost:8800mǚ`mǬ@anon-20191002_181700-294:localhost:8800O/Q ]$157004173511wRnRr:localhost:8800m.room.join_rules!azRJNFPIRSFAskLILK:localhost:8800mǪomǪ@anon-20191002_181700-294:localhost:8800!O?Q ]$157004173510EIiCi:localhost:8800m.room.history_visibility!azRJNFPIRSFAskLILK:localhost:8800mǧmǨ @anon-20191002_181700-294:localhost:8800M3Q ]$15700417349vUcYV:localhost:8800m.room.guest_access!azRJNFPIRSFAskLILK:localhost:8800mǥmǥ}@anon-20191002_181700-294:localhost:8800M3Q ]$15700417338MBNFd:localhost:8800m.room.power_levels!azRJNFPIRSFAskLILK:localhost:8800mǢUmǢ@anon-20191002_181700-294:localhost:8800M'Q ]$15700417327EEUMr:localhost:8800m.room.member!azRJNFPIRSFAskLILK:localhost:8800mǝmǟ@anon-20191002_181700-294:localhost:8800  M'Q  ]$15700417316amiRb:localhost:8800m.room.create!azRJNFPIRSFAskLILK:localhost:8800mǚmǛ=@anon-20191002_181700-294:localhost:8800, e?Q ]$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5cm.room.history_visibility!MBWnwKRwFznvRpAzxr:localhost:8800mǓWmǕ@anon-20191002_181700-294:localhost:8800$ e/Q ]$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Ykm.room.join_rules!MBWnwKRwFznvRpAzxr:localhost:8800mǐmǑi@anon-20191002_181700-294:localhost:8800& e3Q ]$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlEm.room.power_levels!MBWnwKRwFznvRpAzxr:localhost:8800mǍdmǎ@anon-20191002_181700-294:localhost:8800 e'Q ]$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4m.room.member!MBWnwKRwFznvRpAzxr:localhost:8800mljmNJ;@anon-20191002_181700-294:localhost:8800 e'Q  ]$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4m.room.create!MBWnwKRwFznvRpAzxr:localhost:8800mdžmLJ @anon-20191002_181700-294:localhost:8800 e'Q ] $fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8m.room.member!krhefVncoErkCtnvsy:localhost:8800 mǀCmǀ@anon-20191002_181700-293:localhost:8800 e'Q ]$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEm.room.member!krhefVncoErkCtnvsy:localhost:8800m|m}@anon-20191002_181700-293:localhost:8800!e)Q ]$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejgm.room.aliases!krhefVncoErkCtnvsy:localhost:8800mymz@anon-20191002_181700-292:localhost:8800 /sNC D ]  h  ]  R h~%shs%;0~%sV3eL$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYsha25636&LWN2sV2eL$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKosha256/tc08R lT:jZoV1eL$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_ssha2560-+GLF@pia Z(뒋V0eL$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAsha256,}&;<)c :9V/eL$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIsha256C9x Z|~v ?O>TXV.eL$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4ssha256gҩdegb_.aSĦg0uV-eL$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewsha256B_O5R1Hh"+PV,eL$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDossha256tǗW"ϾSO*'\Hh5K+OL$157004175925JuKDZ:localhost:8800sha256Թz3}@VzRخ쪿&K*OL$157004175824dFhko:localhost:8800sha256wOp@Y%.>oǭÁ=KR5K)OL$157004175723CBKAp:localhost:8800sha256-zl_-u1x U; Sַ5K(OL$157004175622yCTNM:localhost:8800sha256>թSЧxYTӟjho..K'OL$157004175621DDceh:localhost:8800sha256Q:F}u4d3״C1K&OL$157004175520JddPP:localhost:8800sha2562ɿ %@Uqf^.KyV%eL$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcsha256$ mm[NS7_7uYӨV$eL$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Ysha256E'ǿZ')m"=yhš(b5ގ:V#eL$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4sha256ZE1dȫ]f>>T2:+NX7jV"eL$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEsha2569aq޹G1S6AJi|V!eL$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8sha256g7S~"|G$$zfPX7^.?tV eL$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0sha256mJ|!b YH}$5w9)tVeL$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0csha256g-LW KV2OH NGKOL$157004174718wxlLH:localhost:8800sha256,\F\2F앴,$)fKOL$157004174617osGDW:localhost:8800sha256}ǁ:P.1ҤE-==@fZKOL$157004174616PvcHe:localhost:8800sha256ϰI=P{S4k3$yB\X KOL$157004174515XsrNb:localhost:8800sha256K >y{MŝD x33؏KOL$157004174414klNmS:localhost:8800sha256i 3yG5,6[/KOL$157004174313OKfBg:localhost:8800sha256K( rY>9Ms)GdTx㺷ϙVeL$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hosha256nw˟~;cPQjxmd@KzVeL$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgsha256=qQ[| ';c],]ߓ˚W  \B}X ZQVeL$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4sha256EwOeyV\8W5@?Ӹ)I:ԽVeL$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4sha256 Frgf3|2FB3;VeL$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8sha256}r@C MANyg(3cQfl( VeL$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYEsha256:љ,ݿ Vo6Q /hpڌ* N/tE]/Z  u F Q "{ L   f 7 a+2    w VH '   ] k  s pE A <  [, /.Q!QyLUggxrTnULUAOseq:localhost:8800thf.Q!PzoqoNRxeEEqiLyVSV:localhost:8800th].Q!OSHhtkGUjpUCkXwIhj:localhost:8800thQ.Q!OJilSqnQvLgoXSqRaW:localhost:8800thP.Q!OCEHAjcOXWNyWIESIS:localhost:8800thO.Q!OBWkjfrDCNgYFfblia:localhost:8800thN.Q!NrxQuziwSWzsHuXIlG:localhost:8800thM.Q!NhWgOTYzEPRwAxRQvS:localhost:8800thL.Q!NgkQVVUNzoyCVPtckM:localhost:8800thK.Q!NfaPEGKjnUDUTavzol:localhost:8800thJ-Q!NhWgOTYzEPRwAxRQvS:localhost:8800m.Q!NgkQVVUNzoyCVPtckM:localhost:8800m-Q!NfaPEGKjnUDUTavzol:localhost:8800mu-Q!OMkiVTuuOEeiFAXtUY:localhost:8800m*.Q!OJilSqnQvLgoXSqRaW:localhost:8800m.Q!OCEHAjcOXWNyWIESIS:localhost:8800me-Q!OBWkjfrDCNgYFfblia:localhost:8800mB.Q!NrxQuziwSWzsHuXIlG:localhost:8800m.Q!OtBUhGeUSiDMWRKIOT:localhost:8800mC-Q!OqPpVlCwmKdAUlwrXI:localhost:8800mM-Q!OaCEdDAiatpwYcagUb:localhost:8800m.Q!OXpGdKbowFUTChPdmF:localhost:8800mZ.Q!OWGKxAmTrHLciIdrJi:localhost:8800m-Q!OSHhtkGUjpUCkXwIhj:localhost:8800m .Q!ROoilpDjLJfjKfSPIi:localhost:8800m.Q!RDEAXrqXQizuhCUFPq:localhost:8800m1.Q!QyLUggxrTnULUAOseq:localhost:8800m.Q!QxqzQoEBIZhmzHIGrl:localhost:8800mk.Q!QnmLrBAxeItdHsaxWf:localhost:8800mF.Q!QkkdnzvdrjHaFGkzMt:localhost:8800mr.Q!QcaNrIiUsWpTiVGOnt:localhost:8800m-Q!QZhNrNpwObZGJZpdAG:localhost:8800m.Q!QWLJZmJqjWZjVOjdYF:localhost:8800m.Q!QMrkSPlQDGborAyWtQ:localhost:8800m.Q!QFiJrWFFeTAAAUCjCE:localhost:8800m.Q!PzoqoNRxeEEqiLyVSV:localhost:8800mu.Q!PgNDjhhIBAXKryuGKy:localhost:8800m.Q!PcvmCDeVUSyJbXpTig:localhost:8800m.Q!PVyTvKbqnjSXfGWAMy:localhost:8800m.Q!PUIxAaiCnbqaVbawGu:localhost:8800m.Q!PQZMTVTeCYqMZwkHvW:localhost:8800m.Q!PHkVrXAyfGkFtzSagu:localhost:8800m9.Q!PEcOacvKaBKpXjytEF:localhost:8800m.Q!PCgUmZOwWmtDsuFqXg:localhost:8800m.Q!PgNDjhhIBAXKryuGKy:localhost:8800th\.Q!PcvmCDeVUSyJbXpTig:localhost:8800th[.Q!PVyTvKbqnjSXfGWAMy:localhost:8800thZ.Q!PUIxAaiCnbqaVbawGu:localhost:8800thY.Q!PQZMTVTeCYqMZwkHvW:localhost:8800thX.Q!PHkVrXAyfGkFtzSagu:localhost:8800thW.Q!PEcOacvKaBKpXjytEF:localhost:8800thV.Q!OtBUhGeUSiDMWRKIOT:localhost:8800thU.Q!OqPpVlCwmKdAUlwrXI:localhost:8800thT.Q!OaCEdDAiatpwYcagUb:localhost:8800thS.Q!OXpGdKbowFUTChPdmF:localhost:8800thR.Q!RmwbYvIIQyPlHlClty:localhost:8800thm.Q!RmwbYvIIQyPlHlClty:localhost:8800m.Q!ROoilpDjLJfjKfSPIi:localhost:8800thh.Q!RDEAXrqXQizuhCUFPq:localhost:8800thg.Q!QxqzQoEBIZhmzHIGrl:localhost:8800the.Q!QnmLrBAxeItdHsaxWf:localhost:8800thd.Q!QkkdnzvdrjHaFGkzMt:localhost:8800thc.Q!QcaNrIiUsWpTiVGOnt:localhost:8800thb.Q!QZhNrNpwObZGJZpdAG:localhost:8800tha.Q!QWLJZmJqjWZjVOjdYF:localhost:8800th`.Q!QMrkSPlQDGborAyWtQ:localhost:8800th_.Q!QFiJrWFFeTAAAUCjCE:localhost:8800th^.Q!RmdhCjvouVLmyIHjaM:localhost:8800thl.Q!RYNJAGdRhIlwRZFbrO:localhost:8800thk.Q!RSLvuCuAqKQQrKCxNq:localhost:8800thj.Q!RPfffkmSEbWggEjnoI:localhost:8800thi.Q!SUDzkfFBgpuCANOxRS:localhost:8800mM.Q!SBEprlZiuliFNSfNmz:localhost:8800thn-Q!SBEprlZiuliFNSfNmz:localhost:8800m--Q!RmdhCjvouVLmyIHjaM:localhost:8800m(.Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.Q!RSLvuCuAqKQQrKCxNq:localhost:8800m#.Q!RPfffkmSEbWggEjnoI:localhost:8800m L " 5Lk eQac$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1418}{"auth_events": ["$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "type": "m.room.power_levels", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"users": {"@anon-20191002_181700-294:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041728356, "hashes": {"sha256": "ZCNJnXag2r7S+v93eEDGDHGd8RSI3YCc1C0Px7BGP+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BTyo1i5eU8cYi/twbB7kQqX1bXAkWc1A0ZlStgI6z3v9+obHB2g9C6cS2Sml8V2dxSgmX2vMcetpCytN4udGBQ"}}, "unsigned": {"age_ts": 1570041728356}}veQay$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1417}{"auth_events": ["$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4"], "prev_events": ["$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4"], "type": "m.room.member", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-294", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-294:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041727400, "hashes": {"sha256": "MGLaHPfaaA6OWnqU+GOWnIpGx4sLTxgpXFLN+nZAe2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DwVZm2erB6RMSEJocX/9LGnm+YjIZcbxnkcfyPXv3OOKLPdnQolP1AdJe3ikfSeYSTCYZfKMQCijEvs8oz08DQ"}}, "unsigned": {"age_ts": 1570041727400}}ieQa_$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1416}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-294:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041726661, "hashes": {"sha256": "BvFvkxRiwmSyR2kwT7ontr5apGi9+i1Cz1iFv505xD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7pMkSktqlQZJfeItyCaV1xXEHUOiJDSXi6K/OnWddzIDrDso21UuWIWDEGD3DWixLP0ucB5Z5sTeg808tWUEDw"}}, "unsigned": {"age_ts": 1570041726661}}ZeQaA$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800{"token_id": 313, "stream_ordering": 1415}{"auth_events": ["$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU", "$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA", "$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE"], "prev_events": ["$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE"], "type": "m.room.member", "room_id": "!krhefVncoErkCtnvsy:localhost:8800", "sender": "@anon-20191002_181700-293:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-293:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041724995, "hashes": {"sha256": "/qCXo+3mAC8GGl7sxakHdGa7aj2nUs9UX7YDlglRhqo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RvIwYA7lbqopWIZM8841QxAlWCoBGqczwiprpkVe4xymz0OhvTIAMQgFVOugAfzjB5UgPDn233rfzniKtlHBAA"}}, "unsigned": {"age_ts": 1570041724995, "replaces_state": "$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE"}} `nK(T7kN.t5 U  e K 4 } ` C , x a "  p Y O2G*_B%W:hQ4sXA$`C,%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-288:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-287:localhost:8800>']m.room.member@anon-20191002_181700-287:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ Pm.room.server_aclT"? Om.room.history_visibilityS7 Nm.room.related_groupsR% Mm.room.topicQ"? Lm.room.history_visibilityP/ Km.room.join_rulesO3 Jm.room.power_levelsN>']Im.room.member@anon-20191002_181700-298:localhost:8800M' Hm.room.createL3 Gm.room.power_levelsK3 Fm.room.power_levelsJ/ Em.room.join_rulesI"? Dm.room.history_visibilityH3 Cm.room.guest_accessG3 Bm.room.power_levelsF>']Am.room.member@anon-20191002_181700-297:localhost:8800E' @m.room.createD- ?m.room.tombstoneC3 >m.room.power_levelsB"? =m.room.history_visibilityA/ ']:m.room.member@anon-20191002_181700-297:localhost:8800>' 9m.room.create=3 8m.room.power_levels<3 7m.room.power_levels;/ 6m.room.join_rules:"? 5m.room.history_visibility93 4m.room.guest_access83 3m.room.power_levels7>']2m.room.member@anon-20191002_181700-296:localhost:88006' 1m.room.create5- 0m.room.tombstone4"? /m.room.history_visibility3/ .m.room.join_rules23 -m.room.power_levels1>'],m.room.member@anon-20191002_181700-296:localhost:88000' +m.room.create/3 *m.room.power_levels.3 )m.room.power_levels-/ (m.room.join_rules,"? 'm.room.history_visibility+3 &m.room.guest_access*3 %m.room.power_levels)>']$m.room.member@anon-20191002_181700-295:localhost:8800(' #m.room.create'- "m.room.tombstone&"? !m.room.history_visibility%/  m.room.join_rules$3 m.room.power_levels#>']m.room.member@anon-20191002_181700-295:localhost:8800"' m.room.create!3 m.room.power_levels 3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-294:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-294:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-293:localhost:8800>'] m.room.member@anon-20191002_181700-293:localhost:8800%)) m.room.aliaseslocalhost:8800"?  m.room.history_visibility/  m.room.join_rules9  m.room.canonical_alias 3 m.room.power_levels >']m.room.member@anon-20191002_181700-292:localhost:8800 ' m.room.create >']m.room.member@anon-20191002_181700-291:localhost:8800 %))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-290:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-289:localhost:8800 NCo= $7  j \  *  &NX  V i P D  |p8t v   J >b0 RzH1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA ;1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU 1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 01e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc c1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0^1e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ h1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 I1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4n1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgQ1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw(1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rca1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMh1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qb1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8z1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M41e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08O1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 0e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA,1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsE1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM-1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLkt1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv071e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk!1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ41e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo881e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ)1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA Q1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4_1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 01e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8A1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec/1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA 1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w_1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0b1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYv1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cn1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg 1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIf r qr{ MQa $15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1422}{"auth_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}]], "prev_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}]], "type": "m.room.member", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-294", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-294:localhost:8800", "event_id": "$15700417327EEUMr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041732594, "hashes": {"sha256": "P0XeGAYNGjEabydTj4MVmrysCsbtm9WC006Ey7Pd6L0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XqKk8I4CcFA8HNHNJFL/Lu0VJBJATLFkRqrPzATCYYYERytSi1YDnI885t+mbo09+hKNJsCfYUHi38DjgGQfDA"}}, "unsigned": {"age_ts": 1570041732594}} MQa; $15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1421}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "event_id": "$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I"}, "creator": "@anon-20191002_181700-294:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$15700417316amiRb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041731835, "hashes": {"sha256": "fiifXUwDgA8t/ucx47u5CvwhwgueiRMo90XMyK8m/LY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6eNgD5vYkNJApsWAfA6F6zVZG5P3vaCpiS0XNqIBGshNnsjFLNsSM9cJPzSm0MIbt5AWNM4hBEcYWscHRJ87BA"}}, "unsigned": {"age_ts": 1570041731835}} eQa$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1420}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk"], "type": "m.room.history_visibility", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041729879, "hashes": {"sha256": "XlJ+N1huHsTl2Mxsg6Wtz0+UhHti7R+wWQ8t6g6YdvE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3SJZS6Ig+MWH711TfB28EZgoMlnDJLpWSJf6rxQetRi+kHkz0DcryhUgCt/G1fRsB6Zv6qlZdKYhaENqIiq8CQ"}}, "unsigned": {"age_ts": 1570041729879}}t eQau$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1419}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE"], "type": "m.room.join_rules", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041729155, "hashes": {"sha256": "Pfv5bxBUC/vkVR/1xJpZSDuFNqb8UIzh7J3iaAlcwUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+T+HWlb6KLvTCJSklr4imZfzEBo8YjTs617qotD08l4JCkT6+6C9O3hQXfpClf8auc9Qr9fyCqKe0EaOB5OtAQ"}}, "unsigned": {"age_ts": 1570041729155}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@'}&|%{$z#y"x!w vutsrqponmlkjihgfed c b a ` _^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      }{zyxwvutsrqponmkihgfedca`_^][ZYXWSZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(~RQPONMIHGFECBA@?=<;:9876543210/.-,+*)('&%$#"! ~}|{zyxwvut s r q ponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONML  unOQa $157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1425}{"auth_events": [["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}], ["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "prev_events": [["$15700417349vUcYV:localhost:8800", {"sha256": "rv9pf13B3ODnaoFWhqRNxXgqEEbQ1KfG3XtxhN62FuY"}]], "type": "m.room.history_visibility", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004173510EIiCi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041735076, "hashes": {"sha256": "Xwb465yJT64Wi1iJOCXhMEtOp6vlesuxlqLJNBw3zHE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WHxMNCUtQ20kaGGBOv4usbagrVTmRSk03ovy+zHZ7BiaKGUeuIBa156RP+Je1dNNRCBaQOeDAIA1PAcuuQFoAw"}}, "unsigned": {"age_ts": 1570041735076}}bMQak $15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1424}{"auth_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}], ["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}]], "prev_events": [["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}]], "type": "m.room.guest_access", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$15700417349vUcYV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041734424, "hashes": {"sha256": "I9Pe83/FZkhDqZLyiIvCHS3IAwaZDfzgEHEE3Nv05aE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aBp2pVE+D3op/qat2iJw66zZbO4jas/OEgMoCjROW2dCHNQxqQi5RViPdiLBFiBiUQhh9vQ/4ksJGLj/N1j9Dg"}}, "unsigned": {"age_ts": 1570041734424}}!MQai $15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1423}{"auth_events": [["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "prev_events": [["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "type": "m.room.power_levels", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"users": {"@anon-20191002_181700-294:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$15700417338MBNFd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041733717, "hashes": {"sha256": "tztkvdcGLdDYT/2ssM67bgX6VWsNhVtmwtgwfgmT5LA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0zmybKQs7FVDxkTFaxGEtNezxZ98VWmFHt5nFjGK6gLxX7+bkpsjd+GypPN6XiFcplydGfrL67A90auTuvGqDw"}}, "unsigned": {"age_ts": 1570041733717}} >L(|J  vP8Vb0 P  p $ $   i7oZ J =  *v V D \ D  |>j1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQE1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA~1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrsIW1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9oY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI&1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ak1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo 1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWEw1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg41e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg m1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho01e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w1e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgAB0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMW1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY&1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8R1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb701e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg"0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls .1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo )1e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGasv1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 01e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICEt1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg 1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo \1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 61e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvor1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4 1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMX1e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM o1e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIe1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw U1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8 1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUxj21e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 21e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M  _eQaK$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1428}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I"], "type": "m.room.power_levels", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"users": {"@anon-20191002_181700-294:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041736892, "hashes": {"sha256": "0KlP6QvYs/7yDsZKHa9m6Nx4j0cRS4nW6fyKowjng24"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bI2RMFxdO47oImOF2He2EjW03JEbumUZTD3ggFfr6DuxIhsfygSqMjpR1/zr6PEoMp+1CeDSKdDazLUWXXtMDA"}}, "unsigned": {"age_ts": 1570041736892, "replaces_state": "$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE"}}=eQa$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800{"token_id": 314, "stream_ordering": 1427}{"auth_events": ["$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE", "$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox4", "$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4"], "prev_events": ["$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c"], "type": "m.room.tombstone", "room_id": "!MBWnwKRwFznvRpAzxr:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!azRJNFPIRSFAskLILK:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041731680, "hashes": {"sha256": "u9Z/R/vVWJ/CrXFh0OhzQ+kXT9CUY4Q3x+3U765xjX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oEyja2W/0gi/uWn0fbi7QYtK04QKZKrkFMQH+Swbs8xbu8HsbrD4zPjA2Img2JIB+kRHl3d290sbMiWf0iSIAg"}}, "unsigned": {"age_ts": 1570041731680}}^OQaa $157004173511wRnRr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800{"token_id": 314, "stream_ordering": 1426}{"auth_events": [["$15700417338MBNFd:localhost:8800", {"sha256": "VA69JLxOhD8d4H5ofkSJDIefIIRoVdVt1MGOSkA9U5A"}], ["$15700417316amiRb:localhost:8800", {"sha256": "4cUFh+QHrJDYUQM9DyYUgClAPZVmigAm8G6APQtEzGU"}], ["$15700417327EEUMr:localhost:8800", {"sha256": "H5gpQhWYJc3cf49066shsr7dYE1t3eQ83y4CIhS5gDY"}]], "prev_events": [["$157004173510EIiCi:localhost:8800", {"sha256": "YRls+K3WgE4FvMa00Q+PTxdRJQDnHu/RYavUC1cQEmc"}]], "type": "m.room.join_rules", "room_id": "!azRJNFPIRSFAskLILK:localhost:8800", "sender": "@anon-20191002_181700-294:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004173511wRnRr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041735791, "hashes": {"sha256": "Wvu8uEDRkQpnofn6687sP+gITzuxTep/kngXw8GmOBM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ugE4UtYN3oAe4LkKoa6UYHF1w8JUsMOqrG+acR5eJOBY3u7Gw8uwkfSTEd1UVFDbW42QxVb30aeSX2rqSDWbAA"}}, "unsigned": {"age_ts": 1570041735791}}   *teQau$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1432}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs"], "type": "m.room.join_rules", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041741441, "hashes": {"sha256": "0NFXm+iaJfqUseV2dh2ZrqRABzxz3Y8Omxbzmr3zKg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mc6mBO0/hRcNPC5CjJCwK/fz+jHV2pvdNMm4d2O/v1VLugCSb6XsTa43JDMhrPv0c9/tSJ5ztTzhc0i1iL/mDw"}}, "unsigned": {"age_ts": 1570041741441}}keQac$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1431}{"auth_events": ["$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "type": "m.room.power_levels", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"users": {"@anon-20191002_181700-295:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041740732, "hashes": {"sha256": "/0T7OUZy6f3sJqpPnZ86HqgHbF4cwJoA57iiWBPloSI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o+LL27Kxm2uX0IB40KPzImuWPz5zVDGzByfZprRn/azfsXpM1CY1czmQXGmUy+FePDIPGAixRKhAtTvIVC+oBw"}}, "unsigned": {"age_ts": 1570041740732}}veQay$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1430}{"auth_events": ["$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo"], "prev_events": ["$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo"], "type": "m.room.member", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-295", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-295:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041740017, "hashes": {"sha256": "6JwPXn42pC3t4lSAPpK2zcbeRiSNwJub5iHQh69beBw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Nqu91PHmKYXbPqDNCD/L6xwTxAYAJ42C84kHNy7YQr7bv4dQHyAeLz7iP3BeXC+KnhVBw8aKpbpJ1/oqWImBg"}}, "unsigned": {"age_ts": 1570041740017}}ieQa_$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1429}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-295:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041739213, "hashes": {"sha256": "2a2i/voPQAmaJ3PH+rqyZJra4xC4P9enpSOwRD/vOz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CsmGyE+rswzF22GipTu2qwh7O4f0PloFMOZpUilDFzyJ323lTHTAxRjvrGIqfWSknRacXsCvhk2IEu7mKBT9AQ"}}, "unsigned": {"age_ts": 1570041739213}} ?U6q9 U  q 8 T  p 8 T q8Tq8Tp7SoS8e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4osha2568e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewsha2568e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0sha2568e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkcsha256 8e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQksha256R8e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQsha256G8e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcsha256 m8e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_posha2568e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGssha256 8e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9Usha2568e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4sha2568e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUsha2568e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYsha2568e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkIsha2568e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKosha2568e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdosha256u8e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEsha2568e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgsha256h8e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEsha256 R8e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4sha256 8e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjUsha256$8e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1josha25628e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwsha256I7e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0sha2568e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8sha256 .8e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgsha256I8e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94sha2568e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMsha25638e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0sha256A8e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQsha256s8e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQsha256P8e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYsha256 t7e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0sha256h8e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4sha256:8e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNosha256 >8e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXgsha256L8e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8sha256_7e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcsha256L8e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-ksha2568e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4sha2568e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwsha2568e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzssha256 8e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Ysha256 8e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zksha256 /8e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQsha256Q8e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68sha256C8e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14sha2568e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fviksha2568e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_ygsha2568e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUsha256O8e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sksha2568e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4sha256V8e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Qsha2568e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9Asha25638e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcsha256q7e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Ysha256$8e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEsha256y8e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQsha2568e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwsha25648e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAsha2568e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgsha256 8e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLIsha2568e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8sha256l 0RX t ( 9 4 / Kgmhc3DJETNQeN!aaRwQZdNAliyvRHpjs:localhost:8800$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8TMQeM!aaRwQZdNAliyvRHpjs:localhost:8800$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsTLQeL!aaRwQZdNAliyvRHpjs:localhost:8800$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYTKQeK!aaRwQZdNAliyvRHpjs:localhost:8800$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfATJQeJ!aaRwQZdNAliyvRHpjs:localhost:8800$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsTIQeI!aaRwQZdNAliyvRHpjs:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwTHQeH!aaRwQZdNAliyvRHpjs:localhost:8800$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkIGQOG!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177433OonrH:localhost:8800TFQeF!NNiyzThHMivrxhojfp:localhost:8800$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAIEQOE!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177232wsJyW:localhost:8800IDQOD!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177131trwoi:localhost:8800ICQOC!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177030bmvvg:localhost:8800IBQOB!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176929ezeJB:localhost:8800IAQOA!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176828ZZJWh:localhost:8800I@QO@!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176727QjUJj:localhost:8800T?Qe?!NNiyzThHMivrxhojfp:localhost:8800$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgT>Qe>!NNiyzThHMivrxhojfp:localhost:8800$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYT=Qe=!NNiyzThHMivrxhojfp:localhost:8800$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKoT<Qe!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYoAQ? e=!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibility$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKog@Q/ eQ']e:!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIc=Q' e9!NNiyzThHMivrxhojfp:localhost:8800m.room.create$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s^<Q3 O8!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels$157004176126IzriS:localhost:8800i;Q3 e7!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew\:Q/ O6!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rules$157004175925JuKDZ:localhost:8800d9Q? O5!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility$157004175824dFhko:localhost:8800^8Q3 O4!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access$157004175723CBKAp:localhost:8800^7Q3 O3!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels$157004175622yCTNM:localhost:88006Q']O2!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$157004175621DDceh:localhost:8800X5Q' O1!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.create$157004175520JddPP:localhost:8800f4Q- e0!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstone$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDoso3Q? e/!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibility$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcg2Q/ e.!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rules$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Yi1Q3 e-!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 0Q']e,!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEc/Q' e+!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.create$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8^.Q3 O*!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels$157004175019FhZnd:localhost:8800i-Q3 e)!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0\,Q/ O(!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rules$157004174718wxlLH:localhost:8800d+Q? O'!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility$157004174617osGDW:localhost:8800^*Q3 O&!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access$157004174616PvcHe:localhost:8800^)Q3 O%!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels$157004174515XsrNb:localhost:8800(Q']O$!mOrKBPhetifKHDmElM:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800$157004174414klNmS:localhost:8800X'Q' O#!mOrKBPhetifKHDmElM:localhost:8800m.room.create$157004174313OKfBg:localhost:8800f&Q- e"!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0co%Q? e!!QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibility$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Hog$Q/ e !QyLUggxrTnULUAOseq:localhost:8800m.room.join_rules$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLgi#Q3 e!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs  wOQa# $157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1435}{"auth_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}]], "prev_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}]], "type": "m.room.member", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-295", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-295:localhost:8800", "event_id": "$157004174414klNmS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041744628, "hashes": {"sha256": "r+Aw0bA3AsUWBBFb6eLauYtSOg/zwjWigWw6aL2w+mQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qQ7NGY+gBqcXtDHx92Ks4lWCLmTX/dqmcXwOJBWmB13y3K+w/jnEQjgNiG1PCKppf6Oj+d08+lxo5e9Vc7qJDQ"}}, "unsigned": {"age_ts": 1570041744628}} OQa= $157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1434}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "event_id": "$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c"}, "creator": "@anon-20191002_181700-295:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004174313OKfBg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041743850, "hashes": {"sha256": "VIjP1ssx3pvjIjI/awbCxnvnqFsV/6fgw+U1/qpG8Fg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xFcx623T0lmouQ25V74ufTPAaPr9PHteSVzMOmighUBdCIO3quoJoXOqSgGxEuAxsfskMHIIcn/xYl4aQyFhCg"}}, "unsigned": {"age_ts": 1570041743850}}eQa$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1433}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg"], "type": "m.room.history_visibility", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041742156, "hashes": {"sha256": "sufJUvR9GA1nFV3QJwIqChVHgy1yU872hYtUDKQ7EZA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+MxONrXXn0yj0W6Uf2vJ9wQqT3GQNVJ+u9mk/iXUJRNF0qHh9dteB3EaQXvlGuD6xM541gPCSB/xLr1R+LX6CA"}}, "unsigned": {"age_ts": 1570041742156}} ?UV) _ 2  ]Kj=  R % r E  d 7 1}P#vIc6 pC W *wyL!,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800+Q !ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800+Q !ZNIjCvcWhgcwskanjT:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800+Q !YaLuQzmJKSMTSFEqjO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800+Q !ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800+Q !ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 +Q !ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & &,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % %,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ $,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # #+Q !YmRuIWixFpaqEeDQLZ:localhost:8800 " ",Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 +Q !YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!ZYKvjplZRyIWvzkRyM:localhost:8800+Q !ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800+Q !ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800+Q !YufaOfAlruTdjyUCwO:localhost:8800,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ii,Q!YtVXQjSPgVtbxrzUOA:localhost:8800hh,Q!YtVXQjSPgVtbxrzUOA:localhost:8800gg,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ff,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ee+Q !YtVXQjSPgVtbxrzUOA:localhost:8800dd,Q!YgaGPEraeLCqHQirin:localhost:8800??,Q!YgaGPEraeLCqHQirin:localhost:8800<<,Q!YgaGPEraeLCqHQirin:localhost:8800;;,Q!YgaGPEraeLCqHQirin:localhost:8800::,Q!YgaGPEraeLCqHQirin:localhost:880099,Q!YgaGPEraeLCqHQirin:localhost:880088+Q !YgaGPEraeLCqHQirin:localhost:880077,Q!YQATbgbLImCDamiDHC:localhost:8800Y,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800 ?UV) _ 2  ]Kj=  R % r E  d 7 1}P#vIc6 pC W *wyL!,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800+Q !ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800,Q!ZNIjCvcWhgcwskanjT:localhost:8800+Q !ZNIjCvcWhgcwskanjT:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800,Q!YaLuQzmJKSMTSFEqjO:localhost:8800+Q !YaLuQzmJKSMTSFEqjO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOpRjvUhkWYJBFJZeO:localhost:8800+Q !ZOpRjvUhkWYJBFJZeO:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZOwibbprUCQrSJQCrx:localhost:8800+Q !ZOwibbprUCQrSJQCrx:localhost:8800,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!ZKPJvrCZHMHPEksYDc:localhost:8800 +Q !ZKPJvrCZHMHPEksYDc:localhost:8800 ,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 & &,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 % %,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 $ $,Q!YmRuIWixFpaqEeDQLZ:localhost:8800 # #+Q !YmRuIWixFpaqEeDQLZ:localhost:8800 " ",Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!YpcmaMNMzjvtgYtrli:localhost:8800 +Q !YpcmaMNMzjvtgYtrli:localhost:8800 ,Q!ZYKvjplZRyIWvzkRyM:localhost:8800+Q !ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!ZShBIxwbJmxjjZmoRQ:localhost:8800+Q !ZShBIxwbJmxjjZmoRQ:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800 ,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800,Q!YufaOfAlruTdjyUCwO:localhost:8800+Q !YufaOfAlruTdjyUCwO:localhost:8800,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ii,Q!YtVXQjSPgVtbxrzUOA:localhost:8800hh,Q!YtVXQjSPgVtbxrzUOA:localhost:8800gg,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ff,Q!YtVXQjSPgVtbxrzUOA:localhost:8800ee+Q !YtVXQjSPgVtbxrzUOA:localhost:8800dd,Q!YgaGPEraeLCqHQirin:localhost:8800??,Q!YgaGPEraeLCqHQirin:localhost:8800<<,Q!YgaGPEraeLCqHQirin:localhost:8800;;,Q!YgaGPEraeLCqHQirin:localhost:8800::,Q!YgaGPEraeLCqHQirin:localhost:880099,Q!YgaGPEraeLCqHQirin:localhost:880088+Q !YgaGPEraeLCqHQirin:localhost:880077,Q!YQATbgbLImCDamiDHC:localhost:8800Y,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZYKvjplZRyIWvzkRyM:localhost:8800,Q!ZWANpHlizyLrUiVvAm:localhost:8800 !} < f % O ywusqomkh*OOQ$157004175622yCTNM:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h)OOQ$157004175622yCTNM:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h(OOQ$157004175621DDceh:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800~'eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~&eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~%eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800~$eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~#eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~"eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800~!eeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~ eeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~eeQ$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800~eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~eeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800hOOQ$157004174718wxlLH:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174718wxlLH:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174718wxlLH:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174617osGDW:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174617osGDW:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174617osGDW:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174616PvcHe:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174616PvcHe:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174616PvcHe:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174515XsrNb:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800hOOQ$157004174515XsrNb:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800h OOQ$157004174414klNmS:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800~ eeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI!QyLUggxrTnULUAOseq:localhost:8800~ eeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800~ eeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800 !~: b ^ Z V ~ :62.@h eeQ$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800iOOQ$157004177433OonrH:localhost:8800$157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800eeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800eeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800iOOQ$157004177232wsJyW:localhost:8800$157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800iOOQ$157004177131trwoi:localhost:8800$157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800i OOQ$157004177030bmvvg:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800i OOQ$157004176929ezeJB:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800i OOQ$157004176828ZZJWh:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 eeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800 eeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800eeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800eeQ$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800iOOQ$157004175925JuKDZ:localhost:8800$157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175824dFhko:localhost:8800$157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175723CBKAp:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175622yCTNM:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800iOOQ$157004175621DDceh:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800~eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800}eeQ$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800|eeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800{eeQ$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800zeeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800yeeQ$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho!QyLUggxrTnULUAOseq:localhost:8800ixOOQ$157004174718wxlLH:localhost:8800$157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800iwOOQ$157004174617osGDW:localhost:8800$157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800ivOOQ$157004174616PvcHe:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800iuOOQ$157004174515XsrNb:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800itOOQ$157004174414klNmS:localhost:8800$157004174313OKfBg:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800seeQ$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg!QyLUggxrTnULUAOseq:localhost:8800  jrOQa $157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1438}{"auth_events": [["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}], ["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "prev_events": [["$157004174616PvcHe:localhost:8800", {"sha256": "z7BJ+wL1nD1Q+td7UzRrMyR5QtD+nIqXXLBYBhMgnho"}]], "type": "m.room.history_visibility", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004174617osGDW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041746834, "hashes": {"sha256": "PdbewstGBNGKf8knvBZ24j8UdblAGJ/UNta2uKxjT2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TpLAgaZPsU38zGGEfi7TEQAg6gdA8gsTfV5n2aaDUHti9AdQ9tSe4QdvHBiYC4n4vqC/PBZtHQWyVUJFQ1ZNCg"}}, "unsigned": {"age_ts": 1570041746834}}hOQau $157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1437}{"auth_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}], ["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}]], "prev_events": [["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}]], "type": "m.room.guest_access", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004174616PvcHe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041746151, "hashes": {"sha256": "OEqW4Gnv4hcS0H/lekfpQIqDiLBqAipX88cQmDQbK3M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ynweqg0Ccup52ywE0+pAaDIbPGHfBzDzbZnt87i31jhx1YxuIb2Tt93WX5ShcoXuRh6ZtipcLnXRQFzwyI7lBQ"}}, "unsigned": {"age_ts": 1570041746151}}&OQaq $157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1436}{"auth_events": [["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "prev_events": [["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "type": "m.room.power_levels", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"users": {"@anon-20191002_181700-295:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004174515XsrNb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041745433, "hashes": {"sha256": "/jOe09F3SogL1aLiMWBJCDO1vLoMHxaLuogzBalE4X4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PwF5AIvGHGe96qB7B5omphR575hOK3I76oZGTwPYPDpk3U92+utWDmlIksYAFiIMUiVCefGTyzp8HztIBPZcBw"}}, "unsigned": {"age_ts": 1570041745433}} #<t p y . M !WVY{<t pdQ' e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.create$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkQ3 OO!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels$157004177433OonrH:localhost:8800$157004176929ezeJB:localhost:8800Q3 ee!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYgQ- e!NNiyzThHMivrxhojfp:localhost:8800m.room.tombstone$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg]Q/ O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rules$157004177232wsJyW:localhost:8800eQ? O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility$157004177131trwoi:localhost:8800_Q3 O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access$157004177030bmvvg:localhost:8800_ Q3 O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels$157004176929ezeJB:localhost:8800 Q']O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800$157004176828ZZJWh:localhost:8800Y Q' O!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.create$157004176727QjUJj:localhost:8800 Q3 ee!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAp Q? e!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibility$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKohQ/ e!NNiyzThHMivrxhojfp:localhost:8800m.room.join_rules$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_sjQ3 e!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA Q']e!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIdQ' e!NNiyzThHMivrxhojfp:localhost:8800m.room.create$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4sQ3 ee!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4gQ- e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstone$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos]Q/ O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rules$157004175925JuKDZ:localhost:8800eQ? O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility$157004175824dFhko:localhost:8800_Q3 O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access$157004175723CBKAp:localhost:8800_Q3 O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels$157004175622yCTNM:localhost:8800~Q']O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$157004175621DDceh:localhost:8800Y}Q' O!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.create$157004175520JddPP:localhost:8800p|Q? e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibility$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMch{Q/ e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rules$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8YjzQ3 e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 yQ']e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEdxQ' e!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.create$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8wQ3 ee!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbsgvQ- e!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c]uQ/ O!mOrKBPhetifKHDmElM:localhost:8800m.room.join_rules$157004174718wxlLH:localhost:8800etQ? O!mOrKBPhetifKHDmElM:localhost:8800m.room.history_visibility$157004174617osGDW:localhost:8800_sQ3 O!mOrKBPhetifKHDmElM:localhost:8800m.room.guest_access$157004174616PvcHe:localhost:8800_rQ3 O!mOrKBPhetifKHDmElM:localhost:8800m.room.power_levels$157004174515XsrNb:localhost:8800 a x , 6 Vs/?=&4e3Q ]$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYm.room.power_levels!NNiyzThHMivrxhojfp:localhost:8800m!m!@anon-20191002_181700-297:localhost:8800,3e?Q ]$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKom.room.history_visibility!NNiyzThHMivrxhojfp:localhost:8800mm@anon-20191002_181700-297:localhost:8800$2e/Q ]$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_sm.room.join_rules!NNiyzThHMivrxhojfp:localhost:8800mWm @anon-20191002_181700-297:localhost:8800&1e3Q ]$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAm.room.power_levels!NNiyzThHMivrxhojfp:localhost:8800mm@anon-20191002_181700-297:localhost:8800 0e'Q ]$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIm.room.member!NNiyzThHMivrxhojfp:localhost:8800m5m@anon-20191002_181700-297:localhost:8800/ e'Q  ]$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4sm.room.create!NNiyzThHMivrxhojfp:localhost:8800m)mp@anon-20191002_181700-297:localhost:8800&.e3Q ]$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewm.room.power_levels!KmuRTfGFgJdgIDAgIW:localhost:8800m dm @anon-20191002_181700-296:localhost:8800#-e-Q ]$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDosm.room.tombstone!KmuRTfGFgJdgIDAgIW:localhost:8800mmC@anon-20191002_181700-296:localhost:8800,O/Q ]$157004175925JuKDZ:localhost:8800m.room.join_rules!QFiJrWFFeTAAAUCjCE:localhost:8800m]m@anon-20191002_181700-296:localhost:8800!+O?Q ]$157004175824dFhko:localhost:8800m.room.history_visibility!QFiJrWFFeTAAAUCjCE:localhost:8800mm@anon-20191002_181700-296:localhost:8800*O3Q ]$157004175723CBKAp:localhost:8800m.room.guest_access!QFiJrWFFeTAAAUCjCE:localhost:8800mmx@anon-20191002_181700-296:localhost:8800)O3Q ]$157004175622yCTNM:localhost:8800m.room.power_levels!QFiJrWFFeTAAAUCjCE:localhost:8800m`m@anon-20191002_181700-296:localhost:8800(O'Q ]$157004175621DDceh:localhost:8800m.room.member!QFiJrWFFeTAAAUCjCE:localhost:8800mm@anon-20191002_181700-296:localhost:8800' O'Q  ]$157004175520JddPP:localhost:8800m.room.create!QFiJrWFFeTAAAUCjCE:localhost:8800mm$@anon-20191002_181700-296:localhost:8800,&e?Q ]$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcm.room.history_visibility!KmuRTfGFgJdgIDAgIW:localhost:8800mQm@anon-20191002_181700-296:localhost:8800$%e/Q ]$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Ym.room.join_rules!KmuRTfGFgJdgIDAgIW:localhost:8800mm@anon-20191002_181700-296:localhost:8800&$e3Q ]$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4m.room.power_levels!KmuRTfGFgJdgIDAgIW:localhost:8800momb@anon-20191002_181700-296:localhost:8800 #e'Q ]$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEm.room.member!KmuRTfGFgJdgIDAgIW:localhost:8800mm&@anon-20191002_181700-296:localhost:8800" e'Q  ]$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8m.room.create!KmuRTfGFgJdgIDAgIW:localhost:8800mm-@anon-20191002_181700-296:localhost:8800&!e3Q ]$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0m.room.power_levels!QyLUggxrTnULUAOseq:localhost:8800mmߥ@anon-20191002_181700-295:localhost:8800# e-Q ]$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0cm.room.tombstone!QyLUggxrTnULUAOseq:localhost:8800mdm @anon-20191002_181700-295:localhost:8800O/Q ]$157004174718wxlLH:localhost:8800m.room.join_rules!mOrKBPhetifKHDmElM:localhost:8800m؀m @anon-20191002_181700-295:localhost:8800!O?Q ]$157004174617osGDW:localhost:8800m.room.history_visibility!mOrKBPhetifKHDmElM:localhost:8800mՒm(@anon-20191002_181700-295:localhost:8800O3Q ]$157004174616PvcHe:localhost:8800m.room.guest_access!mOrKBPhetifKHDmElM:localhost:8800mmL@anon-20191002_181700-295:localhost:8800  _ eQaK$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1441}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c"], "type": "m.room.power_levels", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"users": {"@anon-20191002_181700-295:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041748956, "hashes": {"sha256": "t8pR3q76n26MEpqiDWiTPNdmL/hy42MZLt7x5lJkBdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V2g6x6LoLhova+nGmUqMuCkt4u2lEDKz4rBVotCrOdaUb3Ki5++CLl/bSQUywbLpx8GFMjVl0UBT33m7xtv3DQ"}}, "unsigned": {"age_ts": 1570041748956, "replaces_state": "$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs"}}=eQa$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800{"token_id": 315, "stream_ordering": 1440}{"auth_events": ["$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs", "$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo", "$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI"], "prev_events": ["$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho"], "type": "m.room.tombstone", "room_id": "!QyLUggxrTnULUAOseq:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!mOrKBPhetifKHDmElM:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041743716, "hashes": {"sha256": "PrB+CVPuwwkxCnyMHgt0/AFe8+AYpE9Ngt5n+f2RNfk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XxsqDSP/T8mP52kF7+8LYnPZqwu7TZX2BbVUeVEj9RGTo/rHZcVjF7RWHp7Bxk/Ns3lg5tVxBLJIFOQwojNcCw"}}, "unsigned": {"age_ts": 1570041743716}}aOQag $157004174718wxlLH:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800{"token_id": 315, "stream_ordering": 1439}{"auth_events": [["$157004174515XsrNb:localhost:8800", {"sha256": "BUsMjD558fDBe5pNmMWdRIUgCXizlZa7rIYzM9iP4Mo"}], ["$157004174313OKfBg:localhost:8800", {"sha256": "Syi3C/zycln6PjlNsvHycynu7h5H5GSuVHjP47q3z5k"}], ["$157004174414klNmS:localhost:8800", {"sha256": "aREKqgzCM+6Aee+oRzUsNqMUzVuNL4Sv4BUa1BnwrvU"}]], "prev_events": [["$157004174617osGDW:localhost:8800", {"sha256": "fcjHgcE696ODUC4x0qRF6y09kz2MQMZm3slamLveArc"}]], "type": "m.room.join_rules", "room_id": "!mOrKBPhetifKHDmElM:localhost:8800", "sender": "@anon-20191002_181700-295:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004174718wxlLH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041747584, "hashes": {"sha256": "TI408nz28usWN66TBeEYy8/gzLw1CeDFOYiSliCwHPo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3r32qMmp/YlKdynWW1JjvDGAgnyKoXMjJ42UXDaC1FGo1BRS2laK0WRi1FG+VMzQ2uijYYj/0K8gF3k0mQ5OAg"}}, "unsigned": {"age_ts": 1570041747584}} So;kB u A q = Z 1  w N  ~ J zFvM$uL^5{RzQ(n:jA&nO$157004181958ixShg:localhost:8800&mO$157004181857fcmAB:localhost:8800~&lO$157004181756ejZNp:localhost:8800}&kO$157004181655JUAvO:localhost:8800|1je$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkz1ie$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUy1he$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kcx1ge$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aow1fe$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wu1ee$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQt1de$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwk&cO$157004180853KmrHT:localhost:8800s&bO$157004180752YHMqi:localhost:8800r&aO$157004180751hMlwg:localhost:8800q&`O$157004180650ruqIl:localhost:8800p&_O$157004180549mJBJB:localhost:8800o&^O$157004180448zlZXD:localhost:8800n&]O$157004180347MMmFf:localhost:8800m&\O$157004180346TRucp:localhost:8800l1[e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIW&ZO$157004180045QtsUE:localhost:8800i&YO$157004179944JKWNJ:localhost:8800h1Xe$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEg&WO$157004179843yDrjz:localhost:8800f1Ve$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAe&UO$157004179742OaMxS:localhost:8800d1Te$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Mc&SO$157004179541PbBIm:localhost:8800b1Re$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAka&QO$157004179340NSiie:localhost:8800`1Pe$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY_&OO$157004179239LLqht:localhost:8800^1Ne$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ]&MO$157004179138NbBYh:localhost:8800\&LO$157004179037FGMFG:localhost:8800[&KO$157004178936zuJSX:localhost:8800Z&JO$157004178835mLAyG:localhost:8800Y&IO$157004178734ZpFdg:localhost:8800X1He$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0V1Ge$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8U1Fe$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUT1Ee$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5ES1De$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcR1Ce$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34P1Be$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcO1Ae$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8N1@e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsM1?e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYL1>e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAK1=e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsJ1<e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwI1;e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkH&:O$157004177433OonrH:localhost:8800G19e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAF18e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg?&7O$157004177232wsJyW:localhost:8800E&6O$157004177131trwoi:localhost:8800D&5O$157004177030bmvvg:localhost:8800C&4O$157004176929ezeJB:localhost:8800B&3O$157004176828ZZJWh:localhost:8800A&2O$157004176727QjUJj:localhost:8800@11e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY>10e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo=1/e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s<1.e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA;1-e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI:1,e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s91+e$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew71*e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos0&)O$157004175925JuKDZ:localhost:88006&(O$157004175824dFhko:localhost:88005&'O$157004175723CBKAp:localhost:88004&&O$157004175622yCTNM:localhost:88003&%O$157004175621DDceh:localhost:88002&$O$157004175520JddPP:localhost:880011#e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc/1"e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y.1!e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4-1 e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE,1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8+1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0)1e$-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c"&O$157004174718wxlLH:localhost:8800( L0My P  p> v DS V $  \' j *h6n< 8v |DY! Gb J  jTgq1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUn1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg51e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY 1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk 1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk 1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk 1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc ab1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8N1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I 1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUm1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUl1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ/e $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE<1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE;1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8O1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk~1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY 1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY 1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE1e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo1e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q 1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Uc1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8P1e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwf 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg41e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg3d1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h881e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8U1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8T1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8S1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY11e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY01e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY/1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Ue1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Ud1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U /: h  [ 2 =k^5@n/e`HeQ% $f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topicpeFeQ/ $U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rulesj DeQ']$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800joinaCeQ' $2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800m.room.created@eQ- $wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800m.room.tombstoneZ?OQ/ $157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rulesb>OQ? $157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility\=OQ3 $157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access\BOQ3 $157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels;OQ']$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800joinV:OQ' $157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.createm8eQ? $ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibilitye7eQ/ $wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800m.room.join_rulesgAeQ3 $U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels 5eQ']$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800joina4eQ' $vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800m.room.created2eQ- $dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstoneZ1OQ/ $157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rulesb0OQ? $157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility\/OQ3 $157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access\.OQ3 $157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels-OQ']$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800joinV,OQ' $157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.createm+eQ? $JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibilitye*eQ/ $RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rulesg3eQ3 $1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels (eQ']$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800joina'eQ' $wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.createg&eQ3 $q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800m.room.power_levelsd%eQ- $-Ge23f0trEzwV7sgrkuwVqoyob4f_09ICk7FBRG3z0c!QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone 0vRM ^  z . ) { $ v *FW]XSNIZvIVQO!BfEFIDBthhkweqfhir:localhost:8800$157004179138NbBYh:localhost:8800IUQO!BfEFIDBthhkweqfhir:localhost:8800$157004179037FGMFG:localhost:8800ITQO!BfEFIDBthhkweqfhir:localhost:8800$157004178936zuJSX:localhost:8800ISQO!BfEFIDBthhkweqfhir:localhost:8800$157004178835mLAyG:localhost:8800IRQO!BfEFIDBthhkweqfhir:localhost:8800$157004178734ZpFdg:localhost:8800TQQe!aaRwQZdNAliyvRHpjs:localhost:8800$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0TPQe!aaRwQZdNAliyvRHpjs:localhost:8800$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8TOQe!aaRwQZdNAliyvRHpjs:localhost:8800$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUTNQe!aaRwQZdNAliyvRHpjs:localhost:8800$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5ETMQe!aaRwQZdNAliyvRHpjs:localhost:8800$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcTLQe!aaRwQZdNAliyvRHpjs:localhost:8800$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34TKQe!aaRwQZdNAliyvRHpjs:localhost:8800$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcTJQe!aaRwQZdNAliyvRHpjs:localhost:8800$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8TIQe!aaRwQZdNAliyvRHpjs:localhost:8800$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsTHQe!aaRwQZdNAliyvRHpjs:localhost:8800$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYTGQe!aaRwQZdNAliyvRHpjs:localhost:8800$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfATFQe!aaRwQZdNAliyvRHpjs:localhost:8800$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsTEQe!aaRwQZdNAliyvRHpjs:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwTDQe!aaRwQZdNAliyvRHpjs:localhost:8800$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkICQO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177433OonrH:localhost:8800TBQe!NNiyzThHMivrxhojfp:localhost:8800$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozATAQe!NNiyzThHMivrxhojfp:localhost:8800$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgI@QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177232wsJyW:localhost:8800I?QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177131trwoi:localhost:8800I>QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004177030bmvvg:localhost:8800I=QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176929ezeJB:localhost:8800I<QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176828ZZJWh:localhost:8800I;QO!ZShBIxwbJmxjjZmoRQ:localhost:8800$157004176727QjUJj:localhost:8800T:Qe!NNiyzThHMivrxhojfp:localhost:8800$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYT9Qe!NNiyzThHMivrxhojfp:localhost:8800$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKoT8Qe!NNiyzThHMivrxhojfp:localhost:8800$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_sT7Qe!NNiyzThHMivrxhojfp:localhost:8800$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAAT6Qe!NNiyzThHMivrxhojfp:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIT5Qe!NNiyzThHMivrxhojfp:localhost:8800$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4sT4Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuewT3Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDosI2QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175925JuKDZ:localhost:8800I1QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175824dFhko:localhost:8800I0QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175723CBKAp:localhost:8800I/QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175622yCTNM:localhost:8800I.QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175621DDceh:localhost:8800I-QO!QFiJrWFFeTAAAUCjCE:localhost:8800$157004175520JddPP:localhost:8800T,Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcT+Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8YT*Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4T)Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttET(Qe!KmuRTfGFgJdgIDAgIW:localhost:8800$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8T'Qe!QyLUggxrTnULUAOseq:localhost:8800$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0   *t$eQau$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1445}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4"], "type": "m.room.join_rules", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041753058, "hashes": {"sha256": "Q/CNCEyQ2SQMULZGm2DA/x/G/Bx29jMO/zJveGoMTY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+qBS+NRCUiHhv+ccp7WfhyvfTWhwKrAkoRItVU/J8HJbDZdDnw3Qhj+S3yFuPvSIxb1SuCT/iOt2TDM8zcryAw"}}, "unsigned": {"age_ts": 1570041753058}}k#eQac$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1444}{"auth_events": ["$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "type": "m.room.power_levels", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"users": {"@anon-20191002_181700-296:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041752431, "hashes": {"sha256": "Nilb2pbi329A/XX9feLjH/bqy0OCiO5Sly3zEvTWvAo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gRdwY+h4i1cxtPsgaT+JWZD7h2L+/Yxay9jNQrIn1f3SYbuC+oZquBxDQPF82X7P2rTz5XQXC+knRAGYePx1Bg"}}, "unsigned": {"age_ts": 1570041752431}}v"eQay$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1443}{"auth_events": ["$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8"], "prev_events": ["$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8"], "type": "m.room.member", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-296", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-296:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041751701, "hashes": {"sha256": "bceRWYWJpRLqH9TAGk0kjZy5UBYNivacETUGoH4HgTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tXSIHMwiiEKP3ZOWM2h1sld2zcK/9TP0PAxYY63LowUrXpGv4XnQBDfaDnMQidLq3AuR4iWnZn7k3KiEIUTJAQ"}}, "unsigned": {"age_ts": 1570041751701}}i!eQa_$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1442}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-296:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041750957, "hashes": {"sha256": "Ub36u8m+dwD0dWWR+gvqs32TDAgVfGfosJ/dIDnVLzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KJwJYZa8apyfrM7ngfG3eveY4K3gUp4kxxtXdj1cLvKwGoh3RIYhOtBj8oTM7azQS87Pld4PdSkFYaVFfMjAQ"}}, "unsigned": {"age_ts": 1570041750957}} %s 1 W 4 p   Ci0l>{Im_eQ# $tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.nameeeQ/ $UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_aclmeQ? $_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibilityieQ7 $x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups`eQ% $f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topicmeQ? $f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibilityeeQ/ $U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rulesgeQ3 $q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels eQ']$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800aeQ' $2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800m.room.create\OQ3 $157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levelsgeQ3 $U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levelsdeQ- $wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800m.room.tombstoneZOQ/ $157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rulesbOQ? $157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility\OQ3 $157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.guest_access\OQ3 $157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels~OQ']$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800V OQ' $157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.createg eQ3 $H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levelsm eQ? $ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibilitye eQ/ $wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800m.room.join_rulesg eQ3 $4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels eQ']$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800aeQ' $vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800m.room.creategeQ3 $1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levelsdeQ- $dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.tombstoneZOQ/ $157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rulesbOQ? $157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility\OQ3 $157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access\OQ3 $157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels~OQ']$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800VOQ' $157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.createm~eQ? $JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.history_visibilitye}eQ/ $RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.join_rulesg|eQ3 $WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.power_levels {eQ']$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800  w'OQa# $157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1448}{"auth_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}]], "prev_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}]], "type": "m.room.member", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-296", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-296:localhost:8800", "event_id": "$157004175621DDceh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041756043, "hashes": {"sha256": "y0WfG9Vl6AjSrexXKYfwj4AsobbemtMQOVr1rJGloMc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Ct9ZTXAKP0NKv9fk3oaPC3CCaA00KZXzMhOV5zsdBxjAfhmxmnHGXpg+tHonQ04c4UGkLMoThT1Sszz6BmXDg"}}, "unsigned": {"age_ts": 1570041756043}} &OQa= $157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1447}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "event_id": "$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos"}, "creator": "@anon-20191002_181700-296:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004175520JddPP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041755357, "hashes": {"sha256": "DEbhH2KKorDO/erV1F6xcGkbT3B2MueQHDUZX9Dob6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6kzVz08+iKD2GGq/of1Hiqy6GUs3zqCUrArxwX1f2zDHeR2Kf20Gh1/zOCAxcmCi708qKaJxe5AGZyMRUEI3BA"}}, "unsigned": {"age_ts": 1570041755357}}%eQa$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1446}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y"], "type": "m.room.history_visibility", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041753681, "hashes": {"sha256": "BcLvc5DSAM80HZHspj9hD/Hl6yckpWOCbRtHx+B24bA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tivjau0XDxv8stlt7o9xf+5nUuecZrGmFQ6sxmLDO/7Fi376yjCP3sf9ySXnr+bZP7Y/iyx13koXRwXNGJjBCg"}}, "unsigned": {"age_ts": 1570041753681}} IvHb4 ~ P " j <  X * r D  ` 2 zN h: V(pB^0xJfff8 R$-]@anon-20191002_181700-367:localhost:8800>-]@anon-20191002_181700-366:localhost:8800<-]@anon-20191002_181700-365:localhost:88008-]@anon-20191002_181700-364:localhost:88006-]@anon-20191002_181700-363:localhost:88002-]@anon-20191002_181700-362:localhost:8800/-]@anon-20191002_181700-361:localhost:88000-]@anon-20191002_181700-360:localhost:8800'+[@anon-20191002_181700-35:localhost:8800h-]@anon-20191002_181700-359:localhost:8800$-]@anon-20191002_181700-358:localhost:8800%-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800 -]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:8800c-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-346:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-344:localhost:8829-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800-]@anon-20191002_181700-341:localhost:8800-]@anon-20191002_181700-340:localhost:8829+[@anon-20191002_181700-33:localhost:8800^-]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-338:localhost:8800-]@anon-20191002_181700-337:localhost:8800-]@anon-20191002_181700-336:localhost:8800-]@anon-20191002_181700-333:localhost:8800-]@anon-20191002_181700-332:localhost:8800-]@anon-20191002_181700-331:localhost:8800-]@anon-20191002_181700-330:localhost:8800+[@anon-20191002_181700-32:localhost:8800Y-]@anon-20191002_181700-329:localhost:8800-]@anon-20191002_181700-328:localhost:8800-]@anon-20191002_181700-327:localhost:8800-]@anon-20191002_181700-326:localhost:8800-]@anon-20191002_181700-325:localhost:8800-]@anon-20191002_181700-324:localhost:8800-]@anon-20191002_181700-323:localhost:8800-]@anon-20191002_181700-322:localhost:8800-]@anon-20191002_181700-321:localhost:8800-]@anon-20191002_181700-320:localhost:8800+[@anon-20191002_181700-31:localhost:8800T-]@anon-20191002_181700-319:localhost:8800~-]@anon-20191002_181700-318:localhost:8800y-]@anon-20191002_181700-317:localhost:8800t-]@anon-20191002_181700-312:localhost:8800i-]@anon-20191002_181700-311:localhost:8800e-]@anon-20191002_181700-311:localhost:8800W-]@anon-20191002_181700-311:localhost:8800V-]@anon-20191002_181700-310:localhost:8800P+[@anon-20191002_181700-30:localhost:8800R-]@anon-20191002_181700-308:localhost:8800N-]@anon-20191002_181700-307:localhost:8800J-]@anon-20191002_181700-306:localhost:8800E-]@anon-20191002_181700-305:localhost:8800<-]@anon-20191002_181700-305:localhost:88006-]@anon-20191002_181700-304:localhost:8800.-]@anon-20191002_181700-304:localhost:8800)-]@anon-20191002_181700-303:localhost:8800!-]@anon-20191002_181700-303:localhost:8800-]@anon-20191002_181700-302:localhost:8800-]@anon-20191002_181700-302:localhost:8800-]@anon-20191002_181700-301:localhost:8800-]@anon-20191002_181700-301:localhost:8800  jr*OQa $157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1451}{"auth_events": [["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}], ["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "prev_events": [["$157004175723CBKAp:localhost:8800", {"sha256": "oZot0hZ6gmzM518t+cx1hjHQeAwcrVX1ATsMx1PWtzU"}]], "type": "m.room.history_visibility", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004175824dFhko:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041758109, "hashes": {"sha256": "lmyfHlLPnbqKcpsXqY5sdMXOmoLHmHMzmI5/LKzlt6o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6aYE5y5Zem07ZPGtAmvx1w0LL3e0vPWwxqBF/JJw6IozfGvhJMWCi8jUd+hFYBE+lkUoZTRbHqZ3TiSiT1gtDQ"}}, "unsigned": {"age_ts": 1570041758109}}h)OQau $157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1450}{"auth_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}], ["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}]], "prev_events": [["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}]], "type": "m.room.guest_access", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004175723CBKAp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041757426, "hashes": {"sha256": "TenenmOonrn9eJYMrs7iemZdEFBF17i11sXilAEuxzM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aO6iz3xrPG97hS7MgDcRaL+oVp82CjrQjDFa8KzBbwYfqnX0vjMG6i5+N7XsF0pFL8Iu7NUoES//29jDBbLxBQ"}}, "unsigned": {"age_ts": 1570041757426}}&(OQaq $157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1449}{"auth_events": [["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "prev_events": [["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "type": "m.room.power_levels", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"users": {"@anon-20191002_181700-296:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004175622yCTNM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041756768, "hashes": {"sha256": "s2GsHwMMQiwcsL627QicdUJA0H6q6xxyFQe/3BOaNBI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vVNKQP5ICOLeglqDuNANHbXk8QmzrlzF4JwZoMLlsWjxK9OeI7PmOBLXNJ+Um6VHmNBx1MOOD/is7MCT01k+AA"}}, "unsigned": {"age_ts": 1570041756768}} K4l"zHk9(qN?  w F  ~ L  f S. !   . Y ' ` `ZT:r@.21e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA Q1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 A1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg d1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUw1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIU1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 #1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMk1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs 1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM-1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA?1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4%01e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfog1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 51e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 61e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI Q1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 21e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU 1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w 1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcse1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE|0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIw1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0%1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE0e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkn1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z9801e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg.1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM)1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI0e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0y1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQS1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc[1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwU1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg !*T ~  = ; 9 7531/-+UhKOOQ$157004177030bmvvg:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hJOOQ$157004177030bmvvg:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hIOOQ$157004177030bmvvg:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hHOOQ$157004176929ezeJB:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hGOOQ$157004176929ezeJB:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hFOOQ$157004176828ZZJWh:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800~EeeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~DeeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~CeeQ$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800~BeeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~AeeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~@eeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800~?eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~>eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~=eeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800~<eeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~;eeQ$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~:eeQ$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~9eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~8eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~7eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800~6eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800~5eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800~4eeQ$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4!KmuRTfGFgJdgIDAgIW:localhost:8800h3OOQ$157004175925JuKDZ:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h2OOQ$157004175925JuKDZ:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h1OOQ$157004175925JuKDZ:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h0OOQ$157004175824dFhko:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h/OOQ$157004175824dFhko:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h.OOQ$157004175824dFhko:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h-OOQ$157004175723CBKAp:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h,OOQ$157004175723CBKAp:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800h+OOQ$157004175723CBKAp:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800 I- } K   Q Y>p 'Yj - _ -'f4l :r@xF~L_S! v D8 _d_21e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 )1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA P1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s$1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW81e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 0e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrkm1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98/1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg-1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM(1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI1e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQR1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 "1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwT1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y 1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNM,1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH041e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMj1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA>1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4$1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsO1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc-1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcC1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00G1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y11e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 j1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI P1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 51e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA 421e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w 1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 21e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc <  |t2 l * d \ U ME=5-% eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800 eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800eeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800 _eeQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800+eeQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800 veeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800 сeeQ$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:88003eeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800eeQ$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8!aWvVRVaDflYyyGTOdD:localhost:8800IeeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY!rQeYcODvQiLsOIbQrJ:localhost:8800jeeQ$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4!aWJOsiuJONOvjKWEjO:localhost:8800WeeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800JeeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800DA333$79:localhost:42455$78:localhost:42455!13:localhost:42455 YeeQ$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0!BkzROHxDAfKIzYpmPV:localhost:8800&A333$78:localhost:42455$77:localhost:42455!13:localhost:42455 XA333$76:localhost:42455$75:localhost:42455!12:localhost:42455 VeeQ$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI!UyLoIXmzVFwycmBUeh:localhost:8800A333$75:localhost:42455$74:localhost:42455!12:localhost:42455 UeeQ$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUU$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU!msMfSdLIAvklSSAnci:localhost:8800eeQ$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g!DoiZErAdypBUMZKaeJ:localhost:8800A333$73:localhost:42455$72:localhost:42455!11:localhost:42455 MA333$72:localhost:42455$71:localhost:42455!11:localhost:42455 L 5*H . w < M  9 { >  LQ=[fXBcBQ? !biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibility +^Q']!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800 ,^Q']!awHAhLuEkavTGACcUW:localhost:8800m.room.member@anon-20191002_181700-158:localhost:88004:Q/ !awHAhLuEkavTGACcUW:localhost:8800m.room.join_rules6BQ? !awHAhLuEkavTGACcUW:localhost:8800m.room.history_visibility7:Q/ !bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules BQ? !bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility 6Q' !bjdLCdBwkKaihRIRFG:localhost:8800m.room.create <Q3 !biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels )^Q']!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800 (:Q/ !biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rules *6Q' !biBIcqnGelHvLnpkOu:localhost:8800m.room.create '<Q3 !beBXQofoOfxNBtzsut:localhost:8800m.room.power_levelsY^Q']!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800W:Q/ !beBXQofoOfxNBtzsut:localhost:8800m.room.join_rules]BQ? !beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibility_6Q' !beBXQofoOfxNBtzsut:localhost:8800m.room.createT?Q9 !beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_alias[EQ))!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800a<Q3 !bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels]^Q']!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829`^Q']!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800\:Q/ !bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules^BQ? !bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility_6Q' !bQDOrbAknnQZfUbhgS:localhost:8800m.room.create[<Q3 !bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels ^Q']!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800^Q']!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800 :Q/ !bOSxzttDtclnrWnLov:localhost:8800m.room.join_rules BQ? !bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibility 6Q' !bOSxzttDtclnrWnLov:localhost:8800m.room.create <Q3 !bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.state<Q3 !bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels^Q']!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$^Q']!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800%^Q']!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800:Q/ !bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rulesBQ? !bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility!6Q' !bNSXSTadOMhIrYpMzH:localhost:8800m.room.create<Q3 !bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levels ^Q']!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800 RQ'E!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455 :Q/ !bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules BQ? !bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility 6Q' !bLWyXaXdvUhdSAooUz:localhost:8800m.room.create <Q3 !azRJNFPIRSFAskLILK:localhost:8800m.room.power_levels^Q']!azRJNFPIRSFAskLILK:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800:Q/ !azRJNFPIRSFAskLILK:localhost:8800m.room.join_rulesBQ? !azRJNFPIRSFAskLILK:localhost:8800m.room.history_visibility<Q3 !azRJNFPIRSFAskLILK:localhost:8800m.room.guest_access6Q' !azRJNFPIRSFAskLILK:localhost:8800m.room.createCQ?!awHAhLuEkavTGACcUW:localhost:8800m.room.third_party_invite98<Q3 !awHAhLuEkavTGACcUW:localhost:8800m.room.power_levels5  _-eQaK$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1454}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos"], "type": "m.room.power_levels", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"users": {"@anon-20191002_181700-296:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041760356, "hashes": {"sha256": "Tizw8l6Yf7325oWVKp5KV8u+C2+yQooqZ4Bki+DjxZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NT36+BFjcS+rbG5tsLk5+DDlMRw8+3cJ37TYWlGf8QtHJiOxnI1chs48w4llHmfKLX0eZ24JEG08rEIiYsAnDA"}}, "unsigned": {"age_ts": 1570041760356, "replaces_state": "$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4"}}=,eQa$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800{"token_id": 316, "stream_ordering": 1453}{"auth_events": ["$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4", "$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8", "$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE"], "prev_events": ["$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc"], "type": "m.room.tombstone", "room_id": "!KmuRTfGFgJdgIDAgIW:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!QFiJrWFFeTAAAUCjCE:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041755151, "hashes": {"sha256": "1F2BME3Z70X8eGzp7suO6d7G4DMl9b9HB1B/vu5wDs4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U0IucH7g0MVjUF54TFDbxR95kr1Fvw2dKdInYCrXVuB6cxJ+m+CnKOGerH4K6tBSfQ4B3vvDVoAq9hsl6xTcDQ"}}, "unsigned": {"age_ts": 1570041755151}}a+OQag $157004175925JuKDZ:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800{"token_id": 316, "stream_ordering": 1452}{"auth_events": [["$157004175622yCTNM:localhost:8800", {"sha256": "PvXVqcfK51PQp+8QwXhZCJR/VNOfamiuE+hv8C7VLh4"}], ["$157004175520JddPP:localhost:8800", {"sha256": "noESMhDJv7UggiWtrKNAtPz0Vb1xZrLUXi6+2PcSS3k"}], ["$157004175621DDceh:localhost:8800", {"sha256": "kp1RADpGfXWXo5y8xeOp6x7KNOlkxTPJ17RDAvia5DE"}]], "prev_events": [["$157004175824dFhko:localhost:8800", {"sha256": "0ndPhHBAWZElHBro7y4+BW/HrRDmGMOBPZT4S1KTyzU"}]], "type": "m.room.join_rules", "room_id": "!QFiJrWFFeTAAAUCjCE:localhost:8800", "sender": "@anon-20191002_181700-296:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004175925JuKDZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041759069, "hashes": {"sha256": "DN7q5ORR781EuBXzVJbTd5OPjGUzN/l0vtr4g0gdP4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tneip3IJedmbEUSz897vqgDzwTH11FZkedSkr2+bhvfeGtVcRvvAnb6yxqwTWEiwgrIgTDUD75+DDcmcmVzPDw"}}, "unsigned": {"age_ts": 1570041759069}} Fb0 +h6 *o= uC|J  J | >PVj D8 \$ ] P  W % 1LekyFrrI6ojqSmR1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII h1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMQ1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU)1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUG1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ9091e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wA1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ71e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMR1e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs1e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH81e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70h1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEY1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3YE1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBov1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo'1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4 1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs >1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y ;1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU B1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4a1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsq1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o~1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag~1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c&1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 ;1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo ;1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw 1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls 1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo  v21e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 21e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso vpd1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 321e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0f1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ41e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k   *t1eQau$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1458}{"auth_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA"], "type": "m.room.join_rules", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041764183, "hashes": {"sha256": "w+qqVaWFOf+/wejoGHgLW/wsZ5ITvDE4/VHi/mJn/8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dSVXG+xy/jhjZmEsUy8g8uUVVjifPESsKqYj5Ayx/Nox4gIQx20zcaqf6MDOZW3Fa+dzBKCN34hKepi6SdgKCg"}}, "unsigned": {"age_ts": 1570041764183}}k0eQac$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1457}{"auth_events": ["$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "type": "m.room.power_levels", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"users": {"@anon-20191002_181700-297:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041763533, "hashes": {"sha256": "WxUctF1nWGxcjHs/m1JNHIvTnpZNYWOgEEkDwA2bONM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "No80Z6vCkk1FeBLrk8fHaRyY1jnyu6G3FaNWUg/iEm1ewEWf7EqiL/3bWLWO0cNUwjqki9AKi/YvzVQc5zSkDQ"}}, "unsigned": {"age_ts": 1570041763533}}v/eQay$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1456}{"auth_events": ["$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s"], "prev_events": ["$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s"], "type": "m.room.member", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-297", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-297:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041762869, "hashes": {"sha256": "kQlSq2ZnnsdOOVEyPrnXeeBxQX8Qg9M6r7iKe6jfFeM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DGptyAFX+WNvfv+m8+7EI2ZAMxKWNgMczx7d0YxxoTCTwamZRKIDdfS3c86VAQpbBQUocUv58xeptUAoF0x+Cw"}}, "unsigned": {"age_ts": 1570041762869}}i.eQa_$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1455}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-297:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041762089, "hashes": {"sha256": "myELSE5Xkkw1qMjr9KKsMxwUPnm8wV83bETx7898TPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HaHX+uh2FGpJK035ceketvvQ01Qd1kbGIi1yy0W077SJEaHWuj8NswYV3d5jnXEeMoYmK2UGl1m97u3xqBtuDA"}}, "unsigned": {"age_ts": 1570041762089}} X8 % w L ! u J  s H q y N #:cFoD }RmBk@' { Pi>g<eT)8*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TSFcaXDBqrCREHRHxv:localhost:8800  *Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TlJCaYlCkOOVzFDlLx:localhost:8800rr*Q!TlJCaYlCkOOVzFDlLx:localhost:8800qq*Q!TlJCaYlCkOOVzFDlLx:localhost:8800pp*Q!TlJCaYlCkOOVzFDlLx:localhost:8800oo*Q!TlJCaYlCkOOVzFDlLx:localhost:8800nn*Q!TlJCaYlCkOOVzFDlLx:localhost:8800mm*Q!TlJCaYlCkOOVzFDlLx:localhost:8800ll*Q!TlJCaYlCkOOVzFDlLx:localhost:8800kk*Q!TlJCaYlCkOOVzFDlLx:localhost:8800jj*Q!TlJCaYlCkOOVzFDlLx:localhost:8800ii*Q!TlJCaYlCkOOVzFDlLx:localhost:8800hh*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TWETXUgfFZafDdbqLS:localhost:880055*Q!TWETXUgfFZafDdbqLS:localhost:880044*Q!TWETXUgfFZafDdbqLS:localhost:880033*Q!TWETXUgfFZafDdbqLS:localhost:880022*Q!TWETXUgfFZafDdbqLS:localhost:880011*Q!TWETXUgfFZafDdbqLS:localhost:880000*Q!TWETXUgfFZafDdbqLS:localhost:8800//*Q!TWETXUgfFZafDdbqLS:localhost:8800..*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SvKwEALYoNreUvqAlp:localhost:8800vv*Q!SvKwEALYoNreUvqAlp:localhost:8800uu*Q!SvKwEALYoNreUvqAlp:localhost:8800tt*Q!SvKwEALYoNreUvqAlp:localhost:8800ss*Q!SvKwEALYoNreUvqAlp:localhost:8800rr*Q!SvKwEALYoNreUvqAlp:localhost:8800qq*Q!SvKwEALYoNreUvqAlp:localhost:8800pp*Q!SvKwEALYoNreUvqAlp:localhost:8800oo*Q!StEnDjTJToXKXsOHNf:localhost:8829*Q!TcCLuIBUrtFqghDgay:localhost:8800II*Q!TcCLuIBUrtFqghDgay:localhost:8800HH*Q!TcCLuIBUrtFqghDgay:localhost:8800GG*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TcCLuIBUrtFqghDgay:localhost:8800LL*Q!TcCLuIBUrtFqghDgay:localhost:8800KK*Q!TcCLuIBUrtFqghDgay:localhost:8800JJ*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  w 4OQa= $157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1461}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "event_id": "$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg"}, "creator": "@anon-20191002_181700-297:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004176727QjUJj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041767219, "hashes": {"sha256": "BLkzKIy8a8g2dJv0iDpBBtI+MN9+1f1VzJ88mCLm/0A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "neuMSmc3auOCiSLEeaXzJXrUWwEsLjtnMtUNL3qD1X3OQL3n284nrHb3WFXwpJlW9SOWMkl2jgbSrJNEUgyaCQ"}}, "unsigned": {"age_ts": 1570041767219}}p3eQam$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1460}{"auth_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo"], "type": "m.room.power_levels", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@test:xyz": "40", "@anon-20191002_181700-297:localhost:8800": 100}, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041766167, "hashes": {"sha256": "b5OxMeV5NHL4d1BBWT1z0BytTp7MtbMXRIPFFZ0IQb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bHPgtZaIG+gWzSA/IRBMWrpCZpQ12w9EPcg3u3p9kndxE9fIOFFnqHy+O6i12JwjOjtCNtBabL6LyNDGUohqDg"}}, "unsigned": {"age_ts": 1570041766167, "replaces_state": "$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA"}}2eQa$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1459}{"auth_events": ["$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s"], "type": "m.room.history_visibility", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041764765, "hashes": {"sha256": "zeoSY04xgrHyHiIgExfB/m5qLXZKQl4uTcM+WrA5wXc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ih7eCLL+l4Yn0rjoRxJrOwU+HefDRWSgMiqgJIPG3hUP8N059c6gjDxt0wGGRBE8lP5TbbB4Aq1teNqRotFhCQ"}}, "unsigned": {"age_ts": 1570041764765}} E T p7Tp78 S T  6 p 7R T  qU 8 o6qRo8e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUsha2568e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMsha256 8e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYsha256 J8e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwsha256 08e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIsha2568e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Ysha256 8e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Asha2568e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIsha2568e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMksha256 8e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Nssha256J8e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gsha2567e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHssha256z8e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYsha2568e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1ksha2568e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6Esha2568e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40sha2568e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSwsha2568e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtksha2568e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUsha2568e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIsha256x8e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gsha256 8e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qsha256 8e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3Usha256 18e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYcsha256 8e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcsha256]8e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4sha256o8e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3osha256j8e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIsha2568e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0sha2568e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8sha2568e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014sha256 C7e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUsha256K8e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4sha256 "8e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcsha256G8e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEsha256 8e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFYsha2568e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kcsha2568e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUsha256G8e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcsha256P8e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAsha2568e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDAsha2568e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKEsha256!8e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUsha256c8e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zosha2568e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0sha2568e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcsha2568e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXosha2567e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gsha256S8e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQsha256,7e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7kosha25638e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMsha256w8e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0sha256W8e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lcsha2568e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzcsha2568e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rksha2568e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVhosha2568e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccEsha2568e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQsha256=8e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8sha256=8e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEsha256!8e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYsha256@8e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhwsha25678e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4sha2568e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMsha256 &8e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQsha2568e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNosha256v8e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8sha256 8e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynksha256 8e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Esha256  Aa,X# O  } H  t ? k 8  d /[&TKyDp;i4`+Y$4]@anon-20191002_181700-365:localhost:8800m4H4]@anon-20191002_181700-364:localhost:8800m4G4]@anon-20191002_181700-363:localhost:8800m4F4]@anon-20191002_181700-362:localhost:8800m4E4]@anon-20191002_181700-361:localhost:8800m4D4]@anon-20191002_181700-360:localhost:8800m4C2[@anon-20191002_181700-35:localhost:8800m44]@anon-20191002_181700-359:localhost:8800m4B4]@anon-20191002_181700-358:localhost:8800m4A4]@anon-20191002_181700-357:localhost:8800m4@4]@anon-20191002_181700-356:localhost:8800m4?4]@anon-20191002_181700-355:localhost:8800m4>4]@anon-20191002_181700-354:localhost:8800m4=4]@anon-20191002_181700-353:localhost:8800m4<4]@anon-20191002_181700-352:localhost:8800m4;4]@anon-20191002_181700-351:localhost:8800m4:4]@anon-20191002_181700-350:localhost:8800m492[@anon-20191002_181700-34:localhost:8800m44]@anon-20191002_181700-349:localhost:8800m484]@anon-20191002_181700-348:localhost:8800m474]@anon-20191002_181700-347:localhost:8800m464]@anon-20191002_181700-346:localhost:8800m454]@anon-20191002_181700-345:localhost:8800m444]@anon-20191002_181700-343:localhost:8800m434]@anon-20191002_181700-342:localhost:8800m424]@anon-20191002_181700-341:localhost:8800m412[@anon-20191002_181700-33:localhost:8800m44]@anon-20191002_181700-339:localhost:8800m404]@anon-20191002_181700-338:localhost:8800m4/4]@anon-20191002_181700-337:localhost:8800m4.4]@anon-20191002_181700-336:localhost:8800m4-4]@anon-20191002_181700-335:localhost:8800m4,4]@anon-20191002_181700-334:localhost:8800m4+4]@anon-20191002_181700-333:localhost:8800m4*4]@anon-20191002_181700-332:localhost:8800m4)4]@anon-20191002_181700-331:localhost:8800m4(4]@anon-20191002_181700-330:localhost:8800m4'2[@anon-20191002_181700-32:localhost:8800m44]@anon-20191002_181700-329:localhost:8800m4&4]@anon-20191002_181700-328:localhost:8800m4%4]@anon-20191002_181700-327:localhost:8800m4$4]@anon-20191002_181700-326:localhost:8800m4#4]@anon-20191002_181700-325:localhost:8800m4"4]@anon-20191002_181700-324:localhost:8800m4!4]@anon-20191002_181700-323:localhost:8800m4 4]@anon-20191002_181700-322:localhost:8800m44]@anon-20191002_181700-321:localhost:8800m44]@anon-20191002_181700-320:localhost:8800m42[@anon-20191002_181700-31:localhost:8800m44]@anon-20191002_181700-319:localhost:8800m44]@anon-20191002_181700-318:localhost:8800m44]@anon-20191002_181700-317:localhost:8800m44]@anon-20191002_181700-316:localhost:8800m44]@anon-20191002_181700-315:localhost:8800m44]@anon-20191002_181700-314:localhost:8800m44]@anon-20191002_181700-312:localhost:8800m44]@anon-20191002_181700-311:localhost:8800m44]@anon-20191002_181700-310:localhost:8800m44]@anon-20191002_181700-309:localhost:8800m44]@anon-20191002_181700-308:localhost:8800m44]@anon-20191002_181700-307:localhost:8800m44]@anon-20191002_181700-306:localhost:8800m44]@anon-20191002_181700-305:localhost:8800m44]@anon-20191002_181700-304:localhost:8800m44]@anon-20191002_181700-303:localhost:8800m4 >CG K O  S  W  [ _ c$g(k,o0s4w8{<<<]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRWm4<;]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMPm4<:]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFRm4<9]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAIm4<8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYSm4<7]!@anon-20191002_181700-348:localhost:8800KYSIYINERZm4<6]!@anon-20191002_181700-347:localhost:8800CFRSANQZYUm4<5]!@anon-20191002_181700-346:localhost:8800CIUYDTNROPm4<4]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHAm4<3]!@anon-20191002_181700-343:localhost:8800QPHBRHJQMLm4<2]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXPm4<1]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMWm4<0]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOHm4FoqDT)}R  *Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!fDISaqNBhlOwherxSt:localhost:8800 | *Q!fDISaqNBhlOwherxSt:localhost:8800 { *Q!fDISaqNBhlOwherxSt:localhost:8800 z *Q!fDISaqNBhlOwherxSt:localhost:8800 y *Q!fDISaqNBhlOwherxSt:localhost:8800 x *Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fGkUEndqGrieltwbCh:localhost:8800  M*Q!fGkUEndqGrieltwbCh:localhost:8800  L*Q!fGkUEndqGrieltwbCh:localhost:8800  K*Q!fGkUEndqGrieltwbCh:localhost:8800 J*Q!fGkUEndqGrieltwbCh:localhost:8800 I*Q!fGkUEndqGrieltwbCh:localhost:8800 H*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800"*Q!egbhiBqOGhloZzopol:localhost:8800!*Q!egbhiBqOGhloZzopol:localhost:8800 *Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # _*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " ^*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! ]*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 \*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  [*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  Z*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  Y*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  X*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  W i1 P ` puq'/L O'Q  ]$157004178734ZpFdg:localhost:8800m.room.create!BfEFIDBthhkweqfhir:localhost:8800msms@anon-20191002_181700-298:localhost:8800&Ke3Q ]$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0m.room.power_levels!aaRwQZdNAliyvRHpjs:localhost:8800mnmoY@anon-20191002_181700-298:localhost:8800&Je3Q ] $gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8m.room.guest_access!aaRwQZdNAliyvRHpjs:localhost:8800 mkml@anon-20191002_181700-298:localhost:8800 Ie'Q ] $1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUm.room.avatar!aaRwQZdNAliyvRHpjs:localhost:8800 mhmh@anon-20191002_181700-298:localhost:8800$He/Q ] $6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5Em.room.encryption!aaRwQZdNAliyvRHpjs:localhost:8800 mdme@anon-20191002_181700-298:localhost:8800Ge#Q ] $tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcm.room.name!aaRwQZdNAliyvRHpjs:localhost:8800 mambI@anon-20191002_181700-298:localhost:8800$Fe/Q ] $UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34m.room.server_acl!aaRwQZdNAliyvRHpjs:localhost:8800 m^Lm_ @anon-20191002_181700-298:localhost:8800,Ee?Q ]$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcm.room.history_visibility!aaRwQZdNAliyvRHpjs:localhost:8800m[m\x@anon-20191002_181700-298:localhost:8800(De7Q ]$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8m.room.related_groups!aaRwQZdNAliyvRHpjs:localhost:8800mYmZP@anon-20191002_181700-298:localhost:8800Ce%Q ]$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsm.room.topic!aaRwQZdNAliyvRHpjs:localhost:8800mU?mU@anon-20191002_181700-298:localhost:8800,Be?Q ]$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYm.room.history_visibility!aaRwQZdNAliyvRHpjs:localhost:8800mQ_mS @anon-20191002_181700-298:localhost:8800$Ae/Q ]$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAm.room.join_rules!aaRwQZdNAliyvRHpjs:localhost:8800mNmO@anon-20191002_181700-298:localhost:8800&@e3Q ]$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsm.room.power_levels!aaRwQZdNAliyvRHpjs:localhost:8800mKmL@anon-20191002_181700-298:localhost:8800 ?e'Q ]$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwm.room.member!aaRwQZdNAliyvRHpjs:localhost:8800mHmIL@anon-20191002_181700-298:localhost:8800> e'Q  ]$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikkm.room.create!aaRwQZdNAliyvRHpjs:localhost:8800mEmF6@anon-20191002_181700-298:localhost:8800=O3Q ]$157004177433OonrH:localhost:8800m.room.power_levels!ZShBIxwbJmxjjZmoRQ:localhost:8800m@mAz@anon-20191002_181700-297:localhost:8800&<e3Q ]$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozAm.room.power_levels!NNiyzThHMivrxhojfp:localhost:8800m=hm>@anon-20191002_181700-297:localhost:8800#;e-Q ]$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgm.room.tombstone!NNiyzThHMivrxhojfp:localhost:8800m$m;@anon-20191002_181700-297:localhost:8800:O/Q ]$157004177232wsJyW:localhost:8800m.room.join_rules!ZShBIxwbJmxjjZmoRQ:localhost:8800m9'm9@anon-20191002_181700-297:localhost:8800!9O?Q ]$157004177131trwoi:localhost:8800m.room.history_visibility!ZShBIxwbJmxjjZmoRQ:localhost:8800m6|m7 @anon-20191002_181700-297:localhost:88008O3Q ]$157004177030bmvvg:localhost:8800m.room.guest_access!ZShBIxwbJmxjjZmoRQ:localhost:8800m3 m3@anon-20191002_181700-297:localhost:88007O3Q ]$157004176929ezeJB:localhost:8800m.room.power_levels!ZShBIxwbJmxjjZmoRQ:localhost:8800m/[m/@anon-20191002_181700-297:localhost:88006O'Q ]$157004176828ZZJWh:localhost:8800m.room.member!ZShBIxwbJmxjjZmoRQ:localhost:8800m)Wm)@anon-20191002_181700-297:localhost:88005 O'Q  ]$157004176727QjUJj:localhost:8800m.room.create!ZShBIxwbJmxjjZmoRQ:localhost:8800m%3m%@anon-20191002_181700-297:localhost:8800 /dz, z , z ! o  d Y Ndo!z!z,,7MKbOL$157004180650ruqIl:localhost:8800sha256M{ȧßX̼ n5?9g:KaOL$157004180549mJBJB:localhost:8800sha256BSM<8O;!jKZm/ܢK`OL$157004180448zlZXD:localhost:8800sha256!Y){ .9;H![ cTgK_OL$157004180347MMmFf:localhost:8800sha256$͒[lbP)}>'O^_K^OL$157004180346TRucp:localhost:8800sha256_M/L)6q_xnHr*V]eL$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIsha256gtKXMسVwDKΣcK\OL$157004180045QtsUE:localhost:8800sha256LH+-tơy%M=K[OL$157004179944JKWNJ:localhost:8800sha256XAfn!oΙv-?ypseV#VZeL$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEsha256Ϡv _6N>ar# A ၱKYOL$157004179843yDrjz:localhost:8800sha256s'.MuFBaH*7zފ;DVXeL$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAsha2565|sg1vZdЧX@KWOL$157004179742OaMxS:localhost:8800sha256 ?tkED5m_Ҧ~VVeL$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Msha256~/7L,hldqLՑ.@;KUOL$157004179541PbBIm:localhost:8800sha256-)۫ L>̥e_VTeL$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAksha256d+1ZW<vZCKϹ@cf(chWn4l`}~VReL$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYsha256|psI)藡3dPy#omKQOL$157004179239LLqht:localhost:8800sha256 ^Wzb?M[B׬KRvVPeL$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQsha256y ڽeILR-7u^a-U?/KOOL$157004179138NbBYh:localhost:8800sha256ӛ]鿛BCG}L$K AKNOL$157004179037FGMFG:localhost:8800sha256T%X"/&0E꬛KMOL$157004178936zuJSX:localhost:8800sha256>ٺR!܉& 9-KLOL$157004178835mLAyG:localhost:8800sha256gR|wma KtSZ%qKKKOL$157004178734ZpFdg:localhost:8800sha256[nQ%eL$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwsha256=e4_,_m"1r*6P,V=eL$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikksha256ڿ`zb%LBU^K6OL$157004176929ezeJB:localhost:8800sha256U%L~>M{ KhQUfy>%(K5OL$157004176828ZZJWh:localhost:8800sha256hsDo6jAފKW/nW$DK4OL$157004176727QjUJj:localhost:8800sha256Gf[<gm!D !hm g gh7OQau $157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1464}{"auth_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}], ["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}]], "prev_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}]], "type": "m.room.guest_access", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004177030bmvvg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041770761, "hashes": {"sha256": "9xQhtZ6Mbck3NWUdXDTKW8w+b6rOZNYT7/trGv+/PIg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "evwwkKDf2hi0N2R7515mIMSb/DYh3Amltxwbe7zrVmKJ4ocrDG/3zv+BBYIA62yNtEfkaZ/FsXoOwlwWA9M2Cw"}}, "unsigned": {"age_ts": 1570041770761}}&6OQaq $157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1463}{"auth_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "type": "m.room.power_levels", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"users": {"@anon-20191002_181700-297:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004176929ezeJB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041769819, "hashes": {"sha256": "75qV7P/VtDfDe9mpLLNxT4mX9faCOHPItzKEb88EwJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mx670gPP2wLt3IilHT7X2qzJMIaUQkgblGCuQV8NtD7nQzMgZfUj3jlIzAcFoP0pdp0I3l/LuA4mGpeEoj/EDQ"}}, "unsigned": {"age_ts": 1570041769819}}5OQa# $157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1462}{"auth_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}]], "prev_events": [["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}]], "type": "m.room.member", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-297", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-297:localhost:8800", "event_id": "$157004176828ZZJWh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041768279, "hashes": {"sha256": "3iqr2Pt9G7a+njSbi7zy3rm9XGkIDsNxY6e/gfRXHK4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HxCFZD2vkibWJcxeyPiO560TJnFUn+1G0rojGSpVqEajf4ic9vpuLu2ivu7nfdGr26PY5gCvcMTeK7cVXV3ZCw"}}, "unsigned": {"age_ts": 1570041768279}} GV)  O"n\/vIc6 D  n A  @ ` 3 | O " ] 0   {k>j= S &mw  q,Q!bNSXSTadOMhIrYpMzH:localhost:88007,Q!bNSXSTadOMhIrYpMzH:localhost:88000,Q!bNSXSTadOMhIrYpMzH:localhost:8800*,Q!bNSXSTadOMhIrYpMzH:localhost:8800",Q!bNSXSTadOMhIrYpMzH:localhost:8800xx,Q!bNSXSTadOMhIrYpMzH:localhost:8800ww,Q!bNSXSTadOMhIrYpMzH:localhost:8800vv,Q!bNSXSTadOMhIrYpMzH:localhost:8800uu,Q!bNSXSTadOMhIrYpMzH:localhost:8800tt+Q !bNSXSTadOMhIrYpMzH:localhost:8800ss,Q!bNSXSTadOMhIrYpMzH:localhost:88008,Q!bNSXSTadOMhIrYpMzH:localhost:88005,Q!bNSXSTadOMhIrYpMzH:localhost:88001,Q!bNSXSTadOMhIrYpMzH:localhost:8800+,Q!bNSXSTadOMhIrYpMzH:localhost:8800 }},Q!bNSXSTadOMhIrYpMzH:localhost:8800 ||,Q!bNSXSTadOMhIrYpMzH:localhost:8800 {{,Q!bNSXSTadOMhIrYpMzH:localhost:8800zz,Q!bNSXSTadOMhIrYpMzH:localhost:8800yy,Q!bOSxzttDtclnrWnLov:localhost:8800bb,Q!bOSxzttDtclnrWnLov:localhost:8800aa,Q!bOSxzttDtclnrWnLov:localhost:8800``+Q !bOSxzttDtclnrWnLov:localhost:8800__+,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ~~,Q!bNSXSTadOMhIrYpMzH:localhost:8800=q,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) ),Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( (+Q !bLWyXaXdvUhdSAooUz:localhost:8800 ' ',Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800#,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bLWyXaXdvUhdSAooUz:localhost:8800 * *,Q!bNSXSTadOMhIrYpMzH:localhost:8800h,Q!bLWyXaXdvUhdSAooUz:localhost:8800 , ,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 + +,Q!bNSXSTadOMhIrYpMzH:localhost:8800%,Q!bNSXSTadOMhIrYpMzH:localhost:8800$,Q!bNSXSTadOMhIrYpMzH:localhost:8800!,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800),Q!bNSXSTadOMhIrYpMzH:localhost:8800(,Q!bNSXSTadOMhIrYpMzH:localhost:8800',Q!bNSXSTadOMhIrYpMzH:localhost:8800&,Q!bNSXSTadOMhIrYpMzH:localhost:8800/,Q!bNSXSTadOMhIrYpMzH:localhost:8800.,Q!bNSXSTadOMhIrYpMzH:localhost:8800-,Q!bNSXSTadOMhIrYpMzH:localhost:8800,,Q!bNSXSTadOMhIrYpMzH:localhost:88004,Q!bNSXSTadOMhIrYpMzH:localhost:88003,Q!bNSXSTadOMhIrYpMzH:localhost:88002,Q!bNSXSTadOMhIrYpMzH:localhost:88006,Q!bNSXSTadOMhIrYpMzH:localhost:8800:,Q!bNSXSTadOMhIrYpMzH:localhost:88009,Q!bNSXSTadOMhIrYpMzH:localhost:8800;,Q!bNSXSTadOMhIrYpMzH:localhost:8800< GV)  O"n\/vIc6 D  n A  @ ` 3 | O " ] 0   {k>j= S &mw  q,Q!bNSXSTadOMhIrYpMzH:localhost:88007,Q!bNSXSTadOMhIrYpMzH:localhost:88000,Q!bNSXSTadOMhIrYpMzH:localhost:8800*,Q!bNSXSTadOMhIrYpMzH:localhost:8800",Q!bNSXSTadOMhIrYpMzH:localhost:8800xx,Q!bNSXSTadOMhIrYpMzH:localhost:8800ww,Q!bNSXSTadOMhIrYpMzH:localhost:8800vv,Q!bNSXSTadOMhIrYpMzH:localhost:8800uu,Q!bNSXSTadOMhIrYpMzH:localhost:8800tt+Q !bNSXSTadOMhIrYpMzH:localhost:8800ss,Q!bNSXSTadOMhIrYpMzH:localhost:88008,Q!bNSXSTadOMhIrYpMzH:localhost:88005,Q!bNSXSTadOMhIrYpMzH:localhost:88001,Q!bNSXSTadOMhIrYpMzH:localhost:8800+,Q!bNSXSTadOMhIrYpMzH:localhost:8800 }},Q!bNSXSTadOMhIrYpMzH:localhost:8800 ||,Q!bNSXSTadOMhIrYpMzH:localhost:8800 {{,Q!bNSXSTadOMhIrYpMzH:localhost:8800zz,Q!bNSXSTadOMhIrYpMzH:localhost:8800yy,Q!bOSxzttDtclnrWnLov:localhost:8800bb,Q!bOSxzttDtclnrWnLov:localhost:8800aa,Q!bOSxzttDtclnrWnLov:localhost:8800``+Q !bOSxzttDtclnrWnLov:localhost:8800__+,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ~~,Q!bNSXSTadOMhIrYpMzH:localhost:8800=q,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) ),Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( (+Q !bLWyXaXdvUhdSAooUz:localhost:8800 ' ',Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800#,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bLWyXaXdvUhdSAooUz:localhost:8800 * *,Q!bNSXSTadOMhIrYpMzH:localhost:8800h,Q!bLWyXaXdvUhdSAooUz:localhost:8800 , ,,Q!bLWyXaXdvUhdSAooUz:localhost:8800 + +,Q!bNSXSTadOMhIrYpMzH:localhost:8800%,Q!bNSXSTadOMhIrYpMzH:localhost:8800$,Q!bNSXSTadOMhIrYpMzH:localhost:8800!,Q!bNSXSTadOMhIrYpMzH:localhost:8800 ,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800,Q!bNSXSTadOMhIrYpMzH:localhost:8800),Q!bNSXSTadOMhIrYpMzH:localhost:8800(,Q!bNSXSTadOMhIrYpMzH:localhost:8800',Q!bNSXSTadOMhIrYpMzH:localhost:8800&,Q!bNSXSTadOMhIrYpMzH:localhost:8800/,Q!bNSXSTadOMhIrYpMzH:localhost:8800.,Q!bNSXSTadOMhIrYpMzH:localhost:8800-,Q!bNSXSTadOMhIrYpMzH:localhost:8800,,Q!bNSXSTadOMhIrYpMzH:localhost:88004,Q!bNSXSTadOMhIrYpMzH:localhost:88003,Q!bNSXSTadOMhIrYpMzH:localhost:88002,Q!bNSXSTadOMhIrYpMzH:localhost:88006,Q!bNSXSTadOMhIrYpMzH:localhost:8800:,Q!bNSXSTadOMhIrYpMzH:localhost:88009,Q!bNSXSTadOMhIrYpMzH:localhost:8800;,Q!bNSXSTadOMhIrYpMzH:localhost:8800< &Z:m x 0 ]  Iw GbBR ]ZWmQ% Oi!BfEFIDBthhkweqfhir:localhost:8800m.room.topic$157004180045QtsUE:localhost:8800\lQ/ Oh!BfEFIDBthhkweqfhir:localhost:8800m.room.server_acl$157004179944JKWNJ:localhost:8800rkQ'+eg!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE`jQ7 Of!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groups$157004179843yDrjz:localhost:8800oiQ? ee!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibility$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAVhQ# Od!BfEFIDBthhkweqfhir:localhost:8800m.room.name$157004179742OaMxS:localhost:8800ggQ/ ec!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rules$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M\fQ/ Ob!BfEFIDBthhkweqfhir:localhost:8800m.room.join_rules$157004179541PbBIm:localhost:8800ieQ3 ea!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkddQ? O`!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility$157004179340NSiie:localhost:8800 cQ']e_!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY^bQ3 O^!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_access$157004179239LLqht:localhost:8800caQ' e]!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.create$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ\`Q/ O\!BfEFIDBthhkweqfhir:localhost:8800m.room.encryption$157004179138NbBYh:localhost:8800X_Q' O[!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar$157004179037FGMFG:localhost:8800^^Q3 OZ!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004178936zuJSX:localhost:8800]Q']OY!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$157004178835mLAyG:localhost:8800X\Q' OX!BfEFIDBthhkweqfhir:localhost:8800m.room.create$157004178734ZpFdg:localhost:8800f[Q- eW!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstone$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIiZQ3 eV!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0iYQ3 eU!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8cXQ' eT!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatar$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUgWQ/ eS!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5EaVQ# eR!aaRwQZdNAliyvRHpjs:localhost:8800m.room.name$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcgUQ/ eQ!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rules$lbKDrQg_NEOhhWS7oUP1k25ycOmumS9X0BHOVdC--rQgTQ/ eP!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_acl$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34oSQ? eO!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvckRQ7 eN!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8bQQ% eM!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topic$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOsoPQ? eL!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYgOQ/ eK!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rules$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAiNQ3 eJ!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs MQ']eI!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwcLQ' eH!aaRwQZdNAliyvRHpjs:localhost:8800m.room.create$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk^KQ3 OG!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.power_levels$157004177433OonrH:localhost:8800iJQ3 eF!NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA\IQ/ OE!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.join_rules$157004177232wsJyW:localhost:8800dHQ? OD!ZShBIxwbJmxjjZmoRQ:localhost:8800m.room.history_visibility$157004177131trwoi:localhost:8800 d %d=:eQa$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1467}{"auth_events": ["$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY"], "type": "m.room.tombstone", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!ZShBIxwbJmxjjZmoRQ:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041767132, "hashes": {"sha256": "FytEwhC8psy6f/DC1lTbrVkAxDdj+OYld3gjRlR58/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hHkt3X4BjL+uBnjnA59IGC3HDiCX1G6k1rWbF77jLQ1vzEMlp2W2H2REPOEOwFvsmPpH++OD4OVOvS7+qwD7Dw"}}, "unsigned": {"age_ts": 1570041767132}}a9OQag $157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1466}{"auth_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}], ["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004177131trwoi:localhost:8800", {"sha256": "dpVW/OCyB7t1t29BgiF497FmUl3UTOEWIaLW+OghvJI"}]], "type": "m.room.join_rules", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004177232wsJyW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041772327, "hashes": {"sha256": "/no3EoFuKMJ+wBkzloKRCx/2i3hhh/HY9XSJDsuZxgE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eUJIZnkLaDr5OIrKkrEyEzOolBYRRF88GTLdD5NhilExJ+J89PElfFU7B/K0SdqlGUAnX37Xow5Ezh79MSNRAg"}}, "unsigned": {"age_ts": 1570041772327}}r8OQa $157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1465}{"auth_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}], ["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004177030bmvvg:localhost:8800", {"sha256": "CQJCMIrDDzvOHmJ4sz56DmIljZWWrO6KTKhCVQESXo8"}]], "type": "m.room.history_visibility", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004177131trwoi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041771644, "hashes": {"sha256": "sXlrSRY4pWQFjdPEr6yW/bIvPLVUCED84GJ1qsfjuaU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VfQUbA1Mo6jyxFU0ibJSvh1H5cm4Hy6T3HWx4795kvQClMfBJlaHeFN+dgCBzrHpq18oK+fGRY++uWH2nGKwAA"}}, "unsigned": {"age_ts": 1570041771644}} *T ~ | z x 7531/-+)'~keeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~jeeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~ieeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~heeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~geeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~feeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~eeeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~deeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~ceeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~beeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~aeeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~`eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~_eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~^eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~]eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~\eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~[eeQ$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800hZOOQ$157004177433OonrH:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hYOOQ$157004177433OonrH:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hXOOQ$157004177433OonrH:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800~WeeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~VeeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~UeeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800~TeeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI!NNiyzThHMivrxhojfp:localhost:8800~SeeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s!NNiyzThHMivrxhojfp:localhost:8800~ReeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800hQOOQ$157004177232wsJyW:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hPOOQ$157004177232wsJyW:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hOOOQ$157004177232wsJyW:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hNOOQ$157004177131trwoi:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hMOOQ$157004177131trwoi:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800hLOOQ$157004177131trwoi:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 G 4Gi=eQa_$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1470}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-298:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041775589, "hashes": {"sha256": "CpP9ibsuB0/T4YAZIJ055OLu1zgTK7LkVy6AaQ72kW4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rPraqZ+WqBrbP44LBvLX1h0YHEezs2WIe9LaDpWEeB0QEhL2iiRa0KSWfD7mPkHj8iVFDfdAumlGKMQ9p1AICg"}}, "unsigned": {"age_ts": 1570041775589}}R<OQaI $157004177433OonrH:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800{"token_id": 317, "stream_ordering": 1469}{"auth_events": [["$157004176929ezeJB:localhost:8800", {"sha256": "VfMlTH4+Tb3y4vwHeyDpS2hRVQAP8MBmeT4lzcnnKBk"}], ["$157004176727QjUJj:localhost:8800", {"sha256": "4hdHEWZbPJQU9RjtxmdtwKsCIUQKGRQh/PayaJel7W0"}], ["$157004176828ZZJWh:localhost:8800", {"sha256": "qmhzouWVRJRvBTaRaolB3ooGS+NXjy++bsbg6FckRO4"}]], "prev_events": [["$157004177232wsJyW:localhost:8800", {"sha256": "u0Ig920oGOlGT3FQ4t0cVHu8w8xZAoLouvGD/3Z98Zc"}]], "type": "m.room.power_levels", "room_id": "!ZShBIxwbJmxjjZmoRQ:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@test:xyz": "40", "@anon-20191002_181700-297:localhost:8800": 100}, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004177433OonrH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041774267, "hashes": {"sha256": "Z/Y7jQtnZt+8CZhelcMxQK6NBANsskFFTbJzbdzBHSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1OlLVdlkN+nZxbNq4pUnzYFMhzzqBeIARBTb7c3StmsKcy+8hxaU1Cf6n+KQxnfG/9Zcc3PKdyhuK+THL4LVBg"}}, "unsigned": {"age_ts": 1570041774267, "replaces_state": "$157004176929ezeJB:localhost:8800"}}r;eQaq$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800{"token_id": 317, "stream_ordering": 1468}{"auth_events": ["$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY", "$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s", "$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI"], "prev_events": ["$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg"], "type": "m.room.power_levels", "room_id": "!NNiyzThHMivrxhojfp:localhost:8800", "sender": "@anon-20191002_181700-297:localhost:8800", "content": {"events": {"m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 50, "kick": 50, "users": {"@test:xyz": "40", "@anon-20191002_181700-297:localhost:8800": 100}, "ban": 50, "invite": 50, "redact": 50, "users_default": 0}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041773416, "hashes": {"sha256": "VOt60ZtpWkSyCMevW1OBBpjQgLODsHnS2tep7HRmZ8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dvhPq8KCICLT/I3E8aNJ17hpHm8Bs4t42mO4nOkk3YwjRcbE2f0XeFlho9+tg4q2QVcuITC02mxK3whDqX/dAg"}}, "unsigned": {"age_ts": 1570041773416, "replaces_state": "$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY"}} g * T~=gg?]!cH@anon-20191002_181700-308:localhost:8800VRKBCOUWEFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgog>]!cG@anon-20191002_181700-307:localhost:8800BEZNVUIADUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgog=]!cF@anon-20191002_181700-306:localhost:8800XZDIPYWWODMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwog<]!cE@anon-20191002_181700-305:localhost:8800PDQTBQSPGXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQog;]!cD@anon-20191002_181700-304:localhost:8800MQWNAFYDXKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1Owog:]!cC@anon-20191002_181700-303:localhost:8800FUOYNGGDMQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAog9]!cB@anon-20191002_181700-302:localhost:8800PAWIWMHYHHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQog8]!cA@anon-20191002_181700-301:localhost:8800SJPGITTBTXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwog7]!c@@anon-20191002_181700-300:localhost:8800ZZJIQPLATKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0Qog6]!c?@anon-20191002_181700-299:localhost:8800BPDORAMNSEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR5ZFNKRWI9MllRQkZIMEwKMDAyZnNpZ25hdHVyZSBcWR0FgKvs8QTE3nKVqYIRnJPxhs5eMpVXU4ulFDObuQog5]!c>@anon-20191002_181700-298:localhost:8800GTROHDSCGVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTI5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1vUEFkOW8tfkxSdm9YLVkKMDAyZnNpZ25hdHVyZSDDM96o1qOKhOamg0RXbgwXlmDDMRWv9tyKlsznk-_M4Qo  AeQa$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1474}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA"], "type": "m.room.history_visibility", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041778527, "hashes": {"sha256": "B52+QntYrbUsvFkCIqCZMXoY1CJpe94NO/OvaqHqfJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KN+nfDjkgVsoWQuK2ZGhMOI9w8+noNyaI+g88DcC6ulj/qmoNhLN9Lcm+ji/QwZ2cdUz86rxdbzHpgskEJIQCQ"}}, "unsigned": {"age_ts": 1570041778527}}t@eQau$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1473}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs"], "type": "m.room.join_rules", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041777876, "hashes": {"sha256": "qcrQAphCuyD42jJ3Vwcpj1iICERAxsMgSh8VqAJi/4w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TwEzfauUcQIZJ5pcTmXNCrlH8vkQvrl/vjl7iAVDeuJKJigYGkQ3IdH6aP7uiErX1f7NEtOTVKL6LQOSy0wwAg"}}, "unsigned": {"age_ts": 1570041777876}}k?eQac$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1472}{"auth_events": ["$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "type": "m.room.power_levels", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"users": {"@anon-20191002_181700-298:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041777051, "hashes": {"sha256": "9jLbzC315oJJFZ0jpSzLB8SY7iGAWoy6U6iGCiJL7K8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmDS3oRicfO2ygF7pipS4D6Yin3HqBgdPDIp6n656P3/8IiMfjhbL5SF6v57vU4p5jnhArMQGqfWvmzBotd/AA"}}, "unsigned": {"age_ts": 1570041777051}}v>eQay$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1471}{"auth_events": ["$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk"], "prev_events": ["$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk"], "type": "m.room.member", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-298", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-298:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041776354, "hashes": {"sha256": "vr7hZoM31X4ue/BdBbPhSBFGQseBwWcr4pGfNmUG3cY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xTkOHs35Ob1LwcyqFA34ggVXQ01EkFZOjJOcngxjE+iYFnFJwkPDygnql2L/yr8IrM7ncc7fplkWZOnAAR57BA"}}, "unsigned": {"age_ts": 1570041776354}} $|p% P E u   &h?GzBhCc|_8Q3 O!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels$157004180549mJBJB:localhost:88007Q']O!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$157004180448zlZXD:localhost:8800Y6Q' O!WhqVaRReBxJXADAyYD:localhost:8800m.room.create$157004180347MMmFf:localhost:88005Q3 OO!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004180346TRucp:localhost:8800$157004178936zuJSX:localhost:8800g4Q- e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstone$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIX3Q% O!BfEFIDBthhkweqfhir:localhost:8800m.room.topic$157004180045QtsUE:localhost:8800]2Q/ O!BfEFIDBthhkweqfhir:localhost:8800m.room.server_acl$157004179944JKWNJ:localhost:8800s1Q'+e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEa0Q7 O!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groups$157004179843yDrjz:localhost:8800p/Q? e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibility$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAW.Q# O!BfEFIDBthhkweqfhir:localhost:8800m.room.name$157004179742OaMxS:localhost:8800h-Q/ e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rules$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M],Q/ O!BfEFIDBthhkweqfhir:localhost:8800m.room.join_rules$157004179541PbBIm:localhost:8800j+Q3 e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAke*Q? O!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility$157004179340NSiie:localhost:8800 )Q']e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY_(Q3 O!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_access$157004179239LLqht:localhost:8800d'Q' e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.create$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ]&Q/ O!BfEFIDBthhkweqfhir:localhost:8800m.room.encryption$157004179138NbBYh:localhost:8800Y%Q' O!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar$157004179037FGMFG:localhost:8800_$Q3 O!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004178936zuJSX:localhost:8800#Q']O!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$157004178835mLAyG:localhost:8800Y"Q' O!BfEFIDBthhkweqfhir:localhost:8800m.room.create$157004178734ZpFdg:localhost:8800!Q3 ee!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWsj Q3 e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8dQ' e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatar$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUhQ/ e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5EbQ# e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.name$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWchQ/ e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_acl$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34Q? ee!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYlQ7 e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8cQ% e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.topic$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOspQ? e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibility$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYhQ/ e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.join_rules$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfAjQ3 e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs Q']e!aaRwQZdNAliyvRHpjs:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw LT"ZB  v P  p>  V $( \ *b0h6 J  n<tzH8N D | 1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ER1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8P1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8O1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8N1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoK1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg \1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg [1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAS1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAR1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAQ1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo 1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo 1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo 1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ES1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ET1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw 11e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw 01e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw /1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAZ1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAY1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwD1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ 1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ 1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ 1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90 1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90 1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU 1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU 1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M 1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA j01e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0K1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0J1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0I1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoq1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMR1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMQ1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMP1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg|1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYl1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg~1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg}1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0+1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0*1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0)1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0(21e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYn1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYm !~z v r n j | 8J\n&8`i4OOQ$157004180650ruqIl:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i3OOQ$157004180549mJBJB:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i2OOQ$157004180448zlZXD:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i1OOQ$157004180346TRucp:localhost:8800$157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:88000eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800i/OOQ$157004180045QtsUE:localhost:8800$157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i.OOQ$157004179944JKWNJ:localhost:8800$157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800-eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800i,OOQ$157004179843yDrjz:localhost:8800$157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800+eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800i*OOQ$157004179742OaMxS:localhost:8800$157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800)eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800i(OOQ$157004179541PbBIm:localhost:8800$157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800'eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800i&OOQ$157004179340NSiie:localhost:8800$157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800%eeQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800i$OOQ$157004179239LLqht:localhost:8800$157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i#OOQ$157004179138NbBYh:localhost:8800$157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i"OOQ$157004179037FGMFG:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i!OOQ$157004178936zuJSX:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800i OOQ$157004178835mLAyG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800  </EeQak$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1478}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc"], "type": "m.room.server_acl", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"allow": ["*"], "deny": ["*.evil.com", "evil.com"], "allow_ip_literals": "false"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041781836, "hashes": {"sha256": "k6I4bjkTzjDNCxsdNQcPkT6mmMC07e2iOd4X7UzdrpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eYbcS4TgLW9mk3vir2qp67IVVWjE5yJ0nA3KiqBoLye6C/w/PEWst7EI4pFwr9QpCMIz074udHwdpfA2sPDdCw"}}, "unsigned": {"age_ts": 1570041781836}}GDeQa$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1477}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8"], "type": "m.room.history_visibility", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041781152, "hashes": {"sha256": "X1SvehJzZikju0b5QmbbAaZAH6Th12Izfkc2Y7BAWy0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OjWPoA0pQNp3ht8pfe9B9j6EugL9idhUsooIaBmIMylBCLO/heM7VJNqi8ldyH3B+Jhg6sWkwsRccfo52522Aw"}}, "unsigned": {"age_ts": 1570041781152, "replaces_state": "$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY"}}CeQa$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1476}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs"], "type": "m.room.related_groups", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"groups": ["+something:example.org"]}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041780630, "hashes": {"sha256": "LP6ZAe6eJR66LtKXK+YGLe/N2ouDzLJ3nzjUVFif1sU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TawQ8yASlRz30z8ItkJVF4TB5uZfuZJC8HGthxG6fi6BK5TYHlcPsmO5NNqfnjCsyv6uBlH1zR2xsK9nKb2sCQ"}}, "unsigned": {"age_ts": 1570041780630}}jBeQaa$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1475}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY"], "type": "m.room.topic", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"topic": "topic"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041779519, "hashes": {"sha256": "1Q/BwPLy2usKka9tcrfsBt48VkRdkj/saS261QTFI5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T89YaGvS13E4ic5X024llChGD1aYjs8nnYkyJD6GQzUBVA/Lnl74NAtKssQFBzZ6cd2ThMZnpM9aMO0O3YG0BQ"}}, "unsigned": {"age_ts": 1570041779519}} 1lRM H Y u  { / 5FW]y-IOJPlIQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181958ixShg:localhost:8800I~QO~!NrxQuziwSWzsHuXIlG:localhost:8800$157004181857fcmAB:localhost:8800I}QO}!NrxQuziwSWzsHuXIlG:localhost:8800$157004181756ejZNp:localhost:8800I|QO|!NrxQuziwSWzsHuXIlG:localhost:8800$157004181655JUAvO:localhost:8800T{Qe{!CNFopUEQTFbzjmLvii:localhost:8800$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzATzQez!CNFopUEQTFbzjmLvii:localhost:8800$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkTyQey!CNFopUEQTFbzjmLvii:localhost:8800$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUTxQex!CNFopUEQTFbzjmLvii:localhost:8800$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcTwQew!CNFopUEQTFbzjmLvii:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AoIvQOv!WhqVaRReBxJXADAyYD:localhost:8800$157004181254abDEV:localhost:8800TuQeu!CNFopUEQTFbzjmLvii:localhost:8800$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wTtQet!aLxrqpqLkbzyIxGgpk:localhost:8800$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQIsQOs!WhqVaRReBxJXADAyYD:localhost:8800$157004180853KmrHT:localhost:8800IrQOr!WhqVaRReBxJXADAyYD:localhost:8800$157004180752YHMqi:localhost:8800IqQOq!WhqVaRReBxJXADAyYD:localhost:8800$157004180751hMlwg:localhost:8800IpQOp!WhqVaRReBxJXADAyYD:localhost:8800$157004180650ruqIl:localhost:8800IoQOo!WhqVaRReBxJXADAyYD:localhost:8800$157004180549mJBJB:localhost:8800InQOn!WhqVaRReBxJXADAyYD:localhost:8800$157004180448zlZXD:localhost:8800ImQOm!WhqVaRReBxJXADAyYD:localhost:8800$157004180347MMmFf:localhost:8800IlQOl!BfEFIDBthhkweqfhir:localhost:8800$157004180346TRucp:localhost:8800TkQek!aLxrqpqLkbzyIxGgpk:localhost:8800$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwTjQej!aaRwQZdNAliyvRHpjs:localhost:8800$Gn7wtV0iWwMPsZPtWJtusSChoJvnWZRBzM4A_qmzY30IiQOi!BfEFIDBthhkweqfhir:localhost:8800$157004180045QtsUE:localhost:8800IhQOh!BfEFIDBthhkweqfhir:localhost:8800$157004179944JKWNJ:localhost:8800TgQeg!aLxrqpqLkbzyIxGgpk:localhost:8800$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEIfQOf!BfEFIDBthhkweqfhir:localhost:8800$157004179843yDrjz:localhost:8800TeQee!aLxrqpqLkbzyIxGgpk:localhost:8800$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAIdQOd!BfEFIDBthhkweqfhir:localhost:8800$157004179742OaMxS:localhost:8800TcQec!aLxrqpqLkbzyIxGgpk:localhost:8800$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597MIbQOb!BfEFIDBthhkweqfhir:localhost:8800$157004179541PbBIm:localhost:8800TaQea!aLxrqpqLkbzyIxGgpk:localhost:8800$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkI`QO`!BfEFIDBthhkweqfhir:localhost:8800$157004179340NSiie:localhost:8800T_Qe_!aLxrqpqLkbzyIxGgpk:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYI^QO^!BfEFIDBthhkweqfhir:localhost:8800$157004179239LLqht:localhost:8800T]Qe]!aLxrqpqLkbzyIxGgpk:localhost:8800$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQI\QO\!BfEFIDBthhkweqfhir:localhost:8800$157004179138NbBYh:localhost:8800I[QO[!BfEFIDBthhkweqfhir:localhost:8800$157004179037FGMFG:localhost:8800IZQOZ!BfEFIDBthhkweqfhir:localhost:8800$157004178936zuJSX:localhost:8800IYQOY!BfEFIDBthhkweqfhir:localhost:8800$157004178835mLAyG:localhost:8800IXQOX!BfEFIDBthhkweqfhir:localhost:8800$157004178734ZpFdg:localhost:8800TWQeW!aaRwQZdNAliyvRHpjs:localhost:8800$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIITVQeV!aaRwQZdNAliyvRHpjs:localhost:8800$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0TUQeU!aaRwQZdNAliyvRHpjs:localhost:8800$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8TTQeT!aaRwQZdNAliyvRHpjs:localhost:8800$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcUTSQeS!aaRwQZdNAliyvRHpjs:localhost:8800$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5ETRQeR!aaRwQZdNAliyvRHpjs:localhost:8800$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcTQQeQ!aaRwQZdNAliyvRHpjs:localhost:8800$lbKDrQg_NEOhhWS7oUP1k25ycOmumS9X0BHOVdC--rQTPQeP!aaRwQZdNAliyvRHpjs:localhost:8800$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34TOQeO!aaRwQZdNAliyvRHpjs:localhost:8800$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc !}} { y w u sqom,V?i}h OOQ$157004179340NSiie:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~ eeQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800h OOQ$157004179239LLqht:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h OOQ$157004179239LLqht:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179239LLqht:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179138NbBYh:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179138NbBYh:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179138NbBYh:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179037FGMFG:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179037FGMFG:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179037FGMFG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004178936zuJSX:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004178936zuJSX:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004178835mLAyG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~~eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~}eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~|eeQ$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~{eeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~zeeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~yeeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~xeeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~weeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~veeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~ueeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~teeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~seeQ$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~reeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~qeeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~peeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~oeeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~neeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~meeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800~leeQ$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800 Hb0h6npH T" NjZ<  P  z8 V $ \ *(>tB v D  |21e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEg1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok%1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0A1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0@1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0?1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ@1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ?1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ>1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig 1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig 1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY-1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY,1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY+1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYq1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYp1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYo1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgK1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgJ1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-NgI1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k'1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k&1e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k%1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw H1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw G1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw Fd1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g 1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc 1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs 1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig d1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk 1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk 1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEf1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEe2  }IeQa$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1482}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU"], "type": "m.room.guest_access", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"guest_access": "forbidden"}, "depth": 13, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041785270, "hashes": {"sha256": "XiziyfE9fTwiATAPaZPJp349r5KY2DLO+x8HJfKqeZE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F2H5k1rlLawzr6WvtjHawtd0szdmLA5p3iC+9LGKMag1S6Y8lWJzHqhsTBXESF1THFnwwd766ECHnOsyo3pjDQ"}}, "unsigned": {"age_ts": 1570041785270}}uHeQaw$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1481}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E"], "type": "m.room.avatar", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"url": "http://something"}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041784327, "hashes": {"sha256": "sZhYhiVMbnTJt4NsEf8KH/O1zHgr6e4aGS2wILli3CA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RHTD6nnuHqt51daDGI3hZnsqJfnju7qP+MH59zPDQqWc12iEy3Ajr/YTSPhXvujFQreMaVZ9yg+feLXrww5kCQ"}}, "unsigned": {"age_ts": 1570041784327}}GeQa$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1480}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc"], "type": "m.room.encryption", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"algorithm": "m.megolm.v1.aes-sha2"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041783486, "hashes": {"sha256": "9/dRO7OmId4YKMI7qRGZLTs/g1Rk0oEnw92mhWtm01g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vrMjBcQNahXYU9Pos+AvdoRgz/WntX4kMla3Id8xdCpT7xXYQ0CLeEV/EOgw8FqSVW8E0ngQ+jnIUfq1RSjvAg"}}, "unsigned": {"age_ts": 1570041783486}}hFeQa]$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1479}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34"], "type": "m.room.name", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"name": "name"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041782759, "hashes": {"sha256": "JfN03lGtTpTwhiFg8ejYC8vCz8hsgEmY+W1L/mg1qf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UBQF5RpeBhkLvF0IRKTdNVzOEkZ91bkSU/1sB1Zdi0ePVrqkMYXV1d+oQqPa6Ch6K5lW4GVAS0R9GLVx2Y0zBQ"}}, "unsigned": {"age_ts": 1570041782759}} 'X4` ' q ! R 6e=w>zN!XVFOQ' $157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.createmEeQ? $yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibilityeDeQ/ $rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rulesgCeQ3 $m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels BeQ']$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800aAeQ' $XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800m.room.createg@eQ3 $pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsd?eQ- $IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstonee>OQ'+$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.orgZ=OQ/ $157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rulesb<OQ? $157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility\;OQ3 $157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access\:OQ3 $157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels~9OQ']$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800V8OQ' $157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.create\7OQ3 $157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levelsd6eQ- $sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstoneU5OQ% $157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.topicZ4OQ/ $157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.server_aclp3eQ'+$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org^2OQ7 $157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groupsm1eQ? $4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibilityT0OQ# $157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.namee/eQ/ $u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rulesZ.OQ/ $157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.join_rulesg-eQ3 $ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsb,OQ? $157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility +eQ']$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800\*OQ3 $157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_accessa)eQ' $eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.createZ(OQ/ $157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.encryptionV'OQ' $157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar\&OQ3 $157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels~%OQ']$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800V$OQ' $157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.createg#eQ3 $Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levelsg"eQ3 $gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_accessa!eQ' $1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatare eQ/ $6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption 1?| X  >  { D  g  Q z@ ,Y?Kh+vvvvvv`%~BQ? !hgjYwwwjWJNgwrzOto:localhost:8800m.room.history_visibility<Q3 !hgjYwwwjWJNgwrzOto:localhost:8800m.room.guest_access6Q' !hgjYwwwjWJNgwrzOto:localhost:8800m.room.create:Q/ !ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rulesBQ? !ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibility6Q' !ijOiudvuzOLNmgNKfG:localhost:8800m.room.create<Q3 !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.power_levels`^Q']!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@anon-20191002_181700-207:localhost:8800_HQ'1!ifQxHmNAcSSGHVMjfi:localhost:8800m.room.member@33:localhost:8800e:Q/ !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.join_rulesaBQ? !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.history_visibilityd<Q3 !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.guest_accessc6Q' !ifQxHmNAcSSGHVMjfi:localhost:8800m.room.create^<Q3 !icheSPMgpemswIdQkw:localhost:8800m.room.power_levels^Q']!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800:Q/ !icheSPMgpemswIdQkw:localhost:8800m.room.join_rulesBQ? !icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility<Q3 !icheSPMgpemswIdQkw:localhost:8800m.room.guest_access6Q' !icheSPMgpemswIdQkw:localhost:8800m.room.create<Q3 !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels^Q']!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800^Q']!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800:Q/ !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rulesBQ? !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibility6Q' !iTQSCiLqRMDtgXtUdC:localhost:8800m.room.create9Q- !iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone<Q3 !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels^Q']!iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800:Q/ !iLHJbsFszubrnybDNz:localhost:8800m.room.join_rulesBQ? !iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibility6Q' !iLHJbsFszubrnybDNz:localhost:8800m.room.create<Q3 !iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels^Q']!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829^Q']!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800:Q/ !iKezIvJyjkNqKayFju:localhost:8800m.room.join_rulesBQ? !iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibility6Q' !iKezIvJyjkNqKayFju:localhost:8800m.room.create?Q9 !iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_aliasEQ))!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800<Q3 !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels^Q']!hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800:Q/ !hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rulesBQ? !hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility<Q3 !hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access6Q' !hrhDJbmXvXBizKoiiK:localhost:8800m.room.createQ<Q3 !hgjYwwwjWJNgwrzOto:localhost:8800m.room.power_levels^Q']!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@anon-20191002_181700-186:localhost:8800HQ'1!hgjYwwwjWJNgwrzOto:localhost:8800m.room.member@13:localhost:8800:Q/ !hgjYwwwjWJNgwrzOto:localhost:8800m.room.join_rules &t  l. d \  T LE=eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800 deeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800 NeeQ$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800 KeeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800 -eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:88004eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800 WeeQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800 #eeQ$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800 q|eeQ$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho!bnTuVBaAJTPbcYZtRl:localhost:8800ցeeQ$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0!plcvCHNbjCkNMMxnTk:localhost:8800 eeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800WeeQ$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks!XgobMgBjNcDRJnRXLD:localhost:8800UeeQ$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc!kwXxkGQFkaeenFTQJr:localhost:8800<eeQ$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U!hSzBsirdPWHtVjagXn:localhost:8800+eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:88000eeQ$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw!hSzBsirdPWHtVjagXn:localhost:8800-eeQ$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800#eeQ$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800A  S,M 8 u  P (U =Xp.O haNeQ' $1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800m.room.avatareMeQ/ $6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800m.room.encryption_LeQ# $tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.namemJeQ? $_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800m.room.history_visibilityiIeQ7 $x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.related_groups\hOQ3 $157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access\gOQ3 $157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levelsfOQ']$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800joinVeOQ' $157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.createdceQ- $sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800m.room.tombstoneUbOQ% $157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.topicZaOQ/ $157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.server_acls`eQ'+$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.orgban^_OQ7 $157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.related_groupsm^eQ? $4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibilityT]OQ# $157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.namee\eQ/ $u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rulesZ[OQ/ $157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.join_ruleseKeQ/ $UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800m.room.server_aclbYOQ? $157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.history_visibility XeQ']$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800join\WOQ3 $157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.guest_accessaVeQ' $eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.createZUOQ/ $157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.encryptionVTOQ' $157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.avatar\dOQ3 $157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levelsROQ']$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.member@anon-20191002_181700-298:localhost:8800joinVQOQ' $157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800m.room.creategPeQ3 $Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levelsgOeQ3 $gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8!aaRwQZdNAliyvRHpjs:localhost:8800m.room.guest_access  LOQa# $157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1485}{"auth_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}]], "prev_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}]], "type": "m.room.member", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-298", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-298:localhost:8800", "event_id": "$157004178835mLAyG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041788206, "hashes": {"sha256": "P+tiHAKMh9x8LUqZmYaAuyIkraAbObXCVouJYj7O0lE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "voK80ZJMZcRIu5LudnwuM3h8RAZjMEEqzzTB1um1mzZ/WpKoRLrjFvjSKkhHFePMNlYtGZmeXgZR6QTDwNk+AQ"}}, "unsigned": {"age_ts": 1570041788206}} KOQa= $157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1484}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "event_id": "$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII"}, "creator": "@anon-20191002_181700-298:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004178734ZpFdg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041787297, "hashes": {"sha256": "tWbv1df0yurqVFFLdT6kZ0bSsCkcdGfIwpIpqsLlXEM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/YnGCFPfoN2Jqc6BTlvwyoV6EANZCD//U0qFt71IQtCCFNyzOOdx/UyRu0/zxTtORtf54kx5M0eDTbCxRLwYBA"}}, "unsigned": {"age_ts": 1570041787297}}sJeQas$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1483}{"auth_events": ["$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8"], "type": "m.room.power_levels", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"events": {"m.room.history_visibility": 80, "m.room.power_levels": 100, "m.room.encryption": 80, "m.room.name": 80, "m.room.guest_access": 80, "m.room.canonical_alias": 50, "m.room.topic": 80, "m.room.related_groups": 80, "m.room.server_acl": 80, "m.room.join_rules": 80, "m.room.avatar": 80}, "events_default": 0, "kick": 50, "state_default": 50, "users": {"@anon-20191002_181700-298:localhost:8800": 50}, "users_default": 0, "ban": 50, "invite": 0, "redact": 50}, "depth": 14, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041786004, "hashes": {"sha256": "Ho9EwT+mV9O+a90aAhdhQCmpLoJNkEgFlX1g9b0tkxg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5iefrP74kfUH8ZsZTOI9aip7b9X9kJt3U1V5mdUejD0nkemtgTICgCOeR4ztqYojPP9P9vXW3BacBlyVhKZLBw"}}, "unsigned": {"age_ts": 1570041786004, "replaces_state": "$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs"}} bg/ Q  ^ 1X{CbeO/Q ]$157004180752YHMqi:localhost:8800m.room.join_rules!WhqVaRReBxJXADAyYD:localhost:8800m[m@anon-20191002_181700-299:localhost:8800!dO?Q ]$157004180751hMlwg:localhost:8800m.room.history_visibility!WhqVaRReBxJXADAyYD:localhost:8800mmC@anon-20191002_181700-299:localhost:8800cO3Q ]$157004180650ruqIl:localhost:8800m.room.guest_access!WhqVaRReBxJXADAyYD:localhost:8800mȽJmȽ@anon-20191002_181700-299:localhost:8800bO3Q ]$157004180549mJBJB:localhost:8800m.room.power_levels!WhqVaRReBxJXADAyYD:localhost:8800mȺ+mȺ@anon-20191002_181700-299:localhost:8800aO'Q ]$157004180448zlZXD:localhost:8800m.room.member!WhqVaRReBxJXADAyYD:localhost:8800mȷpmȷ@anon-20191002_181700-299:localhost:8800` O'Q  ]$157004180347MMmFf:localhost:8800m.room.create!WhqVaRReBxJXADAyYD:localhost:8800mȱmȳ;@anon-20191002_181700-299:localhost:8800_O3Q ] $157004180346TRucp:localhost:8800m.room.power_levels!BfEFIDBthhkweqfhir:localhost:8800 mȱ2mȱ@anon-20191002_181700-298:localhost:8800#^e-Q ]$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIm.room.tombstone!aaRwQZdNAliyvRHpjs:localhost:8800mrmȭ@anon-20191002_181700-298:localhost:8800]O%Q ] $157004180045QtsUE:localhost:8800m.room.topic!BfEFIDBthhkweqfhir:localhost:8800 mȨmȩ@anon-20191002_181700-298:localhost:8800\O/Q ] $157004179944JKWNJ:localhost:8800m.room.server_acl!BfEFIDBthhkweqfhir:localhost:8800 mȥ6mȦ@anon-20191002_181700-298:localhost:8800 [e'Q ]$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEm.room.member!aLxrqpqLkbzyIxGgpk:localhost:8800mȟmȣ|@anon-20191002_181700-299:localhost:8800ZO7Q ] $157004179843yDrjz:localhost:8800m.room.related_groups!BfEFIDBthhkweqfhir:localhost:8800 mȟmȢ@anon-20191002_181700-298:localhost:8800,Ye?Q ]$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAm.room.history_visibility!aLxrqpqLkbzyIxGgpk:localhost:8800mșmȝ@anon-20191002_181700-299:localhost:8800XO#Q ] $157004179742OaMxS:localhost:8800m.room.name!BfEFIDBthhkweqfhir:localhost:8800 mșmȝ@anon-20191002_181700-298:localhost:8800$We/Q ]$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Mm.room.join_rules!aLxrqpqLkbzyIxGgpk:localhost:8800mȕmȖ@anon-20191002_181700-299:localhost:8800VO/Q ]$157004179541PbBIm:localhost:8800m.room.join_rules!BfEFIDBthhkweqfhir:localhost:8800mȔ%mȖ"@anon-20191002_181700-298:localhost:8800&Ue3Q ]$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkm.room.power_levels!aLxrqpqLkbzyIxGgpk:localhost:8800mȎmȑ@anon-20191002_181700-299:localhost:8800!TO?Q ]$157004179340NSiie:localhost:8800m.room.history_visibility!BfEFIDBthhkweqfhir:localhost:8800mȍmȏ@anon-20191002_181700-298:localhost:8800 Se'Q ]$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYm.room.member!aLxrqpqLkbzyIxGgpk:localhost:8800mȉ&mȌt@anon-20191002_181700-299:localhost:8800RO3Q ]$157004179239LLqht:localhost:8800m.room.guest_access!BfEFIDBthhkweqfhir:localhost:8800mȈmȊz@anon-20191002_181700-298:localhost:8800Q e'Q  ]$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQm.room.create!aLxrqpqLkbzyIxGgpk:localhost:8800mȅfmȆ@anon-20191002_181700-299:localhost:8800PO/Q ]$157004179138NbBYh:localhost:8800m.room.encryption!BfEFIDBthhkweqfhir:localhost:8800mȅemȆ@anon-20191002_181700-298:localhost:8800OO'Q ] $157004179037FGMFG:localhost:8800m.room.avatar!BfEFIDBthhkweqfhir:localhost:8800mȁmȂz@anon-20191002_181700-298:localhost:8800NO3Q ]$157004178936zuJSX:localhost:8800m.room.power_levels!BfEFIDBthhkweqfhir:localhost:8800m{%m|$@anon-20191002_181700-298:localhost:8800MO'Q ]$157004178835mLAyG:localhost:8800m.room.member!BfEFIDBthhkweqfhir:localhost:8800mw.mw@anon-20191002_181700-298:localhost:8800 E q 8 T  p 7 S o6So6So6R n5 TQUq8  8e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257ssha2568e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egsha2568e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8sha2568e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEsha2568e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4sha2568e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8sha256 8e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwsha256 8e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xssha256X8e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUsha256 Z8e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Qsha2568e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYsha256R8e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVksha2568e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wsha256C8e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMsha256 F8e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAsha256 8e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwsha2568e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Ysha2568e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNhosha2568e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPssha2568e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGcsha256 8e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0sha2568e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQsha2568e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptssha256 8e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvssha256J7e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgsha256l8e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Esha2568e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0sha256 8e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSAsha256?8e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMsha256 8e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Esha256 8e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4sha256 8e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKssha2567e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDosha256b8e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyEsha256}8e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEsha256k8e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8sha256 <8e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIsha2568e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0Isha2568e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Qsha256 z8e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_Asha2568e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvosha25658e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Esha256(8e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8sha25698e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4sha256 i8e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4sha2568e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwsha2568e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7osha256 8e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wsha2568e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEsha2568e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXosha256K8e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMsha256/8e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4sha2568e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAsha2568e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUsha2568e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Cksha2567e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiYsha2568e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2Usha256L8e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcsha2568e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigsha2568e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPgsha256 8e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLYsha25608e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAsha256 8e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYsha2568e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkIsha256 R8e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8sha256P8e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLYsha2568e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIksha256 s8e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4sha256T8e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Isha256  qoOOQa $157004179138NbBYh:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1488}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179037FGMFG:localhost:8800", {"sha256": "2cfEx1QVppclWCKZ8S/N5f/X/++2/yaUAO4wRdzqrJs"}]], "type": "m.room.encryption", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"algorithm": "m.megolm.v1.aes-sha2"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004179138NbBYh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041791845, "hashes": {"sha256": "65itMVWAuSjxxx1VAULXkLg1cx/F/Tmec8td/8UPgx8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aex7t3uE+6vQonbknJO7HSYkztQ5fk6+Q7n9cSQ8c1Hi6K5bHZ+uZz7n2X0/cTtTso5sHAe//ODHgW8Hw5ayDw"}}, "unsigned": {"age_ts": 1570041791845}}aNOQag $157004179037FGMFG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1487}{"auth_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}], ["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}]], "prev_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}]], "type": "m.room.avatar", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"url": "http://something"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004179037FGMFG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041790887, "hashes": {"sha256": "OAQ1TuVkoDNJQ4vW//TQeTmy8E3kx+TsqqbY5PGBoP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "riHhY0MmOOQyBZTTEAMh2parTVfNCH68TrbZxBAaTFS3nLxcAB2W3kFwytoXaBIzpEl4ZjIK+60Kn0Ugj6d1Cg"}}, "unsigned": {"age_ts": 1570041790887}}&MOQaq $157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1486}{"auth_events": [["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "type": "m.room.power_levels", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"users": {"@anon-20191002_181700-298:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004178936zuJSX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041789221, "hashes": {"sha256": "/iSdJ2/KDxZGo3oC6fwpiPylx2UB3WI7jlikZK+UotQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njSuRz/ph3VNLN4oMpJ+B+H7x4fW9M0QG9oUsyUBqISwfYqagIr4f6OEUSbLsPY6Mod6a370FYh5FuJS2PhRAg"}}, "unsigned": {"age_ts": 1570041789221}} 1l]c t  z . ? [  w +}&x!~2NTOJPlIQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183365ZxPWz:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183264ktTbL:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183063NdEPw:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183062AwGkL:localhost:8800TQe!uSBqTezaFcMnlowsEf:localhost:8800$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigTQe!uSBqTezaFcMnlowsEf:localhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgTQe!uSBqTezaFcMnlowsEf:localhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknATQe!uSBqTezaFcMnlowsEf:localhost:8800$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DETQe!uSBqTezaFcMnlowsEf:localhost:8800$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UT~Qe!uSBqTezaFcMnlowsEf:localhost:8800$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUT}Qe!uSBqTezaFcMnlowsEf:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwT|Qe!uSBqTezaFcMnlowsEf:localhost:8800$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4T{Qe!CNFopUEQTFbzjmLvii:localhost:8800$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoTzQe!CNFopUEQTFbzjmLvii:localhost:8800$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAIyQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004182060gAdxi:localhost:8800IxQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181959Afmmv:localhost:8800IwQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181958ixShg:localhost:8800IvQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181857fcmAB:localhost:8800IuQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181756ejZNp:localhost:8800ItQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181655JUAvO:localhost:8800TsQe!CNFopUEQTFbzjmLvii:localhost:8800$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkTrQe!CNFopUEQTFbzjmLvii:localhost:8800$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUTqQe!CNFopUEQTFbzjmLvii:localhost:8800$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcTpQe!CNFopUEQTFbzjmLvii:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AoToQe!CNFopUEQTFbzjmLvii:localhost:8800$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wTnQe!aLxrqpqLkbzyIxGgpk:localhost:8800$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQTmQe!aLxrqpqLkbzyIxGgpk:localhost:8800$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwIlQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180853KmrHT:localhost:8800IkQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180752YHMqi:localhost:8800IjQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180751hMlwg:localhost:8800IiQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180650ruqIl:localhost:8800IhQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180549mJBJB:localhost:8800IgQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180448zlZXD:localhost:8800IfQO!WhqVaRReBxJXADAyYD:localhost:8800$157004180347MMmFf:localhost:8800IeQO!BfEFIDBthhkweqfhir:localhost:8800$157004180346TRucp:localhost:8800TdQe!aaRwQZdNAliyvRHpjs:localhost:8800$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIIcQO!BfEFIDBthhkweqfhir:localhost:8800$157004180045QtsUE:localhost:8800IbQO!BfEFIDBthhkweqfhir:localhost:8800$157004179944JKWNJ:localhost:8800TaQe!aLxrqpqLkbzyIxGgpk:localhost:8800$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEI`QO!BfEFIDBthhkweqfhir:localhost:8800$157004179843yDrjz:localhost:8800T_Qe!aLxrqpqLkbzyIxGgpk:localhost:8800$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEAI^QO!BfEFIDBthhkweqfhir:localhost:8800$157004179742OaMxS:localhost:8800T]Qe!aLxrqpqLkbzyIxGgpk:localhost:8800$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597MI\QO!BfEFIDBthhkweqfhir:localhost:8800$157004179541PbBIm:localhost:8800T[Qe!aLxrqpqLkbzyIxGgpk:localhost:8800$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkIZQO!BfEFIDBthhkweqfhir:localhost:8800$157004179340NSiie:localhost:8800TYQe!aLxrqpqLkbzyIxGgpk:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYIXQO!BfEFIDBthhkweqfhir:localhost:8800$157004179239LLqht:localhost:8800TWQe!aLxrqpqLkbzyIxGgpk:localhost:8800$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ  ,rSOQa $157004179340NSiie:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1492}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179239LLqht:localhost:8800", {"sha256": "6wruXreAV3rz+txiP61NWxBCnNeszc7qB0tSru6I/HY"}]], "type": "m.room.history_visibility", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004179340NSiie:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041793996, "hashes": {"sha256": "hmZ0pmtmbcjVkYtHpAKrsaBpJGpSXCGROgAD6iBmGw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CDVedlnDXCJ67+lv/nG+8XPYm1HNtegi/75C/iBEAFCQAWnNMTsce9N9aK34hInaI3XcwT/9cJUMWLJZtt9kAw"}}, "unsigned": {"age_ts": 1570041793996}}vReQay$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1491}{"auth_events": ["$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ"], "prev_events": ["$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ"], "type": "m.room.member", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-299", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-299:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041792806, "hashes": {"sha256": "Q9KO49oDveyguSdosf5L/hm2aXzJnP11Np6zvbkm62k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GyILJXDVcaxneZEPvP26NQCiqhS8494pcgyCiPGQyj6s9QY6BFqIGRwvlrBSZifsrpvVC2pFpZE3px/pX7anAw"}}, "unsigned": {"age_ts": 1570041792806}}iQOQaw $157004179239LLqht:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1490}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179138NbBYh:localhost:8800", {"sha256": "05u1Xem/m7IA7ULolNVDH50dB7JHfQWsjwRMJEsgQaU"}]], "type": "m.room.guest_access", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"guest_access": "forbidden"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004179239LLqht:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041792699, "hashes": {"sha256": "y7Xgu8rB1Md6OYcdQ3z8/PxawdZH4B6cFo1QCiEj1DE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gn8PVsmykHhV32iE9CxqZ8S1n77fTAG83wLp2MeJYvp7AQZgTcrxIDYb03YcOQMq0b9IHgoGT1mcto0bpWrnAg"}}, "unsigned": {"age_ts": 1570041792699}}iPeQa_$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1489}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-299:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041791846, "hashes": {"sha256": "BNNVcXhMMqp7c5JbMx0AMJo6Tw4+GMFSpOZCXHmzS0g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5RWHLYIopc1o8xKIU1SJFVpNDshMso1czH1darjbYRDIxTKu/r0P250lMr27smGC2z1RZsKZJGJUhUArRrGYAA"}}, "unsigned": {"age_ts": 1570041791846}} LaU#/uC{8I a D 5 } K j / >g  o[ S=O !  )p [ v )  pIa21e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog T1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ey1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgC1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQox1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA u1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww|1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI J1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yu1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoj01e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQR1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod481e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eg0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgy1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE_1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF490e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ%1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0a1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo#1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ R1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0t1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawF1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA q1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ j1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0a1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo_1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkN1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE vM +D  ]oj8p>  v D\  | J  7 Q   =| W % *V$PJc1i1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-431e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ V1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo C1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM *1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc 1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ Q1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA 1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegz1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 <1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 X1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8X1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz811e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w{1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0d1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IV1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg=1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A&1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4<1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo Y1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y .1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA m1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss^0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30F1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRED1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUm1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEX1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0)1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4<1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A?1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYj1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg2 LaU#/uC{8I a D 5 } K j / >g  o[ S=O !  )p [ v )  pIa21e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog T1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ey1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgC1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQox1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA u1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww|1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI J1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yu1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoj01e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQR1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod481e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eg0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgy1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE_1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF490e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ%1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0a1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo#1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ P1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0t1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawF1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA o1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ h1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0[1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCoY1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkH1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE KUi7[I)o= duC { ^j18 ,># p v D  O | J  P  X & 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAkw1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIr1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocd1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8S1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwC1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu80e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMX1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI91e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8H1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo#1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU;1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk{ 21e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQF1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4A1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc 1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw m 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY #1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ ]1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg 1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ @ 21e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF440e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ#1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 31e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4P21e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY>1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc k1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo <1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2Mk1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Yk1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 >1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk#1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA01e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAH *0Hp(Px0p(P x 0 X  8 `  @h ~6^>EZ]=@anon-20191002_181700-298:localhost:8800anon-20191002_181700-298EY]=@anon-20191002_181700-297:localhost:8800anon-20191002_181700-297EX]=@anon-20191002_181700-296:localhost:8800anon-20191002_181700-296EW]=@anon-20191002_181700-295:localhost:8800anon-20191002_181700-295EV]=@anon-20191002_181700-294:localhost:8800anon-20191002_181700-294EU]=@anon-20191002_181700-292:localhost:8800anon-20191002_181700-292ET]=@anon-20191002_181700-291:localhost:8800anon-20191002_181700-291ES]=@anon-20191002_181700-290:localhost:8800anon-20191002_181700-290ER]=@anon-20191002_181700-289:localhost:8800anon-20191002_181700-289EQ]=@anon-20191002_181700-288:localhost:8800anon-20191002_181700-288EP]=@anon-20191002_181700-287:localhost:8800anon-20191002_181700-287EO]=@anon-20191002_181700-286:localhost:8800anon-20191002_181700-286Ex]=@anon-20191002_181700-333:localhost:8800anon-20191002_181700-333Ew]=@anon-20191002_181700-332:localhost:8800anon-20191002_181700-332Ev]=@anon-20191002_181700-331:localhost:8800anon-20191002_181700-331Eu]=@anon-20191002_181700-330:localhost:8800anon-20191002_181700-330Et]=@anon-20191002_181700-329:localhost:8800anon-20191002_181700-329Es]=@anon-20191002_181700-328:localhost:8800anon-20191002_181700-328Er]=@anon-20191002_181700-327:localhost:8800anon-20191002_181700-327Eq]=@anon-20191002_181700-326:localhost:8800anon-20191002_181700-326Ep]=@anon-20191002_181700-325:localhost:8800anon-20191002_181700-325Eo]=@anon-20191002_181700-324:localhost:8800anon-20191002_181700-324En]=@anon-20191002_181700-323:localhost:8800anon-20191002_181700-323Em]=@anon-20191002_181700-322:localhost:8800anon-20191002_181700-322El]=@anon-20191002_181700-321:localhost:8800anon-20191002_181700-321Ek]=@anon-20191002_181700-320:localhost:8800anon-20191002_181700-320Ej]=@anon-20191002_181700-319:localhost:8800anon-20191002_181700-319Ei]=@anon-20191002_181700-318:localhost:8800anon-20191002_181700-318Eh]=@anon-20191002_181700-317:localhost:8800anon-20191002_181700-317Eg]=@anon-20191002_181700-312:localhost:8800anon-20191002_181700-312Ef]=@anon-20191002_181700-311:localhost:8800anon-20191002_181700-311Ee]=@anon-20191002_181700-310:localhost:8800anon-20191002_181700-310Ed]=@anon-20191002_181700-308:localhost:8800anon-20191002_181700-308Ec]=@anon-20191002_181700-307:localhost:8800anon-20191002_181700-307Eb]=@anon-20191002_181700-306:localhost:8800anon-20191002_181700-306Ea]=@anon-20191002_181700-305:localhost:8800anon-20191002_181700-305E`]=@anon-20191002_181700-304:localhost:8800anon-20191002_181700-304E_]=@anon-20191002_181700-303:localhost:8800anon-20191002_181700-303E^]=@anon-20191002_181700-302:localhost:8800anon-20191002_181700-302E]]=@anon-20191002_181700-301:localhost:8800anon-20191002_181700-301E\]=@anon-20191002_181700-300:localhost:8800anon-20191002_181700-300E[]=@anon-20191002_181700-299:localhost:8800anon-20191002_181700-299 Oe>cmB i '  H}R : T)8 k@ L ! w # y N P % < {oDgqFe> u J*Q!atnRTMliktaVUhMVID:localhost:8800 *Q!atnRTMliktaVUhMVID:localhost:8800 *Q!atnRTMliktaVUhMVID:localhost:8800  *Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aiOswwhoZqjhcjzbzc:localhost:8800``*Q!aiOswwhoZqjhcjzbzc:localhost:8800]]*Q!anErKtXIsVKEEsrzWM:localhost:8800SS*Q!anErKtXIsVKEEsrzWM:localhost:8800OO*Q!aZwMKYDXJRlSKjQNWM:localhost:880033*Q!aZwMKYDXJRlSKjQNWM:localhost:880022*Q!aZwMKYDXJRlSKjQNWM:localhost:880011*Q!aZwMKYDXJRlSKjQNWM:localhost:880000*Q!aiOswwhoZqjhcjzbzc:localhost:8800[[*Q!bLWyXaXdvUhdSAooUz:localhost:8800 + +*Q!bNSXSTadOMhIrYpMzH:localhost:8800yy*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aZwMKYDXJRlSKjQNWM:localhost:880066*Q!aZwMKYDXJRlSKjQNWM:localhost:880055*Q!aZwMKYDXJRlSKjQNWM:localhost:880044*Q!aiOswwhoZqjhcjzbzc:localhost:8800\\*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800vv*Q!bNSXSTadOMhIrYpMzH:localhost:8800uu*Q!bNSXSTadOMhIrYpMzH:localhost:8800tt*Q!bNSXSTadOMhIrYpMzH:localhost:8800ss*Q!anErKtXIsVKEEsrzWM:localhost:8800PP*Q!bNSXSTadOMhIrYpMzH:localhost:8800ww+*Q!aiOswwhoZqjhcjzbzc:localhost:8800pp*Q!bNSXSTadOMhIrYpMzH:localhost:8800||*Q!bNSXSTadOMhIrYpMzH:localhost:8800{{*Q!bNSXSTadOMhIrYpMzH:localhost:8800zz s*Q!aknLNLxfChlLvFYhkJ:localhost:8800 J*Q!aiOswwhoZqjhcjzbzc:localhost:8800bb*Q!aiOswwhoZqjhcjzbzc:localhost:8800ii*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!aiOswwhoZqjhcjzbzc:localhost:8800^^*Q!aiOswwhoZqjhcjzbzc:localhost:8800aa*Q!bLWyXaXdvUhdSAooUz:localhost:8800 * **Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) )*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( (*Q!bLWyXaXdvUhdSAooUz:localhost:8800 , ,*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ' '*Q!atnRTMliktaVUhMVID:localhost:8800  *Q!anErKtXIsVKEEsrzWM:localhost:8800NN*Q!aiOswwhoZqjhcjzbzc:localhost:8800__*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800*Q!atnRTMliktaVUhMVID:localhost:8800  *Q!atnRTMliktaVUhMVID:localhost:8800  *Q!anErKtXIsVKEEsrzWM:localhost:8800RR*Q!anErKtXIsVKEEsrzWM:localhost:8800QQ*Q!bNSXSTadOMhIrYpMzH:localhost:8800xx "*( R f d # !5_]q0ZXlh.OOQ$157004180346TRucp:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h-OOQ$157004180346TRucp:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h,OOQ$157004180346TRucp:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~+eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw!aaRwQZdNAliyvRHpjs:localhost:8800~*eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800~)eeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0!aaRwQZdNAliyvRHpjs:localhost:8800h(OOQ$157004180045QtsUE:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h'OOQ$157004180045QtsUE:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h&OOQ$157004180045QtsUE:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h%OOQ$157004179944JKWNJ:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h$OOQ$157004179944JKWNJ:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h#OOQ$157004179944JKWNJ:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~"eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~!eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~ eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179843yDrjz:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179843yDrjz:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179843yDrjz:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179742OaMxS:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179742OaMxS:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179742OaMxS:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179541PbBIm:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179541PbBIm:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800hOOQ$157004179541PbBIm:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800~eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~eeQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800hOOQ$157004179340NSiie:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800h OOQ$157004179340NSiie:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800  ,tVeQau$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1495}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk"], "type": "m.room.join_rules", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041795858, "hashes": {"sha256": "oIlPUKhmrvaH+/Fu+EfVd1g4vHHVr0OM6cNnWS0wYU4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZkZ/tO3TlQvaqU43V+GWFWPJ1WAi98hBQ1sdycsHMun7fsDpuU+pgHsOVEAM3RKI3KQw2AilNbDL4wU1w3SfBA"}}, "unsigned": {"age_ts": 1570041795858}}aUOQag $157004179541PbBIm:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1494}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179340NSiie:localhost:8800", {"sha256": "0j7PuUBjw2Yotvrs4WMZu2hXyW4I3xM08mybYI19fqo"}]], "type": "m.room.join_rules", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"join_rule": "public"}, "depth": 8, "prev_state": [], "state_key": "", "event_id": "$157004179541PbBIm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041795621, "hashes": {"sha256": "dcKZ0aiIi1wp+dzPHmFmIMXDnIzjlxZRsde33HkC6iA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DAoalQsduiTbswm1z03CjIpWhct3XPrYQOF9/X8A0sCUGWtLcVMtuOf8tPePyId0AFvyNmU9PaZbA1w80JLtAg"}}, "unsigned": {"age_ts": 1570041795621}}kTeQac$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1493}{"auth_events": ["$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "type": "m.room.power_levels", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"users": {"@anon-20191002_181700-299:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041794303, "hashes": {"sha256": "1HOBKuCUzUR+vUt0zgEmuN+pPKnm5/6Fl2Y1YjAVPXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T+/uHRS9SjBHFXkGYjV9C968ydX3ULlMFl/v/NfhV/4CDuuFOa9mGvYL6vI30+BxyqYz0u02x/QbD4eNusFnAw"}}, "unsigned": {"age_ts": 1570041794303}} |t  l d \ U ME=5-%eeQ$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI$09CrIrqKFA-MBn6C6icRcCOX_-sd5oqW1hREp_hkltY!msMfSdLIAvklSSAnci:localhost:8800eeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800 xeeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI!vttkrtSyHEJXVMlvLo:localhost:8800ieeQ$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800)eeQ$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800eeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc!aHyAJEOSdKqTiRjOvw:localhost:8800]eeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8!eWRdwtyqHvuxZFvhNS:localhost:8800JeeQ$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800 eeQ$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800 #eeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800FeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800PeeQ$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA!quaZwrGnzbNWhwAOYB:localhost:8800TeeQ$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc!jYzridjeihmwPBuwLb:localhost:8800DeeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800 oeeQ$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo!aWvVRVaDflYyyGTOdD:localhost:8800HeeQ$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw!ILbUVZOfPPwaZRrKJd:localhost:8800eeQ$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU!HmkcAMkMjWRhTDJMsy:localhost:88003eeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800eeQ$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U0!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4!XNfwczePlyYFWLCaui:localhost:8800r % %}ZeQa$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1499}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA"], "type": "m.room.member", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "ban"}, "depth": 6, "prev_state": [], "state_key": "@bob:matrix.org", "origin": "localhost:8800", "origin_server_ts": 1570041798630, "hashes": {"sha256": "xrgpNOf0J/nBrKLEaxaCVqLXDELDeQY73u9+I3+P+mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7XAB4mIxVuQ/Rc/TvvRKHn8KYaL7cGkaJqx74vF5wVXEma4Ln0A8A05jpY+4eE5UEMv0EEpKCDZNtLMSQjNGDg"}}, "unsigned": {"age_ts": 1570041798630}}uYOQa $157004179843yDrjz:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1498}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179742OaMxS:localhost:8800", {"sha256": "DNDBnaWjP3TCa9PYRROKRDW7bbT8X9KmodEUihF+5vM"}]], "type": "m.room.related_groups", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"groups": ["+something:example.org"]}, "depth": 10, "prev_state": [], "state_key": "", "event_id": "$157004179843yDrjz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041798627, "hashes": {"sha256": "ExO3KBnQQ727lEe4gUHOBIKr2dFI+RM9HqzEZ9Vpouo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HK+OIZ+rzIe92ZNLi2ct7YGwbZrDOvpwfxv2+STSErGC2NcyPNhVLv0Yj7wwQ8eQKd8I+r4XR0c3Z9NuqCtPCg"}}, "unsigned": {"age_ts": 1570041798627}}XeQa$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1497}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M"], "type": "m.room.history_visibility", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041797097, "hashes": {"sha256": "hZKIjHxcX03KFfrsZKq/w7q98Bak8Nwri/GhbUFnyF4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "176ap8VgwuDm8/NU5+go9WoUVxn0qyPxQ6YkWF7IuU1h8U/VCXvlUkSbl42WNXqKQogcZ8z04BsmkrUJCnfrDw"}}, "unsigned": {"age_ts": 1570041797097}}TWOQaM $157004179742OaMxS:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1496}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179541PbBIm:localhost:8800", {"sha256": "hQaQhLe0Lcop26sMTKOkPsTMpefk3gPgmmXp6J3+XxI"}]], "type": "m.room.name", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"name": "name"}, "depth": 9, "prev_state": [], "state_key": "", "event_id": "$157004179742OaMxS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041797003, "hashes": {"sha256": "DG2BzP4pIRsPo44o8hr3MLyg34qkfnRh1R8BBYauoqc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ksrPDOy5RQTrFRZm2HHeAM2FRSn41VKu8JVB5WRPwO4Ri3C99I6FRFmPXBVFY6hsmSLnLJmbWyj2k245cdR7CQ"}}, "unsigned": {"age_ts": 1570041797003}} A _A>]eQa $sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800{"token_id": 318, "stream_ordering": 1502}{"auth_events": ["$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0", "$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk", "$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw"], "prev_events": ["$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0"], "type": "m.room.tombstone", "room_id": "!aaRwQZdNAliyvRHpjs:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!BfEFIDBthhkweqfhir:localhost:8800"}, "depth": 15, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041787091, "hashes": {"sha256": "SWS3oipO4H7S0QQczpODDltdtpjk4Rh5LtJ6CuA5Psw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sOHXz+ixdiVDWmGMZmydVpnJGv5v3QsYztMVU/XLZfOK+QpdYLIEHRz7pgLGsRMmgjWT9eDGsCsP6qfzKMqfBg"}}, "unsigned": {"age_ts": 1570041787091}}X\OQaU $157004180045QtsUE:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1501}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179944JKWNJ:localhost:8800", {"sha256": "gKZYEUGhZm4hb86ZdogYkqQtP3mCsHBzZaJWoJ0eI5o"}]], "type": "m.room.topic", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"topic": "topic"}, "depth": 12, "prev_state": [], "state_key": "", "event_id": "$157004180045QtsUE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041800855, "hashes": {"sha256": "E56qh4kVL0OaD1pa1XwTTDR5+Z855lp0Gx6SEAdmY7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/rpMv8C+RJeAgznXN13PBhg/sOStXkJEbYjvhrPf79UMNML42WzvEy2+g1kLPNr3znVHsjhfLfFJ77oEkCOICQ"}}, "unsigned": {"age_ts": 1570041800855}}[OQa_ $157004179944JKWNJ:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1500}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004179843yDrjz:localhost:8800", {"sha256": "cycuTfCPdfoYRuJCf7CLA2FI4irhN3qB3oryO7T2RH8"}]], "type": "m.room.server_acl", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"allow": ["*"], "deny": ["*.evil.com", "evil.com"], "allow_ip_literals": "false"}, "depth": 11, "prev_state": [], "state_key": "", "event_id": "$157004179944JKWNJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041799990, "hashes": {"sha256": "JuKgVly0n9cGP+Xm4OwWM98RQbKsNfQvmRM8bpFUr0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YjqGJSTmOxmqG0lj6zt0BF/2xsBpfba+vbB9oaFTaeCHkLXMfDbe0dcAi/6wd4jG3net1xJdndcCfwlQxwXpDw"}}, "unsigned": {"age_ts": 1570041799990}} %t+o ) c ' 7 a+F~R]+StQ']O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$157004183063NdEPw:localhost:8800XQ' O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.create$157004183062AwGkL:localhost:8800fQ- e!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstone$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBElQ9 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigrQ))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hgr Q))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAo Q? e!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibility$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEg Q/ e!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rules$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8Ui Q3 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU Q']e!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwcQ' e!uSBqTezaFcMnlowsEf:localhost:8800m.room.create$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4^Q3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels$157004182361NlgQV:localhost:8800iQ3 e!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo\Q/ O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rules$157004182060gAdxi:localhost:8800dQ? O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility$157004181959Afmmv:localhost:8800^Q3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access$157004181958ixShg:localhost:8800^Q3 O~!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels$157004181857fcmAB:localhost:8800Q']O}!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$157004181756ejZNp:localhost:8800XQ' O|!NrxQuziwSWzsHuXIlG:localhost:8800m.room.create$157004181655JUAvO:localhost:8800fQ- e{!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstone$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAo~Q? ez!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibility$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkg}Q/ ey!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUi|Q3 ex!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc {Q']ew!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao^zQ3 Ov!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels$157004181254abDEV:localhost:8800cyQ' eu!CNFopUEQTFbzjmLvii:localhost:8800m.room.create$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wixQ3 et!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQgwQ'+Os!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.org$157004180853KmrHT:localhost:8800\vQ/ Or!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rules$157004180752YHMqi:localhost:8800duQ? Oq!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility$157004180751hMlwg:localhost:8800^tQ3 Op!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access$157004180650ruqIl:localhost:8800^sQ3 Oo!WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levels$157004180549mJBJB:localhost:8800rQ']On!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800$157004180448zlZXD:localhost:8800XqQ' Om!WhqVaRReBxJXADAyYD:localhost:8800m.room.create$157004180347MMmFf:localhost:8800^pQ3 Ol!BfEFIDBthhkweqfhir:localhost:8800m.room.power_levels$157004180346TRucp:localhost:8800foQ- ek!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstone$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwinQ3 ej!aaRwQZdNAliyvRHpjs:localhost:8800m.room.power_levels$Gn7wtV0iWwMPsZPtWJtusSChoJvnWZRBzM4A_qmzY30  `OQa# $157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1505}{"auth_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}]], "prev_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}]], "type": "m.room.member", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-299", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-299:localhost:8800", "event_id": "$157004180448zlZXD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041804656, "hashes": {"sha256": "fDUg2iPHXbP726rb+Ia0V+TxST7XXdLwpGC7N+tomzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9SsorTTOU+RSKLME/6/W6Jsov/1i1N7PePxv6Fdbgn445AxVB1E6w9/AbqSpumX4DdFmJ1NgtCoWLCrezdAkCA"}}, "unsigned": {"age_ts": 1570041804656}} _OQa= $157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1504}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "event_id": "$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw"}, "creator": "@anon-20191002_181700-299:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004180347MMmFf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041803251, "hashes": {"sha256": "lr+id3P0rLemjwKTfjQnrfYwM5ZFN+M+VtZdMFqJSv4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AHp8sP981meqaiOxoYexLInILTg+eCQbuB3Zr9KrlFq5H5Ns6IwGv93oSQblideQhmaLMqeW9PI74lrwCeoaAg"}}, "unsigned": {"age_ts": 1570041803251}}U^OQaO $157004180346TRucp:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800{"token_id": 318, "stream_ordering": 1503}{"auth_events": [["$157004178936zuJSX:localhost:8800", {"sha256": "/5PQFT4e5hzPHc3ZuhFS/CHcif0mf+MJAjnW69XlLd4"}], ["$157004178734ZpFdg:localhost:8800", {"sha256": "E5db2G5Rm/cl6s39POVxVleeiSVz13b7arOJn7qETo0"}], ["$157004178835mLAyG:localhost:8800", {"sha256": "pGeSiODOB+lSkRx8dwJtYQlLzNp0U77VWrekJXFLnoY"}]], "prev_events": [["$157004180045QtsUE:localhost:8800", {"sha256": "nY/tnxm3TNhIK62guRQtdMjwgMaheSX0n/DigE3LPe0"}]], "type": "m.room.power_levels", "room_id": "!BfEFIDBthhkweqfhir:localhost:8800", "sender": "@anon-20191002_181700-298:localhost:8800", "content": {"events": {"m.room.history_visibility": 80, "m.room.power_levels": 100, "m.room.encryption": 80, "m.room.name": 80, "m.room.guest_access": 80, "m.room.canonical_alias": 50, "m.room.topic": 80, "m.room.related_groups": 80, "m.room.server_acl": 80, "m.room.join_rules": 80, "m.room.avatar": 80}, "events_default": 0, "kick": 50, "state_default": 50, "users": {"@anon-20191002_181700-298:localhost:8800": 50}, "users_default": 0, "ban": 50, "invite": 0, "redact": 50}, "depth": 13, "prev_state": [], "state_key": "", "event_id": "$157004180346TRucp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041803058, "hashes": {"sha256": "ADLjDhfgu99BMyCneq/J7rE/if+RZR8ZZ1zJbUkGa7U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7QoS1p2atW5HL6hQbBZ4JRGcg4E39787Tz+lwzZnAvS5+BUV8An0+xPA8OkG9ppVGh61CXb4wQqadUpQyahuAQ"}}, "unsigned": {"age_ts": 1570041803058, "replaces_state": "$157004178936zuJSX:localhost:8800"}} "*T ~  = g & :86420.,VhPOOQ$157004181958ixShg:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hOOOQ$157004181857fcmAB:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hNOOQ$157004181857fcmAB:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hMOOQ$157004181756ejZNp:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800~LeeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~KeeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~JeeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800~IeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~HeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~GeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800~FeeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~EeeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~DeeQ$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~CeeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~BeeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~AeeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800~@eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY!aLxrqpqLkbzyIxGgpk:localhost:8800~?eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800~>eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk!aLxrqpqLkbzyIxGgpk:localhost:8800h=OOQ$157004180853KmrHT:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h<OOQ$157004180853KmrHT:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h;OOQ$157004180853KmrHT:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h:OOQ$157004180752YHMqi:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h9OOQ$157004180752YHMqi:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h8OOQ$157004180752YHMqi:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h7OOQ$157004180751hMlwg:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h6OOQ$157004180751hMlwg:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h5OOQ$157004180751hMlwg:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h4OOQ$157004180650ruqIl:localhost:8800$157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h3OOQ$157004180650ruqIl:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h2OOQ$157004180650ruqIl:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h1OOQ$157004180549mJBJB:localhost:8800$157004180448zlZXD:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h0OOQ$157004180549mJBJB:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800h/OOQ$157004180448zlZXD:localhost:8800$157004180347MMmFf:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800 i1 P W y+)Zy#e-Q ]$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qm.room.tombstone!EyyNoldCLUdFHzXTDP:localhost:8800mWmg@anon-20191002_181700-302:localhost:8800O/Q ]$157004184976eGgUf:localhost:8800m.room.join_rules!icheSPMgpemswIdQkw:localhost:8800me=me@anon-20191002_181700-302:localhost:8800!O?Q ]$157004184875Wzayo:localhost:8800m.room.history_visibility!icheSPMgpemswIdQkw:localhost:8800mbymb@anon-20191002_181700-302:localhost:8800O3Q ]$157004184774CHMNl:localhost:8800m.room.guest_access!icheSPMgpemswIdQkw:localhost:8800m`m`X@anon-20191002_181700-302:localhost:8800O3Q ]$157004184773rCaRK:localhost:8800m.room.power_levels!icheSPMgpemswIdQkw:localhost:8800m]Lm]@anon-20191002_181700-302:localhost:8800O'Q ]$157004184672SfwvS:localhost:8800m.room.member!icheSPMgpemswIdQkw:localhost:8800mZ-mZ@anon-20191002_181700-302:localhost:8800 O'Q  ]$157004184571IVgQM:localhost:8800m.room.create!icheSPMgpemswIdQkw:localhost:8800mW~mX@anon-20191002_181700-302:localhost:8800,e?Q ]$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0m.room.history_visibility!EyyNoldCLUdFHzXTDP:localhost:8800mQmS`@anon-20191002_181700-302:localhost:8800$ e/Q ]$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMm.room.join_rules!EyyNoldCLUdFHzXTDP:localhost:8800mNmO@anon-20191002_181700-302:localhost:8800& e3Q ]$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjom.room.power_levels!EyyNoldCLUdFHzXTDP:localhost:8800mKmL@anon-20191002_181700-302:localhost:8800 e'Q ]$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qm.room.member!EyyNoldCLUdFHzXTDP:localhost:8800mFmI@anon-20191002_181700-302:localhost:8800& e3Q ] $m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Ym.room.power_levels!uSBqTezaFcMnlowsEf:localhost:8800 mD mE@anon-20191002_181700-301:localhost:8800  e'Q  ]$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4m.room.create!EyyNoldCLUdFHzXTDP:localhost:8800m@mA@anon-20191002_181700-302:localhost:8800O)Q ]$157004183969fQFzs:localhost:8800m.room.aliases!vpuivIQDEhyuhOLWpg:localhost:8800m@mA@anon-20191002_181700-301:localhost:8800O9Q ]$157004183868QRvOi:localhost:8800m.room.canonical_alias!vpuivIQDEhyuhOLWpg:localhost:8800m:m<@anon-20191002_181700-301:localhost:8800!e)Q ] $I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8m.room.aliases!uSBqTezaFcMnlowsEf:localhost:8800 m6m7@anon-20191002_181700-301:localhost:8800)e9Q ] $s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2om.room.canonical_alias!uSBqTezaFcMnlowsEf:localhost:8800 m3Em3@anon-20191002_181700-301:localhost:8800#e-Q ] $99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEm.room.tombstone!uSBqTezaFcMnlowsEf:localhost:8800 mm/@anon-20191002_181700-301:localhost:8800O/Q ]$157004183467WkNdH:localhost:8800m.room.join_rules!vpuivIQDEhyuhOLWpg:localhost:8800m,m-_@anon-20191002_181700-301:localhost:8800!O?Q ]$157004183366iKFsz:localhost:8800m.room.history_visibility!vpuivIQDEhyuhOLWpg:localhost:8800m)m*I@anon-20191002_181700-301:localhost:8800O3Q ]$157004183365ZxPWz:localhost:8800m.room.guest_access!vpuivIQDEhyuhOLWpg:localhost:8800m'1m'@anon-20191002_181700-301:localhost:8800O3Q ]$157004183264ktTbL:localhost:8800m.room.power_levels!vpuivIQDEhyuhOLWpg:localhost:8800m$ m$@anon-20191002_181700-301:localhost:8800O'Q ]$157004183063NdEPw:localhost:8800m.room.member!vpuivIQDEhyuhOLWpg:localhost:8800mGm@anon-20191002_181700-301:localhost:8800~ O'Q  ]$157004183062AwGkL:localhost:8800m.room.create!vpuivIQDEhyuhOLWpg:localhost:8800mmN@anon-20191002_181700-301:localhost:8800  jrcOQa $157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1508}{"auth_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}], ["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180650ruqIl:localhost:8800", {"sha256": "TXuRyKel8MOfneiC/FjMvH+iDbcXboTxkDXoPzmxZzo"}]], "type": "m.room.history_visibility", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004180751hMlwg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041807063, "hashes": {"sha256": "TiuvsyAQJXOd+2AV15UmHd0eHFn+lUItJABqHZLZedg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "phT549EHzz2WXRBXkcFgpmd3lb2VtuwzYI/DVAueycMKOk5omGBw1sCCj1FVyg2rnKMSg3MapaiVEmH2UetvBA"}}, "unsigned": {"age_ts": 1570041807063}}hbOQau $157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1507}{"auth_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}], ["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}]], "prev_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}]], "type": "m.room.guest_access", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004180650ruqIl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041806154, "hashes": {"sha256": "b7LC4XU+oX7M1GiKpmYOOxen3dmvpshxRbhRraQhuzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fs967R/EC4FIOrHPAcCQDI5jxJKMgqYcbnB3UkFmBYtnu4Ciu6IfeESOs/5l9efY9Kdw3EVIXvIfORJ13tenDQ"}}, "unsigned": {"age_ts": 1570041806154}}&aOQaq $157004180549mJBJB:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1506}{"auth_events": [["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "type": "m.room.power_levels", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"users": {"@anon-20191002_181700-299:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004180549mJBJB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041805355, "hashes": {"sha256": "u5UGK7Sy5KLjxdyc5Kwj3v66/J704idflfIu7ybfAno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dXxODIlIc3NKQCnY7QQ9fc3HkowCZ7UTnv/Vm7lBi6jqj7Hzb8dRunr91wa50IcmYJknSNIpiJY0wDQrL7XbBg"}}, "unsigned": {"age_ts": 1570041805355}} #u6k g p  % D NMPrYD|u[Q9 ee!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLiggZQ- e!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstone$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE]YQ/ O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rules$157004183467WkNdH:localhost:8800eXQ? O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility$157004183366iKFsz:localhost:8800_WQ3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access$157004183365ZxPWz:localhost:8800_VQ3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels$157004183264ktTbL:localhost:8800UQ']O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$157004183063NdEPw:localhost:8800YTQ' O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.create$157004183062AwGkL:localhost:8800mSQ9 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigRQ))ee!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAsQQ))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknApPQ? e!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibility$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEhOQ/ e!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rules$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UjNQ3 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU MQ']e!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwdLQ' e!uSBqTezaFcMnlowsEf:localhost:8800m.room.create$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4KQ3 ee!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcgJQ- e!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstone$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA]IQ/ O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rules$157004182060gAdxi:localhost:8800eHQ? O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility$157004181959Afmmv:localhost:8800_GQ3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access$157004181958ixShg:localhost:8800_FQ3 O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels$157004181857fcmAB:localhost:8800EQ']O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$157004181756ejZNp:localhost:8800YDQ' O!NrxQuziwSWzsHuXIlG:localhost:8800m.room.create$157004181655JUAvO:localhost:8800pCQ? e!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibility$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkhBQ/ e!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUjAQ3 e!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc @Q']e!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aod?Q' e!CNFopUEQTFbzjmLvii:localhost:8800m.room.create$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w>Q3 ee!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levels$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAkg=Q- e!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstone$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwh<Q'+O!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.org$157004180853KmrHT:localhost:8800];Q/ O!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rules$157004180752YHMqi:localhost:8800e:Q? O!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility$157004180751hMlwg:localhost:8800_9Q3 O!WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access$157004180650ruqIl:localhost:8800 !(: 6 2 D l  *Rd`iUOOQ$157004183969fQFzs:localhost:8800$157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iTOOQ$157004183868QRvOi:localhost:8800$157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800SeeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800ReeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800QeeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800iPOOQ$157004183467WkNdH:localhost:8800$157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iOOOQ$157004183366iKFsz:localhost:8800$157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iNOOQ$157004183365ZxPWz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iMOOQ$157004183264ktTbL:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800iLOOQ$157004183063NdEPw:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800KeeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800JeeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800IeeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800HeeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800GeeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800FeeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800EeeQ$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800DeeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800CeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800iBOOQ$157004182060gAdxi:localhost:8800$157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800iAOOQ$157004181959Afmmv:localhost:8800$157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800i@OOQ$157004181958ixShg:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800i?OOQ$157004181857fcmAB:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800i>OOQ$157004181756ejZNp:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800=eeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800<eeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800;eeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800:eeQ$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:88009eeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:88008eeQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE!aLxrqpqLkbzyIxGgpk:localhost:8800i7OOQ$157004180853KmrHT:localhost:8800$157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i6OOQ$157004180752YHMqi:localhost:8800$157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800i5OOQ$157004180751hMlwg:localhost:8800$157004180650ruqIl:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800 /dd Y Y o ! z ! o d Y o!,z,,z!z,KOL$157004184774CHMNl:localhost:8800sha256R)%,e.6d yyA߄cHKOL$157004184773rCaRK:localhost:8800sha256gp4A25BokKOL$157004184672SfwvS:localhost:8800sha256k\|rɱeIA+2=q[KOL$157004184571IVgQM:localhost:8800sha256<.azѠgz6$CV eL$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0sha256cvىoL.ht oWH4mV eL$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMsha256dd(ޟib-]MQV eL$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjosha256 K7i 4ޤs|XF\땛6 :V eL$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qsha256WS:ʧRF3QGR> [X'$+TV eL$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Ysha256kCEҦ K 1>d$)#NVeL$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4sha256axI|G6)'b;N:Cx7^KOL$157004183969fQFzs:localhost:8800sha256Շ6=躆g=kiҙV6(dPKOL$157004183868QRvOi:localhost:8800sha256mb~xR ZOqtVeL$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8sha256#8~˼JƱ_#)D^_"8|VgeL$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQsha256.FnSu'"כH pFҦtVfeL$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwsha256"~ Pk%̦i³o/^KeOL$157004180853KmrHT:localhost:8800sha256@&}3~Olp USKdOL$157004180752YHMqi:localhost:8800sha256ؖ(8܂yz XCQKRKcOL$157004180751hMlwg:localhost:8800sha256F9u؞m˰]r&թ8 l -l=feQa$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1511}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE"], "type": "m.room.tombstone", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!WhqVaRReBxJXADAyYD:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041803057, "hashes": {"sha256": "+bODTG6GCZQLw8BTf2bH4rYwMMRsKJdRE3ZoQHnXFcg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CAMYYFQmr8l69R8f39zscZCgrs9yAyFbls9SLwkjQzmMwmkEmME+8Di8LpXYn5uHUgelJS9Uwq5vhDRDQ1lpDQ"}}, "unsigned": {"age_ts": 1570041803057}}jeOQay $157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1510}{"auth_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}], ["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180752YHMqi:localhost:8800", {"sha256": "BOnYlu2ByRT9xPQPKDjt3IIceRiRegxYGUNRS4/KUu4"}]], "type": "m.room.member", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"membership": "ban"}, "depth": 7, "prev_state": [], "state_key": "@bob:matrix.org", "event_id": "$157004180853KmrHT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041808867, "hashes": {"sha256": "u5y540PqJRTkDDcGosjqolw8P8fp17C1iQKKG6jXSkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pIBpxO0HUHZz62HGcs5RniYb2a7X9GZZxNDUeUYW94sOFZ6PHH6DzhzzNjs3iwgW3VP4iL7iqLEoWlxKkjKsBw"}}, "unsigned": {"age_ts": 1570041808867}}adOQag $157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800{"token_id": 319, "stream_ordering": 1509}{"auth_events": [["$157004180549mJBJB:localhost:8800", {"sha256": "wkKv+VP0Tfw8+M8458RP1TvJIR1qSxWpWuRtL9yiuto"}], ["$157004180347MMmFf:localhost:8800", {"sha256": "gBKh2iTNkhiJr/P5W2wQzGJQqynupX0+EsjRJ09eX8Y"}], ["$157004180448zlZXD:localhost:8800", {"sha256": "Ibn9G69ZKbR70gkuOYU7SCGXWwqeH6+xY7qmxRD2VGc"}]], "prev_events": [["$157004180751hMlwg:localhost:8800", {"sha256": "Rvry+93fOYF12Mzl2J5ty7CJ/l1y0yb8H9WpOK+VHPQ"}]], "type": "m.room.join_rules", "room_id": "!WhqVaRReBxJXADAyYD:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004180752YHMqi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041807963, "hashes": {"sha256": "FfBal6YahxCEJrMjQAh09RTc5L195C44He9dyPYtXMA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DFQA6pgw6SRtSjnf63rKP0mnqIFJctJULbqDkAPSLcXUJvf1C95unDde9ihv/486C/306bZGocrvqcK6KXt8BA"}}, "unsigned": {"age_ts": 1570041807963}} Lp> \ v D  | J $ Q   W %  ] +c1i*7o= uC{IPVj81e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ya1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cF1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY*1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4)1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY 1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gG1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8m1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAC0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicR1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI,1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o q1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAb1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM *1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE+1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkO1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA'1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0e1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc~1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to:1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYR1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 l1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcF1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY 21e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY @1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 y1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYv0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8I1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw '1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU 1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA Z1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoR1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE{1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM :1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMd1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI g t & ~ 7 `w+5;)}e9Q ]$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigm.room.canonical_alias!uSBqTezaFcMnlowsEf:localhost:8800mom@anon-20191002_181700-301:localhost:8800!|e)Q ]$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hgm.room.aliases!uSBqTezaFcMnlowsEf:localhost:8800mmC@anon-20191002_181700-301:localhost:8800!{e)Q ]$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAm.room.aliases!uSBqTezaFcMnlowsEf:localhost:8800mmZ@anon-20191002_181700-301:localhost:8800,ze?Q ]$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEm.room.history_visibility!uSBqTezaFcMnlowsEf:localhost:8800m Vm@anon-20191002_181700-301:localhost:8800$ye/Q ]$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8Um.room.join_rules!uSBqTezaFcMnlowsEf:localhost:8800m m @anon-20191002_181700-301:localhost:8800&xe3Q ]$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUm.room.power_levels!uSBqTezaFcMnlowsEf:localhost:8800mXm Y@anon-20191002_181700-301:localhost:8800 we'Q ]$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iwm.room.member!uSBqTezaFcMnlowsEf:localhost:8800mNm@anon-20191002_181700-301:localhost:8800v e'Q  ]$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4m.room.create!uSBqTezaFcMnlowsEf:localhost:8800mm@anon-20191002_181700-301:localhost:8800&ue3Q ]$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBom.room.power_levels!CNFopUEQTFbzjmLvii:localhost:8800mm@anon-20191002_181700-300:localhost:8800#te-Q ]$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAm.room.tombstone!CNFopUEQTFbzjmLvii:localhost:8800mm[@anon-20191002_181700-300:localhost:8800sO/Q ]$157004182060gAdxi:localhost:8800m.room.join_rules!NrxQuziwSWzsHuXIlG:localhost:8800m*m@anon-20191002_181700-300:localhost:8800!rO?Q ]$157004181959Afmmv:localhost:8800m.room.history_visibility!NrxQuziwSWzsHuXIlG:localhost:8800mm@anon-20191002_181700-300:localhost:8800qO3Q ]$157004181958ixShg:localhost:8800m.room.guest_access!NrxQuziwSWzsHuXIlG:localhost:8800mm@anon-20191002_181700-300:localhost:8800pO3Q ]$157004181857fcmAB:localhost:8800m.room.power_levels!NrxQuziwSWzsHuXIlG:localhost:8800m6m@anon-20191002_181700-300:localhost:8800oO'Q ]$157004181756ejZNp:localhost:8800m.room.member!NrxQuziwSWzsHuXIlG:localhost:8800mm@anon-20191002_181700-300:localhost:8800n O'Q  ]$157004181655JUAvO:localhost:8800m.room.create!NrxQuziwSWzsHuXIlG:localhost:8800mmm@anon-20191002_181700-300:localhost:8800,me?Q ]$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkm.room.history_visibility!CNFopUEQTFbzjmLvii:localhost:8800mm@anon-20191002_181700-300:localhost:8800$le/Q ]$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUm.room.join_rules!CNFopUEQTFbzjmLvii:localhost:8800mm@anon-20191002_181700-300:localhost:8800&ke3Q ]$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kcm.room.power_levels!CNFopUEQTFbzjmLvii:localhost:8800mmۊ@anon-20191002_181700-300:localhost:8800 je'Q ]$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aom.room.member!CNFopUEQTFbzjmLvii:localhost:8800mEm@anon-20191002_181700-300:localhost:8800i e'Q  ]$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3wm.room.create!CNFopUEQTFbzjmLvii:localhost:8800mam@anon-20191002_181700-300:localhost:8800&he3Q ]$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQm.room.power_levels!aLxrqpqLkbzyIxGgpk:localhost:8800m]m@anon-20191002_181700-299:localhost:8800#ge-Q ]$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwm.room.tombstone!aLxrqpqLkbzyIxGgpk:localhost:8800mȱ1m+@anon-20191002_181700-299:localhost:8800fO'Q ]$157004180853KmrHT:localhost:8800m.room.member!WhqVaRReBxJXADAyYD:localhost:8800mmt@anon-20191002_181700-299:localhost:8800 G 0GkjeQac$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1515}{"auth_events": ["$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "type": "m.room.power_levels", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"users": {"@anon-20191002_181700-300:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041813496, "hashes": {"sha256": "qnGVP2uO0CQHv7SqJX+rqL2FFE7bKAlcHrEiBNtuFnA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sTQfmZB+QuHEI2SelCRWyhn2MjeE2i0E6mLxYWCtHK3aVB3QJ41C9rHBYo5C+oRzYaDg17txZg+Xd6by3s1xAQ"}}, "unsigned": {"age_ts": 1570041813496}}vieQay$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1514}{"auth_events": ["$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w"], "prev_events": ["$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w"], "type": "m.room.member", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-300", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-300:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041812549, "hashes": {"sha256": "I4OHI8HzO5+NgA90KZgbLrKMqVId8sfBdU5rlYZROlQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F/sLin7nzoX5Kmu1fHfly3EhkpY9ayn1Hsc1MtrLMM6VufXcPba6tCqBjIhX5z7WumMmWQRS0Nv1TWddmGX4Dg"}}, "unsigned": {"age_ts": 1570041812549}}iheQa_$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1513}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-300:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041811041, "hashes": {"sha256": "SaobONV+WI8XLYdErLgoW1Td1qpaXETGcLROX1NF4tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ugquKSXNKOtb9jdnVAG4coEhgTd8+9vQZH1YyZ+LfDJZ47TowJNMqcbbzKOe//BJ6n9Rh3bl+ND13W0FwK5rDw"}}, "unsigned": {"age_ts": 1570041811041}}_geQaK$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800{"token_id": 319, "stream_ordering": 1512}{"auth_events": ["$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk", "$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ", "$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY"], "prev_events": ["$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw"], "type": "m.room.power_levels", "room_id": "!aLxrqpqLkbzyIxGgpk:localhost:8800", "sender": "@anon-20191002_181700-299:localhost:8800", "content": {"users": {"@anon-20191002_181700-299:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041811037, "hashes": {"sha256": "ZJIDrRj8KUIzo3V3S/cTAmY02Ke7ChsXZeRhTAaZCcM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qBG5HJcdFWWf5bsyR2jMBbjff9lPxWx8TZncabMwpnPsPIhuYPGmr/bsU5VWZEV943ux4xsToVh6h20wyV6fDw"}}, "unsigned": {"age_ts": 1570041811037, "replaces_state": "$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk"}} p`  ` 8pH X0p  h @H X 0 X0 H  x P ( h@xP(`8`8h@xP( p'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 \'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ['Q!ePtMOPPOgOcBIMNZpn:localhost:8800 Z'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 Y'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 X'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 W'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 V'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 U'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 T'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 S'Q!dnZVySJLGNtUKsSgXW:localhost:8800O'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800,'Q!eJPTUgihvSwaOhIkrC:localhost:8800+'Q!eJPTUgihvSwaOhIkrC:localhost:8800*'Q!eJPTUgihvSwaOhIkrC:localhost:8800)'Q!eJPTUgihvSwaOhIkrC:localhost:8800('Q!eJPTUgihvSwaOhIkrC:localhost:8800''Q!eJPTUgihvSwaOhIkrC:localhost:8800&'Q!eJPTUgihvSwaOhIkrC:localhost:8800%'Q!eJPTUgihvSwaOhIkrC:localhost:8800$'Q!eJPTUgihvSwaOhIkrC:localhost:8800#'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 ('Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800z'Q!eGEEtFXUXuZDImkeql:localhost:8800y'Q!eGEEtFXUXuZDImkeql:localhost:8800x'Q!eGEEtFXUXuZDImkeql:localhost:8800w'Q!eGEEtFXUXuZDImkeql:localhost:8800v'Q!eGEEtFXUXuZDImkeql:localhost:8800u'Q!eGEEtFXUXuZDImkeql:localhost:8800t'Q!eGEEtFXUXuZDImkeql:localhost:8800s'Q!drnXStKXkNQkouqUAg:localhost:8800 3'Q!drnXStKXkNQkouqUAg:localhost:8800 2'Q!drnXStKXkNQkouqUAg:localhost:8800 0'Q!drnXStKXkNQkouqUAg:localhost:8800 .'Q!drnXStKXkNQkouqUAg:localhost:8800 ,'Q!drnXStKXkNQkouqUAg:localhost:8800 *'Q!duCKuavMBSfRbTFPsc:localhost:8800&'Q!duCKuavMBSfRbTFPsc:localhost:8800%'Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!duCKuavMBSfRbTFPsc:localhost:8800#'Q!duCKuavMBSfRbTFPsc:localhost:8800"'Q!duCKuavMBSfRbTFPsc:localhost:8800!'Q!duCKuavMBSfRbTFPsc:localhost:8800 'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!dnZVySJLGNtUKsSgXW:localhost:8800T'Q!dnZVySJLGNtUKsSgXW:localhost:8800S'Q!dnZVySJLGNtUKsSgXW:localhost:8800R'Q!dnZVySJLGNtUKsSgXW:localhost:8800Q'Q!dnZVySJLGNtUKsSgXW:localhost:8800P'Q!eLsrBEnrHolwCNgkFW:localhost:8800H'Q!eLsrBEnrHolwCNgkFW:localhost:8800G'Q!eLsrBEnrHolwCNgkFW:localhost:8800F'Q!eLsrBEnrHolwCNgkFW:localhost:8800E'Q!eLsrBEnrHolwCNgkFW:localhost:8800D  d \ T LD<4,$| l eeQ$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is!eySSVuCclRpBDgwKIU:localhost:8800 eeQ$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4!CgVBWWcRJoHEcwoLcq:localhost:8800؁eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800DeeQ$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ!GGXyLHdVXqhQjPRvac:localhost:8800,eeQ$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800keeQ$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ!mfzIRinBAGGrZvQAuI:localhost:8800#eeQ$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800ցeeQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI!AjjrNwXmPTCruHxaJq:localhost:88004eeQ$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg!FAYqpziHeVZugCGaij:localhost:8800XeeQ$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc!VOhMAiLfKyTOZbmKGw:localhost:8800ҁeeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800eeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800\eeQ$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800 /eeQ$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800meeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800 H l olnOQa# $157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1519}{"auth_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}]], "prev_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}]], "type": "m.room.member", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-300", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-300:localhost:8800", "event_id": "$157004181756ejZNp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041817340, "hashes": {"sha256": "zi+j4JHzRYpZ667Ngi8oWJKk4JWSN0C8/FInhzeh21A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rso4R9G+zwUHR+buUo4/wrj/uiM4n5NlMzyGcY8QqxjLskdzxqEOOwi2n2pSZyfW2GnylLlPDoKcFy5cVePkAw"}}, "unsigned": {"age_ts": 1570041817340}} mOQa= $157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1518}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "event_id": "$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA"}, "creator": "@anon-20191002_181700-300:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004181655JUAvO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041816685, "hashes": {"sha256": "qRAfm4Zs+R77EOm3WQdegOlhZNKEq19taai+QUoGE7c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KhbeYywQ4VVlJgY42JppmGVddd9NG8UpVJaR1GXNGT6jsuvLGg2OT87OwapKBwAX9/3AvQ97z+mLJJ4CaKPpAA"}}, "unsigned": {"age_ts": 1570041816685}}leQa$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1517}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU"], "type": "m.room.history_visibility", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041815261, "hashes": {"sha256": "fY5SRhPlU2mlYFWKG866lWnT7DXC85mPFjoP+bJKPuo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E5mOdPRv/rI64byioelwG+uBLOwUUpRAuP4QURI+ym9eH9rfuf8CQzm/x0EVv4SmT7KaBf1sGMy1GFINvFd4BQ"}}, "unsigned": {"age_ts": 1570041815261}}tkeQau$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1516}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc"], "type": "m.room.join_rules", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041814482, "hashes": {"sha256": "e3cWdWjY9f3W7d4h3BeEj/WX3TBIdrNtS3rQM2XxZfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F7+3jtGR1dskq+DK17+/6jYqavdh65lPs/UpzqC+nyY5IMj1JVVD7wxRRO3/CiJAzZb3BljoTxzh+3OL9AxyDA"}}, "unsigned": {"age_ts": 1570041814482}} C pmC&OQaq $157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1536}{"auth_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "type": "m.room.power_levels", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"users": {"@anon-20191002_181700-301:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004183264ktTbL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041832457, "hashes": {"sha256": "+JWDyL6I3xmgsenjErgsttCn4oPtBf47Fb3jytPKq6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J5ddUOw1C49LGYyzgi0uPzXZs2SCXcCw/39WRjaFyNPHjS66BwlATRCWfW+pYHQyS1YCSHN76IkpUkQ4gmzzAw"}}, "unsigned": {"age_ts": 1570041832457}}~OQa# $157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1535}{"auth_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}]], "prev_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}]], "type": "m.room.member", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-301", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-301:localhost:8800", "event_id": "$157004183063NdEPw:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041830983, "hashes": {"sha256": "7KaKayeSCgDMs9+pX/6FRa/r1c1NYwuZ7iTrxFcItgU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bY0VEYtOXNbtk8LcV6PIjl7uJBrw3ABcFa+d4/4upI8I4NYkp4IiXKsStgaiI7jzsDrHLhW5RgIg6Oe/IdXCBA"}}, "unsigned": {"age_ts": 1570041830983}} }OQa= $157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1534}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "event_id": "$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE"}, "creator": "@anon-20191002_181700-301:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004183062AwGkL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041830131, "hashes": {"sha256": "o/ZWEJLhCX0Yln9EQ6+wKsUtC4/yqce0SSe2Qso+DBE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cbfTahv2uUGaKExpqApHYJ0qcKUP65Rn1JfUh+uGyVdjJ1GaRSzFm2jOd1mp352qnwDwDZzG3j4VfXrgY7wgBA"}}, "unsigned": {"age_ts": 1570041830131}} gs\?"~cL/uR3 q2 w ` C  x 9  p 1  j P 9 b < fI. ~a>#v[8kP3B%y: N,/ m.room.join_rules>']_m.room.member@anon-20191002_181700-299:localhost:8800c3 ^m.room.guest_accessb' ]m.room.createa/ \m.room.encryption`' [m.room.avatar_3 Zm.room.power_levels^>']Ym.room.member@anon-20191002_181700-298:localhost:8800]' Xm.room.create\- Wm.room.tombstone[3 Vm.room.power_levelsZ3 Um.room.guest_accessY' Tm.room.avatarX/ Sm.room.encryptionW# Rm.room.nameV3 m.room.power_levels>']m.room.member@anon-20191002_181700-304:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-303:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-303:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-302:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-302:localhost:88003 m.room.power_levels' m.room.create%))m.room.aliaseslocalhost:88009 m.room.canonical_alias%))m.room.aliaseslocalhost:88009 m.room.canonical_alias/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-301:localhost:8800' m.room.create- m.room.tombstone9 m.room.canonical_alias%))m.room.aliaseslocalhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-301:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 ~m.room.power_levels>']}m.room.member@anon-20191002_181700-300:localhost:8800' |m.room.create- {m.room.tombstone"? zm.room.history_visibility~/ ym.room.join_rules}3 xm.room.power_levels|>']wm.room.member@anon-20191002_181700-300:localhost:8800{3 vm.room.power_levelsz' um.room.createy3 tm.room.power_levelsx%'+sm.room.member@bob:matrix.orgw/ rm.room.join_rulesv"? qm.room.history_visibilityu3 pm.room.guest_accesst3 om.room.power_levelss>']nm.room.member@anon-20191002_181700-299:localhost:8800r' mm.room.createq3 lm.room.power_levelsp- km.room.tombstoneo3 jm.room.power_levelsn% im.room.topicm/ hm.room.server_acll%'+gm.room.member@bob:matrix.orgk7 fm.room.related_groupsj"? em.room.history_visibilityi# dm.room.nameh/ cm.room.join_rulesg/ bm.room.join_rulesf3 am.room.power_levelse"? `m.room.history_visibilityd ,\ k^ k x ' 4 C P ] jw&3BOx'P]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800P]Q@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829N[Q@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800P]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829P]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829P]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800P]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800N[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800P]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800P]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800P]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800P]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800P]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800N[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800P]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800P]Q@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800P]Q@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800 % \ . = k  OoNz=oxGgbkOQ? $157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility\jOQ3 $157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access\iOQ3 $157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels~hOQ']$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800VgOQ' $157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.createmfeQ? $Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibilityeeeQ/ $AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rulesgdeQ3 $C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels ceQ']$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800gbeQ3 $m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levelsaaeQ' $YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800m.room.createe`OQ))$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800__OQ9 $157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_aliasp^eQ))$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800j]eQ9 $s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_aliasd\eQ- $99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstoneZ[OQ/ $157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rulesbZOQ? $157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility\YOQ3 $157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access\XOQ3 $157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels~WOQ']$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800VVOQ' $157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.createjUeQ9 $Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_aliaspTeQ))$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800pSeQ))$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800mReQ? $g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibilityeQeQ/ $MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rulesgPeQ3 $_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels OeQ']$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800aNeQ' $jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800m.room.creategMeQ3 $ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levelsdLeQ- $5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstoneZKOQ/ $157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rulesbJOQ? $157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility\IOQ3 $157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access\HOQ3 $157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levels~GOQ']$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800  jrqOQa $157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1522}{"auth_events": [["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}], ["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "prev_events": [["$157004181958ixShg:localhost:8800", {"sha256": "nmYsthJMEAkoSimrK1KXTxYwHQn7ozzjWCCpNt77/RE"}]], "type": "m.room.history_visibility", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004181959Afmmv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041819780, "hashes": {"sha256": "rNIcnpdbQKVdv9h7cVo7pZ7Aar5+4IxwxDD0c/3p7Iw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CV4Sh22jL3/8d1uNGaBBNuEah+IMVGtQ521yqrWY8voSnaUpEmyMAkg489mt/TV0LeDBG0RyePE59iIXJBoGCg"}}, "unsigned": {"age_ts": 1570041819780}}hpOQau $157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1521}{"auth_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}], ["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}]], "prev_events": [["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}]], "type": "m.room.guest_access", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004181958ixShg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041819039, "hashes": {"sha256": "SoYsis0m9h7aa3MIJzP/kHh+mHhVpoHwvC+UusLAcf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6VWCpP5Sqy+bqLHOWsH8UpjW5T83tyQ8TVsvGClk5IyoFx3a30C1lbfIHNmcAvqitLVt9N54Tiur7PVU4jk0DA"}}, "unsigned": {"age_ts": 1570041819039}}&oOQaq $157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1520}{"auth_events": [["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "prev_events": [["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "type": "m.room.power_levels", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"users": {"@anon-20191002_181700-300:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004181857fcmAB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041818422, "hashes": {"sha256": "VgRLHOSnOHDtrd14ucd8h2lzY2zaibg8Z0xU1eiNFJU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uMqex+ZSxM4yzIzRSzcWxAoHBvjXt1bl7x5UpKIC2D8CKHKLeQqcebyK5nN143Rcjm0wDVqlOaNjaTtSepX7Bg"}}, "unsigned": {"age_ts": 1570041818422}} *T ~  ' % # !~peeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~oeeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~neeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~meeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~leeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~keeQ$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~jeeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~ieeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~heeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~geeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~feeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~eeeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~deeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~ceeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~beeQ$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~aeeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~`eeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~_eeQ$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~^eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~]eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~\eeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800~[eeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800~ZeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800~YeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800hXOOQ$157004182060gAdxi:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hWOOQ$157004182060gAdxi:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hVOOQ$157004182060gAdxi:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hUOOQ$157004181959Afmmv:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hTOOQ$157004181959Afmmv:localhost:8800$157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hSOOQ$157004181959Afmmv:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hROOQ$157004181958ixShg:localhost:8800$157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800hQOOQ$157004181958ixShg:localhost:8800$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800 0hn i  d j  : @QWRc394:I/QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185780kUwpq:localhost:8800I.QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185679NNCIw:localhost:8800I-QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185678lyJsT:localhost:8800T,Qe!KeqmSjifajNKxtgqhj:localhost:8800$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_ET+Qe!KeqmSjifajNKxtgqhj:localhost:8800$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIT*Qe!KeqmSjifajNKxtgqhj:localhost:8800$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMT)Qe!KeqmSjifajNKxtgqhj:localhost:8800$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQT(Qe!KeqmSjifajNKxtgqhj:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QT'Qe!KeqmSjifajNKxtgqhj:localhost:8800$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUI&QO!icheSPMgpemswIdQkw:localhost:8800$157004185177LKzVW:localhost:8800T%Qe!EyyNoldCLUdFHzXTDP:localhost:8800$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xII$QO!icheSPMgpemswIdQkw:localhost:8800$157004184976eGgUf:localhost:8800I#QO!icheSPMgpemswIdQkw:localhost:8800$157004184875Wzayo:localhost:8800I"QO!icheSPMgpemswIdQkw:localhost:8800$157004184774CHMNl:localhost:8800I!QO!icheSPMgpemswIdQkw:localhost:8800$157004184773rCaRK:localhost:8800I QO!icheSPMgpemswIdQkw:localhost:8800$157004184672SfwvS:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184571IVgQM:localhost:8800TQe!EyyNoldCLUdFHzXTDP:localhost:8800$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9QTQe!EyyNoldCLUdFHzXTDP:localhost:8800$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0TQe!EyyNoldCLUdFHzXTDP:localhost:8800$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMTQe!EyyNoldCLUdFHzXTDP:localhost:8800$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjoIQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004184170QHBhx:localhost:8800TQe!EyyNoldCLUdFHzXTDP:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QTQe!uSBqTezaFcMnlowsEf:localhost:8800$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YTQe!EyyNoldCLUdFHzXTDP:localhost:8800$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183969fQFzs:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183868QRvOi:localhost:8800TQe!uSBqTezaFcMnlowsEf:localhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8TQe!uSBqTezaFcMnlowsEf:localhost:8800$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oIQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183467WkNdH:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183366iKFsz:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183365ZxPWz:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183264ktTbL:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183063NdEPw:localhost:8800I QO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183062AwGkL:localhost:8800T Qe!uSBqTezaFcMnlowsEf:localhost:8800$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBET Qe!uSBqTezaFcMnlowsEf:localhost:8800$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigT Qe!uSBqTezaFcMnlowsEf:localhost:8800$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgT Qe!uSBqTezaFcMnlowsEf:localhost:8800$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknATQe!uSBqTezaFcMnlowsEf:localhost:8800$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DETQe!uSBqTezaFcMnlowsEf:localhost:8800$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UTQe!uSBqTezaFcMnlowsEf:localhost:8800$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUTQe!uSBqTezaFcMnlowsEf:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwTQe!uSBqTezaFcMnlowsEf:localhost:8800$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4IQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004182361NlgQV:localhost:8800TQe!CNFopUEQTFbzjmLvii:localhost:8800$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoIQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004182060gAdxi:localhost:8800IQO!NrxQuziwSWzsHuXIlG:localhost:8800$157004181959Afmmv:localhost:8800 RzFvB } T +  | H  Z & a 8  ` ,\([2b.tK"h4d0c:uA 1@e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R41?e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1>e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1=e$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k&<O$157004188598DcHDt:localhost:88001;e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1:e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to&9O$157004188397MRiZP:localhost:8800&8O$157004188296OVWxu:localhost:8800&7O$157004188195thBOS:localhost:8800&6O$157004188194vdqBG:localhost:8800&5O$157004188093UtRbN:localhost:8800&4O$157004187992XwpoQ:localhost:880013e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ12e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw11e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I10e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-41/e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI1.e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w1-e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE1,e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI&+O$157004187190ZLRgN:localhost:8800&*O$157004187089FLOwV:localhost:8800&)O$157004186988RkcKb:localhost:8800&(O$157004186887sKbQU:localhost:8800&'O$157004186786RVgKA:localhost:8800&&O$157004186785fjAIs:localhost:88001%e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg1$e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws1#e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s1"e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us1!e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo1 e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E&O$157004185983tEalY:localhost:8800&O$157004185982diSTq:localhost:8800&O$157004185881ahRFW:localhost:8800&O$157004185780kUwpq:localhost:8800&O$157004185679NNCIw:localhost:8800&O$157004185678lyJsT:localhost:88001e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q&O$157004184976eGgUf:localhost:8800&O$157004184875Wzayo:localhost:8800&O$157004184774CHMNl:localhost:8800&O$157004184773rCaRK:localhost:8800& O$157004184672SfwvS:localhost:8800& O$157004184571IVgQM:localhost:88001 e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G01 e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM1 e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4&O$157004183969fQFzs:localhost:8800&O$157004183868QRvOi:localhost:88001e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_81e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE&O$157004183467WkNdH:localhost:8800&O$157004183366iKFsz:localhost:8800&~O$157004183365ZxPWz:localhost:8800&}O$157004183264ktTbL:localhost:8800&|O$157004183063NdEPw:localhost:8800&{O$157004183062AwGkL:localhost:88001ze$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1ye$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1xe$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1we$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1ve$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1ue$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1te$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1se$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41re$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1qe$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA{&pO$157004182060gAdxi:localhost:8800&oO$157004181959Afmmv:localhost:8800 ( t 8 Ck->m x 6Q([^ i deQ- $99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstoneZOQ/ $157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rulesbOQ? $157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility\OQ3 $157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access\OQ3 $157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levelsOQ']$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800joinVOQ' $157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.createj eQ9 $s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_aliasp eQ))$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800\vOQ3 $157004181958ixShg:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.guest_access\uOQ3 $157004181857fcmAB:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.power_levelstOQ']$157004181756ejZNp:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800joinVsOQ' $157004181655JUAvO:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.createmreQ? $yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800m.room.history_visibilityeqeQ/ $rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules oeQ']$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800joinaneQ' $XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800m.room.creategmeQ3 $pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsdleQ- $IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstonehkOQ'+$157004180853KmrHT:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.orgbanZjOQ/ $157004180752YHMqi:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rulesbiOQ? $157004180751hMlwg:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibilitymeQ? $g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibilitye~eQ/ $MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rulesj |eQ']$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800joina{eQ' $jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800m.room.creategzeQ3 $ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levelsdyeQ- $5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstoneZxOQ/ $157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.join_rulesbwOQ? $157004181959Afmmv:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800m.room.history_visibility  _teQaK$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1525}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA"], "type": "m.room.power_levels", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"users": {"@anon-20191002_181700-300:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041822194, "hashes": {"sha256": "iUnfqCn+ra5qohWsQd2V1BLqgO/4mFNb9VcWWaQg0tE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wsf9NRxuEn+Qj6F6gC+3YDXA2P1bsOKBicQAMFpOErTJ0IY+iIBHRNOW/9DpKde3RFFhkPNBAw5fkm5RwFKIAA"}}, "unsigned": {"age_ts": 1570041822194, "replaces_state": "$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc"}}=seQa$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA!CNFopUEQTFbzjmLvii:localhost:8800{"token_id": 320, "stream_ordering": 1524}{"auth_events": ["$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc", "$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w", "$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao"], "prev_events": ["$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk"], "type": "m.room.tombstone", "room_id": "!CNFopUEQTFbzjmLvii:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!NrxQuziwSWzsHuXIlG:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041816578, "hashes": {"sha256": "bNs5kexAbSQCn5oSOa+QELnbQ+x4nBDXVUvk2B2khr0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ZKiBK/9pJYIeIhEz6/e2IzbN7QOp5qCCwh40dL2fQB8+BEXTAyv+JY8R+9rcdemUbDgFUTyvUXV8gmbFJb8DQ"}}, "unsigned": {"age_ts": 1570041816578}}arOQag $157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800{"token_id": 320, "stream_ordering": 1523}{"auth_events": [["$157004181857fcmAB:localhost:8800", {"sha256": "Uc6HT3tnk3dPRA62NzdzgGvNP09zZdunPalxJMjB1JA"}], ["$157004181655JUAvO:localhost:8800", {"sha256": "LgLWOiVAEURX/ZYjXKXOjYQZ+RsyIuQAe6LfH/dQCx8"}], ["$157004181756ejZNp:localhost:8800", {"sha256": "oyuuU1wjU+jk2yd+8PkCBvPf66UeSWZZioJo7BrxoWA"}]], "prev_events": [["$157004181959Afmmv:localhost:8800", {"sha256": "IFijkB8HJCzxWfZDhRCgVlcnOYCkLXVfsNKrIEfWeDI"}]], "type": "m.room.join_rules", "room_id": "!NrxQuziwSWzsHuXIlG:localhost:8800", "sender": "@anon-20191002_181700-300:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004182060gAdxi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041820714, "hashes": {"sha256": "r5XBSYVya7Qsa4yyrNwSLrTUnxHMtpW8R5Z5/TUHzMQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bfdkql3CW3EtXa4d3lq/xRnkn5NNPWFi+NbhNh3KCKf+Q/SZ4esYcxIIZIQmqm8dgEXoU0nk7bhtfFnPzhReBA"}}, "unsigned": {"age_ts": 1570041820714}}   *txeQau$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1529}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU"], "type": "m.room.join_rules", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041826028, "hashes": {"sha256": "BY/yibdVqkmnNw/Htz4jS4FEaBNsE9qadblR8uthopU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sMThNl73g9luBkfU3z1UkIT4qQ9DJ9M6ol3LS/tlTn1wMHsX33r4JGBhQaAFVaqrxFTiip2CA01uX387LG3aCQ"}}, "unsigned": {"age_ts": 1570041826028}}kweQac$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1528}{"auth_events": ["$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "type": "m.room.power_levels", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"users": {"@anon-20191002_181700-301:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041825112, "hashes": {"sha256": "TGYgOx60mJq/2O48M3TNQCR+6D/gjdJ587lgjA+LRgU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "42p0zDfs/nelmVqrG/itircKHNRe8wpr0w3hRbPg/Jne1DYiC6373aSYZ+VNdD3cwAMU5wyBMAiKZQYFS5DYBA"}}, "unsigned": {"age_ts": 1570041825112}}vveQay$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1527}{"auth_events": ["$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4"], "prev_events": ["$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4"], "type": "m.room.member", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-301", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-301:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041824590, "hashes": {"sha256": "f65FXma5mEh3eq9c0fv0fK6gYSAsfeEJqIJrfIX9J3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6MenPsGCp7pqwH0vvc7d1fsKZrQPLQAn0B7OT72qf2WcwNmTXwqSMR7lhCiwNRP3DhpUzWaf6AhWzGzNnwf+DA"}}, "unsigned": {"age_ts": 1570041824590}}iueQa_$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1526}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-301:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041823945, "hashes": {"sha256": "3TDzujl5u2KxORJ/eR1yaYZ8suxgMqMErMhNBz0ywwM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n77UdKUYqhJ02nDUay0AwE3J9AomFlb92e0KrL4m1MRbBjeq9RnOAWEwPKk/mLg7CiLFI+xaPWr7zTM+psAHAA"}}, "unsigned": {"age_ts": 1570041823945}} X wX |eQa!$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1533}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg"], "type": "m.room.canonical_alias", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"alias": "#__ANON__-13:localhost:8800"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041829231, "hashes": {"sha256": "RKXNQn6hYEE0rdkLNHotcreF03Bo2cpmQLwpoo9xiRM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/9hjdU3SqOnGdqGyMHO61e0OtjoR46HjZAJCLhZmGcMPVWZCOlGgXwKP5d8yO5lOHGe62Pm5gbYMW1mdI8/NAQ"}}, "unsigned": {"age_ts": 1570041829231}}u{eQaw$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1532}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA"], "type": "m.room.aliases", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": ["#__ANON__-13:localhost:8800", "#__ANON__-14:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041828567, "hashes": {"sha256": "hzOh2UCGQVjqpGNFodmab/fNa6t55U5+z9DGAF3rXzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hbeYVvbCKK6dbYo8RsM3ZZLCvb8UpmxJmyJxSNj8OOwv23gCqMtnSUTY5wNwZ+TkfoWxuud+kEdBug1/gNEvCA"}}, "unsigned": {"age_ts": 1570041828567, "replaces_state": "$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA"}}zeQa5$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1531}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE"], "type": "m.room.aliases", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": ["#__ANON__-13:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041827778, "hashes": {"sha256": "0oiTDAtIAcIs2v1+vancLUZIojNLLolf1YvqSfSPU/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OuLzHfallQSrsHUfbLyfJLnDI61BSOTt4txcJQJT1sWGE2HTo9PS73CuxwltAAkA9I6XwJBDIohi0g387l2cAA"}}, "unsigned": {"age_ts": 1570041827778}}yeQa$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1530}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U"], "type": "m.room.history_visibility", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041826646, "hashes": {"sha256": "D750+BEB73E7R/4lhfO7j3a2jaNHyt1lJpHV8mAFVrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/4FfLD8VkwdV3Xw579qdKGRJ41F8bKhJwdwGEeFtqiXwTwgEXKOd6LkFzv0YupUBKmLMshEyUVl0L73bkjjPBA"}}, "unsigned": {"age_ts": 1570041826646}} "j*T ~  = g { ywus2\pnlj~eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~ eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~ eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800h OOQ$157004183969fQFzs:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800h OOQ$157004183969fQFzs:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800h OOQ$157004183969fQFzs:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hOOQ$157004183868QRvOi:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hOOQ$157004183868QRvOi:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hOOQ$157004183868QRvOi:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800~eeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800~eeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800~~eeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800~}eeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU!uSBqTezaFcMnlowsEf:localhost:8800h|OOQ$157004183467WkNdH:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800h{OOQ$157004183467WkNdH:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hzOOQ$157004183467WkNdH:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hyOOQ$157004183366iKFsz:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hxOOQ$157004183366iKFsz:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hwOOQ$157004183366iKFsz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hvOOQ$157004183365ZxPWz:localhost:8800$157004183264ktTbL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800huOOQ$157004183365ZxPWz:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800htOOQ$157004183365ZxPWz:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hsOOQ$157004183264ktTbL:localhost:8800$157004183063NdEPw:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hrOOQ$157004183264ktTbL:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800hqOOQ$157004183063NdEPw:localhost:8800$157004183062AwGkL:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800 `Lt l d` \  &Rd|\Th^hhQeeQ$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4!NfaPEGKjnUDUTavzol:localhost:8800ZeeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko!nteAxExBGJfaGIpuCx:localhost:8800eeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800 iGQQ$83_outlier_C:localhost:42455$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 siGQQ$83_outlier_C:localhost:42455$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 qiGQQ$83_outlier_C:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 reeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800 _3QQ$82:localhost:42455$1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 oeeQ$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw!EfJcWhdjNARbuHYrqU:localhost:8800A333$80:localhost:42455$79:localhost:42455!13:localhost:42455 ZeeQ$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800 $eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800 %eeQ$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800eeQ$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4!oXKJArsPmtgaYANBrg:localhost:8800geeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800 c KZ,tHvHd6 ~ P " j <  X * r D  ^ 0 zLf8 R$n@b4|N -]@anon-20191002_181700-373:localhost:8800-]@anon-20191002_181700-332:localhost:8800-]@anon-20191002_181700-331:localhost:8800-]@anon-20191002_181700-330:localhost:8800~+[@anon-20191002_181700-32:localhost:8800-]@anon-20191002_181700-329:localhost:8800}-]@anon-20191002_181700-328:localhost:8800|-]@anon-20191002_181700-327:localhost:8800{-]@anon-20191002_181700-326:localhost:8800z-]@anon-20191002_181700-325:localhost:8800y-]@anon-20191002_181700-324:localhost:8800x-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:8800-]@anon-20191002_181700-370:localhost:8800+[@anon-20191002_181700-36:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:8800-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-356:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-355:localhost:8800-]@anon-20191002_181700-354:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-353:localhost:8800-]@anon-20191002_181700-352:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:8800-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-346:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-344:localhost:8829-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800-]@anon-20191002_181700-341:localhost:8800-]@anon-20191002_181700-340:localhost:8829+[@anon-20191002_181700-33:localhost:8800-]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-338:localhost:8800-]@anon-20191002_181700-337:localhost:8800-]@anon-20191002_181700-336:localhost:8800-]@anon-20191002_181700-333:localhost:8800 %>x 0 ` e  . StK*Ty9qi7Q3 e!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ\6Q/ O!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rules$157004185983tEalY:localhost:8800d5Q? O!jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility$157004185982diSTq:localhost:8800^4Q3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access$157004185881ahRFW:localhost:8800^3Q3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels$157004185780kUwpq:localhost:88002Q']O!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$157004185679NNCIw:localhost:8800X1Q' O!jIfvTrwedrWLubsnlM:localhost:8800m.room.create$157004185678lyJsT:localhost:8800f0Q- e!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstone$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Eo/Q? e!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibility$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIg.Q/ e!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rules$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMi-Q3 e!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ ,Q']e!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qc+Q' e!KeqmSjifajNKxtgqhj:localhost:8800m.room.create$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU^*Q3 O!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels$157004185177LKzVW:localhost:8800i)Q3 e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI\(Q/ O!icheSPMgpemswIdQkw:localhost:8800m.room.join_rules$157004184976eGgUf:localhost:8800d'Q? O!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility$157004184875Wzayo:localhost:8800^&Q3 O!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access$157004184774CHMNl:localhost:8800^%Q3 O!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels$157004184773rCaRK:localhost:8800$Q']O!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$157004184672SfwvS:localhost:8800X#Q' O!icheSPMgpemswIdQkw:localhost:8800m.room.create$157004184571IVgQM:localhost:8800f"Q- e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstone$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qo!Q? e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0g Q/ e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rules$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMiQ3 e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo^Q3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels$157004184170QHBhx:localhost:8800 Q']e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QiQ3 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YcQ' e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.create$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4gQ))O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800$157004183969fQFzs:localhost:8800aQ9 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias$157004183868QRvOi:localhost:8800rQ))e!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8lQ9 e!uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o\Q/ O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rules$157004183467WkNdH:localhost:8800dQ? O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility$157004183366iKFsz:localhost:8800^Q3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access$157004183365ZxPWz:localhost:8800^Q3 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels$157004183264ktTbL:localhost:8800 dJpV$>2j8p> v D|J P\* v D  | J  V $ \ * P j  1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieoo1e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4 1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig s1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0 1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV01e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM %1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM $1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM #1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0 1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIk1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIj1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzIi1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw91e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw81e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw71e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yn1e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Ym1e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Yl1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0%1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0$1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0#1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0"1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU1e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 01e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI 1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE"1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8d1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8e1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts 1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cd1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cc1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cb1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__ca1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48?1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48>1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48=1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo 1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek{1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekz1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7eky1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc 1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc 1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA Y1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr81e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0R1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0Q1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0P1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego  aOQag $157004183467WkNdH:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1539}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183366iKFsz:localhost:8800", {"sha256": "fG+thi3Rq0cIgpD3RdtBm196M3enqCgj/LQ2e8ro6Lc"}]], "type": "m.room.join_rules", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004183467WkNdH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041834749, "hashes": {"sha256": "OCk745LTy8VlMRvIEy6lY8uQ2LhSsvDJr7+R9y0jU2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZZsHEga8//pZxYvpi4JBMMrHTm9Ik5JzooVRKSqcjm1cZw/pyB0eOl8DMj9310z5xwoDmweo7FieWlDfqdJQCg"}}, "unsigned": {"age_ts": 1570041834749}}rOQa $157004183366iKFsz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1538}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183365ZxPWz:localhost:8800", {"sha256": "fDIG3tg5nFv9GntOBSzErtaPWKwJtcQJtH+4vHEeuSA"}]], "type": "m.room.history_visibility", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004183366iKFsz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041833965, "hashes": {"sha256": "ONRxwJf0ssdKYW33UI4EBJ2pcqmJdyURfGf2eGkG/ss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QjxC5SsoSX+cW9rxa5kX6b8i+Ri0xfbYvPdZExF1eyx6RgzlS806WJFSYqAb3aW/8XcuoiyIgfhFpqFgj4VsCg"}}, "unsigned": {"age_ts": 1570041833965}}hOQau $157004183365ZxPWz:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1537}{"auth_events": [["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}], ["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}]], "prev_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}]], "type": "m.room.guest_access", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004183365ZxPWz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041833265, "hashes": {"sha256": "VhYb6IFwB6XIJWj6SftuBxWGk4zldk9PJVO//sDqZ34"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "om/udf2q8etBujHlUft1bK0/gLHbf6b2jwOJRDTNlhvpxPSTKR6ZvxnrGZzsGPufLYmsdayJDVn08oWZVZBsCQ"}}, "unsigned": {"age_ts": 1570041833265}} 0hc t  o  u ) E KFLhy"to#?PT7Qe1!aVxOoyiLLnxmzgLJat:localhost:8800$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wT6Qe0!hYPSaMPGsLnvYSmwhg:localhost:8800$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyET5Qe/!hYPSaMPGsLnvYSmwhg:localhost:8800$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxII4QO.!fuHSJcznvGQnoYoLPW:localhost:8800$157004187190ZLRgN:localhost:8800I3QO-!fuHSJcznvGQnoYoLPW:localhost:8800$157004187089FLOwV:localhost:8800I2QO,!fuHSJcznvGQnoYoLPW:localhost:8800$157004186988RkcKb:localhost:8800I1QO+!fuHSJcznvGQnoYoLPW:localhost:8800$157004186887sKbQU:localhost:8800I0QO*!fuHSJcznvGQnoYoLPW:localhost:8800$157004186786RVgKA:localhost:8800I/QO)!fuHSJcznvGQnoYoLPW:localhost:8800$157004186785fjAIs:localhost:8800T.Qe(!hYPSaMPGsLnvYSmwhg:localhost:8800$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgT-Qe'!hYPSaMPGsLnvYSmwhg:localhost:8800$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsT,Qe&!hYPSaMPGsLnvYSmwhg:localhost:8800$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sT+Qe%!hYPSaMPGsLnvYSmwhg:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usT*Qe$!hYPSaMPGsLnvYSmwhg:localhost:8800$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCoT)Qe#!KeqmSjifajNKxtgqhj:localhost:8800$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQT(Qe"!KeqmSjifajNKxtgqhj:localhost:8800$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_EI'QO!!jIfvTrwedrWLubsnlM:localhost:8800$157004185983tEalY:localhost:8800I&QO !jIfvTrwedrWLubsnlM:localhost:8800$157004185982diSTq:localhost:8800I%QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185881ahRFW:localhost:8800I$QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185780kUwpq:localhost:8800I#QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185679NNCIw:localhost:8800I"QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185678lyJsT:localhost:8800T!Qe!KeqmSjifajNKxtgqhj:localhost:8800$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIT Qe!KeqmSjifajNKxtgqhj:localhost:8800$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMTQe!KeqmSjifajNKxtgqhj:localhost:8800$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQTQe!KeqmSjifajNKxtgqhj:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QTQe!KeqmSjifajNKxtgqhj:localhost:8800$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUTQe!EyyNoldCLUdFHzXTDP:localhost:8800$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xITQe!EyyNoldCLUdFHzXTDP:localhost:8800$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9QIQO!icheSPMgpemswIdQkw:localhost:8800$157004184976eGgUf:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184875Wzayo:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184774CHMNl:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184773rCaRK:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184672SfwvS:localhost:8800IQO!icheSPMgpemswIdQkw:localhost:8800$157004184571IVgQM:localhost:8800TQe!EyyNoldCLUdFHzXTDP:localhost:8800$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0TQe !EyyNoldCLUdFHzXTDP:localhost:8800$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMTQe !EyyNoldCLUdFHzXTDP:localhost:8800$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjoTQe !EyyNoldCLUdFHzXTDP:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QTQe !uSBqTezaFcMnlowsEf:localhost:8800$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YTQe !EyyNoldCLUdFHzXTDP:localhost:8800$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183969fQFzs:localhost:8800I QO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183868QRvOi:localhost:8800T Qe!uSBqTezaFcMnlowsEf:localhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8T Qe!uSBqTezaFcMnlowsEf:localhost:8800$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oT Qe!uSBqTezaFcMnlowsEf:localhost:8800$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEI QO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183467WkNdH:localhost:8800IQO!vpuivIQDEhyuhOLWpg:localhost:8800$157004183366iKFsz:localhost:8800 [ ?[wOQa $157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1543}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183467WkNdH:localhost:8800", {"sha256": "yRsqayXTqVPDQYaoHjh0NSgVH9n7AfMl34N7i/nKJAA"}]], "type": "m.room.canonical_alias", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"alias": "#__ANON__-13:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004183868QRvOi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041838234, "hashes": {"sha256": "cM5S6UD1F8aA9L0PjpvcXpnKEzrXlO5P0LISmelVRhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dl1b7NwOKbnVzaAajc2B69x7uwLhE89pEv/sEgzQSSfs3IFuUtv+hZ+MZIvElnQ+aNaLLA03ssf1KAeHHvyFBA"}}, "unsigned": {"age_ts": 1570041838234}}:eQa$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1542}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o"], "type": "m.room.aliases", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": []}, "depth": 11, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041837207, "hashes": {"sha256": "xA8HzAs6E6aO9JKguIJkULwo5Gr+ozskgHILV+mQGts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rYYJzxZjMQnt06Kfady0N/DCwrVkZfl3rzLM0Ou481fsr0bIffpSHXqx3Z4Iu0MHHwaGsh57qdBI1dFMRv+HDA"}}, "unsigned": {"age_ts": 1570041837207, "replaces_state": "$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg"}}'eQa[$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1541}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE"], "type": "m.room.canonical_alias", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041836357, "hashes": {"sha256": "jOZTKIUgJgWzHxQAkpMT6WwczBlyooi2Lr8CFkqpueI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aO4fNj8xtxu1QWmUJQe7lThO5/QJQ6BA576UypDj22+rXm/4SfR0BZFiuXlDibNvaZamKl3zGxfGT154LE/nAA"}}, "unsigned": {"age_ts": 1570041836357, "replaces_state": "$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig"}}=eQa$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1540}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig"], "type": "m.room.tombstone", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!vpuivIQDEhyuhOLWpg:localhost:8800"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041830029, "hashes": {"sha256": "xMME2OtwKYaxY0wbLOhxYWEEFm12e/xrZVdi6KsDmKQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0G0xcrRJvhGLrND99s5wVZ/Jg2yP63zI8xvsJpEv2Q7b8bxXVzrjwqFn2CvN8yDE7u3xAG5bfwOCpjnQ2De4Dg"}}, "unsigned": {"age_ts": 1570041830029}} t T d L \ <4  |$ l,DeeQ$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800 &eeQ$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0!sPWVGnipjiiWQpywNO:localhost:88000eeQ$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y!loalEsWaTYwrVUNJLr:localhost:8800eeQ$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g!NQgavrmiCPUVaVjssy:localhost:8800eeQ$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800heeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800ہeeQ$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M!mMsxpaIlcykPuOnDyl:localhost:8800ہeeQ$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ!oXKJArsPmtgaYANBrg:localhost:8800meeQ$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU!mogJVPxghalmKbblUq:localhost:8800 eeQ$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800)eeQ$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0!ffijTnPMbTrDXHqOXf:localhost:8800ˁeeQ$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk!mMsxpaIlcykPuOnDyl:localhost:8800ԁeeQ$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28!HmkcAMkMjWRhTDJMsy:localhost:88005eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800ЁeeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI!GiSxJsKZhQVHBkrVPn:localhost:8800>eeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800 eeQ$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800 ZeeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800 ceeQ$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800 _eeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800 C TP   p 7 4  T  p 7 S  o6Rqnm5Q8n5QU8e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHksha2568e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIsha256 8e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8sha256 Q8e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucsha256 O8e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgsha256 H8e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3pssha256 8e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_cksha256 8e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAsha256 8e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQsha256 ^8e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIsha2568e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQsha256 x8e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqksha2568e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5Usha2568e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcsha2568e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTssha256 8e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAsha2568e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqgsha2568e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Ysha256 47e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYsha256i8e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0sha256%8e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCksha2568e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUsha256\8e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIsha256L8e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuYsha2568e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszksha2568e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQsha256>8e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czIsha2568e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgsha2568e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYsha256;8e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0sha256 m8e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwsha256\8e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Ysha256 8e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qgsha2568e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hssha2568e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICgsha2568e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgsha2568e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCosha2568e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4sha256 8e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQMsha2568e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIsha256_8e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagsha256k8e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Msha256`8e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMsha256v8e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwsha2568e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcsha2568e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7ssha2568e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iUsha2568e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0sha256Y8e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wsha2568e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xwsha2568e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8sha256 7e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYsha256^8e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9Esha2568e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0ksha2568e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-ksha256 m8e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgsha2568e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czyssha2568e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu4sha25638e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUsha25698e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIsha2568e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Esha256e8e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQsha256c8e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIsha256O8e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMosha256898e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175ksha256 Q8e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKEsha256 8e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcsha256 "]& $ U n D@IqY'&)h}Q/ e'!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rules$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsj|Q3 e&!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s {Q']e%!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usdzQ' e$!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.create$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCoyQ3 ee#!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQgxQ- e"!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstone$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E]wQ/ O!!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rules$157004185983tEalY:localhost:8800evQ? O !jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility$157004185982diSTq:localhost:8800_uQ3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access$157004185881ahRFW:localhost:8800_tQ3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels$157004185780kUwpq:localhost:8800sQ']O!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$157004185679NNCIw:localhost:8800YrQ' O!jIfvTrwedrWLubsnlM:localhost:8800m.room.create$157004185678lyJsT:localhost:8800pqQ? e!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibility$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIhpQ/ e!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rules$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMjoQ3 e!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ nQ']e!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QdmQ' e!KeqmSjifajNKxtgqhj:localhost:8800m.room.create$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUlQ3 ee!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjogkQ- e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstone$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q]jQ/ O!icheSPMgpemswIdQkw:localhost:8800m.room.join_rules$157004184976eGgUf:localhost:8800eiQ? O!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility$157004184875Wzayo:localhost:8800_hQ3 O!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access$157004184774CHMNl:localhost:8800_gQ3 O!icheSPMgpemswIdQkw:localhost:8800m.room.power_levels$157004184773rCaRK:localhost:8800fQ']O!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$157004184672SfwvS:localhost:8800YeQ' O!icheSPMgpemswIdQkw:localhost:8800m.room.create$157004184571IVgQM:localhost:8800pdQ? e!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0hcQ/ e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rules$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMjbQ3 e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levels$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo aQ']e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q`Q3 ee !uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUd_Q' e !EyyNoldCLUdFHzXTDP:localhost:8800m.room.create$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4h^Q))O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800$157004183969fQFzs:localhost:8800b]Q9 O!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias$157004183868QRvOi:localhost:8800\Q))ee!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg M+j8pW> w E ] } K  Q  W % _ -e3k9q? wE}K%Q1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak %1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw 1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM 1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 s1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 61e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx81e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U'1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM21e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c/1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM_1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8z1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY f1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c>1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 \1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8v1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM01e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIb1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4f1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ{1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY}1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIB1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI*1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE+1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8(/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU%1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs{1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k 1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wh1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UJ1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y40e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcz1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsI1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEc1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAV1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEa1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI11e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg  \ov eQay$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1547}{"auth_events": ["$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4"], "prev_events": ["$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4"], "type": "m.room.member", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-302", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-302:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041841316, "hashes": {"sha256": "LPlriNeqYL9im+V7GY1DRo/1+3Ggjy3P0FNNFTzvx6M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e7gxScPpZDM7Ua+z5C4HUrpNu+2/w8nkddF+I4Hy+AswowcCvoREbKQshApK6NueWwsqwmQ6LUynFxWJ0d8gBA"}}, "unsigned": {"age_ts": 1570041841316}}` eQaM$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800{"token_id": 321, "stream_ordering": 1546}{"auth_events": ["$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU", "$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4", "$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw"], "prev_events": ["$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8"], "type": "m.room.power_levels", "room_id": "!uSBqTezaFcMnlowsEf:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"users": {"@anon-20191002_181700-301:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041840672, "hashes": {"sha256": "cjFbkEAjOeDmFLaLCKo2dacjpHQpKO5GsF9gXLxGEis"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CuDOZkF84Wha7FQ96vFyFyzU0ZK+MK6FAt0IBd48hmqbSwHVJzgmJLrLLlgTlwhyZs5jxV7UzzAjZ96G1cZoBg"}}, "unsigned": {"age_ts": 1570041840672, "replaces_state": "$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU"}}ieQa_$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1545}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-302:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041839821, "hashes": {"sha256": "/F/Zgytzm1nOXOL5DV6/d9te0Mamh7vTl+hS+sGyA5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fDTirVelpeFfn5iQBgc6Bmh6j4yJ5ovFDQjPIAYvF911iEZsKewcC8nObALw9XMZu4eTjUeLP75LeeEhJHp1DQ"}}, "unsigned": {"age_ts": 1570041839821}} OQae $157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800{"token_id": 321, "stream_ordering": 1544}{"auth_events": [["$157004183264ktTbL:localhost:8800", {"sha256": "aiNH7aBNLAkLBsTDMuEYwF5+b2AZncykpV28B4SDptA"}], ["$157004183062AwGkL:localhost:8800", {"sha256": "QGjBxnR/BfsMLxFbg8N+TsgGsRyN7YsEVowWTmxnREc"}], ["$157004183063NdEPw:localhost:8800", {"sha256": "KKhJaZDrQaPadvFUb/LI83L7G4naVBy4fInDRyI6PHU"}]], "prev_events": [["$157004183868QRvOi:localhost:8800", {"sha256": "ueuGwYRtYpziD+mofnicj7XZEO7svVIJWuJPcdcGdAQ"}]], "type": "m.room.aliases", "room_id": "!vpuivIQDEhyuhOLWpg:localhost:8800", "sender": "@anon-20191002_181700-301:localhost:8800", "content": {"aliases": ["#__ANON__-13:localhost:8800", "#__ANON__-14:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "event_id": "$157004183969fQFzs:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041839645, "hashes": {"sha256": "WTmO9bMC23vRqTTap1himlTKbO7IFW0taR7y+qSnkgE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uY/aS3lythDlTG4YUD34YnEq+D8XSUBKoYoxgSB16U4n6szrD1ocGSHrBVbsXRt6HKl0F7f+IDkhriBNK8Z2CQ"}}, "unsigned": {"age_ts": 1570041839645}} FVj8p> v D  | J  P  V V $ b \ *0i7o= uC{IP1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI T1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y +1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c 1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU01e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to0e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE|1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 1e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY ?1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY i1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0N1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM 1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 b1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8>1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY 1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU`1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 E1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k21e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA a1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE61e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM}1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M l1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE i1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc[1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM41e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg(1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Io1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg x1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM >1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsb1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYe1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo$1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QL1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A Q1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI 1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo 8l D `86]c!E@anon-20191002_181700-311:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtpJjJyXl9fZkwjbXE5QncKMDAyZnNpZ25hdHVyZSAlQMVETAI9JwraP-0coRf6nU91QgVwG3VZKwPV1QeoogoBNVFQNMSXM127.0.0.1Perl + Net::Async::HTTP/0.44m:5]c!E@anon-20191002_181700-310:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpGdCZ5bVg2OF5MNENsZTUKMDAyZnNpZ25hdHVyZSAGdnSPXhdcyvh2jrndHbGjSQGNcRvNC_jdA14cLC5axwoUKYXDPZQOO127.0.0.1Perl + Net::Async::HTTP/0.44m%4]c!E@anon-20191002_181700-309:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQoOEPQWZYGAR127.0.0.1Perl + Net::Async::HTTP/0.44m#3]c!E@anon-20191002_181700-308:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgoVRKBCOUWEF127.0.0.1Perl + Net::Async::HTTP/0.44ms2]c!E@anon-20191002_181700-307:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgoBEZNVUIADU127.0.0.1Perl + Net::Async::HTTP/0.44m .1]c!E@anon-20191002_181700-306:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwoXZDIPYWWOD127.0.0.1Perl + Net::Async::HTTP/0.44m0]c!E@anon-20191002_181700-305:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQoPDQTBQSPGX127.0.0.1Perl + Net::Async::HTTP/0.44m&/]c!E@anon-20191002_181700-304:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1OwoMQWNAFYDXK127.0.0.1Perl + Net::Async::HTTP/0.44məB.]c!E@anon-20191002_181700-303:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAoFUOYNGGDMQ127.0.0.1Perl + Net::Async::HTTP/0.44mp,-]c!E@anon-20191002_181700-302:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQoPAWIWMHYHH127.0.0.1Perl + Net::Async::HTTP/0.44m=o Vy? _ 2  ~ Q % q D  c 6 U (uHg;ZrER%.zN!m@_2Ll,-,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 +Q !nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 +Q !nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!ntuwVdUxfzNIhIKYaz:localhost:880077,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 66,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 55,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 44,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 33,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 22,Q!ntuwVdUxfzNIhIKYaz:localhost:880011,Q!ntuwVdUxfzNIhIKYaz:localhost:880000,Q!ntuwVdUxfzNIhIKYaz:localhost:8800//,Q!ntuwVdUxfzNIhIKYaz:localhost:8800..,Q!ntuwVdUxfzNIhIKYaz:localhost:8800--,Q!ntuwVdUxfzNIhIKYaz:localhost:8800,,,Q!ntuwVdUxfzNIhIKYaz:localhost:8800+++Q !ntuwVdUxfzNIhIKYaz:localhost:8800**,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800+Q !nteAxExBGJfaGIpuCx:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800+Q !nftGLlLhVgzOwOFufp:localhost:8800,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L L,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K K,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J J,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I I,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H H,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G G,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F F,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E E,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D D+Q !mvgUHEsfGqDkPQUvfG:localhost:8800 C C,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800+Q !msMfSdLIAvklSSAnci:localhost:8800,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 +Q !mogJVPxghalmKbblUq:localhost:8800 ,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!nvclDopiBLEOKBIheH:localhost:8800BB,Q!nvclDopiBLEOKBIheH:localhost:8800AA+Q !nvclDopiBLEOKBIheH:localhost:8800@@,Q!ntuwVdUxfzNIhIKYaz:localhost:8800::,Q!ntuwVdUxfzNIhIKYaz:localhost:880099,Q!ntuwVdUxfzNIhIKYaz:localhost:880088,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800 Vy? _ 2  ~ Q % q D  c 6 U (uHg;ZrER%.zN!m@_2Ll,-,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nfxDdcgDfooxyiAzaB:localhost:8800 +Q !nfxDdcgDfooxyiAzaB:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!nhbUIcIbhuXkRqfeDa:localhost:8800 +Q !nhbUIcIbhuXkRqfeDa:localhost:8800 ,Q!ntuwVdUxfzNIhIKYaz:localhost:880077,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 66,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 55,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 44,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 33,Q!ntuwVdUxfzNIhIKYaz:localhost:8800 22,Q!ntuwVdUxfzNIhIKYaz:localhost:880011,Q!ntuwVdUxfzNIhIKYaz:localhost:880000,Q!ntuwVdUxfzNIhIKYaz:localhost:8800//,Q!ntuwVdUxfzNIhIKYaz:localhost:8800..,Q!ntuwVdUxfzNIhIKYaz:localhost:8800--,Q!ntuwVdUxfzNIhIKYaz:localhost:8800,,,Q!ntuwVdUxfzNIhIKYaz:localhost:8800+++Q !ntuwVdUxfzNIhIKYaz:localhost:8800**,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800,Q!nteAxExBGJfaGIpuCx:localhost:8800+Q !nteAxExBGJfaGIpuCx:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800,Q!nftGLlLhVgzOwOFufp:localhost:8800+Q !nftGLlLhVgzOwOFufp:localhost:8800,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 L L,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 K K,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 J J,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 I I,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 H H,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 G G,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 F F,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 E E,Q!mvgUHEsfGqDkPQUvfG:localhost:8800 D D+Q !mvgUHEsfGqDkPQUvfG:localhost:8800 C C,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800 ,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800,Q!msMfSdLIAvklSSAnci:localhost:8800+Q !msMfSdLIAvklSSAnci:localhost:8800,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 ,Q!mogJVPxghalmKbblUq:localhost:8800 +Q !mogJVPxghalmKbblUq:localhost:8800 ,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!nvclDopiBLEOKBIheH:localhost:8800BB,Q!nvclDopiBLEOKBIheH:localhost:8800AA+Q !nvclDopiBLEOKBIheH:localhost:8800@@,Q!ntuwVdUxfzNIhIKYaz:localhost:8800::,Q!ntuwVdUxfzNIhIKYaz:localhost:880099,Q!ntuwVdUxfzNIhIKYaz:localhost:880088,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800,Q!mfzIRinBAGGrZvQAuI:localhost:8800 Db0A\*yGMS! Y ( D   a / |8g5 J v m; s_  R 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gk1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gj0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioS1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioR1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioQ1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk 1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk 1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk 1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAp1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gi1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY 1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY 1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAt1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU c1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU b1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8~1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8}1e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks~1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c=1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c< 1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc]1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEH>21e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEJ1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEI1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkZ1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroAj1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugd1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9ka !~z v 2 Z V RNv 2.*&Nv veeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800iuOOQ$157004187190ZLRgN:localhost:8800$157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800itOOQ$157004187089FLOwV:localhost:8800$157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800isOOQ$157004186988RkcKb:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800irOOQ$157004186887sKbQU:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800iqOOQ$157004186786RVgKA:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800peeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800oeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800neeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800meeQ$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800leeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800keeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800ijOOQ$157004185983tEalY:localhost:8800$157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800iiOOQ$157004185982diSTq:localhost:8800$157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800ihOOQ$157004185881ahRFW:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800igOOQ$157004185780kUwpq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800ifOOQ$157004185679NNCIw:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800eeeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800deeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800ceeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800beeQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800aeeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800`eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800i_OOQ$157004184976eGgUf:localhost:8800$157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i^OOQ$157004184875Wzayo:localhost:8800$157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i]OOQ$157004184774CHMNl:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i\OOQ$157004184773rCaRK:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800i[OOQ$157004184672SfwvS:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800ZeeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800YeeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800XeeQ$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800WeeQ$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800VeeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800 =#BzH  |U  $a/g 5 J  \ * m; O V  P t  D  vj8)#d#d1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ {1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w i1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ $0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMl1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4~1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo01e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ:1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw9 D01e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewk1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q71e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw)1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo 1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4b1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hko1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ61e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gq1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 S1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI21e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk V1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwa1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4x1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk31e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI~1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngN1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIM1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r41e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc001e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAm1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY21e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJki1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 >1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk  jL#p>  v D  | J   Q  1 W % [ ] +ic7o= uC{I)O8Uj1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Ay1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw$1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0N1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0 1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIu1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gd1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY 1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMy1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsO1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0S1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu81e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY01e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYw1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE p1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE I1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcQ1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 A1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 91e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw.1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0*1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7oz1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F41e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs{1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI21e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc *1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg+1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA861e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw d1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y  d \ T LD<5|.&t eeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800 ΁eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:88009eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800=eeQ$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800eeQ$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc!kxTDuIasPNpXtiRsif:localhost:8800jeeQ$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw!sPWVGnipjiiWQpywNO:localhost:8800/eeQ$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E!ZaltdIYVZjCHsCWTZD:localhost:8800BeeQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8!kwXxkGQFkaeenFTQJr:localhost:8800AeeQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM$0Ca_12rddatT7EGhldMDpltBMGxMisx9WPmBJhOzfXI!hSzBsirdPWHtVjagXn:localhost:8800(eeQ$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800eeQ$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg!wAyboOFgsOPwkmgMAI:localhost:8800ށeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829beeQ$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE!jveVPZSXJOJyNDebPO:localhost:8800eeQ$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk!AWfbViAZparIjmDaVT:localhost:8800eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800 3eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU!zuCqeooOnfWkYrQdxA:localhost:8800q 9} 3 w -fJ.gCt e]]Q=$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU@anon-20191002_181700-320:localhost:8800@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800joinanon-20191002_181700-320Cs e]]Q=$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U@anon-20191002_181700-319:localhost:8800@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800joinanon-20191002_181700-319Cr e]]Q=$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI@anon-20191002_181700-318:localhost:8800@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800joinanon-20191002_181700-318Cq e]]Q=$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4@anon-20191002_181700-317:localhost:8800@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800joinanon-20191002_181700-317Cp e]]Q=$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648@anon-20191002_181700-312:localhost:8800@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800joinanon-20191002_181700-312Co e]]Q=$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800joinanon-20191002_181700-311Cn e]]Q=$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800joinanon-20191002_181700-311Cm e]]Q=$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800joinanon-20191002_181700-311Cl e]]Q=$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw@anon-20191002_181700-310:localhost:8800@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800joinanon-20191002_181700-310Ck e]]Q=$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk@anon-20191002_181700-308:localhost:8800@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800joinanon-20191002_181700-308Cj e]]Q=$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU@anon-20191002_181700-307:localhost:8800@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800joinanon-20191002_181700-307Ci e]]Q=$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY@anon-20191002_181700-306:localhost:8800@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800joinanon-20191002_181700-3068h O]]Q=$157004188093UtRbN:localhost:8800@anon-20191002_181700-305:localhost:8800@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800joinanon-20191002_181700-305Cg e]]Q=$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI@anon-20191002_181700-305:localhost:8800@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800joinanon-20191002_181700-3058f O]]Q=$157004186786RVgKA:localhost:8800@anon-20191002_181700-304:localhost:8800@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800joinanon-20191002_181700-304Ce e]]Q=$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us@anon-20191002_181700-304:localhost:8800@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800joinanon-20191002_181700-3048d O]]Q=$157004185679NNCIw:localhost:8800@anon-20191002_181700-303:localhost:8800@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800joinanon-20191002_181700-303Cc e]]Q=$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q@anon-20191002_181700-303:localhost:8800@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800joinanon-20191002_181700-3038b O]]Q=$157004184672SfwvS:localhost:8800@anon-20191002_181700-302:localhost:8800@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800joinanon-20191002_181700-302Ca e]]Q=$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q@anon-20191002_181700-302:localhost:8800@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800joinanon-20191002_181700-302 E<  \5t- %| l d  U  MeeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800_eeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98!AjjrNwXmPTCruHxaJq:localhost:88000eeQ$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U!uSBqTezaFcMnlowsEf:localhost:8800HeeQ$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa8!SyIWYOmcGiASNkPCTB:localhost:8800ǁeeQ$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU!SvKwEALYoNreUvqAlp:localhost:8800eeQ$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms!uxKymrHZeXRYCZwekU:localhost:88006eeQ$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4!KeBlWUQiLYUoILKkTB:localhost:8800 eeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800 feeQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800 4eeQ$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800eeQ$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ!odAvowLhHJcmkKlxFk:localhost:8800eeQ$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4!KXMUzALpMMMKqoQXUS:localhost:8800`eeQ$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800 &eeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800 EeeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI!NQgavrmiCPUVaVjssy:localhost:8800eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800ueeQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    X x p h ` P H @ 8 0 (    xph`0XPH@8( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@Q|O{NzMyLxKwIvHuGtFsDrCqBpAo?n>m=l<k:j9i8h7g5f4e3d2c0b/a.`-_+^*])\([&Z%Y$X#W!V UTSRQPONMLKJIHGF E D C BA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwusrqponmkihgfedcba`~}|{zxwvutsrponmlkjhfedcba`^]\[ZYXUTS~R}_^]\[ZYXWVUTSRPPONMLKJIHEDCBA@?>=<;:96543210/.-,+('}&|%{$z#y"~!x wvutsqponmrlkjih g f e d cba`_^]\[ZYXWVUTSRQPONMLK exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@R|P{OzNyMxLwJvIuHtGsErDqCpBo@n?m>l=k;j:i9h8g6f5e4d3c1b0a/`._,^+]*\)['Z&Y%X$W"V!U TSRQPONMLKJIHGFE D C B A@?>=<;:9876543210/.-,+*)('&%$#"!      ~}{zyxwvtsrqponlkjihgfedc~}|{yxwvutsqponmlkigfedcba_^]\[ZYVUT~S}ba`_^\[ZYWVUTSRQPONMLKJIGFEDCBA?>=<;:87654320/.-,*)~(}'|&{%z$y"x!w vutsrqponmlkjihg f e d c ba`_^]\[ZYXWVUTSRQPONMLK   OQa= $157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1551}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "event_id": "$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q"}, "creator": "@anon-20191002_181700-302:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004184571IVgQM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041845630, "hashes": {"sha256": "WaIjsOrxL/bBHTmYitNAaRWm7T51OtrxBUAntYwE3rY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OXlPQDIGx0gFw4dXpZIb71i5BOiDFmoaEwVRLxmosSTMXfR2+AcIx6avu/D57lemsDI63Bu/hNjXZ5qsTrFgBw"}}, "unsigned": {"age_ts": 1570041845630}} eQa$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1550}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM"], "type": "m.room.history_visibility", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041844130, "hashes": {"sha256": "uAZaUgL64KBAw39Q8pAkcb/cXxNS8OfgPNgDoOk95WQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c22RDSEPjfjXWkQ7t8FrEkgNa4NKEQyrPsRtQz0Irhi9+uS9At9P0R6tbWFagllpfjNWqIYI2hqzxw75J/y5DQ"}}, "unsigned": {"age_ts": 1570041844130}}t eQau$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1549}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo"], "type": "m.room.join_rules", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041843362, "hashes": {"sha256": "XIFSPORPLYFr9faGFw1BXe8z5nT4lPJuoGArY6PJmAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OpaW7HJ06XMaNf/pNYH4cmZop8d8BLqGxtcf5bkPwoMybXvd/oXVVlo653tl2Nljt+0Loatpjg5nxWYyStgJDQ"}}, "unsigned": {"age_ts": 1570041843362}}k eQac$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1548}{"auth_events": ["$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "type": "m.room.power_levels", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"users": {"@anon-20191002_181700-302:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041842623, "hashes": {"sha256": "qkXQdsoc2GOHOqwCmeiVTm6EYOm89PvFTpbPpv1lPGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2pPS6zJAFLfN9YCkazn9JCx72O0Srkab8ZS+dZo0oYucePLEcFZJNARgl+rNBDWAA3muO1ihfVdhFP+xZl/JCw"}}, "unsigned": {"age_ts": 1570041842623}} !}} {  : d # Mwusqomki}h3OOQ$157004185679NNCIw:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800~2eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~1eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~0eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800~/eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~.eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~-eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800~,eeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~+eeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~*eeQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~)eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~(eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~'eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800~&eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~%eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~$eeQ$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800h#OOQ$157004184976eGgUf:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800h"OOQ$157004184976eGgUf:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800h!OOQ$157004184976eGgUf:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800h OOQ$157004184875Wzayo:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184875Wzayo:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184875Wzayo:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184774CHMNl:localhost:8800$157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184774CHMNl:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184774CHMNl:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184773rCaRK:localhost:8800$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184773rCaRK:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800hOOQ$157004184672SfwvS:localhost:8800$157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800~eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800~eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800  @E7R 1 ` k ) J'c n*fqeeQ/ $AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM!EyyNoldCLUdFHzXTDP:localhost:8800m.room.join_rules eQ']$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800joingeQ3 $m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levelsa eQ' $YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800m.room.createe OQ))$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800_ OQ9 $157004183868QRvOi:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias )eQ']$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800joina(eQ' $U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.created&eQ- $ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstoneZ%OQ/ $157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rulesb$OQ? $157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility\#OQ3 $157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access\"OQ3 $157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels!OQ']$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800joinV OQ' $157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.createmeQ? $eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibilityeeQ/ $ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rulesg'eQ3 $rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels eQ']$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800joinaeQ' $6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800m.room.creategeQ3 $wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levelsdeQ- $p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstoneZOQ/ $157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.join_rulesbOQ? $157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.history_visibility\OQ3 $157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.guest_access\OQ3 $157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.power_levelsOQ']$157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.member@anon-20191002_181700-302:localhost:8800joinVOQ' $157004184571IVgQM:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.createmeQ? $Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0!EyyNoldCLUdFHzXTDP:localhost:8800m.room.history_visibility g ghOQau $157004184774CHMNl:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1554}{"auth_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}], ["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}]], "prev_events": [["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}]], "type": "m.room.guest_access", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004184774CHMNl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041847808, "hashes": {"sha256": "ksChPAMorsG9kOkizd+ZtTk7+ycR6ssUzIsEg2DvSHc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VbUkZIc3HjyL7VkW+ipFz7tGiljswYKxHlW+aYVcYtuU069pbYDNQFKkbT5PbR9bBg5UbC/Hvx/drjfkW0OMBw"}}, "unsigned": {"age_ts": 1570041847808}}&OQaq $157004184773rCaRK:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1553}{"auth_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "prev_events": [["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "type": "m.room.power_levels", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"users": {"@anon-20191002_181700-302:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004184773rCaRK:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041847116, "hashes": {"sha256": "j7ApYZRcuRoB00tWqa9zhRPy2UhxyLkkvOUULWTQtRg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m2o2CE9z/chzlAMFc2pBQhXLZHOQS7jWATRot9/LIc2pXwHf42r03OCWZ72D+YPIW26q+REZNQNpc89/F6UvCA"}}, "unsigned": {"age_ts": 1570041847116}}OQa# $157004184672SfwvS:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1552}{"auth_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}]], "prev_events": [["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}]], "type": "m.room.member", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-302", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-302:localhost:8800", "event_id": "$157004184672SfwvS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041846317, "hashes": {"sha256": "q/VbWy7YNhtlkXFhiZYAz82FVqhOtUVNblXL6H3L8UA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EZluJo2k/whHdRQMotB3dNU3sTz9ZjdFu1Ek3IVwX0WcZkfGpjbfaehfVQ7QXKrUYSvaKQMSvIgGmSeOxtXYCw"}}, "unsigned": {"age_ts": 1570041846317}} }@+%R c1i7>   v]W D  | J   PoK  = Vp $  \ +}Q+j81e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM1e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw 1e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA T1e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts1e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 m1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A _1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds :1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI 1e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490I1e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU1e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w61e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYi1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk11e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU A1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk 71e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA r1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 -1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds +1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs 1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI l1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 61e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY81e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIN1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgl1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIH1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk]1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjsA1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYv1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIS1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ+1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip421e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw81e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g%1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 21e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ d %d=eQa$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1557}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0"], "type": "m.room.tombstone", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!icheSPMgpemswIdQkw:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041845530, "hashes": {"sha256": "U5N8V0UC4n7CVqRnuQzmysgNfDdiw17Cp5IQ79bTy40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+kEOcYsZ3UhFg5E+WWb80S1SsjvSfJYJ27XGC81Q29hLA3pSwslHoxhRvMJeWntPZM+tOp3qHxSofWwSvlfxCg"}}, "unsigned": {"age_ts": 1570041845530}}aOQag $157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1556}{"auth_events": [["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}], ["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "prev_events": [["$157004184875Wzayo:localhost:8800", {"sha256": "yv02ZN6VL9vmK0nLf6Mcf3y1Iv67LtOFF3A4laWPuMY"}]], "type": "m.room.join_rules", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004184976eGgUf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041849149, "hashes": {"sha256": "w3Scupr2FRzPIWlQWYb0hUEKmP5IBvdGyMr6GUet/TY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iMBR8RtwdB1QrWwPJeF+R6S6cCDwUZOhFNSDdEvB2cKzcUT9CcPb/UJIbWtL+39QqMK+QV0NlaBsKQaBCqtACQ"}}, "unsigned": {"age_ts": 1570041849149}}rOQa $157004184875Wzayo:localhost:8800!icheSPMgpemswIdQkw:localhost:8800{"token_id": 322, "stream_ordering": 1555}{"auth_events": [["$157004184773rCaRK:localhost:8800", {"sha256": "lGdwNAQYQfcyg4b+NaaxQtASt84Z9qPhvm9/wMnPa7s"}], ["$157004184571IVgQM:localhost:8800", {"sha256": "PAMF9i4FnZ60He7sYa56wdGgl2faB3qlNhG4zfEkQ/I"}], ["$157004184672SfwvS:localhost:8800", {"sha256": "a4UAXMICBnxyybFlSROtQSu/MtLIPaccuHERzepbD4Y"}]], "prev_events": [["$157004184774CHMNl:localhost:8800", {"sha256": "UiklwiytnmXyry6RzDYd+ogG+wBkCXl5D0H/od+EY0g"}]], "type": "m.room.history_visibility", "room_id": "!icheSPMgpemswIdQkw:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004184875Wzayo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041848441, "hashes": {"sha256": "ltoGYftRcnXR9JieZm9JWaKY527en5bNxmIeU8SUEj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NEAoTWQzsco3S0fJrhZsKCKjlnPPJkIgKgN/UUnBBHV2GGD0M0IMmFzqI473mii59jEcOi2XOZK1L8drS0WnAA"}}, "unsigned": {"age_ts": 1570041848441}} /d Y N Y o ! o  d dz,,z!oz,BBV@eL$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYsha256Kc! ʺ:yGC~u&V?eL$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5ksha256BhsXZB~e\,N^<#K>OL$157004188598DcHDt:localhost:8800sha256' Հ"4!-XnʳICzlPV=eL$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQsha256aP{AHC=Hf̶dV<eL$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tosha256/g(ōy&c JZvHEK;OL$157004188397MRiZP:localhost:8800sha256,t˥;SO0tx:!W诮CT}[K:OL$157004188296OVWxu:localhost:8800sha256%ab-_WL{Iq{Q3K9OL$157004188195thBOS:localhost:8800sha256E]CX?px t# *UkfL(K8OL$157004188194vdqBG:localhost:8800sha25669 T)K11Aڬx"86:8ʮoK7OL$157004188093UtRbN:localhost:8800sha256)w鼀T}S*_>:elWK6OL$157004187992XwpoQ:localhost:8800sha256 U ^# ׳вqŖG;=RV5eL$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQsha256AWb7gsgI[8V4eL$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwsha256_Iz]E#cx,R($V3eL$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Isha256|I"aeȂH&ljٱ [BV2eL$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4sha256oD$01EĪl薵V1eL$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIsha256zXӹM rZ+tjxi'$ +V0eL$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wsha256FxnI 392"ۘ%=\V/eL$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEsha256t{}rNOs=7GaSdMl!V.eL$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIsha256;a 7hln5uL<(m̃K-OL$157004187190ZLRgN:localhost:8800sha256Puf+.}:gyBGu-:_9O|K,OL$157004187089FLOwV:localhost:8800sha256H񕣇^phx8TlkH:6K+OL$157004186988RkcKb:localhost:8800sha256eG"hP/,*nJb @uOhK*OL$157004186887sKbQU:localhost:8800sha256EHyI.9䵞Xڞ-8*r{5K)OL$157004186786RVgKA:localhost:8800sha256EKmwvWu>7a#R-R~kQFL;SYK(OL$157004186785fjAIs:localhost:8800sha256X\.pxڟ7NAV'eL$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgsha256R7I?K OL$157004185983tEalY:localhost:8800sha256؅D? 2J*䅔T|@LPKOL$157004185982diSTq:localhost:8800sha256D aUˊog7]4gKOL$157004185881ahRFW:localhost:8800sha256~%∍O;b>-N=:%EÂWbKOL$157004185780kUwpq:localhost:8800sha256*j"Ɋ=Ɣ "!nֵF\KOL$157004185679NNCIw:localhost:8800sha256 g\먺V#.-#r8KOL$157004185678lyJsT:localhost:8800sha256ƺ璨Ƶ(_#hQYVeL$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIsha256xâ94_Kk](#a}FXVeL$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMsha256gh-!5/Cg_ tuwcVeL$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQsha256{v?/b!MAG\Q9VeL$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qsha256(t-g᪤Z}7li0VeL$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUsha256KQa g:M (α`VeL$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIsha256+1o5/u,4 g&E\*P$ݬVeL$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qsha256j|ʣ lݳ'*a1LvSKOL$157004184976eGgUf:localhost:8800sha2561^"9 *j`CL̨Vy@=5xKOL$157004184875Wzayo:localhost:8800sha2566dޕ/+I|".Ӆp8 %<n w  F f  E t AgD%Sy ~OQ']$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800VOQ' $157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.creategeQ3 $qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelsm eQ? $hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibilitye eQ/ $w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rulesg eQ3 $lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels eQ']$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800a eQ' $tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800m.room.creategeQ3 $dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levelsdeQ- $O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstoneZOQ/ $157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rulesbOQ? $157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility\OQ3 $157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access\OQ3 $157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels~OQ']$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800VOQ' $157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.createmeQ? $PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibilityeeQ/ $VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rulesg~eQ3 $QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels }eQ']$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800a|eQ' $U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.createg{eQ3 $rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levelsdzeQ- $ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800m.room.tombstoneZyOQ/ $157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.join_rulesbxOQ? $157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.history_visibility\wOQ3 $157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.guest_access\vOQ3 $157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels~uOQ']$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800VtOQ' $157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800m.room.createmseQ? $eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800m.room.history_visibilityereQ/ $ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800m.room.join_rulesgqeQ3 $ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800m.room.power_levels peQ']$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800m.room.member@anon-20191002_181700-303:localhost:8800aoeQ' $6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800m.room.creategneQ3 $wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800m.room.power_levelsdmeQ- $p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800m.room.tombstoneZlOQ/ $157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800m.room.join_rules FA4 Z-zMtGg: Q $ 1  ~l? _ ^ o B  b 5 M  U (-zM S&l?,Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ _,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` `,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OBWkjfrDCNgYFfblia:localhost:8800<<+Q !OBWkjfrDCNgYFfblia:localhost:8800;;,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800+Q !NrxQuziwSWzsHuXIlG:localhost:8800*Q!NhWgOTYzEPRwAxRQvS:localhost:8800ww*Q!NhWgOTYzEPRwAxRQvS:localhost:8800vv*Q!NhWgOTYzEPRwAxRQvS:localhost:8800uu*Q!NhWgOTYzEPRwAxRQvS:localhost:8800tt+Q !OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OXpGdKbowFUTChPdmF:localhost:8800 yU,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ ^,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] ],Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ \+Q !OCEHAjcOXWNyWIESIS:localhost:8800 [ [,Q!OBWkjfrDCNgYFfblia:localhost:8800BB,Q!OBWkjfrDCNgYFfblia:localhost:8800AA,Q!OBWkjfrDCNgYFfblia:localhost:8800@@,Q!OBWkjfrDCNgYFfblia:localhost:8800??,Q!OBWkjfrDCNgYFfblia:localhost:8800>>,Q!OBWkjfrDCNgYFfblia:localhost:8800==,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800+Q !OaCEdDAiatpwYcagUb:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800+Q !OWGKxAmTrHLciIdrJi:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800+Q !OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU,Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT+Q !OMkiVTuuOEeiFAXtUY:localhost:8800SS,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OMkiVTuuOEeiFAXtUY:localhost:8800 [[,Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY,Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX,Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW,Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OXpGdKbowFUTChPdmF:localhost:8800 +Q !OXpGdKbowFUTChPdmF:localhost:8800 FA4 Z-zMtGg: Q $ 1  ~l? _ ^ o B  b 5 M  U (-zM S&l?,Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ _,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` `,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OBWkjfrDCNgYFfblia:localhost:8800<<+Q !OBWkjfrDCNgYFfblia:localhost:8800;;,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800,Q!NrxQuziwSWzsHuXIlG:localhost:8800+Q !NrxQuziwSWzsHuXIlG:localhost:8800*Q!NhWgOTYzEPRwAxRQvS:localhost:8800ww*Q!NhWgOTYzEPRwAxRQvS:localhost:8800vv*Q!NhWgOTYzEPRwAxRQvS:localhost:8800uu*Q!NhWgOTYzEPRwAxRQvS:localhost:8800tt+Q !OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OXpGdKbowFUTChPdmF:localhost:8800 yU,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ ^,Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] ],Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ \+Q !OCEHAjcOXWNyWIESIS:localhost:8800 [ [,Q!OBWkjfrDCNgYFfblia:localhost:8800BB,Q!OBWkjfrDCNgYFfblia:localhost:8800AA,Q!OBWkjfrDCNgYFfblia:localhost:8800@@,Q!OBWkjfrDCNgYFfblia:localhost:8800??,Q!OBWkjfrDCNgYFfblia:localhost:8800>>,Q!OBWkjfrDCNgYFfblia:localhost:8800==,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800,Q!OaCEdDAiatpwYcagUb:localhost:8800+Q !OaCEdDAiatpwYcagUb:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800,Q!OWGKxAmTrHLciIdrJi:localhost:8800+Q !OWGKxAmTrHLciIdrJi:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800+Q !OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU,Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT+Q !OMkiVTuuOEeiFAXtUY:localhost:8800SS,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OJilSqnQvLgoXSqRaW:localhost:8800 ,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OSHhtkGUjpUCkXwIhj:localhost:8800,Q!OMkiVTuuOEeiFAXtUY:localhost:8800 [[,Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ,Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY,Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX,Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW,Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV,Q!OXpGdKbowFUTChPdmF:localhost:8800 ,Q!OXpGdKbowFUTChPdmF:localhost:8800 +Q !OXpGdKbowFUTChPdmF:localhost:8800 2 2keQac$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1561}{"auth_events": ["$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "type": "m.room.power_levels", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"users": {"@anon-20191002_181700-303:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041853364, "hashes": {"sha256": "xDGEveNt6TdKKESdFfAOKIgq7tsWypSI7vb+wbHD4aM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UBpd65FpBhYfQeXMX7yNbU0cmsQWezi9LWeUpufMPjyHnAURvXe+ZCLzl3/Ac+REJd/GyawOYOmOkF8ENcHkCQ"}}, "unsigned": {"age_ts": 1570041853364}}veQay$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1560}{"auth_events": ["$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU"], "prev_events": ["$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU"], "type": "m.room.member", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-303", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-303:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041852824, "hashes": {"sha256": "CzCmLq3rFwbJejD3ZtYECKdLJ8T0IaDIAxVzYBwLlBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4TEbMIOScwoN+MOpEFWfhUndMJb7Ls5F7wNonew07GeAQhzbLvhfyp3a8gioKA72uXeGORGNj4sE82fYDxreAw"}}, "unsigned": {"age_ts": 1570041852824}}~eQa $6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1559}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"m.federate": false, "room_version": "4", "creator": "@anon-20191002_181700-303:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041852045, "hashes": {"sha256": "E2ySjRiz4tG2JUbhfo6l83pCj0wEmjAjvCr9m8jy+Fw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GbwaTGjPjV9RqZ+tApy7wLDyI4bffcFBxMctlFdR8uRSrAGTfNSSYs5vsGqtSQ6PYKHLoxApY6+2FupHE72Bw"}}, "unsigned": {"age_ts": 1570041852045}}_eQaK$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800{"token_id": 322, "stream_ordering": 1558}{"auth_events": ["$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo", "$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4", "$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q"], "prev_events": ["$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q"], "type": "m.room.power_levels", "room_id": "!EyyNoldCLUdFHzXTDP:localhost:8800", "sender": "@anon-20191002_181700-302:localhost:8800", "content": {"users": {"@anon-20191002_181700-302:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041850345, "hashes": {"sha256": "07cjlp6hUG/f8MThDVya2rCSB7PCDkGPOnCVTpI7bjE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twc+K+/kE99zw8RHTJgZbAvdFjS7lxcnCCun6lK3OWU5UDkHpHEdXh62O1eY6ogdONMVqNGmCIxCG2G9DtocAg"}}, "unsigned": {"age_ts": 1570041850345, "replaces_state": "$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo"}} V f  w ? ^ ku.W!-O?Q ]$157004187089FLOwV:localhost:8800m.room.history_visibility!fuHSJcznvGQnoYoLPW:localhost:8800mɷmɸX@anon-20191002_181700-304:localhost:8800,O3Q ]$157004186988RkcKb:localhost:8800m.room.guest_access!fuHSJcznvGQnoYoLPW:localhost:8800mɴmɵ`@anon-20191002_181700-304:localhost:8800+O3Q ]$157004186887sKbQU:localhost:8800m.room.power_levels!fuHSJcznvGQnoYoLPW:localhost:8800mɲmɲr@anon-20191002_181700-304:localhost:8800*O'Q ]$157004186786RVgKA:localhost:8800m.room.member!fuHSJcznvGQnoYoLPW:localhost:8800mɮmɯ<@anon-20191002_181700-304:localhost:8800) O'Q  ]$157004186785fjAIs:localhost:8800m.room.create!fuHSJcznvGQnoYoLPW:localhost:8800mɫmɬf@anon-20191002_181700-304:localhost:8800,(e?Q ]$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgm.room.history_visibility!hYPSaMPGsLnvYSmwhg:localhost:8800mɦmɨX@anon-20191002_181700-304:localhost:8800$'e/Q ]$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsm.room.join_rules!hYPSaMPGsLnvYSmwhg:localhost:8800mɣXmɤ@anon-20191002_181700-304:localhost:8800&&e3Q ]$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sm.room.power_levels!hYPSaMPGsLnvYSmwhg:localhost:8800mɠamɡ|@anon-20191002_181700-304:localhost:8800 %e'Q ]$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usm.room.member!hYPSaMPGsLnvYSmwhg:localhost:8800mɞRmɞ@anon-20191002_181700-304:localhost:8800$ e'Q  ]$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCom.room.create!hYPSaMPGsLnvYSmwhg:localhost:8800məmɚ%@anon-20191002_181700-304:localhost:8800&#e3Q ]$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQm.room.power_levels!KeqmSjifajNKxtgqhj:localhost:8800mɓmɕ$@anon-20191002_181700-303:localhost:8800#"e-Q ]$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Em.room.tombstone!KeqmSjifajNKxtgqhj:localhost:8800mɀmɑ@anon-20191002_181700-303:localhost:8800!O/Q ]$157004185983tEalY:localhost:8800m.room.join_rules!jIfvTrwedrWLubsnlM:localhost:8800mɎJmɎ@anon-20191002_181700-303:localhost:8800! O?Q ]$157004185982diSTq:localhost:8800m.room.history_visibility!jIfvTrwedrWLubsnlM:localhost:8800mɋmɌ5@anon-20191002_181700-303:localhost:8800O3Q ]$157004185881ahRFW:localhost:8800m.room.guest_access!jIfvTrwedrWLubsnlM:localhost:8800mɈmɉt@anon-20191002_181700-303:localhost:8800O3Q ]$157004185780kUwpq:localhost:8800m.room.power_levels!jIfvTrwedrWLubsnlM:localhost:8800mɆ@mɆ@anon-20191002_181700-303:localhost:8800O'Q ]$157004185679NNCIw:localhost:8800m.room.member!jIfvTrwedrWLubsnlM:localhost:8800mɃ/mɃ|@anon-20191002_181700-303:localhost:8800 O'Q  ]$157004185678lyJsT:localhost:8800m.room.create!jIfvTrwedrWLubsnlM:localhost:8800mɀmɀ@anon-20191002_181700-303:localhost:8800,e?Q ]$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIm.room.history_visibility!KeqmSjifajNKxtgqhj:localhost:8800mzm|@anon-20191002_181700-303:localhost:8800$e/Q ]$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMm.room.join_rules!KeqmSjifajNKxtgqhj:localhost:8800mx=mx@anon-20191002_181700-303:localhost:8800&e3Q ]$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQm.room.power_levels!KeqmSjifajNKxtgqhj:localhost:8800mumv@anon-20191002_181700-303:localhost:8800 e'Q ]$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qm.room.member!KeqmSjifajNKxtgqhj:localhost:8800msms@anon-20191002_181700-303:localhost:8800 e'Q  ]$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBUm.room.create!KeqmSjifajNKxtgqhj:localhost:8800mpmp@anon-20191002_181700-303:localhost:8800&e3Q ]$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIm.room.power_levels!EyyNoldCLUdFHzXTDP:localhost:8800mimk@anon-20191002_181700-302:localhost:8800 < Z x  % C a,Jh3Qoni]@anon-20191002_181700-318:localhost:8800@anon-20191002_181700-318:localhost:8800 anon-20191002_181700-318nh]@anon-20191002_181700-317:localhost:8800@anon-20191002_181700-317:localhost:8800 anon-20191002_181700-317ng]@anon-20191002_181700-312:localhost:8800@anon-20191002_181700-312:localhost:8800 anon-20191002_181700-312nf]@anon-20191002_181700-311:localhost:8800@anon-20191002_181700-311:localhost:8800 anon-20191002_181700-311ne]@anon-20191002_181700-310:localhost:8800@anon-20191002_181700-310:localhost:8800 anon-20191002_181700-310nd]@anon-20191002_181700-308:localhost:8800@anon-20191002_181700-308:localhost:8800 anon-20191002_181700-308nc]@anon-20191002_181700-307:localhost:8800@anon-20191002_181700-307:localhost:8800 anon-20191002_181700-307nb]@anon-20191002_181700-306:localhost:8800@anon-20191002_181700-306:localhost:8800 anon-20191002_181700-306na]@anon-20191002_181700-305:localhost:8800@anon-20191002_181700-305:localhost:8800 anon-20191002_181700-305n`]@anon-20191002_181700-304:localhost:8800@anon-20191002_181700-304:localhost:8800 anon-20191002_181700-304n^]@anon-20191002_181700-302:localhost:8800@anon-20191002_181700-302:localhost:8800 anon-20191002_181700-302n]]@anon-20191002_181700-301:localhost:8800@anon-20191002_181700-301:localhost:8800 anon-20191002_181700-301n\]@anon-20191002_181700-300:localhost:8800@anon-20191002_181700-300:localhost:8800 anon-20191002_181700-300n[]@anon-20191002_181700-299:localhost:8800@anon-20191002_181700-299:localhost:8800 anon-20191002_181700-299nZ]@anon-20191002_181700-298:localhost:8800@anon-20191002_181700-298:localhost:8800 anon-20191002_181700-298nY]@anon-20191002_181700-297:localhost:8800@anon-20191002_181700-297:localhost:8800 anon-20191002_181700-297nX]@anon-20191002_181700-296:localhost:8800@anon-20191002_181700-296:localhost:8800 anon-20191002_181700-296nW]@anon-20191002_181700-295:localhost:8800@anon-20191002_181700-295:localhost:8800 anon-20191002_181700-295nV]@anon-20191002_181700-294:localhost:8800@anon-20191002_181700-294:localhost:8800 anon-20191002_181700-294nU]@anon-20191002_181700-292:localhost:8800@anon-20191002_181700-292:localhost:8800 anon-20191002_181700-292nT]@anon-20191002_181700-291:localhost:8800@anon-20191002_181700-291:localhost:8800 anon-20191002_181700-291nS]@anon-20191002_181700-290:localhost:8800@anon-20191002_181700-290:localhost:8800 anon-20191002_181700-290nR]@anon-20191002_181700-289:localhost:8800@anon-20191002_181700-289:localhost:8800 anon-20191002_181700-289nQ]@anon-20191002_181700-288:localhost:8800@anon-20191002_181700-288:localhost:8800 anon-20191002_181700-288nP]@anon-20191002_181700-287:localhost:8800@anon-20191002_181700-287:localhost:8800 anon-20191002_181700-287nO]@anon-20191002_181700-286:localhost:8800@anon-20191002_181700-286:localhost:8800 anon-20191002_181700-286n_]@anon-20191002_181700-303:localhost:8800@anon-20191002_181700-303:localhost:8800 anon-20191002_181700-303 W ZWOQa# $157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1565}{"auth_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}]], "prev_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}]], "type": "m.room.member", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-303", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-303:localhost:8800", "event_id": "$157004185679NNCIw:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041856815, "hashes": {"sha256": "NnvWYJrAZalQLSvwEuDvWfbBxaGJxbzSbu5WCzlHAGI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o0D72cjJAlKQBAmEfrbHYOlO9lciWWlzahsNw5CQ9kDPUVMTQpA09nZhTrUDUxQxGiMz2GsvE25BX3/P0wScBQ"}}, "unsigned": {"age_ts": 1570041856815}}!OQag $157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1564}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "event_id": "$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E"}, "m.federate": false, "creator": "@anon-20191002_181700-303:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004185678lyJsT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041856132, "hashes": {"sha256": "sl45yDpkpirN5lq27k4Pytbxz6Jmyn7B+rcc0eUWRz8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JVt6zaDZpaTToSbRkW/WKiG41+m9uPy03MRrO+8RcITnFrsCsgR/J06F6qYpA11b0zpsbtQZH6V23+NZXr3cBw"}}, "unsigned": {"age_ts": 1570041856132}}eQa$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1563}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM"], "type": "m.room.history_visibility", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041854697, "hashes": {"sha256": "cWjwvUNjogzCvLxFcC60O0lWzMq4wyyqZfeMR4vLwSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "do9rD5cwPmcaTXctOf9hX5sngwqclUiVdOSPlMH7iBkNf0HIM/mXFylvcZYyDN2pe8Y6dq4J2Zqakz3PDD4/DQ"}}, "unsigned": {"age_ts": 1570041854697}}teQau$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1562}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ"], "type": "m.room.join_rules", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041854013, "hashes": {"sha256": "EnkFinI8IudEhnb/QrYSu4/iWtpX479mr96Oeym6r4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ldMzb7Bp+/b1F9KPUMIuezB2syUl6K2Pq1N1dyPKnoo1QS3vyk3a+LJ5RN1th/0L0dR7n/R+sI9dR7SB8YO3CA"}}, "unsigned": {"age_ts": 1570041854013}}  }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    t h \ P D 8 ,   x l ` T H < 0 $  |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pd` m  mſ; mų mšT mő' mŁ mq ma mE m/ m m< m0 m{ m{$ m(8 m'\ mk mi* m m x m m? mϕ mϒ m¬G m« m¨ mŒ{ m‰ mpa mXl mXj m? m? m m" m m mߞ m m_ m m mE m mvV mu mU mU> m/ m. m m I m] mތ m4 m{ ms mCZ m3 m^ m mw m m} mq mR mN mV m)U m"eT mS m*R mQQ m+P mO mAN mM muIL mqK ma+J mYI m?H m,G mqF m ;E mD m:C mB mA m&@ mHm? m> m= m< m.; mA: mg9 m8 m&7 mK6 ms5 m^4 m\3 mZ2 mV1 mUB0 mQo/ mN. mK- mK, mG+ mF* mBj) m?( m=' m:& m6% m6$ m-# m'#" m%K! m m m3 mJ m  m m m m mz mv mq mm mi md mS m?z m[ m m mo m m? m m mk m}( my mx1 mua ms-  mp DP8,  x l ` T H < 0 $    th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 ( x l ` T H < 0 $  | p d X L @ 4 ( m% m  mv m mը mՇP m^ mS m?R m4^ m m md m mړ m m mB m; m mԭ mԞ mԙ mԃ mvY mr) m] mH mF m04 m m m mk m m mӹ mӶw mӢY mӌ mӇS mr m_c mZU mC m0  m+! mj m mr m m mҲ mҚ mҖ m҂ m} md mK m1p m m| mI m mѧ mђ m}#~ mP=} mP9| m3{ m/z my mx m΅w m΃v mЛu mЇt mk~s m;|r m!%q mp mSo mcn mxm mϱl mϘk m~j m~i m`h m`g mf m^e mňd mβ c m)b m]a m` ms_ m^ m] m\ m͒+[ m͒)Z msY mVX m5kW m5hV m U mT m„S m̢VR m̑*Q moP mSO mRN mMM mKL m.K mJ m$I mͺH m˟eG mˈ F mnE mPD mHC m&B mA m @ m? m> m= mʳ< mʝt; mʛ: mʙ9 mʗT8 mi7 m:6 m%5 m#4 ms3 m .2 m1 m&0 məB/ m mܭn mܘS m܃ mr md m9 m+ m m  m mB mL m۲ mۦ mے mY m( m m# m m̌ m* mگ mڤ mڕ( mڋY m{ mv mr2 mo ml mh mf} m@ m? m m m՞ mٴ mَ mق| mj m` mG m/ m i m m¤ m؞ m|W mo mY? mOs m3_ m m! m mײ mא mm mb mON mEl m- m1 m me m֬ m։ mh m\ mH m? mp,. m=o- mo, m̔+ mȃ* mE) m( m' mǷ3& mdžg% m{$ mg# m^t" mD`! mCE I M K O  Q TTSQUYY[u Q!WFHIeSFQyuugGeBFxW:localhost:8800m&\s Q!mBQpGaIiadEuKBXfOw:localhost:8800m&\|p Q!ozgnwUlebxvzLVwyHW:localhost:8800m&\c Q!TlJCaYlCkOOVzFDlLx:localhost:8800m&\ %a Q!DnUHoxreGexNmjSVpq:localhost:8800m&\2=` Q !rwUuVBrftGHDBOlEZm:localhost:8800m&\=_ Q !CkNvQnbApPIcuKygDk:localhost:8800m&\>^ Q!NboFFVLpJHTeuUKCjM:localhost:8800m&\<] Q  !aZwMKYDXJRlSKjQNWM:localhost:8800m&\4=\ Q !XiwGxQKwjgutEClKUy:localhost:8829m&\<[ Q  !mTlCLZQCmfDuQsJxxp:localhost:8800m&\=W Q!TeraguiGoZoeOGFzlI:localhost:8800m&\N Q!EWkoFeckhXlNyjuIEB:localhost:8800m&\>M Q!utJsNQubeIXvcTKGpx:localhost:8800m&\>L Q!iTQSCiLqRMDtgXtUdC:localhost:8800m&\+C Q!HhYREfUiJTpjWmOuPF:localhost:8800m&\ Q  !hYPSaMPGsLnvYSmwhg:localhost:8800m&\<= Q  !jIfvTrwedrWLubsnlM:localhost:8800m&\I  jrOQa $157004185982diSTq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1568}{"auth_events": [["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}], ["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "prev_events": [["$157004185881ahRFW:localhost:8800", {"sha256": "fiXo7OniiI2mT62AO2I+8NItTj06JUXUw4KU8MD1V2I"}]], "type": "m.room.history_visibility", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004185982diSTq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041859034, "hashes": {"sha256": "z+BnDplDwJ22K2uaVKU6R0sHnBjiivFXPAQZQ+Qzl8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JpoRra3R62QfVBu/cS48OM7zzABEnrI02JLEVn709WMpJjRPojyYcOEPXG18uuSz/VmViQD7UUZLH/duza/BAQ"}}, "unsigned": {"age_ts": 1570041859034}}hOQau $157004185881ahRFW:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1567}{"auth_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}], ["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}]], "prev_events": [["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}]], "type": "m.room.guest_access", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004185881ahRFW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041858300, "hashes": {"sha256": "X8tM9gaE1G6D7I5dBvsBj3CsUIGX9cB7ogEl4lIdB4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gX67DSip+iMAJj9fYoITeWuE+0ciyFCeQFTRFGcxCsKJYEH+iLuWWtuz50ZA5o131HI2oN5B/oiAAtCKghw2AA"}}, "unsigned": {"age_ts": 1570041858300}}&OQaq $157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1566}{"auth_events": [["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "prev_events": [["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "type": "m.room.power_levels", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"users": {"@anon-20191002_181700-303:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004185780kUwpq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041857600, "hashes": {"sha256": "HrLRNYKp/X+lhmfCtu6R4U7LKvkA+/pHGVBWx2q4Oac"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mdAah+JTIwXbOMn2fU1IidroN0oPDwKbnIfc+fLdy3sRzP/f6sxiYFfvTw67i0zP7/mFxdOQHqF9/H2/jbz5Ag"}}, "unsigned": {"age_ts": 1570041857600}} "*T ~  = g e ca_][Ym,VhUOOQ$157004187089FLOwV:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hTOOQ$157004187089FLOwV:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hSOOQ$157004186988RkcKb:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hROOQ$157004186988RkcKb:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hQOOQ$157004186988RkcKb:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hPOOQ$157004186887sKbQU:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hOOOQ$157004186887sKbQU:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hNOOQ$157004186786RVgKA:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800~MeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~LeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~KeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800~JeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~IeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~HeeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800~GeeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~FeeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~EeeQ$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~DeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~CeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~BeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800~AeeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800~@eeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800~?eeQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800h>OOQ$157004185983tEalY:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h=OOQ$157004185983tEalY:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h<OOQ$157004185983tEalY:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h;OOQ$157004185982diSTq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h:OOQ$157004185982diSTq:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h9OOQ$157004185982diSTq:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h8OOQ$157004185881ahRFW:localhost:8800$157004185780kUwpq:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h7OOQ$157004185881ahRFW:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h6OOQ$157004185881ahRFW:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h5OOQ$157004185780kUwpq:localhost:8800$157004185679NNCIw:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800h4OOQ$157004185780kUwpq:localhost:8800$157004185678lyJsT:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800 0vhy" t  o # ? P  VQW s'83.){$vT_Qe!xvblqEscwOtCqJntfF:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwT^Qe!xvblqEscwOtCqJntfF:localhost:8800$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kT]Qe!HhYREfUiJTpjWmOuPF:localhost:8800$yrx24DeUlVPn0WuKurI8zQ-dR2Upm89bUIKk4Y3e82QT\Qe!HhYREfUiJTpjWmOuPF:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkT[Qe!HhYREfUiJTpjWmOuPF:localhost:8800$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_ATZQe!HhYREfUiJTpjWmOuPF:localhost:8800$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kTYQe!HhYREfUiJTpjWmOuPF:localhost:8800$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4TXQe!HhYREfUiJTpjWmOuPF:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUTWQe!HhYREfUiJTpjWmOuPF:localhost:8800$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMETVQe!nvclDopiBLEOKBIheH:localhost:8800$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wTUQe!nvclDopiBLEOKBIheH:localhost:8800$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4TTQe!nvclDopiBLEOKBIheH:localhost:8800$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMTSQe!nvclDopiBLEOKBIheH:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYTRQe!nvclDopiBLEOKBIheH:localhost:8800$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kIQQO!YgaGPEraeLCqHQirin:localhost:8800$157004188598DcHDt:localhost:8800TPQe!aVxOoyiLLnxmzgLJat:localhost:8800$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQIOQO!YgaGPEraeLCqHQirin:localhost:8800$157004188397MRiZP:localhost:8800INQO!YgaGPEraeLCqHQirin:localhost:8800$157004188296OVWxu:localhost:8800IMQO!YgaGPEraeLCqHQirin:localhost:8800$157004188195thBOS:localhost:8800ILQO!YgaGPEraeLCqHQirin:localhost:8800$157004188194vdqBG:localhost:8800IKQO!YgaGPEraeLCqHQirin:localhost:8800$157004188093UtRbN:localhost:8800IJQO!YgaGPEraeLCqHQirin:localhost:8800$157004187992XwpoQ:localhost:8800TIQe!aVxOoyiLLnxmzgLJat:localhost:8800$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toTHQe!aVxOoyiLLnxmzgLJat:localhost:8800$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQTGQe!aVxOoyiLLnxmzgLJat:localhost:8800$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwTFQe!aVxOoyiLLnxmzgLJat:localhost:8800$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0ITEQe!aVxOoyiLLnxmzgLJat:localhost:8800$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4TDQe!aVxOoyiLLnxmzgLJat:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfITCQe!aVxOoyiLLnxmzgLJat:localhost:8800$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wIBQO!fuHSJcznvGQnoYoLPW:localhost:8800$157004187391eVGyJ:localhost:8800TAQe!hYPSaMPGsLnvYSmwhg:localhost:8800$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEI@QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004187190ZLRgN:localhost:8800I?QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004187089FLOwV:localhost:8800I>QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186988RkcKb:localhost:8800I=QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186887sKbQU:localhost:8800I<QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186786RVgKA:localhost:8800I;QO!fuHSJcznvGQnoYoLPW:localhost:8800$157004186785fjAIs:localhost:8800T:Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIT9Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgT8Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsT7Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9sT6Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usT5Qe!hYPSaMPGsLnvYSmwhg:localhost:8800$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCoI4QO!jIfvTrwedrWLubsnlM:localhost:8800$157004186184SzyvQ:localhost:8800T3Qe!KeqmSjifajNKxtgqhj:localhost:8800$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQI2QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185983tEalY:localhost:8800I1QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185982diSTq:localhost:8800I0QO!jIfvTrwedrWLubsnlM:localhost:8800$157004185881ahRFW:localhost:8800  _"eQaK$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1571}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E"], "type": "m.room.power_levels", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"users": {"@anon-20191002_181700-303:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041861042, "hashes": {"sha256": "TKr/79khHIhnjbpFeVkaYAN7gwCL76RJXwXxDinLS1g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3ys99V8j1Q2y1SM+2QcwY0+QzwXIVZ/bYQfgulqKxc5Z93S+VYAtsoGEgw/iRBEYz7Eda1cGAbb9QqP6/eblAw"}}, "unsigned": {"age_ts": 1570041861042, "replaces_state": "$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ"}}=!eQa$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800{"token_id": 323, "stream_ordering": 1570}{"auth_events": ["$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ", "$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU", "$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q"], "prev_events": ["$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI"], "type": "m.room.tombstone", "room_id": "!KeqmSjifajNKxtgqhj:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!jIfvTrwedrWLubsnlM:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041856023, "hashes": {"sha256": "ZyhADv4iIE0yypWrOefmYKxzJfXrc/Z1h3GYvOZe0/Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0LGKZ7sdHd1UJIEIrnbnNxUh67DCH2MAt+c+KRGabF1QkX6Q9LrD5AX7hPr7T7EEANWeqZpZvDhxLiek13K6Cw"}}, "unsigned": {"age_ts": 1570041856023}}a OQag $157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800{"token_id": 323, "stream_ordering": 1569}{"auth_events": [["$157004185780kUwpq:localhost:8800", {"sha256": "uJUSoM4qEByWaiLJij3GlAmOIiEODm7WtUbtxvZ/XKI"}], ["$157004185678lyJsT:localhost:8800", {"sha256": "5hmY7NbB7sa6j+eSqMa1KPuoX+4j6oFoolHQ8p6AWQ4"}], ["$157004185679NNCIw:localhost:8800", {"sha256": "ChtnXOuousjznp34GlYEI70aoi4toyPr7PyScjjeywc"}]], "prev_events": [["$157004185982diSTq:localhost:8800", {"sha256": "i0QKt2FVy4rRywMBb75nsQazrqruN6WCo6xdjBs05mc"}]], "type": "m.room.join_rules", "room_id": "!jIfvTrwedrWLubsnlM:localhost:8800", "sender": "@anon-20191002_181700-303:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004185983tEalY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041859658, "hashes": {"sha256": "SsAPp0nhxGqifB6d5swAWIevBADgqbpUV4cK3xw58zY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XL7fE7u7wZ2b4MbKaQzBevY6JTHFdFf0HsNl30wMiaQUEO/ntaT3P8cny+iRiAWGrg1ctWH9mNx0Hh6yPWj3Dw"}}, "unsigned": {"age_ts": 1570041859658}} NSyL l? ^ 1  } Q $ p CJi  c 6 V )v<[/{N!mA`3S,Q!cHtqiAyCHEAoBIbCmL:localhost:8800DD+Q !cHtqiAyCHEAoBIbCmL:localhost:8800CC,Q!cGkVFpidyBBxUxsszG:localhost:8800 VV,Q!cGkVFpidyBBxUxsszG:localhost:8800 UU,Q!cGkVFpidyBBxUxsszG:localhost:8800TT,Q!cGkVFpidyBBxUxsszG:localhost:8800SS,Q!cGkVFpidyBBxUxsszG:localhost:8800RR,Q!cGkVFpidyBBxUxsszG:localhost:8800QQ,Q!cGkVFpidyBBxUxsszG:localhost:8800PP,Q!cGkVFpidyBBxUxsszG:localhost:8800OO,Q!cGkVFpidyBBxUxsszG:localhost:8800NN+Q !cGkVFpidyBBxUxsszG:localhost:8800MM,Q!bzPCFeFSMbCESvNbxl:localhost:8800 88,Q!bzPCFeFSMbCESvNbxl:localhost:8800 77,Q!bzPCFeFSMbCESvNbxl:localhost:8800 66,Q!bzPCFeFSMbCESvNbxl:localhost:880055,Q!bzPCFeFSMbCESvNbxl:localhost:880044,Q!bzPCFeFSMbCESvNbxl:localhost:880033,Q!bzPCFeFSMbCESvNbxl:localhost:880022,Q!bzPCFeFSMbCESvNbxl:localhost:880011,Q!bzPCFeFSMbCESvNbxl:localhost:880000,Q!bzPCFeFSMbCESvNbxl:localhost:8800//+Q !bzPCFeFSMbCESvNbxl:localhost:8800..,Q!bnTuVBaAJTPbcYZtRl:localhost:880099,Q!bnTuVBaAJTPbcYZtRl:localhost:880088,Q!bnTuVBaAJTPbcYZtRl:localhost:880077,Q!bnTuVBaAJTPbcYZtRl:localhost:880066,Q!bnTuVBaAJTPbcYZtRl:localhost:880055,Q!bnTuVBaAJTPbcYZtRl:localhost:880044,Q!biBIcqnGelHvLnpkOu:localhost:8800vv,Q!biBIcqnGelHvLnpkOu:localhost:8800uu,Q!biBIcqnGelHvLnpkOu:localhost:8800tt,Q!biBIcqnGelHvLnpkOu:localhost:8800ss,Q!biBIcqnGelHvLnpkOu:localhost:8800rr+Q !biBIcqnGelHvLnpkOu:localhost:8800qq,Q!bnTuVBaAJTPbcYZtRl:localhost:880033,Q!bnTuVBaAJTPbcYZtRl:localhost:880022+Q !bnTuVBaAJTPbcYZtRl:localhost:880011,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800+Q !bkwyieHZwSMJfuSKvV:localhost:8800,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! !,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  +Q !bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!beBXQofoOfxNBtzsut:localhost:8800]],Q!beBXQofoOfxNBtzsut:localhost:8800[[,Q!beBXQofoOfxNBtzsut:localhost:8800YY,Q!beBXQofoOfxNBtzsut:localhost:8800WW,Q!beBXQofoOfxNBtzsut:localhost:8800UU,Q!beBXQofoOfxNBtzsut:localhost:8800SS+Q !beBXQofoOfxNBtzsut:localhost:8800PP,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 +Q !bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bOSxzttDtclnrWnLov:localhost:8800 gg,Q!bOSxzttDtclnrWnLov:localhost:8800ff,Q!bOSxzttDtclnrWnLov:localhost:8800ee,Q!bOSxzttDtclnrWnLov:localhost:8800dd NSyL l? ^ 1  } Q $ p CJi  c 6 V )v<[/{N!mA`3S,Q!cHtqiAyCHEAoBIbCmL:localhost:8800DD+Q !cHtqiAyCHEAoBIbCmL:localhost:8800CC,Q!cGkVFpidyBBxUxsszG:localhost:8800 VV,Q!cGkVFpidyBBxUxsszG:localhost:8800 UU,Q!cGkVFpidyBBxUxsszG:localhost:8800TT,Q!cGkVFpidyBBxUxsszG:localhost:8800SS,Q!cGkVFpidyBBxUxsszG:localhost:8800RR,Q!cGkVFpidyBBxUxsszG:localhost:8800QQ,Q!cGkVFpidyBBxUxsszG:localhost:8800PP,Q!cGkVFpidyBBxUxsszG:localhost:8800OO,Q!cGkVFpidyBBxUxsszG:localhost:8800NN+Q !cGkVFpidyBBxUxsszG:localhost:8800MM,Q!bzPCFeFSMbCESvNbxl:localhost:8800 88,Q!bzPCFeFSMbCESvNbxl:localhost:8800 77,Q!bzPCFeFSMbCESvNbxl:localhost:8800 66,Q!bzPCFeFSMbCESvNbxl:localhost:880055,Q!bzPCFeFSMbCESvNbxl:localhost:880044,Q!bzPCFeFSMbCESvNbxl:localhost:880033,Q!bzPCFeFSMbCESvNbxl:localhost:880022,Q!bzPCFeFSMbCESvNbxl:localhost:880011,Q!bzPCFeFSMbCESvNbxl:localhost:880000,Q!bzPCFeFSMbCESvNbxl:localhost:8800//+Q !bzPCFeFSMbCESvNbxl:localhost:8800..,Q!bnTuVBaAJTPbcYZtRl:localhost:880099,Q!bnTuVBaAJTPbcYZtRl:localhost:880088,Q!bnTuVBaAJTPbcYZtRl:localhost:880077,Q!bnTuVBaAJTPbcYZtRl:localhost:880066,Q!bnTuVBaAJTPbcYZtRl:localhost:880055,Q!bnTuVBaAJTPbcYZtRl:localhost:880044,Q!biBIcqnGelHvLnpkOu:localhost:8800vv,Q!biBIcqnGelHvLnpkOu:localhost:8800uu,Q!biBIcqnGelHvLnpkOu:localhost:8800tt,Q!biBIcqnGelHvLnpkOu:localhost:8800ss,Q!biBIcqnGelHvLnpkOu:localhost:8800rr+Q !biBIcqnGelHvLnpkOu:localhost:8800qq,Q!bnTuVBaAJTPbcYZtRl:localhost:880033,Q!bnTuVBaAJTPbcYZtRl:localhost:880022+Q !bnTuVBaAJTPbcYZtRl:localhost:880011,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800,Q!bkwyieHZwSMJfuSKvV:localhost:8800+Q !bkwyieHZwSMJfuSKvV:localhost:8800,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! !,Q!bjdLCdBwkKaihRIRFG:localhost:8800 ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!bjdLCdBwkKaihRIRFG:localhost:8800  +Q !bjdLCdBwkKaihRIRFG:localhost:8800  ,Q!beBXQofoOfxNBtzsut:localhost:8800]],Q!beBXQofoOfxNBtzsut:localhost:8800[[,Q!beBXQofoOfxNBtzsut:localhost:8800YY,Q!beBXQofoOfxNBtzsut:localhost:8800WW,Q!beBXQofoOfxNBtzsut:localhost:8800UU,Q!beBXQofoOfxNBtzsut:localhost:8800SS+Q !beBXQofoOfxNBtzsut:localhost:8800PP,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bQDOrbAknnQZfUbhgS:localhost:8800 +Q !bQDOrbAknnQZfUbhgS:localhost:8800 ,Q!bOSxzttDtclnrWnLov:localhost:8800 gg,Q!bOSxzttDtclnrWnLov:localhost:8800ff,Q!bOSxzttDtclnrWnLov:localhost:8800ee,Q!bOSxzttDtclnrWnLov:localhost:8800dd $9> b  X & _dXsLBc[Q' e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.create$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEoZQ? e!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibility$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wgYQ/ e!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rules$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4iXQ3 e!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM WQ']e!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYcVQ' e!nvclDopiBLEOKBIheH:localhost:8800m.room.create$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k^UQ3 O!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels$157004188598DcHDt:localhost:8800iTQ3 e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ\SQ/ O!YgaGPEraeLCqHQirin:localhost:8800m.room.join_rules$157004188397MRiZP:localhost:8800dRQ? O!YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility$157004188296OVWxu:localhost:8800^QQ3 O!YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access$157004188195thBOS:localhost:8800^PQ3 O!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels$157004188194vdqBG:localhost:8800OQ']O!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800$157004188093UtRbN:localhost:8800XNQ' O!YgaGPEraeLCqHQirin:localhost:8800m.room.create$157004187992XwpoQ:localhost:8800fMQ- e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstone$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toiLQ3 e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQoKQ? e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibility$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwgJQ/ e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rules$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0IiIQ3 e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4 HQ']e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIcGQ' e!aVxOoyiLLnxmzgLJat:localhost:8800m.room.create$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w^FQ3 O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels$157004187391eVGyJ:localhost:8800iEQ3 e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE\DQ/ O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rules$157004187190ZLRgN:localhost:8800dCQ? O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility$157004187089FLOwV:localhost:8800^BQ3 O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access$157004186988RkcKb:localhost:8800^AQ3 O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels$157004186887sKbQU:localhost:8800@Q']O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800$157004186786RVgKA:localhost:8800X?Q' O!fuHSJcznvGQnoYoLPW:localhost:8800m.room.create$157004186785fjAIs:localhost:8800f>Q- e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstone$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIo=Q? e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibility$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgg<Q/ e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rules$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwsi;Q3 e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levels$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s :Q']e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usc9Q' e!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.create$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo^8Q3 O!jIfvTrwedrWLubsnlM:localhost:8800m.room.power_levels$157004186184SzyvQ:localhost:8800   *t&eQau$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1575}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s"], "type": "m.room.join_rules", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041865048, "hashes": {"sha256": "w/hw13/wz+xJpU92y9FOx4u54jKiPHqHFYvc4c/Hf5s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VYgXJHwY3BLIxVHtXr3VzwA1yZRBxjEV9nsjXiotBMV3zM1W8evvAfHnNnP+BJzKJviyQGdTKBH6avVP5e/eCQ"}}, "unsigned": {"age_ts": 1570041865048}}k%eQac$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1574}{"auth_events": ["$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "type": "m.room.power_levels", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"users": {"@anon-20191002_181700-304:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041864289, "hashes": {"sha256": "iG3bH7DuDznMep9AKpSin8ik9N4hDIwsyu3+QFIMzJ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N+Zmn+5gvuGQDYJYauWfmR3yvBbtLoeAh9g1hZ2nHVjsHJqlSELS842PeqcB+XVbC8NLK7Lxzpeqo3kpytkCBg"}}, "unsigned": {"age_ts": 1570041864289}}v$eQay$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1573}{"auth_events": ["$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo"], "prev_events": ["$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo"], "type": "m.room.member", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-304", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-304:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041863762, "hashes": {"sha256": "ZqTewQH6z4TJ1q0IXJ9s3e1+yuH7byY3OQ1ZFcT61Nw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o5l5N94kOH5zMIGRgVHAC3BweHy1C7F2E2rnX4Xezp09SYTPrWeVK5YDs8mGJ30g6XoysqZRinCFogJLIbuJCA"}}, "unsigned": {"age_ts": 1570041863762}}i#eQa_$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1572}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-304:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041862616, "hashes": {"sha256": "eTnC3BhMU1xr1qnaGlfUSZaVed+1wHPmsQ0OGcfxnIc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RRJuCLSFnBUJdlrO3qLMmaEgT00C70wS4cKopsbMyVsutBMvtuX1QxYTz1/iJxsIC92jqszfXdbHqfufU2yFBg"}}, "unsigned": {"age_ts": 1570041862616}} WJP#pyLk>j=(6  f ;  _ 2   R % ]0 r E  +w e 8 cCW|V,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !pduebXnTyxQWVxEICp:localhost:8800 , ,,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!paDmNxsOZIKyApbxXs:localhost:8800 N N,Q!paDmNxsOZIKyApbxXs:localhost:8800 M M,Q!paDmNxsOZIKyApbxXs:localhost:8800 L L,Q!paDmNxsOZIKyApbxXs:localhost:8800 K K+Q !paDmNxsOZIKyApbxXs:localhost:8800 J J,Q!paDmNxsOZIKyApbxXs:localhost:8800 O O+Q !oXKJArsPmtgaYANBrg:localhost:8800,Q!nxLxsxzliamzflrEBs:localhost:8800)),Q!nxLxsxzliamzflrEBs:localhost:8800&&,Q!nxLxsxzliamzflrEBs:localhost:8800##,Q!nxLxsxzliamzflrEBs:localhost:8800  +Q !nxLxsxzliamzflrEBs:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 Q Q,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 m m,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 l l,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 k k,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 j j,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 i i+Q !pHoEnhQYhwlbJXqKQE:localhost:8800 h h,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!nvclDopiBLEOKBIheH:localhost:8800DD,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pduebXnTyxQWVxEICp:localhost:8800 - -,Q!pTvdDtkgovsIdAdxCm:localhost:8800+Q !pTvdDtkgovsIdAdxCm:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 P P,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800+Q !pUSFAnuwUuMlbiInDR:localhost:8800,Q!pJUItjYTOUJQFIxyiX:localhost:8800 S S,Q!pJUItjYTOUJQFIxyiX:localhost:8800 R R,Q!pJUItjYTOUJQFIxyiX:localhost:8800 Q Q,Q!pJUItjYTOUJQFIxyiX:localhost:8800 P P,Q!pJUItjYTOUJQFIxyiX:localhost:8800 O O,Q!pJUItjYTOUJQFIxyiX:localhost:8800 N N+Q !pJUItjYTOUJQFIxyiX:localhost:8800 M M,Q!oznZaCpONuNDaLarkI:localhost:8800OO,Q!oznZaCpONuNDaLarkI:localhost:8800NN,Q!oznZaCpONuNDaLarkI:localhost:8800MM,Q!oznZaCpONuNDaLarkI:localhost:8800LL,Q!oznZaCpONuNDaLarkI:localhost:8800KK+Q !oznZaCpONuNDaLarkI:localhost:8800JJ,Q!ozgnwUlebxvzLVwyHW:localhost:8800>>,Q!ozgnwUlebxvzLVwyHW:localhost:8800==,Q!ozgnwUlebxvzLVwyHW:localhost:8800;;,Q!ozgnwUlebxvzLVwyHW:localhost:880099,Q!ozgnwUlebxvzLVwyHW:localhost:880077+Q !ozgnwUlebxvzLVwyHW:localhost:880044*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800)Q !odAvowLhHJcmkKlxFk:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800 XFT)}R) \ 3  \ 1  Z /  X -  qF V + T)}R'{P%sHyN#wL!uJ*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800*Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rQeYcODvQiLsOIbQrJ:localhost:8800//*Q!rQeYcODvQiLsOIbQrJ:localhost:8800..*Q!rQeYcODvQiLsOIbQrJ:localhost:8800++*Q!rQeYcODvQiLsOIbQrJ:localhost:8800))*Q!rQeYcODvQiLsOIbQrJ:localhost:8800''*Q!rQeYcODvQiLsOIbQrJ:localhost:8800%%*Q!rQeYcODvQiLsOIbQrJ:localhost:8800$$*Q!rJhSRzmWBQHlIhuDXT:localhost:8800DD*Q!rJhSRzmWBQHlIhuDXT:localhost:8800CC*Q!rJhSRzmWBQHlIhuDXT:localhost:8800BB*Q!rJhSRzmWBQHlIhuDXT:localhost:8800AA*Q!rJhSRzmWBQHlIhuDXT:localhost:8800@@*Q!rJhSRzmWBQHlIhuDXT:localhost:8800??*Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzurjQHmiriwjaUMhO:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qzrZzAieCgGSbpKOQR:localhost:8800  *Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z Z*Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y Y*Q!qjijQBfMwsCPTVgKPm:localhost:8800 X X*Q!qjijQBfMwsCPTVgKPm:localhost:8800 W W*Q!qjijQBfMwsCPTVgKPm:localhost:8800 V V*Q!qjijQBfMwsCPTVgKPm:localhost:8800 U U*Q!qjijQBfMwsCPTVgKPm:localhost:8800 T T*Q!qjijQBfMwsCPTVgKPm:localhost:8800 S S*Q!qjijQBfMwsCPTVgKPm:localhost:8800 R R*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800~~*Q!qSUSLLWjDxcGibUZdT:localhost:8800}}*Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 *Q!qInWQPtNQfBFoVzUtP:localhost:8800 (Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800(Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!peJMRJtXBvIiCttNmm:localhost:8800 u u*Q!peJMRJtXBvIiCttNmm:localhost:8800 t t*Q!peJMRJtXBvIiCttNmm:localhost:8800 s s*Q!peJMRJtXBvIiCttNmm:localhost:8800 r r*Q!peJMRJtXBvIiCttNmm:localhost:8800 q q*Q!pduebXnTyxQWVxEICp:localhost:8800 1 1*Q!pduebXnTyxQWVxEICp:localhost:8800 0 0*Q!pduebXnTyxQWVxEICp:localhost:8800 / /*Q!pduebXnTyxQWVxEICp:localhost:8800 . .*Q!pduebXnTyxQWVxEICp:localhost:8800 - - WJP#pyLk>j=(6  f ;  _ 2   R % ]0 r E  +w e 8 cCW|V,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !pduebXnTyxQWVxEICp:localhost:8800 , ,,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!paDmNxsOZIKyApbxXs:localhost:8800 N N,Q!paDmNxsOZIKyApbxXs:localhost:8800 M M,Q!paDmNxsOZIKyApbxXs:localhost:8800 L L,Q!paDmNxsOZIKyApbxXs:localhost:8800 K K+Q !paDmNxsOZIKyApbxXs:localhost:8800 J J,Q!paDmNxsOZIKyApbxXs:localhost:8800 O O+Q !oXKJArsPmtgaYANBrg:localhost:8800,Q!nxLxsxzliamzflrEBs:localhost:8800)),Q!nxLxsxzliamzflrEBs:localhost:8800&&,Q!nxLxsxzliamzflrEBs:localhost:8800##,Q!nxLxsxzliamzflrEBs:localhost:8800  +Q !nxLxsxzliamzflrEBs:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 Q Q,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 m m,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 l l,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 k k,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 j j,Q!pHoEnhQYhwlbJXqKQE:localhost:8800 i i+Q !pHoEnhQYhwlbJXqKQE:localhost:8800 h h,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!oZGRyBAkNDrEeiAqWL:localhost:8800 +Q !oZGRyBAkNDrEeiAqWL:localhost:8800 ,Q!nvclDopiBLEOKBIheH:localhost:8800DD,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pTvdDtkgovsIdAdxCm:localhost:8800,Q!pduebXnTyxQWVxEICp:localhost:8800 - -,Q!pTvdDtkgovsIdAdxCm:localhost:8800+Q !pTvdDtkgovsIdAdxCm:localhost:8800,Q!paDmNxsOZIKyApbxXs:localhost:8800 P P,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800,Q!pUSFAnuwUuMlbiInDR:localhost:8800+Q !pUSFAnuwUuMlbiInDR:localhost:8800,Q!pJUItjYTOUJQFIxyiX:localhost:8800 S S,Q!pJUItjYTOUJQFIxyiX:localhost:8800 R R,Q!pJUItjYTOUJQFIxyiX:localhost:8800 Q Q,Q!pJUItjYTOUJQFIxyiX:localhost:8800 P P,Q!pJUItjYTOUJQFIxyiX:localhost:8800 O O,Q!pJUItjYTOUJQFIxyiX:localhost:8800 N N+Q !pJUItjYTOUJQFIxyiX:localhost:8800 M M,Q!oznZaCpONuNDaLarkI:localhost:8800OO,Q!oznZaCpONuNDaLarkI:localhost:8800NN,Q!oznZaCpONuNDaLarkI:localhost:8800MM,Q!oznZaCpONuNDaLarkI:localhost:8800LL,Q!oznZaCpONuNDaLarkI:localhost:8800KK+Q !oznZaCpONuNDaLarkI:localhost:8800JJ,Q!ozgnwUlebxvzLVwyHW:localhost:8800>>,Q!ozgnwUlebxvzLVwyHW:localhost:8800==,Q!ozgnwUlebxvzLVwyHW:localhost:8800;;,Q!ozgnwUlebxvzLVwyHW:localhost:880099,Q!ozgnwUlebxvzLVwyHW:localhost:880077+Q !ozgnwUlebxvzLVwyHW:localhost:880044*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800*Q!odAvowLhHJcmkKlxFk:localhost:8800)Q !odAvowLhHJcmkKlxFk:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800 ,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800,Q!oXKJArsPmtgaYANBrg:localhost:8800   4 h m9d]c@anon-20191002_181700-330:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwo127.0.0.1Hd]c@anon-20191002_181700-328:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgo127.0.0.1Fd]c@anon-20191002_181700-329:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgo127.0.0.1Gfa[a@anon-20191002_181700-32:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbUtPJmFwcWdeLVpsUVU4RwowMDJmc2lnbmF0dXJlIFWEK2dUSck5UCt1Ypp3o7o64xgyUEtK6HM3wZoeGSepCg127.0.0.1d]c@anon-20191002_181700-327:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0Qo127.0.0.1Ed]c@anon-20191002_181700-326:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0Ao127.0.0.1Dd]c@anon-20191002_181700-325:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggo127.0.0.1Cd]c@anon-20191002_181700-324:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAo127.0.0.1Bd]c@anon-20191002_181700-323:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_Rago127.0.0.1Ad]c@anon-20191002_181700-322:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwo127.0.0.1@  w)OQa# $157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1578}{"auth_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}]], "prev_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}]], "type": "m.room.member", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-304", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-304:localhost:8800", "event_id": "$157004186786RVgKA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041867995, "hashes": {"sha256": "T3Vim1CMUpej4xhazERNU2+Yf1h39oFgyOTfGvbHseM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yR0LZmsCuEUaR2/kn2hOiBfXiN2MmYGd2uNIYSwSd3rIEn6mcwGugD7B7wfablLBFaCtj0uSQ1/LYMIy/rPMAQ"}}, "unsigned": {"age_ts": 1570041867995}} (OQa= $157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1577}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "event_id": "$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI"}, "creator": "@anon-20191002_181700-304:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004186785fjAIs:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041867222, "hashes": {"sha256": "qtubqcgJSsQ+uCoH237dtlGWsMx+vaHN8tRTLV/y4eI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v3UFddd+9rrBm7rystE9gC6rIa++wODMvgrir5AhXESrVdA+QcJWlZ+n3I9uTOto4wFD8s8inHD96Ye3V5pFBQ"}}, "unsigned": {"age_ts": 1570041867222}}'eQa$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1576}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws"], "type": "m.room.history_visibility", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041865940, "hashes": {"sha256": "nXlDdO2/O6ocDrMUIkeUHOzA/4H/FMm+NCcpGPnrR4c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h2INrnUME2hyvW1/Z8OVSusX1gRZjM9TfDpsbCZ0io6LTMMIO2PgJ204xrHXW01RJLUiRIBY/+54+aNC8oUlAw"}}, "unsigned": {"age_ts": 1570041865940}} "1J  % M @_3iKT| :pQ? eI!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibility$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AhQ/ eH!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rules$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kjQ3 eG!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 Q']eF!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUdQ' eE!HhYREfUiJTpjWmOuPF:localhost:8800m.room.create$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEpQ? eD!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibility$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9whQ/ eC!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rules$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4jQ3 eB!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM Q']eA!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYdQ' e@!nvclDopiBLEOKBIheH:localhost:8800m.room.create$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kQ3 OO?!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels$157004188598DcHDt:localhost:8800$157004188194vdqBG:localhost:8800Q3 ee>!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levels$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQgQ- e=!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstone$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to]Q/ Ok*Q!ozgnwUlebxvzLVwyHW:localhost:8800=j*Q!ozgnwUlebxvzLVwyHW:localhost:8800;h*Q!ozgnwUlebxvzLVwyHW:localhost:88009f*Q!ozgnwUlebxvzLVwyHW:localhost:88007d*Q!ozgnwUlebxvzLVwyHW:localhost:88004a(Q!odAvowLhHJcmkKlxFk:localhost:8800(Q!odAvowLhHJcmkKlxFk:localhost:8800  jr,OQa $157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1581}{"auth_events": [["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}], ["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "prev_events": [["$157004186988RkcKb:localhost:8800", {"sha256": "ZUciEKmNnrBoD4VQL/fwLIQqbkq8YpYNoMCHQAN1T2g"}]], "type": "m.room.history_visibility", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004187089FLOwV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041870326, "hashes": {"sha256": "DGHWaL0OPuentzPS1+p8uuVnbr7Pko8zdx0QU/SI2Pg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bqjWfYbMg8Vp4xZmvxzPU+iFvZ32d3BoHgAUgYqqHYzSdSAalx12hpuXCxOEqV8PeEbuwzKY+OVDNmrXsPfKCA"}}, "unsigned": {"age_ts": 1570041870326}}h+OQau $157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1580}{"auth_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}], ["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}]], "prev_events": [["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}]], "type": "m.room.guest_access", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004186988RkcKb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041869526, "hashes": {"sha256": "2HhF3PQzmEn5saoxHAeJcbdCSYtQjcRoyUbz72kDG6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nbB25u7kVanOpLlzf4DkTnBQ6ZuceAUnq02zLa24dlvcLRqOBq/FT+/oUPwSdrI/5eHV9hss2TR3iVu2SlaeCA"}}, "unsigned": {"age_ts": 1570041869526}}&*OQaq $157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1579}{"auth_events": [["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "prev_events": [["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "type": "m.room.power_levels", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"users": {"@anon-20191002_181700-304:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004186887sKbQU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041868825, "hashes": {"sha256": "puf9+r2PaXqpOoQfgS0kTbkR1q/jN1vTNaOAcc8mkzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M7FNdWI8upLPh49kqNU49m9ECLsmgbmNrS2LLqKJL+3JvyVuvvo6GsOPr/L/R0Zi03uMWq8GGT/o0h9fyw1mCQ"}}, "unsigned": {"age_ts": 1570041868825}} 0) V  y  c ( H  N )Vy<4aG|A^Q']!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800^Q']!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800:Q/ !rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rulesBQ? !rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibility6Q' !rWGwSSefrZzQYCYFHs:localhost:8800m.room.createQ<Q3 !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.power_levelsV^Q']!rJhSRzmWBQHlIhuDXT:localhost:8800m.room.member@anon-20191002_181700-277:localhost:8800U:Q/ !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.join_rulesWBQ? !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.history_visibilityX6Q' !rJhSRzmWBQHlIhuDXT:localhost:8800m.room.createT<Q3 !qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levels ^Q']!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800 RQ'E!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455 :Q/ !qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules BQ? !qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility 6Q' !qzurjQHmiriwjaUMhO:localhost:8800m.room.create <Q3 !qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levels ^Q']!qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800 :Q/ !qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules BQ? !qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility 6Q' !qzrZzAieCgGSbpKOQR:localhost:8800m.room.create <Q3 !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.power_levelsf^Q']!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-166:localhost:8829e^Q']!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@anon-20191002_181700-165:localhost:8800_GQ'/!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.member@7:localhost:8800h:Q/ !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.join_rulesbBQ? !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.history_visibilityc<Q3 !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.guest_accessi6Q' !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.create^?Q9 !qxqNYKdtgvOQdhmgsj:localhost:8800m.room.canonical_aliasaEQ))!qxqNYKdtgvOQdhmgsj:localhost:8800m.room.aliaseslocalhost:8800dCQ?!quaZwrGnzbNWhwAOYB:localhost:8800m.room.third_party_invite7,<Q3 !quaZwrGnzbNWhwAOYB:localhost:8800m.room.power_levels)^Q']!quaZwrGnzbNWhwAOYB:localhost:8800m.room.member@anon-20191002_181700-154:localhost:8800(:Q/ !quaZwrGnzbNWhwAOYB:localhost:8800m.room.join_rules*BQ? !quaZwrGnzbNWhwAOYB:localhost:8800m.room.history_visibility+6Q' !quaZwrGnzbNWhwAOYB:localhost:8800m.room.create'<Q3 !qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels 6^Q']!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800 9^Q']!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800 5:Q/ !qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rules 7BQ? !qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibility 86Q' !qtelAHlSkrqEFmlCqS:localhost:8800m.room.create 4<Q3 !qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels M^Q']!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800 L^Q']!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800 R:Q/ !qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rules OBQ? !qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibility P !*T R P N L JHFDBl+UhvOOQ$157004188397MRiZP:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800huOOQ$157004188397MRiZP:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800htOOQ$157004188296OVWxu:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hsOOQ$157004188296OVWxu:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hrOOQ$157004188296OVWxu:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hqOOQ$157004188195thBOS:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hpOOQ$157004188195thBOS:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hoOOQ$157004188195thBOS:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hnOOQ$157004188194vdqBG:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hmOOQ$157004188194vdqBG:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hlOOQ$157004188093UtRbN:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800~keeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~jeeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~ieeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800~heeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~geeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~feeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800~eeeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~deeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~ceeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800~beeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~aeeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~`eeQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~_eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~^eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~]eeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800~\eeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800~[eeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!hYPSaMPGsLnvYSmwhg:localhost:8800~ZeeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800hYOOQ$157004187190ZLRgN:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hXOOQ$157004187190ZLRgN:localhost:8800$157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hWOOQ$157004187190ZLRgN:localhost:8800$157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800hVOOQ$157004187089FLOwV:localhost:8800$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800  _/eQaK$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1584}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI"], "type": "m.room.power_levels", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"users": {"@anon-20191002_181700-304:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041872464, "hashes": {"sha256": "H06MQYcRxNf9C8Hqh7EaMmDgQ6iiGUkvORAGI1O0204"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DQzNxtVCUIRNE0U9odyosNO55ECoSwi9LFvJwlK2rkglcPXgYUkgI7EgyeYIZ2ChYC8VI0EzogkGwvo/iGgpBA"}}, "unsigned": {"age_ts": 1570041872464, "replaces_state": "$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s"}}=.eQa$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800{"token_id": 324, "stream_ordering": 1583}{"auth_events": ["$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s", "$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo", "$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"], "prev_events": ["$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg"], "type": "m.room.tombstone", "room_id": "!hYPSaMPGsLnvYSmwhg:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!fuHSJcznvGQnoYoLPW:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041867133, "hashes": {"sha256": "2BpNIXgDJeX1G9gnQeeX+yJweo0++xb3Q26jBpogSHA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hVpahFp5nmctuVnJ7t+fa62d4fjIusy6+ojhZDdnWENcUnOKlKWUiBd1lBPAS5AZuuI/xyDMyCQNQzht2bb0Aw"}}, "unsigned": {"age_ts": 1570041867133}}a-OQag $157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800{"token_id": 324, "stream_ordering": 1582}{"auth_events": [["$157004186887sKbQU:localhost:8800", {"sha256": "RQ5I3B55SS6fOeS1nlim2p6dLRk4KoeYkNxyGPt7gzU"}], ["$157004186785fjAIs:localhost:8800", {"sha256": "3ddYw1y9LpP7h70B1ucOjXAQeNqf7zdO6+3znxmYQX8"}], ["$157004186786RVgKA:localhost:8800", {"sha256": "9RxFS6Vtd3YZwIdXdT43Ye8j4lItUtx+a1FGTL47U1k"}]], "prev_events": [["$157004187089FLOwV:localhost:8800", {"sha256": "SOrxlaOH417/cGh4yjgfleNUkpsO/WwVmctr7kg6Ntg"}]], "type": "m.room.join_rules", "room_id": "!fuHSJcznvGQnoYoLPW:localhost:8800", "sender": "@anon-20191002_181700-304:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004187190ZLRgN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041871100, "hashes": {"sha256": "43sYehVPYUQh6X7plFM2zGHA6JWVxnsNEQ+BJdqyEqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CsDQZkRglS2HvsdBp4L31jcbV0FDSdKBJ9e2HUFTjCI1wN1L7Hp4ZpYJganUyxSQTCg5Mm6M6CSovDDQVsCZDQ"}}, "unsigned": {"age_ts": 1570041871100}} c p " z Q p:8E e'Q  ]$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEm.room.create!HhYREfUiJTpjWmOuPF:localhost:8800m ~m @anon-20191002_181700-307:localhost:8800,De?Q ]$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wm.room.history_visibility!nvclDopiBLEOKBIheH:localhost:8800mmK@anon-20191002_181700-306:localhost:8800$Ce/Q ]$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4m.room.join_rules!nvclDopiBLEOKBIheH:localhost:8800mm@anon-20191002_181700-306:localhost:8800&Be3Q ]$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMm.room.power_levels!nvclDopiBLEOKBIheH:localhost:8800m4m2@anon-20191002_181700-306:localhost:8800 Ae'Q ]$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYm.room.member!nvclDopiBLEOKBIheH:localhost:8800m4m@anon-20191002_181700-306:localhost:8800@ e'Q  ]$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5km.room.create!nvclDopiBLEOKBIheH:localhost:8800mMm@anon-20191002_181700-306:localhost:8800?O3Q ]$157004188598DcHDt:localhost:8800m.room.power_levels!YgaGPEraeLCqHQirin:localhost:8800m4m@anon-20191002_181700-305:localhost:8800&>e3Q ]$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQm.room.power_levels!aVxOoyiLLnxmzgLJat:localhost:8800m mT@anon-20191002_181700-305:localhost:8800#=e-Q ]$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tom.room.tombstone!aVxOoyiLLnxmzgLJat:localhost:8800m`m@anon-20191002_181700-305:localhost:8800<O/Q ]$157004188397MRiZP:localhost:8800m.room.join_rules!YgaGPEraeLCqHQirin:localhost:8800mm@anon-20191002_181700-305:localhost:8800!;O?Q ]$157004188296OVWxu:localhost:8800m.room.history_visibility!YgaGPEraeLCqHQirin:localhost:8800mm~@anon-20191002_181700-305:localhost:8800:O3Q ]$157004188195thBOS:localhost:8800m.room.guest_access!YgaGPEraeLCqHQirin:localhost:8800mm'@anon-20191002_181700-305:localhost:88009O3Q ]$157004188194vdqBG:localhost:8800m.room.power_levels!YgaGPEraeLCqHQirin:localhost:8800mm@anon-20191002_181700-305:localhost:88008O'Q ]$157004188093UtRbN:localhost:8800m.room.member!YgaGPEraeLCqHQirin:localhost:8800mm!@anon-20191002_181700-305:localhost:88007 O'Q  ]$157004187992XwpoQ:localhost:8800m.room.create!YgaGPEraeLCqHQirin:localhost:8800mmI@anon-20191002_181700-305:localhost:8800&6e3Q ]$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQm.room.power_levels!aVxOoyiLLnxmzgLJat:localhost:8800m{m@anon-20191002_181700-305:localhost:8800,5e?Q ]$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwm.room.history_visibility!aVxOoyiLLnxmzgLJat:localhost:8800mҵm!@anon-20191002_181700-305:localhost:8800$4e/Q ]$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Im.room.join_rules!aVxOoyiLLnxmzgLJat:localhost:8800m&m&@anon-20191002_181700-305:localhost:8800&3e3Q ]$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4m.room.power_levels!aVxOoyiLLnxmzgLJat:localhost:8800m8m>@anon-20191002_181700-305:localhost:8800 2e'Q ]$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIm.room.member!aVxOoyiLLnxmzgLJat:localhost:8800m;mʌ@anon-20191002_181700-305:localhost:88001 e'Q  ]$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wm.room.create!aVxOoyiLLnxmzgLJat:localhost:8800mƊm@anon-20191002_181700-305:localhost:8800&0e3Q ]$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEm.room.power_levels!hYPSaMPGsLnvYSmwhg:localhost:8800mPm@anon-20191002_181700-304:localhost:8800#/e-Q ]$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxIm.room.tombstone!hYPSaMPGsLnvYSmwhg:localhost:8800mɫ}mɽ@anon-20191002_181700-304:localhost:8800.O/Q ]$157004187190ZLRgN:localhost:8800m.room.join_rules!fuHSJcznvGQnoYoLPW:localhost:8800mɺmɻW@anon-20191002_181700-304:localhost:8800 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  &qbSD5rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mmm m mmmm^mmmm~~mZ}}m||m{{mzzmʿyymʽxxmʺwwmʷ!vvmʳuumʮ%ttmʩssmʧkrrmʤ`qqmʠppmʞ%oomʑnnmʋmmmʇ'llmʆ+kkmʁ)jjmʀfiimxhhmxYggmtffmqeemoddmlccmkbbmfaamb-``m^__m\{^^mWZ]]mWY\\mP[[mPZZmLaYYmL`XXmHfWWmHdVVmD$UUmD"TTm?SSm?RRm<QQm<PPm4OOm1RNNm-jMMm)LLm&KKmJJmIImHHmGGmFFm ~EEmDDmCCm4BBm4AAmM@@m4??m >>m`==m<<m;;m::m99m88m77m{66mҵ55m&44m833m;22mƊ11mP00mɺ..mɷ--mɴ,,mɲ++mɮ**mɫ))mɫ}//mɦ((mɣX''mɠa&&mɞR%%mə$$mɓ##mɎJ!!mɋ  mɈmɆ@mɃ/mɀmɀ""mzmx=mumsmpmime=mbym`m]Lm|mz/mvmsmo~mjZmgCmbm]wmYmVmSmH8mB2m93m3/m-m)m&m|mmQm|mm *m?m,m&mvmsmZ-mW~mWmQmN  mK  mF  mD   m@  m@m:m6m3Em,m)m'1m$ mGmmmommm Vm mXmNmmm*mmm6mmmmmmmmEmam]mm[mmȽJmȺ+mȷpmȱmȱ2mȱ1mȨmȥ6mȟmȟmșmșmȕmȔ%mȎ  w 6OQa= $157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1591}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "event_id": "$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to"}, "creator": "@anon-20191002_181700-305:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004187992XwpoQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041879539, "hashes": {"sha256": "2rhOx8Ww4xBnWPAbTp5et3UncSAYgE42+y/fKiOdsnE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fZcUQGMPWnLWdMC/dhUvOstbLTn3i7o/R+8L3tOiXdkEJvimQLWBnpI7EUul9z7uFw4BxTBVi/JAK43UOiGFDg"}}, "unsigned": {"age_ts": 1570041879539}}^5eQaI$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1590}{"auth_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw"], "type": "m.room.power_levels", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 0, "users_default": 80, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.avatar": 50, "m.room.name": 50}, "users": {"@anon-20191002_181700-305:localhost:8800": 100}}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041878395, "hashes": {"sha256": "iyXObKcHYbliJ7wNn33FDY0ykeV6LObjyi4CjhRmvhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1SaAiUE0pYr8E84jO00FpBogRG1I6BjxvhIF/1+q4uOcC5SDZwCyzE14qL7a0DyaTFgReWvQkNJgINWNRwqlDg"}}, "unsigned": {"age_ts": 1570041878395, "replaces_state": "$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4"}}4eQa$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1589}{"auth_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I"], "type": "m.room.history_visibility", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041877173, "hashes": {"sha256": "EFSU68XNFtg+mT8nek+FVuLVXXTewP2KrYaQCpHtmRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ipQ0GJXjfO5tU7HDbRqVv1/DsMnnx4g40m7JUCzpfsUMGFGWw2UmIINIFYeB3syo0sTt6vFvn0N9TZ0uQ7mbBA"}}, "unsigned": {"age_ts": 1570041877173}} ~z v  D V hd`\XTPLHeeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800eeQ$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800eeQ$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800 eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800 eeQ$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800eeQ$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800iOOQ$157004188598DcHDt:localhost:8800$157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800eeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800iOOQ$157004188397MRiZP:localhost:8800$157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800iOOQ$157004188296OVWxu:localhost:8800$157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800iOOQ$157004188195thBOS:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800i~OOQ$157004188194vdqBG:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800i}OOQ$157004188093UtRbN:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800|eeQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800{eeQ$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800zeeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800yeeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800xeeQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800weeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800 .RM i  . 4 / *|%w rmhc ^YTeQe_!NPdjmIfsBVIIkvWBzD:localhost:8800$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wTdQe^!vyCFfUTJKYJSDadFhT:localhost:8800$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsTcQe]!beBXQofoOfxNBtzsut:localhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YTbQe\!vyCFfUTJKYJSDadFhT:localhost:8800$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobATaQe[!beBXQofoOfxNBtzsut:localhost:8800$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMT`QeZ!vyCFfUTJKYJSDadFhT:localhost:8800$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYT_QeY!beBXQofoOfxNBtzsut:localhost:8800$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhET^QeX!vyCFfUTJKYJSDadFhT:localhost:8800$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0T]QeW!beBXQofoOfxNBtzsut:localhost:8800$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4T\QeV!vyCFfUTJKYJSDadFhT:localhost:8800$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sT[QeU!beBXQofoOfxNBtzsut:localhost:8800$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90TZQeT!vyCFfUTJKYJSDadFhT:localhost:8800$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcTYQeS!beBXQofoOfxNBtzsut:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRATXQeR!vyCFfUTJKYJSDadFhT:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsTWQeQ!vyCFfUTJKYJSDadFhT:localhost:8800$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0TVQeP!beBXQofoOfxNBtzsut:localhost:8800$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8TUQeO!xvblqEscwOtCqJntfF:localhost:8800$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cTTQeN!xvblqEscwOtCqJntfF:localhost:8800$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2ITSQeM!xvblqEscwOtCqJntfF:localhost:8800$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pITRQeL!xvblqEscwOtCqJntfF:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwTQQeK!xvblqEscwOtCqJntfF:localhost:8800$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kTPQeJ!HhYREfUiJTpjWmOuPF:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkTOQeI!HhYREfUiJTpjWmOuPF:localhost:8800$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_ATNQeH!HhYREfUiJTpjWmOuPF:localhost:8800$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kTMQeG!HhYREfUiJTpjWmOuPF:localhost:8800$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4TLQeF!HhYREfUiJTpjWmOuPF:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUTKQeE!HhYREfUiJTpjWmOuPF:localhost:8800$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMETJQeD!nvclDopiBLEOKBIheH:localhost:8800$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wTIQeC!nvclDopiBLEOKBIheH:localhost:8800$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4THQeB!nvclDopiBLEOKBIheH:localhost:8800$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMTGQeA!nvclDopiBLEOKBIheH:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYTFQe@!nvclDopiBLEOKBIheH:localhost:8800$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5kIEQO?!YgaGPEraeLCqHQirin:localhost:8800$157004188598DcHDt:localhost:8800TDQe>!aVxOoyiLLnxmzgLJat:localhost:8800$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQTCQe=!aVxOoyiLLnxmzgLJat:localhost:8800$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0toIBQOQO8!YgaGPEraeLCqHQirin:localhost:8800$157004188093UtRbN:localhost:8800I=QO7!YgaGPEraeLCqHQirin:localhost:8800$157004187992XwpoQ:localhost:8800T<Qe6!aVxOoyiLLnxmzgLJat:localhost:8800$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQT;Qe5!aVxOoyiLLnxmzgLJat:localhost:8800$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdwT:Qe4!aVxOoyiLLnxmzgLJat:localhost:8800$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0IT9Qe3!aVxOoyiLLnxmzgLJat:localhost:8800$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4T8Qe2!aVxOoyiLLnxmzgLJat:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI   *t3eQau$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1588}{"auth_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4"], "type": "m.room.join_rules", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041876518, "hashes": {"sha256": "81h9Qd45so08hDkPMS2S5G2AaNL0A9jr6ZUb2ahHCTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bMrjKe7dQqunbCp0s9Pt7JRv1WAV3i9Qm0PBzHhcdU0vmt9mhREiGLLdVByfbwhVa5tN0z3vpxM8EftmLfaRAQ"}}, "unsigned": {"age_ts": 1570041876518}}k2eQac$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1587}{"auth_events": ["$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "type": "m.room.power_levels", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"users": {"@anon-20191002_181700-305:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041875768, "hashes": {"sha256": "KrHY1j+LE4piFIij9nwTNnnpbnC4BwxMXQysQU+5R4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bWwJ4010oEjGXiZXGJZ/hkdKDeJ2ZXgGHZeZaErVRLrOxibSnbpI/uK85QDfGuRWn6BUKRnaJkUUHIbVLzrfAQ"}}, "unsigned": {"age_ts": 1570041875768}}v1eQay$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1586}{"auth_events": ["$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w"], "prev_events": ["$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w"], "type": "m.room.member", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-305", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-305:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041875003, "hashes": {"sha256": "w2GFhwdXUBcLQwQ7tE8xqUvfllguqSdYr5U3CgMW8zs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Dem2PUu2yPkwrzXf0eLoZwDgEIX29/awCbUbFmGTIoWUcjtxi/RlXmeZJyZKGeeEF+Lot9O73Ijb+jo+5RUxCQ"}}, "unsigned": {"age_ts": 1570041875003}}i0eQa_$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1585}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-305:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041874058, "hashes": {"sha256": "kKNg8IvXBbjzYsoSAqultl0yK15RyxZtAcLm/lytDVU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e1u+/PjIj3XiVtUK3z/mt5KE/qx3TtrSf9Cfj7tGN4c9IGdkWb6WQb4RVF9yUJrkdzNmIk1dVrnVUbPl6uKPCQ"}}, "unsigned": {"age_ts": 1570041874058}} B 1 > p7c o= ]uC{Ii QOU# %\ * j + W 8 v D  | K 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUa1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30@1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4h1e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEf1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0@1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8L1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM@1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4H1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg)1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcV1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk]1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0|1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMB1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg 1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 21e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U (1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs/1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA :1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg O1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo R 21e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz01e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ,1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ601e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w_1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo t1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0U21e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ31e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM $(  S *\cG $ ` 2^cgQeQ3 $o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels PeQ']$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800joinaOeQ' $7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800m.room.create NeQ']$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800joinmMeQ? $876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibilityeLeQ/ $1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rulesgKeQ3 $7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels JeQ']$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800joinaIeQ' $ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800m.room.createmHeQ? $GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibilityeGeQ/ $pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rulesgFeQ3 $8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels EeQ']$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800joinaDeQ' $-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800m.room.creategBeQ3 $mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelse8eQ/ $w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I!aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rules 6eQ']$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800joina5eQ' $tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800m.room.createg4eQ3 $dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.power_levelsd3eQ- $O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.tombstoneZ2OQ/ $157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.join_rulesb1OQ? $157004187089FLOwV:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.history_visibility\0OQ3 $157004186988RkcKb:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.guest_access\/OQ3 $157004186887sKbQU:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.power_levels.OQ']$157004186786RVgKA:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.member@anon-20191002_181700-304:localhost:8800joinV-OQ' $157004186785fjAIs:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800m.room.createm,eQ? $PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.history_visibilitydAeQ- $L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstoneZ@OQ/ $157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.join_rulesb?OQ? $157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility\>OQ3 $157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access\COQ3 $157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels<OQ']$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.member@anon-20191002_181700-305:localhost:8800joinV;OQ' $157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.createe+eQ/ $VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800m.room.join_rulesm9eQ? $hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw!aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibility FYj8p> v D  } K  Q  Y ' _ -e3k:Yr@xF~MS!1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 91e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs \1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc y1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUV1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMW1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw 31e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 71e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o s0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8 1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc 11e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEa1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA{1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs1e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYq1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 m1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vkj1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0j1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 /1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 p1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ f1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ#1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg&1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs C1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs Dj8q? w E  ~ L  R Y ' _ -e3k9q? wE}KQ1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoT1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE{1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM I1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M w1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA~1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY@1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM @1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw<1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8S1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IM1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A V1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI q1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKor1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcW1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAb0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8Z1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI y1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic 1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb001e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIT1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAG1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU D1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I J | J  R  X & ^ ,d2k9jq? wE}KQ8p> % v D W]+1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU 1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8b1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98u1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIv1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k,1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg<1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUf1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsR0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y'1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8/1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc I1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMV1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04'1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM @1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 '1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4M1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc71e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y,0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcP1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYO1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoE1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr001e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI/1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w\1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss:1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IS1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA Dj8q? w E  ~ L  R Y ' _ -e3k9q? wE}KQ1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhoT1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE{1e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM I1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M w1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA1e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA~1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY@1e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw 1e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM @1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw<1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8S1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IM1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A V1e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI q1e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKor1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcW1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAb0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8Z1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI y1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic 1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oy1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb001e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIT1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAG1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU D1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I g gh9OQau $157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1594}{"auth_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}], ["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}]], "prev_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}]], "type": "m.room.guest_access", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$157004188195thBOS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041881801, "hashes": {"sha256": "VwXVwUEG2dO42Psod0Z2cWe0sHAICTm5XChKVJ4DAic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W8OpN9B5ukM+ZUQMNJI5ma6VtbJDXjFgio4SNYqUxSdQTcRu7F7kEQzEFczWjZmeNaqCgbHgX/0BV0QGLnBcBw"}}, "unsigned": {"age_ts": 1570041881801}}&8OQaq $157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1593}{"auth_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "type": "m.room.power_levels", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"users": {"@anon-20191002_181700-305:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$157004188194vdqBG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041881118, "hashes": {"sha256": "p4c490G9aJEt+j3sudCaX7ZcMO9TEZ6pI7RJCr6ktQY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gPYgr9hjJbof8W/H42nvVoNYjFGvcf6UXE3G//rqCIWesVq0XmA8UqAeC2PeR+kSkYKw23CPCmFxavn8dYqQBw"}}, "unsigned": {"age_ts": 1570041881118}}7OQa# $157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1592}{"auth_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}]], "prev_events": [["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}]], "type": "m.room.member", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-305", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-305:localhost:8800", "event_id": "$157004188093UtRbN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041880265, "hashes": {"sha256": "ImNMdqN1Sn8eqa9l2MWxuIrHXeuT932MrKzHMIc4zQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IfCASom9n9iJoKpewnO62dUhajgZmL1VDDCfqJPjzawkVixgTTIicKUkEZQVPaQPs1zWbaesZfj2W0rSt9LDAQ"}}, "unsigned": {"age_ts": 1570041880265}} J V $ [ \# * |b0j h6o P) =  u pC {I U J>O D  v v v v>1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso 1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok61e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1e$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw Z1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 21e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcMQ1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gk1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsV1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngq1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI61e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcX1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0TgwH1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYd1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4f1e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4 1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhsp1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oU1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag/1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6kO1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ901e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8821e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G01e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ41e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w1e$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M1e$Xq66p_cFeZM9bH7_JUEYjyDpb74WCGfKYe2ATMNEqho1e$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw1e$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p81e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 C1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc'1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII1e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ01e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYz1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc`1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA_1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk]1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A 1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 Y1e$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb81e$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA21e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEr21e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ $B P _  , Z]l*bHt2Z_4eQ# $sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800m.room.namem3eQ? $3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibilitym2eQ? $BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibilitye1eQ/ $WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rulese0eQ/ $mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rulesj/eQ9 $htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_aliasj.eQ9 $hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_aliasg-eQ3 $uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levelsg,eQ3 $Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels +eQ']$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800 *eQ']$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800a)eQ' $joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.createa(eQ' $VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800m.room.createm'eQ? $wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibilitye&eQ/ $JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rulesg%eQ3 $o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels $eQ']$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800a#eQ' $7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800m.room.create "eQ']$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800m!eQ? $876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibilitye eQ/ $1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rulesgeQ3 $7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels eQ']$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800aeQ' $ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800m.room.createmeQ? $GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800m.room.history_visibilityeeQ/ $pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800m.room.join_rulesgeQ3 $8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800m.room.power_levels eQ']$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800m.room.member@anon-20191002_181700-306:localhost:8800aeQ' $-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800m.room.create\OQ3 $157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levelsgeQ3 $mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelsdeQ- $L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstoneZOQ/ $157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.join_rulesbOQ? $157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.history_visibility\OQ3 $157004188195thBOS:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.guest_access\OQ3 $157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800m.room.power_levels _Nk>vI ^ 1Z-  ~ Q $ {N!m@2h; q D  c 6 V )~R%rEUXuZDImkeql:loca,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ _+Q !ePtMOPPOgOcBIMNZpn:localhost:8800 ^ ^,Q!eLsrBEnrHolwCNgkFW:localhost:8800II,Q!eLsrBEnrHolwCNgkFW:localhost:8800HH,Q!eLsrBEnrHolwCNgkFW:localhost:8800GG,Q!eLsrBEnrHolwCNgkFW:localhost:8800FF+Q !eLsrBEnrHolwCNgkFW:localhost:8800EE,Q!eKrOqiOabJcMgIJjwC:localhost:8800 ,Q!eKrOqiOabJcMgIJjwC:localhost:8800 +Q !eGEEtFXUXuZDImkeql:localhost:8800`+Q !drnXStKXkNQkouqUAg:localhost:8800 C C,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!drnXStKXkNQkouqUAg:localhost:8800 I I,Q!drnXStKXkNQkouqUAg:localhost:8800 G G,Q!drnXStKXkNQkouqUAg:localhost:8800 E E,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 +Q !dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!drnXStKXkNQkouqUAg:localhost:8800 L L,Q!drnXStKXkNQkouqUAg:localhost:8800 K K,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800-,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` `,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800+Q !djwLhpJUYOKsgQtrky:localhost:8800-,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800+Q !eKrOqiOabJcMgIJjwC:localhost:8800,Q!eJPTUgihvSwaOhIkrC:localhost:8800 --,Q!eJPTUgihvSwaOhIkrC:localhost:8800 ,,,Q!eJPTUgihvSwaOhIkrC:localhost:8800++,Q!eJPTUgihvSwaOhIkrC:localhost:8800**,Q!eJPTUgihvSwaOhIkrC:localhost:8800)),Q!eJPTUgihvSwaOhIkrC:localhost:8800((,Q!eJPTUgihvSwaOhIkrC:localhost:8800'',Q!eJPTUgihvSwaOhIkrC:localhost:8800&&,Q!eJPTUgihvSwaOhIkrC:localhost:8800%%+Q !eJPTUgihvSwaOhIkrC:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800'',Q!duCKuavMBSfRbTFPsc:localhost:8800&&,Q!duCKuavMBSfRbTFPsc:localhost:8800%%,Q!duCKuavMBSfRbTFPsc:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800##,Q!duCKuavMBSfRbTFPsc:localhost:8800"",Q!duCKuavMBSfRbTFPsc:localhost:8800!!+Q !duCKuavMBSfRbTFPsc:localhost:8800  ,Q!dnZVySJLGNtUKsSgXW:localhost:8800UU,Q!dnZVySJLGNtUKsSgXW:localhost:8800TT,Q!dnZVySJLGNtUKsSgXW:localhost:8800SS,Q!dnZVySJLGNtUKsSgXW:localhost:8800RR,Q!dnZVySJLGNtUKsSgXW:localhost:8800QQ+Q !dnZVySJLGNtUKsSgXW:localhost:8800PP,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800- _Nk>vI ^ 1Z-  ~ Q $ {N!m@2h; q D  c 6 V )~R%rEUXuZDImkeql:loca,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ _+Q !ePtMOPPOgOcBIMNZpn:localhost:8800 ^ ^,Q!eLsrBEnrHolwCNgkFW:localhost:8800II,Q!eLsrBEnrHolwCNgkFW:localhost:8800HH,Q!eLsrBEnrHolwCNgkFW:localhost:8800GG,Q!eLsrBEnrHolwCNgkFW:localhost:8800FF+Q !eLsrBEnrHolwCNgkFW:localhost:8800EE,Q!eKrOqiOabJcMgIJjwC:localhost:8800 ,Q!eKrOqiOabJcMgIJjwC:localhost:8800 +Q !eGEEtFXUXuZDImkeql:localhost:8800`+Q !drnXStKXkNQkouqUAg:localhost:8800 C C,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!drnXStKXkNQkouqUAg:localhost:8800 I I,Q!drnXStKXkNQkouqUAg:localhost:8800 G G,Q!drnXStKXkNQkouqUAg:localhost:8800 E E,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 +Q !dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,Q!dvZnfJonDkxlrrDXUk:localhost:8800 ,,Q!drnXStKXkNQkouqUAg:localhost:8800 L L,Q!drnXStKXkNQkouqUAg:localhost:8800 K K,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800-,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` `,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800,Q!djwLhpJUYOKsgQtrky:localhost:8800+Q !djwLhpJUYOKsgQtrky:localhost:8800-,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800,Q!eKrOqiOabJcMgIJjwC:localhost:8800+Q !eKrOqiOabJcMgIJjwC:localhost:8800,Q!eJPTUgihvSwaOhIkrC:localhost:8800 --,Q!eJPTUgihvSwaOhIkrC:localhost:8800 ,,,Q!eJPTUgihvSwaOhIkrC:localhost:8800++,Q!eJPTUgihvSwaOhIkrC:localhost:8800**,Q!eJPTUgihvSwaOhIkrC:localhost:8800)),Q!eJPTUgihvSwaOhIkrC:localhost:8800((,Q!eJPTUgihvSwaOhIkrC:localhost:8800'',Q!eJPTUgihvSwaOhIkrC:localhost:8800&&,Q!eJPTUgihvSwaOhIkrC:localhost:8800%%+Q !eJPTUgihvSwaOhIkrC:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800'',Q!duCKuavMBSfRbTFPsc:localhost:8800&&,Q!duCKuavMBSfRbTFPsc:localhost:8800%%,Q!duCKuavMBSfRbTFPsc:localhost:8800$$,Q!duCKuavMBSfRbTFPsc:localhost:8800##,Q!duCKuavMBSfRbTFPsc:localhost:8800"",Q!duCKuavMBSfRbTFPsc:localhost:8800!!+Q !duCKuavMBSfRbTFPsc:localhost:8800  ,Q!dnZVySJLGNtUKsSgXW:localhost:8800UU,Q!dnZVySJLGNtUKsSgXW:localhost:8800TT,Q!dnZVySJLGNtUKsSgXW:localhost:8800SS,Q!dnZVySJLGNtUKsSgXW:localhost:8800RR,Q!dnZVySJLGNtUKsSgXW:localhost:8800QQ+Q !dnZVySJLGNtUKsSgXW:localhost:8800PP,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800,Q!eGEEtFXUXuZDImkeql:localhost:8800- d %d=<eQa$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1597}{"auth_events": ["$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ"], "type": "m.room.tombstone", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!YgaGPEraeLCqHQirin:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041879392, "hashes": {"sha256": "pkuQmX+zevQTrnuCc6XFStxDGOQcRNCM8zk1TCVe0hk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r3dKVrnqe4suINSUgzb7dRmU7nab2v6R2n03KnVqXg5IeymPFhAXhhabZcrWHHEqz26v0jzlho+qTI7SSEy7Cw"}}, "unsigned": {"age_ts": 1570041879392}}a;OQag $157004188397MRiZP:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1596}{"auth_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}], ["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188296OVWxu:localhost:8800", {"sha256": "rSX7Yaj5ENViLQRfF1emhbhM4Hv4SflxewWW3eOUUTM"}]], "type": "m.room.join_rules", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$157004188397MRiZP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041883360, "hashes": {"sha256": "qHxK9ER6EIZJoYG8DmYCUE1YE9JQrPY8jK4y6je8H5k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4vp7ljDzOYirwtvy2DfGkCNpYpSddt9sYmojvm4hW2D68WwP6g1L8iGlpIeiFY4D4kjoqAH6HfYRDzjnrQUQCQ"}}, "unsigned": {"age_ts": 1570041883360}}r:OQa $157004188296OVWxu:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1595}{"auth_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}], ["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188195thBOS:localhost:8800", {"sha256": "CLSWRbpdQ6Sg6VgD7T/6cHgNdCMLn4QqVZASa2YQTCg"}]], "type": "m.room.history_visibility", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$157004188296OVWxu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041882643, "hashes": {"sha256": "wj5s/RRewfbCV5saUzAVT+OdLSauRClJ0jYo8ktGr3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4SAlZzXw3No5iBpeGmcPYg1UvjPtAmq3x9W3HB3xTpRRCVo+51VN0hJ9ntGDc0GU1Ng3ozMv95QTuGBmBW7AA"}}, "unsigned": {"age_ts": 1570041882643}}   $ N L JHFDB@><:~eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800~eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800~ eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800~eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800~eeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800~eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800~eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800~eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800~eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800~eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800~eeQ$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800hOOQ$157004188598DcHDt:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800hOOQ$157004188598DcHDt:localhost:8800$157004187992XwpoQ:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800h~OOQ$157004188598DcHDt:localhost:8800$157004188194vdqBG:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800~}eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~|eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~{eeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800~zeeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800~yeeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w!aVxOoyiLLnxmzgLJat:localhost:8800~xeeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800hwOOQ$157004188397MRiZP:localhost:8800$157004188093UtRbN:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800 %p@P`p`p 0 @ P `  p 0 0@PM{]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800Mz]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800My]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800Mx]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800Mw]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800Mv]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800Mu]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800Mt]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800Ms]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800Mr]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800Mq]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800Mp]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800M]Q@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800M]Q@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800M]Q@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800M]Q@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800M]Q@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800M]Q@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800M]Q@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800M ]Q@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800M ]Q@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800M ]Q@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800M ]Q@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800M ]Q@anon-20191002_181700-321:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800M]Q@anon-20191002_181700-320:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800M]Q@anon-20191002_181700-319:localhost:8800!UMFUOnYRvwKwSPkYHB:localhost:8800M]Q@anon-20191002_181700-318:localhost:8800!hZuwenlFDapIPBOyfi:localhost:8800M]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800M]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800M]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800M]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800M]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800M]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800M]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800M~]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800M}]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800M|]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800 k Xki?eQa_$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1600}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-306:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041886797, "hashes": {"sha256": "4KV0MyzbgMe9RDjq9eWMkJy3DP4TEPPxuPe/fjxZdMg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "btBEuzyI1wee1QGD0sc6VvUamigz0pt+Be3xPfddIHu5vGp9blQ2quI+gDLefaD4b/A+hRNd718fXTNulll9Cw"}}, "unsigned": {"age_ts": 1570041886797}}@>OQa% $157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800{"token_id": 325, "stream_ordering": 1599}{"auth_events": [["$157004188194vdqBG:localhost:8800", {"sha256": "NpA5DelUqClLMZm43scxQdqseCL8ODY6OM3CzgfKrm8"}], ["$157004187992XwpoQ:localhost:8800", {"sha256": "6pANVQ1eIw2t17P80LKWuHHFlhcbR/vB/P7WGb47PVI"}], ["$157004188093UtRbN:localhost:8800", {"sha256": "lIcpd+m8gOlUfVMIKl+rBD7iOmUPup9sg7BXgLCY3Pc"}]], "prev_events": [["$157004188397MRiZP:localhost:8800", {"sha256": "LHTLpTtT89xPhjCYdHihOiFX6K+ujkNU1gZ9W4eF1hs"}]], "type": "m.room.power_levels", "room_id": "!YgaGPEraeLCqHQirin:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 0, "users_default": 80, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.avatar": 50, "m.room.name": 50}, "users": {"@anon-20191002_181700-305:localhost:8800": 100}}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$157004188598DcHDt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041885492, "hashes": {"sha256": "APjoRHIKeHyPmLAv1kvkKfWipABf+8iam3b0lrpN368"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OTxvW9xhlBhQSfldX6vXvSBEAbm7vRiMzjhMzOF6VLukBpYMNlU9zVJwnW9hfqmEst8AXWkjPAV7aQ4McpPnAQ"}}, "unsigned": {"age_ts": 1570041885492, "replaces_state": "$157004188194vdqBG:localhost:8800"}}`=eQaM$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800{"token_id": 325, "stream_ordering": 1598}{"auth_events": ["$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ", "$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w", "$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI"], "prev_events": ["$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to"], "type": "m.room.power_levels", "room_id": "!aVxOoyiLLnxmzgLJat:localhost:8800", "sender": "@anon-20191002_181700-305:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 81, "users_default": 80, "state_default": 50, "events_default": 81, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.avatar": 50, "m.room.name": 50}, "users": {"@anon-20191002_181700-305:localhost:8800": 100}}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041884682, "hashes": {"sha256": "mgaVQ24lceaJ+i+O9I46uFMxORRSQRmFQCIEnrMeNog"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+5gcOqrj1GJ+7NjOP8oLJSjRowxf3rr9FQKVu6/Hr214cnz7u/qe2yuSNdsM02dTDlaFgSwVYaOqk5R4FdTEAQ"}}, "unsigned": {"age_ts": 1570041884682, "replaces_state": "$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ"}} Vx  `X0pH H h@X0h@P(8pxP(`8 X 0  h @ ` 8  p H  X0x'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qSUSLLWjDxcGibUZdT:localhost:8800~'Q!qSUSLLWjDxcGibUZdT:localhost:8800}'Q!qSUSLLWjDxcGibUZdT:localhost:8800|'Q!qInWQPtNQfBFoVzUtP:localhost:8800 r'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800 >'Q!qjijQBfMwsCPTVgKPm:localhost:8800 ='Q!qjijQBfMwsCPTVgKPm:localhost:8800 <'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800 D'Q!rQeYcODvQiLsOIbQrJ:localhost:8800 'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800C'Q!rJhSRzmWBQHlIhuDXT:localhost:8800B'Q!rJhSRzmWBQHlIhuDXT:localhost:8800A'Q!rJhSRzmWBQHlIhuDXT:localhost:8800@'Q!rJhSRzmWBQHlIhuDXT:localhost:8800?'Q!rJhSRzmWBQHlIhuDXT:localhost:8800>'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800 x'Q!qtelAHlSkrqEFmlCqS:localhost:8800\'Q!qtelAHlSkrqEFmlCqS:localhost:8800['Q!qtelAHlSkrqEFmlCqS:localhost:8800Z'Q!qjijQBfMwsCPTVgKPm:localhost:8800 ?'Q!qjijQBfMwsCPTVgKPm:localhost:8800 A'Q!qjijQBfMwsCPTVgKPm:localhost:8800 @'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 q'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 p'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 s'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800@'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800$'Q!rQeYcODvQiLsOIbQrJ:localhost:8800#'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 o'Q!qjijQBfMwsCPTVgKPm:localhost:8800 B'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 r'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 t'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qtelAHlSkrqEFmlCqS:localhost:8800W'Q!qtelAHlSkrqEFmlCqS:localhost:8800X'Q!qtelAHlSkrqEFmlCqS:localhost:8800Y'Q!qjijQBfMwsCPTVgKPm:localhost:8800 C Pm< wF Q \ + g 6  r A  } L W&b1m< xGR!],g6rA.'] @anon-20191002_181700-388:localhost:8800.&] @anon-20191002_181700-387:localhost:8800o.%] @anon-20191002_181700-386:localhost:8800i.$]@anon-20191002_181700-385:localhost:8800a.#] @anon-20191002_181700-384:localhost:8800c."] @anon-20191002_181700-383:localhost:8800Z.!] @anon-20191002_181700-382:localhost:8800Y. ]@anon-20191002_181700-381:localhost:8800T.] @anon-20191002_181700-380:localhost:8800T.] @anon-20191002_181700-379:localhost:8800K.] @anon-20191002_181700-378:localhost:8800M.]@anon-20191002_181700-377:localhost:8800E/]@anon-20191002_181700-375:localhost:8800=.] @anon-20191002_181700-376:localhost:8800>.] @anon-20191002_181700-374:localhost:88003.]@anon-20191002_181700-372:localhost:8800".] @anon-20191002_181700-373:localhost:8800!.]@anon-20191002_181700-371:localhost:8800.]@anon-20191002_181700-370:localhost:8800.]@anon-20191002_181700-369:localhost:8800 .]@anon-20191002_181700-368:localhost:8800.] @anon-20191002_181700-367:localhost:8800.] @anon-20191002_181700-365:localhost:8800.]@anon-20191002_181700-366:localhost:8800.] @anon-20191002_181700-363:localhost:8800.]@anon-20191002_181700-364:localhost:8800. ] @anon-20191002_181700-360:localhost:8800. ] @anon-20191002_181700-361:localhost:8800. ] @anon-20191002_181700-362:localhost:8800. ] @anon-20191002_181700-359:localhost:8800. ] @anon-20191002_181700-357:localhost:8800.] @anon-20191002_181700-358:localhost:8800.] @anon-20191002_181700-356:localhost:8800q.] @anon-20191002_181700-354:localhost:8800o.] @anon-20191002_181700-355:localhost:8800r.]@anon-20191002_181700-353:localhost:8800g.] @anon-20191002_181700-352:localhost:8800e.] @anon-20191002_181700-350:localhost:8800^.] @anon-20191002_181700-351:localhost:8800V.] @anon-20191002_181700-349:localhost:8800N.] @anon-20191002_181700-348:localhost:8800F.~] @anon-20191002_181700-346:localhost:8800=.}] @anon-20191002_181700-347:localhost:8800>.|] @anon-20191002_181700-345:localhost:88006.{] @anon-20191002_181700-343:localhost:8800$.z] @anon-20191002_181700-342:localhost:8800.y] @anon-20191002_181700-341:localhost:8800.x] @anon-20191002_181700-339:localhost:8800.w] @anon-20191002_181700-338:localhost:8800.v] @anon-20191002_181700-337:localhost:8800.u] @anon-20191002_181700-336:localhost:8800.t]@anon-20191002_181700-335:localhost:8800.s]@anon-20191002_181700-334:localhost:8800.r] @anon-20191002_181700-333:localhost:8800.q] @anon-20191002_181700-332:localhost:8800.p] @anon-20191002_181700-331:localhost:8800.o] @anon-20191002_181700-330:localhost:8800.n] @anon-20191002_181700-329:localhost:8800.m] @anon-20191002_181700-328:localhost:8800.l] @anon-20191002_181700-327:localhost:8800.k] @anon-20191002_181700-326:localhost:8800.j] @anon-20191002_181700-325:localhost:8800.i] @anon-20191002_181700-324:localhost:8800.h] @anon-20191002_181700-323:localhost:8800.g] @anon-20191002_181700-322:localhost:8800.f] @anon-20191002_181700-321:localhost:8800.e] @anon-20191002_181700-320:localhost:8800.d] @anon-20191002_181700-319:localhost:8800.c] @anon-20191002_181700-318:localhost:8800z.b] @anon-20191002_181700-317:localhost:8800t.a]@anon-20191002_181700-316:localhost:8800n.`]@anon-20191002_181700-315:localhost:8800n._]@anon-20191002_181700-314:localhost:8800m.^] @anon-20191002_181700-312:localhost:8800n/]]@anon-20191002_181700-311:localhost:8800l.\] @anon-20191002_181700-310:localhost:8800O.[]@anon-20191002_181700-309:localhost:8800J.Z] @anon-20191002_181700-308:localhost:8800J.Y] @anon-20191002_181700-307:localhost:8800I.X] @anon-20191002_181700-306:localhost:8800D  CeQa$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1604}{"auth_events": ["$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM", "$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k", "$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "prev_events": ["$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4"], "type": "m.room.history_visibility", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041889983, "hashes": {"sha256": "OMhltPD+rofQRpxRcgrtv3mi6Cn5vDDqcoU9dAlrx9k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nG2ASvROXRTxUkm0De2SPsYS3krY84xxyUvggheOnZz2CMzu+P6n2HLveKTajGwOp2Eb991KPMUUg+fnGiHgAA"}}, "unsigned": {"age_ts": 1570041889983}}tBeQau$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1603}{"auth_events": ["$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM", "$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k", "$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "prev_events": ["$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM"], "type": "m.room.join_rules", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041889241, "hashes": {"sha256": "tHjsqlrvOGit8dOzrRrj8qYrg+nRkaxqCSFBrWJdJAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U4Hhp+dLShym1DhnCXe42CHU0E6+OjjjHVXk9j3R8ni7yNSL8fQZgFxL7GIT+znC3tuCJv7xAXSOaha7konCBg"}}, "unsigned": {"age_ts": 1570041889241}}kAeQac$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1602}{"auth_events": ["$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k", "$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "prev_events": ["$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY"], "type": "m.room.power_levels", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"users": {"@anon-20191002_181700-306:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041888308, "hashes": {"sha256": "f9oD4c5WYKDVKNcLPgAB0KfjhK1exqXbyo8Fxxjw4rs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IBvXQ3Hd6gs26PqiXDH5tK+T8eOrPsK9PeULf0r+UJtR3p92uO0Tj4YVB2BRB8TbPNAe4/Vmx7XETvwoufZHDg"}}, "unsigned": {"age_ts": 1570041888308}}v@eQay$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800{"token_id": 326, "stream_ordering": 1601}{"auth_events": ["$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k"], "prev_events": ["$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k"], "type": "m.room.member", "room_id": "!nvclDopiBLEOKBIheH:localhost:8800", "sender": "@anon-20191002_181700-306:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-306", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-306:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041887540, "hashes": {"sha256": "f2Fku2J8A6ZtkZVsIh3pVI+eju1OCHwqZC9V9E2QmNM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vw4BbUVQOa5mEdeP21mqjdYupuChINCnpSgJXEcMWZu+7jb/lz7loMg/4s2Ayomts8L34UZWJbLrCcq7ADd9AA"}}, "unsigned": {"age_ts": 1570041887540}} ,NC 8 - { " p  e ZOD9.|#qf VleL$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAsha256fYʛ;F26.bf.,AT0VkeL$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQsha256~#mlXbR^m-VjeL$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQsha256QUugTvW$, E@4VieL$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYsha256PY9.ajbk/xT8vVheL$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qsha256wSɳ^vԾ*>})(ߞKPVgeL$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIsha256 W dHѫ/r0bϳXVfeL$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gsha256e:a%-RtEFj8e.=HN VeeL$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIsha256 Q&(EY{~,4V9VdeL$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648sha256uL V}u[O&",VceL$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8sha256Ӥ\DyvYH'Ck?VbeL$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcsha256&Bz"r7R0uQ"g7VaeL$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAsha256PKNάZ/5,z PbR V`eL$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwsha256Oo555]' >x_dMA8V_eL$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEsha256Irs [ޮqP7as=rV^eL$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wsha256$Ű.򆉒`ElT|S䓼V]eL$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcssha256gR}-@n\LS_]Jl\V\eL$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ysha256B WbޘǍkV[eL$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAsha256j]т?EK_PbYtVZeL$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMsha2560HN`9(6܊WQ,i{ CVYeL$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYsha256Bc7ghÑ0Hx s8!)vVXeL$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEsha256X|Q5J4Ini _sLť2-:VWeL$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0sha256fјAAҥ;G\*3@ J ጲVVeL$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4sha256gSF~L^)y ]~VUeL$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9ssha256YdVBkW;Yٝ!PG0 VTeL$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90sha256xT|ԚяrV$PK>%xK[+SAVSeL$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcsha256gL,aug)$H9 ШgVReL$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAsha256B-z yM@D /VQeL$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHssha256dܗ&ǖJ9|z@x6{VPeL$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0sha25619*ZY3 T5Ei]]GaMVOeL$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8sha256T[. 6G@|P  BGBeVNeL$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2csha256FOdwYߜrܯxJSgVMeL$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Isha256' c(qHsg xrh܏bVLeL$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIsha256f5Ʀ$*)ef%ke~֒VKeL$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwsha256BT>hZubz6%~;]9VJeL$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1ksha256r^v31YVIeL$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELksha2561?2bt {)=hd3?VHeL$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Asha256s9<]s"C]Ǖ^װŲ1VGeL$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4ksha256Ŧ'`9+ =bz!cQQC#VFeL$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4sha256דU{@5=?`) 52ImVEeL$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUsha256>wxtQHDܹRPO}FfÊVDeL$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEsha256eqr˫%(,FGdVCeL$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wsha256yv. 5d \Hn9VRc?VBeL$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4sha2560/-ж񟯛iMZt' xVAeL$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMsha256Z1򓭙l?VXRz$ã ,`m^m z ) 8 E R  _ n{*7FS|+P]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:88001P]Q@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800P]Q@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800P]Q@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800 P]Q@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800 P]Q@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800 P]Q@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800 P]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:88000P]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800.P]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800/P]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800-N[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800+P]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800,P]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800*P]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800(P]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800)P]Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800'P]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800&P]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800%P]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800$N[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800#P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800"P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800!P]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800 P]Q@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800P]Q@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829P]Q@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800P]Q@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800P]Q@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829N[Q@anon-20191002_181700-33:localhost:8800!aWJOsiuJONOvjKWEjO:localhost:8800P]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829P]Q@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800P]Q@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800P]Q@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800P]Q@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800P]Q@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800P]Q@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800N[Q@anon-20191002_181700-32:localhost:8800!BDASLhdcKfNwxCTCSg:localhost:8800P]Q@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800P]Q@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1 e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1 e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1 e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1~e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1}e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1|e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01{e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1ze$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1ye$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U 1xe$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs 1we$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE 1ve$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1ue$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk 1te$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM 1se$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI1re$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU1qe$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc1pe$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1oe$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY81ne$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1me$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41le$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs1ke$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk1je$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1ie$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ1he$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1ge$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY1fe$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1ee$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1de$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1ce$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1be$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481ae$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81`e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc1_e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1^e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1]e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE1\e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w1[e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1Ze$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y1Ye$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1Xe$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1We$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY1Ve$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1Ue$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01Te$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41Se$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1Re$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy901Qe$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1Pe$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1Oe$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs1Ne$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU01Me$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr81Le$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1Ke$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1Je$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1Ie$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1He$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k1Ge$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk1Fe$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1Ee$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1De$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ41Ce$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1Be$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME1Ae$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w Hvc2d/ _ , \ ' W $ X # S PMLK}HzEuDvA2]@anon-20191002_181700-412:localhost:8800a 4]@anon-20191002_181700-411:localhost:8800m 2]@anon-20191002_181700-411:localhost:8800a 2]@anon-20191002_181700-410:localhost:8800a0[@anon-20191002_181700-40:localhost:8800aX4]@anon-20191002_181700-409:localhost:8800m 2]@anon-20191002_181700-409:localhost:8800a4]@anon-20191002_181700-408:localhost:8800m2]@anon-20191002_181700-408:localhost:8800a4]@anon-20191002_181700-407:localhost:8800m2]@anon-20191002_181700-407:localhost:8800a2]@anon-20191002_181700-406:localhost:8800a4]@anon-20191002_181700-405:localhost:8800m2]@anon-20191002_181700-405:localhost:8800a4]@anon-20191002_181700-404:localhost:8800m2]@anon-20191002_181700-404:localhost:8800a4]@anon-20191002_181700-403:localhost:8800m2]@anon-20191002_181700-403:localhost:8800a2]@anon-20191002_181700-402:localhost:8800a4]@anon-20191002_181700-401:localhost:8800m2]@anon-20191002_181700-401:localhost:8800a4]@anon-20191002_181700-400:localhost:8800m2]@anon-20191002_181700-400:localhost:8800a0[@anon-20191002_181700-3a:localhost:8800a2[@anon-20191002_181700-39:localhost:8800mW0[@anon-20191002_181700-39:localhost:8800aV4]@anon-20191002_181700-399:localhost:8800m2]@anon-20191002_181700-399:localhost:8800a4]@anon-20191002_181700-398:localhost:8800m2]@anon-20191002_181700-398:localhost:8800a4]@anon-20191002_181700-397:localhost:8800m2]@anon-20191002_181700-397:localhost:8800a2]@anon-20191002_181700-396:localhost:8800a4]@anon-20191002_181700-395:localhost:8800m2]@anon-20191002_181700-395:localhost:8800a4]@anon-20191002_181700-394:localhost:8800m2]@anon-20191002_181700-394:localhost:8800a4]@anon-20191002_181700-393:localhost:8800m2]@anon-20191002_181700-393:localhost:8800a4]@anon-20191002_181700-392:localhost:8800m2]@anon-20191002_181700-392:localhost:8800a4]@anon-20191002_181700-391:localhost:8800m2]@anon-20191002_181700-391:localhost:8800a4]@anon-20191002_181700-390:localhost:8800m2]@anon-20191002_181700-390:localhost:8800a2[@anon-20191002_181700-38:localhost:8800mU0[@anon-20191002_181700-38:localhost:8800aT4]@anon-20191002_181700-389:localhost:8800m2]@anon-20191002_181700-389:localhost:8800a4]@anon-20191002_181700-388:localhost:8800m2]@anon-20191002_181700-388:localhost:8800a4]@anon-20191002_181700-387:localhost:8800m2]@anon-20191002_181700-387:localhost:8800a4]@anon-20191002_181700-386:localhost:8800m2]@anon-20191002_181700-386:localhost:8800a4]@anon-20191002_181700-385:localhost:8800m2]@anon-20191002_181700-385:localhost:8800a4]@anon-20191002_181700-384:localhost:8800m2]@anon-20191002_181700-384:localhost:8800a4]@anon-20191002_181700-383:localhost:8800m2]@anon-20191002_181700-383:localhost:8800a4]@anon-20191002_181700-382:localhost:8800m2]@anon-20191002_181700-382:localhost:8800a4]@anon-20191002_181700-381:localhost:8800m2]@anon-20191002_181700-381:localhost:8800a4]@anon-20191002_181700-380:localhost:8800m2]@anon-20191002_181700-380:localhost:8800a2[@anon-20191002_181700-37:localhost:8800mS0[@anon-20191002_181700-37:localhost:8800aR4]@anon-20191002_181700-379:localhost:8800m2]@anon-20191002_181700-379:localhost:8800a4]@anon-20191002_181700-378:localhost:8800m exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~}|{zyx~w}v|u{tzsyrxqwpvountmslrkqjpiohngmflekdjcibhag`f_e^d]c\b[aZ`Y_X^W]V\U[TZSYRXQWPVOUNTMSLRKQJPIOHNGMFLEKDJCIBHAG@F?E>D=C<B;A:@9?8>7=6<5;4:39281706/5.4-3,2+1*0)/(.'-&,%+$*#)"(!' &%$#"!                   *tGeQau$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1608}{"auth_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4", "$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "prev_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4"], "type": "m.room.join_rules", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041894533, "hashes": {"sha256": "fZgIjhUcUioxslaIbTL5/14rgahTIdyGKaN1GieExqU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hOd6BE0Z8CvSeeKN8XVWiIlNpLPBvTOUcPmt8hSqFKR3MDGdDUEzWM/R/AXcVOkvXkEwIbt0DCwCW0act6jBAg"}}, "unsigned": {"age_ts": 1570041894533}}kFeQac$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1607}{"auth_events": ["$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "prev_events": ["$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "type": "m.room.power_levels", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"users": {"@anon-20191002_181700-307:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041893543, "hashes": {"sha256": "idVYhReESVOR9VqJYYGlqiobz5Cd2fQrZiGESkvbdyw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FAnXJs3bYHDVXx2JXiqeeHMr/qb4Ac/+/XYbnMUPnWSMfTH504Sy2b7hzOpU9fA80Dkp5eyvwfcq1/dd3PqUDw"}}, "unsigned": {"age_ts": 1570041893543}}vEeQay$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1606}{"auth_events": ["$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME"], "prev_events": ["$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME"], "type": "m.room.member", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-307", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-307:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041892994, "hashes": {"sha256": "5yDENG8a01ZBzQ85aWGK+bWPBjQ4ZSy7d6gUAMq8sK8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Azkud7X2kHS/qbvFIRzxImHGmGQBq1nVfEqcd+AbdySS87bGmw83mcxZ36Vj7EQHmtqKiK4hTfyzDNSzfp/6BA"}}, "unsigned": {"age_ts": 1570041892994}}iDeQa_$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1605}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-307:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041892222, "hashes": {"sha256": "74Z1QUDrVmpaBAT4xtuf8nTGwHi75dUI58vvkgTXm3A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z0x7MNRJvZe9zN8b/iPhoneDJO7fZCOtbaGU5a5QRdkq4e6B0N20mLxm5rYz2gmGJfKSKkQOxs54DSY70Z3IAQ"}}, "unsigned": {"age_ts": 1570041892222}} #Nq) 1 < f ( 2T8^"$Ni~Q3 e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levels$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gg}Q/ e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI |Q']e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648l{Q9 e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_alias$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8czQ' e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.create$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzciyQ3 e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA xQ']e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwrwQ))e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEcvQ' e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wbuQ% e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topic$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsrtQ))e!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YasQ# e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.name$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAorQ? e!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibility$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMoqQ? e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibility$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYgpQ/ e!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rules$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEgoQ/ e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rules$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0lnQ9 e!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_alias$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4lmQ9 e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_alias$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9silQ3 e!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levels$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90ikQ3 e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc jQ']e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs iQ']e!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAchQ' e!vyCFfUTJKYJSDadFhT:localhost:8800m.room.create$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0cgQ' e!beBXQofoOfxNBtzsut:localhost:8800m.room.create$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8ofQ? e!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibility$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cgeQ/ e!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rules$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IidQ3 e!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI cQ']e!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwcbQ' e!xvblqEscwOtCqJntfF:localhost:8800m.room.create$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kfaQ- e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.tombstone$yrx24DeUlVPn0WuKurI8zQ-dR2Upm89bUIKk4Y3e82Q `Q']e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELko_Q? e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.history_visibility$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Ag^Q/ e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.join_rules$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4ki]Q3 e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.power_levels$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4 \Q']e!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-307:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU =\ Z  p  n*844=!]e)Q ]$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ym.room.aliases!beBXQofoOfxNBtzsut:localhost:8800mWZmZ@anon-20191002_181700-311:localhost:8800\e#Q ]$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAm.room.name!vyCFfUTJKYJSDadFhT:localhost:8800mWYmY@anon-20191002_181700-311:localhost:8800,[e?Q ]$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMm.room.history_visibility!beBXQofoOfxNBtzsut:localhost:8800mPmU%@anon-20191002_181700-311:localhost:8800,Ze?Q ]$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYm.room.history_visibility!vyCFfUTJKYJSDadFhT:localhost:8800mPmT@anon-20191002_181700-311:localhost:8800$Ye/Q ]$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEm.room.join_rules!beBXQofoOfxNBtzsut:localhost:8800mLamN`@anon-20191002_181700-311:localhost:8800$Xe/Q ]$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0m.room.join_rules!vyCFfUTJKYJSDadFhT:localhost:8800mL`mM@anon-20191002_181700-311:localhost:8800)We9Q ]$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4m.room.canonical_alias!beBXQofoOfxNBtzsut:localhost:8800mHfmJ=@anon-20191002_181700-311:localhost:8800)Ve9Q ]$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sm.room.canonical_alias!vyCFfUTJKYJSDadFhT:localhost:8800mHdmI@anon-20191002_181700-311:localhost:8800&Ue3Q ]$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90m.room.power_levels!beBXQofoOfxNBtzsut:localhost:8800mD$mG*@anon-20191002_181700-311:localhost:8800&Te3Q ]$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcm.room.power_levels!vyCFfUTJKYJSDadFhT:localhost:8800mD"mFo@anon-20191002_181700-311:localhost:8800 Se'Q ]$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAm.room.member!beBXQofoOfxNBtzsut:localhost:8800m?mB@anon-20191002_181700-311:localhost:8800 Re'Q ]$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsm.room.member!vyCFfUTJKYJSDadFhT:localhost:8800m?mA@anon-20191002_181700-311:localhost:8800Q e'Q  ]$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0m.room.create!vyCFfUTJKYJSDadFhT:localhost:8800m<m=8@anon-20191002_181700-311:localhost:8800P e'Q  ]$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8m.room.create!beBXQofoOfxNBtzsut:localhost:8800m<m<@anon-20191002_181700-311:localhost:8800,Oe?Q ]$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cm.room.history_visibility!xvblqEscwOtCqJntfF:localhost:8800m4m6 @anon-20191002_181700-310:localhost:8800$Ne/Q ]$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Im.room.join_rules!xvblqEscwOtCqJntfF:localhost:8800m1Rm2U@anon-20191002_181700-310:localhost:8800&Me3Q ]$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIm.room.power_levels!xvblqEscwOtCqJntfF:localhost:8800m-jm/i@anon-20191002_181700-310:localhost:8800 Le'Q ]$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwm.room.member!xvblqEscwOtCqJntfF:localhost:8800m)m*@anon-20191002_181700-310:localhost:8800K e'Q  ]$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1km.room.create!xvblqEscwOtCqJntfF:localhost:8800m&m&@anon-20191002_181700-310:localhost:8800 Je'Q ]$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkm.room.member!HhYREfUiJTpjWmOuPF:localhost:8800mm@anon-20191002_181700-308:localhost:8800,Ie?Q ]$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_Am.room.history_visibility!HhYREfUiJTpjWmOuPF:localhost:8800mmq@anon-20191002_181700-307:localhost:8800$He/Q ]$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4km.room.join_rules!HhYREfUiJTpjWmOuPF:localhost:8800mm^@anon-20191002_181700-307:localhost:8800&Ge3Q ]$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4m.room.power_levels!HhYREfUiJTpjWmOuPF:localhost:8800mm@anon-20191002_181700-307:localhost:8800 Fe'Q ]$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUm.room.member!HhYREfUiJTpjWmOuPF:localhost:8800mm@anon-20191002_181700-307:localhost:8800 6 w6vKeQay$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1612}{"auth_events": ["$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k"], "prev_events": ["$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k"], "type": "m.room.member", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-310", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-310:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041899516, "hashes": {"sha256": "9aVNro2B99ZXEfSfWajHOlTjxkhZKZHu2vu1dOquzCM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITZZfPMrecX4lscSuLXIb4c5p9lW/tQqis/TdNoTQ7e24bzz6iw45/1c27ZHA6S+cjOVQcOVKkjwtIs5h95KBw"}}, "unsigned": {"age_ts": 1570041899516}}iJeQa_$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1611}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-310:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041898515, "hashes": {"sha256": "x3Elg/vVUAeHaQWUj5qqcmq7iNbZIQHOt+z5DJMe7eI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7XbRhAPUTvdGC0OjJAusU/+UDd9uITg/sCgTAIgBQVNEckvHS0+Mp3RBs5fm5IlIn40FIj2OtTUf1rZw4fEIBQ"}}, "unsigned": {"age_ts": 1570041898515}}VIeQa9$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 328, "stream_ordering": 1610}{"auth_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4", "$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k"], "prev_events": ["$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A"], "type": "m.room.member", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-308:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-308", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-308:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041896469, "hashes": {"sha256": "NXQ0fdyb0MzxCPz6rSaMzX9vs7RJTCo2VcaqNpzayzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AuMkpaCxUAONczTr8P9C18fstdiFxR2QRchYomyxLFKyDbmRQ8ZI/DYsaBwpTins6AX6UCHZW7EPpJtkwE7EAQ"}}, "unsigned": {"age_ts": 1570041896469}}HeQa$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A!HhYREfUiJTpjWmOuPF:localhost:8800{"token_id": 327, "stream_ordering": 1609}{"auth_events": ["$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4", "$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME", "$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU"], "prev_events": ["$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k"], "type": "m.room.history_visibility", "room_id": "!HhYREfUiJTpjWmOuPF:localhost:8800", "sender": "@anon-20191002_181700-307:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041895193, "hashes": {"sha256": "OQ+ZaM0WS8Qie3yf1ZxVPl6Tmp1N1eFQMMYr8sHPHO4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VRe6n557fstb5IfbjJlLv9Uffyh+Hep6EEKaiwekvmb+vJwZZv/FS9vpKV7fEuIDbGWvIfFEc/rGmHfJmrRrDA"}}, "unsigned": {"age_ts": 1570041895193}} "p y . ` @ f =e"HHp,pAQ? ek!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQc@Q% ej!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topic$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYh?Q/ ei!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rules$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qp>Q? eh!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibility$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIj=Q3 eg!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levels$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gh<Q/ ef!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI ;Q']ee!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648m:Q9 ed!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_alias$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8d9Q' ec!SfYtaUhCFosNfHfUVm:localhost:8800m.room.create$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcj8Q3 eb!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA 7Q']ea!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRws6Q))e`!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEd5Q' e_!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wc4Q% e^!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topic$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcss3Q))e]!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Yb2Q# e\!vyCFfUTJKYJSDadFhT:localhost:8800m.room.name$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAp1Q? e[!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibility$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMp0Q? eZ!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibility$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYh/Q/ eY!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rules$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhEh.Q/ eX!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rules$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0m-Q9 eW!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_alias$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4m,Q9 eV!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_alias$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sj+Q3 eU!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levels$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90j*Q3 eT!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc )Q']eS!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA (Q']eR!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsd'Q' eQ!vyCFfUTJKYJSDadFhT:localhost:8800m.room.create$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0d&Q' eP!beBXQofoOfxNBtzsut:localhost:8800m.room.create$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8p%Q? eO!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibility$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2ch$Q/ eN!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rules$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Ij#Q3 eM!xvblqEscwOtCqJntfF:localhost:8800m.room.power_levels$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI "Q']eL!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwd!Q' eK!xvblqEscwOtCqJntfF:localhost:8800m.room.create$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k Q']eJ!HhYREfUiJTpjWmOuPF:localhost:8800m.room.member@anon-20191002_181700-308:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk g * T~=ggJ]!cS@anon-20191002_181700-320:localhost:8800WFQFGOHNGBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgogI]!cR@anon-20191002_181700-319:localhost:8800HSJRSHPEIAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEN1KlE4cmt4ZHdeayYqRmIKMDAyZnNpZ25hdHVyZSCDi7ywkZTQz5JXqqEFhHe9nQqcZgcfJJGXdwiFuFZ9tgogH]!cQ@anon-20191002_181700-318:localhost:8800PHFUHLOHRJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAogG]!cP@anon-20191002_181700-317:localhost:8800KSXFFXWMCBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGp5X3ZqYWUwO1lSMVZfPWIKMDAyZnNpZ25hdHVyZSBXnyRWT7c5jVRFSAP8yBUFVPMpHFHO6Jh3lAfIH2WdGAogF]!cO@anon-20191002_181700-316:localhost:8800JHIWJLKOFGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ6eG4uLmo4eW94QlROanoKMDAyZnNpZ25hdHVyZSBbUWn8_gv5bniC91yO-BYhfQYBVRKyv5j5MVVtMP_JLwogE]!cN@anon-20191002_181700-315:localhost:8800KXXAQONTRLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEktc1A6I2xTMH5pbitmUy0KMDAyZnNpZ25hdHVyZSAHdPEVl-Zg5xmbVysqfNP8UeNclE06lAUk2sezF9wAlAogD]!cM@anon-20191002_181700-314:localhost:8800BTSWZNQVTPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDc4UmlwQ2g1OHNKcUkzVVAKMDAyZnNpZ25hdHVyZSAdNspZQ479GxtCNd_qDY7ARZWMjLUH92hEAKKLsgL4DQogC]!cL@anon-20191002_181700-312:localhost:8800LFIOTRIQVMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8jTldNRmhjQDJZSGt5a0kKMDAyZnNpZ25hdHVyZSAytp0T7K0GtNLyrrvvKThMXkDCn1jZ6wI9npjmCcM0CwogB]!cK@anon-20191002_181700-311:localhost:8800BNVFQNMSXMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtpJjJyXl9fZkwjbXE5QncKMDAyZnNpZ25hdHVyZSAlQMVETAI9JwraP-0coRf6nU91QgVwG3VZKwPV1QeoogogA]!cJ@anon-20191002_181700-310:localhost:8800UKYXDPZQOOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpGdCZ5bVg2OF5MNENsZTUKMDAyZnNpZ25hdHVyZSAGdnSPXhdcyvh2jrndHbGjSQGNcRvNC_jdA14cLC5axwog@]!cI@anon-20191002_181700-309:localhost:8800OEPQWZYGARMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQo JaWb sL% ^ 7  *?xP(/b:g 8 orK#]6nF m E  R  X 0  j B  z8'Q!hWHyATwKfuznrqTiyu:`('Q!ZOpRjvUhkWYJBFJZeO:localhost:8800v'Q!ZOwibbprUCQrSJQCrx:localhost:8800r&Q!TleKOyAElrpgyyrAQA:localhost:8800$'Q!aiOswwhoZqjhcjzbzc:localhost:8800m'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800f'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829N&Q!XgobMgBjNcDRJnRXLD:localhost:88001'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800@'Q!URpLZLuBfVcfHVTBGS:localhost:8800|'Q!UMFUOnYRvwKwSPkYHB:localhost:88009'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800F'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800Y'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800X'Q!atnRTMliktaVUhMVID:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800]'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800Q'Q!aZwMKYDXJRlSKjQNWM:localhost:8800P'Q!aZwMKYDXJRlSKjQNWM:localhost:8800O&Q!aWvVRVaDflYyyGTOdD:localhost:8800T&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800b&Q!aBCvSXjtZUEPlPGHvY:localhost:8800['Q!ZvLVbnHjeymRiFIkYr:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800&Q!XIqmzIFbkHGQPIpywk:localhost:8800O'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800{ R('Q!XGAmnfaVvjDtQJuufa:localhost:8800:'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800]&Q!WjlTCJVOFJkanCtkFE:localhost:8800\'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800~'Q!WYyiQAVvitxsLZKVCG:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800P&Q!WVzjUePHrzCjfyTbmK:localhost:8800t'Q!WFHIeSFQyuugGeBFxW:localhost:8800|'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800I'Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800(&Q!VAEDgDJVqmxXZyAlSW:localhost:88006&Q!UyLoIXmzVFwycmBUeh:localhost:8800v'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800W a} { y w u sqomkigeca~4eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~3eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~2eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~1eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~0eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~/eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~.eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~-eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~,eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~+eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~*eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~)eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~(eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~'eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~&eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~%eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~$eeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~#eeQ$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~"eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~!eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~ eeQ$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~eeQ$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800~eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800~eeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800~eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800~eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800~eeQ$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800~eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800~eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800~eeQ$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k!xvblqEscwOtCqJntfF:localhost:8800 Bd= k6a.Z% Q   J  v A o :  f 1_*V!M{Frd/[&2[@anon-20191002_181700-40:localhost:8800m%K!4]@anon-20191002_181700-356:localhost:8800m`4]@anon-20191002_181700-355:localhost:8800ms_4]@anon-20191002_181700-354:localhost:8800m^4]@anon-20191002_181700-353:localhost:8800m\4]@anon-20191002_181700-352:localhost:8800m]4]@anon-20191002_181700-351:localhost:8800m͒+[4]@anon-20191002_181700-350:localhost:8800m͒)Z2[@anon-20191002_181700-34:localhost:8800m4]@anon-20191002_181700-349:localhost:8800msY4]@anon-20191002_181700-409:localhost:8800m0 4]@anon-20191002_181700-408:localhost:8800m+!4]@anon-20191002_181700-407:localhost:8800mj4]@anon-20191002_181700-405:localhost:8800m4]@anon-20191002_181700-404:localhost:8800mr4]@anon-20191002_181700-403:localhost:8800m4]@anon-20191002_181700-401:localhost:8800m4]@anon-20191002_181700-400:localhost:8800mҲ2[@anon-20191002_181700-39:localhost:8800m 4]@anon-20191002_181700-399:localhost:8800mҚ4]@anon-20191002_181700-398:localhost:8800mҖ4]@anon-20191002_181700-397:localhost:8800m҂4]@anon-20191002_181700-396:localhost:8800m}4]@anon-20191002_181700-395:localhost:8800md4]@anon-20191002_181700-394:localhost:8800mK4]@anon-20191002_181700-393:localhost:8800m1p4]@anon-20191002_181700-392:localhost:8800m4]@anon-20191002_181700-391:localhost:8800m|4]@anon-20191002_181700-390:localhost:8800mI2[@anon-20191002_181700-38:localhost:8800m4]@anon-20191002_181700-389:localhost:8800m4]@anon-20191002_181700-388:localhost:8800mѧ4]@anon-20191002_181700-387:localhost:8800mђ4]@anon-20191002_181700-386:localhost:8800m}#~4]@anon-20191002_181700-385:localhost:8800mP9|4]@anon-20191002_181700-384:localhost:8800mP=}4]@anon-20191002_181700-383:localhost:8800m3{4]@anon-20191002_181700-382:localhost:8800m/z4]@anon-20191002_181700-381:localhost:8800my4]@anon-20191002_181700-380:localhost:8800mx2[@anon-20191002_181700-37:localhost:8800m34]@anon-20191002_181700-379:localhost:8800m΅w4]@anon-20191002_181700-378:localhost:8800m΃v4]@anon-20191002_181700-377:localhost:8800mЛu4]@anon-20191002_181700-376:localhost:8800mЇt4]@anon-20191002_181700-375:localhost:8800mk~s4]@anon-20191002_181700-374:localhost:8800m;|r4]@anon-20191002_181700-373:localhost:8800m!%q4]@anon-20191002_181700-372:localhost:8800mp4]@anon-20191002_181700-371:localhost:8800mSo4]@anon-20191002_181700-370:localhost:8800mcn2[@anon-20191002_181700-36:localhost:8800mJ4]@anon-20191002_181700-369:localhost:8800mxm4]@anon-20191002_181700-368:localhost:8800mϱl4]@anon-20191002_181700-367:localhost:8800mϘk4]@anon-20191002_181700-366:localhost:8800m~i4]@anon-20191002_181700-365:localhost:8800m~j4]@anon-20191002_181700-364:localhost:8800m`g4]@anon-20191002_181700-363:localhost:8800m`h4]@anon-20191002_181700-362:localhost:8800mf4]@anon-20191002_181700-361:localhost:8800m^e4]@anon-20191002_181700-360:localhost:8800mňd2[@anon-20191002_181700-35:localhost:8800m 4]@anon-20191002_181700-359:localhost:8800mβ c4]@anon-20191002_181700-358:localhost:8800m)b4]@anon-20191002_181700-357:localhost:8800m]a -RM H C > 9 4/*|%w rmhc T Qe !UMFUOnYRvwKwSPkYHB:localhost:8800$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsT Qe !hZuwenlFDapIPBOyfi:localhost:8800$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gT Qe !hZuwenlFDapIPBOyfi:localhost:8800$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkT Qe !hZuwenlFDapIPBOyfi:localhost:8800$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMTQe!hZuwenlFDapIPBOyfi:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApITQe!hZuwenlFDapIPBOyfi:localhost:8800$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUTQe!LvARVIpJZeRQxbKefX:localhost:8800$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAETQe!LvARVIpJZeRQxbKefX:localhost:8800$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8TQe!LvARVIpJZeRQxbKefX:localhost:8800$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMTQe!LvARVIpJZeRQxbKefX:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4TQe!LvARVIpJZeRQxbKefX:localhost:8800$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsTQe!SfYtaUhCFosNfHfUVm:localhost:8800$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkTQe!SfYtaUhCFosNfHfUVm:localhost:8800$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TATQe!NPdjmIfsBVIIkvWBzD:localhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQT~Qe!SfYtaUhCFosNfHfUVm:localhost:8800$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQT}Qe!NPdjmIfsBVIIkvWBzD:localhost:8800$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYT|Qe!SfYtaUhCFosNfHfUVm:localhost:8800$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4QT{Qe!NPdjmIfsBVIIkvWBzD:localhost:8800$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLITzQe!SfYtaUhCFosNfHfUVm:localhost:8800$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gTyQe!NPdjmIfsBVIIkvWBzD:localhost:8800$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQITxQe!SfYtaUhCFosNfHfUVm:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648TwQe!NPdjmIfsBVIIkvWBzD:localhost:8800$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8TvQe!SfYtaUhCFosNfHfUVm:localhost:8800$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcTuQe!NPdjmIfsBVIIkvWBzD:localhost:8800$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiATtQe!NPdjmIfsBVIIkvWBzD:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwTsQe!vyCFfUTJKYJSDadFhT:localhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wETrQe!NPdjmIfsBVIIkvWBzD:localhost:8800$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wTqQe!vyCFfUTJKYJSDadFhT:localhost:8800$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsTpQe!beBXQofoOfxNBtzsut:localhost:8800$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YToQe!vyCFfUTJKYJSDadFhT:localhost:8800$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobATnQe!beBXQofoOfxNBtzsut:localhost:8800$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dMTmQe!vyCFfUTJKYJSDadFhT:localhost:8800$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYTlQe!beBXQofoOfxNBtzsut:localhost:8800$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhETkQe!vyCFfUTJKYJSDadFhT:localhost:8800$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0TjQe!beBXQofoOfxNBtzsut:localhost:8800$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4TiQe!vyCFfUTJKYJSDadFhT:localhost:8800$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sThQe!beBXQofoOfxNBtzsut:localhost:8800$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90TgQe!vyCFfUTJKYJSDadFhT:localhost:8800$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcTfQe!vyCFfUTJKYJSDadFhT:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsTeQe!beBXQofoOfxNBtzsut:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRATdQe!vyCFfUTJKYJSDadFhT:localhost:8800$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0TcQe!beBXQofoOfxNBtzsut:localhost:8800$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8TbQe!xvblqEscwOtCqJntfF:localhost:8800$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cTaQe!xvblqEscwOtCqJntfF:localhost:8800$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2IT`Qe!xvblqEscwOtCqJntfF:localhost:8800$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI  iOeQa_$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1616}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-311:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041904133, "hashes": {"sha256": "508VlO9FLS+i4NlGtuI9wFo9p/pGWDDvU5F4KcJdW28"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v5DphIH3LYKz8gzNm1ffZeKFM7bd9iSMvw5nRQiJ11Dm7uNgK5jOxas6sKZ0hzBjpQvhFFAyMDSrvqGMy3zGCw"}}, "unsigned": {"age_ts": 1570041904133}}NeQa$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1615}{"auth_events": ["$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI", "$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k", "$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "prev_events": ["$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I"], "type": "m.room.history_visibility", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041902108, "hashes": {"sha256": "sXYQj27r1rtNeih1UsfnNxkxU3ZYqfJ++yUUB7IJeug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aZr4+eCgsgzU2eSfKD3mJN7YbkWFIT7rJqqmof4gVfa8ZixJ1KAAM1kqNkShgt1TKZIWvh6kjWxkLmMDry9fDQ"}}, "unsigned": {"age_ts": 1570041902108}}tMeQau$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1614}{"auth_events": ["$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI", "$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k", "$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "prev_events": ["$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI"], "type": "m.room.join_rules", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041901394, "hashes": {"sha256": "b3DBio88MxvaZKVUVyXsVm1PsaApqiCvyqDcnqwOdS4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZJXQ5BtkMVzam0kvhEUv/C4DC6bCEsl7DE/Yv8t9d31Vacu6Csl4pKGTc64AfBdZM9FqdpKpE3lhFkMeA9KcDw"}}, "unsigned": {"age_ts": 1570041901394}}kLeQac$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI!xvblqEscwOtCqJntfF:localhost:8800{"token_id": 330, "stream_ordering": 1613}{"auth_events": ["$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1k", "$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "prev_events": ["$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw"], "type": "m.room.power_levels", "room_id": "!xvblqEscwOtCqJntfF:localhost:8800", "sender": "@anon-20191002_181700-310:localhost:8800", "content": {"users": {"@anon-20191002_181700-310:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041900394, "hashes": {"sha256": "WoWYjcVqv2ox2NIDMH2KGKTQBxKbwSnKJL/6w3VGWFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zekwuCzh5gk42KsPmDJRXX3vL5Uc76owI7ukCQhlJWXahjbE3p5/79lfR1qS7cKny425ank0gfOH/HkbfEMhDg"}}, "unsigned": {"age_ts": 1570041900394}} $`(` > j ( P ~ D@rt 2g"[`gueQ3 $FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels teQ']$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800joinaseQ' $6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800m.room.create`reQ% $v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic_qeQ# $qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800m.room.nameppeQ))$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800moeQ? $UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility`neQ% $Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topicemeQ/ $d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rulesmleQ? $Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibilitygkeQ3 $ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levelsejeQ/ $CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules ieQ']$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800joinjheQ9 $vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_aliasageQ' $Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800m.room.creategfeQ3 $9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels eeQ']$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800joinpdeQ))$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800aceQ' $5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create`beQ% $gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topicpaeQ))$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800_`eQ# $sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800m.room.namem_eQ? $3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800m.room.history_visibilitym^eQ? $BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibilitye]eQ/ $WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800m.room.join_rulese\eQ/ $mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rulesj[eQ9 $htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800m.room.canonical_aliasjZeQ9 $hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_aliasgYeQ3 $uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800m.room.power_levelsgXeQ3 $Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levels WeQ']$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800join VeQ']$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800joinaUeQ' $joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800m.room.createaTeQ' $VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800m.room.createmSeQ? $wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibilityeReQ/ $JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800m.room.join_rules bn/}f' sV9kN3 _  x U > ' o O /  x b K % S 8 ~iS<L/~c@)P9v7G*>']"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-305:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-304:localhost:8800' m.room.create- m.room.tombstone"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-322:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-321:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-320:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>'] m.room.member@anon-20191002_181700-319:localhost:8800'  m.room.create"?  m.room.history_visibility/  m.room.join_rules3  m.room.power_levels >']m.room.member@anon-20191002_181700-318:localhost:8800 ' m.room.create "? m.room.history_visibility / m.room.join_rules 3 m.room.power_levels>']m.room.member@anon-20191002_181700-317:localhost:8800' m.room.create% m.room.topic# m.room.name%))m.room.aliaseslocalhost:8800"? m.room.history_visibility% m.room.topic/ m.room.join_rules"? m.room.history_visibility3 m.room.power_levels/ m.room.join_rules>']m.room.member@anon-20191002_181700-312:localhost:88009 m.room.canonical_alias' m.room.create3 m.room.power_levels>']m.room.member@anon-20191002_181700-311:localhost:8800%))m.room.aliaseslocalhost:8800' m.room.create% m.room.topic%))m.room.aliaseslocalhost:8800# m.room.name"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules9 m.room.canonical_alias9 m.room.canonical_alias3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-311:localhost:8800>']m.room.member@anon-20191002_181700-311:localhost:8800' m.room.create' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-310:localhost:8800' m.room.create- m.room.tombstone>']m.room.member@anon-20191002_181700-308:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-307:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-306:localhost:8800' m.room.create3 m.room.power_levels3 m.room.power_levels/ m.room.join_rules"? m.room.history_visibility3 m.room.guest_access3 m.room.power_levels>']m.room.member@anon-20191002_181700-305:localhost:8800' m.room.create- m.room.tombstone3 m.room.power_levels X ! } T +  ^ 5 d9b7 Z/`5 ^3\1V+ { P % - y # X N w LT)}RQzlMcE*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!tcYctHPiaKzsKgrXlU:localhost:8800 P P*Q!taANXnGBZntAreRurn:localhost:8800 O O*Q!tcYctHPiaKzsKgrXlU:localhost:8800 N N*Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tDsPLsKOLPePtEWRwn:localhost:8800''*Q!tDsPLsKOLPePtEWRwn:localhost:8800&&*Q!tDsPLsKOLPePtEWRwn:localhost:8800%%*Q!tDsPLsKOLPePtEWRwn:localhost:8800$$*Q!tDsPLsKOLPePtEWRwn:localhost:8800##*Q!tDsPLsKOLPePtEWRwn:localhost:8800""*Q!tDsPLsKOLPePtEWRwn:localhost:8800!!*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800##*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800""*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!!*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  *Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800(Q!scyFsXcUIJiLIMwWMY:localhost:8800qq(Q!scyFsXcUIJiLIMwWMY:localhost:8800pp(Q!scyFsXcUIJiLIMwWMY:localhost:8800oo(Q!scyFsXcUIJiLIMwWMY:localhost:8800nn(Q!scyFsXcUIJiLIMwWMY:localhost:8800mm(Q!scyFsXcUIJiLIMwWMY:localhost:8800ll(Q!sPWVGnipjiiWQpywNO:localhost:8800>>(Q!sPWVGnipjiiWQpywNO:localhost:8800==(Q!sPWVGnipjiiWQpywNO:localhost:8800<<(Q!sPWVGnipjiiWQpywNO:localhost:8800;;(Q!sPWVGnipjiiWQpywNO:localhost:8800::(Q!sPWVGnipjiiWQpywNO:localhost:880099(Q!sPWVGnipjiiWQpywNO:localhost:880088(Q!sPWVGnipjiiWQpywNO:localhost:880077(Q!sPWVGnipjiiWQpywNO:localhost:880066*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y Y*Q!taANXnGBZntAreRurn:localhost:8800 X X*Q!taANXnGBZntAreRurn:localhost:8800 W W*Q!tcYctHPiaKzsKgrXlU:localhost:8800 V V*Q!taANXnGBZntAreRurn:localhost:8800 U U*Q!tcYctHPiaKzsKgrXlU:localhost:8800 T T*Q!taANXnGBZntAreRurn:localhost:8800 S S*Q!tcYctHPiaKzsKgrXlU:localhost:8800 R R*Q!taANXnGBZntAreRurn:localhost:8800 Q Q*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p p*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o o*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n n*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m m*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 l l*Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 *Q!tLkhTnTgDjjAvscRkW:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ONMLKJJJIHGFEEEDCBA@@@@@@@@@@@?>=<;;:987666666666666654321110/.-,,+*)('''&%$#"!! ~}|{z y x w v u tsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;987654:3210/.-+*)('&,%$#"! qqqqqqponmlk j i h g ggggggggggggfedcba`_^]\[ZYXWVUTSRQP     ~}|{zyxwutsrqponmlkihgfedcba`_^]\[ZYXWVUTSRPONMLKJIHGFEDCBA E]+%q?xF~L P   W % D  ^   W ,pd2> |Q vj J8  | J  +21e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMv1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0+1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw 01e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIx1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUc1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gS1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ,0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko31e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMw1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0W1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI_1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M`1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Y1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY^1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu431e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsJ0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsz1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkd1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIU1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo>1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 S1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc Q1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg J1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagk1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k m,   kSeQac$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1620}{"auth_events": ["$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "type": "m.room.power_levels", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"users": {"@anon-20191002_181700-311:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041906210, "hashes": {"sha256": "QDZAw7W973+AJHNKsxCW7mjeB/D2EZnECs2qRB97bH8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s4nh3+CFVuirSqfUn66qF6lle+Peffwhx8GhEaOAqScL0e42a/swmdiOQCXc10K8EPKgecAPSm5t6gKPNCLyBA"}}, "unsigned": {"age_ts": 1570041906210}}vReQay$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1619}{"auth_events": ["$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8"], "prev_events": ["$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8"], "type": "m.room.member", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-311", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-311:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041905074, "hashes": {"sha256": "uEAM6NjRZn7OB9lqLghCZ4UubSxIbzVCPCR2S/TaJjg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QWoXwywkO/+gezyoV8nMcPmW53RIY+3Dv/J6zwAEBGCIY9jc7yxXPx4Pbd5KJNE5hyfGBG38O7Q93L2yNLbADw"}}, "unsigned": {"age_ts": 1570041905074}}vQeQay$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1618}{"auth_events": ["$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0"], "prev_events": ["$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0"], "type": "m.room.member", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-311", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-311:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041905075, "hashes": {"sha256": "BSqT/gwqWYiApDc4ViV9FC3m+QnxVaPTMNwJKo4JHvA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JcBG34DXaBqRLIfS47BOi2od4xEj4gqPlRi+ys9Tjnxp/eDX++Lxp4Ly2xjUzky1E+Lwh4zqrAV0ZoXrIsGXDA"}}, "unsigned": {"age_ts": 1570041905075}}iPeQa_$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1617}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-311:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041904135, "hashes": {"sha256": "5gaE9AN6OTpFLeJjM3DbmknmVTpB3PtWKasuoC2tjFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mh5xpQDj4vKCZlzi3nXPH9zjG56oFU4H0DficEvehx40kn/5+pUrSqakumAF61ck4m1vcfQQoDyjEW4YGe6zBA"}}, "unsigned": {"age_ts": 1570041904135}} E]+%q?xF~L P   W % D  ^   W ,pd2> |Q vj J8  | J  +21e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMv1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0+1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw 01e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIx1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUc1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gS1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ,0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko31e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMw1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0W1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI_1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M`1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Y1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY^1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu431e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsJ0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsz1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtkd1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIO1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo81e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 Q1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc O1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg H1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagk1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k m, _ a9sK# \ 4 l E  k } U -  f >  y Q ) b:rJ#\5 nFZ2 mEY1C'Q!ZNIjCvcWhgcwskanjT:localhost:8800P'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800%&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!fDISaqNBhlOwherxSt:localhost:8800j&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800p'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800e&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800R&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800g'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800o&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800-'Q!cidyuyekVzJHHvyomb:localhost:8800A&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800x'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800b'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:8800:'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800I'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800?'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZOwibbprUCQrSJQCrx:localhost:8800'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800}'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800v'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800Y'Q!XRAZJeoZBhGeHKKjaG:localhost:8800^'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800_&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!XGAmnfaVvjDtQJuufa:localhost:8800['Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800=&Q!WjlTCJVOFJkanCtkFE:localhost:8800R'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 8l D `8@]c!E@anon-20191002_181700-322:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwoCMZHVCVAXT127.0.0.1Perl + Net::Async::HTTP/0.44m Ճ?]c!E@anon-20191002_181700-321:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7QwoWXFXGVMZGC127.0.0.1Perl + Net::Async::HTTP/0.44m>]c!E@anon-20191002_181700-320:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgoWFQFGOHNGB127.0.0.1Perl + Net::Async::HTTP/0.44m=]c!E@anon-20191002_181700-319:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEN1KlE4cmt4ZHdeayYqRmIKMDAyZnNpZ25hdHVyZSCDi7ywkZTQz5JXqqEFhHe9nQqcZgcfJJGXdwiFuFZ9tgoHSJRSHPEIA127.0.0.1Perl + Net::Async::HTTP/0.44mÃ<]c!E@anon-20191002_181700-318:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAoPHFUHLOHRJ127.0.0.1Perl + Net::Async::HTTP/0.44mʳ;]c!E@anon-20191002_181700-317:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGp5X3ZqYWUwO1lSMVZfPWIKMDAyZnNpZ25hdHVyZSBXnyRWT7c5jVRFSAP8yBUFVPMpHFHO6Jh3lAfIH2WdGAoKSXFFXWMCB127.0.0.1Perl + Net::Async::HTTP/0.44mʝt:]c!E@anon-20191002_181700-316:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ6eG4uLmo4eW94QlROanoKMDAyZnNpZ25hdHVyZSBbUWn8_gv5bniC91yO-BYhfQYBVRKyv5j5MVVtMP_JLwoJHIWJLKOFG127.0.0.1Perl + Net::Async::HTTP/0.44mʛ9]c!E@anon-20191002_181700-315:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEktc1A6I2xTMH5pbitmUy0KMDAyZnNpZ25hdHVyZSAHdPEVl-Zg5xmbVysqfNP8UeNclE06lAUk2sezF9wAlAoKXXAQONTRL127.0.0.1Perl + Net::Async::HTTP/0.44mʙ8]c!E@anon-20191002_181700-314:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDc4UmlwQ2g1OHNKcUkzVVAKMDAyZnNpZ25hdHVyZSAdNspZQ479GxtCNd_qDY7ARZWMjLUH92hEAKKLsgL4DQoBTSWZNQVTP127.0.0.1Perl + Net::Async::HTTP/0.44mʗT7]c!E@anon-20191002_181700-312:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8jTldNRmhjQDJZSGt5a0kKMDAyZnNpZ25hdHVyZSAytp0T7K0GtNLyrrvvKThMXkDCn1jZ6wI9npjmCcM0CwoLFIOTRIQVM127.0.0.1Perl + Net::Async::HTTP/0.44mi pLzHNZ P(8  V $ \ * D b0 vh6 > nj< tBT" | J81e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18y1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18x1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18w1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIa1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI`1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI_1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ[1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQZ1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQY1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgY1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgX1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgW1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro 1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI R1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI Q1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8 1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8 1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8 1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc l1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc k1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc j1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k 1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k 1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k 1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90c1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoW1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoV1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90a1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90bd1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsa1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns`1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns_1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY~  UtWeQau$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1624}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s"], "type": "m.room.join_rules", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041908320, "hashes": {"sha256": "Cz2BElchLBWSye0e6Rf9NcALsBymMbcEaVUVYWwvTlQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Qt1+anwTBHKDazYGEN14pqQ8YldVlbFI8ss1L3Ot8k6jQwLiU8NXqU68cEIa4RKvBHNsW/x2WzUq2N/gcN1rCg"}}, "unsigned": {"age_ts": 1570041908320}}VeQa9$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1623}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90"], "type": "m.room.canonical_alias", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"alias": "#publicroomalias_no_name:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041907302, "hashes": {"sha256": "VDxwjsyErBx4bTOIfmSO5Nkqs5L2HtZG7PN6l5mtwvo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pgcmGdV8Fm3uUR6ghKoX4AOTmM/a1ueLqEuIvp1AuoTw53h+nv5lEKeS1YhxOXucnRg1RKOoXcEZgNexQuyYAw"}}, "unsigned": {"age_ts": 1570041907302}}UeQaI$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1622}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc"], "type": "m.room.canonical_alias", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"alias": "#publicroomalias_with_name_topic:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041907300, "hashes": {"sha256": "85GKhWVMwXWocIa8BxS0+9x+YWOSbq+VxvQhrQgfvSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0FNS+CL0ePTgSrQ6OrkEJEFQRn0gCsG1o1cz8+GFGIHpfksYN00hhPNBhusq1oqZCkrIyeiAFic/9vwzc8U9Ag"}}, "unsigned": {"age_ts": 1570041907300}}kTeQac$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1621}{"auth_events": ["$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "type": "m.room.power_levels", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"users": {"@anon-20191002_181700-311:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041906212, "hashes": {"sha256": "nxeuW5t5c21N5oUn9TnfptR2nRenPDd7TVjmPuVajhs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q8GIBUUdxuQPS98S3whZppCTjhNPiLjYFex4WDMV684b9YUSH65cU3jo+pgaI5rwFvaSS1wefsz5Ngz0IiKIAA"}}, "unsigned": {"age_ts": 1570041906212}} ~z v r n j fb^ZVRNJF3eeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:88002eeQ$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:88001eeQ$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:88000eeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800/eeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800.eeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800-eeQ$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800,eeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800+eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800*eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800)eeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800(eeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800'eeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800&eeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800%eeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800$eeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800#eeQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800"eeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800!eeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800 eeQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800eeQ$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4!beBXQofoOfxNBtzsut:localhost:8800eeQ$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800eeQ$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800  v i[eQa_$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1628}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY"], "type": "m.room.name", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"name": "name_2"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041911129, "hashes": {"sha256": "pUH8RoFoH+wwgfTJygEvEUiDVAchCHUXKOl+xfwC5sc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XwBZZzp+fW/h+S5IQYX7F+HMqubeCuC8Gu0stftdhMAaOzSWaQz2hczsTM4DMyC95prGEZACRZwI2pXhwRd4BQ"}}, "unsigned": {"age_ts": 1570041911129}}ZeQa$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1627}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE"], "type": "m.room.history_visibility", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041909399, "hashes": {"sha256": "rzz99m1AwnBhJjUsgM49erYKOTYqG4Ge6MZarikMC7E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ppBY/jqFv4rh5bbA8cqzwZN1u+zSczMLd/NuUOX0ZlK5DcwSAGG5ynIAXGZPmdqLTZAbqQlYFSZl+7Z8DiowAw"}}, "unsigned": {"age_ts": 1570041909399}}YeQa$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1626}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0"], "type": "m.room.history_visibility", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041909396, "hashes": {"sha256": "MJTi/XjLhkg0MQNBG9cfnK185YqdOI2X4+0J+YBFzv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TgqXS/IAbI9LnyMxdDW5zAsvm1lf0Ge3O9kEYcPUU0ibq/OlSCqhLBzvUF53Q1ONORwxGdd104jTQNRzyPqFDQ"}}, "unsigned": {"age_ts": 1570041909396}}tXeQau$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1625}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4"], "type": "m.room.join_rules", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041908321, "hashes": {"sha256": "EL3bYiF34XcBCRRoZDVQM0R00rCLkEA1U58RMmz+6Tk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N/sICQ0w4vDlJb80xZQ+PJ/9rxYG0dEkiyQDjDqheLqA8T589+DLbTb3wtmpFCOAiCHQvB21+IfAgoRQsbWBDA"}}, "unsigned": {"age_ts": 1570041908321}} a} { y w u sqomkigeca~SeeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~ReeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~QeeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~PeeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~OeeQ$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~NeeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~MeeQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~LeeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~KeeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~JeeQ$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~IeeQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~HeeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~GeeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~FeeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~EeeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~DeeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~CeeQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~BeeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~AeeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~@eeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~?eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~>eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~=eeQ$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~<eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~;eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800~:eeQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800~9eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800~8eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0!vyCFfUTJKYJSDadFhT:localhost:8800~7eeQ$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc!vyCFfUTJKYJSDadFhT:localhost:8800~6eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA!beBXQofoOfxNBtzsut:localhost:8800~5eeQ$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8!beBXQofoOfxNBtzsut:localhost:8800 S \S(_eQa]$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1632}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs"], "type": "m.room.aliases", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"aliases": ["#publicroomalias_with_name_topic:localhost:8800"]}, "depth": 9, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041913901, "hashes": {"sha256": "dFqD/uGciCpxUP4cwxkFRYp0h41G5VtEQq1Hp8EIrbM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eT6MtRIwxuaPZiHJbysGoXdtBYR3CCNawkcEW/ZNUiDYLhFMN7fLmAjdu0gtu7gShX+A6OAu51wwUIuU/LcZBA"}}, "unsigned": {"age_ts": 1570041913901}}i^eQa_$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1631}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-311:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041913055, "hashes": {"sha256": "WH+EsMsH4H2icR58ZK56Wl2baEh/dxbqRFtmOWAZtb8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7EykwhMeXnv/6Q/usb5JjZtGYvEZ//SinqSVtRaVoSyERtagh6ZJOjgwITS36hBn+uPl01YZzpCh7UZ9u5XcBQ"}}, "unsigned": {"age_ts": 1570041913055}}l]eQae$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800{"token_id": 331, "stream_ordering": 1630}{"auth_events": ["$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc", "$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0", "$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs"], "prev_events": ["$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA"], "type": "m.room.topic", "room_id": "!vyCFfUTJKYJSDadFhT:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"topic": "topic_2"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041912443, "hashes": {"sha256": "Jh8Kh40+j6EYmguDObwTZp01Ich9OaOCoYVm525wpXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wzNIkcyqxpM22Em8zSTIPw8hMvuz0w7q3zV/IqpL4eVm1joUKW+7sqGXDZWeBBiYnDBQMGLtpNLGjuzubUeEBA"}}, "unsigned": {"age_ts": 1570041912443}} \eQaM$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800{"token_id": 331, "stream_ordering": 1629}{"auth_events": ["$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90", "$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr8", "$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA"], "prev_events": ["$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM"], "type": "m.room.aliases", "room_id": "!beBXQofoOfxNBtzsut:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"aliases": ["#publicroomalias_no_name:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041911130, "hashes": {"sha256": "QI23XHidjhAfikkhK0nBK7AKrdhIVZsryTU0yd6ii/0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bRerEFqjAwDaE50+epqpy0cq8PGGsLEPQylp8NT8sC+2OmzJ+bq75zOX4vtmFQ7Oct3lVm08BZrUMIUXP2ljCw"}}, "unsigned": {"age_ts": 1570041911130}} $U*S \ , T IX%S LUgXeQ3 $MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels WeQ']$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800aVeQ' $L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.createmUeQ? $5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibilityeTeQ/ $CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rulesgSeQ3 $v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels ReQ']$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800aQeQ' $VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.createmPeQ? $RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibilityeOeQ/ $Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rulesgNeQ3 $nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels MeQ']$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800aLeQ' $tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800m.room.createmKeQ? $JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibilityeJeQ/ $_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rulesgIeQ3 $FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels HeQ']$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800aGeQ' $6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800m.room.create`FeQ% $v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic_EeQ# $qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800m.room.namepDeQ))$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800mCeQ? $UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility`BeQ% $Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topiceAeQ/ $d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rulesm@eQ? $Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibilityg?eQ3 $ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800m.room.power_levelse>eQ/ $CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.join_rules =eQ']$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800m.room.member@anon-20191002_181700-312:localhost:8800j<eQ9 $vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.canonical_aliasa;eQ' $Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800m.room.createg:eQ3 $9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.power_levels 9eQ']$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800p8eQ))$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800a7eQ' $5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.create`6eQ% $gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs!vyCFfUTJKYJSDadFhT:localhost:8800m.room.topicp5eQ))$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800m.room.aliaseslocalhost:8800 ;HGsK#^^T,avN& _ 7   o G  |  X 0 iB=eo6uM& ^ a :  ^ u M & T,;'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Z'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88009&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800r'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800a'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800='Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800W'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800X'Q!XRAZJeoZBhGeHKKjaG:localhost:8800]'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800$'Q!ZKPJvrCZHMHPEksYDc:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800H'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800>'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800u'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800<&Q!WjlTCJVOFJkanCtkFE:localhost:8800R'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800 e+ . 5 < CJQX_ gZa hnu>PFQ ]!NPdjmIfsBVIIkvWBzD:localhost:8800@anon-20191002_181700-311:localhost:88004P(Q]!MBWnwKRwFznvRpAzxr:localhost:8800@anon-20191002_181700-294:localhost:88004 'PRQ]!nftGLlLhVgzOwOFufp:localhost:8800@anon-20191002_181700-330:localhost:88004PQQ]!raCWVWQGnXbmkexpCN:localhost:8800@anon-20191002_181700-329:localhost:88004PPQ]!kwJgbtogEzCqYbUXfh:localhost:8800@anon-20191002_181700-328:localhost:88004POQ]!JZouHBRxCRbcxYJnbn:localhost:8800@anon-20191002_181700-327:localhost:88004PEQ ]!vyCFfUTJKYJSDadFhT:localhost:8800@anon-20191002_181700-311:localhost:88004PDQ ]!beBXQofoOfxNBtzsut:localhost:8800@anon-20191002_181700-311:localhost:88004PCQ]!xvblqEscwOtCqJntfF:localhost:8800@anon-20191002_181700-310:localhost:88004OBQ]!qmcQunYvuokVcPwFHx:localhost:8800@anon-20191002_181700-308:localhost:8800PAQ]!HhYREfUiJTpjWmOuPF:localhost:8800@anon-20191002_181700-307:localhost:88004P@Q]!nvclDopiBLEOKBIheH:localhost:8800@anon-20191002_181700-306:localhost:88004P?Q]!YgaGPEraeLCqHQirin:localhost:8800@anon-20191002_181700-305:localhost:88002P>Q]!aVxOoyiLLnxmzgLJat:localhost:8800@anon-20191002_181700-305:localhost:88004P=Q]!fuHSJcznvGQnoYoLPW:localhost:8800@anon-20191002_181700-304:localhost:88002P<Q]!hYPSaMPGsLnvYSmwhg:localhost:8800@anon-20191002_181700-304:localhost:88004P;Q]!jIfvTrwedrWLubsnlM:localhost:8800@anon-20191002_181700-303:localhost:88002P:Q]!KeqmSjifajNKxtgqhj:localhost:8800@anon-20191002_181700-303:localhost:88004P9Q]!icheSPMgpemswIdQkw:localhost:8800@anon-20191002_181700-302:localhost:88002P8Q]!EyyNoldCLUdFHzXTDP:localhost:8800@anon-20191002_181700-302:localhost:88004P7Q]!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:88002P6Q]!uSBqTezaFcMnlowsEf:localhost:8800@anon-20191002_181700-301:localhost:88004P5Q]!NrxQuziwSWzsHuXIlG:localhost:8800@anon-20191002_181700-300:localhost:88002P4Q]!CNFopUEQTFbzjmLvii:localhost:8800@anon-20191002_181700-300:localhost:88004P3Q]!WhqVaRReBxJXADAyYD:localhost:8800@anon-20191002_181700-299:localhost:88002P2Q]!aLxrqpqLkbzyIxGgpk:localhost:8800@anon-20191002_181700-299:localhost:88004P1Q]!BfEFIDBthhkweqfhir:localhost:8800@anon-20191002_181700-298:localhost:88002P0Q]!aaRwQZdNAliyvRHpjs:localhost:8800@anon-20191002_181700-298:localhost:88004P/Q]!ZShBIxwbJmxjjZmoRQ:localhost:8800@anon-20191002_181700-297:localhost:88002P.Q]!NNiyzThHMivrxhojfp:localhost:8800@anon-20191002_181700-297:localhost:88004P-Q]!QFiJrWFFeTAAAUCjCE:localhost:8800@anon-20191002_181700-296:localhost:88002P,Q]!KmuRTfGFgJdgIDAgIW:localhost:8800@anon-20191002_181700-296:localhost:88004P+Q ]!mOrKBPhetifKHDmElM:localhost:8800@anon-20191002_181700-295:localhost:88002P*Q]!QyLUggxrTnULUAOseq:localhost:8800@anon-20191002_181700-295:localhost:88004P)Q]!azRJNFPIRSFAskLILK:localhost:8800@anon-20191002_181700-294:localhost:88002APNQ]!HOPyhZPcKkrvSmDIvX:localhost:8800@anon-20191002_181700-326:localhost:88004PMQ]!EWkoFeckhXlNyjuIEB:localhost:8800@anon-20191002_181700-324:localhost:88004PLQ]!utJsNQubeIXvcTKGpx:localhost:8800@anon-20191002_181700-322:localhost:88004PKQ]!iTQSCiLqRMDtgXtUdC:localhost:8800@anon-20191002_181700-320:localhost:88004PJQ]!UMFUOnYRvwKwSPkYHB:localhost:8800@anon-20191002_181700-319:localhost:88004PIQ]!hZuwenlFDapIPBOyfi:localhost:8800@anon-20191002_181700-318:localhost:88004PHQ]!LvARVIpJZeRQxbKefX:localhost:8800@anon-20191002_181700-317:localhost:88004PGQ ]!SfYtaUhCFosNfHfUVm:localhost:8800@anon-20191002_181700-312:localhost:88004 b] r & y - +3LVbu e'Q  ]$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUm.room.create!hZuwenlFDapIPBOyfi:localhost:8800mʳmʴ6@anon-20191002_181700-318:localhost:8800te#Q ]$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcm.room.test!LvARVIpJZeRQxbKefX:localhost:8800mʮ%mʮ*@anon-20191002_181700-317:localhost:8800,se?Q ]$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEm.room.history_visibility!LvARVIpJZeRQxbKefX:localhost:8800mʩmʫ@anon-20191002_181700-317:localhost:8800$re/Q ]$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8m.room.join_rules!LvARVIpJZeRQxbKefX:localhost:8800mʧkmʨD@anon-20191002_181700-317:localhost:8800&qe3Q ]$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMm.room.power_levels!LvARVIpJZeRQxbKefX:localhost:8800mʤ`mʥ@anon-20191002_181700-317:localhost:8800 pe'Q ]$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4m.room.member!LvARVIpJZeRQxbKefX:localhost:8800mʠmʡ@anon-20191002_181700-317:localhost:8800o e'Q  ]$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsm.room.create!LvARVIpJZeRQxbKefX:localhost:8800mʞ%mʞ@anon-20191002_181700-317:localhost:8800ne%Q ]$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkm.room.topic!SfYtaUhCFosNfHfUVm:localhost:8800mʑmʓ*@anon-20191002_181700-312:localhost:8800me#Q ]$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAm.room.name!SfYtaUhCFosNfHfUVm:localhost:8800mʋmʍh@anon-20191002_181700-312:localhost:8800!le)Q ]$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQm.room.aliases!NPdjmIfsBVIIkvWBzD:localhost:8800mʇ'mʊ@anon-20191002_181700-311:localhost:8800,ke?Q ]$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQm.room.history_visibility!SfYtaUhCFosNfHfUVm:localhost:8800mʆ+mʉb@anon-20191002_181700-312:localhost:8800je%Q ]$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYm.room.topic!NPdjmIfsBVIIkvWBzD:localhost:8800mʁ)mʃz@anon-20191002_181700-311:localhost:8800$ie/Q ]$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qm.room.join_rules!SfYtaUhCFosNfHfUVm:localhost:8800mʀfmʂp@anon-20191002_181700-312:localhost:8800,he?Q ]$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIm.room.history_visibility!NPdjmIfsBVIIkvWBzD:localhost:8800mxm~B@anon-20191002_181700-311:localhost:8800&ge3Q ]$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gm.room.power_levels!SfYtaUhCFosNfHfUVm:localhost:8800mxYm}]@anon-20191002_181700-312:localhost:8800$fe/Q ]$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIm.room.join_rules!NPdjmIfsBVIIkvWBzD:localhost:8800mtmu@anon-20191002_181700-311:localhost:8800 ee'Q ]$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648m.room.member!SfYtaUhCFosNfHfUVm:localhost:8800mqmt@anon-20191002_181700-312:localhost:8800)de9Q ]$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8m.room.canonical_alias!NPdjmIfsBVIIkvWBzD:localhost:8800momq@anon-20191002_181700-311:localhost:8800c e'Q  ]$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcm.room.create!SfYtaUhCFosNfHfUVm:localhost:8800mlmm@anon-20191002_181700-312:localhost:8800&be3Q ]$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAm.room.power_levels!NPdjmIfsBVIIkvWBzD:localhost:8800mkmm @anon-20191002_181700-311:localhost:8800 ae'Q ]$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwm.room.member!NPdjmIfsBVIIkvWBzD:localhost:8800mfmi@anon-20191002_181700-311:localhost:8800!`e)Q ] $p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEm.room.aliases!vyCFfUTJKYJSDadFhT:localhost:8800 mb-md@anon-20191002_181700-311:localhost:8800_ e'Q  ]$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wm.room.create!NPdjmIfsBVIIkvWBzD:localhost:8800m^m`@anon-20191002_181700-311:localhost:8800^e%Q ]$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsm.room.topic!vyCFfUTJKYJSDadFhT:localhost:8800m\{m^@anon-20191002_181700-311:localhost:8800 }G J   V   P  | w v>Q  V $ ^ ,Kd 2E\*$j Dj8p> 8} p1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI 1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY|1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k}1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwe1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM C1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk $1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY}1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsh1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEg1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkQ 1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 z1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g [1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8I0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFYQ1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k:1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k 1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu41e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw,1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk%1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI31e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo{1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0u1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mco1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo^0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gG1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko+1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM21e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA c1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q V1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUp21e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Ad1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E 81e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0o  *ceQa?$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1636}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA"], "type": "m.room.canonical_alias", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"alias": "#publicroomalias_with_topic:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041917318, "hashes": {"sha256": "FubqE2SdNyc8+j3rVuxvlsjOYjsSFGu3YWrz7q55Cew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kghk3OPmk5Hq6nGjVtMygCnnkH71kH07UFTCX9ypvUMSyOATbtspVapMl3OCqOYjagbCMF6NMCaRSmRFE8tNAA"}}, "unsigned": {"age_ts": 1570041917318}}ibeQa_$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1635}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-312:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041916583, "hashes": {"sha256": "9J04lrHF3ZZukHWNi7jdesnu3M9eVly6M5giUI5qapg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7pP414f7+BmdqN1Ju0gb+V2aX7qsmMTmlag9WDPZVsqFuEuzJQrXMS6t5WVZpSA7EGjr3zoKzlnWnLchbunyCA"}}, "unsigned": {"age_ts": 1570041916583}}kaeQac$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1634}{"auth_events": ["$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "type": "m.room.power_levels", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"users": {"@anon-20191002_181700-311:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041916335, "hashes": {"sha256": "BF0XFuzKyb4bgB8OopipLqM2LS60PAjxKCpwqGMkrQ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6zH5OlQeUn3Lo+qZ6QMPC0SwpICAh4daxJ1TZvOunJCWMDgt46OwQzcmAMWb1MKfiYnQpp6FhjrYU/iPy/gnAQ"}}, "unsigned": {"age_ts": 1570041916335}}v`eQay$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1633}{"auth_events": ["$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w"], "prev_events": ["$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w"], "type": "m.room.member", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-311", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-311:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041914904, "hashes": {"sha256": "CFjMhZ9URVBYQg38rhegg9nmVDJKIFe2nP/1pZUp2FA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpWKzQYqmzjOWqSu/Bod+DRPkoE8i76W+QgBAQBARQRBCH7bPgFQxfItzotolENPEvX77CDstWDiqg1L1a5QDw"}}, "unsigned": {"age_ts": 1570041914904}} -RM H C > 9 4/*|%w rmhc TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1QTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1QTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYT Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkT Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkT Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938T Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8T Qe!iTQSCiLqRMDtgXtUdC:localhost:8800$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0TQe~!UMFUOnYRvwKwSPkYHB:localhost:8800$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsTQe}!UMFUOnYRvwKwSPkYHB:localhost:8800$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYTQe|!UMFUOnYRvwKwSPkYHB:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9UTQe{!UMFUOnYRvwKwSPkYHB:localhost:8800$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsTQez!hZuwenlFDapIPBOyfi:localhost:8800$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sETQey!hZuwenlFDapIPBOyfi:localhost:8800$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gT~Qex!hZuwenlFDapIPBOyfi:localhost:8800$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkT}Qew!hZuwenlFDapIPBOyfi:localhost:8800$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMT|Qev!hZuwenlFDapIPBOyfi:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIT{Qeu!hZuwenlFDapIPBOyfi:localhost:8800$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUTzQet!LvARVIpJZeRQxbKefX:localhost:8800$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcTyQes!LvARVIpJZeRQxbKefX:localhost:8800$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAETxQer!LvARVIpJZeRQxbKefX:localhost:8800$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8TwQeq!LvARVIpJZeRQxbKefX:localhost:8800$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMTvQep!LvARVIpJZeRQxbKefX:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4TuQeo!LvARVIpJZeRQxbKefX:localhost:8800$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsTtQen!SfYtaUhCFosNfHfUVm:localhost:8800$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkTsQem!SfYtaUhCFosNfHfUVm:localhost:8800$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TATrQel!NPdjmIfsBVIIkvWBzD:localhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQTqQek!SfYtaUhCFosNfHfUVm:localhost:8800$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQTpQej!NPdjmIfsBVIIkvWBzD:localhost:8800$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYToQei!SfYtaUhCFosNfHfUVm:localhost:8800$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4QTnQeh!NPdjmIfsBVIIkvWBzD:localhost:8800$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLITmQeg!SfYtaUhCFosNfHfUVm:localhost:8800$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gTlQef!NPdjmIfsBVIIkvWBzD:localhost:8800$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQITkQee!SfYtaUhCFosNfHfUVm:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648TjQed!NPdjmIfsBVIIkvWBzD:localhost:8800$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8TiQec!SfYtaUhCFosNfHfUVm:localhost:8800$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcThQeb!NPdjmIfsBVIIkvWBzD:localhost:8800$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiATgQea!NPdjmIfsBVIIkvWBzD:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwTfQe`!vyCFfUTJKYJSDadFhT:localhost:8800$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE =w=["Us: V  r ;  Y u <  Z !v=Y"w>Z!vw>Z!88]!@anon-20191002_181700-48]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN8]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP8]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ8]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM8]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO8]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF6[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHC8]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT8]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ6[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXG8]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK6[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXF8]!@anon-20191002_181700-409:localhost:8800GINWCFSINT8]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW6[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC6[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYE8]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL8]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH6[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKD8]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE8]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH8]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS8]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE  l  d \ T E Mt=5-%|eeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800 meeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800 9eeQ$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5w$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKo$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800 eeQ$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800ZeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800YeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800[eeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800 %eeQ$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80!oznZaCpONuNDaLarkI:localhost:8800eeQ$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo!BDASLhdcKfNwxCTCSg:localhost:8800ReeQ$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8!NfaPEGKjnUDUTavzol:localhost:8800XeeQ$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU!krhefVncoErkCtnvsy:localhost:8800߁eeQ$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800ցeeQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800 }eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800 { cHGsK#^>|T-vN _ 7  o H &  X 1 jC;eo6uM&  a :  ^ u M & |Tc'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Y'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88008&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800q'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800`'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800<'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800V'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800W'Q!XRAZJeoZBhGeHKKjaG:localhost:8800\'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800G'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800='Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800t'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800;&Q!WjlTCJVOFJkanCtkFE:localhost:8800R cHGsK#^>|T-vN _ 7  o H &  X 1 jC;eo6uM&  a :  ^ u M & |Tc'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Y'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88008&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800q'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800`'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800<'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800V'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800W'Q!XRAZJeoZBhGeHKKjaG:localhost:8800\'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800G'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800='Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800t'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800;&Q!WjlTCJVOFJkanCtkFE:localhost:8800R a`8pH X /  f >  v N & ^ 6  n F ~V.f>vN&^6nF~V.f>vN&%&Q !kOmCTyiizHqfCJdhlR:localhost:8800%%Q !pJUItjYTOUJQFIxyiX:localhost:8800%$Q !mvgUHEsfGqDkPQUvfG:localhost:8800%#Q !WYyiQAVvitxsLZKVCG:localhost:8800%"Q !KIHYKMzkRDrJwiywwz:localhost:8800%!Q !RSLvuCuAqKQQrKCxNq:localhost:8800% Q !DqxFmsXPclgGqpSwdy:localhost:8800%Q !uqIEMXzdeNeXdJmuwh:localhost:8800%Q !yAzXcNLHMuqFOcOexj:localhost:8800%Q !tLkhTnTgDjjAvscRkW:localhost:8800%Q !kAxKaIQhXTtGFWSUgr:localhost:8800%Q !WhLedNwPGGGTtqeqam:localhost:8800%Q !yLccBXjjEasExpsXlt:localhost:8800%Q !PcvmCDeVUSyJbXpTig:localhost:8800%Q !HbYxdEuVIeLKHwqJEh:localhost:8800%Q !FbJSiQoZtZkaFwzzQq:localhost:8800%Q !JPTwFTSDaBXwUTgitj:localhost:8800%Q !RYNJAGdRhIlwRZFbrO:localhost:8800%Q !MqstbCLZIQFiYNHrqR:localhost:8800%Q !WuiaqqIOvBjgETqdus:localhost:8800%Q !bQDOrbAknnQZfUbhgS:localhost:8800%Q !GSxvxNevpCiwmFCHys:localhost:8800%Q !yfizglmCXdcqCgDrTr:localhost:8800%Q !XnUZiYJDWVNGfsBnGz:localhost:8800%Q !ePtMOPPOgOcBIMNZpn:localhost:8800% Q !YGUjVdVdpcQoGkRnWB:localhost:8800% Q !IZkczIYykpZDvjuUWn:localhost:8800% Q !zuCqeooOnfWkYrQdxA:localhost:8800% Q !vttkrtSyHEJXVMlvLo:localhost:8800% Q !whuymJoLfUdkFdxoyE:localhost:8800%Q !yTQmLDAxZscWKLMSWh:localhost:8800%Q !eWRdwtyqHvuxZFvhNS:localhost:8800%Q !UGVFuRGyPQmBbGsEDo:localhost:8800%Q !AMLmLqizBFklpqKibP:localhost:8800%Q !rWGwSSefrZzQYCYFHs:localhost:8800%Q !HXfrGcvJCbRItyQLVE:localhost:8800%Q !HusOrLtWZTLbmQZxmm:localhost:8800%Q !BpTqIemsWFZIqTcgJO:localhost:8800%Q !YQATbgbLImCDamiDHC:localhost:8800%Q !svYOOXWZHtQQzlMcEP:localhost:8800%~Q !CGckPHdSYcIocFvRAq:localhost:8800%}Q !BoyzlWNkRPncpDjBDg:localhost:8800%|Q !djwLhpJUYOKsgQtrky:localhost:8800%{Q !bkwyieHZwSMJfuSKvV:localhost:8800%zQ !XcaKxZsPvbZhAGKKdx:localhost:8800%yQ !jDKAOtmeAGbYTpwyEW:localhost:8800%xQ !JYLMokjOhZZlmbZvTf:localhost:8800%wQ !zoTQAhGwmDDUECKtbL:localhost:8800%vQ !NeYaCeYNFATCqlrlGT:localhost:8800%uQ !YtVXQjSPgVtbxrzUOA:localhost:8800%tQ !zsXPhIPzeXXLvuazzQ:localhost:8800%sQ !WFHIeSFQyuugGeBFxW:localhost:8800%rQ !QMrkSPlQDGborAyWtQ:localhost:8800%qQ !mBQpGaIiadEuKBXfOw:localhost:8800%pQ !xXYMxashIZAUOTuGAJ:localhost:8800%oQ !QcaNrIiUsWpTiVGOnt:localhost:8800%nQ !ozgnwUlebxvzLVwyHW:localhost:8800%mQ !rQeYcODvQiLsOIbQrJ:localhost:8800%lQ !csWEXfVEVxdviNvgAd:localhost:8800%kQ !aHyAJEOSdKqTiRjOvw:localhost:8800%jQ !hnQOBexFYpvJntEChZ:localhost:8800%iQ !hDAzBWYEyRVBRlrCHh:localhost:8800%hQ !fkvdYkesQOFCAQkzky:localhost:8800%gQ !OWGKxAmTrHLciIdrJi:localhost:8800%fQ !aknLNLxfChlLvFYhkJ:localhost:8800%eQ !HWTlaNxUKnDsrtlOxU:localhost:8800%dQ !pUSFAnuwUuMlbiInDR:localhost:8800%cQ !SrMQpDMFREKRMELwbL:localhost:8800%bQ !bNSXSTadOMhIrYpMzH:localhost:8800%aQ !TlJCaYlCkOOVzFDlLx:localhost:8800%`Q !bOSxzttDtclnrWnLov:localhost:8800%_Q !DnUHoxreGexNmjSVpq:localhost:8800%^Q !rwUuVBrftGHDBOlEZm:localhost:8800%]Q !CkNvQnbApPIcuKygDk:localhost:8800%\Q !NboFFVLpJHTeuUKCjM:localhost:8800%[Q !aZwMKYDXJRlSKjQNWM:localhost:8800&ZQ!XiwGxQKwjgutEClKUy:localhost:8829%YQ !mTlCLZQCmfDuQsJxxp:localhost:8800%XQ !PEcOacvKaBKpXjytEF:localhost:8800&WQ!NajQnqYmGyTjxhFYar:localhost:8829%VQ !sJnuQYOyruhUpXDsLY:localhost:8800%UQ !TeraguiGoZoeOGFzlI:localhost:8800%TQ !UaitDdkGDcwvRLJSvp:localhost:8800%SQ !dDqNKNFdIjCAwnyaxp:localhost:8800%RQ !kjueCKHmYaYefEEpQY:localhost:8800%QQ !nftGLlLhVgzOwOFufp:localhost:8800%PQ !raCWVWQGnXbmkexpCN:localhost:8800%OQ !kwJgbtogEzCqYbUXfh:localhost:8800%NQ !JZouHBRxCRbcxYJnbn:localhost:8800%MQ !HOPyhZPcKkrvSmDIvX:localhost:8800%LQ !EWkoFeckhXlNyjuIEB:localhost:8800%KQ !utJsNQubeIXvcTKGpx:localhost:8800%JQ !iTQSCiLqRMDtgXtUdC:localhost:8800%IQ !UMFUOnYRvwKwSPkYHB:localhost:8800%HQ !hZuwenlFDapIPBOyfi:localhost:8800%GQ !LvARVIpJZeRQxbKefX:localhost:8800%FQ !SfYtaUhCFosNfHfUVm:localhost:8800 cHGsK#^>|T-vN _ 7  o H &  X 1 jC;eo6uM&  a :  ^ u M & |Tc'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800Y'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800N'Q!atnRTMliktaVUhMVID:localhost:88008&Q!TleKOyAElrpgyyrAQA:localhost:8800#'Q!bOSxzttDtclnrWnLov:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800>'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800&Q!VAEDgDJVqmxXZyAlSW:localhost:88005&Q!UyLoIXmzVFwycmBUeh:localhost:8800W'Q!UluPYLGXtInKDTjRzp:localhost:8800q'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800`'Q!URpLZLuBfVcfHVTBGS:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800 #'Q!VUibrTIkcRbfrogbQV:localhost:8800<'Q!YaLuQzmJKSMTSFEqjO:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800V'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800W'Q!XRAZJeoZBhGeHKKjaG:localhost:8800\'Q!XNfwczePlyYFWLCaui:localhost:8800&Q!XMNRkfscQXRjgYrOSd:localhost:8800]'Q!ZOwibbprUCQrSJQCrx:localhost:8800&Q!WVzjUePHrzCjfyTbmK:localhost:8800Y'Q!aiOswwhoZqjhcjzbzc:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800F&Q!XIqmzIFbkHGQPIpywk:localhost:8800E'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WYyiQAVvitxsLZKVCG:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800J&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800G'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800&Q!aBCvSXjtZUEPlPGHvY:localhost:8800Q'Q!ZvLVbnHjeymRiFIkYr:localhost:8800='Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800&Q!YufaOfAlruTdjyUCwO:localhost:8800{'Q!YtVXQjSPgVtbxrzUOA:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800t'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:88000'Q!WpThtNEVhrUbUdCdMJ:localhost:8800;&Q!WjlTCJVOFJkanCtkFE:localhost:8800R  geQa$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1640}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI"], "type": "m.room.history_visibility", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041919717, "hashes": {"sha256": "ceWxHNXATZegD20PcVIHwyUc6uiO9CnnS3AMwebFcaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+BfmyOHCYtBjvtyeKXFLXgI+XjoDHJ84n4FIzOKpBcg4FfUZYMp/zKlN8B62BLI68R6ulmrmt9KG9L2obg1WAg"}}, "unsigned": {"age_ts": 1570041919717}}kfeQac$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1639}{"auth_events": ["$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "type": "m.room.power_levels", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"users": {"@anon-20191002_181700-312:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041919577, "hashes": {"sha256": "DXw0qLMLnQNlc5HPUKwnbhYXTg7s/wvXvqGZd7LtkNo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rbIFNLzCrtuREGN1L/wEIrf2lwJwgY51vGGc7vqQwbHNPoGuemivtbAqbyATGOeXkOgdGCgBpv8Q7GqsijCKAA"}}, "unsigned": {"age_ts": 1570041919577}}teeQau$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1638}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8"], "type": "m.room.join_rules", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041918484, "hashes": {"sha256": "XY/k7/D4RYZovGExvOWZgXl74Eq4Jg2uqDjA4xQJC6g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kppO7FJzmMqbsLeqjGqiiiJ0Gg8P9FiMU+lFy+aqchiOfRKnF6BWcRMxj+C/58mI51wIrQdKF5DuWj87ILW+DQ"}}, "unsigned": {"age_ts": 1570041918484}}vdeQay$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1637}{"auth_events": ["$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc"], "prev_events": ["$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc"], "type": "m.room.member", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-312", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-312:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041917710, "hashes": {"sha256": "plNSQbIslAM62G1Qu2zIWwEZnxvqLvhmu/xj1z0lcn8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpEubYOMw3oSJqa4y6w+9reImu8jGNCYuQtaRM1igKYf0VBJCJfRdnQn8qmZ/oi0LJjB1zJWX1i21tcJLqDJDA"}}, "unsigned": {"age_ts": 1570041917710}} #Z$M t   D l q /4Xc&+OZc!Q' e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8 Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0oQ? e!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibility$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIgQ/ e!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rules$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAiQ3 e!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4cQ' e!utJsNQubeIXvcTKGpx:localhost:8800m.room.create$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4 Q']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkoQ? e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibility$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938gQ/ e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rules$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8iQ3 e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 Q']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUcQ' e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.create$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcoQ? e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibility$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0gQ/ e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rules$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsiQ3 e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY Q']e !UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9UcQ' e !UMFUOnYRvwKwSPkYHB:localhost:8800m.room.create$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsoQ? e !hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibility$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1ggQ/ e !hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rules$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrki Q3 e !hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM Q']e!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIc Q' e!hZuwenlFDapIPBOyfi:localhost:8800m.room.create$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUo Q? e!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibility$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEg Q/ e!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rules$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8iQ3 e!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM Q']e!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4cQ' e!LvARVIpJZeRQxbKefX:localhost:8800m.room.create$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETsbQ% e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkaQ# e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.name$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TArQ))e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQoQ? e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.history_visibility$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQbQ% e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.topic$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYgQ/ e!SfYtaUhCFosNfHfUVm:localhost:8800m.room.join_rules$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4QoQ? e!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.history_visibility$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI  #keQaS$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1644}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY"], "type": "m.room.aliases", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"aliases": ["#publicroomalias_with_topic:localhost:8800"]}, "depth": 8, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041923367, "hashes": {"sha256": "2Yjqu7/C3ak0c9GBWiXRMmxDmILlkf2NVGG7DFyU5tI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v1vrPE7XS7/we5TYV/5YHgkOpjUR0Rs0ta43UgHja8KRlL11Q/3NiqWG7t2tIRnOP3PMslNHT90b03e9zTy8BQ"}}, "unsigned": {"age_ts": 1570041923367}}jeQa$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1643}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q"], "type": "m.room.history_visibility", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041923115, "hashes": {"sha256": "/njmRWfYLWqZ0QVruXtG/xdoQTKskmvxZbdyuVlzBkM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sP1ivOe56d6ZowFI7r7u+UAZa27y084Yz5K2dsD6Ig14OBwt48uJYo9m/Qq4nnHjLjUYx8gnos1ofnyBVkjmAw"}}, "unsigned": {"age_ts": 1570041923115}}lieQae$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY!NPdjmIfsBVIIkvWBzD:localhost:8800{"token_id": 331, "stream_ordering": 1642}{"auth_events": ["$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA", "$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w", "$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw"], "prev_events": ["$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI"], "type": "m.room.topic", "room_id": "!NPdjmIfsBVIIkvWBzD:localhost:8800", "sender": "@anon-20191002_181700-311:localhost:8800", "content": {"topic": "topic_1"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041921833, "hashes": {"sha256": "gsFw55NnfBKVuF5jPGVb4o/0ssdBL5PLQvoHuOOvj0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fqo/dOXotr+P/Od5xiNn5IECuVXNpo7WPIvcRKhYLVH2whDAfTliknVc+mRrA+oqhVqXRzjrVkWuiKDWwpivBw"}}, "unsigned": {"age_ts": 1570041921833}}theQau$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1641}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g"], "type": "m.room.join_rules", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041921638, "hashes": {"sha256": "/wqcRCL7OsPF1CwXemqvdaEmw/XKMd8IdgKOs1EH8hQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eTdmRC+xN7uOhBlaLrq7BilZsgWFNj+uAqO0Q9afQ+imeJR+hciJ4WrduevcB4iBzXjXNItWMBJg9KezJnOoBw"}}, "unsigned": {"age_ts": 1570041921638}} a} { y w u sqomkigeca~reeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800~qeeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~peeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800~oeeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800~neeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~meeQ$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~leeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800~keeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~jeeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800~ieeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800~heeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~geeQ$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800~feeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800~eeeQ$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~deeQ$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800~ceeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~beeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~aeeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~`eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~_eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~^eeQ$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~]eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~\eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~[eeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~ZeeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800~YeeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800~XeeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g!SfYtaUhCFosNfHfUVm:localhost:8800~WeeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800~VeeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w!NPdjmIfsBVIIkvWBzD:localhost:8800~UeeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800~TeeQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648!SfYtaUhCFosNfHfUVm:localhost:8800 "%X [ }   ; Dl*'0XU^hcQ/ e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rules$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8jbQ3 e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc aQ']e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cd`Q' e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8 _Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0p^Q? e!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibility$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIh]Q/ e!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rules$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAj\Q3 e!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ [Q']e!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4dZQ' e!utJsNQubeIXvcTKGpx:localhost:8800m.room.create$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4 YQ']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkpXQ? e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibility$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938hWQ/ e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rules$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8jVQ3 e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 UQ']e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUdTQ' e!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.create$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcpSQ? e!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibility$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0hRQ/ e~!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rules$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsjQQ3 e}!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY PQ']e|!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9UdOQ' e{!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.create$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUspNQ? ey!hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibility$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1ghMQ/ ex!hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rules$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkjLQ3 ew!hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM KQ']ev!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIdJQ' eu!hZuwenlFDapIPBOyfi:localhost:8800m.room.create$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUpIQ? es!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibility$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEhHQ/ er!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rules$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8jGQ3 eq!LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levels$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM FQ']ep!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4dEQ' eo!LvARVIpJZeRQxbKefX:localhost:8800m.room.create$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETscDQ% en!SfYtaUhCFosNfHfUVm:localhost:8800m.room.topic$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_HkbCQ# em!SfYtaUhCFosNfHfUVm:localhost:8800m.room.name$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAsBQ))el!NPdjmIfsBVIIkvWBzD:localhost:8800m.room.aliaseslocalhost:8800$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ 1-P V  z  J  m 0 r 7y<E1z?D 0]v6Q' !OqPpRQ'E!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455 :Q/ !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules BQ? !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility 6Q' !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create <Q3 !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.power_levels^Q']!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-262:localhost:8800^Q']!PQZMTVTeCYqMZwkHvW:localhost:8800m.room.member@anon-20191002_181700-261:localhost:8800:Q/ !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.join_rulesBQ? !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.history_visibility6Q' !PQZMTVTeCYqMZwkHvW:localhost:8800m.room.create<Q3 !PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levelsR^Q']!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800U^Q']!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800Q:Q/ !PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rulesSBQ? !PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibilityT6Q' !PHkVrXAyfGkFtzSagu:localhost:8800m.room.createP<Q3 !PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels^Q']!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800:Q/ !PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rulesBQ? !PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibility6Q' !PEcOacvKaBKpXjytEF:localhost:8800m.room.createVQ3A!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_changeNQ31!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changesdQ<Q3 !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels^Q']!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800^Q']!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800:Q/ !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rulesBQ? !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibility6Q' !OtBUhGeUSiDMWRKIOT:localhost:8800m.room.createCQ?!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.third_party_invite82<Q3 !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.power_levels/^Q']!OqPpVlCwmKdAUlwrXI:localhost:8800m.room.member@anon-20191002_181700-156:localhost:8800.:Q/ !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.join_rules0BQ? !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.history_visibility16Q' !OqPpVlCwmKdAUlwrXI:localhost:8800m.room.create-<Q3 !OaCEdDAiatpwYcagUb:localhost:8800m.room.power_levels]Q'[!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-72:localhost:8829]Q'[!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-71:localhost:8800]Q'[!OaCEdDAiatpwYcagUb:localhost:8800m.room.member@anon-20191002_181700-70:localhost:8800:Q/ !OaCEdDAiatpwYcagUb:localhost:8800m.room.join_rulesBQ? !OaCEdDAiatpwYcagUb:localhost:8800m.room.history_visibility6Q' !OaCEdDAiatpwYcagUb:localhost:8800m.room.create?Q9 !OaCEdDAiatpwYcagUb:localhost:8800m.room.canonical_aliasEQ))!OaCEdDAiatpwYcagUb:localhost:8800m.room.aliaseslocalhost:8800<Q3 !OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels ^Q']!OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800 :Q/ !OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rules BQ? !OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibility 6Q' !OXpGdKbowFUTChPdmF:localhost:8800m.room.create  0voeQay$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1648}{"auth_events": ["$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs"], "prev_events": ["$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs"], "type": "m.room.member", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-317", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-317:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041929890, "hashes": {"sha256": "6l10XNw9kS2btgeCNYq84n6dUXjTdwh7FMDeEW6VP0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tmy1wT57/pOO9EQSYFJsY4xZaovLR5ggO1bL3aaVfB+Eirqhx4A/pAMXDfe4UhvtphCFKl1BVilrForY1xpHDw"}}, "unsigned": {"age_ts": 1570041929890}}ineQa_$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1647}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-317:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041929253, "hashes": {"sha256": "DHHPXNDEtuf0YL6xDbDIoN/SjRGhE56JKWOuYcZWw1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QYf2dyRm1swZtLGutn60FjvPaQCnuEccSNec821EopRCTn8JVV7NvF5q7y2E7TDLvKwBBq3pJE11n+8m3rBECQ"}}, "unsigned": {"age_ts": 1570041929253}}omeQak$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1646}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA"], "type": "m.room.topic", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"topic": "Test Topic"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041926045, "hashes": {"sha256": "m3R4CtoyjSX9ZsgHsWA+CoTSAdPRheSvcVgpCOpd63c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ojv0/QmZfcIAKJ1dnEcbCvtWHOTaKT5I4rVEYKXyfM2csXPL0l64O1tvMcoP53LpdKOckMK1JdCNH/U3If+eDg"}}, "unsigned": {"age_ts": 1570041926045}}lleQae$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800{"token_id": 332, "stream_ordering": 1645}{"auth_events": ["$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g", "$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc", "$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648"], "prev_events": ["$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ"], "type": "m.room.name", "room_id": "!SfYtaUhCFosNfHfUVm:localhost:8800", "sender": "@anon-20191002_181700-312:localhost:8800", "content": {"name": "Test Name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041924577, "hashes": {"sha256": "Ek1F0N0/NhwFfEQUMCJEqroLKffxHd6CeRZhf4lnyJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yBVm1Bt08XxXtNCrtftv+F4rCT1oeYsuKJjvnrseZgvOiKELWqmO3TPMTufAYbXLfDEAq3MUX1BY3IfOti5mCQ"}}, "unsigned": {"age_ts": 1570041924577}} JM8 | v D [)Uu>o +1 7 jO  # { P  cp J C=  W % i ]>1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q y1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUw1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA`1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ m1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R40e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY[1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_El1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qa1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE 1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k k1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!11e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFML1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMN1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk~1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs P1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI &1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUp1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI/1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4<1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIj1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ:1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw 1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAT1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 j1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ S1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM R1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM N1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo /1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMI1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE ?LR ]  d # k * m 1 s 7y=CNU\b"i-p/> ]  @anon-20191002_181700-349:localhost:8800m&\9 ]@anon-20191002_181700-349:localhost:8800a&\> ]  @anon-20191002_181700-348:localhost:8800m&\9 ]@anon-20191002_181700-348:localhost:8800a&\= ]  @anon-20191002_181700-347:localhost:8800m&\> ] @anon-20191002_181700-346:localhost:8800m&\D9 ]@anon-20191002_181700-346:localhost:8800a&\9 ]@anon-20191002_181700-347:localhost:8800a&\> ]  @anon-20191002_181700-345:localhost:8800m&\49 ]@anon-20191002_181700-345:localhost:8800a&\= ]  @anon-20191002_181700-343:localhost:8800m&\9 ]@anon-20191002_181700-343:localhost:8800a&\> ]  @anon-20191002_181700-342:localhost:8800m&\=9 ]@anon-20191002_181700-342:localhost:8800a&\> ]  @anon-20191002_181700-341:localhost:8800m&\9 ]@anon-20191002_181700-341:localhost:8800a&\= ]  @anon-20191002_181700-339:localhost:8800m&\9 ]@anon-20191002_181700-339:localhost:8800a&\> ]  @anon-20191002_181700-338:localhost:8800m&\/9 ]@anon-20191002_181700-338:localhost:8800a&\= ]  @anon-20191002_181700-337:localhost:8800m&\V> ]  @anon-20191002_181700-336:localhost:8800m&\C9 ]@anon-20191002_181700-337:localhost:8800a&\9~ ]@anon-20191002_181700-336:localhost:8800a&\9} ]@anon-20191002_181700-335:localhost:8800a&\9| ]@anon-20191002_181700-334:localhost:8800a&\>{ ]  @anon-20191002_181700-333:localhost:8800m&\9z ]@anon-20191002_181700-333:localhost:8800a&\>y ]  @anon-20191002_181700-332:localhost:8800m&\9x ]@anon-20191002_181700-332:localhost:8800a&\>w ]  @anon-20191002_181700-331:localhost:8800m&\,9v ]@anon-20191002_181700-331:localhost:8800a&\>u ]  @anon-20191002_181700-330:localhost:8800m&\ 9t ]@anon-20191002_181700-330:localhost:8800a&\>s ]  @anon-20191002_181700-329:localhost:8800m&\3=9r ]@anon-20191002_181700-329:localhost:8800a&\>q ]  @anon-20191002_181700-328:localhost:8800m&\9p ]@anon-20191002_181700-328:localhost:8800a&\>o ]  @anon-20191002_181700-327:localhost:8800m&\;9n ]@anon-20191002_181700-327:localhost:8800a&\>m ]  @anon-20191002_181700-326:localhost:8800m&\39l ]@anon-20191002_181700-326:localhost:8800a&\=k ]  @anon-20191002_181700-325:localhost:8800m&\V>j ]  @anon-20191002_181700-324:localhost:8800m&\r9i ]@anon-20191002_181700-325:localhost:8800a&\9h ]@anon-20191002_181700-324:localhost:8800a&\=g ]  @anon-20191002_181700-323:localhost:8800m&\V>f ]  @anon-20191002_181700-322:localhost:8800m&\C9e ]@anon-20191002_181700-323:localhost:8800a&\9d ]@anon-20191002_181700-322:localhost:8800a&\=c ]  @anon-20191002_181700-321:localhost:8800m&\>b ]  @anon-20191002_181700-320:localhost:8800m&\ '9a ]@anon-20191002_181700-321:localhost:8800a&\9` ]@anon-20191002_181700-320:localhost:8800a&\>_ ]  @anon-20191002_181700-319:localhost:8800m&\ 9^ ]@anon-20191002_181700-319:localhost:8800a&\>] ]  @anon-20191002_181700-318:localhost:8800m&\ 9\ ]@anon-20191002_181700-318:localhost:8800a&\>[ ]  @anon-20191002_181700-317:localhost:8800m&\ 9Z ]@anon-20191002_181700-317:localhost:8800a&\9Y ]@anon-20191002_181700-316:localhost:8800a&\9X ]@anon-20191002_181700-315:localhost:8800a&\9W ]@anon-20191002_181700-314:localhost:8800a&\ ,NC 8 - { " p  e ZOD9.|#qf VeL$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcsha256] :a)f[C-~VeL$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8sha256pjǠ4wG/ty !.+VeL$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcsha256 m밝]Elk&>U d'>''VeL$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8csha256'O Y#鴝yäqP#oVeL$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8sha256ZMPw;hdzJ:}bVeL$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0sha256ݛ^:܄i i>魑2VeL$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIsha256Ζ1+ےVcEv)П&GZVeL$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAsha256L!*j<_P}ޝ]pVeL$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQsha256"ɸ4zPubA흎{y QUVeL$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4sha256T d}u0iTS{<')VeL$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4sha256"N :$0(p]:V eL$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mksha256ʨhlO•)StV eL$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQsha256[C4!E1Or(Yrh$V eL$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQsha256,[NNX?+ Sd+$V eL$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGIsha256T.s%~n_"!@2,_.~֓bV eL$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-wsha256^Ԃ'TD9VV\;GJ f+[VeL$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgsha256H+d?6x''?2",ǰ\HVeL$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Qsha256[V_Xs3TVeL$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYsha256YkS=B*Oڹ@K6VeL$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qksha256yٞ#%>&c/B|zrרq8 VeL$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938sha256sQl*-!7 Iѿ`5ѳ7VeL$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8sha256cJo3ݵAaz^@₲}MXVeL$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4sha2560J4 7ظn yneBq^VeL$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUsha256&I 0c49J P.X<_jVeL$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcsha256/zdk\W~h"-jVeL$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQsha256'3JI6?bB.NʃT%DV~eL$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0sha256VD6YwS-G4,+ډoV}eL$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tssha256 A,^{"o ,@V|eL$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYsha256MiBok>7o@֗an^fV{eL$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Usha256/q7%PrNml8@^k+$p;VzeL$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUssha256T]葘s=*_ts5KVyeL$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEsha256t2]h]7 [jM9$A6BVxeL$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gsha256D'lnKi<%{= *OpԈH!oOCXVweL$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrksha256G 0nK^b jwD8IDmVveL$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMsha256J}sX @g|O6 cVueL$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIsha2565/ad{[ɒ|ogQd`VteL$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUsha256M'4Dr+lW :YR}#6)VseL$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcsha256= 0՜7~Bz RVreL$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEsha256$6PZ -IqT!lpVqeL$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8sha256]kYCtU=l s+KԗzwY.#YVpeL$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMsha256>`†s"k*2Hv?mVoeL$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4sha256V|7rŌC.3,0JAMc9=VneL$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETssha256,#\Pi3"zdy^2;VmeL$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hksha256N 5 , #    v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~tj`VLB8.$zpf\RH>4*  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$R ]  ]  ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]} ]} ]o ]o ]d ]c ]^ ]^ ]V ]U ]M ]M ]F ]F ]A ]@ ]: ]: ]2 ]2 ]( ]( ]( ]" ]" ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]{ ]u ]u ]u ]n ]m ]b ]b ]Z ]Z ]S ]S ]K ]K ]C ]B ]; ]; ]; ]3 ]3 ]+ ]* ]$ ]$ ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]~]}]s~]n}]5|]4{]#z]#y]x]w]v]u] t] s]r]q]p]o]n]m]l]k]j]i]h]g]f]e]d]c]b]a]`]_]^]]]\][]yZ]yY]sX]jW]dV]dU]`T]ZS]UR]TQ]TP]SO]RN]QM]QL]OK]NJ]NI]MH]LG]KF]JE]JD]IC]IB]IA]H@]H?]G>]G=]F<]B;]>:]89]48]07]+6]'5]#4]3]2]1]0]/].]-],]+]*] )](]']&]%]$]#]"]!] ]]]]]]]]]]]]]]]]]]] ] ] ] ] ]]]]]]] ] \~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0& | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ ]  ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]z ]q ]i ]^ ]V ]M ]E ]E ]< ]< ]6 ]. ]' ] ] ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]~ ]~ ]~ ]s ]r ]r ]r ]g ]e ]e ]e ]Y ]Y ]X ]M ]M ]M ]L ]F ]? ]9 ]2 ]- ]' ]  ] ] ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]W ]W ]W ]+ ]+ ]+ ]  ]  ] ] ] ]  ]  ] ] ]~ ]} ]| ]{ ]z ]y ]x ]w ]v ]u ]t ]s ]r ]q ]p ]o ]n ]m ]~l ]vk ]kj ]ki ]dh ]dg ]Yf ]Ye ]Td ]Nc ]Hb ]HaR ]G` ]F_ ]:^ ]/] ])\ ])[ ]#Z ]#Y ]X ]W ]V ]U ]T ]S ]R ]Q ]P ]O ]N ]M ]~L ]vK ]uJ ]lI ]lH ]dG ]dF ][E ][D ]VC ]VB ]PA ]G@ ]G? ]G> ]@= ];< ];; ]5: ]+9 ])8 ])7 ])6 ]5 ]4 ]3 ]2 ]1 ] 0 ] / ]. ]- ], ]+ ]* ]) ]( ]' ]& ]% ]$ ]# ]" ]! ] ] ]n ]m ]X ]X ]N ]N ]H ]H ]? ]? ]7 ]7 ]0 ]0 ]* ]* ]# ]# ] ii 4 5 h g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAoo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9goz1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQoq1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1wop1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAos1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-Qox1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1Ewow1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQo{1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwot1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAor1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0woy1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_gov1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5Aou  4 h 6mfd]c@anon-20191002_181700-341:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQo127.0.0.1Ra[a@anon-20191002_181700-33:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gIzNNM1Z0UVdLRXd5VlBoSQowMDJmc2lnbmF0dXJlIPeIJGDCDgv8Po87KBr_knhBlpJLixwja1MM0OkyDGfECg127.0.0.1d]c@anon-20191002_181700-339:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAo127.0.0.1Qd]c@anon-20191002_181700-338:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgo127.0.0.1Pd]c@anon-20191002_181700-337:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwo127.0.0.1Od]c@anon-20191002_181700-336:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwo127.0.0.1Nd]c@anon-20191002_181700-335:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAo127.0.0.1Md]c@anon-20191002_181700-334:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgo127.0.0.1Ld]c@anon-20191002_181700-333:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8Qo127.0.0.1Kd]c@anon-20191002_181700-332:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-go127.0.0.1J D DHseQa$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1652}{"auth_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM", "$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE"], "type": "m.room.test", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041933349, "hashes": {"sha256": "aAPxAIB9UKOzCJhK5y++KDgs9ZfxOlUfK8VNP0E1ofE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OWbfxaYQ3NH46QYId2cyEME8XWaIQdpLvkWyRxrRVCLEVpSoKUP3mxqWVFuWN8Hi5lj2wS1ZKWxD8r3iY80DDg"}}, "unsigned": {"age_ts": 1570041933349}}reQa$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1651}{"auth_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM", "$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8"], "type": "m.room.history_visibility", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041932253, "hashes": {"sha256": "xGNDuFAOMTRQdNZZwIL/PT3r7G+eYQ3bs67AtaDNiVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7TMhFC29dgbewdxuzBxcjZXvnr/EBHfAHynNPd4a5ucEJURzNoLZg/BCCrbVN1rY+Z+y9LGPfnDqdIGiGQZaBg"}}, "unsigned": {"age_ts": 1570041932253}}tqeQau$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1650}{"auth_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM", "$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM"], "type": "m.room.join_rules", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041931627, "hashes": {"sha256": "oPQ3dyEY7xF8vJcgpNnGrGUmC5nLahUr4AQUrAa4Rj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u5KXiLQSXlTvHlMalsduZDmEu8R0Qf8owRD8oNhtPECTtwHI+whKWzb/VyeZmmp30OzeNoGFl6w0RsKWiX8GAg"}}, "unsigned": {"age_ts": 1570041931627}}kpeQac$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM!LvARVIpJZeRQxbKefX:localhost:8800{"token_id": 336, "stream_ordering": 1649}{"auth_events": ["$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs", "$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "prev_events": ["$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4"], "type": "m.room.power_levels", "room_id": "!LvARVIpJZeRQxbKefX:localhost:8800", "sender": "@anon-20191002_181700-317:localhost:8800", "content": {"users": {"@anon-20191002_181700-317:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041930848, "hashes": {"sha256": "z2Sv8vpFFTf5ahM/TpbbRyHMTJ5bZEXOqkMKDQbdeHk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+TbFPiMks7E+92XYo4IVaFE0ghDmWQjD0AHwzlPEX6mdL2FIN3CzdTWS54QVRhsJx01x9/lWK/onCO9mZJgAg"}}, "unsigned": {"age_ts": 1570041930848}} "(3 a * V [+*5cbmeeQ/ $TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rulesgeQ3 $aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels eQ']$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800joinaeQ' $-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create eQ']$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800joinmeQ? $XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibilityeeQ/ $cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rulesgeQ3 $CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels eQ']$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800joinaeQ' $WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create eQ']$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800joinm eQ? $zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibilitye eQ/ $TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rulesg eQ3 $IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels eQ']$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800joinaeQ' $iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800m.room.create eQ']$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800joinmeQ? $c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibilityeeQ/ $Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rulesgeQ3 $MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.power_levels eQ']$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-320:localhost:8800joinaeQ' $L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.createmeQ? $5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.history_visibilityeeQ/ $CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.join_rulesgeQ3 $v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.power_levels ~eQ']$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.member@anon-20191002_181700-319:localhost:8800joina}eQ' $VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800m.room.createm|eQ? $RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800m.room.history_visibilitye{eQ/ $Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800m.room.join_rulesgzeQ3 $nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800m.room.power_levels yeQ']$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800m.room.member@anon-20191002_181700-318:localhost:8800joinaxeQ' $tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800m.room.createmweQ? $JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibilityeveQ/ $_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rules   *tweQau$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1656}{"auth_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM", "$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM"], "type": "m.room.join_rules", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041937160, "hashes": {"sha256": "sZWdusNS/zqajMfjWD6IzcEjEwyq69io7u8V4Qmgbt4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kEa6+T7LOqrhXwuzXmK+NXeXF96yPlXqfq8lst3llGOGqGSd8gPU6PzAKzkV8lmMeu9K2n598aQXqPKbW+iFDQ"}}, "unsigned": {"age_ts": 1570041937160}}kveQac$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1655}{"auth_events": ["$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "type": "m.room.power_levels", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"users": {"@anon-20191002_181700-318:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041936391, "hashes": {"sha256": "sMFbC/RNOYLjlV/qvSo4INWmzDgNreyjxSxbwE5Cz5Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gTWnPcjvVWsL4+T7MxkwDryWSD1m1R1tyBJG5FGhK1dinah5ZWMkiRA+6b7bdWTuvOeuWHuTRIYMRzVsMGV7BA"}}, "unsigned": {"age_ts": 1570041936391}}vueQay$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1654}{"auth_events": ["$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU"], "prev_events": ["$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU"], "type": "m.room.member", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-318", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-318:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041935649, "hashes": {"sha256": "wiWycTXjGWTtBok+ABGUC90+Q8wZ8rx3r5b7gxA12AQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A5K5i/+VxQrAUddNnwkJYxET7pgJx7CqDAJG4ztVRlh3+wdRsLBmtFu0Ru8uTr4P4ztEA7iraIdpTsqU7cZ2DA"}}, "unsigned": {"age_ts": 1570041935649}}iteQa_$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1653}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-318:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041934759, "hashes": {"sha256": "01uPK6ykexLQdlftMFr4ISPHX22z4HspqgIchF785o4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v6RmfzVlP/o6ZKUy25cKfmQwmzi5uvKCiKI3bq4PmFLeLVEZjUG16lc0PGLNvqI9VPjQcVg3aTPDHePbqSXAAA"}}, "unsigned": {"age_ts": 1570041934759}} ^\ Z  r p,6<M^! e)Q ] $WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800 m,m @anon-20191002_181700-320:localhost:8800! e)Q ] $LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800 m&mI@anon-20191002_181700-320:localhost:8800! e)Q ]$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGIm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800mvm@anon-20191002_181700-320:localhost:8800! e)Q ]$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-wm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800msm{@anon-20191002_181700-320:localhost:8800! e)Q ]$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800mmP@anon-20191002_181700-320:localhost:8800!e)Q ]$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Qm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800mmy@anon-20191002_181700-320:localhost:8800!e)Q ]$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzYm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800m m@anon-20191002_181700-320:localhost:8800!e)Q ]$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkm.room.message!iTQSCiLqRMDtgXtUdC:localhost:8800m m@anon-20191002_181700-320:localhost:8800,e?Q ]$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938m.room.history_visibility!iTQSCiLqRMDtgXtUdC:localhost:8800mmB@anon-20191002_181700-320:localhost:8800$e/Q ]$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8m.room.join_rules!iTQSCiLqRMDtgXtUdC:localhost:8800mm@anon-20191002_181700-320:localhost:8800&e3Q ]$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4m.room.power_levels!iTQSCiLqRMDtgXtUdC:localhost:8800mm@anon-20191002_181700-320:localhost:8800 e'Q ]$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUm.room.member!iTQSCiLqRMDtgXtUdC:localhost:8800m^m@anon-20191002_181700-320:localhost:8800 e'Q  ]$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcm.room.create!iTQSCiLqRMDtgXtUdC:localhost:8800mmQ@anon-20191002_181700-320:localhost:8800e#Q ]$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQm.room.test!UMFUOnYRvwKwSPkYHB:localhost:8800mm@anon-20191002_181700-319:localhost:8800,e?Q ]$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0m.room.history_visibility!UMFUOnYRvwKwSPkYHB:localhost:8800mmط@anon-20191002_181700-319:localhost:8800$~e/Q ]$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsm.room.join_rules!UMFUOnYRvwKwSPkYHB:localhost:8800mm@anon-20191002_181700-319:localhost:8800&}e3Q ]$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYm.room.power_levels!UMFUOnYRvwKwSPkYHB:localhost:8800mZmx@anon-20191002_181700-319:localhost:8800 |e'Q ]$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Um.room.member!UMFUOnYRvwKwSPkYHB:localhost:8800mma@anon-20191002_181700-319:localhost:8800{ e'Q  ]$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUsm.room.create!UMFUOnYRvwKwSPkYHB:localhost:8800mmD@anon-20191002_181700-319:localhost:8800ze#Q ]$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEm.room.test!hZuwenlFDapIPBOyfi:localhost:8800mm @anon-20191002_181700-318:localhost:8800,ye?Q ]$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gm.room.history_visibility!hZuwenlFDapIPBOyfi:localhost:8800mʿm@anon-20191002_181700-318:localhost:8800$xe/Q ]$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkm.room.join_rules!hZuwenlFDapIPBOyfi:localhost:8800mʽmʽ@anon-20191002_181700-318:localhost:8800&we3Q ]$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMm.room.power_levels!hZuwenlFDapIPBOyfi:localhost:8800mʺmʻC@anon-20191002_181700-318:localhost:8800 ve'Q ]$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIm.room.member!hZuwenlFDapIPBOyfi:localhost:8800mʷ!mʷ@anon-20191002_181700-318:localhost:8800 ~z v r n j fb^ZVRNJFQeeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800PeeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800OeeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800NeeQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800MeeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800LeeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800KeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800JeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800IeeQ$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800HeeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800GeeQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800FeeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800EeeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800DeeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800CeeQ$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800BeeQ$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800AeeQ$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800@eeQ$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800?eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800>eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800=eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800<eeQ$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800;eeQ$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800:eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:88009eeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:88008eeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:88007eeQ$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:88006eeQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:88005eeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk!hZuwenlFDapIPBOyfi:localhost:88004eeQ$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800  w +>v{eQay$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1660}{"auth_events": ["$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs"], "prev_events": ["$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs"], "type": "m.room.member", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-319", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-319:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041941716, "hashes": {"sha256": "etjYUl/miE/8kG0j3QwfBK4Hr3VlVSCJccPnE0GnPdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cez4YfZbvDVVlwSUnN5+D2OGhGNsz0/nfilgmFSPH3SUT0t4Bnhl2Bl77VMEby96XAOriNTQ14+9NHUwoGysDA"}}, "unsigned": {"age_ts": 1570041941716}}izeQa_$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1659}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-319:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041940704, "hashes": {"sha256": "WnARFabCFFgGMC3zQPrT2Z+nH/mRiHsU0PGGXrNh1/c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QJFSXNmGMLRymfMcABFHswjvii8fKh7wLHxMvakrtbATmPOq15r/A8Gpc2H/Qz5aFm5DEsFrPRVFfRzbiz21AQ"}}, "unsigned": {"age_ts": 1570041940704}}HyeQa$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1658}{"auth_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM", "$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g"], "type": "m.room.test", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041939483, "hashes": {"sha256": "y+6Dxmlmd20UYvhCDkgeMs//Lv4kIYkLZziLtey2G0s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uEFRy6EnKygYxICpcvIDXSf3YOuWq7OhrKunVkhbVU4+6cF9VuqErU//+s21KsrdOOmrQpqHNJDQwqNsS5QoCg"}}, "unsigned": {"age_ts": 1570041939483}}xeQa$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g!hZuwenlFDapIPBOyfi:localhost:8800{"token_id": 337, "stream_ordering": 1657}{"auth_events": ["$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM", "$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU", "$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI"], "prev_events": ["$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk"], "type": "m.room.history_visibility", "room_id": "!hZuwenlFDapIPBOyfi:localhost:8800", "sender": "@anon-20191002_181700-318:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041937794, "hashes": {"sha256": "/aDHCwgVYNNpyMsxls483IhGvAWL+noMntFlUYpxofk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qo1Xz5mQxgO5ffr3jzF9UbMEd8iqzcBkkoQ0M2H2RfMSOKhllm/dsTFtIfVIAwYhPTnefuyD+IGhpAg37HqTAQ"}}, "unsigned": {"age_ts": 1570041937794}} a} { y w u sqomkigeca~eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~ eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800~ eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~eeQ$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800~~eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800~}eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~|eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800~{eeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800~zeeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~yeeQ$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800~xeeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800~weeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~veeQ$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800~ueeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800~teeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU!hZuwenlFDapIPBOyfi:localhost:8800~seeQ$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM!hZuwenlFDapIPBOyfi:localhost:8800 (hi9> c  v ' : M f 0CVL_r#Lu ] v@anon-20191002_181700-337:localhost:8800offlinemmmmmF$ ]%@anon-20191002_181700-283:localhost:8800offlinembmbF! ]"@anon-20191002_181700-277:localhost:8800offlinemƓmƓL ] !@anon-20191002_181700-268:localhost:8800offlinem mƃem qL ] !@anon-20191002_181700-269:localhost:8800offlinem mƃem L ] @anon-20191002_181700-266:localhost:8800offlinemm\Tm_L ] @anon-20191002_181700-262:localhost:8800offlinemśm!mŝMLt ] v@anon-20191002_181700-336:localhost:8800offlinemmmmmLr ] s@anon-20191002_181700-333:localhost:8800offlinemHmmIGLq ] s@anon-20191002_181700-334:localhost:8800offlinemKmmLLj ] p@anon-20191002_181700-332:localhost:8800offlinem,:m̱lm,FLe ] f@anon-20191002_181700-331:localhost:8800offlinemmvm:Lb ] c@anon-20191002_181700-330:localhost:8800offlinemmcLmL\ ] ]@anon-20191002_181700-328:localhost:8800offlinem˝[m,m˝L[ ] \@anon-20191002_181700-327:localhost:8800offlinem˃mm˄LY ] Z@anon-20191002_181700-326:localhost:8800offlinemlmmmLU ] X@anon-20191002_181700-324:localhost:8800offlinemF*m mHFT ]X@anon-20191002_181700-320:localhost:8800offlinemmFQ ]R@anon-20191002_181700-329:localhost:8800offlinem˲em˲eLP ] Q@anon-20191002_181700-323:localhost:8800offlinem#(m˟m#)LN ] O@anon-20191002_181700-321:localhost:8800offlinemmˌtmLI ] J@anon-20191002_181700-319:localhost:8800offlinememedmgLH ] I@anon-20191002_181700-318:localhost:8800offlinemImQmPLF ] G@anon-20191002_181700-317:localhost:8800offlinemʰm*mʰLD ] E@anon-20191002_181700-316:localhost:8800offlinemʛmDmʛL9 ] :@anon-20191002_181700-300:localhost:8800offlinemUmimL8 ] 9@anon-20191002_181700-299:localhost:8800offlinemȤ^m.mȫL5 ] 6@anon-20191002_181700-298:localhost:8800offlinempmdmrbL3 ] 4@anon-20191002_181700-297:localhost:8800offlinemCmȹmCL0 ] 1@anon-20191002_181700-294:localhost:8800offlinemǵ2m1mǵ;L- ] .@anon-20191002_181700-290:localhost:8800offlinemc1mm^oF) ]*@anon-20191002_181700-286:localhost:8800offlinemmF( ]*@anon-20191002_181700-279:localhost:8800offlinemƭmƨF' ]*@anon-20191002_181700-280:localhost:8800offlinem(mͩF% ]&@anon-20191002_181700-284:localhost:8800offlinemmF ]@anon-20191002_181700-276:localhost:8800offlinem~m~F ]@anon-20191002_181700-267:localhost:8800offlinemxmxL ] @anon-20191002_181700-260:localhost:8800offlinem|smm~OF ]@anon-20191002_181700-265:localhost:8800offlinemmL ] @anon-20191002_181700-258:localhost:8800offlinemYmӜm\ J!Y'r@ y H  P  4 W % ^ , d 2 `k9q@fx.F~LS9k1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI9.1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Yu1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEh1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw`1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgU1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8C1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j431e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo0e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1k1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl41e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg41e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ[0e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg01e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawA1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7use1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU,1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd81e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE91e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMM0e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA_1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkO1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgh1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI 1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsm1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX01e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY0e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4^1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok`1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR41e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkko0e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA"1e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXM1e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI1e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo1e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls0e$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM0e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY61e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc80e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFsv1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr40e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM+1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI0e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AR1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 Q?)HtBh6d W % ] , z[#n< 2 VOj8p>   \ *Hb1h6)21e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU/1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0\1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo60e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gN1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcW0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko/1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM 1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc 1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4t1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8/1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4j1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8o1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQB1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEi1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYE1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk2 Q1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw 1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ 1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 D1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0H1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT1840140e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUF1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM41e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc\1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY61e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI X0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHso1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYP1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw21e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw21e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyUT1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0P -RM H C > 9 4/*|%w rmhc T9Qe9!nftGLlLhVgzOwOFufp:localhost:8800$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_poT8Qe8!nftGLlLhVgzOwOFufp:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQT7Qe7!nftGLlLhVgzOwOFufp:localhost:8800$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqoT6Qe6!raCWVWQGnXbmkexpCN:localhost:8800$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMT5Qe5!raCWVWQGnXbmkexpCN:localhost:8800$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYT4Qe4!raCWVWQGnXbmkexpCN:localhost:8800$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbasT3Qe3!raCWVWQGnXbmkexpCN:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kT2Qe2!raCWVWQGnXbmkexpCN:localhost:8800$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQT1Qe1!kwJgbtogEzCqYbUXfh:localhost:8800$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wT0Qe0!kwJgbtogEzCqYbUXfh:localhost:8800$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5MT/Qe/!kwJgbtogEzCqYbUXfh:localhost:8800$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gT.Qe.!kwJgbtogEzCqYbUXfh:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gT-Qe-!kwJgbtogEzCqYbUXfh:localhost:8800$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIT,Qe,!JZouHBRxCRbcxYJnbn:localhost:8800$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40T+Qe+!JZouHBRxCRbcxYJnbn:localhost:8800$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0T*Qe*!JZouHBRxCRbcxYJnbn:localhost:8800$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgT)Qe)!JZouHBRxCRbcxYJnbn:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgT(Qe(!JZouHBRxCRbcxYJnbn:localhost:8800$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98T'Qe'!HOPyhZPcKkrvSmDIvX:localhost:8800$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgT&Qe&!HOPyhZPcKkrvSmDIvX:localhost:8800$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-LkT%Qe%!HOPyhZPcKkrvSmDIvX:localhost:8800$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAroT$Qe$!HOPyhZPcKkrvSmDIvX:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQT#Qe#!HOPyhZPcKkrvSmDIvX:localhost:8800$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88T"Qe"!EWkoFeckhXlNyjuIEB:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gT!Qe!!EWkoFeckhXlNyjuIEB:localhost:8800$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcT Qe !EWkoFeckhXlNyjuIEB:localhost:8800$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8TQe!EWkoFeckhXlNyjuIEB:localhost:8800$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcTQe!EWkoFeckhXlNyjuIEB:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cTQe!EWkoFeckhXlNyjuIEB:localhost:8800$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8TQe!utJsNQubeIXvcTKGpx:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0TQe!utJsNQubeIXvcTKGpx:localhost:8800$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpITQe!utJsNQubeIXvcTKGpx:localhost:8800$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHATQe!utJsNQubeIXvcTKGpx:localhost:8800$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQTQe!utJsNQubeIXvcTKGpx:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4TQe!utJsNQubeIXvcTKGpx:localhost:8800$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tcTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0TQe!UMFUOnYRvwKwSPkYHB:localhost:8800$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7tsTQe!UMFUOnYRvwKwSPkYHB:localhost:8800$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYT Qe !UMFUOnYRvwKwSPkYHB:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U D DHeQa$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1664}{"auth_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY", "$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0"], "type": "m.room.test", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041944852, "hashes": {"sha256": "f9xX8S3VCxHpoPZ3wqI0PmnU8fjIICw0Tu23MbCwKOI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kTvt8FRKYuT1UAVKRauVqAX4bAUW42S0lWboFystFlQ8d7ogXY0g2YnJ6g5yvGi+bYuSweyW91X8AIFeNIwwCA"}}, "unsigned": {"age_ts": 1570041944852}}~eQa$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1663}{"auth_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY", "$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts"], "type": "m.room.history_visibility", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041943753, "hashes": {"sha256": "Sa8Blf09onyV9+np8S1y3y0NOSSCzfD3VABquQ6kGtI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T22udtO4rLN3/hEsTsNqWP7ovwCHzkVPEGF3BXIsitoJvZvAOY5tBBDiTM752hLxYVxQxEOTdCYEIug1EHRwBw"}}, "unsigned": {"age_ts": 1570041943753}}t}eQau$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1662}{"auth_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY", "$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY"], "type": "m.room.join_rules", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041943044, "hashes": {"sha256": "ZyLgZLLTyRELIyv7iKckvUFYXWPCI2jWTARRnhtHbQA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ib0xTU++zqS/nZMMDBYuFr8aqPzBmEG13L6RGBTivD8uhszl08WU0qhEw5fHc/YmQ/VndNxi+2ySqoDq8JfkCA"}}, "unsigned": {"age_ts": 1570041943044}}k|eQac$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY!UMFUOnYRvwKwSPkYHB:localhost:8800{"token_id": 338, "stream_ordering": 1661}{"auth_events": ["$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs", "$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "prev_events": ["$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U"], "type": "m.room.power_levels", "room_id": "!UMFUOnYRvwKwSPkYHB:localhost:8800", "sender": "@anon-20191002_181700-319:localhost:8800", "content": {"users": {"@anon-20191002_181700-319:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041942362, "hashes": {"sha256": "0fY3WnCLu4uJYyfRo6xaEvRrG0tdeffNlnvsEUW6gA4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qqR75/s+YKea5RMSL103+Xzi9voVKSovl7ytvCBgDck+ZnUDPf3Sc77N17szPRuPPTbaRuqGltyPXeLQujHsDg"}}, "unsigned": {"age_ts": 1570041942362}} Hj8p> 2 v D  | J  j8 P  V $ \ +dp> vD}LS!Y'1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo>1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI (1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI '1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw 1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4B1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4A1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4@1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ00e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ00e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0 1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc )1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc (1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgA1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg@1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg?1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c 1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c 1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c 1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY 1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY 1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I e1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I d1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I c1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsb1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsa1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns`1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U?1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U>1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE 1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8 1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kc | l \ T LtD=5- e % eeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800 *eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs!VWYMJxEviBNDdJCuKT:localhost:8800ہeeQ$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800QeeQ$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZw$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg!IMiczgkCTjejbnbeyP:localhost:8800meeQ$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo!IPYMCBwcyNIzqdiIWv:localhost:8800ЁeeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800~eeQ$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800 eeQ$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800YeeQ$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o!EfJcWhdjNARbuHYrqU:localhost:8800݁eeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800weeQ$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800فeeQ$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI!OSHhtkGUjpUCkXwIhj:localhost:8800ށeeQ$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!duCKuavMBSfRbTFPsc:localhost:8800eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800 1eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800 )eeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800 eeQ$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs!VWYMJxEviBNDdJCuKT:localhost:8800eeQ$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E!fJXiUpbbOlLbHWmPgs:localhost:8800z 1^ m z ) 6 C P ] jw&3BQ^ kz)P]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800P]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800P]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800P]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800N[Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800 P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-210:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800 N[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800 P]Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800P]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800P]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800P]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800P]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800P]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800P]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800P]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800P]Q@anon-20191002_181700-201:localhost:8800!KXMUzALpMMMKqoQXUS:localhost:8800P]Q@anon-20191002_181700-200:localhost:8800!NfaPEGKjnUDUTavzol:localhost:8800P]Q@anon-20191002_181700-199:localhost:8800!JGhlAUflyNxErGGZZu:localhost:8800P]Q@anon-20191002_181700-198:localhost:8800!tkajvIKHoOMWGsReBs:localhost:8800P]Q@anon-20191002_181700-197:localhost:8800!fcdNYFWFyxmdpKAknc:localhost:8800P]Q@anon-20191002_181700-195:localhost:8800!MWCLSWWGdWcSivNVLI:localhost:8800P]Q@anon-20191002_181700-194:localhost:8800!erBPdgtUsiOfIKUkho:localhost:8800P]Q@anon-20191002_181700-193:localhost:8800!dWgOTucBVQBKZjfndN:localhost:8800P]Q@anon-20191002_181700-192:localhost:8800!hSzBsirdPWHtVjagXn:localhost:8800P]Q@anon-20191002_181700-191:localhost:8800!mfzIRinBAGGrZvQAuI:localhost:8800P]Q@anon-20191002_181700-190:localhost:8800!FPcQcheNebvdFvmOnr:localhost:8800P]Q@anon-20191002_181700-189:localhost:8800!vOfeZvbtpuHfoqShFl:localhost:8800P]Q@anon-20191002_181700-188:localhost:8800!EieRtaCFZJJCIOkRPp:localhost:8800P]Q@anon-20191002_181700-187:localhost:8800!NQgavrmiCPUVaVjssy:localhost:8800P]Q@anon-20191002_181700-186:localhost:8800!hgjYwwwjWJNgwrzOto:localhost:8800P]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800P]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800P]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800N[Q@anon-20191002_181700-17:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800P]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800 g * T~=ggU]!c^@anon-20191002_181700-331:localhost:8800COONNUXFOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAogT]!c]@anon-20191002_181700-330:localhost:8800TFGJMHITULMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwogS]!c\@anon-20191002_181700-329:localhost:8800KKMPVZBDLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgogR]!c[@anon-20191002_181700-328:localhost:8800DZKGSTQGUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgogQ]!cZ@anon-20191002_181700-327:localhost:8800WQCLQHKZHCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0QogP]!cY@anon-20191002_181700-326:localhost:8800YBIXYTHJYTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0AogO]!cX@anon-20191002_181700-325:localhost:8800CDWNGKHJGSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggogN]!cW@anon-20191002_181700-324:localhost:8800KKATIXOBNFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAogM]!cV@anon-20191002_181700-323:localhost:8800BHOVENVWZCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_RagogL]!cU@anon-20191002_181700-322:localhost:8800CMZHVCVAXTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwogK]!cT@anon-20191002_181700-321:localhost:8800WXFXGVMZGCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7Qwo   *teQau$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1668}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4"], "type": "m.room.join_rules", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041949106, "hashes": {"sha256": "C3eOPIl4ZmYlQsoyzYntcAxXJ6WW5HxiZV8bEmPWEvU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W6SzsBImXYOPb6OeFpx0+lroz69KNVZMHCQW0WQbuKNdMVTy9gZfeD5lMRGRW+rnxA8bxQUfzyVPC6Mx1dpEDw"}}, "unsigned": {"age_ts": 1570041949106}}keQac$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1667}{"auth_events": ["$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "type": "m.room.power_levels", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"users": {"@anon-20191002_181700-320:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041948340, "hashes": {"sha256": "88iofFQJect8z5qUwaI4jp+IdQj6hNuoFGfVKvt/VBs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9RbcvcQsk5J1Dibt7ivnXip7KYOAXdwgjSu7ChoU5K1V4BQH4upAGWhq0XCCQ/ovRGtE1cL+tNe1i2hJ3zHbBQ"}}, "unsigned": {"age_ts": 1570041948340}}veQay$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1666}{"auth_events": ["$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc"], "prev_events": ["$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc"], "type": "m.room.member", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-320", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-320:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041947742, "hashes": {"sha256": "dX5rG+FnvXEbuJPOY6Cp7aaAierErYiYIECPMVtk5yw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hdOGWYUTWotF6MK2JvoguCzkm9NreMl2o4Q1yAHML0h/Brd/IJ+AdZ4BwmV6q5cbWOi3m6G5QJzcZJdqNZ1BAQ"}}, "unsigned": {"age_ts": 1570041947742}}ieQa_$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1665}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-320:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041946878, "hashes": {"sha256": "8yG/nlOKjACX8gbx91ana+2h4H/W6B2syMe5tvhxGb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCi1MI1o/AxpOsIh9/9YXIxhZJar5QJw681c0RXP2r7JENPOavuDdbRzIKjJ9VOCC3ohiS6YOvme+o9GpP6sDg"}}, "unsigned": {"age_ts": 1570041946878}} E* {IP$ ^\j8p?  w E  } K  Q XVd2j8p> e$pVGQHH99ReR2yTF1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI`1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cP1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIW1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4@1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q R1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw^1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI>1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE00e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4F1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ51e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwx1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 ,1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo~1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 91e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo h1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk <1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo-1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4:1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAj1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkf1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI{1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs m1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w 11e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 21e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM &21e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 21e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMk21e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q d1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwQ1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q41e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMo1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mt1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUm21e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 #O(7 @ h w  *X%QZ'Om{eQ? $PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibilityezeQ/ $c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rulesgyeQ3 $5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels xeQ']$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800aweQ' $Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800m.room.createmveQ? $aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibilityeueQ/ $yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rulesgteQ3 $3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels seQ']$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800areQ' $GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800m.room.createmqeQ? $n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibilityepeQ/ $4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rulesgoeQ3 $KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels neQ']$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800ameQ' $EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800m.room.createmleQ? $2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibilityekeQ/ $TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rulesgjeQ3 $aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels ieQ']$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800aheQ' $-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create geQ']$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800mfeQ? $XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibilityeeeQ/ $cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rulesgdeQ3 $CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels ceQ']$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800abeQ' $WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800m.room.create aeQ']$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800m`eQ? $zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibilitye_eQ/ $TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rulesg^eQ3 $IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels ]eQ']$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800a\eQ' $iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800m.room.create [eQ']$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.member@anon-20191002_181700-321:localhost:8800mZeQ? $c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.history_visibilityeYeQ/ $Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8!iTQSCiLqRMDtgXtUdC:localhost:8800m.room.join_rules 7J J BB B  D  D  D  F FFHHJJ J ?]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVVm_c?]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXTmϘk?]!@anon-20191002_181700-366:localhost:8800FABJQITKMRm~i?]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWOm~j?]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTBm`g?]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXFm`h?]!@anon-20191002_181700-362:localhost:8800DYTMFWLSURmf?]!@anon-20191002_181700-361:localhost:8800XCHGELQORJm^e?]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJmZU?]!@anon-20191002_181700-411:localhost:8800QBCZCYKWITmC=[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXm%K!?]!@anon-20191002_181700-409:localhost:8800GINWCFSINTm0 ?]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFBm+!?]!@anon-20191002_181700-407:localhost:8800RTGALMPCLSmj?]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGFm?]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDRmr?]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCIm?]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWSm?]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNWmҲ=[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYm ?]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQLmҚ?]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHMmҖ?]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYAm҂?]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGPm}?]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWEmd?]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEGmK?]!@anon-20191002_181700-393:localhost:8800ABJMLTSTASm1p?]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJm?]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLLm|?]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQHmI=[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKm?]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKAm?]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPEmѧ?]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDHmђ?]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWSm}#~?]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTEmP9|?]!@anon-20191002_181700-384:localhost:8800UKXQVESHRPmP=}?]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJm3{?]!@anon-20191002_181700-382:localhost:8800KSBAPZNICMm/z?]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUOmy?]!@anon-20191002_181700-380:localhost:8800KLOHIVURCFmx=[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHm3?]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOTm΅w?]!@anon-20191002_181700-378:localhost:8800BACPAMXENXm΃v?]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZmЛu?]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRNmЇt?]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBUmk~s?]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHYm;|r?]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZm!%q?]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNMmp?]!@anon-20191002_181700-371:localhost:8800MVADRLDOGOmSo?]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJmcn=[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKOmJ?]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRAmxm?]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJmϱl  wieQo$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "160", "stream_ordering": 1672}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test1-2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041952195, "hashes": {"sha256": "+DaUz8d+7Tb2umm+hiYap0MvWIYgQDW/KJuiQDE52uQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lPpRTYk28upkGaOaZU7Ecr4InJ5EdCupskhK7CSGEo2XHt9//yOBb3ZM4ApQt/h3dlMO7EwPb3d95luzsO1DBg"}}, "unsigned": {"age_ts": 1570041952195}}eQo$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "159", "stream_ordering": 1671}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test1-1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041951501, "hashes": {"sha256": "/66c3G21tzYFpk6pP/YIvj1z7fd/VYwxc+kS4CuFmiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MEt7ZaZ4vUQCRJE0ZN1/LV6lzzGEYzTj6xCqbPk6iy8uaa2HgKnjfOUTzjYVEs6kHw+CS/6hEmac7Vd3rlUpBw"}}, "unsigned": {"age_ts": 1570041951501}}eQo$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "158", "stream_ordering": 1670}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test1-0", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041951498, "hashes": {"sha256": "XYwCePYMoX9rka0wF65fVpg6XMPwL0iz6lVTKa2l7Xk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DoEgtulF3R7s2KMY49KMue76P2/YqKVi0VTGR+nbrNQtf588wSwRw3Y7K9N0SOZWwdDSSlh+p8ZlO3koDP7kDQ"}}, "unsigned": {"age_ts": 1570041951498}}eQa$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "stream_ordering": 1669}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8"], "type": "m.room.history_visibility", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041949846, "hashes": {"sha256": "kw2DeUYFRABpvGdQlUVwicpJ2/UHsH1T4ztlU6aALFE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dul2QSQqzxTItLbYdM34CtlmYU1Kb9OifxOpdFwtvWFG+OVXAXaId+kuFkl9CC/tvzg1G7Nm/BE5Uo8+yHHoCw"}}, "unsigned": {"age_ts": 1570041949846}} #p*T ~   5 b3l%Kq(LpkUeQ%!$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 15kTeQ%!$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 14kSeQ%!$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 13kReQ%!$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 12kQeQ%!$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 11kPeQ%!$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 10jOeQ%$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 9jNeQ%$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 8jMeQ%$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 7jLeQ%$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 6jKeQ%$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 5jJeQ%$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 4jIeQ%$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 3jHeQ%$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 2jGeQ%$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 1*FeQ%$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800content.bodyA message to wait on because the m.room.member might not come down /sync(EeQ%$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY!CkNvQnbApPIcuKygDk:localhost:8800content.bodyA message to wait on because the m.room.member doesn't come down /syncbDeQ%$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s!UaitDdkGDcwvRLJSvp:localhost:8800content.body2bCeQ%$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800content.body1bBeQ%$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o!dDqNKNFdIjCAwnyaxp:localhost:8800content.body2bAeQ%$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800content.body1k@eQ%!$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800content.bodyMy messageo?eQ%)$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800content.bodyA test messageo>eQ%)$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g!JZouHBRxCRbcxYJnbn:localhost:8800content.bodyA test messageo=eQ%)$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY!HOPyhZPcKkrvSmDIvX:localhost:8800content.bodyTest message 2o<eQ%)$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800content.bodyTest message 1';eQ%$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800content.bodyWait for presence changes caused by the first sync to trickle throughh:eQ%$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-3h9eQ%$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-2h8eQ%$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-1h7eQ%$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest2-0h6eQ%$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-3h5eQ%$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-2h4eQ%$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-1h3eQ%$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk!iTQSCiLqRMDtgXtUdC:localhost:8800content.bodytest1-0 -RM H C > 9 4/*|%w rmhc T?Qe!raCWVWQGnXbmkexpCN:localhost:8800$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYT>Qe!raCWVWQGnXbmkexpCN:localhost:8800$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbasT=Qe!raCWVWQGnXbmkexpCN:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kT<Qe!raCWVWQGnXbmkexpCN:localhost:8800$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQT;Qe!kwJgbtogEzCqYbUXfh:localhost:8800$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcT:Qe!kwJgbtogEzCqYbUXfh:localhost:8800$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcT9Qe!kwJgbtogEzCqYbUXfh:localhost:8800$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wT8Qe!kwJgbtogEzCqYbUXfh:localhost:8800$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5MT7Qe!kwJgbtogEzCqYbUXfh:localhost:8800$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gT6Qe!kwJgbtogEzCqYbUXfh:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gT5Qe!kwJgbtogEzCqYbUXfh:localhost:8800$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIT4Qe!JZouHBRxCRbcxYJnbn:localhost:8800$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gT3Qe!JZouHBRxCRbcxYJnbn:localhost:8800$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40T2Qe!JZouHBRxCRbcxYJnbn:localhost:8800$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0T1Qe!JZouHBRxCRbcxYJnbn:localhost:8800$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgT0Qe!JZouHBRxCRbcxYJnbn:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgT/Qe!JZouHBRxCRbcxYJnbn:localhost:8800$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98T.Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYT-Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZkT,Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgT+Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-LkT*Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAroT)Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQT(Qe!HOPyhZPcKkrvSmDIvX:localhost:8800$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88T'Qe!EWkoFeckhXlNyjuIEB:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gT&Qe!EWkoFeckhXlNyjuIEB:localhost:8800$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYT%Qe!EWkoFeckhXlNyjuIEB:localhost:8800$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcT$Qe!EWkoFeckhXlNyjuIEB:localhost:8800$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8T#Qe!EWkoFeckhXlNyjuIEB:localhost:8800$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcT"Qe!EWkoFeckhXlNyjuIEB:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cT!Qe!EWkoFeckhXlNyjuIEB:localhost:8800$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8T Qe!utJsNQubeIXvcTKGpx:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0TQe!utJsNQubeIXvcTKGpx:localhost:8800$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpITQe!utJsNQubeIXvcTKGpx:localhost:8800$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHATQe!utJsNQubeIXvcTKGpx:localhost:8800$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQTQe!utJsNQubeIXvcTKGpx:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4TQe!utJsNQubeIXvcTKGpx:localhost:8800$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4TQe!iTQSCiLqRMDtgXtUdC:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1MkTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGITQe!iTQSCiLqRMDtgXtUdC:localhost:8800$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-wTQe!iTQSCiLqRMDtgXtUdC:localhost:8800$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGITQe!iTQSCiLqRMDtgXtUdC:localhost:8800$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w T IT eQo$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "164", "stream_ordering": 1676}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"msgtype": "m.text", "body": "test2-2"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041954086, "hashes": {"sha256": "dGTDH8dLZLUofS6C3G0GfTqRcE9cuTmsYWWP+YVlgbY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twjRN1nD0I7183T+uqlMXy+8c6ML9IvSRar9hrJYg/ubzyqOGPMWK40t6ROj3Sv+gG90XPdmRXA+Vn2/4wjdCg"}}, "unsigned": {"age_ts": 1570041954086}}3 eQO$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "163", "stream_ordering": 1675}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q", "$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test2-1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041953398, "hashes": {"sha256": "K3BczEGDXjS+iMevoXY3eF3bKtDN6o0UPX/uGaA+BSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SHQ53OOhBPTo7G2q+HwIzUWivnXulfB7cyP0j9JEjxvbX+KuD1Lf6nNgc6PBp7b3vHzDtDCahUQMDems60uhDA"}}, "unsigned": {"age_ts": 1570041953398}}3 eQO$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "162", "stream_ordering": 1674}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q", "$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"body": "test2-0", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041953395, "hashes": {"sha256": "yGfa5LC529zo76HgVfzudg3Vn3sycIDCHkpMfagWdmk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7Km1g+nQtZQ334qDgGhGbs/elCwpVijbwlw9Rna4CvrwxXh7f3wQiJKCwoX7TndutNk3N/U5v1tyojUvOAqbBQ"}}, "unsigned": {"age_ts": 1570041953395}}3eQO$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "161", "stream_ordering": 1673}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qk", "$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"msgtype": "m.text", "body": "test1-3"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041952535, "hashes": {"sha256": "zij/Ds5BovnZaNb9ZNjNYVv/tiYV81IF2oJdG+T6UsE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n76qO9q/b1/eDeogyAPK3Ni4aE5l8y+3YMs3mjAKpNsaEwdqSCtCUUeEpz2OTKAFjIziYU4DwcoV0fsRpX3BDg"}}, "unsigned": {"age_ts": 1570041952535}} ]\ l  p * (=GM]&%e3Q ]$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgm.room.power_levels!JZouHBRxCRbcxYJnbn:localhost:8800mvmw@anon-20191002_181700-327:localhost:8800 $e'Q ]$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgm.room.member!JZouHBRxCRbcxYJnbn:localhost:8800msmtn@anon-20191002_181700-327:localhost:8800# e'Q  ]$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98m.room.create!JZouHBRxCRbcxYJnbn:localhost:8800mo~mq@anon-20191002_181700-327:localhost:8800!"e)Q ]$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYm.room.message!HOPyhZPcKkrvSmDIvX:localhost:8800mjZmj^@anon-20191002_181700-326:localhost:8800!!e)Q ]$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZkm.room.message!HOPyhZPcKkrvSmDIvX:localhost:8800mgCmg@anon-20191002_181700-326:localhost:8800, e?Q ]$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgm.room.history_visibility!HOPyhZPcKkrvSmDIvX:localhost:8800mbmd@anon-20191002_181700-326:localhost:8800$e/Q ]$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lkm.room.join_rules!HOPyhZPcKkrvSmDIvX:localhost:8800m]wm^@anon-20191002_181700-326:localhost:8800&e3Q ]$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jArom.room.power_levels!HOPyhZPcKkrvSmDIvX:localhost:8800mYm[R@anon-20191002_181700-326:localhost:8800 e'Q ]$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQm.room.member!HOPyhZPcKkrvSmDIvX:localhost:8800mVmW@anon-20191002_181700-326:localhost:8800 e'Q  ]$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88m.room.create!HOPyhZPcKkrvSmDIvX:localhost:8800mSmTG@anon-20191002_181700-326:localhost:8800 e'Q ]$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gm.room.member!EWkoFeckhXlNyjuIEB:localhost:8800mH8mI]@anon-20191002_181700-325:localhost:8800!e)Q ]$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYm.room.message!EWkoFeckhXlNyjuIEB:localhost:8800mB2mB:@anon-20191002_181700-324:localhost:8800,e?Q ]$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcm.room.history_visibility!EWkoFeckhXlNyjuIEB:localhost:8800m93m>@anon-20191002_181700-324:localhost:8800$e/Q ]$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8m.room.join_rules!EWkoFeckhXlNyjuIEB:localhost:8800m3/m4c@anon-20191002_181700-324:localhost:8800&e3Q ]$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCcm.room.power_levels!EWkoFeckhXlNyjuIEB:localhost:8800m-m/@anon-20191002_181700-324:localhost:8800 e'Q ]$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cm.room.member!EWkoFeckhXlNyjuIEB:localhost:8800m)m*@anon-20191002_181700-324:localhost:8800 e'Q  ]$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8m.room.create!EWkoFeckhXlNyjuIEB:localhost:8800m&m'F@anon-20191002_181700-324:localhost:8800 e'Q ]$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0m.room.member!utJsNQubeIXvcTKGpx:localhost:8800m|m@anon-20191002_181700-323:localhost:8800,e?Q ]$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIm.room.history_visibility!utJsNQubeIXvcTKGpx:localhost:8800mm@anon-20191002_181700-322:localhost:8800$e/Q ]$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHAm.room.join_rules!utJsNQubeIXvcTKGpx:localhost:8800mQm^@anon-20191002_181700-322:localhost:8800&e3Q ]$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQm.room.power_levels!utJsNQubeIXvcTKGpx:localhost:8800m|m@anon-20191002_181700-322:localhost:8800 e'Q ]$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4m.room.member!utJsNQubeIXvcTKGpx:localhost:8800mmy@anon-20191002_181700-322:localhost:8800 e'Q  ]$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4m.room.create!utJsNQubeIXvcTKGpx:localhost:8800m *m @anon-20191002_181700-322:localhost:8800 e'Q ] $F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mkm.room.member!iTQSCiLqRMDtgXtUdC:localhost:8800 m?m@anon-20191002_181700-321:localhost:8800  I>QveQay$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1680}{"auth_events": ["$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4"], "prev_events": ["$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4"], "type": "m.room.member", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-322", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-322:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041958174, "hashes": {"sha256": "/3Tvrf5QYy1ISl+2lmtBc+J7mEkv0yDeC4XOT9U83hY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rj8mHEE5KK42K3oOhuHHUEePh/oFEMmAldRPGdQXsqXfKfivgQ3M+5AVh9EG5ivGQC66uRq3vAc9rhFWLne/Dg"}}, "unsigned": {"age_ts": 1570041958174}}ieQa_$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1679}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-322:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041957418, "hashes": {"sha256": "Oh4N2vkGHVBl6svsABm1iG+/tWS8nRU5NDL+V9bpHtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FGNrKVm80YHUHytPsUyCwUUWSdMZ23I7IeUmthBOUc2kS+8IcJ1T5lGLdOrkDbqKyUTYJhTEYDpgBcGHJEpKCA"}}, "unsigned": {"age_ts": 1570041957418}} eQa$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 340, "stream_ordering": 1678}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8"], "prev_events": ["$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ", "$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ"], "type": "m.room.member", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-321:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-321", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-321:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041955391, "hashes": {"sha256": "/1ekvj4YWedNizdmn4/0v37whwE5DrXeAdxVQUjSZKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QaSKOA7IX4xba6heEysQgqq8oFek7YRcg1aWd5lEVMNJVNaRlrfJIUucf1033svcX9qdY9nAZsJTvxERg+LDCA"}}, "unsigned": {"age_ts": 1570041955391}}3 eQO$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ!iTQSCiLqRMDtgXtUdC:localhost:8800{"token_id": 339, "txn_id": "165", "stream_ordering": 1677}{"auth_events": ["$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4", "$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc", "$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU"], "prev_events": ["$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w", "$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI"], "type": "m.room.message", "room_id": "!iTQSCiLqRMDtgXtUdC:localhost:8800", "sender": "@anon-20191002_181700-320:localhost:8800", "content": {"msgtype": "m.text", "body": "test2-3"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041954604, "hashes": {"sha256": "EKOsjpxdj/4fBGIK8AVRLiUQe0LTIUoqwEm8qKXZnng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "//gjPcDMw8yHIiG23EGxmrEoqTyLritK/0g0xiayNdg88QI9qzhy/8Ht2UnT8Je81MOCYU6GkmMGJ7BneqtuDw"}}, "unsigned": {"age_ts": 1570041954604}} r9r  V :sW9rC e]]Q=$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw@anon-20191002_181700-341:localhost:8800@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800joinanon-20191002_181700-341C e]]Q=$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4@anon-20191002_181700-339:localhost:8800@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829joinanon-20191002_181700-339C e]]Q=$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4@anon-20191002_181700-340:localhost:8829@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829joinanon-20191002_181700-340E e]]Q=$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc@anon-20191002_181700-339:localhost:8800@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829inviteanon-20191002_181700-339C e]]Q=$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok@anon-20191002_181700-338:localhost:8800@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800joinanon-20191002_181700-338C e]]Q=$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw@anon-20191002_181700-337:localhost:8800@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800joinanon-20191002_181700-337C e]]Q=$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g@anon-20191002_181700-336:localhost:8800@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800joinanon-20191002_181700-336C e]]Q=$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8@anon-20191002_181700-333:localhost:8800@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800joinanon-20191002_181700-333C e]]Q=$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA@anon-20191002_181700-332:localhost:8800@anon-20191002_181700-332:localhost:8800!dDqNKNFdIjCAwnyaxp:localhost:8800joinanon-20191002_181700-332C e]]Q=$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw@anon-20191002_181700-331:localhost:8800@anon-20191002_181700-331:localhost:8800!kjueCKHmYaYefEEpQY:localhost:8800joinanon-20191002_181700-331C~ e]]Q=$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ@anon-20191002_181700-330:localhost:8800@anon-20191002_181700-330:localhost:8800!nftGLlLhVgzOwOFufp:localhost:8800joinanon-20191002_181700-330C} e]]Q=$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k@anon-20191002_181700-329:localhost:8800@anon-20191002_181700-329:localhost:8800!raCWVWQGnXbmkexpCN:localhost:8800joinanon-20191002_181700-329C| e]]Q=$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g@anon-20191002_181700-328:localhost:8800@anon-20191002_181700-328:localhost:8800!kwJgbtogEzCqYbUXfh:localhost:8800joinanon-20191002_181700-328C{ e]]Q=$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg@anon-20191002_181700-327:localhost:8800@anon-20191002_181700-327:localhost:8800!JZouHBRxCRbcxYJnbn:localhost:8800joinanon-20191002_181700-327Cz e]]Q=$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ@anon-20191002_181700-326:localhost:8800@anon-20191002_181700-326:localhost:8800!HOPyhZPcKkrvSmDIvX:localhost:8800joinanon-20191002_181700-326Cy e]]Q=$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g@anon-20191002_181700-325:localhost:8800@anon-20191002_181700-325:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800joinanon-20191002_181700-325Cx e]]Q=$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c@anon-20191002_181700-324:localhost:8800@anon-20191002_181700-324:localhost:8800!EWkoFeckhXlNyjuIEB:localhost:8800joinanon-20191002_181700-324Cw e]]Q=$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0@anon-20191002_181700-323:localhost:8800@anon-20191002_181700-323:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800joinanon-20191002_181700-323Cv e]]Q=$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4@anon-20191002_181700-322:localhost:8800@anon-20191002_181700-322:localhost:8800!utJsNQubeIXvcTKGpx:localhost:8800joinanon-20191002_181700-322Cu e]]Q=$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk@anon-20191002_181700-321:localhost:8800@anon-20191002_181700-321:localhost:8800!iTQSCiLqRMDtgXtUdC:localhost:8800joinanon-20191002_181700-321 jK&<H ~ P " j N Th:| <  V ( Z p  B \ ..vb4|N& vHjb4j\-]@anon-20191002_181700-434:localhost:8800-]@anon-20191002_181700-396:localhost:8800-]@anon-20191002_181700-390:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800+[@anon-20191002_181700-39:localhost:8800;+[@anon-20191002_181700-38:localhost:8800:-]@anon-20191002_181700-395:localhost:8800+[@anon-20191002_181700-36:localhost:88008+[@anon-20191002_181700-41:localhost:8800=+[@anon-20191002_181700-40:localhost:8800<+[@anon-20191002_181700-3a:localhost:8800-]@anon-20191002_181700-373:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:88004,-]@anon-20191002_181700-435:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-436:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800-]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-423:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-410:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-406:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-402:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:88009-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800B-]@anon-20191002_181700-437:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-376:localhost:8800 jK&<H ~ P " j N Th:| <  V ( Z p  B \ ..vb4|N& vHjb4j\-]@anon-20191002_181700-434:localhost:8800-]@anon-20191002_181700-396:localhost:8800-]@anon-20191002_181700-390:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800+[@anon-20191002_181700-39:localhost:8800;+[@anon-20191002_181700-38:localhost:8800:-]@anon-20191002_181700-395:localhost:8800+[@anon-20191002_181700-36:localhost:88008+[@anon-20191002_181700-41:localhost:8800=+[@anon-20191002_181700-40:localhost:8800<+[@anon-20191002_181700-3a:localhost:8800-]@anon-20191002_181700-373:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:88004,-]@anon-20191002_181700-435:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-436:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800-]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-423:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-410:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-406:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-402:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:88009-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800B-]@anon-20191002_181700-437:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-376:localhost:8800 %cr) 8 G V  Z  ^ bfjnr v"z&~*QGeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800QFeQ$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s!UaitDdkGDcwvRLJSvp:localhost:8800QEeQ$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o!dDqNKNFdIjCAwnyaxp:localhost:8800QDeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM!kjueCKHmYaYefEEpQY:localhost:8800QCeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng!kjueCKHmYaYefEEpQY:localhost:8800QBeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M!nftGLlLhVgzOwOFufp:localhost:8800QAeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0!raCWVWQGnXbmkexpCN:localhost:8800Q@eQ$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg!raCWVWQGnXbmkexpCN:localhost:8800Q?eQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800Q>eQ$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g!JZouHBRxCRbcxYJnbn:localhost:8800Q=eQ$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY!HOPyhZPcKkrvSmDIvX:localhost:8800Q<eQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800Q:eQ$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk!iTQSCiLqRMDtgXtUdC:localhost:8800Q9eQ$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ!UMFUOnYRvwKwSPkYHB:localhost:8800Q8eQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE!hZuwenlFDapIPBOyfi:localhost:8800Q7eQ$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc!LvARVIpJZeRQxbKefX:localhost:8800Q6eQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:8800Q5eQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:8800Q*eQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800Q'eQ$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y!beBXQofoOfxNBtzsut:localhost:8800QeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800QeQ$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk!HhYREfUiJTpjWmOuPF:localhost:8800QeQ$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w!nvclDopiBLEOKBIheH:localhost:8800QHeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800FOQ$157004188598DcHDt:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800QeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800QeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800FOQ$157004187190ZLRgN:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800QeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800FOQ$157004185983tEalY:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800Q eQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800F OQ$157004184976eGgUf:localhost:8800!icheSPMgpemswIdQkw:localhost:8800Q eQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800FOQ$157004183969fQFzs:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800QeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800FOQ$157004182060gAdxi:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800Q;eQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Ve$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oD1Ue$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cC1Te$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAB1Se$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUA1Re$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng@1Qe$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM@1Pe$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA@1Oe$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4@1Ne$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM@1Me$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc@1Le$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps@1Ke$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA@1Je$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc@1Ie$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk@1He$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I@1Ge$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M?1Fe$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI>1Ee$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw=1De$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o<1Ce$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M;1Be$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8;1Ae$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s:1@e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po91?e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ81>e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo71=e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz061<e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg61;e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk61:e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg619e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig618e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik617e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo616e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg615e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg614e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M613e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00612e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q611e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM610e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY51/e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas41.e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k31-e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ21,e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc11+e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc11*e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w11)e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M01(e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g/1'e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g.1&e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII-1%e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g,1$e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40,1#e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0+1"e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg*1!e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg)1 e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98(1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY'1e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk'1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg'1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk&1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro%1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$1e$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88#1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g"1e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc81e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1 e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41 e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4  eQa$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1696}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk"], "type": "m.room.history_visibility", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041979538, "hashes": {"sha256": "hwEFGM/ByKXWSF/3F3pDwns7Z1e0bRLX7yPEDQfRVRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nmfKAdvQPSBzzZw8RySUkLKc7+s3Kd/PNv4+0DMrxzT6Bgg7iIAHXlJGYdzY/hAejZVrlP1nUJYL8N5AtLUECw"}}, "unsigned": {"age_ts": 1570041979538}}teQau$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1695}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro"], "type": "m.room.join_rules", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041978231, "hashes": {"sha256": "VnmXunGWrZS31vuSCQ5+M8YTKJ769Ttz5m/LRH/E7O8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wOorQyvQCx/2VNoDFWirFJeSlFYnHewT5EzsgjY+wIshdoXv+y5LPcD8E6zXizW61uJudaGWvmwVthAU+0jrDw"}}, "unsigned": {"age_ts": 1570041978231}}keQac$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1694}{"auth_events": ["$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "type": "m.room.power_levels", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"users": {"@anon-20191002_181700-326:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041977247, "hashes": {"sha256": "F8CTmQ7Ftfiuv38YKWx+H20iCB/n+cQVe5bLll8Td40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OLBABRg8DEsZxK9G+odkEWunm6HEdoNsA6VZEpY9gMmIKHBqZoFQ6R0GlrLS+fJEuSiUerZ9ps0psFFqYWtKAg"}}, "unsigned": {"age_ts": 1570041977247}}veQay$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1693}{"auth_events": ["$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88"], "prev_events": ["$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88"], "type": "m.room.member", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-326", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-326:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041976468, "hashes": {"sha256": "c8Mf9x6cUHl+QyB0srL8y3kFeuyu5yO9tACqleK6X44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HMd3k49KXuVVHpI+apMRIeP8bWhV/XyipJsaG7m2fUFMbBrLLaXN5hoUMBzB27Dwagj8lhkxXYf/2Z9bId1DDA"}}, "unsigned": {"age_ts": 1570041976468}}  VeQa9$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 342, "stream_ordering": 1684}{"auth_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ", "$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA"], "prev_events": ["$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI"], "type": "m.room.member", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-323:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-323", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-323:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041962364, "hashes": {"sha256": "IOwy6009Lq7aWmBNz50Cih2EKP4cxlWny3J4baKdkMM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bo2q/3tqBL2gok0XFPR4xnR+ciF6rkVFkBGBADdE/BdxaW0xUD52jlJ28GDbV7eDq4o0IGcTZevSrkniYU5sAw"}}, "unsigned": {"age_ts": 1570041962364}}eQa$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1683}{"auth_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ", "$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "prev_events": ["$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA"], "type": "m.room.history_visibility", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041960720, "hashes": {"sha256": "WzkUkcwc5RGgBYMAWKpmCY7wJ528OaUTRpiQr1aaVvw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K5/AeB/7A68yqcEeSXwzXiZNuM6dnqiQCpMEJR2xPEcqG9mICVFZGFE/QO8L5YLZ15B52kCZAQ613qi9eYlEBg"}}, "unsigned": {"age_ts": 1570041960720}}teQau$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1682}{"auth_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ", "$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "prev_events": ["$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ"], "type": "m.room.join_rules", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041959761, "hashes": {"sha256": "oqJSmdoMlflTEeijd/GxriHQC99DVsfOF2R6f2rIWNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7+z/hRifuDs8jxGZgrsp4gEFIbgOyURrw6qt1gIMxj2CBJhmP4K67yUMQBJ9kgsTb7L+oUfUPqcifOwHg/gsCA"}}, "unsigned": {"age_ts": 1570041959761}}keQac$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800{"token_id": 341, "stream_ordering": 1681}{"auth_events": ["$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4", "$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "prev_events": ["$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4"], "type": "m.room.power_levels", "room_id": "!utJsNQubeIXvcTKGpx:localhost:8800", "sender": "@anon-20191002_181700-322:localhost:8800", "content": {"users": {"@anon-20191002_181700-322:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041958780, "hashes": {"sha256": "GSB5WX57MTVBdFCpLuYAPL9XP6cqgsKfy0utKeoEy18"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YkpwbRFkgaEw62VvorJP896Bqh/BpszAqWO2biHyjzLJfG0JdRVB1BwviHXUV7fsUg7UTxRYdK/PJKYBmWvTAA"}}, "unsigned": {"age_ts": 1570041958780}} 8 ] k U  ^ ! l \ i.LZ q 4[~n+d<Q3 !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_access yBQ? !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibility xRQ'E!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455 BQ? !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility :Q/ !sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rules <Q3 !sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels ^Q']!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800 6Q' !sAWFpvSUPExZLVcPEd:localhost:8800m.room.create :Q/ !sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rulesBQ? !sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibility6Q' !sJnuQYOyruhUpXDsLY:localhost:8800m.room.create<Q3 !sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.state<Q3 !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels=^Q']!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829@^Q']!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800<:Q/ !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rules>BQ? !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibility?6Q' !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create;<Q3 !rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels^Q']!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800:Q/ !rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rulesBQ? !rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibility6Q' !rwUuVBrftGHDBOlEZm:localhost:8800m.room.create<Q3 !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels^Q']!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829^Q']!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800:Q/ !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rulesBQ? !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibility<Q3 !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access6Q' !rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create<Q3 !raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels^Q']!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800:Q/ !raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rulesBQ? !raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibility6Q' !raCWVWQGnXbmkexpCN:localhost:8800m.room.create<Q3 !rZWweGEChkxxtzyfDB:localhost:8800m.room.power_levels]Q'[!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-65:localhost:8800]Q'[!rZWweGEChkxxtzyfDB:localhost:8800m.room.member@anon-20191002_181700-64:localhost:8800:Q/ !rZWweGEChkxxtzyfDB:localhost:8800m.room.join_rulesBQ? !rZWweGEChkxxtzyfDB:localhost:8800m.room.history_visibility6Q' !rZWweGEChkxxtzyfDB:localhost:8800m.room.create<Q3 !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels^Q']!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800:Q/ !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rulesBQ? !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility6Q' !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.create<Q3 !rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels4Q# !rWGwSSefrZzQYCYFHs:localhost:8800m.room.name^Q']!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800 z:Q/ !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rules w<Q3 !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels v^Q']!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800 u6Q' !sBcwyPoXKgnSGVTjNR:localhost:8800m.room.create tDQ))!sPWVGnipjiiWQpywNO:localhost:8800m.room.aliaseslocalhost:88006<Q3 !sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels^Q']!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800 a} { y w u sqomkigeca~0eeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~/eeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800~.eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800~-eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~,eeQ$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~+eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800~*eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~)eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800~(eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800~'eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~&eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800~%eeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800~$eeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~#eeQ$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800~"eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800~!eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~ eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800~eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4!utJsNQubeIXvcTKGpx:localhost:8800~eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800 ~z v r n j fb^ZVRNJFoeeQ$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800neeQ$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800meeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800leeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800keeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800jeeQ$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800ieeQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc!kwJgbtogEzCqYbUXfh:localhost:8800heeQ$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800geeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800feeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800eeeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800deeQ$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800ceeQ$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800beeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800aeeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800`eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800_eeQ$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800^eeQ$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800]eeQ$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800\eeQ$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk!HOPyhZPcKkrvSmDIvX:localhost:8800[eeQ$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro!HOPyhZPcKkrvSmDIvX:localhost:8800ZeeQ$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ!HOPyhZPcKkrvSmDIvX:localhost:8800YeeQ$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800XeeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800WeeQ$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800VeeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800UeeQ$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800TeeQ$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800SeeQ$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800ReeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800 ! 0 @ P ` p(8HXhxu ]@anon-20191002_181700-357:localhost:8800$2b$04$P5WZFPY1fxZrl8UgKsbcHeR0xEPkQeeBQ5BZRLXsuT0d4ep8HZ.ge]+u ]@anon-20191002_181700-358:localhost:8800$2b$04$bV3h7q/B3dbDuyycPwHfOeWnuB.b4vxgCIECnCFsJlQiTljUs7Ole]+u ]@anon-20191002_181700-356:localhost:8800$2b$04$f.mQxzWYzUY4kJvQqDM1De5AnXS6uSalScFc/dy9rYHwFFBtaveTa] u ]@anon-20191002_181700-354:localhost:8800$2b$04$KKAYqN8U89akp8lFaNjC5eKLD5wCsOPhgSW0CxrKSr6TTd9PiK.KO] u ]@anon-20191002_181700-355:localhost:8800$2b$04$5lEuo3cGzXDrWXdeSJIUY.iiH6GcixRjlqycA3CvEzEXOGOZTSFly]u ]@anon-20191002_181700-353:localhost:8800$2b$04$4tILlc4DVP0/gFJOpRjaQOiX0UV0o.lihaivIBGhyesBDv07qxDZ2]u ]@anon-20191002_181700-352:localhost:8800$2b$04$QJGK0L23UI3cO41eV.B0Z.11Im96BXwYPb917VhjQimpfMYiUeuVO]u ]@anon-20191002_181700-350:localhost:8800$2b$04$UKRgFWqmaNi0wS1uSLR44.ubh6tEmbG2Kxtu6v8vSe2Hc4j0FoUm6] u ]@anon-20191002_181700-351:localhost:8800$2b$04$fI5RSczPYU1b3ZCcdS6UVeikv15jKPGgKUM5jXFeCxctTrAhIYjxa] u ]@anon-20191002_181700-349:localhost:8800$2b$04$3acD3RzszMyMov/tvH2zxuXqtRHtXbgVCr33rGdOXVF2NguikIT5C]u ]@anon-20191002_181700-348:localhost:8800$2b$04$jRnHjfMnKCZB9zXtv5WM7urqNc4Q85iyjsO59hZzvUYODSLWL/DYe]u~ ]@anon-20191002_181700-346:localhost:8800$2b$04$znpHiQAXBeQ5dddjIXtfd.19u41no8NIJkiHnIxMcnScTrn8i07Ii]u} ]@anon-20191002_181700-347:localhost:8800$2b$04$X5I1BbRiWAMGTk2o1mcZmu96Gct0MCajg/7JtoXHv73oHny9PrP.a]u| ]@anon-20191002_181700-345:localhost:8800$2b$04$0CZsGw.L6x0vDBrBiKYeMOZqNSkS2.LFtUmXI97Vu3cleXOVcq0aO]u{ ]@anon-20191002_181700-343:localhost:8800$2b$04$qQIv8nHIqMudUnVHw4l/5eJluMqeA6EbYTQaUG3EGC8atNTRxqmT2]uz ]@anon-20191002_181700-342:localhost:8800$2b$04$yr2dSnvlNl0fr5kYsdsrPexOUquAOloDHpoE0L02NRUjDISTcX56G]uy ]@anon-20191002_181700-341:localhost:8800$2b$04$Zw.tU45r/.HTYuiO4EqGfO7kKMzuE4kxcJQYZvoaMxUY6Mcicg/kS]ux ]@anon-20191002_181700-339:localhost:8800$2b$04$6BbY2aBdDBfWzY1CDwq4QukltMPj4bGywpKXQRu6a7Fm2xrbchPfG]uw ]@anon-20191002_181700-338:localhost:8800$2b$04$bcnFp3xE3EJVyVvAgjWwUeBpKnANC.SHVseEBl6QTmk3h4gLVY6Ou]uv ]@anon-20191002_181700-337:localhost:8800$2b$04$YNPECxGnEriDl/tb2zjG8ueYY0CUj38cbtfuUBGNNtNRTHGFEN6oG]uu ]@anon-20191002_181700-336:localhost:8800$2b$04$WFLouD1gXqRPkneYOQJYx.SE/Ec2MSDcqqVqi20UsLNesFh7GIfqO]ut ]@anon-20191002_181700-335:localhost:8800$2b$04$BHC.uXiZXLpcS808aMCC.eW6rJ.E13OE4dW0EGFp3.zKTBcsbVJaa]us ]@anon-20191002_181700-334:localhost:8800$2b$04$.jXP09FaS1KxAd/RCDBa3eFnLDJvB3uGS4gIdmqF2Lky/SD/tJKku]ur ]@anon-20191002_181700-333:localhost:8800$2b$04$LKn5KNFEXkl2sDs2GRyAaOefbfZfF5u7V6Zo2bWe4IQLB4Zs42dCC]uq ]@anon-20191002_181700-332:localhost:8800$2b$04$WWpFVwECbIc3Fsp.BW9zludlZxOa4m8vvvbWwIgKqGSApRA6UBM.e]up ]@anon-20191002_181700-331:localhost:8800$2b$04$U7N4hji8RfwmO/84TVmyMu432kpHav8p/XvIAJM0bmlMuQbnThrwm]uo ]@anon-20191002_181700-330:localhost:8800$2b$04$kAGl3.OHwOr2CRN6VDDE0OXiuFr/6BVknoOwRH3TJwh6YehBXhB7C]un ]@anon-20191002_181700-329:localhost:8800$2b$04$cS8.nA0JVsZ6HiEv5V1N2.O2/hdM3EjgUXhM9kyrQ974M7lI1VYIy]um ]@anon-20191002_181700-328:localhost:8800$2b$04$xHBqT9H.7.7wL4FBI3LjeeG5DzagoaCo6DkkEqSoCwBBfypARhfnS]ul ]@anon-20191002_181700-327:localhost:8800$2b$04$CUSFsIr40Zr7ddBX2zh8ruY4LKil1mjcAqcXIB.yoFrTY/oJ6LNau]~uk ]@anon-20191002_181700-326:localhost:8800$2b$04$IpmqN4ikrh3WO1WLq40iKeL1F2mGIsjbRd0DQxiSvOelBbwJ2LQL.]vuj ]@anon-20191002_181700-325:localhost:8800$2b$04$s/ESQutWsATj115w0EMbse7SPDVECo8sRtlUtgHCY70YP79Q9PJoC]kui ]@anon-20191002_181700-324:localhost:8800$2b$04$IolMTHJpc22pgVdttPYNLefGN84KoPT75.mTtNb8rTRdj7mxlymMy]k   *teQau$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1688}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc"], "type": "m.room.join_rules", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041967407, "hashes": {"sha256": "+Y1QgqTXUp/w1lAo6kp7mCdCf3UBt6eP9l36AfDy/Vs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8kksYGVQDVDgtjzJq7Hr0eJyfQ6Ty07329wkCFpT2F/GkVfWxTf/QUrXe7V57iXF2pkThMIC+C8lpboi+pRKBw"}}, "unsigned": {"age_ts": 1570041967407}}keQac$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1687}{"auth_events": ["$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "type": "m.room.power_levels", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"users": {"@anon-20191002_181700-324:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041966071, "hashes": {"sha256": "OvHanAiKyTa5fsKqfTWak4DP2pjxoHSbnO2qV0t5zZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QkzNzGNNSZv/d4/Dyq+fPCen4DGCZG18tQQxAGqO6z2cUwXobaPw8zw428s0Sx20OOAMtP51/9giMgXzQ2rICA"}}, "unsigned": {"age_ts": 1570041966071}}veQay$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1686}{"auth_events": ["$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8"], "prev_events": ["$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8"], "type": "m.room.member", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-324", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-324:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041964959, "hashes": {"sha256": "gE2czwhD6NK0qJpgQRSvhXb+CGShR8WQf6S57pNS4T0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rULkH+Kpjy+bA2o1tZv91ZaMJqQ30UO6hveDuN2iFgZYrlYXcrt7t5HIALeIsQcKsmYKtSGbadoYIt3Gf0qlAw"}}, "unsigned": {"age_ts": 1570041964959}}ieQa_$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1685}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-324:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041964262, "hashes": {"sha256": "g7aWy1IZK8lTioQZu8CBJc69CCa+zfRW5fc5KJ003MY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/VVjxJ5w41yscBzz0ttodElN5rS6uF0L+AIkrkTSOvkuKi9xF6qDfl5wfV/8IFcGcB9T/vQw0DndtdZCBfpyCg"}}, "unsigned": {"age_ts": 1570041964262}} "q) 4 9 ] h +U}@EitgCQ/ e?!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rules$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MiBQ3 e>!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI AQ']e=!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwc@Q' eQ/ e:!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rules$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0si=Q3 e9!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po <Q']e8!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQc;Q' e7!nftGLlLhVgzOwOFufp:localhost:8800m.room.create$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqoo:Q? e6!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibility$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMg9Q/ e5!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rules$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYi8Q3 e4!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas 7Q']e3!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kc6Q' e2!raCWVWQGnXbmkexpCN:localhost:8800m.room.create$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQo5Q? e1!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibility$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wg4Q/ e0!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rules$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Mi3Q3 e/!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g 2Q']e.!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gc1Q' e-!kwJgbtogEzCqYbUXfh:localhost:8800m.room.create$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIo0Q? e,!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibility$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40g/Q/ e+!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rules$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0i.Q3 e*!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg -Q']e)!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgc,Q' e(!JZouHBRxCRbcxYJnbn:localhost:8800m.room.create$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98o+Q? e'!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgg*Q/ e&!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rules$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lki)Q3 e%!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro (Q']e$!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQc'Q' e#!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88 &Q']e"!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9go%Q? e!!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibility$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbcg$Q/ e !EWkoFeckhXlNyjuIEB:localhost:8800m.room.join_rules$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8i#Q3 e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.power_levels$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc "Q']e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-324:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c #KJsHwL! s H  u J # mB )Fq {D y No P % FoDu}q  w  u J # wT*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800!!*Q!aHyAJEOSdKqTiRjOvw:localhost:8800  *Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 & &*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + +*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * **Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) )*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( (*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' '*Q!ZaltdIYVZjCHsCWTZD:localhost:8800T*Q!aHyAJEOSdKqTiRjOvw:localhost:8800""*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800 9Ir; ! N }  g , z = Kx5<JOaNw@' 6Q' !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create ^Q']!PVy:Q/ !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rules BQ? !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibility 6Q' !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create <Q3 !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levelso^Q']!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800m:Q/ !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rulesqBQ? !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibilitys6Q' !QcaNrIiUsWpTiVGOnt:localhost:8800m.room.createl;Q3 !QZhNrNpwObZGJZpdAG:localhost:8800m.room.power_levels \Q'[!QZhNrNpwObZGJZpdAG:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800 9Q/ !QZhNrNpwObZGJZpdAG:localhost:8800m.room.join_rules AQ? !QZhNrNpwObZGJZpdAG:localhost:8800m.room.history_visibility ;Q3 !QZhNrNpwObZGJZpdAG:localhost:8800m.room.guest_access 5Q' !QZhNrNpwObZGJZpdAG:localhost:8800m.room.create<Q3 !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels ^Q']!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800 ^Q']!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800 :Q/ !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rules BQ? !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibility 6Q' !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create <Q3 !QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels^Q']!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800^Q']!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800:Q/ !QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rulesBQ? !QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibility6Q' !QMrkSPlQDGborAyWtQ:localhost:8800m.room.create<Q3 !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.power_levels^Q']!QFiJrWFFeTAAAUCjCE:localhost:8800m.room.member@anon-20191002_181700-296:localhost:8800:Q/ !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.join_rulesBQ? !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.history_visibility<Q3 !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.guest_access6Q' !QFiJrWFFeTAAAUCjCE:localhost:8800m.room.create<Q3 !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels ^Q']!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800 RQ'E!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455 :Q/ !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rules BQ? !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility 6Q' !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.create <Q3 !PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels L^Q']!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800 KRQ'E!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455 O:Q/ !PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules MBQ? !PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibility N6Q' !PgNDjhhIBAXKryuGKy:localhost:8800m.room.create J<Q3 !PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels^Q']!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829^Q']!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800:Q/ !PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rulesBQ? !PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility<Q3 !PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_access6Q' !PcvmCDeVUSyJbXpTig:localhost:8800m.room.create<Q3 !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels ^Q']!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800 :Q/ !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rules BQ? !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibility 6Q' !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create <Q3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels 8l D `8J]c!E@anon-20191002_181700-332:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-goTBDDBAQUGP127.0.0.1Perl + Net::Async::HTTP/0.44mI]c!E@anon-20191002_181700-331:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAoCOONNUXFOL127.0.0.1Perl + Net::Async::HTTP/0.44m$H]c!E@anon-20191002_181700-330:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwoTFGJMHITUL127.0.0.1Perl + Net::Async::HTTP/0.44mͺG]c!E@anon-20191002_181700-329:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgoKKMPVZBDLS127.0.0.1Perl + Net::Async::HTTP/0.44m˟eF]c!E@anon-20191002_181700-328:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgoDZKGSTQGUO127.0.0.1Perl + Net::Async::HTTP/0.44mˈ E]c!E@anon-20191002_181700-327:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0QoWQCLQHKZHC127.0.0.1Perl + Net::Async::HTTP/0.44mnԃD]c!E@anon-20191002_181700-326:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0AoYBIXYTHJYT127.0.0.1Perl + Net::Async::HTTP/0.44mPC]c!E@anon-20191002_181700-325:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggoCDWNGKHJGS127.0.0.1Perl + Net::Async::HTTP/0.44mHB]c!E@anon-20191002_181700-324:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAoKKATIXOBNF127.0.0.1Perl + Net::Async::HTTP/0.44m&A]c!E@anon-20191002_181700-323:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_RagoBHOVENVWZC127.0.0.1Perl + Net::Async::HTTP/0.44m  wieQa_$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "stream_ordering": 1692}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-326:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041975780, "hashes": {"sha256": "DgI37ZML5o/ZDp5vugiDtfY7r7yg8kIfj7DlFppVlhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FlrddhrKIa9o5EnYH5TVg69fxwP6Ljmcn5QIOYezo5U3CV4ZL7tKWiW/QZ/lWaRWFVM+52F5X4nIZh8Q7P/tDw"}}, "unsigned": {"age_ts": 1570041975780}}VeQa9$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 344, "stream_ordering": 1691}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8"], "prev_events": ["$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY"], "type": "m.room.member", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-325:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-325", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-325:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041972792, "hashes": {"sha256": "Nf/J4yzaiRvEz+KTRCTa5bqc/8a7ZSEHAlb4i2oEfbc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "boT+xmwUY3qcMda9EMpRv63ogVHGbzjqusXIgmaI+Aai/n3KeXYGxjBDpiTp3Dq7zUD/NFe4sLOBge/zVOFFCQ"}}, "unsigned": {"age_ts": 1570041972792}}AeQk$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "txn_id": "166", "stream_ordering": 1690}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc"], "type": "m.room.message", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"msgtype": "m.text", "body": "Wait for presence changes caused by the first sync to trickle through"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041971250, "hashes": {"sha256": "RU3pMNOce2PqnyMcfr9m9z8AIfwLpR08ZrEKPw+7oAA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cPIFKCo33pq/BjlH319PJr4PxsKBU546rEhel+qnqcRfouCf0vk9oGbVYlsftBT+QgWGpHERTArSsEVPOLE3Ag"}}, "unsigned": {"age_ts": 1570041971250}}eQa$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800{"token_id": 343, "stream_ordering": 1689}{"auth_events": ["$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc", "$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8", "$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c"], "prev_events": ["$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8"], "type": "m.room.history_visibility", "room_id": "!EWkoFeckhXlNyjuIEB:localhost:8800", "sender": "@anon-20191002_181700-324:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041968947, "hashes": {"sha256": "G3C5OkOmWuMqkXTsgcRf5ri7CVLUxGZnEg0Cttjuk2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fI+mF4ULQP3BOdBmjm0JCznw1kduTz57k73hKNn70MaiWnf3LTYNlOqhZgcgw3quXVMgGVJphEzl69/HLe/IBg"}}, "unsigned": {"age_ts": 1570041968947}} FUOU8p>  v D  | J  j Q  W % ] +c1i7o= uC{I[)1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk b1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ R1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc~1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw 1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Ek1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI %1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdkv1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdku1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdkt1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc~1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE 1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k j1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ l1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAS1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYZ1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU21e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck g1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 71e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 c1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs11e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoC1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E 1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ  "z . T W y  7@h&LOq z Q']e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAdQ' e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.create$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUpQ? e!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibility$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1IhQ/ e!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rules$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MjQ3 e!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI Q']e!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwdQ' e!kjueCKHmYaYefEEpQY:localhost:8800m.room.create$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8op~Q? e!nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibility$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8h}Q/ e!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rules$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0sj|Q3 e!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po {Q']e!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQdzQ' e!nftGLlLhVgzOwOFufp:localhost:8800m.room.create$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqopyQ? e!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibility$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMhxQ/ e!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rules$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYjwQ3 e!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas vQ']e!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kduQ' e!raCWVWQGnXbmkexpCN:localhost:8800m.room.create$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQptQ? e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibility$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9whsQ/ e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rules$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5MjrQ3 e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g qQ']e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gdpQ' e!kwJgbtogEzCqYbUXfh:localhost:8800m.room.create$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIpoQ? e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibility$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40hnQ/ e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rules$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0jmQ3 e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg lQ']e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgdkQ' e!JZouHBRxCRbcxYJnbn:localhost:8800m.room.create$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98pjQ? e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEghiQ/ e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rules$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-LkjhQ3 e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro gQ']e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQdfQ' e!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88 eQ']e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.member@anon-20191002_181700-325:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gpdQ? e!EWkoFeckhXlNyjuIEB:localhost:8800m.room.history_visibility$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc ,NC 8 - { " p  e ZOD9.|#qf VDeL$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8sha2561I=糪I?VٱCFRw2yzx@AVCeL$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0ssha256;-sJ#|=Gb1opKKOKVBeL$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_posha256]cK{| c%GBd&@VAeL$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQsha256L MB*?q;v92#/V@eL$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqosha256+N`YN9~T̋z>gAJV?eL$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0sha256>˾ Cn49g&NvOD=V>eL$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hgsha2565D?Ρ3=EeI͑LǐνuCxV=eL$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtksha256RԴrxU;$޼oג vV<eL$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgsha256aX,?Ɖ74njfO3,V;eL$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igsha2565ъURa&}IkE3T(V:eL$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Iksha256 ӕwDGPֲ.#ƖѠo摞V9eL$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZosha256KP{ʖBjV8eL$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgsha256yܘ$o!~ه4|ęk̷ :V7eL$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qgsha256ia̷ͽyYp^H*Hͨg (b]!LGMV4eL$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Qsha256X1w׶ #"**2 NV3eL$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMsha256<[n1-C3\Ib$鬷*s*CP#V2eL$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYsha256sVɍy}y%>gY 56Кފ1y&V1eL$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbassha256"kP )k `BPzmV0eL$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-ksha256}yνƀ )tZ@ZV/eL$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQsha256b x{׾AcSհD-V.eL$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcsha256$nfnjpG s!sV-eL$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcsha256nh[jAV:ssugV,eL$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wsha256i$Ueo%DIi"/V+eL$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Msha256^VN?1Ysc0pλ8VMSǓV*eL$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gsha256+`]%%/%:|~Ǝ^ÈV)eL$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gsha256ɡ#W@[Z'M\4'V(eL$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIsha256(͇Y﹌ml'V'eL$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gsha256&giN:W̋NaOr&Ta[CV&eL$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40sha256y:ጆ:ר_K=!>0‡V%eL$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0sha256aWl̟cVR{9t(V>]V$eL$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgsha256)B&-gFme֓|l{Β_8V#eL$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgsha256LlLP}g&+-8xV:%6V"eL$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98sha256Axg[1R -k}ڝX/V!eL$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYsha256%ke@L g*$&b˺ޗIV eL$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZksha25673#-hf( 9;^(0Vc4M 5VeL$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEgsha256ԯ,mvD?PA?HVeL$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lksha256MrWlX"W['ȚlVeL$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jArosha256h;,sk#v=5 oOVeL$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQsha2562Fwkߨ˲݄\DVeL$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88sha256Փ+9[sQfe[˄%VeL$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gsha256,J[gج[PT1FhVeL$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYsha256#a\3W𡔷m2/ɍc#O}1[& KIbBQ V $j8p+0>  t v D  \ * | J  ]h6n<W% P  1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo)1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4 1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie01e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo+1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo*1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo 1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo 1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo 1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQT1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQS1e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw1e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQr1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQq1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo 1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE#1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE"1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE!1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr41e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMq1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE 1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk 1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 !1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4 1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4 1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq781e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78 LW $ \ 4 n F ypH ~h@ V /  xP)a9 qI!Y1 iAQ)c<`8rOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800&Q!XgobMgBjNcDRJnRXLD:localhost:8800[&Q!XgobMgBjNcDRJnRXLD:localhost:8800Z&Q!XgobMgBjNcDRJnRXLD:localhost:8800Y&Q!XgobMgBjNcDRJnRXLD:localhost:8800X'Q!XcaKxZsPvbZhAGKKdx:localhost:8800'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800('Q!XNfwczePlyYFWLCaui:localhost:8800''Q!URpLZLuBfVcfHVTBGS:localhost:8800Y'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800v'Q!WpThtNEVhrUbUdCdMJ:localhost:8800u'Q!WpThtNEVhrUbUdCdMJ:localhost:8800t'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800\'Q!WhqVaRReBxJXADAyYD:localhost:8800['Q!WhLedNwPGGGTtqeqam:localhost:8800)'Q!WhLedNwPGGGTtqeqam:localhost:8800('Q!WhLedNwPGGGTtqeqam:localhost:8800''Q!WYyiQAVvitxsLZKVCG:localhost:8800<'Q!WYyiQAVvitxsLZKVCG:localhost:8800;'Q!WYyiQAVvitxsLZKVCG:localhost:8800:'Q!WWZVpyLeZfyfpWidLx:localhost:8800'Q!WWZVpyLeZfyfpWidLx:localhost:8800'Q!WWZVpyLeZfyfpWidLx:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800v'Q!VUibrTIkcRbfrogbQV:localhost:8800y'Q!VUibrTIkcRbfrogbQV:localhost:8800x'Q!VUibrTIkcRbfrogbQV:localhost:8800w 'Q!XiwGxQKwjgutEClKUy:localhost:8829&Q!XgobMgBjNcDRJnRXLD:localhost:8800\'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800I'Q!VOhMAiLfKyTOZbmKGw:localhost:8800H'Q!VCSCNemqikJZiRtxrs:localhost:8829&Q!VAEDgDJVqmxXZyAlSW:localhost:8800h&Q!VAEDgDJVqmxXZyAlSW:localhost:8800g'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800s'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:88003&Q!TleKOyAElrpgyyrAQA:localhost:88002'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800r'Q!VNdqhtoDkyMoQdMTtM:localhost:8800j'Q!WgXzOXLTeqaGfiDFhL:localhost:8800_'Q!URpLZLuBfVcfHVTBGS:localhost:8800['Q!URpLZLuBfVcfHVTBGS:localhost:8800Z'Q!YaLuQzmJKSMTSFEqjO:localhost:8800X'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YQATbgbLImCDamiDHC:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 'Q!XnUZiYJDWVNGfsBnGz:localhost:8800 'Q!XiwGxQKwjgutEClKUy:localhost:8829'Q!XiwGxQKwjgutEClKUy:localhost:8829 7L= V u$C +> J* {J1 P\ipj8  v D  c | P   V $ ]o1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA 1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8M1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg11e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS080e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA41e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0.1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsp1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0P1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0h1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ F1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 21e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA W1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 11e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wS1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegR1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I.1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg c1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA L1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssS1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo 80e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30E1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREC1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUl1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEW1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0(1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM 1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU]1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4;1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A41e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 21e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYi1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc 7L= V u$C +> J* {J1 P\ipj8  v D  c | P   V $ ]o1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA 1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8M1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg11e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS080e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA41e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0.1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsp1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0P1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0h1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ F1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 21e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA W1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 11e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wM1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegL1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I(1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg a1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA J1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssS1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo 80e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30E1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREC1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUl1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEW1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0(1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM 1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUW1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4;1e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A41e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 21e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYi1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc #,1 Y d " - [$PU}FQe:eQ/ $yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rulesg9eQ3 $pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels 8eQ']$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800joina7eQ' $8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800m.room.createm6eQ? $IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibilitye5eQ/ $rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rulesg4eQ3 $5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels 3eQ']$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800joina2eQ' $4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.createm1eQ? $_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibilitye0eQ/ $Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rulesg/eQ3 $_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels .eQ']$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800joina-eQ' $VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800m.room.createm,eQ? $MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibilitye+eQ/ $O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rulesg*eQ3 $ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels )eQ']$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800joina(eQ' $K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800m.room.createm'eQ? $PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800m.room.history_visibilitye&eQ/ $c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800m.room.join_rulesg%eQ3 $5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800m.room.power_levels $eQ']$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800m.room.member@anon-20191002_181700-329:localhost:8800joina#eQ' $Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800m.room.createm"eQ? $aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibilitye!eQ/ $yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rulesg eQ3 $3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels eQ']$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800joinaeQ' $GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800m.room.createmeQ? $n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800m.room.history_visibilityeeQ/ $4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800m.room.join_rulesgeQ3 $KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.power_levels eQ']$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800m.room.member@anon-20191002_181700-327:localhost:8800joinaeQ' $EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800m.room.createmeQ? $2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility } r}v#eQay$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1700}{"auth_events": ["$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98"], "prev_events": ["$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98"], "type": "m.room.member", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-327", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-327:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041983960, "hashes": {"sha256": "+73NBFv2Fd00k0bkQC7tYRcGsMaVsLDmo5zL6qOcGaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EhFp8ohk6RF+nJz1u15+um/vxJwLvFw5PytMEGAtSeuKOGdDwMn6iZPsuTY0vZfpU6uSLjUgi+wwm+DH6RzXAA"}}, "unsigned": {"age_ts": 1570041983960}}i"eQa_$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1699}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-327:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041982846, "hashes": {"sha256": "v9bbXhejZLOSMcAZORKKNfdAmFhJse+IWNXOh1J//Jw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rnadgrqMYtg4xyXED2hv6FVPALTIEr1q18l2R1GxeZB3EZXP2F9aPEnfkGiDUeJGHxMAJQ6IItuhv7oZyJ8HCA"}}, "unsigned": {"age_ts": 1570041982846}} !eQ}$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "txn_id": "168", "stream_ordering": 1698}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk"], "type": "m.room.message", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"body": "Test message 2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041981530, "hashes": {"sha256": "oMuUifZ/FxYnF+A7PFOeDXlL+DUgiMQVmPDgLleFuOI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SPpnYjalJ9Lf1C3IKKHktVYtcRM1bYM3S3VTNsWOPvCmusTyMYUaXvF3cUuik7IIupGjFYD2ypmIAJadlSMEAg"}}, "unsigned": {"age_ts": 1570041981530}} eQ}$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk!HOPyhZPcKkrvSmDIvX:localhost:8800{"token_id": 345, "txn_id": "167", "stream_ordering": 1697}{"auth_events": ["$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro", "$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88", "$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ"], "prev_events": ["$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg"], "type": "m.room.message", "room_id": "!HOPyhZPcKkrvSmDIvX:localhost:8800", "sender": "@anon-20191002_181700-326:localhost:8800", "content": {"body": "Test message 1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041980739, "hashes": {"sha256": "D14FxMz4LVjD9USeVNK8MABM5ljZ16pMRjVIcqRqKPc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FpkybXh5V5oUyJ9cAsrFlitBp5qTsE8CjhfrrI1CXhhhaKGlOxqrg0wQTzapwkqgGpARANQQX9rf5kjo3nvpBw"}}, "unsigned": {"age_ts": 1570041980739}}   *t_eQau$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1760}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ"], "type": "m.room.join_rules", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042034525, "hashes": {"sha256": "gWUUPDK5aY4IjTujiAb0F/nY19tYnBsdsfA+1orf1rs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "heBNSrnNsLFSgmjsRBcNtukAFOTrAHO7GHgCY3yKhEqwP77IXDai6M7I+URuYXkeupYp0y7X5txckEAjmTLbAg"}}, "unsigned": {"age_ts": 1570042034525}}k^eQac$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1759}{"auth_events": ["$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "type": "m.room.power_levels", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"users": {"@anon-20191002_181700-333:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042033752, "hashes": {"sha256": "dA7K3d/sJwVvblupqJ9ibXfSrLvuPG3nUobHQ9yRLzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+WWBXDPOzUKK3tR1xSrbkvetirotQBELcmNKL40JW4PyGee+sgDMYwtPHazpVibnD5EE/jX3DDjvEDcnWy6fBw"}}, "unsigned": {"age_ts": 1570042033752}}v]eQay$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1758}{"auth_events": ["$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI"], "prev_events": ["$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI"], "type": "m.room.member", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-333", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-333:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042033064, "hashes": {"sha256": "jr2WGyKELEQYdejYUgjdN3X8+xM3xRVvuh64ErbIkxk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xa9pJ3VhdZEC+l/dwhkrA56VNa0x3ByxXyJrGHXIE1QN6boVTEGECgKdtQqBmYl4y5zCRfoYZ1R8js+wAHnuCA"}}, "unsigned": {"age_ts": 1570042033064}}i\eQa_$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1757}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-333:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042032391, "hashes": {"sha256": "AM9A6iML0YlzOyUfr6K+otQAtaTAAR8mgmvu/Gsie0o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hObXGlc20CEUfy8gnNdT/UQKVoo4ZVh6OKXiLWUP3kZmyqZziTnl+v8R044YkMUWmSVh8Ha5u/TRykYbGuC9BA"}}, "unsigned": {"age_ts": 1570042032391}} C  T  q 8 8  T  q p 7  S p7S7p8Tp7SUpSr8e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswsha256 (8e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2osha2568e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQsha256 P8e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUcsha256 &8e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNksha256 8e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMsha256 8e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8sha256 ,8e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAsha2567e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCYsha2568e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVgsha2568e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVosha2568e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgsha2568e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNssha2568e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8sha256 8e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8sha2568e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8sha2568e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbEsha256`8e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4sha2568e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt0sha2568e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAsha256p8e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gwsha2568e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjssha2568e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4sha2567e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYsha256p8e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Aosha2568e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGosha2567e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4csha2568e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mMsha2568e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUsha2568e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeEsha2568e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4sha256 b8e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00sha2568e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLosha2567e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjYsha2568e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIsha2568e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vksha256i8e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0sha256i8e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgosha2568e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64sha256 e8e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQksha2568e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQsha256"8e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgsha256%8e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9osha2568e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVIsha2568e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvssha256 88e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEksha2568e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bssha2568e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0sha2568e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIsha25618e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEksha256(8e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4sha256}8e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4sha256w8e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMwsha25688e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMsha2567e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepwsha256(8e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngsha256C8e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQsha25698e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8sha2568e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0sha256 8e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNksha256 8e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9Asha256 8e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Esha2568e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYsha256 8e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQsha256 `8e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7osha256 X8e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Ysha256 8e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7Asha256 X8T)}R' { P % y N # w L ! u J  s H qFoDmBk@i>g<e:c8*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hFwigdYZkwYNSwelRH:localhost:8800 f *Q!hFwigdYZkwYNSwelRH:localhost:8800 Y *Q!hFwigdYZkwYNSwelRH:localhost:8800 X *Q!hFwigdYZkwYNSwelRH:localhost:8800 W *Q!hFwigdYZkwYNSwelRH:localhost:8800 V *Q!hFwigdYZkwYNSwelRH:localhost:8800 U *Q!hFwigdYZkwYNSwelRH:localhost:8800 T *Q!hFwigdYZkwYNSwelRH:localhost:8800 S *Q!hFwigdYZkwYNSwelRH:localhost:8800 R *Q!hDAzBWYEyRVBRlrCHh:localhost:8800=*Q!hDAzBWYEyRVBRlrCHh:localhost:8800<*Q!hDAzBWYEyRVBRlrCHh:localhost:8800;*Q!hDAzBWYEyRVBRlrCHh:localhost:8800:*Q!hDAzBWYEyRVBRlrCHh:localhost:88009*Q!hDAzBWYEyRVBRlrCHh:localhost:88008*Q!hDAzBWYEyRVBRlrCHh:localhost:8800 7*Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!fuHSJcznvGQnoYoLPW:localhost:8800.4*Q!fuHSJcznvGQnoYoLPW:localhost:8800-3*Q!fuHSJcznvGQnoYoLPW:localhost:8800,2*Q!fuHSJcznvGQnoYoLPW:localhost:8800+1*Q!fuHSJcznvGQnoYoLPW:localhost:8800*0*Q!fuHSJcznvGQnoYoLPW:localhost:8800)/*Q!fsbkkRBZlUcBVVfMME:localhost:8800>D*Q!fsbkkRBZlUcBVVfMME:localhost:8800=C*Q!fsbkkRBZlUcBVVfMME:localhost:8800<B*Q!fsbkkRBZlUcBVVfMME:localhost:8800;A*Q!fsbkkRBZlUcBVVfMME:localhost:8800:@*Q!fsbkkRBZlUcBVVfMME:localhost:88009?*Q!fkvdYkesQOFCAQkzky:localhost:8800 6*Q!fkvdYkesQOFCAQkzky:localhost:8800 5*Q!fkvdYkesQOFCAQkzky:localhost:8800 4*Q!fkvdYkesQOFCAQkzky:localhost:8800 3*Q!fkvdYkesQOFCAQkzky:localhost:88002*Q!fkvdYkesQOFCAQkzky:localhost:88001*Q!ffijTnPMbTrDXHqOXf:localhost:8800lr*Q!ffijTnPMbTrDXHqOXf:localhost:8800kq*Q!ffijTnPMbTrDXHqOXf:localhost:8800jp*Q!ffijTnPMbTrDXHqOXf:localhost:8800io*Q!ffijTnPMbTrDXHqOXf:localhost:8800hn*Q!ffijTnPMbTrDXHqOXf:localhost:8800gm*Q!ffijTnPMbTrDXHqOXf:localhost:8800fl*Q!ffijTnPMbTrDXHqOXf:localhost:8800ek*Q!ffijTnPMbTrDXHqOXf:localhost:8800dj*Q!ffijTnPMbTrDXHqOXf:localhost:8800ci*Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fdEymmlcUvjgshvVyl:localhost:8800 *Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fcdNYFWFyxmdpKAknc:localhost:8800*Q!fOJLpnbtgKNxxVDquX:localhost:8800ns*Q!fOJLpnbtgKNxxVDquX:localhost:8800mr*Q!fOJLpnbtgKNxxVDquX:localhost:8800lq*Q!fOJLpnbtgKNxxVDquX:localhost:8800kp*Q!fOJLpnbtgKNxxVDquX:localhost:8800jo*Q!fOJLpnbtgKNxxVDquX:localhost:8800in*Q!fOJLpnbtgKNxxVDquX:localhost:8800hm*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800*Q!fJXiUpbbOlLbHWmPgs:localhost:8800  'eQ}$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "txn_id": "my_transaction_id", "stream_ordering": 1704}{"auth_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg", "$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40"], "type": "m.room.message", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"body": "A test message", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041987444, "hashes": {"sha256": "OabbYqG1Raisiby1VFFKVVVSQCSzclKXIQF3I2ixIZ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "db78/YITF1IsZ8Y536maRJd26KTbxX62V87Uicaxbnouk+vUvNOElH4P8o/blUtFLjCgUFiGC69Yah0O4lwnDg"}}, "unsigned": {"age_ts": 1570041987444}}&eQa$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1703}{"auth_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg", "$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0"], "type": "m.room.history_visibility", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041986257, "hashes": {"sha256": "A8hYna0MlAvaoKD7sux3lcQbxW6XJbcNRiaLQfIGFng"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uiOS6GXKr5HQb/NL+X9QkVXmj3II7WwHnpf26ZU3MnC9lZmj8GSfUsYqZ7eE/KQ6/dECobujVy+R+p2rfN+ZDg"}}, "unsigned": {"age_ts": 1570041986257}}t%eQau$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1702}{"auth_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg", "$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg"], "type": "m.room.join_rules", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041985583, "hashes": {"sha256": "zBaVOafHi6q3Pq7S7MqkZGrCfC1ipi0zvlP2EfkbKfY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lGrqv9lhoxnN9uogC38c9kX01bgk7OkXThOKFrJDkHgC6FKsgZI/ZfmaDt1GzK/dUz7ApAr40WjTaBMiJbLgAQ"}}, "unsigned": {"age_ts": 1570041985583}}k$eQac$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800{"token_id": 346, "stream_ordering": 1701}{"auth_events": ["$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98", "$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "prev_events": ["$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg"], "type": "m.room.power_levels", "room_id": "!JZouHBRxCRbcxYJnbn:localhost:8800", "sender": "@anon-20191002_181700-327:localhost:8800", "content": {"users": {"@anon-20191002_181700-327:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041984717, "hashes": {"sha256": "BwUrjdu37hPOtBp1STdTlRS1vjazmy7s63LVYQMHokk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AXTO8qv7N7pgaq1ohgFOCejaEwZz3fPK6QnJqbf44Kv7wpTDbq/eM0IiQU5drhNPmhOPbDbGPVNS9yOoqjKADw"}}, "unsigned": {"age_ts": 1570041984717}} X a  k  t.,/+(<e7Q ] $jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6iga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˼xm˾4@anon-20191002_181700-329:localhost:8800(;e7Q ] $gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ika.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˻:m˼|@anon-20191002_181700-329:localhost:8800(:e7Q ] $lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoa.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˹m˺@anon-20191002_181700-329:localhost:8800(9e7Q ]$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˸Im˹@anon-20191002_181700-329:localhost:8800(8e7Q ]$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˶m˷l@anon-20191002_181700-329:localhost:8800(7e7Q ]$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4Ma.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˴m˵@anon-20191002_181700-329:localhost:8800(6e7Q ]$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00a.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800m˴m˴ @anon-20191002_181700-329:localhost:8800!5e)Q ]$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Qm.room.message!raCWVWQGnXbmkexpCN:localhost:8800m˱m˱@anon-20191002_181700-329:localhost:8800,4e?Q ]$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yMm.room.history_visibility!raCWVWQGnXbmkexpCN:localhost:8800mˬmˮ@anon-20191002_181700-329:localhost:8800$3e/Q ]$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSYm.room.join_rules!raCWVWQGnXbmkexpCN:localhost:8800m˩m˪@anon-20191002_181700-329:localhost:8800&2e3Q ]$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbasm.room.power_levels!raCWVWQGnXbmkexpCN:localhost:8800m˧+m˨)@anon-20191002_181700-329:localhost:8800 1e'Q ]$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-km.room.member!raCWVWQGnXbmkexpCN:localhost:8800mˤSmˤ@anon-20191002_181700-329:localhost:88000 e'Q  ]$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQm.room.create!raCWVWQGnXbmkexpCN:localhost:8800mˡmˡ@anon-20191002_181700-329:localhost:8800!/e)Q ]$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcm.room.message!kwJgbtogEzCqYbUXfh:localhost:8800m˛m˛@anon-20191002_181700-328:localhost:8800.e#Q ]$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcm.room.test!kwJgbtogEzCqYbUXfh:localhost:8800m˘m˘@anon-20191002_181700-328:localhost:8800,-e?Q ]$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wm.room.history_visibility!kwJgbtogEzCqYbUXfh:localhost:8800m˔!m˕@anon-20191002_181700-328:localhost:8800$,e/Q ]$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Mm.room.join_rules!kwJgbtogEzCqYbUXfh:localhost:8800mˑm˒Z@anon-20191002_181700-328:localhost:8800&+e3Q ]$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4gm.room.power_levels!kwJgbtogEzCqYbUXfh:localhost:8800mˎmˏ@anon-20191002_181700-328:localhost:8800 *e'Q ]$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gm.room.member!kwJgbtogEzCqYbUXfh:localhost:8800mˋmˍ@anon-20191002_181700-328:localhost:8800) e'Q  ]$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFIIm.room.create!kwJgbtogEzCqYbUXfh:localhost:8800mˈmˉ:@anon-20191002_181700-328:localhost:8800!(e)Q ]$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gm.room.message!JZouHBRxCRbcxYJnbn:localhost:8800mˁtmˁx@anon-20191002_181700-327:localhost:8800,'e?Q ]$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40m.room.history_visibility!JZouHBRxCRbcxYJnbn:localhost:8800m|m~@anon-20191002_181700-327:localhost:8800$&e/Q ]$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0m.room.join_rules!JZouHBRxCRbcxYJnbn:localhost:8800mz/mz@anon-20191002_181700-327:localhost:8800 a} { y w u sqomkigeca~OeeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800~NeeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~MeeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800~LeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800~KeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~JeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800~IeeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800~HeeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~GeeQ$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800~FeeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800~EeeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~DeeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800~CeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800~BeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~AeeQ$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800~@eeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800~?eeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~>eeQ$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800~=eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800~<eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~;eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800~:eeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800~9eeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~8eeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800~7eeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800~6eeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~5eeQ$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800~4eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800~3eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800~2eeQ$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800~1eeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800   *t+eQau$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1708}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g"], "type": "m.room.join_rules", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041991557, "hashes": {"sha256": "UPOZCCwNflN9sh1BfzCjajmf3H3a55IkY6ZS5iI7hSI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mdls60wka6G4KzOSBcY/mA0o/41UjqWVU+X88SNmBVu7X47R71wENqCQVbVVUrZwxO92toqIii6GRutXDb2aAg"}}, "unsigned": {"age_ts": 1570041991557}}k*eQac$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1707}{"auth_events": ["$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "type": "m.room.power_levels", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"users": {"@anon-20191002_181700-328:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041990842, "hashes": {"sha256": "iudijkmTHrueSyuMbJYk7cqoGYt6N9K+WOwV5tjfBvw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "26TiGdHEXIM+eqzZlCVUFysWiFbtjwQfPa9H+dlfC/wxr157Ku9O4iuRdiCub3bjYpkArXY1pj80YIRuPF4fBQ"}}, "unsigned": {"age_ts": 1570041990842}}v)eQay$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1706}{"auth_events": ["$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII"], "prev_events": ["$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII"], "type": "m.room.member", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-328", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-328:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041990121, "hashes": {"sha256": "lbdN9T1XB095vaQqShwjjATg6vYjtVKQMmCYX66/Yy8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OLk4AiHbjJmctwTY2djLH2Jq3euv2HYFleiWh4966dQdkOELMFYS7uke8Fnodlls7y+zLtg5uBPKXWGmAeOvDA"}}, "unsigned": {"age_ts": 1570041990121}}i(eQa_$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1705}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-328:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041989299, "hashes": {"sha256": "sgQD7CtMXffuvD+xJyMz7MRMZXZ7Zt9eaDP19IdebdE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/H+96UftAXT429npWRv4h0ukg71XXHKenPI8lOlPyzuAHzyAzjTsOEQxoe6cMo6TyS9+SjaXHSjRHdvxQOmnCA"}}, "unsigned": {"age_ts": 1570041989299}}  w +i/eQa_$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1712}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-329:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041995550, "hashes": {"sha256": "pVHJW2l1pg/BQRAOS6WG8XpemtDZA6EuOUq97SqqSvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OYIaFtcaLOGGZHaleE9iUcMBIyMdayBzbKEi6FFlrcl1FJChlR3N6F9HKeJQx2MpVaeHeA5hdUCTluQrp3DcCQ"}}, "unsigned": {"age_ts": 1570041995550}}.eQ}$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "txn_id": "my_transaction_id", "stream_ordering": 1711}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc"], "type": "m.room.message", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"msgtype": "m.text", "body": "A test message"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041994141, "hashes": {"sha256": "oj5HDPrmSmnd28AqElVv0dGbBKMmIrC4BWXr17GSF6k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KK5v2auzCJXwG/soIiI+gfTvJFve1AUhrKmH96B1CbV28oy6IZHwE9zpGjZ1VLhNYMf2IXqSAihm7nWv32kWCA"}}, "unsigned": {"age_ts": 1570041994141}}H-eQa$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1710}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w"], "type": "m.room.test", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041993423, "hashes": {"sha256": "dLAsVtGXLFOwTuupuF3khp5xYphZFX6DnCiu55uAwww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aPWg4OrQrv32CW00yf1TxcmJUnTPO3u1z+vFTlgInG92K5ewjShNa9ZkRI4Fa57zRRNPJrpPnojBvfA8e4w9CA"}}, "unsigned": {"age_ts": 1570041993423}},eQa$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800{"token_id": 347, "stream_ordering": 1709}{"auth_events": ["$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g", "$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII", "$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g"], "prev_events": ["$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M"], "type": "m.room.history_visibility", "room_id": "!kwJgbtogEzCqYbUXfh:localhost:8800", "sender": "@anon-20191002_181700-328:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041992225, "hashes": {"sha256": "Ow0XsxHisi/Z11ShxD4MeYIVw8FgjDC5RIzrWrcpyTY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MBZClOp9oTuT4K5XaPha+t4N2VWFsthoq+QsYBIh/yx7AGSd9wGRUvoBdeQ+UxMVCmtffYN8u+wnAOxfzpq3AA"}}, "unsigned": {"age_ts": 1570041992225}}  4 h 9mfd]c@anon-20191002_181700-352:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAo127.0.0.1]d]c@anon-20191002_181700-351:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgo127.0.0.1[d]c@anon-20191002_181700-350:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwo127.0.0.1Za[a@anon-20191002_181700-34:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbytneGVQfmphMHc6cHVHagowMDJmc2lnbmF0dXJlIE0vVJue3y02yUh9xSvl6oSC_tOlqbPLhXbJb_Hld-SmCg127.0.0.1d]c@anon-20191002_181700-349:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3Grbcgo127.0.0.1Yd]c@anon-20191002_181700-348:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwo127.0.0.1Xd]c@anon-20191002_181700-347:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQo127.0.0.1Wd]c@anon-20191002_181700-346:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgo127.0.0.1Vd]c@anon-20191002_181700-345:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgo127.0.0.1Ud]c@anon-20191002_181700-343:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQo127.0.0.1T  3eQa$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1716}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY"], "type": "m.room.history_visibility", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041998475, "hashes": {"sha256": "RkjMMrtfe1oCLxeexMYj10t1MsS+6WuQHYuJUVFbeCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i/BZkYsg4X+bxCsl7oXsSanFgIhY97AHrcb5zbpUQq8cWvpDZne+xn+aX/OL4TBkokhNulBGBQ0tacVqaPhhDg"}}, "unsigned": {"age_ts": 1570041998475}}t2eQau$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1715}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas"], "type": "m.room.join_rules", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041997774, "hashes": {"sha256": "QgobCRrb9wIMYCutQ66MNM0rmHmyou9RL+isRPHAjRE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DqT5RDJ4SyZbuYZDjGYlS5Yg8GhQOrrF7HBCM5vGxbWvQv/pdY265FRXss53TmZIEH6075tFdyMYaYMebouqAw"}}, "unsigned": {"age_ts": 1570041997774}}k1eQac$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1714}{"auth_events": ["$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "type": "m.room.power_levels", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"users": {"@anon-20191002_181700-329:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570041997099, "hashes": {"sha256": "OYfksItfHX7DMnsNYxMrd6WhXhXUAm0xpBI3/Q2VVjY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h9ZQaR7rZyp4NEH/FVMxSAkuybdunlrdvHauimJ/CMtRaHEP/w7Gl4iJQb641kDYADzJG/U/9aBl4awj3vafAQ"}}, "unsigned": {"age_ts": 1570041997099}}v0eQay$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "stream_ordering": 1713}{"auth_events": ["$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ"], "prev_events": ["$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ"], "type": "m.room.member", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-329", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-329:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570041996371, "hashes": {"sha256": "SeEhq4cyv8IK8/luFaifdpBdHO8UyceNgz+LnJopRAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f5Ypg4hmdCIW3dsaH6KIM8DyH+9YjcCXJV1MQMGMITUSHqXkDTzpYh3peOstnJfbU38GzTWmBPchC8HajO48DQ"}}, "unsigned": {"age_ts": 1570041996371}}  wuiceQa_$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1764}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-336:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042041342, "hashes": {"sha256": "EkR5N5djKCFdJ/401ImKMBY8sBpjfHoHXvcugj7PhPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kDVLTumlj3hkQyDbCynblrKZm35jWhpLSQiZ7IQl3ZMSpUGjKwWXW+Qg0ejhZm8fDoXhlHYIDRKuGQ8G/4MhCQ"}}, "unsigned": {"age_ts": 1570042041342}}}beQc$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "txn_id": "195", "stream_ordering": 1763}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y"], "type": "m.room.message", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"body": "2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042038075, "hashes": {"sha256": "AydnLgM6+OaqHM/aHYGSAc9JXG7DrkFzzdwDoJVpElg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "US4qmum9rCaYJsZTpSp+wKIcEL1cb0EpB5TMMdUDtdBGuPDQcflSW1Zntx8dbCz3zrNmsjJXhmoKWsXRhUG9Bg"}}, "unsigned": {"age_ts": 1570042038075}}}aeQc$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "txn_id": "194", "stream_ordering": 1762}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg"], "type": "m.room.message", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042037235, "hashes": {"sha256": "LPZcRcWzrpCM4FJniF0LpwM7XI/OhQ057P9qQudkvCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3ur9aIhhpm3UKaUBPeAYAMUm7VESXIiFsbK5dDC4hOaLpA2Xk6FE1ufoA+3DncA0prr0uHmnGGCOZuKk5rz0DA"}}, "unsigned": {"age_ts": 1570042037235}}`eQa$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800{"token_id": 352, "stream_ordering": 1761}{"auth_events": ["$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ", "$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI", "$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8"], "prev_events": ["$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA"], "type": "m.room.history_visibility", "room_id": "!UaitDdkGDcwvRLJSvp:localhost:8800", "sender": "@anon-20191002_181700-333:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042035168, "hashes": {"sha256": "dRcdVRDUwlWHNqhQMulECeQLIiMOM8ezngHwiS+5Mro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pG6qF4P52Yc7jjDOAHYj3xNwvBn72U1u72HH1cc/dHv9GFJj449TwVc5+jIIst/93bXlDWd1l0fQpR3K9UxcAg"}}, "unsigned": {"age_ts": 1570042035168}} -RM H C > 9 4/*|%w rmhc TlQe!kjueCKHmYaYefEEpQY:localhost:8800$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanATkQe!kjueCKHmYaYefEEpQY:localhost:8800$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4TjQe!kjueCKHmYaYefEEpQY:localhost:8800$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMTiQe!kjueCKHmYaYefEEpQY:localhost:8800$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMThQe!kjueCKHmYaYefEEpQY:localhost:8800$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0psTgQe!kjueCKHmYaYefEEpQY:localhost:8800$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXcTfQe!kjueCKHmYaYefEEpQY:localhost:8800$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0psTeQe!kjueCKHmYaYefEEpQY:localhost:8800$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAATdQe!kjueCKHmYaYefEEpQY:localhost:8800$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAATcQe!kjueCKHmYaYefEEpQY:localhost:8800$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOcTbQe!kjueCKHmYaYefEEpQY:localhost:8800$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBkTaQe!kjueCKHmYaYefEEpQY:localhost:8800$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1IT`Qe!kjueCKHmYaYefEEpQY:localhost:8800$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MT_Qe!kjueCKHmYaYefEEpQY:localhost:8800$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIT^Qe!kjueCKHmYaYefEEpQY:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwT]Qe!kjueCKHmYaYefEEpQY:localhost:8800$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8oT\Qe!nftGLlLhVgzOwOFufp:localhost:8800$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-MT[Qe!nftGLlLhVgzOwOFufp:localhost:8800$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8TZQe!nftGLlLhVgzOwOFufp:localhost:8800$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0sTYQe!nftGLlLhVgzOwOFufp:localhost:8800$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_poTXQe!nftGLlLhVgzOwOFufp:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQTWQe!nftGLlLhVgzOwOFufp:localhost:8800$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqoTVQe!raCWVWQGnXbmkexpCN:localhost:8800$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0TUQe!raCWVWQGnXbmkexpCN:localhost:8800$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0HgTTQe!raCWVWQGnXbmkexpCN:localhost:8800$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtkTSQe!raCWVWQGnXbmkexpCN:localhost:8800$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0HgTRQe!raCWVWQGnXbmkexpCN:localhost:8800$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgTQQe!raCWVWQGnXbmkexpCN:localhost:8800$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtkTPQe!raCWVWQGnXbmkexpCN:localhost:8800$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAgTOQe!raCWVWQGnXbmkexpCN:localhost:8800$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igTNQe!raCWVWQGnXbmkexpCN:localhost:8800$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9IkTMQe!raCWVWQGnXbmkexpCN:localhost:8800$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igTLQe!raCWVWQGnXbmkexpCN:localhost:8800$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9IkTKQe!raCWVWQGnXbmkexpCN:localhost:8800$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoTJQe!raCWVWQGnXbmkexpCN:localhost:8800$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZoTIQe!raCWVWQGnXbmkexpCN:localhost:8800$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgTHQe!raCWVWQGnXbmkexpCN:localhost:8800$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgTGQe!raCWVWQGnXbmkexpCN:localhost:8800$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6QgTFQe!raCWVWQGnXbmkexpCN:localhost:8800$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4MTEQe!raCWVWQGnXbmkexpCN:localhost:8800$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6QgTDQe!raCWVWQGnXbmkexpCN:localhost:8800$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4MTCQe!raCWVWQGnXbmkexpCN:localhost:8800$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00TBQe!raCWVWQGnXbmkexpCN:localhost:8800$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00TAQe!raCWVWQGnXbmkexpCN:localhost:8800$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6QT@Qe!raCWVWQGnXbmkexpCN:localhost:8800$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM  v o7eQG$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "172", "stream_ordering": 1720}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 3}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042001116, "hashes": {"sha256": "5K0Js78zBWWopRZ9maeWha2MXQ8DVfrrRjBAo1ppu58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DVXlfcdLId30gYfPW0c3KZ+hT4NZt/Uq52E0dIivaJ07UpgRZvMdGi7LnYuBiaPu2e2uUypSz9lVJne4WLQ6Bg"}}, "unsigned": {"age_ts": 1570042001116}}o6eQG$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "171", "stream_ordering": 1719}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 2}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042000392, "hashes": {"sha256": "RziDINJ8cTVmlpJG7o35fV5WjlO6PxPNmrtIeMKPmDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8wwgU8Eq7TJDeX0t4cgD7W4rPIcZ+W542gZMKoOyeHggKC8bnMDM8VggaRLrZLZ193aXoKHVTKgQVO73glY7Aw"}}, "unsigned": {"age_ts": 1570042000392}}o5eQG$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "170", "stream_ordering": 1718}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 1}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042000389, "hashes": {"sha256": "5lQ4G/QTyxdLsyKEYoO7LL+yu9cClbpzRUpsZDCbybg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3ZzhqNOn9sGpVdZUmROK/MRqVbtBjQ37Da32g2ULD/2gNWaO832qN2wUX1erTsoyrk65q8X/ubfWPyHy0/nXCQ"}}, "unsigned": {"age_ts": 1570042000389}}4eQu$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "169", "stream_ordering": 1717}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM"], "type": "m.room.message", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"body": "My message", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570041999638, "hashes": {"sha256": "wQ5fbWzrwVktUHPsYLnbNBaxEdz664/rN6Qsn1NXFiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j/2RixOZC4yaeGtnWoINDGBblnf0GZ8iwb5QK3dsSP3yxEVmD4X6DJzINmE7wBWNK4/WCVVED9TGweQ/DsljBQ"}}, "unsigned": {"age_ts": 1570041999638}} ~z v r n j fb^ZVRNJF eeQ$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800eeQ$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800eeQ$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800eeQ$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800eeQ$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800eeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800eeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800eeQ$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk!raCWVWQGnXbmkexpCN:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800~eeQ$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800}eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800|eeQ$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800{eeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800zeeQ$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800yeeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800xeeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800weeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800veeQ$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800ueeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800teeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800seeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800reeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800qeeQ$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800peeQ$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800 s ]s ;eQ)$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "176", "stream_ordering": 1724}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg", "$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 7}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042002552, "hashes": {"sha256": "83r2G3kDD8NMlOrjJQJbjfTs5lNZSGtify54LyEO6q0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T3g61MY3YzRrzzu1XXVXQTQyg84WZhP0neMswlyEP5GaibjpzClYoE+gYXkz3dDoobWn/I02meDgoY6kwTyTBw"}}, "unsigned": {"age_ts": 1570042002552}}:eQ'$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "175", "stream_ordering": 1723}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg", "$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 6}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042002234, "hashes": {"sha256": "AnFGV8P+QNIm4xwkl3Zm5PXby7bBXMYm6vwb+tDAJ5M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XvT4ZfvS36j0hnui+nMtp+zVd2VDngknZdaTeIOZz/wT/T9Uoe7geOqFe9WXrpzqBpdeLhwO4wUZCs7gci5IBw"}}, "unsigned": {"age_ts": 1570042002234}}9eQ'$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "174", "stream_ordering": 1722}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M", "$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 5}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042001905, "hashes": {"sha256": "VmncAgS+B5tCiRY0eTV6F/Ch08bz0y9gjBfJMLdWlwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N3e+O723iP5iLICc4Jaos6IEB8IfBnHZUacgpNMeLsYYB2LIfoyKCPccn/QrxrOFHNw6NBg3XllSUdeUmR+3AA"}}, "unsigned": {"age_ts": 1570042001905}}8eQ'$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "173", "stream_ordering": 1721}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00", "$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 4}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042001481, "hashes": {"sha256": "6ATYnJxLRaWiwp1b1+iKaF40k2YSv/G04t5ysOZYdss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cqcwCuXYYkq++rqKFSto1UPyt9I+hdAmPeGq04RoI3trNtxTucde6VRQWSrtsspX5aM1WiDivFHwFyqC0B/zCw"}}, "unsigned": {"age_ts": 1570042001481}} n \n!?eQ+$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "180", "stream_ordering": 1728}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg", "$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 11}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042004963, "hashes": {"sha256": "Lf3Drfw6k+zbCe3UDxAXpv9Z3n6FlXvxRh/AQy6LKsA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LMsSV3Neb7nJ6Owmpqcu2GSeAWoU/VQiHREHWpSSCQha15vj/gfdYjVoxpgKGt79HA/Mb7xpr3VBnvIP5kCRCQ"}}, "unsigned": {"age_ts": 1570042004963}}!>eQ+$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "179", "stream_ordering": 1727}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig", "$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 10}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042004520, "hashes": {"sha256": "sXdZ0xGmjMcwPbPmo7Qo+GnqPU7tOd9Jo+gLBGDc5+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cifCNlz1vl4yjqem+CJbSfn9N0RPmoxAXUrhjbMypEHV9s2hnM864K5FTe+ohSniyuj8PvVMLQfKxd16XFt3Bw"}}, "unsigned": {"age_ts": 1570042004520}} =eQ)$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "178", "stream_ordering": 1726}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik", "$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 9}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042003734, "hashes": {"sha256": "fxAbE+NL9p3+n3MLufp5bvvp5mQ4JIK2sctU5z3SPlE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8sgrjxLtOQo/2aZqthtQg/FarqcYzyNW5j0/LB9ThtStULhyDKJN7xKVHVoG0phz02aQxflMqyefDSNROaDnDQ"}}, "unsigned": {"age_ts": 1570042003734}} <eQ)$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800{"token_id": 348, "txn_id": "177", "stream_ordering": 1725}{"auth_events": ["$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas", "$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ", "$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k"], "prev_events": ["$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo", "$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik"], "type": "a.made.up.filler.type", "room_id": "!raCWVWQGnXbmkexpCN:localhost:8800", "sender": "@anon-20191002_181700-329:localhost:8800", "content": {"filler": 8}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042003147, "hashes": {"sha256": "4fUhCBtzWgB6FOtqECogmjKJOf5xSC75aSkCHdlDEXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ff/MmQqTH5whxZbRMzzr4YRtBM2mtx5Hd5fEDBZXIuMKnxVv78Qs4+yitWB28A7SBK6O3DGbqjTNdwNgn3QVCw"}}, "unsigned": {"age_ts": 1570042003147}} T P `  f v|$x t(Se7Q ] $slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanAa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 m lm B@anon-20191002_181700-331:localhost:8800(Re7Q ] $86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4a.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 mm @anon-20191002_181700-331:localhost:8800(Qe7Q ] $2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 mm@anon-20191002_181700-331:localhost:8800(Pe7Q ] $XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXca.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 m=m@@anon-20191002_181700-331:localhost:8800(Oe7Q ]$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0psa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800mm@anon-20191002_181700-331:localhost:8800(Ne7Q ]$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAAa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800mm@anon-20191002_181700-331:localhost:8800(Me7Q ]$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOca.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800mGmK@anon-20191002_181700-331:localhost:8800Le#Q ]$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBkm.room.test!kjueCKHmYaYefEEpQY:localhost:8800m m)@anon-20191002_181700-331:localhost:8800,Ke?Q ]$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1Im.room.history_visibility!kjueCKHmYaYefEEpQY:localhost:8800mDmB@anon-20191002_181700-331:localhost:8800$Je/Q ]$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5Mm.room.join_rules!kjueCKHmYaYefEEpQY:localhost:8800mmh@anon-20191002_181700-331:localhost:8800&Ie3Q ]$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIm.room.power_levels!kjueCKHmYaYefEEpQY:localhost:8800mImm@anon-20191002_181700-331:localhost:8800 He'Q ]$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwm.room.member!kjueCKHmYaYefEEpQY:localhost:8800m m@anon-20191002_181700-331:localhost:8800G e'Q  ]$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8om.room.create!kjueCKHmYaYefEEpQY:localhost:8800mMm@anon-20191002_181700-331:localhost:8800Fe#Q ]$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-Mm.room.test!nftGLlLhVgzOwOFufp:localhost:8800m+m1@anon-20191002_181700-330:localhost:8800,Ee?Q ]$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8m.room.history_visibility!nftGLlLhVgzOwOFufp:localhost:8800mmލ@anon-20191002_181700-330:localhost:8800$De/Q ]$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0sm.room.join_rules!nftGLlLhVgzOwOFufp:localhost:8800mXmT@anon-20191002_181700-330:localhost:8800&Ce3Q ]$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_pom.room.power_levels!nftGLlLhVgzOwOFufp:localhost:8800mm@anon-20191002_181700-330:localhost:8800 Be'Q ]$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQm.room.member!nftGLlLhVgzOwOFufp:localhost:8800mmҋ@anon-20191002_181700-330:localhost:8800A e'Q  ]$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqom.room.create!nftGLlLhVgzOwOFufp:localhost:8800mm1@anon-20191002_181700-330:localhost:8800(@e7Q ] $Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0a.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 mm%@anon-20191002_181700-329:localhost:8800(?e7Q ] $NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m(m@anon-20191002_181700-329:localhost:8800(>e7Q ] $oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtka.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 mm‘@anon-20191002_181700-329:localhost:8800(=e7Q ] $nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAga.made.up.filler.type!raCWVWQGnXbmkexpCN:localhost:8800 m˾m@anon-20191002_181700-329:localhost:8800 W w L !sT J  s H)}R' { P % HFoD  uqmBoDqHuJF y Nq!uPxXJHJ*Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!uqIEMXzdeNeXdJmuwh:localhost:8800  *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ ~*Q!ubmTdQFAhrhZkGULDx:localhost:8800  *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vAUAIZrCnHTeMGeNuw:localhost:8800gg*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ff*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ee*Q!vAUAIZrCnHTeMGeNuw:localhost:8800dd*Q!vAUAIZrCnHTeMGeNuw:localhost:8800cc*Q!vAUAIZrCnHTeMGeNuw:localhost:8800bb(Q!uxKymrHZeXRYCZwekU:localhost:8800CC(Q!uxKymrHZeXRYCZwekU:localhost:8800BB(Q!uxKymrHZeXRYCZwekU:localhost:8800AA(Q!uxKymrHZeXRYCZwekU:localhost:8800@@(Q!uxKymrHZeXRYCZwekU:localhost:8800??*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800 *Q!uqIEMXzdeNeXdJmuwh:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 } }*Q!ubmTdQFAhrhZkGULDx:localhost:8800 | |*Q!uSBqTezaFcMnlowsEf:localhost:8800  *Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZVeDprLHgqVVN0SGVZbXcKMDAyZnNpZ25hdHVyZSBCmc_hJUS5xldcB5HFhh9skTIOPP799dMF7YZ1cyEtggoO1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJTPTZsUjRzWFhfOk4yPUAKMDAyZnNpZ25hdHVyZSCJGTmBsvXl80JwF0rFWeHIYL43q-Dez0MIR48m_mD5YAoN1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEMxejZZK2x4OnVkVXdjRG4KMDAyZnNpZ25hdHVyZSAQKH_2JONdULw9e5aGP-DbetadX-CEZdrsRvHPED_RagoM1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0wXkJoNjlKczlWNCowcksKMDAyZnNpZ25hdHVyZSANgd5KjxG0S5hjyAg3gZPPtQmmP1bA6XlD2PSw2cZCYwoL1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA6M0tQQVF4UXYqfmR5dj0KMDAyZnNpZ25hdHVyZSD1aeZKrI3hmLR73w1MEMNWlQTOANRajwbPpgu7j0C7QwoK1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRYa0VLYlRGcUVnS0ZTNCsKMDAyZnNpZ25hdHVyZSBTPUUa86p42W0Qcz_y_6TzvXOwQwA-XnXb7FMJIcwskgoJ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEN1KlE4cmt4ZHdeayYqRmIKMDAyZnNpZ25hdHVyZSCDi7ywkZTQz5JXqqEFhHe9nQqcZgcfJJGXdwiFuFZ9tgoI1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZBdS1JMzlyTnpTTGRPLXYKMDAyZnNpZ25hdHVyZSBvMmrKk_3Roe41b30Et_gngRTIDhaDaqDSooyIR4P6PAoH1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGp5X3ZqYWUwO1lSMVZfPWIKMDAyZnNpZ25hdHVyZSBXnyRWT7c5jVRFSAP8yBUFVPMpHFHO6Jh3lAfIH2WdGAoG1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ6eG4uLmo4eW94QlROanoKMDAyZnNpZ25hdHVyZSBbUWn8_gv5bniC91yO-BYhfQYBVRKyv5j5MVVtMP_JLwoF1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEktc1A6I2xTMH5pbitmUy0KMDAyZnNpZ25hdHVyZSAHdPEVl-Zg5xmbVysqfNP8UeNclE06lAUk2sezF9wAlAoE1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDc4UmlwQ2g1OHNKcUkzVVAKMDAyZnNpZ25hdHVyZSAdNspZQ479GxtCNd_qDY7ARZWMjLUH92hEAKKLsgL4DQoD   *tCeQau$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1732}{"auth_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po", "$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po"], "type": "m.room.join_rules", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042009944, "hashes": {"sha256": "UrlWVEqRVmGMoA5rykkd5qX87Jea6wv+7uPar/ECEmc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QRGKLHCrRLcDyNseoD1DcEWZ4WT2xzIe7fSv8KN3P1+AwW9EjwPZQ0nB6h49+aS1WxmgE2qA9yzP39MDLG7yCw"}}, "unsigned": {"age_ts": 1570042009944}}kBeQac$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1731}{"auth_events": ["$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "type": "m.room.power_levels", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"users": {"@anon-20191002_181700-330:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042008812, "hashes": {"sha256": "bBminyhNgTAF7Idpdo3mOdTFL9Nv6bXtmuFtJ9HO+nI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UblBfwMvTPAlxxVUk5izL6bzYXZHo0wg0L0YCmFe/nEjqX6PLIusq0bHmmW2YHCKAMzcYtxQ8JE+H4FtppZFAw"}}, "unsigned": {"age_ts": 1570042008812}}vAeQay$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1730}{"auth_events": ["$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo"], "prev_events": ["$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo"], "type": "m.room.member", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-330", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-330:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042008087, "hashes": {"sha256": "Hg/X5EipkXm51wgGILPWNKjEiZK0RMdCbDUt0XEOmWM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w0R683A4kPMqLFjGdEqG9cgtgnyJf4G3TtM0D3oW4l13bMowWdDvDgaThxIpxDnNEB0/JQQAUffcEvvY1K2oCg"}}, "unsigned": {"age_ts": 1570042008087}}i@eQa_$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1729}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-330:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042007239, "hashes": {"sha256": "fZoXcU3H95deloLIrrPNCngmE2nUwnkCA+Yu7vLP7VU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6m5V8ClI7D7Cq2n5h5CiBEn6sHNICWi3KJFHAC2NBmIX9tbZRNZloD7T0tjOaXQE4bj74ENasz+SRtsUf07bAw"}}, "unsigned": {"age_ts": 1570042007239}} #Y= i r 6 ? g v 4CqtAJY eQ']$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829aeQ' $d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829m.room.create eQ']$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800geQ3 $wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.statemeQ? $HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibilityeeQ/ $z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rulesgeQ3 $sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels eQ']$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800aeQ' $b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create eQ']$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800meQ? $Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibilityeeQ/ $9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rulesgeQ3 $2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels eQ']$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800aeQ' $vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800m.room.createmeQ? $fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibilityeeQ/ $yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rulesg eQ3 $pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels eQ']$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800a eQ' $8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800m.room.createm eQ? $IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibilitye eQ/ $rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rulesgeQ3 $5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels eQ']$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800aeQ' $4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.createmeQ? $_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibilityeeQ/ $Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rulesgeQ3 $_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI!kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels eQ']$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800aeQ' $VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800m.room.createmeQ? $MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800m.room.history_visibilityeeQ/ $O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s!nftGLlLhVgzOwOFufp:localhost:8800m.room.join_rulesg~eQ3 $ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800m.room.power_levels }eQ']$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800m.room.member@anon-20191002_181700-330:localhost:8800a|eQ' $K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo!nftGLlLhVgzOwOFufp:localhost:8800m.room.create 'Q { S + c;sK#[3 `8pH _7kC X 0  h @  x Q *  g @  W/g?'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 |'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 k'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 j'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 i'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 h'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 g'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800l&Q!scyFsXcUIJiLIMwWMY:localhost:8800k&Q!sPWVGnipjiiWQpywNO:localhost:8800=&Q!sPWVGnipjiiWQpywNO:localhost:8800<&Q!sPWVGnipjiiWQpywNO:localhost:8800;&Q!sPWVGnipjiiWQpywNO:localhost:8800:&Q!sPWVGnipjiiWQpywNO:localhost:88009&Q!sPWVGnipjiiWQpywNO:localhost:88008&Q!sPWVGnipjiiWQpywNO:localhost:88007&Q!sPWVGnipjiiWQpywNO:localhost:88006&Q!sPWVGnipjiiWQpywNO:localhost:88005'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!sHRHoXzYrrPSlWBkoh:localhost:8800 'Q!rwUuVBrftGHDBOlEZm:localhost:8800C'Q!rwUuVBrftGHDBOlEZm:localhost:8800B'Q!rwUuVBrftGHDBOlEZm:localhost:8800A'Q!rwUuVBrftGHDBOlEZm:localhost:8800@'Q!rwUuVBrftGHDBOlEZm:localhost:8800?'Q!rwUuVBrftGHDBOlEZm:localhost:8800>'Q!rwUuVBrftGHDBOlEZm:localhost:8800='Q!rwUuVBrftGHDBOlEZm:localhost:8800<'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 p'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 o'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 n'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 l'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 m yM^X  Dl:~fr  p }R K  4 Q j@>8    Y ' v .LG,   & `y1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM}1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk 1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGoY1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MN1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ 1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc=1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AoB1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII61e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk K11e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc 21e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA}1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk71e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk|1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ{1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o 1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk01e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64^1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4\1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk61e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI"1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs 0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIP1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos<1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUP1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U;1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEL1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr000e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo_1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE.1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4b1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjsA0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00V1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o]1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SUD1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD781e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E 1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc ;1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y >1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM  -RM H C > 9 4/*|%w rmhc TfQef!mTlCLZQCmfDuQsJxxp:localhost:8800$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMTeQee!mTlCLZQCmfDuQsJxxp:localhost:8800$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkTdQed!mTlCLZQCmfDuQsJxxp:localhost:8800$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkTcQec!mTlCLZQCmfDuQsJxxp:localhost:8800$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thETbQeb!mTlCLZQCmfDuQsJxxp:localhost:8800$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14TaQea!mTlCLZQCmfDuQsJxxp:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQoT`Qe`!mTlCLZQCmfDuQsJxxp:localhost:8800$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0T_Qe_!PEcOacvKaBKpXjytEF:localhost:8800$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIT^Qe^!PEcOacvKaBKpXjytEF:localhost:8800$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIT]Qe]!PEcOacvKaBKpXjytEF:localhost:8800$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oT\Qe\!PEcOacvKaBKpXjytEF:localhost:8800$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIoT[Qe[!PEcOacvKaBKpXjytEF:localhost:8800$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYTZQeZ!PEcOacvKaBKpXjytEF:localhost:8800$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cTYQeY!PEcOacvKaBKpXjytEF:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwTXQeX!PEcOacvKaBKpXjytEF:localhost:8800$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkTWQeW!NajQnqYmGyTjxhFYar:localhost:8829$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4TVQeV!sJnuQYOyruhUpXDsLY:localhost:8800$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgTUQeU!sJnuQYOyruhUpXDsLY:localhost:8800$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsTTQeT!sJnuQYOyruhUpXDsLY:localhost:8800$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7ATSQeS!sJnuQYOyruhUpXDsLY:localhost:8800$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90TRQeR!sJnuQYOyruhUpXDsLY:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkTQQeQ!sJnuQYOyruhUpXDsLY:localhost:8800$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYTPQeP!TeraguiGoZoeOGFzlI:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwTOQeO!TeraguiGoZoeOGFzlI:localhost:8800$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMTNQeN!TeraguiGoZoeOGFzlI:localhost:8800$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsTMQeM!TeraguiGoZoeOGFzlI:localhost:8800$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsTLQeL!TeraguiGoZoeOGFzlI:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gTKQeK!TeraguiGoZoeOGFzlI:localhost:8800$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcTJQeJ!UaitDdkGDcwvRLJSvp:localhost:8800$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgTIQeI!UaitDdkGDcwvRLJSvp:localhost:8800$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsATHQeH!UaitDdkGDcwvRLJSvp:localhost:8800$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQTGQeG!UaitDdkGDcwvRLJSvp:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8TFQeF!UaitDdkGDcwvRLJSvp:localhost:8800$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqITEQeE!dDqNKNFdIjCAwnyaxp:localhost:8800$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGoTDQeD!dDqNKNFdIjCAwnyaxp:localhost:8800$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oTCQeC!dDqNKNFdIjCAwnyaxp:localhost:8800$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cTBQeB!dDqNKNFdIjCAwnyaxp:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CATAQeA!dDqNKNFdIjCAwnyaxp:localhost:8800$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUT@Qe@!kjueCKHmYaYefEEpQY:localhost:8800$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1IT?Qe?!kjueCKHmYaYefEEpQY:localhost:8800$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5MT>Qe>!kjueCKHmYaYefEEpQY:localhost:8800$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIT=Qe=!kjueCKHmYaYefEEpQY:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwT<QevGeQay$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "stream_ordering": 1736}{"auth_events": ["$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o"], "prev_events": ["$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o"], "type": "m.room.member", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-331", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-331:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042014221, "hashes": {"sha256": "WZFpixiY+rCucTQHWkPuctKblLiDRdH1rtLcJdtQs7s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6e/U3bfZJeQEGEgyPTfeoI/Z5HHQUq44bzm9hN0dP6V0hReZ/molphDsNmW99roPRfEmvgKbo+iz8bEh9gUADA"}}, "unsigned": {"age_ts": 1570042014221}}iFeQa_$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "stream_ordering": 1735}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-331:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042013517, "hashes": {"sha256": "Ha38dXVfEsECDIPlf0vd1Q1LEFhm9prgLEk65/9ghkc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4uZ/vhSOm5T0fx4yFz375fSEz0kPcNYmvMBviicMrZaRhsoWZMnOPVHc6N4zOz9nwuDgIfuhodxq3iarRe2ECA"}}, "unsigned": {"age_ts": 1570042013517}}HEeQa$CY9Tub2nXNULnnye8uEoeRMsM80BzoCQdsk4jolHG-M!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1734}{"auth_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po", "$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8"], "type": "m.room.test", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042011947, "hashes": {"sha256": "yeNmfLySVRhRLF1A/psP490aPAXgLzUoUJZ+swJwnWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYZlDpbeFb7UybncweBOScq0IgcCEysrwEI48C7P8RcygINJXWxQklAxOaObsp4nTLdzFECzWVQ9LXUGLDzDAQ"}}, "unsigned": {"age_ts": 1570042011947}}DeQa$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8!nftGLlLhVgzOwOFufp:localhost:8800{"token_id": 349, "stream_ordering": 1733}{"auth_events": ["$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po", "$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo", "$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ"], "prev_events": ["$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s"], "type": "m.room.history_visibility", "room_id": "!nftGLlLhVgzOwOFufp:localhost:8800", "sender": "@anon-20191002_181700-330:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042010827, "hashes": {"sha256": "rjMyaY89sai14NOEOpbEwzYwgh4vYBOQTxYl5T7N3rE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQQ1n1ARLbn1j7N8OQ15R2To3TXJ4HVnkR997sXLhPSMHO97Kkw8B5oOlmpMJAvMLD/9aw3GK73mdJ1I4tQYAg"}}, "unsigned": {"age_ts": 1570042010827}} ,NC 8 - { " p  e ZOD9.|#qf VpeL$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3ssha256w#NDAQqɃrZ$E?OxX5{VoeL$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfcsha256Ћq׉()-|/K Ba?]VneL$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgsha256_uIԲ^4S!m3/NڪUVmeL$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqssha256ç*T>r[~h{uHlVUY'/bVleL$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7Asha256ϯcaD/B}|Kg׿VkeL$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90sha256SDBڦ[έeJ!VjeL$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Oksha256}o=v<}>8x>sVieL$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYsha256oCo Td'tJ{:ݗ 'UVheL$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwsha256).a)onLVgeL$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMsha2565]m (Yl~~+5#VfeL$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCssha256hYGInO"؋46cP+VeeL$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dssha256jβ2 Ҍ{VdeL$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gsha256!68k__bZ %;VceL$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcsha256_-BO`u+눚tBNVbeL$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5ssha2566޲!ɠ6Sf+ᢐrN!T OZ˛VaeL$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Ysha256K '|>ׅ*\1eţV`eL$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgsha256|R9 GzegN cWCmV_eL$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAsha256SaWzs/gLĈuV^eL$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQsha256*jΟi躙a(``'JV]eL$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8sha256|}0t1r (K'V\eL$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIsha256Aw2-A@9hʓ̞ǗV[eL$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52osha256+?OR8eOkؐKjVZeL$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0sha256MBb~:3AFE]]e t~3{VYeL$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGosha256 q]L@ 6$~DjVXeL$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9osha256cKQeu_Pw<ˀuTVWeL$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2csha256\^HY;x}h lyrX(gVVeL$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAsha256 X*0Gbua e}א2NAS VUeL$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUsha256ᖷJ}Ü>Ϝ@سrcYVTeL$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngsha256nhrD>@T厭NApߤ^lxVSeL$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMsha256sװ9NC1p3?Ms/PVReL$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanAsha256\=rDa+)'jbe"f jpVQeL$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4sha256а:?%Q`ײ$*a|ƪd MhD,nVPeL$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshMsha256[OPm o q R   n 53  Q4  p 78m4 Sl  TPU PO 698e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wsha2568e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94sha2568e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFYsha2568e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8csha256$8e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQsha256 8e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6igsha2568e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8sha256w8e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84sha256 8e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8sha256 G8e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Usha256 8e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qsha2568e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScsha256 8e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIosha2568e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624sha2568e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQsha2568e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598sha2568e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEsha256 58e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsgsha2568e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYsha256=7e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPAsha25648e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0sha256.8e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexssha256p8e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMsha2568e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0sha256P8e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4sha2568e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLksha2568e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AYsha2568e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0sha256h8e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vksha256:8e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0sha2568e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJYsha256A8e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4sha2568e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPAsha2568e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcsha256w8e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMcsha2568e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQsha2568e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8sha2568e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0sha256z8e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQsha2568e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Ysha2568e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQsha2568e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgsha256 98e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GEsha256 8e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocsha256 6 98e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIsha256@8e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0sha2568e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIsha256 8e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAsha256 8e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8sha2568e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecsha2568e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwsha256 98e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317osha256 98e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7Msha2568e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8sha256U98e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgsha2568e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8sha2568e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYsha256 _8e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAsha256 J8e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIsha256e8e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMsha256]98e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgsha256 a8e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUsha256 T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&A@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{~z~}y}|x|{wzyvyxuxwtwvsvurutqtsprqoqpnpomonlnmkmljlkijihihghgfgfefededcdcbbaaa```___^^^]]]\\[Z[ZYZYXYXWXWVWVUVUTUSRTRQSQPRPOQNMPMLOLKNKJMIHLHGKGFJFEIDCHCBGBAFA@E?>D>=C=<B<;A:9@98?87>76=54<43;32:2190/8/.7.-6-,5+*4*)3)(2('1&%0%$/$#.#"-! , +*)('&%$#"!               ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"~!~} }||{{zyxxwwvvuuttssrqppoonnmmllkkjihgf fe ed dc cb baa`_^^]]\\[[ZZYYXVUUT~TS}SR|RQ{POzONyNMxMLwLKvJIuIHtHGsGFrEDqDCpCBoBAn@? "(- Q \   IHS} 9cgrgeQ/ e[!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rules$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYidQ3 eZ!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c cQ']eY!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwcbQ' eX!PEcOacvKaBKpXjytEF:localhost:8800m.room.create$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk aQ']eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 `Q']eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4i_Q3 eW!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.state$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Noo^Q? eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibility$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUog]Q/ eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rules$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTki\Q3 eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4c[Q' eW!NajQnqYmGyTjxhFYar:localhost:8829m.room.create$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3siZQ3 eV!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.state$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgoYQ? eU!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibility$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsgXQ/ eT!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rules$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7AiWQ3 eS!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 VQ']eR!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkcUQ' eQ!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY TQ']eP!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwoSQ? eO!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibility$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMgRQ/ eN!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rules$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsiQQ3 eM!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds PQ']eL!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gcOQ' eK!TeraguiGoZoeOGFzlI:localhost:8800m.room.create$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcoNQ? eJ!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdggMQ/ eI!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rules$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAiLQ3 eH!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ KQ']eG!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8cJQ' eF!UaitDdkGDcwvRLJSvp:localhost:8800m.room.create$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIoIQ? eE!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibility$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGogHQ/ eD!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rules$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oiGQ3 eC!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c FQ']eB!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAcEQ' eA!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.create$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUoDQ? e@!kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibility$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I 4 4oOeQG$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "184", "stream_ordering": 1744}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 3}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042020925, "hashes": {"sha256": "lGogEaf02kMUcAV0x63pKbMmEu6MckzNrytOVNycsoI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eAWcL3o2nDouwze84quEHUxZ0/jcsGyKEJ5SMIWC2yCKVVsDNxp6S5kiCGdqa1xAzbdlenWi/tP5VW+SX1PLBA"}}, "unsigned": {"age_ts": 1570042020925}}oNeQG$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "183", "stream_ordering": 1743}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 2}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042019245, "hashes": {"sha256": "ryJjDiHIQx8W4ZBUjb3UmsEk+jBAwrwGWqQMjjAbh4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLpUGM8wDXWzHgUVaKZy+l054+mr4HjzcPynKpQUvH3KgACcJVwdXLK/oLFQxgYehUsakQxJmkmRxVY0tAUJCg"}}, "unsigned": {"age_ts": 1570042019245}}oMeQG$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "182", "stream_ordering": 1742}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 1}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042019065, "hashes": {"sha256": "zKasu1z0/9oJYnvkZtHsRrqqSrfIFoivK66fMEg6agQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fmwZ7qAYtDzQhd1XH2Kmy15ZrPq3i1S5kUbKiAyjLywX8cWycdvEjunGZ8jRLV0/hd0en6r1MmjrqrJq3yFnAA"}}, "unsigned": {"age_ts": 1570042019065}}oLeQG$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "181", "stream_ordering": 1741}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 0}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042018887, "hashes": {"sha256": "BnlBQNL6MXbJUwviQSqoqNCobjLY9dvENGzeZlFVo+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ImE8mnIWbomWa1NURSCXxRhUyRcYGcg3o1vyaokwK2jLw6zl0qP0koIBYyAV43vjoQ5+7ArcTAYpBxI+1lTeCA"}}, "unsigned": {"age_ts": 1570042018887}} & ]  d | U MEt=6  l&eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800qeeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800XeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800WeeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800 j.eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800CeeQ$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU$XhE3HV6GC5QVHJZiSxcddOTDGZtTjOID-XfaAri-O6w!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE!wsvXTJXouVkEZcCFsD:localhost:8800 eeQ$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM!uxKymrHZeXRYCZwekU:localhost:88007eeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800heeQ$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800ρeeQ$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY!XgobMgBjNcDRJnRXLD:localhost:8800SeeQ$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg!NNiyzThHMivrxhojfp:localhost:8800eeQ$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY!FIOuvzpMhoERunVYYA:localhost:8800}eeQ$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY!KxhGcTbEWmtgGNpdox:localhost:8800<eeQ$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMg$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68!wvnfKBSrUlfNmYoeil:localhost:8800geeQ$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc!EABRjdYuYumMhLSwIa:localhost:8800eeQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800 -eeQ$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800 >eeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800OeeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:8800 ~z v r n j fb^ZVRNJF+eeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800*eeQ$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800)eeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800(eeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800'eeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800&eeQ$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800%eeQ$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800$eeQ$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800#eeQ$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800"eeQ$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800!eeQ$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800 eeQ$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8!UaitDdkGDcwvRLJSvp:localhost:8800eeQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800eeQ$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps!kjueCKHmYaYefEEpQY:localhost:8800eeQ$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800 QeT)}R' { P % y N # w L ! u J  s HoFDm qBk@i>g<e*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uPxXJHJyFQwvpQLZNs:localhost:8800 *Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uJtKGXTNdEnCPNOGDx:localhost:8800*Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!uGpSboYkgxVNOqNeUG:localhost:8800 *Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y m*Q!taANXnGBZntAreRurn:localhost:8800 X l*Q!taANXnGBZntAreRurn:localhost:8800 W k*Q!tcYctHPiaKzsKgrXlU:localhost:8800 V j*Q!taANXnGBZntAreRurn:localhost:8800 U i*Q!tcYctHPiaKzsKgrXlU:localhost:8800 T h*Q!taANXnGBZntAreRurn:localhost:8800 S g*Q!tcYctHPiaKzsKgrXlU:localhost:8800 R f*Q!taANXnGBZntAreRurn:localhost:8800 Q e*Q!tcYctHPiaKzsKgrXlU:localhost:8800 P d*Q!taANXnGBZntAreRurn:localhost:8800 O c*Q!tcYctHPiaKzsKgrXlU:localhost:8800 N b*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tkajvIKHoOMWGsReBs:localhost:8800*Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m *Q!tPkCGJBKmqUXJoRrnY:localhost:8800 l *Q!tLkhTnTgDjjAvscRkW:localhost:8800 <*Q!tLkhTnTgDjjAvscRkW:localhost:8800 ;*Q!tLkhTnTgDjjAvscRkW:localhost:8800 :*Q!tLkhTnTgDjjAvscRkW:localhost:8800 9*Q!tLkhTnTgDjjAvscRkW:localhost:8800 8*Q!tLkhTnTgDjjAvscRkW:localhost:8800 7*Q!tLkhTnTgDjjAvscRkW:localhost:8800 6*Q!tDsPLsKOLPePtEWRwn:localhost:8800'**Q!tDsPLsKOLPePtEWRwn:localhost:8800&)*Q!tDsPLsKOLPePtEWRwn:localhost:8800%(*Q!tDsPLsKOLPePtEWRwn:localhost:8800$'*Q!tDsPLsKOLPePtEWRwn:localhost:8800#&*Q!tDsPLsKOLPePtEWRwn:localhost:8800"%*Q!tDsPLsKOLPePtEWRwn:localhost:8800!$*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!svYOOXWZHtQQzlMcEP:localhost:8800*Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800 *Q!sqkBzbHHJOTNWwynqV:localhost:8800  \D SeQ)$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "188", "stream_ordering": 1748}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM", "$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 7}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042022971, "hashes": {"sha256": "vPcv9oIW7PENbPrXR4Q/+T6nn1R6es2tgnNPZI1Wbuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gMzX8puxfbFSGKJA5iONz6NJkAesYCZwQoZf5Gd6lPBBVyO3//s3JpMPtZsZ+Ak1ySX1oXRYpZQoJYm2pdgsAQ"}}, "unsigned": {"age_ts": 1570042022971}}pReQI$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "187", "stream_ordering": 1747}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 6}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042022764, "hashes": {"sha256": "Nni2f7cKDqljC+iuCQy9XgWTzyjEiBlCDSvejpKH3wU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XJoNVF6dPK+AztRQaUVwuNCS7dWc7zaBVeZcN73imvCYM37Zkq0LkMLQMpnFPAwM/EG41GPVAdtWtTwPwxoKBQ"}}, "unsigned": {"age_ts": 1570042022764}} QeQ)$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "186", "stream_ordering": 1746}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps", "$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 5}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042022071, "hashes": {"sha256": "XIjtTef0jOyRdOpW60L/e2Vq6d6JBOc4NO8TtaKta9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LZGJNfh20ymdwUiPZI8gGn9GU5b83z2P71J2m6kzkwG646DQLPJGdh5bVUkeWO6Wu2xoyOqwr9nQ3rJNAgN4AA"}}, "unsigned": {"age_ts": 1570042022071}} PeQ)$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "185", "stream_ordering": 1745}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps", "$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 4}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042021819, "hashes": {"sha256": "e0oPO3JXQPOBxKrtCmZdhGjCBN3Yutusf1XI4EUnyG0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I+RDIr+sxjuswDBpk3pw09Mc5UaUbgiIG2VninqO93oz7mvn6mjUxoJ5Yv2aO/GFhN6aSz+JJ43mgUGr3JJQDw"}}, "unsigned": {"age_ts": 1570042021819}} UyLk> ^ 1  ~ Q $ q D  c 6 U (uHg: Z-zM R%sF2m@_,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800+Q !sBcwyPoXKgnSGVTjNR:localhost:8800+Q !rWGwSSefrZzQYCYFHs:localhost:8800,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 Y,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 +Q !sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 +Q !sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!rwUuVBrftGHDBOlEZm:localhost:8800NN,Q!rwUuVBrftGHDBOlEZm:localhost:8800MM,Q!rwUuVBrftGHDBOlEZm:localhost:8800LL,Q!rwUuVBrftGHDBOlEZm:localhost:8800KK,Q!rwUuVBrftGHDBOlEZm:localhost:8800JJ,Q!rwUuVBrftGHDBOlEZm:localhost:8800II,Q!rwUuVBrftGHDBOlEZm:localhost:8800HH+Q !rwUuVBrftGHDBOlEZm:localhost:8800GG,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { {,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z z,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y y,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x x,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w w,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v v,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u u,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t t,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s s+Q !rpVYLTJGcFNdGzFzXj:localhost:8800 r r,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800+Q !raCWVWQGnXbmkexpCN:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800+Q !rZWweGEChkxxtzyfDB:localhost:8800,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 +Q !rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800 UyLk> ^ 1  ~ Q $ q D  c 6 U (uHg: Z-zM R%sF2m@_,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800+Q !sBcwyPoXKgnSGVTjNR:localhost:8800+Q !rWGwSSefrZzQYCYFHs:localhost:8800,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 Y,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sBcwyPoXKgnSGVTjNR:localhost:8800,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sHRHoXzYrrPSlWBkoh:localhost:8800 +Q !sHRHoXzYrrPSlWBkoh:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!sAWFpvSUPExZLVcPEd:localhost:8800 +Q !sAWFpvSUPExZLVcPEd:localhost:8800 ,Q!rwUuVBrftGHDBOlEZm:localhost:8800NN,Q!rwUuVBrftGHDBOlEZm:localhost:8800MM,Q!rwUuVBrftGHDBOlEZm:localhost:8800LL,Q!rwUuVBrftGHDBOlEZm:localhost:8800KK,Q!rwUuVBrftGHDBOlEZm:localhost:8800JJ,Q!rwUuVBrftGHDBOlEZm:localhost:8800II,Q!rwUuVBrftGHDBOlEZm:localhost:8800HH+Q !rwUuVBrftGHDBOlEZm:localhost:8800GG,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { {,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z z,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y y,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x x,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w w,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v v,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u u,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t t,Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s s+Q !rpVYLTJGcFNdGzFzXj:localhost:8800 r r,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800 ,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800,Q!raCWVWQGnXbmkexpCN:localhost:8800+Q !raCWVWQGnXbmkexpCN:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800,Q!rZWweGEChkxxtzyfDB:localhost:8800+Q !rZWweGEChkxxtzyfDB:localhost:8800,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWmvvGBgmFMdVvcfPk:localhost:8800 +Q !rWmvvGBgmFMdVvcfPk:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800,Q!rWGwSSefrZzQYCYFHs:localhost:8800 -RM H C > 9 4/*|%w rmhc TQe !mTlCLZQCmfDuQsJxxp:localhost:8800$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thETQe!mTlCLZQCmfDuQsJxxp:localhost:8800$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14TQe!mTlCLZQCmfDuQsJxxp:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQoTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0TQe!PEcOacvKaBKpXjytEF:localhost:8800$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOITQe!PEcOacvKaBKpXjytEF:localhost:8800$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYITQe!PEcOacvKaBKpXjytEF:localhost:8800$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oTQe!PEcOacvKaBKpXjytEF:localhost:8800$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIoTQe!PEcOacvKaBKpXjytEF:localhost:8800$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYTQe!PEcOacvKaBKpXjytEF:localhost:8800$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cTQe!PEcOacvKaBKpXjytEF:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwT Qe!PEcOacvKaBKpXjytEF:localhost:8800$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkT Qe!NajQnqYmGyTjxhFYar:localhost:8829$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4T Qe!sJnuQYOyruhUpXDsLY:localhost:8800$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgT Qe!sJnuQYOyruhUpXDsLY:localhost:8800$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsT Qe!sJnuQYOyruhUpXDsLY:localhost:8800$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7ATQe!sJnuQYOyruhUpXDsLY:localhost:8800$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90TQe!sJnuQYOyruhUpXDsLY:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkTQe!sJnuQYOyruhUpXDsLY:localhost:8800$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYTQe!TeraguiGoZoeOGFzlI:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwTQe!TeraguiGoZoeOGFzlI:localhost:8800$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMTQe!TeraguiGoZoeOGFzlI:localhost:8800$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsTQe!TeraguiGoZoeOGFzlI:localhost:8800$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsTQe!TeraguiGoZoeOGFzlI:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gTQe!TeraguiGoZoeOGFzlI:localhost:8800$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcTQe!UaitDdkGDcwvRLJSvp:localhost:8800$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sT~Qe!UaitDdkGDcwvRLJSvp:localhost:8800$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4YT}Qe!UaitDdkGDcwvRLJSvp:localhost:8800$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgT|Qe!UaitDdkGDcwvRLJSvp:localhost:8800$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAT{Qe!UaitDdkGDcwvRLJSvp:localhost:8800$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQTzQe!UaitDdkGDcwvRLJSvp:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8TyQe!UaitDdkGDcwvRLJSvp:localhost:8800$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqITxQe!dDqNKNFdIjCAwnyaxp:localhost:8800$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52oTwQe!dDqNKNFdIjCAwnyaxp:localhost:8800$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0TvQe!dDqNKNFdIjCAwnyaxp:localhost:8800$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGoTuQe!dDqNKNFdIjCAwnyaxp:localhost:8800$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9oTtQe!dDqNKNFdIjCAwnyaxp:localhost:8800$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cTsQe!dDqNKNFdIjCAwnyaxp:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CATrQe!dDqNKNFdIjCAwnyaxp:localhost:8800$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUTqQe!kjueCKHmYaYefEEpQY:localhost:8800$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMTpQe!kjueCKHmYaYefEEpQY:localhost:8800$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngToQe!kjueCKHmYaYefEEpQY:localhost:8800$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanATnQe!kjueCKHmYaYefEEpQY:localhost:8800$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMTmQe!kjueCKHmYaYefEEpQY:localhost:8800$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4 RT b  `  t&~)><R ke'Q ]$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Okm.room.member!sJnuQYOyruhUpXDsLY:localhost:8800mtmu+@anon-20191002_181700-338:localhost:8800j e'Q  ]$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYm.room.create!sJnuQYOyruhUpXDsLY:localhost:8800mpmqD@anon-20191002_181700-338:localhost:8800 ie'Q ]$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwm.room.member!TeraguiGoZoeOGFzlI:localhost:8800mhmh@anon-20191002_181700-337:localhost:8800,he?Q ]$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMm.room.history_visibility!TeraguiGoZoeOGFzlI:localhost:8800mc me@anon-20191002_181700-336:localhost:8800$ge/Q ]$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsm.room.join_rules!TeraguiGoZoeOGFzlI:localhost:8800m`man@anon-20191002_181700-336:localhost:8800&fe3Q ]$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsm.room.power_levels!TeraguiGoZoeOGFzlI:localhost:8800m]m^@anon-20191002_181700-336:localhost:8800 ee'Q ]$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gm.room.member!TeraguiGoZoeOGFzlI:localhost:8800m[Om[@anon-20191002_181700-336:localhost:8800d e'Q  ]$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcm.room.create!TeraguiGoZoeOGFzlI:localhost:8800mSmV@anon-20191002_181700-336:localhost:8800!ce)Q ]$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sm.room.message!UaitDdkGDcwvRLJSvp:localhost:8800mG;mG?@anon-20191002_181700-333:localhost:8800!be)Q ]$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Ym.room.message!UaitDdkGDcwvRLJSvp:localhost:8800mCmC@anon-20191002_181700-333:localhost:8800,ae?Q ]$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgm.room.history_visibility!UaitDdkGDcwvRLJSvp:localhost:8800m;mA0@anon-20191002_181700-333:localhost:8800$`e/Q ]$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAm.room.join_rules!UaitDdkGDcwvRLJSvp:localhost:8800m9]m:@anon-20191002_181700-333:localhost:8800&_e3Q ]$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQm.room.power_levels!UaitDdkGDcwvRLJSvp:localhost:8800m6Xm7@anon-20191002_181700-333:localhost:8800 ^e'Q ]$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8m.room.member!UaitDdkGDcwvRLJSvp:localhost:8800m3m4 @anon-20191002_181700-333:localhost:8800] e'Q  ]$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIm.room.create!UaitDdkGDcwvRLJSvp:localhost:8800m1m1e@anon-20191002_181700-333:localhost:8800!\e)Q ]$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52om.room.message!dDqNKNFdIjCAwnyaxp:localhost:8800m)Fm)L@anon-20191002_181700-332:localhost:8800![e)Q ]$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0m.room.message!dDqNKNFdIjCAwnyaxp:localhost:8800m%m&T@anon-20191002_181700-332:localhost:8800,Ze?Q ]$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGom.room.history_visibility!dDqNKNFdIjCAwnyaxp:localhost:8800m m#@anon-20191002_181700-332:localhost:8800$Ye/Q ]$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9om.room.join_rules!dDqNKNFdIjCAwnyaxp:localhost:8800mIm@anon-20191002_181700-332:localhost:8800&Xe3Q ]$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2cm.room.power_levels!dDqNKNFdIjCAwnyaxp:localhost:8800mm*@anon-20191002_181700-332:localhost:8800 We'Q ]$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAm.room.member!dDqNKNFdIjCAwnyaxp:localhost:8800mzm@anon-20191002_181700-332:localhost:8800V e'Q  ]$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaUm.room.create!dDqNKNFdIjCAwnyaxp:localhost:8800mHm@anon-20191002_181700-332:localhost:8800(Ue7Q ] $wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jnga.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 mm@anon-20191002_181700-331:localhost:8800(Te7Q ] $Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMa.made.up.filler.type!kjueCKHmYaYefEEpQY:localhost:8800 m ;m'@anon-20191002_181700-331:localhost:8800  \ okWeQac$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1752}{"auth_events": ["$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "type": "m.room.power_levels", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"users": {"@anon-20191002_181700-332:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042026735, "hashes": {"sha256": "jJkz+G8ydncLUvNmcMCFfImuKxETOk0EsJcuOdhDU4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L7FhzhHdADd/jWUrXrgzy6QUxWTe3JUYb7Ns/eeKwgzbkD/Lsm7LOF162lKypH6ZwwD9gCUy0Yu/AM5PxVJ/AQ"}}, "unsigned": {"age_ts": 1570042026735}}vVeQay$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1751}{"auth_events": ["$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU"], "prev_events": ["$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU"], "type": "m.room.member", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-332", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-332:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042026106, "hashes": {"sha256": "huJY4Yy3NkvrDmYcLu0bq8kE86Zf0duvlC+yRW72eTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K8n9Y/Oa3X8fiP9r/+Bh4Rel/yTVqqGxKIfGm+jk0SFOWCFY0Toc+64oqXR/W4lcAazX0//acVV3MiKMMcUQBQ"}}, "unsigned": {"age_ts": 1570042026106}}iUeQa_$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1750}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-332:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042025032, "hashes": {"sha256": "rPIVbyJ4LK9u+lL5DjF8Uv5S9yKu0uUk7Q8WVNMMJVU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kw/v+eN6ptnY5xOYva0tpRvpacY2SoB6Ecay/34C451Nub/s2pi0YbwISTcPKAm29hlLahsDSbJpbGusgBPsAw"}}, "unsigned": {"age_ts": 1570042025032}} TeQ)$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng!kjueCKHmYaYefEEpQY:localhost:8800{"token_id": 350, "txn_id": "189", "stream_ordering": 1749}{"auth_events": ["$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI", "$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o", "$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw"], "prev_events": ["$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4", "$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA"], "type": "a.made.up.filler.type", "room_id": "!kjueCKHmYaYefEEpQY:localhost:8800", "sender": "@anon-20191002_181700-331:localhost:8800", "content": {"filler": 8}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042023649, "hashes": {"sha256": "L3OmSfVwy+atmZ6DplI7Hbjg7QDHAq80hNLCQH1SyFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SFUP4HUIVLZ6Dx7Q+Exf/0FT6r9UGcRhVbXERjblJ/DOiHCkk92ID537B0bNi3ky/VGEFQ5fkrQMCgbjcnmMCA"}}, "unsigned": {"age_ts": 1570042023649}} g * T~=gg`]!ci@anon-20191002_181700-343:localhost:8800QPHBRHJQMLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5sMXc5M3J6dU87YXo3aS0KMDAyZnNpZ25hdHVyZSCgYamora2nRmHilFUyk9j8Dzwj5jfJYv6Bnnd_YostcQog_]!ch@anon-20191002_181700-342:localhost:8800TTVUAXXSXPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1mZEo1RldZdiM0TncqREIKMDAyZnNpZ25hdHVyZSD1CluRFblFPH2PGTYxtlBuR4b8HFxX93jBVH9BggsuIAog^]!cg@anon-20191002_181700-341:localhost:8800GZLOUPOIMWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNWLXE9Ok5fVzF0Yl4xQWQKMDAyZnNpZ25hdHVyZSA4IvYN0BRlYhhvvwxUgJTRmwpuG8xwu9p0QDzapgMwpQog]]!cf@anon-20191002_181700-339:localhost:8800DEVPCFFDOHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAog\]!ce@anon-20191002_181700-338:localhost:8800OUNFKLKIBDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgog[]!cd@anon-20191002_181700-337:localhost:8800AOHNBPYYLFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwogZ]!cc@anon-20191002_181700-336:localhost:8800OFRRIKPQISMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwogY]!cb@anon-20191002_181700-335:localhost:8800WEGENLHOLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAogX]!ca@anon-20191002_181700-334:localhost:8800KPXDOKYVYYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgogW]!c`@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8QogV]!c_@anon-20191002_181700-332:localhost:8800TBDDBAQUGPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-go [~c@`C(wT=jO,{d% t W <   h )  x [ > '  k N 7 n 7 zW(]Bs4g8|_D!_3 lm.room.power_levels{' (m.room.create,"? 'm.room.history_visibility+/ &m.room.join_rules*3 %m.room.power_levels)>']km.room.member@anon-20191002_181700-345:localhost:8800z' jm.room.createy3 ia.madeup.test.statex3 hm.room.power_levelss>']hm.room.member@anon-20191002_181700-344:localhost:8829v>']hm.room.member@anon-20191002_181700-343:localhost:8800w/ hm.room.join_rulest"? hm.room.history_visibilityu' hm.room.creater.31ga.madeup.test.statethis_state_changesq/ 5m.room.join_rules93 4m.room.power_levels8>']3m.room.member@anon-20191002_181700-329:localhost:88007' 2m.room.create6"? 1m.room.history_visibility5/ 0m.room.join_rules43 /m.room.power_levels3>'].m.room.member@anon-20191002_181700-328:localhost:88002' -m.room.create1"? ,m.room.history_visibility0/ +m.room.join_rules/3 *m.room.power_levels.>'])m.room.member@anon-20191002_181700-327:localhost:8800- >']$m.room.member@anon-20191002_181700-326:localhost:8800(' #m.room.create'>']"m.room.member@anon-20191002_181700-325:localhost:8800&"? !m.room.history_visibility%/  m.room.join_rules$3 m.room.power_levels#>']m.room.member@anon-20191002_181700-324:localhost:8800"' m.room.create!63Afa.madeup.test.statethis_state_does_not_changep.31ea.madeup.test.statethis_state_changeso"? dm.room.history_visibilityn/ cm.room.join_rulesm3 bm.room.power_levelsl>']am.room.member@anon-20191002_181700-342:localhost:8800k' `m.room.createj.31_a.madeup.test.statethis_state_changesi63A^a.madeup.test.statethis_state_does_not_changeh.31]a.madeup.test.statethis_state_changesg"? \m.room.history_visibilityf/ [m.room.join_rulese3 Zm.room.power_levelsd>']Ym.room.member@anon-20191002_181700-341:localhost:8800c' Xm.room.createb3 Wm.room.power_levels\>']Wm.room.member@anon-20191002_181700-340:localhost:8829`>']Wm.room.member@anon-20191002_181700-339:localhost:8800a/ Wm.room.join_rules]"? Wm.room.history_visibility^' Wm.room.create[3 Wa.madeup.test.state_3 Va.madeup.test.stateZ"? Um.room.history_visibilityY/ Tm.room.join_rulesX3 Sm.room.power_levelsW>']Rm.room.member@anon-20191002_181700-338:localhost:8800V' Qm.room.createU>']Pm.room.member@anon-20191002_181700-337:localhost:8800T"? Om.room.history_visibilityS/ Nm.room.join_rulesR3 Mm.room.power_levelsQ>']Lm.room.member@anon-20191002_181700-336:localhost:8800P' Km.room.createO"? Jm.room.history_visibilityN/ Im.room.join_rulesM3 Hm.room.power_levelsL>']Gm.room.member@anon-20191002_181700-333:localhost:8800K' Fm.room.createJ"? Em.room.history_visibilityI/ Dm.room.join_rulesH3 Cm.room.power_levelsG>']Bm.room.member@anon-20191002_181700-332:localhost:8800F' Am.room.createE"? @m.room.history_visibilityD/ ?m.room.join_rulesC3 >m.room.power_levelsB>']=m.room.member@anon-20191002_181700-331:localhost:8800A' 3 9m.room.power_levels=>']8m.room.member@anon-20191002_181700-330:localhost:8800<' 7m.room.create;"? 6m.room.history_visibility: Hx0x | P " j <  X * r D  ` 2 zLf8 R$l>X*rDHb4 J -]@anon-20191002_181700-375:localhost:8800m^.-]@anon-20191002_181700-374:localhost:8800c-]@anon-20191002_181700-373:localhost:8800[-]@anon-20191002_181700-372:localhost:8800_ .-]@anon-20191002_181700-442:localhost:88000-]@anon-20191002_181700-441:localhost:8800.-]@anon-20191002_181700-440:localhost:8800--]@anon-20191002_181700-439:localhost:8800,-]@anon-20191002_181700-438:localhost:8800+-]@anon-20191002_181700-437:localhost:8800*-]@anon-20191002_181700-436:localhost:8800&-]@anon-20191002_181700-435:localhost:8800$-]@anon-20191002_181700-434:localhost:8800#-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800 -]@anon-20191002_181700-425:localhost:8800 -]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800+[@anon-20191002_181700-39:localhost:8800}-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-395:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800-]@anon-20191002_181700-390:localhost:8800+[@anon-20191002_181700-38:localhost:8800x-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:8800r-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800}v-]@anon-20191002_181700-445:localhost:88009-]@anon-20191002_181700-444:localhost:88006-]@anon-20191002_181700-443:localhost:88007.-]@anon-20191002_181700-376:localhost:8800u-]@anon-20191002_181700-375:localhost:8800n Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1!e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Yv1 e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzou1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAt1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ys1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcsr1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgq1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIq1e$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMq1e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdkq1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYq1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcq1e$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0q1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAq1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYq1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiop1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8o1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsn1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEm1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Yl1 e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokk1 e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresj1 e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwi1 e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsh1 e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEg1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0g1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgg1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUg1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sg1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74g1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Micg1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00g1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMg1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMg1~e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcg1}e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIg1|e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMf1{e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVke1ze$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkd1ye$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEc1xe$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14b1we$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQoa1ve$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0`1ue$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI_1te$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI^1se$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o]1re$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo\1qe$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY[1pe$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cZ1oe$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwY1ne$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkX1me$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4W1le$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgV1ke$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsU1je$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7AT1ie$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90S1he$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkR1ge$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbYQ1fe$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwP1ee$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMO1de$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsN1ce$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7dsM1be$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gL1ae$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8TqcK1`e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sJ1_e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4YJ1^e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgJ1]e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAI1\e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQH1[e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8G1Ze$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIF1Ye$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52oE1Xe$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0E1We$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGoE "j(N Q s |  1 :=_@CLOqj'Q3Ae!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_change$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI|&Q31e!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4op%Q? e!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibility$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIoh$Q/ e!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rules$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYj#Q3 e!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c "Q']e!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwd!Q' e!PEcOacvKaBKpXjytEF:localhost:8800m.room.create$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk Q']e!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 Q']e!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4jQ3 e!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.state$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7NopQ? e!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibility$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUohQ/ e!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rules$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTkjQ3 e!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4dQ' e!NajQnqYmGyTjxhFYar:localhost:8829m.room.create$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3sjQ3 e!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.state$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgpQ? e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibility$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqshQ/ e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rules$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7AjQ3 e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90 Q']e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3OkdQ' e!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY Q']e!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwpQ? e!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibility$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CMhQ/ e!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rules$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCsjQ3 e!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds Q']e!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gdQ' e!TeraguiGoZoeOGFzlI:localhost:8800m.room.create$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcp Q? e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgh Q/ e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rules$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAj Q3 e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ Q']e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8d Q' e!UaitDdkGDcwvRLJSvp:localhost:8800m.room.create$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIpQ? e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibility$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGohQ/ e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rules$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9ojQ3 e!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c  ~}[eQc$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "txn_id": "193", "stream_ordering": 1756}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0"], "type": "m.room.message", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"body": "2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042030406, "hashes": {"sha256": "bweWUuqvEq8wi4oBWRnfd3LZzcoJJlUGsmWzprul2Jk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LPMOjaESgNdLmbS8B+BR73RT3irzfEuKwB7aDNgW/XCcWi6rVmR7EamSL/mx3wsvcl+KANCschzrj5ouG0zODg"}}, "unsigned": {"age_ts": 1570042030406}}}ZeQc$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "txn_id": "192", "stream_ordering": 1755}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo"], "type": "m.room.message", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042029493, "hashes": {"sha256": "XDwPj7xhi4uDaF3nv8eGcigLcd1+Guv+DUoZkpBmV18"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FDIk/oBFcZsK0axyNdCmA+zsrO2i42QeMKgJRp5h3uLvfRMCIHN2hDnd61fqSEts/nMJNjHVkgL5SqQFCoF8Dg"}}, "unsigned": {"age_ts": 1570042029493}}YeQa$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1754}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o"], "type": "m.room.history_visibility", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042028275, "hashes": {"sha256": "wlAcVv/+iIIOr1LgJ+qCVWuiXNRg+f5r0Evz4pqDnbs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qWjX4C5nirB/Vrobmkq4J5xinJq/NBD54d0alJq14raFVcsLPag0L82GlxYsAKdZr1bMr8v2UtcN29ezRog5Cg"}}, "unsigned": {"age_ts": 1570042028275}}tXeQau$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800{"token_id": 351, "stream_ordering": 1753}{"auth_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c", "$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU", "$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA"], "prev_events": ["$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c"], "type": "m.room.join_rules", "room_id": "!dDqNKNFdIjCAwnyaxp:localhost:8800", "sender": "@anon-20191002_181700-332:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042027593, "hashes": {"sha256": "g+nYtW5c0ZFlliCRdSYPMyCHT9SazVn3ybLvlgJb0CM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ofB/drEzAsTsYB2Ga6y7/4Rced3RwGa8WRLInOG8kLw4Ona5VuS+HmnEGtLNK9EAWE8WbIR28UqhTKWDhU7AAw"}}, "unsigned": {"age_ts": 1570042027593}} ||178170090123457892001910022345678911234567820246831246789402345678950123478960123456789701234679801234678990123456789300123456781012789201234348800 H P  Vp $ \ * | Db0 v tB h6 JZzT"H(> Nn<   N21e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY 1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY 1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY 1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI-1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI,1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI+1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI*1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs ]1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs \1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI051e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI041e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA 1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA 1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA 1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw 1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk!1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk 1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk&1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk%1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI061e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc@1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc?1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc>1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAME1e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM1e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM1e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk'1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd81e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd81e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl01e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewk1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd81e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0 1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0 1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4]1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4\1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4[1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXII1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0 1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y En5QnUq8 T  pQ 7 T  p 7  5 T p7So6R8e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGosha2568e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0sha256 #8e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIsha256h8e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucsha256 8e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqIsha256 8e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0sha256 K8e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMsha256 8e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgsha256 8e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-Esha256 8e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fosha256 \8e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBssha256 F7e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUsha256U8e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMsha256V8e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1Usha2568e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsEsha2568e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5Msha2568e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90sha2568e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUsha256 8e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfAsha2568e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0sha2568e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIsha2568e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45ksha2568e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMsha25688e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgsha256 8e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRssha256 @8e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrUsha256>8e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzksha2568e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWcsha2568e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEsha256 :8e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMIsha2568e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blcsha256 8e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4Usha256 8e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wsha25608e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIsha256 R8e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0sha256I8e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tREsha2568e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8sha2568e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGoksha2568e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1gsha2567e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPssha256j8e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYsha256}8e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74sha256v8e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcsha256x8e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6csha256H8e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAsha256[8e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpMsha256 .8e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilksha25638e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78sha25637e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8sha2568e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgsha2568e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4sha256>8e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIsha2568e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBcsha2568e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanAsha2568e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsossha2568e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHIIsha2568e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIsha256 8e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDosha2568e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFssha2568e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4sha256 8e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krksha256 ~8e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnksha2568e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsksha256 28e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOUsha2568e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vcsha2568e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYsha2568e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEsha256 8e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcsha256 c8e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4sha256 ,1 Y d i  ' Y.BY^ UeQ3A$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_changeyVeQ31$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changesmSeQ? $WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibilityeReQ/ $IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rulesgQeQ3 $YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels PeQ']$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800joinaOeQ' $LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800m.room.create NeQ']$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800join MeQ']$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-340:localhost:8829joingLeQ3 $5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.statemKeQ? $S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibilityeJeQ/ $PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rulesgIeQ3 $UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levelsaHeQ' $d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829m.room.creategGeQ3 $wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800a.madeup.test.statemFeQ? $HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800m.room.history_visibilityeEeQ/ $z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800m.room.join_rulesgDeQ3 $sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800m.room.power_levels CeQ']$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800m.room.member@anon-20191002_181700-338:localhost:8800joinaBeQ' $b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800m.room.create AeQ']$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800joinm@eQ? $Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibilitye?eQ/ $9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rulesg>eQ3 $2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels =eQ']$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800joina<eQ' $vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800m.room.createm;eQ? $fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg!UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility  u_TeQw$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "332", "stream_ordering": 2015}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 38", "msgtype": "m.text"}, "depth": 48, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042231664, "hashes": {"sha256": "w1Qw7h0+EswsA798p9tGwXPTDz8fejBdEAS7dWdokv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uF81c77lwhOkVypZDW8WueYtu95ZJbOORLUs8INv9Hhkc4IGYNQN8xScuv2SEy+8ZO4PIfoAh9fU7efz3XwiCQ"}}, "unsigned": {"age_ts": 1570042231664}}SeQw$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "331", "stream_ordering": 2014}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 37"}, "depth": 47, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042231223, "hashes": {"sha256": "cYG86nGSX4yG9idhCwsTdlUYepxvrU61iyWHLTSKOf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zUr3hmIHllrny1ja2jueWOdyy138C6U4joISV5L13LMjWQBzwJR3FoDnIp/nLqabYIWR3s4n0HEHWMMWIu1GAg"}}, "unsigned": {"age_ts": 1570042231223}}ReQw$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "330", "stream_ordering": 2013}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 36"}, "depth": 46, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042230789, "hashes": {"sha256": "HX8lu3kqj8cS62M/LKXb/2ln6RZifvv6bgfTx6wyrW4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2yOwr0vVPtQhE5kkQKv8htwM6GDz7LxgDraHi6lVDyHIXwL9yG2rIfAmnn71vuAY1iOjA4iCtQ2vZnxF4jbhDA"}}, "unsigned": {"age_ts": 1570042230789}}QeQw$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "329", "stream_ordering": 2012}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 35", "msgtype": "m.text"}, "depth": 45, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042230255, "hashes": {"sha256": "NwIG2fcIp9o1D+sDw49U3XOGrOAwzf5a76a34SRayn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2ronb+TzQgVohxME8mXfDFN4KfMmSsJv3xE4uoPrlzIl25i+C5fl8jVQUQBMIAyFYoWO5/D8nHTQmTOYeM57DQ"}}, "unsigned": {"age_ts": 1570042230255}} =w?["Y u< X  v =  Y w >  Z !v=Y u<\#xw>a(8]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK6[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPDI6[!@anon-20191002_181700-43:localhost:8800CHTLJMKZABH8]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN8]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ6[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXE8]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK6[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXD8]!@anon-20191002_181700-409:localhost:8800GINWCFSINT8]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW6[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC6[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYC8]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!                        geQa$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1768}{"auth_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds", "$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "prev_events": ["$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs"], "type": "m.room.history_visibility", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042045193, "hashes": {"sha256": "v3Oi1rL3IXdbKEWCHBl50TvA2bhtbhMN6J0sTNWzmao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FeaAFO16rh+csCcLeRSaHDGTWuknf91Bw7JuOSVk9RxMU4PXpUjiJ9+RQzEJhv3SLpBlHd8lGVzEEmTaHIB0Cw"}}, "unsigned": {"age_ts": 1570042045193}}tfeQau$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1767}{"auth_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds", "$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "prev_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds"], "type": "m.room.join_rules", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042044585, "hashes": {"sha256": "LyayByQeV5DNAIE3Hv21IHmgx0s5hQTxeQmBcGfd5yU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1JMO/P1pw131jLHSAiRzel/EhdvmqnPPGRnFB4hVbHMlUAkbmGatpJz2ydJSFMfiWnYDAXSDsclc6Y4pXcwnCQ"}}, "unsigned": {"age_ts": 1570042044585}}keeQac$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1766}{"auth_events": ["$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "prev_events": ["$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g"], "type": "m.room.power_levels", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"users": {"@anon-20191002_181700-336:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042043803, "hashes": {"sha256": "NxhqxGjG9bEcjYhQC907y97vZUo6PTEKRE0wDRv3hsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CYoC9e4br1b8mgEI6csGhltzPH3daLxjo3f3hnOc/fOsmtcILGd6tM3Uy1izhiXUM1p65ZzApCABKoBtBslhBg"}}, "unsigned": {"age_ts": 1570042043803}}vdeQay$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 355, "stream_ordering": 1765}{"auth_events": ["$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc"], "prev_events": ["$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc"], "type": "m.room.member", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-336:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-336", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-336:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042043215, "hashes": {"sha256": "f4sU2xl+StRkkfQEBKiPaTYqPUFiK+yAa2734DlUV5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JhXDOPcOfxuFK4ZHsdkE0tMCwEzaENZ8x7vIWg8tQBY0FloNTo+ePspv8Q0g/PpycEB1aixenFeTT5hLvBgFDQ"}}, "unsigned": {"age_ts": 1570042043215}} P & 9PkkeQac$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1772}{"auth_events": ["$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "type": "m.room.power_levels", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"users": {"@anon-20191002_181700-338:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042050671, "hashes": {"sha256": "TWh0jvIXK+OncQUDo8QiZb0jW5I/jbvN4yDoNLrH0u0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IazVqWEZq2MmxBWEzpvu2ZubkHGBegVawmGvTAOehTwdkwQ4k1UXabxewbVGsl30lETNHC3I5wkIhCiYGCHVBg"}}, "unsigned": {"age_ts": 1570042050671}}vjeQay$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1771}{"auth_events": ["$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY"], "prev_events": ["$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY"], "type": "m.room.member", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-338", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-338:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042049682, "hashes": {"sha256": "ZcIfj5cS/8N/qRJKnpaffRTXqtezWu/EBvDYAbe3mI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KtmCATWUdIF+pLazcqveG/bvd6pczOsRSloXHRIzXx9ZsOlEuaGQY+iprwQFrelQyizXrQzrj0XNuwo8hO5lCg"}}, "unsigned": {"age_ts": 1570042049682}}iieQa_$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1770}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-338:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042048708, "hashes": {"sha256": "F/qOGHKohyxFMY+IPMA1JeYEFumrx4Allqu0hmhZbFE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DNqhEIliGo3HD7GwrD6FpuchI1nOIIT7BBSC38TIg5uQWW+vUE+jVF8BqpdxMUd3sZ4yib3bAmtgTBQ1J/gtDw"}}, "unsigned": {"age_ts": 1570042048708}}VheQa9$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw!TeraguiGoZoeOGFzlI:localhost:8800{"token_id": 356, "stream_ordering": 1769}{"auth_events": ["$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds", "$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc", "$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs"], "prev_events": ["$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM"], "type": "m.room.member", "room_id": "!TeraguiGoZoeOGFzlI:localhost:8800", "sender": "@anon-20191002_181700-337:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-337", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-337:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042046607, "hashes": {"sha256": "B9iViZkyLdh+41UBb/W0nPfmWz+iHO5DO+aymz1s52s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3T2Rb+VcGTd3njTLrD3+00lIjPL/dsBUz2HPyAFV2igFtFvPvms/aJi+mlhoER1rSrFeUGOaTqk5URZNvix0Aw"}}, "unsigned": {"age_ts": 1570042046607}} ~HR uCi7o=  | J ^,XL Qc1 j  Wp % ] +8& > > v D1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEZ1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEY1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4[1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU D/1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8z1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj00e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU81e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag~1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag}1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag|1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs/1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8|1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8{1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4 d1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEX1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k Lp> v E   M   Sj8 ! Y ' % _ -e3k9q? ]+wE}KQW1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIx1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIw1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIv1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIu1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU11e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzww1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwv1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwu1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEe1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcV1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcU1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw 1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg,1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg+1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM 1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM 1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ 1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ 1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ 1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk 1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk 1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk 1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg:1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg91e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg81e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o 1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o 1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o 1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc;1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsl1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsk1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsj0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQL0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQK0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQJ1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs61e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs51e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs41e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ d1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAO1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAN1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAM1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 a} { y w u sqomkigeca~ eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~ eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800~eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~~eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~}eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800~|eeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~{eeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~zeeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800~yeeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok!sJnuQYOyruhUpXDsLY:localhost:8800~xeeQ$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~weeQ$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800~veeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs!TeraguiGoZoeOGFzlI:localhost:8800~ueeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800~teeQ$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800~seeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800~reeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800~qeeQ$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800~peeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g!TeraguiGoZoeOGFzlI:localhost:8800~oeeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc!TeraguiGoZoeOGFzlI:localhost:8800 < Z x  % C a,Jh [y&`n]@anon-20191002_181700-346:localhost:8800@anon-20191002_181700-346:localhost:8800 anon-20191002_181700-346n]@anon-20191002_181700-345:localhost:8800@anon-20191002_181700-345:localhost:8800 anon-20191002_181700-345n]@anon-20191002_181700-343:localhost:8800@anon-20191002_181700-343:localhost:8800 anon-20191002_181700-343n]@anon-20191002_181700-344:localhost:8829@anon-20191002_181700-344:localhost:8829 anon-20191002_181700-344n]@anon-20191002_181700-342:localhost:8800@anon-20191002_181700-342:localhost:8800 anon-20191002_181700-342n~]@anon-20191002_181700-341:localhost:8800@anon-20191002_181700-341:localhost:8800 anon-20191002_181700-341n}]@anon-20191002_181700-339:localhost:8800@anon-20191002_181700-339:localhost:8800 anon-20191002_181700-339n|]@anon-20191002_181700-340:localhost:8829@anon-20191002_181700-340:localhost:8829 anon-20191002_181700-340n{]@anon-20191002_181700-338:localhost:8800@anon-20191002_181700-338:localhost:8800 anon-20191002_181700-338ny]@anon-20191002_181700-336:localhost:8800@anon-20191002_181700-336:localhost:8800 anon-20191002_181700-336nx]@anon-20191002_181700-333:localhost:8800@anon-20191002_181700-333:localhost:8800 anon-20191002_181700-333nw]@anon-20191002_181700-332:localhost:8800@anon-20191002_181700-332:localhost:8800 anon-20191002_181700-332nv]@anon-20191002_181700-331:localhost:8800@anon-20191002_181700-331:localhost:8800 anon-20191002_181700-331nu]@anon-20191002_181700-330:localhost:8800@anon-20191002_181700-330:localhost:8800 anon-20191002_181700-330nt]@anon-20191002_181700-329:localhost:8800@anon-20191002_181700-329:localhost:8800 anon-20191002_181700-329ns]@anon-20191002_181700-328:localhost:8800@anon-20191002_181700-328:localhost:8800 anon-20191002_181700-328nr]@anon-20191002_181700-327:localhost:8800@anon-20191002_181700-327:localhost:8800 anon-20191002_181700-327n]@anon-20191002_181700-347:localhost:8800@anon-20191002_181700-347:localhost:8800 anon-20191002_181700-347nq]@anon-20191002_181700-326:localhost:8800@anon-20191002_181700-326:localhost:8800 anon-20191002_181700-326np]@anon-20191002_181700-325:localhost:8800@anon-20191002_181700-325:localhost:8800 anon-20191002_181700-325no]@anon-20191002_181700-324:localhost:8800@anon-20191002_181700-324:localhost:8800 anon-20191002_181700-324nn]@anon-20191002_181700-323:localhost:8800@anon-20191002_181700-323:localhost:8800 anon-20191002_181700-323nm]@anon-20191002_181700-322:localhost:8800@anon-20191002_181700-322:localhost:8800 anon-20191002_181700-322nl]@anon-20191002_181700-321:localhost:8800@anon-20191002_181700-321:localhost:8800 anon-20191002_181700-321nk]@anon-20191002_181700-320:localhost:8800@anon-20191002_181700-320:localhost:8800 anon-20191002_181700-320nj]@anon-20191002_181700-319:localhost:8800@anon-20191002_181700-319:localhost:8800 anon-20191002_181700-319nz]@anon-20191002_181700-337:localhost:8800@anon-20191002_181700-337:localhost:8800 anon-20191002_181700-337 <V T  j  hx*(~2<$e/Q ]$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEm.room.join_rules!mTlCLZQCmfDuQsJxxp:localhost:8800mm@anon-20191002_181700-342:localhost:8800&e3Q ]$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14m.room.power_levels!mTlCLZQCmfDuQsJxxp:localhost:8800m$m+@anon-20191002_181700-342:localhost:8800 e'Q ]$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQom.room.member!mTlCLZQCmfDuQsJxxp:localhost:8800mm?@anon-20191002_181700-342:localhost:8800 e'Q  ]$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0m.room.create!mTlCLZQCmfDuQsJxxp:localhost:8800mUmí@anon-20191002_181700-342:localhost:8800&e3Q ]$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIa.madeup.test.state!PEcOacvKaBKpXjytEF:localhost:8800m̽m̾D@anon-20191002_181700-341:localhost:8800&e3Q ]$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIa.madeup.test.state!PEcOacvKaBKpXjytEF:localhost:8800m̺m̺@anon-20191002_181700-341:localhost:8800&e3Q ]$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oa.madeup.test.state!PEcOacvKaBKpXjytEF:localhost:8800m̷!m̸3@anon-20191002_181700-341:localhost:8800,e?Q ]$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIom.room.history_visibility!PEcOacvKaBKpXjytEF:localhost:8800m̯m̴@anon-20191002_181700-341:localhost:8800$e/Q ]$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYm.room.join_rules!PEcOacvKaBKpXjytEF:localhost:8800m̫m̬@anon-20191002_181700-341:localhost:8800&e3Q ]$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8cm.room.power_levels!PEcOacvKaBKpXjytEF:localhost:8800m̨zm̩@anon-20191002_181700-341:localhost:8800 ~e'Q ]$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwm.room.member!PEcOacvKaBKpXjytEF:localhost:8800m̦m̦@anon-20191002_181700-341:localhost:8800} e'Q  ]$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLkm.room.create!PEcOacvKaBKpXjytEF:localhost:8800m̢ṃY@anon-20191002_181700-341:localhost:8800 |e'Q ]$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4m.room.member!NajQnqYmGyTjxhFYar:localhost:8829m̗?m̚*@anon-20191002_181700-339:localhost:8800&ye3Q ]$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Noa.madeup.test.state!NajQnqYmGyTjxhFYar:localhost:8829m̒Im̗@anon-20191002_181700-340:localhost:8829,xe?Q ]$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUom.room.history_visibility!NajQnqYmGyTjxhFYar:localhost:8829m̒+m̗@anon-20191002_181700-340:localhost:8829$te/Q ]$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTkm.room.join_rules!NajQnqYmGyTjxhFYar:localhost:8829m̒m̗@anon-20191002_181700-340:localhost:8829&se3Q ]$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4m.room.power_levels!NajQnqYmGyTjxhFYar:localhost:8829m̑m̗@anon-20191002_181700-340:localhost:8829 re'Q ]$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4m.room.member!NajQnqYmGyTjxhFYar:localhost:8829m̑m̗@anon-20191002_181700-340:localhost:8829q e'Q ]$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3sm.room.create!NajQnqYmGyTjxhFYar:localhost:8829m̑~m̗@anon-20191002_181700-340:localhost:8829 pe'Q ]$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfcm.room.member!NajQnqYmGyTjxhFYar:localhost:8829m̔ m̔@anon-20191002_181700-340:localhost:8829&oe3Q ]$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOga.madeup.test.state!sJnuQYOyruhUpXDsLY:localhost:8800m̌zm̌@anon-20191002_181700-338:localhost:8800,ne?Q ]$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqsm.room.history_visibility!sJnuQYOyruhUpXDsLY:localhost:8800m̆m̈@anon-20191002_181700-338:localhost:8800$me/Q ]$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7Am.room.join_rules!sJnuQYOyruhUpXDsLY:localhost:8800m}m@anon-20191002_181700-338:localhost:8800&le3Q ]$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90m.room.power_levels!sJnuQYOyruhUpXDsLY:localhost:8800mxom{@anon-20191002_181700-338:localhost:8800  lneQae$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1775}{"auth_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90", "$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs"], "type": "a.madeup.test.state", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042055802, "hashes": {"sha256": "fcIGQ/xtSUdFuKR1cvIPxf4e6ZHpFDwIKZWQb0pxKJQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lyrqacOWO7temdkdzxcOz8mDnorVC1B0fl7KTWYuV4bPPBFhx+dpw9qYuRd/4VvKd0nO4llT23QPoKCEz33eDA"}}, "unsigned": {"age_ts": 1570042055802}}meQa$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1774}{"auth_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90", "$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A"], "type": "m.room.history_visibility", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042054344, "hashes": {"sha256": "6rQeSuTTLbDxiDDNGSw9bxaH34icdlrBwyeukPxmDAM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QaYs4g1H1XUWpeljtbRYoHKoTG8P5zh9j/kohsvPmNZ95yvud+OJwB+HHuuIpfm26jTKeUCowkex1aqyb7CEAg"}}, "unsigned": {"age_ts": 1570042054344}}tleQau$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800{"token_id": 357, "stream_ordering": 1773}{"auth_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90", "$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY", "$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok"], "prev_events": ["$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90"], "type": "m.room.join_rules", "room_id": "!sJnuQYOyruhUpXDsLY:localhost:8800", "sender": "@anon-20191002_181700-338:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042051978, "hashes": {"sha256": "TT+FZySLJw3BwTuWhaFLuf6GPj5O/BF2Jgrst0ZH4GY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tnl7MGZSt5Y6aGRbbMohCBI4gkxXuHy0Du0673fIgBHZfmiWRuAT4Tnz8l04cIpMGP0WTGvIyQzlNJsm4szSCQ"}}, "unsigned": {"age_ts": 1570042051978}} ~z v r n j fb^ZVRNJFIeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800HeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800GeeQ$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800FeeQ$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800EeeQ$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800DeeQ$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800CeeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800BeeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800AeeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800@eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800?eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800>eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800=eeQ$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800<eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800;eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800:eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:88009eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:88008eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:88007eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:88006eeQ$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:88005eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:88294eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:88293eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:88292eeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:88291eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:88290eeQ$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829/eeQ$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829.eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800-eeQ$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A!sJnuQYOyruhUpXDsLY:localhost:8800,eeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800  jqeQaa$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1778}{"auth_events": ["$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s"], "prev_events": ["$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s"], "type": "m.room.member", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"membership": "join", "displayname": "anon-20191002_181700-340", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-340:localhost:8829", "origin": "localhost:8829", "origin_server_ts": 1570042057111, "hashes": {"sha256": "YFyRJqZHCWL9NNd6beMwdSTBjYs1BWCXQD9VcQa5kfw"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "v1ob1Wl3/iQmpgSUWaI7XE8imTHMmL5JeY3uaFA7Yhl+ND2eUxDxpPbKYn3jrrSeUxoHQF/QxmapluFv++4bDg"}}, "unsigned": {"age": 1471}}]peQaG$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1777}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"room_version": "4", "creator": "@anon-20191002_181700-340:localhost:8829"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057086, "hashes": {"sha256": "8yunQ1kDV+WMDLk+uHjEaY5PfvXIV2G23VX2mKCAe/4"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "+a9pgZj3SNT5PR6rtlP52QjfjTTZGBk/VCf4tE4hafWX33RVJAg9ykt/9a+Oc3QAffh58/Eyn9DmHfGT+00AAA"}}, "unsigned": {"age": 1496}}'oeQ!$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 1776}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-339", "membership": "invite"}, "depth": 7, "hashes": {"sha256": "P3T1kClxH38O7jpeL7KR0s5Dyh3UpsRgyfXzWC3VnRY"}, "origin": "localhost:8829", "origin_server_ts": 1570042057737, "prev_events": ["$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No"], "prev_state": [], "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "state_key": "@anon-20191002_181700-339:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "2fw5DCbf+HUzJ/3mZTD+A9Z4rVVuM/zJZMiHeWm/1pByd6/JO+N+teyhexIsSy4p6wZMDA7MCw3Hgsqc4H14AA"}, "localhost:8800": {"ed25519:a_OdAo": "FpIOqo9/oWVppW8Flub+lCVSppHnwAcmOp2k+q7I8DcUvArcVuNvnkrNWc3OV83gP2j8YLIWiWSvL9bsKffKDw"}}, "unsigned": {"age": 5, "invite_room_state": [{"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-340:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-340", "membership": "join"}, "sender": "@anon-20191002_181700-340:localhost:8829", "state_key": "@anon-20191002_181700-340:localhost:8829", "type": "m.room.member"}]}} P 1P`ueQaM$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1785}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo"], "type": "a.madeup.test.state", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057289, "hashes": {"sha256": "S1o+zDGdA+YVObKUkY1TgoHwJACFuEKjlm3MDAJhJes"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "g4Z+nqNf+s9RD+WH/iXX3Td9fqPZSkmd6gbl1OJdln9KWYSdx1q1wBymS4byHTnHW1ZuVzN1eoxeWjQpHQbcDA"}}, "unsigned": {"age": 1293}}yteQa$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1784}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk"], "type": "m.room.history_visibility", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057259, "hashes": {"sha256": "4BUNyAKfc7h27mSkqLpwzMzD7qlLDyamJGk9QukdRL0"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "96AdrMmnTeHVbcRUN6GLwnR3nFnMOnCfLfmuBuiKYLSBlWmsLPidbWoQr1YHa5G7eLNXwXyD9OcXTo+lNDMmAw"}}, "unsigned": {"age": 1323}}hseQa]$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1780}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4"], "type": "m.room.join_rules", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057235, "hashes": {"sha256": "fiedibKwhG3sjCyCVuT5YyZQJI0SUyfcqjuWGOSNq/M"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "rgKaXRI6G3djPmDnZJXu0lRcW3IBEidFRNu6xKjLrMgi9CAEUhOVX6J5MyeHkasQKiwz7650AiqVVybBkOhPDw"}}, "unsigned": {"age": 1347}}_reQaK$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829{"outlier": true, "stream_ordering": 1779}{"auth_events": ["$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "prev_events": ["$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4"], "type": "m.room.power_levels", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-340:localhost:8829", "content": {"users": {"@anon-20191002_181700-340:localhost:8829": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042057138, "hashes": {"sha256": "urpb4M5YZxWrTGeuk/aJ2IdCzodHImJaMByFXSJCT5A"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "K5CxBWJ34uCb9P2EvW+CcD1oqiWV+LWnzIfdw2OFG9nirG4kVG7AsrcEWeGjqPRkJEeVpnTtrt3p2enA4pFHDw"}}, "unsigned": {"age": 1444}} a} { y w u sqomkigeca~,eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~+eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~*eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~)eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~(eeQ$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~'eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~&eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~%eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~$eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~#eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~"eeQ$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~!eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~ eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800~eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:8829~eeQ$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s!NajQnqYmGyTjxhFYar:localhost:8829 ,NC 8 - { " p  e ZOD9.|#qf VeL$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGoksha256]B; -YcZi[6VeL$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yressha256\E6jD7" 4g/sX|VeL$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwsha256r2/u6;lͿEj(Shq<tTiVeL$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcssha2568Iʓ;ZauJ bQd.K3)VeL$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90sha256`[ѩ z "sKޗwG IorN'VeL$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0sha256[H pmoĭVYI!ymVeL$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQsha256^?ZMqx LӓTM|Y1:4\VeL$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4sha256Vn񲪇ik{F J(2aM*2ZVeL$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwgsha256L;cN(6jh4*aER7VeL$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brosha256菛|HɭW*Ϲ{պPpxItVeL$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEsha256,q`a' J?e-#<\]!V{֑VeL$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0sha256;#:S["ttBZg4mVeL$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgsha256MQ w7< ‡. Hֈ2uVeL$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUsha256kөaUr @]G=&*zeVeL$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257ssha256`%g;ʥ,Bó$r۴]MV eL$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6ssha256Y%i@gz3;YqY:fv5V eL$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74sha256%WL;}q=i ' V eL$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Micsha256%=Lbm"z\i]zU 3'|?2'V eL$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00sha2563ȘBi/μPankMV eL$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMsha256> +?n/Nge ^5zVeL$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMsha2568_q!!P oK OP%SVeL$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcsha256Ij9XFXyT'VeL$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIsha256Nl,E[mءpt$VeL$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMsha256puD$uC˯fŀzڥPWgPdVeL$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVksha256HשNQ"Sq@jIX&ݓIVeL$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEsha256齰}}›pn!L5"[5ZcдVeL$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14sha256+"K 놡7_=h57'^VeL$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQosha256XA[24DαodUHb0Oo VeL$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0sha2567{ҒWng7!)縮|*_Um-V~eL$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIsha2567􌑒ѫg|qV}eL$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYIsha256n SC7gfjRU9F>|4eV|eL$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4osha256nSㄪ#l APCVoV{eL$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIosha256Yl*}Gr=RPf6/29'VzeL$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYsha256!,#_41I1 L'MGxsVyeL$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8csha256`R<(Ԭc-mscpX1;VxeL$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwsha2569{rƌ9yjb  VweL$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLksha256- !뎤4PO)ߟm4wԀVveL$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4sha256└+<6:Tg[cz QHCnVueL$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Nosha256䣇~PA)E/.v-fԚ)VteL$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUosha256K;߃@<@+\Z!JVseL$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTksha256<%c:Pƪ*VqeL$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4sha256Ut[Rk)qu=? ERn5QnVr9m U  q 8 TQ  p 7  S5 o4P68e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwsha2568e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEsha256g8e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Ysha2568e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOwsha2568e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsgsha2568e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgsha256+8e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4sha256 8e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUsha2568e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIsha256 8e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vcsha2568e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMsha256 8e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih4sha2568e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8sha256 8e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMsha256 8e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367essha256 8e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQsha256 8e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcsha256 8e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMsha2568e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4sha2567e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4sha256N8e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8sha2568e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEsha256K8e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMsha2568e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8sha2568e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_csha2568e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtMsha2568e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngsha256X8e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQsha256S8e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648sha256d8e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIsha256 38e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwsha2568e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8sha2568e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUsha2568e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4sha2568e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8sha256=8e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYsha256d8e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqssha256T8e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvksha256 28e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEsha2568e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQsha2568e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_ksha256z8e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQsha2568e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIsha2568e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tEsha256^8e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Msha256=8e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhYsha256 $8e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550sha256a8e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9gsha2568e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktUsha2568e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAsha2568e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Usha2568e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Isha256$8e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQsha256 <8e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcsha2568e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYosha256p8e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyUsha2568e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIsha256N8e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAsha256 E8e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUsha2568e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tEsha2568e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQsha256 78e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXssha2568e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUsha256P8e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wsha2568e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAsha256=8e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEssha256P8e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYsha2567e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwgsha256/8e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIsha256 "}.T c l    &ThgvLU}m@eQ? $BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibilitye?eQ/ $UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rulesg>eQ3 $Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels =eQ']$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800a<eQ' $yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.createg;eQ3 $cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state :eQ']$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800m9eQ? $YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibilitye8eQ/ $W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rulesg7eQ3 $Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levels 6eQ']$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829a5eQ' $h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829m.room.create 4eQ']$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800y3eQ31$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes2eQ3A$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_changey1eQ31$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changesm0eQ? $r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibilitye/eQ/ $-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rulesg.eQ3 $lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels -eQ']$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800a,eQ' $AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.createy+eQ31$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes*eQ3A$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_changey)eQ31$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changesm(eQ? $WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibilitye'eQ/ $IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:8800m.room.join_rulesg&eQ3 $YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800m.room.power_levels %eQ']$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800m.room.member@anon-20191002_181700-341:localhost:8800a$eQ' $LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800m.room.create #eQ']$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829m.room.member@anon-20191002_181700-339:localhost:8800g"eQ3 $5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No!NajQnqYmGyTjxhFYar:localhost:8829a.madeup.test.statem!eQ? $S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:8829m.room.history_visibilitye eQ/ $PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk!NajQnqYmGyTjxhFYar:localhost:8829m.room.join_rulesgeQ3 $UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:8829m.room.power_levels  ukyeQac$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1791}{"auth_events": ["$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "type": "m.room.power_levels", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"users": {"@anon-20191002_181700-341:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042062970, "hashes": {"sha256": "CGYTiutpkLhJ9kMCDfirJkZfnAQK45LYQunQXxbfYy8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oy3LylN9UF43eh+7IhqPpVqXG5DXz9u7uqtYdbATLh+h0C8zm6dWFPj+uzBnVhmvLRoxnrCmUBHdcEhXUfCgCA"}}, "unsigned": {"age_ts": 1570042062970}}vxeQay$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1790}{"auth_events": ["$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk"], "prev_events": ["$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk"], "type": "m.room.member", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-341", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-341:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042062474, "hashes": {"sha256": "YrLA2CmM57dLKCYajZo2sD04DXrB4zk7S3+JNfkh15Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MeGggMaV7GjZ3527Iz8TnxrmFg9LUsReuvbptN1M7pYiuTncSaoE89GTpGPxvBd1FUz4ZveGomwGKEsWYR1KAA"}}, "unsigned": {"age_ts": 1570042062474}}iweQa_$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1789}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-341:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042061551, "hashes": {"sha256": "pfz6n+1jraDbfRLaqSmt28aDM2hmrL7k66WwXwwymUw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XdD3zYUH7Vh0ISPIyS1SQs4ni81o114/jOmbFa/b2qhKSOZkAgXhvBTRUurAXsDTEqqIaZaITsVD/m/KIdVWBw"}}, "unsigned": {"age_ts": 1570042061551}}veQ?=$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829{"stream_ordering": 1788}{"auth_events": ["$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4", "$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s", "$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk"], "prev_events": ["$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc"], "type": "m.room.member", "room_id": "!NajQnqYmGyTjxhFYar:localhost:8829", "sender": "@anon-20191002_181700-339:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-339", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-339:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042058559, "hashes": {"sha256": "ozxjg6SMSy078yYP7bec22mtD3+HFR1x6y4ZuAeMooo"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "gqyB4dbOdQhKt2gphaOKMtVSwx41HDIawuPoGUoskAIjQVoLCZM8FPgaeGXSyPcNJBKHJXh1Ob/4yRz/McE3AQ"}, "localhost:8800": {"ed25519:a_OdAo": "TEUxUF9zq549k0XPfvESpC9oVl8bKjurgya9b7E7/ij/y+sEJ70mlsCFsi5qV+iHGHfpkfBQqfueswsSUq4aCQ"}}, "unsigned": {"replaces_state": "$0Itx29eJKAEp1C187C9LhJe2HoAKHeYQQmHIP13ovfc", "age_ts": 1570042058561}} 8Oc( w <  P  d ) x =  Q e*y>Rf+z?Sg,{@8C]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8B]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8A]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8@]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8?]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8>]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8=]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8<]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH8;]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8:]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE89]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH88]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS87]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE86]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP85]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ84]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM83]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO82]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF81]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT80]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8/]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZ8.]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8-]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8,]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY8+]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM8*]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ8)]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO8(]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJ8']!@anon-20191002_181700-369:localhost:8800PMLSUBDYRA8&]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJ8%]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXT8$]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWO8#]!@anon-20191002_181700-366:localhost:8800FABJQITKMR8"]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXF8!]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTB8 ]!@anon-20191002_181700-360:localhost:8800XKNFVZJCRE8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJ8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSUR8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBR8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERT8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILN8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFN8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKH8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJI8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRW8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMP8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAI8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFR8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYS8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZ8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROP8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYU8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHA8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML8 ]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP8 ]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW *Dc1Ui7o= puC>{)IO [j8# v D  | J  P  cCR0Rl4rzMzq53DIP0pH1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak 1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I 41e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 $1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsJ1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijku1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug91e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cb1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow@1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cm1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EI1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 01e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE $1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8t0e$bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYD1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4q1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw%1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx901e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E 1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4J1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg A1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M_1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8h2 >L\ l 0 | @  P  ` $ p 4DTNy2]W}9b&9 Q !RYNJAGdRhIlwRZFbrO:localhost:8800publicshared9 Q !MqstbCLZIQFiYNHrqR:localhost:8800publicshared9 Q !WuiaqqIOvBjgETqdus:localhost:8800publicshared9 Q !bQDOrbAknnQZfUbhgS:localhost:8800publicsharedA Q !GSxvxNevpCiwmFCHys:localhost:8800invitesharedcan_joinT QC !yfizglmCXdcqCgDrTr:localhost:8800#__ANON__-16:localhost:8800publicsharedA Q !XnUZiYJDWVNGfsBnGz:localhost:8800invitesharedcan_joinT QC !ePtMOPPOgOcBIMNZpn:localhost:8800#__ANON__-15:localhost:8800publicshared9 Q !YGUjVdVdpcQoGkRnWB:localhost:8800publicsharedD Q# !IZkczIYykpZDvjuUWn:localhost:8800A room namepublicshared9 Q !zuCqeooOnfWkYrQdxA:localhost:8800publicsharedD Q# !vttkrtSyHEJXVMlvLo:localhost:8800A room namepublicshared9 Q !whuymJoLfUdkFdxoyE:localhost:8800publicsharedD Q# !yTQmLDAxZscWKLMSWh:localhost:8800A room namepublicsharedD Q# !eWRdwtyqHvuxZFvhNS:localhost:8800A room namepublicsharedD Q# !UGVFuRGyPQmBbGsEDo:localhost:8800A room namepublicsharedD Q# !AMLmLqizBFklpqKibP:localhost:8800A room namepublicsharedD Q# !rWGwSSefrZzQYCYFHs:localhost:8800A room namepublicsharedD Q# !HXfrGcvJCbRItyQLVE:localhost:8800A room namepublicsharedD Q# !HusOrLtWZTLbmQZxmm:localhost:8800A room namepublicsharedD Q# !BpTqIemsWFZIqTcgJO:localhost:8800A room namepublicsharedD Q# !YQATbgbLImCDamiDHC:localhost:8800A room namepublicsharedD Q# !svYOOXWZHtQQzlMcEP:localhost:8800A room namepublicshared9~ Q !CGckPHdSYcIocFvRAq:localhost:8800publicshared9} Q !BoyzlWNkRPncpDjBDg:localhost:8800publicshared9| Q !djwLhpJUYOKsgQtrky:localhost:8800publicshared9{ Q !bkwyieHZwSMJfuSKvV:localhost:8800publicshared9z Q !XcaKxZsPvbZhAGKKdx:localhost:8800publicshared9y Q !jDKAOtmeAGbYTpwyEW:localhost:8800publicshared9x Q !JYLMokjOhZZlmbZvTf:localhost:8800publicshared9w Q !zoTQAhGwmDDUECKtbL:localhost:8800publicshared9v Q !NeYaCeYNFATCqlrlGT:localhost:8800publicshared9u Q !YtVXQjSPgVtbxrzUOA:localhost:8800publicshared9t Q !zsXPhIPzeXXLvuazzQ:localhost:8800publicshared9s Q !WFHIeSFQyuugGeBFxW:localhost:8800publicshared9r Q !QMrkSPlQDGborAyWtQ:localhost:8800publicshared9q Q !mBQpGaIiadEuKBXfOw:localhost:8800publicshared9p Q !xXYMxashIZAUOTuGAJ:localhost:8800publicshared9n Q !ozgnwUlebxvzLVwyHW:localhost:8800publicshared9o Q !QcaNrIiUsWpTiVGOnt:localhost:8800publicshared9l Q !csWEXfVEVxdviNvgAd:localhost:8800publicshared9m Q !rQeYcODvQiLsOIbQrJ:localhost:8800publicshared9k Q !aHyAJEOSdKqTiRjOvw:localhost:8800publicjoined9j Q !hnQOBexFYpvJntEChZ:localhost:8800publicjoined9i Q !hDAzBWYEyRVBRlrCHh:localhost:8800publicshared9h Q !fkvdYkesQOFCAQkzky:localhost:8800publicshared9g Q !OWGKxAmTrHLciIdrJi:localhost:8800publicshared9f Q !aknLNLxfChlLvFYhkJ:localhost:8800publicshared9e Q !HWTlaNxUKnDsrtlOxU:localhost:8800publicshared9d Q !pUSFAnuwUuMlbiInDR:localhost:8800publicshared9c Q !SrMQpDMFREKRMELwbL:localhost:8800publicjoined9b Q !bNSXSTadOMhIrYpMzH:localhost:8800publicjoined9a Q !TlJCaYlCkOOVzFDlLx:localhost:8800publicjoined9` Q !bOSxzttDtclnrWnLov:localhost:8800publicshared9_ Q !DnUHoxreGexNmjSVpq:localhost:8800publicshared9^ Q !rwUuVBrftGHDBOlEZm:localhost:8800publicshared9] Q !CkNvQnbApPIcuKygDk:localhost:8800publicshared9\ Q !NboFFVLpJHTeuUKCjM:localhost:8800publicshared9[ Q !aZwMKYDXJRlSKjQNWM:localhost:8800publicshared9Z Q !XiwGxQKwjgutEClKUy:localhost:8829publicshared9Y Q !mTlCLZQCmfDuQsJxxp:localhost:8800publicshared9X Q !PEcOacvKaBKpXjytEF:localhost:8800publicshared I(h@ X 0  h @  x P ( X0xP(`8pH `8xP(pH  z S ,  i B   X 0 `(@(@P'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hgjYwwwjWJNgwrzOto:localhost:8800_'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800p'Q!iKezIvJyjkNqKayFju:localhost:8800 f'Q!iKezIvJyjkNqKayFju:localhost:8800 e'Q!iKezIvJyjkNqKayFju:localhost:8800 d'Q!iKezIvJyjkNqKayFju:localhost:8800 c'Q!iKezIvJyjkNqKayFju:localhost:8800 b'Q!iKezIvJyjkNqKayFju:localhost:8800 a'Q!iKezIvJyjkNqKayFju:localhost:8800 `'Q!iKezIvJyjkNqKayFju:localhost:8800 _'Q!iKezIvJyjkNqKayFju:localhost:8800 ^'Q!iKezIvJyjkNqKayFju:localhost:8800 ]'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800 'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800  }}eQa$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1795}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o"], "type": "a.madeup.test.state", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"my_key": 1}, "depth": 7, "prev_state": [], "state_key": "this_state_does_not_change", "origin": "localhost:8800", "origin_server_ts": 1570042067625, "hashes": {"sha256": "05yjpOCQtJ6Xn9bEDTHgCVxTg/QNIryHL81cS8lGElg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4egdGHbaDsSFrOzf0Ys/nGfUXXuZ3o0fJkfSRbTDZfQhnJxuYicWVByxsZreH6JWD3CVS8rcWmNiF4rmYUBFAQ"}}, "unsigned": {"age_ts": 1570042067625}}~|eQa $5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1794}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo"], "type": "a.madeup.test.state", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042066721, "hashes": {"sha256": "oYexf+/pI0mIrV4vRK1ztReRmszCROEiQ+WMKslqSjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6AOanfXqATKIuDGFabJ+UFUafR90AzhIApWZXRg7MS7xbvpQNy29yW0Jl0AhO+RB26pdhONkQzeSlNZb7UemDQ"}}, "unsigned": {"age_ts": 1570042066721}}{eQa$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1793}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY"], "type": "m.room.history_visibility", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042064871, "hashes": {"sha256": "cW5183KFCY80w7WbKa8NkQtTivHzk28EWRM31ZAaMx8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u6YAz1SRjvh8GCDMpLwLUkHRyv/OBmSKZqk9FrpzZDzspu/1hMJh7ueUhLZmtWB3wZYZ+L8ZxTxJ/SBehGtIDg"}}, "unsigned": {"age_ts": 1570042064871}}tzeQau$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1792}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c"], "type": "m.room.join_rules", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042063777, "hashes": {"sha256": "1DM5cz6mwLbIHf5NYf3Y9UHH97FYjDWeK/tVbKrNVwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TMEVW9w3nuOuHRFdkIMx51G3rS7cW4OAM+7F1PVVF1MlDf6qwP79RRR9xZxbZ26M2TDk+I/q3pse9PQ/L53jCA"}}, "unsigned": {"age_ts": 1570042063777}} Cj8p> v D  | J  P  V $ \ *b0h6n< tBzHN1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wx1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91ww1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4'1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4&1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wv1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIw1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIv1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIu1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE 1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE 1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE I1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE H1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4k1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4j1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4i1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo 1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo 1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo 1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY(1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY'1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY&1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw X1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw W1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw V1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc11e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc01e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc/1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc 71e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc 61e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc 51e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI 41e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI 31e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI 21e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4ga1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g`1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g_1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC501e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC501e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAJ1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAI1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAH1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAG1e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic !  @ P K y HXS^iQ3 ew!NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.state$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2QoQ? ev!NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibility$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-YgQ/ eu!NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rules$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzoiQ3 et!NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA Q']es!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3YcQ' er!NboFFVLpJHTeuUKCjM:localhost:8800m.room.create$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs{Q31eq!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYQ3Aep!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_change$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio{~Q31eo!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8o}Q? en!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibility$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsg|Q/ em!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rules$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEi{Q3 el!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y zQ']ek!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokcyQ' ej!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.create$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresixQ3 ei!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw wQ']eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs vQ']eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4ouQ? eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibility$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90gtQ/ eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rules$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0isQ3 eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levels$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQcrQ' eh!XiwGxQKwjgutEClKUy:localhost:8829m.room.create$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg{qQ31eg!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIpQ3Aef!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_change$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM{oQ31ee!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkonQ? ed!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibility$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkgmQ/ ec!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rules$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEilQ3 eb!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 kQ']ea!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQocjQ' e`!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.create$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0{iQ31e_!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIhQ3Ae^!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_does_not_change$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI{gQ31e]!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4oofQ? e\!PEcOacvKaBKpXjytEF:localhost:8800m.room.history_visibility$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo A=k6a,Z% Q   J  v A m :  f 1_*V!O{Frb-Y$4]@anon-20191002_181700-374:localhost:8800m4Q4]@anon-20191002_181700-373:localhost:8800m4P4]@anon-20191002_181700-372:localhost:8800m4O4]@anon-20191002_181700-371:localhost:8800m4N4]@anon-20191002_181700-370:localhost:8800m4M2[@anon-20191002_181700-36:localhost:8800m44]@anon-20191002_181700-369:localhost:8800m4L4]@anon-20191002_181700-368:localhost:8800m4K4]@anon-20191002_181700-367:localhost:8800m4J4]@anon-20191002_181700-429:localhost:8800m44]@anon-20191002_181700-428:localhost:8800m44]@anon-20191002_181700-427:localhost:8800m44]@anon-20191002_181700-426:localhost:8800m44]@anon-20191002_181700-425:localhost:8800m44]@anon-20191002_181700-424:localhost:8800m44]@anon-20191002_181700-422:localhost:8800m4~4]@anon-20191002_181700-421:localhost:8800m4}4]@anon-20191002_181700-420:localhost:8800m4|2[@anon-20191002_181700-41:localhost:8800m44]@anon-20191002_181700-419:localhost:8800m4{4]@anon-20191002_181700-418:localhost:8800m4z4]@anon-20191002_181700-417:localhost:8800m4y4]@anon-20191002_181700-416:localhost:8800m4x4]@anon-20191002_181700-415:localhost:8800m4w4]@anon-20191002_181700-414:localhost:8800m4v4]@anon-20191002_181700-413:localhost:8800m4u4]@anon-20191002_181700-412:localhost:8800m4t4]@anon-20191002_181700-411:localhost:8800m4s2[@anon-20191002_181700-40:localhost:8800m44]@anon-20191002_181700-409:localhost:8800m4r4]@anon-20191002_181700-408:localhost:8800m4q4]@anon-20191002_181700-407:localhost:8800m4p4]@anon-20191002_181700-405:localhost:8800m4o4]@anon-20191002_181700-404:localhost:8800m4n4]@anon-20191002_181700-403:localhost:8800m4m4]@anon-20191002_181700-401:localhost:8800m4l4]@anon-20191002_181700-400:localhost:8800m4k2[@anon-20191002_181700-39:localhost:8800m44]@anon-20191002_181700-399:localhost:8800m4j4]@anon-20191002_181700-398:localhost:8800m4i4]@anon-20191002_181700-397:localhost:8800m4h4]@anon-20191002_181700-396:localhost:8800m4g4]@anon-20191002_181700-395:localhost:8800m4f4]@anon-20191002_181700-394:localhost:8800m4e4]@anon-20191002_181700-393:localhost:8800m4d4]@anon-20191002_181700-392:localhost:8800m4c4]@anon-20191002_181700-391:localhost:8800m4b4]@anon-20191002_181700-390:localhost:8800m4a2[@anon-20191002_181700-38:localhost:8800m44]@anon-20191002_181700-389:localhost:8800m4`4]@anon-20191002_181700-388:localhost:8800m4_4]@anon-20191002_181700-387:localhost:8800m4^4]@anon-20191002_181700-386:localhost:8800m4]4]@anon-20191002_181700-385:localhost:8800m4\4]@anon-20191002_181700-384:localhost:8800m4[4]@anon-20191002_181700-383:localhost:8800m4Z4]@anon-20191002_181700-382:localhost:8800m4Y4]@anon-20191002_181700-381:localhost:8800m4X4]@anon-20191002_181700-380:localhost:8800m4W2[@anon-20191002_181700-37:localhost:8800m44]@anon-20191002_181700-379:localhost:8800m4V4]@anon-20191002_181700-378:localhost:8800m4U4]@anon-20191002_181700-377:localhost:8800m4T4]@anon-20191002_181700-376:localhost:8800m4S4]@anon-20191002_181700-375:localhost:8800m4R }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    t h \ P D 8 ,   x l ` T H < 0 $  |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pd` m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4~ m4} m4| m4{ m4z m4y m4x m4w m4v m4u m4t m4s m4r m4q m4p m4o m4n m4m m4l m4k m4j m4i m4h m4g m4f m4e m4d m4c m4b m4a m4` m4_ m4^ m4] m4\ m4[ m4Z m4Y m4X m4W m4V m4U m4T m4S m4R m4Q m4P m4O m4N m4M m4L m4K m4J m4I m4H m4G m4F m4E m4D m4C m4B m4A m4@ m4? m4> m4= m4< m4; m4: m49 m48 m47 m46 m45 m44 m43 m42 m41 m40 m4/ m4. m4- m4, m4+ m4* m4) m4( m4' m4& m4% m4$ m4# m4" m4! m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4  m4 (P|pdXL@4(th\PD8,  x l ` T H < 0 $    th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 ( m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4~ m4} m4| m4{ m4z m4y m4x m4w m4v m4u m4t m4s m4r m4q m4p m4o m4n m4m m4l m4k m4j m4i m4h m4g m4f m4e m4d m4c m4b m4a m4` m4_ m4^ m4] m4\ m4[ m4Z m4Y m4X m4W m4V m4U m4T m4S m4R m4Q m4P m4O m4N m4M m4L m4K m4J m4I m4H m4G m4F m4E m4D m4C m4B m4A m4@ m4? m4> m4= m4< m4; m4: m49 m48 m47 m46 m45 m44 m43 m42 m41 m40 m4/x m4. m4- m4, m4+ m4* m4) m4( m4' m4& m4% m4$ m4# m4" m4! m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 IX' ] , ~ M xG 2 n yS"H^=-8cmi<tC R ! h 7  s B  0]@anon-20191002_181700-388:localhost:88000]@anon-20191002_181700-391:localhost:88000]@anon-20191002_181700-390:localhost:88000]@anon-20191002_181700-416:localhost:88000]@anon-20191002_181700-413:localhost:88000]@anon-20191002_181700-387:localhost:88000]@anon-20191002_181700-392:localhost:88000]@anon-20191002_181700-408:localhost:88000]@anon-20191002_181700-383:localhost:88000]@anon-20191002_181700-395:localhost:88000]@anon-20191002_181700-377:localhost:88000]@anon-20191002_181700-412:localhost:88000]@anon-20191002_181700-385:localhost:88000]@anon-20191002_181700-379:localhost:88000]@anon-20191002_181700-368:localhost:88000]@anon-20191002_181700-386:localhost:88000]@anon-20191002_181700-381:localhost:88000]@anon-20191002_181700-369:localhost:88000]@anon-20191002_181700-366:localhost:88000]@anon-20191002_181700-364:localhost:88000]@anon-20191002_181700-378:localhost:88000]@anon-20191002_181700-361:localhost:88000]@anon-20191002_181700-370:localhost:88000]@anon-20191002_181700-372:localhost:88000]@anon-20191002_181700-367:localhost:88000]@anon-20191002_181700-360:localhost:88000]@anon-20191002_181700-355:localhost:88000]@anon-20191002_181700-374:localhost:88000]@anon-20191002_181700-353:localhost:88000]@anon-20191002_181700-371:localhost:88000]@anon-20191002_181700-349:localhost:88000]@anon-20191002_181700-351:localhost:88000]@anon-20191002_181700-357:localhost:88000]@anon-20191002_181700-343:localhost:88000]@anon-20191002_181700-347:localhost:88000]@anon-20191002_181700-389:localhost:88000]J@anon-20191002_181700-319:localhost:8800I0]@anon-20191002_181700-345:localhost:88000]X@anon-20191002_181700-320:localhost:8800T0]R@anon-20191002_181700-329:localhost:8800Q0]Q@anon-20191002_181700-323:localhost:8800P0]O@anon-20191002_181700-321:localhost:8800N0]@anon-20191002_181700-358:localhost:88000]X@anon-20191002_181700-324:localhost:8800U0]@anon-20191002_181700-348:localhost:88000]f@anon-20191002_181700-331:localhost:8800e0]c@anon-20191002_181700-330:localhost:8800b0]}@anon-20191002_181700-342:localhost:8800|W0]@anon-20191002_181700-433:localhost:88000]@anon-20191002_181700-450:localhost:88000]@anon-20191002_181700-448:localhost:88000]@anon-20191002_181700-446:localhost:88000]]@anon-20191002_181700-328:localhost:8800\0]\@anon-20191002_181700-327:localhost:8800[0]Z@anon-20191002_181700-326:localhost:8800Y0]@anon-20191002_181700-430:localhost:88000]@anon-20191002_181700-428:localhost:88000]@anon-20191002_181700-425:localhost:88000]@anon-20191002_181700-421:localhost:88000]@anon-20191002_181700-418:localhost:88000]@anon-20191002_181700-415:localhost:88000]{@anon-20191002_181700-341:localhost:8800z0]z@anon-20191002_181700-339:localhost:8800y0]x@anon-20191002_181700-338:localhost:8800w0]v@anon-20191002_181700-337:localhost:8800u0]v@anon-20191002_181700-336:localhost:8800t0]s@anon-20191002_181700-334:localhost:8800q0]s@anon-20191002_181700-333:localhost:8800r0]p@anon-20191002_181700-332:localhost:8800j0]@anon-20191002_181700-398:localhost:88000]@anon-20191002_181700-393:localhost:88000]@anon-20191002_181700-404:localhost:88000]@anon-20191002_181700-394:localhost:8800 |t l d \  T ME=5-%eeQ$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw!wAyboOFgsOPwkmgMAI:localhost:8800߁eeQ$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800[eeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs!jYzridjeihmwPBuwLb:localhost:8800BeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800 QeeQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA!msMfSdLIAvklSSAnci:localhost:8800eeQ$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY!AWfbViAZparIjmDaVT:localhost:8800ԁeeQ$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo!XMNRkfscQXRjgYrOSd:localhost:8800eeQ$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800 WeeQ$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800xeeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE!aWbcZNVBalJilCEsdr:localhost:8800teeQ$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs!nteAxExBGJfaGIpuCx:localhost:8800eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg!WYyiQAVvitxsLZKVCG:localhost:8800 SeeQ$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok!BrssELMbasSzTFpIXm:localhost:8800(eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ!NFWKQvZkIwvecnREOC:localhost:8800ӁeeQ$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800eeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800N f < OfkeQac$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1799}{"auth_events": ["$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "type": "m.room.power_levels", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"users": {"@anon-20191002_181700-342:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042071332, "hashes": {"sha256": "J7plpVhkRtZjWLIhmQyj6w0RggX8uPNCZKIRw5TgcTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DL50rEZbm9jZVSZqUpG77uQJ8d9+iA/fDgbabqVOnyRzQz1Q5nv3Pxc5MyA/xssZqm8MTu81CJ4nNPvBNGewBA"}}, "unsigned": {"age_ts": 1570042071332}}veQay$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1798}{"auth_events": ["$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0"], "prev_events": ["$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0"], "type": "m.room.member", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-342", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-342:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042070747, "hashes": {"sha256": "yfuJlBzRPH8kCteyddq+jnSKirDDUUsja2wFy/kWmx8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z5xDyN1/NMGUNEG8FVZY/M/55tLERmx1WH5F09eGytraMH5SDNJrWiiVMLaSpMRvAvKFPnxIu/9ORY72iE9uBQ"}}, "unsigned": {"age_ts": 1570042070747}}ieQa_$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1797}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-342:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042069845, "hashes": {"sha256": "PIwmYZKD7kEyDqs/zP77d9BrEVWatMn2kBKyi3IUalA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k14C6ZY73iKiYVRL1/Qt9Dnx4eclYqUvI0e/rFVAB5kivROzLT8PSWZkHf9xKPGAEM8yV5eJ8kBNPbLbBvOZBQ"}}, "unsigned": {"age_ts": 1570042069845}}@~eQa $FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800{"token_id": 359, "stream_ordering": 1796}{"auth_events": ["$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c", "$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk", "$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw"], "prev_events": ["$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI"], "type": "a.madeup.test.state", "room_id": "!PEcOacvKaBKpXjytEF:localhost:8800", "sender": "@anon-20191002_181700-341:localhost:8800", "content": {"my_key": 2}, "depth": 8, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042068420, "hashes": {"sha256": "+zvqzeflTgmJJfYZvxSP2qsR1TkXHM0OJHVpCDGdfm8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8r4Xw45TEE2pQc53/uv+vRzrxKu2wy9fCyBKP+wcbNhe0kEZSEUFQ+sEn6ZB4cWyKp6nTFqWA1+e3/2Kt4AIBg"}}, "unsigned": {"age_ts": 1570042068420, "replaces_state": "$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o"}} T]  _  )Q_+4\| FQ']e=!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEjEQ3 eQ3Ae,!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_change$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio|=Q31e+!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8p<Q? e*!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibility$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsh;Q/ e)!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rules$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEj:Q3 e(!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y 9Q']e'!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokd8Q' e&!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.create$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresj7Q3 e%!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 6Q']e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 5Q']e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4p4Q? e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibility$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90h3Q/ e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rules$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0j2Q3 e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levels$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQd1Q' e$!XiwGxQKwjgutEClKUy:localhost:8829m.room.create$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg(0Q31ee !mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk/Q3Ae !mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_change$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM|.Q31e !mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVkp-Q? e !mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibility$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkh,Q/ e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rules$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thEj+Q3 e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 *Q']e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQod)Q' e!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.create$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0((Q31ee!PEcOacvKaBKpXjytEF:localhost:8800a.madeup.test.statethis_state_changes$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o <#yoe[Q~tj`VLB8.$G=3) ukaWMC9/%wmcYOE;1' }si_UKA7-[QG=3) yncXMB7,!  | q f [ P E : / $    u i ] Q E 9 - !  y m a U I = 1 %   } q e Y M A 5 )    u i ] Q E 9 - !  ymaUI=1% }qe ah aA a@ a? a> a= a< a; a: a8 a6 a5 a a4 a2 a0 a/ a. a- a+ a) a( a% a$ a" a! a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ap ao an am al ak aj ai ag af ae ad ac ab aa a` a_ a^ a] a\ a[ aY aX aV aU aS aR aP aO aM aL aJ aI aH aG aF aE aD aC aB a a a a} a| a{ ay ax aw av au at as ar aq m m m m m m m~ m{ mx mu mr mo ml mh me mb m_ m\ m[ mX mW mT mS mP mO mL mK mH mF mD mB m@ m> m= m: m8 m6 m5 m2 m. m, m* m( m% m" m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m{ my mw mv ms mq mo mW mU mS mQ mO mM mK mI mG mC mA m? m= m; m9 m8 m5 m3 m. m m m m m m m m m a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a  4 h 9md]c@anon-20191002_181700-363:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwo127.0.0.1hd]c@anon-20191002_181700-354:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAo127.0.0.1^d]c@anon-20191002_181700-362:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1wo127.0.0.1fd]c@anon-20191002_181700-361:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQo127.0.0.1ed]c@anon-20191002_181700-360:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAo127.0.0.1da[a@anon-20191002_181700-35:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZktzXlBCO3VtOXkzSUMwWAowMDJmc2lnbmF0dXJlIFjFHdYpTbi8oE2y053KhGtjHdFnV_qehQ_DKrJzWqqWCg127.0.0.1d]c@anon-20191002_181700-359:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAo127.0.0.1cd]c@anon-20191002_181700-358:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQo127.0.0.1bd]c@anon-20191002_181700-357:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAo127.0.0.1ad]c@anon-20191002_181700-356:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5Qo127.0.0.1`d]c@anon-20191002_181700-355:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwo127.0.0.1_ 9p  T I>w pC e]]Q=$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw@anon-20191002_181700-354:localhost:8800@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-354, e]]Q$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk@anon-20191002_181700-353:localhost:8800@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800leaveC e]]Q=$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ@anon-20191002_181700-353:localhost:8800@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800joinanon-20191002_181700-353E e]]Q=$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk@anon-20191002_181700-353:localhost:8800@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800inviteanon-20191002_181700-353C e]]Q=$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk@anon-20191002_181700-352:localhost:8800@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800joinanon-20191002_181700-352C e]]Q=$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0@anon-20191002_181700-351:localhost:8800@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800joinanon-20191002_181700-351E e]]Q=$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs@anon-20191002_181700-351:localhost:8800@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800inviteanon-20191002_181700-351C e]]Q=$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro@anon-20191002_181700-350:localhost:8800@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800joinanon-20191002_181700-3500 e]]Q$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY@anon-20191002_181700-349:localhost:8800@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800joinborisC e]]Q=$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY@anon-20191002_181700-349:localhost:8800@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800joinanon-20191002_181700-3490 e]]Q$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY@anon-20191002_181700-348:localhost:8800@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800joinborisC e]]Q=$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4@anon-20191002_181700-348:localhost:8800@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800joinanon-20191002_181700-348C e]]Q=$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40@anon-20191002_181700-347:localhost:8800@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800joinanon-20191002_181700-347E e]]Q=$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE@anon-20191002_181700-347:localhost:8800@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800inviteanon-20191002_181700-347C e]]Q=$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y@anon-20191002_181700-346:localhost:8800@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800joinanon-20191002_181700-346C e]]Q=$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok@anon-20191002_181700-345:localhost:8800@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800joinanon-20191002_181700-345C e]]Q=$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs@anon-20191002_181700-343:localhost:8800@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829joinanon-20191002_181700-343C e]]Q=$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4@anon-20191002_181700-344:localhost:8829@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829joinanon-20191002_181700-344E e]]Q=$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro@anon-20191002_181700-343:localhost:8800@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829inviteanon-20191002_181700-343C e]]Q=$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo@anon-20191002_181700-342:localhost:8800@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800joinanon-20191002_181700-342 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m*ffmٝeemLddmёccmbbmaam``m__mͽ^^m͸k]]mͷp\\m͵[[mʹZZmͲYYmͯXXmͯWWmͭVVmͪUUmͦXTTm͠pSSm͛RRm͙@QQm͖PPm͓OOm͋NNm͉MMm͆dLLm͂"KKmJJm{XIImwHHmtBGGmpFFml[EEmhkDDmcCCm_BBm]0AAmZ@@mW??mQ>>mNy==mKP<<mG;;mE[::mA99m=+88m677m-866m+=55m)\44m'33m&x22m%11m#00m#//m#..m --m+,,m+++m**mq))m((m O''m &&m%%mO$$mt!!m^mLm5m m:mmm mymm mm-m߆mmm  m[  m4  mS  m΂  mm$mmUm̽m̺m̷!m̯m̫m̨zm̦m̢m̗?m̔ m̒Im̒+m̒m̑m̑m̑~m̌zm̆m}mxomtmpmhmc m`m]m[OmHmEmCmBm@m>Emzzm.;yym+xxm"wwm Kvvmvuum'ttmssm xrrm 7qqm}ppmoom!nnmmmmllmkkm>jjmiimRhhmggmSmG;mCm;m9]m6Xm3m1m)Fm%m mImmzmHmm ;m lmmm=mmmGm mDmmIm mMm+mmXmmmmm(mm˾m˼xm˻:m˹m˸Im˶m˴m˴m˱mˬm˩m˧+mˤSmˡm˛m˘m˔!mˑmˎmˋmˈ Mj9q?  w E  } K  R X & * ^ ,d2\j8p> vD|JVP$1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI <1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A c1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 }1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsm1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkA1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsI1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIy1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk 1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8C1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMQ1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAF1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0O1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo91e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0|1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo 1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk H1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQQ1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk61e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY}1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY{1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ 1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIB0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkM\1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kw1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s *1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM|1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMu0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM`1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU*1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIF  }eQa$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1803}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk"], "type": "a.madeup.test.state", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"my_key": 1}, "depth": 7, "prev_state": [], "state_key": "this_state_does_not_change", "origin": "localhost:8800", "origin_server_ts": 1570042074420, "hashes": {"sha256": "KgV9SQhAr9xXGng55KsIjtE/gyDl/BSElvAjA09NJ9k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MW+wXs3jmBBIEjecVEWxSGsbDHn+iCkFljHbuVsf8lKpV8l6CuU16fZ/6iqvMwF2mKSBeaHTR/GDjZYXTgaFDA"}}, "unsigned": {"age_ts": 1570042074420}}~eQa $Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1802}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk"], "type": "a.madeup.test.state", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042073683, "hashes": {"sha256": "XF6iOmgj/OFJXuAquwAt98dB8OEQu6EtRRufW+JYRFs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YxPnNOrp0viTr6lbx/GAp5SHIvwb6M9JXrN28PHFGHeCbtx3EX9CKIvkyF5aloDVMsFB4v19mGvNOniYhfVIDA"}}, "unsigned": {"age_ts": 1570042073683}}eQa$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1801}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE"], "type": "m.room.history_visibility", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042072706, "hashes": {"sha256": "boa80qkkI2AiCuOhsQlPtJtGd/rfuOPgjoNis28+R/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ME/PdOL/xSB7TovodX6eQTOdpjQpweGUbn7523GY/sa+i3feuFjTZXGEU8H7UkqQwhUbmvy/TCbBSafc6HIrAw"}}, "unsigned": {"age_ts": 1570042072706}}teQau$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1800}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14"], "type": "m.room.join_rules", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042072055, "hashes": {"sha256": "PIvCkOLsA43LdoIpJ6PLBiVCkW3bVXmEPPltE+8y1Y4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pqKlDSh5PY+wHfnbvQUZUlYtDGVtVX/7LFWfBi587iNzolizGT5RrKOYoAHpP/dzuAT2YJdXzLrZqdA4Dg5/BQ"}}, "unsigned": {"age_ts": 1570042072055}} VnvN&d<`8pH ^ 6  n F  ~ V .  f >  v N &^6nF~V.f>FxR*('Q$1570042705210LweYn:localhost:8800w'Q$1570042705210LweYn:localhost:8800v'Q$1570042705210LweYn:localhost:8800u'Q$1570042666166IBpPy:localhost:8800%.'Q$1570042706211NniIl:localhost:8800z'Q$1570042706211NniIl:localhost:8800y'Q$1570042706211NniIl:localhost:8800x'Q$1570042672172vPvbe:localhost:8800/'Q$1570042672172vPvbe:localhost:8800.'Q$1570042671171AQZaz:localhost:8800-%M$15700426692GLpqH:localhost:8829,%M$15700426692GLpqH:localhost:8829+%M$15700426692GLpqH:localhost:8829*'Q$1570042667167mhSmJ:localhost:8800)'Q$1570042667167mhSmJ:localhost:8800('Q$1570042667167mhSmJ:localhost:8800''Q$1570042667167mhSmJ:localhost:8800&'Q$1570042704209JQwmT:localhost:8800t'Q$1570042704209JQwmT:localhost:8800s'Q$1570042704209JQwmT:localhost:8800r'Q$1570042704208yLiWU:localhost:8800q'Q$1570042704208yLiWU:localhost:8800p'Q$1570042704208yLiWU:localhost:8800o'Q$1570042703207yqsGA:localhost:8800n'Q$1570042703207yqsGA:localhost:8800m'Q$1570042702206BIYsS:localhost:8800l'Q$1570042699203fHFjU:localhost:8800k'Q$1570042699203fHFjU:localhost:8800j'Q$1570042699203fHFjU:localhost:8800i'Q$1570042699203fHFjU:localhost:8800h'Q$1570042698202juBqr:localhost:8800g'Q$1570042698202juBqr:localhost:8800f'Q$1570042698202juBqr:localhost:8800e'Q$1570042698202juBqr:localhost:8800d'Q$1570042697200mrENr:localhost:8800c'Q$1570042697200mrENr:localhost:8800b'Q$1570042697200mrENr:localhost:8800a'Q$1570042697199ROUNP:localhost:8800`'Q$1570042697199ROUNP:localhost:8800_'Q$1570042697199ROUNP:localhost:8800^'Q$1570042696198qbnxj:localhost:8800]'Q$1570042696198qbnxj:localhost:8800\'Q$1570042696198qbnxj:localhost:8800['Q$1570042695197vezoL:localhost:8800Z'Q$1570042695197vezoL:localhost:8800Y'Q$1570042694196OHsWc:localhost:8800X'Q$1570042691193uVdPZ:localhost:8800W'Q$1570042691193uVdPZ:localhost:8800V'Q$1570042691193uVdPZ:localhost:8800U'Q$1570042690191yQfnl:localhost:8800T'Q$1570042690191yQfnl:localhost:8800S'Q$1570042690191yQfnl:localhost:8800R'Q$1570042689190UkvMv:localhost:8800Q'Q$1570042689190UkvMv:localhost:8800P'Q$1570042689190UkvMv:localhost:8800O'Q$1570042688189axPjv:localhost:8800N'Q$1570042688189axPjv:localhost:8800M'Q$1570042688189axPjv:localhost:8800L'Q$1570042687188ddQmS:localhost:8800K'Q$1570042687188ddQmS:localhost:8800J'Q$1570042687188ddQmS:localhost:8800I'Q$1570042687187gbArC:localhost:8800H'Q$1570042687187gbArC:localhost:8800G'Q$1570042686186Qxqmn:localhost:8800F'Q$1570042681182ZiRRU:localhost:8800E'Q$1570042681182ZiRRU:localhost:8800D'Q$1570042681182ZiRRU:localhost:8800C'Q$1570042680181TFyrx:localhost:8800B'Q$1570042680181TFyrx:localhost:8800A'Q$1570042680181TFyrx:localhost:8800@'Q$1570042680180uuIxG:localhost:8800?'Q$1570042680180uuIxG:localhost:8800>'Q$1570042679179ZJCqE:localhost:8800=%M$15700426753WBESe:localhost:8829<%M$15700426753WBESe:localhost:8829;%M$15700426753WBESe:localhost:8829:'Q$1570042674175gurnU:localhost:88009'Q$1570042674175gurnU:localhost:88008'Q$1570042674175gurnU:localhost:88007'Q$1570042674175gurnU:localhost:88006'Q$1570042673174OxGuP:localhost:88005'Q$1570042673174OxGuP:localhost:88004'Q$1570042673174OxGuP:localhost:88003'Q$1570042672173XsxsH:localhost:88002'Q$1570042672173XsxsH:localhost:88001'Q$1570042672173XsxsH:localhost:88000x a} { y w u sqomkigeca~KeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~JeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~IeeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829~HeeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~GeeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~FeeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~EeeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~DeeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~CeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~BeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~AeeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~@eeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~?eeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~>eeQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~=eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829~<eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829~;eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829~:eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829~9eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~8eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~7eeQ$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~6eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~5eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~4eeQ$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~3eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~2eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~1eeQ$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~0eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800~/eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800~.eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800~-eeQ$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800 P R N JFBXV $e'Q ]$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsm.room.member!XiwGxQKwjgutEClKUy:localhost:8829mOm@anon-20191002_181700-343:localhost:8800,!e?Q ]$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90m.room.history_visibility!XiwGxQKwjgutEClKUy:localhost:8829mtm@anon-20191002_181700-344:localhost:8829$e/Q ]$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0m.room.join_rules!XiwGxQKwjgutEClKUy:localhost:8829m^m@anon-20191002_181700-344:localhost:8829&e3Q ]$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQm.room.power_levels!XiwGxQKwjgutEClKUy:localhost:8829mLm@anon-20191002_181700-344:localhost:8829 e'Q ]$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4m.room.member!XiwGxQKwjgutEClKUy:localhost:8829m5m@anon-20191002_181700-344:localhost:8829 e'Q ]$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwgm.room.create!XiwGxQKwjgutEClKUy:localhost:8829m m@anon-20191002_181700-344:localhost:8829 e'Q ]$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brom.room.member!XiwGxQKwjgutEClKUy:localhost:8829m:mE@anon-20191002_181700-344:localhost:8829(e7Q ] $9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800(e7Q ] $Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0a.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm @anon-20191002_181700-342:localhost:8800(e7Q ] $TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZga.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m mT@anon-20191002_181700-342:localhost:8800(e7Q ] $a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mym@anon-20191002_181700-342:localhost:8800(e7Q ] $H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800(e7Q ] $z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m m@anon-20191002_181700-342:localhost:8800(e7Q ] $h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74a.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800(e7Q ] $JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mica.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m-m@anon-20191002_181700-342:localhost:8800(e7Q ] $M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00a.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 m߆m6@anon-20191002_181700-342:localhost:8800(e7Q ] $PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm\@anon-20191002_181700-342:localhost:8800(e7Q ] $p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMa.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm\@anon-20191002_181700-342:localhost:8800( e7Q ] $gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCca.made.up.filler.type!mTlCLZQCmfDuQsJxxp:localhost:8800 mm@anon-20191002_181700-342:localhost:8800& e3Q ]$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIa.madeup.test.state!mTlCLZQCmfDuQsJxxp:localhost:8800m[m@anon-20191002_181700-342:localhost:8800& e3Q ]$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMa.madeup.test.state!mTlCLZQCmfDuQsJxxp:localhost:8800m4m֬@anon-20191002_181700-342:localhost:8800& e3Q ]$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVka.madeup.test.state!mTlCLZQCmfDuQsJxxp:localhost:8800mSm@anon-20191002_181700-342:localhost:8800, e?Q ]$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEkm.room.history_visibility!mTlCLZQCmfDuQsJxxp:localhost:8800m΂m@anon-20191002_181700-342:localhost:8800 -RM H C > 9 4/*|%w rmhc TFQe0!aZwMKYDXJRlSKjQNWM:localhost:8800$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0TEQe.!aZwMKYDXJRlSKjQNWM:localhost:8800$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWATDQe-!aZwMKYDXJRlSKjQNWM:localhost:8800$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYTCQe,!aZwMKYDXJRlSKjQNWM:localhost:8800$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioTBQe+!aZwMKYDXJRlSKjQNWM:localhost:8800$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8TAQe*!aZwMKYDXJRlSKjQNWM:localhost:8800$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsT@Qe)!aZwMKYDXJRlSKjQNWM:localhost:8800$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjET?Qe(!aZwMKYDXJRlSKjQNWM:localhost:8800$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_YT>Qe'!aZwMKYDXJRlSKjQNWM:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokT=Qe&!aZwMKYDXJRlSKjQNWM:localhost:8800$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresT<Qe%!XiwGxQKwjgutEClKUy:localhost:8829$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwT;Qe$!XiwGxQKwjgutEClKUy:localhost:8829$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsT:Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgT9Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pET8Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0T7Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgT6Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT5Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0T4Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT3Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sT2Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgT1Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUT0Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sT/Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sT.Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257sT-Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74T,Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sT+Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT*Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74T)Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sT(Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT'Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00T&Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74T%Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_MicT$Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00T#Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMT"Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00T!Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMT Qe!mTlCLZQCmfDuQsJxxp:localhost:8800$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMTQe!mTlCLZQCmfDuQsJxxp:localhost:8800$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcTQe !mTlCLZQCmfDuQsJxxp:localhost:8800$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcTQe !mTlCLZQCmfDuQsJxxp:localhost:8800$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAITQe !mTlCLZQCmfDuQsJxxp:localhost:8800$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMTQe !mTlCLZQCmfDuQsJxxp:localhost:8800$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk  |t l d \ T LE= 5-%eeQ$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800 ՁeeQ$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM!FklhVuCInffbDxunWv:localhost:8800eeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800 ՁeeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800 0eeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM!hSzBsirdPWHtVjagXn:localhost:8800)eeQ$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800 QeeQ$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4!GGXyLHdVXqhQjPRvac:localhost:8800-eeQ$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw!fJXiUpbbOlLbHWmPgs:localhost:8800teeQ$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0!ZaOktTIVeRgBXxfubH:localhost:8800OeeQ$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko!GixhPUMvtKSWoKRgvw:localhost:8800,eeQ$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ!FklhVuCInffbDxunWv:localhost:8800eeQ$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:88004eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800 ʁeeQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA!aknLNLxfChlLvFYhkJ:localhost:8800AeeQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800 ;eeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo!raCWVWQGnXbmkexpCN:localhost:8800eeQ$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs$0Fz_f8YA_KOm8I-iZ9gACeuP5gs9GK2xj8xqXL3-BTw!SBEprlZiuliFNSfNmz:localhost:8800EeeQ$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800 0eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss!IMiczgkCTjejbnbeyP:localhost:8800heeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800b -RM H C > 9 4/*|%w rmhc TQe!bOSxzttDtclnrWnLov:localhost:8800$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUTQe!bOSxzttDtclnrWnLov:localhost:8800$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwTQe!bOSxzttDtclnrWnLov:localhost:8800$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTETQe!bOSxzttDtclnrWnLov:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskTQe!bOSxzttDtclnrWnLov:localhost:8800$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4TQe!DnUHoxreGexNmjSVpq:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0T Qe!DnUHoxreGexNmjSVpq:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsT Qe!DnUHoxreGexNmjSVpq:localhost:8800$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwT Qe!DnUHoxreGexNmjSVpq:localhost:8800$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYT Qe!DnUHoxreGexNmjSVpq:localhost:8800$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIT Qe!DnUHoxreGexNmjSVpq:localhost:8800$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwTQe!DnUHoxreGexNmjSVpq:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroTQe!DnUHoxreGexNmjSVpq:localhost:8800$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQTQe!rwUuVBrftGHDBOlEZm:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYTQe!rwUuVBrftGHDBOlEZm:localhost:8800$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0TQe!rwUuVBrftGHDBOlEZm:localhost:8800$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4TQe!rwUuVBrftGHDBOlEZm:localhost:8800$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQTQe!rwUuVBrftGHDBOlEZm:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYTQe!rwUuVBrftGHDBOlEZm:localhost:8800$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeITQe!CkNvQnbApPIcuKygDk:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYTQe!CkNvQnbApPIcuKygDk:localhost:8800$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYT~Qe~!CkNvQnbApPIcuKygDk:localhost:8800$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQT}Qe}!CkNvQnbApPIcuKygDk:localhost:8800$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foT|Qe|!CkNvQnbApPIcuKygDk:localhost:8800$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgT{Qe{!CkNvQnbApPIcuKygDk:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4TzQez!CkNvQnbApPIcuKygDk:localhost:8800$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9ATyQey!NboFFVLpJHTeuUKCjM:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40TxQex!NboFFVLpJHTeuUKCjM:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeETwQew!NboFFVLpJHTeuUKCjM:localhost:8800$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2QTvQev!NboFFVLpJHTeuUKCjM:localhost:8800$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-YTuQeu!NboFFVLpJHTeuUKCjM:localhost:8800$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzoTtQet!NboFFVLpJHTeuUKCjM:localhost:8800$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KATsQes!NboFFVLpJHTeuUKCjM:localhost:8800$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3YTrQer!NboFFVLpJHTeuUKCjM:localhost:8800$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2EgcsTqQeq!aZwMKYDXJRlSKjQNWM:localhost:8800$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYTpQep!aZwMKYDXJRlSKjQNWM:localhost:8800$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioToQeo!aZwMKYDXJRlSKjQNWM:localhost:8800$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8TnQen!aZwMKYDXJRlSKjQNWM:localhost:8800$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsTmQem!aZwMKYDXJRlSKjQNWM:localhost:8800$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjETlQel!aZwMKYDXJRlSKjQNWM:localhost:8800$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_YTkQek!aZwMKYDXJRlSKjQNWM:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokTjQej!aZwMKYDXJRlSKjQNWM:localhost:8800$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresTiQei!XiwGxQKwjgutEClKUy:localhost:8829$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwThQeh!XiwGxQKwjgutEClKUy:localhost:8829$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsTgQeg!mTlCLZQCmfDuQsJxxp:localhost:8800$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI  <Vo eQG$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "198", "stream_ordering": 1807}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 3}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042076378, "hashes": {"sha256": "shI6Db3VQ2IkpMBsPIKA55eubPCXbR2O3Xb89LcXV3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TAkISyiN/rjXS4H2sihUTcxfDXHnYNyb7VrsI5zzO3e+6fJmdW8KYNDHo19ffps/Nlyu29s6oesxbXIQHkOaBg"}}, "unsigned": {"age_ts": 1570042076378}}oeQG$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "197", "stream_ordering": 1806}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 2}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042076372, "hashes": {"sha256": "wUFeoGqHqmaj8sZoNnVV2w1iZV1y3gNL1Ik3Opbze7M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DnVGrJubF+nMEQxX+pbXRSyIF8FGm3oSz9PsVPsFecOIAj08Uo/4hTpf+PqeR9RTXobwZXr/Rd5TOzLGfaIjBQ"}}, "unsigned": {"age_ts": 1570042076372}}oeQG$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "196", "stream_ordering": 1805}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042076367, "hashes": {"sha256": "o2Pu19y/UF6/dLjmunOMTMNUDLp5/zxrKBavCtDhXtA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4DTwI4BowLq+H7ZcsIkkvaeqjJraNqcB7uEwHVUBnGDxa3Chy/+3cuzbaK+2bSCy8rwjr7ivD3RDQGaS8IV4Bw"}}, "unsigned": {"age_ts": 1570042076367}}@eQa $TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "stream_ordering": 1804}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM"], "type": "a.madeup.test.state", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"my_key": 2}, "depth": 8, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042075483, "hashes": {"sha256": "JDIM9EjgLNVvppu+qz/kT9vQf7GHGpAXv4q1n7wffjA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cwjtsd+Cb9Y/4Jbh7dtHWCrANy1OjXo0Ffp4yjpNCHYzE7OmOLWJdPKBkRQo2C+dwaEQ/Ui5YpVGE3LdFiFuCQ"}}, "unsigned": {"age_ts": 1570042075483, "replaces_state": "$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk"}}  P eQ $z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "202", "stream_ordering": 1811}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM", "$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM", "$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 7}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077965, "hashes": {"sha256": "QU7h1NB31f4/VtpOkKrvcw4iP5KZ5sZPsb03MxpHMOw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+8ky+0JBtQX8YWcdtvJGeeEeTVH8Aj+iqDmHnig8YDIhc2w4UYmEruxnnv6TUOtUdsD/TTePaXYwszX500f0Aw"}}, "unsigned": {"age_ts": 1570042077965}}P eQ $h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "201", "stream_ordering": 1810}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc", "$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM", "$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 6}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077430, "hashes": {"sha256": "BwQKRufcQ4QMyttex/i61dk+27nAjrA3ZI+x+s7Xc7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nd9u7sa7SAFiJLt5XdoU4juFTa4liTV/uxflg9UuQhHMmtYR3/MMldjXlDqwtJWOH0g6Fp788GA7BMt0oF6eDg"}}, "unsigned": {"age_ts": 1570042077430}}P eQ $JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "200", "stream_ordering": 1809}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc", "$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM", "$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 5}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077229, "hashes": {"sha256": "SQgWoC6z1ekCSAJHSzBHl2wHvxZnto2uUhk9xTffLWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UGKcoNegFbIGNaRfXdSzlTHjvBpaAEXyDdZZIUkrbeqpdX6tpRl7vBjldPKEtQMzmZNUeOYmTuuZ0mg+wb06CA"}}, "unsigned": {"age_ts": 1570042077229}}p eQI$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "199", "stream_ordering": 1808}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 4}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042077062, "hashes": {"sha256": "yf0Ed2b2Mno6weyPYanIJJAGUZ3DH6vum6ArjLZSFjw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "53L3s1u7++W2HfzzZS7HvzWRN8ZpH9VLckmD8mvKwiQ/eRSpQ98iN0GMcTIe86suDUk9yen9b0rLzSjai6FRDg"}}, "unsigned": {"age_ts": 1570042077062}} $M \ *b1i7o= uC W |J PW%  ]+j8 p> w E  Q } K P01e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk r1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk O1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc$1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY51e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEB1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc \1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUJ1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U+1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE<1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MT1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90,1e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUS1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw )1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oS1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 J1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo`1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8q1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE71e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4b1e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs11e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym41e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao;1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo/0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU=1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 z1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00F1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk@31e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E %1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY _1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM e1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg \1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E Y1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 61e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs $1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokg1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYR1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM L1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD780e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8 1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgX1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-41e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIV1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc=1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos,1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI .1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0  JQb  V $ |  J \ *0 D h6jo= v D P8 vp> \*V$|J1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 @1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E w1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgo1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIe1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8X1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsd1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE{0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY 21e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE u1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 f1e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0S1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk20e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk=1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM71e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE91e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYl1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY;1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0K1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 41e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfof1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuUv1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 21e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA i1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ U1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruIT1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 21e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 w1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg 11e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ {1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ z1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ y1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90G1e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 "1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA 1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgp1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg .21e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU: ~z v r n j fb^ZVRNJFgeeQ$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800feeQ$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800eeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829deeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829ceeQ$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829beeQ$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829aeeQ$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829`eeQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829_eeQ$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!XiwGxQKwjgutEClKUy:localhost:8829^eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU!mTlCLZQCmfDuQsJxxp:localhost:8800]eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800\eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800[eeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800ZeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800YeeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800XeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800WeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800VeeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800UeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74!mTlCLZQCmfDuQsJxxp:localhost:8800TeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800SeeQ$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800ReeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800QeeQ$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800PeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800OeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800NeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800MeeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800LeeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800KeeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800JeeQ$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800 |D   T3 e \#+; Lu m eeQ$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg!OaCEdDAiatpwYcagUb:localhost:8800eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800 eeQ$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg!egCvzKpbEwmuvDoBTb:localhost:8800beeQ$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w!hWHyATwKfuznrqTiyu:localhost:8800eeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU!nxLxsxzliamzflrEBs:localhost:8800eeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800 ueeQ$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs!HZqzpRgqekPOtxstVc:localhost:8800eeQ$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28!EABRjdYuYumMhLSwIa:localhost:8800eeQ$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE!fOJLpnbtgKNxxVDquX:localhost:8800 eeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800 eeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI!aBCvSXjtZUEPlPGHvY:localhost:8800neeQ$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0!tkajvIKHoOMWGsReBs:localhost:8800LeeQ$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800 <eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800=eeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE!NZHpBquHDfJAjiawGk:localhost:8800:eeQ$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0!fOJLpnbtgKNxxVDquX:localhost:8800 D T < Lt|4 -% d D T \eeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800U \eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800 zeeQ$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA!QZhNrNpwObZGJZpdAG:localhost:8800 eeQ$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs!QZhNrNpwObZGJZpdAG:localhost:8800 eeQ$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY!quaZwrGnzbNWhwAOYB:localhost:8800UeeQ$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800ځeeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800@eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800 'eeQ$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800 eeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800 deeQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800 -eeQ$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800 ueeQ$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800   \QeQ $Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "206", "stream_ordering": 1815}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74", "$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s", "$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 11}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042079624, "hashes": {"sha256": "li9TPSBy+HAhMFx9DmsjrPqCBzvBh0hGA2lWfIV+lCI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tuwqg+DPOJnyp4/vvsW9kxYUHxuOHtdrZWjfZV2nNQhYMmwSegwbP0WwBdFBMlkoyXT2TanYNkXHfqkPK/LbCQ"}}, "unsigned": {"age_ts": 1570042079624}}QeQ $TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "205", "stream_ordering": 1814}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic", "$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74", "$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 10}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042079245, "hashes": {"sha256": "uUjppIf70QkXh6rFJkXTfpHiyNLd5gUUjd0prJ/b544"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3alkYOj9SwBLsAKMY8cjwCSPttTky3asgdWQFjCrLA7igjXdNyCv+IWzOfUbeRPL/Kgs9tk4IA9EPyHXdc83Cg"}}, "unsigned": {"age_ts": 1570042079245}}PeQ $a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "204", "stream_ordering": 1813}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00", "$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic", "$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 9}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042078841, "hashes": {"sha256": "9HYsjjQrUAt7oBieJoAlAa2QHDIgeLeuSEzJgphPLWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPYrv9uOzXXE1lOlMBCI+yIrHEj1deJ+Mdc6kGdrmKf+BG4wzI2Pn31dvY0WeuUVGQ4SeblyUefPbKNyhOjaAw"}}, "unsigned": {"age_ts": 1570042078841}} eQ)$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "203", "stream_ordering": 1812}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00", "$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 8}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042078406, "hashes": {"sha256": "c/Zn+ik7zstPcDybT1B/RLarCmqxlC05us9S6j9saw0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wXCsaPyRxhmBL7w/SZQB6F8iYwReTIZI1VijIbU76jdlTq2wF9r1eMxN1TbrkF7EL9WdKSWjiP6iB/LgBEzgBA"}}, "unsigned": {"age_ts": 1570042078406}}   d,t \ 4 T $ LD<eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800 heeQ$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI!FAYqpziHeVZugCGaij:localhost:8800ZeeQ$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800 ρeeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800 GeeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800 weeQ$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52o$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_0!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800 keeQ$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~eeQ$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800`eeQ$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM$XpNhLAo6hTJM1ZuS83ruVBo31auSWGLrJWEun-AmYQw!tDsPLsKOLPePtEWRwn:localhost:8800ƁeeQ$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:88003 leeQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800 DeeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8!vRRNxNyGboLHNhqQvr:localhost:8800ցeeQ$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800|eeQ$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc!GGXyLHdVXqhQjPRvac:localhost:8800'eeQ$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E!TcaopYfMoJFEcjYRzJ:localhost:8800neeQ$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA!OBWkjfrDCNgYFfblia:localhost:8800eeQ$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg!oznZaCpONuNDaLarkI:localhost:8800eeQ$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk!BckZfhQgrcyiMhEAAJ:localhost:8800d|eeQ$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800 =  + \eQaE$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829{"outlier": true, "stream_ordering": 1818}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-344:localhost:8829", "content": {"room_version": "4", "creator": "@anon-20191002_181700-344:localhost:8829"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8829", "origin_server_ts": 1570042082080, "hashes": {"sha256": "cZxyERKs7CLJqE8aqH3SznkJ6hzDpiFjL1maKpcX53E"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "zQjY9aapKn8XG8//Af80f3ZXx63ktQGPknLIH/g0+zRSVobl2IKVLhmk9vLDqZ+/A8K8beoyiaADMskrbKJIAg"}}, "unsigned": {"age": 838}}'eQ!$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829{"outlier": true, "out_of_band_membership": true, "stream_ordering": 1817}{"auth_events": ["$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ", "$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg", "$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0", "$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-343", "membership": "invite"}, "depth": 6, "hashes": {"sha256": "3KHFv46iFoE+NIYG4yaDFoxg6cRsDIRkLftYzxR67Wk"}, "origin": "localhost:8829", "origin_server_ts": 1570042082362, "prev_events": ["$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90"], "prev_state": [], "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "@anon-20191002_181700-343:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "lA7NLPZyt80xWWZLLC+hJQ8wnyLJGBCDs29YsFw7ThO9zI0Hi2rLsWEaDJt6ixPfyU4Lq5XeS0n9W3ZTBeu2Bg"}, "localhost:8800": {"ed25519:a_OdAo": "RSgvBWrttn7RrftwMg0DTqC6i3zO2OdgJOHMJ8ocTiKqaWxZp+T4WUDjJrw21R68mhdi0wbLQv8+TlIU1dQOCw"}}, "unsigned": {"age": 4, "invite_room_state": [{"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-344", "membership": "join"}, "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "@anon-20191002_181700-344:localhost:8829", "type": "m.room.member"}]}}QeQ $9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE!mTlCLZQCmfDuQsJxxp:localhost:8800{"token_id": 360, "txn_id": "207", "stream_ordering": 1816}{"auth_events": ["$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14", "$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0", "$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo"], "prev_events": ["$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s", "$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s", "$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU"], "type": "a.made.up.filler.type", "room_id": "!mTlCLZQCmfDuQsJxxp:localhost:8800", "sender": "@anon-20191002_181700-342:localhost:8800", "content": {"filler": 12}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042080275, "hashes": {"sha256": "PUbIocaZ24ErVc6kS/dV5052T/tpyYyBjvXI5wBFqQI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f3ItvzxAS9DGw32Y2VwxjUZszbaG4AplcwsHrp7CEcewFSMHvIeW8Dwa2bU6n7+yNtwgZ1oSNRM4ECMGfokxBg"}}, "unsigned": {"age_ts": 1570042080275}}  IvD| v D  }> K* p  Q2J   \ W % ] +$PVdj8j81e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 61e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE v1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMM1e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM 1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYP1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAA1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMO1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E x1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk.1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA j1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ V1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 x1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws0L1e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A 1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssh1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgp1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU;1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo)1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIf1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA 1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsgv1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk.1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0T1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk31e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM81e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE:1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYo1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYn1e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYm1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqY<1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 g1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg 21e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU 11e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMJ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw f ""~F j  H & V Z^^b`dhGe _}]eQ@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829%P[Q@anon-20191002_181700-29:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800}]eQ@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo!ffijTnPMbTrDXHqOXf:localhost:8800$Q]Q@anon-20191002_181700-275:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800#}]eQ@anon-20191002_181700-274:localhost:8800$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800"}]eQ@anon-20191002_181700-273:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM!bzPCFeFSMbCESvNbxl:localhost:8800!}]eQ@anon-20191002_181700-266:localhost:8800$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k!KdOYYnOuwAyQzqwUki:localhost:8800}]eQ@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0!IPYMCBwcyNIzqdiIWv:localhost:8800}]eQ@anon-20191002_181700-216:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800g1eQ@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk!FPcQcheNebvdFvmOnr:localhost:8800g1eQ@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU!vOfeZvbtpuHfoqShFl:localhost:8800g1eQ@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps!EieRtaCFZJJCIOkRPp:localhost:8800g1eQ@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800g1eQ@13:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800;1Q@12:localhost:8800!VCSCNemqikJZiRtxrs:localhost:8829;1Q@11:localhost:8800!StEnDjTJToXKXsOHNf:localhost:8829}]eQ@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800}]eQ@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800}]eQ@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800}]eQ@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:8800Q]Q@anon-20191002_181700-142:localhost:8800!BkzROHxDAfKIzYpmPV:localhost:8800}]eQ@anon-20191002_181700-141:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ!BkzROHxDAfKIzYpmPV:localhost:8800 }]eQ@anon-20191002_181700-137:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs!XIqmzIFbkHGQPIpywk:localhost:8800 Q]Q@anon-20191002_181700-135:localhost:8800!lMRBkbYJDQHgdBZBFJ:localhost:8800 Q]Q@anon-20191002_181700-133:localhost:8800!cHtqiAyCHEAoBIbCmL:localhost:8800 }]eQ@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA!cHtqiAyCHEAoBIbCmL:localhost:8800 Q]Q@anon-20191002_181700-130:localhost:8800!OBWkjfrDCNgYFfblia:localhost:8800Q]Q@anon-20191002_181700-103:localhost:8800!KxhGcTbEWmtgGNpdox:localhost:8800}]eQ@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI!HmkcAMkMjWRhTDJMsy:localhost:8800(Q]Q@anon-20191002_181700-270:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800 }]eQ@anon-20191002_181700-214:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek!FklhVuCInffbDxunWv:localhost:8800}]eQ@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ!eJPTUgihvSwaOhIkrC:localhost:8800Q]Q@anon-20191002_181700-210:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800O[Q @anon-20191002_181700-17:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800 K"d  @X\`d\R   G |}]eQ@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:88007}]eQ@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:88006}]eQ@anon-20191002_181700-555:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:88005}]eQ@anon-20191002_181700-509:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:88004}]eQ@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:88003}]eQ@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:88002s]QQ@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:88001s]QQ@anon-20191002_181700-449:localhost:8800$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:88000}]eQ@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800/Q]Q@anon-20191002_181700-366:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800.}]eQ@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800,}]eQ@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800+}]eQ@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800*}]eQ@anon-20191002_181700-353:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800)}]eQ@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800(}]eQ@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800'}]eQ@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800C|[eQ@anon-20191002_181700-96:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ!BrssELMbasSzTFpIXm:localhost:8800|[eQ@anon-20191002_181700-90:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800|[eQ@anon-20191002_181700-87:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY!duCKuavMBSfRbTFPsc:localhost:8800Q]Q@anon-20191002_181700-364:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800-Q]Q@anon-20191002_181700-755:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800E}]eQ@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800D}]eQ@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800B}]eQ@anon-20191002_181700-727:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800A}]eQ@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800@}]eQ@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800?B]1@anon-20191002_181700-651:localhost:88001!0:localhost:41985>B]1@anon-20191002_181700-650:localhost:88001!0:localhost:44405=B]1@anon-20191002_181700-649:localhost:88001!0:localhost:37265 wE9}K>Q Wk v D  } K  Q  %q+1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g ?1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk 1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI h1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo u1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 %1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMC1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs K1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU?1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE E1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI 1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w11e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0T1e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok'1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsk1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY~1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cI1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA\1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM 91e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk41e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7840e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4?1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk =1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A]1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc 1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 01e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo -1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcQ1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUu1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw b1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcB1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc^1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAS1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 f0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4x1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI ,^ k x ) 6 C P ] jy(5BO^ kx'P]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800P]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800P]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800P]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800N[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800P]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800P]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800P]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800P]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800P]Q@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800P]Q@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800P]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800P]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800P]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800P]Q@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800P]Q@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800P]Q@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800N[Q@anon-20191002_181700-37:localhost:8800!kxTDuIasPNpXtiRsif:localhost:8800P]Q@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800P]Q@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800P]Q@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800P]Q@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800P]Q@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800P]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800P]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800P]Q@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800P]Q@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800P]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800P]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800P]Q@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800P]Q@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800P]Q@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800P]Q@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800P]Q@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800P]Q@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800N[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800P]Q@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800P]Q@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800P]Q@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800P]Q@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800P]Q@anon-20191002_181700-367:localhost:8800!aknLNLxfChlLvFYhkJ:localhost:8800P]Q@anon-20191002_181700-366:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800P]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800P]Q@anon-20191002_181700-364:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800  uveQay$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1831}{"auth_events": ["$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres"], "prev_events": ["$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres"], "type": "m.room.member", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-345", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-345:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042088783, "hashes": {"sha256": "Kdx/UHFh+3h1ZXZcqiWjB5hqXj1qLnphabTpXd5ptkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DffeiCYaDHWHwTmuCU5COnpZU7kU82CTPb20L2adyQxSGDrfLigwRgKxba28iM1iRKEHeaaUm/4+mxntjbZSDw"}}, "unsigned": {"age_ts": 1570042088783}}ieQa_$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1830}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-345:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042088131, "hashes": {"sha256": "VVD3WZ6mgzUtc+EY15k/AHrbfxVIXBMQrp2WXyDY/Uw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cJhxCTviVsRWJhtmJwX1hsSeokUR9dCQoV5Y5AaL3Zz9z+uDCi/V16SV7rB3tTEYOUcerwpgDkAuPqs1RXyRCA"}}, "unsigned": {"age_ts": 1570042088131}}meQce$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829{"outlier": false, "stream_ordering": 1829}{"auth_events": ["$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ", "$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg", "$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4"], "content": {"my_key": 1}, "depth": 8, "hashes": {"sha256": "FTQsb7xJXl+6uSvOcgv6UoGj6sVm0sGn1wz9zgY5qEo"}, "origin": "localhost:8829", "origin_server_ts": 1570042086379, "prev_events": ["$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs"], "prev_state": [], "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-344:localhost:8829", "state_key": "", "type": "a.madeup.test.state", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "MlkppNWZbF+ANUAjc+x3XiokZdk+/JsdTbnKL0FmnzUEwGfyWw0UQHfQiiDqXM0dIwexbiDaMKkfJuynMb0+Bg"}}, "unsigned": {"age_ts": 1570042086379}}eQ?=$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829{"stream_ordering": 1828}{"auth_events": ["$Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ", "$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg", "$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0"], "prev_events": ["$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro"], "type": "m.room.member", "room_id": "!XiwGxQKwjgutEClKUy:localhost:8829", "sender": "@anon-20191002_181700-343:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-343", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-343:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042082895, "hashes": {"sha256": "VkjHpeGzrjPxCiP1lUmVEZt+x89IxKwBJvZv6sW0zu4"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "Qol2FLrlGWzch9B2vLOVlXnwjQx8739Z6zzDpo1oyOreIwBAqT8XYaNUWheybtd5ejrKs3pZmOF5OmKGIZDRDQ"}, "localhost:8800": {"ed25519:a_OdAo": "buyVblOy1jfo0KEKV+jdE/HT+OXGNEfGEXgy/xTjP1j50pt9fE2iN4ELa1ZDqfx5BD/VN4b06EGSPQzGJZZHDA"}}, "unsigned": {"replaces_state": "$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro", "age_ts": 1570042082897}} j('2Z 8 j o   27_,^2gseQ3 $BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.statey^eQ31$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_changes]eQ3A$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM!mTlCLZQCmfDuQsJxxp:localhost:8800a.madeup.test.statethis_state_does_not_changem[eQ? $r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.history_visibilityeZeQ/ $-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.join_rulesgYeQ3 $lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.power_levels XeQ']$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.member@anon-20191002_181700-342:localhost:8800joinaWeQ' $AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0!mTlCLZQCmfDuQsJxxp:localhost:8800m.room.createmreQ? $P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibilityeqeQ/ $Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rulesgpeQ3 $55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels oeQ']$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800joinaneQ' $EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800m.room.createleQ3A$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_changeymeQ31$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changesmjeQ? $BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.history_visibilityeieQ/ $UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.join_rulesgheQ3 $Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.power_levels geQ']$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.member@anon-20191002_181700-345:localhost:8800joinafeQ' $yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800m.room.creategeeQ3 $cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829a.madeup.test.state deQ']$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-343:localhost:8800join ceQ']$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829m.room.member@anon-20191002_181700-344:localhost:8829joinmbeQ? $YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90!XiwGxQKwjgutEClKUy:localhost:8829m.room.history_visibilityeaeQ/ $W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0!XiwGxQKwjgutEClKUy:localhost:8829m.room.join_rulesg`eQ3 $Xj-SWk2scRF4_AmPTNOThFSLTXz3WTGHOq-pNAicXKQ!XiwGxQKwjgutEClKUy:localhost:8829m.room.power_levelsa_eQ' $h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829m.room.create V f  d  d `\bl,;e?Q ]$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Ym.room.history_visibility!NboFFVLpJHTeuUKCjM:localhost:8800mGmIN@anon-20191002_181700-346:localhost:8800$:e/Q ]$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzom.room.join_rules!NboFFVLpJHTeuUKCjM:localhost:8800mE[mF@anon-20191002_181700-346:localhost:8800&9e3Q ]$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAm.room.power_levels!NboFFVLpJHTeuUKCjM:localhost:8800mAmCf@anon-20191002_181700-346:localhost:8800 8e'Q ]$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ym.room.member!NboFFVLpJHTeuUKCjM:localhost:8800m=+m>[@anon-20191002_181700-346:localhost:88007 e'Q  ]$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcsm.room.create!NboFFVLpJHTeuUKCjM:localhost:8800m6m7[@anon-20191002_181700-346:localhost:8800(6e7Q ] $e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAga.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m-8m/}@anon-20191002_181700-345:localhost:8800(5e7Q ] $6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m+=m-@anon-20191002_181700-345:localhost:8800(4e7Q ] $0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILMa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m)\m,U@anon-20191002_181700-345:localhost:8800(3e7Q ] $oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdka.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m'm*X@anon-20191002_181700-345:localhost:8800(2e7Q ] $qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m&xm(@anon-20191002_181700-345:localhost:8800(1e7Q ] $yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjca.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m%m&}@anon-20191002_181700-345:localhost:8800(0e7Q ] $-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0a.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m#m$@anon-20191002_181700-345:localhost:8800(/e7Q ] $jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8ca.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m#m$@anon-20191002_181700-345:localhost:8800(.e7Q ] $wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAa.made.up.filler.type!aZwMKYDXJRlSKjQNWM:localhost:8800 m#m#@anon-20191002_181700-345:localhost:8800&-e3Q ]$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYa.madeup.test.state!aZwMKYDXJRlSKjQNWM:localhost:8800m m!=@anon-20191002_181700-345:localhost:8800&,e3Q ]$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhioa.madeup.test.state!aZwMKYDXJRlSKjQNWM:localhost:8800m+m@anon-20191002_181700-345:localhost:8800&+e3Q ]$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8a.madeup.test.state!aZwMKYDXJRlSKjQNWM:localhost:8800m+m@anon-20191002_181700-345:localhost:8800,*e?Q ]$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsm.room.history_visibility!aZwMKYDXJRlSKjQNWM:localhost:8800mmz@anon-20191002_181700-345:localhost:8800$)e/Q ]$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEm.room.join_rules!aZwMKYDXJRlSKjQNWM:localhost:8800mqm@anon-20191002_181700-345:localhost:8800&(e3Q ]$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Ym.room.power_levels!aZwMKYDXJRlSKjQNWM:localhost:8800mm@anon-20191002_181700-345:localhost:8800 'e'Q ]$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokm.room.member!aZwMKYDXJRlSKjQNWM:localhost:8800m Om @anon-20191002_181700-345:localhost:8800& e'Q  ]$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresm.room.create!aZwMKYDXJRlSKjQNWM:localhost:8800m m @anon-20191002_181700-345:localhost:8800&%e3Q ]$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwa.madeup.test.state!XiwGxQKwjgutEClKUy:localhost:8829mmz@anon-20191002_181700-344:localhost:8829 a} { y w u sqomkigeca~jeeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~ieeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~heeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~geeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~feeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~eeeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~deeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~ceeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~beeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~aeeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~`eeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~_eeQ$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~^eeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~]eeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~\eeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~[eeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~ZeeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~YeeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~XeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~WeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~VeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~UeeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~TeeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~SeeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~ReeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~QeeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~PeeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800~OeeQ$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok!aZwMKYDXJRlSKjQNWM:localhost:8800~NeeQ$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~MeeQ$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800~LeeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4!XiwGxQKwjgutEClKUy:localhost:8829 g * T~=ggk]!ct@anon-20191002_181700-354:localhost:8800EEONPHMPKHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAogj]!cs@anon-20191002_181700-355:localhost:8800LDOCSGURJIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwogi]!cr@anon-20191002_181700-353:localhost:8800JNEJUBWWRWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQogh]!cq@anon-20191002_181700-352:localhost:8800HQKTWVQFMPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAogg]!cp@anon-20191002_181700-350:localhost:8800TQWBNMPIAIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwogf]!co@anon-20191002_181700-351:localhost:8800GHNDMAFVFRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgoge]!cn@anon-20191002_181700-349:localhost:8800IPTJJENAYSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3Grbcgogd]!cm@anon-20191002_181700-348:localhost:8800KYSIYINERZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwogc]!cl@anon-20191002_181700-346:localhost:8800CIUYDTNROPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgogb]!ck@anon-20191002_181700-347:localhost:8800CFRSANQZYUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQoga]!cj@anon-20191002_181700-345:localhost:8800QSMLRPQTHAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgo  ~ eQa $ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1835}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs"], "type": "a.madeup.test.state", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042092331, "hashes": {"sha256": "YnqcqVlXkNwgdJQhj6py9y4qroxFn+NhoREjHwaA0Bo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "42hVtVi9IP6r36o9jfosUQ7492TjiiIpDQBUjFxp85kDLnG5sHLi2L0W/pTbmL/hmih7ZBMQGXrGwAXB4PfKAw"}}, "unsigned": {"age_ts": 1570042092331}}eQa$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1834}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE"], "type": "m.room.history_visibility", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042091207, "hashes": {"sha256": "WuIpImERMXlX+pVKN/V02hmFOfthrgLWGoGOHRGA5eI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLwcm6Ep8K/0pbHvv6gfvpaNMGnnhCbrOdXysjnzHE6PRK0jJU4ujR06Tef/pnjHJxqyKRecklPrxIjGzZKtDA"}}, "unsigned": {"age_ts": 1570042091207}}teQau$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1833}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y"], "type": "m.room.join_rules", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042090097, "hashes": {"sha256": "rGfeHuNq0ryw6gKXJ8bGHyyGetBlusce0FZdBg1GvDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w8obhbtH36ept9/kkaQSEAuYCqS+XVJ2wvGTO9gdYOMQyx8kshYOtZ1KcDlsf3Z5jfjmr4fStRBhpQZW9LykDQ"}}, "unsigned": {"age_ts": 1570042090097}}keQac$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1832}{"auth_events": ["$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "type": "m.room.power_levels", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"users": {"@anon-20191002_181700-345:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042089398, "hashes": {"sha256": "eExG0iK3cu+nPFliVD4xWfQpbKqemTrdXqY6sT+bIIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AcHzd7d2UvznE+bMnbh1gMYi2384blniPoOo5tst9xK36nzpEDH6iyqfAuW3eQE80usOqQqUtpO6/VeeT2QmBg"}}, "unsigned": {"age_ts": 1570042089398}} ,NC 8 - { " p  e ZOD9.|#qf VHeL$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYsha256Pő" /QY6 GGM7+ |VGeL$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIsha2563v eէnT]TVFeL$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwsha2561BoE_W|y=-*lVEeL$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrosha256 ^$bAfmy`s˘gºVDeL$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQsha256<[@5a @1z.KI9v2VCeL$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgsha256IĎ;jh];VBeL$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYsha256RW$XSe"(m!Q@iS6]@VAeL$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCssha256[WL=ɱ* c^Sƶ8o49w+V@eL$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0sha256 pE.+e-?40]V?eL$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4sha256sP9W BreL$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQsha256DbL{ɑ>Y-"vZ$V=eL$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYsha256?72ˑՉPCBS;v $V<eL$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIsha256dYk' J=r/p󨚢NㅰaV;eL$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYsha256`i$}+F&Y57?R.'69NV:eL$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYsha256FETZl"UF'T Y^cFV9eL$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYsha256s/ 0:ʯ@6Nu {E)%vV8eL$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQsha256Vǧx"_le ^,@V7eL$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fosha256 ;nC!}oo"6(hV6eL$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgsha256ӊ&aM㐉hI_%&IΈhV5eL$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4sha2566<]Lqr_5>^gV4eL$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Asha256Y%55]%mgbہV?V3eL$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40sha2568 cνCCcOhYy>WV2eL$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEsha256?qzwFurb")l 6ulQB-V1eL$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qsha256l7 N#8)g},Qጂ6sdV0eL$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Ysha256?:TB FPIbIEe)TNeqV/eL$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzosha256gJWA k˒~tiZ O*C:V.eL$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAsha256yT?=?}{G:uG AgV-eL$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Ysha256\GFO^"?bw|”vV,eL$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcssha256g)?i DӌHͭV+eL$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgsha256{9"8,;˽zGs;}?V*eL$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yIsha256BH~ `V"eL$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRYsha256;+T7țK uR4 _YV!eL$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiosha256B-g:y8ci% hTT>6e*V eL$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8sha256d[\(22 ^ dS) T|o'YłVeL$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSssha256}miP/?^f,+Pp^+VeL$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEsha256PUXeriOE86͇1VeL$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Ysha256},j5o[H6(jX$ 8l D `8^]c!E@anon-20191002_181700-354:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdxLFZwZS49TTBoT34tSjEKMDAyZnNpZ25hdHVyZSCMmxnWu9iCEcXsdH39B5KGmpQhIvVvx6RoKXFPgxDQxAoEEONPHMPKH127.0.0.1Perl + Net::Async::HTTP/0.44m钃]]c!E@anon-20191002_181700-352:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEExZDtsTHhSNUdIQTFHaVMKMDAyZnNpZ25hdHVyZSAlsgiywgrNTbCAnEphE0-fBpdGCR2KyxsIcyyt_OtQQAoHQKTWVQFMP127.0.0.1Perl + Net::Async::HTTP/0.44m\]c!E@anon-20191002_181700-353:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV-fi0zLTtUd21pdWtFJnEKMDAyZnNpZ25hdHVyZSBh0ts2kSQ_ZohACr03uTsYQR79O_SixMcFNdFTxBLkLQoJNEJUBWWRW127.0.0.1Perl + Net::Async::HTTP/0.44m[]c!E@anon-20191002_181700-351:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpVK3hUQjtIb2pBYldXX2sKMDAyZnNpZ25hdHVyZSD9YrCW5BH3kywGzhENk9Gz8_roV9yYmisqg7Nw_ZQcPgoGHNDMAFVFR127.0.0.1Perl + Net::Async::HTTP/0.44m͒+Z]c!E@anon-20191002_181700-350:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDkqV09aTjhqamhmSHkrWUQKMDAyZnNpZ25hdHVyZSCjJtfj7C-paGW8LAf6Sd5j6c6a-T3_11tSPT2xcPzebwoTQWBNMPIAI127.0.0.1Perl + Net::Async::HTTP/0.44m͒)Y]c!E@anon-20191002_181700-349:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9XS0poR3NJOnBzUUFRUU4KMDAyZnNpZ25hdHVyZSDrvyUMvEtA97xi3LOcyyF9rS7BdGbtuNHnRc6G3GrbcgoIPTJJENAYS127.0.0.1Perl + Net::Async::HTTP/0.44msX]c!E@anon-20191002_181700-348:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBeGFFZlpvMVEzRnl1Z04KMDAyZnNpZ25hdHVyZSDP3InVYDI1Ht-KkMEleA46BaX7lVX-4MRFn3FhqknuFwoKYSIYINERZ127.0.0.1Perl + Net::Async::HTTP/0.44mVW]c!E@anon-20191002_181700-347:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5rb3NzO2xubGdOVUN0KlkKMDAyZnNpZ25hdHVyZSCY3-YLXtjuWzvkco99I3mKbDG4H8emrCvivGdcq0WofQoCFRSANQZYU127.0.0.1Perl + Net::Async::HTTP/0.44m5kV]c!E@anon-20191002_181700-346:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG4rYnp-c2p3WHZrTTRIKz0KMDAyZnNpZ25hdHVyZSAekK7cmfral9C7C0L022TJKnfe4mZ73D1DG5keyiuKsgoCIUYDTNROP127.0.0.1Perl + Net::Async::HTTP/0.44m5hU]c!E@anon-20191002_181700-345:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJqVSpoflpFTHBfQDthdTUKMDAyZnNpZ25hdHVyZSDAKifKRUmijGTKemJ4w42ZZWx_E2htKf0OgiCIegVhNgoQSMLRPQTHA127.0.0.1Perl + Net::Async::HTTP/0.44m N  n> P  | JT" V $ \ *b 0' pj8 N Y< htBzH  v D 61e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUc1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU O1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU N1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU M1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnIa1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI`1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI_1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG81e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG81e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI 1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI 1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUd1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UM1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938 1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938 1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w3938 1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho 1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho 1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho 1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsG1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrsF1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIL1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIK1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIJ1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k:1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k91e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k81e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA*1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA)1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUe1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UO1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y41e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y41e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y41e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvME1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMD1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMC1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA+1e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY 1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UN1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U 1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY 1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4 O h 6   n < t B  { I  H  O U#[N)a j/z8g5m; sAb01e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY u1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc `1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo !1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 I1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A ,1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 0e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU?1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 ?1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE;1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc;1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU 1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAI1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI[1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87YV1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoM1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0.1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8B1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg#1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA 1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_41e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8W1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg@1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4y1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg;1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14>1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakF1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ d1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQy1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA=1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30:1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLkL1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8b1e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM <1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0^1e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 @1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg A$lolredact:localhost:42455 =A$lolredact:localhost:42455 <1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw t1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ ?1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg ~z v r n j fb^ZVRNJFeeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk!aZwMKYDXJRlSKjQNWM:localhost:8800}eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800|eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800{eeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800zeeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800yeeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800xeeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800weeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800veeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800ueeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800teeQ$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800seeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0!aZwMKYDXJRlSKjQNWM:localhost:8800reeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800qeeQ$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800peeQ$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800oeeQ$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800neeQ$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800meeQ$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800leeQ$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800keeQ$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800jeeQ$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs!aZwMKYDXJRlSKjQNWM:localhost:8800ieeQ$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE!aZwMKYDXJRlSKjQNWM:localhost:8800heeQ$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y!aZwMKYDXJRlSKjQNWM:localhost:8800 ! ( P Y h q />Go~E+aaeQ' $H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800m.room.create `eQ']$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800 _eQ']$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800g^eQ3 $iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.statem]eQ? $61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibilitye\eQ/ $1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rulesg[eQ3 $1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels ZeQ']$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800aYeQ' $p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800m.room.create XeQ']$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800mWeQ? $C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibilityeVeQ/ $c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rulesgUeQ3 $o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels TeQ']$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800aSeQ' $wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create ReQ']$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800gQeQ3 $cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.statemPeQ? $FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibilityeOeQ/ $1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rulesgNeQ3 $6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels MeQ']$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800aLeQ' $klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800m.room.create KeQ']$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800 JeQ']$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800gIeQ3 $BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800a.madeup.test.statemHeQ? $P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.history_visibilityeGeQ/ $Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800m.room.join_rulesgFeQ3 $55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800m.room.power_levels EeQ']$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-346:localhost:8800aDeQ' $EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800m.room.createyCeQ31$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changesBeQ3A$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_does_not_changeyAeQ31$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8!aZwMKYDXJRlSKjQNWM:localhost:8800a.madeup.test.statethis_state_changes  Gi>g< u J g>oD@R' { P % y N # w L ! FoDmBkT)}qe:c8 *Q!mBQpGaIiadEuKBXfOw:localhost:8800Lyq *Q!mBQpGaIiadEuKBXfOw:localhost:8800Hu*Q!mBQpGaIiadEuKBXfOw:localhost:8800Gt*Q!mBQpGaIiadEuKBXfOw:localhost:8800Fs(Q!loalEsWaTYwrVUNJLr:localhost:8800)((Q!loalEsWaTYwrVUNJLr:localhost:8800('(Q!loalEsWaTYwrVUNJLr:localhost:8800'&(Q!loalEsWaTYwrVUNJLr:localhost:8800&%(Q!loalEsWaTYwrVUNJLr:localhost:8800%$(Q!loalEsWaTYwrVUNJLr:localhost:8800$#*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!laUExtszUaoCpZoyEq:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800.*Q!mTlCLZQCmfDuQsJxxp:localhost:8800-*Q!mBQpGaIiadEuKBXfOw:localhost:8800Kx*Q!mBQpGaIiadEuKBXfOw:localhost:8800Jw*Q!mBQpGaIiadEuKBXfOw:localhost:8800Iv*Q!mTlCLZQCmfDuQsJxxp:localhost:8800,*Q!mTlCLZQCmfDuQsJxxp:localhost:8800+*Q!mTlCLZQCmfDuQsJxxp:localhost:8800**Q!mTlCLZQCmfDuQsJxxp:localhost:8800)*Q!mTlCLZQCmfDuQsJxxp:localhost:8800(*Q!mTlCLZQCmfDuQsJxxp:localhost:8800'*Q!mTlCLZQCmfDuQsJxxp:localhost:8800&*Q!mTlCLZQCmfDuQsJxxp:localhost:8800%*Q!mTlCLZQCmfDuQsJxxp:localhost:8800$*Q!mTlCLZQCmfDuQsJxxp:localhost:8800#*Q!mTlCLZQCmfDuQsJxxp:localhost:8800"*Q!mTlCLZQCmfDuQsJxxp:localhost:8800!*Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 }*Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!lgejtcwlywOoIXwEgy:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800 *Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mOrKBPhetifKHDmElM:localhost:8800*Q!mMsxpaIlcykPuOnDyl:localhost:8800~*Q!mMsxpaIlcykPuOnDyl:localhost:8800}*Q!mMsxpaIlcykPuOnDyl:localhost:8800|*Q!mMsxpaIlcykPuOnDyl:localhost:8800{*Q!mMsxpaIlcykPuOnDyl:localhost:8800z*Q!mMsxpaIlcykPuOnDyl:localhost:8800y*Q!mMsxpaIlcykPuOnDyl:localhost:8800x~*Q!mMsxpaIlcykPuOnDyl:localhost:8800w}*Q!mMsxpaIlcykPuOnDyl:localhost:8800v|*Q!mMsxpaIlcykPuOnDyl:localhost:8800u{*Q!mBQpGaIiadEuKBXfOw:localhost:8800Mz  v?o$eQG$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "217", "stream_ordering": 1839}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 3}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042094469, "hashes": {"sha256": "pBx/tVhu1GYuzM0+LrR+v5AmHm9C8wufWbVps+tVA8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O801Wr6sHEg/XS0yU73BMUBA9ad5O3lUhhAUgVRLVg8LgM0wyqT1aa0MGtcfb0K+VqMfy/31h8gXPqswK1X1Cw"}}, "unsigned": {"age_ts": 1570042094469}}o#eQG$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "216", "stream_ordering": 1838}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 2}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042094467, "hashes": {"sha256": "krNbainh7Ce7lxe36qzUyp11hhyWtaOThF8ImrM4yfg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NJmFuh2izGBUJeoKercqqBeVzmbTl4MlSgIRKHr2MqiRZFKGsW0jd+lYn3sd51Pxjv8BvQ9RbEOJN/2o29E/BQ"}}, "unsigned": {"age_ts": 1570042094467}}@"eQa $Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1837}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio"], "type": "a.madeup.test.state", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"my_key": 2}, "depth": 8, "prev_state": [], "state_key": "this_state_changes", "origin": "localhost:8800", "origin_server_ts": 1570042093793, "hashes": {"sha256": "NFyqQAs6TuIkkuxL1osoLLk3lJpwE0BRgBgkPpcQMoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ABL1cRYtw8APpC4zbIbAp6C4JV1l5WjpfGz4u6kWaaSlTKogAoSKO1YvG18icq4c1hwxuvYknVJ3WRhmYfuTDQ"}}, "unsigned": {"age_ts": 1570042093793, "replaces_state": "$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8"}}!eQa$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "stream_ordering": 1836}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8"], "type": "a.madeup.test.state", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"my_key": 1}, "depth": 7, "prev_state": [], "state_key": "this_state_does_not_change", "origin": "localhost:8800", "origin_server_ts": 1570042093099, "hashes": {"sha256": "hzPJHFU5N8dT35Y1PCHQaeEvDxBYU/0jKEDWucxpA9k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q76FOApmHOVnSe18cuZaX86BdJK96rbPTU/MDTMjb5uKMJYPQPVIrtEKHZYikTabwItq8p/3RRSxYSrpRB0TBw"}}, "unsigned": {"age_ts": 1570042093099}} -RM H C > 9 4/*|%w rmhc TsQeP!DnUHoxreGexNmjSVpq:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroTrQeO!DnUHoxreGexNmjSVpq:localhost:8800$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQTqQeN!rwUuVBrftGHDBOlEZm:localhost:8800$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgTpQeM!rwUuVBrftGHDBOlEZm:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYToQeL!rwUuVBrftGHDBOlEZm:localhost:8800$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsTnQeK!rwUuVBrftGHDBOlEZm:localhost:8800$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0TmQeJ!rwUuVBrftGHDBOlEZm:localhost:8800$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4TlQeI!rwUuVBrftGHDBOlEZm:localhost:8800$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQTkQeH!rwUuVBrftGHDBOlEZm:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYTjQeG!rwUuVBrftGHDBOlEZm:localhost:8800$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeITiQeF!CkNvQnbApPIcuKygDk:localhost:8800$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYThQeE!CkNvQnbApPIcuKygDk:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYTgQeD!CkNvQnbApPIcuKygDk:localhost:8800$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYTfQeC!CkNvQnbApPIcuKygDk:localhost:8800$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQTeQeB!CkNvQnbApPIcuKygDk:localhost:8800$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foTdQeA!CkNvQnbApPIcuKygDk:localhost:8800$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgTcQe@!CkNvQnbApPIcuKygDk:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4TbQe?!CkNvQnbApPIcuKygDk:localhost:8800$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9ATaQe>!NboFFVLpJHTeuUKCjM:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40T`Qe=!NboFFVLpJHTeuUKCjM:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeET_Qe  w EX  } K  R  X & ^ ,d2&j8q? wF~^-j811e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E o1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg s1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01EZ1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY y1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o ;1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc 1e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE`1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAa1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok 1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsj1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY}1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74g1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXci1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cF1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobAY1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM 1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk11e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7810e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4<1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk n1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk #1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs 61e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc S1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMT1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNsq1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM |1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo I 3C c m  [ S +t K|#; eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs!sJnuQYOyruhUpXDsLY:localhost:8800.eeQ$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs!SBEprlZiuliFNSfNmz:localhost:8800CeeQ$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w!QZhNrNpwObZGJZpdAG:localhost:8800eeQ$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY!RPfffkmSEbWggEjnoI:localhost:8800eeQ$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4!aVxOoyiLLnxmzgLJat:localhost:8800zeeQ$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800TeeQ$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800 GeeQ$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE!aBCvSXjtZUEPlPGHvY:localhost:8800qeeQ$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800ueeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I!xvblqEscwOtCqJntfF:localhost:8800eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800eeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE!OqPpVlCwmKdAUlwrXI:localhost:8800[eeQ$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw!RmwbYvIIQyPlHlClty:localhost:8800eeQ$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU!TleKOyAElrpgyyrAQA:localhost:8800eeQ$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v4!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800 deeQ$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g!zNCItZNbpkZKuufRhC:localhost:8800eeQ$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800eeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800 P  ,i,eQa_$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1847}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-346:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042099446, "hashes": {"sha256": "LJfCv7N6fpRryTyCXHCWziyWOqFEBqkdwwRBNQ2Z2Tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ttQ25l2nqABE/slLmvbbuNOb+kg4ks7RoO9B+a8RUTnsELXpVipL4wnDvTUQZzZvJ8nrzwFBwfBHS26HsEuvCA"}}, "unsigned": {"age_ts": 1570042099446}}P+eQ $e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "223", "stream_ordering": 1846}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc", "$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY", "$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 9}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042096952, "hashes": {"sha256": "XyXA3FC8IQt/COiWVxBs48FNFhqBLGEUZ2Z51tDs5Yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o6lKQvd2Tw94M8QpuHYKaAc3E4qe6qrCL1F6e4TWtqz5dF9RGTmIPXaj0j8RaPfy7482X/Fx0Nrp7j19LbSGBQ"}}, "unsigned": {"age_ts": 1570042096952}} *eQ)$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "222", "stream_ordering": 1845}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc", "$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 8}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042096445, "hashes": {"sha256": "wDS8NpfSfudcw8n5XfetnCZMAm5WW5EyBa09JBShfKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4wbCIUDxb1KlVZPnWFAeM3iRaj9DUerxQ5FiTl3/s6k77pT8+IEjliiI2GHX0fo1qatRUhKl1pGKAJo8yiTTBA"}}, "unsigned": {"age_ts": 1570042096445}}P)eQ $0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM!aZwMKYDXJRlSKjQNWM:localhost:8800{"token_id": 362, "txn_id": "221", "stream_ordering": 1844}{"auth_events": ["$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y", "$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres", "$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok"], "prev_events": ["$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c", "$-fBz2eKlbHfZWVTucyKi0jJ59zf0lMY2ybBhA3pwYF0", "$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc"], "type": "a.made.up.filler.type", "room_id": "!aZwMKYDXJRlSKjQNWM:localhost:8800", "sender": "@anon-20191002_181700-345:localhost:8800", "content": {"filler": 7}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042095964, "hashes": {"sha256": "4rCDlOsUb2MPKekMLIu7ZGTMN/c3ynsJaL58v8rexBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dQeCLZNb/ntcirHQ/GSZm07hJFQY9ZBEX98OQdxc9ZaFxyYJKPFkbQOV/WuVouewSaFZy4yn43E/Uo45NT1qCg"}}, "unsigned": {"age_ts": 1570042095964}} K > v Dp3 R | J   P  W %  _^ -e k9q? XwE,&}L j81e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ 1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic (1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y 1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooD1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcB0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I{1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E 1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY H1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kU1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg {1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugs1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro ^1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI 0e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qz0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc%1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioV1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwV1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA v1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg1e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz81e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8\1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc ^1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 I1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY D1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc .1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo e1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE ( i g 4h5 i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1PakhtbFJyOyxKWFZRV2oKMDAyZnNpZ25hdHVyZSDdwZa43S0b4FPU1J3v8GaM6jKZciP6bPjtLQuI8ERDGAo]1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNQdmpGMk1jSWpULFUzXmcKMDAyZnNpZ25hdHVyZSAAJdusJ6MRojq_RPF7h-VTZsbgUhVbJTgGHMbdt5usxgo\1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpGT05WZzpjME54aGEwa3EKMDAyZnNpZ25hdHVyZSDpUvxZ6u0X1qeu7LlJllWrVHYprZ5sx1Iiy24GHHRiBwo[1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1SKytfUy11XkojS1MxVmkKMDAyZnNpZ25hdHVyZSCaT1MOSX0KBCCmJshB7d0-fppNRGX5XHhSuLXXPhoJfgoX1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9eR1JhZ15nYXVNc3c2UysKMDAyZnNpZ25hdHVyZSAj_oQ8dL0pgEcSkW7Y5k-rSIbYA023fHjj6qIwb46-8QoW1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMxZEtLM2E4U1V1TCt4WCoKMDAyZnNpZ25hdHVyZSAE3Bdp9IVTkicSraARx1fk5EN7f6qJ9vD-Mt4BCThD-goV1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1UdjUmb14zdnJRYlhsXmcKMDAyZnNpZ25hdHVyZSC3ajH88MaGSo42KjRxTA7E3zKwcXsuBdjvQY0Gi-moiAoU1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF53SXk0WEdMMzAjZDVqRlIKMDAyZnNpZ25hdHVyZSB992KY5l-C8onDFiF1MetHihNPYsjTpmdJsHPngugGHwoZ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHEmKkE1YU8sTXcseEdyXioKMDAyZnNpZ25hdHVyZSDVzHjwdBY-d0d81_BMXaf_c7mzdcYVxY175kE-wSQfcAoY1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEllakp1QnouYjRQNjJ5MWkKMDAyZnNpZ25hdHVyZSDtr-No_WeNQW2UEd0ErnYsZhDKknyA6m5a5KyPhfXdtwoT1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDSlJPOFBvODFUS2lCWFAKMDAyZnNpZ25hdHVyZSAckk1m2kwk39Ee2gZKKPAT7gU5U1P4hhcAjDEgTf7ZHgoS1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFA5QyNQMzQzeGNKMEhnbmYKMDAyZnNpZ25hdHVyZSB1TB-c_ia7pV1b93_z8OcCYcOWCiFDCmC78PXN0OHWVgoR1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFeUQjPUM1UEVBV2xsZEUKMDAyZnNpZ25hdHVyZSAFjI-KB5HDrP4-l4QgTtjjhzbtt-SVRRYsz25nZ49N0QoQ  0eQa$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1851}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo"], "type": "m.room.history_visibility", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042103748, "hashes": {"sha256": "iFKxQ22HrgjXpsEvFfNyajDj7lqTFhhDowIi0XJVkC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fxynWAhug1SBFH47kA9kjRrraIK5hRe3j1hbbTTNCTky1HbYbzjgP+LzVuXYFbyLW53OjM7fWzXmr79u3si3BA"}}, "unsigned": {"age_ts": 1570042103748}}t/eQau$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1850}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA"], "type": "m.room.join_rules", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042103131, "hashes": {"sha256": "fFsxUyrmIapU0sJgwYGcDs16+zguoEx/lDXaambZgl8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hmAz3THumN0PRw9Xww6TBh0R6RL6A67DQXDYmaLWiJwqM6Pc+KWvTNUhjPSTA2ylOMd/rONhG6F0JND7V4FQBQ"}}, "unsigned": {"age_ts": 1570042103131}}k.eQac$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1849}{"auth_events": ["$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "type": "m.room.power_levels", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"users": {"@anon-20191002_181700-346:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042102189, "hashes": {"sha256": "ASR+EQjlmFFDdOFwPDgJGIsMGEraN+9rJL7tlr1iJ4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lBsoZYXWkvsf0sLWlzDRP/B51YClA9urcs7/4S8TETeM3w+q4wkSSmN2PfNsOMyDP/MSkTwqClslV771jjmuBQ"}}, "unsigned": {"age_ts": 1570042102189}}v-eQay$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1848}{"auth_events": ["$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs"], "prev_events": ["$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs"], "type": "m.room.member", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-346", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-346:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042101035, "hashes": {"sha256": "UqSkpV36y324So2v2qUE3VVep9aSBMQdLvMWDBICub0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g8Info5mdpqb0NKva7820B9QlWnE0va4XFJLiClrtlmzKlz9gVb3BgT2hzHWNt7oOQ0OJdfvEHDk5+mfUsiuAQ"}}, "unsigned": {"age_ts": 1570042101035}}  3eQa=$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 363, "stream_ordering": 1854}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo"], "prev_events": ["$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE"], "type": "m.room.member", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-347:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-347", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-347:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042106291, "hashes": {"sha256": "6jZI+UQbyeGoeXRhab/taPeLEJlP+4QJt5dfOAZrUUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yg4jmbCgA4Rrg1+cnTnzGt7ll9YsPqQshUkDG4VKBrPMTX298eBtW3aJzTScz8UAIoqkfe35KcrCSWUXKYQ3Bg"}}, "unsigned": {"age_ts": 1570042106291, "replaces_state": "$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE"}}2eQa7$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1853}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q"], "type": "m.room.member", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-347", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-347:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042105465, "hashes": {"sha256": "udoT1qQzIBuHeegbRb2F6pnzqx3br/P/hS4bvtfWNus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7couX0cP1vXKmws9QT2/56FugxQreC1SzDlkj/Eto2e4/ps1sGd7eTwX2njT+nnxvoQfIRFHNphLnIMLWoneDA"}}, "unsigned": {"age_ts": 1570042105465, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-346:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-346:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-346", "avatar_url": null}, "sender": "@anon-20191002_181700-346:localhost:8800"}]}}l1eQae$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q!NboFFVLpJHTeuUKCjM:localhost:8800{"token_id": 364, "stream_ordering": 1852}{"auth_events": ["$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA", "$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs", "$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y"], "prev_events": ["$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y"], "type": "a.madeup.test.state", "room_id": "!NboFFVLpJHTeuUKCjM:localhost:8800", "sender": "@anon-20191002_181700-346:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042104656, "hashes": {"sha256": "BxyUfjI3+2GBCzdKOtZcCHTpgFyz2Y96k4o0LGnVHd0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WiW/E6uPuIxkLBzlWPXxE+0H56/29JcA6BXQi9CX2lNdQuobw8oqSGO7P/n2VYX3M8G6mZiG9ubhw4nBJeVqAw"}}, "unsigned": {"age_ts": 1570042104656}} XV l  v  x1;EZX,Se?Q ]$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYm.room.history_visibility!DnUHoxreGexNmjSVpq:localhost:8800m͠pm͢7@anon-20191002_181700-350:localhost:8800$Re/Q ]$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIm.room.join_rules!DnUHoxreGexNmjSVpq:localhost:8800m͛m͝@anon-20191002_181700-350:localhost:8800&Qe3Q ]$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwm.room.power_levels!DnUHoxreGexNmjSVpq:localhost:8800m͙@m͚l@anon-20191002_181700-350:localhost:8800 Pe'Q ]$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrom.room.member!DnUHoxreGexNmjSVpq:localhost:8800m͖m͗N@anon-20191002_181700-350:localhost:8800O e'Q  ]$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQm.room.create!DnUHoxreGexNmjSVpq:localhost:8800m͓m͔^@anon-20191002_181700-350:localhost:8800!Ne)Q ]$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgm.room.message!rwUuVBrftGHDBOlEZm:localhost:8800m͋m͋@anon-20191002_181700-349:localhost:8800 Me'Q ]$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYm.room.member!rwUuVBrftGHDBOlEZm:localhost:8800m͉m͉@anon-20191002_181700-349:localhost:8800Le#Q ]$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCsm.room.test!rwUuVBrftGHDBOlEZm:localhost:8800m͆dm͆k@anon-20191002_181700-349:localhost:8800,Ke?Q ]$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0m.room.history_visibility!rwUuVBrftGHDBOlEZm:localhost:8800m͂"m̓@anon-20191002_181700-349:localhost:8800$Je/Q ]$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4m.room.join_rules!rwUuVBrftGHDBOlEZm:localhost:8800mm̀=@anon-20191002_181700-349:localhost:8800&Ie3Q ]$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQm.room.power_levels!rwUuVBrftGHDBOlEZm:localhost:8800m{Xm}@anon-20191002_181700-349:localhost:8800 He'Q ]$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYm.room.member!rwUuVBrftGHDBOlEZm:localhost:8800mwmw@anon-20191002_181700-349:localhost:8800G e'Q  ]$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIm.room.create!rwUuVBrftGHDBOlEZm:localhost:8800mtBmt@anon-20191002_181700-349:localhost:8800!Fe)Q ]$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYm.room.message!CkNvQnbApPIcuKygDk:localhost:8800mpmp@anon-20191002_181700-348:localhost:8800 Ee'Q ]$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYm.room.member!CkNvQnbApPIcuKygDk:localhost:8800ml[ml@anon-20191002_181700-348:localhost:8800&De3Q ]$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYa.madeup.test.state!CkNvQnbApPIcuKygDk:localhost:8800mhkmi:@anon-20191002_181700-348:localhost:8800,Ce?Q ]$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQm.room.history_visibility!CkNvQnbApPIcuKygDk:localhost:8800mcmd@anon-20191002_181700-348:localhost:8800$Be/Q ]$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fom.room.join_rules!CkNvQnbApPIcuKygDk:localhost:8800m_m`@anon-20191002_181700-348:localhost:8800&Ae3Q ]$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgm.room.power_levels!CkNvQnbApPIcuKygDk:localhost:8800m]0m^/@anon-20191002_181700-348:localhost:8800 @e'Q ]$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4m.room.member!CkNvQnbApPIcuKygDk:localhost:8800mZm[I@anon-20191002_181700-348:localhost:8800? e'Q  ]$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Am.room.create!CkNvQnbApPIcuKygDk:localhost:8800mWmX@anon-20191002_181700-348:localhost:8800 >e'Q ]$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40m.room.member!NboFFVLpJHTeuUKCjM:localhost:8800mQmR@anon-20191002_181700-347:localhost:8800 =e'Q ]$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEm.room.member!NboFFVLpJHTeuUKCjM:localhost:8800mNymN@anon-20191002_181700-346:localhost:8800&<e3Q ]$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qa.madeup.test.state!NboFFVLpJHTeuUKCjM:localhost:8800mKPmL@anon-20191002_181700-346:localhost:8800 Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1le$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1ke$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1je$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1ie$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1he$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81ge$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841fe$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1ee$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI1de$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ1ce$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU1be$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc1ae$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA1`e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c1_e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg1^e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE1]e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L81\e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1[e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1Ze$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T01Ye$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt01Xe$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo1We$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1Ve$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1Ue$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1Te$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ1Se$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX01Re$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM1Qe$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg1Pe$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1Oe$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1Ne$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g1Me$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1Le$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ1Ke$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk1Je$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk1Ie$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU1He$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw1Ge$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE1Fe$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk1Ee$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-41De$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU1Ce$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo1Be$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1Ae$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs81@e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw1?e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1>e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I1=e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1<e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01;e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1:e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw19e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY18e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI17e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw16e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro15e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ14e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg13e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY12e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs11e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV010e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41/e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1.e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1-e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI1,e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY1+e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1*e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1)e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ~1(e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo}1'e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg|1&e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4{1%e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Az1$e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40y1#e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEx1"e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qw ![q|  9 D I mx}5"LnP[c'Q' e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g &Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk %Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ $Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyki#Q3 e!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.state$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlko"Q? e!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibility$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUg!Q/ e!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rules$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwi Q3 e!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE Q']e!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskcQ' e!bOSxzttDtclnrWnLov:localhost:8800m.room.create$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4 Q']e!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0 Q']e!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsiQ3 e!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.state$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwoQ? e!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibility$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYgQ/ e!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rules$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIiQ3 e!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw Q']e!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrocQ' e!DnUHoxreGexNmjSVpq:localhost:8800m.room.create$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ Q']e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYoQ? e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibility$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0gQ/ e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rules$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4iQ3 e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ Q']e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYcQ' e!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI Q']e!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYiQ3 e!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.state$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYo Q? e~!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibility$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQg Q/ e}!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rules$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_foi Q3 e|!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg Q']e{!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4c Q' ez!CkNvQnbApPIcuKygDk:localhost:8800m.room.create$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A Q']ey!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40 Q']ex!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE a} { y w u sqomkigeca~ eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800~eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~~eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~}eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~|eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~{eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~zeeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~yeeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~xeeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~weeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~veeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~ueeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800~teeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800~seeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~reeQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800~qeeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800~peeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~oeeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800~neeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800~meeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo!NboFFVLpJHTeuUKCjM:localhost:8800~leeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800~keeQ$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800 DM u  r u tw ,y|18dQ']eef!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk cQ']ee!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykjbQ3 ed!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.state$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkpaQ? ec!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibility$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUh`Q/ eb!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rules$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwj_Q3 ea!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE ^Q']e`!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskd]Q' e_!bOSxzttDtclnrWnLov:localhost:8800m.room.create$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-48\Q']eeV!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs [Q']eU!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsjZQ3 eT!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.state$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwpYQ? eS!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibility$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYhXQ/ eR!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rules$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIjWQ3 eQ!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw VQ']eP!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrodUQ' eO!DnUHoxreGexNmjSVpq:localhost:8800m.room.create$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ8TQ']eeM!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYpSQ? eK!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibility$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0hRQ/ eJ!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rules$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4jQQ3 eI!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levels$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ PQ']eH!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xYdOQ' eG!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI8NQ']eeE!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4jMQ3 eD!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.state$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXYpLQ? eC!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibility$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQhKQ/ eB!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rules$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fojJQ3 eA!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg IQ']e@!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4dHQ' e?!CkNvQnbApPIcuKygDk:localhost:8800m.room.create$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A8GQ']ee>!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE ESe0`- _ , \ ) Y $ T ! Q L|IyFL|I|GwD4]@anon-20191002_181700-444:localhost:8800mL4]@anon-20191002_181700-443:localhost:8800mK4]@anon-20191002_181700-442:localhost:8800mJ2]@anon-20191002_181700-444:localhost:8800aI2]@anon-20191002_181700-443:localhost:8800aH2]@anon-20191002_181700-442:localhost:8800aG4]@anon-20191002_181700-441:localhost:8800mF4]@anon-20191002_181700-440:localhost:8800mE4]@anon-20191002_181700-439:localhost:8800mD4]@anon-20191002_181700-438:localhost:8800mC4]@anon-20191002_181700-414:localhost:8800m2]@anon-20191002_181700-414:localhost:8800a4]@anon-20191002_181700-413:localhost:8800m2]@anon-20191002_181700-413:localhost:8800a Y4]@anon-20191002_181700-446:localhost:8800mQ2]@anon-20191002_181700-446:localhost:8800aP4]@anon-20191002_181700-445:localhost:8800mN2]@anon-20191002_181700-445:localhost:8800aM2]@anon-20191002_181700-441:localhost:8800a@2]@anon-20191002_181700-440:localhost:8800a?0[@anon-20191002_181700-43:localhost:8800a[2]@anon-20191002_181700-439:localhost:8800a>2]@anon-20191002_181700-438:localhost:8800a;4]@anon-20191002_181700-437:localhost:8800mB2]@anon-20191002_181700-437:localhost:8800a=4]@anon-20191002_181700-436:localhost:8800mA2]@anon-20191002_181700-436:localhost:8800a<4]@anon-20191002_181700-435:localhost:8800m:2]@anon-20191002_181700-435:localhost:8800a54]@anon-20191002_181700-434:localhost:8800m92]@anon-20191002_181700-434:localhost:8800a74]@anon-20191002_181700-433:localhost:8800m82]@anon-20191002_181700-433:localhost:8800a64]@anon-20191002_181700-432:localhost:8800m42]@anon-20191002_181700-432:localhost:8800a14]@anon-20191002_181700-431:localhost:8800m32]@anon-20191002_181700-431:localhost:8800a04]@anon-20191002_181700-430:localhost:8800m22]@anon-20191002_181700-430:localhost:8800a/4]@anon-20191002_181700-429:localhost:8800m.2]@anon-20191002_181700-429:localhost:8800a+4]@anon-20191002_181700-428:localhost:8800m-2]@anon-20191002_181700-428:localhost:8800a*4]@anon-20191002_181700-427:localhost:8800m,2]@anon-20191002_181700-427:localhost:8800a)4]@anon-20191002_181700-426:localhost:8800m(2]@anon-20191002_181700-426:localhost:8800a%4]@anon-20191002_181700-425:localhost:8800m'2]@anon-20191002_181700-425:localhost:8800a#4]@anon-20191002_181700-424:localhost:8800m&2]@anon-20191002_181700-424:localhost:8800a$2]@anon-20191002_181700-423:localhost:8800a4]@anon-20191002_181700-422:localhost:8800m"2]@anon-20191002_181700-422:localhost:8800a4]@anon-20191002_181700-421:localhost:8800m!2]@anon-20191002_181700-421:localhost:8800a4]@anon-20191002_181700-420:localhost:8800m 2]@anon-20191002_181700-420:localhost:8800a0[@anon-20191002_181700-41:localhost:8800aY4]@anon-20191002_181700-419:localhost:8800m2]@anon-20191002_181700-419:localhost:8800a4]@anon-20191002_181700-418:localhost:8800m2]@anon-20191002_181700-418:localhost:8800a4]@anon-20191002_181700-417:localhost:8800m2]@anon-20191002_181700-417:localhost:8800a4]@anon-20191002_181700-416:localhost:8800m2]@anon-20191002_181700-416:localhost:8800a4]@anon-20191002_181700-415:localhost:8800m2]@anon-20191002_181700-415:localhost:8800a ~z v r n j fb^ZVRNJF#eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800"eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800!eeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800 eeQ$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800eeQ$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800eeQ$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800eeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800 eeQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800 eeQ$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800 eeQ$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800 eeQ$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800 eeQ$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800eeQ$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800eeQ$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800eeQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800   *t7eQau$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1858}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg"], "type": "m.room.join_rules", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042109931, "hashes": {"sha256": "o3Db5cqGhvp/GZ1pyWnlKOZEtQhpKsSMtpZQwdKOYqA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kWPFJL0jTv1ppcMoqvOBwS5j4FT9MXwydQsDhNc7rTgTyXOMSd459KvqzJUMM5+3V2OCeA0kOhOUL+keVx8VAQ"}}, "unsigned": {"age_ts": 1570042109931}}k6eQac$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1857}{"auth_events": ["$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "type": "m.room.power_levels", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"users": {"@anon-20191002_181700-348:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042109232, "hashes": {"sha256": "DGL5/qzwkCmizuojtHr/Zca7yVb5vwuPID4oR/WPTIU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzX+zT31dnc8gRsdx6MiMQP2ER43zBqkvDzGYvgAKzfJ+ZXAIiq2So+Nv1oWR4rIzUs57k1IhhVrzq8Ygu/NAQ"}}, "unsigned": {"age_ts": 1570042109232}}v5eQay$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1856}{"auth_events": ["$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A"], "prev_events": ["$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A"], "type": "m.room.member", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-348", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-348:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042108646, "hashes": {"sha256": "oWr/BPvPEgSmY9HP0+WMXxl8WCAocJW7OaWZWA1z/9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0CMckGCnXCdmam7EWtW0pCmrmgruBk/UCwd2qbU3vkcR/XExVOr1gXI+op1hpx4Liv0GjuMrcxyzeTjApgQyBw"}}, "unsigned": {"age_ts": 1570042108646}}i4eQa_$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1855}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-348:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042107830, "hashes": {"sha256": "huKItinP9CNZIyfCKeGLD0164b4xHlrnpV5QRpWcYs8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vlcla4UqnkwdI4gUioYCEurOPT6ixvAap1uGWF/GeiJtDwF2zGYsathxbW1Ty8p45fqDoIf19rnbau752KXdAQ"}}, "unsigned": {"age_ts": 1570042107830}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@UTSRQPONMKJIHGFECBA@?>=<;:987654/,+*)('&%$#"!      ~}|{zyzxywxvwuvtustrsqrpqopnomnlmkljkijhighfgefdecdbcab`a_`^_]V\U[TZSYRXQWPVOUMTKSJRIQHPGOENDMCLBKAJ@I?H>G=F<E;D:C9B8A7@-?,>+=*<);(:'9&8%7$6$5$4$3$2$1 0 / . -,+*)('&%$#"!      tsrqpnmlkjhgfeda`_^]\[ZYXWV     ~}|{yxwvusrqponmlkjihgfedcba`_^]\ 8 w 8B;eQm$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "txn_id": "224", "stream_ordering": 1862}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY"], "prev_events": ["$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY"], "type": "m.room.message", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"msgtype": "m.text", "body": "A message to wait on because the m.room.member doesn't come down /sync"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042114065, "hashes": {"sha256": "dkJW5hgG8R/V5VpEK2WXJDuKEFeUfm7qhKC5EpU7YG8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PnDwZGdoDPg6z6tJKckNkm6EW+MAGkOB6zUNVBjPfbczC2L7IIYswWoEcnaTs9L2d5VUfzivOPccUD1il4pPDQ"}}, "unsigned": {"age_ts": 1570042114065}}:eQa$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1861}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo"], "prev_events": ["$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY"], "type": "m.room.member", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"displayname": "boris", "membership": "join", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-348:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042113115, "hashes": {"sha256": "Eog5AmTLmj+ZvkYWFtVLGMrCvH7W83vA9G+XS7uWUG0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J+f0G97M5EsIzGWv/U7xEbDbmSt3x0R9z9sBBZN8K9i6DnpG8Owd/FWj78XQzSecL1HdY8rHEqoKgthkE7MhDw"}}, "unsigned": {"age_ts": 1570042113115, "replaces_state": "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"}}l9eQae$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1860}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ"], "type": "a.madeup.test.state", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042112107, "hashes": {"sha256": "pL4sqx7PjKFTzIsjt6fvZW3qosHQxDd+SuFYDHFHxyc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k2w5yxFEc7Ij+k+7TzdvCk4Ft6hqGzwblXTEGcjneEYNWygsVifPOpchzDP1QBXEKOfXlu4pYdz1vEcZGpz6Dw"}}, "unsigned": {"age_ts": 1570042112107}}8eQa$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800{"token_id": 365, "stream_ordering": 1859}{"auth_events": ["$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg", "$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A", "$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4"], "prev_events": ["$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo"], "type": "m.room.history_visibility", "room_id": "!CkNvQnbApPIcuKygDk:localhost:8800", "sender": "@anon-20191002_181700-348:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042110736, "hashes": {"sha256": "9TREHdbDIRMN/eshI+E/xVsL/edkpfpgMgf88hh+5a0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J6ZubsSg9xt9V8kk2uB5YPjmy6Ac/qd8hz0QvFG5pUIJ+Ib6qF2svp8HzTx5X/tS3EV7FuAtJ+rN0O0UYJemAg"}}, "unsigned": {"age_ts": 1570042110736}} QeT)Fo}R' { P %<e y N # w L ! u J  s H qDmBk@gi>*Q!TkluVzxeeCbMtbFWWS:localhost:8800 *Q!TkluVzxeeCbMtbFWWS:localhost:8800 *Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!TkluVzxeeCbMtbFWWS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 ; l*Q!UTAORDrNxIbSlGByAp:localhost:8800 9 j*Q!UTAORDrNxIbSlGByAp:localhost:8800 7 h*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800~*Q!UMFUOnYRvwKwSPkYHB:localhost:8800}*Q!UMFUOnYRvwKwSPkYHB:localhost:8800|*Q!UMFUOnYRvwKwSPkYHB:localhost:8800{*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  R*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  Q*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  P*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  O*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  N*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  M*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  L*Q!TcCLuIBUrtFqghDgay:localhost:8800L>*Q!TcCLuIBUrtFqghDgay:localhost:8800K=*Q!TcCLuIBUrtFqghDgay:localhost:8800J<*Q!TcCLuIBUrtFqghDgay:localhost:8800I;*Q!TcCLuIBUrtFqghDgay:localhost:8800H:*Q!TcCLuIBUrtFqghDgay:localhost:8800G9*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  K*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  J*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 I*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 H*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 G*Q!UGVFuRGyPQmBbGsEDo:localhost:8800 F*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TleKOyAElrpgyyrAQA:localhost:8800*Q!TlJCaYlCkOOVzFDlLx:localhost:8800r*Q!TlJCaYlCkOOVzFDlLx:localhost:8800q*Q!TlJCaYlCkOOVzFDlLx:localhost:8800p*Q!TlJCaYlCkOOVzFDlLx:localhost:8800o*Q!TlJCaYlCkOOVzFDlLx:localhost:8800n*Q!TlJCaYlCkOOVzFDlLx:localhost:8800m*Q!TlJCaYlCkOOVzFDlLx:localhost:8800l*Q!TlJCaYlCkOOVzFDlLx:localhost:8800k*Q!TlJCaYlCkOOVzFDlLx:localhost:8800j*Q!TlJCaYlCkOOVzFDlLx:localhost:8800i*Q!TlJCaYlCkOOVzFDlLx:localhost:8800h*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TeraguiGoZoeOGFzlI:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TcaopYfMoJFEcjYRzJ:localhost:8800*Q!TWETXUgfFZafDdbqLS:localhost:880055*Q!TWETXUgfFZafDdbqLS:localhost:880044*Q!TWETXUgfFZafDdbqLS:localhost:880033*Q!TWETXUgfFZafDdbqLS:localhost:880022*Q!TWETXUgfFZafDdbqLS:localhost:880011   *t?eQau$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1866}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ"], "type": "m.room.join_rules", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042117916, "hashes": {"sha256": "jBTX6YJBW9MR2E76ZBZYEdhl/zp+4eBZ/nTtNc5c2Bw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bTZgrPbHOijAs6y0wUwKKMeRxkgoKKwLtn5chVSUWpHgQ2EFCcm8T1JhdYHvbMbG0W1gICiw3Z/1qjEamuoLDg"}}, "unsigned": {"age_ts": 1570042117916}}k>eQac$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1865}{"auth_events": ["$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "type": "m.room.power_levels", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"users": {"@anon-20191002_181700-349:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042116952, "hashes": {"sha256": "3Xqob0jIGznXo5ndOKwWCJ00zROq+sMaVGdexlAEeVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YCRoqZqg+Gur9SFEx1xmWhNxgCyBX9N7klsE51bNjdbY9rwYHYSHuUBcROSjQwf+4ED4w3IWD6DZ7ZXp7WjdBQ"}}, "unsigned": {"age_ts": 1570042116952}}v=eQay$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1864}{"auth_events": ["$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI"], "prev_events": ["$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI"], "type": "m.room.member", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-349", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-349:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042115976, "hashes": {"sha256": "VFZEAffbv4gzx/tnSbBNGT3PTvIdTJmNuummcUZ7+eE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BXDg92n/e0d4YXzRRx/E7dHsfpK+fpXnhqrCgYUY8WQVvb303bWrPf8AfzRvodlgaBRDhEMPTuDYfgfi7ybYBg"}}, "unsigned": {"age_ts": 1570042115976}}i<eQa_$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1863}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-349:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042115138, "hashes": {"sha256": "9ILNu+F80y1EzzqDezzPO73lRgFqFYXSbPTJTWkcuAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sO/h6KcF0iw1WDXSfc1zQSCqR302eqomEr948DfxIQKhpHEy/df1OgFQO15YGQkLuS9xl2+EwjK9Skw57doCDg"}}, "unsigned": {"age_ts": 1570042115138}} 4$| l d \ T,  L Dt< eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q!EyyNoldCLUdFHzXTDP:localhost:8800aeeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800meeQ$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48!JusxqeECtidaPlWqhp:localhost:8800OeeQ$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800 ہeeQ$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800 <eeQ$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew!ZaOktTIVeRgBXxfubH:localhost:8800MeeQ$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY!HcMGemcRrLnLprOJJR:localhost:8800сeeQ$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g!ZaOktTIVeRgBXxfubH:localhost:8800KeeQ$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w!NQgavrmiCPUVaVjssy:localhost:8800eeQ$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk!EfJcWhdjNARbuHYrqU:localhost:8800ށeeQ$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY!NNiyzThHMivrxhojfp:localhost:8800eeQ$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800 (eeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800 veeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800MeeQ$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4!uSBqTezaFcMnlowsEf:localhost:8800E qaQxh X H 8 ) A1! eeQ$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800F"eeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic!mTlCLZQCmfDuQsJxxp:localhost:8800V OeeQ$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30!GiSxJsKZhQVHBkrVPn:localhost:8800=eeQ$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4!OSHhtkGUjpUCkXwIhj:localhost:8800OeeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800 ,>eeQ$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us!hYPSaMPGsLnvYSmwhg:localhost:8800neeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800 # <eeQ$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO4$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g!msMfSdLIAvklSSAnci:localhost:8800zeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800 f7eeQ$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg!IfYYyzLHSOeyJBxBfn:localhost:8800%eeQ$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M!kwJgbtogEzCqYbUXfh:localhost:8800 eeQ$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ!odAvowLhHJcmkKlxFk:localhost:8800eeQ$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800 eeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800 peeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800m eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800 oeeQ$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y!mMsxpaIlcykPuOnDyl:localhost:8800/eeQ$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4!BckZfhQgrcyiMhEAAJ:localhost:8800feeQ$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILE$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw!OqPpVlCwmKdAUlwrXI:localhost:8800W eeQ$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s!hYPSaMPGsLnvYSmwhg:localhost:8800o eeQ$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q!SfYtaUhCFosNfHfUVm:localhost:8800 Z w +"ZDCeQq$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "txn_id": "225", "stream_ordering": 1870}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY"], "prev_events": ["$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY"], "type": "m.room.message", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"msgtype": "m.text", "body": "A message to wait on because the m.room.member might not come down /sync"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042121186, "hashes": {"sha256": "Oic6x/eC81n8fjiICNjrjVr6jOOi+qI0Z+1cxHJHg3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EVI6fQqMGtymc1jCF8Wxz+jUHYNqQnrQyYBQ3IlJ5b6XMj07EiadjRtmwnL8c+lV8zbc5y1J+7rcqH8Ukn/5DA"}}, "unsigned": {"age_ts": 1570042121186}}BeQa$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1869}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4"], "prev_events": ["$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs"], "type": "m.room.member", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"membership": "join", "displayname": "boris", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-349:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042120475, "hashes": {"sha256": "qO84QfFzZOYkENoeeZ2AS3KyMyoqlpYZDtxQ+VD9+N8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7SJoaxBA7+IB8sEwrT6g0tW0/f2/cjmeMMtVjjTFptbKuA+LtLs8Q7Uci4PNSNRsQtATTylbbiPfk2uUPlrOCA"}}, "unsigned": {"age_ts": 1570042120475, "replaces_state": "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"}}HAeQa$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1868}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0"], "type": "m.room.test", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042119780, "hashes": {"sha256": "YU+3ds5DL+C8sOrMLVtH2BQ6rED/kxwhUR3oZS/mKhk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n4d9C1l+jM5s0rhr5DCsKs6svCt3Qa1gMYBP7izBQn3KSpyQkD8BkSLmcLNAtxdN6sZ2n6febswoZMwxgWqlCQ"}}, "unsigned": {"age_ts": 1570042119780}}@eQa$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800{"token_id": 366, "stream_ordering": 1867}{"auth_events": ["$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ", "$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI", "$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY"], "prev_events": ["$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4"], "type": "m.room.history_visibility", "room_id": "!rwUuVBrftGHDBOlEZm:localhost:8800", "sender": "@anon-20191002_181700-349:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042118690, "hashes": {"sha256": "VBY1ARQSX2YroCBfHfFjDGFKmICP10z6/5NqGKrUZfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VfBzOzx7pdDNWLLTpPKQX6v4xV8Re50rg36IzKTOHBH2/ModdywgOLH3Wfg/YPtOkcbJxsFPDIUdknPodAGzDw"}}, "unsigned": {"age_ts": 1570042118690}}  E=6.|t l e ] U& M eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800 eeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800 keeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800 OeeQ$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8!WjlTCJVOFJkanCtkFE:localhost:8800yeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800LeeQ$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M!aWbcZNVBalJilCEsdr:localhost:8800seeQ$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4$-O8MQBkXucCgYY3b2BXG9EzAMr1sy8WmdCRTZgD8MBw!IPYMCBwcyNIzqdiIWv:localhost:8800΁eeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q!iTQSCiLqRMDtgXtUdC:localhost:8800ŁeeQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg!iTQSCiLqRMDtgXtUdC:localhost:8800ƁeeQ$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY!wnriPzXkIMmdTNoJKU:localhost:8800ρeeQ$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY!BGbJEmJRVJGlZFQbZe:localhost:8800́eeQ$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U$VNtd6JGYinOluKfd09DhPfyoKoVfzMUTGu-zdB5zNUs!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800 ݁eeQ$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM!KxhGcTbEWmtgGNpdox:localhost:8800:eeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800XeeQ$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y!loalEsWaTYwrVUNJLr:localhost:8800!eeQ$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800|eeQ$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4!msMfSdLIAvklSSAnci:localhost:8800eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800!eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800 VeeQ$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!XNfwczePlyYFWLCaui:localhost:8800t W _ 2 f ;  d 9 c8 Z-yLqDc6 l?^1~Q$yLl? T F  ' s   ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 X X,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 +Q !sqkBzbHHJOTNWwynqV:localhost:8800 +Q !tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800&&,Q!tDsPLsKOLPePtEWRwn:localhost:8800%%,Q!tDsPLsKOLPePtEWRwn:localhost:8800$$,Q!tDsPLsKOLPePtEWRwn:localhost:8800##,Q!tDsPLsKOLPePtEWRwn:localhost:8800""+Q !tDsPLsKOLPePtEWRwn:localhost:8800!!,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800+Q !svYOOXWZHtQQzlMcEP:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 ##,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 "",Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!!,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  ,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800+Q !sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!scyFsXcUIJiLIMwWMY:localhost:8800qq*Q!scyFsXcUIJiLIMwWMY:localhost:8800pp*Q!scyFsXcUIJiLIMwWMY:localhost:8800oo*Q!scyFsXcUIJiLIMwWMY:localhost:8800nn*Q!scyFsXcUIJiLIMwWMY:localhost:8800mm)Q !scyFsXcUIJiLIMwWMY:localhost:8800ll*Q!sPWVGnipjiiWQpywNO:localhost:8800 >>*Q!sPWVGnipjiiWQpywNO:localhost:8800==*Q!sPWVGnipjiiWQpywNO:localhost:8800<<*Q!sPWVGnipjiiWQpywNO:localhost:8800;;*Q!sPWVGnipjiiWQpywNO:localhost:8800::*Q!sPWVGnipjiiWQpywNO:localhost:880099*Q!sPWVGnipjiiWQpywNO:localhost:880088*Q!sPWVGnipjiiWQpywNO:localhost:880077)Q !sPWVGnipjiiWQpywNO:localhost:880066,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 W W,Q!tcYctHPiaKzsKgrXlU:localhost:8800 V V,Q!taANXnGBZntAreRurn:localhost:8800 U U,Q!tcYctHPiaKzsKgrXlU:localhost:8800 T T,Q!taANXnGBZntAreRurn:localhost:8800 S S,Q!tcYctHPiaKzsKgrXlU:localhost:8800 R R,Q!taANXnGBZntAreRurn:localhost:8800 Q Q,Q!tcYctHPiaKzsKgrXlU:localhost:8800 P P+Q !taANXnGBZntAreRurn:localhost:8800 O O+Q !tcYctHPiaKzsKgrXlU:localhost:8800 N N,Q!tkajvIKHoOMWGsReBs:localhost:8800+Q !tkajvIKHoOMWGsReBs:localhost:8800,Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y Y,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800+Q !sJnuQYOyruhUpXDsLY:localhost:8800,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p p,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o o,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n n,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m m+Q !tPkCGJBKmqUXJoRrnY:localhost:8800 l l,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800'' W _ 2 f ;  d 9 c8 Z-yLqDc6 l?^1~Q$yLl? T F  ' s   ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 X X,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 ,Q!sqkBzbHHJOTNWwynqV:localhost:8800 +Q !sqkBzbHHJOTNWwynqV:localhost:8800 +Q !tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800&&,Q!tDsPLsKOLPePtEWRwn:localhost:8800%%,Q!tDsPLsKOLPePtEWRwn:localhost:8800$$,Q!tDsPLsKOLPePtEWRwn:localhost:8800##,Q!tDsPLsKOLPePtEWRwn:localhost:8800""+Q !tDsPLsKOLPePtEWRwn:localhost:8800!!,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800 ,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800,Q!svYOOXWZHtQQzlMcEP:localhost:8800+Q !svYOOXWZHtQQzlMcEP:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 ##,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 "",Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!!,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  ,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800,Q!sfXbvAcOUJhzGwWEpZ:localhost:8800+Q !sfXbvAcOUJhzGwWEpZ:localhost:8800*Q!scyFsXcUIJiLIMwWMY:localhost:8800qq*Q!scyFsXcUIJiLIMwWMY:localhost:8800pp*Q!scyFsXcUIJiLIMwWMY:localhost:8800oo*Q!scyFsXcUIJiLIMwWMY:localhost:8800nn*Q!scyFsXcUIJiLIMwWMY:localhost:8800mm)Q !scyFsXcUIJiLIMwWMY:localhost:8800ll*Q!sPWVGnipjiiWQpywNO:localhost:8800 >>*Q!sPWVGnipjiiWQpywNO:localhost:8800==*Q!sPWVGnipjiiWQpywNO:localhost:8800<<*Q!sPWVGnipjiiWQpywNO:localhost:8800;;*Q!sPWVGnipjiiWQpywNO:localhost:8800::*Q!sPWVGnipjiiWQpywNO:localhost:880099*Q!sPWVGnipjiiWQpywNO:localhost:880088*Q!sPWVGnipjiiWQpywNO:localhost:880077)Q !sPWVGnipjiiWQpywNO:localhost:880066,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!taANXnGBZntAreRurn:localhost:8800 W W,Q!tcYctHPiaKzsKgrXlU:localhost:8800 V V,Q!taANXnGBZntAreRurn:localhost:8800 U U,Q!tcYctHPiaKzsKgrXlU:localhost:8800 T T,Q!taANXnGBZntAreRurn:localhost:8800 S S,Q!tcYctHPiaKzsKgrXlU:localhost:8800 R R,Q!taANXnGBZntAreRurn:localhost:8800 Q Q,Q!tcYctHPiaKzsKgrXlU:localhost:8800 P P+Q !taANXnGBZntAreRurn:localhost:8800 O O+Q !tcYctHPiaKzsKgrXlU:localhost:8800 N N,Q!tkajvIKHoOMWGsReBs:localhost:8800+Q !tkajvIKHoOMWGsReBs:localhost:8800,Q!tcYctHPiaKzsKgrXlU:localhost:8800 Y Y,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800,Q!sJnuQYOyruhUpXDsLY:localhost:8800+Q !sJnuQYOyruhUpXDsLY:localhost:8800,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p p,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o o,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n n,Q!tPkCGJBKmqUXJoRrnY:localhost:8800 m m+Q !tPkCGJBKmqUXJoRrnY:localhost:8800 l l,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tLkhTnTgDjjAvscRkW:localhost:8800 ,Q!tDsPLsKOLPePtEWRwn:localhost:8800'' a} { y w u sqomkigeca~(eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~'eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~&eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~%eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~$eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~#eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~"eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~!eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~ eeQ$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800~eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~ eeQ$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800~ eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800~ eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800~ eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800 +?GN Y  [  b l h 0 ,s2y8>IJOZa 9T ]@anon-20191002_181700-382:localhost:8800a&\=S ] @anon-20191002_181700-381:localhost:8800m&\V>R ]  @anon-20191002_181700-380:localhost:8800m&\9Q ]@anon-20191002_181700-381:localhost:8800a&\9P ]@anon-20191002_181700-380:localhost:8800a&\=O ]  @anon-20191002_181700-379:localhost:8800m&\V>N ]  @anon-20191002_181700-378:localhost:8800m&\&9M ]@anon-20191002_181700-379:localhost:8800a&\9L ]@anon-20191002_181700-378:localhost:8800a&\>K ] @anon-20191002_181700-377:localhost:8800m&\e9J ]@anon-20191002_181700-377:localhost:8800a&\=I ]  @anon-20191002_181700-376:localhost:8800m&\V@H ]@anon-20191002_181700-375:localhost:8800m&\ 9G ]@anon-20191002_181700-375:localhost:8800a&\9F ]@anon-20191002_181700-376:localhost:8800a&\?E ] @anon-20191002_181700-374:localhost:8800m&\29D ]@anon-20191002_181700-374:localhost:8800a&\=C ] @anon-20191002_181700-372:localhost:8800m&\Z>B ] @anon-20191002_181700-373:localhost:8800m&\9A ]@anon-20191002_181700-372:localhost:8800a&\9@ ]@anon-20191002_181700-373:localhost:8800a&\>? ] @anon-20191002_181700-371:localhost:8800m&\9> ]@anon-20191002_181700-371:localhost:8800a&\>= ] @anon-20191002_181700-370:localhost:8800m&\e9< ]@anon-20191002_181700-370:localhost:8800a&\>; ] @anon-20191002_181700-369:localhost:8800m&\9: ]@anon-20191002_181700-369:localhost:8800a&\>9 ] @anon-20191002_181700-368:localhost:8800m&\e98 ]@anon-20191002_181700-368:localhost:8800a&\>7 ]  @anon-20191002_181700-367:localhost:8800m&\96 ]@anon-20191002_181700-367:localhost:8800a&\>5 ] @anon-20191002_181700-365:localhost:8800m&\X94 ]@anon-20191002_181700-365:localhost:8800a&\93 ]@anon-20191002_181700-366:localhost:8800a&\>2 ] @anon-20191002_181700-363:localhost:8800m&\X91 ]@anon-20191002_181700-363:localhost:8800a&\?- ] @anon-20191002_181700-360:localhost:8800m&\9p=/ ]  @anon-20191002_181700-362:localhost:8800m&\>. ] @anon-20191002_181700-361:localhost:8800m&\ I90 ]@anon-20191002_181700-364:localhost:8800a&\9, ]@anon-20191002_181700-360:localhost:8800a&\9+ ]@anon-20191002_181700-361:localhost:8800a&\9* ]@anon-20191002_181700-362:localhost:8800a&\?' ] @anon-20191002_181700-357:localhost:8800m&\9o=) ]  @anon-20191002_181700-359:localhost:8800m&\>( ] @anon-20191002_181700-358:localhost:8800m&\ J9& ]@anon-20191002_181700-359:localhost:8800a&\9% ]@anon-20191002_181700-357:localhost:8800a&\9$ ]@anon-20191002_181700-358:localhost:8800a&\=# ]  @anon-20191002_181700-356:localhost:8800m&\>" ] @anon-20191002_181700-355:localhost:8800m&\ I>! ] @anon-20191002_181700-354:localhost:8800m&\9 ]@anon-20191002_181700-356:localhost:8800a&\9 ]@anon-20191002_181700-354:localhost:8800a&\9 ]@anon-20191002_181700-355:localhost:8800a&\> ]@anon-20191002_181700-353:localhost:8800m&\> ] @anon-20191002_181700-352:localhost:8800m&\D9 ]@anon-20191002_181700-353:localhost:8800a&\9 ]@anon-20191002_181700-352:localhost:8800a&\= ]  @anon-20191002_181700-351:localhost:8800m&\> ] @anon-20191002_181700-350:localhost:8800m&\/"9 ]@anon-20191002_181700-350:localhost:8800a&\9 ]@anon-20191002_181700-351:localhost:8800a&\   *tGeQau$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1874}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw"], "type": "m.room.join_rules", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042125282, "hashes": {"sha256": "OJs3dl6zO8+jnHAPFRcKOP+PmWoWqzXv/i3+ueybPww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xNo8qXxn73BfdIrcU5kuivld0nvznmHfS25pg+tLe6T1u+YKxmU1AHMLKPfmAhhuDxDLSjDyq0Cc+iBe5Y5bDA"}}, "unsigned": {"age_ts": 1570042125282}}kFeQac$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1873}{"auth_events": ["$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "type": "m.room.power_levels", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"users": {"@anon-20191002_181700-350:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042124608, "hashes": {"sha256": "vsEHC/RlncvRAFDzEnlfM59NkW9VFv2wcp9Yri08knk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ETm+rKesYu8/M0nbkKiKfjOzo8ryx7w1XZgDV8l2VmkJbS/8f9cBnfZ731GkS/ts95zXDKayGCBM4tO7e4plBQ"}}, "unsigned": {"age_ts": 1570042124608}}vEeQay$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1872}{"auth_events": ["$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ"], "prev_events": ["$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ"], "type": "m.room.member", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-350", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-350:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042123961, "hashes": {"sha256": "CFA2bVTM2CynUlebIbhEeOzlQrX5o+kwyiZQHYZO0lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LLTPBT+XW2N7+W6GZQ084ena31IswVXEQfc48V9Ao5t0wGkaIJlsxPPffqu1MJ9Ey35erkF2wkMV5ugsPFr+Bw"}}, "unsigned": {"age_ts": 1570042123961}}iDeQa_$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1871}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-350:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042123191, "hashes": {"sha256": "B8oL1QbLQaHntOFJfJodpBmDUWgz4dU7VQAxFO1oR5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z59djYIVfFr830OZgvH99m/E5bQ7CWXl3qwxkOzbyam5RYDdT8RN/dy7fVchVP61KToubdeHDFXZ/1KRB06lAw"}}, "unsigned": {"age_ts": 1570042123191}} h+mYld Zm  \  ^   `g b ckifTeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800TeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800}TeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800aTeQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08!qjijQBfMwsCPTVgKPm:localhost:8800TeQ$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s!zFdNewlKnUiMBxnYrN:localhost:8800TeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800TeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU!DuqHkpTfWCUblSrxQj:localhost:8800SeQ$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0!TWETXUgfFZafDdbqLS:localhost:8800'TeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800TeQ$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik!HZqzpRgqekPOtxstVc:localhost:8800TeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800nTeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y!itfjLXhEaORJLkbfVS:localhost:8800`UTeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800TeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg!mTlCLZQCmfDuQsJxxp:localhost:8800MTeQ$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY!zFdNewlKnUiMBxnYrN:localhost:8800TeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800TTeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800TeQ$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI!kwXxkGQFkaeenFTQJr:localhost:8800SeQ$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs!XIqmzIFbkHGQPIpywk:localhost:8800OTeQ$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM!bnTuVBaAJTPbcYZtRl:localhost:8800TeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ!lgejtcwlywOoIXwEgy:localhost:8800WSeQ$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!AWfbViAZparIjmDaVT:localhost:8800!TeQ$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc!DSFBpkqfnvBQbGoMUK:localhost:8800ATeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800ZTeQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g!SvKwEALYoNreUvqAlp:localhost:8800TeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc!dWgOTucBVQBKZjfndN:localhost:8800SeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM!ntuwVdUxfzNIhIKYaz:localhost:8800KTeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800TeQ$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA!NNiyzThHMivrxhojfp:localhost:8800TeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800TeQ$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0!fsbkkRBZlUcBVVfMME:localhost:8800SeQ$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc!SyIWYOmcGiASNkPCTB:localhost:8800 9 4/*|%w rmhc T Qev!bNSXSTadOMhIrYpMzH:localhost:8800$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagTQeu!bNSXSTadOMhIrYpMzH:localhost:8800$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQTQet!bNSXSTadOMhIrYpMzH:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0TQes!bNSXSTadOMhIrYpMzH:localhost:8800$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0TQer!TlJCaYlCkOOVzFDlLx:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoTQeq!TlJCaYlCkOOVzFDlLx:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gTQep!TlJCaYlCkOOVzFDlLx:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfATQeo!TlJCaYlCkOOVzFDlLx:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYTQen!TlJCaYlCkOOVzFDlLx:localhost:8800$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQTQem!TlJCaYlCkOOVzFDlLx:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0TQel!TlJCaYlCkOOVzFDlLx:localhost:8800$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMTQek!TlJCaYlCkOOVzFDlLx:localhost:8800$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgTQej!TlJCaYlCkOOVzFDlLx:localhost:8800$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EITQei!TlJCaYlCkOOVzFDlLx:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwTQeh!TlJCaYlCkOOVzFDlLx:localhost:8800$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gTQeg!bOSxzttDtclnrWnLov:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkTQef!bOSxzttDtclnrWnLov:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQTQee!bOSxzttDtclnrWnLov:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykTQed!bOSxzttDtclnrWnLov:localhost:8800$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlkT Qec!bOSxzttDtclnrWnLov:localhost:8800$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUT Qeb!bOSxzttDtclnrWnLov:localhost:8800$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwT Qea!bOSxzttDtclnrWnLov:localhost:8800$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTET Qe`!bOSxzttDtclnrWnLov:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskT Qe_!bOSxzttDtclnrWnLov:localhost:8800$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4TQe^!DnUHoxreGexNmjSVpq:localhost:8800$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUTQe^!DnUHoxreGexNmjSVpq:localhost:8800$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoTQe]!DnUHoxreGexNmjSVpq:localhost:8800$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoTQe]!DnUHoxreGexNmjSVpq:localhost:8800$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UTQe\!DnUHoxreGexNmjSVpq:localhost:8800$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8TQe\!DnUHoxreGexNmjSVpq:localhost:8800$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UTQe[!DnUHoxreGexNmjSVpq:localhost:8800$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwTQe[!DnUHoxreGexNmjSVpq:localhost:8800$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8TQeZ!DnUHoxreGexNmjSVpq:localhost:8800$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WITQeZ!DnUHoxreGexNmjSVpq:localhost:8800$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwT~QeY!DnUHoxreGexNmjSVpq:localhost:8800$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIT}QeY!DnUHoxreGexNmjSVpq:localhost:8800$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IT|QeX!DnUHoxreGexNmjSVpq:localhost:8800$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IT{QeX!DnUHoxreGexNmjSVpq:localhost:8800$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsTzQeW!DnUHoxreGexNmjSVpq:localhost:8800$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsTyQeV!DnUHoxreGexNmjSVpq:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0TxQeU!DnUHoxreGexNmjSVpq:localhost:8800$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsTwQeT!DnUHoxreGexNmjSVpq:localhost:8800$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwTvQeS!DnUHoxreGexNmjSVpq:localhost:8800$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYTuQeR!DnUHoxreGexNmjSVpq:localhost:8800$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMITtQeQ!DnUHoxreGexNmjSVpq:localhost:8800$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw S $XHS @ 8 0 ( tlX;;Q$97_sf2:localhost:42455$96_sf1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 S93Q$95_m1:localhost:42455$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 W;9Q$92_sf1:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 S93Q$91_m1:localhost:42455$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 _3QQ$90:localhost:42455$1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800 W;9Q$96_sf1:localhost:42455$95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 l!b9QQ$98_m2:localhost:42455$1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 eeQ$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800 (W9;Q$98_m2:localhost:42455$97_sf2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 eeQ$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE!SyIWYOmcGiASNkPCTB:localhost:8800ȁeeQ$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800eeQ$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI$WmTYfCNpKrlmbf6mysf_vmc5nCNlXc5XIzTObt5w_Wo!QyLUggxrTnULUAOseq:localhost:8800eeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800 SeeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc!fGkUEndqGrieltwbCh:localhost:8800 eeQ$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E!kwXxkGQFkaeenFTQJr:localhost:8800;eeQ$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4!aWvVRVaDflYyyGTOdD:localhost:8800DeeQ$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw!NPdjmIfsBVIIkvWBzD:localhost:8800eeQ$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ!wsvXTJXouVkEZcCFsD:localhost:8800eeQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo!NFWKQvZkIwvecnREOC:localhost:8800сeeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800 PeeQ$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM!vRRNxNyGboLHNhqQvr:localhost:8800فeeQ$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig!uSBqTezaFcMnlowsEf:localhost:8800QeeQ$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU!FIOuvzpMhoERunVYYA:localhost:8800_3QQ$94:localhost:42455$1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 W;9Q$93_sf2:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800  _  " - U`.T>Iw  _ L [aeQ' $_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.createeQ']$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800leavegeQ3 $7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.statem eQ? $6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibilitye eQ/ $VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rulesg eQ3 $CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels eQ']$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800joina eQ' $H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800m.room.create eQ']$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800join eQ']$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800joinaeQ' $p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800m.room.create eQ']$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800m.room.member@anon-20191002_181700-349:localhost:8800joinmeQ? $C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0!rwUuVBrftGHDBOlEZm:localhost:8800m.room.history_visibilityeeQ/ $c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a4!rwUuVBrftGHDBOlEZm:localhost:8800m.room.join_rulesg~eQ3 $o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ!rwUuVBrftGHDBOlEZm:localhost:8800m.room.power_levelsa|eQ' $wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800m.room.create' {eQ']$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800joingzeQ3 $cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY!CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.statemyeQ? $FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ!CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibilityexeQ/ $1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo!CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rulesgweQ3 $6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg!CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levelsaueQ' $klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A!CkNvQnbApPIcuKygDk:localhost:8800m.room.create teQ']$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800m.room.member@anon-20191002_181700-347:localhost:8800joingeQ3 $iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.statemeQ? $61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibilityeeQ/ $1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rulesgeQ3 $1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels m gKmZ\eQaA$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 370, "stream_ordering": 1895}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ"], "prev_events": ["$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-353:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-353:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042142958, "hashes": {"sha256": "j/1YvBtV0ohWWN2IvClXVfm5y2HWr7KbRzRbmcY+7E0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LjCRBcST9+A8AjNAN39WwOSkuOhfjhhwzs66oZ1F/CsD8wjczlZfLGBtMuyrmUKeUGIRUl45LX8IZv0cpcl+CA"}}, "unsigned": {"age_ts": 1570042142958, "replaces_state": "$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ"}}[eQa=$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 370, "stream_ordering": 1894}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw"], "prev_events": ["$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-353:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-353", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-353:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042141994, "hashes": {"sha256": "WAn975XYb9RcmsHtYbINAdaGGAiaaQ+3MPWnsj7gIH0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q6TTGHGTizxZ8t4HRvVVaq/Df9D8zKrtjmBf1XnU7LI7xGj+9P/VzKzyV1aj69svhibjt5E6dObTu5iNKOtEAw"}}, "unsigned": {"age_ts": 1570042141994, "replaces_state": "$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk"}}ZeQa7$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1893}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-353", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-353:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042141085, "hashes": {"sha256": "AMNwnrRgK9D4BzvwceNXkdCIS85csnaYWR9mLGEbCho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Az64csrpqObMim+mfnolmxReRd7M1bH+tCFsRhlkkWDJW4QInM7AiYMm/4R7Lp07ab96xa36h50s+TbUCPttAA"}}, "unsigned": {"age_ts": 1570042141085, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-352:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-352:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-352", "avatar_url": null}, "sender": "@anon-20191002_181700-352:localhost:8800"}]}} JV*rDvHb4 | P " j <  X * r D  ^ 0 xJd6~P"j<^0xJ +[@anon-20191002_181700-36:localhost:8800-]@anon-20191002_181700-369:localhost:8800-]@anon-20191002_181700-368:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-366:localhost:8800-]@anon-20191002_181700-364:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-360:localhost:8800+[@anon-20191002_181700-35:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-478:localhost:8800*-]@anon-20191002_181700-477:localhost:88007-]@anon-20191002_181700-476:localhost:8800(-]@anon-20191002_181700-475:localhost:88005-]@anon-20191002_181700-474:localhost:8829%-]@anon-20191002_181700-473:localhost:8800.-]@anon-20191002_181700-469:localhost:88001-]@anon-20191002_181700-468:localhost:8829+-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-466:localhost:8829#-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800"-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-459:localhost:8829-]@anon-20191002_181700-458:localhost:8800!-]@anon-20191002_181700-454:localhost:8800 -]@anon-20191002_181700-453:localhost:8829-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-451:localhost:8829-]@anon-20191002_181700-450:localhost:8800-]@anon-20191002_181700-449:localhost:8800-]@anon-20191002_181700-448:localhost:8800-]@anon-20191002_181700-447:localhost:8800 -]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-404:localhost:8800+[@anon-20191002_181700-39:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-395:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800-]@anon-20191002_181700-390:localhost:8800+[@anon-20191002_181700-38:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-372:localhost:8800-]@anon-20191002_181700-371:localhost:8800-]@anon-20191002_181700-370:localhost:8800 HHb  O U# j8 P0) p>  D v V $ \ * |[h6n< tBzDyzFx_DyzF1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8r1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o01e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiok1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx40e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE~1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg q1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 21e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog O1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sd1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM}1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE+1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 61e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIb1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw *1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA T1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU R 21e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y#1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo31e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA]1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUb1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns 1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs 1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 21e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I !1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y , d1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzou21e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wh1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA$1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo?1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I%1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4?1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s61e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g n w nJeQa7$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1877}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw"], "type": "m.room.member", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-351", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-351:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042128924, "hashes": {"sha256": "G+ha6J9HtmUes8RNuTw5Rh1FZnKVmpEOafPBITJ+BCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9caFLWAuMQMEBD+M3S1BtOUBSfmzdDvXdSK8K8th2DTbO4UgxsBov/lnQQ6RUmlGn9I/3hjLEwCfx5F0jjQ3AQ"}}, "unsigned": {"age_ts": 1570042128924, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-350:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-350:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-350", "avatar_url": null}, "sender": "@anon-20191002_181700-350:localhost:8800"}]}}lIeQae$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1876}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY"], "type": "a.madeup.test.state", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042127960, "hashes": {"sha256": "42Gusph6f9fk2MugoZIiP58SJDJQpptDtIQDM9PB/fE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/kNaIj3AffMEtUtxLrYqwpxufoQCCUGL152PMBJYc2iQ/Za+2wKkh6zdFFQu0BOCuPtrJG4Zoes68xBaeCOUCg"}}, "unsigned": {"age_ts": 1570042127960}}HeQa$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "stream_ordering": 1875}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI"], "type": "m.room.history_visibility", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042126448, "hashes": {"sha256": "hgGkTNqZnI6eVJabPCn6Gi8M+ASnoH/83YTLym6gLnU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kCb3okpgGcc9KBYIGupX38lZ6OVxfEGGaQotesPz1XKqAjv6eys/JznXoWKj15GyecSHgZTXWvdgL+suNt0NCQ"}}, "unsigned": {"age_ts": 1570042126448}} 8V b ^  Z hft.8$ke/Q ]$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgm.room.join_rules!TlJCaYlCkOOVzFDlLx:localhost:8800mm@anon-20191002_181700-354:localhost:8800&je3Q ]$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIm.room.power_levels!TlJCaYlCkOOVzFDlLx:localhost:8800m>mv@anon-20191002_181700-354:localhost:8800 ie'Q ]$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800mms@anon-20191002_181700-354:localhost:8800h e'Q  ]$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gm.room.create!TlJCaYlCkOOVzFDlLx:localhost:8800mRm@anon-20191002_181700-354:localhost:8800 ge'Q ] $9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkm.room.member!bOSxzttDtclnrWnLov:localhost:8800 mmT@anon-20191002_181700-353:localhost:8800 fe'Q ]$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQm.room.member!bOSxzttDtclnrWnLov:localhost:8800m*mݎ@anon-20191002_181700-353:localhost:8800 ee'Q ]$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykm.room.member!bOSxzttDtclnrWnLov:localhost:8800mٝm@anon-20191002_181700-352:localhost:8800&de3Q ]$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlka.madeup.test.state!bOSxzttDtclnrWnLov:localhost:8800mLm:@anon-20191002_181700-352:localhost:8800,ce?Q ]$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUm.room.history_visibility!bOSxzttDtclnrWnLov:localhost:8800mёm4@anon-20191002_181700-352:localhost:8800$be/Q ]$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSwm.room.join_rules!bOSxzttDtclnrWnLov:localhost:8800mm@anon-20191002_181700-352:localhost:8800&ae3Q ]$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEm.room.power_levels!bOSxzttDtclnrWnLov:localhost:8800mmI@anon-20191002_181700-352:localhost:8800 `e'Q ]$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskm.room.member!bOSxzttDtclnrWnLov:localhost:8800mmZ@anon-20191002_181700-352:localhost:8800_ e'Q  ]$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4m.room.create!bOSxzttDtclnrWnLov:localhost:8800mmū@anon-20191002_181700-352:localhost:8800(^e7Q ] $MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͽmͿ@anon-20191002_181700-350:localhost:8800(]e7Q ] $ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 m͸kmͽ @anon-20191002_181700-350:localhost:8800(\e7Q ] $UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4Ua.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͷpm͸q@anon-20191002_181700-350:localhost:8800([e7Q ] $H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8a.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 m͵mͶ@anon-20191002_181700-350:localhost:8800(Ze7Q ] $oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mʹm͵S@anon-20191002_181700-350:localhost:8800(Ye7Q ] $e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͲmͳz@anon-20191002_181700-350:localhost:8800(Xe7Q ] $zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7Ia.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͯmͲ@anon-20191002_181700-350:localhost:8800(We7Q ] $3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExsa.made.up.filler.type!DnUHoxreGexNmjSVpq:localhost:8800 mͯmͰ@anon-20191002_181700-350:localhost:8800 Ve'Q ]$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0m.room.member!DnUHoxreGexNmjSVpq:localhost:8800mͭmͭ@anon-20191002_181700-351:localhost:8800 Ue'Q ]$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsm.room.member!DnUHoxreGexNmjSVpq:localhost:8800mͪmͪ@anon-20191002_181700-350:localhost:8800&Te3Q ]$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwa.madeup.test.state!DnUHoxreGexNmjSVpq:localhost:8800mͦXmͦ@anon-20191002_181700-350:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VteL$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIsha256^DQxVQ7OvN7mP7у2VseL$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQsha256!IZB;+,mK*&_q`eVreL$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUsha256 I`Zc-Քw)2 [o!#D%VqeL$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwcsha256ZR"ճjmeObץ⠦VpeL$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAsha256_'ɸ _Pj٭|#u1sm0VoeL$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__csha256 'K Wml.I.FzOrmVneL$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygsha256CLF-Hq*ׁ&`m,VVeL$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEsha256 ՘ mdfLG*\ 1VUeL$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsksha256W$R|(IKUGR"VTeL$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4sha256`Zib{흏[.Qp*?DVSeL$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUsha2561Wm!xr]%(n|!5VReL$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQosha256t iy<b4{٢ VQeL$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4Usha256R&+GARX>@B'ౄ7VPeL$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8sha256Ҵz[)QeLBGq֝ ZNVOeL$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwsha256'ߝ0MPeH!V&4(/c-ilVNeL$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIsha256{  (R\ⷤq+ I/d-a(kbVMeL$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7Isha256vC9j,ri8Y^& cVLeL$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExssha256ll{*Wo'QA(]VKeL$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0sha256BN^#zJL"0VJeL$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvssha2569o)!y]`a$CVIeL$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTwsha2560oQ6T%[1,)< ]`8xP(pHh@`8pH X 0  h @ ( P x ` 8  p H X0h@ X0xPX0 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800 'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800L'Q!IPYMCBwcyNIzqdiIWv:localhost:8800K'Q!IPYMCBwcyNIzqdiIWv:localhost:8800J'Q!IPYMCBwcyNIzqdiIWv:localhost:8800I'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 'Q!HZqzpRgqekPOtxstVc:localhost:8800B'Q!HZqzpRgqekPOtxstVc:localhost:8800A'Q!HZqzpRgqekPOtxstVc:localhost:8800@'Q!HZqzpRgqekPOtxstVc:localhost:8800?'Q!HZqzpRgqekPOtxstVc:localhost:8800>'Q!HZqzpRgqekPOtxstVc:localhost:8800= x'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800H'Q!IPYMCBwcyNIzqdiIWv:localhost:8800G'Q!IPYMCBwcyNIzqdiIWv:localhost:8800F'Q!IPYMCBwcyNIzqdiIWv:localhost:8800E'Q!IPYMCBwcyNIzqdiIWv:localhost:8800D'Q!IPYMCBwcyNIzqdiIWv:localhost:8800C'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800C'Q!ILbUVZOfPPwaZRrKJd:localhost:8800B'Q!ILbUVZOfPPwaZRrKJd:localhost:8800A'Q!ILbUVZOfPPwaZRrKJd:localhost:8800@'Q!ILbUVZOfPPwaZRrKJd:localhost:8800?'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 'Q!IGVHKYcSuxzVPlFHlj:localhost:8800 ('Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800'Q!HmkcAMkMjWRhTDJMsy:localhost:8800c'Q!HmkcAMkMjWRhTDJMsy:localhost:8800b'Q!HmkcAMkMjWRhTDJMsy:localhost:8800a'Q!HmkcAMkMjWRhTDJMsy:localhost:8800`'Q!HmkcAMkMjWRhTDJMsy:localhost:8800_'Q!HmkcAMkMjWRhTDJMsy:localhost:8800^'Q!HmkcAMkMjWRhTDJMsy:localhost:8800]'Q!HmkcAMkMjWRhTDJMsy:localhost:8800\'Q!HmkcAMkMjWRhTDJMsy:localhost:8800['Q!HhYREfUiJTpjWmOuPF:localhost:8800I'Q!HhYREfUiJTpjWmOuPF:localhost:8800H'Q!HhYREfUiJTpjWmOuPF:localhost:8800G'Q!HhYREfUiJTpjWmOuPF:localhost:8800F'Q!HhYREfUiJTpjWmOuPF:localhost:8800E'Q!HhYREfUiJTpjWmOuPF:localhost:8800D'Q!HcMGemcRrLnLprOJJR:localhost:8800  qpNeQI$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "228", "stream_ordering": 1881}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 3}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042131174, "hashes": {"sha256": "SmcVWoYzby05XgJ/iH1vYqKzJ8sy+fqZtGypJHf8ibU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sWW5XuscbzgwUkhUhk/w/+TqZcXJZuOC1+6SdIaRB3TXRcfD7eLNV6oOp+OZFzKMDEKfXak4qZ+OcEj+I08mCg"}}, "unsigned": {"age_ts": 1570042131174}}oMeQG$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "226", "stream_ordering": 1880}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042130328, "hashes": {"sha256": "7HhJx5kG7MCuvLEG6B2jkEukS6NAZzFXF3Mh9OBFppQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1SBCUd1ZA0sLy4aiPAAZ8t4ebbAAyoB1hoqxQ3DrlL85A5VLTvTLiF5BY/8YKanzX2DfBGRO17YvbHE0zMxSDQ"}}, "unsigned": {"age_ts": 1570042130328}}oLeQG$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "227", "stream_ordering": 1879}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 2}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042130325, "hashes": {"sha256": "xfdz9IiVoI9wKkka2INiDfk2Pu5OIpNuvMZmj1I2CTo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MaQXPGTvm6DyaVe5efwsk7XHcoorRngxH3DO5SvBVQtX1jcAKDIZHUfEY6VoZvurgmbzVCAhJQUNJ2dqb0tlDQ"}}, "unsigned": {"age_ts": 1570042130325}}KeQa=$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 367, "stream_ordering": 1878}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI"], "prev_events": ["$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs"], "type": "m.room.member", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-351:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-351", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-351:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042129693, "hashes": {"sha256": "FQYfelEVloxndCYhfdirtnpdVe2E01j4y8cmgNZ4onY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lTZt9evuLHDa2P7/Uqh38St8IL3IrnzHAwAscuF2cCQvpSfjrZQDffAJkBU7+dtMeeITXojmCnPVAiU7gnd0DA"}}, "unsigned": {"age_ts": 1570042129693, "replaces_state": "$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs"}} p \p ReQ)$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "232", "stream_ordering": 1885}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw", "$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 7}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042132587, "hashes": {"sha256": "lr33ej4rrIZk+MMwfRBNOyAGYkluHDFdUCSz93+djZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d+m86A/nUkvfn56em8SoNUXEK/oq7Y5JoSNcouhwo4ass+sA/KmeGrtThIik71LQTh7FTNqfIIEFhg6rYI8+Ag"}}, "unsigned": {"age_ts": 1570042132587}} QeQ)$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "231", "stream_ordering": 1884}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI", "$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 6}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042132336, "hashes": {"sha256": "h+x/fLWzsyuAMP+WlV2E30E6io9kuHs8tIUHoafD7Ls"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JWm+n08kFLMFFPc7aCzfAqF1dlL4O0HXsjq+ZKQf+VxYSRW93wXZKYCL3qhtnnEGXqA7/k3vNh0xdQbnQAvrBw"}}, "unsigned": {"age_ts": 1570042132336}} PeQ)$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "230", "stream_ordering": 1883}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I", "$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 5}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042131955, "hashes": {"sha256": "XQyUP9Hj9Y/NZUlINszPAmYrieGlAZjaxdXKn6Y1MB8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "goYzpeKXbKfa5s9rGEHCaGVmY5Q2aBhENd+jfmLHDwzKHf6qZwe33YlTH/9mZEZ4P53R+SLI/eDE/3IGlWDQCw"}}, "unsigned": {"age_ts": 1570042131955}} OeQ)$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "229", "stream_ordering": 1882}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs", "$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 4}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042131624, "hashes": {"sha256": "xSIGanmdXDMoYlnl+mSk+jdmitttPkuy9kit+o0ejlc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NBMIPoCw3F0i4+mFL2KAh82GEBRsui+LmYgSGQMoFisJLYSK8qRk7bgXjM3RAfFBBChGWJ6XVL2SZWl6FEFdAQ"}}, "unsigned": {"age_ts": 1570042131624}} ~z v r n j fb^ZVRNJFAeeQ$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800@eeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800?eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800>eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8!bNSXSTadOMhIrYpMzH:localhost:8800=eeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800<eeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800;eeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800:eeQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:88009eeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:88008eeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:88007eeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:88006eeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:88005eeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:88004eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:88003eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:88002eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:88001eeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:88000eeQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800/eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800.eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800-eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800,eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800+eeQ$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800*eeQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800)eeQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800(eeQ$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800'eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U!DnUHoxreGexNmjSVpq:localhost:8800&eeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800%eeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800$eeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800  \ okVeQac$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1889}{"auth_events": ["$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "type": "m.room.power_levels", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"users": {"@anon-20191002_181700-352:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042137358, "hashes": {"sha256": "Jtk0vf6bC7LCpLeb+FvewXt58n6jPwXZm8CxfKvTqhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HPRHYvLnV6bHr8IYpHsElIqxAp0hz2GO9PkdDzy6tMijLSmbJugsz3+KlcECjOWo9J2BwoW2xnFsaBMjYP+vAQ"}}, "unsigned": {"age_ts": 1570042137358}}vUeQay$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1888}{"auth_events": ["$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4"], "prev_events": ["$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4"], "type": "m.room.member", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-352", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-352:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042136781, "hashes": {"sha256": "MIZvp9hWNbcKqOr8DSFhXa7+j+8JD/AcxRZjcXjh1dA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1X5fCI7dEf05ZDcwNILMbv3NKa5UQmRkUVMzPDtm0QTdhcXc275Zs2Fy87I366QZR+cd6jYorrwvZUJcZX9nDA"}}, "unsigned": {"age_ts": 1570042136781}}iTeQa_$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1887}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-352:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042135807, "hashes": {"sha256": "WPGDhCJfkKSo3qUSyGiPmCWTSpafZKSFvv43dDScbtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5u4aHaELX4b8Z4zmrk1HyV4yN2Zj1j2xDanIn41Zmre9lRM2SKYLpbhgUkmwRw5TWGpdhZhvera6zf0tJzF4CA"}}, "unsigned": {"age_ts": 1570042135807}} SeQ)$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU!DnUHoxreGexNmjSVpq:localhost:8800{"token_id": 368, "txn_id": "233", "stream_ordering": 1886}{"auth_events": ["$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw", "$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ", "$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro"], "prev_events": ["$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8", "$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U"], "type": "a.made.up.filler.type", "room_id": "!DnUHoxreGexNmjSVpq:localhost:8800", "sender": "@anon-20191002_181700-350:localhost:8800", "content": {"filler": 8}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042133955, "hashes": {"sha256": "+lwzJlNvFEhOkE7cenLgZR7NOucIR4kK91GqYom7Es4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RjZRsNQkmGuu7kVoWE2OYKSmP8Xid8GjT/irU3lOgyPMA9RK/7UETY07BeZbH/iqkTq1HQhWScZu/uVu6fqxBw"}}, "unsigned": {"age_ts": 1570042133955}} i5hi g 4  1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrSWNNYyMtcztDOTpSXl4KMDAyZnNpZ25hdHVyZSB-FTDcMYIrakCJawDmb3aBv18F3P31mU-pI3jX6M9MQQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAo~1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-Bwo|1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6Bjdgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9go  } $  [ H $5 $n q1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg2MU1hXm5BPV9mY3pHSDIKMDAyZnNpZ25hdHVyZSDYwznq40c_q4a6OD39IVJeXYATWzSsye1YD37lAobSewo d1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFacUN2dzJMWTcjMnh6S04KMDAyZnNpZ25hdHVyZSBIE31dBp2khHIslpt9L2ttXRkowx20GElKVJtaEFSdkgo g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG8jTldNRmhjQDJZSGt5a0kKMDAyZnNpZ25hdHVyZSAytp0T7K0GtNLyrrvvKThMXkDCn1jZ6wI9npjmCcM0CwoC P1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_wo ɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxlTUszbl89WjcuO1FXYUYKMDAyZnNpZ25hdHVyZSAx0wyvOL69DqL2cH5SICYEjFL2DEUglzWhZB2U2L1Q0AoP 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9Fc0wuMl8xM1c4YW1CREgKMDAyZnNpZ25hdHVyZSA3WuGT1fvmgWAOhsMNpgmzTj0NDM9yJnvO3x46JsV22Qo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9wo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY6aEszbCZDPSMqMWhuJk0KMDAyZnNpZ25hdHVyZSC-K4dfp3l11jocsznAXUK3xenU0OlOiXRlA65hTgDQ0Qo7 MG\?$kN3^A& n Q 6  x a "  k , z _ < \ kP-My\A}>jmJ }Z.h >'>']xm.room.member@anon-20191002_181700-347:localhost:88003 wa.madeup.test.state"? vm.room.history_visibility/ um.room.join_rules3 tm.room.power_levels>']sm.room.member@anon-20191002_181700-346:localhost:8800' rm.room.create.31qa.madeup.test.statethis_state_changes63Apa.madeup.test.statethis_state_does_not_change.31oa.madeup.test.statethis_state_changes~"? nm.room.history_visibility}>']m.room.member@anon-20191002_181700-363:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-361:localhost:8800>']m.room.member@anon-20191002_181700-362:localhost:8800>']m.room.member@anon-20191002_181700-361:localhost:8800>']m.room.member@anon-20191002_181700-362:localhost:8800"? m.room.history_visibility>']m.room.member@anon-20191002_181700-361:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-360:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-358:localhost:8800>']m.room.member@anon-20191002_181700-359:localhost:8800>']m.room.member@anon-20191002_181700-358:localhost:8800>']m.room.member@anon-20191002_181700-359:localhost:8800"? m.room.history_visibility>']m.room.member@anon-20191002_181700-358:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-357:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-355:localhost:8800>']m.room.member@anon-20191002_181700-356:localhost:8800>']m.room.member@anon-20191002_181700-355:localhost:8800>']m.room.member@anon-20191002_181700-356:localhost:8800"? m.room.history_visibility>']m.room.member@anon-20191002_181700-355:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-354:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-353:localhost:8800>']m.room.member@anon-20191002_181700-353:localhost:8800>']m.room.member@anon-20191002_181700-353:localhost:88003 a.madeup.test.state"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-352:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-351:localhost:8800>']m.room.member@anon-20191002_181700-351:localhost:88003 a.madeup.test.state"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-350:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-349:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-349:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-348:localhost:88003 a.madeup.test.state"? ~m.room.history_visibility/ }m.room.join_rules3 |m.room.power_levels>']{m.room.member@anon-20191002_181700-348:localhost:8800' zm.room.create>']ym.room.member@anon-20191002_181700-347:localhost:8800 ("D f  ; a 6X~1Su(JlQQQ$1570042655148eXOyA:locnQQQ$1570042660156wxhvl:localhost:8800$1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042659155mEUeP:localhost:8800$1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042659154Fztdf:localhost:8800$1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042658153tmCYJ:localhost:8800$1570042658152btGpA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042658152btGpA:localhost:8800$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042657151cITOZ:localhost:8800$1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042656150UsLRz:localhost:8800$1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042656149JNVWR:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042655148eXOyA:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042654147iSsjl:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800lQMQ$1570042651145wBynt:localhost:8800$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800lMQQ$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042649143JxPAB:localhost:8800$1570042648142spuws:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042648142spuws:localhost:8800$1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042648141xSHQB:localhost:8800$1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042647140rNeEf:localhost:8800$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042646139VXLYO:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042646138YEunv:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800nQQQ$1570042645137fBnPZ:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800lQMQ$1570042642135oMfQy:localhost:8800$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800lMQQ$15700426410cEjWu:localhost:8829$1570042640133wGmrF:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042640133wGmrF:localhost:8800$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042639132zhjjB:localhost:8800$1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042638131kazZm:localhost:8800$1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042637130zlkqP:localhost:8800$1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042636129shBTe:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042635128KJCvL:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042634127eDBry:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800nQQQ$1570042632125lwdOR:localhost:8800$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800nQQQ$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800nQQQ$1570042631123SLyGA:localhost:8800$1570042630122bUTeO:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800nQQQ$1570042630122bUTeO:localhost:8800$1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 gs 1 : / ] `cIXarXg eQ']$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800aeQ' $PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800m.room.create eQ']$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800 ~eQ']$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800 }eQ']$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800 |eQ']$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800m{eQ? $6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility zeQ']$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800myeQ? $8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibilityexeQ/ $nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rulesgweQ3 $WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels veQ']$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800aueQ' $IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create teQ']$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800 seQ']$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800 reQ']$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800 qeQ']$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800mpeQ? $gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility oeQ']$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800mneQ? $3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibilityemeQ/ $wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rulesgleQ3 $oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levels keQ']$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800ajeQ' $_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create ieQ']$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800 heQ']$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800 geQ']$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800gfeQ3 $7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800a.madeup.test.statemeeQ? $6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800m.room.history_visibilityedeQ/ $VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800m.room.join_rulesgceQ3 $CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800m.room.power_levels beQ']$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-352:localhost:8800  lYeQae$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1892}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU"], "type": "a.madeup.test.state", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"my_key": 1}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042139980, "hashes": {"sha256": "09dSc7SDwIMlFtiU9egL1NdzXlGh0/+o3/8MxLokAu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DQSPIyW1dBEMsix9+2dAkz7amsGZlXLVmg1fYxu1OY6syL6bLyVpTjcRV9YC8vqI5SFJU5xV4bOif/OZLonoDw"}}, "unsigned": {"age_ts": 1570042139980}}XeQa$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1891}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw"], "type": "m.room.history_visibility", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042139025, "hashes": {"sha256": "dGcT7QF6dR76Ae6Utohva8cN6WgHSTu+moFLLOk7LPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IPib8LDL2qYxNc5n53WRZpCJJQNFJa8LvybfIAeqHr2lofiQ3Fi2BFDCFRCF2eBNVZKj8DuWaLZkmDIAwBaYBQ"}}, "unsigned": {"age_ts": 1570042139025}}tWeQau$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800{"token_id": 369, "stream_ordering": 1890}{"auth_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE", "$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4", "$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk"], "prev_events": ["$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE"], "type": "m.room.join_rules", "room_id": "!bOSxzttDtclnrWnLov:localhost:8800", "sender": "@anon-20191002_181700-352:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042138100, "hashes": {"sha256": "PV5XV9TvDhCW7uC1F3GpRbgkoeiyZgLWxgn1Q74gr7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4ncsPxfOZ0t6Wg7EV8ufy8spbDZOy2hq098kUJWKMEM4P6GsJ5W73Pg8SVK6SW02qSUT8dyJugrFI0cf4WBnDQ"}}, "unsigned": {"age_ts": 1570042138100}} -RM H C > 9 4/*|%w rmhc T@Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMT?Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgT>Qe!pUSFAnuwUuMlbiInDR:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsT=Qe!pUSFAnuwUuMlbiInDR:localhost:8800$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkT<Qe!pUSFAnuwUuMlbiInDR:localhost:8800$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYT;Qe!pUSFAnuwUuMlbiInDR:localhost:8800$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0roT:Qe!pUSFAnuwUuMlbiInDR:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GET9Qe!pUSFAnuwUuMlbiInDR:localhost:8800$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5kT8Qe!SrMQpDMFREKRMELwbL:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4T7Qe!SrMQpDMFREKRMELwbL:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUT6Qe!SrMQpDMFREKRMELwbL:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqkT5Qe!SrMQpDMFREKRMELwbL:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYT4Qe!SrMQpDMFREKRMELwbL:localhost:8800$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUT3Qe!SrMQpDMFREKRMELwbL:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94T2Qe!SrMQpDMFREKRMELwbL:localhost:8800$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQT1Qe!SrMQpDMFREKRMELwbL:localhost:8800$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAT0Qe!SrMQpDMFREKRMELwbL:localhost:8800$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9oT/Qe!SrMQpDMFREKRMELwbL:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-QT.Qe!SrMQpDMFREKRMELwbL:localhost:8800$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1CjodwT-Qe!bNSXSTadOMhIrYpMzH:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMT,Qe!bNSXSTadOMhIrYpMzH:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgT+Qe!bNSXSTadOMhIrYpMzH:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAT*Qe!bNSXSTadOMhIrYpMzH:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cT)Qe!bNSXSTadOMhIrYpMzH:localhost:8800$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8YgT(Qe!bNSXSTadOMhIrYpMzH:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumET'Qe!bNSXSTadOMhIrYpMzH:localhost:8800$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8T&Qe!bNSXSTadOMhIrYpMzH:localhost:8800$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagT%Qe!bNSXSTadOMhIrYpMzH:localhost:8800$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQT$Qe!bNSXSTadOMhIrYpMzH:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0T#Qe!bNSXSTadOMhIrYpMzH:localhost:8800$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0T"Qe!TlJCaYlCkOOVzFDlLx:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoT!Qe!TlJCaYlCkOOVzFDlLx:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gT Qe!TlJCaYlCkOOVzFDlLx:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfATQe!TlJCaYlCkOOVzFDlLx:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0TQe!TlJCaYlCkOOVzFDlLx:localhost:8800$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EITQe!TlJCaYlCkOOVzFDlLx:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwTQe!TlJCaYlCkOOVzFDlLx:localhost:8800$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gTQe!bOSxzttDtclnrWnLov:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkTQe!bOSxzttDtclnrWnLov:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQTQe!bOSxzttDtclnrWnLov:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dykTQe!bOSxzttDtclnrWnLov:localhost:8800$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk a} { y w u sqomkigeca~GeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~FeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~EeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~DeeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~CeeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~BeeQ$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~AeeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~@eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~?eeQ$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~>eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~=eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~<eeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~;eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~:eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~9eeQ$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~8eeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800~7eeQ$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~6eeQ$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~5eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800~4eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~3eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~2eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800~1eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~0eeQ$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~/eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~.eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw!bOSxzttDtclnrWnLov:localhost:8800~-eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~,eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800~+eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk!bOSxzttDtclnrWnLov:localhost:8800~*eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800~)eeQ$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE!bOSxzttDtclnrWnLov:localhost:8800 Q)R { N w Cl<5Qp>?]11 @__ANON__:localhost:41985@anon-20191002_181700-651:localhost:8800$3:localhost:41985!0:localhost:419851p=?]11 @__ANON__:localhost:44405@anon-20191002_181700-650:localhost:8800$3:localhost:44405!0:localhost:444051p<?]11 @__ANON__:localhost:37265@anon-20191002_181700-649:localhost:8800$3:localhost:37265!0:localhost:372651s;E]31 @__ANON__-25:localhost:42455@anon-20191002_181700-648:localhost:8800$37:localhost:42455!8:localhost:42455s:E]31 @__ANON__-24:localhost:42455@anon-20191002_181700-647:localhost:8800$33:localhost:42455!7:localhost:42455(9]]eQ Y@anon-20191002_181700-614:localhost:8800@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800(8]]eQ P@anon-20191002_181700-612:localhost:8800@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800T7]]eQe f@anon-20191002_181700-559:localhost:8829@anon-20191002_181700-558:localhost:8800$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQT6]]eQe P@anon-20191002_181700-556:localhost:8800@anon-20191002_181700-557:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4T5]]eQe H@anon-20191002_181700-554:localhost:8800@anon-20191002_181700-555:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsT4]]eQe @anon-20191002_181700-508:localhost:8800@anon-20191002_181700-509:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMT3]]eQe f@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-494:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAT2]]eQe @anon-20191002_181700-478:localhost:8800@anon-20191002_181700-479:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w@1]]QQQ @anon-20191002_181700-463:localhost:8800@anon-20191002_181700-464:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042699203fHFjU:localhost:8800@0]]QQQ p@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-449:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632124bMwzE:localhost:8800T/]]eQe"@anon-20191002_181700-373:localhost:8800@anon-20191002_181700-372:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w(.]]eQ@anon-20191002_181700-365:localhost:8800@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800(-]]eQ@anon-20191002_181700-363:localhost:8800@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800T,]]eQe@anon-20191002_181700-360:localhost:8800@anon-20191002_181700-362:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUT+]]eQe@anon-20191002_181700-357:localhost:8800@anon-20191002_181700-359:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c!bNSXSTadOMhIrYpMzH:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgT*]]eQeq@anon-20191002_181700-354:localhost:8800@anon-20191002_181700-356:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gT)]]eQef@anon-20191002_181700-352:localhost:8800@anon-20191002_181700-353:localhost:8800$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk!bOSxzttDtclnrWnLov:localhost:8800$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ DM u  r B ?< Pqt pQ? e!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQhQ/ e!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rules$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAj~Q3 e!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o }Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qd|Q' e!SrMQpDMFREKRMELwbL:localhost:8800m.room.create$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw8{Q']ee!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA8zQ']ee!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c8yQ']ee!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE xQ']ez!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cwQ? eey!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8 vQ']ex!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEpuQ? ew!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8htQ/ ev!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rules$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagjsQ3 eu!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ rQ']et!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0dqQ' es!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt08pQ']eer!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA8oQ']eeq!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY8nQ']eep!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0 mQ']eo!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYlQ? een!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM kQ']em!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0pjQ? el!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMhiQ/ ek!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rules$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgjhQ3 ej!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levels$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI gQ']ei!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwdfQ' eh!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g8eQ']eeg!bOSxzttDtclnrWnLov:localhost:8800m.room.member@anon-20191002_181700-353:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ g * T~=ggv]!c@anon-20191002_181700-365:localhost:8800GEIVTPEZWOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_gogu]!c~@anon-20191002_181700-366:localhost:8800FABJQITKMRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5Aogt]!c}@anon-20191002_181700-363:localhost:8800OFUEGGAJXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwogs]!c|@anon-20191002_181700-364:localhost:8800PEYTIDQOTBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAogr]!c{@anon-20191002_181700-360:localhost:8800XKNFVZJCREMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAogq]!cz@anon-20191002_181700-361:localhost:8800XCHGELQORJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQogp]!cy@anon-20191002_181700-362:localhost:8800DYTMFWLSURMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1wogo]!cx@anon-20191002_181700-359:localhost:8800NYAYBPPYBRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAogn]!cw@anon-20191002_181700-357:localhost:8800TFBXZDXERTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAogm]!cv@anon-20191002_181700-358:localhost:8800YPZTVFTILNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQogl]!cu@anon-20191002_181700-356:localhost:8800ECXXWUQUFNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5Qo  4 h 9mfd]c@anon-20191002_181700-382:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9go127.0.0.1zd]c@anon-20191002_181700-383:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQo127.0.0.1{d]c@anon-20191002_181700-375:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAo127.0.0.1sd]c@anon-20191002_181700-381:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6Bjdgo127.0.0.1yd]c@anon-20191002_181700-380:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgo127.0.0.1xa[a@anon-20191002_181700-37:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0geVdCWnBvVFg7ME9UVnljNwowMDJmc2lnbmF0dXJlII0dOhJrF1sRnLpU0ljxrbhIdrvxbauuiHWQrNJ1v1tICg127.0.0.1d]c@anon-20191002_181700-379:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwo127.0.0.1wd]c@anon-20191002_181700-378:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgo127.0.0.1vd]c@anon-20191002_181700-377:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggo127.0.0.1ud]c@anon-20191002_181700-376:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgo127.0.0.1t   *t`eQau$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1899}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI"], "type": "m.room.join_rules", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042147568, "hashes": {"sha256": "ADXhul/NFd12rjVkv4a1q379QxUWkvpIO5ksasu/XNU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ilYdmWmjKhlQW3qUPM62d+Odkq9MZ9wTUW4hLriROt2rpQAYqZkCsLSY5pCbCab3wRpmUb0yhJB3RFj0ZyCVDQ"}}, "unsigned": {"age_ts": 1570042147568}}k_eQac$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1898}{"auth_events": ["$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "type": "m.room.power_levels", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"users": {"@anon-20191002_181700-354:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042146878, "hashes": {"sha256": "bEsH0wryhyvpJC8ojUbS33i7+vEFJjTS+ms6yCebT/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XwUQTxRa8WjFj+RKSlWv1DFDQQKy/HG8LB3g+7YC929mJYS4R8VfZf61wNrYuUhtVZJcpRfUUhyREXn7OKV+Dg"}}, "unsigned": {"age_ts": 1570042146878}}v^eQay$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1897}{"auth_events": ["$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g"], "prev_events": ["$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-354", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-354:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042146300, "hashes": {"sha256": "5wF8sb8+y1D57FLcwW9jNmIDrRjPSCFMV+ml3IqmhVc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r8b/6am4y4aVLD2JrqkGJBpr9angfvcWIePYqPBsztM4raypJNTCNbjk7oYbbKVWfQl/B8yX5HkjLBPBhOAcBw"}}, "unsigned": {"age_ts": 1570042146300}}i]eQa_$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1896}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-354:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042145618, "hashes": {"sha256": "6xp5QgOLEj/q9JmGLU2c1nVae0phLPjxrgU2yJGJY3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o3NRQefaDjjkwZg0LhCcqSDhEVBldnHX8s8DPyxm/s7YHMPz4SO80qHsQH/bX2G4r+sPKR++AUw8Z/JVeUIWBg"}}, "unsigned": {"age_ts": 1570042145618}} q) ( { ! r }54 FQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU EQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk DQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYoCQ? e!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU BQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94oAQ? e!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQg@Q/ e!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rules$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAi?Q3 e!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o >Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qc=Q' e!SrMQpDMFREKRMELwbL:localhost:8800m.room.create$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw <Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM ;Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg :Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA 9Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__co8Q? e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg 7Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEo6Q? e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibility$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8g5Q/ e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rules$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagi4Q3 e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ 3Q']e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0c2Q' e!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0 1Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo 0Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g /Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA .Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYo-Q? e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ ,Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0o+Q? e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibility$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMg*Q/ e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rules$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgi)Q3 e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levels$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI (Q']e!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw 0z~Gj-e")Vy G H + h 1TYBez X  ""6Q' !cRbfhxZdPstEsPGPAu:localhost:8800m.room.create "<Q3 !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels X6Q' !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create V<Q3 !bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels^Q']!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800:Q/ !bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rulesBQ? !bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibility6Q' !bkwyieHZwSMJfuSKvV:localhost:8800m.room.create<Q3 !bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levels ^Q']!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800 ^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-273:localhost:8800M^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-272:localhost:8800F:Q/ !bzPCFeFSMbCESvNbxl:localhost:8800m.room.join_rulesHBQ? !bzPCFeFSMbCESvNbxl:localhost:8800m.room.history_visibilityI6Q' !bzPCFeFSMbCESvNbxl:localhost:8800m.room.createE<Q3 !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.power_levels^Q']!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-180:localhost:8829^Q']!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-179:localhost:8800^Q']!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.member@anon-20191002_181700-178:localhost:8800:Q/ !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.join_rulesBQ? !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.history_visibility6Q' !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.create?Q9 !bnTuVBaAJTPbcYZtRl:localhost:8800m.room.canonical_aliasEQ))!bnTuVBaAJTPbcYZtRl:localhost:8800m.room.aliaseslocalhost:8800 :7<Q3 !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.power_levels^Q']!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-133:localhost:8800^Q']!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-132:localhost:8800^Q']!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.member@anon-20191002_181700-131:localhost:8800:Q/ !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.join_rulesBQ? !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.history_visibility6Q' !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.create?Q9 !cHtqiAyCHEAoBIbCmL:localhost:8800m.room.canonical_aliasEQ))!cHtqiAyCHEAoBIbCmL:localhost:8800m.room.aliaseslocalhost:8800<Q3 !cGkVFpidyBBxUxsszG:localhost:8800m.room.power_levels`^Q']!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-282:localhost:8800d^Q']!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-281:localhost:8800c^Q']!cGkVFpidyBBxUxsszG:localhost:8800m.room.member@anon-20191002_181700-280:localhost:8800_:Q/ !cGkVFpidyBBxUxsszG:localhost:8800m.room.join_rulesaBQ? !cGkVFpidyBBxUxsszG:localhost:8800m.room.history_visibilityb6Q' !cGkVFpidyBBxUxsszG:localhost:8800m.room.create^<Q3 !bzPCFeFSMbCESvNbxl:localhost:8800m.room.power_levelsG  ^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-274:localhost:8800N^Q']!bzPCFeFSMbCESvNbxl:localhost:8800m.room.member@anon-20191002_181700-275:localhost:8800L SBQ? !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility ^Q']!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800 [BQ? !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibility Z:Q/ !cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rules Y^Q']!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800 W_  wGceQa$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1902}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0"], "type": "m.room.history_visibility", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042150945, "hashes": {"sha256": "ZeyA1kkgPZWk7IkL0cfZvd3rHI4FP3JKD1EWrbyMjgk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V5jttSGNCPgCzbg/m1QMIWJKMhIL1iH+AEx1e0IHoNiU60JVwjjtVdUtt0XueeNumLV9NS1EjnzKEfVDR6fhBw"}}, "unsigned": {"age_ts": 1570042150945, "replaces_state": "$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM"}}VbeQa9$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 371, "stream_ordering": 1901}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "prev_events": ["$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-355:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-355", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-355:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042149884, "hashes": {"sha256": "lk9kaQPvWxHYSKZiO8M4+SKEG3ztidIbQamtltgv9u8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MKExIKmh4g4y+hAXyGM5oxPHEA7Mb19UStTcX0PzeeanaiEeU3h7yGMtNa5P5Y/XM03CEvIREpzor8+R73ZLDA"}}, "unsigned": {"age_ts": 1570042149884}}aeQa$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1900}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "type": "m.room.history_visibility", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042148243, "hashes": {"sha256": "FlZMl0gfIjKXk/ufM3hSGm3ciFZ3s5OQbPolehpKQMY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dqU2dBcCpCh3TNWIYTqWkzr5c9/csd9CwNNQI6/LxM9ld2WXM2KADyeQtcypUZndFufGSZORM8QhmZ/Wg3njAw"}}, "unsigned": {"age_ts": 1570042148243}} _P X  l & |$,=N_!e)Q ]$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mEmE@anon-20191002_181700-357:localhost:8800!e)Q ]$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mCmD@anon-20191002_181700-357:localhost:8800!e)Q ]$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mBmB$@anon-20191002_181700-357:localhost:8800!e)Q ]$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800m@m@@anon-20191002_181700-357:localhost:8800!e)Q ] $XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800 m>Em>L@anon-20191002_181700-357:localhost:8800!~e)Q ] $IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800 mm2@anon-20191002_181700-357:localhost:8800,ye?Q ]$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygm.room.history_visibility!bNSXSTadOMhIrYpMzH:localhost:8800m.;m/@anon-20191002_181700-357:localhost:8800 xe'Q ]$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800m+m,@anon-20191002_181700-358:localhost:8800,we?Q ]$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8m.room.history_visibility!bNSXSTadOMhIrYpMzH:localhost:8800m"m(@anon-20191002_181700-357:localhost:8800$ve/Q ]$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagm.room.join_rules!bNSXSTadOMhIrYpMzH:localhost:8800m Km! @anon-20191002_181700-357:localhost:8800&ue3Q ]$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQm.room.power_levels!bNSXSTadOMhIrYpMzH:localhost:8800mvm@anon-20191002_181700-357:localhost:8800 te'Q ]$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0m.room.member!bNSXSTadOMhIrYpMzH:localhost:8800m'm@anon-20191002_181700-357:localhost:8800s e'Q  ]$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0m.room.create!bNSXSTadOMhIrYpMzH:localhost:8800mm@anon-20191002_181700-357:localhost:8800 re'Q ] $xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjom.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800 m xm @anon-20191002_181700-355:localhost:8800 qe'Q ] $qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800 m 7m @anon-20191002_181700-356:localhost:8800 pe'Q ] $y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800 m}m@anon-20191002_181700-355:localhost:8800 oe'Q ]$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYm.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800mm@anon-20191002_181700-354:localhost:8800,ne?Q ]$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQm.room.history_visibility!TlJCaYlCkOOVzFDlLx:localhost:8800m!m@anon-20191002_181700-354:localhost:8800 me'Q ]$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0m.room.member!TlJCaYlCkOOVzFDlLx:localhost:8800mm@anon-20191002_181700-355:localhost:8800,le?Q ]$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMm.room.history_visibility!TlJCaYlCkOOVzFDlLx:localhost:8800mm^@anon-20191002_181700-354:localhost:8800 9p 2 k +dFAxC0 e]]Q=$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM@anon-20191002_181700-365:localhost:8800@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800joinanon-20191002_181700-365E/ e]]Q=$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks@anon-20191002_181700-364:localhost:8800@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800inviteanon-20191002_181700-364C. e]]Q=$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE@anon-20191002_181700-363:localhost:8800@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800joinanon-20191002_181700-363C- e]]Q=$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-361C, e]]Q=$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU@anon-20191002_181700-362:localhost:8800@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-362,+ e]]Q$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800leaveE* e]]Q=$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY@anon-20191002_181700-362:localhost:8800@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800inviteanon-20191002_181700-362C) e]]Q=$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-361C( e]]Q=$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q@anon-20191002_181700-360:localhost:8800@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800joinanon-20191002_181700-360C' e]]Q=$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-358C& e]]Q=$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg@anon-20191002_181700-359:localhost:8800@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-359,% e]]Q$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800leaveE$ e]]Q=$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c@anon-20191002_181700-359:localhost:8800@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800inviteanon-20191002_181700-359C# e]]Q=$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-358C" e]]Q=$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0@anon-20191002_181700-357:localhost:8800@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800joinanon-20191002_181700-357C! e]]Q=$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-355C e]]Q=$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g@anon-20191002_181700-356:localhost:8800@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-356, e]]Q$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800leaveE e]]Q=$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY@anon-20191002_181700-356:localhost:8800@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800inviteanon-20191002_181700-356C e]]Q=$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800joinanon-20191002_181700-355 8l D `8h]c!E@anon-20191002_181700-363:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4X0U9flBwZz06RTlzRkYKMDAyZnNpZ25hdHVyZSBq5rA5h1pDndR1EymJksNihMvUK8akd5HPbS0BdH2uHwoOFUEGGAJXF127.0.0.1Perl + Net::Async::HTTP/0.44m`g]c!E@anon-20191002_181700-364:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVRflYzcUZIdX54VktjX3QKMDAyZnNpZ25hdHVyZSBp33ghg_RDfsZOOAQd39537thoqfP8JhqgkEnFX2m-cAoPEYTIDQOTB127.0.0.1Perl + Net::Async::HTTP/0.44m`ۃf]c!E@anon-20191002_181700-362:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRaMVMjdSMrO0REWTpFbmsKMDAyZnNpZ25hdHVyZSB4RHU1e5M1jmm2OrF5HLNxXf8ncpyINeHLW-xbPCWw1woDYTMFWLSUR127.0.0.1Perl + Net::Async::HTTP/0.44mㅃe]c!E@anon-20191002_181700-361:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZ3MDAyeS4rb1IrXkN-eTAKMDAyZnNpZ25hdHVyZSAZiXv52D9IfJz-fY6S4iSESCB1m4E3V5PKQ9uFgopYlQoXCHGELQORJ127.0.0.1Perl + Net::Async::HTTP/0.44m^d]c!E@anon-20191002_181700-360:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5pQDVkS2cyfmNWV0ItbnIKMDAyZnNpZ25hdHVyZSB40zzIZtNDeOO0PucveN515fHRyYR8SjEKKs-F-a_4qAoXKNFVZJCRE127.0.0.1Perl + Net::Async::HTTP/0.44mňc]c!E@anon-20191002_181700-359:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE92LUF6ZGhtVypQYm9TOVIKMDAyZnNpZ25hdHVyZSBmyEMIrMCzkNbu09yGJXYVC-Gv7jakHi44tZwbRxAwMAoNYAYBPPYBR127.0.0.1Perl + Net::Async::HTTP/0.44mβ b]c!E@anon-20191002_181700-358:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwbUliMEItWHZtaV84clcKMDAyZnNpZ25hdHVyZSA0xPDNV3OihjXve_X05Oa3VsOhe2JVvoT0L6Ld3N49vQoYPZTVFTILN127.0.0.1Perl + Net::Async::HTTP/0.44m)a]c!E@anon-20191002_181700-357:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5hcCMxeiNqaUUmWlpyYVYKMDAyZnNpZ25hdHVyZSBABDCCJYq9vN1SyrT-jvHMSYhagJNqYxqVn4u18EQFkAoTFBXZDXERT127.0.0.1Perl + Net::Async::HTTP/0.44m]`]c!E@anon-20191002_181700-356:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFkqVnVmODk4clgmc1AucXQKMDAyZnNpZ25hdHVyZSC34LqI7bllChHfXOexrWEBeMq1V5a_JtfU8HsJGnPO5QoECXXWUQUFN127.0.0.1Perl + Net::Async::HTTP/0.44m܃_]c!E@anon-20191002_181700-355:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAqdEFQNGV1ZndtYlpHUUsKMDAyZnNpZ25hdHVyZSAAcBnJwhsdJW3SC6iTGZFRy8__pIqcja9z_FlE-AeKxwoLDOCSGURJI127.0.0.1Perl + Net::Async::HTTP/0.44ms l glfeQa?$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 373, "stream_ordering": 1905}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "prev_events": ["$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-356:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-356", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-356:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042153527, "hashes": {"sha256": "302w5oks57M6pmQoIpIVcJ0SriybJxj8PBiLExakz0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whPq6H07/c0RCYM0PcnSSA1xtsjo9hlW64mUVfQFLMKNxpZ4N0ph3k/CAwUUhiDbDXIjeblLyOfDl+oEzXVzAQ"}}, "unsigned": {"age_ts": 1570042153527, "replaces_state": "$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY"}}ZeeQaA$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 371, "stream_ordering": 1904}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0"], "prev_events": ["$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-355:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-355:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042152573, "hashes": {"sha256": "+D49UDbZ937KLtAZTp1LJ4ZNeC2dhHMfvVlDdnijzwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hhsQafdz0gufVEERCl5+Cypy34dxiubTotuzmcZGwNijb3HSTxN5w9lq5S94SUyFHjLWzm/wfGg6sAqMSPZ7DQ"}}, "unsigned": {"age_ts": 1570042152573, "replaces_state": "$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0"}}deQa7$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 372, "stream_ordering": 1903}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg", "$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw"], "prev_events": ["$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-354:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-356", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-356:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042151863, "hashes": {"sha256": "t6NaWkH5V36GwpJ2ZzDwEa9Rgf7MsCz+1Z+UjIDNiNA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vNG10ewjdKTupHKXQ0aXU8GCmnAtAKpFwBnVljunGfBn6rp6F3BJ/nUM30A6MbG5quB48TdRqOR+/WKbBYOeAw"}}, "unsigned": {"age_ts": 1570042151863, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-354:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-354:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-354", "avatar_url": null}, "sender": "@anon-20191002_181700-354:localhost:8800"}]}} a} { y w u sqomkigeca~feeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~eeeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~deeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~ceeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~beeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~aeeQ$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~`eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~_eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~^eeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~]eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~\eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~[eeQ$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~ZeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~YeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~XeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~WeeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~VeeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~UeeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~TeeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800~SeeQ$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~ReeQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~QeeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~PeeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~OeeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~NeeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800~MeeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~LeeQ$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~KeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0!TlJCaYlCkOOVzFDlLx:localhost:8800~JeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g!TlJCaYlCkOOVzFDlLx:localhost:8800~IeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800~HeeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800  | kjeQac$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "stream_ordering": 1909}{"auth_events": ["$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "type": "m.room.power_levels", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"users": {"@anon-20191002_181700-357:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042158454, "hashes": {"sha256": "2NW/qs3OdgmIhs6dQ4+ZfZ/8XMjN6LR/1or1TIV5nfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P2NFOsurqYXXRoO1X1Dn31RYcHlpipgyMZAnmf0JnmzzzBTwngOS5+2QTq3Tw1Wt6aBIaUYRMDk1r7U8adnCAg"}}, "unsigned": {"age_ts": 1570042158454}}vieQay$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "stream_ordering": 1908}{"auth_events": ["$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0"], "prev_events": ["$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-357", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-357:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042157863, "hashes": {"sha256": "hR8xJgZyglgTcDx1cU7cLP0ufPnrWdICnj6BdNcdOCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KRrZT9sVzP+HqXfKNBWlOrvDVb/4IVlMWWjuQMXtD4tZwbuQg8+j8YEbvg+u4oDc/ltAdt9FqSNDyCYxELbIBA"}}, "unsigned": {"age_ts": 1570042157863}}iheQa_$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "stream_ordering": 1907}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-357:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042157232, "hashes": {"sha256": "J0VtSbc+mPGM4gbPGjMoFKvTfLR3G8UxTTIRF5CcE20"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZYjfIbKiO8hRFohKUgux/GpDyFP1TfHWTOZ3HPbByu1RsspRs5CQqEQ5Vl/xG1vwmCkVGcCbPVfmMUd4ICp/BA"}}, "unsigned": {"age_ts": 1570042157232}}geQa?$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800{"token_id": 371, "stream_ordering": 1906}{"auth_events": ["$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI", "$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g", "$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg"], "prev_events": ["$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g"], "type": "m.room.member", "room_id": "!TlJCaYlCkOOVzFDlLx:localhost:8800", "sender": "@anon-20191002_181700-355:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-355", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-355:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042154360, "hashes": {"sha256": "f49vuBVbVotMQm42JcZO1/k4YSqlFWva4q1J7Gsv+V8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v2JBxe9V2Ew3pw3YQ9bCOpB8nqt2olf2orJghS+wKxZicCsEiMonJP77s3AA1diqBXs2cZyoOopB9h6X+SHLCw"}}, "unsigned": {"age_ts": 1570042154360, "replaces_state": "$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA"}} TT)}R' Fo { P % y N # w L ! u J  s H qDmBk@i>ge:<*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cOFSwLSkxZECJMvjjZ:localhost:8800*Q!cHtqiAyCHEAoBIbCmL:localhost:8800LL*Q!cHtqiAyCHEAoBIbCmL:localhost:8800KK*Q!cHtqiAyCHEAoBIbCmL:localhost:8800JJ*Q!cHtqiAyCHEAoBIbCmL:localhost:8800II*Q!cHtqiAyCHEAoBIbCmL:localhost:8800HH*Q!cHtqiAyCHEAoBIbCmL:localhost:8800GG*Q!cHtqiAyCHEAoBIbCmL:localhost:8800FF*Q!cHtqiAyCHEAoBIbCmL:localhost:8800EE*Q!cHtqiAyCHEAoBIbCmL:localhost:8800DD*Q!cHtqiAyCHEAoBIbCmL:localhost:8800CC*Q!cGkVFpidyBBxUxsszG:localhost:8800VV*Q!cGkVFpidyBBxUxsszG:localhost:8800UU*Q!cGkVFpidyBBxUxsszG:localhost:8800TT*Q!cGkVFpidyBBxUxsszG:localhost:8800SS*Q!cGkVFpidyBBxUxsszG:localhost:8800RR*Q!cGkVFpidyBBxUxsszG:localhost:8800QQ*Q!cGkVFpidyBBxUxsszG:localhost:8800PP*Q!cGkVFpidyBBxUxsszG:localhost:8800OO*Q!cGkVFpidyBBxUxsszG:localhost:8800NN*Q!cGkVFpidyBBxUxsszG:localhost:8800MM*Q!bzPCFeFSMbCESvNbxl:localhost:880088*Q!bzPCFeFSMbCESvNbxl:localhost:880077*Q!biBIcqnGelHvLnpkOu:localhost:8800vv*Q!biBIcqnGelHvLnpkOu:localhost:8800uu*Q!biBIcqnGelHvLnpkOu:localhost:8800tt*Q!biBIcqnGelHvLnpkOu:localhost:8800ss*Q!biBIcqnGelHvLnpkOu:localhost:8800rr*Q!biBIcqnGelHvLnpkOu:localhost:8800qq*Q!bzPCFeFSMbCESvNbxl:localhost:880066*Q!bzPCFeFSMbCESvNbxl:localhost:880055*Q!bzPCFeFSMbCESvNbxl:localhost:880044*Q!bzPCFeFSMbCESvNbxl:localhost:880033*Q!bzPCFeFSMbCESvNbxl:localhost:880022*Q!bzPCFeFSMbCESvNbxl:localhost:880011*Q!bzPCFeFSMbCESvNbxl:localhost:880000*Q!bzPCFeFSMbCESvNbxl:localhost:8800//*Q!bzPCFeFSMbCESvNbxl:localhost:8800..*Q!bnTuVBaAJTPbcYZtRl:localhost:880099*Q!bnTuVBaAJTPbcYZtRl:localhost:880088*Q!bnTuVBaAJTPbcYZtRl:localhost:880077*Q!bnTuVBaAJTPbcYZtRl:localhost:880066*Q!bnTuVBaAJTPbcYZtRl:localhost:880055*Q!bnTuVBaAJTPbcYZtRl:localhost:880044*Q!bnTuVBaAJTPbcYZtRl:localhost:880033*Q!bnTuVBaAJTPbcYZtRl:localhost:880022*Q!bnTuVBaAJTPbcYZtRl:localhost:880011*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bkwyieHZwSMJfuSKvV:localhost:8800*Q!bjdLCdBwkKaihRIRFG:localhost:8800 ! !*Q!bjdLCdBwkKaihRIRFG:localhost:8800 *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!bjdLCdBwkKaihRIRFG:localhost:8800  *Q!beBXQofoOfxNBtzsut:localhost:8800]]*Q!beBXQofoOfxNBtzsut:localhost:8800[[*Q!beBXQofoOfxNBtzsut:localhost:8800YY*Q!beBXQofoOfxNBtzsut:localhost:8800WW*Q!beBXQofoOfxNBtzsut:localhost:8800UU*Q!beBXQofoOfxNBtzsut:localhost:8800SS*Q!beBXQofoOfxNBtzsut:localhost:8800PP*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 ,`m^ m z ) 6 E R  _ n{*7DQz)P]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800[P]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:88007P]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:88006P]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:88005P]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:88003N[Q@anon-20191002_181700-36:localhost:8800!wvnfKBSrUlfNmYoeil:localhost:8800P]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800ZP]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800YP]Q@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800XP]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800WP]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800VP]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800UP]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800TP]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800SP]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800RP]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800QP]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800PP]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800OP]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800NP]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800MP]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800LN[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800P]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800KP]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800JP]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800IP]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800HP]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800GP]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800FP]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800EP]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800DP]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800CN[Q@anon-20191002_181700-38:localhost:8800!aWbcZNVBalJilCEsdr:localhost:8800P]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800BP]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800AP]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800@P]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800?P]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800>P]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800=P]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800 9 4/*|%w rmhc TMQe!bNSXSTadOMhIrYpMzH:localhost:8800$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8TLQe!bNSXSTadOMhIrYpMzH:localhost:8800$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnkTKQe!bNSXSTadOMhIrYpMzH:localhost:8800$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXroTJQe!bNSXSTadOMhIrYpMzH:localhost:8800$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1QTIQe!bNSXSTadOMhIrYpMzH:localhost:8800$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgTHQe!bNSXSTadOMhIrYpMzH:localhost:8800$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDATGQe!bNSXSTadOMhIrYpMzH:localhost:8800$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RMTFQe!bNSXSTadOMhIrYpMzH:localhost:8800$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFsTEQe!bNSXSTadOMhIrYpMzH:localhost:8800$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxgTDQe!bNSXSTadOMhIrYpMzH:localhost:8800$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317oTCQe!bNSXSTadOMhIrYpMzH:localhost:8800$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0TBQe!bNSXSTadOMhIrYpMzH:localhost:8800$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTATAQe!bNSXSTadOMhIrYpMzH:localhost:8800$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwgT@Qe!bNSXSTadOMhIrYpMzH:localhost:8800$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRMT?Qe!bNSXSTadOMhIrYpMzH:localhost:8800$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuYT>Qe!bNSXSTadOMhIrYpMzH:localhost:8800$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gT=Qe!bNSXSTadOMhIrYpMzH:localhost:8800$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMT<Qe!bNSXSTadOMhIrYpMzH:localhost:8800$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwT;Qe!bNSXSTadOMhIrYpMzH:localhost:8800$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8T:Qe!bNSXSTadOMhIrYpMzH:localhost:8800$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUT9Qe!bNSXSTadOMhIrYpMzH:localhost:8800$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwT8Qe!bNSXSTadOMhIrYpMzH:localhost:8800$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0T7Qe!bNSXSTadOMhIrYpMzH:localhost:8800$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4skT6Qe!bNSXSTadOMhIrYpMzH:localhost:8800$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgT5Qe!bNSXSTadOMhIrYpMzH:localhost:8800$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNsT4Qe!bNSXSTadOMhIrYpMzH:localhost:8800$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_IT3Qe!bNSXSTadOMhIrYpMzH:localhost:8800$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPoT2Qe!bNSXSTadOMhIrYpMzH:localhost:8800$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-AT1Qe!bNSXSTadOMhIrYpMzH:localhost:8800$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMT0Qe!bNSXSTadOMhIrYpMzH:localhost:8800$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5ET/Qe!bNSXSTadOMhIrYpMzH:localhost:8800$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-oT.Qe!bNSXSTadOMhIrYpMzH:localhost:8800$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oT-Qe!bNSXSTadOMhIrYpMzH:localhost:8800$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAT,Qe!bNSXSTadOMhIrYpMzH:localhost:8800$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8T+Qe!bNSXSTadOMhIrYpMzH:localhost:8800$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84T*Qe!bNSXSTadOMhIrYpMzH:localhost:8800$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIT)Qe!bNSXSTadOMhIrYpMzH:localhost:8800$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIT(Qe~!bNSXSTadOMhIrYpMzH:localhost:8800$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQT'Qe}!bNSXSTadOMhIrYpMzH:localhost:8800$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUT&Qe|!bNSXSTadOMhIrYpMzH:localhost:8800$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0BwcT%Qe{!bNSXSTadOMhIrYpMzH:localhost:8800$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAT$Qez!bNSXSTadOMhIrYpMzH:localhost:8800$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__cT#Qey!bNSXSTadOMhIrYpMzH:localhost:8800$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8YgT"Qex!bNSXSTadOMhIrYpMzH:localhost:8800$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumET!Qew!bNSXSTadOMhIrYpMzH:localhost:8800$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8 K*rFvJd6 R $ l >  Z , t F  ` 2 zLf8 R$l>X`2zL -]@anon-20191002_181700-447:localhost:8800X-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-373:localhost:8800+[@anon-20191002_181700-36:localhost:8800-]@anon-20191002_181700-367:localhost:8800-]@anon-20191002_181700-365:localhost:8800-]@anon-20191002_181700-363:localhost:8800-]@anon-20191002_181700-362:localhost:8800-]@anon-20191002_181700-361:localhost:8800-]@anon-20191002_181700-446:localhost:8800W-]@anon-20191002_181700-445:localhost:8800V-]@anon-20191002_181700-444:localhost:8800U-]@anon-20191002_181700-442:localhost:8800S-]@anon-20191002_181700-441:localhost:8800R-]@anon-20191002_181700-440:localhost:8800Q-]@anon-20191002_181700-439:localhost:8800P-]@anon-20191002_181700-438:localhost:8800O-]@anon-20191002_181700-437:localhost:8800N-]@anon-20191002_181700-436:localhost:8800M-]@anon-20191002_181700-435:localhost:8800L-]@anon-20191002_181700-434:localhost:8800K-]@anon-20191002_181700-433:localhost:8800J-]@anon-20191002_181700-432:localhost:8800I-]@anon-20191002_181700-431:localhost:8800H-]@anon-20191002_181700-430:localhost:8800G-]@anon-20191002_181700-429:localhost:8800F-]@anon-20191002_181700-428:localhost:8800E-]@anon-20191002_181700-427:localhost:8800D-]@anon-20191002_181700-426:localhost:8800C-]@anon-20191002_181700-425:localhost:8800B-]@anon-20191002_181700-424:localhost:8800A-]@anon-20191002_181700-422:localhost:8800@-]@anon-20191002_181700-421:localhost:8800?-]@anon-20191002_181700-420:localhost:8800>-]@anon-20191002_181700-419:localhost:8800=-]@anon-20191002_181700-418:localhost:8800<-]@anon-20191002_181700-417:localhost:8800;-]@anon-20191002_181700-416:localhost:8800:-]@anon-20191002_181700-415:localhost:88009-]@anon-20191002_181700-414:localhost:88008-]@anon-20191002_181700-413:localhost:88007-]@anon-20191002_181700-412:localhost:88006-]@anon-20191002_181700-411:localhost:88005-]@anon-20191002_181700-409:localhost:88004-]@anon-20191002_181700-408:localhost:88003-]@anon-20191002_181700-407:localhost:88002-]@anon-20191002_181700-405:localhost:88001-]@anon-20191002_181700-404:localhost:88000-]@anon-20191002_181700-403:localhost:8800/-]@anon-20191002_181700-401:localhost:8800.-]@anon-20191002_181700-400:localhost:8800-+[@anon-20191002_181700-39:localhost:8800-]@anon-20191002_181700-399:localhost:8800,-]@anon-20191002_181700-398:localhost:8800+-]@anon-20191002_181700-397:localhost:8800*-]@anon-20191002_181700-395:localhost:8800)-]@anon-20191002_181700-394:localhost:8800(-]@anon-20191002_181700-393:localhost:8800'-]@anon-20191002_181700-392:localhost:8800&-]@anon-20191002_181700-391:localhost:8800%-]@anon-20191002_181700-390:localhost:8800$+[@anon-20191002_181700-38:localhost:8800-]@anon-20191002_181700-389:localhost:8800#-]@anon-20191002_181700-388:localhost:8800"-]@anon-20191002_181700-387:localhost:8800!-]@anon-20191002_181700-386:localhost:8800 -]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-380:localhost:8800+[@anon-20191002_181700-37:localhost:8800-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800-]@anon-20191002_181700-376:localhost:8800 W a 5U( t P # o B Hg: Y-yLk> >  ^1}P#zM oD j ] 0  } ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 +Q !uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800  ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ ~,Q!ubmTdQFAhrhZkGULDx:localhost:8800 } }+Q !ubmTdQFAhrhZkGULDx:localhost:8800 | |,Q!uSBqTezaFcMnlowsEf:localhost:8800   ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800+Q !uSBqTezaFcMnlowsEf:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 +Q !vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vAUAIZrCnHTeMGeNuw:localhost:8800gg,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ff,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ee,Q!vAUAIZrCnHTeMGeNuw:localhost:8800dd,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vAUAIZrCnHTeMGeNuw:localhost:8800cc+Q !vAUAIZrCnHTeMGeNuw:localhost:8800bb*Q!uxKymrHZeXRYCZwekU:localhost:8800CC*Q!uxKymrHZeXRYCZwekU:localhost:8800BB*Q!uxKymrHZeXRYCZwekU:localhost:8800AA*Q!uxKymrHZeXRYCZwekU:localhost:8800@@)Q !uxKymrHZeXRYCZwekU:localhost:8800??,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800+Q !utJsNQubeIXvcTKGpx:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800   FvD}K Q>] WQ W1 D  | J    c +%i7 % p ] + v j8> q1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc01e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAk1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkv1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4E1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQod1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQr>d1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y&1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8.1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc /1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 {1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMU1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04$1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM &1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI n1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA X1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUL1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs81e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4L1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 }1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcO1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoB1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr001e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUD1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y[1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYL1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y)8e0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc61e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snsx1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g 3 ~z v r n j fb^ZVRNJF_eeQ$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800^eeQ$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800]eeQ$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800\eeQ$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800[eeQ$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800ZeeQ$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800YeeQ$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800XeeQ$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800WeeQ$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800VeeQ$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800UeeQ$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800TeeQ$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800SeeQ$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800ReeQ$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800QeeQ$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800PeeQ$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800OeeQ$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800NeeQ$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800MeeQ$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800LeeQ$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800KeeQ$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800JeeQ$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA!bNSXSTadOMhIrYpMzH:localhost:8800IeeQ$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800HeeQ$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800GeeQ$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800FeeQ$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800EeeQ$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800DeeQ$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800CeeQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc!bNSXSTadOMhIrYpMzH:localhost:8800BeeQ$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA!bNSXSTadOMhIrYpMzH:localhost:8800  vbueQu$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "250", "stream_ordering": 1920}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 6"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042167311, "hashes": {"sha256": "DGIr7samzzBa/FAfPgQdVOddnygO4Cz5k8RUqr3hruk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LCXKRiPPrs9sihzLljQK+0u9urkXbCjebESuH7kC1UauWvMe120+YWnDSo7Ly5K65y29MqVpfrlpF9BN+k8gBg"}}, "unsigned": {"age_ts": 1570042167311}}teQu$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jI!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "249", "stream_ordering": 1919}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042166853, "hashes": {"sha256": "3m/h7VeKLa0Kg76/Mh4tznu11iTkMLZMcl0i/CATNSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g2WooyQxMktGTqFslwbXITTrqBQiwryO4R14twtDc05eipRmvjkEynUh9AWlq73tfNTz9vJ6TO34IVnNgw/eDg"}}, "unsigned": {"age_ts": 1570042166853}}seQu$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "248", "stream_ordering": 1918}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 4", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042166351, "hashes": {"sha256": "R6RPf7k+P8S3WrBmwynQCXZDcYMKoJK7k0q5gg/Zj2Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ffsqzUWSQvQ60G4aO6hyC5mLYqUMqiP16wS3ZGmJjz8ct1YIbS3Vh/TGOMsJ4DE8cbstYvl8uwThHxSpUvVUCQ"}}, "unsigned": {"age_ts": 1570042166351}}reQu$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "247", "stream_ordering": 1917}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042165694, "hashes": {"sha256": "oAiWUqgKZglrfx2xa6h8GZ4dSJlr4eb5gZybNPngq+U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q4AK2wij/819PlCQcKw1JwNohwiahJ+U7/c6NAjrhzeVGiC6mWZuYuplGi591UMqVm0aYBHXkMb0MkX8WOCEDA"}}, "unsigned": {"age_ts": 1570042165694}} ~L $  9  \ *  b0h6  n V< qt B L R zH w? N ET" [) k 1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk G1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE20e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgS1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4^1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg`1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM s1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg f1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8%1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck#1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY&1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc]1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gN1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQV1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oj1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8o1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y U1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU11e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE x1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM`1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo81e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi81e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEB1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg E1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY =1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y 81e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ c1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsn1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsm1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo[1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgJ1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogA1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90<1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk y1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqId1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ(1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI ,NC 8 - { " p  e ZOD9.|#qf V eL$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4sha256p9,9EAԎ`7Mzv4VeL$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeEsha256k q<21#TVeL$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgsha256Dç;RPPyn {XVeL$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMsha256ع1W;jѠz`FڈfUVeL$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwsha256`# XH){R.宠*lVeL$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8sha256Үq7WU'Ky &"qewvlVeL$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUsha256пmG}ajKqZe?v_扊iJVeL$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwsha256~sz  .&NosVeL$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0sha256RcP,td6hteVeL$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sksha2568:߶i?UJ|ʋ($VeL$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgsha256!%|9:|1Рjԙe  VeL$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNssha256}h޴@RwDYW-$VeL$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Isha256o*1}!5h8m0gV~eL$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPosha256PyaFos<L/JHV}eL$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-Asha256} hT4$.]rO3_'\͗'V|eL$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMsha2561v-VA[V{Ӓ1-+ V{eL$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5Esha2565i7p01sRs1VzeL$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-osha256l}9sWEJp>cVyeL$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1osha256P/ ?'xxkpsdX_ZVxeL$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlAsha256@\3 =+RzI4PVweL$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8sha256U()OwP^U=Xu7lsoVveL$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84sha256hIg:~8!}U/xN9QkVueL$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIsha256 1kj^aLz P % y N # w L ! @c8 e:k}mBT)g<R' { u J  s H qFoD*Q!qzurjQHmiriwjaUMhO:localhost:8800  +*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qzurjQHmiriwjaUMhO:localhost:8800  **Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!rQeYcODvQiLsOIbQrJ:localhost:8800%O*Q!rQeYcODvQiLsOIbQrJ:localhost:8800$N*Q!rJhSRzmWBQHlIhuDXT:localhost:8800DJ*Q!rJhSRzmWBQHlIhuDXT:localhost:8800CI*Q!qjijQBfMwsCPTVgKPm:localhost:8800 S *Q!qjijQBfMwsCPTVgKPm:localhost:8800 R *Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!qSUSLLWjDxcGibUZdT:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!qzrZzAieCgGSbpKOQR:localhost:8800  2*Q!qzrZzAieCgGSbpKOQR:localhost:8800  1*Q!qzrZzAieCgGSbpKOQR:localhost:8800  0*Q!qzrZzAieCgGSbpKOQR:localhost:8800  /*Q!qzrZzAieCgGSbpKOQR:localhost:8800  .*Q!qzurjQHmiriwjaUMhO:localhost:8800  -*Q!qzurjQHmiriwjaUMhO:localhost:8800  ,*Q!qxqNYKdtgvOQdhmgsj:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!quaZwrGnzbNWhwAOYB:localhost:8800*Q!qtelAHlSkrqEFmlCqS:localhost:8800v*Q!qtelAHlSkrqEFmlCqS:localhost:8800u*Q!qtelAHlSkrqEFmlCqS:localhost:8800t*Q!qtelAHlSkrqEFmlCqS:localhost:8800s*Q!qtelAHlSkrqEFmlCqS:localhost:8800r*Q!qtelAHlSkrqEFmlCqS:localhost:8800q*Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z *Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y *Q!qjijQBfMwsCPTVgKPm:localhost:8800 X *Q!qjijQBfMwsCPTVgKPm:localhost:8800 W *Q!qjijQBfMwsCPTVgKPm:localhost:8800 V *Q!qjijQBfMwsCPTVgKPm:localhost:8800 U *Q!qjijQBfMwsCPTVgKPm:localhost:8800 T *Q!rWGwSSefrZzQYCYFHs:localhost:8800 -*Q!rWGwSSefrZzQYCYFHs:localhost:8800 ,*Q!rWGwSSefrZzQYCYFHs:localhost:8800 +*Q!rWGwSSefrZzQYCYFHs:localhost:8800 **Q!rQeYcODvQiLsOIbQrJ:localhost:8800/Y*Q!rQeYcODvQiLsOIbQrJ:localhost:8800.X*Q!qzurjQHmiriwjaUMhO:localhost:8800  )*Q!qzurjQHmiriwjaUMhO:localhost:8800  (*Q!rJhSRzmWBQHlIhuDXT:localhost:8800BH*Q!rJhSRzmWBQHlIhuDXT:localhost:8800AG*Q!rJhSRzmWBQHlIhuDXT:localhost:8800@F*Q!rJhSRzmWBQHlIhuDXT:localhost:8800?E*Q!rQeYcODvQiLsOIbQrJ:localhost:8800+U*Q!rQeYcODvQiLsOIbQrJ:localhost:8800)S*Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q  vbyeQw$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "254", "stream_ordering": 1924}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 10", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042169594, "hashes": {"sha256": "+uhOwp1sTjf8U69yhc+g90V3WW3TgE2/kJiUYlChHfw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h/4RgvUsKiYL+WTHj8gfUTAgM2yNRGF2aPvPSs8LqRUZPYcUjCZAS5BQUI4bGog4Vs9HoDaZduWtI6MV4LsxBg"}}, "unsigned": {"age_ts": 1570042169594}}xeQu$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "253", "stream_ordering": 1923}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 9"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042168818, "hashes": {"sha256": "Tqu27HjVQf/VigKka+PaI2zPIK/PwQDNN6WK9hAaRwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BTRuc+YyTgeFIvYRNnJ0FGmureongqGB+OebVuv0sKUmQz9l5J1X8RRKr0VdqR2Cb4UHzZqxHjg5Z5NWtNt7DA"}}, "unsigned": {"age_ts": 1570042168818}}weQu$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "252", "stream_ordering": 1922}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 8", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042168310, "hashes": {"sha256": "vx5IfTP3JvXfLYBliuMmBB/8jmsn+zTB2MeyYP0Q/Q8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "urgu/j/VIYcpkTht9uR5DeVN3NHF5FEPKlX4rXwygr0LWzH8Sb7PD4aL3MrJB81BbY9B/LQs9O0OMaokXXWeBg"}}, "unsigned": {"age_ts": 1570042168310}}veQu$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "251", "stream_ordering": 1921}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 7"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042167835, "hashes": {"sha256": "0if32U1m5+S5/SWkfnnufemP19z3d9jfegd+XzQwfT8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i+LHXC8qowM1sgu6tE5hy7y+7SqDsTuJb188U2zOj/PKteJ06aUO+5mnyxSUEdKj8PuaYZrtT7KjyrxShUrTDQ"}}, "unsigned": {"age_ts": 1570042167835}} [ l " } 3 DU fw-!e)Q ])$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800)mΉmΉ@anon-20191002_181700-357:localhost:8800!e)Q ]($jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317om.room.message!bNSXSTadOMhIrYpMzH:localhost:8800(m·m·@anon-20191002_181700-357:localhost:8800!e)Q ]'$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800'm΅"m΅-@anon-20191002_181700-357:localhost:8800!e)Q ]&$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTAm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800&m΃m΃@anon-20191002_181700-357:localhost:8800!e)Q ]%$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800%m΀m΀@anon-20191002_181700-357:localhost:8800!e)Q ]$$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800$m{m{@anon-20191002_181700-357:localhost:8800!e)Q ]#$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuYm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800#mumu@anon-20191002_181700-357:localhost:8800!e)Q ]"$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800"mpmp@anon-20191002_181700-357:localhost:8800!e)Q ]!$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800!mm4mm;@anon-20191002_181700-357:localhost:8800!e)Q ] $pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800 mhmh@anon-20191002_181700-357:localhost:8800!e)Q ]$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800meme@anon-20191002_181700-357:localhost:8800!e)Q ]$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800maTma`@anon-20191002_181700-357:localhost:8800!e)Q ]$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800m^Cm^N@anon-20191002_181700-357:localhost:8800!e)Q ]$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0m.room.message!bNSXSTadOMhIrYpMzH:localhost:8800m\m\@anon-20191002_181700-357:localhost:8800! e)Q ]$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4skm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mZmZ@anon-20191002_181700-357:localhost:8800! e)Q ]$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mYRmY\@anon-20191002_181700-357:localhost:8800! e)Q ]$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNsm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mVmW^@anon-20191002_181700-357:localhost:8800! e)Q ]$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Im.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mTmT@anon-20191002_181700-357:localhost:8800! e)Q ]$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPom.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mRmR@anon-20191002_181700-357:localhost:8800!e)Q ]$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-Am.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mQ-mQ7@anon-20191002_181700-357:localhost:8800!e)Q ]$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mOZmOa@anon-20191002_181700-357:localhost:8800!e)Q ]$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5Em.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mMmM@anon-20191002_181700-357:localhost:8800!e)Q ]$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-om.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mKImKP@anon-20191002_181700-357:localhost:8800!e)Q ]$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1om.room.message!bNSXSTadOMhIrYpMzH:localhost:8800mHmI@anon-20191002_181700-357:localhost:8800  u_}eQw$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "258", "stream_ordering": 1928}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 14"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042171693, "hashes": {"sha256": "/Q1LvJwWkjVlFw3B6msdav+PKUKGtJN/hbGv1UrYkbA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PGW1vzW1eC6Nwc7lAzNuGqJbOKFPOqJNe/ucnVxzUexmkOJt3bbx5sbTugkG2yuLPJASqFRfT6Ld/xseCSSpDQ"}}, "unsigned": {"age_ts": 1570042171693}}|eQw$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "257", "stream_ordering": 1927}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 13"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042171226, "hashes": {"sha256": "m4BDzjhNzolkEupvxwFWZSjpLCyEqw4emf3itVYjCVw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HcmUfIYT8j94JFSkP9iqMoFUiPsstqkYM13VUuw0jYWnfTXVAf5BXmmAB5hcwp9yRgG5JbvrFib2Si6PyY6uBw"}}, "unsigned": {"age_ts": 1570042171226}}{eQw$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "256", "stream_ordering": 1926}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 12"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042170759, "hashes": {"sha256": "CEDJCVOJv9il0PqdCPWpEjDT5UYFXBVG2IUvDMTBbqE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nzK/nRHCaS8hTknkZWPa2z17Xzfpb0YjR0602BxBWU6cL5yLUgrvcfuexivB+yffUIwlBnxlOtdHnJNZJFXNDQ"}}, "unsigned": {"age_ts": 1570042170759}}zeQw$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "255", "stream_ordering": 1925}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 11", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042170185, "hashes": {"sha256": "OZ5q/cQhfNWTPbZc6U4tRXU31f3YcJVtnOUUJg2nnSE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QLKh7FJ9DcADWqXNhxedjN8HGW7B5IhgNYUkdxRvyKiqU++WJdGcdpygEZsfxIuiLzoQ2AcH0pn4jZe6Gtd8CA"}}, "unsigned": {"age_ts": 1570042170185}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ JIHGFEDCBA@?>=<;:98 7 6 5 4 3210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^^]]\\[[ZZP}O|N{MzLyKxJwIvHuGtFsErDqCpBoAn@m?l>k=j<i;h:g9f8e7d6c5b4a3`3_3^2]2\2[0Z/Y.X-W,V+U*T)S(R'Q&P%O$N#M"L!KY~Y}X|X{WzVyUxTwSvRuQtPsOrNqMpLoKnJmIlHkGjFiEhDgCfBeAd@c?b>a=`<_;^:]9\8[7Z6Y6X6W5V5U5T4S4R4Q3P3O3N2M2L1K1J1I0H0G0F.E-D,C+B*A)@(?'>&=%<$;:9876543210/.-,+*)('&%$#"!       Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,17e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys16e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI15e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c14e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU13e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo12e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg11e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY10e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1/e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481.e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81-e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1,e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU1+e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q1*e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI1)e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1(e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1'e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1&e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1%e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1$e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1#e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1"e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1!e$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw1 e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1 e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1 e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1 e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1 e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141 e$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x81e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01~e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1}e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1|e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1{e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1ze$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1ye$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1xe$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1we$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM81ve$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1ue$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw1te$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01se$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1re$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg1qe$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1pe$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1oe$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1ne$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1me$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM E S o7T 8 p7T p7Sp7S U U qq8 U  r 9 8e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0sha256 8e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQsha256c8e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgsha25678e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYsha256 8e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Ossha256 8e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSksha256G8e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UUsha256:8e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQsha2568e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNssha2568e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIsha2568e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkAsha256@7e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirwsha25678e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIsha2568e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYsha256V8e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQsha2568e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxcsha2568e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEsha25628e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIsha256u8e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQsha2568e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53Asha2568e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Asha2568e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgsha2568e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwsha2568e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQsha256^7e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0sha256=8e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYsha2568e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCcsha2568e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8sha2568e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Qsha256 ]8e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwsha2567e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntUsha2568e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMaksha2568e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Qsha2568e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Iksha2567e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4sha256e8e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcssha256]8e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwsha2568e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0sha256c8e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qksha2568e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNosha256u8e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9ssha2568e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwsha256f8e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0sha256v8e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUsha25678e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmREsha256 8e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMsha256 8e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98sha256 8e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5Nosha256 8e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwsha256 8e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMksha256 8e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0sha256 v8e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawsha256 8e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9ssha256U8e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIsha256 (8e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZAsha256\7e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKwsha25618e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiMsha256+8e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygsha256u7e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0sha25628e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcMsha256<8e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gsha2568e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5Esha256{8e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgsha256~8e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwgsha2568e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74sha256 8e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQsha2568e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbUsha256"8e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxssha256z8e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewsha256 d V> r9 S 5  U  q 8 p  7 TQm4no6So6 RP9P9ns8e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Usha256 8e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEsha256 8e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNksha256|8e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0sha256=8e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcsha2568e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwEsha2568e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oMsha2568e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhcsha2568e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Ysha256\8e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF8sha2568e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0sha256O8e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5aksha2568e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797Sosha256 8e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmosha256~8e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcsha256 v8e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUsha2568e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4sha256 8e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIsha2568e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgsha2568e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4sha2568e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEsha2568e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAsha256 8e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUgsha256%8e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIsha2568e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrUsha2568e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAsha256 Z8e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawsha256 k8e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Usha256 7e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZIsha2568e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAsha256K8e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiosha256!8e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9ssha256%8e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghwsha256 D8e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMsha256 8e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokgsha256 x8e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgsha256 =8e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYsha256 8e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Isha2568e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUssha256 %8e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pkssha256 08e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwsha256 8e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwsha256 8e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYsha2568e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLksha2568e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCMsha256\8e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1ksha2568e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEEsha256#8e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQsha2568e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTIsha2568e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQsha256Z8e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIsha256e8e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPwsha2568e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIsha256@8e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwsha2568e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIsha256 8e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veksha256e8e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUssha256q8e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQsha2568e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIssha2568e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0sha2568e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRsssha2568e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbksha256  u_eQw$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "262", "stream_ordering": 1932}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 18"}, "depth": 26, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042173778, "hashes": {"sha256": "Xy1Xas2kDmu20f+fmnHCfPDSVbB0o4X3d8kwV9HYmws"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AQTxvMiKqHx5W34q2mnwvEsrwer7gfCv/Qrr8ZmIGZZS55wDSzYIHCu97EemA2C82R7qbHe4+nOnBrVmNaGvCg"}}, "unsigned": {"age_ts": 1570042173778}}eQw$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "261", "stream_ordering": 1931}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 17"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042173152, "hashes": {"sha256": "HbPCNpY5dFcUdHNpjQ+aVswvz6FYoQQjAcDYnkbHjUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6QhCN9SHETcNcFmFAs9mv90T0TA+Mlke8Tfvl0yAablVfP4nPTOQK38VJxc9Gk+62IycVWTJllZclRRwhKJyDg"}}, "unsigned": {"age_ts": 1570042173152}}eQw$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "260", "stream_ordering": 1930}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 16"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042172619, "hashes": {"sha256": "WJOHugkckiuhS0S6ekdkp7U5/n1zii1l1+G5vxBzUfQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XNa/tdFyI+HZZy9y4k1+y4tsKRufmitGNfyJBHi5TqQ87bB8XRK8k2Z1adZVUyGcDwy04yUpytJP3vikya9cDg"}}, "unsigned": {"age_ts": 1570042172619}}~eQw$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "259", "stream_ordering": 1929}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 15"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042172117, "hashes": {"sha256": "t2PFrqnNmKMtuSC7KbQIgVXKT+k8VprYqij8x772qeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pNs+hEiafJsprZlMZyAXmldrU/eCpi7prHHfWbK+A19bCHWMj0iDtvFR+ojV/RgAje1/8hiTWaYW6jGTdtKZCA"}}, "unsigned": {"age_ts": 1570042172117}} $$H l " F j DhBf@djyeQ%$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 1kxeQ%!$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 50kweQ%!$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 49kveQ%!$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 48kueQ%!$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 47kteQ%!$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 46kseQ%!$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 45kreQ%!$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 44kqeQ%!$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 43kpeQ%!$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 42koeQ%!$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 41kneQ%!$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 40kmeQ%!$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 39kleQ%!$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 38kkeQ%!$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 37kjeQ%!$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 36kieQ%!$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 35kheQ%!$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 34kgeQ%!$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 33kfeQ%!$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 32keeQ%!$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 31kdeQ%!$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 30kceQ%!$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 29kbeQ%!$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 28kaeQ%!$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 27k`eQ%!$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 26k_eQ%!$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 25k^eQ%!$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 24k]eQ%!$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 23k\eQ%!$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 22k[eQ%!$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 21kZeQ%!$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 20kYeQ%!$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 19kXeQ%!$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 18kWeQ%!$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 17kVeQ%!$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I!bNSXSTadOMhIrYpMzH:localhost:8800content.bodyMessage 16  u_eQw$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "266", "stream_ordering": 1936}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 22"}, "depth": 30, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042175828, "hashes": {"sha256": "xCrEfz7FID6tCBPf0WYZbYDZgUKb2OD/UorN8nH7ghQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xfeu2+Xm/Alo9O2CULG1D7K2v5QAkB4tUmquDwNQV39rXwL7JUHCGGOUtch7GHD4tErGJYmOB0i+LTZCzfWuAg"}}, "unsigned": {"age_ts": 1570042175828}}eQw$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "265", "stream_ordering": 1935}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 21"}, "depth": 29, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042175043, "hashes": {"sha256": "mb1wNIHsEyotX0a72/HrEykQfvWz4Xt2VFAlNMMl5DQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e+W1dUJCV7mfsE9yMiyrBPbdL8v47dxyUF1nJLNCM9D75TkzMb7Fz5mNkjhMTl/ihDuudObwydxp+ThtFEElCA"}}, "unsigned": {"age_ts": 1570042175043}}eQw$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "264", "stream_ordering": 1934}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 20"}, "depth": 28, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042174602, "hashes": {"sha256": "8lEnvefABQfmG2bQCR15IHeiOSuUu1SuS2DXFjJlCL0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Gm3zZAJKPUUZXdXTZYLAknhGxwVDUfNoRwDOdpO4zeh8vGYHctEyLEqiSSkiq9Q+/FFP8bqIDn2+HpS+voGAw"}}, "unsigned": {"age_ts": 1570042174602}}eQw$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "263", "stream_ordering": 1933}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 19", "msgtype": "m.text"}, "depth": 27, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042174177, "hashes": {"sha256": "zDkxPoJAl1RCAWIFXV37XzImWoqHUvrwqf9/KRDC4Zw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EgdgtlYBMRLdjLNX350iioKt1JevcN1WBxyW5ghwnc7b0hgoCYJAg6dW2sjDtHJkFb4o/p1+tGXBN9cm/CuSBg"}}, "unsigned": {"age_ts": 1570042174177}} T x P ( ` 8  p H XxP(`8pH `8pH X0hh@0xP(@ localhost:8800 :'Q!kjjUs'Q!kjjUsMowsioSQRIJeg:localhost:8800 :'Q!kjjUsMowsioSQRIJeg:localhost:8800 9'Q!kjjUsMowsioSQRIJeg:localhost:8800 8'Q!kjjUsMowsioSQRIJeg:localhost:8800 7'Q!kjjUsMowsioSQRIJeg:localhost:8800 6'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800 5'Q!kjjUsMowsioSQRIJeg:localhost:8800 4'Q!kjjUsMowsioSQRIJeg:localhost:8800 3'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800 ;'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800~'Q!kOmCTyiizHqfCJdhlR:localhost:8800 R'Q!kOmCTyiizHqfCJdhlR:localhost:8800 Q'Q!kOmCTyiizHqfCJdhlR:localhost:8800 P'Q!kOmCTyiizHqfCJdhlR:localhost:8800 O'Q!kOmCTyiizHqfCJdhlR:localhost:8800 N'Q!kOmCTyiizHqfCJdhlR:localhost:8800 M'Q!kOmCTyiizHqfCJdhlR:localhost:8800 L'Q!kOmCTyiizHqfCJdhlR:localhost:8800 K'Q!kOmCTyiizHqfCJdhlR:localhost:8800 J'Q!kOmCTyiizHqfCJdhlR:localhost:8800 I'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kAxKaIQhXTtGFWSUgr:localhost:8800 'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800 T u J  s H g<k@e:c8 qFoD i>T)}R' { P % mB y N # q*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hFwigdYZkwYNSwelRH:localhost:8800 U U*Q!hFwigdYZkwYNSwelRH:localhost:8800 T T*Q!hFwigdYZkwYNSwelRH:localhost:8800 S S*Q!hFwigdYZkwYNSwelRH:localhost:8800 R R*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hFwigdYZkwYNSwelRH:localhost:8800 f f*Q!hFwigdYZkwYNSwelRH:localhost:8800 Z Z*Q!hFwigdYZkwYNSwelRH:localhost:8800 Y Y*Q!hFwigdYZkwYNSwelRH:localhost:8800 X X*Q!hFwigdYZkwYNSwelRH:localhost:8800 W W*Q!hFwigdYZkwYNSwelRH:localhost:8800 V V*Q!hegUPDZCEEmBhsNJJR:localhost:8800  *Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ ~*Q!hegUPDZCEEmBhsNJJR:localhost:8800 } }*Q!hegUPDZCEEmBhsNJJR:localhost:8800 | |*Q!hegUPDZCEEmBhsNJJR:localhost:8800 { {*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800*Q!hDAzBWYEyRVBRlrCHh:localhost:8800  *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 *Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hgjYwwwjWJNgwrzOto:localhost:8800YY*Q!hgjYwwwjWJNgwrzOto:localhost:8800XX*Q!hgjYwwwjWJNgwrzOto:localhost:8800WW*Q!hgjYwwwjWJNgwrzOto:localhost:8800VV*Q!hZuwenlFDapIPBOyfi:localhost:8800zz*Q!hZuwenlFDapIPBOyfi:localhost:8800yy*Q!hZuwenlFDapIPBOyfi:localhost:8800xx*Q!hZuwenlFDapIPBOyfi:localhost:8800ww*Q!hZuwenlFDapIPBOyfi:localhost:8800vv*Q!hZuwenlFDapIPBOyfi:localhost:8800uu*Q!hYPSaMPGsLnvYSmwhg:localhost:880000*Q!hYPSaMPGsLnvYSmwhg:localhost:8800//*Q!hYPSaMPGsLnvYSmwhg:localhost:8800((*Q!hYPSaMPGsLnvYSmwhg:localhost:8800''*Q!hYPSaMPGsLnvYSmwhg:localhost:8800&&*Q!hYPSaMPGsLnvYSmwhg:localhost:8800%%*Q!hYPSaMPGsLnvYSmwhg:localhost:8800$$*Q!hWHyATwKfuznrqTiyu:localhost:8800\\*Q!hWHyATwKfuznrqTiyu:localhost:8800[[*Q!hWHyATwKfuznrqTiyu:localhost:8800ZZ*Q!hWHyATwKfuznrqTiyu:localhost:8800YY*Q!hWHyATwKfuznrqTiyu:localhost:8800XX*Q!hWHyATwKfuznrqTiyu:localhost:8800WW*Q!hSzBsirdPWHtVjagXn:localhost:8800 T m e& L |u E=5- l d eeQ$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc!NfaPEGKjnUDUTavzol:localhost:8800VeeQ$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub4!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA!tDsPLsKOLPePtEWRwn:localhost:8800ɁeeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8!EWkoFeckhXlNyjuIEB:localhost:8800ցeeQ$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDE$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA!OqPpVlCwmKdAUlwrXI:localhost:8800ZeeQ$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU!jYzridjeihmwPBuwLb:localhost:8800KeeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg!duCKuavMBSfRbTFPsc:localhost:8800eeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4!mMsxpaIlcykPuOnDyl:localhost:8800ׁeeQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-Ns!jveVPZSXJOJyNDebPO:localhost:8800eeQ$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA!kjueCKHmYaYefEEpQY:localhost:8800eeQ$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA!VWYMJxEviBNDdJCuKT:localhost:8800فeeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0!dUnULFLGtgaVdwHtnz:localhost:8800xeeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY!OaCEdDAiatpwYcagUb:localhost:8800eeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg!OaCEdDAiatpwYcagUb:localhost:8800eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800 5eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800 BeeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800 eeQ$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM$XVJtd7-tyf8qLs5pWYhOYshNdH04PUkFesJnAwD9ZfY!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800́eeQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU!odAvowLhHJcmkKlxFk:localhost:8800eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800  u_ eQw$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "270", "stream_ordering": 1940}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 26"}, "depth": 34, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042179818, "hashes": {"sha256": "0gPe2LSYVs69+K2d/mOzCx4Ms62mnfT/frRO5YWMySQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C80nJUX+4Co5RzoZVpjqppOUAuLNDXXJZWs8HYNDFu40S2uLP1BL3Z3LaeFCIPbnZLpW/5aORhGcUKv4Evb2AQ"}}, "unsigned": {"age_ts": 1570042179818}}eQw$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "269", "stream_ordering": 1939}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 25"}, "depth": 33, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042178868, "hashes": {"sha256": "nrR5aLH6OxwrGmBXCWX6cL8Ywhvr8rvimmIq7lRoWK8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6k/gbI+JJKCK2XTpAAqFCcgR9mfCQIku3OqojJ3ZySMecCUj3J6GVtPDk7veda5Aq39RPPq0e3ZlgVcZjQuMDw"}}, "unsigned": {"age_ts": 1570042178868}}eQw$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "268", "stream_ordering": 1938}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 24", "msgtype": "m.text"}, "depth": 32, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042177693, "hashes": {"sha256": "XrCSAa7yFnCU/+zKG1SKU6PKQEk/ov4PNxfuTX04EQs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYzj8g5soqhqzXiBvYnPZYFYQM1xOtl4BVmYaZ2rPJUnqE3N/Kncuti6wuEoZ1V7qstug1Qtwya85PT5fy4+Bw"}}, "unsigned": {"age_ts": 1570042177693}}eQw$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "267", "stream_ordering": 1937}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 23"}, "depth": 31, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042176784, "hashes": {"sha256": "J4MTF+ROkVESFpCG1/3mKOmyXzHvA/0lqD0Je1k9U9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p10zwazb7CiZKieOvcUtwVsY0bI4w8dZ+YE1AQl6MeM7dfAvpxunQd+qy0xOCb3QtEgVVOC8Cf3RUTXpILs1Cg"}}, "unsigned": {"age_ts": 1570042176784}}  u_ eQw$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "274", "stream_ordering": 1944}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 30", "msgtype": "m.text"}, "depth": 38, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042184463, "hashes": {"sha256": "CjGSCYmdP8IsaWoNcaZPVYsaLemU/YHCCJpDTzUlspE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CnMbhAp5C96kj0vr+UTGUu5McFWSeTEWQ0y1AShxVU4VUoK3YVdaWxSrMcy4KcTyWhqzaWzUDJXL2UBAijDWBA"}}, "unsigned": {"age_ts": 1570042184463}} eQw$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "273", "stream_ordering": 1943}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 29"}, "depth": 37, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042183868, "hashes": {"sha256": "9bt6jq2wLsJYAeOQf6XyzgfBsVoE+GivzI7l/BozOtI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m1ZUP3gN2TixUkNPqYJcCECLUREw+WGrI7hHfgnxJU8aylXXkaPxYlwrZFr0iNgvehGpSe8TMzaH4fSQa4laAQ"}}, "unsigned": {"age_ts": 1570042183868}} eQw$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "272", "stream_ordering": 1942}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 28", "msgtype": "m.text"}, "depth": 36, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042182610, "hashes": {"sha256": "oFKTPjUABjMZYwLlsrlt2agRBY0KS6VeOUhSZiOEAv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7lq+yqlMqekME6DH9zNHO7i7Kdg4o9fD4tLXB0jqFWU6hIRyJjAxSAoZ8GixVl+aN5S0Jx8/GHvhPooYjVYCDA"}}, "unsigned": {"age_ts": 1570042182610}} eQw$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "271", "stream_ordering": 1941}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 27"}, "depth": 35, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042181027, "hashes": {"sha256": "1mZ/3UpRrx54WNwUCAQTJ0hMDVzADIOuPv4IAr5UmdI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VAl3B7TIJD/sy5BGOmsjT+ORH48o6BNFPsSiXzNOCQ5lVd4giN/V3ttGXETnpxNGCFFKYCusetG10UuOs9ltCw"}}, "unsigned": {"age_ts": 1570042181027}}  u_PeQw$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "328", "stream_ordering": 2011}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 34"}, "depth": 44, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042229497, "hashes": {"sha256": "0/DpNXQoTZfa3T2MVxmlvtp6hb6qgdcqr+5X1XDxN8s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FE6s7dYEgvMq3lOGpYmaF32BIKJt+SU+dMnuJGMRG5GfF6m2AU7xGDxv2zHxZMNO+L+J7NMsRAExhrugzk1uDg"}}, "unsigned": {"age_ts": 1570042229497}}OeQw$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "327", "stream_ordering": 2010}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 33"}, "depth": 43, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042229055, "hashes": {"sha256": "NQPZ+h5GJ/aMlz5LabDgGg611PlI0Jg+XtZt9OnaB5o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T1QGrKtpltJtj+6bN47jbr1KvXyLaRsvtdTnMg+k3WnKK7JBPgzvt5Q2ergskFj0U1uuthV5QDNuT/bnisbrDw"}}, "unsigned": {"age_ts": 1570042229055}}NeQw$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "326", "stream_ordering": 2009}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 32"}, "depth": 42, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042228523, "hashes": {"sha256": "oQ+9MW/aQ8m7Jyt4Ew97ZXXsAD9ZFv/4IaeAssNyrrE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iEO63ZD7WCS2D/u3WkMXsPnEnFm7EXlIHfgB+bLbfZmVkzT8nDtCYChzaUjqIkoCDhHmOL10E5ToTEUseyUbDg"}}, "unsigned": {"age_ts": 1570042228523}}MeQw$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "325", "stream_ordering": 2008}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 31"}, "depth": 41, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042228021, "hashes": {"sha256": "m7oM3Bz4GJ19jbgC3TQRfnJ0s91fojxgaasm3402y+U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KG3gl3LA5uuLW7Edz15IrAbKlm1Nnf+QS8tTCORLIv0XZyPuyp9DNTtyTQEABk8YGk9BqVjYc6snusETONU8Bw"}}, "unsigned": {"age_ts": 1570042228021}}  u_eQw$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "278", "stream_ordering": 1948}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 34", "msgtype": "m.text"}, "depth": 42, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042186552, "hashes": {"sha256": "eC1aLdEemGnvjx/fLnSDYfvopuBTAIQOouO9fCSIBq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Kk65gXxEmvWS7LMmjunmHETH+0PhE7RAOT3L0OAokXfSL35IEmj7uGiZQxAdv2F0Kz10cei6UxY6nIM/qE/kBw"}}, "unsigned": {"age_ts": 1570042186552}}eQw$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "277", "stream_ordering": 1947}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 33", "msgtype": "m.text"}, "depth": 41, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042186111, "hashes": {"sha256": "NxDyyYEGeDdn94Ygym3Gd9digl5n+Pd/idFGt5fH3ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sMY8xV4vvB3tTVe5fmeKiAkGHwEJvJzxRn5GkjELJoT+Fo1VhU6Hs0WfyZvFXEGJhrcPeu6DV4aSUJLum1F3AA"}}, "unsigned": {"age_ts": 1570042186111}}eQw$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "276", "stream_ordering": 1946}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 32"}, "depth": 40, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042185636, "hashes": {"sha256": "ZVhmKi38KAHRauBMMAhKsR8RWV1iT1JgLL0mz5Qd798"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uZUNOPhvQjvP+hqq1LT+ePTZtUKOpu0FM/aKYncdcZh/MCg07Y5YJTB80KfYbuGf+IPgnzlymSBC8bsadhTwBQ"}}, "unsigned": {"age_ts": 1570042185636}}eQw$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "275", "stream_ordering": 1945}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 31"}, "depth": 39, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042184994, "hashes": {"sha256": "fQCdtERpP2n8a73LOeqVX2DpezEBafMTpprFn3jmJoM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7TktRKXEmo3IVup+xiVdjeK078Uc+kQRCvJQGe4MeAHCKNGZvWogvVWS/MOEMh2hacXNFvbYNMiiGD8qocAWBA"}}, "unsigned": {"age_ts": 1570042184994}} ~z v r n j fb^ZVRNJF}eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800|eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800{eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800zeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800yeeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800xeeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800weeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800veeQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800ueeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800teeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800seeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800reeQ$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800qeeQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800peeQ$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800oeeQ$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800neeQ$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800meeQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800leeQ$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800keeQ$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800jeeQ$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800ieeQ$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800heeQ$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800geeQ$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800feeQ$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800eeeQ$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800deeQ$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800ceeQ$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs!bNSXSTadOMhIrYpMzH:localhost:8800beeQ$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg!bNSXSTadOMhIrYpMzH:localhost:8800aeeQ$W23hccw9vO_D6NZqBxSe7ls3pvCt6cagv-wBUGQwzxg$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o!bNSXSTadOMhIrYpMzH:localhost:8800`eeQ$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800 [ l " } 3 DU g}/$3e/Q ]$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAm.room.join_rules!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800&2e3Q ]$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9om.room.power_levels!SrMQpDMFREKRMELwbL:localhost:8800m<mr@anon-20191002_181700-360:localhost:8800 1e'Q ]$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qm.room.member!SrMQpDMFREKRMELwbL:localhost:8800msm@anon-20191002_181700-360:localhost:88000 e'Q  ]$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodwm.room.create!SrMQpDMFREKRMELwbL:localhost:8800mmƉ@anon-20191002_181700-360:localhost:8800 /e'Q ]=$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800=mιmκ5@anon-20191002_181700-358:localhost:8800 .e'Q ]<$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800<mδmεJ@anon-20191002_181700-359:localhost:8800 -e'Q ];$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAm.room.member!bNSXSTadOMhIrYpMzH:localhost:8800;mΰmα@anon-20191002_181700-358:localhost:8800!,e)Q ]:$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800:mήmή@anon-20191002_181700-357:localhost:8800!+e)Q ]9$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4m.room.message!bNSXSTadOMhIrYpMzH:localhost:88009mΫmΫ@anon-20191002_181700-357:localhost:8800!*e)Q ]8$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeEm.room.message!bNSXSTadOMhIrYpMzH:localhost:88008mΩmΩ@anon-20191002_181700-357:localhost:8800!)e)Q ]7$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBYm.room.message!bNSXSTadOMhIrYpMzH:localhost:88007mΧmΧ@anon-20191002_181700-357:localhost:8800!(e)Q ]6$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQm.room.message!bNSXSTadOMhIrYpMzH:localhost:88006mΥ4mΥ?@anon-20191002_181700-357:localhost:8800!'e)Q ]5$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuom.room.message!bNSXSTadOMhIrYpMzH:localhost:88005mΣmΣ@anon-20191002_181700-357:localhost:8800!&e)Q ]4$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ecm.room.message!bNSXSTadOMhIrYpMzH:localhost:88004m΢ m΢@anon-20191002_181700-357:localhost:8800!%e)Q ]3$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7wm.room.message!bNSXSTadOMhIrYpMzH:localhost:88003mΠmΠ @anon-20191002_181700-357:localhost:8800!$e)Q ]2$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14m.room.message!bNSXSTadOMhIrYpMzH:localhost:88002mΝmΝ@anon-20191002_181700-357:localhost:8800!#e)Q ]1$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8m.room.message!bNSXSTadOMhIrYpMzH:localhost:88001mΛmΛ#@anon-20191002_181700-357:localhost:8800!"e)Q ]0$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnkm.room.message!bNSXSTadOMhIrYpMzH:localhost:88000mΘmΘ@anon-20191002_181700-357:localhost:8800!!e)Q ]/$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXrom.room.message!bNSXSTadOMhIrYpMzH:localhost:8800/mΖmΖ@anon-20191002_181700-357:localhost:8800! e)Q ].$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Qm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800.mΔmΔ@anon-20191002_181700-357:localhost:8800!e)Q ]-$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvgm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800-mΒmΒ)@anon-20191002_181700-357:localhost:8800!e)Q ],$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDAm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800,mΐ]mΐg@anon-20191002_181700-357:localhost:8800!e)Q ]+$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RMm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800+m΍5m΍>@anon-20191002_181700-357:localhost:8800!e)Q ]*$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFsm.room.message!bNSXSTadOMhIrYpMzH:localhost:8800*m΋8m΋@@anon-20191002_181700-357:localhost:8800  u_eQw$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "282", "stream_ordering": 1952}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 38"}, "depth": 46, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042188961, "hashes": {"sha256": "Mhx55PXyc4QqJNyPhTVDm3Dp5K8wbqEKXBx/LLDZeO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SlvZj3/HQN1eIS+2evQOdwq7cXIjBXDBgRMOkm/kFW6jjllpGKz0DMhzo5SgzoCkO2oZjLUGVZPwWpfvP2cNAA"}}, "unsigned": {"age_ts": 1570042188961}}eQw$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "281", "stream_ordering": 1951}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 37", "msgtype": "m.text"}, "depth": 45, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042188319, "hashes": {"sha256": "9RcEW7WMSmIWEOfHEXWzyUv7hmSS+LVD8f7/RCz4xV0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m+1bG1warohRwUNPbTigMCnoC2RYXf7R2ERZY8277nKTn0kfNjirCKAx7y4qsXW5a2oHlLNUuhawhojI+gS2BA"}}, "unsigned": {"age_ts": 1570042188319}}eQw$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "280", "stream_ordering": 1950}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 36", "msgtype": "m.text"}, "depth": 44, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042187869, "hashes": {"sha256": "05mv1NujF9x4nHebCgZyZyZLLoQEwzVMIa6WWOojsDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "842Wet5YtnLuefUVmzQ2+NwhjesYlqTrYNrJMWEjBjYO6DpQgqt7RqMcJ4NFYx9n1pdnUbvHCOtE5zmy11opCg"}}, "unsigned": {"age_ts": 1570042187869}}eQw$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "279", "stream_ordering": 1949}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 35", "msgtype": "m.text"}, "depth": 43, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042187061, "hashes": {"sha256": "qGIg9d7AUyloQaFisRbx7hHq8t61CqeWVn2iANlsiRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fg31iubbV4BURRodYof1Iu1QzgeXXTKVrlpuEudGymMkSLP3dgL7f3z7EvMdOLR4vlIQ9PBULFNxl0EjxwtTDQ"}}, "unsigned": {"age_ts": 1570042187061}} IVj8p>  | v D  | J* P  P  W % \  ] ,d2j8p> vD$J1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gA1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU&1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU k1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc f1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg U1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE '1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI<1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Toe1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Aq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA#1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI]1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoX1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc|1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocww1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cN1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY:1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoon1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcl0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I31e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEz1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ r1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8c1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA A1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY *1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU:1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0=1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug > IVj8p>  | v D  | J* P  P  W % \  ] ,d2j8p> vD$J1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g;1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU i1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc f1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg U1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE '1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI<1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Toe1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Aq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA#1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI]1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoX1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc|1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocww1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc$1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cN1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY:1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoon1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcl0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I31e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEz1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ r1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8c1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA A1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY *1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU:1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0=1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug >  u_eQw$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "286", "stream_ordering": 1956}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 42"}, "depth": 50, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042191252, "hashes": {"sha256": "NCURc7l8YMJAacjFYVaBTNGUqk0zi54X4s4veUkdXQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zh4l16S+keU6w9i5YpQZ0sMAqyOY5qSqdaRYYZ+C5G3mhGR4Ri+jHRf23H/eJKqvE7XDDQue+VIFCEzD+KNZBw"}}, "unsigned": {"age_ts": 1570042191252}}eQw$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "285", "stream_ordering": 1955}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 41", "msgtype": "m.text"}, "depth": 49, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042190619, "hashes": {"sha256": "LqiWfLAM/utS4GgaCJrRGO2NFMJXCcMRhXYDTJeGEnE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9uhfYSwOuxj3cR3QdUVoKsUI0DQoiXq43hM8U83m8KZ8kxNX9e/7GzOiF2agPK0U4IJxTQhEy6DRGyPNR1PwDw"}}, "unsigned": {"age_ts": 1570042190619}}eQw$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "284", "stream_ordering": 1954}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 40"}, "depth": 48, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042190045, "hashes": {"sha256": "cbb2c5s6FXE011WvIi1M37galwzNegZR8x3A0fjboak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GfIDL6hxNyt5Nw+HL8yg+WpNBLc+k51TkfP1UnEKi8HtBpD4kCWn01Kh4ixCkuJ8RS5RyGKxZQ5w4VNkbSx4Cg"}}, "unsigned": {"age_ts": 1570042190045}}eQw$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "283", "stream_ordering": 1953}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 39"}, "depth": 47, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042189528, "hashes": {"sha256": "cYvY40hBWe2869RjortoCIaH1dQS50udbaUOVJy/ffA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uBr9rP1v43VprJzozazkdob3Nq4nczfLjCrBSz7Fmpr6a7M9guYMaetdzemXp7Vftr+KPliNHCkPbP9nenJXDQ"}}, "unsigned": {"age_ts": 1570042189528}}~ytoje`ZTNHB<60*$ |vpjd^XRLF@:4.("  z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ً7ҋ4Ћ1΋-ȋ*Ƌ'ċ$   }yuqmifb^{ZwVrRmNiJeFbB_>]:\6Y3W1M.-+?'=#: 50,($  | xtplhd`\XTމPډL؉HԉD҉@̉<ʼn840,($  F|x|tupsllhhde`^\\XVTSPMLHIDE?A:>4:06/3./++%($   |xtplhd܇`؇\ևXӇT·PɇLȇH‡D@<840,($  zw}qzivhreoak\gZdR`Q\NYKUFQBM2I)E"A=951-) %! ߅{ۅwׅsՅpͅląhÅd`\YUQMIEA=951~-z*v'r$l!kgfbN_\ S POKB|?y8v2r/o(m#jfc`\YWS PMJGC@<840,($ׄ ΄ɄĄ |xtplhd`q]rYURNJ~GsCk?f;d7`4Y1W-V)R&N"IAD<7. (${wsp l iea^ZWTPMIނF܂DʂAւ=˂:ł62/+'$  ||xwtqpolnhbdh`f\cX`T_P]L[HWDQ@K<D8>4;08,7(0$- ,&  |xtplhd`\XUQMIEA=951-*&" ~} ~ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     4 1 - ) % ! { t q m i f d [ N H} Ay =u 8q *m )i #e a ^ Z W T P L H E A > ; 7 3 / + ' #  ە ו ҕ Е ʕ Ǖ Õ  ~ z v s o Zl h d ` \ Y U Q M tI wE qA o= m: i6 e3 d/ a+ `' ]# X T R M I E A @ = <~ 7z /v )r %n $k "i f c a ^ [ X U R P M J H E B ? < 9 6 4 1 . + ( % ܓ" ړ ד ֓ ԓ Г ϓ Γ Ǔ Ɠ ē Ó   | y w t q n k h e c ` ] Z W T P zM J F }B v> r: f6 k2 b. ^* [& I" T L G D = ; 9 4 1~ /z -v *r 'n j f b ^ Z V R N J F ˑB > ޑ: 6 2 ّ. Ց* ϑ& ʑ" Ǒ Ñ      ~ z v r n j f b ^ Z yV |R uN nJ hF dB `> X: S6 V2 P. L* I& B" > 6 9 4 1 , ) & #{ w s o l h d ` \ X T PkL H D @ < 8 4 ܏0 ؏, ӏ) ̏% ʏ! ɏ ŏ     } y u q n j f c ` \ Y V R N J {G uC r? p; n7 f3 e0 b, _( ]$ U P M I G A @ 9 2 *} %y u q n k gc_ [ W SOKGC?;73/+'ߍ#ˍ֍э̍ōÍ {wsokgc_[WSOzKwGqCn?k<f9\6_3Y/V,R)M&I"FA>974& !|xtq n jfc`]ZVSOLIEAߋ= -RM H C > 9 4/*|%w rmhc TzQe!SrMQpDMFREKRMELwbL:localhost:8800$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVITyQe!SrMQpDMFREKRMELwbL:localhost:8800$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4cTxQe!SrMQpDMFREKRMELwbL:localhost:8800$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktUTwQe!SrMQpDMFREKRMELwbL:localhost:8800$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeoTvQe!SrMQpDMFREKRMELwbL:localhost:8800$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEgTuQe!SrMQpDMFREKRMELwbL:localhost:8800$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHYTtQe!SrMQpDMFREKRMELwbL:localhost:8800$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwETsQe!SrMQpDMFREKRMELwbL:localhost:8800$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48TrQe!SrMQpDMFREKRMELwbL:localhost:8800$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8TqQe!SrMQpDMFREKRMELwbL:localhost:8800$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeATpQe!SrMQpDMFREKRMELwbL:localhost:8800$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUToQe!SrMQpDMFREKRMELwbL:localhost:8800$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1QTnQe!SrMQpDMFREKRMELwbL:localhost:8800$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeITmQe!SrMQpDMFREKRMELwbL:localhost:8800$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkITlQe!SrMQpDMFREKRMELwbL:localhost:8800$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPwTkQe!SrMQpDMFREKRMELwbL:localhost:8800$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyUTjQe!SrMQpDMFREKRMELwbL:localhost:8800$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzsTiQe!SrMQpDMFREKRMELwbL:localhost:8800$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEThQe!SrMQpDMFREKRMELwbL:localhost:8800$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwTgQe!SrMQpDMFREKRMELwbL:localhost:8800$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKATfQe!SrMQpDMFREKRMELwbL:localhost:8800$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwTeQe!SrMQpDMFREKRMELwbL:localhost:8800$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwTdQe!SrMQpDMFREKRMELwbL:localhost:8800$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcTcQe!SrMQpDMFREKRMELwbL:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUTbQe!SrMQpDMFREKRMELwbL:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqkTaQe!SrMQpDMFREKRMELwbL:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYT`Qe!SrMQpDMFREKRMELwbL:localhost:8800$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUT_Qe!SrMQpDMFREKRMELwbL:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94T^Qe!SrMQpDMFREKRMELwbL:localhost:8800$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQT]Qe!SrMQpDMFREKRMELwbL:localhost:8800$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAT\Qe!SrMQpDMFREKRMELwbL:localhost:8800$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9oT[Qe!SrMQpDMFREKRMELwbL:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-QTZQe!SrMQpDMFREKRMELwbL:localhost:8800$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1CjodwTYQe!bNSXSTadOMhIrYpMzH:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMTXQe!bNSXSTadOMhIrYpMzH:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgTWQe!bNSXSTadOMhIrYpMzH:localhost:8800$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxATVQe!bNSXSTadOMhIrYpMzH:localhost:8800$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQTUQe!bNSXSTadOMhIrYpMzH:localhost:8800$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4TTQe!bNSXSTadOMhIrYpMzH:localhost:8800$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeETSQe!bNSXSTadOMhIrYpMzH:localhost:8800$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBYTRQe!bNSXSTadOMhIrYpMzH:localhost:8800$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQTQQe!bNSXSTadOMhIrYpMzH:localhost:8800$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuoTPQe!bNSXSTadOMhIrYpMzH:localhost:8800$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7EcTOQe!bNSXSTadOMhIrYpMzH:localhost:8800$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7wTNQe!bNSXSTadOMhIrYpMzH:localhost:8800$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14  u_eQw$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "290", "stream_ordering": 1960}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 46"}, "depth": 54, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042193204, "hashes": {"sha256": "7IlwtTfnWnjvnkxHP08VUxO0K+67JvuHR02PHhkA/GA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oGXRLpA9oKsPPqbZP4qiwXU07yfmr4Xp+QYgyUfBAKFpOWjjLXNDhT0gmzCZsjJ1PjvAVUufpNA8652e3bq9BQ"}}, "unsigned": {"age_ts": 1570042193204}}eQw$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "289", "stream_ordering": 1959}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 45"}, "depth": 53, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042192777, "hashes": {"sha256": "OyWp142RrK97RnZmoQDLE8PckQB6O5WBKzNDxKyZGcI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TstNRquUBNr5cSc4SE/SVzvP35tMQz+dudeAZr19yLlsOsQGFgF1hfuVOaSggxX7s3Is4Fe8c6sd96n5dKFUBQ"}}, "unsigned": {"age_ts": 1570042192777}}eQw$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "288", "stream_ordering": 1958}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 44", "msgtype": "m.text"}, "depth": 52, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042192394, "hashes": {"sha256": "qjurEH3vIdz8IQqa7TDa78XJaS2kr/VznMnX4EMxFiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QI5TWLKqJLt0lAM+zJX4KPiyS2BlgoT3ctzrnJ21RECwesyUgO7JC+0nwmQc/v4nhpNahzV/mVOLL0kJ2RZkBQ"}}, "unsigned": {"age_ts": 1570042192394}}eQw$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "287", "stream_ordering": 1957}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 43"}, "depth": 51, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042191878, "hashes": {"sha256": "xi1SOyRA9wRxYDmrOVmYGHWT1LTEFWoAu8fcyYb5rUE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5TblCmrzymlZmRrP3YXAIXWz1FSVaLw+PQXUtcXY6IxY5ktu3CYgwJWp7Riz7CL7hpXeB9vc4UUdeXN5gNVjBw"}}, "unsigned": {"age_ts": 1570042191878}}  u_!eQw$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "294", "stream_ordering": 1964}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 50"}, "depth": 58, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042195618, "hashes": {"sha256": "IwZA3t2phXdrIL2NxSHP8GZvXBlTVNQlzOJCSII68Q0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VYHTL9oPG5+Z/7rjZIU+NMntWfpILsqvkcry2JAn0AJNXVv/86FDmew3dB2fFpCMzc6xEg1PDkTVxKTKlpAtDw"}}, "unsigned": {"age_ts": 1570042195618}} eQw$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "293", "stream_ordering": 1963}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 49"}, "depth": 57, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042194936, "hashes": {"sha256": "ZUgrEoTlI3yd7pH0f/QVcgOqYSKyVATIX2vF+c86ZOg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HoB5CHapV4IQoAUkQbPxO/zZXVbKqHvP6TuFFnEkumE9hqs+VHcdxsqmnUHofhuAfrrW8xdSkMJ4cdlFis36Cg"}}, "unsigned": {"age_ts": 1570042194936}}eQw$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "292", "stream_ordering": 1962}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 48", "msgtype": "m.text"}, "depth": 56, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042194378, "hashes": {"sha256": "SGGYutfIAQ8Ez7gKmORHlALNDhTeQU0DRVazzhtCznY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VCO7SDDRkObnw5zNZUecHRKM7UxgywKad5FdbbiWENCOHLwpH785qcohS6SUMcUSuW8cqD45fJOeYkts0sKFAA"}}, "unsigned": {"age_ts": 1570042194378}}eQw$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 375, "txn_id": "291", "stream_ordering": 1961}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0"], "prev_events": ["$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ"], "type": "m.room.message", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-357:localhost:8800", "content": {"body": "Message 47", "msgtype": "m.text"}, "depth": 55, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042193828, "hashes": {"sha256": "+1t9jdJLbQt/iPZT0yCvcCaZfkomDQ6l3s7Qvn+eqRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LXZGR6JSRFYRenMQiEqMAT8l8SvQzyF34ayMSeJ7UO8+ec+WxCN6m/ggusfMT2NXlTyu8fVVVIEdBlAfxLoIDg"}}, "unsigned": {"age_ts": 1570042193828}} ,NC 8 - { " p  e ZOD9.|#qf VLeL$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwsha256:l-^[X^yW~+w|VKeL$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxssha256jiy1GV.]H/_-Цo js VJeL$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7ssha256&w(Ea>]6]KnNƌ ûVIeL$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wsha256G׌np7(>Y㧐p|VHeL$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzcsha256("zl 鋱'n "9C/7VGeL$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIsha256v("LW}ox1EȢVFeL$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czyssha256ÅK #a/REHssGDR+VEeL$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVIsha256\Iꌚ/=j_GcϡU6.|%RVDeL$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4csha256*Zۏ? : e7EAuԆE)LvV?eL$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwEsha256BFZ͒#?~>kSd"u;gi7V>eL$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48sha256t@40!3R8x#V=eL$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8sha256 bSZ5_:Fl2ܲ*nࠩzV<eL$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeAsha256!B7ĖVZboZYAdV;eL$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUsha256XW4c>;KK%뎿AާV:eL$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Qsha256sqp&s:#lr*:VPTV9eL$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeIsha256j歕юoH֖\2kmq V8eL$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkIsha256ĉEt{}4^]1/1mWbI#TLvL;;V4eL$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEsha256޲̶6øJK)z'5FV3eL$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwsha256}nrtN`vN~)k zKj V2eL$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKAsha2563zFd}qdUdso gygBuLV1eL$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwsha256׹l". L TV FV0eL$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwsha2564F[L.銞$nX7LV/eL$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcsha256/ô&Q8EFU>м0*sX0:.jV.eL$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUsha2567= 1qa`%I~QN#ܑpV-eL$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqksha256{\g+XcREgZV,eL$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYsha2568S9~ ؉U̗Lw!UA_T6V+eL$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUsha256&u=9?k &5~,V*eL$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94sha256C$`WP "&B\?6rQ:GV)eL$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQsha256qXR, ,ib~[ĭVV(eL$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvAsha256sCvt`HE䕉2n֒L>V'eL$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9osha256Y^/z5Yf5Ww&q^ QTV&eL$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qsha256)iX VBP oV%eL$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodwsha256=O^㭷? RkPV$eL$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMsha256G2 5.Tԋ1kr)<3V#eL$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgsha256iAwh""6"[JߦqLV"eL$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxAsha256(%*N4377MrC H V!eL$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQsha256y֮l{#*Ԙs֤ r `D  !i%eQa_$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1968}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-360:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042201573, "hashes": {"sha256": "Yu/Lan1vGtpzBXrOpL6HbyOOo5xYWOYI9iUuVhDREmM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OUpKGZATq4H4kVWrvCGSfvD11iNjN3Iv3GpaZE4U91NZ9PTHqwockYXwYpMfh0WB0cITGzIvrYtAghGQbV14DQ"}}, "unsigned": {"age_ts": 1570042201573}}$eQa?$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 374, "stream_ordering": 1967}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag"], "prev_events": ["$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-358:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-358", "avatar_url": null}, "depth": 61, "prev_state": [], "state_key": "@anon-20191002_181700-358:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042198492, "hashes": {"sha256": "28nBn3Epg7UPFfkTipAk0YN3G8/6wABe8MJcMd8JEj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lJrfL246BvpyKqdp11mv33kPxjPVRjo/qt1Oh7/Q53CXb3FDujYzqxT8MKjqZWFapn/1UgdjarEJpXtQAWqoDg"}}, "unsigned": {"age_ts": 1570042198492, "replaces_state": "$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA"}}#eQa?$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 376, "stream_ordering": 1966}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag"], "prev_events": ["$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-359:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-359", "avatar_url": null}, "depth": 60, "prev_state": [], "state_key": "@anon-20191002_181700-359:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042197197, "hashes": {"sha256": "5BJvNp+poVPow7WDdhvKehDENppr0qRfRi42MQwtjMc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j5bmVwWyMkz+KfMawGjuNfEYZEGgtVwPadNyw7P0yZwV/ypLddQwe6B04kQ20Gt+KjOcFpTNwhGjmrt2e0QcCA"}}, "unsigned": {"age_ts": 1570042197197, "replaces_state": "$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c"}}["eQaC$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA!bNSXSTadOMhIrYpMzH:localhost:8800{"token_id": 374, "stream_ordering": 1965}{"auth_events": ["$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ", "$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0", "$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE"], "prev_events": ["$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ"], "type": "m.room.member", "room_id": "!bNSXSTadOMhIrYpMzH:localhost:8800", "sender": "@anon-20191002_181700-358:localhost:8800", "content": {"membership": "leave"}, "depth": 59, "prev_state": [], "state_key": "@anon-20191002_181700-358:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042196153, "hashes": {"sha256": "viDIHUI9UojBhMdVvRTUz89bFNtC7F2HGE2wvz7FQBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wyBRXzIvruvzG7FDWu+fPmswMl/pbGh95zvaS6IVAKgiOaykPgELOx3qV67i5hUHQPGJFvYOrKMyWS9WOOnZCA"}}, "unsigned": {"age_ts": 1570042196153, "replaces_state": "$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE"}} a} { y w u sqomkigeca~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800~~eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~}eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~|eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~{eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~zeeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~yeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800~xeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~weeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~veeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~ueeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~teeQ$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~seeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~reeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~qeeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~peeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800~oeeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~neeQ$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~meeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~leeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~keeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~jeeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800~ieeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800~heeQ$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800~geeQ$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800 W a 5U( t P # o B Hg: Y-yLk> >  ^1}P#zM oD j ] 0  } ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800 +Q !uqIEMXzdeNeXdJmuwh:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ,Q!ubmTdQFAhrhZkGULDx:localhost:8800  ,Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ ~,Q!ubmTdQFAhrhZkGULDx:localhost:8800 } }+Q !ubmTdQFAhrhZkGULDx:localhost:8800 | |,Q!uSBqTezaFcMnlowsEf:localhost:8800   ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800 ,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800,Q!uSBqTezaFcMnlowsEf:localhost:8800+Q !uSBqTezaFcMnlowsEf:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uJtKGXTNdEnCPNOGDx:localhost:8800,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uJtKGXTNdEnCPNOGDx:localhost:8800+Q !uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!tkajvIKHoOMWGsReBs:localhost:8800,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!ulbQzxdPXzuvNoqqgU:localhost:8800,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !uPxXJHJyFQwvpQLZNs:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 +Q !vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vAUAIZrCnHTeMGeNuw:localhost:8800gg,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ff,Q!vAUAIZrCnHTeMGeNuw:localhost:8800ee,Q!vAUAIZrCnHTeMGeNuw:localhost:8800dd,Q!uGpSboYkgxVNOqNeUG:localhost:8800 ,Q!uPxXJHJyFQwvpQLZNs:localhost:8800 +Q !ulbQzxdPXzuvNoqqgU:localhost:8800,Q!vAUAIZrCnHTeMGeNuw:localhost:8800cc+Q !vAUAIZrCnHTeMGeNuw:localhost:8800bb*Q!uxKymrHZeXRYCZwekU:localhost:8800CC*Q!uxKymrHZeXRYCZwekU:localhost:8800BB*Q!uxKymrHZeXRYCZwekU:localhost:8800AA*Q!uxKymrHZeXRYCZwekU:localhost:8800@@)Q !uxKymrHZeXRYCZwekU:localhost:8800??,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800,Q!utJsNQubeIXvcTKGpx:localhost:8800+Q !utJsNQubeIXvcTKGpx:localhost:8800,Q!uqIEMXzdeNeXdJmuwh:localhost:8800  ,Q!uqIEMXzdeNeXdJmuwh:localhost:8800   El:r@!xGj8r@ x F M ~ L  Y S ! S Y ' ` .'f_-41e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 4,1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM d1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E W1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs #1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY ]1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc [1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ L1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw (1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc '1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 y1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00E1e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk>1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-01e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 |1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkl1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQl1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsl1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk@1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bsH1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A b1e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY41e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEA1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUI1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U*1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE;1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5MS1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90+1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2oR1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 I1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo_1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x81e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8p1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE61e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4a1e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTA1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs01e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY`1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao:1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo.0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU<1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E $ G[$H l 5 Y " } F  j 3 W {D h1UyB f/Sw@ d-4S==anon-20191002_181700-432anon-20191002_181700-4324R==anon-20191002_181700-431anon-20191002_181700-4314Q==anon-20191002_181700-430anon-20191002_181700-4304P==anon-20191002_181700-429anon-20191002_181700-4294O==anon-20191002_181700-428anon-20191002_181700-4284N==anon-20191002_181700-427anon-20191002_181700-4274M==anon-20191002_181700-426anon-20191002_181700-4264L==anon-20191002_181700-424anon-20191002_181700-4244K==anon-20191002_181700-425anon-20191002_181700-4254J==anon-20191002_181700-423anon-20191002_181700-4234I==anon-20191002_181700-421anon-20191002_181700-4214H==anon-20191002_181700-422anon-20191002_181700-4224G==anon-20191002_181700-420anon-20191002_181700-4204F==anon-20191002_181700-419anon-20191002_181700-4194E==anon-20191002_181700-417anon-20191002_181700-4174D==anon-20191002_181700-418anon-20191002_181700-4184C==anon-20191002_181700-416anon-20191002_181700-4164B==anon-20191002_181700-414anon-20191002_181700-4144A==anon-20191002_181700-415anon-20191002_181700-4154@==anon-20191002_181700-413anon-20191002_181700-4134?==anon-20191002_181700-411anon-20191002_181700-4114>==anon-20191002_181700-412anon-20191002_181700-4124===anon-20191002_181700-410anon-20191002_181700-4104<==anon-20191002_181700-409anon-20191002_181700-4094;==anon-20191002_181700-408anon-20191002_181700-4084:==anon-20191002_181700-407anon-20191002_181700-40749==anon-20191002_181700-406anon-20191002_181700-40648==anon-20191002_181700-405anon-20191002_181700-40547==anon-20191002_181700-404anon-20191002_181700-40446==anon-20191002_181700-403anon-20191002_181700-40345==anon-20191002_181700-402anon-20191002_181700-40244==anon-20191002_181700-401anon-20191002_181700-40143==anon-20191002_181700-400anon-20191002_181700-40042==anon-20191002_181700-399anon-20191002_181700-39941==anon-20191002_181700-397anon-20191002_181700-39740==anon-20191002_181700-398anon-20191002_181700-3984/==anon-20191002_181700-396anon-20191002_181700-3964.==anon-20191002_181700-395anon-20191002_181700-3954-==anon-20191002_181700-394anon-20191002_181700-3944,==anon-20191002_181700-393anon-20191002_181700-3934+==anon-20191002_181700-392anon-20191002_181700-3924*==anon-20191002_181700-391anon-20191002_181700-3914)==anon-20191002_181700-390anon-20191002_181700-3904(==anon-20191002_181700-389anon-20191002_181700-3894'==anon-20191002_181700-388anon-20191002_181700-3884&==anon-20191002_181700-387anon-20191002_181700-3874%==anon-20191002_181700-386anon-20191002_181700-3864$==anon-20191002_181700-385anon-20191002_181700-3854#==anon-20191002_181700-384anon-20191002_181700-3844"==anon-20191002_181700-383anon-20191002_181700-3834!==anon-20191002_181700-382anon-20191002_181700-3824 ==anon-20191002_181700-381anon-20191002_181700-3814==anon-20191002_181700-380anon-20191002_181700-3804==anon-20191002_181700-379anon-20191002_181700-3794==anon-20191002_181700-378anon-20191002_181700-3784==anon-20191002_181700-377anon-20191002_181700-3774==anon-20191002_181700-375anon-20191002_181700-3754==anon-20191002_181700-376anon-20191002_181700-3764==anon-20191002_181700-374anon-20191002_181700-3744==anon-20191002_181700-372anon-20191002_181700-3724==anon-20191002_181700-373anon-20191002_181700-3734==anon-20191002_181700-371anon-20191002_181700-3714==anon-20191002_181700-370anon-20191002_181700-3704==anon-20191002_181700-369anon-20191002_181700-3694==anon-20191002_181700-368anon-20191002_181700-3684==anon-20191002_181700-367anon-20191002_181700-3674==anon-20191002_181700-365anon-20191002_181700-3654==anon-20191002_181700-366anon-20191002_181700-3664==anon-20191002_181700-363anon-20191002_181700-3634==anon-20191002_181700-364anon-20191002_181700-3644 ==anon-20191002_181700-360anon-20191002_181700-360 X~   |xtplhd`\X5Q]e!TeraguiGoZoeOGFzlI:localhost:8800@anon-20191002_181700-337:localhost:8800$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkwjoin4Q]e!TeraguiGoZoeOGFzlI:localhost:8800@anon-20191002_181700-336:localhost:8800$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gjoin3Q]e!UaitDdkGDcwvRLJSvp:localhost:8800@anon-20191002_181700-333:localhost:8800$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8join2Q]e!dDqNKNFdIjCAwnyaxp:localhost:8800@anon-20191002_181700-332:localhost:8800$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CAjoin1Q]e!kjueCKHmYaYefEEpQY:localhost:8800@anon-20191002_181700-331:localhost:8800$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwjoin0Q]e!nftGLlLhVgzOwOFufp:localhost:8800@anon-20191002_181700-330:localhost:8800$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQjoin/Q]e!raCWVWQGnXbmkexpCN:localhost:8800@anon-20191002_181700-329:localhost:8800$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-kjoin.Q]e!kwJgbtogEzCqYbUXfh:localhost:8800@anon-20191002_181700-328:localhost:8800$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gjoin-Q]e!JZouHBRxCRbcxYJnbn:localhost:8800@anon-20191002_181700-327:localhost:8800$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqgjoin,Q]e!HOPyhZPcKkrvSmDIvX:localhost:8800@anon-20191002_181700-326:localhost:8800$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQjoin+Q]e!EWkoFeckhXlNyjuIEB:localhost:8800@anon-20191002_181700-325:localhost:8800$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9gjoin*Q]e!EWkoFeckhXlNyjuIEB:localhost:8800@anon-20191002_181700-324:localhost:8800$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cjoin)Q]e!utJsNQubeIXvcTKGpx:localhost:8800@anon-20191002_181700-323:localhost:8800$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0join(Q]e!utJsNQubeIXvcTKGpx:localhost:8800@anon-20191002_181700-322:localhost:8800$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4join'Q]e!iTQSCiLqRMDtgXtUdC:localhost:8800@anon-20191002_181700-321:localhost:8800$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mkjoin&Q]e!iTQSCiLqRMDtgXtUdC:localhost:8800@anon-20191002_181700-320:localhost:8800$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUjoin%Q]e!UMFUOnYRvwKwSPkYHB:localhost:8800@anon-20191002_181700-319:localhost:8800$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9Ujoin$Q]e!hZuwenlFDapIPBOyfi:localhost:8800@anon-20191002_181700-318:localhost:8800$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIjoin#Q]e!LvARVIpJZeRQxbKefX:localhost:8800@anon-20191002_181700-317:localhost:8800$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4join"Q]e!SfYtaUhCFosNfHfUVm:localhost:8800@anon-20191002_181700-312:localhost:8800$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648join!Q]e!NPdjmIfsBVIIkvWBzD:localhost:8800@anon-20191002_181700-311:localhost:8800$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwjoin Q]e!beBXQofoOfxNBtzsut:localhost:8800@anon-20191002_181700-311:localhost:8800$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAjoinQ]e!vyCFfUTJKYJSDadFhT:localhost:8800@anon-20191002_181700-311:localhost:8800$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsjoinQ]e!xvblqEscwOtCqJntfF:localhost:8800@anon-20191002_181700-310:localhost:8800$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwjoinQ]e!HhYREfUiJTpjWmOuPF:localhost:8800@anon-20191002_181700-308:localhost:8800$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkjoinQ]e!HhYREfUiJTpjWmOuPF:localhost:8800@anon-20191002_181700-307:localhost:8800$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUjoinQ]e!nvclDopiBLEOKBIheH:localhost:8800@anon-20191002_181700-306:localhost:8800$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYjointQ]O!YgaGPEraeLCqHQirin:localhost:8800@anon-20191002_181700-305:localhost:8800$157004188093UtRbN:localhost:8800joinQ]e!aVxOoyiLLnxmzgLJat:localhost:8800@anon-20191002_181700-305:localhost:8800$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIjointQ]O!fuHSJcznvGQnoYoLPW:localhost:8800@anon-20191002_181700-304:localhost:8800$157004186786RVgKA:localhost:8800joinQ]e!hYPSaMPGsLnvYSmwhg:localhost:8800@anon-20191002_181700-304:localhost:8800$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usjoin F8 m< xG R ! ] , ~ M X'c2n= yHS"^-i8 h 7  s B  tC 0]@anon-20191002_181700-394:localhost:88000]@anon-20191002_181700-393:localhost:88000]@anon-20191002_181700-392:localhost:88000]@anon-20191002_181700-391:localhost:88000]@anon-20191002_181700-390:localhost:88000]@anon-20191002_181700-389:localhost:88000]@anon-20191002_181700-388:localhost:88000]@anon-20191002_181700-387:localhost:88000]@anon-20191002_181700-386:localhost:88000]@anon-20191002_181700-385:localhost:88000]@anon-20191002_181700-384:localhost:88000]@anon-20191002_181700-383:localhost:88000]@anon-20191002_181700-382:localhost:88000]@anon-20191002_181700-381:localhost:88000]@anon-20191002_181700-380:localhost:88000]@anon-20191002_181700-379:localhost:88000]@anon-20191002_181700-378:localhost:88000]@anon-20191002_181700-377:localhost:88000]@anon-20191002_181700-375:localhost:88000]@anon-20191002_181700-376:localhost:88000]@anon-20191002_181700-374:localhost:88000]@anon-20191002_181700-372:localhost:88000]@anon-20191002_181700-373:localhost:88000]@anon-20191002_181700-371:localhost:88000]@anon-20191002_181700-370:localhost:88000]@anon-20191002_181700-369:localhost:88000]@anon-20191002_181700-368:localhost:88000]@anon-20191002_181700-367:localhost:88000]@anon-20191002_181700-365:localhost:88000]@anon-20191002_181700-366:localhost:88000]@anon-20191002_181700-363:localhost:88000]@anon-20191002_181700-364:localhost:88000]@anon-20191002_181700-360:localhost:88000]@anon-20191002_181700-361:localhost:88000]@anon-20191002_181700-362:localhost:88000]@anon-20191002_181700-359:localhost:88000]@anon-20191002_181700-357:localhost:88000]@anon-20191002_181700-358:localhost:88000]@anon-20191002_181700-356:localhost:88000]@anon-20191002_181700-354:localhost:88000]@anon-20191002_181700-334:localhost:88000]@anon-20191002_181700-405:localhost:88000]@anon-20191002_181700-404:localhost:88000]@anon-20191002_181700-403:localhost:88000]@anon-20191002_181700-402:localhost:88000]@anon-20191002_181700-401:localhost:88000]@anon-20191002_181700-400:localhost:88000]@anon-20191002_181700-399:localhost:88000]@anon-20191002_181700-397:localhost:88000]@anon-20191002_181700-398:localhost:88000]@anon-20191002_181700-396:localhost:88000]@anon-20191002_181700-395:localhost:88000]@anon-20191002_181700-355:localhost:88000]@anon-20191002_181700-353:localhost:88000]@anon-20191002_181700-352:localhost:88000]@anon-20191002_181700-350:localhost:88000]@anon-20191002_181700-351:localhost:88000]@anon-20191002_181700-349:localhost:88000]@anon-20191002_181700-348:localhost:88000]@anon-20191002_181700-346:localhost:88000]@anon-20191002_181700-347:localhost:8800b0]@anon-20191002_181700-345:localhost:88000]@anon-20191002_181700-343:localhost:88000]@anon-20191002_181700-342:localhost:88000]@anon-20191002_181700-341:localhost:88000]@anon-20191002_181700-339:localhost:88000]@anon-20191002_181700-338:localhost:88000]@anon-20191002_181700-337:localhost:88000]@anon-20191002_181700-336:localhost:88000]@anon-20191002_181700-335:localhost:8800  )eQa$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1972}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "type": "m.room.history_visibility", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042204846, "hashes": {"sha256": "VJxFq7yVigLsogq7rWP6oMfKJJiPV+YWYHB4zODdXmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QUIZcAxSR7iIEdIv97EuI0LiYijly9M2UQaBwDOOLSm6Uq7dCrjQsx/vIW2b52ry8dibyTjCM4OM/JBrycy9Aw"}}, "unsigned": {"age_ts": 1570042204846}}t(eQau$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1971}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o"], "type": "m.room.join_rules", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042204148, "hashes": {"sha256": "Mw8EJ5g3V0uT2KCRVSE8UJVaUCRQGvlPvhPr0dcSWME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "de1nQN+MyJ50n/mOv+AXnwXz+RaauqtWP4Lg9a+akzR3ewXyQpmHg9HpFItmOwRR4oPLkjw+DT5RJaxc8CZoAA"}}, "unsigned": {"age_ts": 1570042204148}}k'eQac$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1970}{"auth_events": ["$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "type": "m.room.power_levels", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"users": {"@anon-20191002_181700-360:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042203196, "hashes": {"sha256": "QlT+liNsD5neLEKkNlT+eBCpojiANy51OlrxyMa289M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OpaylwLJRrR7MtsqpUBGTBGBhkYO/z506clcuniy1ytQ7kuTEi+uJallCiqZ/3xWauolpSYEAhoIsDSdYeRUDw"}}, "unsigned": {"age_ts": 1570042203196}}v&eQay$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1969}{"auth_events": ["$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw"], "prev_events": ["$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-360", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-360:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042202483, "hashes": {"sha256": "mDqNNUckRubFvKiFCgndhmr+UwcWiC23eGgz/DjOA1k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bchHZuUztVgjhFkLAvmnTxFxMv2nckr39amAy7rcdkuqYW2j5+WnUltsBNKOzeyq08bOgKXFqvZmVM3kWVzUBg"}}, "unsigned": {"age_ts": 1570042202483}}  3 3   JIToS ^%*R[ 1 6eQ']$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800invitem5eQ? $qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibilitye4eQ/ $sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rulesg3eQ3 $7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels 2eQ']$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800joina1eQ' $KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create /eQ']$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800joinm,eQ? $if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibilitya&eQ' $PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800m.room.create %eQ']$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-358:localhost:8800join $eQ']$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-359:localhost:8800joinm!eQ? $6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!bNSXSTadOMhIrYpMzH:localhost:8800m.room.history_visibilityeeQ/ $nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800m.room.join_rulesgeQ3 $WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800m.room.power_levels eQ']$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.member@anon-20191002_181700-357:localhost:8800joinaeQ' $IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800m.room.create eQ']$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-355:localhost:8800join eQ']$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-356:localhost:8800joinmeQ? $gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.history_visibilityeeQ/ $wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.join_rules eQ']$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.member@anon-20191002_181700-354:localhost:8800join 0eQ']$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800joingeQ3 $oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI!TlJCaYlCkOOVzFDlLx:localhost:8800m.room.power_levelse)eQ/ $0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rulesg(eQ3 $xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels 'eQ']$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-360:localhost:8800join !.1 4  ) 2 Zir  Jva"eQ' $zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800m.room.create !eQ']$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800m eQ? $qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800m.room.history_visibilityeeQ/ $WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800m.room.join_rulesgeQ3 $GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800m.room.power_levels eQ']$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800aeQ' $8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800m.room.createmeQ? $RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibilityeeQ/ $b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rulesgeQ3 $ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels eQ']$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800aeQ' $nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create eQ']$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800meQ? $x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibilityeeQ/ $MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rulesgeQ3 $d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels eQ']$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800aeQ' $FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create eQ']$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800meQ? $qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibilityeeQ/ $sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rulesg eQ3 $7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels eQ']$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800a eQ' $KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create eQ']$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800 eQ']$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800 eQ']$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800 eQ']$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800meQ? $if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility eQ']$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800meQ? $7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibilityeeQ/ $0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800m.room.join_rulesgeQ3 $xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800m.room.power_levels 1`p 0 @ P `  p 0@P`p 0@PMF]Q@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800ME]Q@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800MD]Q@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800MC]Q@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800MB]Q@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800MA]Q@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800M@]Q@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800M?]Q@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800M>]Q@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800M=]Q@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800M<]Q@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800M;]Q@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800M:]Q@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800M9]Q@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800M8]Q@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800M7]Q@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800M5]Q@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800M6]Q@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800M3]Q@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800M2]Q@anon-20191002_181700-367:localhost:8800!aknLNLxfChlLvFYhkJ:localhost:8800M1]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800M0]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800M/]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800M.]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800M,]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800M+]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800M*]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800M)]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800M(]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800M']Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800M&]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800M%]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800M$]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800M#]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800M"]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800M!]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800M ]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800M]Q@anon-20191002_181700-345:localhost:8800!aZwMKYDXJRlSKjQNWM:localhost:8800M]Q@anon-20191002_181700-343:localhost:8800!XiwGxQKwjgutEClKUy:localhost:8829M]Q@anon-20191002_181700-344:localhost:8829!XiwGxQKwjgutEClKUy:localhost:8829M]Q@anon-20191002_181700-342:localhost:8800!mTlCLZQCmfDuQsJxxp:localhost:8800M]Q@anon-20191002_181700-341:localhost:8800!PEcOacvKaBKpXjytEF:localhost:8800M]Q@anon-20191002_181700-339:localhost:8800!NajQnqYmGyTjxhFYar:localhost:8829M]Q@anon-20191002_181700-340:localhost:8829!NajQnqYmGyTjxhFYar:localhost:8829M]Q@anon-20191002_181700-338:localhost:8800!sJnuQYOyruhUpXDsLY:localhost:8800M]Q@anon-20191002_181700-337:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800M]Q@anon-20191002_181700-336:localhost:8800!TeraguiGoZoeOGFzlI:localhost:8800M]Q@anon-20191002_181700-333:localhost:8800!UaitDdkGDcwvRLJSvp:localhost:8800M-]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800 vP X  k ! |2CT ev!Ke)Q ]$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHYm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Je)Q ]$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwEm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ie)Q ]$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48m.room.message!SrMQpDMFREKRMELwbL:localhost:8800m m @anon-20191002_181700-360:localhost:8800!He)Q ]$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8m.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ge)Q ]$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeAm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Fe)Q ]$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxUm.room.message!SrMQpDMFREKRMELwbL:localhost:8800m)m4@anon-20191002_181700-360:localhost:8800!Ee)Q ]$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Qm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mfml@anon-20191002_181700-360:localhost:8800!De)Q ]$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ce)Q ]$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Be)Q ]$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Ae)Q ]$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyUm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!@e)Q ]$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzsm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!?e)Q ]$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPEm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!>e)Q ]$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mBmR@anon-20191002_181700-360:localhost:8800!=e)Q ]$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKAm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mnmw@anon-20191002_181700-360:localhost:8800!<e)Q ] $w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 mm@anon-20191002_181700-360:localhost:8800!;e)Q ] $09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 mm@anon-20191002_181700-360:localhost:8800!:e)Q ] $L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqcm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 m<mg@anon-20191002_181700-360:localhost:8800 9e'Q ] $mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUm.room.member!SrMQpDMFREKRMELwbL:localhost:8800 mm@anon-20191002_181700-362:localhost:8800 8e'Q ] $oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqkm.room.member!SrMQpDMFREKRMELwbL:localhost:8800 mZm@anon-20191002_181700-361:localhost:8800 7e'Q ]$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYm.room.member!SrMQpDMFREKRMELwbL:localhost:8800mm߉@anon-20191002_181700-360:localhost:8800,6e?Q ]$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAUm.room.history_visibility!SrMQpDMFREKRMELwbL:localhost:8800mmܜ@anon-20191002_181700-360:localhost:8800 5e'Q ]$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94m.room.member!SrMQpDMFREKRMELwbL:localhost:8800mmM@anon-20191002_181700-361:localhost:8800,4e?Q ]$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQm.room.history_visibility!SrMQpDMFREKRMELwbL:localhost:8800mҮmU@anon-20191002_181700-360:localhost:8800  &[,eQa7$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1975}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-362", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-362:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042208019, "hashes": {"sha256": "LsEn1uIurb26cLdbsn53QYEWKuV+Zm+nGb5aeAIqp8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gBUaU+NvK5A54COUNonKpNDPJDd0/5w9Cih0h3+OTlqhW9ovaRimXCDgJU7wHz2mETWUcLmI9U7ZqGvKv9zIBQ"}}, "unsigned": {"age_ts": 1570042208019, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-360:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-360:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-360", "avatar_url": null}, "sender": "@anon-20191002_181700-360:localhost:8800"}]}}G+eQa$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "stream_ordering": 1974}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94"], "type": "m.room.history_visibility", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042206972, "hashes": {"sha256": "ntogINXoc1ZVUjw7AwodniON9G846uaQrQzn4sNYBKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rNHnqeBby4v2E6WoY7k0vwywvktHvDi/d5tFPfgYDUY2iGqMD2QaJbo6SBK73aRyzPXaG8w2IZXnoiRtdUCvCg"}}, "unsigned": {"age_ts": 1570042206972, "replaces_state": "$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ"}}V*eQa9$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 378, "stream_ordering": 1973}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "prev_events": ["$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-361:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-361", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-361:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042206199, "hashes": {"sha256": "1h0gEgEJXdd1ZNSiRll97wqkJuEkoEDz1qtI9FL4SoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pjKJeHg/uO2+5f2EDm+DHQgR4tndmfUCdi4snrMaOlDwPcIwEXV2W2t9+GLD+46/YUKuo6H6CDxBCFLUqjUbCg"}}, "unsigned": {"age_ts": 1570042206199}} p@  = :Ckhq&/W(dQ' e!fkvdYkesQOFCAQkzky:localhost:8800m.room.create$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a08Q']ee!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EpQ? e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.history_visibility$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAhQ/ e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.join_rules$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEjQ3 e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.power_levels$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4 Q']e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EdQ' e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.create$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4pQ? e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibility$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4hQ/ e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rules$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYjQ3 e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q Q']e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosdQ' e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw Q']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gpQ? e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibility$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4shQ/ e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rules$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkjQ3 e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI Q']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMd Q' e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg Q']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ksp Q? e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibility$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkh Q/ e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rules$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYj Q3 e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro Q']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEdQ' e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k8Q']ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk8Q']ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY8Q']ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94 Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-362:localhost:8800$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrYQ? ee!SrMQpDMFREKRMELwbL:localhost:8800m.room.history_visibility$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ Q']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94 a} { y w u sqomkigeca~$eeQ$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800~#eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~"eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800~!eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~ eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800~ eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA!SrMQpDMFREKRMELwbL:localhost:8800 XM`8oGuMpH Y 1 l E  _7 } V .  f >   v O 'Y1 jB|T,e='Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800~'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800k'Q!dvZnfJonDkxlrrDXUk:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800F'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800z'Q!csWEXfVEVxdviNvgAd:localhost:88005&Q!cosGKKhHvKaVukBCic:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800&Q!cSUQGmpIsSCBAVTOHo:localhost:8800/'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800m'Q!cOFSwLSkxZECJMvjjZ:localhost:8800l&Q!cHtqiAyCHEAoBIbCmL:localhost:8800R&Q!cHtqiAyCHEAoBIbCmL:localhost:8800Q'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800x'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800j'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800i'Q!ZOwibbprUCQrSJQCrx:localhost:8800f'Q!ZOwibbprUCQrSJQCrx:localhost:8800e'Q!biBIcqnGelHvLnpkOu:localhost:8800`'Q!biBIcqnGelHvLnpkOu:localhost:8800_'Q!anErKtXIsVKEEsrzWM:localhost:8800V'Q!anErKtXIsVKEEsrzWM:localhost:8800U'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800E'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800z'Q!bOSxzttDtclnrWnLov:localhost:8800&'Q!bNSXSTadOMhIrYpMzH:localhost:8800,'Q!bNSXSTadOMhIrYpMzH:localhost:8800+'Q!bNSXSTadOMhIrYpMzH:localhost:8800*'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800f'Q!atnRTMliktaVUhMVID:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:88002'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800&Q!aWvVRVaDflYyyGTOdD:localhost:8800a&Q!aWvVRVaDflYyyGTOdD:localhost:8800`&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:88003&Q!aBCvSXjtZUEPlPGHvY:localhost:8800k'Q!ZvLVbnHjeymRiFIkYr:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800%'Q!ZKPJvrCZHMHPEksYDc:localhost:8800$'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800?'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800  "{0eQu$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "296", "stream_ordering": 1979}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042211554, "hashes": {"sha256": "3IJRuNInxdQ12jNoxN9jTBc5Mxx3lSAN6nsyb1s3iF0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IJi4cRCjSYflcGQ1amyIcp4tbANUPhmkaA7hE9CF78UIU1bbxSDqqKlwdRkLxT5Tqn1r5x5OBWaTqRB3d2qfAQ"}}, "unsigned": {"age_ts": 1570042211554}}/eQu$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "295", "stream_ordering": 1978}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 1", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042210620, "hashes": {"sha256": "j4f23iHoJ84KTPqJMEqpdfdm4VJEBJwupQXtqlK1K44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ntAQ66ZkYesQQFyoWBybU0XUn12BJzMuwoB2NhYHBIIHbGPxDBWVXNB8O721iP4G53Qodz5CK5eHAPooO8J1DQ"}}, "unsigned": {"age_ts": 1570042210620}}.eQa?$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 377, "stream_ordering": 1977}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "prev_events": ["$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-362:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-362", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-362:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042209781, "hashes": {"sha256": "BkJ6X/JrAkKdC+wZpJu8LsMRYBo7mHVdXtXJmJVHbZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1kTcMXVJmVCgjC7Fyzun9L1ZtTdx+ZVMHpBcDkVWQv5LVsVBfZi03DFo/xM3pvptIryEnkJFgh6ShSC337UtBA"}}, "unsigned": {"age_ts": 1570042209781, "replaces_state": "$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY"}}Z-eQaA$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 378, "stream_ordering": 1976}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94"], "prev_events": ["$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-361:localhost:8800", "content": {"membership": "leave"}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-361:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042208858, "hashes": {"sha256": "n1AXgvryVkVZeLu0ibMwtw2x9/rL09ZO5PCBI7m1gts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DntTynea8+GyFlfPVnfNW1m0cRJSHAMUmXgb5NYBi8HGETVAENOWRBKq5SBGRSXEMHmgtmluXYORXtSItjK8DA"}}, "unsigned": {"age_ts": 1570042208858, "replaces_state": "$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94"}} ~z v r n j fb^ZVRNJFeeQ$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800eeQ$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800eeQ$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800eeQ$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800eeQ$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800eeQ$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800eeQ$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800eeQ$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800eeQ$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800eeQ$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc!SrMQpDMFREKRMELwbL:localhost:8800eeQ$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800~eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800 KV(pBvHb4 ~ P " j <  X * r D  ^ 0 xJd6~P"j<^0xJ-]@anon-20191002_181700-444:localhost:8800+[@anon-20191002_181700-37:localhost:8800-]@anon-20191002_181700-379:localhost:8800-]@anon-20191002_181700-378:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-377:localhost:8800-]@anon-20191002_181700-376:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-375:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-374:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-441:localhost:8800-]@anon-20191002_181700-440:localhost:8800-]@anon-20191002_181700-439:localhost:8800-]@anon-20191002_181700-438:localhost:8800-]@anon-20191002_181700-437:localhost:8800-]@anon-20191002_181700-436:localhost:8800-]@anon-20191002_181700-435:localhost:8800-]@anon-20191002_181700-434:localhost:8800-]@anon-20191002_181700-433:localhost:8800-]@anon-20191002_181700-432:localhost:8800-]@anon-20191002_181700-431:localhost:8800-]@anon-20191002_181700-430:localhost:8800-]@anon-20191002_181700-429:localhost:8800-]@anon-20191002_181700-428:localhost:8800-]@anon-20191002_181700-427:localhost:8800-]@anon-20191002_181700-426:localhost:8800-]@anon-20191002_181700-425:localhost:8800-]@anon-20191002_181700-424:localhost:8800-]@anon-20191002_181700-422:localhost:8800-]@anon-20191002_181700-421:localhost:8800-]@anon-20191002_181700-420:localhost:8800-]@anon-20191002_181700-419:localhost:8800-]@anon-20191002_181700-418:localhost:8800-]@anon-20191002_181700-417:localhost:8800-]@anon-20191002_181700-416:localhost:8800-]@anon-20191002_181700-415:localhost:8800-]@anon-20191002_181700-414:localhost:8800-]@anon-20191002_181700-413:localhost:8800-]@anon-20191002_181700-412:localhost:8800-]@anon-20191002_181700-411:localhost:8800-]@anon-20191002_181700-409:localhost:8800-]@anon-20191002_181700-408:localhost:8800-]@anon-20191002_181700-407:localhost:8800-]@anon-20191002_181700-405:localhost:8800-]@anon-20191002_181700-404:localhost:8800-]@anon-20191002_181700-403:localhost:8800-]@anon-20191002_181700-401:localhost:8800-]@anon-20191002_181700-400:localhost:8800+[@anon-20191002_181700-39:localhost:8800-]@anon-20191002_181700-399:localhost:8800-]@anon-20191002_181700-398:localhost:8800-]@anon-20191002_181700-397:localhost:8800-]@anon-20191002_181700-395:localhost:8800-]@anon-20191002_181700-394:localhost:8800-]@anon-20191002_181700-393:localhost:8800-]@anon-20191002_181700-392:localhost:8800-]@anon-20191002_181700-391:localhost:8800-]@anon-20191002_181700-390:localhost:8800+[@anon-20191002_181700-38:localhost:8800-]@anon-20191002_181700-389:localhost:8800-]@anon-20191002_181700-388:localhost:8800-]@anon-20191002_181700-387:localhost:8800-]@anon-20191002_181700-386:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-385:localhost:8800-]@anon-20191002_181700-384:localhost:8800-]@anon-20191002_181700-383:localhost:8800-]@anon-20191002_181700-382:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-381:localhost:8800-]@anon-20191002_181700-380:localhost:8800 $&L r  * N r  (Lp&Jn$HlkeQ%!$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 37keQ%!$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 36keQ%!$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 35keQ%!$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 34keQ%!$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 33keQ%!$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 32keQ%!$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 31keQ%!$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 30keQ%!$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 29keQ%!$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 28keQ%!$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 27keQ%!$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 26keQ%!$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 25keQ%!$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 24keQ%!$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 23keQ%!$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 22k eQ%!$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 21k eQ%!$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 20k eQ%!$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 19k eQ%!$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 18k eQ%!$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 17keQ%!$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 16keQ%!$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 15keQ%!$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 14keQ%!$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 13keQ%!$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 12keQ%!$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 11keQ%!$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 10jeQ%$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 9jeQ%$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 8jeQ%$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 7j~eQ%$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 6j}eQ%$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 5j|eQ%$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 4j{eQ%$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 3jzeQ%$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 2  vb4eQu$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "300", "stream_ordering": 1983}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 6", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042214020, "hashes": {"sha256": "NQnpJsZGs2C+7LRoR3K26bSr8XoFjuAywUzDCcslLj4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zbymagnUCpRSfmChWKabF1zZhq9PzPLzaS9s8FNZxtfe/k5tWLYRG/lulinMsBUAou1TCz/UR3ue7zn7e2ZLCg"}}, "unsigned": {"age_ts": 1570042214020}}3eQu$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "299", "stream_ordering": 1982}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042212930, "hashes": {"sha256": "S7vuqWJwNGUywk6FyCOcL6S5mvuh3bUtqKGY2ic1o9M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ok1YddDUEPmlUWZt/MqlalZ7YNeImryVviXuBl1vnEF0SKCUeJSyBbINGB0Iue0LHebXp/pbvzJ+xKrnqAh0Bw"}}, "unsigned": {"age_ts": 1570042212930}}2eQu$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "298", "stream_ordering": 1981}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042212462, "hashes": {"sha256": "v3TcNMZs0GuYMpf22HB7EtB7n6kW66ZusU3Zq6kh5NY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2H0hbD6oWKvesma2VSPnmxaDDoZyUmtOdLrwodF/J6j0y/8OQkFeNCGjPIpExmJtfWUzwTmWMro0N8e6o6eHAA"}}, "unsigned": {"age_ts": 1570042212462}}1eQu$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "297", "stream_ordering": 1980}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$09Y0pPTCFUb-W_qbTB7wLvgd6YqelyTvwJP-blg3nEw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042212012, "hashes": {"sha256": "QN62v/qPt0NgpUIa84NYEZ9qREVvp5Vyjagt3mTCP14"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a6+PjAbsLMs0Hn2OtxcV6mGwkcTB4Wyu4rLraRH073rc/j5tbArurm8dgxpOj432RQObF9g4vzXU1RCzniHaAg"}}, "unsigned": {"age_ts": 1570042212012}} Nj81p>  w E  } K  Q  W % ] +cUi7[o= uC{I)O#1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Ek1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQi1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU 1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE p1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM 1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0'1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE_1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo /1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw l1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg>1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwO1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI H1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv801e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO411e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk(1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MD1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI_1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc51e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k Q1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ x1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 40e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYi1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0%1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU\1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIL1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ>1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ ^1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY;1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 m Nj81p>  w E  } K  Q  W % ] +cUi7[o= uC{I)O#1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN01e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Ee1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQc1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C01e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828"1e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU 1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE p1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM 1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0'1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE_1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo /1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw l1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg>1e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwO1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI H1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv801e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NM1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO411e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk(1e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7MD1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ 1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI_1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc51e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpc1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k Q1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ x1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 40e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYi1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0%1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU\1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIL1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ>1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ ^1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY;1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 m ? W%> vD|J VQ  $ K ] +j >  v  Qc2 } j8 p  8QpW D  +21e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 .1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w.1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI B1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI v1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4w1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0~1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM)1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs 11e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU<1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE +1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc p1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q 1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQi1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMy1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQp1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90R1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc"1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAP1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcP1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUr1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc?1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc]1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI>1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsg 1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q z d1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw H1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM  1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g %1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo p21e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 21e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E21e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc  vb8eQw$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "304", "stream_ordering": 1987}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 10"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042216105, "hashes": {"sha256": "P8T3fBxkEVnFX5iYYb7CcMbj3CE41B6q1xF/3z/5Z04"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0vqZqZGYCrG2OHYBYXs0G+7WGTLHOBhITNLQT/+ZjYOTf4TQsOdUWnlAqowqmP/QlujVCagWSJB1x/0KliCJBA"}}, "unsigned": {"age_ts": 1570042216105}}7eQu$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "303", "stream_ordering": 1986}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 9", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042215630, "hashes": {"sha256": "GJimq9Hy+OGQUtBisiQI9006E2iooa1iT6BNZvPDh8o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3QV3b8Y1XOwQsSJINSSNEkm8ppUOPybKuM4bcLXY3kcYH8QODAtd0NmgPid/SNkebMMDTI7iF9kuMGX5C7ivCQ"}}, "unsigned": {"age_ts": 1570042215630}}6eQu$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "302", "stream_ordering": 1985}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 8", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042215172, "hashes": {"sha256": "noFPRjAq3TUjL03psHbqhqfvmKl83jqScQMAzUjbQ9g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XbRTm+61rcJduGTzsdGWer9VLd1vTDw1jshSsfXNWXqBz/8ob2FRq69a8NyW2Co1lzmsHn2TglhvZnTkPQs0Dw"}}, "unsigned": {"age_ts": 1570042215172}}5eQu$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "301", "stream_ordering": 1984}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 7"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042214637, "hashes": {"sha256": "wowcBKnVr+VO66If0p2dwfZz+71er1qpqPTxXMkEf4g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rVlK7L+8k6vEhlho5HzVVVQ1hTmzVrvGv/48Djpli5QRSFtX9oJ+44xsmjHdhFMUlf6ty1NClLCWHscfCFTKCA"}}, "unsigned": {"age_ts": 1570042214637}}  u_<eQw$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "308", "stream_ordering": 1991}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 14", "msgtype": "m.text"}, "depth": 24, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042217971, "hashes": {"sha256": "XK+noAp+rDrH2l0ZMqFF4w5wy5yCcpW5m5vZ5uGd/so"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pufffkJxXvo5JMNilWGPeZcBLU6qkv+1l+5uVNK2zVyFHcj8701ok9xprLLJY03GVIHYkj7F68vZxGcvRXjcDQ"}}, "unsigned": {"age_ts": 1570042217971}};eQw$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "307", "stream_ordering": 1990}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 13"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042217513, "hashes": {"sha256": "KyAN/T29la5GR2W3peE3aoZP7i/s7duKcTU8RzSB4wY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wf9JhrDVWzDJP6OEDBme4lELExYx5UtvVaAMJDpaX/BIzMlH/7VLgcOP2UniQdMg+iJyolvSRtnbB+TskPFmAQ"}}, "unsigned": {"age_ts": 1570042217513}}:eQw$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "306", "stream_ordering": 1989}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 12"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042217062, "hashes": {"sha256": "yE3nNeYT0NmuoGlaHuY+OSn90tajg1uH26q/Fa+vJ3E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "leM/vT7Cz8oSjbrHqsWaiDMJLnxM4hFpne8Ho6nlikhMReqPdRLQkFcb3AaqjWpOL47ekuRH0Y5lm44egmJ8BQ"}}, "unsigned": {"age_ts": 1570042217062}}9eQw$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "305", "stream_ordering": 1988}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 11"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042216580, "hashes": {"sha256": "nN6tQFoWGDu+msiCBs9Od+spemEUHksfih9Am6G/a1Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hI2QjUe6+nWSTXq8LJEpWg1nBtcFkG2GII0OyGwtXUS1dpnlrPjXeOmaelx5wbUV89jdqZ/Uw+zVdkZf0rohAw"}}, "unsigned": {"age_ts": 1570042216580}} ~z v r n j fb^ZVRNJF9eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:88008eeQ$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:88007eeQ$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:88006eeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:88005eeQ$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:88004eeQ$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:88003eeQ$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:88002eeQ$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:88001eeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:88000eeQ$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:8800/eeQ$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800.eeQ$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800-eeQ$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800,eeQ$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800+eeQ$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800*eeQ$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800)eeQ$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800(eeQ$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800'eeQ$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800&eeQ$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800%eeQ$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800$eeQ$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc!SrMQpDMFREKRMELwbL:localhost:8800#eeQ$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM!SrMQpDMFREKRMELwbL:localhost:8800"eeQ$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800!eeQ$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800eeQ$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo!SrMQpDMFREKRMELwbL:localhost:8800eeQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800eeQ$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs!SrMQpDMFREKRMELwbL:localhost:8800  u_@eQw$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "312", "stream_ordering": 1995}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 18"}, "depth": 28, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042220722, "hashes": {"sha256": "vMNm2ZpkPg2CRbqy5z3ia0XCpSwiSxMsqVzgK4tnpms"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/3myc4T3KUugASeWRZVHFJzZ/pYwCzZIrvjUQ9QnmGl2DdNPpmO8ipulr2dkuCFP9a36SlO1lWJ9G7roTV0tBQ"}}, "unsigned": {"age_ts": 1570042220722}}?eQw$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "311", "stream_ordering": 1994}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 17"}, "depth": 27, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042220172, "hashes": {"sha256": "69bWv3WDEGMD/4AscAdZ2cwJj7qkBJfXNcOJU3PkIwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VygPhzy81JONfpsp5uH/Fcf+ztHruv8O0P+if553BYmgy32s6MjWS5w3RjASRPwdEfQTCxLd2NJXeWC6rWfRAQ"}}, "unsigned": {"age_ts": 1570042220172}}>eQw$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "310", "stream_ordering": 1993}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 16"}, "depth": 26, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042219722, "hashes": {"sha256": "Vp4suxl+Tf/85fRAPozpCxOGH/9JtoKtaX3mm9u7c94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UdSTG9zRChkXZg+P4ZGyW7lHLjnCr2PdVT3bYD7VMiJmK1liEEtqL9jeTicLhPNTml/xvrMaYos/uqfl305GBA"}}, "unsigned": {"age_ts": 1570042219722}}=eQw$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "309", "stream_ordering": 1992}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 15"}, "depth": 25, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042218396, "hashes": {"sha256": "mkm1M/t/grYNb/mqeG1DKkuvTqo3RdYdUcWZYH3hSpA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3a/A1slWrPd3wo5IwTrkck/eV6Ppov5Ugi3eg3J/qQUskO3g2CaVUuv/gIbxAYZRtxDnY/6vrl+kAJyC6wi/Cw"}}, "unsigned": {"age_ts": 1570042218396}} Ij18p>  v D  | J  P  W % ] +ci7%o= uCW|JQ1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU y1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE M1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs 61e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs 51e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo &1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0a1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 L1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkf1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUG1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s]1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I 1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y 1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg %1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4a1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw 1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg $1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ ~1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brod1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI 1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIl1e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qr1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY81e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk &1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk %1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y |1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU 1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqI1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8'1e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcb1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk 1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY #1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs Jj8+%p> v D  |] J  P  V $ | ] +c2Wj8p> JvD1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0R1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs/1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI(1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 Z1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo81e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndct1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg F1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw 1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg(1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU 1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcu1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM B1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkI1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y;1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE=1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwV1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkEE1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY-1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYg1e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Ei1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 k1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hod1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ(1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 @1e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwt1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4n1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ*1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE  u_DeQw$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "316", "stream_ordering": 1999}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 22", "msgtype": "m.text"}, "depth": 32, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042222964, "hashes": {"sha256": "y4l+0ka61MP1MpE1jygmTYVPrWXJ5jQFa8qntx9Ltuk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twWNxHxSrjOb20YslHc1dQzjW0F3sgti+f95WVECDFYJsVp40+4GJDSJGcsK5t6OK8vwHAPWy3/CttDWRsQxBw"}}, "unsigned": {"age_ts": 1570042222964}}CeQw$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "315", "stream_ordering": 1998}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 21"}, "depth": 31, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042222464, "hashes": {"sha256": "oaA9MLceeuwquFWhho90C/pBO0crXDFw0vFIUtDYmAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q9Fawu9Fw6V2aq8RVfULqJPQ0RJ8p1KCZM8EPDPenfcWMLJcvJ9wUT0QZyyHFgrVFexPgjjNe9Hbj5Zeu8QLCw"}}, "unsigned": {"age_ts": 1570042222464}}BeQw$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "314", "stream_ordering": 1997}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 20"}, "depth": 30, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042221998, "hashes": {"sha256": "twa8zZE5WZfXuDs9IT/0YpdKnw7HlYkO4BELki/+UuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mxfrcDPr/2ujBT9x3JWpVpbK+h8U0/QN0xmo/xZVaUXOzNGN5gv5YhNBwfYZLee/TuqfGL9etSMzYJ3UOdMaBA"}}, "unsigned": {"age_ts": 1570042221998}}AeQw$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "313", "stream_ordering": 1996}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 19", "msgtype": "m.text"}, "depth": 29, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042221371, "hashes": {"sha256": "wC3s+F5ri4BSk+wS1JiEbYoc/Ou3UOhPYJJsyras39s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hDmr/68VcQ/fENGLN9pjGJBYAyQeGhIP++DCU+TgbVJ5hHopoTJp2z6ySzKKNH5BmekecaVnZW8/Wp0CyQu8Dw"}}, "unsigned": {"age_ts": 1570042221371}} [ l " } 3 DU fw-!ce)Q ]4$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwm.room.message!SrMQpDMFREKRMELwbL:localhost:88004mCmC@anon-20191002_181700-360:localhost:8800!be)Q ]3$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYm.room.message!SrMQpDMFREKRMELwbL:localhost:88003mAmA@anon-20191002_181700-360:localhost:8800!ae)Q ]2$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8m.room.message!SrMQpDMFREKRMELwbL:localhost:88002m?m?@anon-20191002_181700-360:localhost:8800!`e)Q ]1$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQm.room.message!SrMQpDMFREKRMELwbL:localhost:88001m=}m=@anon-20191002_181700-360:localhost:8800!_e)Q ]0$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWAm.room.message!SrMQpDMFREKRMELwbL:localhost:88000m;pm;{@anon-20191002_181700-360:localhost:8800!^e)Q ]/$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vcm.room.message!SrMQpDMFREKRMELwbL:localhost:8800/m9m9@anon-20191002_181700-360:localhost:8800!]e)Q ].$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMm.room.message!SrMQpDMFREKRMELwbL:localhost:8800.m8m8 @anon-20191002_181700-360:localhost:8800!\e)Q ]-$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8m.room.message!SrMQpDMFREKRMELwbL:localhost:8800-m5m6O@anon-20191002_181700-360:localhost:8800![e)Q ],$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800,m2m2@anon-20191002_181700-360:localhost:8800!Ze)Q ]+$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQm.room.message!SrMQpDMFREKRMELwbL:localhost:8800+m1?m1M@anon-20191002_181700-360:localhost:8800!Ye)Q ]*$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNom.room.message!SrMQpDMFREKRMELwbL:localhost:8800*m/+m/5@anon-20191002_181700-360:localhost:8800!Xe)Q ])$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94m.room.message!SrMQpDMFREKRMELwbL:localhost:8800)m-5m-<@anon-20191002_181700-360:localhost:8800!We)Q ]($Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwm.room.message!SrMQpDMFREKRMELwbL:localhost:8800(m*m*@anon-20191002_181700-360:localhost:8800!Ve)Q ]'$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxsm.room.message!SrMQpDMFREKRMELwbL:localhost:8800'm(m(@anon-20191002_181700-360:localhost:8800!Ue)Q ]&$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7sm.room.message!SrMQpDMFREKRMELwbL:localhost:8800&m&m&@anon-20191002_181700-360:localhost:8800!Te)Q ]%$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wm.room.message!SrMQpDMFREKRMELwbL:localhost:8800%m$m$%@anon-20191002_181700-360:localhost:8800!Se)Q ]$$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzcm.room.message!SrMQpDMFREKRMELwbL:localhost:8800$m"_m"h@anon-20191002_181700-360:localhost:8800!Re)Q ]#$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800#memj@anon-20191002_181700-360:localhost:8800!Qe)Q ]"$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czysm.room.message!SrMQpDMFREKRMELwbL:localhost:8800"mcmj@anon-20191002_181700-360:localhost:8800!Pe)Q ]!$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVIm.room.message!SrMQpDMFREKRMELwbL:localhost:8800!mhmt@anon-20191002_181700-360:localhost:8800!Oe)Q ] $E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4cm.room.message!SrMQpDMFREKRMELwbL:localhost:8800 mtm@anon-20191002_181700-360:localhost:8800!Ne)Q ]$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktUm.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Me)Q ]$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeom.room.message!SrMQpDMFREKRMELwbL:localhost:8800mm@anon-20191002_181700-360:localhost:8800!Le)Q ]$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEgm.room.message!SrMQpDMFREKRMELwbL:localhost:8800m;mA@anon-20191002_181700-360:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XHP@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@#K"J!I!H!G FEDCBA@?>=<;:987654 3 2 1 0 / .-,+*)('&%$#"!      B~A}@|?{?z>y=x<w;v:u:t9s8r7q6p5o5n4m3l2k1j0i0h0g0f0e0d0c0b0a0`0_0^0]0\0[0Z/Y.X-W,V+U+T*S)R(Q'P&O&N%M$L~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*~)}(|'{&z%y$x#w"v!u tsrqqq  u_HeQw$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "320", "stream_ordering": 2003}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 26"}, "depth": 36, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042225247, "hashes": {"sha256": "KFxzGe+PagxzOivXw6wINsixpfKXbkgqq2T9smS16vw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aza/XCCPQoKwlytU1oLXLR18TDInNnrBwyPUU1Gn5KfqpP6nJR/t6tlJXKke6N1K3NynAbV4rGyxVDVaqOIQBQ"}}, "unsigned": {"age_ts": 1570042225247}}GeQw$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "319", "stream_ordering": 2002}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 25"}, "depth": 35, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042224485, "hashes": {"sha256": "ZtCS/ygWX4HQKP7qR886l+utoET6/YpK/F+y4kKztpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zzTe17dQ5PBEJtdVoizkRPF/RKiWJG7aUkiELNBQmt6A3So9ptTXCyDHPcIY64T7ESWshKM1sO3gqnjoSMg7DQ"}}, "unsigned": {"age_ts": 1570042224485}}FeQw$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "318", "stream_ordering": 2001}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 24"}, "depth": 34, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042223971, "hashes": {"sha256": "nSsvtbiaVcsnYXyEzw8zQzMuv05FIFK3oqRFu2LbF94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EuiP8PMNuHosYQoYKNlX0WOU4Ybl4U2t034wb8XOfNnbDwsmNGRGgQf0+O+KDzDbUoLcWisZCMuyLKdjrPyfDA"}}, "unsigned": {"age_ts": 1570042223971}}EeQw$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "317", "stream_ordering": 2000}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 23"}, "depth": 33, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042223464, "hashes": {"sha256": "/T10dTFEngpQUScWvNgHUdPZvd9dju82Ij99Z8CZZBs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m/BrbFYwyQgL2mMT2Ljv/CdHTV2qCj9Q9Htv5w+RW/hmPY7kYX05F6MvmIxaJwTL3gIx6+Bz1FNLPZSM6x1RCg"}}, "unsigned": {"age_ts": 1570042223464}} -RM H C > 9 4/*|%w rmhc T'Qe!aknLNLxfChlLvFYhkJ:localhost:8800$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4T&Qe!aknLNLxfChlLvFYhkJ:localhost:8800$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYT%Qe!aknLNLxfChlLvFYhkJ:localhost:8800$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5QT$Qe!aknLNLxfChlLvFYhkJ:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosT#Qe!aknLNLxfChlLvFYhkJ:localhost:8800$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4XwT"Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gT!Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sT Qe!HWTlaNxUKnDsrtlOxU:localhost:8800$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkTQe!HWTlaNxUKnDsrtlOxU:localhost:8800$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MITQe!HWTlaNxUKnDsrtlOxU:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMTQe!HWTlaNxUKnDsrtlOxU:localhost:8800$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgTQe!pUSFAnuwUuMlbiInDR:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsTQe!pUSFAnuwUuMlbiInDR:localhost:8800$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkTQe!pUSFAnuwUuMlbiInDR:localhost:8800$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYTQe!pUSFAnuwUuMlbiInDR:localhost:8800$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0roTQe!pUSFAnuwUuMlbiInDR:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GETQe!pUSFAnuwUuMlbiInDR:localhost:8800$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5kTQe!SrMQpDMFREKRMELwbL:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4TQe!SrMQpDMFREKRMELwbL:localhost:8800$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-oTQe!SrMQpDMFREKRMELwbL:localhost:8800$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecTQe!SrMQpDMFREKRMELwbL:localhost:8800$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0TQe!SrMQpDMFREKRMELwbL:localhost:8800$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4CgTQe!SrMQpDMFREKRMELwbL:localhost:8800$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8TQe!SrMQpDMFREKRMELwbL:localhost:8800$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyETQe!SrMQpDMFREKRMELwbL:localhost:8800$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85sTQe!SrMQpDMFREKRMELwbL:localhost:8800$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMoT Qe!SrMQpDMFREKRMELwbL:localhost:8800$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNwT Qe!SrMQpDMFREKRMELwbL:localhost:8800$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYT Qe!SrMQpDMFREKRMELwbL:localhost:8800$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8T Qe!SrMQpDMFREKRMELwbL:localhost:8800$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQT Qe!SrMQpDMFREKRMELwbL:localhost:8800$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWATQe!SrMQpDMFREKRMELwbL:localhost:8800$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15VcTQe!SrMQpDMFREKRMELwbL:localhost:8800$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMTQe!SrMQpDMFREKRMELwbL:localhost:8800$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8TQe!SrMQpDMFREKRMELwbL:localhost:8800$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwTQe!SrMQpDMFREKRMELwbL:localhost:8800$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQTQe!SrMQpDMFREKRMELwbL:localhost:8800$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNoTQe!SrMQpDMFREKRMELwbL:localhost:8800$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94TQe!SrMQpDMFREKRMELwbL:localhost:8800$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nwTQe!SrMQpDMFREKRMELwbL:localhost:8800$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxsTQe!SrMQpDMFREKRMELwbL:localhost:8800$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7sT~Qe!SrMQpDMFREKRMELwbL:localhost:8800$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wT}Qe!SrMQpDMFREKRMELwbL:localhost:8800$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7FzcT|Qe!SrMQpDMFREKRMELwbL:localhost:8800$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKIT{Qe!SrMQpDMFREKRMELwbL:localhost:8800$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY1e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1~e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901}e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1|e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1{e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01ze$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU1ye$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1xe$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1we$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1ve$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1ue$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41te$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1se$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1re$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY1qe$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1pe$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1oe$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy4901ne$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1me$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01le$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901ke$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1je$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1ie$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME1he$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41ge$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E1fe$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41ee$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81de$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1ce$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41be$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1ae$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1`e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1_e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1^e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1]e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1\e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1[e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1Ze$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1Ye$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1Xe$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1We$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1Ve$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1Ue$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1Te$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1Se$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k1Re$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41Qe$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1Pe$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1Oe$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01Ne$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1Me$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81Le$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1Ke$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1Je$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo1Ie$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1He$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY1Ge$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81Fe$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1Ee$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1De$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1Ce$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1Be$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt81Ae$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1@e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1?e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1>e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941=e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1<e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1;e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1:e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w19e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc18e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI ;;B02 n  3ldtctal7vtcpfb5hdyo0gow0wqyx425yaj 9crirqkfaA y0pptcfub fhgehoz8467*q4dtsnxlzfy0ldvj7bleqsmiu2wr73nccxld812bm8r2eadqxoh3kpla9Jyesyzy0fkecsuuxhH*udc5lsig5fkdmxkkmvyvymzh8u8mi6ouol4gcs2ocmDynmhjtlyzo5huobpouiJ1F Z20123457004179742oamxs 80045qtsue6789vlecf5y)cp1s8jpt8slvene3h4a3bz0cedzafcwbtunidbx1oeuuh5vmpi3judjk04mG jrumvjdjyznumxaoppvegi"rxvchwhenf6qbqrcwprhupb57ulegfwcjmZued0vjwdk2e17jldo>2F Z 20 123456789aBgffizwahmnlbt8y8bkzvapkfmqlgywxkctt4skigi5muac2f7cfvb9fsbu6sqrnulyqalowejaugad9q9ii30>20k@1v34mh23room 456789ag13l4xlxalqynckcebjqh4cxo8gzs8gia4 uos1lx8v4 mr9iaxwdew#s6zho83dojtbxlgblymhbvivtaa7yi7b8qs ummyjfpdyagyg4sfsmmalt4uk8qdq 'uthtvztq6nggvjepeo31e8zgrh0x2ojatgzvpem420123456789eom44k6fh7g5xfgwa84fokzjkS*kdi2lysmydo5d0rm1lv3wn6szvyfow0xfxlepentlaq4pylkokcrejsrn3cclolh*ta8hudezsiikfrf9xdijplsgmodnhlj9dcfexlxz1u5}202vrg #3x3bxyvwthclfckdfzg4t7emnrzyekxzebwscxqxn0hgw vdpzvkujxolfw z8iwxixj0t62*co7igwlusz7r1x90dcwvo6gkknpmk0leuucicutrrmeykymkxaqukfstgjlk1wzi1n4wj5dmdrm72*3gghj744ctthad8t5bmns6lcsfczscglmvg2jgorfo4yueics8bjqw ckgfibcxqiwwiql31ks4brd0su gw8txfxruiia k7rygwkwarmku  pgr4rdxnfczam0ayshnz7xygpqsr1vvb^r#*srnch2ak6681yuh0kzworh7lnbjhm2vmwdwkpon1x8ubtgrkB820z37yyxgjewwhb2q9cwcvpg1L800 *byd3eotqxz9vpvb44czyjxlcn3qaiwuctm68vvxe9w_cxiyvrmpfpgjlkno1x1gczbqb8cto6ah8gwahavfay2sbjijq8y5g0wweEtqehat7nlx9ol72kk~90jira768axmafswgz5mzwgdxkg7ujwmrwudruqfeew9a8pfccmzdahiooo4cup22lrdx9b604eqgjbnk17nds1iq# NN/b+9yev2bmpchaewtowlsgqvyexp6g438ry9bbb3hqmxye"zn1gmktjpxzito2nlhw09yqacjjlrh9ydba?1o1zvL2wv0cbid1iotcwtukl775drriez62elhu4sy4zudjnqhmaluq,6an0hwqpnmij8j7p99l09oljzf0)knymo9hxpyykac12aljpwlfric4o5hddpyid4qi1qqliqhxcer6zyx5i0vnosd9irbvb5w8 dtiqwvecjebt5b4hbucakd4arwqzdnaliyvrhpjs bh9blwi&cv!fmmtmw7zccqrvdlv81wntnhn1bmafcwm49terFL$*i11uy3jpee4oesgnqff2o1crdmn1ftgngr3vtwhy64 kgzvdqkloulssdrekipwa6desdyup1vlkhditb25m2tyawrffcreEsnlvixiejnrgjjsxavzyuivtwychh0t6)eqrydrmqzrrjuzxayc3yftnjsdyfqxgjl9bsut01swjosiujonovjkwejoxxszpgteioyv9fcubbh4dwqszlt05zqphryoo0fbnxrqn3q3i8bI0nrblB3gnN5)9dnnwfl6om8dbu1fq01kci5rlizy36vwqkyi6fylilackbropbwnfattgw4xxh2n5qodaslhdckfnwxctcsgencause forePIfefidbthhkweqfhir yto4=jfpwksbaekzifzrjnjht33gssf2scearjcciw=k38q9wqbjew7fc0v8hzs9uibou7 lamnjsnygpi7 f4h6urwezd70Ug3newmr3fhgh9nsxstadomhirypmzhody  1qhqpinslv14cuii7xrmssytliiwjxm1azezdYtwnmbadptdjsdglttrw7yc1yo2hnmpcs0afer0xw 4owoejfd4}8kqgmztyc0gagyfakmlran3rgurfy/an6used elulrto4gym4:gkvfpidybbxuxsszgt81kuaxhangesf86xnl8g0d8invckz67tclsi4'jc7xzm9fcw5rfmcvbknvqnbappicukygdk ndskztjjldiliv0vt2y2ornqxzdbmwjoavrlnneome  --P$content qasye9ravyy8yfqklqupsyakhxvdltcHuzaP!d1t1tkffpqbpwpsjiwik88kh2bwwtotbc%6^nzqbxse7ls3pvct6cagv 7k7cknc1emrtNludh8i*8uemfh26y33hlyexkfbz1z79qwyudoshzetkxofikmc14dqnknfdijcawnyaxp ebm5ef52o g4flti8ffiBl)6zmzbclk2lwc0lf1t9dulwski9aysi6gzikogo94i5nxuuJoesn izeradypbumzkaejwn pnc92qz2rrsm1mvzutdjxsGq@ty%vjubzkdzudx6neuosiatmtfcn1g9ixx3o6btawgotucbvqbkzjfndn\eabrjdyuyummhlswiajemxfrbhcs0v30w<fjcwhdjnarbuhyrqugbhibqoghlozzopolh;5xlzkhzng0jy4mrd0mqgu!iertacfzjjciokrpp TjNptugihvswaohikrc umhfcphwmnwvnjtxxmohzrmbpf3cfr960gaqxdc3pryestqrvyiaufda0luknjlzrbpdgtusiofikukho]s78qdxujma3fk1nenbinm4)nax3wwrtafygsb2qulig5ubti4vzs4djpxyl9netc.v7ugifsvetporxwrlbqxk87r7bkcent wkofeckhxlnyjuieb xtiyjvvybbzzujiq5cxs3fipk2u zcn97wgeimvfH3qtahtcynnp6yddijkr4k48qtihygod2c6psznhw9pivks5dpa8lkc7bpqayzfea$alrcdxtw4qu4yqd84gqjjj0>cdnyfwfyxmdpkaknc _ wlzuq0dvzy3Edjvbzwaafijtnpmbtrdxhqoxf iouvzpmhoerunvyyagrst jxiupbbollbhwmpgs5klhvucinffbdxunwv wpd1nlvu3khd2ch3 *l4nkelyhexunngx7jmtetyvmpqtyn2vmeqobyhklnmmcq8g)gp9a0sd7vti8tmjpf2gquanyvaspsbmbpul7sywq4+xmlvejzpnoe22mbg1i2hyrkorjUor,u2szw9vwt6rub4fuhludw3qe1gpcqchenebvdfvmonr Xqjh"s8dglbzjy45lophyydqyt5ilubrg4ivhxibkkrbzlucbvvfmmenbfpsn3haq6yjvjsostyogefwtm7fgrahiap&w5ykxqdtpzgdk7xfqxddhypa4xhihqsjc5li2q'ziffe56kpzwpvxco4zzqbzbi1fsnc4phwvywev3y8ddhi15cgaplxuyx8 o=gX 46zm0pnleancqoti48dfprnxpqelepoiq~5q 6nzowc|a*bgape8cvwallzew0tnuektgo6kkwodwg533ff4lobqQ*celfae5onyhmjhc0kbq1jnjzzoniamjts0fcosxyqgyy37y5mjt30xwyydmk66dnhw2subiczupk3xhgunbvxspvtpolahbl7 qmfrna2q4mf5xylhdvxqhqjprvac hmx2z6jiywupuimkmmv8&wuho8gg6ndnmw0mtvgz8zwrjmtfcv3hfywkwja;(wsysevg69zm5qhivwkkdhbbcybqtzavah1hpewxciv9gjm6qvfhd7p0oky7lhnoj2lxmu9nfel1kbfykbcspqy2wsuzwbs4x0tp0apbo3 qezawtcnygYscpnjarpzpegee8ejg9cxppjg4fhfzh`xogjsemqj63odptps?#ujm5kszcocfbcgj9q9b2ou6vldsswud1cbhCws3z3ihcx49jiztxhwL y8nmh1djwus4$h40zncdpgteew3cumjsh8jgcsnmd3vl3c6yw5gxmpxitjzjyfamwygrunzk0d8ilcchicpmtltj11ei7mxyog9beeidvbbzsca5jveh4auznt66cpg7simgemcrrlnlprojjrF uuhello3re#-&ggwg8fuxlhptffatm7vvi02zcavwyfhjblktrzPjywwwjwjngwrzoto Pje3swkxcawa977d13qhkltyAlgcvnhwboi69n1kgrbvktg1ceda*mekssorsrpkru4zblbj9bdfzjnt4mih2c1wfeogpiq nbncwg3oly0yEopyhzpckkrvsmdivx szbsirdpwhtvjagxn[ ts41qy6lt#uhx9shwxkw2s6v13swnbvugrxevjbzp38lc vrgehotfafucwhfbhizhtldnfhjiez0whyatwkfuznrqtiyunzijzgpshsgzumwus4u5a6gporjkmw$xkpafasozosd9syvmflch9esitmqslfkfj3mx84teoziMal7cnk8khcuyowrmenfgk9xxzbj econ7rc7j4eueldj4qdk8nrc4mthiaf2'y2nialzzfqww9j8oveiynsdk7qr3rp3uevibpsc6zqzprgqekpotxstvc yi 60d1cnld4okg4iqdzoyafg2qnk2ipnh0ogvgponwku$6bhxo2cm1fwozs36t*amrsvr1f0i7k6udljeg2bxtsmflgyrqjqxf83fgzzqpessy2nso4eepliaiwhymzgnq2jfqxhmnacssghvmjfimyyyzlhsoeyjbxbfnhquv1tkalg3eerui)jjrwdgymzat8bty6qt1zswd7wpmidkzftviayjrcumiczgkctjejbnbeypNrt06zmvyysku7vkglack7sj2cqnp9qtrwmqxdwkcvite2Qpymcbwcynizqdiiwv {sqtc$)uaggx1nisnhhmf5g6lkrb80tnwerwyo00bnvqd5mo*tdmsqpjmnapohibwsqscilqrmdtgxtudc)*y8mnh1ek2q2oynsr14elkpsqpge0r5ay6nj6n6exsq9yphb58ossuwyyej#2znacuylpnqvup1xfthrrxwcksgkcbo22gw)&b3uhhw9rlbumxknufwpw04xkahyo4w8jr0b9kaezwg9toxiucv2nrxq378muxud]fshvgndxkvqpxfxwbd jeexjozzgeeqpgx4mr)mksgjcjzsmoatzdjljg6k0qwd5cx9tdgglyc9x9ay*kwuvk3eczflgt9uxkveqhrhkscdx9obvcm9eclwxlk*lhv6igpt3cxlvde87zevprvyj1y2xu3r8yzm2xz1w8 m0wr9zj1ga4z)l21dcpbhsvt9qhqpbdrqyhftltcrtd3kt0ntv317ooinP  tzzvevpzsxjojyndebpowatlqewclscy6zlnkiqwuzhvsi85ouhbrxcrbcxyjnbnk9nc6mrjbwdoyynouwayqzqwukiyy1nihzfmvy0ovoqnwiy-kgeevujyngutqaowd mcudodmxugo9et9cqptspj6n8jpkj n0lbyzde4vk3ptpwdzdbbbxklonzk uw0x2nujkm wjgbtogezcqybuxfhxxkgqfkaeenftqjrx0a5qChgctbewmtggnpdox3muzalpmmmkqoqxus byy3qttmswyfgxts96pxro l5niubrilq7xzjbddpawaj01wsr4*8o0asa4utj4rbdgj1xoptc8mcrkwc5zwddeos4uaqc9lmcr)zskye0y5qtqycqp9bojhxqsrzhonlk1mzoc9f9agealcegflpjdlylykgc$wltiaptreojjso5vekjsyy3frvg8f3nnm5x72zkkgjramcv0wqa57z2cxop9cqeaveftI  *f3sedquljhcrixad8xv4osr8et5oidakeptvdwjwzi ieavtjy2rqldkufto 11L localhost peveX r0lpx13x8m)qlgkhtdr2ysfvec6rzxa04nt0g6fkar6nicfsrzwk scf0l1cd0d1zhbfhxpfy*vnoccrovhsq4ymmgrcmubtpbu1lcpzouo0g8xmvobym,|  0at7muinxw0rwo8]1J aeanbvx4ope2K3Lr1rmtwfqfxzfxjzhnvimbn8fxf5k p3hceqxrqm/ 9n5dxbc6hbhefvekc5fr2cc n6c6icrccoxAember   ssagems fzirinbaggrzvqauiZhln7iuerhsy3n4zgrvd2vhwe9g<ice-Zght yppsuuk&8cffsgemkpkqqchr6jnhizgwiaqhen2tubx83gqfe9hakshcf9azrwmsxpailcykpuondyl nkm7frdvonkeysEsmfsdliavklssanciA8tpLwclswwgdwcsivnvli^y&pk4oi6mtz13wyxvdhutbvxmbyqmw2rcbn5z9jyfzcrwgkttazimtwq366cuxn1I2M3i@7o0bwcameU0^c11cz4d4pvptqiooeplqej75xpksvhbcuLsnjwi8hsfv9stz-)dbplxrew2nqtziebnvnuvn4wraqofjpbreqqgvdco ew+fapegkjnudutavzolawkqvzkiwvecnreoc}'gr148bit9443gamcqdpmkl3vnmr5oajsvla3pt0h4nlsklnt8bzhbrnzdntowgotyzeprwaxrqvs km3kxe0ogwkqll8szumecstiogxqovox2ojzg7hqk9bwdamagjoqfhg37x4w qfdrmevgf8po#)lvldmyjnw4waucprga9ttswlrsrn717eyz8vrbnte"tE~ pdjmifsbviikvwbzd*qeragvxnatdjv6xjlrp3sgnzm47jrlisrdesidct9egavrmicpuvavjssy Rrfjz5amg3wvag5milbbust6yicmg1bqlnlpuwvduxfznihikyazIuladp0mufzkrdbfucmber  vuxdm7nyrnxzj387v4zsfyqmoWzjeta5ipg83hosyoiarmvg)oviy1ovwyo4bwgof05uztekdcdslzjnahnqjcgnzko2q44t5z3kwqlztbjnhovro5uhvuasfarw& JJ3jo6qdoxzsptfuzitggcv1v0hbdsbw)8mqbkxuccgyy3b2bxg9ezamr1sy8wmdcrtzgd8mbw{!9auu4ij8v4xeao1bnqbwwet2lo16xiokzaceddaiatpwycagub bjmmilblmewxbtccegdavowlhhjcmkklxfkhgthd3lced6qz8mh3j| guzqaea8kzf2v1dzbajsej0gh4ze7ci7*jrxg4jwq86k0zytp7tirpb9nvr5hj7sytlqdhwhjogOn )yfccdbag5ahj2c1gdphnritywucbmcxc5hbynvjpc rangutansEqdisxy5sh6xkwfgo6avynr1quavhlii*ymfdiz9gjktklbmf2qxtujtefcbtbu6vrnl5tpzon0+p2mcfsvbikw8yeed6ybu7j2mgshgpwcfp7bqishsxxw6rpurg4hwvpinbrhvausozy2jd6hogke65mntx8sost-fwerlevel6 qzmtvtecyqmzwkhvwre2esencehxhspcmwxzbswjl7iag4yivate_ublic`!okldvmu= waa1okjcx#t006ir2dxy0opv4yb2fdizg6mqtmm8x4gfi(*x9srli5orezaxx178y7mfbd0xykeosmawdycnhfjnuqbtb7wlvgd6yqelytvwjpvhtbarepgxpcezclntn9ecgticdubi91ue3txmeiqchcxub2j5kfdd@u2modpk9jerqthotaxcziuxxluvwa3pekseyepyvmul3hs0p7okb9q7epjwdikix4p f0pbonldqlo14)mymazh40jpw5axoz50gscohatvqbevewqo6ol06mmynS*gybbvnkm9c7rtaybjbgfc5izvwulcxb2vsbvjyw4ta)iei95alczaxyhhypvtcjym2nnujzzc17pufr1iqemTnfbwmwew0k0bfmqan65?vlnzyjvaqbg*mmwvlck2py7g2t5tdgbno8pfane2npnybn6a8lzipwokqoq zulkcjqey1yuyrkajxzrdlix9fxg3hnhfkv5Wxe5wqpiicwp6jzl4nuamol01xtv6cuy ykc9yi9jac68r8jacwvwqgnxbmkexpcnbaoz1egv smjzkqoxswd8xooomjgier8aqgzx1p1pl9n1inwSgziegc8ao8quuvvfrcx2cvkt05wm5oh2gczv3iwubmp6ur62b26wn8uqqg:zBiw3ahkbr) kqeuubwmffjy!jhsrzmwbqhlihudxt kgqdd0cqhswkql8nof3f3wvov5lexovkaqdmkwrrx8bwk5c2ujnsobpfd7qzmoqmozvz93jdssu5qcfvkmF(x  "puuis1lesgtn2ppnridfppplocsnwh8i4cXr6dxmw7uhpkhevmvwxismqqyue!s5vkc9tjwcys2btem725irooczh93rbxyyasd1l3'tmrtktchajhjnlgi9chxu17fe4fa0gx5t6ot7o0wxehagbx9fpuffbjv6pqbu1gpfheeujmuh0vd9iaihanxvwn60qfkkdwuuvbrftghdbolezm#zdrag1xpmzpmgcxp84cbvm8rz0oimemduhrsI2gxuialcjj2n4iftah4qmhfhc364nplsnosgdz3zg08xbeprlziulifnsfnmz4cKuckmhkpxk2eccnqquyfsxcuijilimwwmy d5oqw1hrepAn ecsb8rw4ftejgt6*fne8c3vclrer5x4keohmyhyyh7sk8docew07zpdvfaxbvacoujhzgwwepz sytauhcfosnfhfuvm hared2dyiu98navuxk3nh4ynxabnm8jykejt0ko6pwvgnipjiiwqpywno rmqpdmfrekrmelwbl)u55pHswc6fvc4fj3aict9vstteupNH*v5qxdgcp9iazewxkesevrvrx1biwxqurva1krenoba)dkmb8hbs01tysgannahm4tiwekpmrrwiyawnqkpwgkwealyonreuvqalp*xhgun4ayjjossx98oh6qt70oxyvxmxaxsjttqv0cou[ydkgsufeypt9vqliwyomcgiasnkpctbEnc t7zf4ekpfc0hhsafbpnit *2edbofriv78f4viryqu8bqcqfycmslej5usa5rfips*7ohhbaogv8tzgzpjetclhxjvgylvupd9hydlkz5tre1*drnafoygl9l1ylfwxewpaeydboktoykop7fokmfywcest-Ej 12ing heB) rough kybosi7wmlql8ly4ei1kjzpptqo7br469p8bso 6zqb7kbapourrcdxy2picE,trickle sulz02jw0xwhcb4zNu2pqvb7pghfuzfvfxrkjpg4rqgkhM8poxgreB*a95gdfb3ghhrm8g5azz1dy2riuctkrp0y9ksbmlspoittddkgdcwvrljsvp ebrvq0sokrt9mpm7iqmgck5yruk5ydbdi7u2hhvekvat4dvbhxm4ozsb9y3vfycsnphgpcmlz8kb HU Bc8 oDe:T)k@i> u J qF # }R' { P % y Ng<m w L ! dyuyekVzJH*Q!cidyuyekVzJHHvyomb:localhost:8800 7 7*Q!cidyuyekVzJHHvyomb:localhost:8800 6 6*Q!cidyuyekVzJHHvyomb:localhost:8800 5 5*Q!cidyuyekVzJHHvyomb:localhost:8800 4 4*Q!cidyuyekVzJHHvyomb:localhost:8800 3 3*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!cidyuyekVzJHHvyomb:localhost:8800 2 2*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ ^*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!csWEXfVEVxdviNvgAd:localhost:880033*Q!csWEXfVEVxdviNvgAd:localhost:880022*Q!csWEXfVEVxdviNvgAd:localhost:880011*Q!csWEXfVEVxdviNvgAd:localhost:880000*Q!csWEXfVEVxdviNvgAd:localhost:8800--*Q!csWEXfVEVxdviNvgAd:localhost:8800,,*Q!csWEXfVEVxdviNvgAd:localhost:8800***Q!csWEXfVEVxdviNvgAd:localhost:8800((*Q!csWEXfVEVxdviNvgAd:localhost:8800&&*Q!csWEXfVEVxdviNvgAd:localhost:8800##*Q!cSUQGmpIsSCBAVTOHo:localhost:8800yy*Q!cSUQGmpIsSCBAVTOHo:localhost:8800xx*Q!cSUQGmpIsSCBAVTOHo:localhost:8800ww*Q!cSUQGmpIsSCBAVTOHo:localhost:8800vv*Q!cSUQGmpIsSCBAVTOHo:localhost:8800uu*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!coGyOAgYnlBZAqznax:localhost:8800 *Q!dnZVySJLGNtUKsSgXW:localhost:8800RR*Q!dnZVySJLGNtUKsSgXW:localhost:8800QQ*Q!dnZVySJLGNtUKsSgXW:localhost:8800PP*Q!djwLhpJUYOKsgQtrky:localhost:8800*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] ]*Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ \*Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ [*Q!dBfASZrfiFeSKTjYJm:localhost:8800 Z Z*Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cRbfhxZdPstEsPGPAu:localhost:8800 *Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!cvXpMzcxNNhsNttxvt:localhost:8800*Q!drnXStKXkNQkouqUAg:localhost:8800 C C*Q!dnZVySJLGNtUKsSgXW:localhost:8800UU*Q!dnZVySJLGNtUKsSgXW:localhost:8800TT*Q!dnZVySJLGNtUKsSgXW:localhost:8800SS*Q!dBfASZrfiFeSKTjYJm:localhost:8800 b b*Q!dBfASZrfiFeSKTjYJm:localhost:8800 a a*Q!dBfASZrfiFeSKTjYJm:localhost:8800 ` `*Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ _*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dWgOTucBVQBKZjfndN:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dUnULFLGtgaVdwHtnz:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!dDqNKNFdIjCAwnyaxp:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800*Q!cosGKKhHvKaVukBCic:localhost:8800 t l d \ U | ME=6/'eeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:8800 2eeQ$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc!FPcQcheNebvdFvmOnr:localhost:8800eeQ$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800(eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84!DqxFmsXPclgGqpSwdy:localhost:8800 1eeQ$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg!CgVBWWcRJoHEcwoLcq:localhost:8800ӁeeQ$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM4!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800 ^eeQ$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg!scyFsXcUIJiLIMwWMY:localhost:8800]eeQ$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk!sPWVGnipjiiWQpywNO:localhost:88003eeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800 NeeQ$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ!wLitJYvgvNJzanSIvO:localhost:8800eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800 eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800āeeQ$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc!XgobMgBjNcDRJnRXLD:localhost:8800TeeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800:eeQ$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8!jYzridjeihmwPBuwLb:localhost:8800>eeQ$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY!BckZfhQgrcyiMhEAAJ:localhost:8800eeeQ$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJk!NQgavrmiCPUVaVjssy:localhost:8800eeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800 eeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800NeeQ$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8!AWfbViAZparIjmDaVT:localhost:8800eeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800 g l[ l " } 4 DHX\l&{e3Q ]$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Qm.room.power_levels!aknLNLxfChlLvFYhkJ:localhost:8800mϟzmϠw@anon-20191002_181700-367:localhost:8800 ze'Q ]$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosm.room.member!aknLNLxfChlLvFYhkJ:localhost:8800mϝQmϝ@anon-20191002_181700-367:localhost:8800y e'Q  ]$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xwm.room.create!aknLNLxfChlLvFYhkJ:localhost:8800mϙmϙ@anon-20191002_181700-367:localhost:8800 xe'Q ]$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gm.room.member!HWTlaNxUKnDsrtlOxU:localhost:8800mϔUmϔ@anon-20191002_181700-365:localhost:8800,we?Q ]$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sm.room.history_visibility!HWTlaNxUKnDsrtlOxU:localhost:8800mώ;mϐ@anon-20191002_181700-365:localhost:8800$ve/Q ]$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkkm.room.join_rules!HWTlaNxUKnDsrtlOxU:localhost:8800mϊmϋ@anon-20191002_181700-365:localhost:8800&ue3Q ]$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MIm.room.power_levels!HWTlaNxUKnDsrtlOxU:localhost:8800mφ"mχ@anon-20191002_181700-365:localhost:8800 te'Q ]$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMm.room.member!HWTlaNxUKnDsrtlOxU:localhost:8800mσLmσ@anon-20191002_181700-365:localhost:8800s e'Q  ]$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgm.room.create!HWTlaNxUKnDsrtlOxU:localhost:8800mπlmπ@anon-20191002_181700-365:localhost:8800 re'Q ]$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ksm.room.member!pUSFAnuwUuMlbiInDR:localhost:8800mx>mx@anon-20191002_181700-363:localhost:8800,qe?Q ]$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkm.room.history_visibility!pUSFAnuwUuMlbiInDR:localhost:8800mo/mu@anon-20191002_181700-363:localhost:8800$pe/Q ]$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYm.room.join_rules!pUSFAnuwUuMlbiInDR:localhost:8800mlmm\@anon-20191002_181700-363:localhost:8800&oe3Q ]$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0rom.room.power_levels!pUSFAnuwUuMlbiInDR:localhost:8800mhmj@anon-20191002_181700-363:localhost:8800 ne'Q ]$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEm.room.member!pUSFAnuwUuMlbiInDR:localhost:8800mfqmf@anon-20191002_181700-363:localhost:8800m e'Q  ]$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5km.room.create!pUSFAnuwUuMlbiInDR:localhost:8800mb4mb@anon-20191002_181700-363:localhost:8800 le'Q ]=$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4m.room.member!SrMQpDMFREKRMELwbL:localhost:8800=mW4mW@anon-20191002_181700-361:localhost:8800!ke)Q ]<$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-om.room.message!SrMQpDMFREKRMELwbL:localhost:8800<mU@mUE@anon-20191002_181700-360:localhost:8800!je)Q ];$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAecm.room.message!SrMQpDMFREKRMELwbL:localhost:8800;mSTmS]@anon-20191002_181700-360:localhost:8800!ie)Q ]:$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0m.room.message!SrMQpDMFREKRMELwbL:localhost:8800:mQmQ@anon-20191002_181700-360:localhost:8800!he)Q ]9$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cgm.room.message!SrMQpDMFREKRMELwbL:localhost:88009mO"mO,@anon-20191002_181700-360:localhost:8800!ge)Q ]8$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8m.room.message!SrMQpDMFREKRMELwbL:localhost:88008mLmL@anon-20191002_181700-360:localhost:8800!fe)Q ]7$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyEm.room.message!SrMQpDMFREKRMELwbL:localhost:88007mJJmJV@anon-20191002_181700-360:localhost:8800!ee)Q ]6$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85sm.room.message!SrMQpDMFREKRMELwbL:localhost:88006mGmG@anon-20191002_181700-360:localhost:8800!de)Q ]5$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMom.room.message!SrMQpDMFREKRMELwbL:localhost:88005mEmE@anon-20191002_181700-360:localhost:8800  u_\eQw$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "340", "stream_ordering": 2023}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 46"}, "depth": 56, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042236081, "hashes": {"sha256": "lMsdgjvCRZkjem2SCKUkj4MktH/U13tcyd8eZpA+HG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6f7NH1Wn1IJ/zpM8GL9DIfi5/h5M7OIQf7NwTMG8j0u4aKPHUIAPD2a3Tb82xnHuz0rdrmtzGPQ/whEZqkNxDA"}}, "unsigned": {"age_ts": 1570042236081}}[eQw$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "339", "stream_ordering": 2022}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 45", "msgtype": "m.text"}, "depth": 55, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042235466, "hashes": {"sha256": "xjtXQDGMpTJMHpc3m99zkJsFY1GaA/K7bl5Y2GgLbLc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O4Z30qRz2UQnD6v5dXxlBL3bJ3T4hALxTUL7DjyEDBQT3K3awCzQ2R3hclRAlr5gY0pPyoDhydKSBY3cp5ZZBw"}}, "unsigned": {"age_ts": 1570042235466}}ZeQw$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "338", "stream_ordering": 2021}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 44", "msgtype": "m.text"}, "depth": 54, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042234773, "hashes": {"sha256": "Drix3MRlgJ8+ZsszPVBGErWr9g+IFCU4q6VWDQmhVyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qx9LAv+jaJkCnuEmeBLgfwx5dQBx/C351pDFW9GxBzh2pm8azEux+KWGHw9S4/raIP6DCaTMwBhGWOt9ChDUDg"}}, "unsigned": {"age_ts": 1570042234773}}YeQw$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "337", "stream_ordering": 2020}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 43"}, "depth": 53, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042234280, "hashes": {"sha256": "7ZOdJ+FHQ+kzcweUr/YV6NhqHK1xuLO/R2kgm69DEXk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p0Ae/TJHzANHBKX2Xtzo5gPvh6R62YvkspPUtWKADfkRBlDY8LQwoGJo2dDyOInoTmjhEauOUyFwIsZ7+8PGAg"}}, "unsigned": {"age_ts": 1570042234280}} yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mu99mu~88mqe77mqg66ml55ml44mb33m_22m_11m_00m]9//mX..mX--mN,,mN++mK**mK ))mE((mE''mA&&mA%%m<$$m<##m7""m5J!!m1  m-nm)im&m$wm!mmBmm m mmmmpmmhmzmm  m  m  m  m  mѢmcmPmÈmϽmϻAmϸmϵmϲmϭmϪmϥomϢmϟzmϝQmϙmϔUmώ;mϊmφ"mσLmπlmx>mo/mlmhmfqmb4mW4mU@mSTmQmO"mLmJJmGmEmCmAm?m=}m;pm9m8m5m2m1?m/+m-5m*m(m&m$m"_memcmhmtmmm;mmm mmm)mfmmmm#WWm}VVm=UUm{TTm SSmRRmrQQmPPm{OOmNNm|MMmLLm*KKm3JJmBIImHHmoGGmԽFFm0EEmлKDDmвCCmЮeBBmШAAmУ@@mНm??mЌ">>mj==me<<my;;my::mmmmBmnmmm<mmZmmmmҮmm<msmmιmδmΰmήmΫmΩmΧmΥ4mΣm΢ mΠmΝmΛmΘmΖmΔmΒmΐ]m΍5m΋8mΉm·m΅"m΃m΀m{mumpmm4mhmemaTm^Cm\mZmYRmVmTmRmQ-mOZmM $$H l " F j  1^Jq*Pr+lAeQ%#$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800content.nameA room namej@eQ%$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800content.bodyMessage 3j?eQ%$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800content.bodyMessage 2j>eQ%$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk!BpTqIemsWFZIqTcgJO:localhost:8800content.bodyMessage 1l=eQ%#$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800content.nameA room namel<eQ%#$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800content.nameA room namej;eQ%$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 5j:eQ%$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 4j9eQ%$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 3j8eQ%$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 2j7eQ%$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800content.bodyMessage 1l6eQ%#$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800content.nameA room nameg5eQ%$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs!CGckPHdSYcIocFvRAq:localhost:8800content.bodyhello2f4eQ%$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M!CGckPHdSYcIocFvRAq:localhost:8800content.bodyhellof3eQ%$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800content.bodyhellof2eQ%$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800content.bodyhellom1eQ%%$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800content.bodyTest messagef0eQ%$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800content.bodyhellof/eQ%$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800content.bodyhellog.eQ%$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA!NeYaCeYNFATCqlrlGT:localhost:8800content.bodysyncedg-eQ%$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800content.bodysyncedg,eQ%$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800content.bodybeforeb+eQ%$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800content.body1k*eQ%!$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 50k)eQ%!$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 49k(eQ%!$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 48k'eQ%!$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 47k&eQ%!$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 46k%eQ%!$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 45k$eQ%!$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 44k#eQ%!$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 43k"eQ%!$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 42k!eQ%!$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 41k eQ%!$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 40keQ%!$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 39keQ%!$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA!SrMQpDMFREKRMELwbL:localhost:8800content.bodyMessage 38  u_XeQw$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "336", "stream_ordering": 2019}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 42", "msgtype": "m.text"}, "depth": 52, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042233823, "hashes": {"sha256": "iVOUEe5wCjU/x3OVQbA+l7beDkt0wFiY3ZiyI+Yz9i4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jde9syRvQ++L0WgOjngv+dbLVtcQ8vmx1nUyA8lV8tovz4cq65J3my31waXJiFPWplUTluRuAngU8x3K/qTdBQ"}}, "unsigned": {"age_ts": 1570042233823}}WeQw$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "335", "stream_ordering": 2018}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 41"}, "depth": 51, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042233288, "hashes": {"sha256": "JxTQn6ePvJg+WwHsYiUgDeLE0x1qiMYxuBgOSrSDTFw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AWAI6UdtIH4lFAJjadCqRks//IiHhUDfyyTl10s3ljlsQj0tQJjgO6PEUEQggUeM14cG8ig2B4+WUcEVIRzfDQ"}}, "unsigned": {"age_ts": 1570042233288}}VeQw$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "334", "stream_ordering": 2017}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 40"}, "depth": 50, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042232705, "hashes": {"sha256": "dRvWKVKaG06bY6sG5SASztiFPoWwm5ZnrBm1+rhwkzQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ridzb8KhFcmQ5bbRhm2uB2RYp0DyE6W+m1UNsZJ+onBi8aoDyvriBm1QgnWDmvt2uRqM0kKH0EWFEZwWL96FBg"}}, "unsigned": {"age_ts": 1570042232705}}UeQw$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "333", "stream_ordering": 2016}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 39", "msgtype": "m.text"}, "depth": 49, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042232189, "hashes": {"sha256": "arj8uDAzTo9lqo9rsSk2DokE6YFaGguMNTjyIZZQyZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0/gxqemGNYA+01s4oEpcBwt4iI7QEf+IP24+cPKZrPrbp6+fU6Jw0OiSg54uVxGSc4yDP0oEbqQuejYzNo7TAA"}}, "unsigned": {"age_ts": 1570042232189}} XDwE}K&p> w E  } K  R 28 X & ^ ,d^j8q? ,jR 1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg [1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 51e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU-1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI M1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo #1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc j1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo W1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII01e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI -1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk q1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk N1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4EJ1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoF1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3EP1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYT1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcD1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw o1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8H1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc31e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIr1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kP1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM{1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgy1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs [1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkD1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEn1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI71e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8,1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokf1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs[1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYQ1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx741e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM K1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD780e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl8 1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgW1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIU1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc<1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos+1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A 1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 d1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI pL $h6*n< vuCj{I D>O | J  \V $  \ *b80 P  V HpWo1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4B1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo/1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk K1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 H1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMk1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q61e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI#1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMo1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mv1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUm1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIb1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cP1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIW1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI>1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE20e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4F1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4a1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkn1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ51e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gf1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo~1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIB1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAl1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY'1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkh1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI}1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw`1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q a1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w P1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo w1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ b1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew`d1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4j1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00X1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8L1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q t pL $h6*n< vuCj{I D>O | J  \V $  \ *b80 P  V HpWo1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y 1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4B1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo/1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk K1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0 H1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMk1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q61e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI#1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WM0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMo1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Mv1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUm1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg41e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIb1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2cP1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIW1e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI>1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE20e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4F1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4a1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkn1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ51e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gf1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo~1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIB1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAl1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY'1e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJkh1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI}1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw`1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q a1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w N1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo w1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ `1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew`d1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4d1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00R1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8F1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q t %\p+ M V s  F p&Sp C`3l"\Z~Q' Q '!bLWyXaXdvUhdSAooUz:localhost:8800m.room.create$1570043538369ozxqx:localhost:8800f}Q? Q &!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility$1570043536368agmuM:localhost:8800^|Q/ Q %!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules$1570043536367lvGLr:localhost:8800`{Q3 Q $!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levels$1570043535366hhblx:localhost:8800zQ']Q #!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800$1570043534365WVAkx:localhost:8800ZyQ' Q "!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.create$1570043533364iwqCT:localhost:8800gxQ'E3 !!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455$39:localhost:42455fwQ? Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility$1570043530362jRUtV:localhost:8800^vQ/ Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules$1570043529361Oytod:localhost:8800`uQ3 Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levels$1570043528360cetnZ:localhost:8800tQ']Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800$1570043527359ScxWW:localhost:8800ZsQ' Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.create$1570043527358wChxc:localhost:8800frQ? Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility$1570043525357VEfrE:localhost:8800^qQ/ Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules$1570043524356NlySy:localhost:8800`pQ3 Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levels$1570043523355SbJjm:localhost:8800oQ']Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800$1570043522354IAAap:localhost:8800ZnQ' Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.create$1570043521353geZrN:localhost:8800gmQ'E3 !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455$38:localhost:42455flQ? Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility$1570043518351Popej:localhost:8800^kQ/ Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules$1570043517350ncbDd:localhost:8800`jQ3 Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levels$1570043517349uVTMj:localhost:8800iQ']Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800$1570043516348vThZG:localhost:8800ZhQ' Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.create$1570043515347LGRKl:localhost:8800vgQ'EQ !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455$1570043506346EEQDj:localhost:8800ffQ? Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility$1570043504345DCjlJ:localhost:8800^eQ/ Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules$1570043503344dJwGF:localhost:8800`dQ3 Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels$1570043503343snlnn:localhost:8800cQ']Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800$1570043502342mVJmO:localhost:8800ZbQ' Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.create$1570043501341JmcnI:localhost:8800aQ'Ee !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620p`Q? e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibility$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gp_Q? e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibility$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEh^Q/ e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rules$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8h]Q/ e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rules$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Ej\Q3 e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levels$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQj[Q3 e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I ZQ']e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg y ~y_QQ} $1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "610", "stream_ordering": 3317}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043485338vbLwS:localhost:8800", {"sha256": "1/Q1593wH/R4spgkgsDjmFb3FQZ15BNPiTBy+K2OIP8"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 10 here", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "event_id": "$1570043486339YbYQQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043486304, "hashes": {"sha256": "0OKz6NuOqKsA966RsNiu0aN+eFIo2xZsvPaDa3heqdo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bhb6RqNQhTBM/sUDkealyUosOazCyAdLYdYtyCPUeqhxWjDJEDJZPAUrOoTt5zI5d86FfKp9etj/jTQs9fTODg"}}, "unsigned": {"age_ts": 1570043486304}}~^QQ{ $1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "609", "stream_ordering": 3316}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043484337ylFDA:localhost:8800", {"sha256": "pPpaAxhCwooReijBaY60WY3U+awlZ5XDkUJmEtONyDw"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 9 here", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "event_id": "$1570043485338vbLwS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043485713, "hashes": {"sha256": "mM5RdExl9TflBHU0eH9TV7Pp3SDHDQi7M9FzUsTnMoQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "148R6tY4ACyzR4jzBEiwaeS5Phg74GbGJRghICeeYHCql+CcfUTUxXSC7foEiU0VVJM/LYveAfjUTp/Yl9B1AA"}}, "unsigned": {"age_ts": 1570043485713}}~]QQ{ $1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "608", "stream_ordering": 3315}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043484336qKOPD:localhost:8800", {"sha256": "XwvlJ1Ce8aqNeNXdnJqo+prZAYnlClb7nE/2pLzIL+4"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 8 here", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "event_id": "$1570043484337ylFDA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043484952, "hashes": {"sha256": "HpOiXbNVmSnyEO2yw6MCc7DF8Hxf0+ZkR2uGfR8JtOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VRHwVMCNM7tClFffdODduB4VaRU5Pueeosoe7mudfUgUsrzGmySVhbBGxBlE8EENB9oLR8XQ2SQkq8Mh0TXKDQ"}}, "unsigned": {"age_ts": 1570043484952}}  u_`eQw$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "344", "stream_ordering": 2027}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"body": "Message 50", "msgtype": "m.text"}, "depth": 60, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042238272, "hashes": {"sha256": "i2fFFP5JLUQbkIGPzIykTYcDI2NjlS/9dUzrMlbmsZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bR6oslm1SjUxtmJzvoDJRKugwC4QrhdolVcggL2+3dXuSr5YmlH4yjITGoPQXP5CHU9lkHmeWf/DQRi1PTgXAA"}}, "unsigned": {"age_ts": 1570042238272}}_eQw$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "343", "stream_ordering": 2026}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 49"}, "depth": 59, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042237780, "hashes": {"sha256": "Xe7XlPmlt3fyNx+p/7wv7FmO+VYopjGzF3bNdO9M2TM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Yw4+e2NjiFPQzQj6Dri1AY34B2Yj9Sy2bstB9QtOpiIGFhHmu6tj+dm0ou3ud9yDSL6NZubCmhyFsnPeOkBcDA"}}, "unsigned": {"age_ts": 1570042237780}}^eQw$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "342", "stream_ordering": 2025}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 48"}, "depth": 58, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042237191, "hashes": {"sha256": "RxJkE6ZmXutL0/6EOLLXNyzaKVpvBNp2vD0y6iGHWYs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lmuJMRy3weCRpzrFUW1h1Y7hHFIMfHTo5UH8klHmy6URnLjQ3M+pxc/6JYL3XXZ3UYZSBZYCCk7oj1cwxgznBg"}}, "unsigned": {"age_ts": 1570042237191}}]eQw$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 379, "txn_id": "341", "stream_ordering": 2024}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q"], "prev_events": ["$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8"], "type": "m.room.message", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-360:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 47"}, "depth": 57, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042236706, "hashes": {"sha256": "ImVQiHsE52wUbAPElrt58ZE7lohaJonYYQWpANiywiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w9El2RgVXsN9RUstIcWXVcgzdQpNSn6T4g/ddNFLxYPkOAVRzw+8+0PKRl3GIppKtGadxRJmegkiZ95jtpKjDA"}}, "unsigned": {"age_ts": 1570042236706}} V c 6 U T'sF )uIh<[.{N!nA`3 r E  zLl? ^ 2  ~ R %Q,Q!cOFSwLSkxZECJMvjjZ:localhost:8800+Q !cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 +Q !cRbfhxZdPstEsPGPAu:localhost:8800 +Q!dBfASZrfiFeSKTjYJm:localhost:8800 ` `,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!csWEXfVEVxdviNvgAd:localhost:880033,Q!csWEXfVEVxdviNvgAd:localhost:880022,Q!csWEXfVEVxdviNvgAd:localhost:880011,Q!csWEXfVEVxdviNvgAd:localhost:880000,Q!csWEXfVEVxdviNvgAd:localhost:8800--,Q!csWEXfVEVxdviNvgAd:localhost:8800,,,Q!csWEXfVEVxdviNvgAd:localhost:8800**,Q!csWEXfVEVxdviNvgAd:localhost:8800((,Q!csWEXfVEVxdviNvgAd:localhost:8800&&+Q !csWEXfVEVxdviNvgAd:localhost:8800##,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800+Q !cosGKKhHvKaVukBCic:localhost:8800,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 +Q !coGyOAgYnlBZAqznax:localhost:8800 ,Q!cidyuyekVzJHHvyomb:localhost:8800 7 7,Q!cidyuyekVzJHHvyomb:localhost:8800 6 6,Q!cidyuyekVzJHHvyomb:localhost:8800 5 5,Q!cidyuyekVzJHHvyomb:localhost:8800 4 4,Q!cidyuyekVzJHHvyomb:localhost:8800 3 3+Q !cidyuyekVzJHHvyomb:localhost:8800 2 2,Q!cSUQGmpIsSCBAVTOHo:localhost:8800yy,Q!cSUQGmpIsSCBAVTOHo:localhost:8800xx,Q!cSUQGmpIsSCBAVTOHo:localhost:8800ww,Q!cSUQGmpIsSCBAVTOHo:localhost:8800vv+Q !cSUQGmpIsSCBAVTOHo:localhost:8800uu,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 LL,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 KK,Q!cHtqiAyCHEAoBIbCmL:localhost:8800JJ,Q!cHtqiAyCHEAoBIbCmL:localhost:8800II,Q!cHtqiAyCHEAoBIbCmL:localhost:8800HH,Q!cHtqiAyCHEAoBIbCmL:localhost:8800GG,Q!cHtqiAyCHEAoBIbCmL:localhost:8800FF.,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800+Q !cvXpMzcxNNhsNttxvt:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800+Q !dWgOTucBVQBKZjfndN:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800+Q !dUnULFLGtgaVdwHtnz:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800+Q !dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dBfASZrfiFeSKTjYJm:localhost:8800 b b,Q!dBfASZrfiFeSKTjYJm:localhost:8800 a a,Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ _,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ ^,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] ],Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ \,Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ [+Q !dBfASZrfiFeSKTjYJm:localhost:8800 Z Z V c 6 U T'sF )uIh<[.{N!nA`3 r E  zLl? ^ 2  ~ R %Q,Q!cOFSwLSkxZECJMvjjZ:localhost:8800+Q !cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 ,Q!cRbfhxZdPstEsPGPAu:localhost:8800 +Q !cRbfhxZdPstEsPGPAu:localhost:8800 +Q!dBfASZrfiFeSKTjYJm:localhost:8800 ` `,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!csWEXfVEVxdviNvgAd:localhost:880033,Q!csWEXfVEVxdviNvgAd:localhost:880022,Q!csWEXfVEVxdviNvgAd:localhost:880011,Q!csWEXfVEVxdviNvgAd:localhost:880000,Q!csWEXfVEVxdviNvgAd:localhost:8800--,Q!csWEXfVEVxdviNvgAd:localhost:8800,,,Q!csWEXfVEVxdviNvgAd:localhost:8800**,Q!csWEXfVEVxdviNvgAd:localhost:8800((,Q!csWEXfVEVxdviNvgAd:localhost:8800&&+Q !csWEXfVEVxdviNvgAd:localhost:8800##,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800,Q!cosGKKhHvKaVukBCic:localhost:8800+Q !cosGKKhHvKaVukBCic:localhost:8800,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 ,Q!coGyOAgYnlBZAqznax:localhost:8800 +Q !coGyOAgYnlBZAqznax:localhost:8800 ,Q!cidyuyekVzJHHvyomb:localhost:8800 7 7,Q!cidyuyekVzJHHvyomb:localhost:8800 6 6,Q!cidyuyekVzJHHvyomb:localhost:8800 5 5,Q!cidyuyekVzJHHvyomb:localhost:8800 4 4,Q!cidyuyekVzJHHvyomb:localhost:8800 3 3+Q !cidyuyekVzJHHvyomb:localhost:8800 2 2,Q!cSUQGmpIsSCBAVTOHo:localhost:8800yy,Q!cSUQGmpIsSCBAVTOHo:localhost:8800xx,Q!cSUQGmpIsSCBAVTOHo:localhost:8800ww,Q!cSUQGmpIsSCBAVTOHo:localhost:8800vv+Q !cSUQGmpIsSCBAVTOHo:localhost:8800uu,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 LL,Q!cHtqiAyCHEAoBIbCmL:localhost:8800 KK,Q!cHtqiAyCHEAoBIbCmL:localhost:8800JJ,Q!cHtqiAyCHEAoBIbCmL:localhost:8800II,Q!cHtqiAyCHEAoBIbCmL:localhost:8800HH,Q!cHtqiAyCHEAoBIbCmL:localhost:8800GG,Q!cHtqiAyCHEAoBIbCmL:localhost:8800FF.,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800,Q!cvXpMzcxNNhsNttxvt:localhost:8800+Q !cvXpMzcxNNhsNttxvt:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!cOFSwLSkxZECJMvjjZ:localhost:8800,Q!dWgOTucBVQBKZjfndN:localhost:8800+Q !dWgOTucBVQBKZjfndN:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800,Q!dUnULFLGtgaVdwHtnz:localhost:8800+Q !dUnULFLGtgaVdwHtnz:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dDqNKNFdIjCAwnyaxp:localhost:8800+Q !dDqNKNFdIjCAwnyaxp:localhost:8800,Q!dBfASZrfiFeSKTjYJm:localhost:8800 b b,Q!dBfASZrfiFeSKTjYJm:localhost:8800 a a,Q!dBfASZrfiFeSKTjYJm:localhost:8800 _ _,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ^ ^,Q!dBfASZrfiFeSKTjYJm:localhost:8800 ] ],Q!dBfASZrfiFeSKTjYJm:localhost:8800 \ \,Q!dBfASZrfiFeSKTjYJm:localhost:8800 [ [+Q !dBfASZrfiFeSKTjYJm:localhost:8800 Z Z J_ ~ v J  R P  >  V $ | \ * b1 , iL8&q8?X pxF D | 1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcq1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo(1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8M1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 21e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4O1e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 v1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk ^1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 N1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwE1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4=0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk21e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc]0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT431e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksT1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s:1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0>1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4e1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU (1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8M1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8K1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAm1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIa1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw ]1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcjd1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo g1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM <1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw '1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1d1e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEN !q | 4 ? D h sx6;_joigQ3 e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.power_levels$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4 fQ']e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoceQ' e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.create$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI dQ']e!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYocQ? e!fkvdYkesQOFCAQkzky:localhost:8800m.room.history_visibility$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAgbQ/ e!fkvdYkesQOFCAQkzky:localhost:8800m.room.join_rules$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44AiaQ3 e!fkvdYkesQOFCAQkzky:localhost:8800m.room.power_levels$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490 `Q']e!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gc_Q' e!fkvdYkesQOFCAQkzky:localhost:8800m.room.create$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0 ^Q']e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90o]Q? e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.history_visibility$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAg\Q/ e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.join_rules$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEi[Q3 e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.power_levels$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4 ZQ']e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.member@anon-20191002_181700-368:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4EcYQ' e!OWGKxAmTrHLciIdrJi:localhost:8800m.room.create$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4oXQ? e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibility$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4gWQ/ e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rules$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYiVQ3 e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q UQ']e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXoscTQ' e!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw SQ']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4goRQ? e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibility$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sgQQ/ e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rules$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkiPQ3 e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI OQ']e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMcNQ' e!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg MQ']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsoLQ? e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.history_visibility$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWkgKQ/ e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.join_rules$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tYiJQ3 e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.power_levels$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro IQ']e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.member@anon-20191002_181700-363:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEcHQ' e!pUSFAnuwUuMlbiInDR:localhost:8800m.room.create$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k GQ']e!SrMQpDMFREKRMELwbL:localhost:8800m.room.member@anon-20191002_181700-361:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4  | kdeQac$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2031}{"auth_events": ["$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "type": "m.room.power_levels", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"users": {"@anon-20191002_181700-363:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042243319, "hashes": {"sha256": "7wxd+B5pW1FRhlj0xkgldvb+UiCAq091O4UxAN3mQQk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YLhYxRPKlZU81laq8h2MnTszQcmlMw9akDtmmZCOrNX8zKZXkdZ/STA4X/XInPNnJRdrdo7YJjZG8uXM8/viBw"}}, "unsigned": {"age_ts": 1570042243319}}vceQay$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2030}{"auth_events": ["$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k"], "prev_events": ["$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k"], "type": "m.room.member", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-363", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-363:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042242673, "hashes": {"sha256": "/R4qHusA3btIkCkcLr/+kSwHZmVoog/oxCxTkw2c4rE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oS1fR8MnZ7nTNZCkZfSCKIlZfaMAfpxqI/70VF8MRtB4dM3/RYnWPzlI6hub53qOSVe7n7owsoKkJ2Gil5hrCw"}}, "unsigned": {"age_ts": 1570042242673}}ibeQa_$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2029}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-363:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042241588, "hashes": {"sha256": "ZuaxpnYOv7wJUXOSQ1Qt1So9Tk44yzZ6d2ZgWbcfl5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jcBb+iBng8UB8TOjf9HrjMW29gJxiUe+6I96I7RVSWe2fvWy5+LowM4GFcHqdzbM0FvWhv1NY1AHA1/hg6neCQ"}}, "unsigned": {"age_ts": 1570042241588}}aeQa?$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800{"token_id": 378, "stream_ordering": 2028}{"auth_events": ["$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o", "$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw", "$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA"], "prev_events": ["$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o"], "type": "m.room.member", "room_id": "!SrMQpDMFREKRMELwbL:localhost:8800", "sender": "@anon-20191002_181700-361:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-361", "avatar_url": null}, "depth": 61, "prev_state": [], "state_key": "@anon-20191002_181700-361:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042238772, "hashes": {"sha256": "hFxrVJ+uMxbOpogeZyPMo0Tw1q2jTSvqq29FyPj3NAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uzlo026Of8/KsCQ7e9PnVS+D15/M8kcnXOYWGT9xS4lSbslXuMc1WPhv1/PdsxI20BWRs7UjZBHH+pam264/Dg"}}, "unsigned": {"age_ts": 1570042238772, "replaces_state": "$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk"}} 7P x 0 X  K  > f Fp(n&Nv.V~6^>E/]=@anon-20191002_181700-403:localhost:8800anon-20191002_181700-403E.]=@anon-20191002_181700-401:localhost:8800anon-20191002_181700-401E-]=@anon-20191002_181700-400:localhost:8800anon-20191002_181700-400E,]=@anon-20191002_181700-399:localhost:8800anon-20191002_181700-399E+]=@anon-20191002_181700-398:localhost:8800anon-20191002_181700-398E*]=@anon-20191002_181700-397:localhost:8800anon-20191002_181700-397E)]=@anon-20191002_181700-395:localhost:8800anon-20191002_181700-395E(]=@anon-20191002_181700-394:localhost:8800anon-20191002_181700-394E']=@anon-20191002_181700-393:localhost:8800anon-20191002_181700-393E&]=@anon-20191002_181700-392:localhost:8800anon-20191002_181700-392E%]=@anon-20191002_181700-391:localhost:8800anon-20191002_181700-391E$]=@anon-20191002_181700-390:localhost:8800anon-20191002_181700-390E#]=@anon-20191002_181700-389:localhost:8800anon-20191002_181700-389E"]=@anon-20191002_181700-388:localhost:8800anon-20191002_181700-388E!]=@anon-20191002_181700-387:localhost:8800anon-20191002_181700-387E ]=@anon-20191002_181700-386:localhost:8800anon-20191002_181700-386E]=@anon-20191002_181700-384:localhost:8800anon-20191002_181700-384E]=@anon-20191002_181700-383:localhost:8800anon-20191002_181700-383E]=@anon-20191002_181700-382:localhost:8800anon-20191002_181700-382E]=@anon-20191002_181700-380:localhost:8800anon-20191002_181700-380E]=@anon-20191002_181700-379:localhost:8800anon-20191002_181700-379E]=@anon-20191002_181700-378:localhost:8800anon-20191002_181700-378E]=@anon-20191002_181700-376:localhost:8800anon-20191002_181700-376E]=@anon-20191002_181700-375:localhost:8800anon-20191002_181700-375E]=@anon-20191002_181700-374:localhost:8800anon-20191002_181700-374E]=@anon-20191002_181700-373:localhost:8800anon-20191002_181700-373E]=@anon-20191002_181700-362:localhost:8800anon-20191002_181700-362E]=@anon-20191002_181700-360:localhost:8800anon-20191002_181700-360E]=@anon-20191002_181700-358:localhost:8800anon-20191002_181700-358E]=@anon-20191002_181700-359:localhost:8800anon-20191002_181700-359E ]=@anon-20191002_181700-357:localhost:8800anon-20191002_181700-357E ]=@anon-20191002_181700-355:localhost:8800anon-20191002_181700-355E ]=@anon-20191002_181700-356:localhost:8800anon-20191002_181700-356E ]=@anon-20191002_181700-354:localhost:8800anon-20191002_181700-354E ]=@anon-20191002_181700-352:localhost:8800anon-20191002_181700-352E]=@anon-20191002_181700-351:localhost:8800anon-20191002_181700-351E]=@anon-20191002_181700-350:localhost:8800anon-20191002_181700-3502]@anon-20191002_181700-349:localhost:8800boris2]@anon-20191002_181700-348:localhost:8800borisE]=@anon-20191002_181700-347:localhost:8800anon-20191002_181700-347E]=@anon-20191002_181700-346:localhost:8800anon-20191002_181700-346E]=@anon-20191002_181700-345:localhost:8800anon-20191002_181700-345E]=@anon-20191002_181700-343:localhost:8800anon-20191002_181700-343E]=@anon-20191002_181700-344:localhost:8829anon-20191002_181700-344E]=@anon-20191002_181700-342:localhost:8800anon-20191002_181700-342E~]=@anon-20191002_181700-341:localhost:8800anon-20191002_181700-341E}]=@anon-20191002_181700-339:localhost:8800anon-20191002_181700-339E|]=@anon-20191002_181700-340:localhost:8829anon-20191002_181700-340E{]=@anon-20191002_181700-338:localhost:8800anon-20191002_181700-338Ez]=@anon-20191002_181700-337:localhost:8800anon-20191002_181700-337Ey]=@anon-20191002_181700-336:localhost:8800anon-20191002_181700-336E]=@anon-20191002_181700-367:localhost:8800anon-20191002_181700-367E]=@anon-20191002_181700-365:localhost:8800anon-20191002_181700-365E]=@anon-20191002_181700-363:localhost:8800anon-20191002_181700-363E]=@anon-20191002_181700-361:localhost:8800anon-20191002_181700-361 L " 5Lk eQac$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2070}{"auth_events": ["$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "type": "m.room.power_levels", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"users": {"@anon-20191002_181700-371:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042284561, "hashes": {"sha256": "ACCKy7AdDl/TaTJ96bZYfycTR7Gjb+yFsm4cg1lzaIw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sk2fbSsTGu0Kwnr+IVgDdTxFHBwhVdEqx0xi5bLhSjrCmJl9Of1Acvve1lwb+oqBL8oA7GMJVaC8eoJgq/p9DA"}}, "unsigned": {"age_ts": 1570042284561}}v eQay$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2069}{"auth_events": ["$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU"], "prev_events": ["$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU"], "type": "m.room.member", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-371", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-371:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042284031, "hashes": {"sha256": "bvTMlwTDDV9lxpHtlpRMlqkFtrnTn0PfAcLg6Gp91gA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MKGaeeZ98Gylc2zeqWANrRguLo0LYIW5DwEcOJbCuom2jcIqI61bohJOSRmW830MtClduFOkPTugsRphz1d5Cg"}}, "unsigned": {"age_ts": 1570042284031}}i eQa_$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2068}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-371:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042283260, "hashes": {"sha256": "5nyYkj0wRSZePL/u1m7okRNQaGOvaAP7IZaNmqAP9H4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+28vunXmVlE9Yyi3gd9nAMYT+tIww5nKW3fswdHtNXPTDMMTyCx1010S6fm8Efxgc4pfmYcJ3zJt3N03utciCg"}}, "unsigned": {"age_ts": 1570042283260}}ZeQaA$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2067}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk"], "type": "m.room.member", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-370:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042281500, "hashes": {"sha256": "sQkKyOALfY5Ck3KG1V+yE9hQo3XU2mKUAKdxCzujv7A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HWRkIML674KI3ofQgHys67dw0+pttdv4Pk79WW4w0uW64ltOsJGwHGKL8pKdQLqWSw4pkLUzQm1ILT7Hgg0ZAQ"}}, "unsigned": {"age_ts": 1570042281500, "replaces_state": "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"}} y fyiheQa_$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2035}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-365:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042249324, "hashes": {"sha256": "F8RUCAGot2cT7zkshA1iRVpjIckZw5knLOlYFzw03QA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "naGgvK7OVkbw6nVZtfypnsWtAkZLaMtxAX68zhzzeeJmeKkSKqXJNhakuj0K0Zo+QoT7I9OG4G3FkRxTiNjsCw"}}, "unsigned": {"age_ts": 1570042249324}}geQa7$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2034}{"auth_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro", "$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk"], "type": "m.room.member", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-364", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-364:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042247230, "hashes": {"sha256": "YJgJnNROm00vw8USSHzuWMdSMIiAb0Kde30bwNKo4jM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fAqWYz2rCUKx3PT+49uz7ZOExx/VucOjViz/Jo0tY8ZjgfPPB+LAzTMP49Y7WGnN6Dqo85oziIO7/loVsiy3Cg"}}, "unsigned": {"age_ts": 1570042247230, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-363:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-363:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-363", "avatar_url": null}, "sender": "@anon-20191002_181700-363:localhost:8800"}]}}feQa$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2033}{"auth_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro", "$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY"], "type": "m.room.history_visibility", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042244911, "hashes": {"sha256": "VI/1pxuoBXpEMKVRwRpls1IEON1Fo5N+LkiT1aWkNOc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+CF9YZiZa3K3csSxxhvm3U/HGSYUF6/q0MU7GgCLbw/DwhZElOPVMVyspiO1CxVJygy7IVRMJJIStGWt4NWtAA"}}, "unsigned": {"age_ts": 1570042244911}}teeQau$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY!pUSFAnuwUuMlbiInDR:localhost:8800{"token_id": 381, "stream_ordering": 2032}{"auth_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro", "$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k", "$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE"], "prev_events": ["$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro"], "type": "m.room.join_rules", "room_id": "!pUSFAnuwUuMlbiInDR:localhost:8800", "sender": "@anon-20191002_181700-363:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042244249, "hashes": {"sha256": "zaDCUOts97VI8PxknUr090s+mfGknKGc0omV+R8xBj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o1R31/7ufDyIyEtMd5hQAweUi+JEqdhTzVG351MofoIGzjGSnGe/0h0d6ICG0Rw7lLulNN0Hl0wU0nCL0GncBQ"}}, "unsigned": {"age_ts": 1570042244249}}  leQa$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2039}{"auth_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI", "$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk"], "type": "m.room.history_visibility", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042252859, "hashes": {"sha256": "bis7+UJ8UYK44OdXoc6U50Wz7zGPuEOQKAQIwjMX954"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E/Obo3mWHAzCQVLDSzSzRCt2jN0bU4V9CVNQKMfPPjRyVfJsseuIcGwIWLOtXJ+XZPy1MEMFIJaBr4hVNiEQBg"}}, "unsigned": {"age_ts": 1570042252859}}tkeQau$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2038}{"auth_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI", "$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI"], "type": "m.room.join_rules", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042252008, "hashes": {"sha256": "oYCEKhvOrR85TojRPTug/jEhKjZiBP1LXBGVdmN5T+Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BRcad8JBeBEqYmvbcWAj3sTXgwg0kx30QPmDo6csCNcrSNWxsNdvzA7UPK/+Z2GpiN2Ycn636X/peaAtQk/jCA"}}, "unsigned": {"age_ts": 1570042252008}}kjeQac$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2037}{"auth_events": ["$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "type": "m.room.power_levels", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"users": {"@anon-20191002_181700-365:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042250786, "hashes": {"sha256": "G+CaFPOgBIYtfoWWese4Veezf3aPkf8N+MUt88j2j/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LPdZh111h61+hYqK7vaB2t1Y7HhAIKdCVKOtPnySPh3N6RNCL+bSkjX9sWEPWqDaFpK6XLqNdSMsSWdGZCCaBg"}}, "unsigned": {"age_ts": 1570042250786}}vieQay$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2036}{"auth_events": ["$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg"], "prev_events": ["$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg"], "type": "m.room.member", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-365", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-365:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042250060, "hashes": {"sha256": "CHO1mqdxb7Sa1f7+mKxjODX4cjSywZlJEi4BfP3oV2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bsVdk1rWwRuXI4id1Svfi7x/Kjt9w4f9vspuCM6ecC/GBdMNu+ii6CBA+iXvlOrRz2MGYjOW48PlZSdMqgqaCQ"}}, "unsigned": {"age_ts": 1570042250060}}  4 h 9mfd]c@anon-20191002_181700-385:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwo127.0.0.1|d]c@anon-20191002_181700-393:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNFeF4sQUJaWVY3JkBwOXQKMDAyZnNpZ25hdHVyZSCWZXxHZjQTxOtAVnyUKA9idywM-AHyiS4-GrYtUx6zdAo127.0.0.1d]c@anon-20191002_181700-392:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1XI3RjVjo6QXR3Tjl4aEcKMDAyZnNpZ25hdHVyZSD2lW-Xgp8w5ukMnbPAV39B0bWFhYFL1jT6Wn_Ww0npIgo127.0.0.1d]c@anon-20191002_181700-391:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwqRHE3bH5-PVYyK2I0RCYKMDAyZnNpZ25hdHVyZSAEG-vFxynCIErZN0PU9O5i56FHtZEbxFuvsVBOwFxA1wo127.0.0.1d]c@anon-20191002_181700-390:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0ubU5jK1RtaWFBbHliVmcKMDAyZnNpZ25hdHVyZSDyfrDkklGvY9_vom0YlJRLBj1NQstwJXx13pdW6-MaMwo127.0.0.1a[a@anon-20191002_181700-38:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUFReW5GSE1GZWhAdlpeTAowMDJmc2lnbmF0dXJlIGH-ceohOfc1pmG22FbQ8g-thmmEjreorOSrJwLamazWCg127.0.0.1d]c@anon-20191002_181700-389:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHp6Z0EwUm80KitaMkpETXcKMDAyZnNpZ25hdHVyZSBlsB49JvXxCyMk6o6fapIVQCnBcva45QBGYmtS5BKKBAo127.0.0.1d]c@anon-20191002_181700-388:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF95VU5hemV6fmJedmtMaFgKMDAyZnNpZ25hdHVyZSDz7FxYpShuVIV36DhvtTaitY3TlWlv68YskuY-1Ot6Qwo127.0.0.1d]c@anon-20191002_181700-387:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlia0JtQkBmV3VPS09kanUKMDAyZnNpZ25hdHVyZSCHeSHljZsgNpyA0gvbQbkJ8-4G5t4Ywq-t7geng7Ih6Qo127.0.0.1d]c@anon-20191002_181700-386:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9Fc0wuMl8xM1c4YW1CREgKMDAyZnNpZ25hdHVyZSA3WuGT1fvmgWAOhsMNpgmzTj0NDM9yJnvO3x46JsV22Qo127.0.0.1~ 8l D `8r]c!E@anon-20191002_181700-374:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAoAEAOAEZYHY127.0.0.1Perl + Net::Async::HTTP/0.44m;|q]c!E@anon-20191002_181700-373:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-BwoLNMPGJNAVZ127.0.0.1Perl + Net::Async::HTTP/0.44m!%p]c!E@anon-20191002_181700-372:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgoADGVRBGQNM127.0.0.1Perl + Net::Async::HTTP/0.44mo]c!E@anon-20191002_181700-371:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQoMVADRLDOGO127.0.0.1Perl + Net::Async::HTTP/0.44mSn]c!E@anon-20191002_181700-370:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9goSBQUDYTSCJ127.0.0.1Perl + Net::Async::HTTP/0.44mcm]c!E@anon-20191002_181700-369:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0woPMLSUBDYRA127.0.0.1Perl + Net::Async::HTTP/0.44mxl]c!E@anon-20191002_181700-368:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-QoOXEBNZFASJ127.0.0.1Perl + Net::Async::HTTP/0.44mϱk]c!E@anon-20191002_181700-367:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1EwoYMOZJNEHXT127.0.0.1Perl + Net::Async::HTTP/0.44mϘj]c!E@anon-20191002_181700-365:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcxOHh4ck9mN3p2Tk9Xcm8KMDAyZnNpZ25hdHVyZSCijeAQVy_5tvUy0svjoUMTsOLNyNP-YIfSOFUnS2Bw_goGEIVTPEZWO127.0.0.1Perl + Net::Async::HTTP/0.44m~i]c!E@anon-20191002_181700-366:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN6aCNTd35afmdfSjNPbWMKMDAyZnNpZ25hdHVyZSAdNMp4yyQ_7arrKfOQWuhzN5mPmdIRUKkHtz1rz0aQ5AoFABJQITKMR127.0.0.1Perl + Net::Async::HTTP/0.44m~ ~z v r n j fb^ZVRNJFWeeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800VeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800UeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800TeeQ$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800SeeQ$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800ReeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk!hDAzBWYEyRVBRlrCHh:localhost:8800QeeQ$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800PeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800OeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800NeeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800MeeQ$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800LeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800KeeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800JeeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800IeeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800HeeQ$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800GeeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak!OWGKxAmTrHLciIdrJi:localhost:8800FeeQ$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800EeeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800DeeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800CeeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800BeeQ$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800AeeQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA!aknLNLxfChlLvFYhkJ:localhost:8800@eeQ$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800?eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800>eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800=eeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800<eeQ$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800;eeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800:eeQ$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800 -RM H C > 9 4/*|%w rmhc TmQe!csWEXfVEVxdviNvgAd:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4TlQe!rQeYcODvQiLsOIbQrJ:localhost:8800$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUTkQe!csWEXfVEVxdviNvgAd:localhost:8800$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQTjQe!aHyAJEOSdKqTiRjOvw:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wTiQe!aHyAJEOSdKqTiRjOvw:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0ThQe!aHyAJEOSdKqTiRjOvw:localhost:8800$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcTgQe!aHyAJEOSdKqTiRjOvw:localhost:8800$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4QcTfQe!aHyAJEOSdKqTiRjOvw:localhost:8800$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8TeQe!aHyAJEOSdKqTiRjOvw:localhost:8800$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsTdQe!aHyAJEOSdKqTiRjOvw:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYTcQe!aHyAJEOSdKqTiRjOvw:localhost:8800$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiITbQe!hnQOBexFYpvJntEChZ:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8TaQe!hnQOBexFYpvJntEChZ:localhost:8800$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgT`Qe!hnQOBexFYpvJntEChZ:localhost:8800$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90T_Qe!hnQOBexFYpvJntEChZ:localhost:8800$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwT^Qe!hnQOBexFYpvJntEChZ:localhost:8800$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwT]Qe!hnQOBexFYpvJntEChZ:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0T\Qe!hnQOBexFYpvJntEChZ:localhost:8800$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUT[Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53ETZQe!hDAzBWYEyRVBRlrCHh:localhost:8800$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3ETYQe!hDAzBWYEyRVBRlrCHh:localhost:8800$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkTXQe!hDAzBWYEyRVBRlrCHh:localhost:8800$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4TWQe!hDAzBWYEyRVBRlrCHh:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoTVQe!hDAzBWYEyRVBRlrCHh:localhost:8800$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiITUQe!fkvdYkesQOFCAQkzky:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYTTQe!fkvdYkesQOFCAQkzky:localhost:8800$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPATSQe!fkvdYkesQOFCAQkzky:localhost:8800$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44ATRQe!fkvdYkesQOFCAQkzky:localhost:8800$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490TQQe!fkvdYkesQOFCAQkzky:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gTPQe!fkvdYkesQOFCAQkzky:localhost:8800$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0TOQe!OWGKxAmTrHLciIdrJi:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90TNQe!OWGKxAmTrHLciIdrJi:localhost:8800$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBATMQe!OWGKxAmTrHLciIdrJi:localhost:8800$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMETLQe!OWGKxAmTrHLciIdrJi:localhost:8800$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4TKQe!OWGKxAmTrHLciIdrJi:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4ETJQe!OWGKxAmTrHLciIdrJi:localhost:8800$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4TIQe!aknLNLxfChlLvFYhkJ:localhost:8800$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4THQe!aknLNLxfChlLvFYhkJ:localhost:8800$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYTGQe!aknLNLxfChlLvFYhkJ:localhost:8800$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5QTFQe!aknLNLxfChlLvFYhkJ:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosTEQe!aknLNLxfChlLvFYhkJ:localhost:8800$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4XwTDQe!HWTlaNxUKnDsrtlOxU:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gTCQe!HWTlaNxUKnDsrtlOxU:localhost:8800$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4sTBQe!HWTlaNxUKnDsrtlOxU:localhost:8800$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291WkkTAQe!HWTlaNxUKnDsrtlOxU:localhost:8800$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI  gzvoeQay$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2042}{"auth_events": ["$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw"], "prev_events": ["$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw"], "type": "m.room.member", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-367", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-367:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042256721, "hashes": {"sha256": "eP4OC47BeHHO+/xUk2i+E+xMuYsP8Jx3iDTWMtVIqaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QaZKRtkLLb93fb6hKPZJES7sfsGWCtx4iVk4d24tO60WVX8rQS4I694OapKvPkfLmSs6+qro9MH3nZxIf3u3Bw"}}, "unsigned": {"age_ts": 1570042256721}}ineQa_$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2041}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-367:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042255764, "hashes": {"sha256": "4mKt7kDo3ObOebwvrWA8vpsJqvcmsspJdrZHxecuiGc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jLPu5Dynt7DCSwbQd9+5k/Pehj5T05KtZGdwNzpIn3WL07ftEUpdxhIylPQIQRO0RgqdHtP+80imA+P5kQDZAg"}}, "unsigned": {"age_ts": 1570042255764}}meQa7$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800{"token_id": 383, "stream_ordering": 2040}{"auth_events": ["$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI", "$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg", "$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk", "$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM"], "prev_events": ["$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s"], "type": "m.room.member", "room_id": "!HWTlaNxUKnDsrtlOxU:localhost:8800", "sender": "@anon-20191002_181700-365:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-366", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-366:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042254421, "hashes": {"sha256": "c+zJlUVKub/+1gfhU8NzsDyT4T/O4HneBRWh25zt44k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XLbEAdX1zTZBRVnrtZZpD9hajnCwgH/zz4Zl7cZWDjpa+9ZFFysVhq6oy0E7cfp9g6J/62bRCnSY3mxR1PRUCw"}}, "unsigned": {"age_ts": 1570042254421, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-365:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-365:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-365", "avatar_url": null}, "sender": "@anon-20191002_181700-365:localhost:8800"}]}} [<uC{IOV$  Q ) W % ] +c1 i7 o= [ ~j:r@ x F [21e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE .1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg p K31e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw`1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMX1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E 1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsM1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawO1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 O1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP81e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o *1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us"1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84g1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekl1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_Ip1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4/1e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA L1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIc1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwv1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY'1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ91e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs81e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIe1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wi1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk F1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g x1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo J7p 2 DTOJ,E e]]Q$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg@anon-20191002_181700-377:localhost:8800@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800leaveCD e]]Q=$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI@anon-20191002_181700-377:localhost:8800@anon-20191002_181700-377:localhost:8800!xXYMxashIZAUOTuGAJ:localhost:8800joinanon-20191002_181700-377CC e]]Q=$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM@anon-20191002_181700-376:localhost:8800@anon-20191002_181700-376:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800joinanon-20191002_181700-376CB e]]Q=$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc@anon-20191002_181700-375:localhost:8800@anon-20191002_181700-375:localhost:8800!ozgnwUlebxvzLVwyHW:localhost:8800joinanon-20191002_181700-375CA e]]Q=$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0@anon-20191002_181700-375:localhost:8800@anon-20191002_181700-375:localhost:8800!QcaNrIiUsWpTiVGOnt:localhost:8800joinanon-20191002_181700-375,@ e]]Q$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800leaveC? e]]Q=$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800!csWEXfVEVxdviNvgAd:localhost:8800joinanon-20191002_181700-374C> e]]Q=$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800!rQeYcODvQiLsOIbQrJ:localhost:8800joinanon-20191002_181700-374,= e]]Q$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w@anon-20191002_181700-372:localhost:8800@anon-20191002_181700-372:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800leaveE< e]]Q=$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0@anon-20191002_181700-372:localhost:8800@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800inviteanon-20191002_181700-372C; e]]Q=$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY@anon-20191002_181700-373:localhost:8800@anon-20191002_181700-373:localhost:8800!aHyAJEOSdKqTiRjOvw:localhost:8800joinanon-20191002_181700-373,: e]]Q$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8@anon-20191002_181700-371:localhost:8800@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800leaveC9 e]]Q=$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0@anon-20191002_181700-371:localhost:8800@anon-20191002_181700-371:localhost:8800!hnQOBexFYpvJntEChZ:localhost:8800joinanon-20191002_181700-371,8 e]]Q$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E@anon-20191002_181700-370:localhost:8800@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800leaveC7 e]]Q=$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo@anon-20191002_181700-370:localhost:8800@anon-20191002_181700-370:localhost:8800!hDAzBWYEyRVBRlrCHh:localhost:8800joinanon-20191002_181700-370,6 e]]Q$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY@anon-20191002_181700-369:localhost:8800@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800leaveC5 e]]Q=$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g@anon-20191002_181700-369:localhost:8800@anon-20191002_181700-369:localhost:8800!fkvdYkesQOFCAQkzky:localhost:8800joinanon-20191002_181700-369,4 e]]Q$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90@anon-20191002_181700-368:localhost:8800@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800leaveC3 e]]Q=$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E@anon-20191002_181700-368:localhost:8800@anon-20191002_181700-368:localhost:8800!OWGKxAmTrHLciIdrJi:localhost:8800joinanon-20191002_181700-368C2 e]]Q=$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos@anon-20191002_181700-367:localhost:8800@anon-20191002_181700-367:localhost:8800!aknLNLxfChlLvFYhkJ:localhost:8800joinanon-20191002_181700-367E1 e]]Q=$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g@anon-20191002_181700-366:localhost:8800@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800inviteanon-20191002_181700-366 ih5i g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNFeF4sQUJaWVY3JkBwOXQKMDAyZnNpZ25hdHVyZSCWZXxHZjQTxOtAVnyUKA9idywM-AHyiS4-GrYtUx6zdAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1XI3RjVjo6QXR3Tjl4aEcKMDAyZnNpZ25hdHVyZSD2lW-Xgp8w5ukMnbPAV39B0bWFhYFL1jT6Wn_Ww0npIgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwqRHE3bH5-PVYyK2I0RCYKMDAyZnNpZ25hdHVyZSAEG-vFxynCIErZN0PU9O5i56FHtZEbxFuvsVBOwFxA1wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0ubU5jK1RtaWFBbHliVmcKMDAyZnNpZ25hdHVyZSDyfrDkklGvY9_vom0YlJRLBj1NQstwJXx13pdW6-MaMwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHp6Z0EwUm80KitaMkpETXcKMDAyZnNpZ25hdHVyZSBlsB49JvXxCyMk6o6fapIVQCnBcva45QBGYmtS5BKKBAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF95VU5hemV6fmJedmtMaFgKMDAyZnNpZ25hdHVyZSDz7FxYpShuVIV36DhvtTaitY3TlWlv68YskuY-1Ot6Qwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlia0JtQkBmV3VPS09kanUKMDAyZnNpZ25hdHVyZSCHeSHljZsgNpyA0gvbQbkJ8-4G5t4Ywq-t7geng7Ih6Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ7MzBOJnJ4MjdkRlY4TH4KMDAyZnNpZ25hdHVyZSDEWdLU6ypMTjm7IoIQyEblzSvLEBWgti22-K26eYOJfwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQo g * T~=gg]!c@anon-20191002_181700-377:localhost:8800IARUZBQDWZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggog]!c@anon-20191002_181700-375:localhost:8800ABNAUGMGBUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAog]!c@anon-20191002_181700-376:localhost:8800IDKHLQVFRNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgog~]!c@anon-20191002_181700-374:localhost:8800AEAOAEZYHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF54SkxkbkguRCZCYTs7dTkKMDAyZnNpZ25hdHVyZSC83tcV4033g8cwarAm0mPTXdIotNmJQxzi57fUDGK9HAog}]!c@anon-20191002_181700-372:localhost:8800ADGVRBGQNMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHgjWXF4OE0jLG5wPV9oXzoKMDAyZnNpZ25hdHVyZSD8kD6RmPtSx9robw_X7ycjVphbplHb4EixbNCHJBSxdgog|]!c@anon-20191002_181700-373:localhost:8800LNMPGJNAVZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1OQjA1ZjpSS2d3SXBtVjoKMDAyZnNpZ25hdHVyZSAt2w3cxPCtD1s7lD2pHc0hMY4aG4WmpYtl_bvF6dO-Bwog{]!c@anon-20191002_181700-371:localhost:8800MVADRLDOGOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBLb1RBcDBealF1K3VTVWkKMDAyZnNpZ25hdHVyZSB_VNcCl9NSkCwlTwMY6siVP8h42DW-h8RpDpgADpi1gQogz]!c@anon-20191002_181700-370:localhost:8800SBQUDYTSCJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRjamItOEs2QDtreDthVW8KMDAyZnNpZ25hdHVyZSDXWDdSYGrRvn2Sl9DF-yj4PVS_rPJlV-NbzGVDV_Lk9gogy]!c@anon-20191002_181700-369:localhost:8800PMLSUBDYRAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHlKLDBOYTt6TXM9OUo2MmoKMDAyZnNpZ25hdHVyZSDlcdfS0oasqHmpnKGXCNybQJguyocKBCq_1mzN-tEz0wogx]!c@anon-20191002_181700-368:localhost:8800OXEBNZFASJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZHKnFkRWVjcTM0YktZdEIKMDAyZnNpZ25hdHVyZSBR3te8Be3LHW7WOOWT30KTrc1zzdIEEAH9kXhAumrL-Qogw]!c@anon-20191002_181700-367:localhost:8800YMOZJNEHXTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVyUHg4dDMzQHNkeFRIQjMKMDAyZnNpZ25hdHVyZSCz_rTf7OeSpZN1Di1IA9ZRyQgusAG8JPcvKE6-2wK1Ewo n 9 3 > l 31o- 7T 7 7 geeQ3 $e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levelsij ceQ']$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800joinda`eQ' $gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800m.room.create_eQ']$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800leavem^eQ? $u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibilitye]eQ/ $dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rulesg\eQ3 $yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels [eQ']$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800joinaZeQ' $D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create 7mAeQ? $RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800m.room.history_visibilitye@eQ/ $b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800m.room.join_rulesg?eQ3 $ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800m.room.power_levels >eQ']$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800m.room.member@anon-20191002_181700-367:localhost:8800joina=eQ' $nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800m.room.create<eQ']$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-366:localhost:8800invitem;eQ? $x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.history_visibilitye:eQ/ $MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.join_rulesg9eQ3 $d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.power_levels 8eQ']$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.member@anon-20191002_181700-365:localhost:8800joina7eQ' $FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg!HWTlaNxUKnDsrtlOxU:localhost:8800m.room.create 2d  / % C a,Jh3Qo n ]@anon-20191002_181700-386:localhost:8800@anon-20191002_181700-386:localhost:8800 anon-20191002_181700-386n]@anon-20191002_181700-384:localhost:8800@anon-20191002_181700-384:localhost:8800 anon-20191002_181700-384n]@anon-20191002_181700-383:localhost:8800@anon-20191002_181700-383:localhost:8800 anon-20191002_181700-383n]@anon-20191002_181700-382:localhost:8800@anon-20191002_181700-382:localhost:8800 anon-20191002_181700-382n]@anon-20191002_181700-380:localhost:8800@anon-20191002_181700-380:localhost:8800 anon-20191002_181700-380n]@anon-20191002_181700-379:localhost:8800@anon-20191002_181700-379:localhost:8800 anon-20191002_181700-379n]@anon-20191002_181700-378:localhost:8800@anon-20191002_181700-378:localhost:8800 anon-20191002_181700-378n]@anon-20191002_181700-376:localhost:8800@anon-20191002_181700-376:localhost:8800 anon-20191002_181700-376n]@anon-20191002_181700-375:localhost:8800@anon-20191002_181700-375:localhost:8800 anon-20191002_181700-375n]@anon-20191002_181700-374:localhost:8800@anon-20191002_181700-374:localhost:8800 anon-20191002_181700-374n]@anon-20191002_181700-373:localhost:8800@anon-20191002_181700-373:localhost:8800 anon-20191002_181700-373n]@anon-20191002_181700-365:localhost:8800@anon-20191002_181700-365:localhost:8800 anon-20191002_181700-365n]@anon-20191002_181700-363:localhost:8800@anon-20191002_181700-363:localhost:8800 anon-20191002_181700-363n]@anon-20191002_181700-361:localhost:8800@anon-20191002_181700-361:localhost:8800 anon-20191002_181700-361n]@anon-20191002_181700-362:localhost:8800@anon-20191002_181700-362:localhost:8800 anon-20191002_181700-362n]@anon-20191002_181700-360:localhost:8800@anon-20191002_181700-360:localhost:8800 anon-20191002_181700-360n]@anon-20191002_181700-358:localhost:8800@anon-20191002_181700-358:localhost:8800 anon-20191002_181700-358n]@anon-20191002_181700-359:localhost:8800@anon-20191002_181700-359:localhost:8800 anon-20191002_181700-359n ]@anon-20191002_181700-357:localhost:8800@anon-20191002_181700-357:localhost:8800 anon-20191002_181700-357(n ]@anon-20191002_181700-355:localhost:8800@anon-20191002_181700-355:localhost:8800 anon-20191002_181700-355n ]@anon-20191002_181700-356:localhost:8800@anon-20191002_181700-356:localhost:8800 anon-20191002_181700-356n ]@anon-20191002_181700-354:localhost:8800@anon-20191002_181700-354:localhost:8800 anon-20191002_181700-354n ]@anon-20191002_181700-352:localhost:8800@anon-20191002_181700-352:localhost:8800 anon-20191002_181700-352n]@anon-20191002_181700-351:localhost:8800@anon-20191002_181700-351:localhost:8800 anon-20191002_181700-351n]@anon-20191002_181700-350:localhost:8800@anon-20191002_181700-350:localhost:8800 anon-20191002_181700-350Z]i@anon-20191002_181700-349:localhost:8800@anon-20191002_181700-349:localhost:8800 borisZ]i@anon-20191002_181700-348:localhost:8800@anon-20191002_181700-348:localhost:8800 borisn]@anon-20191002_181700-367:localhost:8800@anon-20191002_181700-367:localhost:8800 anon-20191002_181700-367 D DHseQa$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2046}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4"], "type": "m.room.test", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042260123, "hashes": {"sha256": "r/g8+rUZNU9sUVSjqj21x3BtwQRIIDtoiectA1w2u+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Sg77B7V7JByNP3NTV+Op3+MmZkx7GkEHX9/Kfs7vzbrJVH9kffuP2Ffo7hLEhmZEZvxTMD45nvNWi8ZCUqoAQ"}}, "unsigned": {"age_ts": 1570042260123}}reQa$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2045}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY"], "type": "m.room.history_visibility", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042258799, "hashes": {"sha256": "497WEF1x/Ca1jIo3OqzVRCNP3VDgCisRuFHorPf7ZoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EpTDG2mWffrcajMOLOGbD2eT+fUJ4eYVyHXpR/vbbs0Ijf9dko+yyjttepvjghDb1fTVLDSmf7mcbUfmaLLbAg"}}, "unsigned": {"age_ts": 1570042258799}}tqeQau$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2044}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q"], "type": "m.room.join_rules", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042258075, "hashes": {"sha256": "yPqV5U31X90DZuZybPECuB2KUeljxxvxcodMsRUw0gw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Em5rgFNoeWtSefhuc3q3VuMfsChQvH6+PuhbkHqdpLVUxqx3kwKM6Sjve6bgl65Tc+gtgNLVTPIoD6uyZ9gSDQ"}}, "unsigned": {"age_ts": 1570042258075}}kpeQac$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "stream_ordering": 2043}{"auth_events": ["$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "type": "m.room.power_levels", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"users": {"@anon-20191002_181700-367:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042257274, "hashes": {"sha256": "b/9QNCDHGSg0KGPawzhtEd2PgmzzgRixAv89o68cumY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8F4YCDHgwwcWDaIwV17uv+OnMeL2jDfp8qn56Q9UkhCHGIGRN4t1btq36XCBd0gBsBdWhEG37DggSR61OeubDQ"}}, "unsigned": {"age_ts": 1570042257274}} a} { y w u sqomkigeca~CeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~BeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800~AeeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800~@eeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~?eeQ$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800~>eeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800~=eeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~<eeQ$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800~;eeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800~:eeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~9eeQ$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800~8eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~7eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~6eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800~5eeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~4eeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~3eeQ$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800~2eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~1eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~0eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800~/eeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800~.eeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~-eeQ$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800~,eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800~+eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800~*eeQ$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800~)eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800~(eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800~'eeQ$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q!aknLNLxfChlLvFYhkJ:localhost:8800~&eeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800~%eeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800 V/x; n  s < _ "m&c[ [#P s 6 #yB(V^Q']!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829<Q3 !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levels6Q' !kOmCTyiizHqfCJdhlR:localhost:8800m.room.create?Q9 !kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_aliasEQ))!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800:Q/ !kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rulesBQ? !kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibility6Q' !kjjUsMowsioSQRIJeg:localhost:8800m.room.create C?Q9 !kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_alias FEQ))!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800 I<Q3 !kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels^Q']!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800^Q']!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800gBQ? !jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibility :Q/ !jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules <Q3 !jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels ^Q']!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800 6Q' !jlGSdNttccYxjfLkwW:localhost:8800m.room.create ^Q']!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800:Q/ !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rulesBQ? !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibility6Q' !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.create<Q3 !jveVPZSXJOJyNDebPO:localhost:8800m.room.power_levels[^Q']!jveVPZSXJOJyNDebPO:localhost:8800m.room.member@anon-20191002_181700-279:localhost:8800Z:Q/ !jveVPZSXJOJyNDebPO:localhost:8800m.room.join_rules\BQ? !jveVPZSXJOJyNDebPO:localhost:8800m.room.history_visibility]6Q' !jveVPZSXJOJyNDebPO:localhost:8800m.room.createY<Q3 !jomrpmwwQQtghscizn:localhost:8800m.room.power_levels ^Q']!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800 ^Q']!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800 :Q/ !jomrpmwwQQtghscizn:localhost:8800m.room.join_rules BQ? !jomrpmwwQQtghscizn:localhost:8800m.room.history_visibility 6Q' !jomrpmwwQQtghscizn:localhost:8800m.room.create ]Q'[!kkgEEVUJynguTqAoWD:localhost:8800m.room.member@anon-20191002_181700-61:localhost:8800:Q/ !kkgEEVUJynguTqAoWD:localhost:8800m.room.join_rulesBQ? !kkgEEVUJynguTqAoWD:localhost:8800m.room.history_visibility6Q' !kkgEEVUJynguTqAoWD:localhost:8800m.room.create<Q3 !kjueCKHmYaYefEEpQY:localhost:8800m.room.power_levels^Q']!kjueCKHmYaYefEEpQY:localhost:8800m.room.member@anon-20191002_181700-331:localhost:8800:Q/ !kjueCKHmYaYefEEpQY:localhost:8800m.room.join_rulesBQ? !kjueCKHmYaYefEEpQY:localhost:8800m.room.history_visibility6Q' !kjueCKHmYaYefEEpQY:localhost:8800m.room.create<Q3 !kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels E^Q']!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800 D^Q']!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800 J:Q/ !kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rules GBQ? !kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibility H YX a  q  w1;EOY e'Q ]$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Em.room.member!hDAzBWYEyRVBRlrCHh:localhost:8800mmz@anon-20191002_181700-370:localhost:8800e#Q ]$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkm.room.test!hDAzBWYEyRVBRlrCHh:localhost:8800mpmt@anon-20191002_181700-370:localhost:8800,e?Q ]$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3Em.room.history_visibility!hDAzBWYEyRVBRlrCHh:localhost:8800mm@anon-20191002_181700-370:localhost:8800$e/Q ]$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ckm.room.join_rules!hDAzBWYEyRVBRlrCHh:localhost:8800mhmR@anon-20191002_181700-370:localhost:8800&e3Q ]$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4m.room.power_levels!hDAzBWYEyRVBRlrCHh:localhost:8800mzm@anon-20191002_181700-370:localhost:8800 e'Q ]$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWom.room.member!hDAzBWYEyRVBRlrCHh:localhost:8800mm%@anon-20191002_181700-370:localhost:8800  e'Q  ]$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIm.room.create!hDAzBWYEyRVBRlrCHh:localhost:8800mm@anon-20191002_181700-370:localhost:8800 e'Q ]$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYm.room.member!fkvdYkesQOFCAQkzky:localhost:8800mm8@anon-20191002_181700-369:localhost:8800, e?Q ]$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAm.room.history_visibility!fkvdYkesQOFCAQkzky:localhost:8800mm@anon-20191002_181700-369:localhost:8800$ e/Q ]$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Am.room.join_rules!fkvdYkesQOFCAQkzky:localhost:8800mm@anon-20191002_181700-369:localhost:8800& e3Q ]$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490m.room.power_levels!fkvdYkesQOFCAQkzky:localhost:8800mm@anon-20191002_181700-369:localhost:8800 e'Q ]$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gm.room.member!fkvdYkesQOFCAQkzky:localhost:8800mѢmҪ@anon-20191002_181700-369:localhost:8800 e'Q  ]$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0m.room.create!fkvdYkesQOFCAQkzky:localhost:8800mcm@anon-20191002_181700-369:localhost:8800 e'Q ]$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90m.room.member!OWGKxAmTrHLciIdrJi:localhost:8800mPm@anon-20191002_181700-368:localhost:8800e#Q ]$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakm.room.test!OWGKxAmTrHLciIdrJi:localhost:8800mÈmÏ@anon-20191002_181700-368:localhost:8800,e?Q ]$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAm.room.history_visibility!OWGKxAmTrHLciIdrJi:localhost:8800mϽm~@anon-20191002_181700-368:localhost:8800$e/Q ]$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMEm.room.join_rules!OWGKxAmTrHLciIdrJi:localhost:8800mϻAmϻ@anon-20191002_181700-368:localhost:8800&e3Q ]$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4m.room.power_levels!OWGKxAmTrHLciIdrJi:localhost:8800mϸmϹ@anon-20191002_181700-368:localhost:8800 e'Q ]$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4Em.room.member!OWGKxAmTrHLciIdrJi:localhost:8800mϵm϶h@anon-20191002_181700-368:localhost:8800 e'Q  ]$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4m.room.create!OWGKxAmTrHLciIdrJi:localhost:8800mϲmϳ/@anon-20191002_181700-368:localhost:8800!e)Q ]$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8m.room.message!aknLNLxfChlLvFYhkJ:localhost:8800mϭmϭ@anon-20191002_181700-367:localhost:8800~e#Q ]$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAm.room.test!aknLNLxfChlLvFYhkJ:localhost:8800mϪmϪ@anon-20191002_181700-367:localhost:8800,}e?Q ]$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4m.room.history_visibility!aknLNLxfChlLvFYhkJ:localhost:8800mϥomϧi@anon-20191002_181700-367:localhost:8800$|e/Q ]$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuYm.room.join_rules!aknLNLxfChlLvFYhkJ:localhost:8800mϢmϣ@anon-20191002_181700-367:localhost:8800 -RM H C > 9 4/*|%w rmhc TTQe*!csWEXfVEVxdviNvgAd:localhost:8800$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYTSQe)!rQeYcODvQiLsOIbQrJ:localhost:8800$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8TRQe(!csWEXfVEVxdviNvgAd:localhost:8800$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUTQQe'!rQeYcODvQiLsOIbQrJ:localhost:8800$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0TPQe&!csWEXfVEVxdviNvgAd:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4TOQe%!rQeYcODvQiLsOIbQrJ:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsTNQe$!rQeYcODvQiLsOIbQrJ:localhost:8800$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUTMQe#!csWEXfVEVxdviNvgAd:localhost:8800$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQTLQe"!aHyAJEOSdKqTiRjOvw:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wTKQe!!aHyAJEOSdKqTiRjOvw:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0TJQe !aHyAJEOSdKqTiRjOvw:localhost:8800$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcTIQe!aHyAJEOSdKqTiRjOvw:localhost:8800$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4QcTHQe!aHyAJEOSdKqTiRjOvw:localhost:8800$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8TGQe!aHyAJEOSdKqTiRjOvw:localhost:8800$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsTFQe!aHyAJEOSdKqTiRjOvw:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYTEQe!aHyAJEOSdKqTiRjOvw:localhost:8800$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiITDQe!hnQOBexFYpvJntEChZ:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8TCQe!hnQOBexFYpvJntEChZ:localhost:8800$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgTBQe!hnQOBexFYpvJntEChZ:localhost:8800$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90TAQe!hnQOBexFYpvJntEChZ:localhost:8800$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwT@Qe!hnQOBexFYpvJntEChZ:localhost:8800$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwT?Qe!hnQOBexFYpvJntEChZ:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0T>Qe!hnQOBexFYpvJntEChZ:localhost:8800$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUT=Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53ET<Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rkT;Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3ET:Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_CkT9Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4T8Qe!hDAzBWYEyRVBRlrCHh:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWoT7Qe !hDAzBWYEyRVBRlrCHh:localhost:8800$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIT6Qe !fkvdYkesQOFCAQkzky:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYT5Qe !fkvdYkesQOFCAQkzky:localhost:8800$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAT4Qe !fkvdYkesQOFCAQkzky:localhost:8800$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44AT3Qe !fkvdYkesQOFCAQkzky:localhost:8800$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490T2Qe!fkvdYkesQOFCAQkzky:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gT1Qe!fkvdYkesQOFCAQkzky:localhost:8800$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0T0Qe!OWGKxAmTrHLciIdrJi:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90T/Qe!OWGKxAmTrHLciIdrJi:localhost:8800$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebakT.Qe!OWGKxAmTrHLciIdrJi:localhost:8800$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAT-Qe!OWGKxAmTrHLciIdrJi:localhost:8800$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMET,Qe!OWGKxAmTrHLciIdrJi:localhost:8800$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4T+Qe!OWGKxAmTrHLciIdrJi:localhost:8800$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4ET*Qe!OWGKxAmTrHLciIdrJi:localhost:8800$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4T)Qe!aknLNLxfChlLvFYhkJ:localhost:8800$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8T(Qe!aknLNLxfChlLvFYhkJ:localhost:8800$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA   kweQac$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2050}{"auth_events": ["$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "type": "m.room.power_levels", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"users": {"@anon-20191002_181700-368:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042263692, "hashes": {"sha256": "Bv3qN0JKUMApnjSPSfUOHb+S8I/dmU1McFyoye3SILw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Lv8IekwCJCr6mJWa/5mlcNPIwsYVuVdm5OZUT0YmX1gTkmd8u8tl+pkLnyN5xjB5n/40O6kFi0RpReexOS7Cw"}}, "unsigned": {"age_ts": 1570042263692}}vveQay$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2049}{"auth_events": ["$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4"], "prev_events": ["$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4"], "type": "m.room.member", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-368", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-368:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042263004, "hashes": {"sha256": "j8gyx64kcU7mhMief6Ug0W1tmGfbSZM6JFrhim78pew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RoYGyRax/FxLT+/iD0DzwftV417vc6e5DhOEmkza1pH7CHJqeaF6VX/uWaMNaZ2wlzdsW26AVpm5fFaJjvrjDw"}}, "unsigned": {"age_ts": 1570042263004}}iueQa_$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2048}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-368:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042262240, "hashes": {"sha256": "oFXe5poU1WMLrCDBheMqhK9nQRiELMo7Yz+Hj2e9Jqo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3YTSLdghsd9wU7GAIPP4wRuzobmsE1Xo3OB2BfX3brPbvkYMlAKhyw8FLwyuD9sR3dc9PE774jrhEpTle7DhCQ"}}, "unsigned": {"age_ts": 1570042262240}}}teQc$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800{"token_id": 384, "txn_id": "345", "stream_ordering": 2047}{"auth_events": ["$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q", "$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw", "$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos"], "prev_events": ["$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA"], "type": "m.room.message", "room_id": "!aknLNLxfChlLvFYhkJ:localhost:8800", "sender": "@anon-20191002_181700-367:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042260924, "hashes": {"sha256": "kkfoMbDG2Q2I4N+qRVthZkmeu0zQCllW1qCNTILvhR4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AmR2iISGJNxxfKaEOO3jTWsGn6P7VGoVf/zow3p08O+qiPA/cAE/Ngf2NPDWDAeibjA/h4SbfGklecToPVpiBQ"}}, "unsigned": {"age_ts": 1570042260924}} ~z v r n h pw~ &tQ]O!jIfvTrwedrWLubsnlM:localhost:8800@anon-20191002_181700-303:localhost:8800$157004185679NNCIw:localhost:8800joinQ]e!KeqmSjifajNKxtgqhj:localhost:8800@anon-20191002_181700-303:localhost:8800$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5QjointQ]O!icheSPMgpemswIdQkw:localhost:8800@anon-20191002_181700-302:localhost:8800$157004184672SfwvS:localhost:8800joinQ]e!EyyNoldCLUdFHzXTDP:localhost:8800@anon-20191002_181700-302:localhost:8800$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QjointQ]O!vpuivIQDEhyuhOLWpg:localhost:8800@anon-20191002_181700-301:localhost:8800$157004183063NdEPw:localhost:8800joinQ]e!uSBqTezaFcMnlowsEf:localhost:8800@anon-20191002_181700-301:localhost:8800$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwjointQ]O!NrxQuziwSWzsHuXIlG:localhost:8800@anon-20191002_181700-300:localhost:8800$157004181756ejZNp:localhost:8800joinQ]e!CNFopUEQTFbzjmLvii:localhost:8800@anon-20191002_181700-300:localhost:8800$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06AojointQ]O!WhqVaRReBxJXADAyYD:localhost:8800@anon-20191002_181700-299:localhost:8800$157004180448zlZXD:localhost:8800join Q]e!aLxrqpqLkbzyIxGgpk:localhost:8800@anon-20191002_181700-299:localhost:8800$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYjoint Q]O!BfEFIDBthhkweqfhir:localhost:8800@anon-20191002_181700-298:localhost:8800$157004178835mLAyG:localhost:8800join Q]e!aaRwQZdNAliyvRHpjs:localhost:8800@anon-20191002_181700-298:localhost:8800$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwjoint Q]O!ZShBIxwbJmxjjZmoRQ:localhost:8800@anon-20191002_181700-297:localhost:8800$157004176828ZZJWh:localhost:8800join Q]e!NNiyzThHMivrxhojfp:localhost:8800@anon-20191002_181700-297:localhost:8800$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIjointQ]O!QFiJrWFFeTAAAUCjCE:localhost:8800@anon-20191002_181700-296:localhost:8800$157004175621DDceh:localhost:8800joinQ]e!KmuRTfGFgJdgIDAgIW:localhost:8800@anon-20191002_181700-296:localhost:8800$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEjointQ]O!mOrKBPhetifKHDmElM:localhost:8800@anon-20191002_181700-295:localhost:8800$157004174414klNmS:localhost:8800joinQ]e!QyLUggxrTnULUAOseq:localhost:8800@anon-20191002_181700-295:localhost:8800$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIjoinsQ]M!azRJNFPIRSFAskLILK:localhost:8800@anon-20191002_181700-294:localhost:8800$15700417327EEUMr:localhost:8800joinQ]e!MBWnwKRwFznvRpAzxr:localhost:8800@anon-20191002_181700-294:localhost:8800$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4joinQ]e!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-293:localhost:8800$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8leaveQ]e!krhefVncoErkCtnvsy:localhost:8800@anon-20191002_181700-292:localhost:8800$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQojoinQ]e!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-291:localhost:8800$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwjoinQ]e!mMsxpaIlcykPuOnDyl:localhost:8800@anon-20191002_181700-290:localhost:8800$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yjoin~Q]e!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-289:localhost:8800$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwjoin}Q]e!VOhMAiLfKyTOZbmKGw:localhost:8800@anon-20191002_181700-288:localhost:8800$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYjoin|Q]e!ffijTnPMbTrDXHqOXf:localhost:8800@anon-20191002_181700-287:localhost:8800$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGojoin{Q]e!ffijTnPMbTrDXHqOXf:localhost:8800@anon-20191002_181700-286:localhost:8800$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5HojoinzQ]e!wLitJYvgvNJzanSIvO:localhost:8800@anon-20191002_181700-284:localhost:8800$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMjoinyQ]e!hWHyATwKfuznrqTiyu:localhost:8800@anon-20191002_181700-283:localhost:8800$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEjoinxQ]e!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-282:localhost:8800$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkjoin ~z v p j d `ZTPG@:62wQ]e!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-281:localhost:8800$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawjoinvQ]e!cGkVFpidyBBxUxsszG:localhost:8800@anon-20191002_181700-280:localhost:8800$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWwjoinuQ]e!jveVPZSXJOJyNDebPO:localhost:8800@anon-20191002_181700-279:localhost:8800$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgjointQ]e!rJhSRzmWBQHlIhuDXT:localhost:8800@anon-20191002_181700-277:localhost:8800$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9owjoinsQ]e!fsbkkRBZlUcBVVfMME:localhost:8800@anon-20191002_181700-276:localhost:8800$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9GcjoinrQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-274:localhost:8800$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYoleaveqQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-273:localhost:8800$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMjoinpQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-275:localhost:8800$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEinviteoQ]e!bzPCFeFSMbCESvNbxl:localhost:8800@anon-20191002_181700-272:localhost:8800$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQjoinnQ]e!RPfffkmSEbWggEjnoI:localhost:8800@anon-20191002_181700-270:localhost:8800$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIinvitemQ]e!PCgUmZOwWmtDsuFqXg:localhost:8800@anon-20191002_181700-270:localhost:8800$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59YleavelQ]e!RPfffkmSEbWggEjnoI:localhost:8800@anon-20191002_181700-271:localhost:8800$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItYjoinkQ]e!nxLxsxzliamzflrEBs:localhost:8800@anon-20191002_181700-270:localhost:8800$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_cjoinjQ]e!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-267:localhost:8800$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFkleaveiQ]e!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-269:localhost:8800$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7UjoinhQ]e!egbhiBqOGhloZzopol:localhost:8800@anon-20191002_181700-268:localhost:8800$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36ojoingQ]e!KdOYYnOuwAyQzqwUki:localhost:8800@anon-20191002_181700-266:localhost:8800$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUleavefQ]e!KdOYYnOuwAyQzqwUki:localhost:8800@anon-20191002_181700-265:localhost:8800$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8QjoineQ]e!XNfwczePlyYFWLCaui:localhost:8800@anon-20191002_181700-264:localhost:8800$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66XzojoindQ]e!XNfwczePlyYFWLCaui:localhost:8800@anon-20191002_181700-263:localhost:8800$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4joincQ]e!PQZMTVTeCYqMZwkHvW:localhost:8800@anon-20191002_181700-262:localhost:8800$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAleavebQ]e!PQZMTVTeCYqMZwkHvW:localhost:8800@anon-20191002_181700-261:localhost:8800$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7IjoinaQ]e!kpTPWDZdBbbXKLonZK:localhost:8800@anon-20191002_181700-260:localhost:8800$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4leave`Q]e!kpTPWDZdBbbXKLonZK:localhost:8800@anon-20191002_181700-259:localhost:8800$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0join_Q]e!ITdmSQpjMnaPoHIbws:localhost:8800@anon-20191002_181700-258:localhost:8800$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwleave^Q]e!ITdmSQpjMnaPoHIbws:localhost:8800@anon-20191002_181700-257:localhost:8800$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sjoin]Q]e!FAYqpziHeVZugCGaij:localhost:8800@anon-20191002_181700-254:localhost:8800$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMjoin\Q]e!ZaOktTIVeRgBXxfubH:localhost:8800@anon-20191002_181700-253:localhost:8800$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEjoin[Q]e!ZaOktTIVeRgBXxfubH:localhost:8800@anon-20191002_181700-252:localhost:8800$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8joinZQ]e!ZaltdIYVZjCHsCWTZD:localhost:8800@anon-20191002_181700-251:localhost:8800$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wjoin G0*k9r@   z I P  D  Q Y>$\ 'V  b 0 v b 0J| h 7 p1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw|1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk{1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Et1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOoS1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc;1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A1e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B41e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM41e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo~1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0{1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIz1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEkn1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIm1e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD41e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA0e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIU0e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc/1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoU1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoX1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI 1e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngC/e $wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgH0e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsW1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk61e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ50e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc0e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU>1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMY0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU0e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw0e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA[1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H41e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo0e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0T1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE*1e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY |<5-t  l d \ T LD% |eeQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800 PeeQ$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A!eKrOqiOabJcMgIJjwC:localhost:8800eeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800 ӁeeQ$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM!kxTDuIasPNpXtiRsif:localhost:8800meeQ$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8!AjjrNwXmPTCruHxaJq:localhost:8800/eeQ$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q!FIOuvzpMhoERunVYYA:localhost:8800eeQ$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT4!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg!hYPSaMPGsLnvYSmwhg:localhost:8800veeQ$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800 ځeeQ$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po!nftGLlLhVgzOwOFufp:localhost:8800eeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX0$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw!mfzIRinBAGGrZvQAuI:localhost:8800$eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800 ҁeeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck!vRmMcoJDeCupADwqac:localhost:8800 eeQ$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg!HOPyhZPcKkrvSmDIvX:localhost:8800݁eeQ$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y!UaitDdkGDcwvRLJSvp:localhost:8800$eeQ$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8!SrMQpDMFREKRMELwbL:localhost:8800- KT( | J   P   V" $  \ *b0hj6n<  DtBzHNZ8 vp>  1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk f1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ 1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 Q1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8q1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y d1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU11e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMb1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIf1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ(1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMED1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIw1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gf1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY !1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM{1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsQ1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0b1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY21e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE X1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcS1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo/1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw01e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0,1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ d1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8F1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY/21e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g]1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY \1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQX1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oy1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo KT( | J   P   V" $  \ *b0hj6n<  DtBzHNZ8 vp>  1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk d1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ 1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 Q1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8q1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y d1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU11e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMb1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIf1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ(1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMED1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIw1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gf1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY !1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM{1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsQ1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0b1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8 1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY21e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE X1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcS1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo/1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw01e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0,1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ d1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8@1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY)21e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_01e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g]1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY Z1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQX1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1oy1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo  Z{eQaA$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2054}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak"], "type": "m.room.member", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-368:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042267472, "hashes": {"sha256": "+SM7SMKmf2JEVG0JKRGPFczDK7EB6NSMSGeLD13iXiA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fokZvi0+tSsZXnSe2G0n7wfi5JAH3g93tHzcwbypP8fJREZbneVmYLHdBfkzOJ5WS4LPT0t88ajD9VxWR4O3Aw"}}, "unsigned": {"age_ts": 1570042267472, "replaces_state": "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"}}HzeQa$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2053}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA"], "type": "m.room.test", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042266504, "hashes": {"sha256": "8by1UtZrE5wGYneNYxWb0O+Kl4oEyd8lcouI/uQibjg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3s/20fBya7UKPyLqVPcUG26tCcyb17EX+HmHNPzSZgXEpD4SMOchQfNj07HUsCXnzIDcX6ziKCoZjiNg5bZ/BA"}}, "unsigned": {"age_ts": 1570042266504}}yeQa$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2052}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME"], "type": "m.room.history_visibility", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042265050, "hashes": {"sha256": "K6xWfnuDDhHkpgksRG8B41qOhzVUi8mJTn37vbAp1H0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rlH6KMfGa8orT4wpEXzCq+/EQkBnVgcuXoHAeQw4rVUQuXLUnrdxmOA9msmhpJ4eFnVSm+gEqGaYDggtb+mgAA"}}, "unsigned": {"age_ts": 1570042265050}}txeQau$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME!OWGKxAmTrHLciIdrJi:localhost:8800{"token_id": 385, "stream_ordering": 2051}{"auth_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4", "$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4", "$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E"], "prev_events": ["$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4"], "type": "m.room.join_rules", "room_id": "!OWGKxAmTrHLciIdrJi:localhost:8800", "sender": "@anon-20191002_181700-368:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042264385, "hashes": {"sha256": "mhiu0o09RmEobdsC8p8jxWIpFLgiT24uyQMAGXTrYUU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x4aNdcZl3bZrnFrEkcFqTVUQlRLepyeqtNfo/RLQg0lbUcmelJxzq7In2f74saKM44GinNjvd5wbRCd6sbo2CQ"}}, "unsigned": {"age_ts": 1570042264385}} ,NC 8 - { " p  e ZOD9.|#qf V$eL$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUsha256s:f.k ۝R̈<[ve~^V#eL$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYsha256 A 7$"asyot͉(t=ЦV"eL$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wsha256G"NQs;&ĶFh8AV!eL$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEsha256aʛfGH&v-y&y&dAV eL$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIsha256Trו2fS_X) TβVeL$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYsha256WDݗه/Gct2%I2Ʒ[Y&VeL$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8sha256vEVin6U2ۯ_ؗ9oVeL$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUsha256{! k ܊ ! i; *3VeL$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0sha256T. )I.\| ++`[ VeL$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4sha256_x^',R]1q3u*py&VeL$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtssha256+X!Jv& mw.ERvFB*VeL$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUsha256)JC/܈:_7 @VeL$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQsha256. S| ч=Pn3ji4VeL$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wsha256 q yK[b O .ҿEUJs7VeL$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0sha256=P$/nB 4~2ks@-VeL$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcsha256Q Vj`k;Wu$ TuݓVeL$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcsha256rɾ;KL^W@ FVeL$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8sha256t^SMoR2 /nʙT8@ʋgd_VeL$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSssha256iG|po&i9Cڨd+VeL$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYsha256 YSa_< V*WJVeL$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAsha256 Q)M5> h"EX&Fb0VeL$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Asha256PO3,~C|L˛ެɼ{4Y5-V~eL$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490sha256 ]@z%o\`4Qv 2V}eL$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gsha256  &+8>7Wͅ.o}V|eL$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0sha256͵%g>"[|,ޑͯ@g]V{eL$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90sha256<| ΗNq ޞ3K#VzeL$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebaksha256Ȕ,hs1"rRv kjf^mVyeL$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAsha256A|8Uz t3l 0X\ ` d  h  l  p t$(,0 48<Q{eQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800QzeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800|TQweQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800QxeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800QoeQ$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg!csWEXfVEVxdviNvgAd:localhost:8800QneQ$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk!csWEXfVEVxdviNvgAd:localhost:8800xTQmeQ$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI!csWEXfVEVxdviNvgAd:localhost:8800QbeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800Q]eQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800Q\eQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800Q[eQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks!pUSFAnuwUuMlbiInDR:localhost:8800QZeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4!SrMQpDMFREKRMELwbL:localhost:8800QYeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800QXeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800QWeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk!bOSxzttDtclnrWnLov:localhost:8800QVeQ$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jU!DnUHoxreGexNmjSVpq:localhost:8800QUeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo!DnUHoxreGexNmjSVpq:localhost:8800QTeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg!rwUuVBrftGHDBOlEZm:localhost:8800Q|eQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800QSeQ$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QY!CkNvQnbApPIcuKygDk:localhost:8800QReQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800QQeQ$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI!aZwMKYDXJRlSKjQNWM:localhost:8800QPeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg!aZwMKYDXJRlSKjQNWM:localhost:8800QOeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM!aZwMKYDXJRlSKjQNWM:localhost:8800QNeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829QMeQ$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg!mTlCLZQCmfDuQsJxxp:localhost:8800QLeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE!mTlCLZQCmfDuQsJxxp:localhost:8800QKeQ$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0!mTlCLZQCmfDuQsJxxp:localhost:8800QJeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI!PEcOacvKaBKpXjytEF:localhost:8800QIeQ$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4!NajQnqYmGyTjxhFYar:localhost:8829T   *teQau$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2058}{"auth_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490", "$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490"], "type": "m.room.join_rules", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042271710, "hashes": {"sha256": "wGf7NLV7gPhhSz/w1XNc+gV5KodxMNADxS7acZRXius"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gSXWIRsrPZuN4kxOWtGW+0IZ49fViCtu4aavA3o1Lg77tZ8z1Ye5+m5Xhy0N64GHRgSKb5F7H2AlJ/ScTc5MAA"}}, "unsigned": {"age_ts": 1570042271710}}k~eQac$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2057}{"auth_events": ["$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "type": "m.room.power_levels", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"users": {"@anon-20191002_181700-369:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042270935, "hashes": {"sha256": "j6OpBvQWNB9qwGORQg9fyyevZiBF9n5eviUlY44p4Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4JdKGlmjC04RprM13f1dWnEw2e2JKEwLfOJoWzmDzOzFz4rNBjy+e8sWSM/OM012DfOiC3qB+CxYkSOnhqpSCQ"}}, "unsigned": {"age_ts": 1570042270935}}v}eQay$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2056}{"auth_events": ["$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0"], "prev_events": ["$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0"], "type": "m.room.member", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-369", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-369:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042270114, "hashes": {"sha256": "lPIOIOXiAO8P/Pn1BH31HYmj0BcsntG1Q3mvTUM9IQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hyZ0h72gx4FwlxM4b+8IYX0r96/ZKP+RrcksemX2VjtRN06QkHYaQgBiUJ7WhLFk3Q65DMViB0MsN+9vA3QdCg"}}, "unsigned": {"age_ts": 1570042270114}}i|eQa_$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2055}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-369:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042269283, "hashes": {"sha256": "J7db1WNA7lNgPq7j3NjpuCA75B+eXir/Fcpc5N/dRLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DwqfE1xf6DH6bJwPJ5+vzByK7pf921K9kP/I206whGlYutn68KXoHMb7DtiFpz6DOGrrpvDYS2fKqafvpoz5BQ"}}, "unsigned": {"age_ts": 1570042269283}} "qs 1 @ I q !APY/AqeDeQ/ $V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800m.room.join_ruleseCeQ/ $dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.join_rulesgBeQ3 $e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levelsgAeQ3 $jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.power_levels @eQ']$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800 ?eQ']$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800a>eQ' $KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.createa=eQ' $gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800m.room.create <eQ']$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800 ;eQ']$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800m:eQ? $u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibilitym9eQ? $uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibilitye8eQ/ $dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rulesg7eQ3 $yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels 6eQ']$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800a5eQ' $D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create 4eQ']$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800m3eQ? $sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibilitym2eQ? $UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibilitye1eQ/ $v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800m.room.join_rulesg0eQ3 $N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800m.room.power_levels /eQ']$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800a.eQ' $sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800m.room.create -eQ']$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800m,eQ? $tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.history_visibilitye+eQ/ $FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.join_rulesg*eQ3 $dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.power_levels )eQ']$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800a(eQ' $CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.create 'eQ']$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800m&eQ? $DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800m.room.history_visibilitye%eQ/ $7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A!fkvdYkesQOFCAQkzky:localhost:8800m.room.join_rulesg$eQ3 $ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490!fkvdYkesQOFCAQkzky:localhost:8800m.room.power_levels #eQ']$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800 p% i  r  ' k  t )fi[8A <Q']e&!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4 ;Q']e%!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsd:Q' e$!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.create$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUd9Q' e#!csWEXfVEVxdviNvgAd:localhost:8800m.room.create$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ88Q']ee"!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0 7Q']e!!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC06Q? ee !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcp5Q? e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qch4Q/ e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rules$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8j3Q3 e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs 2Q']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYd1Q' e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI80Q']ee!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0/Q? ee!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90p.Q? e!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90h-Q/ e!hnQOBexFYpvJntEChZ:localhost:8800m.room.join_rules$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gwj,Q3 e!hnQOBexFYpvJntEChZ:localhost:8800m.room.power_levels$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw +Q']e!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0d*Q' e!hnQOBexFYpvJntEChZ:localhost:8800m.room.create$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU8)Q']ee!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWop(Q? e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.history_visibility$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3Eh'Q/ e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.join_rules$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ckj&Q3 e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.power_levels$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4 %Q']e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWod$Q' e !hDAzBWYEyRVBRlrCHh:localhost:8800m.room.create$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI8#Q']ee !fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gp"Q? e !fkvdYkesQOFCAQkzky:localhost:8800m.room.history_visibility$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAh!Q/ e !fkvdYkesQOFCAQkzky:localhost:8800m.room.join_rules$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44Aj Q3 e !fkvdYkesQOFCAQkzky:localhost:8800m.room.power_levels$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490 Q']e!fkvdYkesQOFCAQkzky:localhost:8800m.room.member@anon-20191002_181700-369:localhost:8800$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g 2 w2veQay$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2062}{"auth_events": ["$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI"], "prev_events": ["$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI"], "type": "m.room.member", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-370", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-370:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042276788, "hashes": {"sha256": "X+2HILa5JTVwSnSTLh2zsmouQHUhonFHfOwfrK3WcNA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/Pi5byHJJe3XTVEhkEM9WLu76sQDTEVirjLIrHf5maDb92gyf89KRM9EyMYzRXra/9WpAl0MtFrcwnQ0Z7qmDw"}}, "unsigned": {"age_ts": 1570042276788}}ieQa_$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2061}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-370:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042276001, "hashes": {"sha256": "PeGL81tYF0Y7WYwdubB3DVOApWTM7Ldm3ht1TktIOEg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CI6Nc/ypxYuspvrLUMbNoIkwRwA5VyZLFj2YAojiCyRwhcEyXY4V0xqu9ZSO1tum/N6FgKCemSellaKyMU2oCQ"}}, "unsigned": {"age_ts": 1570042276001}}ZeQaA$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2060}{"auth_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490", "$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA"], "type": "m.room.member", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"membership": "leave"}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-369:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042274002, "hashes": {"sha256": "pTW1v/zTO5QYOIh8ELwE1g1jg5KALKmZzxoExoC2+j0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JAIzgW/AiEHBXkJYKBTxK8+7bW0Ospisqc76MzTxbekPpv/ekG2yzbM/5Uo9V2n68jIxTNmgpV96vVuJ/JsLBA"}}, "unsigned": {"age_ts": 1570042274002, "replaces_state": "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"}}eQa$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA!fkvdYkesQOFCAQkzky:localhost:8800{"token_id": 386, "stream_ordering": 2059}{"auth_events": ["$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490", "$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0", "$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g"], "prev_events": ["$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A"], "type": "m.room.history_visibility", "room_id": "!fkvdYkesQOFCAQkzky:localhost:8800", "sender": "@anon-20191002_181700-369:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042272753, "hashes": {"sha256": "Tr93aAUH8tZ/qoYuHLOTRlO3tuMg3rolwWERctJmvVg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yO5PrGx/P76lUocmpQdParW7Y2a9w/knTZlQsoQ87ubQo67KN0V9YOWwHWrqcjlmLYs4+LAsopuP70/dBMZ5Dw"}}, "unsigned": {"age_ts": 1570042272753}} a} { y w u sqomkigeca~beeQ$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~aeeQ$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~`eeQ$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~_eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~^eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~]eeQ$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~\eeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~[eeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~ZeeQ$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~YeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~XeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~WeeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~VeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~UeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~TeeQ$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw!hnQOBexFYpvJntEChZ:localhost:8800~SeeQ$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0!hnQOBexFYpvJntEChZ:localhost:8800~ReeQ$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~QeeQ$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800~PeeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~OeeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~NeeQ$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800~MeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~LeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~KeeQ$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800~JeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~IeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~HeeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800~GeeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo!hDAzBWYEyRVBRlrCHh:localhost:8800~FeeQ$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~EeeQ$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800~DeeQ$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxY$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800 | lt - ME% d \>5 U eeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800 yeeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E!KeqmSjifajNKxtgqhj:localhost:8800leeQ$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc!MlzmtUYSZOiByAZdKx:localhost:8800eeQ$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI!odAvowLhHJcmkKlxFk:localhost:8800eeQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00$0QrsglB2jyD5sWMllGKx19jb0bTpYk-7YTiH7fdPtI0!fcdNYFWFyxmdpKAknc:localhost:8800EeeQ$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800>eeQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw!BckZfhQgrcyiMhEAAJ:localhost:8800leeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y!iKezIvJyjkNqKayFju:localhost:8800 |eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800.eeQ$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c!dDqNKNFdIjCAwnyaxp:localhost:8800 eeQ$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao$XtJ0kspuYvtNoHqoc__31ajqmEmZnD5EvF5fIo04u3w!CNFopUEQTFbzjmLvii:localhost:8800:eeQ$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk!ffijTnPMbTrDXHqOXf:localhost:8800ʁeeQ$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU!CQKLQUpSYakhxVDltC:localhost:8800eeQ$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800 eeQ$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk!dWgOTucBVQBKZjfndN:localhost:88000eeQ$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym4$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4!msMfSdLIAvklSSAnci:localhost:8800eeQ$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM!scyFsXcUIJiLIMwWMY:localhost:8800`eeQ$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8!HcMGemcRrLnLprOJJR:localhost:8800ˁeeQ$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc!CNFopUEQTFbzjmLvii:localhost:8800<eeQ$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800leeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c!SrMQpDMFREKRMELwbL:localhost:8800eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800 L D DHeQa$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2066}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E"], "type": "m.room.test", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042280816, "hashes": {"sha256": "yjRoSKv9UTwpM11SMrbYLJ+aOwwNuIZrexI1bPfPpc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rfeEGLjraNoplUfiKLy/hFT4hFZRcBczPU5wJmyXNQCxlO5QaBb0JCUWVOyesYFscZMMOlChgznVCO1RFQXCDw"}}, "unsigned": {"age_ts": 1570042280816}}eQa$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2065}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck"], "type": "m.room.history_visibility", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042279385, "hashes": {"sha256": "BRdsCVwUyYIxXfbekBvB9qvwVCLQcdBFFBfGWGRIkDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VrkTgSyHfHxDwbl6DjNfJnPstbjy54YyTjK0phBxYTlL7i9PpNz8MG6wCPrItt45S/cOs/nP/+YeONglzCQRCw"}}, "unsigned": {"age_ts": 1570042279385}}teQau$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2064}{"auth_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4", "$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4"], "type": "m.room.join_rules", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042278760, "hashes": {"sha256": "zTAFSq9oPQoYHg2xEBzlC+HZJZAWjoLAnKGk6reX5jw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zb13A5TC0L12iRaXSp6GGBF5WkrmgHGplcDYG4J8mZovItAdQDI+dIbOUSMWHLucYsndtEcUHKXG/lo9/6r+BA"}}, "unsigned": {"age_ts": 1570042278760}}keQac$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800{"token_id": 387, "stream_ordering": 2063}{"auth_events": ["$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI", "$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "prev_events": ["$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo"], "type": "m.room.power_levels", "room_id": "!hDAzBWYEyRVBRlrCHh:localhost:8800", "sender": "@anon-20191002_181700-370:localhost:8800", "content": {"users": {"@anon-20191002_181700-370:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042278010, "hashes": {"sha256": "qdvTpGiLeidhW8Sm4YyXahzssPuvgijfbAYylA4QpcI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kElVA55tytD/UwV5mmxB70VvQ9d7pkada2HhfsZj6Sr8Ilzq1MjTJyRkxdlE+lrFS1VBNwhr+GKInfiYi9xjAg"}}, "unsigned": {"age_ts": 1570042278010}} !$/ 4 X W b $/4^& Q']e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0 Q']e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSccQ' e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.create$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30scQ' e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.create$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y Q']e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUoQ? e!csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibility$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEoQ? e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.history_visibility$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIgQ/ e!csWEXfVEVxdviNvgAd:localhost:8800m.room.join_rules$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYgQ/ e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.join_rules$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8iQ3 e!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levels$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUi~Q3 e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.power_levels$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0 }Q']e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts |Q']e!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4c{Q' e!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.create$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUczQ' e!csWEXfVEVxdviNvgAd:localhost:8800m.room.create$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ yQ']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w xQ']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0owQ? e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcovQ? e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.history_visibility$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4QcguQ/ e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rules$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8itQ3 e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs sQ']e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYcrQ' e!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.create$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI qQ']e!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8opQ? e!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgooQ? e!hnQOBexFYpvJntEChZ:localhost:8800m.room.history_visibility$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90gnQ/ e!hnQOBexFYpvJntEChZ:localhost:8800m.room.join_rules$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwimQ3 e!hnQOBexFYpvJntEChZ:localhost:8800m.room.power_levels$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw lQ']e!hnQOBexFYpvJntEChZ:localhost:8800m.room.member@anon-20191002_181700-371:localhost:8800$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0ckQ' e!hnQOBexFYpvJntEChZ:localhost:8800m.room.create$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU jQ']e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.member@anon-20191002_181700-370:localhost:8800$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53EoiQ? e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.history_visibility$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3EghQ/ e!hDAzBWYEyRVBRlrCHh:localhost:8800m.room.join_rules$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck ,Xg^ k x ' 4 A N [ hu$1>Kt#P]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800N[Q@anon-20191002_181700-39:localhost:8800!dUnULFLGtgaVdwHtnz:localhost:8800P]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800P]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800P]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800P]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800P]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800P]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800P]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800P]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800P]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800P]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800P]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800P]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800P]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800P]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800P]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800 D^ h  d  tl$<DD,+e?Q ]$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIm.room.history_visibility!rQeYcODvQiLsOIbQrJ:localhost:8800mNmP@anon-20191002_181700-374:localhost:8800$*e/Q ]$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYm.room.join_rules!csWEXfVEVxdviNvgAd:localhost:8800mKmL@anon-20191002_181700-374:localhost:8800$)e/Q ]$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8m.room.join_rules!rQeYcODvQiLsOIbQrJ:localhost:8800mK mL@anon-20191002_181700-374:localhost:8800&(e3Q ]$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUm.room.power_levels!csWEXfVEVxdviNvgAd:localhost:8800mEmIb@anon-20191002_181700-374:localhost:8800&'e3Q ]$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0m.room.power_levels!rQeYcODvQiLsOIbQrJ:localhost:8800mEmH@anon-20191002_181700-374:localhost:8800 &e'Q ]$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4m.room.member!csWEXfVEVxdviNvgAd:localhost:8800mAmC@anon-20191002_181700-374:localhost:8800 %e'Q ]$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtsm.room.member!rQeYcODvQiLsOIbQrJ:localhost:8800mAmC$@anon-20191002_181700-374:localhost:8800$ e'Q  ]$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUm.room.create!rQeYcODvQiLsOIbQrJ:localhost:8800m<m=@anon-20191002_181700-374:localhost:8800# e'Q  ]$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQm.room.create!csWEXfVEVxdviNvgAd:localhost:8800m<m=]@anon-20191002_181700-374:localhost:8800 "e'Q ]$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wm.room.member!aHyAJEOSdKqTiRjOvw:localhost:8800m7m8-@anon-20191002_181700-372:localhost:8800 !e'Q ]$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0m.room.member!aHyAJEOSdKqTiRjOvw:localhost:8800m5Jm5@anon-20191002_181700-373:localhost:8800, e?Q ]$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcm.room.history_visibility!aHyAJEOSdKqTiRjOvw:localhost:8800m1m2i@anon-20191002_181700-373:localhost:8800,e?Q ]$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcm.room.history_visibility!aHyAJEOSdKqTiRjOvw:localhost:8800m-nm/Z@anon-20191002_181700-373:localhost:8800$e/Q ]$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8m.room.join_rules!aHyAJEOSdKqTiRjOvw:localhost:8800m)im+@anon-20191002_181700-373:localhost:8800&e3Q ]$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsm.room.power_levels!aHyAJEOSdKqTiRjOvw:localhost:8800m&m'@anon-20191002_181700-373:localhost:8800 e'Q ]$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYm.room.member!aHyAJEOSdKqTiRjOvw:localhost:8800m$wm% @anon-20191002_181700-373:localhost:8800 e'Q  ]$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIm.room.create!aHyAJEOSdKqTiRjOvw:localhost:8800m!m!@anon-20191002_181700-373:localhost:8800 e'Q ]$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8m.room.member!hnQOBexFYpvJntEChZ:localhost:8800mmr@anon-20191002_181700-371:localhost:8800,e?Q ]$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDgm.room.history_visibility!hnQOBexFYpvJntEChZ:localhost:8800mBm@anon-20191002_181700-371:localhost:8800,e?Q ]$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90m.room.history_visibility!hnQOBexFYpvJntEChZ:localhost:8800mm@anon-20191002_181700-371:localhost:8800$e/Q ]$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gwm.room.join_rules!hnQOBexFYpvJntEChZ:localhost:8800m m*@anon-20191002_181700-371:localhost:8800&e3Q ]$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdwm.room.power_levels!hnQOBexFYpvJntEChZ:localhost:8800m m 1@anon-20191002_181700-371:localhost:8800 e'Q ]$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0m.room.member!hnQOBexFYpvJntEChZ:localhost:8800mmk@anon-20191002_181700-371:localhost:8800 e'Q  ]$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGUm.room.create!hnQOBexFYpvJntEChZ:localhost:8800mmZ@anon-20191002_181700-371:localhost:8800 W_  o0lO4|_D! o T 1  d A  l Q . v _ q N +@#K4[DkN7~?(O8 e U3 m.room.power_levels>']m.room.member@anon-20191002_181700-367:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-366:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-365:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-364:localhost:8800"? m.room.history_visibility/ m.room.join_rules"? m.room.history_visibility!/ m.room.join_rules 3 m.room.power_levels>']m.room.member@anon-20191002_181700-380:localhost:8800' m.room.create3  a.madeup.test.state>'] m.room.member@anon-20191002_181700-379:localhost:8800"?  m.room.history_visibility/  m.room.join_rules3  m.room.power_levels>']m.room.member@anon-20191002_181700-378:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-377:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-377:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-376:localhost:8800"? m.room.history_visibility"? m.room.history_visibility / m.room.join_rules / m.room.join_rules 3 m.room.power_levels 3 m.room.power_levels >']m.room.member@anon-20191002_181700-375:localhost:8800>']m.room.member@anon-20191002_181700-375:localhost:8800' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-374:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules/ m.room.join_rules3 m.room.power_levels3 m.room.power_levels>']m.room.member@anon-20191002_181700-374:localhost:8800>']m.room.member@anon-20191002_181700-374:localhost:8800' m.room.create' m.room.create>']m.room.member@anon-20191002_181700-372:localhost:8800>']m.room.member@anon-20191002_181700-372:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-373:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-371:localhost:8800"? m.room.history_visibility"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-371:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-370:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-370:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-369:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-369:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-368:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-368:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules V 4VZeQaA$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG8!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2074}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg"], "type": "m.room.member", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-371:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042288103, "hashes": {"sha256": "xmd2Fgd1o5yb/4wkgoIddtEuhc9AGmqxFYEL6xNCjYU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LePZ/XpB9Q5B61r7U0X/t+vLKqVCG29wndhq5kRHCFPeG/dtCN9fXZbFsfnnTiz+nKCrHAv/JwFAwfWxb+icBw"}}, "unsigned": {"age_ts": 1570042288103, "replaces_state": "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"}}GeQa$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2073}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90"], "type": "m.room.history_visibility", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042287170, "hashes": {"sha256": "/zcYlrPnqVlmGB6o5WyTlg3eiG8z8wR9uF4RXSF8c/g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wA6esi1BgqESX0+erLLEF7A95cUTZXqREXLLsAp8SefOxP5jdzKSPGX+8Q7s8Lr2A9DyaWbOzvCcS55lbaQUDw"}}, "unsigned": {"age_ts": 1570042287170, "replaces_state": "$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90"}} eQa$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2072}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw"], "type": "m.room.history_visibility", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042286094, "hashes": {"sha256": "FRpzdnDVfo/RvCnEQBYNQiaGFmAE/nsCakWRGZL+HeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "49i0xLO4vXihDsY0HPByHxMArsi/BvuQ/4GVsDX6xkHelOPGGTqi1vHvuGAGFCIV0pMjckV/x17HO734NXG0Aw"}}, "unsigned": {"age_ts": 1570042286094}}t eQau$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800{"token_id": 388, "stream_ordering": 2071}{"auth_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw", "$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU", "$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0"], "prev_events": ["$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw"], "type": "m.room.join_rules", "room_id": "!hnQOBexFYpvJntEChZ:localhost:8800", "sender": "@anon-20191002_181700-371:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042285285, "hashes": {"sha256": "BSo0qpMv1HICcNB3f5DLIVySvZhnerIZEYEmcM/8tA0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITbtzgSi/9TJKj8nO7kQHOuXuF2rKTHxE/N/4ef/YcLz/DBpfc19HJrA/9wM9H/FKeolM/k+JDFMWlSUXGVvAw"}}, "unsigned": {"age_ts": 1570042285285}} ' 2EXb{2 E X k " 5 H[ n w.S x/L` ] @anon-20191002_181700-392:localhost:8800offlinem.Hmm.L ] @anon-20191002_181700-349:localhost:8800offlinem͎mm͎[L ] @anon-20191002_181700-348:localhost:8800offlinemqmmqL ] @anon-20191002_181700-347:localhost:8800offlinemUumdmU|L ] @anon-20191002_181700-345:localhost:8800offlinem tm͛m L ] @anon-20191002_181700-343:localhost:8800offlinemm͈DmL| ] }@anon-20191002_181700-342:localhost:8800offlinemma4mSLz ] {@anon-20191002_181700-341:localhost:8800offlinemEm:$mLy ] z@anon-20191002_181700-339:localhost:8800offlinem̟m&m̠Lw ] x@anon-20191002_181700-338:localhost:8800offlinem̎mm̏;L_ ] @anon-20191002_181700-391:localhost:8800offlinemmmL^ ] @anon-20191002_181700-394:localhost:8800offlinema.mtmaL] ] @anon-20191002_181700-390:localhost:8800offlinemmtmL\ ] @anon-20191002_181700-389:localhost:8800offlinemkmmLV ] @anon-20191002_181700-388:localhost:8800offlinemѸm/mѸLN ] @anon-20191002_181700-387:localhost:8800offlinemѥqm$mѥtLL ] @anon-20191002_181700-386:localhost:8800offlinemѐmmёLI ] @anon-20191002_181700-385:localhost:8800offlinemsUmmtqLF ] @anon-20191002_181700-383:localhost:8800offlinem@mmP4LC ] @anon-20191002_181700-381:localhost:8800offlinemmѓlm}L> ] @anon-20191002_181700-379:localhost:8800offlinemml\mL= ] @anon-20191002_181700-377:localhost:8800offlinemпmELmL6 ] @anon-20191002_181700-371:localhost:8800offlinemEm,mF5 ]@anon-20191002_181700-378:localhost:8800offlinemmL3 ] @anon-20191002_181700-374:localhost:8800offlinem\mm]2L2 ] @anon-20191002_181700-370:localhost:8800offlinemmm{L0 ] @anon-20191002_181700-372:localhost:8800offlinem:mмm:L/ ] @anon-20191002_181700-369:localhost:8800offlinemmЩ mL. ] @anon-20191002_181700-368:localhost:8800offlinemmЕmoL- ] @anon-20191002_181700-367:localhost:8800offlinemϮ_mЁmϮiL$ ] @anon-20191002_181700-366:localhost:8800offlinemϖm TmϖL# ] @anon-20191002_181700-364:localhost:8800offlinem{(m Tm{L ] @anon-20191002_181700-361:localhost:8800offlinemZmDmZF ]@anon-20191002_181700-360:localhost:8800offlinemUmKF ]@anon-20191002_181700-357:localhost:8800offlinemίm6L ] @anon-20191002_181700-358:localhost:8800offlinemνm5mνL ] @anon-20191002_181700-355:localhost:8800offlinemmΆ-mvL ] @anon-20191002_181700-353:localhost:8800offlinem3m_mj8K%q]? WwE+ w E p Q ~ L}  R    Y ' _ -e3k91>o1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE 1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs 1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs 1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo 1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM 1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg 1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY r1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 Q1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y 1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 81e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 71e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s .1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq41e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMn1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA`1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6sX1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgk1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw{1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A,1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt461e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw 1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg[1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIo1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrge1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg~1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsH1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM]1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE\1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us}1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ31e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsv1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUz1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0\0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkf1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUP1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gj1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro41e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIm1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E  " 5HveQay$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2085}{"auth_events": ["$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU"], "prev_events": ["$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU"], "type": "m.room.member", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-374", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-374:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042298758, "hashes": {"sha256": "1/UvnuX7qCS8KathoAKsNhVtjHqDiNvItNT53nSYWPk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0KfMY3ort5LLpEGcYkgZMkCJPIJyZ0k9RLCAIpnls8vJKU6poF32keuF01W2Zgj511YXYlPezzgvojrvX2B/Cg"}}, "unsigned": {"age_ts": 1570042298758}}ieQa_$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2084}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-374:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042297535, "hashes": {"sha256": "O1BX3wUh38ziYI5KwYnFZ2Qi6eVrZb176aQLszsgJj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8TszwPSEol5IWFlMX3MqJ2FF0ywnymS9gUuaNu0PSzH2ytg5HXK06P1ESkiAy+4fFa52oComb4Zvnol2f65dBA"}}, "unsigned": {"age_ts": 1570042297535}}ieQa_$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2083}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-374:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042297534, "hashes": {"sha256": "a6dG8CPTAngME5hBHqaPq9AUuB5dv9oUqVmt7kvAsvk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BWQbCk60MFCxjALTSxtB4thCUQHoKywdzRnst3OYdVVWBjc7WAQwKkQNNzJrMfvCftNQXAJfUv7p64CTwud8DQ"}}, "unsigned": {"age_ts": 1570042297534}}ZeQaA$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 390, "stream_ordering": 2082}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0"], "prev_events": ["$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0"], "type": "m.room.member", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-372:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-372:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042296258, "hashes": {"sha256": "pe2mGSbs5QvgQhN3pavil0bDH02z+i+SoHWzIopjP2c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7nYAkTDnUmyPHzQcI4L9gpkBHumY0QJTcDyLKcAaqbjhvjyQfvurKghK1+4O6heziBTYgtAK+BMRrr25p+z6AQ"}}, "unsigned": {"age_ts": 1570042296258, "replaces_state": "$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0"}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1Me$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw%1Le$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$1Ke$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY#1Je$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog"1Ie$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!1He$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc!1Ge$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!1Fe$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w 1Ee$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M1De$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss1Ce$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1Be$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01Ae$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1@e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk01?e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1>e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V81=e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1<e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1;e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw1:e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI019e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ18e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs17e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw16e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls15e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k14e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng13e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI 12e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM 11e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI 10e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc 1/e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I 1.e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA 1-e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1,e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI1+e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg1*e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU1)e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM1(e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg1'e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01&e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI1%e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM1$e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM1#e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1"e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc1!e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE1 e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu81e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly01e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg1e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU1 e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01 e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq41 e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1 e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1 e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs a} { y w u sqomkigeca~eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800~~eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800~}eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~|eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800~{eeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~zeeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~yeeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800~xeeQ$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800~weeQ$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~veeQ$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~ueeQ$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~teeQ$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~seeQ$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~reeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800~qeeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~peeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~oeeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~neeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8!aHyAJEOSdKqTiRjOvw:localhost:8800~meeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~leeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~keeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~jeeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~ieeQ$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~heeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~geeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~feeQ$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800~eeeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800~deeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI!aHyAJEOSdKqTiRjOvw:localhost:8800~ceeQ$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs!aHyAJEOSdKqTiRjOvw:localhost:8800  weQa7$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 389, "stream_ordering": 2081}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8", "$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY"], "prev_events": ["$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc"], "type": "m.room.member", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-373:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-372", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-372:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042295626, "hashes": {"sha256": "BoqzHXCgz8hqaUWR50ZSCMhac4+0du0PxP0wnoLxAgU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zDJzTrLU/jK0QJERSiLETzNmjuMgpTLc2mOUDz98C835cR+ADqsfNhxdEh7H8mOQYKy33uQKIdTYlgjSVMFjAw"}}, "unsigned": {"age_ts": 1570042295626, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-373:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-373:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-373", "avatar_url": null}, "sender": "@anon-20191002_181700-373:localhost:8800"}]}}GeQa$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 389, "stream_ordering": 2080}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY"], "prev_events": ["$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc"], "type": "m.room.history_visibility", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-373:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042294770, "hashes": {"sha256": "i3BfNGz169F4w/Y1/iGmJy+a9I9MUPFZe+YG4ZwfWWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lR8klbpXXkzC6G9snllkQ9Y4HpQ9IEwFrVWVjpnKk/l7hiXTtMJ1UzlmCud6gdIxgBZEVcNo+o4aEH2DqNb3Dg"}}, "unsigned": {"age_ts": 1570042294770, "replaces_state": "$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc"}}eQa$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc!aHyAJEOSdKqTiRjOvw:localhost:8800{"token_id": 389, "stream_ordering": 2079}{"auth_events": ["$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs", "$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI", "$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY"], "prev_events": ["$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8"], "type": "m.room.history_visibility", "room_id": "!aHyAJEOSdKqTiRjOvw:localhost:8800", "sender": "@anon-20191002_181700-373:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042293614, "hashes": {"sha256": "6m2Xka7uXWKUn9nqlIvlDfRyvuN+TNQx1G65KmiJGLw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KIm1HhJSBNeRtFXeFSZJP7TActsm3jhX+wk3GvRRc0bPahjFvT4B7+OBM5dE10Y7rWrQgdcE7ULdFDF8OqlBBg"}}, "unsigned": {"age_ts": 1570042293614}} -RM H C > 9 4/*|%w rmhc TQe!WFHIeSFQyuugGeBFxW:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0TQe!WFHIeSFQyuugGeBFxW:localhost:8800$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YTQe!WFHIeSFQyuugGeBFxW:localhost:8800$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8TQe!WFHIeSFQyuugGeBFxW:localhost:8800$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UTQe!WFHIeSFQyuugGeBFxW:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeITQe!WFHIeSFQyuugGeBFxW:localhost:8800$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwTQe!QMrkSPlQDGborAyWtQ:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0TQe!QMrkSPlQDGborAyWtQ:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQTQe!QMrkSPlQDGborAyWtQ:localhost:8800$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsTQe!QMrkSPlQDGborAyWtQ:localhost:8800$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawTQe!QMrkSPlQDGborAyWtQ:localhost:8800$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsTQe!QMrkSPlQDGborAyWtQ:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kTQe!QMrkSPlQDGborAyWtQ:localhost:8800$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1IT Qe !mBQpGaIiadEuKBXfOw:localhost:8800$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXATQe!mBQpGaIiadEuKBXfOw:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwTQe!mBQpGaIiadEuKBXfOw:localhost:8800$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlITQe!xXYMxashIZAUOTuGAJ:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgTQe!xXYMxashIZAUOTuGAJ:localhost:8800$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMTQe!xXYMxashIZAUOTuGAJ:localhost:8800$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgTQe!xXYMxashIZAUOTuGAJ:localhost:8800$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0TQe!xXYMxashIZAUOTuGAJ:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YITQe!xXYMxashIZAUOTuGAJ:localhost:8800$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMTQe!ozgnwUlebxvzLVwyHW:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMTQe!ozgnwUlebxvzLVwyHW:localhost:8800$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziET~Qe!QcaNrIiUsWpTiVGOnt:localhost:8800$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcT}Qe!ozgnwUlebxvzLVwyHW:localhost:8800$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeET|Qe!QcaNrIiUsWpTiVGOnt:localhost:8800$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMT{Qe!ozgnwUlebxvzLVwyHW:localhost:8800$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8TzQe!QcaNrIiUsWpTiVGOnt:localhost:8800$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0TyQe!QcaNrIiUsWpTiVGOnt:localhost:8800$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0TxQe!ozgnwUlebxvzLVwyHW:localhost:8800$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScTwQe!QcaNrIiUsWpTiVGOnt:localhost:8800$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30sTvQe!ozgnwUlebxvzLVwyHW:localhost:8800$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5YTuQe!rQeYcODvQiLsOIbQrJ:localhost:8800$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUTtQe!csWEXfVEVxdviNvgAd:localhost:8800$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEETsQe!rQeYcODvQiLsOIbQrJ:localhost:8800$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrITrQe!csWEXfVEVxdviNvgAd:localhost:8800$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYTqQe!rQeYcODvQiLsOIbQrJ:localhost:8800$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8TpQe!csWEXfVEVxdviNvgAd:localhost:8800$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUToQe!rQeYcODvQiLsOIbQrJ:localhost:8800$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0TnQe!rQeYcODvQiLsOIbQrJ:localhost:8800$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts Nk:rA } L  U " V # W $ Z 'a/f4o< tCzHQV%Z'/< Q !vRmMcoJDeCupADwqac:localhost:8800%0; Q!fGkUEndqGrieltwbCh:localhost:8800%0: Q!atnRTMliktaVUhMVID:localhost:8800%09 Q!PHkVrXAyfGkFtzSagu:localhost:8800%08 Q!EhFUhsgQbBWmrnGmaz:localhost:8800%07 Q!wBkUBAjOznOyxrLchl:localhost:8800 %/6 Q !sHRHoXzYrrPSlWBkoh:localhost:8800%.5 Q   !AoAvmnwMkhYBQsbCsL:localhost:8800%.4 Q  !IlGJpjzrvvAFuwTAgo:localhost:8800%/3 Q !CSqENqzAezaZnGktbE:localhost:8800%/2 Q !vBvlJEXUSQKUYmsKcO:localhost:8800%01 Q!RDEAXrqXQizuhCUFPq:localhost:8800%00 Q!mogJVPxghalmKbblUq:localhost:8800%./ Q  !EhUxBjnSkVXpTrQlrn:localhost:8800%/. Q !laUExtszUaoCpZoyEq:localhost:8800%.- Q   !coGyOAgYnlBZAqznax:localhost:8800%., Q  !ubmTdQFAhrhZkGULDx:localhost:8800%/+ Q !rpVYLTJGcFNdGzFzXj:localhost:8800%/* Q !iKezIvJyjkNqKayFju:localhost:8800%0) Q!DelfBAGvCrTXgNxmNV:localhost:8800%0( Q!kOmCTyiizHqfCJdhlR:localhost:8800%.' Q  !pJUItjYTOUJQFIxyiX:localhost:8800%/& Q !mvgUHEsfGqDkPQUvfG:localhost:8800%.% Q   !WYyiQAVvitxsLZKVCG:localhost:8800%.$ Q  !KIHYKMzkRDrJwiywwz:localhost:8800%/# Q !RSLvuCuAqKQQrKCxNq:localhost:8800%/" Q !DqxFmsXPclgGqpSwdy:localhost:8800%0! Q!uqIEMXzdeNeXdJmuwh:localhost:8800%0 Q!yAzXcNLHMuqFOcOexj:localhost:8800%. Q  !tLkhTnTgDjjAvscRkW:localhost:8800%/ Q !kAxKaIQhXTtGFWSUgr:localhost:8800%. Q   !WhLedNwPGGGTtqeqam:localhost:8800%. Q  !yLccBXjjEasExpsXlt:localhost:8800%/ Q !PcvmCDeVUSyJbXpTig:localhost:8800%/ Q !HbYxdEuVIeLKHwqJEh:localhost:8800%0 Q!FbJSiQoZtZkaFwzzQq:localhost:8800%0 Q!JPTwFTSDaBXwUTgitj:localhost:8800%. Q  !RYNJAGdRhIlwRZFbrO:localhost:8800%/ Q !MqstbCLZIQFiYNHrqR:localhost:8800%. Q   !WuiaqqIOvBjgETqdus:localhost:8800%. Q  !bQDOrbAknnQZfUbhgS:localhost:8800%/ Q !GSxvxNevpCiwmFCHys:localhost:8800%/ Q !yfizglmCXdcqCgDrTr:localhost:8800%0 Q!XnUZiYJDWVNGfsBnGz:localhost:8800%0 Q!ePtMOPPOgOcBIMNZpn:localhost:8800%. Q  !YGUjVdVdpcQoGkRnWB:localhost:8800%0 Q !IZkczIYykpZDvjuUWn:localhost:8800%0 Q!zuCqeooOnfWkYrQdxA:localhost:8800 %0 Q!vttkrtSyHEJXVMlvLo:localhost:8800%0 Q!whuymJoLfUdkFdxoyE:localhost:8800%0 Q!yTQmLDAxZscWKLMSWh:localhost:8800%0 Q!eWRdwtyqHvuxZFvhNS:localhost:8800%0 Q!UGVFuRGyPQmBbGsEDo:localhost:8800%0 Q!AMLmLqizBFklpqKibP:localhost:8800%0 Q!rWGwSSefrZzQYCYFHs:localhost:8800%0 Q!HXfrGcvJCbRItyQLVE:localhost:8800%0 Q!HusOrLtWZTLbmQZxmm:localhost:8800%0 Q!BpTqIemsWFZIqTcgJO:localhost:8800%0 Q!YQATbgbLImCDamiDHC:localhost:8800%0 Q!svYOOXWZHtQQzlMcEP:localhost:8800%. Q  !CGckPHdSYcIocFvRAq:localhost:8800%. Q  !BoyzlWNkRPncpDjBDg:localhost:8800%.~ Q  !djwLhpJUYOKsgQtrky:localhost:8800%.} Q  !bkwyieHZwSMJfuSKvV:localhost:8800%.| Q  !XcaKxZsPvbZhAGKKdx:localhost:8800%.{ Q  !jDKAOtmeAGbYTpwyEW:localhost:8800%.z Q  !JYLMokjOhZZlmbZvTf:localhost:8800%.y Q  !zoTQAhGwmDDUECKtbL:localhost:8800%.x Q  !NeYaCeYNFATCqlrlGT:localhost:8800%.w Q  !YtVXQjSPgVtbxrzUOA:localhost:8800%.v Q  !zsXPhIPzeXXLvuazzQ:localhost:8800%0u Q!WFHIeSFQyuugGeBFxW:localhost:8800%.t Q  !QMrkSPlQDGborAyWtQ:localhost:8800%0s Q!mBQpGaIiadEuKBXfOw:localhost:8800%.r Q !xXYMxashIZAUOTuGAJ:localhost:8800E0p Q!ozgnwUlebxvzLVwyHW:localhost:8800%.q Q  !QcaNrIiUsWpTiVGOnt:localhost:8800%.o Q !rQeYcODvQiLsOIbQrJ:localhost:8800/ #t L l|; 3  + T d  \eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800 zeeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800oeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800 ҁeeQ$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4!NajQnqYmGyTjxhFYar:localhost:88292eeQ$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk$-7qUy1Ek8cQMx3JAHjTmD8rvckH5HDC2ooWZ1fLAM_8!NZHpBquHDfJAjiawGk:localhost:8800=eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800 { eeQ$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800 ieeQ$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf0$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU!hnQOBexFYpvJntEChZ:localhost:8800SeeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800 CeeQ$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak!OWGKxAmTrHLciIdrJi:localhost:8800GeeQ$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws!hYPSaMPGsLnvYSmwhg:localhost:8800peeQ$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY!raCWVWQGnXbmkexpCN:localhost:8800 eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800:eeQ$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw!SvKwEALYoNreUvqAlp:localhost:8800eeQ$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuE!kpTPWDZdBbbXKLonZK:localhost:8800eeeQ$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE!LvARVIpJZeRQxbKefX:localhost:8800eeQ$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800 yeeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800 weeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800 1eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800 UeeQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800 "eeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800 eeQ$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE!wnriPzXkIMmdTNoJKU:localhost:8800   : Zity?_ooooooo_ ueQ']$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800joinmteQ? $ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibilitymseQ? $g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibilityereQ/ $YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_ruleseqeQ/ $G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rulesgpeQ3 $0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levelsgoeQ3 $UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levels neQ']$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800join meQ']$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800joinaleQ' $HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.createakeQ' $M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800m.room.create mieQ? $mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibility pegeQ/ $V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800m.room.join_rules^ 0 0teQau$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2089}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0"], "type": "m.room.join_rules", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042301196, "hashes": {"sha256": "3BtOIW9/UTvNSk0/GbdfvyzWQpU9HNJhtlNajYbEr8o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Db1Ab+sgztwS9BwfbyJtMmN0hT9ySFaVCcBSB5ywxYYBNqWuWHXeMWl62k32tjGxl3u0LLVzoOl5Fpy9kwniBA"}}, "unsigned": {"age_ts": 1570042301196}}keQac$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2088}{"auth_events": ["$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "type": "m.room.power_levels", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"users": {"@anon-20191002_181700-374:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042299881, "hashes": {"sha256": "ZP3k7pr5kNJlxfLV1ig2Rj6tPdsrMsa8Cc/mvCUoEXw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1h9X3oO2FeTpC3bdzcSNzXi4+mHL6n1cyZVsUZ6sKowjUH7NGDMEuE2DCaNoNlDc/4feio27OsW7Oc8Gtf9QCg"}}, "unsigned": {"age_ts": 1570042299881}}keQac$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2087}{"auth_events": ["$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "type": "m.room.power_levels", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"users": {"@anon-20191002_181700-374:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042299879, "hashes": {"sha256": "5NzEW/viOepmghdJOH8rZvDkOYGLWoB1Wp18bS5eoSo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PhBHhnS6Mb7QYYdIGkxZx9ZITcERRH7O1bCDA6e+fLOuOW7bBXNTGXJcttlHz2bvmbNbjvxDTSXcTuEfjzs2Cg"}}, "unsigned": {"age_ts": 1570042299879}}veQay$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2086}{"auth_events": ["$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ"], "prev_events": ["$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ"], "type": "m.room.member", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-374", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-374:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042298756, "hashes": {"sha256": "LnNllEdE0gvWU64d58QXtQWhKXUQwRiq3nG9+41fhs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C++DBYsggiWXq8elITJe2KI+hDvxI5Bitm5q5dOioIt4OYUdC9kBzlVZn+C/osPMwYlu0KFbICjQadQbBrouDA"}}, "unsigned": {"age_ts": 1570042298756}} !f&P j G P S { *36X58Z]f ]Q']eO!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kd\Q' eN!QMrkSPlQDGborAyWtQ:localhost:8800m.room.create$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngj[Q3 eM!mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI ZQ']eK!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIpYQ? eJ!mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibility$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEchXQ/ eI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rules$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1IjWQ3 eH!mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA VQ']eG!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwdUQ' eF!mBQpGaIiadEuKBXfOw:localhost:8800m.room.create$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI8TQ']eeE!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIpSQ? eC!xXYMxashIZAUOTuGAJ:localhost:8800m.room.history_visibility$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMhRQ/ eB!xXYMxashIZAUOTuGAJ:localhost:8800m.room.join_rules$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgjQQ3 eA!xXYMxashIZAUOTuGAJ:localhost:8800m.room.power_levels$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0 PQ']e@!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIdOQ' e?!xXYMxashIZAUOTuGAJ:localhost:8800m.room.create$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM NQ']e>!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMpMQ? e=!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibility$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEpLQ? eQ3 e(!csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levels$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUj=Q3 e'!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.power_levels$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0 B+]W |JP > P  \ *%+   b $0 ji7 Vo= J vpD | V $]d1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k1e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc1e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EI1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4G11e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_E&1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI V1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv81e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wz1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIt1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk`1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMc1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMO0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMf1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4'1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUI1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c 21e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4A1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIC1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iU$1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0?1e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ1e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w >1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ[1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEd1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct41e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E<1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ 1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM 1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 *1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec d Ld}2j8p> vDQj8p> w E  } K  K Q  X &  ^ ,W%],1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 c1e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz81e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo @1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI"1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg]1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY 1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs 1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI 1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A x1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 21e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4m1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa0+1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIn1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45ka1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgu1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkC1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI !1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok=1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloYK1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoM1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8W1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw41e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM.1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwS1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy900e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkt1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Qt1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M/1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4Ej1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYog1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYR1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcK1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwS1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8D1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc+1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw * v*H"eQa$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2093}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE"], "type": "m.room.test", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042304648, "hashes": {"sha256": "HJxplxeMGUlsXaCKf9jWxzIoFH3cVWS9teM65eun7vg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p+GXjxhMWlQX9N7sJznOW6HIwLCjhZObCdcraAfIPOhhxGe7dJzVnphCFcFQR8SDaMDoyMl12uoOTPGu6vliCw"}}, "unsigned": {"age_ts": 1570042304648}}!eQa$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2092}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY"], "type": "m.room.history_visibility", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042302164, "hashes": {"sha256": "rLsVhjGFQSPcBtQQVWyKf5FHq5SYFVYPFzJvah/daRo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VDldcwQstbAELJwmvw30ocRsXnuY2T7nf2KCrvuIB4InafNPb0UZVMH04ahrwexlBcuunYxkkJVyNJDuV+i2Dw"}}, "unsigned": {"age_ts": 1570042302164}} eQa$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2091}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8"], "type": "m.room.history_visibility", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042302162, "hashes": {"sha256": "BzmkcRNi7XaxP8S4npw2cOSTe31zUzT3qfD7babi8nc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7hdtak8Is06BmJDV/97i36ZLBg/VwmUs8QBpEdkuPhh9qUtDXh8fxyGONwAM6W/lz7D2B1gEW3DJkTdbeFjNBw"}}, "unsigned": {"age_ts": 1570042302162}}teQau$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "stream_ordering": 2090}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU"], "type": "m.room.join_rules", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042301199, "hashes": {"sha256": "XvXal3vw6wgpOqd+bmSJkzuCYqu1jS5E9Ym3niib+bs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cYl1mHvvbtWWhjiIf3zmE/cfY1Jod25pQ1zEYsnK/tglxUjRDJ07tIu1IeixiEKCXjL/wSHH5gueOvQb7wUPCQ"}}, "unsigned": {"age_ts": 1570042301199}} *|vHb4 | N h : X * r D  ` 2 |-]@anon-20191002_181700-232:localhost:8800-]@anon-20191002_181700-231:localhost:8800+[@anon-20191002_181700-22:localhost:8800K-]@anon-20191002_181700-228:localhost:8800-]@anon-20191002_181700-226:localhost:8800-]@anon-20191002_181700-224:localhost:8800-]@anon-20191002_181700-222:localhost:8800-]@anon-20191002_181700-220:localhost:8800+[@anon-20191002_181700-21:localhost:8800?-]@anon-20191002_181700-218:localhost:8800-]@anon-20191002_181700-217:localhost:8800-]@anon-20191002_181700-216:localhost:8800-]@anon-20191002_181700-215:localhost:8800-]@anon-20191002_181700-214:localhost:8800-]@anon-20191002_181700-213:localhost:8800|-]@anon-20191002_181700-212:localhost:8800z-]@anon-20191002_181700-211:localhost:8800u-]@anon-20191002_181700-210:localhost:8800s+[@anon-20191002_181700-20:localhost:8800:+[@anon-20191002_181700-20:localhost:88001-]@anon-20191002_181700-209:localhost:8800n-]@anon-20191002_181700-208:localhost:8800g-]@anon-20191002_181700-207:localhost:8800_-]@anon-20191002_181700-206:localhost:8800W-]@anon-20191002_181700-205:localhost:8800P-]@anon-20191002_181700-204:localhost:8800H-]@anon-20191002_181700-203:localhost:8800B-]@anon-20191002_181700-202:localhost:8800;-]@anon-20191002_181700-201:localhost:88003-]@anon-20191002_181700-200:localhost:8800,-]@anon-20191002_181700-199:localhost:8800'-]@anon-20191002_181700-198:localhost:8800"-]@anon-20191002_181700-197:localhost:8800-]@anon-20191002_181700-195:localhost:8800-]@anon-20191002_181700-194:localhost:8800 -]@anon-20191002_181700-193:localhost:8800-]@anon-20191002_181700-192:localhost:8800-]@anon-20191002_181700-191:localhost:8800-]@anon-20191002_181700-190:localhost:8800-]@anon-20191002_181700-189:localhost:8800-]@anon-20191002_181700-188:localhost:8800-]@anon-20191002_181700-187:localhost:8800 mQ}R' {P%yN#wL!B P % y N # w L ! y P ' } R 'uJsHqFoDlocalhost:8800**Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800{V*Q!vOfeZvbtpuHfoqShFl:localhost:8800~*Q!vOfeZvbtpuHfoqShFl:localhost:8800}*Q!vOfeZvbtpuHfoqShFl:localhost:8800|*Q!vOfeZvbtpuHfoqShFl:localhost:8800{*Q!vOfeZvbtpuHfoqShFl:localhost:8800z~*Q!vOfeZvbtpuHfoqShFl:localhost:8800y}*Q!vOfeZvbtpuHfoqShFl:localhost:8800x|*Q!vOfeZvbtpuHfoqShFl:localhost:8800w{*Q!vOfeZvbtpuHfoqShFl:localhost:8800vz*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!ulbQzxdPXzuvNoqqgU:localhost:8800*Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!vBvlJEXUSQKUYmsKcO:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800 *Q!ubmTdQFAhrhZkGULDx:localhost:8800  *Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~ *Q!ubmTdQFAhrhZkGULDx:localhost:8800 } *Q!ubmTdQFAhrhZkGULDx:localhost:8800 | +*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vAUAIZrCnHTeMGeNuw:localhost:8800gl*Q!vAUAIZrCnHTeMGeNuw:localhost:8800fk*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ej*Q!vAUAIZrCnHTeMGeNuw:localhost:8800di*Q!vAUAIZrCnHTeMGeNuw:localhost:8800ch*Q!vAUAIZrCnHTeMGeNuw:localhost:8800bg(Q!uxKymrHZeXRYCZwekU:localhost:8800CB(Q!uxKymrHZeXRYCZwekU:localhost:8800BA(Q!uxKymrHZeXRYCZwekU:localhost:8800A@(Q!uxKymrHZeXRYCZwekU:localhost:8800@?(Q!uxKymrHZeXRYCZwekU:localhost:8800?>*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!utJsNQubeIXvcTKGpx:localhost:8800*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  P*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  O*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  N*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  M*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  L*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  K*Q!uqIEMXzdeNeXdJmuwh:localhost:8800  J*Q!uqIEMXzdeNeXdJmuwh:localhost:8800 I*Q!uqIEMXzdeNeXdJmuwh:localhost:8800 H*Q!uqIEMXzdeNeXdJmuwh:localhost:8800 G*Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800 *Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800*Q!uSBqTezaFcMnlowsEf:localhost:8800- -RM H C > 9 4/*|%w rmhc TQeT!QMrkSPlQDGborAyWtQ:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0TQeS!QMrkSPlQDGborAyWtQ:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQTQeR!QMrkSPlQDGborAyWtQ:localhost:8800$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsT~QeQ!QMrkSPlQDGborAyWtQ:localhost:8800$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawT}QeP!QMrkSPlQDGborAyWtQ:localhost:8800$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsT|QeO!QMrkSPlQDGborAyWtQ:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kT{QeN!QMrkSPlQDGborAyWtQ:localhost:8800$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngTzQeM!mBQpGaIiadEuKBXfOw:localhost:8800$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgITyQeL!mBQpGaIiadEuKBXfOw:localhost:8800$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMTxQeK!mBQpGaIiadEuKBXfOw:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPITwQeJ!mBQpGaIiadEuKBXfOw:localhost:8800$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcTvQeI!mBQpGaIiadEuKBXfOw:localhost:8800$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1ITuQeH!mBQpGaIiadEuKBXfOw:localhost:8800$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXATtQeG!mBQpGaIiadEuKBXfOw:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwTsQeF!mBQpGaIiadEuKBXfOw:localhost:8800$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlITrQeE!xXYMxashIZAUOTuGAJ:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgTqQeD!xXYMxashIZAUOTuGAJ:localhost:8800$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUTpQeC!xXYMxashIZAUOTuGAJ:localhost:8800$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMToQeB!xXYMxashIZAUOTuGAJ:localhost:8800$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgTnQeA!xXYMxashIZAUOTuGAJ:localhost:8800$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0TmQe@!xXYMxashIZAUOTuGAJ:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YITlQe?!xXYMxashIZAUOTuGAJ:localhost:8800$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMTkQe>!ozgnwUlebxvzLVwyHW:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMTjQe=!ozgnwUlebxvzLVwyHW:localhost:8800$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziETiQe G u - <Em| R[i feQ']$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800 eeQ']$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800mdeQ? $N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibilityeceQ/ $T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rulesgbeQ3 $3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels aeQ']$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800a`eQ' $qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800m.room.createg_eQ3 $qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state ^eQ']$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800m]eQ? $Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibilitye\eQ/ $-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rulesg[eQ3 $dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels ZeQ']$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800aYeQ' $LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.create XeQ']$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800mWeQ? $tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800m.room.history_visibilityeVeQ/ $gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800m.room.join_rulesgUeQ3 $2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800m.room.power_levels TeQ']$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800aSeQ' $1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800m.room.create ReQ']$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800mQeQ? $ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibilitymPeQ? $g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibilityeOeQ/ $YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_ruleseNeQ/ $G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rulesgMeQ3 $0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levelsgLeQ3 $UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levels KeQ']$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800 JeQ']$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.member@anon-20191002_181700-375:localhost:8800aIeQ' $HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.createaHeQ' $M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800m.room.create GeQ']$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800mFeQ? $mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibilitymEeQ? $jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI!rQeYcODvQiLsOIbQrJ:localhost:8800m.room.history_visibility <P h  d  t,0(><,Ce?Q ]$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMm.room.history_visibility!xXYMxashIZAUOTuGAJ:localhost:8800mвmж@anon-20191002_181700-377:localhost:8800$Be/Q ]$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgm.room.join_rules!xXYMxashIZAUOTuGAJ:localhost:8800mЮemЯ@anon-20191002_181700-377:localhost:8800&Ae3Q ]$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0m.room.power_levels!xXYMxashIZAUOTuGAJ:localhost:8800mШmЬC@anon-20191002_181700-377:localhost:8800 @e'Q ]$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIm.room.member!xXYMxashIZAUOTuGAJ:localhost:8800mУmФw@anon-20191002_181700-377:localhost:8800? e'Q  ]$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMm.room.create!xXYMxashIZAUOTuGAJ:localhost:8800mНmmО]@anon-20191002_181700-377:localhost:8800 >e'Q ]$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMm.room.member!ozgnwUlebxvzLVwyHW:localhost:8800mЌ"mЏ@anon-20191002_181700-376:localhost:8800,=e?Q ]$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEm.room.history_visibility!ozgnwUlebxvzLVwyHW:localhost:8800mjmЄ@anon-20191002_181700-375:localhost:8800,<e?Q ]$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcm.room.history_visibility!QcaNrIiUsWpTiVGOnt:localhost:8800memЃx@anon-20191002_181700-375:localhost:8800$;e/Q ]$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEm.room.join_rules!ozgnwUlebxvzLVwyHW:localhost:8800mym|z@anon-20191002_181700-375:localhost:8800$:e/Q ]$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMm.room.join_rules!QcaNrIiUsWpTiVGOnt:localhost:8800mym{@anon-20191002_181700-375:localhost:8800&9e3Q ]$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8m.room.power_levels!ozgnwUlebxvzLVwyHW:localhost:8800mumxd@anon-20191002_181700-375:localhost:8800&8e3Q ]$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0m.room.power_levels!QcaNrIiUsWpTiVGOnt:localhost:8800mu~mw@anon-20191002_181700-375:localhost:8800 7e'Q ]$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScm.room.member!ozgnwUlebxvzLVwyHW:localhost:8800mqems@anon-20191002_181700-375:localhost:8800 6e'Q ]$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0m.room.member!QcaNrIiUsWpTiVGOnt:localhost:8800mqgmr@anon-20191002_181700-375:localhost:88005 e'Q  ]$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30sm.room.create!QcaNrIiUsWpTiVGOnt:localhost:8800mlmm@anon-20191002_181700-375:localhost:88004 e'Q  ]$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Ym.room.create!ozgnwUlebxvzLVwyHW:localhost:8800mlmmB@anon-20191002_181700-375:localhost:8800(3e7Q ]$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEka.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800mbmc@anon-20191002_181700-374:localhost:8800(2e7Q ]$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIa.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800m_ma@anon-20191002_181700-374:localhost:8800(1e7Q ]$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zega.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800m_ma@anon-20191002_181700-374:localhost:8800(0e7Q ]$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnusa.made.up.filler.type!csWEXfVEVxdviNvgAd:localhost:8800m_m_@anon-20191002_181700-374:localhost:8800 /e'Q ]$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgUm.room.member!rQeYcODvQiLsOIbQrJ:localhost:8800m]9m]@anon-20191002_181700-374:localhost:8800.e#Q ]$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYm.room.test!rQeYcODvQiLsOIbQrJ:localhost:8800mXmY]@anon-20191002_181700-374:localhost:8800-e#Q ]$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wm.room.test!csWEXfVEVxdviNvgAd:localhost:8800mXmX@anon-20191002_181700-374:localhost:8800,,e?Q ]$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEEm.room.history_visibility!csWEXfVEVxdviNvgAd:localhost:8800mNmQ@anon-20191002_181700-374:localhost:8800 a} { y w u sqomkigeca~ eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800~ eeQ$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800~ eeQ$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~ eeQ$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800~ eeQ$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~ eeQ$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800~eeQ$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800~eeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800~eeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800~eeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800~eeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800  co&eQG$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "348", "stream_ordering": 2097}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 3}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042306446, "hashes": {"sha256": "zlq058dGIT/+XKdCRnGmkumZE1jc2wvZQsDKc3ffmgI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KZS8wXKvxJfLr37hSwvcHfLOyRWF+LIefqZ4PkY5SMk8+VFalNk6KeHCVVXAjV60y78ZIyJeJDgZ9R2It7pcDA"}}, "unsigned": {"age_ts": 1570042306446}}o%eQG$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "347", "stream_ordering": 2096}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 2}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042306439, "hashes": {"sha256": "DBDgMQG7/UheHSzqAV2khY55qKq6bmSvyiSrPcwHvZc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zNaZKgYaEP858W5+Yj+kV6sjFSwIvWLNgKdZpiB0Jgf2/Fuz3lo4fF1ZJxIrznBqoIwxzhJ6yfpmp7l6LuSqDA"}}, "unsigned": {"age_ts": 1570042306439}}Z$eQaA$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2095}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY"], "type": "m.room.member", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-374:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042305849, "hashes": {"sha256": "M+mCGETdjFvXtK/yIEA0mNuYDhFWS6I/bGfxnTm9H5E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m10ywdwESNr/y/eYrUs/YVPsw6igAs2Iv3iCcLlUFqTq8znammWavpgBl2iNDp49OSVrtnmI8FJNLxfFK2qoAA"}}, "unsigned": {"age_ts": 1570042305849, "replaces_state": "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"}}H#eQa$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY!rQeYcODvQiLsOIbQrJ:localhost:8800{"token_id": 391, "stream_ordering": 2094}{"auth_events": ["$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0", "$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU", "$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts"], "prev_events": ["$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI"], "type": "m.room.test", "room_id": "!rQeYcODvQiLsOIbQrJ:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042304652, "hashes": {"sha256": "4R6abIHpt7SLUKzmSBij8m/Mo3SchvytXh5cRIPWcdE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vi09h1NimEyRviPbZW11nhwEP25KdL5Ry0TGGTlrffLQD0Ndj1d76LXUaNfdBklGGbSkJVUbWsEjYoKHJj4mBg"}}, "unsigned": {"age_ts": 1570042304652}} ,NC 8 - { " p  e ZOD9.|#qf VPeL$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcsha256/b[ u{t"zl$[:CVOeL$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0sha256 An3 Sd:xb*}1[~MVNeL$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Ysha256$I-󮡤haؔcV\ TGoBVMeL$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8sha256<%yr$3%Dk@pt_VLeL$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2Usha256<軁5BgrsJu(/l2+eVKeL$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIsha256W]WH" O nԙ 4 VJeL$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwsha256^wDl*j9kWaկ~87ȌVIeL$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0sha2563l%l z@p3(sčVHeL$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQsha256j^&ҳzmds+@tVGeL$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgssha2567"]W1,gD"FV VFeL$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Fawsha256OY8=ǘΉbF\Oޭed}VEeL$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlssha256䒝PMϞ˶rڏ_Q*[VDeL$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9ksha256[ N VI&4=&?-: Q,VCeL$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngsha256TN33bV` ]}=%Ǭ&xVBeL$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIsha256 HP3m|RGV>eL$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1Isha256yX&eY}מ†sC[RV=eL$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAsha256vS-^MaC^rN"&~%pV<eL$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwsha256+D96 @Rk;&W"(,bĬV;eL$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIsha256,v_{@g/ED[G"@=(\RV:eL$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgsha256`5"d4jm/8-ugbI S4HV9eL$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUsha256.Df*X+Zp-Gr`m3[S%V8eL$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMsha256 k"0MbG³DV7eL$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgsha256º[[r[ܝV5eL$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIsha256[ Rukp~gi[D)z GNw݂V4eL$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMsha256֌II tw4R;Sx V3eL$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMsha256_M')"h!V2eL$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEsha256 KkC&N<  E?9!V1eL$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcsha256VFww~ \Mp,DV0eL$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEsha256`U;n90c OmQV/eL$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMsha256jj^blpTg/a,0V.eL$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8sha256ܛ‰{-<*#DpІV-eL$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0sha256P ݮCTe`uVb/-V,eL$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScsha256,bb/ւ^6~H'tGivІnU'V+eL$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0sha256u "\&2o9. YYGaeV*eL$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30ssha256q}QHs~⬋x:g>KV)eL$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Ysha2563ۏV )/9@zTO+V(eL$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEksha256CM)nri9^ag#A\IV'eL$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIsha256g0GK5&!$C 114qUHV&eL$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zegsha256n0X@ΣQ$A/B eV%eL$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnussha256Ef: 3f N FE}K3,  W % ^8 v _ D -k9 e   Jj P q?   X&pw | R 1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 h1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo I1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMb1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE &1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko21e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE 1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg`1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20/1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sN1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwn c1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok}0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk;1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g 1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjog0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4<1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM]1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0J1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruki1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g ?1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE +1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc`1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc >21e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk g1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 S1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 31e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 21e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0y21e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU [1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0[1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h @ -@i*eQa_$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2101}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-375:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042309807, "hashes": {"sha256": "sdcfoDiSifFt0ZtYq0V6MTOXoJJrQ2fAbJqs8C+DOuo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/X8R+4wF/8IP6eTxANmOmtemS3bvvtH/w1rbRRUHkCKLnNxzltepno1dKf6c2J/Q0E5FcMcsqHasrRDwOQifBg"}}, "unsigned": {"age_ts": 1570042309807}}i)eQa_$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2100}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-375:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042309805, "hashes": {"sha256": "Erv0frDue+60c+vjFY1FhEw84f0AxCU/nmQiZ9CpjT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v1HufgsPDUMQA1wSioz4bzuZnd0EG8DjPtbDbLF3hlNfOvmLiCZey96rt3JnQPKJm83nZNXFTEPf/FdJGkkuAQ"}}, "unsigned": {"age_ts": 1570042309805}}o(eQG$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "349", "stream_ordering": 2099}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 4}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042307306, "hashes": {"sha256": "QN6bwx1yRHDM9VzqqI/+fZjcTo2lSOtPPVJsDKdi8xI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZkUw4oImCPeKBQ5zedjMMDMMzUug9v/jbXuUxm02AmYldJUiGL0Jot1+bwfUhxUKCan8ZGbF+ojCgBkm0ZN+Aw"}}, "unsigned": {"age_ts": 1570042307306}}o'eQG$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI!csWEXfVEVxdviNvgAd:localhost:8800{"token_id": 391, "txn_id": "346", "stream_ordering": 2098}{"auth_events": ["$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU", "$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ", "$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4"], "prev_events": ["$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"], "type": "a.made.up.filler.type", "room_id": "!csWEXfVEVxdviNvgAd:localhost:8800", "sender": "@anon-20191002_181700-374:localhost:8800", "content": {"filler": 1}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042306452, "hashes": {"sha256": "VIH88OVXe8imk6wHPWOCRN8bBEMD6eKXGqtByzoj/3w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4y0tNuxtyNZWiv2C4cJ5azsRk53kXni20ZMn1j3wA/i4E5pSuD3o0Wj4hpTZAhtQ8S/CgMLr+bEjV2mVNQHYCA"}}, "unsigned": {"age_ts": 1570042306452}} FE}K3,  W % ^8 v _ D -k9 e   Jj P q?   X&pw | R 1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 h1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo I1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMb1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE &1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko21e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE 1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg`1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20/1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sN1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwn c1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok}0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk;1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g 1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjog0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4<1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM]1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0J1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruki1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g ?1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE +1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScZ1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc >21e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk g1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 S1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 31e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 21e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0s21e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU Y1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0U1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h 9 m5RR r T nU 8  q 8   T 4p7 SPo6 V   8 8e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0sha256 L8e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pwsha2568e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYsha2568e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnussha256%8e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqcsha2568e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMAsha2568e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgsha256 8e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7ssha2568e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkcsha256]8e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMsha2568e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Esha256 8e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIsha256'7e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcsha256P8e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUsha256t8e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwsha256 W8e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8sha2568e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcsha256A8e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Qsha256 8e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4Esha256 8e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8sha256 8e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yosha256 "8e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYosha256 8e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3Esha2568e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYsha2568e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUsha256 8e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAsha2568e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBosha2568e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8sha2568e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750awsha2568e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4sha2568e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwAsha2568e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8sha2568e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwsha2568e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8sha2568e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuUsha2568e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Qsha2568e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQsha256k8e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMsha256y8e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwsha2568e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQsha256r8e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90sha256T8e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0sha2568e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQsha2568e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgksha2567e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjncsha256"8e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKUsha2568e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFIsha2568e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597Msha2568e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAsha256R8e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0sha256\8e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_Asha256/8e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LAsha256 8e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMsha256 8e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYsha256 88e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxssha2568e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qcsha2568e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gsha256 4r 8l D `8|]c!E@anon-20191002_181700-385:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwoZHNFADRSTE127.0.0.1Perl + Net::Async::HTTP/0.44mP9{]c!E@anon-20191002_181700-383:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQoCPGAGQTCJJ127.0.0.1Perl + Net::Async::HTTP/0.44m3z]c!E@anon-20191002_181700-382:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9goKSBAPZNICM127.0.0.1Perl + Net::Async::HTTP/0.44m/y]c!E@anon-20191002_181700-381:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6BjdgoCRNWPBWJUO127.0.0.1Perl + Net::Async::HTTP/0.44mՃx]c!E@anon-20191002_181700-380:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgoKLOHIVURCF127.0.0.1Perl + Net::Async::HTTP/0.44m҃w]c!E@anon-20191002_181700-379:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwoXGMNNMSEOT127.0.0.1Perl + Net::Async::HTTP/0.44m΅v]c!E@anon-20191002_181700-378:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgoBACPAMXENX127.0.0.1Perl + Net::Async::HTTP/0.44m΃u]c!E@anon-20191002_181700-377:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTRGg1dURwTWxqYVhlUFQKMDAyZnNpZ25hdHVyZSCZtu9raOeUDaSrMg2Wt3We-PR36xzKB5gjr7UVmVuWggoIARUZBQDWZ127.0.0.1Perl + Net::Async::HTTP/0.44mЛt]c!E@anon-20191002_181700-376:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQ2a0pmLXg2d28rLXpKQzoKMDAyZnNpZ25hdHVyZSAYHHyAwMQ2FHVetz3uw182_VIOQVWPam2j6rYviVPrmgoIDKHLQVFRN127.0.0.1Perl + Net::Async::HTTP/0.44mЇӃs]c!E@anon-20191002_181700-375:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNaV01NaFEjLDtMbyw5eV4KMDAyZnNpZ25hdHVyZSAkZjOvntO0jNI_b9TTEMMIxpbEZpsO2m3aQk0rTyuXGAoABNAUGMGBU127.0.0.1Perl + Net::Async::HTTP/0.44mk~ . .k.eQac$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2105}{"auth_events": ["$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "prev_events": ["$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "type": "m.room.power_levels", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"users": {"@anon-20191002_181700-375:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042312064, "hashes": {"sha256": "O+Io4cUVXDD52ALFDBO6h8zQfOJdmGIP/DqPvWacTOs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gTv5gR5NhHKBJfvyuXb4bJavUnS5Hsn5yVjcQDwEnmgr/RtD5xR1Yip1Bdmz7WG0OgqBtzwm/shzKBYU98SVBg"}}, "unsigned": {"age_ts": 1570042312064}}k-eQac$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2104}{"auth_events": ["$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s", "$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "prev_events": ["$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "type": "m.room.power_levels", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"users": {"@anon-20191002_181700-375:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042312062, "hashes": {"sha256": "Aui/MmlZZEYboYu4WToMXUlnpfQQDxk7IB5S2GRzrJo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "06S7fdRBgAIomdANOAX1sUmeKXR7QZ6v2nUJ8SRXsM7QZ3QomF39fgAd8jXBCGtica5kg5P2iqjxeKv4aJxoDg"}}, "unsigned": {"age_ts": 1570042312062}}v,eQay$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2103}{"auth_events": ["$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y"], "prev_events": ["$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y"], "type": "m.room.member", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-375", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-375:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042311013, "hashes": {"sha256": "ivoPvbTnKjaZDS2omyZfHrQ8E66G2+EL/GT4XzwqQZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1PaUEEls4dk1VMnMAyj+heZiIYqZq05KQfh012x8syF2fUdCZi4BXkT4QYmAhMQJHw91jZvjm+9g6lPnn28IAQ"}}, "unsigned": {"age_ts": 1570042311013}}v+eQay$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2102}{"auth_events": ["$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s"], "prev_events": ["$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s"], "type": "m.room.member", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-375", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-375:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042311015, "hashes": {"sha256": "WSMvo0+8Nm+MrkyVSpyEHXyb1yAP3dtp4G5vpnJ/iOQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "23YH9ujNzL1hDTWTcCo6Z4sas6FX+InGf8aqurK34LLiSfBlEiDm7MEIroX232h5fn/w1lS4afydJfSzDixyBg"}}, "unsigned": {"age_ts": 1570042311015}} cM> =LS!Z(8 1 N  W % j ` .  g 5  oCu vp~ D  k9rA Gj1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y0e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIP1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4S1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAE1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3UJ1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udckr1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ< 0e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wa1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU0e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k=1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4x 01e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U50e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0cN1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8R1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow>1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6200e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI`1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUj1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U/1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE0e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI|1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4]0e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Ah0e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEr0e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Am1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM:1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8N1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU-1e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok0e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4(1e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-80e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V401e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE0e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA-1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I0e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUG0e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbYl0e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMY1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c10e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngJ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648p0e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMZ0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms 1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8.1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB01e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8s1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcq1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Akp0e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQH0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewl1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawZ1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn980e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgU1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0V1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLIU ?9 0 U  | @ N S S Zh KS?Mz7`)N:Q/ !taANXnGBZntAreRurn:localhost:8800m.room.join_rules .BQ? !taANXnGBZntAreRurn:localhost:8800m.room.history_visibility 06Q' !taANXnGBZntAreRurn:localhost:8800m.room.create (<Q3 !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels^Q']!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800:Q/ !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rulesBQ? !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibility6Q' !tPkCGJBKmqUXJoRrnY:localhost:8800m.room.create<Q3 !tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels^Q']!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800:Q/ !tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rulesBQ? !tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility6Q' !tLkhTnTgDjjAvscRkW:localhost:8800m.room.create<Q3 !tDsPLsKOLPePtEWRwn:localhost:8800m.room.power_levels^Q']!tDsPLsKOLPePtEWRwn:localhost:8800m.room.member@anon-20191002_181700-176:localhost:8800:Q/ !tDsPLsKOLPePtEWRwn:localhost:8800m.room.join_rulesBQ? !tDsPLsKOLPePtEWRwn:localhost:8800m.room.history_visibility6Q' !tDsPLsKOLPePtEWRwn:localhost:8800m.room.create?Q9 !tDsPLsKOLPePtEWRwn:localhost:8800m.room.canonical_aliasEQ))!tDsPLsKOLPePtEWRwn:localhost:8800m.room.aliaseslocalhost:8800<Q3 !svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels4Q# !svYOOXWZHtQQzlMcEP:localhost:8800m.room.name^Q']!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800^Q']!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800^Q']!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800:Q/ !svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rulesBQ? !svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibility6Q' !svYOOXWZHtQQzlMcEP:localhost:8800m.room.create<Q3 !sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels ^Q']!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829 ^Q']!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800 :Q/ !sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules BQ? !sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility 6Q' !sqkBzbHHJOTNWwynqV:localhost:8800m.room.create ?Q9 !sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias EQ))!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.power_levelso^Q']!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-210:localhost:8800s^Q']!sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.member@anon-20191002_181700-209:localhost:8800n:Q/ !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.join_rulespBQ? !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.history_visibilityq<Q3 !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.guest_accessr6Q' !sfXbvAcOUJhzGwWEpZ:localhost:8800m.room.createm;Q3 !scyFsXcUIJiLIMwWMY:localhost:8800m.room.power_levelsd\Q'[!scyFsXcUIJiLIMwWMY:localhost:8800m.room.member@anon-20191002_181700-34:localhost:8800c9Q/ !scyFsXcUIJiLIMwWMY:localhost:8800m.room.join_ruleseAQ? !scyFsXcUIJiLIMwWMY:localhost:8800m.room.history_visibilityf5Q' !scyFsXcUIJiLIMwWMY:localhost:8800m.room.createb4Q% !sPWVGnipjiiWQpywNO:localhost:8800m.room.topic8;Q3 !sPWVGnipjiiWQpywNO:localhost:8800m.room.power_levels23Q# !sPWVGnipjiiWQpywNO:localhost:8800m.room.name7\Q'[!sPWVGnipjiiWQpywNO:localhost:8800m.room.member@anon-20191002_181700-20:localhost:880019Q/ !sPWVGnipjiiWQpywNO:localhost:8800m.room.join_rules4AQ? !sPWVGnipjiiWQpywNO:localhost:8800m.room.history_visibility55Q' !sPWVGnipjiiWQpywNO:localhost:8800m.room.create0^Q']!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800 *RQ'E!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455 1 P & 9Pk6eQac$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2113}{"auth_events": ["$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "type": "m.room.power_levels", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"users": {"@anon-20191002_181700-377:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042325139, "hashes": {"sha256": "NZzRIjUZEIuc66zxpZa+GpsDwi1szv8znazq6rZVHfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aLFKm5qgbQX0gnseW7nToV0Iil9u2oW5gW3wdhaKP7hS2DUdo9MK3w5Tciuun4Dxs/qLhpxAF9tpXuXcSWJICQ"}}, "unsigned": {"age_ts": 1570042325139}}v5eQay$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2112}{"auth_events": ["$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM"], "prev_events": ["$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM"], "type": "m.room.member", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-377", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-377:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042323878, "hashes": {"sha256": "KD0UBvpQyvlucgOXsEjj+7u3veAsEaLywd6cGiHfwmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p+Tnf6X1aINKTBb2QObdrrrfEUTkI9neqGO5qYXARG3QTY+MYqKtFngkLKbe4Yuvd07XUcnpUhECv0zIrsX8CA"}}, "unsigned": {"age_ts": 1570042323878}}i4eQa_$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2111}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-377:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042322285, "hashes": {"sha256": "TBTyNzfA9oVLpxDrC02ZOXVrWbAJhKHOdkoORUWv4D4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/kmxONfBbbwa1mPo8OrmIbOMfNBI5rinALMZAFXYTYxwzl4Zh3BumiE4MtWDWmm944vA00Trgths+1doUpVjBw"}}, "unsigned": {"age_ts": 1570042322285}}V3eQa9$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 392, "stream_ordering": 2110}{"auth_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8", "$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE"], "prev_events": ["$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE"], "type": "m.room.member", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-376:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-376", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-376:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042317858, "hashes": {"sha256": "sChWqSZu0EaOsIeIkd1ccYdSWurPWFFm139l5u0KaX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DQgQa3Dtih7LEXTIWMysSaD0esvLjj2xvURV1QnPsryH9pf5MFQbIKi4iGwI2TVMRP8WF+HYGAsA/Myauih0AQ"}}, "unsigned": {"age_ts": 1570042317858}} ~z v r n j fb^ZVRNJFeeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800 eeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800 eeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~eeQ$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800}eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU!xXYMxashIZAUOTuGAJ:localhost:8800|eeQ$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800{eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800zeeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800yeeQ$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800xeeQ$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800weeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800veeQ$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800 "P(T p {   JIw|!EPc*Q' e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc )Q']e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0o(Q? e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibility$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Yg'Q/ e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rules$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8i&Q3 e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U %Q']e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIc$Q' e!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw #Q']e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0 "Q']e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQo!Q? e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibility$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsg Q/ e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rules$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawiQ3 e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls Q']e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kcQ' e!QMrkSPlQDGborAyWtQ:localhost:8800m.room.create$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngiQ3 e !mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI Q']e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIoQ? e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibility$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcgQ/ e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rules$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1IiQ3 e !mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA Q']e!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwcQ' e!mBQpGaIiadEuKBXfOw:localhost:8800m.room.create$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI Q']e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgoQ? e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.history_visibility$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OMgQ/ e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.join_rules$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNgiQ3 e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.power_levels$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0 Q']e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.member@anon-20191002_181700-377:localhost:8800$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIcQ' e!xXYMxashIZAUOTuGAJ:localhost:8800m.room.create$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM Q']e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.member@anon-20191002_181700-376:localhost:8800$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMoQ? e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.history_visibility$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEo Q? e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.history_visibility$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcg Q/ e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.join_rules$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEg Q/ e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.join_rules$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMi Q3 e!ozgnwUlebxvzLVwyHW:localhost:8800m.room.power_levels$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8i Q3 e!QcaNrIiUsWpTiVGOnt:localhost:8800m.room.power_levels$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0  2eQa$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2109}{"auth_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8", "$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "prev_events": ["$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE"], "type": "m.room.history_visibility", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042314602, "hashes": {"sha256": "be/Ba0kr8uDR7mnUHewD0R08WQcOrPnoWSuggx2Hoq8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iR4CrQ82RlEEB6wQhlaVI/yPmvO9HQCwlybkscnHF8TnM1g9XI0PTq+WpwUQmKc08uoog9ZWuEXLjAslBSJdAw"}}, "unsigned": {"age_ts": 1570042314602}}1eQa$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2108}{"auth_events": ["$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0", "$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s", "$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "prev_events": ["$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM"], "type": "m.room.history_visibility", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042314597, "hashes": {"sha256": "xvAA+GmvgQtPQpiT/w8afjTojl4jco8Rq02SqVcwfV8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a9OT1KwTcC9QwVEhjydkQwpsijf8Ric4m9QStuGMje5xasMCeKXml7FNJ48BRiPXYuu77T57e0YI+naA7fgzAw"}}, "unsigned": {"age_ts": 1570042314597}}t0eQau$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeE!ozgnwUlebxvzLVwyHW:localhost:8800{"token_id": 393, "stream_ordering": 2107}{"auth_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8", "$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y", "$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc"], "prev_events": ["$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8"], "type": "m.room.join_rules", "room_id": "!ozgnwUlebxvzLVwyHW:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042313126, "hashes": {"sha256": "armzEu/EI3W0xrjN8LuSTck4TYDfFCE3vwncGITY0aM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j9aYDoiJYUJQT7JA900yVJmfKu636xExEiYEalYXB4jptPgbBIZdiTHvKaBp7cC7E8lgrPFuPnsw9kn7mbMxBQ"}}, "unsigned": {"age_ts": 1570042313126}}t/eQau$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM!QcaNrIiUsWpTiVGOnt:localhost:8800{"token_id": 393, "stream_ordering": 2106}{"auth_events": ["$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0", "$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30s", "$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0"], "prev_events": ["$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0"], "type": "m.room.join_rules", "room_id": "!QcaNrIiUsWpTiVGOnt:localhost:8800", "sender": "@anon-20191002_181700-375:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042313125, "hashes": {"sha256": "FHVj1utqtbaObpF8hKbs6GRISqb8QyQq5/h2h9GCLSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "moIIrkpkTGP9k6udpbTlAWEQq2IiTrdCLTgwIZKnLngBOykwx0spFyfNlrbJwpHO1z1f2XRQP+Pn6RWPhwunAA"}}, "unsigned": {"age_ts": 1570042313125}}  4 h 6jd]c@anon-20191002_181700-440:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFacUN2dzJMWTcjMnh6S04KMDAyZnNpZ25hdHVyZSBIE31dBp2khHIslpt9L2ttXRkowx20GElKVJtaEFSdkgo127.0.0.1d]c@anon-20191002_181700-439:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg2MU1hXm5BPV9mY3pHSDIKMDAyZnNpZ25hdHVyZSDYwznq40c_q4a6OD39IVJeXYATWzSsye1YD37lAobSewo127.0.0.1d]c@anon-20191002_181700-438:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAo127.0.0.1d]c@anon-20191002_181700-437:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgo127.0.0.1d]c@anon-20191002_181700-436:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQo127.0.0.1d]c@anon-20191002_181700-435:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgo127.0.0.1d]c@anon-20191002_181700-434:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQo127.0.0.1d]c@anon-20191002_181700-433:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5Ao127.0.0.1d]c@anon-20191002_181700-432:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2Qgo127.0.0.1d]c@anon-20191002_181700-431:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1wo127.0.0.1d]c@anon-20191002_181700-430:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwo127.0.0.1  Z:eQaA$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2117}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU"], "type": "m.room.member", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"membership": "leave"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-377:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042331184, "hashes": {"sha256": "x+pSH7ZxFMAgyP1hlk4g0C9BS3HAk3lXwi8orBgpeIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IadkHLYsEePG1outuF840cRkHhnXHLk9Nij9BTFVvLaD7gaEJRsr4KLcM8cv92W2sGRsS88dRlGc497o8lt7DQ"}}, "unsigned": {"age_ts": 1570042331184, "replaces_state": "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"}}H9eQa$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2116}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM"], "type": "m.room.test", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042329931, "hashes": {"sha256": "PzNRQTTo4mFqv7knAJTYk2zA4wqvHaW+M7tPpXuWp+U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4Z8VvGBsFJqoO6J6kTqMLD6E3Zt8SPwKxg1ZGdiotT3IYF+79a69qnBsGAi1vLXGcYa7Jdk4M01sqwjTz8xBBA"}}, "unsigned": {"age_ts": 1570042329931}}8eQa$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2115}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg"], "type": "m.room.history_visibility", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042327807, "hashes": {"sha256": "hpZ/X9jmz1aVvZd+/mIasQIiKIq93Q1gYdBx9bfwuwM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UrU90MiyqaVerp6ObAqqr0yOWlyf6zRRpAlomikeyNH5yib3xaRdxOItqE5guDywcgYA9eaxmVW8xcpkLzsgDA"}}, "unsigned": {"age_ts": 1570042327807}}t7eQau$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800{"token_id": 394, "stream_ordering": 2114}{"auth_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0", "$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM", "$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI"], "prev_events": ["$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0"], "type": "m.room.join_rules", "room_id": "!xXYMxashIZAUOTuGAJ:localhost:8800", "sender": "@anon-20191002_181700-377:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042326629, "hashes": {"sha256": "XvtJcsl3JIvbww7O7gX3c4/MOBvnC3qc+uQ5M+9mhTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gQKgfxXitvyumc+EzkGjSRFJGtvk86kgIdNrVEzxgX2hhozQrQSLN+ssA8g0SCZlvGy+jnSnNoTlxqCOhNWADA"}}, "unsigned": {"age_ts": 1570042326629}} a} { y w u sqomkigeca~?eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~>eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~=eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800~<eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~;eeQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~:eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800~9eeQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~8eeQ$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~7eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~6eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~5eeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~4eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800~3eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~2eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~1eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~0eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~/eeQ$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~.eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~-eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~,eeQ$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800~+eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800~*eeQ$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~)eeQ$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800~(eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~'eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~&eeQ$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEg$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800~%eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~$eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800~#eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0!xXYMxashIZAUOTuGAJ:localhost:8800~"eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI!xXYMxashIZAUOTuGAJ:localhost:8800~!eeQ$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800 s2 7 _ d o  -9>fqvGssssaeQ' $iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800m.room.createmeQ? $jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibilityeeQ/ $nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rulesgeQ3 $NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels eQ']$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800joinaeQ' $4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create eQ']$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800banmeQ? $cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibilityeeQ/ $l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rulesgeQ3 $SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels eQ']$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800joinaeQ' $m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create eQ']$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800joinm eQ? $JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibilitye eQ/ $kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rulesg eQ3 $HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels eQ']$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800joina eQ' $CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create eQ']$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800banmeQ? $N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibilityeeQ/ $T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rulesgeQ3 $3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels eQ']$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-380:localhost:8800joinaeQ' $qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800m.room.creategeQ3 $qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state eQ']$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800joinmeQ? $Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibilityeeQ/ $-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rulesg~eQ3 $dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels }eQ']$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800joina|eQ' $LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800m.room.createj a^ t " r ) 97MWa[ e'Q  ]$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcm.room.create!zsXPhIPzeXXLvuazzQ:localhost:8800mSmT@anon-20191002_181700-384:localhost:8800 Ze'Q ]$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0m.room.member!WFHIeSFQyuugGeBFxW:localhost:8800m:sm;@anon-20191002_181700-383:localhost:8800,Ye?Q ]$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Ym.room.history_visibility!WFHIeSFQyuugGeBFxW:localhost:8800m/6m6'@anon-20191002_181700-382:localhost:8800$Xe/Q ]$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8m.room.join_rules!WFHIeSFQyuugGeBFxW:localhost:8800m)jm,a@anon-20191002_181700-382:localhost:8800&We3Q ]$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2Um.room.power_levels!WFHIeSFQyuugGeBFxW:localhost:8800m#m%@anon-20191002_181700-382:localhost:8800 Ve'Q ]$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIm.room.member!WFHIeSFQyuugGeBFxW:localhost:8800m}m@anon-20191002_181700-382:localhost:8800U e'Q  ]$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwm.room.create!WFHIeSFQyuugGeBFxW:localhost:8800m=m@anon-20191002_181700-382:localhost:8800 Te'Q ]$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0m.room.member!QMrkSPlQDGborAyWtQ:localhost:8800m{m@anon-20191002_181700-380:localhost:8800 Se'Q ]$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQm.room.member!QMrkSPlQDGborAyWtQ:localhost:8800m m e@anon-20191002_181700-381:localhost:8800,Re?Q ]$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsm.room.history_visibility!QMrkSPlQDGborAyWtQ:localhost:8800mm@anon-20191002_181700-380:localhost:8800$Qe/Q ]$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Fawm.room.join_rules!QMrkSPlQDGborAyWtQ:localhost:8800mrm!@anon-20191002_181700-380:localhost:8800&Pe3Q ]$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKlsm.room.power_levels!QMrkSPlQDGborAyWtQ:localhost:8800mm@anon-20191002_181700-380:localhost:8800 Oe'Q ]$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9km.room.member!QMrkSPlQDGborAyWtQ:localhost:8800m{m@anon-20191002_181700-380:localhost:8800N e'Q  ]$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngm.room.create!QMrkSPlQDGborAyWtQ:localhost:8800mm$@anon-20191002_181700-380:localhost:8800&Me3Q ]$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIa.madeup.test.state!mBQpGaIiadEuKBXfOw:localhost:8800m|m @anon-20191002_181700-378:localhost:8800!Le)Q ]$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FMm.room.message!mBQpGaIiadEuKBXfOw:localhost:8800mm@anon-20191002_181700-378:localhost:8800 Ke'Q ]$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPIm.room.member!mBQpGaIiadEuKBXfOw:localhost:8800m*m@anon-20191002_181700-379:localhost:8800,Je?Q ]$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEcm.room.history_visibility!mBQpGaIiadEuKBXfOw:localhost:8800m3m`@anon-20191002_181700-378:localhost:8800$Ie/Q ]$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1Im.room.join_rules!mBQpGaIiadEuKBXfOw:localhost:8800mBmy@anon-20191002_181700-378:localhost:8800&He3Q ]$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAm.room.power_levels!mBQpGaIiadEuKBXfOw:localhost:8800mmq@anon-20191002_181700-378:localhost:8800 Ge'Q ]$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwm.room.member!mBQpGaIiadEuKBXfOw:localhost:8800mom/@anon-20191002_181700-378:localhost:8800F e'Q  ]$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlIm.room.create!mBQpGaIiadEuKBXfOw:localhost:8800mԽm[@anon-20191002_181700-378:localhost:8800 Ee'Q ]$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgm.room.member!xXYMxashIZAUOTuGAJ:localhost:8800m0m@anon-20191002_181700-377:localhost:8800De#Q ]$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUm.room.test!xXYMxashIZAUOTuGAJ:localhost:8800mлKmлO@anon-20191002_181700-377:localhost:8800 >Qj1Uq8 [ " w E a ( } D ` '~E c,Hd-NQm68]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQA6[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPDK6[!@anon-20191002_181700-43:localhost:8800CHTLJMKZABJ8]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!@anon-20191002_181700-501:localhost:8800YBYGOFEONK5Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVL6[!@anon-20191002_181700-49:localhost:8800XXZIHXDAZYT6[!@anon-20191002_181700-49:localhost:8800TMAZYGEOXOS8]!@anon-20191002_181700-499:localhost:8800VXSECXNERA8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSC8]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ8]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]!@anon-20191002_181700-493:localhost:8800GRPWUCANVU8]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU6[!@anon-20191002_181700-48:localhost:8800XFFXACSKIDR6[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWQ8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ 8]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS 6[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLUN8]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH 8]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ 8]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA 8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]!@anon-20191002_181700-462:localhost:8800SKOLIDFQEN8]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZU8]!@anon-20191002_181700-460:localhost:8800GJEFYISBJP1[@anon-20191002_181700-45:localhost:8800xyzzyM8]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSG8]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC1[@anon-20191002_181700-44:localhost:8800xyzzyL8]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJ8]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK g * T~=gg ]!c@anon-20191002_181700-388:localhost:8800WFNOXGPIPEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF95VU5hemV6fmJedmtMaFgKMDAyZnNpZ25hdHVyZSDz7FxYpShuVIV36DhvtTaitY3TlWlv68YskuY-1Ot6Qwog ]!c@anon-20191002_181700-387:localhost:8800AJRMDNNIDHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlia0JtQkBmV3VPS09kanUKMDAyZnNpZ25hdHVyZSCHeSHljZsgNpyA0gvbQbkJ8-4G5t4Ywq-t7geng7Ih6Qog ]!c@anon-20191002_181700-386:localhost:8800QTCKZJPBWSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9Fc0wuMl8xM1c4YW1CREgKMDAyZnNpZ25hdHVyZSA3WuGT1fvmgWAOhsMNpgmzTj0NDM9yJnvO3x46JsV22Qog ]!c@anon-20191002_181700-385:localhost:8800ZHNFADRSTEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpoYVBVO35sb19xWmImdFEKMDAyZnNpZ25hdHVyZSBN3iPqfPnDsdIsyr2J_cZY80WFgVlstSf_Y_Rt-D55bwog]!c@anon-20191002_181700-384:localhost:8800UKXQVESHRPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrSWNNYyMtcztDOTpSXl4KMDAyZnNpZ25hdHVyZSB-FTDcMYIrakCJawDmb3aBv18F3P31mU-pI3jX6M9MQQog]!c@anon-20191002_181700-383:localhost:8800CPGAGQTCJJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg0JnQ3Mm5tQmY6RzhQYkYKMDAyZnNpZ25hdHVyZSCCjdUpT3JnmnXkcy99kNEA5eEj479DuUyv_CFx-dhAvQog]!c@anon-20191002_181700-382:localhost:8800KSBAPZNICMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZ4cmw7X1FNblF1dl4jdWQKMDAyZnNpZ25hdHVyZSAaJ2xpVeDNCkawwSd5amoeot-dR0UQCZWrKh0cPBWq9gog]!c@anon-20191002_181700-381:localhost:8800CRNWPBWJUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdkOUZhVSZRTjh-JmY7R2YKMDAyZnNpZ25hdHVyZSBBrvkU4Sz5bdZVXAFEha_QOzPqQgM-NfwdL-B4D6Bjdgog]!c@anon-20191002_181700-380:localhost:8800KLOHIVURCFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQ1Y0pTd2RtNGZoaD1aLSsKMDAyZnNpZ25hdHVyZSDtRylwxS0ZKa1phWMxxjM-lMBxK6LWmIRSBsou3FRnDgog]!c@anon-20191002_181700-379:localhost:8800XGMNNMSEOTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDt4MjRVYkF0bVkzX3R2ckkKMDAyZnNpZ25hdHVyZSACxNhsnYR9LPdTqf-QiTYdW0Pg71o_olOOO63QbB4cUwog]!c@anon-20191002_181700-378:localhost:8800BACPAMXENXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVlQDYyOl9aQENkSDlUUG0KMDAyZnNpZ25hdHVyZSBCVz_zqDHXwSRWmhJ5CC3c4_IxQzoY79NgdVEeGL-nwgo 7IG@@ @ @ @ @ @ GGGGGI I ?]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZmON?]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQm=[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXm'#"?]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZGmӹ?]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZmӶw?]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEPmӢY?]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJAmӌ?]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKNmӇS?]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBAmEl?]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQBm-?]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAHm1?]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHNm?]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTBme?]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXRm֬?]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBKm։?]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJMmh?]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNEm\?]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIOmH?]!@anon-20191002_181700-462:localhost:8800SKOLIDFQENm??]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZUm%?]!@anon-20191002_181700-460:localhost:8800GJEFYISBJPm ?]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSGmv?]!@anon-20191002_181700-456:localhost:8800CRSASZJZPSm?]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLAmը?]!@anon-20191002_181700-452:localhost:8800NISMZSIYDMmՇP?]!@anon-20191002_181700-450:localhost:8800JKUEUBZDECm^8[@anon-20191002_181700-44:localhost:8800xyzzym-#?]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHYmS?]!@anon-20191002_181700-448:localhost:8800LJFADOXYLPm?R?]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLWm4^?]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJm?]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYFm?]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJmd?]!@anon-20191002_181700-443:localhost:8800EZTQKOQREEm?]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBAmړ?]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQVm?]!@anon-20191002_181700-440:localhost:8800OHPAOKURKKm?]!@anon-20191002_181700-439:localhost:8800CVIXABNKXUmB?]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBFm;?]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHMm?]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHEmԭ?]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKMmԞ?]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZmԙ?]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQBmԃ?]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRNmvY?]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDLmr)?]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCCm]?]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDNmH?]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYKmF?]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCAm04?]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJm?]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYMm?]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSRm?]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTTmk?]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWHm B^7c.c.Z% Q  } H  t ? k 6  d /[&R~Iu@ l^)U 2[@anon-20191002_181700-48:localhost:8800m6%2[@anon-20191002_181700-48:localhost:8800m6$4]@anon-20191002_181700-419:localhost:8800mӹ4]@anon-20191002_181700-418:localhost:8800mӶw4]@anon-20191002_181700-417:localhost:8800mӢY4]@anon-20191002_181700-416:localhost:8800mӌ4]@anon-20191002_181700-415:localhost:8800mӇS4]@anon-20191002_181700-414:localhost:8800mr4]@anon-20191002_181700-413:localhost:8800m_c4]@anon-20191002_181700-412:localhost:8800mZU4]@anon-20191002_181700-488:localhost:8800m!4]@anon-20191002_181700-486:localhost:8800m4]@anon-20191002_181700-484:localhost:8800mײ4]@anon-20191002_181700-482:localhost:8800mא4]@anon-20191002_181700-480:localhost:8800mm4]@anon-20191002_181700-479:localhost:8800mb4]@anon-20191002_181700-478:localhost:8800mON4]@anon-20191002_181700-477:localhost:8800mEl4]@anon-20191002_181700-476:localhost:8800m-4]@anon-20191002_181700-475:localhost:8800m14]@anon-20191002_181700-473:localhost:8800m4]@anon-20191002_181700-471:localhost:8800me4]@anon-20191002_181700-469:localhost:8800m֬4]@anon-20191002_181700-467:localhost:8800m։4]@anon-20191002_181700-465:localhost:8800mh4]@anon-20191002_181700-464:localhost:8800m\4]@anon-20191002_181700-463:localhost:8800mH4]@anon-20191002_181700-462:localhost:8800m?4]@anon-20191002_181700-461:localhost:8800m%4]@anon-20191002_181700-460:localhost:8800m 4]@anon-20191002_181700-458:localhost:8800mv4]@anon-20191002_181700-456:localhost:8800m4]@anon-20191002_181700-454:localhost:8800mը4]@anon-20191002_181700-452:localhost:8800mՇP4]@anon-20191002_181700-450:localhost:8800m^2[@anon-20191002_181700-44:localhost:8800m-#4]@anon-20191002_181700-449:localhost:8800mS4]@anon-20191002_181700-448:localhost:8800m?R4]@anon-20191002_181700-447:localhost:8800m4^4]@anon-20191002_181700-446:localhost:8800m4]@anon-20191002_181700-445:localhost:8800m4]@anon-20191002_181700-444:localhost:8800md4]@anon-20191002_181700-443:localhost:8800m4]@anon-20191002_181700-442:localhost:8800mړ4]@anon-20191002_181700-441:localhost:8800m4]@anon-20191002_181700-440:localhost:8800m4]@anon-20191002_181700-439:localhost:8800mB4]@anon-20191002_181700-438:localhost:8800m;4]@anon-20191002_181700-437:localhost:8800m4]@anon-20191002_181700-436:localhost:8800mԭ4]@anon-20191002_181700-435:localhost:8800mԞ4]@anon-20191002_181700-434:localhost:8800mԙ4]@anon-20191002_181700-433:localhost:8800mԃ4]@anon-20191002_181700-432:localhost:8800mvY4]@anon-20191002_181700-431:localhost:8800mr)4]@anon-20191002_181700-430:localhost:8800m]4]@anon-20191002_181700-429:localhost:8800mH4]@anon-20191002_181700-428:localhost:8800mF4]@anon-20191002_181700-427:localhost:8800m044]@anon-20191002_181700-426:localhost:8800m4]@anon-20191002_181700-425:localhost:8800m4]@anon-20191002_181700-424:localhost:8800m4]@anon-20191002_181700-422:localhost:8800mk4]@anon-20191002_181700-421:localhost:8800m4]@anon-20191002_181700-420:localhost:8800m2[@anon-20191002_181700-41:localhost:8800m'#"   *t>eQau$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2121}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA"], "type": "m.room.join_rules", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042340674, "hashes": {"sha256": "poy6uw79IjUh3TRgKJfKnY3CLtAGBEbmowv9TfdhEEI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j7LqLtBOeqJbUOIoc+2kbrovj8h3Kw2clKyHJvpS1Tkfj/GUkWy5sMsG1TF0pfYGvHkuraVhWag4LNp63Ec7Aw"}}, "unsigned": {"age_ts": 1570042340674}}k=eQac$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2120}{"auth_events": ["$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "type": "m.room.power_levels", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"users": {"@anon-20191002_181700-378:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042339100, "hashes": {"sha256": "L8vBLnBRRAVhN2iSqfUweL8Go8qzfIOG+5OeURX4jA8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "myD2kDG3R/F2rdDHA/TG4oZmMp9os9psTaRSuX02xistIKmT6xLDOSxGVJMsH462J6swC99AHr1CK8PZ9TsXDA"}}, "unsigned": {"age_ts": 1570042339100}}v<eQay$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2119}{"auth_events": ["$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI"], "prev_events": ["$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI"], "type": "m.room.member", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-378", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-378:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042338159, "hashes": {"sha256": "qMeaG6Kyee2cTrF3rpktNYUbIjhRpsG02309L27UASg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sot4XDbKSco8rYMlqxj7Og6o+Rxi8YV70lVUpFgydfBBrr/7Hsh3NFti+oKn6WiuZpjxMNbwPdULzeu58pH3AQ"}}, "unsigned": {"age_ts": 1570042338159}}i;eQa_$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2118}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-378:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042336445, "hashes": {"sha256": "pKrxjnKQfypQl2sFUEY9LnlasPl7lk/r6k5t5Gow2Cw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2YC4UbPGByCVvDVnR2jgv9S2rMC94G4O7X19Z/iN2dPQPOC4okB/ALLLr86jlPQ2AXuyWNpTRO8zqNMNVKy/DA"}}, "unsigned": {"age_ts": 1570042336445}} IFoDmBk@i>T)}R' { P % y N # w L ! u J  s H qqFoDmBQ*Q!wCsDjKBtuUbrmZgjsB:localhost:8800>>*Q!wCsDjKBtuUbrmZgjsB:localhost:8800==*Q!wCsDjKBtuUbrmZgjsB:localhost:8800<<*Q!wCsDjKBtuUbrmZgjsB:localhost:8800;;*Q!wCsDjKBtuUbrmZgjsB:localhost:8800::*Q!wIhMbfQzYbJobPdwyi:localhost:8800{{*Q!wIhMbfQzYbJobPdwyi:localhost:8800zz*Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBkUBAjOznOyxrLchl:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800  *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wAyboOFgsOPwkmgMAI:localhost:8800??*Q!wAyboOFgsOPwkmgMAI:localhost:8800>>*Q!wAyboOFgsOPwkmgMAI:localhost:8800==*Q!wAyboOFgsOPwkmgMAI:localhost:8800<<*Q!wAyboOFgsOPwkmgMAI:localhost:8800;;*Q!wAyboOFgsOPwkmgMAI:localhost:8800::*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!whuymJoLfUdkFdxoyE:localhost:8800 8 8*Q!whuymJoLfUdkFdxoyE:localhost:8800 7 7*Q!whuymJoLfUdkFdxoyE:localhost:8800 6 6*Q!whuymJoLfUdkFdxoyE:localhost:8800 5 5*Q!whuymJoLfUdkFdxoyE:localhost:8800 4 4*Q!whuymJoLfUdkFdxoyE:localhost:8800 3 3*Q!whuymJoLfUdkFdxoyE:localhost:8800 2 2*Q!whuymJoLfUdkFdxoyE:localhost:8800 1 1*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wLitJYvgvNJzanSIvO:localhost:8800bb*Q!wLitJYvgvNJzanSIvO:localhost:8800aa*Q!wLitJYvgvNJzanSIvO:localhost:8800``*Q!wLitJYvgvNJzanSIvO:localhost:8800__*Q!wLitJYvgvNJzanSIvO:localhost:8800^^*Q!wLitJYvgvNJzanSIvO:localhost:8800]]*Q!wIhMbfQzYbJobPdwyi:localhost:8800*Q!wIhMbfQzYbJobPdwyi:localhost:8800~~*Q!wIhMbfQzYbJobPdwyi:localhost:8800}}*Q!wIhMbfQzYbJobPdwyi:localhost:8800|| 9r 6 o lP4mCY e]]Q=$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio@anon-20191002_181700-395:localhost:8800@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800joinanon-20191002_181700-395CX e]]Q=$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U@anon-20191002_181700-394:localhost:8800@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800joinanon-20191002_181700-394CW e]]Q=$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY@anon-20191002_181700-393:localhost:8800@anon-20191002_181700-393:localhost:8800!djwLhpJUYOKsgQtrky:localhost:8800joinanon-20191002_181700-393CV e]]Q=$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI@anon-20191002_181700-392:localhost:8800@anon-20191002_181700-392:localhost:8800!bkwyieHZwSMJfuSKvV:localhost:8800joinanon-20191002_181700-392CU e]]Q=$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY@anon-20191002_181700-391:localhost:8800@anon-20191002_181700-391:localhost:8800!XcaKxZsPvbZhAGKKdx:localhost:8800joinanon-20191002_181700-391CT e]]Q=$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk@anon-20191002_181700-390:localhost:8800@anon-20191002_181700-390:localhost:8800!jDKAOtmeAGbYTpwyEW:localhost:8800joinanon-20191002_181700-390CS e]]Q=$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k@anon-20191002_181700-389:localhost:8800@anon-20191002_181700-389:localhost:8800!JYLMokjOhZZlmbZvTf:localhost:8800joinanon-20191002_181700-389CR e]]Q=$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA@anon-20191002_181700-388:localhost:8800@anon-20191002_181700-388:localhost:8800!zoTQAhGwmDDUECKtbL:localhost:8800joinanon-20191002_181700-388CQ e]]Q=$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew@anon-20191002_181700-387:localhost:8800@anon-20191002_181700-387:localhost:8800!NeYaCeYNFATCqlrlGT:localhost:8800joinanon-20191002_181700-387CP e]]Q=$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY@anon-20191002_181700-386:localhost:8800@anon-20191002_181700-386:localhost:8800!YtVXQjSPgVtbxrzUOA:localhost:8800joinanon-20191002_181700-386*O e]]Q$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g@anon-20191002_181700-385:localhost:8800@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800banCN e]]Q=$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w@anon-20191002_181700-385:localhost:8800@anon-20191002_181700-385:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800joinanon-20191002_181700-385CM e]]Q=$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0@anon-20191002_181700-384:localhost:8800@anon-20191002_181700-384:localhost:8800!zsXPhIPzeXXLvuazzQ:localhost:8800joinanon-20191002_181700-384CL e]]Q=$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0@anon-20191002_181700-383:localhost:8800@anon-20191002_181700-383:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800joinanon-20191002_181700-383CK e]]Q=$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI@anon-20191002_181700-382:localhost:8800@anon-20191002_181700-382:localhost:8800!WFHIeSFQyuugGeBFxW:localhost:8800joinanon-20191002_181700-382*J e]]Q$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0@anon-20191002_181700-381:localhost:8800@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800banCI e]]Q=$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ@anon-20191002_181700-381:localhost:8800@anon-20191002_181700-381:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800joinanon-20191002_181700-381CH e]]Q=$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k@anon-20191002_181700-380:localhost:8800@anon-20191002_181700-380:localhost:8800!QMrkSPlQDGborAyWtQ:localhost:8800joinanon-20191002_181700-380CG e]]Q=$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI@anon-20191002_181700-379:localhost:8800@anon-20191002_181700-379:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800joinanon-20191002_181700-379CF e]]Q=$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw@anon-20191002_181700-378:localhost:8800@anon-20191002_181700-378:localhost:8800!mBQpGaIiadEuKBXfOw:localhost:8800joinanon-20191002_181700-378 I}KQj8p> v D  | J   P  W % W % ] +c1j8p> vD^,11e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY '1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA #1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg 1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c 1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A S1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2EgcsD1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc 1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs31e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGst0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ%1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_AD1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y81e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4a1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwg1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o u1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w]1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEK1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4S1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAm1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU71e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAk1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo 1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 @1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 11e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI+1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM21e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQi1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4o1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwE1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8{1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEE1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc 11e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQP1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04YO1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI  wsBeQas$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2125}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM"], "type": "a.madeup.test.state", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"my_key": "before"}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042344572, "hashes": {"sha256": "78zmQozj9Ij8qlmhwcIJZi54BzNN/Yqvq3wViXK7BfY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SSoMD7eJeip41cLud62qnpIcMSmkRBcjRymGAMAhHTonPYAD7SxJTcUGpkYLvAp7VCPK/FbetMqkszoeRL/UDQ"}}, "unsigned": {"age_ts": 1570042344572}}AeQm$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FM!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "txn_id": "365", "stream_ordering": 2124}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI"], "type": "m.room.message", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"body": "before", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042343908, "hashes": {"sha256": "0V43EgAoRtiLcRLtYwCmzDKB3sRNzh1EoG8lmW6tAS8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HENcCNu6cIkDQS7a446akuAgktM+wJKdekZ3EfW4scNasbUbUT5UeXCd4YuEdsen0sKP5c5aeAdR9k8vnLPDAg"}}, "unsigned": {"age_ts": 1570042343908}}V@eQa9$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 396, "stream_ordering": 2123}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I"], "prev_events": ["$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc"], "type": "m.room.member", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-379:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-379", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-379:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042342954, "hashes": {"sha256": "fBNYqgOUizJvnukSWKB46kRcm+a/modLBOs/nrfmhnU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YPFaaf9CnyElGG2UeB81uFFtrh0JiJVGPOB8HJXNbrw6X9AfOhO6DUk1+/ImstQ9CPlg7rAoFlPCmt/AID0VCg"}}, "unsigned": {"age_ts": 1570042342954}}?eQa$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800{"token_id": 395, "stream_ordering": 2122}{"auth_events": ["$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA", "$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI", "$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw"], "prev_events": ["$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I"], "type": "m.room.history_visibility", "room_id": "!mBQpGaIiadEuKBXfOw:localhost:8800", "sender": "@anon-20191002_181700-378:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042341683, "hashes": {"sha256": "OaCNa7HTIw6XjoCK+pkDIBFAGS74ObGh3V0FEbrp3x8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1/YRb75XyGTUAwt6rmF90F1BMkH/qBql+dpTJZcHhDZs0vUNYVID9MsC64Cbd3fk9DTwUeI60oFjXGRltbXIAQ"}}, "unsigned": {"age_ts": 1570042341683}} RG j  X &  L+ _ -e3k9q? ~8 W%Q}K]wEp> v D  S/v0H7p7kqDN8x1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM U1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0&1e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g @1e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 ,1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38+1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM :1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4-1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA 1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk:1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Yp1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8UH1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw%1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQI1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE>1e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk61e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts81e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicG1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0t1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI~1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScr1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGES1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w ~1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 b1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns ?1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc.0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcD1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00S1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00Q1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00P1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 21e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA d SH ! Y ' _ -+e3]k9Wq? wE}KQ%j8p> | J v D  21e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgS1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgR1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU^1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU]1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU\1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoF1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoE1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkoD1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s ?1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s >1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s =1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg;1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg:1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg91e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8 &1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm41e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm41e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI71e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI61e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI51e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie471e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie461e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie451e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg T1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg S1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg R1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA ;1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoF1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoE1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoD1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8 i1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8 h1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8 g1e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB01e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4  i 4 gih5 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpYV1UzX2RMeHlpTThVLDgKMDAyZnNpZ25hdHVyZSDKMZbihlcCO-BMIgTGA0H14UbRU1sAhEK1hzmUkOzGlwo=1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg1TlZJZWZnM3phZ3YtWmUKMDAyZnNpZ25hdHVyZSBryEigPqEN1rqVZrKO7VDeFuUVKqnp2DaTXjDQfoc7tgo>1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERSfmc5IyNyLEZrd3RVM0MKMDAyZnNpZ25hdHVyZSB9Zzl_-xrP4lo0zq-qFG5swwa6QuYZTisOhaXU4zwHQgo?1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhaeUltY1liPXFAaHduNUAKMDAyZnNpZ25hdHVyZSAKjNta7gu4w8eSYsQX4wKidAtXogrcEDOTHczSKCQolQo91cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtpJjJyXl9fZkwjbXE5QncKMDAyZnNpZ25hdHVyZSAlQMVETAI9JwraP-0coRf6nU91QgVwG3VZKwPV1QeoogoB1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpGdCZ5bVg2OF5MNENsZTUKMDAyZnNpZ25hdHVyZSAGdnSPXhdcyvh2jrndHbGjSQGNcRvNC_jdA14cLC5axwoA1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtOSEksOzU0NlNMSExATjUKMDAyZnNpZ25hdHVyZSAz2Ck_g7pO7cLau4NjBu7DxxH5FmPeIfKdMAW1TMNuyQo@f1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9Rd2UzdE87MkRmc14wclMKMDAyZnNpZ25hdHVyZSBny0apZfGL0-2aLk3t56awfn5aZ8a3VSK2VVUmwgpbwwo81cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1EKk5PU1hWbjJucXJ6bW0KMDAyZnNpZ25hdHVyZSBqc_I8Ca3K06MnS5_oz3UhhlN0GjIyX3sdS8gyq9pJAQo<1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDcxfnI1QnYmMnBuRX5-NkQKMDAyZnNpZ25hdHVyZSCXOq00q1LAcoARKcGbTap525JWA6tBDmMnU-uj6Xb1Owo;1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTMwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpqNUp3Knd5OlpxT2tNd1gKMDAyZnNpZ25hdHVyZSDsHUPsoVhj26T84iFwN_m_O8Ui8-dQX0UihhtmqRI_jAo:   *tFeQau$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2129}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls"], "type": "m.room.join_rules", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042348658, "hashes": {"sha256": "C/xdfH/ox6hmhjQ7iUp0cgu1bSENk+x4itKUB0MN2Lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EL0x2AuledF7flldRT5PkvVTgNtQ/vWSk+wF/E1P/AqIBadeoyUHUIrlvhHaoTMAtwPnmeIMBJiSy0J4qUrdAA"}}, "unsigned": {"age_ts": 1570042348658}}kEeQac$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2128}{"auth_events": ["$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "type": "m.room.power_levels", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"users": {"@anon-20191002_181700-380:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042347957, "hashes": {"sha256": "PVWII/xRkAplBRfzz9uHAIgrTdAFRYe6LmYQ3LoUFxc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sp+e4P1QpZxAsz5kby8HKVapaREhOq5ySwyy5/AX0zP55+dfhQkPxqZTR/1sgMzIFHZOWwJFNpU/gbluzlf9AQ"}}, "unsigned": {"age_ts": 1570042347957}}vDeQay$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2127}{"auth_events": ["$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng"], "prev_events": ["$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng"], "type": "m.room.member", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-380", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-380:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042347387, "hashes": {"sha256": "97qj4tCCkPRnpHXKBvrSlFX2zFi8smAW6EYoogDO8A8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F9wLHiUk53p4c2ybGUsa1EOmG7PjwG+dQ7k2NW9j/cMQNQN3KtVlr9bYpG2KnhGVeaZgRt7+5KfRbZ/+ytWUDw"}}, "unsigned": {"age_ts": 1570042347387}}iCeQa_$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2126}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-380:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042346713, "hashes": {"sha256": "bYKT5kMyQ7wUaW/WvV5nRy7m6p/qEP03+GtZ9N/1Us8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IBOhhFG8wOhZMco2T5W3pLaQiDNskh0o6qx50VabvKaZv6zk2+Srj5NlDZfY/GLqJdWmZmyOWUdMZ9GcsbZxDA"}}, "unsigned": {"age_ts": 1570042346713}} XYh@x (xX0P( `0h@ x P ( h @   0  8  p H 8 X`8pH `Ph @'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!YtVXQjSPgVtbxrzUOA:localhost:8800]'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800^'Q!YtVXQjSPgVtbxrzUOA:localhost:8800Z'Q!YtVXQjSPgVtbxrzUOA:localhost:8800Y'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800['Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 'Q!ZOwibbprUCQrSJQCrx:localhost:8800_'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 v'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 o'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 n'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 m'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 l'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 k'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 j'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800\'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZNIjCvcWhgcwskanjT:localhost:8800'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800r'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800q'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800p'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800o'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800n'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800m'Q!ZOwibbprUCQrSJQCrx:localhost:8800d'Q!ZOwibbprUCQrSJQCrx:localhost:8800c'Q!ZOwibbprUCQrSJQCrx:localhost:8800b'Q!ZOwibbprUCQrSJQCrx:localhost:8800a'Q!ZOwibbprUCQrSJQCrx:localhost:8800`@'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800 (% i  r  ' 0 3U :`c!h}Q/ es!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rules$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgj|Q3 er!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM {Q']eq!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAdzQ' ep!zoTQAhGwmDDUECKtbL:localhost:8800m.room.create$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIpyQ? en!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibility$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_UhxQ/ em!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rules$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cjwQ3 el!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550 vQ']ek!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwduQ' ej!NeYaCeYNFATCqlrlGT:localhost:8800m.room.create$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8ptQ? eh!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibility$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMhsQ/ eg!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rules$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwjrQ3 ef!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU qQ']ee!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYdpQ' ed!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog8oQ']eea!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w nQ']e`!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wpmQ? e_!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibility$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MhlQ/ e^!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rules$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssjkQ3 e]!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ jQ']e\!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0diQ' e[!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc hQ']eZ!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0pgQ? eY!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibility$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YhfQ/ eX!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rules$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8jeQ3 eW!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U dQ']eV!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIdcQ' eU!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw8bQ']eeT!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ aQ']eS!QMrkSPlQDGborAyWtQ:localhost:8800m.room.member@anon-20191002_181700-381:localhost:8800$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQp`Q? eR!QMrkSPlQDGborAyWtQ:localhost:8800m.room.history_visibility$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsh_Q/ eQ!QMrkSPlQDGborAyWtQ:localhost:8800m.room.join_rules$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Fawj^Q3 eP!QMrkSPlQDGborAyWtQ:localhost:8800m.room.power_levels$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls T\/{N!U( 7 W*vIi<yLl? _ 2  ~nA T ) } Q $ q D  dT',Q+Q !PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800  ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!QWLJZmJqjWZjVOjdYF:localhost:8800%%,Q!QWLJZmJqjWZjVOjdYF:localhost:8800$$,Q!QWLJZmJqjWZjVOjdYF:localhost:8800##,Q!QWLJZmJqjWZjVOjdYF:localhost:8800"",Q!QWLJZmJqjWZjVOjdYF:localhost:8800!!+Q !QWLJZmJqjWZjVOjdYF:localhost:8800  ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 +Q !PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ ~,Q!PgNDjhhIBAXKryuGKy:localhost:8800 } },Q!PgNDjhhIBAXKryuGKy:localhost:8800 | |,Q!PgNDjhhIBAXKryuGKy:localhost:8800 { {,Q!PgNDjhhIBAXKryuGKy:localhost:8800 z z,Q!PgNDjhhIBAXKryuGKy:localhost:8800 y y,Q!PgNDjhhIBAXKryuGKy:localhost:8800 x x+Q !PgNDjhhIBAXKryuGKy:localhost:8800 w w,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 +Q !PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !QnmLrBAxeItdHsaxWf:localhost:8800 g g,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 +Q !QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QcaNrIiUsWpTiVGOnt:localhost:8800<<,Q!QcaNrIiUsWpTiVGOnt:localhost:8800::,Q!QcaNrIiUsWpTiVGOnt:localhost:880088,Q!QcaNrIiUsWpTiVGOnt:localhost:880066+Q !QcaNrIiUsWpTiVGOnt:localhost:880055*Q!QZhNrNpwObZGJZpdAG:localhost:8800*Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 )Q !QZhNrNpwObZGJZpdAG:localhost:8800 ,Q!QMrkSPlQDGborAyWtQ:localhost:8800TT,Q!QMrkSPlQDGborAyWtQ:localhost:8800SS,Q!QMrkSPlQDGborAyWtQ:localhost:8800RR,Q!QMrkSPlQDGborAyWtQ:localhost:8800QQ,Q!QMrkSPlQDGborAyWtQ:localhost:8800PP,Q!QMrkSPlQDGborAyWtQ:localhost:8800OO+Q !QMrkSPlQDGborAyWtQ:localhost:8800NN,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800+Q !QFiJrWFFeTAAAUCjCE:localhost:8800,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 T\/{N!U( 7 W*vIi<yLl? _ 2  ~nA T ) } Q $ q D  dT',Q+Q !PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800  ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ,Q!QWLJZmJqjWZjVOjdYF:localhost:8800%%,Q!QWLJZmJqjWZjVOjdYF:localhost:8800$$,Q!QWLJZmJqjWZjVOjdYF:localhost:8800##,Q!QWLJZmJqjWZjVOjdYF:localhost:8800"",Q!QWLJZmJqjWZjVOjdYF:localhost:8800!!+Q !QWLJZmJqjWZjVOjdYF:localhost:8800  ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PUIxAaiCnbqaVbawGu:localhost:8800 +Q !PUIxAaiCnbqaVbawGu:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ ~,Q!PgNDjhhIBAXKryuGKy:localhost:8800 } },Q!PgNDjhhIBAXKryuGKy:localhost:8800 | |,Q!PgNDjhhIBAXKryuGKy:localhost:8800 { {,Q!PgNDjhhIBAXKryuGKy:localhost:8800 z z,Q!PgNDjhhIBAXKryuGKy:localhost:8800 y y,Q!PgNDjhhIBAXKryuGKy:localhost:8800 x x+Q !PgNDjhhIBAXKryuGKy:localhost:8800 w w,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PcvmCDeVUSyJbXpTig:localhost:8800 +Q !PcvmCDeVUSyJbXpTig:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 ,Q!PVyTvKbqnjSXfGWAMy:localhost:8800 +Q !QnmLrBAxeItdHsaxWf:localhost:8800 g g,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QkkdnzvdrjHaFGkzMt:localhost:8800 +Q !QkkdnzvdrjHaFGkzMt:localhost:8800 ,Q!QcaNrIiUsWpTiVGOnt:localhost:8800<<,Q!QcaNrIiUsWpTiVGOnt:localhost:8800::,Q!QcaNrIiUsWpTiVGOnt:localhost:880088,Q!QcaNrIiUsWpTiVGOnt:localhost:880066+Q !QcaNrIiUsWpTiVGOnt:localhost:880055*Q!QZhNrNpwObZGJZpdAG:localhost:8800*Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QZhNrNpwObZGJZpdAG:localhost:8800 )Q !QZhNrNpwObZGJZpdAG:localhost:8800 ,Q!QMrkSPlQDGborAyWtQ:localhost:8800TT,Q!QMrkSPlQDGborAyWtQ:localhost:8800SS,Q!QMrkSPlQDGborAyWtQ:localhost:8800RR,Q!QMrkSPlQDGborAyWtQ:localhost:8800QQ,Q!QMrkSPlQDGborAyWtQ:localhost:8800PP,Q!QMrkSPlQDGborAyWtQ:localhost:8800OO+Q !QMrkSPlQDGborAyWtQ:localhost:8800NN,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800,Q!QFiJrWFFeTAAAUCjCE:localhost:8800+Q !QFiJrWFFeTAAAUCjCE:localhost:8800,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 ,Q!PzoqoNRxeEEqiLyVSV:localhost:8800 JHj8q?  w E  } K  %  W W % ] +c1i7o= uD|P1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI }1e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E e1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 G1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 51e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ N1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o 1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o G0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo71e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrgj1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w8E1e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8~1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc Q21e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4:1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs 1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM?1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk41e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuIZ1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk(1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk@1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ'1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs&1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI61e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk '1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMf1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkZ1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-021e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAN1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fsq1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl041e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8f1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk51e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAq1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwe1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMb1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q  wiJeQa_$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2133}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-382:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042354237, "hashes": {"sha256": "gtaijJr1YG3KMJ79o5HqkQ2c5RZtxhNeyBd4n5ibP3Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4+vgSjn8Mg0RPQJpyZbNyX3nhFtdwhgiQfqyB7LZP5AYhizgsFdNFOOe05DW9GRnOugZXpHEXo4K84QDsrILBg"}}, "unsigned": {"age_ts": 1570042354237}}mIeQag$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2132}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ"], "type": "m.room.member", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-381:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042351995, "hashes": {"sha256": "J5SwjV0ij2dPoEZbIuHWDU/gdHBn+CsGrocXRVNDq6k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hy4GgdV/6h6eHJLpQUl0HtKv4uyaFVHtXHP4t7oJMcNfOPjcFD8eGiRY2jnczEQeNB0uU4jCXLzSNTLN2G73Ag"}}, "unsigned": {"age_ts": 1570042351995, "replaces_state": "$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ"}}VHeQa9$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 398, "stream_ordering": 2131}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw"], "prev_events": ["$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs"], "type": "m.room.member", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-381:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-381", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-381:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042350730, "hashes": {"sha256": "xIttrgS0C1jhjqpV+tapJemw/0VC90sIfEfIcGhLEEA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2YYWtCCe4ekTyAjlqeQ+OBWeM/Kf//kKlihlVUX0QfHVHCkzH1wj7GDal+23BJyiKIC3piXzqb9WjPwphVamAg"}}, "unsigned": {"age_ts": 1570042350730}}GeQa$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs!QMrkSPlQDGborAyWtQ:localhost:8800{"token_id": 397, "stream_ordering": 2130}{"auth_events": ["$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls", "$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng", "$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k"], "prev_events": ["$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw"], "type": "m.room.history_visibility", "room_id": "!QMrkSPlQDGborAyWtQ:localhost:8800", "sender": "@anon-20191002_181700-380:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042349299, "hashes": {"sha256": "VnZS6zSWHVfDxYf+ecIV+vvScOjlyVvnd6/LqwAfxLg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xJG7NuIZ1dnzBm13kTIgGm4cKpUn/5HrGfgWh8BH3rN+iHwVPqzdE6J5BCyxzxq5KO7U8WBrA8YyzAky17GJAQ"}}, "unsigned": {"age_ts": 1570042349299}} BL:g<R' Fo { P % y N # w L ! i>k@eT u J  s H c8 g<c8 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VUibrTIkcRbfrogbQV:localhost:8800 ! !*Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!VUibrTIkcRbfrogbQV:localhost:8800 % %*Q!VUibrTIkcRbfrogbQV:localhost:8800 $ $*Q!VUibrTIkcRbfrogbQV:localhost:8800 # #*Q!VUibrTIkcRbfrogbQV:localhost:8800 " "*Q!WYyiQAVvitxsLZKVCG:localhost:8800 B B*Q!WYyiQAVvitxsLZKVCG:localhost:8800 A A*Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ @*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? ?*Q!WYyiQAVvitxsLZKVCG:localhost:8800 > >*Q!WYyiQAVvitxsLZKVCG:localhost:8800 = =*Q!WYyiQAVvitxsLZKVCG:localhost:8800 < <*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ; ;*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VhUAklonNaWKRnLkcr:localhost:8800 q-*Q!WFHIeSFQyuugGeBFxW:localhost:8800ZZ*Q!WFHIeSFQyuugGeBFxW:localhost:8800YY*Q!WFHIeSFQyuugGeBFxW:localhost:8800XX*Q!WFHIeSFQyuugGeBFxW:localhost:8800WW*Q!WFHIeSFQyuugGeBFxW:localhost:8800VV*Q!WFHIeSFQyuugGeBFxW:localhost:8800UU}V*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WWZVpyLeZfyfpWidLx:localhost:8800ff*Q!WWZVpyLeZfyfpWidLx:localhost:8800ee*Q!WWZVpyLeZfyfpWidLx:localhost:8800dd*Q!WWZVpyLeZfyfpWidLx:localhost:8800cc*Q!WWZVpyLeZfyfpWidLx:localhost:8800bb*Q!WWZVpyLeZfyfpWidLx:localhost:8800aa*Q!WWZVpyLeZfyfpWidLx:localhost:8800``*Q!WWZVpyLeZfyfpWidLx:localhost:8800__*Q!WWZVpyLeZfyfpWidLx:localhost:8800^^*Q!WWZVpyLeZfyfpWidLx:localhost:8800]]*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 *Q!WhLedNwPGGGTtqeqam:localhost:8800 a} { y w u sqomkigeca~^eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800~]eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~\eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800~[eeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~ZeeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~YeeQ$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800~XeeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~WeeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~VeeQ$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800~UeeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~TeeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~SeeQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~ReeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800~QeeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~PeeQ$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800~OeeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800~NeeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~MeeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800~LeeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800~KeeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~JeeQ$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800~IeeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800~HeeQ$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~GeeQ$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800~FeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800~EeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~DeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~CeeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw!QMrkSPlQDGborAyWtQ:localhost:8800~BeeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800~AeeQ$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls!QMrkSPlQDGborAyWtQ:localhost:8800~@eeQ$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k!QMrkSPlQDGborAyWtQ:localhost:8800 NqF y J # u}R'  w L !>oDmBk@D)Ti>qF s H  N  %Fo i *Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' d*Q!aLxrqpqLkbzyIxGgpk:localhost:8800i'*Q!ZaOktTIVeRgBXxfubH:localhost:8800)*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaltdIYVZjCHsCWTZD:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!ZaOktTIVeRgBXxfubH:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800G*Q!aHyAJEOSdKqTiRjOvw:localhost:8800F*Q!aHyAJEOSdKqTiRjOvw:localhost:8800Eo'*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 & c*Q!ZaltdIYVZjCHsCWTZD:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800{*Q!ZOwibbprUCQrSJQCrx:localhost:8800z*Q!ZOwibbprUCQrSJQCrx:localhost:8800y*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!ZOpRjvUhkWYJBFJZeO:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800 J*Q!aHyAJEOSdKqTiRjOvw:localhost:8800I*Q!aHyAJEOSdKqTiRjOvw:localhost:8800H*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!ZOwibbprUCQrSJQCrx:localhost:8800~*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!ZYKvjplZRyIWvzkRyM:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800!K*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!ZShBIxwbJmxjjZmoRQ:localhost:8800*Q!aHyAJEOSdKqTiRjOvw:localhost:8800"L*Q!ZOwibbprUCQrSJQCrx:localhost:8800| %V*Q!ZOwibbprUCQrSJQCrx:localhost:8800}*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800*Q!ZWANpHlizyLrUiVvAm:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800 *Q!ZWANpHlizyLrUiVvAm:localhost:8800 *Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( e*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) f*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * g*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!aBCvSXjtZUEPlPGHvY:localhost:8800*Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + h ?CJ P  V  \ b & h ,x7v:E LOZ]Z> ]  @anon-20191002_181700-414:localhost:8800m&\9 ]@anon-20191002_181700-416:localhost:8800a&\9 ]@anon-20191002_181700-414:localhost:8800a&\> ] @anon-20191002_181700-412:localhost:8800m&\&> ] @anon-20191002_181700-413:localhost:8800m&\LV9 ]@anon-20191002_181700-415:localhost:8800a&\> ]  @anon-20191002_181700-411:localhost:8800m&\9 ]@anon-20191002_181700-413:localhost:8800a&\9 ]@anon-20191002_181700-411:localhost:8800a&\> ] @anon-20191002_181700-408:localhost:8800m&\= ]  @anon-20191002_181700-409:localhost:8800m&\V 9 ]@anon-20191002_181700-412:localhost:8800a&\> ]  @anon-20191002_181700-407:localhost:8800m&\9 ]@anon-20191002_181700-410:localhost:8800a&\9 ]@anon-20191002_181700-409:localhost:8800a&\9 ]@anon-20191002_181700-408:localhost:8800a&\> ] @anon-20191002_181700-404:localhost:8800m&\ 2= ]  @anon-20191002_181700-405:localhost:8800m&\V9 ]@anon-20191002_181700-407:localhost:8800a&\> ]  @anon-20191002_181700-403:localhost:8800m&\9 ]@anon-20191002_181700-406:localhost:8800a&\=~ ]  @anon-20191002_181700-401:localhost:8800m&\V9} ]@anon-20191002_181700-405:localhost:8800a&\9| ]@anon-20191002_181700-404:localhost:8800a&\9{ ]@anon-20191002_181700-403:localhost:8800a&\>z ]  @anon-20191002_181700-400:localhost:8800m&\9y ]@anon-20191002_181700-402:localhost:8800a&\9x ]@anon-20191002_181700-401:localhost:8800a&\>u ] @anon-20191002_181700-398:localhost:8800m&\=v ]  @anon-20191002_181700-399:localhost:8800m&\V9w ]@anon-20191002_181700-400:localhost:8800a&\>t ]  @anon-20191002_181700-397:localhost:8800m&\9s ]@anon-20191002_181700-399:localhost:8800a&\9r ]@anon-20191002_181700-397:localhost:8800a&\9q ]@anon-20191002_181700-398:localhost:8800a&\9p ]@anon-20191002_181700-396:localhost:8800a&\>o ]  @anon-20191002_181700-395:localhost:8800m&\"9n ]@anon-20191002_181700-395:localhost:8800a&\>m ]  @anon-20191002_181700-394:localhost:8800m&\29l ]@anon-20191002_181700-394:localhost:8800a&\>k ]  @anon-20191002_181700-393:localhost:8800m&\29j ]@anon-20191002_181700-393:localhost:8800a&\>i ]  @anon-20191002_181700-392:localhost:8800m&\9h ]@anon-20191002_181700-392:localhost:8800a&\>g ]  @anon-20191002_181700-391:localhost:8800m&\ 9f ]@anon-20191002_181700-391:localhost:8800a&\>e ]  @anon-20191002_181700-390:localhost:8800m&\29d ]@anon-20191002_181700-390:localhost:8800a&\>c ]  @anon-20191002_181700-389:localhost:8800m&\29b ]@anon-20191002_181700-389:localhost:8800a&\>a ]  @anon-20191002_181700-388:localhost:8800m&\<9` ]@anon-20191002_181700-388:localhost:8800a&\>_ ]  @anon-20191002_181700-387:localhost:8800m&\39^ ]@anon-20191002_181700-387:localhost:8800a&\>] ]  @anon-20191002_181700-386:localhost:8800m&\39\ ]@anon-20191002_181700-386:localhost:8800a&\=[ ] @anon-20191002_181700-385:localhost:8800m&\V>Z ]  @anon-20191002_181700-384:localhost:8800m&\j9Y ]@anon-20191002_181700-385:localhost:8800a&\9X ]@anon-20191002_181700-384:localhost:8800a&\=W ]  @anon-20191002_181700-383:localhost:8800m&\V>V ]  @anon-20191002_181700-382:localhost:8800m&\C9U ]@anon-20191002_181700-383:localhost:8800a&\ -RM H C > 9 4/*|%w rmhc T.Qe{!zoTQAhGwmDDUECKtbL:localhost:8800$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgT-Qez!zoTQAhGwmDDUECKtbL:localhost:8800$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wT,Qez!zoTQAhGwmDDUECKtbL:localhost:8800$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgT+Qey!zoTQAhGwmDDUECKtbL:localhost:8800$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQT*Qey!zoTQAhGwmDDUECKtbL:localhost:8800$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wT)Qex!zoTQAhGwmDDUECKtbL:localhost:8800$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQT(Qex!zoTQAhGwmDDUECKtbL:localhost:8800$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cT'Qew!zoTQAhGwmDDUECKtbL:localhost:8800$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0cT&Qew!zoTQAhGwmDDUECKtbL:localhost:8800$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4cT%Qev!zoTQAhGwmDDUECKtbL:localhost:8800$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5YT$Qev!zoTQAhGwmDDUECKtbL:localhost:8800$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4cT#Qeu!zoTQAhGwmDDUECKtbL:localhost:8800$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5YT"Qet!zoTQAhGwmDDUECKtbL:localhost:8800$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskT!Qes!zoTQAhGwmDDUECKtbL:localhost:8800$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgT Qer!zoTQAhGwmDDUECKtbL:localhost:8800$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMTQeq!zoTQAhGwmDDUECKtbL:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhATQep!zoTQAhGwmDDUECKtbL:localhost:8800$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xITQeo!NeYaCeYNFATCqlrlGT:localhost:8800$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uATQen!NeYaCeYNFATCqlrlGT:localhost:8800$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_UTQem!NeYaCeYNFATCqlrlGT:localhost:8800$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cTQel!NeYaCeYNFATCqlrlGT:localhost:8800$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550TQek!NeYaCeYNFATCqlrlGT:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5EwTQej!NeYaCeYNFATCqlrlGT:localhost:8800$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8TQei!YtVXQjSPgVtbxrzUOA:localhost:8800$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27ETQeh!YtVXQjSPgVtbxrzUOA:localhost:8800$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMTQeg!YtVXQjSPgVtbxrzUOA:localhost:8800$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwTQef!YtVXQjSPgVtbxrzUOA:localhost:8800$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUTQee!YtVXQjSPgVtbxrzUOA:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYTQed!YtVXQjSPgVtbxrzUOA:localhost:8800$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogTQec!zsXPhIPzeXXLvuazzQ:localhost:8800$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoTQec!zsXPhIPzeXXLvuazzQ:localhost:8800$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcTQeb!zsXPhIPzeXXLvuazzQ:localhost:8800$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcTQea!zsXPhIPzeXXLvuazzQ:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gT Qe`!zsXPhIPzeXXLvuazzQ:localhost:8800$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wT Qe_!zsXPhIPzeXXLvuazzQ:localhost:8800$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MT Qe^!zsXPhIPzeXXLvuazzQ:localhost:8800$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssT Qe]!zsXPhIPzeXXLvuazzQ:localhost:8800$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQT Qe\!zsXPhIPzeXXLvuazzQ:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0TQe[!zsXPhIPzeXXLvuazzQ:localhost:8800$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcTQeZ!WFHIeSFQyuugGeBFxW:localhost:8800$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0TQeY!WFHIeSFQyuugGeBFxW:localhost:8800$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YTQeX!WFHIeSFQyuugGeBFxW:localhost:8800$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8TQeW!WFHIeSFQyuugGeBFxW:localhost:8800$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UTQeV!WFHIeSFQyuugGeBFxW:localhost:8800$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeITQeU!WFHIeSFQyuugGeBFxW:localhost:8800$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw "= @ O } 0\e)2Zi'aeQ' $4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.createmeQ? $x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibilityeeQ/ $-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rulesgeQ3 $BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels eQ']$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800aeQ' $FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800m.room.createmeQ? $Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800m.room.history_visibilityeeQ/ $i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rulesgeQ3 $XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels eQ']$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800a~eQ' $jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800m.room.createm}eQ? $-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibilitye|eQ/ $cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rulesg{eQ3 $eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels zeQ']$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800ayeQ' $iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800m.room.createmxeQ? $jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibilityeweQ/ $nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rulesgveQ3 $NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels ueQ']$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800ateQ' $4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create seQ']$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800 reQ']$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800mqeQ? $cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibilityepeQ/ $l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rulesgoeQ3 $SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels neQ']$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800ameQ' $m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.create leQ']$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800mkeQ? $JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibilityejeQ/ $kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rulesgieQ3 $HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels heQ']$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800ageQ' $CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw!WFHIeSFQyuugGeBFxW:localhost:8800m.room.create  NeQa$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2137}{"auth_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U", "$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "prev_events": ["$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8"], "type": "m.room.history_visibility", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042359606, "hashes": {"sha256": "1OOUHGoq1ZRqxrRh37I1Gy2UTwbT5X19TaMoP+sPU6Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g28dz8H98ut9hDpGQggqKn8U0dI/IpYTIIPDxz5claNQ6Ybl9ZL+9YxwYpxkVU05nRIz3/OgkJGfxawDpgxWDw"}}, "unsigned": {"age_ts": 1570042359606}}tMeQau$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2136}{"auth_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U", "$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "prev_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U"], "type": "m.room.join_rules", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042358122, "hashes": {"sha256": "BSs4HR+CO7e4GB+ixjQ0vrBmoawHApSPsUOytljUz8s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NwB12UPCZqo5FGPaCC6HJQ4fdWVjDVu2YJhEz1/WJ2WBn/yT797tHCnV6Q2Pm4EqtpjdwRzP4deSBBxpcJr3DQ"}}, "unsigned": {"age_ts": 1570042358122}}kLeQac$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2135}{"auth_events": ["$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "prev_events": ["$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI"], "type": "m.room.power_levels", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"users": {"@anon-20191002_181700-382:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042356484, "hashes": {"sha256": "Sf3qqG0vk+tOmzj//39tBdCkfh2deQHqQK3hG4Jf7kQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j7lObD854p/UdIfJ+knB5Z2XzVyB6oONZH7vfTjBB1ZE2Hi7BB3SAJ1VH+8gSEtoGyILpcfeyseGcaQHq4kfCw"}}, "unsigned": {"age_ts": 1570042356484}}vKeQay$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 399, "stream_ordering": 2134}{"auth_events": ["$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw"], "prev_events": ["$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw"], "type": "m.room.member", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-382:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-382", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-382:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042355069, "hashes": {"sha256": "TEvO5K0HJiPtMnn1da+RGfKKwMOhppr13rkgZ9ld3f4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WUpvM9JokZ7jm57EotOYDmXJd2/ZR0wXtm4nfdHgx6/aTAJjvIX1Aa7LOKXfLQ9qRTu9Ehczcrck+/HoWI34Dw"}}, "unsigned": {"age_ts": 1570042355069}} T & M. \|E>6t l d eeQ$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o!bNSXSTadOMhIrYpMzH:localhost:8800ˁeeQ$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc!KXMUzALpMMMKqoQXUS:localhost:8800[eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800%eeQ$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4!hDAzBWYEyRVBRlrCHh:localhost:8800OeeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800 SeeQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800 feeQ$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXo$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4!IPYMCBwcyNIzqdiIWv:localhost:8800ρeeQ$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0!QcaNrIiUsWpTiVGOnt:localhost:8800seeQ$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk!mfzIRinBAGGrZvQAuI:localhost:8800&eeQ$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ!NhWgOTYzEPRwAxRQvS:localhost:8800ceeQ$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck!duCKuavMBSfRbTFPsc:localhost:8800eeQ$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig!jveVPZSXJOJyNDebPO:localhost:8800eeQ$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q!EieRtaCFZJJCIOkRPp:localhost:8800eeQ$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU!QZhNrNpwObZGJZpdAG:localhost:8800 eeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800 YeeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4$06juvN69Fia7ZnlxdOmB-gMM1p9eihxP5PNmi2sWb4E!OWGKxAmTrHLciIdrJi:localhost:8800CeeQ$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw$-Nn9LQLUcZQHzPh6Ap_pDcTp75RMEkyf-HxFWd8dUJE!oXKJArsPmtgaYANBrg:localhost:8800jeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800 eeQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM!awHAhLuEkavTGACcUW:localhost:8800]eeQ$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c!MWCLSWWGdWcSivNVLI:localhost:8800:eeQ$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI!PEcOacvKaBKpXjytEF:localhost:8800<eeQ$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI!NPdjmIfsBVIIkvWBzD:localhost:8800  4 k 9md]c@anon-20191002_181700-428:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwo127.0.0.1d]c@anon-20191002_181700-427:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7Cllgo127.0.0.1d]c@anon-20191002_181700-426:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAo127.0.0.1d]c@anon-20191002_181700-425:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAo127.0.0.1d]c@anon-20191002_181700-424:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgo127.0.0.1d]c@anon-20191002_181700-422:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowo127.0.0.1d]c@anon-20191002_181700-421:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0ego127.0.0.1d]c@anon-20191002_181700-420:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwo127.0.0.1a[a@anon-20191002_181700-41:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gJjdjLW94WC5haSswXjpkbAowMDJmc2lnbmF0dXJlIMicE2dWZmTSWkQlL_dFdEb5UL5iuXwxyFxXiYecyuKlCg127.0.0.1"d]c@anon-20191002_181700-419:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3go127.0.0.1d]c@anon-20191002_181700-418:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwo127.0.0.1 u  / [Iu sd]c@anon-20191002_181700-577:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQo127.0.0.1 Wd]c@anon-20191002_181700-441:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtabDZuOFRSSyZ4U2U1NzUKMDAyZnNpZ25hdHVyZSA2B1qWMNWGc58YXM1YhnKM2QCsGLDKkznatQDfh-YpqQo127.0.0.1 :d]c@anon-20191002_181700-567:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQo127.0.0.1 d]c@anon-20191002_181700-454:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwo127.0.0.1 (d]c@anon-20191002_181700-556:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQo127.0.0.1 ̂d]c@anon-20191002_181700-541:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAo127.0.0.1 _a[a@anon-20191002_181700-52:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLVRWLmhaSHRhQF5xN1JrKwowMDJmc2lnbmF0dXJlIBdSZBuQ4CAClcMvYxAD7vXglDhkAH0Iz3T3ft4jOIosCg127.0.0.1)d]c@anon-20191002_181700-516:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920wo127.0.0.1 d]c@anon-20191002_181700-501:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0Hwo127.0.0.1 a[a@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLlp-aWV0aGpsb2VIdDhYaAowMDJmc2lnbmF0dXJlILz-X06NA3MCjvb6uGmoobDiJbicbG4nV2yzvbZkP-rwCg127.0.0.1$ Nd]c@anon-20191002_181700-473:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwo127.0.0.1 4 %4mVeQag$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2145}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w"], "type": "m.room.member", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"reason": "testing", "membership": "ban"}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-385:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042377337, "hashes": {"sha256": "UwurZvQugyu5EaKO0k+1D6WD9kwANVhh1XmBI/3UOwQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nNaBtOX2Ix+J+uC+SS/Mf8w97XGdxLUbfWQGZL1AFXJXVQocMOAxSZec6F93eQej9vxgkzJKGFBGTjIEbasHCg"}}, "unsigned": {"age_ts": 1570042377337, "replaces_state": "$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w"}}VUeQa9$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 402, "stream_ordering": 2144}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss"], "prev_events": ["$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M"], "type": "m.room.member", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-385:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-385", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-385:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042376245, "hashes": {"sha256": "OvhLEPDh4wu/vkWEOnlsF5/Kj+14CPTfX8k3zbr9qAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9TU1EoAodMrvQzi/TQIUkCd4NdCGXj2tlAjfTrJD6M8TExno0JeP8CoAQ1eDIKyvf8becHpuBvJDCIWWapLrDg"}}, "unsigned": {"age_ts": 1570042376245}}TeQa$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2143}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss"], "type": "m.room.history_visibility", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042375172, "hashes": {"sha256": "2on+FStH+NuZFecqwHm7JMSupV4riEMTHXHoV2POOOU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MTuVNhhBlvN6/TMMWA79zfCAFRcAdPAP19BJG/9OzUjBgo5MYAiR5bNK8DcjejfQ5JKh/AG1A6aip91ghrMRCQ"}}, "unsigned": {"age_ts": 1570042375172}}tSeQau$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqss!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2142}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ"], "type": "m.room.join_rules", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042374188, "hashes": {"sha256": "3b6RmR1VCWTdSc8NYBmRjazhAqazP5JBQdVp/n/tzJI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e2+Y4pdtdTOcTAehwaRyGDhBoNTZZJCyBMvLrZgtbit8WQscECD8jaFFWJFYl5Pc+nmFOXiq8hTx3Dqs/23PCw"}}, "unsigned": {"age_ts": 1570042374188}} xKr@ ~ L  S ! Y ' ` .f4l: Fr@yG NT#[)a/k9 x 1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwq1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 01e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Yy1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikT1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QS1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg Q1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM\1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw-1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgC1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM /1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0.1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gd1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg51e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs'1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQp1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYp1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew 31e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Osb1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNsJ1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw21e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIO1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY$1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO01e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ61e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 D1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwm0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW081e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8"1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8QW1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw20e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s 1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMakr1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4^1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew 1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m80e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcG1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU jL%Q>e  W9 q? pwEk38}K  J  Q ] X & v |+ _ - DjQ1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 T1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qx1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8v1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgI1e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo E1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 !1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMo1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY 1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E~1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg|1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAM1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s 1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91ME1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH81e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIE1e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7g1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60^1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs w1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs v1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo f1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg U1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog N1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosx1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsH1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawc1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us)1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk}1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU+1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0J0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk>1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEL0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4n1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 I1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk&1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o J1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 $1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns 1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU 1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY I1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y D21e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM2 P & 9PkReQac$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2141}{"auth_events": ["$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "type": "m.room.power_levels", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"users": {"@anon-20191002_181700-384:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042372567, "hashes": {"sha256": "lZ5wbQmO6cQOV47hl7eBYVCpxX7WEW+P8LBrEx2bV74"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fD1HAA2XdlQPwedEcouA3JGY5CDhQkgo+s5mPOw39l+IANeIdm3VnXA3SCDZ7o3xrC1t4jLcne2gX+eGdOH/Dg"}}, "unsigned": {"age_ts": 1570042372567}}vQeQay$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2140}{"auth_events": ["$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc"], "prev_events": ["$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc"], "type": "m.room.member", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-384", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-384:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042370512, "hashes": {"sha256": "ECbX46rhMN4+7Mnggl9ho4UrweM7OdBPAYcvS+qxJcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SLqrUkXZCDK3CodCbp3HxEyuLN27DYmy6t1KAzai1rqc5Pvfh6Swj7H6KXLX3cb4jXLTJd1ayXT0cpTjhy8fDA"}}, "unsigned": {"age_ts": 1570042370512}}iPeQa_$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "stream_ordering": 2139}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-384:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042368791, "hashes": {"sha256": "dYJolET/vdE0esglJ3RcsZVjqXNtynG1suRfd5zI6yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4c0Z1Vr+DGK1DnzdsBtxPs2YO4IQTwaldAOlNLuUVW2s+mAIrsipEaxqYd2EaFxKtOyOwkwM1B7zwhd6o1ZEAQ"}}, "unsigned": {"age_ts": 1570042368791}}VOeQa9$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0!WFHIeSFQyuugGeBFxW:localhost:8800{"token_id": 400, "stream_ordering": 2138}{"auth_events": ["$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U", "$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw", "$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8"], "prev_events": ["$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y"], "type": "m.room.member", "room_id": "!WFHIeSFQyuugGeBFxW:localhost:8800", "sender": "@anon-20191002_181700-383:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-383", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-383:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042362483, "hashes": {"sha256": "8K08VYsLGtdW5+cAlU2V5rSIiwsFDUeMMYCxj/TRrXY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ISOCWZidDls9mQo39Hf/SW80/qynbRUeg9rTii61JlxTrHGl7D2kzOECZaEdxxCNkDc5e51yVeVb2iHLbX0SCg"}}, "unsigned": {"age_ts": 1570042362483}} >CG K O  S  W  [ _ c$g(k,o0s4w8{<]!@anon-20191002_181700-355:localhost:8800LDOCSGURJIm4<=]!@anon-20191002_181700-354:localhost:8800EEONPHMPKHm4 1^ k z ) 6 C R  _ l{*7DQ`mz)P]Q@anon-20191002_181700-279:localhost:8800!jveVPZSXJOJyNDebPO:localhost:8800P]Q@anon-20191002_181700-277:localhost:8800!rJhSRzmWBQHlIhuDXT:localhost:8800P]Q@anon-20191002_181700-276:localhost:8800!fsbkkRBZlUcBVVfMME:localhost:8800P]Q@anon-20191002_181700-275:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-274:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-273:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-272:localhost:8800!bzPCFeFSMbCESvNbxl:localhost:8800P]Q@anon-20191002_181700-271:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!nxLxsxzliamzflrEBs:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!RPfffkmSEbWggEjnoI:localhost:8800P]Q@anon-20191002_181700-270:localhost:8800!PCgUmZOwWmtDsuFqXg:localhost:8800N[Q@anon-20191002_181700-26:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-269:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-268:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-267:localhost:8800!egbhiBqOGhloZzopol:localhost:8800P]Q@anon-20191002_181700-266:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800P]Q@anon-20191002_181700-265:localhost:8800!KdOYYnOuwAyQzqwUki:localhost:8800P]Q@anon-20191002_181700-264:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-263:localhost:8800!XNfwczePlyYFWLCaui:localhost:8800P]Q@anon-20191002_181700-262:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800P]Q@anon-20191002_181700-261:localhost:8800!PQZMTVTeCYqMZwkHvW:localhost:8800P]Q@anon-20191002_181700-260:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800N[Q@anon-20191002_181700-25:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-259:localhost:8800!kpTPWDZdBbbXKLonZK:localhost:8800P]Q@anon-20191002_181700-258:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-257:localhost:8800!ITdmSQpjMnaPoHIbws:localhost:8800P]Q@anon-20191002_181700-254:localhost:8800!FAYqpziHeVZugCGaij:localhost:8800P]Q@anon-20191002_181700-253:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-252:localhost:8800!ZaOktTIVeRgBXxfubH:localhost:8800P]Q@anon-20191002_181700-251:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800P]Q@anon-20191002_181700-250:localhost:8800!ZaltdIYVZjCHsCWTZD:localhost:8800N[Q@anon-20191002_181700-24:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-249:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-248:localhost:8800!kwXxkGQFkaeenFTQJr:localhost:8800P]Q@anon-20191002_181700-247:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-246:localhost:8800!EMhFCPhwmnWVnjtXXM:localhost:8800P]Q@anon-20191002_181700-245:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-244:localhost:8800!GGXyLHdVXqhQjPRvac:localhost:8800P]Q@anon-20191002_181700-243:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-242:localhost:8800!IfYYyzLHSOeyJBxBfn:localhost:8800P]Q@anon-20191002_181700-240:localhost:8800!ZYKvjplZRyIWvzkRyM:localhost:8800N[Q@anon-20191002_181700-23:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800 P]Q@anon-20191002_181700-239:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-238:localhost:8800!ROoilpDjLJfjKfSPIi:localhost:8800P]Q@anon-20191002_181700-237:localhost:8800!wsvXTJXouVkEZcCFsD:localhost:8800P]Q@anon-20191002_181700-236:localhost:8800!DoiZErAdypBUMZKaeJ:localhost:8800P]Q@anon-20191002_181700-234:localhost:8800!qSUSLLWjDxcGibUZdT:localhost:8800P]Q@anon-20191002_181700-232:localhost:8800!RmwbYvIIQyPlHlClty:localhost:8800P]Q@anon-20191002_181700-231:localhost:8800!SvKwEALYoNreUvqAlp:localhost:8800 -RM H C > 9 4/*|%w rmhc TGQeG!djwLhpJUYOKsgQtrky:localhost:8800$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3YTFQeF!djwLhpJUYOKsgQtrky:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYTEQeE!djwLhpJUYOKsgQtrky:localhost:8800$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UTDQeD!bkwyieHZwSMJfuSKvV:localhost:8800$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMTCQeC!bkwyieHZwSMJfuSKvV:localhost:8800$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcTBQeB!bkwyieHZwSMJfuSKvV:localhost:8800$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQTAQeA!bkwyieHZwSMJfuSKvV:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIT@Qe@!bkwyieHZwSMJfuSKvV:localhost:8800$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMT?Qe?!XcaKxZsPvbZhAGKKdx:localhost:8800$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwT>Qe>!XcaKxZsPvbZhAGKKdx:localhost:8800$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIT=Qe=!XcaKxZsPvbZhAGKKdx:localhost:8800$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUT<QeQ/ e/!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rules$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgi=Q3 e.!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM <Q']e-!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAc;Q' e,!zoTQAhGwmDDUECKtbL:localhost:8800m.room.create$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIo:Q? e+!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibility$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Ug9Q/ e*!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rules$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3ci8Q3 e)!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550 7Q']e(!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewc6Q' e'!NeYaCeYNFATCqlrlGT:localhost:8800m.room.create$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8o5Q? e&!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.history_visibility$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMg4Q/ e%!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.join_rules$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwi3Q3 e$!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.power_levels$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU 2Q']e#!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.member@anon-20191002_181700-386:localhost:8800$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYc1Q' e"!YtVXQjSPgVtbxrzUOA:localhost:8800m.room.create$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog 0Q']e!!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g /Q']e !zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-385:localhost:8800$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wo.Q? e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.history_visibility$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Mg-Q/ e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.join_rules$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssi,Q3 e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.power_levels$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ +Q']e!zsXPhIPzeXXLvuazzQ:localhost:8800m.room.member@anon-20191002_181700-384:localhost:8800$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0 H\ Z  f  t"r+5>H$se/Q ]$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgm.room.join_rules!zoTQAhGwmDDUECKtbL:localhost:8800mѰ!mѰ@anon-20191002_181700-388:localhost:8800&re3Q ]$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXMm.room.power_levels!zoTQAhGwmDDUECKtbL:localhost:8800mѭ4mѮ@anon-20191002_181700-388:localhost:8800 qe'Q ]$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAm.room.member!zoTQAhGwmDDUECKtbL:localhost:8800mѪmѫD@anon-20191002_181700-388:localhost:8800p e'Q  ]$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIm.room.create!zoTQAhGwmDDUECKtbL:localhost:8800mѧmѨ+@anon-20191002_181700-388:localhost:8800!oe)Q ]$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAm.room.message!NeYaCeYNFATCqlrlGT:localhost:8800mѣmѣ@anon-20191002_181700-387:localhost:8800,ne?Q ]$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_Um.room.history_visibility!NeYaCeYNFATCqlrlGT:localhost:8800mџ*mѠ@anon-20191002_181700-387:localhost:8800$me/Q ]$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cm.room.join_rules!NeYaCeYNFATCqlrlGT:localhost:8800mќFmѝ@anon-20191002_181700-387:localhost:8800&le3Q ]$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550m.room.power_levels!NeYaCeYNFATCqlrlGT:localhost:8800mљvmњ@anon-20191002_181700-387:localhost:8800 ke'Q ]$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewm.room.member!NeYaCeYNFATCqlrlGT:localhost:8800mїMmї@anon-20191002_181700-387:localhost:8800j e'Q  ]$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8m.room.create!NeYaCeYNFATCqlrlGT:localhost:8800mєlmє@anon-20191002_181700-387:localhost:8800!ie)Q ]$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Em.room.message!YtVXQjSPgVtbxrzUOA:localhost:8800mюmю@anon-20191002_181700-386:localhost:8800,he?Q ]$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMm.room.history_visibility!YtVXQjSPgVtbxrzUOA:localhost:8800mщ!mыj@anon-20191002_181700-386:localhost:8800$ge/Q ]$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwm.room.join_rules!YtVXQjSPgVtbxrzUOA:localhost:8800mцmч@anon-20191002_181700-386:localhost:8800&fe3Q ]$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUm.room.power_levels!YtVXQjSPgVtbxrzUOA:localhost:8800mуmф@anon-20191002_181700-386:localhost:8800 ee'Q ]$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYm.room.member!YtVXQjSPgVtbxrzUOA:localhost:8800mс mс@anon-20191002_181700-386:localhost:8800d e'Q  ]$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogm.room.create!YtVXQjSPgVtbxrzUOA:localhost:8800m}m~g@anon-20191002_181700-386:localhost:8800(ce7Q ]$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoa.made.up.filler.type!zsXPhIPzeXXLvuazzQ:localhost:8800mwmz@anon-20191002_181700-384:localhost:8800(be7Q ]$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxca.made.up.filler.type!zsXPhIPzeXXLvuazzQ:localhost:8800mw mw@anon-20191002_181700-384:localhost:8800 ae'Q ]$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gm.room.member!zsXPhIPzeXXLvuazzQ:localhost:8800mtymu@anon-20191002_181700-384:localhost:8800 `e'Q ]$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wm.room.member!zsXPhIPzeXXLvuazzQ:localhost:8800mp5mp@anon-20191002_181700-385:localhost:8800,_e?Q ]$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Mm.room.history_visibility!zsXPhIPzeXXLvuazzQ:localhost:8800mlmn@anon-20191002_181700-384:localhost:8800$^e/Q ]$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssm.room.join_rules!zsXPhIPzeXXLvuazzQ:localhost:8800mh,mi@anon-20191002_181700-384:localhost:8800&]e3Q ]$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQm.room.power_levels!zsXPhIPzeXXLvuazzQ:localhost:8800mamd@anon-20191002_181700-384:localhost:8800 \e'Q ]$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0m.room.member!zsXPhIPzeXXLvuazzQ:localhost:8800mYm\ @anon-20191002_181700-384:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V|eL$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAsha256AK~.鰳#Dzmٔ`V{eL$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDksha256 ^)R i x?H9VzeL$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_ksha256y xCB9s*-o^!nmSVyeL$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4sha256hvӕq/w! .:*qzVxeL$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcsha2566t_RYև%ϥ%G*G $VleL$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0csha256 ]N#a.◻ Htrl3GVkeL$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4csha256,? 8Ma bAKVjeL$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Ysha2561kbC{"!Wo:OtNVieL$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsksha256ټDgr%[^p5of.V`eL$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewsha2560W Huɽ³Y LV_eL$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8sha25623w0;s3XW"_cH]nyoV^eL$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27Esha256; S(B!Sכ5^~Qct3I,۱V]eL$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMsha256:(hxl4hH 6V\eL$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwsha256/AvlU{k(¨YpV[eL$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUsha2564%ap-I-5SΠm#VZeL$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYsha256ؘ} ~~C+g~.3dWV }&VYeL$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogsha256xRTp1dt>(IlluΈVXeL$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVosha256ahEB.h%@g]zJk5NuZVWeL$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcsha256%7/BMzlw^lVVeL$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4gsha256-_{ #ƽަA 3_VUeL$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wsha256?NCI߉IV^VTeL$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2Msha256qXKaU l!Pc\BlCcVSeL$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqsssha256zHJSZ RRsJ/2tڪVReL$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQsha256J!96^v}'*Up 7HcVQeL$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0sha256$ .}ҁ.}mN_4̭ >j8p> v D  | J  Q X & ^ ,d2j8p> vD|J1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4 a1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQX1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQW1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14 1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0.1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0-1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0,1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK01e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo11e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo01e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo/1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo.1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3As1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Ar1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQL1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQK1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssX1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssW1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssV0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ300e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30~1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREf1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpE 1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0 51e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0 41e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0 31e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDod1e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDoc1e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDob1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw [1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk  .& d| \ U  l NtF>6eeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800 veeQ$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg!bNSXSTadOMhIrYpMzH:localhost:8800ӁeeQ$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY!DnUHoxreGexNmjSVpq:localhost:8800eeQ$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE!ozgnwUlebxvzLVwyHW:localhost:8800weeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I!rJhSRzmWBQHlIhuDXT:localhost:8800eeQ$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc14$7srnch2aK6681Yuh0KzwOrh7lNbjhm2vmwDwKpoN1x8!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8!fcdNYFWFyxmdpKAknc:localhost:8800CeeQ$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE!CQKLQUpSYakhxVDltC:localhost:8800eeQ$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY!OBWkjfrDCNgYFfblia:localhost:8800eeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs!SBEprlZiuliFNSfNmz:localhost:8800HeeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ!SBEprlZiuliFNSfNmz:localhost:8800IeeQ$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo!aWJOsiuJONOvjKWEjO:localhost:8800YeeQ$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA!oznZaCpONuNDaLarkI:localhost:8800eeQ$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU!jYzridjeihmwPBuwLb:localhost:8800@eeQ$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ!raCWVWQGnXbmkexpCN:localhost:8800eeQ$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw!wUuodvgsmAJqKJUBCQ:localhost:8800eeQ$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw!fJXiUpbbOlLbHWmPgs:localhost:8800seeQ$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU!BrssELMbasSzTFpIXm:localhost:8800)eeQ$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90!beBXQofoOfxNBtzsut:localhost:8800eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE!laUExtszUaoCpZoyEq:localhost:8800 eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg!mvgUHEsfGqDkPQUvfG:localhost:8800 YeeQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800 L ~z v r n j fb^ZVRNJF1eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:88000eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800/eeQ$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800.eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800-eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800,eeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800+eeQ$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800*eeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800)eeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800(eeQ$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800'eeQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800&eeQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800%eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800$eeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800#eeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800"eeQ$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800!eeQ$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800 eeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800eeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M!zsXPhIPzeXXLvuazzQ:localhost:8800 a} { y w u sqomkigeca~}eeQ$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800~|eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800~{eeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~zeeQ$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800~yeeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800~xeeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~weeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800~veeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800~ueeQ$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~teeQ$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800~seeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800~reeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~qeeQ$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800~peeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800~oeeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~neeQ$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800~meeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800~leeQ$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~keeQ$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800~jeeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800~ieeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~heeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800~geeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800~feeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~eeeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800~deeQ$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800~ceeQ$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~beeQ$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800~aeeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800~`eeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800~_eeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ!zsXPhIPzeXXLvuazzQ:localhost:8800  -vZeQay$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2149}{"auth_events": ["$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog"], "prev_events": ["$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog"], "type": "m.room.member", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-386", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-386:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042380553, "hashes": {"sha256": "jKqFTVbiFc57+waCJCBPunUS49IA6mwVLNxSRLG0Mzk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1sNsZXG/ghS+vSQsGPM7pTSO5R964CVUTRZ6kzamRFHWWq8mdGI3gtDIPh4WQ/7FFeZxQUZ+XM5DODqP85tADw"}}, "unsigned": {"age_ts": 1570042380553}}iYeQa_$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2148}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-386:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042379758, "hashes": {"sha256": "a5yoHwNgTh5DMUWqR4MOxcGKeWNQ9onS/YNRz60upsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dQ7xSkDy66/R/IHKvbC7jlbBku6jN278aFYnJavX3H2OB1cZficZvIIKB2RFlYzmn1qjzMSnmEGuYOK15ToEDw"}}, "unsigned": {"age_ts": 1570042379758}}oXeQG$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "txn_id": "366", "stream_ordering": 2147}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g"], "type": "a.made.up.filler.type", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"filler": 1}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042378002, "hashes": {"sha256": "OibN6/LsmNqy51+W6w7FKhMBF/UzI7Qy1AnadvTNEoQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VL2tWJEVNLbI122RvZKYXs6NU9wQNpz+00uL2UWXfuE1fXDKln5Lpt2snNq7mZJ098sbHlEXYHWuju7fXpcmCQ"}}, "unsigned": {"age_ts": 1570042378002}}oWeQG$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc!zsXPhIPzeXXLvuazzQ:localhost:8800{"token_id": 401, "txn_id": "367", "stream_ordering": 2146}{"auth_events": ["$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ", "$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc", "$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0"], "prev_events": ["$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g"], "type": "a.made.up.filler.type", "room_id": "!zsXPhIPzeXXLvuazzQ:localhost:8800", "sender": "@anon-20191002_181700-384:localhost:8800", "content": {"filler": 2}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042377997, "hashes": {"sha256": "lmm9W+bn2eObf/3OK1Ss9Ler0P1N0tCPXnpm0ShUJJ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0aIICwvCzACLUmlw+YMpwEp4EQRpl7egLV8OVoJkqcSvrltAFD9Jg56P5HBb8jChtj2Q6yXeI/OnSMHYKWcuDw"}}, "unsigned": {"age_ts": 1570042377997}}   ^eQm$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "txn_id": "385", "stream_ordering": 2153}{"auth_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU", "$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM"], "type": "m.room.message", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042384048, "hashes": {"sha256": "nd6SscfLCcD1lt5bJKJ4vCfpbA7Oofg9ZrsiKfdCyPc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xYx47qNCOxoj/aBtq1EpxgmJIpBnzLLF8LF8NecGBHS+CNBCIzJwPkJc2Jo9Wn24F3iDqK5vYM4nR0h+UUnCBg"}}, "unsigned": {"age_ts": 1570042384048}}]eQa$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2152}{"auth_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU", "$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw"], "type": "m.room.history_visibility", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042382625, "hashes": {"sha256": "+ar2Y7FhuGxeOiOoBhYklvTRECka/I4YdQXn40IiKhw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NThDvAcZPToNiLkQn+dZBx0NrYAd4TfmK81S7fLrBm7dJN8LKO4Bcl0y7GJ1lG+gAPS9Qdjwvau1JNKxBq3oAg"}}, "unsigned": {"age_ts": 1570042382625}}t\eQau$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2151}{"auth_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU", "$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU"], "type": "m.room.join_rules", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042381967, "hashes": {"sha256": "OLlKpKnDmGGkurpStVECMkXfiy5NCVkdCRLNC3whEkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rVAY/+1wOiIVlTTFoO1cGFVgwa91nEsfg3HiB7XcKBMkloM9a1E8Xt7tPYRwUR2z6nei9h/e9v8jBmlvAq41DA"}}, "unsigned": {"age_ts": 1570042381967}}k[eQac$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800{"token_id": 403, "stream_ordering": 2150}{"auth_events": ["$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog", "$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "prev_events": ["$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY"], "type": "m.room.power_levels", "room_id": "!YtVXQjSPgVtbxrzUOA:localhost:8800", "sender": "@anon-20191002_181700-386:localhost:8800", "content": {"users": {"@anon-20191002_181700-386:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042381200, "hashes": {"sha256": "lHVWW6aKmMffLCVspxG5QAqtNwrSq6ZEuGWZ7eQ9zw0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FFxBGajDIKVT4xyju4eLeNJ3fbIFJV4YhGEnuYU81qAsuSSGuLbAeQosPrdYIZfWTouJT2XStv8NjEXkWx7FAQ"}}, "unsigned": {"age_ts": 1570042381200}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQV1e$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0U1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgT1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVsS1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9MS1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYS1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8R1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5UQ1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioP1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUO1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8N1 e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MN1 e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgM1 e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYL1 e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UK1 e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kJ1e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwI1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkI1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIH1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3YG1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYF1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UE1e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQD1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8D1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMD1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcC1~e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQB1}e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIA1|e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM@1{e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA?1ze$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw?1ye$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI>1xe$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU=1we$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY<1ve$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw;1ue$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI:1te$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU:1se$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF091re$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U881qe$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk71pe$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc61oe$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg51ne$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok51me$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA41le$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk31ke$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k21je$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg411ie$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc01he$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw01ge$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx7401fe$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo01ee$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j001de$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M01ce$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo01be$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o01ae$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk01`e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg01_e$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w01^e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ01]e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c01\e$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c01[e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y01Ze$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk01Ye$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg/1Xe$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM.1We$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA-1Ve$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI,1Ue$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA+1Te$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U+1Se$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c*1Re$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550)1Qe$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew(1Pe$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8'1Oe$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E&1Ne$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM& AZ(< tBzHO J | V P   $ \ *b0 T"h6nj8p> v D 1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosS1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII 1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII 1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE 1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uch1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0b1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0a1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0`1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 S1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 R1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 Q1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78 P0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc 1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc 1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc 1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosU1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsosT1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk 1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk 1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk 1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc r1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0F1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0E1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0D1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc q1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc p1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok 1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g +1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g *1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g )1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI91e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA 1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA 1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo"1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!  4,$ ltD| d  \< T  LeeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800 beeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800 ceeQ$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM!MlzmtUYSZOiByAZdKx:localhost:8800~eeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800 eeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800 geeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800 7eeQ$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho!EMhFCPhwmnWVnjtXXM:localhost:88001eeQ$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka8!WVzjUePHrzCjfyTbmK:localhost:8800eeQ$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rw!ZaltdIYVZjCHsCWTZD:localhost:8800CeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800 eeQ$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c!wLitJYvgvNJzanSIvO:localhost:8800eeQ$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800ƁeeQ$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApI!hZuwenlFDapIPBOyfi:localhost:8800eeQ$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg!tDsPLsKOLPePtEWRwn:localhost:8800ʁeeQ$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A!HmkcAMkMjWRhTDJMsy:localhost:88002eeQ$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw!xvblqEscwOtCqJntfF:localhost:8800eeQ$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g!bNSXSTadOMhIrYpMzH:localhost:8800ہeeQ$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8!qSUSLLWjDxcGibUZdT:localhost:8800eeQ$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL98!JZouHBRxCRbcxYJnbn:localhost:8800߁eeQ$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk!OBWkjfrDCNgYFfblia:localhost:8800eeQ$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800eeQ$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M$-sYAgIswNb9Jld1kM3PW9xhjIDlBVKqAAlcRpMDzd6M!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800 eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800  D4   oUq T   i0N  7  k R P2mL n S5 p 6Q88e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNEsha256 '8e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIsha256 8e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQsha256 8e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jngsha2568e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8sha256 8e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOgsha2568e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIsha256<8e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_Usha256@8e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEsha2568e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0sha2567e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkAsha256 8e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznssha2568e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEsha256z8e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUsha256 i98e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Asha256q8e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8sha2568e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoosha256n8e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcsha256l8e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUsha256 8e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTcsha256$8e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicsha2568e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkksha2568e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gsha256;8e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcsha2568e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcsha256 f8e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgsha256 U8e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4sha2568e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIssha2567e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0sha2568e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAsha256#8e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkgsha2568e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgsha256 8e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMsha2568e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAsha2568e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcsha256|8e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjIsha2568e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8sha2568e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0sha256=8e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYsha256:8e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbMsha2568e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu508sha2568e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwsha256w8e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVosha256X8e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNosha2568e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8sha256c8e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2csha256N8e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Isha25638e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIsha2568e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iwsha2568e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYsha2568e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEgsha2568e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4sha2568e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4sha256 8e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Esha2568e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBwsha2568e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtksha256 8e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11Isha256 8e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcsha256 8e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQsha256 r8e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYsha256 8e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tosha256e8e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsYsha256 *8e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAsha256 A8e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYsha2568e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9ksha256 8e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUsha256:8e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFosha2568e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTIsha256] = 5|u- m%  e ]  U  MEeeQ$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800 DeeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800 eeQ$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:88005eeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800 eeQ$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800 eeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800 .eeQ$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800{eeQ$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY!egbhiBqOGhloZzopol:localhost:8800eeQ$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw!PEcOacvKaBKpXjytEF:localhost:88007eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4!ZaltdIYVZjCHsCWTZD:localhost:8800GeeQ$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs!vyCFfUTJKYJSDadFhT:localhost:8800eeQ$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg!uSBqTezaFcMnlowsEf:localhost:8800KeeQ$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0$-8--C5LRQ0ev6TO_7Gu4xYNluB0xJeIZf2pZufTDPRw!BGbJEmJRVJGlZFQbZe:localhost:8800ЁeeQ$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU!wnriPzXkIMmdTNoJKU:localhost:8800ƁeeQ$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM!krhefVncoErkCtnvsy:localhost:8800eeQ$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0!OSHhtkGUjpUCkXwIhj:localhost:8800݁eeQ$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHs!wvnfKBSrUlfNmYoeil:localhost:8800ieeQ$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk!bnTuVBaAJTPbcYZtRl:localhost:8800   *tbeQau$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2157}{"auth_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550", "$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550"], "type": "m.room.join_rules", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042387526, "hashes": {"sha256": "BmutY0ati20yFuT+B2++PlsNX6e2fv5o4ewsAMK1IaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ELSG0wi9ocAk15jDs1OZ3he2ruFUns5DpwNsZB1LK+MDDWV5pjADC9VubfBlqEdqTKvak67sgkMJEGgR7NNaBQ"}}, "unsigned": {"age_ts": 1570042387526}}kaeQac$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2156}{"auth_events": ["$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "type": "m.room.power_levels", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"users": {"@anon-20191002_181700-387:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042386806, "hashes": {"sha256": "KpEVdjeft8VOv24pIRP5rTX4Yv9bPRCe6ofrs7c3Fsw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "69QGUTk4cRb1zdkLvihcx4t0xY5d6bJ13ITnoN1hLEEHuPFjK8BpCTqmTAIs0Ttu3s51mUH2hf/QyS7SiRyjDg"}}, "unsigned": {"age_ts": 1570042386806}}v`eQay$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2155}{"auth_events": ["$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8"], "prev_events": ["$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8"], "type": "m.room.member", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-387", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-387:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042386253, "hashes": {"sha256": "Fj7jNNNPEsHsBPm63Dk01BaAidV+CjlztWSLDPNfeaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2g1yVEDdxv0yOhtgjT8YVtRqJSiGIALLExXY8FiwAdAOWywQxB6QjvRPP5wxMnz84yCAd1yFBl7ETyWHeWvSDw"}}, "unsigned": {"age_ts": 1570042386253}}i_eQa_$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2154}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-387:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042385516, "hashes": {"sha256": "Fy+UgXEcUTnGaBesjEgiQf38LObYOicyWw9S2ivl6d0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fu3bD6qFL7NzmiuUTd1IXlvin4i6NZOrU0dlmsIPOvu2NVV4abEVu2zre8iEjBU976B6sSMcskXCKzcidN77CQ"}}, "unsigned": {"age_ts": 1570042385516}} #o- 8 f  / [`$)Q\%Sa=eQ' $UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800m.room.createm<eQ? $3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibilitye;eQ/ $mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rulesg:eQ3 $4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels 9eQ']$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800joina8eQ' $ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800m.room.createm7eQ? $Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibilitye6eQ/ $oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rulesg5eQ3 $yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels 4eQ']$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800joina3eQ' $S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.createm2eQ? $dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibilitye1eQ/ $R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rulesg0eQ3 $XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels /eQ']$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800joina.eQ' $apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.createm-eQ? $-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibilitye,eQ/ $pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rulesg+eQ3 $SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels *eQ']$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800joina)eQ' $4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.createm(eQ? $x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibilitye'eQ/ $-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rulesg&eQ3 $BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels %eQ']$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800joina$eQ' $FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800m.room.createm#eQ? $Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800m.room.history_visibilitye"eQ/ $i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800m.room.join_rulesg!eQ3 $XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800m.room.power_levels eQ']$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800m.room.member@anon-20191002_181700-388:localhost:8800joinaeQ' $jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800m.room.createmeQ? $-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800m.room.history_visibilityeeQ/ $cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c!NeYaCeYNFATCqlrlGT:localhost:8800m.room.join_rulesgeQ3 $eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550!NeYaCeYNFATCqlrlGT:localhost:8800m.room.power_levels eQ']$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew!NeYaCeYNFATCqlrlGT:localhost:8800m.room.member@anon-20191002_181700-387:localhost:8800join 7}q}~GfP  y B e (nT s  x 2 x =[fk'r::Q/ !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rules <Q3 !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels ^Q']!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800 BQ? !VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibility :Q/ !VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rules <Q3 !VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels ^Q']!VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800 6Q' !VhUAklonNaWKRnLkcr:localhost:8800m.room.create ^Q']!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829sBQ? !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.history_visibilityz6Q' !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.createu?Q9 !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.canonical_aliasxEQ))!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.aliaseslocalhost:8800{mBQ? !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibility ^Q']!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829^Q']!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800:Q/ !WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rulesBQ? !WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibility6Q' !WYyiQAVvitxsLZKVCG:localhost:8800m.room.createCQ?!WWZVpyLeZfyfpWidLx:localhost:8800m.room.third_party_invite1<Q3 !WWZVpyLeZfyfpWidLx:localhost:8800m.room.power_levels^Q']!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-139:localhost:8829^Q']!WWZVpyLeZfyfpWidLx:localhost:8800m.room.member@anon-20191002_181700-138:localhost:8800:Q/ !WWZVpyLeZfyfpWidLx:localhost:8800m.room.join_rulesBQ? !WWZVpyLeZfyfpWidLx:localhost:8800m.room.history_visibility6Q' !WWZVpyLeZfyfpWidLx:localhost:8800m.room.create?Q9 !WWZVpyLeZfyfpWidLx:localhost:8800m.room.canonical_aliasEQ))!WWZVpyLeZfyfpWidLx:localhost:8800m.room.aliaseslocalhost:8800<Q3 !WVzjUePHrzCjfyTbmK:localhost:8800m.room.power_levels{^Q']!WVzjUePHrzCjfyTbmK:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800x:Q/ !WVzjUePHrzCjfyTbmK:localhost:8800m.room.join_rulesBQ? !WVzjUePHrzCjfyTbmK:localhost:8800m.room.history_visibility6Q' !WVzjUePHrzCjfyTbmK:localhost:8800m.room.createw?Q9 !WVzjUePHrzCjfyTbmK:localhost:8800m.room.canonical_alias~EQ))!WVzjUePHrzCjfyTbmK:localhost:8800m.room.aliaseslocalhost:8800<Q3 !WFHIeSFQyuugGeBFxW:localhost:8800m.room.power_levels^Q']!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-383:localhost:8800^Q']!WFHIeSFQyuugGeBFxW:localhost:8800m.room.member@anon-20191002_181700-382:localhost:8800:Q/ !WFHIeSFQyuugGeBFxW:localhost:8800m.room.join_rulesBQ? !WFHIeSFQyuugGeBFxW:localhost:8800m.room.history_visibility6Q' !WFHIeSFQyuugGeBFxW:localhost:8800m.room.create<Q3 !VWYMJxEviBNDdJCuKT:localhost:8800m.room.power_levels^Q']!VWYMJxEviBNDdJCuKT:localhost:8800m.room.member@anon-20191002_181700-123:localhost:8800:Q/ !VWYMJxEviBNDdJCuKT:localhost:8800m.room.join_rulesBQ? !VWYMJxEviBNDdJCuKT:localhost:8800m.room.history_visibility6Q' !VWYMJxEviBNDdJCuKT:localhost:8800m.room.create<Q3 !VUibrTIkcRbfrogbQV:localhost:8800m.room.power_levelsp^Q']!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-543:localhost:8800o:Q/ !VUibrTIkcRbfrogbQV:localhost:8800m.room.join_rulesqBQ? !VUibrTIkcRbfrogbQV:localhost:8800m.room.history_visibilityr6Q' !VUibrTIkcRbfrogbQV:localhost:8800m.room.createn<Q3 !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.power_levelsw^Q']!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-289:localhost:8800|^Q']!VOhMAiLfKyTOZbmKGw:localhost:8800m.room.member@anon-20191002_181700-288:localhost:8800v:Q/ !VOhMAiLfKyTOZbmKGw:localhost:8800m.room.join_rulesy  wvfeQay$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2161}{"auth_events": ["$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI"], "prev_events": ["$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI"], "type": "m.room.member", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-388", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-388:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042391269, "hashes": {"sha256": "O2u5psnqMv81ozCs3eQYWzJvOLHffstsgz2MoarXajg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xV8fWyybPnqH2UsGBLpIC14KceC6KOFT4d/vJUBTb2G9RE+HV1nkdip4zodLGZJFD5FO8U4gwocowmtlJJXYBQ"}}, "unsigned": {"age_ts": 1570042391269}}ieeQa_$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2160}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-388:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042390503, "hashes": {"sha256": "AJbeA/K5wa6uXKQxvA68CzxDpdYk1Lml0Qm+AWHtICA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ES9K2awVApbePr/8dnfthXQ3O+Nsz2BCsnmIo4g9y06CI4WTJBT019ubYJH+rQzZjeSYcqQd/nuwhEIaz/uDg"}}, "unsigned": {"age_ts": 1570042390503}}deQm$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "txn_id": "386", "stream_ordering": 2159}{"auth_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550", "$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U"], "type": "m.room.message", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042389472, "hashes": {"sha256": "pFu96mVjW0t+K8Uc6OYpgMr3ecF1Tp88rj6fnvWnXYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dDzuNjSfSkE2NubVLVpytJUau+0O2oBpeT/8eMw5WxrQcdB1NW0k2MnT8195IXY3gsoHOOsSYl0hZEFiVbeIAQ"}}, "unsigned": {"age_ts": 1570042389472}}ceQa$-uAPF_tQKezVYHYeNTh-cuMiVlWPKEBB1JX3s8Wya_U!NeYaCeYNFATCqlrlGT:localhost:8800{"token_id": 404, "stream_ordering": 2158}{"auth_events": ["$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550", "$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m8", "$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew"], "prev_events": ["$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c"], "type": "m.room.history_visibility", "room_id": "!NeYaCeYNFATCqlrlGT:localhost:8800", "sender": "@anon-20191002_181700-387:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042388266, "hashes": {"sha256": "8RurfY8EKEc78rw2XZ0yMcy12+i9JW8m5OL3J5Y2/SY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oYjauXpPkHoyqMYa+x0IZTpAGJw8SDQc1cOV082rTwOOPFGawV4yYg2mW2Z3pjfM5lO7PyIS/4HxLpf83xN9CA"}}, "unsigned": {"age_ts": 1570042388266}} .fZa6 e  l  s z ' .5<CJQX_ fNwQ]!&PQ]!svYOOXWZHtQQzlMcEP:localhost:8800@anon-20191002_181700-397:localhost:88004PQ]!CGckPHdSYcIocFvRAq:localhost:8800@anon-20191002_181700-395:localhost:88004P~Q]!BoyzlWNkRPncpDjBDg:localhost:8800@anon-20191002_181700-394:localhost:88004P}Q]!djwLhpJUYOKsgQtrky:localhost:8800@anon-20191002_181700-393:localhost:88004P|Q]!bkwyieHZwSMJfuSKvV:localhost:8800@anon-20191002_181700-392:localhost:88004P{Q]!XcaKxZsPvbZhAGKKdx:localhost:8800@anon-20191002_181700-391:localhost:88004PzQ]!jDKAOtmeAGbYTpwyEW:localhost:8800@anon-20191002_181700-390:localhost:88004PyQ]!JYLMokjOhZZlmbZvTf:localhost:8800@anon-20191002_181700-389:localhost:88004PxQ]!zoTQAhGwmDDUECKtbL:localhost:8800@anon-20191002_181700-388:localhost:88004PwQ]!NeYaCeYNFATCqlrlGT:localhost:8800@anon-20191002_181700-387:localhost:88004PvQ]!YtVXQjSPgVtbxrzUOA:localhost:8800@anon-20191002_181700-386:localhost:88004PuQ]!zsXPhIPzeXXLvuazzQ:localhost:8800@anon-20191002_181700-384:localhost:88004PtQ]!WFHIeSFQyuugGeBFxW:localhost:8800@anon-20191002_181700-382:localhost:88004PsQ]!QMrkSPlQDGborAyWtQ:localhost:8800@anon-20191002_181700-380:localhost:88004PrQ]!mBQpGaIiadEuKBXfOw:localhost:8800@anon-20191002_181700-378:localhost:88004PqQ]!xXYMxashIZAUOTuGAJ:localhost:8800@anon-20191002_181700-377:localhost:88004PpQ]!QcaNrIiUsWpTiVGOnt:localhost:8800@anon-20191002_181700-375:localhost:88004PoQ]!ozgnwUlebxvzLVwyHW:localhost:8800@anon-20191002_181700-375:localhost:88004PnQ]!rQeYcODvQiLsOIbQrJ:localhost:8800@anon-20191002_181700-374:localhost:88004PmQ]!csWEXfVEVxdviNvgAd:localhost:8800@anon-20191002_181700-374:localhost:88004PlQ]!aHyAJEOSdKqTiRjOvw:localhost:8800@anon-20191002_181700-373:localhost:88004PkQ]!hnQOBexFYpvJntEChZ:localhost:8800@anon-20191002_181700-371:localhost:88004PjQ]!hDAzBWYEyRVBRlrCHh:localhost:8800@anon-20191002_181700-370:localhost:88004PiQ]!fkvdYkesQOFCAQkzky:localhost:8800@anon-20191002_181700-369:localhost:88004PhQ]!OWGKxAmTrHLciIdrJi:localhost:8800@anon-20191002_181700-368:localhost:88004PgQ]!aknLNLxfChlLvFYhkJ:localhost:8800@anon-20191002_181700-367:localhost:88004PfQ]!HWTlaNxUKnDsrtlOxU:localhost:8800@anon-20191002_181700-365:localhost:88004PeQ]!pUSFAnuwUuMlbiInDR:localhost:8800@anon-20191002_181700-363:localhost:88004PdQ]!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-360:localhost:88004PcQ]!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-357:localhost:88004PbQ]!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-354:localhost:88004PaQ]!bOSxzttDtclnrWnLov:localhost:8800@anon-20191002_181700-352:localhost:88004P`Q]!DnUHoxreGexNmjSVpq:localhost:8800@anon-20191002_181700-350:localhost:88004P_Q]!rwUuVBrftGHDBOlEZm:localhost:8800@anon-20191002_181700-349:localhost:88004P^Q]!CkNvQnbApPIcuKygDk:localhost:8800@anon-20191002_181700-348:localhost:88004P]Q]!NboFFVLpJHTeuUKCjM:localhost:8800@anon-20191002_181700-346:localhost:88004P\Q]!aZwMKYDXJRlSKjQNWM:localhost:8800@anon-20191002_181700-345:localhost:88004([Q !XiwGxQKwjgutEClKUy:localhost:88294PZQ]!mTlCLZQCmfDuQsJxxp:localhost:8800@anon-20191002_181700-342:localhost:88004PYQ]!PEcOacvKaBKpXjytEF:localhost:8800@anon-20191002_181700-341:localhost:88004(XQ !NajQnqYmGyTjxhFYar:localhost:88294PWQ]!sJnuQYOyruhUpXDsLY:localhost:8800@anon-20191002_181700-338:localhost:88004PVQ]!TeraguiGoZoeOGFzlI:localhost:8800@anon-20191002_181700-336:localhost:88004PUQ]!UaitDdkGDcwvRLJSvp:localhost:8800@anon-20191002_181700-333:localhost:88004PTQ]!dDqNKNFdIjCAwnyaxp:localhost:8800@anon-20191002_181700-332:localhost:88004PSQ]!kjueCKHmYaYefEEpQY:localhost:8800@anon-20191002_181700-331:localhost:88004  ojeQG$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "387", "stream_ordering": 2165}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 1}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042394662, "hashes": {"sha256": "kJtQElYjgaJuTq9JyNw1B/q8NgOfmcyd7WGYfnZEfOo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zcdXMQ1WbIGnbLLpoHjOaEd/YVzYp6LoDoqgTbSGDseh9A+8i19+LqNClGTaAl+vmc7IR7eAPo5axNeFI5XXCg"}}, "unsigned": {"age_ts": 1570042394662}}ieQa$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2164}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg"], "type": "m.room.history_visibility", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042393358, "hashes": {"sha256": "1psrOJMWyEMT6R0kCSBwpG7SLpdRgTfT8SFJcPJNMXY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J2FZqK4UudPsFKGwwD6ctxd5xRg5a8xzoWEj18NwAIQNAdap5HO2MJZFT2X5khK6IYgu3JIALnY7OsvOQgy7Ag"}}, "unsigned": {"age_ts": 1570042393358}}theQau$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2163}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM"], "type": "m.room.join_rules", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042392609, "hashes": {"sha256": "1243TI3L5btT2g2BcrTFO+gMIOtuP6SWKdzDYwSk/vw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TAf6+SKFT6C8GJSfl53TnJQma3/LfLTgyIHphjccuZEfuCiVEVwaDxbjyDAQJB0lPORljpKtsH04GtqFAJ27Cg"}}, "unsigned": {"age_ts": 1570042392609}}kgeQac$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "stream_ordering": 2162}{"auth_events": ["$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "type": "m.room.power_levels", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"users": {"@anon-20191002_181700-388:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042391860, "hashes": {"sha256": "c5L2itKZS9o5CFiI9GjxDkLi+ndlWB0cz60K1P1JQsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uiwLTcmYT3xqCwqQnSCkSElSxT6UiXzWQN3ODXJASsPkWcGP17dvA2T6eRY7JyT+EKJHDbBt7eLGj9hSbH/FCA"}}, "unsigned": {"age_ts": 1570042391860}} MjkK8p> v D?   } KQ  Q   + W % }3 q ]9 +eW%]wElhosA$lolredact:localhost:42455 1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIy1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE"1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUd1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U G1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 N1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V81e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A 71e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM 11e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 -1e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E %1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY U1e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw ;1e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8 1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE 21e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gT1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ-0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko41e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMx1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0X1e$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc1e$miivGSJ67GyhDZfpi7HugaUnbgsiOUPaHbPY7C_7Fzc1e$mi5jB3OGzsT2u2q2saxi2U51nFVg0ugtBSZ_EMYs2rk1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ>1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8>1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE,1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYA1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw81e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNow1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc^1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4p1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3ok1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt80e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUL1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcH1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUH1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc[1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo2 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~}|~{}z|y{xywxvwuvtustrsqqppoonnmmllkkjiihhggffeeddccab`a_`^_]^\]Z\Y[XZWYVXUWTVRUQTPSORMQLPKOJNHMGLFKEJCIBHAG@F>E=D<C;B9A8@7?6>4=3<2;1:/9.8-7,6*5)4(3'2%1$0#/". -,+*)('&%$#"!     /-,+*)&&% $ # " !             a} { y w u sqomkigeca~;eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800~:eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~9eeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800~8eeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800~7eeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~6eeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800~5eeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800~4eeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~3eeQ$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800~2eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800~1eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~0eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800~/eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800~.eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~-eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800~,eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800~+eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~*eeQ$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800~)eeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800~(eeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~'eeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800~&eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800~%eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~$eeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800~#eeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800~"eeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~!eeQ$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800~ eeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800 P L H D@<LO  e'Q  ]$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcm.room.create!jDKAOtmeAGbYTpwyEW:localhost:8800mdm@anon-20191002_181700-390:localhost:8800! e)Q ]$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgm.room.message!JYLMokjOhZZlmbZvTf:localhost:8800mim@anon-20191002_181700-389:localhost:8800,e?Q ]$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokm.room.history_visibility!JYLMokjOhZZlmbZvTf:localhost:8800mVmL@anon-20191002_181700-389:localhost:8800$e/Q ]$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAm.room.join_rules!JYLMokjOhZZlmbZvTf:localhost:8800mm@anon-20191002_181700-389:localhost:8800&e3Q ]$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDkm.room.power_levels!JYLMokjOhZZlmbZvTf:localhost:8800mm@anon-20191002_181700-389:localhost:8800 e'Q ]$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_km.room.member!JYLMokjOhZZlmbZvTf:localhost:8800mmf@anon-20191002_181700-389:localhost:8800 e'Q  ]$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4m.room.create!JYLMokjOhZZlmbZvTf:localhost:8800m5mՆ@anon-20191002_181700-389:localhost:8800(e7Q ] $szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXca.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mmК@anon-20191002_181700-388:localhost:8800(e7Q ] $wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 m8mB@anon-20191002_181700-388:localhost:8800(e7Q ] $t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74a.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm@anon-20191002_181700-388:localhost:8800(e7Q ] $iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdoa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm @anon-20191002_181700-388:localhost:8800(e7Q ] $U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0a.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mcm@anon-20191002_181700-388:localhost:8800(~e7Q ] $9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Ma.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mlmnj@anon-20191002_181700-388:localhost:8800(}e7Q ] $JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm-@anon-20191002_181700-388:localhost:8800(|e7Q ] $DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mm@anon-20191002_181700-388:localhost:8800({e7Q ] $HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAka.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800 mam@anon-20191002_181700-388:localhost:8800(ze7Q ]$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZga.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѾm@anon-20191002_181700-388:localhost:8800(ye7Q ]$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9wa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѾ6mѾ@anon-20191002_181700-388:localhost:8800(xe7Q ]$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQa.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѼmѽ@anon-20191002_181700-388:localhost:8800(we7Q ]$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0ca.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѻ1mѼ@anon-20191002_181700-388:localhost:8800(ve7Q ]$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4ca.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѸ)mѹ@anon-20191002_181700-388:localhost:8800(ue7Q ]$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Ya.made.up.filler.type!zoTQAhGwmDDUECKtbL:localhost:8800mѸ&mѸ.@anon-20191002_181700-388:localhost:8800,te?Q ]$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskm.room.history_visibility!zoTQAhGwmDDUECKtbL:localhost:8800mѳmѴ@anon-20191002_181700-388:localhost:8800 "&) K T |  :`c!CLt jQ3 e!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U Q']e!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiodQ' e!CGckPHdSYcIocFvRAq:localhost:8800m.room.create$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUpQ? e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibility$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MhQ/ e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rules$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgjQ3 e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY Q']e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UdQ' e!BoyzlWNkRPncpDjBDg:localhost:8800m.room.create$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kpQ? e!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibility$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkhQ/ e!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rules$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIjQ3 e!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y Q']e!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYdQ' e!djwLhpJUYOKsgQtrky:localhost:8800m.room.create$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UpQ? e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibility$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMhQ/ e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rules$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcjQ3 e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ Q']e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIdQ' e!bkwyieHZwSMJfuSKvV:localhost:8800m.room.create$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMp Q? e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibility$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwh Q/ e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rules$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIj Q3 e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU Q']e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYd Q' e!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.create$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwpQ? e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibility$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUhQ/ e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rules$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0jQ3 e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8 Q']e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkdQ' e!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.create$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcpQ? e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.history_visibility$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokhQ/ e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.join_rules$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWAjQ3 e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.power_levels$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk Q']e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.member@anon-20191002_181700-389:localhost:8800$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kdQ' e!JYLMokjOhZZlmbZvTf:localhost:8800m.room.create$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4p~Q? et!zoTQAhGwmDDUECKtbL:localhost:8800m.room.history_visibility$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk D]+%i7p> vDp> v D  | J  | W P  P  V $J  ] +1P+j]21e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04&1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM 51e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM c1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QK1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w41e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I+1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg;1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU[1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw 1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsG0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y&1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8.1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc >1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMU1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4m21e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ)1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI.1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8a1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98t1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIu1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k+1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE  wneQ'$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "391", "stream_ordering": 2169}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c", "$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 5}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042396214, "hashes": {"sha256": "guwaPMvpNHhBCWQ//Lzg0rSZfofzmLlR8fvdQIHknCI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "weX4qmvKuFKzM9DywjwQ7aAddBP2xAKNehBtkqC9wXuCWho+Rz1A8HH+5mVOyj6JZW6YkPY+utkIowz/rq2gAg"}}, "unsigned": {"age_ts": 1570042396214}}meQ'$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "390", "stream_ordering": 2168}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y", "$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 4}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042395832, "hashes": {"sha256": "GATbLM950r3jm2SSAhshHOneWy3LUzvee1Bep74Uqcc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Env8RfkNf1oANX/Fuht3Ku+6VqAKU8dPdjUB4Ue3NzGfOZSMSaiOsO4bWX9PpXYId1ZTgorBOvOM3Wls38WwAQ"}}, "unsigned": {"age_ts": 1570042395832}}oleQG$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "389", "stream_ordering": 2167}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 3}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042395441, "hashes": {"sha256": "liDdVmRCE8eTbTdEPrd95bTToabkonxOqfdTF8MuP4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8O+q64/8+REWRwHTLS7Qxb+nRHypvm0O7jSREcR+CA4OJK3EVo3wuHH2Ktdb8yILv7JQJKxcidKZuuRK4w+NCw"}}, "unsigned": {"age_ts": 1570042395441}}okeQG$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "388", "stream_ordering": 2166}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 2}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042394665, "hashes": {"sha256": "Z4mBFKl9mW5HMLOo5/ftRnmEM2V5xA3ftAL+6G3NdGI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pduIXN92jOFZhZmzz/OAPQzBo03msnIhHGY+07x79P2XXoQt125Eucf7FTFFErZMkwHx1I5BejIRA8HCz77VAg"}}, "unsigned": {"age_ts": 1570042394665}} M\7p>$ v|D | K   Q J j W p> %  ] +V8c*1iP v D  21e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg H1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk}1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0>1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMB1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc 1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw 1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQR1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs[1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUG1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk=1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUF1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY|1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAk1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg!1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo11e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20O1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM*1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y]1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0P1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM]1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE$1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ[1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIf1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUIA1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekf1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsr1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk 1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUe1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX00e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAL1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio,1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s&1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUI1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf41e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw O1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs 01e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg 1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks F1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 41e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY D]+%i7p> vDp> v D  | J  | W P  P  V $J  ] +1P+j]21e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590 1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04&1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM 51e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM c1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD081e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QE1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w.1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I%1e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss 1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg;1e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgU[1e$NC11cZ4D4pVPTqiOOEPlqEJ75xpksvh-3GUoS1Lx8v41e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8 1e$N8bhuN7OGU2CN6Mh7ObUgKGHwKNkeEWBk-RSPnhB-jc1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw 1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgsG0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2Y&1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8.1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc >1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4 1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMU1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4m21e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ)1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI.1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8a1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98t1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIu1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k+1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE s ]s reQ)$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "395", "stream_ordering": 2173}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg", "$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 9}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042397896, "hashes": {"sha256": "M9qNYCaxRgtYoctbnKi3Re2T23A5xdBMTcoiRDYuYPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MpEpXm9zlgg8SswOs4lGRhnczzbjNQWfjJGwHpAEAxZm/xEJIk1pcQAjF9mXi9Zq1m5LYgezyBswm6c3OsajAQ"}}, "unsigned": {"age_ts": 1570042397896}}qeQ'$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "394", "stream_ordering": 2172}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w", "$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 8}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042397419, "hashes": {"sha256": "7+g1wnQd9gpUGDf22hVMiQRalIIzkfFv7BQR3N0OCsA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QpuOiuaKb8EmaGqe3JONe1okEs1UnLcwxmlwvieD2tNVl0iW3mSuKotduVeS8Trp+7GiIHiKZ8zB9cYXtqKVBQ"}}, "unsigned": {"age_ts": 1570042397419}}peQ'$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "393", "stream_ordering": 2171}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ", "$0YcrItEIFIBGgGkxZGKP2XN1cNQC5cCfG6_n2WSwZ9w"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 7}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042397025, "hashes": {"sha256": "KaFirGtuehbfHsZq0mAzP0jS6CATrmtsrqBrtFuzYVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u3YbnX+BEra3tyT/tB7WBnnkDH7R95jmH9g/nS5P3iuz4taSM3Ehy9Si+tXFL6d73G39V9zvV57tqIt8U41LDg"}}, "unsigned": {"age_ts": 1570042397025}}oeQ'$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "392", "stream_ordering": 2170}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c", "$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 6}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042396395, "hashes": {"sha256": "jAJZk0ZHgt1CUNNMWise4TJ8jK8dJW6AJ9nyqk+agtU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Do2W/7GdxP2VJQWIaSCiGNaDnRtTVCcm3s4D4rVHfVJGPynmKZY1xyw2Gi1qTBUJFJ1xHeOJMkgcRKgNluqDQ"}}, "unsigned": {"age_ts": 1570042396395}} t d  \ T LE=5|- l%teeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800 ceeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800 ,eeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0!erBPdgtUsiOfIKUkho:localhost:88008eeQ$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E!mMsxpaIlcykPuOnDyl:localhost:8800فeeQ$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y$-l_ickdHSTyOS7oqV_FCT1P3BQuvvrYgqv3vFQJCL5M!AWfbViAZparIjmDaVT:localhost:8800ցeeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E!OaCEdDAiatpwYcagUb:localhost:8800eeQ$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU!KeqmSjifajNKxtgqhj:localhost:8800beeQ$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800zeeQ$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ!SrMQpDMFREKRMELwbL:localhost:8800eeQ$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjk!NhWgOTYzEPRwAxRQvS:localhost:8800aeeQ$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc!aHyAJEOSdKqTiRjOvw:localhost:8800^eeQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k!HcMGemcRrLnLprOJJR:localhost:8800ҁeeQ$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw!cGkVFpidyBBxUxsszG:localhost:8800eeQ$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU!IPYMCBwcyNIzqdiIWv:localhost:8800ˁeeQ$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ!nftGLlLhVgzOwOFufp:localhost:8800eeQ$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR94!SrMQpDMFREKRMELwbL:localhost:8800eeQ$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s!NNiyzThHMivrxhojfp:localhost:8800 eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800 keeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800  -RM H C > 9 4/*|%w rmhc T[Qe!djwLhpJUYOKsgQtrky:localhost:8800$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3YTZQe!djwLhpJUYOKsgQtrky:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYTYQe!djwLhpJUYOKsgQtrky:localhost:8800$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UTXQe!bkwyieHZwSMJfuSKvV:localhost:8800$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQTWQe!bkwyieHZwSMJfuSKvV:localhost:8800$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8TVQe!bkwyieHZwSMJfuSKvV:localhost:8800$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMTUQe!bkwyieHZwSMJfuSKvV:localhost:8800$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcTTQe!bkwyieHZwSMJfuSKvV:localhost:8800$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQTSQe!bkwyieHZwSMJfuSKvV:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgITRQe!bkwyieHZwSMJfuSKvV:localhost:8800$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMTQQe!XcaKxZsPvbZhAGKKdx:localhost:8800$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iATPQe!XcaKxZsPvbZhAGKKdx:localhost:8800$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwTOQe!XcaKxZsPvbZhAGKKdx:localhost:8800$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yITNQe!XcaKxZsPvbZhAGKKdx:localhost:8800$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUTMQe!XcaKxZsPvbZhAGKKdx:localhost:8800$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYTLQe!XcaKxZsPvbZhAGKKdx:localhost:8800$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwTKQe!jDKAOtmeAGbYTpwyEW:localhost:8800$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoITJQe!jDKAOtmeAGbYTpwyEW:localhost:8800$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUTIQe!jDKAOtmeAGbYTpwyEW:localhost:8800$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0THQe!jDKAOtmeAGbYTpwyEW:localhost:8800$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8TGQe!jDKAOtmeAGbYTpwyEW:localhost:8800$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkTFQe!jDKAOtmeAGbYTpwyEW:localhost:8800$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcTEQe!JYLMokjOhZZlmbZvTf:localhost:8800$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgTDQe!JYLMokjOhZZlmbZvTf:localhost:8800$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokTCQe!JYLMokjOhZZlmbZvTf:localhost:8800$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWATBQe!JYLMokjOhZZlmbZvTf:localhost:8800$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDkTAQe!JYLMokjOhZZlmbZvTf:localhost:8800$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_kT@Qe!JYLMokjOhZZlmbZvTf:localhost:8800$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4T?Qe!zoTQAhGwmDDUECKtbL:localhost:8800$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwT>Qe!zoTQAhGwmDDUECKtbL:localhost:8800$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcT=Qe!zoTQAhGwmDDUECKtbL:localhost:8800$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwT<Qe!zoTQAhGwmDDUECKtbL:localhost:8800$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74T;Qe!zoTQAhGwmDDUECKtbL:localhost:8800$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5FdoT:Qe!zoTQAhGwmDDUECKtbL:localhost:8800$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74T9Qe!zoTQAhGwmDDUECKtbL:localhost:8800$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5FdoT8Qe!zoTQAhGwmDDUECKtbL:localhost:8800$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0T7Qe!zoTQAhGwmDDUECKtbL:localhost:8800$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0MT6Qe!zoTQAhGwmDDUECKtbL:localhost:8800$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0T5Qe~!zoTQAhGwmDDUECKtbL:localhost:8800$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoT4Qe~!zoTQAhGwmDDUECKtbL:localhost:8800$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0MT3Qe}!zoTQAhGwmDDUECKtbL:localhost:8800$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKoT2Qe}!zoTQAhGwmDDUECKtbL:localhost:8800$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oT1Qe|!zoTQAhGwmDDUECKtbL:localhost:8800$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAkT0Qe|!zoTQAhGwmDDUECKtbL:localhost:8800$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9oT/Qe{!zoTQAhGwmDDUECKtbL:localhost:8800$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk Uc;sK# [ 3 k C  { S +  c ;  s K #[3 kC{S+c;sK#[3 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 'Q!uGpSboYkgxVNOqNeUG:localhost:8800 ~'Q!uGpSboYkgxVNOqNeUG:localhost:8800 }'Q!uGpSboYkgxVNOqNeUG:localhost:8800 |'Q!uGpSboYkgxVNOqNeUG:localhost:8800 {'Q!uGpSboYkgxVNOqNeUG:localhost:8800 z'Q!uGpSboYkgxVNOqNeUG:localhost:8800 y'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800 @'Q!tcYctHPiaKzsKgrXlU:localhost:8800 ='Q!tcYctHPiaKzsKgrXlU:localhost:8800 ;'Q!tcYctHPiaKzsKgrXlU:localhost:8800 9'Q!tcYctHPiaKzsKgrXlU:localhost:8800 7'Q!tcYctHPiaKzsKgrXlU:localhost:8800 5'Q!taANXnGBZntAreRurn:localhost:8800 ?'Q!taANXnGBZntAreRurn:localhost:8800 >'Q!taANXnGBZntAreRurn:localhost:8800 <'Q!taANXnGBZntAreRurn:localhost:8800 :'Q!taANXnGBZntAreRurn:localhost:8800 8'Q!taANXnGBZntAreRurn:localhost:8800 6'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 Z'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 Y'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 X'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 W'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 V'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tLkhTnTgDjjAvscRkW:localhost:8800 'Q!tDsPLsKOLPePtEWRwn:localhost:8800&'Q!tDsPLsKOLPePtEWRwn:localhost:8800%'Q!tDsPLsKOLPePtEWRwn:localhost:8800$'Q!tDsPLsKOLPePtEWRwn:localhost:8800#'Q!tDsPLsKOLPePtEWRwn:localhost:8800"'Q!tDsPLsKOLPePtEWRwn:localhost:8800!'Q!tDsPLsKOLPePtEWRwn:localhost:8800 'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800 z'Q!sqkBzbHHJOTNWwynqV:localhost:8800 y'Q!sqkBzbHHJOTNWwynqV:localhost:8800 x'Q!sqkBzbHHJOTNWwynqV:localhost:8800 w'Q!sqkBzbHHJOTNWwynqV:localhost:8800 v'Q!sqkBzbHHJOTNWwynqV:localhost:8800 u'Q!sqkBzbHHJOTNWwynqV:localhost:8800 t'Q!sqkBzbHHJOTNWwynqV:localhost:8800 s'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800"'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800p&Q!scyFsXcUIJiLIMwWMY:localhost:8800o&Q!scyFsXcUIJiLIMwWMY:localhost:8800n ~z v r n j fb^ZVRNJFOeeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800NeeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800MeeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800LeeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800KeeQ$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800JeeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800IeeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800HeeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800GeeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800FeeQ$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800EeeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800DeeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800CeeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800BeeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800AeeQ$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800@eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74!zoTQAhGwmDDUECKtbL:localhost:8800?eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800>eeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800=eeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800<eeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800;eeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800:eeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:88009eeQ$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:88008eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo!zoTQAhGwmDDUECKtbL:localhost:88007eeQ$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:88006eeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:88005eeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:88004eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:88003eeQ$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:88002eeQ$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg!zoTQAhGwmDDUECKtbL:localhost:8800 l [l!veQ+$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "399", "stream_ordering": 2177}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M", "$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 13}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042399495, "hashes": {"sha256": "s44Q+qVm65XB193M64JM2uGy52xeUvTA2/9PCdADV8w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NK0Sl2A0FO0+5/QJsYG5hMbomO/LsR2G9M8Rnd7WGZwVf+tvO5EUTF+kA4wqMHRv8Fmw51adhSIgg8iglXdYDg"}}, "unsigned": {"age_ts": 1570042399495}}!ueQ+$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "398", "stream_ordering": 2176}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo", "$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 12}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042399170, "hashes": {"sha256": "zaHb1XOVs3rKMfSb3DJNCZvH2hxULd7MgGZCAWbCM8I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qjgdEvdE6kps6rzWgctFLS4ZBRlLi2yjVbj1UwJMhZHpSsjB8CpnuHwjpCGa1/WqA9c6L4ey2fOVPgRPGrSeBA"}}, "unsigned": {"age_ts": 1570042399170}}!teQ+$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "397", "stream_ordering": 2175}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o", "$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKo"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 11}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042398819, "hashes": {"sha256": "f/Ng8noIyWRM7ZNIxBb7nKHOnh9q4iZZK9XQl/ISVJk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XzD7cxWwt9vm8L7/9M9SyINX/3g6P753rCSuuotk80nz+W1joZ5Ge/whtl+sNRihy6m2rNmIODonNTqB68o2Dg"}}, "unsigned": {"age_ts": 1570042398819}}!seQ+$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "396", "stream_ordering": 2174}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk", "$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 10}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042398316, "hashes": {"sha256": "YTzwdrMxWer8ZXHctsUVVtd1SIPENAvEkzbp4TZLN6Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i0Z+eP1ucRZ4dWdJercXWvC4iFk1yQH80fj1z/g8nM6qEVqagv5FD3mdsLO0UOGe56gsElhdk5romnX4yVRzAQ"}}, "unsigned": {"age_ts": 1570042398316}} E1 +  i7o= ] u PcC > |{IP vV$ Dp\ *j8 J W %  +11e$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss 1e$OhyK-wZwa4fpqs0KhZhRu95vTYLt4_Sfufh5iGXQH2A1e$OhaiYfldIVg0lVLutVz2GRecfJb1_9VJl6jWBMbnuBg1e$OdpX3pQuJJgmZWuXWecApJNXuRLxbiLgWaQtKtzstlQ%1e$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg 1e$OWPFxDhTjqq6ToJjirNGrelqipfeRnzS0G3JXe1xCfo1e$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal81e$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIwq1e$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU1e$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4k1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM 1e$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ)1e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM1e$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs 1e$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE 0e$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs1e$OB37DpZTOX4JGNiJVcyX-4IbTMZ3IVVBX_ysmM1UNrY1e$O9NhpLwVwQk3aGxuNeqNdaJMH8MVqzzUKG3Mg_-dxxI,1e$O66xgy1zSvwfgyO_r3ymzT1HGGIxAm9wS65LoRnrT0s1e$O1i01XrB0uFZAqjGb8gKa9rABTfseCQgShi8ku_IoX01e$NzOVIy1ovWYo4bwgof05uzteKDCDslZjNAhNqJcgNZk1e$NuLADP0MUfZkrdBfUc_2iGi5muac2F7CfvB9fsBu6sQ1e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5s1e$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8a1e$NrYHqHMjurW0Jpl7p-OuzCarYU2r2iHjJ8TOzP7t8VA1e$NpMidYpenLhyVv93z5Xa_8SRdAVC3V9SnWBmurc-nTE1e$Nj98PAPbOA9EVtZE6qaRJZzQ6FCA5bw6I0kojmhcDrk1e$NhiOUquCTWQmQ6pkykPj1IEJCUN_joNb_EgrAPN9z98t1e$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkE1e$NeIns-mCN2XsCeVjMkwEMzCHeADC9UwHE7uCcVDYNoE1e$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg1e$Naim011tBRi8raQJKB3I8Fkc1Wx-6H4rk9jZNdsI4CM1e$NYarhuDxkS-8YWTB6XsZ61vJkny9b2fwUZXFZNRgApIs1e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I8}1e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg1e$NO8rfTlK2Sw1qNlf3Wqk0jzMkE6xkGrVi6yLVdesaEQ1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA1e$NOlVldmyJnw4WauCPrgA9tTSwLrsRn717eyZ8VRbNTE1e$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w1e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08{1e$NQiPH7y4PL_UlFCWIG9cx6IO6QkgrVXuVln8vr51i3k+1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I 1e$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU1e$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_01e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU1e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs1e$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q1e$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI 1e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 &1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs 1e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 1e$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk 1e$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8 Q1e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1e$Omywpy1eFVvxAFgdXuHg_HlXzt1-K3cY2vqLi8Dh-nw1e$OmFLR91PepBlsY9XRqpCNS1bicoWbAbW6o6emLhwws01e$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk1e$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Hoa1e$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 Q{T)}R' X /  X -  V +  T ) } R '{R)Z/X-V+T)}R'{*Q!yLccBXjjEasExpsXlt:localhost:8800 !*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800 F*Q!yAzXcNLHMuqFOcOexj:localhost:8800 E*Q!yAzXcNLHMuqFOcOexj:localhost:8800  D*Q!yAzXcNLHMuqFOcOexj:localhost:8800  C*Q!yAzXcNLHMuqFOcOexj:localhost:8800  B*Q!yAzXcNLHMuqFOcOexj:localhost:8800  A*Q!yAzXcNLHMuqFOcOexj:localhost:8800  @*Q!yAzXcNLHMuqFOcOexj:localhost:8800  ?*Q!yAzXcNLHMuqFOcOexj:localhost:8800  >*Q!yAzXcNLHMuqFOcOexj:localhost:8800  =*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 s (Q!xwoIOPTGmJIlTXakxC:localhost:8800_^(Q!xwoIOPTGmJIlTXakxC:localhost:8800^](Q!xwoIOPTGmJIlTXakxC:localhost:8800]\(Q!xwoIOPTGmJIlTXakxC:localhost:8800\[(Q!xwoIOPTGmJIlTXakxC:localhost:8800[Z(Q!xwoIOPTGmJIlTXakxC:localhost:8800ZY*Q!xvblqEscwOtCqJntfF:localhost:8800OU*Q!xvblqEscwOtCqJntfF:localhost:8800NT*Q!xvblqEscwOtCqJntfF:localhost:8800MS*Q!xvblqEscwOtCqJntfF:localhost:8800LR*Q!xvblqEscwOtCqJntfF:localhost:8800KQ*Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xXYMxashIZAUOTuGAJ:localhost:8800Er*Q!xXYMxashIZAUOTuGAJ:localhost:8800Dq*Q!xXYMxashIZAUOTuGAJ:localhost:8800Cp*Q!xXYMxashIZAUOTuGAJ:localhost:8800Bo*Q!xXYMxashIZAUOTuGAJ:localhost:8800An*Q!xXYMxashIZAUOTuGAJ:localhost:8800@m*Q!xXYMxashIZAUOTuGAJ:localhost:8800?l(Q!wvnfKBSrUlfNmYoeil:localhost:8800|{(Q!wvnfKBSrUlfNmYoeil:localhost:8800{z(Q!wvnfKBSrUlfNmYoeil:localhost:8800zy(Q!wvnfKBSrUlfNmYoeil:localhost:8800yx(Q!wvnfKBSrUlfNmYoeil:localhost:8800xw*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800 O [OvzeQay$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2181}{"auth_events": ["$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4"], "prev_events": ["$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4"], "type": "m.room.member", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-389", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-389:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042403526, "hashes": {"sha256": "gLbO9tSlO2ABd1XySLatrUP9b8Ao8QpkO9VUAe7cbJA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "au8PNQWwOx9LyXDzvSSImHq65Zt2ncmlu6N/Z4CQOc0LMPvpgK2Q+8V+6S9c6TOeUhCayrGw7q69wfV++UTXDQ"}}, "unsigned": {"age_ts": 1570042403526}}iyeQa_$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2180}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-389:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042402101, "hashes": {"sha256": "IstVC8OYDJUoDiMGMl7KRQtlRipD7sM0nblXk3ZcsDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+miskrzK495tLLL9H6kev1rI1senhTGZnsM2E+c1Fid7rI9wYhSSM2YdQQkeVOWxk/GFXv4kRqT/R0rCD8VFBg"}}, "unsigned": {"age_ts": 1570042402101}}!xeQ+$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "401", "stream_ordering": 2179}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo", "$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 15}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042400469, "hashes": {"sha256": "msqTIx1QUmVZNEPs/FbHsB2+B8XRj7hpTYk50TVWugY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbOJAXiaMHjpjs8ALZFjv0IuRiJ9m66jOLPsvsf0FhY2GzklkpyU8ix/FRqFZdYJHKqMHBEGR72OQA1uSeKzBw"}}, "unsigned": {"age_ts": 1570042400469}}!weQ+$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw!zoTQAhGwmDDUECKtbL:localhost:8800{"token_id": 405, "txn_id": "400", "stream_ordering": 2178}{"auth_events": ["$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM", "$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI", "$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA"], "prev_events": ["$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0", "$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo"], "type": "a.made.up.filler.type", "room_id": "!zoTQAhGwmDDUECKtbL:localhost:8800", "sender": "@anon-20191002_181700-388:localhost:8800", "content": {"filler": 14}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042400056, "hashes": {"sha256": "/MNf3kD6AS9vLEddMlyVmVXMPuqykvaZmmw31X//DVU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wt2QYPfXbkabyo8QprFL+r+vKkovDPRBr08/VSprRVfdnQhq+H9NIXTxnP3G6MngUO3qOvK12tYELf4ayU7mDw"}}, "unsigned": {"age_ts": 1570042400056}}  qM w Y ;  i  a C ' s UgI+ Yw;iK-y[=tkMXs7U=!eG)uW; 7  g I + K -  qS5/ \ H 4  <=anon-20191002_181700-486=anon-20191002_181700-484=anon-20191002_181700-482=anon-20191002_181700-480=anon-20191002_181700-479=anon-20191002_181700-478=anon-20191002_181700-477=anon-20191002_181700-476=anon-20191002_181700-475=anon-20191002_181700-473=anon-20191002_181700-471=anon-20191002_181700-469=anon-20191002_181700-467=anon-20191002_181700-465=anon-20191002_181700-464=anon-20191002_181700-463=anon-20191002_181700-462=anon-20191002_181700-461=anon-20191002_181700-460=anon-20191002_181700-458=anon-20191002_181700-456=anon-20191002_181700-454=anon-20191002_181700-452=anon-20191002_181700-450=anon-20191002_181700-448=anon-20191002_181700-449=anon-20191002_181700-446=anon-20191002_181700-447=anon-20191002_181700-445=anon-20191002_181700-444=anon-20191002_181700-443=anon-20191002_181700-442=anon-20191002_181700-441=anon-20191002_181700-440=anon-20191002_181700-439=anon-20191002_181700-437=anon-20191002_181700-516=anon-20191002_181700-438  ;anon-20191002_181700-41==anon-20191002_181700-409=anon-20191002_181700-521=anon-20191002_181700-520;anon-20191002_181700-52I=anon-20191002_181700-518=anon-20191002_181700-514=anon-20191002_181700-512=anon-20191002_181700-510 =anon-20191002_181700-509 =anon-20191002_181700-488=anon-20191002_181700-508 =anon-20191002_181700-507 =anon-20191002_181700-506 =anon-20191002_181700-505=anon-20191002_181700-503=anon-20191002_181700-501=anon-20191002_181700-499=anon-20191002_181700-497=anon-20191002_181700-495=anon-20191002_181700-493=anon-20191002_181700-494=anon-20191002_181700-492=anon-20191002_181700-491=anon-20191002_181700-490~=anon-20191002_181700-536=anon-20191002_181700-422=anon-20191002_181700-421=anon-20191002_181700-420=anon-20191002_181700-419=anon-20191002_181700-418=anon-20191002_181700-417=anon-20191002_181700-416=anon-20191002_181700-415=anon-20191002_181700-414=anon-20191002_181700-413=anon-20191002_181700-412=anon-20191002_181700-411=anon-20191002_181700-410=anon-20191002_181700-535=anon-20191002_181700-534=anon-20191002_181700-533=anon-20191002_181700-532=anon-20191002_181700-531;anon-20191002_181700-53J=anon-20191002_181700-529=anon-20191002_181700-527=anon-20191002_181700-526=anon-20191002_181700-525=anon-20191002_181700-524=anon-20191002_181700-523=anon-20191002_181700-436=anon-20191002_181700-435=anon-20191002_181700-434=anon-20191002_181700-433=anon-20191002_181700-432=anon-20191002_181700-431=anon-20191002_181700-430;anon-20191002_181700-43?=anon-20191002_181700-429=anon-20191002_181700-428=anon-20191002_181700-427=anon-20191002_181700-426=anon-20191002_181700-425=anon-20191002_181700-424=anon-20191002_181700-423;anon-20191002_181700-51H;anon-20191002_181700-50G9anon-20191002_181700-5;anon-20191002_181700-49F;anon-20191002_181700-48E;anon-20191002_181700-47C;anon-20191002_181700-46B;anon-20191002_181700-45A;anon-20191002_181700-44@ Pm< xG R ! ] , h 7  s B  ~ M X'c2n= yHS"^-i8tC.w] @anon-20191002_181700-478:localhost:8800 .v] @anon-20191002_181700-477:localhost:8800 .u] @anon-20191002_181700-476:localhost:8800 .t] @anon-20191002_181700-475:localhost:8800 .s] @anon-20191002_181700-473:localhost:8800 .r] @anon-20191002_181700-471:localhost:8800 .q] @anon-20191002_181700-469:localhost:8800 .p] @anon-20191002_181700-467:localhost:8800 .o] @anon-20191002_181700-465:localhost:8800 .n] @anon-20191002_181700-464:localhost:8800 .m] @anon-20191002_181700-463:localhost:8800 .l] @anon-20191002_181700-462:localhost:8800 .k] @anon-20191002_181700-461:localhost:8800 .j] @anon-20191002_181700-460:localhost:8800 .i] @anon-20191002_181700-458:localhost:8800 .h] @anon-20191002_181700-456:localhost:8800 .g] @anon-20191002_181700-454:localhost:8800 .f] @anon-20191002_181700-452:localhost:8800 .e] @anon-20191002_181700-450:localhost:8800 {.d] @anon-20191002_181700-448:localhost:8800 q.c] @anon-20191002_181700-449:localhost:8800 p.b] @anon-20191002_181700-446:localhost:8800 g.a] @anon-20191002_181700-447:localhost:8800 f.`] @anon-20191002_181700-445:localhost:8800 ]._] @anon-20191002_181700-444:localhost:8800 U.^]@anon-20191002_181700-443:localhost:8800 V.]] @anon-20191002_181700-442:localhost:8800 S.\] @anon-20191002_181700-441:localhost:8800 L.[] @anon-20191002_181700-440:localhost:8800 K.Z] @anon-20191002_181700-439:localhost:8800 J.Y] @anon-20191002_181700-437:localhost:8800 H.X] @anon-20191002_181700-436:localhost:8800 G.W] @anon-20191002_181700-438:localhost:8800 I.V] @anon-20191002_181700-434:localhost:8800 @.U] @anon-20191002_181700-433:localhost:8800 ?.T] @anon-20191002_181700-435:localhost:8800 A.S] @anon-20191002_181700-432:localhost:8800 8.R] @anon-20191002_181700-431:localhost:8800 7.Q] @anon-20191002_181700-430:localhost:8800 6.P] @anon-20191002_181700-429:localhost:8800 ,.O] @anon-20191002_181700-428:localhost:8800 0.N] @anon-20191002_181700-427:localhost:8800 *.M] @anon-20191002_181700-426:localhost:8800 .L] @anon-20191002_181700-424:localhost:8800 .K] @anon-20191002_181700-425:localhost:8800 #.J]@anon-20191002_181700-423:localhost:8800 .I] @anon-20191002_181700-421:localhost:8800 .H] @anon-20191002_181700-422:localhost:8800 .G] @anon-20191002_181700-420:localhost:8800 .F] @anon-20191002_181700-419:localhost:8800 .E] @anon-20191002_181700-417:localhost:8800 .D] @anon-20191002_181700-418:localhost:8800 .C] @anon-20191002_181700-416:localhost:8800.B] @anon-20191002_181700-414:localhost:8800.A] @anon-20191002_181700-415:localhost:8800.@] @anon-20191002_181700-413:localhost:8800.?] @anon-20191002_181700-411:localhost:8800.>] @anon-20191002_181700-412:localhost:8800.=]@anon-20191002_181700-410:localhost:8800.<] @anon-20191002_181700-409:localhost:8800.;] @anon-20191002_181700-408:localhost:8800.:] @anon-20191002_181700-407:localhost:8800.9]@anon-20191002_181700-406:localhost:8800.8] @anon-20191002_181700-405:localhost:8800.7] @anon-20191002_181700-404:localhost:8800.6] @anon-20191002_181700-403:localhost:8800.5]@anon-20191002_181700-402:localhost:8800.4] @anon-20191002_181700-401:localhost:8800.3] @anon-20191002_181700-400:localhost:8800.2] @anon-20191002_181700-399:localhost:8800.1] @anon-20191002_181700-397:localhost:8800.0] @anon-20191002_181700-398:localhost:8800./]@anon-20191002_181700-396:localhost:8800..] @anon-20191002_181700-395:localhost:8800.-] @anon-20191002_181700-394:localhost:8800.,] @anon-20191002_181700-393:localhost:8800.+] @anon-20191002_181700-392:localhost:8800.*] @anon-20191002_181700-391:localhost:8800.)] @anon-20191002_181700-390:localhost:8800.(] @anon-20191002_181700-389:localhost:8800 g * T~=gg]!c@anon-20191002_181700-399:localhost:8800PYXHCRNRQLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgog]!c@anon-20191002_181700-397:localhost:8800MUYZSHOUYAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQog]!c@anon-20191002_181700-398:localhost:8800QJTBFOFNHMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgog]!c@anon-20191002_181700-396:localhost:8800ALHPRAAFGPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQog]!c@anon-20191002_181700-395:localhost:8800QBHVPKMMWEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawog]!c@anon-20191002_181700-394:localhost:8800PSPZGMAOEGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ7MzBOJnJ4MjdkRlY4TH4KMDAyZnNpZ25hdHVyZSDEWdLU6ypMTjm7IoIQyEblzSvLEBWgti22-K26eYOJfwog]!c@anon-20191002_181700-393:localhost:8800ABJMLTSTASMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGNFeF4sQUJaWVY3JkBwOXQKMDAyZnNpZ25hdHVyZSCWZXxHZjQTxOtAVnyUKA9idywM-AHyiS4-GrYtUx6zdAog]!c@anon-20191002_181700-392:localhost:8800GEJMGKQZNJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1XI3RjVjo6QXR3Tjl4aEcKMDAyZnNpZ25hdHVyZSD2lW-Xgp8w5ukMnbPAV39B0bWFhYFL1jT6Wn_Ww0npIgog]!c@anon-20191002_181700-391:localhost:8800XGNSQPEQLLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwqRHE3bH5-PVYyK2I0RCYKMDAyZnNpZ25hdHVyZSAEG-vFxynCIErZN0PU9O5i56FHtZEbxFuvsVBOwFxA1wog]!c@anon-20191002_181700-390:localhost:8800IMMWZCJBQHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0ubU5jK1RtaWFBbHliVmcKMDAyZnNpZ25hdHVyZSDyfrDkklGvY9_vom0YlJRLBj1NQstwJXx13pdW6-MaMwog ]!c@anon-20191002_181700-389:localhost:8800NHRBBKCZKAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHp6Z0EwUm80KitaMkpETXcKMDAyZnNpZ25hdHVyZSBlsB49JvXxCyMk6o6fapIVQCnBcva45QBGYmtS5BKKBAo   ~eQk$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "txn_id": "406", "stream_ordering": 2185}{"auth_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk", "$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok"], "type": "m.room.message", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042406761, "hashes": {"sha256": "kkxmhsBGZP5vdXFNja/JKC7cj1uRTeyEKPqRiKGbSh4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Klb1pC939z4ALjPH6HDPQmGfmSFpzbB2tQa1AWd883Vyz8GSF7crtTtdhSi3V6vEAbv8qIHQomNTGaTyNMcDDA"}}, "unsigned": {"age_ts": 1570042406761}}}eQa$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2184}{"auth_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk", "$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA"], "type": "m.room.history_visibility", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042405718, "hashes": {"sha256": "awG6ztozg5DS4NCH2mJCJiG6zZ9eeRE4PKIuncfISIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2e/6NPElC4meKGTWRldE4KAZt2IbY/RbLudxgbA8PkfBvV18Iq9bczB4TWeHmuaHA6AXkwFg/CGcL3kDBGIyCw"}}, "unsigned": {"age_ts": 1570042405718}}t|eQau$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2183}{"auth_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk", "$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk"], "type": "m.room.join_rules", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042404886, "hashes": {"sha256": "U7OtpPX6jbp+6iadO/TWNqPbDCC5sse60LUhEVZqeMA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SDYtc90p91aKgGlhBwRbR3NB6fGsJdsp/IEHBFqPyCUjghZriE1WFmIYXqnjBW9LInmQ/Qfs/+6Hpg1b4pZ/Dw"}}, "unsigned": {"age_ts": 1570042404886}}k{eQac$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800{"token_id": 406, "stream_ordering": 2182}{"auth_events": ["$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4", "$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "prev_events": ["$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k"], "type": "m.room.power_levels", "room_id": "!JYLMokjOhZZlmbZvTf:localhost:8800", "sender": "@anon-20191002_181700-389:localhost:8800", "content": {"users": {"@anon-20191002_181700-389:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042404102, "hashes": {"sha256": "FWREytB5GS8ejejVLRTUkG4iU7hsKo+WBXgvhiRHYeE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AwoQZanrCHO6wjSwSKfY9IR0pLknIV9OCi8GCiQCDr2+/fRgQMOZNWuz0WD8Yr6FK1svJEbytClxXGmx5ziUDQ"}}, "unsigned": {"age_ts": 1570042404102}} a} { y w u sqomkigeca~eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800~eeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800~eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~ eeQ$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800~eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$-hAYQc_ttBBLfugu6bCzFR-sI9rHsm3PyNmUptHCgWA$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk!JYLMokjOhZZlmbZvTf:localhost:8800~eeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k!JYLMokjOhZZlmbZvTf:localhost:8800~~eeQ$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800  4 h 9mfd]c@anon-20191002_181700-395:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawo127.0.0.1d]c@anon-20191002_181700-404:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAo127.0.0.1d]c@anon-20191002_181700-403:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggago127.0.0.1d]c@anon-20191002_181700-401:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwo127.0.0.1d]c@anon-20191002_181700-400:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwo127.0.0.1a[a@anon-20191002_181700-39:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gLipwfjtVQ3VJc1Z-UX46UQowMDJmc2lnbmF0dXJlIGVOSZR6uZ_XtI81neQU7GI-hz9O6cKZiLnIU-YzCBaKCg127.0.0.1 d]c@anon-20191002_181700-399:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgo127.0.0.1d]c@anon-20191002_181700-398:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgo127.0.0.1d]c@anon-20191002_181700-397:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQo127.0.0.1d]c@anon-20191002_181700-396:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQo127.0.0.1 ,NC 8 - { " p  e ZOD9.|#qf V(eL$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwsha256df[<6 Iovo|Ñ;V'eL$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQsha256bS@j|U )s2\|4V&eL$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0sha256$~`}%a, 6cv>{ƎV%eL$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgsha256D$QTޜFR-,8 6C&-8V$eL$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVssha25653Y֝ Ɇ_Rș^Ol) [dq8HRNvV!eL$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8sha256*ټ\ V}sQ$HG.V eL$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5Usha256h !cDOk⫉r3>"ZiW4/VeL$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiosha256ހ$(GRkEX #V.ԒGm*VeL$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUsha256Dbnj).ޡmߝhrሥVeL$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8sha256EG6 [ʙ| $^VeL$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Msha256taj_/9SBiޟܹVeL$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgsha2568/-@s5bZVO8VeL$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYsha256ƻu%\ rVNyZB^VeL$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9Usha256SeGCp~AƧ{*VeL$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6ksha256RYMX6LcˆN6tҷVeL$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwsha256w'р; ciGM`ӆr,VeL$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLksha256,ekOcNsgԭVeL$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIsha256Difeqc(&4§RVeL$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Ysha256}G^4,`} bs* }6vVeL$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYsha256B@q|zi+EI $`ҳa4VeL$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4Usha256kE^I^Xiڊ++EO@uVeL$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQsha256 c ^m=ؔ>vVsVeL$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8sha256_!߯٫N= U&xC[7Xe/VeL$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMsha256J,x,Lh>TY5veucVeL$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcsha256ly`9_^dOUֻ,CXV eL$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQsha256ɃC8prٹ߿svXї2cyHp`V eL$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIsha256ϳ٬u)@70dJ7E9n1&ҎV eL$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMsha256KVoYGHJ2W.ŋ:/fE{{EV eL$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iAsha256ɯH\DAWK8&lS8 V eL$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwsha256u9 }n;^aˏG< j hVeL$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIsha256G]ChAQ?ȻQN'"VeL$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUsha256\{qńq<`ko$BvqAeVeL$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYsha256d K$_m}pHvVVeL$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwsha256j|a|L,,d }. $s 3ElVeL$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIsha256TYB.OO01V]ZVeL$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUsha2569;dmSP垀UI%-:~*=VeL$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0sha256=d{ 6_r-zl]VeL$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8sha256J˵NCh@3|ܮC/0$OVeL$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCksha256 xz?(Äxdлer.)VeL$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOcsha256uB~8/Bֈ`Ry߼V~eL$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbgsha256TWB" hLBe-U+E'gMV}eL$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAoksha256ǻ/JЏ-+lH] W X 0  ` 8  p H  `8Y1 H  yQ)pX0lEqI!a9iAyQ) h @'Q!uqIEMXzdeNeXdJ('Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!vAUAIZrCnHTeMGeNuw:localhost:8800c'Q!vAUAIZrCnHTeMGeNuw:localhost:8800b'Q!vAUAIZrCnHTeMGeNuw:localhost:8800a&Q!uxKymrHZeXRYCZwekU:localhost:8800B&Q!uxKymrHZeXRYCZwekU:localhost:8800A&Q!uxKymrHZeXRYCZwekU:localhost:8800@&Q!uxKymrHZeXRYCZwekU:localhost:8800?'Q!ubmTdQFAhrhZkGULDx:localhost:8800 |'Q!ubmTdQFAhrhZkGULDx:localhost:8800 {'Q!ubmTdQFAhrhZkGULDx:localhost:8800 z'Q!ubmTdQFAhrhZkGULDx:localhost:8800 y'Q!ubmTdQFAhrhZkGULDx:localhost:8800 ~'Q!ubmTdQFAhrhZkGULDx:localhost:8800 }'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vAUAIZrCnHTeMGeNuw:localhost:8800f'Q!vAUAIZrCnHTeMGeNuw:localhost:8800e'Q!vAUAIZrCnHTeMGeNuw:localhost:8800d'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800 &Q!uxKymrHZeXRYCZwekU:localhost:8800>'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800 'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800h'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800y'Q!vOfeZvbtpuHfoqShFl:localhost:8800x'Q!vOfeZvbtpuHfoqShFl:localhost:8800w'Q!vOfeZvbtpuHfoqShFl:localhost:8800v'Q!vOfeZvbtpuHfoqShFl:localhost:8800u'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!ubmTdQFAhrhZkGULDx:localhost:8800 s'Q!ubmTdQFAhrhZkGULDx:localhost:8800 r'Q!ubmTdQFAhrhZkGULDx:localhost:8800 q'Q!ubmTdQFAhrhZkGULDx:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!ubmTdQFAhrhZkGULDx:localhost:8800 x'Q!ubmTdQFAhrhZkGULDx:localhost:8800 w'Q!ubmTdQFAhrhZkGULDx:localhost:8800 v'Q!ubmTdQFAhrhZkGULDx:localhost:8800 u'Q!ubmTdQFAhrhZkGULDx:localhost:8800 t'Q!uqIEMXzdeNeXdJmuwh:localhost:8800    *teQau$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2189}{"auth_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8", "$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8"], "type": "m.room.join_rules", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042410894, "hashes": {"sha256": "A4ynoQUn9CK5VUxhnb0AqEzga3LGB8w8SV1XU1ftzjE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UTBn4yLIhCE8IrDSonBlUz1WETJ0mZPZrxdrmP+kwaemozd4pFHHxc7WdvR2qQWAnmUiWlCswsIRHPopjLroCw"}}, "unsigned": {"age_ts": 1570042410894}}keQac$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2188}{"auth_events": ["$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "type": "m.room.power_levels", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"users": {"@anon-20191002_181700-390:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042409936, "hashes": {"sha256": "zkQ9vxAQox75e9G7aIUjKZVyG95ZIV8VkBfVQcj/3Zs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WwKMuBj3DLr+m80Ph70zukIBAyQZlkaPI3zQ4MmdPpeMA8aFbw4ZBnP6GF+JpRbxru5baXsWHezzMPHsDTCzDA"}}, "unsigned": {"age_ts": 1570042409936}}veQay$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2187}{"auth_events": ["$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc"], "prev_events": ["$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc"], "type": "m.room.member", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-390", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-390:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042409256, "hashes": {"sha256": "SgWlPuuIXxwuHrTY7qhF6dvGOYmjkv9dir9M+dLu7Og"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eP9149nX7ZTjLlCLNVqZToWuO9RUYNDobZGhOS3aTWgm8IXBIr+JJPAaiayLUZuTyv2km1pwa5BnZUfAFIYvBg"}}, "unsigned": {"age_ts": 1570042409256}}ieQa_$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2186}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-390:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042408292, "hashes": {"sha256": "s3Vc+jOAqsYgPqu4A1uZGIvWuQWwW6dqgJehBpToF50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4srSLAAVlqeMUTbfBr0OJLCOX2QBZ3HZ8QDsW3xH8G0nPGq7V8bgaFP1BypIRQ/5ZwUJ3/CRIUqGWwGuwSl4CQ"}}, "unsigned": {"age_ts": 1570042408292}} =CE A ~ = z 9 x 7 x 9y8y:z9z;{:{<|;|=>7 Q!wBkUBAjOznOyxrLchl:localhost:8800m&\  =6 Q !sHRHoXzYrrPSlWBkoh:localhost:8800m&\ !<5 Q   !AoAvmnwMkhYBQsbCsL:localhost:8800m&\m<4 Q  !IlGJpjzrvvAFuwTAgo:localhost:8800m&\5m=3 Q !CSqENqzAezaZnGktbE:localhost:8800m&\ !=2 Q !vBvlJEXUSQKUYmsKcO:localhost:8800m&\ >1 Q!RDEAXrqXQizuhCUFPq:localhost:8800m&\ >0 Q!mogJVPxghalmKbblUq:localhost:8800m&\ o) Q!DelfBAGvCrTXgNxmNV:localhost:8800m&\ >( Q!kOmCTyiizHqfCJdhlR:localhost:8800m&\ o<' Q  !pJUItjYTOUJQFIxyiX:localhost:8800m&\=& Q !mvgUHEsfGqDkPQUvfG:localhost:8800m&\ !<% Q   !WYyiQAVvitxsLZKVCG:localhost:8800m&\m<$ Q  !KIHYKMzkRDrJwiywwz:localhost:8800m&\8i=# Q !RSLvuCuAqKQQrKCxNq:localhost:8800m&\ !=" Q !DqxFmsXPclgGqpSwdy:localhost:8800m&\ >! Q!uqIEMXzdeNeXdJmuwh:localhost:8800m&\ > Q!yAzXcNLHMuqFOcOexj:localhost:8800m&\ o< Q  !tLkhTnTgDjjAvscRkW:localhost:8800m&\= Q !kAxKaIQhXTtGFWSUgr:localhost:8800m&\ *>< Q   !WhLedNwPGGGTtqeqam:localhost:8800m&\"< Q  !yLccBXjjEasExpsXlt:localhost:8800m&\E= Q !PcvmCDeVUSyJbXpTig:localhost:8800m&\ *= Q !HbYxdEuVIeLKHwqJEh:localhost:8800m&\ 'e> Q!FbJSiQoZtZkaFwzzQq:localhost:8800m&\ )> Q!JPTwFTSDaBXwUTgitj:localhost:8800m&\ &< Q  !RYNJAGdRhIlwRZFbrO:localhost:8800m&\= Q !MqstbCLZIQFiYNHrqR:localhost:8800m&\ *;< Q   !WuiaqqIOvBjgETqdus:localhost:8800m&\"< Q  !bQDOrbAknnQZfUbhgS:localhost:8800m&\A= Q !GSxvxNevpCiwmFCHys:localhost:8800m&\ *= Q !yfizglmCXdcqCgDrTr:localhost:8800m&\ 'e> Q!XnUZiYJDWVNGfsBnGz:localhost:8800m&\ )> Q!ePtMOPPOgOcBIMNZpn:localhost:8800m&\ &< Q  !YGUjVdVdpcQoGkRnWB:localhost:8800m&\> Q !IZkczIYykpZDvjuUWn:localhost:8800m&\ > Q!zuCqeooOnfWkYrQdxA:localhost:8800m&\  "> Q!vttkrtSyHEJXVMlvLo:localhost:8800m&\ > Q!whuymJoLfUdkFdxoyE:localhost:8800m&\> Q!yTQmLDAxZscWKLMSWh:localhost:8800m&\ 'u> Q!eWRdwtyqHvuxZFvhNS:localhost:8800m&\ 'u> Q!UGVFuRGyPQmBbGsEDo:localhost:8800m&\ 'u> Q!AMLmLqizBFklpqKibP:localhost:8800m&\-]> Q!rWGwSSefrZzQYCYFHs:localhost:8800m&\ 'w> Q!HXfrGcvJCbRItyQLVE:localhost:8800m&\*k> Q!HusOrLtWZTLbmQZxmm:localhost:8800m&\*i> Q!BpTqIemsWFZIqTcgJO:localhost:8800m&\ $> Q!YQATbgbLImCDamiDHC:localhost:8800m&\O> Q!svYOOXWZHtQQzlMcEP:localhost:8800m&\*i< Q  !CGckPHdSYcIocFvRAq:localhost:8800m&\"< Q  !BoyzlWNkRPncpDjBDg:localhost:8800m&\2<~ Q  !djwLhpJUYOKsgQtrky:localhost:8800m&\2<} Q  !bkwyieHZwSMJfuSKvV:localhost:8800m&\<| Q  !XcaKxZsPvbZhAGKKdx:localhost:8800m&\ <{ Q  !jDKAOtmeAGbYTpwyEW:localhost:8800m&\2 [kN3{^C L /  ~ c @ ) x 9   k P -  | e & uX=iRbE*t]oXj+ze&tY6! / nm.room.join_rules}3 mm.room.power_levels|>']lm.room.member@anon-20191002_181700-407:localhost:8800{' km.room.createz>']jm.room.member@anon-20191002_181700-405:localhost:8800y>']im.room.member@anon-20191002_181700-404:localhost:8800x# hm.room.namew"? gm.room.history_visibilityv/ fm.room.join_rulesu3 em.room.power_levelst>']dm.room.member@anon-20191002_181700-403:localhost:8800s' cm.room.creater>']bm.room.member@anon-20191002_181700-401:localhost:8800q# am.room.namep"? `m.room.history_visibilityo/ _m.room.join_rulesn3 ^m.room.power_levelsm>']]m.room.member@anon-20191002_181700-400:localhost:8800l' \m.room.createk>'][m.room.member@anon-20191002_181700-399:localhost:8800j>']Zm.room.member@anon-20191002_181700-398:localhost:8800i# Ym.room.nameh"? Xm.room.history_visibilityg/ Wm.room.join_rulesf3 Vm.room.power_levelse>']Um.room.member@anon-20191002_181700-397:localhost:8800d' Tm.room.createc"? Sm.room.history_visibilityb/ Rm.room.join_rulesa3 Qm.room.power_levels`>']Pm.room.member@anon-20191002_181700-395:localhost:8800_' Om.room.create^"? Nm.room.history_visibility]/ Mm.room.join_rules\3 Lm.room.power_levels[>']Km.room.member@anon-20191002_181700-394:localhost:8800Z' Jm.room.createY"? Im.room.history_visibilityX/ Hm.room.join_rulesW3 Gm.room.power_levelsV>']Fm.room.member@anon-20191002_181700-393:localhost:8800U' Em.room.createT"? Dm.room.history_visibilityS/ Cm.room.join_rulesR3 Bm.room.power_levelsQ>']Am.room.member@anon-20191002_181700-392:localhost:8800P' @m.room.createO"? ?m.room.history_visibilityN/ >m.room.join_rulesM3 =m.room.power_levelsL>']']7m.room.member@anon-20191002_181700-390:localhost:8800F' 6m.room.createE"? 5m.room.history_visibilityD/ 4m.room.join_rulesC3 3m.room.power_levelsB>']2m.room.member@anon-20191002_181700-389:localhost:8800A' 1m.room.create@"? 0m.room.history_visibility?/ /m.room.join_rules>3 .m.room.power_levels=>']-m.room.member@anon-20191002_181700-388:localhost:8800<' ,m.room.create;"? +m.room.history_visibility:/ *m.room.join_rules93 )m.room.power_levels8>'](m.room.member@anon-20191002_181700-387:localhost:88007' 'm.room.create6"? &m.room.history_visibility5/ %m.room.join_rules43 $m.room.power_levels3>']#m.room.member@anon-20191002_181700-386:localhost:88002' "m.room.create1>']!m.room.member@anon-20191002_181700-385:localhost:88000>'] m.room.member@anon-20191002_181700-385:localhost:8800/"? m.room.history_visibility./ m.room.join_rules-3 m.room.power_levels,>']m.room.member@anon-20191002_181700-384:localhost:8800+' m.room.create*>']m.room.member@anon-20191002_181700-383:localhost:8800)"? m.room.history_visibility(/ m.room.join_rules'3 m.room.power_levels&>']m.room.member@anon-20191002_181700-382:localhost:8800%' m.room.create$>']m.room.member@anon-20191002_181700-381:localhost:8800# O\ Z  o  m)3<LO!"e)Q ]$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwm.room.message!djwLhpJUYOKsgQtrky:localhost:8800mFmG@anon-20191002_181700-393:localhost:8800,!e?Q ]$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkm.room.history_visibility!djwLhpJUYOKsgQtrky:localhost:8800mABmD@anon-20191002_181700-393:localhost:8800$ e/Q ]$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIm.room.join_rules!djwLhpJUYOKsgQtrky:localhost:8800m=(m?t@anon-20191002_181700-393:localhost:8800&e3Q ]$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Ym.room.power_levels!djwLhpJUYOKsgQtrky:localhost:8800m9Qm:@anon-20191002_181700-393:localhost:8800 e'Q ]$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYm.room.member!djwLhpJUYOKsgQtrky:localhost:8800m6am6@anon-20191002_181700-393:localhost:8800 e'Q  ]$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4Um.room.create!djwLhpJUYOKsgQtrky:localhost:8800m1m2'@anon-20191002_181700-393:localhost:8800!e)Q ]$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQm.room.message!bkwyieHZwSMJfuSKvV:localhost:8800m+m+@anon-20191002_181700-392:localhost:8800e#Q ]$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8m.room.test!bkwyieHZwSMJfuSKvV:localhost:8800m(m(@anon-20191002_181700-392:localhost:8800,e?Q ]$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMm.room.history_visibility!bkwyieHZwSMJfuSKvV:localhost:8800m$Ym&O@anon-20191002_181700-392:localhost:8800$e/Q ]$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcm.room.join_rules!bkwyieHZwSMJfuSKvV:localhost:8800m!m"@anon-20191002_181700-392:localhost:8800&e3Q ]$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQm.room.power_levels!bkwyieHZwSMJfuSKvV:localhost:8800m,m >@anon-20191002_181700-392:localhost:8800 e'Q ]$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIm.room.member!bkwyieHZwSMJfuSKvV:localhost:8800m|m@anon-20191002_181700-392:localhost:8800 e'Q  ]$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMm.room.create!bkwyieHZwSMJfuSKvV:localhost:8800mm@anon-20191002_181700-392:localhost:8800e#Q ]$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iAm.room.test!XcaKxZsPvbZhAGKKdx:localhost:8800m(m,@anon-20191002_181700-391:localhost:8800,e?Q ]$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwm.room.history_visibility!XcaKxZsPvbZhAGKKdx:localhost:8800mmy@anon-20191002_181700-391:localhost:8800$e/Q ]$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIm.room.join_rules!XcaKxZsPvbZhAGKKdx:localhost:8800m m@anon-20191002_181700-391:localhost:8800&e3Q ]$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWUm.room.power_levels!XcaKxZsPvbZhAGKKdx:localhost:8800m m @anon-20191002_181700-391:localhost:8800 e'Q ]$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlYm.room.member!XcaKxZsPvbZhAGKKdx:localhost:8800mmA@anon-20191002_181700-391:localhost:8800 e'Q  ]$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwm.room.create!XcaKxZsPvbZhAGKKdx:localhost:8800mm.@anon-20191002_181700-391:localhost:8800!e)Q ]$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoIm.room.message!jDKAOtmeAGbYTpwyEW:localhost:8800mmT@anon-20191002_181700-390:localhost:8800,e?Q ]$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZUm.room.history_visibility!jDKAOtmeAGbYTpwyEW:localhost:8800mm@anon-20191002_181700-390:localhost:8800$ e/Q ]$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0m.room.join_rules!jDKAOtmeAGbYTpwyEW:localhost:8800mm@anon-20191002_181700-390:localhost:8800& e3Q ]$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8m.room.power_levels!jDKAOtmeAGbYTpwyEW:localhost:8800mm@anon-20191002_181700-390:localhost:8800 e'Q ]$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCkm.room.member!jDKAOtmeAGbYTpwyEW:localhost:8800m(m@anon-20191002_181700-390:localhost:8800 #s 1 @ n ; gp4=et 2Ao_+eQ# $QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800m.room.namem*eQ? $w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibilitye)eQ/ $gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rulesg(eQ3 $YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels 'eQ']$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800a&eQ' $okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800m.room.createm%eQ? $cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibilitye$eQ/ $jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rulesg#eQ3 $oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels "eQ']$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800a!eQ' $yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800m.room.createm eQ? $dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibilityeeQ/ $OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rulesgeQ3 $xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels eQ']$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800aeQ' $UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800m.room.createmeQ? $3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibilityeeQ/ $mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rulesgeQ3 $4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels eQ']$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800aeQ' $ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800m.room.createmeQ? $Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibilityeeQ/ $oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rulesgeQ3 $yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels eQ']$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800aeQ' $S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800m.room.createmeQ? $dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibilityeeQ/ $R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rulesgeQ3 $XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.power_levels eQ']$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.member@anon-20191002_181700-391:localhost:8800a eQ' $apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.createm eQ? $-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.history_visibilitye eQ/ $pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.join_rulesg eQ3 $SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.power_levels eQ']$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800m.room.member@anon-20191002_181700-390:localhost:8800 9j'P < 3 2 _  F  >\gZ}nm*1z?BQ? !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibility <Q3 !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels :Q/ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules n6Q' !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.create :Q/ !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rules ^Q']!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-322:localhost:8800:Q/ !utJsNQubeIXvcTKGpx:localhost:8800m.room.join_rulesBQ? !utJsNQubeIXvcTKGpx:localhost:8800m.room.history_visibility6Q' !utJsNQubeIXvcTKGpx:localhost:8800m.room.create<Q3 !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels^Q']!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800^Q']!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800:Q/ !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rulesBQ? !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibility<Q3 !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_access6Q' !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create<Q3 !ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels^Q']!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829^Q']!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800:Q/ !ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rulesBQ? !ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibility6Q' !ubmTdQFAhrhZkGULDx:localhost:8800m.room.create9Q- !uSBqTezaFcMnlowsEf:localhost:8800m.room.tombstone<Q3 !uSBqTezaFcMnlowsEf:localhost:8800m.room.power_levels^Q']!uSBqTezaFcMnlowsEf:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800:Q/ !uSBqTezaFcMnlowsEf:localhost:8800m.room.join_rulesBQ? !uSBqTezaFcMnlowsEf:localhost:8800m.room.history_visibility6Q' !uSBqTezaFcMnlowsEf:localhost:8800m.room.create?Q9 !uSBqTezaFcMnlowsEf:localhost:8800m.room.canonical_alias EQ))!uSBqTezaFcMnlowsEf:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels ^Q']!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800 RQ'E!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455 :Q/ !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules BQ? !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility 6Q' !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create <Q3 !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.power_levels]Q'[!uJtKGXTNdEnCPNOGDx:localhost:8800m.room.member@anon-20191002_181700-63:localhost:8800:Q/ !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.join_rulesBQ? !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.history_visibility6Q' !uJtKGXTNdEnCPNOGDx:localhost:8800m.room.create<Q3 !uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels k^Q']!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800 gRQ'E!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455 m6Q' !uGpSboYkgxVNOqNeUG:localhost:8800m.room.create lBQ? !uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility j<Q3 !tkajvIKHoOMWGsReBs:localhost:8800m.room.power_levels#^Q']!tkajvIKHoOMWGsReBs:localhost:8800m.room.member@anon-20191002_181700-198:localhost:8800":Q/ !tkajvIKHoOMWGsReBs:localhost:8800m.room.join_rules$BQ? !tkajvIKHoOMWGsReBs:localhost:8800m.room.history_visibility%6Q' !tkajvIKHoOMWGsReBs:localhost:8800m.room.create!<Q3 !tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels +^Q']!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800 ):Q/ !tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules -BQ? !tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility /6Q' !tcYctHPiaKzsKgrXlU:localhost:8800m.room.create '^Q']!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800  wveQay$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2193}{"auth_events": ["$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw"], "prev_events": ["$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw"], "type": "m.room.member", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-391", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-391:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042415066, "hashes": {"sha256": "ob1YkLwynAD8PhXvGR7q3piuNVZjx861s7hBeN0PJsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dZwSo0oHbeuwtznl6m8aUYrYOKXSkQPcp7r/OW/gYWFexEIR7mm6+Dw6Ws1reVxwFRAYyfjWELPE/RA91MpOBA"}}, "unsigned": {"age_ts": 1570042415066}}ieQa_$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2192}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-391:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042414291, "hashes": {"sha256": "DzmqHOtqan9dkgfyYFq7QxAac9+DumT5kqz++N2knrk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/TDqzkkZPv3EDjyvn1sjXrnXQ5uIdS6WoCeNrm2lTmLMl2wasvP6VVVv1f3m/z0FSIEXopXdkhYJOJl6vX8kBw"}}, "unsigned": {"age_ts": 1570042414291}}eQk$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "txn_id": "407", "stream_ordering": 2191}{"auth_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8", "$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU"], "type": "m.room.message", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042412530, "hashes": {"sha256": "gIUFbnG/hCDy5PHTf/wZYsjbuvOQxkL6uFXgPzFgdDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fhovmjnly9VOua/L/D4RSXPwVDrdKUvi/0Vy1ob3HUg0JVrn6L9Fz4ib2hxit0pEIX5sGTqYXcNORrsfHpRoCQ"}}, "unsigned": {"age_ts": 1570042412530}}eQa$-znkls47F2RtgFPOUOea5Z6AVcUFSRQQJS3AOn4qPZU!jDKAOtmeAGbYTpwyEW:localhost:8800{"token_id": 407, "stream_ordering": 2190}{"auth_events": ["$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8", "$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc", "$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk"], "prev_events": ["$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0"], "type": "m.room.history_visibility", "room_id": "!jDKAOtmeAGbYTpwyEW:localhost:8800", "sender": "@anon-20191002_181700-390:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042411544, "hashes": {"sha256": "RuFI8kGPXzGyUlgQAESoq/F5+p113NHamwuVHhJG/ek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEjQR7K2rw5Fogwo5raF/W7jW9C1H4jL1gjnjpKvSPUpP9giuchFV561CEyWtKSx09U/9UrXgtuHwk19LXfcCQ"}}, "unsigned": {"age_ts": 1570042411544}} >47Smo6R4nUq8  Q T5   q 8 T  q 8 T pR8e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAsha256j8e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZIsha256 8e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNosha256 8e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYsha256 g8e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88sha256 8e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8sha256 8e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYsha256 8e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHosha256 8e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAsha256 A8e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQsha256 ;8e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWksha2568e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwsha2568e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8csha2568e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMYsha2568e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQsha256.8e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYsha256 8e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30sha2568e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMsha256 8e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Asha256 k8e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0sha2568e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBIsha256,8e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64sha2568e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0osha256 8e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYsha256 8e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmAsha2568e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Usha256 8e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIsha256 8e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkMsha2568e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pMsha256]8e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zegsha256&8e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Usha256v8e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8sha256 8e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2Asha256[8e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aUsha2568e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm4sha2568e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwsha256 8e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQsha2567e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGAsha2568e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxYsha2568e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAsha256o8e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcwsha2568e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEgsha2568e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYsha256Y8e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEsha256z8e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Awsha256 8e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Usha256 i8e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDksha256{7e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRosha256g8e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQsha2568e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Qsha25618e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgsha2568e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSssha2568e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gcsha25698e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkksha256 8e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6Asha256 "8e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELksha256I8e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVksha2568e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaEsha2568e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01ssha2568e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAMsha2568e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQsha256 @8e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aassha256 >^,XiQK o= uC= z H u  \  P    & *  % C}c1XwE pj8,21e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 1e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUq1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80J1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg<1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo 1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMA1e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ 41e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0C1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg 1e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI701e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU t1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWM61e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc<1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMor1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc 21e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG6941e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUe1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkAA0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw81e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYW1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcs^1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs8 1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q h W21e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE= d1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ_0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0>1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY0e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak1e$gRDpamAOeBC0Je12j6jO9Rzt8Zgnl1rYSp99RigxG3Q0e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4f1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef0d1e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNov1e$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xwg d1e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtI1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc1e$gHmx2Z6JIyWUPuImkmMv8_xCo3yvuc16cteocTgJ4qkp1e$gCElfAE5OnyhmjHC0KBq1JnjZZoNiAmjts0FCoSXyQg21e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$gQyu05V3AcZE90dQBeTWsi4AI8aW0aCAb-aRntre9Ik1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0  D DH eQa$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2197}{"auth_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU", "$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw"], "type": "m.room.test", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042418216, "hashes": {"sha256": "vZ1ET/MICfrc0OMu0jsiYePWw0dt9kNKuaCH7+/vZdE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pyALJNISmrZB+9FXesjHRwtxWIhpDPVGGCOgVyfaLeDftfNiUmT8fk5syBuQCMuQCvgdk+BKRMk0GXquCJgTAw"}}, "unsigned": {"age_ts": 1570042418216}} eQa$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2196}{"auth_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU", "$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI"], "type": "m.room.history_visibility", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042417151, "hashes": {"sha256": "WJErC88DzkdnQVsamg/tvoqYUPLWaINhJz9zp+9+Ud4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8Kqve11G99ccP75SU6QU9jdiU3NTVttHZzeCQT9SoUxYcUN3KHOQzuXGOw0Z6a47Q72/DaNU9PiTag16KYLvBg"}}, "unsigned": {"age_ts": 1570042417151}}teQau$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2195}{"auth_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU", "$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU"], "type": "m.room.join_rules", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042416519, "hashes": {"sha256": "xf2/zqioOXmzMoaErl2ndYpn4G5OsRjoZ7Bux0PNc4w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QuK5QvU8x9984H5woQez5flpJlLlUbYMbxwLpy1bD83f9LadBUKKEFXGpBgCzGrD6Pmp73b1qmb8AGZgbgJ8Bw"}}, "unsigned": {"age_ts": 1570042416519}}keQac$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU!XcaKxZsPvbZhAGKKdx:localhost:8800{"token_id": 408, "stream_ordering": 2194}{"auth_events": ["$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw", "$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "prev_events": ["$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY"], "type": "m.room.power_levels", "room_id": "!XcaKxZsPvbZhAGKKdx:localhost:8800", "sender": "@anon-20191002_181700-391:localhost:8800", "content": {"users": {"@anon-20191002_181700-391:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042415869, "hashes": {"sha256": "5pm3QPsfJo2OC2mmskNNfnDhuoPPEI+qxVAnwQGF1ZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kaPsp+2FkPah+gLtICNWVk6HmMN5/I0qNj68ydCORs3Rx9XePs0Mme5f5KVX1WElmaVfTvirNEvYHN/sdnczDg"}}, "unsigned": {"age_ts": 1570042415869}} "$/ Y  D Imx 0;eq |gnQ/ e_!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rules$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00FwimQ3 e^!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM lQ']e]!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4ckQ' e\!YQATbgbLImCDamiDHC:localhost:8800m.room.create$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk jQ']e[!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk iQ']eZ!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4AahQ# eY!svYOOXWZHtQQzlMcEP:localhost:8800m.room.name$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akogQ? eX!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibility$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYgfQ/ eW!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rules$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwieQ3 eV!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ dQ']eU!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0ccQ' eT!svYOOXWZHtQQzlMcEP:localhost:8800m.room.create$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgobQ? eS!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibility$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYgaQ/ eR!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rules$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8i`Q3 eQ!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U _Q']eP!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioc^Q' eO!CGckPHdSYcIocFvRAq:localhost:8800m.room.create$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUo]Q? eN!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibility$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Mg\Q/ eM!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rules$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgi[Q3 eL!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY ZQ']eK!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UcYQ' eJ!BoyzlWNkRPncpDjBDg:localhost:8800m.room.create$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6koXQ? eI!djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibility$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkgWQ/ eH!djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rules$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwIiVQ3 eG!djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y UQ']eF!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYcTQ' eE!djwLhpJUYOKsgQtrky:localhost:8800m.room.create$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4UoSQ? eD!bkwyieHZwSMJfuSKvV:localhost:8800m.room.history_visibility$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WMgRQ/ eC!bkwyieHZwSMJfuSKvV:localhost:8800m.room.join_rules$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wciQQ3 eB!bkwyieHZwSMJfuSKvV:localhost:8800m.room.power_levels$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ PQ']eA!bkwyieHZwSMJfuSKvV:localhost:8800m.room.member@anon-20191002_181700-392:localhost:8800$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIcOQ' e@!bkwyieHZwSMJfuSKvV:localhost:8800m.room.create$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMoNQ? e?!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.history_visibility$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwgMQ/ e>!XcaKxZsPvbZhAGKKdx:localhost:8800m.room.join_rules$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI ! 0 @ P ` p(8HXhxuK ]@anon-20191002_181700-425:localhost:8800$2b$04$g08/VV2w5h/4WIWwAVkFluPQuklx6EtPIg2toIEd8g126NXm7AwCm]uJ ]@anon-20191002_181700-423:localhost:8800$2b$04$L4/GybbKaC9KJl0ArAUpwebICzcuVpTg8W/ggoqaDxAAXNbHXvH.u]uI ]@anon-20191002_181700-421:localhost:8800$2b$04$J1dYtaUFq92hNdEUvnUYC.a7j3zpKavF4thxbUr2fuldWaNPEuzL6]uH ]@anon-20191002_181700-422:localhost:8800$2b$04$Uh7U0J1Sbm1iuB8sVQhd1.76w3m2lZKf7FmDFrxQ9GOsinonVcab.]uG ]@anon-20191002_181700-420:localhost:8800$2b$04$kLtzEFC4aQKqh9d4L1mDm.ejQlqF2J1A.lmIF2/8WD2cWe1VRzGC.]uF ]@anon-20191002_181700-419:localhost:8800$2b$04$WywDkRQv1WaEX9gvQEUXpeRnuRGt5SqgRYlyqkzIHn6KRdghLFhxK]uE ]@anon-20191002_181700-417:localhost:8800$2b$04$LuljtSz5ulNIKuXLGkbhw.213sk3P9D.5gyKrssvoshRv05AYCIYq]uD ]@anon-20191002_181700-418:localhost:8800$2b$04$DQCDDAOjBf8Ee89vWIhvOOh1k2kVIqBPGQSiBMKPjuGPTYTDu3lnm]uC ]@anon-20191002_181700-416:localhost:8800$2b$04$0fUY.L.IP7nLjT40eoZRReHAnITJ4UhZs6rDoYoNxQek9yIpsrLUe]uB ]@anon-20191002_181700-414:localhost:8800$2b$04$gNnV64r1IQqxgOZjwh45N.vDksK2UxOGaif89D294z8GAwQCa7km.]uA ]@anon-20191002_181700-415:localhost:8800$2b$04$T7SKcb0Ss8KXSYU4jL63EeqCwG22.133zVVbBkXroags6PBQtRN.6]u@ ]@anon-20191002_181700-413:localhost:8800$2b$04$NN1aWsWDskJFcHlY.CiHEetGxd4uQLvs6UpAlI85iPKVnG48T8Xty]~u? ]@anon-20191002_181700-411:localhost:8800$2b$04$kfBrV8.VVftZaUpbUcELSO3ZlQhJrwwjpGM0N4nJzTsF3X6hsEIPu]~u> ]@anon-20191002_181700-412:localhost:8800$2b$04$EnTJov31KqLqrD7PaRUaGOGYFJ.3i46SiSF01jcgoQcJiirSzBbUu]~u= ]@anon-20191002_181700-410:localhost:8800$2b$04$RDep0GT79se7d72BRdTMxuIQ4YrlbWcXbeaApkmq4p5wdlaMWyi3q]su< ]@anon-20191002_181700-409:localhost:8800$2b$04$jRlsD/XB6qNNf0laUUDgwe19IIw7moUzHx9caLlFM04CaadLlaR86]ru; ]@anon-20191002_181700-408:localhost:8800$2b$04$6F/wAW6duOc0x7MLy033H.f/kLG/450hADDbTv2/UdY.v95PHkeVG]ru: ]@anon-20191002_181700-407:localhost:8800$2b$04$BKdPefBzjt3V6AuEoMNXYeKPCLB5XxxwFM2J3I/SKgjAz/MK3Zwsi]ru9 ]@anon-20191002_181700-406:localhost:8800$2b$04$8uupj7xXUWfYargQnlK0IuJBsODLF6qrv.rZ2Op5f3MqTw0KIxCEW]gu8 ]@anon-20191002_181700-405:localhost:8800$2b$04$Y6K6UCamzF9lJCF7eCh6peYGDq9kuBQjNtaf9btiRezEyrJ.VT2wO]eu7 ]@anon-20191002_181700-404:localhost:8800$2b$04$xrEyYx7/gdXYyopx2OHelO/2ZrJMdYdrc9ZQC57iWLsaFosJH69zy]eu6 ]@anon-20191002_181700-403:localhost:8800$2b$04$0O6YnXLth4ZpyePAvSUt2esIh226Gsq5UHCblczkLd31ZGcXcH2Lm]eu5 ]@anon-20191002_181700-402:localhost:8800$2b$04$SciAO4fkbxttJ1EJ7PP.keMK5HV2p7PjegCco/tqeKbq1/0AOxOQK]Yu4 ]@anon-20191002_181700-401:localhost:8800$2b$04$8FmQJCvecPg60RaqFsgAw.i3pfNK5MjXqXIE92HuqKptRmlbVM9fO]Yu3 ]@anon-20191002_181700-400:localhost:8800$2b$04$c9fZdq.p.89hK5fFq6SSWOr6CK9ZM4nI90D3N1l4E5PEFwnAuk9ui]Xu2 ]@anon-20191002_181700-399:localhost:8800$2b$04$i7uxk5U8xX7EPGrKQiqE7uc8L7TbxKPa/AEvweH5CZoWrACetSTy2]Mu1 ]@anon-20191002_181700-397:localhost:8800$2b$04$fxWcwnVJi5w1m.rljDMgTuK3A2si.LGmy2rs2LLduIQgscfYXKvQe]Mu0 ]@anon-20191002_181700-398:localhost:8800$2b$04$HTaAVJZrTDMYFtf3jDCWieLwJPNA6In6ifJf8AY/MjeNgTQ9QcZ5y]Mu/ ]@anon-20191002_181700-396:localhost:8800$2b$04$zeBrhhHBeZBHebfPCy4m7uROq0ORJ1sOUNP9KdTKC0WT4HofT.veG]Lu. ]@anon-20191002_181700-395:localhost:8800$2b$04$M0M8d8bim2vWz//Hrgk5OOIKluB4DSOHk54MROopaurgzl2KMhNK6]Fu- ]@anon-20191002_181700-394:localhost:8800$2b$04$L7nzqjObxgeyfhGzMQNHD.ISOap/hTai0Xj3d6niqlD15wQGr2bPS]?u, ]@anon-20191002_181700-393:localhost:8800$2b$04$DrDEPrwcvmaiywsvs6qSgujlDOqKFKn/rYc9WFDCn0vMiRSAWxaea]9u+ ]@anon-20191002_181700-392:localhost:8800$2b$04$L9AF/lpC/y6bq0S5w8sWK.3JhQ5UPVXXt.soVG8dE9SDTuAW81r6C]2   *teQau$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2201}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ"], "type": "m.room.join_rules", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042421662, "hashes": {"sha256": "x7fSbqQ41/tHC3K/KCiKbwpUM0nSagWuYjXWbl0xegs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ykwKKZlx1QRYop4LKsFW7xbG3Rv0yl1sRf42OwKTb9a27tsYDL2cvXlu0baDmsZRz+8y+B1C9wDNwCVqamrpDQ"}}, "unsigned": {"age_ts": 1570042421662}}k eQac$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2200}{"auth_events": ["$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "type": "m.room.power_levels", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"users": {"@anon-20191002_181700-392:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042421036, "hashes": {"sha256": "PfzqPeN8FRb4Ei7TkETsF4Ji54qKIoPMRyw6lffVpE4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gxYc671GQ1APpiQBXvvGVfY8+KD9VkMTpcj6jzJILk/jn7iVre4joWyDHck/zDXU4tVMlbdobuIKZ53BldyRBg"}}, "unsigned": {"age_ts": 1570042421036}}v eQay$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2199}{"auth_events": ["$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM"], "prev_events": ["$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM"], "type": "m.room.member", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-392", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-392:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042420348, "hashes": {"sha256": "5qepIhEA8TOzNgGO3Obwbw23pcYzjtQo71MM2TB4AhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "22wYVc7bbCuzbpV1SVF4ZAwsnvE9xHPecierHDoH+i2vm2v89hGKwA/fqnNbv6pMPKt625pUu/thYu99cYKZDg"}}, "unsigned": {"age_ts": 1570042420348}}i eQa_$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2198}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-392:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042419603, "hashes": {"sha256": "Gw+KKaUPBGNwkRYaHLUNDs3h572obEsfUpLkxte3C+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Is/NoShhUl97OQl3XyLE2VQbVFo1tpw6pCEj8QNBo/6UfPFQ99irLg+8nhFw82IfgqZnnm+nRqhXgkSCEstqCw"}}, "unsigned": {"age_ts": 1570042419603}} ~z v r n j fb^ZVRNJFmeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800leeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800keeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM!svYOOXWZHtQQzlMcEP:localhost:8800jeeQ$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800ieeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800heeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800geeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800feeQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800eeeQ$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M!CGckPHdSYcIocFvRAq:localhost:8800deeQ$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800ceeQ$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800beeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800aeeQ$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800`eeQ$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800_eeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800^eeQ$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800]eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800\eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800[eeQ$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800ZeeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800YeeQ$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800XeeQ$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800WeeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800VeeQ$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800UeeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8!bkwyieHZwSMJfuSKvV:localhost:8800TeeQ$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800SeeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800ReeQ$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ!bkwyieHZwSMJfuSKvV:localhost:8800QeeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800PeeQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@~}|{~z}y|xzwyvxuwtvsurtqrpqopnomnlmkljjiihhggffeeddcbbaa``__^^]][\Z[YZXYWXVWUVSURTQSPRNQMPLOKNIMHLGKFJDICHBGAF?E>D=C<B:A9@8?7>5=4<3;2:09/8.7-6+5*4)3(2&1%0$/#.!- ,+*)('&%$#"!      0.-,+*('& % $ # " !            w +ieQa_$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2205}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-393:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042425793, "hashes": {"sha256": "lXW7LWcl9fij23e2ONbO9FvrkRTsRPYBqzaUeZv2vOY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eDKR0Rpf9731wZGq3kRoqaEJ8JNavztPt80UZoe/CjX2yyj3b7nI5W5BhIKg7Xii8HWPXXs50RnSgfkcsk4QDg"}}, "unsigned": {"age_ts": 1570042425793}}eQy$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "txn_id": "408", "stream_ordering": 2204}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8"], "type": "m.room.message", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"body": "Test message", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042424084, "hashes": {"sha256": "Legul06qa3+2GJiPCkLPpmZmlLsq0twHjmzAvtYxE1c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dKXYLw1Po6QOisl/bQrMkRvnkb15NO8BnQMhR1u2GKx8403AIE0ezrwNnIamWEdBXcz5VsgtDIJDFMwItO+vBQ"}}, "unsigned": {"age_ts": 1570042424084}}HeQa$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS8!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2203}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM"], "type": "m.room.test", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042423529, "hashes": {"sha256": "tQhdqoDtUAneI/xkrP6NYnnGVdhEfcHSR7Nde8SvVQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Qj6bQ1WJ2z0XmLCJYUg51ONAlVrG19EKQfsDEccMba+7MuY5ISvAvYRrUBTraYNYExwoo98YbW9Z4I8YLIFDg"}}, "unsigned": {"age_ts": 1570042423529}}eQa$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM!bkwyieHZwSMJfuSKvV:localhost:8800{"token_id": 409, "stream_ordering": 2202}{"auth_events": ["$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ", "$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM", "$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI"], "prev_events": ["$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc"], "type": "m.room.history_visibility", "room_id": "!bkwyieHZwSMJfuSKvV:localhost:8800", "sender": "@anon-20191002_181700-392:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042422361, "hashes": {"sha256": "gHKKPARmva/1Xtf2Rouo4ojLiX56HooCf/uValkhfv4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iOIhcohjaJuIO8nwAzA+uuFyMoUUPWGwdEubufhKST2Up50+09E/tuHJHXTZJiIeivR8c0UmbVzCXA6jr6Z1BQ"}}, "unsigned": {"age_ts": 1570042422361}}  eQa$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2209}{"auth_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y", "$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI"], "type": "m.room.history_visibility", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042429762, "hashes": {"sha256": "7hO+Lv4RwhAi2KIYApuEQzkTFPV0nEgBd+NxzFCbySs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tVk5I6Njzck3xv0ELXVWqbx2dCDDsb4ayGrTZ7eOnTHvAv91HSm3zxH3TrgEChnWYbYoGHsAPWQypJrGXMPSCQ"}}, "unsigned": {"age_ts": 1570042429762}}teQau$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2208}{"auth_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y", "$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y"], "type": "m.room.join_rules", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042428712, "hashes": {"sha256": "2cvKfoT2NEaNESbfi1tHymI2sR3r0OSPFceMOeLq25E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6falrRhxb7QipI5E9JI5h5wCUGTfDP/DJk2ZZyNw9t3B8QF3+JLQ9VRet7xkXvDJJ29iZ0zwk6PONYrMms9LDA"}}, "unsigned": {"age_ts": 1570042428712}}keQac$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2207}{"auth_events": ["$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "type": "m.room.power_levels", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"users": {"@anon-20191002_181700-393:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042427729, "hashes": {"sha256": "p+gFr02galGX1wmK1ypskDzgzlKwLD0rmGxz/z+CPbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IW+tkC0zRM+lTBCd5PX5sUN3CwItm3EmgczAGn6XJV5EnFdCNU47FvuBuJG5zybiJeVC02l8FFP01puKKpgOCQ"}}, "unsigned": {"age_ts": 1570042427729}}veQay$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "stream_ordering": 2206}{"auth_events": ["$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U"], "prev_events": ["$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U"], "type": "m.room.member", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-393", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-393:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042426977, "hashes": {"sha256": "mCBH85FXp6KePFxDw5ksDizekSV77JaIWBWUlYqxMa8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1F9BqYWDcy2632oOdD5Z+tNDkhdyZfjLU1hQg+BxRvMnXIcCiI/78NhZJQ46IJQP/ygUXQgV8PQK2mZ4bJoDBA"}}, "unsigned": {"age_ts": 1570042426977}} LD ,$; d4 l T D,; L eeQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ00!fcdNYFWFyxmdpKAknc:localhost:8800FeeQ$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk!ILbUVZOfPPwaZRrKJd:localhost:8800eeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI!oXKJArsPmtgaYANBrg:localhost:8800feeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAk!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8!SrMQpDMFREKRMELwbL:localhost:8800"eeQ$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg!zFdNewlKnUiMBxnYrN:localhost:8800eeQ$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDM!cosGKKhHvKaVukBCic:localhost:8800eeQ$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU$OCtEYDYX0z8dl2Kkl9_Bz_-dS5KSoDHj_wuAD9c3FTs!plcvCHNbjCkNMMxnTk:localhost:8800eeQ$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0!BckZfhQgrcyiMhEAAJ:localhost:8800i eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o!fOJLpnbtgKNxxVDquX:localhost:8800 eeQ$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800a eeQ$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ!EMhFCPhwmnWVnjtXXM:localhost:88005eeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800 |eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U!WpThtNEVhrUbUdCdMJ:localhost:8800  -RM H C > 9 4/*|%w rmhc TtQet!HXfrGcvJCbRItyQLVE:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcTsQes!HXfrGcvJCbRItyQLVE:localhost:8800$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgTrQer!HusOrLtWZTLbmQZxmm:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkTqQeq!HusOrLtWZTLbmQZxmm:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakTpQep!HusOrLtWZTLbmQZxmm:localhost:8800$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMToQeo!HusOrLtWZTLbmQZxmm:localhost:8800$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4ETnQen!HusOrLtWZTLbmQZxmm:localhost:8800$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMTmQem!HusOrLtWZTLbmQZxmm:localhost:8800$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2QTlQel!HusOrLtWZTLbmQZxmm:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgTkQek!HusOrLtWZTLbmQZxmm:localhost:8800$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9AasTjQej!BpTqIemsWFZIqTcgJO:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrATiQei!BpTqIemsWFZIqTcgJO:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEThQeh!BpTqIemsWFZIqTcgJO:localhost:8800$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQTgQeg!BpTqIemsWFZIqTcgJO:localhost:8800$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoTfQef!BpTqIemsWFZIqTcgJO:localhost:8800$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcTeQee!BpTqIemsWFZIqTcgJO:localhost:8800$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wTdQed!BpTqIemsWFZIqTcgJO:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQTcQec!BpTqIemsWFZIqTcgJO:localhost:8800$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgTbQeb!YQATbgbLImCDamiDHC:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUTaQea!YQATbgbLImCDamiDHC:localhost:8800$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgT`Qe`!YQATbgbLImCDamiDHC:localhost:8800$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwT_Qe_!YQATbgbLImCDamiDHC:localhost:8800$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00FwT^Qe^!YQATbgbLImCDamiDHC:localhost:8800$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMT]Qe]!YQATbgbLImCDamiDHC:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4T\Qe\!YQATbgbLImCDamiDHC:localhost:8800$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekkT[Qe[!svYOOXWZHtQQzlMcEP:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkTZQeZ!svYOOXWZHtQQzlMcEP:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4ATYQeY!svYOOXWZHtQQzlMcEP:localhost:8800$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akTXQeX!svYOOXWZHtQQzlMcEP:localhost:8800$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYTWQeW!svYOOXWZHtQQzlMcEP:localhost:8800$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwTVQeV!svYOOXWZHtQQzlMcEP:localhost:8800$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQTUQeU!svYOOXWZHtQQzlMcEP:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0TTQeT!svYOOXWZHtQQzlMcEP:localhost:8800$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgTSQeS!CGckPHdSYcIocFvRAq:localhost:8800$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYTRQeR!CGckPHdSYcIocFvRAq:localhost:8800$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8TQQeQ!CGckPHdSYcIocFvRAq:localhost:8800$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5UTPQeP!CGckPHdSYcIocFvRAq:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioTOQeO!CGckPHdSYcIocFvRAq:localhost:8800$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUTNQeN!BoyzlWNkRPncpDjBDg:localhost:8800$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MTMQeM!BoyzlWNkRPncpDjBDg:localhost:8800$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgTLQeL!BoyzlWNkRPncpDjBDg:localhost:8800$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYTKQeK!BoyzlWNkRPncpDjBDg:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UTJQeJ!BoyzlWNkRPncpDjBDg:localhost:8800$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kTIQeI!djwLhpJUYOKsgQtrky:localhost:8800$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkTHQeH!djwLhpJUYOKsgQtrky:localhost:8800$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI -RM H C > 9 4/*|%w rmhc TQe!BpTqIemsWFZIqTcgJO:localhost:8800$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQTQe!BpTqIemsWFZIqTcgJO:localhost:8800$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08TQe!BpTqIemsWFZIqTcgJO:localhost:8800$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoTQe!BpTqIemsWFZIqTcgJO:localhost:8800$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcTQe!BpTqIemsWFZIqTcgJO:localhost:8800$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wTQe!BpTqIemsWFZIqTcgJO:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQTQe!BpTqIemsWFZIqTcgJO:localhost:8800$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgTQe!YQATbgbLImCDamiDHC:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUTQe!YQATbgbLImCDamiDHC:localhost:8800$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgTQe!YQATbgbLImCDamiDHC:localhost:8800$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIT~Qe!YQATbgbLImCDamiDHC:localhost:8800$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwT}Qe!YQATbgbLImCDamiDHC:localhost:8800$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00FwT|Qe!YQATbgbLImCDamiDHC:localhost:8800$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMT{Qe!YQATbgbLImCDamiDHC:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4TzQe!YQATbgbLImCDamiDHC:localhost:8800$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekkTyQe!svYOOXWZHtQQzlMcEP:localhost:8800$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-UTxQe!svYOOXWZHtQQzlMcEP:localhost:8800$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cETwQe!svYOOXWZHtQQzlMcEP:localhost:8800$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszkTvQe!svYOOXWZHtQQzlMcEP:localhost:8800$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1ATuQe!svYOOXWZHtQQzlMcEP:localhost:8800$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8TtQe!svYOOXWZHtQQzlMcEP:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkTsQe!svYOOXWZHtQQzlMcEP:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4ATrQe!svYOOXWZHtQQzlMcEP:localhost:8800$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akTqQe!svYOOXWZHtQQzlMcEP:localhost:8800$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMTpQe!svYOOXWZHtQQzlMcEP:localhost:8800$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYToQe!svYOOXWZHtQQzlMcEP:localhost:8800$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwTnQe!svYOOXWZHtQQzlMcEP:localhost:8800$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQTmQe!svYOOXWZHtQQzlMcEP:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0TlQe!svYOOXWZHtQQzlMcEP:localhost:8800$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgTkQe!CGckPHdSYcIocFvRAq:localhost:8800$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVsTjQe!CGckPHdSYcIocFvRAq:localhost:8800$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9MTiQe!CGckPHdSYcIocFvRAq:localhost:8800$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYThQe!CGckPHdSYcIocFvRAq:localhost:8800$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8TgQe!CGckPHdSYcIocFvRAq:localhost:8800$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5UTfQe!CGckPHdSYcIocFvRAq:localhost:8800$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDioTeQe!CGckPHdSYcIocFvRAq:localhost:8800$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUTdQe!BoyzlWNkRPncpDjBDg:localhost:8800$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8TcQe!BoyzlWNkRPncpDjBDg:localhost:8800$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_MTbQe!BoyzlWNkRPncpDjBDg:localhost:8800$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgTaQe!BoyzlWNkRPncpDjBDg:localhost:8800$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYT`Qe!BoyzlWNkRPncpDjBDg:localhost:8800$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9UT_Qe!BoyzlWNkRPncpDjBDg:localhost:8800$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6kT^Qe!djwLhpJUYOKsgQtrky:localhost:8800$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSwT]Qe!djwLhpJUYOKsgQtrky:localhost:8800$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLkT\Qe!djwLhpJUYOKsgQtrky:localhost:8800$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI  { keQac$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2213}{"auth_events": ["$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "type": "m.room.power_levels", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"users": {"@anon-20191002_181700-394:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042433788, "hashes": {"sha256": "viF8d0UgnlMazXRoMT8eC4QQLCMq9N/L1uE/UISkImQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uueCTN+ZMF9Ui2VPg1BYoCCnB/ULI0LmOdTQHMWTkduepiTz7ukX8/i3/OuWJjXQb0qWJ2gJKdbYc0lCVw3qCw"}}, "unsigned": {"age_ts": 1570042433788}}veQay$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2212}{"auth_events": ["$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k"], "prev_events": ["$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k"], "type": "m.room.member", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-394", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-394:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042433151, "hashes": {"sha256": "iA3H0tVU+GPfiHTcKLfRbtf/4L9rmMWnYTzF2cuKWuQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FcQp1b6mXwLQJZ9F0NV1Xh5BTnSEemPN0IASAGPH9/Rd+cuQMxAOgdb0VPRTn/5U3Rrtc627xvT4sBCDnG/FDw"}}, "unsigned": {"age_ts": 1570042433151}}ieQa_$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2211}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-394:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042432369, "hashes": {"sha256": "c3S9hmVsKVbqoooDNnn3WNgITqq761mxO3sgAsamq0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2rIEFbTefjvWFhAf6v4PGK5bMTJ3+RpyjY8IvAuU1pQildggma+jYf8cQ71BTcdOeOZ3zomvStV1aUyytSoLBA"}}, "unsigned": {"age_ts": 1570042432369}}eQk$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800{"token_id": 410, "txn_id": "409", "stream_ordering": 2210}{"auth_events": ["$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y", "$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U", "$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY"], "prev_events": ["$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk"], "type": "m.room.message", "room_id": "!djwLhpJUYOKsgQtrky:localhost:8800", "sender": "@anon-20191002_181700-393:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042431137, "hashes": {"sha256": "ECZZ74Y2v4MkiMxm7jqBb7nYvybadoXkBg1SrT4C3W8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cuNCeUIh8HiR3G0AFVJPMLVXbswBXeDOoJTNO55L0ChNCuEYiH15dG5ReNqukMrByG8cOgBv8sDFsOjmk58DDQ"}}, "unsigned": {"age_ts": 1570042431137}} c^ h  q # {&;9Qc!:e)Q ] $mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Am.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҢmҢ@anon-20191002_181700-398:localhost:8800!9e)Q ] $xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8m.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҞmҠn@anon-20191002_181700-398:localhost:8800 8e'Q ] $-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnkm.room.member!svYOOXWZHtQQzlMcEP:localhost:8800 mқmҜ3@anon-20191002_181700-399:localhost:8800 7e'Q ]$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Am.room.member!svYOOXWZHtQQzlMcEP:localhost:8800mҘmҘ@anon-20191002_181700-398:localhost:88006e#Q ]$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akm.room.name!svYOOXWZHtQQzlMcEP:localhost:8800mҕcmҕ@anon-20191002_181700-397:localhost:88005e#Q ]$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMm.room.test!svYOOXWZHtQQzlMcEP:localhost:8800mғmғ@anon-20191002_181700-397:localhost:8800,4e?Q ]$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYm.room.history_visibility!svYOOXWZHtQQzlMcEP:localhost:8800mҎ&mҏ@anon-20191002_181700-397:localhost:8800$3e/Q ]$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwm.room.join_rules!svYOOXWZHtQQzlMcEP:localhost:8800mҋmҌ@anon-20191002_181700-397:localhost:8800&2e3Q ]$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQm.room.power_levels!svYOOXWZHtQQzlMcEP:localhost:8800m҈Sm҉i@anon-20191002_181700-397:localhost:8800 1e'Q ]$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0m.room.member!svYOOXWZHtQQzlMcEP:localhost:8800m҆:m҆@anon-20191002_181700-397:localhost:88000 e'Q  ]$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgm.room.create!svYOOXWZHtQQzlMcEP:localhost:8800m҃m҄ @anon-20191002_181700-397:localhost:8800!/e)Q ]$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVsm.room.message!CGckPHdSYcIocFvRAq:localhost:8800my-my1@anon-20191002_181700-395:localhost:8800!.e)Q ]$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9Mm.room.message!CGckPHdSYcIocFvRAq:localhost:8800mumv@anon-20191002_181700-395:localhost:8800,-e?Q ]$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYm.room.history_visibility!CGckPHdSYcIocFvRAq:localhost:8800mq5ms@anon-20191002_181700-395:localhost:8800$,e/Q ]$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8m.room.join_rules!CGckPHdSYcIocFvRAq:localhost:8800mnmou@anon-20191002_181700-395:localhost:8800&+e3Q ]$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5Um.room.power_levels!CGckPHdSYcIocFvRAq:localhost:8800mkml@anon-20191002_181700-395:localhost:8800 *e'Q ]$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiom.room.member!CGckPHdSYcIocFvRAq:localhost:8800mhqmh@anon-20191002_181700-395:localhost:8800) e'Q  ]$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUm.room.create!CGckPHdSYcIocFvRAq:localhost:8800mdWmd@anon-20191002_181700-395:localhost:8800!(e)Q ]$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8m.room.message!BoyzlWNkRPncpDjBDg:localhost:8800m^m^@anon-20191002_181700-394:localhost:8800,'e?Q ]$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_Mm.room.history_visibility!BoyzlWNkRPncpDjBDg:localhost:8800mY&mZ@anon-20191002_181700-394:localhost:8800$&e/Q ]$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzgm.room.join_rules!BoyzlWNkRPncpDjBDg:localhost:8800mVkmW@anon-20191002_181700-394:localhost:8800&%e3Q ]$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYm.room.power_levels!BoyzlWNkRPncpDjBDg:localhost:8800mPmT@anon-20191002_181700-394:localhost:8800 $e'Q ]$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9Um.room.member!BoyzlWNkRPncpDjBDg:localhost:8800mNmO,@anon-20191002_181700-394:localhost:8800# e'Q  ]$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6km.room.create!BoyzlWNkRPncpDjBDg:localhost:8800mKqmK@anon-20191002_181700-394:localhost:8800 \P W ( 4xIMe^6 /c{ 8 g } lN =   e 7 R # | M-    q Bs  D\ /.Q!VhUAklonNaWKRnLkcr:localhost:8800th.Q!TeraguiGoZoeOGFzlI:localhost:8800th|.Q!TWETXUgfFZafDdbqLS:localhost:8800thy.Q!TSFcaXDBqrCREHRHxv:localhost:8800thx.Q!THHfVSOSWiBQTHRAnJ:localhost:8800thw.Q!SyIWYOmcGiASNkPCTB:localhost:8800thv.Q!SvKwEALYoNreUvqAlp:localhost:8800thu.Q!SrwdtDytJDUBVZOueF:localhost:8800tht.Q!SrMQpDMFREKRMELwbL:localhost:8800ths.Q!SpXEytywhTbAftyVBr:localhost:8800thr.Q!TcCLuIBUrtFqghDgay:localhost:8800thz.Q!SrwdtDytJDUBVZOueF:localhost:8800m.Q!SrMQpDMFREKRMELwbL:localhost:8800m.Q!TkluVzxeeCbMtbFWWS:localhost:8800th}.Q!TSFcaXDBqrCREHRHxv:localhost:8800m}.Q!THHfVSOSWiBQTHRAnJ:localhost:8800m-Q!SyIWYOmcGiASNkPCTB:localhost:8800m;.Q!SvKwEALYoNreUvqAlp:localhost:8800m-Q!StEnDjTJToXKXsOHNf:localhost:8829m\.Q!TlJCaYlCkOOVzFDlLx:localhost:8800m.Q!TkluVzxeeCbMtbFWWS:localhost:8800m.Q!TeraguiGoZoeOGFzlI:localhost:8800m-Q!TcaopYfMoJFEcjYRzJ:localhost:8800mx.Q!TcCLuIBUrtFqghDgay:localhost:8800m-Q!TWETXUgfFZafDdbqLS:localhost:8800m&.Q!WYyiQAVvitxsLZKVCG:localhost:8800m%-Q!WWZVpyLeZfyfpWidLx:localhost:8800mF-Q!WVzjUePHrzCjfyTbmK:localhost:8800mY.Q!WFHIeSFQyuugGeBFxW:localhost:8800m.Q!VhUAklonNaWKRnLkcr:localhost:8800mX-Q!VWYMJxEviBNDdJCuKT:localhost:8800m>.Q!VUibrTIkcRbfrogbQV:localhost:8800m>.Q!VOhMAiLfKyTOZbmKGw:localhost:8800m.Q!VNdqhtoDkyMoQdMTtM:localhost:8800m-Q!VCSCNemqikJZiRtxrs:localhost:8829m]-Q!VAEDgDJVqmxXZyAlSW:localhost:8800m5-Q!UyLoIXmzVFwycmBUeh:localhost:8800mW.Q!UluPYLGXtInKDTjRzp:localhost:8800ms.Q!UaitDdkGDcwvRLJSvp:localhost:8800m.Q!UTAORDrNxIbSlGByAp:localhost:8800mb.Q!URpLZLuBfVcfHVTBGS:localhost:8800m.Q!UMFUOnYRvwKwSPkYHB:localhost:8800m.Q!UGVFuRGyPQmBbGsEDo:localhost:8800m-Q!TleKOyAElrpgyyrAQA:localhost:8800m#.Q!TcaopYfMoJFEcjYRzJ:localhost:8800th{.Q!TlJCaYlCkOOVzFDlLx:localhost:8800th~.Q!TleKOyAElrpgyyrAQA:localhost:8800th.Q!UGVFuRGyPQmBbGsEDo:localhost:8800th.Q!VWYMJxEviBNDdJCuKT:localhost:8800th.Q!VUibrTIkcRbfrogbQV:localhost:8800th.Q!VOhMAiLfKyTOZbmKGw:localhost:8800th.Q!VNdqhtoDkyMoQdMTtM:localhost:8800th.Q!VAEDgDJVqmxXZyAlSW:localhost:8800th.Q!UyLoIXmzVFwycmBUeh:localhost:8800th.Q!UaitDdkGDcwvRLJSvp:localhost:8800th.Q!UTAORDrNxIbSlGByAp:localhost:8800th.Q!URpLZLuBfVcfHVTBGS:localhost:8800th.Q!UMFUOnYRvwKwSPkYHB:localhost:8800th.Q!SpXEytywhTbAftyVBr:localhost:8800m.Q!SnROoiDBapNNtMmKnT:localhost:8800thq.Q!SnROoiDBapNNtMmKnT:localhost:8800m.Q!SfYtaUhCFosNfHfUVm:localhost:8800thp.Q!SfYtaUhCFosNfHfUVm:localhost:8800m.Q!WpThtNEVhrUbUdCdMJ:localhost:8800m=.Q!WjlTCJVOFJkanCtkFE:localhost:8800th-Q!WjlTCJVOFJkanCtkFE:localhost:8800mR.Q!WhqVaRReBxJXADAyYD:localhost:8800th.Q!WhLedNwPGGGTtqeqam:localhost:8800th.Q!WgXzOXLTeqaGfiDFhL:localhost:8800th.Q!WYyiQAVvitxsLZKVCG:localhost:8800th.Q!WWZVpyLeZfyfpWidLx:localhost:8800th.Q!WVzjUePHrzCjfyTbmK:localhost:8800th.Q!WFHIeSFQyuugGeBFxW:localhost:8800th[.Q!XGAmnfaVvjDtQJuufa:localhost:8800m[.Q!WuiaqqIOvBjgETqdus:localhost:8800th.Q!WuiaqqIOvBjgETqdus:localhost:8800m.Q!WpThtNEVhrUbUdCdMJ:localhost:8800th.Q!WhqVaRReBxJXADAyYD:localhost:8800m.Q!WhLedNwPGGGTtqeqam:localhost:8800m.Q!WgXzOXLTeqaGfiDFhL:localhost:8800m "ao- 8 f  / ];FtJxVa _eQ']$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800joina^eQ' $Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create ]eQ']$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800join \eQ']$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800join_[eQ# $cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.namemZeQ? $1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibilityeYeQ/ $SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rulesgXeQ3 $dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels WeQ']$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800joinaVeQ' $np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create UeQ']$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800join_TeQ# $jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800m.room.namemSeQ? $gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibilityeReQ/ $5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rulesgQeQ3 $c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels PeQ']$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800joinaOeQ' $xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800m.room.create NeQ']$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800join MeQ']$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800join_LeQ# $QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800m.room.namemKeQ? $w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibilityeJeQ/ $gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rulesgIeQ3 $YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels HeQ']$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800joinaGeQ' $okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800m.room.createmFeQ? $cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibilityeEeQ/ $jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rulesgDeQ3 $oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800m.room.power_levels CeQ']$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800m.room.member@anon-20191002_181700-395:localhost:8800joinaBeQ' $yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800m.room.createmAeQ? $dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800m.room.history_visibilitye@eQ/ $OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800m.room.join_rulesg?eQ3 $xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800m.room.power_levels >eQ']$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800m.room.member@anon-20191002_181700-394:localhost:8800join  zieQa_$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2217}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-395:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042438743, "hashes": {"sha256": "D/3avfn7RH5dWqRfbck7NiG6GKW+0KlqjyYELguC5mE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xyAozhpbVDnm0ruHc4R7L28oswp7nVN2SQX03VXz8LKEmXdFmV6zAxYSLtHwV4Eh9VR4W0kPtVr8pMmu++mFAw"}}, "unsigned": {"age_ts": 1570042438743}}eQk$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "txn_id": "410", "stream_ordering": 2216}{"auth_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY", "$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M"], "type": "m.room.message", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042437123, "hashes": {"sha256": "ClZ6LmzNTXL+PHVWF7BYcYszaSDlaYNQMYu2pqkdMFM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N6pVME3NGF2JtvFnNIduLqSPwJ/XsxOFpZFlhdAdEI2elQ3nRfGcp2/+OjqmHKeuL3z39tbcG+X2C2YPQ7EUAQ"}}, "unsigned": {"age_ts": 1570042437123}}eQa$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2215}{"auth_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY", "$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg"], "type": "m.room.history_visibility", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042435878, "hashes": {"sha256": "4wEDnYOFupjBpdab3dRWBsUPjUYRcXIHznefFkQxVwE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kg1aE9P6JpK2vd+mIl9YsLrb4Mi71DV2cfHYRcn4OyChTicgvmRKgDAxLOXwJKoADHXjDpPle4wQ8wNid3YdAw"}}, "unsigned": {"age_ts": 1570042435878}}teQau$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg!BoyzlWNkRPncpDjBDg:localhost:8800{"token_id": 411, "stream_ordering": 2214}{"auth_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY", "$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k", "$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U"], "prev_events": ["$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY"], "type": "m.room.join_rules", "room_id": "!BoyzlWNkRPncpDjBDg:localhost:8800", "sender": "@anon-20191002_181700-394:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042435179, "hashes": {"sha256": "xB1LBuRrhgEJD+4RnCJRAToGECiXGu2LpX/xdDNZ6uc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6/dQ07MhkpFLZ5mYsGxQVgChHTqDMz33ISIi6/FoOXOjH4GgonzDEzrHIbcs/wn8m/Fk2FpMacg+Us9CkivJAw"}}, "unsigned": {"age_ts": 1570042435179}} )0`p 0 @ P `  p 0@P`p 0@PMo]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mn]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mm]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Ml]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mk]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800Mj]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800Mi]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800Mh]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800Mg]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800Mf]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800Me]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800Md]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800Mc]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800Mb]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800Ma]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800M`]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800M_]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800M^]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800M]]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800M\]Q@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800M[]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800MZ]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800MY]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800MX]Q@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800MW]Q@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800MV]Q@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800MU]Q@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800MT]Q@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800MS]Q@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800MR]Q@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800MQ]Q@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800MP]Q@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800MO]Q@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800MN]Q@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800MM]Q@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800ML]Q@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800MK]Q@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800MJ]Q@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800MI]Q@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800MH]Q@anon-20191002_181700-395:localhost:8800!CGckPHdSYcIocFvRAq:localhost:8800MG]Q@anon-20191002_181700-394:localhost:8800!BoyzlWNkRPncpDjBDg:localhost:8800 ii 45h  g 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5Da1ZYVGEsbVJOZmI1dCYKMDAyZnNpZ25hdHVyZSBjz-vUfZk1Zkypt5OEijykhRSxh43fSCBn96gcrHzhqAoÂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY5Ni5nNmJVdVc3TVQwd0gKMDAyZnNpZ25hdHVyZSBnyuRDIco-3F101-WmUcWzSotfzDJSJ1tRM1jivmRsOAo‚1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-MgoĂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywoƂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0woǂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwoʂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAoɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAoȂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwo˂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAoł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwô1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQo͂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtabDZuOFRSSyZ4U2U1NzUKMDAyZnNpZ25hdHVyZSA2B1qWMNWGc58YXM1YhnKM2QCsGLDKkznatQDfh-YpqQo  "eQa$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2221}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8"], "type": "m.room.history_visibility", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042442037, "hashes": {"sha256": "uixn6kw7GPbeWU6CnfTVCJUKWm7fbMDSd2Hrz2vm4Gg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YFdrp+xOWSmM7/zW5vy3x2hTLL9Kn/Yd45Td189ypr6jzvLAjzRhIty4aLHfjK4w+QNR61cdGG8Lt8wg6jboDQ"}}, "unsigned": {"age_ts": 1570042442037}}t!eQau$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2220}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U"], "type": "m.room.join_rules", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042441397, "hashes": {"sha256": "k1zmwwJL+hUaA2aSfs8hnpuHXByxaMpUw1Pg8pe1M1M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FIrAUpT3FIcRUmsWgDtfM33/SVUbNSGMZTdQtqUiuoJ1MXPchlsfNYhRemCoNkJHnDv9+Tkb6QuRhnO74PHXAQ"}}, "unsigned": {"age_ts": 1570042441397}}k eQac$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2219}{"auth_events": ["$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "type": "m.room.power_levels", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"users": {"@anon-20191002_181700-395:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042440603, "hashes": {"sha256": "cKdTf+9gD2zR/tH5Tms9CnPBQCW942pFwUeE6ORab2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e+2scq6SsImHL2cFYkoohHHHrlgLcr6vzcIK9PvY9ZI2SGSvkovAtx9U87QI7lrB0aB8/XQ3bwHBX7Yv6P5yAQ"}}, "unsigned": {"age_ts": 1570042440603}}veQay$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "stream_ordering": 2218}{"auth_events": ["$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU"], "prev_events": ["$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU"], "type": "m.room.member", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-395", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-395:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042439793, "hashes": {"sha256": "pvdIIrHxhCiHHHHeEQqrbKZjRDvnwVwT0sP7VJLXbuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zdZhETbpIr00dUn8NcRh72ONIhZYuMH4Pv6V5pV7OgrGlxMnuXdCd19bfqtcKmqqzKPLNfVqo6PEeb1dGhPxDQ"}}, "unsigned": {"age_ts": 1570042439793}}  w +VBeQa9$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "stream_ordering": 2253}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc"], "prev_events": ["$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ"], "type": "m.room.member", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-404", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-404:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042478771, "hashes": {"sha256": "hYfgeUJ0p+yFfNnj3GfyZUL47+6rMvjTbvZSmIjaVEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MdZ92i9QObEf4j+gprKhZ/6WyBUCMcoCBESqqLECSCne+kZt3nNH400EANjZkBXXzRAMtwrsMKkIzIKikyvtBA"}}, "unsigned": {"age_ts": 1570042478771}}nAeQai$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2252}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08"], "type": "m.room.name", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042478003, "hashes": {"sha256": "n9jjwO6ayxIyapsr2Sq6N+FQjTwuyRoklsP9QXKdack"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fNHg0RndNgHw667Hc5qo+LIDApkF1GiKRFh+dQ16KUmldO/60xbq0o3qKClPOHYdcvqu88Vg2kEc+7x6eVUbCw"}}, "unsigned": {"age_ts": 1570042478003}}H@eQa$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2251}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo"], "type": "m.room.test", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042477584, "hashes": {"sha256": "mYNBY+7w9ingqwn3Joocywmb4YP95r/8BNY7Ody70Io"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4gf3+2N61FhJ3K9imYo3WVZIEvfB9CDA7aDRjUrLK0/U/QA9jwTTnwW3bbSKiJeYnijVpXTg5rTNxfIESs+qAg"}}, "unsigned": {"age_ts": 1570042477584}}?eQa$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2250}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc"], "type": "m.room.history_visibility", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042474889, "hashes": {"sha256": "jPKWSZaVeR+4AIlPQIeAemvysy7aUw9r1RRCHkd22O4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5j/pVfFCTAepNXsoNjPmT2rEYXhE89ZdRSUOlyhH87sssu7C7v4t1Ftkux76qrvObcwPEo/IU1iUEkxgT5xFBw"}}, "unsigned": {"age_ts": 1570042474889}} KZp8  0bh6n  tB< zH |(N> DjT" V $ v P   * \  1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU `1e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho 1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 1e$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs1e$VO-JpvKSXukduCqWk1AKVGweGdi6qXlW-qhLVCqcStM1e$VNLkcnpI4NS1W5Q64t505AmzdzVZD2OU8GdVymvZRcc1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqwso1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0r1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc01e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1QW1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsP1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz411e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc31e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 10e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk71e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw 91e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90V1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw >1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA 21e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw ^1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE j1e$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEW1e$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE1e$VqSshO_ptZhxkhtpD3XPtSBa6S1E5nq_Sl43zJl1yJ0n1e$VeciWO_vTBvegrN5P4RmNVtL2vqvlEX-qlU-JmDTbSw1e$VmNArdl2OvrloGTBdXVeG0M5hoNLSXqsjbzSgjwoRuEd1e$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51MX1e$W1aiiITtsLDiX5nskhi49aYcha5Ypc3rc84HsKKOM1Q1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ01e$VT2E2mt6RbAeIZrD4Zq9UAtKv79-fHU1n9svkrvMB9g J2 1e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBs1e$VeEwyyQpe-xIkW4sg6smQOAHEFlWI_7DAQ_AJD4Xw580e$VbbhvClTV3CaE6y-wG2U-h2Ybk_yrVNl5_XQhyUw2KkS1e$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4K1e$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM1e$VV1wjll2qPAmk1okCpfRuieMPsghuSbsVZyPnkVF7gYo1e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s F21e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU g1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W4Y1e$VQgx2aSgaWktgOOkplqV3G_rErpi9wv4cCzXatUbnAM1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUykO1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg401e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj411e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEh1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI 1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcS1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc '1e$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0q1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSYe1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU _ 8l D `8]c!E@anon-20191002_181700-405:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAoQVDYLSWJGF127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-404:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAoQFVVSFPXDR127.0.0.1Perl + Net::Async::HTTP/0.44mr]c!E@anon-20191002_181700-403:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggagoMFLWYWCNCI127.0.0.1Perl + Net::Async::HTTP/0.44m仃 ]c!E@anon-20191002_181700-401:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwoEBUCUMIOWS127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-400:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwoQHUMTZGCNW127.0.0.1Perl + Net::Async::HTTP/0.44mҲȃ ]c!E@anon-20191002_181700-399:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhPS2IuLkFGdERYbU9oWFYKMDAyZnNpZ25hdHVyZSCOE2AU0OhKZpNWr7jY_lUU3qKNoCDD3xhK0-mu5vWzrgoPYXHCRNRQL127.0.0.1Perl + Net::Async::HTTP/0.44mҚ ]c!E@anon-20191002_181700-398:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBsYm87WWFeUDE5ZWdXejMKMDAyZnNpZ25hdHVyZSAxeHzea0AGoDmiMQiBe5qaMiyVYpKxLiGIE8M-BwXxJgoQJTBFOFNHM127.0.0.1Perl + Net::Async::HTTP/0.44mҖ ]c!E@anon-20191002_181700-397:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJPbjF6anM4U04qcmksPUEKMDAyZnNpZ25hdHVyZSDZ_wYXfbZTK12VvytF8s3llWxkE6sifr8UBWo48mXeCQoMUYZSHOUYA127.0.0.1Perl + Net::Async::HTTP/0.44m҂]c!E@anon-20191002_181700-396:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZicitGR3JrQXk4YmR-U1IKMDAyZnNpZ25hdHVyZSA1e_Dnim1NI591ELFalQZbB1ejNxunVj6CP1JlJedEyQoALHPRAAFGP127.0.0.1Perl + Net::Async::HTTP/0.44m}]c!E@anon-20191002_181700-395:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTM5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhLM1gjNGxBO3I0VForUUsKMDAyZnNpZ25hdHVyZSDA0EtgDOtgzuV0x4P_FBaqROkjGib4kOgLNmIpfJKyawoQBHVPKMMWE127.0.0.1Perl + Net::Async::HTTP/0.44md !"+ S { [ d $-U}]f& @Q']e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk ?Q']e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakb>Q# e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.name$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMp=Q? e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibility$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Eh<Q/ e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rules$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMj;Q3 e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q :Q']e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgd9Q' e!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas 8Q']e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA 7Q']e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEb6Q# e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.name$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQp5Q? e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibility$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoh4Q/ e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rules$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcj3Q3 e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w 2Q']e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQd1Q' e!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg 0Q']e!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUb/Q# e!YQATbgbLImCDamiDHC:localhost:8800m.room.name$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgp.Q? e!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibility$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwh-Q/ e!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rules$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fwj,Q3 e!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM +Q']e!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4d*Q' e!YQATbgbLImCDamiDHC:localhost:8800m.room.create$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk )Q']e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk (Q']e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Ab'Q# e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.name$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akp&Q? e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.history_visibility$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYh%Q/ e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.join_rules$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwj$Q3 e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.power_levels$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ #Q']e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-397:localhost:8800$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0d"Q' e!svYOOXWZHtQQzlMcEP:localhost:8800m.room.create$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgp!Q? e!CGckPHdSYcIocFvRAq:localhost:8800m.room.history_visibility$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnYh Q/ e!CGckPHdSYcIocFvRAq:localhost:8800m.room.join_rules$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8  {v&eQay$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2225}{"auth_events": ["$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg"], "prev_events": ["$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg"], "type": "m.room.member", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-397", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-397:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042447418, "hashes": {"sha256": "1+Xtn1pLk6bmRkYtx81VEXxBnEndrgGX6HRaSuxLyZ8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0/+8MZvVXN10QoZHuwhf4Hjj2tl501FZdKg0bMfv6B+NjTzLy3A21zme21BjxKKMixuh0gA4yuFv+bpcKNE1CA"}}, "unsigned": {"age_ts": 1570042447418}}i%eQa_$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2224}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-397:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042446778, "hashes": {"sha256": "/tStrZcYfQkjIJBofsbNuGlJDvhnecfEg2zjnAyCpvs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tjuHvwoP4oVfxuoezjds2sUbFwhhjGdlA/YM/zMMIkw0OxImSmf1Ux5CeVK44GiSHsJUeBUAcutBYtYygIfoDg"}}, "unsigned": {"age_ts": 1570042446778}}$eQm$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "txn_id": "412", "stream_ordering": 2223}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M"], "type": "m.room.message", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"body": "hello2", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042444077, "hashes": {"sha256": "7JMaoQFxaNQ9WdwufyOm9Qj9r1/+kvz4wMy2Ars/YNI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X+MP3BLrszuM3nlAD+9S09ytZ9OCsElNKflCBrhhXWXqEZvdvriug1+BNaspV+A0dB3I7NkyFNikJdq6lezlBA"}}, "unsigned": {"age_ts": 1570042444077}}#eQk$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M!CGckPHdSYcIocFvRAq:localhost:8800{"token_id": 412, "txn_id": "411", "stream_ordering": 2222}{"auth_events": ["$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U", "$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU", "$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"], "prev_events": ["$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY"], "type": "m.room.message", "room_id": "!CGckPHdSYcIocFvRAq:localhost:8800", "sender": "@anon-20191002_181700-395:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042443206, "hashes": {"sha256": "AA+NnvWqndjtMwGAzqmO9hQQi4lXJVqN85RRNrHvSeU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MgYNJAsw+lJXxTZf562rNw2MVWrNPw7hPmo/dZUR71ASF+yHah22mA3IpY/gpVxlHPREddj/hniLvtmoJUijCw"}}, "unsigned": {"age_ts": 1570042443206}} ^WpCT)2~Q$vI i <  \ /  { NT'sF " n A  a 4 f9 cY,xK,Q!LazKtcHZriKzCvvGwV:localhost:8800 A A,Q!LazKtcHZriKzCvvGwV:localhost:8800 @ @,Q!LazKtcHZriKzCvvGwV:localhost:8800 ? ?,Q!LazKtcHZriKzCvvGwV:localhost:8800 > >,Q!LazKtcHZriKzCvvGwV:localhost:8800 = =,Q!LazKtcHZriKzCvvGwV:localhost:8800 < <,Q!LazKtcHZriKzCvvGwV:localhost:8800 ; ;,Q!LazKtcHZriKzCvvGwV:localhost:8800 : :+Q !LazKtcHZriKzCvvGwV:localhost:8800 9 9,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800+Q !NJdkYMskQwIpIWlWkn:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LaLcEGFLpjdlYlYKGC:localhost:8800)Q !LaLcEGFLpjdlYlYKGC:localhost:8800+Q !NPdjmIfsBVIIkvWBzD:localhost:8800__,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800+Q !NNiyzThHMivrxhojfp:localhost:8800,Q!NFWKQvZkIwvecnREOC:localhost:8800SS,Q!NFWKQvZkIwvecnREOC:localhost:8800RR,Q!NFWKQvZkIwvecnREOC:localhost:8800QQ,Q!NFWKQvZkIwvecnREOC:localhost:8800PP,Q!NFWKQvZkIwvecnREOC:localhost:8800OO+Q !NFWKQvZkIwvecnREOC:localhost:8800NN,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MXhwoqNXvexeDDSOZT:localhost:8800 < <,Q!MXhwoqNXvexeDDSOZT:localhost:8800 : :,Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 6,Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 5,Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 4,Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 3,Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 2+Q !MXhwoqNXvexeDDSOZT:localhost:8800 1 1,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 +Q !MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800+Q !MlzmtUYSZOiByAZdKx:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800 ,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800+Q !MWCLSWWGdWcSivNVLI:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800+Q !MBWnwKRwFznvRpAzxr:localhost:8800,Q!LvARVIpJZeRQxbKefX:localhost:8800tt,Q!LvARVIpJZeRQxbKefX:localhost:8800ss,Q!LvARVIpJZeRQxbKefX:localhost:8800rr,Q!LvARVIpJZeRQxbKefX:localhost:8800qq,Q!LvARVIpJZeRQxbKefX:localhost:8800pp+Q !LvARVIpJZeRQxbKefX:localhost:8800oo*Q!LaLcEGFLpjdlYlYKGC:localhost:8800##*Q!LaLcEGFLpjdlYlYKGC:localhost:8800""*Q!LaLcEGFLpjdlYlYKGC:localhost:8800!!*Q!LaLcEGFLpjdlYlYKGC:localhost:8800 *Q!LaLcEGFLpjdlYlYKGC:localhost:8800 ^WpCT)2~Q$vI i <  \ /  { NT'sF " n A  a 4 f9 cY,xK,Q!LazKtcHZriKzCvvGwV:localhost:8800 A A,Q!LazKtcHZriKzCvvGwV:localhost:8800 @ @,Q!LazKtcHZriKzCvvGwV:localhost:8800 ? ?,Q!LazKtcHZriKzCvvGwV:localhost:8800 > >,Q!LazKtcHZriKzCvvGwV:localhost:8800 = =,Q!LazKtcHZriKzCvvGwV:localhost:8800 < <,Q!LazKtcHZriKzCvvGwV:localhost:8800 ; ;,Q!LazKtcHZriKzCvvGwV:localhost:8800 : :+Q !LazKtcHZriKzCvvGwV:localhost:8800 9 9,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800,Q!NJdkYMskQwIpIWlWkn:localhost:8800+Q !NJdkYMskQwIpIWlWkn:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800,Q!LFBhoxJpmBqFrwEzGP:localhost:8800*Q!LaLcEGFLpjdlYlYKGC:localhost:8800)Q !LaLcEGFLpjdlYlYKGC:localhost:8800+Q !NPdjmIfsBVIIkvWBzD:localhost:8800__,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800,Q!NNiyzThHMivrxhojfp:localhost:8800+Q !NNiyzThHMivrxhojfp:localhost:8800,Q!NFWKQvZkIwvecnREOC:localhost:8800SS,Q!NFWKQvZkIwvecnREOC:localhost:8800RR,Q!NFWKQvZkIwvecnREOC:localhost:8800QQ,Q!NFWKQvZkIwvecnREOC:localhost:8800PP,Q!NFWKQvZkIwvecnREOC:localhost:8800OO+Q !NFWKQvZkIwvecnREOC:localhost:8800NN,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MXhwoqNXvexeDDSOZT:localhost:8800 < <,Q!MXhwoqNXvexeDDSOZT:localhost:8800 : :,Q!MXhwoqNXvexeDDSOZT:localhost:8800 6 6,Q!MXhwoqNXvexeDDSOZT:localhost:8800 5 5,Q!MXhwoqNXvexeDDSOZT:localhost:8800 4 4,Q!MXhwoqNXvexeDDSOZT:localhost:8800 3 3,Q!MXhwoqNXvexeDDSOZT:localhost:8800 2 2+Q !MXhwoqNXvexeDDSOZT:localhost:8800 1 1,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MqstbCLZIQFiYNHrqR:localhost:8800 +Q !MqstbCLZIQFiYNHrqR:localhost:8800 ,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800,Q!MlzmtUYSZOiByAZdKx:localhost:8800+Q !MlzmtUYSZOiByAZdKx:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800 ,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800,Q!MWCLSWWGdWcSivNVLI:localhost:8800+Q !MWCLSWWGdWcSivNVLI:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800,Q!MBWnwKRwFznvRpAzxr:localhost:8800+Q !MBWnwKRwFznvRpAzxr:localhost:8800,Q!LvARVIpJZeRQxbKefX:localhost:8800tt,Q!LvARVIpJZeRQxbKefX:localhost:8800ss,Q!LvARVIpJZeRQxbKefX:localhost:8800rr,Q!LvARVIpJZeRQxbKefX:localhost:8800qq,Q!LvARVIpJZeRQxbKefX:localhost:8800pp+Q !LvARVIpJZeRQxbKefX:localhost:8800oo*Q!LaLcEGFLpjdlYlYKGC:localhost:8800##*Q!LaLcEGFLpjdlYlYKGC:localhost:8800""*Q!LaLcEGFLpjdlYlYKGC:localhost:8800!!*Q!LaLcEGFLpjdlYlYKGC:localhost:8800 *Q!LaLcEGFLpjdlYlYKGC:localhost:8800 a} { y w u sqomkigeca~ZeeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~YeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~XeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~WeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~VeeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~UeeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~TeeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~SeeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~ReeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~QeeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800~PeeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800~OeeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~NeeQ$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800~MeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800~LeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~KeeQ$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~JeeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800~IeeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~HeeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~GeeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~FeeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~EeeQ$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~DeeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~CeeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~BeeQ$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~AeeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~@eeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~?eeQ$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800~>eeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0!svYOOXWZHtQQzlMcEP:localhost:8800~=eeQ$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800~<eeQ$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg!svYOOXWZHtQQzlMcEP:localhost:8800 t9r  V :sW;tCm e]]Q=$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE@anon-20191002_181700-419:localhost:8800@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800joinanon-20191002_181700-419Cl e]]Q=$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis@anon-20191002_181700-418:localhost:8800@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800joinanon-20191002_181700-418Ck e]]Q=$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k@anon-20191002_181700-417:localhost:8800@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800joinanon-20191002_181700-417Cj e]]Q=$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY@anon-20191002_181700-416:localhost:8800@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800joinanon-20191002_181700-416Ci e]]Q=$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4@anon-20191002_181700-415:localhost:8800@anon-20191002_181700-415:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800joinanon-20191002_181700-415Ch e]]Q=$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs@anon-20191002_181700-414:localhost:8800@anon-20191002_181700-414:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800joinanon-20191002_181700-414Cg e]]Q=$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s@anon-20191002_181700-413:localhost:8800@anon-20191002_181700-413:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800joinanon-20191002_181700-413Cf e]]Q=$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM@anon-20191002_181700-412:localhost:8800@anon-20191002_181700-412:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800joinanon-20191002_181700-412Ce e]]Q=$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc@anon-20191002_181700-411:localhost:8800@anon-20191002_181700-411:localhost:8800!HXfrGcvJCbRItyQLVE:localhost:8800joinanon-20191002_181700-411Cd e]]Q=$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk@anon-20191002_181700-409:localhost:8800@anon-20191002_181700-409:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800joinanon-20191002_181700-409Cc e]]Q=$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak@anon-20191002_181700-408:localhost:8800@anon-20191002_181700-408:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800joinanon-20191002_181700-408Cb e]]Q=$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg@anon-20191002_181700-407:localhost:8800@anon-20191002_181700-407:localhost:8800!HusOrLtWZTLbmQZxmm:localhost:8800joinanon-20191002_181700-407Ca e]]Q=$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA@anon-20191002_181700-405:localhost:8800@anon-20191002_181700-405:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800joinanon-20191002_181700-405C` e]]Q=$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE@anon-20191002_181700-404:localhost:8800@anon-20191002_181700-404:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800joinanon-20191002_181700-404C_ e]]Q=$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ@anon-20191002_181700-403:localhost:8800@anon-20191002_181700-403:localhost:8800!BpTqIemsWFZIqTcgJO:localhost:8800joinanon-20191002_181700-403C^ e]]Q=$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU@anon-20191002_181700-401:localhost:8800@anon-20191002_181700-401:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800joinanon-20191002_181700-401C] e]]Q=$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4@anon-20191002_181700-400:localhost:8800@anon-20191002_181700-400:localhost:8800!YQATbgbLImCDamiDHC:localhost:8800joinanon-20191002_181700-400C\ e]]Q=$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk@anon-20191002_181700-399:localhost:8800@anon-20191002_181700-399:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800joinanon-20191002_181700-399C[ e]]Q=$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A@anon-20191002_181700-398:localhost:8800@anon-20191002_181700-398:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800joinanon-20191002_181700-398CZ e]]Q=$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0@anon-20191002_181700-397:localhost:8800@anon-20191002_181700-397:localhost:8800!svYOOXWZHtQQzlMcEP:localhost:8800joinanon-20191002_181700-397 I] Rp J  P V 0 \ *   g5b $m;  +%u > C  |8jW  | J D ]1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIl1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 $1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY[1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs %1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIj1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE I1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 20e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoV1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY91e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg v20e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ%1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ"0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEz1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_700e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjkg1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$DzmWyzncLmdHoFTxwKNS2MrQ-KEx8f1TkN1E6e5FX0s1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGsG1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94Ia1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA"1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ5 1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o L1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o ?1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ91e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k "1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE71e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM11e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 &1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio^1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQj1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc o1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc Q1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym41e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs21e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo 1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR41e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIZ21e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI \1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs cd D DH*eQa$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2229}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY"], "type": "m.room.test", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042450859, "hashes": {"sha256": "g53Lk50yq0AMfNfWBITE4y9+NF4Iy07EPVhxQ1156Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y5reL3ATmET6EyWLF8vqQoZhOkpYRne++8GSHjdU/iGq1El/7TZvyYQE+IFwZfOcyhukgG/MDdNt7apoUnesBg"}}, "unsigned": {"age_ts": 1570042450859}})eQa$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2228}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw"], "type": "m.room.history_visibility", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042449446, "hashes": {"sha256": "3d0Pxe5I63GA0S9EQ++vc5dxV1raNvQ/a8CCbR+lNkI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IGWy1KBqxEJ5WPu6DQiiI/kch3Vm0DHZ00iNLO7dr3/MA6+DEGn/1KNnkWnXPZ9u53Bzs2RfPADopmnO0CWcAg"}}, "unsigned": {"age_ts": 1570042449446}}t(eQau$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2227}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ"], "type": "m.room.join_rules", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042448771, "hashes": {"sha256": "0e48M0qwEJdsxXwF7RAgnBsRkSiRVb5SsVcxGJzypdg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "am4vYtruWU+jHiOk0XvUMm7dUJpx7m3LrUHTOladvXkYZHlpnP6EKMrNT7p8xLCWkid+2213UzTPgU2Ou9P/AA"}}, "unsigned": {"age_ts": 1570042448771}}k'eQac$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2226}{"auth_events": ["$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "type": "m.room.power_levels", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"users": {"@anon-20191002_181700-397:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042447955, "hashes": {"sha256": "DpoKVSYERQqAWNSO0cBu5PWZagNV0sh/ZJ/jqQaf5t8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Yl3onaPjZgSyalYcJPcbmy4nSwqIwfFl3MHcszSgh+0jyegjgML/M11kqKRyrswT+O+5VBUzJPVd+7zfoUTCw"}}, "unsigned": {"age_ts": 1570042447955}} yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m^ m m m m  m  m»  m  mӾk  mӻR  mӸ  mӴ  mӲ mӮ"mӫmӨmӦnmӣmӗmӖ)mӓmӑFmӌmӈmӅmӃmm|'myEmvmrmkmimgme3mbm_tm[mXSmVmQzmOKmLHmGmDTm<%m:Km8m6Im3m0m,Sm)m'm"mmmm/m fm mmmmmmmmmYmmimpmӒmmmҿ2mҷPmҴwmҩmmҧ>mҥmҢmҞmқmҘmҕcmғmҎ&mҋm҈Sm҆:m҃my-mumq5mnmkmhqmdWm^mY&mVkmPmNmKqmFmABm=(m9Qm6am1m+m(m$Ym!m,m|mm(mCY * *mAr ) )m;t ( (m8 ' 'm6 & &m3 % %m1/ $ $m)A # #m& " "m%4 ! !m! mK  m  m  m  m&  m  m k  m  m  m  mw  mj  m  m=  m  m  m  m3  m2 mm m mmmmmmm(mdmimVmmmm5mm8mmmcml~~m}}m||ma{{mѾzzmѾ6yymѼxxmѻ1wwmѸ)vvmѸ&uumѳttmѰ!ssmѭ4rrmѪqqmѧppmѣoomџ*nnmќFmmmљvllmїMkkmєljjmюiimщ!hhmцggmуffmс eem}ddmwccmw bbmtyaamp5``ml__mh,^^ma]]mY\\mS[[m:sZZm/6YY Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1ce$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41be$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1ae$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1`e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE1_e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM1^e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1]e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1\e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY1[e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41Ze$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1Ye$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1Xe$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1We$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY~1Ve$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI}1Ue$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs|1Te$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8{1Se$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIz1Re$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXsz1Qe$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNoz1Pe$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcz1Oe$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7sz1Ne$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sz1Me$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMy1Le$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsx1Ke$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8w1Je$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsw1Ie$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsv1He$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUu1Ge$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIct1Fe$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgs1Ee$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMr1De$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMr1Ce$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8cr1Be$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgr1Ae$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAr1@e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkr1?e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakq1>e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMp1=e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbAo1<e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Eo1;e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMn1:e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qm19e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgl18e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aask17e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEj16e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0j15e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBkj14e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAj13e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEi12e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQh11e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08g10e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELog1/e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcf1.e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55we1-e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQd1,e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgc1+e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUb1*e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXga1)e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI`1(e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw`1'e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw_1&e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM^1%e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4]1$e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk\1#e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U[1"e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE[1!e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk[1 e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A[1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8[1e$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk[1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4AZ1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5akY1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMX1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYX1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7IwW ,NC 8 - { " p  e ZOD9.|#qf VTeL$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMsha256( !%xN=\5%|.jVSeL$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMsha256Pq uiU]>5BWzVReL$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8csha256,Kd~O0۟3`M)VQeL$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgsha256-1*N$*S-3S{?ƺ)|(VPeL$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAsha256#d^9ŧÝ?PfA>Lޟ\VOeL$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVksha256+@ .@8*PtgmKGyoYVNeL$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaaksha256,iPÆn!o8~YGE?iVMeL$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMsha256)@/eaH9hVLeL$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbAsha256<z[Ø s ,63]ͰVKeL$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Esha256eU6n=ZH&NqDy{]VJeL$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMsha256vx~hW J0fHRQKuF;RaVIeL$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qsha256Zs? z9 P (ղ@Q@.dVHeL$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgsha256Vnh]}WY.yoX+VGeL$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aassha256A<9>\lL1}VFeL$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEsha256Vwγa|CӦ訚cd]VEeL$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0sha256YOkcQk4te ɚr~Ei>;VDeL$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBksha256Ipfɩšt2jNsdVCeL$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAsha256biBwURjGS !́  VBeL$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEsha256Lw$%v >'gqVAeL$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQsha256sa|hqi.mU5laVX*%J$V@eL$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08sha256`1ԈvD~P-Oz#?OV?eL$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELosha2561a|&Y&yOrXqDZ8`>XV>eL$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcsha256JpQ^m26k'd"h鯔V=eL$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wsha256wپ2rB IoůXV<eL$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQsha256}to 88di]e3?9CV;eL$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgsha2565w@&8hQwF9hV:eL$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUsha2563G ױdrKV_%5V9eL$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgsha256e@2EBʘ&n3hX!MmxV8eL$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIsha256Ƀ(Uɲ ugΰcV1eL$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cEsha256Z!jYV}QԹ}u- n;V0eL$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszksha256aU!RbOFR${$9V/eL$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1Asha256+"" I6v;7\EgPV.eL$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8sha256wpY=EoTrd(GV-eL$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnksha256una]7Hzq ( yV,eL$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Asha256i|:|+I3ʜ |UJ/GV+eL$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5aksha256A '3Dx~=Ū,IrV*eL$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMsha256ɹ{>$,YU[}˟)V)eL$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xYsha256âXc懵āQozk텛6zv P P.eQu$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "413", "stream_ordering": 2233}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 1", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042453708, "hashes": {"sha256": "g6YK6r2Xz5zQKZ+6dAdPG+864o20Ey1ulICt7WfE07g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0jfGmqWy1vTiJreFoPDdqsLZy9Jptufob0LPerY6OeR7g3ns5F7qHXiKfizqsBU26hnkBwMCrmCpn0WxqF6yBw"}}, "unsigned": {"age_ts": 1570042453708}}V-eQa9$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 416, "stream_ordering": 2232}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw"], "prev_events": ["$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "type": "m.room.member", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-399:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-399", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-399:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042452939, "hashes": {"sha256": "97LeFaFjyDm6f1X70z/vwV+VB33szi3eMfwEz2XOhMw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sjFwhZuE9CEaej3yyYsBb9S6KcQTNY5MVZAGVxSa9M7uAjMfOdDmjTKFNohxRoJJRh7buzPrTgb5EkahJcQkAA"}}, "unsigned": {"age_ts": 1570042452939}}V,eQa9$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "stream_ordering": 2231}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iw"], "prev_events": ["$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak"], "type": "m.room.member", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-398", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-398:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042451996, "hashes": {"sha256": "TCf11ECyTaLVYzXzRV48noJEnV2aa1k//rL01N8enBQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UtsmzeIVda9QBDGpWaYGoM/I+HX70SSE5SCVS0SXBHXsRaTeM37b/CUojp2QBaPvVWcn13ZZIZb8S7y8gzsPCw"}}, "unsigned": {"age_ts": 1570042451996}}n+eQai$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 415, "stream_ordering": 2230}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$-qIkfp2k8WCLFJgdfSVhLA02oaNjdhU-qsh7jILGjr0"], "prev_events": ["$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM"], "type": "m.room.name", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-397:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042451299, "hashes": {"sha256": "f6qcdhAWSt2OltMuSpWiSSQ5haz5s7WK1PNF3OQlj5k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7nIt6wTCq61RFeaTkMGqxh9gQnJOWBpeTgNtaUoIfI4f97HLvubJjBKnC2UNbfbVABicIkgnkg2xhsnz/imrAA"}}, "unsigned": {"age_ts": 1570042451299}} {M I,  P   V $ \ *Xb0i7^p> wE}KQ & i7o= v D 1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc &1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o Z1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ P1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 ,1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8 1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE`1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAp1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs1e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYp1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 b1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vki1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0i1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 e1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ"1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg%1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs 81e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI11e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk(1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4}1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4w1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw81e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw(1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngC31e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc c1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMV1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU 1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw (1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk  {M I,  P   V $ \ *Xb0i7^p> wE}KQ & i7o= v D 1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc &1e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o X1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A 1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ P1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8 ,1e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA0e$s3DQk1a-di9VXlOMJpHX8-VZpX4wkcF95ExvGqItuCY1e$s2NA2OKbhqpxPeyBCF7EX8VeXXZzchfilUmT2_HHpVg1e$rzzM1bh3p3Rwn6EZJKW7XT2YXQHK5DmJZ3Kuky9BJVo1e$rx9WqEzfWFkEcK_p3gD_UOkI2PmHgtNufLpQDBvfbrg1e$rvd9iAihaNXVwN60QFKkd_b-ROmKWRRX8bWK5C2UJNs1e$rtxEHAgBx9FpuFFbjV6PqBU1gpfheEUJ_lR0Lpx13x8 1e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$rsH4R7KgFzfRbDmOaBCFE9Eboob83BICsNVf2_h4ka81e$rqH7zemTcADbGu8f0hHctziXcOI7KBEIRYdcoQZYqbE`1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$roOBpFD7qzmoQMOzVZ93jDSsU5qcFV-m8fxf5_SKjt01e$rl8n-dvJuBzKDZUDX6nEUOsIatmtfCN1G9Ixx3O6bTAp1e$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw1e$riIHwd96sMMPGfOQqSS1UNm30AfZThXgCTMTcOqzyjs1e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYp1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 b1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vki1e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0i1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 e1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ"1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg%1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs 81e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI11e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk(1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4}1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4w1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw81e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw(1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJngC31e$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc c1e$sQm-DconfSbQiggk-pKVx-Vkf0WMB7gyG9iwxH6pub40e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluUU1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqMV1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sGT3-7aCOAwBrAWSOTvf7iK4ChsIuCZEy0_ahFTZbGU 1e$sFNE8C3VclREr5x4kEOhmYhyyh7SK8Docew07ZPDvfA1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr01e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw (1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk  "Ss # Q ` i  /$Rfu 3DSaMeQ' $k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create LeQ']$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800 KeQ']$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800_JeQ# $PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.namemIeQ? $b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibilityeHeQ/ $MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rulesgGeQ3 $XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels FeQ']$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800aEeQ' $8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create DeQ']$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800 CeQ']$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800_BeQ# $KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.namemAeQ? $vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibilitye@eQ/ $dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rulesg?eQ3 $WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels >eQ']$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800a=eQ' $Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create <eQ']$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800 ;eQ']$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800_:eQ# $cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.namem9eQ? $1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibilitye8eQ/ $SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rulesg7eQ3 $dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels 6eQ']$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800a5eQ' $np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create 4eQ']$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800_3eQ# $jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800m.room.namem2eQ? $gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibilitye1eQ/ $5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800m.room.join_rulesg0eQ3 $c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800m.room.power_levels /eQ']$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-400:localhost:8800a.eQ' $xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800m.room.create -eQ']$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-399:localhost:8800 ,eQ']$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A!svYOOXWZHtQQzlMcEP:localhost:8800m.room.member@anon-20191002_181700-398:localhost:8800 V&L r  + Q w 0VlOOQ$157004179037FGMFG:localhost:8800$157004178936zuJSX:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800"lOOQ$157004178936zuJSX:localhost:8800$157004178835mLAyG:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800!lOOQ$157004178835mLAyG:localhost:8800$157004178734ZpFdg:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800 lOOQ$157004177433OonrH:localhost:8800$157004177232wsJyW:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800lOOQ$157004177232wsJyW:localhost:8800$157004177131trwoi:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800lOOQ$157004177131trwoi:localhost:8800$157004177030bmvvg:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800lOOQ$157004177030bmvvg:localhost:8800$157004176929ezeJB:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 lOOQ$157004176929ezeJB:localhost:8800$157004176828ZZJWh:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 lOOQ$157004176828ZZJWh:localhost:8800$157004176727QjUJj:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 lOOQ$157004175925JuKDZ:localhost:8800$157004175824dFhko:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175824dFhko:localhost:8800$157004175723CBKAp:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175723CBKAp:localhost:8800$157004175622yCTNM:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175622yCTNM:localhost:8800$157004175621DDceh:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004175621DDceh:localhost:8800$157004175520JddPP:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800lOOQ$157004174718wxlLH:localhost:8800$157004174617osGDW:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800lOOQ$157004174617osGDW:localhost:8800$157004174616PvcHe:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800lOOQ$157004174616PvcHe:localhost:8800$157004174515XsrNb:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800lOOQ$157004174515XsrNb:localhost:8800$157004174414klNmS:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800  w +V:eQa9$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 418, "stream_ordering": 2245}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw"], "prev_events": ["$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg"], "type": "m.room.member", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-401:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-401", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-401:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042468457, "hashes": {"sha256": "I/PLfUpFgZD66jpPhn75L7zFL2ALKYI0Njxirow3eAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HoJ/7/853ZguNrgsZnubwLtyHMHqsl7pWbzl3XAxwTDvMgShH70D8kEX73ALhGU/I44zj2qbVI8mrYozszCiCA"}}, "unsigned": {"age_ts": 1570042468457}}n9eQai$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2244}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI"], "type": "m.room.name", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042467696, "hashes": {"sha256": "vnBtIaCUEdRPUkccP5yGEd1+fyL+0yqooeUsJjzz44E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hFJmbWw1X0HRqgQLGcY4fLuTHoybskPNsEgcrApP3nWC1TiP7b+pkx1rPYqB5x6F/bpomVMMreBB/OqP67vcAA"}}, "unsigned": {"age_ts": 1570042467696}}H8eQa$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2243}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw"], "type": "m.room.test", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042467218, "hashes": {"sha256": "Zs6CfhmXrc2tKnRAG8hg6DS5dmMgIsaVQSt8s/VO/hY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Sd1FbEoNiYtm4mWo81X7PxDSkMol54lCOHzG18TumrsYYqXvFVQR02sgzFyd5/YcKUnqGBbnHNKJcd6Tn5mDA"}}, "unsigned": {"age_ts": 1570042467218}}7eQa$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2242}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw"], "type": "m.room.history_visibility", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042464738, "hashes": {"sha256": "XIpRYST0EHoPVyr+9HUrRjBxKspDcEIuo8g22Zzh3QE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qLtezTPbDq0tTZeIc9qxreH82O9SSuqQh54AvrayLICnIbN2qIpzMLTARAGYNHbMqHTB4ejsYQ182f5C/ob5AQ"}}, "unsigned": {"age_ts": 1570042464738}} Lp? w E  } K  Q  W % ] +c1i7o= uC|JQW%]+j811e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc |1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE 21e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug I1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro N1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc v1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwz1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ.1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c@0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc 91e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkn1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA i1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g >1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY}1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAq1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY `1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg71e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8m1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo%1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIv1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg n1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY R1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI21e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 W1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus01e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy01e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQl1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMz1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQs1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90U1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc#1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg d1e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0>1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs ~z v r n j fb^ZVRNJF eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08!BpTqIemsWFZIqTcgJO:localhost:8800~eeQ$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo!BpTqIemsWFZIqTcgJO:localhost:8800}eeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800|eeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800{eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800zeeQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800yeeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800xeeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI!YQATbgbLImCDamiDHC:localhost:8800weeQ$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw!YQATbgbLImCDamiDHC:localhost:8800veeQ$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800ueeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800teeQ$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800seeQ$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800reeQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800qeeQ$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800peeQ$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800oeeQ$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8!svYOOXWZHtQQzlMcEP:localhost:8800neeQ$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8$-ePHz3XtkNFuE2Fdsjf0SOp6cd_GCw-6KJm2qBMLqnk!svYOOXWZHtQQzlMcEP:localhost:8800  vb2eQu$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "417", "stream_ordering": 2237}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042456429, "hashes": {"sha256": "GdvD2+LzAjhjGil8k6yxedcZx2ZGAcy2orV+YhmFGhM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "35z1rB3OZ2VrraVxZJhvbhshcr68G4+VvHY9tX5Uhksf52Y4tKyBf7pCv0K0StMduD9MHETBMyKV70QSpY62Dg"}}, "unsigned": {"age_ts": 1570042456429}}1eQu$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "416", "stream_ordering": 2236}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042455870, "hashes": {"sha256": "LQ+ebMtYeBr7yAAgUdNBjYiVlt8ACLKebbf2R/prEkE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hqAXqtLMAOmd038Rk9o5a7z0iHAKS76rPfqvKWw1fSNA7q6E/++PpHUICaPypr32Mu3fj6TaKarIf9bm3h65BA"}}, "unsigned": {"age_ts": 1570042455870}}0eQu$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "415", "stream_ordering": 2235}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042455304, "hashes": {"sha256": "8L+CtzZhjKUyFLbCBiOtl1aRHg29A8jZsPGbeGH8DEk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lAyrHFEQKL4rHRG9BqOPzFt4MoMGjaR7FY2IBorcrbGpZXAbUKuAKxgcNciQLOEhyUQoyB2HsR5KCFsP/++WCw"}}, "unsigned": {"age_ts": 1570042455304}}/eQu$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A!svYOOXWZHtQQzlMcEP:localhost:8800{"token_id": 414, "txn_id": "414", "stream_ordering": 2234}{"auth_events": ["$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ", "$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg", "$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A"], "prev_events": ["$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8"], "type": "m.room.message", "room_id": "!svYOOXWZHtQQzlMcEP:localhost:8800", "sender": "@anon-20191002_181700-398:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042454746, "hashes": {"sha256": "oe25u6/Jfr8w0WNxvjXo4blVO1UktywXnVJJHjPa5JA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xdr44hvZY3DWr0nPInK/ofptl8oZn9oRd3sfbZmgXtWmEealtGxKo5xtzCTlJ1aQdglyuuCSDUMwwRm6tPUADg"}}, "unsigned": {"age_ts": 1570042454746}} |[ o ! y ' ?IU h|R e'Q  ]$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aasm.room.create!HusOrLtWZTLbmQZxmm:localhost:8800m/m{@anon-20191002_181700-407:localhost:8800!Qe)Q ] $499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdEm.room.message!BpTqIemsWFZIqTcgJO:localhost:8800 m fm@anon-20191002_181700-404:localhost:8800!Pe)Q ] $_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0m.room.message!BpTqIemsWFZIqTcgJO:localhost:8800 m m @anon-20191002_181700-404:localhost:8800!Oe)Q ] $SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBkm.room.message!BpTqIemsWFZIqTcgJO:localhost:8800 mm@anon-20191002_181700-404:localhost:8800 Ne'Q ] $kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAm.room.member!BpTqIemsWFZIqTcgJO:localhost:8800 mm @anon-20191002_181700-405:localhost:8800 Me'Q ]$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEm.room.member!BpTqIemsWFZIqTcgJO:localhost:8800mm @anon-20191002_181700-404:localhost:8800Le#Q ]$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQm.room.name!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800Ke#Q ]$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g08m.room.test!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800,Je?Q ]$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELom.room.history_visibility!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800$Ie/Q ]$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcm.room.join_rules!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800&He3Q ]$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55wm.room.power_levels!BpTqIemsWFZIqTcgJO:localhost:8800mm @anon-20191002_181700-403:localhost:8800 Ge'Q ]$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQm.room.member!BpTqIemsWFZIqTcgJO:localhost:8800mYm@anon-20191002_181700-403:localhost:8800F e'Q  ]$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWgm.room.create!BpTqIemsWFZIqTcgJO:localhost:8800mm@anon-20191002_181700-403:localhost:8800 Ee'Q ]$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUm.room.member!YQATbgbLImCDamiDHC:localhost:8800mimR@anon-20191002_181700-401:localhost:8800De#Q ]$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgm.room.name!YQATbgbLImCDamiDHC:localhost:8800mpm@anon-20191002_181700-400:localhost:8800Ce#Q ]$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hIm.room.test!YQATbgbLImCDamiDHC:localhost:8800mӒmӕ@anon-20191002_181700-400:localhost:8800,Be?Q ]$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifwm.room.history_visibility!YQATbgbLImCDamiDHC:localhost:8800mm@anon-20191002_181700-400:localhost:8800$Ae/Q ]$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fwm.room.join_rules!YQATbgbLImCDamiDHC:localhost:8800mm3@anon-20191002_181700-400:localhost:8800&@e3Q ]$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoMm.room.power_levels!YQATbgbLImCDamiDHC:localhost:8800mҿ2m{@anon-20191002_181700-400:localhost:8800 ?e'Q ]$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4m.room.member!YQATbgbLImCDamiDHC:localhost:8800mҷPmҷ@anon-20191002_181700-400:localhost:8800> e'Q  ]$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekkm.room.create!YQATbgbLImCDamiDHC:localhost:8800mҴwmҴ@anon-20191002_181700-400:localhost:8800!=e)Q ]$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-Um.room.message!svYOOXWZHtQQzlMcEP:localhost:8800mҩmmҩv@anon-20191002_181700-398:localhost:8800!<e)Q ] $8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cEm.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҧ>mҧD@anon-20191002_181700-398:localhost:8800!;e)Q ] $o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszkm.room.message!svYOOXWZHtQQzlMcEP:localhost:8800 mҥmҥ@anon-20191002_181700-398:localhost:8800 Lf: T& R $ nR$l>Lf8U ) @  Z ,  t F   ` 2 zzLxJd6 -]@anon-20191002_181700-523:localhost:8800-]@anon-20191002_181700-488:localhost:8800-]@anon-20191002_181700-478:localhost:8800-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-486:localhost:8800-]@anon-20191002_181700-484:localhost:8800-]@anon-20191002_181700-482:localhost:8800-]@anon-20191002_181700-480:localhost:8800-]@anon-20191002_181700-479:localhost:8800-]@anon-20191002_181700-477:localhost:8800-]@anon-20191002_181700-476:localhost:8800-]@anon-20191002_181700-475:localhost:8800-]@anon-20191002_181700-473:localhost:8800-]@anon-20191002_181700-471:localhost:8800-]@anon-20191002_181700-469:localhost:8800+[@anon-20191002_181700-51:localhost:8800H+[@anon-20191002_181700-50:localhost:8800G*Y@anon-20191002_181700-4:localhost:8800+[@anon-20191002_181700-49:localhost:8800F+[@anon-20191002_181700-48:localhost:8800E+[@anon-20191002_181700-47:localhost:8800C+[@anon-20191002_181700-46:localhost:8800B -]@anon-20191002_181700-447:localhost:8800-]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-444:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-441:localhost:8800-]@anon-20191002_181700-440:localhost:8800+[@anon-20191002_181700-43:localhost:8800?-]@anon-20191002_181700-439:localhost:8800-]@anon-20191002_181700-529:localhost:8800-]@anon-20191002_181700-527:localhost:8800-]@anon-20191002_181700-526:localhost:8800-]@anon-20191002_181700-525:localhost:8800-]@anon-20191002_181700-524:localhost:8800-]@anon-20191002_181700-521:localhost:8800-]@anon-20191002_181700-520:localhost:8800-]@anon-20191002_181700-518:localhost:8800-]@anon-20191002_181700-516:localhost:8800-]@anon-20191002_181700-514:localhost:8800-]@anon-20191002_181700-512:localhost:8800-]@anon-20191002_181700-510:localhost:8800 -]@anon-20191002_181700-509:localhost:8800 -]@anon-20191002_181700-508:localhost:8800 -]@anon-20191002_181700-507:localhost:8800 -]@anon-20191002_181700-506:localhost:8800 -]@anon-20191002_181700-505:localhost:8800-]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800-]@anon-20191002_181700-490:localhost:8800+[@anon-20191002_181700-45:localhost:8800A-]@anon-20191002_181700-458:localhost:8800-]@anon-20191002_181700-456:localhost:8800-]@anon-20191002_181700-454:localhost:8800-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-450:localhost:8800+[@anon-20191002_181700-44:localhost:8800@-]@anon-20191002_181700-449:localhost:8800-]@anon-20191002_181700-448:localhost:8800-]@anon-20191002_181700-531:localhost:8800+[@anon-20191002_181700-52:localhost:8800I Lf: T& R $ nR$l>Lf8U ) @  Z ,  t F   ` 2 zzLxJd6 -]@anon-20191002_181700-523:localhost:8800-]@anon-20191002_181700-488:localhost:8800-]@anon-20191002_181700-478:localhost:8800-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-486:localhost:8800-]@anon-20191002_181700-484:localhost:8800-]@anon-20191002_181700-482:localhost:8800-]@anon-20191002_181700-480:localhost:8800-]@anon-20191002_181700-479:localhost:8800-]@anon-20191002_181700-477:localhost:8800-]@anon-20191002_181700-476:localhost:8800-]@anon-20191002_181700-475:localhost:8800-]@anon-20191002_181700-473:localhost:8800-]@anon-20191002_181700-471:localhost:8800-]@anon-20191002_181700-469:localhost:8800+[@anon-20191002_181700-51:localhost:8800H+[@anon-20191002_181700-50:localhost:8800G*Y@anon-20191002_181700-4:localhost:8800+[@anon-20191002_181700-49:localhost:8800F+[@anon-20191002_181700-48:localhost:8800E+[@anon-20191002_181700-47:localhost:8800C+[@anon-20191002_181700-46:localhost:8800B -]@anon-20191002_181700-447:localhost:8800-]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-445:localhost:8800-]@anon-20191002_181700-444:localhost:8800-]@anon-20191002_181700-443:localhost:8800-]@anon-20191002_181700-442:localhost:8800-]@anon-20191002_181700-441:localhost:8800-]@anon-20191002_181700-440:localhost:8800+[@anon-20191002_181700-43:localhost:8800?-]@anon-20191002_181700-439:localhost:8800-]@anon-20191002_181700-529:localhost:8800-]@anon-20191002_181700-527:localhost:8800-]@anon-20191002_181700-526:localhost:8800-]@anon-20191002_181700-525:localhost:8800-]@anon-20191002_181700-524:localhost:8800-]@anon-20191002_181700-521:localhost:8800-]@anon-20191002_181700-520:localhost:8800-]@anon-20191002_181700-518:localhost:8800-]@anon-20191002_181700-516:localhost:8800-]@anon-20191002_181700-514:localhost:8800-]@anon-20191002_181700-512:localhost:8800-]@anon-20191002_181700-510:localhost:8800 -]@anon-20191002_181700-509:localhost:8800 -]@anon-20191002_181700-508:localhost:8800 -]@anon-20191002_181700-507:localhost:8800 -]@anon-20191002_181700-506:localhost:8800 -]@anon-20191002_181700-505:localhost:8800-]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800-]@anon-20191002_181700-490:localhost:8800+[@anon-20191002_181700-45:localhost:8800A-]@anon-20191002_181700-458:localhost:8800-]@anon-20191002_181700-456:localhost:8800-]@anon-20191002_181700-454:localhost:8800-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-450:localhost:8800+[@anon-20191002_181700-44:localhost:8800@-]@anon-20191002_181700-449:localhost:8800-]@anon-20191002_181700-448:localhost:8800-]@anon-20191002_181700-531:localhost:8800+[@anon-20191002_181700-52:localhost:8800I g * T~=gg"]!c@anon-20191002_181700-410:localhost:8800UDEVOELNMKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTQmFTQF9xWmYxSks7SjsKMDAyZnNpZ25hdHVyZSA4-gzkLZKYXLB46g30xrx2tIZN_FnuhyntWJJRBiVylQog!]!c@anon-20191002_181700-409:localhost:8800GINWCFSINTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8wog ]!c@anon-20191002_181700-408:localhost:8800XKDKZYMRFBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQog]!c@anon-20191002_181700-407:localhost:8800RTGALMPCLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwog]!c@anon-20191002_181700-406:localhost:8800TSQHBFVCGUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ-UHZ1OGYrSF5vamxtST0KMDAyZnNpZ25hdHVyZSByyqu_00ypE6JP2NuI0vdtntNW8bwA8GIuJndn3cBSyAog]!c@anon-20191002_181700-405:localhost:8800QVDYLSWJGFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAog]!c@anon-20191002_181700-404:localhost:8800QFVVSFPXDRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAog]!c@anon-20191002_181700-403:localhost:8800MFLWYWCNCIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggagog]!c@anon-20191002_181700-402:localhost:8800RGMKVZWLLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlMeTIuVWdTdTpEKzFmLloKMDAyZnNpZ25hdHVyZSBbuaigjRLKzptcrlgAHJJ5r_SxDpA6cZWDs2LWx5spbwog]!c@anon-20191002_181700-401:localhost:8800EBUCUMIOWSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwog]!c@anon-20191002_181700-400:localhost:8800QHUMTZGCNWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwo >Mj1\#x? [ " w >  \ # z A  ] $|C _&}D d+GMk28]!@anon-20191002_181700-526:localhost:8800CNSENJMXXV8]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC1[@anon-20191002_181700-44:localhost:8800xyzzyJ8]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8]!@anon-20191002_181700-525:localhost:8800DQXQXDJYET8]!@anon-20191002_181700-524:localhost:8800IVEUVINDHF8]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLH8]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOV8]!@anon-20191002_181700-520:localhost:8800LGMWFFKPIS6[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPR6[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDQ8]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWN8]!@anon-20191002_181700-516:localhost:8800DBXNPICYFO8]!@anon-20191002_181700-514:localhost:8800LBNXTFJTIT8]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHY8]!@anon-20191002_181700-510:localhost:8800TMGCAARJXM6[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXP8]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEU8]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOH8]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQA8]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!@anon-20191002_181700-501:localhost:8800YBYGOFEONK5Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVL8]!@anon-20191002_181700-499:localhost:8800VXSECXNERA8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSC8]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ8]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]!@anon-20191002_181700-493:localhost:8800GRPWUCANVU8]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU6[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWO8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ8]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS6[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLUL8]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH8]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ8]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]!@anon-20191002_181700-462:localhost:8800SKOLIDFQEN8]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZU8]!@anon-20191002_181700-460:localhost:8800GJEFYISBJP1[@anon-20191002_181700-45:localhost:8800xyzzyK8]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSG   *t6eQau$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2241}{"auth_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM", "$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM"], "type": "m.room.join_rules", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042463746, "hashes": {"sha256": "vHByQho/P3ADOcNxqUXpUDJU3/I20pTJznwKy9r3tOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rms691EjXpVwQ4PF4YlZ7eI4J8Bz+r6Ds8PT3QoOE+InBLBeCGBQ0eEovDoPtcJsQn4ufOC4N10DUvZOtadXDw"}}, "unsigned": {"age_ts": 1570042463746}}k5eQac$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2240}{"auth_events": ["$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk", "$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "prev_events": ["$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4"], "type": "m.room.power_levels", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"users": {"@anon-20191002_181700-400:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042462002, "hashes": {"sha256": "oKwCw+bvkWMUzKiUcprT7sq25QYdcbq+qpGicwbgbkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7kQbjVPGRnCCsYQFERVGEGxU/QhUTnW2c9Bt6WL9vUzBTrUqRWoF8rDqZAKbsDiDD9egSNJfBvqvhHD0UOCZAQ"}}, "unsigned": {"age_ts": 1570042462002}}v4eQay$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2239}{"auth_events": ["$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk"], "prev_events": ["$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk"], "type": "m.room.member", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-400", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-400:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042459984, "hashes": {"sha256": "gadrMirt2/ebRVbkMOr68xe23baPZgENgOpknHlfLKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WcDH4Hjev+6uLxGO/YiUTW5vnqLbd1pPp/Zb3HOK3HtKpq9PGJJcgqasLKsDDk+bE3Vc5Ru7qcBnNU12X4xrCQ"}}, "unsigned": {"age_ts": 1570042459984}}i3eQa_$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800{"token_id": 417, "stream_ordering": 2238}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YQATbgbLImCDamiDHC:localhost:8800", "sender": "@anon-20191002_181700-400:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-400:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042459255, "hashes": {"sha256": "yBJTSl89ENAtLjPcv0mnBZ2YEJcM3QOG7ttfM2JbJoQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jr+/8Cg8TFnvT5w+7RBNo9Tt0dQj5UCadvW8OQ0txvm8xU2gVZ8rOC3bgYu/VV/2NapKyDc3goKDn6lsKNgUAA"}}, "unsigned": {"age_ts": 1570042459255}}  4m9  hd]c@anon-20191002_181700-407:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwo127.0.0.1d]c@anon-20191002_181700-409:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8wo127.0.0.1d]c@anon-20191002_181700-413:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9wo127.0.0.1d]c@anon-20191002_181700-411:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAo127.0.0.1a[a@anon-20191002_181700-40:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gX0ZsT2FNZiZrNXNfOGtPNAowMDJmc2lnbmF0dXJlIJNqzbEWoj9JkOWbaVGh5QZZNW-AjkyuhNXrGQdVqviaCg127.0.0.1!d]c@anon-20191002_181700-412:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwo127.0.0.1d]c@anon-20191002_181700-415:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAo127.0.0.1d]c@anon-20191002_181700-414:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgo127.0.0.1d]c@anon-20191002_181700-408:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQo127.0.0.1d]c@anon-20191002_181700-416:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQo127.0.0.1 !*5 : ^ k v { ;(R|^i!aQ# e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.name$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcoQ? e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibility$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgg Q/ e~!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rules$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYi Q3 e}!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI Q']e|!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsc Q' e{!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8 Q']ez!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s Q']ey!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMaQ# ex!HXfrGcvJCbRItyQLVE:localhost:8800m.room.name$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsoQ? ew!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibility$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsgQ/ ev!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rules$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsiQ3 eu!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU Q']et!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIccQ' es!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg Q']er!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk Q']eq!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakaQ# ep!HusOrLtWZTLbmQZxmm:localhost:8800m.room.name$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMo~Q? eo!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibility$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Eg}Q/ en!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rules$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMi|Q3 em!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q {Q']el!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-407:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgczQ' ek!HusOrLtWZTLbmQZxmm:localhost:8800m.room.create$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas yQ']ej!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-405:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA xQ']ei!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-404:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHEawQ# eh!BpTqIemsWFZIqTcgJO:localhost:8800m.room.name$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQovQ? eg!BpTqIemsWFZIqTcgJO:localhost:8800m.room.history_visibility$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELoguQ/ ef!BpTqIemsWFZIqTcgJO:localhost:8800m.room.join_rules$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLcitQ3 ee!BpTqIemsWFZIqTcgJO:localhost:8800m.room.power_levels$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w sQ']ed!BpTqIemsWFZIqTcgJO:localhost:8800m.room.member@anon-20191002_181700-403:localhost:8800$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQcrQ' ec!BpTqIemsWFZIqTcgJO:localhost:8800m.room.create$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg qQ']eb!YQATbgbLImCDamiDHC:localhost:8800m.room.member@anon-20191002_181700-401:localhost:8800$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjUapQ# ea!YQATbgbLImCDamiDHC:localhost:8800m.room.name$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXgooQ? e`!YQATbgbLImCDamiDHC:localhost:8800m.room.history_visibility$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw a} { y w u sqomkigeca~yeeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~xeeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~weeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800~veeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~ueeQ$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~teeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800~seeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~reeQ$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~qeeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800~peeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~oeeQ$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~neeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800~meeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~leeQ$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~keeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800~jeeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~ieeQ$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~heeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~geeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~feeQ$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~eeeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~deeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~ceeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~beeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~aeeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~`eeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800~_eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800~^eeQ$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~]eeQ$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800~\eeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw!YQATbgbLImCDamiDHC:localhost:8800~[eeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk!YQATbgbLImCDamiDHC:localhost:8800 B@tA e0`- _ , \ ' W $ V # S N~M}JzE@uwD n;@m4]@anon-20191002_181700-491:localhost:8800m2]@anon-20191002_181700-492:localhost:8800a2]@anon-20191002_181700-491:localhost:8800a0[@anon-20191002_181700-44:localhost:8800a\4]@anon-20191002_181700-449:localhost:8800mV2]@anon-20191002_181700-449:localhost:8800aS4]@anon-20191002_181700-448:localhost:8800mU2]@anon-20191002_181700-448:localhost:8800aT4]@anon-20191002_181700-447:localhost:8800mRf4]@anon-20191002_181700-492:localhost:8800m4]@anon-20191002_181700-490:localhost:8800m2]@anon-20191002_181700-490:localhost:8800a0[@anon-20191002_181700-48:localhost:8800aa4]@anon-20191002_181700-488:localhost:8800m2]@anon-20191002_181700-488:localhost:8800a4]@anon-20191002_181700-486:localhost:8800m2]@anon-20191002_181700-486:localhost:8800a4]@anon-20191002_181700-484:localhost:8800m2]@anon-20191002_181700-484:localhost:8800a4]@anon-20191002_181700-482:localhost:8800m2]@anon-20191002_181700-482:localhost:8800a4]@anon-20191002_181700-480:localhost:8800m2]@anon-20191002_181700-480:localhost:8800a0[@anon-20191002_181700-47:localhost:8800a_4]@anon-20191002_181700-479:localhost:8800m~2]@anon-20191002_181700-479:localhost:8800a|4]@anon-20191002_181700-478:localhost:8800m}2]@anon-20191002_181700-478:localhost:8800a{4]@anon-20191002_181700-477:localhost:8800mz2]@anon-20191002_181700-477:localhost:8800ax4]@anon-20191002_181700-476:localhost:8800my2]@anon-20191002_181700-476:localhost:8800aw4]@anon-20191002_181700-475:localhost:8800mv2]@anon-20191002_181700-475:localhost:8800au4]@anon-20191002_181700-473:localhost:8800mt2]@anon-20191002_181700-473:localhost:8800as4]@anon-20191002_181700-471:localhost:8800mr2]@anon-20191002_181700-471:localhost:8800aq0[@anon-20191002_181700-46:localhost:8800a^4]@anon-20191002_181700-469:localhost:8800mp2]@anon-20191002_181700-469:localhost:8800ao4]@anon-20191002_181700-467:localhost:8800mn2]@anon-20191002_181700-467:localhost:8800am4]@anon-20191002_181700-465:localhost:8800ml2]@anon-20191002_181700-465:localhost:8800ak4]@anon-20191002_181700-464:localhost:8800mj2]@anon-20191002_181700-464:localhost:8800ah4]@anon-20191002_181700-463:localhost:8800mi2]@anon-20191002_181700-463:localhost:8800ag4]@anon-20191002_181700-462:localhost:8800mf2]@anon-20191002_181700-462:localhost:8800ad4]@anon-20191002_181700-461:localhost:8800me2]@anon-20191002_181700-461:localhost:8800ac4]@anon-20191002_181700-460:localhost:8800mb2]@anon-20191002_181700-460:localhost:8800aa0[@anon-20191002_181700-45:localhost:8800a]4]@anon-20191002_181700-458:localhost:8800m`2]@anon-20191002_181700-458:localhost:8800a_4]@anon-20191002_181700-456:localhost:8800m^2]@anon-20191002_181700-456:localhost:8800a]4]@anon-20191002_181700-454:localhost:8800m\2]@anon-20191002_181700-454:localhost:8800a[4]@anon-20191002_181700-452:localhost:8800mZ2]@anon-20191002_181700-452:localhost:8800aY4]@anon-20191002_181700-450:localhost:8800mX2]@anon-20191002_181700-450:localhost:8800aW   *t>eQau$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2249}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w"], "type": "m.room.join_rules", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042474233, "hashes": {"sha256": "EPnz2e7DuWMIs3iIZf/DXLCbMokD2GzAUiLbVu7krZA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4iUwTOmVEzf3S6/tl3TopyLELXCBzQMSLCA8qJXQN52zLFr3z0Bnr+IJ2dHvw2MkJrAwZqlOwcgxVgEx9e8RBQ"}}, "unsigned": {"age_ts": 1570042474233}}k=eQac$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2248}{"auth_events": ["$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "prev_events": ["$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ"], "type": "m.room.power_levels", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"users": {"@anon-20191002_181700-403:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042473142, "hashes": {"sha256": "oTE5fgRYiJ1ZglZolMscZAL/aaL7xm5WEZmNAJgQ0Rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qB7EHanVfS59Y5BijVrnCcOxdj/fEJmLq4Pmb9QCkj9ktiB8aCBB6SzCJztjvF9K34xcl8hSUJfL2//ZF7ZAAA"}}, "unsigned": {"age_ts": 1570042473142}}v<eQay$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2247}{"auth_events": ["$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg"], "prev_events": ["$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg"], "type": "m.room.member", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-403", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-403:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042472537, "hashes": {"sha256": "p1KkcROP3H36DU/QY2kViTLM8e2qZF0Yb70s7popZss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hVgbAz8vIvY15cBR7EXw5A/9P67/NBR//MaPBFhcw9oG+lv7qYmCLRDy6b3Bcm/lWhaN8tmnq3WmMUeLp9JhDA"}}, "unsigned": {"age_ts": 1570042472537}}i;eQa_$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 420, "stream_ordering": 2246}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-403:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-403:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042471857, "hashes": {"sha256": "3A/IfUkueCrrVo0LQBE8BClkFRTI78ypl/5Lmau6R0k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pje/qsUgoMxUBeEBZSc0B3BMpJJslQ/K86g+75OyspaNh+zcTjsfW9+GyA1yPEwwyDSVP1HnW6nYdNTIq2DUDg"}}, "unsigned": {"age_ts": 1570042471857}} 6g #`)LQ [ *  * eH q:Cm6 { 3  Q^Q']^Q']!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800  6Q' !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.create<Q3 !GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels <Q3 !GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levelsV 7:Q/ !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.join_rulesBQ? !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.history_visibility6Q' !HAFNBarGuVZuWCgwWM:localhost:8800m.room.create<Q3 !GwXGurbyEmykmmHcHJ:localhost:8800m.room.power_levels^Q']!GwXGurbyEmykmmHcHJ:localhost:8800m.room.member@anon-20191002_181700-124:localhost:8800:Q/ !GwXGurbyEmykmmHcHJ:localhost:8800m.room.join_rulesBQ? !GwXGurbyEmykmmHcHJ:localhost:8800m.room.history_visibility6Q' !GwXGurbyEmykmmHcHJ:localhost:8800m.room.create;Q3 !GixhPUMvtKSWoKRgvw:localhost:8800m.room.power_levels-\Q'[!GixhPUMvtKSWoKRgvw:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800,9Q/ !GixhPUMvtKSWoKRgvw:localhost:8800m.room.join_rules.AQ? !GixhPUMvtKSWoKRgvw:localhost:8800m.room.history_visibility/5Q' !GixhPUMvtKSWoKRgvw:localhost:8800m.room.create+CQ?!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.third_party_invite4<Q3 !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.power_levels^Q']!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-148:localhost:8829^Q']!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-147:localhost:8829^Q']!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.member@anon-20191002_181700-146:localhost:8800:Q/ !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.join_rulesBQ? !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.history_visibility6Q' !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.create ?Q9 !GiSxJsKZhQVHBkrVPn:localhost:8800m.room.canonical_aliasEQ))!GiSxJsKZhQVHBkrVPn:localhost:8800m.room.aliaseslocalhost:8800<Q3 !GgUNbVXspVTpOlaHBl:localhost:8800m.room.power_levels^Q']!GgUNbVXspVTpOlaHBl:localhost:8800m.room.member@anon-20191002_181700-114:localhost:8800:Q/ !GgUNbVXspVTpOlaHBl:localhost:8800m.room.join_rulesBQ? !GgUNbVXspVTpOlaHBl:localhost:8800m.room.history_visibility6Q' !GgUNbVXspVTpOlaHBl:localhost:8800m.room.create 8_<Q3 !GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_access BQ? !GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibility :Q/ !GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rules ^Q']!HOPyhZPcKkrvSmDIvX:localhost:8800m.room.member@anon-20191002_181700-326:localhost:88006Q' !GsjDgpaxdwYfnefiWO:localhost:8800m.room.create BQ? !GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibility :Q/ !GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rules <Q3 !GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels ^Q']!GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800 6Q' !GwLdUoDplyVUogXDzu:localhost:8800m.room.create _<Q3 !HIZTeBCxvpMSpcqGVD:localhost:8800m.room.power_levels;^Q']!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@anon-20191002_181700-160:localhost:8800:GQ'/!HIZTeBCxvpMSpcqGVD:localhost:8800m.room.member@2:localhost:8800?:Q/ !HIZTeBCxvpMSpcqGVD:localhost:8800m.room.join_rules6Q' !HIZTeBCxvpMSpcqGVD:localhost:8800m.room.create9<Q3 !HAFNBarGuVZuWCgwWM:localhost:8800m.room.power_levels]Q'[!HAFNBarGuVZuWCgwWM:localhost:8800m.room.member@anon-20191002_181700-89:localhost:8800:Q/ !HAFNBarGuVZuWCgwWM:localhost:8800m.room.join_rulesBQ? !HAFNBarGuVZuWCgwWM:localhost:8800m.room.history_visibility<Q3 !HAFNBarGuVZuWCgwWM:localhost:8800m.room.guest_access= >H |NzH JT   P  V $ \Z * b0"jh6( vn<  t DB p>H v1e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY u1e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY ,1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc 1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk 1e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE 1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLig1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU 1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY 1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0-1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ +1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw11e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA31e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gh1e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi601e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQY1e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q1e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1o1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8r1e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU21e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMc1e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIg1e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ)1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-81e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEE1e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMc1e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIx1e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBk1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gg1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM|1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHsR1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0m1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8+1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY31e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k 1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et41e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD81e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd41e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcT1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo:1e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYW1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw51e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8n1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo.1e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk ,1e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU1e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y o1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE c S X -  V +  T )' {}R'{P%yN#oDRwL!uJqFsH P % y N # IOT:locaslo*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 G G*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 F F*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 E E*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 D D*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 C C*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 B B*Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800  *Q!PHkVrXAyfGkFtzSagu:localhost:8800 *Q!PHkVrXAyfGkFtzSagu:localhost:8800 *Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PCgUmZOwWmtDsuFqXg:localhost:8800,,*Q!PCgUmZOwWmtDsuFqXg:localhost:8800***Q!PCgUmZOwWmtDsuFqXg:localhost:8800''*Q!PCgUmZOwWmtDsuFqXg:localhost:8800$$*Q!PCgUmZOwWmtDsuFqXg:localhost:8800!!*Q!PCgUmZOwWmtDsuFqXg:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OMkiVTuuOEeiFAXtUY:localhost:8800[[*Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ*Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY*Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX}*Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OXpGdKbowFUTChPdmF:localhost:8800 *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 I I-*Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 H H M t  H P   V % ] +co2  z=l:_jY8'-  SrA yG B!M1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYe1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI 1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQA1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg ~1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qc1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8{1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcb1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0_1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQk1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY0 1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0Z1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcA1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olwt1e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikD1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QY1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQi1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw|1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAt1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8)1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlMa1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw*1e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM11e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s V1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc d1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc 31e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs l1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew ]1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo Z1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI F1e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8d1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 {1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs w1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m81e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y -RM H C > 9 4/*|%w rmhc T5Qe!rWGwSSefrZzQYCYFHs:localhost:8800$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEMT4Qe!rWGwSSefrZzQYCYFHs:localhost:8800$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNoT3Qe!rWGwSSefrZzQYCYFHs:localhost:8800$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIT2Qe!rWGwSSefrZzQYCYFHs:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYT1Qe!rWGwSSefrZzQYCYFHs:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4T0Qe!rWGwSSefrZzQYCYFHs:localhost:8800$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcT/Qe!rWGwSSefrZzQYCYFHs:localhost:8800$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9KwgT.Qe!rWGwSSefrZzQYCYFHs:localhost:8800$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgT-Qe!rWGwSSefrZzQYCYFHs:localhost:8800$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYT,Qe!rWGwSSefrZzQYCYFHs:localhost:8800$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIT+Qe!rWGwSSefrZzQYCYFHs:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsT*Qe!rWGwSSefrZzQYCYFHs:localhost:8800$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8T)Qe!HXfrGcvJCbRItyQLVE:localhost:8800$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIT(Qe!HXfrGcvJCbRItyQLVE:localhost:8800$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXsT'Qe!HXfrGcvJCbRItyQLVE:localhost:8800$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNoT&Qe!HXfrGcvJCbRItyQLVE:localhost:8800$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcT%Qe!HXfrGcvJCbRItyQLVE:localhost:8800$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7sT$Qe!HXfrGcvJCbRItyQLVE:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sT#Qe!HXfrGcvJCbRItyQLVE:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMT"Qe!HXfrGcvJCbRItyQLVE:localhost:8800$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsT!Qe!HXfrGcvJCbRItyQLVE:localhost:8800$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8T Qe!HXfrGcvJCbRItyQLVE:localhost:8800$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsTQe!HXfrGcvJCbRItyQLVE:localhost:8800$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsTQe!HXfrGcvJCbRItyQLVE:localhost:8800$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUTQe!HXfrGcvJCbRItyQLVE:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcTQe!HXfrGcvJCbRItyQLVE:localhost:8800$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgTQe!HusOrLtWZTLbmQZxmm:localhost:8800$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8cTQe!HusOrLtWZTLbmQZxmm:localhost:8800$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgTQe!HusOrLtWZTLbmQZxmm:localhost:8800$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKATQe!HusOrLtWZTLbmQZxmm:localhost:8800$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkTQe!HusOrLtWZTLbmQZxmm:localhost:8800$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakTQe!HusOrLtWZTLbmQZxmm:localhost:8800$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbATQe!HusOrLtWZTLbmQZxmm:localhost:8800$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4ETQe!HusOrLtWZTLbmQZxmm:localhost:8800$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMTQe!HusOrLtWZTLbmQZxmm:localhost:8800$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2QTQe!HusOrLtWZTLbmQZxmm:localhost:8800$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgTQe!HusOrLtWZTLbmQZxmm:localhost:8800$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9AasT Qe!BpTqIemsWFZIqTcgJO:localhost:8800$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdET Qe!BpTqIemsWFZIqTcgJO:localhost:8800$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0T Qe!BpTqIemsWFZIqTcgJO:localhost:8800$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBkT Qe!BpTqIemsWFZIqTcgJO:localhost:8800$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAT Qe!BpTqIemsWFZIqTcgJO:localhost:8800$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE (ZwO ` 8  p 0 X1  H  ' kD x }U-X    Hh@zR +g? @ c; `8 p H  x('Q!coGyOAgYnlBZAqznax:localhost:8800M'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:8800d&Q!fJXiUpbbOlLbHWmPgs:localhost:8800c&Q!eySSVuCclRpBDgwKIU:localhost:8800f&Q!eySSVuCclRpBDgwKIU:localhost:8800e'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800N'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800 'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:88000'Q!egbhiBqOGhloZzopol:localhost:8800/'Q!egbhiBqOGhloZzopol:localhost:8800.'Q!egbhiBqOGhloZzopol:localhost:8800-&Q!egCvzKpbEwmuvDoBTb:localhost:8800_&Q!egCvzKpbEwmuvDoBTb:localhost:8800^&Q!egCvzKpbEwmuvDoBTb:localhost:8800]&Q!edbUkYJIZBNOiTuLJs:localhost:8800j&Q!edbUkYJIZBNOiTuLJs:localhost:8800i'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eLsrBEnrHolwCNgkFW:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800n&Q!eKrOqiOabJcMgIJjwC:localhost:8800m'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:88006&Q!duCKuavMBSfRbTFPsc:localhost:88005&Q!duCKuavMBSfRbTFPsc:localhost:88004'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800&&Q!cosGKKhHvKaVukBCic:localhost:8800%&Q!cSUQGmpIsSCBAVTOHo:localhost:8800U'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800R'Q!eGEEtFXUXuZDImkeql:localhost:8800T'Q!eZjhYVNpwdogVDKHCk:localhost:8800c'Q!cOFSwLSkxZECJMvjjZ:localhost:8800W'Q!cOFSwLSkxZECJMvjjZ:localhost:8800V'Q!eGEEtFXUXuZDImkeql:localhost:8800U'Q!cGkVFpidyBBxUxsszG:localhost:8800@'Q!bzPCFeFSMbCESvNbxl:localhost:8800<'Q!bzPCFeFSMbCESvNbxl:localhost:8800;'Q!bzPCFeFSMbCESvNbxl:localhost:8800:'Q!bzPCFeFSMbCESvNbxl:localhost:88009'Q!bzPCFeFSMbCESvNbxl:localhost:88008'Q!bzPCFeFSMbCESvNbxl:localhost:88007'Q!bzPCFeFSMbCESvNbxl:localhost:88006'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 hP'Q!cvXpMzcxNNhsNttxvt:localhost:8800o'Q!eZjhYVNpwdogVDKHCk:localhost:8800d'Q!cidyuyekVzJHHvyomb:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800~'Q!fGkUEndqGrieltwbCh:localhost:8800p'Q!fGkUEndqGrieltwbCh:localhost:8800o ('Q!fDISaqNBhlOwherxSt:localhost:8800p('Q!dvZnfJonDkxlrrDXUk:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800O'Q!cGkVFpidyBBxUxsszG:localhost:8800A'Q!cGkVFpidyBBxUxsszG:localhost:8800B'Q!eGEEtFXUXuZDImkeql:localhost:8800S'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800P'Q!fuHSJcznvGQnoYoLPW:localhost:8800f'Q!fsbkkRBZlUcBVVfMME:localhost:8800='Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800G'Q!ffijTnPMbTrDXHqOXf:localhost:8800F'Q!ffijTnPMbTrDXHqOXf:localhost:8800E'Q!fcdNYFWFyxmdpKAknc:localhost:8800 -Xp(P x 0 X  8 `  @h Hp(Px0X8`E]]=@anon-20191002_181700-452:localhost:8800anon-20191002_181700-452E\]=@anon-20191002_181700-451:localhost:8829anon-20191002_181700-451E[]=@anon-20191002_181700-450:localhost:8800anon-20191002_181700-450EZ]=@anon-20191002_181700-449:localhost:8800anon-20191002_181700-449EY]=@anon-20191002_181700-448:localhost:8800anon-20191002_181700-448EX]=@anon-20191002_181700-447:localhost:8800anon-20191002_181700-447EW]=@anon-20191002_181700-446:localhost:8800anon-20191002_181700-446EU]=@anon-20191002_181700-444:localhost:8800anon-20191002_181700-444EV]=@anon-20191002_181700-445:localhost:8800anon-20191002_181700-445ES]=@anon-20191002_181700-442:localhost:8800anon-20191002_181700-442ER]=@anon-20191002_181700-441:localhost:8800anon-20191002_181700-441EQ]=@anon-20191002_181700-440:localhost:8800anon-20191002_181700-440EP]=@anon-20191002_181700-439:localhost:8800anon-20191002_181700-439EO]=@anon-20191002_181700-438:localhost:8800anon-20191002_181700-438EN]=@anon-20191002_181700-437:localhost:8800anon-20191002_181700-437EM]=@anon-20191002_181700-436:localhost:8800anon-20191002_181700-436EL]=@anon-20191002_181700-435:localhost:8800anon-20191002_181700-435EK]=@anon-20191002_181700-434:localhost:8800anon-20191002_181700-434EJ]=@anon-20191002_181700-433:localhost:8800anon-20191002_181700-433EI]=@anon-20191002_181700-432:localhost:8800anon-20191002_181700-432EH]=@anon-20191002_181700-431:localhost:8800anon-20191002_181700-431EG]=@anon-20191002_181700-430:localhost:8800anon-20191002_181700-430EF]=@anon-20191002_181700-429:localhost:8800anon-20191002_181700-429EE]=@anon-20191002_181700-428:localhost:8800anon-20191002_181700-428ED]=@anon-20191002_181700-427:localhost:8800anon-20191002_181700-427EC]=@anon-20191002_181700-426:localhost:8800anon-20191002_181700-426EB]=@anon-20191002_181700-425:localhost:8800anon-20191002_181700-425EA]=@anon-20191002_181700-424:localhost:8800anon-20191002_181700-424E@]=@anon-20191002_181700-422:localhost:8800anon-20191002_181700-422E?]=@anon-20191002_181700-421:localhost:8800anon-20191002_181700-421E>]=@anon-20191002_181700-420:localhost:8800anon-20191002_181700-420E=]=@anon-20191002_181700-419:localhost:8800anon-20191002_181700-419E<]=@anon-20191002_181700-418:localhost:8800anon-20191002_181700-418E;]=@anon-20191002_181700-417:localhost:8800anon-20191002_181700-417E:]=@anon-20191002_181700-416:localhost:8800anon-20191002_181700-416E9]=@anon-20191002_181700-415:localhost:8800anon-20191002_181700-415E8]=@anon-20191002_181700-414:localhost:8800anon-20191002_181700-414E7]=@anon-20191002_181700-413:localhost:8800anon-20191002_181700-413E6]=@anon-20191002_181700-412:localhost:8800anon-20191002_181700-412E5]=@anon-20191002_181700-411:localhost:8800anon-20191002_181700-411E4]=@anon-20191002_181700-409:localhost:8800anon-20191002_181700-409E3]=@anon-20191002_181700-408:localhost:8800anon-20191002_181700-408E2]=@anon-20191002_181700-407:localhost:8800anon-20191002_181700-407E1]=@anon-20191002_181700-405:localhost:8800anon-20191002_181700-405E0]=@anon-20191002_181700-404:localhost:8800anon-20191002_181700-404 < Z x  % C a,Jh 3Qon<]@anon-20191002_181700-418:localhost:8800@anon-20191002_181700-418:localhost:8800 anon-20191002_181700-418n:]@anon-20191002_181700-416:localhost:8800@anon-20191002_181700-416:localhost:8800 anon-20191002_181700-416n9]@anon-20191002_181700-415:localhost:8800@anon-20191002_181700-415:localhost:8800 anon-20191002_181700-415n8]@anon-20191002_181700-414:localhost:8800@anon-20191002_181700-414:localhost:8800 anon-20191002_181700-414n7]@anon-20191002_181700-413:localhost:8800@anon-20191002_181700-413:localhost:8800 anon-20191002_181700-413n6]@anon-20191002_181700-412:localhost:8800@anon-20191002_181700-412:localhost:8800 anon-20191002_181700-412n5]@anon-20191002_181700-411:localhost:8800@anon-20191002_181700-411:localhost:8800 anon-20191002_181700-411n4]@anon-20191002_181700-409:localhost:8800@anon-20191002_181700-409:localhost:8800 anon-20191002_181700-409n3]@anon-20191002_181700-408:localhost:8800@anon-20191002_181700-408:localhost:8800 anon-20191002_181700-408n2]@anon-20191002_181700-407:localhost:8800@anon-20191002_181700-407:localhost:8800 anon-20191002_181700-407n/]@anon-20191002_181700-403:localhost:8800@anon-20191002_181700-403:localhost:8800 anon-20191002_181700-403n.]@anon-20191002_181700-401:localhost:8800@anon-20191002_181700-401:localhost:8800 anon-20191002_181700-401n-]@anon-20191002_181700-400:localhost:8800@anon-20191002_181700-400:localhost:8800 anon-20191002_181700-400n,]@anon-20191002_181700-399:localhost:8800@anon-20191002_181700-399:localhost:8800 anon-20191002_181700-399n+]@anon-20191002_181700-398:localhost:8800@anon-20191002_181700-398:localhost:8800 anon-20191002_181700-398n*]@anon-20191002_181700-397:localhost:8800@anon-20191002_181700-397:localhost:8800 anon-20191002_181700-397n)]@anon-20191002_181700-395:localhost:8800@anon-20191002_181700-395:localhost:8800 anon-20191002_181700-395n(]@anon-20191002_181700-394:localhost:8800@anon-20191002_181700-394:localhost:8800 anon-20191002_181700-394n;]@anon-20191002_181700-417:localhost:8800@anon-20191002_181700-417:localhost:8800 anon-20191002_181700-417n']@anon-20191002_181700-393:localhost:8800@anon-20191002_181700-393:localhost:8800 anon-20191002_181700-393n&]@anon-20191002_181700-392:localhost:8800@anon-20191002_181700-392:localhost:8800 anon-20191002_181700-392n%]@anon-20191002_181700-391:localhost:8800@anon-20191002_181700-391:localhost:8800 anon-20191002_181700-391n$]@anon-20191002_181700-390:localhost:8800@anon-20191002_181700-390:localhost:8800 anon-20191002_181700-390n#]@anon-20191002_181700-389:localhost:8800@anon-20191002_181700-389:localhost:8800 anon-20191002_181700-389n"]@anon-20191002_181700-388:localhost:8800@anon-20191002_181700-388:localhost:8800 anon-20191002_181700-388n!]@anon-20191002_181700-387:localhost:8800@anon-20191002_181700-387:localhost:8800 anon-20191002_181700-387n1]@anon-20191002_181700-405:localhost:8800@anon-20191002_181700-405:localhost:8800 anon-20191002_181700-405n0]@anon-20191002_181700-404:localhost:8800@anon-20191002_181700-404:localhost:8800 anon-20191002_181700-404 22K880029C\anonboris  localhost aP g  l  o)><La9 e'Q  ]$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpIm.room.create!vBvlJEXUSQKUYmsKcO:localhost:8800mُmِ%@anon-20191002_181700-510:localhost:8800!8e)Q ] $K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIwm.room.message!RDEAXrqXQizuhCUFPq:localhost:8800 mيmي@anon-20191002_181700-508:localhost:8800 7e'Q ] $ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMm.room.member!RDEAXrqXQizuhCUFPq:localhost:8800 mنmه@anon-20191002_181700-509:localhost:8800 6e'Q ]$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMm.room.member!RDEAXrqXQizuhCUFPq:localhost:8800mكmك@anon-20191002_181700-508:localhost:88005e#Q ]$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0m.room.test!RDEAXrqXQizuhCUFPq:localhost:8800mـ5mـ9@anon-20191002_181700-508:localhost:8800&4e3Q ]$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkm.room.guest_access!RDEAXrqXQizuhCUFPq:localhost:8800m|*m}@anon-20191002_181700-508:localhost:8800,3e?Q ]$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIm.room.history_visibility!RDEAXrqXQizuhCUFPq:localhost:8800myTmz)@anon-20191002_181700-508:localhost:8800$2e/Q ]$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Ym.room.join_rules!RDEAXrqXQizuhCUFPq:localhost:8800mumw @anon-20191002_181700-508:localhost:8800&1e3Q ]$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwEm.room.power_levels!RDEAXrqXQizuhCUFPq:localhost:8800mrms@anon-20191002_181700-508:localhost:8800 0e'Q ]$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUm.room.member!RDEAXrqXQizuhCUFPq:localhost:8800mnmp<@anon-20191002_181700-508:localhost:8800/ e'Q  ]$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60m.room.create!RDEAXrqXQizuhCUFPq:localhost:8800mjmk@anon-20191002_181700-508:localhost:8800!.e)Q ] $_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0m.room.message!mogJVPxghalmKbblUq:localhost:8800 mdxmd|@anon-20191002_181700-506:localhost:8800 -e'Q ] $TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQm.room.member!mogJVPxghalmKbblUq:localhost:8800 m`ma!@anon-20191002_181700-507:localhost:8800,e#Q ]$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUm.room.test!mogJVPxghalmKbblUq:localhost:8800m^m^@anon-20191002_181700-506:localhost:8800!+e)Q ]$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4m.room.aliases!mogJVPxghalmKbblUq:localhost:8800m[sm\Z@anon-20191002_181700-506:localhost:8800,*e?Q ]$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYm.room.history_visibility!mogJVPxghalmKbblUq:localhost:8800mW9mY5@anon-20191002_181700-506:localhost:8800$)e/Q ]$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPom.room.join_rules!mogJVPxghalmKbblUq:localhost:8800mTmU@anon-20191002_181700-506:localhost:8800)(e9Q ]$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYm.room.canonical_alias!mogJVPxghalmKbblUq:localhost:8800mQmR@anon-20191002_181700-506:localhost:8800&'e3Q ]$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8m.room.power_levels!mogJVPxghalmKbblUq:localhost:8800mNmO@anon-20191002_181700-506:localhost:8800 &e'Q ]$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4m.room.member!mogJVPxghalmKbblUq:localhost:8800mLmL@anon-20191002_181700-506:localhost:8800% e'Q  ]$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYm.room.create!mogJVPxghalmKbblUq:localhost:8800mImIn@anon-20191002_181700-506:localhost:8800!$e)Q ]$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOIm.room.message!EhUxBjnSkVXpTrQlrn:localhost:8800mBdmBj@anon-20191002_181700-505:localhost:8800#e#Q ]$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtkm.room.test!EhUxBjnSkVXpTrQlrn:localhost:8800m?m?@anon-20191002_181700-505:localhost:8800,"e?Q ]$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIm.room.history_visibility!EhUxBjnSkVXpTrQlrn:localhost:8800m:m=_@anon-20191002_181700-505:localhost:8800 V  V -  'R}T X -  T)}R' V +  T )}R')P%Z1Z/{X-V+8800 **Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800AC*Q!OBWkjfrDCNgYFfblia:localhost:8800@B*Q!OBWkjfrDCNgYFfblia:localhost:8800?A*Q!NcJYmIbgjsaKJOzBcs:localhost:8800wi*Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` *Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] *Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ *Q!OCEHAjcOXWNyWIESIS:localhost:8800 [ *Q!OBWkjfrDCNgYFfblia:localhost:8800BD*Q!OBWkjfrDCNgYFfblia:localhost:8800>@*Q!OBWkjfrDCNgYFfblia:localhost:8800=?*Q!OBWkjfrDCNgYFfblia:localhost:8800<>*Q!OBWkjfrDCNgYFfblia:localhost:8800;=*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800(Q!NhWgOTYzEPRwAxRQvS:localhost:8800wv(Q!NhWgOTYzEPRwAxRQvS:localhost:8800vu(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ut(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ts(Q!NhWgOTYzEPRwAxRQvS:localhost:8800sr(Q!NhWgOTYzEPRwAxRQvS:localhost:8800rq*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NeYaCeYNFATCqlrlGT:localhost:8800o*Q!NeYaCeYNFATCqlrlGT:localhost:8800n*Q!NeYaCeYNFATCqlrlGT:localhost:8800m*Q!NeYaCeYNFATCqlrlGT:localhost:8800l*Q!NeYaCeYNFATCqlrlGT:localhost:8800k*Q!NeYaCeYNFATCqlrlGT:localhost:8800j*Q!NboFFVLpJHTeuUKCjM:localhost:8800>a*Q!NboFFVLpJHTeuUKCjM:localhost:8800=`*Q!NboFFVLpJHTeuUKCjM:localhost:8800<_*Q!NboFFVLpJHTeuUKCjM:localhost:8800;^*Q!NboFFVLpJHTeuUKCjM:localhost:8800:]*Q!NboFFVLpJHTeuUKCjM:localhost:88009\*Q!NboFFVLpJHTeuUKCjM:localhost:88008[*Q!NboFFVLpJHTeuUKCjM:localhost:88007Z*Q!NajQnqYmGyTjxhFYar:localhost:8829 (Q!NZHpBquHDfJAjiawGk:localhost:8800IH(Q!NZHpBquHDfJAjiawGk:localhost:8800HG(Q!NZHpBquHDfJAjiawGk:localhost:8800GF(Q!NZHpBquHDfJAjiawGk:localhost:8800FE(Q!NZHpBquHDfJAjiawGk:localhost:8800ED(Q!NZHpBquHDfJAjiawGk:localhost:8800DC*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800x*Q!NcJYmIbgjsaKJOzBcs:localhost:8800w*Q!NcJYmIbgjsaKJOzBcs:localhost:8800~p*Q!NcJYmIbgjsaKJOzBcs:localhost:8800}o*Q!NcJYmIbgjsaKJOzBcs:localhost:8800|n*Q!NcJYmIbgjsaKJOzBcs:localhost:8800{m*Q!NcJYmIbgjsaKJOzBcs:localhost:8800zl*Q!NcJYmIbgjsaKJOzBcs:localhost:8800yk*Q!NcJYmIbgjsaKJOzBcs:localhost:8800xj*Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800  &FeQu$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "txn_id": "420", "stream_ordering": 2257}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "prev_events": ["$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0"], "type": "m.room.message", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042482022, "hashes": {"sha256": "bzhNo0DtTZ77FVN4iqKqWiyO/h37KYjkSbYaWlhgRP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EJpZLk4tjRgmic5R7xRQidNci4ItwE/ShIq3gspnh0ZbhwBYETzOyqe4R8zAVM8AaYf1O4GpApIy3R6uLosYDw"}}, "unsigned": {"age_ts": 1570042482022}}EeQu$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "txn_id": "419", "stream_ordering": 2256}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "prev_events": ["$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk"], "type": "m.room.message", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042481389, "hashes": {"sha256": "uJRdN4taoDTOVCCVkaNSl4DhmuZSSUeDQfLbLsu/e9Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "px31lbzh/Eo+vkP5CTzap8SirflR8n81iG6DOcRGFwgzSY8gRAz5iahdxFNaiGUVKIf9SfXJeXoHbDPcFaf0DA"}}, "unsigned": {"age_ts": 1570042481389}}DeQu$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 421, "txn_id": "418", "stream_ordering": 2255}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "prev_events": ["$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA"], "type": "m.room.message", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-404:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042480559, "hashes": {"sha256": "wR1mBf4kYWuSrsv4Ih41K7tEGl3Ut2LcijBe8MsLevM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zflsBozUpHXNXJ5ZZuXBSeU0kVeOMDIAh2x5hOXW3CBL4i/4sx69PjXbcf82UHa0lvonCGVdxbz988RYrUOtAw"}}, "unsigned": {"age_ts": 1570042480559}}VCeQa9$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800{"token_id": 422, "stream_ordering": 2254}{"auth_events": ["$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w", "$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg", "$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc"], "prev_events": ["$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE"], "type": "m.room.member", "room_id": "!BpTqIemsWFZIqTcgJO:localhost:8800", "sender": "@anon-20191002_181700-405:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-405", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-405:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042479771, "hashes": {"sha256": "r7vFfu0yuXsGsXWxduywfxdpi7WV/ifqjjaJrFgLHoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+ulbSEC6/OT5AQGpdJwOnWe6A3+bCVqzA0E+YrEhWmRGhYwWREUtf0bXcwiPVh8WdUn1x3X6XCoiQ2B4OpgUAw"}}, "unsigned": {"age_ts": 1570042479771}} Hpo=  u V J Dj \ P  C* > V\{ | I $bP0h6 *  $ CtmNKv8Nw0DQ1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q>1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o11e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY(1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUe1e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A ~1e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI(1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8 1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo K1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwN1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEJ0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq81e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih441e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I11e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok+1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs&1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10n1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMH1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY:1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg# v11e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU1e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu801e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY\1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw[1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsW1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw }1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc q1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg >1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY g1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIk1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ%1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc d1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U 1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ X1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM ]821e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUw21e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkh1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs L,L,X&R j8p>^ v D   | J  P  W %  ] +e3k9q?xF~11e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY D1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM =1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc 1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU 21e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU )1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwF1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4P1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcr1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw ^1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4?1e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4>1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk31e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 31e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo)1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 21e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo c1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk _0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc^0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT441e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 O1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE]1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksU1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s;1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0?1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4f1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko1e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEO1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s 1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8N1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 w1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8L1e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8N1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A-1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAt1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWAp1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI @@f+z?SOc( w <  P  d ) x =  Q e*y>Rg,{@8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]! @anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]! @anon-20191002_181700-462:localhost:8800SKOLIDFQEN8~]! @anon-20191002_181700-461:localhost:8800GRYRTUWCZU8}]! @anon-20191002_181700-460:localhost:8800GJEFYISBJP8|]! @anon-20191002_181700-458:localhost:8800BKBKPFYUSG8N]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8M]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8L]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8K]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8J]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8I]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8H]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8G]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8F]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW8E]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL8D]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8{]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8z]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8y]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8x]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC8w]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8v]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8u]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJ8t]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8s]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8r]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8q]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8p]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8o]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8n]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK8m]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8l]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8k]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8j]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8i]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8h]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8g]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8f]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN8e]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8d]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8c]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8b]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8a]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8`]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8_]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8^]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8\]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8[]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8Z]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ8Y]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8X]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8W]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8V]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8U]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8T]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8S]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8R]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8Q]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8P]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK8O]!@anon-20191002_181700-409:localhost:8800GINWCFSINT w\ Z  r ) :OM ew!je)Q ] $zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 me3me;@anon-20191002_181700-412:localhost:8800!ie)Q ] $uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7sm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 mbmb@anon-20191002_181700-413:localhost:8800 he'Q ] $MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sm.room.member!HXfrGcvJCbRItyQLVE:localhost:8800 m_tm_@anon-20191002_181700-413:localhost:8800 ge'Q ]$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMm.room.member!HXfrGcvJCbRItyQLVE:localhost:8800m[m[@anon-20191002_181700-412:localhost:8800fe#Q ]$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsm.room.name!HXfrGcvJCbRItyQLVE:localhost:8800mXSmX@anon-20191002_181700-411:localhost:8800ee#Q ]$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8m.room.test!HXfrGcvJCbRItyQLVE:localhost:8800mVmV@anon-20191002_181700-411:localhost:8800,de?Q ]$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsm.room.history_visibility!HXfrGcvJCbRItyQLVE:localhost:8800mQzmSg@anon-20191002_181700-411:localhost:8800$ce/Q ]$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsm.room.join_rules!HXfrGcvJCbRItyQLVE:localhost:8800mOKmP@anon-20191002_181700-411:localhost:8800&be3Q ]$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUm.room.power_levels!HXfrGcvJCbRItyQLVE:localhost:8800mLHmM@anon-20191002_181700-411:localhost:8800 ae'Q ]$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcm.room.member!HXfrGcvJCbRItyQLVE:localhost:8800mGmH@anon-20191002_181700-411:localhost:8800` e'Q  ]$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgm.room.create!HXfrGcvJCbRItyQLVE:localhost:8800mDTmD@anon-20191002_181700-411:localhost:8800!_e)Q ]$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800m<%m<0@anon-20191002_181700-408:localhost:8800!^e)Q ] $8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m:Km:R@anon-20191002_181700-408:localhost:8800!]e)Q ] $kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8cm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m8m8 @anon-20191002_181700-408:localhost:8800!\e)Q ] $LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySgm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m6Im6N@anon-20191002_181700-408:localhost:8800![e)Q ] $I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAm.room.message!HusOrLtWZTLbmQZxmm:localhost:8800 m3m3@anon-20191002_181700-408:localhost:8800 Ze'Q ] $AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVkm.room.member!HusOrLtWZTLbmQZxmm:localhost:8800 m0m0@anon-20191002_181700-409:localhost:8800 Ye'Q ]$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakm.room.member!HusOrLtWZTLbmQZxmm:localhost:8800m,Sm,@anon-20191002_181700-408:localhost:8800Xe#Q ]$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMm.room.name!HusOrLtWZTLbmQZxmm:localhost:8800m)m*@anon-20191002_181700-407:localhost:8800We#Q ]$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbAm.room.test!HusOrLtWZTLbmQZxmm:localhost:8800m'm'@anon-20191002_181700-407:localhost:8800,Ve?Q ]$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4Em.room.history_visibility!HusOrLtWZTLbmQZxmm:localhost:8800m"m$O@anon-20191002_181700-407:localhost:8800$Ue/Q ]$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNMm.room.join_rules!HusOrLtWZTLbmQZxmm:localhost:8800mm@anon-20191002_181700-407:localhost:8800&Te3Q ]$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Qm.room.power_levels!HusOrLtWZTLbmQZxmm:localhost:8800mm%@anon-20191002_181700-407:localhost:8800 Se'Q ]$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgm.room.member!HusOrLtWZTLbmQZxmm:localhost:8800mm-@anon-20191002_181700-407:localhost:8800   *tJeQau$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2261}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q"], "type": "m.room.join_rules", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042486559, "hashes": {"sha256": "qArkG4YK3/6bquEpEhH8tKuo1Ngiw7xjIuUosJ1Onzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tQoc4Gbx5zKWc28FHItvJurWWdG4ryYBihqWqfDEfOH2+FjTqm7Z3HmtXpRXSWeP4/WeEJh5c4NhPF9y9ZVbAQ"}}, "unsigned": {"age_ts": 1570042486559}}kIeQac$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2260}{"auth_events": ["$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "type": "m.room.power_levels", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"users": {"@anon-20191002_181700-407:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042485786, "hashes": {"sha256": "1frZse1vd1thy/ZMgoAfUNuJRh8PcJ6v4kJv3+t23hY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2XnDiIobnvPObTwNq5jGWdEZMOz8orLJfrjcXn8HAVP/9fZVMqkASn5jCWAJYUURY00MeQVXKoKV5zC1zIBaBQ"}}, "unsigned": {"age_ts": 1570042485786}}vHeQay$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2259}{"auth_events": ["$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas"], "prev_events": ["$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas"], "type": "m.room.member", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-407", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-407:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042484937, "hashes": {"sha256": "jRfJl2CGI2p7YPQVdJq97M7MyqW8Z17ymM9TVupJfds"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "psZkRyiGtors6EVQy9P16zRh5GuOx7p9QU+Cy2TZ6pdDjwBJAErDEEfFp/Ymc1T90JDd21VQE/N8i2QY9HtjBw"}}, "unsigned": {"age_ts": 1570042484937}}iGeQa_$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2258}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-407:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042484271, "hashes": {"sha256": "JBQQDa13eWPteBFxpuX8GIivfOakXoXytVsM/lNr1nc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "msnXjHUGI5gnHX91sx8A8mB8KHArhuZquDjHf3LT8wMhowPBeGt5URcoJaFyvfNOOjqQEKf0VUR2Fx/h+BSfAQ"}}, "unsigned": {"age_ts": 1570042484271}} KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD-]@anon-20191002_181700-521:localhost:8800I-]@anon-20191002_181700-456:localhost:8800b-]@anon-20191002_181700-455:localhost:8829`-]@anon-20191002_181700-454:localhost:8800\-]@anon-20191002_181700-453:localhost:8829Z-]@anon-20191002_181700-452:localhost:8800U-]@anon-20191002_181700-451:localhost:8829S-]@anon-20191002_181700-450:localhost:8800M-]@anon-20191002_181700-449:localhost:8800K-]@anon-20191002_181700-448:localhost:8800F-]@anon-20191002_181700-447:localhost:8800D-]@anon-20191002_181700-520:localhost:8800B-]@anon-20191002_181700-519:localhost:8829@-]@anon-20191002_181700-518:localhost:8800<-]@anon-20191002_181700-517:localhost:8829:-]@anon-20191002_181700-516:localhost:88006-]@anon-20191002_181700-515:localhost:88294-]@anon-20191002_181700-514:localhost:88000-]@anon-20191002_181700-513:localhost:8829.-]@anon-20191002_181700-512:localhost:8800)-]@anon-20191002_181700-511:localhost:8829'-]@anon-20191002_181700-510:localhost:8800!-]@anon-20191002_181700-509:localhost:8800-]@anon-20191002_181700-508:localhost:8800-]@anon-20191002_181700-507:localhost:8800-]@anon-20191002_181700-506:localhost:8800-]@anon-20191002_181700-505:localhost:8800 -]@anon-20191002_181700-504:localhost:8829 -]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-502:localhost:8829-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-500:localhost:8829-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-498:localhost:8829-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-496:localhost:8829-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800-]@anon-20191002_181700-490:localhost:8800-]@anon-20191002_181700-489:localhost:8829-]@anon-20191002_181700-488:localhost:8800-]@anon-20191002_181700-487:localhost:8829-]@anon-20191002_181700-486:localhost:8800-]@anon-20191002_181700-485:localhost:8829-]@anon-20191002_181700-484:localhost:8800-]@anon-20191002_181700-483:localhost:8829-]@anon-20191002_181700-482:localhost:8800-]@anon-20191002_181700-481:localhost:8829-]@anon-20191002_181700-480:localhost:8800-]@anon-20191002_181700-479:localhost:8800-]@anon-20191002_181700-478:localhost:8800-]@anon-20191002_181700-477:localhost:8800-]@anon-20191002_181700-476:localhost:8800-]@anon-20191002_181700-475:localhost:8800-]@anon-20191002_181700-474:localhost:8829-]@anon-20191002_181700-473:localhost:8800-]@anon-20191002_181700-472:localhost:8829-]@anon-20191002_181700-471:localhost:8800-]@anon-20191002_181700-470:localhost:8829-]@anon-20191002_181700-469:localhost:8800-]@anon-20191002_181700-468:localhost:8829-]@anon-20191002_181700-467:localhost:8800-]@anon-20191002_181700-466:localhost:8829-]@anon-20191002_181700-465:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800{-]@anon-20191002_181700-462:localhost:8800y-]@anon-20191002_181700-461:localhost:8800s-]@anon-20191002_181700-460:localhost:8800n-]@anon-20191002_181700-459:localhost:8829l-]@anon-20191002_181700-458:localhost:8800h-]@anon-20191002_181700-457:localhost:8829f 8l D `8]c!E@anon-20191002_181700-417:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwoVZYHWNRJEP127.0.0.1Perl + Net::Async::HTTP/0.44mӢY]c!E@anon-20191002_181700-416:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQoDJBLIYEMJA127.0.0.1Perl + Net::Async::HTTP/0.44mӌ܃]c!E@anon-20191002_181700-415:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAoGYOCEBCXKN127.0.0.1Perl + Net::Async::HTTP/0.44mӇS]c!E@anon-20191002_181700-414:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgoJOACLHYIFX127.0.0.1Perl + Net::Async::HTTP/0.44mr]c!E@anon-20191002_181700-413:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9woADVOIWYJVV127.0.0.1Perl + Net::Async::HTTP/0.44m_c]c!E@anon-20191002_181700-412:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwoEGSWCNVTAJ127.0.0.1Perl + Net::Async::HTTP/0.44mZU]c!E@anon-20191002_181700-411:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAoQBCZCYKWIT127.0.0.1Perl + Net::Async::HTTP/0.44mC]c!E@anon-20191002_181700-409:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8woGINWCFSINT127.0.0.1Perl + Net::Async::HTTP/0.44m0 ]c!E@anon-20191002_181700-408:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQoXKDKZYMRFB127.0.0.1Perl + Net::Async::HTTP/0.44m+!]c!E@anon-20191002_181700-407:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwoRTGALMPCLS127.0.0.1Perl + Net::Async::HTTP/0.44mj !.\ : E s     HU`e+ geQ3 $PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels eQ']$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800joina~eQ' $aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create }eQ']$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800join |eQ']$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800join_{eQ# $4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800m.room.namemzeQ? $rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibilityeyeQ/ $5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rulesgxeQ3 $M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels weQ']$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800joinaveQ' $7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800m.room.create ueQ']$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800join teQ']$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800join_seQ# $DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800m.room.namemreQ? $5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibilityeqeQ/ $Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rulesgpeQ3 $gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels oeQ']$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800joinaneQ' $k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create meQ']$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800join leQ']$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800join_keQ# $PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.namemjeQ? $b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibilityeieQ/ $MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rulesgheQ3 $XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels geQ']$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800joinafeQ' $8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create eeQ']$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-409:localhost:8800join deQ']$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800join_ceQ# $KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.namembeQ? $vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800m.room.history_visibilityeaeQ/ $dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800m.room.join_rulesg`eQ3 $WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800m.room.power_levels  w +VNeQa9$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "stream_ordering": 2265}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM"], "prev_events": ["$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM"], "type": "m.room.member", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-408", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-408:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042489939, "hashes": {"sha256": "i9DmNfAwMTRw8R3Mim4sGrso1qc5MsKjtSyBMCHBV34"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+439dZccb5JhBpJ8z4Be24ydeYXIWD0k8sYclITGIZ2v/AhQTa1GZt2Cwv12jXjSYJbsKVE1zT2JX1QjCnnAQ"}}, "unsigned": {"age_ts": 1570042489939}}nMeQai$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2264}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA"], "type": "m.room.name", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042489246, "hashes": {"sha256": "07u0JlOBjYewB/FReTbBFZHgziRW26T4JUjR45Fz6dA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "s/RNRjgFE7alrVsHs1Saody5KbOM3NpEdPTQQCwoCJPwW9lhWaX1YUDHK+Wv5CCjjLcJV4kEanvlEywaK0ZaAQ"}}, "unsigned": {"age_ts": 1570042489246}}HLeQa$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2263}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E"], "type": "m.room.test", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042488751, "hashes": {"sha256": "G37tJt6K9kdJj3enPIceDK3ndHHWHrUrwxbnAiXWiq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uS6yRk+Zh08LCgSI/Lhom1Xq1iZVaPZL8z8g4o0GxTLthmredAiSHqoCjaJ7SbE+o6c1HwPbRhP07Jud2jOxBg"}}, "unsigned": {"age_ts": 1570042488751}}KeQa$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 424, "stream_ordering": 2262}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg"], "prev_events": ["$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM"], "type": "m.room.history_visibility", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-407:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042487476, "hashes": {"sha256": "IMgG/hImG0qkJ2PZi6mSx4LUkbomgglcyqOi2WSF1YQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+8pjW88jmS0pkZRaBTVO/kImkrPIY+ikfdcxJZJGwaVpNtJo6Mbaf6SagOXwePUUdu0IG3NWNiO9jOkUQz2CBA"}}, "unsigned": {"age_ts": 1570042487476}} B T  T  p 7 O8 4 Sq QP3mo6lU 5 R n  p 798e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwsha256 l8e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmwsha2568e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIsha256 H8e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII0sha256'8e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQsha2568e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKIsha2568e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wEsha256_8e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj4sha256 8e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIsha2568e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQsha256D8e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidYsha2568e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0sha2567e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4sha256F8e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUsha256 8e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIsha256_8e$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWwsha256O8e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICEsha256 p8e$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdksha256(8e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0sha2568e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828sha256"8e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMsha2568e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qsha256 a8e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLosha256 /8e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQsha256 8e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4sha256 8e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4sha256B8e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQsha2568e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQsha2568e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cIsha256>8e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Esha256 8e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEsha25628e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQsha2568e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKAsha2568e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFMsha2568e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8sha2568e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMsha256 8e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qsha2568e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGAsha2568e$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOgsha256>8e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Esha256!8e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8sha25608e$ocn-Ia9AuPUSbjZJKAVhmFn79E-jSKOD6cthT7cf_NMsha2568e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1wsha2568e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4sha25618e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7Msha256D8e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgsha2568e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKycsha25658e$oNYFCCDBAg5ahJ2C1gDpHnRiTYWuCbmcxC5HByNVjpcsha25688e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMsha2568e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecsha256 8e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4sha2568e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUsha2568e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzIsha256b8e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2csha256P8e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaIsha256W8e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQsha256 8e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQsha2568e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJssha256 8e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQsha256 8e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-Usha256 8e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTgsha2568e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0sha2568e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wcsha2568e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0sha2568e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0sha256 98e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtksha256 a} { y w u sqomkigeca~eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~ eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800~eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800~eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~~eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~}eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM!HusOrLtWZTLbmQZxmm:localhost:8800~|eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas!HusOrLtWZTLbmQZxmm:localhost:8800~{eeQ$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q!HusOrLtWZTLbmQZxmm:localhost:8800~zeeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800 vA D j | J T " P  V $ 0 \ *bh6n< tBzIO8NN1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0*1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0) 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4a1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4`1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4_1e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc_1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y >1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y =1e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y <1e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc1e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc1e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUc1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcY1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8 O1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8 N1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw8 M1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkW1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkV1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkU1e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qkT1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U 1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U 1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38 d1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38 c1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38 b1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_01e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4 1e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI31e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI21e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM^1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g01e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0+2  &ReQu$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "423", "stream_ordering": 2269}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042492931, "hashes": {"sha256": "ATz6Q8pB0Fqh09jGbB7xRqYMzdAKHBettxcftleCHSU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t2WviDweky5Q8JfZvQ3qO9K+Nn/i9NQs9CmpjS9BkZApOz3Im58u35A/ASkBOKfZPyNCPx0DNA+6IIOmO9ItDg"}}, "unsigned": {"age_ts": 1570042492931}}QeQu$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "422", "stream_ordering": 2268}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042492489, "hashes": {"sha256": "/PsGXhrf+8pa0XQ3mwrnDoWdOaeFJ+C01L82DhpBI2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAkj+tzyVNyb5sh9rpUSGMDfEX0jaL3CTL0SsmUtd9SpLspFHM4kg3Rru+mJeP86Avi4XZLkjUb64/MKDMLHCg"}}, "unsigned": {"age_ts": 1570042492489}}PeQu$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "421", "stream_ordering": 2267}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042491836, "hashes": {"sha256": "tRyAdSxyBp7mwAgKT8WlsXK9AFqOx4XgSKpfAt0paRs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lIi2N7l2IDPhj8QOUO98rUcKceWzE6o1SfD9dykn1dAt/ZVDr3474ohWLZisWbWV0c3fC9EY6sDzif5Vozb2Bw"}}, "unsigned": {"age_ts": 1570042491836}}VOeQa9$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 426, "stream_ordering": 2266}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM"], "prev_events": ["$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "type": "m.room.member", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-409:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-409", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-409:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042490911, "hashes": {"sha256": "WDL9iLn3n66Ry7VbCRy6sTrPFGEt6z4wJ5+ZlBDXgdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YeliLzg18udccneqyEbdS2khFUFo3Vl9UtbksbFZY2D3x59O1j/sHEVRBK7OAgqRZlxi52EfNyWA+yRYkS6RCA"}}, "unsigned": {"age_ts": 1570042490911}} ~z v r n j fb^ZVRNJF)eeQ$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800(eeQ$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800'eeQ$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800&eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800%eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800$eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg!rWGwSSefrZzQYCYFHs:localhost:8800#eeQ$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800"eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800!eeQ$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800 eeQ$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800eeQ$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800eeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak!HusOrLtWZTLbmQZxmm:localhost:8800 8Ir; ^ ! l _ " E r 5XBI U\j Z~ <Q3 !Qkkdnzvdr^Q']!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800 ]Q'[!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-95:localhost:8800]Q'[!RmdhCjvouVLmyIHjaM:localhost:8800m.room.member@anon-20191002_181700-94:localhost:8829:Q/ !RmdhCjvouVLmyIHjaM:localhost:8800m.room.join_rulesBQ? !RmdhCjvouVLmyIHjaM:localhost:8800m.room.history_visibility<Q3 !RmdhCjvouVLmyIHjaM:localhost:8800m.room.guest_access6Q' !RmdhCjvouVLmyIHjaM:localhost:8800m.room.create<Q3 !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levelso^Q']!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800n:Q/ !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rulespBQ? !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibilityq6Q' !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.createm<Q3 !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels^Q']!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829^Q']!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800:Q/ !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rulesBQ? !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibility<Q3 !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_access6Q' !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create<Q3 !RPfffkmSEbWggEjnoI:localhost:8800m.room.power_levels<^Q']!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-271:localhost:88009^Q']!RPfffkmSEbWggEjnoI:localhost:8800m.room.member@anon-20191002_181700-270:localhost:8800D:Q/ !RPfffkmSEbWggEjnoI:localhost:8800m.room.join_rules?BQ? !RPfffkmSEbWggEjnoI:localhost:8800m.room.history_visibilityB6Q' !RPfffkmSEbWggEjnoI:localhost:8800m.room.create6<Q3 !ROoilpDjLJfjKfSPIi:localhost:8800m.room.power_levels^Q']!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-239:localhost:8800^Q']!ROoilpDjLJfjKfSPIi:localhost:8800m.room.member@anon-20191002_181700-238:localhost:8800:Q/ !ROoilpDjLJfjKfSPIi:localhost:8800m.room.join_rulesBQ? !ROoilpDjLJfjKfSPIi:localhost:8800m.room.history_visibility<Q3 !ROoilpDjLJfjKfSPIi:localhost:8800m.room.guest_access6Q' !ROoilpDjLJfjKfSPIi:localhost:8800m.room.create<Q3 !RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels^Q']!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800^Q']!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800:Q/ !RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rulesBQ? !RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibility<Q3 !RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_access6Q' !RDEAXrqXQizuhCUFPq:localhost:8800m.room.create9Q- !QyLUggxrTnULUAOseq:localhost:8800m.room.tombstone<Q3 !QyLUggxrTnULUAOseq:localhost:8800m.room.power_levels^Q']!QyLUggxrTnULUAOseq:localhost:8800m.room.member@anon-20191002_181700-295:localhost:8800:Q/ !QyLUggxrTnULUAOseq:localhost:8800m.room.join_rulesBQ? !QyLUggxrTnULUAOseq:localhost:8800m.room.history_visibility6Q' !QyLUggxrTnULUAOseq:localhost:8800m.room.create<Q3 !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levels t^Q']!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800 s:Q/ !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules uBQ? !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility v6Q' !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.create r<Q3 !QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels^Q']!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800:Q/ !QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rulesBQ? !QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibility6Q' !QnmLrBAxeItdHsaxWf:localhost:8800m.room.create<Q3 !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B ~ A } @ | ? { > z = y < x ; w : v 9 u 8 t 7 s 6 r 5 q 4 p 3 o 2 n 1 m 0 l / k . j - i , h + g * f ) e ( d ' c & b % a $ ` # _ " ^ ! ] \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J I H G F E  D  C  B  A  @  ?  >  = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                            ~  }  |  {  z  y  x  w  v  u ~~}}||{{zzyyxxwwvvutsrqponmlkjihgfedccba`_^]\[ZYXWVUTSR $&L p  ' M o  (Lr+Ou,Rv jeeQ%$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 2jdeQ%$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 1lceQ%#$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800content.nameA room namejbeQ%$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 4jaeQ%$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 3j`eQ%$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 2j_eQ%$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800content.bodyMessage 1l^eQ%#$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800content.nameA room namej]eQ%$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 4j\eQ%$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 3j[eQ%$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 2jZeQ%$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800content.bodyMessage 1lYeQ%#$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800content.nameA room namejXeQ%$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 6jWeQ%$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 5jVeQ%$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 4jUeQ%$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 3jTeQ%$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 2jSeQ%$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:8800content.bodyMessage 1lReQ%#$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800content.nameA room namejQeQ%$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyMessage 3jPeQ%$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyMessage 2jOeQ%$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyMessage 1lNeQ%#$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800content.bodyHello worldlMeQ%#$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800content.nameA room namejLeQ%$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 4jKeQ%$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 3jJeQ%$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 2jIeQ%$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyMessage 1lHeQ%#$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800content.bodyHello worldlGeQ%#$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800content.nameA room namejFeQ%$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 5jEeQ%$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 4jDeQ%$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 3jCeQ%$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 2jBeQ%$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800content.bodyMessage 1 HVj8p> v D   | J 2 P  V $ ] +d$j8p> vD|JP1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0YM1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy021e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA 21e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY 1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU81e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0;1e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc V1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE 1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug /1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro 41e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc >1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOww1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ+1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c?0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc 1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gz1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkk1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA O1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYz1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAW1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY :1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg41e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8j1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIs1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg T1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY 81e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 =1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8 \\B+tW:#lO4`I Y < ! p M 6 F )  W B %  | _ H h)U8Pp1iCqV3 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-576:localhost:8800 '  m.room.create 3  m.room.power_levels 3  m.room.power_levels /  m.room.join_rules "?  m.room.history_visibility 3  m.room.guest_access 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-574:localhost:8800 '  m.room.create -  m.room.tombstone "?  m.room.history_visibility 3  m.room.power_levels 0>'] m.room.member@anon-20191002_181700-612:localhost:8800 /'  m.room.create .>'] m.room.member@anon-20191002_181700-610:localhost:8800 ->'] m.room.member@anon-20191002_181700-609:localhost:8800 ,%)) m.room.aliaseslocalhost:8800 +"?  m.room.history_visibility */  m.room.join_rules )9  m.room.canonical_alias (3  m.room.power_levels '>'] m.room.member@anon-20191002_181700-605:localhost:8800 &>'] m.room.member@anon-20191002_181700-608:localhost:8800 %>'] m.room.member@anon-20191002_181700-605:localhost:8800 $'  m.room.create ##  m.room.name ""?  m.room.history_visibility !/  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-606:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-607:localhost:8829 >'] m.room.member@anon-20191002_181700-607:localhost:8829 >'] m.room.member@anon-20191002_181700-607:localhost:8829 %)) m.room.aliaseslocalhost:8800 "?  m.room.history_visibility /  m.room.join_rules 9  m.room.canonical_alias 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-605:localhost:8800 '  m.room.create 3  m.room.power_levels #  m.room.name >'] m.room.member@anon-20191002_181700-603:localhost:8800 /  m.room.join_rules "?  m.room.history_visibility '  m.room.create 3  m.room.power_levels #  m.room.name >'] m.room.member@anon-20191002_181700-601:localhost:8800 /  m.room.join_rules "?  m.room.history_visibility '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-584:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-583:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-582:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-580:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-579:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-578:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-577:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules  vvVeQay$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2273}{"auth_events": ["$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg"], "prev_events": ["$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg"], "type": "m.room.member", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-411", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-411:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042496959, "hashes": {"sha256": "CpCwPFShpYWE4FSUaEUnM0RJjeDrERMSz0Q6YQ64/4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tdYl6Ld9a5p/41pdA6ey2Lm3jYWt2H18gFOKYZ5d/Nw1wvWrzsHInVkkNQVr88nKC7EXTlWi8YCJYs5Nlv//DQ"}}, "unsigned": {"age_ts": 1570042496959}}iUeQa_$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2272}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-411:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042496084, "hashes": {"sha256": "fLlPvom7lSgAndbAmwTygtpGu9pRz85/7zd2eiSAoi4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eYlH4fBNZkPzCh0mNQ7UjZAfFqohqcpAoNjLS5NkV1OyyEH+Cp2y3/WtnWoAa8W1VJ2bYrVazDxD2TYL73oiAA"}}, "unsigned": {"age_ts": 1570042496084}}TeQu$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "425", "stream_ordering": 2271}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042493989, "hashes": {"sha256": "Z8jC2hfRncaIfkuTNFa5uq8c6ifZpSP3onEWgCvSNqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DyvPoIumiALEJ3rzcGs5k1s75RtKMlOmY9Q6q7LChlm4srbmPrak4FyKOiQSgA1s3ZIhrDbO2vlMMo/IVvhDBA"}}, "unsigned": {"age_ts": 1570042493989}}SeQu$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM!HusOrLtWZTLbmQZxmm:localhost:8800{"token_id": 425, "txn_id": "424", "stream_ordering": 2270}{"auth_events": ["$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q", "$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas", "$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak"], "prev_events": ["$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c"], "type": "m.room.message", "room_id": "!HusOrLtWZTLbmQZxmm:localhost:8800", "sender": "@anon-20191002_181700-408:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042493515, "hashes": {"sha256": "vsTzw/u40Vn/JjWvZloiaeN8+/T9uAE7lM+g0QlbqZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/bp3c9zjR8n7F7gpmiIEP13vT3hOECp7V0CrNDAzN4bMghVO2Px3QysJJGWUn4dOpwnriMLYukgjcVBlW19LCw"}}, "unsigned": {"age_ts": 1570042493515}} D~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   { p e Z O D 9 . #   ~ s h ] R G < 1 &   vk`UJ?4)yncXMB7,! |qf[PE:/$ti^SH=2'wlaVK@5* zodYNC8-" DCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<; :9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876 543210/.-,+*)('&%$#"!       |qf[PE:/$ti^SH=2' w l a V K @ 5 *   z o d Y N C 8 - "   } r g \ Q F ; 0 %    u j _ T I > 3 (    x m b W L A 6 + {peZOD9.# ~sh]RG<1&210/.-,+*)('&%$#"!      ~}|{qrfzyxwvutsg\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE g * T~=gg-]!c@anon-20191002_181700-422:localhost:8800VPDAIJPBTTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowog,]!c@anon-20191002_181700-420:localhost:8800PFSCBSPFUQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwog+]!c@anon-20191002_181700-419:localhost:8800WRAHOCOTZGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3gog*]!c@anon-20191002_181700-417:localhost:8800VZYHWNRJEPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwog)]!c@anon-20191002_181700-418:localhost:8800UIZEZFRVWZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwog(]!c@anon-20191002_181700-416:localhost:8800DJBLIYEMJAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQog']!c@anon-20191002_181700-414:localhost:8800JOACLHYIFXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgog&]!c@anon-20191002_181700-415:localhost:8800GYOCEBCXKNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAog%]!c@anon-20191002_181700-413:localhost:8800ADVOIWYJVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMqJjVAdTMwT0JYLFJHRk0KMDAyZnNpZ25hdHVyZSDff2j-VezR0YMR3XxBTAxgdUtgeKYa6CDAAOIFAAZQ9wog$]!c@anon-20191002_181700-411:localhost:8800QBCZCYKWITMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAog#]!c@anon-20191002_181700-412:localhost:8800EGSWCNVTAJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwo ,NC 8 - { " p  e ZOD9.|#qf VeL$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMsha256 5.m9kG/X ߃wm VeL$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMsha256h_ "7>L#-G9 V~eL$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMsha256aikmRߪ뫂c۳Dc ZV}eL$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMIsha256$31~Ԡylm+:O/=<݅[TV|eL$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGAsha256 L-^esc_4?yXiHT `V{eL$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUsha256bq-y(1>aQGVzeL$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7Msha256zަZun?RʼbۙsG0{VyeL$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMsha256(P |·Uef榦L%>TVxeL$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEsha256h64XTտ[JДI1VweL$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdissha256l5L"4!SG{,B O[sv+VveL$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUsha256F$p[kY  >î'JT{5VueL$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQsha2564\TZr!}c7XiZq鋚(TVteL$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGosha256"Af*ӓNzv *3ox\0jVseL$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIsha256G!ח } 3pa);7bWbҒVreL$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4sha2563uʬUT5zaBL.VqeL$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7ksha256~*5v "Jq.9p{(ԝVpeL$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Ysha256p?:a8kj+2@kFVoeL$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEsha256r02]vKi4JrR"M#SBVneL$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEMsha256Lrp [إ B ,Tz}dİCVmeL$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNosha256L@@ڮp#;HdVleL$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIsha256|fl)]YyjN'Y[p\Ttd"VkeL$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYsha256HP\0{'~(KOʼdTVjeL$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4sha256Y7 _Ko^(%[8‘ Q/GhyN.VieL$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcsha256 j>?AbapܜmMUt)F"VheL$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwgsha2567@p:EQ;!; łYLQa+VgeL$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgsha256+kTԩԑٖ@*=Sk/&VfeL$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYsha256zS%E\[PK=T*VeeL$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIsha2566ǐv(ZZ|E 8яcZ2%RVdeL$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSssha2564eɩMO*B%YE3ya+VceL$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8sha256Ew1nU/Ȕw%Agw5VbeL$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIsha256\J+& .,h9[e50'D7P2VaeL$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXssha256w3+Yq ;,3g-s%{V`eL$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNosha256CZ؍+U7 l5)Um ⍩NV_eL$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcsha256|*ϒZoV]#27h~L@V^eL$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7ssha256}K_A P߭?HSﺦ;V]eL$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28ssha2562*Q{%B!G!v#NupV\eL$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMsha256^<Vʛqj*ѾtjjSV[eL$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zssha256=bԀFa}1~Mw&;VZeL$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8sha256^´CEzo8m=bVYeL$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhssha256o* M!AbpiV z&EVXeL$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hssha2561bf'qN5% SW85hʭ&VWeL$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnUsha256] Bӻ '<5\2vuVVeL$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcsha256{חBfJl('T"9O VUeL$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLgsha256M㪮߉J=۩YFwek2QI,mz !} 1 Y 9 B j r {0;DGit}daQ' e !eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco `Q']e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k _Q']e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEb^Q# e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.name$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Osp]Q? e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibility$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEh\Q/ e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rules$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEj[Q3 e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU ZQ']e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMdYQ' e !UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM XQ']e !AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE WQ']e !AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisbVQ# e !AMLmLqizBFklpqKibP:localhost:8800m.room.name$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUpUQ? e!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibility$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGohTQ/ e!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rules$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIjSQ3 e!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4 RQ']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kdQQ' e!AMLmLqizBFklpqKibP:localhost:8800m.room.create$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y PQ']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY OQ']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4bNQ# e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.name$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcpMQ? e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibility$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpghLQ/ e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rules$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYjKQ3 e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI JQ']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsdIQ' e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.create$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8 HQ']e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-413:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s GQ']e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-412:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMbFQ# e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.name$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zspEQ? e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.history_visibility$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhshDQ/ e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.join_rules$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsjCQ3 e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.power_levels$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU BQ']e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.member@anon-20191002_181700-411:localhost:8800$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIcdAQ' e!HXfrGcvJCbRItyQLVE:localhost:8800m.room.create$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg , k x ' K 4 A N [ u$1Xhe>^r!P]Q@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:88000P]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800-P]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800,P]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800'P]Q@anon-20191002_181700-470:localhost:8829!yLccBXjjEasExpsXlt:localhost:8800&P]Q@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800.P]Q@anon-20191002_181700-472:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800)P]Q@anon-20191002_181700-472:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800(P]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800%P]Q@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800$P]Q@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800#P]Q@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800"P]Q@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800!P]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800 P]Q@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800*P]Q@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800P]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-457:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-457:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-455:localhost:8829!bQDOrbAknnQZfUbhgS:localhost:8800P]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800P]Q@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800P]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800 P]Q@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 P]Q@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 P]Q@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800 P]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800 P]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800P]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800P]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800/P]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800+ -RM H C > 9 4/*|%w rmhc T!Qe!yTQmLDAxZscWKLMSWh:localhost:8800$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoT Qe!yTQmLDAxZscWKLMSWh:localhost:8800$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsTQe!yTQmLDAxZscWKLMSWh:localhost:8800$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kTQe!yTQmLDAxZscWKLMSWh:localhost:8800$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYTQe!yTQmLDAxZscWKLMSWh:localhost:8800$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUTQe!yTQmLDAxZscWKLMSWh:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4TQe!yTQmLDAxZscWKLMSWh:localhost:8800$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlETQe!eWRdwtyqHvuxZFvhNS:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ETQe!eWRdwtyqHvuxZFvhNS:localhost:8800$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3ETQe!eWRdwtyqHvuxZFvhNS:localhost:8800$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoTQe!eWRdwtyqHvuxZFvhNS:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXITQe!eWRdwtyqHvuxZFvhNS:localhost:8800$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoTQe!UGVFuRGyPQmBbGsEDo:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kTQe!UGVFuRGyPQmBbGsEDo:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxETQe!UGVFuRGyPQmBbGsEDo:localhost:8800$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsTQe!UGVFuRGyPQmBbGsEDo:localhost:8800$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BETQe!UGVFuRGyPQmBbGsEDo:localhost:8800$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoET Qe!UGVFuRGyPQmBbGsEDo:localhost:8800$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUT Qe!UGVFuRGyPQmBbGsEDo:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMT Qe!UGVFuRGyPQmBbGsEDo:localhost:8800$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMT Qe!AMLmLqizBFklpqKibP:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zET Qe!AMLmLqizBFklpqKibP:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisTQe!AMLmLqizBFklpqKibP:localhost:8800$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUTQe!AMLmLqizBFklpqKibP:localhost:8800$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGoTQe!AMLmLqizBFklpqKibP:localhost:8800$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pITQe!AMLmLqizBFklpqKibP:localhost:8800$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4TQe!AMLmLqizBFklpqKibP:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kTQe!AMLmLqizBFklpqKibP:localhost:8800$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0YTQe!rWGwSSefrZzQYCYFHs:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYTQe!rWGwSSefrZzQYCYFHs:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4TQe!rWGwSSefrZzQYCYFHs:localhost:8800$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcTQe!rWGwSSefrZzQYCYFHs:localhost:8800$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgT~Qe~!rWGwSSefrZzQYCYFHs:localhost:8800$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYT}Qe}!rWGwSSefrZzQYCYFHs:localhost:8800$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIT|Qe|!rWGwSSefrZzQYCYFHs:localhost:8800$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsT{Qe{!rWGwSSefrZzQYCYFHs:localhost:8800$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8TzQez!HXfrGcvJCbRItyQLVE:localhost:8800$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28sTyQey!HXfrGcvJCbRItyQLVE:localhost:8800$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMTxQex!HXfrGcvJCbRItyQLVE:localhost:8800$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsTwQew!HXfrGcvJCbRItyQLVE:localhost:8800$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhsTvQev!HXfrGcvJCbRItyQLVE:localhost:8800$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hsTuQeu!HXfrGcvJCbRItyQLVE:localhost:8800$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU D DHZeQa$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2277}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs"], "type": "m.room.test", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042500777, "hashes": {"sha256": "eMlnAZpgTUwYggFyrRlQme34K+IaKUHHZIXgJvGLGP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+6jLjnewu9rST35B7BF3VlxO+Nx+uCqmUJup5gHkh36BqdRtqzK9M13nSCdhQ8BQZzkrOP7KHEkj/p1tc+59Cw"}}, "unsigned": {"age_ts": 1570042500777}}YeQa$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2276}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs"], "type": "m.room.history_visibility", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042499450, "hashes": {"sha256": "ERniiTX4zXqdjRhiWUWC1Lp5dkwb7749zXkyOLhqsbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qZhlDLl2dUS4BzwAPMZDZWoPsOuv1IwMv9wZanWbvs2/o/Ik+ObaTc9xhGf2eSL587nMxBlBlHQVdjUbJgg4Ag"}}, "unsigned": {"age_ts": 1570042499450}}tXeQau$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2275}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU"], "type": "m.room.join_rules", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042498891, "hashes": {"sha256": "dK0nal+9n8oWQS1hiYhbqvaHPdnuzmLBeSQMKHZqYKM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ISwDJV9S6ergtJU+/qGJUeoKHDPyWCe4V00hk9MdjvmUkkkG5l42fg1PgPIKovyq0HzcOnplMV7NmAw3xxo4Cg"}}, "unsigned": {"age_ts": 1570042498891}}kWeQac$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2274}{"auth_events": ["$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "type": "m.room.power_levels", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"users": {"@anon-20191002_181700-411:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042498120, "hashes": {"sha256": "0OlJ07PQHWF8Lcg9kPdzxQNkfRacK3iO1IXiWhVrQDs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FBCRRrpgv50a4pY1kqmWzy5lsA2gl4/RdylgMTclXU6hdpxrmDysw33abaY7KGh1lFLkYVmE8uMm7OSxR+9CBw"}}, "unsigned": {"age_ts": 1570042498120}} pD7SUq9 U   q 9  V  r 9 U r69RUoq8T8e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWposha2568e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywsha2568e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4ksha256 8e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScsha256Z8e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0sha256U8e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUsha256 8e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycsha2568e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8sha256 8e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4sha256 8e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_ssha2568e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgsha256`8e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8sha2568e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIsha2568e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMsha256b8e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGYsha256 8e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8sha2568e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4sha256 98e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuYsha2568e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgsha256 8e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKcsha256 8e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8sha256 8e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEsha256 +8e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28sha2568e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9osha2568e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gsha256 ?8e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8sha256 h8e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0ssha256N8e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMsha256 8e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwsha256n8e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1Usha256 8e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwsha256 8e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSksha2568e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4sha2568e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4sha256h8e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwsha256 7e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBksha256;8e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8sha256 8e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknksha2568e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmIsha256 38e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0Isha2568e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNosha2568e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gksha256 8e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekksha2568e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gsha256 8e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvosha256 I8e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQsha2568e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA8sha2568e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjosha256g8e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbksha256 8e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bksha256 g7e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcsha256m7e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4sha256<8e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8sha256 S8e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMsha256]8e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAsha256 8e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAoksha256}8e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQEsha256 &8e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDkssha2568e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4ssha2568e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV8sha2567e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0sha256J8e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4sha2568e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8Esha2568e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruksha256i8e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYsha256 8e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAsha256 8e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjkosha25628e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEsha256  N N^eQy$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 430, "txn_id": "426", "stream_ordering": 2281}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s"], "prev_events": ["$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-413:localhost:8800", "content": {"msgtype": "m.text", "body": "Hello world"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042503876, "hashes": {"sha256": "S+il6Vm+53mdF2j8j/HbEeoCOlSUVlN79WUN/Ud9TZ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IvuCUhwonlExj+5L77pmzcqJFg1wq72bOf+tH+FUviOeyUsoCyvJEpe1c6TG7Ef9KuLuNw45ujeNU5nDC8RRBA"}}, "unsigned": {"age_ts": 1570042503876}}V]eQa9$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 430, "stream_ordering": 2280}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs"], "prev_events": ["$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "type": "m.room.member", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-413:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-413", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-413:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042503028, "hashes": {"sha256": "He+VEB1AqmRtl5Zj2MHcLL0PbIFtfBbvD1U6qcLiWzw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ek6PiB1arp3JLuHOCtnJmNi8O+SGRiL8kkV/Ssbo73WrYfTqsMp2mqmdCeEOrmDvc9UZ3LG+bO1EbJkEGexrAQ"}}, "unsigned": {"age_ts": 1570042503028}}V\eQa9$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "stream_ordering": 2279}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs"], "prev_events": ["$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs"], "type": "m.room.member", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-412", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-412:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042502017, "hashes": {"sha256": "lroW5g/jHK6j9H+TRQrbBg1mQG1jVbl4KRUyC/MQJbk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5mB/324ELJNOMrsghCLsVwgA6psW7csvHf0VsxARa8kePz4osZ19t6ZILOEOTCXlzS07Tie/xqBliOC6digrDQ"}}, "unsigned": {"age_ts": 1570042502017}}n[eQai$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 429, "stream_ordering": 2278}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc"], "prev_events": ["$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8"], "type": "m.room.name", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-411:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042501203, "hashes": {"sha256": "L4QQuseQp0JSgarvvMS06kNCPWD+vAIHi9nO1Vlo5UI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yMGrk8uDrICkH0+J/U9+pGb2DRUxr/E0JTjpRYqOPNSdyM6vmVSIQUJdWmzMVWLLcfEcvnw2s1rJW3qHsn9ZCw"}}, "unsigned": {"age_ts": 1570042501203}} CZ("NB  V $ tzH> b v DT  *   | \ Jnp < P 0 j0h6 821e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE q1e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0`1e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4#1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8 /1e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU1e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVw1e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU611e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY1e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjk1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTA1e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth81e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzo1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8k1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 E1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk 1e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMW1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok 1e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90_1e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEv1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw41e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7o1e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6k|1e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcn1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg t1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHI8,1e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA O1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A @1e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 1e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 1e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso 1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA 1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo 1e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU 1e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo 1e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4W1e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrA1e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCI1e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag1e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8c81e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk)1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4d1e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8z1e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4H1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigQ1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQ91e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBc1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE t1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 M1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA 1e$YfzydcfcDVESKG5z8fvsTUH1mXLJK36f_kwfhSy7ZH41e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ  vbbeQu$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "430", "stream_ordering": 2285}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042506129, "hashes": {"sha256": "h5FqQmtKDVjyk7IWK5lQtAWKNg8jrz56IxSAi65pvp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3Cc2H3mktgz7LtUYpjssA0TZAk42RCvxHuCUwEZrcjRbGy6+ffidYSHAogT8N69yL4fL42pP4Nls17+tske1Dw"}}, "unsigned": {"age_ts": 1570042506129}}aeQu$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "429", "stream_ordering": 2284}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042505599, "hashes": {"sha256": "YSJbDajHxhnSNBVwogCFiN0qLtR84VacQaj8R6iMhAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ylFd7keaRGfyC0uh+3Wolv4DZIgcpRzkBrk4TAafY0hZYRHJULyKrPOGqneNiM1rz7TgvhyxdJx/OGOANyPYDA"}}, "unsigned": {"age_ts": 1570042505599}}`eQu$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "428", "stream_ordering": 2283}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042505125, "hashes": {"sha256": "mRB6l8NaoFv7EzPJtEAY6fHuQABS5q/E2gXqBjNvi/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T3BRhyhyavozehSq8h+6Q+3zTQd2cmXjCwxjaxwBgwNb0ZXr5qz0LnnvPZWnS+2bpLl8NeUV3bSFw6pQF6VVDg"}}, "unsigned": {"age_ts": 1570042505125}}_eQu$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc!HXfrGcvJCbRItyQLVE:localhost:8800{"token_id": 428, "txn_id": "427", "stream_ordering": 2282}{"auth_events": ["$XczGGrINjf6wQtO7hw0LwMD8wvwnPLi-NVwRMuradnU", "$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg", "$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM"], "prev_events": ["$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s"], "type": "m.room.message", "room_id": "!HXfrGcvJCbRItyQLVE:localhost:8800", "sender": "@anon-20191002_181700-412:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042504499, "hashes": {"sha256": "iIq6tlCmbjw5E8tRCDQ0gqrROgWfy3KNAREMAOMuogA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3y5LcLSmCISl6VtpJH4Z8pvHJxCIIQmFdvT+ceEjFUvU5n6YrToCv76Fu8oR7V3ItL114breggC1fU3wcUYqAQ"}}, "unsigned": {"age_ts": 1570042504499}} y[ o ! y ' =Ncay e'Q ]$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdism.room.member!AMLmLqizBFklpqKibP:localhost:8800mӸmӸ@anon-20191002_181700-418:localhost:8800e#Q ]$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUm.room.name!AMLmLqizBFklpqKibP:localhost:8800mӴmӵz@anon-20191002_181700-417:localhost:8800e#Q ]$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQm.room.test!AMLmLqizBFklpqKibP:localhost:8800mӲmӲ@anon-20191002_181700-417:localhost:8800,e?Q ]$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGom.room.history_visibility!AMLmLqizBFklpqKibP:localhost:8800mӮ"mӯ@anon-20191002_181700-417:localhost:8800$~e/Q ]$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIm.room.join_rules!AMLmLqizBFklpqKibP:localhost:8800mӫmӬ@anon-20191002_181700-417:localhost:8800&}e3Q ]$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4m.room.power_levels!AMLmLqizBFklpqKibP:localhost:8800mӨmӪG@anon-20191002_181700-417:localhost:8800 |e'Q ]$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7km.room.member!AMLmLqizBFklpqKibP:localhost:8800mӦnmӦ@anon-20191002_181700-417:localhost:8800{ e'Q  ]$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Ym.room.create!AMLmLqizBFklpqKibP:localhost:8800mӣmӣ@anon-20191002_181700-417:localhost:8800!ze)Q ] $chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEm.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӗmӘG@anon-20191002_181700-415:localhost:8800!ye)Q ] $THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEMm.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӖ)mӖ1@anon-20191002_181700-415:localhost:8800!xe)Q ] $xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNom.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӓmӓ@anon-20191002_181700-415:localhost:8800!we)Q ] $fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIm.room.message!rWGwSSefrZzQYCYFHs:localhost:8800 mӑFmӑJ@anon-20191002_181700-416:localhost:8800 ve'Q ] $88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBYm.room.member!rWGwSSefrZzQYCYFHs:localhost:8800 mӌmӍI@anon-20191002_181700-416:localhost:8800 ue'Q ]$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4m.room.member!rWGwSSefrZzQYCYFHs:localhost:8800mӈmӉ@anon-20191002_181700-415:localhost:8800te#Q ]$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqcm.room.name!rWGwSSefrZzQYCYFHs:localhost:8800mӅmӆ1@anon-20191002_181700-414:localhost:8800se#Q ]$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwgm.room.test!rWGwSSefrZzQYCYFHs:localhost:8800mӃmӃ@anon-20191002_181700-414:localhost:8800,re?Q ]$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgm.room.history_visibility!rWGwSSefrZzQYCYFHs:localhost:8800mmӁ5@anon-20191002_181700-414:localhost:8800$qe/Q ]$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PYm.room.join_rules!rWGwSSefrZzQYCYFHs:localhost:8800m|'m}@anon-20191002_181700-414:localhost:8800&pe3Q ]$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVIm.room.power_levels!rWGwSSefrZzQYCYFHs:localhost:8800myEmz@anon-20191002_181700-414:localhost:8800 oe'Q ]$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSsm.room.member!rWGwSSefrZzQYCYFHs:localhost:8800mvmwX@anon-20191002_181700-414:localhost:8800n e'Q  ]$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8m.room.create!rWGwSSefrZzQYCYFHs:localhost:8800mrmt@anon-20191002_181700-414:localhost:8800!me)Q ]$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDIm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800mkml@anon-20191002_181700-412:localhost:8800!le)Q ] $dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXsm.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 mimi@anon-20191002_181700-412:localhost:8800!ke)Q ] $1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNom.room.message!HXfrGcvJCbRItyQLVE:localhost:8800 mgmg@anon-20191002_181700-412:localhost:8800 ah@0`8pH `8xP(  p H pH X0h@ X 0  h @  xP( ` P (   8 xX'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!IZkczIYykpZDvjuUWn:localhost:8800 B'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:88002'Q!IYxUkyFHOgvhLpdkOA:localhost:88001'Q!IYxUkyFHOgvhLpdkOA:localhost:88000'Q!IYxUkyFHOgvhLpdkOA:localhost:8800/'Q!IYxUkyFHOgvhLpdkOA:localhost:8800.'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800-'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800 K'Q!IZkczIYykpZDvjuUWn:localhost:8800 J'Q!IZkczIYykpZDvjuUWn:localhost:8800 I'Q!IZkczIYykpZDvjuUWn:localhost:8800 H'Q!IZkczIYykpZDvjuUWn:localhost:8800 G'Q!IZkczIYykpZDvjuUWn:localhost:8800 F'Q!IZkczIYykpZDvjuUWn:localhost:8800 E'Q!IZkczIYykpZDvjuUWn:localhost:8800 D'Q!IZkczIYykpZDvjuUWn:localhost:8800 C'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!IlGJpjzrvvAFuwTAgo:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JZouHBRxCRbcxYJnbn:localhost:8800'Q!JYLMokjOhZZlmbZvTf:localhost:8800~'Q!JYLMokjOhZZlmbZvTf:localhost:8800}'Q!JYLMokjOhZZlmbZvTf:localhost:8800|'Q!JYLMokjOhZZlmbZvTf:localhost:8800{'Q!JYLMokjOhZZlmbZvTf:localhost:8800z'Q!JYLMokjOhZZlmbZvTf:localhost:8800y'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800 i g 4 i5h 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1WlgoԂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAoӂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgo҂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAoق1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAoՂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwo؂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDegoׂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwoւ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7Qoт1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0VzngoЂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAoς1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAoۂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQo   *tfeQau$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2289}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI"], "type": "m.room.join_rules", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042510375, "hashes": {"sha256": "mENT5ymw2EShmSuqWLwbPPtvE1HwbVdj/rYfWRkCgYw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x1LYU40sb+Bpfs9+NCkNIRjLswj4dS+rkP0ORwpk4t8afrVdz4EVjmPS0lMRtDDkZ4iomCZTPMHW99cHs+MzBQ"}}, "unsigned": {"age_ts": 1570042510375}}keeQac$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2288}{"auth_events": ["$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "type": "m.room.power_levels", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"users": {"@anon-20191002_181700-414:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042509637, "hashes": {"sha256": "AbLAkrqeyTJ8gE7S/VxGbKoqUM5I4unu711JFqqEX6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ffd215NBn7tr9cW8xmMRGKtmGa8mw7pUtlPAYrU1VLMmeUnoucemT1fNoHyYL7427d6DIGF1D0tYnm6GLCPAAw"}}, "unsigned": {"age_ts": 1570042509637}}vdeQay$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2287}{"auth_events": ["$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8"], "prev_events": ["$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8"], "type": "m.room.member", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-414", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-414:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042509029, "hashes": {"sha256": "In0vIQikqGsOWsmP+DB/4eus0Yx0pL8uFMjOgLuwNXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O7qyJhCN44uQPYwDbmdOq6OdqISQTD0seBADY/q/gMz8/Pbzck5fFBFP6VyE2S+NE69Xa+IjkRHeEAgit/8DCw"}}, "unsigned": {"age_ts": 1570042509029}}iceQa_$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2286}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-414:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042507968, "hashes": {"sha256": "fhwM1wAj8wH5nA9swHM/gfUcQVbWL7BRpCARNvoKA2A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6pK2ER8VJY9uZjirehYQ55/3ciGr9fst6r/FlCMuNMA+E0JkHV2B4pIH2KrEIwcSb8pGfmIy++BjD4vInByJDA"}}, "unsigned": {"age_ts": 1570042507968}} Jp? w E  } K   Q  W % ^ ,d2j8p> vD|J*P\V$j1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ6241e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIok1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0 1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0h1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk:1e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv01e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY?1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc &1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8h1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMN1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfcu1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI11e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xIV1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo81e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0x1e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY B1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE 1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE %1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY.1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8 81e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR941e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rcr1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc 1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkP1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQE1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc P1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs 1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSY1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdof1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQgY1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 51e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU$1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo21e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw:0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg D1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU0N1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o "Ms 1 B Q Z CqWf$5DMgoeQ3 $yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels neQ']$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800ameQ' $qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800m.room.create leQ']$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-426:localhost:8800 keQ']$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-425:localhost:8800_jeQ# $tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.namemieQ? $GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.history_visibilityeheQ/ $fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.join_rulesggeQ3 $tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.power_levels feQ']$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-424:localhost:8800aeeQ' $-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create deQ']$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800 ceQ']$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800_beQ# $gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.namemaeQ? $auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibilitye`eQ/ $mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rulesg_eQ3 $PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels ^eQ']$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800a]eQ' $aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create \eQ']$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800 [eQ']$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800_ZeQ# $4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800m.room.namemYeQ? $rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibilityeXeQ/ $5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rulesgWeQ3 $M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels VeQ']$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800aUeQ' $7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800m.room.create TeQ']$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800 SeQ']$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800_ReQ# $DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800m.room.namemQeQ? $5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800m.room.history_visibilityePeQ/ $Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800m.room.join_rulesgOeQ3 $gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800m.room.power_levels NeQ']$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-414:localhost:8800  4 h m9d]c@anon-20191002_181700-452:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwo127.0.0.1d]c@anon-20191002_181700-449:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAo127.0.0.1d]c@anon-20191002_181700-447:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywo127.0.0.1d]c@anon-20191002_181700-448:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAo127.0.0.1d]c@anon-20191002_181700-450:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwo127.0.0.1a[a@anon-20191002_181700-44:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gditrSEZicTdNQyZkMStYSQowMDJmc2lnbmF0dXJlIG7Ci23wOxdG5Lzt0gwhTNMc6PqP69i92SFhfSQiebk0Cg127.0.0.1#d]c@anon-20191002_181700-446:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0wo127.0.0.1d]c@anon-20191002_181700-445:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAo127.0.0.1d]c@anon-20191002_181700-444:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-Mgo127.0.0.1d]c@anon-20191002_181700-443:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5Da1ZYVGEsbVJOZmI1dCYKMDAyZnNpZ25hdHVyZSBjz-vUfZk1Zkypt5OEijykhRSxh43fSCBn96gcrHzhqAo127.0.0.1d]c@anon-20191002_181700-442:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY5Ni5nNmJVdVc3TVQwd0gKMDAyZnNpZ25hdHVyZSBnyuRDIco-3F101-WmUcWzSotfzDJSJ1tRM1jivmRsOAo127.0.0.1  w +VjeQa9$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "stream_ordering": 2293}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"], "prev_events": ["$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc"], "type": "m.room.member", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-415", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-415:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042513642, "hashes": {"sha256": "fFaq2H+MGQHgs/iT10WeNkQa2rtBin0p56Myy/mmmRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DNBaB7LCT3JtwyG7Wx/0LCEmpRlDQCC3cb3zdj0jfweBK558CPC9Qg8HbjrIV9jbjGTcNUHtqr4hlZoOKnUgDA"}}, "unsigned": {"age_ts": 1570042513642}}nieQai$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2292}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg"], "type": "m.room.name", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042512811, "hashes": {"sha256": "4AU+arNG0MxjZBHqeBNBkN6XpgbmtMUCXHgaXrB/njA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nJmfXgbi4haY8i2Bb9xPYJ3dB38/J+2/euoBNZIXythYHY3qaUD2kXlXpYJ3UUxSmi0QmIYuynU9yoocSbSqAg"}}, "unsigned": {"age_ts": 1570042512811}}HheQa$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2291}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg"], "type": "m.room.test", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042512368, "hashes": {"sha256": "WJaMK5OvZ3y8x4qj0csX/ar0IXaM0bzU38A5QipYEzo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QNPHZ/QUUoPdrcCnot55E0RcRwBxQtVRAiEPwnF5QTil9QeBO/mBVUN9ZzcHHF2P05ucNlIRzKfZxatNFp5/Bg"}}, "unsigned": {"age_ts": 1570042512368}}geQa$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 432, "stream_ordering": 2290}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs"], "prev_events": ["$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"], "type": "m.room.history_visibility", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-414:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042511135, "hashes": {"sha256": "2Vt6kjtY2vbThmrDktqd9IpGW4BgOT4S01WTp3wm8q8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W66Rtj5XVTGbHLg+/6rhekrSvty89LA/KbeuAp32KwCXWM5LC1yFDQdm0flhmq8880lW3mpBZb3GrySVD24HDw"}}, "unsigned": {"age_ts": 1570042511135}} a} { y w u sqomkigeca~7eeQ$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~6eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800~5eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~4eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~3eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800~2eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~1eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~0eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~/eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~.eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~-eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~,eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~+eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~*eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~)eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~(eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800~'eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800~&eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~%eeQ$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800~$eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800~#eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~"eeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~!eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800~ eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8!rWGwSSefrZzQYCYFHs:localhost:8800~eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI!rWGwSSefrZzQYCYFHs:localhost:8800 HMt P  J nYb h6 V $    \ * | 'S! v>yGA< 0 MA 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y 1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho m1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EQ1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMI1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObww1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwv1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwu1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y 1e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo1e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk 1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w 1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY 1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAY1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMA1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0_1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0^1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMH1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMG1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUh1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA\1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMC1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsMB1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUi1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs-1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs,1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc "1e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kg1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3EA1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E@1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E?1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA^1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA]1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I D21e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUj1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs.1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho k1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 ~1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 }1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0 | 21e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAWp21e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho l1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAX821e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EP1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3EO1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4d1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0]1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 !uq|  A # . Xdo'4?Dhu 0Q']e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-428:localhost:8800$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoa/Q# e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.name$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dso.Q? e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.history_visibility$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kg-Q/ e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.join_rules$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYi,Q3 e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU +Q']e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4c*Q' e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.create$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ )Q']e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-426:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE (Q']e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-425:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Qa'Q# e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.name$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4Eo&Q? e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.history_visibility$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Eg%Q/ e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.join_rules$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMi$Q3 e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.power_levels$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo #Q']e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-424:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIc"Q' e!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco !Q']e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k Q']e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEaQ# e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.name$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsoQ? e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibility$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEgQ/ e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rules$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEiQ3 e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.power_levels$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU Q']e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-420:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMcQ' e!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.create$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM Q']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-419:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE Q']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-418:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisaQ# e!AMLmLqizBFklpqKibP:localhost:8800m.room.name$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUoQ? e!AMLmLqizBFklpqKibP:localhost:8800m.room.history_visibility$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGogQ/ e!AMLmLqizBFklpqKibP:localhost:8800m.room.join_rules$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIiQ3 e!AMLmLqizBFklpqKibP:localhost:8800m.room.power_levels$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4 Q']e!AMLmLqizBFklpqKibP:localhost:8800m.room.member@anon-20191002_181700-417:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kcQ' e!AMLmLqizBFklpqKibP:localhost:8800m.room.create$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y Q']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY Q']e!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-415:localhost:8800$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4 [[3 }U-X0h@`pH X 0  h @  x P ( ` 8  p H xP(`8pH mE8'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wAyboOFgsOPwkmgMAI:localhost:88009'Q!wCsDjKBtuUbrmZgjsB:localhost:88008'Q!wAyboOFgsOPwkmgMAI:localhost:8800>'Q!wAyboOFgsOPwkmgMAI:localhost:8800='Q!wAyboOFgsOPwkmgMAI:localhost:8800<'Q!wAyboOFgsOPwkmgMAI:localhost:8800;'Q!wAyboOFgsOPwkmgMAI:localhost:8800:&Q!wvnfKBSrUlfNmYoeil:localhost:8800y&Q!wvnfKBSrUlfNmYoeil:localhost:8800x&Q!wvnfKBSrUlfNmYoeil:localhost:8800w'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800 'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 -'Q!whuymJoLfUdkFdxoyE:localhost:8800 ,'Q!whuymJoLfUdkFdxoyE:localhost:8800 +'Q!whuymJoLfUdkFdxoyE:localhost:8800 *'Q!whuymJoLfUdkFdxoyE:localhost:8800 )'Q!whuymJoLfUdkFdxoyE:localhost:8800 ('Q!whuymJoLfUdkFdxoyE:localhost:8800 ''Q!whuymJoLfUdkFdxoyE:localhost:8800 &'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800a'Q!wLitJYvgvNJzanSIvO:localhost:8800`'Q!wLitJYvgvNJzanSIvO:localhost:8800_'Q!wLitJYvgvNJzanSIvO:localhost:8800^'Q!wLitJYvgvNJzanSIvO:localhost:8800]'Q!wLitJYvgvNJzanSIvO:localhost:8800\'Q!wIhMbfQzYbJobPdwyi:localhost:8800~'Q!wIhMbfQzYbJobPdwyi:localhost:8800}'Q!wIhMbfQzYbJobPdwyi:localhost:8800|'Q!wIhMbfQzYbJobPdwyi:localhost:8800{'Q!wIhMbfQzYbJobPdwyi:localhost:8800z'Q!wIhMbfQzYbJobPdwyi:localhost:8800y('Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 +eX^ k x ' 4 A N [ hu$1>Ker!P]Q@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800P]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800aP]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800`P]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800_P]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800^P]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800]P]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800P]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800P]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800P]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800P]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800P]Q@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800P]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800P]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800~P]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800}P]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800|P]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800{P]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800zP]Q@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800yP]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800xP]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800wP]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800vP]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800uP]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800tP]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800rP]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800qP]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800pP]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800oP]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800nP]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800mP]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800lP]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800kP]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800jP]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800iP]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800hP]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800gP]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800fP]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800eP]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800dP]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800cP]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800b N?> I L   O U  X   [ a!i-l0|@CG RP=R ]  @anon-20191002_181700-447:localhost:8800m&\T>Q ]  @anon-20191002_181700-446:localhost:8800m&\ "9P ]@anon-20191002_181700-446:localhost:8800a&\9O ]@anon-20191002_181700-447:localhost:8800a&\>N ]  @anon-20191002_181700-445:localhost:8800m&\>K ]@anon-20191002_181700-443:localhost:8800m&\=L ]  @anon-20191002_181700-444:localhost:8800m&\V 9M ]@anon-20191002_181700-445:localhost:8800a&\>J ]  @anon-20191002_181700-442:localhost:8800m&\9I ]@anon-20191002_181700-444:localhost:8800a&\9H ]@anon-20191002_181700-443:localhost:8800a&\9G ]@anon-20191002_181700-442:localhost:8800a&\=F ]  @anon-20191002_181700-441:localhost:8800m&\W=E ]  @anon-20191002_181700-440:localhost:8800m&\W=D ]  @anon-20191002_181700-439:localhost:8800m&\V=C ]  @anon-20191002_181700-438:localhost:8800m&\V=B ]  @anon-20191002_181700-437:localhost:8800m&\V>A ]  @anon-20191002_181700-436:localhost:8800m&\ 9@ ]@anon-20191002_181700-441:localhost:8800a&\9? ]@anon-20191002_181700-440:localhost:8800a&\9> ]@anon-20191002_181700-439:localhost:8800a&\9= ]@anon-20191002_181700-437:localhost:8800a&\9< ]@anon-20191002_181700-436:localhost:8800a&\9; ]@anon-20191002_181700-438:localhost:8800a&\=: ]  @anon-20191002_181700-435:localhost:8800m&\V=9 ]  @anon-20191002_181700-434:localhost:8800m&\V>8 ]  @anon-20191002_181700-433:localhost:8800m&\97 ]@anon-20191002_181700-434:localhost:8800a&\96 ]@anon-20191002_181700-433:localhost:8800a&\95 ]@anon-20191002_181700-435:localhost:8800a&\=4 ]  @anon-20191002_181700-432:localhost:8800m&\V=3 ]  @anon-20191002_181700-431:localhost:8800m&\V>2 ]  @anon-20191002_181700-430:localhost:8800m&\ 91 ]@anon-20191002_181700-432:localhost:8800a&\90 ]@anon-20191002_181700-431:localhost:8800a&\>- ] @anon-20191002_181700-428:localhost:8800m&\&=. ]  @anon-20191002_181700-429:localhost:8800m&\V 9/ ]@anon-20191002_181700-430:localhost:8800a&\>, ]  @anon-20191002_181700-427:localhost:8800m&\9+ ]@anon-20191002_181700-429:localhost:8800a&\9* ]@anon-20191002_181700-428:localhost:8800a&\>' ] @anon-20191002_181700-425:localhost:8800m&\&=( ]  @anon-20191002_181700-426:localhost:8800m&\V 9) ]@anon-20191002_181700-427:localhost:8800a&\>& ]  @anon-20191002_181700-424:localhost:8800m&\9% ]@anon-20191002_181700-426:localhost:8800a&\9$ ]@anon-20191002_181700-424:localhost:8800a&\>! ] @anon-20191002_181700-421:localhost:8800m&\&=" ]  @anon-20191002_181700-422:localhost:8800m&\VE9# ]@anon-20191002_181700-425:localhost:8800a&\> ]  @anon-20191002_181700-420:localhost:8800m&\9 ]@anon-20191002_181700-423:localhost:8800a&\9 ]@anon-20191002_181700-421:localhost:8800a&\9 ]@anon-20191002_181700-422:localhost:8800a&\> ] @anon-20191002_181700-418:localhost:8800m&\= ]  @anon-20191002_181700-419:localhost:8800m&\V9 ]@anon-20191002_181700-420:localhost:8800a&\> ]  @anon-20191002_181700-417:localhost:8800m&\9 ]@anon-20191002_181700-419:localhost:8800a&\9 ]@anon-20191002_181700-417:localhost:8800a&\> ] @anon-20191002_181700-415:localhost:8800m&\ 2> ] @anon-20191002_181700-416:localhost:8800m&\L9 ]@anon-20191002_181700-418:localhost:8800a&\  &neQu$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "txn_id": "433", "stream_ordering": 2297}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "prev_events": ["$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042517033, "hashes": {"sha256": "Jtgp3ifSLYphf4UbrtV2uqZX+M5s/fVb8fsCaXEO56w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZfBahrzLtyMUl5qxN5m37+mYfbY2tCjeaYj5JniApY2zO6jf8bzv+0HfTogeek7u+UUnaM00U71vcFz4OqrpCQ"}}, "unsigned": {"age_ts": 1570042517033}}meQu$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "txn_id": "432", "stream_ordering": 2296}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "prev_events": ["$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"body": "Message 1", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042516391, "hashes": {"sha256": "ZaTz44DLi8/LbjEsssgp57smsuDwUESTTOW6FqsSVSw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vXFxJUMmrCnGpq/uzKXc2+V7xpYYyqvNFub8DSKb12J9Un4due1UzlkuNqJmizFzkT0w6FABDvGIPwXpUzQ8AA"}}, "unsigned": {"age_ts": 1570042516391}}leQy$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 433, "txn_id": "431", "stream_ordering": 2295}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY"], "prev_events": ["$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-416:localhost:8800", "content": {"msgtype": "m.text", "body": "Hello world"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042515782, "hashes": {"sha256": "OIslmMgxWJncYlfM0cdQCXcfNmWf/3atazK8FqfJId8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T8HkF0PvdMME77OQQoV6PGqEXI8XA2PQKr1VEoYPFGvk+frnD+1Sto5MY2vvW72QwAscxOd22Dr7r/wTCA7dDw"}}, "unsigned": {"age_ts": 1570042515782}}VkeQa9$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 433, "stream_ordering": 2294}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"], "prev_events": ["$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "type": "m.room.member", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-416:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-416", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-416:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042514669, "hashes": {"sha256": "9RLJHrYSqnKrGZnkB2/75b7xdqDzr0/+Q0xHQMRtgsU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wKMdv2RzmDx2mnBV9mUbpz0jUQ/JRVmTv4X9D0p/2FHLjZ1bPi+GfwBwybW293jQ2Eh9gwqCJbnMVaoHz0b1Dg"}}, "unsigned": {"age_ts": 1570042514669}} 9HW%j83p> ?  v D  | K  Sw ! _ - Y} ' ]+QKEq1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA<1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs 1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs 1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UI1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2UH1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY>1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K01e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4R1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY@1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY?1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA=1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAP1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAO1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAN1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYA1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkw1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkv1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIku1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs ed1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX81e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA21e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM 1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs ~1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs }1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe01e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe01e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY)1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY(1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY E1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY D1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY C1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egU1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egT1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7egS1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE\1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE[1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xEZ1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu81e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu81e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4Q -RM H C > 9 4/*|%w rmhc TbQe &!yTQmLDAxZscWKLMSWh:localhost:8800$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUTaQe %!yTQmLDAxZscWKLMSWh:localhost:8800$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4T`Qe $!yTQmLDAxZscWKLMSWh:localhost:8800$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQT_Qe #!eWRdwtyqHvuxZFvhNS:localhost:8800$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwT^Qe "!eWRdwtyqHvuxZFvhNS:localhost:8800$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUykT]Qe !!eWRdwtyqHvuxZFvhNS:localhost:8800$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAET\Qe !eWRdwtyqHvuxZFvhNS:localhost:8800$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8T[Qe !eWRdwtyqHvuxZFvhNS:localhost:8800$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlETZQe !eWRdwtyqHvuxZFvhNS:localhost:8800$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QTYQe !eWRdwtyqHvuxZFvhNS:localhost:8800$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4ETXQe !eWRdwtyqHvuxZFvhNS:localhost:8800$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8TWQe !eWRdwtyqHvuxZFvhNS:localhost:8800$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3ETVQe !eWRdwtyqHvuxZFvhNS:localhost:8800$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMTUQe !eWRdwtyqHvuxZFvhNS:localhost:8800$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoTTQe !eWRdwtyqHvuxZFvhNS:localhost:8800$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXITSQe !eWRdwtyqHvuxZFvhNS:localhost:8800$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcoTRQe !UGVFuRGyPQmBbGsEDo:localhost:8800$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCATQQe !UGVFuRGyPQmBbGsEDo:localhost:8800$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMTPQe !UGVFuRGyPQmBbGsEDo:localhost:8800$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8TOQe !UGVFuRGyPQmBbGsEDo:localhost:8800$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxETNQe !UGVFuRGyPQmBbGsEDo:localhost:8800$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kTMQe !UGVFuRGyPQmBbGsEDo:localhost:8800$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxETLQe !UGVFuRGyPQmBbGsEDo:localhost:8800$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-OsTKQe !UGVFuRGyPQmBbGsEDo:localhost:8800$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyATJQe !UGVFuRGyPQmBbGsEDo:localhost:8800$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BETIQe !UGVFuRGyPQmBbGsEDo:localhost:8800$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoETHQe !UGVFuRGyPQmBbGsEDo:localhost:8800$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUTGQe !UGVFuRGyPQmBbGsEDo:localhost:8800$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMTFQe !UGVFuRGyPQmBbGsEDo:localhost:8800$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMTEQe !AMLmLqizBFklpqKibP:localhost:8800$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMTDQe !AMLmLqizBFklpqKibP:localhost:8800$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMITCQe !AMLmLqizBFklpqKibP:localhost:8800$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGATBQe !AMLmLqizBFklpqKibP:localhost:8800$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUTAQe !AMLmLqizBFklpqKibP:localhost:8800$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7MT@Qe !AMLmLqizBFklpqKibP:localhost:8800$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMT?Qe !AMLmLqizBFklpqKibP:localhost:8800$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zET>Qe !AMLmLqizBFklpqKibP:localhost:8800$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisT=Qe !AMLmLqizBFklpqKibP:localhost:8800$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUT<Qe !AMLmLqizBFklpqKibP:localhost:8800$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQT;Qe!AMLmLqizBFklpqKibP:localhost:8800$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGoT:Qe!AMLmLqizBFklpqKibP:localhost:8800$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIT9Qe!AMLmLqizBFklpqKibP:localhost:8800$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4T8Qe!AMLmLqizBFklpqKibP:localhost:8800$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7kT7Qe!AMLmLqizBFklpqKibP:localhost:8800$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0YT6Qe!rWGwSSefrZzQYCYFHs:localhost:8800$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE  v kreQac$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2301}{"auth_events": ["$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "type": "m.room.power_levels", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"users": {"@anon-20191002_181700-417:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042521803, "hashes": {"sha256": "bbeC5ciphOZue3utLPMpkoDTTkWD6Qcr5Ki1JlkuN6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r0u5NgLw7IN+2xIS+TSReO2pzARioJDCBQzkGfqVs5e/w3tnr9/UMufzoVHPg8GqOKeSq27bK4drfCc74MF4AQ"}}, "unsigned": {"age_ts": 1570042521803}}vqeQay$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2300}{"auth_events": ["$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y"], "prev_events": ["$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y"], "type": "m.room.member", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-417", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-417:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042521198, "hashes": {"sha256": "ElJzSUFd8LzmccYdDESKxhA3LdtPQilURs3g0cc5YDQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r6H+A/fNROknFWW7/77v5rUL4wPoPmzd6mCRqQjYsBD9g19eBj+QNggty++QL5HsNfHQApXN17iA40GlC1DFBA"}}, "unsigned": {"age_ts": 1570042521198}}ipeQa_$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2299}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-417:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042520451, "hashes": {"sha256": "lTP4CeAWrHHpS0QZKL+mcEbFMgUWQ31YAVQnYVVN/JY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZGB+2Etaqj9XhzOaNzjEgKOLerY6kPoVmN9EUresgyvW0YnXiKyI6NK2pWPaROCdIE8qAPcwJy0xDUdpQ/mRDA"}}, "unsigned": {"age_ts": 1570042520451}}oeQu$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800{"token_id": 431, "txn_id": "434", "stream_ordering": 2298}{"auth_events": ["$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI", "$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B8", "$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4"], "prev_events": ["$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM"], "type": "m.room.message", "room_id": "!rWGwSSefrZzQYCYFHs:localhost:8800", "sender": "@anon-20191002_181700-415:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042517496, "hashes": {"sha256": "hmahNd97Qj7O7Wsc5CE2FdQ/nuNX9lzq9M5n94zLoj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F5OOrGfIpOwaeuXqwVgDDS5bFgtmjjvMnxhClMKQV7wTEJp1XnKlzCl3IiH+ET9oMNJk2/jY2deiOqyY7gT6Dw"}}, "unsigned": {"age_ts": 1570042517496}} ~z v r n j fb^ZVRNJFGeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800FeeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800EeeQ$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800DeeQ$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800CeeQ$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800BeeQ$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800AeeQ$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800@eeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800?eeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800>eeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA!UGVFuRGyPQmBbGsEDo:localhost:8800=eeQ$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800<eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800;eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800:eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:88009eeQ$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:88008eeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:88007eeQ$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:88006eeQ$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:88005eeQ$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:88004eeQ$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:88003eeQ$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:88002eeQ$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:88001eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:88000eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ!AMLmLqizBFklpqKibP:localhost:8800/eeQ$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800.eeQ$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800-eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800,eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800+eeQ$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y!AMLmLqizBFklpqKibP:localhost:8800*eeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM!rWGwSSefrZzQYCYFHs:localhost:8800 L  y H  r7 P   V $i  \ * b 0p> 5wE~LS![)a/gk:1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQd0e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7wk1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8N1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIH1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4B1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0A1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I<1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc21e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI11e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k+1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv00e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcb0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY0e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE&1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM.1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSYi1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQz1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4q0e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUC1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A0e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4<1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz01e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xoa0e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Eo1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ40e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLRE1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEC1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwW1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM81e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapUt1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$j7z2tKk_NzLLkdWJzMHd9lCaQ7UfQvaUUzt2ICTE8xY1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Qc1e$j0PuJPpgjqEOV1AJIuIm80JcP8E27XKy9lEeOsvjR940e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc1e$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC01e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkB1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM0e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0~0e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQT1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k}1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m4c1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4ov1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwr1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQo1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk0e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PUM1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg{0e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY}1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y A AnveQai$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2305}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ"], "type": "m.room.name", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042524903, "hashes": {"sha256": "s0UO7MxXt9k34wlzXmqe6bdaoOuiZU0BdS8luPnmHeU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gstmsIDw0gB8v0UuS7h69l8VmK2pTfBDTamMlWlGm9t8BOxc8LXxYl8ZCxiWBSD8GdbPz6j/O70ocTSFtBL9AQ"}}, "unsigned": {"age_ts": 1570042524903}}HueQa$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2304}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo"], "type": "m.room.test", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042524301, "hashes": {"sha256": "y6Kfbx/Ez6xNsATAnsCNmD+vOva0dY0sRlnsSJC0yiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SQSQKs7fGogqI0I+9FFUYMI1iv+OhxhZ16e1CCB/rsBvStNqbCO0VlhWdkDLwIoLfXli6TVS1Dbwy31VTKnbDg"}}, "unsigned": {"age_ts": 1570042524301}}teQa$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2303}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI"], "type": "m.room.history_visibility", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042523170, "hashes": {"sha256": "BXzzzq0xooFwBBEA8u0bgUX5lAxxcZ/U0V8IrcAualg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VyYwjRdh4WH0gTACgK3on3E4k39Zdr2Xdlwo1PKteLt4Rch7z/ag/GUNqX+JLSNKe9ax2xIkNdr2KBV/JstkBA"}}, "unsigned": {"age_ts": 1570042523170}}tseQau$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 435, "stream_ordering": 2302}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k"], "prev_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4"], "type": "m.room.join_rules", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-417:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042522577, "hashes": {"sha256": "44xElXHJDbw1A74wYf+BKexfqZxT+L8UXYH+Ws/vzHc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m0YneecatTdMlrIbHD1+mucbgojCBS5iTYTF8/tpRRJbz7yMFCxeq80KYaRdqmhNegGiVBgV01nf4x5qp6ybAg"}}, "unsigned": {"age_ts": 1570042522577}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1.e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM1-e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU1,e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1+e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE1*e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc1)e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs1(e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV41'e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701&e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1%e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g1$e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI1#e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk1"e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B41!e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw1 e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s1e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX81e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w1e$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c1e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ1e$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k1 e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY1 e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU1 e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR41 e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ1 e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk1e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE81e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l81e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E1e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo1~e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1}e$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco1|e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA1{e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM1ze$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT81ye$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE1xe$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k1we$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1ve$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os1ue$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA1te$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE1se$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE1re$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU1qe$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1pe$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1oe$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM1ne$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1me$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1le$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU1ke$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1je$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM1ie$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1he$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis1ge$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU1fe$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ1ee$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo1de$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI 8 &L8zeQu$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "436", "stream_ordering": 2309}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042528017, "hashes": {"sha256": "FOkHQsApTf4YFlLgcdtZ/xvwMfmC1l04K1bdhMrIfNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bg71FNGmtI/2zVBbXCC9w+Z6+1j9j1xGfO0njVPm22NSHn17kh8J6rXRE6yaNNuh1yxiQiDtjRvsgaL06eKFCg"}}, "unsigned": {"age_ts": 1570042528017}}yeQu$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIM!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "435", "stream_ordering": 2308}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042527339, "hashes": {"sha256": "7ZSjWjLRWbXWgJcsvf8ZFcFKKAPLDiNyogEp6JbEqns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GeWTVQgIOvX9O6facU+E2Z5wCkNw3EIznuTk1QJsYtNPMxdltxR445gxNEMkpcQUeSTUvhgxf+JLtHeVPb7PDA"}}, "unsigned": {"age_ts": 1570042527339}}VxeQa9$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 436, "stream_ordering": 2307}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI"], "prev_events": ["$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "type": "m.room.member", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-419:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-419", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-419:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042526546, "hashes": {"sha256": "0GrcRtIRY6tpFl5GDvhPZcwoLJ6tQH87f9rqs7/bjZc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lBcPBPIOemerXK8Ynf9P3vxIaaPb5xpWtVWHa3Wbc1UfHHSltYQ74VqD0aWbpn2dG0T/lfjTYxvCCkZN5EwdBg"}}, "unsigned": {"age_ts": 1570042526546}}VweQa9$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "stream_ordering": 2306}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI"], "prev_events": ["$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU"], "type": "m.room.member", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-418", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-418:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042525718, "hashes": {"sha256": "OvQZZ2CB8fDBXfBZGuv6KZunkW/TSDkU0eosSB20wdo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wVg2mQyYmOsQFusG7JSxZ9KqTos/av4gcbsj462JbIz4zgnDGtrra2FYafFAGaffIYQCIRQx0x5h5uTld7VuCA"}}, "unsigned": {"age_ts": 1570042525718}} ~\ m # ~ 8 6N`t&~$e/Q ]$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMm.room.join_rules!eWRdwtyqHvuxZFvhNS:localhost:8800m m @anon-20191002_181700-424:localhost:8800&e3Q ]$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYom.room.power_levels!eWRdwtyqHvuxZFvhNS:localhost:8800m km @anon-20191002_181700-424:localhost:8800 e'Q ]$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIm.room.member!eWRdwtyqHvuxZFvhNS:localhost:8800mm@anon-20191002_181700-424:localhost:8800 e'Q  ]$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcom.room.create!eWRdwtyqHvuxZFvhNS:localhost:8800mm@anon-20191002_181700-424:localhost:8800!e)Q ] $7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCAm.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mm@anon-20191002_181700-421:localhost:8800!e)Q ] $xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMm.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mwm@anon-20191002_181700-421:localhost:8800!e)Q ] $lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8m.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mjmr@anon-20191002_181700-421:localhost:8800!e)Q ] $sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEm.room.message!UGVFuRGyPQmBbGsEDo:localhost:8800 mm@anon-20191002_181700-421:localhost:8800 e'Q ] $3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1km.room.member!UGVFuRGyPQmBbGsEDo:localhost:8800 m=m@anon-20191002_181700-422:localhost:8800 e'Q ]$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEm.room.member!UGVFuRGyPQmBbGsEDo:localhost:8800mm@anon-20191002_181700-421:localhost:8800e#Q ]$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Osm.room.name!UGVFuRGyPQmBbGsEDo:localhost:8800mmM@anon-20191002_181700-420:localhost:8800e#Q ]$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyAm.room.test!UGVFuRGyPQmBbGsEDo:localhost:8800mm@anon-20191002_181700-420:localhost:8800,e?Q ]$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEm.room.history_visibility!UGVFuRGyPQmBbGsEDo:localhost:8800m3mA@anon-20191002_181700-420:localhost:8800$ e/Q ]$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEm.room.join_rules!UGVFuRGyPQmBbGsEDo:localhost:8800m2mޜ@anon-20191002_181700-420:localhost:8800& e3Q ]$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUm.room.power_levels!UGVFuRGyPQmBbGsEDo:localhost:8800m^m۶@anon-20191002_181700-420:localhost:8800 e'Q ]$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpMm.room.member!UGVFuRGyPQmBbGsEDo:localhost:8800mm[@anon-20191002_181700-420:localhost:8800  e'Q  ]$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMm.room.create!UGVFuRGyPQmBbGsEDo:localhost:8800mm^@anon-20191002_181700-420:localhost:8800! e)Q ]$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LMm.room.message!AMLmLqizBFklpqKibP:localhost:8800mm@anon-20191002_181700-418:localhost:8800!e)Q ]$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMIm.room.message!AMLmLqizBFklpqKibP:localhost:8800mm@anon-20191002_181700-418:localhost:8800!e)Q ] $DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGAm.room.message!AMLmLqizBFklpqKibP:localhost:8800 mm@anon-20191002_181700-418:localhost:8800!e)Q ] $Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUm.room.message!AMLmLqizBFklpqKibP:localhost:8800 m»m@anon-20191002_181700-418:localhost:8800!e)Q ] $k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7Mm.room.message!AMLmLqizBFklpqKibP:localhost:8800 mm@anon-20191002_181700-418:localhost:8800!e)Q ] $KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMm.room.message!AMLmLqizBFklpqKibP:localhost:8800 mӾkmӿ@anon-20191002_181700-418:localhost:8800 e'Q ] $aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEm.room.member!AMLmLqizBFklpqKibP:localhost:8800 mӻRmӻ@anon-20191002_181700-419:localhost:8800  vb~eQu$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "440", "stream_ordering": 2313}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 6"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042530299, "hashes": {"sha256": "ALBFA1kxC6XHYfWxx/kK2Kgvq3EP0E1m8B0NSXqIXOM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tcZLfCAogqYTt8UCBXYKEGmicswCsBfTlaghkubxDZ3HmqXUYl/k2CshEB5lgxGIjxjYkJS9n8GYb2VbAEJfBg"}}, "unsigned": {"age_ts": 1570042530299}}}eQu$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "439", "stream_ordering": 2312}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"body": "Message 5", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042529784, "hashes": {"sha256": "777NCizjwuj2l8H2bDjuSDOKonTnem7wIyOjd4Pu1W8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UhbGOnpWSQVZQCQaPF0bKltzb9KjqI2I7FahIraDUub2udgA8B1ilw2Hr62G3LOJNy26JR6VOk/R1rXjZrcAAg"}}, "unsigned": {"age_ts": 1570042529784}}|eQu$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "438", "stream_ordering": 2311}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042528960, "hashes": {"sha256": "Z2P5+225cu7CHYBqWBNYBrIMVaO2jE58rNg+ku4GN1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iEN3C7EixaNm33MXOFqlvDaG5zslp5VklenCBbAyzAXh9IdeK79vOsyMOPu925MBxJv80bapplEGUccGnfDbBQ"}}, "unsigned": {"age_ts": 1570042528960}}{eQu$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAU!AMLmLqizBFklpqKibP:localhost:8800{"token_id": 434, "txn_id": "437", "stream_ordering": 2310}{"auth_events": ["$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4", "$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y", "$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis"], "prev_events": ["$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M"], "type": "m.room.message", "room_id": "!AMLmLqizBFklpqKibP:localhost:8800", "sender": "@anon-20191002_181700-418:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042528443, "hashes": {"sha256": "zcFPoHOTnZY1ZlJhkjI9UQVBTdWCJ4xbqN/y9eIJSGM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HgBYLjV79D28KCwNmn66S5m2DG5mtByai9PhxwFhxvIVFsxWNq81mvGDtJm5UCd4PX7eUyPrGcOuhtBEAjdtCg"}}, "unsigned": {"age_ts": 1570042528443}} 8l D `8$]c!E@anon-20191002_181700-428:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwoXEDNEAYRYK127.0.0.1Perl + Net::Async::HTTP/0.44mF#]c!E@anon-20191002_181700-427:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7CllgoJZIIFMRYCA127.0.0.1Perl + Net::Async::HTTP/0.44m04"]c!E@anon-20191002_181700-426:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAoGGEPZOIJRJ127.0.0.1Perl + Net::Async::HTTP/0.44m!]c!E@anon-20191002_181700-425:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAoTXVBKWCWYM127.0.0.1Perl + Net::Async::HTTP/0.44mۃ ]c!E@anon-20191002_181700-424:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgoZTZZRYHYSR127.0.0.1Perl + Net::Async::HTTP/0.44m΃]c!E@anon-20191002_181700-422:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowoVPDAIJPBTT127.0.0.1Perl + Net::Async::HTTP/0.44mk]c!E@anon-20191002_181700-421:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0egoUDSBEIJMWH127.0.0.1Perl + Net::Async::HTTP/0.44m܃]c!E@anon-20191002_181700-420:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwoPFSCBSPFUQ127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-419:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3goWRAHOCOTZG127.0.0.1Perl + Net::Async::HTTP/0.44mӹ]c!E@anon-20191002_181700-418:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwoUIZEZFRVWZ127.0.0.1Perl + Net::Async::HTTP/0.44mӶw g * T~=gg8]!c@anon-20191002_181700-432:localhost:8800ZOPSRSBYRNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2Qgog7]!c@anon-20191002_181700-431:localhost:8800JIBNPXSTDLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1wog6]!c@anon-20191002_181700-430:localhost:8800EJQMGEXFCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwog5]!c@anon-20191002_181700-429:localhost:8800OXLZZLMFDNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7Qog4]!c@anon-20191002_181700-428:localhost:8800XEDNEAYRYKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwog3]!c@anon-20191002_181700-427:localhost:8800JZIIFMRYCAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7Cllgog2]!c@anon-20191002_181700-426:localhost:8800GGEPZOIJRJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhYPUc7V2ZsRGVsOWFsfkAKMDAyZnNpZ25hdHVyZSC1jqff--7KITRz_6bJCzownnb1K4IMs-ptkiDku9GetAog1]!c@anon-20191002_181700-424:localhost:8800ZTZZRYHYSRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgog0]!c@anon-20191002_181700-425:localhost:8800TXVBKWCWYMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAog/]!c@anon-20191002_181700-423:localhost:8800LYUZSTXPZRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHorO0g7Y3pjeU5hT1JYbDUKMDAyZnNpZ25hdHVyZSDe3Y0t8ijjLdfk7SzErUv9v-bCc_iVroIMJTor_bCpmgog.]!c@anon-20191002_181700-421:localhost:8800UDSBEIJMWHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0ego   *teQau$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2317}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU"], "type": "m.room.join_rules", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042535218, "hashes": {"sha256": "5KGen/+P5R7AOK1rZfP7DKG4nQufRiUFrBWjSNpTBsE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "giwPtkzkDiG6iHYPB502aV2R3LO67LR5WOTNiD4nleADfW3Wn/C9GV1QWyjnDPw5505imLtivVwt9WIQsQNOCA"}}, "unsigned": {"age_ts": 1570042535218}}keQac$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2316}{"auth_events": ["$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "type": "m.room.power_levels", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"users": {"@anon-20191002_181700-420:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042534494, "hashes": {"sha256": "MM5Fny44Sc9nxfjQ+o7f8Taj1aWy7PoE9SUxmnPJ1Gs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VfKv6wvcFBQCMjYdiSnu53mDaA9hKFCoDnlEP3ZX9cjUaQA6OcqLmYZ3tA0l+cUleCAGFEfPxM2Zj/anbVe0AA"}}, "unsigned": {"age_ts": 1570042534494}}veQay$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2315}{"auth_events": ["$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM"], "prev_events": ["$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM"], "type": "m.room.member", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-420", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-420:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042533850, "hashes": {"sha256": "J4I/Q2DJjjFk3TXqEkelb296/VnCey71+xHwsSJjU+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DLn+9e12xcPAr6GM0DAz0b+gc3HUN1e+X+PXbCe6xr74lj6Oy3eSub3YA03g2OwdhocLtblaOW2dyV9PMf1PCw"}}, "unsigned": {"age_ts": 1570042533850}}ieQa_$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2314}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-420:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042532858, "hashes": {"sha256": "/N+yEiHDRxtudHqATraypuyGu4ap2oIpXtUgIH/vCXY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/jx8pPQLhW64qK3UVBpYp+cdVaUTHi9lPJZGl6LkCxw2JuZ5ra8RXSDCS1EyeMlGXhpx106XokzGHoPklnGMAA"}}, "unsigned": {"age_ts": 1570042532858}} t9r  V :sW;tC e]]Q=$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ@anon-20191002_181700-440:localhost:8800@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-440C e]]Q=$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs@anon-20191002_181700-439:localhost:8800@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-439C e]]Q=$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug@anon-20191002_181700-438:localhost:8800@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-438C~ e]]Q=$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM@anon-20191002_181700-437:localhost:8800@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-437C} e]]Q=$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs@anon-20191002_181700-436:localhost:8800@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-436C| e]]Q=$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70@anon-20191002_181700-435:localhost:8800@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800joinanon-20191002_181700-435C{ e]]Q=$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM@anon-20191002_181700-434:localhost:8800@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800joinanon-20191002_181700-434Cz e]]Q=$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s@anon-20191002_181700-433:localhost:8800@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800joinanon-20191002_181700-433Cy e]]Q=$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw@anon-20191002_181700-432:localhost:8800@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800joinanon-20191002_181700-432Cx e]]Q=$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo@anon-20191002_181700-431:localhost:8800@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800joinanon-20191002_181700-431Cw e]]Q=$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs@anon-20191002_181700-430:localhost:8800@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800joinanon-20191002_181700-430Cv e]]Q=$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs@anon-20191002_181700-429:localhost:8800@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800joinanon-20191002_181700-429Cu e]]Q=$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo@anon-20191002_181700-428:localhost:8800@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800joinanon-20191002_181700-428Ct e]]Q=$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4@anon-20191002_181700-427:localhost:8800@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800joinanon-20191002_181700-427Cs e]]Q=$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE@anon-20191002_181700-426:localhost:8800@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800joinanon-20191002_181700-426Cr e]]Q=$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q@anon-20191002_181700-425:localhost:8800@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800joinanon-20191002_181700-425Cq e]]Q=$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI@anon-20191002_181700-424:localhost:8800@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800joinanon-20191002_181700-424Cp e]]Q=$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k@anon-20191002_181700-422:localhost:8800@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800joinanon-20191002_181700-422Co e]]Q=$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE@anon-20191002_181700-421:localhost:8800@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800joinanon-20191002_181700-421Cn e]]Q=$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM@anon-20191002_181700-420:localhost:8800@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800joinanon-20191002_181700-420 a} { y w u sqomkigeca~VeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~UeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~TeeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~SeeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~ReeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~QeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~PeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~OeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~NeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~MeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~LeeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~KeeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800~JeeQ$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~IeeQ$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~HeeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800~GeeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~FeeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~EeeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800~DeeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~CeeQ$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~BeeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~AeeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~@eeQ$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~?eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~>eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~=eeQ$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~<eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~;eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800~:eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800~9eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM!UGVFuRGyPQmBbGsEDo:localhost:8800~8eeQ$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM!UGVFuRGyPQmBbGsEDo:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V,eL$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCosha256c_,- ee&* *V+eL$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wsha256oUcN#+ S ZJ)J}Arsķ-Wx,TaV&eL$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQEsha256ǹ]_>+l!ѕg'X4!V%eL$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUssha256@dp5p0j֧,bݨ`1ԭ2KV$eL$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhYsha256xclz3q^V?(ԭЅH"V#eL$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rwsha256>!n-5ѭ Rxo;~V"eL$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6Asha256!Jԯ-\ZL8>5YϠV!eL$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGssha256>XD;$8/eRr*{ir9kV eL$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuosha256aSWqo.Fv`?!VeL$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dssha256zX7̝ɡr|4"}0YdCG?&ံўYfVeL$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0Msha256j)BR^Lm5`(YQc,?CVeL$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9ksha256sqVi C>.ޟ/VeL$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyYsha256t:@qҷ'CN&VeL$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUsha256ZQn*}Rg*9V[4VeL$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4sha256QTɭc zok^VeL$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQsha256p =9̧XQ/}})̴VeL$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwsha256-2J ְ o%SېfƳ=|VeL$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyksha256PD lSAmv r쉥ӔҬS)VeL$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAEsha256G}ksDPЅL"爳M$|VeL$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8sha256&G'#E$Q49IQ*S;@ (o7}_VeL$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Esha256Uo6;7U} {qVeL$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMsha256|_5Iu-= ֲ#VeL$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYosha2567Mi l7/fc>FՒEV eL$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIsha256[@_kC16{.BSK ^#J0myȕrV eL$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJcosha256i;p %-_{> %V eL$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCAsha256nOkGA| U3'U V eL$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINMsha2561Q1S t)JLoH;f/zK V eL$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8sha2564k퀔h,˪ {EM?VeL$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxEsha256Hh+;9 vUxVeL$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1ksha256ܒl\F.# JH˓YVeL$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEsha256oZ.}]n9)3L@VeL$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Ossha2561D>{.B|bD*s~I(VeL$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyAsha256i(a#7HM j1<ͼ:{ VeL$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEsha256j〪6HjL"#KnG"VeL$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoEsha2563vh4Z,/p d-\)p[ sYrUQVeL$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYUsha256<`&)^q`H @]폅ov|Q f(5 @ E m z "P.9gfqv eQ']$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-431:localhost:8800joinmeQ? $-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800m.room.history_visibilityeeQ/ $fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800m.room.join_rulesgeQ3 $-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800m.room.power_levels eQ']$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-430:localhost:8800joinaeQ' $x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800m.room.create eQ']$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-429:localhost:8800join eQ']$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-428:localhost:8800join_eQ# $elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800m.room.namemeQ? $vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800m.room.history_visibilityeeQ/ $gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800m.room.join_rulesgeQ3 $yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels eQ']$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800joinaeQ' $qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800m.room.create eQ']$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-426:localhost:8800join eQ']$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-425:localhost:8800join_ eQ# $tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.namem eQ? $GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.history_visibilitye eQ/ $fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.join_rulesgeQ3 $tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.power_levels eQ']$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.member@anon-20191002_181700-424:localhost:8800joinaeQ' $-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create eQ']$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-422:localhost:8800join eQ']$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.member@anon-20191002_181700-421:localhost:8800join_eQ# $gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.namemeQ? $auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.history_visibilityeeQ/ $mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE!UGVFuRGyPQmBbGsEDo:localhost:8800m.room.join_rules  w +VeQa9$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "stream_ordering": 2321}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE"], "prev_events": ["$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os"], "type": "m.room.member", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-421", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-421:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042538631, "hashes": {"sha256": "U/OG+1qlPs+VxLV6hHA6lhPVRmBS5Joih6z5ATvAmvo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3xLyCkMnF1mlqWwyGzNLiXxft+ZIpTreYK3tXifCekr0F4q0/3q1m4pA1CEplauEtfVGc3giYGilBHQxPkSvCg"}}, "unsigned": {"age_ts": 1570042538631}}neQai$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2320}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA"], "type": "m.room.name", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042537712, "hashes": {"sha256": "vO0wBmHDNWm5QMs+WHB0CAAFbxWRVlJIoJn3k4+2Rj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6sPsc/IsDmq7avGLuL01tIwh3vHZv2fvVMwEgStfKVzdvnehySjgEa0BiA96pC6AMykg24+P/3pP1KQ60jyJCw"}}, "unsigned": {"age_ts": 1570042537712}}HeQa$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2319}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE"], "type": "m.room.test", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042537171, "hashes": {"sha256": "eJT34f0LHO2fBMNLBvXN1zAon5w1dhN6B29YKpxAGc0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m2tdAb+yNzLC/OMCL1LdLt9eNHWhQqerAo8ORtOJc49I8hQxlus1DwDLq/zdUQIv5REIBw0GV2dpt6y1L7LcAA"}}, "unsigned": {"age_ts": 1570042537171}}eQa$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 437, "stream_ordering": 2318}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM"], "prev_events": ["$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE"], "type": "m.room.history_visibility", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-420:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042535987, "hashes": {"sha256": "YTA3JKXmiCur4TVoh/kaayjEbElP/ho56glryKnbQwc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fitmrzCh9lvOpbTde7DTCqgV+VjID7wTvmbOvSOgRa2rYPGkToIJQHZFJbb1u3LKlp7K4Prra0li23Ek2JBsAw"}}, "unsigned": {"age_ts": 1570042535987}} RmVh) x c $ r W 4  K .  ] F  X  hSbG$P3bK r3v_ q2eB+ [# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-442:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-441:localhost:8800>']m.room.member@anon-20191002_181700-440:localhost:8800>']m.room.member@anon-20191002_181700-439:localhost:8800>']m.room.member@anon-20191002_181700-438:localhost:8800>']m.room.member@anon-20191002_181700-437:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-436:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-435:localhost:8800>']m.room.member@anon-20191002_181700-434:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-433:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-432:localhost:8800>']m.room.member@anon-20191002_181700-431:localhost:8800"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-430:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-429:localhost:8800>']m.room.member@anon-20191002_181700-428:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-427:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-426:localhost:8800>']m.room.member@anon-20191002_181700-425:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-424:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-422:localhost:8800>']m.room.member@anon-20191002_181700-421:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-420:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-419:localhost:8800>']m.room.member@anon-20191002_181700-418:localhost:8800# m.room.name"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-417:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-416:localhost:8800>']m.room.member@anon-20191002_181700-415:localhost:8800# m.room.name"? m.room.history_visibility/ ~m.room.join_rules3 }m.room.power_levels>']|m.room.member@anon-20191002_181700-414:localhost:8800' {m.room.create>']zm.room.member@anon-20191002_181700-413:localhost:8800>']ym.room.member@anon-20191002_181700-412:localhost:8800# xm.room.name"? wm.room.history_visibility/ vm.room.join_rules3 um.room.power_levels>']tm.room.member@anon-20191002_181700-411:localhost:8800' sm.room.create>']rm.room.member@anon-20191002_181700-409:localhost:8800>']qm.room.member@anon-20191002_181700-408:localhost:8800# pm.room.name  & eQu$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "443", "stream_ordering": 2325}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042541943, "hashes": {"sha256": "gapY4dkunJjnPzJYSBwwQ4wm8xmkOPducmwQqpPh/lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VVgaqfTHlCv8tz6NJL7Mq8GSW9oW+lfSUpk4L/jMY8eGXSNAdctukuI6S52Pz09JnaeEroCNCG3xkv9uNSpGAA"}}, "unsigned": {"age_ts": 1570042541943}} eQu$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "442", "stream_ordering": 2324}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042541418, "hashes": {"sha256": "8w/Savwxqw4A4WC/6KbaEdcKvj5k+D7IMJzmctsOAyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w2PYllxxcUYiQWfO7Q5XcVi6rKoz+U6eCnWOw8by+0MsiJ8uDFae7v9e2VA6dSgyD6H+vyEGs/w8h4zRPsKnDQ"}}, "unsigned": {"age_ts": 1570042541418}}eQu$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "441", "stream_ordering": 2323}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042540279, "hashes": {"sha256": "BLnSL1+5T05DhY/Mj+MVZ3TFkp0kW5RiTYe4U75/NzE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zF6zCB9R9Sg8LC3/V83vch2xFgaa31RnM7WUzGWAnD0HpGXU06Ju4CUT+90oXcByj5LSBebXzUaCizoUmDxUCg"}}, "unsigned": {"age_ts": 1570042540279}}VeQa9$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 438, "stream_ordering": 2322}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE"], "prev_events": ["$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "type": "m.room.member", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-422:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-422", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-422:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042539581, "hashes": {"sha256": "ctYNHjDZO+m+6Bh9GdaUrjduh9RM17TN5Kuz7BAU1Cw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dtU/59Mcp101gKqxpdH13JxiuXWwLjVRrPiijm9FJrTkgg4iuDkJ09fAjzYU/d0jjUY+7XrIzY2NjpPR8H2XBA"}}, "unsigned": {"age_ts": 1570042539581}} #I; sAyG P    v D  J Ma p> )/ S! |jY'mg5 [11e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94ID1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IC1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94IB1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA91e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA81e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYm1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYl1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaYk1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM]1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM\1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM[1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkM1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4 h1e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo1e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo1e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY #1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI 1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI 1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI 1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts 1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ0 1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcp1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8ol1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs E1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs D1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYL1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8om1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo(1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo'1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo&1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA81e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ21e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ11e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ01e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8on1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYM1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw v1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw u1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM71e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh541e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ01e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ01e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ021e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF41e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw t  v keQac$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 442, "stream_ordering": 2329}{"auth_events": ["$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI"], "prev_events": ["$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI"], "type": "m.room.power_levels", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-424:localhost:8800", "content": {"users": {"@anon-20191002_181700-424:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042546539, "hashes": {"sha256": "FxCppFlM7FmakbonAKb33bUSjastSoAh0ajNPtcKJ2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "thM8CgfhECYFiwfRiAgFbfQUoZD0Sp28R5IPLXkhQVfIIb+d+kmkfWz5M4DLw7nDWCMmFtnKR7hkEPXgWxj2AA"}}, "unsigned": {"age_ts": 1570042546539}}v eQay$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 442, "stream_ordering": 2328}{"auth_events": ["$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco"], "prev_events": ["$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco"], "type": "m.room.member", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-424:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-424", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-424:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042545822, "hashes": {"sha256": "4UNf9X/Q1NdqkVuB+1E+MnFc97WCelaF3sN17JVPNwg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wys4QASWquEj661wDCk7bvLPJp7vgcxTqMmZUUHzG+3Hhry/2X533lUPPOWxl65PmRRfB07KIeIRnyxjZQfeCg"}}, "unsigned": {"age_ts": 1570042545822}}i eQa_$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 442, "stream_ordering": 2327}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-424:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-424:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042544812, "hashes": {"sha256": "7OLornzBwfbF4iuQ3KBWr+DjLKX1vLUQG++Yd/Unbh8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M9p+9keanN6fOy/FZZzW376p5w5jRU3jlRzow9RjP4ltve8QdanMgfKtrr+CY8VGnP+PS2U6kudQO/F39bSOAQ"}}, "unsigned": {"age_ts": 1570042544812}} eQu$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA!UGVFuRGyPQmBbGsEDo:localhost:8800{"token_id": 439, "txn_id": "444", "stream_ordering": 2326}{"auth_events": ["$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU", "$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM", "$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE"], "prev_events": ["$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM"], "type": "m.room.message", "room_id": "!UGVFuRGyPQmBbGsEDo:localhost:8800", "sender": "@anon-20191002_181700-421:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042542485, "hashes": {"sha256": "aA4tUw3nCB/i9TnxWdRrEE9UihiHz+XwzOOJ794ef/Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QNQZdK0eE+jfdyexabpF/91PSDwvvptlxywO9eFmNwAqkzf4aheZoXMW6XZvbP3FOF1z46STDv/MQ1TyLsTuBg"}}, "unsigned": {"age_ts": 1570042542485}} LHg;Z-yLsFyLl? ^ 1  ~ Q $ q D  d 7 V )um@,,Q!eZjhYV,,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800+Q !eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!fDISaqNBhlOwherxSt:localhost:8800 { {,Q!fDISaqNBhlOwherxSt:localhost:8800 z z,Q!fDISaqNBhlOwherxSt:localhost:8800 y y+Q !fDISaqNBhlOwherxSt:localhost:8800 x x,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800+Q !edbUkYJIZBNOiTuLJs:localhost:8800,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # #,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " ",Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! !,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  +Q !eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g g,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f f,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e e,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d d,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c c,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b b,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800+Q !eySSVuCclRpBDgwKIU:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800+Q !erBPdgtUsiOfIKUkho:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800 ,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800+Q !egbhiBqOGhloZzopol:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800 ,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800+Q !egCvzKpbEwmuvDoBTb:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 LHg;Z-yLsFyLl? ^ 1  ~ Q $ q D  d 7 V )um@,,Q!eZjhYV,,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800+Q !eZjhYVNpwdogVDKHCk:localhost:8800,Q!eZjhYVNpwdogVDKHCk:localhost:8800,Q!fDISaqNBhlOwherxSt:localhost:8800 { {,Q!fDISaqNBhlOwherxSt:localhost:8800 z z,Q!fDISaqNBhlOwherxSt:localhost:8800 y y+Q !fDISaqNBhlOwherxSt:localhost:8800 x x,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800+Q !edbUkYJIZBNOiTuLJs:localhost:8800,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # #,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " ",Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! !,Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!eWRdwtyqHvuxZFvhNS:localhost:8800  +Q !eWRdwtyqHvuxZFvhNS:localhost:8800  ,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g g,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f f,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e e,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d d,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c c,Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b b,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800 ,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800,Q!eySSVuCclRpBDgwKIU:localhost:8800+Q !eySSVuCclRpBDgwKIU:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800,Q!erBPdgtUsiOfIKUkho:localhost:8800+Q !erBPdgtUsiOfIKUkho:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800 ,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800,Q!egbhiBqOGhloZzopol:localhost:8800+Q !egbhiBqOGhloZzopol:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800 ,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800,Q!egCvzKpbEwmuvDoBTb:localhost:8800+Q !egCvzKpbEwmuvDoBTb:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800 ,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800,Q!edbUkYJIZBNOiTuLJs:localhost:8800 Ng<T)}R' { P % y N # w L ! u J  s H qFoDmBk@i>e:e<+T*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hgjYwwwjWJNgwrzOto:localhost:8800``*Q!hgjYwwwjWJNgwrzOto:localhost:8800__*Q!hgjYwwwjWJNgwrzOto:localhost:8800^^*Q!hgjYwwwjWJNgwrzOto:localhost:8800]]*Q!hgjYwwwjWJNgwrzOto:localhost:8800\\*Q!hgjYwwwjWJNgwrzOto:localhost:8800[[*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800  *Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iKezIvJyjkNqKayFju:localhost:8800 q q*Q!iKezIvJyjkNqKayFju:localhost:8800 p p*Q!iKezIvJyjkNqKayFju:localhost:8800 o o*Q!iKezIvJyjkNqKayFju:localhost:8800 n n*Q!iKezIvJyjkNqKayFju:localhost:8800 m m*Q!iKezIvJyjkNqKayFju:localhost:8800 l l*Q!iKezIvJyjkNqKayFju:localhost:8800 k k*Q!iKezIvJyjkNqKayFju:localhost:8800 j j*Q!iKezIvJyjkNqKayFju:localhost:8800 i i*Q!iKezIvJyjkNqKayFju:localhost:8800 h h*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800 ! 0 @ P ` p(8HXhxul ]@anon-20191002_181700-462:localhost:8800$2b$04$hhHMDv3/5hUrvSXlcOnJZOH8YHEB7QsWujagj.Cg6aqotvTycNsPi]@anon-20191002_181700-424:localhost:8800e#Q ]$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8m.room.test!eWRdwtyqHvuxZFvhNS:localhost:8800mm@anon-20191002_181700-424:localhost:8800,e?Q ]$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Em.room.history_visibility!eWRdwtyqHvuxZFvhNS:localhost:8800m&m@anon-20191002_181700-424:localhost:8800 ~z v r n j fb^ZVRNJFeeeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800deeQ$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800ceeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800beeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w!whuymJoLfUdkFdxoyE:localhost:8800aeeQ$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800`eeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800_eeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800^eeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800]eeQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800\eeQ$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800[eeQ$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800ZeeQ$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800YeeQ$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800XeeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800WeeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800VeeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M!yTQmLDAxZscWKLMSWh:localhost:8800UeeQ$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800TeeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800SeeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800ReeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800QeeQ$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800PeeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800OeeQ$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800NeeQ$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800MeeQ$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800LeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800KeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E!eWRdwtyqHvuxZFvhNS:localhost:8800JeeQ$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8!eWRdwtyqHvuxZFvhNS:localhost:8800IeeQ$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E!eWRdwtyqHvuxZFvhNS:localhost:8800HeeQ$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800 8 &L8eQu$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "446", "stream_ordering": 2337}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042553652, "hashes": {"sha256": "9S5nUhuwHGEqbK3VtZE3woTRfH+LlGssxrUtLX7Q+WU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t+YkhrRjZI8b+P8ZekOSPPL0w+TMEPMHF/dRkJuHBXMYl/QABz/LViWWGhVJCF11cHzZWpQoX3keSIALJ5ObBg"}}, "unsigned": {"age_ts": 1570042553652}}eQu$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "445", "stream_ordering": 2336}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042552798, "hashes": {"sha256": "xWnl7sny+3a++C/ixyOSXkHPAFGst8ibKThgXSeozPA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gM29vHJAAzLBCoQUPdsaEFGjDSmxHdQ8izvfQM2cDAW/MW9JCqdOw+hYtMvDSUAW2ncx0pk4KZlyuvx1Z+XUBg"}}, "unsigned": {"age_ts": 1570042552798}}VeQa9$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 443, "stream_ordering": 2335}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM"], "prev_events": ["$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "type": "m.room.member", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-426:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-426", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-426:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042552139, "hashes": {"sha256": "tbmArX7Yom9o+Z3NOdtT1eCV4yoreNcuI0VIP42b3ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uDzn2MLyLY2MDdnRByZ1YhRCmuMzZDDrT5QG71iOXpx3MU2VoemZcHmcxOs0cmG4bmpLJeWS3aOzW9e0GEJCDg"}}, "unsigned": {"age_ts": 1570042552139}}VeQa9$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "stream_ordering": 2334}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM"], "prev_events": ["$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E"], "type": "m.room.member", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-425", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-425:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042551246, "hashes": {"sha256": "ACTxU35rgr7hHVlWl4S/99mXVDsf+froyKVq2nxaReY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LLfcbhB3jNoa7z4IyFJ0xd+R1WUIncDdw1MjnkFj52HtT8a81/ffdexpWxLS2qCvYJc/8wQyW9qTSZ2BB/xyDA"}}, "unsigned": {"age_ts": 1570042551246}} a} { y w u sqomkigeca~ueeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800~teeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~seeQ$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800~reeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800~qeeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~peeQ$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800~oeeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800~neeQ$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~meeQ$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~leeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800~keeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~jeeQ$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~ieeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800~heeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~geeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~feeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~eeeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~deeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~ceeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~beeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~aeeQ$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~`eeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~_eeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~^eeQ$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800~]eeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800~\eeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~[eeQ$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800~ZeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800~YeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800~XeeQ$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800~WeeQ$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM!eWRdwtyqHvuxZFvhNS:localhost:8800 P P"eQu$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "449", "stream_ordering": 2349}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042564031, "hashes": {"sha256": "e4/pFuxV7uwcjNxjpHfU7ytaC/t7heooIk04J+3Fidw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gT7q358nVu1B4QXPn5v9wi9ztJx9ZVZx4hvplsp0JNVPJ2OCPMj9XW75HBqJqw4kkhI9nStxaqKzk2irqVvdBA"}}, "unsigned": {"age_ts": 1570042564031}}V!eQa9$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 446, "stream_ordering": 2348}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY"], "prev_events": ["$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "type": "m.room.member", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-429:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-429", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-429:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042563284, "hashes": {"sha256": "SrHF55DfNTYb4FYSpOr5cV+FXF6zscri5fT0XpEJun4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+MAh2nsSMs24Gy6zKkaxeIy/r9pn6nZuzoQ9kUp8nhLGs/+T8snbLxvNKHfpaitXpeDsa+tJAIb7rolItMj5BQ"}}, "unsigned": {"age_ts": 1570042563284}}V eQa9$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "stream_ordering": 2347}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY"], "prev_events": ["$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds"], "type": "m.room.member", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-428", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-428:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042562309, "hashes": {"sha256": "saxCgQmoEACDt5MSGCVfTqDo6MfEWdl/u06tbMta3pE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8yRm71GowjQIlw67mCWcY61BR6dPDqtP7uLgfVVxuppOL6sU+zk3p1XHfhx6iK8Cq2m+942KIvxCLB2cUPM1Cw"}}, "unsigned": {"age_ts": 1570042562309}}neQai$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2346}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M"], "type": "m.room.name", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042561369, "hashes": {"sha256": "4sipSJ+A866dPrNo/cPhOFqG4xGoDQ+HW4dpWGki/18"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "++G+NIeUr99JGjyAd+pq4E56ITd2cVX+xU9MbPcWgUOOguTHi4lcxo/zJMRrZR9D2rhlUipzKOrlyo3r/ZLmBg"}}, "unsigned": {"age_ts": 1570042561369}}  d \  U ME> &6. l|teeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800 meeQ$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI!bkwyieHZwSMJfuSKvV:localhost:8800сeeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800 \eeQ$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw!XcaKxZsPvbZhAGKKdx:localhost:8800ρeeQ$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800ReeQ$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc$0R2eAdqXOH3kpLA9_0YNmHjTLyZO5HUoBPOUi-dnXuU!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYY!aHyAJEOSdKqTiRjOvw:localhost:8800ZeeQ$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU!BkzROHxDAfKIzYpmPV:localhost:8800*eeQ$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q!raCWVWQGnXbmkexpCN:localhost:8800eeQ$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8!xwoIOPTGmJIlTXakxC:localhost:8800NeeQ$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM!tDsPLsKOLPePtEWRwn:localhost:8800ǁeeQ$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw!wnriPzXkIMmdTNoJKU:localhost:8800ȁeeQ$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo!TleKOyAElrpgyyrAQA:localhost:8800eeQ$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk!SvKwEALYoNreUvqAlp:localhost:8800eeQ$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA!eySSVuCclRpBDgwKIU:localhost:8800eeQ$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk!ffijTnPMbTrDXHqOXf:localhost:8800ɁeeQ$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800 xeeQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ!KeqmSjifajNKxtgqhj:localhost:8800deeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800 eeQ$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ!wnriPzXkIMmdTNoJKU:localhost:8800 LrAyGMp> w E   }S K ! Q  W &  _ -e3Z(`k9j8.1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4V1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A31e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcq0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0|1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 v1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew d1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE21e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIu1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ^0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0=1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc11e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUO1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEy1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw41e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8l1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sU1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA\0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw11e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM+1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygu0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF021e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM<1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E{1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg~1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU"1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsz1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQc1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg71e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY 1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os 1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkG1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU:1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA@0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw71e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYV1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc11e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk /1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQQ1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68C1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI (  vveQay$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2341}{"auth_events": ["$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ"], "prev_events": ["$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ"], "type": "m.room.member", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-427", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-427:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042557434, "hashes": {"sha256": "DjJGmElgezIS2YvkWU5kUCrNqMDuiSzTMWB5C5fQo2Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AfImXD7jbOjdQ3yERN1jip+L2t3lT9CeMY3K3IkXKfUIKqOoA4x+TTgcf02aGXup/qRjAkMwccRxrwlv2gyjBA"}}, "unsigned": {"age_ts": 1570042557434}}ieQa_$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2340}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-427:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042556719, "hashes": {"sha256": "Ja8nPkZH7hGD2CTsroDb7yFiRJLEitKWbAd+qyKnywM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mDd9ATuPUIv82opi/yiipWQufk/thVwSU5eEDivk+L7ggMFbOWMZWhbrpEBXsudFqaENAUzuG7K2R8uqFSWqCQ"}}, "unsigned": {"age_ts": 1570042556719}}eQu$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "448", "stream_ordering": 2339}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042554689, "hashes": {"sha256": "zFmioOma8B4YOhpBSrl+cHMNpzb68PZJJSgIqp+U5Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NOBMke7IKH2ni3EMbdTozYxmKV4Dn3n9FLrDJM4iuO97DJ55QyNb5FtvY1fLVsHhDwLc5hQKmOcE9Sp2KHMsAg"}}, "unsigned": {"age_ts": 1570042554689}}eQu$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800{"token_id": 441, "txn_id": "447", "stream_ordering": 2338}{"auth_events": ["$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo", "$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco", "$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Q"], "prev_events": ["$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE"], "type": "m.room.message", "room_id": "!eWRdwtyqHvuxZFvhNS:localhost:8800", "sender": "@anon-20191002_181700-425:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042554103, "hashes": {"sha256": "8ExNNq+3WFUl4RMAT1hEvDZjfY2CyzVGEu49i5PP9xk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ycR1BUxIE5XsPE1j+XxLI79qZm+EMqifFBZWiEBtFhbJ4MUp5TzGBG8TbPL4sH1R/TTV1qMVLE5/8n36KlXmBg"}}, "unsigned": {"age_ts": 1570042554103}} LrAyGMp> w E   }S K ! Q  W &  _ -e3Z(`k9j8.1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4V1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A31e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcq0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y$1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0v1e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 v1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew d1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziE21e$gguQMfrNa2q4mF5_qbVhTBarepGxPCEzClnTN9ECGtIu1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw1e$gbGape8CVwAllzew0TnueKtGo6KkwOdwG533Ff4lObQ^0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0=1e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY1e$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc11e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpUO1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sEy1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw41e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWA1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8l1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sU1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA\0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw11e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM+1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Ygu0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF021e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM<1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E{1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg~1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74 1e$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU"1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxsz1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQc1e$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg71e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY 1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os 1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSkG1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU:1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQ1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI1e$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA@0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw71e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI1e$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyYV1e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc11e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk /1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQQ1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68C1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI (  4 h j6d]c@anon-20191002_181700-471:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDego127.0.0.1ǂd]c@anon-20191002_181700-467:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAo127.0.0.1łd]c@anon-20191002_181700-464:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAo127.0.0.1Âd]c@anon-20191002_181700-465:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1Wlgo127.0.0.1Ăd]c@anon-20191002_181700-469:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwo127.0.0.1Ƃd]c@anon-20191002_181700-463:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgo127.0.0.1‚d]c@anon-20191002_181700-462:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7Qo127.0.0.1d]c@anon-20191002_181700-461:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0Vzngo127.0.0.1d]c@anon-20191002_181700-460:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAo127.0.0.1d]c@anon-20191002_181700-458:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAo127.0.0.1d]c@anon-20191002_181700-456:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQo127.0.0.1 ~z v r n j fb^ZTPLHDYQ]e!ZaltdIYVZjCHsCWTZD:localhost:8800@anon-20191002_181700-250:localhost:8800$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwjoinXQ]e!kwXxkGQFkaeenFTQJr:localhost:8800@anon-20191002_181700-249:localhost:8800$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8joinWQ]e!kwXxkGQFkaeenFTQJr:localhost:8800@anon-20191002_181700-248:localhost:8800$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWkjoinVQ]e!EMhFCPhwmnWVnjtXXM:localhost:8800@anon-20191002_181700-247:localhost:8800$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1sjoinUQ]e!EMhFCPhwmnWVnjtXXM:localhost:8800@anon-20191002_181700-246:localhost:8800$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4joinTQ]e!GGXyLHdVXqhQjPRvac:localhost:8800@anon-20191002_181700-245:localhost:8800$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMjoinSQ]e!GGXyLHdVXqhQjPRvac:localhost:8800@anon-20191002_181700-244:localhost:8800$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqcjoinRQ]e!IfYYyzLHSOeyJBxBfn:localhost:8800@anon-20191002_181700-243:localhost:8800$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSwjoinQQ]e!IfYYyzLHSOeyJBxBfn:localhost:8800@anon-20191002_181700-242:localhost:8800$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0joinPQ]e!ZYKvjplZRyIWvzkRyM:localhost:8800@anon-20191002_181700-240:localhost:8800$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeAjoinOQ]e!ROoilpDjLJfjKfSPIi:localhost:8800@anon-20191002_181700-239:localhost:8800$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0leaveNQ]e!ROoilpDjLJfjKfSPIi:localhost:8800@anon-20191002_181700-238:localhost:8800$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8joinMQ]e!wsvXTJXouVkEZcCFsD:localhost:8800@anon-20191002_181700-237:localhost:8800$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMjoinLQ]e!DoiZErAdypBUMZKaeJ:localhost:8800@anon-20191002_181700-236:localhost:8800$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGEjoinKQ]e!qSUSLLWjDxcGibUZdT:localhost:8800@anon-20191002_181700-234:localhost:8800$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4joinJQ]e!RmwbYvIIQyPlHlClty:localhost:8800@anon-20191002_181700-232:localhost:8800$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIjoinIQ]e!SvKwEALYoNreUvqAlp:localhost:8800@anon-20191002_181700-231:localhost:8800$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgjoinHQ]e!fOJLpnbtgKNxxVDquX:localhost:8800@anon-20191002_181700-228:localhost:8800$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0joinGQ]e!vAUAIZrCnHTeMGeNuw:localhost:8800@anon-20191002_181700-226:localhost:8800$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMjoinFQ]e!EfJcWhdjNARbuHYrqU:localhost:8800@anon-20191002_181700-224:localhost:8800$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9ojoinEQ]e!vRRNxNyGboLHNhqQvr:localhost:8800@anon-20191002_181700-222:localhost:8800$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhojoinDQ]e!NFWKQvZkIwvecnREOC:localhost:8800@anon-20191002_181700-220:localhost:8800$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kjoinCQ]e!IPYMCBwcyNIzqdiIWv:localhost:8800@anon-20191002_181700-218:localhost:8800$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0joinBQ]e!IPYMCBwcyNIzqdiIWv:localhost:8800@anon-20191002_181700-217:localhost:8800$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WojoinAQ]e!HZqzpRgqekPOtxstVc:localhost:8800@anon-20191002_181700-216:localhost:8800$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ikjoin@Q]e!HZqzpRgqekPOtxstVc:localhost:8800@anon-20191002_181700-215:localhost:8800$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQjoin?Q]e!FklhVuCInffbDxunWv:localhost:8800@anon-20191002_181700-214:localhost:8800$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ekjoin>Q]e!FklhVuCInffbDxunWv:localhost:8800@anon-20191002_181700-213:localhost:8800$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0join=Q]e!eJPTUgihvSwaOhIkrC:localhost:8800@anon-20191002_181700-212:localhost:8800$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQjoin<Q]e!eJPTUgihvSwaOhIkrC:localhost:8800@anon-20191002_181700-211:localhost:8800$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66Ijoin  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlXbC10WHNoRmpMPVdfTXQKMDAyZnNpZ25hdHVyZSAzTl7SruvzGBYL4dX6vVoavy6tueo8qaimKRUdZNhJXAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1RYlJ0O1FTQyM1ejNNQzEKMDAyZnNpZ25hdHVyZSBEMr4ArnDfX8qs2kEk5aiuJ1YxAzPUCtmFQ6N7d1m8pgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHorO0g7Y3pjeU5hT1JYbDUKMDAyZnNpZ25hdHVyZSDe3Y0t8ijjLdfk7SzErUv9v-bCc_iVroIMJTor_bCpmgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1jaDZhSEBGSXRrWUUjO0kKMDAyZnNpZ25hdHVyZSA79JD849WYJOyZ2M1RuYWcFyibJC-zGRn_GQ5oKIZWowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDV-c2oqNzNPbWMxaEI1X2QKMDAyZnNpZ25hdHVyZSBDVaJuFlsB5lAdzFarOV81Rv_v1yOjQrBzQYaYExo0ego1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG94NkkuUypCTUZERCp2OlQKMDAyZnNpZ25hdHVyZSALHJAPX0HPoEIEoTWQFptSHP771aXp4-jRT29GytPZkwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVkOHBlSE5hakNkcissRTkKMDAyZnNpZ25hdHVyZSDs3bcVWnj7ZiTTgZwfEhaWt6-7hlPHAbbubrGsKEfM3go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNTOERrOnZOQkVDSS1ZKloKMDAyZnNpZ25hdHVyZSDE-tDPnc3Ssoak_sJr8q1-YL4tv1Mb1_PaHnNVgwuQXwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJtdnorRkxpc0ZjQ353UX4KMDAyZnNpZ25hdHVyZSDPxMZlU0jWhyMns9ky3r4qpE5xk28qUJQQeTDgCpmJJwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhzd1RhYlJiVzJNcDUuR14KMDAyZnNpZ25hdHVyZSDna3GuHGMSFtJjqwHGaGu1a6RtkQyyxcajxd1Dfsp9YQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGt6ZSpYakl0UmV1LUJWWSwKMDAyZnNpZ25hdHVyZSD_JaWX1b7kYUzgMtiP3qCf6gtbREOELkz_FIMoCj8TMAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZJblI3MF55Q05OMndFQCYKMDAyZnNpZ25hdHVyZSCuKYLHOymxQqUEkKcRmeHvgxPJ4P1tVxAI_xxwr-YTRgo }wqke_YSMGA;5/)# {uoic]WQKE?93'-!   y s m g a [ U O I C < 5 . '    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $    | t l d \ T L D < 4 , $   |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tld\TLD<4,$ |tl`~}|{zyxwv~u}t|s{rzqypxownvmultksjriqhpgofnemdlckbjai`h_g^f]e\d[cZbYaX`W_V^U]T\S[RZQYPXOWNVMULTKSJRIQHPGOFNEMDLCKBJAI@H?G>F=E<D;C:B9A8@7?6>5=4<3;2:1908/7.6-5,4+3*2)1(0'/&.%-$,#+"*!) ('&%$#"!           ~}|{zyxwv~u}t|s{rzqypxownvmultksjriqhpgofnemdlckbjai`h_g^f]e\d[cZbYaX_W]V[UYTXSWRVQROUPPMOLNKMJLIKHJGIFHEGDFCEBDAC@B?A>@=?<>;=:<9;8:7968574635241302/1.0-/,.+-*,)*()''&&%%$$##""!!          0@ (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H~}|{zyxwvu~t}s|r{qzpyoxnwmvluktjsirhqgpfoendmclbkaj`i_g^f]e\d[cZbYaX`W_V^U]T\S[RZQYPXOWNVMULTKSJRIQHPGOFNEMDLCKBJAI@H?G>F=E<D;C:B9A8@7?6>5=4<3;2:1908/7.6-5,4+3*2)1(0'/&.%-$,#+"*!) ('&%$#"!          #"!            %X\ ` d  h  l  p t x$<^: \-1 gG!QQ$1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800G QQ$1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800EMQ$15700426765pydev:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800EMQ$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800GQQ$1570042662161lGrSW:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800GQQ$1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800GQQ$1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800GQQ$1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800GQQ$1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800GQQ$1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800QeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800QeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800QeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800QeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800QeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw!eWRdwtyqHvuxZFvhNS:localhost:8800QeQ$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA!UGVFuRGyPQmBbGsEDo:localhost:8800QeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM!AMLmLqizBFklpqKibP:localhost:8800QeQ$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE!rWGwSSefrZzQYCYFHs:localhost:8800QeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800Q eQ$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhM!HusOrLtWZTLbmQZxmm:localhost:8800Q eQ$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE!BpTqIemsWFZIqTcgJO:localhost:8800Q eQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU!YQATbgbLImCDamiDHC:localhost:8800Q eQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800Q eQ$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs!CGckPHdSYcIocFvRAq:localhost:8800QeQ$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8!BoyzlWNkRPncpDjBDg:localhost:8800TQeQ$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw!djwLhpJUYOKsgQtrky:localhost:8800QeQ$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ!bkwyieHZwSMJfuSKvV:localhost:8800QeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA!XcaKxZsPvbZhAGKKdx:localhost:8800QeQ$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI!jDKAOtmeAGbYTpwyEW:localhost:8800QeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800QeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw!zoTQAhGwmDDUECKtbL:localhost:8800QeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc!zoTQAhGwmDDUECKtbL:localhost:8800QeQ$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uA!NeYaCeYNFATCqlrlGT:localhost:8800QeQ$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E!YtVXQjSPgVtbxrzUOA:localhost:8800Q~eQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!zsXPhIPzeXXLvuazzQ:localhost:8800Q}eQ$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxc!zsXPhIPzeXXLvuazzQ:localhost:8800QeQ$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs!yTQmLDAxZscWKLMSWh:localhost:8800 D DHeQa$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2345}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k"], "type": "m.room.test", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042560882, "hashes": {"sha256": "MMwkqtZW0aad/SqIlc2W3wndqpzFybZVhhLi+BdHdOY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JT1BQVyLM0cIyBPNM4CgzfNOSDvY1ygFruvC6uuw3NViC9Tnd4dzOEgO0Iu0/+uniTYt5PBbxgWXkFSn7qaABA"}}, "unsigned": {"age_ts": 1570042560882}}eQa$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2344}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY"], "type": "m.room.history_visibility", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042559348, "hashes": {"sha256": "e0uZ5Cx+Hkxa4WsZh5ESrjl9Lh4hPdATcuRb9YoBHNY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cRS+6SXecX6Zn5NhjJA7E7i14Aoh68NB8iBfOMYqjcR7gTBPpEMZe6nXMadikHrf+TPSpsBiFhUMZnCXLNf8AQ"}}, "unsigned": {"age_ts": 1570042559348}}teQau$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2343}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU"], "type": "m.room.join_rules", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042558680, "hashes": {"sha256": "41h2tz0i8llIIAY0f2YmMCC2j0uPZzvDmVyWYLo2Czg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "btPRHo8g2e9gakYNRdK2go5Os2mmnBwK0SWXfHbqPPhfH0Shx201a8qhM5qgoSEX7hhtfIO0KERt+JyUvdUbCA"}}, "unsigned": {"age_ts": 1570042558680}}keQac$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 444, "stream_ordering": 2342}{"auth_events": ["$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "prev_events": ["$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4"], "type": "m.room.power_levels", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-427:localhost:8800", "content": {"users": {"@anon-20191002_181700-427:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042557973, "hashes": {"sha256": "yWvAv5iUfjB+mkHDuJDqdmhSCMBr3CFcAEFoCYA4SHg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0rDw+QS9kD26+iGqaV3E1VSzItuVLQBukHJmWRjHVj6jqV5ad16y5kpkFGRFp3F2fD1+Yxc6IMq6vOCTqPz+DQ"}}, "unsigned": {"age_ts": 1570042557973}} -RM H C > 9 4/*|%w rmhc TQe S!IZkczIYykpZDvjuUWn:localhost:8800$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0TQe R!IZkczIYykpZDvjuUWn:localhost:8800$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8T Qe Q!IZkczIYykpZDvjuUWn:localhost:8800$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQT Qe P!IZkczIYykpZDvjuUWn:localhost:8800$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAT Qe O!IZkczIYykpZDvjuUWn:localhost:8800$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMT Qe N!IZkczIYykpZDvjuUWn:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUT Qe M!IZkczIYykpZDvjuUWn:localhost:8800$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUTQe L!zuCqeooOnfWkYrQdxA:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIATQe K!zuCqeooOnfWkYrQdxA:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQTQe J!zuCqeooOnfWkYrQdxA:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_QsTQe I!zuCqeooOnfWkYrQdxA:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugTQe H!zuCqeooOnfWkYrQdxA:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMTQe G!zuCqeooOnfWkYrQdxA:localhost:8800$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUTQe F!zuCqeooOnfWkYrQdxA:localhost:8800$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgTQe E!zuCqeooOnfWkYrQdxA:localhost:8800$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPETQe D!zuCqeooOnfWkYrQdxA:localhost:8800$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcTQe C!zuCqeooOnfWkYrQdxA:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsT~Qe B!zuCqeooOnfWkYrQdxA:localhost:8800$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4T}Qe A!vttkrtSyHEJXVMlvLo:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70T|Qe @!vttkrtSyHEJXVMlvLo:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMT{Qe ?!vttkrtSyHEJXVMlvLo:localhost:8800$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gTzQe >!vttkrtSyHEJXVMlvLo:localhost:8800$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUITyQe =!vttkrtSyHEJXVMlvLo:localhost:8800$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkTxQe 9 4/*|%w r5NgJPQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042621112AUAFX:localhost:8800JOQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042620111taWCG:localhost:8800JNQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619110gZfPB:localhost:8800JMQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619109qhpUv:localhost:8800JLQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042618108WWxoQ:localhost:8800JKQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042617107cANtu:localhost:8800JJQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042616106fkZGL:localhost:8800JIQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042613103AHxGt:localhost:8800JHQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042612102sQZCG:localhost:8800JGQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611101IffRu:localhost:8800JFQQ!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611100ueDzK:localhost:8800IEQO!YGUjVdVdpcQoGkRnWB:localhost:8800$157004261099UmKia:localhost:8800TDQe!IZkczIYykpZDvjuUWn:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPETCQe!IZkczIYykpZDvjuUWn:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYTBQe!IZkczIYykpZDvjuUWn:localhost:8800$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMTAQe!IZkczIYykpZDvjuUWn:localhost:8800$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0T@Qe!IZkczIYykpZDvjuUWn:localhost:8800$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQT?Qe!IZkczIYykpZDvjuUWn:localhost:8800$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAT>Qe!IZkczIYykpZDvjuUWn:localhost:8800$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMT=Qe!IZkczIYykpZDvjuUWn:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUT<Qe!IZkczIYykpZDvjuUWn:localhost:8800$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUT;Qe!zuCqeooOnfWkYrQdxA:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAT:Qe!zuCqeooOnfWkYrQdxA:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQT9Qe!zuCqeooOnfWkYrQdxA:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_QsT8Qe!zuCqeooOnfWkYrQdxA:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugT7Qe!zuCqeooOnfWkYrQdxA:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMT6Qe!zuCqeooOnfWkYrQdxA:localhost:8800$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgT5Qe!zuCqeooOnfWkYrQdxA:localhost:8800$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPET4Qe!zuCqeooOnfWkYrQdxA:localhost:8800$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcT3Qe!zuCqeooOnfWkYrQdxA:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsT2Qe!zuCqeooOnfWkYrQdxA:localhost:8800$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4T1Qe!vttkrtSyHEJXVMlvLo:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70T0Qe!vttkrtSyHEJXVMlvLo:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMT/Qe!vttkrtSyHEJXVMlvLo:localhost:8800$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gT.Qe!vttkrtSyHEJXVMlvLo:localhost:8800$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkT-Qe!vttkrtSyHEJXVMlvLo:localhost:8800$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4T,Qe!vttkrtSyHEJXVMlvLo:localhost:8800$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwT+Qe!vttkrtSyHEJXVMlvLo:localhost:8800$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sT*Qe!vttkrtSyHEJXVMlvLo:localhost:8800$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8T)Qe!whuymJoLfUdkFdxoyE:localhost:8800$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwT(Qe!whuymJoLfUdkFdxoyE:localhost:8800$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoT'Qe!whuymJoLfUdkFdxoyE:localhost:8800$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cT&Qe!whuymJoLfUdkFdxoyE:localhost:8800$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQT%Qe!whuymJoLfUdkFdxoyE:localhost:8800$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYT$Qe!whuymJoLfUdkFdxoyE:localhost:8800$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsT#Qe!whuymJoLfUdkFdxoyE:localhost:8800$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQET"Qe!yTQmLDAxZscWKLMSWh:localhost:8800$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs q | 4  ! K uWbmOZaPQ# e!IZkczIYykpZDvjuUWn:localhost:8800m.room.name$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0oOQ? e!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibility$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQgNQ/ e!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAiMQ3 e!IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM LQ']e!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUcKQ' e!IZkczIYykpZDvjuUWn:localhost:8800m.room.create$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU JQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-441:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA IQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-440:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ HQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-439:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs GQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-438:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug FQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-437:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMoEQ? e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.history_visibility$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVggDQ/ e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.join_rules$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEiCQ3 e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.power_levels$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc BQ']e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-436:localhost:8800$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvscAQ' e!zuCqeooOnfWkYrQdxA:localhost:8800m.room.create$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 @Q']e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-435:localhost:8800$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 ?Q']e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-434:localhost:8800$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMa>Q# e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.name$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8go=Q? e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.history_visibility$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkg<Q/ e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.join_rules$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4i;Q3 e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.power_levels$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw :Q']e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-433:localhost:8800$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sc9Q' e!vttkrtSyHEJXVMlvLo:localhost:8800m.room.create$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8 8Q']e!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-432:localhost:8800$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw 7Q']e!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-431:localhost:8800$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoo6Q? e!whuymJoLfUdkFdxoyE:localhost:8800m.room.history_visibility$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cg5Q/ e!whuymJoLfUdkFdxoyE:localhost:8800m.room.join_rules$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQi4Q3 e!whuymJoLfUdkFdxoyE:localhost:8800m.room.power_levels$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY 3Q']e!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-430:localhost:8800$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsc2Q' e!whuymJoLfUdkFdxoyE:localhost:8800m.room.create$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE 1Q']e!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-429:localhost:8800$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs SL Y ' '`/xFr~L -j8:!p>l  w EY4@  _ ~ L  S ! 1e$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU 50e$WHau_Rqv5n8Sv6owOSGzUdfEi2_V-r5t9O0IxTYCU1kj1e$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMq1e$WFE2c8U5NIRErQYxYr3EU3-FLxT1H7ejnMlQDuiYatY0e$WEOvN9dzDmpnB4O19X5-rJxMWczDnNKgTuC6rf9uyh0/1e$WDBWFWiOvFIzd3_qnFa9_QBX5Ksrzhp-XKabhM4c9rwB1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnIA1e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 B1e$WJq2oQWnMQd3m9e2DCOt94wi8tAqKpMyDYuXG61Og6Q1e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ 1e$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU 1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 f11e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1e$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE1e$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4F1e$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg 1e$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o1e$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk1e$WYZCU3vqAWdFv_NMHp94e16ld9GcLTIQW9QkmO5Uq78f1e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po1e$WWwqfZfA_Kev1kdyPVJQZtF_Ni8I-4m1180yOSe-pIo91e$WWtT85wTPakc3UKy3SqTwOj8f08ZlBP_2rn-QIVLnzY1e$WUPShQZ-kR-QlgOyVBmzghRvgPYbOVNR3eZZHX7fAhQ1e$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo=1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1e$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q1e$XL3Ie7n-cYvFhHE8-2D_vWtvJEIS5Hai33GAFbEDQWU1e$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM1e$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YIx1e$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4a1e$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hMED1e$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA1e$W2EIFhEOYmVMiBO5-f48qtiHYgoD2c6PSZNhw9pivks1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y11e$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ 1e$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ 1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko i1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AM(1e$WB1otN3KAA4o9I-NaqhZW3-ZXB7IXjUxCic71ZsjeGo1e$WA5_fAZRNUq0NH_2mklu_OMeaZKUC19zTN_FpTItOhE1e$W7LGpJ5OhFddhr0gzOcsi8yDpVTLqtxJz-cqI_YOvxw1e$W6S8SJyFILpwbYmxb5Qds8St5lbCWYG7n0khrMUReW0b1e$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk1e$W5BXTD2EybGOKg3B0mNeqFPGtoLlOPX2b--ZNDl3zCs1e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs1e$XWExIHRiFn_TDMHfOlP575irZVzluEsUQb0IkSPEsXc1e$XTujbifpd1jXdaA0xwLippBdxs-J3h4GRvUatrFPkFs0e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8x1e$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70V1e$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc1e$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M1e$XLkVYsfPiI9Shpje9sOSlWxLWxy97f29zgNkSkjLfEg0e$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XFfQrOFje38u09wEw59aKJNq-Fe6ZtlQyVTaDDaGlDEZ1e$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZM1e$XBt9T4XqQseEV5COk6ajDVQ_ODjitKYqndcJ1kHwICE1e$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBoz1e$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo-0e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw}1e$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0J1e$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxoG1e$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCkx1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8AA1e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A@1e$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas41e$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw 3 z ~z~\QQ{ $1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "607", "stream_ordering": 3314}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043483335oDIDb:localhost:8800", {"sha256": "HqPmc/JNJ5AfLGB79CERb+tBCFoHK3lVjBRIphsOkUI"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"body": "Message 7 here", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "event_id": "$1570043484336qKOPD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043484368, "hashes": {"sha256": "nDnqRpHHf9lIUlczbh1g6GKO33otjn/TcHDkwwcTD/Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xIfVO2+HfgeAClwMovb1ikwLxlGcL3xQc5Ml9jdi89eNYHsoCf7MYFEgS+o/h5FinCQpp67lckqYyECDJ8bcCA"}}, "unsigned": {"age_ts": 1570043484368}}~[QQ{ $1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "606", "stream_ordering": 3313}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043483334ejWtI:localhost:8800", {"sha256": "yohbjVFlVIS5Oi5BD24SgA/daHACLimVYsCb4KIOB+Q"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 6 here"}, "depth": 11, "prev_state": [], "event_id": "$1570043483335oDIDb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043483900, "hashes": {"sha256": "lFUKRKYJ4MvGpUFtevFWS5Hlp2ZYgNSy0u7A6Op4vbk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kMJRYEJECvHTb/+tn2tHnfiTlMqXkJFWxpW3WZwkucYL9d3mok0cdWHL5zL2JkhTMzQZin0NvldpOTqD8NPHBQ"}}, "unsigned": {"age_ts": 1570043483900}}~ZQQ{ $1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "605", "stream_ordering": 3312}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043482333DxDEq:localhost:8800", {"sha256": "6l3r62EX7KNvVNddf6tWnTBh4khyDhk8+bOSZEEszds"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 5 here"}, "depth": 10, "prev_state": [], "event_id": "$1570043483334ejWtI:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043483321, "hashes": {"sha256": "eQDdrZL5tFujDs+mPlIfrrvdHXrwck57ejXKK6a+HnQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t5ibsydRW35i7+NR+MQSMSbSN+PmM9NnmOEg3LdaJgqHuilfmfMQMcscIO97pqy+EDJI6o7Jew0EjT+xmWaaAg"}}, "unsigned": {"age_ts": 1570043483321}} u vbui&eQa_$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2353}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-430:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042568338, "hashes": {"sha256": "ag7I7ZnwE2QLEAZtvOwbSsLwlag3KsMoiiSFjS4Z3Y0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "291MLX7X8oBWJa9XFX9mS3JUcOgz5wSSbF3ivmEGC1lZw9hoZWekB8xv8IQu88s3GreVP6l7hqS0P5G+xcE6Dg"}}, "unsigned": {"age_ts": 1570042568338}}%eQu$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "452", "stream_ordering": 2352}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"body": "Message 4", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042566328, "hashes": {"sha256": "v/hE2ABTfGg1AI2/T40DaABzYxoIWA+4Ee0/Cjdbh8U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aov385ctASKviiktMnxHGjlJKxr7dtD3u9YSLNzzgUNvW14+baHaqUOBEYIxA1e1f9oYM8f/aqRYPvRV/0HqDA"}}, "unsigned": {"age_ts": 1570042566328}}$eQu$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "451", "stream_ordering": 2351}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"body": "Message 3", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042565821, "hashes": {"sha256": "9mERR5+P1Eh6Iz7ipiGLmcwaEm2KvH8op8qYAIIlqSU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oJw8v1LGxOsxNe0CRJdmjJjk21yyw9Bnrzd5S9T1vc54ae9Fk/JK4zc+Obre8B0udUOl1uAGrLErM/nFi38AAA"}}, "unsigned": {"age_ts": 1570042565821}}#eQu$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw!yTQmLDAxZscWKLMSWh:localhost:8800{"token_id": 445, "txn_id": "450", "stream_ordering": 2350}{"auth_events": ["$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU", "$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQ", "$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo"], "prev_events": ["$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A"], "type": "m.room.message", "room_id": "!yTQmLDAxZscWKLMSWh:localhost:8800", "sender": "@anon-20191002_181700-428:localhost:8800", "content": {"body": "Message 2", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042565019, "hashes": {"sha256": "cMz1bSkBrsGIXbrwj73weZRFYmymVqeWL2sgEnaKbYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k2TTzeqZG4pvH5jn8z8KMlFE+t61r4hfHs6hz3rV5qsNO4lpAOqdLSmo05u17GtSNSKj/xPjQfOMZTE0I0BXBQ"}}, "unsigned": {"age_ts": 1570042565019}} 8l D `8.]c!E@anon-20191002_181700-438:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAoTJXWGIJRBF127.0.0.1Perl + Net::Async::HTTP/0.44m;-]c!E@anon-20191002_181700-437:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgoPMLBXPJIHM127.0.0.1Perl + Net::Async::HTTP/0.44m,]c!E@anon-20191002_181700-436:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQoPJOSZGJIHE127.0.0.1Perl + Net::Async::HTTP/0.44mԭ؃+]c!E@anon-20191002_181700-435:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgoSYLXZYMBKM127.0.0.1Perl + Net::Async::HTTP/0.44mԞ*]c!E@anon-20191002_181700-434:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQoFQTRGMUKGZ127.0.0.1Perl + Net::Async::HTTP/0.44mԙӃ)]c!E@anon-20191002_181700-433:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5AoUUQGLCEWQB127.0.0.1Perl + Net::Async::HTTP/0.44mԃ(]c!E@anon-20191002_181700-432:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2QgoZOPSRSBYRN127.0.0.1Perl + Net::Async::HTTP/0.44mvY']c!E@anon-20191002_181700-431:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1woJIBNPXSTDL127.0.0.1Perl + Net::Async::HTTP/0.44mr)&]c!E@anon-20191002_181700-430:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwoEJQMGEXFCC127.0.0.1Perl + Net::Async::HTTP/0.44m]%]c!E@anon-20191002_181700-429:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7QoOXLZZLMFDN127.0.0.1Perl + Net::Async::HTTP/0.44mH &&H + m  / [ T7y;g)T"f eQ%$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8!uqIEMXzdeNeXdJmuwh:localhost:8800content.bodyhellof eQ%$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800content.bodyhellof eQ%$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800content.bodyhello]OQ%$157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800content.bodyMessagehQQ%/$1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 10gQQ%-$1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 9gQQ%-$1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 8gQQ%-$1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 7gQQ%-$1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 6gQQ%-$1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 5gQQ%-$1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 4gQQ%-$1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 3gQQ%-$1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 2g~QQ%-$1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800content.bodyMessage number 1\}QQ%$1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800content.bodyhello\|QQ%$1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800content.bodyhello\{QQ%$1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800content.bodyhello\zQQ%$1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800content.bodyhello\yQQ%$1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800content.bodyhello\xMQ%$15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800content.bodyMessagegwQQ%-$1570042662161lGrSW:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 9gvQQ%-$1570042662160SrmtM:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 8guQQ%-$1570042661159xQwJK:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 7gtQQ%-$1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 6gsQQ%-$1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 5grQQ%-$1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 4gqQQ%-$1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 3gpQQ%-$1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 2goQQ%-$1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800content.bodyMessage number 1\nQQ%$1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800content.bodyhello\mQQ%$1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800content.bodyhello\lQQ%$1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800content.bodyhello\kQQ%$1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800content.bodyhello\jQQ%$1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800content.bodyhellolieQ%#$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800content.nameA room namelheQ%#$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800content.nameA room namejgeQ%$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 4jfeQ%$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY!yTQmLDAxZscWKLMSWh:localhost:8800content.bodyMessage 3  *eQa$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2357}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ"], "type": "m.room.history_visibility", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042571237, "hashes": {"sha256": "0d8JQivvdCybGhTYfUJn7/YHX51wVp0IIKYTOuvDAT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+39vPh4rMWS5hnYHOBKKZh7RYgKqiXoGlX/mIjhGRravQvCQrfc+0zRtLnF7mKCe7H61TTk9SlkUhmw9OSFgBw"}}, "unsigned": {"age_ts": 1570042571237}}t)eQau$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2356}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY"], "type": "m.room.join_rules", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042570466, "hashes": {"sha256": "quZswWDpwA4AEbIe3AdCNHBWFaahlCdCQp0NumeLOj4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o9ibXtH1Bx2JWVLmFDlTrWTlikJyNkZW7+t5osBLbrow6Dfj+j/N9hd97M2yCcR0K99VO26ZY+UwCAOWTUa1AA"}}, "unsigned": {"age_ts": 1570042570466}}k(eQac$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2355}{"auth_events": ["$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "type": "m.room.power_levels", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"users": {"@anon-20191002_181700-430:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042569663, "hashes": {"sha256": "b/p4O2DqJSpgQnhA7SeOeiiGi9SDlv502mnj4EiTXec"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y4W+uyXIZ+rLIqWVhMdRmlOvNudvzcOBDBsEW7OeBbw0cxyYE+XAxFTMia+OLVy/bnehNekwISPLijBsOX2MDA"}}, "unsigned": {"age_ts": 1570042569663}}v'eQay$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2354}{"auth_events": ["$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE"], "prev_events": ["$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE"], "type": "m.room.member", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-430", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-430:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042569092, "hashes": {"sha256": "r5K8e2XVCzh0dth2/rHtpNAxBTkvdBKueXofmGOPfso"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TIDNswl+3a8hnqJvSq50Oxgj8/ZHuQ971jIRXLZdSdu0PcoewIsyk+qJztxNAg6EH9jhe1RBMOEYJL8bHxn+Cw"}}, "unsigned": {"age_ts": 1570042569092}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@                                                    ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                 C B A @ ? > > > < < ; : 9 8 7 6 4 4 3 2 1 0 / . . . . . . . . . . . . - , + * ) ( ( & % % $ # " !   ~}|{zzzzzzyxwwvutsrrrrrrqpoonmlkjjjjihggfedcba``_^]\[[[[[[ZYXXWVUTSSSRQPONNMLKJIIHGFEDDD *u bu egilmo  \ psVW [  [  ] ] ] ]TTeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800SeQ$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk!edbUkYJIZBNOiTuLJs:localhost:88007TeQ$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU!KdOYYnOuwAyQzqwUki:localhost:8800TeQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800SeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg!GGTWnzJfvPQBgQqDIE:localhost:8800SeQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA!egCvzKpbEwmuvDoBTb:localhost:88002TeQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI!EABRjdYuYumMhLSwIa:localhost:8800TeQ$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc!hgjYwwwjWJNgwrzOto:localhost:8800TeQ$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k!qSUSLLWjDxcGibUZdT:localhost:8800TeQ$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw!ITdmSQpjMnaPoHIbws:localhost:8800TeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800SeQ$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQ!CQKLQUpSYakhxVDltC:localhost:8800JTeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800TeQ$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM!RmwbYvIIQyPlHlClty:localhost:8800TeQ$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU!EMhFCPhwmnWVnjtXXM:localhost:8800SeQ$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs!wvnfKBSrUlfNmYoeil:localhost:8800SeQ$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o!WjlTCJVOFJkanCtkFE:localhost:8800\ USeQ$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k!vJQYmOxOBLwFKzYkNj:localhost:8800TeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800TeQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800SeQ$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY!duCKuavMBSfRbTFPsc:localhost:8800%TeQ$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8!dnZVySJLGNtUKsSgXW:localhost:8800TeQ$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs!jveVPZSXJOJyNDebPO:localhost:8800SeQ$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH8!dUnULFLGtgaVdwHtnz:localhost:8800SeQ$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ!OaCEdDAiatpwYcagUb:localhost:8800TeQ$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI!HXfrGcvJCbRItyQLVE:localhost:8800SeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw!kkgEEVUJynguTqAoWD:localhost:8800 RTeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800TeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E!ZKPJvrCZHMHPEksYDc:localhost:8800@TeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800SeQ$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU!GgUNbVXspVTpOlaHBl:localhost:8800:TeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800 UTeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800wTeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800uUTeQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U!svYOOXWZHtQQzlMcEP:localhost:8800SeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k!EyEaTZElOkdURKbEXo:localhost:8800(SeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY!GwXGurbyEmykmmHcHJ:localhost:8800HTTeQ$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU!KXMUzALpMMMKqoQXUS:localhost:8800TeQ$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g!HWTlaNxUKnDsrtlOxU:localhost:8800\TeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:8800TeQ$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w!ffijTnPMbTrDXHqOXf:localhost:8800TeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800 jV \  r $ |*@PVj Je'Q ] $F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qsm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800 mRmʻ@anon-20191002_181700-439:localhost:8800 Ie'Q ]$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800mLm@anon-20191002_181700-438:localhost:8800 He'Q ]$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800mmp@anon-20191002_181700-437:localhost:8800Ge#Q ]$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUm.room.test!zuCqeooOnfWkYrQdxA:localhost:8800m5m9@anon-20191002_181700-436:localhost:8800,Fe?Q ]$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgm.room.history_visibility!zuCqeooOnfWkYrQdxA:localhost:8800mԻmԽ@anon-20191002_181700-436:localhost:8800$Ee/Q ]$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEm.room.join_rules!zuCqeooOnfWkYrQdxA:localhost:8800mԹGmԺ<@anon-20191002_181700-436:localhost:8800&De3Q ]$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcm.room.power_levels!zuCqeooOnfWkYrQdxA:localhost:8800mԴmԶU@anon-20191002_181700-436:localhost:8800 Ce'Q ]$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvsm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800mԱmԲL@anon-20191002_181700-436:localhost:8800B e'Q  ]$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4m.room.create!zuCqeooOnfWkYrQdxA:localhost:8800mԮmԮ@anon-20191002_181700-436:localhost:8800 Ae'Q ] $C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70m.room.member!vttkrtSyHEJXVMlvLo:localhost:8800 mԞmԟM@anon-20191002_181700-435:localhost:8800 @e'Q ]$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsMm.room.member!vttkrtSyHEJXVMlvLo:localhost:8800mԛ$mԛ@anon-20191002_181700-434:localhost:8800?e#Q ]$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gm.room.name!vttkrtSyHEJXVMlvLo:localhost:8800mԘmԘ@anon-20191002_181700-433:localhost:8800>e#Q ]$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIm.room.test!vttkrtSyHEJXVMlvLo:localhost:8800mԖYmԖ]@anon-20191002_181700-433:localhost:8800,=e?Q ]$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkm.room.history_visibility!vttkrtSyHEJXVMlvLo:localhost:8800mԑmԓ@anon-20191002_181700-433:localhost:8800$<e/Q ]$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4m.room.join_rules!vttkrtSyHEJXVMlvLo:localhost:8800mԎdmԏ@anon-20191002_181700-433:localhost:8800&;e3Q ]$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTwm.room.power_levels!vttkrtSyHEJXVMlvLo:localhost:8800mԋjmԌ@anon-20191002_181700-433:localhost:8800 :e'Q ]$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02sm.room.member!vttkrtSyHEJXVMlvLo:localhost:8800mԈmԉ@anon-20191002_181700-433:localhost:88009 e'Q  ]$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8m.room.create!vttkrtSyHEJXVMlvLo:localhost:8800mԅ+mԅ@anon-20191002_181700-433:localhost:8800 8e'Q ]$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwm.room.member!whuymJoLfUdkFdxoyE:localhost:8800mv\mv@anon-20191002_181700-432:localhost:8800 7e'Q ]$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCom.room.member!whuymJoLfUdkFdxoyE:localhost:8800mr<mr@anon-20191002_181700-431:localhost:88006e#Q ]$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wm.room.test!whuymJoLfUdkFdxoyE:localhost:8800mpRmpW@anon-20191002_181700-430:localhost:8800,5e?Q ]$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2cm.room.history_visibility!whuymJoLfUdkFdxoyE:localhost:8800mimm@anon-20191002_181700-430:localhost:8800$4e/Q ]$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQm.room.join_rules!whuymJoLfUdkFdxoyE:localhost:8800mfmh!@anon-20191002_181700-430:localhost:8800&3e3Q ]$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SYm.room.power_levels!whuymJoLfUdkFdxoyE:localhost:8800mcmd@anon-20191002_181700-430:localhost:8800  i.eQa_$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2361}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-433:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042578219, "hashes": {"sha256": "7yBSITL8Rm8BhwDNiv/v3JYjNi/dq1bJLCtsXxOjVJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/eH34GmWWBeW/UQmN/8QlGjyKpSQ9kvVaLA7FxLc8T+SMu4G+HOy0aj5+URixoBZbgCcrN1R9jRvD+z3Oen2BQ"}}, "unsigned": {"age_ts": 1570042578219}}V-eQa9$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 449, "stream_ordering": 2360}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ"], "prev_events": ["$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo"], "type": "m.room.member", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-432:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-432", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-432:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042574428, "hashes": {"sha256": "BauxA/l8wdVHegGt3N0h4AbOWN1exj/wOAKn5RHz/+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZBMRZrs78d4fUaP+767CP2Vif9Dnrh2m5Ppn8gL7jiQjRspQhd+ZGRxCNOrlkSDI4AB/4EG5S0mEaWjt7uXBCQ"}}, "unsigned": {"age_ts": 1570042574428}}V,eQa9$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 448, "stream_ordering": 2359}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ"], "prev_events": ["$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w"], "type": "m.room.member", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-431:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-431", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-431:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042573372, "hashes": {"sha256": "9jxQb+M/0KDu163CeMiTQeo844QwdG2z8VKFicOPOSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "98Zl8qve/PRraDH4dgTiQPi9D/w1vNN9y4SfTqu8aSIPBsJAmwgpRO9uiF1u67DURZMAjzkb4u6Mj8icxjzIAg"}}, "unsigned": {"age_ts": 1570042573372}}H+eQa$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w!whuymJoLfUdkFdxoyE:localhost:8800{"token_id": 447, "stream_ordering": 2358}{"auth_events": ["$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY", "$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE", "$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs"], "prev_events": ["$-Il0kCR2kAjvaLHxDhMKd6XC20IreOT7rpjDPWLyi2c"], "type": "m.room.test", "room_id": "!whuymJoLfUdkFdxoyE:localhost:8800", "sender": "@anon-20191002_181700-430:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042572882, "hashes": {"sha256": "Ix2rF9bBWWZxIpf2sO9cig9YOyGfGYhgTzHKgY3/Oco"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RvIT3kUlJvZquZqqxRIqj5Y9gBdnZTkc5p1rrDbeSmIHvJ01iPqmA8cBvVjTvMM8ihJGRU8szKhYNkcZGaWQCA"}}, "unsigned": {"age_ts": 1570042572882}} akC{`8pH X 0  h @  x P ( ` 8  p H X0h@#S+c;sK[3 iP1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU'Q$1570043713441WJPkP:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY=3$19:localhost:42455 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk33$15:localhost:42455 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 t'Q$1570043680434abJWo:localhost:8800 s'Q$1570043670433bjAzo:localhost:8800 l'Q$1570043668432TfiHj:localhost:8800 k'Q$1570043664431IMLSL:localhost:8800 j'Q$1570043660430kLPpN:localhost:8800 i'Q$1570043656428rZaqi:localhost:8800 e'Q$1570043655427tEtWD:localhost:8800 d'Q$1570043654426seixP:localhost:8800 c'Q$1570043653425AhyPB:localhost:8800 b'Q$1570043652424mkkFn:localhost:8800 a'Q$1570043648422SglHQ:localhost:8800 ^'Q$1570043647421dmTZW:localhost:8800 ]'Q$1570043646420mPrhj:localhost:8800 \'Q$1570043646419zIOAX:localhost:8800 ['Q$1570043645418ABZkc:localhost:8800 Z'Q$1570043593416CouYv:localhost:8800 ''Q$1570043592415heiAH:localhost:8800 &'Q$1570043591414NuXxd:localhost:8800 %'Q$1570043590413Khvee:localhost:8800 $'Q$1570043589412JaDTY:localhost:8800 #'Q$1570043588411PDBWG:localhost:8800 "'Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043575399SiSKs:localhost:8800 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 'Q$1570043566390qTwyJ:localhost:8800 'Q$1570043565389RsxAr:localhost:8800 'Q$1570043564388ZmOEV:localhost:8800 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 a} { y w u sqomkigeca~eeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~ eeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800~ eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800~~eeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800~}eeQ$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~|eeQ$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800~{eeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800~zeeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~yeeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800~xeeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ!whuymJoLfUdkFdxoyE:localhost:8800~weeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE!whuymJoLfUdkFdxoyE:localhost:8800~veeQ$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo$-6YjIi7d0rNtabL7a0DCDRnOHLnhJQgq-EGCwn2E-SY!whuymJoLfUdkFdxoyE:localhost:8800 KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD-]@anon-20191002_181700-504:localhost:8829R-]@anon-20191002_181700-453:localhost:8829-]@anon-20191002_181700-453:localhost:8829-]@anon-20191002_181700-452:localhost:8800-]@anon-20191002_181700-451:localhost:8829-]@anon-20191002_181700-450:localhost:8800 -]@anon-20191002_181700-449:localhost:8800 -]@anon-20191002_181700-449:localhost:8800 -]@anon-20191002_181700-448:localhost:8800 -]@anon-20191002_181700-447:localhost:8800 -]@anon-20191002_181700-446:localhost:8800-]@anon-20191002_181700-504:localhost:8829Q-]@anon-20191002_181700-503:localhost:8800P-]@anon-20191002_181700-502:localhost:8829O-]@anon-20191002_181700-502:localhost:8829N-]@anon-20191002_181700-501:localhost:8800M-]@anon-20191002_181700-500:localhost:8829L-]@anon-20191002_181700-499:localhost:8800K-]@anon-20191002_181700-498:localhost:8829J-]@anon-20191002_181700-498:localhost:8829I-]@anon-20191002_181700-497:localhost:8800H-]@anon-20191002_181700-496:localhost:8829G-]@anon-20191002_181700-495:localhost:8800F-]@anon-20191002_181700-494:localhost:8800E-]@anon-20191002_181700-494:localhost:8800D-]@anon-20191002_181700-493:localhost:8800C-]@anon-20191002_181700-492:localhost:8800B-]@anon-20191002_181700-491:localhost:8800A-]@anon-20191002_181700-490:localhost:8800@-]@anon-20191002_181700-489:localhost:8829?-]@anon-20191002_181700-489:localhost:8829>-]@anon-20191002_181700-488:localhost:8800=-]@anon-20191002_181700-487:localhost:8829<-]@anon-20191002_181700-487:localhost:8829;-]@anon-20191002_181700-486:localhost:8800:-]@anon-20191002_181700-485:localhost:88299-]@anon-20191002_181700-484:localhost:88008-]@anon-20191002_181700-483:localhost:88297-]@anon-20191002_181700-483:localhost:88296-]@anon-20191002_181700-482:localhost:88005-]@anon-20191002_181700-481:localhost:88294-]@anon-20191002_181700-480:localhost:88003-]@anon-20191002_181700-479:localhost:88002-]@anon-20191002_181700-479:localhost:88001-]@anon-20191002_181700-478:localhost:88000-]@anon-20191002_181700-477:localhost:8800/-]@anon-20191002_181700-476:localhost:8800.-]@anon-20191002_181700-475:localhost:8800--]@anon-20191002_181700-474:localhost:8829,-]@anon-20191002_181700-474:localhost:8829+-]@anon-20191002_181700-473:localhost:8800*-]@anon-20191002_181700-472:localhost:8829)-]@anon-20191002_181700-472:localhost:8829(-]@anon-20191002_181700-471:localhost:8800'-]@anon-20191002_181700-470:localhost:8829&-]@anon-20191002_181700-469:localhost:8800%-]@anon-20191002_181700-468:localhost:8829$-]@anon-20191002_181700-468:localhost:8829#-]@anon-20191002_181700-467:localhost:8800"-]@anon-20191002_181700-466:localhost:8829!-]@anon-20191002_181700-465:localhost:8800 -]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-464:localhost:8800-]@anon-20191002_181700-463:localhost:8800-]@anon-20191002_181700-462:localhost:8800-]@anon-20191002_181700-461:localhost:8800-]@anon-20191002_181700-460:localhost:8800-]@anon-20191002_181700-459:localhost:8829-]@anon-20191002_181700-459:localhost:8829-]@anon-20191002_181700-458:localhost:8800-]@anon-20191002_181700-457:localhost:8829-]@anon-20191002_181700-457:localhost:8829-]@anon-20191002_181700-456:localhost:8800-]@anon-20191002_181700-455:localhost:8829-]@anon-20191002_181700-454:localhost:8800  BhV6eQa9$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 450, "stream_ordering": 2369}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4"], "prev_events": ["$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM"], "type": "m.room.member", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-435:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-435", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-435:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042584762, "hashes": {"sha256": "sxFWipxJSy3zLWjS5oRsZtYuQk9PRNSxg13sg9QbR4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WNzvtMZ6CGGH7axmylbOioL6k+vQwU4S0EZIpIJmDiaVYCtG0r7ILmF30hD/pk0JgvoyIJ3n1E2tzpc0bjvdCQ"}}, "unsigned": {"age_ts": 1570042584762}}V5eQa9$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 452, "stream_ordering": 2368}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4"], "prev_events": ["$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g"], "type": "m.room.member", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-434:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-434", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-434:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042583844, "hashes": {"sha256": "2HYJtL7FRB6u7sfzfOZZee17r4NRhIte+JXNoXh8zS4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2jifZ9pxtlFqk0wvYwMtAomZTr/bNQxT/908skS34yQCgxcmit+sIRDaCjhP+InbgAChEDkqyVMLtumrzY44Cw"}}, "unsigned": {"age_ts": 1570042583844}}n4eQai$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2367}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI"], "type": "m.room.name", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042583062, "hashes": {"sha256": "Fq7OJqlHvYNlnu82Y2oOxBLtGleP0Q6V+kVuVzLvyr0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZgYFcETBA8duAQn/8Z3F/bWxG98Pi3B4k4nu4WxHIWyrZxt2v4+x/iAXpVcSO4lCZRr4NTW1kOTCfqBmVQRkAg"}}, "unsigned": {"age_ts": 1570042583062}}H3eQa$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2366}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk"], "type": "m.room.test", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042582617, "hashes": {"sha256": "lxFN1cSGWJAdmjB0p/hDG6hj5RAZVhMHqV2wRoK9vW0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FeMMtzGwq6HnbwlslOWoDRz71oE2EHd2O/AogKSeA5ZQUKSDpLUvGN4M7elcvrcO/6fIrGF0MxP+Oye6LUulCg"}}, "unsigned": {"age_ts": 1570042582617}} .NC 8 - { " p  e ZOD9M`s$7LZQL$1570042622113mtzjt:localhost:8800sha256PU.q@sZl5[weL$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugsha256g  1TM,cqFV=eL$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMsha256Xo^]XMb 1dʵ3J#V<eL$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUsha256l{'xt[\#Lb&"ٓ+V;eL$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVgsha256]!c@anon-20191002_181700-437:localhost:8800PMLBXPJIHMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgog=]!c@anon-20191002_181700-436:localhost:8800PJOSZGJIHEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQog<]!c@anon-20191002_181700-438:localhost:8800TJXWGIJRBFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAog;]!c@anon-20191002_181700-434:localhost:8800FQTRGMUKGZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQog:]!c@anon-20191002_181700-433:localhost:8800UUQGLCEWQBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5Aog9]!c@anon-20191002_181700-435:localhost:8800SYLXZYMBKMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgo  2eQa$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2365}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4"], "type": "m.room.history_visibility", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042581440, "hashes": {"sha256": "4f7qf3u+mi2lO3JyS4Bh/wwQramH+wgyGymBXAwgvtI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z7fB6ah1sUnnoZGwkAMFxyyOl+uJAycGe4SEHCDa9SmJEpuTQ4nERr35ZqaeguJIHSkMmravxs1yG4G4nDzJBg"}}, "unsigned": {"age_ts": 1570042581440}}t1eQau$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2364}{"auth_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw", "$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw"], "type": "m.room.join_rules", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042580580, "hashes": {"sha256": "hjww2s9QA0PeQwrVd5PTBTIsUaHaFkW7Q8atm12JtuE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7BPkbxJIF6kS+Ts0axuehMMrtVuJxWdnyAA+cVQnetyA+zS0lG+rceEtcGC9E2aqQOj93hbzCApoPV8F6Hx8Ag"}}, "unsigned": {"age_ts": 1570042580580}}k0eQac$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2363}{"auth_events": ["$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8", "$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "prev_events": ["$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s"], "type": "m.room.power_levels", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"users": {"@anon-20191002_181700-433:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042579818, "hashes": {"sha256": "9gav38poZvvGsG+KwMobvFAjUYrs8ur0QY/E5VbMaDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jAQBD3991FuqX/Eod5tS3p6srZ04WJNn3T4Wy1sNZir4kl27qwQR/12ZD9v5UAb4kG22G3W6xD6mknV3SwwSCQ"}}, "unsigned": {"age_ts": 1570042579818}}v/eQay$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800{"token_id": 451, "stream_ordering": 2362}{"auth_events": ["$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8"], "prev_events": ["$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8"], "type": "m.room.member", "room_id": "!vttkrtSyHEJXVMlvLo:localhost:8800", "sender": "@anon-20191002_181700-433:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-433", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-433:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042579125, "hashes": {"sha256": "W6e87g3+TYNftR5f+d2HV0DyCEEAoBno5pwyT+yMJ5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W7z5UtTDqnmGwy65XICxztVUSbMSw3rUli9L/Elajjcxs33EPru+CkPBUqRy+a5/M9IZW0SXF7UtIskfSd6oDg"}}, "unsigned": {"age_ts": 1570042579125}} M~z v r n j fb^ZVRNs)MkQQQ$1570042617107cANtu:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042615105OKfnm:localhost:8800$1570042614104FELge:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042614104FELge:localhost:8800$1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042613103AHxGt:localhost:8800$1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042612102sQZCG:localhost:8800$1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800kQQQ$1570042611101IffRu:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800jQOQ$1570042611100ueDzK:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800~eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800}eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800|eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800{eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8!IZkczIYykpZDvjuUWn:localhost:8800zeeQ$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800yeeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800xeeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800weeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800veeQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800ueeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800teeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800seeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800reeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800qeeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU!zuCqeooOnfWkYrQdxA:localhost:8800peeQ$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800oeeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800neeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800meeQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800leeQ$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800keeQ$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800jeeQ$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800ieeQ$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI!vttkrtSyHEJXVMlvLo:localhost:8800heeQ$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800geeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800feeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800 ~FQ |  E #  p {9~  HXr 6eQ']$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:8800joinm!eQ? $eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800m.room.history_visibilitye eQ/ $b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800m.room.join_rulesgeQ3 $mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800m.room.power_levels eQ']$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-433:localhost:8800joinaeQ' $iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800m.room.create eQ']$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-432:localhost:8800join_4eQ# $qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800m.room.namem3eQ? $lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibilitye2eQ/ $e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rulesg1eQ3 $E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels 0eQ']$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:8800joina/eQ' $bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800m.room.create .eQ']$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-441:localhost:8800join -eQ']$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-440:localhost:8800join ,eQ']$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-439:localhost:8800join +eQ']$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-438:localhost:8800join *eQ']$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-437:localhost:8800joinm)eQ? $PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800m.room.history_visibilitye(eQ/ $tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800m.room.join_rulesg'eQ3 $YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800m.room.power_levels &eQ']$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-436:localhost:8800joina%eQ' $A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800m.room.create $eQ']$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-435:localhost:8800join #eQ']$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-434:localhost:8800join_"eQ# $u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g!vttkrtSyHEJXVMlvLo:localhost:8800m.room.name %3< Z x  C a,Jh3 %Qo % %5nX]@anon-20191002_181700-447:localhost:8800@anon-20191002_181700-447:localhost:8800 anon-20191002_181700-447nW]@anon-20191002_181700-446:localhost:8800@anon-20191002_181700-446:localhost:8800 anon-20191002_181700-446nU]@anon-20191002_181700-444:localhost:8800@anon-20191002_181700-444:localhost:8800 anon-20191002_181700-444nV]@anon-20191002_181700-445:localhost:8800@anon-20191002_181700-445:localhost:8800 anon-20191002_181700-445nS]@anon-20191002_181700-442:localhost:8800@anon-20191002_181700-442:localhost:8800 anon-20191002_181700-442nR]@anon-20191002_181700-441:localhost:8800@anon-20191002_181700-441:localhost:8800 anon-20191002_181700-441nQ]@anon-20191002_181700-440:localhost:8800@anon-20191002_181700-440:localhost:8800 anon-20191002_181700-440nP]@anon-20191002_181700-439:localhost:8800@anon-20191002_181700-439:localhost:8800 anon-20191002_181700-439nO]@anon-20191002_181700-438:localhost:8800@anon-20191002_181700-438:localhost:8800 anon-20191002_181700-438nN]@anon-20191002_181700-437:localhost:8800@anon-20191002_181700-437:localhost:8800 anon-20191002_181700-437nM]@anon-20191002_181700-436:localhost:8800@anon-20191002_181700-436:localhost:8800 anon-20191002_181700-436nJ]@anon-20191002_181700-433:localhost:8800@anon-20191002_181700-433:localhost:8800 anon-20191002_181700-433nI]@anon-20191002_181700-432:localhost:8800@anon-20191002_181700-432:localhost:8800 anon-20191002_181700-432nH]@anon-20191002_181700-431:localhost:8800@anon-20191002_181700-431:localhost:8800 anon-20191002_181700-431nG]@anon-20191002_181700-430:localhost:8800@anon-20191002_181700-430:localhost:8800 anon-20191002_181700-430nF]@anon-20191002_181700-429:localhost:8800@anon-20191002_181700-429:localhost:8800 anon-20191002_181700-429nE]@anon-20191002_181700-428:localhost:8800@anon-20191002_181700-428:localhost:8800 anon-20191002_181700-428nD]@anon-20191002_181700-427:localhost:8800@anon-20191002_181700-427:localhost:8800 anon-20191002_181700-427nC]@anon-20191002_181700-426:localhost:8800@anon-20191002_181700-426:localhost:8800 anon-20191002_181700-426nB]@anon-20191002_181700-425:localhost:8800@anon-20191002_181700-425:localhost:8800 anon-20191002_181700-425nA]@anon-20191002_181700-424:localhost:8800@anon-20191002_181700-424:localhost:8800 anon-20191002_181700-424n@]@anon-20191002_181700-422:localhost:8800@anon-20191002_181700-422:localhost:8800 anon-20191002_181700-422n?]@anon-20191002_181700-421:localhost:8800@anon-20191002_181700-421:localhost:8800 anon-20191002_181700-421n>]@anon-20191002_181700-420:localhost:8800@anon-20191002_181700-420:localhost:8800 anon-20191002_181700-420n=]@anon-20191002_181700-419:localhost:8800@anon-20191002_181700-419:localhost:8800 anon-20191002_181700-419nL]@anon-20191002_181700-435:localhost:8800@anon-20191002_181700-435:localhost:8800 anon-20191002_181700-435nK]@anon-20191002_181700-434:localhost:8800@anon-20191002_181700-434:localhost:8800 anon-20191002_181700-434 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@JJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!            }}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKK~~}}||{{zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccbbaa``__^^]]\\[[ZZYYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA@@??>>==<<;;::99887766554433221100//..--,,++**))((''&&%%$$##""!!   >br998 X   F ;  W :  ]& V  s  tUq8bVrUq)8]!@anon-20191002_181700-562:localhost:8800RUCUWRMARXM8]!@anon-20191002_181700-551:localhost:8800PDLFVATDIVB8]!@anon-20191002_181700-526:localhost:8800CNSENJMXXV*8]!@anon-20191002_181700-525:localhost:8800DQXQXDJYET)8]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOL,8]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN+6[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBX6[!@anon-20191002_181700-54:localhost:8800MQMQOGGONN\6[!@anon-20191002_181700-53:localhost:8800MVQZRCIGFUZ6[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNY6[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXU6[!@anon-20191002_181700-55:localhost:8800GJICSOZSSM]6[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTG[8]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEU8]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOH8]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKFQ8]!@anon-20191002_181700-565:localhost:8800MSICJQZBGXP8]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZO8]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOMNq78]!@anon-20191002_181700-561:localhost:8800YQDTZKECLGL8]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEEK8]!@anon-20191002_181700-559:localhost:8829ESMCXDKMPQJ8]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSI8]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDAH8]!@anon-20191002_181700-556:localhost:8800TMQBHREBEOG8]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZF8]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXSE8]!@anon-20191002_181700-553:localhost:8829UQYOPZHDDUD8]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBUC8]!@anon-20191002_181700-510:localhost:8800TMGCAARJXM 8]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNLR8]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOV>8]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSK=8]!@anon-20191002_181700-542:localhost:8829IKECMPFQXL<8]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ;8]!@anon-20191002_181700-540:localhost:8829DTIXBTNGTL:8]!@anon-20191002_181700-539:localhost:8800OLXWQXBCRO98]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ88]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ78]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCC?8]!@anon-20191002_181700-536:localhost:8800ABPPMMQYEY58]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ48]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO@8]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZ28]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRP18]!@anon-20191002_181700-534:localhost:8800FBPWXONJWM08]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS/8]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYK.8]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVRA8]!@anon-20191002_181700-524:localhost:8800IVEUVINDHF(8]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLH'8]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOV&8]!@anon-20191002_181700-520:localhost:8800LGMWFFKPIS%6[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPW6[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDV8]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWN$8]!@anon-20191002_181700-516:localhost:8800DBXNPICYFO#8]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQT8]!@anon-20191002_181700-568:localhost:8800IRGUUINXHFS8]!@anon-20191002_181700-514:localhost:8800LBNXTFJTIT"8]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHY!  g 4h5 i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFZOGVMZHFDaGJtdmcsSSoKMDAyZnNpZ25hdHVyZSAjPM-zy-GwR9p4Z6y8RNuTgKkqaN1QbUuLwmo8ahUmxAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdEa2VyLnc9UkFGSy1wSXcKMDAyZnNpZ25hdHVyZSBkAFxusbkUrdv9zMBzwQStKuemeJbV8nQw-cwwoHfCNgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFY4Ujo6WkZMTUdvd2Z2WXAKMDAyZnNpZ25hdHVyZSA0v3D2xFp96Wvtlf3fkr9PLhgWLj_RyiU4KjPPZQhhSQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRiOjhNemI6MHI2MWlIWWYKMDAyZnNpZ25hdHVyZSAVbmnsrNWIvidMW93cZO0oCf-7dVqH1ZwBaOtYUN7O5Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI2bXdjLkUmandTN2taaDMKMDAyZnNpZ25hdHVyZSBc_lL2ZpsKH-UUfaC3jtBi5wrBahwetJFAEiWB3Ds2Qgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdsdnNhXztTdi42eVFFYTgKMDAyZnNpZ25hdHVyZSBeLhUmoWkmWKVPvHLTRd5yfQL6IX-3_CnXb2yQaMXS1wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEprLEhrTWksJnJkbExMPWcKMDAyZnNpZ25hdHVyZSDHYm5XNmKWIizv9kHkeIfU-vsRm-dufMI7E6VIFG7rCQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1zO1pWJi1neHJxUSMzM2MKMDAyZnNpZ25hdHVyZSCLvPAkWthYGaNgzk2xrCqXMSCkd2e2YUXqmnh3fm_MOgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxPdm4rVGM7U0BfTTEyeGkKMDAyZnNpZ25hdHVyZSCrwsAfxq4sH--0ZjaSi2JHTMlAjXii3nqCDf_X-SFfSwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9LSnA0eUsqWWhSVHpSQVUKMDAyZnNpZ25hdHVyZSBKAKEHSNk9YBsggzz7vH5r38X_s4T8jQnqsxi0MSgv7Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX3p1MVZTeV5RN0hXS0kKMDAyZnNpZ25hdHVyZSCAhGMCIcoI26orxt2NI9Vwc2q3S4DDMS7Haw-Q0dBrwwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDosWX4qbTtIOXl1SnlwWFMKMDAyZnNpZ25hdHVyZSAEe9V77YWIig-Y6xgl0gdyA4ESBiOPLm09lg-On7Cllgo   *t:eQau$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2373}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc"], "type": "m.room.join_rules", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042591559, "hashes": {"sha256": "L6E8nlDmmRHe6a02U57dWyRIPP/FRh3wZ1lZID/4B44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GCODQmLjtkW5pQjITh+VJnkD0OTpXpepdQQMyl2V9D/lB3QNswlAEECo4zLpO5/v+9nsD0W6fMFqYyFzov7nDg"}}, "unsigned": {"age_ts": 1570042591559}}k9eQac$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2372}{"auth_events": ["$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "type": "m.room.power_levels", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"users": {"@anon-20191002_181700-436:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042590335, "hashes": {"sha256": "u5/OeXczXzUgs4OwoVQwGrNbumkBD2MUQ38KGgyBnXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n46a1ceaX88afGSnJvOxeD/7o+PrrapFaNfvWdHefbuYbtHbulXCJ993cExZ/K0t4vw0MoCEjATyNU1oDMO3Cg"}}, "unsigned": {"age_ts": 1570042590335}}v8eQay$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2371}{"auth_events": ["$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4"], "prev_events": ["$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-436", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-436:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042589644, "hashes": {"sha256": "TIOsrTDwTbpwUfunTrpTjVXBANva3hQwKWV61Y2MNVc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z/uCGEWqN8vSxuhRJRsIX4yTEAtJcIIutCz9mboC1XyZnDDz/k8t0dHosWQIs3q+LrVdqOsQN07MXMIlVZAWDw"}}, "unsigned": {"age_ts": 1570042589644}}i7eQa_$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2370}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-436:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042588832, "hashes": {"sha256": "LVdUbStNtXB026xOi4tFU8VNb0c8osjT0HB7GaHCObo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q0EDqg1wM3VxdQvDtgs/NFw42c2LD1hLCTXyNgBnHUwGCkUS5/nJApJtX9Pkw+40A4lHKPtYcTosgp1UF5TIAw"}}, "unsigned": {"age_ts": 1570042588832}} @UQq8  T   p 7 S  pm 7 l S o6Rn54O3P8e$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIsha256 8e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQsha256 8e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIsha256 8e$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGEsha256 8e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAsha2568e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0sha256 Q8e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4sha256 H8e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEUsha2568e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAsha256 8e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkksha256 8e$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpMsha256 ~8e$XtTXwkQYhlHRePlWr79RN092TjfyAW1QN56yw9GD9jIsha256t8e$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Ysha2568e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIosha2568e$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUsha256 8e$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsosha256-98e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQsha256 8e$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0sha256x8e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8sha256`8e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4sha2568e$Z407wT_ylF3goaVlaaypAXRQ1qcGfqSlZZQzpQ6IJD8sha2568e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEsha256 X8e$Z1d8obY33qDVeYkUDVl0r_A8wVeCJEBt5b4hBuCaKd4sha2568e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Oksha256 8e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGcsha256S8e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzosha256/8e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgwsha25608e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigsha2568e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8sha256 8e$Yumb_QGhcfqp2ML7LXm3EgjtKOnlozHb8j5hUZ9HgAUsha2568e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJYsha256 8e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX0sha256,8e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQsha2568e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6Isha2568e$YnyDsLfsK_D1t1TkfFPQbpwPsJiwik88kH2BWwtOTBcsha2568e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejcsha2568e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQsha2568e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw4sha2568e$Y_bMW2wQ_mxCWeZ1M-bu-QsbzKTDxh6mVj0J4yyKY7osha256|8e$Y_JPgXFogRSk1aFW8OHg4BfNYo7O2qG-mFsZ_zMHTHIsha2568e$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEosha256 8e$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4sha2568e$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAsha2567e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhssha256{8e$YPfgCLz7U20_tTbJ9jpYJQz8K9_FbOpZNwmDvar3BCIsha25648e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07osha2568e$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Agsha2568e$YMBSEzwoERSExNSsYy0D_8_jF23Gc5SDY3BYMdDgO8csha2568e$YM1lYl__NXMrphq7CJyxTKYVOt5zJvmHLsW2DF10q6ksha2568e$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQcsha256 98e$YJZb0tgC0amgCXqFCiK3cxfkS96Xd0cL2klvcrtOJ90sha2568e$YIy4VTv-FX_SbjkaEuL1BdD8jOMwYwnq7_EKy09tUeEsha25608e$YGZBf8e0SsYWtLYt9Z29YvzLWdqoC4dIiVqTicc_JXMsha2568e$YFPK2jzko_iwI7r4hnxz1vofEUFY8I7TgoAEMBi5fjksha2568e$YDXwG_Ei02Q092rTbdAv-zjALR-hdWdiiwZJjQtTNEgsha256:8e$YBrhyRpso4pwV0Rk4tj6eEDT4Z9DX3ce_lgtQhplNTAsha256#8e$Y9RK29hvsjPdtRnoQRFhen9eE-wAnEDigrJ9TQZYth8sha2568e$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xUsha2568e$Y75RnyAIHg-KCmAC4nOvOrtn9hp-UEpVh2N-5cOnTVwsha256&8e$Y3ag2Ylv-Ez6LmindI3d0e3AtPr9Cm9XlrreSDTm3G0sha256 8e$XzNsIuDPK860XIH90u7ureMmR78epU49RbDnkCpbbQ4sha256f8e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067ksha2568e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxMsha2568e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Asha2569 t \| 4 l<D L, % T deeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800 сeeQ$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4!csWEXfVEVxdviNvgAd:localhost:8800ceeQ$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos!aknLNLxfChlLvFYhkJ:localhost:8800=eeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800 |eeQ$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec!SrMQpDMFREKRMELwbL:localhost:88000eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800 \eeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo$OiVh-DjquMQBh7cZ50PQCbUyRPf1IW9-q7blkMrK5Ho!ffijTnPMbTrDXHqOXf:localhost:8800ŁeeQ$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk!uxKymrHZeXRYCZwekU:localhost:88008eeQ$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800 2eeQ$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ!TlJCaYlCkOOVzFDlLx:localhost:8800eeQ$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$oYqCDBXdXMd82lOSYh7T-QkXi_fUBjVhnkyRiBEJXdk!aZwMKYDXJRlSKjQNWM:localhost:8800~eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosY!aZwMKYDXJRlSKjQNWM:localhost:8800}eeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800|eeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00!raCWVWQGnXbmkexpCN:localhost:8800eeQ$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800eeQ$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ!cGkVFpidyBBxUxsszG:localhost:8800eeQ$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800 āeeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI!ZaOktTIVeRgBXxfubH:localhost:8800UeeQ$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4!JYLMokjOhZZlmbZvTf:localhost:8800eeQ$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4!vttkrtSyHEJXVMlvLo:localhost:8800geeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800 eeQ$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M!yTQmLDAxZscWKLMSWh:localhost:8800VeeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800 ́eeQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800 ˁeeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800 ʁeeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800 eeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800 !" r R [  s)czJXu^#Q/ Q k!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.join_rules$1570042628119fxxBA:localhost:8800`"Q3 Q j!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.power_levels$1570042627118OLFSV:localhost:8800!Q']Q i!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-448:localhost:8800$1570042626117sfUAQ:localhost:8800Z Q' Q h!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.create$1570042626116pKAbp:localhost:8800Q']Q f!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800$1570042623114pBHTz:localhost:8800iQ))Q d!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800$1570042621112AUAFX:localhost:8800fQ? Q c!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibility$1570042620111taWCG:localhost:8800^Q/ Q b!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rules$1570042619110gZfPB:localhost:8800cQ9 Q a!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias$1570042619109qhpUv:localhost:8800`Q3 Q `!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levels$1570042618108WWxoQ:localhost:8800Q']Q _!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800$1570042617107cANtu:localhost:8800ZQ' Q ^!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.create$1570042616106fkZGL:localhost:8800fQ? Q [!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.history_visibility$1570042613103AHxGt:localhost:8800^Q/ Q Z!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.join_rules$1570042612102sQZCG:localhost:8800`Q3 Q Y!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.power_levels$1570042611101IffRu:localhost:8800Q']Q X!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.member@anon-20191002_181700-445:localhost:8800$1570042611100ueDzK:localhost:8800YQ' O W!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.create$157004261099UmKia:localhost:88008Q']ee V!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM Q']e U!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY Q']e T!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMbQ# e S!IZkczIYykpZDvjuUWn:localhost:8800m.room.name$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0pQ? e Q!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibility$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQh Q/ e P!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAj Q3 e O!IZkczIYykpZDvjuUWn:localhost:8800m.room.power_levels$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM Q']e N!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-442:localhost:8800$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUd Q' e M!IZkczIYykpZDvjuUWn:localhost:8800m.room.create$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU Q']e L!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-441:localhost:8800$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA Q']e K!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-440:localhost:8800$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ Q']e J!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-439:localhost:8800$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs Q']e I!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-438:localhost:8800$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug Q']e H!zuCqeooOnfWkYrQdxA:localhost:8800m.room.member@anon-20191002_181700-437:localhost:8800$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iMpQ? e F!zuCqeooOnfWkYrQdxA:localhost:8800m.room.history_visibility$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVghQ/ e E!zuCqeooOnfWkYrQdxA:localhost:8800m.room.join_rules$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE w w +QwV>eQa9$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 453, "stream_ordering": 2377}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-438:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-438", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-438:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042594636, "hashes": {"sha256": "hd11V+tr4cQgArJCe4NFFwLNjQxPsIjnQ6lJ/uro+sw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3hxmRikNiEcB1eEalitcjL98SWe+x3Z1ORdo83n2AWDGx6zyxwKgvZqN7U8LYBkk4jCaYtSObsh2a1z0qhxKDQ"}}, "unsigned": {"age_ts": 1570042594636}}V=eQa9$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 455, "stream_ordering": 2376}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-437:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-437", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-437:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042593794, "hashes": {"sha256": "0+udjeZbSAoyFAB8TSQdFrnD+Sp94Md4kqjY+PI8PZ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ffhm+uYyXoYclfjDfu4Sruse5Isd6b8gntfD9qxD4rqTRc83fK7qnCsBWX//Plm95M7xqsYCZtVKesaONddACQ"}}, "unsigned": {"age_ts": 1570042593794}}H<eQa$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2375}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg"], "type": "m.room.test", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042593333, "hashes": {"sha256": "8M6il+k+tm09aBPY0AjqrPyV+H/Y9eJuGxLEQTQxGwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OMKb23lmcxfPQDqb6VPHPV1ZXdrQJ81ybidhKYq265NHQvnYuOtOeAGGz4NLPUxMQq9hXfIaG2BjwrRH9V0/Cg"}}, "unsigned": {"age_ts": 1570042593333}};eQa$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 454, "stream_ordering": 2374}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs"], "prev_events": ["$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "type": "m.room.history_visibility", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-436:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042592232, "hashes": {"sha256": "MXQRFX6QItbzG7UoF6Wms5T8fghHiLLE2eUeARhPVKY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TzQC6fgjR8Il8+rS8Kd+LbWaf5XkVp37h6lSpzvNcc5bhAjRWrV6tRxVq6svrRCF6Pa9Hy9ghxjmi/4ApYUXDg"}}, "unsigned": {"age_ts": 1570042592232}} JTN0 | \Z( 6 V $zBHt"n <j J 8hp *b >   v D P 1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow j1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY B1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Et1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Es1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI 1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY C1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cn1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAy1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAx1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaAw1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx8 1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M[1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MZ1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug+1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM 1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8>1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8=1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8<1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3co1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3Er1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cp1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU-1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU,1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU+1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN41e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkP1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE 1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE 1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE 1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI.1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI-1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx81e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug-1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug,1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2MY a} { y w u sqomkigeca~3eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~2eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~1eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~0eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~/eeQ$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~.eeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~-eeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~,eeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~+eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~*eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~)eeQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~(eeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800~'eeQ$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~&eeQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~%eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~$eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~#eeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~"eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~!eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~ eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs!zuCqeooOnfWkYrQdxA:localhost:8800~eeQ$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4!zuCqeooOnfWkYrQdxA:localhost:8800 Yd0`, \ ( W -  [ 1  _ 5 c 9 g=kCqGwM#{Q'U+Y/_5 'Q$1570042672173XsxsH:localhost:8800'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800'Q$1570042670170TtDpX:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042668168uCbYK:localhost:8800'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'~Q$1570042665164nYKmj:localhost:8800'}Q$1570042664163IAHXd:localhost:8800'|Q$1570042663162sQrEh:localhost:8800'{Q$1570042662161lGrSW:localhost:8800'zQ$1570042662160SrmtM:localhost:8800'yQ$1570042661159xQwJK:localhost:8800'xQ$1570042661158igwHF:localhost:8800'wQ$1570042660157svDcU:localhost:8800'vQ$1570042660156wxhvl:localhost:8800'uQ$1570042659155mEUeP:localhost:8800'tQ$1570042659154Fztdf:localhost:8800'sQ$1570042658153tmCYJ:localhost:8800'rQ$1570042658152btGpA:localhost:8800'qQ$1570042657151cITOZ:localhost:8800'pQ$1570042656150UsLRz:localhost:8800'oQ$1570042656149JNVWR:localhost:8800'nQ$1570042655148eXOyA:localhost:8800'mQ$1570042654147iSsjl:localhost:8800'lQ$1570042653146dGCce:localhost:8800'kQ$1570042651145wBynt:localhost:8800%jM$15700426501OLytM:localhost:8829'iQ$1570042649143JxPAB:localhost:8800'hQ$1570042648142spuws:localhost:8800'gQ$1570042648141xSHQB:localhost:8800'fQ$1570042647140rNeEf:localhost:8800'eQ$1570042646139VXLYO:localhost:8800'dQ$1570042646138YEunv:localhost:8800'cQ$1570042645137fBnPZ:localhost:8800'bQ$1570042644136OugnY:localhost:8800'aQ$1570042642135oMfQy:localhost:8800%`M$15700426410cEjWu:localhost:8829'_Q$1570042640133wGmrF:localhost:8800'^Q$1570042639132zhjjB:localhost:8800']Q$1570042638131kazZm:localhost:8800'\Q$1570042637130zlkqP:localhost:8800'[Q$1570042636129shBTe:localhost:8800'ZQ$1570042635128KJCvL:localhost:8800'YQ$1570042634127eDBry:localhost:8800'XQ$1570042634126YmPkp:localhost:8800'WQ$1570042632125lwdOR:localhost:8800'VQ$1570042632124bMwzE:localhost:8800'UQ$1570042631123SLyGA:localhost:8800'TQ$1570042630122bUTeO:localhost:8800'SQ$1570042629121nZoNG:localhost:8800'RQ$1570042629120wtVFY:localhost:8800'QQ$1570042628119fxxBA:localhost:8800'PQ$1570042627118OLFSV:localhost:8800'OQ$1570042626117sfUAQ:localhost:8800'NQ$1570042626116pKAbp:localhost:8800'MQ$1570042624115nZtIB:localhost:8800'LQ$1570042623114pBHTz:localhost:8800'KQ$1570042622113mtzjt:localhost:8800'JQ$1570042621112AUAFX:localhost:8800'IQ$1570042620111taWCG:localhost:8800'HQ$1570042619110gZfPB:localhost:8800'GQ$1570042619109qhpUv:localhost:8800'FQ$1570042618108WWxoQ:localhost:8800'EQ$1570042617107cANtu:localhost:8800'DQ$1570042616106fkZGL:localhost:8800'CQ$1570042615105OKfnm:localhost:8800'BQ$1570042614104FELge:localhost:8800'AQ$1570042613103AHxGt:localhost:8800'@Q$1570042612102sQZCG:localhost:8800'?Q$1570042611101IffRu:localhost:8800'>Q$1570042611100ueDzK:localhost:8800&=O$157004261099UmKia:localhost:88001<e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE1;e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1:e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM19e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl018e$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO817e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ16e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA15e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM14e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU13e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU12e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA11e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ10e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs1/e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug  !  MQQa% $1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2392}{"auth_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}]], "prev_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}]], "type": "m.room.member", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-445", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-445:localhost:8800", "event_id": "$1570042611100ueDzK:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042611115, "hashes": {"sha256": "jUPXoblzXRTnsJYqM7Tus5vU86xYMv9X41AStcmEAgw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/haBxUEbWsS+fsbFxDBDBfA+NPEg1GHsGBTuxyVI4q4NEG2EXLAaS/4QN5hWMtSGOtcqNJDv+n5ImHsq5ixHDw"}}, "unsigned": {"age_ts": 1570042611115}}LOQaA $157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2391}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-445:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$157004261099UmKia:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042610150, "hashes": {"sha256": "zRVh71KyUquOhGkMbWOtsn5OxNQ51QgcGHEX5bnnMJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FwHE+R1AFxhE5m/kmTrxeugWFaYel7G6Ee3IkKWlHKdWy2dRkzFZHjGeVcdVHo6/AAEbmY9Uj3a/29FeN30sCQ"}}, "unsigned": {"age_ts": 1570042610150}}[KeQaC$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 460, "stream_ordering": 2390}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM"], "prev_events": ["$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-443:localhost:8800", "content": {"membership": "leave"}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-443:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042608686, "hashes": {"sha256": "VJv9G5Hieo6yYRLDjeLC5gNUoifUBJeC2J9fXRSGA54"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TdO92G1EBibdnKIwiw6C0kXm99wxcvFqgHktJYnBtJyDTjeNtyWtQgB0RMRGzKFR0ZOJntnhDCtui1/f3NlSAQ"}}, "unsigned": {"age_ts": 1570042608686, "replaces_state": "$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM"}} C|M}Jl7g4 d / c . ^ + ] * Z '[*Z'W"R|IyD40[@anon-20191002_181700-53:localhost:8800af4]@anon-20191002_181700-499:localhost:8800m2]@anon-20191002_181700-499:localhost:8800a4]@anon-20191002_181700-497:localhost:8800m2]@anon-20191002_181700-497:localhost:8800a4]@anon-20191002_181700-495:localhost:8800m2]@anon-20191002_181700-495:localhost:8800a4]@anon-20191002_181700-494:localhost:8800m2]@anon-20191002_181700-494:localhost:8800a4]@anon-20191002_181700-493:localhost:8800m4]@anon-20191002_181700-539:localhost:8800m2]@anon-20191002_181700-539:localhost:8800a4]@anon-20191002_181700-538:localhost:8800m2]@anon-20191002_181700-538:localhost:8800a4]@anon-20191002_181700-537:localhost:8800m2]@anon-20191002_181700-537:localhost:8800a4]@anon-20191002_181700-536:localhost:8800m2]@anon-20191002_181700-536:localhost:8800a4]@anon-20191002_181700-535:localhost:8800m2]@anon-20191002_181700-535:localhost:8800a4]@anon-20191002_181700-534:localhost:8800m2]@anon-20191002_181700-534:localhost:8800a4]@anon-20191002_181700-533:localhost:8800m2]@anon-20191002_181700-533:localhost:8800a4]@anon-20191002_181700-532:localhost:8800m2]@anon-20191002_181700-532:localhost:8800a4]@anon-20191002_181700-531:localhost:8800m2]@anon-20191002_181700-531:localhost:8800a0[@anon-20191002_181700-52:localhost:8800ae2]@anon-20191002_181700-529:localhost:8800a2]@anon-20191002_181700-527:localhost:8800a2]@anon-20191002_181700-526:localhost:8800a2]@anon-20191002_181700-525:localhost:8800a2]@anon-20191002_181700-524:localhost:8800a2]@anon-20191002_181700-523:localhost:8800a4]@anon-20191002_181700-521:localhost:8800m2]@anon-20191002_181700-521:localhost:8800a4]@anon-20191002_181700-520:localhost:8800m2]@anon-20191002_181700-520:localhost:8800a0[@anon-20191002_181700-51:localhost:8800ad4]@anon-20191002_181700-518:localhost:8800m2]@anon-20191002_181700-518:localhost:8800a4]@anon-20191002_181700-516:localhost:8800m2]@anon-20191002_181700-516:localhost:8800a4]@anon-20191002_181700-514:localhost:8800m2]@anon-20191002_181700-514:localhost:8800a4]@anon-20191002_181700-512:localhost:8800m2]@anon-20191002_181700-512:localhost:8800a4]@anon-20191002_181700-510:localhost:8800m2]@anon-20191002_181700-510:localhost:8800a0[@anon-20191002_181700-50:localhost:8800ac4]@anon-20191002_181700-509:localhost:8800m2]@anon-20191002_181700-509:localhost:8800a4]@anon-20191002_181700-508:localhost:8800m2]@anon-20191002_181700-508:localhost:8800a4]@anon-20191002_181700-507:localhost:8800m2]@anon-20191002_181700-507:localhost:8800a4]@anon-20191002_181700-506:localhost:8800m2]@anon-20191002_181700-506:localhost:8800a4]@anon-20191002_181700-505:localhost:8800m2]@anon-20191002_181700-505:localhost:8800a4]@anon-20191002_181700-503:localhost:8800m2]@anon-20191002_181700-503:localhost:8800a4]@anon-20191002_181700-501:localhost:8800m2]@anon-20191002_181700-501:localhost:8800a/Y@anon-20191002_181700-4:localhost:8800a!0[@anon-20191002_181700-49:localhost:8800ab 7SO@@ E  E  G  G I I K K MOSW?]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCCmے=[!@anon-20191002_181700-48:localhost:8800XFFXACSKIDm6%=[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWm6$?]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZm!?]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDSm?]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNUmײ?]!@anon-20191002_181700-482:localhost:8800JRYARQINGZmא?]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLSmm?]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOVmY?]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSKm(?]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJm=[!@anon-20191002_181700-53:localhost:8800MVQZRCIGFUmF*=[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNmG+?]!@anon-20191002_181700-539:localhost:8800OLXWQXBCROm#?]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZm?]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJm̌?]!@anon-20191002_181700-536:localhost:8800ABPPMMQYEYm*?]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQmگ?]!@anon-20191002_181700-534:localhost:8800FBPWXONJWMmڤ?]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRPmڕ(?]!@anon-20191002_181700-532:localhost:8800FXXARIFXSSmڋY?]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYKm{=[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBmBj)?]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOLmv?]!@anon-20191002_181700-527:localhost:8800BACKHRSCZNmr2?]!@anon-20191002_181700-526:localhost:8800CNSENJMXXVmo?]!@anon-20191002_181700-525:localhost:8800DQXQXDJYETml?]!@anon-20191002_181700-524:localhost:8800IVEUVINDHFmh?]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLHmf}?]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOVm@?]!@anon-20191002_181700-520:localhost:8800LGMWFFKPISm?=[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDm?(?]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWNm?]!@anon-20191002_181700-516:localhost:8800DBXNPICYFOm?]!@anon-20191002_181700-514:localhost:8800LBNXTFJTITm՞?]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHYmٴ?]!@anon-20191002_181700-510:localhost:8800TMGCAARJXMmَ=[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXm='?]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOVmق|?]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEUmj?]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOHm`?]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTLmG?]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQAm/?]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQMm i?]!@anon-20191002_181700-501:localhost:8800YBYGOFEONKm<Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVLms-=[!@anon-20191002_181700-49:localhost:8800XXZIHXDAZYm:&?]!@anon-20191002_181700-499:localhost:8800VXSECXNERAm¤?]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSCm؞?]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZm|W?]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQmo?]!@anon-20191002_181700-493:localhost:8800GRPWUCANVUmY??]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQTmOs?]!@anon-20191002_181700-491:localhost:8800SADWUTCSYMm3_?]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBUm  &KpiBeQa_$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2381}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-442:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042600364, "hashes": {"sha256": "i4ezfbAQn5Gyv9zTm74OQg1dxmqcwGR3L6+tF1ZsSJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aKHAEcgqMEkDM09DZCpiTa4ielUEoMLJ/0US7udDezZ7I6x5r5QtvXLgbboGK2iJOxIZQ5vl3nAP/CdLxSAbBg"}}, "unsigned": {"age_ts": 1570042600364}}WAeQa;$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 458, "stream_ordering": 2380}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-441:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-441", "avatar_url": null}, "depth": 11, "prev_state": [], "state_key": "@anon-20191002_181700-441:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042597912, "hashes": {"sha256": "ZY6xuEIiZ+D9HBjA9c2NkK6k2GDFQbqhLl+DGRdn6UU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fosLyPSxGMysLdGdrj8sryPIRTdx4Q0/uEjEZ7CpDBy2au1sjO6WZDsZbvbCjglPsTDBk7m4qAojuE/lsJjHDw"}}, "unsigned": {"age_ts": 1570042597912}}W@eQa;$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 457, "stream_ordering": 2379}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-440:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-440", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-440:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042596828, "hashes": {"sha256": "6wRfTfphftr9lzQVJajtFCbwqQBwB8toiMK0ID42CCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CDlP7/E0U/TSM4PqTuMvpDH0zlnlFTLO5x/VdYRiBEmuCqxK0Yx7WkRVnux7v81qF9IoqyJJ8+GorLSTCqCrAA"}}, "unsigned": {"age_ts": 1570042596828}}V?eQa9$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800{"token_id": 456, "stream_ordering": 2378}{"auth_events": ["$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc", "$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4", "$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE"], "prev_events": ["$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug"], "type": "m.room.member", "room_id": "!zuCqeooOnfWkYrQdxA:localhost:8800", "sender": "@anon-20191002_181700-439:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-439", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-439:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042595922, "hashes": {"sha256": "TI7k0A+hW8d361hS4AjZUkty5KYaFjOMPZg4zt5MfvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EunssoUuQgAusCw8Hb37wGGUvGTJq9tkKZEN0GLSb7l1N1hRGzC7Gt0Y5DDrlvm8rmkA3unm6rA4K7x4SX7wBQ"}}, "unsigned": {"age_ts": 1570042595922}} ?\ r p , @o+`&?"cQ?Q ]$1570042620111taWCG:localhost:8800m.room.history_visibility!ePtMOPPOgOcBIMNZpn:localhost:8800m*Om+@anon-20191002_181700-446:localhost:8800bQ/Q ]$1570042619110gZfPB:localhost:8800m.room.join_rules!ePtMOPPOgOcBIMNZpn:localhost:8800m'm(@anon-20191002_181700-446:localhost:8800aQ9Q ]$1570042619109qhpUv:localhost:8800m.room.canonical_alias!ePtMOPPOgOcBIMNZpn:localhost:8800m$m% @anon-20191002_181700-446:localhost:8800`Q3Q ]$1570042618108WWxoQ:localhost:8800m.room.power_levels!ePtMOPPOgOcBIMNZpn:localhost:8800m!m"e@anon-20191002_181700-446:localhost:8800_Q'Q ]$1570042617107cANtu:localhost:8800m.room.member!ePtMOPPOgOcBIMNZpn:localhost:8800m m~@anon-20191002_181700-446:localhost:8800^ Q'Q  ]$1570042616106fkZGL:localhost:8800m.room.create!ePtMOPPOgOcBIMNZpn:localhost:8800mmH@anon-20191002_181700-446:localhost:8800]Q)Q ]$1570042615105OKfnm:localhost:8800m.room.message!YGUjVdVdpcQoGkRnWB:localhost:8800m)m-@anon-20191002_181700-445:localhost:8800\Q#Q ]$1570042614104FELge:localhost:8800m.room.test!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800"[Q?Q ]$1570042613103AHxGt:localhost:8800m.room.history_visibility!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800ZQ/Q ]$1570042612102sQZCG:localhost:8800m.room.join_rules!YGUjVdVdpcQoGkRnWB:localhost:8800m m I@anon-20191002_181700-445:localhost:8800YQ3Q ]$1570042611101IffRu:localhost:8800m.room.power_levels!YGUjVdVdpcQoGkRnWB:localhost:8800m m @anon-20191002_181700-445:localhost:8800XQ'Q ]$1570042611100ueDzK:localhost:8800m.room.member!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800W O'Q  ]$157004261099UmKia:localhost:8800m.room.create!YGUjVdVdpcQoGkRnWB:localhost:8800mm@anon-20191002_181700-445:localhost:8800 Ve'Q ] $EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPEm.room.member!IZkczIYykpZDvjuUWn:localhost:8800 m.m@anon-20191002_181700-443:localhost:8800 Ue'Q ] $mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYm.room.member!IZkczIYykpZDvjuUWn:localhost:8800 mwmF@anon-20191002_181700-444:localhost:8800 Te'Q ]$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMm.room.member!IZkczIYykpZDvjuUWn:localhost:8800m<m@anon-20191002_181700-443:localhost:8800Se#Q ]$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0m.room.name!IZkczIYykpZDvjuUWn:localhost:8800m&m@anon-20191002_181700-442:localhost:8800Re#Q ]$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8m.room.test!IZkczIYykpZDvjuUWn:localhost:8800m;m?@anon-20191002_181700-442:localhost:8800,Qe?Q ]$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQm.room.history_visibility!IZkczIYykpZDvjuUWn:localhost:8800mm@anon-20191002_181700-442:localhost:8800$Pe/Q ]$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAm.room.join_rules!IZkczIYykpZDvjuUWn:localhost:8800m#m@anon-20191002_181700-442:localhost:8800&Oe3Q ]$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMm.room.power_levels!IZkczIYykpZDvjuUWn:localhost:8800mm@anon-20191002_181700-442:localhost:8800 Ne'Q ]$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUm.room.member!IZkczIYykpZDvjuUWn:localhost:8800m,mޚ@anon-20191002_181700-442:localhost:8800M e'Q  ]$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUm.room.create!IZkczIYykpZDvjuUWn:localhost:8800m۬m@anon-20191002_181700-442:localhost:8800 Le'Q ] $viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800 mm@anon-20191002_181700-441:localhost:8800 Ke'Q ] $AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQm.room.member!zuCqeooOnfWkYrQdxA:localhost:8800 mmB@anon-20191002_181700-440:localhost:8800 y9r 4 w @LXy  M]]Q$15700426692GLpqH:localhost:8829@anon-20191002_181700-457:localhost:8829@anon-20191002_181700-457:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800leave; Q]]Q=$1570042667167mhSmJ:localhost:8800@anon-20191002_181700-457:localhost:8829@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800inviteanon-20191002_181700-4579 Q]]Q=$1570042664163IAHXd:localhost:8800@anon-20191002_181700-456:localhost:8800@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800joinanon-20191002_181700-456; Q]]Q=$1570042657151cITOZ:localhost:8800@anon-20191002_181700-455:localhost:8829@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800inviteanon-20191002_181700-4559 Q]]Q=$1570042654147iSsjl:localhost:8800@anon-20191002_181700-454:localhost:8800@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800joinanon-20191002_181700-4547 M]]Q=$15700426501OLytM:localhost:8829@anon-20191002_181700-453:localhost:8829@anon-20191002_181700-453:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800joinanon-20191002_181700-453; Q]]Q=$1570042649143JxPAB:localhost:8800@anon-20191002_181700-453:localhost:8829@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800inviteanon-20191002_181700-4539 Q]]Q=$1570042645137fBnPZ:localhost:8800@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800joinanon-20191002_181700-4527 M]]Q=$15700426410cEjWu:localhost:8829@anon-20191002_181700-451:localhost:8829@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800joinanon-20191002_181700-4519 Q]]Q=$1570042634127eDBry:localhost:8800@anon-20191002_181700-450:localhost:8800@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800joinanon-20191002_181700-4509 Q]]Q=$1570042632124bMwzE:localhost:8800@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800joinanon-20191002_181700-449; Q]]Q=$1570042631123SLyGA:localhost:8800@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800inviteanon-20191002_181700-4499 Q]]Q=$1570042626117sfUAQ:localhost:8800@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800joinanon-20191002_181700-4489 Q]]Q=$1570042623114pBHTz:localhost:8800@anon-20191002_181700-447:localhost:8800@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800joinanon-20191002_181700-4479 Q]]Q=$1570042617107cANtu:localhost:8800@anon-20191002_181700-446:localhost:8800@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800joinanon-20191002_181700-4469 Q]]Q=$1570042611100ueDzK:localhost:8800@anon-20191002_181700-445:localhost:8800@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800joinanon-20191002_181700-445, e]]Q$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE@anon-20191002_181700-443:localhost:8800@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800leaveC e]]Q=$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY@anon-20191002_181700-444:localhost:8800@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800joinanon-20191002_181700-444C e]]Q=$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM@anon-20191002_181700-443:localhost:8800@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800joinanon-20191002_181700-443C e]]Q=$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU@anon-20191002_181700-442:localhost:8800@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800joinanon-20191002_181700-442C e]]Q=$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA@anon-20191002_181700-441:localhost:8800@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800joinanon-20191002_181700-441 g * T~=ggN]!c@anon-20191002_181700-458:localhost:8800BKBKPFYUSGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAogM]!c@anon-20191002_181700-456:localhost:8800CRSASZJZPSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQogL]!c@anon-20191002_181700-454:localhost:8800BXAWMRWQLAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwogK]!c@anon-20191002_181700-452:localhost:8800NISMZSIYDMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwogJ]!c@anon-20191002_181700-450:localhost:8800JKUEUBZDECMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwogI]!c@anon-20191002_181700-448:localhost:8800LJFADOXYLPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAogH]!c@anon-20191002_181700-449:localhost:8800MYBVEJZYHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAogG]!c@anon-20191002_181700-446:localhost:8800JWCYKNRWXJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0wogF]!c@anon-20191002_181700-447:localhost:8800VKYHTJKXLWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywogE]!c@anon-20191002_181700-445:localhost:8800IBQSIDYLYFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAogD]!c@anon-20191002_181700-444:localhost:8800OXPWWQTOCJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-Mgo 8l D `88]c!E@anon-20191002_181700-448:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9FSU5ta0B4MiYuSTM7eUUKMDAyZnNpZ25hdHVyZSAweYPdqvjqCW0Dz-ncWHVIZZt58-ZJSWBzZ5sulvC_cAoLJFADOXYLP127.0.0.1Perl + Net::Async::HTTP/0.44m?R7]c!E@anon-20191002_181700-447:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpYQzAqRjJyZ1k2KztRQTMKMDAyZnNpZ25hdHVyZSBGamiUzWSqq4vqkRMcRfDkjawzkqQQzdErOyMRsvfwywoVKYHTJKXLW127.0.0.1Perl + Net::Async::HTTP/0.44m4^6]c!E@anon-20191002_181700-446:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICt0Uyo6djZfLUlud1EscW0KMDAyZnNpZ25hdHVyZSAvalUDGuKinEuTBg59A5aqgOnmYJgNcqqEy55jzLmz0woJWCYKNRWXJ127.0.0.1Perl + Net::Async::HTTP/0.44m5]c!E@anon-20191002_181700-445:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo1ci5DeTpUeUVUOjdwcEEKMDAyZnNpZ25hdHVyZSAx6j4djskPnHifvX8ZRVueYLp7blT7f9Qumg7SHCOcxAoIBQSIDYLYF127.0.0.1Perl + Net::Async::HTTP/0.44m4]c!E@anon-20191002_181700-444:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg7dzZzdnl1Kks5dT1KcH4KMDAyZnNpZ25hdHVyZSCPRfIzrGdVV2DljTkXrRPAjUjoDU6MHCChj6CZCMH-MgoOXPWWQTOCJ127.0.0.1Perl + Net::Async::HTTP/0.44md3]c!E@anon-20191002_181700-443:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5Da1ZYVGEsbVJOZmI1dCYKMDAyZnNpZ25hdHVyZSBjz-vUfZk1Zkypt5OEijykhRSxh43fSCBn96gcrHzhqAoEZTQKOQREE127.0.0.1Perl + Net::Async::HTTP/0.44m2]c!E@anon-20191002_181700-442:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY5Ni5nNmJVdVc3TVQwd0gKMDAyZnNpZ25hdHVyZSBnyuRDIco-3F101-WmUcWzSotfzDJSJ1tRM1jivmRsOAoICXJFYTXBA127.0.0.1Perl + Net::Async::HTTP/0.44mړ1]c!E@anon-20191002_181700-441:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtabDZuOFRSSyZ4U2U1NzUKMDAyZnNpZ25hdHVyZSA2B1qWMNWGc58YXM1YhnKM2QCsGLDKkznatQDfh-YpqQoMUSKUFQFQV127.0.0.1Perl + Net::Async::HTTP/0.44m0]c!E@anon-20191002_181700-440:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFacUN2dzJMWTcjMnh6S04KMDAyZnNpZ25hdHVyZSBIE31dBp2khHIslpt9L2ttXRkowx20GElKVJtaEFSdkgoOHPAOKURKK127.0.0.1Perl + Net::Async::HTTP/0.44m˃/]c!E@anon-20191002_181700-439:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFg2MU1hXm5BPV9mY3pHSDIKMDAyZnNpZ25hdHVyZSDYwznq40c_q4a6OD39IVJeXYATWzSsye1YD37lAobSewoCVIXABNKXU127.0.0.1Perl + Net::Async::HTTP/0.44mB  FeQa$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2385}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA"], "type": "m.room.history_visibility", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042603006, "hashes": {"sha256": "ss9wIYhlAVW6oG/tMRxF1kvs5lTkU1GOSC+WZMAmeHs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7B2fLVYjATquYewufyLV8WD99rIZqPCBU5NWnJZaNHkvQhH9rMoOuUmsmla3TNrniaix37IKiJYPDcPwN1SvBQ"}}, "unsigned": {"age_ts": 1570042603006}}tEeQau$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2384}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM"], "type": "m.room.join_rules", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042602275, "hashes": {"sha256": "Ll8QqmKNOsCfprfh9biuIKml9Yi43jx7H+ah6CIi0eg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lPWP/5Z8qRXhSmCiq4Ab9pxCHODF+V347JK7yjdTffv/DFkoqkDf3fdueqCKZzO2MhRV5HPe1ld5+cvXZd4/CA"}}, "unsigned": {"age_ts": 1570042602275}}kDeQac$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2383}{"auth_events": ["$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "type": "m.room.power_levels", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"users": {"@anon-20191002_181700-442:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042601627, "hashes": {"sha256": "Bi+NWaUN8bo7limUEq7soFsq9QDQ1qSY3Kdfm1/5me8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Thnj07SI9PVHfWePqYvFodUx7yOzUvlBAb2Xskt1nVSHN4Z5+eSAL8FW9qIBQmDzrOdV1OTcVJUU9StchDyaCQ"}}, "unsigned": {"age_ts": 1570042601627}}vCeQay$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2382}{"auth_events": ["$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU"], "prev_events": ["$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-442", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-442:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042601004, "hashes": {"sha256": "baTAdAQZ4A3vcdRhInQxwgcCPWmtFycJ9JHKdf4xgKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whc4OHtUx6R47FFUq1PrrMs5Ng6Xe1QRZwKEFEm0OFBjKQydRwstfNwugTSH65ReeKqZ+NsxAjIkRdjjQlJLBw"}}, "unsigned": {"age_ts": 1570042601004}} KXp>2 v D  } K   R X & ^ ,dj8&p> ^vD|KQ,j81e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY 1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic 1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk 1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y 1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU i1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo 1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcs1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg $1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYR1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo<1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc:0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY*1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP4/1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjsznsZ1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQh1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4EA1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kq1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg{1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc 51e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroC1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c 0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioS1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM781e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAX1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xIn1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU 1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5IwO1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4L $(9  D D #Tx8rn2q "W4QQ' $1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.create}3MQ']$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829f2QQ))$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800c1QQ? $1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibility[0QQ/ $1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rules`/QQ9 $1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_alias].QQ3 $1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levels-QQ']$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800W,QQ' $1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.create+QQ']$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800*QQ']$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800])QQ3 $1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.guest_accessc(QQ? $1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.history_visibility['QQ/ $1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.join_rules]&QQ3 $1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.power_levels%QQ']$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-448:localhost:8800W$QQ' $1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.create#QQ']$1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800f"QQ))$1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800c!QQ? $1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibility[ QQ/ $1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rules`QQ9 $1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias]QQ3 $1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levelsQQ']$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800WQQ' $1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.createcQQ? $1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.history_visibility[QQ/ $1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.join_rules]QQ3 $1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.power_levelsQQ']$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.member@anon-20191002_181700-445:localhost:8800VOQ' $157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.create eQ']$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800 eQ']$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-444:localhost:8800 eQ']$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800_eQ# $qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800m.room.namemeQ? $lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ!IZkczIYykpZDvjuUWn:localhost:8800m.room.history_visibilityeeQ/ $e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800m.room.join_rules  BhVJeQa9$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 461, "stream_ordering": 2389}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA"], "prev_events": ["$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-444:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-444", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-444:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042607479, "hashes": {"sha256": "oXRz3lfOI5rMX/XwfxM+K0D3XlMe6uLqDBFL/TA3jIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/VVD8ezRzel1CYadHk5K1BiKfSecq7g6Z6YgMz1UlMamU9cPkCeMDs+7vkE/rnA2HUnoqx8Y2iPfG9d1KmSdBw"}}, "unsigned": {"age_ts": 1570042607479}}VIeQa9$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 460, "stream_ordering": 2388}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA"], "prev_events": ["$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0"], "type": "m.room.member", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-443:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-443", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-443:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042605884, "hashes": {"sha256": "/xIwZ8+L7OHazE1fr4C/fJD+jSaCyBgbOHajSTduhek"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bHxHQziZpaTiI6DFtaJAVxRPBdxsHr8i4/OcBniagR+ARN9h2IU/Den38lxeBByvs9CZk6VAOkzxGUQhbmMsDA"}}, "unsigned": {"age_ts": 1570042605884}}nHeQai$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2387}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8"], "type": "m.room.name", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {"name": "A room name"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042604582, "hashes": {"sha256": "4ImFZRE2E77HJE5TCaEMxgtoF5kyqaMz0G7sDl6xtrI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6u+t7+sOLs4BmzrzfQh6/fEsXiIhcqXDSb8hgAwJI4WZSG2d+Qe+VSP6laESKbGARSKjQ/Y3/RGagMfOqYBRCQ"}}, "unsigned": {"age_ts": 1570042604582}}HGeQa$j2bWcEOGll2MMsILbWtm2n8FBwzqHnrnOiXrergICO8!IZkczIYykpZDvjuUWn:localhost:8800{"token_id": 459, "stream_ordering": 2386}{"auth_events": ["$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM", "$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU", "$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU"], "prev_events": ["$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ"], "type": "m.room.test", "room_id": "!IZkczIYykpZDvjuUWn:localhost:8800", "sender": "@anon-20191002_181700-442:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042604091, "hashes": {"sha256": "1H31Wd387WLqR8TtYJ/pZUDz3wuNr9e4mZA0s8fDJTA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yVgaKvH9KvAq2CJb2oE8JfDAFb3iZ5r88B4zNdPj+/L4XfsPkKOlF5eL4SSiHanTlbZ4kVCEjTZrvMM02He4Cg"}}, "unsigned": {"age_ts": 1570042604091}} J    v8 D p  n \*uCb $ { PJ |0XQj  $<h6 \ * V  J> 1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc 1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4v1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm461e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A&1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k401e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk%1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk61e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I-1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk.1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjot0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAce0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT471e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQEu1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDksO1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0E1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgm1e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIS1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8`1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvoG1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo 1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s 1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAp1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg&1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To 21e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 "1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY21e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4(1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw 1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa8J1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8H1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 Y1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk 61e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k >1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 41e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM 21e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 O1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI 21e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA ~ 3Rb { . G `  y , E^w*C\u*C\u*JBQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042653146dGCce:localhost:8800JAQQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042651145wBynt:localhost:8800H@QM !GSxvxNevpCiwmFCHys:localhost:8800$15700426501OLytM:localhost:8829J?QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042649143JxPAB:localhost:8800J>QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042648142spuws:localhost:8800J=QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042648141xSHQB:localhost:8800J<QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042647140rNeEf:localhost:8800J;QQ !GSxvxNevpCiwmFCHys:localhost:8800$1570042646139VXLYO:localhost:8800J:QQ ~!GSxvxNevpCiwmFCHys:localhost:8800$1570042646138YEunv:localhost:8800J9QQ }!GSxvxNevpCiwmFCHys:localhost:8800$1570042645137fBnPZ:localhost:8800J8QQ |!GSxvxNevpCiwmFCHys:localhost:8800$1570042644136OugnY:localhost:8800J7QQ {!yfizglmCXdcqCgDrTr:localhost:8800$1570042642135oMfQy:localhost:8800H6QM z!yfizglmCXdcqCgDrTr:localhost:8800$15700426410cEjWu:localhost:8829J5QQ y!yfizglmCXdcqCgDrTr:localhost:8800$1570042640133wGmrF:localhost:8800J4QQ x!yfizglmCXdcqCgDrTr:localhost:8800$1570042639132zhjjB:localhost:8800J3QQ w!yfizglmCXdcqCgDrTr:localhost:8800$1570042638131kazZm:localhost:8800J2QQ v!yfizglmCXdcqCgDrTr:localhost:8800$1570042637130zlkqP:localhost:8800J1QQ u!yfizglmCXdcqCgDrTr:localhost:8800$1570042636129shBTe:localhost:8800J0QQ t!yfizglmCXdcqCgDrTr:localhost:8800$1570042635128KJCvL:localhost:8800J/QQ s!yfizglmCXdcqCgDrTr:localhost:8800$1570042634127eDBry:localhost:8800J.QQ r!yfizglmCXdcqCgDrTr:localhost:8800$1570042634126YmPkp:localhost:8800J-QQ q!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632125lwdOR:localhost:8800J,QQ p!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632124bMwzE:localhost:8800J+QQ o!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042631123SLyGA:localhost:8800J*QQ n!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042630122bUTeO:localhost:8800J)QQ m!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629121nZoNG:localhost:8800J(QQ l!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629120wtVFY:localhost:8800J'QQ k!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042628119fxxBA:localhost:8800J&QQ j!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042627118OLFSV:localhost:8800J%QQ i!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626117sfUAQ:localhost:8800J$QQ h!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626116pKAbp:localhost:8800J#QQ g!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042624115nZtIB:localhost:8800J"QQ f!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042623114pBHTz:localhost:8800J!QQ e!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042622113mtzjt:localhost:8800J QQ d!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042621112AUAFX:localhost:8800JQQ c!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042620111taWCG:localhost:8800JQQ b!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619110gZfPB:localhost:8800JQQ a!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042619109qhpUv:localhost:8800JQQ `!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042618108WWxoQ:localhost:8800JQQ _!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042617107cANtu:localhost:8800JQQ ^!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042616106fkZGL:localhost:8800JQQ ]!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042615105OKfnm:localhost:8800JQQ \!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042614104FELge:localhost:8800JQQ [!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042613103AHxGt:localhost:8800JQQ Z!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042612102sQZCG:localhost:8800JQQ Y!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611101IffRu:localhost:8800JQQ X!YGUjVdVdpcQoGkRnWB:localhost:8800$1570042611100ueDzK:localhost:8800IQO W!YGUjVdVdpcQoGkRnWB:localhost:8800$157004261099UmKia:localhost:8800TQe V!IZkczIYykpZDvjuUWn:localhost:8800$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPETQe U!IZkczIYykpZDvjuUWn:localhost:8800$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzYTQe T!IZkczIYykpZDvjuUWn:localhost:8800$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM #} { y 4 [ ;a@fEkjVQQQ$1570042626117sfUAQ:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jUQQQ$1570042623114pBHTz:localhost:8800$1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jTQQQ$1570042623114pBHTz:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jSQQQ$1570042623114pBHTz:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jRQQQ$1570042621112AUAFX:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jQQQQ$1570042621112AUAFX:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jPQQQ$1570042621112AUAFX:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jOQQQ$1570042620111taWCG:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jNQQQ$1570042620111taWCG:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jMQQQ$1570042620111taWCG:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jLQQQ$1570042619110gZfPB:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jKQQQ$1570042619110gZfPB:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jJQQQ$1570042619110gZfPB:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jIQQQ$1570042619109qhpUv:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jHQQQ$1570042619109qhpUv:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jGQQQ$1570042619109qhpUv:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jFQQQ$1570042618108WWxoQ:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jEQQQ$1570042618108WWxoQ:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jDQQQ$1570042617107cANtu:localhost:8800$1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800jCQQQ$1570042613103AHxGt:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800iBQOQ$1570042613103AHxGt:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800jAQQQ$1570042613103AHxGt:localhost:8800$1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800j@QQQ$1570042612102sQZCG:localhost:8800$1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800j?QQQ$1570042612102sQZCG:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800i>QOQ$1570042612102sQZCG:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800j=QQQ$1570042611101IffRu:localhost:8800$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800i<QOQ$1570042611101IffRu:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800i;QOQ$1570042611100ueDzK:localhost:8800$157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800~:eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM!IZkczIYykpZDvjuUWn:localhost:8800~9eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~8eeQ$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~7eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800~6eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800~5eeQ$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIM!IZkczIYykpZDvjuUWn:localhost:8800~4eeQ$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800  hwPQQa $1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2395}{"auth_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}], ["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042612102sQZCG:localhost:8800", {"sha256": "gLgwTvcW8TKy296prK9JXfJRK0CutFaiBpCgK5gKt00"}]], "type": "m.room.history_visibility", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042613103AHxGt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042613405, "hashes": {"sha256": "MkvRXkd+CMZ76tQ7mh2b13xtL5uqE6RAqD3quZtXPgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OlANDhfDynVPtvKqHKgYkelhjoDx9IDNbGzLVGI3jH9FNs0bu8BZY6eCjcwJzqOP23TIW2hIcvEl3PvlbKpzDA"}}, "unsigned": {"age_ts": 1570042613405}}fOQQao $1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2394}{"auth_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}], ["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}]], "prev_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}]], "type": "m.room.join_rules", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042612102sQZCG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042612695, "hashes": {"sha256": "FW6IgXtTj5hCcaQsgRJjAEq5+iMxjWunswAS/eufQks"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aYx8O+OvLSyWE8NRIGvjcRryf3OlY34bbCgdv4JB+aDzm2G44hrcY19hun+TUy9rbzNQvS0qhg3dkF3VMWH5AQ"}}, "unsigned": {"age_ts": 1570042612695}}*NQQaw $1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2393}{"auth_events": [["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "type": "m.room.power_levels", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"users": {"@anon-20191002_181700-445:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042611101IffRu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042611993, "hashes": {"sha256": "RKquTgdsYYEhoO3BMAAxOiCzyg/bbMrrPiXGHqpOV00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l9XpwOph0kb2x4E1HPhN5B2ViQpxu5DPlmlnKe08ctPeyfslA+KPs7eBVW8wX+N02o/H/jpegOUcAye/TUv/CA"}}, "unsigned": {"age_ts": 1570042611993}} 0 K70TQQa) $1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2399}{"auth_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}]], "prev_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}]], "type": "m.room.member", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-446", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-446:localhost:8800", "event_id": "$1570042617107cANtu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042617610, "hashes": {"sha256": "/8dLoISN7ucSPg7LWfSl9fainL8lF6qnnA18Y0wb0K0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZdXVZ8QXVi6m+jTxK3lFilRXtIopJcXzMLQ4aHICg4u1KiCNINVAlu8RvLTTJ7zX/8FeOTa5cnSMF7FVt/LSAA"}}, "unsigned": {"age_ts": 1570042617610}}SQQaC $1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2398}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-446:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042616106fkZGL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042616739, "hashes": {"sha256": "7J1YK/D99l2tfI+ZS+fE8nMKKo9IG5mDQyNFWXjtZJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qT40JzD9Oc+TVIwBxgzugybzgqqRIWTYc4ikJC+tyLkSlC6rSi7En9utCPadIoEGDL8Cv1jNnelZYyRG44UPAQ"}}, "unsigned": {"age_ts": 1570042616739}}sRQQe $1570042615105OKfnm:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "txn_id": "453", "stream_ordering": 2397}{"auth_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}], ["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042614104FELge:localhost:8800", {"sha256": "vSNfuCoEhTFZMqTlhBm4OvRch/OHIXk/T6Y9iJmjclw"}]], "type": "m.room.message", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "event_id": "$1570042615105OKfnm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042615081, "hashes": {"sha256": "l68K7L/aiksW8XJZBRBCGJjaYDVOLRPIY9a6eG30Ly0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DKCM1aL0rVcpY/76tqyNWzdctR6yGC00CfNv/huZ4seAxE7j+kbvxYVCaidLsYH1M5HXikcTQlXqfY2D5JMtAA"}}, "unsigned": {"age_ts": 1570042615081}}:QQQa $1570042614104FELge:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800{"token_id": 462, "stream_ordering": 2396}{"auth_events": [["$1570042611101IffRu:localhost:8800", {"sha256": "kL+u/4S3eT2eV4nmNk4LxFZ29j20BN9U8sQf2WiXkrY"}], ["$157004261099UmKia:localhost:8800", {"sha256": "4bV9K5ICW2nIbGCesYs53g+YEC4KKAZ4qexRgLw7Rv0"}], ["$1570042611100ueDzK:localhost:8800", {"sha256": "50W+Q2DWHkeaIIS0dMX7/ITPtEwgJjHL9Ux6rqzhbb8"}]], "prev_events": [["$1570042613103AHxGt:localhost:8800", {"sha256": "cqrDEmdo2EzJdlLK6T2n4bW2ZVjggDQESokqBLGh2x0"}]], "type": "m.room.test", "room_id": "!YGUjVdVdpcQoGkRnWB:localhost:8800", "sender": "@anon-20191002_181700-445:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "event_id": "$1570042614104FELge:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042614476, "hashes": {"sha256": "nIPXufjeN46xwgVQsh/ZevUtsUG+Jn/0n6GL7gmUe3I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UMagrp5SOiW472aZy7fUnXDRAxgi/wbI/PpXUdffyWk9Vyi4lKH4uWXUCmPutyikwacb+Ws38y6e648sEWBbAA"}}, "unsigned": {"age_ts": 1570042614476}} 1^ k x ' 6 C P ] jy(5BO\ kx'P]Q@anon-20191002_181700-317:localhost:8800!LvARVIpJZeRQxbKefX:localhost:8800#P]Q@anon-20191002_181700-312:localhost:8800!SfYtaUhCFosNfHfUVm:localhost:8800"P]Q@anon-20191002_181700-311:localhost:8800!vyCFfUTJKYJSDadFhT:localhost:8800P]Q@anon-20191002_181700-311:localhost:8800!beBXQofoOfxNBtzsut:localhost:8800 P]Q@anon-20191002_181700-311:localhost:8800!NPdjmIfsBVIIkvWBzD:localhost:8800!P]Q@anon-20191002_181700-310:localhost:8800!xvblqEscwOtCqJntfF:localhost:8800N[Q@anon-20191002_181700-30:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-308:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-307:localhost:8800!HhYREfUiJTpjWmOuPF:localhost:8800P]Q@anon-20191002_181700-306:localhost:8800!nvclDopiBLEOKBIheH:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!aVxOoyiLLnxmzgLJat:localhost:8800P]Q@anon-20191002_181700-305:localhost:8800!YgaGPEraeLCqHQirin:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!hYPSaMPGsLnvYSmwhg:localhost:8800P]Q@anon-20191002_181700-304:localhost:8800!fuHSJcznvGQnoYoLPW:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!jIfvTrwedrWLubsnlM:localhost:8800P]Q@anon-20191002_181700-303:localhost:8800!KeqmSjifajNKxtgqhj:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!icheSPMgpemswIdQkw:localhost:8800P]Q@anon-20191002_181700-302:localhost:8800!EyyNoldCLUdFHzXTDP:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!vpuivIQDEhyuhOLWpg:localhost:8800P]Q@anon-20191002_181700-301:localhost:8800!uSBqTezaFcMnlowsEf:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!NrxQuziwSWzsHuXIlG:localhost:8800P]Q@anon-20191002_181700-300:localhost:8800!CNFopUEQTFbzjmLvii:localhost:8800N[Q@anon-20191002_181700-29:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-299:localhost:8800!aLxrqpqLkbzyIxGgpk:localhost:8800 P]Q@anon-20191002_181700-299:localhost:8800!WhqVaRReBxJXADAyYD:localhost:8800P]Q@anon-20191002_181700-298:localhost:8800!aaRwQZdNAliyvRHpjs:localhost:8800 P]Q@anon-20191002_181700-298:localhost:8800!BfEFIDBthhkweqfhir:localhost:8800 P]Q@anon-20191002_181700-297:localhost:8800!ZShBIxwbJmxjjZmoRQ:localhost:8800 P]Q@anon-20191002_181700-297:localhost:8800!NNiyzThHMivrxhojfp:localhost:8800 P]Q@anon-20191002_181700-296:localhost:8800!QFiJrWFFeTAAAUCjCE:localhost:8800P]Q@anon-20191002_181700-296:localhost:8800!KmuRTfGFgJdgIDAgIW:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!mOrKBPhetifKHDmElM:localhost:8800P]Q@anon-20191002_181700-295:localhost:8800!QyLUggxrTnULUAOseq:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800P]Q@anon-20191002_181700-294:localhost:8800!MBWnwKRwFznvRpAzxr:localhost:8800P]Q@anon-20191002_181700-293:localhost:8800!krhefVncoErkCtnvsy:localhost:8800P]Q@anon-20191002_181700-292:localhost:8800!krhefVncoErkCtnvsy:localhost:8800P]Q@anon-20191002_181700-291:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800P]Q@anon-20191002_181700-290:localhost:8800!mMsxpaIlcykPuOnDyl:localhost:8800N[Q@anon-20191002_181700-28:localhost:8800!jYzridjeihmwPBuwLb:localhost:8800P]Q@anon-20191002_181700-289:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-288:localhost:8800!VOhMAiLfKyTOZbmKGw:localhost:8800P]Q@anon-20191002_181700-287:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800P]Q@anon-20191002_181700-286:localhost:8800!ffijTnPMbTrDXHqOXf:localhost:8800P]Q@anon-20191002_181700-284:localhost:8800!wLitJYvgvNJzanSIvO:localhost:8800P]Q@anon-20191002_181700-283:localhost:8800!hWHyATwKfuznrqTiyu:localhost:8800P]Q@anon-20191002_181700-282:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-281:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800P]Q@anon-20191002_181700-280:localhost:8800!cGkVFpidyBBxUxsszG:localhost:8800  PgWQQaq $1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2402}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042619109qhpUv:localhost:8800", {"sha256": "CrLSM1PTwSnkAtWNsGV9w7DwqTpTGJXLdSsMYWqNh5Y"}]], "type": "m.room.join_rules", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042619110gZfPB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042619802, "hashes": {"sha256": "D7txnp3q1cjArJPPnplU61zuERI40zq8r0OVSvPOnT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WxdKhznDiPEHtPshP2Y9XY82rsPMF7Ba/5Of1AZzOMp6qp3r11lBcO9iPwszcbRtgRbOBLtxu+oPUKCGti1yBg"}}, "unsigned": {"age_ts": 1570042619802}}}VQQa $1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2401}{"auth_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}], ["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}]], "prev_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}]], "type": "m.room.canonical_alias", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"alias": "#__ANON__-15:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042619109qhpUv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042619026, "hashes": {"sha256": "aAZdSRLN4ikJR1/xZLxPAjea+lmtS6G7WeC4PvpYj9I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aULKxv7NuuB0KT2xd6d73OIJ9IMbNEEgDnGDggwarz+pw0Dg6HAibPqn5Bs63mevqSkithivqfn+6wkSSQx3CQ"}}, "unsigned": {"age_ts": 1570042619026}}+UQQay $1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2400}{"auth_events": [["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "type": "m.room.power_levels", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"users": {"@anon-20191002_181700-446:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042618108WWxoQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042618361, "hashes": {"sha256": "Kh/hGQL4nFhDsMn6VVGoNuwyiPdB9TrK7ApSNkajCl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TrpYDIr9P6GF86NzjiWYq+iJeu743QEyuLPGC9nbbNRKD1bIJrKPUdYHlinZJZGjAszRZM77D7G56NzwTm8GCQ"}}, "unsigned": {"age_ts": 1570042618361}} $$H l " F j DhDj Djk)QQQ$1570042654147iSsjl:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800i(QMQ$1570042651145wBynt:localhost:8800$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800i'MQQ$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k&QQQ$1570042649143JxPAB:localhost:8800$1570042648142spuws:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k%QQQ$1570042648142spuws:localhost:8800$1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k$QQQ$1570042648141xSHQB:localhost:8800$1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k#QQQ$1570042647140rNeEf:localhost:8800$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k"QQQ$1570042646139VXLYO:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k!QQQ$1570042646138YEunv:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800k QQQ$1570042645137fBnPZ:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800iQMQ$1570042642135oMfQy:localhost:8800$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800iMQQ$15700426410cEjWu:localhost:8829$1570042640133wGmrF:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042640133wGmrF:localhost:8800$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042639132zhjjB:localhost:8800$1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042638131kazZm:localhost:8800$1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042637130zlkqP:localhost:8800$1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042636129shBTe:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042635128KJCvL:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042634127eDBry:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800kQQQ$1570042632125lwdOR:localhost:8800$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042631123SLyGA:localhost:8800$1570042630122bUTeO:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042630122bUTeO:localhost:8800$1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042629121nZoNG:localhost:8800$1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042629120wtVFY:localhost:8800$1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042628119fxxBA:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042627118OLFSV:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800kQQQ$1570042626117sfUAQ:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800k QQQ$1570042624115nZtIB:localhost:8800$1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042623114pBHTz:localhost:8800$1570042622113mtzjt:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042622113mtzjt:localhost:8800$1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042621112AUAFX:localhost:8800$1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800k QQQ$1570042620111taWCG:localhost:8800$1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042619110gZfPB:localhost:8800$1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042619109qhpUv:localhost:8800$1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800kQQQ$1570042618108WWxoQ:localhost:8800$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800  ;ZQQa $1570042622113mtzjt:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2405}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042621112AUAFX:localhost:8800", {"sha256": "0LA5bgBCsVAF6e7EJEJZds8wkWOkAG1ZiCQMHzlBS7I"}]], "type": "m.room.test", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042622113mtzjt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042622521, "hashes": {"sha256": "4cEi2DtHcPNNS22hA4h0/qr6DxXr4DGo5gIAMqzFfzA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CLQ0R2JYhT0sKOEpRx1Bd17+s3Reni4ZI6Pdfop94JPUkD73cp3miQrPGvvcN+NJoJpzccFor2UHQhe9LoIlDw"}}, "unsigned": {"age_ts": 1570042622521}}YQQa1 $1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2404}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042620111taWCG:localhost:8800", {"sha256": "ZHWcf0h7AKS6qwBV78iQxHqclpKAxiRwHLvZ85RA+zQ"}]], "type": "m.room.aliases", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"aliases": ["#__ANON__-15:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042621112AUAFX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042621511, "hashes": {"sha256": "KR6RHyMuVyEQo3HX2ckRvEBotPEfEBiARg4RvIynAeI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p9KMxqTJDpeR4t0hLRC1svmpfBDslI8cAC87GdV2Ajt2jGuAkmAs9CAVRDZ+giAYyBXQskP6B6CP2RHtwJY4AA"}}, "unsigned": {"age_ts": 1570042621511}}xXQQa $1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "stream_ordering": 2403}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042619110gZfPB:localhost:8800", {"sha256": "TEyTBVJR4SPRsGbnEXU5/iELCA00wqRgJnPUHVmpMq0"}]], "type": "m.room.history_visibility", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042620111taWCG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042620495, "hashes": {"sha256": "D3x50kz4EzgUU9enLiIBJIJAldL1xEJVhGk5N8BxLtM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6ZIpjIa0M2n3ZBJCH+B7IR3uZSjvsaXTO8xa3OFm6tIkd2g4DuQq/YkkDW+EjFvFfuZ0ZfhSkzGWM+IHXU2oDA"}}, "unsigned": {"age_ts": 1570042620495}} T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0& V U U T T S S R R Q Q P P O N L  M L  L J  K I  J I  I G H G G F F E E D D C C B A @ @ ? ? > > =~ = <} ; :| : 9{ 9 8z 8 7y 7 6x 5 4w 4 3v 3 2u 2 1t 1 0s / -r . -q - ,p , +o + *n * )m ) (l ' %k & %j % $i $ #h # "g " !f ! e  d  c  b  a  `  _  ^  ]  \  [  Z  Y  X  W  V  U T S R Q  P  O  N  M  L  K  JIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[Z~Y~}X}|W{yVzyUyxTxwSwvRvuQutPsqOrqNqpMpoLonKnmJmlIkjHjiGihFhgEgfDecCdcBcbAba@a`?`_>_^=^]<\Z;[Z:ZY9YX8XW7WV6VU5UT4SR3RQ2QP1PO0ON/NM.ML-KJ,JI+IH*HG)GF(FE'ED&CB%BA$A@#@?"><!=< <;;::998876454433221100/.--,,++**)(&'& &% %$ $# #" "!! ~}|{zyx w  v  u  t  s rqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCB e3 f ( J{Ih'\| Q'Q  ]$1570042644136OugnY:localhost:8800m.room.create!GSxvxNevpCiwmFCHys:localhost:8800mՇmՈc@anon-20191002_181700-452:localhost:8800{Q)Q ] $1570042642135oMfQy:localhost:8800m.room.message!yfizglmCXdcqCgDrTr:localhost:8800 mՁmՂ@anon-20191002_181700-450:localhost:8800zM'Q ] $15700426410cEjWu:localhost:8829m.room.member!yfizglmCXdcqCgDrTr:localhost:8800 m{m|@anon-20191002_181700-451:localhost:8829yQ#Q ]$1570042640133wGmrF:localhost:8800m.room.test!yfizglmCXdcqCgDrTr:localhost:8800mxmx@anon-20191002_181700-450:localhost:8800xQ)Q ]$1570042639132zhjjB:localhost:8800m.room.aliases!yfizglmCXdcqCgDrTr:localhost:8800mvmvi@anon-20191002_181700-450:localhost:8800"wQ?Q ]$1570042638131kazZm:localhost:8800m.room.history_visibility!yfizglmCXdcqCgDrTr:localhost:8800mpmr+@anon-20191002_181700-450:localhost:8800vQ/Q ]$1570042637130zlkqP:localhost:8800m.room.join_rules!yfizglmCXdcqCgDrTr:localhost:8800mkmlm@anon-20191002_181700-450:localhost:8800uQ9Q ]$1570042636129shBTe:localhost:8800m.room.canonical_alias!yfizglmCXdcqCgDrTr:localhost:8800mhmiH@anon-20191002_181700-450:localhost:8800tQ3Q ]$1570042635128KJCvL:localhost:8800m.room.power_levels!yfizglmCXdcqCgDrTr:localhost:8800memfc@anon-20191002_181700-450:localhost:8800sQ'Q ]$1570042634127eDBry:localhost:8800m.room.member!yfizglmCXdcqCgDrTr:localhost:8800mamb6@anon-20191002_181700-450:localhost:8800r Q'Q  ]$1570042634126YmPkp:localhost:8800m.room.create!yfizglmCXdcqCgDrTr:localhost:8800m_/m_r@anon-20191002_181700-450:localhost:8800qQ)Q ] $1570042632125lwdOR:localhost:8800m.room.message!XnUZiYJDWVNGfsBnGz:localhost:8800 m[m[@anon-20191002_181700-448:localhost:8800pQ'Q ] $1570042632124bMwzE:localhost:8800m.room.member!XnUZiYJDWVNGfsBnGz:localhost:8800 mWbmW@anon-20191002_181700-449:localhost:8800oQ'Q ]$1570042631123SLyGA:localhost:8800m.room.member!XnUZiYJDWVNGfsBnGz:localhost:8800mTmT@anon-20191002_181700-448:localhost:8800nQ#Q ]$1570042630122bUTeO:localhost:8800m.room.test!XnUZiYJDWVNGfsBnGz:localhost:8800mR2mR6@anon-20191002_181700-448:localhost:8800mQ3Q ]$1570042629121nZoNG:localhost:8800m.room.guest_access!XnUZiYJDWVNGfsBnGz:localhost:8800mNmOd@anon-20191002_181700-448:localhost:8800"lQ?Q ]$1570042629120wtVFY:localhost:8800m.room.history_visibility!XnUZiYJDWVNGfsBnGz:localhost:8800mKmL'@anon-20191002_181700-448:localhost:8800kQ/Q ]$1570042628119fxxBA:localhost:8800m.room.join_rules!XnUZiYJDWVNGfsBnGz:localhost:8800mHmI=@anon-20191002_181700-448:localhost:8800jQ3Q ]$1570042627118OLFSV:localhost:8800m.room.power_levels!XnUZiYJDWVNGfsBnGz:localhost:8800mFmF@anon-20191002_181700-448:localhost:8800iQ'Q ]$1570042626117sfUAQ:localhost:8800m.room.member!XnUZiYJDWVNGfsBnGz:localhost:8800mC mC{@anon-20191002_181700-448:localhost:8800h Q'Q  ]$1570042626116pKAbp:localhost:8800m.room.create!XnUZiYJDWVNGfsBnGz:localhost:8800m?m@0@anon-20191002_181700-448:localhost:8800gQ)Q ] $1570042624115nZtIB:localhost:8800m.room.message!ePtMOPPOgOcBIMNZpn:localhost:8800 m9m9@anon-20191002_181700-446:localhost:8800fQ'Q ] $1570042623114pBHTz:localhost:8800m.room.member!ePtMOPPOgOcBIMNZpn:localhost:8800 m4m5@anon-20191002_181700-447:localhost:8800eQ#Q ]$1570042622113mtzjt:localhost:8800m.room.test!ePtMOPPOgOcBIMNZpn:localhost:8800m29m2=@anon-20191002_181700-446:localhost:8800dQ)Q ]$1570042621112AUAFX:localhost:8800m.room.aliases!ePtMOPPOgOcBIMNZpn:localhost:8800m.Gm.@anon-20191002_181700-446:localhost:8800 3f2 K d  } 0 K d }0Kd}0Id}0KJQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042679179ZJCqE:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042678178HSUoI:localhost:8800HQM!MqstbCLZIQFiYNHrqR:localhost:8800$15700426753WBESe:localhost:8829JQQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042675177dzCbt:localhost:8800JQQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042674175gurnU:localhost:8800J~QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042673174OxGuP:localhost:8800J}QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042672173XsxsH:localhost:8800J|QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042672172vPvbe:localhost:8800J{QQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042671171AQZaz:localhost:8800JzQQ!MqstbCLZIQFiYNHrqR:localhost:8800$1570042670170TtDpX:localhost:8800HyQM!WuiaqqIOvBjgETqdus:localhost:8800$15700426692GLpqH:localhost:8829JxQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042669169ZEFsJ:localhost:8800JwQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042667167mhSmJ:localhost:8800JvQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042666166IBpPy:localhost:8800JuQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042666165HDkhp:localhost:8800JtQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042665164nYKmj:localhost:8800JsQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042664163IAHXd:localhost:8800JrQQ!WuiaqqIOvBjgETqdus:localhost:8800$1570042663162sQrEh:localhost:8800JqQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042657151cITOZ:localhost:8800JpQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042656150UsLRz:localhost:8800JoQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042656149JNVWR:localhost:8800JnQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042655148eXOyA:localhost:8800JmQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042654147iSsjl:localhost:8800JlQQ!bQDOrbAknnQZfUbhgS:localhost:8800$1570042653146dGCce:localhost:8800HkQM!GSxvxNevpCiwmFCHys:localhost:8800$15700426501OLytM:localhost:8829JjQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042650144fzLvy:localhost:8800JiQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042649143JxPAB:localhost:8800JhQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042648141xSHQB:localhost:8800JgQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042647140rNeEf:localhost:8800JfQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042646139VXLYO:localhost:8800JeQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042646138YEunv:localhost:8800JdQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042645137fBnPZ:localhost:8800JcQQ!GSxvxNevpCiwmFCHys:localhost:8800$1570042644136OugnY:localhost:8800HbQM!yfizglmCXdcqCgDrTr:localhost:8800$15700426410cEjWu:localhost:8829JaQQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042641134vymmW:localhost:8800J`QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042639132zhjjB:localhost:8800J_QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042638131kazZm:localhost:8800J^QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042637130zlkqP:localhost:8800J]QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042636129shBTe:localhost:8800J\QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042635128KJCvL:localhost:8800J[QQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042634127eDBry:localhost:8800JZQQ!yfizglmCXdcqCgDrTr:localhost:8800$1570042634126YmPkp:localhost:8800JYQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042632124bMwzE:localhost:8800JXQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042631123SLyGA:localhost:8800JWQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629121nZoNG:localhost:8800JVQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042629120wtVFY:localhost:8800JUQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042628119fxxBA:localhost:8800JTQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042627118OLFSV:localhost:8800JSQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626117sfUAQ:localhost:8800JRQQ!XnUZiYJDWVNGfsBnGz:localhost:8800$1570042626116pKAbp:localhost:8800JQQQ!ePtMOPPOgOcBIMNZpn:localhost:8800$1570042623114pBHTz:localhost:8800  3]QQaC $1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2408}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-448:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042626116pKAbp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042626008, "hashes": {"sha256": "tygjBi1BceEXRyFq00EJtgWJZjnubIBWTzkenUUNb4k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lU6bS8ba3+niCzV6ypU39Fn74OMA/Ridvv9k59syQe2VvPHyH7FPGgO7MGXWSheNtVmzScAnVexzDbnHW+cECA"}}, "unsigned": {"age_ts": 1570042626008}}u\QQi $1570042624115nZtIB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 464, "txn_id": "454", "stream_ordering": 2407}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042617107cANtu:localhost:8800", {"sha256": "RGGcPPRuU1jjkVhgi0sqcMn5Ofg23y6sdk5+Q49swQc"}]], "prev_events": [["$1570042623114pBHTz:localhost:8800", {"sha256": "R0PSC1LHEEy+MbUTFpVNwxHfyYtjHye6ducCbvXzmtk"}]], "type": "m.room.message", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-446:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042624115nZtIB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042624403, "hashes": {"sha256": "hVylUWVvxwF6nTlSDvy+AFIXh6zWNxGwjIbDT4iFcl4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aux88/uaJ9af/rnrBCMPuOIjE9Frwu0g9FRc60wzPh9WLLqNW8OizjT7moZGWNLRiNCzlpITN2TnDo7UJsfXCA"}}, "unsigned": {"age_ts": 1570042624403}}I[QQa5 $1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800{"token_id": 463, "stream_ordering": 2406}{"auth_events": [["$1570042618108WWxoQ:localhost:8800", {"sha256": "AA47tO811vgh03iwJR7GmLDhNgfAWyVcswz97GXX4/Y"}], ["$1570042616106fkZGL:localhost:8800", {"sha256": "cHzTSJSkg/TAUUzsUJ0VmjINST94r4sjYmm7hlqHK+s"}], ["$1570042619110gZfPB:localhost:8800", {"sha256": "TEyTBVJR4SPRsGbnEXU5/iELCA00wqRgJnPUHVmpMq0"}]], "prev_events": [["$1570042622113mtzjt:localhost:8800", {"sha256": "AwaqUJNVLhGqjRutcUBzGFpsEzVbAJ13PEjxzjJsG70"}]], "type": "m.room.member", "room_id": "!ePtMOPPOgOcBIMNZpn:localhost:8800", "sender": "@anon-20191002_181700-447:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-447", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-447:localhost:8800", "event_id": "$1570042623114pBHTz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042623213, "hashes": {"sha256": "oBeOheaUf7hBi/A84v6CGEZcgKCpWPcnB7/icoE3NpE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TUJ6cA4XBI5P/dLpuyHsh2FQkFGhVii5gGZLLDXN45CcFhleGmGu5u8/QX9kSGtcod7Vj/jP3GFWo5HSO0XwAg"}}, "unsigned": {"age_ts": 1570042623213}} 2bu& 9 L _  r # 8K^s$7J]p!4L QL$1570042664163IAHXd:localhost:8800sha2563ewY:LWο;]w\v OKL QL$1570042663162sQrEh:localhost:8800sha256n~l1.%e'v̚ڛ: :$jGr>L QL$1570042662161lGrSW:localhost:8800sha256@AQ{UD >ح[z _L QL$1570042662160SrmtM:localhost:8800sha256W]cBto*m /LQL$1570042661159xQwJK:localhost:8800sha256Lَ微mPWZMCLQL$1570042661158igwHF:localhost:8800sha256Hp\ iDvi/;_B\e\Q&үLQL$1570042660157svDcU:localhost:8800sha256'kMei{J8"؇QkLQL$1570042660156wxhvl:localhost:8800sha256t TbνJEkϨLQL$1570042659155mEUeP:localhost:8800sha256K+Xj0%MDLs ji"\kLQL$1570042659154Fztdf:localhost:8800sha256$TSł7@!b~䴦}'LQL$1570042658153tmCYJ:localhost:8800sha256ӌS.)E)~ C/b$LQL$1570042658152btGpA:localhost:8800sha256/<k';d r=bw_LQL$1570042657151cITOZ:localhost:8800sha256 @&@&]+.BjH}> mLQL$1570042656150UsLRz:localhost:8800sha256CxF3 fY[qV{*RuXMtφL~QL$1570042656149JNVWR:localhost:8800sha2567c;(jW!:{u3"F]5L}QL$1570042655148eXOyA:localhost:8800sha256(ZIb4Fԥ$ѶpL|QL$1570042654147iSsjl:localhost:8800sha256k녜A =xZ@oI &Xc坢ܠL{QL$1570042653146dGCce:localhost:8800sha256O>k=֬VVgQlYGVLzQL$1570042651145wBynt:localhost:8800sha256ڣ~gt w.dlL74xx!118JyML$15700426501OLytM:localhost:8829sha256̤bC@$Ůmxm>lLxQL$1570042649143JxPAB:localhost:8800sha256ߗ[TG៨s^p "|!4)LwQL$1570042648142spuws:localhost:8800sha256ĦָVÀ h9%ϫU^~LvQL$1570042648141xSHQB:localhost:8800sha256;PZ+:Q0C-B#Uf|?_K0JQLLuQL$1570042647140rNeEf:localhost:8800sha256V+ gNjϗ66h]6P#XhV0LtQL$1570042646139VXLYO:localhost:8800sha256(x$Oyڴuja>:LsQL$1570042646138YEunv:localhost:8800sha256c!J#{1caKLrQL$1570042645137fBnPZ:localhost:8800sha256†o~Pȹ\=]: \Ꟊ# LqQL$1570042644136OugnY:localhost:8800sha256twy'Ϲc^4cʐb]LpQL$1570042642135oMfQy:localhost:8800sha256h>ZJ3x,ǁ(P_9o(AV3O3w&bLjQL$1570042636129shBTe:localhost:8800sha256ߋ$ ]aJ4hVLiQL$1570042635128KJCvL:localhost:8800sha2560sP+f;GH˺F4n\LhQL$1570042634127eDBry:localhost:8800sha2565څZE ]Ah9kA}$LgQL$1570042634126YmPkp:localhost:8800sha256 ǿΥg]^QaW2uLfQL$1570042632125lwdOR:localhost:8800sha2567sZ({d'/=B.Hm)iLeQL$1570042632124bMwzE:localhost:8800sha256H._ ] @anon-20191002_181700-493:localhost:8800m&\  9 ]@anon-20191002_181700-493:localhost:8800a&\9 ]@anon-20191002_181700-494:localhost:8800a&\= ]  @anon-20191002_181700-492:localhost:8800m&\V> ]  @anon-20191002_181700-491:localhost:8800m&\ 9 ]@anon-20191002_181700-492:localhost:8800a&\9 ]@anon-20191002_181700-491:localhost:8800a&\> ]  @anon-20191002_181700-490:localhost:8800m&\9 ]@anon-20191002_181700-490:localhost:8800a&\> ] @anon-20191002_181700-488:localhost:8800m&\9 ]@anon-20191002_181700-488:localhost:8800a&\> ] @anon-20191002_181700-486:localhost:8800m&\9 ]@anon-20191002_181700-486:localhost:8800a&\> ] @anon-20191002_181700-484:localhost:8800m&\8i9 ]@anon-20191002_181700-484:localhost:8800a&\> ] @anon-20191002_181700-482:localhost:8800m&\ 9 ]@anon-20191002_181700-482:localhost:8800a&\> ]  @anon-20191002_181700-480:localhost:8800m&\ 9 ]@anon-20191002_181700-480:localhost:8800a&\=~ ]  @anon-20191002_181700-479:localhost:8800m&\>} ] @anon-20191002_181700-478:localhost:8800m&\  9| ]@anon-20191002_181700-479:localhost:8800a&\9{ ]@anon-20191002_181700-478:localhost:8800a&\=z ]  @anon-20191002_181700-477:localhost:8800m&\V>y ]  @anon-20191002_181700-476:localhost:8800m&\ 9x ]@anon-20191002_181700-477:localhost:8800a&\9w ]@anon-20191002_181700-476:localhost:8800a&\>v ]  @anon-20191002_181700-475:localhost:8800m&\9u ]@anon-20191002_181700-475:localhost:8800a&\>t ] @anon-20191002_181700-473:localhost:8800m&\`9s ]@anon-20191002_181700-473:localhost:8800a&\>r ] @anon-20191002_181700-471:localhost:8800m&\`9q ]@anon-20191002_181700-471:localhost:8800a&\>p ] @anon-20191002_181700-469:localhost:8800m&\E9o ]@anon-20191002_181700-469:localhost:8800a&\>n ] @anon-20191002_181700-467:localhost:8800m&\ %E9m ]@anon-20191002_181700-467:localhost:8800a&\>l ]  @anon-20191002_181700-465:localhost:8800m&\ "9k ]@anon-20191002_181700-465:localhost:8800a&\=j ]  @anon-20191002_181700-464:localhost:8800m&\>i ] @anon-20191002_181700-463:localhost:8800m&\ $9h ]@anon-20191002_181700-464:localhost:8800a&\9g ]@anon-20191002_181700-463:localhost:8800a&\=f ]  @anon-20191002_181700-462:localhost:8800m&\T>e ]  @anon-20191002_181700-461:localhost:8800m&\ "9d ]@anon-20191002_181700-462:localhost:8800a&\9c ]@anon-20191002_181700-461:localhost:8800a&\>b ]  @anon-20191002_181700-460:localhost:8800m&\9a ]@anon-20191002_181700-460:localhost:8800a&\>` ] @anon-20191002_181700-458:localhost:8800m&\`9_ ]@anon-20191002_181700-458:localhost:8800a&\>^ ] @anon-20191002_181700-456:localhost:8800m&\`9] ]@anon-20191002_181700-456:localhost:8800a&\>\ ] @anon-20191002_181700-454:localhost:8800m&\A9[ ]@anon-20191002_181700-454:localhost:8800a&\>Z ] @anon-20191002_181700-452:localhost:8800m&\ %E9Y ]@anon-20191002_181700-452:localhost:8800a&\>X ]  @anon-20191002_181700-450:localhost:8800m&\ "9W ]@anon-20191002_181700-450:localhost:8800a&\=V ]  @anon-20191002_181700-449:localhost:8800m&\>U ] @anon-20191002_181700-448:localhost:8800m&\ $9T ]@anon-20191002_181700-448:localhost:8800a&\9S ]@anon-20191002_181700-449:localhost:8800a&\ ih5i g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgo߂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAoނ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQo݂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6Rgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3Qwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwo % ) 8 t  3r a ;T- j%_ HW[QQ' $1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.createZMQ']$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829join]YQQ3 $1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_accesscXQQ? $1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility[WQQ/ $1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules]VQQ3 $1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levelsUQQ']$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800joinWTQQ' $1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.createfRQQ))$1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800cQQQ? $1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibility[PQQ/ $1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rules`OQQ9 $1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_alias]NQQ3 $1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levelsMQQ']$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800joinWLQQ' $1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800m.room.createKQQ']$1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800joinDQQ']$1570042623114pBHTz:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800joinfCQQ))$1570042621112AUAFX:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800cBQQ? $1570042620111taWCG:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibility[AQQ/ $1570042619110gZfPB:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rules`@QQ9 $1570042619109qhpUv:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias]?QQ3 $1570042618108WWxoQ:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levels>QQ']$1570042617107cANtu:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800joinW=QQ' $1570042616106fkZGL:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.createc<QQ? $1570042613103AHxGt:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.history_visibility[;QQ/ $1570042612102sQZCG:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.join_rules]:QQ3 $1570042611101IffRu:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.power_levels SMQ']$15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829join9QQ']$1570042611100ueDzK:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.member@anon-20191002_181700-445:localhost:8800joinV8OQ' $157004261099UmKia:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800m.room.create7eQ']$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE!IZkczIYykpZDvjuUWn:localhost:8800m.room.member@anon-20191002_181700-443:localhost:8800leave]JQQ3 $1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.guest_accesscIQQ? $1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.history_visibility[HQQ/ $1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.join_rules]GQQ3 $1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.power_levelsFQQ']$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-448:localhost:8800joinWEQQ' $1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.create _ _g`QQaq $1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2411}{"auth_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}], ["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}]], "prev_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}]], "type": "m.room.join_rules", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042628119fxxBA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042628319, "hashes": {"sha256": "xm823Day+frAbWscQjKOlK5cpF8WOUg35KI7uPZVkKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "npTeoT8R8nztf9mLTpJPI+eE3mNX+hBTSTq2eWpE6+7mU3m5byzBWMwcbrUYMdszP0KFE2XMdcp/ZOC7pnwjDA"}}, "unsigned": {"age_ts": 1570042628319}}+_QQay $1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2410}{"auth_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "type": "m.room.power_levels", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"users": {"@anon-20191002_181700-448:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042627118OLFSV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042627728, "hashes": {"sha256": "oR4X/LUaHmYpJkxeQK/5QEgbhdX+k55QuUdv74I5nWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZiDuLgQFcIUCwxjvNsFT6rCAN+41z+LgF9NB1YX7qFoPLeeLzoqJLTLBgA6yGBdvzMhK6u6yJKxRZF+vXUDPBg"}}, "unsigned": {"age_ts": 1570042627728}}^QQa) $1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2409}{"auth_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}]], "prev_events": [["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}]], "type": "m.room.member", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-448", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-448:localhost:8800", "event_id": "$1570042626117sfUAQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042626825, "hashes": {"sha256": "GC8beKbCzl+nvJ5484u1ZaqNLlUe2TM2YgDJhMZhkWs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cE9e1WcVJots0zKbQYP1EIvMr3alEfKCprrkkZDhVFNPNugusEuf023Pm6jBLzyDMloG0EfNP30CqHgnEY2bBw"}}, "unsigned": {"age_ts": 1570042626825}} $&L r  + Q w 0V|5[:`hzMQQ$15700426410cEjWu:localhost:8829$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800hyMQQ$15700426410cEjWu:localhost:8829$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jxQQQ$1570042639132zhjjB:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jwQQQ$1570042639132zhjjB:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jvQQQ$1570042639132zhjjB:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800juQQQ$1570042638131kazZm:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jtQQQ$1570042638131kazZm:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jsQQQ$1570042638131kazZm:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jrQQQ$1570042637130zlkqP:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jqQQQ$1570042637130zlkqP:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jpQQQ$1570042637130zlkqP:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800joQQQ$1570042636129shBTe:localhost:8800$1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jnQQQ$1570042636129shBTe:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jmQQQ$1570042636129shBTe:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jlQQQ$1570042635128KJCvL:localhost:8800$1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jkQQQ$1570042635128KJCvL:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jjQQQ$1570042634127eDBry:localhost:8800$1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800jiQQQ$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jhQQQ$1570042632124bMwzE:localhost:8800$1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jgQQQ$1570042632124bMwzE:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jfQQQ$1570042632124bMwzE:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jeQQQ$1570042631123SLyGA:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jdQQQ$1570042631123SLyGA:localhost:8800$1570042628119fxxBA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jcQQQ$1570042631123SLyGA:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jbQQQ$1570042631123SLyGA:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jaQQQ$1570042629121nZoNG:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j`QQQ$1570042629121nZoNG:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j_QQQ$1570042629121nZoNG:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j^QQQ$1570042629120wtVFY:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j]QQQ$1570042629120wtVFY:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j\QQQ$1570042629120wtVFY:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800j[QQQ$1570042628119fxxBA:localhost:8800$1570042627118OLFSV:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jZQQQ$1570042628119fxxBA:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jYQQQ$1570042628119fxxBA:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jXQQQ$1570042627118OLFSV:localhost:8800$1570042626117sfUAQ:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800jWQQQ$1570042627118OLFSV:localhost:8800$1570042626116pKAbp:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800  ;cQQa $1570042630122bUTeO:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2414}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042629121nZoNG:localhost:8800", {"sha256": "0P01lRRL1febgRAlcxdq83gsPHrGO/YxJ0ZtBHqXP6Q"}]], "type": "m.room.test", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042630122bUTeO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042630706, "hashes": {"sha256": "IaQxGQsEjMoeQeIFNX0kVrdcy3qatF7GYkAFmcG1EaE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m6tIkhCeDCqrkQGRnuQGTo+UKAB4uM/wpJNXNOvqzOWZzJq1Qfvobfwn/sRuvNsrWtcfzWikKQdOiZvZuW0/Aw"}}, "unsigned": {"age_ts": 1570042630706}}nbQQa $1570042629121nZoNG:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2413}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042629120wtVFY:localhost:8800", {"sha256": "Kcmu7kgGlyu/m6GsqyxLEGOinuhQdvXXp+Nn5WUsE10"}]], "type": "m.room.guest_access", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042629121nZoNG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042629880, "hashes": {"sha256": "f05vV01HP14Xk7OJO8a1AQaXcK9L7O/DBR3ugoa6wEU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G7NQ0Dsr0PTXm/fCsO2iiBWLJItejSzmwBb1NfPDLm6uW+5GW6dUrVKkf8v/IAE1947I70nj5NkZdZa++6iwBw"}}, "unsigned": {"age_ts": 1570042629880}}xaQQa $1570042629120wtVFY:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2412}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042628119fxxBA:localhost:8800", {"sha256": "xbGJaUEVKOB7f6fZZHJhbkpO4mbyArgx5Y8TUeEf0W8"}]], "type": "m.room.history_visibility", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042629120wtVFY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042629062, "hashes": {"sha256": "GCRvciKhKDlgTUxhTac+G8LJhbboRQJ1Fd9eApQvhHo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qXd49IgTWYf2wR3wT0rycpx2DLfk3gtJg6YihynikbLSvbjUNL1eBh8LJJmxykk0Hvvrm+pklp6maBN/0nmDDw"}}, "unsigned": {"age_ts": 1570042629062}} ,"D f  = _ 6`5Wy ,NpnQQQ$1570042681182ZiRRU:locnQQQ$1570042690191yQfnl:localhost:8800$1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042689190UkvMv:localhost:8800$1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042688189axPjv:localhost:8800$1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042687188ddQmS:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042687187gbArC:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042686186Qxqmn:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800nQQQ$1570042683184TpChh:localhost:8800$1570042682183iUUXF:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042682183iUUXF:localhost:8800$1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042681182ZiRRU:localhost:8800$1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042680181TFyrx:localhost:8800$1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042680180uuIxG:localhost:8800$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800nQQQ$1570042679179ZJCqE:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800jMMQ$15700426765pydev:localhost:8829$15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800jMMQ$15700426764DoRhm:localhost:8829$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800lMQQ$15700426753WBESe:localhost:8829$1570042675176WKRiz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042675176WKRiz:localhost:8800$1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042674175gurnU:localhost:8800$1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042673174OxGuP:localhost:8800$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042672173XsxsH:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042672172vPvbe:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800nQQQ$1570042671171AQZaz:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800lMQQ$15700426692GLpqH:localhost:8829$1570042668168uCbYK:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042668168uCbYK:localhost:8800$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042667167mhSmJ:localhost:8800$1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042666166IBpPy:localhost:8800$1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042666165HDkhp:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042665164nYKmj:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042664163IAHXd:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800nQQQ$1570042662161lGrSW:localhost:8800$1570042662160SrmtM:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042662160SrmtM:localhost:8800$1570042661159xQwJK:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042661159xQwJK:localhost:8800$1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800nQQQ$1570042661158igwHF:localhost:8800$1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800 "4 # Z $ C Z-Zk%[/ZEQ' Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.create$1570042670170TtDpX:localhost:8800"DQ']MQ !WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$15700426692GLpqH:localhost:8829$1570042667167mhSmJ:localhost:8800CQ']Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$1570042667167mhSmJ:localhost:8800fBQ? Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility$1570042666166IBpPy:localhost:8800^AQ/ Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules$1570042666165HDkhp:localhost:8800`@Q3 Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levels$1570042665164nYKmj:localhost:8800?Q']Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800$1570042664163IAHXd:localhost:8800Z>Q' Q !WuiaqqIOvBjgETqdus:localhost:8800m.room.create$1570042663162sQrEh:localhost:8800=Q']Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829$1570042657151cITOZ:localhost:8800f<Q? Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility$1570042656150UsLRz:localhost:8800^;Q/ Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules$1570042656149JNVWR:localhost:8800`:Q3 Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels$1570042655148eXOyA:localhost:88009Q']Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800$1570042654147iSsjl:localhost:8800Z8Q' Q !bQDOrbAknnQZfUbhgS:localhost:8800m.room.create$1570042653146dGCce:localhost:8800"7Q']MQ !GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:88006Q']Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$1570042649143JxPAB:localhost:8800`5Q3 Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_access$1570042648141xSHQB:localhost:8800f4Q? Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility$1570042647140rNeEf:localhost:8800^3Q/ Q !GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules$1570042646139VXLYO:localhost:8800`2Q3 Q ~!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levels$1570042646138YEunv:localhost:88001Q']Q }!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800$1570042645137fBnPZ:localhost:8800Z0Q' Q |!GSxvxNevpCiwmFCHys:localhost:8800m.room.create$1570042644136OugnY:localhost:8800/Q']M z!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829$15700426410cEjWu:localhost:8829i.Q))Q x!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800$1570042639132zhjjB:localhost:8800f-Q? Q w!yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibility$1570042638131kazZm:localhost:8800^,Q/ Q v!yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rules$1570042637130zlkqP:localhost:8800c+Q9 Q u!yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_alias$1570042636129shBTe:localhost:8800`*Q3 Q t!yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levels$1570042635128KJCvL:localhost:8800)Q']Q s!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800$1570042634127eDBry:localhost:8800Z(Q' Q r!yfizglmCXdcqCgDrTr:localhost:8800m.room.create$1570042634126YmPkp:localhost:8800$'Q']QQ p!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800$1570042632124bMwzE:localhost:8800$1570042631123SLyGA:localhost:8800&Q']Q o!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.member@anon-20191002_181700-449:localhost:8800$1570042631123SLyGA:localhost:8800`%Q3 Q m!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.guest_access$1570042629121nZoNG:localhost:8800f$Q? Q l!XnUZiYJDWVNGfsBnGz:localhost:8800m.room.history_visibility$1570042629120wtVFY:localhost:8800   4 h m6d]c@anon-20191002_181700-486:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0wo127.0.0.1тd]c@anon-20191002_181700-482:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgo127.0.0.1ςd]c@anon-20191002_181700-484:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAo127.0.0.1cd]c@anon-20191002_181700-488:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAo127.0.0.1҂d]c@anon-20191002_181700-480:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAo127.0.0.1΂d]c@anon-20191002_181700-479:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQo127.0.0.1͂d]c@anon-20191002_181700-478:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_wo127.0.0.1̂d]c@anon-20191002_181700-477:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAo127.0.0.1˂d]c@anon-20191002_181700-476:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQo127.0.0.1ʂd]c@anon-20191002_181700-475:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAo127.0.0.1  AdeQQak $1570042632124bMwzE:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 465, "stream_ordering": 2416}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042628119fxxBA:localhost:8800", {"sha256": "xbGJaUEVKOB7f6fZZHJhbkpO4mbyArgx5Y8TUeEf0W8"}], ["$1570042631123SLyGA:localhost:8800", {"sha256": "hbvg+EtJJKmTP/hqK1clAg3qmaAqwWblnpLsn1iiGTM"}]], "prev_events": [["$1570042631123SLyGA:localhost:8800", {"sha256": "hbvg+EtJJKmTP/hqK1clAg3qmaAqwWblnpLsn1iiGTM"}]], "type": "m.room.member", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-449:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-449", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-449:localhost:8800", "event_id": "$1570042632124bMwzE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042632034, "hashes": {"sha256": "wj/klvurRri3+3z9abFSLIhtxyTjEoHxxjci5KD4hCo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k+rryWrwptfHKC2i2QuzwuJxNlu9uj0Vi0GvWYQT5+lqSDYzmlDvZEhfiSy13CZ9PWgKA7LF7OdEQi4bfNi+Bg"}}, "unsigned": {"age_ts": 1570042632034, "replaces_state": "$1570042631123SLyGA:localhost:8800"}};dQQa $1570042631123SLyGA:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "stream_ordering": 2415}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042628119fxxBA:localhost:8800", {"sha256": "xbGJaUEVKOB7f6fZZHJhbkpO4mbyArgx5Y8TUeEf0W8"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042630122bUTeO:localhost:8800", {"sha256": "75a2E6+G0d0Mr5sZj70VcoFHyT22cnIfpPpufegLVz8"}]], "type": "m.room.member", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-449", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-449:localhost:8800", "event_id": "$1570042631123SLyGA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042631176, "hashes": {"sha256": "NyoSxb5jRAcjPL49ygQCy+UCR5ee75hoBeL7rKJ+GJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAdJTLRR4+9fORtoSmHy6RtI8jP1PdL7WV/gNvmnCp1fs+jGZgcRUeE20iwTbOF92QdfDr75FgcBUlTTIBgNCQ"}}, "unsigned": {"age_ts": 1570042631176, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-448:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-448:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-448", "avatar_url": null}, "sender": "@anon-20191002_181700-448:localhost:8800"}]}} Dl U #  [ ) a /k l g 6  ( n < tBz`.f4ZHNT" 1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC0=1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64b1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o s1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY u1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM}1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk~1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMZ1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A 1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30=1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6AZ1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk 1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQu1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk91e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqwQ1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY "1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsC1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4l1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wJ1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI#1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewM1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs(1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAR1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcj1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wb1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE61e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4k1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4g1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM#1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIG1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc<1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIEOd1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 321e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI l slhQQa) $1570042634127eDBry:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2419}{"auth_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}]], "prev_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}]], "type": "m.room.member", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-450", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-450:localhost:8800", "event_id": "$1570042634127eDBry:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042634706, "hashes": {"sha256": "yNSJoeKErruLempv4appNryCnJncbtKssBzYg0KxVCw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h/jFITND1C/G3LONr8RDUmzF5b60IPinzmW0Z618UFnu/YW/UGIexOhJar61Z2wFohjWmAscOMGJ6aQszI1hDg"}}, "unsigned": {"age_ts": 1570042634706}}gQQaC $1570042634126YmPkp:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2418}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-450:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042634126YmPkp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042634031, "hashes": {"sha256": "+Nk1Z+APyDqE/tOWaOX+Suc9pF3p2qSteBd5hM2NnXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oqezvaphdO9gwO6EeRSOwlMdxIXf8NopoRQ79oiuSxh8yaZ9KEJOnJnWp6nDlFiZqZTApHekMsEEdkCQ/tbtCg"}}, "unsigned": {"age_ts": 1570042634031}}ufQQi $1570042632125lwdOR:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800{"token_id": 466, "txn_id": "455", "stream_ordering": 2417}{"auth_events": [["$1570042627118OLFSV:localhost:8800", {"sha256": "nWZfYyW4Y+heEpiQ8UVRSqrklhWAzsSU3sBAqAeoi2Q"}], ["$1570042626116pKAbp:localhost:8800", {"sha256": "bmR2RX55sgGaIs9iAhyA/l3xR+YMzfOqIVuSSFH5Lwk"}], ["$1570042626117sfUAQ:localhost:8800", {"sha256": "mIAhbHn1QsUZNo9S8KmC4oOzpTiftt1LT3Rp770g0w4"}]], "prev_events": [["$1570042632124bMwzE:localhost:8800", {"sha256": "nUguXzxLXdKDnGOYA9KntUi/M7PC5agAgkMqvn5gABU"}]], "type": "m.room.message", "room_id": "!XnUZiYJDWVNGfsBnGz:localhost:8800", "sender": "@anon-20191002_181700-448:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042632125lwdOR:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042632961, "hashes": {"sha256": "7B2Pi/Wl4GP4ihZJcHdcY7XNf3iVJJUZeYfTPjcJYKw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ds3NtMoyOB1OTdXqfam7JZg9pVq+JqYiNyEmyE5371TTE1+BmfId59HHOzx7OG+Rd7M3u1grNlPWORgJ0FUkCw"}}, "unsigned": {"age_ts": 1570042632961}} KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD~-]@anon-20191002_181700-541:localhost:8800-]@anon-20191002_181700-460:localhost:8800c-]@anon-20191002_181700-459:localhost:8829b-]@anon-20191002_181700-458:localhost:8800a-]@anon-20191002_181700-456:localhost:8800`-]@anon-20191002_181700-454:localhost:8800_-]@anon-20191002_181700-453:localhost:8829^-]@anon-20191002_181700-452:localhost:8800]-]@anon-20191002_181700-451:localhost:8829\-]@anon-20191002_181700-450:localhost:8800[-]@anon-20191002_181700-449:localhost:8800Z-]@anon-20191002_181700-540:localhost:8829-]@anon-20191002_181700-539:localhost:8800-]@anon-20191002_181700-538:localhost:8800-]@anon-20191002_181700-537:localhost:8800-]@anon-20191002_181700-536:localhost:8800-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-534:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-532:localhost:8800-]@anon-20191002_181700-531:localhost:8800-]@anon-20191002_181700-522:localhost:8829-]@anon-20191002_181700-521:localhost:8800-]@anon-20191002_181700-520:localhost:8800-]@anon-20191002_181700-519:localhost:8829-]@anon-20191002_181700-518:localhost:8800-]@anon-20191002_181700-516:localhost:8800-]@anon-20191002_181700-514:localhost:8800-]@anon-20191002_181700-513:localhost:8829-]@anon-20191002_181700-512:localhost:8800-]@anon-20191002_181700-511:localhost:8829-]@anon-20191002_181700-510:localhost:8800-]@anon-20191002_181700-509:localhost:8800-]@anon-20191002_181700-508:localhost:8800-]@anon-20191002_181700-507:localhost:8800-]@anon-20191002_181700-506:localhost:8800-]@anon-20191002_181700-505:localhost:8800-]@anon-20191002_181700-504:localhost:8829-]@anon-20191002_181700-503:localhost:8800-]@anon-20191002_181700-501:localhost:8800-]@anon-20191002_181700-499:localhost:8800-]@anon-20191002_181700-498:localhost:8829-]@anon-20191002_181700-497:localhost:8800-]@anon-20191002_181700-496:localhost:8829-]@anon-20191002_181700-495:localhost:8800-]@anon-20191002_181700-494:localhost:8800-]@anon-20191002_181700-493:localhost:8800-]@anon-20191002_181700-492:localhost:8800-]@anon-20191002_181700-491:localhost:8800~-]@anon-20191002_181700-490:localhost:8800}-]@anon-20191002_181700-489:localhost:8829|-]@anon-20191002_181700-488:localhost:8800{-]@anon-20191002_181700-486:localhost:8800z-]@anon-20191002_181700-484:localhost:8800y-]@anon-20191002_181700-483:localhost:8829x-]@anon-20191002_181700-482:localhost:8800w-]@anon-20191002_181700-481:localhost:8829v-]@anon-20191002_181700-480:localhost:8800u-]@anon-20191002_181700-479:localhost:8800t-]@anon-20191002_181700-478:localhost:8800s-]@anon-20191002_181700-477:localhost:8800r-]@anon-20191002_181700-476:localhost:8800q-]@anon-20191002_181700-475:localhost:8800p-]@anon-20191002_181700-474:localhost:8829o-]@anon-20191002_181700-473:localhost:8800n-]@anon-20191002_181700-471:localhost:8800m-]@anon-20191002_181700-469:localhost:8800l-]@anon-20191002_181700-468:localhost:8829k-]@anon-20191002_181700-467:localhost:8800j-]@anon-20191002_181700-466:localhost:8829i-]@anon-20191002_181700-465:localhost:8800h-]@anon-20191002_181700-464:localhost:8800g-]@anon-20191002_181700-463:localhost:8800f-]@anon-20191002_181700-462:localhost:8800e-]@anon-20191002_181700-461:localhost:8800d %n 0r0 r  Mb!]|[  ; }  nQQ']$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800joincwQQ? $1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility[vQQ/ $1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules`uQQ9 $1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias]tQQ3 $1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levelssQQ']$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800joinWrQQ' $1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.createcqQQ? $1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility[pQQ/ $1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules]oQQ3 $1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levelsnQQ']$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800joinWmQQ' $1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.createlMQ']$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829joinckQQ? $1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility[jQQ/ $1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules]iQQ3 $1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levelshQQ']$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800joinWgQQ' $1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.createfMQ']$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829leave[^QQ/ $1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules]]QQ3 $1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels\QQ']$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800join]QQ3 $1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_accessc~QQ? $1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility[}QQ/ $1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules]|QQ3 $1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels{QQ']$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800joinWzQQ' $1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.createyQQ']$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800joinfxQQ))$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800ceQQ? $1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility[dQQ/ $1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules]cQQ3 $1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levelsbQQ']$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800joinWaQQ' $1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.create`QQ']$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829invitec_QQ? $1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility 8l D `8B]c!E@anon-20191002_181700-463:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgoZKSEJYQPIO127.0.0.1Perl + Net::Async::HTTP/0.44mHA]c!E@anon-20191002_181700-462:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7QoSKOLIDFQEN127.0.0.1Perl + Net::Async::HTTP/0.44m?@]c!E@anon-20191002_181700-461:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0VzngoGRYRTUWCZU127.0.0.1Perl + Net::Async::HTTP/0.44m%?]c!E@anon-20191002_181700-460:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAoGJEFYISBJP127.0.0.1Perl + Net::Async::HTTP/0.44m >]c!E@anon-20191002_181700-458:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5iZ3RUTGY2O21ZOVZ5RmgKMDAyZnNpZ25hdHVyZSAetTQju9N2cJ4kXUxnBVMXbe3aXZwCoFjXLIns2XM7RAoBKBKPFYUSG127.0.0.1Perl + Net::Async::HTTP/0.44mv=]c!E@anon-20191002_181700-456:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhuZ29JNDFiX2JGOm80K3EKMDAyZnNpZ25hdHVyZSDiajzUJyWXhLI-kBEwO9RY_6QHLM3yzvBRR2R6suzznQoCRSASZJZPS127.0.0.1Perl + Net::Async::HTTP/0.44mȃ<]c!E@anon-20191002_181700-454:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZuWn5COyxUI1pAJiZNQFYKMDAyZnNpZ25hdHVyZSC8v68505b9UjZp-XuwXccyJqIoi_sdFXpnAOlfclvOpwoBXAWMRWQLA127.0.0.1Perl + Net::Async::HTTP/0.44mը;]c!E@anon-20191002_181700-452:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZwLitlZ1JaRXMqVkBDfm8KMDAyZnNpZ25hdHVyZSCQdxOvJWW4dYMWbXqvzm35h4FXCmTnXDfuHEhoMimoOwoNISMZSIYDM127.0.0.1Perl + Net::Async::HTTP/0.44mՇP:]c!E@anon-20191002_181700-450:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEEmI0E6WWJLb3o2XzptLFcKMDAyZnNpZ25hdHVyZSD9pXGnZ6nlRFK8jOevd93OTLgxbTq0FtJqWFhXTibBpwoJKUEUBZDEC127.0.0.1Perl + Net::Async::HTTP/0.44m^9]c!E@anon-20191002_181700-449:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1ESk8jcDdoXnhicCsqQ0MKMDAyZnNpZ25hdHVyZSCmasCIaohP-w0mLi_qEQw4-gxaAlas6hmmcoEVb1EYyAoMYBVEJZYHY127.0.0.1Perl + Net::Async::HTTP/0.44mS Bkr=d/[( T  M  y D  r =  i 4 d/_*V!O{Fk6d/4]@an4]@anon-20191002_181700-566:localhost:8800mԚ 2[@anon-20191002_181700-49:localhost:8800m:&4]@anon-20191002_181700-499:localhost:8800m¤4]@anon-20191002_181700-497:localhost:8800m؞4]@anon-20191002_181700-495:localhost:8800m|W4]@anon-20191002_181700-494:localhost:8800mo4]@anon-20191002_181700-493:localhost:8800mY?4]@anon-20191002_181700-492:localhost:8800mOs4]@anon-20191002_181700-491:localhost:8800m3_4]@anon-20191002_181700-565:localhost:8800m 4]@anon-20191002_181700-564:localhost:8800mܭn 4]@anon-20191002_181700-563:localhost:8800mܘS4]@anon-20191002_181700-562:localhost:8800m܃4]@anon-20191002_181700-561:localhost:8800mr4]@anon-20191002_181700-560:localhost:8800md2[@anon-20191002_181700-55:localhost:8800mN.4]@anon-20191002_181700-558:localhost:8800m94]@anon-20191002_181700-557:localhost:8800m+4]@anon-20191002_181700-556:localhost:8800m4]@anon-20191002_181700-555:localhost:8800m 4]@anon-20191002_181700-554:localhost:8800m4]@anon-20191002_181700-552:localhost:8800mB4]@anon-20191002_181700-551:localhost:8800mL4]@anon-20191002_181700-550:localhost:8800m۲2[@anon-20191002_181700-54:localhost:8800mK-2[@anon-20191002_181700-54:localhost:8800mK,4]@anon-20191002_181700-549:localhost:8800mۦ4]@anon-20191002_181700-548:localhost:8800mے4]@anon-20191002_181700-545:localhost:8800mY4]@anon-20191002_181700-543:localhost:8800m(4]@anon-20191002_181700-541:localhost:8800m2[@anon-20191002_181700-53:localhost:8800mG+2[@anon-20191002_181700-53:localhost:8800mF*4]@anon-20191002_181700-539:localhost:8800m#4]@anon-20191002_181700-538:localhost:8800m4]@anon-20191002_181700-537:localhost:8800m̌4]@anon-20191002_181700-536:localhost:8800m*4]@anon-20191002_181700-535:localhost:8800mگ4]@anon-20191002_181700-534:localhost:8800mڤ4]@anon-20191002_181700-533:localhost:8800mڕ(4]@anon-20191002_181700-532:localhost:8800mڋY4]@anon-20191002_181700-531:localhost:8800m{2[@anon-20191002_181700-52:localhost:8800mBj)4]@anon-20191002_181700-529:localhost:8800mv4]@anon-20191002_181700-527:localhost:8800mr24]@anon-20191002_181700-526:localhost:8800mo4]@anon-20191002_181700-525:localhost:8800ml4]@anon-20191002_181700-524:localhost:8800mh4]@anon-20191002_181700-523:localhost:8800mf}4]@anon-20191002_181700-521:localhost:8800m@4]@anon-20191002_181700-520:localhost:8800m?2[@anon-20191002_181700-51:localhost:8800m?(4]@anon-20191002_181700-518:localhost:8800m4]@anon-20191002_181700-516:localhost:8800m4]@anon-20191002_181700-514:localhost:8800m՞4]@anon-20191002_181700-512:localhost:8800mٴ4]@anon-20191002_181700-510:localhost:8800mَ2[@anon-20191002_181700-50:localhost:8800m='4]@anon-20191002_181700-509:localhost:8800mق|4]@anon-20191002_181700-508:localhost:8800mj4]@anon-20191002_181700-507:localhost:8800m`4]@anon-20191002_181700-506:localhost:8800mG4]@anon-20191002_181700-505:localhost:8800m/4]@anon-20191002_181700-503:localhost:8800m i4]@anon-20191002_181700-501:localhost:8800m1Y@anon-20191002_181700-4:localhost:8800ms-  PgkQQaq $1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2422}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042636129shBTe:localhost:8800", {"sha256": "mwHjARzfi/QAJAsLXZN/qOJh00rs//Q09bmIaKZWmR8"}]], "type": "m.room.join_rules", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042637130zlkqP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042637238, "hashes": {"sha256": "dowxIr8VwLgrikmwtWnR2e16Rn9M/EUouiXAUnN6aKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7ikU7zYPeN9lWDD7c3icHx73kgFf/jehwXLSdsqP9cEbEHVTrI8ZXFIOTEj1nunpEYn4dru/47v8ie6RDO+dBQ"}}, "unsigned": {"age_ts": 1570042637238}}}jQQa $1570042636129shBTe:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2421}{"auth_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}], ["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}]], "prev_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}]], "type": "m.room.canonical_alias", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"alias": "#__ANON__-16:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042636129shBTe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042636489, "hashes": {"sha256": "7jlbtzWH8O7QOPaHYwrlVpyezSAmNoL/Vyfk+7ZgpPo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M/4m5kTl/KE6umvK2YxmH0JdTgbuoCCems+Utjw5ys5JNmy2m2UY3YvjD2/zbHrWMdiKmVwoquHeN+OBysXwDQ"}}, "unsigned": {"age_ts": 1570042636489}}+iQQay $1570042635128KJCvL:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2420}{"auth_events": [["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "type": "m.room.power_levels", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"users": {"@anon-20191002_181700-450:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042635128KJCvL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042635697, "hashes": {"sha256": "/0269p3A1ve1Hk8RCYZW6gydvrcN0okSnlu8f5itqf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u+D5mDdIagET3JZUB1g/+b8DXNVj9mzwtzo94O840fCC2Jzkd8f2F+oSP99zOPFGfWBLNT5pXxppat5o8JanAg"}}, "unsigned": {"age_ts": 1570042635697}} NT)}R' } T +  X -  V +  T ) } R '{P%X/X-V+T)}R'*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800 *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAzXcNLHMuqFOcOexj:localhost:8800  *Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w w*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v v*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u u*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t t*Q!yAfsSyqpJWFnkXQFJL:localhost:8800 s s(Q!xwoIOPTGmJIlTXakxC:localhost:8800__(Q!xwoIOPTGmJIlTXakxC:localhost:8800^^(Q!xwoIOPTGmJIlTXakxC:localhost:8800]](Q!xwoIOPTGmJIlTXakxC:localhost:8800\\(Q!xwoIOPTGmJIlTXakxC:localhost:8800[[(Q!xwoIOPTGmJIlTXakxC:localhost:8800ZZ*Q!xvblqEscwOtCqJntfF:localhost:8800OO*Q!xvblqEscwOtCqJntfF:localhost:8800NN*Q!xvblqEscwOtCqJntfF:localhost:8800MM*Q!xvblqEscwOtCqJntfF:localhost:8800LL*Q!xvblqEscwOtCqJntfF:localhost:8800KK*Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800  *Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xhbvqJDfxMSsZPqvld:localhost:8800*Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xcdNyJNFEdaBGFycsB:localhost:8800 *Q!xXYMxashIZAUOTuGAJ:localhost:8800EE*Q!xXYMxashIZAUOTuGAJ:localhost:8800DD*Q!xXYMxashIZAUOTuGAJ:localhost:8800CC*Q!xXYMxashIZAUOTuGAJ:localhost:8800BB*Q!xXYMxashIZAUOTuGAJ:localhost:8800AA*Q!xXYMxashIZAUOTuGAJ:localhost:8800@@*Q!xXYMxashIZAUOTuGAJ:localhost:8800??(Q!wvnfKBSrUlfNmYoeil:localhost:8800||(Q!wvnfKBSrUlfNmYoeil:localhost:8800{{(Q!wvnfKBSrUlfNmYoeil:localhost:8800zz(Q!wvnfKBSrUlfNmYoeil:localhost:8800yy(Q!wvnfKBSrUlfNmYoeil:localhost:8800xx*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wsvXTJXouVkEZcCFsD:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800 4' c I  I  s < _ "p]"@KP<2[iiiiii^Q']!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800 %BQ? !yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibility $:Q/ !yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rules #<Q3 !yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels "^Q']!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800 !6Q' !yNfCaBMPezurwkJRAX:localhost:8800m.room.create 6Q' !yTQmLDAxZscWKLMSWh:localhost:8800m.room.create<Q3 !yLccBXjjEasExpsXlt:localhost:8800m.room.power_levels^Q']!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829^Q']!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800:Q/ !yLccBXjjEasExpsXlt:localhost:8800m.room.join_rulesBQ? !yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility6Q' !yLccBXjjEasExpsXlt:localhost:8800m.room.create<Q3 !yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels^Q']!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800^Q']!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800:Q/ !yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rulesBQ? !yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibility6Q' !yAzXcNLHMuqFOcOexj:localhost:8800m.room.create?Q9 !yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_aliasEQ))!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800<Q3 !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels j^Q']!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800 i:Q/ !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rules kBQ? !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibility l6Q' !yAfsSyqpJWFnkXQFJL:localhost:8800m.room.create h;Q3 !xwoIOPTGmJIlTXakxC:localhost:8800m.room.power_levelsU\Q'[!xwoIOPTGmJIlTXakxC:localhost:8800m.room.member@anon-20191002_181700-31:localhost:8800T9Q/ !xwoIOPTGmJIlTXakxC:localhost:8800m.room.join_rulesVAQ? !xwoIOPTGmJIlTXakxC:localhost:8800m.room.history_visibilityW5Q' !xwoIOPTGmJIlTXakxC:localhost:8800m.room.createS<Q3 !xvblqEscwOtCqJntfF:localhost:8800m.room.power_levelsQ^Q']!xvblqEscwOtCqJntfF:localhost:8800m.room.member@anon-20191002_181700-310:localhost:8800P:Q/ !xvblqEscwOtCqJntfF:localhost:8800m.room.join_rulesRBQ? !xvblqEscwOtCqJntfF:localhost:8800m.room.history_visibilityS6Q' !xvblqEscwOtCqJntfF:localhost:8800m.room.createO<Q3 !xhbvqJDfxMSsZPqvld:localhost:8800m.room.power_levels]Q'[!xhbvqJDfxMSsZPqvld:localhost:8800m.room.member@anon-20191002_181700-81:localhost:8800:Q/ !xhbvqJDfxMSsZPqvld:localhost:8800m.room.join_rulesBQ? !xhbvqJDfxMSsZPqvld:localhost:8800m.room.history_visibility6Q' !xhbvqJDfxMSsZPqvld:localhost:8800m.room.create?Q9 !xhbvqJDfxMSsZPqvld:localhost:8800m.room.canonical_aliasEQ))!xhbvqJDfxMSsZPqvld:localhost:8800m.room.aliaseslocalhost:8800<Q3 !xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels^Q']!xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800:Q/ !xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rulesBQ? !xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibility6Q' !xcdNyJNFEdaBGFycsB:localhost:8800m.room.createQ;Q3 !wvnfKBSrUlfNmYoeil:localhost:8800m.room.power_levelsn\Q'[!wvnfKBSrUlfNmYoeil:localhost:8800m.room.member@anon-20191002_181700-36:localhost:8800m9Q/ !wvnfKBSrUlfNmYoeil:localhost:8800m.room.join_rulesoAQ? !wvnfKBSrUlfNmYoeil:localhost:8800m.room.history_visibilityp  ;nQQa $1570042640133wGmrF:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2425}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042639132zhjjB:localhost:8800", {"sha256": "iHXGOr+271jzvSq4uMa+famUageuDcbdVYp3Ho520ZI"}]], "type": "m.room.test", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042640133wGmrF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042640538, "hashes": {"sha256": "w7xwb8BHDxBhnzs8zAUaDOPZ/atWdjF12u5pwrjbhIE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y2aZtw2en6Ll33fL+w4khQ7WjoR9x64PK5FazcksOvv0q/HYGvl80eioosBWXlT3yJLf3h0YC1OLUQRilmY/Dg"}}, "unsigned": {"age_ts": 1570042640538}}mQQa1 $1570042639132zhjjB:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2424}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042638131kazZm:localhost:8800", {"sha256": "xRPrZd3DfHbVZmnyaJtykUXasu7cynM5RL59JYE3Hs0"}]], "type": "m.room.aliases", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"aliases": ["#__ANON__-16:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042639132zhjjB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042639874, "hashes": {"sha256": "JrTtUQ8pg5IOp7wdUkU4iqL0EAfZd/D564otWQnfYfI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QgwExHE9xnJULzclfkmNFCD1E53uHoPXg0A/Ycg83yy4CnzL99VcSu/xszvMKTKW+iGAtHHao3iL+7w3X4wICw"}}, "unsigned": {"age_ts": 1570042639874}}xlQQa $1570042638131kazZm:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "stream_ordering": 2423}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$1570042637130zlkqP:localhost:8800", {"sha256": "TvqKDQ7QPl85pAYPbyhBtVaggjP0T8Yzd8wmYqCC1AU"}]], "type": "m.room.history_visibility", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042638131kazZm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042638472, "hashes": {"sha256": "ImzWElJzNwWwGgtA4TMxKkl5RDoEQJ8f2BlJSKG9auI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1MmNYqIw31STpHyzBjl6z5y7752k+l1wG8i0k1eeU8rK748MinKR+9tTBFcbkHpbc1tu401wTzWJbqvQLhEICw"}}, "unsigned": {"age_ts": 1570042638472}} Sk,{^># E ( O 8 ~ X  g L ) O 8_H o0~c@l-|_?$F)P9Y>']m.room.member@anon-20191002_181700-464:localhost:8800$3 m.room.guest_access#"? m.room.history_visibility"/ m.room.join_rules!3 m.room.power_levels >']m.room.member@anon-20191002_181700-463:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-462:localhost:8800%)) m.room.aliaseslocalhost:8800"?  m.room.history_visibility/  m.room.join_rules9  m.room.canonical_alias3  m.room.power_levels>']m.room.member@anon-20191002_181700-461:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-460:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-459:localhost:8829>']m.room.member@anon-20191002_181700-459:localhost:8829>']m.room.member@anon-20191002_181700-459:localhost:8829"? m.room.history_visibility / m.room.join_rules 3 m.room.power_levels >']m.room.member@anon-20191002_181700-458:localhost:8800 ' m.room.create >']m.room.member@anon-20191002_181700-457:localhost:8829>']m.room.member@anon-20191002_181700-457:localhost:8829>']m.room.member@anon-20191002_181700-457:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-456:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-455:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-454:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-453:localhost:8829>']m.room.member@anon-20191002_181700-453:localhost:8829>']m.room.member@anon-20191002_181700-453:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-452:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-451:localhost:8829>']m.room.member@anon-20191002_181700-451:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-450:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-449:localhost:8800>']m.room.member@anon-20191002_181700-449:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-448:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-447:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-446:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-445:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-443:localhost:8800>']m.room.member@anon-20191002_181700-444:localhost:8800  $qQQaC $1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2428}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-452:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042644136OugnY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042644441, "hashes": {"sha256": "SPKGv/FayfRGneK1zo4a25uqC++gi5lnAX0Hd2+5WaI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CbIfV3TOKjEUeIWFofLIzUZ694RmHvb2p9/dq/Z2qk3Z0AC5//n/Fgl9H1heCYFjsHgK2yq+MRQdGPE4rBgzAQ"}}, "unsigned": {"age_ts": 1570042644441}}spQQe $1570042642135oMfQy:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800{"token_id": 467, "txn_id": "456", "stream_ordering": 2427}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042634127eDBry:localhost:8800", {"sha256": "NezahRRaRZIMXUHPEWg5/gjcwayS4/prQX0WGLzWJMA"}]], "prev_events": [["$15700426410cEjWu:localhost:8829", {"sha256": "zFxQpTDmGdcgWNSOebQUJkhpVmqLzaULB5VuPTD/E/o"}]], "type": "m.room.message", "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-450:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042642135oMfQy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042642942, "hashes": {"sha256": "CFjfgu1aTmfZrimFZR/+xr2mxiumf10v3R3g0U5eTIM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cVzyFWcksCgWX4zaBNbKE6zI0rM7JoiaYfazq7EJsMitCSpQBjZ1cIsGFxsZzolY6/NcAPtNiQ8kWOeCS5IvAg"}}, "unsigned": {"age_ts": 1570042642942}}aoMQ1 $15700426410cEjWu:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2426}{"auth_events": [["$1570042635128KJCvL:localhost:8800", {"sha256": "MBNzUKkrZju2oUdIAtMcy7r3iH/O/0Y06hVu4PhcA74"}], ["$1570042634126YmPkp:localhost:8800", {"sha256": "BpfsCbrZx78AzqWUrvBnXfle2giTUWHmxFfV7/IydfQ"}], ["$1570042637130zlkqP:localhost:8800", {"sha256": "TvqKDQ7QPl85pAYPbyhBtVaggjP0T8Yzd8wmYqCC1AU"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-451", "membership": "join"}, "depth": 9, "event_id": "$15700426410cEjWu:localhost:8829", "hashes": {"sha256": "JA7IjYnK5tmsoc64zv8STNlpn37Rxq5Bfl+yIzWQbMM"}, "origin": "localhost:8829", "origin_server_ts": 1570042641360, "prev_events": [["$1570042640133wGmrF:localhost:8800", {"sha256": "5clB+LGKXwGxFQljfkz1/eK2nsJwB5f0h/vgZgXQs/M"}]], "prev_state": [], "room_id": "!yfizglmCXdcqCgDrTr:localhost:8800", "sender": "@anon-20191002_181700-451:localhost:8829", "state_key": "@anon-20191002_181700-451:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ks/r7BMKytsrHZl/w17nkgOlfJXUYHLTy7ds4NhQhI6qWyxS28OgNZrDeWmD+zSCjQv0wRjl0I5qVzmyrSA3AQ"}, "localhost:8829": {"ed25519:a_UxIG": "GA+El08p1KoeBeRZaOxk3V1/4ZMVapUF4+PJ+GWkZL6vt3LeMrvHX9MrBAy2Shu2zGtNTqPXTMl/DAxRSwlDBg"}}, "unsigned": {"age": 140}} V^8pH `8vP( ` 8  p H X 0  h @  ~ V . f>zT,d<tL$X0h@(2'Q$1570043195269hcCzg:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042713219HcQXL:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712218KQzXb:localhost:8800'Q$1570042712217nuYrc:localhost:8800'Q$1570042712217nuYrc:localhost:8800'Q$1570042711216KdEEo:localhost:8800~%M$15700427086bDrAU:localhost:8829}%M$15700427086bDrAU:localhost:8829|'Q$1570043194268zlNeZ:localhost:8800'Q$1570043194268zlNeZ:localhost:8800'Q$1570043194268zlNeZ:localhost:8800'Q$1570043193267ZyDyW:localhost:8800'Q$1570043193267ZyDyW:localhost:8800'Q$1570043192266CXqej:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043154263raEaa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043153262hRyOa:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152261Skczg:localhost:8800'Q$1570043152260dkyqc:localhost:8800'Q$1570043152260dkyqc:localhost:8800'Q$1570043151259knbjg:localhost:8800%M$15700427439Hwxyi:localhost:8829%M$15700427439Hwxyi:localhost:8829%M$15700427439Hwxyi:localhost:8829'Q$1570042742255yQzPA:localhost:8800'Q$1570042742255yQzPA:localhost:8800'Q$1570042742255yQzPA:localhost:8800'Q$1570042742255yQzPA:localhost:8800'Q$1570042741254DKIYz:localhost:8800'Q$1570042741254DKIYz:localhost:8800'Q$1570042741254DKIYz:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042740253GkWgu:localhost:8800'Q$1570042739252bWghU:localhost:8800'Q$1570042739252bWghU:localhost:8800'Q$1570042738251iukAg:localhost:8800%M$15700427368TlZQs:localhost:8829%M$15700427368TlZQs:localhost:8829%M$15700427368TlZQs:localhost:8829'Q$1570042734247SfTxR:localhost:8800'Q$1570042734247SfTxR:localhost:8800'Q$1570042734247SfTxR:localhost:8800'Q$1570042734247SfTxR:localhost:8800'Q$1570042733246cYViL:localhost:8800'Q$1570042733246cYViL:localhost:8800'Q$1570042733246cYViL:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042733245smHTZ:localhost:8800'Q$1570042732244zDmQh:localhost:8800'Q$1570042732244zDmQh:localhost:8800'Q$1570042731243YuOkC:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042723230DFoyn:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722229ehxUl:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042722228QkARL:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042721227mhNwo:localhost:8800'Q$1570042720226wSTBF:localhost:8800%M$15700427177BOUHn:localhost:8829%M$15700427177BOUHn:localhost:8829%M$15700427177BOUHn:localhost:8829%M$15700427177BOUHn:localhost:8829'Q$1570042716222nflqt:localhost:8800'Q$1570042716222nflqt:localhost:8800'Q$1570042716222nflqt:localhost:8800'Q$1570042716222nflqt:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042714220vWWFN:localhost:8800'Q$1570042714220vWWFN:localhost:8800 $(N t  - S y 2Z?eDj#jQQQ$1570042665164nYKmj:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800jQQQ$1570042664163IAHXd:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042657151cITOZ:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656150UsLRz:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656150UsLRz:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656150UsLRz:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656149JNVWR:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656149JNVWR:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042656149JNVWR:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042655148eXOyA:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042655148eXOyA:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800jQQQ$1570042654147iSsjl:localhost:8800$1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800hMQQ$15700426501OLytM:localhost:8829$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800hMQQ$15700426501OLytM:localhost:8829$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800h MQQ$15700426501OLytM:localhost:8829$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800h MQQ$15700426501OLytM:localhost:8829$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j QQQ$1570042649143JxPAB:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j QQQ$1570042649143JxPAB:localhost:8800$1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j QQQ$1570042649143JxPAB:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042649143JxPAB:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042648141xSHQB:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042648141xSHQB:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042648141xSHQB:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042647140rNeEf:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042647140rNeEf:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042647140rNeEf:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042646139VXLYO:localhost:8800$1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042646139VXLYO:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800jQQQ$1570042646139VXLYO:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j~QQQ$1570042646138YEunv:localhost:8800$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j}QQQ$1570042646138YEunv:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800j|QQQ$1570042645137fBnPZ:localhost:8800$1570042644136OugnY:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800h{MQQ$15700426410cEjWu:localhost:8829$1570042637130zlkqP:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800 sJ DY* n ?  T % i : ~ O d 5 yJ_0tEZ+o@U&j; sP!.s4sI.Q$1570043583407USfCf:localhost:8800sha256 ;.Q$1570043583406mAAxW:localhost:8800sha256 :.Q$1570043582405uFoRY:localhost:8800sha256 9.Q$1570043581404AarAd:localhost:8800sha256 8.Q$1570043580403vYYeb:localhost:8800sha256 7.Q$1570043579402KDYtE:localhost:8800sha256 6.Q$1570043578401arzBQ:localhost:8800sha256 5.Q$1570043578400zncwP:localhost:8800sha256 4.Q$1570043575399SiSKs:localhost:8800sha256 3.Q$1570043572397AAGBm:localhost:8800sha256 1.Q$1570043572396lZXIU:localhost:8800sha256 0.Q$1570043571395bDLFD:localhost:8800sha256 /.Q$1570043570394QELCg:localhost:8800sha256 ..Q$1570043569393UscIm:localhost:8800sha256 -.Q$1570043568392ItLhq:localhost:8800sha256 ,.Q$1570043567391GonfI:localhost:8800sha256 +.Q$1570043566390qTwyJ:localhost:8800sha256 *.Q$1570043565389RsxAr:localhost:8800sha256 ).Q$1570043564388ZmOEV:localhost:8800sha256 (.Q$1570043559386ZLBoz:localhost:8800sha256 $.Q$1570043558385Xpkrp:localhost:8800sha256 #.Q$1570043558384QrKsp:localhost:8800sha256 ".Q$1570043557383IxQaJ:localhost:8800sha256 !.Q$1570043556382AgYyj:localhost:8800sha256 .Q$1570043550380LNzMz:localhost:8800sha256 .Q$1570043549379wtMED:localhost:8800sha256 .Q$1570043548378IxCfM:localhost:8800sha256 .Q$1570043547377kWWAW:localhost:8800sha256 .Q$1570043546376YfkfL:localhost:8800sha256 .Q$1570043545375TmtMk:localhost:8800sha256 .Q$1570043542373yGTqH:localhost:8800sha256 .Q$1570043541372ZeTYJ:localhost:8800sha256 .Q$1570043540371avDlf:localhost:8800sha256 .Q$1570043539370xCBJr:localhost:8800sha256 .Q$1570043538369ozxqx:localhost:8800sha256 .Q$1570043536368agmuM:localhost:8800sha256 .Q$1570043536367lvGLr:localhost:8800sha256 .Q$1570043535366hhblx:localhost:8800sha256 .Q$1570043534365WVAkx:localhost:8800sha256 .Q$1570043533364iwqCT:localhost:8800sha256 .Q$1570043530362jRUtV:localhost:8800sha256 .Q$1570043529361Oytod:localhost:8800sha256 .Q$1570043528360cetnZ:localhost:8800sha256 .Q$1570043527359ScxWW:localhost:8800sha256 .Q$1570043527358wChxc:localhost:8800sha256 .Q$1570043525357VEfrE:localhost:8800sha256 .Q$1570043524356NlySy:localhost:8800sha256 .Q$1570043523355SbJjm:localhost:8800sha256 .Q$1570043522354IAAap:localhost:8800sha256 .Q$1570043521353geZrN:localhost:8800sha256 .Q$1570043518351Popej:localhost:8800sha256 .Q$1570043517350ncbDd:localhost:8800sha256 .Q$1570043517349uVTMj:localhost:8800sha256 .Q$1570043516348vThZG:localhost:8800sha256 .Q$1570043515347LGRKl:localhost:8800sha256 .Q$1570043506346EEQDj:localhost:8800sha256 .Q$1570043504345DCjlJ:localhost:8800sha256 .Q$1570043503344dJwGF:localhost:8800sha256 .Q$1570043503343snlnn:localhost:8800sha256 .Q$1570043502342mVJmO:localhost:8800sha256 .Q$1570043501341JmcnI:localhost:8800sha256 .Q$1570043486339YbYQQ:localhost:8800sha256 .Q$1570043485338vbLwS:localhost:8800sha256 .Q$1570043484337ylFDA:localhost:8800sha256 .Q$1570043484336qKOPD:localhost:8800sha256 .Q$1570043483335oDIDb:localhost:8800sha256 .Q$1570043483334ejWtI:localhost:8800sha256 .Q$1570043482333DxDEq:localhost:8800sha256 .Q$1570043481332XroCo:localhost:8800sha256 .Q$1570043481331UNaWT:localhost:8800sha256 .Q$1570043480330seKnV:localhost:8800sha256 .Q$1570043479329kvsXb:localhost:8800sha256 .Q$1570043478328DMkRS:localhost:8800sha256 ^.Q$1570043584408XdGfO:localhost:8800sha256 < '`p `p 0 @ P `  p 0@P0@PPMx]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800Mw]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800Mv]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800Mu]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800Mt]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800Mr]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800Mq]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800Mp]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800PM]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800M]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800M]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800M]Q@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800M]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800M]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800M]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800M]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800M]Q@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800M]Q@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800M ]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800M ]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800M ]Q@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:8800M ]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800M ]Q@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800M]Q@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800M]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800M]Q@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800M]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800M]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800M]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800M]Q@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800M]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800M]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800M]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800M~]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800M}]Q@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800M|]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800M{]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800Mz]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800My]Q@anon-20191002_181700-451:localhost:8829!yfizglmCXdcqCgDrTr:localhost:8800 W?+Ed2j8q? wp>% w E  ~ L ]+ R }  X &  8 ^ ,}KjQ221e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 %1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw [0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRog1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk &1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA A1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg&1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uv1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A[1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAo1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEz1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U i1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk{1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgE1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQS1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U61e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 P1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwJ1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 \1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0@1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU-0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wQ1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 61e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0O0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM]j21e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 21e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo p1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 ^ Ij8WjP8p> vDp|J%>  v D   | J  Q   W % ^ ,2dj8p1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU O1e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk D1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI 1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4 1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 11e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM~1e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko 1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI 1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAew'1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mo1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUC1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UA1e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQ1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip41e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A P1e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI 1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds '1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw01e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQ~1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g41e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI 1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcb1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAc0e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8[1e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI 1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Mic1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeY1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb011e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg 0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIU1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAH1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4YY1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg\1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEs1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM+1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0\1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusY1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w81e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo-1e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiY/1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8 #1e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY W?+Ed2j8q? wp>% w E  ~ L ]+ R }  X &  8 ^ ,}KjQ221e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 %1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw [0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRog1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk &1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegoz1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA A1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zeg&1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3Uv1e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A[1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GAo1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXYY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEz1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U i1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk{1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7IgE1e$CU-CoQAsyE9RAVYy8YF-ftyOGEfwTM7fGRaHIap_6RM1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ01e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQS1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U61e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 P1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIwJ1e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 \1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn41e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS01e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0@1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU-0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wQ1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo 1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70 61e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk0O0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM]j21e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 21e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo p1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 ^ )[7\n%D c  | - L  q ( AZ6{,Ej!F- ].@anon-20191002_181700-480:localhost:8800offlinem׍3m׍3Fp ]@anon-20191002_181700-415:localhost:8800offlinemә3mӔ{Fo ]@anon-20191002_181700-418:localhost:8800offlinem̔mӿFn ]@anon-20191002_181700-408:localhost:8800offlinem<m4Fm ]@anon-20191002_181700-421:localhost:8800offlinemmFi ]@anon-20191002_181700-416:localhost:8800offlinemӒmӒFg ]@anon-20191002_181700-413:localhost:8800offlinemcmcFe ]@anon-20191002_181700-398:localhost:8800offlinemҪWmҡ`Fd ]@anon-20191002_181700-393:localhost:8800offlinemImGFc ]@anon-20191002_181700-404:localhost:8800offlinemmm Fb ]@anon-20191002_181700-395:localhost:8800offlinem{"mwF+ ],@anon-20191002_181700-468:localhost:8829offlinem֦mׇF* ]+@anon-20191002_181700-478:localhost:8800offlinemjmjF( ])@anon-20191002_181700-476:localhost:8800offlinemImIF% ]&@anon-20191002_181700-474:localhost:8829offlinemmF# ]$@anon-20191002_181700-466:localhost:8829offlinemւmL" ] #@anon-20191002_181700-464:localhost:8800offlinemd mmdfL! ] #@anon-20191002_181700-458:localhost:8800offlinem mm L ]  @anon-20191002_181700-462:localhost:8800offlinemCmÌmCF ]@anon-20191002_181700-467:localhost:8800offlinem֨m֨L ] @anon-20191002_181700-460:localhost:8800offlinem Am֜|mbF ]@anon-20191002_181700-465:localhost:8800offlinemֆ1mֆ1F ]@anon-20191002_181700-463:localhost:8800offlineme$me$F ]@anon-20191002_181700-451:localhost:8829offlinem1mN-F ]@anon-20191002_181700-461:localhost:8800offlinemDpmDpF ]@anon-20191002_181700-453:localhost:8829offlinemա7m&L ] @anon-20191002_181700-449:localhost:8800offlinemZmUmZF ]@anon-20191002_181700-459:localhost:8829offlinemm oL ]  @anon-20191002_181700-447:localhost:8800offlinem9 m<m9F ] @anon-20191002_181700-454:localhost:8800offlinemmL ]  @anon-20191002_181700-445:localhost:8800offlinemmŤm L ] @anon-20191002_181700-442:localhost:8800offlinemmղmF ]@anon-20191002_181700-452:localhost:8800offlinemդ3mդ3L ] @anon-20191002_181700-433:localhost:8800offlinemԠmՋ mԣF ]@anon-20191002_181700-450:localhost:8800offlinemՃmՃF ]@anon-20191002_181700-448:localhost:8800offlinem[m[F~ ]@anon-20191002_181700-446:localhost:8800offlinem:%m:%L{ ] @anon-20191002_181700-430:localhost:8800offlinemxmTm|Fy ]@anon-20191002_181700-425:localhost:8800offlinem*m#Fw ]@anon-20191002_181700-428:localhost:8800offlinemW~mOFq ]@anon-20191002_181700-412:localhost:8800offlinemmmf <]! ^ ,e3k9& v D  ]   | J S   Q X M q  W %  j !+r8@yG d21e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUU1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMF1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaakC1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE21e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydE1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk B0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo\1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4o1e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA y 1e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 &1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObwe1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y>1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho31e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s0#1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs_0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgd1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3Ew1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv01e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3Ei1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB080e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAZ1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4<1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0`1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8j1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvM1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe0x0e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AYo1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY 1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4a1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk11e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9w1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig >21e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU 8d1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 k21e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI 21e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ ZI YH XG WF VE UD TC QB PA O@ N? M> J= H< G; F: E9 D8 C7 B6 @5 ?4 >3 =2 <1 ;0 ./ -. ,- +, *+ )* ') &( $' #& "% !$ # " !                                                                                                                     ~ } | z x w v u t s r p o m l k j i h f d c b a ` _ ^ [ Z Y X W V U T S Q P O N M L K J I H F E D C B A @~ | { z y x w v u t s r q p o n m l k j i h g f ~e }d |c zb ya w` v_ u^ t] s\ r[ pZ nY mX lW kV jU iT hS fR eQ cP bO aN `M _L ^K \J ?} =| <{ ;z :y 9x 8w 7v 5u 4t 3s 2r 1q ,p +o *n (m 'l &k %j $i h g f e d c b a ` _ ^ ] \ [ Z Y X W VUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  _ _gtQQaq $1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2431}{"auth_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}], ["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}]], "prev_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}]], "type": "m.room.join_rules", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042646139VXLYO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042646806, "hashes": {"sha256": "GCJUGA8+4IjdnTKfsC1k0Ab6F8zhdJRPrlXqostfY/Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/loBuO87A6/UGLJVPKJd5U6YaorIKGfnV4H31L7iNvidNymkyl4uZq/GnWTYmc0ZNInFYd0ndghC5LRGWeKxAw"}}, "unsigned": {"age_ts": 1570042646806}}+sQQay $1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2430}{"auth_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "type": "m.room.power_levels", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"users": {"@anon-20191002_181700-452:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042646138YEunv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042646130, "hashes": {"sha256": "PnOON2nX8fdv44Jmt26j9buIgDGFg0FUcZoz4YZ1eXk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X9dZBaglER9mgTl+RyUFe+m66NppiMmdPRRzOUO7+YC2ml+7/FkXAjPtOZRuezsC7NIioLJSWLifgf8iPdopDg"}}, "unsigned": {"age_ts": 1570042646130}}rQQa) $1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2429}{"auth_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}]], "prev_events": [["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}]], "type": "m.room.member", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-452", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-452:localhost:8800", "event_id": "$1570042645137fBnPZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042645334, "hashes": {"sha256": "+V3sVEhs2skZpCM0/0TFTmvgNfqJ+ZKyat6DDDI7ED4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pap2djLt5yD7vUurmpYDFBSmdxLWbwRkGjvAL4TIEO79/846wdicLLddewCJFaZiHgh1gATzrghzX2aK/6gbAQ"}}, "unsigned": {"age_ts": 1570042645334}} f( J  } K g5d.]Q)Q ]$1570042662161lGrSW:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mRm\@anon-20191002_181700-454:localhost:8800Q)Q ]$1570042662160SrmtM:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mhmq@anon-20191002_181700-454:localhost:8800Q)Q ]$1570042661159xQwJK:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mrm}@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042661158igwHF:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mɪmɶ@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042660157svDcU:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mm@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042660156wxhvl:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 m<mC@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042659155mEUeP:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mm@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042659154Fztdf:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800 mm @anon-20191002_181700-454:localhost:8800 Q)Q ]$1570042658153tmCYJ:localhost:8800m.room.message!bQDOrbAknnQZfUbhgS:localhost:8800mտmտ@anon-20191002_181700-454:localhost:8800 Q#Q ]$1570042658152btGpA:localhost:8800m.room.test!bQDOrbAknnQZfUbhgS:localhost:8800mվmվ@anon-20191002_181700-454:localhost:8800 Q'Q ]$1570042657151cITOZ:localhost:8800m.room.member!bQDOrbAknnQZfUbhgS:localhost:8800mջHmջ@anon-20191002_181700-454:localhost:8800" Q?Q ]$1570042656150UsLRz:localhost:8800m.room.history_visibility!bQDOrbAknnQZfUbhgS:localhost:8800mշmո@anon-20191002_181700-454:localhost:8800 Q/Q ]$1570042656149JNVWR:localhost:8800m.room.join_rules!bQDOrbAknnQZfUbhgS:localhost:8800mյmյz@anon-20191002_181700-454:localhost:8800Q3Q ]$1570042655148eXOyA:localhost:8800m.room.power_levels!bQDOrbAknnQZfUbhgS:localhost:8800mձimձ@anon-20191002_181700-454:localhost:8800Q'Q ]$1570042654147iSsjl:localhost:8800m.room.member!bQDOrbAknnQZfUbhgS:localhost:8800mխmծ_@anon-20191002_181700-454:localhost:8800 Q'Q  ]$1570042653146dGCce:localhost:8800m.room.create!bQDOrbAknnQZfUbhgS:localhost:8800mժmժ^@anon-20191002_181700-454:localhost:8800Q)Q ] $1570042651145wBynt:localhost:8800m.room.message!GSxvxNevpCiwmFCHys:localhost:8800 mգ,mգ@anon-20191002_181700-452:localhost:8800M'Q ] $15700426501OLytM:localhost:8829m.room.member!GSxvxNevpCiwmFCHys:localhost:8800 m՞Am՟K@anon-20191002_181700-453:localhost:8829Q'Q ]$1570042649143JxPAB:localhost:8800m.room.member!GSxvxNevpCiwmFCHys:localhost:8800m՛Om՛@anon-20191002_181700-452:localhost:8800Q#Q ]$1570042648142spuws:localhost:8800m.room.test!GSxvxNevpCiwmFCHys:localhost:8800mՙmՙ@anon-20191002_181700-452:localhost:8800Q3Q ]$1570042648141xSHQB:localhost:8800m.room.guest_access!GSxvxNevpCiwmFCHys:localhost:8800mՖRmՖ@anon-20191002_181700-452:localhost:8800"Q?Q ]$1570042647140rNeEf:localhost:8800m.room.history_visibility!GSxvxNevpCiwmFCHys:localhost:8800mՓ~mՓ@anon-20191002_181700-452:localhost:8800Q/Q ]$1570042646139VXLYO:localhost:8800m.room.join_rules!GSxvxNevpCiwmFCHys:localhost:8800mՑmՑ@anon-20191002_181700-452:localhost:8800~Q3Q ]$1570042646138YEunv:localhost:8800m.room.power_levels!GSxvxNevpCiwmFCHys:localhost:8800mՎrmՎ@anon-20191002_181700-452:localhost:8800}Q'Q ]$1570042645137fBnPZ:localhost:8800m.room.member!GSxvxNevpCiwmFCHys:localhost:8800mՋVmՌ.@anon-20191002_181700-452:localhost:8800 %u~Z x  ^ v  :vt8tr6r6u[YQQ/ $1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules`XQQ9 $1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias]WQQ3 $1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levelsVQQ']$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800WUQQ' $1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.createcTQQ? $1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility[SQQ/ $1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules]RQQ3 $1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levelsQQQ']$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800WPQQ' $1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.create}OMQ']$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829NQQ']$1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829cMQQ? $1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility[LQQ/ $1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules]KQQ3 $1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levelsJQQ']$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800WIQQ' $1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800m.room.create}HMQ']$15700426692GLpqH:localhost:8829!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829GQQ']$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829cFQQ? $1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility[EQQ/ $1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules]DQQ3 $1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levelsCQQ']$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800WBQQ' $1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800m.room.createAQQ']$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829c@QQ? $1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility[?QQ/ $1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules]>QQ3 $1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels=QQ']$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800W<QQ' $1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800m.room.create};MQ']$15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829:QQ']$1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829]9QQ3 $1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_accessc8QQ? $1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility[7QQ/ $1570042646139VXLYO:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules]6QQ3 $1570042646138YEunv:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levels5QQ']$1570042645137fBnPZ:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-452:localhost:8800 #>t j  E X w MCe~1*IYQ' Q!JPTwFTSDaBXwUTgitj:localhost:8800m.room.create$1570042685185RhcXe:localhost:8800eQ? Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility$1570042681182ZiRRU:localhost:8800]Q/ Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules$1570042680181TFyrx:localhost:8800_Q3 Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levels$1570042680180uuIxG:localhost:8800Q']Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800$1570042679179ZJCqE:localhost:8800YQ' Q!RYNJAGdRhIlwRZFbrO:localhost:8800m.room.create$1570042678178HSUoI:localhost:8800Q']M!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$15700426753WBESe:localhost:8829Q']Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$1570042675177dzCbt:localhost:8800Q']Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$1570042674175gurnU:localhost:8800e Q? Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility$1570042673174OxGuP:localhost:8800] Q/ Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules$1570042672173XsxsH:localhost:8800_ Q3 Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levels$1570042672172vPvbe:localhost:8800 Q']Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800$1570042671171AQZaz:localhost:8800Y Q' Q!MqstbCLZIQFiYNHrqR:localhost:8800m.room.create$1570042670170TtDpX:localhost:8800Q']M!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$15700426692GLpqH:localhost:8829Q']Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$1570042669169ZEFsJ:localhost:8800Q']Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829$1570042667167mhSmJ:localhost:8800eQ? Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibility$1570042666166IBpPy:localhost:8800]Q/ Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rules$1570042666165HDkhp:localhost:8800_Q3 Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levels$1570042665164nYKmj:localhost:8800Q']Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800$1570042664163IAHXd:localhost:8800YQ' Q!WuiaqqIOvBjgETqdus:localhost:8800m.room.create$1570042663162sQrEh:localhost:8800Q']Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-455:localhost:8829$1570042657151cITOZ:localhost:8800eQ? Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.history_visibility$1570042656150UsLRz:localhost:8800]~Q/ Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.join_rules$1570042656149JNVWR:localhost:8800_}Q3 Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.power_levels$1570042655148eXOyA:localhost:8800|Q']Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.member@anon-20191002_181700-454:localhost:8800$1570042654147iSsjl:localhost:8800Y{Q' Q!bQDOrbAknnQZfUbhgS:localhost:8800m.room.create$1570042653146dGCce:localhost:8800zQ']M!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$15700426501OLytM:localhost:8829yQ']Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$1570042650144fzLvy:localhost:8800xQ']Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829$1570042649143JxPAB:localhost:8800_wQ3 Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.guest_access$1570042648141xSHQB:localhost:8800evQ? Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.history_visibility$1570042647140rNeEf:localhost:8800]uQ/ Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.join_rules$1570042646139VXLYO:localhost:8800_tQ3 Q!GSxvxNevpCiwmFCHys:localhost:8800m.room.power_levels$1570042646138YEunv:localhost:8800  ;wQQa $1570042648142spuws:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2434}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042648141xSHQB:localhost:8800", {"sha256": "O+JQsNFaKzpRhDCXQy1CIw5VrGZ8P1+Vtd1LMKJKUUw"}]], "type": "m.room.test", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042648142spuws:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042648988, "hashes": {"sha256": "/nd7n4lkSHD6giwIagnwCu8c6750SjGMdAtHGaN1N7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g81K6HvMwT+sbqtc5/q9ylLI8OYGAVnpGaN9ZBs/upkheCyfD2xnELH2YczJjjKzwFOHEtE3Sy0bxZc8i7AwCQ"}}, "unsigned": {"age_ts": 1570042648988}}nvQQa $1570042648141xSHQB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2433}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042647140rNeEf:localhost:8800", {"sha256": "Vssrww3bZ8eLms+X1TY2hGhdNtNQiAUHwyNYt4FoVjA"}]], "type": "m.room.guest_access", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042648141xSHQB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042648146, "hashes": {"sha256": "sQmHQD0Z51xltRS8c6Y4VGUl1BdckkW9mEFaaCZhKgs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r2rxQgx0xcGqFXc5wRMC15D4S0Nz9b7hNOMSydm1r4i3rl/LqiIpalLxyhAqrabf7/ISYqoe1H5g5ZzQtqMQCA"}}, "unsigned": {"age_ts": 1570042648146}}xuQQa $1570042647140rNeEf:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2432}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042646139VXLYO:localhost:8800", {"sha256": "o+Uof60IeIHr/xWaARgkktRPvtN5otq0q3WvagdhPjo"}]], "type": "m.room.history_visibility", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042647140rNeEf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042647422, "hashes": {"sha256": "hkp1XPmlCrGP0HCwJ6txwbt7mZIjaxyaJzvsPQ5o2yY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jYjp19VN6SNz0D7j87l3osTtrZVDMaKVm4iyhHWjQ5bchVI/L+UJzRqIEXP8pYBtor7wb9Ko8b7aKzUZU3NDBw"}}, "unsigned": {"age_ts": 1570042647422}} |yMQ1M $15700426501OLytM:localhost:8829!GSxvxNevpCiwmFCHys:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2436}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042646139VXLYO:localhost:8800", {"sha256": "o+Uof60IeIHr/xWaARgkktRPvtN5otq0q3WvagdhPjo"}], ["$1570042649143JxPAB:localhost:8800", {"sha256": "HJWx35caW1RHi+GfqOYPc+Hkn15wICJ8sbQhNMwPlyk"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-453", "membership": "join"}, "depth": 9, "event_id": "$15700426501OLytM:localhost:8829", "hashes": {"sha256": "UIgWkwutyS/O46WWrIU3u054oSrBT+918XOhogivsdc"}, "origin": "localhost:8829", "origin_server_ts": 1570042650177, "prev_events": [["$1570042649143JxPAB:localhost:8800", {"sha256": "HJWx35caW1RHi+GfqOYPc+Hkn15wICJ8sbQhNMwPlyk"}]], "prev_state": [], "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-453:localhost:8829", "state_key": "@anon-20191002_181700-453:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cEaFDld4dd2BuuIFokEmdZgKrsgk08FZkk0o1kAUfydluy62jjYz1QAYKt9wmlkvoaAYhMkaURT7aauTlOfFBQ"}, "localhost:8829": {"ed25519:a_UxIG": "uVZbwI8DrGZoTKoylTvB6IcOgL0Nf2e5Bi4GSO/zAO5UQo2POspoLsJt/aECmLoTtYdu/xXD310HpRyUSgz2DA"}}, "unsigned": {"age": 161, "replaces_state": "$1570042649143JxPAB:localhost:8800"}};xQQa $1570042649143JxPAB:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "stream_ordering": 2435}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042646139VXLYO:localhost:8800", {"sha256": "o+Uof60IeIHr/xWaARgkktRPvtN5otq0q3WvagdhPjo"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$1570042648142spuws:localhost:8800", {"sha256": "xKYI1rhWlfL1w4AXDKtoEjmqFyWFz6voD1XvXp8GyX4"}]], "type": "m.room.member", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-453", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-453:localhost:8829", "event_id": "$1570042649143JxPAB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042649423, "hashes": {"sha256": "Pqu+8QU3iPxgNOniY+en2shjzfMdwK6LPT2ny2ieVwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YyFr7AeUsAL+4qIvdVh2bg4QWKBWbxaMm6WnvdFb/8KvKX2KcOmcCms/+VRtDAIO3Az+zk65L5VJt+tphpUSAg"}, "localhost:8829": {"ed25519:a_UxIG": "yr2qcneJXqJE3NY6nhp2j9DxFxoOqZEni1EBF6nebA3ns4q7fFKkrdaq3xo7iBO+F5day5HcC+8EqDXhiQ/6CQ"}}, "unsigned": {"age_ts": 1570042649423, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-452:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-452:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-452", "avatar_url": null}, "sender": "@anon-20191002_181700-452:localhost:8800"}]}} n un|QQa) $1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2439}{"auth_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}]], "prev_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}]], "type": "m.room.member", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-454", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-454:localhost:8800", "event_id": "$1570042654147iSsjl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042654194, "hashes": {"sha256": "D19T1Cc+o6ydN5v06n4bjs0lZj3iFdDsvm8sEnb4GWY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y1luRNbcKsCB/65smCDk3VVdCO4hAWoqEi9O6eb0ao+aFAi8KHLqNS7Os0Sbk43dUD9ejbtd5kElKEOgOqUkBg"}}, "unsigned": {"age_ts": 1570042654194}}{QQaC $1570042653146dGCce:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2438}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-454:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042653146dGCce:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042653200, "hashes": {"sha256": "SYITibJ6qDJcr4IDqOErJynQhkGmySegFXGv+StHItE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w38ZwL1JVjPaLecVfPKrOPHJyIqSdJL2XJ0LSe3plnjHm1Ro3iYG45onuZrWwcOdsbfL0FLvmfDV2/ob/ZDbDg"}}, "unsigned": {"age_ts": 1570042653200}}szQQe $1570042651145wBynt:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800{"token_id": 468, "txn_id": "457", "stream_ordering": 2437}{"auth_events": [["$1570042646138YEunv:localhost:8800", {"sha256": "Y7fTIfOnuR+SiOqRSt4joYh7MRWJ+IBjFWERkku2n4Y"}], ["$1570042644136OugnY:localhost:8800", {"sha256": "jxvpqAF0j6QYd3kn1M+5yWMIXjTG8mPKkLSzYl2s9+A"}], ["$1570042645137fBnPZ:localhost:8800", {"sha256": "woZvflCMoBnc+Mi5XLekPQUQXYY6C9lc6p+JI5PYDQU"}]], "prev_events": [["$15700426501OLytM:localhost:8829", {"sha256": "1PPMpKEXA8Fip7qAlEMIQPsSJMWubal4APmY6G0BPmw"}]], "type": "m.room.message", "room_id": "!GSxvxNevpCiwmFCHys:localhost:8800", "sender": "@anon-20191002_181700-452:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042651145wBynt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042651436, "hashes": {"sha256": "/uKggIUFXUteRKIbQa3NQaVGFp6yUfv7y1NSx8n58lE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N1hqE7kto5nCpLqUkxWvS4rLhEUJb/Zeqhpl5qh6XaYgfFULXMMdaXPxWeo9rVVTQwT9/D7cewag3Dg6kDvKDw"}}, "unsigned": {"age_ts": 1570042651436}} PH+h7 v |o=+  JuV  $Cj8  \ *p>  J]P |b0 V $ Vd1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwke1e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVScp1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks61e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac|1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o t1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4,1e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicF1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0s1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGER1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok'1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU/1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0"1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to0e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE{1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0 1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 91e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM "1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38*1e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g ?1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0%1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 e1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM T1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk91e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 +1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888  D1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w }1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 a1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns >1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c 1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQG1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE=1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m m m$ m־ mֺM mַ_ mִI mְ m֭* m֧ m֢ m֟ m֝ m֙~ m֖~ m֓ m֑ m֍ m֊ mք mր8 m} m{r mw% ms mp mnJ mkv mh mdp m_ m\ mZ mX8 mU{ mR mN mL mI; mC m? m= m; m6 m3 m1Q m.J m+ m&[ m mr m m m mR m m m m m m> m| m mX m m m m) m m߾ m m mX m mR mh mr mɪ m m< m m mտ mվ mջH mշ mյ mձi mխ mժ mգ, m՞A m՛O mՙ mՖR mՓ~ mՑ  mՎr ~ ~mՋV } }mՇ | |mՁ { {m{ z zmx y ymv x xmp w wmk v vmh u ume t tma s sm_/ r rm[ q qmWb p pmT o omR2 n nmN m mmK l lmH k kmF j jmC i im? h hm: m mm m m m m 5 mD m m$ mM m m m m_ mm m mn m mi mC mز m@ mҖ m m$ m< m[ mɂ mǿ m9 g gm4 f fm29 e em.G d dm*O c cm' b bm$ a am! ` `m _ _m ^ ^m) ] ]m \ \m [ [m Z Zm  Y Ym X Xm W Wm. V Vmw U Um< T Tm& S Sm; R Rm Q Qm# P Pm O Om, N Nm۬ M Mm L Lm K KmR J JmL I Im H Hm5 G GmԻ F FmԹG E EmԴ D DmԱ C CmԮ B BmԞ A Amԛ$ @ @mԘ ? ?mԖY > >mԑ = =mԎd < <mԋj ; ;mԈ : :mԅ+ 9 9mv\ 8 8mr< 7 7mpR 6 6mi 5 5mf 4 4mc 3 3ma 2 2m^ 1 1mV 0 0mT / /mQ . .mM - -mJ , , 3f2 K d  } 0 I b }0If4Mf2KJuQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042693195hNKnU:localhost:8800JtQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042692194rxboZ:localhost:8800JsQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042691193uVdPZ:localhost:8800JrQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042691192yNWVM:localhost:8800JqQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042690191yQfnl:localhost:8800JpQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042689190UkvMv:localhost:8800JoQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042688189axPjv:localhost:8800JnQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687188ddQmS:localhost:8800JmQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687187gbArC:localhost:8800JlQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042686186Qxqmn:localhost:8800JkQQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042685185RhcXe:localhost:8800JjQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042683184TpChh:localhost:8800JiQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042682183iUUXF:localhost:8800JhQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042681182ZiRRU:localhost:8800JgQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680181TFyrx:localhost:8800JfQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680180uuIxG:localhost:8800JeQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042679179ZJCqE:localhost:8800JdQQ !RYNJAGdRhIlwRZFbrO:localhost:8800$1570042678178HSUoI:localhost:8800HcQM !MqstbCLZIQFiYNHrqR:localhost:8800$15700426765pydev:localhost:8829HbQM !MqstbCLZIQFiYNHrqR:localhost:8800$15700426764DoRhm:localhost:8829HaQM !MqstbCLZIQFiYNHrqR:localhost:8800$15700426753WBESe:localhost:8829J`QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042675176WKRiz:localhost:8800J_QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042674175gurnU:localhost:8800J^QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042673174OxGuP:localhost:8800J]QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042672173XsxsH:localhost:8800J\QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042672172vPvbe:localhost:8800J[QQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042671171AQZaz:localhost:8800JZQQ !MqstbCLZIQFiYNHrqR:localhost:8800$1570042670170TtDpX:localhost:8800HYQM !WuiaqqIOvBjgETqdus:localhost:8800$15700426692GLpqH:localhost:8829JXQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042668168uCbYK:localhost:8800JWQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042667167mhSmJ:localhost:8800JVQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042666166IBpPy:localhost:8800JUQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042666165HDkhp:localhost:8800JTQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042665164nYKmj:localhost:8800JSQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042664163IAHXd:localhost:8800JRQQ !WuiaqqIOvBjgETqdus:localhost:8800$1570042663162sQrEh:localhost:8800JQQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042662161lGrSW:localhost:8800JPQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042662160SrmtM:localhost:8800JOQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042661159xQwJK:localhost:8800JNQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042661158igwHF:localhost:8800JMQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042660157svDcU:localhost:8800JLQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042660156wxhvl:localhost:8800JKQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042659155mEUeP:localhost:8800JJQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042659154Fztdf:localhost:8800JIQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042658153tmCYJ:localhost:8800JHQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042658152btGpA:localhost:8800JGQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042657151cITOZ:localhost:8800JFQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042656150UsLRz:localhost:8800JEQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042656149JNVWR:localhost:8800JDQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042655148eXOyA:localhost:8800JCQQ !bQDOrbAknnQZfUbhgS:localhost:8800$1570042654147iSsjl:localhost:8800 , k x ' K 4 A N [ u$1Xhe>^r!P]Q@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800]P]Q@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800ZP]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800YP]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800TP]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800SP]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800KP]Q@anon-20191002_181700-487:localhost:8829!WYyiQAVvitxsLZKVCG:localhost:8800P]Q@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:88002P]Q@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800[P]Q@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800VP]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800UP]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800RP]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800QP]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800PP]Q@anon-20191002_181700-502:localhost:8829!coGyOAgYnlBZAqznax:localhost:8800OP]Q@anon-20191002_181700-502:localhost:8829!coGyOAgYnlBZAqznax:localhost:8800NP]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800MP]Q@anon-20191002_181700-500:localhost:8829!ubmTdQFAhrhZkGULDx:localhost:8800LP]Q@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800WP]Q@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800JP]Q@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800IP]Q@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800HP]Q@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800GP]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800FP]Q@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800EP]Q@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800DP]Q@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800CP]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800BP]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800AP]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800@P]Q@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800?P]Q@anon-20191002_181700-487:localhost:8829!WYyiQAVvitxsLZKVCG:localhost:8800;P]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800:P]Q@anon-20191002_181700-485:localhost:8829!KIHYKMzkRDrJwiywwz:localhost:88009P]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:88008P]Q@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:88007P]Q@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:88006P]Q@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:88005P]Q@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:88004P]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:88003P]Q@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800\P]Q@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800X ;QQa $1570042658152btGpA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2444}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042657151cITOZ:localhost:8800", {"sha256": "HgvHQCa3QCacXSu9LrG34BxC82p/SH2K/L+nPgAJ4W0"}]], "type": "m.room.test", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042658152btGpA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042658322, "hashes": {"sha256": "wF74+vg8sguwCPlBHWqXctn9Je0ht8OPFb2FqYEYe88"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "shCRfLLfXx4SbPxC+rXQLdZOWy1zVww8KM5CqpsMrJ5RD1CuQwrkcbfLaN4zVnCuiF79QxWi+KrZuAWdAL2tDA"}}, "unsigned": {"age_ts": 1570042658322}};QQa $1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2443}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042656149JNVWR:localhost:8800", {"sha256": "FDe9nODAgrwdY487KMJqBFchOul7dTOoBiJGXRgENaI"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042656150UsLRz:localhost:8800", {"sha256": "Q/SceEYznQzS8WZZz1txVnsqDhNSHXVYTXTPhq+i0+M"}]], "type": "m.room.member", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-455", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-455:localhost:8829", "event_id": "$1570042657151cITOZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042657608, "hashes": {"sha256": "ikuP6xgiAuO60FVlp8AoD1+QxjIel8hLSGWP8izfnbw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4D9e4Ee0dn4M7faOzcu9tYI2Q5Oh7sNrM+95VQA90IolzSaJm5LGQgjix8r41Eye28Q/l69FsZhRnZnrtKDQAA"}, "localhost:8829": {"ed25519:a_UxIG": "ps+TnKu0K/6x7viGjeKn7CeJVVcKViD6L2OojlIQT6ArF732/oHt//+h66t1TxgJJjHvmb2bJYKwa+ns8aWYAw"}}, "unsigned": {"age_ts": 1570042657608, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-454:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-454:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-454", "avatar_url": null}, "sender": "@anon-20191002_181700-454:localhost:8800"}]}}  fxQQa $1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2442}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042656149JNVWR:localhost:8800", {"sha256": "FDe9nODAgrwdY487KMJqBFchOul7dTOoBiJGXRgENaI"}]], "type": "m.room.history_visibility", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042656150UsLRz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042656681, "hashes": {"sha256": "o54hPqMo/Wh3aWHSoyXL2dGkaBuvPbeVpw0HVgQoM5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aiWEGPIEsTi6nh89dYMVOZHnXD5L0ceKbZDsM1uSYjVRSIdjEyJs+wyKXiP95d4eZ+0Tr3ZExKRpflkUb1wvDg"}}, "unsigned": {"age_ts": 1570042656681}}g~QQaq $1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2441}{"auth_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}], ["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}]], "prev_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}]], "type": "m.room.join_rules", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042656149JNVWR:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042656031, "hashes": {"sha256": "62oT2K40ztcHAxsv3UxlWE7ymljiRHM9VpT4Bwj4UzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R8CIzdgd5nisgCPcH17RJiUE+gW3Gh3P/XY6/Gd8G03RLYGROK2kbvqDLiSOcWg7zLvV1AXfHtdnc2CA0k8vCQ"}}, "unsigned": {"age_ts": 1570042656031}}+}QQay $1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "stream_ordering": 2440}{"auth_events": [["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "type": "m.room.power_levels", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"users": {"@anon-20191002_181700-454:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042655148eXOyA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042655081, "hashes": {"sha256": "EqsJ9bT5zUOxhK9TvZTRcNBvLS0ac9glPETD7tYjoXc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "167ytVPvoSgIbcHx/fcSce709RJd0qm+MgDrSQAOrQxm3GM+jXdy20ZUOsuf5lAgEFLW6HzsfUjbBwS0Fl67BA"}}, "unsigned": {"age_ts": 1570042655081}} $$H l " F j Dh Dh(LpkMQQQ$1570042683184TpChh:localhost:8800$1570042682183iUUXF:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kLQQQ$1570042682183iUUXF:localhost:8800$1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kKQQQ$1570042681182ZiRRU:localhost:8800$1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kJQQQ$1570042680181TFyrx:localhost:8800$1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kIQQQ$1570042680180uuIxG:localhost:8800$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800kHQQQ$1570042679179ZJCqE:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800gGMMQ$15700426765pydev:localhost:8829$15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800gFMMQ$15700426764DoRhm:localhost:8829$15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800iEMQQ$15700426753WBESe:localhost:8829$1570042675176WKRiz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kDQQQ$1570042675176WKRiz:localhost:8800$1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kCQQQ$1570042674175gurnU:localhost:8800$1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kBQQQ$1570042673174OxGuP:localhost:8800$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800kAQQQ$1570042672173XsxsH:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800k@QQQ$1570042672172vPvbe:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800k?QQQ$1570042671171AQZaz:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800i>MQQ$15700426692GLpqH:localhost:8829$1570042668168uCbYK:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k=QQQ$1570042668168uCbYK:localhost:8800$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k<QQQ$1570042667167mhSmJ:localhost:8800$1570042666166IBpPy:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k;QQQ$1570042666166IBpPy:localhost:8800$1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k:QQQ$1570042666165HDkhp:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k9QQQ$1570042665164nYKmj:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k8QQQ$1570042664163IAHXd:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800k7QQQ$1570042662161lGrSW:localhost:8800$1570042662160SrmtM:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k6QQQ$1570042662160SrmtM:localhost:8800$1570042661159xQwJK:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k5QQQ$1570042661159xQwJK:localhost:8800$1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k4QQQ$1570042661158igwHF:localhost:8800$1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k3QQQ$1570042660157svDcU:localhost:8800$1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k2QQQ$1570042660156wxhvl:localhost:8800$1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k1QQQ$1570042659155mEUeP:localhost:8800$1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k0QQQ$1570042659154Fztdf:localhost:8800$1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k/QQQ$1570042658153tmCYJ:localhost:8800$1570042658152btGpA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k.QQQ$1570042658152btGpA:localhost:8800$1570042657151cITOZ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k-QQQ$1570042657151cITOZ:localhost:8800$1570042656150UsLRz:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k,QQQ$1570042656150UsLRz:localhost:8800$1570042656149JNVWR:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k+QQQ$1570042656149JNVWR:localhost:8800$1570042655148eXOyA:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800k*QQQ$1570042655148eXOyA:localhost:8800$1570042654147iSsjl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800 R@,pX &9q? 3j8xF^ ~ R >e X & ^k -L  3,9r@1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_oy1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPMq1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4!1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y821e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNwT1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w51e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA31e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U~1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_DvwkwJ1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o11e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw61e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8S1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUg11e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMu1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs,1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg>1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H4w1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo h1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwP1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx81e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU 21e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcg0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAj1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw[1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYn1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg71e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM#$1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY 1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA 1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg 1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c 1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI 1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwY1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE 1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4Ey v }vQQ $1570042659155mEUeP:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "460", "stream_ordering": 2447}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042659154Fztdf:localhost:8800", {"sha256": "mRYkhlT8U8WC/DdAoCHTYpvIfpOn59jD5LSmfSeF4IY"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042659155mEUeP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042659780, "hashes": {"sha256": "kg2LxWs/qQvAJwuTsxxtrCA1Z0cGUr6okKaRfFGCQtY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WKwj+vq0gDuTBYg/W5FlyztKFtgW2whBj6JGH5aDK7Tj3skO48xM1tNpxpYy14sNRkcVTqgNAVGPRtBy4tISDw"}}, "unsigned": {"age_ts": 1570042659780}}QQ} $1570042659154Fztdf:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "459", "stream_ordering": 2446}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042658153tmCYJ:localhost:8800", {"sha256": "04xTCBgunykZAEXKKZnv6p5+C9dDL+2VxmIkA/cBf+c"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "event_id": "$1570042659154Fztdf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042659331, "hashes": {"sha256": "i5c51KUld6GDSXWBc6qh/nlMJJk5ja0DbpxYVlZvHw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nb8hKslg4Me4bW8NvyKZn7y6Ap0I8tALekT7EDXKEt04plQbuBS7DDQbLwoMzcXIG9u8BBaztAeyuK4ScpStCg"}}, "unsigned": {"age_ts": 1570042659331}}QQ} $1570042658153tmCYJ:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "458", "stream_ordering": 2445}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042658152btGpA:localhost:8800", {"sha256": "Lzzp/IoEldr5ArjZa4MnO/jRHmSinQuX9BByPepid18"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 8, "prev_state": [], "event_id": "$1570042658153tmCYJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042658769, "hashes": {"sha256": "QJqjyCmTp5rkp2ERl/AlS5CPlX082YdFFP2q9a4mdeI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yjlkQdOqHkDZPXj7D8u9VfF8SLwQC7JV5Huh/M1oaWh5poadTGJJcCsAaHm/VrK95SsObirHth1ZfBtHN5xvDw"}}, "unsigned": {"age_ts": 1570042658769}} t |tQQ $1570042661158igwHF:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "463", "stream_ordering": 2450}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042660157svDcU:localhost:8800", {"sha256": "GBKjJ2vjTeDo02VpEIrd/657Sg/+OA/WItiH5FFrjOI"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "event_id": "$1570042661158igwHF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042661290, "hashes": {"sha256": "W/2eat8PhOEz5l21lAY9lLvd7AmbzY9pFQRSAS20+W0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T+rNaEfNQQmBCjwUvZPKzipQ315MXDvCOu3Cn/GaAPzq/ghQid8S1B1N1vm3gnCyNTa95ps6E3Jff6u9iyy3Dw"}}, "unsigned": {"age_ts": 1570042661290}}QQ $1570042660157svDcU:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "462", "stream_ordering": 2449}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042660156wxhvl:localhost:8800", {"sha256": "hYMUEXSnmwC+0AqP1Q5UD7diuuurzr1K/UUBa5ziz6g"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "event_id": "$1570042660157svDcU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042660882, "hashes": {"sha256": "dH0PnrDnJ5gbs13G98ApEvl2BUrzooDO2lJmU4Fb7OQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F5AsTJGt9YUX9QYOTFv+YMLTxuLFXtOdePed+/Lxpl2Mr9RrSKNZeXAYp2Itc3AOuPijON7LtKFpUU98rY69Bg"}}, "unsigned": {"age_ts": 1570042660882}}QQ $1570042660156wxhvl:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800{"token_id": 469, "txn_id": "461", "stream_ordering": 2448}{"auth_events": [["$1570042655148eXOyA:localhost:8800", {"sha256": "stTuKFpJAYSDtcNiuu73NKCcRqiWltSlJJWL0bbecAc"}], ["$1570042653146dGCce:localhost:8800", {"sha256": "Tx+VnqU+08lruOE91qxW+6+7kJFWZ1FsF1lHVv7y7gY"}], ["$1570042654147iSsjl:localhost:8800", {"sha256": "awcBmJys64WcEkEgfz14l1rkQG9JDSAmWGOv5Z2i3KA"}]], "prev_events": [["$1570042659155mEUeP:localhost:8800", {"sha256": "S+IaK1hqujAl64Hkn02vBERMcw1qjmm1Ipb1iMbvXGs"}]], "type": "m.room.message", "room_id": "!bQDOrbAknnQZfUbhgS:localhost:8800", "sender": "@anon-20191002_181700-454:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "event_id": "$1570042660156wxhvl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042660412, "hashes": {"sha256": "F3h8I6p9fv3hB31uV/TZhUKuo4zvXETBmYSC5FWzuRI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ImxRt/7CjByLRJFz1EUlcKc1+5PRnn/KkOBSvPKCkbpXNm4u+uwArJ6QSvxfPQa7oQIK4C6J29GQyB9E9SKUBA"}}, "unsigned": {"age_ts": 1570042660412}}  [d  9 [ }  0Rt'Ik8[_2mOQQ$157004338812XhwjX:localhost:8829$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 NnQQQ$1570043385309imdbl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 JnQQQ$1570043387311DGzYi:localhost:8800$1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 LnQQQ$1570043386310bGMNl:localhost:8800$1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 K"nQQQ$1570043384308gPogh:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 InQQQ$1570043383307bhuDV:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 HnQQQ$1570043380304caenp:localhost:8800$1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 GnQQQ$1570043379303bCgUn:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 FnQQQ$1570043378302mKBGD:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 EnQQQ$1570043377301OraEa:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800 DnQQQ$1570043375299fbyXJ:localhost:8800$1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 CnQQQ$1570043374298UIMFg:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 BnQQQ$1570043373297SOjrf:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 AnQQQ$1570043372296yAiBq:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800 @nQQQ$1570043369294rquKy:localhost:8800$1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 ?nQQQ$1570043369293ssSMv:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 >nQQQ$1570043368292FAoRb:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 =nQQQ$1570043367291AEdax:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 m@anon-20191002_181700-458:localhost:8800""Q?Q ]$1570042673174OxGuP:localhost:8800m.room.history_visibility!MqstbCLZIQFiYNHrqR:localhost:8800m|m@anon-20191002_181700-458:localhost:8800!Q/Q ]$1570042672173XsxsH:localhost:8800m.room.join_rules!MqstbCLZIQFiYNHrqR:localhost:8800mm/@anon-20191002_181700-458:localhost:8800 Q3Q ]$1570042672172vPvbe:localhost:8800m.room.power_levels!MqstbCLZIQFiYNHrqR:localhost:8800mXm@anon-20191002_181700-458:localhost:8800Q'Q ]$1570042671171AQZaz:localhost:8800m.room.member!MqstbCLZIQFiYNHrqR:localhost:8800mm=@anon-20191002_181700-458:localhost:8800 Q'Q  ]$1570042670170TtDpX:localhost:8800m.room.create!MqstbCLZIQFiYNHrqR:localhost:8800mm#@anon-20191002_181700-458:localhost:8800M'Q ]$15700426692GLpqH:localhost:8829m.room.member!WuiaqqIOvBjgETqdus:localhost:8800mml@anon-20191002_181700-457:localhost:8829Q#Q ]$1570042668168uCbYK:localhost:8800m.room.test!WuiaqqIOvBjgETqdus:localhost:8800m)m-@anon-20191002_181700-456:localhost:8800Q'Q ]$1570042667167mhSmJ:localhost:8800m.room.member!WuiaqqIOvBjgETqdus:localhost:8800mm`@anon-20191002_181700-456:localhost:8800"Q?Q ]$1570042666166IBpPy:localhost:8800m.room.history_visibility!WuiaqqIOvBjgETqdus:localhost:8800m߾m@anon-20191002_181700-456:localhost:8800Q/Q ]$1570042666165HDkhp:localhost:8800m.room.join_rules!WuiaqqIOvBjgETqdus:localhost:8800mm@anon-20191002_181700-456:localhost:8800Q3Q ]$1570042665164nYKmj:localhost:8800m.room.power_levels!WuiaqqIOvBjgETqdus:localhost:8800mm@anon-20191002_181700-456:localhost:8800Q'Q ]$1570042664163IAHXd:localhost:8800m.room.member!WuiaqqIOvBjgETqdus:localhost:8800mXm@anon-20191002_181700-456:localhost:8800 Q'Q  ]$1570042663162sQrEh:localhost:8800m.room.create!WuiaqqIOvBjgETqdus:localhost:8800mmv@anon-20191002_181700-456:localhost:8800 1)Vd-P } : A  ~ G  k V H q:i S|{e*BQ? !cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibility :Q/ !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.join_rules6BQ? !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.history_visibility76Q' !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.create3<Q3 !cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels ^Q']!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800 RQ'E!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455 <Q3 !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.power_levels^Q']!dDqNKNFdIjCAwnyaxp:localhost:8800m.room.member@anon-20191002_181700-332:localhost:8800:Q/ !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.join_rulesBQ? !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.history_visibility6Q' !dDqNKNFdIjCAwnyaxp:localhost:8800m.room.create<Q3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels 4^Q']!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800 3RQ'E!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455 7:Q/ !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules 5BQ? !dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility 66Q' !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create 2<Q3 !cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels ^Q']!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800 :Q/ !cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rules 6Q' !cvXpMzcxNNhsNttxvt:localhost:8800m.room.create <Q3 !csWEXfVEVxdviNvgAd:localhost:8800m.room.power_levelse^Q']!csWEXfVEVxdviNvgAd:localhost:8800m.room.member@anon-20191002_181700-374:localhost:8800c:Q/ !csWEXfVEVxdviNvgAd:localhost:8800m.room.join_rulesgBQ? !csWEXfVEVxdviNvgAd:localhost:8800m.room.history_visibilityi6Q' !csWEXfVEVxdviNvgAd:localhost:8800m.room.create`<Q3 !cosGKKhHvKaVukBCic:localhost:8800m.room.power_levels]Q'[!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-67:localhost:8800]Q'[!cosGKKhHvKaVukBCic:localhost:8800m.room.member@anon-20191002_181700-66:localhost:8829:Q/ !cosGKKhHvKaVukBCic:localhost:8800m.room.join_rulesBQ? !cosGKKhHvKaVukBCic:localhost:8800m.room.history_visibility6Q' !cosGKKhHvKaVukBCic:localhost:8800m.room.create?Q9 !cosGKKhHvKaVukBCic:localhost:8800m.room.canonical_aliasEQ))!cosGKKhHvKaVukBCic:localhost:8800m.room.aliaseslocalhost:8800<Q3 !coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels^Q']!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829^Q']!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800:Q/ !coGyOAgYnlBZAqznax:localhost:8800m.room.join_rulesBQ? !coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibility6Q' !coGyOAgYnlBZAqznax:localhost:8800m.room.create<Q3 !cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels^Q']!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800^Q']!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800:Q/ !cidyuyekVzJHHvyomb:localhost:8800m.room.join_rulesBQ? !cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibility6Q' !cidyuyekVzJHHvyomb:localhost:8800m.room.create<Q3 !cSUQGmpIsSCBAVTOHo:localhost:8800m.room.power_levels5^Q']!cSUQGmpIsSCBAVTOHo:localhost:8800m.room.member@anon-20191002_181700-106:localhost:88004 Bc@ l7a,X# Q  } H  t ? k 6  b -[(TM|Guc.\'4]@anon-20191002_181700-510:localhost:8800m44]@anon-20191002_181700-439:localhost:8800m44]@anon-20191002_181700-438:localhost:8800m44]@anon-20191002_181700-437:localhost:8800m44]@anon-20191002_181700-436:localhost:8800m44]@anon-20191002_181700-435:localhost:8800m44]@anon-20191002_181700-434:localhost:8800m44]@anon-20191002_181700-433:localhost:8800m44]@anon-20191002_181700-432:localhost:8800m44]@anon-20191002_181700-431:localhost:8800m42[@anon-20191002_181700-50:localhost:8800m4!4]@anon-20191002_181700-509:localhost:8800m44]@anon-20191002_181700-508:localhost:8800m44]@anon-20191002_181700-507:localhost:8800m44]@anon-20191002_181700-506:localhost:8800m44]@anon-20191002_181700-505:localhost:8800m44]@anon-20191002_181700-503:localhost:8800m44]@anon-20191002_181700-501:localhost:8800m41Y@anon-20191002_181700-4:localhost:8800m4 2[@anon-20191002_181700-49:localhost:8800m44]@anon-20191002_181700-499:localhost:8800m44]@anon-20191002_181700-497:localhost:8800m44]@anon-20191002_181700-495:localhost:8800m44]@anon-20191002_181700-494:localhost:8800m44]@anon-20191002_181700-493:localhost:8800m44]@anon-20191002_181700-492:localhost:8800m44]@anon-20191002_181700-491:localhost:8800m44]@anon-20191002_181700-490:localhost:8800m42[@anon-20191002_181700-48:localhost:8800m42[@anon-20191002_181700-48:localhost:8800m44]@anon-20191002_181700-488:localhost:8800m44]@anon-20191002_181700-486:localhost:8800m44]@anon-20191002_181700-484:localhost:8800m44]@anon-20191002_181700-482:localhost:8800m44]@anon-20191002_181700-480:localhost:8800m44]@anon-20191002_181700-479:localhost:8800m44]@anon-20191002_181700-478:localhost:8800m44]@anon-20191002_181700-477:localhost:8800m44]@anon-20191002_181700-476:localhost:8800m44]@anon-20191002_181700-475:localhost:8800m44]@anon-20191002_181700-473:localhost:8800m44]@anon-20191002_181700-471:localhost:8800m44]@anon-20191002_181700-469:localhost:8800m44]@anon-20191002_181700-467:localhost:8800m44]@anon-20191002_181700-465:localhost:8800m44]@anon-20191002_181700-464:localhost:8800m44]@anon-20191002_181700-463:localhost:8800m44]@anon-20191002_181700-462:localhost:8800m44]@anon-20191002_181700-461:localhost:8800m44]@anon-20191002_181700-460:localhost:8800m44]@anon-20191002_181700-458:localhost:8800m44]@anon-20191002_181700-456:localhost:8800m44]@anon-20191002_181700-454:localhost:8800m44]@anon-20191002_181700-452:localhost:8800m44]@anon-20191002_181700-450:localhost:8800m42[@anon-20191002_181700-44:localhost:8800m44]@anon-20191002_181700-449:localhost:8800m44]@anon-20191002_181700-448:localhost:8800m44]@anon-20191002_181700-447:localhost:8800m44]@anon-20191002_181700-446:localhost:8800m44]@anon-20191002_181700-445:localhost:8800m44]@anon-20191002_181700-444:localhost:8800m44]@anon-20191002_181700-443:localhost:8800m44]@anon-20191002_181700-442:localhost:8800m44]@anon-20191002_181700-441:localhost:8800m44]@anon-20191002_181700-440:localhost:8800m4 >CG K O  S  W  [ _ c$g(k,o0s4w8{<<8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSCm4<7]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZm4<6]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQm4<5]!@anon-20191002_181700-493:localhost:8800GRPWUCANVUm4<4]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQTm4<3]!@anon-20191002_181700-491:localhost:8800SADWUTCSYMm4<2]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBUm4<1]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZm4<0]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDSm4QQQ$1570042680180uuIxG:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800j=QQQ$1570042679179ZJCqE:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800h<MQQ$15700426753WBESe:localhost:8829$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800h;MQQ$15700426753WBESe:localhost:8829$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800h:MQQ$15700426753WBESe:localhost:8829$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j9QQQ$1570042674175gurnU:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j8QQQ$1570042674175gurnU:localhost:8800$1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j7QQQ$1570042674175gurnU:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j6QQQ$1570042674175gurnU:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j5QQQ$1570042673174OxGuP:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j4QQQ$1570042673174OxGuP:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j3QQQ$1570042673174OxGuP:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j2QQQ$1570042672173XsxsH:localhost:8800$1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j1QQQ$1570042672173XsxsH:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j0QQQ$1570042672173XsxsH:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j/QQQ$1570042672172vPvbe:localhost:8800$1570042671171AQZaz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j.QQQ$1570042672172vPvbe:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800j-QQQ$1570042671171AQZaz:localhost:8800$1570042670170TtDpX:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800h,MQQ$15700426692GLpqH:localhost:8829$1570042667167mhSmJ:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800h+MQQ$15700426692GLpqH:localhost:8829$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800h*MQQ$15700426692GLpqH:localhost:8829$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j)QQQ$1570042667167mhSmJ:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j(QQQ$1570042667167mhSmJ:localhost:8800$1570042666165HDkhp:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j'QQQ$1570042667167mhSmJ:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j&QQQ$1570042667167mhSmJ:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j%QQQ$1570042666166IBpPy:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j$QQQ$1570042666166IBpPy:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j#QQQ$1570042666166IBpPy:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j"QQQ$1570042666165HDkhp:localhost:8800$1570042665164nYKmj:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j!QQQ$1570042666165HDkhp:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800j QQQ$1570042666165HDkhp:localhost:8800$1570042663162sQrEh:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800jQQQ$1570042665164nYKmj:localhost:8800$1570042664163IAHXd:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800 2bu( ; N e  z + >Qdw(;Nat%8L>QL$1570042706211NniIl:localhost:8800sha256 Q9XKu ɚ)uFK˵ROL=QL$1570042705210LweYn:localhost:8800sha256C*v\{~հ(>4L;QL$1570042704208yLiWU:localhost:8800sha256Ä:X,0{ܐXĢ0sHnsL:QL$1570042703207yqsGA:localhost:8800sha256d9rI>?3Kí+sآS2kL9QL$1570042702206BIYsS:localhost:8800sha256+ݜGHFbr?K?AAL8QL$1570042701205bxgOX:localhost:8800sha256og2cME>j8ĵ#;8A[UL7QL$1570042700204CxVfq:localhost:8800sha256y$"Jךּ]2#9sL6QL$1570042699203fHFjU:localhost:8800sha256.W`)QfcXȖUllpQ\/L5QL$1570042698202juBqr:localhost:8800sha256Vg)B)vJdSEdk\$L4QL$1570042698201kDowV:localhost:8800sha256M16 / ){笈nrե)!L3QL$1570042697200mrENr:localhost:8800sha256CouO H*.ч~}БL2QL$1570042697199ROUNP:localhost:8800sha256" 6'_'ݱfŵ$em#}`L1QL$1570042696198qbnxj:localhost:8800sha256K[ ݨ?9/g&tL0QL$1570042695197vezoL:localhost:8800sha256K#g(707.H)]CL/QL$1570042694196OHsWc:localhost:8800sha256x:ܰO7S {Tݎ0Z2XL.QL$1570042693195hNKnU:localhost:8800sha256k$.WfW5T 1L-QL$1570042692194rxboZ:localhost:8800sha256CX j=%f_?],BPNQL,QL$1570042691193uVdPZ:localhost:8800sha256} 1NkaH3Fg$nL+QL$1570042691192yNWVM:localhost:8800sha256gHp| `s `[s>g[ΫL*QL$1570042690191yQfnl:localhost:8800sha256ץ[Mn<)YpY,KMrCL)QL$1570042689190UkvMv:localhost:8800sha256OyhC ,aju(yH,)f,2EL(QL$1570042688189axPjv:localhost:8800sha256X6I/pɳyf3RQ͏:b8L'QL$1570042687188ddQmS:localhost:8800sha256q0mQˤ8/UcU|_`2YL&QL$1570042687187gbArC:localhost:8800sha256? MQI}+e񅿍L%QL$1570042686186Qxqmn:localhost:8800sha256aeGmRl,9/PZD P4_L$QL$1570042685185RhcXe:localhost:8800sha256݁{I>U(CR}6sx?UL#QL$1570042683184TpChh:localhost:8800sha256x\)6BNԪACzL"QL$1570042682183iUUXF:localhost:8800sha256f ]Y猋^G gzs/6L!QL$1570042681182ZiRRU:localhost:8800sha256] &) "G~XTW AsL QL$1570042680181TFyrx:localhost:8800sha256b t v6ᗄC8#/eWLQL$1570042680180uuIxG:localhost:8800sha256st2P!GV~}نOfDLHLQL$1570042679179ZJCqE:localhost:8800sha256 _egN'EzPDX#9- eLQL$1570042678178HSUoI:localhost:8800sha256fܞ%NI| 6۴Ԃǒ7^JML$15700426765pydev:localhost:8829sha256vnjNWYTM^(1I CM!k \JML$15700426764DoRhm:localhost:8829sha256bexS5ĝeWIN0  AJML$15700426753WBESe:localhost:8829sha256I_P68pC"kAZ?AmFj3 YLQL$1570042675176WKRiz:localhost:8800sha256Qp."$Z1J5/y=DLQL$1570042674175gurnU:localhost:8800sha256_tֻ尩r’zqmLQL$1570042673174OxGuP:localhost:8800sha256R4e;ب?4wHuhYE*es,JML$15700426692GLpqH:localhost:8829sha256'Q$1570043428320JDiOD:localhost:8800='Q$1570043428320JDiOD:localhost:8800<'Q$1570043426319TNjnu:localhost:8800;'Q$1570043391316OJaBO:localhost:8800'Q$1570043391316OJaBO:localhost:8800'Q$1570043388312YDkJu:localhost:8800'Q$1570043388312YDkJu:localhost:8800'Q$1570043388312YDkJu:localhost:8800&O$157004338812XhwjX:localhost:8829&O$157004338812XhwjX:localhost:8829&O$157004338812XhwjX:localhost:8829'Q$1570043387311DGzYi:localhost:8800'Q$1570043387311DGzYi:localhost:8800'Q$1570043387311DGzYi:localhost:8800'Q$1570043386310bGMNl:localhost:8800'Q$1570043386310bGMNl:localhost:8800'Q$1570043386310bGMNl:localhost:8800'Q$1570043385309imdbl:localhost:8800'Q$1570043385309imdbl:localhost:8800'Q$1570043385309imdbl:localhost:8800'Q$1570043384308gPogh:localhost:8800'Q$1570043384308gPogh:localhost:8800'Q$1570043383307bhuDV:localhost:8800'Q$1570043380304caenp:localhost:8800'Q$1570043380304caenp:localhost:8800'Q$1570043380304caenp:localhost:8800'Q$1570043379303bCgUn:localhost:8800'Q$1570043379303bCgUn:localhost:8800'Q$1570043379303bCgUn:localhost:8800'Q$1570043378302mKBGD:localhost:8800'Q$1570043378302mKBGD:localhost:8800'Q$1570043377301OraEa:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043375299fbyXJ:localhost:8800'Q$1570043374298UIMFg:localhost:8800'Q$1570043374298UIMFg:localhost:8800'Q$1570043374298UIMFg:localhost:8800'Q$1570043373297SOjrf:localhost:8800'Q$1570043373297SOjrf:localhost:8800'Q$1570043372296yAiBq:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043369294rquKy:localhost:8800'Q$1570043369293ssSMv:localhost:8800'Q$1570043369293ssSMv:localhost:8800'Q$1570043369293ssSMv:localhost:8800'Q$1570043368292FAoRb:localhost:8800'Q$1570043368292FAoRb:localhost:8800'Q$1570043367291AEdax:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043364289XIEhE:localhost:8800'Q$1570043364288SCpzq:localhost:8800'Q$1570043364288SCpzq:localhost:8800'Q$1570043364288SCpzq:localhost:8800'Q$1570043363287eSyun:localhost:8800'Q$1570043363287eSyun:localhost:8800'Q$1570043362286KwXMK:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043354284IVfTL:localhost:8800'Q$1570043353283ubEdk:localhost:8800'Q$1570043353283ubEdk:localhost:8800'Q$1570043353283ubEdk:localhost:8800'Q$1570043352282iTcSU:localhost:8800'Q$1570043352282iTcSU:localhost:8800'Q$1570043351281XHPOP:localhost:8800'Q$1570043347278WlNld:localhost:8800'Q$1570043347278WlNld:localhost:8800'Q$1570043347278WlNld:localhost:8800'Q$1570043346277FsKPl:localhost:8800'Q$1570043346277FsKPl:localhost:8800'Q$1570043346277FsKPl:localhost:8800'Q$1570043346276qTXUF:localhost:8800'Q$1570043346276qTXUF:localhost:8800'Q$1570043345275UDVPY:localhost:8800'Q$1570043341273LsXNn:localhost:8800'Q$1570043341273LsXNn:localhost:8800'Q$1570043195270GcoLc:localhost:8800'Q$1570043195270GcoLc:localhost:8800'Q$1570043195270GcoLc:localhost:8800'Q$1570043195269hcCzg:localhost:8800 C O  Y$e.qQ;+ Q]]Q=$1570042742255yQzPA:localhost:8800@anon-20191002_181700-474:localhost:8829@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800inviteanon-20191002_181700-4749* Q]]Q=$1570042738251iukAg:localhost:8800@anon-20191002_181700-473:localhost:8800@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800joinanon-20191002_181700-473 ) M]]Q$15700427368TlZQs:localhost:8829@anon-20191002_181700-472:localhost:8829@anon-20191002_181700-472:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800leave;( Q]]Q=$1570042734247SfTxR:localhost:8800@anon-20191002_181700-472:localhost:8829@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800inviteanon-20191002_181700-4729' Q]]Q=$1570042731243YuOkC:localhost:8800@anon-20191002_181700-471:localhost:8800@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800joinanon-20191002_181700-471;& Q]]Q=$1570042723230DFoyn:localhost:8800@anon-20191002_181700-470:localhost:8829@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800inviteanon-20191002_181700-4709% Q]]Q=$1570042720226wSTBF:localhost:8800@anon-20191002_181700-469:localhost:8800@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800joinanon-20191002_181700-4697$ M]]Q=$15700427177BOUHn:localhost:8829@anon-20191002_181700-468:localhost:8829@anon-20191002_181700-468:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800joinanon-20191002_181700-468;# Q]]Q=$1570042716222nflqt:localhost:8800@anon-20191002_181700-468:localhost:8829@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800inviteanon-20191002_181700-4689" Q]]Q=$1570042711216KdEEo:localhost:8800@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800joinanon-20191002_181700-4677! M]]Q=$15700427086bDrAU:localhost:8829@anon-20191002_181700-466:localhost:8829@anon-20191002_181700-466:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800joinanon-20191002_181700-4669 Q]]Q=$1570042702206BIYsS:localhost:8800@anon-20191002_181700-465:localhost:8800@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800joinanon-20191002_181700-4659 Q]]Q=$1570042699203fHFjU:localhost:8800@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800joinanon-20191002_181700-464; Q]]Q=$1570042698202juBqr:localhost:8800@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800inviteanon-20191002_181700-4649 Q]]Q=$1570042694196OHsWc:localhost:8800@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800joinanon-20191002_181700-4639 Q]]Q=$1570042691193uVdPZ:localhost:8800@anon-20191002_181700-462:localhost:8800@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800joinanon-20191002_181700-4629 Q]]Q=$1570042686186Qxqmn:localhost:8800@anon-20191002_181700-461:localhost:8800@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800joinanon-20191002_181700-4619 Q]]Q=$1570042679179ZJCqE:localhost:8800@anon-20191002_181700-460:localhost:8800@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800joinanon-20191002_181700-4607 M]]Q=$15700426753WBESe:localhost:8829@anon-20191002_181700-459:localhost:8829@anon-20191002_181700-459:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800joinanon-20191002_181700-459; Q]]Q=$1570042674175gurnU:localhost:8800@anon-20191002_181700-459:localhost:8829@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800inviteanon-20191002_181700-4599 Q]]Q=$1570042671171AQZaz:localhost:8800@anon-20191002_181700-458:localhost:8800@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800joinanon-20191002_181700-458 #zM ! > z  . e /Lc6%\&hQ']M !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829$15700427086bDrAU:localhost:8829igQ))Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800$1570042706211NniIl:localhost:8800ffQ? Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility$1570042705210LweYn:localhost:8800^eQ/ Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules$1570042704209JQwmT:localhost:8800cdQ9 Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias$1570042704208yLiWU:localhost:8800`cQ3 Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levels$1570042703207yqsGA:localhost:8800bQ']Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800$1570042702206BIYsS:localhost:8800ZaQ' Q !HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create$1570042701205bxgOX:localhost:8800$`Q']QQ !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800_Q']Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042698202juBqr:localhost:8800`^Q3 Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_access$1570042697200mrENr:localhost:8800f]Q? Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility$1570042697199ROUNP:localhost:8800^\Q/ Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules$1570042696198qbnxj:localhost:8800`[Q3 Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels$1570042695197vezoL:localhost:8800ZQ']Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800$1570042694196OHsWc:localhost:8800ZYQ' Q !FbJSiQoZtZkaFwzzQq:localhost:8800m.room.create$1570042693195hNKnU:localhost:8800XQ']Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800$1570042691193uVdPZ:localhost:8800iWQ))Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800$1570042690191yQfnl:localhost:8800fVQ? Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility$1570042689190UkvMv:localhost:8800^UQ/ Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules$1570042688189axPjv:localhost:8800cTQ9 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias$1570042687188ddQmS:localhost:8800`SQ3 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levels$1570042687187gbArC:localhost:8800RQ']Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800$1570042686186Qxqmn:localhost:8800ZQQ' Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.create$1570042685185RhcXe:localhost:8800fPQ? Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.history_visibility$1570042681182ZiRRU:localhost:8800^OQ/ Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.join_rules$1570042680181TFyrx:localhost:8800`NQ3 Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.power_levels$1570042680180uuIxG:localhost:8800MQ']Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.member@anon-20191002_181700-460:localhost:8800$1570042679179ZJCqE:localhost:8800ZLQ' Q !RYNJAGdRhIlwRZFbrO:localhost:8800m.room.create$1570042678178HSUoI:localhost:8800"KQ']MQ !MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$15700426753WBESe:localhost:8829$1570042674175gurnU:localhost:8800JQ']Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829$1570042674175gurnU:localhost:8800fIQ? Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibility$1570042673174OxGuP:localhost:8800^HQ/ Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rules$1570042672173XsxsH:localhost:8800`GQ3 Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levels$1570042672172vPvbe:localhost:8800FQ']Q !MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800$1570042671171AQZaz:localhost:8800  fxQQa $1570042673174OxGuP:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2466}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042672173XsxsH:localhost:8800", {"sha256": "0RvhEoHYWVqoS1Z6LuvvxCvtUXtuQOyzNr0MzUBg1js"}]], "type": "m.room.history_visibility", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042673174OxGuP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042673532, "hashes": {"sha256": "hA7OpHOkBi5Gfq1s+kyDNvWJ8FO4nD0AG+ZQpc3F9zQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QqaRnjS+YDfLEx81a8efi5VdK2zpTcdb+YAWDqivQ/Ptq3J7XMmso+1ivvs/wFSvL8y+ZXDid6sxqeADqrA7Dw"}}, "unsigned": {"age_ts": 1570042673532}}gQQaq $1570042672173XsxsH:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2465}{"auth_events": [["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}], ["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}]], "prev_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}]], "type": "m.room.join_rules", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042672173XsxsH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042672840, "hashes": {"sha256": "DN098NX4E/MaDzEO6mTtEzBOfb3Fgy2v+lvsju+HtgI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wALBEXxrq63PPekEOGqY07ZO7fVaxWUdTp1J7qpddDmZmrSafMilsJ9YTnyddBTjx0GEIy+VXNYK1RjMEkM3Aw"}}, "unsigned": {"age_ts": 1570042672840}}+QQay $1570042672172vPvbe:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2464}{"auth_events": [["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "type": "m.room.power_levels", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"users": {"@anon-20191002_181700-458:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042672172vPvbe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042672216, "hashes": {"sha256": "LcHgU0PcML+t64pRLUigEBkEG2LChzGMO9aXsB2OoWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XYfaECDonYuSZgivUl1jzFfF5sVkv7XuqSgpU0CUtVeX/flvBvStvJHtufEwYlOEkHrE+r6pjEfOckC2HFdQDg"}}, "unsigned": {"age_ts": 1570042672216}} \Z2 b8 f <  j @  n D  r H  v L $|R(X.\2`6 d:h@nDl81ce$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkB1be$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEA1ae$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI@1`e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ?&_O$157004274411xArrT:localhost:8829>&^O$157004274310jCQYA:localhost:8829>%]M$15700427439Hwxyi:localhost:8829>'\Q$1570042742256IYRor:localhost:8800<'[Q$1570042742255yQzPA:localhost:8800<'ZQ$1570042741254DKIYz:localhost:8800;'YQ$1570042740253GkWgu:localhost:8800:'XQ$1570042739252bWghU:localhost:88009'WQ$1570042738251iukAg:localhost:88008'VQ$1570042737250jmxWx:localhost:88007%UM$15700427368TlZQs:localhost:88296'TQ$1570042735248drnws:localhost:88004'SQ$1570042734247SfTxR:localhost:88004'RQ$1570042733246cYViL:localhost:88003'QQ$1570042733245smHTZ:localhost:88002'PQ$1570042732244zDmQh:localhost:88001'OQ$1570042731243YuOkC:localhost:88000'NQ$1570042730242eYFxu:localhost:8800/'MQ$1570042729241UUSiz:localhost:8800.'LQ$1570042729240aBRvS:localhost:8800.'KQ$1570042728239BMOBm:localhost:8800.'JQ$1570042728238dtqIB:localhost:8800.'IQ$1570042727237iUlYB:localhost:8800.'HQ$1570042727236AOaiE:localhost:8800.'GQ$1570042726235bahBo:localhost:8800.'FQ$1570042726234miteq:localhost:8800.'EQ$1570042725233SjCnf:localhost:8800.'DQ$1570042725232UzIHq:localhost:8800.'CQ$1570042724231dYSEq:localhost:8800.'BQ$1570042723230DFoyn:localhost:8800.'AQ$1570042722229ehxUl:localhost:8800-'@Q$1570042722228QkARL:localhost:8800,'?Q$1570042721227mhNwo:localhost:8800+'>Q$1570042720226wSTBF:localhost:8800*'=Q$1570042719225dSNgP:localhost:8800)'<Q$1570042718224MBWNJ:localhost:8800(%;M$15700427177BOUHn:localhost:8829(':Q$1570042716222nflqt:localhost:8800&'9Q$1570042715221Amlxc:localhost:8800%'8Q$1570042714220vWWFN:localhost:8800%'7Q$1570042713219HcQXL:localhost:8800$'6Q$1570042712218KQzXb:localhost:8800#'5Q$1570042712217nuYrc:localhost:8800"'4Q$1570042711216KdEEo:localhost:8800!'3Q$1570042710215aaRza:localhost:8800 '2Q$1570042709214PwhVu:localhost:8800%1M$15700427086bDrAU:localhost:8829'0Q$1570042707212LkSAM:localhost:8800'/Q$1570042706211NniIl:localhost:8800'.Q$1570042705210LweYn:localhost:8800'-Q$1570042704209JQwmT:localhost:8800',Q$1570042704208yLiWU:localhost:8800'+Q$1570042703207yqsGA:localhost:8800'*Q$1570042702206BIYsS:localhost:8800')Q$1570042701205bxgOX:localhost:8800'(Q$1570042700204CxVfq:localhost:8800''Q$1570042699203fHFjU:localhost:8800'&Q$1570042698202juBqr:localhost:8800'%Q$1570042698201kDowV:localhost:8800'$Q$1570042697200mrENr:localhost:8800'#Q$1570042697199ROUNP:localhost:8800'"Q$1570042696198qbnxj:localhost:8800'!Q$1570042695197vezoL:localhost:8800' Q$1570042694196OHsWc:localhost:8800'Q$1570042693195hNKnU:localhost:8800'Q$1570042692194rxboZ:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042691192yNWVM:localhost:8800 'Q$1570042690191yQfnl:localhost:8800 'Q$1570042689190UkvMv:localhost:8800 'Q$1570042688189axPjv:localhost:8800 'Q$1570042687188ddQmS:localhost:8800 'Q$1570042687187gbArC:localhost:8800 'Q$1570042686186Qxqmn:localhost:8800'Q$1570042685185RhcXe:localhost:8800'Q$1570042683184TpChh:localhost:8800'Q$1570042682183iUUXF:localhost:8800'Q$1570042681182ZiRRU:localhost:8800'Q$1570042680181TFyrx:localhost:8800'Q$1570042680180uuIxG:localhost:8800'Q$1570042679179ZJCqE:localhost:8800'Q$1570042678178HSUoI:localhost:8800% M$15700426765pydev:localhost:8829% M$15700426764DoRhm:localhost:8829% M$15700426753WBESe:localhost:8829' Q$1570042675176WKRiz:localhost:8800' Q$1570042674175gurnU:localhost:8800'Q$1570042673174OxGuP:localhost:8800 ;QQa $1570042675176WKRiz:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2468}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042674175gurnU:localhost:8800", {"sha256": "X3TWu+rz5bCpcoik1tbCkpvw384Hgqj8B3pxbb+64e8"}]], "type": "m.room.test", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042675176WKRiz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042675175, "hashes": {"sha256": "dWC+ComATxhtmjgZ2rXoul+5HQYeKC1501Tf0JtFXsI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "36g2EVOXbBZw1FtpW4a1j1ztxFyfM6rz6Agj/5iJfvK3Q0w9uyw07hkLB37P3a+w1Ik0c7IUN9/QL8dBl9dtDg"}}, "unsigned": {"age_ts": 1570042675175}};QQa $1570042674175gurnU:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800{"token_id": 471, "stream_ordering": 2467}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042672173XsxsH:localhost:8800", {"sha256": "0RvhEoHYWVqoS1Z6LuvvxCvtUXtuQOyzNr0MzUBg1js"}], ["$1570042671171AQZaz:localhost:8800", {"sha256": "kMUlRj/ELo1OQGH8rNHF9242iaBQLKL6RGzmcBMZGf8"}]], "prev_events": [["$1570042673174OxGuP:localhost:8800", {"sha256": "xMtSNN/uZTvYqMQ/NHdIvBKm+IvF2XXXaAGIWaL8PEY"}]], "type": "m.room.member", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-458:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-459", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-459:localhost:8829", "event_id": "$1570042674175gurnU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042674494, "hashes": {"sha256": "JF1kBe49MnfKz1MGPcrxZnaEEZnpz2Zb9KgZ5tS3Tn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qTSdMS0agMMPuoe5gsrx/H5NBAUg745nZoS4tZLBPhdMg8K/N3VFfu8jbfUrffcddnXD80T4gDu2nvncrRXBDA"}, "localhost:8829": {"ed25519:a_UxIG": "GXPf1BHH2bEcO9ynNvqRRpLx7SZITEFallXycJB805fOrEynPs5DcOpOB5IyQ87hkyltjzHqWNM+htFyqfS2Ag"}}, "unsigned": {"age_ts": 1570042674494, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-458:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-458:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-458", "avatar_url": null}, "sender": "@anon-20191002_181700-458:localhost:8800"}]}}  c(iMQcw $15700426765pydev:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800{"outlier": false, "stream_ordering": 2471}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$15700426753WBESe:localhost:8829", {"sha256": "SV/7UDbHOHBDIuKJa0Fa5j9BbedGjgJqtAEzpY8NWYI"}]], "content": {}, "depth": 10, "event_id": "$15700426765pydev:localhost:8829", "hashes": {"sha256": "M0zwH2LIUvyYtncjHBWsTmsYgDkNaUfF+TL0bUakSW4"}, "origin": "localhost:8829", "origin_server_ts": 1570042676490, "prev_events": [["$15700426764DoRhm:localhost:8829", {"sha256": "hBeRYrgVZfx4qlMHihc1HsSdl+9lV0lOMBwMAo/nIEE"}]], "prev_state": [], "redacts": "$15700426764DoRhm:localhost:8829", "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-459:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "zGPBrjkL/w995oc8Y/NWKPcvz9jk6iF9htLrwGRy0hPVgezUPnuC+308c374sssRrLogNU0yiKmOP8emBbF5DA"}}, "unsigned": {"age_ts": 1570042676490}}&7MQc $15700426764DoRhm:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800{"outlier": false, "stream_ordering": 2470}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$15700426753WBESe:localhost:8829", {"sha256": "SV/7UDbHOHBDIuKJa0Fa5j9BbedGjgJqtAEzpY8NWYI"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}]], "content": {}, "depth": 9, "event_id": "$15700426764DoRhm:localhost:8829", "hashes": {"sha256": "z1+FyUCiAdKi1Ly8uUdfxsNyaXzWt/7Whf8kH3gqLzo"}, "origin": "localhost:8829", "origin_server_ts": 1570042676420, "prev_events": [["$15700426753WBESe:localhost:8829", {"sha256": "SV/7UDbHOHBDIuKJa0Fa5j9BbedGjgJqtAEzpY8NWYI"}]], "prev_state": [], "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-459:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "BtgOUE5AIK9O9jv/cTcwK9UOJo6GFDhmtLuhFPEYThURsGKXUQfQezNOGaewLJQm2sNCoGTJpkNnKRyVq6s8AA"}}, "unsigned": {"age_ts": 1570042676420}}MQ1 $15700426753WBESe:localhost:8829!MqstbCLZIQFiYNHrqR:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2469}{"auth_events": [["$1570042672172vPvbe:localhost:8800", {"sha256": "66+Jxh0aacXSauabVdf+f8+8N0hsr1L5IUmowAvH19A"}], ["$1570042670170TtDpX:localhost:8800", {"sha256": "B2u6YudDcG//p0A2zz71RZEq98Rlsa1zLIiXi+We4PI"}], ["$1570042672173XsxsH:localhost:8800", {"sha256": "0RvhEoHYWVqoS1Z6LuvvxCvtUXtuQOyzNr0MzUBg1js"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-459", "membership": "join"}, "depth": 8, "event_id": "$15700426753WBESe:localhost:8829", "hashes": {"sha256": "AmZKeMrlltNxxNnW0hmndSqoO4bd2FQ7+RiPTy99XaQ"}, "origin": "localhost:8829", "origin_server_ts": 1570042675854, "prev_events": [["$1570042675176WKRiz:localhost:8800", {"sha256": "UZTFGXCrmC4iJMC4WvmtMUqY7wMGNS958hH/Gj0f5UQ"}]], "prev_state": [], "room_id": "!MqstbCLZIQFiYNHrqR:localhost:8800", "sender": "@anon-20191002_181700-459:localhost:8829", "state_key": "@anon-20191002_181700-459:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tM4AMm0YktV8PXyF1EMuJ8xBVhTOFRPoXEzOST8AlFxXDOCEcbcKigFaRzTNtkOVFMgdjxvEhOPujEnlTS5cAA"}, "localhost:8829": {"ed25519:a_UxIG": "vl+6wHHXdrAlhU96w9/IUxNYK0+hch0mmnK7O4jQYc7Oog1Jrg+vidMdEhHtTTS98nj/LncshF9t1Cvx3zAMDw"}}, "unsigned": {"age": 104, "replaces_state": "$1570042674175gurnU:localhost:8800"}} RU {}R'  'y JFq{T)oP% y N # HswL P %   T } T + D#!uN V + TiVGOnt:loca*Q!QcaNrIiUsWpTiVGOnt:localhost:8800::*Q!QcaNrIiUsWpTiVGOnt:localhost:880088*Q!QcaNrIiUsWpTiVGOnt:localhost:880066*Q!QcaNrIiUsWpTiVGOnt:localhost:880055*Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 x x*Q!PgNDjhhIBAXKryuGKy:localhost:8800 y y*Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!QMrkSPlQDGborAyWtQ:localhost:8800OO*Q!QMrkSPlQDGborAyWtQ:localhost:8800NN*Q!QcaNrIiUsWpTiVGOnt:localhost:8800<<*Q!QMrkSPlQDGborAyWtQ:localhost:8800PP*Q!QMrkSPlQDGborAyWtQ:localhost:8800QQ*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!QnmLrBAxeItdHsaxWf:localhost:8800 j j*Q!QWLJZmJqjWZjVOjdYF:localhost:8800##*Q!QnmLrBAxeItdHsaxWf:localhost:8800 i i*Q!QnmLrBAxeItdHsaxWf:localhost:8800 h h*Q!QnmLrBAxeItdHsaxWf:localhost:8800 g g*Q!QMrkSPlQDGborAyWtQ:localhost:8800TT*Q!QMrkSPlQDGborAyWtQ:localhost:8800SS*Q!QMrkSPlQDGborAyWtQ:localhost:8800RR*Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QnmLrBAxeItdHsaxWf:localhost:8800 k k*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 w w*Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 } }*Q!PgNDjhhIBAXKryuGKy:localhost:8800 | |*Q!PgNDjhhIBAXKryuGKy:localhost:8800 { {*Q!PgNDjhhIBAXKryuGKy:localhost:8800 z z*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!QWLJZmJqjWZjVOjdYF:localhost:8800%%*Q!QWLJZmJqjWZjVOjdYF:localhost:8800$$*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 *Q!QxqzQoEBIZhmzHIGrl:localhost:8800  *Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ~ ~*Q!QxqzQoEBIZhmzHIGrl:localhost:8800 } }*Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800(Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 (Q!QZhNrNpwObZGJZpdAG:localhost:8800 *Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QWLJZmJqjWZjVOjdYF:localhost:8800""*Q!QWLJZmJqjWZjVOjdYF:localhost:8800!!*Q!QWLJZmJqjWZjVOjdYF:localhost:8800  *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800  *Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ ~*Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 *Q!QkkdnzvdrjHaFGkzMt:localhost:8800 g * T~=ggY]!c@anon-20191002_181700-475:localhost:8800JJMOBOLFAHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAogX]!c@anon-20191002_181700-473:localhost:8800TSHZTIBDHNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwogW]!c@anon-20191002_181700-471:localhost:8800VTNKSDWUTBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDegogV]!c@anon-20191002_181700-469:localhost:8800VLYSIOTSXRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwogU]!c@anon-20191002_181700-467:localhost:8800TOUFSHQMBKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAogT]!c@anon-20191002_181700-465:localhost:8800JPLWYOLOJMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1WlgogS]!c@anon-20191002_181700-464:localhost:8800VUWRFRZGNEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAogR]!c@anon-20191002_181700-463:localhost:8800ZKSEJYQPIOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEsUn5QK2gsaV96ZDl4SUgKMDAyZnNpZ25hdHVyZSDaJbTUK8J1RZWlbYUN7MPZ6rFNmTiv7rBn7AV9RldXXgogQ]!c@anon-20191002_181700-462:localhost:8800SKOLIDFQENMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgqNHZONnJCby56bEcxTH4KMDAyZnNpZ25hdHVyZSB4Ry47sGdIUCfFEcz296VIAzXUQdtp19MhUFtszMYc7QogP]!c@anon-20191002_181700-461:localhost:8800GRYRTUWCZUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE1YTdfJk8sNE81VHNhZWoKMDAyZnNpZ25hdHVyZSBgW1nJPP09JdGBWfY6VKAe20DDT4R_iNMnGnLuj0VzngogO]!c@anon-20191002_181700-460:localhost:8800GJEFYISBJPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNTX2tYQFcxK2Z-d19qMkIKMDAyZnNpZ25hdHVyZSAfapWwc-IdEUjyfNgue4N4YkYxmHLpgRnz3Z80ZiVWnAo  +QQay $1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2474}{"auth_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "type": "m.room.power_levels", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"users": {"@anon-20191002_181700-460:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042680180uuIxG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042680091, "hashes": {"sha256": "wnnF0PMpIIYKKzbQESOtmGxPoa6rLLGdyMrtYH4OME8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zu4Kly1uxbTmCx902snj7nphA5XC4TdxuRP/zIwJA8gA+4OkevEy/o3sQ1veZIRC1NMl3VrEXmZU7kY10L5SAw"}}, "unsigned": {"age_ts": 1570042680091}}QQa) $1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2473}{"auth_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}]], "prev_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}]], "type": "m.room.member", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-460", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-460:localhost:8800", "event_id": "$1570042679179ZJCqE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042679378, "hashes": {"sha256": "UV/mxNcpTzsnEktkgeCZ4tiwPj9KAijZBkG7p6Lm+x8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ma50neCp8h/N/AIJb7cCVDGhtB4XHYJvghEMlTaNYhRYDFakf21G+8XuhQyXsDu8ngahQ5niQPUjv/QfCI4XDQ"}}, "unsigned": {"age_ts": 1570042679378}}QQaC $1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2472}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-460:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042678178HSUoI:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042678521, "hashes": {"sha256": "Z6OYdbDDB3t4+dp68l68zZBC5IeSV4QqkycW6gpyyFI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AbbihhnUV/MJDkZgmNXqB1M3lxB6ymXQWiKbBoTTrImmvc1YVTmTr0HgXDq9i7mpmfTMCQe42r9O6FZz8wa0DQ"}}, "unsigned": {"age_ts": 1570042678521}} 3f2 K d  } 0 I b {.Ib{.Ib{.GH6QM6!WhLedNwPGGGTtqeqam:localhost:8800$15700427368TlZQs:localhost:8829J5QQ5!WhLedNwPGGGTtqeqam:localhost:8800$1570042736249MHPfI:localhost:8800J4QQ4!WhLedNwPGGGTtqeqam:localhost:8800$1570042734247SfTxR:localhost:8800J3QQ3!WhLedNwPGGGTtqeqam:localhost:8800$1570042733246cYViL:localhost:8800J2QQ2!WhLedNwPGGGTtqeqam:localhost:8800$1570042733245smHTZ:localhost:8800J1QQ1!WhLedNwPGGGTtqeqam:localhost:8800$1570042732244zDmQh:localhost:8800J0QQ0!WhLedNwPGGGTtqeqam:localhost:8800$1570042731243YuOkC:localhost:8800J/QQ/!WhLedNwPGGGTtqeqam:localhost:8800$1570042730242eYFxu:localhost:8800J.QQ.!yLccBXjjEasExpsXlt:localhost:8800$1570042723230DFoyn:localhost:8800J-QQ-!yLccBXjjEasExpsXlt:localhost:8800$1570042722229ehxUl:localhost:8800J,QQ,!yLccBXjjEasExpsXlt:localhost:8800$1570042722228QkARL:localhost:8800J+QQ+!yLccBXjjEasExpsXlt:localhost:8800$1570042721227mhNwo:localhost:8800J*QQ*!yLccBXjjEasExpsXlt:localhost:8800$1570042720226wSTBF:localhost:8800J)QQ)!yLccBXjjEasExpsXlt:localhost:8800$1570042719225dSNgP:localhost:8800H(QM(!PcvmCDeVUSyJbXpTig:localhost:8800$15700427177BOUHn:localhost:8829J'QQ'!PcvmCDeVUSyJbXpTig:localhost:8800$1570042716223rQrNF:localhost:8800J&QQ&!PcvmCDeVUSyJbXpTig:localhost:8800$1570042716222nflqt:localhost:8800J%QQ%!PcvmCDeVUSyJbXpTig:localhost:8800$1570042714220vWWFN:localhost:8800J$QQ$!PcvmCDeVUSyJbXpTig:localhost:8800$1570042713219HcQXL:localhost:8800J#QQ#!PcvmCDeVUSyJbXpTig:localhost:8800$1570042712218KQzXb:localhost:8800J"QQ"!PcvmCDeVUSyJbXpTig:localhost:8800$1570042712217nuYrc:localhost:8800J!QQ!!PcvmCDeVUSyJbXpTig:localhost:8800$1570042711216KdEEo:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042710215aaRza:localhost:8800HQM!HbYxdEuVIeLKHwqJEh:localhost:8800$15700427086bDrAU:localhost:8829JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042708213iMMWv:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042706211NniIl:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042705210LweYn:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704209JQwmT:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704208yLiWU:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042703207yqsGA:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042702206BIYsS:localhost:8800JQQ!HbYxdEuVIeLKHwqJEh:localhost:8800$1570042701205bxgOX:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042699203fHFjU:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042698202juBqr:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697200mrENr:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697199ROUNP:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042696198qbnxj:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042695197vezoL:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042694196OHsWc:localhost:8800JQQ!FbJSiQoZtZkaFwzzQq:localhost:8800$1570042693195hNKnU:localhost:8800JQQ!JPTwFTSDaBXwUTgitj:localhost:8800$1570042691193uVdPZ:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042690191yQfnl:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042689190UkvMv:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042688189axPjv:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687188ddQmS:localhost:8800J QQ !JPTwFTSDaBXwUTgitj:localhost:8800$1570042687187gbArC:localhost:8800JQQ!JPTwFTSDaBXwUTgitj:localhost:8800$1570042686186Qxqmn:localhost:8800JQQ!JPTwFTSDaBXwUTgitj:localhost:8800$1570042685185RhcXe:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042681182ZiRRU:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680181TFyrx:localhost:8800JQQ!RYNJAGdRhIlwRZFbrO:localhost:8800$1570042680180uuIxG:localhost:8800  ;"QQa $1570042682183iUUXF:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2477}{"auth_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}], ["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042681182ZiRRU:localhost:8800", {"sha256": "XcYLzSYQKZS4wCAiDxhHzH5YVLNXCsbyQZhzFA72lYo"}]], "type": "m.room.test", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "event_id": "$1570042682183iUUXF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042682738, "hashes": {"sha256": "FMgxoBn76YoYOE6wehASKTpzhulCYWHbNWZU1jmRfcg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wJzR1wKQYyrYoMhQtq4MYP97uVJtWk244VArziaGlFaaQdes0y58+Maaha6aU8V+vzS9U2/fBzrCAMxEi46GCg"}}, "unsigned": {"age_ts": 1570042682738}}x!QQa $1570042681182ZiRRU:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2476}{"auth_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}], ["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042680181TFyrx:localhost:8800", {"sha256": "Ygt0DXbvyMClndY2nh/hl4RDOL7YI7ovAejlkOW5ZVc"}]], "type": "m.room.history_visibility", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042681182ZiRRU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042681632, "hashes": {"sha256": "CDfBJOX+dsWNFFLL2FYueub98rlH3ii9SqS/JJyi+Eo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QUMPRRkwPniTmX6FDZljI2qfQRPA5sbz/irSXqQrJak4cdfMc4EZeFXiaw7H+IIDkY+sUwv7//Y/DHXA+pkYDQ"}}, "unsigned": {"age_ts": 1570042681632}}g QQaq $1570042680181TFyrx:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "stream_ordering": 2475}{"auth_events": [["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}], ["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}]], "prev_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}]], "type": "m.room.join_rules", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042680181TFyrx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042680991, "hashes": {"sha256": "ohbn4tt2ifjlx6kxgrSKq+8ekg4qw8IJUGisx2GGCqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a6iUEojplt5VJpejY8zcRAmoPyryG7cKWKVEonsTQfFAjHvM7FqPtMGtXNjU2r6dVEYszD2+Xqnzx3opWrKFCw"}}, "unsigned": {"age_ts": 1570042680991}} U p H [ 3 g m F   W / @wO'_7oH!X0\5pHh ?b:'Q!jlGSdNttccYxj'Q!jlGSdNttccYxjfLkwW:localhost:8800y'Q!jGQNGXehugtTvjUGKI:localhost:8800v'Q!hNCwypIzdDZDVmCEfd:localhost:8800p'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800N'Q!jomrpmwwQQtghscizn:localhost:8800M'Q!jomrpmwwQQtghscizn:localhost:8800L'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800$&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 &Q!jYzridjeihmwPBuwLb:localhost:8800 &Q!jYzridjeihmwPBuwLb:localhost:8800 &Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800C&Q!itKDOCtoMkFUETDtle:localhost:8800r&Q!itKDOCtoMkFUETDtle:localhost:8800q'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800 'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88008&Q!fJXiUpbbOlLbHWmPgs:localhost:88007'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:8800:&Q!eySSVuCclRpBDgwKIU:localhost:88009'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88004&Q!edbUkYJIZBNOiTuLJs:localhost:8800>&Q!edbUkYJIZBNOiTuLJs:localhost:8800='Q!eWRdwtyqHvuxZFvhNS:localhost:8800b'Q!eWRdwtyqHvuxZFvhNS:localhost:8800a'Q!eWRdwtyqHvuxZFvhNS:localhost:8800`'Q!ePtMOPPOgOcBIMNZpn:localhost:8800w'Q!ePtMOPPOgOcBIMNZpn:localhost:8800v'Q!eLsrBEnrHolwCNgkFW:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800B'Q!laUExtszUaoCpZoyEq:localhost:8800&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800S'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800u&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800 $&L r  + Q w 0V|5[:`jfQQQ$1570042698202juBqr:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jeQQQ$1570042698202juBqr:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jdQQQ$1570042698202juBqr:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jcQQQ$1570042697200mrENr:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jbQQQ$1570042697200mrENr:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jaQQQ$1570042697200mrENr:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j`QQQ$1570042697199ROUNP:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j_QQQ$1570042697199ROUNP:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j^QQQ$1570042697199ROUNP:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j]QQQ$1570042696198qbnxj:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j\QQQ$1570042696198qbnxj:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800j[QQQ$1570042696198qbnxj:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jZQQQ$1570042695197vezoL:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jYQQQ$1570042695197vezoL:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jXQQQ$1570042694196OHsWc:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jWQQQ$1570042691193uVdPZ:localhost:8800$1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jVQQQ$1570042691193uVdPZ:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jUQQQ$1570042691193uVdPZ:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jTQQQ$1570042690191yQfnl:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jSQQQ$1570042690191yQfnl:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jRQQQ$1570042690191yQfnl:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jQQQQ$1570042689190UkvMv:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jPQQQ$1570042689190UkvMv:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jOQQQ$1570042689190UkvMv:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jNQQQ$1570042688189axPjv:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jMQQQ$1570042688189axPjv:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jLQQQ$1570042688189axPjv:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jKQQQ$1570042687188ddQmS:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jJQQQ$1570042687188ddQmS:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jIQQQ$1570042687188ddQmS:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jHQQQ$1570042687187gbArC:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jGQQQ$1570042687187gbArC:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jFQQQ$1570042686186Qxqmn:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800jEQQQ$1570042681182ZiRRU:localhost:8800$1570042679179ZJCqE:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800jDQQQ$1570042681182ZiRRU:localhost:8800$1570042678178HSUoI:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800jCQQQ$1570042681182ZiRRU:localhost:8800$1570042680180uuIxG:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800 TpH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8h@}dK2('Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 y'Q$1570043593416CouYv:localhost:8800 E'Q$1570043592415heiAH:localhost:8800 D'Q$1570043591414NuXxd:localhost:8800 C'Q$1570043590413Khvee:localhost:8800 B'Q$1570043589412JaDTY:localhost:8800 A'Q$1570043588411PDBWG:localhost:8800 @'Q$1570043585409JoQZw:localhost:8800 >'Q$1570043584408XdGfO:localhost:8800 ='Q$1570043583407USfCf:localhost:8800 <'Q$1570043583406mAAxW:localhost:8800 ;'Q$1570043582405uFoRY:localhost:8800 :'Q$1570043581404AarAd:localhost:8800 9'Q$1570043580403vYYeb:localhost:8800 8'Q$1570043579402KDYtE:localhost:8800 7'Q$1570043578401arzBQ:localhost:8800 6'Q$1570043578400zncwP:localhost:8800 5'Q$1570043575399SiSKs:localhost:8800 4'Q$1570043572397AAGBm:localhost:8800 2'Q$1570043572396lZXIU:localhost:8800 1'Q$1570043571395bDLFD:localhost:8800 0'Q$1570043570394QELCg:localhost:8800 /'Q$1570043569393UscIm:localhost:8800 .'Q$1570043568392ItLhq:localhost:8800 -'Q$1570043567391GonfI:localhost:8800 ,'Q$1570043566390qTwyJ:localhost:8800 +'Q$1570043565389RsxAr:localhost:8800 *'Q$1570043564388ZmOEV:localhost:8800 )'Q$1570043559386ZLBoz:localhost:8800 $'Q$1570043558385Xpkrp:localhost:8800 #'Q$1570043558384QrKsp:localhost:8800 "'Q$1570043557383IxQaJ:localhost:8800 !'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 Td< X 0  h @  x P ( ` 8  d<|T,`8DltpH LtL$\4$ M %]5  u'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043647421dmTZW:localhost:8800 'Q$1570043591414NuXxd:localhost:8800 \'Q$1570043571395bDLFD:localhost:8800 I'Q$1570043557383IxQaJ:localhost:8800 :'Q$1570043556382AgYyj:localhost:8800 9'Q$1570043567391GonfI:localhost:8800 E'Q$1570043566390qTwyJ:localhost:8800 D'Q$1570043565389RsxAr:localhost:8800 C'Q$1570043564388ZmOEV:localhost:8800 B'Q$1570043559386ZLBoz:localhost:8800 ='Q$1570043558385Xpkrp:localhost:8800 <'Q$1570043558384QrKsp:localhost:8800 ;'Q$1570043578401arzBQ:localhost:8800 O'Q$1570043578400zncwP:localhost:8800 N'Q$1570043575399SiSKs:localhost:8800 M'Q$1570043572397AAGBm:localhost:8800 K'Q$1570043572396lZXIU:localhost:8800 J'Q$1570043583407USfCf:localhost:8800 U'Q$1570043583406mAAxW:localhost:8800 T'Q$1570043582405uFoRY:localhost:8800 S'Q$1570043589412JaDTY:localhost:8800 Z'Q$1570043588411PDBWG:localhost:8800 Y'Q$1570043593416CouYv:localhost:8800 ^'Q$1570043592415heiAH:localhost:8800 ]'Q$1570043646420mPrhj:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 'Q$1570043648422SglHQ:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800  u'Q$1570043711438bqOHL:localhost:8800 K'Q$1570043550380LNzMz:localhost:8800 2'Q$1570043549379wtMED:localhost:8800 1'Q$1570043548378IxCfM:localhost:8800 0'Q$1570043547377kWWAW:localhost:8800 /'Q$1570043546376YfkfL:localhost:8800 .'Q$1570043545375TmtMk:localhost:8800 -'Q$1570043542373yGTqH:localhost:8800 +'Q$1570043541372ZeTYJ:localhost:8800 *'Q$1570043540371avDlf:localhost:8800 )'Q$1570043539370xCBJr:localhost:8800 ('Q$1570043538369ozxqx:localhost:8800 ''Q$1570043536368agmuM:localhost:8800 &'Q$1570043536367lvGLr:localhost:8800 %'Q$1570043535366hhblx:localhost:8800 $'Q$1570043534365WVAkx:localhost:8800 #'Q$1570043533364iwqCT:localhost:8800 "'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043646419zIOAX:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 'Q$1570043590413Khvee:localhost:8800 ['Q$1570043585409JoQZw:localhost:8800 W'Q$1570043584408XdGfO:localhost:8800 V'Q$1570043581404AarAd:localhost:8800 R'Q$1570043580403vYYeb:localhost:8800 Q'Q$1570043579402KDYtE:localhost:8800 P'Q$1570043570394QELCg:localhost:8800 H'Q$1570043569393UscIm:localhost:8800 G'Q$1570043568392ItLhq:localhost:8800 F JU$j8p? w E  } K  Q  W % ] +c1i7o= uC{IO\*1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ +1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo j1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc71e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A 1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY J1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkG1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ 11e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ,1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A \1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI*1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o o1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI 1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY r1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM 1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 (1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIJ1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo#1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YD1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE 1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA #1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ*1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkM1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw>1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksV1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 "0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc|1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI (1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 01e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 k1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w 1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA @1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEi1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA@ TpH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8h@}dK2('Q$1570043484336qKOPD:localhost:8800 'Q$1570043483335oDIDb:localhost:8800 'Q$1570043483334ejWtI:localhost:8800 'Q$1570043482333DxDEq:localhost:8800 'Q$1570043481332XroCo:localhost:8800 'Q$1570043481331UNaWT:localhost:8800 'Q$1570043480330seKnV:localhost:8800 'Q$1570043479329kvsXb:localhost:8800 'Q$1570043478328DMkRS:localhost:8800 'Q$1570043477327AgpMM:localhost:8800 'Q$1570043477326hyTqo:localhost:8800 'Q$1570043645418ABZkc:localhost:8800 w'Q$1570043593416CouYv:localhost:8800 D'Q$1570043592415heiAH:localhost:8800 C'Q$1570043591414NuXxd:localhost:8800 B'Q$1570043590413Khvee:localhost:8800 A'Q$1570043589412JaDTY:localhost:8800 @'Q$1570043588411PDBWG:localhost:8800 ?'Q$1570043585409JoQZw:localhost:8800 ='Q$1570043584408XdGfO:localhost:8800 <'Q$1570043583407USfCf:localhost:8800 ;'Q$1570043583406mAAxW:localhost:8800 :'Q$1570043582405uFoRY:localhost:8800 9'Q$1570043581404AarAd:localhost:8800 8'Q$1570043580403vYYeb:localhost:8800 7'Q$1570043579402KDYtE:localhost:8800 6'Q$1570043578401arzBQ:localhost:8800 5'Q$1570043578400zncwP:localhost:8800 4'Q$1570043575399SiSKs:localhost:8800 3'Q$1570043572397AAGBm:localhost:8800 1'Q$1570043572396lZXIU:localhost:8800 0'Q$1570043571395bDLFD:localhost:8800 /'Q$1570043570394QELCg:localhost:8800 .'Q$1570043569393UscIm:localhost:8800 -'Q$1570043568392ItLhq:localhost:8800 ,'Q$1570043567391GonfI:localhost:8800 +'Q$1570043566390qTwyJ:localhost:8800 *'Q$1570043565389RsxAr:localhost:8800 )'Q$1570043564388ZmOEV:localhost:8800 ('Q$1570043559386ZLBoz:localhost:8800 $'Q$1570043558385Xpkrp:localhost:8800 #'Q$1570043558384QrKsp:localhost:8800 "'Q$1570043557383IxQaJ:localhost:8800 !'Q$1570043556382AgYyj:localhost:8800 'Q$1570043550380LNzMz:localhost:8800 'Q$1570043549379wtMED:localhost:8800 'Q$1570043548378IxCfM:localhost:8800 'Q$1570043547377kWWAW:localhost:8800 'Q$1570043546376YfkfL:localhost:8800 'Q$1570043545375TmtMk:localhost:8800 'Q$1570043542373yGTqH:localhost:8800 'Q$1570043541372ZeTYJ:localhost:8800 'Q$1570043540371avDlf:localhost:8800 'Q$1570043539370xCBJr:localhost:8800 'Q$1570043538369ozxqx:localhost:8800 'Q$1570043536368agmuM:localhost:8800 'Q$1570043536367lvGLr:localhost:8800 'Q$1570043535366hhblx:localhost:8800 'Q$1570043534365WVAkx:localhost:8800 'Q$1570043533364iwqCT:localhost:8800 'Q$1570043530362jRUtV:localhost:8800 'Q$1570043529361Oytod:localhost:8800 'Q$1570043528360cetnZ:localhost:8800 'Q$1570043527359ScxWW:localhost:8800 'Q$1570043527358wChxc:localhost:8800 'Q$1570043525357VEfrE:localhost:8800 'Q$1570043524356NlySy:localhost:8800 'Q$1570043523355SbJjm:localhost:8800 'Q$1570043522354IAAap:localhost:8800 'Q$1570043521353geZrN:localhost:8800 'Q$1570043518351Popej:localhost:8800 'Q$1570043517350ncbDd:localhost:8800 'Q$1570043517349uVTMj:localhost:8800 'Q$1570043516348vThZG:localhost:8800 'Q$1570043515347LGRKl:localhost:8800 'Q$1570043506346EEQDj:localhost:8800 'Q$1570043504345DCjlJ:localhost:8800 'Q$1570043503344dJwGF:localhost:8800 'Q$1570043503343snlnn:localhost:8800 'Q$1570043502342mVJmO:localhost:8800 'Q$1570043501341JmcnI:localhost:8800 'Q$1570043486339YbYQQ:localhost:8800 'Q$1570043485338vbLwS:localhost:8800 'Q$1570043484337ylFDA:localhost:8800 m tm%QQa) $1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2480}{"auth_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}]], "prev_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}]], "type": "m.room.member", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-461", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-461:localhost:8800", "event_id": "$1570042686186Qxqmn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042686212, "hashes": {"sha256": "bSlh2KrWfsKaVThSTHfdPkPeX8eC7ZJjRX4BtHMGpcg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l/EMHSeOQ79otANmjxB6XJSZdc2mSbkOkkc8/QWJf0VS8Hdw3YVMRrivirxnGnBST4OR9Eiwevld/+gAd+9DAw"}}, "unsigned": {"age_ts": 1570042686212}}$QQaC $1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2479}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-461:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042685185RhcXe:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042685019, "hashes": {"sha256": "LoRdRmOcosWPMRPh+kHoGfnfjFmdpZoJFsWisrqpvRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6arW8Siv7p71GKUts5bHBkk9tw8qzfR+ZahO0kCrPS+SrsJl0Rw6klCjxYPvsPyKO3noMUFE9F4vKYXLm/eWCg"}}, "unsigned": {"age_ts": 1570042685019}}t#QQg $1570042683184TpChh:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800{"token_id": 472, "txn_id": "468", "stream_ordering": 2478}{"auth_events": [["$1570042680180uuIxG:localhost:8800", {"sha256": "c3QSMsPPUKghqEfO2utWxH7CffqG2YZPZhn0RN9Ml0g"}], ["$1570042678178HSUoI:localhost:8800", {"sha256": "kWbcniWxTknqfA3sf7ak6DaZ4tu01IIWy8LHkp6CN14"}], ["$1570042679179ZJCqE:localhost:8800", {"sha256": "DY5fwevRZWdOJ/jsAPhFeuET21DNRO38WCM5kS0KZcE"}]], "prev_events": [["$1570042682183iUUXF:localhost:8800", {"sha256": "hffTDuxmCvBd/Pn4mhFZkeeMi4fwg15HIKBneqNzLzY"}]], "type": "m.room.message", "room_id": "!RYNJAGdRhIlwRZFbrO:localhost:8800", "sender": "@anon-20191002_181700-460:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "event_id": "$1570042683184TpChh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042683269, "hashes": {"sha256": "LepzwMwFfYCGUQA05Gcdo9Mr7ShiLyUK9pG9hcyOX2c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EwY/vSpFN5782shZD5+ryZM7M1fqVMN4XgVVSV8yp27cADZbdI8U6BoHc8PdsYckEzf9hQjrZRexYau8nrVYDw"}}, "unsigned": {"age_ts": 1570042683269}} J V $ ^ - 2yGr@ { I  P  f 4q@j9N U$ \+c k9 qw1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc0e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA21e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g\1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4w0e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk71e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF00e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v80e$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ1e$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg0e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4Q1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwN1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE0e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU:1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U0e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k(0e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOYH?11e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU?1e$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc81e$XWmgqPaDB1U03xftUNeUNkIr0w_W335UQ69yhpoSHrs0e$XRi01PMMeKNRZKPdFTxxkpqh09D54mVju52domzizH80e$XFqqjQsZjniTrNR16wyCFOB_3yg4SFsmMaLT4UK8QDQ1e$XEruK8YmDS4saJ8T-eoYOVu2CP1lNQEwJ7ZEN6tQyDI1e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo 1e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4~1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgw1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90u1e$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAa1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc[0e$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A-0e$WXIfDJMZEG1xz5YPjW0bz8uKgEG7E2xyYgiKU74s3po!1e$WCHCIjBTaudQvWTnpwC05vo_sZF4EkPfc0HHsAFbpnI0e$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBsO1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM0e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0'1e$VLlZzs1CtKAZoy5PAaxPmzAD4r8D7x8xVsG5kIFdWoI1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E@1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr6201e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk0e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQJ1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZA2ugNOWAqRojZGMUOZnHD1ibnhf8FgEjKcQVHGTMEU0e$YT-V1v59_oGcQUCqmTTWGkX1zg3HJpY3_AfYeD6dRhs0e$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07o\20e$Xz5T-jFTdi6kgQmax_ouMiWDrrAnYfxrp8hGotP067k1e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg0e$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOY%1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcw1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40R0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc 1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAgP h. G  z G o)]*MGQ/Q ]$1570042704209JQwmT:localhost:8800m.room.join_rules!HbYxdEuVIeLKHwqJEh:localhost:8800msmt@anon-20191002_181700-465:localhost:8800FQ9Q ]$1570042704208yLiWU:localhost:8800m.room.canonical_alias!HbYxdEuVIeLKHwqJEh:localhost:8800mpmqK@anon-20191002_181700-465:localhost:8800EQ3Q ]$1570042703207yqsGA:localhost:8800m.room.power_levels!HbYxdEuVIeLKHwqJEh:localhost:8800mnJmn@anon-20191002_181700-465:localhost:8800DQ'Q ]$1570042702206BIYsS:localhost:8800m.room.member!HbYxdEuVIeLKHwqJEh:localhost:8800mkvmk@anon-20191002_181700-465:localhost:8800C Q'Q  ]$1570042701205bxgOX:localhost:8800m.room.create!HbYxdEuVIeLKHwqJEh:localhost:8800mhmh@anon-20191002_181700-465:localhost:8800BQ)Q ] $1570042700204CxVfq:localhost:8800m.room.message!FbJSiQoZtZkaFwzzQq:localhost:8800 mdpmdt@anon-20191002_181700-463:localhost:8800AQ'Q ] $1570042699203fHFjU:localhost:8800m.room.member!FbJSiQoZtZkaFwzzQq:localhost:8800 m_m`)@anon-20191002_181700-464:localhost:8800@Q'Q ]$1570042698202juBqr:localhost:8800m.room.member!FbJSiQoZtZkaFwzzQq:localhost:8800m\m\@anon-20191002_181700-463:localhost:8800?Q#Q ]$1570042698201kDowV:localhost:8800m.room.test!FbJSiQoZtZkaFwzzQq:localhost:8800mZmZ@anon-20191002_181700-463:localhost:8800>Q3Q ]$1570042697200mrENr:localhost:8800m.room.guest_access!FbJSiQoZtZkaFwzzQq:localhost:8800mX8mX@anon-20191002_181700-463:localhost:8800"=Q?Q ]$1570042697199ROUNP:localhost:8800m.room.history_visibility!FbJSiQoZtZkaFwzzQq:localhost:8800mU{mU@anon-20191002_181700-463:localhost:8800<Q/Q ]$1570042696198qbnxj:localhost:8800m.room.join_rules!FbJSiQoZtZkaFwzzQq:localhost:8800mRmS@anon-20191002_181700-463:localhost:8800;Q3Q ]$1570042695197vezoL:localhost:8800m.room.power_levels!FbJSiQoZtZkaFwzzQq:localhost:8800mNmP@anon-20191002_181700-463:localhost:8800:Q'Q ]$1570042694196OHsWc:localhost:8800m.room.member!FbJSiQoZtZkaFwzzQq:localhost:8800mL mLh@anon-20191002_181700-463:localhost:88009 Q'Q  ]$1570042693195hNKnU:localhost:8800m.room.create!FbJSiQoZtZkaFwzzQq:localhost:8800mI;mI@anon-20191002_181700-463:localhost:88008Q)Q ] $1570042692194rxboZ:localhost:8800m.room.message!JPTwFTSDaBXwUTgitj:localhost:8800 mCmC@anon-20191002_181700-461:localhost:88007Q'Q ] $1570042691193uVdPZ:localhost:8800m.room.member!JPTwFTSDaBXwUTgitj:localhost:8800 m?m@B@anon-20191002_181700-462:localhost:88006Q#Q ]$1570042691192yNWVM:localhost:8800m.room.test!JPTwFTSDaBXwUTgitj:localhost:8800m=m=@anon-20191002_181700-461:localhost:88005Q)Q ]$1570042690191yQfnl:localhost:8800m.room.aliases!JPTwFTSDaBXwUTgitj:localhost:8800m;m;m@anon-20191002_181700-461:localhost:8800"4Q?Q ]$1570042689190UkvMv:localhost:8800m.room.history_visibility!JPTwFTSDaBXwUTgitj:localhost:8800m6m8p@anon-20191002_181700-461:localhost:88003Q/Q ]$1570042688189axPjv:localhost:8800m.room.join_rules!JPTwFTSDaBXwUTgitj:localhost:8800m3m4Z@anon-20191002_181700-461:localhost:88002Q9Q ]$1570042687188ddQmS:localhost:8800m.room.canonical_alias!JPTwFTSDaBXwUTgitj:localhost:8800m1Qm1@anon-20191002_181700-461:localhost:88001Q3Q ]$1570042687187gbArC:localhost:8800m.room.power_levels!JPTwFTSDaBXwUTgitj:localhost:8800m.Jm.@anon-20191002_181700-461:localhost:88000Q'Q ]$1570042686186Qxqmn:localhost:8800m.room.member!JPTwFTSDaBXwUTgitj:localhost:8800m+m+@anon-20191002_181700-461:localhost:8800/ Q'Q  ]$1570042685185RhcXe:localhost:8800m.room.create!JPTwFTSDaBXwUTgitj:localhost:8800m&[m&@anon-20191002_181700-461:localhost:8800 <eR ? h , ]  ~ B  7XAQa%q5E U]!9Q Q !hGsPmWXboxZZtOlsxY:localhost:8800publicshared9P Q !dvZnfJonDkxlrrDXUk:localhost:8800publicshared9O Q !vZGjXEXQoCaoUXnkCa:localhost:8800publicsharedAN Q !GBPGYLDkXcAsHgkfuS:localhost:8800publicsharedcan_join9M Q !fdEymmlcUvjgshvVyl:localhost:8800publicshared9L Q !xcdNyJNFEdaBGFycsB:localhost:8800publicshared9K Q !SUDzkfFBgpuCANOxRS:localhost:8800publicshared9J Q !rWmvvGBgmFMdVvcfPk:localhost:8800publicshared9I Q !gXfXRDTXeVvOHQdaaQ:localhost:8800publicshared9H Q !hegUPDZCEEmBhsNJJR:localhost:8800publicshared9G Q !aSKNKSGXPGoIbSrbEN:localhost:8800publicshared9F Q !peJMRJtXBvIiCttNmm:localhost:8800publicshared9E Q !tPkCGJBKmqUXJoRrnY:localhost:8800publicshared9D Q !QnmLrBAxeItdHsaxWf:localhost:8800publicshared9C Q !hFwigdYZkwYNSwelRH:localhost:8800publicshared9B Q !paDmNxsOZIKyApbxXs:localhost:8800publicshared9A Q !OtBUhGeUSiDMWRKIOT:localhost:8800publicshared9@ Q !zHBgbzUZHshNGZvIBS:localhost:8800publicshared9? Q !cidyuyekVzJHHvyomb:localhost:8800publicshared9> Q !pduebXnTyxQWVxEICp:localhost:8800publicshared9= Q !ZvLVbnHjeymRiFIkYr:localhost:8800publicshared9< Q !VUibrTIkcRbfrogbQV:localhost:8800publicshared9; Q !WpThtNEVhrUbUdCdMJ:localhost:8800publicshared9: Q !vRmMcoJDeCupADwqac:localhost:8800publicshared99 Q !fGkUEndqGrieltwbCh:localhost:8800publicshared98 Q !atnRTMliktaVUhMVID:localhost:8800publicshared97 Q !PHkVrXAyfGkFtzSagu:localhost:8800publicshared96 Q !EhFUhsgQbBWmrnGmaz:localhost:8800publicshared`5 Q[ !wBkUBAjOznOyxrLchl:localhost:8800#test-20191002_181700-43:localhost:8800publicshared94 Q !sHRHoXzYrrPSlWBkoh:localhost:8800publicshared93 Q !AoAvmnwMkhYBQsbCsL:localhost:8800publicshared92 Q !IlGJpjzrvvAFuwTAgo:localhost:8800publicsharedA1 Q !CSqENqzAezaZnGktbE:localhost:8800invitesharedcan_joinT0 QC !vBvlJEXUSQKUYmsKcO:localhost:8800#__ANON__-24:localhost:8800publicsharedA/ Q !RDEAXrqXQizuhCUFPq:localhost:8800invitesharedcan_joinT. QC !mogJVPxghalmKbblUq:localhost:8800#__ANON__-23:localhost:8800publicshared9- Q !EhUxBjnSkVXpTrQlrn:localhost:8800publicshared9, Q !laUExtszUaoCpZoyEq:localhost:8800publicshared9+ Q !coGyOAgYnlBZAqznax:localhost:8800publicshared9* Q !ubmTdQFAhrhZkGULDx:localhost:8800publicsharedA) Q !rpVYLTJGcFNdGzFzXj:localhost:8800invitesharedcan_joinT( QC !iKezIvJyjkNqKayFju:localhost:8800#__ANON__-22:localhost:8800publicsharedA' Q !DelfBAGvCrTXgNxmNV:localhost:8800invitesharedcan_joinT& QC !kOmCTyiizHqfCJdhlR:localhost:8800#__ANON__-21:localhost:8800publicshared9% Q !pJUItjYTOUJQFIxyiX:localhost:8800publicshared9$ Q !mvgUHEsfGqDkPQUvfG:localhost:8800publicshared9# Q !WYyiQAVvitxsLZKVCG:localhost:8800publicshared9" Q !KIHYKMzkRDrJwiywwz:localhost:8800publicsharedA! Q !RSLvuCuAqKQQrKCxNq:localhost:8800invitesharedcan_joinT QC !DqxFmsXPclgGqpSwdy:localhost:8800#__ANON__-20:localhost:8800publicsharedA Q !uqIEMXzdeNeXdJmuwh:localhost:8800invitesharedcan_joinT QC !yAzXcNLHMuqFOcOexj:localhost:8800#__ANON__-19:localhost:8800publicshared9 Q !tLkhTnTgDjjAvscRkW:localhost:8800publicshared9 Q !kAxKaIQhXTtGFWSUgr:localhost:8800publicshared9 Q !WhLedNwPGGGTtqeqam:localhost:8800publicshared9 Q !yLccBXjjEasExpsXlt:localhost:8800publicsharedA Q !PcvmCDeVUSyJbXpTig:localhost:8800invitesharedcan_joinT QC !HbYxdEuVIeLKHwqJEh:localhost:8800#__ANON__-18:localhost:8800publicsharedA Q !FbJSiQoZtZkaFwzzQq:localhost:8800invitesharedcan_joinT QC !JPTwFTSDaBXwUTgitj:localhost:8800#__ANON__-17:localhost:8800publicshared $g{T  Y )B}%G`6,Ng_:Q3 Q+!yLccBXjjEasExpsXlt:localhost:8800m.room.power_levels$1570042721227mhNwo:localhost:88009Q']Q*!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800$1570042720226wSTBF:localhost:8800Y8Q' Q)!yLccBXjjEasExpsXlt:localhost:8800m.room.create$1570042719225dSNgP:localhost:88007Q']M(!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$15700427177BOUHn:localhost:88296Q']Q'!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$1570042716223rQrNF:localhost:88005Q']Q&!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$1570042716222nflqt:localhost:8800_4Q3 Q%!PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_access$1570042714220vWWFN:localhost:8800e3Q? Q$!PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility$1570042713219HcQXL:localhost:8800]2Q/ Q#!PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules$1570042712218KQzXb:localhost:8800_1Q3 Q"!PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels$1570042712217nuYrc:localhost:88000Q']Q!!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800$1570042711216KdEEo:localhost:8800Y/Q' Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.create$1570042710215aaRza:localhost:8800.Q']M!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829$15700427086bDrAU:localhost:8829-Q']Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829$1570042708213iMMWv:localhost:8800h,Q))Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800$1570042706211NniIl:localhost:8800e+Q? Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility$1570042705210LweYn:localhost:8800]*Q/ Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules$1570042704209JQwmT:localhost:8800b)Q9 Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias$1570042704208yLiWU:localhost:8800_(Q3 Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levels$1570042703207yqsGA:localhost:8800'Q']Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800$1570042702206BIYsS:localhost:8800Y&Q' Q!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create$1570042701205bxgOX:localhost:8800%Q']Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042699203fHFjU:localhost:8800$Q']Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800$1570042698202juBqr:localhost:8800_#Q3 Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_access$1570042697200mrENr:localhost:8800e"Q? Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility$1570042697199ROUNP:localhost:8800]!Q/ Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules$1570042696198qbnxj:localhost:8800_ Q3 Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels$1570042695197vezoL:localhost:8800Q']Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800$1570042694196OHsWc:localhost:8800YQ' Q!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.create$1570042693195hNKnU:localhost:8800Q']Q!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800$1570042691193uVdPZ:localhost:8800hQ))Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800$1570042690191yQfnl:localhost:8800eQ? Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility$1570042689190UkvMv:localhost:8800]Q/ Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.join_rules$1570042688189axPjv:localhost:8800bQ9 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.canonical_alias$1570042687188ddQmS:localhost:8800_Q3 Q !JPTwFTSDaBXwUTgitj:localhost:8800m.room.power_levels$1570042687187gbArC:localhost:8800Q']Q!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-461:localhost:8800$1570042686186Qxqmn:localhost:8800 $$H l " F j DhBj DhiqQMQ$1570042718224MBWNJ:localhost:8800$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800ipMQQ$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800koQQQ$1570042716222nflqt:localhost:8800$1570042715221Amlxc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800knQQQ$1570042715221Amlxc:localhost:8800$1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kmQQQ$1570042714220vWWFN:localhost:8800$1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800klQQQ$1570042713219HcQXL:localhost:8800$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kkQQQ$1570042712218KQzXb:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kjQQQ$1570042712217nuYrc:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800kiQQQ$1570042711216KdEEo:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800ihQMQ$1570042709214PwhVu:localhost:8800$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800igMQQ$15700427086bDrAU:localhost:8829$1570042707212LkSAM:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kfQQQ$1570042707212LkSAM:localhost:8800$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800keQQQ$1570042706211NniIl:localhost:8800$1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kdQQQ$1570042705210LweYn:localhost:8800$1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kcQQQ$1570042704209JQwmT:localhost:8800$1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kbQQQ$1570042704208yLiWU:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800kaQQQ$1570042703207yqsGA:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800k`QQQ$1570042702206BIYsS:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800k_QQQ$1570042700204CxVfq:localhost:8800$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k^QQQ$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k]QQQ$1570042698202juBqr:localhost:8800$1570042698201kDowV:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k\QQQ$1570042698201kDowV:localhost:8800$1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800k[QQQ$1570042697200mrENr:localhost:8800$1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kZQQQ$1570042697199ROUNP:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kYQQQ$1570042696198qbnxj:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kXQQQ$1570042695197vezoL:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kWQQQ$1570042694196OHsWc:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800kVQQQ$1570042692194rxboZ:localhost:8800$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kUQQQ$1570042691193uVdPZ:localhost:8800$1570042691192yNWVM:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kTQQQ$1570042691192yNWVM:localhost:8800$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kSQQQ$1570042690191yQfnl:localhost:8800$1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kRQQQ$1570042689190UkvMv:localhost:8800$1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kQQQQ$1570042688189axPjv:localhost:8800$1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kPQQQ$1570042687188ddQmS:localhost:8800$1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kOQQQ$1570042687187gbArC:localhost:8800$1570042686186Qxqmn:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800kNQQQ$1570042686186Qxqmn:localhost:8800$1570042685185RhcXe:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800  ;+QQa $1570042691192yNWVM:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2486}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042690191yQfnl:localhost:8800", {"sha256": "/8/XpcjuW97oTY+ZbjwpH1lwWYDVLEtN9JJyAqH8Q8w"}]], "type": "m.room.test", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042691192yNWVM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042691006, "hashes": {"sha256": "2B/8TZf4y8Ocp2eJMdPsPZoR1LKg9EpH/RynVkSQqcc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i8yT3PWPeJIxWBPAEucq+7fsucCOEIEi9PZc9SOLfSBDbwz2f4IyHzUbmvjepFgTWKQqA+jUQ9t5wMDITC3gBg"}}, "unsigned": {"age_ts": 1570042691006}}*QQa1 $1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2485}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042689190UkvMv:localhost:8800", {"sha256": "T6uBq3m8aEMMLGFqHhXQ8HUoee7pHkgsKetmLDK1/kU"}]], "type": "m.room.aliases", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"aliases": ["#__ANON__-17:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042690191yQfnl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042690308, "hashes": {"sha256": "kRMZehCpRj4t6DPz3MuRjzAOTRZLlj2X1tP2x5pue1s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "53dpdWoj/ybu4+RUnL0u/t3nPcgjrexnlFfKXGjcaU2x288/XlEt55FP8fVfWafUxtCAPKXEXNRGhz5kWmA6CQ"}}, "unsigned": {"age_ts": 1570042690308}}x)QQa $1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2484}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042688189axPjv:localhost:8800", {"sha256": "WNs2uANJgC+YcMmz0HnpZjO+9lJR9r3Nj7b0OspiOI4"}]], "type": "m.room.history_visibility", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042689190UkvMv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042689200, "hashes": {"sha256": "uaDXsuEqvq9DmLWv1VRkhRTbkbfv8gjAs8X+sQeXQ8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AyI6q1nHz7YSzrOZxo0EC8xelI+6ZB9QUIILkcqO8Uh2YoJA6aYBsN7MYhF2DUz1vk8g41WRBXjQDxXdiOEkDA"}}, "unsigned": {"age_ts": 1570042689200}} L \ |J* P |V$ j8 $p> J  P  = V D v \ *Cb0 ho7uvd1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg r1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs 1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y -1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzov1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y$1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo41e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA^1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUc1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wm1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wl1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wk1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA%1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g 1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo@1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I&11e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ (1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw -1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg [1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYj0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo?1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI>1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94 1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk !1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo v1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 71e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAZ1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog P1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs L1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc X1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts h1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwX1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02se1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM~1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE,1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIc1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8s  Pg(QQaq $1570042688189axPjv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2483}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042687188ddQmS:localhost:8800", {"sha256": "ca/CMG1Ry6Sxnb6V3DiHli/6llVjVfSBfF+9BWAyl1k"}]], "type": "m.room.join_rules", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042688189axPjv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042688482, "hashes": {"sha256": "uyhMU8MElH6wk5T8d9Vq14D2+rRcnoy7JeStykCgB20"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JDuWT18QJ4dmfn4hJO/WyumwAyUzlYJx+Hg45sm4gJwSpyn+/0EzMjFpk/nFnosQk+u76+NEnIhe8h46ph78Aw"}}, "unsigned": {"age_ts": 1570042688482}}}'QQa $1570042687188ddQmS:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2482}{"auth_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}], ["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}]], "prev_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}]], "type": "m.room.canonical_alias", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"alias": "#__ANON__-17:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042687188ddQmS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042687825, "hashes": {"sha256": "Eg+ttlsW5BaeYaocuJAhBCBvPqqN1xcKc33+JrGFuC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "68M+/dln59B15WYZHuUcywpFfYVVQS8IJzXK5soVzm5NPzx1QCpE5fQAp9sw5RzNPStwY4yHw7U4a2ovdbP7AQ"}}, "unsigned": {"age_ts": 1570042687825}}+&QQay $1570042687187gbArC:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "stream_ordering": 2481}{"auth_events": [["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "type": "m.room.power_levels", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"users": {"@anon-20191002_181700-461:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042687187gbArC:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042687050, "hashes": {"sha256": "f5xP2j5JY9vQB+hted3skPAGqoW2yk8O2VDIsBNEkzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sx2UlvaeOvFsnY9NCP5dHQfAoDzWPXeaTAOLN6Kq9QYe/SRg19qXp9m3W3VucP3Hy2kwX+gkivKItuJ5d3FEBQ"}}, "unsigned": {"age_ts": 1570042687050}} %1U s  O K o  N#eCa?[~QQ/ $1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rules]}QQ3 $1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levels|QQ']$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800W{QQ' $1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.createzQQ']$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829cyQQ? $1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility[xQQ/ $1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules]wQQ3 $1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.power_levelsvQQ']$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800WuQQ' $1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.create}tMQ']$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829sQQ']$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829]rQQ3 $1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_accesscqQQ? $1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility[pQQ/ $1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules]oQQ3 $1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levelsnQQ']$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800WmQQ' $1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.create}lMQ']$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829fkQQ))$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800cjQQ? $1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility[iQQ/ $1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules`hQQ9 $1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias]gQQ3 $1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levelsfQQ']$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800WeQQ' $1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.createdQQ']$1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800cQQ']$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-464:localhost:8800]bQQ3 $1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.guest_accesscaQQ? $1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.history_visibility[`QQ/ $1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.join_rules]_QQ3 $1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.power_levels^QQ']$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.member@anon-20191002_181700-463:localhost:8800W]QQ' $1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800m.room.create\QQ']$1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.member@anon-20191002_181700-462:localhost:8800f[QQ))$1570042690191yQfnl:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.aliaseslocalhost:8800cZQQ? $1570042689190UkvMv:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800m.room.history_visibility |t l d \ T   LD<4,$R|NeeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800 {eeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800 CeeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800 eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800 eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800 $eeQ$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800 MeeQ$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800 qeeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800 eeQ$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA!MWCLSWWGdWcSivNVLI:localhost:8800?eeQ$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo!GiSxJsKZhQVHBkrVPn:localhost:8800?eeQ$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8!bNSXSTadOMhIrYpMzH:localhost:8800ɁeeQ$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM0$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ!msMfSdLIAvklSSAnci:localhost:8800eeQ$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ!AMLmLqizBFklpqKibP:localhost:88000eeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800 ́eeQ$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI!KeBlWUQiLYUoILKkTB:localhost:8800eeQ$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY!djwLhpJUYOKsgQtrky:localhost:8800ׁeeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800 .eeQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800 ځeeQ$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M!aLxrqpqLkbzyIxGgpk:localhost:8800+eeQ$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-0$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs!SrMQpDMFREKRMELwbL:localhost:8800eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800 eeQ$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg!YQATbgbLImCDamiDHC:localhost:8800eeQ$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800 8l D `8L]c!E@anon-20191002_181700-478:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_woVNBLCYVGBZ127.0.0.1Perl + Net::Async::HTTP/0.44mONK]c!E@anon-20191002_181700-477:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAoUXWKBDSXBA127.0.0.1Perl + Net::Async::HTTP/0.44mElJ]c!E@anon-20191002_181700-476:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQoRXRCJNSJQB127.0.0.1Perl + Net::Async::HTTP/0.44m-I]c!E@anon-20191002_181700-475:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElkSnYza3h5R29FcnhHcWQKMDAyZnNpZ25hdHVyZSCPk6G9Ny-h07Plo1ggZU4Jg7yzzWliMa6fleBbNvReJAoJJMOBOLFAH127.0.0.1Perl + Net::Async::HTTP/0.44m1H]c!E@anon-20191002_181700-473:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGwwNSNxVDZLZUVTZkVjeCYKMDAyZnNpZ25hdHVyZSDylCl3HgDl3z2lXXB5JVF-MC1pxR2r1AtdxULYkc3vWwoTSHZTIBDHN127.0.0.1Perl + Net::Async::HTTP/0.44mG]c!E@anon-20191002_181700-471:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICM0fm07TV4xMEpsejVmKjsKMDAyZnNpZ25hdHVyZSB1j5Kcup3-T9r5_PZesjsrM0s9QQsIR3sjoTwnNfmDegoVTNKSDWUTB127.0.0.1Perl + Net::Async::HTTP/0.44meF]c!E@anon-20191002_181700-469:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN0dnJfXlJtVm54ODkqX0MKMDAyZnNpZ25hdHVyZSAUZSnyi9CCmp7-2G1q4vnwnhEQGyC2_v-eanFVFmBxkwoVLYSIOTSXR127.0.0.1Perl + Net::Async::HTTP/0.44m֬ЃE]c!E@anon-20191002_181700-467:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5FdWFOK1lqKmQyYUM7ZisKMDAyZnNpZ25hdHVyZSDfp4EnBf93cb4SxsYPgvB1IM5a_o2LGKQcCbX7Qri3bAoTOUFSHQMBK127.0.0.1Perl + Net::Async::HTTP/0.44m։D]c!E@anon-20191002_181700-465:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZGTTZqTERSNTQ2T2t0bFUKMDAyZnNpZ25hdHVyZSCFOcHr04iOiqUqMl76LoYpmEMjEi7YDA-RpWgQ1w1WlgoJPLWYOLOJM127.0.0.1Perl + Net::Async::HTTP/0.44mhC]c!E@anon-20191002_181700-464:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHl-dy0wWkEmYkE4MS5haVYKMDAyZnNpZ25hdHVyZSAxkMCGUgyzP6BtC0HBBCsd4MdwkNMpdHvlhCpzc2u9BAoVUWRFRZGNE127.0.0.1Perl + Net::Async::HTTP/0.44m\  3.QQaC $1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2489}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-463:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042693195hNKnU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042693947, "hashes": {"sha256": "o+xD/Yd1/DtQ2u4ead+SBsHQcUIFMTVIQX37b3oB3Ns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tuZOjjmsDUVB0DVEYnK3i7xaO3wkJY7q6qaIGRx0jGEbUw5XupQB/I9dkAM5mjrbj+jg/9Dw3mzyqSL0olKADg"}}, "unsigned": {"age_ts": 1570042693947}}u-QQi $1570042692194rxboZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 473, "txn_id": "469", "stream_ordering": 2488}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042686186Qxqmn:localhost:8800", {"sha256": "jA+5vGFljMdHbbu5UmwsOZYFL1BawUT9IMpQyDT+xF8"}]], "prev_events": [["$1570042691193uVdPZ:localhost:8800", {"sha256": "hA59Cu4xGqnXTmuPrWGtn5aRnEgz9IPURmckbrOL5e4"}]], "type": "m.room.message", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-461:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042692194rxboZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042692588, "hashes": {"sha256": "CIHxBvsY3VTphpn1q5UddmRHx2l/4cJJwBdAs0XQFFg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "goTKm4kMpF/dTiZpAekpjbCzzKPrlq+icsIU1qirmMdb3eLEtRelMxb7wJO/BR7y4B1uuWokbo+yJ5Qy43b8Cg"}}, "unsigned": {"age_ts": 1570042692588}}I,QQa5 $1570042691193uVdPZ:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800{"token_id": 474, "stream_ordering": 2487}{"auth_events": [["$1570042687187gbArC:localhost:8800", {"sha256": "74A/IAvjGE2cUQ/ExeVJHsN91SvFZfGFv42f89AVzNk"}], ["$1570042685185RhcXe:localhost:8800", {"sha256": "3YGue0kSPvziuAhVAChDt1KlfZY2BpihBthziXiQP1U"}], ["$1570042688189axPjv:localhost:8800", {"sha256": "WNs2uANJgC+YcMmz0HnpZjO+9lJR9r3Nj7b0OspiOI4"}]], "prev_events": [["$1570042691192yNWVM:localhost:8800", {"sha256": "4mdI83B8CbFgunMVIB/U22BbE3M+ge+SsWe9lx5bzqs"}]], "type": "m.room.member", "room_id": "!JPTwFTSDaBXwUTgitj:localhost:8800", "sender": "@anon-20191002_181700-462:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-462", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-462:localhost:8800", "event_id": "$1570042691193uVdPZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042691511, "hashes": {"sha256": "t1/SFiKRY48I4uJhX4ulWTcTVhOl6S0nGpviq97/Y8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1/zXfS/DczzstypR7NOwqTe3xM/1sgrla52LaA48pzoa1rsL7JzxVD9DksDwxTZo0JXpoHkOWrcNNGrOmq13CA"}}, "unsigned": {"age_ts": 1570042691511}} ! 0 @ P ` p(8HXhxu ]@anon-20191002_181700-510:localhost:8800$2b$04$c7se..RGlAgzqOnbrmGz.O0er0q1NCIu0ZvfPlSOngl4fBdX3oA06]u ]@anon-20191002_181700-509:localhost:8800$2b$04$LkjAo5l88FDmgZPMfgtuHOyEJnywXoiC1MjHTyhcznxnVV1qFQQla]u ]@anon-20191002_181700-508:localhost:8800$2b$04$0ckUMZ2pxzj8A/polsK8fuTpzTIAmzU/dA8t9.nUQU/.qXw65uBKK]u ]@anon-20191002_181700-507:localhost:8800$2b$04$sth1lXEa.3bPGgDFbD3qse1xTD7XhDtmzkwrELrvo1JQubaC0nN3a] u ]@anon-20191002_181700-506:localhost:8800$2b$04$ROqg/WsP37t.gjOpZ7KpV.zrtyWV7UUaWbl2o22dYI2AxbbdVS9aO] u ]@anon-20191002_181700-505:localhost:8800$2b$04$1Twr3lulvO7xLVuCcVbH4OGX.pqi1BdJNzoyFlaPgCIy81wZEQ5U6]u ]@anon-20191002_181700-503:localhost:8800$2b$04$QZS3BlYyTjMbfLjHkjznaeQZVAbGK9X7MwnIXwFhdMBnq3/oeNmQi]u ]@anon-20191002_181700-501:localhost:8800$2b$04$wrK29y5wRmssHTZZYmzTD.KVEPG7nF4wof2oNGevJr1EfbSibSq4m]u ]@anon-20191002_181700-499:localhost:8800$2b$04$ilDqHqlLpHStGmv5B96q/Oj1D8XEweWj4PGFMiCVL7IzApV3gtpdK]u ]@anon-20191002_181700-497:localhost:8800$2b$04$OSolYznNGBrqI6CjIJsXMOdpTvAssr0yOoXqjGJRxhLx85j3XiH3e]u ]@anon-20191002_181700-495:localhost:8800$2b$04$CrJRJn0yAIp2dJTR/98Yo.04yLkzgiCbtPXaWrAZXJ/Fn0lWkbgG.]u ]@anon-20191002_181700-493:localhost:8800$2b$04$vi9T8J9aL0Y89NbhOqfwrens8A0znAeKQ/ZUDcJif5/AFAjEb0NI2]u ]@anon-20191002_181700-494:localhost:8800$2b$04$q9u9sJHdW6/v7MMU0KQHiePU1UCvDrk6ySCrm7BL4wW/4dfpesHsq]u ]@anon-20191002_181700-492:localhost:8800$2b$04$34KEF6/b1PvUgHwHNypeheBeHLOLPfRH6K/vCY9bY.2jQdF.fPXKC]u ]@anon-20191002_181700-491:localhost:8800$2b$04$A2.YvgA6nujEH.VKoGxACuBHrPYFHm9qErqwExOoYrw7sPa48lIwO]u~ ]@anon-20191002_181700-490:localhost:8800$2b$04$jYMTTO7EO.kVkNXIF7/6Zu095Kzl9WJU7dI/iF4vQBTQR8w15CEB6]u} ]@anon-20191002_181700-488:localhost:8800$2b$04$0cQ6COkKlxmr1DCaB8MqoeoGSIeTDTCJtHnsZO8QPtOtmgNfYWb7C]u| ]@anon-20191002_181700-486:localhost:8800$2b$04$cZ7OdnnaHTmZmeP3zWfZZOkosCYdrLtMpi0Jn7kNmdVXgtPxe9hXO]u{ ]@anon-20191002_181700-484:localhost:8800$2b$04$K8GjeT/cK/nEQHkcarAfV.BPgL1DWfuNnwRbkM2vQC8l1JIbFlZxG]uz ]@anon-20191002_181700-482:localhost:8800$2b$04$5e3isNrKgcBKNr12tJ8mdOTkxP3HBHCOh/mT2xuB9MagMmLsdBXVi]uy ]@anon-20191002_181700-480:localhost:8800$2b$04$1Og1rlHkJhWUhgPOewrxROe4NkXOifPr7m1M4/enKmETHtQ5lHXOS]ux ]@anon-20191002_181700-479:localhost:8800$2b$04$iwaQWAm5YxgvKgnMBNPYhO07DeQ/PZ0i2Xa5G.NJVCgcHvt.OQHyi]uw ]@anon-20191002_181700-478:localhost:8800$2b$04$ULjLx0r6tGoDxzg3n1NyJ.PwgodQC4QcT7RJP3busoIRNMPm1eeoe]uv ]@anon-20191002_181700-477:localhost:8800$2b$04$xm70QY/qIZFlEE7cbBK2ieR7qd.rL9Gt6/OnRyZy6ywnoo9Aqiu5y]uu ]@anon-20191002_181700-476:localhost:8800$2b$04$zPwwVgOfmtvRbP2aLhYR5Ony9ops.2We7u9iH1wFkuAOm/5IZ05zq]ut ]@anon-20191002_181700-475:localhost:8800$2b$04$g1GNShsUZpzf/rDkKzPRQe5sT3Q4R6xj2je6T1IqCj5Ve1gv.3eSC]zus ]@anon-20191002_181700-473:localhost:8800$2b$04$aTye./.39wQtlZisTg7OFe5AhN4XRb5wR7Ac9Zqn5IfMqBsfeoodO]qur ]@anon-20191002_181700-471:localhost:8800$2b$04$T6MIWmBySebjuXS86bUtUuDuIxUlZYEOTcmAxRcg6m4EgwzsBYkwG]iuq ]@anon-20191002_181700-469:localhost:8800$2b$04$.22nIk23nSC6JHftAxTNl.68Ft2Lev.rWVDbEZTbHDu0g4iqZS8qe]^up ]@anon-20191002_181700-467:localhost:8800$2b$04$PgUEA3TpG6wejQ0mUPTMP.ZXplT72/CR8.Xtk99rp0cLBAAe3haEK]Vuo ]@anon-20191002_181700-465:localhost:8800$2b$04$g3dj7sJLgmDaiIcg6WHJZulNfXMyP3XqKvdFxTC4ixpgqb2GJ7ZTC]Mun ]@anon-20191002_181700-464:localhost:8800$2b$04$WHKXScdHHPVEtFt9eMfD0uPqDwNYlJbdxvIAep4EhDvu/5ACTWgH6]Eum ]@anon-20191002_181700-463:localhost:8800$2b$04$kKHua0KEz5ccUGMDuz6XPuHdGlfXeNEKLl5yEuLUDip3xFzmzxXyO]E 3f2 K d  } 0 K d }0Kd}0Ib{.GJ(QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042733246cYViL:localhost:8800J'QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042733245smHTZ:localhost:8800J&QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042732244zDmQh:localhost:8800J%QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042731243YuOkC:localhost:8800J$QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042730242eYFxu:localhost:8800J#QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042729241UUSiz:localhost:8800J"QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042729240aBRvS:localhost:8800J!QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042728239BMOBm:localhost:8800J QQ !yLccBXjjEasExpsXlt:localhost:8800$1570042728238dtqIB:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042727237iUlYB:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042727236AOaiE:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042726235bahBo:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042726234miteq:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042725233SjCnf:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042725232UzIHq:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042724231dYSEq:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042723230DFoyn:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042722229ehxUl:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042722228QkARL:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042721227mhNwo:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042720226wSTBF:localhost:8800JQQ !yLccBXjjEasExpsXlt:localhost:8800$1570042719225dSNgP:localhost:8800JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042718224MBWNJ:localhost:8800HQM !PcvmCDeVUSyJbXpTig:localhost:8800$15700427177BOUHn:localhost:8829JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042716222nflqt:localhost:8800JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042715221Amlxc:localhost:8800JQQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042714220vWWFN:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042713219HcQXL:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042712218KQzXb:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042712217nuYrc:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042711216KdEEo:localhost:8800J QQ !PcvmCDeVUSyJbXpTig:localhost:8800$1570042710215aaRza:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042709214PwhVu:localhost:8800HQM !HbYxdEuVIeLKHwqJEh:localhost:8800$15700427086bDrAU:localhost:8829JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042707212LkSAM:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042706211NniIl:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042705210LweYn:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704209JQwmT:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042704208yLiWU:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042703207yqsGA:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042702206BIYsS:localhost:8800JQQ !HbYxdEuVIeLKHwqJEh:localhost:8800$1570042701205bxgOX:localhost:8800J~QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042700204CxVfq:localhost:8800J}QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042699203fHFjU:localhost:8800J|QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042698202juBqr:localhost:8800J{QQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042698201kDowV:localhost:8800JzQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697200mrENr:localhost:8800JyQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042697199ROUNP:localhost:8800JxQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042696198qbnxj:localhost:8800JwQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042695197vezoL:localhost:8800JvQQ !FbJSiQoZtZkaFwzzQq:localhost:8800$1570042694196OHsWc:localhost:8800 _ _g1QQaq $1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2492}{"auth_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}], ["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}]], "prev_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}]], "type": "m.room.join_rules", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042696198qbnxj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042696342, "hashes": {"sha256": "URtYCQrE0PP27sR3nXSz8hWtPruTW0WeOiOCmJc2t68"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+XapIiAQ+jmqImUxn6qZvks4+egaxl9pWFN8V4EuU+PlbVHgp6WlolLMc5FrPQ4Iy58yvoBE4pa3ttHqkh9AA"}}, "unsigned": {"age_ts": 1570042696342}}+0QQay $1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2491}{"auth_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "type": "m.room.power_levels", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"users": {"@anon-20191002_181700-463:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042695197vezoL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042695391, "hashes": {"sha256": "ZncuxEgMuKtcIK6vwFpf0DgMnBi+pUVEY2cB45LRWak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+NbzxSnGCtscEP38z9e92LyECq7YFVyShDsLG1PCQluTO/uUHoN6SDi6PvB+hpYOoqARSPtHcwdB3fM5S3iHBQ"}}, "unsigned": {"age_ts": 1570042695391}}/QQa) $1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2490}{"auth_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}]], "prev_events": [["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}]], "type": "m.room.member", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-463", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-463:localhost:8800", "event_id": "$1570042694196OHsWc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042694667, "hashes": {"sha256": "enN5wl0BORV9wB54MhUM0ovgq7xFl9Ib5YnYkYFF9Go"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x0TKeK6daObU82XelG4bu1t/DvBzurHp0pR2bxTJCRlvnkhShF8cKMJ3ji3QJh0SgUUvxZfnFAx0ib0JArA8Bg"}}, "unsigned": {"age_ts": 1570042694667}}  Z x  % C a<,Jh3Qons]@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-478:localhost:8800 anon-20191002_181700-478nr]@anon-20191002_181700-477:localhost:8800@anon-20191002_181700-477:localhost:8800 anon-20191002_181700-477nq]@anon-20191002_181700-476:localhost:8800@anon-20191002_181700-476:localhost:8800 anon-20191002_181700-476np]@anon-20191002_181700-475:localhost:8800@anon-20191002_181700-475:localhost:8800 anon-20191002_181700-475no]@anon-20191002_181700-474:localhost:8829@anon-20191002_181700-474:localhost:8829 anon-20191002_181700-474nn]@anon-20191002_181700-473:localhost:8800@anon-20191002_181700-473:localhost:8800 anon-20191002_181700-473nm]@anon-20191002_181700-471:localhost:8800@anon-20191002_181700-471:localhost:8800 anon-20191002_181700-471nl]@anon-20191002_181700-469:localhost:8800@anon-20191002_181700-469:localhost:8800 anon-20191002_181700-469ng]@anon-20191002_181700-464:localhost:8800@anon-20191002_181700-464:localhost:8800 anon-20191002_181700-464nf]@anon-20191002_181700-463:localhost:8800@anon-20191002_181700-463:localhost:8800 anon-20191002_181700-463ne]@anon-20191002_181700-462:localhost:8800@anon-20191002_181700-462:localhost:8800 anon-20191002_181700-462nd]@anon-20191002_181700-461:localhost:8800@anon-20191002_181700-461:localhost:8800 anon-20191002_181700-461nc]@anon-20191002_181700-460:localhost:8800@anon-20191002_181700-460:localhost:8800 anon-20191002_181700-460nb]@anon-20191002_181700-459:localhost:8829@anon-20191002_181700-459:localhost:8829 anon-20191002_181700-459na]@anon-20191002_181700-458:localhost:8800@anon-20191002_181700-458:localhost:8800 anon-20191002_181700-458n`]@anon-20191002_181700-456:localhost:8800@anon-20191002_181700-456:localhost:8800 anon-20191002_181700-456n_]@anon-20191002_181700-454:localhost:8800@anon-20191002_181700-454:localhost:8800 anon-20191002_181700-454n^]@anon-20191002_181700-453:localhost:8829@anon-20191002_181700-453:localhost:8829 anon-20191002_181700-453n]]@anon-20191002_181700-452:localhost:8800@anon-20191002_181700-452:localhost:8800 anon-20191002_181700-452n\]@anon-20191002_181700-451:localhost:8829@anon-20191002_181700-451:localhost:8829 anon-20191002_181700-451n[]@anon-20191002_181700-450:localhost:8800@anon-20191002_181700-450:localhost:8800 anon-20191002_181700-450nZ]@anon-20191002_181700-449:localhost:8800@anon-20191002_181700-449:localhost:8800 anon-20191002_181700-449nY]@anon-20191002_181700-448:localhost:8800@anon-20191002_181700-448:localhost:8800 anon-20191002_181700-448nk]@anon-20191002_181700-468:localhost:8829@anon-20191002_181700-468:localhost:8829 anon-20191002_181700-468nj]@anon-20191002_181700-467:localhost:8800@anon-20191002_181700-467:localhost:8800 anon-20191002_181700-467ni]@anon-20191002_181700-466:localhost:8829@anon-20191002_181700-466:localhost:8829 anon-20191002_181700-466nh]@anon-20191002_181700-465:localhost:8800@anon-20191002_181700-465:localhost:8800 anon-20191002_181700-465 X`8pH X 0  h @  x P ( ` 8`8  W > ^,d2j8p> vD|JP1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk D'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 3$21:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU 3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B41e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ+1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ /1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uow1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0'1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA T1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM H1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxwr1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ /1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCob1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY%1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E:1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 (1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY3$19:localhost:42455 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4i3$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk3$15:localhost:42455 s'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 ~'Q$1570043728447IkYro:localhost:8800 }'Q$1570043727446CGYaE:localhost:8800 |'Q$1570043715443SSqOY:localhost:8800 p'Q$1570043713441WJPkP:localhost:8800 n'Q$1570043712440rfNzQ:localhost:8800 m'Q$1570043712439XdJFc:localhost:8800 l'Q$1570043711438bqOHL:localhost:8800 k'Q$1570043683436iTOlZ:localhost:8800 ['Q$1570043680434abJWo:localhost:8800 W'Q$1570043670433bjAzo:localhost:8800 O'Q$1570043668432TfiHj:localhost:8800 N'Q$1570043664431IMLSL:localhost:8800 K'Q$1570043660430kLPpN:localhost:8800 H'Q$1570043656428rZaqi:localhost:8800 A'Q$1570043655427tEtWD:localhost:8800 @'Q$1570043654426seixP:localhost:8800 ?'Q$1570043653425AhyPB:localhost:8800 >'Q$1570043648422SglHQ:localhost:8800 :'Q$1570043647421dmTZW:localhost:8800 9'Q$1570043646420mPrhj:localhost:8800 8'Q$1570043646419zIOAX:localhost:8800 7'Q$1570043593416CouYv:localhost:8800 'Q$1570043592415heiAH:localhost:8800   ;4QQa $1570042698201kDowV:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2495}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042697200mrENr:localhost:8800", {"sha256": "7oHIGdxDb+51k5BP1eTDIIlI7SoWLuHRh37gfdCR6vA"}]], "type": "m.room.test", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042698201kDowV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042698473, "hashes": {"sha256": "/KmU5ubNVQ/pIIPSbVGWrycfZIyQ1fWI3bARW1wMYOY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "J9D93zRjWi8KJ64eSoGfypwzGi6Gqxbj36hLKQDkHfpGV6BvJFa2X7eVpEtFc704nzmWQ63eBvcnn9NaxkISDA"}}, "unsigned": {"age_ts": 1570042698473}}n3QQa $1570042697200mrENr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2494}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042697199ROUNP:localhost:8800", {"sha256": "IiA2Jxf3XyfdsWarxbUkZfcbvm0Ii+T9I+qRfZ2G9mA"}]], "type": "m.room.guest_access", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042697200mrENr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042697784, "hashes": {"sha256": "unfmrje024cU6a+CLkiErssG6i3C2i7CEW2c/8f3JlE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CdgnIb+VXNIrXu070OJSmlF1cMICd7q99HF/mp6s0QfR+gCRonYjKYuZphSSU7FetyDl16IcpSrCacmMhoRwDg"}}, "unsigned": {"age_ts": 1570042697784}}x2QQa $1570042697199ROUNP:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2493}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042696198qbnxj:localhost:8800", {"sha256": "pvTyS/tbvwsE/Kem/X/dqD/R/wb3OQ7qBC+SZ4Mm9XQ"}]], "type": "m.room.history_visibility", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042697199ROUNP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042697083, "hashes": {"sha256": "iAGpt6kN1ch2PG0K5CSmIO19emQITG6KvPAl1D4RGiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "njrNn2pzOgUd/wK9mlsdUENy51W42kRvqolcX4fC4ZbSPN3W3fyf3cZScL5Ucy8u4Qb1Kt+UztqUzlrb9cqxAw"}}, "unsigned": {"age_ts": 1570042697083}}  Ad6QQak $1570042699203fHFjU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 476, "stream_ordering": 2497}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042696198qbnxj:localhost:8800", {"sha256": "pvTyS/tbvwsE/Kem/X/dqD/R/wb3OQ7qBC+SZ4Mm9XQ"}], ["$1570042698202juBqr:localhost:8800", {"sha256": "VotnKf38uuNCutnjGoop13ZKZNNTRZipwGRrilwk+q8"}]], "prev_events": [["$1570042698202juBqr:localhost:8800", {"sha256": "VotnKf38uuNCutnjGoop13ZKZNNTRZipwGRrilwk+q8"}]], "type": "m.room.member", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-464:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-464", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-464:localhost:8800", "event_id": "$1570042699203fHFjU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042699693, "hashes": {"sha256": "5MuxV2T0vC+HEimCSjLwYf+r2u3xV4a/lK3HQpZVkb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/asRlP25CBRTqjKuGuaa0Y1+C4tCPaUfPAT/rN4FnnO0yQeI5m92t2KLEKojOEgZF87kjrLjY/B+cGpbY+odAg"}}, "unsigned": {"age_ts": 1570042699693, "replaces_state": "$1570042698202juBqr:localhost:8800"}};5QQa $1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "stream_ordering": 2496}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042696198qbnxj:localhost:8800", {"sha256": "pvTyS/tbvwsE/Kem/X/dqD/R/wb3OQ7qBC+SZ4Mm9XQ"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042698201kDowV:localhost:8800", {"sha256": "TTE2DAf9nS8K/MHIKXv456yIbvj5udbdcgMd1aV/KSE"}]], "type": "m.room.member", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-464", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-464:localhost:8800", "event_id": "$1570042698202juBqr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042698897, "hashes": {"sha256": "rYm+DpS+WW7PTT1KEtRnH9OIiVX0wJRIqOIXJ6uwl1o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tdVAGK5DWH8kKQzhcvx7+U9OiDt16NbNUHeuq/YC2+DVRmGn5KY+eHqwjRwnovb94ZhajHniGjtaVh2zP4UEBQ"}}, "unsigned": {"age_ts": 1570042698897, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-463:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-463:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-463", "avatar_url": null}, "sender": "@anon-20191002_181700-463:localhost:8800"}]}} $&L r  + Q w 0V|;a@fj QQQ$1570042716222nflqt:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042714220vWWFN:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042714220vWWFN:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042714220vWWFN:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042713219HcQXL:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042713219HcQXL:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042713219HcQXL:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712218KQzXb:localhost:8800$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712218KQzXb:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712218KQzXb:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712217nuYrc:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800jQQQ$1570042712217nuYrc:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j~QQQ$1570042711216KdEEo:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800h}MQQ$15700427086bDrAU:localhost:8829$1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800h|MQQ$15700427086bDrAU:localhost:8829$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800h{MQQ$15700427086bDrAU:localhost:8829$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jzQQQ$1570042706211NniIl:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jyQQQ$1570042706211NniIl:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jxQQQ$1570042706211NniIl:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jwQQQ$1570042705210LweYn:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jvQQQ$1570042705210LweYn:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800juQQQ$1570042705210LweYn:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jtQQQ$1570042704209JQwmT:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jsQQQ$1570042704209JQwmT:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jrQQQ$1570042704209JQwmT:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jqQQQ$1570042704208yLiWU:localhost:8800$1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jpQQQ$1570042704208yLiWU:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800joQQQ$1570042704208yLiWU:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jnQQQ$1570042703207yqsGA:localhost:8800$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jmQQQ$1570042703207yqsGA:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jlQQQ$1570042702206BIYsS:localhost:8800$1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800jkQQQ$1570042699203fHFjU:localhost:8800$1570042698202juBqr:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jjQQQ$1570042699203fHFjU:localhost:8800$1570042696198qbnxj:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jiQQQ$1570042699203fHFjU:localhost:8800$1570042693195hNKnU:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jhQQQ$1570042699203fHFjU:localhost:8800$1570042695197vezoL:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800jgQQQ$1570042698202juBqr:localhost:8800$1570042694196OHsWc:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800 l sl9QQa) $1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2500}{"auth_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}]], "prev_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}]], "type": "m.room.member", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-465", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-465:localhost:8800", "event_id": "$1570042702206BIYsS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042702710, "hashes": {"sha256": "sy+72yCGMURkryjNV6umKz652X3rieBMqCLntFhlr+A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Q7PHNRvQ3nxEZ35fiAN4Y5XAXHtnV275sIo8qj4G4fD1NlUOWc6xNdHUZ1tYvhLCESAoZzq7jx+HT6ADCkTBw"}}, "unsigned": {"age_ts": 1570042702710}}8QQaC $1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2499}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-465:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042701205bxgOX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042701993, "hashes": {"sha256": "d7PLzxx2wkzMFR0JE53yApylh3z+lcH4I5v4Hbl8WP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HTgh8dswIBaADdIBiOvJGA9Ab5dda/BHrANenPeaY1uvxX4SclFuDjnlq8C553iWepuMefxgEPJeLu3MVNXvDw"}}, "unsigned": {"age_ts": 1570042701993}}u7QQi $1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800{"token_id": 475, "txn_id": "470", "stream_ordering": 2498}{"auth_events": [["$1570042695197vezoL:localhost:8800", {"sha256": "S+8jBBtniuiiB9UaKDcIvzA30y5IuymC/I9d84UPQ+I"}], ["$1570042693195hNKnU:localhost:8800", {"sha256": "a/4k9i7wl1dmV63DNbjx44VU4hkHBwC9rgy8xurjMRk"}], ["$1570042694196OHsWc:localhost:8800", {"sha256": "eDoU3LBP7zf6U4MAIMIJe7VU3Y6q2jBaq58f//61Mlg"}]], "prev_events": [["$1570042699203fHFjU:localhost:8800", {"sha256": "D9suE49XYClRZuniY5tY2/T0v8iWVX9sbLZwjlGbXC8"}]], "type": "m.room.message", "room_id": "!FbJSiQoZtZkaFwzzQq:localhost:8800", "sender": "@anon-20191002_181700-463:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042700204CxVfq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042700912, "hashes": {"sha256": "4C8XB4j0S9Lpc4ElDlyZYZQElr6Ce/TauXWTlNaqfyw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqCvLqU8gFqTPReremHvrMZFJ4XgMBNLww0kq1ngIX6dPCzkEMksJ2wAxMdHP6MSQFKt4855HgZT45ItC8s0BA"}}, "unsigned": {"age_ts": 1570042700912}} \ / P i E f!2Q-Mf(V[QQ/ $1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rules]QQ3 $1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levelsQQ']$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800joinWQQ' $1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.createMQ']$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829leavecQQ? $1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibility[QQ/ $1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rules]QQ3 $1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levelsQQ']$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800joinWQQ' $1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.createQQ']$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829invitecQQ? $1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility[QQ/ $1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules]QQ3 $1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.power_levelsQQ']$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800joinWQQ' $1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800m.room.createMQ']$15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829join]QQ3 $1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_accessc QQ? $1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility[ QQ/ $1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules] QQ3 $1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels QQ']$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800joinW QQ' $1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800m.room.createMQ']$15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-466:localhost:8829joinfQQ))$1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.aliaseslocalhost:8800cQQ? $1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.history_visibility[QQ/ $1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.join_rules`QQ9 $1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.canonical_alias]QQ3 $1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.power_levelsQQ']$1570042702206BIYsS:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.member@anon-20191002_181700-465:localhost:8800joinWQQ' $1570042701205bxgOX:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800m.room.create 7Px0Xp(P x 0 X  8 `  @h Hp(8`E]=@anon-20191002_181700-516:localhost:8800anon-20191002_181700-516E]=@anon-20191002_181700-514:localhost:8800anon-20191002_181700-514E]=@anon-20191002_181700-513:localhost:8829anon-20191002_181700-513E]=@anon-20191002_181700-512:localhost:8800anon-20191002_181700-512E]=@anon-20191002_181700-511:localhost:8829anon-20191002_181700-511E]=@anon-20191002_181700-510:localhost:8800anon-20191002_181700-510E]=@anon-20191002_181700-509:localhost:8800anon-20191002_181700-509E ]=@anon-20191002_181700-508:localhost:8800anon-20191002_181700-508E ]=@anon-20191002_181700-507:localhost:8800anon-20191002_181700-507E ]=@anon-20191002_181700-506:localhost:8800anon-20191002_181700-506Eg]=@anon-20191002_181700-464:localhost:8800anon-20191002_181700-464Ef]=@anon-20191002_181700-463:localhost:8800anon-20191002_181700-463Ee]=@anon-20191002_181700-462:localhost:8800anon-20191002_181700-462Ed]=@anon-20191002_181700-461:localhost:8800anon-20191002_181700-461Ec]=@anon-20191002_181700-460:localhost:8800anon-20191002_181700-460Eb]=@anon-20191002_181700-459:localhost:8829anon-20191002_181700-459Ea]=@anon-20191002_181700-458:localhost:8800anon-20191002_181700-458E`]=@anon-20191002_181700-456:localhost:8800anon-20191002_181700-456E_]=@anon-20191002_181700-454:localhost:8800anon-20191002_181700-454E^]=@anon-20191002_181700-453:localhost:8829anon-20191002_181700-453E ]=@anon-20191002_181700-505:localhost:8800anon-20191002_181700-505E ]=@anon-20191002_181700-504:localhost:8829anon-20191002_181700-504E]=@anon-20191002_181700-503:localhost:8800anon-20191002_181700-503E]=@anon-20191002_181700-501:localhost:8800anon-20191002_181700-501E]=@anon-20191002_181700-499:localhost:8800anon-20191002_181700-499E]=@anon-20191002_181700-498:localhost:8829anon-20191002_181700-498E]=@anon-20191002_181700-497:localhost:8800anon-20191002_181700-497E]=@anon-20191002_181700-496:localhost:8829anon-20191002_181700-496E]=@anon-20191002_181700-495:localhost:8800anon-20191002_181700-495E]=@anon-20191002_181700-494:localhost:8800anon-20191002_181700-494E]=@anon-20191002_181700-493:localhost:8800anon-20191002_181700-493E]=@anon-20191002_181700-492:localhost:8800anon-20191002_181700-492E~]=@anon-20191002_181700-491:localhost:8800anon-20191002_181700-491E}]=@anon-20191002_181700-490:localhost:8800anon-20191002_181700-490E|]=@anon-20191002_181700-489:localhost:8829anon-20191002_181700-489E{]=@anon-20191002_181700-488:localhost:8800anon-20191002_181700-488Ez]=@anon-20191002_181700-486:localhost:8800anon-20191002_181700-486Ey]=@anon-20191002_181700-484:localhost:8800anon-20191002_181700-484Ex]=@anon-20191002_181700-483:localhost:8829anon-20191002_181700-483Ew]=@anon-20191002_181700-482:localhost:8800anon-20191002_181700-482Ev]=@anon-20191002_181700-481:localhost:8829anon-20191002_181700-481Eu]=@anon-20191002_181700-480:localhost:8800anon-20191002_181700-480Et]=@anon-20191002_181700-479:localhost:8800anon-20191002_181700-479Es]=@anon-20191002_181700-478:localhost:8800anon-20191002_181700-478Er]=@anon-20191002_181700-477:localhost:8800anon-20191002_181700-477Eq]=@anon-20191002_181700-476:localhost:8800anon-20191002_181700-476Ep]=@anon-20191002_181700-475:localhost:8800anon-20191002_181700-475Eo]=@anon-20191002_181700-474:localhost:8829anon-20191002_181700-474En]=@anon-20191002_181700-473:localhost:8800anon-20191002_181700-473Em]=@anon-20191002_181700-471:localhost:8800anon-20191002_181700-471El]=@anon-20191002_181700-469:localhost:8800anon-20191002_181700-469Ek]=@anon-20191002_181700-468:localhost:8829anon-20191002_181700-468Ej]=@anon-20191002_181700-467:localhost:8800anon-20191002_181700-467Ei]=@anon-20191002_181700-466:localhost:8829anon-20191002_181700-466Eh]=@anon-20191002_181700-465:localhost:8800anon-20191002_181700-465  Pg<QQaq $1570042704209JQwmT:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2503}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042704208yLiWU:localhost:8800", {"sha256": "APCV+MOEnDpYLDB7390R3JBY98SiMAjAD3NIbqXlc6g"}]], "type": "m.room.join_rules", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042704209JQwmT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042704876, "hashes": {"sha256": "NzfiJjztghklfVh6G8Cssao0ir8gV/O7SvMRVDZEPn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r6y/jCu9tiBZRI4NPkWVvAZb8wYrDEo6qV6PrJZXe+KsPCzLUcUMudVuHB+5IoHv9mN6CTtDAyr1XEYwvgkmBA"}}, "unsigned": {"age_ts": 1570042704876}}};QQa $1570042704208yLiWU:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2502}{"auth_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}], ["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}]], "prev_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}]], "type": "m.room.canonical_alias", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"alias": "#__ANON__-18:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042704208yLiWU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042704093, "hashes": {"sha256": "uULJcBhPJVyBrYsxp2l6uLQxlLIsq4szpOiR1SeLtYs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W2af3KzXII9hgr714r5nFMsXPjQQnkjx+gDuMB+X74LDFsa34GLlWk2WpgupgWQCbjePgAHMlIGG6YpoZBCGBg"}}, "unsigned": {"age_ts": 1570042704093}}+:QQay $1570042703207yqsGA:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2501}{"auth_events": [["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "type": "m.room.power_levels", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"users": {"@anon-20191002_181700-465:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042703207yqsGA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042703434, "hashes": {"sha256": "zLb5UhMyiK3MS1vJXD1hhbyrMzs9fysH334JuMsV+5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DHHNCyUjfffIaxn/Z4MjS5wq1ROHR2p9xMkwA4BaWCRGIJcy9gvfBcVdC+soAQkokkKwV3WRPy9z95LNx6QeCg"}}, "unsigned": {"age_ts": 1570042703434}}   4 h 6m^Y]@anon-20191002_181700-4:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSA1R0leN09lUHNecXViaWNjCjAwMmZzaWduYXR1cmUgUyzRSd7NFzp7J8Azw25LM7s779ISYB9hI34rRzZHJTcK127.0.0.1a[a@anon-20191002_181700-48:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMExLdTVtY3hMMGo5d2dJNAowMDJmc2lnbmF0dXJlIOkvze_r9F0C3qDEEZB8FlDTKiRmp-FVbkGhwMBlMlMVCg127.0.0.1%a[a@anon-20191002_181700-49:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTUYwRTlTOipQZThDdU9aMQowMDJmc2lnbmF0dXJlIMxDOMfQi7QpMEic-RaPEMXsMRJB1o80-j34WrEMdLcICg127.0.0.1&d]c@anon-20191002_181700-499:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAo127.0.0.1ڂd]c@anon-20191002_181700-497:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogo127.0.0.1قd]c@anon-20191002_181700-495:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQo127.0.0.1؂d]c@anon-20191002_181700-494:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3Qwo127.0.0.1ׂd]c@anon-20191002_181700-493:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowo127.0.0.1ւd]c@anon-20191002_181700-492:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwo127.0.0.1Ղd]c@anon-20191002_181700-491:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6Rgo127.0.0.1Ԃd]c@anon-20191002_181700-490:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwo127.0.0.1  ;?QQa $1570042707212LkSAM:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2506}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042706211NniIl:localhost:8800", {"sha256": "vA1R8zmy01hLqf2HdQvJmocpFnVGo0vry7VSsopPpso"}]], "type": "m.room.test", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "event_id": "$1570042707212LkSAM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042707450, "hashes": {"sha256": "xfvcrzLQb8PFaQCf0VtNYw0m+gIiDfb5YlTdgUE2S7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7EXzi47WRqV4CON66aOHmpE8KFULW+pV+V7kdnV6gj+/GheQGLHoBcpIzuhzqAmsdqnzvPnMv8sEHHOja/asCQ"}}, "unsigned": {"age_ts": 1570042707450}}>QQa1 $1570042706211NniIl:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2505}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042705210LweYn:localhost:8800", {"sha256": "Qyp2XB17fs7qsTxk+jDu6YpttrQwr/vmehLitOuPkFk"}]], "type": "m.room.aliases", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"aliases": ["#__ANON__-18:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570042706211NniIl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042706802, "hashes": {"sha256": "3HzfRz2ZKpxCUNoPLnzulnHIwGi7o4CSM/fHXv6Zt5c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TeALd6XzsPWtY+GmMefFeuLDIGY4qoT34hbC6QFp7vydBS8P5BBO5ryWne7DsPlpxmXDanksCcS74GT/wkH/Cw"}}, "unsigned": {"age_ts": 1570042706802}}x=QQa $1570042705210LweYn:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "stream_ordering": 2504}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$1570042704209JQwmT:localhost:8800", {"sha256": "Fbu8V5YrDB3Tv8fP5y+GayOSOdZqcj7VsAKvKD6UCDQ"}]], "type": "m.room.history_visibility", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042705210LweYn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042705701, "hashes": {"sha256": "dftmRpl6VCBmuf7tUcr4DtohHSpA7BtSJcXmfxNr6JE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tfEjWLclW+Mw+inGWQuvtoZVDthlNedERT0vJ5gOU0WjKJUecsyEKjssKWv6HupaDo11V06IvUdlOrOPVXlNCA"}}, "unsigned": {"age_ts": 1570042705701}} lNl?@_ _ 2 qDu~wJ  R % q D  c 6 U (Q$2Gf9 X+ ,Q!SnROoiDBa,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 +Q !SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SpXEytywhTbAftyVBr:localhost:880066,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 +Q !SUDzkfFBgpuCANOxRS:localhost:8800  ,Q!SpXEytywhTbAftyVBr:localhost:880099,Q!SpXEytywhTbAftyVBr:localhost:880088,Q!SpXEytywhTbAftyVBr:localhost:880077,Q!SrMQpDMFREKRMELwbL:localhost:8800/,Q!SrMQpDMFREKRMELwbL:localhost:8800.,Q!SrMQpDMFREKRMELwbL:localhost:8800-,Q!SrMQpDMFREKRMELwbL:localhost:8800,,Q!SrMQpDMFREKRMELwbL:localhost:8800+,Q!SrMQpDMFREKRMELwbL:localhost:8800*,Q!SrMQpDMFREKRMELwbL:localhost:8800),Q!SrMQpDMFREKRMELwbL:localhost:8800(,Q!SrMQpDMFREKRMELwbL:localhost:8800',Q!SrMQpDMFREKRMELwbL:localhost:8800&,Q!SrMQpDMFREKRMELwbL:localhost:8800%,Q!SrMQpDMFREKRMELwbL:localhost:8800$,Q!SrMQpDMFREKRMELwbL:localhost:8800#,Q!SrMQpDMFREKRMELwbL:localhost:8800",Q!SrMQpDMFREKRMELwbL:localhost:8800!,Q!SrMQpDMFREKRMELwbL:localhost:8800 +Q !SpXEytywhTbAftyVBr:localhost:880055,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800+Q !SrMQpDMFREKRMELwbL:localhost:8800,Q!SfYtaUhCFosNfHfUVm:localhost:8800nn,Q!SfYtaUhCFosNfHfUVm:localhost:8800mm,Q!SfYtaUhCFosNfHfUVm:localhost:8800kk,Q!SfYtaUhCFosNfHfUVm:localhost:8800ii,Q!SfYtaUhCFosNfHfUVm:localhost:8800gg,Q!SfYtaUhCFosNfHfUVm:localhost:8800ee+Q !SfYtaUhCFosNfHfUVm:localhost:8800cc,Q!SBEprlZiuliFNSfNmz:localhost:8800tt,Q!SBEprlZiuliFNSfNmz:localhost:8800ss,Q!SBEprlZiuliFNSfNmz:localhost:8800rr,Q!SBEprlZiuliFNSfNmz:localhost:8800qq,Q!SBEprlZiuliFNSfNmz:localhost:8800pp ZV+ V}R }R'{PT)}R' +  TX- {T) ' R ) Z /  X - %{P%yN# )*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!OBWkjfrDCNgYFfblia:localhost:8800??*Q!OBWkjfrDCNgYFfblia:localhost:8800>>*Q!NcJYmIbgjsaKJOzBcs:localhost:8800ww*Q!NboFFVLpJHTeuUKCjM:localhost:8800<<*Q!NboFFVLpJHTeuUKCjM:localhost:8800;;*Q!NboFFVLpJHTeuUKCjM:localhost:8800::*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800@@*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800AA*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NajQnqYmGyTjxhFYar:localhost:8829*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NboFFVLpJHTeuUKCjM:localhost:8800>>*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!OMkiVTuuOEeiFAXtUY:localhost:8800SS*Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OJilSqnQvLgoXSqRaW:localhost:8800 *Q!OCEHAjcOXWNyWIESIS:localhost:8800 ` `*Q!OCEHAjcOXWNyWIESIS:localhost:8800 _ _*Q!OCEHAjcOXWNyWIESIS:localhost:8800 ^ ^*Q!OCEHAjcOXWNyWIESIS:localhost:8800 ] ]*Q!OCEHAjcOXWNyWIESIS:localhost:8800 \ \*Q!OCEHAjcOXWNyWIESIS:localhost:8800 [ [*Q!OBWkjfrDCNgYFfblia:localhost:8800BB*Q!NboFFVLpJHTeuUKCjM:localhost:8800==*Q!NboFFVLpJHTeuUKCjM:localhost:880099*Q!NboFFVLpJHTeuUKCjM:localhost:880088*Q!NboFFVLpJHTeuUKCjM:localhost:880077*Q!NcJYmIbgjsaKJOzBcs:localhost:8800xx*Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV*Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU*Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT*Q!NeYaCeYNFATCqlrlGT:localhost:8800oo*Q!NeYaCeYNFATCqlrlGT:localhost:8800nn*Q!NeYaCeYNFATCqlrlGT:localhost:8800mm*Q!NeYaCeYNFATCqlrlGT:localhost:8800ll*Q!NeYaCeYNFATCqlrlGT:localhost:8800kk*Q!NeYaCeYNFATCqlrlGT:localhost:8800jj*Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!OBWkjfrDCNgYFfblia:localhost:8800==*Q!OBWkjfrDCNgYFfblia:localhost:8800<<*Q!OBWkjfrDCNgYFfblia:localhost:8800;;*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800*Q!NrxQuziwSWzsHuXIlG:localhost:8800(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ww(Q!NhWgOTYzEPRwAxRQvS:localhost:8800vv(Q!NhWgOTYzEPRwAxRQvS:localhost:8800uu(Q!NhWgOTYzEPRwAxRQvS:localhost:8800tt(Q!NhWgOTYzEPRwAxRQvS:localhost:8800ss(Q!NhWgOTYzEPRwAxRQvS:localhost:8800rr*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NfaPEGKjnUDUTavzol:localhost:8800*Q!NgkQVVUNzoyCVPtckM:localhost:8800 *Q!NanhNmCnVVpmZRJrTF:localhost:8800 *Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800*Q!NcJYmIbgjsaKJOzBcs:localhost:8800~~*Q!NcJYmIbgjsaKJOzBcs:localhost:8800}}*Q!NcJYmIbgjsaKJOzBcs:localhost:8800||*Q!NcJYmIbgjsaKJOzBcs:localhost:8800{{*Q!NcJYmIbgjsaKJOzBcs:localhost:8800zz*Q!NcJYmIbgjsaKJOzBcs:localhost:8800yy*Q!NfaPEGKjnUDUTavzol:localhost:8800 lNl?@_ _ 2 qDu~wJ  R % q D  c 6 U (Q$2Gf9 X+ ,Q!SnROoiDBa,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SnROoiDBapNNtMmKnT:localhost:8800 +Q !SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SpXEytywhTbAftyVBr:localhost:880066,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SnROoiDBapNNtMmKnT:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 ,Q!SUDzkfFBgpuCANOxRS:localhost:8800 +Q !SUDzkfFBgpuCANOxRS:localhost:8800  ,Q!SpXEytywhTbAftyVBr:localhost:880099,Q!SpXEytywhTbAftyVBr:localhost:880088,Q!SpXEytywhTbAftyVBr:localhost:880077,Q!SrMQpDMFREKRMELwbL:localhost:8800/,Q!SrMQpDMFREKRMELwbL:localhost:8800.,Q!SrMQpDMFREKRMELwbL:localhost:8800-,Q!SrMQpDMFREKRMELwbL:localhost:8800,,Q!SrMQpDMFREKRMELwbL:localhost:8800+,Q!SrMQpDMFREKRMELwbL:localhost:8800*,Q!SrMQpDMFREKRMELwbL:localhost:8800),Q!SrMQpDMFREKRMELwbL:localhost:8800(,Q!SrMQpDMFREKRMELwbL:localhost:8800',Q!SrMQpDMFREKRMELwbL:localhost:8800&,Q!SrMQpDMFREKRMELwbL:localhost:8800%,Q!SrMQpDMFREKRMELwbL:localhost:8800$,Q!SrMQpDMFREKRMELwbL:localhost:8800#,Q!SrMQpDMFREKRMELwbL:localhost:8800",Q!SrMQpDMFREKRMELwbL:localhost:8800!,Q!SrMQpDMFREKRMELwbL:localhost:8800 +Q !SpXEytywhTbAftyVBr:localhost:880055,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800 ,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800,Q!SrMQpDMFREKRMELwbL:localhost:8800+Q !SrMQpDMFREKRMELwbL:localhost:8800,Q!SfYtaUhCFosNfHfUVm:localhost:8800nn,Q!SfYtaUhCFosNfHfUVm:localhost:8800mm,Q!SfYtaUhCFosNfHfUVm:localhost:8800kk,Q!SfYtaUhCFosNfHfUVm:localhost:8800ii,Q!SfYtaUhCFosNfHfUVm:localhost:8800gg,Q!SfYtaUhCFosNfHfUVm:localhost:8800ee+Q !SfYtaUhCFosNfHfUVm:localhost:8800cc,Q!SBEprlZiuliFNSfNmz:localhost:8800tt,Q!SBEprlZiuliFNSfNmz:localhost:8800ss,Q!SBEprlZiuliFNSfNmz:localhost:8800rr,Q!SBEprlZiuliFNSfNmz:localhost:8800qq,Q!SBEprlZiuliFNSfNmz:localhost:8800pp Z' \ " > tAi)[`Q)Q ] $1570042726234miteq:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 mǿm@anon-20191002_181700-469:localhost:8800_Q)Q ] $1570042725233SjCnf:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 mm@anon-20191002_181700-469:localhost:8800^Q)Q ]$1570042725232UzIHq:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800mm@anon-20191002_181700-469:localhost:8800]Q#Q ]$1570042724231dYSEq:localhost:8800m.room.test!yLccBXjjEasExpsXlt:localhost:8800m$m'@anon-20191002_181700-469:localhost:8800\Q'Q ]$1570042723230DFoyn:localhost:8800m.room.member!yLccBXjjEasExpsXlt:localhost:8800m־mֿ@anon-20191002_181700-469:localhost:8800"[Q?Q ]$1570042722229ehxUl:localhost:8800m.room.history_visibility!yLccBXjjEasExpsXlt:localhost:8800mֺMmּ.@anon-20191002_181700-469:localhost:8800ZQ/Q ]$1570042722228QkARL:localhost:8800m.room.join_rules!yLccBXjjEasExpsXlt:localhost:8800mַ_mָ#@anon-20191002_181700-469:localhost:8800YQ3Q ]$1570042721227mhNwo:localhost:8800m.room.power_levels!yLccBXjjEasExpsXlt:localhost:8800mִImִ@anon-20191002_181700-469:localhost:8800XQ'Q ]$1570042720226wSTBF:localhost:8800m.room.member!yLccBXjjEasExpsXlt:localhost:8800mְmֱS@anon-20191002_181700-469:localhost:8800W Q'Q  ]$1570042719225dSNgP:localhost:8800m.room.create!yLccBXjjEasExpsXlt:localhost:8800m֭*m֭@anon-20191002_181700-469:localhost:8800VQ)Q ] $1570042718224MBWNJ:localhost:8800m.room.message!PcvmCDeVUSyJbXpTig:localhost:8800 m֧m֨@anon-20191002_181700-467:localhost:8800UM'Q ] $15700427177BOUHn:localhost:8829m.room.member!PcvmCDeVUSyJbXpTig:localhost:8800 m֢m֣@anon-20191002_181700-468:localhost:8829TQ'Q ]$1570042716222nflqt:localhost:8800m.room.member!PcvmCDeVUSyJbXpTig:localhost:8800m֟m֠@anon-20191002_181700-467:localhost:8800SQ#Q ]$1570042715221Amlxc:localhost:8800m.room.test!PcvmCDeVUSyJbXpTig:localhost:8800m֝m֝@anon-20191002_181700-467:localhost:8800RQ3Q ]$1570042714220vWWFN:localhost:8800m.room.guest_access!PcvmCDeVUSyJbXpTig:localhost:8800m֙~m֙@anon-20191002_181700-467:localhost:8800"QQ?Q ]$1570042713219HcQXL:localhost:8800m.room.history_visibility!PcvmCDeVUSyJbXpTig:localhost:8800m֖~m֖@anon-20191002_181700-467:localhost:8800PQ/Q ]$1570042712218KQzXb:localhost:8800m.room.join_rules!PcvmCDeVUSyJbXpTig:localhost:8800m֓m֔@anon-20191002_181700-467:localhost:8800OQ3Q ]$1570042712217nuYrc:localhost:8800m.room.power_levels!PcvmCDeVUSyJbXpTig:localhost:8800m֑m֑l@anon-20191002_181700-467:localhost:8800NQ'Q ]$1570042711216KdEEo:localhost:8800m.room.member!PcvmCDeVUSyJbXpTig:localhost:8800m֍m֎6@anon-20191002_181700-467:localhost:8800M Q'Q  ]$1570042710215aaRza:localhost:8800m.room.create!PcvmCDeVUSyJbXpTig:localhost:8800m֊m֋@anon-20191002_181700-467:localhost:8800LQ)Q ] $1570042709214PwhVu:localhost:8800m.room.message!HbYxdEuVIeLKHwqJEh:localhost:8800 mքmօ@anon-20191002_181700-465:localhost:8800KM'Q ] $15700427086bDrAU:localhost:8829m.room.member!HbYxdEuVIeLKHwqJEh:localhost:8800 mր8mցE@anon-20191002_181700-466:localhost:8829JQ#Q ]$1570042707212LkSAM:localhost:8800m.room.test!HbYxdEuVIeLKHwqJEh:localhost:8800m}m~@anon-20191002_181700-465:localhost:8800IQ)Q ]$1570042706211NniIl:localhost:8800m.room.aliases!HbYxdEuVIeLKHwqJEh:localhost:8800m{rm{@anon-20191002_181700-465:localhost:8800"HQ?Q ]$1570042705210LweYn:localhost:8800m.room.history_visibility!HbYxdEuVIeLKHwqJEh:localhost:8800mw%mx@anon-20191002_181700-465:localhost:8800 2dw( ; P  c  v ' :M`s$7L_r#:VpeL$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIsha256(mLq%&>.OVurVoeL$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQsha256D]1OXXs$E04/SHdKnOL$157004274411xArrT:localhost:8829sha256X/-or,aˤUےzm[W zKmOL$157004274310jCQYA:localhost:8829sha256`D=nJɾ=۰EJlML$15700427439Hwxyi:localhost:8829sha256+6}V ;]vvFeIE,҂-'LkQL$1570042742256IYRor:localhost:8800sha256XVXDc9wea)LjQL$1570042742255yQzPA:localhost:8800sha256} eLxڃmϕbd\ QLiQL$1570042741254DKIYz:localhost:8800sha2560 x{ ?^r 0$\LhQL$1570042740253GkWgu:localhost:8800sha256,ڰxX}ήcUULgQL$1570042739252bWghU:localhost:8800sha256$y"0|dST"\ YLfQL$1570042738251iukAg:localhost:8800sha256{ XIZԟ<(C"H'.6ʃ3»tLeQL$1570042737250jmxWx:localhost:8800sha256u 6AAIh y2l3&JdML$15700427368TlZQs:localhost:8829sha256Q')R;.m]J@ML$15700427086bDrAU:localhost:8829sha256m:v4W(JHjƧ&L?QL$1570042707212LkSAM:localhost:8800sha256$:;p w&:+)^$ ~P*k"  $BQQaC $1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2509}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-467:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042710215aaRza:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042710735, "hashes": {"sha256": "TJ/EeA/TPI8z0QsuCsCz+J4iD/hUJda6yXDjciSJHns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MG6iiRNdQmvYYAgsVMjr9mLe7yE4kx12YwbFGeHqHXITBKhTkYCtluJBheqMYTldgtVJXK1MnfJ5L63yIKMZCg"}}, "unsigned": {"age_ts": 1570042710735}}sAQQe $1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800{"token_id": 477, "txn_id": "471", "stream_ordering": 2508}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042702206BIYsS:localhost:8800", {"sha256": "2yvdnLgBR+xIn+MelRHFwEZiBbjycvU/rUv+PwPSQUE"}]], "prev_events": [["$15700427086bDrAU:localhost:8829", {"sha256": "FLoIbRL+BzqDdjTk8rUYVyjeE0pIzGqAnManiSaZFdk"}]], "type": "m.room.message", "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-465:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042709214PwhVu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042709188, "hashes": {"sha256": "yHH1bMdxRbG3TKgfzFmUXU9wPGqDKysOZj1oBSl9KEY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wjMdd9toNi8ghBNvMK8PX1MXucqCC7/uvjp3RuekID8tlipvqpRRLLBNVsSAhPLqQa2VJTlyhdJdi64XvR57Dg"}}, "unsigned": {"age_ts": 1570042709188}}a@MQ1 $15700427086bDrAU:localhost:8829!HbYxdEuVIeLKHwqJEh:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2507}{"auth_events": [["$1570042703207yqsGA:localhost:8800", {"sha256": "zNlkrDmVxnJJPj+7M0vIw63JK3Pz2KIBmPnDUx0ya5k"}], ["$1570042701205bxgOX:localhost:8800", {"sha256": "b2cyhWPZ501F7hzAHT5qojj/xLUeiyOPO9s4QVupVYQ"}], ["$1570042704209JQwmT:localhost:8800", {"sha256": "Fbu8V5YrDB3Tv8fP5y+GayOSOdZqcj7VsAKvKD6UCDQ"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-466", "membership": "join"}, "depth": 9, "event_id": "$15700427086bDrAU:localhost:8829", "hashes": {"sha256": "zyZmoDAR/5e4jL4QXXFElQ8syB0b9ytwC/kawXolkFM"}, "origin": "localhost:8829", "origin_server_ts": 1570042708024, "prev_events": [["$1570042707212LkSAM:localhost:8800", {"sha256": "1McknzrrO3ANHneRJjrvKyleJPjMDH6UUAgQFvUqayI"}]], "prev_state": [], "room_id": "!HbYxdEuVIeLKHwqJEh:localhost:8800", "sender": "@anon-20191002_181700-466:localhost:8829", "state_key": "@anon-20191002_181700-466:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/uodVZNrzhnNoxxXRwrLuru2cE3NLlXKkYgrIHpCUz3hSeuIi/qkdHwr3eRqGnhrNfcxPo0ToJlzyURzSglcCg"}, "localhost:8829": {"ed25519:a_UxIG": "xO1RZNAzs7R0pN7dUJK77GALBV/ZUhrA0EkOfZ9mDV2ABm3+B9I2K54yWfCurPa16FMSnUkgkeC7NosywascAQ"}}, "unsigned": {"age": 153}} EUq8 T  p 8 T  p 7 S o6Ro6Rn5Rn5R8e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgsha2568e$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490sha2568e$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCUsha256r8e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4wsha2568e$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KYsha256#8e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGosha2567e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYksha256:8e$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jtssha2568e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAsha256 e8e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqYsha256+8e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt0sha256h8e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0sha256 U8e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGMsha2568e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwsha256 8e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8sha256V7e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68sha256x8e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4sha256 8e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0sha256 8e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKssha256Q8e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgsha25648e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8sha2568e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprksha256p8e$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyYsha2568e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhssha256<8e$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKAsha2568e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9woksha2567e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKwsha256c8e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFksha2568e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQsha2568e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_Sosha2568e$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbwsha2568e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Esha2568e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70sha256 8e$HvRGehoTfaF-A6QLiQhxcEr6zYx5I0vnOSD9IRBvb5wsha2568e$HtnYC51fyy0_dm7K4AtIu2viMLwzRv31GiysRha7cHQsha2568e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60sha2568e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKosha2568e$HqulcYl9D_WCUUjac37irIvtBYN4_ePQ4jrcZ9I-30ssha256*8e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUsha256 "8e$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4sha256 8e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUsha256 8e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcsha256 S8e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQsha2568e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Tssha2568e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW0sha2568e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8sha2568e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gsha256 8e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwsha256J8e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB08sha2568e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIsha256 8e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8sha256 $8e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8sha2567e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcAsha256`8e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYsha256 8e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4sha2568e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAksha256p8e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0sha256K8e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUsha256m8e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT8sha2568e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXAsha256 8e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczMsha2568e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4sha2568e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMsha256O8e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIYsha2568e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4sha256 f8e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Ggsha256 -8e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAsha25608e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqssha2568e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaaksha256 "Y  a  ~  Q n$52IS\d Q' e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.create$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zop Q? e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEohQ/ e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rules$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkjQ3 e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE Q']e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIdQ' e !tLkhTnTgDjjAvscRkW:localhost:8800m.room.create$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ"Q']MQ !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$15700427439Hwxyi:localhost:8829$1570042742255yQzPA:localhost:8800Q']Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$1570042742255yQzPA:localhost:8800fQ? Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibility$1570042741254DKIYz:localhost:8800^Q/ Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rules$1570042740253GkWgu:localhost:8800`Q3 Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levels$1570042739252bWghU:localhost:8800Q']Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800$1570042738251iukAg:localhost:8800Z~Q' Q !kAxKaIQhXTtGFWSUgr:localhost:8800m.room.create$1570042737250jmxWx:localhost:8800"}Q']MQ !WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829$15700427368TlZQs:localhost:8829$1570042734247SfTxR:localhost:8800|Q']Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829$1570042734247SfTxR:localhost:8800f{Q? Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibility$1570042733246cYViL:localhost:8800^zQ/ Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rules$1570042733245smHTZ:localhost:8800`yQ3 Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levels$1570042732244zDmQh:localhost:8800xQ']Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800$1570042731243YuOkC:localhost:8800ZwQ' Q !WhLedNwPGGGTtqeqam:localhost:8800m.room.create$1570042730242eYFxu:localhost:8800vQ']Q !yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829$1570042723230DFoyn:localhost:8800fuQ? Q !yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility$1570042722229ehxUl:localhost:8800^tQ/ Q !yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules$1570042722228QkARL:localhost:8800`sQ3 Q !yLccBXjjEasExpsXlt:localhost:8800m.room.power_levels$1570042721227mhNwo:localhost:8800rQ']Q !yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-469:localhost:8800$1570042720226wSTBF:localhost:8800ZqQ' Q !yLccBXjjEasExpsXlt:localhost:8800m.room.create$1570042719225dSNgP:localhost:8800"pQ']MQ !PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800oQ']Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-468:localhost:8829$1570042716222nflqt:localhost:8800`nQ3 Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.guest_access$1570042714220vWWFN:localhost:8800fmQ? Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.history_visibility$1570042713219HcQXL:localhost:8800^lQ/ Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.join_rules$1570042712218KQzXb:localhost:8800`kQ3 Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.power_levels$1570042712217nuYrc:localhost:8800jQ']Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.member@anon-20191002_181700-467:localhost:8800$1570042711216KdEEo:localhost:8800ZiQ' Q !PcvmCDeVUSyJbXpTig:localhost:8800m.room.create$1570042710215aaRza:localhost:8800 _ _gEQQaq $1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2512}{"auth_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}], ["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}]], "prev_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}]], "type": "m.room.join_rules", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042712218KQzXb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042712976, "hashes": {"sha256": "M4RX4Cgyl/JJAZKJWxU9wbsjstm2OtfJLCyKzEmrC30"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6taRK2pHF/4v1o3LhZxNgq7gwPOKZDlYsaarytLTND9EqF4ZIHi14SDebUsK1XHBLLdGTBblbZgzsGPY+kJUDw"}}, "unsigned": {"age_ts": 1570042712976}}+DQQay $1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2511}{"auth_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "type": "m.room.power_levels", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"users": {"@anon-20191002_181700-467:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042712217nuYrc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042712327, "hashes": {"sha256": "/wCCEl/I45hbyNTUOQJPjOJmwF4wMbSmwSlwl25Hv9U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+JoDX0lTCiwfH0cuik6iVCVEQ3Yr5A5G9qsrXAmv1rzyJa2MUWimHAbVMWVea1OYVA5PS5XFKBSRwS/DMnkJAA"}}, "unsigned": {"age_ts": 1570042712327}}CQQa) $1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2510}{"auth_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}]], "prev_events": [["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}]], "type": "m.room.member", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-467", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-467:localhost:8800", "event_id": "$1570042711216KdEEo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042711502, "hashes": {"sha256": "xNnA+FzfJ+0d1l7w6AEg1WwBJSkmaamxlSYHZNUvuHo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O0AAVa3U3qhUcVKrSSTqjC2DZ4NDp8PVsVRQeNF1hMnVRU1nQMKcJRTySc3kEz3iVjSYzYTNdF1NUuiGHNwbBg"}}, "unsigned": {"age_ts": 1570042711502}} "<m;< *b0h6n P y/ V $ \ NZ(j9sA G t[h6B)n<  a  M1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg 1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg 1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:424551e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYV1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYU1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgYTa1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAP1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAO1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAQ1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8v1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMo1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMn1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMm1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg`1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg_1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg^1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU01e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU/1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU.1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU(1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU'1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU&1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n01e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 d1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8w1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw621e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk[1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPkZ1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikC1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikB1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8UkikA1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g 0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g 0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g 1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A 1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M  ;HQQa $1570042715221Amlxc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2515}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042714220vWWFN:localhost:8800", {"sha256": "eKp+sxuDc19s+zVjApC3DXhyQZIFIibhy+qmwkwK/PA"}]], "type": "m.room.test", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042715221Amlxc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042715637, "hashes": {"sha256": "yfUstNGhjvfdXOb5emyvg6bX/4jl9kl7Y4DqiXo/e6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EqqP80vDFVfn31i9xhAk3puFPx/6K+TNfFpbzo4SqGGNeWVJEvfCYNrYaaEpmjsAQhCbQHvD+sDRp8xR89zeDw"}}, "unsigned": {"age_ts": 1570042715637}}nGQQa $1570042714220vWWFN:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2514}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042713219HcQXL:localhost:8800", {"sha256": "PwUzFYwu7zQf7ZbG7qyf24X7QZ3+HBdX3biKS4l95GU"}]], "type": "m.room.guest_access", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570042714220vWWFN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042714494, "hashes": {"sha256": "M61vrJ59NVgme7K263jCmGZ6hcUdqPGKxfq16xuSpuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HYfDHGPzoNPyT4twR6KsScizUcG+kQB8CcmWgVM08db5IIK925F2jlHh7YNwrSgzKzQdrpQwOWTjhdrWYTNTDA"}}, "unsigned": {"age_ts": 1570042714494}}xFQQa $1570042713219HcQXL:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2513}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042712218KQzXb:localhost:8800", {"sha256": "DuTmsCvTb/FCBjn9+mYjgqOvqRep4heZQ2p+JshqIY4"}]], "type": "m.room.history_visibility", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042713219HcQXL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042713726, "hashes": {"sha256": "TwpkHUbNW4YN9sTksR5+x4vqvTHnOV9deIFaMrZKL2k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tj29SNhoU0oanmEcc5kJkDgTkjr0u5r4Qhlyc+dPwKm5XTK6MwP6WjH/kLV8p+3rHib3F6IdPljP97uOorPBAQ"}}, "unsigned": {"age_ts": 1570042713726}} |JMQ1M $15700427177BOUHn:localhost:8829!PcvmCDeVUSyJbXpTig:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2517}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042712218KQzXb:localhost:8800", {"sha256": "DuTmsCvTb/FCBjn9+mYjgqOvqRep4heZQ2p+JshqIY4"}], ["$1570042716222nflqt:localhost:8800", {"sha256": "c8QYwMgqybDl5/+WUQPU7y/P4tSrzuhtVzv0TDUldlU"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-468", "membership": "join"}, "depth": 9, "event_id": "$15700427177BOUHn:localhost:8829", "hashes": {"sha256": "g9rrPoqJ8T2GluJkP0yaICk0R4/1DCQEp3p/509Z1dE"}, "origin": "localhost:8829", "origin_server_ts": 1570042716898, "prev_events": [["$1570042716222nflqt:localhost:8800", {"sha256": "c8QYwMgqybDl5/+WUQPU7y/P4tSrzuhtVzv0TDUldlU"}]], "prev_state": [], "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-468:localhost:8829", "state_key": "@anon-20191002_181700-468:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCnMyV7O/WXF2oXQuhYgS+aC8nyey7RUqMO6UEbOVMqUWVS2gYwIzEOlID1kyd3RGJsDUBzcmZHonNBfMohECg"}, "localhost:8829": {"ed25519:a_UxIG": "xKvc6gspRmkvzmJg/bpiAtxjKvNq1G2E114vSwbKZzrYAA/QwbwQSW7hiS5jzHN3+0GuAFKshkC519SXk5QkDQ"}}, "unsigned": {"age": 103, "replaces_state": "$1570042716222nflqt:localhost:8800"}};IQQa $1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "stream_ordering": 2516}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042712218KQzXb:localhost:8800", {"sha256": "DuTmsCvTb/FCBjn9+mYjgqOvqRep4heZQ2p+JshqIY4"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$1570042715221Amlxc:localhost:8800", {"sha256": "zFtglByrfEK2ieH//lK1J+1qsmDPyGdVUrPKZf2h7Bc"}]], "type": "m.room.member", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-468", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-468:localhost:8829", "event_id": "$1570042716222nflqt:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042716147, "hashes": {"sha256": "zpyTy7UtoMhRw4N4pb807oN7QTTidxdlx3F7BtHX/Jo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gbY8jVdwOTQbCiW1DZwMcSOrHJiWsvXnFMGEEcTABjf0YHUJJgMayQVCIEWzbyhU//XyRy055bf4wxtVWDyWAg"}, "localhost:8829": {"ed25519:a_UxIG": "kOK6gK/Hh8aTpWXnnkoJjThEs5NSwLBmP0ywWAR07kC/QIES2ecmRbLLY/CUHepbbVyZ9fmRr2YRqn9ZMI3mDA"}}, "unsigned": {"age_ts": 1570042716147, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-467:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-467:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-467", "avatar_url": null}, "sender": "@anon-20191002_181700-467:localhost:8800"}]}} $&N x 3 Y   8^=cBh%h.MQQ$15700427368TlZQs:localhost:8829$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800h-MQQ$15700427368TlZQs:localhost:8829$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800h,MQQ$15700427368TlZQs:localhost:8829$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j+QQQ$1570042734247SfTxR:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j*QQQ$1570042734247SfTxR:localhost:8800$1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j)QQQ$1570042734247SfTxR:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j(QQQ$1570042734247SfTxR:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j'QQQ$1570042733246cYViL:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j&QQQ$1570042733246cYViL:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j%QQQ$1570042733246cYViL:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j$QQQ$1570042733245smHTZ:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j#QQQ$1570042733245smHTZ:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j"QQQ$1570042733245smHTZ:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j!QQQ$1570042732244zDmQh:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800j QQQ$1570042732244zDmQh:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800jQQQ$1570042731243YuOkC:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042723230DFoyn:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722229ehxUl:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722229ehxUl:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722229ehxUl:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722228QkARL:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722228QkARL:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042722228QkARL:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042721227mhNwo:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042721227mhNwo:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800jQQQ$1570042720226wSTBF:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042716222nflqt:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800hMQQ$15700427177BOUHn:localhost:8829$1570042712217nuYrc:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042716222nflqt:localhost:8800$1570042711216KdEEo:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042716222nflqt:localhost:8800$1570042712218KQzXb:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800j QQQ$1570042716222nflqt:localhost:8800$1570042710215aaRza:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800 n unMQQa) $1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2520}{"auth_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}]], "prev_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}]], "type": "m.room.member", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-469", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-469:localhost:8800", "event_id": "$1570042720226wSTBF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042720474, "hashes": {"sha256": "RBHKIpa8N/lWXbudcYdk3mfrrAzCD4ehaqoLoVfHZgY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Um9F/nmTMI5MwxquBchbpVH0XSht4OZjkjHfSb7iZERcD/Yrt63cbU5PJYKRRA4EBb7P7mlDXbPWlZf/vIZ7AQ"}}, "unsigned": {"age_ts": 1570042720474}}LQQaC $1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2519}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-469:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042719225dSNgP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042719530, "hashes": {"sha256": "YQo9X6bXvcsoNjXeQtb4v8ZN4Iqt3rst7wPJUpZweHs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sZVkU6jzfxOGyipmaqS9zUtU5qux0E0IEc8QBwgxnB3NZzFEMMvBbsjCLA7F3FSvC07LYUobsQMUBLHW2t4SDg"}}, "unsigned": {"age_ts": 1570042719530}}sKQQe $1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800{"token_id": 478, "txn_id": "472", "stream_ordering": 2518}{"auth_events": [["$1570042712217nuYrc:localhost:8800", {"sha256": "2zjL7//r59gF40gpBoO84J+wiEFYEB6FexYq88IUlBM"}], ["$1570042710215aaRza:localhost:8800", {"sha256": "KKyCcu9e//BcvruYTKM/xoHCVsBvr+32mdY2QOuQmpI"}], ["$1570042711216KdEEo:localhost:8800", {"sha256": "pWLxRoorZOXFjZLY75nMkhN85tNploAoSO3WRu4bQcQ"}]], "prev_events": [["$15700427177BOUHn:localhost:8829", {"sha256": "y8gzYHQhR5/P0IVeURgitS25wS3tqgk7OylE+hsb6I0"}]], "type": "m.room.message", "room_id": "!PcvmCDeVUSyJbXpTig:localhost:8800", "sender": "@anon-20191002_181700-467:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "event_id": "$1570042718224MBWNJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042718116, "hashes": {"sha256": "5CrFRE1h8JQJf8QYYvr43/YptpDf76pnwb6jrBAw0/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sju/J52NRx+Fsks5HjVS184AuPcEy5ET9QNl8idcBvHpKe2WiT8iDiuxB4k5RGE0RydxvJyEVdB0SC1EPldGCA"}}, "unsigned": {"age_ts": 1570042718116}} i  4 gih51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGprQjVvelV4MHJsY3FEZVAKMDAyZnNpZ25hdHVyZSASgFZTvaV8WTz3brq6dtjn269_naITzO2WniFyHTPOKwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI3eE04V2dGO3ZNWEZ4SGUKMDAyZnNpZ25hdHVyZSA2LizkC6XBazCaTl6vR7goaxDtMZvInxknZS242tsUiQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDllOjRyY1VBRktLNUxrOEgKMDAyZnNpZ25hdHVyZSAXmujRfhaKP29LtLhaxE_p9NRePcZZgXnmxIXSWe0f8wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtZN3VkLVNlSDpGOm1BbEwKMDAyZnNpZ25hdHVyZSAhMgTBXQ2PM86-SgkjTGStkeiP2Y668YwfZw6zRMggago1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDY5QWg5MkdER0ZLJk5HN2sKMDAyZnNpZ25hdHVyZSDtzIXQOP2egjWL53IQVolXdQ0v8CbdV7Q8nitXktlFCwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFLVWljeVBsRFVLMnJRNW4KMDAyZnNpZ25hdHVyZSDlYtDSwLu2VPRcYJdG_zOXCL-MxT1cG89JjEuPn6LYVAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtTQmFTQF9xWmYxSks7SjsKMDAyZnNpZ25hdHVyZSA4-gzkLZKYXLB46g30xrx2tIZN_FnuhyntWJJRBiVylQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHExZU5PS19FMkIzVFpPdFEKMDAyZnNpZ25hdHVyZSBStek3JSCaksAb0dB_1sKoI5iZFC1P6HPKbJIO5dTBRwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5HOHhQIzt2O1F5a1lFeG0KMDAyZnNpZ25hdHVyZSB9mzoUrWiV7YbHZGUtps4J674BoD2T4mRGkqRmPF08jwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFlMeTIuVWdTdTpEKzFmLloKMDAyZnNpZ25hdHVyZSBbuaigjRLKzptcrlgAHJJ5r_SxDpA6cZWDs2LWx5spbwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ-UHZ1OGYrSF5vamxtST0KMDAyZnNpZ25hdHVyZSByyqu_00ypE6JP2NuI0vdtntNW8bwA8GIuJndn3cBSyAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG16flFLZWs6OWc0R3BBSV8KMDAyZnNpZ25hdHVyZSAgaMEcJaTPQ9qGAWOeEiRPsAxBNleBsa8rIkkCAeyZUAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5FOktHcjR2S09rUEUualEKMDAyZnNpZ25hdHVyZSCza2GeuQ9xAKrUCYLZTiDEe4fPNR648urt5giEfixIkAo Ne`8qJ" [e 3 l D  } V .  h @  z R * b:rJ"Z2 jC{T-'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800^&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800:'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800`&Q!itKDOCtoMkFUETDtle:localhost:8800a'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800 'Q!iTQSCiLqRMDtgXtUdC:localhost:8800:'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800('Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:88008'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800('Q!gXfXRDTXeVvOHQdaaQ:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800('Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88004'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:88005'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88002&Q!edbUkYJIZBNOiTuLJs:localhost:88007'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!eLsrBEnrHolwCNgkFW:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:88009'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800w'Q!dvZnfJonDkxlrrDXUk:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:8800%'Q!drnXStKXkNQkouqUAg:localhost:8800*'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800E'Q!dBfASZrfiFeSKTjYJm:localhost:88008'Q!dBfASZrfiFeSKTjYJm:localhost:88007'Q!csWEXfVEVxdviNvgAd:localhost:8800o'Q!csWEXfVEVxdviNvgAd:localhost:8800n'Q!csWEXfVEVxdviNvgAd:localhost:8800m&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800&Q!cSUQGmpIsSCBAVTOHo:localhost:8800/'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cOFSwLSkxZECJMvjjZ:localhost:8800x&Q!cHtqiAyCHEAoBIbCmL:localhost:8800M'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800n #$H l " F j Dh Dh IEeeQ$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800iOOQ$157004274411xArrT:localhost:8829$157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800hOMQ$157004274310jCQYA:localhost:8829$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800iMQQ$15700427439Hwxyi:localhost:8829$1570042742256IYRor:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800kQQQ$1570042742256IYRor:localhost:8800$1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042742255yQzPA:localhost:8800$1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042741254DKIYz:localhost:8800$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042740253GkWgu:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042739252bWghU:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800k QQQ$1570042738251iukAg:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800iMQQ$15700427368TlZQs:localhost:8829$1570042735248drnws:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042735248drnws:localhost:8800$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042734247SfTxR:localhost:8800$1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042733246cYViL:localhost:8800$1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042733245smHTZ:localhost:8800$1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042732244zDmQh:localhost:8800$1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042731243YuOkC:localhost:8800$1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800kQQQ$1570042729241UUSiz:localhost:8800$1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kQQQ$1570042729240aBRvS:localhost:8800$1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kQQQ$1570042728239BMOBm:localhost:8800$1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k~QQQ$1570042728238dtqIB:localhost:8800$1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k}QQQ$1570042727237iUlYB:localhost:8800$1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k|QQQ$1570042727236AOaiE:localhost:8800$1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800k{QQQ$1570042726235bahBo:localhost:8800$1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kzQQQ$1570042726234miteq:localhost:8800$1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kyQQQ$1570042725233SjCnf:localhost:8800$1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kxQQQ$1570042725232UzIHq:localhost:8800$1570042724231dYSEq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kwQQQ$1570042724231dYSEq:localhost:8800$1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kvQQQ$1570042723230DFoyn:localhost:8800$1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800kuQQQ$1570042722229ehxUl:localhost:8800$1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800ktQQQ$1570042722228QkARL:localhost:8800$1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800ksQQQ$1570042721227mhNwo:localhost:8800$1570042720226wSTBF:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800krQQQ$1570042720226wSTBF:localhost:8800$1570042719225dSNgP:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800  fxPQQa $1570042722229ehxUl:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2523}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042722228QkARL:localhost:8800", {"sha256": "hzMNgAcG2hkOREt2ppBtwiXxqO5awf+eMIQ3W7GP9zs"}]], "type": "m.room.history_visibility", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042722229ehxUl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042722893, "hashes": {"sha256": "v2Afq7Ys1geMic2wH4Vw9pXbcVG1DODs974cvemlasA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tVEsJuMSLinCo3uI4RJehPCdTBLn8Y1TeBksm6c7u5CgSZwHg+o9jczvsDxbuN13i1zeZMpT1omHl/kfzCmABQ"}}, "unsigned": {"age_ts": 1570042722893}}gOQQaq $1570042722228QkARL:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2522}{"auth_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}], ["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}]], "prev_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}]], "type": "m.room.join_rules", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042722228QkARL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042722143, "hashes": {"sha256": "P1eJB4CQh/0pFlSmzejSo34N/kJFVIkuG6WaAGrxvio"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RmBzRMxk++NqUOrD1WWSvzT0MwgN3zIOKHOCs4TZNdHDu/LRmfwgF1s6PqDU+33uggsPxILCZQKqK1llsH9MBA"}}, "unsigned": {"age_ts": 1570042722143}}+NQQay $1570042721227mhNwo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2521}{"auth_events": [["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "type": "m.room.power_levels", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"users": {"@anon-20191002_181700-469:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042721227mhNwo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042721353, "hashes": {"sha256": "YD553ul2wVzO70+juh5ZpRnzN5znbT7KjCwjMpTGb3Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kh/ylp6DJ+R8SVnSnqLgpNKx2emATwSJzczSzxUP0VF2YnIUFdDgoQYvAhNX1ZyRSMdXJ8N4VGdSgVes0TxvBg"}}, "unsigned": {"age_ts": 1570042721353}} "8W p  #  ; y $HSx'2 \Q']eM!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Yc[Q' eL!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 ZQ']eK!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888rYQ))eJ!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4oXQ? eI!yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibility$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEgWQ/ eH!yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rules$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uolVQ9 eG!yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_alias$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIiUQ3 eF!yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg TQ']eE!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMcSQ' eD!yAzXcNLHMuqFOcOexj:localhost:8800m.room.create$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZooRQ? eC!tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEogQQ/ eB!tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rules$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkiPQ3 eA!tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE OQ']e@!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIcNQ' e?!tLkhTnTgDjjAvscRkW:localhost:8800m.room.create$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQMQ']M>!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$15700427439Hwxyi:localhost:8829LQ']Q=!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829$1570042743257eDQlw:localhost:8800KQ']QQ' Q/!WhLedNwPGGGTtqeqam:localhost:8800m.room.create$1570042730242eYFxu:localhost:8800=Q']Q.!yLccBXjjEasExpsXlt:localhost:8800m.room.member@anon-20191002_181700-470:localhost:8829$1570042723230DFoyn:localhost:8800e<Q? Q-!yLccBXjjEasExpsXlt:localhost:8800m.room.history_visibility$1570042722229ehxUl:localhost:8800];Q/ Q,!yLccBXjjEasExpsXlt:localhost:8800m.room.join_rules$1570042722228QkARL:localhost:8800 uV@ i T~v4unf ^ a V \??Q$59_msg_d:localhost:42455$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800 eeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800 فeeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800 ӁeeQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY!wIhMbfQzYbJobPdwyi:localhost:8800ReeQ$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU!aBCvSXjtZUEPlPGHvY:localhost:8800peeQ$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo!PQZMTVTeCYqMZwkHvW:localhost:8800peeQ$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4!AMLmLqizBFklpqKibP:localhost:8800-eeQ$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y!NboFFVLpJHTeuUKCjM:localhost:8800eeQ$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg!cSUQGmpIsSCBAVTOHo:localhost:8800KeeQ$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg!sfXbvAcOUJhzGwWEpZ:localhost:8800 *eeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800 _3QQ$56:localhost:42455$1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 _3QQ$55:localhost:42455$1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800 _3QQ$54:localhost:42455$1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 P33Q$53:localhost:42455$52:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 eeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800 6eeQ$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800 P33Q$53:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 _3QQ$53:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 eeQ$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc!MlzmtUYSZOiByAZdKx:localhost:8800P33Q$52:localhost:42455$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 P33Q$52:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800 _3QQ$52:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 _3QQ$50:localhost:42455$1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 ;RQQa $1570042724231dYSEq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2525}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042723230DFoyn:localhost:8800", {"sha256": "yasMUNJCLgoU0UV+ms0Mg8yr21TIKHSWDbsdlUA9Da0"}]], "type": "m.room.test", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042724231dYSEq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042724644, "hashes": {"sha256": "UP7C6RQ6Tuh3tCXh+aFrVzesWbghyC6Otw8wtaqnbvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zUI9vU5dNstv21e/XEgmv5wTk7qipv9Nj72c9wMxzezUBYbgOK781iEg/h4tF2ZORSRTiH2n5sflH1V3yOdvAQ"}}, "unsigned": {"age_ts": 1570042724644}};QQQa $1570042723230DFoyn:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "stream_ordering": 2524}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042722228QkARL:localhost:8800", {"sha256": "hzMNgAcG2hkOREt2ppBtwiXxqO5awf+eMIQ3W7GP9zs"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042722229ehxUl:localhost:8800", {"sha256": "5lV3w3l90NrPAG+aNtswiLH/8dkQEQXp8ajQUOBQEHs"}]], "type": "m.room.member", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-470", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-470:localhost:8829", "event_id": "$1570042723230DFoyn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042723982, "hashes": {"sha256": "FpfnxzNRMqJbPVroDpSN+x5TSKkz76FXFI00FhfRBxY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whwZCS3NY5a/AlOHyGOS/mKkIpHwCtcGfxQUOJMtOk3MLldYjWrU/pQNrnN6Ju320Zo8jo217E0oKYqqQUn9BA"}, "localhost:8829": {"ed25519:a_UxIG": "QJlCCex5SxxK4BDhDg2osKwWjYuNpCUenr3Atpp4jstlVJixFlrcspNy9plIwuXxCJDOjPpoI8qM4XeO3U/tCQ"}}, "unsigned": {"age_ts": 1570042723982, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-469:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-469:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-469", "avatar_url": null}, "sender": "@anon-20191002_181700-469:localhost:8800"}]}} v }vUQQ $1570042726234miteq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "475", "stream_ordering": 2528}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042725233SjCnf:localhost:8800", {"sha256": "4PaOot8BsMON7SQ82iPtjBbUa92Uzi7uP5xAQvo8T0g"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "event_id": "$1570042726234miteq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042726335, "hashes": {"sha256": "PtOq4ihQbVuN2a0Swdwu2i3S4NAgg6fl8llxnUKKlSs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xIRYJacvAVMf7hjlb4ql4H0IA1a9A66Mvzd5hm7ytQOQxYK/b/ZM8nLs6avUojzZJb/OR8apenHOVbwhYkBdBQ"}}, "unsigned": {"age_ts": 1570042726335}}TQQ} $1570042725233SjCnf:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "474", "stream_ordering": 2527}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042725232UzIHq:localhost:8800", {"sha256": "bRsq/AEUBKZLao9wqPFCaej4Q5Uqkowpr2t1Tg8RFvg"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "event_id": "$1570042725233SjCnf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042725857, "hashes": {"sha256": "Rf0Ukm13eE4/6os9hUo8lLspCku2Up3AMd+DqalscEI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9zhci4tpXBiYY/UwwH+5l4vEFWhGaQ6GSTvTq8U12GbllbT1QrD9FOELs5nlGZ1SORxRhJXWhvX+rAcdlNRKDg"}}, "unsigned": {"age_ts": 1570042725857}}SQQ} $1570042725232UzIHq:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "473", "stream_ordering": 2526}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042724231dYSEq:localhost:8800", {"sha256": "i4W8uQV5xaIsZHlEo3U93luZXnmu7LqgA97Mdp5yflQ"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 1", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "event_id": "$1570042725232UzIHq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042725088, "hashes": {"sha256": "X50EJgQ/IosTZnn2EHYzUDfZJyYYPW7W++ZTWCUMYsM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L9bkgHkwFLJN2Vy9Bg89mDZNmqs9wOn9MPwC3wwUG1nRGwpY44Y/Uxkpc7jNANEyWcPBUo6KJ74xUT80RBrnAg"}}, "unsigned": {"age_ts": 1570042725088}} t |t[QQ $1570042729240aBRvS:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "481", "stream_ordering": 2534}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042728239BMOBm:localhost:8800", {"sha256": "zvVejCcSwkV8X5WKkLOFtlOSHH28iCBMGIYohVpeKFU"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 16, "prev_state": [], "event_id": "$1570042729240aBRvS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042729110, "hashes": {"sha256": "MywiMr48z3vPiMiezgKIpWw8KB3Ydg7QTOQc062pJgM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wKbJAOxp7Mbtkw0nYCpIbzhK87ct0p2FfWNd9o2TJu2W3zHbJnaf+1qFIdk4JZtCsLZU+zxAZFUEywcK34VcDw"}}, "unsigned": {"age_ts": 1570042729110}}ZQQ $1570042728239BMOBm:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "480", "stream_ordering": 2533}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042728238dtqIB:localhost:8800", {"sha256": "gs5h9nJNRqJRp/IDU2CSgNEso0n1M2QhOjv0sdED2nw"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 8"}, "depth": 15, "prev_state": [], "event_id": "$1570042728239BMOBm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042728670, "hashes": {"sha256": "YEtgtti0a3w7cMm6eG0Pliyo0x8ngbZnXgk9IpjKNsc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3VR93gHCTOJkwCTD+mQaRdNeXxw/mJDjHgqebVhseEmV+ibOgLRFA3rkrBSQQzZU5ALyyu1vrzlBF2hOgKOJDA"}}, "unsigned": {"age_ts": 1570042728670}}YQQ $1570042728238dtqIB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "479", "stream_ordering": 2532}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042727237iUlYB:localhost:8800", {"sha256": "qsmYukt89Xcx5maTx0Wmk0gAFlUnhd/fULjBuz//OLQ"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "event_id": "$1570042728238dtqIB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042728228, "hashes": {"sha256": "kGTJCNNJ0drm1biHpOBF5SDE4QEtQscsBYf+YztWYyU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oR6noKs0Zgs60dHvuPU5vWnmh1hqReJOKZ0sM1VcYN/2VxGmdbqHfUetJV462oXmetktJBdMp00uLMilbUGAAA"}}, "unsigned": {"age_ts": 1570042728228}} t |tXQQ $1570042727237iUlYB:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "478", "stream_ordering": 2531}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042727236AOaiE:localhost:8800", {"sha256": "ELXefzzWH8HVkrGCSRh8efJDlrJGf7bghx/hX4l82Q0"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 13, "prev_state": [], "event_id": "$1570042727237iUlYB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042727740, "hashes": {"sha256": "/e2O4NzaSeNgBEJ41PbKXJnBUZSI5puoPYKrtvHix1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "09Rw6YCmb3XVN7zfQHcYSwNQWofsWBYCTGH2LdKN1fd6pD8ulqEebIQmV82Q0s4QZeLcXrgX+3OkRCp+QJl+DQ"}}, "unsigned": {"age_ts": 1570042727740}}WQQ $1570042727236AOaiE:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "477", "stream_ordering": 2530}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042726235bahBo:localhost:8800", {"sha256": "3QMiTzGJ2BbfgsAhiqfu9WrQhN0HP8nQavGX00cRi/w"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "event_id": "$1570042727236AOaiE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042727259, "hashes": {"sha256": "fimgT6yyMhSoAX/ODuwmOgCF5NqIf8P12rmsjwbau0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z/mhIXk/STUHzVJBOlQAFQWLld63ldhGqksJWYRh5Z8+zldzX1HwgXGUezYOjdTY9AAbDyG0JyPoIw9VM0ONDQ"}}, "unsigned": {"age_ts": 1570042727259}}VQQ $1570042726235bahBo:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "476", "stream_ordering": 2529}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042726234miteq:localhost:8800", {"sha256": "tIO8chnpA5hpZJFyFgeqrsNyrQtjNpRGA3M821xaGHE"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 11, "prev_state": [], "event_id": "$1570042726235bahBo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042726786, "hashes": {"sha256": "MvY4shaOlh4Sxj5EETW8E4Givz8pEVuR/sOUqW+7r0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GHlvY7AJLlvXpmpU7CxhzozElFHSMzI4Y1fSDVgnOC1wjZSr57ytcG0SIT58wSUb8xrhSV1Y4nxrC9mXv3d3BA"}}, "unsigned": {"age_ts": 1570042726786}} e/ ^ + S{Ks3iyO-Q ] $157004274411xArrT:localhost:8829m.room.redaction!kAxKaIQhXTtGFWSUgr:localhost:8800 m m@anon-20191002_181700-474:localhost:8829xO)Q ] $157004274310jCQYA:localhost:8829m.room.message!kAxKaIQhXTtGFWSUgr:localhost:8800 m m@anon-20191002_181700-474:localhost:8829wM'Q ]$15700427439Hwxyi:localhost:8829m.room.member!kAxKaIQhXTtGFWSUgr:localhost:8800m 5m @anon-20191002_181700-474:localhost:8829vQ#Q ]$1570042742256IYRor:localhost:8800m.room.test!kAxKaIQhXTtGFWSUgr:localhost:8800mDmH@anon-20191002_181700-473:localhost:8800uQ'Q ]$1570042742255yQzPA:localhost:8800m.room.member!kAxKaIQhXTtGFWSUgr:localhost:8800mm-@anon-20191002_181700-473:localhost:8800"tQ?Q ]$1570042741254DKIYz:localhost:8800m.room.history_visibility!kAxKaIQhXTtGFWSUgr:localhost:8800m$m0@anon-20191002_181700-473:localhost:8800sQ/Q ]$1570042740253GkWgu:localhost:8800m.room.join_rules!kAxKaIQhXTtGFWSUgr:localhost:8800mMm@anon-20191002_181700-473:localhost:8800rQ3Q ]$1570042739252bWghU:localhost:8800m.room.power_levels!kAxKaIQhXTtGFWSUgr:localhost:8800mm,@anon-20191002_181700-473:localhost:8800qQ'Q ]$1570042738251iukAg:localhost:8800m.room.member!kAxKaIQhXTtGFWSUgr:localhost:8800mm@anon-20191002_181700-473:localhost:8800p Q'Q  ]$1570042737250jmxWx:localhost:8800m.room.create!kAxKaIQhXTtGFWSUgr:localhost:8800mmw@anon-20191002_181700-473:localhost:8800oM'Q ]$15700427368TlZQs:localhost:8829m.room.member!WhLedNwPGGGTtqeqam:localhost:8800m_mT@anon-20191002_181700-472:localhost:8829nQ#Q ]$1570042735248drnws:localhost:8800m.room.test!WhLedNwPGGGTtqeqam:localhost:8800mmms@anon-20191002_181700-471:localhost:8800mQ'Q ]$1570042734247SfTxR:localhost:8800m.room.member!WhLedNwPGGGTtqeqam:localhost:8800mm[@anon-20191002_181700-471:localhost:8800"lQ?Q ]$1570042733246cYViL:localhost:8800m.room.history_visibility!WhLedNwPGGGTtqeqam:localhost:8800mnm6@anon-20191002_181700-471:localhost:8800kQ/Q ]$1570042733245smHTZ:localhost:8800m.room.join_rules!WhLedNwPGGGTtqeqam:localhost:8800m m}@anon-20191002_181700-471:localhost:8800jQ3Q ]$1570042732244zDmQh:localhost:8800m.room.power_levels!WhLedNwPGGGTtqeqam:localhost:8800mim@anon-20191002_181700-471:localhost:8800iQ'Q ]$1570042731243YuOkC:localhost:8800m.room.member!WhLedNwPGGGTtqeqam:localhost:8800mCmܱ@anon-20191002_181700-471:localhost:8800h Q'Q  ]$1570042730242eYFxu:localhost:8800m.room.create!WhLedNwPGGGTtqeqam:localhost:8800mزm>@anon-20191002_181700-471:localhost:8800gQ)Q ]$1570042729241UUSiz:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800m@m@anon-20191002_181700-469:localhost:8800fQ)Q ]$1570042729240aBRvS:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800mҖmҟ@anon-20191002_181700-469:localhost:8800eQ)Q ]$1570042728239BMOBm:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800mm@anon-20191002_181700-469:localhost:8800dQ)Q ]$1570042728238dtqIB:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800m$m,@anon-20191002_181700-469:localhost:8800cQ)Q ] $1570042727237iUlYB:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 m<m@@anon-20191002_181700-469:localhost:8800bQ)Q ] $1570042727236AOaiE:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 m[mc@anon-20191002_181700-469:localhost:8800aQ)Q ] $1570042726235bahBo:localhost:8800m.room.message!yLccBXjjEasExpsXlt:localhost:8800 mɂmɊ@anon-20191002_181700-469:localhost:8800 ` {g`^QQa) $1570042731243YuOkC:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2537}{"auth_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}]], "prev_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}]], "type": "m.room.member", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-471", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-471:localhost:8800", "event_id": "$1570042731243YuOkC:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042731587, "hashes": {"sha256": "EETWucIGLcP5Si4porKk83i6mbVguKw8EZn2EPBhkVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iNPzKsElIfxXR7yNpGCzp++IfvLIOwXJqE4BYqVase3rrf9zi3lYm7dTggumPW3Y4f9T617r7i/30O20Fk8dCw"}}, "unsigned": {"age_ts": 1570042731587}}]QQaC $1570042730242eYFxu:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2536}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-471:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042730242eYFxu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042730674, "hashes": {"sha256": "1hagvOA7dmHlBL7FRTnygMDd2Zgg7yDIqz6Ca1CWgr4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CUrRZQSHn1lGRN4je2hjx0f1+N6hKDMh9aP+UlRsjsWK25whVoJO+E/gjBEhrffPXuENKJE6/JAVP6Ht4Qn9BA"}}, "unsigned": {"age_ts": 1570042730674}}\QQ $1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800{"token_id": 479, "txn_id": "482", "stream_ordering": 2535}{"auth_events": [["$1570042721227mhNwo:localhost:8800", {"sha256": "gpfyX4dkBp6ZVrxWk6KVE2lKYQ3UW3pH0x/nzJnJoik"}], ["$1570042719225dSNgP:localhost:8800", {"sha256": "2D/CqD39dVmhBuH5VFqOyZgEfKPEtMAgyAsTLTSEXO0"}], ["$1570042720226wSTBF:localhost:8800", {"sha256": "ueYHRSSHzGXWkEr+rmTGo9ZaVV8bEHiHKU2np82R0Ic"}]], "prev_events": [["$1570042729240aBRvS:localhost:8800", {"sha256": "/yOZ1ib0+sJUTpV4BbkVPCuO4ef6MpTVFndmDe9Yvp4"}]], "type": "m.room.message", "room_id": "!yLccBXjjEasExpsXlt:localhost:8800", "sender": "@anon-20191002_181700-469:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "event_id": "$1570042729241UUSiz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042729536, "hashes": {"sha256": "yfbBTHA8PQKmhnV3fz57KSr+ixhbjzU0xGinMwhCbm0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ixUkWdHeEtBCqK6Cy3cvqgjmvNvwtu2oXKXaWP6fhNGEJlfcRP5/IvPmyxqpt5BLoJRokBblQ4AesNz8YUtaDg"}}, "unsigned": {"age_ts": 1570042729536}} =uY Us: X  t ;  Y u <  X t;Wu<Xt;u<X!8]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHT68]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZ8]!@anon-20191002_181700-534:localhost:8800FBPWXONJWM8]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRP8]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS8]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYK6[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBS8]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOL8]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXT58]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPR48]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ38]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAU28]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVE18]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYC08]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHR/8]!@anon-20191002_181700-584:localhost:8800FZKRURXWXE.8]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDME-8]!@anon-20191002_181700-582:localhost:8800WSKNBNWTAR,8]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZ+8]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOP*6[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOW8]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBR)8]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSN(8]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJB'8]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAU&8]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOX%8]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQN$8]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQ#8]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPP"8]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTM!8]!@anon-20191002_181700-570:localhost:8800ECXFORDQSP 8]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQ8]!@anon-20191002_181700-568:localhost:8800IRGUUINXHF8]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNL8]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKF8]!@anon-20191002_181700-565:localhost:8800MSICJQZBGX8]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZ8]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOM8]!@anon-20191002_181700-562:localhost:8800RUCUWRMARX8]!@anon-20191002_181700-561:localhost:8800YQDTZKECLG8]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEE6[!@anon-20191002_181700-55:localhost:8800GJICSOZSSMV8]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLS8]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDA8]!@anon-20191002_181700-556:localhost:8800TMQBHREBEO8]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ8]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXS8]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBU8]!@anon-20191002_181700-551:localhost:8800PDLFVATDIV8]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVR6[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGU8]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO 8]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCC 8]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOV 8]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSK 8]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ 6[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNT8]!@anon-20191002_181700-539:localhost:8800OLXWQXBCRO8]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ8]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ8]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ Cf R v XD , & fMT` "=j/ o   _ Z(?9 2 j9q w1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY d21e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew0e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgy1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4y1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza01e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64G1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI01e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwo1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrI0e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMe1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE70e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL8s0e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM40e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8{1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO40e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg11e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao]1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY01e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4 1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfIg0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs1e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7881e$s54oriXYwROhKqxOyxI0M543xzfA9fBNckOblAxICxA1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc}1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok 21e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ1e$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH41e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQn 0e$sOyvpic5Jw9f_lW_fadwPaJ-vT5QdASdyOMKN0xaluU1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw~1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Ec1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4T1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQN1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kB1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U^1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg 1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs_1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIP21e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00J1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc.1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAn1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU81e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo|1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUV0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E  fxaQQa $1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2540}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042733245smHTZ:localhost:8800", {"sha256": "hAa3eSsjXHSEZOOBLw6WFXYcONkPuzLE1lDw+0Fqp0M"}]], "type": "m.room.history_visibility", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042733246cYViL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042733678, "hashes": {"sha256": "EWzG5QktwWlv6faESXveWD5stGJOiXUUIDwdUtuNqWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e55IEC4z8HgQ8HjEkRXdXoLLc7HhWDl870pMPQXJeIdZggNTMydgoEu2miPa9msJXh1lDtXHXRZ/8FWMSCW5Cg"}}, "unsigned": {"age_ts": 1570042733678}}g`QQaq $1570042733245smHTZ:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2539}{"auth_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}], ["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}]], "prev_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}]], "type": "m.room.join_rules", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042733245smHTZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042733069, "hashes": {"sha256": "VmhwNwA4i5+U5a2WrcLt6Q2J+s28cxQOoQkheCWntnw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tw4pd6ExBNmdOtFreqFEIUREkkkH8vXakgHncinrWd+5gQMyUyObLYwH42Gq4OutC6sWtwbqdh2KgKdt79x1Cg"}}, "unsigned": {"age_ts": 1570042733069}}+_QQay $1570042732244zDmQh:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2538}{"auth_events": [["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "type": "m.room.power_levels", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"users": {"@anon-20191002_181700-471:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042732244zDmQh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042732393, "hashes": {"sha256": "ohEK/JNWxVYIKRhkxmrbGDasBvcuavISR1kClmElmnA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f6iIIp/RwWKFXrcw+s3ybTpO9yI/8vXgEvX0IA1z5EqfLcaeKRP1iji4hUXjLsqYn2+eD1J8E6jmRRwpvSEIAw"}}, "unsigned": {"age_ts": 1570042732393}} "> \  2 ; cr3P_h& g eQ3 $LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels eQ']$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800aeQ' $pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800m.room.create eQ']$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800 eQ']$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800geQ3 $XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_accessmeQ? $mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibilityeeQ/ $QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rulesgeQ3 $ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels eQ']$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800aeQ' $WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create eQ']$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800peQ))$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800meQ? $7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibilityeeQ/ $cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rulesjeQ9 $A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_aliasgeQ3 $v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels eQ']$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800aeQ' $KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.createm eQ? $YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibilitye eQ/ $Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rulesg eQ3 $0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels eQ']$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800a eQ' $7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800m.room.create}MQ']$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829QQ']$1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829cQQ? $1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibility[QQ/ $1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.join_rules]QQ3 $1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.power_levelsQQ']$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-473:localhost:8800WQQ' $1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.create}MQ']$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829QQ']$1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829cQQ? $1570042733246cYViL:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibility /f4 M i  o  j  e ` [VQLGB=TWQe !DqxFmsXPclgGqpSwdy:localhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwTVQe !DqxFmsXPclgGqpSwdy:localhost:8800$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8TUQe !DqxFmsXPclgGqpSwdy:localhost:8800$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyITTQe !DqxFmsXPclgGqpSwdy:localhost:8800$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YTSQe !DqxFmsXPclgGqpSwdy:localhost:8800$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50TRQe !DqxFmsXPclgGqpSwdy:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4TQQe !DqxFmsXPclgGqpSwdy:localhost:8800$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sTPQe !uqIEMXzdeNeXdJmuwh:localhost:8800$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8TOQe !uqIEMXzdeNeXdJmuwh:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wTNQe !uqIEMXzdeNeXdJmuwh:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcTMQe !uqIEMXzdeNeXdJmuwh:localhost:8800$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgTLQe !uqIEMXzdeNeXdJmuwh:localhost:8800$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8TKQe !uqIEMXzdeNeXdJmuwh:localhost:8800$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkTJQe !uqIEMXzdeNeXdJmuwh:localhost:8800$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYTIQe !uqIEMXzdeNeXdJmuwh:localhost:8800$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0THQe !uqIEMXzdeNeXdJmuwh:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YTGQe !uqIEMXzdeNeXdJmuwh:localhost:8800$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0TFQe !yAzXcNLHMuqFOcOexj:localhost:8800$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0VoTEQe !yAzXcNLHMuqFOcOexj:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888TDQe !yAzXcNLHMuqFOcOexj:localhost:8800$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8TCQe !yAzXcNLHMuqFOcOexj:localhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4TBQe !yAzXcNLHMuqFOcOexj:localhost:8800$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXETAQe !yAzXcNLHMuqFOcOexj:localhost:8800$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uoT@Qe !yAzXcNLHMuqFOcOexj:localhost:8800$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIT?Qe !yAzXcNLHMuqFOcOexj:localhost:8800$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgT>Qe !yAzXcNLHMuqFOcOexj:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMT=Qe !yAzXcNLHMuqFOcOexj:localhost:8800$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZoT<Qe !tLkhTnTgDjjAvscRkW:localhost:8800$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7FkT;Qe !tLkhTnTgDjjAvscRkW:localhost:8800$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUT:Qe !tLkhTnTgDjjAvscRkW:localhost:8800$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEoT9Qe !tLkhTnTgDjjAvscRkW:localhost:8800$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkT8Qe !tLkhTnTgDjjAvscRkW:localhost:8800$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBET7Qe !tLkhTnTgDjjAvscRkW:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIT6Qe !tLkhTnTgDjjAvscRkW:localhost:8800$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQI5QO !kAxKaIQhXTtGFWSUgr:localhost:8800$157004274411xArrT:localhost:8829I4QO !kAxKaIQhXTtGFWSUgr:localhost:8800$157004274310jCQYA:localhost:8829H3QM !kAxKaIQhXTtGFWSUgr:localhost:8800$15700427439Hwxyi:localhost:8829J2QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042742256IYRor:localhost:8800J1QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042742255yQzPA:localhost:8800J0QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042741254DKIYz:localhost:8800J/QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042740253GkWgu:localhost:8800J.QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042739252bWghU:localhost:8800J-QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042738251iukAg:localhost:8800J,QQ !kAxKaIQhXTtGFWSUgr:localhost:8800$1570042737250jmxWx:localhost:8800H+QM !WhLedNwPGGGTtqeqam:localhost:8800$15700427368TlZQs:localhost:8829J*QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042735248drnws:localhost:8800J)QQ !WhLedNwPGGGTtqeqam:localhost:8800$1570042734247SfTxR:localhost:8800 ;cQQa $1570042735248drnws:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2542}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042734247SfTxR:localhost:8800", {"sha256": "RLL+rHSdxGCpKbZookijGOBi6+mlUpmhVoieMTxOjI4"}]], "type": "m.room.test", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042735248drnws:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042735725, "hashes": {"sha256": "IOcrVxPLw4LZf5/jJnTTa1aft2FH+mawK5+gIujlrdc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NdVt6gU/OeuzU2A8baQ121/CW2jgK3ggLPMs+7u8KyM+T2Rl+vcn3z7Eb/AKFIR/WrY/rwFF9j1RciRivxPWCQ"}}, "unsigned": {"age_ts": 1570042735725}};bQQa $1570042734247SfTxR:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800{"token_id": 480, "stream_ordering": 2541}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042733245smHTZ:localhost:8800", {"sha256": "hAa3eSsjXHSEZOOBLw6WFXYcONkPuzLE1lDw+0Fqp0M"}], ["$1570042731243YuOkC:localhost:8800", {"sha256": "MZCcppAvBdWOPX4GjBXilhgsw6NkYDlosoJqpIrO2rY"}]], "prev_events": [["$1570042733246cYViL:localhost:8800", {"sha256": "5+SkIkU2WvCmvdRboW6wUatuPBHntkCuIo7MLHrswRA"}]], "type": "m.room.member", "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-471:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-472", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-472:localhost:8829", "event_id": "$1570042734247SfTxR:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042734799, "hashes": {"sha256": "xGjpZfM2y80O2G+DR2Oxsykoc1Q8BMcSPxsKQ2UweZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/AA+wwd1u7Y5zA7LHH43ODS8ptG7PfowUWOG2yfgQLbCtB1ixWwMWLNLxKdd6FbYVInYGyP7dAm5VGwDztOnAA"}, "localhost:8829": {"ed25519:a_UxIG": "X3U14gKNH0O46FuipjadQfqxLefGRFgsvSkwbG6LM4j1i/lgD4zHLfMfwN3BfZZbRjRW9OK6bXVoXYXu0AimDw"}}, "unsigned": {"age_ts": 1570042734799, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-471:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-471:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-471", "avatar_url": null}, "sender": "@anon-20191002_181700-471:localhost:8800"}]}} Rk,L  ~ ? k j O , z _ <h) P`I i*y\kK0  , z _ <   pM] $ 3 hm.room.power_levelsw>']!m.room.member@anon-20191002_181700-467:localhost:88000%))Zm.room.aliaseslocalhost:8800i"? Ym.room.history_visibilityh/ Xm.room.join_rulesg9 Wm.room.canonical_aliasf3 Vm.room.power_levelse>']Um.room.member@anon-20191002_181700-480:localhost:8800d' Tm.room.createc>']Sm.room.member@anon-20191002_181700-479:localhost:8800b>']Rm.room.member@anon-20191002_181700-479:localhost:8800a3 Qm.room.guest_access`"? Pm.room.history_visibility_/ Om.room.join_rules^3 Nm.room.power_levels]>']Mm.room.member@anon-20191002_181700-478:localhost:8800\' Lm.room.create[>']Km.room.member@anon-20191002_181700-477:localhost:8800Z%))Jm.room.aliaseslocalhost:8800Y"? Im.room.history_visibilityX/ Hm.room.join_rulesW9 Gm.room.canonical_aliasV3 Fm.room.power_levelsU>']Em.room.member@anon-20191002_181700-476:localhost:8800T' Dm.room.createS"? Cm.room.history_visibilityR/ Bm.room.join_rulesQ3 Am.room.power_levelsP>']@m.room.member@anon-20191002_181700-475:localhost:8800O' ?m.room.createN>']>m.room.member@anon-20191002_181700-474:localhost:8829M>']=m.room.member@anon-20191002_181700-474:localhost:8829L>']']8m.room.member@anon-20191002_181700-473:localhost:8800G' 7m.room.createF>']6m.room.member@anon-20191002_181700-472:localhost:8829E>']5m.room.member@anon-20191002_181700-472:localhost:8829D>']4m.room.member@anon-20191002_181700-472:localhost:8829C"? 3m.room.history_visibilityB/ 2m.room.join_rulesA3 1m.room.power_levels@>']0m.room.member@anon-20191002_181700-471:localhost:8800?' /m.room.create>>'].m.room.member@anon-20191002_181700-470:localhost:8829="? -m.room.history_visibility</ ,m.room.join_rules;3 +m.room.power_levels:N' fm.room.createu>']dm.room.member@anon-20191002_181700-483:localhost:8829s>']cm.room.member@anon-20191002_181700-483:localhost:8829r3 bm.room.guest_accessq"? am.room.history_visibilityp/ `m.room.join_ruleso3 _m.room.power_levelsn>']^m.room.member@anon-20191002_181700-482:localhost:8800m' ]m.room.createl>']\m.room.member@anon-20191002_181700-481:localhost:8829k>'][m.room.member@anon-20191002_181700-481:localhost:8829j>']*m.room.member@anon-20191002_181700-469:localhost:88009' )m.room.create8>'](m.room.member@anon-20191002_181700-468:localhost:88297>']'m.room.member@anon-20191002_181700-468:localhost:88296>']&m.room.member@anon-20191002_181700-468:localhost:882953 %m.room.guest_access4"? $m.room.history_visibility3/ #m.room.join_rules23 "m.room.power_levels1'  m.room.create/>']m.room.member@anon-20191002_181700-466:localhost:8829.>']m.room.member@anon-20191002_181700-466:localhost:8829-%))m.room.aliaseslocalhost:8800,"? m.room.history_visibility+/ m.room.join_rules*9 m.room.canonical_alias)3 m.room.power_levels(>']m.room.member@anon-20191002_181700-465:localhost:8800'' m.room.create&>']gm.room.member@anon-20191002_181700-484:localhost:8800v>']em.room.member@anon-20191002_181700-483:localhost:8829t  fQQa) $1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2545}{"auth_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}]], "prev_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}]], "type": "m.room.member", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-473", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-473:localhost:8800", "event_id": "$1570042738251iukAg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042738578, "hashes": {"sha256": "Kfecxv2BtZtbKJc8TzJO49SvbJzz4UlavrnbDLxWbEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jDysgWVYzQadrJt0lg+WM4RPOvNRiZuWp7+HUnFcZ14ujlDmWD1unW+/qxR04BHBR0UMi/YT2XQkYKLU/CzjBQ"}}, "unsigned": {"age_ts": 1570042738578}}eQQaC $1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2544}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-473:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570042737250jmxWx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042737649, "hashes": {"sha256": "PbIOjgRW+rE1RqvC45MZ6WI6dwem4b5ucptPM7CGjfw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l+Ow7PqPsSc8u+ytyZsijFMuCnqFjsJkqo89KXJbxQYG21Emp6FnyORhekDkc+lH6YOct5SXRZUZxzjj8o33CQ"}}, "unsigned": {"age_ts": 1570042737649}}3dMQc $15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800{"outlier": false, "stream_ordering": 2543}{"auth_events": [["$1570042732244zDmQh:localhost:8800", {"sha256": "EoCvBeTwujMggRwYxWApKnmLcHg2S92S2zGYlokZL48"}], ["$1570042730242eYFxu:localhost:8800", {"sha256": "icPJBv1dZaJbIzMX8aaNYMZExbCnPKBIYCYdfNN2FEA"}], ["$1570042734247SfTxR:localhost:8800", {"sha256": "RLL+rHSdxGCpKbZookijGOBi6+mlUpmhVoieMTxOjI4"}]], "content": {"membership": "leave"}, "depth": 8, "event_id": "$15700427368TlZQs:localhost:8829", "hashes": {"sha256": "aQaSuN6YoHjOERfmp65bjkfNY2sS42uVoR+FV4ETW68"}, "origin": "localhost:8829", "origin_server_ts": 1570042736223, "prev_events": [["$1570042735248drnws:localhost:8800", {"sha256": "1Vi5Y7wFSxI15yZzsYRUMCjLLRJexvQrI2j1MeBJfoo"}]], "prev_state": [], "room_id": "!WhLedNwPGGGTtqeqam:localhost:8800", "sender": "@anon-20191002_181700-472:localhost:8829", "state_key": "@anon-20191002_181700-472:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PerAFoJDsiginJ6/cPIMo12St1GycIiQmuNnLhlakfjjUm2c/TwRzUy7FKMhWAVS2ly9oeVy1K/Vftrb3D1tDg"}, "localhost:8829": {"ed25519:a_UxIG": "OiproYV02fHewYsSAWhrNiXmzj3vDIR746WJYnEg1tyR97VTXlpfCdwpzAe+rFXx/GXveWCbSGwEc/NLgs4QAw"}}, "unsigned": {"age": 104, "replaces_state": "$1570042734247SfTxR:localhost:8800"}} .f2 C > 9 4 /*|%w rmhc ^TdQed!RSLvuCuAqKQQrKCxNq:localhost:8800$2I6G275l7JkWUBuJkQy5PN+nqKGQgNFjEkJcYKCrbzcTcQec!RSLvuCuAqKQQrKCxNq:localhost:8800$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMTbQeb!RSLvuCuAqKQQrKCxNq:localhost:8800$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjETaQea!RSLvuCuAqKQQrKCxNq:localhost:8800$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8T`Qe`!RSLvuCuAqKQQrKCxNq:localhost:8800$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUT_Qe_!RSLvuCuAqKQQrKCxNq:localhost:8800$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4T^Qe^!RSLvuCuAqKQQrKCxNq:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8UT]Qe]!RSLvuCuAqKQQrKCxNq:localhost:8800$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgT\Qe\!DqxFmsXPclgGqpSwdy:localhost:8800$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+GkT[Qe[!DqxFmsXPclgGqpSwdy:localhost:8800$296DUxyQixT0lQ0odnSMp2FPVx9B3gcT8ETQCdLZ0i8TZQeZ!DqxFmsXPclgGqpSwdy:localhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwTYQeY!DqxFmsXPclgGqpSwdy:localhost:8800$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8TXQeX!DqxFmsXPclgGqpSwdy:localhost:8800$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyITWQeW!DqxFmsXPclgGqpSwdy:localhost:8800$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YTVQeV!DqxFmsXPclgGqpSwdy:localhost:8800$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50TUQeU!DqxFmsXPclgGqpSwdy:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4TTQeT!DqxFmsXPclgGqpSwdy:localhost:8800$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sTSQeS!uqIEMXzdeNeXdJmuwh:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wTRQeR!uqIEMXzdeNeXdJmuwh:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcTQQeQ!uqIEMXzdeNeXdJmuwh:localhost:8800$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8TPQeP!uqIEMXzdeNeXdJmuwh:localhost:8800$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkTOQeO!uqIEMXzdeNeXdJmuwh:localhost:8800$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYTNQeN!uqIEMXzdeNeXdJmuwh:localhost:8800$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0TMQeM!uqIEMXzdeNeXdJmuwh:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YTLQeL!uqIEMXzdeNeXdJmuwh:localhost:8800$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0TKQeK!yAzXcNLHMuqFOcOexj:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888TJQeJ!yAzXcNLHMuqFOcOexj:localhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4TIQeI!yAzXcNLHMuqFOcOexj:localhost:8800$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXETHQeH!yAzXcNLHMuqFOcOexj:localhost:8800$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uoTGQeG!yAzXcNLHMuqFOcOexj:localhost:8800$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtITFQeF!yAzXcNLHMuqFOcOexj:localhost:8800$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgTEQeE!yAzXcNLHMuqFOcOexj:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMTDQeD!yAzXcNLHMuqFOcOexj:localhost:8800$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZoTCQeC!tLkhTnTgDjjAvscRkW:localhost:8800$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEoTBQeB!tLkhTnTgDjjAvscRkW:localhost:8800$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkTAQeA!tLkhTnTgDjjAvscRkW:localhost:8800$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBET@Qe@!tLkhTnTgDjjAvscRkW:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIT?Qe?!tLkhTnTgDjjAvscRkW:localhost:8800$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQH>QM>!kAxKaIQhXTtGFWSUgr:localhost:8800$15700427439Hwxyi:localhost:8829J=QQ=!kAxKaIQhXTtGFWSUgr:localhost:8800$1570042743257eDQlw:localhost:8800J<QQMQQ$15700427439Hwxyi:localhost:8829$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800h=MQQ$15700427439Hwxyi:localhost:8829$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800h<MQQ$15700427439Hwxyi:localhost:8829$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j;QQQ$1570042742255yQzPA:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j:QQQ$1570042742255yQzPA:localhost:8800$1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j9QQQ$1570042742255yQzPA:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j8QQQ$1570042742255yQzPA:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j7QQQ$1570042741254DKIYz:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j6QQQ$1570042741254DKIYz:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j5QQQ$1570042741254DKIYz:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j4QQQ$1570042740253GkWgu:localhost:8800$1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j3QQQ$1570042740253GkWgu:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j2QQQ$1570042740253GkWgu:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j1QQQ$1570042739252bWghU:localhost:8800$1570042738251iukAg:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j0QQQ$1570042739252bWghU:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800j/QQQ$1570042738251iukAg:localhost:8800$1570042737250jmxWx:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800  fxiQQa $1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2548}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042740253GkWgu:localhost:8800", {"sha256": "2CzasJF4E6vMwh3/WH2f9IaJzq6mEhGgY/9VVbmHzhE"}]], "type": "m.room.history_visibility", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570042741254DKIYz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042741028, "hashes": {"sha256": "z0mvCSUyO2wq9Aw27EAqmHxR8+RjleNacb4woL46yGs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZT31HJtdRgW5XEqCiMeSHeC7pM28Xx2+MrMPXYu1ITOZglZi0MgX3ySqshSOsbZ5tKAGJDpysEW0vm/m+nEECg"}}, "unsigned": {"age_ts": 1570042741028}}ghQQaq $1570042740253GkWgu:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2547}{"auth_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}], ["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}]], "prev_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}]], "type": "m.room.join_rules", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570042740253GkWgu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042740045, "hashes": {"sha256": "Ut3FUs3Eva/QJcm8HpRWt3CKF3yT0LZBBd2mdwlbzyY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rGgjragBpvsi3xnLOwoGT/L1z+XjumEs1CNFSEras8i9K6j5t+IcLAXSu1zz9cs7kX1juJ96UBAwFZo5nDpdAQ"}}, "unsigned": {"age_ts": 1570042740045}}+gQQay $1570042739252bWghU:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2546}{"auth_events": [["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "type": "m.room.power_levels", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"users": {"@anon-20191002_181700-473:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570042739252bWghU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042739402, "hashes": {"sha256": "ODcXwVjNAzujq6xdPVYDzwbtaMNHaWXfWn8YKmLeb2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4bBVqdBo3MEA2EVXCmfYrOS/4chERCWBPgRrX8ixolJn3tF841JvLTHI36P3YUX9bXtrCLZGwjnQF0ugICmDDQ"}}, "unsigned": {"age_ts": 1570042739402}} +eXe^ k x ' 4 A N [ hu$1>Kr!P]Q@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800P]Q@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800P]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800P]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800P]Q@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:8800P]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800P]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800P]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800P]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800P]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800P]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800P]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800P]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800P]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800P]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800P]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800P]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800P]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800P]Q@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800P]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800P]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800P]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800P]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800P]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800P]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800P]Q@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800P]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800P]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800 ;kQQa $1570042742256IYRor:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2550}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042742255yQzPA:localhost:8800", {"sha256": "9Mx92/YJZQO5AEx42oP5bRTtwfLEz5ViZLvyXAmXqlE"}]], "type": "m.room.test", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "event_id": "$1570042742256IYRor:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042742852, "hashes": {"sha256": "dclKTDAzcFkOq9Fa+wrOT+SoO5VdhKSrHnH855zpnWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TxZPYN9NYJKGtBcKrgCbuviH3klKlW/tXXPY9R8IHtaDR8ZEw/GnKUUPcF5QwQDge1cpx9xQubVBqZG+N0OFAw"}}, "unsigned": {"age_ts": 1570042742852}};jQQa $1570042742255yQzPA:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800{"token_id": 481, "stream_ordering": 2549}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042740253GkWgu:localhost:8800", {"sha256": "2CzasJF4E6vMwh3/WH2f9IaJzq6mEhGgY/9VVbmHzhE"}], ["$1570042738251iukAg:localhost:8800", {"sha256": "sqN7C1iZSVqD1J88KNNDIpZIJ9cOLvc2hAjKgzPCu3Q"}]], "prev_events": [["$1570042741254DKIYz:localhost:8800", {"sha256": "MAl488XWDnuHFQ2rHJuRP17Rcg0w6w/b1SRcqK8Pp+0"}]], "type": "m.room.member", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-473:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-474", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-474:localhost:8829", "event_id": "$1570042742255yQzPA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042742199, "hashes": {"sha256": "/ZaHSg1DwXpxD3MkUQeOTJh01FHokH4xCqQW0dh/46M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e27JsmUL0aWomrYe6neiihc5CAwW4YD1ERa//dlo3MQg3ptkpAaYiXpHoXL0QRN+0XO3E8ykssqA5x4tBMt6Dw"}, "localhost:8829": {"ed25519:a_UxIG": "PMsiiwNHolu+8VW//9b/iUg5D6U/6T2ZyGU+Jen5xeuHk7k+XO82pXIV7dM6yj7dk2u935GmOv9Tt33Y3WcfBA"}}, "unsigned": {"age_ts": 1570042742199, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-473:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-473:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-473", "avatar_url": null}, "sender": "@anon-20191002_181700-473:localhost:8800"}]}}  d'mnOQc} $157004274411xArrT:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800{"outlier": false, "stream_ordering": 2553}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$15700427439Hwxyi:localhost:8829", {"sha256": "4ys2gn1WIDuEXa0Gdsp2RgJlg0n0RYYs0oItf4bpJwA"}]], "content": {}, "depth": 10, "event_id": "$157004274411xArrT:localhost:8829", "hashes": {"sha256": "GB1WAyn/LT8T0dS5cKe3MVXmMoPmM08HPItMY8zVy14"}, "origin": "localhost:8829", "origin_server_ts": 1570042744015, "prev_events": [["$157004274310jCQYA:localhost:8829", {"sha256": "YETsPfBusJQcALt/vNoTB0qnp/f4yb7w7bHEPduwRZs"}]], "prev_state": [], "redacts": "$157004274310jCQYA:localhost:8829", "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-474:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "6gu+Pz3SPuUvS683+1OlAGi2pDdHefGp5/QmbuS4TVGY/OlG9lbftZ5eYPludkJIxbVluHwV0L1e7V80ssKnBw"}}, "unsigned": {"age_ts": 1570042744015}}&9mOQc $157004274310jCQYA:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800{"outlier": false, "stream_ordering": 2552}{"auth_events": [["$15700427439Hwxyi:localhost:8829", {"sha256": "4ys2gn1WIDuEXa0Gdsp2RgJlg0n0RYYs0oItf4bpJwA"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}]], "content": {}, "depth": 9, "event_id": "$157004274310jCQYA:localhost:8829", "hashes": {"sha256": "eqDEcIpNa6W7DJQ1mpOeHSvnkA6a01EW4T+OZPQu/v8"}, "origin": "localhost:8829", "origin_server_ts": 1570042743998, "prev_events": [["$15700427439Hwxyi:localhost:8829", {"sha256": "4ys2gn1WIDuEXa0Gdsp2RgJlg0n0RYYs0oItf4bpJwA"}]], "prev_state": [], "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-474:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "HJy7M2600BfP3f6McA0RYljceZtd9lLzhZ2nBCO2lVhwHsVBXvYm1etelhA3alEeXLEOuo1cg+oMZ6qfv/GCAA"}}, "unsigned": {"age_ts": 1570042743998}}lMQ1 $15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2551}{"auth_events": [["$1570042739252bWghU:localhost:8800", {"sha256": "gsGW44sXJNt5IjB8qxpk9ouZ2FMHvVScIoRcDVmFkx0"}], ["$1570042737250jmxWx:localhost:8800", {"sha256": "dQ0fsLXlvDbe6kH1D6PsnxZBSWggv3myrOSHMmznMyY"}], ["$1570042740253GkWgu:localhost:8800", {"sha256": "2CzasJF4E6vMwh3/WH2f9IaJzq6mEhGgY/9VVbmHzhE"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-474", "membership": "join"}, "depth": 8, "event_id": "$15700427439Hwxyi:localhost:8829", "hashes": {"sha256": "V6cKI4UELyaqhZfqRY4V0fd9196feVst8N3Jj7NPrlw"}, "origin": "localhost:8829", "origin_server_ts": 1570042743349, "prev_events": [["$1570042742256IYRor:localhost:8800", {"sha256": "n1jpGYyy31azWJnxGbd/40Tm7WPpOfavd9BlmGHoKbw"}]], "prev_state": [], "room_id": "!kAxKaIQhXTtGFWSUgr:localhost:8800", "sender": "@anon-20191002_181700-474:localhost:8829", "state_key": "@anon-20191002_181700-474:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sljJRvDoHMBQY/+y8IILzGB9WtVVBf9tCdL3XLpq9X5/2X8Y5TW6DVj8/P+CQotYDvaagiq0O6rgcz+UfB+ACg"}, "localhost:8829": {"ed25519:a_UxIG": "TwkiRY4cscp0k7ZAVTMB+kalv6uzo2E4tvT+W9tUZrsxgN6z5x015hkWW39ZqVp5FB1ejumKRHllsO87t2RnAw"}}, "unsigned": {"age": 95, "replaces_state": "$1570042742255yQzPA:localhost:8800"}} E~ ) ` D{$]TC? e]]Q=$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8@anon-20191002_181700-489:localhost:8829@anon-20191002_181700-489:localhost:8829!mvgUHEsfGqDkPQUvfG:localhost:8800joinanon-20191002_181700-489E> e]]Q=$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg@anon-20191002_181700-489:localhost:8829@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800inviteanon-20191002_181700-489C= e]]Q=$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM@anon-20191002_181700-488:localhost:8800@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800joinanon-20191002_181700-488,< e]]Q$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ@anon-20191002_181700-487:localhost:8829@anon-20191002_181700-487:localhost:8829!WYyiQAVvitxsLZKVCG:localhost:8800leaveE; e]]Q=$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc@anon-20191002_181700-487:localhost:8829@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800inviteanon-20191002_181700-487C: e]]Q=$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90@anon-20191002_181700-486:localhost:8800@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800joinanon-20191002_181700-486E9 e]]Q=$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU@anon-20191002_181700-485:localhost:8829@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800inviteanon-20191002_181700-485C8 e]]Q=$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM@anon-20191002_181700-484:localhost:8800@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800joinanon-20191002_181700-484C7 e]]Q=$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds@anon-20191002_181700-483:localhost:8829@anon-20191002_181700-483:localhost:8829!RSLvuCuAqKQQrKCxNq:localhost:8800joinanon-20191002_181700-483E6 e]]Q=$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM@anon-20191002_181700-483:localhost:8829@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:8800inviteanon-20191002_181700-483C5 e]]Q=$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:8800joinanon-20191002_181700-482C4 e]]Q=$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk@anon-20191002_181700-481:localhost:8829@anon-20191002_181700-481:localhost:8829!DqxFmsXPclgGqpSwdy:localhost:8800joinanon-20191002_181700-481C3 e]]Q=$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4@anon-20191002_181700-480:localhost:8800@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800joinanon-20191002_181700-480C2 e]]Q=$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800joinanon-20191002_181700-479E1 e]]Q=$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800inviteanon-20191002_181700-479C0 e]]Q=$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y@anon-20191002_181700-478:localhost:8800@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800joinanon-20191002_181700-478C/ e]]Q=$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888@anon-20191002_181700-477:localhost:8800@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800joinanon-20191002_181700-477C. e]]Q=$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM@anon-20191002_181700-476:localhost:8800@anon-20191002_181700-476:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800joinanon-20191002_181700-476C- e]]Q=$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI@anon-20191002_181700-475:localhost:8800@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800joinanon-20191002_181700-4757, M]]Q=$15700427439Hwxyi:localhost:8829@anon-20191002_181700-474:localhost:8829@anon-20191002_181700-474:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800joinanon-20191002_181700-474 8l D `8V]c!E@anon-20191002_181700-493:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowoGRPWUCANVU127.0.0.1Perl + Net::Async::HTTP/0.44mY?U]c!E@anon-20191002_181700-492:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwoBHHCHVPHQT127.0.0.1Perl + Net::Async::HTTP/0.44mOsT]c!E@anon-20191002_181700-491:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6RgoSADWUTCSYM127.0.0.1Perl + Net::Async::HTTP/0.44m3_S]c!E@anon-20191002_181700-490:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwoYZYHXUDJBU127.0.0.1Perl + Net::Async::HTTP/0.44mփR]c!E@anon-20191002_181700-488:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAoSPGGZQRKHZ127.0.0.1Perl + Net::Async::HTTP/0.44m!Q]c!E@anon-20191002_181700-486:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0woOFHZWZEQDS127.0.0.1Perl + Net::Async::HTTP/0.44mۃP]c!E@anon-20191002_181700-484:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAoFWOSSLYDNU127.0.0.1Perl + Net::Async::HTTP/0.44mײO]c!E@anon-20191002_181700-482:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgoJRYARQINGZ127.0.0.1Perl + Net::Async::HTTP/0.44mאN]c!E@anon-20191002_181700-480:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAoXJOMFBTCLS127.0.0.1Perl + Net::Async::HTTP/0.44mm܃M]c!E@anon-20191002_181700-479:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQoNIEZZMOKPH127.0.0.1Perl + Net::Async::HTTP/0.44mb nL"c  8 Z | /Qs&Hjn!onQQQ$1570043523355SbJjm:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043428320JDiOD:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 nnQQQ$1570043426319TNjnu:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 m^QQ1$1570043392317hujur:localhost:8800$1570043391316OJaBO:localhost:8800!5:localhost:42455 ROQ31$1570043391316OJaBO:localhost:8800$12:localhost:42455!5:localhost:42455 QnQQQ$1570043522354IAAap:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043518351Popej:localhost:8800$1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043517350ncbDd:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043517349uVTMj:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043516348vThZG:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800 nQQQ$1570043506346EEQDj:localhost:8800$1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043504345DCjlJ:localhost:8800$1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043503344dJwGF:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043503343snlnn:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043502342mVJmO:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800 nQQQ$1570043486339YbYQQ:localhost:8800$1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043485338vbLwS:localhost:8800$1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043484337ylFDA:localhost:8800$1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043484336qKOPD:localhost:8800$1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043483335oDIDb:localhost:8800$1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043483334ejWtI:localhost:8800$1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043482333DxDEq:localhost:8800$1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043481332XroCo:localhost:8800$1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043481331UNaWT:localhost:8800$1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043480330seKnV:localhost:8800$1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043479329kvsXb:localhost:8800$1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043478328DMkRS:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043477327AgpMM:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 nQQQ$1570043477326hyTqo:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 OQ31$1570043468324DLhaB:localhost:8800$28:localhost:42455!6:localhost:42455 nQQQ$1570043429322ZfcNc:localhost:8800$1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 pnQQQ$1570043428321klTqJ:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 o   *treQau$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2557}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE"], "type": "m.room.join_rules", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042748474, "hashes": {"sha256": "+RaAbjopD7dC/jpcoGsCHqPnEOhhwTPu888xlSJUs4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AFVyLA6w/dDf6gFWOshl/0wzqbo11uWYRVQVYxOClx2QBCy/LXtMbk5lEP1Jx02E4pVtX9r5l1etPwYrzWwIAw"}}, "unsigned": {"age_ts": 1570042748474}}kqeQac$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2556}{"auth_events": ["$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "type": "m.room.power_levels", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"users": {"@anon-20191002_181700-475:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042747794, "hashes": {"sha256": "H4Yxd15EV/u8pDjC0UOTqbq1mUWqY2K6q2OACjP+SAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zQdYfHLzAE58BPa2o5truySYalWTUL8M94rWc5PILA/pIcnRxuWQM6IxIjcHuy6M8TY8VUEXjKz2scIjYUZuCw"}}, "unsigned": {"age_ts": 1570042747794}}vpeQay$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2555}{"auth_events": ["$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ"], "prev_events": ["$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ"], "type": "m.room.member", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-475", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-475:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042747245, "hashes": {"sha256": "PsKSjUdhJZZzbvHQFBmPjZeEPwT7M8fTnvEeZstvcxE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eZafcEvMXE0V3ZUEnxqoe5XlpEnai5sHgHlGtuPlNeQ/Yb98oCtgXdVdvU/IsFoyWb0i4AyXwxg7ASMkUgigCw"}}, "unsigned": {"age_ts": 1570042747245}}ioeQa_$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2554}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-475:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042746509, "hashes": {"sha256": "XZjAMLp2aHKGqEPlO0vyCkXAS+tvdfSkCz0kQBnekzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fPaF6Hg+wJX0+XsTBxnFUed6wvPTzMGDoR/xi4OO7ie5Lp+HklRvaTC5nVddWdBUwaidqLBatADKZ7K4lQ0YBQ"}}, "unsigned": {"age_ts": 1570042746509}} X^ h  q + ,|5JTXe#Q ]$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgm.room.test!uqIEMXzdeNeXdJmuwh:localhost:8800ma$ma(@anon-20191002_181700-478:localhost:8800&e3Q ]$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8m.room.guest_access!uqIEMXzdeNeXdJmuwh:localhost:8800m]:m^ @anon-20191002_181700-478:localhost:8800,e?Q ]$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkm.room.history_visibility!uqIEMXzdeNeXdJmuwh:localhost:8800mZm[U@anon-20191002_181700-478:localhost:8800$e/Q ]$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYm.room.join_rules!uqIEMXzdeNeXdJmuwh:localhost:8800mWmX@anon-20191002_181700-478:localhost:8800& e3Q ]$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0m.room.power_levels!uqIEMXzdeNeXdJmuwh:localhost:8800mUmV @anon-20191002_181700-478:localhost:8800 e'Q ]$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Ym.room.member!uqIEMXzdeNeXdJmuwh:localhost:8800mRmSJ@anon-20191002_181700-478:localhost:8800  e'Q  ]$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0m.room.create!uqIEMXzdeNeXdJmuwh:localhost:8800mOmP^@anon-20191002_181700-478:localhost:8800! e)Q ] $fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vom.room.message!yAzXcNLHMuqFOcOexj:localhost:8800 mI4mI8@anon-20191002_181700-476:localhost:8800 e'Q ] $LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888m.room.member!yAzXcNLHMuqFOcOexj:localhost:8800 mEmE@anon-20191002_181700-477:localhost:8800e#Q ]$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8m.room.test!yAzXcNLHMuqFOcOexj:localhost:8800mCmC@anon-20191002_181700-476:localhost:8800!e)Q ]$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4m.room.aliases!yAzXcNLHMuqFOcOexj:localhost:8800m?m@@anon-20191002_181700-476:localhost:8800,e?Q ]$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEm.room.history_visibility!yAzXcNLHMuqFOcOexj:localhost:8800m;m=@anon-20191002_181700-476:localhost:8800$e/Q ]$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uom.room.join_rules!yAzXcNLHMuqFOcOexj:localhost:8800m8m9@anon-20191002_181700-476:localhost:8800)e9Q ]$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIm.room.canonical_alias!yAzXcNLHMuqFOcOexj:localhost:8800m6 m7@anon-20191002_181700-476:localhost:8800&e3Q ]$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgm.room.power_levels!yAzXcNLHMuqFOcOexj:localhost:8800m3Fm4b@anon-20191002_181700-476:localhost:8800 e'Q ]$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMm.room.member!yAzXcNLHMuqFOcOexj:localhost:8800m1:m1@anon-20191002_181700-476:localhost:8800 e'Q  ]$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zom.room.create!yAzXcNLHMuqFOcOexj:localhost:8800m.m/@anon-20191002_181700-476:localhost:8800!e)Q ]$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fkm.room.message!tLkhTnTgDjjAvscRkW:localhost:8800m(m(@anon-20191002_181700-475:localhost:8800e#Q ]$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUm.room.test!tLkhTnTgDjjAvscRkW:localhost:8800m& m&$@anon-20191002_181700-475:localhost:8800,~e?Q ]$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEom.room.history_visibility!tLkhTnTgDjjAvscRkW:localhost:8800m!Um"@anon-20191002_181700-475:localhost:8800$}e/Q ]$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhkm.room.join_rules!tLkhTnTgDjjAvscRkW:localhost:8800m:m@anon-20191002_181700-475:localhost:8800&|e3Q ]$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEm.room.power_levels!tLkhTnTgDjjAvscRkW:localhost:8800mm@anon-20191002_181700-475:localhost:8800 {e'Q ]$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIm.room.member!tLkhTnTgDjjAvscRkW:localhost:8800mmm@anon-20191002_181700-475:localhost:8800z e'Q  ]$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQm.room.create!tLkhTnTgDjjAvscRkW:localhost:8800mm@anon-20191002_181700-475:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VeL$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edssha256!R:Ǘl v 4yVeL$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMsha2563*Or1v:L#Bk |YVeL$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Esha2564}C(K&%FRKL{uVeL$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEsha256nYzkSU!3>1VeL$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8sha256! Йg6;?7P~G 3SӲ["|/VeL$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUsha256]#0?n:@L9jhز S8:VeL$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4sha256n$+aGrOiFPVeL$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Usha256q #'ב!`GK1U:DX}+VeL$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgsha256Ƶe 3"̺F |iV/KVeL$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jEsha256` b- fW1VeL$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gksha256G$<4usc9[ l7] iVeL$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84sha256?SZ{((WcVeL$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwsha256^h LQ~<P%mgV eL$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/ssha2563h'zQNF@371_<2V eL$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8sha2561jPhtI+|<*VeL$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wsha256I p@ 5=}YqZ0X\qVeL$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xcsha256TPBW^#-e< bOxJIwVeL$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgsha256#EO*TN\.OY_HAVeL$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8sha256^# Z!WQ ^B[5!h6 VeL$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynksha256Kg7 2{ev &9o^nwyVeL$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYsha256@/ߩե;6c3ݦ0FVeL$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0sha2564?v?1RO[-R MVeL$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Ysha256?mzCTYqK&釖qU\VeL$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0sha256Z.RO4̞ Hx.LnR|-VeL$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vosha256~*pi`4Pv{QNYܕZV~eL$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888sha256,J/o4"iVՅaJ5rk V}eL$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8sha256 O"(Ќyi]~.;\OV|eL$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4sha256V~o gX}zwgoKd,>V{eL$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEsha256 |YP.{.4,Z#)D4ςaMqVzeL$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uosha256r4GF5ھW&j| \jTVyeL$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIsha256Ʊ/=[$H4ðh{v˛ FVxeL$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgsha256p}UXz>|&˖AIDž8VweL$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMsha256|D%Lڼ?Z= ֟î^SVveL$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zosha256*Ąo^31)55Z&IݚVueL$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fksha256ae%?pwRM*Y2E17b]YVteL$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUsha256y;"!_]=?393rxp-VseL$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEosha256ax}e*H(%^[B)SʐZmʄJVreL$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhksha256&\W>VXp(ʌաQWVqeL$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBEsha256a0ceɜ5}&Ҕ8 *r L+ P *j n b \ | < 0] $tB{ Jh  VP v6>8 W% p  D J+1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro 21e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc_1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wk1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsM1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawQ1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE40e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgS1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4`1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8'1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E %1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8C1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j41e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg u1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90l1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoh1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgz1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogq1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgo1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84v1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY(1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck#1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 O1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y W21e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg 1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o :1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw -1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs '1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg #1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 n1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg d1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w *F Wb%h6]o=  D uC{IQ9kp+> W0 % } K  Q  OMqm2tCwEdqpw6Qm1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y F1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc 1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E C1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ 81e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng/1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8d1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM)1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyEw0e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0w0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsAk1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF8[1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg@1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI81e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX41e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY0e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdIn1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4,1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabwe1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuE*1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc 1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a41e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bMY1e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE^1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg R1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2M v1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 y1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak l1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ S1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPU(1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXA1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEs1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY1e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk4N0e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4B1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE#1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 21e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c6481e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUIh1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMMZd1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIcU0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms5 L+ P *j n b \ | < 0] $tB{ Jh  VP v6>8 W% p  D J+1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro 21e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc_1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg 1e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wk1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsM1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawQ1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us$1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE40e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgS1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4`1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8'1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E %1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8=1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j41e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg u1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90f1e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXob1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgt1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogk1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgo1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84v1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY(1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck#1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 O1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y U21e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg 1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o :1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw -1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs '1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg #1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 l1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg b1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w  w +iveQa_$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2561}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-476:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042752683, "hashes": {"sha256": "iJjJ7Ft5f1siWE+tJQls5mqnkQJsmAmXh+jEo9n7tLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0SI+dPXOA2sOiPI+DF89Zg2sqksZj969xWvCMz76RuTS0/ufB1ZVT1RcYHScqWpO4wFp7n7se3XGTLDmG6aMCw"}}, "unsigned": {"age_ts": 1570042752683}}ueQk$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "txn_id": "484", "stream_ordering": 2560}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU"], "type": "m.room.message", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042751206, "hashes": {"sha256": "6RoKoKaoDugDKzJvf3WN5XWeSXs+lzkyyJBgZz1LdV8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N50BI9nDN5ie51kyzNd/p7D4LnsgeJiIJzlCkfCYp2Gov6axlBMBpnOAw/LOxSWRj25G2kcUq4oGDj2tunJ3CA"}}, "unsigned": {"age_ts": 1570042751206}}HteQa$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2559}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo"], "type": "m.room.test", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042750496, "hashes": {"sha256": "CfvUxvFJ7fD3mK1AgpEWNnPtG9AyfVVVKewnXM6sKXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pgWRYumR6Una74MMKwGBOoHXrVFAtdfVVzdopz96wLUl5iyHnG9udh4QwEVvnV0rAA9jqY0dY34Hx5QJ3J5MDQ"}}, "unsigned": {"age_ts": 1570042750496}}seQa$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800{"token_id": 482, "stream_ordering": 2558}{"auth_events": ["$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE", "$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ", "$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI"], "prev_events": ["$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk"], "type": "m.room.history_visibility", "room_id": "!tLkhTnTgDjjAvscRkW:localhost:8800", "sender": "@anon-20191002_181700-475:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042749269, "hashes": {"sha256": "AyjOw+5sU29zPJiu0istR2e6hchTn5Jbwrl491Er8NU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z3lfwUcog9jHXuf4Et/e/I1mSjiGQIKcqf/n15KQTD8Hp/Nr8dIdhYmOiJzvIhA8BgrDcS8FjpoNUaW+PAQbDA"}}, "unsigned": {"age_ts": 1570042749269}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1.e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgy1-e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQx1,e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsw1+e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8v1*e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMu1)e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNot1(e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQs1'e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgq1&e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcq1%e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4p1$e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMo1#e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vskn1"e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90m1!e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wl1 e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zkk1e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpMk1e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXok1e$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8k1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWMk1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsYk1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8k1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIk1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88k1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMk1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90k1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKAk1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUk1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4j1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwi1e$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwh1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMg1e$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxof1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAe1 e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edse1 e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMc1 e$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Eb1 e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEb1 e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8a1e$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU`1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4_1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U^1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg]1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE\1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk\1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84Z1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwZ1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8Y1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIX1~e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YW1}e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50V1|e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4U1{e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sT1ze$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8S1ye$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wS1xe$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcR1we$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgQ1ve$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8Q1ue$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkP1te$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYO1se$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0N1re$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YM1qe$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0L1pe$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0VoK1oe$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888K1ne$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8J1me$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4J1le$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEI1ke$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uoH1je$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIG1ie$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgF1he$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlME1ge$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3ZoD1fe$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7FkC1ee$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYUC1de$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEoC ~z v r n j fb^ZVRNJF2eeQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:88001eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84!DqxFmsXPclgGqpSwdy:localhost:88000eeQ$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800/eeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800.eeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800-eeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800,eeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800+eeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800*eeQ$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800)eeQ$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800(eeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800'eeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg!uqIEMXzdeNeXdJmuwh:localhost:8800&eeQ$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800%eeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800$eeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800#eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800"eeQ$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800!eeQ$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800 eeQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800eeQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800eeQ$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800 `'2`,1 \ y ! GRWmx}e%eQ/ $Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk!tLkhTnTgDjjAvscRkW:localhost:8800m.room.join_rulesg$eQ3 $0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE!tLkhTnTgDjjAvscRkW:localhost:8800m.room.power_levels #eQ']$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800m.room.member@anon-20191002_181700-475:localhost:8800joina"eQ' $7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ!tLkhTnTgDjjAvscRkW:localhost:8800m.room.create!MQ']$15700427439Hwxyi:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.member@anon-20191002_181700-474:localhost:8829joinc QQ? $1570042741254DKIYz:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800m.room.history_visibilitym;eQ? $Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibilitye:eQ/ $sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rulesj9eQ9 $RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_aliasg8eQ3 $LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels 7eQ']$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800joina6eQ' $pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800m.room.create 5eQ']$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800joing4eQ3 $XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_accessm3eQ? $mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibilitye2eQ/ $QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rulesg1eQ3 $ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels 0eQ']$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800joina/eQ' $WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create .eQ']$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800joinp-eQ))$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800m,eQ? $7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibilitye+eQ/ $cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rulesj*eQ9 $A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_aliasg)eQ3 $v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels (eQ']$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800joina'eQ' $KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800m.room.createm&eQ? $YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800m.room.history_visibility kV> ^ 1  ~ Q $ p C  c 6 V )uIh;[.{N!mA`3S&rFyL,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800+Q !vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800RR+Q !vyCFfUTJKYJSDadFhT:localhost:8800QQ,Q!vttkrtSyHEJXVMlvLo:localhost:8800 A A,Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ @,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? ?,Q!vttkrtSyHEJXVMlvLo:localhost:8800 > >,Q!vttkrtSyHEJXVMlvLo:localhost:8800 = =,Q!vttkrtSyHEJXVMlvLo:localhost:8800 < <,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; ;,Q!vttkrtSyHEJXVMlvLo:localhost:8800 : :+Q !vttkrtSyHEJXVMlvLo:localhost:8800 9 9,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800+Q !vpuivIQDEhyuhOLWpg:localhost:8800,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v v,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u u,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t t,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s s,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r r,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q q+Q !vnFXnkCSfTbsSNKrtg:localhost:8800 p p,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 +Q !vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800+Q !vVmSdclwPIqYDbnmPn:localhost:8800,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  +Q !vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRRNxNyGboLHNhqQvr:localhost:8800ZZ,Q!vRRNxNyGboLHNhqQvr:localhost:8800YY,Q!vRRNxNyGboLHNhqQvr:localhost:8800XX,Q!vRRNxNyGboLHNhqQvr:localhost:8800WW,Q!vRRNxNyGboLHNhqQvr:localhost:8800VV,Q!vRRNxNyGboLHNhqQvr:localhost:8800UU+Q !vRRNxNyGboLHNhqQvr:localhost:8800TT,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ~~,Q!vOfeZvbtpuHfoqShFl:localhost:8800}},Q!vOfeZvbtpuHfoqShFl:localhost:8800||,Q!vOfeZvbtpuHfoqShFl:localhost:8800{{,Q!vOfeZvbtpuHfoqShFl:localhost:8800zz,Q!vOfeZvbtpuHfoqShFl:localhost:8800yy,Q!vOfeZvbtpuHfoqShFl:localhost:8800xx,Q!vOfeZvbtpuHfoqShFl:localhost:8800ww+Q !vOfeZvbtpuHfoqShFl:localhost:8800vv,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800+Q !vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 -,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800ZZ,Q!vyCFfUTJKYJSDadFhT:localhost:8800XX,Q!vyCFfUTJKYJSDadFhT:localhost:8800VV,Q!vyCFfUTJKYJSDadFhT:localhost:8800TT,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 kV> ^ 1  ~ Q $ p C  c 6 V )uIh;[.{N!mA`3S&rFyL,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800+Q !vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800RR+Q !vyCFfUTJKYJSDadFhT:localhost:8800QQ,Q!vttkrtSyHEJXVMlvLo:localhost:8800 A A,Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ @,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? ?,Q!vttkrtSyHEJXVMlvLo:localhost:8800 > >,Q!vttkrtSyHEJXVMlvLo:localhost:8800 = =,Q!vttkrtSyHEJXVMlvLo:localhost:8800 < <,Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; ;,Q!vttkrtSyHEJXVMlvLo:localhost:8800 : :+Q !vttkrtSyHEJXVMlvLo:localhost:8800 9 9,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800,Q!vpuivIQDEhyuhOLWpg:localhost:8800+Q !vpuivIQDEhyuhOLWpg:localhost:8800,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v v,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u u,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t t,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s s,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r r,Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q q+Q !vnFXnkCSfTbsSNKrtg:localhost:8800 p p,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vZGjXEXQoCaoUXnkCa:localhost:8800 +Q !vZGjXEXQoCaoUXnkCa:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800 ,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800,Q!vVmSdclwPIqYDbnmPn:localhost:8800+Q !vVmSdclwPIqYDbnmPn:localhost:8800,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRmMcoJDeCupADwqac:localhost:8800  +Q !vRmMcoJDeCupADwqac:localhost:8800  ,Q!vRRNxNyGboLHNhqQvr:localhost:8800ZZ,Q!vRRNxNyGboLHNhqQvr:localhost:8800YY,Q!vRRNxNyGboLHNhqQvr:localhost:8800XX,Q!vRRNxNyGboLHNhqQvr:localhost:8800WW,Q!vRRNxNyGboLHNhqQvr:localhost:8800VV,Q!vRRNxNyGboLHNhqQvr:localhost:8800UU+Q !vRRNxNyGboLHNhqQvr:localhost:8800TT,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ,Q!vOfeZvbtpuHfoqShFl:localhost:8800 ~~,Q!vOfeZvbtpuHfoqShFl:localhost:8800}},Q!vOfeZvbtpuHfoqShFl:localhost:8800||,Q!vOfeZvbtpuHfoqShFl:localhost:8800{{,Q!vOfeZvbtpuHfoqShFl:localhost:8800zz,Q!vOfeZvbtpuHfoqShFl:localhost:8800yy,Q!vOfeZvbtpuHfoqShFl:localhost:8800xx,Q!vOfeZvbtpuHfoqShFl:localhost:8800ww+Q !vOfeZvbtpuHfoqShFl:localhost:8800vv,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vJQYmOxOBLwFKzYkNj:localhost:8800+Q !vJQYmOxOBLwFKzYkNj:localhost:8800,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 -,Q!vBvlJEXUSQKUYmsKcO:localhost:8800 ,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800,Q!vyCFfUTJKYJSDadFhT:localhost:8800ZZ,Q!vyCFfUTJKYJSDadFhT:localhost:8800XX,Q!vyCFfUTJKYJSDadFhT:localhost:8800VV,Q!vyCFfUTJKYJSDadFhT:localhost:8800TT,Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 [   T ) } R '{PmB _ 4%yN#wL!uJsHqFoDT)W. _ 4 _ 6*Q!yNfCaBMPezurwkJRAX:localhost:8800oa*Q!yNfCaBMPezurwkJRAX:localhost:8800n`*Q!yNfCaBMPezurwkJRAX:localhost:8800m_*Q!yWhIsLsgNVGcnELrDS:localhost:8800A3*Q!yWhIsLsgNVGcnELrDS:localhost:8800@2*Q!yWhIsLsgNVGcnELrDS:localhost:8800?1*Q!yWhIsLsgNVGcnELrDS:localhost:8800B4*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zHBgbzUZHshNGZvIBS:localhost:8800 A ~*Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ }*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? |*Q!zHBgbzUZHshNGZvIBS:localhost:8800 > {*Q!zHBgbzUZHshNGZvIBS:localhost:8800 = z*Q!zHBgbzUZHshNGZvIBS:localhost:8800 < y*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; x*Q!zHBgbzUZHshNGZvIBS:localhost:8800 : w*Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 v*Q!zHBgbzUZHshNGZvIBS:localhost:8800 8 u*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800 *Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!yfizglmCXdcqCgDrTr:localhost:8800 { *Q!yfizglmCXdcqCgDrTr:localhost:8800 z *Q!yfizglmCXdcqCgDrTr:localhost:8800 y *Q!yfizglmCXdcqCgDrTr:localhost:8800 x *Q!yfizglmCXdcqCgDrTr:localhost:8800 w *Q!yfizglmCXdcqCgDrTr:localhost:8800 v *Q!yfizglmCXdcqCgDrTr:localhost:8800 u *Q!yfizglmCXdcqCgDrTr:localhost:8800 t *Q!yfizglmCXdcqCgDrTr:localhost:8800 s *Q!yfizglmCXdcqCgDrTr:localhost:8800 r *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 l*Q!yTQmLDAxZscWKLMSWh:localhost:8800 / k*Q!yTQmLDAxZscWKLMSWh:localhost:8800 . j*Q!yTQmLDAxZscWKLMSWh:localhost:8800 - i*Q!yTQmLDAxZscWKLMSWh:localhost:8800 , h*Q!yTQmLDAxZscWKLMSWh:localhost:8800 + g*Q!yTQmLDAxZscWKLMSWh:localhost:8800 * f*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) e*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( d*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' c*Q!yTQmLDAxZscWKLMSWh:localhost:8800 & b*Q!yTQmLDAxZscWKLMSWh:localhost:8800 % a*Q!yTQmLDAxZscWKLMSWh:localhost:8800 $ `*Q!yLccBXjjEasExpsXlt:localhost:8800 # *Q!yNfCaBMPezurwkJRAX:localhost:8800l^*Q!yNfCaBMPezurwkJRAX:localhost:8800k]*Q!yNfCaBMPezurwkJRAX:localhost:8800j\*Q!yWhIsLsgNVGcnELrDS:localhost:8800TF*Q!yWhIsLsgNVGcnELrDS:localhost:8800M?*Q!yWhIsLsgNVGcnELrDS:localhost:8800F8*Q!yWhIsLsgNVGcnELrDS:localhost:8800E7*Q!yWhIsLsgNVGcnELrDS:localhost:8800D6*Q!yWhIsLsgNVGcnELrDS:localhost:8800C5(Q!zhCsYcaweVFJLLNwBz:localhost:8800+*(Q!zhCsYcaweVFJLLNwBz:localhost:8800*)*Q!zScKnCZCFPIIodAiQj:localhost:8800 M a*Q!zScKnCZCFPIIodAiQj:localhost:8800 J ^*Q!zScKnCZCFPIIodAiQj:localhost:8800 H \*Q!zScKnCZCFPIIodAiQj:localhost:8800 F Z*Q!zScKnCZCFPIIodAiQj:localhost:8800 D X*Q!zScKnCZCFPIIodAiQj:localhost:8800 B V(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800'Q !zNCItZNbpkZKuufRhC:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800 g * T~=ggd]!c@anon-20191002_181700-491:localhost:8800SADWUTCSYMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEREI2hHaDgjb15SUH4mfnkKMDAyZnNpZ25hdHVyZSAJ1FSuAUtTVNArNDFY35Uq_CzNbCGJYdOqDqeWyKb6Rgogc]!c@anon-20191002_181700-490:localhost:8800YZYHXUDJBUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhZOlNLeTV6O2VkZEZVRiYKMDAyZnNpZ25hdHVyZSDW0JN339nHd2TiUhKsMGIjP2E5X8dWkol_YL1U-jgQrwogb]!c@anon-20191002_181700-488:localhost:8800SPGGZQRKHZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEgyMUNmKk9icGUqN2NHfksKMDAyZnNpZ25hdHVyZSBcIrli62y38eRAJeUSrw7phELWbsb8uBnlmk51SVlcVAoga]!c@anon-20191002_181700-486:localhost:8800OFHZWZEQDSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtdkVOeEImaGosbkRuaCMKMDAyZnNpZ25hdHVyZSAst0kWH515M7wos_Px_P3ZpOWPcAFi2Dk87IklcqeC0wog`]!c@anon-20191002_181700-484:localhost:8800FWOSSLYDNUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI3V0A1Kk9pSTBuc1d3QzgKMDAyZnNpZ25hdHVyZSDmK_vwVB9OE47THQJLs3NYqrytEYDmxvoD6gHlW2-8CAog_]!c@anon-20191002_181700-482:localhost:8800JRYARQINGZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHk2fmkxNF9FeWNjZC0tZlgKMDAyZnNpZ25hdHVyZSAwKLAyjPGW1QT9IyTerCxIvt0ApwhEeLyojRtl0svVHgog^]!c@anon-20191002_181700-480:localhost:8800XJOMFBTCLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80Y0lLXi53UENIV2NkMXIKMDAyZnNpZ25hdHVyZSCQeO6Axlelr1uQ5Ba_QnF6X4yOrZBAfKPpvVAcJgyvFAog]]!c@anon-20191002_181700-479:localhost:8800NIEZZMOKPHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhZ24jeHIqLDRsZVdPT2QKMDAyZnNpZ25hdHVyZSBjM_Bh1WPcAlUdj2aMzKkrptKrIVkgaYAmXyvQtryqcQog\]!c@anon-20191002_181700-478:localhost:8800VNBLCYVGBZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFdXTHh6bHpnWlYyJlFBUlEKMDAyZnNpZ25hdHVyZSDyFDPx8OoysGYBrZgFqGFTm4GhstUPiBR-r_PUXXCS_wog[]!c@anon-20191002_181700-477:localhost:8800UXWKBDSXBAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI5NVJOXl9Ufi5fLVE0X3AKMDAyZnNpZ25hdHVyZSBH7f6nerYWHnbyC2AJ5ltRw3mETrMPxF3X9K6dm5A6TAogZ]!c@anon-20191002_181700-476:localhost:8800RXRCJNSJQBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpLO0tKb0w1N0VhM1BKYjIKMDAyZnNpZ25hdHVyZSDANku7Hm6fQg5U9_Q-Q8amH5LxYzzgP_i4WcVjTrcwuQo  tzeQau$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2565}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI"], "type": "m.room.join_rules", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042755269, "hashes": {"sha256": "U7KLxK0dPPxczeoVeEtrPB7XlT0+XEcV7B/yVkPFpgg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kEvaN0pyMy7g9TBwWyjHCXFdaDPfiw7hS2TqDZi5mQMvL8NLH8jM76Gyc7+Ppk8Pzhrx9uwFaurftaMs11RzBA"}}, "unsigned": {"age_ts": 1570042755269}} yeQa!$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2564}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg"], "type": "m.room.canonical_alias", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"alias": "#__ANON__-19:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042754569, "hashes": {"sha256": "lnVa9Wm60k3X9sBcet4sb3ZYngM7ClNoWLL9HNypUqs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "whtSUrE9WBwEBh+884eXMO2RcEiyaPe4CVxpLCvgTcS71o0i9lTXmwQkcAWqPZOV+mrjtmiZsu5osAKq6UBHDg"}}, "unsigned": {"age_ts": 1570042754569}}kxeQac$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2563}{"auth_events": ["$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "type": "m.room.power_levels", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"users": {"@anon-20191002_181700-476:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042753862, "hashes": {"sha256": "xj7f6QnCQFWZlbxHS31h8QRTviE+GuzH8rNSGNslrNw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x+Q64Lfi2yEoOF/DD9id8YtNBOcplbJI0vuiCJr6Kvuc8TsTh/HqjS8oFDDYCU+yvIO1prZKGxq0bhpVbTgxCQ"}}, "unsigned": {"age_ts": 1570042753862}}vweQay$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2562}{"auth_events": ["$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo"], "prev_events": ["$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo"], "type": "m.room.member", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-476", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-476:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042753338, "hashes": {"sha256": "99h9mqRAdmGpj0xXLA4QEqMmYJKPxwGx9qPM+WKv63U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rYNXwmyI/szUf/MhuFa5tNPhZ0yi8tIto/bZUuA2X7Mt5xN8nZupJ4syLRNtRs+otzNraEghSRDsiGqsJs85Aw"}}, "unsigned": {"age_ts": 1570042753338}} p( ? H K m pMPu-Md*Q' e )!KIHYKMzkRDrJwiywwz:localhost:8800m.room.create$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo8)Q']ee '!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM (Q']e &!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMj'Q3 e $!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_access$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEp&Q? e #!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibility$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8h%Q/ e "!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rules$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUj$Q3 e !!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 #Q']e !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Ud"Q' e !RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg !Q']e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gks Q))e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwpQ? e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibility$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8hQ/ e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rules$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyImQ9 e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_alias$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YjQ3 e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 Q']e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4dQ' e !DqxFmsXPclgGqpSwdy:localhost:8800m.room.create$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s8Q']ee !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc Q']e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/XcjQ3 e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_access$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8pQ? e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibility$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkhQ/ e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rules$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYjQ3 e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 Q']e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-478:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/YdQ' e !uqIEMXzdeNeXdJmuwh:localhost:8800m.room.create$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0 Q']e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-477:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888sQ))e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.aliaseslocalhost:8800$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4pQ? e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.history_visibility$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXEhQ/ e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.join_rules$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uom Q9 e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.canonical_alias$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtIj Q3 e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.power_levels$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg Q']e !yAzXcNLHMuqFOcOexj:localhost:8800m.room.member@anon-20191002_181700-476:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM IZNh6 | J  V $ P b08 n p>T"<   \ *BzHt  D  j(n< Z21e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA_1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE'1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U61e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U51e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0m1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0l1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0k1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ u1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ t1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0 1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw01e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU 1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMj1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMi1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624z1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQG1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x5981e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0 1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0 1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U71e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF01e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA11e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA01e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg1e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624{1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ v21e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI41e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI31e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI21e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgd1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ v1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc|1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc{21e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu41e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhMh1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA^1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc}1e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4 a} { y w u sqomkigeca~neeQ$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~meeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800~leeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800~keeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~jeeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~ieeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~heeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800~geeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~feeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~eeeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~deeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~ceeQ$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~beeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~aeeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~`eeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~_eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~^eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~]eeQ$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800~\eeQ$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800~[eeQ$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~ZeeQ$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800~YeeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo!yAzXcNLHMuqFOcOexj:localhost:8800~XeeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800~WeeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800~VeeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800~UeeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800~TeeQ$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800~SeeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800~ReeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo!yAzXcNLHMuqFOcOexj:localhost:8800~QeeQ$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800~PeeQ$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM!yAzXcNLHMuqFOcOexj:localhost:8800 D P X>P & p8 \   _ -  V  D|J v  vD p?j8e3 | J  WV_li39c1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 :$d1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM%21e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g1e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4T20e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4l1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI1e$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E 1e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs T1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE(1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 ;1e$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQYd1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI 1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcK1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUx1e$sONSsmFiO9fiU4lcuxG3-EPdrsIbMcL6nIC2gfXaVqM1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY*1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA`2 1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI01e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo{1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k( 21e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY<1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk0e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqIA1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sOJmRh0AU9k3EpXYAZpgA5Ae0YopOkVKAim9JPMCV1U1e$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE1e$sE6MskWlLqcayhbzaDderHQPM7QUfLGc1JN8pBtNhr001e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI K1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A 1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY 1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAW1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYT1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc^1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo j1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U01e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4s1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w51e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg 1e$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF901e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM 21e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIj21e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY421e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk1e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok  wV~eQa9$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 484, "stream_ordering": 2569}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo"], "prev_events": ["$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8"], "type": "m.room.member", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-477:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-477", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-477:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042758527, "hashes": {"sha256": "ayW7FNxkLg+jB6dQaYw9FbJdJl5hH2FLyfpMXumXeeA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TCgxpMGA6aLvHB5OmR/Cn8r8b+Afv1RRB6zKCO5+7BjXzO8JvbzmS83L8uKLMh1bmiSPlpjnEd979jcq8AYZBw"}}, "unsigned": {"age_ts": 1570042758527}}H}eQa$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2568}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4"], "type": "m.room.test", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042758026, "hashes": {"sha256": "t7GXGmWcOq1vbzusoa+dsVzDuUfurQrI6P5/+MiUy+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X5cedbWh/jjukI6jCD5lwLJd/dSX/A7v3qCAGeEqtLYpfk1gi9AZ01Mw3CEYSDUCVI0NOE3BBqdGnXz5Jgt7Cw"}}, "unsigned": {"age_ts": 1570042758026}}|eQa5$Vn5vDQqAh7PWBZoVqQNnWLJ92nqbd2f3b0vSZCwOPp4!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2567}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE"], "type": "m.room.aliases", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"aliases": ["#__ANON__-19:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042757093, "hashes": {"sha256": "m09/0vevOTjXhmvoUwxBZAYfKKZdfa8LhNd1YrYk/Ak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9p8xj3+q3BI0aV3uYwKP0O8G+hzN9gbHdY47Wd/Ney5RJ/8E4pPzD8Sju3eMQDdmElFTZEspoUXsYT/Ej02ZBA"}}, "unsigned": {"age_ts": 1570042757093}}{eQa$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "stream_ordering": 2566}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo"], "type": "m.room.history_visibility", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042756061, "hashes": {"sha256": "RTE0xlKn6ciIx2HZWclCFk7hYHuZRRBWIz5QOjYc0I4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JQMj6Y+3nDXsRFoDAoVKkzGFoQtGHNKyZicKL/Y9OQASjXL/VY6/irWhm7f9YgpIDUR5QpSvFVZU9oqgOh5CAA"}}, "unsigned": {"age_ts": 1570042756061}}  z keQac$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2573}{"auth_events": ["$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "type": "m.room.power_levels", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"users": {"@anon-20191002_181700-478:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042762500, "hashes": {"sha256": "2kn9NdMDfL195zdpLnZk8F214CG5SxB5xvyqK0BNN38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+a5LWtuhVVrfe9qa+t//IZj6n482eeDTJmwqCOFtk+BTjwOwQIgLoDRtD1mTEn7lz3xyprkZRbJ1qMRhB71mBg"}}, "unsigned": {"age_ts": 1570042762500}}veQay$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2572}{"auth_events": ["$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0"], "prev_events": ["$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0"], "type": "m.room.member", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-478", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-478:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042761957, "hashes": {"sha256": "qlTFhiPyOauzvAc8dIt4Fd+yPlNM0OESNpDyJIKCHqk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QZCphgpOv8ZciqXFMfSo18x85FjmNh/r99h/NVGDq1QChfDz7Mo3pNQQjnO9zx2mam8nWmRTWzsZuMHs1Sv9Cg"}}, "unsigned": {"age_ts": 1570042761957}}ieQa_$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2571}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-478:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042761169, "hashes": {"sha256": "DUnbNVNhxgW7VjpMYcITomI74k/w4R84ZAnW27Bn5jI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CUqZ5MRAMVkLcCr78GXVgmf6uawV4fsbXhE5dZAhNVEp/JOrQ+PTd3aVSq0pS1sGrRTzeu7JNMWOtwdS0L8ZCg"}}, "unsigned": {"age_ts": 1570042761169}}eQm$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800{"token_id": 483, "txn_id": "485", "stream_ordering": 2570}{"auth_events": ["$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg", "$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo", "$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM"], "prev_events": ["$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888"], "type": "m.room.message", "room_id": "!yAzXcNLHMuqFOcOexj:localhost:8800", "sender": "@anon-20191002_181700-476:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042759476, "hashes": {"sha256": "fSIfs0bsszmVjOaP4hVzkJ01tl+BVoD4NLPywuMOrEw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "psJ+Hsa10AG7feRPikrfvgxLQmr4XKuvhYFqkP11vZMhTKrltztHKU3gXi3aDmHdFcn94Sq018jTt1iszvT9Ag"}}, "unsigned": {"age_ts": 1570042759476}} Pm< xG R ! ] , h 7  s B  ~ M X'c2n= yHS"^,g6rA.G] @anon-20191002_181700-583:localhost:8800 .F] @anon-20191002_181700-582:localhost:8800 .E]@anon-20191002_181700-581:localhost:8800 .D] @anon-20191002_181700-580:localhost:8800 .C] @anon-20191002_181700-579:localhost:8800 .B] @anon-20191002_181700-578:localhost:8800 .A] @anon-20191002_181700-577:localhost:8800 .@] @anon-20191002_181700-576:localhost:8800 .?]@anon-20191002_181700-575:localhost:8800 />]@anon-20191002_181700-574:localhost:8800 .=] @anon-20191002_181700-573:localhost:8800 .<] @anon-20191002_181700-572:localhost:8800 .;] @anon-20191002_181700-571:localhost:8800 /:]@anon-20191002_181700-570:localhost:8800 .9] @anon-20191002_181700-569:localhost:8800 .8] @anon-20191002_181700-568:localhost:8800 .7] @anon-20191002_181700-567:localhost:8800 .6] @anon-20191002_181700-566:localhost:8800 .5] @anon-20191002_181700-565:localhost:8800 .4] @anon-20191002_181700-564:localhost:8800 z.3] @anon-20191002_181700-563:localhost:8800 u.2] @anon-20191002_181700-562:localhost:8800 p.1] @anon-20191002_181700-561:localhost:8800 k.0]@anon-20191002_181700-560:localhost:8800 f./] @anon-20191002_181700-558:localhost:8800 f..] @anon-20191002_181700-557:localhost:8800 P.-]@anon-20191002_181700-556:localhost:8800 Q.,]@anon-20191002_181700-555:localhost:8800 I.+] @anon-20191002_181700-554:localhost:8800 G.*] @anon-20191002_181700-552:localhost:8800 @.)] @anon-20191002_181700-551:localhost:8800 7.(] @anon-20191002_181700-550:localhost:8800 6.'] @anon-20191002_181700-549:localhost:8800 1.&] @anon-20191002_181700-548:localhost:8800 0.%] @anon-20191002_181700-545:localhost:8800 +.$] @anon-20191002_181700-543:localhost:8800 $.#] @anon-20191002_181700-541:localhost:8800 ."] @anon-20191002_181700-539:localhost:8800 .!] @anon-20191002_181700-537:localhost:8800 . ] @anon-20191002_181700-538:localhost:8800 .] @anon-20191002_181700-535:localhost:8800 .] @anon-20191002_181700-536:localhost:8800 .] @anon-20191002_181700-533:localhost:8800 .] @anon-20191002_181700-534:localhost:8800 .] @anon-20191002_181700-531:localhost:8800 .] @anon-20191002_181700-532:localhost:8800 .]@anon-20191002_181700-529:localhost:8800 .]@anon-20191002_181700-527:localhost:8800 .]@anon-20191002_181700-526:localhost:8800 .]@anon-20191002_181700-525:localhost:8800 .]@anon-20191002_181700-524:localhost:8800 .]@anon-20191002_181700-523:localhost:8800 .] @anon-20191002_181700-521:localhost:8800 .] @anon-20191002_181700-520:localhost:8800 .] @anon-20191002_181700-518:localhost:8800 .] @anon-20191002_181700-516:localhost:8800 .] @anon-20191002_181700-514:localhost:8800 .] @anon-20191002_181700-512:localhost:8800 . ] @anon-20191002_181700-510:localhost:8800 . ] @anon-20191002_181700-509:localhost:8800 . ] @anon-20191002_181700-508:localhost:8800 . ] @anon-20191002_181700-507:localhost:8800 . ] @anon-20191002_181700-506:localhost:8800 .] @anon-20191002_181700-505:localhost:8800 .] @anon-20191002_181700-503:localhost:8800 .] @anon-20191002_181700-501:localhost:8800 .] @anon-20191002_181700-499:localhost:8800 .] @anon-20191002_181700-497:localhost:8800 {.] @anon-20191002_181700-495:localhost:8800 q.] @anon-20191002_181700-493:localhost:8800 g.] @anon-20191002_181700-494:localhost:8800 f.] @anon-20191002_181700-492:localhost:8800 \.] @anon-20191002_181700-491:localhost:8800 ].~] @anon-20191002_181700-490:localhost:8800 S.}] @anon-20191002_181700-488:localhost:8800 I.|] @anon-20191002_181700-486:localhost:8800 A.{] @anon-20191002_181700-484:localhost:8800 :.z] @anon-20191002_181700-482:localhost:8800 (.y] @anon-20191002_181700-480:localhost:8800 .x] @anon-20191002_181700-479:localhost:8800  !l*L . 9 ^ ~$F(38\gli}Q3 en!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk |Q']em!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90c{Q' el!WYyiQAVvitxsLZKVCG:localhost:8800m.room.create$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w zQ']ek!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUoyQ? ej!KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibility$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4gxQ/ ei!KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rules$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwiwQ3 eh!KIHYKMzkRDrJwiywwz:localhost:8800m.room.power_levels$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw vQ']eg!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-484:localhost:8800$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMcuQ' ef!KIHYKMzkRDrJwiywwz:localhost:8800m.room.create$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo tQ']ee!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds sQ']ed!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$2I6G275l7JkWUBuJkQy5PN+nqKGQgNFjEkJcYKCrbzc rQ']ec!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMiqQ3 eb!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_access$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEopQ? ea!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibility$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8goQ/ e`!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rules$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUinQ3 e_!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 mQ']e^!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8UclQ' e]!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg kQ']e\!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk jQ']e[!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829$296DUxyQixT0lQ0odnSMp2FPVx9B3gcT8ETQCdLZ0i8riQ))eZ!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwohQ? eY!DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibility$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8ggQ/ eX!DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rules$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIlfQ9 eW!DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_alias$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6YieQ3 eV!DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 dQ']eU!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4ccQ' eT!DqxFmsXPclgGqpSwdy:localhost:8800m.room.create$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s bQ']eS!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w aQ']eR!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.member@anon-20191002_181700-479:localhost:8800$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xci`Q3 eQ!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.guest_access$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8o_Q? eP!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.history_visibility$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynkg^Q/ eO!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.join_rules$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEYi]Q3 eN!uqIEMXzdeNeXdJmuwh:localhost:8800m.room.power_levels$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0 4 4HeQa$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2577}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8"], "type": "m.room.test", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042765604, "hashes": {"sha256": "TrBuVfGk/Fr20VaSnvAV+v0vNz0kv/tL6R0dneVhWnk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dw2btlggDLyeSghQ7R3m82lCfkjrHC5QllKc8uYHBOOFhJ4GcWRUnC81exoPzkojIoQkzvlGGdDGcYgH++m0BA"}}, "unsigned": {"age_ts": 1570042765604}}{eQa$XiO5DyDxon9aIcURre9Xr1ELXkJbNYP5IWg25AmQnb8!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2576}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk"], "type": "m.room.guest_access", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042764602, "hashes": {"sha256": "s5WaU8l2ikYUhFQOqF4HhIgsjbemrQuISJ4Od9dossM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8PvBx2n/qH0PKjYE2/AlsgO6I5FLwSBkrttYWHI+yhzUJJrjep70cm7KcM/wC6foTmyGKBLRRUYVV3i/fW/iBA"}}, "unsigned": {"age_ts": 1570042764602}}eQa$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2575}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY"], "type": "m.room.history_visibility", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042763917, "hashes": {"sha256": "I5kRabYgegi5jouvRjja4ZlNb1N7+abGTDcIx/eFXQk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1xKKuXLwnZATLMjerUwXEoPHG7BF6wqIbbZzg77iu7F3qOIBLfOElXxVbkKpdAFxNdnsSMUg3yqehvDDZ7OtAw"}}, "unsigned": {"age_ts": 1570042763917}}teQau$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2574}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0"], "type": "m.room.join_rules", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042763242, "hashes": {"sha256": "Bc/U+3Hd/t5c5OvgXmNvh1LuXpKIBL/pfWbQ+lPhgS8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uDdzXVpaWgeAzO6CdzumEx9W5PrQNgoes706HRaIwBkk7swHQWoGZFTBYTajwMrdmXHKb7+WP7hfQWLwwZbvCw"}}, "unsigned": {"age_ts": 1570042763242}}  g eQm$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "txn_id": "486", "stream_ordering": 2580}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w"], "type": "m.room.message", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042767911, "hashes": {"sha256": "YSS0L9TFwPPzfP7/atbXFVRcTFv/NubTtevA1CQA0U8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2ywMYxzWfUssSSQaf0Ggc2hz/xhylStlC/pvVxR/xwDUT+a1R8yOnzp1B4h3btiox+7irW91iWPO5fcfSQ0qBA"}}, "unsigned": {"age_ts": 1570042767911}}HeQa$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 486, "stream_ordering": 2579}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY", "$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc"], "prev_events": ["$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc"], "type": "m.room.member", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-479:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-479", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-479:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042766838, "hashes": {"sha256": "FdWyzppwFCQuOCbM3pdaQbS+ReiZDI2s3m6fSE8emyk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAZoiCOWoKdGx9g9hUjbks9ZMxjbHkE2gvP0Rp2FQv+XXmMo3fcSaQoFJHzM1xc5VlFrz73Of6tlgEDSJ0CVBQ"}}, "unsigned": {"age_ts": 1570042766838, "replaces_state": "$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc"}}eQa7$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800{"token_id": 485, "stream_ordering": 2578}{"auth_events": ["$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U0", "$WhaL4i7tUp3BT7SWkDTvzJ4KSKiIeC5MuJ2CbqJSfC0", "$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY", "$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Y"], "prev_events": ["$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg"], "type": "m.room.member", "room_id": "!uqIEMXzdeNeXdJmuwh:localhost:8800", "sender": "@anon-20191002_181700-478:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-479", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-479:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042766187, "hashes": {"sha256": "dAHBcv5qqDOVXCldfV5rg639+4jA50bHRxbALtrnnXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z8+unsELLH8S5LbC2V3LUsa1etBpNPCCDg6WVLyBfHimiqgSWS6e37G7x7sm+n5nCstmIRd/1HpXEeWNpzFyCQ"}}, "unsigned": {"age_ts": 1570042766187, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-478:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-478:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-478", "avatar_url": null}, "sender": "@anon-20191002_181700-478:localhost:8800"}]}} k\ q # v  y3HFV k) e'Q  ]$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxom.room.create!KIHYKMzkRDrJwiywwz:localhost:8800m׳Em׳@anon-20191002_181700-484:localhost:8800!(e)Q ] $k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAm.room.message!RSLvuCuAqKQQrKCxNq:localhost:8800 m׬m׭@anon-20191002_181700-482:localhost:8800 'e'Q ] $IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edsm.room.member!RSLvuCuAqKQQrKCxNq:localhost:8800 mש1mת#@anon-20191002_181700-483:localhost:8829 &e'Q ]$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KMm.room.member!RSLvuCuAqKQQrKCxNq:localhost:8800mץmצi@anon-20191002_181700-482:localhost:8800%e#Q ]$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5Em.room.test!RSLvuCuAqKQQrKCxNq:localhost:8800mף mף%@anon-20191002_181700-482:localhost:8800&$e3Q ]$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjEm.room.guest_access!RSLvuCuAqKQQrKCxNq:localhost:8800mןmנ@anon-20191002_181700-482:localhost:8800,#e?Q ]$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8m.room.history_visibility!RSLvuCuAqKQQrKCxNq:localhost:8800mלmם@anon-20191002_181700-482:localhost:8800$"e/Q ]$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgUm.room.join_rules!RSLvuCuAqKQQrKCxNq:localhost:8800mיmי@anon-20191002_181700-482:localhost:8800&!e3Q ]$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4m.room.power_levels!RSLvuCuAqKQQrKCxNq:localhost:8800mז:mחs@anon-20191002_181700-482:localhost:8800 e'Q ]$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Um.room.member!RSLvuCuAqKQQrKCxNq:localhost:8800mדmהU@anon-20191002_181700-482:localhost:8800 e'Q  ]$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRgm.room.create!RSLvuCuAqKQQrKCxNq:localhost:8800mבmב@anon-20191002_181700-482:localhost:8800!e)Q ] $CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jEm.room.message!DqxFmsXPclgGqpSwdy:localhost:8800 m׊m׌o@anon-20191002_181700-480:localhost:8800 e'Q ] $xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gkm.room.member!DqxFmsXPclgGqpSwdy:localhost:8800 mׅim׆e@anon-20191002_181700-481:localhost:8829e#Q ]$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84m.room.test!DqxFmsXPclgGqpSwdy:localhost:8800m׃Im׃M@anon-20191002_181700-480:localhost:8800!e)Q ]$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzwm.room.aliases!DqxFmsXPclgGqpSwdy:localhost:8800m׀{mׁH@anon-20191002_181700-480:localhost:8800,e?Q ]$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8m.room.history_visibility!DqxFmsXPclgGqpSwdy:localhost:8800m|m~x@anon-20191002_181700-480:localhost:8800$e/Q ]$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyIm.room.join_rules!DqxFmsXPclgGqpSwdy:localhost:8800mymz@anon-20191002_181700-480:localhost:8800)e9Q ]$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Ym.room.canonical_alias!DqxFmsXPclgGqpSwdy:localhost:8800mwmw@anon-20191002_181700-480:localhost:8800&e3Q ]$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50m.room.power_levels!DqxFmsXPclgGqpSwdy:localhost:8800msmud@anon-20191002_181700-480:localhost:8800 e'Q ]$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4m.room.member!DqxFmsXPclgGqpSwdy:localhost:8800mqmq@anon-20191002_181700-480:localhost:8800 e'Q  ]$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/sm.room.create!DqxFmsXPclgGqpSwdy:localhost:8800mnmn@anon-20191002_181700-480:localhost:8800!e)Q ] $Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8m.room.message!uqIEMXzdeNeXdJmuwh:localhost:8800 mj'mj+@anon-20191002_181700-478:localhost:8800 e'Q ] $0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wm.room.member!uqIEMXzdeNeXdJmuwh:localhost:8800 memfZ@anon-20191002_181700-479:localhost:8800 e'Q ]$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xcm.room.member!uqIEMXzdeNeXdJmuwh:localhost:8800mckmc@anon-20191002_181700-478:localhost:8800 2bd=zS, i B   X 1 n G ] 6  s L %b&O$157004182060gAdxi:localhost:8800 &O$157004182060gAdxi:localhost:8800 &O$157004181959Afmmv:localhost:8800 &O$157004181959Afmmv:localhost:8800 &O$157004181959Afmmv:localhost:8800 &O$157004181958ixShg:localhost:8800 &O$157004181958ixShg:localhost:8800 &O$157004181958ixShg:localhost:8800 &O$157004181857fcmAB:localhost:8800 &O$157004181857fcmAB:localhost:8800 &O$157004181756ejZNp:localhost:8800 &O$157004180853KmrHT:localhost:8800 &O$157004180853KmrHT:localhost:8800 &O$157004180853KmrHT:localhost:8800 &O$157004180752YHMqi:localhost:8800 &O$157004180752YHMqi:localhost:8800 &O$157004180752YHMqi:localhost:8800 &O$157004180751hMlwg:localhost:8800 &O$157004180751hMlwg:localhost:8800 &O$157004180751hMlwg:localhost:8800 &O$157004180650ruqIl:localhost:8800 &O$157004180650ruqIl:localhost:8800 &O$157004180650ruqIl:localhost:8800 &O$157004180549mJBJB:localhost:8800 &O$157004180549mJBJB:localhost:8800 &O$157004180448zlZXD:localhost:8800 &O$157004180346TRucp:localhost:8800 &O$157004180346TRucp:localhost:8800 &O$157004180346TRucp:localhost:8800 &O$157004180045QtsUE:localhost:8800 &O$157004180045QtsUE:localhost:8800 &O$157004180045QtsUE:localhost:8800 &O$157004179944JKWNJ:localhost:8800 &O$157004179944JKWNJ:localhost:8800 &O$157004179944JKWNJ:localhost:8800 &O$157004179843yDrjz:localhost:8800 &O$157004179843yDrjz:localhost:8800 &O$157004179843yDrjz:localhost:8800 &O$157004179742OaMxS:localhost:8800 &O$157004179742OaMxS:localhost:8800 &O$157004179742OaMxS:localhost:8800 &O$157004179541PbBIm:localhost:8800 &O$157004179541PbBIm:localhost:8800 &O$157004179541PbBIm:localhost:8800 &O$157004179340NSiie:localhost:8800 &O$157004179340NSiie:localhost:8800 &O$157004179340NSiie:localhost:8800 &O$157004179239LLqht:localhost:8800 &O$157004179239LLqht:localhost:8800 &O$157004179239LLqht:localhost:8800 Ht=  sm< xG MX'  ~ Bn H2 S"yc^it8- R ! ] , 7 s  ]  -1-1b0]v@anon-20191002_181700-514:localhost:8800r0]y@anon-20191002_181700-518:localhost:8800x0]n@anon-20191002_181700-513:localhost:8829m0]}@anon-20191002_181700-521:localhost:8800{0]}@anon-20191002_181700-520:localhost:8800|0]k@anon-20191002_181700-519:localhost:8829j0]g@anon-20191002_181700-507:localhost:8800f0]d@anon-20191002_181700-503:localhost:8800c0]d@anon-20191002_181700-505:localhost:8800b0]~@anon-20191002_181700-522:localhost:8829}0]e@anon-20191002_181700-512:localhost:8800d0]\@anon-20191002_181700-499:localhost:8800Z0]h@anon-20191002_181700-509:localhost:8800g0]X@anon-20191002_181700-496:localhost:8829W0]W@anon-20191002_181700-506:localhost:8800V0]U@anon-20191002_181700-494:localhost:8800T0]i@anon-20191002_181700-511:localhost:8829h0]S@anon-20191002_181700-504:localhost:8829R0]^@anon-20191002_181700-508:localhost:8800]0]Q@anon-20191002_181700-492:localhost:8800P0]I@anon-20191002_181700-484:localhost:8800F0]_@anon-20191002_181700-498:localhost:8829^0]K@anon-20191002_181700-495:localhost:8800J0]@anon-20191002_181700-442:localhost:88000]C@anon-20191002_181700-493:localhost:8800B0] @anon-20191002_181700-445:localhost:88000]A@anon-20191002_181700-491:localhost:8800@0]?@anon-20191002_181700-481:localhost:8829>0]6@anon-20191002_181700-475:localhost:880050]N@anon-20191002_181700-488:localhost:8800M0]M@anon-20191002_181700-497:localhost:8800L0]a@anon-20191002_181700-510:localhost:8800`0]7@anon-20191002_181700-482:localhost:880060]/@anon-20191002_181700-473:localhost:8800.0].@anon-20191002_181700-480:localhost:8800-0],@anon-20191002_181700-468:localhost:8829+0]+@anon-20191002_181700-478:localhost:8800*0]8@anon-20191002_181700-477:localhost:880070])@anon-20191002_181700-476:localhost:8800(0]:@anon-20191002_181700-479:localhost:880090]6@anon-20191002_181700-469:localhost:880010]&@anon-20191002_181700-474:localhost:8829%0]<@anon-20191002_181700-489:localhost:8829;0]$@anon-20191002_181700-466:localhost:8829#0] @anon-20191002_181700-447:localhost:8800 0] @anon-20191002_181700-454:localhost:8800 0]=@anon-20191002_181700-483:localhost:8829<0]@anon-20191002_181700-449:localhost:88000]@anon-20191002_181700-459:localhost:88290]P@anon-20191002_181700-490:localhost:8800O0]@anon-20191002_181700-550:localhost:88000]@anon-20191002_181700-548:localhost:88000]@anon-20191002_181700-543:localhost:88000]@anon-20191002_181700-541:localhost:88000]@anon-20191002_181700-539:localhost:88000]@anon-20191002_181700-537:localhost:88000]@anon-20191002_181700-544:localhost:88290]@anon-20191002_181700-542:localhost:88290]@anon-20191002_181700-540:localhost:88290]@anon-20191002_181700-535:localhost:88000]@anon-20191002_181700-533:localhost:88000]@anon-20191002_181700-531:localhost:88000]#@anon-20191002_181700-464:localhost:8800"0]#@anon-20191002_181700-458:localhost:8800!0] @anon-20191002_181700-462:localhost:88000]@anon-20191002_181700-467:localhost:88000]@anon-20191002_181700-460:localhost:88000]@anon-20191002_181700-465:localhost:88000]@anon-20191002_181700-463:localhost:88000]@anon-20191002_181700-451:localhost:88290]@anon-20191002_181700-461:localhost:88000]@anon-20191002_181700-453:localhost:8829   * eQa!$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2584}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50"], "type": "m.room.canonical_alias", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"alias": "#__ANON__-20:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042771201, "hashes": {"sha256": "QYxKe0rDjv3ODZ0xvsF7+sJRpK/2Yx+Gjb0lMurQfEQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0K6Fzm21oB/uwdNnKv45AeA5L3Czhm9Y6bvM3xrKs//W6HkPmAUct281GS5mgsCapXMoqq3F3sA4BHOOBT/0AA"}}, "unsigned": {"age_ts": 1570042771201}}k eQac$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2583}{"auth_events": ["$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "type": "m.room.power_levels", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"users": {"@anon-20191002_181700-480:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042770362, "hashes": {"sha256": "Q8S1xKtxWLK7bhRbRaqCeQpPellJSIqbVVpaG1E+BXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QEv5wvoISZvEeyFVAnCcdNUlQHC1xWQWKlESkxPginoLkKcVcHYNmk0ENnUsndXaYuf8jlobyEpVXiJNgK34Cg"}}, "unsigned": {"age_ts": 1570042770362}}v eQay$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2582}{"auth_events": ["$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s"], "prev_events": ["$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s"], "type": "m.room.member", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-480", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-480:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042769796, "hashes": {"sha256": "PDgxjynqJVoFfJQa0+ZSyckyJK8jcBBEk7PLy7/m1pU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DnO+KHAkAStZd14fJc5yZ8XVsB9lgmhFN6TJrTPRLpacE2fozaFA4/ZkGqS2QcsYTqwupO6EXbLK45Zkqs3QDA"}}, "unsigned": {"age_ts": 1570042769796}}i eQa_$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2581}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-480:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042769048, "hashes": {"sha256": "C0VzMRf0wfkZ+HEOrBMj6MTOawLfUMCPoY+0VmRlTGY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c65piV9eFShpVF7oxLFYDpn+ItwHnc9WHiff4fAJSHWSEQ3v0+hVSoJeQwo+O7eeL63wVgxtHevhYa1hpYfEAA"}}, "unsigned": {"age_ts": 1570042769048}} ``8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800'Q!KxhGcTbEWmtgGNpdox:localhost:8800k'Q!KxhGcTbEWmtgGNpdox:localhost:8800j'Q!KxhGcTbEWmtgGNpdox:localhost:8800i'Q!KxhGcTbEWmtgGNpdox:localhost:8800h'Q!KxhGcTbEWmtgGNpdox:localhost:8800g'Q!KxhGcTbEWmtgGNpdox:localhost:8800f'Q!KxhGcTbEWmtgGNpdox:localhost:8800e'Q!KxhGcTbEWmtgGNpdox:localhost:8800d'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KeqmSjifajNKxtgqhj:localhost:8800"'Q!KeqmSjifajNKxtgqhj:localhost:8800!'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800 'Q!KeBlWUQiLYUoILKkTB:localhost:8800 'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KdOYYnOuwAyQzqwUki:localhost:8800 'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 O'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 N'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 M'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 L'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 K'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 J'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800 /'Q!KIHYKMzkRDrJwiywwz:localhost:8800 .'Q!KIHYKMzkRDrJwiywwz:localhost:8800 -'Q!KIHYKMzkRDrJwiywwz:localhost:8800 ,'Q!KIHYKMzkRDrJwiywwz:localhost:8800 +'Q!KIHYKMzkRDrJwiywwz:localhost:8800 *'Q!KIHYKMzkRDrJwiywwz:localhost:8800 )'Q!KIHYKMzkRDrJwiywwz:localhost:8800 ('Q!KIHYKMzkRDrJwiywwz:localhost:8800 ''Q!KIHYKMzkRDrJwiywwz:localhost:8800 &'Q!KIHYKMzkRDrJwiywwz:localhost:8800 %'Q!KIHYKMzkRDrJwiywwz:localhost:8800 $'Q!KIHYKMzkRDrJwiywwz:localhost:8800 #'Q!KIHYKMzkRDrJwiywwz:localhost:8800 "'Q!KIHYKMzkRDrJwiywwz:localhost:8800 !'Q!KIHYKMzkRDrJwiywwz:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800 'Q!KIHYKMzkRDrJwiywwz:localhost:8800 'Q!JusxqeECtidaPlWqhp:localhost:8800'Q!JusxqeECtidaPlWqhp:localhost:8800 a} { y w u sqomkigeca~ eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~ eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800~~eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~}eeQ$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~|eeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~{eeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~zeeQ$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~yeeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~xeeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~weeQ$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~veeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~ueeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~teeQ$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~seeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~reeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800~qeeQ$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50!DqxFmsXPclgGqpSwdy:localhost:8800~peeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800~oeeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s!DqxFmsXPclgGqpSwdy:localhost:8800 !+H W `   ADS47 AeQ']$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829 @eQ']$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829m?eQ? $e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibilitye>eQ/ $Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rulesg=eQ3 $6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels <eQ']$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800a;eQ' $l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create :eQ']$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829 9eQ']$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829m8eQ? $9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibilitye7eQ/ $zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rulesg6eQ3 $sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels 5eQ']$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800a4eQ' $9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800m.room.create 3eQ']$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829m2eQ? $mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibilitye1eQ/ $UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rulesg0eQ3 $+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800m.room.power_levels /eQ']$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-484:localhost:8800a.eQ' $WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800m.room.create -eQ']$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829 ,eQ']$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-483:localhost:8829g+eQ3 $blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.guest_accessm*eQ? $ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.history_visibilitye)eQ/ $XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.join_rulesg(eQ3 $xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.power_levels 'eQ']$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.member@anon-20191002_181700-482:localhost:8800a&eQ' $xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create %eQ']$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829p$eQ))$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800m#eQ? $Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibilitye"eQ/ $sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rulesj!eQ9 $RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_alias  gHeQa$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2588}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw"], "type": "m.room.test", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042774345, "hashes": {"sha256": "ZhoJMK/HedMedzcJ0yAI5f5Ff2SkyHKUO/PLcAlcvRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j4lpfOURLAcxoIOUq7v+v2DeVS3ywWmgPZ93pH7O2m1Mx8pbYJTzOY3dfGwR33/vax481FFj3v00tm3vyYnOCw"}}, "unsigned": {"age_ts": 1570042774345}}eQa5$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2587}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8"], "type": "m.room.aliases", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"aliases": ["#__ANON__-20:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042773627, "hashes": {"sha256": "j8jrfI7N4Fdgn46CyHPCSYaSspfZCvfpGGQH5vzJWTM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A7Ginu4tXVzDD472hiaBSVxQ+Av/WL/w9/USzK4YUvfv+ANN4y2XJP7hycAmQ6FG0McqVOofNnr4ZWzL+ieVDg"}}, "unsigned": {"age_ts": 1570042773627}}eQa$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2586}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI"], "type": "m.room.history_visibility", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042772610, "hashes": {"sha256": "SNAj+kH6sjSo0qRlsomj0rT46aNHHWKfVRvSU/TcQSc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AOdzrAIijRza2+dHPEQ4XNzL65jGGD2jk2rZrjVQRktFedAuGi0uM0Z1joMZHRqoPodfSaJVWDKsdw+JLGvzAA"}}, "unsigned": {"age_ts": 1570042772610}}teQau$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI!DqxFmsXPclgGqpSwdy:localhost:8800{"token_id": 487, "stream_ordering": 2585}{"auth_events": ["$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50", "$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s", "$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4"], "prev_events": ["$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y"], "type": "m.room.join_rules", "room_id": "!DqxFmsXPclgGqpSwdy:localhost:8800", "sender": "@anon-20191002_181700-480:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042771935, "hashes": {"sha256": "Pd+z/EXu5PYoP+UZqAK06jo8d+0msz2b02w9uKpdl+E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V19/+r8Uv08wcNObAVYdU93kda4nA412bPjyGjztxbKcagWW/FYZHcrKUB3isF14+LP2WY6GcDeVYeSUQf/uCA"}}, "unsigned": {"age_ts": 1570042771935}} FL' w L { { P % P' V +  T )oD ! }%yN#wL!uJsR y N # T)}RT)}RZx*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800 -*Q!HmkcAMkMjWRhTDJMsy:localhost:8800dd*Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc*Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb*Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa*Q!HmkcAMkMjWRhTDJMsy:localhost:8800``*Q!HmkcAMkMjWRhTDJMsy:localhost:8800__*Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^*Q!HmkcAMkMjWRhTDJMsy:localhost:8800]]*Q!HmkcAMkMjWRhTDJMsy:localhost:8800\\*Q!HhYREfUiJTpjWmOuPF:localhost:8800JJ*Q!HhYREfUiJTpjWmOuPF:localhost:8800II*Q!HhYREfUiJTpjWmOuPF:localhost:8800HH*Q!HhYREfUiJTpjWmOuPF:localhost:8800GG*Q!HhYREfUiJTpjWmOuPF:localhost:8800FF*Q!HhYREfUiJTpjWmOuPF:localhost:8800EE*Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HZqzpRgqekPOtxstVc:localhost:8800CC*Q!HZqzpRgqekPOtxstVc:localhost:8800BB*Q!HZqzpRgqekPOtxstVc:localhost:8800AA*Q!HZqzpRgqekPOtxstVc:localhost:8800@@*Q!HZqzpRgqekPOtxstVc:localhost:8800??*Q!HZqzpRgqekPOtxstVc:localhost:8800>>*Q!HZqzpRgqekPOtxstVc:localhost:8800==*Q!HZqzpRgqekPOtxstVc:localhost:8800<<*Q!HZqzpRgqekPOtxstVc:localhost:8800;;*Q!HZqzpRgqekPOtxstVc:localhost:8800::*Q!HZqzpRgqekPOtxstVc:localhost:880099R*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HXfrGcvJCbRItyQLVE:localhost:8800*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800-*Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 t|4 l d <, \ $ T L DeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800 8eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM!bkwyieHZwSMJfuSKvV:localhost:8800ЁeeQ$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A$sJrHU51Es-2oskIbxdqmmd36W86tHfFlSiEbiRiTF90!sJnuQYOyruhUpXDsLY:localhost:8800,eeQ$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA!aLxrqpqLkbzyIxGgpk:localhost:8800-eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800 ~eeQ$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800 oeeQ$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds!yTQmLDAxZscWKLMSWh:localhost:8800WeeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$0Sw_IDinxk2DlNxh0gyQiLFilN70_EHMxdTnovMXS4c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Y!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQ!DnUHoxreGexNmjSVpq:localhost:8800eeQ$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA!utJsNQubeIXvcTKGpx:localhost:8800сeeQ$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI!WjlTCJVOFJkanCtkFE:localhost:8800zeeQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA!NFWKQvZkIwvecnREOC:localhost:8800ՁeeQ$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE!kwXxkGQFkaeenFTQJr:localhost:8800>eeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q!bnTuVBaAJTPbcYZtRl:localhost:8800ہeeQ$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73Xs!hWHyATwKfuznrqTiyu:localhost:8800eeQ$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4!qSUSLLWjDxcGibUZdT:localhost:8800eeQ$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs!EfJcWhdjNARbuHYrqU:localhost:8800eeQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w!ZaltdIYVZjCHsCWTZD:localhost:8800JeeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800 ԁeeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800 O -RM H C > 9 4/*|%w rmhc TQe H!mvgUHEsfGqDkPQUvfG:localhost:8800$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgTQe G!mvgUHEsfGqDkPQUvfG:localhost:8800$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQTQe F!mvgUHEsfGqDkPQUvfG:localhost:8800$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsTQe E!mvgUHEsfGqDkPQUvfG:localhost:8800$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8TQe D!mvgUHEsfGqDkPQUvfG:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMTQe C!mvgUHEsfGqDkPQUvfG:localhost:8800$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNoT~Qe B!WYyiQAVvitxsLZKVCG:localhost:8800$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQT}Qe A!WYyiQAVvitxsLZKVCG:localhost:8800$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2YhgT|Qe @!WYyiQAVvitxsLZKVCG:localhost:8800$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcT{Qe ?!WYyiQAVvitxsLZKVCG:localhost:8800$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4TzQe >!WYyiQAVvitxsLZKVCG:localhost:8800$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMTyQe =!WYyiQAVvitxsLZKVCG:localhost:8800$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7VskTxQe V ^ N| m% FeeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800 eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800 +eeQ$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0!WjlTCJVOFJkanCtkFE:localhost:8800veeQ$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8!WFHIeSFQyuugGeBFxW:localhost:8800eeQ$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo!krhefVncoErkCtnvsy:localhost:8800ށeeQ$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M4!aWvVRVaDflYyyGTOdD:localhost:8800AeeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800 7eeQ$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw!zNBpypJDRMlBdOcLlW:localhost:8800ueeQ$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800 -eeQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y!KmuRTfGFgJdgIDAgIW:localhost:8800 eeQ$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I!KXMUzALpMMMKqoQXUS:localhost:8800] eeQ$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ!hgjYwwwjWJNgwrzOto:localhost:8800eeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800 TeeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800 ȁeeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800 AeeQ$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8!LvARVIpJZeRQxbKefX:localhost:8800teeQ$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGI$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g!jYzridjeihmwPBuwLb:localhost:8800HeeQ$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A!sfXbvAcOUJhzGwWEpZ:localhost:8800 .F ^ v   0 \!D\t9g,f)eQ%$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI!EhUxBjnSkVXpTrQlrn:localhost:8800content.bodyhelloh(eQ%$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0!laUExtszUaoCpZoyEq:localhost:8800content.bodyMessageq'eQ%-$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 9q&eQ%-$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 8q%eQ%-$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 7q$eQ%-$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 6q#eQ%-$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 5q"eQ%-$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 4q!eQ%-$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 3q eQ%-$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 2qeQ%-$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg!ubmTdQFAhrhZkGULDx:localhost:8800content.bodyMessage number 1feQ%$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800content.bodyhellofeQ%$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800content.bodyhellofeQ%$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800content.bodyhellofeQ%$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800content.bodyhellofeQ%$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800content.bodyhelloheQ%$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800content.bodyMessagereQ%/$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 11reQ%/$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 10qeQ%-$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 9qeQ%-$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 8qeQ%-$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 7qeQ%-$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 6qeQ%-$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 5qeQ%-$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 4qeQ%-$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 3qeQ%-$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 2qeQ%-$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800content.bodyMessage number 1f eQ%$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800content.bodyhellof eQ%$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE!DqxFmsXPclgGqpSwdy:localhost:8800content.bodyhello ~z v r n j fb^ZVRNJFPeeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800OeeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800NeeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800MeeQ$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800LeeQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800KeeQ$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800JeeQ$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800IeeQ$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800HeeQ$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800GeeQ$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800FeeQ$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800EeeQ$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800DeeQ$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800CeeQ$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800BeeQ$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA!KIHYKMzkRDrJwiywwz:localhost:8800AeeQ$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800@eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800?eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800>eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800=eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800<eeQ$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800;eeQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800:eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:88009eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E!RSLvuCuAqKQQrKCxNq:localhost:88008eeQ$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:88007eeQ$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:88006eeQ$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:88005eeQ$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:88004eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:88003eeQ$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800 -RM H C > 9 4/*|%w rmhc T Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4T Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UT Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egTQe !CSqENqzAezaZnGktbE:localhost:8800$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4TQe !CSqENqzAezaZnGktbE:localhost:8800$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4TQe !CSqENqzAezaZnGktbE:localhost:8800$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcETQe !CSqENqzAezaZnGktbE:localhost:8800$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUTQe !CSqENqzAezaZnGktbE:localhost:8800$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQTQe !CSqENqzAezaZnGktbE:localhost:8800$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQTQe !CSqENqzAezaZnGktbE:localhost:8800$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxITQe !CSqENqzAezaZnGktbE:localhost:8800$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4TQe !CSqENqzAezaZnGktbE:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQTQe !CSqENqzAezaZnGktbE:localhost:8800$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYT~Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgT}Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawT|Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMT{Qe !vBvlJEXUSQKUYmsKcO:localhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkTzQe !vBvlJEXUSQKUYmsKcO:localhost:8800$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhoTyQe !vBvlJEXUSQKUYmsKcO:localhost:8800$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGITxQe !vBvlJEXUSQKUYmsKcO:localhost:8800$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1KkTwQe !vBvlJEXUSQKUYmsKcO:localhost:8800$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgTvQe !vBvlJEXUSQKUYmsKcO:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZATuQe !vBvlJEXUSQKUYmsKcO:localhost:8800$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpITtQe !RDEAXrqXQizuhCUFPq:localhost:8800$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIwTsQe !RDEAXrqXQizuhCUFPq:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMTrQe !RDEAXrqXQizuhCUFPq:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMTqQe !RDEAXrqXQizuhCUFPq:localhost:8800$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0TpQe !RDEAXrqXQizuhCUFPq:localhost:8800$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkToQe !RDEAXrqXQizuhCUFPq:localhost:8800$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJITnQe !RDEAXrqXQizuhCUFPq:localhost:8800$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YTmQe !RDEAXrqXQizuhCUFPq:localhost:8800$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwETlQe !RDEAXrqXQizuhCUFPq:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUTkQe !RDEAXrqXQizuhCUFPq:localhost:8800$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60TjQe !mogJVPxghalmKbblUq:localhost:8800$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0TiQe !mogJVPxghalmKbblUq:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQThQe !mogJVPxghalmKbblUq:localhost:8800$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUTgQe !mogJVPxghalmKbblUq:localhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4TfQe !mogJVPxghalmKbblUq:localhost:8800$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYTeQe !mogJVPxghalmKbblUq:localhost:8800$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPoTdQe !mogJVPxghalmKbblUq:localhost:8800$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYTcQe !mogJVPxghalmKbblUq:localhost:8800$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8TbQe !mogJVPxghalmKbblUq:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4TaQe !mogJVPxghalmKbblUq:localhost:8800$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYT`Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOIT_Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk  {eQa$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2596}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8"], "type": "m.room.guest_access", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042781679, "hashes": {"sha256": "WhvrPsb+8BeFtdnOonLbgZ/4dqE/72TP6m152f+vFo0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C3dTUG16mn/0jH6aoJn6SCyIZPdVFrEPIBkriRLy0oxdjLPl1FuoHgbQhhcnQmgdZMXWPQVIFrfFRE42qVg/Cg"}}, "unsigned": {"age_ts": 1570042781679}}eQa$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2595}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU"], "type": "m.room.history_visibility", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042780902, "hashes": {"sha256": "Jx4yHCqIgWluKBllY3obuetsbdgABpj1IWAL43cl2yo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R+/LuJ46q4ffAhZ8UUcVEVsw5g4U9S0K9y7MJwF5hslBk+mXS1rDSQdYs/U8I9RhmRsRjVDxJGIwMg1rTn0eAA"}}, "unsigned": {"age_ts": 1570042780902}}teQau$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2594}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4"], "type": "m.room.join_rules", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042779921, "hashes": {"sha256": "rgWUEMc2GSRBqql9Ie8ZX81wwNnJNDBvqpw9jIqBJv0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ijZsiWikCEM9d7tFcZTQIB3ItJmWQ1EZXD9Tw/pOCY9XDexLC3D9DWJKiLcAFHuhWuM8t+y5lpFfuTeRyxHmAA"}}, "unsigned": {"age_ts": 1570042779921}}keQac$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2593}{"auth_events": ["$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "type": "m.room.power_levels", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"users": {"@anon-20191002_181700-482:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042779194, "hashes": {"sha256": "aFz0Omf1MCzCgJdj5ORJB0USt1u48pb1PllAin/DBDc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VyK6wI2xoBpmjWO5EfaltwBk3wQB9O6ixuqyq+6EfXnV6xCE1gX8u7lYD4pA03z8P32jYxsnF7+glZ2nd0oOBw"}}, "unsigned": {"age_ts": 1570042779194}} ?j8h6tBp> 0 v D  | J  P  n<H V $   \ *zb1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4|1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4{1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4z1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4y1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms#1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms"1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM&1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM%1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI)1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI(1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI'1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI 1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI 1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI 1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA 1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA 1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA 1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg 1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg 1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg 1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoi1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoh1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuog1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro 1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A |1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A {1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A z1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE 1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE  ceQ1$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds!RSLvuCuAqKQQrKCxNq:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2599}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU", "$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-483", "membership": "join"}, "depth": 9, "hashes": {"sha256": "h+y9CX/HWVa1FaNM0/JkS+USwYXHA9Ou6rKmgxGTgCU"}, "origin": "localhost:8829", "origin_server_ts": 1570042784049, "prev_events": ["$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM"], "prev_state": [], "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-483:localhost:8829", "state_key": "@anon-20191002_181700-483:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ogamB8dbiMtI9GKqlYRDVP0OxmozdFCMAxg2B2hADwfzR1Dun3PUZ3azUKtO8yaJaXZ88Ai+qwYQCexAttoBBg"}, "localhost:8829": {"ed25519:a_UxIG": "s83gwTPHOl01nw/3S76vDLlZA5P5LAGVUefe9wJ/7l6jxp9KBrfpMN2mNEwcovl9E4SDUeQUfl+dEE+MbO4UDA"}}, "unsigned": {"age": 91, "replaces_state": "$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM"}}eQa7$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2598}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E"], "type": "m.room.member", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-483", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-483:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042783174, "hashes": {"sha256": "fVY4UYeKO1oNtbkCdxQmy5p3i8wxXTVu1kCDWMfbQh4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LwPcYPFYgTAwQrHl9M3WBz2Pt3I/qsK6YGyPhjYXyScM5Zyg4/yvO58DzufOAaPg7VP8EBJ/ky9aA4cgnQ7oBg"}, "localhost:8829": {"ed25519:a_UxIG": "Y2UBxenTLCVKI9B5IQN3o2omaovF8bNPzYm5zvssCO4+CpJSZ30XQiWIzGKdQwYf3xpCF8dp2m4tom9x5bVZAw"}}, "unsigned": {"age_ts": 1570042783174, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-482:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-482:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-482", "avatar_url": null}, "sender": "@anon-20191002_181700-482:localhost:8800"}]}}HeQa$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "stream_ordering": 2597}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE"], "type": "m.room.test", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042782496, "hashes": {"sha256": "5lqz4l5p9e6WbDIJ4lzynso/t1viQQrzG1AWsiaIlcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "trYruXXJh7VJXMeLHjpNDXPC5ZD/PFaZ3OGiejfuuxLnPcXnVjLR3y2xB3xqoyR0QXDKRERCMaJbZNVlcOWxDg"}}, "unsigned": {"age_ts": 1570042782496}} a} { y w u sqomkigeca~,eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800~+eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~*eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~)eeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800~(eeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~'eeQ$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~&eeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800~%eeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~$eeQ$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~#eeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800~"eeQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~!eeQ$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~ eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800~eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$XRKyI5YYMJyjP+xuOkDz90w5amjYsgu5qlM4qzrkEgU!RSLvuCuAqKQQrKCxNq:localhost:8800 `I%m?vHb4 | N h : T & n @  Z ,tF2zLg9 SSSY+tF-]@anon-20191002_181700-540:localhost:8829g-]@anon-20191002_181700-539:localhost:8800c-]@anon-20191002_181700-538:localhost:8800a-]@anon-20191002_181700-537:localhost:8800]-]@anon-20191002_181700-536:localhost:8800[-]@anon-20191002_181700-535:localhost:8800W-]@anon-20191002_181700-534:localhost:8800U-]@anon-20191002_181700-533:localhost:8800Q-]@anon-20191002_181700-532:localhost:8800O-]@anon-20191002_181700-531:localhost:8800K-]@anon-20191002_181700-626:localhost:8800 }-]@anon-20191002_181700-625:localhost:8800 x-]@anon-20191002_181700-624:localhost:8800 s-]@anon-20191002_181700-623:localhost:8800 n-]@anon-20191002_181700-622:localhost:8800 i-]@anon-20191002_181700-620:localhost:8800 d,[@anon-20191002_181700-61:localhost:8800-]@anon-20191002_181700-619:localhost:8800 ^-]@anon-20191002_181700-617:localhost:8800 \-]@anon-20191002_181700-616:localhost:8800 T-]@anon-20191002_181700-614:localhost:8800 L-]@anon-20191002_181700-613:localhost:8800 R-]@anon-20191002_181700-612:localhost:8800 D-]@anon-20191002_181700-611:localhost:8800 J-]@anon-20191002_181700-610:localhost:8800 B-]@anon-20191002_181700-609:localhost:8800 A-]@anon-20191002_181700-608:localhost:8800 :.-]@anon-20191002_181700-606:localhost:8800 3-]@anon-20191002_181700-605:localhost:8800 ;.-]@anon-20191002_181700-603:localhost:8800 %-]@anon-20191002_181700-601:localhost:8800 -]@anon-20191002_181700-584:localhost:8800 -]@anon-20191002_181700-583:localhost:8800 -]@anon-20191002_181700-582:localhost:8800 -]@anon-20191002_181700-580:localhost:8800 -]@anon-20191002_181700-579:localhost:8800 -]@anon-20191002_181700-578:localhost:8800 -]@anon-20191002_181700-577:localhost:8800-]@anon-20191002_181700-576:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-571:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800-]@anon-20191002_181700-568:localhost:8800-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-566:localhost:8800-]@anon-20191002_181700-565:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-563:localhost:8800-]@anon-20191002_181700-562:localhost:8800-]@anon-20191002_181700-561:localhost:8800-]@anon-20191002_181700-559:localhost:8829-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-557:localhost:8800-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-551:localhost:8800-]@anon-20191002_181700-550:localhost:8800-]@anon-20191002_181700-549:localhost:8800-]@anon-20191002_181700-548:localhost:8800{-]@anon-20191002_181700-546:localhost:8829y-]@anon-20191002_181700-545:localhost:8800u-]@anon-20191002_181700-544:localhost:8829s-]@anon-20191002_181700-543:localhost:8800o-]@anon-20191002_181700-542:localhost:8829m-]@anon-20191002_181700-541:localhost:8800i -RM H C > 9 4/*|%w rmhc TQe!iKezIvJyjkNqKayFju:localhost:8800$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8QTQe!DelfBAGvCrTXgNxmNV:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlATQe!DelfBAGvCrTXgNxmNV:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUTQe!DelfBAGvCrTXgNxmNV:localhost:8800$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTET Qe!DelfBAGvCrTXgNxmNV:localhost:8800$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwT Qe!DelfBAGvCrTXgNxmNV:localhost:8800$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMT Qe!DelfBAGvCrTXgNxmNV:localhost:8800$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0T Qe!DelfBAGvCrTXgNxmNV:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoT Qe!DelfBAGvCrTXgNxmNV:localhost:8800$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04YTQe!kOmCTyiizHqfCJdhlR:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kTQe!kOmCTyiizHqfCJdhlR:localhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYTQe!kOmCTyiizHqfCJdhlR:localhost:8800$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4TQe!kOmCTyiizHqfCJdhlR:localhost:8800$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kTQe!kOmCTyiizHqfCJdhlR:localhost:8800$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UTQe!kOmCTyiizHqfCJdhlR:localhost:8800$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQTQe!kOmCTyiizHqfCJdhlR:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fITQe!kOmCTyiizHqfCJdhlR:localhost:8800$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvoTQe!pJUItjYTOUJQFIxyiX:localhost:8800$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMTQe!pJUItjYTOUJQFIxyiX:localhost:8800$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AT~Qe~!pJUItjYTOUJQFIxyiX:localhost:8800$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwT}Qe}!pJUItjYTOUJQFIxyiX:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroT|Qe|!pJUItjYTOUJQFIxyiX:localhost:8800$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQT{Qe{!mvgUHEsfGqDkPQUvfG:localhost:8800$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8TzQez!mvgUHEsfGqDkPQUvfG:localhost:8800$V/OpdhmQ8RJOaczAkjB6oz1wDvSoapELLWXLdCBk/qcTyQey!mvgUHEsfGqDkPQUvfG:localhost:8800$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgTxQex!mvgUHEsfGqDkPQUvfG:localhost:8800$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQTwQew!mvgUHEsfGqDkPQUvfG:localhost:8800$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsTvQev!mvgUHEsfGqDkPQUvfG:localhost:8800$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8TuQeu!mvgUHEsfGqDkPQUvfG:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMTtQet!mvgUHEsfGqDkPQUvfG:localhost:8800$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNoTsQes!WYyiQAVvitxsLZKVCG:localhost:8800$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQTrQer!WYyiQAVvitxsLZKVCG:localhost:8800$Jpd7C8FYkmsWoqaJN6fijqCTBTVTUYqp6YvdiQ0i4qUTqQeq!WYyiQAVvitxsLZKVCG:localhost:8800$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcTpQep!WYyiQAVvitxsLZKVCG:localhost:8800$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4ToQeo!WYyiQAVvitxsLZKVCG:localhost:8800$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMTnQen!WYyiQAVvitxsLZKVCG:localhost:8800$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7VskTmQem!WYyiQAVvitxsLZKVCG:localhost:8800$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90TlQel!WYyiQAVvitxsLZKVCG:localhost:8800$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wTkQek!KIHYKMzkRDrJwiywwz:localhost:8800$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUTjQej!KIHYKMzkRDrJwiywwz:localhost:8800$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4TiQei!KIHYKMzkRDrJwiywwz:localhost:8800$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwThQeh!KIHYKMzkRDrJwiywwz:localhost:8800$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwTgQeg!KIHYKMzkRDrJwiywwz:localhost:8800$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMTfQef!KIHYKMzkRDrJwiywwz:localhost:8800$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0SxoTeQee!RSLvuCuAqKQQrKCxNq:localhost:8800$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds  z k eQac$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2603}{"auth_events": ["$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "type": "m.room.power_levels", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"users": {"@anon-20191002_181700-484:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042788205, "hashes": {"sha256": "VH38jehsXpz9DMiF39OBIXyJbSRUmzChJt+D+DadeS8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ldoxy1ofnV2uwpF+mVziA4V4mFsShs7BD1b1Z/RRc8DZtz3CahRnn9XeE2njalFHghXyu6y5EdTc3FEM2zmKAA"}}, "unsigned": {"age_ts": 1570042788205}}veQay$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2602}{"auth_events": ["$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo"], "prev_events": ["$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo"], "type": "m.room.member", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-484", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-484:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042787499, "hashes": {"sha256": "uY96SjLqH+M8j4UZH2lPw+CILRXtJC0d+ElDYkbhkRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hok386DTdk7JfWLQ/eaU3Y0q3E0pHROyVwO6UvgKCHWtWIZsAleJnGQmJqHIN3zhybCMBOaAAyL0QUVSmPZ6DQ"}}, "unsigned": {"age_ts": 1570042787499}}ieQa_$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2601}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-484:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042786629, "hashes": {"sha256": "K9b1QSbEdToMU9lL5u/z8HbuhQ5PSVtO6v9/phP9BiY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5olDrKoZAKRnIp+5p5X+0OH2z7hK/egREF7F/940WaRXMjhhGIObhHznjGEAC6COq7DyTwADkL9RNXzeF+6kCQ"}}, "unsigned": {"age_ts": 1570042786629}}eQm$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800{"token_id": 488, "txn_id": "488", "stream_ordering": 2600}{"auth_events": ["$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4", "$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg", "$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U"], "prev_events": ["$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds"], "type": "m.room.message", "room_id": "!RSLvuCuAqKQQrKCxNq:localhost:8800", "sender": "@anon-20191002_181700-482:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042784995, "hashes": {"sha256": "5Oi+Xt87bUWyLZvGy1RCTtCizFSBQDIHxXq1NZiUi9o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "91bUcsC+VzPPTz0wDvUSjUv2i1+cJkCPaeY18Q+5OhWFtEH4o++KmQHx4fu1+la4Nn/e2qLvjvAYZ1Nd15k7Cg"}}, "unsigned": {"age_ts": 1570042784995}} ,NC 8 - { " p  e ZOD9.|#qf VHeL$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQsha2565L=b1{TIۄx4DDVGeL$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiMsha256zENDG ĴXkNxEV31>#VFeL$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMsha2564E ga7]+FlU3VEeL$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Asha256">uЛYZ2krmGtsVDeL$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghwsha256B:rYOn{ \Y hpHrVCeL$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrosha256eHVAVrx <L ÔƺVBeL$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQsha256meo}( )U͊1VAeL$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wowsha256PUc׹|yDluŒV@eL$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRssha256ԯhwB3Uױ(5Hn)]>%V?eL$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8sha256&*q_޿KWI)v^PNWoV>eL$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNosha256i"*:x v}fR"tPV=eL$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgsha256@6i̠ TJ@ 7l^rԤXV<eL$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQsha256{TyڜUv U!6ӨJXA V;eL$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHssha256:ch#Ɂ;Udj8LE:)h{V:eL$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8sha256޾ꌬbK& &Wǣ^8%V9eL$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMsha256,DA* 1avo07h#V8eL$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNosha2560žb?)tV оY@V7eL$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQsha256{CS'u sy8k@(U& arCV6eL$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgsha256qǠ5q3㳶Ğ0 vbV5eL$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcsha256 FjԺFS?"M=b*Sy,7V4eL$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4sha256=ǂe,_ ka q2hiڳ끼* OsvV)eL$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8sha256UYF!9\nI̶Itc镯V(eL$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIsha2566V얠*l`ŐZ98MBҶrV'eL$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88sha256)FW3떈tǞy,Z V&eL$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMsha256d ӧn7|{]:5)^ɟ@{PV#eL$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUsha256s5q7WgWG *pV"eL$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4sha256Cg,a^I*"ZM?,9eWxV!eL$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwsha256P'FY 0.bP} a$J,V eL$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwsha256qyRu%T+þusMExlVeL$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMsha256tfO鬜(-k3VeL$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxosha256Z5&9pEd-{:zͪ$M/KVeL$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqAsha256~z36ϗ'иb΁^In  {leQa$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2679}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A"], "type": "m.room.guest_access", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042851065, "hashes": {"sha256": "MbWMTBCnoJVW0gzHEgEkNbeLskehPRa33zTVVyGLyVg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AUn1dyMaGFwNOmVv2obTrsph7x1+w/NnVOv9NUiZFmp5A/caprplQhulx419g5HgFwOYyoRzHi88rDxJnPbLDA"}}, "unsigned": {"age_ts": 1570042851065}}keQa$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2678}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ"], "type": "m.room.history_visibility", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042850207, "hashes": {"sha256": "sKHQHH5pCzvYsLa1Icl3/K4N2x6OIZo31u+IjOiYtMI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sxnSciAO7a7cVHpfLNxtdHpTGGN20rnMtusFs8iymTHI6DJ/f62ShYuhEIhdZSCifUgxAL6iqqFOq/AXEJvnAA"}}, "unsigned": {"age_ts": 1570042850207}}tjeQau$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2677}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4"], "type": "m.room.join_rules", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042849391, "hashes": {"sha256": "8uAxIftmcfyXNK3KyjP70yN5qVOo6KJkMlpaHjWliB4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/CPp2zy2p1hZP/UPTO1oCKQjj0fdki1seE0cfMYnhp1TdqHzNz7j7blyKGQBFnEQD191n4GsY1tC3+QqLtQoDQ"}}, "unsigned": {"age_ts": 1570042849391}}kieQac$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2676}{"auth_events": ["$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "type": "m.room.power_levels", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"users": {"@anon-20191002_181700-497:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042848618, "hashes": {"sha256": "7qZTlKy7SAqv145Lja8a0cMind5rYe4Z779DmyPBJZ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "afgE0gt0XeXNnSOOErWKTMcHK1stmEVYyTtwfYnu3JpGGqPgH/N8ZivcC60OFGrBUGk9O4UBxlB0aZ07etJPDA"}}, "unsigned": {"age_ts": 1570042848618}} o\ Z  o % 6G[ eoAe#Q ]$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhgm.room.test!WYyiQAVvitxsLZKVCG:localhost:8800mHmL@anon-20191002_181700-486:localhost:8800 @e'Q ]$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcm.room.member!WYyiQAVvitxsLZKVCG:localhost:8800mkm@anon-20191002_181700-486:localhost:8800,?e?Q ]$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4m.room.history_visibility!WYyiQAVvitxsLZKVCG:localhost:8800m$m@anon-20191002_181700-486:localhost:8800$>e/Q ]$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMm.room.join_rules!WYyiQAVvitxsLZKVCG:localhost:8800m#m=@anon-20191002_181700-486:localhost:8800&=e3Q ]$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vskm.room.power_levels!WYyiQAVvitxsLZKVCG:localhost:8800mm=@anon-20191002_181700-486:localhost:8800 <e'Q ]$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90m.room.member!WYyiQAVvitxsLZKVCG:localhost:8800m~m@anon-20191002_181700-486:localhost:8800; e'Q  ]$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wm.room.create!WYyiQAVvitxsLZKVCG:localhost:8800m.m߻@anon-20191002_181700-486:localhost:8800!:e)Q ]$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zkm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800m]m.@anon-20191002_181700-484:localhost:8800!9e)Q ]$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpMm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mAmK@anon-20191002_181700-484:localhost:8800!8e)Q ]$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXom.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mDmO@anon-20191002_181700-484:localhost:8800!7e)Q ]$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800m{mՉ@anon-20191002_181700-484:localhost:8800!6e)Q ]$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWMm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mm@anon-20191002_181700-484:localhost:8800!5e)Q ] $viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsYm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 mѬm=@anon-20191002_181700-484:localhost:8800!4e)Q ] $5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 m"m(@anon-20191002_181700-484:localhost:8800!3e)Q ] $hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnIm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 mQm[@anon-20191002_181700-484:localhost:8800!2e)Q ] $KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 m̰m̼@anon-20191002_181700-484:localhost:8800!1e)Q ] $mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFMm.room.message!KIHYKMzkRDrJwiywwz:localhost:8800 mm@anon-20191002_181700-484:localhost:8800!0e)Q ]$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90m.room.message!KIHYKMzkRDrJwiywwz:localhost:8800mȤmȫ@anon-20191002_181700-484:localhost:8800/e#Q ]$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKAm.room.test!KIHYKMzkRDrJwiywwz:localhost:8800mm@anon-20191002_181700-484:localhost:8800 .e'Q ]$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBUm.room.member!KIHYKMzkRDrJwiywwz:localhost:8800m mē@anon-20191002_181700-484:localhost:8800,-e?Q ]$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4m.room.history_visibility!KIHYKMzkRDrJwiywwz:localhost:8800m׾m@anon-20191002_181700-484:localhost:8800$,e/Q ]$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiwm.room.join_rules!KIHYKMzkRDrJwiywwz:localhost:8800m׼m׼@anon-20191002_181700-484:localhost:8800&+e3Q ]$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGwm.room.power_levels!KIHYKMzkRDrJwiywwz:localhost:8800m׹mm׺@anon-20191002_181700-484:localhost:8800 *e'Q ]$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMm.room.member!KIHYKMzkRDrJwiywwz:localhost:8800m׶m׷@anon-20191002_181700-484:localhost:8800 p% . 1 S  85y7@c JQ']e \!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175ksIQ))e Z!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYpHQ? e Y!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibility$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4hGQ/ e X!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rules$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kmFQ9 e W!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_alias$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UjEQ3 e V!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ DQ']e U!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIdCQ' e T!kOmCTyiizHqfCJdhlR:localhost:8800m.room.create$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvopBQ? e Q!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibility$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMhAQ/ e P!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rules$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Aj@Q3 e O!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw ?Q']e N!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrod>Q' e M!pJUItjYTOUJQFIxyiX:localhost:8800m.room.create$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ8=Q']ee J!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg <Q']e H!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgp;Q? e G!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibility$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQh:Q/ e F!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rules$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsj9Q3 e E!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 8Q']e D!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMd7Q' e C!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo86Q']ee B!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc 5Q']e @!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcp4Q? e ?!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibility$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4h3Q/ e >!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rules$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMj2Q3 e =!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk 1Q']e eQ' $xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg!RSLvuCuAqKQQrKCxNq:localhost:8800m.room.create =eQ']$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829joinp<eQ))$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800mOeQ? $9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibilityeNeQ/ $zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rulesgMeQ3 $sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels LeQ']$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-486:localhost:8800joinaKeQ' $9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800m.room.createJeQ']$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU!KIHYKMzkRDrJwiywwz:localhost:8800m.room.member@anon-20191002_181700-485:localhost:8829invitemIeQ? $mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4!KIHYKMzkRDrJwiywwz:localhost:8800m.room.history_visibilityeHeQ/ $UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800m.room.join_rules  7 k 9mcd]c@anon-20191002_181700-529:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgo127.0.0.1d]c@anon-20191002_181700-527:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgo127.0.0.1d]c@anon-20191002_181700-526:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAo127.0.0.1d]c@anon-20191002_181700-525:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQo127.0.0.1d]c@anon-20191002_181700-524:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQo127.0.0.1d]c@anon-20191002_181700-523:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3Evblysawo127.0.0.1d]c@anon-20191002_181700-521:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywo127.0.0.1d]c@anon-20191002_181700-520:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwo127.0.0.1a[a@anon-20191002_181700-51:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNk5ON1VXdHhETyY3KjYxVQowMDJmc2lnbmF0dXJlIPz5SzWOwGpmETe1grSO5owvdYBWfo9Z1KDSFotl5sswCg127.0.0.1(d]c@anon-20191002_181700-518:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQo127.0.0.1  $ 'eQ$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "491", "stream_ordering": 2610}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 3"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042793136, "hashes": {"sha256": "NZia8mxrY0lf7umuTDm9tdgvMyjHRfOnx0EkmXdtDho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+KE2sYCjULBqoJHVC/SsVZtjxKDYjnpxc57KGUj1MlS773md88ROpeCoNfOciOEh2f7QpFCwsi327nfODr3jBw"}}, "unsigned": {"age_ts": 1570042793136}} &eQ$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "490", "stream_ordering": 2609}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 2", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042792676, "hashes": {"sha256": "dSowEwd54qe4aI+Z6FgcqSIqwkcEw66HOWRHve1SWPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MR7LGXFOth0yM0p1OIk8sUr9fJWiA191cq8lW/kmBDW4I/MHIMe/EBnMu2oXnhc5RQgYdAMZZ+2BN9kLbcqlCQ"}}, "unsigned": {"age_ts": 1570042792676}} %eQ$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "489", "stream_ordering": 2608}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042792100, "hashes": {"sha256": "o0+ajGaJYvbR4+xaCUdL1FjOlIWia0647jYQkLauwp4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yKWLOVAsMEjvNMknYNqbJIMAWniEJApGTbXFbkaQeN8ek0rFR02MiPEOZk9Urq9GjajIZGm/JHbG88cbxMqqDA"}}, "unsigned": {"age_ts": 1570042792100}}H$eQa$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "stream_ordering": 2607}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU"], "type": "m.room.test", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042791629, "hashes": {"sha256": "Fc4nuA0RL8zd02iXML92DFn3NbMm+KO9h/xQtzShS2U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eCi42ZIVavFRKew+vsGl043hYrZBiOg1dJrECxL0Pd5rjwv9Genj/Fs0x+eRDTeYBDEvE9ciMcHv/aBtalszCw"}}, "unsigned": {"age_ts": 1570042791629}}  oM +eQ$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "495", "stream_ordering": 2614}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042794969, "hashes": {"sha256": "Uv7SgWlfg2uAK0Yjl3RjZVHo/qd2Vyx2IAd/w+720SU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2RQZHwHDeTxF00VscAgSdkvosRyzzqqsP420TGrADFJOqevbqNBfJQN0X9Ii4S4TJ5GhPTF8G8EhEyHcqZzbDg"}}, "unsigned": {"age_ts": 1570042794969}} *eQ$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "494", "stream_ordering": 2613}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042794412, "hashes": {"sha256": "Ki30Uf3h5kuZlGKJyPL1Y5PF/KmesJPRSSkbt/t3u4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j+vz52gMtWC55+VYfycF1RBUtndy+9EkRoIavyQrPJsOUUOM1MhN/s6cO7iTPA/bEW9NN3Ab+gFzU1cAnm/6Dw"}}, "unsigned": {"age_ts": 1570042794412}} )eQ$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "493", "stream_ordering": 2612}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 5", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042794018, "hashes": {"sha256": "b0amSlvSKfTDlyIY6tBvPufWPWr4pmDFvqBr1FWX3nY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nacb0YiRPYtfGjwyuVSWACkmbwIdLnSd7G4LkeBJ6xgPu2VP/0n1JULH1U6SOUndTo1wd6KBqa0n0X9aQT60AQ"}}, "unsigned": {"age_ts": 1570042794018}} (eQ$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "492", "stream_ordering": 2611}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042793553, "hashes": {"sha256": "tM5Y5U/zQswupr84QnmUkdgXOpDPH+X2Ul3yuH+MVtQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MmaGv51vK9H8H4HnVvPqnpXfpHoWNS8JDcOEQkmfcOUhIBaI9rK1PPj+RBotU7d3FMpW+ADKfg90ZHlhDAMCCg"}}, "unsigned": {"age_ts": 1570042793553}} D % q  < \  dt|4 - D%eeQ$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw!jveVPZSXJOJyNDebPO:localhost:8800eeQ$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og!TleKOyAElrpgyyrAQA:localhost:8800eeQ$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU!EyEaTZElOkdURKbEXo:localhost:8800eeQ$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao!CNFopUEQTFbzjmLvii:localhost:8800;eeQ$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU!UGVFuRGyPQmBbGsEDo:localhost:8800;eeQ$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI!hDAzBWYEyRVBRlrCHh:localhost:8800MeeQ$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg!rWGwSSefrZzQYCYFHs:localhost:8800#eeQ$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA$WMxX4YMRutY072OrPoI7S0slmPnqsdfrjr_nQeDepxU!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gU$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0!jYzridjeihmwPBuwLb:localhost:8800?eeQ$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc!wnriPzXkIMmdTNoJKU:localhost:8800ЁeeQ$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU$-oQCNHrHyewQdI9f_9Aq69WuogXvAF3cNeX8FkmaNZs!RmdhCjvouVLmyIHjaM:localhost:8800 eeQ$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw!OSHhtkGUjpUCkXwIhj:localhost:8800܁eeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M!raCWVWQGnXbmkexpCN:localhost:8800eeQ$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE!UGVFuRGyPQmBbGsEDo:localhost:8800B IeeQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800 teeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800 ?eeQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800 WA3Q$lolredact:localhost:42455$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800 =fAQQ$lolredact:localhost:42455$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 <eeQ$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5A!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800 ,eeQ$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0$Nb8LfEL2AX6vKtOsF1FkYuhnoyURUzht8hSWZ9mX4Cg!SrMQpDMFREKRMELwbL:localhost:8800.eeQ$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw!KIHYKMzkRDrJwiywwz:localhost:8800 ?eeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8!uSBqTezaFcMnlowsEf:localhost:8800VeeQ$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE!uSBqTezaFcMnlowsEf:localhost:8800IeeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGc!FAYqpziHeVZugCGaij:localhost:8800[ Ce: y N # w L ! u J  i>c8 T)}R' { Pk@g< % qFoDmBe:*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrwdtDytJDUBVZOueF:localhost:8800 *Q!TSFcaXDBqrCREHRHxv:localhost:8800  '*Q!TSFcaXDBqrCREHRHxv:localhost:8800  &*Q!TSFcaXDBqrCREHRHxv:localhost:8800  %*Q!TSFcaXDBqrCREHRHxv:localhost:8800  $*Q!TSFcaXDBqrCREHRHxv:localhost:8800  #*Q!TSFcaXDBqrCREHRHxv:localhost:8800  "*Q!SvKwEALYoNreUvqAlp:localhost:8800pu*Q!SvKwEALYoNreUvqAlp:localhost:8800ot*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!THHfVSOSWiBQTHRAnJ:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800 *Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!SrMQpDMFREKRMELwbL:localhost:8800*Q!TWETXUgfFZafDdbqLS:localhost:8800//*Q!TWETXUgfFZafDdbqLS:localhost:8800..*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SyIWYOmcGiASNkPCTB:localhost:8800*Q!SvKwEALYoNreUvqAlp:localhost:8800v{*Q!SvKwEALYoNreUvqAlp:localhost:8800uz*Q!SvKwEALYoNreUvqAlp:localhost:8800ty*Q!SvKwEALYoNreUvqAlp:localhost:8800sx*Q!SvKwEALYoNreUvqAlp:localhost:8800rw*Q!SvKwEALYoNreUvqAlp:localhost:8800qv  oL/eQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "499", "stream_ordering": 2618}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 11"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042796893, "hashes": {"sha256": "jybehqY2+O55+Cos+MlvhuRrTout8M7zsve0XMXGcRg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LnF0LlifLEtugKtYwMD5o/4c3YxSDUFzbGRFJqDIc5CR7YW9Ht0G2UEMIb3zhmfbKA4VfX103V2LUjvysQ5dBw"}}, "unsigned": {"age_ts": 1570042796893}}.eQ$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "498", "stream_ordering": 2617}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 10"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042796353, "hashes": {"sha256": "GgZPF4CvxnZ4FSUHi2d0DMRL/r5wStmxLUahFo9y55g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rOzPxaH1GUk1vB/9mpy5EZ3nZX7RGNnQ4sQP+reADCZTHWPghncEWE3F+lOmp48s9qFF5xkfDZ48emx9WRcsBQ"}}, "unsigned": {"age_ts": 1570042796353}} -eQ$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "497", "stream_ordering": 2616}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 9"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042795844, "hashes": {"sha256": "l39wa0n3Hh5GEzpxFEnNVyD3cwusU6GWEpUgr2YTTEo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M8UNnaUP0oY/KUX398Q8u+jlUUdyfnHe9xFYEFy0SF8uoTFGO7g2blFwq8zj5xSjHYe5tjvKnO8pwcsp87Z7BA"}}, "unsigned": {"age_ts": 1570042795844}} ,eQ$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800{"token_id": 489, "txn_id": "496", "stream_ordering": 2615}{"auth_events": ["$+hlxEHm+UnWSJVQb4yu27sO+xdzLAHUAc01FFNjMeGw", "$WrI1JjlwrtNFB5xkFKjNB4j+LXvMOnrNqtckTS+0Sxo", "$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM"], "prev_events": ["$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM"], "type": "m.room.message", "room_id": "!KIHYKMzkRDrJwiywwz:localhost:8800", "sender": "@anon-20191002_181700-484:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042795387, "hashes": {"sha256": "HHOTTAJN/08vNMWwM3FeFgydGachMwha1I4V3NeR4NI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oklQMQSt6Oa6tEpOKa3oqO/AoUOlcUoIYwmN7T4wJ2ApA6/Pj3zu1a5Y8ySsa+vThECdjPNmIwWyPhUrkKElAQ"}}, "unsigned": {"age_ts": 1570042795387}}   *t3eQau$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2622}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk"], "type": "m.room.join_rules", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042800163, "hashes": {"sha256": "jvtlarT5lKK6NQ8U3/42oR1U92KW7TwE+WMdEq9sueE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q7B+D+E4jZf+J3IXUqvBqSwBCsnbrFK46drxPDZ6OQweLKUDXd4KA2VqGeE+CjyskI4pp2BsqCAd7xSe5dT2AA"}}, "unsigned": {"age_ts": 1570042800163}}k2eQac$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2621}{"auth_events": ["$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "type": "m.room.power_levels", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"users": {"@anon-20191002_181700-486:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042799316, "hashes": {"sha256": "/bmpaeFKqbCJdyH0zDb1v97H33oE4GJGfIQg/x0OyAk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Is32sJEXZfsl0xZGYmeYJi3jCifLmV7fTWFYt2EQK0PKTWdeOAzfrGBX/xBPkBp/OUZVHBW84PBCTBXzq2BDA"}}, "unsigned": {"age_ts": 1570042799316}}v1eQay$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2620}{"auth_events": ["$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w"], "prev_events": ["$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w"], "type": "m.room.member", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-486", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-486:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042798718, "hashes": {"sha256": "IageTuTXk9m+yuXODs3EqbkIbAOMe3gqlFT8ez3j47U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bal1iz8TmIGMAGsbP6zIDsFhS+AzebItamp6MqoVzuy9p76h3yiGhPgNeLiB0neFgrBJfZPW9Zn+0rXMIADJBw"}}, "unsigned": {"age_ts": 1570042798718}}i0eQa_$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2619}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-486:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042797870, "hashes": {"sha256": "4OjulEudpZJHiDvHvh9zOcbYp3f6jQRN84SxVye3sU8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0BlZsNgAeai7BTV0n6N+uVzUC6dy3nW/yj5Kx1Fk2HTUCMz0KtB7z8JHa+1WMKm+W7ferrrsVhmNvqiJt7FzAg"}}, "unsigned": {"age_ts": 1570042797870}} Ci> s u J # w L !   Hm qFoDk@ { P % y NB }R'T) 8ce:g<i>+++VX*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800~~*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bOSxzttDtclnrWnLov:localhost:8800gg*Q!bOSxzttDtclnrWnLov:localhost:8800ff*Q!bOSxzttDtclnrWnLov:localhost:8800ee*Q!bOSxzttDtclnrWnLov:localhost:8800dd*Q!bOSxzttDtclnrWnLov:localhost:8800cc*Q!bOSxzttDtclnrWnLov:localhost:8800bb*Q!bOSxzttDtclnrWnLov:localhost:8800aa*Q!bOSxzttDtclnrWnLov:localhost:8800``*Q!bOSxzttDtclnrWnLov:localhost:8800__*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bQDOrbAknnQZfUbhgS:localhost:8800 *Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800 !h$ w   :  ',P[/:?ch Q']e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUiQ3 e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_access$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEoQ? e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibility$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwgQ/ e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rules$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMiQ3 e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 Q']e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaocQ' e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y Q']e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175krQ))e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYoQ? e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibility$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4gQ/ e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rules$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7klQ9 e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_alias$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UiQ3 e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ Q']e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIcQ' e!kOmCTyiizHqfCJdhlR:localhost:8800m.room.create$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvooQ? e!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibility$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMgQ/ e!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rules$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Ai Q3 e~!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw Q']e}!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroc Q' e|!pJUItjYTOUJQFIxyiX:localhost:8800m.room.create$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ Q']e{!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8 Q']ez!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$V/OpdhmQ8RJOaczAkjB6oz1wDvSoapELLWXLdCBk/qc Q']ey!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-489:localhost:8829$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFgoQ? ex!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.history_visibility$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQgQ/ ew!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.join_rules$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHsiQ3 ev!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.power_levels$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 Q']eu!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.member@anon-20191002_181700-488:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMcQ' et!mvgUHEsfGqDkPQUvfG:localhost:8800m.room.create$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo Q']es!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ Q']er!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$Jpd7C8FYkmsWoqaJN6fijqCTBTVTUYqp6YvdiQ0i4qU Q']eq!WYyiQAVvitxsLZKVCG:localhost:8800m.room.member@anon-20191002_181700-487:localhost:8829$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcoQ? ep!WYyiQAVvitxsLZKVCG:localhost:8800m.room.history_visibility$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4g~Q/ eo!WYyiQAVvitxsLZKVCG:localhost:8800m.room.join_rules$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM X qFoDm  s H  % ) ! u J y N #Bk@i w LTeg<c8 :>}R' { P +*Q!bNSXSTadOMhIrYpMzH:localhost:8800{*Q!bNSXSTadOMhIrYpMzH:localhost:8800z*Q!bNSXSTadOMhIrYpMzH:localhost:8800y*Q!aZwMKYDXJRlSKjQNWM:localhost:88006Y*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ' >*Q!bNSXSTadOMhIrYpMzH:localhost:8800~*Q!bNSXSTadOMhIrYpMzH:localhost:8800}*Q!bNSXSTadOMhIrYpMzH:localhost:8800|*Q!bNSXSTadOMhIrYpMzH:localhost:8800v*Q!bNSXSTadOMhIrYpMzH:localhost:8800u*Q!bNSXSTadOMhIrYpMzH:localhost:8800t*Q!aknLNLxfChlLvFYhkJ:localhost:8800$*Q!aknLNLxfChlLvFYhkJ:localhost:8800#*Q!bNSXSTadOMhIrYpMzH:localhost:8800x*Q!bNSXSTadOMhIrYpMzH:localhost:8800w*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!azRJNFPIRSFAskLILK:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!awHAhLuEkavTGACcUW:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aaRwQZdNAliyvRHpjs:localhost:8800*Q!aiOswwhoZqjhcjzbzc:localhost:8800bT*Q!aiOswwhoZqjhcjzbzc:localhost:8800aS*Q!aiOswwhoZqjhcjzbzc:localhost:8800`R*Q!aiOswwhoZqjhcjzbzc:localhost:8800_Q*Q!aiOswwhoZqjhcjzbzc:localhost:8800^P*Q!aiOswwhoZqjhcjzbzc:localhost:8800]O*Q!aiOswwhoZqjhcjzbzc:localhost:8800\N*Q!aiOswwhoZqjhcjzbzc:localhost:8800[M*Q!anErKtXIsVKEEsrzWM:localhost:8800SE*Q!anErKtXIsVKEEsrzWM:localhost:8800RD*Q!anErKtXIsVKEEsrzWM:localhost:8800QC*Q!anErKtXIsVKEEsrzWM:localhost:8800PB*Q!anErKtXIsVKEEsrzWM:localhost:8800OA*Q!anErKtXIsVKEEsrzWM:localhost:8800N@*Q!bLWyXaXdvUhdSAooUz:localhost:8800 , C*Q!bLWyXaXdvUhdSAooUz:localhost:8800 + B*Q!bLWyXaXdvUhdSAooUz:localhost:8800 * A*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ) @*Q!bLWyXaXdvUhdSAooUz:localhost:8800 ( ?*Q!atnRTMliktaVUhMVID:localhost:8800 G*Q!atnRTMliktaVUhMVID:localhost:8800  D*Q!atnRTMliktaVUhMVID:localhost:8800  C*Q!atnRTMliktaVUhMVID:localhost:8800  B+*Q!aiOswwhoZqjhcjzbzc:localhost:8800pb*Q!aiOswwhoZqjhcjzbzc:localhost:8800i[*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!bNSXSTadOMhIrYpMzH:localhost:8800*Q!aknLNLxfChlLvFYhkJ:localhost:8800(*Q!aknLNLxfChlLvFYhkJ:localhost:8800'*Q!aknLNLxfChlLvFYhkJ:localhost:8800&*Q!aknLNLxfChlLvFYhkJ:localhost:8800%*Q!bNSXSTadOMhIrYpMzH:localhost:8800s*Q!atnRTMliktaVUhMVID:localhost:8800 F*Q!atnRTMliktaVUhMVID:localhost:8800  E*Q!aknLNLxfChlLvFYhkJ:localhost:8800)  w^H6eQa$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2625}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc"], "type": "m.room.test", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042803016, "hashes": {"sha256": "9mP7lzB0YfChHMU+H8eseFsk+xRFfZIjst3C9XGdkjc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "juxRO4rnbGzeVj8dV0ZD/ngCMirq+a4PJ3YfH3uCJvZYWl9TTlQrc9l8QFGRDMcWcGLtQNrvQ4PFDAJRKRoiDw"}}, "unsigned": {"age_ts": 1570042803016}}5eQa7$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2624}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4"], "type": "m.room.member", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-487", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-487:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042802283, "hashes": {"sha256": "HVPnd+TX0sqeeL3wDOnNs38KDoDYsJZod6QbgHESmgw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BpTwH9rU70ftePHtJibiNz15iS4cI7s1BqNb7ofiTMK4xKYykNDVB9e22E0ftLmk90zF3Mml1U72pYwc4RxzDQ"}, "localhost:8829": {"ed25519:a_UxIG": "riettCT2dj5wBQEa/H/IRr2nl5O4Z4Kq0hSN5zJsP+gABOMn2eqw4b+apDbANlE3GBdEUEUmtC18BpfqY0LrBw"}}, "unsigned": {"age_ts": 1570042802283, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-486:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-486:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-486", "avatar_url": null}, "sender": "@anon-20191002_181700-486:localhost:8800"}]}}4eQa$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800{"token_id": 490, "stream_ordering": 2623}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90"], "prev_events": ["$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM"], "type": "m.room.history_visibility", "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-486:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042801188, "hashes": {"sha256": "LQdu+DhZRWfYzhJItyyzcHUmkmyhngkTzzZNArQpoug"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1w2bOJIhRRK6NMKBy9n2pKipdWt8cGzwlwCygrCMPRpdFVKC8GRdRbIVtcMAzu36qlCIs2U4wIVOH2CbYX0zCA"}}, "unsigned": {"age_ts": 1570042801188}} a} { y w u sqomkigeca~KeeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~JeeQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~IeeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800~HeeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~GeeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800~FeeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800~EeeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~DeeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800~CeeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800~BeeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~AeeQ$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800~@eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800~?eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~>eeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~=eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~<eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800~;eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~:eeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~9eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~8eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~7eeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~6eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~5eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~4eeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800~3eeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800~2eeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~1eeQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800~0eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800~/eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w!WYyiQAVvitxsLZKVCG:localhost:8800~.eeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk!WYyiQAVvitxsLZKVCG:localhost:8800~-eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90!WYyiQAVvitxsLZKVCG:localhost:8800 ~z v r n j fb^ZVRNJFneeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800meeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800leeQ$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800keeQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800jeeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10!kOmCTyiizHqfCJdhlR:localhost:8800ieeQ$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800heeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800geeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800feeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800eeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800deeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800ceeQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800beeQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM!pJUItjYTOUJQFIxyiX:localhost:8800aeeQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800`eeQ$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800_eeQ$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800^eeQ$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800]eeQ$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800\eeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800[eeQ$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800ZeeQ$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo!mvgUHEsfGqDkPQUvfG:localhost:8800YeeQ$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg!mvgUHEsfGqDkPQUvfG:localhost:8800XeeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ!mvgUHEsfGqDkPQUvfG:localhost:8800WeeQ$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs!mvgUHEsfGqDkPQUvfG:localhost:8800VeeQ$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800UeeQ$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800TeeQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800SeeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg!WYyiQAVvitxsLZKVCG:localhost:8800ReeQ$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc!WYyiQAVvitxsLZKVCG:localhost:8800QeeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@                                                                                              ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B ~ A } @ | ? { > z = y < x ; w : v 9 u 8 t 7 s 6 r 5 q 4 p 3 o 2 n 1 m 0 l / k . j - i , h + g * f ) e ( d ' c & b % a $ ` # _ " ^ ! ] \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K I H G F  E  D  C  B  A  @  ?  > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !            J I H G F E  D  C  B  A  @  ?  >  = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                             Gk:eQac$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2629}{"auth_events": ["$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM"], "prev_events": ["$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM"], "type": "m.room.power_levels", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {"users": {"@anon-20191002_181700-488:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042806321, "hashes": {"sha256": "hcR3CRcssPNwEirU9gTKT+2+9eWby824DgMoyVFIZ00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xf2OYqzsj8XVmSzQSqBq2EBu2SNZ7EPscvAaOZRSy/KbjlEz1NOsY3dtQ/+TmYhFcF3uw4AP8U/4jI7bsIO6Cw"}}, "unsigned": {"age_ts": 1570042806321}}v9eQay$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2628}{"auth_events": ["$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo"], "prev_events": ["$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo"], "type": "m.room.member", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-488", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-488:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042805720, "hashes": {"sha256": "OuXVbubneG+7Rf+E2WAZCUcPWN4FGbmxfqtguHR90Zk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dEaFhCt67WSFQ4Iz62pXO3F0Z16333M16XXc2Rf8Z7/wpr8yrXHh6T1V1NOx0lqhyDqjAchvbp9qSEXsEKm0Bg"}}, "unsigned": {"age_ts": 1570042805720}}i8eQa_$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2627}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {"room_version": "3", "creator": "@anon-20191002_181700-488:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042804862, "hashes": {"sha256": "uv6QSZDqtG7IKrZjIknxdhnZw0cbn/+o3ktopDyDBzY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iIIRvPggRj2aVgWggSrwvsv+XIx+IjwCiqpxAyeAT7j/c9Vd1+wdn9JhVsEHua/N21YiACNOwkkAg78Z2Go3DQ"}}, "unsigned": {"age_ts": 1570042804862}}N7eQc'$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800{"outlier": false, "stream_ordering": 2626}{"auth_events": ["$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk", "$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w", "$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "Uavv/CfhCFMpOv1EimdC2+MSUGZQhZHzE9re7VxptyA"}, "origin": "localhost:8829", "origin_server_ts": 1570042803604, "prev_events": ["$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg"], "prev_state": [], "room_id": "!WYyiQAVvitxsLZKVCG:localhost:8800", "sender": "@anon-20191002_181700-487:localhost:8829", "state_key": "@anon-20191002_181700-487:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1nfhs6KjIMkXh5E6fv4X5nsGTb2/6FNtFwdBRr+EwYIm/GBH0/5ygJvHoy6D1JvBLgyNY4bsjViBFauy8jRUCA"}, "localhost:8829": {"ed25519:a_UxIG": "vR7uKZwnWxxsjHxzVyz4k2X+h2h2h2pNplDO/1tLIC/DabmcPNVgxSxthFdiSJF1JKLvPdyNm+mZeQM2YshIAA"}}, "unsigned": {"age": 111, "replaces_state": "$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc"}} Z\ l  p * <FO _ Z,Ye?Q ]$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4m.room.history_visibility!kOmCTyiizHqfCJdhlR:localhost:8800mDmF@anon-20191002_181700-491:localhost:8800$Xe/Q ]$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7km.room.join_rules!kOmCTyiizHqfCJdhlR:localhost:8800mAomBw@anon-20191002_181700-491:localhost:8800)We9Q ]$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5Um.room.canonical_alias!kOmCTyiizHqfCJdhlR:localhost:8800m>om?@anon-20191002_181700-491:localhost:8800&Ve3Q ]$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQm.room.power_levels!kOmCTyiizHqfCJdhlR:localhost:8800m;0m 9 4/*|%w rmhc T1Qe u!rpVYLTJGcFNdGzFzXj:localhost:8800$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQT0Qe t!rpVYLTJGcFNdGzFzXj:localhost:8800$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4T/Qe s!rpVYLTJGcFNdGzFzXj:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8T.Qe r!rpVYLTJGcFNdGzFzXj:localhost:8800$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1AT-Qe q!iKezIvJyjkNqKayFju:localhost:8800$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4T,Qe p!iKezIvJyjkNqKayFju:localhost:8800$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64T+Qe o!iKezIvJyjkNqKayFju:localhost:8800$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0YT*Qe n!iKezIvJyjkNqKayFju:localhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgT)Qe m!iKezIvJyjkNqKayFju:localhost:8800$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4T(Qe l!iKezIvJyjkNqKayFju:localhost:8800$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6QT'Qe k!iKezIvJyjkNqKayFju:localhost:8800$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8T&Qe j!iKezIvJyjkNqKayFju:localhost:8800$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0AT%Qe i!iKezIvJyjkNqKayFju:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAT$Qe h!iKezIvJyjkNqKayFju:localhost:8800$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8QT#Qe g!DelfBAGvCrTXgNxmNV:localhost:8800$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4T"Qe f!DelfBAGvCrTXgNxmNV:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAT!Qe e!DelfBAGvCrTXgNxmNV:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUT Qe d!DelfBAGvCrTXgNxmNV:localhost:8800$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWoTQe c!DelfBAGvCrTXgNxmNV:localhost:8800$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTETQe b!DelfBAGvCrTXgNxmNV:localhost:8800$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwTQe a!DelfBAGvCrTXgNxmNV:localhost:8800$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMTQe `!DelfBAGvCrTXgNxmNV:localhost:8800$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0TQe _!DelfBAGvCrTXgNxmNV:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoTQe ^!DelfBAGvCrTXgNxmNV:localhost:8800$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04YTQe ]!kOmCTyiizHqfCJdhlR:localhost:8800$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkITQe \!kOmCTyiizHqfCJdhlR:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kTQe [!kOmCTyiizHqfCJdhlR:localhost:8800$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10TQe Z!kOmCTyiizHqfCJdhlR:localhost:8800$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYTQe Y!kOmCTyiizHqfCJdhlR:localhost:8800$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4TQe X!kOmCTyiizHqfCJdhlR:localhost:8800$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kTQe W!kOmCTyiizHqfCJdhlR:localhost:8800$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5UTQe V!kOmCTyiizHqfCJdhlR:localhost:8800$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQTQe U!kOmCTyiizHqfCJdhlR:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fITQe T!kOmCTyiizHqfCJdhlR:localhost:8800$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvoTQe S!pJUItjYTOUJQFIxyiX:localhost:8800$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQTQe R!pJUItjYTOUJQFIxyiX:localhost:8800$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiMT Qe Q!pJUItjYTOUJQFIxyiX:localhost:8800$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDMT Qe P!pJUItjYTOUJQFIxyiX:localhost:8800$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-AT Qe O!pJUItjYTOUJQFIxyiX:localhost:8800$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwT Qe N!pJUItjYTOUJQFIxyiX:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxroT Qe M!pJUItjYTOUJQFIxyiX:localhost:8800$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQTQe L!mvgUHEsfGqDkPQUvfG:localhost:8800$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wowTQe K!mvgUHEsfGqDkPQUvfG:localhost:8800$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRsTQe J!mvgUHEsfGqDkPQUvfG:localhost:8800$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8TQe I!mvgUHEsfGqDkPQUvfG:localhost:8800$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo  &AeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow!mvgUHEsfGqDkPQUvfG:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 2636}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8"], "content": {}, "depth": 10, "hashes": {"sha256": "2obAP9fARp+yhmplJdF4tq7WS9zY7SsdjvchT/XyCzE"}, "origin": "localhost:8829", "origin_server_ts": 1570042810900, "prev_events": ["$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs"], "prev_state": [], "redacts": "$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-489:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "hf/PMY+bK4He0Okr+olz9O5EawNdZU6OvWK+71OQImAYBkyQze9R5m6lghMWgMknGGXX5VvrhsZ6s9dk+rP6DQ"}}, "unsigned": {"age_ts": 1570042810900}}&L@eQc#$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs!mvgUHEsfGqDkPQUvfG:localhost:8800{"outlier": false, "stream_ordering": 2635}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8"], "content": {}, "depth": 9, "hashes": {"sha256": "NKCe+ERY4IMnVJR1vZf/hONxchQN9PdnyhTZkACTdhA"}, "origin": "localhost:8829", "origin_server_ts": 1570042810881, "prev_events": ["$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8"], "prev_state": [], "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-489:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "H+KGbu9X6CqLhUg2yokpX/RAXDWqqjD1/PodUfA8O6KcS8/8FogIYLn8U56WL5QnJoGRNrJP65L/VSNaEXT6DA"}}, "unsigned": {"age_ts": 1570042810881}}3?eQ1!$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2634}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-489", "membership": "join"}, "depth": 8, "hashes": {"sha256": "VQZGBpGqOzsULc80vrwJ2DLet3pD0PKt1UuiaYvc2aM"}, "origin": "localhost:8829", "origin_server_ts": 1570042810250, "prev_events": ["$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo"], "prev_state": [], "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-489:localhost:8829", "state_key": "@anon-20191002_181700-489:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r7Qky41U3tiqWDR+BBFhauJZaDr4gFNNl0WqfQyqFBsGBgqR/NkCVlp423LZN8jGp0UCXVRbEUh+NmjqHUkDBw"}, "localhost:8829": {"ed25519:a_UxIG": "JObi4Hc53TbaHlXHyTzpSfKaeTe1SV04p9uly1qbC3YAFa+z6wK+YyBWckllxk8vBmYxt/PFKafkS6VHNGZJAA"}}, "unsigned": {"age": 90, "replaces_state": "$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg"}}H>eQa$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo!mvgUHEsfGqDkPQUvfG:localhost:8800{"token_id": 491, "stream_ordering": 2633}{"auth_events": ["$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8", "$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo", "$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM"], "prev_events": ["$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg"], "type": "m.room.test", "room_id": "!mvgUHEsfGqDkPQUvfG:localhost:8800", "sender": "@anon-20191002_181700-488:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042809714, "hashes": {"sha256": "Bz39mrpII/ujBVu2Yi10+IFZIctuRdTXKzAc36Ib2D4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b7EjYHHdQ4rJiZS6E3ARKfhSaClZhBPjm36629H7/LZhNQ374KNXXErOaBEJZirOl5lJp4v+dvzK/Pm0fiueDQ"}}, "unsigned": {"age_ts": 1570042809714}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1ye$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk1xe$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE1we$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ1ve$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU1ue$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1te$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun41se$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM1re$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE1qe$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc1pe$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc1oe$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM1ne$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY1me$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg1le$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx81ke$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R981je$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jI1ie$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg1he$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo1ge$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1fe$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1ee$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1de$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu81ce$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ1be$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI1ae$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE1`e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U1_e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc41^e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k1]e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw1\e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A1[e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ1Ze$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41Ye$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f81Xe$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A1We$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv41Ve$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn641Ue$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y1Te$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg1Se$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk41Re$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q1Qe$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb81Pe$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A1Oe$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA1Ne$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q1Me$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC41Le$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA1Ke$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU1Je$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo1Ie$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE1He$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw1Ge$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM1Fe$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i01Ee$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao1De$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y1Ce$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI1Be$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k1Ae$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF101@e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY1?e$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU41>e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k1=e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U1<e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ1;e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI1:e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo19e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ18e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM17e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM16e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A15e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw~14e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro}13e$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ|12e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow{11e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs{10e$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8{1/e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNoy , k x ' K 4 A N [ u$1Xhe>^r!P]Q@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800xP]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800iP]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800jP]Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800kP]Q@anon-20191002_181700-515:localhost:8829!IlGJpjzrvvAFuwTAgo:localhost:8800_P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800~P]Q@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800}P]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800|P]Q@anon-20191002_181700-546:localhost:8829!ZvLVbnHjeymRiFIkYr:localhost:8800{P]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800zP]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800yP]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800wP]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800vP]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800uP]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800tP]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800sP]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800rP]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800qP]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800pP]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800oP]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800nP]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800mP]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800lP]Q@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800gP]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800hP]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800fP]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800eP]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800dP]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800cP]Q@anon-20191002_181700-517:localhost:8829!AoAvmnwMkhYBQsbCsL:localhost:8800bP]Q@anon-20191002_181700-517:localhost:8829!AoAvmnwMkhYBQsbCsL:localhost:8800aP]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800`P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800  w +iIeQa_$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2644}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-491:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042819696, "hashes": {"sha256": "Rt4IUGolRoPlBO20WjP/UalYZt3ca6d+v+9BfojWzhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+30zZzquupCdswSfVRXPfg3xOpqj9Y4sXLuvNl1Ncyzv6P/5Ss7CwH6Jsxh6US9PC0Suk+QEnfRX/GNML3SfCw"}}, "unsigned": {"age_ts": 1570042819696}}HeQk$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "txn_id": "501", "stream_ordering": 2643}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM"], "type": "m.room.message", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042817968, "hashes": {"sha256": "QIGmc9G8ZwvbEfZb83Eu16jj1DpG4oKoysRXgTu6hHk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LH05YqNhoRj26xd82YILxoORnG3VassBKEAGmA/h4/+6Ogtz7rmL4xAXYomsbhmERlHGc6iRHgRd986chEVcDQ"}}, "unsigned": {"age_ts": 1570042817968}}HGeQa$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2642}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM"], "type": "m.room.test", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042817370, "hashes": {"sha256": "uT5vTKswl7zFe9rBb6lRhtqM5ML4HW16E1ct3b7BRp8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yWNitSIASyfaqZLEGMHllhVhEZFov4H7JmxYUQfxttCgcDgaG797DAFCvRITW5pjTDePU/KkIp6l1AUI9GKnDA"}}, "unsigned": {"age_ts": 1570042817370}}FeQa$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2641}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A"], "type": "m.room.history_visibility", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042816295, "hashes": {"sha256": "p1WWBki+eBksIrDj9jfnMHyL1saSAM5T5wNmLpNbp9U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PWsPreVnycIMdXoB8QfjnwEQhmzaZGrFzsXr1yAS8CwKcnoycpKj8W8Uz/fZ4rOuAs48xuHV4DynTUHiI/ueBA"}}, "unsigned": {"age_ts": 1570042816295}} K3{MvHd6 R $ l >  Z , t F  b 4 |N j<V*uGak=W)+[@anon-20191002_181700-60:localhost:8800Q-]@anon-20191002_181700-541:localhost:8800#+[@anon-20191002_181700-53:localhost:8800J-]@anon-20191002_181700-539:localhost:8800"-]@anon-20191002_181700-538:localhost:8800 -]@anon-20191002_181700-537:localhost:8800!-]@anon-20191002_181700-536:localhost:8800-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-534:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-609:localhost:8800^-]@anon-20191002_181700-608:localhost:8800]-]@anon-20191002_181700-606:localhost:8800[-]@anon-20191002_181700-605:localhost:8800Z-]@anon-20191002_181700-604:localhost:8800\-]@anon-20191002_181700-603:localhost:8800X-]@anon-20191002_181700-602:localhost:8800Y-]@anon-20191002_181700-601:localhost:8800V-]@anon-20191002_181700-600:localhost:8800W*Y@anon-20191002_181700-5:localhost:8800+[@anon-20191002_181700-59:localhost:8800P-]@anon-20191002_181700-598:localhost:8800T-]@anon-20191002_181700-597:localhost:8800S-]@anon-20191002_181700-596:localhost:8800R-]@anon-20191002_181700-595:localhost:8800Q-]@anon-20191002_181700-593:localhost:8800P-]@anon-20191002_181700-591:localhost:8800O-]@anon-20191002_181700-590:localhost:8800N+[@anon-20191002_181700-58:localhost:8800O-]@anon-20191002_181700-589:localhost:8800M-]@anon-20191002_181700-588:localhost:8800L-]@anon-20191002_181700-587:localhost:8800K-]@anon-20191002_181700-586:localhost:8800J-]@anon-20191002_181700-585:localhost:8800I-]@anon-20191002_181700-584:localhost:8800H-]@anon-20191002_181700-583:localhost:8800G-]@anon-20191002_181700-582:localhost:8800F-]@anon-20191002_181700-581:localhost:8800E-]@anon-20191002_181700-580:localhost:8800D+[@anon-20191002_181700-57:localhost:8800N-]@anon-20191002_181700-579:localhost:8800C-]@anon-20191002_181700-578:localhost:8800B-]@anon-20191002_181700-577:localhost:8800A-]@anon-20191002_181700-576:localhost:8800@-]@anon-20191002_181700-575:localhost:8800?-]@anon-20191002_181700-574:localhost:8800>-]@anon-20191002_181700-573:localhost:8800=-]@anon-20191002_181700-572:localhost:8800<-]@anon-20191002_181700-571:localhost:8800;-]@anon-20191002_181700-570:localhost:8800:+[@anon-20191002_181700-56:localhost:8800M-]@anon-20191002_181700-569:localhost:88009-]@anon-20191002_181700-568:localhost:88008-]@anon-20191002_181700-567:localhost:88007-]@anon-20191002_181700-566:localhost:88006-]@anon-20191002_181700-565:localhost:88005-]@anon-20191002_181700-564:localhost:88004-]@anon-20191002_181700-563:localhost:88003-]@anon-20191002_181700-562:localhost:88002-]@anon-20191002_181700-561:localhost:88001-]@anon-20191002_181700-560:localhost:88000+[@anon-20191002_181700-55:localhost:8800L-]@anon-20191002_181700-558:localhost:8800/-]@anon-20191002_181700-557:localhost:8800.-]@anon-20191002_181700-556:localhost:8800--]@anon-20191002_181700-555:localhost:8800,-]@anon-20191002_181700-554:localhost:8800+-]@anon-20191002_181700-552:localhost:8800*-]@anon-20191002_181700-551:localhost:8800)-]@anon-20191002_181700-550:localhost:8800(+[@anon-20191002_181700-54:localhost:8800K-]@anon-20191002_181700-549:localhost:8800'-]@anon-20191002_181700-548:localhost:8800&-]@anon-20191002_181700-545:localhost:8800%-]@anon-20191002_181700-543:localhost:8800$ K3{MvHd6 R $ l >  Z , t F  b 4 |N j<V*uGak=W)+[@anon-20191002_181700-60:localhost:8800Q-]@anon-20191002_181700-541:localhost:8800#+[@anon-20191002_181700-53:localhost:8800J-]@anon-20191002_181700-539:localhost:8800"-]@anon-20191002_181700-538:localhost:8800 -]@anon-20191002_181700-537:localhost:8800!-]@anon-20191002_181700-536:localhost:8800-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-534:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-609:localhost:8800^-]@anon-20191002_181700-608:localhost:8800]-]@anon-20191002_181700-606:localhost:8800[-]@anon-20191002_181700-605:localhost:8800Z-]@anon-20191002_181700-604:localhost:8800\-]@anon-20191002_181700-603:localhost:8800X-]@anon-20191002_181700-602:localhost:8800Y-]@anon-20191002_181700-601:localhost:8800V-]@anon-20191002_181700-600:localhost:8800W*Y@anon-20191002_181700-5:localhost:8800+[@anon-20191002_181700-59:localhost:8800P-]@anon-20191002_181700-598:localhost:8800T-]@anon-20191002_181700-597:localhost:8800S-]@anon-20191002_181700-596:localhost:8800R-]@anon-20191002_181700-595:localhost:8800Q-]@anon-20191002_181700-593:localhost:8800P-]@anon-20191002_181700-591:localhost:8800O-]@anon-20191002_181700-590:localhost:8800N+[@anon-20191002_181700-58:localhost:8800O-]@anon-20191002_181700-589:localhost:8800M-]@anon-20191002_181700-588:localhost:8800L-]@anon-20191002_181700-587:localhost:8800K-]@anon-20191002_181700-586:localhost:8800J-]@anon-20191002_181700-585:localhost:8800I-]@anon-20191002_181700-584:localhost:8800H-]@anon-20191002_181700-583:localhost:8800G-]@anon-20191002_181700-582:localhost:8800F-]@anon-20191002_181700-581:localhost:8800E-]@anon-20191002_181700-580:localhost:8800D+[@anon-20191002_181700-57:localhost:8800N-]@anon-20191002_181700-579:localhost:8800C-]@anon-20191002_181700-578:localhost:8800B-]@anon-20191002_181700-577:localhost:8800A-]@anon-20191002_181700-576:localhost:8800@-]@anon-20191002_181700-575:localhost:8800?-]@anon-20191002_181700-574:localhost:8800>-]@anon-20191002_181700-573:localhost:8800=-]@anon-20191002_181700-572:localhost:8800<-]@anon-20191002_181700-571:localhost:8800;-]@anon-20191002_181700-570:localhost:8800:+[@anon-20191002_181700-56:localhost:8800M-]@anon-20191002_181700-569:localhost:88009-]@anon-20191002_181700-568:localhost:88008-]@anon-20191002_181700-567:localhost:88007-]@anon-20191002_181700-566:localhost:88006-]@anon-20191002_181700-565:localhost:88005-]@anon-20191002_181700-564:localhost:88004-]@anon-20191002_181700-563:localhost:88003-]@anon-20191002_181700-562:localhost:88002-]@anon-20191002_181700-561:localhost:88001-]@anon-20191002_181700-560:localhost:88000+[@anon-20191002_181700-55:localhost:8800L-]@anon-20191002_181700-558:localhost:8800/-]@anon-20191002_181700-557:localhost:8800.-]@anon-20191002_181700-556:localhost:8800--]@anon-20191002_181700-555:localhost:8800,-]@anon-20191002_181700-554:localhost:8800+-]@anon-20191002_181700-552:localhost:8800*-]@anon-20191002_181700-551:localhost:8800)-]@anon-20191002_181700-550:localhost:8800(+[@anon-20191002_181700-54:localhost:8800K-]@anon-20191002_181700-549:localhost:8800'-]@anon-20191002_181700-548:localhost:8800&-]@anon-20191002_181700-545:localhost:8800%-]@anon-20191002_181700-543:localhost:8800$   *tEeQau$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2640}{"auth_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw", "$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw"], "type": "m.room.join_rules", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042815663, "hashes": {"sha256": "ArxH6t9djxufFDl0C8TyyhUlqh2BqVlmAwzmnJfRYAQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mOQoKdAcjP6QfJWVa+JmsjrGxmhWDBK6hPFLe4Mbcfll7kJLMBwRsbT5kXoFqObKbKEvFktRI6fYhVmQPV1yBQ"}}, "unsigned": {"age_ts": 1570042815663}}kDeQac$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2639}{"auth_events": ["$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ", "$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "prev_events": ["$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro"], "type": "m.room.power_levels", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"users": {"@anon-20191002_181700-490:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042814641, "hashes": {"sha256": "pqJ+LDYbLpNYWoBdWhx6F6Ep/hFc+dvvXUMpihcPWGQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCJgwtAtItkWHv2EGWFZUi2qammEj/CdHsiyQ2YVbaZay8UiYtQlMumOQbEQ7QEUH102pjKPLSxxJEVtWKyoAA"}}, "unsigned": {"age_ts": 1570042814641}}vCeQay$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2638}{"auth_events": ["$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ"], "prev_events": ["$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ"], "type": "m.room.member", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-490", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-490:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042813896, "hashes": {"sha256": "S9XBIrtR0PdYBggzmViaH6Rx1EenoxUs1XgRWiyyrkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yqp5DjCQwMrdN+AdcJuhN9qym31S1cRsS383F0V+7BUiGrgHAsqObslqRabyJy858MN75r+J5+JDCUDCuvTeDw"}}, "unsigned": {"age_ts": 1570042813896}}iBeQa_$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800{"token_id": 492, "stream_ordering": 2637}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pJUItjYTOUJQFIxyiX:localhost:8800", "sender": "@anon-20191002_181700-490:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-490:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042813228, "hashes": {"sha256": "76Vc/lb1sJrDoOUfiFQldw+hybCq3gBFODq3OEVHfEU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uPeKlE5ioT8/Fl3aOxGFIcs5O89DlICF5YJwWtU2OvfwW9iZr6ufr0lO0OcyK7nSe+dM0ZJ6xqAnRW1TDqGmAA"}}, "unsigned": {"age_ts": 1570042813228}} "= i r  - - <jvFcr{mceQ? $ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibilityebeQ/ $EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rulesgaeQ3 $GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels `eQ']$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800a_eQ' $fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create ^eQ']$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829p]eQ))$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800m\eQ? $rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibilitye[eQ/ $pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rulesjZeQ9 $Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_aliasgYeQ3 $7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels XeQ']$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800aWeQ' $gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800m.room.create VeQ']$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800 UeQ']$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800gTeQ3 $Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_accessmSeQ? $tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibilityeReQ/ $8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rulesgQeQ3 $IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels PeQ']$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800aOeQ' $FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create NeQ']$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800pMeQ))$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800mLeQ? $0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibilityeKeQ/ $2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rulesjJeQ9 $bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_aliasgIeQ3 $lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels HeQ']$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800aGeQ' $xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800m.room.createmFeQ? $GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibilityeEeQ/ $Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rulesgDeQ3 $QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels CeQ']$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800aBeQ' $0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800m.room.create 9r  T 6oOHCS e]]Q=$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4@anon-20191002_181700-505:localhost:8800@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800joinanon-20191002_181700-505CR e]]Q=$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8@anon-20191002_181700-504:localhost:8829@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800joinanon-20191002_181700-504EQ e]]Q=$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y@anon-20191002_181700-504:localhost:8829@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800inviteanon-20191002_181700-504CP e]]Q=$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4@anon-20191002_181700-503:localhost:8800@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800joinanon-20191002_181700-503,O e]]Q$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk@anon-20191002_181700-502:localhost:8829@anon-20191002_181700-502:localhost:8829!coGyOAgYnlBZAqznax:localhost:8800leaveEN e]]Q=$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ@anon-20191002_181700-502:localhost:8829@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800inviteanon-20191002_181700-502CM e]]Q=$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM@anon-20191002_181700-501:localhost:8800@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800joinanon-20191002_181700-501EL e]]Q=$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs@anon-20191002_181700-500:localhost:8829@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800inviteanon-20191002_181700-500CK e]]Q=$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ@anon-20191002_181700-499:localhost:8800@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800joinanon-20191002_181700-499CJ e]]Q=$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U@anon-20191002_181700-498:localhost:8829@anon-20191002_181700-498:localhost:8829!rpVYLTJGcFNdGzFzXj:localhost:8800joinanon-20191002_181700-498EI e]]Q=$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4@anon-20191002_181700-498:localhost:8829@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800inviteanon-20191002_181700-498CH e]]Q=$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800joinanon-20191002_181700-497CG e]]Q=$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64@anon-20191002_181700-496:localhost:8829@anon-20191002_181700-496:localhost:8829!iKezIvJyjkNqKayFju:localhost:8800joinanon-20191002_181700-496CF e]]Q=$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA@anon-20191002_181700-495:localhost:8800@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800joinanon-20191002_181700-495CE e]]Q=$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800joinanon-20191002_181700-494ED e]]Q=$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800inviteanon-20191002_181700-494CC e]]Q=$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800joinanon-20191002_181700-493CB e]]Q=$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k@anon-20191002_181700-492:localhost:8800@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800joinanon-20191002_181700-492CA e]]Q=$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI@anon-20191002_181700-491:localhost:8800@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800joinanon-20191002_181700-491C@ e]]Q=$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro@anon-20191002_181700-490:localhost:8800@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800joinanon-20191002_181700-490 ;[)Og5m; tB O  #  UU # v j  [ ) a/pC J8{I D  | 1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ01e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico 51e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf481e$CYOZYwu0XgGGARZtPdiUiRSjz-Y-s7F23FZz_7O-iQQ1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0M 1e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEG1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY M1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio ]1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQL1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo\1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY1e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiI1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQIc1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts{1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c`1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLIe1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs-1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$DpNc92QZ2Rrsm1mVzuTDJxS_1EuUh5vmPi3JUdjK04M1e$Dl6zmZBclk2lWC0LF1T9duLwski9AYSI6gZIKOGO94I1e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BA1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQ1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9ob1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c]1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg 1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPA1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKMm1e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQZ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiI1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcD _1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 >21e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o -21e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k21e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 d1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA 1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU  CqBr? g4d/ _ , ^ + [ ( X # S ROJ|Gwq> n;50[@anon-20191002_181700-57:localhost:8800aj4]@anon-20191002_181700-549:localhost:8800m2]@anon-20191002_181700-549:localhost:8800a4]@anon-20191002_181700-548:localhost:8800m2]@anon-20191002_181700-548:localhost:8800a4]@anon-20191002_181700-545:localhost:8800m2]@anon-20191002_181700-545:localhost:8800a4]@anon-20191002_181700-543:localhost:8800m2]@anon-20191002_181700-543:localhost:8800a4]@anon-20191002_181700-541:localhost:8800m4]@anon-20191002_181700-579:localhost:8800m 2]@anon-20191002_181700-579:localhost:8800a 4]@anon-20191002_181700-578:localhost:8800m 2]@anon-20191002_181700-578:localhost:8800a 4]@anon-20191002_181700-577:localhost:8800m2]@anon-20191002_181700-577:localhost:8800a4]@anon-20191002_181700-576:localhost:8800m2]@anon-20191002_181700-576:localhost:8800a2]@anon-20191002_181700-575:localhost:8800a4]@anon-20191002_181700-574:localhost:8800m2]@anon-20191002_181700-574:localhost:8800a4]@anon-20191002_181700-573:localhost:8800m2]@anon-20191002_181700-573:localhost:8800a4]@anon-20191002_181700-572:localhost:8800m2]@anon-20191002_181700-572:localhost:8800a4]@anon-20191002_181700-571:localhost:8800m2]@anon-20191002_181700-571:localhost:8800a4]@anon-20191002_181700-570:localhost:8800m2]@anon-20191002_181700-570:localhost:8800a0[@anon-20191002_181700-56:localhost:8800ai4]@anon-20191002_181700-569:localhost:8800m2]@anon-20191002_181700-569:localhost:8800a4]@anon-20191002_181700-568:localhost:8800m2]@anon-20191002_181700-568:localhost:8800a4]@anon-20191002_181700-567:localhost:8800m2]@anon-20191002_181700-567:localhost:8800a4]@anon-20191002_181700-566:localhost:8800m2]@anon-20191002_181700-566:localhost:8800a4]@anon-20191002_181700-565:localhost:8800m2]@anon-20191002_181700-565:localhost:8800a4]@anon-20191002_181700-564:localhost:8800m2]@anon-20191002_181700-564:localhost:8800a4]@anon-20191002_181700-563:localhost:8800m2]@anon-20191002_181700-563:localhost:8800a4]@anon-20191002_181700-562:localhost:8800m2]@anon-20191002_181700-562:localhost:8800a4]@anon-20191002_181700-561:localhost:8800m2]@anon-20191002_181700-561:localhost:8800a2]@anon-20191002_181700-560:localhost:8800a0[@anon-20191002_181700-55:localhost:8800ah4]@anon-20191002_181700-558:localhost:8800m2]@anon-20191002_181700-558:localhost:8800a4]@anon-20191002_181700-557:localhost:8800m2]@anon-20191002_181700-557:localhost:8800a4]@anon-20191002_181700-556:localhost:8800m2]@anon-20191002_181700-556:localhost:8800a4]@anon-20191002_181700-555:localhost:8800m2]@anon-20191002_181700-555:localhost:8800a4]@anon-20191002_181700-554:localhost:8800m2]@anon-20191002_181700-554:localhost:8800a4]@anon-20191002_181700-552:localhost:8800m2]@anon-20191002_181700-552:localhost:8800a4]@anon-20191002_181700-551:localhost:8800m2]@anon-20191002_181700-551:localhost:8800a4]@anon-20191002_181700-550:localhost:8800m2]@anon-20191002_181700-550:localhost:8800a0[@anon-20191002_181700-54:localhost:8800ag 4,e*y>ROc( w <  P  d ) f+?zSg,{@ x =  Q 8:]!L@anon-20191002_181700-540:localhost:8829DTIXBTNGTL89]!J@anon-20191002_181700-539:localhost:8800OLXWQXBCRO87]!H@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ88]!I@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ84]!E@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ85]!F@anon-20191002_181700-536:localhost:8800ABPPMMQYEY82]!C@anon-20191002_181700-534:localhost:8800RHYMUWAILZ81]!B@anon-20191002_181700-533:localhost:8800TYQEWPDZRP80]!A@anon-20191002_181700-534:localhost:8800FBPWXONJWM8.]!?@anon-20191002_181700-531:localhost:8800HVNAEYFAYK8/]!@@anon-20191002_181700-532:localhost:8800FXXARIFXSS8,]!=@anon-20191002_181700-529:localhost:8800WXKOXWYNOL8+]!<@anon-20191002_181700-527:localhost:8800BACKHRSCZN8*]!9@anon-20191002_181700-526:localhost:8800CNSENJMXXV8)]!8@anon-20191002_181700-525:localhost:8800DQXQXDJYET8(]!7@anon-20191002_181700-524:localhost:8800IVEUVINDHF8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8 ]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ8 ]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS8 ]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH8 ]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ8 ]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8']!4@anon-20191002_181700-523:localhost:8800CMSDWRWLLH8&]!3@anon-20191002_181700-521:localhost:8800PMRXQYAAOV8%]!2@anon-20191002_181700-520:localhost:8800LGMWFFKPIS8$]!1@anon-20191002_181700-518:localhost:8800LJEXZWJDWN8#]!0@anon-20191002_181700-516:localhost:8800DBXNPICYFO8"]!/@anon-20191002_181700-514:localhost:8800LBNXTFJTIT8!]!.@anon-20191002_181700-512:localhost:8800XMPLTRSJHY8 ]!-@anon-20191002_181700-510:localhost:8800TMGCAARJXM8]!,@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!+@anon-20191002_181700-508:localhost:8800IUNUZDZDEU8]!*@anon-20191002_181700-507:localhost:8800XTAWUKOTOH8]!)@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!(@anon-20191002_181700-505:localhost:8800QKCBIAVDQA8]!'@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!&@anon-20191002_181700-501:localhost:8800YBYGOFEONK8]!%@anon-20191002_181700-499:localhost:8800VXSECXNERA8]!$@anon-20191002_181700-497:localhost:8800OIZUJKPCSC8]!#@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ8]!"@anon-20191002_181700-493:localhost:8800GRPWUCANVU8]!!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]! @anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM g i  4ih5 g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-Fxgfwo 31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6go g * T~=ggo]!c@anon-20191002_181700-507:localhost:8800XTAWUKOTOHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQogn]!c@anon-20191002_181700-506:localhost:8800WTFXNSFUTLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQogm]!c@anon-20191002_181700-505:localhost:8800QKCBIAVDQAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQogl]!c@anon-20191002_181700-503:localhost:8800JNGLRXMCQMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwogk]!c@anon-20191002_181700-501:localhost:8800YBYGOFEONKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0Hwogj]!c@anon-20191002_181700-499:localhost:8800VXSECXNERAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAogi]!c@anon-20191002_181700-497:localhost:8800OIZUJKPCSCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogogh]!c@anon-20191002_181700-495:localhost:8800QBXBDGRDFZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQogg]!c@anon-20191002_181700-493:localhost:8800GRPWUCANVUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJKflhsLjswOjAtTloxI3MKMDAyZnNpZ25hdHVyZSCnS2gnMrM7b6E5Sb7SqjMt2C7ryIzCDlyw9gZRK8pEowogf]!c@anon-20191002_181700-494:localhost:8800HEAHMVMVEQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3Qwoge]!c@anon-20191002_181700-492:localhost:8800BHHCHVPHQTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZzdW4uWjlOcDgsU2cmRFcKMDAyZnNpZ25hdHVyZSDvbS2PGmuMobQ_9wANn3WMnp4bNM36yPUME7Ota8WfBwo ,NC 8 - { " p  e ZOD9.|#qf VteL$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYsha256w>L!lO,3J$I=,u)Z\VseL$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8sha256E`?N8dkRr01VreL$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQsha256Yl{Ѩ?nhQ?=1VqeL$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIsha256&0Jg:rTWGW ɬEFطv"VpeL$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICEsha256Hstx:h?!aGRu՚ !VoeL$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Usha256mޔ#L.TuVneL$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4sha256SiO! QIp~VmeL$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-ksha256($,zV [*t E4OVleL$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwsha256D])ShqcđGiFpN"q$T VkeL$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Asha256Wj$?M_">$_`v;r{`VjeL$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQsha256!0=57̓h r߈|dVieL$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4sha2568Swi g+R$vgi \HDVheL$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8sha256@(sr"mOtw?VgeL$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1Asha256|fo#6lWо=椬]>rVG;PVfeL$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4sha2569ȟZKY~"NqZЄ rVeeL$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64sha256 |Ճ8r0E3 柮VdeL$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Ysha256&H˽YT,>UDFVceL$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgsha256*%vKeXߑ`ClD)VbeL$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4sha256mGZ6I=ݍctV&NVaeL$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qsha2563`G+TA Wb sN8#V`eL$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8sha256:‡)CuWb]B3[/)V_eL$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Asha256= ;[Or8^#ې7k@V^eL$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAsha256>hdi`+ٞM>;.@V]eL$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Qsha256}p ƤJM.av ΞV\eL$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4sha256 :Z!JNKSHuBJw^'.V[eL$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAsha256k#TjTݲ\:d3FPVZeL$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUsha256]b fe2oкТ&(!H#umVYeL$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWosha256j |kt2)*[;m.YjVXeL$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEsha256gX$b}ٹ4K)V#r2uFFB1VWeL$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwsha2562gٽn9J4-}IHiKeBVVeL$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMsha256ĦV:4k? D! VUeL$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0sha256 pRցN *j*/OתD(y-VTeL$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaosha256ߺ!,"@ZMųO!:utiVSeL$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Ysha256h5[54 $~P  .~ӆVReL$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkIsha256 oᕵ0x)&D{8w9}BVQeL$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175ksha256um8 3xŀvrLzu3VPeL$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10sha256i~P#v(˺d<;zs*IEr]VOeL$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYsha256*=I./^nUAUylVNeL$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4sha256ҶöGc7 p9m;pC_,3%NVMeL$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7ksha2561'`;t33gYD>x_VLeL$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5Usha256l CO'}j8?n IVKeL$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQsha256F@ $]kUݽwy@. n>VJeL$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIsha256L1QIĈA{RۆGJpcx.VIeL$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvosha256ħ˾,24Oj34ctZ  tMeQau$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2648}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U"], "type": "m.room.join_rules", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042823023, "hashes": {"sha256": "cQ2xGCUs8uZbcqbO6Vbb5bUxaxW+HzcK20Cu/L99lb0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3BCaE/kEaX12z47QKc+bvWcoX/X2LZWLX6UTnMWcUflDTU3U2T2INp0vcoPQ3lT8YlWQngDXd6caTWNHZZ8pBQ"}}, "unsigned": {"age_ts": 1570042823023}} LeQa!$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2647}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ"], "type": "m.room.canonical_alias", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"alias": "#__ANON__-21:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042822255, "hashes": {"sha256": "pF51J+L+hThllmgze6f9lWjhULJhxVaN0B0fFD5zPj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q0COVbm5F2BpJfCPvjDCihGWV4rXxsjN/Esjyr5wJ9OqUZxPQgw+cNAMMAaqeJJf85+/3TkLrkyc2J9qBFXkCg"}}, "unsigned": {"age_ts": 1570042822255}}kKeQac$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2646}{"auth_events": ["$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "type": "m.room.power_levels", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"users": {"@anon-20191002_181700-491:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042821424, "hashes": {"sha256": "JQ9KWbPs7moKFtKNlbKrZCwM1JCGTr93/8x7WR/nzAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MurE/6i1Jtv7N8Ygs2AF6rPMLDGPIqnjsDCprZ6QF0nbtz3P8aX2UJqPj9BQhLIzVcQUGPeay1AVfdGU4Ev7Aw"}}, "unsigned": {"age_ts": 1570042821424}}vJeQay$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2645}{"auth_events": ["$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo"], "prev_events": ["$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo"], "type": "m.room.member", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-491", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-491:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042820719, "hashes": {"sha256": "1+RFz9MaDjA1Oi+onwgA0GJY1XzlMjVvs/1Ht7uzpRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vFbai4Ijs/ueVL48PisTey5XkofFkzOcueHp8zFyhxEyRlPe7pKwWuAnu0//UyQMQOpN9OAeqquhvs8CLTdJAg"}}, "unsigned": {"age_ts": 1570042820719}} ~<o0 M X ]  &+VsALQya\eQ' $xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800m.room.createm[eQ? $GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM!pJUItjYTOUJQFIxyiX:localhost:8800m.room.history_visibilityeZeQ/ $Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A!pJUItjYTOUJQFIxyiX:localhost:8800m.room.join_rulesgYeQ3 $QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw!pJUItjYTOUJQFIxyiX:localhost:8800m.room.power_levels XeQ']$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro!pJUItjYTOUJQFIxyiX:localhost:8800m.room.member@anon-20191002_181700-490:localhost:8800joinaWeQ' $0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800m.room.createpqeQ))$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800mpeQ? $rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibilityeoeQ/ $pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rulesjneQ9 $Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_aliasgmeQ3 $7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels leQ']$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800joinakeQ' $gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800m.room.create jeQ']$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800joingieQ3 $Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_accessmheQ? $tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibilityegeQ/ $8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rulesgfeQ3 $IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels eeQ']$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800joinadeQ' $FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create ceQ']$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-492:localhost:8800joinpbeQ))$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800m.room.aliaseslocalhost:8800maeQ? $0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800m.room.history_visibilitye`eQ/ $2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800m.room.join_rulesj_eQ9 $bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U!kOmCTyiizHqfCJdhlR:localhost:8800m.room.canonical_aliasg^eQ3 $lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800m.room.power_levels ]eQ']$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800m.room.member@anon-20191002_181700-491:localhost:8800join a} { y w u sqomkigeca~jeeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800~ieeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~heeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~geeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~feeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~eeeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~deeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~ceeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~beeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~aeeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~`eeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~_eeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~^eeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800~]eeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~\eeQ$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~[eeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k!kOmCTyiizHqfCJdhlR:localhost:8800~ZeeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~YeeQ$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~XeeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~WeeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~VeeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~UeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~TeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~SeeQ$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~ReeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~QeeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~PeeQ$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~OeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800~NeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo!kOmCTyiizHqfCJdhlR:localhost:8800~MeeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800~LeeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800 +=j9r@xF~LR w E  }p K   R  X & ^ ,>dK2%Qj8+21e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA {2'1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg41e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1k1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk1e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHIx1e$n-3uMmyJFPDYAG_HlGCVNHWBoI69N1KgRBVKTg1ceDA1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE!1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAUa1e$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8 1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv01e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gS1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ,0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko31e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECMw1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq0U1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg821e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI]1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag\1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M`1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMt1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Y1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY^1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k ^1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu431e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh01e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsH0e$nAqbnAbJfWms9pfGXnfzOz_AIgir6Nu_DGmQTEeptHsz1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 41e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 21e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg +1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI% yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,mu mr mn mj mdx m` m^ m[s mW9 mT mQ mN mL mI mBd m? m: m8D m4 m2 m/W m%q m%^ m" m m) mT m m ma m m m m" mK m mU m m@ m m m m m mD mۢ m٧ mw mհ m mP m  m< ~ ~m } }m( | |mؽ[ { {mعp z zmض y ymسT x xmخ w wmث v vmبo u umإj t tmآ s sm؟P r rmؘ5 q qmؔ p pmؒ o om؏n n nm؋ m mm؉ l lm؅ k km؂ j jm؀R i im}' h hmw g gms[ f fmo e emmz d dmi c cmfH b bmb a am_ ` `m\ _ _mY ^ ^mS ] ]mO \ \mM [ [mH Z ZmD Y YmAo X Xm>o W Wm;0 V Vm8o U Um4p T Tm- S Sm+Z R Rm'' Q Qm$ P Pm O Om N Nm, M Mm L Lm K Km J Jm r I Im H HmP G Gm F Fm1 E Em D Dm~ C Cm B BmH A Amk @ @m$ ? ?m# > >m = =m~ < <m. ; ;m m. m m m m m mƞ m\ mo mٽ* mٹ mٷ mٵ m٭ m٩ m٧- m٤M m٠ mٜ mٙ mٕ mٓ mُ mي mن mك mـ5 m|* myT m] : :mA 9 9mD 8 8m{ 7 7m 6 6mѬ 5 5m" 4 4mQ 3 3m̰ 2 2m 1 1mȤ 0 0m / /m . .m׾ - -m׼ , ,m׹m + +m׶ * *m׳E ) )m׬ ( (mש1 ' 'mץ & &mף % %mן $ $mל # #mי " "mז: ! !mד mב  m׊  mׅi  m׃I  m׀{  m|  my  mw  ms  mq  mn  mj'  me  mck  ma$  m]:  mZ  mW  mU mR mO mI4 mE mC  m?  m;  m8  m6  m3F  m1:  m.  m( m& U! MF>7/'Cx t 3  ] m e eeQ$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY!BckZfhQgrcyiMhEAAJ:localhost:8800jeeQ$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4!BckZfhQgrcyiMhEAAJ:localhost:8800keeQ$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o$XOu0tY3NGRFrYXb5BtDjLs6V5lkILdrSYGlYV31RS5M!xhbvqJDfxMSsZPqvld:localhost:8800eeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE!TleKOyAElrpgyyrAQA:localhost:8800eeQ$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eY$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!rWGwSSefrZzQYCYFHs:localhost:8800"eeQ$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw!FIOuvzpMhoERunVYYA:localhost:8800~eeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800 eeQ$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN0!TleKOyAElrpgyyrAQA:localhost:8800eeQ$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M!kxTDuIasPNpXtiRsif:localhost:8800peeQ$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM!YQATbgbLImCDamiDHC:localhost:8800eeQ$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k!raCWVWQGnXbmkexpCN:localhost:8800eeQ$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A!dUnULFLGtgaVdwHtnz:localhost:8800veeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10!PQZMTVTeCYqMZwkHvW:localhost:8800neeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw!XMNRkfscQXRjgYrOSd:localhost:8800ŁeeQ$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumE!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k!zNBpypJDRMlBdOcLlW:localhost:8800wA333$69:localhost:42455$68:localhost:42455!10:localhost:42455 I@331$67:localhost:42455$66:localhost:42455!9:localhost:42455 G@331$66:localhost:42455$65:localhost:42455!9:localhost:42455 FfIIQ$64_redaction2:localhost:42455$63_redaction1:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800 E[I3Q$63_redaction1:localhost:42455$62:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800 DjIQQ$63_redaction1:localhost:42455$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 C_3QQ$62:localhost:42455$1570043656428rZaqi:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 B_3QQ$61:localhost:42455$1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 ;\??Q$60_msg_e:localhost:42455$59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800  wVQeQa9$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 494, "stream_ordering": 2652}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k"], "prev_events": ["$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10"], "type": "m.room.member", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-492:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-492", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-492:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042826629, "hashes": {"sha256": "a0J+sT0nHnBvH2aCKtIoPCCQ/dJesHv1zx8yvRUOasU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wXbgEXQ1ARbup4o5qqNdUzSHN5NfxPKkYNCNx8FRJpLkOiDFr/CKK2cdhXEKdeFza0YLRDDk6pGi7cZpjDE3BA"}}, "unsigned": {"age_ts": 1570042826629}}HPeQa$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2651}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY"], "type": "m.room.test", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042826147, "hashes": {"sha256": "ajysce5u/Oe+vY3XHdLi8hIVHdHEpxgu7xEAS1XbKKs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/ghfnrjQgDJM6fr/YrzXFuakynfTrq3iNw89lrb6Sjez2Ml70bfHfXfIi8H0k0PSMB8A3HrwwSZm8CFbvyYDDQ"}}, "unsigned": {"age_ts": 1570042826147}}OeQa5$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2650}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4"], "type": "m.room.aliases", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"aliases": ["#__ANON__-21:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042824898, "hashes": {"sha256": "oH/OIokznNIYuUeSIjcCoQMmLaR2le9MungNw4+2gTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+HzeAG3+YzaWcvRdyvgeYCHcYqq8DQ11i+Wo6jNCupFlEhPhxAbs1YnCJjQdlg28/x3yKTrEp5C9R6E6mQNbAg"}}, "unsigned": {"age_ts": 1570042824898}}NeQa$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "stream_ordering": 2649}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k"], "type": "m.room.history_visibility", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042823874, "hashes": {"sha256": "+PRbBzC57IU+ZUXKp2RYEhV+11ggTzbadXdVsP04X3g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "awaeips03kCvwSGysG7bEOQFZ5JS2QUAwc48v+81z6a3T/6GYeQNN/fqWW8QdfjEoBgJazA/Y8wHVHOr7kvmDg"}}, "unsigned": {"age_ts": 1570042823874}} )}sDY* p A  V ' m >  S $ h 9 }.Q$1570042663162sQrEh:localhost:8800sha256 .Q$1570042662161lGrSW:localhost:8800sha256 .Q$1570042662160SrmtM:localhost:8800sha256 .Q$1570042661159xQwJK:localhost:8800sha256 .Q$1570042661158igwHF:localhost:8800sha256 .Q$1570042660157svDcU:localhost:8800sha256 .Q$1570042660156wxhvl:localhost:8800sha256 .Q$1570042659155mEUeP:localhost:8800sha256 .Q$1570042659154Fztdf:localhost:8800sha256 .Q$1570042658153tmCYJ:localhost:8800sha256 .Q$1570042658152btGpA:localhost:8800sha256 .Q$1570042657151cITOZ:localhost:8800sha256 .Q$1570042656150UsLRz:localhost:8800sha256 .Q$1570042656149JNVWR:localhost:8800sha256 ~.Q$1570042655148eXOyA:localhost:8800sha256 }.Q$1570042654147iSsjl:localhost:8800sha256 |.Q$1570042653146dGCce:localhost:8800sha256 {.Q$1570042651145wBynt:localhost:8800sha256 z,M$15700426501OLytM:localhost:8829sha256 y.Q$1570042649143JxPAB:localhost:8800sha256 x.Q$1570042648142spuws:localhost:8800sha256 w.Q$1570042648141xSHQB:localhost:8800sha256 v.Q$1570042647140rNeEf:localhost:8800sha256 u.Q$1570042646139VXLYO:localhost:8800sha256 t.Q$1570042646138YEunv:localhost:8800sha256 s.Q$1570042645137fBnPZ:localhost:8800sha256 r.Q$1570042644136OugnY:localhost:8800sha256 q.Q$1570042642135oMfQy:localhost:8800sha256 p,M$15700426410cEjWu:localhost:8829sha256 o.Q$1570042640133wGmrF:localhost:8800sha256 n.Q$1570042639132zhjjB:localhost:8800sha256 m.Q$1570042638131kazZm:localhost:8800sha256 l.Q$1570042637130zlkqP:localhost:8800sha256 k.Q$1570042636129shBTe:localhost:8800sha256 j.Q$1570042635128KJCvL:localhost:8800sha256 i.Q$1570042634127eDBry:localhost:8800sha256 h.Q$1570042634126YmPkp:localhost:8800sha256 g.Q$1570042632125lwdOR:localhost:8800sha256 f.Q$1570042632124bMwzE:localhost:8800sha256 e.Q$1570042631123SLyGA:localhost:8800sha256 d.Q$1570042630122bUTeO:localhost:8800sha256 c zV ;Z0 fL 8 PlM m W *wJnC ` 3 sh? y S & 0] E   | #  A,Q!yNfCaBMPezurwkJRAX:localhost:8800mm,Q!yNfCaBMPezurwkJRAX:localhost:8800ll,Q!yNfCaBMPezurwkJRAX:localhost:8800kk+Q !xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 +Q !yAfsSyqpJWFnkXQFJL:localhost:8800 s s*Q!wvnfKBSrUlfNmYoeil:localhost:8800{{*Q!wvnfKBSrUlfNmYoeil:localhost:8800zz*Q!wvnfKBSrUlfNmYoeil:localhost:8800yy)Q !wvnfKBSrUlfNmYoeil:localhost:8800xx,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!xwoIOPTGmJIlTXakxC:localhost:8800__*Q!xwoIOPTGmJIlTXakxC:localhost:8800^^*Q!xwoIOPTGmJIlTXakxC:localhost:8800]]*Q!xwoIOPTGmJIlTXakxC:localhost:8800\\*Q!xwoIOPTGmJIlTXakxC:localhost:8800[[)Q !xwoIOPTGmJIlTXakxC:localhost:8800ZZ,Q!xvblqEscwOtCqJntfF:localhost:8800OO,Q!xvblqEscwOtCqJntfF:localhost:8800NN,Q!xvblqEscwOtCqJntfF:localhost:8800MM,Q!xvblqEscwOtCqJntfF:localhost:8800LL+Q !xvblqEscwOtCqJntfF:localhost:8800KK,Q!xhbvqJDfxMSsZPqvld:localhost:8800   ,Q!xhbvqJDfxMSsZPqvld:localhost:8800  ,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xXYMxashIZAUOTuGAJ:localhost:8800EE,Q!xXYMxashIZAUOTuGAJ:localhost:8800DD,Q!xXYMxashIZAUOTuGAJ:localhost:8800CC,Q!xXYMxashIZAUOTuGAJ:localhost:8800BB*Q!wvnfKBSrUlfNmYoeil:localhost:8800||,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  +Q !yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t t,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yNfCaBMPezurwkJRAX:localhost:8800jj,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yNfCaBMPezurwkJRAX:localhost:8800nn,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w w,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v v,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u u-,Q!yNfCaBMPezurwkJRAX:localhost:8800oo,Q!yTQmLDAxZscWKLMSWh:localhost:8800 % %+Q !yTQmLDAxZscWKLMSWh:localhost:8800 $ $,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800+Q !xhbvqJDfxMSsZPqvld:localhost:8800+Q !xXYMxashIZAUOTuGAJ:localhost:8800??,Q!xXYMxashIZAUOTuGAJ:localhost:8800AA,Q!xXYMxashIZAUOTuGAJ:localhost:8800@@,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800   zV ;Z0 fL 8 PlM m W *wJnC ` 3 sh? y S & 0] E   | #  A,Q!yNfCaBMPezurwkJRAX:localhost:8800mm,Q!yNfCaBMPezurwkJRAX:localhost:8800ll,Q!yNfCaBMPezurwkJRAX:localhost:8800kk+Q !xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 ,Q!xcdNyJNFEdaBGFycsB:localhost:8800 +Q !yAfsSyqpJWFnkXQFJL:localhost:8800 s s*Q!wvnfKBSrUlfNmYoeil:localhost:8800{{*Q!wvnfKBSrUlfNmYoeil:localhost:8800zz*Q!wvnfKBSrUlfNmYoeil:localhost:8800yy)Q !wvnfKBSrUlfNmYoeil:localhost:8800xx,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800 ,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!xwoIOPTGmJIlTXakxC:localhost:8800__*Q!xwoIOPTGmJIlTXakxC:localhost:8800^^*Q!xwoIOPTGmJIlTXakxC:localhost:8800]]*Q!xwoIOPTGmJIlTXakxC:localhost:8800\\*Q!xwoIOPTGmJIlTXakxC:localhost:8800[[)Q !xwoIOPTGmJIlTXakxC:localhost:8800ZZ,Q!xvblqEscwOtCqJntfF:localhost:8800OO,Q!xvblqEscwOtCqJntfF:localhost:8800NN,Q!xvblqEscwOtCqJntfF:localhost:8800MM,Q!xvblqEscwOtCqJntfF:localhost:8800LL+Q !xvblqEscwOtCqJntfF:localhost:8800KK,Q!xhbvqJDfxMSsZPqvld:localhost:8800   ,Q!xhbvqJDfxMSsZPqvld:localhost:8800  ,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xXYMxashIZAUOTuGAJ:localhost:8800EE,Q!xXYMxashIZAUOTuGAJ:localhost:8800DD,Q!xXYMxashIZAUOTuGAJ:localhost:8800CC,Q!xXYMxashIZAUOTuGAJ:localhost:8800BB*Q!wvnfKBSrUlfNmYoeil:localhost:8800||,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800  +Q !yAzXcNLHMuqFOcOexj:localhost:8800  ,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 t t,Q!yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yLccBXjjEasExpsXlt:localhost:8800 ,Q!yLccBXjjEasExpsXlt:localhost:8800 +Q !yNfCaBMPezurwkJRAX:localhost:8800jj,Q!wsvXTJXouVkEZcCFsD:localhost:8800,Q!yNfCaBMPezurwkJRAX:localhost:8800nn,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 w w,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 v v,Q!yAfsSyqpJWFnkXQFJL:localhost:8800 u u-,Q!yNfCaBMPezurwkJRAX:localhost:8800oo,Q!yTQmLDAxZscWKLMSWh:localhost:8800 % %+Q !yTQmLDAxZscWKLMSWh:localhost:8800 $ $,Q!xhbvqJDfxMSsZPqvld:localhost:8800,Q!xhbvqJDfxMSsZPqvld:localhost:8800+Q !xhbvqJDfxMSsZPqvld:localhost:8800+Q !xXYMxashIZAUOTuGAJ:localhost:8800??,Q!xXYMxashIZAUOTuGAJ:localhost:8800AA,Q!xXYMxashIZAUOTuGAJ:localhost:8800@@,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800 ,Q!yAzXcNLHMuqFOcOexj:localhost:8800   j[ p * ( ~8MRUj!qe)Q ] $HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4m.room.message!iKezIvJyjkNqKayFju:localhost:8800 mؘ5mؙ@anon-20191002_181700-495:localhost:8800 pe'Q ] $rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64m.room.member!iKezIvJyjkNqKayFju:localhost:8800 mؔmؕ@anon-20191002_181700-496:localhost:8829oe#Q ]$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Ym.room.test!iKezIvJyjkNqKayFju:localhost:8800mؒmؒ@anon-20191002_181700-495:localhost:8800!ne)Q ]$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgm.room.aliases!iKezIvJyjkNqKayFju:localhost:8800m؏nmؐ6@anon-20191002_181700-495:localhost:8800,me?Q ]$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4m.room.history_visibility!iKezIvJyjkNqKayFju:localhost:8800m؋m؍@anon-20191002_181700-495:localhost:8800$le/Q ]$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Qm.room.join_rules!iKezIvJyjkNqKayFju:localhost:8800m؉m؉@anon-20191002_181700-495:localhost:8800)ke9Q ]$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8m.room.canonical_alias!iKezIvJyjkNqKayFju:localhost:8800m؅m؆@anon-20191002_181700-495:localhost:8800&je3Q ]$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0Am.room.power_levels!iKezIvJyjkNqKayFju:localhost:8800m؂m؃@anon-20191002_181700-495:localhost:8800 ie'Q ]$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAm.room.member!iKezIvJyjkNqKayFju:localhost:8800m؀Rm؀@anon-20191002_181700-495:localhost:8800h e'Q  ]$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Qm.room.create!iKezIvJyjkNqKayFju:localhost:8800m}'m}@anon-20191002_181700-495:localhost:8800!ge)Q ] $CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4m.room.message!DelfBAGvCrTXgNxmNV:localhost:8800 mwmw@anon-20191002_181700-493:localhost:8800 fe'Q ] $awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAm.room.member!DelfBAGvCrTXgNxmNV:localhost:8800 ms[ms@anon-20191002_181700-494:localhost:8800 ee'Q ]$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUm.room.member!DelfBAGvCrTXgNxmNV:localhost:8800mompJ@anon-20191002_181700-493:localhost:8800de#Q ]$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWom.room.test!DelfBAGvCrTXgNxmNV:localhost:8800mmzmm~@anon-20191002_181700-493:localhost:8800&ce3Q ]$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEm.room.guest_access!DelfBAGvCrTXgNxmNV:localhost:8800mimj@anon-20191002_181700-493:localhost:8800,be?Q ]$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwm.room.history_visibility!DelfBAGvCrTXgNxmNV:localhost:8800mfHmg@anon-20191002_181700-493:localhost:8800$ae/Q ]$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMm.room.join_rules!DelfBAGvCrTXgNxmNV:localhost:8800mbmc@anon-20191002_181700-493:localhost:8800&`e3Q ]$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0m.room.power_levels!DelfBAGvCrTXgNxmNV:localhost:8800m_mad@anon-20191002_181700-493:localhost:8800 _e'Q ]$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaom.room.member!DelfBAGvCrTXgNxmNV:localhost:8800m\m]@anon-20191002_181700-493:localhost:8800^ e'Q  ]$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Ym.room.create!DelfBAGvCrTXgNxmNV:localhost:8800mYmZ\@anon-20191002_181700-493:localhost:8800!]e)Q ] $HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkIm.room.message!kOmCTyiizHqfCJdhlR:localhost:8800 mSmS@anon-20191002_181700-491:localhost:8800 \e'Q ] $oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175km.room.member!kOmCTyiizHqfCJdhlR:localhost:8800 mOmP@anon-20191002_181700-492:localhost:8800[e#Q ]$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10m.room.test!kOmCTyiizHqfCJdhlR:localhost:8800mMmM@anon-20191002_181700-491:localhost:8800!Ze)Q ]$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYm.room.aliases!kOmCTyiizHqfCJdhlR:localhost:8800mHmJ@anon-20191002_181700-491:localhost:8800 QmH+o0  @  l O 4  ~ c @  h M * x 9 YiL x9I,p1AmP5dA a >']m.room.member@anon-20191002_181700-505:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-504:localhost:8829>']m.room.member@anon-20191002_181700-504:localhost:8829>']m.room.member@anon-20191002_181700-504:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-503:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-502:localhost:8829>']m.room.member@anon-20191002_181700-502:localhost:8829>']m.room.member@anon-20191002_181700-502:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-501:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-500:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-499:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-498:localhost:8829>']m.room.member@anon-20191002_181700-498:localhost:8829>']m.room.member@anon-20191002_181700-498:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-497:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-496:localhost:8829>']m.room.member@anon-20191002_181700-496:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-495:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-494:localhost:8800>']m.room.member@anon-20191002_181700-494:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-493:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-492:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-491:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules3 ~m.room.power_levels>']}m.room.member@anon-20191002_181700-490:localhost:8800' |m.room.create>']{m.room.member@anon-20191002_181700-489:localhost:8829>']zm.room.member@anon-20191002_181700-489:localhost:8829>']ym.room.member@anon-20191002_181700-489:localhost:8829"? xm.room.history_visibility/ wm.room.join_rules3 vm.room.power_levels>']um.room.member@anon-20191002_181700-488:localhost:8800' tm.room.create>']sm.room.member@anon-20191002_181700-487:localhost:8829>']rm.room.member@anon-20191002_181700-487:localhost:8829>']qm.room.member@anon-20191002_181700-487:localhost:8829"? pm.room.history_visibility/ om.room.join_rules~3 nm.room.power_levels}>']mm.room.member@anon-20191002_181700-486:localhost:8800|' lm.room.create{>']km.room.member@anon-20191002_181700-485:localhost:8829z"? jm.room.history_visibilityy  z kUeQac$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2656}{"auth_events": ["$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "type": "m.room.power_levels", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"users": {"@anon-20191002_181700-493:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042830822, "hashes": {"sha256": "nhpif89QO9FuVxwEVQoDih3wzqqLiNtoxNnoixUdxMw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1QTEDLIIPul7rPC0FTtnuISn5w3QkEwYBj1u+9g7n+Ct97Vip8fjvi0xrX6s1ONJ4Fh53bzlnrYQeFKSXJywCg"}}, "unsigned": {"age_ts": 1570042830822}}vTeQay$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2655}{"auth_events": ["$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y"], "prev_events": ["$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y"], "type": "m.room.member", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-493", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-493:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042830068, "hashes": {"sha256": "C+KmEAFGMbx/i5Zd7q1EWzqQelS+wVki5ruI2fXzblc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nHB5N5YTHBI7QbTgujD93WSz6wTNUCRUJ2ImaqQZ2eP9KEMOcuwhJbrgqO81lN8Sz95HZ3wMPDgt8WLe8P1nCw"}}, "unsigned": {"age_ts": 1570042830068}}iSeQa_$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2654}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-493:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042829274, "hashes": {"sha256": "t/JS++DMQ14XIvgzxht556FsPsgHI/n7YAvVKKPxkmw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M3XTuQGzxG7iK2BGDnYUhWVsV6mf63JRbGgpKswVqP64aYU8fX0wDLSvBpk5aIujscxw97+sgcGJxPnCvbHvAA"}}, "unsigned": {"age_ts": 1570042829274}}ReQm$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800{"token_id": 493, "txn_id": "502", "stream_ordering": 2653}{"auth_events": ["$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ", "$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo", "$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI"], "prev_events": ["$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k"], "type": "m.room.message", "room_id": "!kOmCTyiizHqfCJdhlR:localhost:8800", "sender": "@anon-20191002_181700-491:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042827686, "hashes": {"sha256": "SidDgqYxkoSVQwkCECerfQclH6m9x5gS2dVjMwh+3GQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oj6BigY6xQaTcaP7P2b1A8K1qepTsNqVOfXayvr0b4X+NZqRRhnCPQf67jdW1D2iw05+ffeckjOPDJk6UH/LCQ"}}, "unsigned": {"age_ts": 1570042827686}} b`8pH X 0  h @  x P ( ` 8  p H X0f>v]5 mEd<\4 lD|T,%Q !KcXNWNfbLcYsBKZHIp:localhost:8800%Q !dBfASZrfiFeSKTjYJm:localhost:8800%Q !taANXnGBZntAreRurn:localhost:8800%Q !tcYctHPiaKzsKgrXlU:localhost:8800%Q !drnXStKXkNQkouqUAg:localhost:8800%Q !zScKnCZCFPIIodAiQj:localhost:8800%Q !LazKtcHZriKzCvvGwV:localhost:8800%Q !lEJUJZxqZPKZetemiR:localhost:8800%Q !bLWyXaXdvUhdSAooUz:localhost:8800%Q !YmRuIWixFpaqEeDQLZ:localhost:8800%~Q !bjdLCdBwkKaihRIRFG:localhost:8800%}Q !qzrZzAieCgGSbpKOQR:localhost:8800%|Q !qzurjQHmiriwjaUMhO:localhost:8800%{Q !TSFcaXDBqrCREHRHxv:localhost:8800%zQ !AOEdqVKPFddrqbKPOL:localhost:8800%yQ !wBBQYEPjQGnoAzDpEu:localhost:8800%xQ !oZGRyBAkNDrEeiAqWL:localhost:8800w1 !6:localhost:42455%vQ !cRbfhxZdPstEsPGPAu:localhost:8800%uQ !sAWFpvSUPExZLVcPEd:localhost:8800%tQ !YpcmaMNMzjvtgYtrli:localhost:8800%sQ !PzoqoNRxeEEqiLyVSV:localhost:8800%rQ !uPxXJHJyFQwvpQLZNs:localhost:8800%qQ !UluPYLGXtInKDTjRzp:localhost:8800%pQ !QkkdnzvdrjHaFGkzMt:localhost:8800%oQ !DuqHkpTfWCUblSrxQj:localhost:8800%nQ !NanhNmCnVVpmZRJrTF:localhost:8800m1!5:localhost:42455%lQ !sqkBzbHHJOTNWwynqV:localhost:8800%kQ !qInWQPtNQfBFoVzUtP:localhost:8800%jQ !FZOLkaLbBpaibrbHZx:localhost:8800%iQ !QxqzQoEBIZhmzHIGrl:localhost:8800%hQ !fDISaqNBhlOwherxSt:localhost:8800%gQ !yAfsSyqpJWFnkXQFJL:localhost:8800%fQ !AYFqrmxwClFQlcTTYq:localhost:8800%eQ !pHoEnhQYhwlbJXqKQE:localhost:8800d1!0:localhost:42455%cQ !OCEHAjcOXWNyWIESIS:localhost:8800%bQ !qjijQBfMwsCPTVgKPm:localhost:8800%aQ !kjjUsMowsioSQRIJeg:localhost:8800%`Q !UTAORDrNxIbSlGByAp:localhost:8800%_Q !MXhwoqNXvexeDDSOZT:localhost:8800%^Q !zqQJfFCRlSEDPKlQPy:localhost:8800&]Q!JnAKXOrlyisFUpgJPw:localhost:8800&\Q!XRAZJeoZBhGeHKKjaG:localhost:8800%[Q !GwLdUoDplyVUogXDzu:localhost:8800%ZQ !nfxDdcgDfooxyiAzaB:localhost:8800%YQ !XGAmnfaVvjDtQJuufa:localhost:8800%XQ !OXpGdKbowFUTChPdmF:localhost:8800%WQ !XUbDuPDiMTXJZDyAPc:localhost:8800%VQ !VhUAklonNaWKRnLkcr:localhost:8800%UQ !ybXveQoxPVhjpKHAkG:localhost:8800%TQ !ijOiudvuzOLNmgNKfG:localhost:8800%SQ !hrhDJbmXvXBizKoiiK:localhost:8800%RQ !iLHJbsFszubrnybDNz:localhost:8800%QQ !hGsPmWXboxZZtOlsxY:localhost:8800%PQ !dvZnfJonDkxlrrDXUk:localhost:8800%OQ !vZGjXEXQoCaoUXnkCa:localhost:8800%NQ !GBPGYLDkXcAsHgkfuS:localhost:8800%MQ !fdEymmlcUvjgshvVyl:localhost:8800%LQ !xcdNyJNFEdaBGFycsB:localhost:8800%KQ !SUDzkfFBgpuCANOxRS:localhost:8800%JQ !rWmvvGBgmFMdVvcfPk:localhost:8800%IQ !gXfXRDTXeVvOHQdaaQ:localhost:8800%HQ !hegUPDZCEEmBhsNJJR:localhost:8800%GQ !aSKNKSGXPGoIbSrbEN:localhost:8800%FQ !peJMRJtXBvIiCttNmm:localhost:8800%EQ !tPkCGJBKmqUXJoRrnY:localhost:8800%DQ !QnmLrBAxeItdHsaxWf:localhost:8800%CQ !hFwigdYZkwYNSwelRH:localhost:8800%BQ !paDmNxsOZIKyApbxXs:localhost:8800%AQ !OtBUhGeUSiDMWRKIOT:localhost:8800%@Q !zHBgbzUZHshNGZvIBS:localhost:8800%?Q !cidyuyekVzJHHvyomb:localhost:8800%>Q !pduebXnTyxQWVxEICp:localhost:8800%=Q !ZvLVbnHjeymRiFIkYr:localhost:8800%<Q !VUibrTIkcRbfrogbQV:localhost:8800%;Q !WpThtNEVhrUbUdCdMJ:localhost:8800%:Q !vRmMcoJDeCupADwqac:localhost:8800%9Q !fGkUEndqGrieltwbCh:localhost:8800%8Q !atnRTMliktaVUhMVID:localhost:8800%7Q !PHkVrXAyfGkFtzSagu:localhost:8800%6Q !EhFUhsgQbBWmrnGmaz:localhost:8800%5Q !wBkUBAjOznOyxrLchl:localhost:8800%4Q !sHRHoXzYrrPSlWBkoh:localhost:8800%3Q !AoAvmnwMkhYBQsbCsL:localhost:8800%2Q !IlGJpjzrvvAFuwTAgo:localhost:8800%1Q !CSqENqzAezaZnGktbE:localhost:8800%0Q !vBvlJEXUSQKUYmsKcO:localhost:8800%/Q !RDEAXrqXQizuhCUFPq:localhost:8800%.Q !mogJVPxghalmKbblUq:localhost:8800%-Q !EhUxBjnSkVXpTrQlrn:localhost:8800%,Q !laUExtszUaoCpZoyEq:localhost:8800%+Q !coGyOAgYnlBZAqznax:localhost:8800%*Q !ubmTdQFAhrhZkGULDx:localhost:8800%)Q !rpVYLTJGcFNdGzFzXj:localhost:8800%(Q !iKezIvJyjkNqKayFju:localhost:8800%'Q !DelfBAGvCrTXgNxmNV:localhost:8800  1 Q   1 SMV~ R[ jQ']e !coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMdiQ' e !coGyOAgYnlBZAqznax:localhost:8800m.room.create$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE hQ']e !ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVspgQ? e !ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibility$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlghfQ/ e !ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rules$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYjeQ3 e ~!ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 dQ']e }!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQdcQ' e |!ubmTdQFAhrhZkGULDx:localhost:8800m.room.create$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI8bQ']ee z!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 aQ']e y!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4j`Q3 e w!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwp_Q? e v!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibility$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Ah^Q/ e u!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rules$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQj]Q3 e t!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 \Q']e s!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8d[Q' e r!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A ZQ']e p!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64sYQ))e n!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgpXQ? e m!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibility$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4hWQ/ e l!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rules$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6QmVQ9 e k!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_alias$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8jUQ3 e j!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A TQ']e i!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAdSQ' e h!iKezIvJyjkNqKayFju:localhost:8800m.room.create$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q8RQ']ee f!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU QQ']e e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUjPQ3 e c!DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_access$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTEpOQ? e b!DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibility$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0QpwhNQ/ e a!DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rules$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dMjMQ3 e `!DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0 LQ']e _!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaodKQ' e ^!DelfBAGvCrTXgNxmNV:localhost:8800m.room.create$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y NaG97tM%/'O    _ 8   s K #  ^ 6   q I "? _  [W 4 wgo'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800{'Q!sAWFpvSUPExZLVcPEd:localhost:8800w'Q!uPxXJHJyFQwvpQLZNs:localhost:8800t'Q!sqkBzbHHJOTNWwynqV:localhost:8800n'Q!yAfsSyqpJWFnkXQFJL:localhost:8800i'Q!zqQJfFCRlSEDPKlQPy:localhost:8800`'Q!ybXveQoxPVhjpKHAkG:localhost:8800W'Q!vZGjXEXQoCaoUXnkCa:localhost:8800Q'Q!xcdNyJNFEdaBGFycsB:localhost:8800N'Q!rWmvvGBgmFMdVvcfPk:localhost:8800L'Q!tPkCGJBKmqUXJoRrnY:localhost:8800G'Q!zHBgbzUZHshNGZvIBS:localhost:8800B'Q!vRmMcoJDeCupADwqac:localhost:8800<'Q!wBkUBAjOznOyxrLchl:localhost:88007'Q!sHRHoXzYrrPSlWBkoh:localhost:88006'Q!vBvlJEXUSQKUYmsKcO:localhost:88002'Q!ubmTdQFAhrhZkGULDx:localhost:8800,'Q!rpVYLTJGcFNdGzFzXj:localhost:8800+'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800y&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800 &Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800^'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800c'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800k&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800!'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800s'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800`'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800~&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800 Kf>~V6 } U - e=`F.8nrK$ a :  s K # \ 4 l E ^ b:>vN&f6'Q!paDmNxsOZIKyApbxXs:localho'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:88002'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800r'Q!hYPSaMPGsLnvYSmwhg:localhost:8800e'Q!hWHyATwKfuznrqTiyu:localhost:8800C'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800?'Q!jlGSdNttccYxjfLkwW:localhost:8800n'Q!jGQNGXehugtTvjUGKI:localhost:8800k'Q!hNCwypIzdDZDVmCEfd:localhost:8800e'Q!iTQSCiLqRMDtgXtUdC:localhost:8800u'Q!iTQSCiLqRMDtgXtUdC:localhost:8800t'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800G'Q!iKezIvJyjkNqKayFju:localhost:8800F'Q!hrhDJbmXvXBizKoiiK:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800|'Q!krhefVncoErkCtnvsy:localhost:8800N'Q!krhefVncoErkCtnvsy:localhost:8800M'Q!krhefVncoErkCtnvsy:localhost:8800L'Q!kpTPWDZdBbbXKLonZK:localhost:8800#'Q!kpTPWDZdBbbXKLonZK:localhost:8800"'Q!kpTPWDZdBbbXKLonZK:localhost:8800!&Q!kkgEEVUJynguTqAoWD:localhost:8800 'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800B'Q!kOmCTyiizHqfCJdhlR:localhost:8800A'Q!kAxKaIQhXTtGFWSUgr:localhost:8800,'Q!kAxKaIQhXTtGFWSUgr:localhost:8800+'Q!kAxKaIQhXTtGFWSUgr:localhost:8800*'Q!jveVPZSXJOJyNDebPO:localhost:8800?&Q!jfshVGNDxkvqPxFxWB:localhost:8800+&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800d'Q!jDKAOtmeAGbYTpwyEW:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800b'Q!jomrpmwwQQtghscizn:localhost:88000'Q!jomrpmwwQQtghscizn:localhost:8800/( J _ Y S M G A ; 5 / ) #    4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |vpjd^XRLF@:  4.("  w _ G /  q Z C , l(~\:yW5iG% { Y 7  k I '  e e                                                                                                                                ~  }  {  y  x  w  v  t  s  r  q  o  m  l  k  j  h  f  e  d  c  a  `  _  ^  \  Z  Y  X  V  T  S  R  P  N  M  L  J  G  F  E  C  @  ?  >  <  8  7  6  4  2  I  B  /  -  +  *  )  '  $  #  "              &          !E@__ANON__-22:localhost:42455 !E@__ANON__-21:localhost:42455 !E@__ANON__-20:localhost:42455 !E@__ANON__-19:localhost:42455 !E@__ANON__-18:localhost:42455 !E@__ANON__-17:localhost:42455 !E@__ANON__-16:localhost:42455 !E@__ANON__-15:localhost:42455 e"!E@__ANON__-13:localhost:42455 !E@__ANON__-12:localhost:42455 !E@__ANON__-11:localhost:42455 !E@__ANON__-10:localhost:42455 C@__ANON__-0:localhost:42455 [/@8:localhost:8800o/@7:localhost:8800h/@6:localhost:8800]/@5:localhost:8800U/@3:localhost:8800F1@34:localhost:8800l1@33:localhost:8800e1@32:localhost:8800]1@31:localhost:8800U1@30:localhost:8800N/@2:localhost:8800?1@28:localhost:8800@1@17:localhost:88001@16:localhost:88001@15:localhost:88001@14:localhost:88001@13:localhost:880098827,6%543 210                                        \!E@__ANON__-58:localhost:42455 !E@__ANON__-57:localhost:42455 !E@__ANON__-56:localhost:42455 !E@__ANON__-55:localhost:42455 !E@__ANON__-54:localhost:42455 !E@__ANON__-53:localhost:42455 !E@__ANON__-52:localhost:42455 !E@__ANON__-51:localhost:42455 !E@__ANON__-50:localhost:42455 !E@__ANON__-49:localhost:42455 !E@__ANON__-48:localhost:42455 !E@__ANON__-47:localhost:42455 !E@__ANON__-46:localhost:42455 ~!E@__ANON__-45:localhost:42455 z!E@__ANON__-43:localhost:42455 v!E@__ANON__-41:localhost:42455 m!E@__ANON__-40:localhost:42455 c!E@__ANON__-40:localhost:42455 ^!E@__ANON__-39:localhost:42455 O!E@__ANON__-38:localhost:42455 I!E@__ANON__-37:localhost:42455 C!E@__ANON__-36:localhost:42455 =!E@__ANON__-35:localhost:42455 7!E@__ANON__-34:localhost:42455 1!E@__ANON__-33:localhost:42455 &!E@__ANON__-32:localhost:42455 !E@__ANON__-31:localhost:42455 !E@__ANON__-30:localhost:42455  C@__ANON__-2:localhost:42455 b!E@__ANON__-28:localhost:42455 !E@__ANON__-26:localhost:42455 !E@__ANON__-23:localhost:42455 4 4HYeQa$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2660}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE"], "type": "m.room.test", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042834298, "hashes": {"sha256": "Hg03RjCfj4yZaeL/+HxS140wGzJ6WInzUnhMGehslp0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RFFk3dNuxVwBjtgxDaklmvuyLjD046qhFuTCy3gAOAbtSQRgO2PF6vLKe0BdNIEqIsFGiPcmF+zrqi//mhOwDQ"}}, "unsigned": {"age_ts": 1570042834298}}{XeQa$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2659}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw"], "type": "m.room.guest_access", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042833382, "hashes": {"sha256": "FQaG6p3GalwLH7gnHsBHWRugcVBlL1QMqHgX+iajxLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UPUjv4p65e8RZCKRob/mTgKZs1Ytgpq1G6ygJrBkEDH8tEKsFCPAjHjWx5ITz+xptOCYSQGoaVNtSAPE02QvDQ"}}, "unsigned": {"age_ts": 1570042833382}}WeQa$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2658}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM"], "type": "m.room.history_visibility", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042832456, "hashes": {"sha256": "L/QNB1/0ctplQqKPIxUrlC/2qcmMG/Dd+044PTRrp3g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/RtHu4QRxP9462Gt2dw7zodATdzoUiQnAot0L7bwlY1/R8juA6brt1Vl5blvAC5aa/aWnboCDC1lvZS6QK7YCw"}}, "unsigned": {"age_ts": 1570042832456}}tVeQau$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2657}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0"], "type": "m.room.join_rules", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042831597, "hashes": {"sha256": "CNK7ePC0dR9apb/hUV8+RvKEJZRFCgl8S3bTMr8A99k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q1bw25wyEyhM8RXOTdYIyIlmaOceM0Kr2jlnYz7XaNZdnhh2h1GOLyDVIS4VlKI7ylRTDDIKat9J/3YFESBfBg"}}, "unsigned": {"age_ts": 1570042831597}} -"5XP6"i-~C T  j T  } C C l>Ly6^Q']!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800 nAQ? !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.history_visibility5Q' !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.create<Q3 !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels j^Q']!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800 i:Q/ !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rules kBQ? !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibility l<Q3 !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_access m6Q' !LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create h<Q3 !KxhGcTbEWmtgGNpdox:localhost:8800m.room.power_levels%4Q# !KxhGcTbEWmtgGNpdox:localhost:8800m.room.name(^Q']!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-103:localhost:8800*^Q']!KxhGcTbEWmtgGNpdox:localhost:8800m.room.member@anon-20191002_181700-102:localhost:8800$:Q/ !KxhGcTbEWmtgGNpdox:localhost:8800m.room.join_rules&BQ? !KxhGcTbEWmtgGNpdox:localhost:8800m.room.history_visibility'6Q' !KxhGcTbEWmtgGNpdox:localhost:8800m.room.create#<Q3 !MWCLSWWGdWcSivNVLI:localhost:8800m.room.power_levels^Q']!MWCLSWWGdWcSivNVLI:localhost:8800m.room.member@anon-20191002_181700-195:localhost:8800:Q/ !MWCLSWWGdWcSivNVLI:localhost:8800m.room.join_rulesBQ? !MWCLSWWGdWcSivNVLI:localhost:8800m.room.history_visibility6Q' !MWCLSWWGdWcSivNVLI:localhost:8800m.room.create?Q9 !MWCLSWWGdWcSivNVLI:localhost:8800m.room.canonical_aliasEQ))!MWCLSWWGdWcSivNVLI:localhost:8800m.room.aliaseslocalhost:88009Q- !MBWnwKRwFznvRpAzxr:localhost:8800m.room.tombstone<Q3 !MBWnwKRwFznvRpAzxr:localhost:8800m.room.power_levels^Q']!MBWnwKRwFznvRpAzxr:localhost:8800m.room.member@anon-20191002_181700-294:localhost:8800:Q/ !MBWnwKRwFznvRpAzxr:localhost:8800m.room.join_rulesBQ? !MBWnwKRwFznvRpAzxr:localhost:8800m.room.history_visibility6Q' !MBWnwKRwFznvRpAzxr:localhost:8800m.room.create<Q3 !LvARVIpJZeRQxbKefX:localhost:8800m.room.power_levelsu^Q']!LvARVIpJZeRQxbKefX:localhost:8800m.room.member@anon-20191002_181700-317:localhost:8800t:Q/ !LvARVIpJZeRQxbKefX:localhost:8800m.room.join_rulesvBQ? !LvARVIpJZeRQxbKefX:localhost:8800m.room.history_visibilityw6Q' !LvARVIpJZeRQxbKefX:localhost:8800m.room.creates4Q!!LazKtcHZriKzCvvGwV:localhost:8800test_stateY <Q3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels ^Q']!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800 RQ'E!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455 :Q/ !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules BQ? !LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility 6Q' !LazKtcHZriKzCvvGwV:localhost:8800m.room.create 4Q% !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.topic ;Q3 !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.power_levels9Q/ !LaLcEGFLpjdlYlYKGC:localhost:8800m.room.join_rules\Q'[!LaLcEGFLpjdlYlYKGC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800 PO s H%yN#oD y N # wL!uJ w L ! u JsHqFT)}R' { P % !HXfrGcvJCbRItyQLVE:RI*Q!HXfrGcvJCbRItyQLVE:localhost:8800 #*Q!HXfrGcvJCbRItyQLVE:localhost:8800 "*Q!HXfrGcvJCbRItyQLVE:localhost:8800 !*Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 *Q!HhYREfUiJTpjWmOuPF:localhost:8800GM*Q!HhYREfUiJTpjWmOuPF:localhost:8800FL*Q!HhYREfUiJTpjWmOuPF:localhost:8800EK*Q!HcMGemcRrLnLprOJJR:localhost:8800 *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800  *Q!HcMGemcRrLnLprOJJR:localhost:8800 *Q!HcMGemcRrLnLprOJJR:localhost:8800 *Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HcMGemcRrLnLprOJJR:localhost:8800*Q!HZqzpRgqekPOtxstVc:localhost:8800CH*Q!HZqzpRgqekPOtxstVc:localhost:8800BG*Q!HZqzpRgqekPOtxstVc:localhost:8800AF*Q!HZqzpRgqekPOtxstVc:localhost:8800@E*Q!HZqzpRgqekPOtxstVc:localhost:8800?D*Q!HZqzpRgqekPOtxstVc:localhost:8800>C*Q!HZqzpRgqekPOtxstVc:localhost:8800=B*Q!HZqzpRgqekPOtxstVc:localhost:8800<A*Q!HZqzpRgqekPOtxstVc:localhost:8800;@*Q!HZqzpRgqekPOtxstVc:localhost:8800:?*Q!HZqzpRgqekPOtxstVc:localhost:88009>*Q!HWTlaNxUKnDsrtlOxU:localhost:8800"*Q!HWTlaNxUKnDsrtlOxU:localhost:8800!*Q!HWTlaNxUKnDsrtlOxU:localhost:8800 *Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HWTlaNxUKnDsrtlOxU:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HOPyhZPcKkrvSmDIvX:localhost:8800*Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HbYxdEuVIeLKHwqJEh:localhost:8800 *Q!HXfrGcvJCbRItyQLVE:localhost:8800 )*Q!HXfrGcvJCbRItyQLVE:localhost:8800 (*Q!HXfrGcvJCbRItyQLVE:localhost:8800 '*Q!HXfrGcvJCbRItyQLVE:localhost:8800 &*Q!HXfrGcvJCbRItyQLVE:localhost:8800 %*Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HusOrLtWZTLbmQZxmm:localhost:8800 *Q!HmkcAMkMjWRhTDJMsy:localhost:8800dd*Q!HmkcAMkMjWRhTDJMsy:localhost:8800cc*Q!HmkcAMkMjWRhTDJMsy:localhost:8800bb*Q!HmkcAMkMjWRhTDJMsy:localhost:8800aa*Q!HmkcAMkMjWRhTDJMsy:localhost:8800``*Q!HmkcAMkMjWRhTDJMsy:localhost:8800__*Q!HmkcAMkMjWRhTDJMsy:localhost:8800^^*Q!HmkcAMkMjWRhTDJMsy:localhost:8800]]*Q!HmkcAMkMjWRhTDJMsy:localhost:8800\\*Q!HhYREfUiJTpjWmOuPF:localhost:8800JP*Q!HhYREfUiJTpjWmOuPF:localhost:8800IO*Q!HhYREfUiJTpjWmOuPF:localhost:8800HN*Q!HXfrGcvJCbRItyQLVE:localhost:8800 $ L~Q$ a 4 uHh;rE # o B  U (Z-y  P }l? M l?_2, ^ 1  ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800+Q !HXfrGcvJCbRItyQLVE:localhost:8800+Q !HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HAFNBarGuVZuWCgwWM:localhost:8800++,Q!HAFNBarGuVZuWCgwWM:localhost:8800**,Q!HAFNBarGuVZuWCgwWM:localhost:8800)),Q!HhYREfUiJTpjWmOuPF:localhost:8800JJ,Q!HhYREfUiJTpjWmOuPF:localhost:8800II,Q!HhYREfUiJTpjWmOuPF:localhost:8800HH,Q!HhYREfUiJTpjWmOuPF:localhost:8800GG,Q!HhYREfUiJTpjWmOuPF:localhost:8800FF+Q !HhYREfUiJTpjWmOuPF:localhost:8800EE,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800+Q !HcMGemcRrLnLprOJJR:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800 CC,Q!HZqzpRgqekPOtxstVc:localhost:8800 BB,Q!HZqzpRgqekPOtxstVc:localhost:8800 AA,Q!HZqzpRgqekPOtxstVc:localhost:8800@@,Q!HZqzpRgqekPOtxstVc:localhost:8800??,Q!HZqzpRgqekPOtxstVc:localhost:8800>>,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800+Q !HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800+Q !HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800==,Q!HZqzpRgqekPOtxstVc:localhost:8800<<,Q!HZqzpRgqekPOtxstVc:localhost:8800;;,Q!HZqzpRgqekPOtxstVc:localhost:8800::+Q !HZqzpRgqekPOtxstVc:localhost:880099,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800+Q !HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HAFNBarGuVZuWCgwWM:localhost:8800--,Q!HAFNBarGuVZuWCgwWM:localhost:8800,,,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800  ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 L~Q$ a 4 uHh;rE # o B  U (Z-y  P }l? M l?_2, ^ 1  ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800+Q !HXfrGcvJCbRItyQLVE:localhost:8800+Q !HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HAFNBarGuVZuWCgwWM:localhost:8800++,Q!HAFNBarGuVZuWCgwWM:localhost:8800**,Q!HAFNBarGuVZuWCgwWM:localhost:8800)),Q!HhYREfUiJTpjWmOuPF:localhost:8800JJ,Q!HhYREfUiJTpjWmOuPF:localhost:8800II,Q!HhYREfUiJTpjWmOuPF:localhost:8800HH,Q!HhYREfUiJTpjWmOuPF:localhost:8800GG,Q!HhYREfUiJTpjWmOuPF:localhost:8800FF+Q !HhYREfUiJTpjWmOuPF:localhost:8800EE,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800   ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800  ,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800,Q!HcMGemcRrLnLprOJJR:localhost:8800+Q !HcMGemcRrLnLprOJJR:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800 CC,Q!HZqzpRgqekPOtxstVc:localhost:8800 BB,Q!HZqzpRgqekPOtxstVc:localhost:8800 AA,Q!HZqzpRgqekPOtxstVc:localhost:8800@@,Q!HZqzpRgqekPOtxstVc:localhost:8800??,Q!HZqzpRgqekPOtxstVc:localhost:8800>>,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HWTlaNxUKnDsrtlOxU:localhost:8800+Q !HWTlaNxUKnDsrtlOxU:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HOPyhZPcKkrvSmDIvX:localhost:8800+Q !HOPyhZPcKkrvSmDIvX:localhost:8800,Q!HZqzpRgqekPOtxstVc:localhost:8800==,Q!HZqzpRgqekPOtxstVc:localhost:8800<<,Q!HZqzpRgqekPOtxstVc:localhost:8800;;,Q!HZqzpRgqekPOtxstVc:localhost:8800::+Q !HZqzpRgqekPOtxstVc:localhost:880099,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800+Q !HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HAFNBarGuVZuWCgwWM:localhost:8800--,Q!HAFNBarGuVZuWCgwWM:localhost:8800,,,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 ,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HXfrGcvJCbRItyQLVE:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HIZTeBCxvpMSpcqGVD:localhost:8800,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800 ,Q!HbYxdEuVIeLKHwqJEh:localhost:8800  ,Q!HXfrGcvJCbRItyQLVE:localhost:8800 N  v {> I   P  D [ V $ p ] +c1i=7 #j8)U uC{JPo 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU 1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 t1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg E1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ c1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0+1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA u1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAokn1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE 1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0J1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukg1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko21e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE 1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgQ1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM[1e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI-1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Toc1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Aq1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI[1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoI1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJcz1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocwh1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc"1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cL1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY+1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoon1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcl0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I11e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVMEx1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U@1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic^1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkV1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 C1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI 1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMv1e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU L1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM`1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY 1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo ~z v r n j fb^ZVRNJF eeQ$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800eeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800eeQ$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800eeQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800eeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800}eeQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800|eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y!iKezIvJyjkNqKayFju:localhost:8800{eeQ$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800zeeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800yeeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800xeeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800weeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800veeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800ueeQ$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800teeQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800seeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800reeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo!DelfBAGvCrTXgNxmNV:localhost:8800qeeQ$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE!DelfBAGvCrTXgNxmNV:localhost:8800peeQ$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTE$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw!DelfBAGvCrTXgNxmNV:localhost:8800oeeQ$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800 XM&p?e  wF E  } K   ^k R R  Y ' +38 _ -~Lx9jq? 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g >1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY X1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 21e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8h1e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA.1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iUQ1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 ?1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo 0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIt1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I81e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc\1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns21e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y X1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkr1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQp1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90Y1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkK1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTED1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM7851e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vcPazpNQcqB79vwWwuuwsoa27zE0mIy94BgeoI2OIkg,1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ{1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksv1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io+1e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8u1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFAh1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8 1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM 1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ{0e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0|1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk:1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug+1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk a1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11In1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs p  g\eQm$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "txn_id": "503", "stream_ordering": 2663}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA"], "type": "m.room.message", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042836891, "hashes": {"sha256": "fiqBIggm8fVC2oEsrUf6Lh1Qc4ByUtVylEMWzJvWBFk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XMputtJuB7MIQk47omtXOcaPWUNNpOykPIF4ekfi0t6gZNQFtTo7eWGjRQilTbuQ4XM45EGBOlux+lR79WxoBg"}}, "unsigned": {"age_ts": 1570042836891}}H[eQa$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 495, "stream_ordering": 2662}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM", "$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU"], "prev_events": ["$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU"], "type": "m.room.member", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-494:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-494", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-494:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042835803, "hashes": {"sha256": "+T7+FGjulGuXfpnoQV+AT3WqAvXDTkBxj9H1XyhSk7A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wtudZAMoDY4AGVYJ91X6nA61dNa+Ubc9SJvXZOaezLoeec6zQMZ+Dp6h5V9heCnba32cMDg8huMXd0NfDBgeDQ"}}, "unsigned": {"age_ts": 1570042835803, "replaces_state": "$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU"}}ZeQa7$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800{"token_id": 496, "stream_ordering": 2661}{"auth_events": ["$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0", "$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y", "$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM", "$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao"], "prev_events": ["$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo"], "type": "m.room.member", "room_id": "!DelfBAGvCrTXgNxmNV:localhost:8800", "sender": "@anon-20191002_181700-493:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-494", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-494:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042834890, "hashes": {"sha256": "8S6tg2elya19ChCwloXsK7tmVHuRpxemyzR8rhEVda4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h2BmxCLLHxtwNYbAIDd123/dRwPTZmgCCQKqLtpGXw29uABV2kBQ+svTobssTNe32mikItk/d8IimILwG08NDQ"}}, "unsigned": {"age_ts": 1570042834890, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-493:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-493:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-493", "avatar_url": null}, "sender": "@anon-20191002_181700-493:localhost:8800"}]}} a} { y w u sqomkigeca~ eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800~eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~eeQ$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~~eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~}eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~|eeQ$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~{eeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~zeeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~yeeQ$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~xeeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~weeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~veeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~ueeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~teeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~seeQ$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800~reeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800~qeeQ$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~peeQ$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800~oeeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU!DelfBAGvCrTXgNxmNV:localhost:8800~neeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM!DelfBAGvCrTXgNxmNV:localhost:8800~meeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y!DelfBAGvCrTXgNxmNV:localhost:8800~leeQ$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800~keeQ$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800 KR$l>vHb4 | N h : T & n @  Z ,tF`2zLf8 X*rD-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-513:localhost:8829]-]@anon-20191002_181700-513:localhost:8829\-]@anon-20191002_181700-512:localhost:8800[-]@anon-20191002_181700-511:localhost:8829Z-]@anon-20191002_181700-510:localhost:8800Y-]@anon-20191002_181700-509:localhost:8800X-]@anon-20191002_181700-509:localhost:8800W-]@anon-20191002_181700-508:localhost:8800V-]@anon-20191002_181700-507:localhost:8800U-]@anon-20191002_181700-506:localhost:8800T-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800-]@anon-20191002_181700-568:localhost:8800-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-566:localhost:8800-]@anon-20191002_181700-565:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-563:localhost:8800-]@anon-20191002_181700-562:localhost:8800-]@anon-20191002_181700-561:localhost:8800-]@anon-20191002_181700-559:localhost:8829-]@anon-20191002_181700-559:localhost:8829-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-557:localhost:8800-]@anon-20191002_181700-557:localhost:8800-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-555:localhost:8800-]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-551:localhost:8800-]@anon-20191002_181700-550:localhost:8800~-]@anon-20191002_181700-549:localhost:8800}-]@anon-20191002_181700-548:localhost:8800|-]@anon-20191002_181700-546:localhost:8829{-]@anon-20191002_181700-545:localhost:8800z-]@anon-20191002_181700-544:localhost:8829y-]@anon-20191002_181700-544:localhost:8829x-]@anon-20191002_181700-543:localhost:8800w-]@anon-20191002_181700-542:localhost:8829v-]@anon-20191002_181700-542:localhost:8829u-]@anon-20191002_181700-541:localhost:8800t-]@anon-20191002_181700-540:localhost:8829s-]@anon-20191002_181700-540:localhost:8829r-]@anon-20191002_181700-539:localhost:8800q-]@anon-20191002_181700-538:localhost:8800p-]@anon-20191002_181700-537:localhost:8800o-]@anon-20191002_181700-536:localhost:8800n-]@anon-20191002_181700-535:localhost:8800m-]@anon-20191002_181700-534:localhost:8800l-]@anon-20191002_181700-533:localhost:8800k-]@anon-20191002_181700-532:localhost:8800j-]@anon-20191002_181700-531:localhost:8800i-]@anon-20191002_181700-522:localhost:8829g-]@anon-20191002_181700-521:localhost:8800h-]@anon-20191002_181700-520:localhost:8800f-]@anon-20191002_181700-519:localhost:8829e-]@anon-20191002_181700-519:localhost:8829d-]@anon-20191002_181700-518:localhost:8800c-]@anon-20191002_181700-517:localhost:8829b-]@anon-20191002_181700-517:localhost:8829a-]@anon-20191002_181700-516:localhost:8800`-]@anon-20191002_181700-515:localhost:8829_-]@anon-20191002_181700-514:localhost:8800^ 8l D `8`]c!E@anon-20191002_181700-508:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwoIUNUZDZDEU127.0.0.1Perl + Net::Async::HTTP/0.44mj_]c!E@anon-20191002_181700-507:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQoXTAWUKOTOH127.0.0.1Perl + Net::Async::HTTP/0.44m`^]c!E@anon-20191002_181700-506:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQoWTFXNSFUTL127.0.0.1Perl + Net::Async::HTTP/0.44mG]]c!E@anon-20191002_181700-505:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQoQKCBIAVDQA127.0.0.1Perl + Net::Async::HTTP/0.44m/\]c!E@anon-20191002_181700-503:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwoJNGLRXMCQM127.0.0.1Perl + Net::Async::HTTP/0.44m i[]c!E@anon-20191002_181700-501:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0HwoYBYGOFEONK127.0.0.1Perl + Net::Async::HTTP/0.44mZ]c!E@anon-20191002_181700-499:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5rV3JmRThrJl8qSzlnbGYKMDAyZnNpZ25hdHVyZSC40_L2vpMmU-noXYDZakwXYvbef1dCfSOFXrr2okxioAoVXSECXNERA127.0.0.1Perl + Net::Async::HTTP/0.44m¤Y]c!E@anon-20191002_181700-497:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRRZGErYldwNEZ0JnVZTj0KMDAyZnNpZ25hdHVyZSA4-UL1fJizz7yiriweTrSfVAPiGlZ4m6VOqX6c5gLlogoOIZUJKPCSC127.0.0.1Perl + Net::Async::HTTP/0.44m؞X]c!E@anon-20191002_181700-495:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDlqayZmTTlyLVc1OThjSn4KMDAyZnNpZ25hdHVyZSCpTX43hXhsMFX0v2xJMWw-sdlVSJhG3symG_M1H7BLQQoQBXBDGRDFZ127.0.0.1Perl + Net::Async::HTTP/0.44m|WW]c!E@anon-20191002_181700-494:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTQ5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDpkbH52ME1pZElZaVV5SFUKMDAyZnNpZ25hdHVyZSCSWQBxMPQyEsBMalxYPJ8jcqYJ34wuLUfmfhPRQa_3QwoHEAHMVMVEQ127.0.0.1Perl + Net::Async::HTTP/0.44mo q | 7 P 2 = gkv{ED >Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$_YTe_nYpqtEeGvE2k3a5um8DYtNBXODrJC74z2jVMBM =Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQo<Q? e!coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibility$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUg;Q/ e!coGyOAgYnlBZAqznax:localhost:8800m.room.join_rules$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAi:Q3 e!coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 9Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMc8Q' e!coGyOAgYnlBZAqznax:localhost:8800m.room.create$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 7Q']e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVso6Q? e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibility$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgg5Q/ e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rules$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYi4Q3 e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 3Q']e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQc2Q' e!ubmTdQFAhrhZkGULDx:localhost:8800m.room.create$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI 1Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U 0Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$CnR4Or0xg5WozpzqzRstNjpnilH9bZn8fXlMYNHHGCM /Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4i.Q3 e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwo-Q? e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.history_visibility$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Ag,Q/ e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.join_rules$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQi+Q3 e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.power_levels$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 *Q']e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-497:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8c)Q' e!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.create$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A (Q']e!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 'Q']e!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-496:localhost:8829$zTZ3E7InHOAX6z4ESRE9FGvNHYN0PariqMKTEqSWoU8r&Q))e!iKezIvJyjkNqKayFju:localhost:8800m.room.aliaseslocalhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgo%Q? e!iKezIvJyjkNqKayFju:localhost:8800m.room.history_visibility$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4g$Q/ e!iKezIvJyjkNqKayFju:localhost:8800m.room.join_rules$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Ql#Q9 e!iKezIvJyjkNqKayFju:localhost:8800m.room.canonical_alias$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8i"Q3 e!iKezIvJyjkNqKayFju:localhost:8800m.room.power_levels$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A !Q']e!iKezIvJyjkNqKayFju:localhost:8800m.room.member@anon-20191002_181700-495:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAc Q' e!iKezIvJyjkNqKayFju:localhost:8800m.room.create$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q Q']e!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA G$c1i7oJ= PuCj8p?  w E   } K  Q$  W % ]| +V\*1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 B1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM $1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs 1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk {1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk ]1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A #1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg 1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 51e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 31e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQd1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos=1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc|1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcz1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcy1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA"1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMe1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUS1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk n1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs[1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ+1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty000e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwO1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yresf1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg ?CI O  Z  a c ' i -o3v:JU\c#j*q0>P ] @anon-20191002_181700-543:localhost:8800m&\9O ]@anon-20191002_181700-543:localhost:8800a&\>N ] @anon-20191002_181700-541:localhost:8800m&\9M ]@anon-20191002_181700-541:localhost:8800a&\>L ] @anon-20191002_181700-539:localhost:8800m&\9K ]@anon-20191002_181700-539:localhost:8800a&\=J ]  @anon-20191002_181700-538:localhost:8800m&\V>I ]  @anon-20191002_181700-537:localhost:8800m&\C9H ]@anon-20191002_181700-537:localhost:8800a&\9G ]@anon-20191002_181700-538:localhost:8800a&\=F ]  @anon-20191002_181700-536:localhost:8800m&\V>E ]  @anon-20191002_181700-535:localhost:8800m&\C9D ]@anon-20191002_181700-535:localhost:8800a&\9C ]@anon-20191002_181700-536:localhost:8800a&\=B ]  @anon-20191002_181700-534:localhost:8800m&\V>A ]  @anon-20191002_181700-533:localhost:8800m&\C9@ ]@anon-20191002_181700-533:localhost:8800a&\9? ]@anon-20191002_181700-534:localhost:8800a&\=> ]  @anon-20191002_181700-532:localhost:8800m&\V>= ]  @anon-20191002_181700-531:localhost:8800m&\C9< ]@anon-20191002_181700-531:localhost:8800a&\9; ]@anon-20191002_181700-532:localhost:8800a&\9: ]@anon-20191002_181700-529:localhost:8800a&\99 ]@anon-20191002_181700-527:localhost:8800a&\98 ]@anon-20191002_181700-526:localhost:8800a&\97 ]@anon-20191002_181700-525:localhost:8800a&\96 ]@anon-20191002_181700-524:localhost:8800a&\95 ]@anon-20191002_181700-523:localhost:8800a&\=4 ]  @anon-20191002_181700-521:localhost:8800m&\V>3 ]  @anon-20191002_181700-520:localhost:8800m&\y92 ]@anon-20191002_181700-521:localhost:8800a&\91 ]@anon-20191002_181700-520:localhost:8800a&\>0 ] @anon-20191002_181700-518:localhost:8800m&\9/ ]@anon-20191002_181700-518:localhost:8800a&\>. ] @anon-20191002_181700-516:localhost:8800m&\9- ]@anon-20191002_181700-516:localhost:8800a&\>, ] @anon-20191002_181700-514:localhost:8800m&\5m9+ ]@anon-20191002_181700-514:localhost:8800a&\>* ] @anon-20191002_181700-512:localhost:8800m&\ 9) ]@anon-20191002_181700-512:localhost:8800a&\>( ]  @anon-20191002_181700-510:localhost:8800m&\ 9' ]@anon-20191002_181700-510:localhost:8800a&\=& ]  @anon-20191002_181700-509:localhost:8800m&\>% ] @anon-20191002_181700-508:localhost:8800m&\  9$ ]@anon-20191002_181700-509:localhost:8800a&\9# ]@anon-20191002_181700-508:localhost:8800a&\=" ]  @anon-20191002_181700-507:localhost:8800m&\V>! ]  @anon-20191002_181700-506:localhost:8800m&\ 9 ]@anon-20191002_181700-507:localhost:8800a&\9 ]@anon-20191002_181700-506:localhost:8800a&\> ]  @anon-20191002_181700-505:localhost:8800m&\9 ]@anon-20191002_181700-505:localhost:8800a&\> ] @anon-20191002_181700-503:localhost:8800m&\9 ]@anon-20191002_181700-503:localhost:8800a&\> ] @anon-20191002_181700-501:localhost:8800m&\9 ]@anon-20191002_181700-501:localhost:8800a&\> ] @anon-20191002_181700-499:localhost:8800m&\2q9 ]@anon-20191002_181700-499:localhost:8800a&\> ] @anon-20191002_181700-497:localhost:8800m&\ 9 ]@anon-20191002_181700-497:localhost:8800a&\> ]  @anon-20191002_181700-495:localhost:8800m&\ 9 ]@anon-20191002_181700-495:localhost:8800a&\= ]  @anon-20191002_181700-494:localhost:8800m&\ \T,rJ" [ 3 D  m F|l  ~ W /  i A   { S + a:e>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800R'Q!hFwigdYZkwYNSwelRH:localhost:8800D'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88005'Q!sAWFpvSUPExZLVcPEd:localhost:8800v'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800*'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800K'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800}'Q!qzrZzAieCgGSbpKOQR:localhost:8800~&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qmcQunYvuokVcPwFHx:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800c'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800l&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800G'Q!pduebXnTyxQWVxEICp:localhost:8800?'Q!paDmNxsOZIKyApbxXs:localhost:8800C'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800&'Q!pHoEnhQYhwlbJXqKQE:localhost:8800f&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800y&Q!oXKJArsPmtgaYANBrg:localhost:88002'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800%&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800/&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800-&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800b'Q!kOmCTyiizHqfCJdhlR:localhost:8800''Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800U&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800S'Q!iKezIvJyjkNqKayFju:localhost:8800)'Q!hrhDJbmXvXBizKoiiK:localhost:8800T'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800I'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800['Q!nftGLlLhVgzOwOFufp:localhost:8800 .kkVZa h  o  v # } * 18?FMT] ATbgPQ]!YQATbgbLImCDamiDHC:localhost:8800@anon-20191002_181700-400:localhost:88004p PQ]!HXfrGcvJCbRItyQLVE:localhost:8800@anon-20191002_181700-411:localhost:88004PQ]!HusOrLtWZTLbmQZxmm:localhost:8800@anon-20191002_181700-407:localhost:88004GP.Q]!EhUxBjnSkVXpTrQlrn:localhost:8800@anon-20191002_181700-505:localhost:88005P-Q]!laUExtszUaoCpZoyEq:localhost:8800@anon-20191002_181700-503:localhost:88004P,Q]!coGyOAgYnlBZAqznax:localhost:8800@anon-20191002_181700-501:localhost:88004P+Q]!ubmTdQFAhrhZkGULDx:localhost:8800@anon-20191002_181700-499:localhost:88004P*Q]!rpVYLTJGcFNdGzFzXj:localhost:8800@anon-20191002_181700-497:localhost:88004PQ]!BpTqIemsWFZIqTcgJO:localhost:8800@anon-20191002_181700-403:localhost:88004XP)Q]!iKezIvJyjkNqKayFju:localhost:8800@anon-20191002_181700-495:localhost:88004P(Q]!DelfBAGvCrTXgNxmNV:localhost:8800@anon-20191002_181700-493:localhost:88004P'Q]!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-491:localhost:88004P&Q]!pJUItjYTOUJQFIxyiX:localhost:8800@anon-20191002_181700-490:localhost:88004P%Q]!mvgUHEsfGqDkPQUvfG:localhost:8800@anon-20191002_181700-488:localhost:88003P$Q]!WYyiQAVvitxsLZKVCG:localhost:8800@anon-20191002_181700-486:localhost:88003P#Q]!KIHYKMzkRDrJwiywwz:localhost:8800@anon-20191002_181700-484:localhost:88003P"Q]!RSLvuCuAqKQQrKCxNq:localhost:8800@anon-20191002_181700-482:localhost:88003P!Q]!DqxFmsXPclgGqpSwdy:localhost:8800@anon-20191002_181700-480:localhost:88003P Q]!uqIEMXzdeNeXdJmuwh:localhost:8800@anon-20191002_181700-478:localhost:88003PQ]!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-476:localhost:88003PQ]!tLkhTnTgDjjAvscRkW:localhost:8800@anon-20191002_181700-475:localhost:88003PQ]!kAxKaIQhXTtGFWSUgr:localhost:8800@anon-20191002_181700-473:localhost:88002PQ]!WhLedNwPGGGTtqeqam:localhost:8800@anon-20191002_181700-471:localhost:88002PQ]!yLccBXjjEasExpsXlt:localhost:8800@anon-20191002_181700-469:localhost:88002PQ]!PcvmCDeVUSyJbXpTig:localhost:8800@anon-20191002_181700-467:localhost:88002PQ]!HbYxdEuVIeLKHwqJEh:localhost:8800@anon-20191002_181700-465:localhost:88002PQ]!FbJSiQoZtZkaFwzzQq:localhost:8800@anon-20191002_181700-463:localhost:88002PQ]!JPTwFTSDaBXwUTgitj:localhost:8800@anon-20191002_181700-461:localhost:88002PQ]!RYNJAGdRhIlwRZFbrO:localhost:8800@anon-20191002_181700-460:localhost:88002PQ]!MqstbCLZIQFiYNHrqR:localhost:8800@anon-20191002_181700-458:localhost:88001PQ]!WuiaqqIOvBjgETqdus:localhost:8800@anon-20191002_181700-456:localhost:88001PQ]!bQDOrbAknnQZfUbhgS:localhost:8800@anon-20191002_181700-454:localhost:88001PQ]!GSxvxNevpCiwmFCHys:localhost:8800@anon-20191002_181700-452:localhost:88001PQ]!yfizglmCXdcqCgDrTr:localhost:8800@anon-20191002_181700-450:localhost:88001PQ]!XnUZiYJDWVNGfsBnGz:localhost:8800@anon-20191002_181700-448:localhost:88001PQ]!ePtMOPPOgOcBIMNZpn:localhost:8800@anon-20191002_181700-446:localhost:88001PQ]!YGUjVdVdpcQoGkRnWB:localhost:8800@anon-20191002_181700-445:localhost:88001P Q]!IZkczIYykpZDvjuUWn:localhost:8800@anon-20191002_181700-442:localhost:88004P Q]!zuCqeooOnfWkYrQdxA:localhost:8800@anon-20191002_181700-436:localhost:88004P Q]!vttkrtSyHEJXVMlvLo:localhost:8800@anon-20191002_181700-433:localhost:88004P Q]!whuymJoLfUdkFdxoyE:localhost:8800@anon-20191002_181700-430:localhost:88004P Q]!yTQmLDAxZscWKLMSWh:localhost:8800@anon-20191002_181700-427:localhost:88004PQ]!eWRdwtyqHvuxZFvhNS:localhost:8800@anon-20191002_181700-424:localhost:88004PQ]!UGVFuRGyPQmBbGsEDo:localhost:8800@anon-20191002_181700-420:localhost:88004PQ]!AMLmLqizBFklpqKibP:localhost:8800@anon-20191002_181700-417:localhost:88004PQ]!rWGwSSefrZzQYCYFHs:localhost:8800@anon-20191002_181700-414:localhost:88004 3*H f x 3aQQQ?#astest-__ANON__-31:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800@as-user-1:localhost:8800uP[Q]#test-20191002_181700-47:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800@anon-20191002_181700-628:localhost:8800iOCQ]#__ANON__-26:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800@anon-20191002_181700-616:localhost:8800uN[Q]#test-20191002_181700-46:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-614:localhost:8800uM[Q]#test-20191002_181700-45:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-612:localhost:8800uL[Q]#test-20191002_181700-44:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-608:localhost:8800iKCQ]#__ANON__-25:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-604:localhost:8800uJ[Q]#test-20191002_181700-43:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-520:localhost:8800iICQ]#__ANON__-24:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800@anon-20191002_181700-510:localhost:8800iHCQ]#__ANON__-23:localhost:8800!mogJVPxghalmKbblUq:localhost:8800@anon-20191002_181700-506:localhost:8800iGCQ]#__ANON__-22:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800@anon-20191002_181700-495:localhost:8800   * `eQa!$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2667}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A"], "type": "m.room.canonical_alias", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"alias": "#__ANON__-22:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042840531, "hashes": {"sha256": "vvQB4ao2V4ml+7Lc1podCjm6ZLOHJn9zoQc64JqPDpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jfd8JaKPCwjjnNgrZgVFcZWjWGsZvcWVoFOgKnG1JsYq6ByGVJTn6zhdLSbhZTs3yU86peDOUjazl634+KanBg"}}, "unsigned": {"age_ts": 1570042840531}}k_eQac$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2666}{"auth_events": ["$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "type": "m.room.power_levels", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"users": {"@anon-20191002_181700-495:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042839748, "hashes": {"sha256": "sqAOrBdxOsuhXhkyoTjMgG3md0jHr7gDvH1pqHGSkRQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N8ie1EANcxS6WgwWtNi04UhC8SSh7ft8v5zJYlK0XTUDxSPh81z/vnTNd60LlAvO8S9bfFsiZgF3jakmJUUkBQ"}}, "unsigned": {"age_ts": 1570042839748}}v^eQay$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2665}{"auth_events": ["$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q"], "prev_events": ["$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q"], "type": "m.room.member", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-495", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-495:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042839122, "hashes": {"sha256": "lEw03bI1251yQgnfxCodIGJVhlm8Oml7XWuuT7gmQl0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L3djeImepXqdKyIVvSOCdhJjSPUv5XvvZNnBy39CmXzrkH57n8N4NvsLBLhEJjw4wRe100jHKxDAJQ9pscKUBg"}}, "unsigned": {"age_ts": 1570042839122}}i]eQa_$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2664}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-495:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042838311, "hashes": {"sha256": "xor1wIq9QAd4FgZMm25kRX2ZMpkCsxNWwOfaFm22KZo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1g6EIJKunSNYvRxhGonCks7bySl/aX40cF3e+3vp/UfDbfX9x/ys3A6BFXybJ55cjKbP0uhq03p78t1ES4OVBQ"}}, "unsigned": {"age_ts": 1570042838311}} -RM H C > 9 4/*|%w rmhc T>Qe!mogJVPxghalmKbblUq:localhost:8800$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYT=Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIT<Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMT;Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4T:Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4T9Qe!EhUxBjnSkVXpTrQlrn:localhost:8800$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQT8Qe!laUExtszUaoCpZoyEq:localhost:8800$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8T7Qe!laUExtszUaoCpZoyEq:localhost:8800$SgLGdr23vUTR_MVNRKilawNMw4EQA3_jqoAaPydR1P8T6Qe!laUExtszUaoCpZoyEq:localhost:8800$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YT5Qe!laUExtszUaoCpZoyEq:localhost:8800$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAET4Qe!laUExtszUaoCpZoyEq:localhost:8800$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QT3Qe!laUExtszUaoCpZoyEq:localhost:8800$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkT2Qe!laUExtszUaoCpZoyEq:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4T1Qe!laUExtszUaoCpZoyEq:localhost:8800$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0QT0Qe!coGyOAgYnlBZAqznax:localhost:8800$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkT/Qe!coGyOAgYnlBZAqznax:localhost:8800$_YTe_nYpqtEeGvE2k3a5um8DYtNBXODrJC74z2jVMBMT.Qe!coGyOAgYnlBZAqznax:localhost:8800$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQT-Qe!coGyOAgYnlBZAqznax:localhost:8800$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUT,Qe!coGyOAgYnlBZAqznax:localhost:8800$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAT+Qe!coGyOAgYnlBZAqznax:localhost:8800$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4T*Qe!coGyOAgYnlBZAqznax:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMT)Qe!coGyOAgYnlBZAqznax:localhost:8800$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzET(Qe!ubmTdQFAhrhZkGULDx:localhost:8800$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsT'Qe!ubmTdQFAhrhZkGULDx:localhost:8800$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgT&Qe!ubmTdQFAhrhZkGULDx:localhost:8800$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYT%Qe!ubmTdQFAhrhZkGULDx:localhost:8800$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8T$Qe!ubmTdQFAhrhZkGULDx:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQT#Qe!ubmTdQFAhrhZkGULDx:localhost:8800$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIT"Qe!rpVYLTJGcFNdGzFzXj:localhost:8800$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3UT!Qe!rpVYLTJGcFNdGzFzXj:localhost:8800$CnR4Or0xg5WozpzqzRstNjpnilH9bZn8fXlMYNHHGCMT Qe!rpVYLTJGcFNdGzFzXj:localhost:8800$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4TQe!rpVYLTJGcFNdGzFzXj:localhost:8800$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwTQe!rpVYLTJGcFNdGzFzXj:localhost:8800$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2ATQe!rpVYLTJGcFNdGzFzXj:localhost:8800$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQTQe!rpVYLTJGcFNdGzFzXj:localhost:8800$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4TQe!rpVYLTJGcFNdGzFzXj:localhost:8800$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8TQe!rpVYLTJGcFNdGzFzXj:localhost:8800$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1ATQe!iKezIvJyjkNqKayFju:localhost:8800$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64TQe!iKezIvJyjkNqKayFju:localhost:8800$zTZ3E7InHOAX6z4ESRE9FGvNHYN0PariqMKTEqSWoU8TQe!iKezIvJyjkNqKayFju:localhost:8800$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgTQe!iKezIvJyjkNqKayFju:localhost:8800$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4TQe!iKezIvJyjkNqKayFju:localhost:8800$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6QTQe!iKezIvJyjkNqKayFju:localhost:8800$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8TQe!iKezIvJyjkNqKayFju:localhost:8800$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0ATQe!iKezIvJyjkNqKayFju:localhost:8800$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA  gHdeQa$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2671}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg"], "type": "m.room.test", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042843851, "hashes": {"sha256": "a/aIHbx1ZvQnnCNvyYBtdVHLgl+UBjPrVsZF/+Wau/0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h5mDm03S4u5ZEglrJ9Z2WGF0iKGdrGY4COh2N4lursQw9usC0tIXUX+QyMD7k1u3vgEazIPhsWC1HuaJ/DJkBQ"}}, "unsigned": {"age_ts": 1570042843851}}ceQa5$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2670}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4"], "type": "m.room.aliases", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"aliases": ["#__ANON__-22:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042842990, "hashes": {"sha256": "1RzjKhVDGF5G4SuBsov1CgTNIQpBgt0Yt3ezO/FJalU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jRQK2o0upvN6dKhtkCmEzsPIzRzaZHNCAzsRShDLq8VKKE/wDw3EVmwLSzHg8+HLU0/tuanbO/BnhPbJT0s9Bw"}}, "unsigned": {"age_ts": 1570042842990}}beQa$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2669}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q"], "type": "m.room.history_visibility", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042842001, "hashes": {"sha256": "XN+fhYuP/Oa72BvYA4g09fT1UdfptoITDg8980hmAgo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DH8fsqY37nzjxOnbLAAodebldVrUtRlQAwCKtp1if8/rRsUUxZ4Y+r8ySz4mz0EvUVgYEcgC9dFiDBQNFM0+BQ"}}, "unsigned": {"age_ts": 1570042842001}}taeQau$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "stream_ordering": 2668}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8"], "type": "m.room.join_rules", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042841359, "hashes": {"sha256": "kdsgU9YT6RH0Sel2n7L70m7XID8tL6vptEUXq1gHa1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzrJp2yQzJkbjrJsrItXMw6swNMx9V4477djMASKke3wuEpCsCWQuK1Z+PIoj70/zVwSX5hGh9dfHrrYy+QVDg"}}, "unsigned": {"age_ts": 1570042841359}}  vheQay$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2675}{"auth_events": ["$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A"], "prev_events": ["$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A"], "type": "m.room.member", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-497", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-497:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042847988, "hashes": {"sha256": "qdd+LMo2IRjuQCrpRbVGnCg5JyNwozELDKm2arT+DDs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GHb9k+sZqJvXt4Aq/Ss9hLIo4HSqLW2WeoRFy6Pvac7Wln4t0XG2PFsFlTK90p2x/l9Q57f2H/WDuFCq4rj3AA"}}, "unsigned": {"age_ts": 1570042847988}}igeQa_$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2674}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-497:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042847056, "hashes": {"sha256": "vVPCVxLKUKDGyMyYWN3qIQFy98YszYtfKY6BeEZeOa8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "USOvnMObVstIhucmeWmchIMOIBi4ncNzLeZmMUZOY+kg43EZKLnHI22zvtNTr9VIi3xG2nCyL/q5QYrlvh9GDA"}}, "unsigned": {"age_ts": 1570042847056}}feQm$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800{"token_id": 497, "txn_id": "504", "stream_ordering": 2673}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA"], "prev_events": ["$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64"], "type": "m.room.message", "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-495:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042845237, "hashes": {"sha256": "xrFnBwcjk31joxmAH/NnZt+vwmbwb8zxNgvdgZVommY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gzFDL1x7D8m0naa6VA7mCEBrpz9BPgcZilPTOFr499kF6WiNqd7FHAtygg3iXp/cNa20mINTwTdJeVH44cYAAg"}}, "unsigned": {"age_ts": 1570042845237}}reeQ1$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64!iKezIvJyjkNqKayFju:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2672}{"auth_events": ["$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A", "$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q", "$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-496", "membership": "join"}, "depth": 9, "hashes": {"sha256": "bpir/epNtJaqWe0QJvAqfJB7JeVOg8HxxC4MlWFnZPo"}, "origin": "localhost:8829", "origin_server_ts": 1570042844365, "prev_events": ["$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Y"], "prev_state": [], "room_id": "!iKezIvJyjkNqKayFju:localhost:8800", "sender": "@anon-20191002_181700-496:localhost:8829", "state_key": "@anon-20191002_181700-496:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cuJpg1wHBDcNNQD9DFtDlDzeQIbTWKg24hy1HF+wT/IXuidB9fZzD3dcXlj7QQh3A42vNGwn1oDVc4vu7t4JCA"}, "localhost:8829": {"ed25519:a_UxIG": "7mDP1yOY/7EbWurxuWAsNVEbUpVKWh+i+7CY2VZqCQBZbEUg6Wf7hldUPz/E4kvG/iSaVbqI/eUTiLJ6EzXrCg"}}, "unsigned": {"age": 114}} < Z x  % C a,Jh3Qon]@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-509:localhost:8800 anon-20191002_181700-509n ]@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-508:localhost:8800 anon-20191002_181700-508n ]@anon-20191002_181700-507:localhost:8800@anon-20191002_181700-507:localhost:8800 anon-20191002_181700-507n ]@anon-20191002_181700-506:localhost:8800@anon-20191002_181700-506:localhost:8800 anon-20191002_181700-506n ]@anon-20191002_181700-505:localhost:8800@anon-20191002_181700-505:localhost:8800 anon-20191002_181700-505n ]@anon-20191002_181700-504:localhost:8829@anon-20191002_181700-504:localhost:8829 anon-20191002_181700-504n]@anon-20191002_181700-503:localhost:8800@anon-20191002_181700-503:localhost:8800 anon-20191002_181700-503n]@anon-20191002_181700-501:localhost:8800@anon-20191002_181700-501:localhost:8800 anon-20191002_181700-501n]@anon-20191002_181700-499:localhost:8800@anon-20191002_181700-499:localhost:8800 anon-20191002_181700-499n]@anon-20191002_181700-495:localhost:8800@anon-20191002_181700-495:localhost:8800 anon-20191002_181700-495n]@anon-20191002_181700-494:localhost:8800@anon-20191002_181700-494:localhost:8800 anon-20191002_181700-494n]@anon-20191002_181700-493:localhost:8800@anon-20191002_181700-493:localhost:8800 anon-20191002_181700-493n]@anon-20191002_181700-492:localhost:8800@anon-20191002_181700-492:localhost:8800 anon-20191002_181700-492n~]@anon-20191002_181700-491:localhost:8800@anon-20191002_181700-491:localhost:8800 anon-20191002_181700-491n}]@anon-20191002_181700-490:localhost:8800@anon-20191002_181700-490:localhost:8800 anon-20191002_181700-490n|]@anon-20191002_181700-489:localhost:8829@anon-20191002_181700-489:localhost:8829 anon-20191002_181700-489n{]@anon-20191002_181700-488:localhost:8800@anon-20191002_181700-488:localhost:8800 anon-20191002_181700-488nz]@anon-20191002_181700-486:localhost:8800@anon-20191002_181700-486:localhost:8800 anon-20191002_181700-486ny]@anon-20191002_181700-484:localhost:8800@anon-20191002_181700-484:localhost:8800 anon-20191002_181700-484nx]@anon-20191002_181700-483:localhost:8829@anon-20191002_181700-483:localhost:8829 anon-20191002_181700-483nw]@anon-20191002_181700-482:localhost:8800@anon-20191002_181700-482:localhost:8800 anon-20191002_181700-482nv]@anon-20191002_181700-481:localhost:8829@anon-20191002_181700-481:localhost:8829 anon-20191002_181700-481nu]@anon-20191002_181700-480:localhost:8800@anon-20191002_181700-480:localhost:8800 anon-20191002_181700-480nt]@anon-20191002_181700-479:localhost:8800@anon-20191002_181700-479:localhost:8800 anon-20191002_181700-479n]@anon-20191002_181700-498:localhost:8829@anon-20191002_181700-498:localhost:8829 anon-20191002_181700-498n]@anon-20191002_181700-497:localhost:8800@anon-20191002_181700-497:localhost:8800 anon-20191002_181700-497n]@anon-20191002_181700-496:localhost:8829@anon-20191002_181700-496:localhost:8829 anon-20191002_181700-496 w@u!c r D  ^ 0 5 } O ' V; * A[ioUIG-vb!w  h z N " r F u\-]@anon-20191002_181700-571:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-480:localhost:8800--]@anon-20191002_181700-550:localhost:8800-]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-481:localhost:8829>-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-548:localhost:8800-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-540:localhost:8829-]@anon-20191002_181700-542:localhost:8829-]@anon-20191002_181700-539:localhost:8800-]@anon-20191002_181700-544:localhost:8829-]@anon-20191002_181700-556:localhost:8800-]@anon-20191002_181700-541:localhost:8800-]@anon-20191002_181700-533:localhost:8800-]@anon-20191002_181700-520:localhost:8800|-]@anon-20191002_181700-522:localhost:8829}-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-537:localhost:8800-]@anon-20191002_181700-514:localhost:8800r-]@anon-20191002_181700-531:localhost:8800-]@anon-20191002_181700-513:localhost:8829m-]@anon-20191002_181700-535:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-519:localhost:8829j-]@anon-20191002_181700-507:localhost:8800f-]@anon-20191002_181700-483:localhost:8829<-]@anon-20191002_181700-482:localhost:88006-]@anon-20191002_181700-518:localhost:8800x-]@anon-20191002_181700-512:localhost:8800d-]@anon-20191002_181700-484:localhost:8800F-]@anon-20191002_181700-509:localhost:8800g-]@anon-20191002_181700-488:localhost:8800M-]@anon-20191002_181700-506:localhost:8800V-]@anon-20191002_181700-489:localhost:8829;-]@anon-20191002_181700-511:localhost:8829h+[@anon-20191002_181700-48:localhost:8800 -]@anon-20191002_181700-508:localhost:8800]-]@anon-20191002_181700-490:localhost:8800O-]@anon-20191002_181700-559:localhost:8829 -]@anon-20191002_181700-505:localhost:8800b-]@anon-20191002_181700-504:localhost:8829R-]@anon-20191002_181700-503:localhost:8800c-]@anon-20191002_181700-499:localhost:8800Z-]@anon-20191002_181700-498:localhost:8829^-]@anon-20191002_181700-497:localhost:8800L-]@anon-20191002_181700-496:localhost:8829W-]@anon-20191002_181700-495:localhost:8800J-]@anon-20191002_181700-494:localhost:8800T-]@anon-20191002_181700-493:localhost:8800B-]@anon-20191002_181700-492:localhost:8800P-]@anon-20191002_181700-491:localhost:8800@+[@anon-20191002_181700-53:localhost:8800!+[@anon-20191002_181700-52:localhost:8800" .-]@anon-20191002_181700-543:localhost:8800 :.-]@anon-20191002_181700-521:localhost:8800{ -]@anon-20191002_181700-510:localhost:8800`HB-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800.-]@anon-20191002_181700-568:localhost:8800\ \T,qI" Z 2 D  l D  |l ~ V .  g @   { S + e`9>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800Q'Q!hFwigdYZkwYNSwelRH:localhost:8800C'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88004'Q!sAWFpvSUPExZLVcPEd:localhost:8800u'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800)'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800J'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800|'Q!qzrZzAieCgGSbpKOQR:localhost:8800}&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800b'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800k&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800F'Q!pduebXnTyxQWVxEICp:localhost:8800>'Q!paDmNxsOZIKyApbxXs:localhost:8800B'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800%'Q!pHoEnhQYhwlbJXqKQE:localhost:8800e&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800x&Q!oXKJArsPmtgaYANBrg:localhost:88002&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800.&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800,&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800a'Q!kOmCTyiizHqfCJdhlR:localhost:8800&'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800T&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800R'Q!iKezIvJyjkNqKayFju:localhost:8800('Q!hrhDJbmXvXBizKoiiK:localhost:8800S'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800H'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800Z'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800$ \T,qI" Z 2 D  l D  |l ~ V .  g @   { S + e`9>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800Q'Q!hFwigdYZkwYNSwelRH:localhost:8800C'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88004'Q!sAWFpvSUPExZLVcPEd:localhost:8800u'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800)'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800J'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800|'Q!qzrZzAieCgGSbpKOQR:localhost:8800}&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800b'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800k&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800F'Q!pduebXnTyxQWVxEICp:localhost:8800>'Q!paDmNxsOZIKyApbxXs:localhost:8800B'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800%'Q!pHoEnhQYhwlbJXqKQE:localhost:8800e&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800x&Q!oXKJArsPmtgaYANBrg:localhost:88002&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800.&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800,&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800a'Q!kOmCTyiizHqfCJdhlR:localhost:8800&'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800T&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800R'Q!iKezIvJyjkNqKayFju:localhost:8800('Q!hrhDJbmXvXBizKoiiK:localhost:8800S'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800H'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800Z'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800$ n^ h  l $ 97L]n! e)Q ]$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpMm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mm@anon-20191002_181700-499:localhost:8800!e)Q ] $4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bYm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mm@anon-20191002_181700-499:localhost:8800!e)Q ] $WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpgm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mm@anon-20191002_181700-499:localhost:8800!e)Q ] $Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8m.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mDmR@anon-20191002_181700-499:localhost:8800!e)Q ] $9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98m.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 mۢm۩@anon-20191002_181700-499:localhost:8800!e)Q ] $JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jIm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800 m٧mٶ@anon-20191002_181700-499:localhost:8800!e)Q ]$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokgm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mwm{@anon-20191002_181700-499:localhost:8800e#Q ]$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjom.room.test!ubmTdQFAhrhZkGULDx:localhost:8800mհmճ@anon-20191002_181700-499:localhost:8800 e'Q ]$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsm.room.member!ubmTdQFAhrhZkGULDx:localhost:8800mmҍ@anon-20191002_181700-499:localhost:8800,e?Q ]$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgm.room.history_visibility!ubmTdQFAhrhZkGULDx:localhost:8800mPm@anon-20191002_181700-499:localhost:8800$e/Q ]$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYm.room.join_rules!ubmTdQFAhrhZkGULDx:localhost:8800mm˥@anon-20191002_181700-499:localhost:8800&~e3Q ]$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8m.room.power_levels!ubmTdQFAhrhZkGULDx:localhost:8800m<mR@anon-20191002_181700-499:localhost:8800 }e'Q ]$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQm.room.member!ubmTdQFAhrhZkGULDx:localhost:8800mmQ@anon-20191002_181700-499:localhost:8800| e'Q  ]$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIm.room.create!ubmTdQFAhrhZkGULDx:localhost:8800m(mï@anon-20191002_181700-499:localhost:8800!{e)Q ] $p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICEm.room.message!rpVYLTJGcFNdGzFzXj:localhost:8800 mؽ[mؾ}@anon-20191002_181700-497:localhost:8800 ze'Q ] $f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Um.room.member!rpVYLTJGcFNdGzFzXj:localhost:8800 mعpmغB@anon-20191002_181700-498:localhost:8829 ye'Q ]$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4m.room.member!rpVYLTJGcFNdGzFzXj:localhost:8800mضmض@anon-20191002_181700-497:localhost:8800xe#Q ]$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-km.room.test!rpVYLTJGcFNdGzFzXj:localhost:8800mسTmسX@anon-20191002_181700-497:localhost:8800&we3Q ]$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwm.room.guest_access!rpVYLTJGcFNdGzFzXj:localhost:8800mخmد@anon-20191002_181700-497:localhost:8800,ve?Q ]$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2Am.room.history_visibility!rpVYLTJGcFNdGzFzXj:localhost:8800mثmج@anon-20191002_181700-497:localhost:8800$ue/Q ]$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQm.room.join_rules!rpVYLTJGcFNdGzFzXj:localhost:8800mبomة@anon-20191002_181700-497:localhost:8800&te3Q ]$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4m.room.power_levels!rpVYLTJGcFNdGzFzXj:localhost:8800mإjmئ@anon-20191002_181700-497:localhost:8800 se'Q ]$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8m.room.member!rpVYLTJGcFNdGzFzXj:localhost:8800mآmأd@anon-20191002_181700-497:localhost:8800r e'Q  ]$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1Am.room.create!rpVYLTJGcFNdGzFzXj:localhost:8800m؟Pm؟@anon-20191002_181700-497:localhost:8800 \T,qI" Z 2 D  l D  |l ~ V .  g @   { S + e`9>xP(a9sK#\4 'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800l'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!hGsPmWXboxZZtOlsxY:localhost:8800Q'Q!hFwigdYZkwYNSwelRH:localhost:8800C'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:88004'Q!sAWFpvSUPExZLVcPEd:localhost:8800u'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800)'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800J'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800|'Q!qzrZzAieCgGSbpKOQR:localhost:8800}&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800b'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800k&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800F'Q!pduebXnTyxQWVxEICp:localhost:8800>'Q!paDmNxsOZIKyApbxXs:localhost:8800B'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800%'Q!pHoEnhQYhwlbJXqKQE:localhost:8800e&Q!oznZaCpONuNDaLarkI:localhost:8800d'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800x&Q!oXKJArsPmtgaYANBrg:localhost:88002&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:8800.&Q!mfzIRinBAGGrZvQAuI:localhost:8800k'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800,&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D'Q!lEJUJZxqZPKZetemiR:localhost:8800&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800a'Q!kOmCTyiizHqfCJdhlR:localhost:8800&'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U'Q!ijOiudvuzOLNmgNKfG:localhost:8800T&Q!ifQxHmNAcSSGHVMjfi:localhost:8800z'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800R'Q!iKezIvJyjkNqKayFju:localhost:8800('Q!hrhDJbmXvXBizKoiiK:localhost:8800S'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800f'Q!hegUPDZCEEmBhsNJJR:localhost:8800H'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800Z'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800$ 7:x=}=K x 5 < kT:} % k 0 _ )t^#AL/8;uBQ? !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibility :Q/ !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules <Q3 !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels ^Q']!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800 6Q' !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.create ^Q']!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800 ERQ'E!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455 I:Q/ !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules GBQ? !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibility H6Q' !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create D<Q3 !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels^Q']!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829H^Q']!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800I^Q']!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800B:Q/ !wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rulesEBQ? !wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibilityF6Q' !wBkUBAjOznOyxrLchl:localhost:8800m.room.createA?Q9 !wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_aliasDEQ))!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800G<Q3 !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels ^Q']!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800 :Q/ !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rules BQ? !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibility 6Q' !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.create <Q3 !wAyboOFgsOPwkmgMAI:localhost:8800m.room.power_levels^Q']!wAyboOFgsOPwkmgMAI:localhost:8800m.room.member@anon-20191002_181700-181:localhost:8800:Q/ !wAyboOFgsOPwkmgMAI:localhost:8800m.room.join_rulesBQ? !wAyboOFgsOPwkmgMAI:localhost:8800m.room.history_visibility6Q' !wAyboOFgsOPwkmgMAI:localhost:8800m.room.create5Q% !vyCFfUTJKYJSDadFhT:localhost:8800m.room.topicb<Q3 !vyCFfUTJKYJSDadFhT:localhost:8800m.room.power_levelsX4Q# !vyCFfUTJKYJSDadFhT:localhost:8800m.room.name`^Q']!vyCFfUTJKYJSDadFhT:localhost:8800m.room.member@anon-20191002_181700-311:localhost:8800V:Q/ !vyCFfUTJKYJSDadFhT:localhost:8800m.room.join_rules\BQ? !vyCFfUTJKYJSDadFhT:localhost:8800m.room.history_visibility^6Q' !vyCFfUTJKYJSDadFhT:localhost:8800m.room.createU?Q9 !vyCFfUTJKYJSDadFhT:localhost:8800m.room.canonical_aliasZEQ))!vyCFfUTJKYJSDadFhT:localhost:8800m.room.aliaseslocalhost:8800d<Q3 !vttkrtSyHEJXVMlvLo:localhost:8800m.room.power_levels4Q# !vttkrtSyHEJXVMlvLo:localhost:8800m.room.name"^Q']!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-435:localhost:8800$^Q']!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-434:localhost:8800#^Q']!vttkrtSyHEJXVMlvLo:localhost:8800m.room.member@anon-20191002_181700-433:localhost:8800:Q/ !vttkrtSyHEJXVMlvLo:localhost:8800m.room.join_rules BQ? !vttkrtSyHEJXVMlvLo:localhost:8800m.room.history_visibility!6Q' !vttkrtSyHEJXVMlvLo:localhost:8800m.room.create<Q3 !vpuivIQDEhyuhOLWpg:localhost:8800m.room.power_levels^Q']!vpuivIQDEhyuhOLWpg:localhost:8800m.room.member@anon-20191002_181700-301:localhost:8800:Q/ !vpuivIQDEhyuhOLWpg:localhost:8800m.room.join_rulesBQ? !vpuivIQDEhyuhOLWpg:localhost:8800m.room.history_visibility<Q3 !vpuivIQDEhyuhOLWpg:localhost:8800m.room.guest_access6Q' !vpuivIQDEhyuhOLWpg:localhost:8800m.room.create?Q9 !vpuivIQDEhyuhOLWpg:localhost:8800m.room.canonical_alias EQ))!vpuivIQDEhyuhOLWpg:localhost:8800m.room.aliaseslocalhost:8800 <Q3 !vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels F -RM H C > 9 4/*|%w rmhc T^Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIT]Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMT\Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4T[Qe !EhUxBjnSkVXpTrQlrn:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4TZQe !EhUxBjnSkVXpTrQlrn:localhost:8800$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQTYQe !laUExtszUaoCpZoyEq:localhost:8800$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptsTXQe !laUExtszUaoCpZoyEq:localhost:8800$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0TWQe !laUExtszUaoCpZoyEq:localhost:8800$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8TVQe !laUExtszUaoCpZoyEq:localhost:8800$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQMTUQe !laUExtszUaoCpZoyEq:localhost:8800$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YTTQe !laUExtszUaoCpZoyEq:localhost:8800$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAETSQe !laUExtszUaoCpZoyEq:localhost:8800$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QTRQe !laUExtszUaoCpZoyEq:localhost:8800$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkTQQe !laUExtszUaoCpZoyEq:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4TPQe !laUExtszUaoCpZoyEq:localhost:8800$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0QTOQe !coGyOAgYnlBZAqznax:localhost:8800$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkTNQe !coGyOAgYnlBZAqznax:localhost:8800$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjETMQe !coGyOAgYnlBZAqznax:localhost:8800$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQTLQe !coGyOAgYnlBZAqznax:localhost:8800$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUTKQe !coGyOAgYnlBZAqznax:localhost:8800$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkATJQe !coGyOAgYnlBZAqznax:localhost:8800$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4TIQe !coGyOAgYnlBZAqznax:localhost:8800$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMTHQe !coGyOAgYnlBZAqznax:localhost:8800$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzETGQe !ubmTdQFAhrhZkGULDx:localhost:8800$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTcTFQe !ubmTdQFAhrhZkGULDx:localhost:8800$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blcTEQe !ubmTdQFAhrhZkGULDx:localhost:8800$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpMTDQe !ubmTdQFAhrhZkGULDx:localhost:8800$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bYTCQe !ubmTdQFAhrhZkGULDx:localhost:8800$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpgTBQe !ubmTdQFAhrhZkGULDx:localhost:8800$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8TAQe !ubmTdQFAhrhZkGULDx:localhost:8800$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98T@Qe !ubmTdQFAhrhZkGULDx:localhost:8800$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jIT?Qe !ubmTdQFAhrhZkGULDx:localhost:8800$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokgT>Qe !ubmTdQFAhrhZkGULDx:localhost:8800$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjoT=Qe !ubmTdQFAhrhZkGULDx:localhost:8800$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsT<Qe !ubmTdQFAhrhZkGULDx:localhost:8800$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgT;Qe !ubmTdQFAhrhZkGULDx:localhost:8800$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAYT:Qe ~!ubmTdQFAhrhZkGULDx:localhost:8800$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8T9Qe }!ubmTdQFAhrhZkGULDx:localhost:8800$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQT8Qe |!ubmTdQFAhrhZkGULDx:localhost:8800$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIT7Qe {!rpVYLTJGcFNdGzFzXj:localhost:8800$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICET6Qe z!rpVYLTJGcFNdGzFzXj:localhost:8800$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3UT5Qe y!rpVYLTJGcFNdGzFzXj:localhost:8800$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4T4Qe x!rpVYLTJGcFNdGzFzXj:localhost:8800$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-kT3Qe w!rpVYLTJGcFNdGzFzXj:localhost:8800$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwT2Qe v!rpVYLTJGcFNdGzFzXj:localhost:8800$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A a} { y w u sqomkigeca~(eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~'eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~&eeQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800~%eeQ$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~$eeQ$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~#eeQ$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~"eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~!eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800~ eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~eeQ$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4!rpVYLTJGcFNdGzFzXj:localhost:8800~ eeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8!rpVYLTJGcFNdGzFzXj:localhost:8800 "O | ! I X a o ~<"1_'OmeQ? $KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800m.room.history_visibilityeeQ/ $1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800m.room.join_rulesjeQ9 $wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800m.room.canonical_aliasgeQ3 $VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800m.room.power_levels eQ']$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800aeQ' $d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800m.room.createmeQ? $VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibilitye~eQ/ $QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rulesg}eQ3 $X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels |eQ']$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800a{eQ' $btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create zeQ']$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829 yeQ']$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829mxeQ? $1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE!laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibilityeweQ/ $qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800m.room.join_rulesgveQ3 $49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels ueQ']$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800ateQ' $u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800m.room.create seQ']$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829 reQ']$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829mqeQ? $895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU!coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibilityepeQ/ $x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800m.room.join_rulesgoeQ3 $GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels neQ']$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-501:localhost:8800ameQ' $S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800m.room.create leQ']$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-500:localhost:8829mkeQ? $_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800m.room.history_visibilityejeQ/ $iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800m.room.join_rulesgieQ3 $RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800m.room.power_levels heQ']$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800m.room.member@anon-20191002_181700-499:localhost:8800ageQ' $JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800m.room.create feQ']$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829 eeQ']$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.member@anon-20191002_181700-498:localhost:8829gdeQ3 $okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw!rpVYLTJGcFNdGzFzXj:localhost:8800m.room.guest_access Los ^3\1T)  #}R' {H b 7 `5qF } T +  ^ 5 DuJs ^ y NoX*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800"*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 (Q!sPWVGnipjiiWQpywNO:localhost:880076(Q!sPWVGnipjiiWQpywNO:localhost:880065*Q!sJnuQYOyruhUpXDsLY:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800 *Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 "*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 r *Q!sfXbvAcOUJhzGwWEpZ:localhost:8800#(*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800"'*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800!&*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800 %*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800$*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800# N*Q!rwUuVBrftGHDBOlEZm:localhost:8800Lo*Q!rwUuVBrftGHDBOlEZm:localhost:8800Kn*Q!rwUuVBrftGHDBOlEZm:localhost:8800Jm*Q!rwUuVBrftGHDBOlEZm:localhost:8800Il*Q!rwUuVBrftGHDBOlEZm:localhost:8800Hk*Q!rwUuVBrftGHDBOlEZm:localhost:8800Gj*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 +*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 **Q!sHRHoXzYrrPSlWBkoh:localhost:8800 )*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 (*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 '*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 &*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 %*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 $*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 #*Q!sAWFpvSUPExZLVcPEd:localhost:8800 (Q!scyFsXcUIJiLIMwWMY:localhost:8800qp(Q!scyFsXcUIJiLIMwWMY:localhost:8800po(Q!scyFsXcUIJiLIMwWMY:localhost:8800on(Q!scyFsXcUIJiLIMwWMY:localhost:8800nm(Q!scyFsXcUIJiLIMwWMY:localhost:8800ml(Q!scyFsXcUIJiLIMwWMY:localhost:8800lk(Q!sPWVGnipjiiWQpywNO:localhost:8800>=(Q!sPWVGnipjiiWQpywNO:localhost:8800=<(Q!sPWVGnipjiiWQpywNO:localhost:8800<;(Q!sPWVGnipjiiWQpywNO:localhost:8800;:(Q!sPWVGnipjiiWQpywNO:localhost:8800:9(Q!sPWVGnipjiiWQpywNO:localhost:880098(Q!sPWVGnipjiiWQpywNO:localhost:880087*Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 -*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!rwUuVBrftGHDBOlEZm:localhost:8800Nq*Q!rwUuVBrftGHDBOlEZm:localhost:8800Mp*Q!sfXbvAcOUJhzGwWEpZ:localhost:8800  doeQ1$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U!rpVYLTJGcFNdGzFzXj:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2682}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ", "$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-498", "membership": "join"}, "depth": 9, "hashes": {"sha256": "VMP/3g5yVMLlq/pDPC8jjr521hRTFpD5cz9H5aYjOaw"}, "origin": "localhost:8829", "origin_server_ts": 1570042853744, "prev_events": ["$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4"], "prev_state": [], "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-498:localhost:8829", "state_key": "@anon-20191002_181700-498:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/eMmUkplGfKE/Oi/c19Esy8n9ImlYmYZ6sUxG3uY+Em58UeU4B7qEWxXCcl1NuHHyeLPjmIbfBQ65kZFdE14Dg"}, "localhost:8829": {"ed25519:a_UxIG": "fM0myX00wmwg7YiRgntTObPJbq8pFre3R4mdcfJFTg2ItAVgTU4hdTb0rjhJfNPWWXo/Mlq02bo278XsnofeBw"}}, "unsigned": {"age": 103, "replaces_state": "$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4"}}neQa7$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2681}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k"], "type": "m.room.member", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-498", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-498:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042852871, "hashes": {"sha256": "J6GSU9AeHJxYK9RvmdDz4PyWT7g+lCGyOOa+WKo2H/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U1QlwSQ7/Qkr6qrmb3nBfCGJs6a7/9jzvO4hZCuh5x3wD4mpJoni3InU56ZTbl4SilXMi+FAYkPyDYCi0nyhAA"}, "localhost:8829": {"ed25519:a_UxIG": "GTMziRtQIACA9f1+K/exDxzwwmK368RZtCYkGvsSX1VwIbwX8I8CGLVus4rzu6v1UiamyCsArmfR/43iY9AFBA"}}, "unsigned": {"age_ts": 1570042852871, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-497:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-497:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-497", "avatar_url": null}, "sender": "@anon-20191002_181700-497:localhost:8800"}]}}HmeQa$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "stream_ordering": 2680}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQw"], "type": "m.room.test", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042852180, "hashes": {"sha256": "J/wYtb3/z1JLEX2JvUJq89nZ16RN8fziS71KZ9nqWmU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C/mNKkYbDp+hnkhtP7g9cPNoKhXStnz08ZLoy7pYbV7sEx6fkxV3pBnMqJ94xlwkgyYhzM/uRU4p3A3iifpjDg"}}, "unsigned": {"age_ts": 1570042852180}} [ ;C S3 +#s | k  K c;eeQ$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZg!uqIEMXzdeNeXdJmuwh:localhost:8800 'eeQ$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k!BoyzlWNkRPncpDjBDg:localhost:8800ہeeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800 _eeQ$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU!csWEXfVEVxdviNvgAd:localhost:8800eeeQ$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o!SrMQpDMFREKRMELwbL:localhost:88001eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4U$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI!DnUHoxreGexNmjSVpq:localhost:8800eeQ$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz4$VXQa_bFbyFLCayn6q_rgcb6y5uaZGnXnpz2qBds_Eg4!NajQnqYmGyTjxhFYar:localhost:88291eeQ$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc!SvKwEALYoNreUvqAlp:localhost:8800eeQ$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4!dWgOTucBVQBKZjfndN:localhost:88003eeQ$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod4!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q4!utJsNQubeIXvcTKGpx:localhost:8800΁eeQ$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw!hnQOBexFYpvJntEChZ:localhost:8800VeeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800 `eeQ$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800 9eeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800 1eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800 eeQ$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc!aBCvSXjtZUEPlPGHvY:localhost:8800reeQ$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng!OMkiVTuuOEeiFAXtUY:localhost:88000eeQ$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY$-4WnzL4v-DA5cgG8ntEiADDSvVtpPBSgpbYd3vf5UlU!HcMGemcRrLnLprOJJR:localhost:8800ЁeeQ$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A$Xf7PzT3c_n9f3VVuV1aedFIOKdCNj4wyt0yi5ivQRgA!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Q$YXinAkl8Hx7BRzYp5IsnYqQ73utOOkO9eLyL4zfg1F4!EyyNoldCLUdFHzXTDP:localhost:8800WeeQ$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY!wIhMbfQzYbJobPdwyi:localhost:8800PeeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800 g UD  L| dt \ l<4  ,$ U LeeQ$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!IfYYyzLHSOeyJBxBfn:localhost:8800!eeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo!XNfwczePlyYFWLCaui:localhost:8800veeQ$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY8$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U!CGckPHdSYcIocFvRAq:localhost:8800eeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w$ivi7PRlQJC-4bptC4OizHBneCzTNGul-HzKra3OyQC0!aHyAJEOSdKqTiRjOvw:localhost:8800_eeQ$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0!SrMQpDMFREKRMELwbL:localhost:8800/eeQ$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8!BkzROHxDAfKIzYpmPV:localhost:8800$eeQ$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY!SrMQpDMFREKRMELwbL:localhost:8800(eeQ$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8!rQeYcODvQiLsOIbQrJ:localhost:8800feeQ$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv0$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w!erBPdgtUsiOfIKUkho:localhost:88007eeQ$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY$gk4eBm51yyGYY3n3gMaRIkUtsxrYzlc77dLeYz75UkA!HZqzpRgqekPOtxstVc:localhost:8800ƁeeQ$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI!rZWweGEChkxxtzyfDB:localhost:8800eeQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M!YufaOfAlruTdjyUCwO:localhost:8800eeQ$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw!EMhFCPhwmnWVnjtXXM:localhost:88004eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800 eeQ$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY!aZwMKYDXJRlSKjQNWM:localhost:8800neeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800 heeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800 IeeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800 ˁeeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800 ƁeeQ$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon0!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W8$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84!bNSXSTadOMhIrYpMzH:localhost:8800ȁeeQ$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw!YtVXQjSPgVtbxrzUOA:localhost:8800eeQ$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI!YQATbgbLImCDamiDHC:localhost:8800  z kseQac$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2686}{"auth_events": ["$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "type": "m.room.power_levels", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"users": {"@anon-20191002_181700-499:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042857532, "hashes": {"sha256": "u+NHGisoOCg33bOMr3UuZMV3JzefCOzNgXQ1Us0zydg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "39iOILCD22dPgdzVyXzndXJA8c3AJH4BtcI0Q7yfjSQvBoeJjy1SqqyKqx+VaO2pojLqokq0jY1u9zG/BsvRBw"}}, "unsigned": {"age_ts": 1570042857532}}vreQay$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2685}{"auth_events": ["$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI"], "prev_events": ["$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI"], "type": "m.room.member", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-499", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-499:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042856936, "hashes": {"sha256": "S/izUAnTA+X3OacwHXli+VIKf5FpoEpiao80aPWcRCk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9keZaTZXLtYcDlh6gYnBC7yl3GBi04JSXmLfvWnXWM2eJ0uYDvdq+YVEBRsoxL6Ug/ozE0kVuQDNr7PXFPODAg"}}, "unsigned": {"age_ts": 1570042856936}}iqeQa_$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2684}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-499:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042856232, "hashes": {"sha256": "hrWrWABOfdGAF3hRPJFG8qVfTYLKHecGDR8JWk25Q5Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zv7xdIFllhraECJbl4HTUe12mq7/8Q+7WkFY7SDPdA/wgRQ9Tld5Mqckms02RA8StTG4oTVbqF6Tqev7/1vXBg"}}, "unsigned": {"age_ts": 1570042856232}}peQm$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800{"token_id": 498, "txn_id": "505", "stream_ordering": 2683}{"auth_events": ["$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4", "$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A", "$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8"], "prev_events": ["$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U"], "type": "m.room.message", "room_id": "!rpVYLTJGcFNdGzFzXj:localhost:8800", "sender": "@anon-20191002_181700-497:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042854747, "hashes": {"sha256": "aIamuYtdRBQWIaDT8xB52sphpm9VSzuDePQXAjLs7go"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R+6SarsGvVg+bIJ18muidgteskB5ccLaV9muOyPb0xaD3CHXQqGa9uw/EsoeFdj5ICshRFqiJdvOAc1YYxdhDQ"}}, "unsigned": {"age_ts": 1570042854747}}  oM ~eQ$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "512", "stream_ordering": 2697}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042864606, "hashes": {"sha256": "FADrTNUUqEV6IeObgOE4biBby+yKHARhVZ8pAIeIU+M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IC2zMJ7fm8YOOdA/c3XJfLLQYF2N2B6p7FcrPDDUHw+Rw1J/IH2xkUnCkXTL4O6eXKG1NRr7a8MLq8fZ0iZcAg"}}, "unsigned": {"age_ts": 1570042864606}} }eQ$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "511", "stream_ordering": 2696}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"body": "Message number 6", "msgtype": "m.text"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042864107, "hashes": {"sha256": "k6L+9zyirl38EAkEPKA/gzglF/uPggfwa/tWwPL7Ldk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ntSR9K/3gS6zVUUuVNT6dtNU5wQEoqD91kQ8tPIkeZgS0ALkzK4mSGTFrK0wEvitJz8QL7m/YmnEp2mmbCEgAg"}}, "unsigned": {"age_ts": 1570042864107}} |eQ$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "510", "stream_ordering": 2695}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042863566, "hashes": {"sha256": "rGYnpX9A/CbT92+ONF8hYGuCiVV3nCnESVTyYMkdC8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r3JLOe8LpYt0UsqNJXplpDUwOWbIBAVsTeGParhm4HRSG23nO82IHw8BnUWqg5QRwFeUpwcaRIckmX6npI3NCQ"}}, "unsigned": {"age_ts": 1570042863566}} {eQ$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "txn_id": "509", "stream_ordering": 2694}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98"], "type": "m.room.message", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042862916, "hashes": {"sha256": "zkGOq2v7bCyaXMI/5QzgDhMLk98MJ0DWJRwZ9Rjvafo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bMfSuqKnF1yswEKcK/auYHRYZp7obOPM0QOTiVjarWz2cDa7Hh3NKfQ0bJRcU9QlKlrkwl0kzaFh3RrZHe1yCg"}}, "unsigned": {"age_ts": 1570042862916}}  veQa7$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2689}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg"], "type": "m.room.member", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-500", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-500:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042860036, "hashes": {"sha256": "K2I5bbI0+1X/YRXiGIw6bj1IAaGjFiMFQ3nrLINkb30"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sQXbyTC7p2D8NK/CeXfBni8C2ErM39BEDNfK+IlBxEzNMO08Sak9B3Qti9Hro1V1l2NU7uSiINTL0f0Hth7gDg"}, "localhost:8829": {"ed25519:a_UxIG": "tO4M9YVC5riPcMC0be/61Riz5dGgzpIAWLojV+7zYbDfX0JYimn3Y/uzvZqkMmHH0LVLkl1batbClM4nVZ9VAA"}}, "unsigned": {"age_ts": 1570042860036, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-499:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-499:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-499", "avatar_url": null}, "sender": "@anon-20191002_181700-499:localhost:8800"}]}}ueQa$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2688}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY"], "type": "m.room.history_visibility", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042858832, "hashes": {"sha256": "cw4GUnrBmhsiwyR6hCuW2ysmUwmAVeB3OgXQUVvwbuw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jizWX1INCyOW4o+w6BxlIp63nn96kYzKE6mlTeTNVZA/5LRhhRIEvx9ujoo7PxYovrG99D8tdVizk8dXj6I+AA"}}, "unsigned": {"age_ts": 1570042858832}}tteQau$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800{"token_id": 499, "stream_ordering": 2687}{"auth_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8", "$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiI", "$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ"], "prev_events": ["$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8"], "type": "m.room.join_rules", "room_id": "!ubmTdQFAhrhZkGULDx:localhost:8800", "sender": "@anon-20191002_181700-499:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042858192, "hashes": {"sha256": "K6+spvAf/i76tYWej0/YIfFsK+0z3lmO6KrUhqy8cVk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m6L59ZfNYRuRms+V7katZk8gd+4tThXr7HegvDBi1cFRNhhXqme/VH85UI/jV8Z/j6YDK8UDQSPt0FCXeU4EBw"}}, "unsigned": {"age_ts": 1570042858192}} vE | J  P  V $ \ *b0\i7 Do=  vD*|JPV $j8p> v1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU 1e$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUN1e$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1e$wiEUw2biIAi41hzYfkbnmz7AkbU3eOfCuQjQtI9ie4k 1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeIG1e$wgIFJkcnzSNFJFHTNMYQrDzrs3lm61RdhXpAm2iLgE8 1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86Tof1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9Ar1e$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA.1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 31e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI^1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVoc1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie4 1e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ 1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wR4Ix9CZIpIGIguWyhiup3LkIzFjPVaK1Lp3pp6WuJc}1e$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J41e$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxc1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc%1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg k1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cO1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYE1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooo1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmcm0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA 1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI &1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0I41e$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME{1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_UA1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ }1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az8d1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM1e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA L1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY 51e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9k (1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU;1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic 21e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gi1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNMc1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY Q<OU#[) V $ [ )  b0h6 o }= uC {I Qj8p > w V $1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF01e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ 1e$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFME1e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE 1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ91e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Q`1e$oyMFDIz9GJKtkLbmF2QXtUjteFCbTbU6VRNL5tPZon01e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM M1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo .1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI1e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQ1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIA1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-kv1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk1e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM{1e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM_1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU)1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUo1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI.1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R41e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ91e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI1e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4;1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIi1e$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 i1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM Q1e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q x1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y d1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 d1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 21e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q i 1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E 1e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIE ,NC 8 - { " p  e ZOD9.|#qf V eL$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4sha256lAVTh>> 25\"K 9+y>VeL$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYsha256*eTk{(y0m'Z(VeL$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPosha256f+ bos^m>PDV;ٞz̜-pVeL$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYsha256_+zq^yo)! VeL$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8sha256T%Vw׼ouhDy]kv^VeL$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4sha256_dM?K}~ďl"Z>qrVeL$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYsha256wt7tanܨ>@26 ~P2vȀVeL$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtksha256õAOrJi/ ֢+:VeL$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIsha256T0SŽ'H[~0GVeL$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMsha256AH*C{='#; ٨~2 G6cVeL$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4sha256_ 5Zd{חDknB{=17fvNVeL$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4sha256>п WR6`F ,\VeL$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQsha256nѹ)ZR䫡V599nwHVeL$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptssha256,yRM5` wsXG )VeL$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0sha256?-}bnɄ-\uU"VeL$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8sha256p14|]jը mPI &}3/VeL$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQMsha256Qw%Rvj?;*9WqńVeL$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Ysha256+ .}jeaZyCD?vV eL$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEsha256_v<Rdn$!e/Q ]$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMm.room.join_rules!EhUxBjnSkVXpTrQlrn:localhost:8800m8Dm9@anon-20191002_181700-505:localhost:8800& e3Q ]$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4m.room.power_levels!EhUxBjnSkVXpTrQlrn:localhost:8800m4m6@anon-20191002_181700-505:localhost:8800 e'Q ]$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4m.room.member!EhUxBjnSkVXpTrQlrn:localhost:8800m2m2@anon-20191002_181700-505:localhost:8800 e'Q  ]$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQm.room.create!EhUxBjnSkVXpTrQlrn:localhost:8800m/Wm/@anon-20191002_181700-505:localhost:8800#e-Q ] $GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwpptsm.room.redaction!laUExtszUaoCpZoyEq:localhost:8800 m%qm)@anon-20191002_181700-504:localhost:8829!e)Q ] $FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0m.room.message!laUExtszUaoCpZoyEq:localhost:8800 m%^m'7@anon-20191002_181700-504:localhost:8829 e'Q ]$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8m.room.member!laUExtszUaoCpZoyEq:localhost:8800m"m#@anon-20191002_181700-504:localhost:8829e#Q ]$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQMm.room.test!laUExtszUaoCpZoyEq:localhost:8800mm@anon-20191002_181700-503:localhost:8800 e'Q ]$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Ym.room.member!laUExtszUaoCpZoyEq:localhost:8800m)m@anon-20191002_181700-503:localhost:8800,e?Q ]$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEm.room.history_visibility!laUExtszUaoCpZoyEq:localhost:8800mTm@anon-20191002_181700-503:localhost:8800$e/Q ]$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Qm.room.join_rules!laUExtszUaoCpZoyEq:localhost:8800mmQ@anon-20191002_181700-503:localhost:8800&e3Q ]$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkm.room.power_levels!laUExtszUaoCpZoyEq:localhost:8800mm@anon-20191002_181700-503:localhost:8800 e'Q ]$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4m.room.member!laUExtszUaoCpZoyEq:localhost:8800mam@anon-20191002_181700-503:localhost:8800 e'Q  ]$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Qm.room.create!laUExtszUaoCpZoyEq:localhost:8800m m (@anon-20191002_181700-503:localhost:8800 e'Q ]$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzkm.room.member!coGyOAgYnlBZAqznax:localhost:8800mm4@anon-20191002_181700-502:localhost:8829e#Q ]$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjEm.room.test!coGyOAgYnlBZAqznax:localhost:8800mm@anon-20191002_181700-501:localhost:8800 e'Q ]$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQm.room.member!coGyOAgYnlBZAqznax:localhost:8800m"m@anon-20191002_181700-501:localhost:8800,e?Q ]$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUm.room.history_visibility!coGyOAgYnlBZAqznax:localhost:8800mKmH@anon-20191002_181700-501:localhost:8800$e/Q ]$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAm.room.join_rules!coGyOAgYnlBZAqznax:localhost:8800mm@anon-20191002_181700-501:localhost:8800&e3Q ]$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4m.room.power_levels!coGyOAgYnlBZAqznax:localhost:8800mUm@anon-20191002_181700-501:localhost:8800 e'Q ]$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMm.room.member!coGyOAgYnlBZAqznax:localhost:8800mm@anon-20191002_181700-501:localhost:8800  e'Q  ]$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzEm.room.create!coGyOAgYnlBZAqznax:localhost:8800m@m@anon-20191002_181700-501:localhost:8800! e)Q ]$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTcm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mm@anon-20191002_181700-499:localhost:8800! e)Q ]$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blcm.room.message!ubmTdQFAhrhZkGULDx:localhost:8800mm@anon-20191002_181700-499:localhost:8800 X) { P % c8 Bi>g<}R' y N # e: w ! u J  so LTmqFk@D*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ *Q!hegUPDZCEEmBhsNJJR:localhost:8800 } *Q!hegUPDZCEEmBhsNJJR:localhost:8800 | *Q!hnQOBexFYpvJntEChZ:localhost:8800B*Q!hnQOBexFYpvJntEChZ:localhost:8800A*Q!hnQOBexFYpvJntEChZ:localhost:8800@*Q!hWHyATwKfuznrqTiyu:localhost:8800\b*Q!hWHyATwKfuznrqTiyu:localhost:8800[a*Q!hWHyATwKfuznrqTiyu:localhost:8800Z`*Q!hWHyATwKfuznrqTiyu:localhost:8800Y_*Q!hWHyATwKfuznrqTiyu:localhost:8800X^*Q!hWHyATwKfuznrqTiyu:localhost:8800W]*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hnQOBexFYpvJntEChZ:localhost:8800C*Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!hNCwypIzdDZDVmCEfd:localhost:8800*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!hSzBsirdPWHtVjagXn:localhost:8800*Q!iKezIvJyjkNqKayFju:localhost:8800 k *Q!iKezIvJyjkNqKayFju:localhost:8800 j *Q!iKezIvJyjkNqKayFju:localhost:8800 i *Q!iKezIvJyjkNqKayFju:localhost:8800 h *Q!hnQOBexFYpvJntEChZ:localhost:8800D*Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!iKezIvJyjkNqKayFju:localhost:8800 q *Q!iKezIvJyjkNqKayFju:localhost:8800 p *Q!iKezIvJyjkNqKayFju:localhost:8800 o *Q!iKezIvJyjkNqKayFju:localhost:8800 n *Q!iKezIvJyjkNqKayFju:localhost:8800 m *Q!iKezIvJyjkNqKayFju:localhost:8800 l *Q!hegUPDZCEEmBhsNJJR:localhost:8800  *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 V*Q!hnQOBexFYpvJntEChZ:localhost:8800?*Q!hnQOBexFYpvJntEChZ:localhost:8800>*Q!hgjYwwwjWJNgwrzOto:localhost:8800`d*Q!hgjYwwwjWJNgwrzOto:localhost:8800_c*Q!hgjYwwwjWJNgwrzOto:localhost:8800^b*Q!hgjYwwwjWJNgwrzOto:localhost:8800]a*Q!hgjYwwwjWJNgwrzOto:localhost:8800\`*Q!hgjYwwwjWJNgwrzOto:localhost:8800[_*Q!hgjYwwwjWJNgwrzOto:localhost:8800Z^*Q!hgjYwwwjWJNgwrzOto:localhost:8800Y]*Q!hgjYwwwjWJNgwrzOto:localhost:8800X\*Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!hgjYwwwjWJNgwrzOto:localhost:8800W[*Q!hgjYwwwjWJNgwrzOto:localhost:8800VZ*Q!hZuwenlFDapIPBOyfi:localhost:8800z*Q!hZuwenlFDapIPBOyfi:localhost:8800y*Q!hZuwenlFDapIPBOyfi:localhost:8800x~*Q!hZuwenlFDapIPBOyfi:localhost:8800w}*Q!hZuwenlFDapIPBOyfi:localhost:8800v|*Q!hZuwenlFDapIPBOyfi:localhost:8800u{*Q!hegUPDZCEEmBhsNJJR:localhost:8800 { *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hYPSaMPGsLnvYSmwhg:localhost:880006*Q!hYPSaMPGsLnvYSmwhg:localhost:8800/5*Q!hYPSaMPGsLnvYSmwhg:localhost:8800(.*Q!hYPSaMPGsLnvYSmwhg:localhost:8800'-*Q!hYPSaMPGsLnvYSmwhg:localhost:8800&,*Q!hYPSaMPGsLnvYSmwhg:localhost:8800%+*Q!hYPSaMPGsLnvYSmwhg:localhost:8800$**Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hrhDJbmXvXBizKoiiK:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800 *Q!hGsPmWXboxZZtOlsxY:localhost:8800  eQa$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2704}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA"], "type": "m.room.history_visibility", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042870859, "hashes": {"sha256": "CZIJY8SjZW7Rvy3rlfwwJ88AYG7QfYTcnCOn72C+jPE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mRVnTlGZ0kRZnjMsl+avhWTtqe/rLWVXwJ3js4xmMxUW8wzCpSobloHQdxBHPZbb0wmV6AcY+icUw3g4gmqsBw"}}, "unsigned": {"age_ts": 1570042870859}}teQau$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2703}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4"], "type": "m.room.join_rules", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042870002, "hashes": {"sha256": "mpiFcM7cLN41PhXL/K+qwRQmMNj3saOIK14Gd8TtTt8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KQ89rrN7Sy1BHr5u6yy2QKHrNtXxMTzmd6taRjJ+jtdmIj9qouHXjgxFqGqOSOg1Ol4a/YgbEMERxH6RCdSnDw"}}, "unsigned": {"age_ts": 1570042870002}}keQac$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2702}{"auth_events": ["$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "type": "m.room.power_levels", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"users": {"@anon-20191002_181700-501:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042869077, "hashes": {"sha256": "SMpgsD5yHGDP1TN2atsU7WljGXUagBUbtORS8glli2U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PxyB0qL8pNSe7+/Opwg+UG50zXfgqs3qpXWr0SIB5tCc0mD1bwrRIrU2bkcHLGOzNNhByMJiDc7paLhXRXz7CQ"}}, "unsigned": {"age_ts": 1570042869077}}  L# w E  } K  ) Q U W %  ] +c1i7[o= uC{IOj8p1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYm1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns`1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ;1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y41e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q w1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s :1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAR1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc v1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQW1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkx1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w-1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs 1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs_1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI #1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IN1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU n1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 ~1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8B1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gy1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k"1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYn1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o051e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg&1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA pc1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog j1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61Ez1e$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg (% i  r  ' tw 25Zqz}2 Q']e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMj Q3 e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_access$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkpQ? e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibility$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIhQ/ e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rules$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YjQ3 e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE Q']e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUdQ' e !RDEAXrqXQizuhCUFPq:localhost:8800m.room.create$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 Q']e !mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQsQ))e !mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4pQ? e !mogJVPxghalmKbblUq:localhost:8800m.room.history_visibility$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYhQ/ e !mogJVPxghalmKbblUq:localhost:8800m.room.join_rules$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPomQ9 e !mogJVPxghalmKbblUq:localhost:8800m.room.canonical_alias$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYj~Q3 e !mogJVPxghalmKbblUq:localhost:8800m.room.power_levels$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 }Q']e !mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4d|Q' e !mogJVPxghalmKbblUq:localhost:8800m.room.create$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYp{Q? e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIhzQ/ e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rules$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMjyQ3 e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 xQ']e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4dwQ' e !EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ8vQ']ee !laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y uQ']e !laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YptQ? e !laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibility$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEhsQ/ e !laUExtszUaoCpZoyEq:localhost:8800m.room.join_rules$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QjrQ3 e !laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk qQ']e !laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4dpQ' e !laUExtszUaoCpZoyEq:localhost:8800m.room.create$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q8oQ']ee !coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ nQ']e !coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQpmQ? e !coGyOAgYnlBZAqznax:localhost:8800m.room.history_visibility$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJUhlQ/ e !coGyOAgYnlBZAqznax:localhost:8800m.room.join_rules$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkAjkQ3 e !coGyOAgYnlBZAqznax:localhost:8800m.room.power_levels$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 a} { y w u sqomkigeca~GeeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~FeeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800~EeeQ$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800~DeeQ$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~CeeQ$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~BeeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800~AeeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~@eeQ$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~?eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~>eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800~=eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~<eeQ$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~;eeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~:eeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~9eeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~8eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~7eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~6eeQ$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800~5eeQ$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800~4eeQ$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~3eeQ$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800~2eeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800~1eeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~0eeQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800~/eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~.eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800~-eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~,eeQ$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800~+eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM!coGyOAgYnlBZAqznax:localhost:8800~*eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800~)eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4!coGyOAgYnlBZAqznax:localhost:8800 J JMeQc%$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800{"outlier": false, "stream_ordering": 2707}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "aLRqAfcoC0iR63Mx98hijFT+m6/65ptxFMU8jY1lY0E"}, "origin": "localhost:8829", "origin_server_ts": 1570042873559, "prev_events": ["$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE"], "prev_state": [], "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-502:localhost:8829", "state_key": "@anon-20191002_181700-502:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AJxNLhk/XigA7jUatMF8hdXpOphheJYtdwHLm/rSiJZqtWGl9F7l19IM3u8fG4vtJzQZ4yLHbpWkekjsJhYKCg"}, "localhost:8829": {"ed25519:a_UxIG": "HBrMhm9WAeCFr/dWp5HBYwQkdow5nPS9TCkVbsdyCquzGEXjDjawkcqcE+uyOInjRRJc3vlx7DLXNQ1XoOfdBw"}}, "unsigned": {"age": 96, "replaces_state": "$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ"}}HeQa$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjE!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2706}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ"], "type": "m.room.test", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042873102, "hashes": {"sha256": "nphwcEBl/Cav5J6RxQUM/T1a5lsjopyZOJz9FDRvlSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EN5xv+IabZ4NtKcl+ZTyvdAWmMT8YdEf9edjL7BSlNZkts910S6qc0rpCCPdeZ463vbhKUkviAtfZFvCXTkCBg"}}, "unsigned": {"age_ts": 1570042873102}}eQa7$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQ!coGyOAgYnlBZAqznax:localhost:8800{"token_id": 500, "stream_ordering": 2705}{"auth_events": ["$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4", "$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE", "$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA", "$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM"], "prev_events": ["$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU"], "type": "m.room.member", "room_id": "!coGyOAgYnlBZAqznax:localhost:8800", "sender": "@anon-20191002_181700-501:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-502", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-502:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042872354, "hashes": {"sha256": "bOtlK1VvOKIrv1YOMuep5vFxhZ+6qiGZ3DA2ash6Y1U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FjjatHI7lul1S4sODExrs9WWn61LMk5fwu9Iq1hy9K2feDUk4H9Y/Vp2fZ/2f3ZOPD9zd8tGpsr88Uy0EUl+BQ"}, "localhost:8829": {"ed25519:a_UxIG": "CswnaQ0NDyY/bY+YETFnYAFdy+WALTzSfiapw+QanboOf9yP7M0cVsdoSHz9ZiO9OhMBUa3E8FQqWY/ngiG2Aw"}}, "unsigned": {"age_ts": 1570042872354, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-501:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-501:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-501", "avatar_url": null}, "sender": "@anon-20191002_181700-501:localhost:8800"}]}} !rq | 4  ! & JUz)49]bmri_Q3 e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg ^Q']e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAc]Q' e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI \Q']e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM [Q']e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMiZQ3 e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_access$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkoYQ? e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibility$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIgXQ/ e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rules$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YiWQ3 e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE VQ']e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUcUQ' e!RDEAXrqXQizuhCUFPq:localhost:8800m.room.create$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 TQ']e!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQrSQ))e!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4oRQ? e!mogJVPxghalmKbblUq:localhost:8800m.room.history_visibility$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYgQQ/ e!mogJVPxghalmKbblUq:localhost:8800m.room.join_rules$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPolPQ9 e!mogJVPxghalmKbblUq:localhost:8800m.room.canonical_alias$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYiOQ3 e!mogJVPxghalmKbblUq:localhost:8800m.room.power_levels$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8 NQ']e!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4cMQ' e!mogJVPxghalmKbblUq:localhost:8800m.room.create$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiYoLQ? e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OIgKQ/ e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rules$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmMiJQ3 e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4 IQ']e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4cHQ' e!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.create$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ GQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 FQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$SgLGdr23vUTR_MVNRKilawNMw4EQA3_jqoAaPydR1P8 EQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3YoDQ? e!laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibility$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAEgCQ/ e!laUExtszUaoCpZoyEq:localhost:8800m.room.join_rules$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_QiBQ3 e!laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk AQ']e!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4c@Q' e!laUExtszUaoCpZoyEq:localhost:8800m.room.create$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q ?Q']e!coGyOAgYnlBZAqznax:localhost:8800m.room.member@anon-20191002_181700-502:localhost:8829$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk DYp> c1D V} K |S! P  '  % > 8  8  ]pj  + v] + v DYp> j21e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k"1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 "1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwo1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8 1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI >1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTgk1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM 1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjor0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcn0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4=1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM^1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0K1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd41e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0j11e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1e$wwDwuXwuJ7RdAJMlHHrWsBYO5oy0rA8g6GtCoqWFjko31e$ww9HfeaZx2tzRAiCUNCFnky8_CLniLMa_KzWTST5fAE !1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk }1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 i1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw 1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukj1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY 1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C2001e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sO1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4i0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk<1e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE 11e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg  J21e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 !1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o 21e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx01e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo T1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ Sd1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE A1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw (1e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU t1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 s1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g U1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 2   *t eQau$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2711}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk"], "type": "m.room.join_rules", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042877319, "hashes": {"sha256": "0O42x2oDl6mhX9RR2bjRqPzreXx/Ls+YZgHiTKAEOcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RoxAvnpznmD33Ka8Lj3PAfIb/K55bDg3LNeZhsxR1N7Gv7YITl9xc5ZwHCGBS1/zEVvhSFmCQkFKFZm47ovnBg"}}, "unsigned": {"age_ts": 1570042877319}}k eQac$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2710}{"auth_events": ["$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "type": "m.room.power_levels", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"users": {"@anon-20191002_181700-503:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042876638, "hashes": {"sha256": "+4uLFpVswArwyv0KHNs8rRsHII/51BKytTqe+cw30v8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mvo/Qwrw25qcyPap61rw/LVXmXPb7aVMcQ/N0LMhkcD5McQ1flWa77SQcmfWP9NJD+qAs2C2VX3YhpMDbgM5Bw"}}, "unsigned": {"age_ts": 1570042876638}}v eQay$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2709}{"auth_events": ["$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q"], "prev_events": ["$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q"], "type": "m.room.member", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-503", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-503:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042876001, "hashes": {"sha256": "Z70g3T1DMbldptYuduF8BslMBszz+Ma6/TO28W/U0VI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vNAFJbujBJxrM0MlilGNp29iT6d+U7SFk677VdgHPHz7IGxfo/EsIL1prbYDOyxrbgWHY74dkbFnFRbtsE22AQ"}}, "unsigned": {"age_ts": 1570042876001}}i eQa_$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2708}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-503:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042875084, "hashes": {"sha256": "wFu/Rork/8gqJIEtQqf1zho38Fi5/BNZyhPXWMTLiPQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ypESNoTs//Ty1Cw9zQWjV4+9o0zncK6rrLUuG+laYkh94WwEHcwgijMRUZdR7Houhty3NElaLlBnpXtWB2mtBQ"}}, "unsigned": {"age_ts": 1570042875084}} Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1De$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM781Ce$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm81Be$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk1Ae$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o1@e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK81?e$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ1>e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s1=e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE1<e$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC81;e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi81:e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI19e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg18e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms17e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y416e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk15e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf414e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U13e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg12e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM411e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y410e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE1/e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU1.e$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ1-e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ1,e$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI1+e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC41*e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ1)e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY1(e$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg1'e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw1&e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM1%e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1$e$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho1#e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1"e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1!e$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg1 e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI1e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw1e$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN01e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ601e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF01e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1 e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81 e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct41 e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY1 e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI1 e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk1e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk41e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo41e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr01e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S81e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y1~e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE1}e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1|e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk1{e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId41ze$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q  4 h 6ma[a@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSWVTXmNTMGxrdkVuLSN3UAowMDJmc2lnbmF0dXJlILiirKoHBDR0AF0EGpDJ2hik8TS2kid2V9Wyz8PDK3N3Cg127.0.0.1+d]c@anon-20191002_181700-531:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88Ao127.0.0.1a[a@anon-20191002_181700-53:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRGNyI2RHZVdfPXgxMmRPSAowMDJmc2lnbmF0dXJlICdrO5YfR0rOG-1uCgLG91mgocOY6hRHDoyFxBBlT9VDCg127.0.0.1*d]c@anon-20191002_181700-539:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQo127.0.0.1d]c@anon-20191002_181700-538:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAo127.0.0.1d]c@anon-20191002_181700-537:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAo127.0.0.1d]c@anon-20191002_181700-536:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG44ZXZhVmlpTmw4RXZVcDkKMDAyZnNpZ25hdHVyZSCJxE2NCLxCR97piOWjvXRyqFAiHMKXYXO9_HBtg3UnTQo127.0.0.1d]c@anon-20191002_181700-535:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQo127.0.0.1d]c@anon-20191002_181700-534:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgo127.0.0.1d]c@anon-20191002_181700-533:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAo127.0.0.1d]c@anon-20191002_181700-532:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwo127.0.0.1  }rg\QF;0%uj_TI>3( x m b W L A 6 +  { p e Z O D 9 . #   ~ s h ] R G < 1 &    t h \ P D 8 ,   x l ` T H < 0 $  |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pd m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m} m| m{ mz my mx mw mv mu mt ms mr mq mp mo mn mm ml mk mj mi mh mg mf me md mc mb ma m` m_ m^ m] m\ m[ mZ mY mX mW mV mU mT mS mR mQ mP mO mN mM mL mK mJ mI mH mG mF mE mD mC mB mA m@ m? m> m= m< m; m: m9 m8 m7 m6 m5 m4 m3 m2 m1 m0 m/ m. m- m, m+ m* m) m( m' m& m% m$ m# m" m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m  m P (|pdXL@4(th\   th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4PD8,  x l ` T H < 0 $  m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m} m| m{ mz my mx mw mv mu mt ms mr mq mp mo mn mm ml mk mj mi mh mg mf me md mc mb ma m` m_ m^ m] m\ m[ mZ mY mX mW mV mU mT mS mR mQ mP mO mN mM mL mK mJ mI mH mG mF mE mD mC mB mA m@ m? m> m= m< m; m: m9 m8 m7 m6 m5 m4 m3 m2 m1 m0 m/ m th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th m m m m m m m m m m m m m m m m m m. m- m, m+ m* m) m( m' m& m% m$ m# m" m! m m m m m m m m m m m m m m m m m m m m m JB\*|J |P V$b i \7 V  p $>>0  P p     v *D J V$*21e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos<1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSsZ1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A "1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A !1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ b1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 41e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 ~1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcM1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ*0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwN1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v80e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk m1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk x1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg 1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow \1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUR1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM #1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 A1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo 21e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc ~1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcp1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g21e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMd  w^HeQa$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2714}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y"], "type": "m.room.test", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042879995, "hashes": {"sha256": "Nndcepndn03bVMydNDFINttvq67F52p1RQg48L2jZWc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V7I/p/aucZS1ejZ2eFsVP7R1SEN/Y/jLx+gXCc378/ko1UJSw6GwOUYrg4DYcafGKz6bAwqLxUNg/NhxyiVtBw"}}, "unsigned": {"age_ts": 1570042879995}}eQa7$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2713}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE"], "type": "m.room.member", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-504", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-504:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042879273, "hashes": {"sha256": "Xg4CYdap8kR/hyC/uwyELCHbon/HPXTL/YLJoKDS0P0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vTAa94lb3WJr84nfSzr9pCOx0wI90dvWwshTp1hlU18aPGKeE/3DYumWuCvdRmXQm0spgo7PxljgXR0pX34Aw"}, "localhost:8829": {"ed25519:a_UxIG": "IDBNZMIQIoqNxls8pW1/HS++0irGsnDewmX4XfvfASAa/PyGWWy3OfNh7okzuBH1H4F6x9aOjJu4XuXCowqgDQ"}}, "unsigned": {"age_ts": 1570042879273, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-503:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-503:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-503", "avatar_url": null}, "sender": "@anon-20191002_181700-503:localhost:8800"}]}} eQa$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE!laUExtszUaoCpZoyEq:localhost:8800{"token_id": 501, "stream_ordering": 2712}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId4"], "prev_events": ["$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q"], "type": "m.room.history_visibility", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-503:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042878036, "hashes": {"sha256": "77B4pB8lAHV7HMI9MC8GbFsdfpCpki389ACMdYHjmCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FDchsPvw45bkeyk45gB6SHyEObWdm/9mNTsREpqF4mdbeSV3Ux0I2WdqBL+U99IAJjGyE3MR131cyM0BMq/7CQ"}}, "unsigned": {"age_ts": 1570042878036}} @xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xph`XPH@80( xph`XPH@ | { z y x w } v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X  W ~ V } U | T { S z R y Q x P w O v N u M t L s K ;  :  9  8  7  6  5  4  3  2  1  0  /  -  ,  +  *  )  (  '  %  $  #  "  !                                                                                                                                                           ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L r J q I p H o G n F m E l D k C j B i A h @ g ? f > d = c < b ; a : ` 9 _ 8 ^ 7 ] 6 \ 5 [ 4 Z 3 Y 2 X 1 W 0 V / U . T - S , R + Q * P ) O ( N ' L & J % I $ G # F " E ! D  C  B  A  @  ?  >  =  <  K J I H G F E D C B A @ ? > = < ; : 9 8 7 6~ 5} 4| 3{ 2{ 1{ 0y /y .x -w ,v +u *t )s (q 'q &p %o $n #m "l !k k k k k k k k k k k k k j i h g f e e c b b a ` _ ^ ] \ \ Z Z Y X W V U T S S R Q Q P O N M L K K J J I H G F E D C ; H(;ieQa_$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2718}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-505:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042883927, "hashes": {"sha256": "HwNEHo3ETDD+GFQFNVwmqUf6MxiDgRL6Z2kHfsh/b+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Bfc8czsooM5PEhzGQev51bVrmakP77gLzPrxgnOHaGRfvDbDAgU+JyzscpKKMyC405X3sbI6JhEK5uJKQ6eCw"}}, "unsigned": {"age_ts": 1570042883927}}&eQ$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts!laUExtszUaoCpZoyEq:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 2717}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8"], "content": {}, "depth": 10, "hashes": {"sha256": "WdCF4CF04BM2XxmRhexf/v6NBvnz//rS6r/uCj248Ww"}, "origin": "localhost:8829", "origin_server_ts": 1570042881393, "prev_events": ["$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0"], "prev_state": [], "redacts": "$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0", "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-504:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "25oqrVR/lxWZtooinHKNbSrpu4lVbEQN32sjZIC8c+tG/cd/ULPmjdXsQnsdgixlbLLdU25P57OoPqEUteSVAQ"}}, "unsigned": {"age_ts": 1570042881393}}&LeQc#$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0!laUExtszUaoCpZoyEq:localhost:8800{"outlier": false, "stream_ordering": 2716}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8"], "content": {}, "depth": 9, "hashes": {"sha256": "XWAleDRNVmz/FYizWijeaMmgCDVNxRdp56An+dTOh6M"}, "origin": "localhost:8829", "origin_server_ts": 1570042881374, "prev_events": ["$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8"], "prev_state": [], "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-504:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "wKnugZlyJ1GiILHcANW5kpPrDqoobl41CLEVy7LFhSdoE6849RhK7k/9GkTh3Yv5vyXSfOwLCPz0sCKtW7hQBQ"}}, "unsigned": {"age_ts": 1570042881374}}4eQ1#$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8!laUExtszUaoCpZoyEq:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2715}{"auth_events": ["$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk", "$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q", "$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-504", "membership": "join"}, "depth": 8, "hashes": {"sha256": "SyyKs/AmbOwRf9CnufwaKXkQkXBS9ou4IqP7TDDcLw0"}, "origin": "localhost:8829", "origin_server_ts": 1570042880698, "prev_events": ["$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM"], "prev_state": [], "room_id": "!laUExtszUaoCpZoyEq:localhost:8800", "sender": "@anon-20191002_181700-504:localhost:8829", "state_key": "@anon-20191002_181700-504:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fbp+i7ZkCTndSiyP0wOfP8904y9c3qEPWk/3WGIBZ0DtoSBluSEV9qlKG1/40HKKcjt0JIe+haNIBwJRLhRxCA"}, "localhost:8829": {"ed25519:a_UxIG": "pdUZvbHT1Mj43jXNNmfXi0RD5YkuaCNtQUr+kcGtMHFgAMYFQgqBMPhtsMQBpqPynTog9VJmRsJSuPYiTKsdCw"}}, "unsigned": {"age": 125, "replaces_state": "$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y"}} IqFoDmBi>k@T)}R' { P % y N # w L ! u J  s H mBsHqFoD*Q!wIhMbfQzYbJobPdwyi:localhost:8800~*Q!wIhMbfQzYbJobPdwyi:localhost:8800*Q!wCsDjKBtuUbrmZgjsB:localhost:8800>0*Q!wCsDjKBtuUbrmZgjsB:localhost:8800=/*Q!wCsDjKBtuUbrmZgjsB:localhost:8800<.*Q!wCsDjKBtuUbrmZgjsB:localhost:8800;-*Q!wCsDjKBtuUbrmZgjsB:localhost:8800:,*Q!wIhMbfQzYbJobPdwyi:localhost:8800}*Q!wIhMbfQzYbJobPdwyi:localhost:8800|~*Q!wIhMbfQzYbJobPdwyi:localhost:8800{}*Q!wIhMbfQzYbJobPdwyi:localhost:8800z|*Q!wBkUBAjOznOyxrLchl:localhost:8800 5*Q!wBkUBAjOznOyxrLchl:localhost:8800 4*Q!wBkUBAjOznOyxrLchl:localhost:8800 3*Q!wBkUBAjOznOyxrLchl:localhost:8800 2*Q!wBkUBAjOznOyxrLchl:localhost:8800 1*Q!wBkUBAjOznOyxrLchl:localhost:8800 0*Q!wBkUBAjOznOyxrLchl:localhost:8800 /*Q!wBkUBAjOznOyxrLchl:localhost:8800 .*Q!wBkUBAjOznOyxrLchl:localhost:8800 -*Q!wBkUBAjOznOyxrLchl:localhost:8800 ,*Q!wBBQYEPjQGnoAzDpEu:localhost:8800  !*Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wBBQYEPjQGnoAzDpEu:localhost:8800 *Q!wAyboOFgsOPwkmgMAI:localhost:8800?C*Q!wAyboOFgsOPwkmgMAI:localhost:8800>B*Q!wAyboOFgsOPwkmgMAI:localhost:8800=A*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!wnriPzXkIMmdTNoJKU:localhost:8800*Q!whuymJoLfUdkFdxoyE:localhost:8800 8 t*Q!whuymJoLfUdkFdxoyE:localhost:8800 7 s*Q!whuymJoLfUdkFdxoyE:localhost:8800 6 r*Q!whuymJoLfUdkFdxoyE:localhost:8800 5 q*Q!whuymJoLfUdkFdxoyE:localhost:8800 4 p*Q!whuymJoLfUdkFdxoyE:localhost:8800 3 o*Q!whuymJoLfUdkFdxoyE:localhost:8800 2 n*Q!whuymJoLfUdkFdxoyE:localhost:8800 1 m*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wUuodvgsmAJqKJUBCQ:localhost:8800*Q!wLitJYvgvNJzanSIvO:localhost:8800bh*Q!wLitJYvgvNJzanSIvO:localhost:8800ag*Q!wLitJYvgvNJzanSIvO:localhost:8800]c*Q!wLitJYvgvNJzanSIvO:localhost:8800^d*Q!wLitJYvgvNJzanSIvO:localhost:8800`f*Q!wLitJYvgvNJzanSIvO:localhost:8800_e WcqFoe:DmBk@i>g<T)}R' { P % y s H c N # w L ! u J  V *Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rpVYLTJGcFNdGzFzXj:localhost:8800 v v*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 u u*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 t t*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 s s*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 r r*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!rWGwSSefrZzQYCYFHs:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sBcwyPoXKgnSGVTjNR:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sJnuQYOyruhUpXDsLY:localhost:8800*Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sHRHoXzYrrPSlWBkoh:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!sAWFpvSUPExZLVcPEd:localhost:8800 *Q!rwUuVBrftGHDBOlEZm:localhost:8800NN*Q!rwUuVBrftGHDBOlEZm:localhost:8800MM*Q!rwUuVBrftGHDBOlEZm:localhost:8800LL*Q!rwUuVBrftGHDBOlEZm:localhost:8800KK*Q!rwUuVBrftGHDBOlEZm:localhost:8800JJ*Q!rwUuVBrftGHDBOlEZm:localhost:8800II*Q!rwUuVBrftGHDBOlEZm:localhost:8800HH*Q!rwUuVBrftGHDBOlEZm:localhost:8800GG*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 { {*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 z z*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 y y*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 x x*Q!rpVYLTJGcFNdGzFzXj:localhost:8800 w w j(&?^:!: S x / N g  =VonYx)<IjjL ] @anon-20191002_181700-533:localhost:8800offlinemګJm0\mګNFF ]I@anon-20191002_181700-484:localhost:8800offlinemmsFB ]C@anon-20191002_181700-493:localhost:8800offlinemxEmxEF@ ]A@anon-20191002_181700-491:localhost:8800offlinemTfmTfF> ]?@anon-20191002_181700-481:localhost:8829offlinem׈mIF< ]=@anon-20191002_181700-483:localhost:8829offlinem׫tm"F; ]<@anon-20191002_181700-489:localhost:8829offlinem'mL9 ] :@anon-20191002_181700-479:localhost:8800offlinemimmj!L7 ] 8@anon-20191002_181700-477:localhost:8800offlinemHmtmI-F6 ]7@anon-20191002_181700-482:localhost:8800offlinemׯ3mׯ3L5 ] 6@anon-20191002_181700-475:localhost:8800offlinem)m׭m(F1 ]6@anon-20191002_181700-469:localhost:8800offlinemհmĞL ] @anon-20191002_181700-531:localhost:8800offlinemڑm LmڑF} ]~@anon-20191002_181700-522:localhost:8829offlinem=mOL| ] }@anon-20191002_181700-520:localhost:8800offlinemdRm<meL{ ] }@anon-20191002_181700-521:localhost:8800offlinem@m<meLx ] y@anon-20191002_181700-518:localhost:8800offlinem9mڻ,m;Fr ]v@anon-20191002_181700-514:localhost:8800offlinem0mFm ]n@anon-20191002_181700-513:localhost:8829offlinemmEFj ]k@anon-20191002_181700-519:localhost:8829offlinem8Jm:Fh ]i@anon-20191002_181700-511:localhost:8829offlinem٫m2TLg ] h@anon-20191002_181700-509:localhost:8800offlinemيpmmيLf ] g@anon-20191002_181700-507:localhost:8800offlinemd mmdnFd ]e@anon-20191002_181700-512:localhost:8800offlinemѓmѓLc ] d@anon-20191002_181700-503:localhost:8800offlinem*amm-2Lb ] d@anon-20191002_181700-505:localhost:8800offlinemCJmmBGF` ]a@anon-20191002_181700-510:localhost:8800offlinemٯmٯF^ ]_@anon-20191002_181700-498:localhost:8829offlinemؼ.mٕF] ]^@anon-20191002_181700-508:localhost:8800offlinemًmًFZ ]\@anon-20191002_181700-499:localhost:8800offlinemm1FW ]X@anon-20191002_181700-496:localhost:8829offlinemؗ'moFV ]W@anon-20191002_181700-506:localhost:8800offlineme<me ? v E  w }9Q K  Rq *   X &  _ -e3]W%}1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 M1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 #1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcP1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs @1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE :1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcx1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74v1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0I1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM81e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE 11e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo "1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk 21e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM .1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw W1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk ~1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI R1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIn1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A51e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo \1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUt1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcA1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc]1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4w1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU>1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w01e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsj1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY}1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cH1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA[1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk31e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7830e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4>1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg  eQa$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2722}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM"], "type": "m.room.history_visibility", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042886871, "hashes": {"sha256": "Ac2QBnt5zA/JYBNHecF0DHRAhjzY2HLlM1O0UxSE3GU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7BX3IW8e0yGWve8sctRP/dQFyy6l3/ABeQEl9zpznsPhxOc5cBZg7hqby6sOhVw2WdDrJWzTzXpUqE+AqF6kAQ"}}, "unsigned": {"age_ts": 1570042886871}}teQau$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2721}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4"], "type": "m.room.join_rules", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042886212, "hashes": {"sha256": "k8VZ+JhKaIAUNKRRr62P3oRRVN1YaR7lHpPzhHqSqCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8GZVEOE8+uw8sdFynHrbeyiDUNDZM7iw46/tePcl0x0iV6iezdHeBVHz7HduHMvyBfEVsfXhxqTyrSBPZf9WCg"}}, "unsigned": {"age_ts": 1570042886212}}keQac$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2720}{"auth_events": ["$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "type": "m.room.power_levels", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"users": {"@anon-20191002_181700-505:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042885355, "hashes": {"sha256": "d+DAbnHMfi5X6M1wOha5IhFmhXsmR+Wleq6YgEbj2YQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kWPcpA+Ryp37mByqa/ZzVH5uO/JAkjONue1H7a4KfqpKbKiPfICMLm7DGJpdR+ddqFVTSkXMil/7fZZqQLAXCA"}}, "unsigned": {"age_ts": 1570042885355}}veQay$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2719}{"auth_events": ["$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ"], "prev_events": ["$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ"], "type": "m.room.member", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-505", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-505:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042884739, "hashes": {"sha256": "V5YnqxgW3546JUE7g2wH7bNLjskKr542HRtFNefft2g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8TuwZs97vzP2tXQhtRAutlboJ4Zn81Z5hm9V4dUfjDLKJDEqLq3IIoggtqvZ7nU0HStDV0gDRN8J2tiy755ABQ"}}, "unsigned": {"age_ts": 1570042884739}} LMj8E kp> ? v E  w }9Q K  Rq *   X &  _ -e3]W%}1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 K1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 #1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc 0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcP1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs @1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUY1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE :1e$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXcx1e$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74v1e$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0I1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM81e$sWbLLvGI-MOo5n8g4j8Tou6zUS8YxMBjN_Y3HLTC-tY1e$sUho7geZlyuDOzmegLIFgJYK43aSvKvw4lW2AHgOBxE 11e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4E 1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo "1e$sXUrTX3GSyHGPWLaidMcD7f89XKsVTfpTa6TosZ7Vsk 21e$suqCovcqrgFLavX1cIJbhKEC+/EcEa8Qz7rPmMITNpM .1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI 1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw W1e$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk ~1e$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc 1e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI R1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIh1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A/1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo \1e$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQUt1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL81e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVcA1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc]1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4w1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU>1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1w01e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw81e$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok1e$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g0e$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPsj1e$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY}1e$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6cH1e$sv5qXdGCP9IazEWxkEsEvRvRX1BiWXQUrva1kReNobA[1e$su8P_F3Qzd7iUdQVXcXzTLYI4CyLtXFpd2sqeJ5eilk31e$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD7830e$srHU4mfHOnnrOW2Lq6skEqrYAI8hHaB1WdLM2e9_Vl81e$soY2OC5kgv-z3vJGEmIOFcj1F536P4SVN0mbw8TNy-4>1e$snWgCnaCODrGikwWpG8uILDo9ShpAAbkLp17sDV5ZqI1e$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc1e$slyaFj0ecvUTRI1h2xel5PnSzCspJ2pi9mUiZqkLanA1e$sknIRdXdPg7XmY4G6vNldbhNU0vpn0vnNd4VlwXPsos1e$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII1e$seaahHGf7y_bMYIiNBm1-okMR0eH4v6L0V8mBEh4yDo1e$sdn_ZetjxVIIjm2XytmhOCDb9DlXcVZhHHSiHzODcFs1e$sYdKgsUFeypt9vql_i0d1CNld4OKG4IQdzoYaFG2qnk1e$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU1e$sX6d3hYayKdz0w41__ATNhyseRjfD2FpGzc9s7U15Vc1e$sqlabGYU7aL5EuBy3j89zCwoyYZamsHZ-0E2vpjexDg1e$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg a} { y w u sqomkigeca~feeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~eeeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~deeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~ceeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~beeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~aeeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~`eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~_eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~^eeQ$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~]eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800~\eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~[eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~ZeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~YeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~XeeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~WeeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~VeeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~UeeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~TeeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~SeeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~ReeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~QeeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~PeeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~OeeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800~NeeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800~MeeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~LeeQ$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800~KeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800~JeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ!EhUxBjnSkVXpTrQlrn:localhost:8800~IeeQ$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800~HeeQ$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800 _B181700201910023256789301236789401234567895012345 678 9601 2357897013456789801234567899012345789400134578911234567892012456789301234567894012345678950123468960123456789713456789801234689901  /BveQay$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2726}{"auth_events": ["$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY"], "prev_events": ["$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY"], "type": "m.room.member", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-506", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-506:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042891292, "hashes": {"sha256": "W07ywRZxPYtMvcJ2MoOiS9O8PS36BiCY7hY/npNfiIQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d1dCq+USht9NJ03z5p2DUCyfCJpytlpZZNwjxyu2B9LQ3vFfK4/dH+ua7syxjQPKj7GRFae0qHasQzVjiD5UAA"}}, "unsigned": {"age_ts": 1570042891292}}ieQa_$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2725}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-506:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042890518, "hashes": {"sha256": "QqPCS9+IkPH/AfulnJTr0mnQQS4Qru6Evex5SU2xegU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g+voDxfmeHuPkNhuZ+4SNbEp/l8fW6LEHY0NnVfVbr4jDx99aahWfpTmNHpj+jsfdIFsCx8kdGRBAa151JzDBw"}}, "unsigned": {"age_ts": 1570042890518}}eQk$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "txn_id": "516", "stream_ordering": 2724}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk"], "type": "m.room.message", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042888804, "hashes": {"sha256": "cS5CBfwtfve6dsJZ51zZVC7mDAoGLc3Iz+kjIoBIxtE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BGK21GjsGIsYzxf4/LwpfmGvP1Ii0QHHpFj4IHdp6N1xGo+R8319vXh9n52BwZ1YsUz3H6uNGwIXbsbFdSMMDg"}}, "unsigned": {"age_ts": 1570042888804}}HeQa$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk!EhUxBjnSkVXpTrQlrn:localhost:8800{"token_id": 502, "stream_ordering": 2723}{"auth_events": ["$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4", "$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ", "$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4"], "prev_events": ["$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI"], "type": "m.room.test", "room_id": "!EhUxBjnSkVXpTrQlrn:localhost:8800", "sender": "@anon-20191002_181700-505:localhost:8800", "content": {}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042888186, "hashes": {"sha256": "tNLSXksLYmA5+bhjK5IYcEqjiBzV/l0Yix16vefpM2o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "viT72vCX+g6puamjPIuRB+wF0ch1ACtsrL/+dcmcJCiP/3wXpfin6phA7TFf0aZLAFQI1AhNv87uR+kIQqMrCA"}}, "unsigned": {"age_ts": 1570042888186}} ~z v r n j fb^ZVRNJFHeeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800GeeQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800FeeQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800EeeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM!vBvlJEXUSQKUYmsKcO:localhost:8800DeeQ$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800CeeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800BeeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800AeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800@eeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800?eeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800>eeQ$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800=eeQ$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800<eeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800;eeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0!RDEAXrqXQizuhCUFPq:localhost:8800:eeQ$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:88009eeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:88008eeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:88007eeQ$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:88006eeQ$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:88005eeQ$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:88004eeQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:88003eeQ$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU!mogJVPxghalmKbblUq:localhost:88002eeQ$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:88001eeQ$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:88000eeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800/eeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800.eeQ$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800-eeQ$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800,eeQ$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800+eeQ$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk!EhUxBjnSkVXpTrQlrn:localhost:8800 %b< K O S W  [ _ cgkosw#{'QFeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0!vRmMcoJDeCupADwqac:localhost:8800QEeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0!fGkUEndqGrieltwbCh:localhost:8800QDeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ!atnRTMliktaVUhMVID:localhost:8800QCeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800QBeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800QAeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800Q@eQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800Q?eQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw!sHRHoXzYrrPSlWBkoh:localhost:8800Q>eQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800Q=eQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8!IlGJpjzrvvAFuwTAgo:localhost:8800Q<eQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800Q;eQ$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800Q:eQ$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw!RDEAXrqXQizuhCUFPq:localhost:8800Q8eQ$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOI!EhUxBjnSkVXpTrQlrn:localhost:8800Q7eQ$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts!laUExtszUaoCpZoyEq:localhost:8800Q6eQ$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzk!coGyOAgYnlBZAqznax:localhost:8800Q5eQ$-ZfUfGjCw0eaDx13A1ogGJry89YRCpjndfQU6s8XiTc!ubmTdQFAhrhZkGULDx:localhost:8800Q4eQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800Q3eQ$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4!iKezIvJyjkNqKayFju:localhost:8800Q2eQ$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4!DelfBAGvCrTXgNxmNV:localhost:8800Q1eQ$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI!kOmCTyiizHqfCJdhlR:localhost:8800Q0eQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800Q/eQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow!mvgUHEsfGqDkPQUvfG:localhost:8800Q.eQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800Q-eQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800Q,eQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800Q+eQ$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE!DqxFmsXPclgGqpSwdy:localhost:8800Q*eQ$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8!uqIEMXzdeNeXdJmuwh:localhost:8800Q)eQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800Q(eQ$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk!tLkhTnTgDjjAvscRkW:localhost:8800F'OQ$157004274411xArrT:localhost:8829!kAxKaIQhXTtGFWSUgr:localhost:8800E&MQ$15700427368TlZQs:localhost:8829!WhLedNwPGGGTtqeqam:localhost:8800G%QQ$1570042729241UUSiz:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800G$QQ$1570042718224MBWNJ:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800G#QQ$1570042709214PwhVu:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800G"QQ$1570042700204CxVfq:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800Q9eQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800 -RM H C > 9 4/*|%w rmhc TkQe!AoAvmnwMkhYBQsbCsL:localhost:8800$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xoTjQe!AoAvmnwMkhYBQsbCsL:localhost:8800$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUTiQe!AoAvmnwMkhYBQsbCsL:localhost:8800$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0ThQe!AoAvmnwMkhYBQsbCsL:localhost:8800$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GETgQe!AoAvmnwMkhYBQsbCsL:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6OkTfQe!AoAvmnwMkhYBQsbCsL:localhost:8800$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78TeQe!IlGJpjzrvvAFuwTAgo:localhost:8800$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsTdQe!IlGJpjzrvvAFuwTAgo:localhost:8800$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4TcQe!IlGJpjzrvvAFuwTAgo:localhost:8800$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkTbQe!IlGJpjzrvvAFuwTAgo:localhost:8800$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4TaQe!IlGJpjzrvvAFuwTAgo:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UT`Qe!IlGJpjzrvvAFuwTAgo:localhost:8800$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egT_Qe!CSqENqzAezaZnGktbE:localhost:8800$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4T^Qe!CSqENqzAezaZnGktbE:localhost:8800$WcM05q61ueoe6-KGOkZUeCT9AlN5J7qHlb_FIdV-YckT]Qe!CSqENqzAezaZnGktbE:localhost:8800$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcET\Qe!CSqENqzAezaZnGktbE:localhost:8800$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQT[Qe!CSqENqzAezaZnGktbE:localhost:8800$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQTZQe!CSqENqzAezaZnGktbE:localhost:8800$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxITYQe!CSqENqzAezaZnGktbE:localhost:8800$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4TXQe!CSqENqzAezaZnGktbE:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQTWQe!CSqENqzAezaZnGktbE:localhost:8800$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYTVQe!vBvlJEXUSQKUYmsKcO:localhost:8800$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawTUQe!vBvlJEXUSQKUYmsKcO:localhost:8800$t0b1uVlPml5Vvn7BgxZ_fxtiVr35CBTcPI_xA5OVbUUTTQe!vBvlJEXUSQKUYmsKcO:localhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkTSQe!vBvlJEXUSQKUYmsKcO:localhost:8800$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhoTRQe!vBvlJEXUSQKUYmsKcO:localhost:8800$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGITQQe!vBvlJEXUSQKUYmsKcO:localhost:8800$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1KkTPQe!vBvlJEXUSQKUYmsKcO:localhost:8800$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgTOQe!vBvlJEXUSQKUYmsKcO:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZATNQe!vBvlJEXUSQKUYmsKcO:localhost:8800$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpITMQe!RDEAXrqXQizuhCUFPq:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOMTLQe!RDEAXrqXQizuhCUFPq:localhost:8800$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SMTKQe!RDEAXrqXQizuhCUFPq:localhost:8800$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkTJQe!RDEAXrqXQizuhCUFPq:localhost:8800$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJITIQe!RDEAXrqXQizuhCUFPq:localhost:8800$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4YTHQe!RDEAXrqXQizuhCUFPq:localhost:8800$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwETGQe!RDEAXrqXQizuhCUFPq:localhost:8800$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUTFQe!RDEAXrqXQizuhCUFPq:localhost:8800$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60TEQe!mogJVPxghalmKbblUq:localhost:8800$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQTDQe!mogJVPxghalmKbblUq:localhost:8800$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4TCQe!mogJVPxghalmKbblUq:localhost:8800$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpYTBQe!mogJVPxghalmKbblUq:localhost:8800$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPoTAQe!mogJVPxghalmKbblUq:localhost:8800$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIYT@Qe!mogJVPxghalmKbblUq:localhost:8800$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8T?Qe!mogJVPxghalmKbblUq:localhost:8800$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 9r  T 6ofHCg e]]Q=$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA@anon-20191002_181700-522:localhost:8829@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800joinanon-20191002_181700-522Cf e]]Q=$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA@anon-20191002_181700-520:localhost:8800@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800joinanon-20191002_181700-520Ce e]]Q=$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg@anon-20191002_181700-519:localhost:8829@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800joinanon-20191002_181700-519Ed e]]Q=$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY@anon-20191002_181700-519:localhost:8829@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800inviteanon-20191002_181700-519Cc e]]Q=$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E@anon-20191002_181700-518:localhost:8800@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800joinanon-20191002_181700-518,b e]]Q$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI@anon-20191002_181700-517:localhost:8829@anon-20191002_181700-517:localhost:8829!AoAvmnwMkhYBQsbCsL:localhost:8800leaveEa e]]Q=$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo@anon-20191002_181700-517:localhost:8829@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800inviteanon-20191002_181700-517C` e]]Q=$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok@anon-20191002_181700-516:localhost:8800@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800joinanon-20191002_181700-516E_ e]]Q=$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms@anon-20191002_181700-515:localhost:8829@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800inviteanon-20191002_181700-515C^ e]]Q=$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U@anon-20191002_181700-514:localhost:8800@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800joinanon-20191002_181700-514C] e]]Q=$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4@anon-20191002_181700-513:localhost:8829@anon-20191002_181700-513:localhost:8829!CSqENqzAezaZnGktbE:localhost:8800joinanon-20191002_181700-513E\ e]]Q=$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE@anon-20191002_181700-513:localhost:8829@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800inviteanon-20191002_181700-513C[ e]]Q=$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800joinanon-20191002_181700-512CZ e]]Q=$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw@anon-20191002_181700-511:localhost:8829@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800joinanon-20191002_181700-511CY e]]Q=$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA@anon-20191002_181700-510:localhost:8800@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800joinanon-20191002_181700-510CX e]]Q=$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800joinanon-20191002_181700-509EW e]]Q=$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM@anon-20191002_181700-509:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800inviteanon-20191002_181700-509CV e]]Q=$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU@anon-20191002_181700-508:localhost:8800@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800joinanon-20191002_181700-508CU e]]Q=$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ@anon-20191002_181700-507:localhost:8800@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800joinanon-20191002_181700-507CT e]]Q=$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4@anon-20191002_181700-506:localhost:8800@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800joinanon-20191002_181700-506 oC  o lPn5Q 5 Sq 6 U8 3R  R n  T    pO6 7 8e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQosha256 8e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQsha2568e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUsha256 8e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdissha2568e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttEsha2568e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQsha256 H8e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4Usha2568e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQsha2568e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIksha256h8e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iAsha2568e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAsha256e8e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSssha2568e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lksha2568e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXossha2568e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4sha256 8e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQosha256R8e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wowsha256 A7e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEsha256!8e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjcsha256&8e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yressha2568e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8sha2568e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgsha256o8e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsksha256 y8e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYUsha2568e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi4sha2568e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIsha2568e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsAsha2568e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmcsha2568e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0sha256"8e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5Msha2568e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7gsha2567e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwsha256[8e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMsha2568e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQsha2568e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpksha25688e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20sha256/8e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0sha256s8e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4sha256 8e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0sha2568e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMsha2568e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUsha256K8e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyosha256!8e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOssha2568e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5ksha256 8e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUsha256 8e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQksha256 8e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcsha256 8e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuksha256 8e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5Asha256 c8e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygsha256 L8e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgsha256 8e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLssha2568e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SUsha2568e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlMsha2568e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIsha256E8e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcsha256x8e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrssha256E8e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGwsha256*8e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7issha2568e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIYsha2568e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Scsha25658e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty00sha2568e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQsha256n8e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQsha256 8e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIsha256 8e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIsha256 98e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95REsha256  eQa$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2730}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo"], "type": "m.room.history_visibility", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042894137, "hashes": {"sha256": "ouNlWRRAl4JYj9VY39kkMy2WLTpH9Y6wlIR0fSAWU48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ss6ohW7+8VDPkzrKv/loaGNx8vfkVedRUfFw3KG8iAzsMWvCvaskJbfFoSpKe4TGC4xEQCAeuetWoQJL6r0qBw"}}, "unsigned": {"age_ts": 1570042894137}}teQau$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2729}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY"], "type": "m.room.join_rules", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042893452, "hashes": {"sha256": "ZWWuuWahhk0q4UGOhNSKRVUBpOZaQa+yMDG+pE+hmE8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "58z4N7KZpQ6ODJZfs4zq3G8fRqZsqh8bOLGFSfwcHi1Ysg49FJkTwWTN0zvKSNjbtle2UNoqsvUY41so/lenCQ"}}, "unsigned": {"age_ts": 1570042893452}} eQa!$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2728}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8"], "type": "m.room.canonical_alias", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"alias": "#__ANON__-23:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042892694, "hashes": {"sha256": "NnRMW3EqNA60Z5eWs1dSHkcBhEHP5Jzi4IDk9aCz+c0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6qthtAx/q1Z0S0l1KxMC/T7VLMGJV83T6QM0Wc/ClvckZF5beNcePuiSjELnWP4rHzJEFrlk67tCFWAAbel+AA"}}, "unsigned": {"age_ts": 1570042892694}}keQac$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2727}{"auth_events": ["$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "type": "m.room.power_levels", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"users": {"@anon-20191002_181700-506:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042891947, "hashes": {"sha256": "YBvppeOuh4DeDpAMC3Zq6BzH52n8ALkue1/2fYJ84xU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WSOf7vUGg1knEkRQTx/dHRpjPIRvq3/qi//UCtWSNZVbm2J2+oneoYgCU4x00e/gjzxZuR/PDJnEqgrGJbYNCg"}}, "unsigned": {"age_ts": 1570042891947}}   ++H S X 0;dQ ! }  'eQ']$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829joinp&eQ))$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800m%eQ? $VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibilitye$eQ/ $DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rulesj#eQ9 $So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_aliasg"eQ3 $0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels !eQ']$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800joina eQ' $IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create eQ']$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800joingeQ3 $VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8!mogJVPxghalmKbblUq:localhost:8800m.room.power_levels eQ']$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-506:localhost:8800joinaeQ' $d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800m.room.createmeQ? $VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.history_visibility#eeQ/ $QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.join_rulesgeQ3 $X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.power_levels eQ']$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800m.room.member@anon-20191002_181700-505:localhost:8800joingeQ3 $xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_accessmeQ? $Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibilityeeQ/ $q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rulesgeQ3 $T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels eQ']$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800joinaeQ' $kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800m.room.create eQ']$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800joinpeQ))$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800meQ? $KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY!mogJVPxghalmKbblUq:localhost:8800m.room.history_visibilityeeQ/ $1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800m.room.join_rulesjeQ9 $wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800m.room.canonical_alias  h B#eQm$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "txn_id": "517", "stream_ordering": 2734}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ"], "type": "m.room.message", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"body": "hello", "msgtype": "m.text"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042897528, "hashes": {"sha256": "KpoWN6HR3QBc5ajxSL4yFHEWizn1wCO/KMmz7MKObu4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mq0ZISJhmT3cNMrQnOgl7XyRd+CoSvLxPn0ArOJb3SZCbL0F+KAFwUaWE38mgiFp9rH10v5vTqY4Ce6glhAjAg"}}, "unsigned": {"age_ts": 1570042897528}}V"eQa9$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800{"token_id": 504, "stream_ordering": 2733}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo"], "prev_events": ["$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU"], "type": "m.room.member", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-507:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-507", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-507:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042896566, "hashes": {"sha256": "0U38VZzQPVfPA4g6e6aosZbN/wDTPjZ7texT0TyQppo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AR+QgNEj48n0y431c7GOD1GUYnrhKtv/r4Gbt4AZqxDbgr+cCrqgGB2owFDcsQGNSYVDKwL/V7KDi02DByoyAg"}}, "unsigned": {"age_ts": 1570042896566}}H!eQa$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwU!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2732}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4"], "type": "m.room.test", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042896085, "hashes": {"sha256": "YGG4MriU37eLoaK0e16I9O1wNATlBv979rVnkJjrdDM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KxaUL2dJKpXraFuHvUHlxiIzeDEWGHNU80k/pmSnmWbBhPRjIu7gs1j5AXo6KVJXN5nhyBagvKiyWaFM47uvCQ"}}, "unsigned": {"age_ts": 1570042896085}} eQa5$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800{"token_id": 503, "stream_ordering": 2731}{"auth_events": ["$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg8", "$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY", "$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4"], "prev_events": ["$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY"], "type": "m.room.aliases", "room_id": "!mogJVPxghalmKbblUq:localhost:8800", "sender": "@anon-20191002_181700-506:localhost:8800", "content": {"aliases": ["#__ANON__-23:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042895219, "hashes": {"sha256": "OSFcewK5lgJMkj2zLIVuSJ/kAz4FJcTEWzpAzEBPVAg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5odvZ9ADW+LoU3MPtKcuLdnwbGvlPns+1Mz2UJI/8ITxpRAAF3qYPNboavgXMPYEGwoej+FlH16nU9oBItNaBQ"}}, "unsigned": {"age_ts": 1570042895219}} ! = c I X 6ENv /2a&eQ' $v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create %eQ']$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829m$eQ? $IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibilitye#eQ/ $nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rulesg"eQ3 $7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels !eQ']$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800a eQ' $Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create eQ']$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829 eQ']$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829geQ3 $XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800m.room.guest_accessmeQ? $k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibilityeeQ/ $-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800m.room.join_rulesgeQ3 $LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels eQ']$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800aeQ' $CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800m.room.create eQ']$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829peQ))$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800meQ? $VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibilityeeQ/ $DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rulesjeQ9 $So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_aliasgeQ3 $0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels eQ']$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800aeQ' $IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create eQ']$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800 eQ']$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800g eQ3 $xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800m.room.guest_accessm eQ? $Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800m.room.history_visibilitye eQ/ $q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800m.room.join_rulesg eQ3 $T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800m.room.power_levels eQ']$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-508:localhost:8800aeQ' $kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800m.room.create eQ']$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800m.room.member@anon-20191002_181700-507:localhost:8800peQ))$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4!mogJVPxghalmKbblUq:localhost:8800m.room.aliaseslocalhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VLeL$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iEsha256az|-j,y{M5†$8!VKeL$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8sha2567KӕB;9=~z۵vf(v[0/VJeL$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8sha256PBpy=˞9嬕XSJx/VIeL$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cIsha256"T݄Y3%()X#sVHeL$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgsha256jXf n 01 JxVGeL$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmssha256~ gҌX d8?{}ZQQkVFeL$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4sha256!XON|c";lXX.9Iy+.VEeL$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMksha256~I6ڲ7A;դWVDeL$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4sha2560S_JEۜ$n^iVCeL$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4Usha2560)v<. v.~ljVBeL$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egsha256R+ s|SpPf틞J5&VAeL$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4sha256p<`7o2oX!ÈGV@eL$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4sha256oSȖpb&O|cBfo% 4ݎV?eL$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEsha2560(,.S"RJxVrCV'@V>eL$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUsha256m[mͶ`XКlߚ5hDٮV=eL$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQsha256\3+.,= fsQh =&,V<eL$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQsha256vúZ cJ0H+w|IJ.dV;eL$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIsha256]N'7Z= V:eL$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4sha256-~h59+ pWd҅3.V9eL$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQsha256iHGzϐ؎ڬ&[p]%]2õnV8eL$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYsha256 2C~sZqRN2 ނV7eL$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgsha256^f!`'Rt⳥xt_o?JGV6eL$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawsha256vj-t#TWXZAE>wޅV5eL$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMsha256z;JQAÓ^LM.FV4eL$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APksha256ing+;ÊtN>V3eL$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebhosha256U$J{%@N6o E&bЮnV2eL$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIsha256ǘvrSj8?l%ZGvXapNIT)v-#Г #V*eL$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0sha256yWmV1zIҪB(JJ2p9 V)eL$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbksha256\ D3zU\t`Qb4baBH[ XIV(eL$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJIsha256*<}X7s}X\>wV'eL$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Ysha256(zV'lEZaMwV&eL$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwEsha256O8ŜKѼ;1BtN<{uhZ+V%eL$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJUsha256{μm}.m[4J:n,FĕV$eL$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60sha256+.a zD;1! 6@^'V#eL$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0sha256%ާP۲U ݸj_Q6j}_ E-k#]V"eL$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQsha256L bU3kqE'( 9]5V!eL$HkBpxknbVa7hEioRoLIriIwPeZLeHvLaPRo5ftnDNwUsha256@iIU*+y=9~7 g * T~=ggz]!c@anon-20191002_181700-524:localhost:8800IVEUVINDHFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQogy]!c@anon-20191002_181700-523:localhost:8800CMSDWRWLLHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3Evblysawogx]!c@anon-20191002_181700-521:localhost:8800PMRXQYAAOVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywogw]!c@anon-20191002_181700-520:localhost:8800LGMWFFKPISMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwogv]!c@anon-20191002_181700-518:localhost:8800LJEXZWJDWNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQogu]!c@anon-20191002_181700-516:localhost:8800DBXNPICYFOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920wogt]!c@anon-20191002_181700-514:localhost:8800LBNXTFJTITMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9gogs]!c@anon-20191002_181700-512:localhost:8800XMPLTRSJHYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAogr]!c@anon-20191002_181700-510:localhost:8800TMGCAARJXMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-Aogq]!c@anon-20191002_181700-509:localhost:8800RHTCHJDJOVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwogp]!c@anon-20191002_181700-508:localhost:8800IUNUZDZDEUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwo   *t'eQau$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2738}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE"], "type": "m.room.join_rules", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042901960, "hashes": {"sha256": "ANGO1/oLQA7cqC5UBxKkml8PGLt/O4JyQe3Llhnu3RU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jp4BsqO3wO2qDbYKxGSJAds7grNEzRhcpAoImiy6/4ItPX/Qhu0wvGBpe3IZAenQ68Yy/4BVKziSmDWb9ofADQ"}}, "unsigned": {"age_ts": 1570042901960}}k&eQac$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2737}{"auth_events": ["$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "type": "m.room.power_levels", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"users": {"@anon-20191002_181700-508:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042901146, "hashes": {"sha256": "LKQk/Q1bDTw357WtsM8WpaiIAlP7v43M1CzWidn/wvQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ezib779VoQUIphVUFxHStJUNxA+7DMCErlLBta2tIier3tc/cbJONDRBsm/BHI9uahoZnnsS9OLVYMEJNzKPAQ"}}, "unsigned": {"age_ts": 1570042901146}}v%eQay$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2736}{"auth_events": ["$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60"], "prev_events": ["$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60"], "type": "m.room.member", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-508", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-508:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042900108, "hashes": {"sha256": "HwTfSP4xyo6kzKWG02to4GLb5rVPWX4IVdgSgXKdIuc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KmmkICcBdyLVgOs1CwMpv9JWlJAlWSc8FxAHbzPQKLbUUINv47kR8rgKmc0zwdHQW8XbJC9BMSfFswAlw08FBw"}}, "unsigned": {"age_ts": 1570042900108}}i$eQa_$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2735}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-508:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042899109, "hashes": {"sha256": "IUXScqKxdwgoziM2t8kGV3iJ5gzKu3DuQ+CSRt7Z+4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b5Fbf6SMEz79Ho1VwnCUvI80ysDRsvRJXUidBAz6f+DzRmbYVp0bl6RPKwKD40djwXoWFpamoQC9BcbCnJdkCg"}}, "unsigned": {"age_ts": 1570042899109}} M D  Qj>8 W %   ] + c1  i7p p> vE }KQW% }]+ K v Q1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa81e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok1e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw1e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgs1e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O101e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM 1e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY1e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI1e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD41e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-81e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo 81e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A r1e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwz1e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Q1e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq81e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEu1e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg1e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMI1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw .1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU N0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU1e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U z1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qs1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o1e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40>1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYoe0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcC1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-ds *1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q1e$ehVSaGNawMZnAntg6nbRvXCMFS4yFDtL9PZIcsoBqq8>1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$edJAuTsxn5QMO2j80DEybBNDdcmYH9qEHAstZmGRih41e$ebmsDYxZ5xotqQbHG6yUNFGQ6uiW2midqFWMzlvGuOw1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg61e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRU(1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWYo1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqsU1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk =1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE1e$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE_1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I%1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ G1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 11e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYoq1e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw41e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 '1e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_M>1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY /1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu550l1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g1e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM  w+eQa7$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2742}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0"], "type": "m.room.member", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-509", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-509:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042905358, "hashes": {"sha256": "gk7U4ThxfXTZWNrOgjtODNlBvFUvv7az7Gm0udpepss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jHEW1q+zHVnChvaGpddpSzs+wSt/rBOXyrDzAAvsy7M6FRv9uzIgguteRfAVP8n63e9fdrVgF4FzNsY4zkhyCQ"}}, "unsigned": {"age_ts": 1570042905358, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-508:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-508:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-508", "avatar_url": null}, "sender": "@anon-20191002_181700-508:localhost:8800"}]}}H*eQa$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2741}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk"], "type": "m.room.test", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042904629, "hashes": {"sha256": "uQLiX0hPkDV23wGcWCIzmtBKo8vlZxVAsPgTxAsXGmA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yQAKe/UURSv4acjPMjNEQUh2/OgjYQ5y0hSlpIOmbGYBqAUUwArl4uK3Y08lo/LxeIruB4lCQvU48yJPQ/CQBg"}}, "unsigned": {"age_ts": 1570042904629}}{)eQa$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2740}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI"], "type": "m.room.guest_access", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042903594, "hashes": {"sha256": "9AHDSwUkxviaOa/evfP8q7KCunPP6Q7Fn8dRQV+9q40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EGnL1OSW7mva0oze1KRmxgBdjzKgqrDIrWK59PGuisOHQb0QXexAF3d+2ZOznyedFVbx9csL5DnRgR7w7byaAA"}}, "unsigned": {"age_ts": 1570042903594}}(eQa$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "stream_ordering": 2739}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y"], "type": "m.room.history_visibility", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042902868, "hashes": {"sha256": "0MPZBRUQoM92fYCu1E0Nk6GC5vud5EU7YqprcPP4MQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AML9Xzn1bwqbitf99gag5Jy183DYIsKHzO02016M9cCuvuujaj86t8d96aAamkzhA4P6Gjys2iu70dww2t6VBQ"}}, "unsigned": {"age_ts": 1570042902868}} H \ *b0 h6n< t V $BzH P  j8 Z(T"N v D  | J  z-z-1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu81e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs421e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAE1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8C1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8B 21e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y1e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y $1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y #1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y "1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s x1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s w1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g 1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kR1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kQ1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kP1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kO1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY 1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI 1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI 1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI 1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI>21e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk 1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Id1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Ic1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Ibd1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAJ1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAI1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUD1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUC1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu82 n<NkO2Qm34PlqU8   T   p 7   S 5NOn 68e$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbksha256 d8e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgsha256 8e$_FlPa2NRD99rNHRlCRrJmtgBCOhyfgCeRcJp9z7wO_0sha2568e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBIsha2568e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0sha256b8e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAksha2568e$_-0m8qNIgsu9vFlU-ReLFZinLNgRAPPRPrtV7UT3s0Ysha256 d8e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHssha256Q8e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-ksha2568e$ZmdjC0O7cmGiyDFLYDgABEI2Bxitmp2Jkq8myehiUjEsha256 8e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8sha256 8e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ngsha2568e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk8sha2568e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwsha2568e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAsha2568e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYsha256 !8e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcsha256 8e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZMsha256b8e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzksha256 8e$ZgXy5av8MaPUJbS4CviumN7Ecvr2sCOivuagXoMlTqIsha256f8e$Zf63fpiA46nIp24HS9BDpCnD0pwIbtlDvZAumkUpRvQsha256(8e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgsha256 8e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8ogsha2568e$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8sha2568e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZMEsha256D8e$ZXPmNFxphAaYWV56PahORuaAj3x0oVnuuvNDtdkNxMcsha2568e$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_nosha2568e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMIsha256w8e$ZUewPVL_n7burfCLU_jSYwMn5xts9Pw7xVQ4LEWErBksha2568e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5gsha256f8e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyMsha256{8e$_1CP1S8JpT8SlvEnE3h4a3Bz0cEDZAfCWBTunIDBX1osha256y8e$_64rkyN101-vKBXzHJsDkplCGj93WSNYQp5HKuBmJ7gsha256]8e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAYsha25628e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Brosha256 Rr8e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUsha2568e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90sha256f 698e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8sha256@8e$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYsha256)8e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynssha2568e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Cksha256#8e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmIsha2568e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYsha256(8e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcsha256_8e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbIsha2568e$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60sha2568e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQsha256X8e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Qsha2568e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY8sha256q8e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8ssha2568e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvcsha2568e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpwsha2568e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7ksha2568e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrUsha25618e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJossha2568e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGwsha2568e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYsha256 Z98e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18sha256 8e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIsha256 98e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEosha256 a} { y w u sqomkigeca~eeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~~eeQ$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~}eeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~|eeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~{eeQ$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~zeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~yeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~xeeQ$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~weeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~veeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~ueeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800~teeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800~seeQ$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~reeQ$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800~qeeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800~peeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800~oeeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~neeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~meeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~leeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800~keeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~jeeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800~ieeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU!RDEAXrqXQizuhCUFPq:localhost:8800~heeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60!RDEAXrqXQizuhCUFPq:localhost:8800~geeQ$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE!RDEAXrqXQizuhCUFPq:localhost:8800 Ej8p> v D  | J  P  X & ^ ,d2j8p> vD|JP1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGsI1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijkr1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug81e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOM1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0ca1e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I 1e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNM1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E W1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow=1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-c1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3cS1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3EH1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX81e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8s/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS41e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAJ1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 "1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukd1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g^1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI61e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k<1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU 31e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU -1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQZ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM.1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U = SDo67 q R  8 n5  Q Um 4 TPUpr9 T  p 8 8e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMsha256P8e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEsha256r8e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAksha2568e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyMsha256*8e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0sha256Q8e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMcsha2568e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYsha2568e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjssha2568e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYsha2568e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmIsha2568e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAewsha256&8e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwYsha2568e$IsuAGgX1NiSnhhmF5g6LKRb80tnWERwYo00bnVQd5Mosha2568e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQsha2568e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzUsha256B8e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMosha2568e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAsha2568e$InP9QTrWmQXDwkc_rbSMJZKqOXsw-MK-liEavTjY2RQsha2568e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4sha2568e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejgsha2568e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMwsha2568e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jwsha256/8e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4gsha2568e$IaMRSVr1f0I7K6udLJEG2BxtsMFLgyrqJqxf83FgZZQsha256s8e$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQsha2568e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byosha256,8e$IV3z5dsfz6FUe8TAmh_jOB3Q1dwOWVXH1NDgQOvAFiYsha256.8e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENYsha2568e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmosha256M8e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObIsha25698e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkosha256 8e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-osha256y8e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0Isha256 8e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIsha256 8e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAsha256 8e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAsha256 8e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19Esha256 8e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAsha2568e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8sha2568e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdssha2568e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXksha2568e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAsha256b7e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8sha256Z8e$JdQe7-c8Mdr_1orGDApvrXLr26Qy2ZBfU0rjoDY6_jIsha256 y8e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4sha2568e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8osha2568e$JZbrPUxibSKOeue-XGld3up6EFUMizO0xCeZfLM_Micsha256 8e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgsha2568e$JWtlQEwClSCy6ZlnKiQWu-qcxCZiuxXLuvWa3pekSeYsha2568e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FUsha2568e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb0sha25608e$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cIsha256 8e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4sha256 8e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpIsha256 8e$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMssha256 8e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgksha256 98e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIsha256 8e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-Asha256 E8e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0edssha256 8e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUsha256 D8e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0sha2568e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgsha2567e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIsha256T8e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDAsha256G8e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_Isha2568e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Ysha256N8e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vgsha256[8e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S8sha256  8l D `8j]c!E@anon-20191002_181700-524:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQoIVEUVINDHF127.0.0.1Perl + Net::Async::HTTP/0.44mhi]c!E@anon-20191002_181700-523:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3EvblysawoCMSDWRWLLH127.0.0.1Perl + Net::Async::HTTP/0.44mf}h]c!E@anon-20191002_181700-521:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywoPMRXQYAAOV127.0.0.1Perl + Net::Async::HTTP/0.44m@كg]c!E@anon-20191002_181700-520:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwoLGMWFFKPIS127.0.0.1Perl + Net::Async::HTTP/0.44m?f]c!E@anon-20191002_181700-518:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQoLJEXZWJDWN127.0.0.1Perl + Net::Async::HTTP/0.44me]c!E@anon-20191002_181700-516:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920woDBXNPICYFO127.0.0.1Perl + Net::Async::HTTP/0.44md]c!E@anon-20191002_181700-514:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9goLBNXTFJTIT127.0.0.1Perl + Net::Async::HTTP/0.44m՞c]c!E@anon-20191002_181700-512:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAoXMPLTRSJHY127.0.0.1Perl + Net::Async::HTTP/0.44mٴb]c!E@anon-20191002_181700-510:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-AoTMGCAARJXM127.0.0.1Perl + Net::Async::HTTP/0.44mَa]c!E@anon-20191002_181700-509:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwoRHTCHJDJOV127.0.0.1Perl + Net::Async::HTTP/0.44mق|  .Av/eQay$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2746}{"auth_events": ["$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI"], "prev_events": ["$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI"], "type": "m.room.member", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-510", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-510:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042909450, "hashes": {"sha256": "ccMF6NCwZhX4NvkgNOOb3IP2ojA413PdAMGhdkqgbRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "POYV/vt6htekkLGa8/XpApvnMjsbCTDydChnzo9XZZDDJ0ZfkKaWAIoOmETAtBZnnThtNbUMJcAKuYQfoB0gDw"}}, "unsigned": {"age_ts": 1570042909450}}i.eQa_$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2745}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-510:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042908619, "hashes": {"sha256": "3R3YccaKXDSNleqmojKpzO68R9ZpA+ffn6OjucL1ns0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xs7pz7gzmD15CtWFkuOmROopvODMZ6CTNYJoA+/f8m9b/plDx+vW+nl8+PJe5mo7ETUNj+YZT6VESdFMAYo7Bw"}}, "unsigned": {"age_ts": 1570042908619}}-eQm$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 505, "txn_id": "518", "stream_ordering": 2744}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU"], "prev_events": ["$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM"], "type": "m.room.message", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-508:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042907349, "hashes": {"sha256": "yAqo3oUTuPMlrkvoD2z8F7Tvd1aoA3+h96xHtYUHv34"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MoupyozutZxuv26G7ie/Mj/pVjcAqgZI1OGr6nzmHOAxTl5wveCAbizsTV21pOLyh+cLl+O2NpzT/IB0gKRPCA"}}, "unsigned": {"age_ts": 1570042907349}}H,eQa$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM!RDEAXrqXQizuhCUFPq:localhost:8800{"token_id": 506, "stream_ordering": 2743}{"auth_events": ["$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE", "$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60", "$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y", "$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM"], "prev_events": ["$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM"], "type": "m.room.member", "room_id": "!RDEAXrqXQizuhCUFPq:localhost:8800", "sender": "@anon-20191002_181700-509:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-509", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-509:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042906276, "hashes": {"sha256": "R+HiNQ+gf8lfP3aAvv8kVMhXvRf6Quv6W99UQVz0OvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hgncTI0cZMWiajH3NQdElz5EaGU5q/c8cIp+IiNBmtpRZ2ZaF1ojBwQd1L1MfR9lCrxEiWz20MtO8UdFEXWnDg"}}, "unsigned": {"age_ts": 1570042906276, "replaces_state": "$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM"}} DM p   % ( JM*-OX[}1d)Q' e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y8(Q']ee !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 'Q']e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xop&Q? e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibility$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUh%Q/ e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rules$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0j$Q3 e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE #Q']e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Okd"Q' e !AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 !Q']e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsp Q? e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibility$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4hQ/ e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkjQ3 e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 Q']e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UdQ' e !IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg8Q']ee !CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE Q']e !CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEjQ3 e !CSqENqzAezaZnGktbE:localhost:8800m.room.guest_access$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQpQ? e !CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibility$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQhQ/ e !CSqENqzAezaZnGktbE:localhost:8800m.room.join_rules$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIjQ3 e !CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 Q']e !CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQdQ' e !CSqENqzAezaZnGktbE:localhost:8800m.room.create$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY Q']e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawsQ))e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkpQ? e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibility$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhohQ/ e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rules$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGImQ9 e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_alias$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1KkjQ3 e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg Q']e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAd Q' e !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI8 Q']ee !RDEAXrqXQizuhCUFPq:localhost:8800m.room.member@anon-20191002_181700-509:localhost:8800$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM T\ ]  f  {-+AVT,Qe?Q ]$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4m.room.history_visibility!IlGJpjzrvvAFuwTAgo:localhost:8800mXm.@anon-20191002_181700-514:localhost:8800$Pe/Q ]$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkm.room.join_rules!IlGJpjzrvvAFuwTAgo:localhost:8800mm߄@anon-20191002_181700-514:localhost:8800&Oe3Q ]$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4m.room.power_levels!IlGJpjzrvvAFuwTAgo:localhost:8800m.mD@anon-20191002_181700-514:localhost:8800 Ne'Q ]$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4Um.room.member!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800M e'Q  ]$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-egm.room.create!IlGJpjzrvvAFuwTAgo:localhost:8800mmj@anon-20191002_181700-514:localhost:8800!Le)Q ] $ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4m.room.message!CSqENqzAezaZnGktbE:localhost:8800 mmm@anon-20191002_181700-512:localhost:8800 Ke'Q ] $b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4m.room.member!CSqENqzAezaZnGktbE:localhost:8800 mm@anon-20191002_181700-513:localhost:8829 Je'Q ]$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEm.room.member!CSqENqzAezaZnGktbE:localhost:8800mmɦ@anon-20191002_181700-512:localhost:8800Ie#Q ]$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpUm.room.test!CSqENqzAezaZnGktbE:localhost:8800mƞmƢ@anon-20191002_181700-512:localhost:8800&He3Q ]$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQm.room.guest_access!CSqENqzAezaZnGktbE:localhost:8800m\m,@anon-20191002_181700-512:localhost:8800,Ge?Q ]$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQm.room.history_visibility!CSqENqzAezaZnGktbE:localhost:8800momT@anon-20191002_181700-512:localhost:8800$Fe/Q ]$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIm.room.join_rules!CSqENqzAezaZnGktbE:localhost:8800mٽ*mپc@anon-20191002_181700-512:localhost:8800&Ee3Q ]$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4m.room.power_levels!CSqENqzAezaZnGktbE:localhost:8800mٹmٻ$@anon-20191002_181700-512:localhost:8800 De'Q ]$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQm.room.member!CSqENqzAezaZnGktbE:localhost:8800mٷmٸF@anon-20191002_181700-512:localhost:8800C e'Q  ]$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loYm.room.create!CSqENqzAezaZnGktbE:localhost:8800mٵmٵx@anon-20191002_181700-512:localhost:8800!Be)Q ] $Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsgm.room.message!vBvlJEXUSQKUYmsKcO:localhost:8800 m٭ mٮh@anon-20191002_181700-510:localhost:8800 Ae'Q ] $hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehawm.room.member!vBvlJEXUSQKUYmsKcO:localhost:8800 m٩ m٪ @anon-20191002_181700-511:localhost:8829@e#Q ]$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMm.room.test!vBvlJEXUSQKUYmsKcO:localhost:8800m٧-m٧1@anon-20191002_181700-510:localhost:8800!?e)Q ]$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkm.room.aliases!vBvlJEXUSQKUYmsKcO:localhost:8800m٤Mm٥@anon-20191002_181700-510:localhost:8800,>e?Q ]$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebhom.room.history_visibility!vBvlJEXUSQKUYmsKcO:localhost:8800m٠m٢@anon-20191002_181700-510:localhost:8800$=e/Q ]$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIm.room.join_rules!vBvlJEXUSQKUYmsKcO:localhost:8800mٜmٞ@anon-20191002_181700-510:localhost:8800)<e9Q ]$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kkm.room.canonical_alias!vBvlJEXUSQKUYmsKcO:localhost:8800mٙmٚ@anon-20191002_181700-510:localhost:8800&;e3Q ]$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLgm.room.power_levels!vBvlJEXUSQKUYmsKcO:localhost:8800mٕm٘*@anon-20191002_181700-510:localhost:8800 :e'Q ]$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAm.room.member!vBvlJEXUSQKUYmsKcO:localhost:8800mٓ mٓ@anon-20191002_181700-510:localhost:8800  3eQa$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2750}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI"], "type": "m.room.history_visibility", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042912787, "hashes": {"sha256": "JIMcJz2qfDTE1E9cv7n592qQYCsnKE2AyXKv4wvgIYM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WwkDZaKshcZCIuU9EgagTpRU4RrE5TCIhSkRFjp97ZKg3qVRwP2itZQuUUXCKmz2UuDhWQc6ePpjgIu+vguSDw"}}, "unsigned": {"age_ts": 1570042912787}}t2eQau$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2749}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk"], "type": "m.room.join_rules", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042911887, "hashes": {"sha256": "9A/eMIewtcU9U+LDmnq0abOPOVv7wxDfA2syK6hAcYE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p15Ko5Wck5V2MIfUOtA0EGx+LkFu31jgPssOea90Z6dz/3cKEGEeRI7LHo1J1/aeLT/kR34K1A4uADLv/qmZDA"}}, "unsigned": {"age_ts": 1570042911887}} 1eQa!$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2748}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg"], "type": "m.room.canonical_alias", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"alias": "#__ANON__-24:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042911186, "hashes": {"sha256": "uSMcCNaT/FdLq79pt4NTu+/DF48vxSgwqWUujICUPEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g71oFC9jdc1nqZ9TIJdeQR2uiJYqeWHvq3bFgCFlIKNTDo6F0ds9XWEFwn+Av2M127KXiSVSQJ2TH8sh1EGnCQ"}}, "unsigned": {"age_ts": 1570042911186}}k0eQac$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2747}{"auth_events": ["$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "type": "m.room.power_levels", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"users": {"@anon-20191002_181700-510:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042910179, "hashes": {"sha256": "OfXTp3Vd4A+MAEf8MpnnRu5DQ6py6mkYdZHM8seiE2w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B07qPV21sgxEGi4RwAo2l8SsolgR4ajtBKlWaAmGOVvRLmeKdXO8UmHzvaFZT/CSsMgNrZEoNMYvkKm9oD+LBQ"}}, "unsigned": {"age_ts": 1570042910179}} !K'@ " - W y [fk 54!KgQ/ e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rules$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgiQ3 e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw ~Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Ec}Q' e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y |Q']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI {Q']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$0EAuz7NH4mjkAICKvxZCYtE8mAncHER7jU3FSLtXW48 zQ']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xooyQ? e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibility$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUgxQ/ e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rules$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0iwQ3 e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE vQ']e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6OkcuQ' e!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 tQ']e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsosQ? e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibility$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4grQ/ e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMkiqQ3 e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 pQ']e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4UcoQ' e!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg nQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 mQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$WcM05q61ueoe6-KGOkZUeCT9AlN5J7qHlb_FIdV-Yck lQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcEikQ3 e!CSqENqzAezaZnGktbE:localhost:8800m.room.guest_access$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQojQ? e!CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibility$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQgiQ/ e!CSqENqzAezaZnGktbE:localhost:8800m.room.join_rules$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxIihQ3 e!CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 gQ']e!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQcfQ' e!CSqENqzAezaZnGktbE:localhost:8800m.room.create$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY eQ']e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw dQ']e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829$t0b1uVlPml5Vvn7BgxZ_fxtiVr35CBTcPI_xA5OVbUUrcQ))e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APkobQ? e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibility$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60EbhogaQ/ e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rules$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGIl`Q9 e!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_alias$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk WG&^> f >  h @  xN Q *   ~V^6n~V.pH .6f v N &`8v^'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 \'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 ^'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 ]'Q!xXYMxashIZAUOTuGAJ:localhost:88007'Q!xXYMxashIZAUOTuGAJ:localhost:88006'Q!xXYMxashIZAUOTuGAJ:localhost:88005'Q!xXYMxashIZAUOTuGAJ:localhost:88004&Q!wvnfKBSrUlfNmYoeil:localhost:8800{'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 }'Q!xcdNyJNFEdaBGFycsB:localhost:8800 |'Q!xcdNyJNFEdaBGFycsB:localhost:8800 {'Q!xXYMxashIZAUOTuGAJ:localhost:8800:'Q!xXYMxashIZAUOTuGAJ:localhost:88009'Q!xXYMxashIZAUOTuGAJ:localhost:88008'Q!xvblqEscwOtCqJntfF:localhost:8800J'Q!yWhIsLsgNVGcnELrDS:localhost:8800('Q!yNfCaBMPezurwkJRAX:localhost:8800G'Q!yNfCaBMPezurwkJRAX:localhost:8800F'Q!yNfCaBMPezurwkJRAX:localhost:8800E'Q!xcdNyJNFEdaBGFycsB:localhost:8800 ~'Q!yNfCaBMPezurwkJRAX:localhost:8800B'Q!yNfCaBMPezurwkJRAX:localhost:8800C'Q!yNfCaBMPezurwkJRAX:localhost:8800DF('Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800N'Q!xvblqEscwOtCqJntfF:localhost:8800M'Q!xvblqEscwOtCqJntfF:localhost:8800L'Q!xvblqEscwOtCqJntfF:localhost:8800K x'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yAzXcNLHMuqFOcOexj:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800  0('Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 &Q!xwoIOPTGmJIlTXakxC:localhost:8800^&Q!xwoIOPTGmJIlTXakxC:localhost:8800]&Q!xwoIOPTGmJIlTXakxC:localhost:8800\&Q!xwoIOPTGmJIlTXakxC:localhost:8800[&Q!xwoIOPTGmJIlTXakxC:localhost:8800Z&Q!xwoIOPTGmJIlTXakxC:localhost:8800Y'Q!xhbvqJDfxMSsZPqvld:localhost:8800 'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 ['Q!yAfsSyqpJWFnkXQFJL:localhost:8800 Z'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800 %'Q!yTQmLDAxZscWKLMSWh:localhost:8800 $'Q!yTQmLDAxZscWKLMSWh:localhost:8800 #'Q!yTQmLDAxZscWKLMSWh:localhost:8800 "'Q!yTQmLDAxZscWKLMSWh:localhost:8800 ! E) zHNT"n< v D j8b0p> [tBh6 P  V $ \ | *)b0#221e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I01e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q 11e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M 1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N41e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q 1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Q 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM81e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM:1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM91e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90T1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90S1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90R1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1ga1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g`1e$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc%1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA1e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos 61e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos 51e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos 41e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI|1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI{1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4 i1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4 h1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4 g1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY 1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQd H<  # tB{I O  [ )jU O#  n U u C  { [ )b0h68vEEttojlNa01e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs %1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veke1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsq1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQZ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIe1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0=1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE#1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk 1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUd1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM 1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsZ1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUF1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk<1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUE1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg%1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA Z1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw m1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAK1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s%1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw D1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo~1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk|1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc x1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 01e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So I21e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg x1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw =21e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y\1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0O1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM\1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k81e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg =1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 21e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI@1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw H<  # tB{I O  [ )jU O#  n U u C  { [ )b0h68vEEttojlNa01e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE 1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs %1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8veke1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsq1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQZ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIe1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0=1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE#1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk 1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUd1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM 1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsZ1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUF1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk<1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUE1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg%1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA Z1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw k1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAK1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio!1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s%1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw D1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo~1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk|1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc v1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 01e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So I21e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg x1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw =21e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y\1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0O1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM\1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k81e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg =1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 21e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI@1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw  h  7eQm$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "txn_id": "519", "stream_ordering": 2754}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw"], "type": "m.room.message", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042916107, "hashes": {"sha256": "5ywMREm7nz4WIZTpdXWShYvk8kL8QynwaViw/zfYC8w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/Xh1176uaIqqJ4ddj2OsT0AWx0/JQtOA65AxmMHkbwpJYSWIX1C5+NDfwVtptd/XndIpZHWbb467IwwraUJjDA"}}, "unsigned": {"age_ts": 1570042916107}}r6eQ1$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw!vBvlJEXUSQKUYmsKcO:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2753}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-511", "membership": "join"}, "depth": 9, "hashes": {"sha256": "IsRAr9U20IMGysXm/YPLCUxV1Uc8zMvYa40Uhcnd1O8"}, "origin": "localhost:8829", "origin_server_ts": 1570042915082, "prev_events": ["$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM"], "prev_state": [], "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-511:localhost:8829", "state_key": "@anon-20191002_181700-511:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vGHPv5RutWcQjhOHhe6OYZDHazHwm8Ntn61UnmaHq2Anevh3W+Hf9209Qcm0vFaAWyzfvYv/v1FZCgudUzbCA"}, "localhost:8829": {"ed25519:a_UxIG": "62Bik+/HRwFuxeMWaAMp4sJpqnHAMuhFv9kB5iEUJvSOFAN0uw0ZGhBWkKPS4hmHvz5MHUTFOpSopYBENma/Ag"}}, "unsigned": {"age": 127}}H5eQa$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2752}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk"], "type": "m.room.test", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042914605, "hashes": {"sha256": "l0W/scTYOjagdhtHspkqoTLHfTbo2ib4h0SASDc9Xg8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aASZshej9E3jL4Y99buaziPo2A12W0P/OaTyb35o9CDrG1CZgf6zsQOqyiyXRJg3ZwqRVkE/2wiNdp75spxpAQ"}}, "unsigned": {"age_ts": 1570042914605}}4eQa5$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk!vBvlJEXUSQKUYmsKcO:localhost:8800{"token_id": 507, "stream_ordering": 2751}{"auth_events": ["$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg", "$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI", "$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA"], "prev_events": ["$VSSVikp73iVATjb_zfBvlh8J9BdFJmK2B9CuG60Ebho"], "type": "m.room.aliases", "room_id": "!vBvlJEXUSQKUYmsKcO:localhost:8800", "sender": "@anon-20191002_181700-510:localhost:8800", "content": {"aliases": ["#__ANON__-24:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042913869, "hashes": {"sha256": "Imy4DR7k7lYNhwdaep+rgDfSAn7rndwE2m3qATvFQWg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0vbC8XF4lOt1TwAwAyFl8Jt0VJTwfI7IrKXmVaZfBDML8PIAcari7PUD217PUVrsiDqfIabf6ZFOPArYK25zAg"}}, "unsigned": {"age_ts": 1570042913869}} :^,XR Mq? wEe v D~  | J    &   P  W &j X?^,R  wF,21e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gi1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M)1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM x1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA u1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbIm1e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnusk1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9GwU1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA@1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8 911e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM41e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwX1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy901e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs /1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc\1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg z1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 31e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo d21e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU ^0e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qy0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4ioU1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBoD1e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4,1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw#1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY '1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 81e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 H1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc -21e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y 1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 2 ! 0 @ P ` p(8HXhxu. ]@anon-20191002_181700-557:localhost:8800$2b$04$U6SY7ARQ1surVV6Pp4q1Y.YpWUV7j01.iUY6g2uvLFbGD8Bure8QK]u- ]@anon-20191002_181700-556:localhost:8800$2b$04$kkVucth9R1oBKzgsWeW1G.g/2C2lkAswgaqaXc/W9beW3Y7dfoPfK]u, ]@anon-20191002_181700-555:localhost:8800$2b$04$u9eubA/fK61kKMmCs58JrekS1KBHYzsod6WtHY2lDKhRlBWN0/4Va]u+ ]@anon-20191002_181700-554:localhost:8800$2b$04$KOoO.gn/fOu5On3HvfKIAuWhePYTkZicplqGbqFgYE3monlwGZpp2]u* ]@anon-20191002_181700-552:localhost:8800$2b$04$KeWiCk3vjS6NEmtsfBTlne/ZNesHBMaPnyOqOiSFCgqIEAmJaOqPy]u) ]@anon-20191002_181700-551:localhost:8800$2b$04$yOW3dhMuLOv3.UQ4/CBOe.t84ZI.vGpw3Qivyre.5X6dZN.a69N5G]u( ]@anon-20191002_181700-550:localhost:8800$2b$04$f/AeA8ihM59Xq0UH4javJeOTUXyQZTij75r.NTKOFD9b3FSpQYGkK]u' ]@anon-20191002_181700-549:localhost:8800$2b$04$SOlzTjletvvOK4rpZsawB.rl11x10Pucwej7kmGteca8gZiRMsHxa]u& ]@anon-20191002_181700-548:localhost:8800$2b$04$FCvia/VPyTRWmjUU7IgY.u/AwQlIiMcKbeyom5Z6jmTrC.OgInPkK]u% ]@anon-20191002_181700-545:localhost:8800$2b$04$vztNnSXii8k5gJt/q4gkm.TH4O.BmiaQNA2KOHrSgh1mAKYDjqV2K]u$ ]@anon-20191002_181700-543:localhost:8800$2b$04$WX4essptb178woUVEm2lteQvlfBOStz1PrSc6bdSMA1IdP4dBK7EG]u# ]@anon-20191002_181700-541:localhost:8800$2b$04$RECSqLKcYjZ7SalYyuEoGeO9tDg1pChqxqzOoMF69ENpaerAgjeim]|u" ]@anon-20191002_181700-539:localhost:8800$2b$04$iFhYDv1PvcN0Xtjv8S18Ne9Y9k5K0wIuo7vZwW5hL2KSd2sSXsWbC]tu! ]@anon-20191002_181700-537:localhost:8800$2b$04$2.2xwWjIQ79f.RgNo.BNpuT8liTqLTlE.rG29BBd5/m2eIX.I1MBC]lu ]@anon-20191002_181700-538:localhost:8800$2b$04$6k2Vm6MJ9lYY8e4UolvmEeVaLCHtAov5/Uy0NpjTknXLlhfm0hMlK]lu ]@anon-20191002_181700-535:localhost:8800$2b$04$m3mTVmwERp1DVN4MCz6ZvOC52YBvOfs3FvvEfMClL4RCj5tiyoBuG]eu ]@anon-20191002_181700-536:localhost:8800$2b$04$xTeE3.Xj7VRtBaqXfnzKYOeGgNVIXdG7LEHtBr/J5kJ/Uk2sG/kiW]eu ]@anon-20191002_181700-533:localhost:8800$2b$04$gHQ65YWDPgO8GTsATUsD9eoav3Q7XkaccEnGyUuQMiLGnTGMEqkoW]^u ]@anon-20191002_181700-534:localhost:8800$2b$04$GHYQIxaejTbjnfxEq0K3huZmSfDyVbNiDNMGQjGsA4yxLSQ5pSLL2]^u ]@anon-20191002_181700-531:localhost:8800$2b$04$syfmb8b6GxER42d2OIpq8u2Htlug9bI61AOcV3ZiPvr.CH8lpP8Iu]Xu ]@anon-20191002_181700-532:localhost:8800$2b$04$8WywnSDVxtKEvmBeA3sEyuJyWv01E4Xp3LldE7pTasDkoJjGQLquW]Wu ]@anon-20191002_181700-529:localhost:8800$2b$04$kZXArYU2FA/fy6dQpaHfqOLPi2LYx.78uig9W50fhV/DYdF/83OAi]Wu ]@anon-20191002_181700-527:localhost:8800$2b$04$HoPmW/rrBmnLup89KKcCHeRqg8iDmfbjYcgqG0IPR7jqmTf4Djcm.]Vu ]@anon-20191002_181700-526:localhost:8800$2b$04$7JNy/Ic9TWUaGaIfAQkcUuFw11M/NTbPo9YRqAOldquk7GGub56Iy]Uu ]@anon-20191002_181700-525:localhost:8800$2b$04$WAXO41hcHPjgdcU18JwHrucIbJLNXwVQ5G0rWUtw5dcca2I78cJ/u]Tu ]@anon-20191002_181700-524:localhost:8800$2b$04$pb5zBaUbQA.4PO7cDR7mRedYRfdYzYWljyfwWzOq72IkTQ/pooPE.]Su ]@anon-20191002_181700-523:localhost:8800$2b$04$QqrOfenQtBgP3OJN18WiFeNz2xotr.pFhdsmJL6oUwBJbcARKwJZ2]Su ]@anon-20191002_181700-521:localhost:8800$2b$04$c6vjqCv6zH5eo3qxlHWME.kEQhl19qY3bfg6dBwxE7AnH/fkQ1/OC]Hu ]@anon-20191002_181700-520:localhost:8800$2b$04$R39FeyHCeuSQq/ghUMSMr.LxrTv5MpZalra91oZbdjXRVBTCdSU2W]Hu ]@anon-20191002_181700-518:localhost:8800$2b$04$J8s2AT04YPkVvGTISN7e5efnhkTMTRAna.2wsZ2.sAN3TlcKen/e.]@u ]@anon-20191002_181700-516:localhost:8800$2b$04$P/Rb2qhEzd05dBLf9H9mtem8EstCdEGXFfxhUApeN85ULBXdkkGqq]8u ]@anon-20191002_181700-514:localhost:8800$2b$04$ypnVJxfkDLIQKqtFGxYbj.d2v1qM6pJNRuhGCXCdK/VuWV3BejlA2].u ]@anon-20191002_181700-512:localhost:8800$2b$04$Hk96AtvNlID52z93ItE1YujBo8eWU2sNAIxlSk1gAH1u6IXqmmDJu]%   *t;eQau$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2758}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4"], "type": "m.room.join_rules", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042920234, "hashes": {"sha256": "fcwIp2zdtwxhoIk2nTHwo3Vkha6Vx7OA8+b6hy9acjY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9ALyMWsTWoznF+VaaL7IsBRxN20+Blu8Yhsv6jn5KQyDsLrcNwDgIw/8K15bvfKPEktMN1hWAc+GTZimQeG6Bg"}}, "unsigned": {"age_ts": 1570042920234}}k:eQac$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2757}{"auth_events": ["$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "type": "m.room.power_levels", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"users": {"@anon-20191002_181700-512:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042919412, "hashes": {"sha256": "sPuMc+HvnEqLS3OYGU3ic0BawkUy4vde7c/4P6bIgas"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ukte9/OHPzJtK7BB1ukVxFQbSubLKh0tMtMnL+y/pUpipRe0c1dyPi+hWcnzU7QstNsqdt7pm/zrgFQWp0jfBg"}}, "unsigned": {"age_ts": 1570042919412}}v9eQay$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2756}{"auth_events": ["$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY"], "prev_events": ["$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY"], "type": "m.room.member", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-512", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-512:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042918850, "hashes": {"sha256": "c1HzK3EUkTLZR5w9uqKwhoWR0VuhW4tzW0Cw2VrDyG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iEZbhvyVetevDAG3gzOqzmb1V1tXQ0LYPvlr1SStNPP3t5qpYwc/QfRzcZoLBrwGvymZbpoTCdBYgwNKi9NZAA"}}, "unsigned": {"age_ts": 1570042918850}}i8eQa_$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2755}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-512:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042918171, "hashes": {"sha256": "qR91MKNZyHXufDUdBpdp2DNSH/aWyMXZ5DXVyzsoo9w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rq6Vn2lpMsGOyZUa6+0cNDaDZkmh8CB1+fx5bB1cdEp1Q0997q3YbMHyFER9R0e3tyOFPGmYNeS0/ANRIOa0AA"}}, "unsigned": {"age_ts": 1570042918171}} a} { y w u sqomkigeca~$eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~#eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800~"eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~!eeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800~ eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~ eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800~eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800~eeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800~eeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800 ~z v r n j fb^ZVRNJFfeeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8!AoAvmnwMkhYBQsbCsL:localhost:8800eeeQ$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800deeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800ceeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800beeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800aeeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800`eeQ$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800_eeQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk!IlGJpjzrvvAFuwTAgo:localhost:8800^eeQ$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800]eeQ$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800\eeQ$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800[eeQ$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800ZeeQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800YeeQ$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800XeeQ$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8!IlGJpjzrvvAFuwTAgo:localhost:8800WeeQ$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800VeeQ$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg!IlGJpjzrvvAFuwTAgo:localhost:8800UeeQ$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800TeeQ$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800SeeQ$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800ReeQ$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800QeeQ$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800PeeQ$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800OeeQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800NeeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800MeeQ$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU!CSqENqzAezaZnGktbE:localhost:8800LeeQ$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800KeeQ$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800JeeQ$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800IeeQ$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800  wH>eQa$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2761}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ"], "type": "m.room.test", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042922654, "hashes": {"sha256": "erkq6RnTOzM56AczmjqhnNnZj6e/wfWUlZKLq2Zluak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lUYpa5AZoVwJv6ClzPPUy7gPbDmJSOi26wEciuteP8RaYoANpZ/wAkkYrcBPSYXG2cAi8vfq8V+2h4s3v778Dw"}}, "unsigned": {"age_ts": 1570042922654}}{=eQa$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2760}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ"], "type": "m.room.guest_access", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042921820, "hashes": {"sha256": "65RV57kDGB+rzD6sHSKKMLHpRw1mO1394wujt5fB2Mg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KVGU2jpzeJ50zanJ2JJhFYBUSQzgDnzxJoFHBxQj+PliiTSLd4vBcrAIjpUtsHIdRVkR5LWxzPgOsD+5xSplDg"}}, "unsigned": {"age_ts": 1570042921820}}<eQa$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2759}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI"], "type": "m.room.history_visibility", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042921071, "hashes": {"sha256": "neNm5yeCzH9Zl15Rz06d1qJp9uey1ZD4WDvrPtcR0/g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Uac1gd/tjULtgAyv6O7dMy8M9zYj6NXb6uwn4Ix6/va7ckc5vHeHIVD39HUFgr5wNixz56VANn/SPA1pmD5Bw"}}, "unsigned": {"age_ts": 1570042921071}} RalI2xR   b # q Q r O ) U 8 _  o0@lO4T=]  a " a F#qV3 >'] m.room.member@anon-20191002_181700-535:localhost:8800 >']m.room.member@anon-20191002_181700-508:localhost:8800>']m.room.member@anon-20191002_181700-522:localhost:8829 >']m.room.member@anon-20191002_181700-522:localhost:8829 %))m.room.aliaseslocalhost:8800 "? m.room.history_visibility / m.room.join_rules 9 m.room.canonical_alias 3 m.room.power_levels >']m.room.member@anon-20191002_181700-520:localhost:8800 ' m.room.create >']m.room.member@anon-20191002_181700-519:localhost:8829 >']m.room.member@anon-20191002_181700-519:localhost:8829 >']m.room.member@anon-20191002_181700-519:localhost:8829 "? m.room.history_visibility / m.room.join_rules 3 m.room.power_levels>']m.room.member@anon-20191002_181700-518:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-517:localhost:8829>']m.room.member@anon-20191002_181700-517:localhost:8829>']m.room.member@anon-20191002_181700-517:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-516:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-515:localhost:8829"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-514:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-513:localhost:8829>']m.room.member@anon-20191002_181700-513:localhost:8829>']m.room.member@anon-20191002_181700-513:localhost:88293 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels>']m.room.member@anon-20191002_181700-512:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-511:localhost:8829>']m.room.member@anon-20191002_181700-511:localhost:8829%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-533:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-532:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-531:localhost:8800 '  m.room.create >']m.room.member@anon-20191002_181700-521:localhost:8800 9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-510:localhost:8800' m.room.create>']m.room.member@anon-20191002_181700-509:localhost:8800>']m.room.member@anon-20191002_181700-509:localhost:88003 m.room.guest_access"? m.room.history_visibility/ m.room.join_rules3 m.room.power_levels"' m.room.create>']m.room.member@anon-20191002_181700-507:localhost:8800%))m.room.aliaseslocalhost:8800"? m.room.history_visibility/ m.room.join_rules9 m.room.canonical_alias3 m.room.power_levels>']m.room.member@anon-20191002_181700-506:localhost:8800' m.room.create"? m.room.history_visibility/ m.room.join_rules'  m.room.create >'] m.room.member@anon-20191002_181700-534:localhost:8800 "?  m.room.history_visibility  z zAeQm$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "txn_id": "520", "stream_ordering": 2764}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4"], "type": "m.room.message", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"msgtype": "m.text", "body": "hello"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042924996, "hashes": {"sha256": "ujGu+bHRv1dsq3jKIFYJEXNxFitvmpwJfdZxuisFcbg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wJIdqxerMwYibqM4c1BoKMyMb4a+0mOm/qpGVAyG9l69aBABOLkGViExuJRRrSXtclh7GeJPMaowrEPAtgbTBQ"}}, "unsigned": {"age_ts": 1570042924996}}c@eQ1$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2763}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI", "$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-513", "membership": "join"}, "depth": 9, "hashes": {"sha256": "e94wdMBmPty2KVS1LCIeULDc0R6YvoPvRF4ZuzGui5E"}, "origin": "localhost:8829", "origin_server_ts": 1570042924032, "prev_events": ["$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE"], "prev_state": [], "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-513:localhost:8829", "state_key": "@anon-20191002_181700-513:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1P7iRan13ioDjePvqltGkWxmoPchEiGNMIKvSWJZsYc8NKOxWrR5QJHoIdBo2EJQC1i4jQQjZLI2AD403lhAQ"}, "localhost:8829": {"ed25519:a_UxIG": "VkY0iqYMPukaQK72AeeVwRR+SCqiQps0ebHZ1e2Kttn+LuNUvsg6ykD/pieJ40ui8NHEP/Feh1PWIgj5sg2vDw"}}, "unsigned": {"age": 99, "replaces_state": "$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE"}}?eQa7$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800{"token_id": 508, "stream_ordering": 2762}{"auth_events": ["$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4", "$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY", "$-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI", "$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ"], "prev_events": ["$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU"], "type": "m.room.member", "room_id": "!CSqENqzAezaZnGktbE:localhost:8800", "sender": "@anon-20191002_181700-512:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-513", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-513:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042923209, "hashes": {"sha256": "OmgLfn/SxSQ/Uooqk6t35CMmxAZhRd5IoZ+pd7GgofM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4oJICAEnXtHE707c4sJKBJzFw7VRnc7PS5BziHVLH6nwm9dJc5E7s4c/Be6LXUOUhy5G9rPgi2NbFB73eW7oDg"}, "localhost:8829": {"ed25519:a_UxIG": "7SlYz4+x667fJWG9406xw2Skfx7pEufpPYL+hEL8PLKsemYb0y75TZ5tlNixSyGDKQB+wy3IBmc5wcG2Rx6kBw"}}, "unsigned": {"age_ts": 1570042923209, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-512:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-512:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-512", "avatar_url": null}, "sender": "@anon-20191002_181700-512:localhost:8800"}]}}  LD<5t | l d \ T -%eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800 _eeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800 0 eeQ$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg!GixhPUMvtKSWoKRgvw:localhost:8800(eeQ$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCY!lMRBkbYJDQHgdBZBFJ:localhost:8800 eeQ$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ!GwXGurbyEmykmmHcHJ:localhost:8800ځeeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg$VOQ7LLsaHdjIf2qKxiRtIHz4b9TZ6aKcZcxaamdbbbs!QyLUggxrTnULUAOseq:localhost:8800eeQ$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa8$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE!AWfbViAZparIjmDaVT:localhost:8800߁eeQ$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg!hWHyATwKfuznrqTiyu:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk!raCWVWQGnXbmkexpCN:localhost:8800eeQ$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg!raCWVWQGnXbmkexpCN:localhost:8800eeQ$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs!IPYMCBwcyNIzqdiIWv:localhost:8800ʁeeQ$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY!OBWkjfrDCNgYFfblia:localhost:8800eeQ$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGE!wIhMbfQzYbJobPdwyi:localhost:8800OeeQ$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4!KxhGcTbEWmtgGNpdox:localhost:8800?eeQ$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis!CQKLQUpSYakhxVDltC:localhost:8800eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800   *tEeQau$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2768}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4"], "type": "m.room.join_rules", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042928845, "hashes": {"sha256": "2Q60bmxi9HOkKyhnxreE4txaJTmEFO8N4nPIahV9Js8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UEOETvBSavyYrQao/32P/dkquBeEFuqigtdNDvCAxCja1n2xP8ZxqA74VtoLeEig4jKsJyI6kTPtYFjXdYYdAg"}}, "unsigned": {"age_ts": 1570042928845}}kDeQac$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2767}{"auth_events": ["$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "type": "m.room.power_levels", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"users": {"@anon-20191002_181700-514:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042928174, "hashes": {"sha256": "OUsIqeZJLWbERSzEN6bgVXfenPsJwm/hJlOzLuNCVTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "esD4tr0Xtdy1H4J9E1kPbYJfW6Bmy90t35IFrooo0PYcPip4FAc1q1LXo7oYEI4ikMlAzkJknrwWGtcFye5iAg"}}, "unsigned": {"age_ts": 1570042928174}}vCeQay$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2766}{"auth_events": ["$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg"], "prev_events": ["$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg"], "type": "m.room.member", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-514", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-514:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042927353, "hashes": {"sha256": "RWHyI/5lsVoxbhlBhstzYJxGDet/6lUhPDNlPvnCQbA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IN7khgD2mdMxXeqi/vI4JKA55pVCcjsmoRmAUS2SjxFY1qiRR6DdipkR0ilBFYy69aHl6WKWV0p8uF170JXgAg"}}, "unsigned": {"age_ts": 1570042927353}}iBeQa_$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2765}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-514:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042926596, "hashes": {"sha256": "P3ZleBaNuEwfn54TnDPb+MIFMXK2vnE6ZQ1p9QRjQcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iPatMZwTiph5XvxalT8G4rGRfGn58X0WriRiLpvWbDL8afi8GJXYqcRVvj6b9TIFW5aJ/2he06f3EMx/DQ4FAg"}}, "unsigned": {"age_ts": 1570042926596}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h H G F E D C B A @ ? > = < ; : 9 8 7 ~6 }5 {4 z3 y2 x1 v0 u/ t. s- q, p+ o* n) l( k' j& i% f$ d# d" c! b  a ` _ ] \ [ Z Y X W U T S R Q P O L L  J  I  I  G  G F E D C B @ ? > = < : 9 8 7 6 4 3 2 1 0 - - , + * ) ( % % $ # " !                            ~} { z y x w v u t s r q p o n m l j i h g f k e d c b a ` _ ^ ] \ [ Z Y X W V U T R Q P O N S M L K J I|{zyxwvutsrqponmlkjihgfedcba`_^]\[~Z}Y|XyWyVxUwTvSuRtQqPqOpNoMnLmKlJjIiHhGgFfEcDcCbBaA`@_?^>]=Z<Z;Y:X9W8V7U6T5R4Q3P2O1N0M/L.J-I,H+G*F)E(D'B&A%@$?#<"<!; :98744321 exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h H G F E D C B A @ ? > = < ; : 9 8 7 6 ~5 |4 {3 z2 y1 w0 v/ u. t- r, q+ p* o) m( l' k& j% g$ f# e" d! c  b a ` ^ ] \ [ Z Y X V U T S R Q P N M  L  K  J  I  H G F E D C A @ ? > = ; : 9 8 7 5 4 3 2 1 / . - , + * ) ' & % $ # " !                           ~} { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I|{zyxwvutsrqponmlkjihgfedcba`_^]\[Z~Y}X{WzVyUxTwSvRuQsPrOqNpMoLnKmJkIjHiGhFgEeDdCcBbAa@`?_>^=\<[;Z:Y9X8W7V6U5S4R3Q2P1O0N/M.K-J,I+H*G)F(E'C&B%A$@#>"=!< ;:9865432 ;)#OI= uDi  v 8 |o[7 D J U{  p P j $ 1 = C ] +1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ H1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoR1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A e1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkh1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc&0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAe1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgo1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow A1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUQ1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw[1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0"1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc51e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk y>W1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIE1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcx1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsE1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw*1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo'1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQn1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 21e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg N1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisd ;)#OI= uDi  v 8 |o[7 D J U{  p P j $ 1 = C ] +1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ H1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoR1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A c1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkh1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc&0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAe1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgo1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow A1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUK1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw[1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0"1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc51e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk y>W1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIE1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcx1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsE1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw*1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQn1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 21e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg L1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdisd -RM H C > 9 4/*|%w rmhc T8Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkT7Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkT6Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQT5Qe !wBkUBAjOznOyxrLchl:localhost:8800$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAT4Qe !wBkUBAjOznOyxrLchl:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgT3Qe !wBkUBAjOznOyxrLchl:localhost:8800$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAT2Qe !wBkUBAjOznOyxrLchl:localhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwT1Qe !wBkUBAjOznOyxrLchl:localhost:8800$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAT0Qe !wBkUBAjOznOyxrLchl:localhost:8800$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MT/Qe !wBkUBAjOznOyxrLchl:localhost:8800$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTET.Qe !wBkUBAjOznOyxrLchl:localhost:8800$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIT-Qe !wBkUBAjOznOyxrLchl:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAT,Qe !wBkUBAjOznOyxrLchl:localhost:8800$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUT+Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4DwT*Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmkT)Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgT(Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8T'Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYT&Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMT%Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgT$Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwT#Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_ET"Qe !sHRHoXzYrrPSlWBkoh:localhost:8800$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2YT!Qe !AoAvmnwMkhYBQsbCsL:localhost:8800$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIT Qe !AoAvmnwMkhYBQsbCsL:localhost:8800$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8TQe !AoAvmnwMkhYBQsbCsL:localhost:8800$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xoTQe !AoAvmnwMkhYBQsbCsL:localhost:8800$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUTQe !AoAvmnwMkhYBQsbCsL:localhost:8800$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0TQe !AoAvmnwMkhYBQsbCsL:localhost:8800$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GETQe !AoAvmnwMkhYBQsbCsL:localhost:8800$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6OkTQe !AoAvmnwMkhYBQsbCsL:localhost:8800$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nkTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0oTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_sTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iETQe !IlGJpjzrvvAFuwTAgo:localhost:8800$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8TQe !IlGJpjzrvvAFuwTAgo:localhost:8800$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cITQe !IlGJpjzrvvAFuwTAgo:localhost:8800$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgTQe !IlGJpjzrvvAFuwTAgo:localhost:8800$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsT Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4T Qe !IlGJpjzrvvAFuwTAgo:localhost:8800$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk  i ' ,7(1 6 ^;Fts~?\DaAeQ' $UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800m.room.create @eQ']$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829joinm?eQ? $rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibilitye>eQ/ $F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rulesg=eQ3 $IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels <eQ']$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800joina;eQ' $8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create:eQ']$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829leaveg1eQ3 $7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.power_levels 0eQ']$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-514:localhost:8800joina/eQ' $Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.create .eQ']$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829joing-eQ3 $XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800m.room.guest_accessm,eQ? $k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ!CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibilitye+eQ/ $-J5dn7ac5E4b8Kcn8zf0sa4YAFrVBT2HsKSxIAS7vxI!CSqENqzAezaZnGktbE:localhost:8800m.room.join_rulesg*eQ3 $LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4!CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels )eQ']$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800joina(eQ' $CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY!CSqENqzAezaZnGktbE:localhost:8800m.room.createm9eQ? $cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibilitye8eQ/ $5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rulesg7eQ3 $jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels 6eQ']$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800joina5eQ' $v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.create4eQ']$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.member@anon-20191002_181700-515:localhost:8829invitem3eQ? $IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.history_visibilitye2eQ/ $nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk!IlGJpjzrvvAFuwTAgo:localhost:8800m.room.join_rules  w^HHeQa$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2771}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms"], "type": "m.room.test", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042931738, "hashes": {"sha256": "qIek94WItfVW7Wm8QkQKtcPoIgLULzdn0tw0BzTYza8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uif60toeyKadd13EvnVMpbw5FZTuJwhnRfeaAK7MnruIYCtuQO1vsOh+gRUYX0fVzoT1Qnfm3W8Kv51om1jFBw"}}, "unsigned": {"age_ts": 1570042931738}}GeQa7$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2770}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4"], "type": "m.room.member", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-515", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-515:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042931008, "hashes": {"sha256": "UpXL4F3V6u6ZAhao6TEkBymD5eGlJ95fP7dYpow8Usk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b6jvNBTA+da/Cx0GpFSs/gcXSHQOm+GrliMjTC6cah4cndb/Z1aEoVZygH8KNV4K3fkGHZopyYJQ4DNUvOlADg"}, "localhost:8829": {"ed25519:a_UxIG": "RO4CMLjgcF4Q05h7VVRbk6mHsA+7uo4dKAX4mtIBLOXFuq6Fj36et/a7eirsI9r7gqsfdPYJ+znc/LsMfmqICw"}}, "unsigned": {"age_ts": 1570042931008, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-514:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-514:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-514", "avatar_url": null}, "sender": "@anon-20191002_181700-514:localhost:8800"}]}}FeQa$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y4!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "stream_ordering": 2769}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk"], "type": "m.room.history_visibility", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042929496, "hashes": {"sha256": "PoR0xaPvfRZEtTZC750dKS7l+gsGui0+2ZqBGBMUCT0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "daQVk6tDmkFa7nNKhRahviZToXyb9L+bcWIFfkIMDfEgWR/W4+kMojA9rm+7ViNdrIExmTIANjouPpi4uKPFBA"}}, "unsigned": {"age_ts": 1570042929496}} ~\ p & 7 HX\t&~$ie/Q ]$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgm.room.join_rules!sHRHoXzYrrPSlWBkoh:localhost:8800m$am%-@anon-20191002_181700-518:localhost:8800&he3Q ]$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwm.room.power_levels!sHRHoXzYrrPSlWBkoh:localhost:8800m!m"@anon-20191002_181700-518:localhost:8800 ge'Q ]$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Em.room.member!sHRHoXzYrrPSlWBkoh:localhost:8800mm@anon-20191002_181700-518:localhost:8800f e'Q  ]$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Ym.room.create!sHRHoXzYrrPSlWBkoh:localhost:8800mm.@anon-20191002_181700-518:localhost:8800 ee'Q ]$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIm.room.member!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-517:localhost:8829de#Q ]$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8m.room.test!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-516:localhost:8800 ce'Q ]$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xom.room.member!AoAvmnwMkhYBQsbCsL:localhost:8800mmF@anon-20191002_181700-516:localhost:8800,be?Q ]$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqUm.room.history_visibility!AoAvmnwMkhYBQsbCsL:localhost:8800m m@anon-20191002_181700-516:localhost:8800$ae/Q ]$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0m.room.join_rules!AoAvmnwMkhYBQsbCsL:localhost:8800m em 0@anon-20191002_181700-516:localhost:8800&`e3Q ]$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GEm.room.power_levels!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-516:localhost:8800 _e'Q ]$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Okm.room.member!AoAvmnwMkhYBQsbCsL:localhost:8800mm@anon-20191002_181700-516:localhost:8800^ e'Q  ]$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78m.room.create!AoAvmnwMkhYBQsbCsL:localhost:8800mpm@anon-20191002_181700-516:localhost:8800!]e)Q ]$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800!\e)Q ]$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nkm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800![e)Q ]$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0om.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@@anon-20191002_181700-514:localhost:8800!Ze)Q ]$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800!Ye)Q ] $wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 m3m=@anon-20191002_181700-514:localhost:8800!Xe)Q ] $4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_sm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mpmu@anon-20191002_181700-514:localhost:8800!We)Q ] $3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iEm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mm@anon-20191002_181700-514:localhost:8800!Ve)Q ] $N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mm&@anon-20191002_181700-514:localhost:8800!Ue)Q ] $lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8m.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800 mm@anon-20191002_181700-514:localhost:8800!Te)Q ]$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cIm.room.message!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800Se#Q ]$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAgm.room.test!IlGJpjzrvvAFuwTAgo:localhost:8800mm@anon-20191002_181700-514:localhost:8800 Re'Q ]$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmsm.room.member!IlGJpjzrvvAFuwTAgo:localhost:8800m@m@anon-20191002_181700-514:localhost:8800  pO LeQ$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "524", "stream_ordering": 2775}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042933704, "hashes": {"sha256": "SDv+cUssG5SH7PpNLGci2a4gPsYfIJB85Jih0kT6XmI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lgbbnflK0sTkGUhehX0Z2Oi08VRP/eg/VIWkAZ+aQj8T2ykGdD3LxQQAmRJjydnCpxCko6NUcHnWDn6CnvlaAA"}}, "unsigned": {"age_ts": 1570042933704}} KeQ$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "523", "stream_ordering": 2774}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 3"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042933278, "hashes": {"sha256": "kqhdp1K+kjQAfkZTuP3jgkuckknAH3kz4WTKdg/tKN8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aw+9B3fhBOKjgbq4Q7/oXPMJFjVBzqs1rOK/ZL6J8W450kTsGWXnymfxfWTUlIMQA7rUvzxqLx5WvNbK2x2ACA"}}, "unsigned": {"age_ts": 1570042933278}} JeQ$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "522", "stream_ordering": 2773}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042932671, "hashes": {"sha256": "Qt0TQFm6HA0LZvVSYhPDlHdgzEdM71qQjQ/C1zlX0b8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kr+UHBvDh5cxQ+Sz/T3Rsp0Ic3AzT3a5GP6YAyerXSCEcb8PWtKqQeWmpljm2N05XDT2jmn4gyIF1HMzgAAgBA"}}, "unsigned": {"age_ts": 1570042932671}} IeQ$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "521", "stream_ordering": 2772}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042932169, "hashes": {"sha256": "M2qxSnc7OjJnFeXcDf1mLn55+hm4UH+GKUPIsl2aC1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XMDZ2RNlYYzo60fEMLHieTvfgZqiRUDEr8nYNyMZ3GJ3p5ktrAfN+S7OZHTe/1TST5aLACggl1gZS479gxUwAg"}}, "unsigned": {"age_ts": 1570042932169}} d \ T L <D4|,$t l eeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800 aeeQ$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk!pUSFAnuwUuMlbiInDR:localhost:88006eeQ$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk!WWZVpyLeZfyfpWidLx:localhost:8800"eeQ$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ!aVxOoyiLLnxmzgLJat:localhost:8800eeQ$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0!kkgEEVUJynguTqAoWD:localhost:8800{eeQ$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A$W6GHpfSIbGOdBVpK3B_qGNNmzs1yXU_7msx8NSsyxMk!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg!SyIWYOmcGiASNkPCTB:localhost:8800āeeQ$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL0!rZWweGEChkxxtzyfDB:localhost:8800eeQ$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800 >eeQ$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4!EMhFCPhwmnWVnjtXXM:localhost:8800/eeQ$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo!mogJVPxghalmKbblUq:localhost:8800 eeQ$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY$0rbDtkdjrcnON7kchQz4cA4ZOW07o9hwQ1_vLOIzJU4!kOmCTyiizHqfCJdhlR:localhost:8800 heeQ$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk!tkajvIKHoOMWGsReBs:localhost:8800MeeQ$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc!XgobMgBjNcDRJnRXLD:localhost:8800\eeQ$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI!RmwbYvIIQyPlHlClty:localhost:8800eeQ$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA!ZaOktTIVeRgBXxfubH:localhost:8800ReeQ$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k!BrssELMbasSzTFpIXm:localhost:8800'eeQ$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU!SrMQpDMFREKRMELwbL:localhost:8800eeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800 *eeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800 J Z S ! Y '  "  ` .T.f4` |(j8lM:r@yGp> v D  T1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw u1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g /1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!1e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk W0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw[1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI $1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8 1e$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8 1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc01e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A F1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU <1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 11e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0 1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI 1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres 1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgm1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow 20e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE!1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAV1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkf1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ 91e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20/1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk 1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk w1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0I1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8 Y1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0sL1e$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEwl1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4h0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk;1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xUxAmkAVEwgS89qui9MbcBm2p-wSnZIjO8PN10gXZNo1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk 1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g 1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo :1e$xHms1q5s9HvB84UUIyrn1Jhz1qSu0PkKGnKwCmDstkQ1e$xHdwWT1Fz29Upoz4lnKOwWS_iZm7hg_htCjf0cNHnA81e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoX0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcm1e$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw]1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk i1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc51e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQn1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs 1e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4 1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xrWpZYuW2iAzItbAzLqAzBn7uUbz7wnD9HxpVi9LpRg 1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o <<0 H `  B h $<T(?Uq.eQ%-$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 1f-eQ%$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800content.bodyhellof,eQ%$Xo2gZiFg7CdS4nTw4rOltpd4dO3RX5dvP7PqSkeJEsg!vBvlJEXUSQKUYmsKcO:localhost:8800content.bodyhellof+eQ%$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIw!RDEAXrqXQizuhCUFPq:localhost:8800content.bodyhellof*eQ%$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0!mogJVPxghalmKbblUq:localhost:8800content.bodyhelloqFeQ%-$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 1qEeQ%-$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 0qDeQ%-$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 7qCeQ%-$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 6qBeQ%-$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 5qAeQ%-$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 4q@eQ%-$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 3q?eQ%-$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 2q>eQ%-$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800content.bodyMessage number 1m=eQ%%$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800content.bodyhello, worldg<eQ%$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o!xcdNyJNFEdaBGFycsB:localhost:8800content.bodysyncedg;eQ%$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800content.bodysyncedg:eQ%$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800content.bodysyncedg9eQ%$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800content.bodysyncedh8eQ%$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800content.bodyMessager7eQ%/$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 10q6eQ%-$Or85nn_747uNaIwa7uwPYCIbDrilUSRVriO90PBH1nk!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 9q5eQ%-$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 8q4eQ%-$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 7q3eQ%-$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 6q2eQ%-$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 5q1eQ%-$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 4q0eQ%-$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 3q/eQ%-$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8!IlGJpjzrvvAFuwTAgo:localhost:8800content.bodyMessage number 2  oM PeQ$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "528", "stream_ordering": 2779}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"body": "Message number 8", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042935541, "hashes": {"sha256": "AQhgQgGpRKlil21hauS+PyH0uLPr7bThAtMLVaxgRkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cya1JkPH/3KU2a+8MIBOWI2S5xjGYHAF5OnundoFY4TusgRz2fbkXx3qG5uXTJtX0qAsk+4WoWOqjliW22PjBw"}}, "unsigned": {"age_ts": 1570042935541}} OeQ$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "527", "stream_ordering": 2778}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042935054, "hashes": {"sha256": "BypSa/F6z9My8GcmkFfCg1v4YO1GooVgsqq8/ZfXLs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/knvsavv6L6RZ/f2GdfqFBRzcphJTZVI/czDiaTMemdAz/N4/PCk77sKN32xrm09+4+zoqCi86oHHprfCFFFDA"}}, "unsigned": {"age_ts": 1570042935054}} NeQ$wXwl4nJlytuIADwha11RRLOI6m6m-S1kDgJitACzNQQ!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "526", "stream_ordering": 2777}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042934579, "hashes": {"sha256": "2FK2EjztB4dYgZNU7+Z/XuaLeJWhWYmrJqS/hgHUe8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2EX+myV8KTymUP+byaMuEQTSXmm3MzTX/ByObw7fc7VMvH5viga6EK9AhYbMr+ax1y3aEmy9ax2ek22w7vYlAQ"}}, "unsigned": {"age_ts": 1570042934579}} MeQ$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s!IlGJpjzrvvAFuwTAgo:localhost:8800{"token_id": 509, "txn_id": "525", "stream_ordering": 2776}{"auth_events": ["$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4", "$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg", "$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U"], "prev_events": ["$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE"], "type": "m.room.message", "room_id": "!IlGJpjzrvvAFuwTAgo:localhost:8800", "sender": "@anon-20191002_181700-514:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042934128, "hashes": {"sha256": "L0YgGRuye06JetD50UOjeAVllG6kfhLSjosd6ZDJZjw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wl/ixOqD1S3CCsWp1pg0ttkZVKD+C3gYO92Iszw2+aHLYP8ao5Bbhkv5BqJdGpZaTmg7Hv2697kSXO9/2q3vAQ"}}, "unsigned": {"age_ts": 1570042934128}} ,NC 8 - { " p  e ZOD9.|#qf VxeL$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYsha256ZKad?HSlN|* VweL$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8sha256Jæ 7%tˆ0qVveL$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0sha256 劰DN,fҬ\Xq45* VueL$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwsha256.+Ľ&A CދTX_AWTG&2F#L#N1VaeL$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8sha256őx)#}-!We IaF\%V`eL$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYsha256fE𗿣G~L}{si?;.f²V_eL$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMsha256 N(mSSl;#fLhx%{#V^eL$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgsha256k_^ôb|-:< zG HV]eL$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwsha256 Cc\K_eMԠuni$L2dV\eL$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_Esha256's|ܝ [=#h\aLëV[eL$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Ysha256ZUnqrCƦ oݽ7eeQ$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800~=eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800~<eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~;eeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800~:eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800~9eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~8eeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800~7eeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800~6eeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~5eeQ$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800~4eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800~3eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~2eeQ$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~1eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~0eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800~/eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~.eeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~-eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~,eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~+eeQ$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~*eeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~)eeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~(eeQ$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800~'eeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800~&eeQ$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800~%eeQ$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78!AoAvmnwMkhYBQsbCsL:localhost:8800 !s 1  & T W fo**9BjymGeQ? $u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibilityeFeQ/ $So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rulesgEeQ3 $ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels DeQ']$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800aCeQ' $T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800m.room.create BeQ']$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800mAeQ? $exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibilitye@eQ/ $GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rulesg?eQ3 $5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels >eQ']$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800a=eQ' $Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create <eQ']$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800 ;eQ']$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829p:eQ))$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800m9eQ? $HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibilitye8eQ/ $_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rulesj7eQ9 $vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_aliasg6eQ3 $9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels 5eQ']$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800a4eQ' $UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800m.room.create 3eQ']$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829 2eQ']$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829m1eQ? $rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibilitye0eQ/ $F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rulesg/eQ3 $IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels .eQ']$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800a-eQ' $8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.create ,eQ']$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829 +eQ']$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-517:localhost:8829m*eQ? $cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.history_visibilitye)eQ/ $5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.join_rulesg(eQ3 $jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.power_levels 'eQ']$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok!AoAvmnwMkhYBQsbCsL:localhost:8800m.room.member@anon-20191002_181700-516:localhost:8800  WeQa$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2786}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0"], "type": "m.room.history_visibility", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042940659, "hashes": {"sha256": "Vz12lFUY6FVtP5mJKIO3BH79GPMOOpWCeEgwyorV8/s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+2C2fjnVV3IpPvIycvh1DI0i4yZcE7M6yRw1fZuaSSshFZB28WsGjKqbAL7ID3LUvQU34SWqIFSFd+R6ddw5CA"}}, "unsigned": {"age_ts": 1570042940659}}tVeQau$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2785}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE"], "type": "m.room.join_rules", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042939749, "hashes": {"sha256": "4c3sOtDYc4MMSVu6784OyM9oQFFrO+1uTHTPS1VRrfc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cSEg0BBhEvO5SFYYdBPNdT9M7G1RfhYFfvaaDfDUM1ki2AapYS0iH4WJQvXA6lb77GHmO2AAIYzYEMVVrDc7Dg"}}, "unsigned": {"age_ts": 1570042939749}}kUeQac$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2784}{"auth_events": ["$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "type": "m.room.power_levels", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"users": {"@anon-20191002_181700-516:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042939030, "hashes": {"sha256": "+mQtTC0M9OQ4O6bRtEBnu0UO21ACaQHVwUc1bZIaB14"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BFvBbiFU/D7D25WbB5kt38ISWsZ/IInbRHXhAUHWvNc9vKBml+PoaZlUp8vYoX9qCNz7eX59wIPnQej6FRPZCg"}}, "unsigned": {"age_ts": 1570042939030}} 7QQ@B B  D  D  D  F FFHHMQQ?]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAPm Y-?]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZm ?]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXSm?]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBUmB?]!@anon-20191002_181700-551:localhost:8800PDLFVATDIVmL?]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVRm۲=[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGmK-=[!@anon-20191002_181700-54:localhost:8800MQMQOGGONNmK,<Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZSmua=[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQmZ2?]!@anon-20191002_181700-598:localhost:8800TGNIJBJLORm)*?]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKSm)?]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSGm'?]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHWm2(?]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQm&?]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHTmȔ%?]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXTm$?]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPRm,#=[!@anon-20191002_181700-58:localhost:8800XSIUOLPWQXmV1?]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQm޽c"?]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAUm޹!?]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVEm޷ ?]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYCm޵?]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHRm޲?]!@anon-20191002_181700-584:localhost:8800FZKRURXWXEmޘ?]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEmހb?]!@anon-20191002_181700-582:localhost:8800WSKNBNWTARml?]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZmi[?]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOPmU=[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOmUB0?]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBRm??]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSNm+u?]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJBm?]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAUmC?]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOXmr?]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQNm?]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQmݓg?]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPPmo?]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTMm[?]!@anon-20191002_181700-570:localhost:8800ECXFORDQSPm/5=[!@anon-20191002_181700-56:localhost:8800UWHMGOHJLQmQo/?]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQmy?]!@anon-20191002_181700-568:localhost:8800IRGUUINXHFm ?]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNLm ?]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKFmԚ ?]!@anon-20191002_181700-565:localhost:8800MSICJQZBGXm ?]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZmܭn ?]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOMmܘS?]!@anon-20191002_181700-562:localhost:8800RUCUWRMARXm܃?]!@anon-20191002_181700-561:localhost:8800YQDTZKECLGmr?]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEEmd=[!@anon-20191002_181700-55:localhost:8800GJICSOZSSMmN.?]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSm9?]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDAm+?]!@anon-20191002_181700-556:localhost:8800TMQBHREBEOm I INZeQc'$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI!AoAvmnwMkhYBQsbCsL:localhost:8800{"outlier": false, "stream_ordering": 2789}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "5mQBrbC34++b6V+cHpyH8Oo9StiInZL2jFj4pdo73qs"}, "origin": "localhost:8829", "origin_server_ts": 1570042943127, "prev_events": ["$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8"], "prev_state": [], "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-517:localhost:8829", "state_key": "@anon-20191002_181700-517:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L/8Vbq6BwADrYGvCpgI+vRnNKYetT0N3Cmi5KwwFZdonKiYV8cwalOBemwa0PuRnpC/66nDgQVTu/SvmpyVqAQ"}, "localhost:8829": {"ed25519:a_UxIG": "TJuYvtaDzhUythQPrluKfiIfGEfv8f7aMxw2ai2kSIV1dUsX202PxPXJGbZGZKCTJHgwTmqPfmhw4TbBH/4LDQ"}}, "unsigned": {"age": 180, "replaces_state": "$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo"}}HYeQa$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2788}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo"], "type": "m.room.test", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042942632, "hashes": {"sha256": "i/Fkk8JnOB7Rpum1lO1nusOkNLzKniImDIDq4ty52Yg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t1JGAV0j0/Oxp4/S7haIbjQM9nQPb34EoL3TfyT6R3rPhymgrNYgaJF7zCuMjD4IsWtIyi2xk1RkH6s9A7fYBg"}}, "unsigned": {"age_ts": 1570042942632}}XeQa7$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800{"token_id": 510, "stream_ordering": 2787}{"auth_events": ["$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE", "$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78", "$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0", "$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok"], "prev_events": ["$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU"], "type": "m.room.member", "room_id": "!AoAvmnwMkhYBQsbCsL:localhost:8800", "sender": "@anon-20191002_181700-516:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-517", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-517:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042941901, "hashes": {"sha256": "Y5Yefm+8aGqRFCT9sJTQyaU3NG+KmUdnPTuj3eTEwqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EXih5fMSlEeZ+5FRx4Eh700M0y3RRhzh6snejzQoK65QF6flkgF4Ef7GfMkj54/POlFb6dWKIcxHYSprRX9zDQ"}, "localhost:8829": {"ed25519:a_UxIG": "vWvrnT/ir4/yTmZkEeCdlJ22PoshpruOvUYRbLdcrkfBUAvoepcugJbUwl144ShGSwW1VlbQqXActyizHrZRAg"}}, "unsigned": {"age_ts": 1570042941901, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-516:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-516:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-516", "avatar_url": null}, "sender": "@anon-20191002_181700-516:localhost:8800"}]}} B@pzH> vT D  | J ZhN 6 P  V $ \ *b0"(1e$ljsIx7HQE1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8U1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc w1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc v1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE<1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE;1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE:1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM41e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc x1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4`1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwb1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc 1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc 1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUX1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUW1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUV1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUU1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA 1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA 1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA 1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAw1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAv1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAu1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_471e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_461e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_451e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_441e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4b1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4a1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI -RM H C > 9 4/*|%w rmhc TQe !vRmMcoJDeCupADwqac:localhost:8800$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMTQe !fGkUEndqGrieltwbCh:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0TQe !fGkUEndqGrieltwbCh:localhost:8800$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcTQe !fGkUEndqGrieltwbCh:localhost:8800$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFATQe !fGkUEndqGrieltwbCh:localhost:8800$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcioTQe !fGkUEndqGrieltwbCh:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkTQe !fGkUEndqGrieltwbCh:localhost:8800$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcTQe !atnRTMliktaVUhMVID:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQTQe !atnRTMliktaVUhMVID:localhost:8800$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkTQe !atnRTMliktaVUhMVID:localhost:8800$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwTQe !atnRTMliktaVUhMVID:localhost:8800$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4T Qe !atnRTMliktaVUhMVID:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwT Qe !atnRTMliktaVUhMVID:localhost:8800$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQT Qe !PHkVrXAyfGkFtzSagu:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AT Qe !PHkVrXAyfGkFtzSagu:localhost:8800$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYT Qe !PHkVrXAyfGkFtzSagu:localhost:8800$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8TQe !PHkVrXAyfGkFtzSagu:localhost:8800$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0TQe !PHkVrXAyfGkFtzSagu:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwTQe !PHkVrXAyfGkFtzSagu:localhost:8800$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4TQe !EhFUhsgQbBWmrnGmaz:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0TQe !EhFUhsgQbBWmrnGmaz:localhost:8800$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkTQe !EhFUhsgQbBWmrnGmaz:localhost:8800$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQTQe!wBkUBAjOznOyxrLchl:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgT~Qe!wBkUBAjOznOyxrLchl:localhost:8800$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAT}Qe!wBkUBAjOznOyxrLchl:localhost:8800$0C1SRZ8JvGiVFmRA6bFujPNnEk5MQr0F0QIlkbvN9N4T|Qe!wBkUBAjOznOyxrLchl:localhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwT{Qe!wBkUBAjOznOyxrLchl:localhost:8800$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XATzQe!wBkUBAjOznOyxrLchl:localhost:8800$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MTyQe!wBkUBAjOznOyxrLchl:localhost:8800$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTETxQe!wBkUBAjOznOyxrLchl:localhost:8800$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgITwQe!wBkUBAjOznOyxrLchl:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfATvQe!wBkUBAjOznOyxrLchl:localhost:8800$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUTuQe!sHRHoXzYrrPSlWBkoh:localhost:8800$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgTtQe!sHRHoXzYrrPSlWBkoh:localhost:8800$bJdU8kuNoDUDs-9w_r_odFPOLVPKMvv2h4etQgGb_hUTsQe!sHRHoXzYrrPSlWBkoh:localhost:8800$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYTrQe!sHRHoXzYrrPSlWBkoh:localhost:8800$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMTqQe!sHRHoXzYrrPSlWBkoh:localhost:8800$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgTpQe!sHRHoXzYrrPSlWBkoh:localhost:8800$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNwToQe!sHRHoXzYrrPSlWBkoh:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_ETnQe!sHRHoXzYrrPSlWBkoh:localhost:8800$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2YTmQe!AoAvmnwMkhYBQsbCsL:localhost:8800$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqITlQe!AoAvmnwMkhYBQsbCsL:localhost:8800$0EAuz7NH4mjkAICKvxZCYtE8mAncHER7jU3FSLtXW48   *t^eQau$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2793}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw"], "type": "m.room.join_rules", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042946657, "hashes": {"sha256": "K3f3KM2KA9/4/YUx9zDN6mtaX5+4WBtf5LeRodWRxsQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "X74Z66aTjrroOjxVYnilMZFEAIGoGEVBoDDF/SyiN7+8hHumUhTyI9E0LCC5aPpCnUXdj3Ct5CqAdfyUbhHkBg"}}, "unsigned": {"age_ts": 1570042946657}}k]eQac$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2792}{"auth_events": ["$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "type": "m.room.power_levels", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"users": {"@anon-20191002_181700-518:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042945934, "hashes": {"sha256": "UE10KfFKWV6sEW+8GN22y/C+TlrA4bSMJfH/c5YyHXk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mFWp4nHra0axSMJn5bTizHj3iWX1KeTonpPWuRAkMj/ZCg5MX8KmfzAXCTkGoQbuc46fR/Ir6nKFDbtXhCsdAg"}}, "unsigned": {"age_ts": 1570042945934}}v\eQay$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2791}{"auth_events": ["$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y"], "prev_events": ["$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y"], "type": "m.room.member", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-518", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-518:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042945159, "hashes": {"sha256": "mFvOUJQ552br6mfojxtGJgeYG64mqzVRwGljn7EJ07A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GHAKlzcMIjJnUQBarX9NewCObbEyBbidlS1+t1+dtbVyvnGps9afm/GpsDBKAQ7FafbQ7u9EEwsqcdPZQLWKDw"}}, "unsigned": {"age_ts": 1570042945159}}i[eQa_$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2790}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-518:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042944463, "hashes": {"sha256": "XkidZU4b/IetmzGD8fFsHlXSSBA1DX7TYpa1fZ5TCAU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KEDXbn1aa11sNbSS4T6NlFFeSGs6KSqTHD4mH/6/cyRLhYu9JQ/ueACWMjo1/tRjuhuUaLwMIy1ESjY6CXAHDg"}}, "unsigned": {"age_ts": 1570042944463}} ~z v r n j fb^ZVRNJFeeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800eeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800eeQ$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800eeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800eeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800eeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~eeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800}eeQ$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800|eeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800{eeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800zeeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800yeeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800xeeQ$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800weeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800veeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800ueeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800teeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800seeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800reeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800qeeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800peeQ$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800oeeQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800neeQ$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800meeQ$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8!sHRHoXzYrrPSlWBkoh:localhost:8800leeQ$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800keeQ$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800jeeQ$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800ieeQ$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw!sHRHoXzYrrPSlWBkoh:localhost:8800heeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800geeQ$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800 p% r u  ' !*-OX[}pIQ? e !atnRTMliktaVUhMVID:localhost:8800m.room.history_visibility$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkhHQ/ e !atnRTMliktaVUhMVID:localhost:8800m.room.join_rules$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwjGQ3 e !atnRTMliktaVUhMVID:localhost:8800m.room.power_levels$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 FQ']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwdEQ' e !atnRTMliktaVUhMVID:localhost:8800m.room.create$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ DQ']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8ApCQ? e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibility$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYhBQ/ e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rules$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8jAQ3 e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 @Q']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwd?Q' e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.create$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 >Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUp=Q? e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibility$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kh<Q/ e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rules$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0j;Q3 e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk :Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkkd9Q' e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 8Q']e !wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg 7Q']e !wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAs6Q))e !wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwp5Q? e !wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibility$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAh4Q/ e !wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rules$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91Mm3Q9 e !wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_alias$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEj2Q3 e !wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 1Q']e !wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAd0Q' e !wBkUBAjOznOyxrLchl:localhost:8800m.room.create$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU8/Q']ee !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY .Q']e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYp-Q? e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibility$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMh,Q/ e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.join_rules$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkgj+Q3 e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.power_levels$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw *Q']e !sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-518:localhost:8800$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E p {  5 1 HGR| {> Q']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-536:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQoQ? e !atnRTMliktaVUhMVID:localhost:8800m.room.history_visibility$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkgQ/ e !atnRTMliktaVUhMVID:localhost:8800m.room.join_rules$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwiQ3 e !atnRTMliktaVUhMVID:localhost:8800m.room.power_levels$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4 Q']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwcQ' e !atnRTMliktaVUhMVID:localhost:8800m.room.create$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ Q']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AoQ? e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibility$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYgQ/ e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rules$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8iQ3 e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0 Q']e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwcQ' e !PHkVrXAyfGkFtzSagu:localhost:8800m.room.create$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUoQ? e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibility$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kgQ/ e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rules$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0iQ3 e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk Q']e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkcQ' e !EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829$0C1SRZ8JvGiVFmRA6bFujPNnEk5MQr0F0QIlkbvN9N4r Q))e!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwo Q? e!wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibility$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAg Q/ e!wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rules$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MlQ9 e!wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_alias$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEiQ3 e!wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI Q']e!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAcQ' e!wBkUBAjOznOyxrLchl:localhost:8800m.room.create$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$bJdU8kuNoDUDs-9w_r_odFPOLVPKMvv2h4etQgGb_hU Q']e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.member@anon-20191002_181700-519:localhost:8829$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYoQ? e!sHRHoXzYrrPSlWBkoh:localhost:8800m.room.history_visibility$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM  w^HaeQa$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2796}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY"], "type": "m.room.test", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570042949457, "hashes": {"sha256": "QQAmbiQ5CJlSUacuiga2H4Wyp2Db4Vi53CI13s42d/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4ARozCkrWXeUPfPFdR4zRI37oxuG8kszAXjhSCYQ6IXk9fKx/jQHeYIn3ueFXYdk8sNw9qovDkm1JZrwjqdkBw"}}, "unsigned": {"age_ts": 1570042949457}}`eQa7$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2795}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM"], "type": "m.room.member", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-519", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-519:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570042948792, "hashes": {"sha256": "MsVI7PUgduC5qdfaFKlfN3lKmhS241ME7L4otbxDvfU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "M3rLnAKAPPQXsXGw/ayXYvQB8DSEbOcVVYZ/UPto1+aQCGfTKVu2WlpRRvl3yPDkJ751AcsipI2e94lgwX8+AA"}, "localhost:8829": {"ed25519:a_UxIG": "60mUSa+bYVKzITjfX8pQAwf8uo6Qceke/0n7FtKVx7jrNe0glh2Oo+69XqXRovLloMwQTZYMOETLQ/a13DosCQ"}}, "unsigned": {"age_ts": 1570042948792, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-518:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-518:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-518", "avatar_url": null}, "sender": "@anon-20191002_181700-518:localhost:8800"}]}}_eQa$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM!sHRHoXzYrrPSlWBkoh:localhost:8800{"token_id": 511, "stream_ordering": 2794}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E"], "prev_events": ["$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg"], "type": "m.room.history_visibility", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-518:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042947431, "hashes": {"sha256": "v9GyRaGAZbOY61WAIhszW+BlAEAqrUlJ98yv0VJPpbc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F1PazqoDDrFAQnn7j5vpa/adg9kkWH+6gQvArZukGFJq50iuDv9g/rUYGkRur0RaFIOugjCQ4sgbnnwq+qIbDA"}}, "unsigned": {"age_ts": 1570042947431}} \P f  x * }%8HL\&e3Q ]$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0m.room.power_levels!PHkVrXAyfGkFtzSagu:localhost:8800mښmڛ@anon-20191002_181700-533:localhost:8800 e'Q ]$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwm.room.member!PHkVrXAyfGkFtzSagu:localhost:8800mژmژ@anon-20191002_181700-533:localhost:8800 e'Q  ]$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4m.room.create!PHkVrXAyfGkFtzSagu:localhost:8800mڕ~mڕ@anon-20191002_181700-533:localhost:8800 ~e'Q ]$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUm.room.member!EhFUhsgQbBWmrnGmaz:localhost:8800mڌmڍ%@anon-20191002_181700-532:localhost:8800,}e?Q ]$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_km.room.history_visibility!EhFUhsgQbBWmrnGmaz:localhost:8800mڈCmڊ@anon-20191002_181700-531:localhost:8800$|e/Q ]$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0m.room.join_rules!EhFUhsgQbBWmrnGmaz:localhost:8800mڅmچ|@anon-20191002_181700-531:localhost:8800&{e3Q ]$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPkm.room.power_levels!EhFUhsgQbBWmrnGmaz:localhost:8800mڂhmڃ@anon-20191002_181700-531:localhost:8800 ze'Q ]$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkkm.room.member!EhFUhsgQbBWmrnGmaz:localhost:8800mm@anon-20191002_181700-531:localhost:8800y e'Q  ]$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQm.room.create!EhFUhsgQbBWmrnGmaz:localhost:8800m|Cm|@anon-20191002_181700-531:localhost:8800 xe'Q ]$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgm.room.member!wBkUBAjOznOyxrLchl:localhost:8800m\dm`@anon-20191002_181700-521:localhost:8800 we'Q ]$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAm.room.member!wBkUBAjOznOyxrLchl:localhost:8800mZtm[@anon-20191002_181700-522:localhost:8829!ve)Q ]$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIwm.room.aliases!wBkUBAjOznOyxrLchl:localhost:8800mW2mX@anon-20191002_181700-520:localhost:8800,ue?Q ]$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XAm.room.history_visibility!wBkUBAjOznOyxrLchl:localhost:8800mSmT@anon-20191002_181700-520:localhost:8800$te/Q ]$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91Mm.room.join_rules!wBkUBAjOznOyxrLchl:localhost:8800mPmQk@anon-20191002_181700-520:localhost:8800)se9Q ]$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEm.room.canonical_alias!wBkUBAjOznOyxrLchl:localhost:8800mLsmM@anon-20191002_181700-520:localhost:8800&re3Q ]$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIm.room.power_levels!wBkUBAjOznOyxrLchl:localhost:8800mI!mJ{@anon-20191002_181700-520:localhost:8800 qe'Q ]$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAm.room.member!wBkUBAjOznOyxrLchl:localhost:8800mEpmG6@anon-20191002_181700-520:localhost:8800p e'Q  ]$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFUm.room.create!wBkUBAjOznOyxrLchl:localhost:8800mBLmB@anon-20191002_181700-520:localhost:8800#oe-Q ] $JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dwm.room.redaction!sHRHoXzYrrPSlWBkoh:localhost:8800 m4m8@anon-20191002_181700-519:localhost:8829!ne)Q ] $BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmkm.room.message!sHRHoXzYrrPSlWBkoh:localhost:8800 m4m6u@anon-20191002_181700-519:localhost:8829 me'Q ]$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYgm.room.member!sHRHoXzYrrPSlWBkoh:localhost:8800m1bm3@anon-20191002_181700-519:localhost:8829le#Q ]$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8m.room.test!sHRHoXzYrrPSlWBkoh:localhost:8800m/Qm/T@anon-20191002_181700-518:localhost:8800 ke'Q ]$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspYm.room.member!sHRHoXzYrrPSlWBkoh:localhost:8800m,m-)@anon-20191002_181700-518:localhost:8800,je?Q ]$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyMm.room.history_visibility!sHRHoXzYrrPSlWBkoh:localhost:8800m'gm)h@anon-20191002_181700-518:localhost:8800 C Q   X]>d & j ^ ,% u Cp> v+DQ pjW}K82221e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g ^1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk 1e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ 1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE@1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE=1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM91e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE31e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg"1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLUv1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wl1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MUq1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye80e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcq1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY?1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY*1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ&1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLg1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sy1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U f1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM 1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g1e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU^1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0l1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg`1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIn1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgi1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsB1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7usn1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ#1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs *1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw *1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM #1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 21e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E '1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 ,1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s u1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA t VoD { P % Z/X- V R '# uJ + uJ  T ) } #wL!sHqFsJ!wNhIsLsgNVGc*Q!yWhIsLsgNVGcnELrDS:localhost:8800CC*Q!yWhIsLsgNVGcnELrDS:localhost:8800BB*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!yWhIsLsgNVGcnELrDS:localhost:8800DD*Q!yfizglmCXdcqCgDrTr:localhost:8800 { {*Q!yfizglmCXdcqCgDrTr:localhost:8800 z z*Q!yfizglmCXdcqCgDrTr:localhost:8800 y y*Q!yfizglmCXdcqCgDrTr:localhost:8800 x x*Q!yfizglmCXdcqCgDrTr:localhost:8800 w w*Q!yfizglmCXdcqCgDrTr:localhost:8800 v v*Q!yfizglmCXdcqCgDrTr:localhost:8800 u u*Q!yfizglmCXdcqCgDrTr:localhost:8800 t t(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNBpypJDRMlBdOcLlW:localhost:8800*Q!yWhIsLsgNVGcnELrDS:localhost:8800?? N*Q!yWhIsLsgNVGcnELrDS:localhost:8800FF*Q!yWhIsLsgNVGcnELrDS:localhost:8800EE(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800(Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!ybXveQoxPVhjpKHAkG:localhost:8800 *Q!zHBgbzUZHshNGZvIBS:localhost:8800 A A*Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ @*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? ?*Q!zHBgbzUZHshNGZvIBS:localhost:8800 > >*Q!zHBgbzUZHshNGZvIBS:localhost:8800 = =*Q!zHBgbzUZHshNGZvIBS:localhost:8800 < <*Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; ;*Q!zHBgbzUZHshNGZvIBS:localhost:8800 : :*Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 9*Q!zHBgbzUZHshNGZvIBS:localhost:8800 8 8V*Q!yNfCaBMPezurwkJRAX:localhost:8800oo*Q!yNfCaBMPezurwkJRAX:localhost:8800nn*Q!yNfCaBMPezurwkJRAX:localhost:8800mm*Q!yNfCaBMPezurwkJRAX:localhost:8800ll*Q!yNfCaBMPezurwkJRAX:localhost:8800kk*Q!yNfCaBMPezurwkJRAX:localhost:8800jj*Q!yWhIsLsgNVGcnELrDS:localhost:8800TT*Q!yWhIsLsgNVGcnELrDS:localhost:8800MM*Q!yLccBXjjEasExpsXlt:localhost:8800 *Q!yWhIsLsgNVGcnELrDS:localhost:8800AA*Q!yWhIsLsgNVGcnELrDS:localhost:8800@@*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800  *Q!zFdNewlKnUiMBxnYrN:localhost:8800  *Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!zFdNewlKnUiMBxnYrN:localhost:8800*Q!yfizglmCXdcqCgDrTr:localhost:8800 s s*Q!yfizglmCXdcqCgDrTr:localhost:8800 r r*Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 0*Q!yTQmLDAxZscWKLMSWh:localhost:8800 / /*Q!yTQmLDAxZscWKLMSWh:localhost:8800 . .*Q!yTQmLDAxZscWKLMSWh:localhost:8800 - -*Q!yTQmLDAxZscWKLMSWh:localhost:8800 , ,*Q!yTQmLDAxZscWKLMSWh:localhost:8800 + +*Q!yTQmLDAxZscWKLMSWh:localhost:8800 * **Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) )*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( (*Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' '*Q!yTQmLDAxZscWKLMSWh:localhost:8800 & &*Q!yTQmLDAxZscWKLMSWh:localhost:8800 % %*Q!yTQmLDAxZscWKLMSWh:localhost:8800 $ ${ ; H(;ieeQa_$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2800}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-520:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042954316, "hashes": {"sha256": "PZN/99Vk+DNPsErSYaYOCDZWFxcDborvuc9ibbtOg8g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PFTnL5V7YIYQh8Ke13laPlWZlr3jexcDw/zyGna/JQF6R3plj/j9eMgaEhXDKf6wwGpV9v9TbohmOk2ds3qkCQ"}}, "unsigned": {"age_ts": 1570042954316}}&deQ$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw!sHRHoXzYrrPSlWBkoh:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 2799}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg"], "content": {}, "depth": 10, "hashes": {"sha256": "nQN3+lD5hjtH7n5ZI2Xc22LSKS49CGBH/m9T4YxKsvM"}, "origin": "localhost:8829", "origin_server_ts": 1570042950827, "prev_events": ["$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk"], "prev_state": [], "redacts": "$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk", "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-519:localhost:8829", "type": "m.room.redaction", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "XuDEHIGU5V2CEIWCWb/lZpFkQ8exVs2UF+5Zj/HBxJe/6Gyr4BzXcv+H73SWWvsKZYyTN+/CHOs3mrvCkK2nBA"}}, "unsigned": {"age_ts": 1570042950827}}&LceQc#$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk!sHRHoXzYrrPSlWBkoh:localhost:8800{"outlier": false, "stream_ordering": 2798}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg"], "content": {}, "depth": 9, "hashes": {"sha256": "w4/U5PBmojLjFfp9AmhbTdgHJLh7Nv0joNp42RnxNAs"}, "origin": "localhost:8829", "origin_server_ts": 1570042950810, "prev_events": ["$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg"], "prev_state": [], "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-519:localhost:8829", "type": "m.room.message", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "rkRNsApZoSOPgpTGfhZCcEsgg75s/nuJxR/xiY8t4VrGhGbbLexZG7H0gTKhocupOZgD1XaqmRgQppRQd7LGDg"}}, "unsigned": {"age_ts": 1570042950810}}4beQ1#$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg!sHRHoXzYrrPSlWBkoh:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2797}{"auth_events": ["$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw", "$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y", "$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-519", "membership": "join"}, "depth": 8, "hashes": {"sha256": "hFYvgnwKwOhUKrJvG6KdRnK9h+fu+IrkJj9jPfWcU1M"}, "origin": "localhost:8829", "origin_server_ts": 1570042949986, "prev_events": ["$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8"], "prev_state": [], "room_id": "!sHRHoXzYrrPSlWBkoh:localhost:8800", "sender": "@anon-20191002_181700-519:localhost:8829", "state_key": "@anon-20191002_181700-519:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P35SvTNyWyBDhBVrlTih8H8uZGIw2vAh5vDvgNoFdQK2Vxkorg6tUXUarN/T4IMEvG6LQHzXafGH06w55+LjBw"}, "localhost:8829": {"ed25519:a_UxIG": "g4QmPMGBO0qWaLHZRggg0YNl4JIqYo/K8zB4KJoVkL2u8QUBn2AZ1VBK3BN1UPKaAzmPhAx8BR7ZZWomqTu3Cw"}}, "unsigned": {"age": 109, "replaces_state": "$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY"}} a} { y w u sqomkigeca~beeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800~aeeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~`eeQ$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800~_eeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800~^eeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~]eeQ$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800~\eeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800~[eeQ$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~ZeeQ$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~YeeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800~XeeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~WeeQ$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~VeeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800~UeeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~TeeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~SeeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~ReeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~QeeQ$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~PeeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~OeeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~NeeQ$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~MeeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~LeeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~KeeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~JeeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~IeeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~HeeQ$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800~GeeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800~FeeQ$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~EeeQ$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU!wBkUBAjOznOyxrLchl:localhost:8800~DeeQ$OYxRrWMC4D4SRyaLndIY4p_dFTJG_LwjBEzbI8hOMYg$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg!sHRHoXzYrrPSlWBkoh:localhost:8800 Dj8p> v D  | J  P  W % ] +c1i7o= wE}KQ1e$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 61e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw /1e$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiY1e$n9AXGo3syz3x1KParxovEyiAfDQ2Am3wXYiQlEhQc1ky1e$n7YRi07BfqD_u4XRrxbWXguOCfvl3z_ZAMz2Bi6gH6E1e$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh401e$n5BpgVBSBeIJ4u_JcZdczweYdCLD5BsksPSsprpnFSw=1e$n43ZPW4uOO_qJ4LsXJGD3M-cJAp8sY47gyRZsQTRLtk61e$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU1e$n04uQ8T-cDea6Rg3hrDx3KU1ZJy08hkS7ozAd0rrHHI-1e$mz4vLcZad2EbEcZmIVISkFNLeMugmAD95D_M0idTmKE1e$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU1e$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0x1e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mcl1e$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXop0e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_gN1e$msTkRaKaOUXhDlvi3XKgSKRx40wBAHpFrqs7K3sy4nQ0e$mrNLzeg6YzgDYGgFE2kks7BneEC1L0wmwBvEyu7g7ko/1e$mphwJEoikqverr8meA74-n9RcQm6z09ui4RoQ-g7ECM,1e$mowakY9m0ZiYQUHSpTtHXCozQPSy2iBK7d8M4Yyysq01e$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw~1e$mgQ04iBsk1krKeMCuAIhKqZ2oB9UGF1rdigwA1H8JzY1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g @1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG81e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk1e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo#1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ41e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpIT1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0Z1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 0e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUF1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM421e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVc1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE`1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1KcC1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIc1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknAS1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAIV1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Yb1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ 1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI g1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio"1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8i1e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg;1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc  IvI}W* ^ % z A  Y  q 7 O g-f3Um3W{Mf8 R$,IC)#__ANON__-24:localhost:8800localhost:8800,HC)#__ANON__-23:localhost:8800localhost:8800,GC)#__ANON__-22:localhost:8800localhost:8800,FC)#__ANON__-21:localhost:8800localhost:8800,EC)#__ANON__-20:localhost:8800localhost:8800,DC)#__ANON__-19:localhost:8800localhost:8800,CC)#__ANON__-18:localhost:8800localhost:8800,BC)#__ANON__-17:localhost:8800localhost:8800,AC)#__ANON__-16:localhost:8800localhost:8800,@C)#__ANON__-15:localhost:8800localhost:8800;?a)#publicroomalias_with_topic:localhost:8800localhost:8800@>k)#publicroomalias_with_name_topic:localhost:8800localhost:88008=[)#publicroomalias_no_name:localhost:8800localhost:8800,<C)#__ANON__-14:localhost:8800localhost:8800,;C)#__ANON__-13:localhost:8800localhost:88008:[)#test-20191002_181700-42:localhost:8800localhost:880089[)#test-20191002_181700-41:localhost:8800localhost:880088[)#test-20191002_181700-40:localhost:8800localhost:8800,7C)#__ANON__-12:localhost:8800localhost:880086[)#test-20191002_181700-39:localhost:8800localhost:880085[)#test-20191002_181700-38:localhost:8800localhost:880084[)#test-20191002_181700-37:localhost:8800localhost:880083[)#test-20191002_181700-36:localhost:8800localhost:880082[)#test-20191002_181700-35:localhost:8800localhost:880081[)#test-20191002_181700-34:localhost:8800localhost:880080[)#test-20191002_181700-33:localhost:8800localhost:88008/[)#test-20191002_181700-32:localhost:8800localhost:88008.[)#test-20191002_181700-31:localhost:8800localhost:88008-[)#test-20191002_181700-30:localhost:8800localhost:88008,[)#test-20191002_181700-29:localhost:8800localhost:8800.+G)#worldreadable:localhost:8800localhost:88001*M)#nonworldreadable:localhost:8800localhost:8800-)E)#listingtest0:localhost:8800localhost:8800-(E)#listingtest2:localhost:8800localhost:8800-'E)#listingtest1:localhost:8800localhost:88008&[)#test-20191002_181700-28:localhost:8800localhost:88008%[)#test-20191002_181700-27:localhost:8800localhost:88008$[)#test-20191002_181700-26:localhost:8800localhost:88008#[)#test-20191002_181700-25:localhost:8800localhost:88008"[)#test-20191002_181700-24:localhost:8800localhost:88008![)#test-20191002_181700-23:localhost:8800localhost:88008 [)#test-20191002_181700-22:localhost:8800localhost:88008[)#test-20191002_181700-21:localhost:8800localhost:88008[)#test-20191002_181700-20:localhost:8800localhost:88008[)#test-20191002_181700-19:localhost:8800localhost:88008[)#test-20191002_181700-18:localhost:8800localhost:88008[)#test-20191002_181700-17:localhost:8800localhost:88008[)#test-20191002_181700-16:localhost:8800localhost:88008[)#test-20191002_181700-15:localhost:8800localhost:88008[)#test-20191002_181700-14:localhost:8800localhost:88008[)#test-20191002_181700-13:localhost:8800localhost:88008[)#test-20191002_181700-12:localhost:8800localhost:88008[)#test-20191002_181700-11:localhost:8800localhost:88008[)#test-20191002_181700-10:localhost:8800localhost:88007Y)#test-20191002_181700-9:localhost:8800localhost:88007Y)#test-20191002_181700-8:localhost:8800localhost:88007Y)#test-20191002_181700-7:localhost:8800localhost:88007Y)#test-20191002_181700-6:localhost:8800localhost:88007Y)#test-20191002_181700-5:localhost:8800localhost:88007Y)#test-20191002_181700-4:localhost:8800localhost:8800+ A)#__ANON__-9:localhost:8800localhost:88007 Y)#test-20191002_181700-3:localhost:8800localhost:8800+ A)#__ANON__-8:localhost:8800localhost:8800+ A)#__ANON__-5:localhost:8800localhost:8800$ 3)#☕:localhost:8800localhost:88007Y)#test-20191002_181700-2:localhost:8800localhost:88007Y)#test-20191002_181700-1:localhost:8800localhost:8800+A)#__ANON__-4:localhost:8800localhost:8800+A)#__ANON__-3:localhost:8800localhost:8800+A)#__ANON__-2:localhost:8800localhost:8800+A)#__ANON__-1:localhost:8800localhost:8800+A)#__ANON__-0:localhost:8800localhost:8800.G)#30room-create:localhost:8800localhost:8800 P^$P3QQ)#astest-__ANON__-31:localhost:8800localhost:88008P[)#test-20191002_181700-47:localhost:8800localhost:8800)OC##__ANON__-26:localhost:8800example.org8N[)#test-20191002_181700-46:localhost:8800localhost:88008M[)#test-20191002_181700-45:localhost:8800localhost:88008L[)#test-20191002_181700-44:localhost:8800localhost:8800,KC)#__ANON__-25:localhost:8800localhost:88008J[)#test-20191002_181700-43:localhost:8800localhost:8800 4 h< p d]c@anon-20191002_181700-555:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgo127.0.0.1d]c@anon-20191002_181700-552:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07Ao127.0.0.1d]c@anon-20191002_181700-551:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_Qo127.0.0.1d]c@anon-20191002_181700-549:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-Fxgfwo127.0.0.1a[a@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaUQ6XkF1QW4wajMyUC1JLgowMDJmc2lnbmF0dXJlIE-_kuf73Jp-vYVvHnm5pGZPUIVOn9-qpj3OQ8fgERaZCg127.0.0.1,a[a@anon-20191002_181700-54:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0ga3B5cT06bUxMOlE9QDIyUwowMDJmc2lnbmF0dXJlIDHi0lH4Xkw9v7dPBP5dOGD6JmGRuij0JEQR6YJkb_oxCg127.0.0.1-d]c@anon-20191002_181700-550:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwo127.0.0.1d]c@anon-20191002_181700-548:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6go127.0.0.1d]c@anon-20191002_181700-545:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQo127.0.0.1d]c@anon-20191002_181700-543:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgo127.0.0.1d]c@anon-20191002_181700-554:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgo127.0.0.1  }tieQau$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2804}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE"], "type": "m.room.join_rules", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042957973, "hashes": {"sha256": "XW4CsnGCu5OyHka/EvzJCwuvTjX8FDxz3mzze2A2RWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xsXTdIQELQ2nrRBCeuR4wVnETh64bXf6/91QMdFLKZenu4znbfmiqMOG0X7tO9TqG8tPy5/B9q7lLHgMim5RBw"}}, "unsigned": {"age_ts": 1570042957973}}heQa9$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2803}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI"], "type": "m.room.canonical_alias", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"alias": "#test-20191002_181700-43:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042956915, "hashes": {"sha256": "ldYu/JS9Mr6QunMoSIu99otJBKtz5XctaDoaIYin+qU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Il7ybsNv/oz0ivFZZdOsU8o1jfBuzXiAcBdukRixTW+YLplcSze+6dWBKLCmoBvLLKWMxaGIca362X8/TycuBw"}}, "unsigned": {"age_ts": 1570042956915}}kgeQac$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2802}{"auth_events": ["$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "type": "m.room.power_levels", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"users": {"@anon-20191002_181700-520:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042956065, "hashes": {"sha256": "+Ps17FpY76uTrQrme2CiTq3ltxPK+yG5wn0OcZKIn64"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FXS2WEPn1pjKxIssxicY4Qfnw++yUF+/eQQ5vcl56F9WvDtPF216qH1kHHE4Fj0RNB/w0woXmdmrsVwsya2LAg"}}, "unsigned": {"age_ts": 1570042956065}}vfeQay$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2801}{"auth_events": ["$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU"], "prev_events": ["$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU"], "type": "m.room.member", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-520", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-520:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042955120, "hashes": {"sha256": "SSghDA7s88uvH9Q/LqG/FTmz6If3TY/nwZmnfCBlXhI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gpxYD67zo5P8W81tiZLMY+1XGUIkBZSkzdMuNqQM7DKisZK1dL0wUx1KZhs9oMW4LkdRetfPwg5y9xy5ukcTDQ"}}, "unsigned": {"age_ts": 1570042955120}}  w]VmeQa9$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 513, "stream_ordering": 2808}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M"], "prev_events": ["$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw"], "type": "m.room.member", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-521:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-521", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-521:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042960996, "hashes": {"sha256": "MqL78Dyx/ZnSsiaAjTHrC+plcdas2m8kbHHSdyoyVuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t9E/eMncsQgW1IHddZ/kEHr2K6+R1aSEcMwgnSRdruFlw/TQe/SGwBe781RL44Vz1TFW4VmzV1FgVFN2hDgWDg"}}, "unsigned": {"age_ts": 1570042960996}}rleQ1$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2807}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-522", "membership": "join"}, "depth": 8, "hashes": {"sha256": "cpfsy/8w+Mb7WXGeqaWfqLiAncDgzFOzbCBgv+3QS4s"}, "origin": "localhost:8829", "origin_server_ts": 1570042960500, "prev_events": ["$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw"], "prev_state": [], "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-522:localhost:8829", "state_key": "@anon-20191002_181700-522:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Dw7MVm5IkQXDPl+BeECG9cUTkWi8DG4BHD52zhW6OP9uTzExrydLzQPGG1LDLoOtE9cFEVyhiI7f2jJMtIoCw"}, "localhost:8829": {"ed25519:a_UxIG": "U6VQH8S4WNcjOPVDtWG+/KpNK09I3KnK2AGalpigs0jSlRLOfCxmtcGabwt+Uyj3nRa1y/jVB1/deJHfdZhkDg"}}, "unsigned": {"age": 170}} keQaM$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2806}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA"], "type": "m.room.aliases", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"aliases": ["#test-20191002_181700-43:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042959666, "hashes": {"sha256": "+DidC0CKJe5X8Kgo1J3fhGND3JMyDI5H+eV3+UeomSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cCI13ShJVsjMYfmJhjpfqUNyqw1CqZKBjsLBnF8cxRTSA/SToixHueo91/49LAmyaG9BBuOah3Vl9jPrusLVCQ"}}, "unsigned": {"age_ts": 1570042959666}}jeQa$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800{"token_id": 512, "stream_ordering": 2805}{"auth_events": ["$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI", "$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU", "$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA"], "prev_events": ["$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M"], "type": "m.room.history_visibility", "room_id": "!wBkUBAjOznOyxrLchl:localhost:8800", "sender": "@anon-20191002_181700-520:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042958731, "hashes": {"sha256": "FfX55ijdM1bX9vnXhDy6MjfdRK6Sic6KhHcIUk/TOgg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Sdq2EBkAf4s9szOSpjPFCuR7UmjiIsBC1+/K9hYi4JsNalbgbpFvAaQI48cHpILNBvZV0KI3lspi+M4jJuZ7DA"}}, "unsigned": {"age_ts": 1570042958731}} M> D  Y | J    Q  W_ % ] +j82 j8 r'S@xF- vM!cpp1e$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM ~1e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic h1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw g1e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 421e$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U 1e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh81e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f81e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s`1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEww1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY1e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU _1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw 1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSki1e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4l1e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4'0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk61e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk1e$xRNpKACtOyHVG7DKyW_sigoxflsG765d8uzOxU9tekk1e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xKfLvsvELDI0Tx74_sHfwaxq6-4zNB3DYwLzdBLOWvo1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo0e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAcd0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT471e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMk1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$x7sv_JmKgY9Kv6wVjQD06OTm0I8tFSusbMNI8F2BAok1e$x7kU7QSiXYFfPisFuKAVbLCvIcPRlYq_ZxsnWBs0IQE1e$x7LqL49fzaklops6loJ1ay_ESbdlyggZ4viLz6zVDks@1e$x3J6jqtSs0hfWn8Q-jrSTPdeMwUNbtknjegpNrcdl4s;1e$x3EVqaPbYrHmtFQtsMgJgdCO5wL22jwd_fzk9USYiV80e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0E1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g N1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN81e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIy1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$wjs2WFLQhPDZ2eWH6Ji-Af8oFUbuDMq_Xs4DvmV5VGY1e$wjP9GSm8BluNPdthiwNkvNfGg2r1MyWr8Sa38cYesa81e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wgVkWdcbrmsnfwxKmZQ9mnIvcIe786iaok7jhbCDYeI1e$wfHP18AIlQqd3Ps1fuvrNL2K6UPDw_4lqCxUs1g86To1e$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A1e$wbmH_Gs8Syvs8WyflBjkaDManSMelFVei9rGBqGHeTI1e$wbj7JBSvKM70pLG5iORS-YU4uiSpQEZ1QmqaPQjKtjI1e$wZdQubNW7DBzeGPxtloLCXNJdQ3Mb-yQfyWzFr-1ie41e$wZ6QD5C3Ddoo-Upub5ahk6_YWprdIkqMN9Yf_m1VaEg1e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw1e$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4%1e$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs0e$wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ01e$wI2ah3tcnG04YiqsVhFrEwJbfNHAdMMagXBFJkkzGxcK1e$wHUd6BFG1DCiuM0mudFwCKSTJtu_QOlNGDxpJFtjvTc<1e$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd81e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2cS1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnoo-1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc =1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 81e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo 1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY 1e$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc+1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8q1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE A1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o(1e$x0gp51wToKp10Y0EvnRz9llcqbjsD92lafOu9WSpvd4<1e$x-D3MH6jZ7B8zpXQu63K5WAfqetrhp-M02zv-Yopp8E{1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s1e$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg }Lwj]%K v D  | J  Q P  E0 V8 $  p+W \ *bi7> p? }1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs 1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog #1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y!1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I81e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ 1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUc1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsl1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkId1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg +1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc 1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ V1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIH1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF440e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ#1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp41e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYy1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo!1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo91e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI81e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc81e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8 1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwR1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAX1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo%1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s}1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIs1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzoq1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzEm1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ 1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAY1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo N1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw 1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQX1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 l9r  V :qS5lE{ e]]Q=$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM@anon-20191002_181700-546:localhost:8829@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800inviteanon-20191002_181700-546Cz e]]Q=$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590@anon-20191002_181700-545:localhost:8800@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800joinanon-20191002_181700-545Cy e]]Q=$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4@anon-20191002_181700-544:localhost:8829@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800joinanon-20191002_181700-544Ex e]]Q=$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4@anon-20191002_181700-544:localhost:8829@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800inviteanon-20191002_181700-544Cw e]]Q=$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI@anon-20191002_181700-543:localhost:8800@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800joinanon-20191002_181700-543Cv e]]Q=$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA@anon-20191002_181700-542:localhost:8829@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800joinanon-20191002_181700-542Eu e]]Q=$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U@anon-20191002_181700-542:localhost:8829@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800inviteanon-20191002_181700-542Ct e]]Q=$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg@anon-20191002_181700-541:localhost:8800@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800joinanon-20191002_181700-541Cs e]]Q=$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0@anon-20191002_181700-540:localhost:8829@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800joinanon-20191002_181700-540Er e]]Q=$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck@anon-20191002_181700-540:localhost:8829@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800inviteanon-20191002_181700-540Cq e]]Q=$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8@anon-20191002_181700-539:localhost:8800@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800joinanon-20191002_181700-539Cp e]]Q=$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0@anon-20191002_181700-538:localhost:8800@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800joinanon-20191002_181700-538Co e]]Q=$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk@anon-20191002_181700-537:localhost:8800@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800joinanon-20191002_181700-537Cn e]]Q=$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ@anon-20191002_181700-536:localhost:8800@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800joinanon-20191002_181700-536Cm e]]Q=$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw@anon-20191002_181700-535:localhost:8800@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800joinanon-20191002_181700-535Cl e]]Q=$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A@anon-20191002_181700-534:localhost:8800@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800joinanon-20191002_181700-534Ck e]]Q=$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw@anon-20191002_181700-533:localhost:8800@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800joinanon-20191002_181700-533Cj e]]Q=$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU@anon-20191002_181700-532:localhost:8800@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800joinanon-20191002_181700-532Ci e]]Q=$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk@anon-20191002_181700-531:localhost:8800@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800joinanon-20191002_181700-531Ch e]]Q=$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg@anon-20191002_181700-521:localhost:8800@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800joinanon-20191002_181700-521 d@hdo z 8 C H p {Z# HeQ']$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-522:localhost:8829joinpGeQ))$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800m.room.aliaseslocalhost:8800mFeQ? $HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA!wBkUBAjOznOyxrLchl:localhost:8800m.room.history_visibilityeEeQ/ $_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M!wBkUBAjOznOyxrLchl:localhost:8800m.room.join_rulesjDeQ9 $vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800m.room.canonical_aliasgCeQ3 $9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI!wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levels BeQ']$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-520:localhost:8800joinmZeQ? $qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800m.room.history_visibilityeYeQ/ $FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800m.room.join_rulesgXeQ3 $OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800m.room.power_levels WeQ']$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-535:localhost:8800joinaVeQ' $0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800m.room.create UeQ']$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-534:localhost:8800joinmTeQ? $u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800m.room.history_visibilityeSeQ/ $So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800m.room.join_rulesgReQ3 $ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800m.room.power_levels QeQ']$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800m.room.member@anon-20191002_181700-533:localhost:8800joinaPeQ' $T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800m.room.create OeQ']$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-532:localhost:8800joinmNeQ? $exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.history_visibilityeMeQ/ $GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.join_rulesgLeQ3 $5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.power_levels KeQ']$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.member@anon-20191002_181700-531:localhost:8800joinaJeQ' $Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800m.room.create IeQ']$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg!wBkUBAjOznOyxrLchl:localhost:8800m.room.member@anon-20191002_181700-521:localhost:8800join $ 6 H D @ <84EWi{ ;Q]e!sfXbvAcOUJhzGwWEpZ:localhost:8800@anon-20191002_181700-210:localhost:8800$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9kinvite:Q]e!sfXbvAcOUJhzGwWEpZ:localhost:8800@anon-20191002_181700-209:localhost:8800$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0kjoini9Q1e!YufaOfAlruTdjyUCwO:localhost:8800@34:localhost:8800$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Mjoin8Q]e!YufaOfAlruTdjyUCwO:localhost:8800@anon-20191002_181700-208:localhost:8800$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUjoini7Q1e!ifQxHmNAcSSGHVMjfi:localhost:8800@33:localhost:8800$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzIjoin6Q]e!ifQxHmNAcSSGHVMjfi:localhost:8800@anon-20191002_181700-207:localhost:8800$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxgjoini5Q1e!EABRjdYuYumMhLSwIa:localhost:8800@32:localhost:8800$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkmsjoin4Q]e!EABRjdYuYumMhLSwIa:localhost:8800@anon-20191002_181700-206:localhost:8800$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZMjoini3Q1e!FIOuvzpMhoERunVYYA:localhost:8800@31:localhost:8800$NfpUuYNcKJY_Ix8TvfRdgRM68gX-OxAQfCTMbwYjxkEjoin2Q]e!FIOuvzpMhoERunVYYA:localhost:8800@anon-20191002_181700-205:localhost:8800$nAqLJkH4EI0qH1JOdB1R-gkayaK97NvJA48mmoc1qiYjoini1Q1e!zNBpypJDRMlBdOcLlW:localhost:8800@30:localhost:8800$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYjoin0Q]e!zNBpypJDRMlBdOcLlW:localhost:8800@anon-20191002_181700-204:localhost:8800$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8join/Q]e!TcaopYfMoJFEcjYRzJ:localhost:8800@anon-20191002_181700-203:localhost:8800$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Ejoinj.Q1e!BckZfhQgrcyiMhEAAJ:localhost:8800@28:localhost:8800$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQkleave-Q]e!BckZfhQgrcyiMhEAAJ:localhost:8800@anon-20191002_181700-202:localhost:8800$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYjoin,Q]e!KXMUzALpMMMKqoQXUS:localhost:8800@anon-20191002_181700-201:localhost:8800$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxAjoin+Q]e!NfaPEGKjnUDUTavzol:localhost:8800@anon-20191002_181700-200:localhost:8800$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4join*Q]e!JGhlAUflyNxErGGZZu:localhost:8800@anon-20191002_181700-199:localhost:8800$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfpsjoin)Q]e!tkajvIKHoOMWGsReBs:localhost:8800@anon-20191002_181700-198:localhost:8800$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0join(Q]e!fcdNYFWFyxmdpKAknc:localhost:8800@anon-20191002_181700-197:localhost:8800$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIjoin'Q]e!MWCLSWWGdWcSivNVLI:localhost:8800@anon-20191002_181700-195:localhost:8800$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cjoin&Q]e!erBPdgtUsiOfIKUkho:localhost:8800@anon-20191002_181700-194:localhost:8800$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEjoin%Q]e!dWgOTucBVQBKZjfndN:localhost:8800@anon-20191002_181700-193:localhost:8800$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQjoin$Q]e!hSzBsirdPWHtVjagXn:localhost:8800@anon-20191002_181700-192:localhost:8800$WCEgOMPJopRE8Hf8qDkV7C_wVpIVeNPzArHJ4Dxs8AMjoin#Q]e!mfzIRinBAGGrZvQAuI:localhost:8800@anon-20191002_181700-191:localhost:8800$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVwjoini"Q1e!FPcQcheNebvdFvmOnr:localhost:8800@17:localhost:8800$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kukjoin!Q]e!FPcQcheNebvdFvmOnr:localhost:8800@anon-20191002_181700-190:localhost:8800$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrcjoini Q1e!vOfeZvbtpuHfoqShFl:localhost:8800@16:localhost:8800$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntUjoinQ]e!vOfeZvbtpuHfoqShFl:localhost:8800@anon-20191002_181700-189:localhost:8800$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNojoiniQ1e!EieRtaCFZJJCIOkRPp:localhost:8800@15:localhost:8800$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088XtgpsjoinQ]e!EieRtaCFZJJCIOkRPp:localhost:8800@anon-20191002_181700-188:localhost:8800$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEjoiniQ1e!NQgavrmiCPUVaVjssy:localhost:8800@14:localhost:8800$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Prukjoin g i 4 ih5 g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5Jkowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgo!1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQo g * T~=gg]!c@anon-20191002_181700-535:localhost:8800RWVMFNQDZQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQog]!c@anon-20191002_181700-538:localhost:8800PJMZGLQCBZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAog]!c @anon-20191002_181700-534:localhost:8800RHYMUWAILZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDExTDdPNGoubjk7Tko2WkMKMDAyZnNpZ25hdHVyZSAXsnk-cD970UVzv1G8lP_F8ew18BlEvFdq7W40ykYUGQog]!c @anon-20191002_181700-533:localhost:8800TYQEWPDZRPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAog]!c @anon-20191002_181700-534:localhost:8800FBPWXONJWMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgog]!c @anon-20191002_181700-531:localhost:8800HVNAEYFAYKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88Aog]!c@anon-20191002_181700-532:localhost:8800FXXARIFXSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwog~]!c@anon-20191002_181700-529:localhost:8800WXKOXWYNOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgog}]!c@anon-20191002_181700-527:localhost:8800BACKHRSCZNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgog|]!c@anon-20191002_181700-526:localhost:8800CNSENJMXXVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAog{]!c@anon-20191002_181700-525:localhost:8800DQXQXDJYETMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQo 8l D `8t]c!E@anon-20191002_181700-536:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG44ZXZhVmlpTmw4RXZVcDkKMDAyZnNpZ25hdHVyZSCJxE2NCLxCR97piOWjvXRyqFAiHMKXYXO9_HBtg3UnTQoABPPMMQYEY127.0.0.1Perl + Net::Async::HTTP/0.44m*s]c!E@anon-20191002_181700-535:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQoRWVMFNQDZQ127.0.0.1Perl + Net::Async::HTTP/0.44mگ҃r]c!E@anon-20191002_181700-534:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgoFBPWXONJWM127.0.0.1Perl + Net::Async::HTTP/0.44mڤq]c!E@anon-20191002_181700-533:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAoTYQEWPDZRP127.0.0.1Perl + Net::Async::HTTP/0.44mڕ(p]c!E@anon-20191002_181700-532:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwoFXXARIFXSS127.0.0.1Perl + Net::Async::HTTP/0.44mڋYo]c!E@anon-20191002_181700-531:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88AoHVNAEYFAYK127.0.0.1Perl + Net::Async::HTTP/0.44m{n]c!E@anon-20191002_181700-529:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgoWXKOXWYNOL127.0.0.1Perl + Net::Async::HTTP/0.44mvm]c!E@anon-20191002_181700-527:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgoBACKHRSCZN127.0.0.1Perl + Net::Async::HTTP/0.44mr2l]c!E@anon-20191002_181700-526:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAoCNSENJMXXV127.0.0.1Perl + Net::Async::HTTP/0.44mok]c!E@anon-20191002_181700-525:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQoDQXQXDJYET127.0.0.1Perl + Net::Async::HTTP/0.44ml Bhq<a,Z% Q  L  z G  s > l 7 c.Z'SJxCh3_*4]@anon-24]@anon-20191002_181700-583:localhost:8800m44]@anon-20191002_181700-524:localhost:8800m44]@anon-20191002_181700-523:localhost:8800m44]@anon-20191002_181700-521:localhost:8800m44]@anon-20191002_181700-520:localhost:8800m42[@anon-20191002_181700-51:localhost:8800m4"4]@anon-20191002_181700-518:localhost:8800m44]@anon-20191002_181700-516:localhost:8800m44]@anon-20191002_181700-514:localhost:8800m44]@anon-20191002_181700-582:localhost:8800m44]@anon-20191002_181700-581:localhost:8800m44]@anon-20191002_181700-580:localhost:8800m42[@anon-20191002_181700-57:localhost:8800m4*4]@anon-20191002_181700-579:localhost:8800m44]@anon-20191002_181700-578:localhost:8800m44]@anon-20191002_181700-577:localhost:8800m44]@anon-20191002_181700-576:localhost:8800m44]@anon-20191002_181700-575:localhost:8800m44]@anon-20191002_181700-574:localhost:8800m44]@anon-20191002_181700-573:localhost:8800m44]@anon-20191002_181700-572:localhost:8800m44]@anon-20191002_181700-571:localhost:8800m44]@anon-20191002_181700-570:localhost:8800m42[@anon-20191002_181700-56:localhost:8800m4)4]@anon-20191002_181700-569:localhost:8800m44]@anon-20191002_181700-568:localhost:8800m44]@anon-20191002_181700-567:localhost:8800m44]@anon-20191002_181700-566:localhost:8800m44]@anon-20191002_181700-565:localhost:8800m44]@anon-20191002_181700-564:localhost:8800m44]@anon-20191002_181700-563:localhost:8800m44]@anon-20191002_181700-562:localhost:8800m44]@anon-20191002_181700-561:localhost:8800m44]@anon-20191002_181700-560:localhost:8800m42[@anon-20191002_181700-55:localhost:8800m4(4]@anon-20191002_181700-558:localhost:8800m44]@anon-20191002_181700-557:localhost:8800m44]@anon-20191002_181700-556:localhost:8800m44]@anon-20191002_181700-555:localhost:8800m44]@anon-20191002_181700-554:localhost:8800m44]@anon-20191002_181700-552:localhost:8800m44]@anon-20191002_181700-551:localhost:8800m44]@anon-20191002_181700-550:localhost:8800m42[@anon-20191002_181700-54:localhost:8800m4'2[@anon-20191002_181700-54:localhost:8800m4&4]@anon-20191002_181700-549:localhost:8800m44]@anon-20191002_181700-548:localhost:8800m44]@anon-20191002_181700-545:localhost:8800m44]@anon-20191002_181700-543:localhost:8800m44]@anon-20191002_181700-541:localhost:8800m42[@anon-20191002_181700-53:localhost:8800m4%2[@anon-20191002_181700-53:localhost:8800m4$4]@anon-20191002_181700-539:localhost:8800m44]@anon-20191002_181700-538:localhost:8800m44]@anon-20191002_181700-537:localhost:8800m44]@anon-20191002_181700-536:localhost:8800m44]@anon-20191002_181700-535:localhost:8800m44]@anon-20191002_181700-534:localhost:8800m44]@anon-20191002_181700-533:localhost:8800m44]@anon-20191002_181700-532:localhost:8800m44]@anon-20191002_181700-531:localhost:8800m42[@anon-20191002_181700-52:localhost:8800m4#4]@anon-20191002_181700-529:localhost:8800m44]@anon-20191002_181700-527:localhost:8800m44]@anon-20191002_181700-526:localhost:8800m44]@anon-20191002_181700-525:localhost:8800m4 ?CG K O  f ' j + n /r3v7z;~?CGK O]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOHm4<=]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTLm4<<]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQAm4<;]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQMm4<:]!@anon-20191002_181700-501:localhost:8800YBYGOFEONKm4<9]!@anon-20191002_181700-499:localhost:8800VXSECXNERAm4 p{_A#qS5lN0|`B$ p R 4  d F ( v X :  m O 1   a C % qU7eG+ wY;kM/aC' sU7 5 ! 2=anon-20191002_181700-556-=anon-20191002_181700-555,=anon-20191002_181700-554+=anon-20191002_181700-552*=anon-20191002_181700-551)=anon-20191002_181700-550(;anon-20191002_181700-55L=anon-20191002_181700-549'=anon-20191002_181700-548&=anon-20191002_181700-545%=anon-20191002_181700-543$=anon-20191002_181700-541#;anon-20191002_181700-54K=anon-20191002_181700-539"=anon-20191002_181700-538 =anon-20191002_181700-649=anon-20191002_181700-648=anon-20191002_181700-647=anon-20191002_181700-646=anon-20191002_181700-645=anon-20191002_181700-644=anon-20191002_181700-643=anon-20191002_181700-642~=anon-20191002_181700-641}=anon-20191002_181700-640|;anon-20191002_181700-64V=anon-20191002_181700-639{=anon-20191002_181700-638z=anon-20191002_181700-637y=anon-20191002_181700-636x=anon-20191002_181700-635w=anon-20191002_181700-634v=anon-20191002_181700-633u=anon-20191002_181700-632t=anon-20191002_181700-631s=anon-20191002_181700-630r;anon-20191002_181700-63T=anon-20191002_181700-628q=anon-20191002_181700-627p=anon-20191002_181700-626o=anon-20191002_181700-625n=anon-20191002_181700-624m=anon-20191002_181700-623l=anon-20191002_181700-622k=anon-20191002_181700-621j=anon-20191002_181700-620i;anon-20191002_181700-62S=anon-20191002_181700-619h=anon-20191002_181700-618g=anon-20191002_181700-617f=anon-20191002_181700-616e=anon-20191002_181700-615d=anon-20191002_181700-614c=anon-20191002_181700-613b=anon-20191002_181700-612a=anon-20191002_181700-611`=anon-20191002_181700-610_;anon-20191002_181700-61R=anon-20191002_181700-609^=anon-20191002_181700-608]=anon-20191002_181700-606[=anon-20191002_181700-605Z=anon-20191002_181700-604\=anon-20191002_181700-603X=anon-20191002_181700-602Y=anon-20191002_181700-601V=anon-20191002_181700-600W;anon-20191002_181700-60Q9anon-20191002_181700-6=anon-20191002_181700-598T=anon-20191002_181700-597S=anon-20191002_181700-596R=anon-20191002_181700-595Q=anon-20191002_181700-593P=anon-20191002_181700-591O=anon-20191002_181700-590N;anon-20191002_181700-59P=anon-20191002_181700-589M=anon-20191002_181700-588L=anon-20191002_181700-587K=anon-20191002_181700-586J=anon-20191002_181700-585I=anon-20191002_181700-584H=anon-20191002_181700-583G=anon-20191002_181700-582F=anon-20191002_181700-581E=anon-20191002_181700-580D;anon-20191002_181700-58O=anon-20191002_181700-579C=anon-20191002_181700-578B=anon-20191002_181700-577A=anon-20191002_181700-576@=anon-20191002_181700-575?=anon-20191002_181700-574>=anon-20191002_181700-573==anon-20191002_181700-572<=anon-20191002_181700-571;=anon-20191002_181700-570:;anon-20191002_181700-57N=anon-20191002_181700-5699=anon-20191002_181700-5688=anon-20191002_181700-5677=anon-20191002_181700-5666=anon-20191002_181700-5655=anon-20191002_181700-5644=anon-20191002_181700-5633=anon-20191002_181700-5622=anon-20191002_181700-5611=anon-20191002_181700-5600;anon-20191002_181700-56M=anon-20191002_181700-558/=anon-20191002_181700-557. H[$H l 5 Y " } F  j 3 W {D h1UyB f/yB f/S4b==anon-20191002_181700-613anon-20191002_181700-6134a==anon-20191002_181700-612anon-20191002_181700-6124`==anon-20191002_181700-611anon-20191002_181700-6114_==anon-20191002_181700-610anon-20191002_181700-6104^==anon-20191002_181700-609anon-20191002_181700-6094]==anon-20191002_181700-608anon-20191002_181700-6084\==anon-20191002_181700-604anon-20191002_181700-6044[==anon-20191002_181700-606anon-20191002_181700-6064Z==anon-20191002_181700-605anon-20191002_181700-6054Y==anon-20191002_181700-602anon-20191002_181700-6024X==anon-20191002_181700-603anon-20191002_181700-6034W==anon-20191002_181700-600anon-20191002_181700-6004V==anon-20191002_181700-601anon-20191002_181700-601Uadminadmin4T==anon-20191002_181700-598anon-20191002_181700-5984S==anon-20191002_181700-597anon-20191002_181700-5974R==anon-20191002_181700-596anon-20191002_181700-5964Q==anon-20191002_181700-595anon-20191002_181700-5954P==anon-20191002_181700-593anon-20191002_181700-5934O==anon-20191002_181700-591anon-20191002_181700-5914N==anon-20191002_181700-590anon-20191002_181700-5904M==anon-20191002_181700-589anon-20191002_181700-5894L==anon-20191002_181700-588anon-20191002_181700-5884K==anon-20191002_181700-587anon-20191002_181700-5874J==anon-20191002_181700-586anon-20191002_181700-5864I==anon-20191002_181700-585anon-20191002_181700-5854H==anon-20191002_181700-584anon-20191002_181700-5844G==anon-20191002_181700-583anon-20191002_181700-5834F==anon-20191002_181700-582anon-20191002_181700-5824E==anon-20191002_181700-581anon-20191002_181700-5814D==anon-20191002_181700-580anon-20191002_181700-5804C==anon-20191002_181700-579anon-20191002_181700-5794B==anon-20191002_181700-578anon-20191002_181700-5784A==anon-20191002_181700-577anon-20191002_181700-5774@==anon-20191002_181700-576anon-20191002_181700-5764?==anon-20191002_181700-575anon-20191002_181700-5754>==anon-20191002_181700-574anon-20191002_181700-5744===anon-20191002_181700-573anon-20191002_181700-5734<==anon-20191002_181700-572anon-20191002_181700-5724;==anon-20191002_181700-571anon-20191002_181700-5714:==anon-20191002_181700-570anon-20191002_181700-57049==anon-20191002_181700-569anon-20191002_181700-56948==anon-20191002_181700-568anon-20191002_181700-56847==anon-20191002_181700-567anon-20191002_181700-56746==anon-20191002_181700-566anon-20191002_181700-56645==anon-20191002_181700-565anon-20191002_181700-56544==anon-20191002_181700-564anon-20191002_181700-56443==anon-20191002_181700-563anon-20191002_181700-56342==anon-20191002_181700-562anon-20191002_181700-56241==anon-20191002_181700-561anon-20191002_181700-56140==anon-20191002_181700-560anon-20191002_181700-5604/==anon-20191002_181700-558anon-20191002_181700-5584.==anon-20191002_181700-557anon-20191002_181700-5574-==anon-20191002_181700-556anon-20191002_181700-5564,==anon-20191002_181700-555anon-20191002_181700-5554+==anon-20191002_181700-554anon-20191002_181700-5544*==anon-20191002_181700-552anon-20191002_181700-5524)==anon-20191002_181700-551anon-20191002_181700-5514(==anon-20191002_181700-550anon-20191002_181700-5504'==anon-20191002_181700-549anon-20191002_181700-5494&==anon-20191002_181700-548anon-20191002_181700-5484%==anon-20191002_181700-545anon-20191002_181700-5454$==anon-20191002_181700-543anon-20191002_181700-5434#==anon-20191002_181700-541anon-20191002_181700-5414"==anon-20191002_181700-539anon-20191002_181700-5394!==anon-20191002_181700-537anon-20191002_181700-5374 ==anon-20191002_181700-538anon-20191002_181700-5384==anon-20191002_181700-535anon-20191002_181700-5354==anon-20191002_181700-536anon-20191002_181700-5364==anon-20191002_181700-533anon-20191002_181700-5334==anon-20191002_181700-534anon-20191002_181700-5344==anon-20191002_181700-531anon-20191002_181700-531 =x\#Us: V  t ;  W  x ?  [ "w@\#x?]$y@x?]$8]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPW8]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAU[8]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOXZ8]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQNY8]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQX8]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPPW8]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTMV8]!@anon-20191002_181700-570:localhost:8800ECXFORDQSPU8]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWO8]!@anon-20191002_181700-625:localhost:8800LXKNSEODEI8]!@anon-20191002_181700-624:localhost:8800AATHUMCUIL8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUD8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLU8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDH8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQ6[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUc8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVV8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABY8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUET8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHS8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEM8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZ8]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHI~8]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRP}8]!@anon-20191002_181700-611:localhost:8800UERIFUMBMU|8]!@anon-20191002_181700-610:localhost:8800ZXXERHSURN{6[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGb8]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEz8]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUy8]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVw8]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDv8]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEx8]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZWt8]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJu8]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLMr8]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAPs5Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZS6[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQa8]!@anon-20191002_181700-598:localhost:8800TGNIJBJLORp8]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKSo8]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSGm8]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHWn8]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQl8]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHTk8]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXTj8]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPRi6[!@anon-20191002_181700-58:localhost:8800XSIUOLPWQX`8]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQh8]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAUg8]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVEf8]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYCe8]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHRd8]!@anon-20191002_181700-584:localhost:8800FZKRURXWXEc8]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEb8]!@anon-20191002_181700-582:localhost:8800WSKNBNWTARa8]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZ`8]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOP_6[!@anon-20191002_181700-57:localhost:8800NFIQURSFUO_8]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBR^8]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSN]8]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJB\   *tqeQau$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2812}{"auth_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk", "$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "prev_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk"], "type": "m.room.join_rules", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042971550, "hashes": {"sha256": "s3lK4lWjthncgH5DlpTDEVxP4L/NEr+7Q9yc2Yy9CyI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jfj8liP9pVdMfIO3lYnWjbXAFYLOtFsjM/A5qx5dSehlZmQ8cDDTB/GSdZBa0n1HjGCWchsCgHTdfH4ucuUSAA"}}, "unsigned": {"age_ts": 1570042971550}}kpeQac$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2811}{"auth_events": ["$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "prev_events": ["$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "type": "m.room.power_levels", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"users": {"@anon-20191002_181700-531:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042970728, "hashes": {"sha256": "kT8iMAi4VpQayIeaWEf2TqQisIibD00UB4IkDxUVHk4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9k95IqCstxu285eQsbvKWTQW1fWCGvBRN4LTy6pe2PfFdegXsuEaDYfIOf+6vbNA0qIxEpDjA9EwspP3kl2LDA"}}, "unsigned": {"age_ts": 1570042970728}}voeQay$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2810}{"auth_events": ["$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ"], "prev_events": ["$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ"], "type": "m.room.member", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-531", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-531:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042969989, "hashes": {"sha256": "2zpkjZ2ho+Vlf0gWEcZ1hBCqPJtJSByIxr4454md27U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f4f6q+QeHLDmksBM6bsa3TgM91tshA0jYnkpWEFJJMv7dIP6YMOGV28wKqVp08nbbWaLP534c/FXVvrVwtqFDg"}}, "unsigned": {"age_ts": 1570042969989}}ineQa_$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2809}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-531:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042969155, "hashes": {"sha256": "4OpNIND1yiq1t8ctOHMH1bNgCgoFkqVlZEWyTO1ybHE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MAQCMJZJwG2uGrG8Py/Te+RD+euOfk+OYZWjPgXczKLtUikCIe8pGJmFuo6REK2koGefgnblXgkpBhrKnu3ABQ"}}, "unsigned": {"age_ts": 1570042969155}} Y>~=|< { ; } > B  F  J NRV[f^a1q2=u Q !PzoqoNRxeEEqiLyVSV:localhost:8800m&\P=t Q !uPxXJHJyFQwvpQLZNs:localhost:8800m&\Ja Q!MXhwoqNXvexeDDSOZT:localhost:8800m&\ -f 1 !0:localhost:42455m&\ >b Q!UTAORDrNxIbSlGByAp:localhost:8800m&\ -<` Q  !zqQJfFCRlSEDPKlQPy:localhost:8800m&\ "<_ Q  !JnAKXOrlyisFUpgJPw:localhost:8800m&\/<^ Q  !XRAZJeoZBhGeHKKjaG:localhost:8800m&\/<] Q  !GwLdUoDplyVUogXDzu:localhost:8800m&\#<\ Q  !nfxDdcgDfooxyiAzaB:localhost:8800m&\3<[ Q  !XGAmnfaVvjDtQJuufa:localhost:8800m&\CA Q!cidyuyekVzJHHvyomb:localhost:8800m&\>@ Q!pduebXnTyxQWVxEICp:localhost:8800m&\ Q !VUibrTIkcRbfrogbQV:localhost:8800m&\== Q !WpThtNEVhrUbUdCdMJ:localhost:8800m&\=< Q !vRmMcoJDeCupADwqac:localhost:8800m&\>; Q!fGkUEndqGrieltwbCh:localhost:8800m&\>: Q!atnRTMliktaVUhMVID:localhost:8800m&\>9 Q!PHkVrXAyfGkFtzSagu:localhost:8800m&\>8 Q!EhFUhsgQbBWmrnGmaz:localhost:8800m&\  4 k 9mfd]c@anon-20191002_181700-564:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8Qo127.0.0.1 d]c@anon-20191002_181700-566:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgo127.0.0.1 d]c@anon-20191002_181700-565:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAo127.0.0.1 d]c@anon-20191002_181700-563:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAo127.0.0.1d]c@anon-20191002_181700-562:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAo127.0.0.1d]c@anon-20191002_181700-561:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQo127.0.0.1d]c@anon-20191002_181700-560:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5Jkowo127.0.0.1a[a@anon-20191002_181700-55:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWF6XjJYYjN3MCpAVlRPRgowMDJmc2lnbmF0dXJlINSZs6LI4GMD24nzPSL1JJyXl_5U0EToAPmMjl73106KCg127.0.0.1.d]c@anon-20191002_181700-558:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4Ao127.0.0.1d]c@anon-20191002_181700-557:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwo127.0.0.1 -RM H C > 9 4/*|%w rmhc TeQe (!ZvLVbnHjeymRiFIkYr:localhost:8800$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMTdQe '!ZvLVbnHjeymRiFIkYr:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590TcQe &!ZvLVbnHjeymRiFIkYr:localhost:8800$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOITbQe %!VUibrTIkcRbfrogbQV:localhost:8800$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4TaQe $!VUibrTIkcRbfrogbQV:localhost:8800$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4T`Qe #!VUibrTIkcRbfrogbQV:localhost:8800$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIT_Qe "!VUibrTIkcRbfrogbQV:localhost:8800$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8T^Qe !!VUibrTIkcRbfrogbQV:localhost:8800$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdcT]Qe !VUibrTIkcRbfrogbQV:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIT\Qe !VUibrTIkcRbfrogbQV:localhost:8800$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11IT[Qe !WpThtNEVhrUbUdCdMJ:localhost:8800$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVATZQe !WpThtNEVhrUbUdCdMJ:localhost:8800$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2UTYQe !WpThtNEVhrUbUdCdMJ:localhost:8800$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4MTXQe !WpThtNEVhrUbUdCdMJ:localhost:8800$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2MTWQe !WpThtNEVhrUbUdCdMJ:localhost:8800$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6YTVQe !WpThtNEVhrUbUdCdMJ:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgTUQe !WpThtNEVhrUbUdCdMJ:localhost:8800$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQTTQe !vRmMcoJDeCupADwqac:localhost:8800$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0TSQe !vRmMcoJDeCupADwqac:localhost:8800$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1UdckTRQe !vRmMcoJDeCupADwqac:localhost:8800$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8TQQe !vRmMcoJDeCupADwqac:localhost:8800$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZATPQe !vRmMcoJDeCupADwqac:localhost:8800$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocTOQe !vRmMcoJDeCupADwqac:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8TNQe !vRmMcoJDeCupADwqac:localhost:8800$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMTMQe !fGkUEndqGrieltwbCh:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0TLQe !fGkUEndqGrieltwbCh:localhost:8800$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcTKQe !fGkUEndqGrieltwbCh:localhost:8800$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFATJQe !fGkUEndqGrieltwbCh:localhost:8800$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcioTIQe !fGkUEndqGrieltwbCh:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkTHQe !fGkUEndqGrieltwbCh:localhost:8800$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcTGQe !atnRTMliktaVUhMVID:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQTFQe !atnRTMliktaVUhMVID:localhost:8800$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkTEQe !atnRTMliktaVUhMVID:localhost:8800$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwTDQe !atnRTMliktaVUhMVID:localhost:8800$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4TCQe !atnRTMliktaVUhMVID:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwTBQe !atnRTMliktaVUhMVID:localhost:8800$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQTAQe !PHkVrXAyfGkFtzSagu:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AT@Qe !PHkVrXAyfGkFtzSagu:localhost:8800$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYT?Qe !PHkVrXAyfGkFtzSagu:localhost:8800$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8T>Qe !PHkVrXAyfGkFtzSagu:localhost:8800$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0T=Qe !PHkVrXAyfGkFtzSagu:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwT<Qe !PHkVrXAyfGkFtzSagu:localhost:8800$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4T;Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUT:Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_kT9Qe !EhFUhsgQbBWmrnGmaz:localhost:8800$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 | -5t   l e ] U M%=EEeeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800 ǁeeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800 aeeQ$LcgPX3sToIjY5q8N0gQjFMa9zuEA3qbUQYqNIAszX4g$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4!DqxFmsXPclgGqpSwdy:localhost:8800 +eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800 ؁eeQ$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA$myvuqvQD01B3vU6NfJXIaXRIhO_8BnqzNaJNpDkURAU!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY!ZvLVbnHjeymRiFIkYr:localhost:8800 "eeQ$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo!mvgUHEsfGqDkPQUvfG:localhost:8800 TeeQ$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800 teeQ$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y!ozgnwUlebxvzLVwyHW:localhost:8800peeQ$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ!CSqENqzAezaZnGktbE:localhost:8800 ȁeeQ$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800eeQ$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE$sn5XuBQ5-CV-T7pBJtgHCqBOOaklIDdyxWqRhdnwTBc!kwXxkGQFkaeenFTQJr:localhost:8800=eeQ$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_0$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE!wnriPzXkIMmdTNoJKU:localhost:8800ӁeeQ$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA!SyIWYOmcGiASNkPCTB:localhost:8800ÁeeQ$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw!VOhMAiLfKyTOZbmKGw:localhost:8800ρeeQ$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmic$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w!jYzridjeihmwPBuwLb:localhost:8800FeeQ$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0!aBCvSXjtZUEPlPGHvY:localhost:8800seeQ$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800ɁeeQ$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY!EWkoFeckhXlNyjuIEB:localhost:8800 6 w6vueQay$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2816}{"auth_events": ["$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4"], "prev_events": ["$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4"], "type": "m.room.member", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-533", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-533:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042976406, "hashes": {"sha256": "+fYjMf75PqJ/zC8XhITxTsCqJdFCRVmFOjQuBkE9TAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jFYDszsw5BLSvvJjRk19wnYx6DwwHhGDpTUDIjXKiETPYPY2zdoI5yT8zLXJN9qBlkq2pK+MXQba2eJadzH6CA"}}, "unsigned": {"age_ts": 1570042976406}}iteQa_$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2815}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-533:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042975614, "hashes": {"sha256": "RjrES5/M8WVhH1xv6H/ahv2B3Qq5AvLO/aU7DdRswpQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gal+Ul42hGCy1VYzXFEsNahW44108XnJh8hw/gGIL/ByXlBEE8WnWPViGaT0aBubOZsxAO8RibFr6KnSWOP/AA"}}, "unsigned": {"age_ts": 1570042975614}}VseQa9$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 520, "stream_ordering": 2814}{"auth_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk", "$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0"], "prev_events": ["$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k"], "type": "m.room.member", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-532:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-532", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-532:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042973359, "hashes": {"sha256": "ekvyx4P6b0Bn2I/oSzA2XQFlNctj5ElhG9XmXmxFwI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YdzSPzF8EfxtNaUhywPjVPb2cwh1JmWVMBsncxgypTWqQvnA4wzbd9TcqElhYREYCERGxyAYQsN22c2W9kTzAQ"}}, "unsigned": {"age_ts": 1570042973359}}reQa$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k!EhFUhsgQbBWmrnGmaz:localhost:8800{"token_id": 521, "stream_ordering": 2813}{"auth_events": ["$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk", "$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ", "$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk"], "prev_events": ["$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0"], "type": "m.room.history_visibility", "room_id": "!EhFUhsgQbBWmrnGmaz:localhost:8800", "sender": "@anon-20191002_181700-531:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042972227, "hashes": {"sha256": "bFC6spq0WdlM/W64L4x+aN0NnVa+kqJwxZ2bngt1X6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "35a1NbOVh4eAGF9F92E0g7gyE52s8K3IKGenYOPoIrZfi5qyY/LrdFMdP5new6SgAEwVsneVE2slk2l1WwYsDw"}}, "unsigned": {"age_ts": 1570042972227}} a} { y w u sqomkigeca~eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800~eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800~eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~~eeQ$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~}eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800~|eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~{eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800~zeeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800~yeeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~xeeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800~weeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800~veeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~ueeQ$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800~teeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800~seeQ$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~reeQ$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800~qeeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800~peeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~oeeQ$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~neeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800~meeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~leeQ$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~keeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800~jeeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~ieeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800~heeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw!PHkVrXAyfGkFtzSagu:localhost:8800~geeQ$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~feeQ$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4!PHkVrXAyfGkFtzSagu:localhost:8800~eeeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0!EhFUhsgQbBWmrnGmaz:localhost:8800~deeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800~ceeQ$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk!EhFUhsgQbBWmrnGmaz:localhost:8800 ,Xe^ k x ' 4 A N [ hu$1>Kr!P]Q@anon-20191002_181700-611:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-607:localhost:8829!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-607:localhost:8829!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800P]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800P]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800P]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800P]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800P]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800P]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800P]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800P]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800P]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800P]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800P]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800P]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800P]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800P]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800P]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800P]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800P]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800P]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800P]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800P]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800P]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800P]Q@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800 `xP (8P h x(` X 0 `8pH X0 ` 8  @h @  x P (pH p H X0h@PP'Q!WFHIeSFQyuugGeBFxW:localhost:8800O'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WWZVpyLeZfyfpWidLx:localhost:8800\'Q!WWZVpyLeZfyfpWidLx:localhost:8800d'Q!WWZVpyLeZfyfpWidLx:localhost:8800c'Q!WYyiQAVvitxsLZKVCG:localhost:8800 0'Q!WWZVpyLeZfyfpWidLx:localhost:8800e'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WYyiQAVvitxsLZKVCG:localhost:8800 1'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WhLedNwPGGGTtqeqam:localhost:8800 'Q!WYyiQAVvitxsLZKVCG:localhost:8800 7'Q!WYyiQAVvitxsLZKVCG:localhost:8800 6'Q!WYyiQAVvitxsLZKVCG:localhost:8800 5'Q!WYyiQAVvitxsLZKVCG:localhost:8800 4'Q!WYyiQAVvitxsLZKVCG:localhost:8800 3'Q!WYyiQAVvitxsLZKVCG:localhost:8800 2'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800['Q!XIqmzIFbkHGQPIpywk:localhost:8800Z'Q!XIqmzIFbkHGQPIpywk:localhost:8800Y'Q!XIqmzIFbkHGQPIpywk:localhost:8800X'Q!XIqmzIFbkHGQPIpywk:localhost:8800W'Q!XIqmzIFbkHGQPIpywk:localhost:8800V'Q!XIqmzIFbkHGQPIpywk:localhost:8800U'Q!XIqmzIFbkHGQPIpywk:localhost:8800T'Q!XIqmzIFbkHGQPIpywk:localhost:8800S'Q!XIqmzIFbkHGQPIpywk:localhost:8800R'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800 'Q!WWZVpyLeZfyfpWidLx:localhost:8800]'Q!WWZVpyLeZfyfpWidLx:localhost:8800b'Q!WWZVpyLeZfyfpWidLx:localhost:8800a'Q!WWZVpyLeZfyfpWidLx:localhost:8800`'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!WWZVpyLeZfyfpWidLx:localhost:8800_'Q!WWZVpyLeZfyfpWidLx:localhost:8800^'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800  VyeQa9$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 522, "stream_ordering": 2820}{"auth_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0", "$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8"], "prev_events": ["$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY"], "type": "m.room.member", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-534:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-534", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-534:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042979686, "hashes": {"sha256": "mfjPU7OfXA3RRMkU7BSdxa4ZcTgRmFEtANw1FZ9gIW8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vzNT8/AQTM6aKu7O3a058hbYdgFQegXb6QWDtIIsvT8BehzZpoDrMiK4XrEOr34iMMs61CtEUzuQMHlqH9ROAQ"}}, "unsigned": {"age_ts": 1570042979686}}xeQa$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2819}{"auth_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0", "$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "prev_events": ["$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8"], "type": "m.room.history_visibility", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042978484, "hashes": {"sha256": "pbz6hnleCeTNJcuwndSm95NdPkCAdj51L+oB0xGL5bQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LjzLElGUAj8epUbzvlIhjJ5Fd10QDT7vL4IgaX12sB1/1uZAm1k0tj7au7XkzCKBc0Oqb4MS60/BP28K1X46AQ"}}, "unsigned": {"age_ts": 1570042978484}}tweQau$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2818}{"auth_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0", "$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "prev_events": ["$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0"], "type": "m.room.join_rules", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042977685, "hashes": {"sha256": "YDk37sM43WIeZNBCrNO84fS1+O6phPSVq3fZePpeuqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EDr6VEWgWz68lbnmA5R9EIoQ1ItJJ1gFw/F7qZxe11jsKQugAPwUtIYJP4U+6eksYBT+hZiZlrJm2nL9BkWTAg"}}, "unsigned": {"age_ts": 1570042977685}}kveQac$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800{"token_id": 523, "stream_ordering": 2817}{"auth_events": ["$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4", "$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "prev_events": ["$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw"], "type": "m.room.power_levels", "room_id": "!PHkVrXAyfGkFtzSagu:localhost:8800", "sender": "@anon-20191002_181700-533:localhost:8800", "content": {"users": {"@anon-20191002_181700-533:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042976953, "hashes": {"sha256": "R49sm8KJFh7awUP0qAqd1VmpONaZpnKxGUKjS/TdrII"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AU8Rwt/Z5YXiCbNGIbQfqg3e8QWDD7kOCJLfsbVx59WGxqcfGB/6N9evf2HPUvMKaIkUv48lIhSajE+XQ2cnCg"}}, "unsigned": {"age_ts": 1570042976953}} VX b  l  v(,<@V e'Q ]$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgm.room.member!WpThtNEVhrUbUdCdMJ:localhost:8800m um @anon-20191002_181700-541:localhost:8800 e'Q  ]$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQm.room.create!WpThtNEVhrUbUdCdMJ:localhost:8800mm @anon-20191002_181700-541:localhost:8800 e'Q ]$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0m.room.member!vRmMcoJDeCupADwqac:localhost:8800m m&@anon-20191002_181700-540:localhost:8829 e'Q ]$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udckm.room.member!vRmMcoJDeCupADwqac:localhost:8800mm4@anon-20191002_181700-539:localhost:8800,e?Q ]$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8m.room.history_visibility!vRmMcoJDeCupADwqac:localhost:8800mPmy@anon-20191002_181700-539:localhost:8800$e/Q ]$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAm.room.join_rules!vRmMcoJDeCupADwqac:localhost:8800mm@anon-20191002_181700-539:localhost:8800&e3Q ]$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocm.room.power_levels!vRmMcoJDeCupADwqac:localhost:8800mm@anon-20191002_181700-539:localhost:8800 e'Q ]$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8m.room.member!vRmMcoJDeCupADwqac:localhost:8800mmR@anon-20191002_181700-539:localhost:8800 e'Q  ]$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMm.room.create!vRmMcoJDeCupADwqac:localhost:8800mtm@anon-20191002_181700-539:localhost:8800 e'Q ]$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0m.room.member!fGkUEndqGrieltwbCh:localhost:8800m>m@anon-20191002_181700-538:localhost:8800,e?Q ]$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcm.room.history_visibility!fGkUEndqGrieltwbCh:localhost:8800mmݏ@anon-20191002_181700-537:localhost:8800$e/Q ]$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAm.room.join_rules!fGkUEndqGrieltwbCh:localhost:8800m m@anon-20191002_181700-537:localhost:8800& e3Q ]$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKciom.room.power_levels!fGkUEndqGrieltwbCh:localhost:8800mm@anon-20191002_181700-537:localhost:8800 e'Q ]$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkm.room.member!fGkUEndqGrieltwbCh:localhost:8800mШm@anon-20191002_181700-537:localhost:8800  e'Q  ]$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcm.room.create!fGkUEndqGrieltwbCh:localhost:8800mma@anon-20191002_181700-537:localhost:8800 e'Q ]$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQm.room.member!atnRTMliktaVUhMVID:localhost:8800mmM@anon-20191002_181700-536:localhost:8800, e?Q ]$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkm.room.history_visibility!atnRTMliktaVUhMVID:localhost:8800mڽmڿ@anon-20191002_181700-535:localhost:8800$e/Q ]$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwm.room.join_rules!atnRTMliktaVUhMVID:localhost:8800mڹmں@anon-20191002_181700-535:localhost:8800&e3Q ]$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4m.room.power_levels!atnRTMliktaVUhMVID:localhost:8800mڶmڷ@anon-20191002_181700-535:localhost:8800 e'Q ]$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwm.room.member!atnRTMliktaVUhMVID:localhost:8800mڳmڳ@anon-20191002_181700-535:localhost:8800 e'Q  ]$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQm.room.create!atnRTMliktaVUhMVID:localhost:8800mڰ9mڰ@anon-20191002_181700-535:localhost:8800 e'Q ]$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Am.room.member!PHkVrXAyfGkFtzSagu:localhost:8800mڥfmڦ@anon-20191002_181700-534:localhost:8800,e?Q ]$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQYm.room.history_visibility!PHkVrXAyfGkFtzSagu:localhost:8800mڠmڢ@anon-20191002_181700-533:localhost:8800$e/Q ]$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8m.room.join_rules!PHkVrXAyfGkFtzSagu:localhost:8800mڝmڞ@anon-20191002_181700-533:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V$eL$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8sha256EFNS+݌#[Ѭj"oN=V#eL$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slgsha256Q?!R"4d (2lN^XV"eL$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yosha256շtL|{4п:)~V!eL$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYsha256e1«Ԙc*#RBKm\sN?V eL$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMsha256-&N3""|!ί&뽝.97VeL$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYsha2560^PI 8H@,gL VeL$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAksha256J"+˘SBӚUǝuU VeL$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMsha256%@ 9Al!f botVeL$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590sha2562D:9`t۲X*ڪVeL$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIsha256þd-Rs[o@]ϟNVeL$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4sha256 ?qfG-Tvw%u VeL$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4sha256qavGMK?yef'hWVeL$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIsha256FOfBmޱt/ 1,`c oPRBVeL$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8sha256ƪiɆE d{bRSpz-G F"{Uf}pW r*VeL$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkksha256aKSgzN.ЖnxUZbi IVeL$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEcsha256u6S[ۧV€,n30|fGVeL$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQsha256]Y c?bRo)V~eL$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNksha256Fy~g7E<|<ڣMpV}eL$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwsha256 y]֤k}(:Ϲ}]X0]Q@anon-20191002_181700-543:localhost:8800=0]P@anon-20191002_181700-542:localhost:8829<0]M@anon-20191002_181700-541:localhost:8800;0]L@anon-20191002_181700-540:localhost:8829:0]J@anon-20191002_181700-539:localhost:880090]H@anon-20191002_181700-537:localhost:880070]I@anon-20191002_181700-538:localhost:880080]E@anon-20191002_181700-535:localhost:880040]F@anon-20191002_181700-536:localhost:880050]C@anon-20191002_181700-534:localhost:880020]B@anon-20191002_181700-533:localhost:880010]A@anon-20191002_181700-534:localhost:880000]@@anon-20191002_181700-532:localhost:8800/0]?@anon-20191002_181700-531:localhost:8800.0]=@anon-20191002_181700-529:localhost:8800,0]<@anon-20191002_181700-527:localhost:8800+0]9@anon-20191002_181700-526:localhost:8800*0]8@anon-20191002_181700-525:localhost:8800)0]7@anon-20191002_181700-524:localhost:8800(0]u@anon-20191002_181700-577:localhost:8800\0]t@anon-20191002_181700-576:localhost:8800[0]s@anon-20191002_181700-575:localhost:8800Z0]r@anon-20191002_181700-574:localhost:8800Y0]q@anon-20191002_181700-573:localhost:8800X0]p@anon-20191002_181700-572:localhost:8800W0]o@anon-20191002_181700-571:localhost:8800V0]n@anon-20191002_181700-570:localhost:8800U0]m@anon-20191002_181700-569:localhost:8800T0]l@anon-20191002_181700-568:localhost:8800S0]4@anon-20191002_181700-523:localhost:8800'0]3@anon-20191002_181700-521:localhost:8800&0]2@anon-20191002_181700-520:localhost:8800%0]1@anon-20191002_181700-518:localhost:8800$0]0@anon-20191002_181700-516:localhost:8800#0]/@anon-20191002_181700-514:localhost:8800"0].@anon-20191002_181700-512:localhost:8800!0]-@anon-20191002_181700-510:localhost:8800 0],@anon-20191002_181700-509:localhost:88000]+@anon-20191002_181700-508:localhost:88000]*@anon-20191002_181700-507:localhost:88000])@anon-20191002_181700-506:localhost:88000](@anon-20191002_181700-505:localhost:88000]'@anon-20191002_181700-503:localhost:88000]&@anon-20191002_181700-501:localhost:88000]%@anon-20191002_181700-499:localhost:88000]$@anon-20191002_181700-497:localhost:88000]#@anon-20191002_181700-495:localhost:88000]"@anon-20191002_181700-493:localhost:88000]!@anon-20191002_181700-494:localhost:8800 1^m z ) 6 E R  _ n{*7FS`o|+P]Q@anon-20191002_181700-365:localhost:8800!HWTlaNxUKnDsrtlOxU:localhost:8800OP]Q@anon-20191002_181700-364:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800NP]Q@anon-20191002_181700-363:localhost:8800!pUSFAnuwUuMlbiInDR:localhost:8800MP]Q@anon-20191002_181700-362:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800KP]Q@anon-20191002_181700-361:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800LP]Q@anon-20191002_181700-360:localhost:8800!SrMQpDMFREKRMELwbL:localhost:8800JN[Q@anon-20191002_181700-35:localhost:8800!NhWgOTYzEPRwAxRQvS:localhost:8800P]Q@anon-20191002_181700-359:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800HP]Q@anon-20191002_181700-358:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800IP]Q@anon-20191002_181700-357:localhost:8800!bNSXSTadOMhIrYpMzH:localhost:8800GP]Q@anon-20191002_181700-356:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800EP]Q@anon-20191002_181700-355:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800FP]Q@anon-20191002_181700-354:localhost:8800!TlJCaYlCkOOVzFDlLx:localhost:8800DP]Q@anon-20191002_181700-353:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800CP]Q@anon-20191002_181700-352:localhost:8800!bOSxzttDtclnrWnLov:localhost:8800BP]Q@anon-20191002_181700-351:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800AP]Q@anon-20191002_181700-350:localhost:8800!DnUHoxreGexNmjSVpq:localhost:8800@N[Q@anon-20191002_181700-34:localhost:8800!scyFsXcUIJiLIMwWMY:localhost:8800P]Q@anon-20191002_181700-349:localhost:8800!rwUuVBrftGHDBOlEZm:localhost:8800?P]Q@anon-20191002_181700-348:localhost:8800!CkNvQnbApPIcuKygDk:localhost:8800>P]Q@anon-20191002_181700-347:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800=P]Q@anon-20191002_181700-346:localhost:8800!NboFFVLpJHTeuUKCjM:localhost:8800 v D  | [|/ 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo Z1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsJ1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsX1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E(1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM/1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYi1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcb1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS80e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgl1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA?1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM 0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDob1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE}1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEk1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo51e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y891e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAt1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag11e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 d1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Ia1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXski1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 q21e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4y1e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70s1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUj1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q z1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoK1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYR1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wC1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM F1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc 1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwF1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 <1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU Z1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 i   *t}eQau$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2824}{"auth_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4", "$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "prev_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4"], "type": "m.room.join_rules", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042984942, "hashes": {"sha256": "U1miPA7vYv9D6Ow86lsYjtF/hGq0M+zPgPLNfXCxNgc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JHxIfUHnFvlhw+6DCZxaHZwHQk3TW0kpu/4LcY2peEnZcg54dAuDT+d2n3Bt1P5SMrEag4F5fus6wYvJ6q8QBA"}}, "unsigned": {"age_ts": 1570042984942}}k|eQac$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2823}{"auth_events": ["$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "prev_events": ["$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "type": "m.room.power_levels", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"users": {"@anon-20191002_181700-535:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042983952, "hashes": {"sha256": "lJIob+qxRmPUlQ5GeYSVOobhknTat3XrYTC7/Yya5Hg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3GA+khv78RAlpuBNVVUKOspJEJiHvUUa70l2/GpTmuB0UY6wZ6ReP8IUxaKQWtnzqVz7E9yasHpUNhRwMEoICg"}}, "unsigned": {"age_ts": 1570042983952}}v{eQay$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2822}{"auth_events": ["$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ"], "prev_events": ["$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ"], "type": "m.room.member", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-535", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-535:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042983309, "hashes": {"sha256": "C+Z99aJmzf+1akHOJb3hIAA9LAMP3mswxUj9ufO6b3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "14I4Yqkat4C0Xv0vI976aDv92lKDuMfY3JKVinTPoNdguNL9MaBFDkuu1OtiC2ab6JXK8BzSCW+mb8E2d6xxCQ"}}, "unsigned": {"age_ts": 1570042983309}}izeQa_$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2821}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-535:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042982457, "hashes": {"sha256": "hhcWlj/MGEyJorwr39g0e0pJYdPso72WAIQb/6M5tBA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2TfaOoD2NObK360uSerH1jff/pZe71KglHFzljABtjh0ULBNHJCO6NgQt9Zr3neJ8UO/0M3u4iiNJNkzCtMyCA"}}, "unsigned": {"age_ts": 1570042982457}} N = uCU${[I + ]Oj8|cJ 1  ) w E  } % K  W Q  i7o ] >1e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g ~1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA8 E1e$7AYInm7zxsHgmU-Da0ey2kF87gqeE-2bBaRVMydVvCA 1e$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM R0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g1e$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM1e$6cBo8DxybpMqodm263ZgIpmB22qmSFZ7cP9C7RBqH5A0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A1e$6a_2KeDtFM4JuCjktTcgBHrKyjnIJYBbbmb-qqua__M1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE 1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETso1e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk1e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFY1e$6mtrEXEhTXcaqmy7rPoLSA3Fx6ANnkDYezRuM58G5uAo1e$6gNCg0ibxhYEfjxHkUb9UZf5H2MLSIJTWeA7aWiB3yI51e$6eyKYMkXaQUkfStGJlk1wZi1N4w_Utcuqyc2oTlO4QYF1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGgA1e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3M1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwi1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN0i1e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkUc1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfE1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs1e$7i_xDcWn0SBcuaav8MRRG4l334sASSSD4M4hsak9MDg1e$7gW8tXFXrUi-y6FivA2t2msKUHQDNWLMI_tKyBoSi7w1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4G1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM3$79:localhost:42455 3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 3$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 3$70:localhost:42455 1e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 r1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro>1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf4 1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A j>d1e$7aI1Qr_Apdb4M7SHC3uxQ-NnAngEL4f_f5hGkZkzI9M1e$7ZkRuGD_2_DiMdSIdkSrfhxQLfBP44J6jfAjqz-5g081e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeIV1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRop1e$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ 1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kK1e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE8Y1e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQ1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV01e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU/0e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQg1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFMk1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$74yuEiCS-shYiU98NaVuXK3nH4yNXaBNM_UV2DN9QUUd1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k21e$73GGhj744CtTHAd8T5BmnS6LcSfczsCgLMVg2jgoRfo1e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$6znoGhOKiBbe4edcK5ZnfRGHdkdYikKF2256HP1vSeo1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUK K ) P  Va  g*6$8P JpJn< #  juC \ V> v D  | [|/ 1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo Z1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvsJ1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsX1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E(1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$Gh8U2sUvjw-d4lC60IoPAK-iLTKaAkzajBTduMY56s01e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM/1e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYi1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzcb1e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS80e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgl1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA?1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM 0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDob1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE}1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEk1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo51e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y891e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAt1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag11e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 d1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Ia1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXski1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 q21e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4y1e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70s1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUj1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I 1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q z1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoK1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYR1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wC1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM F1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc 1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwF1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 <1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU Z1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 i L ~ OZ    r dC 5 y J  T %  ` 1 i :  uWF+Y* \ -  n(B ?p  s  D..Q!aWJOsiuJONOvjKWEjO:localhost:8800th.Q!aVxOoyiLLnxmzgLJat:localhost:8800th.Q!ZWANpHlizyLrUiVvAm:localhost:8800th.Q!YGUjVdVdpcQoGkRnWB:localhost:8800th.Q!XnUZiYJDWVNGfsBnGz:localhost:8800th.Q!aSKNKSGXPGoIbSrbEN:localhost:8800mI.Q!aVxOoyiLLnxmzgLJat:localhost:8800m-Q!aWJOsiuJONOvjKWEjO:localhost:8800m-Q!aWvVRVaDflYyyGTOdD:localhost:8800mJ-Q!aWbcZNVBalJilCEsdr:localhost:8800m.Q!YQATbgbLImCDamiDHC:localhost:8800m.Q!YGUjVdVdpcQoGkRnWB:localhost:8800m.Q!ZYKvjplZRyIWvzkRyM:localhost:8800th.Q!XNfwczePlyYFWLCaui:localhost:8800m-Q!XMNRkfscQXRjgYrOSd:localhost:8800m_-Q!XIqmzIFbkHGQPIpywk:localhost:8800mE.Q!aaRwQZdNAliyvRHpjs:localhost:8800th.Q!XnUZiYJDWVNGfsBnGz:localhost:8800m.Q!XiwGxQKwjgutEClKUy:localhost:8829m-Q!XgobMgBjNcDRJnRXLD:localhost:8800m0.Q!XcaKxZsPvbZhAGKKdx:localhost:8800m.Q!XUbDuPDiMTXJZDyAPc:localhost:8800mY.Q!XRAZJeoZBhGeHKKjaG:localhost:8800m^.Q!aLxrqpqLkbzyIxGgpk:localhost:8800m.Q!aHyAJEOSdKqTiRjOvw:localhost:8800m-Q!aBCvSXjtZUEPlPGHvY:localhost:8800mQ.Q!ZvLVbnHjeymRiFIkYr:localhost:8800m?.Q!ZaltdIYVZjCHsCWTZD:localhost:8800m.Q!ZaOktTIVeRgBXxfubH:localhost:8800m.Q!ZYKvjplZRyIWvzkRyM:localhost:8800m.Q!ZWANpHlizyLrUiVvAm:localhost:8800m.Q!ZShBIxwbJmxjjZmoRQ:localhost:8800m.Q!ZOwibbprUCQrSJQCrx:localhost:8800m.Q!ZOpRjvUhkWYJBFJZeO:localhost:8800m.Q!ZNIjCvcWhgcwskanjT:localhost:8800m.Q!ZKPJvrCZHMHPEksYDc:localhost:8800m-Q!YufaOfAlruTdjyUCwO:localhost:8800m}.Q!YtVXQjSPgVtbxrzUOA:localhost:8800m.Q!YpcmaMNMzjvtgYtrli:localhost:8800mv.Q!YmRuIWixFpaqEeDQLZ:localhost:8800m.Q!YgaGPEraeLCqHQirin:localhost:8800m.Q!YaLuQzmJKSMTSFEqjO:localhost:8800m.Q!ZaOktTIVeRgBXxfubH:localhost:8800th.Q!aiOswwhoZqjhcjzbzc:localhost:8800th.Q!aiOswwhoZqjhcjzbzc:localhost:8800m.Q!XiwGxQKwjgutEClKUy:localhost:8829th.Q!XgobMgBjNcDRJnRXLD:localhost:8800th.Q!XcaKxZsPvbZhAGKKdx:localhost:8800th.Q!XUbDuPDiMTXJZDyAPc:localhost:8800th.Q!XRAZJeoZBhGeHKKjaG:localhost:8800th.Q!XNfwczePlyYFWLCaui:localhost:8800th.Q!XMNRkfscQXRjgYrOSd:localhost:8800th.Q!XIqmzIFbkHGQPIpywk:localhost:8800th/.Q!ZShBIxwbJmxjjZmoRQ:localhost:8800th.Q!ZOwibbprUCQrSJQCrx:localhost:8800th.Q!ZOpRjvUhkWYJBFJZeO:localhost:8800th.Q!ZNIjCvcWhgcwskanjT:localhost:8800th.Q!ZKPJvrCZHMHPEksYDc:localhost:8800th.Q!YufaOfAlruTdjyUCwO:localhost:8800th.Q!YtVXQjSPgVtbxrzUOA:localhost:8800th.Q!YpcmaMNMzjvtgYtrli:localhost:8800th.Q!YmRuIWixFpaqEeDQLZ:localhost:8800th.Q!YgaGPEraeLCqHQirin:localhost:8800th.Q!YaLuQzmJKSMTSFEqjO:localhost:8800th.Q!YQATbgbLImCDamiDHC:localhost:8800th.Q!aWvVRVaDflYyyGTOdD:localhost:8800th.Q!aWbcZNVBalJilCEsdr:localhost:8800th.Q!aSKNKSGXPGoIbSrbEN:localhost:8800th.Q!aLxrqpqLkbzyIxGgpk:localhost:8800th.Q!aHyAJEOSdKqTiRjOvw:localhost:8800th.Q!aBCvSXjtZUEPlPGHvY:localhost:8800th.Q!ZvLVbnHjeymRiFIkYr:localhost:8800th.Q!ZaltdIYVZjCHsCWTZD:localhost:8800thD.Q!aZwMKYDXJRlSKjQNWM:localhost:8800th^.Q!aaRwQZdNAliyvRHpjs:localhost:8800m.Q!aZwMKYDXJRlSKjQNWM:localhost:8800m Xth\PD8, dXL@4( | p d X L @ 4 (   th\PD8, xl`TH<0$ |p|pdX|pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  xl`TH<0$ L@4(th\P m m m m m m m m m m m m{ my mw m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m mu ms mq mo mm mk mj mg mf mc mb m_ m] m[ mV mT mR mO mN mK mI mG mE mC mA m? m= m; m9 m7 m5 m3 m1 m0 m- m, m) m( m% m$ m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m} mz my mv mt mr mp mn ml mj mi mf me mb m` m^ m\ mZ mX mV mU mR mQ mN mL mK mJ mF mE mD mC mB mA m: m9 m8 m4 m3 m2 m. m- m, m( m' m& m" m! m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m DC b 0 J  h 6o= vD|J $ QW%]+ \ * V P  |j1e$JAnmGsaa8-ESeK1e$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 1e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhks1e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqo1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg P1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM 1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw1e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb81e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYu1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB81e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Qk1e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjY1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgR1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8?0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4P1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ 1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ?1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw'1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXk1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA00e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8U1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-41e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg]1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb01e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odg0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIO1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JOrseuMG0AGQtEP22YFM4g-BBvwxnCWBCS_hNVpIQ_I1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAE1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAko1e$JBeKgyx77CsrG_SeTUBcRRBu02dyPKlvR0VAdUaMxyM1e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYy1e$J5xZw-R6Blcxmb_xfjQJ0s8AeigeqgopQEFutvBDYjs=1e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4w1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA 1e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Yg+1e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4I1e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyA1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I V1e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIg1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcU1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk 1e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdM1e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M E1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI 1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o 1e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxM1e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A %1e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU 1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk &1e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrho1e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWE01e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI 6 w6veQay$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2828}{"auth_events": ["$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc"], "prev_events": ["$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc"], "type": "m.room.member", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-537", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-537:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042990760, "hashes": {"sha256": "FvYEx7WEuEJDqKC6m/h9eTmX353luOMbr5W0yI+lbpc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hM4gt5Pr+7iidM1M2E0Ojwz6Hi7X8onyzSTuJqnnXE5VgCNjPk2S0cNbJrZNYyzD3txArjiocQd4cUpY9+yTAQ"}}, "unsigned": {"age_ts": 1570042990760}}ieQa_$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2827}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-537:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042989791, "hashes": {"sha256": "g1AcWGHMEoZ761jkow635z1KNcl0+ZEhJVXvyiA5gyg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7KyKbX49O5oBSzCvao6M4pj/5BMJifgZmyP5nR24f+8G5PwmVllVwAzd+mEbEqlvj88epRAGaF5wIdzrkwfgDQ"}}, "unsigned": {"age_ts": 1570042989791}}VeQa9$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ!atnRTMliktaVUhMVID:localhost:8800{"token_id": 525, "stream_ordering": 2826}{"auth_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4", "$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw"], "prev_events": ["$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk"], "type": "m.room.member", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-536:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-536", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-536:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042987243, "hashes": {"sha256": "ostmhtmA9U4dcllhv/DVWForX+kKMB1+nJ6FOTPwP8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0+MPxXZk9m8h3adnmMMkK5nhuD8EzCaVgcWgJ+iXaYq59V59mZ3Dcq5RW/FIf+Ci8A+vUpkHK7F0wPPAFv9RDg"}}, "unsigned": {"age_ts": 1570042987243}}~eQa$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800{"token_id": 526, "stream_ordering": 2825}{"auth_events": ["$OdxMKd48C-WFotwlFiC38CjR1jAXTweU9spNqQSAlf4", "$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ", "$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw"], "prev_events": ["$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw"], "type": "m.room.history_visibility", "room_id": "!atnRTMliktaVUhMVID:localhost:8800", "sender": "@anon-20191002_181700-535:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042985966, "hashes": {"sha256": "YvwOM66uK1fdgOO9cXkCDH202lN8UXWl8gUNusk9trM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "obZjb73d4Ac/1TM6NOiJME8WWQwwhMlK34sD7EPRqsBIdy3xFIeusWRKAakVCeVojT8aM/ENhH09UgX7O0SQDg"}}, "unsigned": {"age_ts": 1570042985966}}  d \ T  LD l<|4 ,t$ eeQ$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800 ueeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800 OeeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800 eeQ$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK0!zsXPhIPzeXXLvuazzQ:localhost:8800eeQ$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_0!XMNRkfscQXRjgYrOSd:localhost:8800ÁeeQ$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk!jDKAOtmeAGbYTpwyEW:localhost:8800ǁeeQ$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCY!itKDOCtoMkFUETDtle:localhost:8800eeQ$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk$0XAwEiuQ_DPo7kfB5KmZjNeWHYvviYs8mu39SlIxJLg!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0!PHkVrXAyfGkFtzSagu:localhost:8800 eeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I!XgobMgBjNcDRJnRXLD:localhost:8800WeeQ$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc!bkwyieHZwSMJfuSKvV:localhost:8800ӁeeQ$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA$VmHTLtnul8MXsnd2nj1VbkjPCBm7OHyHe4EBtgh_51M!OqPpVlCwmKdAUlwrXI:localhost:8800YeeQ$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbg$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY!rwUuVBrftGHDBOlEZm:localhost:8800eeQ$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d0!vJQYmOxOBLwFKzYkNj:localhost:8800eeQ$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E$XZiWR_9a2yHFEAFNstTEHlZSaTvSqhwRNImp61KzGas!mMsxpaIlcykPuOnDyl:localhost:8800؁eeQ$SXDpHaoVx-f4ZqHJqdjFoRjAiY0IrBJ0Mh2nak5zZBk$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg$6co7iGWlUSz7R1x90dcWVo6gKKNpMK0lEUuCicUtrRM!bNSXSTadOMhIrYpMzH:localhost:8800݁eeQ$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX8!vttkrtSyHEJXVMlvLo:localhost:8800deeQ$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8!MlzmtUYSZOiByAZdKx:localhost:8800}eeQ$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s!SrMQpDMFREKRMELwbL:localhost:8800+eeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800 qeeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800 ,eeQ$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800 ΁eeQ$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800  * KaQ x h  X H 9Aq  FeeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800  aeeQ$wKAwCSqRFgFPSnONdj-n1adpSl1nh5ORIJJ1Qc3WWIs$-5FXvGa4fptr-XenUoQeJ_kzBDTKhDXTjPhW7YNm7pY!VWYMJxEviBNDdJCuKT:localhost:8800eeQ$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w!SrMQpDMFREKRMELwbL:localhost:8800eeQ$n33f94NCTg7KLEBDnUm3RRNomkJfou96q7TBHWjaWyU$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU!FIOuvzpMhoERunVYYA:localhost:8800eeQ$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90!KIHYKMzkRDrJwiywwz:localhost:8800 C beeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800 @ seeQ$wvIwoC2RK0cFTPMWRkCscGlhAwqL6-paB5goruuSi_s$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA!NNiyzThHMivrxhojfp:localhost:8800 ReeQ$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps!JGhlAUflyNxErGGZZu:localhost:8800PeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800 [eeQ$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE!GiSxJsKZhQVHBkrVPn:localhost:88008}eeQ$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800 a JeeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8!DnUHoxreGexNmjSVpq:localhost:8800 eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800 " eeQ$xZF4yCkRI32qiJXULRjbIVfPZbMMt0lhvpirRlwlmr8$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY!sHRHoXzYrrPSlWBkoh:localhost:8800 LeeQ$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc!fsbkkRBZlUcBVVfMME:localhost:8800 eeQ$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0!aWJOsiuJONOvjKWEjO:localhost:8800Z eeQ$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU$YXj3fWXnKkiQlCglf7New/hbgOK2QhYpU8qQWm3KhEo!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms!IlGJpjzrvvAFuwTAgo:localhost:8800 eeQ$sx9nxVxvRdp-y-F27fQh6eP59IC6w7cewvh7_iPeJ6c$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ!IPYMCBwcyNIzqdiIWv:localhost:8800 +eeQ$rihKBr_J2ZnaCuylpnqVup1XfTHRRXwcKsGKCBo22Gw$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNY!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk$-Om9sH19upzCm3DCbiG-2Ew1IlvD6TWfA1r9Y9C0thE!mTlCLZQCmfDuQsJxxp:localhost:8800@́eeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800 i eeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800 Q ~z v r n j fb^ZVRNJF"eeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY!ZvLVbnHjeymRiFIkYr:localhost:8800!eeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800 eeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800eeQ$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4!VUibrTIkcRbfrogbQV:localhost:8800eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI!VUibrTIkcRbfrogbQV:localhost:8800eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800eeQ$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck!vRmMcoJDeCupADwqac:localhost:8800eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8!vRmMcoJDeCupADwqac:localhost:8800eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800 eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800 eeQ$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800 eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc!fGkUEndqGrieltwbCh:localhost:8800 eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800 eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800eeQ$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800eeQ$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800eeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk!atnRTMliktaVUhMVID:localhost:8800eeQ$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw!atnRTMliktaVUhMVID:localhost:8800 D%<4-t | l d \ T L ?eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800 WeeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800 [eeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800 5eeQ$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGok$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres!aZwMKYDXJRlSKjQNWM:localhost:8800feeQ$t3pZ3-4b3d0rpwNQy5qILO6YDZqeGuijcAInjfBJC1g$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8!ROoilpDjLJfjKfSPIi:localhost:8800eeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMY!aWJOsiuJONOvjKWEjO:localhost:8800[eeQ$t1ur2lVIWaQW7N8FPWV-nYDOr9hI6gDXmSPrcYswloY$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmls!wIhMbfQzYbJobPdwyi:localhost:8800QeeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$t0UAGOY39CSWLppWd-xpcY533HP33hDPUaQmsa3rx74!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$gt7Cupbq8VtbcjzAaTELZ_WnqJ6KxOywGP5Kg4gjmNg!xXYMxashIZAUOTuGAJ:localhost:8800{eeQ$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk!KdOYYnOuwAyQzqwUki:localhost:8800yeeQ$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs$+yYWKqWicbNff/Lev0vdGVelSSkXdl5QqpC6CE5XxG8!mvgUHEsfGqDkPQUvfG:localhost:8800 [eeQ$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0!HZqzpRgqekPOtxstVc:localhost:8800ÁeeQ$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzk$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo!ZaltdIYVZjCHsCWTZD:localhost:8800DeeQ$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPE$YJxZZg4eC7QXahv3p3NfLLcuE7UmAbjNZ_3CSPqqbQc!zuCqeooOnfWkYrQdxA:localhost:8800neeQ$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA!AMLmLqizBFklpqKibP:localhost:88007eeQ$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc$XvJjvUJ5RsNwSEo6wN9v9V9VTSSeN9Uoz3q1uSADwpM!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg!IlGJpjzrvvAFuwTAgo:localhost:8800 ЁeeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQ!QMrkSPlQDGborAyWtQ:localhost:8800eeQ$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s!wnriPzXkIMmdTNoJKU:localhost:8800ҁeeQ$t7CT3sZjzDRYff-zdA3A0PPnsuH9AH_O9pzlmTDizw8$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE!SrMQpDMFREKRMELwbL:localhost:8800,eeQ$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800 M p y . 7 : \ A>@jhQ3 e (!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.power_levels$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM gQ']e '!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590dfQ' e &!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.create$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI8eQ']ee %!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 dQ']e $!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4pcQ? e #!VUibrTIkcRbfrogbQV:localhost:8800m.room.history_visibility$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIhbQ/ e "!VUibrTIkcRbfrogbQV:localhost:8800m.room.join_rules$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8jaQ3 e !!VUibrTIkcRbfrogbQV:localhost:8800m.room.power_levels$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc `Q']e !VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-543:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEId_Q' e !VUibrTIkcRbfrogbQV:localhost:8800m.room.create$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I8^Q']ee !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U ]Q']e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Up\Q? e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.history_visibility$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Mh[Q/ e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.join_rules$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2MjZQ3 e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.power_levels$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y YQ']e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-541:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgdXQ' e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.create$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ8WQ']ee !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck VQ']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1UdckpUQ? e !vRmMcoJDeCupADwqac:localhost:8800m.room.history_visibility$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8hTQ/ e !vRmMcoJDeCupADwqac:localhost:8800m.room.join_rules$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAjSQ3 e !vRmMcoJDeCupADwqac:localhost:8800m.room.power_levels$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc RQ']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-539:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8dQQ' e !vRmMcoJDeCupADwqac:localhost:8800m.room.create$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM PQ']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-538:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0pOQ? e !fGkUEndqGrieltwbCh:localhost:8800m.room.history_visibility$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmchNQ/ e !fGkUEndqGrieltwbCh:localhost:8800m.room.join_rules$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAjMQ3 e !fGkUEndqGrieltwbCh:localhost:8800m.room.power_levels$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio LQ']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-537:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkdKQ' e !fGkUEndqGrieltwbCh:localhost:8800m.room.create$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc JQ']e !atnRTMliktaVUhMVID:localhost:8800m.room.member@anon-20191002_181700-536:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ 7h Hp(p(P x 0 X  Px0X8` 8 `   @EB]=@anon-20191002_181700-577:localhost:8800anon-20191002_181700-577EA]=@anon-20191002_181700-576:localhost:8800anon-20191002_181700-576E@]=@anon-20191002_181700-574:localhost:8800anon-20191002_181700-574E?]=@anon-20191002_181700-573:localhost:8800anon-20191002_181700-573E>]=@anon-20191002_181700-572:localhost:8800anon-20191002_181700-572E=]=@anon-20191002_181700-571:localhost:8800anon-20191002_181700-571E<]=@anon-20191002_181700-570:localhost:8800anon-20191002_181700-570E;]=@anon-20191002_181700-569:localhost:8800anon-20191002_181700-569E:]=@anon-20191002_181700-568:localhost:8800anon-20191002_181700-568E9]=@anon-20191002_181700-567:localhost:8800anon-20191002_181700-567E8]=@anon-20191002_181700-566:localhost:8800anon-20191002_181700-566E7]=@anon-20191002_181700-565:localhost:8800anon-20191002_181700-565E6]=@anon-20191002_181700-564:localhost:8800anon-20191002_181700-564E5]=@anon-20191002_181700-563:localhost:8800anon-20191002_181700-563E4]=@anon-20191002_181700-562:localhost:8800anon-20191002_181700-562E3]=@anon-20191002_181700-561:localhost:8800anon-20191002_181700-561E1]=@anon-20191002_181700-557:localhost:8800anon-20191002_181700-557E2]=@anon-20191002_181700-558:localhost:8800anon-20191002_181700-558E/]=@anon-20191002_181700-554:localhost:8800anon-20191002_181700-554E.]=@anon-20191002_181700-553:localhost:8829anon-20191002_181700-553E]=@anon-20191002_181700-535:localhost:8800anon-20191002_181700-535E]=@anon-20191002_181700-534:localhost:8800anon-20191002_181700-534E]=@anon-20191002_181700-533:localhost:8800anon-20191002_181700-533E]=@anon-20191002_181700-532:localhost:8800anon-20191002_181700-532E]=@anon-20191002_181700-531:localhost:8800anon-20191002_181700-531E]=@anon-20191002_181700-521:localhost:8800anon-20191002_181700-521E]=@anon-20191002_181700-522:localhost:8829anon-20191002_181700-522E]=@anon-20191002_181700-520:localhost:8800anon-20191002_181700-520E]=@anon-20191002_181700-519:localhost:8829anon-20191002_181700-519E]=@anon-20191002_181700-518:localhost:8800anon-20191002_181700-518EM]=@anon-20191002_181700-606:localhost:8800anon-20191002_181700-606EN]=@anon-20191002_181700-608:localhost:8800anon-20191002_181700-608EJ]=@anon-20191002_181700-603:localhost:8800anon-20191002_181700-603EI]=@anon-20191002_181700-601:localhost:8800anon-20191002_181700-601EH]=@anon-20191002_181700-584:localhost:8800anon-20191002_181700-584EG]=@anon-20191002_181700-583:localhost:8800anon-20191002_181700-583EF]=@anon-20191002_181700-582:localhost:8800anon-20191002_181700-582EE]=@anon-20191002_181700-580:localhost:8800anon-20191002_181700-580ED]=@anon-20191002_181700-579:localhost:8800anon-20191002_181700-579EC]=@anon-20191002_181700-578:localhost:8800anon-20191002_181700-578E-]=@anon-20191002_181700-552:localhost:8800anon-20191002_181700-552E,]=@anon-20191002_181700-551:localhost:8800anon-20191002_181700-551E+]=@anon-20191002_181700-550:localhost:8800anon-20191002_181700-550E*]=@anon-20191002_181700-549:localhost:8800anon-20191002_181700-549E)]=@anon-20191002_181700-548:localhost:8800anon-20191002_181700-548E(]=@anon-20191002_181700-545:localhost:8800anon-20191002_181700-545E']=@anon-20191002_181700-544:localhost:8829anon-20191002_181700-544E&]=@anon-20191002_181700-543:localhost:8800anon-20191002_181700-543E%]=@anon-20191002_181700-542:localhost:8829anon-20191002_181700-542E$]=@anon-20191002_181700-541:localhost:8800anon-20191002_181700-541E#]=@anon-20191002_181700-540:localhost:8829anon-20191002_181700-540E"]=@anon-20191002_181700-539:localhost:8800anon-20191002_181700-539E!]=@anon-20191002_181700-538:localhost:8800anon-20191002_181700-538E ]=@anon-20191002_181700-537:localhost:8800anon-20191002_181700-537E]=@anon-20191002_181700-536:localhost:8800anon-20191002_181700-536 < Z x  % C a,Jh 3Qon(]@anon-20191002_181700-545:localhost:8800@anon-20191002_181700-545:localhost:8800 anon-20191002_181700-545n']@anon-20191002_181700-544:localhost:8829@anon-20191002_181700-544:localhost:8829 anon-20191002_181700-544n&]@anon-20191002_181700-543:localhost:8800@anon-20191002_181700-543:localhost:8800 anon-20191002_181700-543n%]@anon-20191002_181700-542:localhost:8829@anon-20191002_181700-542:localhost:8829 anon-20191002_181700-542n$]@anon-20191002_181700-541:localhost:8800@anon-20191002_181700-541:localhost:8800 anon-20191002_181700-541n#]@anon-20191002_181700-540:localhost:8829@anon-20191002_181700-540:localhost:8829 anon-20191002_181700-540n"]@anon-20191002_181700-539:localhost:8800@anon-20191002_181700-539:localhost:8800 anon-20191002_181700-539n!]@anon-20191002_181700-538:localhost:8800@anon-20191002_181700-538:localhost:8800 anon-20191002_181700-538n ]@anon-20191002_181700-537:localhost:8800@anon-20191002_181700-537:localhost:8800 anon-20191002_181700-537n]@anon-20191002_181700-535:localhost:8800@anon-20191002_181700-535:localhost:8800 anon-20191002_181700-535n]@anon-20191002_181700-534:localhost:8800@anon-20191002_181700-534:localhost:8800 anon-20191002_181700-534n]@anon-20191002_181700-533:localhost:8800@anon-20191002_181700-533:localhost:8800 anon-20191002_181700-533n]@anon-20191002_181700-532:localhost:8800@anon-20191002_181700-532:localhost:8800 anon-20191002_181700-532n]@anon-20191002_181700-531:localhost:8800@anon-20191002_181700-531:localhost:8800 anon-20191002_181700-531n]@anon-20191002_181700-521:localhost:8800@anon-20191002_181700-521:localhost:8800 anon-20191002_181700-521n]@anon-20191002_181700-522:localhost:8829@anon-20191002_181700-522:localhost:8829 anon-20191002_181700-522n]@anon-20191002_181700-520:localhost:8800@anon-20191002_181700-520:localhost:8800 anon-20191002_181700-520n)]@anon-20191002_181700-548:localhost:8800@anon-20191002_181700-548:localhost:8800 anon-20191002_181700-548n]@anon-20191002_181700-519:localhost:8829@anon-20191002_181700-519:localhost:8829 anon-20191002_181700-519n]@anon-20191002_181700-518:localhost:8800@anon-20191002_181700-518:localhost:8800 anon-20191002_181700-518n]@anon-20191002_181700-516:localhost:8800@anon-20191002_181700-516:localhost:8800 anon-20191002_181700-516n]@anon-20191002_181700-514:localhost:8800@anon-20191002_181700-514:localhost:8800 anon-20191002_181700-514n]@anon-20191002_181700-513:localhost:8829@anon-20191002_181700-513:localhost:8829 anon-20191002_181700-513n]@anon-20191002_181700-512:localhost:8800@anon-20191002_181700-512:localhost:8800 anon-20191002_181700-512n]@anon-20191002_181700-511:localhost:8829@anon-20191002_181700-511:localhost:8829 anon-20191002_181700-511n]@anon-20191002_181700-510:localhost:8800@anon-20191002_181700-510:localhost:8800 anon-20191002_181700-510n]@anon-20191002_181700-536:localhost:8800@anon-20191002_181700-536:localhost:8800 anon-20191002_181700-536 1 `  p 0@P`p 0 @ P`p0@PMI]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800MH]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800MG]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800MF]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800ME]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800MD]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800MC]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800MB]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800MA]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800M@]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800M?]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800M]Q@anon-20191002_181700-504:localhost:8829!laUExtszUaoCpZoyEq:localhost:8800M>]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800M<]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800M=]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800M:]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800M9]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800M)]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800M(]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800M']Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800M&]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800M%]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800M$]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800M#]Q@anon-20191002_181700-522:localhost:8829!wBkUBAjOznOyxrLchl:localhost:8800M"]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800M!]Q@anon-20191002_181700-519:localhost:8829!sHRHoXzYrrPSlWBkoh:localhost:8800M ]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800M]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800M]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800M]Q@anon-20191002_181700-511:localhost:8829!vBvlJEXUSQKUYmsKcO:localhost:8800M]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800M]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800M]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800M]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800M8]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800M7]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800M6]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800M5]Q@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800M4]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800M3]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800M2]Q@anon-20191002_181700-544:localhost:8829!VUibrTIkcRbfrogbQV:localhost:8800M1]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800M0]Q@anon-20191002_181700-542:localhost:8829!WpThtNEVhrUbUdCdMJ:localhost:8800M/]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800M.]Q@anon-20191002_181700-540:localhost:8829!vRmMcoJDeCupADwqac:localhost:8800M-]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800M,]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800M+]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800M*]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800 g * T~=gg]!c@anon-20191002_181700-554:localhost:8800FFUSIPBHXSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgog]!c@anon-20191002_181700-552:localhost:8800JYCWUAAHBUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07Aog]!c@anon-20191002_181700-551:localhost:8800PDLFVATDIVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_Qog]!c@anon-20191002_181700-550:localhost:8800TBXCVBUGVRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwog ]!c@anon-20191002_181700-549:localhost:8800BYOSFCFMSOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-Fxgfwog ]!c@anon-20191002_181700-548:localhost:8800XQXKFJTYCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6gog ]!c@anon-20191002_181700-545:localhost:8800TWGXUTPQOVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQog ]!c@anon-20191002_181700-543:localhost:8800FZCMWYDVSKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgog ]!c@anon-20191002_181700-541:localhost:8800XVDHHDVGDJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAog]!c@anon-20191002_181700-539:localhost:8800OLXWQXBCROMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQog]!c@anon-20191002_181700-537:localhost:8800JAPSJNDXUJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAo  5 4 ? i h JU ~`k#v @Q']e 1!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590c?Q' e 0!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.create$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI >Q']e /!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4 =Q']e .!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$NeM00z04EbIcpL-VWDua7sxR_H8BChLP9vOaxyWvHbg <Q']e -!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4o;Q? e ,!VUibrTIkcRbfrogbQV:localhost:8800m.room.history_visibility$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIg:Q/ e +!VUibrTIkcRbfrogbQV:localhost:8800m.room.join_rules$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8i9Q3 e *!VUibrTIkcRbfrogbQV:localhost:8800m.room.power_levels$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc 8Q']e )!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-543:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIc7Q' e (!VUibrTIkcRbfrogbQV:localhost:8800m.room.create$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I 6Q']e '!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 5Q']e &!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$j6_4zNRzXo1VCRSLeFWmlLyrhAovf6R8tYZJvN527-A 4Q']e %!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Uo3Q? e $!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.history_visibility$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4Mg2Q/ e #!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.join_rules$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2Mi1Q3 e "!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.power_levels$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 0Q']e !!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-541:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgc/Q' e !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.create$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ .Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0 -Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$lUtb8B5Tp0WMHnjkx0duE2sKBGeWGlX_uEChAGwyUvk ,Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udcko+Q? e !vRmMcoJDeCupADwqac:localhost:8800m.room.history_visibility$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8g*Q/ e !vRmMcoJDeCupADwqac:localhost:8800m.room.join_rules$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZAi)Q3 e !vRmMcoJDeCupADwqac:localhost:8800m.room.power_levels$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc (Q']e !vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-539:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8c'Q' e !vRmMcoJDeCupADwqac:localhost:8800m.room.create$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM &Q']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-538:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0o%Q? e !fGkUEndqGrieltwbCh:localhost:8800m.room.history_visibility$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmcg$Q/ e !fGkUEndqGrieltwbCh:localhost:8800m.room.join_rules$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFAi#Q3 e !fGkUEndqGrieltwbCh:localhost:8800m.room.power_levels$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio "Q']e !fGkUEndqGrieltwbCh:localhost:8800m.room.member@anon-20191002_181700-537:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkc!Q' e !fGkUEndqGrieltwbCh:localhost:8800m.room.create$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc 8l D `8~]c!E@anon-20191002_181700-551:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE1vQlJiclYsbiY5cV8yelgKMDAyZnNpZ25hdHVyZSDOfMlkBW5nn8D73kV-7wIeSIbrLnrYz12YCt24Q938_QoPDLFVATDIV127.0.0.1Perl + Net::Async::HTTP/0.44mL}]c!E@anon-20191002_181700-550:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdQclRKNDtxelowbiZCMCwKMDAyZnNpZ25hdHVyZSAkwzwOskpFxCGcFWl-iUdxq-NwbtN74-TSrBBowJYrdwoTBXCVBUGVR127.0.0.1Perl + Net::Async::HTTP/0.44m۲ă|]c!E@anon-20191002_181700-549:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFEtNX5QXk0jNUlebzt4bzAKMDAyZnNpZ25hdHVyZSDpuHDX6IukkTgouKtGXXgeTAysptpmyDrtWR2i-FxgfwoBYOSFCFMSO127.0.0.1Perl + Net::Async::HTTP/0.44mۦ{]c!E@anon-20191002_181700-548:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9eI3FrI3ZfOnVDaFRxQXEKMDAyZnNpZ25hdHVyZSDr6Hte6XSO4TslBP1fWu9ngmQlKGXhMDEJBfhGQTno6goXQXKFJTYCC127.0.0.1Perl + Net::Async::HTTP/0.44mےƒz]c!E@anon-20191002_181700-545:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUxLDRXQmhmUXllO3E9RDMKMDAyZnNpZ25hdHVyZSDB3qpPWPFoqiZRDCTzymI_t8ixMulmVI05m4zLZQFAiQoTWGXUTPQOV127.0.0.1Perl + Net::Async::HTTP/0.44mYy]c!E@anon-20191002_181700-543:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR4SjMjPSpYYUBfJlYrXkMKMDAyZnNpZ25hdHVyZSD6DhemlGB3L__7wFz3HDvRhWQdfbQ_NDIfiBjRMhsRcgoFZCMWYDVSK127.0.0.1Perl + Net::Async::HTTP/0.44m(x]c!E@anon-20191002_181700-541:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVNKkN2flh4QmtGQHgsQ0gKMDAyZnNpZ25hdHVyZSCaa_zYe-T3YcVkEWKbdZfZYJA23nllj3PdNqYFwnEvDAoXVDHHDVGDJ127.0.0.1Perl + Net::Async::HTTP/0.44mw]c!E@anon-20191002_181700-539:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQoOLXWQXBCRO127.0.0.1Perl + Net::Async::HTTP/0.44m#v]c!E@anon-20191002_181700-538:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAoPJMZGLQCBZ127.0.0.1Perl + Net::Async::HTTP/0.44mu]c!E@anon-20191002_181700-537:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAoJAPSJNDXUJ127.0.0.1Perl + Net::Async::HTTP/0.44m̌ qA8 Q  U  q 8 U  q 8 T p75So6Rn5Rn8e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Esha256 8e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcsha2568e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUsha256 [8e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kwsha256 8e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYsha256 8e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogsha256 8e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0sha256 8e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dksha256 8e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVUsha2568e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DEsha2568e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-Asha2568e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4sha256 8e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMsha25658e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcsha25618e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMosha256q7e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GMsha256@8e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1gsha2568e$fyOcA0X/TyoQp6LWVE4Gg1wTCBQuh5bg1E+9WV9IQZgsha256 8e$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wgsha2568e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQsha256 )8e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q0sha256B8e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6Esha2568e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgsha256;8e$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vosha256 8e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu80sha256I8e$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzIsha2568e$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDUsha256p8e$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8Usha256&8e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8sha2568e$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Oksha2568e$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gwsha2568e$fVOCnZHMMvu67aW8fMRDS-cEAq6uatiW4FgSy86wLgssha2568e$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10sha2568e$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iMsha256 8e$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRYsha2568e$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCIsha2568e$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4sha2568e$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8sha2568e$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXosha256 -8e$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1Asha256 g8e$fGP8eCCuiKXLiDeLfwvWXrcLLkF0Ni-R_N5kYoxrJGwsha256y8e$fF1ZLnxYEVa28AykwB_FC5oNEUS-6PzLnmfdMqHcA7Qsha2568e$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8sha2568e$fBv7-W33uRAExuQszyUC69Thc0aema3RdZ1sLjaYElEsha256t8e$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdgsha2568e$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbMsha256H8e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJYsha2568e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rwsha256 #8e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUsha256 C7e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQsha2568e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkUsha2568e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3Usha256 o8e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOssha2568e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDYsha2568e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Qsha256r8e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-osha2568e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40sha25638e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_ksha256 8e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgMsha256 8e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYosha256d7e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQcsha256B8e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dssha256 U8e$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgsha25698e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694sha2568e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnEsha256  VeQa9$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 527, "stream_ordering": 2832}{"auth_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio", "$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA"], "prev_events": ["$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc"], "type": "m.room.member", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-538:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-538", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-538:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042994750, "hashes": {"sha256": "OQxWy0HkoaJ8yutv8UkN7J4wIDDHxiEN7EzgwhRnnSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tR4Z+ChuEVZLCJxaBJ1YQIvdGCc5ALhIcujQT0XlfTxJb4KtT33WqglQd21pgR7QYoMu3bRxJfgf+zPCC/Z9DA"}}, "unsigned": {"age_ts": 1570042994750}}eQa$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2831}{"auth_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio", "$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "prev_events": ["$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA"], "type": "m.room.history_visibility", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042993408, "hashes": {"sha256": "3/4u48Haiz1ARTEhmaF6y09mkif1f/f/NY/grR3+YcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9dVgnEgh9wE71y0A11GeLEDo8LQ7GyVbNdqqySEOrxHnBASVoTk5OSX8+9rnMkmN852UVbJN6bE6FHtzFEcpAw"}}, "unsigned": {"age_ts": 1570042993408}}teQau$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2830}{"auth_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio", "$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "prev_events": ["$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio"], "type": "m.room.join_rules", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042992651, "hashes": {"sha256": "qJ9TKRqhB682xF1vFhnZ5UHyz+eXJr+tXW95kb9pHmw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lLjIX9yUd2w8ljKeT6/H29C9o5pTkIDzfJBojHQ0ivDF1Mks3WvJMKx+lxYrpCQjD6KCFCoYokj5u2bcgRG2Ag"}}, "unsigned": {"age_ts": 1570042992651}}keQac$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800{"token_id": 528, "stream_ordering": 2829}{"auth_events": ["$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc", "$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "prev_events": ["$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk"], "type": "m.room.power_levels", "room_id": "!fGkUEndqGrieltwbCh:localhost:8800", "sender": "@anon-20191002_181700-537:localhost:8800", "content": {"users": {"@anon-20191002_181700-537:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042991566, "hashes": {"sha256": "LHr2KoJkJRxmyRnCxuypcCjUY0BKnG3SzgN+y593YG0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cx5ggRynJqs7Nui6KyV71g2zOgwOJxgSedxfx7Sum8s3sTpBHY3/CrtkiaW9Ia+Pbf5eqV3CvxX4Gfqhz2tdBw"}}, "unsigned": {"age_ts": 1570042991566}} mS@_2Ji<[.zM  _ 2   R % r E  e 8 R% X +wqEyLdDZDVmCE,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hnQOBexFYpvJntEChZ:localhost:8800,Q!hgjYwwwjWJNgwrzOto:localhost:8800 __,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ^^,Q!hgjYwwwjWJNgwrzOto:localhost:8800]],Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hegUPDZCEEmBhsNJJR:localhost:8800  ,Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ ~,Q!hegUPDZCEEmBhsNJJR:localhost:8800 } },Q!hegUPDZCEEmBhsNJJR:localhost:8800 | |+Q !hegUPDZCEEmBhsNJJR:localhost:8800 { {,Q!hFwigdYZkwYNSwelRH:localhost:8800 f f,Q!hFwigdYZkwYNSwelRH:localhost:8800 Z Z,Q!hFwigdYZkwYNSwelRH:localhost:8800 Y Y,Q!hFwigdYZkwYNSwelRH:localhost:8800 X X,Q!hFwigdYZkwYNSwelRH:localhost:8800 W W,Q!hFwigdYZkwYNSwelRH:localhost:8800 V V,Q!hFwigdYZkwYNSwelRH:localhost:8800 U U,Q!hFwigdYZkwYNSwelRH:localhost:8800 T T?,,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ``,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hgjYwwwjWJNgwrzOto:localhost:8800\\,Q!hgjYwwwjWJNgwrzOto:localhost:8800[[,Q!hgjYwwwjWJNgwrzOto:localhost:8800ZZ,Q!hgjYwwwjWJNgwrzOto:localhost:8800YY,Q!hgjYwwwjWJNgwrzOto:localhost:8800XX,Q!hgjYwwwjWJNgwrzOto:localhost:8800WW+Q !hgjYwwwjWJNgwrzOto:localhost:8800VV,Q!hZuwenlFDapIPBOyfi:localhost:8800zz,Q!hZuwenlFDapIPBOyfi:localhost:8800yy,Q!hZuwenlFDapIPBOyfi:localhost:8800xx,Q!hZuwenlFDapIPBOyfi:localhost:8800ww,Q!hZuwenlFDapIPBOyfi:localhost:8800vv+Q !hZuwenlFDapIPBOyfi:localhost:8800uu,Q!hYPSaMPGsLnvYSmwhg:localhost:880000,Q!hYPSaMPGsLnvYSmwhg:localhost:8800//,Q!hYPSaMPGsLnvYSmwhg:localhost:8800((,Q!hYPSaMPGsLnvYSmwhg:localhost:8800'',Q!hYPSaMPGsLnvYSmwhg:localhost:8800&&,Q!hYPSaMPGsLnvYSmwhg:localhost:8800%%+Q !hYPSaMPGsLnvYSmwhg:localhost:8800$$,Q!hWHyATwKfuznrqTiyu:localhost:8800\\,Q!hWHyATwKfuznrqTiyu:localhost:8800[[,Q!hWHyATwKfuznrqTiyu:localhost:8800ZZ,Q!hWHyATwKfuznrqTiyu:localhost:8800YY,Q!hWHyATwKfuznrqTiyu:localhost:8800XX+Q !hWHyATwKfuznrqTiyu:localhost:8800WW,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800+Q !hSzBsirdPWHtVjagXn:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800+Q !hNCwypIzdDZDVmCEfd:localhost:8800 mS@_2Ji<[.zM  _ 2   R % r E  e 8 R% X +wqEyLdDZDVmCE,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hGsPmWXboxZZtOlsxY:localhost:8800 +Q !hnQOBexFYpvJntEChZ:localhost:8800,Q!hgjYwwwjWJNgwrzOto:localhost:8800 __,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ^^,Q!hgjYwwwjWJNgwrzOto:localhost:8800]],Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hegUPDZCEEmBhsNJJR:localhost:8800  ,Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~ ~,Q!hegUPDZCEEmBhsNJJR:localhost:8800 } },Q!hegUPDZCEEmBhsNJJR:localhost:8800 | |+Q !hegUPDZCEEmBhsNJJR:localhost:8800 { {,Q!hFwigdYZkwYNSwelRH:localhost:8800 f f,Q!hFwigdYZkwYNSwelRH:localhost:8800 Z Z,Q!hFwigdYZkwYNSwelRH:localhost:8800 Y Y,Q!hFwigdYZkwYNSwelRH:localhost:8800 X X,Q!hFwigdYZkwYNSwelRH:localhost:8800 W W,Q!hFwigdYZkwYNSwelRH:localhost:8800 V V,Q!hFwigdYZkwYNSwelRH:localhost:8800 U U,Q!hFwigdYZkwYNSwelRH:localhost:8800 T T?,,Q!hgjYwwwjWJNgwrzOto:localhost:8800 ``,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hGsPmWXboxZZtOlsxY:localhost:8800 ,Q!hgjYwwwjWJNgwrzOto:localhost:8800\\,Q!hgjYwwwjWJNgwrzOto:localhost:8800[[,Q!hgjYwwwjWJNgwrzOto:localhost:8800ZZ,Q!hgjYwwwjWJNgwrzOto:localhost:8800YY,Q!hgjYwwwjWJNgwrzOto:localhost:8800XX,Q!hgjYwwwjWJNgwrzOto:localhost:8800WW+Q !hgjYwwwjWJNgwrzOto:localhost:8800VV,Q!hZuwenlFDapIPBOyfi:localhost:8800zz,Q!hZuwenlFDapIPBOyfi:localhost:8800yy,Q!hZuwenlFDapIPBOyfi:localhost:8800xx,Q!hZuwenlFDapIPBOyfi:localhost:8800ww,Q!hZuwenlFDapIPBOyfi:localhost:8800vv+Q !hZuwenlFDapIPBOyfi:localhost:8800uu,Q!hYPSaMPGsLnvYSmwhg:localhost:880000,Q!hYPSaMPGsLnvYSmwhg:localhost:8800//,Q!hYPSaMPGsLnvYSmwhg:localhost:8800((,Q!hYPSaMPGsLnvYSmwhg:localhost:8800'',Q!hYPSaMPGsLnvYSmwhg:localhost:8800&&,Q!hYPSaMPGsLnvYSmwhg:localhost:8800%%+Q !hYPSaMPGsLnvYSmwhg:localhost:8800$$,Q!hWHyATwKfuznrqTiyu:localhost:8800\\,Q!hWHyATwKfuznrqTiyu:localhost:8800[[,Q!hWHyATwKfuznrqTiyu:localhost:8800ZZ,Q!hWHyATwKfuznrqTiyu:localhost:8800YY,Q!hWHyATwKfuznrqTiyu:localhost:8800XX+Q !hWHyATwKfuznrqTiyu:localhost:8800WW,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800,Q!hSzBsirdPWHtVjagXn:localhost:8800+Q !hSzBsirdPWHtVjagXn:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hNCwypIzdDZDVmCEfd:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800,Q!hnQOBexFYpvJntEChZ:localhost:8800+Q !hNCwypIzdDZDVmCEfd:localhost:8800 W:+]k9? }wEj8%q? w E  } K + 3 S ! Y ' _}KWQ]2]21e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 21e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdcp1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE M&1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw j1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM c1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU q21e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwe21e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgI1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIG1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ)1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgR1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g<1e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUO1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIO1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4,1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY.1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA^1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U21e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE21e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_sM1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI1e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU/1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21wU1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8m1e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4.0e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwcw1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY@1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe41e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4  a} { y w u sqomkigeca~ eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800~eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~eeQ$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL0$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~eeQ$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~eeQ$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800~ eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA!fGkUEndqGrieltwbCh:localhost:8800~eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~eeQ$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800~eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800~eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800~eeQ$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio!fGkUEndqGrieltwbCh:localhost:8800~eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk!fGkUEndqGrieltwbCh:localhost:8800~eeQ$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA$w3XmNplTW9unVssIs8KALNpuM83aMO0Q_cJ8l5JmzEc!fGkUEndqGrieltwbCh:localhost:8800 rpxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xpxph`xpXPhH@h                                                                 ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o n n m m l l k k j j i i h h g g f f e e d d c c b b a a ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U T T S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! !                                                                                                               <[$H ?  1 # ~ G  U yB Nr;h1UKo8.5<')"1570040430164localhost:8829ma{"pdus":{}}5;')"1570040430163localhost:8829m`\{"pdus":{}}5:')"1570040430162localhost:8829mF{"pdus":{}}9')h1570040430161localhost:8829m;{"pdus":{"$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk":{},"$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dw":{}}}58')"1570040430160localhost:8829m5{"pdus":{}}57')"1570040430159localhost:8829m2{"pdus":{}}56')"1570040430158localhost:8829mѕ{"pdus":{}}55')"1570040430157localhost:8829m{"pdus":{}}54')"1570040430156localhost:8829mٰ{"pdus":{}}53')"1570040430155localhost:8829m٭ {"pdus":{}}52')"1570040430154localhost:8829mٗs{"pdus":{}}51')"1570040430153localhost:8829mo{"pdus":{}}0')h1570040430152localhost:8829m,{"pdus":{"$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0":{},"$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts":{}}}5/')"1570040430151localhost:8829m&v{"pdus":{}}5.')"1570040430150localhost:8829mؿ:{"pdus":{}}5-')"1570040430149localhost:8829mؼS{"pdus":{}}5,')"1570040430148localhost:8829m؛{"pdus":{}}5+')"1570040430147localhost:8829mؘ4{"pdus":{}}5*')"1570040430146localhost:8829mJf{"pdus":{}}5)')"1570040430145localhost:8829m#{"pdus":{}}(')h1570040430144localhost:8829mK{"pdus":{"$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs":{},"$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow":{}}}5'')"1570040430143localhost:8829m{"pdus":{}}5&')"1570040430142localhost:8829mׯ5{"pdus":{}}5%')"1570040430141localhost:8829m׫{"pdus":{}}5$')"1570040430140localhost:8829m׍2{"pdus":{}}5#')"1570040430139localhost:8829m׈{"pdus":{}}"')<1570040430138localhost:8829m#{"pdus":{"$157004274310jCQYA:localhost:8829":{},"$157004274411xArrT:localhost:8829":{}}}5!')"1570040430137localhost:8829m {"pdus":{}}5 ')"1570040430136localhost:8829m{"pdus":{}}5')"1570040430135localhost:8829m֨{"pdus":{}}5')"1570040430134localhost:8829m֥{"pdus":{}}5')"1570040430133localhost:8829mֆ4{"pdus":{}}5')"1570040430132localhost:8829mփ{"pdus":{}}5')"1570040430131localhost:8829mO<{"pdus":{}}5')"1570040430130localhost:8829m({"pdus":{}}')81570040430129localhost:8829m {"pdus":{"$15700426764DoRhm:localhost:8829":{},"$15700426765pydev:localhost:8829":{}}}5')"1570040430128localhost:8829m{"pdus":{}}5')"1570040430127localhost:8829mդ/{"pdus":{}}5')"1570040430126localhost:8829mա{"pdus":{}}5')"1570040430125localhost:8829mՃ{"pdus":{}}5')"1570040430124localhost:8829mՁC{"pdus":{}}g')1570040430123localhost:8829m{"pdus":{"$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw":{}}}5')"1570040430122localhost:8829m7f{"pdus":{}}5')"1570040430121localhost:8829m{"pdus":{}}5')"1570040430120localhost:8829m{"pdus":{}}g')1570040430119localhost:8829ms{"pdus":{"$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY":{}}}5')"1570040430118localhost:8829m{"pdus":{}}5 ')"1570040430117localhost:8829mX{"pdus":{}}5 ')"1570040430116localhost:8829m{"pdus":{}}g ')1570040430115localhost:8829m{"pdus":{"$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg":{}}}g ')1570040430114localhost:8829m W{"pdus":{"$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs":{}}}5 ')"1570040430113localhost:8829m Q{"pdus":{}}5')"1570040430112localhost:8829m{"pdus":{}}5')"1570040430111localhost:8829m{"pdus":{}}5')"1570040430110localhost:8829mš{"pdus":{}}5')"1570040430109localhost:8829m{"pdus":{}}5')"1570040430108localhost:8829m[{"pdus":{}}5')"1570040430107localhost:8829m{"pdus":{}}5')"1570040430106localhost:8829m{"pdus":{}}5')"1570040430105localhost:8829mE{"pdus":{}} 3[$H :  ^ ' O ?/UC'\ EUNo'+R1570043734714localhost:42455m,x{"pdus":{"$89:localhost:42455":{}}}Nn'+R1570043734039localhost:42455m*{"pdus":{"$88:localhost:42455":{}}}hm'+1570043724409localhost:42455m&{"pdus":{"$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ":{}}}-l'+1570043724406localhost:42455m{}Uk'+`1570043718021localhost:42455m{"pdus":{"$86_sent_F:localhost:42455":{}}}Uj'+`1570043716261localhost:42455m{"pdus":{"$85_sent_E:localhost:42455":{}}}6i'+"1570043709303localhost:42455m{"pdus":{}}6h'+"1570043708853localhost:42455m{"pdus":{}}Ng'+R1570043685815localhost:42455mq{"pdus":{"$81:localhost:42455":{}}}6f'+"1570043667066localhost:42455m#{"pdus":{}}6e'+"1570043665475localhost:42455m {"pdus":{}}Yd'+h1570043658776localhost:42455m {"pdus":{"$64_redaction2:localhost:42455":{}}}Yc'+h1570043657562localhost:42455m{"pdus":{"$63_redaction1:localhost:42455":{}}}Ub'+`1570043650664localhost:42455m{"pdus":{"$lolredact:localhost:42455":{}}}ha'+1570043643608localhost:42455mX{"pdus":{"$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc":{}}}h`'+1570043642975localhost:42455mN{"pdus":{"$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA":{}}}h_'+1570043641630localhost:42455mv{"pdus":{"$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E":{}}}h^'+1570043628616localhost:42455m {"pdus":{"$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY":{}}}h]'+1570043627779localhost:42455m䋘{"pdus":{"$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE":{}}}h\'+1570043626471localhost:42455m䅂{"pdus":{"$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk":{}}}h['+1570043625647localhost:42455m{"pdus":{"$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A":{}}}6Z'+"1570043618483localhost:42455me{"pdus":{}}6Y'+"1570043617971localhost:42455mc]{"pdus":{}}hX'+1570043609963localhost:42455mG{"pdus":{"$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU":{}}}TW'+^1570043594716localhost:42455mu{"pdus":{"$60_msg_e:localhost:42455":{}}}NV'+R1570043561185localhost:42455m{"pdus":{"$53:localhost:42455":{}}}NU'+R1570043553629localhost:42455mn{"pdus":{"$49:localhost:42455":{}}}NT'+R1570043552017localhost:42455mfE{"pdus":{"$44:localhost:42455":{}}}3S'+1570043544090localhost:42455mE {"pdus":{"$42:localhost:42455":{"error":"ERROR 403: Your server isn't divulging details about prev_events referenced in this event."}}}NR'+R1570043431598localhost:42455m`{"pdus":{"$15:localhost:42455":{}}}hQ'+1570043407452localhost:42455m0{"pdus":{"$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU":{}}}hP'+1570043400274localhost:42455m'{"pdus":{"$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg":{}}}5O')"1570040430183localhost:8829m{"pdus":{}}5N')"1570040430182localhost:8829mgS{"pdus":{}}5M')"1570040430181localhost:8829m{"pdus":{}}5L')"1570040430180localhost:8829mʜ{"pdus":{}}5K')"1570040430179localhost:8829mT{"pdus":{}}5J')"1570040430178localhost:8829mS{"pdus":{}}5I')"1570040430177localhost:8829m%{"pdus":{}}gH')1570040430176localhost:8829mb{"pdus":{"$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E":{}}}5G')"1570040430175localhost:8829m{"pdus":{}}5F')"1570040430174localhost:8829mX{"pdus":{}}5E')"1570040430173localhost:8829mQN{"pdus":{}}5D')"1570040430172localhost:8829m%{"pdus":{}}5C')"1570040430171localhost:8829m${"pdus":{}}5B')"1570040430170localhost:8829m#z{"pdus":{}}5A')"1570040430169localhost:8829m!0{"pdus":{}}5@')"1570040430168localhost:8829m{"pdus":{}}5?')"1570040430167localhost:8829m{"pdus":{}}5>')"1570040430166localhost:8829m{"pdus":{}}5=')"1570040430165localhost:8829m{"pdus":{}} h5 g 4 i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk9U3Vvamk4K3RWI016MGwKMDAyZnNpZ25hdHVyZSC_tPoIZ-nUCIZfd5dITKNhARkmicq8HOmpr4r3KcA7VQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtvSEhSLVk9VXAqeUJmNVoKMDAyZnNpZ25hdHVyZSCMQFpXvWQDphik0UUnyVO1My6Z9EPYOTyE_gogun8wPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9VOitvZUNkZX5QOWVoMTEKMDAyZnNpZ25hdHVyZSBeNNPFfNdvzsKQWSPf_bEp4UKlzKolB9O8SPpCrs6wJwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhGeStYNTZlUXV0O0MrLEkKMDAyZnNpZ25hdHVyZSAbN_k7hJwxYSufDzbbZwVtpuV-YXt1z199qEhx3e1_wAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVvSTQ7M2s3U3lzYU1iT2EKMDAyZnNpZ25hdHVyZSAEqwMcmhnVUhtXWM0jqRHvv3HFB6PlI_k6ui8HJh4K-Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDJoQzowQjAtI1IrUl5yMkAKMDAyZnNpZ25hdHVyZSCGiL83MfDR5FkoijJlMDyYJecOElaN7DejQNBCPgquSwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICs4JitlNlFqWmEuI2djbkYKMDAyZnNpZ25hdHVyZSAULmdchoIeKS0FkBQgTCDlJXLp9y367nG-e3Evblysawo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF80WDVMQUM9VnhXWUg7dk8KMDAyZnNpZ25hdHVyZSCqL5bB6YPwCMHYHMYTYGTyspzZO5D5Rn4F3pOQHT85ywo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFiOTVrTCxMam1Sck5ZeVoKMDAyZnNpZ25hdHVyZSDZP-m2pNsGEPNnaCi-pFH_DQrW0nulqyGBMg3Q6yAQkwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxfOjZiYnhnOE9IQTY6SzkKMDAyZnNpZ25hdHVyZSCjzy7TMSFNvbN5XOKhruIVotg8IHSFlOQ0pR9eA9SQKQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGl5X3FaLXNxeWl3QHg4ZS4KMDAyZnNpZ25hdHVyZSCr7noZiUsmHp7V3mwXivtKJeLinaw_DL1kT8CBee920wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGYwRnk0dkdma1IjT3dtZmUKMDAyZnNpZ25hdHVyZSCTHwP19vTTld1Qfslvl7GSFUmCv6yfYK5a3BBiWft-9go   *t eQau$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2836}{"auth_events": ["$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc", "$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM", "$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8"], "prev_events": ["$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc"], "type": "m.room.join_rules", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042999279, "hashes": {"sha256": "pa2WUHdBWfjEV+fJn/6BqekAzFW2glDmDD9zzSMmugU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L5UY/17lhpLnw/pgPv8zT4svBDB4jDb14DqMJjHhVQIIwxX2d6UeVPm6M5ZAXXpnHEpkOQvbt/2g9OjeiF/XDA"}}, "unsigned": {"age_ts": 1570042999279}}keQac$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2835}{"auth_events": ["$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM", "$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8"], "prev_events": ["$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8"], "type": "m.room.power_levels", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"users": {"@anon-20191002_181700-539:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042998492, "hashes": {"sha256": "GvOxDTLjY8rZKB7QzhPgRiSAkfE/QGDqr6cAHjOElBw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Fg2LUl+NsRphzEMcCmu7LDjDwYNcZqbm5TFcUxqjy2mV0uEHVJcKjoghYNABVy6Vxvw2GZ/pc4nlZLoI7FtiDg"}}, "unsigned": {"age_ts": 1570042998492}}veQay$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2834}{"auth_events": ["$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM"], "prev_events": ["$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM"], "type": "m.room.member", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-539", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-539:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570042997965, "hashes": {"sha256": "dnAXf6bQ6GzP+cS9QR/I+ScDQKi+6QThn2eGqlsRRuA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aVPI6QWiyR8pfyR6Oxt5Eb6BocP6aMW+eym3eb8NWsZ2zbonYTYnqdr5r6zxfCxy6NdK1etkOHe2TyRroxpRDQ"}}, "unsigned": {"age_ts": 1570042997965}}ieQa_$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisM!vRmMcoJDeCupADwqac:localhost:8800{"token_id": 529, "stream_ordering": 2833}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vRmMcoJDeCupADwqac:localhost:8800", "sender": "@anon-20191002_181700-539:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-539:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570042997108, "hashes": {"sha256": "LXeYCW4XiIXMkAjYGTPNJfXOrVR6Bf5E2Mh/8Y4UdAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TBi+YRzEk4Ywt1oukDiOSA3lnKK+9wYyp5o0AVv7dCYj8oNOgi1nr938XnwB4KlhJP8nCg2z5R//I1EnEXXKDQ"}}, "unsigned": {"age_ts": 1570042997108}} -RM H C > 9 4/*|%w rmhc TEQe E!zHBgbzUZHshNGZvIBS:localhost:8800$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQTDQe D!zHBgbzUZHshNGZvIBS:localhost:8800$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLoTCQe C!zHBgbzUZHshNGZvIBS:localhost:8800$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcTBQe B!zHBgbzUZHshNGZvIBS:localhost:8800$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1IkecuoTAQe A!cidyuyekVzJHHvyomb:localhost:8800$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1AT@Qe @!cidyuyekVzJHHvyomb:localhost:8800$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTgT?Qe ?!cidyuyekVzJHHvyomb:localhost:8800$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUT>Qe >!cidyuyekVzJHHvyomb:localhost:8800$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_IT=Qe =!cidyuyekVzJHHvyomb:localhost:8800$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswT<Qe  B J3  Pj8e    |1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAJ1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEs1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEr1e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT281e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9op1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEt1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0r1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0q1e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l81e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ1e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE 1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQF1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQE1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQD1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI41e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI41e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAI1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk 1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU{1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk~1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU|0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEC0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEB0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtEA1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkV1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkU1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9LkT1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAK1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU]1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU\1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M :1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M 91e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M 81e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK01e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0~1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0}1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU"1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kp1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5ko1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kn1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk(1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk'1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk&1e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU}1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g 5 64l4n S O3Q PqRn57 o 7 Sm  6   R48e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNosha256 88e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYsha256 8e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLksha2568e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYsha256i8e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4sha2568e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Ysha256 8e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wsha256M8e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMsha2568e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUsha256W8e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz8sha2568e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnwsha2568e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9Asha25648e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMsha2568e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8csha2568e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucMsha2568e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQsha256 K8e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAsha256 W8e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyAsha256 8e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMsha256 8e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQsha2568e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgsha2568e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gsha2568e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0sha256 18e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8sha256M8e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUsha256l8e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEsha256W8e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0sha256(8e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR4sha2568e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDosha2568e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCwsha2568e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLksha2568e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8inosha256 8e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim4sha256;8e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8sha256 R88e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3Isha256(8e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgsha25618e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8sha256 8e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0sha256 8e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrAsha2568e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgsha2568e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmcsha2568e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fksha256 8e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDUsha2567e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30sha256E8e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREsha256C8e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4sha2568e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQsha256 F 98e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqsssha256S8e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUsha256 8e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegsha256LU98e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggsha2568e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60sha256   *teQau$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2843}{"auth_events": ["$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y", "$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ", "$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg"], "prev_events": ["$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y"], "type": "m.room.join_rules", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043007544, "hashes": {"sha256": "M8S2cIc9mqjw0rZ57fhcFw809uZIWpQXDIIs3l7AMSs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZEKV5Ni5NHKJsrXZ78yAUfmgmKV3iQVm6agPumSOcgVs77CCNH35aJR/GPX87jnOC6wV3URtjC3srshbnDHEDA"}}, "unsigned": {"age_ts": 1570043007544}}keQac$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2842}{"auth_events": ["$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ", "$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg"], "prev_events": ["$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg"], "type": "m.room.power_levels", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"users": {"@anon-20191002_181700-541:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043006672, "hashes": {"sha256": "x7v0RTtN1IzrXrbaYA1uhFCjwzTIoAi7MaVgZOzHqZM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VHHRYwPf92AeJd/eu815Q6DZTxJLmyCaPT0J5r7BDOzbYc3tvauNwTKIkOZl5AIgadyJc5dLpZ//LNNpVNHWBQ"}}, "unsigned": {"age_ts": 1570043006672}}veQay$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2841}{"auth_events": ["$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ"], "prev_events": ["$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ"], "type": "m.room.member", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-541", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-541:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043006069, "hashes": {"sha256": "Wn2Nj1eW8yMfvRBKTI8g41eVNiHvT/GOahKH/X8Hhq8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cQC67fyVe0qhAXD1H7rZgfvTHsFMAVVORZL6Lk+fB13THpsuQjw8auX3Ly4XRYxk1F9/JBxXlNRAEK5F8txdBw"}}, "unsigned": {"age_ts": 1570043006069}}i eQa_$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800{"token_id": 530, "stream_ordering": 2840}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WpThtNEVhrUbUdCdMJ:localhost:8800", "sender": "@anon-20191002_181700-541:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-541:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043005094, "hashes": {"sha256": "NXzzJL8/SA9FT+yVEuOu+KaZ8zlyAhMXt1xJeH0FHGk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jmVSO5qTKcDNjKKRW9XlDKB9NmvBVSAXRSGsmCXEgjMhh7cLYTSBIhuPXlD/Hujt3f1DXR/R5ipNO6HVVmsxAw"}}, "unsigned": {"age_ts": 1570043005094}} Rk8q? { J  U $ ` / k : v E }Le4oMT"j8dD$o> wE/ Q !dBfASZrfiFeSKTjYJm:localhost:8800%. Q  !tcYctHPiaKzsKgrXlU:localhost:8800%/ Q !taANXnGBZntAreRurn:localhost:8800%/ Q !drnXStKXkNQkouqUAg:localhost:8800%. Q  !zScKnCZCFPIIodAiQj:localhost:8800%/ Q !LazKtcHZriKzCvvGwV:localhost:8800%/ Q !lEJUJZxqZPKZetemiR:localhost:8800 %/ Q !bLWyXaXdvUhdSAooUz:localhost:8800%. Q  !YmRuIWixFpaqEeDQLZ:localhost:8800%/ Q !bjdLCdBwkKaihRIRFG:localhost:8800%. Q  !qzrZzAieCgGSbpKOQR:localhost:8800%/ Q !qzurjQHmiriwjaUMhO:localhost:8800% 1!0:localhost:41985  1!0:localhost:44405  1!0:localhost:37265  1!8:localhost:42455 ~ 1!7:localhost:42455 .} Q  !TSFcaXDBqrCREHRHxv:localhost:8800%/| Q !AOEdqVKPFddrqbKPOL:localhost:8800%.{ Q  !wBBQYEPjQGnoAzDpEu:localhost:8800%/z Q !oZGRyBAkNDrEeiAqWL:localhost:8800%y 1 !6:localhost:42455%/x Q !cRbfhxZdPstEsPGPAu:localhost:8800%/w Q !sAWFpvSUPExZLVcPEd:localhost:8800%/v Q !YpcmaMNMzjvtgYtrli:localhost:8800%/u Q !PzoqoNRxeEEqiLyVSV:localhost:8800%/t Q !uPxXJHJyFQwvpQLZNs:localhost:8800%.s Q  !UluPYLGXtInKDTjRzp:localhost:8800 /r Q !QkkdnzvdrjHaFGkzMt:localhost:8800%/q Q !DuqHkpTfWCUblSrxQj:localhost:8800%/p Q !NanhNmCnVVpmZRJrTF:localhost:8800%o 1 !5:localhost:42455%/n Q !sqkBzbHHJOTNWwynqV:localhost:8800%.m Q  !qInWQPtNQfBFoVzUtP:localhost:8800%.l Q  !FZOLkaLbBpaibrbHZx:localhost:8800%.k Q  !QxqzQoEBIZhmzHIGrl:localhost:8800%.j Q  !fDISaqNBhlOwherxSt:localhost:8800%.i Q  !yAfsSyqpJWFnkXQFJL:localhost:8800%.h Q  !AYFqrmxwClFQlcTTYq:localhost:8800%/g Q !pHoEnhQYhwlbJXqKQE:localhost:8800%f 1 !0:localhost:42455%.e Q  !OCEHAjcOXWNyWIESIS:localhost:8800%.d Q  !qjijQBfMwsCPTVgKPm:localhost:8800%.c Q  !kjjUsMowsioSQRIJeg:localhost:8800%0b Q!UTAORDrNxIbSlGByAp:localhost:8800 %0a Q!MXhwoqNXvexeDDSOZT:localhost:8800%.` Q  !zqQJfFCRlSEDPKlQPy:localhost:8800 8._ Q  !JnAKXOrlyisFUpgJPw:localhost:8800%.^ Q  !XRAZJeoZBhGeHKKjaG:localhost:8800%.] Q  !GwLdUoDplyVUogXDzu:localhost:8800%.\ Q  !nfxDdcgDfooxyiAzaB:localhost:8800%.[ Q  !XGAmnfaVvjDtQJuufa:localhost:8800%.Z Q  !OXpGdKbowFUTChPdmF:localhost:8800%.Y Q  !XUbDuPDiMTXJZDyAPc:localhost:8800%.X Q  !VhUAklonNaWKRnLkcr:localhost:8800%.W Q  !ybXveQoxPVhjpKHAkG:localhost:8800%.V Q  !ijOiudvuzOLNmgNKfG:localhost:8800%.U Q  !hrhDJbmXvXBizKoiiK:localhost:8800%.T Q  !iLHJbsFszubrnybDNz:localhost:8800%.S Q  !hGsPmWXboxZZtOlsxY:localhost:8800%.R Q  !dvZnfJonDkxlrrDXUk:localhost:8800%.Q Q  !vZGjXEXQoCaoUXnkCa:localhost:8800%.P Q  !GBPGYLDkXcAsHgkfuS:localhost:8800%.O Q  !fdEymmlcUvjgshvVyl:localhost:8800%.N Q  !xcdNyJNFEdaBGFycsB:localhost:8800%.M Q  !SUDzkfFBgpuCANOxRS:localhost:8800%.L Q  !rWmvvGBgmFMdVvcfPk:localhost:8800%.K Q  !gXfXRDTXeVvOHQdaaQ:localhost:8800%.J Q  !hegUPDZCEEmBhsNJJR:localhost:8800%.I Q  !aSKNKSGXPGoIbSrbEN:localhost:8800%.H Q  !peJMRJtXBvIiCttNmm:localhost:8800%.G Q  !tPkCGJBKmqUXJoRrnY:localhost:8800%.F Q  !QnmLrBAxeItdHsaxWf:localhost:8800%/E Q !hFwigdYZkwYNSwelRH:localhost:8800%.D Q   !paDmNxsOZIKyApbxXs:localhost:8800%.C Q   !OtBUhGeUSiDMWRKIOT:localhost:8800%/B Q !zHBgbzUZHshNGZvIBS:localhost:8800%0A Q!cidyuyekVzJHHvyomb:localhost:8800%0@ Q!pduebXnTyxQWVxEICp:localhost:8800%.? Q  !ZvLVbnHjeymRiFIkYr:localhost:8800%/> Q !VUibrTIkcRbfrogbQV:localhost:8800%/= Q !WpThtNEVhrUbUdCdMJ:localhost:8800% NV Z  p  n&6:JN 1e'Q ]$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUcm.room.member!pduebXnTyxQWVxEICp:localhost:8800mۨm۩U@anon-20191002_181700-549:localhost:8800,0e?Q ]$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-Em.room.history_visibility!pduebXnTyxQWVxEICp:localhost:8800mۢmۤP@anon-20191002_181700-548:localhost:8800$/e/Q ]$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8m.room.join_rules!pduebXnTyxQWVxEICp:localhost:8800m۠0m۠@anon-20191002_181700-548:localhost:8800&.e3Q ]$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slgm.room.power_levels!pduebXnTyxQWVxEICp:localhost:8800mۜm۞)@anon-20191002_181700-548:localhost:8800 -e'Q ]$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yom.room.member!pduebXnTyxQWVxEICp:localhost:8800mۘmۙ@anon-20191002_181700-548:localhost:8800, e'Q  ]$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxYm.room.create!pduebXnTyxQWVxEICp:localhost:8800m۔ m۔@anon-20191002_181700-548:localhost:8800 +e'Q ]$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cMm.room.member!ZvLVbnHjeymRiFIkYr:localhost:8800mۊ*mۋ@anon-20191002_181700-545:localhost:8800,*e?Q ]$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBYm.room.history_visibility!ZvLVbnHjeymRiFIkYr:localhost:8800mtmw@anon-20191002_181700-545:localhost:8800$)e/Q ]$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAkm.room.join_rules!ZvLVbnHjeymRiFIkYr:localhost:8800momq@anon-20191002_181700-545:localhost:8800&(e3Q ]$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMm.room.power_levels!ZvLVbnHjeymRiFIkYr:localhost:8800miOml@anon-20191002_181700-545:localhost:8800 'e'Q ]$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590m.room.member!ZvLVbnHjeymRiFIkYr:localhost:8800mcmd@anon-20191002_181700-545:localhost:8800& e'Q  ]$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOIm.room.create!ZvLVbnHjeymRiFIkYr:localhost:8800mZm[@anon-20191002_181700-545:localhost:8800 %e'Q ]$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4m.room.member!VUibrTIkcRbfrogbQV:localhost:8800m?mB@anon-20191002_181700-544:localhost:8829 $e'Q ]$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4m.room.member!VUibrTIkcRbfrogbQV:localhost:8800m;meeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~=eeQ$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800~<eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800~;eeQ$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~:eeQ$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~9eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800~8eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~7eeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~6eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~5eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800~4eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~3eeQ$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~2eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~1eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~0eeQ$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~/eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~.eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~-eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800~,eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800~+eeQ$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~*eeQ$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800~)eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800~(eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~'eeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~&eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~%eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M!WpThtNEVhrUbUdCdMJ:localhost:8800~$eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800~#eeQ$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y!WpThtNEVhrUbUdCdMJ:localhost:8800~"eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzg!WpThtNEVhrUbUdCdMJ:localhost:8800~!eeQ$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ!WpThtNEVhrUbUdCdMJ:localhost:8800 |=t5- l d % \  U MeeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800 ieeQ$WwzmUnW7GJoDHgJrcH6EZ8PEaVsWnUQpegtHyk533YI$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM!xXYMxashIZAUOTuGAJ:localhost:8800xeeQ$X3heirD2-M8nySxS1vDHXeIVMcZxM3UqjoZweYraJq4$gy4JjlOSAHy17wzRh5jePVBuA-czE8jsyGppCPwdxzQ!csWEXfVEVxdviNvgAd:localhost:8800aEeeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800 eeQ$WZoUAN0UbBf6GC1IscSsb4nz7HCkbWcISupVcgv7U9o$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY!EfJcWhdjNARbuHYrqU:localhost:8800܁eeQ$WqhzgT-5CnrwOQHQCRuqpB8DUAko1bJA3FGIQBgux2Q$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrg!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$X-EJo841hFoYZHu4qdeXvURrbkJ7PYbuMTcfZpmtdk4$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4!EhUxBjnSkVXpTrQlrn:localhost:8800 eeQ$WZrl8zCWhGgae2wiHRtcgtZ2YSOkEgV1wnBMbpd_rpg$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$WnHB5oswoq090qzXC4hgkCqw5zZI8AJu4wy1FxS5hME$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT4!OWGKxAmTrHLciIdrJi:localhost:8800DeeQ$X5X5nH734q-zBEAViPtKrJk_QCU2mOdpk9jErQthOTA$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg!bNSXSTadOMhIrYpMzH:localhost:8800ށeeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800 eeQ$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$WYgNGzyw_G0ofsXTolp0OVFgktmPmzgI-GYvq6KtHuk$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4!itKDOCtoMkFUETDtle:localhost:8800eeQ$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg!KdOYYnOuwAyQzqwUki:localhost:8800zeeQ$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvo$wd2Ds0I8WuwD9-6lak2NBiz58gyhYEBxk4PV_ZKgo9A!AjjrNwXmPTCruHxaJq:localhost:8800-eeQ$X5S5DAITi2ifaRlM7fG-FKpD1nLvu3kHD2cH3_7bjQw$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg!kkgEEVUJynguTqAoWD:localhost:8800}eeQ$X1YgBTVm50kpw2gdShDvKdZrC1YH9Dppv8WwPPP8Ie0$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!tkajvIKHoOMWGsReBs:localhost:8800JeeQ$X0sDYAyB1Cj-1qqidnvYHlkj_SEsTTXXld7q55WQbxo$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok!aWvVRVaDflYyyGTOdD:localhost:8800GeeQ$WyPmeC7D5i2PBdbKlTeXZ6MmOHZIYtgR6m5ABCKttCk$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q!KdOYYnOuwAyQzqwUki:localhost:8800xeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$VLUu2Otz5veIJX4ZFrBuXyIhG-oRQDIsXy5-1pPVEGI!iTQSCiLqRMDtgXtUdC:localhost:8800ˁeeQ$WxNDujQhRTEF48AOT7AXcijXWZcBchSE82gI-a8DtiQ$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w!iTQSCiLqRMDtgXtUdC:localhost:8800ʁeeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vk!KxhGcTbEWmtgGNpdox:localhost:8800@eeQ$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8A$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA!KxhGcTbEWmtgGNpdox:localhost:8800AeeQ$WkXhv85_MWQZ1-rIqxldZj7uPrBUlBMyOitOWDeVas4$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$WcI-KFlynCUywrHYHbbE78h9oZJ_7BkVUo1ie7k6HWE$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$WatdhTv2MjHNQVCbmXK5XgA1LnBffcIYefRTVnsDBg4$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A!ZaltdIYVZjCHsCWTZD:localhost:8800F ].6n&^6F ~ X 0  h @ v N &vN^ pH V .  f >  nF~V.~V.f>`8!aLx.( ('Q!bNSXSTadOMhIrYpMzH:localhost:8800q'Q!bNSXSTadOMhIrYpMzH:localhost:8800p'Q!bNSXSTadOMhIrYpMzH:localhost:8800o'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800s'Q!bNSXSTadOMhIrYpMzH:localhost:8800r'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800('Q!anErKtXIsVKEEsrzWM:localhost:8800''Q!anErKtXIsVKEEsrzWM:localhost:8800&'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800v'Q!bNSXSTadOMhIrYpMzH:localhost:8800u'Q!bNSXSTadOMhIrYpMzH:localhost:8800t'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800n'Q!bNSXSTadOMhIrYpMzH:localhost:8800m'Q!bNSXSTadOMhIrYpMzH:localhost:8800l'Q!bNSXSTadOMhIrYpMzH:localhost:8800k'Q!bNSXSTadOMhIrYpMzH:localhost:8800j'Q!bNSXSTadOMhIrYpMzH:localhost:8800i'Q!bNSXSTadOMhIrYpMzH:localhost:8800h'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800+'Q!aZwMKYDXJRlSKjQNWM:localhost:8800*'Q!aZwMKYDXJRlSKjQNWM:localhost:8800)'Q!aZwMKYDXJRlSKjQNWM:localhost:8800('Q!aZwMKYDXJRlSKjQNWM:localhost:8800''Q!aZwMKYDXJRlSKjQNWM:localhost:8800&'Q!anErKtXIsVKEEsrzWM:localhost:8800)'Q!bNSXSTadOMhIrYpMzH:localhost:8800z'Q!bNSXSTadOMhIrYpMzH:localhost:8800y'Q!bNSXSTadOMhIrYpMzH:localhost:8800x'Q!bNSXSTadOMhIrYpMzH:localhost:8800w'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800J'Q!aiOswwhoZqjhcjzbzc:localhost:8800H'Q!aiOswwhoZqjhcjzbzc:localhost:8800A'Q!aiOswwhoZqjhcjzbzc:localhost:8800:'Q!aiOswwhoZqjhcjzbzc:localhost:88009'Q!aiOswwhoZqjhcjzbzc:localhost:88008'Q!aiOswwhoZqjhcjzbzc:localhost:88007'Q!aiOswwhoZqjhcjzbzc:localhost:88006'Q!aiOswwhoZqjhcjzbzc:localhost:88005'Q!aiOswwhoZqjhcjzbzc:localhost:88004'Q!aiOswwhoZqjhcjzbzc:localhost:88003'Q!anErKtXIsVKEEsrzWM:localhost:8800+'Q!anErKtXIsVKEEsrzWM:localhost:8800*'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800~'Q!bNSXSTadOMhIrYpMzH:localhost:8800}'Q!bNSXSTadOMhIrYpMzH:localhost:8800|'Q!bNSXSTadOMhIrYpMzH:localhost:8800{   *teQau$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2850}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc"], "type": "m.room.join_rules", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043015968, "hashes": {"sha256": "I1YmElPHcUF5qipYav5qcSPMC6U6fccoYhQxE22KIew"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xNC0XNXdnncc558xddhw6t0ANOzsaQWBjKNgoNNnJ6OOOkQ3sgeYavaXwofv3e/CPq3vCHDKQVXaQi+d7szaAA"}}, "unsigned": {"age_ts": 1570043015968}}keQac$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2849}{"auth_events": ["$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "type": "m.room.power_levels", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"users": {"@anon-20191002_181700-543:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043014896, "hashes": {"sha256": "hQJwHCIpCH+UMU0LhOJU0I67lIbJwddL1cLNPwjAvJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZlFt8xVl39NQWDJfAIMOIPtNozS+zITwFWwKaAeQPDRg3e4Etobfjw7d/K/d3iH4nDpQYytiUqFZS6X9wIdQAA"}}, "unsigned": {"age_ts": 1570043014896}}veQay$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2848}{"auth_events": ["$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I"], "prev_events": ["$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I"], "type": "m.room.member", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-543", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-543:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043013998, "hashes": {"sha256": "uJmI+FYne6XfPaLDYQ261OFjX+f9k2bFpLs/HFzFdzI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VsxJLe+PE+9upZTL4V00jOaD7EvvuAE/Jv2H5VR9N7DFqSYYo4DDYIh6+whBsxWSqPtxsDI+EiIHVnr+CfR1Aw"}}, "unsigned": {"age_ts": 1570043013998}}ieQa_$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2847}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-543:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043013227, "hashes": {"sha256": "o8m66FnfFD7+BUqf7Qes8WObJmZzVIGWh4bli43jLrY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TEelAzvpWwwAY89WyqFKFBlYQgC1Hzt8jqeDNve38ANl5MDxRTDfkgCyu+t5n7yEt9Zl1xW3LdnYD3N2J7WhDg"}}, "unsigned": {"age_ts": 1570043013227}} DU(Z%g4j7 k : o < n 9  i 6  h 5 g2d/c0b-]U"R!4]@anon-20191002_181700-625:localhost:8800mL2]@anon-20191002_181700-625:localhost:8800aK4]@anon-20191002_181700-584:localhost:8800m2]@anon-20191002_181700-584:localhost:8800a4]@anon-20191002_181700-583:localhost:8800m2]@anon-20191002_181700-583:localhost:8800a4]@anon-20191002_181700-582:localhost:8800m2]@anon-20191002_181700-582:localhost:8800a2]@anon-20191002_181700-581:localhost:8800a4]@anon-20191002_181700-580:localhost:8800m4]@anon-20191002_181700-624:localhost:8800mJ2]@anon-20191002_181700-624:localhost:8800aI4]@anon-20191002_181700-623:localhost:8800mH2]@anon-20191002_181700-623:localhost:8800aG4]@anon-20191002_181700-622:localhost:8800mF2]@anon-20191002_181700-622:localhost:8800aE2]@anon-20191002_181700-621:localhost:8800aC4]@anon-20191002_181700-620:localhost:8800mD2]@anon-20191002_181700-620:localhost:8800aB2[@anon-20191002_181700-61:localhost:8800mo0[@anon-20191002_181700-61:localhost:8800an4]@anon-20191002_181700-619:localhost:8800mA2]@anon-20191002_181700-619:localhost:8800a@2]@anon-20191002_181700-618:localhost:8800a?4]@anon-20191002_181700-617:localhost:8800m>2]@anon-20191002_181700-617:localhost:8800a=4]@anon-20191002_181700-616:localhost:8800m<2]@anon-20191002_181700-616:localhost:8800a;2]@anon-20191002_181700-615:localhost:8800a:4]@anon-20191002_181700-614:localhost:8800m92]@anon-20191002_181700-614:localhost:8800a82]@anon-20191002_181700-613:localhost:8800a74]@anon-20191002_181700-612:localhost:8800m62]@anon-20191002_181700-612:localhost:8800a52]@anon-20191002_181700-611:localhost:8800a44]@anon-20191002_181700-610:localhost:8800m32]@anon-20191002_181700-610:localhost:8800a00[@anon-20191002_181700-60:localhost:8800am4]@anon-20191002_181700-609:localhost:8800m22]@anon-20191002_181700-609:localhost:8800a/4]@anon-20191002_181700-608:localhost:8800m12]@anon-20191002_181700-608:localhost:8800a.4]@anon-20191002_181700-606:localhost:8800m-2]@anon-20191002_181700-606:localhost:8800a*4]@anon-20191002_181700-605:localhost:8800m,2]@anon-20191002_181700-605:localhost:8800a)2]@anon-20191002_181700-604:localhost:8800a+4]@anon-20191002_181700-603:localhost:8800m(2]@anon-20191002_181700-603:localhost:8800a&2]@anon-20191002_181700-602:localhost:8800a'4]@anon-20191002_181700-601:localhost:8800m%2]@anon-20191002_181700-601:localhost:8800a#2]@anon-20191002_181700-600:localhost:8800a$/Y@anon-20191002_181700-5:localhost:8800a"0[@anon-20191002_181700-59:localhost:8800al2]@anon-20191002_181700-598:localhost:8800a!2]@anon-20191002_181700-597:localhost:8800a 2]@anon-20191002_181700-596:localhost:8800a2]@anon-20191002_181700-595:localhost:8800a2]@anon-20191002_181700-593:localhost:8800a2]@anon-20191002_181700-591:localhost:8800a2]@anon-20191002_181700-590:localhost:8800a0[@anon-20191002_181700-58:localhost:8800ak2]@anon-20191002_181700-589:localhost:8800a2]@anon-20191002_181700-588:localhost:8800a2]@anon-20191002_181700-587:localhost:8800a2]@anon-20191002_181700-586:localhost:8800a2]@anon-20191002_181700-585:localhost:8800a  4 k 9mfd]c@anon-20191002_181700-576:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAo127.0.0.1d]c@anon-20191002_181700-575:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7Ao127.0.0.1d]c@anon-20191002_181700-574:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6Ao127.0.0.1d]c@anon-20191002_181700-573:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgo127.0.0.1d]c@anon-20191002_181700-572:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3Ao127.0.0.1d]c@anon-20191002_181700-571:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgo127.0.0.1d]c@anon-20191002_181700-570:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQo127.0.0.1a[a@anon-20191002_181700-56:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO0FsZFQwLSxGbjAzXixUXgowMDJmc2lnbmF0dXJlIFiy7c5jxVNqQKAd6fTEIOinfNma03Ww4HTuuirYbJ7_Cg127.0.0.1/d]c@anon-20191002_181700-569:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQo127.0.0.1d]c@anon-20191002_181700-568:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3Ao127.0.0.1  w^4eQ1#$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2853}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-544", "membership": "join"}, "depth": 7, "hashes": {"sha256": "f4Ndgmq5pQJpHvDkl0oR1av55mB0rBCVuCheuNpC+dA"}, "origin": "localhost:8829", "origin_server_ts": 1570043019169, "prev_events": ["$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4"], "prev_state": [], "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-544:localhost:8829", "state_key": "@anon-20191002_181700-544:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n9Y+Vq+W2hIpSfpORnWLLKQmKYq4KzMXTAlJfuY9h9yVXCM5H8pYujXJljsaCFf0iGXxK1sum0hOnSBxG+1MCQ"}, "localhost:8829": {"ed25519:a_UxIG": "kYAhYeqRzBvmusV5o7RTJUT1ayHx3P21OnSGrkhHTk+5rxaRPSwsi4QHMXt1MaY+WVQ8bp3tRZlL3wGId0SZCA"}}, "unsigned": {"age": 264, "replaces_state": "$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4"}}eQa7$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2852}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI"], "type": "m.room.member", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-544", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-544:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043018183, "hashes": {"sha256": "JAjMXsowTnTqY3tn0DHqwK19xHRs/7WJv6FXVYCNFSA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8UA2m7aQweuFlPAJGEeQdVmlopBqkXpAbZ+2nGhte4DU6qoApRh4s1+nae38ER9OKf/HB5Ncdr56y5m1QcGFBA"}, "localhost:8829": {"ed25519:a_UxIG": "IHVamJS9qL5wWpl5fqoVJkWSwomC/g0h/xG5vhAXUQsjfix+xzLko8N5o7sg3BrHhp+3ZW0YgdmwvCL4i1MTCA"}}, "unsigned": {"age_ts": 1570043018183, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-543:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-543:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-543", "avatar_url": null}, "sender": "@anon-20191002_181700-543:localhost:8800"}]}}eQa$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI!VUibrTIkcRbfrogbQV:localhost:8800{"token_id": 531, "stream_ordering": 2851}{"auth_events": ["$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc", "$vmEzohby9M2oqQ3fu3esGzZGqpbHwx79svGxP4MG11I", "$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEI"], "prev_events": ["$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8"], "type": "m.room.history_visibility", "room_id": "!VUibrTIkcRbfrogbQV:localhost:8800", "sender": "@anon-20191002_181700-543:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043016696, "hashes": {"sha256": "Y53rcVat+fWfcjhN49Pufs3UWuWNdD1XSp5NPgtV5mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e0BZfr6no6dEzoHmV95QexyrWYFmiWIbjWOeLyQBb82pntU3BjLeAYrkOCDL3SqiIduOQeYNui806PudaCcpAA"}}, "unsigned": {"age_ts": 1570043016696}}  N> !D' T G  z W d M t5hExUe&u6y:} @  g ( v [ 8>= fC 1  y>'] \m.room.member@anon-20191002_181700-557:localhost:8800 k>'] Nm.room.member@anon-20191002_181700-553:localhost:8829 ]>'] Mm.room.member@anon-20191002_181700-553:localhost:8829 \>'] Lm.room.member@anon-20191002_181700-553:localhost:8829 [>'] Km.room.member@anon-20191002_181700-553:localhost:8829 Z>'] Jm.room.member@anon-20191002_181700-553:localhost:8829 Y>'] Im.room.member@anon-20191002_181700-553:localhost:8829 X>'] Hm.room.member@anon-20191002_181700-553:localhost:8829 W>'] Gm.room.member@anon-20191002_181700-553:localhost:8829 V"?  Fm.room.history_visibility U/  Em.room.join_rules T3  Dm.room.power_levels S>'] Cm.room.member@anon-20191002_181700-552:localhost:8800 R'  Bm.room.create Q>'] Am.room.member@anon-20191002_181700-551:localhost:8800 P"?  @m.room.history_visibility O/  ?m.room.join_rules N3  >m.room.power_levels M>'] =m.room.member@anon-20191002_181700-550:localhost:8800 L'  '] ;m.room.member@anon-20191002_181700-549:localhost:8800 J"?  :m.room.history_visibility I/  9m.room.join_rules H3  8m.room.power_levels G>'] 7m.room.member@anon-20191002_181700-548:localhost:8800 F'  6m.room.create E>'] 5m.room.member@anon-20191002_181700-546:localhost:8829 D"?  4m.room.history_visibility C/  3m.room.join_rules B3  2m.room.power_levels A>'] 1m.room.member@anon-20191002_181700-545:localhost:8800 @'  0m.room.create ?>'] /m.room.member@anon-20191002_181700-544:localhost:8829 >>'] .m.room.member@anon-20191002_181700-544:localhost:8829 =>'] -m.room.member@anon-20191002_181700-544:localhost:8829 <"?  ,m.room.history_visibility ;/  +m.room.join_rules :3  *m.room.power_levels 9>'] )m.room.member@anon-20191002_181700-543:localhost:8800 8'  (m.room.create 7>'] 'm.room.member@anon-20191002_181700-542:localhost:8829 6>'] &m.room.member@anon-20191002_181700-542:localhost:8829 5>'] %m.room.member@anon-20191002_181700-542:localhost:8829 4'  m.room.create !"?  [m.room.history_visibility j/  Zm.room.join_rules i3  Ym.room.power_levels h>'] Xm.room.member@anon-20191002_181700-556:localhost:8800 g'  Wm.room.create f>'] Vm.room.member@anon-20191002_181700-555:localhost:8800 e>'] Um.room.member@anon-20191002_181700-555:localhost:8800 d>'] Tm.room.member@anon-20191002_181700-555:localhost:8800 c"?  Sm.room.history_visibility b/  Rm.room.join_rules a3  Qm.room.power_levels `>'] Pm.room.member@anon-20191002_181700-554:localhost:8800 _'  Om.room.create ^"?  $m.room.history_visibility 3/  #m.room.join_rules 23  "m.room.power_levels 1>'] !m.room.member@anon-20191002_181700-541:localhost:8800 0'  m.room.create />'] m.room.member@anon-20191002_181700-540:localhost:8829 .>'] m.room.member@anon-20191002_181700-540:localhost:8829 ->'] m.room.member@anon-20191002_181700-540:localhost:8829 ,"?  m.room.history_visibility +/  m.room.join_rules *3  m.room.power_levels )4>'] m.room.member@anon-20191002_181700-539:localhost:8800 ('  m.room.create '>'] m.room.member@anon-20191002_181700-538:localhost:8800 &"?  m.room.history_visibility %/  m.room.join_rules $3  m.room.power_levels #>'] m.room.member@anon-20191002_181700-537:localhost:8800 ">'] m.room.member@anon-20191002_181700-536:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules  +g|@ ,u:g#l1  B P W C  QV~\%Hal66Q' !dvZnfJonDkxlrrDXUk:localhost:86Q' !dnZVySJLGNtUKsSgXW:localhost:8800m.room.create<Q3 !djwLhpJUYOKsgQtrky:localhost:8800m.room.power_levels^Q']!djwLhpJUYOKsgQtrky:localhost:8800m.room.member@anon-20191002_181700-393:localhost:8800:Q/ !djwLhpJUYOKsgQtrky:localhost:8800m.room.join_rulesBQ? !djwLhpJUYOKsgQtrky:localhost:8800m.room.history_visibility6Q' !djwLhpJUYOKsgQtrky:localhost:8800m.room.create<Q3 !dWgOTucBVQBKZjfndN:localhost:8800m.room.power_levels ^Q']!dWgOTucBVQBKZjfndN:localhost:8800m.room.member@anon-20191002_181700-193:localhost:8800:Q/ !dWgOTucBVQBKZjfndN:localhost:8800m.room.join_rules BQ? !dWgOTucBVQBKZjfndN:localhost:8800m.room.history_visibility 6Q' !dWgOTucBVQBKZjfndN:localhost:8800m.room.create;Q3 !dUnULFLGtgaVdwHtnz:localhost:8800m.room.power_levels~\Q'[!dUnULFLGtgaVdwHtnz:localhost:8800m.room.member@anon-20191002_181700-39:localhost:8800}9Q/ !dUnULFLGtgaVdwHtnz:localhost:8800m.room.join_rulesBQ? !dUnULFLGtgaVdwHtnz:localhost:8800m.room.history_visibility<Q3 !eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels R^Q']!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829 U^Q']!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800 Q:Q/ !eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rules SBQ? !eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibility T6Q' !eGEEtFXUXuZDImkeql:localhost:8800m.room.create P<Q3 !dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels^Q']!dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800:Q/ !dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rulesBQ? !dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibility6Q' !dvZnfJonDkxlrrDXUk:localhost:8800m.room.create<Q3 !duCKuavMBSfRbTFPsc:localhost:8800m.room.power_levels]Q'[!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-87:localhost:8800]Q'[!duCKuavMBSfRbTFPsc:localhost:8800m.room.member@anon-20191002_181700-86:localhost:8800:Q/ !duCKuavMBSfRbTFPsc:localhost:8800m.room.join_rulesBQ? !duCKuavMBSfRbTFPsc:localhost:8800m.room.history_visibility<Q3 !duCKuavMBSfRbTFPsc:localhost:8800m.room.guest_access6Q' !duCKuavMBSfRbTFPsc:localhost:8800m.room.create<Q3 !drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels !^Q']!drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800 RQ'E!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455 &:Q/ !drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules #BQ? !drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibility %6Q' !drnXStKXkNQkouqUAg:localhost:8800m.room.create <Q3 !dnZVySJLGNtUKsSgXW:localhost:8800m.room.power_levels^Q']!dnZVySJLGNtUKsSgXW:localhost:8800m.room.member@anon-20191002_181700-185:localhost:8800:Q/ !dnZVySJLGNtUKsSgXW:localhost:8800m.room.join_rulesBQ? !dnZVySJLGNtUKsSgXW:localhost:8800m.room.history_visibility !|s @ O X 03BpsY?N|e eQ/ $dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rulesgeQ3 $J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels eQ']$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800aeQ' $PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.create eQ']$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829 eQ']$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829meQ? $kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibilityeeQ/ $1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rulesg~eQ3 $ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels }eQ']$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800a|eQ' $Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.create {eQ']$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800mzeQ? $FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibilityeyeQ/ $EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800m.room.join_rulesgxeQ3 $cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels weQ']$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800aveQ' $vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800m.room.create ueQ']$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-549:localhost:8800mteQ? $aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800m.room.history_visibilityeseQ/ $H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800m.room.join_rulesgreQ3 $_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800m.room.power_levels qeQ']$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-548:localhost:8800apeQ' $ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800m.room.create oeQ']$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-546:localhost:8829mneQ? $ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.history_visibilityemeQ/ $So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.join_rulesgleQ3 $4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.power_levels keQ']$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.member@anon-20191002_181700-545:localhost:8800ajeQ' $w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800m.room.create ieQ']$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800m.room.member@anon-20191002_181700-544:localhost:8829 JZ,tFvHb4 | N h : T & n @  \ . vHd6~R$l>b4|P"~--]@anon-20191002_181700-554:localhost:8800-]@anon-20191002_181700-553:localhost:8829-]@anon-20191002_181700-552:localhost:8800-]@anon-20191002_181700-551:localhost:8800-]@anon-20191002_181700-550:localhost:8800-]@anon-20191002_181700-549:localhost:8800-]@anon-20191002_181700-548:localhost:8800-]@anon-20191002_181700-545:localhost:8800-]@anon-20191002_181700-544:localhost:8829-]@anon-20191002_181700-543:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800+[@anon-20191002_181700-64:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800-]@anon-20191002_181700-641:localhost:8800-]@anon-20191002_181700-640:localhost:8800+[@anon-20191002_181700-63:localhost:8800-]@anon-20191002_181700-639:localhost:8800-]@anon-20191002_181700-638:localhost:8800-]@anon-20191002_181700-637:localhost:8800-]@anon-20191002_181700-635:localhost:8800-]@anon-20191002_181700-634:localhost:8800-]@anon-20191002_181700-633:localhost:8800-]@anon-20191002_181700-632:localhost:8800+[@anon-20191002_181700-62:localhost:8800-]@anon-20191002_181700-629:localhost:8829-]@anon-20191002_181700-628:localhost:8800-]@anon-20191002_181700-626:localhost:8800-]@anon-20191002_181700-625:localhost:8800-]@anon-20191002_181700-624:localhost:8800-]@anon-20191002_181700-623:localhost:8800-]@anon-20191002_181700-622:localhost:8800-]@anon-20191002_181700-620:localhost:8800+[@anon-20191002_181700-61:localhost:8800-]@anon-20191002_181700-619:localhost:8800-]@anon-20191002_181700-617:localhost:8800-]@anon-20191002_181700-616:localhost:8800-]@anon-20191002_181700-614:localhost:8800-]@anon-20191002_181700-612:localhost:8800-]@anon-20191002_181700-610:localhost:8800-]@anon-20191002_181700-609:localhost:8800-]@anon-20191002_181700-608:localhost:8800-]@anon-20191002_181700-606:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-603:localhost:8800-]@anon-20191002_181700-601:localhost:8800-]@anon-20191002_181700-584:localhost:8800-]@anon-20191002_181700-583:localhost:8800-]@anon-20191002_181700-582:localhost:8800-]@anon-20191002_181700-580:localhost:8800-]@anon-20191002_181700-579:localhost:8800-]@anon-20191002_181700-578:localhost:8800-]@anon-20191002_181700-577:localhost:8800-]@anon-20191002_181700-576:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-571:localhost:8800-]@anon-20191002_181700-570:localhost:8800-]@anon-20191002_181700-569:localhost:8800-]@anon-20191002_181700-568:localhost:8800-]@anon-20191002_181700-567:localhost:8800-]@anon-20191002_181700-566:localhost:8800-]@anon-20191002_181700-565:localhost:8800-]@anon-20191002_181700-564:localhost:8800-]@anon-20191002_181700-563:localhost:8800-]@anon-20191002_181700-562:localhost:8800-]@anon-20191002_181700-561:localhost:8800-]@anon-20191002_181700-558:localhost:8800-]@anon-20191002_181700-557:localhost:8800 ,& hu^ k x ' 4 A N [ hu$1>[&3N[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800@]1@anon-20191002_181700-617:localhost:8800!0:localhost:42455P]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800P]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800P]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800P]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800P]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800P]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800P]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800P]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800P]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800P]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800P]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800P]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800P]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800P]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800P]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800P]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800P]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800P]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800P]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800P]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800P]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800P]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800P]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800P]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800 ?G N U  Z  ` g + m 1s7y=CGM QW]!9 ]@anon-20191002_181700-581:localhost:8800a&\> ]  @anon-20191002_181700-580:localhost:8800m&\C9 ]@anon-20191002_181700-580:localhost:8800a&\> ]  @anon-20191002_181700-579:localhost:8800m&\C9 ]@anon-20191002_181700-579:localhost:8800a&\> ]  @anon-20191002_181700-578:localhost:8800m&\C9 ]@anon-20191002_181700-578:localhost:8800a&\> ]  @anon-20191002_181700-577:localhost:8800m&\C9 ]@anon-20191002_181700-577:localhost:8800a&\> ]  @anon-20191002_181700-576:localhost:8800m&\C9 ]@anon-20191002_181700-576:localhost:8800a&\9 ]@anon-20191002_181700-575:localhost:8800a&\@ ]@anon-20191002_181700-574:localhost:8800m&\59 ]@anon-20191002_181700-574:localhost:8800a&\> ]  @anon-20191002_181700-573:localhost:8800m&\D9 ]@anon-20191002_181700-573:localhost:8800a&\> ]  @anon-20191002_181700-572:localhost:8800m&\ $9~ ]@anon-20191002_181700-572:localhost:8800a&\>} ]  @anon-20191002_181700-571:localhost:8800m&\99| ]@anon-20191002_181700-571:localhost:8800a&\@{ ]@anon-20191002_181700-570:localhost:8800m&\ .*9z ]@anon-20191002_181700-570:localhost:8800a&\>y ]  @anon-20191002_181700-569:localhost:8800m&\#9x ]@anon-20191002_181700-569:localhost:8800a&\>w ]  @anon-20191002_181700-568:localhost:8800m&\39v ]@anon-20191002_181700-568:localhost:8800a&\>u ]  @anon-20191002_181700-567:localhost:8800m&\39t ]@anon-20191002_181700-567:localhost:8800a&\>s ]  @anon-20191002_181700-566:localhost:8800m&\C9r ]@anon-20191002_181700-566:localhost:8800a&\>q ]  @anon-20191002_181700-565:localhost:8800m&\C9p ]@anon-20191002_181700-565:localhost:8800a&\>o ]  @anon-20191002_181700-564:localhost:8800m&\C9n ]@anon-20191002_181700-564:localhost:8800a&\>m ]  @anon-20191002_181700-563:localhost:8800m&\C9l ]@anon-20191002_181700-563:localhost:8800a&\>k ]  @anon-20191002_181700-562:localhost:8800m&\C9j ]@anon-20191002_181700-562:localhost:8800a&\>i ]  @anon-20191002_181700-561:localhost:8800m&\C9h ]@anon-20191002_181700-561:localhost:8800a&\9g ]@anon-20191002_181700-560:localhost:8800a&\>f ] @anon-20191002_181700-558:localhost:8800m&\K9e ]@anon-20191002_181700-558:localhost:8800a&\=d ]  @anon-20191002_181700-557:localhost:8800m&\>c ] @anon-20191002_181700-556:localhost:8800m&\9b ]@anon-20191002_181700-557:localhost:8800a&\9a ]@anon-20191002_181700-556:localhost:8800a&\>` ]@anon-20191002_181700-555:localhost:8800m&\>_ ] @anon-20191002_181700-554:localhost:8800m&\X9^ ]@anon-20191002_181700-555:localhost:8800a&\9] ]@anon-20191002_181700-554:localhost:8800a&\?\ ]  @anon-20191002_181700-552:localhost:8800m&\9[ ]@anon-20191002_181700-552:localhost:8800a&\=Z ]  @anon-20191002_181700-551:localhost:8800m&\V>Y ]  @anon-20191002_181700-550:localhost:8800m&\C9X ]@anon-20191002_181700-551:localhost:8800a&\9W ]@anon-20191002_181700-550:localhost:8800a&\=V ]  @anon-20191002_181700-549:localhost:8800m&\V>U ]  @anon-20191002_181700-548:localhost:8800m&\C9T ]@anon-20191002_181700-549:localhost:8800a&\9S ]@anon-20191002_181700-548:localhost:8800a&\>R ] @anon-20191002_181700-545:localhost:8800m&\9Q ]@anon-20191002_181700-545:localhost:8800a&\   *teQau$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2857}{"auth_events": ["$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM", "$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI", "$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590"], "prev_events": ["$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM"], "type": "m.room.join_rules", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043031482, "hashes": {"sha256": "NDlYkjQ1Si24VOitGyCO3OrSPquxmQHv+wasaXjk24U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mTWhI83RuPLI5hcid0dnOYyUxN97DQLE0p6R8+y6W3v7m9RYVS5NFh1LiJDupMHT4jVFWquPS47CN7QZahBXAw"}}, "unsigned": {"age_ts": 1570043031482}}keQac$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2856}{"auth_events": ["$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI", "$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590"], "prev_events": ["$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590"], "type": "m.room.power_levels", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"users": {"@anon-20191002_181700-545:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043029839, "hashes": {"sha256": "0Ne91u17epzT4D4AFVNkeahw1YWIvCFtgckGaS9Sszo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SgJdtKVAuBLrkjTulrhOK2QYb6SuZV+S5au79LpSEA2Fnp6h0tqVb+QcNnRqR+wIjtOQ4psRVuQxqx6G2IMODA"}}, "unsigned": {"age_ts": 1570043029839}}veQay$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2855}{"auth_events": ["$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI"], "prev_events": ["$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI"], "type": "m.room.member", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-545", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-545:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043028240, "hashes": {"sha256": "LFm5kIb2rjfLlcOEjRTWeOx7IJsA9Zikb9Xr0QV5TDU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzhmoVHCyKG3QfhXqiPEjAay8cRcH79SO9PwhJai7ZCLMIDjegQ4rTYgp9dM2HLFINkwRvoGgL8QpSPxviQABw"}}, "unsigned": {"age_ts": 1570043028240}}ieQa_$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800{"token_id": 532, "stream_ordering": 2854}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZvLVbnHjeymRiFIkYr:localhost:8800", "sender": "@anon-20191002_181700-545:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-545:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043026103, "hashes": {"sha256": "0pF7qtPcg5Ldrj7D1KXleUDX/9T95svgkL9X21VfEKo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1CgfauIPi1GMDeRSad+85y3w4h9lYUUuofOrs6052fQYKff342wH2PdCfpfFwCX3wfLjKsgLveUMMAZ6CWwMAw"}}, "unsigned": {"age_ts": 1570043026103}} {*) 4 ^ ] h +0T6kv{i`Q3 e Q!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk _Q']e P!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuoc^Q' e O!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.create$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM ]Q']e N!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw \Q']e M!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$njqjJEw7SsQtXLYP-9nDQHdUjuEvQSs0zoxPpDAmzmI [Q']e L!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 ZQ']e K!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$H8hysc4WuEJUITusZTWwChJB35FHkBNVZCb6gLUHxaI YQ']e J!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E XQ']e I!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI WQ']e H!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$mBx0HjMxVGkx2tmY3X6XfkJHIrGzDeZdrEmWAmzbG3g VQ']e G!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8oUQ? e F!zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibility$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0gTQ/ e E!zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rules$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQiSQ3 e D!zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo RQ']e C!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMccQQ' e B!zHBgbzUZHshNGZvIBS:localhost:8800m.room.create$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo PQ']e A!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1AoOQ? e @!cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibility$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTggNQ/ e ?!cidyuyekVzJHHvyomb:localhost:8800m.room.join_rules$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUiMQ3 e >!cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I LQ']e =!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswcKQ' e 9 4/*|%w rmhc TQe U!hFwigdYZkwYNSwelRH:localhost:8800$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sTQe T!hFwigdYZkwYNSwelRH:localhost:8800$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuETQe S!hFwigdYZkwYNSwelRH:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4TQe R!hFwigdYZkwYNSwelRH:localhost:8800$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYTQe Q!paDmNxsOZIKyApbxXs:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9ET Qe P!paDmNxsOZIKyApbxXs:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4T Qe O!paDmNxsOZIKyApbxXs:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUT Qe N!paDmNxsOZIKyApbxXs:localhost:8800$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014T Qe M!paDmNxsOZIKyApbxXs:localhost:8800$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gT Qe L!paDmNxsOZIKyApbxXs:localhost:8800$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYTQe K!paDmNxsOZIKyApbxXs:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMTQe J!paDmNxsOZIKyApbxXs:localhost:8800$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4TQe I!OtBUhGeUSiDMWRKIOT:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcTQe H!OtBUhGeUSiDMWRKIOT:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsTQe G!OtBUhGeUSiDMWRKIOT:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xATQe F!OtBUhGeUSiDMWRKIOT:localhost:8800$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwTQe E!OtBUhGeUSiDMWRKIOT:localhost:8800$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQTQe D!OtBUhGeUSiDMWRKIOT:localhost:8800$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgkTQe C!OtBUhGeUSiDMWRKIOT:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuoTQe B!OtBUhGeUSiDMWRKIOT:localhost:8800$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMT~Qe A!zHBgbzUZHshNGZvIBS:localhost:8800$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwT}Qe @!zHBgbzUZHshNGZvIBS:localhost:8800$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0T|Qe ?!zHBgbzUZHshNGZvIBS:localhost:8800$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38ET{Qe >!zHBgbzUZHshNGZvIBS:localhost:8800$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmITzQe =!zHBgbzUZHshNGZvIBS:localhost:8800$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8TyQe !zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 }Q']e =!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8p|Q? e e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 f1=e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 d1<e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk c1;e$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s b1:e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE a19e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 `18e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY _17e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E ^16e$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 ]15e$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU \14e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 [13e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g Z12e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY Y11e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM X10e$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 W1/e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc V1.e$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls U1-e$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA T1,e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw S1+e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ R1*e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk Q1)e$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo P1(e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM O1'e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw N1&e$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0 L1%e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E J1$e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI I1#e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 G1"e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 F1!e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ E1 e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo D1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc C1e$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo B1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A A1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg @1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU ?1e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I >1e$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw =1e$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE <1e$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc ;1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E :1e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 91e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg 81e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo 71e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY 61e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 51e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 4 a} { y w u sqomkigeca~^eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800~]eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~\eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800~[eeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800~ZeeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~YeeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800~XeeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800~WeeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~VeeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800~UeeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800~TeeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~SeeQ$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800~ReeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800~QeeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~PeeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800~OeeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800~NeeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~MeeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800~LeeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800~KeeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~JeeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800~IeeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800~HeeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~GeeQ$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800~FeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800~EeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800~DeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~CeeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800~BeeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590!ZvLVbnHjeymRiFIkYr:localhost:8800~AeeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$w76EZP-NpS1Sc97FW4Cd_m-L2h9AwV2Ez59OBJChrOI!ZvLVbnHjeymRiFIkYr:localhost:8800~@eeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM!ZvLVbnHjeymRiFIkYr:localhost:8800 yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;,m}L m m x m m m m m mW m m m mm m m\ mڊ m m m]  mʞ ~ ~mǗ } }mT | |mš { {mܺU z zmܷ+ y ymܴJ x xmܱ_ w wmܮH v vmܧ u umܣH t tmܟ s smܜ r rmܘ q qmܑ p pm܎A o om܉ n nm܇3 m mm܄' l lm} k kmz j jmx i imu h hmsc g gm\d f fmY Z ZmUW Y YmO X XmL W WmG V VmE U Um? T Tm< S Sm9 R Rm4T Q Qm, P Pm* O Om%^ N Nm#1 M Mm L Lmi K Km: J Jm I Im X H Hm ( G Gm F FmP E Em` D Dm C CmE B BmY A AmZ @ @m ? ?m޷ > >m = =mn < <m ; ;m : :m 9 9m 8 8m\ 7 7m۾ 6 6mۻ 5 5m۷ 4 4m۵ 3 3m۳ 2 2mۨ 1 1mۢ 0 0m۠0 / /mۜ . .mۘ - -m۔ , ,mۊ* + +mt * *mo ) )miO ( (mc ' 'mZ & &m? % %m; $ $m5 # #m3 " "m. ! !m+n m(k  m  m'  m  m8  m  m u  m  m  m  mP  m  m  m  mt  m>  m  m  my mw ms/ mpV ml mg md ma/ m_4 m\j mT mO mL mJ- mG mD mB% mA m;j m9 m6a m2 m/ m+R m(& m" m  m& m m< m mШ m m mڽ mڹ  mڶ  mڳ  mڰ9  mڥf  mڠ  mڝ  mښ  mژ mڕ~ mڌ mڈC mڅ mڂh m m|C m\d mZt mW2 mS mP mLs mI! mEp mBL m4 m4 m1b m/Q m, m'g m$a m! m m m m m m m e m m mp m m m m m3 mp m m m m m m@  %eQa$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2864}{"auth_events": ["$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg", "$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY", "$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "prev_events": ["$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8"], "type": "m.room.history_visibility", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043044539, "hashes": {"sha256": "YdhInTdzPA0aMf3oC9Eu+mMfg6nz8fQhiWp0DJF2UIw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/mnLhHu8lswbt+l29jOYhB8Eo8dm1G30oxS3ANsps4qKUQEZ1Z3J5DF21SgsJc5NmyDBFpriUkp8uNfV0WJmDw"}}, "unsigned": {"age_ts": 1570043044539}}t$eQau$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2863}{"auth_events": ["$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg", "$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY", "$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "prev_events": ["$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg"], "type": "m.room.join_rules", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043043888, "hashes": {"sha256": "O7QnHh7bKl668obloOvbumhHZGR6fxKonsWBgwZgz7s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a6Lwx99c5QrG2lbRR0A3zm7Lx4cpY0pJOR/l0Q+Z1ALDVNI/FmRlSFaECVQU52ozDo6ZvJKxC0aaTEgQLaZyDA"}}, "unsigned": {"age_ts": 1570043043888}}k#eQac$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2862}{"auth_events": ["$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY", "$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "prev_events": ["$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo"], "type": "m.room.power_levels", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"users": {"@anon-20191002_181700-548:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043043031, "hashes": {"sha256": "jUUEnDw5TCCsrOUbkdC2l/TJUjYgoJQMfo00HESphD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TrlQcVL/OM5w1Z+TJ5bqc02UNhrXdsNPtdMVw66teGWUnFymMoslFxCYbNxiBxUsKWY/RbRg6ZVZC3Qf0FVHDQ"}}, "unsigned": {"age_ts": 1570043043031}}v"eQay$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800{"token_id": 533, "stream_ordering": 2861}{"auth_events": ["$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY"], "prev_events": ["$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY"], "type": "m.room.member", "room_id": "!pduebXnTyxQWVxEICp:localhost:8800", "sender": "@anon-20191002_181700-548:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-548", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-548:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043042015, "hashes": {"sha256": "DYkps5kUmEsPGR/xC1R/kupPYQN1q8kmh2MXI24EQM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hwVBgRdOPPZ9+/hkw7RYSO2hghxWl166EY3WjB7NcDjK9t+8xFUputTD8ek1V0sn/WQswnrgfeOwT5z22ObjAA"}}, "unsigned": {"age_ts": 1570043042015}} ~z v r n j fb^ZVRNJF@eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800?eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800>eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800=eeQ$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800<eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800;eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800:eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:88009eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:88008eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:88007eeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:88006eeQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:88005eeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:88004eeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:88003eeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:88002eeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:88001eeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:88000eeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800/eeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800.eeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800-eeQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800,eeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800+eeQ$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800*eeQ$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800)eeQ$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800(eeQ$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800'eeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800&eeQ$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800%eeQ$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800$eeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800#eeQ$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY!pduebXnTyxQWVxEICp:localhost:8800 9r  T MF?xE e]]Q=$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0@anon-20191002_181700-559:localhost:8829@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800inviteanon-20191002_181700-559C e]]Q=$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800joinanon-20191002_181700-558, e]]Q$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E@anon-20191002_181700-556:localhost:8800@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800leaveC e]]Q=$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4@anon-20191002_181700-557:localhost:8800@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800joinanon-20191002_181700-557E e]]Q=$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU@anon-20191002_181700-557:localhost:8800@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800inviteanon-20191002_181700-557C e]]Q=$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM@anon-20191002_181700-556:localhost:8800@anon-20191002_181700-556:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800joinanon-20191002_181700-556, e]]Q$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc@anon-20191002_181700-555:localhost:8800@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800leaveC e]]Q=$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls@anon-20191002_181700-555:localhost:8800@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800joinanon-20191002_181700-555E e]]Q=$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA@anon-20191002_181700-555:localhost:8800@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800inviteanon-20191002_181700-555C e]]Q=$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo@anon-20191002_181700-554:localhost:8800@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800joinanon-20191002_181700-554C e]]Q=$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800joinanon-20191002_181700-553E e]]Q=$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800inviteanon-20191002_181700-553, e]]Q$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800leaveC e]]Q=$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829!zHBgbzUZHshNGZvIBS:localhost:8800joinanon-20191002_181700-553E e]]Q=$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800inviteanon-20191002_181700-553C e]]Q=$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc@anon-20191002_181700-552:localhost:8800@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800joinanon-20191002_181700-552C e]]Q=$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A@anon-20191002_181700-551:localhost:8800@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800joinanon-20191002_181700-551C~ e]]Q=$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw@anon-20191002_181700-550:localhost:8800@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800joinanon-20191002_181700-550C} e]]Q=$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc@anon-20191002_181700-549:localhost:8800@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800joinanon-20191002_181700-549C| e]]Q=$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo@anon-20191002_181700-548:localhost:8800@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800joinanon-20191002_181700-548 !.- 8 f e  p  .9>fpu  z meQ? $qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibilityeeQ/ $Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rulesgeQ3 $2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels eQ']$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829joineQ']$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800leave eQ']$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800joinmeQ? $mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibilityeeQ/ $MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rulesgeQ3 $KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels-aeQ' $uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800m.room.createaeQ' $Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800m.room.createeQ']$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800leavemeQ? $UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibilityeeQ/ $dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rulesgeQ3 $J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.power_levels eQ']$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-554:localhost:8800joina eQ' $PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.create eQ']$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829joinm eQ? $kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibilitye eQ/ $1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rulesgeQ3 $ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels eQ']$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800joinaeQ' $Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800m.room.create eQ']$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-551:localhost:8800joinmeQ? $FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800m.room.history_visibilityeeQ/ $EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800m.room.join_rulesgeQ3 $cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I!cidyuyekVzJHHvyomb:localhost:8800m.room.power_levels eQ']$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw!cidyuyekVzJHHvyomb:localhost:8800m.room.member@anon-20191002_181700-550:localhost:8800joinaeQ' $vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE!cidyuyekVzJHHvyomb:localhost:8800m.room.create eQ']$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800m.room.member@anon-20191002_181700-549:localhost:8800joinm~eQ? $aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E!pduebXnTyxQWVxEICp:localhost:8800m.room.history_visibilitye}eQ/ $H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8!pduebXnTyxQWVxEICp:localhost:8800m.room.join_rulesg|eQ3 $_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg!pduebXnTyxQWVxEICp:localhost:8800m.room.power_levels .ledg Ya i WXk  Z  [  ^ `l ck TeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800TeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800~TeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800TeQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo!yAzXcNLHMuqFOcOexj:localhost:8800TeQ$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8!aknLNLxfChlLvFYhkJ:localhost:8800]TeQ$gDMk66dnHW2SUBIczupK3Xh_c1Yo2hNMpcS0afER0Xw!vAUAIZrCnHTeMGeNuw:localhost:8800SeQ$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA!GixhPUMvtKSWoKRgvw:localhost:8800 SeQ$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0!sPWVGnipjiiWQpywNO:localhost:8800 TeQ$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5w!aHyAJEOSdKqTiRjOvw:localhost:8800bTeQ$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QE!ZaOktTIVeRgBXxfubH:localhost:8800SeQ$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!WVzjUePHrzCjfyTbmK:localhost:8800tSeQ$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU!aWbcZNVBalJilCEsdr:localhost:8800TeQ$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE!hYPSaMPGsLnvYSmwhg:localhost:8800TeQ$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg!MWCLSWWGdWcSivNVLI:localhost:8800SeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4!BkzROHxDAfKIzYpmPV:localhost:8800QTeQ$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw!XiwGxQKwjgutEClKUy:localhost:8829NTeQ$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM!GGXyLHdVXqhQjPRvac:localhost:8800TeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800jTeQ$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc!THHfVSOSWiBQTHRAnJ:localhost:8800[TeQ$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA!RSLvuCuAqKQQrKCxNq:localhost:8800TeQ$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY!XNfwczePlyYFWLCaui:localhost:8800TeQ$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc!YufaOfAlruTdjyUCwO:localhost:8800TeQ$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo8!erBPdgtUsiOfIKUkho:localhost:8800SeQ$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc!HcMGemcRrLnLprOJJR:localhost:8800=TeQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800TeQ$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc!kwJgbtogEzCqYbUXfh:localhost:8800?TeQ$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg!aZwMKYDXJRlSKjQNWM:localhost:8800PTeQ$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfM!ozgnwUlebxvzLVwyHW:localhost:8800xSeQ$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0!OBWkjfrDCNgYFfblia:localhost:8800LTeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800SeQ$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ!SBEprlZiuliFNSfNmz:localhost:8800.TeQ$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk!KIHYKMzkRDrJwiywwz:localhost:8800TTeQ$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC68!rJhSRzmWBQHlIhuDXT:localhost:8800TeQ$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE!hZuwenlFDapIPBOyfi:localhost:88008TeQ$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI!FIOuvzpMhoERunVYYA:localhost:8800TeQ$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg!JYLMokjOhZZlmbZvTf:localhost:8800TeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800TeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800TeQ$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ!WYyiQAVvitxsLZKVCG:localhost:8800TeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800TeQ$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIc!QcaNrIiUsWpTiVGOnt:localhost:8800wTeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8!krhefVncoErkCtnvsy:localhost:8800TeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8!MBWnwKRwFznvRpAzxr:localhost:8800TeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM!eLsrBEnrHolwCNgkFW:localhost:8800TeQ$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40!NboFFVLpJHTeuUKCjM:localhost:8800RSeQ$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc!uxKymrHZeXRYCZwekU:localhost:8800 t l e ]| U ME=5-% eeQ$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800 peeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800 =eeQ$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800 eeQ$fiqCvYZwaWD5qvY0UKkCdvJ7vdNRpk6nWR3clfz+0Vo$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$fcvpeVk22fXrYC7VMULaV32GVJX4XjZwr4Sjd84sNzI$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I!FPcQcheNebvdFvmOnr:localhost:8800eeQ$fas9-TupWyLS3h8kwPftO7sMMV91s_ORNUTIkr2OhDU$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg!SvKwEALYoNreUvqAlp:localhost:8800eeQ$f_0RYesyzy0fkeCSuUXH-sru55p_yFDHdp4KII6wy8U$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg!CQKLQUpSYakhxVDltC:localhost:8800eeQ$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8$OtGZpr8s2d2_3Q1Wb_k2UYSNCxi9L2ijwnC-2owqHYE!krhefVncoErkCtnvsy:localhost:8800eeQ$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Ok$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY!sJnuQYOyruhUpXDsLY:localhost:8800*eeQ$fW5ykXQdTpZgdk7XfqXDDhYpa4XHIHqsjc5Li2q-5gw$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA!SrMQpDMFREKRMELwbL:localhost:8800eeQ$fUamMDMDE6Sln1INNPpfTq3U5Fs2vs1MchiTt336O10$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI!PQZMTVTeCYqMZwkHvW:localhost:8800meeQ$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$fJwWnvkAX4Y17xxJdYa1gtktPQrWspSFq5KIluSS2iM$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYo!eWRdwtyqHvuxZFvhNS:localhost:8800GeeQ$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk!kwXxkGQFkaeenFTQJr:localhost:88009eeQ$fJJmv5dsKV1ZeWoVTqijHfWD5SeZWVtwXFTx3eZ0ZCI$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY!rWGwSSefrZzQYCYFHs:localhost:8800'eeQ$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4$vogtq5v9FllDVE8ITYj_O1J1mhqOcTjfkLAKms6AAbM!OaCEdDAiatpwYcagUb:localhost:8800eeQ$fIQCuX0wmHQR0H-iDpXYMZFyqMCqzQuewygfS__WJ-8$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI!UaitDdkGDcwvRLJSvp:localhost:8800eeQ$fHibvZ2j/vY/bacHocyuW3BIXNI3l7Lt+6UfBmnNlXo$s5J2djspvbQCIrYrQiJw1ryaqzbRB40/Lvt2Woa3EA8!KIHYKMzkRDrJwiywwz:localhost:8800 JeeQ$fCvWvHWg4r9ltvF9-yp_5Tcs5bnCiDf5RlXEmaKiHq8$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$fBuv__8U2FI5qIGv1xaNCUd60WWQzWdOjQmBY1dDbdg$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA!UaitDdkGDcwvRLJSvp:localhost:8800"eeQ$fA2hLvSVyTAHyL6OHLl5guWtE36xZlr0cMXQRnOZUbM$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk!eLsrBEnrHolwCNgkFW:localhost:8800eeQ$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rw$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A!yTQmLDAxZscWKLMSWh:localhost:8800ZeeQ$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOU$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU!IZkczIYykpZDvjuUWn:localhost:8800veeQ$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h0!odAvowLhHJcmkKlxFk:localhost:8800eeQ$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU$ZVhOPriHGZbtk__9x9B604eqgjbnK17nds1Iq_7R_no!wnriPzXkIMmdTNoJKU:localhost:8800ŁeeQ$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4!rpVYLTJGcFNdGzFzXj:localhost:8800 eeQ$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY$ZaFfHUpkACgCF49Y9V-8S_ACnY39ugIR329Li9jIY-8!SrMQpDMFREKRMELwbL:localhost:8800'eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VPeL$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQsha256n:lb, ue؊tVOeL$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8sha256kBOܐ;dZ1IX v1eL$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcsha2563|'XQɮ@VJ:swV=eL$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lssha256]"w@fmnzb\$ɨНPxT[V<eL$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAsha256&,~&!|BJ;nKzV;eL$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwsha256QsudW|_M <*MV:eL$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQsha256t}@4q NrgX~TV9eL$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgksha256'<9Rf B33!anxn V8eL$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuosha256^ؘA9 6Sb?\b`.@ V7eL$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMsha256<*"$+-Z9-AϘCV6eL$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwsha256)(Ea4j*fL9qض V5eL$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0sha2569Rx awDeyimZRT.",-V4eL$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38Esha256 A)ޤ^Il821MoV3eL$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmIsha256UH3aȈw$ѹy bV2eL$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8sha256Tl;JSh3 sʀ&V1eL$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0sha2567 'RVGsWp,#HP=V0eL$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQsha256.ߴ}iQ~<7<,Xn,AޛU4V/eL$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLosha256'߀(;߯-72|+ V.eL$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcsha256ϊLG5;7&k  Kl? ^ 1 ^ 1  } P # r G  pe8  F yLxY,Q!yfizglmCXdcqCgDrTr:localhost:8800 z z,Q!yfizglmCXdcqCgDrTr:localhost:8800 { {,Q!zFdNewlKnUiMBxnYrN:localhost:8800+Q !zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,,Q!yWhIsLsgNVGcnELrDS:localhost:8800EE,Q!yWhIsLsgNVGcnELrDS:localhost:8800DD,Q!yWhIsLsgNVGcnELrDS:localhost:8800CC,Q!yWhIsLsgNVGcnELrDS:localhost:8800BB,Q!yWhIsLsgNVGcnELrDS:localhost:8800AA,Q!yWhIsLsgNVGcnELrDS:localhost:8800@@+Q !yWhIsLsgNVGcnELrDS:localhost:8800??,Q!zScKnCZCFPIIodAiQj:localhost:8800 M M,Q!zScKnCZCFPIIodAiQj:localhost:8800 J J,Q!zScKnCZCFPIIodAiQj:localhost:8800 H H,Q!zScKnCZCFPIIodAiQj:localhost:8800 F F,Q!zScKnCZCFPIIodAiQj:localhost:8800 D D+Q !zScKnCZCFPIIodAiQj:localhost:8800 B B,Q!yfizglmCXdcqCgDrTr:localhost:8800 y y,Q!yfizglmCXdcqCgDrTr:localhost:8800 x x,Q!yfizglmCXdcqCgDrTr:localhost:8800 w w,Q!yfizglmCXdcqCgDrTr:localhost:8800 v v,Q!yfizglmCXdcqCgDrTr:localhost:8800 u u,Q!yfizglmCXdcqCgDrTr:localhost:8800 t t,Q!yfizglmCXdcqCgDrTr:localhost:8800 s s+Q !yfizglmCXdcqCgDrTr:localhost:8800 r r,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 +Q !ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 0,Q!yTQmLDAxZscWKLMSWh:localhost:8800 / /,Q!yTQmLDAxZscWKLMSWh:localhost:8800 . .,Q!yTQmLDAxZscWKLMSWh:localhost:8800 - -,Q!yTQmLDAxZscWKLMSWh:localhost:8800 , ,,Q!yTQmLDAxZscWKLMSWh:localhost:8800 + +,Q!yTQmLDAxZscWKLMSWh:localhost:8800 * *,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) )*Q!zhCsYcaweVFJLLNwBz:localhost:8800..*Q!zhCsYcaweVFJLLNwBz:localhost:8800--*Q!zhCsYcaweVFJLLNwBz:localhost:8800,,*Q!zhCsYcaweVFJLLNwBz:localhost:8800++)Q !zhCsYcaweVFJLLNwBz:localhost:8800***Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800)Q !zNCItZNbpkZKuufRhC:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800+Q !zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zHBgbzUZHshNGZvIBS:localhost:8800 A A,Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ @,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? ?,Q!zHBgbzUZHshNGZvIBS:localhost:8800 > >,Q!zHBgbzUZHshNGZvIBS:localhost:8800 = =,Q!zHBgbzUZHshNGZvIBS:localhost:8800 < <,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; ;,Q!zHBgbzUZHshNGZvIBS:localhost:8800 : :,Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 9+Q !zHBgbzUZHshNGZvIBS:localhost:8800 8 8-,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( (,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' ',Q!yWhIsLsgNVGcnELrDS:localhost:8800 TT,Q!yWhIsLsgNVGcnELrDS:localhost:8800 MM,Q!yWhIsLsgNVGcnELrDS:localhost:8800FF xSLm@_2X+yR&rE>k  Kl? ^ 1 ^ 1  } P # r G  pe8  F yLxY,Q!yfizglmCXdcqCgDrTr:localhost:8800 z z,Q!yfizglmCXdcqCgDrTr:localhost:8800 { {,Q!zFdNewlKnUiMBxnYrN:localhost:8800+Q !zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,,Q!yWhIsLsgNVGcnELrDS:localhost:8800EE,Q!yWhIsLsgNVGcnELrDS:localhost:8800DD,Q!yWhIsLsgNVGcnELrDS:localhost:8800CC,Q!yWhIsLsgNVGcnELrDS:localhost:8800BB,Q!yWhIsLsgNVGcnELrDS:localhost:8800AA,Q!yWhIsLsgNVGcnELrDS:localhost:8800@@+Q !yWhIsLsgNVGcnELrDS:localhost:8800??,Q!zScKnCZCFPIIodAiQj:localhost:8800 M M,Q!zScKnCZCFPIIodAiQj:localhost:8800 J J,Q!zScKnCZCFPIIodAiQj:localhost:8800 H H,Q!zScKnCZCFPIIodAiQj:localhost:8800 F F,Q!zScKnCZCFPIIodAiQj:localhost:8800 D D+Q !zScKnCZCFPIIodAiQj:localhost:8800 B B,Q!yfizglmCXdcqCgDrTr:localhost:8800 y y,Q!yfizglmCXdcqCgDrTr:localhost:8800 x x,Q!yfizglmCXdcqCgDrTr:localhost:8800 w w,Q!yfizglmCXdcqCgDrTr:localhost:8800 v v,Q!yfizglmCXdcqCgDrTr:localhost:8800 u u,Q!yfizglmCXdcqCgDrTr:localhost:8800 t t,Q!yfizglmCXdcqCgDrTr:localhost:8800 s s+Q !yfizglmCXdcqCgDrTr:localhost:8800 r r,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!ybXveQoxPVhjpKHAkG:localhost:8800 +Q !ybXveQoxPVhjpKHAkG:localhost:8800 ,Q!yTQmLDAxZscWKLMSWh:localhost:8800 0 0,Q!yTQmLDAxZscWKLMSWh:localhost:8800 / /,Q!yTQmLDAxZscWKLMSWh:localhost:8800 . .,Q!yTQmLDAxZscWKLMSWh:localhost:8800 - -,Q!yTQmLDAxZscWKLMSWh:localhost:8800 , ,,Q!yTQmLDAxZscWKLMSWh:localhost:8800 + +,Q!yTQmLDAxZscWKLMSWh:localhost:8800 * *,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ) )*Q!zhCsYcaweVFJLLNwBz:localhost:8800..*Q!zhCsYcaweVFJLLNwBz:localhost:8800--*Q!zhCsYcaweVFJLLNwBz:localhost:8800,,*Q!zhCsYcaweVFJLLNwBz:localhost:8800++)Q !zhCsYcaweVFJLLNwBz:localhost:8800***Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800*Q!zNCItZNbpkZKuufRhC:localhost:8800)Q !zNCItZNbpkZKuufRhC:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800,Q!zNBpypJDRMlBdOcLlW:localhost:8800+Q !zNBpypJDRMlBdOcLlW:localhost:8800 ,Q!zFdNewlKnUiMBxnYrN:localhost:8800  ,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zFdNewlKnUiMBxnYrN:localhost:8800,Q!zHBgbzUZHshNGZvIBS:localhost:8800 A A,Q!zHBgbzUZHshNGZvIBS:localhost:8800 @ @,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ? ?,Q!zHBgbzUZHshNGZvIBS:localhost:8800 > >,Q!zHBgbzUZHshNGZvIBS:localhost:8800 = =,Q!zHBgbzUZHshNGZvIBS:localhost:8800 < <,Q!zHBgbzUZHshNGZvIBS:localhost:8800 ; ;,Q!zHBgbzUZHshNGZvIBS:localhost:8800 : :,Q!zHBgbzUZHshNGZvIBS:localhost:8800 9 9+Q !zHBgbzUZHshNGZvIBS:localhost:8800 8 8-,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ( (,Q!yTQmLDAxZscWKLMSWh:localhost:8800 ' ',Q!yWhIsLsgNVGcnELrDS:localhost:8800 TT,Q!yWhIsLsgNVGcnELrDS:localhost:8800 MM,Q!yWhIsLsgNVGcnELrDS:localhost:8800FF {tmf_XQJC<5.'  xqjc\UNG@92+$ | u n g ` Y R K D = 6 / ( !    } u m e ] U M E = 5 - %    } u m e ] U M E = 5 - %    } u m e ] U M E = 5 - %    } u m e ] U M E = 5 - %   }ume]UME=5-% }ume]UME=5-% }ume]UME=5-% }ume]UME=5-% }ume]UME=5-% }ume]UX] \ [ Z Y X W V U T S R Q P O N M L K J I H G F ED B A C ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                  ~ }| {z yx w vu t s r q p o nm lk j i hg f e dc b a `_ ^] \ [ Z Y X V W T S R Q P O N M L K J I H G E F C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                       Pxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (     x h p ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPw v u t s r q p o n m l k j i h g fed cb a`_^]\[ZYXWVUTS RQPONMLK JIHGFEDC BA @?>=< ; : 98 76 54 32 10 /. -, + * )(' &%$ # " !                        ~ } |{ z yx w vu t srq po nm lk ji hg fe dc b a` _ ^ ] \ [ Z Y XW V UT S R Q P M O N J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 1 2 / . - , + ) ( ' & % $ # " !                                         ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                       ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ *   *tBeQau$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2893}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY"], "type": "m.room.join_rules", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043077425, "hashes": {"sha256": "BM9tp+M1Mcr/n840g/eX1ymVK2iOLF7U2zom7hPmEbg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "blnRLia/u1rCSdnGn2mOXnM6FBrToTnjJhZlrgzEibbALgvGG5n4pyEqA7cfP5QZA3pDMKMuoJM4h8nePrwADA"}}, "unsigned": {"age_ts": 1570043077425}}kAeQac$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2892}{"auth_events": ["$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "type": "m.room.power_levels", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"users": {"@anon-20191002_181700-556:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043076592, "hashes": {"sha256": "hXb2UVoGqZHyzWTFY0qgXrn1Ko/b8VONmhG6cny2AEQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YOFiefAJo/V7AlE3d7uRCLAL1C7UOZ0Wk8T3cZ23i8YSX1AIHpVi9FXDWPi0aYUJ+SO2/c+zUhWyOXEjDySpAg"}}, "unsigned": {"age_ts": 1570043076592}}v@eQay$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2891}{"auth_events": ["$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4"], "prev_events": ["$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-556", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-556:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043075945, "hashes": {"sha256": "xQIPRl6YauniIdk6xMs4CAxfKzWVMu5xQ/tJiEJrPUI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pww18GRlzh80YDBUDWxRs9o+1seJAmBsGKfJIZjOsEtkNzEL+cvDDhs9B1T9Uk2mrOufcG4WB4zmcxxOT9U9CQ"}}, "unsigned": {"age_ts": 1570043075945}}i?eQa_$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2890}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-556:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043075130, "hashes": {"sha256": "dQLAqWNlqcaR28Hog7nyqQwiIj3uHdL5vXtVqexYolY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JHteD+wEDUnbymK81A5kvYqb0QiKxzqzlHka1OnxCxmHled3ZgYy005Xz5VSa1Tm72KCYnoxHtub5OpEUxrpBA"}}, "unsigned": {"age_ts": 1570043075130}} i g 4 h5i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBTXdxMSZmUFVAZlheSUgKMDAyZnNpZ25hdHVyZSDr34t0k_sNbl0oV5UpcQrha7bZTBvODRg0Y0rYoURguQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9SekBYfk5HZHNRU0s1SioKMDAyZnNpZ25hdHVyZSCisDa-j-PVkgYuDqb3RUEeyiW_Iq0tlUWpNhhd_UTryAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5maEk1b21HK0RTT35wdUwKMDAyZnNpZ25hdHVyZSBA_WEiFzentS6hJIu1PrA_sLsoMLfpHFRZ53Zlw660oAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC11PVZabjY3RGlzTmxFLUMKMDAyZnNpZ25hdHVyZSCfG716LMrgpPdwmGr596HemTc5FnyhlQ2aLnYbUirwgQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE53eXdEWHZOQUxNcEpuQkAKMDAyZnNpZ25hdHVyZSAx-RkDlL2KAq97_85q6iYb8aLNR2Ho4r9CzAIRqtGUqgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDExTDdPNGoubjk7Tko2WkMKMDAyZnNpZ25hdHVyZSAXsnk-cD970UVzv1G8lP_F8ew18BlEvFdq7W40ykYUGQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJjRyYwPWExUiM2OX5pOEYKMDAyZnNpZ25hdHVyZSBA0E3RGiJd3RthwhHtpbZ6jj0OdXwLpW61LKIS5f4znAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFkOGVTOUcsTjVnM0NuO20KMDAyZnNpZ25hdHVyZSCmQfee-QS8pf6lmi1VGrWRyBcx5NtEr0ECdbe0zvNYPwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEk4eWp5ZW5KdjBBeTZaTC4KMDAyZnNpZ25hdHVyZSARvP82WnWy2oEgCxT0FGSyb0GA8yI9jJ-PJPwNJRu88Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdESDVrOXcxUG5UUkEmUlgKMDAyZnNpZ25hdHVyZSCtRyT2q5ri1uQptV5FKb2JXMkLUmMmisp776cdE3pOpgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVGRm8tTnExanBoal9hNGMKMDAyZnNpZ25hdHVyZSBt_P1j4F45Nb1VEhnavcrianIHjiBe3UgvPlDhRhsIlgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVHRHBfIyMtOHVRbHlkUnkKMDAyZnNpZ25hdHVyZSCkmxNdFIpSyUkrr62UDvoAZzqj99pxWWBH05bH11NjZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdrek1BTm8rcjduTjg6Z3IKMDAyZnNpZ25hdHVyZSDFud55ryYjH0xG0eRyrjIkTnDabMlI8OnjxQ2OGOJxtQo d^ h  r $ |(<RPd Ie'Q ]$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcm.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800mm*@anon-20191002_181700-555:localhost:8800 He'Q ]$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsm.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800m Xm @anon-20191002_181700-555:localhost:8800 Ge'Q ]$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAm.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800m (m @anon-20191002_181700-554:localhost:8800,Fe?Q ]$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwm.room.history_visibility!OtBUhGeUSiDMWRKIOT:localhost:8800mm@anon-20191002_181700-554:localhost:8800$Ee/Q ]$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQm.room.join_rules!OtBUhGeUSiDMWRKIOT:localhost:8800mPm@anon-20191002_181700-554:localhost:8800&De3Q ]$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgkm.room.power_levels!OtBUhGeUSiDMWRKIOT:localhost:8800m`m{@anon-20191002_181700-554:localhost:8800 Ce'Q ]$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuom.room.member!OtBUhGeUSiDMWRKIOT:localhost:8800mm@anon-20191002_181700-554:localhost:8800B e'Q  ]$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMm.room.create!OtBUhGeUSiDMWRKIOT:localhost:8800mEm@anon-20191002_181700-554:localhost:8800 Ae'Q ] $KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwm.room.member!zHBgbzUZHshNGZvIBS:localhost:8800 mYm&@anon-20191002_181700-553:localhost:8829 @e'Q ] $OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0m.room.member!zHBgbzUZHshNGZvIBS:localhost:8800 mZm@anon-20191002_181700-552:localhost:8800 ?e'Q ]$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38Em.room.member!zHBgbzUZHshNGZvIBS:localhost:8800mm @anon-20191002_181700-553:localhost:8829 >e'Q ]$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmIm.room.member!zHBgbzUZHshNGZvIBS:localhost:8800m޷m{@anon-20191002_181700-553:localhost:8829 =e'Q ]$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8m.room.member!zHBgbzUZHshNGZvIBS:localhost:8800mm܀@anon-20191002_181700-552:localhost:8800,<e?Q ]$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0m.room.history_visibility!zHBgbzUZHshNGZvIBS:localhost:8800mnm3@anon-20191002_181700-552:localhost:8800$;e/Q ]$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQm.room.join_rules!zHBgbzUZHshNGZvIBS:localhost:8800mm@anon-20191002_181700-552:localhost:8800&:e3Q ]$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLom.room.power_levels!zHBgbzUZHshNGZvIBS:localhost:8800mmO@anon-20191002_181700-552:localhost:8800 9e'Q ]$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcm.room.member!zHBgbzUZHshNGZvIBS:localhost:8800mmS@anon-20191002_181700-552:localhost:88008 e'Q  ]$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuom.room.create!zHBgbzUZHshNGZvIBS:localhost:8800mmK@anon-20191002_181700-552:localhost:8800 7e'Q ]$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1Am.room.member!cidyuyekVzJHHvyomb:localhost:8800m\m@anon-20191002_181700-551:localhost:8800,6e?Q ]$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTgm.room.history_visibility!cidyuyekVzJHHvyomb:localhost:8800m۾ml@anon-20191002_181700-550:localhost:8800$5e/Q ]$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciUm.room.join_rules!cidyuyekVzJHHvyomb:localhost:8800mۻmۼ@anon-20191002_181700-550:localhost:8800&4e3Q ]$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_Im.room.power_levels!cidyuyekVzJHHvyomb:localhost:8800m۷mۺ#@anon-20191002_181700-550:localhost:8800 3e'Q ]$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswm.room.member!cidyuyekVzJHHvyomb:localhost:8800m۵m۶T@anon-20191002_181700-550:localhost:88002 e'Q  ]$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNEm.room.create!cidyuyekVzJHHvyomb:localhost:8800m۳m۳j@anon-20191002_181700-550:localhost:8800 Bgc.Z% Q   J  v A o :  f 1b-Y$R~IwB n9g2^)4]@anon-20191002_184]@anon-20191002_181700-631:localhost:8800mMG4]@anon-20191002_181700-630:localhost:8800mF2[@anon-20191002_181700-62:localhost:8800ms54]@anon-20191002_181700-628:localhost:8800mE4]@anon-20191002_181700-627:localhost:8800mɓD4]@anon-20191002_181700-626:localhost:8800mC4]@anon-20191002_181700-625:localhost:8800mࠢB4]@anon-20191002_181700-624:localhost:8800mA4]@anon-20191002_181700-623:localhost:8800mx@4]@anon-20191002_181700-622:localhost:8800mb?4]@anon-20191002_181700-620:localhost:8800mO>2[@anon-20191002_181700-61:localhost:8800m^44]@anon-20191002_181700-619:localhost:8800m5=4]@anon-20191002_181700-618:localhost:8800m4<4]@anon-20191002_181700-617:localhost:8800m*;4]@anon-20191002_181700-616:localhost:8800m:4]@anon-20191002_181700-615:localhost:8800m94]@anon-20191002_181700-614:localhost:8800mG74]@anon-20191002_181700-613:localhost:8800m84]@anon-20191002_181700-612:localhost:8800m54]@anon-20191002_181700-611:localhost:8800m64]@anon-20191002_181700-610:localhost:8800mߨ42[@anon-20191002_181700-60:localhost:8800m\34]@anon-20191002_181700-609:localhost:8800mߨ!34]@anon-20191002_181700-608:localhost:8800m߀24]@anon-20191002_181700-605:localhost:8800mFp04]@anon-20191002_181700-604:localhost:8800mf14]@anon-20191002_181700-603:localhost:8800m.4]@anon-20191002_181700-602:localhost:8800m?/4]@anon-20191002_181700-601:localhost:8800m,4]@anon-20191002_181700-600:localhost:8800m Y-1Y@anon-20191002_181700-5:localhost:8800mua2[@anon-20191002_181700-59:localhost:8800mZ24]@anon-20191002_181700-598:localhost:8800m)*4]@anon-20191002_181700-597:localhost:8800m)4]@anon-20191002_181700-596:localhost:8800m2(4]@anon-20191002_181700-596:localhost:8800m'4]@anon-20191002_181700-595:localhost:8800m&4]@anon-20191002_181700-593:localhost:8800mȔ%4]@anon-20191002_181700-591:localhost:8800m$4]@anon-20191002_181700-590:localhost:8800m,#2[@anon-20191002_181700-58:localhost:8800mV14]@anon-20191002_181700-589:localhost:8800m޽c"4]@anon-20191002_181700-588:localhost:8800m޹!4]@anon-20191002_181700-587:localhost:8800m޷ 4]@anon-20191002_181700-586:localhost:8800m޵4]@anon-20191002_181700-585:localhost:8800m޲4]@anon-20191002_181700-584:localhost:8800mޘ4]@anon-20191002_181700-583:localhost:8800mހb4]@anon-20191002_181700-582:localhost:8800ml4]@anon-20191002_181700-581:localhost:8800mi[4]@anon-20191002_181700-580:localhost:8800mU2[@anon-20191002_181700-57:localhost:8800mUB04]@anon-20191002_181700-579:localhost:8800m?4]@anon-20191002_181700-578:localhost:8800m+u4]@anon-20191002_181700-577:localhost:8800m4]@anon-20191002_181700-576:localhost:8800mC4]@anon-20191002_181700-575:localhost:8800mr4]@anon-20191002_181700-574:localhost:8800m4]@anon-20191002_181700-573:localhost:8800mݓg4]@anon-20191002_181700-572:localhost:8800mo4]@anon-20191002_181700-571:localhost:8800m[4]@anon-20191002_181700-570:localhost:8800m/52[@anon-20191002_181700-56:localhost:8800mQo/4]@anon-20191002_181700-569:localhost:8800my4]@anon-20191002_181700-568:localhost:8800m 8 %8i-eQa_$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2872}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-552:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043055354, "hashes": {"sha256": "krKuo/VZIHFS5sjH5pPdDxDYAXpNSz5fraEh5BV16O4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "907SQe4sMZJswpQizAGThHuAFFxSaOE6F1Ocjjb/8oTyP4LstX8oKf9+lNz3wBNk0oJSp0RH1i/DxwH6CQ2wDA"}}, "unsigned": {"age_ts": 1570043055354}}V,eQa9$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800{"token_id": 536, "stream_ordering": 2871}{"auth_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I", "$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE", "$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU"], "prev_events": ["$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg"], "type": "m.room.member", "room_id": "!cidyuyekVzJHHvyomb:localhost:8800", "sender": "@anon-20191002_181700-551:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-551", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-551:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043052892, "hashes": {"sha256": "Lef7m5ZLih8YtiULiRdeXTDouFMuufs8+D3CzW4Wiq4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fgAy5gsJ9jj4r3a6X50q/2yiGP1vHtCC5Mn5Ccn9EZupCBfJJy86XS/BSwagU0RMXZdAJtnEzYJpDfNPeJEeAw"}}, "unsigned": {"age_ts": 1570043052892}}+eQa$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg!cidyuyekVzJHHvyomb:localhost:8800{"token_id": 535, "stream_ordering": 2870}{"auth_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I", "$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE", "$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw"], "prev_events": ["$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU"], "type": "m.room.history_visibility", "room_id": "!cidyuyekVzJHHvyomb:localhost:8800", "sender": "@anon-20191002_181700-550:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043051666, "hashes": {"sha256": "wSTPrYDEeX8ZA6UjH/GseEI1i1svANJLeY0JnC6xSNc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uNTNaSmSOkmoAmwJPK0hXMOWn+JELN+qwi3AiN1sNbHZcJ0H8n/D6Dd/WhI1utnWTXRxOg8JpOpyHeLNHlyTDg"}}, "unsigned": {"age_ts": 1570043051666}}t*eQau$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU!cidyuyekVzJHHvyomb:localhost:8800{"token_id": 535, "stream_ordering": 2869}{"auth_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I", "$vYSKIfQ9pyIfvwpQLbsyr5PjBelISmHLuZmjlcF2iNE", "$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEsw"], "prev_events": ["$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I"], "type": "m.room.join_rules", "room_id": "!cidyuyekVzJHHvyomb:localhost:8800", "sender": "@anon-20191002_181700-550:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043050932, "hashes": {"sha256": "BKSVCqo1fWNghZEM9DJxrJBAtiPQqcXxUrEOn9mLhwQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wvawDZcCf3PwdI53gSiL7t3ov6XwN7VYtwluV0AU3vpxCzzXnGGx00V/YFRPaoCPjV2U+orAfPAPCiBnusDyAg"}}, "unsigned": {"age_ts": 1570043050932}} 8l D `8]c!E@anon-20191002_181700-563:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAoRLVZAZQHOM127.0.0.1Perl + Net::Async::HTTP/0.44mܘS]c!E@anon-20191002_181700-562:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAoRUCUWRMARX127.0.0.1Perl + Net::Async::HTTP/0.44m܃]c!E@anon-20191002_181700-561:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQoYQDTZKECLG127.0.0.1Perl + Net::Async::HTTP/0.44mr݃]c!E@anon-20191002_181700-560:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5JkowoMSCBPCIKEE127.0.0.1Perl + Net::Async::HTTP/0.44md]c!E@anon-20191002_181700-558:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4AoZVKDTDNPLS127.0.0.1Perl + Net::Async::HTTP/0.44m9]c!E@anon-20191002_181700-557:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwoKTBNHNNWDA127.0.0.1Perl + Net::Async::HTTP/0.44m+]c!E@anon-20191002_181700-556:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQoTMQBHREBEO127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-555:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgoMAWHFJMVIZ127.0.0.1Perl + Net::Async::HTTP/0.44m ܃]c!E@anon-20191002_181700-554:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDIua0J2M34uVXhsdENRZVAKMDAyZnNpZ25hdHVyZSAT0LZKWboe0sqSWFtVFGEbRdbpJQUJ-_nh8KGUxIMmXgoFFUSIPBHXS127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-552:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5hT29sVHhUMFE7QU9teEsKMDAyZnNpZ25hdHVyZSAlcTe5uz5_zFQK8M5lUlHTxn1GeRNOU6CzCRexPfr07AoJYCWUAAHBU127.0.0.1Perl + Net::Async::HTTP/0.44mB  1eQa$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2876}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ"], "type": "m.room.history_visibility", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043058030, "hashes": {"sha256": "xqxFzaS412w3xdElTED86lvyvYu0OMGq31FDWDkdbMg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bPr157sRtdyDCU/UBKvGo/ogfZbeFzdbToIigZ5zw0711pKprkOAzQX3ArwK67B2asJFn2MT6BQfOPjO7Q/hCw"}}, "unsigned": {"age_ts": 1570043058030}}t0eQau$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2875}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo"], "type": "m.room.join_rules", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043057413, "hashes": {"sha256": "SQMRprALOKgxLf3ZNTtqP4XaNfre4jzlEhTxPB5ovBM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zjHyDRQQTd0TLFScuOW0tpd6aKpDSDktv0vHDAz/4zJ/hktqAiskf8JGGp/xIb0pkHHL0/PvmAc/k6IctRN+DA"}}, "unsigned": {"age_ts": 1570043057413}}k/eQac$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2874}{"auth_events": ["$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "type": "m.room.power_levels", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"users": {"@anon-20191002_181700-552:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043056667, "hashes": {"sha256": "MCapNATOKQBxePllE3KC6akWCFtTNzd9phLNpqUIuP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DuVnTwtZdkrnVBCViSkK/Ix1bqzEq2dkjf477u4dhPIUHPNWqGnWAuRgThbQaB6tQsMc12aLZS1iO+w5hwEiBA"}}, "unsigned": {"age_ts": 1570043056667}}v.eQay$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2873}{"auth_events": ["$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo"], "prev_events": ["$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo"], "type": "m.room.member", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-552", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-552:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043056101, "hashes": {"sha256": "nD3Ishv0a5PmFeGI1PzvXrh17wDVKd66WHqvpDR0Ia0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ezeix35IIVPyM6CSVePTFBqMf3e1/pPU7Feyn1Pww4eMokdPoCB6/Rw7A8H4DxA/zAtFjw0QvQihtqYaD/zyBg"}}, "unsigned": {"age_ts": 1570043056101}} a} { y w u sqomkigeca~}eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~|eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~{eeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800~zeeQ$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~yeeQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~xeeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~weeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~veeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~ueeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~teeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~seeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~reeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~qeeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800~peeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~oeeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~neeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~meeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~leeQ$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~keeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~jeeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ!zHBgbzUZHshNGZvIBS:localhost:8800~ieeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~heeQ$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~geeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~feeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~eeeQ$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~deeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~ceeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~beeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800~aeeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc!zHBgbzUZHshNGZvIBS:localhost:8800~`eeQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800~_eeQ$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo!zHBgbzUZHshNGZvIBS:localhost:8800 D:V%j8p | P   | JP  Z V $(  \ + cJ1j 8 DpV$1e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgi1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUh1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxwS1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkED1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lge1e$OzhzVTwNGoEoQslc_5D-1J6XvPOxdX_MSf353TTSCG81e$Oyt_VMw35bTIm8nADkseqgu4dZxSif72NAtfshXfWRY1e$OxfezQgkIzHiq7SgrVecLSDr7_ryZu-GNRBW7v5s6U01e$OwzcVLmWqo5CqZ2i9qkXdg4TpEsysNNZmnSWNJrvjqYf1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeE#1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-Y!1e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 41e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw ,1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY 1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM (1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA 0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkH1e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv41e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk<1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OUC1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvY{1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxAj1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo01e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20N1e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM)1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PUOklDVmU_fyo-BjJht33gSSf2sCEArjCCiw-bfYTO41e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo51e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndcq1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HI1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg%1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwcr D21e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg ,1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU1e$PMTaBZV6BVvN4sHLzsOYC7gWc94MLJY20jOlm89dzbA1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM  1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ m -RM H C > 9 4/*|%w rmhc TrQe r!tPkCGJBKmqUXJoRrnY:localhost:8800$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROATqQe q!tPkCGJBKmqUXJoRrnY:localhost:8800$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgTpQe p!tPkCGJBKmqUXJoRrnY:localhost:8800$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUToQe o!tPkCGJBKmqUXJoRrnY:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeATnQe n!tPkCGJBKmqUXJoRrnY:localhost:8800$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6ATmQe m!QnmLrBAxeItdHsaxWf:localhost:8800$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgTlQe l!QnmLrBAxeItdHsaxWf:localhost:8800$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogTkQe k!QnmLrBAxeItdHsaxWf:localhost:8800$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8TjQe j!QnmLrBAxeItdHsaxWf:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvITiQe i!QnmLrBAxeItdHsaxWf:localhost:8800$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0ThQe h!hFwigdYZkwYNSwelRH:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQTgQe g!hFwigdYZkwYNSwelRH:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugTfQe f!hFwigdYZkwYNSwelRH:localhost:8800$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0TeQe e!hFwigdYZkwYNSwelRH:localhost:8800$qKl_Mu5pdz_hEg8qa-D95jaZGKnqvUAYTY-mnchHjtETdQe d!hFwigdYZkwYNSwelRH:localhost:8800$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0TcQe c!hFwigdYZkwYNSwelRH:localhost:8800$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkTbQe b!hFwigdYZkwYNSwelRH:localhost:8800$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sTaQe a!hFwigdYZkwYNSwelRH:localhost:8800$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuET`Qe `!hFwigdYZkwYNSwelRH:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4T_Qe _!hFwigdYZkwYNSwelRH:localhost:8800$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYT^Qe ^!paDmNxsOZIKyApbxXs:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9ET]Qe ]!paDmNxsOZIKyApbxXs:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4T\Qe \!paDmNxsOZIKyApbxXs:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUT[Qe [!paDmNxsOZIKyApbxXs:localhost:8800$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014TZQe Z!paDmNxsOZIKyApbxXs:localhost:8800$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gTYQe Y!paDmNxsOZIKyApbxXs:localhost:8800$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYTXQe X!paDmNxsOZIKyApbxXs:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMTWQe W!paDmNxsOZIKyApbxXs:localhost:8800$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4TVQe V!OtBUhGeUSiDMWRKIOT:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcTUQe U!OtBUhGeUSiDMWRKIOT:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7lsTTQe T!OtBUhGeUSiDMWRKIOT:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xATSQe S!OtBUhGeUSiDMWRKIOT:localhost:8800$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwTRQe R!OtBUhGeUSiDMWRKIOT:localhost:8800$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQTQQe Q!OtBUhGeUSiDMWRKIOT:localhost:8800$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgkTPQe P!OtBUhGeUSiDMWRKIOT:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuoTOQe O!OtBUhGeUSiDMWRKIOT:localhost:8800$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotMTNQe N!zHBgbzUZHshNGZvIBS:localhost:8800$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwTMQe M!zHBgbzUZHshNGZvIBS:localhost:8800$njqjJEw7SsQtXLYP-9nDQHdUjuEvQSs0zoxPpDAmzmITLQe L!zHBgbzUZHshNGZvIBS:localhost:8800$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0TKQe K!zHBgbzUZHshNGZvIBS:localhost:8800$H8hysc4WuEJUITusZTWwChJB35FHkBNVZCb6gLUHxaITJQe J!zHBgbzUZHshNGZvIBS:localhost:8800$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38ETIQe I!zHBgbzUZHshNGZvIBS:localhost:8800$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmITHQe H!zHBgbzUZHshNGZvIBS:localhost:8800$mBx0HjMxVGkx2tmY3X6XfkJHIrGzDeZdrEmWAmzbG3gTGQe G!zHBgbzUZHshNGZvIBS:localhost:8800$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8TFQe F!zHBgbzUZHshNGZvIBS:localhost:8800$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0  0}4eQc$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:8800{"outlier": false, "stream_ordering": 2879}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "hCBbUXo/9jepg2yyYCVPWHdFFHUSVlZyDWSx2TViKyQ"}, "origin": "localhost:8829", "origin_server_ts": 1570043061502, "prev_events": ["$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI"], "prev_state": [], "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-553:localhost:8829", "state_key": "@anon-20191002_181700-553:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "fXsi0RHuho/2FXgDJKwFlENzl8mUlmzOYdWJWGBz1Do2aVSXZ62Q4KWgbfBqZY9Jq88yVvnaXXrQdIgXfmasCg"}}, "unsigned": {"age_ts": 1570043061502, "prev_content": {"avatar_url": null, "displayname": "anon-20191002_181700-553", "membership": "join"}, "prev_sender": "@anon-20191002_181700-553:localhost:8829", "replaces_state": "$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI"}}33eQ1!$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2878}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-553", "membership": "join"}, "depth": 7, "hashes": {"sha256": "5BVx5Rp9leUG4I34xY90InwVO9S+RLVL9gxTMsK1+K4"}, "origin": "localhost:8829", "origin_server_ts": 1570043059895, "prev_events": ["$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8"], "prev_state": [], "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-553:localhost:8829", "state_key": "@anon-20191002_181700-553:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y4gxvnincch3t9awQow5Ijk2iiu3vAMPOj9zGmDas5urtCAiGe8Obz8gV/P4WircX65qyi6AVO2xq2NaewDfBg"}, "localhost:8829": {"ed25519:a_UxIG": "P7nOLYjeFbv4edgU6jmQcZSinmzFonT2PG2thjoHutMqFDMEIIcolxAmKxcW2gjASw30Qsp8p5csJ/3Rw7diDg"}}, "unsigned": {"age": 93, "replaces_state": "$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8"}}2eQa7$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2877}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0"], "type": "m.room.member", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-553", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-553:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043059203, "hashes": {"sha256": "UtpwDP7iMyhG9Er6hOdeiVFjzEYIEhxFgYpBzykVrcQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8pM6+tPS2BI4Zf4Y70avUj8/3F6JDhddauXqkK/SzTP6zxbGxVccGhP/97SMtNOeoaiyTGOZqYbDFUi33rVPDA"}, "localhost:8829": {"ed25519:a_UxIG": "2VbiDNdQF4wpx8Y+ep8efqBtPUlVP77UpUqzFXxZsHdHkTmr1e4Wyxf0+0BTW7HFOIJk+jvKFdK6DnJAaQh5AA"}}, "unsigned": {"age_ts": 1570043059203, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-552:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-552", "avatar_url": null}, "sender": "@anon-20191002_181700-552:localhost:8800"}]}} JE %Wp P+ P > V ] $ \ * b81J vj8p> vD } D_MYhMV5gWbVQCD7dIG1e$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1e$cw_FYbCifP1oBnHKaS5tVTXHHbAXbGEbVlgqJQRKjyQ1e$cra3fbnHHAeIDdPyJkuWbD4ZCluqZPxxOEhS3gHiTnY1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE-1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak1e$cVj7iKDA7kthg-rcHN5VDCBshO4hUAdjXELcbLnUQ2ME1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E 71e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF80e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms?1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 1e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIB1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$d-L_HX4ocM10z4iQfFy6h9zN2fph3n8VuanuNWkjVK8 1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc 1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk40e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4N1e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE=1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEK1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngX1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648b1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI $1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLwz1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA 1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYC0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA~1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM.1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qf1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI1e$d-iP2pDsRB1E-UebbfW0MFmsIUdrvvJwmXeHxlw7HX4:1e$cxe-L7e_BLu90wmDoZkwsjrKr0DXNoxOdQ171EUpJXY*1e$cq4ZsJwS5hzm89CGTrQsbxeqj-lIoD0ol5lQHXvTmdI1e$coHg_z5J079-IWMp6UJyCD5MxMFXfhTJW8j9D3h7-8M1e$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4p1e$cjIvdTbiO9lszb9F8Wrz6ihTaLihcTwexPrxdFTWabw 1e$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi81e$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc1e$c_NQujmvV-MNQue3cjxMIgiNXWmWulAfyHTFT-cV_a401e$cZNKKFO43LwfMyGtlAlH23pTES66x3vdIsJC8FVVBRE1e$cYjfSS-0UZ61d5TdlzRKctiQuHSi8BiDYIlStIt2IdI1e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8g 1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c\21e$cs80nI72qscOoUdGNaHavlcmrGp8owtc4BKwalS5+uo 1e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdos1e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx9051e$cYWuD4bn4cegNXEzBszjs7bEnryGAL4wHuP1Dft2Yhg '1e$chQw6jJddhdLaY4SD_ec8jRKcoZSmM0itE0j_etTQuEjd1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ +21e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 2  i7eQa_$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2882}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-554:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043065669, "hashes": {"sha256": "eW4dhWfVM90uLX4yxnct0aiTInco8eF8+oV9idsn5+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TTZfwgMVx+2/wJYltOxz+t75bbvdOJBtdmiPNu7tPoMWKwMqJoN52GBdWkHUuu2BmkgCgihj7WN1+s6vDpd+AQ"}}, "unsigned": {"age_ts": 1570043065669}}46eQ1#$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2881}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-553", "membership": "join"}, "depth": 10, "hashes": {"sha256": "PYqrhC/8+9DpGikW5S4hyakoCV/l9AfvmzCEv5pp7aU"}, "origin": "localhost:8829", "origin_server_ts": 1570043063385, "prev_events": ["$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0"], "prev_state": [], "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-553:localhost:8829", "state_key": "@anon-20191002_181700-553:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LKol6K7t5WFgCkzWHIy9jUN9SH/s/EwaR7gsYjf1jyw/JA1eq9gbthqTt3p/d3zwacPdyICidPlxj+xksU2tCg"}, "localhost:8829": {"ed25519:a_UxIG": "xq9O/jvzNSslVtgA+3PtQ7dLBPzoVU5v3YUCBGTT2wewkv15lgy709r8//eu4itDh7rj5YfxTbYNWAMvmi69Bw"}}, "unsigned": {"age": 94, "replaces_state": "$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0"}}W5eQa;$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0!zHBgbzUZHshNGZvIBS:localhost:8800{"token_id": 537, "stream_ordering": 2880}{"auth_events": ["$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo", "$Wq2zObRMlGlKyyQIxYlM0Zne1PZjSCIKYCpQ1Ikecuo", "$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ", "$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc"], "prev_events": ["$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E"], "type": "m.room.member", "room_id": "!zHBgbzUZHshNGZvIBS:localhost:8800", "sender": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-553", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-553:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043062362, "hashes": {"sha256": "vSPTmfDzAne+Tamcx+9rmu8mpEHG0PWHt1HiSKbxW+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5RavILUq062PrHK1YU4j049mKnklPMVlf50r8opIoMhwcPdXGYgHj2tvSsVJT2Q+POAW1UlHwuesGoGl+zVjAw"}, "localhost:8829": {"ed25519:a_UxIG": "dd2JoQcxawSKXXz7IdjcK4cdwuQ7msG97WvVtfM9CGCv6FmDSpo17FOYPQ2x4om3YY8yKOvBCz8hK+0IqfPTBA"}}, "unsigned": {"age_ts": 1570043062362, "replaces_state": "$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E", "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-552:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-552:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-552", "avatar_url": null}, "sender": "@anon-20191002_181700-552:localhost:8800"}]}} g * T~=gg]!c%@anon-20191002_181700-566:localhost:8800QBBGHXSEKFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgog]!c$@anon-20191002_181700-565:localhost:8800MSICJQZBGXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAog]!c#@anon-20191002_181700-564:localhost:8800JAGAKQJOKZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8Qog]!c"@anon-20191002_181700-563:localhost:8800RLVZAZQHOMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo6Q29ean5kTE8sOzZJQ3kKMDAyZnNpZ25hdHVyZSCEqSbGeCfQCH0Or5gBFrN6WVIsF1WbvigBHJ1I1AhgcAog]!c!@anon-20191002_181700-562:localhost:8800RUCUWRMARXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEltbVpGZEF5alBVYWZlYW8KMDAyZnNpZ25hdHVyZSCpvWLc-ames4XBCYBJwBSyzbbivECkUWLVEnD5N0_thAog]!c @anon-20191002_181700-561:localhost:8800YQDTZKECLGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRmNGlZWStJWHFJTVhIQH4KMDAyZnNpZ25hdHVyZSB62IZkBu2X1WFX7f72Szg_Xpp26ueR0JcHd_qF0RBkKQog]!c@anon-20191002_181700-560:localhost:8800MSCBPCIKEEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhpTWIjU1Q1cks4LUUjVDkKMDAyZnNpZ25hdHVyZSA1gROveXqGE-M1eNXpHRI0_yKNyA7rgReF7PjnH5Jkowog]!c@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFZM0o4U3kwX0VhaUliRm4KMDAyZnNpZ25hdHVyZSAk9LHpXV5Quc63nwd4kHLiOtXPTPT_T9zhBRSP-T9B4Aog]!c@anon-20191002_181700-557:localhost:8800KTBNHNNWDAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJQR3diQkE1Zk9Ha3JIdCsKMDAyZnNpZ25hdHVyZSDVOPYYS12m87S9dae6QyYzEowS6wRCLFxLiMGDJndspwog]!c@anon-20191002_181700-556:localhost:8800TMQBHREBEOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBGVlV1clJzUWpGflFLKmMKMDAyZnNpZ25hdHVyZSAMKBlTh3wZDijqVdJdt_ta5ziaAOdaTfkPu368E4AwoQog]!c@anon-20191002_181700-555:localhost:8800MAWHFJMVIZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpTOXgyYVd2bFRpNXZ6TF8KMDAyZnNpZ25hdHVyZSBQk-muwCKS38sBzVKS09khlAFQ9TjB8TXXK6MIythDLgo  ;eQa$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2886}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ"], "type": "m.room.history_visibility", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043069365, "hashes": {"sha256": "NQPDLTtypKgQR7dggHA/BUlmySvOp5r/WjV7o0wT02w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zyTlk51RRGDxHYCmv5O1jubIAnAFmEMi8Cg/uayt3kavjOMwO5k7cL0JhkOnlakaOQxBxv0XIN2dngQ/0HWhAw"}}, "unsigned": {"age_ts": 1570043069365}}t:eQau$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2885}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk"], "type": "m.room.join_rules", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043068240, "hashes": {"sha256": "+3gyO07fAXckWWeAeRq/UTFupfjn2lyg6/iYoHPeF0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cr8Gmcd+eavtkDCjSgBjyb6T9N2bUKeJ2cYzh8fOvl9luvONfxh+oXTbK5cCBOoJVkcmu+w0b3LdWbEdihU9AA"}}, "unsigned": {"age_ts": 1570043068240}}k9eQac$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2884}{"auth_events": ["$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "type": "m.room.power_levels", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"users": {"@anon-20191002_181700-554:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043066976, "hashes": {"sha256": "hy48FJD/uZpHS4P0dnsp3B+RnTZKWbHYWnnBcbJFVBk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sod5bi3ivm9r/K6W7ARreQjKiGoj+Xqfv2MLFaAT1bCcw+aNyF3HNuuwwmNy+BeHdPTOYQ7ga5zhSe+P9rycDw"}}, "unsigned": {"age_ts": 1570043066976}}v8eQay$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2883}{"auth_events": ["$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM"], "prev_events": ["$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-554", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-554:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043066397, "hashes": {"sha256": "yOBF0aegQwjxtm3H1jn78dWoKy02Y/XZuLYfFmLE7HY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5zMf+dU7jnzBS5yZuNx47R5KAHfsPBFm6EWb8gbSSOZl+RBCpoNbYOrabY6kTk2y6YxCdzu1knfXMv5Oq/VpDw"}}, "unsigned": {"age_ts": 1570043066397}} d5|]{; '-V .iEL}c@ Z D K  J| h d6Q' !TkluVzxeeCbMtbFWWS:localhost:8800m.room.create 6Q' !TWETXUgfFZafDdbqLS:localhost:8800m.room.create<Q3 !SyIWYOmcGiASNkPCTB:localhost:8800m.room.power_levels^Q']!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-117:localhost:8800^Q']!SyIWYOmcGiASNkPCTB:localhost:8800m.room.member@anon-20191002_181700-116:localhost:8800:Q/ !SyIWYOmcGiASNkPCTB:localhost:8800m.room.join_rulesBQ? !SyIWYOmcGiASNkPCTB:localhost:8800m.room.history_visibility^Q']!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800 BQ? !TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibility :Q/ !TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rules <Q3 !TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels ^Q']!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800 6Q' !TcCLuIBUrtFqghDgay:localhost:8800m.room.create BQ? !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibility :Q/ !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rules <Q3 !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels ^Q']!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800 6Q' !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create <<Q3 !TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels ^Q']!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800 6Q' !SyIWYOmcGiASNkPCTB:localhost:8800m.room.create?Q9 !SyIWYOmcGiASNkPCTB:localhost:8800m.room.canonical_aliasEQ))!SyIWYOmcGiASNkPCTB:localhost:8800m.room.aliaseslocalhost:8800<Q3 !SvKwEALYoNreUvqAlp:localhost:8800m.room.power_levels^Q']!SvKwEALYoNreUvqAlp:localhost:8800m.room.member@anon-20191002_181700-231:localhost:8800:Q/ !SvKwEALYoNreUvqAlp:localhost:8800m.room.join_rulesRQ'E!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455 BQ? !TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility :Q/ !TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules <Q3 !TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels ^Q']!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800 6Q' !TSFcaXDBqrCREHRHxv:localhost:8800m.room.create EQ))!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800 BQ? !TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibility :Q/ !TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rules <Q3 !TeraguiGoZoeOGFzlI:localhost:8800m.room.power_levels^Q']!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-337:localhost:8800^Q']!TeraguiGoZoeOGFzlI:localhost:8800m.room.member@anon-20191002_181700-336:localhost:8800:Q/ !TeraguiGoZoeOGFzlI:localhost:8800m.room.join_rulesBQ? !TeraguiGoZoeOGFzlI:localhost:8800m.room.history_visibility6Q' !TeraguiGoZoeOGFzlI:localhost:8800m.room.create<Q3 !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.power_levelsC^Q']!TcaopYfMoJFEcjYRzJ:localhost:8800m.room.member@anon-20191002_181700-203:localhost:8800B:Q/ !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.join_rulesDBQ? !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.history_visibilityE<Q3 !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.guest_accessF6Q' !TcaopYfMoJFEcjYRzJ:localhost:8800m.room.createA<Q3 !TWETXUgfFZafDdbqLS:localhost:8800m.room.power_levels]Q'[!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-91:localhost:8800]Q'[!TWETXUgfFZafDdbqLS:localhost:8800m.room.member@anon-20191002_181700-90:localhost:8800:Q/ !TWETXUgfFZafDdbqLS:localhost:8800m.room.join_rulesBQ? !TWETXUgfFZafDdbqLS:localhost:8800m.room.history_visibility<Q3 !TWETXUgfFZafDdbqLS:localhost:8800m.room.guest_access }$ w   :  ',P2BfHS}gQ/ e l!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rules$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogiQ3 e k!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 ~Q']e j!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIc}Q' e i!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 |Q']e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 {Q']e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQozQ? e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkgyQ/ e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rules$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sixQ3 e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuEcwQ' e h!hFwigdYZkwYNSwelRH:localhost:8800m.room.create$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY vQ']e g!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug uQ']e f!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 tQ']e e!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$qKl_Mu5pdz_hEg8qa-D95jaZGKnqvUAYTY-mnchHjtE sQ']e d!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0orQ? e c!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkgqQ/ e b!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rules$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sipQ3 e a!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE oQ']e `!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4cnQ' e _!hFwigdYZkwYNSwelRH:localhost:8800m.room.create$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY mQ']e ^!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E lQ']e ]!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4 kQ']e \!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUojQ? e [!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibility$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014giQ/ e Z!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rules$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gihQ3 e Y!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY gQ']e X!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMcfQ' e W!paDmNxsOZIKyApbxXs:localhost:8800m.room.create$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4 eQ']e V!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc dQ']e U!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls cQ']e T!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xAobQ? e S!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibility$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZwgaQ/ e R!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.join_rules$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ a} { y w u sqomkigeca~eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~ eeQ$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~ eeQ$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800~ eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800~ eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~ eeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM!OtBUhGeUSiDMWRKIOT:localhost:8800~eeQ$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk!OtBUhGeUSiDMWRKIOT:localhost:8800~~eeQ$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo!OtBUhGeUSiDMWRKIOT:localhost:8800 !Qv & )  LO5*X%Qa*eQ' $CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800m.room.createm)eQ? $QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibilitye(eQ/ $8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rulesg'eQ3 $RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels &eQ']$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800a%eQ' $JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.createm$eQ? $wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibilitye#eQ/ $SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rulesg"eQ3 $xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels !eQ']$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800a eQ' $Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create eQ']$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800 eQ']$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800 eQ']$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800 eQ']$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829 eQ']$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829meQ? $qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibilityeeQ/ $Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rulesgeQ3 $2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels eQ']$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800aeQ' $uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800m.room.create eQ']$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800 eQ']$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800 eQ']$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800meQ? $mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibilityeeQ/ $MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rulesgeQ3 $KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels eQ']$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800aeQ' $Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800m.room.create eQ']$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800 eQ']$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800 eQ']$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800m eQ? $UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.history_visibility m gKmZ>eQaA$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 539, "stream_ordering": 2889}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls"], "prev_events": ["$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-555:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-555:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043073213, "hashes": {"sha256": "W+Se6SAXsCQa7CUXRHfksUeZxkeGs8jQatTrvgnWaHo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zqP4eQILEI1F/CRvUdeJ59Ndh6UeAy+dEDTi1fLdUuZdOkjeHlnBIWy9EJTRIH0uup4z0PeZQjrIVk3BXaukDw"}}, "unsigned": {"age_ts": 1570043073213, "replaces_state": "$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls"}}=eQa=$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 539, "stream_ordering": 2888}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ"], "prev_events": ["$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-555:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-555", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-555:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043071576, "hashes": {"sha256": "66b3nCidd/2/E81vE7Db9lGsRgapg6vXecOqMpvwJSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qDfru0HIkf07NKwdwo9RdlxeviP2F+ljxsf2FhG9LZPDBH2aH74wCGD8tgePmJMqdUIxD9BuVYVWMzkwjcvWDw"}}, "unsigned": {"age_ts": 1570043071576, "replaces_state": "$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA"}}<eQa7$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA!OtBUhGeUSiDMWRKIOT:localhost:8800{"token_id": 538, "stream_ordering": 2887}{"auth_events": ["$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk", "$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM", "$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ", "$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuo"], "prev_events": ["$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw"], "type": "m.room.member", "room_id": "!OtBUhGeUSiDMWRKIOT:localhost:8800", "sender": "@anon-20191002_181700-554:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-555", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-555:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043070760, "hashes": {"sha256": "MhPZpNkAHiVpxHphwju+S8tcC7Fq2gT0ZTSlBzrEc6Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jbTgA78YI4ybp+J47DUQ/JfuKdFeC9lhDwidyBnJnNNtOmdjkJTUyCp8Xl8d/a+/Z5+favkABcXZ1HX1cbkbAw"}}, "unsigned": {"age_ts": 1570043070760, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-554:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-554:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-554", "avatar_url": null}, "sender": "@anon-20191002_181700-554:localhost:8800"}]}} MD! $ F > Gol8Ai'Md%Q' e q!peJMRJtXBvIiCttNmm:localhost:8800m.room.create$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwp$Q? e p!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibility$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAh#Q/ e o!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rules$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgj"Q3 e n!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU !Q']e m!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAd Q' e l!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.create$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6ApQ? e k!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibility$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNghQ/ e j!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rules$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogjQ3 e i!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8 Q']e h!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIdQ' e g!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ08Q']ee f!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug8Q']ee Y!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR48Q']ee X!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 Q']e W!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-559:localhost:8829$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0pQ? e V!hFwigdYZkwYNSwelRH:localhost:8800m.room.history_visibility$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7YkhQ/ e U!hFwigdYZkwYNSwelRH:localhost:8800m.room.join_rules$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sjQ3 e T!hFwigdYZkwYNSwelRH:localhost:8800m.room.power_levels$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE Q']e S!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4dQ' e R!hFwigdYZkwYNSwelRH:localhost:8800m.room.create$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY8Q']ee Q!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM8Q']ee P!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU Q']e O!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-557:localhost:8800$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUpQ? e N!paDmNxsOZIKyApbxXs:localhost:8800m.room.history_visibility$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014h Q/ e M!paDmNxsOZIKyApbxXs:localhost:8800m.room.join_rules$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gj Q3 e L!paDmNxsOZIKyApbxXs:localhost:8800m.room.power_levels$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY Q']e K!paDmNxsOZIKyApbxXs:localhost:8800m.room.member@anon-20191002_181700-556:localhost:8800$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMd Q' e J!paDmNxsOZIKyApbxXs:localhost:8800m.room.create$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo48 Q']ee I!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls8Q']ee H!OtBUhGeUSiDMWRKIOT:localhost:8800m.room.member@anon-20191002_181700-555:localhost:8800$Xf8itHdAgMpml21uGnpiXKokgajJqBvQnVDE0nhU7ls$-iaCLH6RkfcmIfp83UJKgf87bq_uhd3SSw7B73qo4xA f^ h  p * 4<P `fl e'Q  ]$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6Am.room.create!tPkCGJBKmqUXJoRrnY:localhost:8800m܄'m܄@anon-20191002_181700-562:localhost:8800,ke?Q ]$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgm.room.history_visibility!QnmLrBAxeItdHsaxWf:localhost:8800m}m@anon-20191002_181700-561:localhost:8800$je/Q ]$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogm.room.join_rules!QnmLrBAxeItdHsaxWf:localhost:8800mzm{Y@anon-20191002_181700-561:localhost:8800&ie3Q ]$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8m.room.power_levels!QnmLrBAxeItdHsaxWf:localhost:8800mxmy@anon-20191002_181700-561:localhost:8800 he'Q ]$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIm.room.member!QnmLrBAxeItdHsaxWf:localhost:8800mumv]@anon-20191002_181700-561:localhost:8800g e'Q  ]$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0m.room.create!QnmLrBAxeItdHsaxWf:localhost:8800mscms@anon-20191002_181700-561:localhost:8800 fe'Q ] $rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQm.room.member!hFwigdYZkwYNSwelRH:localhost:8800 m\dm]@anon-20191002_181700-558:localhost:8800 Ze'Q ] $a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8m.room.member!hFwigdYZkwYNSwelRH:localhost:8800 mYmZN@anon-20191002_181700-559:localhost:8829 Ye'Q ]$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugm.room.member!hFwigdYZkwYNSwelRH:localhost:8800mUWmU@anon-20191002_181700-558:localhost:8800 Xe'Q ]$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0m.room.member!hFwigdYZkwYNSwelRH:localhost:8800mOmPP@anon-20191002_181700-559:localhost:8829 We'Q ]$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0m.room.member!hFwigdYZkwYNSwelRH:localhost:8800mLmM@anon-20191002_181700-558:localhost:8800,Ve?Q ]$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Ykm.room.history_visibility!hFwigdYZkwYNSwelRH:localhost:8800mGmI@anon-20191002_181700-558:localhost:8800$Ue/Q ]$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4sm.room.join_rules!hFwigdYZkwYNSwelRH:localhost:8800mEmE@anon-20191002_181700-558:localhost:8800&Te3Q ]$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuEm.room.power_levels!hFwigdYZkwYNSwelRH:localhost:8800m?m@[@anon-20191002_181700-558:localhost:8800 Se'Q ]$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4m.room.member!hFwigdYZkwYNSwelRH:localhost:8800m<m=1@anon-20191002_181700-558:localhost:8800R e'Q  ]$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYm.room.create!hFwigdYZkwYNSwelRH:localhost:8800m9m:T@anon-20191002_181700-558:localhost:8800 Qe'Q ]$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9Em.room.member!paDmNxsOZIKyApbxXs:localhost:8800m4Tm4@anon-20191002_181700-556:localhost:8800 Pe'Q ]$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4m.room.member!paDmNxsOZIKyApbxXs:localhost:8800m,m-8@anon-20191002_181700-557:localhost:8800 Oe'Q ]$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RUm.room.member!paDmNxsOZIKyApbxXs:localhost:8800m*m*@anon-20191002_181700-556:localhost:8800,Ne?Q ]$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014m.room.history_visibility!paDmNxsOZIKyApbxXs:localhost:8800m%^m'G@anon-20191002_181700-556:localhost:8800$Me/Q ]$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5gm.room.join_rules!paDmNxsOZIKyApbxXs:localhost:8800m#1m#@anon-20191002_181700-556:localhost:8800&Le3Q ]$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUYm.room.power_levels!paDmNxsOZIKyApbxXs:localhost:8800mm!l@anon-20191002_181700-556:localhost:8800 Ke'Q ]$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMm.room.member!paDmNxsOZIKyApbxXs:localhost:8800mim@anon-20191002_181700-556:localhost:8800J e'Q  ]$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4m.room.create!paDmNxsOZIKyApbxXs:localhost:8800m:m@anon-20191002_181700-556:localhost:8800 T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                              }  ~ } } | | z { z z y y x x w w v u t t r s r~ r q} q p| p o{ o nz m ky l kx k jw j iv i hu h gt f es e cr d cq c bp b ao a `n ` _m ^ ]l ] [k \ [j [ Zi Z Yh Y Xg X Wf U Se T Sd S Rc R Qb Q Pa P O` O N_ N M^ L K] K J\ J I[ I HZ H GY F EX E DW D CV C BU A @T @ ?S ? >R > =Q < ;P ; :O : 9N 9 8M 7 6L 6 5K 5 4J 4 3I 2 1H 1 0G 0 /F / .E - +D , +C + *B * )A ) (@ ( '? % $> $ #= # "< " !; ! :  9  8  7  6  5  4  3  2  1  0  /  .  -  ,  +  * ) ( ' & %  $  #  "  !                                            ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6  ~5 ~ }4 | {3 { z2 z y1 y x0 w v/ v u. u t- t s, r q+ q p* p o) o n( m l' l k& k j% j i$ g f# f d" e d! d c  c b b a a ` ` _ ^ ] ] \ \ [ [ Z Z Y Y X X W 5 y I b ]{;'ET}Fi OK j + z ^Q']!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800 ^Q']!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-553:localhost:8829^Q']!zHBgbzUZHshNGZvIBS:localhost:8800m.room.member@anon-20191002_181700-552:localhost:8800:Q/ !zHBgbzUZHshNGZvIBS:localhost:8800m.room.join_rulesBQ? !zHBgbzUZHshNGZvIBS:localhost:8800m.room.history_visibility6Q' !zHBgbzUZHshNGZvIBS:localhost:8800m.room.create<Q3 !zFdNewlKnUiMBxnYrN:localhost:8800m.room.power_levels^Q']!zFdNewlKnUiMBxnYrN:localhost:8800m.room.member@anon-20191002_181700-170:localhost:8800:Q/ !zFdNewlKnUiMBxnYrN:localhost:8800m.room.join_rulesBQ? !zFdNewlKnUiMBxnYrN:localhost:8800m.room.history_visibility6Q' !zFdNewlKnUiMBxnYrN:localhost:8800m.room.create?Q9 !zFdNewlKnUiMBxnYrN:localhost:8800m.room.canonical_alias6Q' !zFdNewlKnUiMBxnYrN:localhost:8800m.room.avatarEQ))!zFdNewlKnUiMBxnYrN:localhost:8800m.room.aliaseslocalhost:8800<Q3 !yfizglmCXdcqCgDrTr:localhost:8800m.room.power_levelsN^Q']!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-451:localhost:8829S^Q']!yfizglmCXdcqCgDrTr:localhost:8800m.room.member@anon-20191002_181700-450:localhost:8800M:Q/ !yfizglmCXdcqCgDrTr:localhost:8800m.room.join_rulesPBQ? !yfizglmCXdcqCgDrTr:localhost:8800m.room.history_visibilityQ6Q' !yfizglmCXdcqCgDrTr:localhost:8800m.room.createL?Q9 !yfizglmCXdcqCgDrTr:localhost:8800m.room.canonical_aliasOEQ))!yfizglmCXdcqCgDrTr:localhost:8800m.room.aliaseslocalhost:8800R<Q3 !ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels^Q']!ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800:Q/ !ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rulesBQ? !ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibility6Q' !ybXveQoxPVhjpKHAkG:localhost:8800m.room.create6Q' !yWhIsLsgNVGcnELrDS:localhost:8800m.room.create <Q3 !yTQmLDAxZscWKLMSWh:localhost:8800m.room.power_levels4Q# !yTQmLDAxZscWKLMSWh:localhost:8800m.room.name^Q']!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-429:localhost:8800^Q']!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-428:localhost:8800^Q']!yTQmLDAxZscWKLMSWh:localhost:8800m.room.member@anon-20191002_181700-427:localhost:8800:Q/ !yTQmLDAxZscWKLMSWh:localhost:8800m.room.join_rules :Q/ !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules ^Q']!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800 <Q3 !yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_access BQ? !yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibility ;\Q'[!zNCItZNbpkZKuufRhC:localhost:8800m.room.member@anon-20191002_181700-16:localhost:88009Q/ !zNCItZNbpkZKuufRhC:localhost:8800m.room.join_rulesAQ? !zNCItZNbpkZKuufRhC:localhost:8800m.room.history_visibility4Q' !zNCItZNbpkZKuufRhC:localhost:8800m.room.create>Q9 !zNCItZNbpkZKuufRhC:localhost:8800m.room.canonical_aliasDQ))!zNCItZNbpkZKuufRhC:localhost:8800m.room.aliaseslocalhost:8800<Q3 !zNBpypJDRMlBdOcLlW:localhost:8800m.room.power_levelsI^Q']!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@anon-20191002_181700-204:localhost:8800HHQ'1!zNBpypJDRMlBdOcLlW:localhost:8800m.room.member@30:localhost:8800N:Q/ !zNBpypJDRMlBdOcLlW:localhost:8800m.room.join_rulesJBQ? !zNBpypJDRMlBdOcLlW:localhost:8800m.room.history_visibilityM<Q3 !zNBpypJDRMlBdOcLlW:localhost:8800m.room.guest_accessL6Q' !zNBpypJDRMlBdOcLlW:localhost:8800m.room.createG<Q3 !zHBgbzUZHshNGZvIBS:localhost:8800m.room.power_levels<Q3 !yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels  wEeQa=$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 541, "stream_ordering": 2896}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g"], "prev_events": ["$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-557:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-557", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-557:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043079901, "hashes": {"sha256": "0X3zikUrMFsMOI9rZF/JPNnbnSJxYBrIC4gZRYm/xiM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hsow0exZDJFFy7nk8XqFBTQdTf2Ttrta8vtDY3bNN4gMWsD0y0Htf9hSrhPaHKs2OBTBOYy39nPEK/Iaaos0AQ"}}, "unsigned": {"age_ts": 1570043079901, "replaces_state": "$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU"}}DeQa7$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2895}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-557", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-557:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043079192, "hashes": {"sha256": "iNbvLoRXMMrgsWSmKUZUeBQSPzjhv16lYDE7JlrAemw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KW7gAxALpnC92Hs4e5jMgqj922QrKAOt3GkqEbMUuYeJr1ixfCMHp1trIN2XgSuMd7stfYKGVR4EmKosoJdfBQ"}}, "unsigned": {"age_ts": 1570043079192, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-556:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-556", "avatar_url": null}, "sender": "@anon-20191002_181700-556:localhost:8800"}]}}CeQa$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2894}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g"], "type": "m.room.history_visibility", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043077982, "hashes": {"sha256": "mzGy5CJVgv7Myp4mIvOhvZYuchVeBNC46h+5b2zhsWo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VDSgDP3wmaWKI7DhohQnagfd/pHRf1aebyQDrjRve/UtMwRpcr45Jtcb23xsxREl9YMgoc45H3pyGVplsk1GBg"}}, "unsigned": {"age_ts": 1570043077982}} ~z v r n j fb^ZVRNJF^eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800]eeQ$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800\eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800[eeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800ZeeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800YeeQ$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800XeeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800WeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800VeeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800UeeQ$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800TeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800SeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800ReeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800QeeQ$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800PeeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800OeeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800NeeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800MeeQ$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800LeeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800KeeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800JeeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800IeeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800HeeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800GeeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800FeeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800EeeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800DeeQ$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800CeeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800BeeQ$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU!paDmNxsOZIKyApbxXs:localhost:8800AeeQ$JQvQg2spgwQDhPvP_qeB_D2KEJrQFr0oR_OP3RPX-RU$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014!paDmNxsOZIKyApbxXs:localhost:8800  d T- %  l L D| \t= 5 eeQ$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800 LeeQ$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw!uSBqTezaFcMnlowsEf:localhost:8800FeeQ$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v8!ITdmSQpjMnaPoHIbws:localhost:8800\eeQ$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I$Xs7IezC1a8rEziV80a8puK4QdI8J23lffpCREQ-gU5M!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo!pduebXnTyxQWVxEICp:localhost:8800 $eeQ$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY!ubmTdQFAhrhZkGULDx:localhost:8800 eeQ$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo!whuymJoLfUdkFdxoyE:localhost:8800ceeQ$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI$VXQBWdrDoo1H_mCs3SaQLmuIMIxXg7y4UAVSS4tfkms!EABRjdYuYumMhLSwIa:localhost:8800eeQ$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY!wnriPzXkIMmdTNoJKU:localhost:8800сeeQ$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw!HIZTeBCxvpMSpcqGVD:localhost:8800eeeQ$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE$stXqBbx_4E7FASDjznO-Bd2tMknrWO77mxgfPXYgD78!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ$XKwSwE1HgS0EOlleADTbDFoI3dC72zgG8yLXF2cUApc!odAvowLhHJcmkKlxFk:localhost:8800eeQ$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo$fy8dDHI15cgAPlXUYX8-7k7RygWkWaRMKu-52VRg_Wg!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZg$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE!coGyOAgYnlBZAqznax:localhost:8800 eeQ$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ!mogJVPxghalmKbblUq:localhost:8800 eeQ$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE!wBkUBAjOznOyxrLchl:localhost:8800 eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800 KeeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800 4eeQ$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg!XiwGxQKwjgutEClKUy:localhost:8829`eeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4!egCvzKpbEwmuvDoBTb:localhost:8800deeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800 5eeQ$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU!GGTWnzJfvPQBgQqDIE:localhost:8800eeQ$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI!wLitJYvgvNJzanSIvO:localhost:8800 Lp> v D  } K  R j X & 8 ^ ,e3k9q? xFMS!Y'_-1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs k1e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU1e$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo 1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$iayxr3DcybmPE4HHC2zB_PMl77cQCUkxx2z6EGZ5Fdo1e$iaPessy2NsO4EEpLiAIWHymZgnq2J_M1AEaNBvX4oPE1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE 1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo 1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw1e$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a941e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMw1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQI1e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQH1e$iI2XbSRB6-3EGGRb_kF_Y906qjya4_KyZ5UUE6rIEXQ1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY 0e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0Y1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 1e$iGnJ7CIq8Tri93ga9cXPCfh2ngd9Zo5S5vQidL8YUNo Y1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg0e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUc@1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i4tmiYg58HhGnKxn9fM0CBZukMD-povUJqFxXKm46m41e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olws1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs v1e$hyvD1wu9Ls4e4oh9mmoRphvYZWFaeUNEPw_D8pqXD3Y 1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk L1e$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQ)1e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC681e$hwxkPAFAsoZOsD9SyVMFLCH9eSiTmqslfkFj3M_Dc141e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7FvikC1e$huhx9sHWXkW2s6V13sWNbvugrXEvJBZP38LC_e_J_yg1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$hts41QY6lt-2HmnLBT8Y8bKzVapKfMqLgYWxKCTT4sk1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX41e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QX1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdc0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y1e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE1e$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQh1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw{1e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAs1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg x1e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8(1e$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM`1e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw 1e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9s1e$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI E1e$hGGWG8FuxLHpTffATm7vVI02ZCaVWYFhJblktrz-CZA1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw)1e$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-YgJ1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM u1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0*1e$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0gc1e$h40ZNcdpGTeew3CUMJSh8jGCsnMd3VL3c6YW_DEBm5E1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE ^1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74M1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74L1e$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74K1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs21e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew \1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s U1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc ,2 -RM H C > 9 4/*|%w rmhc T?Qe !SUDzkfFBgpuCANOxRS:localhost:8800$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQT>Qe !SUDzkfFBgpuCANOxRS:localhost:8800$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1MT=Qe !SUDzkfFBgpuCANOxRS:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0T<Qe !SUDzkfFBgpuCANOxRS:localhost:8800$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAT;Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9QT:Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkT9Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUT8Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8T7Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieoT6Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsT5Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAT4Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0T3Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdoT2Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0T1Qe !gXfXRDTXeVvOHQdaaQ:localhost:8800$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAT0Qe !hegUPDZCEEmBhsNJJR:localhost:8800$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34UT/Qe ~!hegUPDZCEEmBhsNJJR:localhost:8800$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gT.Qe }!hegUPDZCEEmBhsNJJR:localhost:8800$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-BkT-Qe |!hegUPDZCEEmBhsNJJR:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgcT,Qe {!hegUPDZCEEmBhsNJJR:localhost:8800$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAT+Qe z!aSKNKSGXPGoIbSrbEN:localhost:8800$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewT*Qe y!aSKNKSGXPGoIbSrbEN:localhost:8800$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcT)Qe x!aSKNKSGXPGoIbSrbEN:localhost:8800$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcT(Qe w!aSKNKSGXPGoIbSrbEN:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gT'Qe v!aSKNKSGXPGoIbSrbEN:localhost:8800$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwT&Qe u!peJMRJtXBvIiCttNmm:localhost:8800$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAT%Qe t!peJMRJtXBvIiCttNmm:localhost:8800$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8T$Qe s!peJMRJtXBvIiCttNmm:localhost:8800$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYT#Qe r!peJMRJtXBvIiCttNmm:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IT"Qe q!peJMRJtXBvIiCttNmm:localhost:8800$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8UwT!Qe p!tPkCGJBKmqUXJoRrnY:localhost:8800$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAT Qe o!tPkCGJBKmqUXJoRrnY:localhost:8800$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgTQe n!tPkCGJBKmqUXJoRrnY:localhost:8800$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUTQe m!tPkCGJBKmqUXJoRrnY:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeATQe l!tPkCGJBKmqUXJoRrnY:localhost:8800$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6ATQe k!QnmLrBAxeItdHsaxWf:localhost:8800$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgTQe j!QnmLrBAxeItdHsaxWf:localhost:8800$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogTQe i!QnmLrBAxeItdHsaxWf:localhost:8800$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8TQe h!QnmLrBAxeItdHsaxWf:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvITQe g!QnmLrBAxeItdHsaxWf:localhost:8800$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0TQe f!hFwigdYZkwYNSwelRH:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQTQe Y!hFwigdYZkwYNSwelRH:localhost:8800$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzugTQe X!hFwigdYZkwYNSwelRH:localhost:8800$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0TQe W!hFwigdYZkwYNSwelRH:localhost:8800$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0TQe V!hFwigdYZkwYNSwelRH:localhost:8800$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h 2  1  0  /  .  -  ,  +  *  )  (                                                    ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4  3 ~ 2 } 1 | 0 { / z . y - x , w + v * u ) t ( s ' r & q % p $ o # n " m ! l  k  j  i  h  g  f  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B  A  @  ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ q  p  o  n  m  l  k  j  i  h  g  g  g  g  `  _  ^  ]  \  [  Y  X  W  V  U  T  S  R  P  O  N  M  L  K  J  I  B  A  @  ?  >  =  ;  :  9  8  7  6  5  4  3  # " !                                                                                                   ~  LeQa7$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2903}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-559", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-559:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043088039, "hashes": {"sha256": "3O0uA6OO2Jgs7FCmwmMhaIzYp5rsb/jmHLFG3h8neeo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bd3i8pl/cMM9xWzOM04aiq/Dg55qrwi857rqzsignuorywMAeoIUu0IVzk7NioabimKvWl0M9pfjdfKAdzkwDg"}, "localhost:8829": {"ed25519:a_UxIG": "+0X0ffSn9LemyIZlUVul95pl8veO62MIJTAOuFG95sUQRHIh6OQCMiupZy0PJauYPejEb5Jgk+Fk1T1eKT9pDg"}}, "unsigned": {"age_ts": 1570043088039, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-558:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-558", "avatar_url": null}, "sender": "@anon-20191002_181700-558:localhost:8800"}]}}KeQa$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2902}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"], "type": "m.room.history_visibility", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043086734, "hashes": {"sha256": "aRyvdxe4b5+g+yfRg3JGup3Y7ONZu4aC384lOLe2p58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YRI0iZNQW4ykpRGwrPH5UZDqShugUkdvRqkMUUxhf6qx7Bhq8a5L6H7oSaufTMJmrcMe9rwAvqrvU8Y66UX1AA"}}, "unsigned": {"age_ts": 1570043086734}}tJeQau$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2901}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE"], "type": "m.room.join_rules", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043086097, "hashes": {"sha256": "8JVpkgAZ4ASaGYqVlyrgl1RKMtlTJBUDu6Bc33ReNJc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+bkH4/KPSNZX35/z2U1jljF3piy6J5Nz0eX9nhOE2ANI+/3pocUseh1nln+M5oCYmnGgsr+DZxGtiQTeYq0OAQ"}}, "unsigned": {"age_ts": 1570043086097}} L " 5LkIeQac$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2900}{"auth_events": ["$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "type": "m.room.power_levels", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"users": {"@anon-20191002_181700-558:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043084549, "hashes": {"sha256": "MaRRZt0fw4+Y8rv2kJQe8pvwBt2IKVEpfZ+gfj7anCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NrOCNfwoDAuWcqURIxfII2DDQHtaxb+x/t5JZ5martBGjEXDVSiEOvmMWb1E6HVw2IBv6odvrHEBqdfu77W5CA"}}, "unsigned": {"age_ts": 1570043084549}}vHeQay$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2899}{"auth_events": ["$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY"], "prev_events": ["$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-558", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-558:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043083995, "hashes": {"sha256": "W9hg1Sslxpa4VKOl55JQVYigg/deO3O3XcAnobD6Lcw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OndH1By9plMyzxvEIzW0+cWpDdBuL0h8MSpNP+Dtt+jlMD6t7esllDr9XAFoMXZE1jYG5ddrA9+y8mgW4PWBAQ"}}, "unsigned": {"age_ts": 1570043083995}}iGeQa_$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2898}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-558:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043083263, "hashes": {"sha256": "/xslzKStT5nsSZQUbf8qheX/6rIvli8imxBB1sF15L8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W9vM58H802rtLT5uO12A41Prygqy0+cwPkzIX7kMy9ELAxKe1CKyCiBs+3pGAMfaKqBHMFYJ3ng8seHNMmNZAA"}}, "unsigned": {"age_ts": 1570043083263}}ZFeQaA$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800{"token_id": 540, "stream_ordering": 2897}{"auth_events": ["$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY", "$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4", "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"], "prev_events": ["$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4"], "type": "m.room.member", "room_id": "!paDmNxsOZIKyApbxXs:localhost:8800", "sender": "@anon-20191002_181700-556:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-556:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043081812, "hashes": {"sha256": "LynIeTaUG1C9iSAUpIBuwz1QpFNvxNgzOqurPuocu+k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1UX6YyKNthwH1lozcMiZFlKvThSWFJYgHBgUloLqt5JNP6DxF3R3iAHnfM22Pk40FUdjWLwl1uy2I17lMa1cCw"}}, "unsigned": {"age_ts": 1570043081812, "replaces_state": "$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM"}} a} { y w u sqomkigeca~;eeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800~:eeQ$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~9eeQ$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~8eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~7eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~6eeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~5eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800~4eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~3eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~2eeQ$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~1eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~0eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~/eeQ$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~.eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~-eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~,eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~+eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~*eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s!hFwigdYZkwYNSwelRH:localhost:8800~)eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~(eeQ$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~'eeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~&eeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~%eeQ$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~$eeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~#eeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~"eeQ$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE!hFwigdYZkwYNSwelRH:localhost:8800~!eeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4!hFwigdYZkwYNSwelRH:localhost:8800~ eeQ$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~eeQ$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY!hFwigdYZkwYNSwelRH:localhost:8800~eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM!paDmNxsOZIKyApbxXs:localhost:8800~eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$Wjd1IP6ZOKzOT5Je-qR1l0xY2v-mAmUdIDMPqDLSJo4!paDmNxsOZIKyApbxXs:localhost:8800 ! 0 @ P ` p(8HXhxuO ]@anon-20191002_181700-591:localhost:8800$2b$04$zkKjtFzFgQO0F0bXLEPI3.fp3Issmi/HXUez2/zjuL8bOeAA0Wuqy]puN ]@anon-20191002_181700-590:localhost:8800$2b$04$GLOi8UWH4I6mBTFxY/gqLeTy8ySCoXsRBiWagfLgvGtKs9jFJBSku]puM ]@anon-20191002_181700-589:localhost:8800$2b$04$tyag8sBXmr0j.KpZSol7/ephu/nmHjzM0p1ysO9KOe5Dcl8GpYKRG]ouL ]@anon-20191002_181700-588:localhost:8800$2b$04$BIFi2rjwBxS6I/CsSeU6IOAM22bs1md9smZbgyqJsJEjdtrigOYJ2]nuK ]@anon-20191002_181700-587:localhost:8800$2b$04$Fhfpq4AUKQJZ/VDj7J46LOSEFmLgsKcX4rolYQOFiFbvylA8vblSC]nuJ ]@anon-20191002_181700-586:localhost:8800$2b$04$V0plhMzWPqDkXfmBhI1NCeYBwd0B6HyPJ8O3q2Dj0amup3emwT/TG]muI ]@anon-20191002_181700-585:localhost:8800$2b$04$utbSICM.FUusE/ZQX7Ip3.k4D/jpaR2DXorD1stpxS4CjRh0f1Vwm]luH ]@anon-20191002_181700-584:localhost:8800$2b$04$Tc/I7miTlBX6VHRtnW0xAetuKarg666I7X8rA.90iaKYZmYAtpFSK]fuG ]@anon-20191002_181700-583:localhost:8800$2b$04$jjZ0/m7X0hbCEcbrL30jHuFiAFaiJMjFgeFlo4dnfKlyiHs8pIufW]_uF ]@anon-20191002_181700-582:localhost:8800$2b$04$39hQwpBgH.mWAQd46U0lYuohHUzVjRAiUGRpNSZF95jmkwVSCDeNO]ZuE ]@anon-20191002_181700-581:localhost:8800$2b$04$P7CEv56lP6MvEki0vtd7e.9RMpOszrg8aZso6n7/9QS8eHa0kd2H.]ZuD ]@anon-20191002_181700-580:localhost:8800$2b$04$KKOZuyWj.vWg.5Cem1zT.uugpqcApfk7ReQRK4KvrSQcuXFDFoTzm]TuC ]@anon-20191002_181700-579:localhost:8800$2b$04$STvlpE6cXypX.G9ystBA1usxI1R8meI8TSAUl3JyN8KJmOCOT4hdO]OuB ]@anon-20191002_181700-578:localhost:8800$2b$04$.0AYQSY17C5Fxpp3H.z1L.nNXLacXUo5RdSDEDZMtf1UKOfsSwHE6]JuA ]@anon-20191002_181700-577:localhost:8800$2b$04$X4we.ncuy3mypLWRMWw/z.nYvey4QZHehVCBF2LLHvHrbqcObSlqC]Du@ ]@anon-20191002_181700-576:localhost:8800$2b$04$lGSemvEQ1Ch9GWjonBU8o.mZfeH4ufqtF9lOOleLvQiDY2EsLqAIm]?u? ]@anon-20191002_181700-575:localhost:8800$2b$04$FD2TW.MsCKrtbgXkxfu5leyiHB6mIqXMnLFgZbsqJnaF2YBdKr4Qm]>u> ]@anon-20191002_181700-574:localhost:8800$2b$04$dksI6wJkb9f8vtEHdlH9oezQRA5x5WgUtd4NBOqV6zn/4JgxRiMGG]2u= ]@anon-20191002_181700-573:localhost:8800$2b$04$1ftBgm3K.cl4OKBh.qT14u2cZb0F6UM9zAWS6P2Bazq4F3ZrZnB.i]#u< ]@anon-20191002_181700-572:localhost:8800$2b$04$Yafu43uVaOcLEQYsFCezGeb3HuklhI086wVkgih4fQvb2HPvnY4/i]u; ]@anon-20191002_181700-571:localhost:8800$2b$04$D7VubD2Ikp/Tw0FGkCqLSeApWxZqB2uL1jl5SnlUwHjEAwRnuBJN.]u: ]@anon-20191002_181700-570:localhost:8800$2b$04$nrrmLHkJz32MSRK7uxWH2u.hqwRRITmgOw4lE1zLSq/6KRF.iBM82] u9 ]@anon-20191002_181700-569:localhost:8800$2b$04$i/wl6urPmJl8AceWiO1fgu2o0OpisxhtQw5eBxaQOvLapdhmwhg6y]u8 ]@anon-20191002_181700-568:localhost:8800$2b$04$dx.fHpnbSFvaNJeKqywFsez2NeEv9tNqQlet/WAhpVOCBwWa5cquy]u7 ]@anon-20191002_181700-567:localhost:8800$2b$04$A7vrScEs/.jLkx9jC/f62.w07NryZz3bCYqkIE1.z7ne7o9dMSgia]u6 ]@anon-20191002_181700-566:localhost:8800$2b$04$YvqFtZYmOjsCaKKvLtM9ROABelRVAnrAWPysBxBKfHBETsexWPRb.]u5 ]@anon-20191002_181700-565:localhost:8800$2b$04$1jbCiVd2ZiJDpGFcoeU1kO7O.o2SVzwzdBavdt0OEdoi7H0un5Kre]u4 ]@anon-20191002_181700-564:localhost:8800$2b$04$jvEV/z511Vq0lgsQtZSwn.vFgUFEJ0Oa39A62vkbbOKsoFQ5JqQ4e]u3 ]@anon-20191002_181700-563:localhost:8800$2b$04$NN2uT0bB5kLccccH34v4Nej1G7XQKoFhPCHbc6fiohJoB.3bQq4km]u2 ]@anon-20191002_181700-562:localhost:8800$2b$04$cst51e.r7JbVq4zMF.8lJeZjlkwlgyyfPA80O0h4I301IxwDpuw/K]u1 ]@anon-20191002_181700-561:localhost:8800$2b$04$8sA3cixcRng5iPU.Zk5w3OCcAa3.Mn2e2gXKroJcCc/dRJIko0DeC]u0 ]@anon-20191002_181700-560:localhost:8800$2b$04$f/LRebSDvbSu8WRHhGR1s.jV5mazFck.dcKz2VZCa7wJXl70bhiVC]u/ ]@anon-20191002_181700-558:localhost:8800$2b$04$/7tM12SJFUGRBErmfq3ZYOY2nVEj.ud.YHlEyRMFM7JXLSBnSfqYS] HPxX0P(  @ Ph p H  ( h X0h@xpH `8 X 0P@pHX0 ` 8   x x'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 <'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 ;'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 :'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 9'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 8'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 ?'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 >'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 ='Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800 'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800 x'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mfzIRinBAGGrZvQAuI:localhost:8800 'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mTlCLZQCmfDuQsJxxp:localhost:8800H('Q!mvgUHEsfGqDkPQUvfG:localhost:8800 A'Q!mvgUHEsfGqDkPQUvfG:localhost:8800 @'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800 'Q!mogJVPxghalmKbblUq:localhost:8800  0En<p>  v D  tB | J  h6 P   V $ HT"N \ zZ( *1e$adV1e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQ1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo\1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo]1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAo1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAn1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAm1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAl1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU_1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo^1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEE1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxED1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxEC1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE?1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE>1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE=1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs 1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQC1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQB1e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQA1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4g1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w =1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w <1e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9w ;d1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek 1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4=1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4<1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4;1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OI1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0 1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY 81e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY 71e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY 61e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs~1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs}1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbI1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrg1e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg^ 6U*K V2gu@uBP s  >U _ % O  ; Y d<U^Q']!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800 BQ? !lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibility  :Q/ !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules RQ'E!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455 6Q' !lgejtcwlywOoIXwEgy:localhost:8800m.room.create <Q3 !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels :Q/ !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules 4Q!!lEJUJZxqZPKZetemiR:localhost:8800test_stateY 4Q!!lEJUJZxqZPKZetemiR:localhost:8800test_stateT 4Q!!lEJUJZxqZPKZetemiR:localhost:8800test_stateB <Q3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels BQ? !lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility 6Q' !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.createH6Q' !lEJUJZxqZPKZetemiR:localhost:8800m.room.create ^Q']!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800 RQ'E!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455 <Q3 !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.power_levels|^Q']!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800y:Q/ !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.join_rulesBQ? !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.history_visibility6Q' !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.createv?Q9 !lAGTcYIuMBXsVRGCOe:localhost:8800m.room.canonical_aliasEQ))!lAGTcYIuMBXsVRGCOe:localhost:8800m.room.aliaseslocalhost:8800;Q3 !kxTDuIasPNpXtiRsif:localhost:8800m.room.power_levelsv\Q'[!kxTDuIasPNpXtiRsif:localhost:8800m.room.member@anon-20191002_181700-37:localhost:8800r9Q/ !kxTDuIasPNpXtiRsif:localhost:8800m.room.join_rulest:Q/ !mMsxpaIlcykPuOnDyl:localhost:8800m.room.join_rulesBQ? !mMsxpaIlcykPuOnDyl:localhost:8800m.room.history_visibility6Q' !mMsxpaIlcykPuOnDyl:localhost:8800m.room.create}?Q9 !mMsxpaIlcykPuOnDyl:localhost:8800m.room.canonical_aliasEQ))!mMsxpaIlcykPuOnDyl:localhost:8800m.room.aliaseslocalhost:8800<Q3 !mBQpGaIiadEuKBXfOw:localhost:8800m.room.power_levels~^Q']!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-379:localhost:8800^Q']!mBQpGaIiadEuKBXfOw:localhost:8800m.room.member@anon-20191002_181700-378:localhost:8800}:Q/ !mBQpGaIiadEuKBXfOw:localhost:8800m.room.join_rulesBQ? !mBQpGaIiadEuKBXfOw:localhost:8800m.room.history_visibility6Q' !mBQpGaIiadEuKBXfOw:localhost:8800m.room.create|<Q3 !mBQpGaIiadEuKBXfOw:localhost:8800a.madeup.test.state;Q3 !loalEsWaTYwrVUNJLr:localhost:8800m.room.power_levels#\Q'[!loalEsWaTYwrVUNJLr:localhost:8800m.room.member@anon-20191002_181700-16:localhost:8800"9Q/ !loalEsWaTYwrVUNJLr:localhost:8800m.room.join_rules$AQ? !loalEsWaTYwrVUNJLr:localhost:8800m.room.history_visibility%5Q' !loalEsWaTYwrVUNJLr:localhost:8800m.room.create!<Q3 !laUExtszUaoCpZoyEq:localhost:8800m.room.power_levels^Q']!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-504:localhost:8829 ^Q']!laUExtszUaoCpZoyEq:localhost:8800m.room.member@anon-20191002_181700-503:localhost:8800:Q/ !laUExtszUaoCpZoyEq:localhost:8800m.room.join_rules BQ? !laUExtszUaoCpZoyEq:localhost:8800m.room.history_visibility 6Q' !laUExtszUaoCpZoyEq:localhost:8800m.room.create<Q3 !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.power_levelsBQ? !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.history_visibility:Q/ !lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.join_rules^Q']!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-135:localhost:8800^Q']!lMRBkbYJDQHgdBZBFJ:localhost:8800m.room.member@anon-20191002_181700-134:localhost:8800 #^o z 8 C q  :fk/4\g%0^eAeQ/ $V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rulesg@eQ3 $FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels ?eQ']$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800joina>eQ' $UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.createm=eQ? $8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibilitye<eQ/ $nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rulesg;eQ3 $XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels :eQ']$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800joina9eQ' $KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.createm8eQ? $BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibilitye7eQ/ $7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rulesg6eQ3 $xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels 5eQ']$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800joina4eQ' $IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800m.room.createm3eQ? $gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibilitye2eQ/ $sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rulesg1eQ3 $FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels 0eQ']$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800joina/eQ' $9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.createm.eQ? $8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibilitye-eQ/ $BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rulesg,eQ3 $Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels +eQ']$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800joina*eQ' $CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800m.room.createm)eQ? $QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibilitye(eQ/ $8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rulesg'eQ3 $RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels &eQ']$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800joina%eQ' $JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.createm$eQ? $wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibilitye#eQ/ $SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800m.room.join_rulesg"eQ3 $xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800m.room.power_levels !eQ']$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800m.room.member@anon-20191002_181700-561:localhost:8800joina eQ' $Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800m.room.create eQ']$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800m.room.member@anon-20191002_181700-558:localhost:8800join  IkiOeQ!$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8!hFwigdYZkwYNSwelRH:localhost:8800{"outlier": true, "out_of_band_membership": true, "stream_ordering": 2906}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s", "$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-558", "membership": "invite"}, "depth": 9, "hashes": {"sha256": "jN0yoe3cszJupV2gO0EYHiYHD4sZHpHqhIgXMQImf9A"}, "origin": "localhost:8829", "origin_server_ts": 1570043091336, "prev_events": ["$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug"], "prev_state": [], "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-559:localhost:8829", "state_key": "@anon-20191002_181700-558:localhost:8800", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "rXmWEug2euylFTuuTrlMOX9InSlkyBk/oCW8l05Pr5tCWDon8jm4u4fzeWWFpFJ7Sl5S3DCEynkMsK3A4AeCDQ"}, "localhost:8800": {"ed25519:a_OdAo": "hbN5dgw4UNOjcwA09VQolbl9XPqTHk0vGzDvD+31O/i4lsq/yGDzUrxFYj0IRv1veGMF27LTr9itNLe1FZs9DA"}}, "unsigned": {"age": 9, "invite_room_state": [{"content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-558:localhost:8800", "state_key": "", "type": "m.room.join_rules"}, {"content": {"avatar_url": null, "displayname": "anon-20191002_181700-559", "membership": "join"}, "sender": "@anon-20191002_181700-559:localhost:8829", "state_key": "@anon-20191002_181700-559:localhost:8829", "type": "m.room.member"}], "replaces_state": "$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug"}}ZNeQaA$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug!hFwigdYZkwYNSwelRH:localhost:8800{"token_id": 542, "stream_ordering": 2905}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"], "prev_events": ["$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-558:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043090263, "hashes": {"sha256": "02OWVQI84rq7thU9tdmpiA4v4aA4N7Gh00sk45Zk6Kk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KoJ+UvnKFfPuClRTf+drUR20LoWzAQ0u4KxpFXrnmzpEe1i8vewmYhxTc/ur1JaRNiGs+Kz34lLnBuFr5SA3BQ"}}, "unsigned": {"age_ts": 1570043090263, "replaces_state": "$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4"}}3MeQ1!$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0!hFwigdYZkwYNSwelRH:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 2904}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-559", "membership": "join"}, "depth": 7, "hashes": {"sha256": "Q+sgYWdxjmDkNTU0JOsgLdKTQZoy8pvmPcsp7+I1/so"}, "origin": "localhost:8829", "origin_server_ts": 1570043088774, "prev_events": ["$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0"], "prev_state": [], "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-559:localhost:8829", "state_key": "@anon-20191002_181700-559:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H/KwR+ZrrUP7MjKwBItFw3bxjaduszrESfg5fdBo4wwF+bG7AUxdfKZBYjeXQ2J8BjintvcIqsWLctVVHUArDg"}, "localhost:8829": {"ed25519:a_UxIG": "BydZS6Wc9sQSZzBf8Eu38U8J4pEfL069H7DxKyUrtJckR6M8P7cvkINEQlxQ69A4zIKlZ/i1JcVzCfurKoqAAA"}}, "unsigned": {"age": 92, "replaces_state": "$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0"}} J\.vHvHb4 | N h <  V ( r D  ^ 0 zLf8 T&n@d6~P"-]@anon-20191002_181700-582:localhost:8800-]@anon-20191002_181700-580:localhost:8800-]@anon-20191002_181700-579:localhost:8800-]@anon-20191002_181700-578:localhost:8800-]@anon-20191002_181700-577:localhost:8800-]@anon-20191002_181700-576:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-574:localhost:8800-]@anon-20191002_181700-573:localhost:8800-]@anon-20191002_181700-572:localhost:8800-]@anon-20191002_181700-661:localhost:8800-]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800#-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800-]@anon-20191002_181700-654:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-650:localhost:8800+[@anon-20191002_181700-64:localhost:8800$-]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800-]@anon-20191002_181700-641:localhost:8800-]@anon-20191002_181700-640:localhost:8800+[@anon-20191002_181700-63:localhost:8800"-]@anon-20191002_181700-639:localhost:8800-]@anon-20191002_181700-638:localhost:8800-]@anon-20191002_181700-637:localhost:8800-]@anon-20191002_181700-636:localhost:8800-]@anon-20191002_181700-636:localhost:8800-]@anon-20191002_181700-635:localhost:8800-]@anon-20191002_181700-634:localhost:8800-]@anon-20191002_181700-633:localhost:8800-]@anon-20191002_181700-632:localhost:8800+[@anon-20191002_181700-62:localhost:8800!-]@anon-20191002_181700-629:localhost:8829-]@anon-20191002_181700-628:localhost:8800-]@anon-20191002_181700-626:localhost:8800-]@anon-20191002_181700-625:localhost:8800-]@anon-20191002_181700-624:localhost:8800-]@anon-20191002_181700-623:localhost:8800-]@anon-20191002_181700-622:localhost:8800-]@anon-20191002_181700-620:localhost:8800+[@anon-20191002_181700-61:localhost:8800 -]@anon-20191002_181700-619:localhost:8800-]@anon-20191002_181700-617:localhost:8800-]@anon-20191002_181700-616:localhost:8800-]@anon-20191002_181700-614:localhost:8800-]@anon-20191002_181700-613:localhost:8800-]@anon-20191002_181700-612:localhost:8800-]@anon-20191002_181700-611:localhost:8800-]@anon-20191002_181700-610:localhost:8800-]@anon-20191002_181700-609:localhost:8800-]@anon-20191002_181700-608:localhost:8800-]@anon-20191002_181700-607:localhost:8829-]@anon-20191002_181700-607:localhost:8829-]@anon-20191002_181700-606:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-605:localhost:8800-]@anon-20191002_181700-603:localhost:8800-]@anon-20191002_181700-601:localhost:8800-]@anon-20191002_181700-584:localhost:8800-]@anon-20191002_181700-583:localhost:8800 9 2 k O3v!Z9# Q]]Q=$1570043192266CXqej:localhost:8800@anon-20191002_181700-574:localhost:8800@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800joinanon-20191002_181700-574C" e]]Q=$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y@anon-20191002_181700-574:localhost:8800@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800joinanon-20191002_181700-574C! e]]Q=$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI@anon-20191002_181700-573:localhost:8800@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800joinanon-20191002_181700-573C e]]Q=$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA@anon-20191002_181700-572:localhost:8800@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800joinanon-20191002_181700-572C e]]Q=$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4@anon-20191002_181700-571:localhost:8800@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800joinanon-20191002_181700-5719 Q]]Q=$1570043151259knbjg:localhost:8800@anon-20191002_181700-570:localhost:8800@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800joinanon-20191002_181700-570C e]]Q=$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo@anon-20191002_181700-570:localhost:8800@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800joinanon-20191002_181700-570C e]]Q=$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM@anon-20191002_181700-569:localhost:8800@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800joinanon-20191002_181700-569C e]]Q=$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0@anon-20191002_181700-568:localhost:8800@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800joinanon-20191002_181700-568C e]]Q=$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo@anon-20191002_181700-567:localhost:8800@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800joinanon-20191002_181700-567C e]]Q=$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0@anon-20191002_181700-566:localhost:8800@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800joinanon-20191002_181700-566C e]]Q=$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc@anon-20191002_181700-565:localhost:8800@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800joinanon-20191002_181700-565C e]]Q=$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g@anon-20191002_181700-564:localhost:8800@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800joinanon-20191002_181700-564C e]]Q=$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I@anon-20191002_181700-563:localhost:8800@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800joinanon-20191002_181700-563C e]]Q=$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA@anon-20191002_181700-562:localhost:8800@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800joinanon-20191002_181700-562C e]]Q=$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI@anon-20191002_181700-561:localhost:8800@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800joinanon-20191002_181700-561C e]]Q=$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800joinanon-20191002_181700-558E e]]Q=$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800inviteanon-20191002_181700-558, e]]Q$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800leaveC e]]Q=$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0@anon-20191002_181700-559:localhost:8829@anon-20191002_181700-559:localhost:8829!hFwigdYZkwYNSwelRH:localhost:8800joinanon-20191002_181700-559 ?>Rf+z?Oc( w <  P  d ) x =  Q e*yf+z?S8y]!@anon-20191002_181700-608:localhost:8800RSNCULZYRU8x]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZE8w]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTV8v]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDD8u]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJ8t]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZW8s]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAP8r]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLM%q7!@admin:localhost:8800GMJMIKRCOD8p]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR8o]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS8I]!b@anon-20191002_181700-558:localhost:8800ZVKDTDNPLS8H]!a@anon-20191002_181700-557:localhost:8800KTBNHNNWDA8G]!^@anon-20191002_181700-556:localhost:8800TMQBHREBEO8F]!]@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ8E]!Z@anon-20191002_181700-554:localhost:8800FFUSIPBHXS8D]!Y@anon-20191002_181700-553:localhost:8829UQYOPZHDDU8C]!X@anon-20191002_181700-552:localhost:8800JYCWUAAHBU8B]!W@anon-20191002_181700-551:localhost:8800PDLFVATDIV8A]!V@anon-20191002_181700-550:localhost:8800TBXCVBUGVR8@]!U@anon-20191002_181700-549:localhost:8800BYOSFCFMSO8?]!S@anon-20191002_181700-548:localhost:8800XQXKFJTYCC8>]!R@anon-20191002_181700-545:localhost:8800TWGXUTPQOV8=]!Q@anon-20191002_181700-543:localhost:8800FZCMWYDVSK8<]!P@anon-20191002_181700-542:localhost:8829IKECMPFQXL8;]!M@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ8n]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHW8m]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSG8l]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQ8k]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHT8j]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXT8i]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPR8h]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQ8g]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAU8f]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVE8e]!~@anon-20191002_181700-586:localhost:8800DOTBNZJMYC8d]!}@anon-20191002_181700-585:localhost:8800XLLZJGYIHR8c]!|@anon-20191002_181700-584:localhost:8800FZKRURXWXE8b]!{@anon-20191002_181700-583:localhost:8800ZQYHHUGDME8a]!z@anon-20191002_181700-582:localhost:8800WSKNBNWTAR8`]!y@anon-20191002_181700-581:localhost:8800RYCHJSFPQZ8_]!x@anon-20191002_181700-580:localhost:8800CRNUPLGBOP8^]!w@anon-20191002_181700-579:localhost:8800LLEXLPJZBR8]]!v@anon-20191002_181700-578:localhost:8800JVKVSBXCSN8\]!u@anon-20191002_181700-577:localhost:8800MKYGCGNVJB8[]!t@anon-20191002_181700-576:localhost:8800OMBHTKYAAU8Z]!s@anon-20191002_181700-575:localhost:8800NDSWGGEQOX8Y]!r@anon-20191002_181700-574:localhost:8800HLLZYJLEQN8X]!q@anon-20191002_181700-573:localhost:8800BMOWCJUXWQ8W]!p@anon-20191002_181700-572:localhost:8800VQNUOKTLPP8V]!o@anon-20191002_181700-571:localhost:8800LDVXZXQHTM8U]!n@anon-20191002_181700-570:localhost:8800ECXFORDQSP8T]!m@anon-20191002_181700-569:localhost:8800QUJKINDXXQ8S]!l@anon-20191002_181700-568:localhost:8800IRGUUINXHF8R]!k@anon-20191002_181700-567:localhost:8800XHVOSXRUNL8Q]!j@anon-20191002_181700-566:localhost:8800QBBGHXSEKF8P]!i@anon-20191002_181700-565:localhost:8800MSICJQZBGX8O]!h@anon-20191002_181700-564:localhost:8800JAGAKQJOKZ8N]!g@anon-20191002_181700-563:localhost:8800RLVZAZQHOM8M]!f@anon-20191002_181700-562:localhost:8800RUCUWRMARX8L]!e@anon-20191002_181700-561:localhost:8800YQDTZKECLG8K]!d@anon-20191002_181700-560:localhost:8800MSCBPCIKEE8J]!c@anon-20191002_181700-559:localhost:8829ESMCXDKMPQ E Z ( Y a /gm; sAy SG qM S!9-_' 5@ x F   M M M M$JSak2h1shg1e$JSak2h1shgHZQvIl1Y6fWg19Ki7SYxJDWC5TH9LEpDA1e$JV-SANoKfSI4ieP6oAvu6Nn9pSbVyfbNg082lOcnKb01e$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA 1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU21e$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1e$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgK1e$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA1e$JMtJ7S3zrqGkj2iTYdiUFhZjVly78iBU4B9Hb0LaD4Y1e$JJ7da-y5U57LlgTOycHEQBGlb-hhkuKdw5GMGJQx8vg1e$JI77f602UMZaxPXM4QunCd0t1UlxVALgifchngdscAEw1e$JBeq0TZs1suvCwnvzH2mrdC_1IWRp1zQyEovCLuRrAk51e$JAnkLoKNk68XfY-IxNKBxOAuz31tG05fGOD56Bo0zK01e$JAme9cDdFW3572375FubTtZTsjdfmZqCNx91WajTqMc1e$J9xtclHNvDkgQ3iCXqiuhBiY91ROmSlhxYCvIGyqusYb1e$J5Q83gM54rJSnv1m2BUgqPwZ60KqoDMzIWHQbniWbgk1e$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMYQ1e$J3GbFpBG1l-C9w26_iFx-KNhvZh6lfS854dwra05nmI*1e$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIo1e$IznP33ilr0_RJ5i17vKXK-rGIb3V1eabfqMeVBpFAeww1e$Itp9X8H3rklwLCcGsA-pokJL7LOT82-JknsCwJS3dwY1e$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI 1e$IrLuybj0NHpQDhPmdWJB7Z2Oe555DJOXUY6eVaOApAQ1e$IqPFXiPV46OkPPohbi17yPdIpYghoxuBq9Db9uZnIzU1e$IqJt9chviHw2Jt-hhA1jhb2aduRLs8NsHT040TySdMo1e$Im8hPazJUOHYvK_S1QJ65m18gYEeAKCkAJlakOA1ip4 1e$IjeGvnKgcLhWa6GNgUp1sljT47AcOBdH-X1XXB8Iejg1e$Ij51kxPQm4NZ7Fqit88yimvucp1tR9v7mHSIvxtzG-A1e$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw1e$IeMCUjq9o8eXvqeRbBABAgmJtK92DO2a1fnL5fk0eds1e$IdewotVgKrFgm3UfL-DG6q16TdwAyN9OSQ_bJFI6-Jw}1e$Ia_s0BY2p-2zOBdr7V9frowc0GJaEwmB5yWbnZUCO4g1e$IYhYtE9Om6F85mMiO2xYWKYuo9DkOUm-eQ4cBSvk1y431e$IV5LKmNYIHU85sfWN5SXtvIzrdM8Z1oGKlgKtlu9byo1e$ISCih7vQmdNnNg478z835eZQfpWORw0zU9OyWyJ86S81e$IRqXLCPXXzT-MdntSTHl2s8KGqL_TL8nTUd4H4pzENY1e$IPxuUtwvMdSQ-zRfOCFeVKr40Dn1-oM200GsazcZWmo1e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI%1e$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei41e$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgF 21e$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w1e$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo0e$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk51e$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY1e$IHa3BXYd4P5WL1cx7C0FAtMqD0GSIdnzqi-PgiXWEt01e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i01e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM01e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw=0e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68md1e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA 1e$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds l1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o Z1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 91e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM 31e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j80e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4(1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8sh1e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQ1e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQ1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw1e$JeD56O_sx4P8FjQ0EwGQNP104HZjtb3LlaUiAI5mMXkG20e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM8T1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko k1e$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 21e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgr0e$JSgvwpzlFXAG0euQfsqw_gmwyBYh6G49zAaWobJknGIO ~Kp>  v Q  W % L ] +\ *jc1i7o= 8vD  |JP DV $1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8g1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ=1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8=1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM &1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY@1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw71e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNov1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc]1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oj1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt80e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUK1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 "1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcG1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE 1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUG1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcP1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8 1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4;1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-421e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 11e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc A$lolredact:localhost:42455 1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo C1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 M1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 C1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A ,1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0<1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A ~Kp>  v Q  W % L ] +\ *jc1i7o= 8vD  |JP DV $1e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8a1e$mdzz7CvJIrzYIgmIIIGaSTZ21Bk7-K83XEX0_KOcZ1A1e$mcr3RP1pG2ZlcWPpKKKzJvYXFOU0wqf2B4CPDlKWEwI1e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho1e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlM 1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ=1e$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8=1e$mWTYIOnTp27HN7KOfPTvhXseXdd/OpoPHq/yNSmwPFM &1e$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE!1e$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY@1e$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk 1e$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw71e$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ1e$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNov1e$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU1e$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc]1e$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4o1e$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3oj1e$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI1e$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT01e$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt80e$mFK4dZgbgbpzshC4p41RV1wEZQZ4qrVW_EcXnQve8gUK1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 "1e$mE1SqtK0hJTxUw9ng6hcVPLFc3WKQuWoHH8kB7J9VVcG1e$mDN2aDSDWiwvcArl62QtkFzSKXBbCnPQWXJVUQGkwoE 1e$m8p3HCEqxrQm_c8KqGMZtYc0gAgYFaKMLRAN3rgurFY1e$m7agZd7IX8TUiKZeTYl4rL07dKVtbL-1qvM0kCzD1Kc1e$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaUG1e$m5Av8OsQYuVbIM51ENx7F3QiequLoKxsnySeWzpDgIcP1e$m53KM2PpeBrguMM8IB0uIQmi3EHBIMH30crP1SFZknA1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$m2KsoRRHC6kT_LR-pSC976iBUmnD0ILgZlQXX-aYEWo1e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW01e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr01e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8 1e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQA1e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZo1e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwg1e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeA1e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsU1e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4;1e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI1e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio1e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM1e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ81e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe41e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg1e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi81e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-421e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg1e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF141e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY1e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 11e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc A$lolredact:localhost:42455 }1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q 1e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo C1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 M1e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$mGxxpwzM8enJTRv7bpA6sb8TIKVdk5xbQtMhT184014 C1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A ,1e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK061e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A  t kSeQac$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2921}{"auth_events": ["$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0", "$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "prev_events": ["$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "type": "m.room.power_levels", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"users": {"@anon-20191002_181700-561:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043099166, "hashes": {"sha256": "qPJqjsizuJKG9Tv4m1CbMmOltZP8lfjPdbc6MMolk/k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fIPlfwPjFAIaidUv0ja2xluv43TNyFKMrpE1HTEBnqz5b7aDNPODRimA+2cxNxivWR6x8DRWXHD3iNwC9Ki7Ag"}}, "unsigned": {"age_ts": 1570043099166}}vReQay$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2920}{"auth_events": ["$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0"], "prev_events": ["$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0"], "type": "m.room.member", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-561", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-561:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043098622, "hashes": {"sha256": "YczK8s+21li7kgqXcxnGwRdc5dUZfUWEewExpVCWJ/E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8MuCOEVHKScD2b6MhmZVz+B1FF7/hRZ4PDOgBByCdnBpA1/4MQuARQGyRURErZljCIUWbNQ2EmXB+6OyO3JvAA"}}, "unsigned": {"age_ts": 1570043098622}}iQeQa_$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2919}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-561:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043097955, "hashes": {"sha256": "ommiWqQtLp+Bq4JjLSyq5BD8ReWmJVIOfbtnGV2in38"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bihgwxGE+kE/8ywU0P6D+4CTG57z34Oyz3j5ii7XtecIV6qe4FvhdhC5cvn8yBSX3jAWeVSg3X7sJJXD+3QlDw"}}, "unsigned": {"age_ts": 1570043097955}}PeQ??$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800{"stream_ordering": 2918}{"auth_events": ["$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE", "$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY", "$Vc-0WGvIlH5F0gp_KEppJTBngQPmVYRBbyk30V-Cc4s"], "prev_events": ["$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8"], "type": "m.room.member", "room_id": "!hFwigdYZkwYNSwelRH:localhost:8800", "sender": "@anon-20191002_181700-558:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-558", "avatar_url": null}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-558:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043092068, "hashes": {"sha256": "MuPXrtnmFfoqk+LA2k6dw6dMAfeedUHeXit0VDTmO78"}, "signatures": {"localhost:8829": {"ed25519:a_UxIG": "gP8+UJQ+9fOJBf55Ti+VG0T16C/Pk59KderLJtA/6R4ehoDyYN45vUy5Qc3U9/bCzy59HipCWGjOVxnOl2nXCQ"}, "localhost:8800": {"ed25519:a_OdAo": "SkAGRmz8NkDpIgMPuFq4B8MKJZMFpgEGBq7eJuTz5viuHYn+3HwMZD8eLarjisOGkAI4h5CnPUKsCJmHEQZxAw"}}, "unsigned": {"replaces_state": "$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8", "age_ts": 1570043092071}} =zY"zUq: V  r 9 W  s :  X t;Y u<Xv=A]$8]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLM=8]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAP>5Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZS6[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQX8]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR;8]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS:8]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSG88]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHW98]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHSn8]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm8]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUOl6[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQI^8]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWAk8]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGGj8]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOSi8]!@anon-20191002_181700-646:localhost:8800HFMIURTAJAh8]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVGg8]!@anon-20191002_181700-644:localhost:8800INFGSFBNKUf8]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQe8]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQd8]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVIc8]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQNb6[!@anon-20191002_181700-63:localhost:8800VLTVDGDALO\8]!@anon-20191002_181700-639:localhost:8800VIDPYYIORGa8]!@anon-20191002_181700-638:localhost:8800AMILRIOBVF`8]!@anon-20191002_181700-637:localhost:8800SOCIZPGICG_8]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOL^8]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJG]8]!@anon-20191002_181700-633:localhost:8800TRECTOOCOT\8]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWE[8]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZZ8]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPEY6[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYX[8]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTXX8]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPWW8]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWOV8]!@anon-20191002_181700-625:localhost:8800LXKNSEODEIU8]!@anon-20191002_181700-624:localhost:8800AATHUMCUILT8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUDS8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLUR8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDHQ8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQP6[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUZ8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVVO8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABYN8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUETM8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHSL8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEMK8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZJ8]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHII8]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRPH8]!@anon-20191002_181700-611:localhost:8800UERIFUMBMUG8]!@anon-20191002_181700-610:localhost:8800ZXXERHSURNF6[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGY8]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEE8]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUD8]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVB8]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDA8]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEC8]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZW?8]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJ@ i 4 h5 gi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVCS3BRQDJqeU1BRE9oPTUKMDAyZnNpZ25hdHVyZSC2VSzsdjWxC0I8UyNUBZp8kSpBgQTjCYiVQLs2_Z2zGQo/1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-go,1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAo*1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQo'1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7Qo+1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewo)1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwo(1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAo&1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7Ao%1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6Ao$1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZPJkF4RnUtYVF-MDFTb1oKMDAyZnNpZ25hdHVyZSDOsredtu5HxxLeGWlpO64Nf5DkwOHlWzJV5qsXYtmkpgo.1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgo#1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAo- ,NC 8 - { " p  e ZOD9.|#qf V|eL$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMsha256W?* v]E 2UtnV{eL$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIsha2560 $̶ q>F`LjVzeL$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Qsha256Yx}aШpct4&j[bX _VyeL$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsksha256SENMMk^EuldFVxeL$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQsha256`sjڎg-ާ9 >ͮ.VweL$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Msha256(p7b%Ui&̛_LzzSVveL$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0sha256QT.3RlF'BAVueL$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAsha256MSgZOTQ!kB#>YѶu*TyVteL$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Qsha256!Js|cj̖7VseL$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIksha256Ha1!0HۢTRj|VreL$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUsha256WhNwcc0(2kPVqeL$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8sha256s6sV .75H ȲlЗVpeL$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieosha256[< kX5 cG0K1)VoeL$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVssha256RK(b\;C6GFK nS![VneL$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAsha256 %hMU6Uj?0VmeL$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0sha256 a^9NADRjWkmsԜ VleL$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdosha256^5nj=]wP}L*_WnEVkeL$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0sha256ϝ8Iqff[9VjeL$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAsha256)V:jV4d`7Kʉ5@VieL$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Usha256r0zsEizO*J~߅VheL$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gsha256U!2iQ]C٩T[#]S4ȴ;VgeL$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bksha256XP9&[)!s]-Nx)VfeL$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcsha2566$!=śԾ!Y8VeeL$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAsha256 {"9/A7 P*/!ƻ"ekeVdeL$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewsha2564CٍOzC W 4YgVceL$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcsha256y. 0#_g BG"7VbeL$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcsha2561ZB@]}iHXVDa|z7VaeL$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gsha256ŲW* 6B f>ɺ왨B V`eL$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwsha256Y4kޮU*BB(V_eL$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAsha256uj{#4ʠgx?] V^eL$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8sha256rr%?:jQv_A* 7V]eL$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYsha256 zI`DR_\ɪO.dV\eL$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4Isha256{qbcw =/:i8qCUV[eL$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwsha256}VQXN?(Tcd9m0D1LVZeL$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAsha256C"e/btHe{};I\DVYeL$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgsha256;@Hvcp$;(x GƾVXeL$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUsha256E.'&-s\ vS2M/tIVWeL$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAsha256(ǠSr.1mîlAd~̡VVeL$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6Asha256&= ťdeCݵ 07VUeL$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNgsha256k\ g5gqu0ЫF_~ 9VTeL$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjogsha256Iv9yfn'q_J BM|;M~lVSeL$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8sha256DƷ g}gX><NFy~ƆVReL$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIsha256{̏!軳~rQ#VQeL$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0sha256b^t5/5JR2D~F^zdU  vWeQay$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2925}{"auth_events": ["$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A"], "prev_events": ["$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A"], "type": "m.room.member", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-562", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-562:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043103027, "hashes": {"sha256": "TW6yp6BVv+if24STdrT5y77mx0T7myU3D5CCDIclJfo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gcVwxdsMelaPr+Otm0dXyXz/uqnppPsR3jinwf4pXJ/qlW4gJ8OIQ39oA+4ZZxmPklJpf+Y2/Jegkn76nFnKAQ"}}, "unsigned": {"age_ts": 1570043103027}}iVeQa_$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2924}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-562:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043102247, "hashes": {"sha256": "M2+N3Ac2PuuJEeezwtDYnOnp9k7RYptkcf1Mt7I2k+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A4po5nS4drR1deW/hssc92WXbESseHCZtVnOL9DVmJyL0MfTh2qRtAIa25jCHYyzWKKZ/Y/5lw/gJ5X3Ozi6DA"}}, "unsigned": {"age_ts": 1570043102247}}UeQa$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2923}{"auth_events": ["$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8", "$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0", "$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "prev_events": ["$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog"], "type": "m.room.history_visibility", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043100592, "hashes": {"sha256": "q+DhDqRG1QMvm6JmNpCF/wm1TeckBXJ6aNsqvg+rK0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7vzRbxwgwBSeyT/V1ZldN0m0Z8MSagDqboEE2nEZt7LJEUB7d3gdMZPiFbksQHzB+oFYOekKIIJ8PTCmnRY5DA"}}, "unsigned": {"age_ts": 1570043100592}}tTeQau$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog!QnmLrBAxeItdHsaxWf:localhost:8800{"token_id": 544, "stream_ordering": 2922}{"auth_events": ["$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8", "$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0", "$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI"], "prev_events": ["$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8"], "type": "m.room.join_rules", "room_id": "!QnmLrBAxeItdHsaxWf:localhost:8800", "sender": "@anon-20191002_181700-561:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043099807, "hashes": {"sha256": "szIZesPMoppPgbik6SBlYjyUXKlR4OzkNaePZPD/H94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8v7kdCtMEmEV5km6BGJSeBY2HaHY/ilVJJDzu544z1fPi4fkewUn9P2YKMZIzK1xRAAwB1NJbxVgDUDZP8Z8Aw"}}, "unsigned": {"age_ts": 1570043099807}} a} { y w u sqomkigeca~ZeeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800~YeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800~XeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800~WeeQ$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800~VeeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800~UeeQ$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800~TeeQ$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800~SeeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800~ReeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~QeeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800~PeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800~OeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~NeeQ$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800~MeeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800~LeeQ$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~KeeQ$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800~JeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800~IeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~HeeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800~GeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800~FeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~EeeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800~DeeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA!tPkCGJBKmqUXJoRrnY:localhost:8800~CeeQ$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~BeeQ$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A!tPkCGJBKmqUXJoRrnY:localhost:8800~AeeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800~@eeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~?eeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800~>eeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI!QnmLrBAxeItdHsaxWf:localhost:8800~=eeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0!QnmLrBAxeItdHsaxWf:localhost:8800~<eeQ$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8!QnmLrBAxeItdHsaxWf:localhost:8800 #U(- Q \   Iqv 49]h +Ug#Q/ e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rules$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQi"Q3 e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M !Q']e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0c Q' e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.create$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAoQ? e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkgQ/ e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rules$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUiQ3 e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 Q']e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieocQ' e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.create$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsoQ? e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibility$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAgQ/ e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rules$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0iQ3 e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo Q']e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0cQ' e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.create$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAoQ? e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibility$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34UgQ/ e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rules$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-giQ3 e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk Q']e ~!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgccQ' e }!hegUPDZCEEmBhsNJJR:localhost:8800m.room.create$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAoQ? e |!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibility$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewgQ/ e {!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rules$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzciQ3 e z!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc Q']e y!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gc Q' e x!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.create$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwo Q? e w!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibility$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAg Q/ e v!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rules$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8i Q3 e u!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY Q']e t!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IcQ' e s!peJMRJtXBvIiCttNmm:localhost:8800m.room.create$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8UwoQ? e r!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.history_visibility$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAgQ/ e q!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.join_rules$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgiQ3 e p!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.power_levels$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU Q']e o!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.member@anon-20191002_181700-562:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAcQ' e n!tPkCGJBKmqUXJoRrnY:localhost:8800m.room.create$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6AoQ? e m!QnmLrBAxeItdHsaxWf:localhost:8800m.room.history_visibility$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg :\ Z  j  p"z(2<:,e?Q ]$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAm.room.history_visibility!gXfXRDTXeVvOHQdaaQ:localhost:8800mm'@anon-20191002_181700-566:localhost:8800$e/Q ]$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0m.room.join_rules!gXfXRDTXeVvOHQdaaQ:localhost:8800m\m@anon-20191002_181700-566:localhost:8800&e3Q ]$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdom.room.power_levels!gXfXRDTXeVvOHQdaaQ:localhost:8800mڊmے@anon-20191002_181700-566:localhost:8800 e'Q ]$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0m.room.member!gXfXRDTXeVvOHQdaaQ:localhost:8800mm[@anon-20191002_181700-566:localhost:8800 e'Q  ]$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAm.room.create!gXfXRDTXeVvOHQdaaQ:localhost:8800mmD@anon-20191002_181700-566:localhost:8800,e?Q ]$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Um.room.history_visibility!hegUPDZCEEmBhsNJJR:localhost:8800m]mQ@anon-20191002_181700-565:localhost:8800$~e/Q ]$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gm.room.join_rules!hegUPDZCEEmBhsNJJR:localhost:8800mʞm6@anon-20191002_181700-565:localhost:8800&}e3Q ]$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bkm.room.power_levels!hegUPDZCEEmBhsNJJR:localhost:8800mǗm@anon-20191002_181700-565:localhost:8800 |e'Q ]$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcm.room.member!hegUPDZCEEmBhsNJJR:localhost:8800mTmŭ@anon-20191002_181700-565:localhost:8800{ e'Q  ]$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAm.room.create!hegUPDZCEEmBhsNJJR:localhost:8800mšm@anon-20191002_181700-565:localhost:8800,ze?Q ]$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewm.room.history_visibility!aSKNKSGXPGoIbSrbEN:localhost:8800mܺUmܼ@anon-20191002_181700-564:localhost:8800$ye/Q ]$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcm.room.join_rules!aSKNKSGXPGoIbSrbEN:localhost:8800mܷ+mܸ@anon-20191002_181700-564:localhost:8800&xe3Q ]$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcm.room.power_levels!aSKNKSGXPGoIbSrbEN:localhost:8800mܴJmܵ@anon-20191002_181700-564:localhost:8800 we'Q ]$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gm.room.member!aSKNKSGXPGoIbSrbEN:localhost:8800mܱ_mܱ@anon-20191002_181700-564:localhost:8800v e'Q  ]$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwm.room.create!aSKNKSGXPGoIbSrbEN:localhost:8800mܮHmܮ@anon-20191002_181700-564:localhost:8800,ue?Q ]$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAm.room.history_visibility!peJMRJtXBvIiCttNmm:localhost:8800mܧmܨ@anon-20191002_181700-563:localhost:8800$te/Q ]$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8m.room.join_rules!peJMRJtXBvIiCttNmm:localhost:8800mܣHmܤ@anon-20191002_181700-563:localhost:8800&se3Q ]$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYm.room.power_levels!peJMRJtXBvIiCttNmm:localhost:8800mܟmܠ@anon-20191002_181700-563:localhost:8800 re'Q ]$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4Im.room.member!peJMRJtXBvIiCttNmm:localhost:8800mܜmܝ.@anon-20191002_181700-563:localhost:8800q e'Q  ]$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uwm.room.create!peJMRJtXBvIiCttNmm:localhost:8800mܘmܙ@anon-20191002_181700-563:localhost:8800,pe?Q ]$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAm.room.history_visibility!tPkCGJBKmqUXJoRrnY:localhost:8800mܑmܓy@anon-20191002_181700-562:localhost:8800$oe/Q ]$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgm.room.join_rules!tPkCGJBKmqUXJoRrnY:localhost:8800m܎Am܎@anon-20191002_181700-562:localhost:8800&ne3Q ]$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUm.room.power_levels!tPkCGJBKmqUXJoRrnY:localhost:8800m܉m܌@anon-20191002_181700-562:localhost:8800 me'Q ]$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAm.room.member!tPkCGJBKmqUXJoRrnY:localhost:8800m܇3m܇@anon-20191002_181700-562:localhost:8800 >Y!b:rK# a ] 6q  Y n F 9 ~ V .  f @I   y Q ) 'Q!yNfCaBMPezurwkJRAX:localhost:8800D'Q!yNfCaBMPezurwkJRAX:localhost:8800C'Q!yWhIsLsgNVGcnELrDS:localhost:88007'Q!yWhIsLsgNVGcnELrDS:localhost:88006'Q!yWhIsLsgNVGcnELrDS:localhost:88005'Q!wCsDjKBtuUbrmZgjsB:localhost:88004'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800&'Q!yLccBXjjEasExpsXlt:localhost:8800%'Q!yAzXcNLHMuqFOcOexj:localhost:8800/'Q!yAzXcNLHMuqFOcOexj:localhost:8800.&Q!xwoIOPTGmJIlTXakxC:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800l&Q!xhbvqJDfxMSsZPqvld:localhost:8800/'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800 &Q!wnriPzXkIMmdTNoJKU:localhost:8800,'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800D&Q!wIhMbfQzYbJobPdwyi:localhost:8800W&Q!wIhMbfQzYbJobPdwyi:localhost:8800V'Q!wBkUBAjOznOyxrLchl:localhost:8800h'Q!wBkUBAjOznOyxrLchl:localhost:8800g  i[eQa_$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2929}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-563:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043107492, "hashes": {"sha256": "X3xZUxS8a0YXlbqGY8hf/QfD54WzWEeGuqi2M0O8Afg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tB4N8gv7UpHXUygUl2fAeIrL9gDbMgPMdg3ZTgRWOVrJkp0/WmDi40EdEffekGRe1ZzmJ5cRNr1+3YSvGzjYDg"}}, "unsigned": {"age_ts": 1570043107492}}ZeQa$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2928}{"auth_events": ["$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU", "$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A", "$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "prev_events": ["$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg"], "type": "m.room.history_visibility", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043105686, "hashes": {"sha256": "Q4rnn0HM9N3/zJgjTdUvulihc+gu9upeMLLC+2MOcEk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Fue9S5oH2X3uza7PvHdp10PxIIk3E6gSzOrVdTu7tPs9eS6iSxkjqr3gc7e/HPy7RLCxIEcljx1Q5uh6rP2BQ"}}, "unsigned": {"age_ts": 1570043105686}}tYeQau$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2927}{"auth_events": ["$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU", "$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A", "$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "prev_events": ["$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU"], "type": "m.room.join_rules", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043104833, "hashes": {"sha256": "VS5dfF/2ezGDoIvrlR2zxq8Fg06yES/6feL7DM9WN3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GjOloTZ/iyZYtI/dQwHVTpWXS/Q88W+wcLXEu/4ukmxo7DnJBSlCN/JQ2vGtBuTan0ayF1RPkPEpB1G2XgQUDg"}}, "unsigned": {"age_ts": 1570043104833}}kXeQac$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800{"token_id": 545, "stream_ordering": 2926}{"auth_events": ["$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6A", "$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "prev_events": ["$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA"], "type": "m.room.power_levels", "room_id": "!tPkCGJBKmqUXJoRrnY:localhost:8800", "sender": "@anon-20191002_181700-562:localhost:8800", "content": {"users": {"@anon-20191002_181700-562:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043103708, "hashes": {"sha256": "RHUewqYPVjMYadfkGK/QVdd6RJzXhVcE995qzPgV+A4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3AXH47SUVGNDnZqGeKUFuuJJ8uRdebvKU+Ebl1UU9GJ2vcKa4pHyrefMKFsiMdz0Tya/911yDvvJb7t/wbyKBw"}}, "unsigned": {"age_ts": 1570043103708}} .RM H C > 9 4/*|%w rmhw*J QQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043153262hRyOa:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152261Skczg:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152260dkyqc:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043151259knbjg:localhost:8800JQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043150258cdaXl:localhost:8800TQe !fdEymmlcUvjgshvVyl:localhost:8800$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6YTQe !fdEymmlcUvjgshvVyl:localhost:8800$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgTQe !fdEymmlcUvjgshvVyl:localhost:8800$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgTQe !fdEymmlcUvjgshvVyl:localhost:8800$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4TQe !fdEymmlcUvjgshvVyl:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgoTQe !fdEymmlcUvjgshvVyl:localhost:8800$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYTQe !xcdNyJNFEdaBGFycsB:localhost:8800$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0oTQe !xcdNyJNFEdaBGFycsB:localhost:8800$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkTQe !xcdNyJNFEdaBGFycsB:localhost:8800$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0TQe !xcdNyJNFEdaBGFycsB:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMTQe !xcdNyJNFEdaBGFycsB:localhost:8800$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheITQe !SUDzkfFBgpuCANOxRS:localhost:8800$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRskTQe !SUDzkfFBgpuCANOxRS:localhost:8800$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQTQe !SUDzkfFBgpuCANOxRS:localhost:8800$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1MT Qe !SUDzkfFBgpuCANOxRS:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0T Qe !SUDzkfFBgpuCANOxRS:localhost:8800$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAT Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkT Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUT Qe !rWmvvGBgmFMdVvcfPk:localhost:8800$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8TQe !rWmvvGBgmFMdVvcfPk:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieoTQe !rWmvvGBgmFMdVvcfPk:localhost:8800$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsTQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzATQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0TQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdoTQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0TQe !gXfXRDTXeVvOHQdaaQ:localhost:8800$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUATQe !hegUPDZCEEmBhsNJJR:localhost:8800$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34UTQe !hegUPDZCEEmBhsNJJR:localhost:8800$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gTQe !hegUPDZCEEmBhsNJJR:localhost:8800$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-BkT~Qe ~!hegUPDZCEEmBhsNJJR:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgcT}Qe }!hegUPDZCEEmBhsNJJR:localhost:8800$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAT|Qe |!aSKNKSGXPGoIbSrbEN:localhost:8800$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewT{Qe {!aSKNKSGXPGoIbSrbEN:localhost:8800$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcTzQe z!aSKNKSGXPGoIbSrbEN:localhost:8800$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejcTyQe y!aSKNKSGXPGoIbSrbEN:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gTxQe x!aSKNKSGXPGoIbSrbEN:localhost:8800$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwTwQe w!peJMRJtXBvIiCttNmm:localhost:8800$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeATvQe v!peJMRJtXBvIiCttNmm:localhost:8800$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8TuQe u!peJMRJtXBvIiCttNmm:localhost:8800$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQYTtQe t!peJMRJtXBvIiCttNmm:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4ITsQe s!peJMRJtXBvIiCttNmm:localhost:8800$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw  _eQa$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2933}{"auth_events": ["$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY", "$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw", "$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "prev_events": ["$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8"], "type": "m.room.history_visibility", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043111186, "hashes": {"sha256": "xn5kLUtz8yAfKnHr/V6Ium+nZpqDLKiPTztNNYnL3O0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RhGZLQfRp6+t/wqaThOvdg2fvPjMizpXP0ILhOztxX8q18R08U2W5itlT3Z+Q8VMNmXmVG/JnYI6az42rRFrBg"}}, "unsigned": {"age_ts": 1570043111186}}t^eQau$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2932}{"auth_events": ["$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY", "$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw", "$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "prev_events": ["$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY"], "type": "m.room.join_rules", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043110216, "hashes": {"sha256": "DRQDl/zSCwIJAnqC+aacZKzX6kUbTdBKsQfFUq936VI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1lY8Ku2WMWoPwSSsTimlTZQMEWtRtI76PUK/S23kYLEF5/ppMYRpJL81PXV1YaRpnvnfVRJCmRLydhXzKV4MCA"}}, "unsigned": {"age_ts": 1570043110216}}k]eQac$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2931}{"auth_events": ["$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw", "$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "prev_events": ["$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I"], "type": "m.room.power_levels", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"users": {"@anon-20191002_181700-563:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043109274, "hashes": {"sha256": "sZM3c6gh97nYviicTxeXmbO3eYj0HbvSN7KIpfcLgZs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "85FntMGwtlAQTcxnjGmChXHSe8I+igJuqOKqsEwUs7xGPnMxYFF5A+6UXRXWiD1IVn5WE1ybYka3R0cN11GpAw"}}, "unsigned": {"age_ts": 1570043109274}}v\eQay$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800{"token_id": 546, "stream_ordering": 2930}{"auth_events": ["$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw"], "prev_events": ["$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw"], "type": "m.room.member", "room_id": "!peJMRJtXBvIiCttNmm:localhost:8800", "sender": "@anon-20191002_181700-563:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-563", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-563:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043108569, "hashes": {"sha256": "VTffb6MFJpZtbGfL2VICOgFvvKC3TyGJY3F7uFirjwI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "woK1H/FNBYX30PnZocHqjcpgpIqZ3gADY1CvQcRRpj6kb73mRUWEHVHTzx0BUZX5yRHrPR4hWCq6HCnvUJXHCg"}}, "unsigned": {"age_ts": 1570043108569}} #s 1 @ n ; gp4=et 2AoaMeQ' $ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800m.room.createmLeQ? $AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibilityeKeQ/ $sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rulesgJeQ3 $6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels IeQ']$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800aHeQ' $3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800m.room.createmGeQ? $yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibilityeFeQ/ $oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rulesgEeQ3 $KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels DeQ']$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800aCeQ' $TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800m.room.createmBeQ? $H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibilityeAeQ/ $V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rulesg@eQ3 $FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels ?eQ']$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800a>eQ' $UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.createm=eQ? $8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibilitye<eQ/ $nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rulesg;eQ3 $XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels :eQ']$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800a9eQ' $KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.createm8eQ? $BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibilitye7eQ/ $7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rulesg6eQ3 $xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels 5eQ']$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800a4eQ' $IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800m.room.createm3eQ? $gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibilitye2eQ/ $sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rulesg1eQ3 $FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels 0eQ']$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800a/eQ' $9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.createm.eQ? $8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibilitye-eQ/ $BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rulesg,eQ3 $Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels +eQ']$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800 "p% . V |   :=_h&Ntw pGQ? e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibility$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0ohFQ/ e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rules$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkjEQ3 e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 DQ']e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMdCQ' e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.create$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIpBQ? e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibility$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRskhAQ/ e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rules$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQj@Q3 e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M ?Q']e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0d>Q' e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.create$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAp=Q? e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkh<Q/ e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.join_rules$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUj;Q3 e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.power_levels$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 :Q']e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.member@anon-20191002_181700-567:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieod9Q' e !rWmvvGBgmFMdVvcfPk:localhost:8800m.room.create$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsp8Q? e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.history_visibility$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAh7Q/ e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.join_rules$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0j6Q3 e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.power_levels$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo 5Q']e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.member@anon-20191002_181700-566:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0d4Q' e !gXfXRDTXeVvOHQdaaQ:localhost:8800m.room.create$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAp3Q? e !hegUPDZCEEmBhsNJJR:localhost:8800m.room.history_visibility$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34Uh2Q/ e ~!hegUPDZCEEmBhsNJJR:localhost:8800m.room.join_rules$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-gj1Q3 e }!hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk 0Q']e |!hegUPDZCEEmBhsNJJR:localhost:8800m.room.member@anon-20191002_181700-565:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgcd/Q' e {!hegUPDZCEEmBhsNJJR:localhost:8800m.room.create$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdAp.Q? e z!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibility$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ewh-Q/ e y!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rules$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzcj,Q3 e x!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc +Q']e w!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gd*Q' e v!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.create$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwp)Q? e u!peJMRJtXBvIiCttNmm:localhost:8800m.room.history_visibility$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAh(Q/ e t!peJMRJtXBvIiCttNmm:localhost:8800m.room.join_rules$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8j'Q3 e s!peJMRJtXBvIiCttNmm:localhost:8800m.room.power_levels$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY &Q']e r!peJMRJtXBvIiCttNmm:localhost:8800m.room.member@anon-20191002_181700-563:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I g * T~=gg']!c0@anon-20191002_181700-577:localhost:8800MKYGCGNVJBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQog&]!c/@anon-20191002_181700-576:localhost:8800OMBHTKYAAUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAog%]!c.@anon-20191002_181700-575:localhost:8800NDSWGGEQOXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7Aog$]!c-@anon-20191002_181700-574:localhost:8800HLLZYJLEQNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6Aog#]!c,@anon-20191002_181700-573:localhost:8800BMOWCJUXWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgog"]!c+@anon-20191002_181700-572:localhost:8800VQNUOKTLPPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3Aog!]!c*@anon-20191002_181700-571:localhost:8800LDVXZXQHTMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgog ]!c)@anon-20191002_181700-570:localhost:8800ECXFORDQSPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQog]!c(@anon-20191002_181700-569:localhost:8800QUJKINDXXQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQog]!c'@anon-20191002_181700-568:localhost:8800IRGUUINXHFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3Aog]!c&@anon-20191002_181700-567:localhost:8800XHVOSXRUNLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQo  ioeQa_$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2949}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-567:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043127661, "hashes": {"sha256": "42agw7aDncGKCmAJT3EfjaYkbpmlfJ+JSOB3wYBbPyo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jo5OoLMYUNcByv525P7gf2W3o9S2nBKY8GH63YWiS7xHVOAiFhDkB0BZxg8R889+5lRBq1EcPULab2lmpVD8AA"}}, "unsigned": {"age_ts": 1570043127661}}neQa$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2948}{"auth_events": ["$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo", "$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA", "$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "prev_events": ["$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0"], "type": "m.room.history_visibility", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043125893, "hashes": {"sha256": "BQpCbaagPxVkyrbrwazFOrdsxwBupcAsYjxVKf17sTE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SYW3kKqnrf5bXciGneqCGf/ZHzbnz1Z5qunTTKaDealrPZnQ+EqbCREOR/r3tF+2MVENKLCAh0+HOntqqglACg"}}, "unsigned": {"age_ts": 1570043125893}}tmeQau$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2947}{"auth_events": ["$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo", "$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA", "$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "prev_events": ["$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo"], "type": "m.room.join_rules", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043125084, "hashes": {"sha256": "PlLtEI9u9a+s32hg2lHhJp90KW90V3s/IaAY3gohQoU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nxfS8FYVXrixMdih6j0mwC/ZxcO2+olSBBtJTrpznSPgGQoBdLo2Vo8w0Dn5mfQVkDezJ0uolFUKjeCTGu3wDA"}}, "unsigned": {"age_ts": 1570043125084}}kleQac$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2946}{"auth_events": ["$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA", "$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "prev_events": ["$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0"], "type": "m.room.power_levels", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"users": {"@anon-20191002_181700-566:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043124362, "hashes": {"sha256": "/1QkFNpAzaGoj2hmtZLoNbVGdecWzTO7Dm3ipZESPCg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C6Y5x16RFE6Sv3t3p+MQGiEaxK3IKK/6H3JHOLGwGMcFpDCaVIvzAUo3rnCZzB4DckXYB1lM7Q4QxVqZAtEJDA"}}, "unsigned": {"age_ts": 1570043124362}} ]kN3S A $ s \  l O 4  ` I Y < !pM6F)x]:  mR5gP`C(wT:#lO23  m.room.power_levels >'] m.room.member@anon-20191002_181700-574:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-573:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-572:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-571:localhost:8800 '  m.room.create 3  m.room.power_levels 3  m.room.power_levels /  m.room.join_rules "?  m.room.history_visibility 3  m.room.guest_access 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-570:localhost:8800 '  m.room.create -  m.room.tombstone "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-570:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-569:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-568:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-567:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-566:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] ~m.room.member@anon-20191002_181700-565:localhost:8800 '  }m.room.create "?  |m.room.history_visibility /  {m.room.join_rules 3  zm.room.power_levels >'] ym.room.member@anon-20191002_181700-564:localhost:8800 '  xm.room.create "?  wm.room.history_visibility /  vm.room.join_rules 3  um.room.power_levels >'] tm.room.member@anon-20191002_181700-563:localhost:8800 '  sm.room.create "?  rm.room.history_visibility /  qm.room.join_rules 3  pm.room.power_levels >'] om.room.member@anon-20191002_181700-562:localhost:8800 '  nm.room.create "?  mm.room.history_visibility /  lm.room.join_rules 3  km.room.power_levels >'] jm.room.member@anon-20191002_181700-561:localhost:8800 ~'  im.room.create }3  hm.room.power_levels x>'] hm.room.member@anon-20191002_181700-559:localhost:8829 |>'] hm.room.member@anon-20191002_181700-558:localhost:8800 {/  hm.room.join_rules y"?  hm.room.history_visibility z'  hm.room.create w>'] gm.room.member@anon-20191002_181700-558:localhost:8800 v>'] fm.room.member@anon-20191002_181700-559:localhost:8829 u>'] em.room.member@anon-20191002_181700-559:localhost:8829 t>'] dm.room.member@anon-20191002_181700-559:localhost:8829 s"?  cm.room.history_visibility r/  bm.room.join_rules q3  am.room.power_levels p>'] `m.room.member@anon-20191002_181700-558:localhost:8800 o'  _m.room.create n>'] ^m.room.member@anon-20191002_181700-556:localhost:8800 m   *tceQau$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2937}{"auth_events": ["$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc", "$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw", "$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "prev_events": ["$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc"], "type": "m.room.join_rules", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043115307, "hashes": {"sha256": "0bwSSWW/bW5KFS6Mjvq2UPx4Q+MpjOOZWM50EBisjPI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r8rd01rL9Zs9VA3wrawiNlME7d+DJOgp3LMhXw2deT/OltXhALZn9z1NIK+PtiQ6m2sBycGmMwYDsn30R/4pDw"}}, "unsigned": {"age_ts": 1570043115307}}kbeQac$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2936}{"auth_events": ["$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw", "$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "prev_events": ["$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "type": "m.room.power_levels", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"users": {"@anon-20191002_181700-564:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043114570, "hashes": {"sha256": "/GamCKy8xOIQ5bh3YZS3L/X8K6HNUxebeCLcaSSC3N8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lQweMYIZJ9ZsJaIwXjOuFccRwqYCLoFaq2XbEGM8rKhSWCrVLdn64q6gfQ3WEIcgXAyg2esDdleBO5174w0yCA"}}, "unsigned": {"age_ts": 1570043114570}}vaeQay$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2935}{"auth_events": ["$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw"], "prev_events": ["$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw"], "type": "m.room.member", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-564", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-564:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043113823, "hashes": {"sha256": "sy5H8I1SFrWQuEOrvg8zIQGt/DI45BHK/fU1yj5B5+I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "psE341b5itxIDBPBrrUNdFwu6w21rHYISebzynFafI9T2QBe0Y2SDN+9YXLkreaeuyGPyTWhXUrw5HixJLAYAQ"}}, "unsigned": {"age_ts": 1570043113823}}i`eQa_$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2934}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-564:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043113032, "hashes": {"sha256": "a1uAR0jztbmIkb3DvHMS/EH3x5D7cUM+44sTunvfdEs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vDQzkT5tNV+4eh3eYiZh1WjVwMDb26ID3ciYyb7RKR2/pclKH7qpY9ZUrQfXzVmWbN0r5YGR7x8OTjD0mu4BBg"}}, "unsigned": {"age_ts": 1570043113032}} ,S d2pjM*j m8  p>  vD}KQ W %]+ ;8 q ? Y l S = g 5  $81e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y!0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUP1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU]1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc Q1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 31e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw61e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wG1e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L81e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA 1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg S1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8<1e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM n1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA X1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQb1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc1e$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8=1e$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ01e$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo)1e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU 1e$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl2841e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY&1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_A1e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG41e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0o1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 1e$80z_QieN-RBAOZ1Egv-GIV9gjm6QvFhD7p0oKY7LHNo1e$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A !1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM w1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw c1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 P1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk S1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEQ9$98_m2:localhost:42455 9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI (1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA 1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 23$94:localhost:42455 ;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA 1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx43$89:localhost:42455 3$89:localhost:42455 3$88:localhost:42455 3$87:localhost:42455 "G$83_outlier_C:localhost:42455 s"G$83_outlier_C:localhost:42455 r"G$83_outlier_C:localhost:42455 q3$82:localhost:42455 o3$80:localhost:42455 Zd1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 w1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA d1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 8l D `8]c!E@anon-20191002_181700-573:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFB3SU4xV3d0ZjtZcitoNTMKMDAyZnNpZ25hdHVyZSBsS7Yeg6lfUKMuAR9ZnSQ6gniKYRjff3iR_9GoRmDvdgoBMOWCJUXWQ127.0.0.1Perl + Net::Async::HTTP/0.44mݓg]c!E@anon-20191002_181700-572:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3AoVQNUOKTLPP127.0.0.1Perl + Net::Async::HTTP/0.44mo]c!E@anon-20191002_181700-571:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZtenpSU0owLTh4TzN1cHYKMDAyZnNpZ25hdHVyZSDiWFT3klxj88vNBsLCjqT8GDKcN8wxFyYx9eFMHPUqMgoLDVXZXQHTM127.0.0.1Perl + Net::Async::HTTP/0.44m[҃]c!E@anon-20191002_181700-570:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERHKjBKYnhZTG1CaTJCPTAKMDAyZnNpZ25hdHVyZSCNxW0a6Z0aMBLbibwSfJ6u6IgWUIn24gG9BJ6O_LjgxQoECXFORDQSP127.0.0.1Perl + Net::Async::HTTP/0.44m/5]c!E@anon-20191002_181700-569:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1JajQ3eVlsaz1KSkB3Z0sKMDAyZnNpZ25hdHVyZSBJ0pXv33zXud5WIWZxakJyNTuHEfpcSvZIrVz2X5EhgQoQUJKINDXXQ127.0.0.1Perl + Net::Async::HTTP/0.44my ]c!E@anon-20191002_181700-568:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNxLVhQSytpZ2l4TzUrUkkKMDAyZnNpZ25hdHVyZSD8GBJ61yWvVzupVRPpLU9XytkQjpRIzWu0cz05XMDb3AoIRGUUINXHF127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-567:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFJKSFB3SWV-NDFPNWsmYXkKMDAyZnNpZ25hdHVyZSCwdkwCv5XDIe42VeVWSP0R_KLxFuqL_U_c_9aHqGsUPQoXHVOSXRUNL127.0.0.1Perl + Net::Async::HTTP/0.44m濃 ]c!E@anon-20191002_181700-566:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDUwJnIuaFpvdmFNUUtJb2kKMDAyZnNpZ25hdHVyZSDMRuf1Y8ovyF0zkExZAYomU6o_MWstpPjcer79awFYxgoQBBGHXSEKF127.0.0.1Perl + Net::Async::HTTP/0.44mԚ ]c!E@anon-20191002_181700-565:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNjcytPY1ZYJlBPJjRQUTgKMDAyZnNpZ25hdHVyZSA9Xt33HDtqqecvq81rd5M3xjHKpWQNEY0TFwAuOQhEMAoMSICJQZBGX127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-564:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAyaGd4RFg1aXF3Y1NTOCoKMDAyZnNpZ25hdHVyZSAwQPNXiRC2mp4b9i7ENpsO7oCS8ZbCCyLQ_eEybUsK8QoJAGAKQJOKZ127.0.0.1Perl + Net::Async::HTTP/0.44mܭn  w kgeQac$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2941}{"auth_events": ["$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA", "$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "prev_events": ["$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "type": "m.room.power_levels", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"users": {"@anon-20191002_181700-565:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043119511, "hashes": {"sha256": "ZpewjeJUxCSZj2xzKmqXyMRl9ZcGWsxPoUk1TYLV8h4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5GuyZRvFFGVo7tk3JJLl6BbKtNijuI1z4bkRvH2NWDUgECCHSS94Y68Vfig1DPYfTPuXO+WFSm674thyoFaZDg"}}, "unsigned": {"age_ts": 1570043119511}}vfeQay$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2940}{"auth_events": ["$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA"], "prev_events": ["$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA"], "type": "m.room.member", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-565", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-565:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043118932, "hashes": {"sha256": "aeKwgaPHJGgWlX+pVduwlVrdZFw0W8GoINpRWIQwSDs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FWsMLzbxumNp4oZyZC2OC/O4PzlHF9lbqPs4oPldsfY6zQGpmyV4y2qwvnXvs4JYmpOTh+YWA6tskXrSqUxIAA"}}, "unsigned": {"age_ts": 1570043118932}}ieeQa_$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2939}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-565:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043118234, "hashes": {"sha256": "RVpC0YaEmKWCfcOiP3pyk9K1dIGSQUFz35Nj1qc6aGU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8wnysGgFdhD0vcmeoWJCKwF4kTCL12I89WQC7YKcKdCgm4eE8V3a8NYq5RqKMGm+5mR7xl4rmzcDg+MjBeXOBw"}}, "unsigned": {"age_ts": 1570043118234}}deQa$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800{"token_id": 547, "stream_ordering": 2938}{"auth_events": ["$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc", "$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw", "$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g"], "prev_events": ["$sRTqDrGLmRR5f-4uCYyExDCOpMvaI19n_Q1CtUcipzc"], "type": "m.room.history_visibility", "room_id": "!aSKNKSGXPGoIbSrbEN:localhost:8800", "sender": "@anon-20191002_181700-564:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043116117, "hashes": {"sha256": "lmgaEwvwG9RT7UN7qQtShdzLvEAwu6VLLEc0tXAYCnc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SmHopyEWOEeO/S3KixM/cRUcoj46VGitRHRoRc1dcqUCBujS/EU5rGM2/QyZg/RsqeRQowQSIFjwndOGe5tdAA"}}, "unsigned": {"age_ts": 1570043116117}} a} { y w u sqomkigeca~yeeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~xeeQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~weeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800~veeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~ueeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800~teeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800~seeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~reeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800~qeeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800~peeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~oeeQ$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800~neeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800~meeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~leeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800~keeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800~jeeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~ieeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800~heeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800~geeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~feeQ$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800~eeeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800~deeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~ceeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800~beeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800~aeeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~`eeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800~_eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc!hegUPDZCEEmBhsNJJR:localhost:8800~^eeQ$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~]eeQ$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800~\eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-g!aSKNKSGXPGoIbSrbEN:localhost:8800~[eeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw!aSKNKSGXPGoIbSrbEN:localhost:8800 L X &  ^' , e3m ; s A R LyG M  xS! Y _ -j8 ~ r@ F 1e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1e$Dah6SWCP-qQeRFJfm7Zc7vaKyarQT5L_LmQZhxHgqQY W1e$E-3YuTHTVztq6NGgvJEPeo31E8ZgRh0X2ojAtGZVpeM1e$Dvm7mHzR1w5x3kIRoi4J9EkQovaOx46RXApIWjCoXJc1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI 1e$Dq3I6_godGCCPOqQ2DObv2FwV-ipLjuOndExhNLsHGs1e$DG78PntinFKNU9QHcHqwLdZHC-JGItZ7VWZ9cFcKcio 1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ 1e$DpOKmWvYGzB1rp_V4UtNTyoH_g4KwlMRRAGIo60xxZ01e$Dkt5If4aDZ7uWSnDSwGku-NqSAVg33SdPaHCqfXI-BAM1e$DkGyVFtmEjLhMmRrKKA8qWr1JmYPrNZSU9-oY21qoaY1e$DggYA8zNhoqRulGXtNLueUfpBEnTOBpKmg3cwIDFBpM1e$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ1e$DbD_I78XHhQOvRRVbhJ2TyyaKK0BNfFl1ropth9aJPw1e$DY7NKs2Nd_nIZOdKda6ENAkggzMuc96NIz-0KwO28RQa1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DXzFVHl4NA34qMXFJ9C4aPF9zzL0q0TIyTSuqrTbZ9o1e$DWUPzyHBwGcNDAh/M9g9Soj1EveyPl6wqMvJn0B7UKA B1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c1e$DV0bTqQjYY_1Lh2C4pe7DUieixz3dHJsyfPX_aQUM0c1e$DTy-jB3UhHW9RlBUmxknUfWPW04xKAHyo4w8JR0B9kA1e$DN5qPvaAP-ZBYpcWYYNw3Jzunm0OzcdNVXTWKUaNIqc%1e$DL9MLV4E9vdlynP-0B9jBV_IND-z1_2neVgWaUhUDGA71e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk1e$DItaXS3-klbiPsTPkK7oEzhY-U0ztiXTEEPxZjUNJlg1e$DFHUKU011MQ-IImIC8NoGRQiy0XsWCYXBUbgYq2mMPAL1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM:1e$D9dqGLeBjbQpQlJeTG019WAoWQ9RzPqc9mO_LNY_u0MV1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU A1e$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM1e$D4zhA39EbnyrEeoWKqwNfo_M6C9Ua47Lvin5l53PfuQ1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR4/1e$D4Jh9KqCMlQJbpdsmlZgBBiNXGNf0B25R_OOOTDdiiIY1e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ0e$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_ZxoP1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY0e$CuigLJ4SYMxEcTMzugbJUlkkHR4HdNdiLl4nm0JS-Eg}1e$CpmuKuBawniz37rLg61-x52PBVoDt4xaM1MPXIvSmiIM1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c0e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE0{1e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTE1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48O1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4r1e$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY 1e$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE '1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 1e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 1e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI 1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE 1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU d1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo [1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc 1e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_701e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ 1e$EADVE-BBeGfuW8wx8xGbUgotu9YUoBlrffTanexYL981e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU0e$E5TrW4XZrxo4onn_0qTsWCHfj0fawiEoSPa47irhLjka1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYZ1e$E29IOKEK8W1wrEeEAaBbEggMxekEBt4moJzXyYneNWk1e$E10P_JGr3w2av5kdYDxP-j9EUH-4ny4xDcyjEuYfaIMx1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico #  7 k 9md]c@anon-20191002_181700-587:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZkbF55WkZFfm14dyNfa2YKMDAyZnNpZ25hdHVyZSBLYH3CJ0T1Q3BRGeLp6D6Nr0P_DWeASmh9STN8_fvomwo127.0.0.1 d]c@anon-20191002_181700-578:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwo127.0.0.1d]c@anon-20191002_181700-586:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRCVnBqMEBRaGZtWjdTZEYKMDAyZnNpZ25hdHVyZSApW_9ygROP-xkvgLFU8SCjdYJi_4WNmFICdZ7S6MH60Qo127.0.0.1d]c@anon-20191002_181700-585:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVCS3BRQDJqeU1BRE9oPTUKMDAyZnNpZ25hdHVyZSC2VSzsdjWxC0I8UyNUBZp8kSpBgQTjCYiVQLs2_Z2zGQo127.0.0.1d]c@anon-20191002_181700-584:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZPJkF4RnUtYVF-MDFTb1oKMDAyZnNpZ25hdHVyZSDOsredtu5HxxLeGWlpO64Nf5DkwOHlWzJV5qsXYtmkpgo127.0.0.1d]c@anon-20191002_181700-583:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAo127.0.0.1d]c@anon-20191002_181700-582:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-go127.0.0.1d]c@anon-20191002_181700-581:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7Qo127.0.0.1d]c@anon-20191002_181700-580:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAo127.0.0.1a[a@anon-20191002_181700-57:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYjdvLFJEd1ImVHZlWHNSKgowMDJmc2lnbmF0dXJlIJ-o2mjOwtb0X4kejDUwf-TITge7vg6zCWfUmLuJeEVKCg127.0.0.10d]c@anon-20191002_181700-579:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewo127.0.0.1 xL / [xO-d]c@anon-20191002_181700-700:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY5V2M2YnM6Nm5NJmg4SzoKMDAyZnNpZ25hdHVyZSD2H-fLXFMXpaFQcFyMxL9JFAeONbItYVwmt1eGsB3krwo127.0.0.1ɂd]c@anon-20191002_181700-688:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQo127.0.0.1@a[a@anon-20191002_181700-59:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gTythSEl5ZEx5VFY2STJIeAowMDJmc2lnbmF0dXJlILVNRWxCrUBQlKFZv5-jFfvaZJiV8CodmOoO-VN9353GCg127.0.0.12kd]c@anon-20191002_181700-678:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN1TlAwWG82Wjk9TmJMRDcKMDAyZnNpZ25hdHVyZSDHdjUIYdq9G8F0xDwxNNiGp10yY1jHP_5lfgbrygQQEAo127.0.0.1vd]c@anon-20191002_181700-667:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgo127.0.0.1k͂d]c@anon-20191002_181700-656:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAo127.0.0.1`bd]c@anon-20191002_181700-645:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQo127.0.0.1Ud]c@anon-20191002_181700-634:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAo127.0.0.1JSd]c@anon-20191002_181700-622:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygo127.0.0.1?+d]c@anon-20191002_181700-611:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBNYXI7KmtYMio1cF5wU2oKMDAyZnNpZ25hdHVyZSC6faRL5gRMDSrt3JVQXVAJk41B5lf4mWNReFXR91OndAo127.0.0.16d  vkeQay$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2945}{"auth_events": ["$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA"], "prev_events": ["$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA"], "type": "m.room.member", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-566", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-566:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043123704, "hashes": {"sha256": "6wYLO/JVfTQEiCe9HJqVK4CYaMyQhK0xcNiodzc/9n0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rKMMyF1Mxtd2Pevqo6EeTDveEojZXPZFDaLjzFXc7xGlQ6stIx2EfPlI2NQ4VASmUWOgsuA1uzAKHtoVP4uTCA"}}, "unsigned": {"age_ts": 1570043123704}}ijeQa_$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800{"token_id": 549, "stream_ordering": 2944}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!gXfXRDTXeVvOHQdaaQ:localhost:8800", "sender": "@anon-20191002_181700-566:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-566:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043122934, "hashes": {"sha256": "yrvna9fE/Xu3JIv566+tpsoSIiPBt6YocOFCh7RoqOk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "W7Jolg4NKOG7gVWHdk8IOFFWDGKs5INt5Ubjc56PE3UfLEqFH6rOS1Xn4e5kHfnQJ8nMym0dudVeckly+qqEDw"}}, "unsigned": {"age_ts": 1570043122934}}ieQa$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2943}{"auth_events": ["$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk", "$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA", "$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "prev_events": ["$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g"], "type": "m.room.history_visibility", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043121245, "hashes": {"sha256": "6zvpa+dBQuyixhr4Y1OVyNOyGHZ2VCS5QZXj1Nz3ZD8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9JY2JjBFk4XuSmN3wpI0qbQiEcBRRKCPhdccWYooxbT67uJZDmXUuNwJl1W+FLwYzhAcxuhbNcFvWS4vbNc4DA"}}, "unsigned": {"age_ts": 1570043121245}}theQau$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800{"token_id": 548, "stream_ordering": 2942}{"auth_events": ["$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk", "$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA", "$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc"], "prev_events": ["$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk"], "type": "m.room.join_rules", "room_id": "!hegUPDZCEEmBhsNJJR:localhost:8800", "sender": "@anon-20191002_181700-565:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043120286, "hashes": {"sha256": "LxsYUMiMxWprSluTc/c4EFt7CHSlKcllOJJJGBTRm54"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yBgn9nAPtH2O+qHLgNK1RErgV58PAwSfwjMZabnS0957nn81kIVv/7r6O7LMyIcqhjeHSCOFm4zf1f2vQl8dBg"}}, "unsigned": {"age_ts": 1570043120286}} ~z v r n j fb^ZVRN^k}QQQ$1570043154263raEaa:localhost:8800$1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800k|QQQ$1570043153262hRyOa:localhost:8800$1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800k{QQQ$1570043152261Skczg:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800kzQQQ$1570043152260dkyqc:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800kyQQQ$1570043151259knbjg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800xeeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800weeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800veeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800ueeQ$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800teeQ$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800seeQ$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800reeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800qeeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800peeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800oeeQ$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800neeQ$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800meeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800leeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800keeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800jeeQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800ieeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800heeQ$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800geeQ$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800feeQ$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800eeeQ$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs!rWmvvGBgmFMdVvcfPk:localhost:8800deeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0!gXfXRDTXeVvOHQdaaQ:localhost:8800ceeQ$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo!gXfXRDTXeVvOHQdaaQ:localhost:8800beeQ$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0!gXfXRDTXeVvOHQdaaQ:localhost:8800aeeQ$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA!gXfXRDTXeVvOHQdaaQ:localhost:8800`eeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g!hegUPDZCEEmBhsNJJR:localhost:8800_eeQ$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk!hegUPDZCEEmBhsNJJR:localhost:8800 Ld0`, \ ( X $ T P & ~ T PL|HxDt@ p<l8h41&e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1%e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 1$e$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs 1#e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1"e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww 1!e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1 e$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4 1e$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU 1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk 1e$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM 1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII 1e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY 1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A 1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1 e$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg 1 e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1 e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1 e$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc 1 e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w 1e$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw 1e$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac 1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1~e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU 1}e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y '|Q$1570043154263raEaa:localhost:8800 '{Q$1570043153262hRyOa:localhost:8800 'zQ$1570043152261Skczg:localhost:8800 'yQ$1570043152260dkyqc:localhost:8800 'xQ$1570043151259knbjg:localhost:8800 'wQ$1570043150258cdaXl:localhost:8800 1ve$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg 1ue$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg 1te$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 1se$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 1re$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1qe$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1pe$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE 1oe$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1ne$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk 1me$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 1le$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM 1ke$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI 1je$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q 1ie$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk 1he$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ 1ge$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M 1fe$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0 1ee$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA 1de$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q 1ce$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk 1be$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU 1ae$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 1`e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo 1_e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs 1^e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA 1]e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 1\e$XoE1f_Ru3WrgBz3TXa53UH30TIyd6NQqXxC4V26PRdo 1[e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 -K.`m z ) H U  b  q =J 8er!KZ ]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZ(P]Q@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800P]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800@]1@anon-20191002_181700-617:localhost:8800!0:localhost:42455P]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800P]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800P]Q@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800P]Q@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800P]Q@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800P]Q@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800P]Q@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800P]Q@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800@]1@anon-20191002_181700-651:localhost:8800!0:localhost:41985@]1@anon-20191002_181700-650:localhost:8800!0:localhost:44405N[Q@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800$@]1@anon-20191002_181700-649:localhost:8800!0:localhost:37265@]1@anon-20191002_181700-648:localhost:8800!8:localhost:42455@]1@anon-20191002_181700-647:localhost:8800!7:localhost:42455P]Q@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800P]Q@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800P]Q@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800P]Q@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800@]1@anon-20191002_181700-642:localhost:8800!6:localhost:42455P]Q@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800P]Q@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800N[Q@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800"P]Q@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800P]Q@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800P]Q@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800P]Q@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800P]Q@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800P]Q@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800P]Q@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800P]Q@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800@]1@anon-20191002_181700-632:localhost:8800!5:localhost:42455N[Q@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800!P]Q@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800P]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800P]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800P]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800P]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800P]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800P]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800P]Q@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800N[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800 P]Q@anon-20191002_181700-613:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800 L^ h  q # {&69NL,e?Q ]$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgm.room.history_visibility!fdEymmlcUvjgshvVyl:localhost:8800m;jm<@anon-20191002_181700-570:localhost:8800$e/Q ]$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgm.room.join_rules!fdEymmlcUvjgshvVyl:localhost:8800m9m9@anon-20191002_181700-570:localhost:8800&e3Q ]$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4m.room.power_levels!fdEymmlcUvjgshvVyl:localhost:8800m6am7m@anon-20191002_181700-570:localhost:8800 e'Q ]$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgom.room.member!fdEymmlcUvjgshvVyl:localhost:8800m2m4M@anon-20191002_181700-570:localhost:8800 e'Q  ]$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYm.room.create!fdEymmlcUvjgshvVyl:localhost:8800m/m0@anon-20191002_181700-570:localhost:8800!e)Q ]$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0om.room.message!xcdNyJNFEdaBGFycsB:localhost:8800m+Rm+V@anon-20191002_181700-569:localhost:8800!e)Q ]$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGEm.room.message!xcdNyJNFEdaBGFycsB:localhost:8800m(&m(*@anon-20191002_181700-569:localhost:8800,e?Q ]$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0om.room.history_visibility!xcdNyJNFEdaBGFycsB:localhost:8800m"m$@anon-20191002_181700-569:localhost:8800$e/Q ]$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkm.room.join_rules!xcdNyJNFEdaBGFycsB:localhost:8800m m @anon-20191002_181700-569:localhost:8800&e3Q ]$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0m.room.power_levels!xcdNyJNFEdaBGFycsB:localhost:8800m&m2@anon-20191002_181700-569:localhost:8800 e'Q ]$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMm.room.member!xcdNyJNFEdaBGFycsB:localhost:8800mmw@anon-20191002_181700-569:localhost:8800 e'Q  ]$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIm.room.create!xcdNyJNFEdaBGFycsB:localhost:8800m<m&@anon-20191002_181700-569:localhost:8800!e)Q ]$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Qm.room.message!SUDzkfFBgpuCANOxRS:localhost:8800mm@anon-20191002_181700-568:localhost:8800,e?Q ]$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRskm.room.history_visibility!SUDzkfFBgpuCANOxRS:localhost:8800m xm@anon-20191002_181700-568:localhost:8800$e/Q ]$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQm.room.join_rules!SUDzkfFBgpuCANOxRS:localhost:8800m m v@anon-20191002_181700-568:localhost:8800& e3Q ]$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Mm.room.power_levels!SUDzkfFBgpuCANOxRS:localhost:8800mm@anon-20191002_181700-568:localhost:8800 e'Q ]$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0m.room.member!SUDzkfFBgpuCANOxRS:localhost:8800mmy@anon-20191002_181700-568:localhost:8800  e'Q  ]$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRAm.room.create!SUDzkfFBgpuCANOxRS:localhost:8800mm1@anon-20191002_181700-568:localhost:8800! e)Q ]$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Qm.room.message!rWmvvGBgmFMdVvcfPk:localhost:8800mm@anon-20191002_181700-567:localhost:8800, e?Q ]$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIkm.room.history_visibility!rWmvvGBgmFMdVvcfPk:localhost:8800mWm@anon-20191002_181700-567:localhost:8800$e/Q ]$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBUm.room.join_rules!rWmvvGBgmFMdVvcfPk:localhost:8800mmu@anon-20191002_181700-567:localhost:8800&e3Q ]$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8m.room.power_levels!rWmvvGBgmFMdVvcfPk:localhost:8800mm@anon-20191002_181700-567:localhost:8800 e'Q ]$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieom.room.member!rWmvvGBgmFMdVvcfPk:localhost:8800mml@anon-20191002_181700-567:localhost:8800 e'Q  ]$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVsm.room.create!rWmvvGBgmFMdVvcfPk:localhost:8800mmm@anon-20191002_181700-567:localhost:8800  seQa$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2953}{"auth_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8", "$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU"], "type": "m.room.history_visibility", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043130711, "hashes": {"sha256": "9ud4tP91hGjgNj0uTlNsfhQ4huPPn8ggJ3pTpRH8BYY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dtBabbuTgkxnmGG/H+sc8KhDr1eGOutWbb9iLHrL5IEsRA3CeHtP+KooBRPy7OfXu5d3qfq2gDQO6eR9RaBGBg"}}, "unsigned": {"age_ts": 1570043130711}}treQau$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2952}{"auth_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8", "$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8"], "type": "m.room.join_rules", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043130017, "hashes": {"sha256": "GJhngHefISG/IDhtwrUQtf0Ltujp0fgysoxiJXDMBec"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CJJxhmvJF3sv8b2GfnizWGKOBQQDwBoz1VEKPijlHdHp4/zwsuCSivt4Y1t4r6rm5hsoovD1Fxj+zp2kr7q0Dg"}}, "unsigned": {"age_ts": 1570043130017}}kqeQac$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2951}{"auth_events": ["$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "type": "m.room.power_levels", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"users": {"@anon-20191002_181700-567:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043129311, "hashes": {"sha256": "WxlSEn6jDEgZzbgiCpeUs7rT0jjXNht8BluPvbn/SUs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L1YC4C/JgLHg9gbJSHgl8+0z2ixjA6F28Guz+OL1K27/5T2N5Ayjtq06NvjeckI0ZX48sRqeOGYTkkfmp0iTBg"}}, "unsigned": {"age_ts": 1570043129311}}vpeQay$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "stream_ordering": 2950}{"auth_events": ["$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs"], "prev_events": ["$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs"], "type": "m.room.member", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-567", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-567:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043128596, "hashes": {"sha256": "sfNCjoKG0gH5RiaTAMPZqvjfNsOkS09teCFp1zyuaJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0zQ/7V7N5AvuhBlr034s08C0vlZwA8jibcOMxWjbB/ZhlVt1WD9jm0vUOv0ecwDK3arR1joiNNGEB1QGvhVGDQ"}}, "unsigned": {"age_ts": 1570043128596}} FIY,twId6 ~ P " k =  W ) r D  ^ 0 yKf8 R$m?`2{M-]@anon-20191002_181700-639:localhost:8800 -]@anon-20191002_181700-638:localhost:8800 -]@anon-20191002_181700-637:localhost:8800 .-]@anon-20191002_181700-635:localhost:8800 -]@anon-20191002_181700-634:localhost:8800 -]@anon-20191002_181700-633:localhost:8800 -]@anon-20191002_181700-632:localhost:8800 ,[@anon-20191002_181700-62:localhost:8800-]@anon-20191002_181700-629:localhost:8829 -]@anon-20191002_181700-715:localhost:8800 -]@anon-20191002_181700-714:localhost:8800 -]@anon-20191002_181700-713:localhost:8800 -]@anon-20191002_181700-712:localhost:8800 -]@anon-20191002_181700-711:localhost:8800 -]@anon-20191002_181700-710:localhost:8800 ,[@anon-20191002_181700-70:localhost:8800-]@anon-20191002_181700-708:localhost:8800 -]@anon-20191002_181700-706:localhost:8800 -]@anon-20191002_181700-704:localhost:8800 -]@anon-20191002_181700-702:localhost:8800 -]@anon-20191002_181700-701:localhost:8800 -]@anon-20191002_181700-700:localhost:8800 -]@anon-20191002_181700-698:localhost:8800 -]@anon-20191002_181700-691:localhost:8800 -]@anon-20191002_181700-690:localhost:8800 ,[@anon-20191002_181700-68:localhost:8800-]@anon-20191002_181700-685:localhost:8800 -]@anon-20191002_181700-684:localhost:8800 -]@anon-20191002_181700-683:localhost:8800 -]@anon-20191002_181700-682:localhost:8800 -]@anon-20191002_181700-681:localhost:8800 -]@anon-20191002_181700-680:localhost:8800 ,[@anon-20191002_181700-67:localhost:8800-]@anon-20191002_181700-679:localhost:8800 -]@anon-20191002_181700-678:localhost:8800 -]@anon-20191002_181700-677:localhost:8800 -]@anon-20191002_181700-676:localhost:8800 -]@anon-20191002_181700-675:localhost:8800 -]@anon-20191002_181700-674:localhost:8800 -]@anon-20191002_181700-673:localhost:8800 -]@anon-20191002_181700-672:localhost:8800 -]@anon-20191002_181700-671:localhost:8800 {-]@anon-20191002_181700-670:localhost:8800 p,[@anon-20191002_181700-66:localhost:8829-]@anon-20191002_181700-669:localhost:8800 g-]@anon-20191002_181700-668:localhost:8800 d-]@anon-20191002_181700-668:localhost:8800 _-]@anon-20191002_181700-667:localhost:8800 K-]@anon-20191002_181700-666:localhost:8800 E-]@anon-20191002_181700-665:localhost:8800 ?-]@anon-20191002_181700-664:localhost:8800 9-]@anon-20191002_181700-663:localhost:8800 3-]@anon-20191002_181700-662:localhost:8800 *-]@anon-20191002_181700-661:localhost:8800 )-]@anon-20191002_181700-660:localhost:8800 ,[@anon-20191002_181700-65:localhost:8800-]@anon-20191002_181700-659:localhost:8800 -]@anon-20191002_181700-658:localhost:8800 -]@anon-20191002_181700-657:localhost:8800 -]@anon-20191002_181700-656:localhost:8800 -]@anon-20191002_181700-655:localhost:8800 -]@anon-20191002_181700-654:localhost:8800 -]@anon-20191002_181700-653:localhost:8800 -]@anon-20191002_181700-652:localhost:8800 ,[@anon-20191002_181700-64:localhost:8800-]@anon-20191002_181700-646:localhost:8800 -]@anon-20191002_181700-645:localhost:8800 -]@anon-20191002_181700-644:localhost:8800 -]@anon-20191002_181700-643:localhost:8800 -]@anon-20191002_181700-642:localhost:8800 -]@anon-20191002_181700-641:localhost:8800 -]@anon-20191002_181700-640:localhost:8800 ,[@anon-20191002_181700-63:localhost:8800 $R,1 Y d " - [ J *X!MRgfeQ3 $cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels eeQ']$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800joinadeQ' $zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800m.room.createmceQ? $zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibilityebeQ/ $VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rulesgaeQ3 $NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels `eQ']$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800joina_eQ' $-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800m.room.createm^eQ? $MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibilitye]eQ/ $6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rulesg\eQ3 $PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels [eQ']$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800joinaZeQ' $UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.createdXeQ- $zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone[WQQ/ $1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rulescVQQ? $1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility]UQQ3 $1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access]TQQ3 $1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levelsSQQ']$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800joinWRQQ' $1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.createmQeQ? $hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibilityePeQ/ $K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rulesgYeQ3 $l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels NeQ']$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800joinaMeQ' $ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800m.room.createmLeQ? $AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibilityeKeQ/ $sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rulesgJeQ3 $6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels IeQ']$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800joinaHeQ' $3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800m.room.createmGeQ? $yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibilityeFeQ/ $oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800m.room.join_rulesgEeQ3 $KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800m.room.power_levels DeQ']$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800m.room.member@anon-20191002_181700-568:localhost:8800joinaCeQ' $TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800m.room.createmBeQ? $H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk!rWmvvGBgmFMdVvcfPk:localhost:8800m.room.history_visibility  z kweQac$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2957}{"auth_events": ["$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "type": "m.room.power_levels", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"users": {"@anon-20191002_181700-568:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043135714, "hashes": {"sha256": "RBgYIkpFygXlQvONXMDNE1fWPT+vT2okPC4uQ27oHO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fnE6ChVlZgtGgyGBb5GAGS0WME6lYA69aPyEiO149J+nNBv4cZi4lP4XnO4hmYtlIbb61YjwYxlHUmX08ae8AQ"}}, "unsigned": {"age_ts": 1570043135714}}vveQay$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2956}{"auth_events": ["$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA"], "prev_events": ["$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA"], "type": "m.room.member", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-568", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-568:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043135001, "hashes": {"sha256": "MlNVPu1A9LB9HzeaMyeb/X7Vj1wiNqMTUp3DaKJREj8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5kBfcgo1dfbQSTSbi5lEyznNgBU3MSmzcMP+h3MCFhmKCoqi2t0Tu5iSxAp7ArbUoweL9ouPbuA2dbKZgGVhCg"}}, "unsigned": {"age_ts": 1570043135001}}iueQa_$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2955}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-568:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043133883, "hashes": {"sha256": "7phqXB9UXPsAg9D50HXpzQnQ87smN++CjgqDu30jlNE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p6qiPaGjGjd438Kf4/H4Xo1lY68KTEgrtPtLzybT352XBo6dnK4AehGf5WamTiyCxogguEBX+aoB9NwpPmLQBA"}}, "unsigned": {"age_ts": 1570043133883}}teQm$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800{"token_id": 550, "txn_id": "532", "stream_ordering": 2954}{"auth_events": ["$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8", "$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs", "$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo"], "prev_events": ["$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk"], "type": "m.room.message", "room_id": "!rWmvvGBgmFMdVvcfPk:localhost:8800", "sender": "@anon-20191002_181700-567:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043132365, "hashes": {"sha256": "1REPmtI/DVIq3MHa0paH3axSSyMfei3O1WD+pjkZ9Bs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w31DcSuk+cE0+NgnCvIXngIZ0fRkhr5xtd0qzzlla84wRLWAMa9M1z+5jFMANUxRL4+0X8AFkzenk/XPL1D7DQ"}}, "unsigned": {"age_ts": 1570043132365}} $S(- Q \  O h >p {3>h+ScGQ' e !iLHJbsFszubrnybDNz:localhost:8800m.room.create$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8oFQ? e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibility$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIgEQ/ e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rules$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIiDQ3 e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY CQ']e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIcBQ' e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.create$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwoAQ? e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibility$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIg@Q/ e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rules$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wi?Q3 e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c >Q']e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAc=Q' e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.create$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwo<Q? e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibility$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkg;Q/ e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rules$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOaci:Q3 e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 9Q']e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4c8Q' e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.create$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y_7Q3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels$1570043156264uvwRa:localhost:8800i6Q3 e !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU]5Q/ Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rules$1570043154263raEaa:localhost:8800e4Q? Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility$1570043153262hRyOa:localhost:8800_3Q3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access$1570043152261Skczg:localhost:8800_2Q3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels$1570043152260dkyqc:localhost:88001Q']Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$1570043151259knbjg:localhost:8800Y0Q' Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.create$1570043150258cdaXl:localhost:8800f/Q- e !fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Yo.Q? e !fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibility$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgg-Q/ e !fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rules$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgi,Q3 e !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 +Q']e !fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgoc*Q' e !fdEymmlcUvjgshvVyl:localhost:8800m.room.create$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYo)Q? e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.history_visibility$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0og(Q/ e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.join_rules$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krki'Q3 e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.power_levels$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0 &Q']e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.member@anon-20191002_181700-569:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMc%Q' e !xcdNyJNFEdaBGFycsB:localhost:8800m.room.create$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheIo$Q? e !SUDzkfFBgpuCANOxRS:localhost:8800m.room.history_visibility$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk l} { y w u sqomkig FljQQQ$1570043153262hRyOa:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152261Skczg:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152261Skczg:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152261Skczg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152260dkyqc:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043152260dkyqc:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043151259knbjg:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800~eeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800~eeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800~eeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~~eeQ$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800~}eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800~|eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA!SUDzkfFBgpuCANOxRS:localhost:8800~{eeQ$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M!SUDzkfFBgpuCANOxRS:localhost:8800~zeeQ$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0!SUDzkfFBgpuCANOxRS:localhost:8800  yi{eQa_$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2961}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-569:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043139900, "hashes": {"sha256": "TGUqlKyzTSTDhuxUw0aZUcYaCjGYB0pKrPJ322ZdbAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CF4rypwbPoqNp0B7yvNYaOZ/jjxACcIVVSu2Dl7ln7xsLkcbP+ScahjrGde745ErqcXPWWV1bWzUFTnR4al4Ag"}}, "unsigned": {"age_ts": 1570043139900}}zeQm$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "txn_id": "533", "stream_ordering": 2960}{"auth_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M", "$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk"], "type": "m.room.message", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043138784, "hashes": {"sha256": "tp9CC38mVKOl+a4sEz/iN8ROa7IFTRkgj2As9tMCMgI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AKXpZk27qauY86BB+22XOuZhoPdgD4mpXlksmRcSvMIHTmck2WrVEGAz3njvIB2W6xCgXJdHbVOMUPypa4wMBQ"}}, "unsigned": {"age_ts": 1570043138784}}yeQa$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2959}{"auth_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M", "$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ"], "type": "m.room.history_visibility", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043137400, "hashes": {"sha256": "FW/Qiru52gPgh9K/hPKmMb3xqfj0gCT1nPhd2EmzjWA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+rUDYiLLQTlI6GDZBIkzghGJUqHwmzjWAeWATwYziqMaPffQxmoOGWisxMCBJmkWPax81ezpHsg29GTVAZ1pCA"}}, "unsigned": {"age_ts": 1570043137400}}txeQau$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ!SUDzkfFBgpuCANOxRS:localhost:8800{"token_id": 551, "stream_ordering": 2958}{"auth_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M", "$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA", "$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0"], "prev_events": ["$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1M"], "type": "m.room.join_rules", "room_id": "!SUDzkfFBgpuCANOxRS:localhost:8800", "sender": "@anon-20191002_181700-568:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043136428, "hashes": {"sha256": "/sxUP9e+23XuEw0KA5INcLowCcrgWxbWB4js7u0B51E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l/ToKa8Els0eGdinqijgOYXHu38MMd6Pgwx/gY9pi4hikUOnXaK1utT73sq44i/hQ6S4b8sxt8sFSvN4rYEFAA"}}, "unsigned": {"age_ts": 1570043136428}} .RM H C > W p kfa \WRMHTmQe !hGsPmWXboxZZtOlsxY:localhost:8800$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQkTlQe !hGsPmWXboxZZtOlsxY:localhost:8800$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIITkQe !hGsPmWXboxZZtOlsxY:localhost:8800$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SITjQe !hGsPmWXboxZZtOlsxY:localhost:8800$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYTiQe !hGsPmWXboxZZtOlsxY:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIThQe !hGsPmWXboxZZtOlsxY:localhost:8800$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwTgQe !dvZnfJonDkxlrrDXUk:localhost:8800$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9ATfQe !dvZnfJonDkxlrrDXUk:localhost:8800$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkkTeQe !dvZnfJonDkxlrrDXUk:localhost:8800$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RETdQe !dvZnfJonDkxlrrDXUk:localhost:8800$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3IfmgTcQe !dvZnfJonDkxlrrDXUk:localhost:8800$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdMTbQe !dvZnfJonDkxlrrDXUk:localhost:8800$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4TaQe !dvZnfJonDkxlrrDXUk:localhost:8800$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKcT`Qe !dvZnfJonDkxlrrDXUk:localhost:8800$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIT_Qe !dvZnfJonDkxlrrDXUk:localhost:8800$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wT^Qe !dvZnfJonDkxlrrDXUk:localhost:8800$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0cT]Qe !dvZnfJonDkxlrrDXUk:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAT\Qe !dvZnfJonDkxlrrDXUk:localhost:8800$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwT[Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nsTZQe !vZGjXEXQoCaoUXnkCa:localhost:8800$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkTYQe !vZGjXEXQoCaoUXnkCa:localhost:8800$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacTXQe !vZGjXEXQoCaoUXnkCa:localhost:8800$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMTWQe !vZGjXEXQoCaoUXnkCa:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4TVQe !vZGjXEXQoCaoUXnkCa:localhost:8800$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6YTUQe !fdEymmlcUvjgshvVyl:localhost:8800$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUTTQe !fdEymmlcUvjgshvVyl:localhost:8800$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6YJSQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043154263raEaa:localhost:8800JRQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043153262hRyOa:localhost:8800JQQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152261Skczg:localhost:8800JPQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043152260dkyqc:localhost:8800JOQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043151259knbjg:localhost:8800JNQQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043150258cdaXl:localhost:8800TMQe !fdEymmlcUvjgshvVyl:localhost:8800$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgTLQe !fdEymmlcUvjgshvVyl:localhost:8800$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgTKQe !fdEymmlcUvjgshvVyl:localhost:8800$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4TJQe !fdEymmlcUvjgshvVyl:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgoTIQe !fdEymmlcUvjgshvVyl:localhost:8800$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYTHQe !xcdNyJNFEdaBGFycsB:localhost:8800$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0oTGQe !xcdNyJNFEdaBGFycsB:localhost:8800$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGETFQe !xcdNyJNFEdaBGFycsB:localhost:8800$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0oTEQe !xcdNyJNFEdaBGFycsB:localhost:8800$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krkTDQe !xcdNyJNFEdaBGFycsB:localhost:8800$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0TCQe !xcdNyJNFEdaBGFycsB:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMTBQe !xcdNyJNFEdaBGFycsB:localhost:8800$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheITAQe !SUDzkfFBgpuCANOxRS:localhost:8800$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4QT@Qe !SUDzkfFBgpuCANOxRS:localhost:8800$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk  eQa$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2965}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk"], "type": "m.room.history_visibility", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043142845, "hashes": {"sha256": "99M11FrcLKbJtA6bz8uLezUnMcJgB2Z7ZOLBIaO7Imo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MZzWYriXTi5odA3bsc/yWmYiFD9/9s0aHRgP+XzlI9byOGAOPgsuvaHcIbLAv0uETJQXzSrcmZTDw99gooR/BA"}}, "unsigned": {"age_ts": 1570043142845}}t~eQau$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2964}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0"], "type": "m.room.join_rules", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043142168, "hashes": {"sha256": "8F7duqy4G9/A7e/GtZwFOJGhcb9iw6J3Ws8KimyZsqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HVmXQSaGLE+jkvjKcWgwtqDhVSKwQDkljewyerj/mOx7WQHnHyoruDSXXfvCZ5EgbvUqAgSDMUBTLTrxLHKGDw"}}, "unsigned": {"age_ts": 1570043142168}}k}eQac$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2963}{"auth_events": ["$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "type": "m.room.power_levels", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"users": {"@anon-20191002_181700-569:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043141414, "hashes": {"sha256": "+ZjCERE5FwaMSHiBtIbUaphbWaweXyIM+fy3TJWO5tc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vxhZvypi+WuWpSs9geZ06GVywMaVrvXf6bypfdnDAL9nZb7UraMmW6GxQyBYXChjpeBNmYiWr/zCzzs4MdGOBQ"}}, "unsigned": {"age_ts": 1570043141414}}v|eQay$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "stream_ordering": 2962}{"auth_events": ["$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI"], "prev_events": ["$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI"], "type": "m.room.member", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-569", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-569:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043140883, "hashes": {"sha256": "3hhGDAKlFJh4wfogwZFWUhK7tBcqpZZj2YcFzIhq4CM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z2/UL2mvR7ZYwC36VezcxhHb9CHcNgbISsxKTPLKdZIA5SWayvTkA5aWSTDufOp4Ho8VtOjMKw+//C06664fBA"}}, "unsigned": {"age_ts": 1570043140883}} < Z x  Y w  $B`~ +Ig2P nE]@anon-20191002_181700-580:localhost:8800@anon-20191002_181700-580:localhost:8800 anon-20191002_181700-580nD]@anon-20191002_181700-579:localhost:8800@anon-20191002_181700-579:localhost:8800 anon-20191002_181700-579nC]@anon-20191002_181700-578:localhost:8800@anon-20191002_181700-578:localhost:8800 anon-20191002_181700-578nB]@anon-20191002_181700-577:localhost:8800@anon-20191002_181700-577:localhost:8800 anon-20191002_181700-577nA]@anon-20191002_181700-576:localhost:8800@anon-20191002_181700-576:localhost:8800 anon-20191002_181700-576n@]@anon-20191002_181700-574:localhost:8800@anon-20191002_181700-574:localhost:8800 anon-20191002_181700-574n?]@anon-20191002_181700-573:localhost:8800@anon-20191002_181700-573:localhost:8800 anon-20191002_181700-573n>]@anon-20191002_181700-572:localhost:8800@anon-20191002_181700-572:localhost:8800 anon-20191002_181700-572n=]@anon-20191002_181700-571:localhost:8800@anon-20191002_181700-571:localhost:8800 anon-20191002_181700-571n<]@anon-20191002_181700-570:localhost:8800@anon-20191002_181700-570:localhost:8800 anon-20191002_181700-570n:]@anon-20191002_181700-568:localhost:8800@anon-20191002_181700-568:localhost:8800 anon-20191002_181700-568n9]@anon-20191002_181700-567:localhost:8800@anon-20191002_181700-567:localhost:8800 anon-20191002_181700-567n8]@anon-20191002_181700-566:localhost:8800@anon-20191002_181700-566:localhost:8800 anon-20191002_181700-566n7]@anon-20191002_181700-565:localhost:8800@anon-20191002_181700-565:localhost:8800 anon-20191002_181700-565n6]@anon-20191002_181700-564:localhost:8800@anon-20191002_181700-564:localhost:8800 anon-20191002_181700-564n5]@anon-20191002_181700-563:localhost:8800@anon-20191002_181700-563:localhost:8800 anon-20191002_181700-563n4]@anon-20191002_181700-562:localhost:8800@anon-20191002_181700-562:localhost:8800 anon-20191002_181700-562n3]@anon-20191002_181700-561:localhost:8800@anon-20191002_181700-561:localhost:8800 anon-20191002_181700-561=n2]@anon-20191002_181700-558:localhost:8800@anon-20191002_181700-558:localhost:8800 anon-20191002_181700-558n1]@anon-20191002_181700-557:localhost:8800@anon-20191002_181700-557:localhost:8800 anon-20191002_181700-557n/]@anon-20191002_181700-554:localhost:8800@anon-20191002_181700-554:localhost:8800 anon-20191002_181700-554n.]@anon-20191002_181700-553:localhost:8829@anon-20191002_181700-553:localhost:8829 anon-20191002_181700-553n-]@anon-20191002_181700-552:localhost:8800@anon-20191002_181700-552:localhost:8800 anon-20191002_181700-552n,]@anon-20191002_181700-551:localhost:8800@anon-20191002_181700-551:localhost:8800 anon-20191002_181700-551n+]@anon-20191002_181700-550:localhost:8800@anon-20191002_181700-550:localhost:8800 anon-20191002_181700-550n*]@anon-20191002_181700-549:localhost:8800@anon-20191002_181700-549:localhost:8800 anon-20191002_181700-549n;]@anon-20191002_181700-569:localhost:8800@anon-20191002_181700-569:localhost:8800 anon-20191002_181700-569 -NC 8 7 J S H=2'uj_TIV)eL$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTssha256cvM|HOJip3/M;V(eL$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMsha256yAW /TAz˅mw1V'eL$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKEsha256"ءsG8T+U;";ȡV&eL$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQksha256FPِss4yExi't} V%eL$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIsha256`I :E' ҋHKFkG 8 VeL$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwsha256oQ؂_Zep.un|VeL$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nssha256 tm#!}bfk;@({VeL$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavksha2562zKYd9) 7Iq lQ9jVeL$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacsha256Y3zVeхp\K )_9VeL$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMsha256=(rf+5(b^qc1VeL$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4sha256 '{ ځS?۾2~VeL$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Ysha256PoH`Dc<7+N$0_)$ǦVeL$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUsha256["'0oE"8ieϙV eL$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Ysha256̲AB5h4K2鱎LQL$1570043150258cdaXl:localhost:8800sha2563XqFmco|Q+3c_>VeL$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkgsha256$Gk1ivf 4B՚SNHVeL$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgsha256+`ROaRdBD%mI3 VeL$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4sha256%E"HZOHD|Pj*QsxnVeL$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgosha256Juީrå 2ƚd}cY VeL$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqYsha2564X$Wh'j*j ]VeL$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0osha256,qnF!:$1%%ș eĭ JVeL$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGEsha256g.1TRc?v72(Q)aVeL$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0osha256t"$#J3Vra9EV 8gΪJV~eL$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krksha256Q >12*+5SmyV}eL$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0sha256!u R5s:V|𻜏SU}  ] l U d  ME = 5-|%t  eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800 ]eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ$6hoWnhAAekUETkRHrAvEtFhrx06CeEVW1zMxmu23PiM!pJUItjYTOUJQFIxyiX:localhost:8800 beeQ$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik!cosGKKhHvKaVukBCic:localhost:8800eeQ$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C20$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8!TWETXUgfFZafDdbqLS:localhost:8800 eeQ$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI4$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U!RSLvuCuAqKQQrKCxNq:localhost:8800 4eeQ$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U!BoyzlWNkRPncpDjBDg:localhost:8800܁eeQ$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$xqrGad_ZyYZFCtBkpcs8Rti5dpR6muT6_0FhdiEt3l8$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc!VUibrTIkcRbfrogbQV:localhost:8800 eeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$xlr2uJEDLohCr2iEZ8dlDDsga_70Pv3pAhKUi0SsT28$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks!edbUkYJIZBNOiTuLJs:localhost:8800eeQ$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q!SrMQpDMFREKRMELwbL:localhost:8800eeQ$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8$fGYHbyM2smwSV9C-2cw95qSsCOCz7AVdPnJWFUf-O1A!rpVYLTJGcFNdGzFzXj:localhost:8800 ~eeQ$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw!cGkVFpidyBBxUxsszG:localhost:8800eeQ$xjGI0VExUyAaB650KbrF0kodTG9I0Dv9Zi96S9vWINM$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8!UGVFuRGyPQmBbGsEDo:localhost:8800CeeQ$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY!VOhMAiLfKyTOZbmKGw:localhost:8800΁eeQ$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s!YufaOfAlruTdjyUCwO:localhost:8800eeQ$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k4$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y!itKDOCtoMkFUETDtle:localhost:8800eeQ$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm4$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E!KxhGcTbEWmtgGNpdox:localhost:8800=eeQ$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBk$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk!sPWVGnipjiiWQpywNO:localhost:88002eeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800 ~eeQ$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800 eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800 'eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800 !eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800 eeQ$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE$wGeZtMTEN1N-InxHJL8kerZmzxRQtVg3y14uP3TcFd8!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800  !O} { y w u sq<bASQO~YeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~XeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800~WeeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~VeeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~UeeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800jTQQQ$1570043195270GcoLc:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jSQQQ$1570043195270GcoLc:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jRQQQ$1570043195270GcoLc:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jQQQQ$1570043195269hcCzg:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jPQQQ$1570043195269hcCzg:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jOQQQ$1570043195269hcCzg:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jNQQQ$1570043194268zlNeZ:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jMQQQ$1570043194268zlNeZ:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jLQQQ$1570043194268zlNeZ:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jKQQQ$1570043193267ZyDyW:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jJQQQ$1570043193267ZyDyW:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800jIQQQ$1570043192266CXqej:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800~HeeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~GeeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~FeeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800~EeeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~DeeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~CeeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800~BeeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800~AeeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~@eeQ$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800~?eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800~>eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~=eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800~<eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800~;eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~:eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800~9eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800 #}X\ ` d  M Q _ cqu!y%})-Ks)    TQleQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800QkeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800QjeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800QieQ$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE!nfxDdcgDfooxyiAzaB:localhost:8800QheQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800QgeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800QfeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800QeeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800QdeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800QceQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800GbQQ$1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800QaeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800Q]eQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800Q\eQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800Q[eQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800GZQQ$1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800QXeQ$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o!xcdNyJNFEdaBGFycsB:localhost:8800QWeQ$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q!SUDzkfFBgpuCANOxRS:localhost:8800QVeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800QUeQ$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA!gXfXRDTXeVvOHQdaaQ:localhost:8800QTeQ$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U!hegUPDZCEEmBhsNJJR:localhost:8800QSeQ$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew!aSKNKSGXPGoIbSrbEN:localhost:8800QReQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA!peJMRJtXBvIiCttNmm:localhost:8800QQeQ$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA!tPkCGJBKmqUXJoRrnY:localhost:8800QPeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800QOeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800QNeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E!paDmNxsOZIKyApbxXs:localhost:8800QMeQ$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc!OtBUhGeUSiDMWRKIOT:localhost:8800QLeQ$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw!zHBgbzUZHshNGZvIBS:localhost:8800QKeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800QJeQ$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUc!pduebXnTyxQWVxEICp:localhost:8800QIeQ$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM!ZvLVbnHjeymRiFIkYr:localhost:8800QHeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800QGeQ$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA!WpThtNEVhrUbUdCdMJ:localhost:8800Q^eQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800  zveQay$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2969}{"auth_events": ["$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY"], "prev_events": ["$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY"], "type": "m.room.member", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-570", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-570:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043146891, "hashes": {"sha256": "+V6XSxjrSMy4A+onCOs7UCX91u76Huy5h1nRkHLGklk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zRgyBXaWuuCRobLbLVlLbU9N/ooFfAUAD/CNholziGM5lsbA6oeThpo7IFC603rJzB+xgN7jzbYMTpGVAxJDCA"}}, "unsigned": {"age_ts": 1570043146891}}ieQa_$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2968}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-570:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043146128, "hashes": {"sha256": "XxLkoGrAGwst/pmBF4DMA0WiPDVq64fV0exQu5xC5VE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "32H4Q6B7ajQ3rVjYtgTCFedkeZudLsHeCILfabgSSWc72Fsdb7bRspWwhxs3dqx25n61v3wHnOievzEJu3GnCg"}}, "unsigned": {"age_ts": 1570043146128}}eQm$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "txn_id": "535", "stream_ordering": 2967}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE"], "type": "m.room.message", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043145042, "hashes": {"sha256": "45xi/4IlenE/FwiDr0mjxCLfmoZgsjAzz1iIMDvIEmA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S49c1FON8MyzSNaiE0RmGDEgKk6ct+Awthxm1IhgUUbkVUTgAmbo3u4FlgrCvDao0LrgUC+JbW8YdOfJN+mfCA"}}, "unsigned": {"age_ts": 1570043145042}}eQm$Z6HWxS4InBAx6R6QVFLQEWMC5z92NzK4KFHQ9inPEGE!xcdNyJNFEdaBGFycsB:localhost:8800{"token_id": 552, "txn_id": "534", "stream_ordering": 2966}{"auth_events": ["$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n0", "$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI", "$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM"], "prev_events": ["$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o"], "type": "m.room.message", "room_id": "!xcdNyJNFEdaBGFycsB:localhost:8800", "sender": "@anon-20191002_181700-569:localhost:8800", "content": {"msgtype": "m.text", "body": "synced"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043144230, "hashes": {"sha256": "tc1uApaOsrTIbaqOnojjSNNmkp2KwEVNCQE2CzRFdRI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tWIZXeqFkbTbPJUFtA0nRMHuh24tK8ULnISZeNfphfiB7KhbSccw3532D7NOajY4ygu15D8odxdBXy0k9IFQBQ"}}, "unsigned": {"age_ts": 1570043144230}} TZ}) ! u J  s H qFoDmBR' k@ N # i> w Lg< { P % yg>qHb:(Q!jYzridjeihmwPBuwLb:localhost:8800TS(Q!jYzridjeihmwPBuwLb:localhost:8800SR(Q!jYzridjeihmwPBuwLb:localhost:8800RQ(Q!jYzridjeihmwPBuwLb:localhost:8800QP(Q!jYzridjeihmwPBuwLb:localhost:8800PO(Q!jYzridjeihmwPBuwLb:localhost:8800ON(Q!jYzridjeihmwPBuwLb:localhost:8800NM(Q!jYzridjeihmwPBuwLb:localhost:8800ML(Q!jYzridjeihmwPBuwLb:localhost:8800LK(Q!jYzridjeihmwPBuwLb:localhost:8800KJ(Q!jYzridjeihmwPBuwLb:localhost:8800JI*Q!jIfvTrwedrWLubsnlM:localhost:8800!'*Q!jIfvTrwedrWLubsnlM:localhost:8800 &*Q!jIfvTrwedrWLubsnlM:localhost:8800%*Q!jIfvTrwedrWLubsnlM:localhost:8800$*Q!jIfvTrwedrWLubsnlM:localhost:8800#*Q!jIfvTrwedrWLubsnlM:localhost:8800"*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800*Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!ifQxHmNAcSSGHVMjfi:localhost:8800 *Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!icheSPMgpemswIdQkw:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!itfjLXhEaORJLkbfVS:localhost:88004&*Q!itfjLXhEaORJLkbfVS:localhost:88003%*Q!itfjLXhEaORJLkbfVS:localhost:88002$*Q!itfjLXhEaORJLkbfVS:localhost:88001#*Q!itfjLXhEaORJLkbfVS:localhost:88000"*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j *Q!jRuDexjFzIDOKbwDJQ:localhost:8800 i ~*Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!ijOiudvuzOLNmgNKfG:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iLHJbsFszubrnybDNz:localhost:8800 *Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800*Q!iTQSCiLqRMDtgXtUdC:localhost:8800+*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800 #\ 1 a x  K G Px6\_?\jQ']Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$1570043192266CXqej:localhost:8800ZiQ' Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.create$1570043191265cqITi:localhost:8800phQ? e !iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibility$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayughgQ/ e !iLHJbsFszubrnybDNz:localhost:8800m.room.join_rules$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UjfQ3 e !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 eQ']e !iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YddQ' e !iLHJbsFszubrnybDNz:localhost:8800m.room.create$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8pcQ? e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibility$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIhbQ/ e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rules$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIjaQ3 e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY `Q']e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiId_Q' e !hGsPmWXboxZZtOlsxY:localhost:8800m.room.create$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwp^Q? e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibility$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIh]Q/ e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rules$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wj\Q3 e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c [Q']e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAdZQ' e !dvZnfJonDkxlrrDXUk:localhost:8800m.room.create$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwpYQ? e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibility$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkhXQ/ e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rules$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacjWQ3 e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM VQ']e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4dUQ' e !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.create$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6YTQ3 ee !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4gSQ- e !fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y^RQ/ Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rules$1570043154263raEaa:localhost:8800fQQ? Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility$1570043153262hRyOa:localhost:8800`PQ3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access$1570043152261Skczg:localhost:8800`OQ3 Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levels$1570043152260dkyqc:localhost:8800NQ']Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$1570043151259knbjg:localhost:8800ZMQ' Q !GBPGYLDkXcAsHgkfuS:localhost:8800m.room.create$1570043150258cdaXl:localhost:8800pLQ? e !fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibility$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkghKQ/ e !fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rules$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgjJQ3 e !fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4 IQ']e !fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgodHQ' e !fdEymmlcUvjgshvVyl:localhost:8800m.room.create$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY $s 1 U / j  =ir 6?gv 4X]qQQ3 $1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access]pQQ3 $1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levelsoQQ']$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800WnQQ' $1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.createmmeQ? $83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibilityeleQ/ $22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800m.room.join_rulesgkeQ3 $Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels jeQ']$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800aieQ' $-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800m.room.createmheQ? $YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibilityegeQ/ $leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rulesgfeQ3 $cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800m.room.power_levels eeQ']$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.member@anon-20191002_181700-573:localhost:8800adeQ' $zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800m.room.createmceQ? $zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800m.room.history_visibilityebeQ/ $VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800m.room.join_rulesgaeQ3 $NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800m.room.power_levels `eQ']$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800m.room.member@anon-20191002_181700-572:localhost:8800a_eQ' $-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800m.room.createm^eQ? $MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibilitye]eQ/ $6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rulesg\eQ3 $PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.power_levels [eQ']$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800aZeQ' $UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.creategYeQ3 $l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levelsdXeQ- $zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800m.room.tombstone[WQQ/ $1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.join_rulescVQQ? $1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.history_visibility]UQQ3 $1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.guest_access]TQQ3 $1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.power_levelsSQQ']$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800WRQQ' $1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800m.room.createmQeQ? $hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800m.room.history_visibilityePeQ/ $K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800m.room.join_rulesgOeQ3 $wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800m.room.power_levels NeQ']$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800m.room.member@anon-20191002_181700-570:localhost:8800  QQa? $1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2973}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "event_id": "$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y"}, "creator": "@anon-20191002_181700-570:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043150258cdaXl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043150885, "hashes": {"sha256": "Fm66Uor7wev35M+T9aHGSZ6mx2Tz7n269a56FgI2dh0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "S9zgrZdcP8E136YsABDOmL18jr8SWIxANjaIGXpa0AeZmI4Czcu97EJHrAnUBxD6yFiXyQKX6KO6rUFVM5P0AQ"}}, "unsigned": {"age_ts": 1570043150885}}eQa$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2972}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg"], "type": "m.room.history_visibility", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043149162, "hashes": {"sha256": "G+65Ouh5k3+Oa2h4g7Y9GWNOFrRfL1T3jG5e+geGNIY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IRP7gok4zetBr2A7h3ng4Q3Yuq1W8R7m4y1L0EZkJqp0w58LOOMTSXZMfO7icY8+vWkVSqnBjpRoiLGRVVHEAA"}}, "unsigned": {"age_ts": 1570043149162}}teQau$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2971}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4"], "type": "m.room.join_rules", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043148563, "hashes": {"sha256": "3N4vFUa4zbAGw3ShlbzRCFyNycSPSKyGAGWJNLyqDcU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6fHM4pSGhX3w/hc2Msu97de7eQIYPOFlBJuUu0EuTLDFFYwHpR4PfbDaqIPYNROIK4Ou8ceEW9ZUjFC00m+5Dw"}}, "unsigned": {"age_ts": 1570043148563}}keQac$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2970}{"auth_events": ["$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "type": "m.room.power_levels", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"users": {"@anon-20191002_181700-570:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043147873, "hashes": {"sha256": "UeaNC7LgIMBxIclY5zWdFumd3+sXHg4jnjDyCtkDetw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CIgBsfWMaZVhe2sJ+i0fcjfJp5dAAIO3Ca7QWJlHpqZN73iDyB/YshatYNnz6GsPYf7LwWWCYgc6eMJ8iXv7Ag"}}, "unsigned": {"age_ts": 1570043147873}} h. J W a jtz0!4e)Q ] $yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95REm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 m݊m݊@anon-20191002_181700-572:localhost:8800!3e)Q ] $WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmgm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 m݈em݈n@anon-20191002_181700-572:localhost:8800!2e)Q ]$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdMm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800m݆m݆@anon-20191002_181700-572:localhost:8800!1e)Q ]$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4m.room.message!dvZnfJonDkxlrrDXUk:localhost:8800m݄m݄@anon-20191002_181700-572:localhost:8800!0e)Q ]$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKcm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800m݂$m݂.@anon-20191002_181700-572:localhost:8800,/e?Q ]$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIm.room.history_visibility!dvZnfJonDkxlrrDXUk:localhost:8800m}Lm@anon-20191002_181700-572:localhost:8800$.e/Q ]$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wm.room.join_rules!dvZnfJonDkxlrrDXUk:localhost:8800mym{L@anon-20191002_181700-572:localhost:8800&-e3Q ]$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0cm.room.power_levels!dvZnfJonDkxlrrDXUk:localhost:8800mw mx@anon-20191002_181700-572:localhost:8800 ,e'Q ]$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAm.room.member!dvZnfJonDkxlrrDXUk:localhost:8800ms/mt,@anon-20191002_181700-572:localhost:8800+ e'Q  ]$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwm.room.create!dvZnfJonDkxlrrDXUk:localhost:8800mpVmp@anon-20191002_181700-572:localhost:8800!*e)Q ]$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_nsm.room.message!vZGjXEXQoCaoUXnkCa:localhost:8800mlml @anon-20191002_181700-571:localhost:8800,)e?Q ]$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkm.room.history_visibility!vZGjXEXQoCaoUXnkCa:localhost:8800mgmi@anon-20191002_181700-571:localhost:8800$(e/Q ]$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacm.room.join_rules!vZGjXEXQoCaoUXnkCa:localhost:8800mdme@anon-20191002_181700-571:localhost:8800&'e3Q ]$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMm.room.power_levels!vZGjXEXQoCaoUXnkCa:localhost:8800ma/mbn@anon-20191002_181700-571:localhost:8800 &e'Q ]$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4m.room.member!vZGjXEXQoCaoUXnkCa:localhost:8800m_4m_@anon-20191002_181700-571:localhost:8800% e'Q  ]$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Ym.room.create!vZGjXEXQoCaoUXnkCa:localhost:8800m\jm\@anon-20191002_181700-571:localhost:8800&$e3Q ]$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUm.room.power_levels!fdEymmlcUvjgshvVyl:localhost:8800mTmW;@anon-20191002_181700-570:localhost:8800##e-Q ]$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Ym.room.tombstone!fdEymmlcUvjgshvVyl:localhost:8800mAmR@anon-20191002_181700-570:localhost:8800"Q/Q ]$1570043154263raEaa:localhost:8800m.room.join_rules!GBPGYLDkXcAsHgkfuS:localhost:8800mOmPX@anon-20191002_181700-570:localhost:8800"!Q?Q ]$1570043153262hRyOa:localhost:8800m.room.history_visibility!GBPGYLDkXcAsHgkfuS:localhost:8800mLmM>@anon-20191002_181700-570:localhost:8800 Q3Q ]$1570043152261Skczg:localhost:8800m.room.guest_access!GBPGYLDkXcAsHgkfuS:localhost:8800mJ-mJ@anon-20191002_181700-570:localhost:8800Q3Q ]$1570043152260dkyqc:localhost:8800m.room.power_levels!GBPGYLDkXcAsHgkfuS:localhost:8800mGmHP@anon-20191002_181700-570:localhost:8800Q'Q ]$1570043151259knbjg:localhost:8800m.room.member!GBPGYLDkXcAsHgkfuS:localhost:8800mDmE=@anon-20191002_181700-570:localhost:8800 Q'Q  ]$1570043150258cdaXl:localhost:8800m.room.create!GBPGYLDkXcAsHgkfuS:localhost:8800mB%mB@anon-20191002_181700-570:localhost:8800 X Xn QQa $1570043152261Skczg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2976}{"auth_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}], ["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}]], "prev_events": [["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}]], "type": "m.room.guest_access", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043152261Skczg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043152941, "hashes": {"sha256": "PfTXLy4tzTx9aaoi9zA6gjUQNgEsARElxIIP174q3M0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jYfcTWu5XXQbC2UNm+p57uUk+1fx/4UQcqtBBHa6NP37TQU4eH+G/m2JmEKpmR+AvwNC0NTIO8avTmEi8q9dCw"}}, "unsigned": {"age_ts": 1570043152941}}+ QQay $1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2975}{"auth_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "prev_events": [["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "type": "m.room.power_levels", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"users": {"@anon-20191002_181700-570:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043152260dkyqc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043152367, "hashes": {"sha256": "D99PctxrFaHXo+fWs9/Pjs2h1iK5ci72qAuGRlGM4DE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vmq2DqVXrQkEfTyk2KTxSS3oiUjJ83yBzgZd6ZUtvrMeijkDIFZANJ7vX3elr94nsBTmzIk7bDqVNmQKg7UcBw"}}, "unsigned": {"age_ts": 1570043152367}}QQa) $1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2974}{"auth_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}]], "prev_events": [["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}]], "type": "m.room.member", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-570", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-570:localhost:8800", "event_id": "$1570043151259knbjg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043151585, "hashes": {"sha256": "IUETK5nfPOzeoIPfmoExY0LB8nDqmkSSIsy4fD4NBaA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PON7K17RQu2PGVxcSFHdFec7KlAV9q6iwGzXgj+SjtzokAYMCnYMrYB43cUmIOc2uVYllJLrXfYTjQweDiC1Bg"}}, "unsigned": {"age_ts": 1570043151585}} , ]  f  ;Eg#"<pDN 2 ^,onQQQ$1570043572397AAGBm:localhost:8800$1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043566390qTwyJ:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043550380LNzMz:localhost:8800$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043540371avDlf:localhost:8800$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043548378IxCfM:localhost:8800$1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043547377kWWAW:localhost:8800$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043546376YfkfL:localhost:8800$1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 nQQQ$1570043542373yGTqH:localhost:8800$1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043541372ZeTYJ:localhost:8800$1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043558385Xpkrp:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043558384QrKsp:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043557383IxQaJ:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043568392ItLhq:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043567391GonfI:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043572396lZXIU:localhost:8800$1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043571395bDLFD:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043575399SiSKs:localhost:8800$1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043579402KDYtE:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043529361Oytod:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 nQQQ$1570043528360cetnZ:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 nQQQ$1570043527359ScxWW:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 nQQQ$1570043525357VEfrE:localhost:8800$1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 nQQQ$1570043539370xCBJr:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800 nQQQ$1570043536368agmuM:localhost:8800$1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043536367lvGLr:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043535366hhblx:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043534365WVAkx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 nQQQ$1570043530362jRUtV:localhost:8800$1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 onQQQ$1570043570394QELCg:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800 nQQQ$1570043569393UscIm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 nQQQ$1570043559386ZLBoz:localhost:8800$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 nQQQ$1570043549379wtMED:localhost:8800$1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800 X X= eQa$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2979}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg"], "type": "m.room.tombstone", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!GBPGYLDkXcAsHgkfuS:localhost:8800"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043150793, "hashes": {"sha256": "KXLBIqBu0WV3+l78BNZHqAUijMA4ioWmV6CrMnml7lA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nwXYj80gOpP0fzo4xDS8RL5jrPXQ4minG2l4E5ZDP0w4Vv+lXwfjuu4cAdHaO25D7rZ6dKyevQbX9RfCbma7Dw"}}, "unsigned": {"age_ts": 1570043150793}}g QQaq $1570043154263raEaa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2978}{"auth_events": [["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}], ["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "prev_events": [["$1570043153262hRyOa:localhost:8800", {"sha256": "NchE7JtRs4i04IV7SUZZWaJEE5ENlVCcDPs0uOx9qh0"}]], "type": "m.room.join_rules", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043154263raEaa:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043154400, "hashes": {"sha256": "NVoNeDiVyRGF8Q4/12vm1XeuNVlM2OvsXhIEtKe1hCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "N6xmesIlgy2ECY1C9ofE95rAxLpKqzf3UV446bmY7Z9Nxv/WnetsL30/tz48VQ/VYDodCoCT2d9glcWruBD5Bg"}}, "unsigned": {"age_ts": 1570043154400}}x QQa $1570043153262hRyOa:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800{"token_id": 553, "stream_ordering": 2977}{"auth_events": [["$1570043152260dkyqc:localhost:8800", {"sha256": "p/r2vBej5O5O5NNypKvquQnLvh1iqkyI4V1puOwWvaY"}], ["$1570043150258cdaXl:localhost:8800", {"sha256": "M6pYcRVG5Jltr5xjDopvlqB8USuor40z4hBj3l/yPpM"}], ["$1570043151259knbjg:localhost:8800", {"sha256": "HrEHi3kKF1RgwK1+f8gJaJKTC9mwyohSQzo+MhnpsY4"}]], "prev_events": [["$1570043152261Skczg:localhost:8800", {"sha256": "NlAj2seeD0vk0mtfm4a0hl0CxQDqzUnqoiVFFi8Kkm4"}]], "type": "m.room.history_visibility", "room_id": "!GBPGYLDkXcAsHgkfuS:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043153262hRyOa:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043153633, "hashes": {"sha256": "nYUG7E44f5K5+tUHYGp3iA/GChrAc7TJh6MLTl4FmrY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4ZHer2e32iqKv6+t9cSjufkQ9OokCrlhaWENN2ByE/5408XPXhg5xSTlqFpC0wNyXJ13BqEfJRpD3YhxO6ehCw"}}, "unsigned": {"age_ts": 1570043153633}} &L ^ \ Z X VTRPNLJHF~8eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~7eeQ$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800~6eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800~5eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~4eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800~3eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800~2eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~1eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800~0eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800~/eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~.eeQ$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800~-eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800~,eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~+eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800~*eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800~)eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~(eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800~'eeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800~&eeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~%eeQ$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800~$eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~#eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~"eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800~!eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo!fdEymmlcUvjgshvVyl:localhost:8800~ eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4!fdEymmlcUvjgshvVyl:localhost:8800jQQQ$1570043154263raEaa:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043154263raEaa:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043154263raEaa:localhost:8800$1570043152260dkyqc:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043153262hRyOa:localhost:8800$1570043151259knbjg:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800jQQQ$1570043153262hRyOa:localhost:8800$1570043150258cdaXl:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800 .\a \  W R M HCRkz#upkfTNQe !VhUAklonNaWKRnLkcr:localhost:8800$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0TMQe !VhUAklonNaWKRnLkcr:localhost:8800$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcTLQe !VhUAklonNaWKRnLkcr:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61ETKQe !VhUAklonNaWKRnLkcr:localhost:8800$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50MTJQe !ybXveQoxPVhjpKHAkG:localhost:8800$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54TIQe !ybXveQoxPVhjpKHAkG:localhost:8800$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTATHQe !ybXveQoxPVhjpKHAkG:localhost:8800$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsITGQe !ybXveQoxPVhjpKHAkG:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkTFQe !ybXveQoxPVhjpKHAkG:localhost:8800$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyETEQe !ijOiudvuzOLNmgNKfG:localhost:8800$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4TDQe !ijOiudvuzOLNmgNKfG:localhost:8800$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsTCQe !ijOiudvuzOLNmgNKfG:localhost:8800$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdETBQe !ijOiudvuzOLNmgNKfG:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SoTAQe !ijOiudvuzOLNmgNKfG:localhost:8800$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQJ@QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043197271EnBnz:localhost:8800T?Qe !iLHJbsFszubrnybDNz:localhost:8800$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7oJ>QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195270GcoLc:localhost:8800J=QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195269hcCzg:localhost:8800J<QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043194268zlNeZ:localhost:8800J;QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043193267ZyDyW:localhost:8800J:QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043192266CXqej:localhost:8800J9QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043191265cqITi:localhost:8800T8Qe !iLHJbsFszubrnybDNz:localhost:8800$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIT7Qe !iLHJbsFszubrnybDNz:localhost:8800$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugT6Qe !iLHJbsFszubrnybDNz:localhost:8800$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UT5Qe !iLHJbsFszubrnybDNz:localhost:8800$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8T4Qe !iLHJbsFszubrnybDNz:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YT3Qe !iLHJbsFszubrnybDNz:localhost:8800$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8T2Qe !hGsPmWXboxZZtOlsxY:localhost:8800$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIT1Qe !hGsPmWXboxZZtOlsxY:localhost:8800$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIT0Qe !hGsPmWXboxZZtOlsxY:localhost:8800$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYT/Qe !hGsPmWXboxZZtOlsxY:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIT.Qe !hGsPmWXboxZZtOlsxY:localhost:8800$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwT-Qe !dvZnfJonDkxlrrDXUk:localhost:8800$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIT,Qe !dvZnfJonDkxlrrDXUk:localhost:8800$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-wT+Qe !dvZnfJonDkxlrrDXUk:localhost:8800$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0cT*Qe !dvZnfJonDkxlrrDXUk:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAT)Qe !dvZnfJonDkxlrrDXUk:localhost:8800$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnwT(Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavkT'Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOacT&Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeMT%Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4T$Qe !vZGjXEXQoCaoUXnkCa:localhost:8800$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6YJ#QQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043156264uvwRa:localhost:8800T"Qe !fdEymmlcUvjgshvVyl:localhost:8800$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBUJ!QQ !GBPGYLDkXcAsHgkfuS:localhost:8800$1570043154263raEaa:localhost:8800 ~I RDd | J + j  R  W X & D L8  ^ ,] v2j8p> %v d>1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 g1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEM1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ01e$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc 1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY"1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg41e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU}1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc [1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg ,1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI *1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg >01e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4R1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 51e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD701e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLU1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg71e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDM:1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQm1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4t1e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFI 1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwM1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8y1e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE51e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcw1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZM1e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQ1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwu1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs;0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ"1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQu1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIz0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEt1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw Z1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c I1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI C1e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc /1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY o1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y l1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs W1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qst1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsY ~z v r n j fb^ZVRNJFeeQ$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800 eeQ$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800eeQ$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800eeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y!fdEymmlcUvjgshvVyl:localhost:8800~eeQ$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg!fdEymmlcUvjgshvVyl:localhost:8800 G 0GkeQac$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2983}{"auth_events": ["$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "type": "m.room.power_levels", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"users": {"@anon-20191002_181700-571:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043158831, "hashes": {"sha256": "pT40/LcWz6AxerrzceZYTTwJlnmBUBXL7V3Cwl9GVLY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6Kt+Dj7guvrMc+SHsQhsrlaZtmkGnGDiSv5uISGmX+ZxW1Vge4BOiG7UYnEeThH69kYvkCQRTw2rWvLf4gr3DA"}}, "unsigned": {"age_ts": 1570043158831}}veQay$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2982}{"auth_events": ["$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y"], "prev_events": ["$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y"], "type": "m.room.member", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-571", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-571:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043158324, "hashes": {"sha256": "09YmcYfE3zMd76s0Ah7YlZihBy7i/98Axm4wG4VOWfs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EcUMzuMPwiU1cvWkdRWSIsODXffFgTQM7DWobfdM+V4qzLGu1X2HA3mV8K25lFPmKtS8zoQfYUd/+dmwWG9/Dg"}}, "unsigned": {"age_ts": 1570043158324}}ieQa_$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2981}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-571:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043157610, "hashes": {"sha256": "bJ9p24BMhPp1sUy6uCcs7UBT7fIMpnVJAY1k3WSbl7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FCVuecuRiTNSzR39v2PFfzE06NggHVnJUHYsebBROPq9e3+MXbEkT0PKaLn6yLelZsetBGk2nPgIPNf+qXTNDQ"}}, "unsigned": {"age_ts": 1570043157610}}_eQaK$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800{"token_id": 553, "stream_ordering": 2980}{"auth_events": ["$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4", "$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY", "$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo"], "prev_events": ["$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y"], "type": "m.room.power_levels", "room_id": "!fdEymmlcUvjgshvVyl:localhost:8800", "sender": "@anon-20191002_181700-570:localhost:8800", "content": {"users": {"@anon-20191002_181700-570:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043155670, "hashes": {"sha256": "CoaqnzuiuMS9VuyaDsNNUkOWmfNRiu+AgrOqCouThTc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ktEkgvNZYhUofZnzUVSKSoqLzIPXUEUFlhAO8GpKZnENcAmnFBZ1Z6tJfjlEWQAZ5rajnavkXb5tYTgnvKg2Ag"}}, "unsigned": {"age_ts": 1570043155670, "replaces_state": "$wiWrRSLzSJKvWooTT0hE3-h8kFBqEyrLzlGnc694xm4"}}  sieQa_$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2987}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-572:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043162710, "hashes": {"sha256": "5DIi5anQ4E9L+yC9+YZis65DVBJ/AzsOlAswputpl4A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZdgY+KyXHKXcVwRXxt6O3GoqJ6RJ3tjPAxpphzerPFy4+Ed9y9QReFGi5Aw5m7lsJeJXzeyhT9je4Ui5czl8Cg"}}, "unsigned": {"age_ts": 1570043162710}}eQy$-QWFDZIOso3b83RtIyEOfWLBZmu-7tk7yef9QCiV_ns!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "txn_id": "536", "stream_ordering": 2986}{"auth_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM", "$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk"], "type": "m.room.message", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"msgtype": "m.text", "body": "hello, world"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043161601, "hashes": {"sha256": "FUdOOQXY11gqMBm7iIl/ZHB+WbpQQfRK1bkvGASmbPs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BhyCKDmEInCsK6ngit7UuM4uhevvI7I+g7yMIEc23jJJrD7Obxwt/KZWAj9dFODe0CEf44cA352yFWOshjG5BA"}}, "unsigned": {"age_ts": 1570043161601}}eQa$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2985}{"auth_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM", "$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac"], "type": "m.room.history_visibility", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043160575, "hashes": {"sha256": "pX8k6N9ajV0+mGHqYu0L2Wz7DN/XstN4RjRDCPn88z0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "21IyjJlQy8+PFQJQaJWg479Er0l/r5dGhDJi67+hrI1NCAxuzSgL2HxxYv41Bh8sVIbJC04zHXjsCzous4SBCw"}}, "unsigned": {"age_ts": 1570043160575}}teQau$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac!vZGjXEXQoCaoUXnkCa:localhost:8800{"token_id": 554, "stream_ordering": 2984}{"auth_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM", "$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y", "$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4"], "prev_events": ["$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM"], "type": "m.room.join_rules", "room_id": "!vZGjXEXQoCaoUXnkCa:localhost:8800", "sender": "@anon-20191002_181700-571:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043159753, "hashes": {"sha256": "FzOYGlqHwnUMF5AqmD9aPmnjNNh9eh5xp1M4dOlPCUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dIlHYif0GlRb76fHWKRdfRVWeKJWgFwnYtdBcHf7bKbqEIMKpTJvDInTpaUOSPA5yQm9iwlfbdSgEkIP6IJQAg"}}, "unsigned": {"age_ts": 1570043159753}} ` oM`i!eQa_$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 2999}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-573:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043171770, "hashes": {"sha256": "ymC/t+zEQrWKVOZaoavT+RQ5EaIC/LtYHPj/05yO+W0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7QRX1l19bVgI+bXb5l2Z06NXAiB2NxZzxJuph4V3Kw+82jlny1mn29yS8z+Q3xCyn9ZGyHp9m/eyy+7ZoEWWCA"}}, "unsigned": {"age_ts": 1570043171770}} eQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "543", "stream_ordering": 2998}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"body": "Message number 7", "msgtype": "m.text"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043170536, "hashes": {"sha256": "rqYYVPVDFH/m0KgMk9ctDJspJFEe3AQ23cF6SNJXS2M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EN4spyuJkA54roRVjlj4BqUzh9ptZoCgoDnFK0Dx2rRVGuocDCQL6jHARHfNJfwNpyB2K5I5xYs4RqC8xkoJDw"}}, "unsigned": {"age_ts": 1570043170536}} eQ$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "542", "stream_ordering": 2997}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043169962, "hashes": {"sha256": "fRWjnDOtviOe4CfY77zWzbFSceIXhc2ziMe2Fm0Cp6U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RC7Zin0a5XnINAMptHXuMVj9gJ6SjWyUuUegJVkUD78HJ/JXDF3bgP4X1bHBLhLyiisyCo18vS8T6ZkujMpbCA"}}, "unsigned": {"age_ts": 1570043169962}} eQ$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "541", "stream_ordering": 2996}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043169421, "hashes": {"sha256": "JnbrxDezDC8JfPuRTtHqaqwZPnyI+YVARLQ9t1Ef0VU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PF1kPfvSdPAVCKMu4KAFeEjhCevdrNTEM6vblezZTdC85U8h6zW31OwOoJ7zYvcQZy8vJqAoY7y+mN2fPswIAA"}}, "unsigned": {"age_ts": 1570043169421}}  eQa$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2991}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w"], "type": "m.room.history_visibility", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043166028, "hashes": {"sha256": "IgYgAvfeP3olbXTdc+65wsZJaEjzkECwUKJfd1oYsGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P9JYXgF+GgwB1Bz0VrYUTjut9cqfRoYVdo5vCNOWk2NwP0A3L8PEMUFXRAIbX4FUSD0Ce3MUmSucViJCRUETBA"}}, "unsigned": {"age_ts": 1570043166028}}teQau$VLYDzN_vBakhGJRCiyJuivm_tF5XlmJFbewaoDwpM-w!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2990}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c"], "type": "m.room.join_rules", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043165128, "hashes": {"sha256": "01VpUT3siYU3ulz8rqytjsJ2N+HVnvsMHwHUGjYls6I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D0IyuiV1PV5WpowCJ3lIi7ewYd1O2PMy9f1eJENFz0KsEbLCSVVn30nZkDaFtt7UX11/7qYT57bzchZufH+sDA"}}, "unsigned": {"age_ts": 1570043165128}}keQac$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2989}{"auth_events": ["$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "type": "m.room.power_levels", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"users": {"@anon-20191002_181700-572:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043164428, "hashes": {"sha256": "+e2N97P3K8mPXC7mrQoSZKz5gAIkxi6gb5nVGuHsbdM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9TkWEAs3PynGIrDoo0vj5Rx7VEZ0Kk1aMDKa1Bam3KbsWa09iPwtbPkD9LTtP7jAjDfO9gDaflMtBasUZVUWBA"}}, "unsigned": {"age_ts": 1570043164428}}veQay$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "stream_ordering": 2988}{"auth_events": ["$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw"], "prev_events": ["$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw"], "type": "m.room.member", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-572", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-572:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043163439, "hashes": {"sha256": "3rPZdasY2nWLzWQ1lmYqM+Z8cNe0zYaBD14V/vuQ5AM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9qJb6w+1CstX43I0ojuFEL0sD8uBPBk4t+4dzTvvW1Om6gqWZmcX7idAOnsLKN7pcAYQgPa7LZ/WITxxvYUnCA"}}, "unsigned": {"age_ts": 1570043163439}}  pP eQ$WiGVxylP3vmEhkoIA8ESKKopYTCEkSNZhcowCG3Ifmg!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "540", "stream_ordering": 2995}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"body": "Message number 4", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043168869, "hashes": {"sha256": "z7wZAEPLuXyelcHlpTZpz91nXYEI1+t+fEePID+RdJE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XfmqHL+ClH9TcrFIkFy/nTf75q9NS1M+P2BwikPkSqBKOWw+/P2ARXKqPacJke/7ybIjoEW3sx08KReOnrB1AQ"}}, "unsigned": {"age_ts": 1570043168869}} eQ$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "539", "stream_ordering": 2994}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043168402, "hashes": {"sha256": "Iux4rDp322wLa7Q1/0bAB3erZT7HVxxgRiSF/jDm7sE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oJ0nDAUrXva8YtQq5xubTl4E/a9gBiGjnmcxW4KJrSckgcqXUcbCCEKMlBK/XXF9UG7r9utFTNDsb7THPgv6Dw"}}, "unsigned": {"age_ts": 1570043168402}} eQ$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "538", "stream_ordering": 2993}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 2"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043167912, "hashes": {"sha256": "qMUbM32Fkc3c8xsnET+mdr3UaXCorclFUf7FkteRfLY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qjU6ssruKf6CgTc+cbWoHchsXJgOTKIThccb9MmMg2PnssNsztOdB1Xm/X77JFDusN+9iJNSci6lS+StG97VDQ"}}, "unsigned": {"age_ts": 1570043167912}} eQ$xr2V80ybHAAg0mkbpd_Kgn2S7oaTSQWJ0ioDup7XhKc!dvZnfJonDkxlrrDXUk:localhost:8800{"token_id": 555, "txn_id": "537", "stream_ordering": 2992}{"auth_events": ["$NqGXrczQE3h3kPyBiwkxMuYiAjLPFEtpm6MHNhB6W0c", "$-Jpv871R2ILOHay3X1plcAQV5S51yh647-6AmgRuGnw", "$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA"], "prev_events": ["$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI"], "type": "m.room.message", "room_id": "!dvZnfJonDkxlrrDXUk:localhost:8800", "sender": "@anon-20191002_181700-572:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043167268, "hashes": {"sha256": "y/YG39pIxnw0GYj/dke2RZztFaWsYztJac4vav32YRc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wlIf0pfSJgEzUDHAedmuk2vkGvK+khn7eEvsYL8iclEjpO7rax8qGXp8+s0uOQRktImWbCDVQmVR6trKLi48DQ"}}, "unsigned": {"age_ts": 1570043167268}} exph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8@80( xph`xpXPhH@h J | I { H z G y F x E w D v D u C t B s A r @ q ? p > o = n < m ; l : k 9 j 8 i 7 h 6 g 5 f 4 e 3 d 2 c 1 b 0 a / ` . _ - ^ , ] + \ * [ ) Z ( Y ' X & W % V $ U # T " S ! R Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B  A  @  ? > = < ; :  9  8  7  6  5  4  3  2 1 0 / . - , + * ) ( ' & % $ # " !                                                                                                                       ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  `  _  ^  ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L ~ K }   ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K  J  I  H  G  F  E  D  C  B  A ~ @ } ? | > { = z < y ; x : w 9 v 8 u 7 t 6 s 5 r 4 q 3 p 2 o 1 n 0 m / l . k - j , i + h * g ) f ( e ' d & c % b $ a # ` " _ ! ^ ]  \  [  Z  Y  X  W  V  U  T  S  R  Q  P  O  N  M  L  K y[ p  n $ 5FW hy!Le)Q ]$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0m.room.message!hGsPmWXboxZZtOlsxY:localhost:8800m|mDŽ@anon-20191002_181700-573:localhost:8800!Ke)Q ]$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2wm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mŚmŦ@anon-20191002_181700-573:localhost:8800!Je)Q ]$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mm@anon-20191002_181700-573:localhost:8800!Ie)Q ]$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUgm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mm@anon-20191002_181700-573:localhost:8800!He)Q ]$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-wwm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݿmݿ@anon-20191002_181700-573:localhost:8800!Ge)Q ]$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-Em.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݽmݽ@anon-20191002_181700-573:localhost:8800!Fe)Q ]$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4m.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݻmݻ@anon-20191002_181700-573:localhost:8800!Ee)Q ]$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݹmݹ@anon-20191002_181700-573:localhost:8800!De)Q ]$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݷmݷ@anon-20191002_181700-573:localhost:8800!Ce)Q ] $fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dkm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݵmݵ@anon-20191002_181700-573:localhost:8800!Be)Q ] $mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYcm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݳVmݳ_@anon-20191002_181700-573:localhost:8800!Ae)Q ] $TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfcm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݰ`mݰn@anon-20191002_181700-573:localhost:8800!@e)Q ] $SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݮ!mݮ+@anon-20191002_181700-573:localhost:8800!?e)Q ] $oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTsm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800 mݬFmݬR@anon-20191002_181700-573:localhost:8800!>e)Q ]$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݨmݨ@anon-20191002_181700-573:localhost:8800!=e)Q ]$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKEm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݦmݦ@anon-20191002_181700-573:localhost:8800!<e)Q ]$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQkm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mݤmݤ@anon-20191002_181700-573:localhost:8800,;e?Q ]$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysIIm.room.history_visibility!hGsPmWXboxZZtOlsxY:localhost:8800mݞmݡ@anon-20191002_181700-573:localhost:8800$:e/Q ]$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIm.room.join_rules!hGsPmWXboxZZtOlsxY:localhost:8800mݛmݜ?@anon-20191002_181700-573:localhost:8800&9e3Q ]$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbYm.room.power_levels!hGsPmWXboxZZtOlsxY:localhost:8800mݘ2mݙz@anon-20191002_181700-573:localhost:8800 8e'Q ]$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIm.room.member!hGsPmWXboxZZtOlsxY:localhost:8800mݖ&mݖ@anon-20191002_181700-573:localhost:88007 e'Q  ]$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwm.room.create!hGsPmWXboxZZtOlsxY:localhost:8800mݓmݔ@anon-20191002_181700-573:localhost:8800!6e)Q ] $rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9Am.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 mݎmݎ@anon-20191002_181700-572:localhost:8800!5e)Q ] $B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkkm.room.message!dvZnfJonDkxlrrDXUk:localhost:8800 m݌m݌@anon-20191002_181700-572:localhost:8800  d l M>t | \ T F6.& eeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800 eeQ$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao!DelfBAGvCrTXgNxmNV:localhost:8800 meeQ$ILK0to5dmkCWeiVvf1xgxzTdURuGdqYJHAWlCLIy490$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g!fkvdYkesQOFCAQkzky:localhost:8800IeeQ$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVg$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI!IMiczgkCTjejbnbeyP:localhost:8800leeQ$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y!vZGjXEXQoCaoUXnkCa:localhost:8800 eeQ$IJZKL2r47jZ9dVob8oUtEtOlEWnJOYd_Hsf4kUTRqYk$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4!sPWVGnipjiiWQpywNO:localhost:88001eeQ$Hxecon7rc7j4eueLDJ4QDK8NrC4mThiAf2-kc6MRjbw$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf0!bNSXSTadOMhIrYpMzH:localhost:8800ՁeeQ$IPLKIoImn-AIodwlS59KrRZMrAqG4MyQ8ly31A2VObI$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0!tkajvIKHoOMWGsReBs:localhost:8800NeeQ$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U!OSHhtkGUjpUCkXwIhj:localhost:8800فeeQ$ILJJrwdgyMZat8btY6Qt1ZSWd7wpMiDkzFtvIaYjRCU$-o9aUu4ij8v4xeAO1bNqbWWeT2Lo16XioKZ_n7O0Bwc!bNSXSTadOMhIrYpMzH:localhost:8800ÁeeQ$IKe8EAv_rEmy_HDhYAZ-gY2ein7keWckBXqkqlXHh4w$-UT31S6HSqZu4rh6Un6bhil5qsyjnmXdzeFASLpc1Gg!erBPdgtUsiOfIKUkho:localhost:88006eeQ$IKZBCaXeN-UkImFz39XZebdvdJ3NicQodD38uOvv0KY$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrI!rQeYcODvQiLsOIbQrJ:localhost:8800ieeQ$IK2u4ZzUccP0-F3xquxM0drGQPUKnDbA_yTXfgQERGo$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o!dDqNKNFdIjCAwnyaxp:localhost:8800eeQ$I2TXXs_tmznIxafrw533P42xkfdQZkE-rJpM3p-hXKA$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk!HusOrLtWZTLbmQZxmm:localhost:8800 eeQ$IJMhMlBW35d0ZsiExEd2z_ZirFPzvshdwS2lofa9Jts$I8FLAFIiErKEFgmeJiKMa6EYmy0ETgD-ASDQYGTN6xk!StEnDjTJToXKXsOHNf:localhost:8829eeQ$IIfJQFvsv44dKK9OTJ3B8WRvqKyKfbutIo9FvehTtqY$-c5gmuqIVGVF_6bC8lE4if3cl9ECBcp-6H-BaCNO-bw!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4!wvnfKBSrUlfNmYoeil:localhost:8800feeQ$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0!aWvVRVaDflYyyGTOdD:localhost:8800FeeQ$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDo!BDASLhdcKfNwxCTCSg:localhost:8800UeeQ$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMs!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800 eeQ$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8!VOhMAiLfKyTOZbmKGw:localhost:8800ЁeeQ$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQ$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w!awHAhLuEkavTGACcUW:localhost:8800^eeQ$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM$YOURKmO_3eVLcB169-uQWT5tg_XworYVsDwkiTbL5Ag!egbhiBqOGhloZzopol:localhost:8800eeQ$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U!egbhiBqOGhloZzopol:localhost:8800eeQ$I6BhXO2CM1fwoZS36t_WbTKdL-GcyY37Y5MjT30xWyY$XQAXCwKwOpOZYf9_zCnA-7xmW_YfEkMtHNp-wwEOmbc!EWkoFeckhXlNyjuIEB:localhost:8800ׁeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800 SeeQ$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8$s6ntBZ0zKs08wBjGstjCPGxe-TOyYmhAioXjAAinC2o!uSBqTezaFcMnlowsEf:localhost:8800S ) )lrQQa{ $1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800{"token_id": 626, "stream_ordering": 3336}{"auth_events": [["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}], ["$1570043501341JmcnI:localhost:8800", {"sha256": "g8XysJGS8cECE32D2VOqramsGqekymakLP4J7vVBCpg"}], ["$1570043503344dJwGF:localhost:8800", {"sha256": "mSjw5apPIKdGYIS1NkX460bGkWossA7vQec/bQRvFkY"}], ["$1570043502342mVJmO:localhost:8800", {"sha256": "FyxjzLcOIZK7qt2jVt8FOTlbQFa7joYMisPZE1vWrNo"}]], "prev_events": [["$1570043504345DCjlJ:localhost:8800", {"sha256": "ZYkySBg4HH6I1Pr/7E6hexxNcRYq5JbP/bWhAFcgygw"}]], "type": "m.room.member", "room_id": "!TSFcaXDBqrCREHRHxv:localhost:8800", "sender": "@anon-20191002_181700-646:localhost:8800", "content": {"membership": "invite"}, "depth": 6, "prev_state": [], "state_key": "@__ANON__-23:localhost:42455", "event_id": "$1570043506346EEQDj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043506160, "hashes": {"sha256": "j4rhF8PE/2x6aeI8FqsK0SWE9zuq35qOJwabYppJduc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VsO+2sXJmb6rk4Jqad7yCm+XXXbGLjiCa7qxZ0qSJEmQ78lZBUTEARME7319esNpADnSsMiDX3Rrgc72f4dOAA"}, "localhost:42455": {"ed25519:1": "G//pPGBjrs6786hKjCf0uv+q8wbbmg8HELtdHOStZYrR/mPbc1iyEbzA6QHBUdUGL/c/6RX+hnA2ULKczFGxDQ"}}, "unsigned": {"age_ts": 1570043506160, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-646:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-646:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-646", "avatar_url": null}, "sender": "@anon-20191002_181700-646:localhost:8800"}]}}xqQQa $1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800{"token_id": 626, "stream_ordering": 3335}{"auth_events": [["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}], ["$1570043501341JmcnI:localhost:8800", {"sha256": "g8XysJGS8cECE32D2VOqramsGqekymakLP4J7vVBCpg"}], ["$1570043502342mVJmO:localhost:8800", {"sha256": "FyxjzLcOIZK7qt2jVt8FOTlbQFa7joYMisPZE1vWrNo"}]], "prev_events": [["$1570043503344dJwGF:localhost:8800", {"sha256": "mSjw5apPIKdGYIS1NkX460bGkWossA7vQec/bQRvFkY"}]], "type": "m.room.history_visibility", "room_id": "!TSFcaXDBqrCREHRHxv:localhost:8800", "sender": "@anon-20191002_181700-646:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043504345DCjlJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043504507, "hashes": {"sha256": "1LSb1P0rjZtbYm23/YYA91MZT9aZNZynXCvaQ1LMmhE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cf8rOKF5rIpZnvvTVGEjDmNpfKMsL8Uy6JdnGN3ZXnBWP4/WKH8an/2mZl6Q94MH+xdP1hGl5D3RoEOKybhFCQ"}}, "unsigned": {"age_ts": 1570043504507}}gpQQaq $1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800{"token_id": 626, "stream_ordering": 3334}{"auth_events": [["$1570043501341JmcnI:localhost:8800", {"sha256": "g8XysJGS8cECE32D2VOqramsGqekymakLP4J7vVBCpg"}], ["$1570043502342mVJmO:localhost:8800", {"sha256": "FyxjzLcOIZK7qt2jVt8FOTlbQFa7joYMisPZE1vWrNo"}], ["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}]], "prev_events": [["$1570043503343snlnn:localhost:8800", {"sha256": "a5nMx0YAfRPob8ennPXz+9zBpWKyBGDCWyYne0CdNW4"}]], "type": "m.room.join_rules", "room_id": "!TSFcaXDBqrCREHRHxv:localhost:8800", "sender": "@anon-20191002_181700-646:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043503344dJwGF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043503739, "hashes": {"sha256": "OFA1Zrsj6qpvdAjlNo5FVaT2rtb7SbMnPuzenNMox48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+8SuAyuljypvH0XHXEpQQOy8P6h8aoj7zNdbBFr/x8uBSaW0xpd3k6iF2tuIkDDABWSjPKsz2dKveZsP1pgMCg"}}, "unsigned": {"age_ts": 1570043503739}} uS &`3rG m @  3 `mT'sF   AHh;Z- f 9 s F zM yL,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z Z,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y Y,Q!qjijQBfMwsCPTVgKPm:localhost:8800 X X,Q!qjijQBfMwsCPTVgKPm:localhost:8800 W W,Q!qjijQBfMwsCPTVgKPm:localhost:8800 V V,Q!qjijQBfMwsCPTVgKPm:localhost:8800 U U,Q!qjijQBfMwsCPTVgKPm:localhost:8800 T T,Q!qjijQBfMwsCPTVgKPm:localhost:8800 S S+Q !qjijQBfMwsCPTVgKPm:localhost:8800 R R,Q!peJMRJtXBvIiCttNmm:localhost:8800 t t,Q!peJMRJtXBvIiCttNmm:localhost:8800 s s,Q!peJMRJtXBvIiCttNmm:localhost:8800 r r+Q !peJMRJtXBvIiCttNmm:localhost:8800 q q,Q!pduebXnTyxQWVxEICp:localhost:8800 1 1,Q!pduebXnTyxQWVxEICp:localhost:8800 0 0,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800+Q !quaZwrGnzbNWhwAOYB:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!rQeYcODvQiLsOIbQrJ:localhost:8800%%+Q !rQeYcODvQiLsOIbQrJ:localhost:8800$$,Q!rJhSRzmWBQHlIhuDXT:localhost:8800DD,Q!rJhSRzmWBQHlIhuDXT:localhost:8800CC,Q!rJhSRzmWBQHlIhuDXT:localhost:8800BB,Q!rJhSRzmWBQHlIhuDXT:localhost:8800AA,Q!rJhSRzmWBQHlIhuDXT:localhost:8800@@+Q !rJhSRzmWBQHlIhuDXT:localhost:8800??,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800+Q !qxqNYKdtgvOQdhmgsj:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800 S,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800+Q !qtelAHlSkrqEFmlCqS:localhost:8800,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  +Q !qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  +Q !qzurjQHmiriwjaUMhO:localhost:8800  ,Q!pduebXnTyxQWVxEICp:localhost:8800 / /,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800~~+Q !qSUSLLWjDxcGibUZdT:localhost:8800}},Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 +Q !qInWQPtNQfBFoVzUtP:localhost:8800 *Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800)Q !plcvCHNbjCkNMMxnTk:localhost:8800,Q!peJMRJtXBvIiCttNmm:localhost:8800 u u-,Q!rQeYcODvQiLsOIbQrJ:localhost:8800..,Q!rQeYcODvQiLsOIbQrJ:localhost:8800++,Q!rQeYcODvQiLsOIbQrJ:localhost:8800)),Q!rQeYcODvQiLsOIbQrJ:localhost:8800'' uS &`3rG m @  3 `mT'sF   AHh;Z- f 9 s F zM yL,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Z Z,Q!qjijQBfMwsCPTVgKPm:localhost:8800 Y Y,Q!qjijQBfMwsCPTVgKPm:localhost:8800 X X,Q!qjijQBfMwsCPTVgKPm:localhost:8800 W W,Q!qjijQBfMwsCPTVgKPm:localhost:8800 V V,Q!qjijQBfMwsCPTVgKPm:localhost:8800 U U,Q!qjijQBfMwsCPTVgKPm:localhost:8800 T T,Q!qjijQBfMwsCPTVgKPm:localhost:8800 S S+Q !qjijQBfMwsCPTVgKPm:localhost:8800 R R,Q!peJMRJtXBvIiCttNmm:localhost:8800 t t,Q!peJMRJtXBvIiCttNmm:localhost:8800 s s,Q!peJMRJtXBvIiCttNmm:localhost:8800 r r+Q !peJMRJtXBvIiCttNmm:localhost:8800 q q,Q!pduebXnTyxQWVxEICp:localhost:8800 1 1,Q!pduebXnTyxQWVxEICp:localhost:8800 0 0,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800+Q !quaZwrGnzbNWhwAOYB:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!rQeYcODvQiLsOIbQrJ:localhost:8800%%+Q !rQeYcODvQiLsOIbQrJ:localhost:8800$$,Q!rJhSRzmWBQHlIhuDXT:localhost:8800DD,Q!rJhSRzmWBQHlIhuDXT:localhost:8800CC,Q!rJhSRzmWBQHlIhuDXT:localhost:8800BB,Q!rJhSRzmWBQHlIhuDXT:localhost:8800AA,Q!rJhSRzmWBQHlIhuDXT:localhost:8800@@+Q !rJhSRzmWBQHlIhuDXT:localhost:8800??,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800 ,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800,Q!qxqNYKdtgvOQdhmgsj:localhost:8800+Q !qxqNYKdtgvOQdhmgsj:localhost:8800,Q!quaZwrGnzbNWhwAOYB:localhost:8800 S,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800+Q !qtelAHlSkrqEFmlCqS:localhost:8800,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzrZzAieCgGSbpKOQR:localhost:8800  +Q !qzrZzAieCgGSbpKOQR:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  ,Q!qzurjQHmiriwjaUMhO:localhost:8800  +Q !qzurjQHmiriwjaUMhO:localhost:8800  ,Q!pduebXnTyxQWVxEICp:localhost:8800 / /,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qtelAHlSkrqEFmlCqS:localhost:8800,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800,Q!qSUSLLWjDxcGibUZdT:localhost:8800~~+Q !qSUSLLWjDxcGibUZdT:localhost:8800}},Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 ,Q!qInWQPtNQfBFoVzUtP:localhost:8800 +Q !qInWQPtNQfBFoVzUtP:localhost:8800 *Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800*Q!plcvCHNbjCkNMMxnTk:localhost:8800)Q !plcvCHNbjCkNMMxnTk:localhost:8800,Q!peJMRJtXBvIiCttNmm:localhost:8800 u u-,Q!rQeYcODvQiLsOIbQrJ:localhost:8800..,Q!rQeYcODvQiLsOIbQrJ:localhost:8800++,Q!rQeYcODvQiLsOIbQrJ:localhost:8800)),Q!rQeYcODvQiLsOIbQrJ:localhost:8800''  $ 6 I E A=95/+'#5Q]e!NQgavrmiCPUVaVjssy:localhost:8800@anon-20191002_181700-187:localhost:8800$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0joiniQ1e!hgjYwwwjWJNgwrzOto:localhost:8800@13:localhost:8800$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfcjoinQ]e!hgjYwwwjWJNgwrzOto:localhost:8800@anon-20191002_181700-186:localhost:8800$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0joinQ]e!dnZVySJLGNtUKsSgXW:localhost:8800@anon-20191002_181700-185:localhost:8800$XcZ9pj_qhCWlioeciXQwK83TRZXWLfthhECjja7DDc8joinQ]e!oznZaCpONuNDaLarkI:localhost:8800@anon-20191002_181700-184:localhost:8800$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYjoinQ]e!eLsrBEnrHolwCNgkFW:localhost:8800@anon-20191002_181700-183:localhost:8800$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20AjoinQ]e!ILbUVZOfPPwaZRrKJd:localhost:8800@anon-20191002_181700-182:localhost:8800$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwjoinQ]e!wAyboOFgsOPwkmgMAI:localhost:8800@anon-20191002_181700-181:localhost:8800$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQjoinQ]e!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-179:localhost:8800$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4joinQ]e!bnTuVBaAJTPbcYZtRl:localhost:8800@anon-20191002_181700-178:localhost:8800$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO4joinQ]e!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-177:localhost:8800$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUoleaveQ]e!BGbJEmJRVJGlZFQbZe:localhost:8800@anon-20191002_181700-176:localhost:8800$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIYjoinQ]e!tDsPLsKOLPePtEWRwn:localhost:8800@anon-20191002_181700-176:localhost:8800$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMjoinQ]e!XMNRkfscQXRjgYrOSd:localhost:8800@anon-20191002_181700-175:localhost:8800$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKMjoin Q]e!XMNRkfscQXRjgYrOSd:localhost:8800@anon-20191002_181700-174:localhost:8800$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6Ujoin Q]e!wUuodvgsmAJqKJUBCQ:localhost:8800@anon-20191002_181700-173:localhost:8800$-UX0YVpKy-nUAIh029fHzsGwByDmKmrGPoCDwdV4TxUjoin Q]e!KeBlWUQiLYUoILKkTB:localhost:8800@anon-20191002_181700-170:localhost:8800$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tMjoin Q]e!zFdNewlKnUiMBxnYrN:localhost:8800@anon-20191002_181700-170:localhost:8800$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60join Q]e!UyLoIXmzVFwycmBUeh:localhost:8800@anon-20191002_181700-169:localhost:8800$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupgjoinQ]e!lAGTcYIuMBXsVRGCOe:localhost:8800@anon-20191002_181700-169:localhost:8800$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwIjoinQ]e!WVzjUePHrzCjfyTbmK:localhost:8800@anon-20191002_181700-169:localhost:8800$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJosjoinQ]e!nteAxExBGJfaGIpuCx:localhost:8800@anon-20191002_181700-168:localhost:8800$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3FsjoinhQ/e!itKDOCtoMkFUETDtle:localhost:8800@8:localhost:8800$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8joinQ]e!itKDOCtoMkFUETDtle:localhost:8800@anon-20191002_181700-167:localhost:8800$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2YjoiniQ/e!qxqNYKdtgvOQdhmgsj:localhost:8800@7:localhost:8800$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4leaveQ]e!qxqNYKdtgvOQdhmgsj:localhost:8800@anon-20191002_181700-165:localhost:8800$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpUjoinhQ/e!MlzmtUYSZOiByAZdKx:localhost:8800@6:localhost:8800$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCgjoinQ]e!MlzmtUYSZOiByAZdKx:localhost:8800@anon-20191002_181700-164:localhost:8800$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMjoiniQ/e!WjlTCJVOFJkanCtkFE:localhost:8800@5:localhost:8800$YP2PAPyTcXb3RI2tRLlSHptqjkbpuyXTNZyE9ruG07oleave~Q]e!WjlTCJVOFJkanCtkFE:localhost:8800@anon-20191002_181700-163:localhost:8800$mwWhYaZpRjskoZFtsmpn8KDiwtsyV3YwejUp0TANLv0join}Q]e!aBCvSXjtZUEPlPGHvY:localhost:8800@anon-20191002_181700-162:localhost:8800$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4join i 4 h5i g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEA0fmc3Y0QxWUdmKzQ6O2IKMDAyZnNpZ25hdHVyZSBG-uobgFAmq9NLJXvEdSpgFgmN1SswLvdwubfHzKrPbQo;1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF8jcExhLjZqWioqb3JJTGIKMDAyZnNpZ25hdHVyZSATTRbNO7ghd-MJRhbJOUDzReRA2eNpboVfGfaE7b5togo91cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpIME1rMDJaNTVnQV4mKmQKMDAyZnNpZ25hdHVyZSDs0_JHyuwrzhsZIXxSBOdggNNwVbh6b2PSU7kjM6VnBAo71cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFJQ2k6JnR1d2csZCtTYkoKMDAyZnNpZ25hdHVyZSA9wYUO1vJBMowK4IpWVG5FkeN2atNDe-McB9m6-qrfWQo41cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX153K2cxK1BOU2JSS3IKMDAyZnNpZ25hdHVyZSAe6JbkGlIFoVwqKgUpSQhIS91WBgnR3pTMnBpm3t9nswo81cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV1IzBqNDdWXm5ncklhR2MKMDAyZnNpZ25hdHVyZSDHpR8ZHjt5986DzBZP0MnU2IPu3q7JCmTn5Jzgxs2pmwo61cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWSmFLJl5ZK0heb2ZuOlkKMDAyZnNpZ25hdHVyZSAO7MSz5oG_iGGUxl0k6OcSlgjGpZGamFhhrRuRdokuIgo51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlYRj1wM05EOS5vXjFKVnoKMDAyZnNpZ25hdHVyZSBYYHFUdAxAnXimtmCEKeGe9KUUuXOT8Dkgh7rJMizMtgo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqSGd1d0BsaDFHO3BeaUwKMDAyZnNpZ25hdHVyZSA7uV5hX3vKBnLk0QaC8CYMcssMCkflw8aLsSo3BB2bIwo21cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZkbF55WkZFfm14dyNfa2YKMDAyZnNpZ25hdHVyZSBLYH3CJ0T1Q3BRGeLp6D6Nr0P_DWeASmh9STN8_fvomwo11cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw5RnlMdVgtOm1eQGN0cUwKMDAyZnNpZ25hdHVyZSAm3-EMOZnixzkqSUn4qkIHh5yzaRUEUYzlidJt7YJGdwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsyZm1LMVZWQkF3eXNPLEIKMDAyZnNpZ25hdHVyZSArErSps8HqIMqm5m1m_kUKTtedy2AGZ2MYYbXb8gO0Hwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhTQTFmTnE7LUtBQHlCTEMKMDAyZnNpZ25hdHVyZSB55WriqUdXCaW2zuQkGHisLRCQSwSiwmIsJDDKATirEAo: $ l Hl  $571cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgo~N1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgop 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRCVnBqMEBRaGZtWjdTZEYKMDAyZnNpZ25hdHVyZSApW_9ygROP-xkvgLFU8SCjdYJi_4WNmFICdZ7S6MH60Qo0 01cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEliZTpLUnF3NypiPU5ONVIKMDAyZnNpZ25hdHVyZSC9Wp1jzY_CO9Nje2K97edh9DyYyHGoke-B80dSDTjD3Ao" 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgob1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteZS1kVHJFRWx1QUA4SC4KMDAyZnNpZ25hdHVyZSDgIx3EcfCkszmuJPA0UIws-nAP7CuVz541fPz52hl2mQoi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQo c1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTUyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFVTK0oxOk9WaEphdjZZK3AKMDAyZnNpZ25hdHVyZSAuhcFTMb8ZAHxZTCu6qWNV0H11fuUfWB5l9o28rkIKDQonł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5xdSxZZnhsU3JxVnQteUwKMDAyZnNpZ25hdHVyZSCtq1UJU_Wyiyp9peYu9r8YQgQoH6XNu9vzifshqGZ0AAo.1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDh3REZETWFodU5jO1BjSlIKMDAyZnNpZ25hdHVyZSBkO3hDSxe8Mu7xTlw3rYlxibs1_JShkhhmytcoluPlngoH ,ij8p> w1 E  }i K  Q  W % ] +c1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G81e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c !1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM a1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM `1e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM _1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng~1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648 1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c 1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c 1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1mst1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkY1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkX1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgkW1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE _1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE ^1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE ]1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0  %eQa$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3003}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI"], "type": "m.room.history_visibility", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043174530, "hashes": {"sha256": "gbzx8yTvputVA3o71MxTgayUY7asglS4lifOJCMZlTs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/mg8ftsG7ttx923wZZWvR88mmu3/KNGfpr5N4TjOFIlM6YCHxavyqwI5/rUjl3jqzf1EhprW4U0em1MhSMBtDA"}}, "unsigned": {"age_ts": 1570043174530}}t$eQau$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3002}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY"], "type": "m.room.join_rules", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043173770, "hashes": {"sha256": "8tlrzG9Ii25DpPlUKXZE0vGeg7jGoVx8/I2FDvR5wQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aspsd6EgykjF++Gz4ofa3HgenjA714kh88BQzhEIwpqMg4sLnED2gk/yZjAcfVD1ldhGbxNcnuO4w/QlepNqAQ"}}, "unsigned": {"age_ts": 1570043173770}}k#eQac$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3001}{"auth_events": ["$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "type": "m.room.power_levels", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"users": {"@anon-20191002_181700-573:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043172914, "hashes": {"sha256": "AWl/ZHfWm4sQDJ17jEhyioRHVj6Y7Cj+eBoWlD8pYZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fToBo7Ra9L5g58cTdnaDB+uuxv/JB4rhn4BL+niP63qCjK/ZzT8f8AoYp2i8yroHVRWU6gBDVoj7ZCiY5FhTCw"}}, "unsigned": {"age_ts": 1570043172914}}v"eQay$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "stream_ordering": 3000}{"auth_events": ["$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw"], "prev_events": ["$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw"], "type": "m.room.member", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-573", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-573:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043172390, "hashes": {"sha256": "pXewfoCigd7DXZAuJnei8Bn88tbxxhGbc4LqNmyHrmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tsve6P8NhXNC0J1d3WnKR7bTaPRqfD/VAXylDoU3oH7MIQC3kqQw5WjMyXee6tGXqIQbURcDi60WVEky8XYRDQ"}}, "unsigned": {"age_ts": 1570043172390}} 8oRr9  U  q 8 6 U  q 8 S T Vp7n5QXX8e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Ysha2568e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgIsha256B8e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMsha2568e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-0sha2568e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAsha2568e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0sha2568e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAsha2568e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4sha256 8e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4sha256a8e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hksha256n8e$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Qsha256 t8e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yksha256 K8e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8sha256 8e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wsha256 N8e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Ysha256 7e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMsha256o8e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3Msha256v8e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpUsha256m8e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIsha2568e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4sha256d8e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00sha256R8e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8sha256F8e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQsha25658e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gsha256f8e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fssha2568e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevosha256~8e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0sha256 H8e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUosha256/8e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0sha2568e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQsha256 8e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWksha2568e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TAsha256l8e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYsha256'8e$qFyn-rd8XOOomJgIEr8aQGzX1P1pL9N1inw_4fOkZJksha256h8e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxIsha256}8e$qCD27Os_CHayKxGyDRhT4vElEbA0ALgxDmOQ2oQ_ClQsha2568e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRwsha256`8e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBYsha2568e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIsha2567e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMsha256k8e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKssha2568e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNcsha2568e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ewsha256`8e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Qsha25668e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-ksha2568e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWssha2568e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0sha2568e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/ssha256 8e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEosha2568e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUIsha256#8e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZksha2568e$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAMsha2568e$pwT006iR2Dxy0OpV4Yb2fDiZg6MQtmM8X4GfI_waZNYsha2568e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMsha2568e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjosha256 w8e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Qsha256 q (3 a  P % 0^'SX!ITeeQ/ $pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rulesgeQ3 $eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels eQ']$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800joinaeQ' $13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800m.room.createmeQ? $DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibilitye~eQ/ $wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rulesg}eQ3 $ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels |eQ']$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800joina{eQ' $P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800m.room.createmzeQ? $81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibilityeyeQ/ $L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rulesgxeQ3 $LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels weQ']$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800joinaveQ' $YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800m.room.createdteQ- $E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone[sQQ/ $1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rulescrQQ? $1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility]qQQ3 $1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access]pQQ3 $1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levelsoQQ']$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800joinWnQQ' $1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.createmmeQ? $83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibilityeleQ/ $22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800m.room.join_rulesgueQ3 $G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels jeQ']$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800joinaieQ' $-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800m.room.createmheQ? $YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII!hGsPmWXboxZZtOlsxY:localhost:8800m.room.history_visibilityegeQ/ $leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI!hGsPmWXboxZZtOlsxY:localhost:8800m.room.join_rules 'B`p 0 @ P `  p ]z*:f&BjB^Mr]Q@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800AqEQ@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:8800Mp]Q@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800=o]1@anon-20191002_181700-632:localhost:8800!5:localhost:424551nE1@__ANON__-10:localhost:42455!5:localhost:42455Mm]Q@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800Ml]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800Mk]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800Mj]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800Mi]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800Mh]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800Mg]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800Mf]Q@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800@eCQ@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800Md]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800=c]1@anon-20191002_181700-617:localhost:8800!0:localhost:424550bC1@__ANON__-0:localhost:42455!0:localhost:42455Ma]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800M`]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800M_]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800M^]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800M]]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800M\]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800M[]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800MZ]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800MW]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800MV]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800MU]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800MT]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800MS]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800MR]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800MQ]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800MP]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800MO]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800MN]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800MM]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800ML]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800MK]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800MJ]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800  pP )eQ$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "547", "stream_ordering": 3007}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 3", "msgtype": "m.text"}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043178054, "hashes": {"sha256": "MmzlofDeMo0R/65YZdJzwsYgG5I3rsiRW/UeZmMsdDY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jfIe1x4f0Kq6tiPdTv0kk1oq8HOWe7M2VIzGOoC3k93S/p+uQFYSnUo4VAyNv/8Ypg7Jv6r8gsJ7eJjfJsRoDQ"}}, "unsigned": {"age_ts": 1570043178054}} (eQ$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "546", "stream_ordering": 3006}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 2", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043177186, "hashes": {"sha256": "wI+Wz2cNF5qoUvuFiB9v8o4jt/fYDjEthD/O6XAgmok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WS9FsmioNQmYz4ElrouL5lTT3CyOPoFfyEa3NSVtyqqz0iZyUwrHa4bRc8Hz5RKVlJn8WctccbO6+JV7jDk5Cg"}}, "unsigned": {"age_ts": 1570043177186}} 'eQ$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "545", "stream_ordering": 3005}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043176637, "hashes": {"sha256": "MGOkI2EQEcVDp6Gs00su56gU7lF2HQTL8RyQ3W13rrw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "haql78ZZIYFacYLN8uPcZTg/R8JYTJfwmciCA1R4J3rEYFaIfWu7Ok1Pm/5Xr0grWyfdDzzBAe2L8xa0talNBQ"}}, "unsigned": {"age_ts": 1570043176637}} &eQ$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "544", "stream_ordering": 3004}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$YEmK3ws6lIoOk0Un7AmbFv7Si988ZrJEmb8xdd1ysII"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 0", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043176076, "hashes": {"sha256": "Cd6QisHIhKd+ZEiSKZkAxwL60QzJHVAFyds53WDYtzA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1o6RtSN6PjYigEGIazKpHM9Sz7Rot2F6nDD8EFsNRJOk/HFxUn6zpBjO5WrcMUNsyOURFykBf8kVm8LhbDRjCQ"}}, "unsigned": {"age_ts": 1570043176076}} .k9q? w E  } K   S9 ! 3 Y ' k _ -e1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM 1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA R1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 ,1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE 1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$UtsmF_YrR6NBUlg-iEAayELhJ6IWGOCxhNsPiL03g4UB1e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg 1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs _1e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6gs1e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM91e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw ,1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI 1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQh1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw 0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw>1e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dkA1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly01e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPoo1e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl81e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBc1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo!1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 _1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod481e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j0e1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eg1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgy .RM H C > 9 4/Ha fa \WRTQe !VhUAklonNaWKRnLkcr:localhost:8800$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0TQe !VhUAklonNaWKRnLkcr:localhost:8800$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcTQe !VhUAklonNaWKRnLkcr:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61ETQe !VhUAklonNaWKRnLkcr:localhost:8800$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50MTQe !ybXveQoxPVhjpKHAkG:localhost:8800$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54TQe !ybXveQoxPVhjpKHAkG:localhost:8800$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTATQe !ybXveQoxPVhjpKHAkG:localhost:8800$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsITQe !ybXveQoxPVhjpKHAkG:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkTQe !ybXveQoxPVhjpKHAkG:localhost:8800$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyETQe !ijOiudvuzOLNmgNKfG:localhost:8800$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4TQe !ijOiudvuzOLNmgNKfG:localhost:8800$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsTQe !ijOiudvuzOLNmgNKfG:localhost:8800$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdETQe !ijOiudvuzOLNmgNKfG:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SoTQe !ijOiudvuzOLNmgNKfG:localhost:8800$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQJ QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043198272DGmin:localhost:8800T Qe !iLHJbsFszubrnybDNz:localhost:8800$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7oT Qe !iLHJbsFszubrnybDNz:localhost:8800$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIJ QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195270GcoLc:localhost:8800J QQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043195269hcCzg:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043194268zlNeZ:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043193267ZyDyW:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043192266CXqej:localhost:8800JQQ !hrhDJbmXvXBizKoiiK:localhost:8800$1570043191265cqITi:localhost:8800TQe !iLHJbsFszubrnybDNz:localhost:8800$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0TQe !iLHJbsFszubrnybDNz:localhost:8800$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugTQe !iLHJbsFszubrnybDNz:localhost:8800$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UTQe !iLHJbsFszubrnybDNz:localhost:8800$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8TQe !iLHJbsFszubrnybDNz:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YTQe !iLHJbsFszubrnybDNz:localhost:8800$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8T~Qe !hGsPmWXboxZZtOlsxY:localhost:8800$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMT}Qe !hGsPmWXboxZZtOlsxY:localhost:8800$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0T|Qe !hGsPmWXboxZZtOlsxY:localhost:8800$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2wT{Qe !hGsPmWXboxZZtOlsxY:localhost:8800$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUsTzQe !hGsPmWXboxZZtOlsxY:localhost:8800$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUgTyQe !hGsPmWXboxZZtOlsxY:localhost:8800$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-wwTxQe !hGsPmWXboxZZtOlsxY:localhost:8800$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-ETwQe !hGsPmWXboxZZtOlsxY:localhost:8800$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4TvQe !hGsPmWXboxZZtOlsxY:localhost:8800$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUTuQe !hGsPmWXboxZZtOlsxY:localhost:8800$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAsTtQe !hGsPmWXboxZZtOlsxY:localhost:8800$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9DkTsQe !hGsPmWXboxZZtOlsxY:localhost:8800$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYcTrQe !hGsPmWXboxZZtOlsxY:localhost:8800$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfcTqQe !hGsPmWXboxZZtOlsxY:localhost:8800$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRsTpQe !hGsPmWXboxZZtOlsxY:localhost:8800$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTsToQe !hGsPmWXboxZZtOlsxY:localhost:8800$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLMTnQe !hGsPmWXboxZZtOlsxY:localhost:8800$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE >Kn %  0 *vDbh| WJ   } \ K Q 6  W % ] Q+j8>  w  E 21e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNM1e$FEKZVD4Sv_VoWpXG6nVi9QLPejbuERHuJX7EO45dOcwL1e$FDhahjZPBrq57NUm-K6s5N72Z-QywaJae33ue5Y9USg1e$FD4YYMKG4IKaHBHZcyJrmSqBMpCCiLtIdj-zbQCwwZMq1e$FAlrCdXtW4qU4yqd84GqJjJ0_1ued0vjWDk2E17jLDo1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F1tCPT0vVDvZP_q8YEr_eEMBx0uPP3Gn31VSgirq9H41e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkw1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U|1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc?1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsf0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ(1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaI1e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAE1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC4K1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c*1e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y 1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwp01e$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo<1e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU 51e$EER23V6VlJpqaDstplLEG_aB2VKIawniR1nSDUTq_70V1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYg1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8)1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 1e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI 1e$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlE 1e$FDRcmlRa_qiJciH35X3JYzfaWGmvWhhxiBzpi5oowlQ 1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4 %1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9kO1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SUD1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGs ,1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj0M1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs F1e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1kZ1e$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs J1e$FAhoNVs1FZWMNCAkfoeUq5VQC_6HBocMjC5-w-Gi04Y ^1e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$FKIxWkJAD12jfWn_SNJYqlbD8kSsusFhfKXjvBDSejc x1e$FBDZG3orzvtXmAV2E_iBqEI_ENKxb0G09EsJylIJYTg 61e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk41e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Ib1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY 1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMe0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIJ21e$FBVWErQPpcenxnjX5SJf9flsZYYLjdReyCxA2-iYBBQC1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-o1e$EoGjFecXhGeWgr0p2j9pDR8fhUTTjMhIHOngza2Egcs71e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis 1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwx1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4  oM -eQ$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "551", "stream_ordering": 3011}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 7"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043180526, "hashes": {"sha256": "lTdq/m45ThMw1pTQV0yvmXYD5Y4Xa9kvPVYreAB6bE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "15CoDBlMSmrkt9vbl9H6GRHqb3Od+W8Tyg7RfG5J1SjhhffOvqXVbYHccfGFurSSLaVlgyKAmRmMf1fyICWVBQ"}}, "unsigned": {"age_ts": 1570043180526}} ,eQ$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "550", "stream_ordering": 3010}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 6"}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043179862, "hashes": {"sha256": "ULmKTrHAWNrN1RkGqgPAt18TkeH8M2OkzZTMcgdEvLs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nPyYXLUhF7aLRuMDcrdFXjHzO+T1shVTHgOQjMYe1+7EXGAaEQObMJvpUNRru8ZDSY7d2PkGDSJEEPUexERjBA"}}, "unsigned": {"age_ts": 1570043179862}} +eQ$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "549", "stream_ordering": 3009}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 5"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043179104, "hashes": {"sha256": "l85yBX5yH1sNXXILf6DjjkVgsafZVprXYdotXwK5vLI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QJfmZRsf4ZwYIq6Jw9dow/RmpA3YcOftlAYpRqQ0ckU/dvHkjPmuCHsfXNwzZgftkmsyFVkPSB+EHu4936s8BQ"}}, "unsigned": {"age_ts": 1570043179104}} *eQ$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "548", "stream_ordering": 3008}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 4"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043178529, "hashes": {"sha256": "4PTPh2JCzlO8KT7WWD/ea583f2/ybxCwgZNL5pu4rzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k4rzESAMUxEv+gkhDand4j7JSbeQXj3PrNy1mPLGKbgxfaOvI9nViBuXY48S0NyBz34Bd59S6EPjlcryEvhsDA"}}, "unsigned": {"age_ts": 1570043178529}} B    J  V $ E ] +c1 PX%8 j8 |] j+q? p>w v D11e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1e$u1GLkw1Waqxga4c7VwHbddHLJAtUddbS3ZMFHhDvFqc^1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM y1e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoG1e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3EQ 1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU 1e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$tBNF8CGh8IzdgcytGxuzRtf6o4iXMSUwKzqDS343blc %1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs 01e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI 1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A 1e$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI \1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQ1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy900e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E0u1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgkd1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M+1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRA1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYU0e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwcE1e$tk3yJ4eN2TSQRHIr8LGqbBdXCAk6kVlSwH2YI5k2KQU1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8I1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc41e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY0e$tX6e_B_HzVpPfjJhSDtYTwyzzJ0noxhusm9pYs9VUP4f1e$tSauQ6IkZ-s5nqnvLmEmWdyhxibRZV1o5uM3oLM_Sa01e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjIs1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45kQ1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmgz1e$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU1e$tFhXdJewTJ7zFrySpfvRGBTfLSGsqmjJCe_u_RYWkzkE1e$tDrnafOYGL9L1YLFWxeWPAeYdbOKToyKop7FoKmFyWc1e$tADV8hRGePC2bkkJM6ryHeU5MiLbmBgl7hc9orKuf1wx1e$t7oHHbAoGV8tzgzPjetClhxJVgyLVuPd9HYDlKz5tRE1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpw p1e$tAenMNUp1Xbxra48ibsuvwoWdoi_-y4XA9t-x4m3F4U 1e$tNSvymj1d5iGQhwzpxdVEB3XsSg1hUgFbild4j6pJRs \1e$u1qkS2Fk3eg_ouPrSJBTAoEcbE4fu5nWfCq3C6yRlQY 1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$tDej3bXsdvoOfJryFziAwtOGOKKgHOg2KAMHF52wtPEo1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8gj1e$tzWWEpWDVby-1v5UNWMp_xJXzMbEIo4RP_buCicHL4EK21e$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvI N1e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb4-1e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnusn1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw$1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM51e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcwY1e$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yo $1e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc]1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM|1e$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI8 $NC 8 - { " p  e n21&ti^S!VMeL$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjksha256MڛKS1NG@+ ]hr9VLeL$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEsha256?}m5qޚ\S{ȹN !VKeL$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4sha256Q'Zo 0 O.D;}QVJeL$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Lssha256/t*-#0/WN#*VIeL$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdEsha256/) W^pƔh"taR%VHeL$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797Sosha256@PВ$!TZqri^䟆e0.*VGeL$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQsha256bvX~?=K_HhQ4 d:e5LFQL$1570043198272DGmin:localhost:8800sha25619-m0r[@li[ki>@VEeL$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7osha256ubaP;V4 "9:6úVDeL$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIsha256k~BoFl\0zݻGϘ։n>LCQL$1570043195270GcoLc:localhost:8800sha256^w浯-f`Og?ٗ.\I| } oLBQL$1570043195269hcCzg:localhost:8800sha256_1@}`$EkU,ti:LAQL$1570043194268zlNeZ:localhost:8800sha256W!iڲk7ݳ6R"c:.L@QL$1570043193267ZyDyW:localhost:8800sha2565\kZO'_;9lcͅ.waL?QL$1570043192266CXqej:localhost:8800sha2568h>i·0SEY*3:X`L>QL$1570043191265cqITi:localhost:8800sha256r8jw{&:ooyr} _pV=eL$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0sha256}ti|JGwQI`yV<eL$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugsha256zEd#!w5dnV;eL$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0Usha256e8Vz UkVd.~`KEV:eL$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8sha256"SSW][ 8#EC` V9eL$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Ysha256;|) fa @DM]8Q_FV8eL$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8sha256lX/,:] ጢwcJauV7eL$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMsha256 |2 ]=T \!u SV6eL$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0sha256mN9˵I#5?ֵ ^ɡz\V5eL$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2wsha256ŷEz083k L2=B&՝nvPV/eL$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGUsha256s,62'!^peV.eL$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAssha256JW? Fgr*aSe4Z` V-eL$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dksha256}!$$˨eދ0Ff)[e$~}}5gĵV+eL$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfcsha256M%UeNupM#.J7ZtхV*eL$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRssha256IFlnT@ ]@anon-20191002_181700-553:localhost:8829offlinem%L ] @anon-20191002_181700-548:localhost:8800offlinemۮEm.DmۮJ H2V$J8d ^ ~ L  R Xp> PvD j8| , &jr@  x F  *dJ21e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQH1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs:1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 %1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU B1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU <1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 11e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY)1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g`1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI61e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k<1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQZ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U L1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIc1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIg1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM^1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAT1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS401e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE >1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekn1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4/1e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE 1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA [1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE 1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8s/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAL1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukd1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs  oL1eQ$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "555", "stream_ordering": 3015}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 11", "msgtype": "m.text"}, "depth": 17, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043182479, "hashes": {"sha256": "cz+ApxgNl3yoLds098tBSXvpnGbMcCbijyBotFY6bO4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7O8GGElHBQl6H6YLqHdiwacmlettwXmS3mSFmVKvLoCHU9fnnkYj1eT6HvrFFTvlfuqJ496b4pl5G4lyA9avDg"}}, "unsigned": {"age_ts": 1570043182479}}0eQ$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "554", "stream_ordering": 3014}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 10", "msgtype": "m.text"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043182004, "hashes": {"sha256": "6HNqrlz+TIIrXs1ZapZEcVMVHBfBgjaf+2UW//jNKoA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rZrHc8OwsjAROzGW4CuNrrYSFhStjAgfTMtJtuWkyVMT5qeOe31TmdnaHGeNt/D85RFPxYj4+hdbHnCIch/OAQ"}}, "unsigned": {"age_ts": 1570043182004}} /eQ$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "553", "stream_ordering": 3013}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 9", "msgtype": "m.text"}, "depth": 15, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043181520, "hashes": {"sha256": "6dHpVj6+IUTHG+y/SOn+DqNF0VO5mQ4t6w95xGgpJu0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kd6migwD8aA3iAe4USeVJGg3BSTfIQHCh3lHxr0TXWlnDwo5rkd2Xv6CIXV2y5uZaAuhwdw5hzJK33c9WP6xBQ"}}, "unsigned": {"age_ts": 1570043181520}} .eQ$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "552", "stream_ordering": 3012}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 8"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043180996, "hashes": {"sha256": "O9ALeLOx+4mCNTVuYbL6XdLBkRu+kBCLkz7W6FMRX5E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TPg5U8OqoydDqhzuHhFz7MhQpetM1Y7CbVF6zsfcNtO8aUgbq5F7Jn8ViPMiiCpq6JiHryNnzfejCJHDYDKBAQ"}}, "unsigned": {"age_ts": 1570043180996}} D~z v r n j fb<8HD@<5eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:88004eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:88003eeQ$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800k2QQQ$1570043198272DGmin:localhost:8800$1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:88001eeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:88000eeQ$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800k/QQQ$1570043195270GcoLc:localhost:8800$1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k.QQQ$1570043195269hcCzg:localhost:8800$1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k-QQQ$1570043194268zlNeZ:localhost:8800$1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k,QQQ$1570043193267ZyDyW:localhost:8800$1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800k+QQQ$1570043192266CXqej:localhost:8800$1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800*eeQ$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800)eeQ$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800(eeQ$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800'eeQ$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800&eeQ$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800%eeQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800$eeQ$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800#eeQ$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800"eeQ$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800!eeQ$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800eeQ$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800 H2V$J8d ^ ~ L  R Xp> PvD j8| , &jr@  x F  *dJ21e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQH1e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRs:1e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBI1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 %1e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 1e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hg1e$bPOzyGlBOjmnbadtepK2C1bxUyv3QrgPBGHkzJayDLU B1e$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU <1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4 11e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 1e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWw1e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKU1e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcY)1e$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U1e$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE1e$bUeE7sDr5w4ek6NFyJfnRF2OOoixQVuNuPJz783eq9g`1e$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s1e$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg1e$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI61e$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k<1e$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w1e$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE 1e$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQZ1e$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye81e$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY1e$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U L1e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjg1e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w01e$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikU 1e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxs1e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIc1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIg1e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw1e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM1e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMX1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAN1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4*1e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1e$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 1e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE >1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4 1e$b7SUIQbS2sbT_1iEthUSYHY47SRE_cpPkM6UsvPXMwc1e$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFekn1e$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs1e$b5-XKpn6MfoVfSHaNWiP_BbrOPb_jm0wr9zj1ga4Z_I1e$b1yRv6RNvROewKgBhJqleAX6JTU_9JvdILIQ47b5AuY1e$b0_y0L80w5V0rqapXpW-MhpyuB5z90SYmj_9MlEvJe4/1e$b0Nv7L8JlFQStmQn1XRKe4XVOhG7BJndl_sM-idVrbY1e$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE 1e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4M1e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlA [1e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BE 1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWI1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI41e$bw-BlaMnjSnYGPi-bk38q9wqbjew7Fc0V8hzS9uibOU1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI1e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8s/e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeAL1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHukd1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs [\11ZZ//X-^Z1\3 f= f ;  d 9  b 7 ` 5 X-3\ ^ 3 *Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jlGSdNttccYxjfLkwW:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!jGQNGXehugtTvjUGKI:localhost:8800*Q!itfjLXhEaORJLkbfVS:localhost:880044*Q!itfjLXhEaORJLkbfVS:localhost:880033*Q!itfjLXhEaORJLkbfVS:localhost:880022*Q!itfjLXhEaORJLkbfVS:localhost:880011*Q!itfjLXhEaORJLkbfVS:localhost:880000*Q!jomrpmwwQQtghscizn:localhost:8800))*Q!jomrpmwwQQtghscizn:localhost:8800((*Q!jomrpmwwQQtghscizn:localhost:8800''*Q!jomrpmwwQQtghscizn:localhost:8800&&*Q!jomrpmwwQQtghscizn:localhost:8800%%*Q!jomrpmwwQQtghscizn:localhost:8800$$*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 o o*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 n n*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 m m(Q!jYzridjeihmwPBuwLb:localhost:8800NN(Q!jYzridjeihmwPBuwLb:localhost:8800MM(Q!jYzridjeihmwPBuwLb:localhost:8800LL(Q!jYzridjeihmwPBuwLb:localhost:8800KK(Q!jYzridjeihmwPBuwLb:localhost:8800JJ*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 l l*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 k k*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 j j*Q!jRuDexjFzIDOKbwDJQ:localhost:8800 i i*Q!jIfvTrwedrWLubsnlM:localhost:8800!!*Q!jIfvTrwedrWLubsnlM:localhost:8800  *Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jIfvTrwedrWLubsnlM:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!jDKAOtmeAGbYTpwyEW:localhost:8800*Q!itKDOCtoMkFUETDtle:localhost:8800*Q!kAxKaIQhXTtGFWSUgr:localhost:8800 *Q!jveVPZSXJOJyNDebPO:localhost:8800LL*Q!jveVPZSXJOJyNDebPO:localhost:8800KK*Q!jveVPZSXJOJyNDebPO:localhost:8800JJ*Q!jveVPZSXJOJyNDebPO:localhost:8800II*Q!jveVPZSXJOJyNDebPO:localhost:8800HH*Q!jveVPZSXJOJyNDebPO:localhost:8800GG*Q!jveVPZSXJOJyNDebPO:localhost:8800FF*Q!jveVPZSXJOJyNDebPO:localhost:8800EE*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800*Q!jfshVGNDxkvqPxFxWB:localhost:8800(Q!jYzridjeihmwPBuwLb:localhost:8800YY(Q!jYzridjeihmwPBuwLb:localhost:8800XX(Q!jYzridjeihmwPBuwLb:localhost:8800WW(Q!jYzridjeihmwPBuwLb:localhost:8800VV(Q!jYzridjeihmwPBuwLb:localhost:8800UU(Q!jYzridjeihmwPBuwLb:localhost:8800TT(Q!jYzridjeihmwPBuwLb:localhost:8800SS(Q!jYzridjeihmwPBuwLb:localhost:8800RR(Q!jYzridjeihmwPBuwLb:localhost:8800QQ(Q!jYzridjeihmwPBuwLb:localhost:8800PP(Q!jYzridjeihmwPBuwLb:localhost:8800OO  nJ5eQ$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "559", "stream_ordering": 3019}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 15"}, "depth": 21, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043184538, "hashes": {"sha256": "VCk/wFcPTdYNNsFoKBsEPsgIIV3PsO19zeNzSmkutXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vbfx7gN4/3uYgVovcaF89XGYkdr7zcfpETkWNw5w+H24vbNv4O/WxT0QamjFmIrNYBAG2UDOabEovQLf8Wk+Cg"}}, "unsigned": {"age_ts": 1570043184538}}4eQ$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "558", "stream_ordering": 3018}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 14", "msgtype": "m.text"}, "depth": 20, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043184070, "hashes": {"sha256": "Y//Yx/2UO4Fv2lmJdLwGHAHiF1FNZ3K7BaQMQ32lTxE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BCFD+RHWMnneLTPgTMromKPSvqsAdjqQUvGXUJUpJhIduwOZigEjjw49u2WqXyx4fGYouB4mFILztI+53p66AA"}}, "unsigned": {"age_ts": 1570043184070}}3eQ$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "557", "stream_ordering": 3017}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 13", "msgtype": "m.text"}, "depth": 19, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043183579, "hashes": {"sha256": "7RH3lY2lkF976qU3IUYocNRhnGQgI3LPRnLVksBrfyQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gF9VEd0YMhLXKbVmG3XM/vOe9C6J6bPYSON+9qCAlXvgoClroV5z2lUwHwmbuESjcjaQCh6iaG8uud2Si8GDBw"}}, "unsigned": {"age_ts": 1570043183579}}2eQ$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "556", "stream_ordering": 3016}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 12", "msgtype": "m.text"}, "depth": 18, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043183020, "hashes": {"sha256": "007i5lu5/H0iuBQcIN9Q3LZ7ETBAhbCjIYu5rtRTuXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "03SIoKMRwZlNfxmDlQy/VRcTqrjC1vsc1Tvv3McONC1/aMEGF6+vQcJ2HvZF+MX5FNXZ+Xu5PfE18Ty3HswgBQ"}}, "unsigned": {"age_ts": 1570043183020}} #o R jB, J }  :,^AAjof{eQ%$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800content.bodybody1fzeQ%$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:8800content.bodyHellokqeQ%!$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800content.bodyMessage 10LyQ1%$1570043392317hujur:localhost:8800!5:localhost:42455content.bodyHelloixeQ%$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessage3iweQ%$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessage2hveQ%$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessagehueQ%$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessagehteQ%$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800content.bodyMessageAseQ%K$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:8800content.bodySharing illegal content on this server is not permitted and rooms in violation will be blocked.reQ%I$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800content.nameContent Violation NotificationlgeQ%#$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800content.nameA room namerQeQ%/$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-ww!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 12rPeQ%/$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 11rOeQ%/$O_HwBc74FjzK8hCihylTZsW0VZY-JvDVnW70duJQsN4!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 10kfeQ%!$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800content.bodyMessage 10qNeQ%-$D8Xic7O5tb7NLO02lq0y8OYn1Qgh317qcKaOuufeyGU!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 9qMeQ%-$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 8qLeQ%-$fSGCJCS-4o_LqB9l3osAMNE84Ywhc2LnkKpnfist9Dk!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 7qKeQ%-$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 6qJeQ%-$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 5qIeQ%-$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 4qHeQ%-$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 3qGeQ%-$7xO8eUG46f9Xf9ANfy-7wlS-QXrLhfhtCMJ3MamjnLM!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 2l\eQ%#$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800content.nameA room nameg[eQ%$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800content.bodysyncedgZeQ%$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800content.bodysyncedgYeQ%$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE!nfxDdcgDfooxyiAzaB:localhost:8800content.bodysynced`XQQ%$1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800content.bodymessage 2jWeQ%$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800content.bodymessage 1rVeQ%/$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 17rUeQ%/$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 16rTeQ%/$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 15rSeQ%/$-I2-YcN95NSV-6kklP6xU1CqgmNhslYgDnWEyLnosUs!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 14rReQ%/$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg!hGsPmWXboxZZtOlsxY:localhost:8800content.bodyMessage number 13 |t |; m    A l  *eeQ$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800 eeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800 ЁeeQ$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800 P33Q$14:localhost:42455$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800 r_3QQ$13:localhost:42455$1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 q@331$12:localhost:42455$11:localhost:42455!5:localhost:42455 P@331$11:localhost:42455$10:localhost:42455!5:localhost:42455 OlOOQ$157004173511wRnRr:localhost:8800$157004173510EIiCi:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800kOMQ$157004173510EIiCi:localhost:8800$15700417349vUcYV:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800jMMQ$15700417349vUcYV:localhost:8800$15700417338MBNFd:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800jMMQ$15700417338MBNFd:localhost:8800$15700417327EEUMr:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800jMMQ$15700417327EEUMr:localhost:8800$15700417316amiRb:localhost:8800!azRJNFPIRSFAskLILK:localhost:8800iMMQ$15700403175seOtB:localhost:8800$15700403164ksjyG:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800'iMMQ$15700403164ksjyG:localhost:8800$15700403163gHYKC:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800&iMMQ$15700403163gHYKC:localhost:8800$15700403152dWVZA:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800%iMMQ$15700403152dWVZA:localhost:8800$15700403151blJmZ:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800$iMMQ$15700403151blJmZ:localhost:8800$15700403140fJvpV:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800#eeQ$13fY1PWP7wbisZ_OusVK6JP46mOCmN4xqPmH__Xpqxg$_54gpK_8wO-WpBydDDkxqu-hQ6yNTJteSzeV5tIpi60!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqg$Vw-r0XSZN4aHcohK6sLJ8qaGkNmCdQQeZdo8m3S7MFE!OaCEdDAiatpwYcagUb:localhost:8800eeQ$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$1-NCX0-rrss1UjFIaK3F0iIUtYvEy_36ERG_K1CYuew$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos!KmuRTfGFgJdgIDAgIW:localhost:8800eeQ$0vkQxrjroRAJfxtrymJTSkgknCu0dLZ2TawJgxgUEnQ$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y8!wAyboOFgsOPwkmgMAI:localhost:8800܁eeQ$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8w$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc!uqIEMXzdeNeXdJmuwh:localhost:8800 ( u nuv9eQay$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3023}{"auth_events": ["$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8"], "prev_events": ["$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8"], "type": "m.room.member", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-574", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-574:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043187519, "hashes": {"sha256": "QB2OWpHRQglCUNmZsbOzxEBMrGDMD0Mmfqzgz0vdJwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1FEwpwyXeR4emYhXqFADRjAloErYaEcPVg0oXfdyqUlcd5rY9zwF7pSdQKdUvadiC4T4WgLJzoqrhBuOXCnFAA"}}, "unsigned": {"age_ts": 1570043187519}}i8eQa_$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3022}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-574:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043186738, "hashes": {"sha256": "BE6knqu7Da0HjP6fG3Yt3pCAqzUdLdaIGViYmuoCQwM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KmGTNhmRJJqzr28+bc12UyHDh9gAHOh8B+51qa8kaNHEhPw8K989Yj0GKy9I79jmXNKJILuR/t47fa8OVniHAw"}}, "unsigned": {"age_ts": 1570043186738}}7eQ$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "561", "stream_ordering": 3021}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"body": "Message number 17", "msgtype": "m.text"}, "depth": 23, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043185605, "hashes": {"sha256": "8Zisz6NrxbAXnGaFsuWMxQQYW3fgpaTisCR1KYw+lLk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2yHOs7g7z96n0g13XaPfPg/7Vy5Bly+VaMBmgxqh+3a/i5Lpx0iTCg2mfT7yV5R31WvoDKJ5Dmp372r6EXzZBA"}}, "unsigned": {"age_ts": 1570043185605}}6eQ$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0!hGsPmWXboxZZtOlsxY:localhost:8800{"token_id": 556, "txn_id": "560", "stream_ordering": 3020}{"auth_events": ["$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY", "$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw", "$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI"], "prev_events": ["$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w"], "type": "m.room.message", "room_id": "!hGsPmWXboxZZtOlsxY:localhost:8800", "sender": "@anon-20191002_181700-573:localhost:8800", "content": {"msgtype": "m.text", "body": "Message number 16"}, "depth": 22, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043185020, "hashes": {"sha256": "LGIIDaDkEOyI26/vA3zibjBX1zlhmq/JhDxQaGXQmVY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HpIthSITbqTqu335+l9LzswxA/toubSPXrtBqU9Dk4zlou4sT5uX9sqSiP6GAYat4BRJTe5pQP/nVkUW2DZ0Cg"}}, "unsigned": {"age_ts": 1570043185020}} [ k  n < Vg*4>&de3Q ]$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIm.room.power_levels!ybXveQoxPVhjpKHAkG:localhost:8800mm@anon-20191002_181700-577:localhost:8800 ce'Q ]$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkm.room.member!ybXveQoxPVhjpKHAkG:localhost:8800m m|@anon-20191002_181700-577:localhost:8800b e'Q  ]$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEm.room.create!ybXveQoxPVhjpKHAkG:localhost:8800m mb@anon-20191002_181700-577:localhost:8800,ae?Q ]$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4m.room.history_visibility!ijOiudvuzOLNmgNKfG:localhost:8800mm)@anon-20191002_181700-576:localhost:8800$`e/Q ]$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Lsm.room.join_rules!ijOiudvuzOLNmgNKfG:localhost:8800m m @anon-20191002_181700-576:localhost:8800&_e3Q ]$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdEm.room.power_levels!ijOiudvuzOLNmgNKfG:localhost:8800mm@anon-20191002_181700-576:localhost:8800 ^e'Q ]$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797Som.room.member!ijOiudvuzOLNmgNKfG:localhost:8800m+m@anon-20191002_181700-576:localhost:8800] e'Q  ]$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQm.room.create!ijOiudvuzOLNmgNKfG:localhost:8800mm@anon-20191002_181700-576:localhost:8800\Q)Q ]$1570043198272DGmin:localhost:8800m.room.message!hrhDJbmXvXBizKoiiK:localhost:8800mkmo@anon-20191002_181700-574:localhost:8800&[e3Q ]$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7om.room.power_levels!iLHJbsFszubrnybDNz:localhost:8800mm@anon-20191002_181700-574:localhost:8800#Ze-Q ]$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIm.room.tombstone!iLHJbsFszubrnybDNz:localhost:8800mm@anon-20191002_181700-574:localhost:8800YQ/Q ]$1570043195270GcoLc:localhost:8800m.room.join_rules!hrhDJbmXvXBizKoiiK:localhost:8800mm@anon-20191002_181700-574:localhost:8800"XQ?Q ]$1570043195269hcCzg:localhost:8800m.room.history_visibility!hrhDJbmXvXBizKoiiK:localhost:8800m{m@anon-20191002_181700-574:localhost:8800WQ3Q ]$1570043194268zlNeZ:localhost:8800m.room.guest_access!hrhDJbmXvXBizKoiiK:localhost:8800mm@anon-20191002_181700-574:localhost:8800VQ3Q ]$1570043193267ZyDyW:localhost:8800m.room.power_levels!hrhDJbmXvXBizKoiiK:localhost:8800mcm@anon-20191002_181700-574:localhost:8800UQ'Q ]$1570043192266CXqej:localhost:8800m.room.member!hrhDJbmXvXBizKoiiK:localhost:8800mhm@anon-20191002_181700-574:localhost:8800T Q'Q  ]$1570043191265cqITi:localhost:8800m.room.create!hrhDJbmXvXBizKoiiK:localhost:8800m m{@anon-20191002_181700-574:localhost:8800!Se)Q ]$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0m.room.message!iLHJbsFszubrnybDNz:localhost:8800m8mB@anon-20191002_181700-574:localhost:8800,Re?Q ]$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayugm.room.history_visibility!iLHJbsFszubrnybDNz:localhost:8800mm}@anon-20191002_181700-574:localhost:8800$Qe/Q ]$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0Um.room.join_rules!iLHJbsFszubrnybDNz:localhost:8800mzmH@anon-20191002_181700-574:localhost:8800&Pe3Q ]$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8m.room.power_levels!iLHJbsFszubrnybDNz:localhost:8800m0mu@anon-20191002_181700-574:localhost:8800 Oe'Q ]$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Ym.room.member!iLHJbsFszubrnybDNz:localhost:8800m?m@anon-20191002_181700-574:localhost:8800N e'Q  ]$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8m.room.create!iLHJbsFszubrnybDNz:localhost:8800m2mν@anon-20191002_181700-574:localhost:8800!Me)Q ]$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVMm.room.message!hGsPmWXboxZZtOlsxY:localhost:8800mm@anon-20191002_181700-573:localhost:8800 Md0j@ d 0  j 6  f 2 b . ^ *Z&V"RN~J zFvBr>1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1qe$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic 1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1 e$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1 e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1 e$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA 1 e$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 1 e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98 1e$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw 1ae$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1`e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1_e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1^e$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA 1]e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1\e$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ 1[e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1Ze$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE 1Ye$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1Xe$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 1We$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1Ve$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1Ue$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM 1Te$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1Se$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1Re$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA 1Qe$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1Pe$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1Oe$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1Ne$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w 1Me$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1Le$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI 1Ke$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1Je$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E 1Ie$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 1He$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1Ge$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1Fe$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1Ee$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1De$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 1Ce$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1Be$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E 1Ae$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M 1@e$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54 1?e$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA 1>e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1=e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1<e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE 1;e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4 1:e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 19e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 18e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 17e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ '6Q$1570043198272DGmin:localhost:8800 15e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 14e$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI '3Q$1570043195270GcoLc:localhost:8800 '2Q$1570043195269hcCzg:localhost:8800 '1Q$1570043194268zlNeZ:localhost:8800 '0Q$1570043193267ZyDyW:localhost:8800 '/Q$1570043192266CXqej:localhost:8800 '.Q$1570043191265cqITi:localhost:8800 1-e$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0 1,e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug 1+e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 1*e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1)e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1(e$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8 1'e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM ?DT Y  a 8 ^ " n 2m1}9_#o3CSc's7# 1 !9:localhost:42455public9 Q !SnROoiDBapNNtMmKnT:localhost:8800publicshared9 Q !uGpSboYkgxVNOqNeUG:localhost:8800publicshared9 Q !DSFBpkqfnvBQbGoMUK:localhost:8800publicshared9 Q !ZKPJvrCZHMHPEksYDc:localhost:8800publicshared9 Q !PgNDjhhIBAXKryuGKy:localhost:8800publicshared9 Q !vnFXnkCSfTbsSNKrtg:localhost:8800publicshared9 Q !jRuDexjFzIDOKbwDJQ:localhost:8800publicshared9 Q !KcXNWNfbLcYsBKZHIp:localhost:8800publicshared9 Q !dBfASZrfiFeSKTjYJm:localhost:8800publicshared9 Q !taANXnGBZntAreRurn:localhost:8800publicshared9 Q !tcYctHPiaKzsKgrXlU:localhost:8800publicshared9 Q !drnXStKXkNQkouqUAg:localhost:8800publicshared9 Q !zScKnCZCFPIIodAiQj:localhost:8800publicshared9 Q !LazKtcHZriKzCvvGwV:localhost:8800publicshared9 Q !lEJUJZxqZPKZetemiR:localhost:8800publicshared9 Q !bLWyXaXdvUhdSAooUz:localhost:8800publicshared9 Q !YmRuIWixFpaqEeDQLZ:localhost:8800publicshared9~ Q !bjdLCdBwkKaihRIRFG:localhost:8800publicshared9} Q !qzrZzAieCgGSbpKOQR:localhost:8800publicshared9| Q !qzurjQHmiriwjaUMhO:localhost:8800publicshared9{ Q !TSFcaXDBqrCREHRHxv:localhost:8800publicshared9z Q !AOEdqVKPFddrqbKPOL:localhost:8800publicshared9y Q !wBBQYEPjQGnoAzDpEu:localhost:8800publicshared9x Q !oZGRyBAkNDrEeiAqWL:localhost:8800publicshared#w 1 !6:localhost:42455public9v Q !cRbfhxZdPstEsPGPAu:localhost:8800publicjoined9u Q !sAWFpvSUPExZLVcPEd:localhost:8800publicinvite9t Q !YpcmaMNMzjvtgYtrli:localhost:8800publicsharedAs Q) !PzoqoNRxeEEqiLyVSV:localhost:8800publicworld_readable9r Q !uPxXJHJyFQwvpQLZNs:localhost:8800publicshared9q Q !UluPYLGXtInKDTjRzp:localhost:8800publicshared9p Q !QkkdnzvdrjHaFGkzMt:localhost:8800publicshared9o Q !DuqHkpTfWCUblSrxQj:localhost:8800publicshared9n Q !NanhNmCnVVpmZRJrTF:localhost:8800publicshared#m 1 !5:localhost:42455public`l Q[ !sqkBzbHHJOTNWwynqV:localhost:8800#test-20191002_181700-47:localhost:8800publicshared9k Q !qInWQPtNQfBFoVzUtP:localhost:8800publicshared9j Q !FZOLkaLbBpaibrbHZx:localhost:8800publicshared9i Q !QxqzQoEBIZhmzHIGrl:localhost:8800publicshared9h Q !fDISaqNBhlOwherxSt:localhost:8800publicshared9g Q !yAfsSyqpJWFnkXQFJL:localhost:8800publicshared9f Q !AYFqrmxwClFQlcTTYq:localhost:8800publicshared9e Q !pHoEnhQYhwlbJXqKQE:localhost:8800publicshared#d 1 !0:localhost:42455public9c Q !OCEHAjcOXWNyWIESIS:localhost:8800publicshared`b Q[ !qjijQBfMwsCPTVgKPm:localhost:8800#test-20191002_181700-46:localhost:8800publicshared`a Q[ !kjjUsMowsioSQRIJeg:localhost:8800#test-20191002_181700-45:localhost:8800publicshared`` Q[ !UTAORDrNxIbSlGByAp:localhost:8800#test-20191002_181700-44:localhost:8800publicsharedW_ QI !MXhwoqNXvexeDDSOZT:localhost:8800Content Violation NotificationpublicsharedT^ QC !zqQJfFCRlSEDPKlQPy:localhost:8800#__ANON__-25:localhost:8800publicsharedD] Q# !JnAKXOrlyisFUpgJPw:localhost:8800A room namepublicsharedD\ Q# !XRAZJeoZBhGeHKKjaG:localhost:8800A room namepublicshared9[ Q !GwLdUoDplyVUogXDzu:localhost:8800publicshared9Z Q !nfxDdcgDfooxyiAzaB:localhost:8800publicshared9Y Q !XGAmnfaVvjDtQJuufa:localhost:8800publicshared9X Q !OXpGdKbowFUTChPdmF:localhost:8800publicshared9W Q !XUbDuPDiMTXJZDyAPc:localhost:8800publicshared9V Q !VhUAklonNaWKRnLkcr:localhost:8800publicshared9U Q !ybXveQoxPVhjpKHAkG:localhost:8800publicshared9T Q !ijOiudvuzOLNmgNKfG:localhost:8800publicsharedAS Q !hrhDJbmXvXBizKoiiK:localhost:8800publicsharedcan_join9R Q !iLHJbsFszubrnybDNz:localhost:8800publicshared #q) d }  S  $HS} @hm+ jQ']e !OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIciQ' e !OXpGdKbowFUTChPdmF:localhost:8800m.room.create$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwohQ? e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibility$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19EggQ/ e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rules$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkifQ3 e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk eQ']e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUcdQ' e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.create$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQocQ? e !VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibility$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQgbQ/ e !VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rules$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0iaQ3 e !VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc `Q']e !VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Ec_Q' e !VhUAklonNaWKRnLkcr:localhost:8800m.room.create$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Mo^Q? e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibility$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54g]Q/ e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rules$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAi\Q3 e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI [Q']e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkcZQ' e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.create$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEoYQ? e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibility$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4gXQ/ e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rules$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsiWQ3 e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE VQ']e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SocUQ' e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.create$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ_TQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels$1570043197271EnBnz:localhost:8800iSQ3 e !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o]RQ/ Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rules$1570043195270GcoLc:localhost:8800eQQ? Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility$1570043195269hcCzg:localhost:8800_PQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access$1570043194268zlNeZ:localhost:8800_OQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels$1570043193267ZyDyW:localhost:8800NQ']Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$1570043192266CXqej:localhost:8800YMQ' Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.create$1570043191265cqITi:localhost:8800fLQ- e !iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfIoKQ? e !iLHJbsFszubrnybDNz:localhost:8800m.room.history_visibility$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayuggJQ/ e !iLHJbsFszubrnybDNz:localhost:8800m.room.join_rules$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0UiIQ3 e !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 HQ']e !iLHJbsFszubrnybDNz:localhost:8800m.room.member@anon-20191002_181700-574:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y  =eQs$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "txn_id": "562", "stream_ordering": 3027}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug"], "type": "m.room.message", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"msgtype": "m.text", "body": "message 1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043191096, "hashes": {"sha256": "bVzzqBgAjkNj91V2InSGTIUhg3rXc9DatMdHWYCrB7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+zeYkj9b/oEzMTeRsGJHQorN6Qad/jobqYf5+T6gDdOeDalFlRZnwltJefLkCnvGJnMDiWeaSQXn3lpNLmOBCQ"}}, "unsigned": {"age_ts": 1570043191096}}<eQa$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3026}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U"], "type": "m.room.history_visibility", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043189757, "hashes": {"sha256": "3gKu/VllR1v2tYL9yluc9fDHnqhPRyMCf/cN+W9zTvc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P+Z6uL+pGKFmX9yUP96OMojMxFsiFg3q2c96PwkK+fMdfupo1XkvXGaxw1cEya0WEmx9dN17DSyOLAp7eivsDA"}}, "unsigned": {"age_ts": 1570043189757}}t;eQau$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3025}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8"], "type": "m.room.join_rules", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043189114, "hashes": {"sha256": "C7rhaxOWxAoHrk7lJ74nWthIOXk6PybK5dzOCLbac94"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCHULm9CGXLzGx+aCuG1AUVZxqQ7+9o9GY1LAp6k+luDxffKbwDivL8q5IE1xB6EBVIbrQAJLn8ofTYDh9VXCA"}}, "unsigned": {"age_ts": 1570043189114}}k:eQac$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3024}{"auth_events": ["$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "type": "m.room.power_levels", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"users": {"@anon-20191002_181700-574:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043188272, "hashes": {"sha256": "XyWn4p7Z8owR4JnDSEWMgaYqFK+QNQobQlCXteD2yZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0ELOD0ApYZjXQqB4cWRR7+61PryqIz0W69ZQ4NAL6iUnkAfpZMMjK3QuVJ15hBL8ABcZpg8u3dML/S4vFZ8yDA"}}, "unsigned": {"age_ts": 1570043188272}} 8l D `8]c!E@anon-20191002_181700-583:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAoZQYHHUGDME127.0.0.1Perl + Net::Async::HTTP/0.44mހb]c!E@anon-20191002_181700-582:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-goWSKNBNWTAR127.0.0.1Perl + Net::Async::HTTP/0.44ml]c!E@anon-20191002_181700-581:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7QoRYCHJSFPQZ127.0.0.1Perl + Net::Async::HTTP/0.44mi[]c!E@anon-20191002_181700-580:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAoCRNUPLGBOP127.0.0.1Perl + Net::Async::HTTP/0.44mU]c!E@anon-20191002_181700-579:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewoLLEXLPJZBR127.0.0.1Perl + Net::Async::HTTP/0.44m?]c!E@anon-20191002_181700-578:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwoJVKVSBXCSN127.0.0.1Perl + Net::Async::HTTP/0.44m+u]c!E@anon-20191002_181700-577:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcta1pIO2c6QERPaVNyWGUKMDAyZnNpZ25hdHVyZSAd3bxUhlLUXpXTptJ_Yus26cy6AXmMxJyBKNcIPKsCZQoMKYGCGNVJB127.0.0.1Perl + Net::Async::HTTP/0.44mă]c!E@anon-20191002_181700-576:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVtZGhSU1J5SnJHci0yRDgKMDAyZnNpZ25hdHVyZSCy4yt7mV0Ui5SmlgZFc_d3rEZ1rpdhHeNi6wxJTl0LrAoOMBHTKYAAU127.0.0.1Perl + Net::Async::HTTP/0.44mC]c!E@anon-20191002_181700-575:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE0jNklsT0sjemxaSUM2NjEKMDAyZnNpZ25hdHVyZSBG34Hwlua1rAxMbW-tWO8rpiVo1b7Vcx1f6bt-4aHJ7AoNDSWGGEQOX127.0.0.1Perl + Net::Async::HTTP/0.44mr]c!E@anon-20191002_181700-574:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBvSklCcDcuR2pIQVhLdkMKMDAyZnNpZ25hdHVyZSBDyV6s-RDbqWdfZ9AiUswgXr5DqqUP9QR6xBYRHxOF6AoHLLZYJLEQN127.0.0.1Perl + Net::Async::HTTP/0.44m 8 ng8+@QQay $1570043193267ZyDyW:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3030}{"auth_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "type": "m.room.power_levels", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"users": {"@anon-20191002_181700-574:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043193267ZyDyW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043193443, "hashes": {"sha256": "WJj9XuU9KOiNv7ayMdfvpvwqFIRjmDZLGwqTj8GHG1Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m7p19vXGeieTqkKrdhcYKGZEiXBkiZAwsyeUgcYW+EpQh2jLLtC39Ay/xX4szwPVCNPtBqe4Al6JBcfpbZALDw"}}, "unsigned": {"age_ts": 1570043193443}}?QQa) $1570043192266CXqej:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3029}{"auth_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}]], "prev_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}]], "type": "m.room.member", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-574", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-574:localhost:8800", "event_id": "$1570043192266CXqej:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043192680, "hashes": {"sha256": "axQNML2KJ82FRHP+Y2NlsxZdFfsvqs+YgWLjb92HAsg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/54pXvEmOW0wTBCL/duLsoO7VvsD642id06esxMDYkuDD9oZcb29oQpdS5JY4kePKv3oZoS5wL0DAHRTSf8+Cw"}}, "unsigned": {"age_ts": 1570043192680}}>QQa? $1570043191265cqITi:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3028}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"room_version": "2", "predecessor": {"room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "event_id": "$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI"}, "creator": "@anon-20191002_181700-574:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043191265cqITi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043191819, "hashes": {"sha256": "WJkesVc6ArXtdfmklqxgDPJIKVmDxTaOE28M0cG65L8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C9KW25w4Wk8FkS1F18JaPNAx+Ev2r8V0872hqfM+cNkmylEm6937ulFQc4AxUZUDOTYDUk2hGbSEV6YqKaI+CA"}}, "unsigned": {"age_ts": 1570043191819}} "880029M anon localhost -qT)}R' { P % y N # w L ! u J  s H q*Q!FklhVuCInffbDxunWv:localhost:880038*Q!FklhVuCInffbDxunWv:localhost:880027*Q!FklhVuCInffbDxunWv:localhost:880016*Q!FklhVuCInffbDxunWv:localhost:880005*Q!FklhVuCInffbDxunWv:localhost:8800/4*Q!FklhVuCInffbDxunWv:localhost:8800.3*Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FbJSiQoZtZkaFwzzQq:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FZOLkaLbBpaibrbHZx:localhost:8800 *Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FPcQcheNebvdFvmOnr:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FIOuvzpMhoERunVYYA:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800*Q!FAYqpziHeVZugCGaij:localhost:8800 #S:p l  u  * 3 [?Bdm"+Sh Q/ e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rules$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0j Q3 e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA Q']e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Yd Q' e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.create$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwp Q? e !OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibility$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYhQ/ e !OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rules$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wjQ3 e !OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 Q']e !OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIdQ' e !OXpGdKbowFUTChPdmF:localhost:8800m.room.create$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwpQ? e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibility$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19EhQ/ e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rules$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkjQ3 e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk Q']e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUdQ' e !XUbDuPDiMTXJZDyAPc:localhost:8800m.room.create$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQpQ? e !VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibility$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQh~Q/ e !VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rules$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0j}Q3 e !VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc |Q']e !VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Ed{Q' e !VhUAklonNaWKRnLkcr:localhost:8800m.room.create$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50MpzQ? e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibility$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54hyQ/ e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rules$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAjxQ3 e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI wQ']e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkdvQ' e !ybXveQoxPVhjpKHAkG:localhost:8800m.room.create$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyEpuQ? e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibility$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4htQ/ e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rules$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9LsjsQ3 e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE rQ']e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SodqQ' e !ijOiudvuzOLNmgNKfG:localhost:8800m.room.create$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQpQ3 ee !iLHJbsFszubrnybDNz:localhost:8800m.room.power_levels$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8goQ- e !iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI^nQ/ Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rules$1570043195270GcoLc:localhost:8800fmQ? Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility$1570043195269hcCzg:localhost:8800`lQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.guest_access$1570043194268zlNeZ:localhost:8800`kQ3 Q !hrhDJbmXvXBizKoiiK:localhost:8800m.room.power_levels$1570043193267ZyDyW:localhost:8800  gCQQaq $1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3033}{"auth_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}], ["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043195269hcCzg:localhost:8800", {"sha256": "X5mWEsQx30CHfWAVJEVrju5VLHSSadX8yfmctRG5xDo"}]], "type": "m.room.join_rules", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"join_rule": "public"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043195270GcoLc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043195787, "hashes": {"sha256": "Kj1i2rOH9tK7x3+Twv1n7rzNP1W9JhcHj329ac74DgA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YCHIl80N+ieyVaq6EtZaOds1UlUVM10HZXgV0y5SYBygm6neLLGxeRSHc/pJee85BHvi+unEKDqTeDTMgyxJBg"}}, "unsigned": {"age_ts": 1570043195787}}xBQQa $1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3032}{"auth_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}], ["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043194268zlNeZ:localhost:8800", {"sha256": "V5Ih+hiMaZIctBTGHO6Z2rJrN92zNotSuCJjOhf0oS4"}]], "type": "m.room.history_visibility", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043195269hcCzg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043195003, "hashes": {"sha256": "gjP2WD6aMhGlffZm088vN4CK6S9K6TeCIIxuE3vGBno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WJasFD5I3e5MpoWTSThsly3OFy3SBZtng6mtL+FTVMuoO1RYIs7SS6xMMiS7J4Umaix0q8In6gkcUrCSsJtkBg"}}, "unsigned": {"age_ts": 1570043195003}}nAQQa $1570043194268zlNeZ:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "stream_ordering": 3031}{"auth_events": [["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}], ["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}]], "prev_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}]], "type": "m.room.guest_access", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043194268zlNeZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043194302, "hashes": {"sha256": "PoyKQ953jZWJE4p85KSqUcBXuBHMriZcUIRFQiWPnuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GodnPPLB9FkpQ21rCKetsn/smRlqWYS2jKR9LPSA25/cVn95MzbVVxLQ2GO7Dog6N8fEPeRpQt7WTf5VbqzDBQ"}}, "unsigned": {"age_ts": 1570043194302}} A8l3 OQq4  T   /  1 S R o 6m Qm 7n4 5 P 8e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAsha256 ^8e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvgsha256 Y8e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQsha256Y7e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUsha256]8e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jMsha2568e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Ysha256H8e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMsha256A8e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAsha256 n8e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_Isha256B 3$90:localhost:42455sha256 8e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38Esha256 48e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwsha2568e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cEsha2568e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPMsha2568e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9wsha2568e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQwsha2568e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU4sha2568e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8sha256l8e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAAsha2568e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQsha256O8e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEsha256H8e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4sha2568e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4sha2568e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0sha2568e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIsha2568e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUsha256r8e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcucsha2568e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMssha2568e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmIsha2568e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoIsha2568e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrwsha256 `8e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4sha25658e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTcsha256 58e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQsha256 8e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Msha256s8e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0sha256 8e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqIsha2568e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUsha2568e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Ysha2568e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4sha256 48e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9wsha256 08e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIosha256 "9$91_m1:localhost:42455sha256 8e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BMsha2568e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3ksha256N8e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjksha256 8e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Qsha256W #;$92_sf1:localhost:42455sha256 8e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBEsha256 p #;$96_sf1:localhost:42455sha256 "9$95_m1:localhost:42455sha256 3$94:localhost:42455sha256 #;$93_sf2:localhost:42455sha256 8e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYsha256B #;$97_sf2:localhost:42455sha256 8e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAsha256a8e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgsha256 "9$98_m2:localhost:42455sha256 8e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUsha256 8e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtksha256 8e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIsha2568e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMsha256]8e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8sha256+8e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48sha256 *8e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMsha256 #<k z  8 G u  Bnw;Dl{9aeQ' $ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800m.room.createmeQ? $eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibilityeeQ/ $1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rulesgeQ3 $JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels eQ']$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800aeQ' $grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800m.room.createmeQ? $vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibilitye eQ/ $cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rulesg eQ3 $PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels eQ']$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800a eQ' $BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800m.room.createm eQ? $IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibilityeeQ/ $h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rulesgeQ3 $T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels eQ']$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800aeQ' $yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.createmeQ? $eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibilityeeQ/ $pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800m.room.join_rulesgeQ3 $eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800m.room.power_levels eQ']$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800m.room.member@anon-20191002_181700-578:localhost:8800aeQ' $13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800m.room.createmeQ? $DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800m.room.history_visibilitye~eQ/ $wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800m.room.join_rulesg}eQ3 $ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800m.room.power_levels |eQ']$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800m.room.member@anon-20191002_181700-577:localhost:8800a{eQ' $P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800m.room.createmzeQ? $81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800m.room.history_visibilityeyeQ/ $L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800m.room.join_rulesgxeQ3 $LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800m.room.power_levels weQ']$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800aveQ' $YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800m.room.creategueQ3 $G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800m.room.power_levelsdteQ- $E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800m.room.tombstone[sQQ/ $1570043195270GcoLc:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.join_rulescrQQ? $1570043195269hcCzg:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800m.room.history_visibility  ?\xFQQo $1570043198272DGmin:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800{"token_id": 557, "txn_id": "563", "stream_ordering": 3036}{"auth_events": [["$1570043193267ZyDyW:localhost:8800", {"sha256": "u9s1hI9ca6uS+Vq+wU+jJxhf3zvVOWxjzYXiLndhgvs"}], ["$1570043191265cqITi:localhost:8800", {"sha256": "/dvPcus4anfie+4mkzpvERNvebJyHPvLCNd9CV+wqnA"}], ["$1570043192266CXqej:localhost:8800", {"sha256": "OPuZpRVoPmnOhxKLMFPBjkX8WZCKqqaDKgUzOop/WGA"}]], "prev_events": [["$1570043195270GcoLc:localhost:8800", {"sha256": "F/u1XneR5rWvLa5mYLT3rk9nFj8A2ZcuXEl8IH0Kb5E"}]], "type": "m.room.message", "room_id": "!hrhDJbmXvXBizKoiiK:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"msgtype": "m.text", "body": "message 2"}, "depth": 7, "prev_state": [], "event_id": "$1570043198272DGmin:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043198315, "hashes": {"sha256": "AojEZYXDUyemw1BkzMAL8sKj69hyqps4V4Y0Kd6jC9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xvpx3VtEkSSSZ10RI8cUW5d6Ei8cGMzmiuCI0LkGem0cplShhSiRCo/HphrI4sA/FH0iL+qN7A6h33WecIJ6Cw"}}, "unsigned": {"age_ts": 1570043198315}}_EeQaK$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3035}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI"], "type": "m.room.power_levels", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"users": {"@anon-20191002_181700-574:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 50, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50}, "depth": 8, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043197087, "hashes": {"sha256": "RsMAsmkPAeEJi7cmFhWzJsyN7CtjN8bBazFIPAvNtWQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zn5hCyA5RkcsiS5s62Rlz7kOTKWugvr8kOlBpyLsIix6deUyvPdhf93pkBSBzdRQbpfQRijaa9k0WksWfzYKDQ"}}, "unsigned": {"age_ts": 1570043197087, "replaces_state": "$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8"}}=DeQa$E2sAfgXJQm-WRq3nbLikXDB63btHGs-Y1olukqQ-nfI!iLHJbsFszubrnybDNz:localhost:8800{"token_id": 557, "stream_ordering": 3034}{"auth_events": ["$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8", "$-GxYLyy8Ou2VXQzhjKLJ6HfSDmPfSmGd5hKNh6t12M8", "$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y"], "prev_events": ["$fXTE_GnOGHwfqunQEkpHEuQGd1FJEvqQi2DCHnmD1t0"], "type": "m.room.tombstone", "room_id": "!iLHJbsFszubrnybDNz:localhost:8800", "sender": "@anon-20191002_181700-574:localhost:8800", "content": {"body": "This room has been replaced", "replacement_room": "!hrhDJbmXvXBizKoiiK:localhost:8800"}, "depth": 7, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043191713, "hashes": {"sha256": "4bdp9PSk0uyI4ZOYDDKO0aG3NzbkSkbX2nCSiEUy7u4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LpsaIr1HFeOuO4T2TmqiRhOcY3s7RzMOUwmv2oP4rFjsDgqWYjhKpCWFaEYn3bmGpfw0vNXtpQiQ8fEus4PEAw"}}, "unsigned": {"age_ts": 1570043191713}} a} { y w u sqomkigeca~xeeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800~weeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~veeQ$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~ueeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800~teeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~seeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800~reeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800~qeeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~peeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800~oeeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800~neeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~meeQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800~leeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800~keeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~jeeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800~ieeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800~heeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~geeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800~feeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800~eeeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~deeQ$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800~ceeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800~beeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~aeeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800~`eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800~_eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~^eeQ$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800~]eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800~\eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~[eeQ$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800~ZeeQ$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y!iLHJbsFszubrnybDNz:localhost:8800   *tJeQau$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3040}{"auth_events": ["$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE", "$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ", "$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "prev_events": ["$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE"], "type": "m.room.join_rules", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043202200, "hashes": {"sha256": "clwFmEBeaRBBOrNQeQna8flWnJO+FOn23COTTQ9/io0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y/pgPxQlm7lHsrq2Z49qC2tr9F6z4MyFa//4Q9uOevQP4IMyY25GuSuCV9dOxOgHH5+iwpvedoGqaUzABhoMAw"}}, "unsigned": {"age_ts": 1570043202200}}kIeQac$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3039}{"auth_events": ["$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ", "$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "prev_events": ["$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "type": "m.room.power_levels", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"users": {"@anon-20191002_181700-576:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043201434, "hashes": {"sha256": "piUOXH40NVRL2yqUzeN3CBIrd60eyJFBtbQAqrQgL54"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/nQRQqpqMuNtqNLdL9qt8sb9Acy3fHd3wH9b64WcUE1KB3M3tgncTo95utCAWExMPeX1IYqgslba6U+tnTCqDg"}}, "unsigned": {"age_ts": 1570043201434}}vHeQay$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3038}{"auth_events": ["$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ"], "prev_events": ["$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ"], "type": "m.room.member", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-576", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-576:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043200811, "hashes": {"sha256": "qpu6WMh/1wYY4dyXfBRfGSjef576kv1OdKRrqEk01fQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JzXWB91W6JnA2lsfK/18PdvbLhaWHLyJ4Wg/PK7ie8D3tf9vIZ3s7vl+81kBy9RwFSFRogHuojR2PoT/kQwZAQ"}}, "unsigned": {"age_ts": 1570043200811}}iGeQa_$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3037}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-576:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043199897, "hashes": {"sha256": "kAKIpvg7T4CgpkT1ywpFsOsproKUGdWfEYctM+rp81k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZHLaOWKMIEkHhtwEBaZ9PG8jDPh/y6LZA19HNU3HTVop3Dzf9eEkEyTHS2acDECK4p4FV1IMTCTAA8P/rfPDg"}}, "unsigned": {"age_ts": 1570043199897}} 9r  V :slPC7 e]]Q=$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y@anon-20191002_181700-612:localhost:8800@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800joinanon-20191002_181700-612C6 e]]Q=$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI@anon-20191002_181700-610:localhost:8800@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800joinanon-20191002_181700-610C5 e]]Q=$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE@anon-20191002_181700-609:localhost:8800@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800joinanon-20191002_181700-609C4 e]]Q=$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800joinanon-20191002_181700-605C3 e]]Q=$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0@anon-20191002_181700-608:localhost:8800@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800joinanon-20191002_181700-608,2 e]]Q $HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800leaveC1 e]]Q=$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc@anon-20191002_181700-606:localhost:8800@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800joinanon-20191002_181700-606C0 e]]Q=$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8@anon-20191002_181700-607:localhost:8829@anon-20191002_181700-607:localhost:8829!zqQJfFCRlSEDPKlQPy:localhost:8800joinanon-20191002_181700-607E/ e]]Q=$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0@anon-20191002_181700-607:localhost:8829@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800inviteanon-20191002_181700-607C. e]]Q =$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800joinanon-20191002_181700-605C- e]]Q=$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs@anon-20191002_181700-603:localhost:8800@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800joinanon-20191002_181700-603C, e]]Q=$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U@anon-20191002_181700-601:localhost:8800@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800joinanon-20191002_181700-601C+ e]]Q=$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ@anon-20191002_181700-584:localhost:8800@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800joinanon-20191002_181700-584C* e]]Q=$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og@anon-20191002_181700-583:localhost:8800@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800joinanon-20191002_181700-583C) e]]Q=$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y@anon-20191002_181700-582:localhost:8800@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800joinanon-20191002_181700-582C( e]]Q=$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI@anon-20191002_181700-580:localhost:8800@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800joinanon-20191002_181700-580C' e]]Q=$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU@anon-20191002_181700-579:localhost:8800@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800joinanon-20191002_181700-579C& e]]Q=$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E@anon-20191002_181700-578:localhost:8800@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800joinanon-20191002_181700-578C% e]]Q=$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk@anon-20191002_181700-577:localhost:8800@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800joinanon-20191002_181700-577C$ e]]Q=$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So@anon-20191002_181700-576:localhost:8800@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800joinanon-20191002_181700-576  w kNeQac$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3044}{"auth_events": ["$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE", "$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "prev_events": ["$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "type": "m.room.power_levels", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"users": {"@anon-20191002_181700-577:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043206803, "hashes": {"sha256": "rrxOrxtUwQwIm0bOETNlTyyEPeCWEngrdJ1JQRipqRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dl3MyAAiQDgKQExGA9r8yA9kbsTaUYZxVGvjpLwdH2OJJgEqgBAlseCF0ws6Y5fAGIVhrPMSeLTu5PdZ2bVuBQ"}}, "unsigned": {"age_ts": 1570043206803}}vMeQay$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3043}{"auth_events": ["$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE"], "prev_events": ["$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE"], "type": "m.room.member", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-577", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-577:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043206153, "hashes": {"sha256": "UK5aikUFF1pckEIPSRll+XEAZpL5g5r33eFx/Dqq3iU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Pfow8UgdbwD+DeHDqtQD+qkl7+H975L5zZNO8N9LGNWL3ECnsYClmOs0ScneSWQWiSwjILZQK7Ji3enD3hlyBQ"}}, "unsigned": {"age_ts": 1570043206153}}iLeQa_$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3042}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-577:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043205131, "hashes": {"sha256": "nmfQ6Z16wUV9sRsm7u7yvmACHEeGMY+LtXcqk8XkCzk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wp/dB9nh1UZrXzjpNIhXOVJSmHn+qmIHeS1lL+rBNmk4UhncUHtpF9AzqKZipJzgM8EkCm5WyZzDkQx1s8AbCQ"}}, "unsigned": {"age_ts": 1570043205131}}KeQa$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4!ijOiudvuzOLNmgNKfG:localhost:8800{"token_id": 559, "stream_ordering": 3041}{"auth_events": ["$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE", "$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ", "$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So"], "prev_events": ["$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls"], "type": "m.room.history_visibility", "room_id": "!ijOiudvuzOLNmgNKfG:localhost:8800", "sender": "@anon-20191002_181700-576:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043203074, "hashes": {"sha256": "ZjJxZ1tVb3/p+zBrVFoqjDYTsyep//lQbvNFrIhUx58"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HrI6rzjV5nnX0rO6Ll8hK24y7TZ5xsG03kC46RxVwX1q1CTmAQl6ElBnUuPfL0Imyg9X3+Xcrok/3zNLjrsXBw"}}, "unsigned": {"age_ts": 1570043203074}} s 4 h 6 d]c@anon-20191002_181700-609:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5KR0pKaXlXVTJZTjpfeVIKMDAyZnNpZ25hdHVyZSDu25ZQUNrElC1w8D-7akohXJPWdBEgbR0gt_QpQE4f6Ao127.0.0.13d]c@anon-20191002_181700-610:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo3Mi5lYlV2a2tfX1dUZnIKMDAyZnNpZ25hdHVyZSCn9NKRbpbNtymqTeTuS2KkH7b7NnoLOyqZngASnYZkXgo127.0.0.14^Y]@anon-20191002_181700-5:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBMTGYmczhEV1hrNE5Bc1dNCjAwMmZzaWduYXR1cmUgSW2vVKrl_c3bzHa0o301pMedsy7KEeVRAd3ayrMPMNwK127.0.0.1a[a@anon-20191002_181700-60:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVZfNEBsV2EzVVlvUlZeYwowMDJmc2lnbmF0dXJlIJ_bECTUXXqtbWoHvpO6Q0-6smO_il2mpyYonoPTJcVWCg127.0.0.13d]c@anon-20191002_181700-608:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteSHZmWnc4b3BCanVDOGEKMDAyZnNpZ25hdHVyZSAJXE0br2225NWIy-FWwqW1eaYEjTysP1DwchdfqEdGbwo127.0.0.12d]c@anon-20191002_181700-605:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJ0OD1CbCZQVXRZUEYuRF4KMDAyZnNpZ25hdHVyZSAR-RXomZfd9jfoSoaVI6pRsyqBlKwUmG561zUi-FIt2Qo127.0.0.10d]c@anon-20191002_181700-604:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDd2Z3M4VUdpZFk9PVQqb0QKMDAyZnNpZ25hdHVyZSD39rZw4ejANsei46y5Hswz78deevadOTxBob0SNf_4oAo127.0.0.11d]c@anon-20191002_181700-603:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERTTWUxSF9aWGY3dSNmMG8KMDAyZnNpZ25hdHVyZSA6nMib2JiEAnfufACgSZiuu29stAm69nlXei1bDKQbHgo127.0.0.1.d]c@anon-20191002_181700-602:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQmbiswUTlOdm09bnE7R0YKMDAyZnNpZ25hdHVyZSAu3jjIIkaMnRtR2dDenDeOtlu8Y3BzyovqanzgrC0ccgo127.0.0.1/d]c@anon-20191002_181700-601:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJhLTlVUEkxMTZMaDcrfnAKMDAyZnNpZ25hdHVyZSCVL4wOss3stQBqS0T2dMMSFgrqGKCdKqLQErziY58pOwo127.0.0.1,d]c@anon-20191002_181700-600:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhczI4NHpvOjIyKkp-ZHcKMDAyZnNpZ25hdHVyZSAD9JeJIP3Tupr5ZZbRQoM8Hx-snGBPdo-286DrRelJDwo127.0.0.1-  vReQay$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3048}{"auth_events": ["$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M"], "prev_events": ["$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M"], "type": "m.room.member", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-578", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-578:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043211439, "hashes": {"sha256": "jZX1r+Xue+EjRHG6sQhKma8nvMBPlIbKl/uD4Sdp+tw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hJgqMZTvwq/8IWbG2BdIGOzMdOrZi7JZQOVnv4zTQCWt0k09nVJaBj8LYlalZzF07nay5qF8HnBiH+kJk+ojCQ"}}, "unsigned": {"age_ts": 1570043211439}}iQeQa_$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3047}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-578:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043210698, "hashes": {"sha256": "5uKxoAZOYdydUZkCKwdXPgQS37UwqbvFI+wjc2g+klg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K2Wa/pXvppVJp+AVfWdOQvlLZAHZ89mzj5fCTBoLCi8zOjY/C2SASN0S7vPoeBRn0ywQnHimAxBnZn49tF6HAQ"}}, "unsigned": {"age_ts": 1570043210698}}PeQa$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3046}{"auth_events": ["$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI", "$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE", "$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "prev_events": ["$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA"], "type": "m.room.history_visibility", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043208176, "hashes": {"sha256": "DyMMZUNjIbsC2GyP4xAGr7dvKqDMlwxxUG1MTwvasg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pRoXqoaSoFB6YqJjE/Pxwhpt0fS0NEvoyf7sEROE3shOce04qVQqkFCyVFhAYuYgUQDT+k4J7WOqK4Oi6TZHBQ"}}, "unsigned": {"age_ts": 1570043208176}}tOeQau$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:8800{"token_id": 560, "stream_ordering": 3045}{"auth_events": ["$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI", "$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE", "$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk"], "prev_events": ["$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI"], "type": "m.room.join_rules", "room_id": "!ybXveQoxPVhjpKHAkG:localhost:8800", "sender": "@anon-20191002_181700-577:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043207509, "hashes": {"sha256": "63lM8Ek92IK3Vl9L9wXm5mKQpP1treL82aJSenaKALw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HpFPZ9n/ZTpjb4wL+5dWYb+lHj/QYQ5u118zmySz2dvBeccpobhfGAZD42FRq6PqGzyWInej0lDolQdoFDLWDw"}}, "unsigned": {"age_ts": 1570043207509}} X b  `  pv(.8B&xe3Q ]$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAm.room.power_levels!XGAmnfaVvjDtQJuufa:localhost:8800mrzms@anon-20191002_181700-582:localhost:8800 we'Q ]$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Ym.room.member!XGAmnfaVvjDtQJuufa:localhost:8800momps@anon-20191002_181700-582:localhost:8800v e'Q  ]$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwm.room.create!XGAmnfaVvjDtQJuufa:localhost:8800mlml@anon-20191002_181700-582:localhost:8800,ue?Q ]$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYm.room.history_visibility!OXpGdKbowFUTChPdmF:localhost:8800mamb@anon-20191002_181700-580:localhost:8800$te/Q ]$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wm.room.join_rules!OXpGdKbowFUTChPdmF:localhost:8800m^lm_F@anon-20191002_181700-580:localhost:8800&se3Q ]$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8m.room.power_levels!OXpGdKbowFUTChPdmF:localhost:8800mZm\<@anon-20191002_181700-580:localhost:8800 re'Q ]$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIm.room.member!OXpGdKbowFUTChPdmF:localhost:8800mXmY!@anon-20191002_181700-580:localhost:8800q e'Q  ]$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Awm.room.create!OXpGdKbowFUTChPdmF:localhost:8800mUmU@anon-20191002_181700-580:localhost:8800,pe?Q ]$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19Em.room.history_visibility!XUbDuPDiMTXJZDyAPc:localhost:8800mLbmN@anon-20191002_181700-579:localhost:8800$oe/Q ]$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkm.room.join_rules!XUbDuPDiMTXJZDyAPc:localhost:8800mImmJ @anon-20191002_181700-579:localhost:8800&ne3Q ]$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJkm.room.power_levels!XUbDuPDiMTXJZDyAPc:localhost:8800mEmG4@anon-20191002_181700-579:localhost:8800 me'Q ]$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUm.room.member!XUbDuPDiMTXJZDyAPc:localhost:8800mBmC7@anon-20191002_181700-579:localhost:8800l e'Q  ]$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQm.room.create!XUbDuPDiMTXJZDyAPc:localhost:8800m?m@F@anon-20191002_181700-579:localhost:8800,ke?Q ]$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQm.room.history_visibility!VhUAklonNaWKRnLkcr:localhost:8800m7tm9@anon-20191002_181700-578:localhost:8800$je/Q ]$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0m.room.join_rules!VhUAklonNaWKRnLkcr:localhost:8800m4m5V@anon-20191002_181700-578:localhost:8800&ie3Q ]$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcm.room.power_levels!VhUAklonNaWKRnLkcr:localhost:8800m1m2@anon-20191002_181700-578:localhost:8800 he'Q ]$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Em.room.member!VhUAklonNaWKRnLkcr:localhost:8800m.m/@anon-20191002_181700-578:localhost:8800g e'Q  ]$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Mm.room.create!VhUAklonNaWKRnLkcr:localhost:8800m+m,.@anon-20191002_181700-578:localhost:8800,fe?Q ]$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54m.room.history_visibility!ybXveQoxPVhjpKHAkG:localhost:8800m!m$~@anon-20191002_181700-577:localhost:8800$ee/Q ]$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAm.room.join_rules!ybXveQoxPVhjpKHAkG:localhost:8800mUm @anon-20191002_181700-577:localhost:8800 g * T~=gg2]!c;@anon-20191002_181700-588:localhost:8800CHJPRGUPAUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhqSGd1d0BsaDFHO3BeaUwKMDAyZnNpZ25hdHVyZSA7uV5hX3vKBnLk0QaC8CYMcssMCkflw8aLsSo3BB2bIwog1]!c:@anon-20191002_181700-587:localhost:8800VGJOOHQHVEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZkbF55WkZFfm14dyNfa2YKMDAyZnNpZ25hdHVyZSBLYH3CJ0T1Q3BRGeLp6D6Nr0P_DWeASmh9STN8_fvomwog0]!c9@anon-20191002_181700-586:localhost:8800DOTBNZJMYCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRCVnBqMEBRaGZtWjdTZEYKMDAyZnNpZ25hdHVyZSApW_9ygROP-xkvgLFU8SCjdYJi_4WNmFICdZ7S6MH60Qog/]!c8@anon-20191002_181700-585:localhost:8800XLLZJGYIHRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVCS3BRQDJqeU1BRE9oPTUKMDAyZnNpZ25hdHVyZSC2VSzsdjWxC0I8UyNUBZp8kSpBgQTjCYiVQLs2_Z2zGQog.]!c7@anon-20191002_181700-584:localhost:8800FZKRURXWXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEZPJkF4RnUtYVF-MDFTb1oKMDAyZnNpZ25hdHVyZSDOsredtu5HxxLeGWlpO64Nf5DkwOHlWzJV5qsXYtmkpgog-]!c6@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZSWl8rOzEjajFFYTd2I2IKMDAyZnNpZ25hdHVyZSDb0ARVTRwgxJ9n2xZSsqtFE-kWSCAqKrnveKNKT2yEfAog,]!c5@anon-20191002_181700-582:localhost:8800WSKNBNWTARMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhzOWhMeEYqVXUwX3BqQDUKMDAyZnNpZ25hdHVyZSDdO4g9ve1YbG18HSaUmWIWXAU33WOkxZdyc3oV1D_3-gog+]!c4@anon-20191002_181700-581:localhost:8800RYCHJSFPQZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNkYlNKQzcmOkJWQE83ZnUKMDAyZnNpZ25hdHVyZSDA8NBjWDjogt9egNUSGDlD4Kbhka-oPj8iuFKNplBr7Qog*]!c3@anon-20191002_181700-580:localhost:8800CRNUPLGBOPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9XQnR4QXFQOU1UcGJYYmYKMDAyZnNpZ25hdHVyZSCw0MmuTht2u4SOs0M9iLvFkT-HsU8EXuXK8e0VjxEMqAog)]!c2@anon-20191002_181700-579:localhost:8800LLEXLPJZBRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs6emxhRS1pLHE2RHdlQG8KMDAyZnNpZ25hdHVyZSAyYAH-4r6MLjDH63Exb6-SclYAh48qlh5-5ew9x_hyewog(]!c1@anon-20191002_181700-578:localhost:8800JVKVSBXCSNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVPXlMybm5eT0VeUHhCQCwKMDAyZnNpZ25hdHVyZSD83jI82c4_pDdhTkwuEGiJZV0Sm3AAMHDtkjGd3HAIJwo NVRN~z v r n j fb^ZJF:eeQ$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA!ybXveQoxPVhjpKHAkG:localhost:88009eeQ$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTA$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI!ybXveQoxPVhjpKHAkG:localhost:88008eeQ$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk!ybXveQoxPVhjpKHAkG:localhost:88007eeQ$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE!ybXveQoxPVhjpKHAkG:localhost:88006eeQ$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls!ijOiudvuzOLNmgNKfG:localhost:8800NeeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800MeeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800LeeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800KeeQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800JeeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800IeeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800HeeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800GeeQ$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800FeeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800EeeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800DeeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800CeeQ$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800BeeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800AeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800@eeQ$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800?eeQ$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800>eeQ$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800=eeQ$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800<eeQ$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E!VhUAklonNaWKRnLkcr:localhost:8800;eeQ$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M!VhUAklonNaWKRnLkcr:localhost:8800  N8&eQ?$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3132}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc"], "type": "m.room.message", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"body": "Sharing illegal content on this server is not permitted and rooms in violation will be blocked.", "msgtype": "m.text"}, "depth": 8, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043303112, "hashes": {"sha256": "RkeDGcbuGXP/aEbxbSSJm1GqHdYRtgumInH4qUGylaM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aZTn6IJUCFEUvNNLv6WzU7xvjJNwLg5yvN22JLxa8qKI08HZzYwohtmn6DpkWFZsiAVuFnem+EbFG1Ri33K6DQ"}}, "unsigned": {"age_ts": 1570043303112}}k%eQac$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3131}{"auth_events": ["$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "type": "m.room.power_levels", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"users": {"@anon-20191002_181700-608:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043302746, "hashes": {"sha256": "DNOBcuZ+9YGZkSjxbAj0MJbpzPMFiNUR0iXqompC6JE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "52xEbssUO4MHC7GO3PJs33afc+BxRXcCGYlDuZzP+nvsDF22KawAcGhfS726l+izoLNrpEhhtU4JlN3MFry8Ag"}}, "unsigned": {"age_ts": 1570043302746}}E$eQ?9$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3130}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw"], "prev_events": ["$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU"], "type": "m.room.member", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-605", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-605:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043301384, "hashes": {"sha256": "vVzYp0j9+ixw8QpFXePZWpKWUGQQZNkAwH5R+Q53YtY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dRpjGjjnugCL66y+DtvgUA2w3H0F4Sx/qxEWEPH7OknXqFiALVhnq+ShIn1CNgASGkOnayUCIyTzcZQhPWTwCg"}}, "unsigned": {"age_ts": 1570043301384}}v#eQay$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3129}{"auth_events": ["$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4"], "prev_events": ["$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4"], "type": "m.room.member", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-608", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-608:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043300253, "hashes": {"sha256": "7hLm0WraynPmPpnphUtERJQ25Ocua3T8i/H+pNtUymg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5sUe56jAHMbXX0gesBn18IBL+DjoMHcUVnFMcoviV1g20ckjaCzIK1cDxATR8DWTQqfdXZ9Sa9+q+bkQsHgVCQ"}}, "unsigned": {"age_ts": 1570043300253}}  iVeQa_$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3052}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-579:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043215850, "hashes": {"sha256": "dKRqbKE3nK+Qk2z7k88b0q4mYSqQazY6pRKTLd6kaLE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LEA6YefHrQiwqSDWjO8VIq2zDeniA2mAAUEXTpzpEreczpJi9+51TBYovMQ7mqhHoCPPHZnsDXfUMZ1fVsnwDg"}}, "unsigned": {"age_ts": 1570043215850}}UeQa$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3051}{"auth_events": ["$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc", "$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M", "$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "prev_events": ["$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0"], "type": "m.room.history_visibility", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043213684, "hashes": {"sha256": "f95zDytZSYGwThBo3jm5L+Pc930/YqtNaz3QPjCIzP0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wQLqTPG8K+fnzEFg5NftwWa8NDCL6EkTwSJr98Wz62/yJBQdvhalrO1MCPqHVeejxfwE70gQHNoLiRGQb7TCDw"}}, "unsigned": {"age_ts": 1570043213684}}tTeQau$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3050}{"auth_events": ["$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc", "$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M", "$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "prev_events": ["$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc"], "type": "m.room.join_rules", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043212958, "hashes": {"sha256": "sUQYFeUBIje2d8UlWodtD/c2e+sJBIbjiqKbgNH0Tic"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o9iuUYHx6DG8l7dApYCvRI02w4WumKY/CYWKSfgZYxRkv/qe+1qduqtx2q2i705N9nqY0XJKyhJhKRuNcnzBBA"}}, "unsigned": {"age_ts": 1570043212958}}kSeQac$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc!VhUAklonNaWKRnLkcr:localhost:8800{"token_id": 561, "stream_ordering": 3049}{"auth_events": ["$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50M", "$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "prev_events": ["$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E"], "type": "m.room.power_levels", "room_id": "!VhUAklonNaWKRnLkcr:localhost:8800", "sender": "@anon-20191002_181700-578:localhost:8800", "content": {"users": {"@anon-20191002_181700-578:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043212160, "hashes": {"sha256": "xhY4a65ijq9Voi75iKzjZ0GgCfXwywIudDaD8HWhnz0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LaJAuOr6UAPyt4/iJXIT8xdUP3LsqCzOhrP7UrKtEkUotqsKzQ9Kgmx38V8RoNxcTPazk1cJbBgcIb+moPbMDQ"}}, "unsigned": {"age_ts": 1570043212160}} -RM H C > 9 4/* |%wrmhc TQe !UTAORDrNxIbSlGByAp:localhost:8800$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4TQe !MXhwoqNXvexeDDSOZT:localhost:8800$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUTQe !MXhwoqNXvexeDDSOZT:localhost:8800$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCATQe !MXhwoqNXvexeDDSOZT:localhost:8800$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwTQe !MXhwoqNXvexeDDSOZT:localhost:8800$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgTQe !MXhwoqNXvexeDDSOZT:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcTQe !MXhwoqNXvexeDDSOZT:localhost:8800$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAT~Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8T}Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$VhhHkiKpSbwh9kSk0LkPDjPtzbV3etTy0KPHKt3WXrET|Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0T{Qe !zqQJfFCRlSEDPKlQPy:localhost:8800$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YTzQe !zqQJfFCRlSEDPKlQPy:localhost:8800$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQTtQe !JnAKXOrlyisFUpgJPw:localhost:8800$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0TnQe !XRAZJeoZBhGeHKKjaG:localhost:8800$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygTyQe !zqQJfFCRlSEDPKlQPy:localhost:8800$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwTxQe !zqQJfFCRlSEDPKlQPy:localhost:8800$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQTwQe !zqQJfFCRlSEDPKlQPy:localhost:8800$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXATvQe !zqQJfFCRlSEDPKlQPy:localhost:8800$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98TuQe !zqQJfFCRlSEDPKlQPy:localhost:8800$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwThQe !GwLdUoDplyVUogXDzu:localhost:8800$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgTgQe !GwLdUoDplyVUogXDzu:localhost:8800$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVATfQe !GwLdUoDplyVUogXDzu:localhost:8800$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9KwTeQe !GwLdUoDplyVUogXDzu:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQTdQe !GwLdUoDplyVUogXDzu:localhost:8800$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NoTcQe !nfxDdcgDfooxyiAzaB:localhost:8800$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUTbQe !nfxDdcgDfooxyiAzaB:localhost:8800$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4TaQe !nfxDdcgDfooxyiAzaB:localhost:8800$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQT`Qe !nfxDdcgDfooxyiAzaB:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgT_Qe !nfxDdcgDfooxyiAzaB:localhost:8800$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMT^Qe !XGAmnfaVvjDtQJuufa:localhost:8800$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esT]Qe !XGAmnfaVvjDtQJuufa:localhost:8800$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0T\Qe !XGAmnfaVvjDtQJuufa:localhost:8800$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAT[Qe !XGAmnfaVvjDtQJuufa:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YTZQe !XGAmnfaVvjDtQJuufa:localhost:8800$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwTYQe !OXpGdKbowFUTChPdmF:localhost:8800$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYTXQe !OXpGdKbowFUTChPdmF:localhost:8800$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wTWQe !OXpGdKbowFUTChPdmF:localhost:8800$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8TVQe !OXpGdKbowFUTChPdmF:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRITUQe !OXpGdKbowFUTChPdmF:localhost:8800$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwTTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19ETSQe !XUbDuPDiMTXJZDyAPc:localhost:8800$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkTRQe !XUbDuPDiMTXJZDyAPc:localhost:8800$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJkTQQe !XUbDuPDiMTXJZDyAPc:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUTPQe !XUbDuPDiMTXJZDyAPc:localhost:8800$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQTOQe !VhUAklonNaWKRnLkcr:localhost:8800$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ -RM H C > 9 4/*|%w rmhc THQe !XRAZJeoZBhGeHKKjaG:localhost:8800$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicTGQe !XRAZJeoZBhGeHKKjaG:localhost:8800$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94TFQe !XRAZJeoZBhGeHKKjaG:localhost:8800$IPzTcEaIlBdAD1ZyQe0y_GQsq3w8e_dXZtiMbBn0mPoTEQe !XRAZJeoZBhGeHKKjaG:localhost:8800$-mwmClLyceptmmit3wrEDlMmZsdmkvu_qy8EnTqWydcTDQe !XRAZJeoZBhGeHKKjaG:localhost:8800$L8bpvBUdwfRAC2sTiKJZUjbdOnPy_jCKHcMLey0bZQMTCQe !XRAZJeoZBhGeHKKjaG:localhost:8800$h7yP9rv-uFZGryfUIW_7kQG8yoxjhFE6yyoliJCg5T8TBQe !XRAZJeoZBhGeHKKjaG:localhost:8800$ncS-aHLC2SvN6RgZejF_h7a1Zm4heyepF3fu6reGAY8TAQe !XRAZJeoZBhGeHKKjaG:localhost:8800$AcK-Fs6WS8xCofQi-h8oN4ErdTcYRGtLhavEA5KK0ggT@Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$etNszUuEkaAQahBjB31SwFx5yGpFNRBm8lAlk3Gqph0T?Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$3Yfw5giqfLH2ej3VV0OwXccMnXeAphiNaRi06YNb7NkT>Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygT=Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAT<Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6WkT;Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncT:Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8UT9Qe !XRAZJeoZBhGeHKKjaG:localhost:8800$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1UT8Qe !GwLdUoDplyVUogXDzu:localhost:8800$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8T7Qe !GwLdUoDplyVUogXDzu:localhost:8800$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwT6Qe !GwLdUoDplyVUogXDzu:localhost:8800$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgT5Qe !GwLdUoDplyVUogXDzu:localhost:8800$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAT4Qe !GwLdUoDplyVUogXDzu:localhost:8800$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9KwT3Qe !GwLdUoDplyVUogXDzu:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQT2Qe !GwLdUoDplyVUogXDzu:localhost:8800$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NoT1Qe !nfxDdcgDfooxyiAzaB:localhost:8800$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBET0Qe !nfxDdcgDfooxyiAzaB:localhost:8800$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUT/Qe !nfxDdcgDfooxyiAzaB:localhost:8800$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4T.Qe !nfxDdcgDfooxyiAzaB:localhost:8800$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQT-Qe !nfxDdcgDfooxyiAzaB:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgT,Qe !nfxDdcgDfooxyiAzaB:localhost:8800$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMT+Qe !XGAmnfaVvjDtQJuufa:localhost:8800$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esT*Qe !XGAmnfaVvjDtQJuufa:localhost:8800$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0T)Qe !XGAmnfaVvjDtQJuufa:localhost:8800$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAT(Qe !XGAmnfaVvjDtQJuufa:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YT'Qe !XGAmnfaVvjDtQJuufa:localhost:8800$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwT&Qe !OXpGdKbowFUTChPdmF:localhost:8800$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYT%Qe !OXpGdKbowFUTChPdmF:localhost:8800$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wT$Qe !OXpGdKbowFUTChPdmF:localhost:8800$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8T#Qe !OXpGdKbowFUTChPdmF:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIT"Qe !OXpGdKbowFUTChPdmF:localhost:8800$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0AwT!Qe !XUbDuPDiMTXJZDyAPc:localhost:8800$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19ET Qe !XUbDuPDiMTXJZDyAPc:localhost:8800$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMkTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJkTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUTQe !XUbDuPDiMTXJZDyAPc:localhost:8800$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQTQe !VhUAklonNaWKRnLkcr:localhost:8800$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ  ZeQa$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3056}{"auth_events": ["$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk", "$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ", "$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "prev_events": ["$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk"], "type": "m.room.history_visibility", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043219042, "hashes": {"sha256": "VewepaM5zly2B9nlKSeF5Bgwky2ZmmTZ8fmPOG7ysK4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r27+Jqqg6Fwo9O95yCDRUq8XeC5nNXuiEdVfPtZM9fqwg2Q80yv1b9q9751czBmsY8ULIrY93diICjBZWY/RCg"}}, "unsigned": {"age_ts": 1570043219042}}tYeQau$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3055}{"auth_events": ["$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk", "$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ", "$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "prev_events": ["$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk"], "type": "m.room.join_rules", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043218285, "hashes": {"sha256": "nU9obG5fkURyTG49FU5wvoa/yYROtGxkwvlm6YpOo2w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L7HLxeXfh3OMJ5H3WBuqcjWXiMxCLYUmGAiB7s/dMRNQmk6CG8RkP/9Va8/hDir+r326pXOMn23+QzZix9zkAw"}}, "unsigned": {"age_ts": 1570043218285}}kXeQac$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3054}{"auth_events": ["$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ", "$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "prev_events": ["$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU"], "type": "m.room.power_levels", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"users": {"@anon-20191002_181700-579:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043217368, "hashes": {"sha256": "ftRBic9VIjQ4hCzqOyiPZb8QzhJ8vQEpdQyAO/Q3Ohs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vVIPGunw4MefeoYy2jfnp8pnaJ9PNhnMMlvKdOXlbv0Jh5tt2qQoVxYjkweKH73og5TMA8vR9XagZVjVrXzuBw"}}, "unsigned": {"age_ts": 1570043217368}}vWeQay$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800{"token_id": 562, "stream_ordering": 3053}{"auth_events": ["$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ"], "prev_events": ["$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ"], "type": "m.room.member", "room_id": "!XUbDuPDiMTXJZDyAPc:localhost:8800", "sender": "@anon-20191002_181700-579:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-579", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-579:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043216594, "hashes": {"sha256": "GRsH7NoYGsf37byc8RXUSQn2jjiJbAJ97KnJmYNYDi4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pPgzpaWCHBIqQgXLb1L83DG5hGRSpJ6mTnrDk5RovKwj5y2ENLDRKyEyIsS0jw3E+gpzXbHu8uxOcTTdNAnACg"}}, "unsigned": {"age_ts": 1570043216594}} ".D9.NC 8 - { " p  e ZO.|#qfVVeL$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQsha256)-JH\ja!{Lh TńVUeL$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQsha256xs>8WO( wg ʍi$VTeL$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0sha256CG1jx'4z"ha{)͍VSeL$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tcsha256y(Kd!0.J꬗m08ZnVReL$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61Esha256Nv}"tL٦37DQVQeL$13Ju5ujQVrNqN3B-Ekxdbiv2npggPqU0rJ1vD2jA50Msha256rnVj7p~L]n+ >4ohCVPeL$DZIeKrg0pIcmq6yYcvUg95dUkqx5zgeviUaVR9cQh54sha256 *4&r TyFGVOeL$wwIPFLvddwcRpQsg0NBN24iWXjB65eXbFvuBZ647cTAsha256w Mۈ^0zg;q0VNeL$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIsha256ɴ ZS"p,}˅<A!ʬ~6VoeL$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgsha256v{Q;BJ`f-VneL$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAsha256;KSYj5)i}\ؘ!@+PVmeL$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kwsha256z헑Pw!d~< xU, /VleL$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQsha2569zX(h`EBt$Ǽ+:$VkeL$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5Nosha256;]3n{QGK8 V rz2VjeL$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBEsha256+|yszU;.RWJ@VieL$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUsha256JbvcXS}7Pt{Yο˶%VheL$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4sha256{P`N+f47 BV N!caVgeL$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQsha256NwZ9^7ʰ1H/6HVfeL$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogsha256zQ(ƍuCB4d VeeL$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMsha256uסK?cT23ʻlz1AcVdeL$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367essha256xȻ}\=*dr" VceL$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0sha256+ †Pe$pHu3,BVbeL$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqAsha256$%5;BWlLU2VXeL$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJksha256OpΚ\~"t,_ pcTVWeL$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUsha256! Sdyj2I1غ]|t5 a} { y w u sqomkigeca~eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800~ eeQ$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800~eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~eeQ$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800~~eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800~}eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~|eeQ$IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800~{eeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800~zeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800~yeeQ$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800   *t^eQau$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3060}{"auth_events": ["$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8", "$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw", "$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "prev_events": ["$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8"], "type": "m.room.join_rules", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043223660, "hashes": {"sha256": "bturi9NMfnBw2sQxYwCJnGgqSDY9nGStGGTGzFaaYBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lmN1rNB11iS5kN5aXxShGZJ+xohJbtNfgbs0E54SSJsoq8HeTCJZ+qgbqtQaMWRGGUOGfRjbUY3U4ApuSEKVAw"}}, "unsigned": {"age_ts": 1570043223660}}k]eQac$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3059}{"auth_events": ["$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw", "$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "prev_events": ["$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "type": "m.room.power_levels", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"users": {"@anon-20191002_181700-580:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043222758, "hashes": {"sha256": "r8wrAIFxRsWYkG0wu6UB04mCtpO4tAVGuhhnOyXlTWU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6o8OSCP0W5XWHB0gaN9sKl5FqXuPJl1OA66CpA268ddQm0S+P5VeMM259Rw2SfJ9WKXM9QVvFfu2M+zzBPTTBA"}}, "unsigned": {"age_ts": 1570043222758}}v\eQay$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3058}{"auth_events": ["$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw"], "prev_events": ["$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw"], "type": "m.room.member", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-580", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-580:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043222190, "hashes": {"sha256": "86L5pDh/Q+iE3tcnfKXlURBofSXclSvOGekuLrdyvkk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iW9DUMAYf5g3paVK1da9A3RmIeTnJJpYhFyKC8wWtTSfnkpwbB/GJv5UJI/74J9k1ECARNO58Ea7Rh19j5c7Bw"}}, "unsigned": {"age_ts": 1570043222190}}i[eQa_$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3057}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-580:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043221405, "hashes": {"sha256": "X5Z8G+VXD2vXVvdqrTyo/uRGW1hoHlID1FXMnEtU9NM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zR64RLkrJLF+cMDhjudIG81M0OdvmzD7FoFnDx2AGjif57biq8V72VkQ0XSWENBYK+1MpEIrsBwqbYp2UWIRCg"}}, "unsigned": {"age_ts": 1570043221405}} #*R W {   > Is`#Mw 1cQ' e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.create$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8 Q']e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsiQ3 e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_EgQ/ e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rules$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNkoQ? e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibility$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Ua Q# e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.name$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0cQ' e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.create$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U Q']e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8UiQ3 e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncgQ/ e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rules$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6WkoQ? e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibility$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAaQ# e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.name$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyggQ/ e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.join_rules$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwlQ9 e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.canonical_alias$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQiQ3 e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.power_levels$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98cQ' e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.create$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwo|Q? e !GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibility$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgg{Q/ e !GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rules$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAizQ3 e !GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw yQ']e !GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQcxQ' e !GwLdUoDplyVUogXDzu:localhost:8800m.room.create$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NoowQ? e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibility$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUgvQ/ e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rules$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4iuQ3 e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ tQ']e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgcsQ' e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.create$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMorQ? e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibility$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esgqQ/ e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rules$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0ipQ3 e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA oQ']e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YcnQ' e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.create$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQwomQ? e !OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibility$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCYglQ/ e !OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rules$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6wikQ3 e !OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 EP~.Z _ # ( P [I eQ']$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI!OXpGdKbowFUTChPdmF:localhost:8800m.room.member@anon-20191002_181700-580:localhost:8800joina eQ' $BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw!OXpGdKbowFUTChPdmF:localhost:8800m.room.createm eQ? $IRAWu4dREoTvmb4BEXbFG_9VeA5IYmovlcXD969A19E!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.history_visibilityeeQ/ $h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.join_rulesgeQ3 $T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.power_levels eQ']$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.member@anon-20191002_181700-579:localhost:8800joinaeQ' $yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ!XUbDuPDiMTXJZDyAPc:localhost:8800m.room.createmeQ? $eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ!VhUAklonNaWKRnLkcr:localhost:8800m.room.history_visibilityaeQ' $xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.createmeQ? $4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibilityeeQ/ $O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rulesgeQ3 $es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels eQ']$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800joinaeQ' $gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800m.room.createmeQ? $SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibilityeeQ/ $e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rulesgeQ3 $4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels eQ']$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800joinaeQ' $ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800m.room.createmeQ? $eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibilityeeQ/ $1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rulesgeQ3 $JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels eQ']$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800joinaeQ' $grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800m.room.createmeQ? $vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800m.room.history_visibilitye eQ/ $cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800m.room.join_rulesg eQ3 $PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8!OXpGdKbowFUTChPdmF:localhost:8800m.room.power_levels  w kbeQac$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3064}{"auth_events": ["$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw", "$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "prev_events": ["$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "type": "m.room.power_levels", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"users": {"@anon-20191002_181700-582:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043228794, "hashes": {"sha256": "/G85LJhHMtmfJh+jl2kd61PxZmUbH1vXGnTvrMZjT+8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZCGYQk1TCl6jFXMOSVLTuFlZRU1VZHQyOkPVGAfKbuPCoQy0fqkzjHM1CG3rL2OPNdCEdX8hRVcegMJKzwCsBg"}}, "unsigned": {"age_ts": 1570043228794}}vaeQay$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3063}{"auth_events": ["$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw"], "prev_events": ["$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw"], "type": "m.room.member", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-582", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-582:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043228132, "hashes": {"sha256": "IiBuL1FxT7sfErcXhJoferhBbtvCqB6P5cZGOrldLjU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WZDjgqlNmvCJpxYHl9OoLDNvR2ZvM3QNw+wUa4OK+K2rng4+Jj5qHdqurF3Vy/tABRYeECVFlH6TzSrBYiKOBA"}}, "unsigned": {"age_ts": 1570043228132}}i`eQa_$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3062}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-582:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043227284, "hashes": {"sha256": "bt+6yR3lEYF0LTOpI5s05JGfvA8TjoJ/iVx+AhulcRw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vYvxVjvvMMl7Ab01Um4f2hyJmoPdhy23k5CWaT0qp4Iz/3AxT7FFPzyfHf3ckWto2qATnNKKk0TA2l6WpJoSCg"}}, "unsigned": {"age_ts": 1570043227284}}_eQa$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800{"token_id": 563, "stream_ordering": 3061}{"auth_events": ["$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8", "$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw", "$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRI"], "prev_events": ["$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w"], "type": "m.room.history_visibility", "room_id": "!OXpGdKbowFUTChPdmF:localhost:8800", "sender": "@anon-20191002_181700-580:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043224343, "hashes": {"sha256": "yuqpfb/Tf9UUaWiEQRtKPgIhHPx4efQ9i0lzTXCoDf0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5/xjoXeOJ6fZ2rsticNbmgY+dWyflYZvi+7+Ywjt1oh87UbDUCYjmT4QSNLU2I/40Mxh97plPh/9nkfwJwmKCQ"}}, "unsigned": {"age_ts": 1570043224343}} @GM ] ! m 1 T  _  j )p42vy=COU[a%9O ]@anon-20191002_181700-627:localhost:8800a&\>N ]  @anon-20191002_181700-626:localhost:8800m&\9M ]@anon-20191002_181700-626:localhost:8800a&\>L ]  @anon-20191002_181700-625:localhost:8800m&\9K ]@anon-20191002_181700-625:localhost:8800a&\>J ]  @anon-20191002_181700-624:localhost:8800m&\9I ]@anon-20191002_181700-624:localhost:8800a&\>H ]  @anon-20191002_181700-623:localhost:8800m&\9G ]@anon-20191002_181700-623:localhost:8800a&\>F ]  @anon-20191002_181700-622:localhost:8800m&\C9E ]@anon-20191002_181700-622:localhost:8800a&\>D ]  @anon-20191002_181700-620:localhost:8800m&\9C ]@anon-20191002_181700-621:localhost:8800a&\9B ]@anon-20191002_181700-620:localhost:8800a&\>A ]  @anon-20191002_181700-619:localhost:8800m&\9@ ]@anon-20191002_181700-619:localhost:8800a&\9? ]@anon-20191002_181700-618:localhost:8800a&\=> ]  @anon-20191002_181700-617:localhost:8800m&\9= ]@anon-20191002_181700-617:localhost:8800a&\>< ]  @anon-20191002_181700-616:localhost:8800m&\W9; ]@anon-20191002_181700-616:localhost:8800a&\9: ]@anon-20191002_181700-615:localhost:8800a&\>9 ] @anon-20191002_181700-614:localhost:8800m&\ 98 ]@anon-20191002_181700-614:localhost:8800a&\97 ]@anon-20191002_181700-613:localhost:8800a&\>6 ] @anon-20191002_181700-612:localhost:8800m&\ 95 ]@anon-20191002_181700-612:localhost:8800a&\>2 ] @anon-20191002_181700-609:localhost:8800m&\ ;94 ]@anon-20191002_181700-611:localhost:8800a&\>3 ] @anon-20191002_181700-610:localhost:8800m&\ k>1 ]  @anon-20191002_181700-608:localhost:8800m&\ I90 ]@anon-20191002_181700-610:localhost:8800a&\9/ ]@anon-20191002_181700-609:localhost:8800a&\9. ]@anon-20191002_181700-608:localhost:8800a&\>- ]  @anon-20191002_181700-606:localhost:8800m&\>, ] @anon-20191002_181700-605:localhost:8800m&\ "G9+ ]@anon-20191002_181700-604:localhost:8800a&\9* ]@anon-20191002_181700-606:localhost:8800a&\9) ]@anon-20191002_181700-605:localhost:8800a&\>( ]  @anon-20191002_181700-603:localhost:8800m&\/9' ]@anon-20191002_181700-602:localhost:8800a&\9& ]@anon-20191002_181700-603:localhost:8800a&\>% ]  @anon-20191002_181700-601:localhost:8800m&\/9$ ]@anon-20191002_181700-600:localhost:8800a&\9# ]@anon-20191002_181700-601:localhost:8800a&\&" 7@admin:localhost:8800a&\9! ]@anon-20191002_181700-598:localhost:8800a&\9 ]@anon-20191002_181700-597:localhost:8800a&\9 ]@anon-20191002_181700-596:localhost:8800a&\9 ]@anon-20191002_181700-595:localhost:8800a&\9 ]@anon-20191002_181700-593:localhost:8800a&\9 ]@anon-20191002_181700-591:localhost:8800a&\9 ]@anon-20191002_181700-590:localhost:8800a&\9 ]@anon-20191002_181700-589:localhost:8800a&\9 ]@anon-20191002_181700-588:localhost:8800a&\9 ]@anon-20191002_181700-587:localhost:8800a&\9 ]@anon-20191002_181700-586:localhost:8800a&\9 ]@anon-20191002_181700-585:localhost:8800a&\> ]  @anon-20191002_181700-584:localhost:8800m&\#9 ]@anon-20191002_181700-584:localhost:8800a&\> ]  @anon-20191002_181700-583:localhost:8800m&\39 ]@anon-20191002_181700-583:localhost:8800a&\> ]  @anon-20191002_181700-582:localhost:8800m&\C9 ]@anon-20191002_181700-582:localhost:8800a&\ 0pZa h  o  v # } * 18?FMT[bipP^Q]!JnAKXOrlyisFUpgJPw:localhost:8800@anon-20191002_181700-603:localhost:88004P]Q]!XRAZJeoZBhGeHKKjaG:localhost:8800@anon-20191002_181700-601:localhost:88004P\Q]!GwLdUoDplyVUogXDzu:localhost:8800@anon-20191002_181700-584:localhost:88004P[Q]!nfxDdcgDfooxyiAzaB:localhost:8800@anon-20191002_181700-583:localhost:88004PZQ]!XGAmnfaVvjDtQJuufa:localhost:8800@anon-20191002_181700-582:localhost:88004PYQ]!OXpGdKbowFUTChPdmF:localhost:8800@anon-20191002_181700-580:localhost:88004PXQ]!XUbDuPDiMTXJZDyAPc:localhost:8800@anon-20191002_181700-579:localhost:88004PWQ]!VhUAklonNaWKRnLkcr:localhost:8800@anon-20191002_181700-578:localhost:88004PVQ]!ybXveQoxPVhjpKHAkG:localhost:8800@anon-20191002_181700-577:localhost:88004PUQ]!ijOiudvuzOLNmgNKfG:localhost:8800@anon-20191002_181700-576:localhost:88004PTQ]!hrhDJbmXvXBizKoiiK:localhost:8800@anon-20191002_181700-574:localhost:88002PSQ]!iLHJbsFszubrnybDNz:localhost:8800@anon-20191002_181700-574:localhost:88004PRQ]!hGsPmWXboxZZtOlsxY:localhost:8800@anon-20191002_181700-573:localhost:88004PQQ]!dvZnfJonDkxlrrDXUk:localhost:8800@anon-20191002_181700-572:localhost:88004PPQ]!vZGjXEXQoCaoUXnkCa:localhost:8800@anon-20191002_181700-571:localhost:88004POQ]!GBPGYLDkXcAsHgkfuS:localhost:8800@anon-20191002_181700-570:localhost:88002PNQ]!fdEymmlcUvjgshvVyl:localhost:8800@anon-20191002_181700-570:localhost:88004PMQ]!xcdNyJNFEdaBGFycsB:localhost:8800@anon-20191002_181700-569:localhost:88004PLQ]!SUDzkfFBgpuCANOxRS:localhost:8800@anon-20191002_181700-568:localhost:88004PKQ]!rWmvvGBgmFMdVvcfPk:localhost:8800@anon-20191002_181700-567:localhost:88004PJQ]!gXfXRDTXeVvOHQdaaQ:localhost:8800@anon-20191002_181700-566:localhost:88004PIQ]!hegUPDZCEEmBhsNJJR:localhost:8800@anon-20191002_181700-565:localhost:88004PHQ]!aSKNKSGXPGoIbSrbEN:localhost:8800@anon-20191002_181700-564:localhost:88004PGQ]!peJMRJtXBvIiCttNmm:localhost:8800@anon-20191002_181700-563:localhost:88004PFQ]!tPkCGJBKmqUXJoRrnY:localhost:8800@anon-20191002_181700-562:localhost:88004PEQ]!QnmLrBAxeItdHsaxWf:localhost:8800@anon-20191002_181700-561:localhost:88004PDQ]!hFwigdYZkwYNSwelRH:localhost:8800@anon-20191002_181700-558:localhost:88004PCQ]!paDmNxsOZIKyApbxXs:localhost:8800@anon-20191002_181700-556:localhost:88004PBQ]!OtBUhGeUSiDMWRKIOT:localhost:8800@anon-20191002_181700-554:localhost:88004PAQ]!zHBgbzUZHshNGZvIBS:localhost:8800@anon-20191002_181700-552:localhost:88004P@Q]!cidyuyekVzJHHvyomb:localhost:8800@anon-20191002_181700-550:localhost:88004P?Q]!pduebXnTyxQWVxEICp:localhost:8800@anon-20191002_181700-548:localhost:88004P>Q]!ZvLVbnHjeymRiFIkYr:localhost:8800@anon-20191002_181700-545:localhost:88004P=Q]!VUibrTIkcRbfrogbQV:localhost:8800@anon-20191002_181700-543:localhost:88004P<Q]!WpThtNEVhrUbUdCdMJ:localhost:8800@anon-20191002_181700-541:localhost:88004P;Q]!vRmMcoJDeCupADwqac:localhost:8800@anon-20191002_181700-539:localhost:88004P:Q]!fGkUEndqGrieltwbCh:localhost:8800@anon-20191002_181700-537:localhost:88004P9Q]!atnRTMliktaVUhMVID:localhost:8800@anon-20191002_181700-535:localhost:88004P8Q]!PHkVrXAyfGkFtzSagu:localhost:8800@anon-20191002_181700-533:localhost:88004P7Q]!EhFUhsgQbBWmrnGmaz:localhost:8800@anon-20191002_181700-531:localhost:88004P6Q]!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-520:localhost:88004P5Q]!sHRHoXzYrrPSlWBkoh:localhost:8800@anon-20191002_181700-518:localhost:88005P4Q]!AoAvmnwMkhYBQsbCsL:localhost:8800@anon-20191002_181700-516:localhost:88005P3Q]!IlGJpjzrvvAFuwTAgo:localhost:8800@anon-20191002_181700-514:localhost:88005P2Q]!CSqENqzAezaZnGktbE:localhost:8800@anon-20191002_181700-512:localhost:88005P1Q]!vBvlJEXUSQKUYmsKcO:localhost:8800@anon-20191002_181700-510:localhost:88005P0Q]!RDEAXrqXQizuhCUFPq:localhost:8800@anon-20191002_181700-508:localhost:88005P/Q]!mogJVPxghalmKbblUq:localhost:8800@anon-20191002_181700-506:localhost:88005 Z\6dI&rO)o0 q Z  j M 2  ^ G  W :  n K  kH"r?rOE(k8!w`! &"?  cm.room.history_visibility >'] m.room.member@anon-20191002_181700-613:localhost:8800 =%)) m.room.aliaseslocalhost:8800 <"?  m.room.history_visibility ;/  m.room.join_rules :9  m.room.canonical_alias 93  m.room.power_levels 8>'] m.room.member@anon-20191002_181700-614:localhost:8800 7'  m.room.create 6>'] m.room.member@anon-20191002_181700-611:localhost:8800 5%)) m.room.aliaseslocalhost:8800 4"?  m.room.history_visibility 3/  m.room.join_rules 2/  bm.room.join_rules 3  am.room.power_levels >'] `m.room.member@anon-20191002_181700-634:localhost:8800 '  _m.room.create 3  ^m.room.power_levels >'] ^m.room.member@anon-20191002_181700-633:localhost:8800 2'E ^m.room.member@__ANON__-11:localhost:42455 /  ^m.room.join_rules '  ^m.room.create 2'E ]m.room.member@__ANON__-11:localhost:42455 2'E \m.room.member@__ANON__-11:localhost:42455 "?  [m.room.history_visibility /  Zm.room.join_rules ~3  Ym.room.power_levels }>'] Xm.room.member@anon-20191002_181700-633:localhost:8800 |'  Wm.room.create {>'] Vm.room.member@anon-20191002_181700-632:localhost:8800 z2'E Vm.room.member@__ANON__-10:localhost:42455 y/  Vm.room.join_rules w'  Vm.room.create x>'] Um.room.member@anon-20191002_181700-629:localhost:8829 v>'] Tm.room.member@anon-20191002_181700-629:localhost:8829 u%)) Sm.room.aliaseslocalhost:8800 t"?  Rm.room.history_visibility s/  Qm.room.join_rules r9  Pm.room.canonical_alias q3  Om.room.power_levels p>'] Nm.room.member@anon-20191002_181700-628:localhost:8800 o'  Mm.room.create n1'C Lm.room.member@__ANON__-6:localhost:42455 m"?  Km.room.history_visibility l/  Jm.room.join_rules k3  Im.room.power_levels j>'] Hm.room.member@anon-20191002_181700-626:localhost:8800 i'  Gm.room.create h"?  Fm.room.history_visibility g/  Em.room.join_rules f3  Dm.room.power_levels e>'] Cm.room.member@anon-20191002_181700-625:localhost:8800 d'  Bm.room.create c"?  Am.room.history_visibility b/  @m.room.join_rules a3  ?m.room.power_levels `>'] >m.room.member@anon-20191002_181700-624:localhost:8800 _'  =m.room.create ^"?  '] 9m.room.member@anon-20191002_181700-623:localhost:8800 Z'  8m.room.create Y"?  7m.room.history_visibility X/  6m.room.join_rules W3  5m.room.power_levels V>'] 4m.room.member@anon-20191002_181700-622:localhost:8800 U'  3m.room.create T"?  2m.room.history_visibility S/  1m.room.join_rules R3  0m.room.power_levels Q>'] /m.room.member@anon-20191002_181700-620:localhost:8800 P'  .m.room.create O1'C -m.room.member@__ANON__-2:localhost:42455 N1'C ,m.room.member@__ANON__-2:localhost:42455 M"?  +m.room.history_visibility L/  *m.room.join_rules K3  )m.room.power_levels J>'] (m.room.member@anon-20191002_181700-619:localhost:8800 I'  'm.room.create H>'] &m.room.member@anon-20191002_181700-617:localhost:8800 G1'C &m.room.member@__ANON__-0:localhost:42455 F/  &m.room.join_rules D'  &m.room.create E%)) %m.room.aliaseslocalhost:8800 C"?  $m.room.history_visibility B/  #m.room.join_rules A3  "m.room.power_levels @>'] !m.room.member@anon-20191002_181700-616:localhost:8800 ?'  m.room.create >  vfeQay$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3068}{"auth_events": ["$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM"], "prev_events": ["$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM"], "type": "m.room.member", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-583", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-583:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043233271, "hashes": {"sha256": "PEVAFlQL7qGkG5yVx/dPwE9WYQZK+tE1KRpAC7wA5qg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mh8bdIHgJCw+puHZVQcwTywshsbKuSY9RehecxEz1Dx/FfVxaavUMsEwYSWVtGhTY7c0xRjGqeWLOL5b820WBg"}}, "unsigned": {"age_ts": 1570043233271}}ieeQa_$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3067}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-583:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043232489, "hashes": {"sha256": "oxhuBsL0aueLgemUCZhvEbFQfKj1J0P38OIs4ljGh0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "knkMmegoSS06eN/QD8I3jG3tXWMXVs/5BT9HtV4owAge389H5z3nuUcQ8djfLDe6/PMrnuvwTv2jna/R7iPMDg"}}, "unsigned": {"age_ts": 1570043232489}}deQa$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3066}{"auth_events": ["$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA", "$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw", "$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "prev_events": ["$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0"], "type": "m.room.history_visibility", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043230262, "hashes": {"sha256": "FmglP4FtqPqUtiJd5SjhvnIQJlTIrrvZO6G5ezq9Q14"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SCw3mqgtJ3SnzQuzKMKhXX41RXKE4fx7Td7666c4960qOm3gt+D0V1RaCihuL9+v/Gi9NK3qHIbYr2frzqMIDA"}}, "unsigned": {"age_ts": 1570043230262}}tceQau$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0!XGAmnfaVvjDtQJuufa:localhost:8800{"token_id": 565, "stream_ordering": 3065}{"auth_events": ["$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA", "$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw", "$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y"], "prev_events": ["$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA"], "type": "m.room.join_rules", "room_id": "!XGAmnfaVvjDtQJuufa:localhost:8800", "sender": "@anon-20191002_181700-582:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043229567, "hashes": {"sha256": "Q4flhpILE9WxO8z/U+MGNledrw0Sfw2FBHs06mEeJrs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BZwbUlh703zncE+FdZgmi99fmsImdgfpDgjt0QZ390FwEyMHNseHQu69jLvyrkr69hzmohU19gGNrUh//V9nAg"}}, "unsigned": {"age_ts": 1570043229567}} ML l? ^ 2  ~ Q $ q D  d 7 V )vIi<[/{O"nAi>`3SS&,Q!ZvLVbnH+Q !aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800+Q !aWbcZNVBalJilCEsdr:localhost:8800*Q!aWJOsiuJONOvjKWEjO:localhost:8800kk*Q!aWJOsiuJONOvjKWEjO:localhost:8800jj*Q!aWJOsiuJONOvjKWEjO:localhost:8800ii*Q!aWJOsiuJONOvjKWEjO:localhost:8800hh*Q!aWJOsiuJONOvjKWEjO:localhost:8800gg)Q !aWJOsiuJONOvjKWEjO:localhost:8800ff,Q!aVxOoyiLLnxmzgLJat:localhost:8800>>,Q!aVxOoyiLLnxmzgLJat:localhost:8800==,Q!aVxOoyiLLnxmzgLJat:localhost:880066,Q!aVxOoyiLLnxmzgLJat:localhost:880055,Q!aVxOoyiLLnxmzgLJat:localhost:880044,Q!aVxOoyiLLnxmzgLJat:localhost:880033,Q!aVxOoyiLLnxmzgLJat:localhost:880022+Q !aVxOoyiLLnxmzgLJat:localhost:880011,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z z,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y y,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x x,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w w+Q !aSKNKSGXPGoIbSrbEN:localhost:8800 v v,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800+Q !aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800"",Q!aHyAJEOSdKqTiRjOvw:localhost:8800!!,Q!aHyAJEOSdKqTiRjOvw:localhost:8800  ,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800+Q !aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800+Q !aBCvSXjtZUEPlPGHvY:localhost:8800,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + +,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * *,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) ),Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( (,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' '+Q !ZvLVbnHjeymRiFIkYr:localhost:8800 & &,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800+Q !ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ML l? ^ 2  ~ Q $ q D  d 7 V )vIi<[/{O"nAi>`3SS&,Q!ZvLVbnH+Q !aWvVRVaDflYyyGTOdD:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800,Q!aWbcZNVBalJilCEsdr:localhost:8800+Q !aWbcZNVBalJilCEsdr:localhost:8800*Q!aWJOsiuJONOvjKWEjO:localhost:8800kk*Q!aWJOsiuJONOvjKWEjO:localhost:8800jj*Q!aWJOsiuJONOvjKWEjO:localhost:8800ii*Q!aWJOsiuJONOvjKWEjO:localhost:8800hh*Q!aWJOsiuJONOvjKWEjO:localhost:8800gg)Q !aWJOsiuJONOvjKWEjO:localhost:8800ff,Q!aVxOoyiLLnxmzgLJat:localhost:8800>>,Q!aVxOoyiLLnxmzgLJat:localhost:8800==,Q!aVxOoyiLLnxmzgLJat:localhost:880066,Q!aVxOoyiLLnxmzgLJat:localhost:880055,Q!aVxOoyiLLnxmzgLJat:localhost:880044,Q!aVxOoyiLLnxmzgLJat:localhost:880033,Q!aVxOoyiLLnxmzgLJat:localhost:880022+Q !aVxOoyiLLnxmzgLJat:localhost:880011,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z z,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y y,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x x,Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w w+Q !aSKNKSGXPGoIbSrbEN:localhost:8800 v v,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aLxrqpqLkbzyIxGgpk:localhost:8800+Q !aLxrqpqLkbzyIxGgpk:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800"",Q!aHyAJEOSdKqTiRjOvw:localhost:8800!!,Q!aHyAJEOSdKqTiRjOvw:localhost:8800  ,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aHyAJEOSdKqTiRjOvw:localhost:8800+Q !aHyAJEOSdKqTiRjOvw:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800,Q!aBCvSXjtZUEPlPGHvY:localhost:8800+Q !aBCvSXjtZUEPlPGHvY:localhost:8800,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 + +,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 * *,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ) ),Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ( (,Q!ZvLVbnHjeymRiFIkYr:localhost:8800 ' '+Q !ZvLVbnHjeymRiFIkYr:localhost:8800 & &,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800 ,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaltdIYVZjCHsCWTZD:localhost:8800+Q !ZaltdIYVZjCHsCWTZD:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800 ,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800,Q!ZaOktTIVeRgBXxfubH:localhost:8800 "P&) K T |  :bk TW| GP /Q']e 2!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcd.Q' e 1!MXhwoqNXvexeDDSOZT:localhost:8800m.room.create$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA8-Q']ee 0!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 ,Q']e /!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0s+Q))e .!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.aliaseslocalhost:8800$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Yp*Q? e -!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.history_visibility$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQh)Q/ e ,!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.join_rules$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwm(Q9 e +!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.canonical_alias$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQj'Q3 e *!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.power_levels$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA &Q']e )!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98d%Q' e (!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.create$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwb$Q# e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.name$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0p#Q? e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibility$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Uh"Q/ e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rules$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNkj!Q3 e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E Q']e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsdQ' e !JnAKXOrlyisFUpgJPw:localhost:8800m.room.create$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8bQ# e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.name$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygpQ? e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibility$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAhQ/ e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rules$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6WkjQ3 e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc Q']e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8UdQ' e !XRAZJeoZBhGeHKKjaG:localhost:8800m.room.create$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1UpQ? e !GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibility$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAghQ/ e !GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rules$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAjQ3 e !GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw Q']e !GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQdQ' e !GwLdUoDplyVUogXDzu:localhost:8800m.room.create$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5NopQ? e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibility$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUhQ/ e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rules$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4jQ3 e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ Q']e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5OgdQ' e !nfxDdcgDfooxyiAzaB:localhost:8800m.room.create$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMpQ? e !XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibility$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es #ts 1 @ n ; i x6py 44CLtm7eQ? $GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibilitye6eQ/ $QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rulesg5eQ3 $wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels 4eQ']$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800a3eQ' $E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.create 2eQ']$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829 1eQ']$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829p0eQ))$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.aliaseslocalhost:8800m/eQ? $TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.history_visibilitye.eQ/ $T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.join_rulesj-eQ9 $Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.canonical_aliasg,eQ3 $HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.power_levels +eQ']$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800a*eQ' $xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.create_)eQ# $8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800m.room.namem(eQ? $jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibilitye'eQ/ $r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rulesg&eQ3 $LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels %eQ']$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800a$eQ' $DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800m.room.create_#eQ# $-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.namem"eQ? $MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibilitye!eQ/ $LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rulesg eQ3 $cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels eQ']$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800aeQ' $xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.createmeQ? $4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800m.room.history_visibilityeeQ/ $O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800m.room.join_rulesgeQ3 $es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800m.room.power_levels eQ']$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800m.room.member@anon-20191002_181700-584:localhost:8800aeQ' $gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800m.room.createmeQ? $SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800m.room.history_visibilityeeQ/ $e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800m.room.join_rulesgeQ3 $4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800m.room.power_levels eQ']$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800m.room.member@anon-20191002_181700-583:localhost:8800   jeQm$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "txn_id": "564", "stream_ordering": 3072}{"auth_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ", "$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU"], "type": "m.room.message", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"body": "synced", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043237438, "hashes": {"sha256": "r8W2C2TjNCSPA5PGEZlzh5V2OiS/xZ2fomw1qvdDDm8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MlbuGwUfuD7jbWApq9zJUmA1mRQBd+BBARK2T5J3DrH2OAlYQgLQK+Bj8P4UU5E5b+9cO5G5roQZDa+0U6aYAA"}}, "unsigned": {"age_ts": 1570043237438}}ieQa$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3071}{"auth_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ", "$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4"], "type": "m.room.history_visibility", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043235242, "hashes": {"sha256": "scO+OIhrbwcJBY9vXJ8tBMfgB1Vl0P3w0Jq2N9wwqm0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i+OSgOY4rISS4BhFTsXqIaVIWzcRZ2gua4cGC/t5Pi5zqQIuCjl78jWrdwgDf+pNZazcQ/f/A6movZ1slc3cCg"}}, "unsigned": {"age_ts": 1570043235242}}theQau$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3070}{"auth_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ", "$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ"], "type": "m.room.join_rules", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043234651, "hashes": {"sha256": "0Y9doD+fDrAvdqi8NsXK3ppLnrSpUNZgjpnKNPzv5Ww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JZ1wj7Z+1lhk5N3Kmi0znMRx9stybuoAN6PKItriSmFWZd6leJ7IyyxQTAJCBBhJkW48C+V5tQIm8tCYI/XPBQ"}}, "unsigned": {"age_ts": 1570043234651}}kgeQac$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ!nfxDdcgDfooxyiAzaB:localhost:8800{"token_id": 566, "stream_ordering": 3069}{"auth_events": ["$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM", "$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "prev_events": ["$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og"], "type": "m.room.power_levels", "room_id": "!nfxDdcgDfooxyiAzaB:localhost:8800", "sender": "@anon-20191002_181700-583:localhost:8800", "content": {"users": {"@anon-20191002_181700-583:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043233867, "hashes": {"sha256": "UD2Ys18NBVTJZY3ZGR6wgozSSOBIkGxsf6gko0+yR2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WPVMSNS1tIFarlzhypUj51THACS4DmT+YinKmjCoIqK2URkzV+cJWm6tuZGwEtIOYXaa14D/Y+HHUdY3VQpJAA"}}, "unsigned": {"age_ts": 1570043233867}} 'V Y  i  l%/HN1 |e'Q ]$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogm.room.member!nfxDdcgDfooxyiAzaB:localhost:8800mރmބR@anon-20191002_181700-583:localhost:8800{ e'Q  ]$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoMm.room.create!nfxDdcgDfooxyiAzaB:localhost:8800mހmށ=@anon-20191002_181700-583:localhost:8800,ze?Q ]$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367esm.room.history_visibility!XGAmnfaVvjDtQJuufa:localhost:8800mx6m{+@anon-20191002_181700-582:localhost:8800$ye/Q ]$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0m.room.join_rules!XGAmnfaVvjDtQJuufa:localhost:8800mumvZ@anon-20191002_181700-582:localhost:8800, e?Q ]$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAm.room.history_visibility!XRAZJeoZBhGeHKKjaG:localhost:8800mrm @anon-20191002_181700-601:localhost:8800$ e/Q ]$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wkm.room.join_rules!XRAZJeoZBhGeHKKjaG:localhost:8800mcm@anon-20191002_181700-601:localhost:8800& e3Q ]$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncm.room.power_levels!XRAZJeoZBhGeHKKjaG:localhost:8800mm @anon-20191002_181700-601:localhost:8800 e'Q ]$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Um.room.member!XRAZJeoZBhGeHKKjaG:localhost:8800m m@anon-20191002_181700-601:localhost:8800 e'Q ]$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1Um.room.create!XRAZJeoZBhGeHKKjaG:localhost:8800m;m@anon-20191002_181700-601:localhost:8800!e)Q ]$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8m.room.message!GwLdUoDplyVUogXDzu:localhost:8800mޮmޮ@anon-20191002_181700-584:localhost:8800!e)Q ]$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwm.room.message!GwLdUoDplyVUogXDzu:localhost:8800mޫ1mޫ5@anon-20191002_181700-584:localhost:8800,e?Q ]$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAgm.room.history_visibility!GwLdUoDplyVUogXDzu:localhost:8800mޥdmާ@anon-20191002_181700-584:localhost:8800$e/Q ]$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVAm.room.join_rules!GwLdUoDplyVUogXDzu:localhost:8800mޢmޣ@anon-20191002_181700-584:localhost:8800&e3Q ]$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kwm.room.power_levels!GwLdUoDplyVUogXDzu:localhost:8800mޟ%mޡ@anon-20191002_181700-584:localhost:8800 e'Q ]$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQm.room.member!GwLdUoDplyVUogXDzu:localhost:8800mޜmޝ @anon-20191002_181700-584:localhost:8800 e'Q  ]$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5Nom.room.create!GwLdUoDplyVUogXDzu:localhost:8800mޙmޙp@anon-20191002_181700-584:localhost:8800!e)Q ]$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBEm.room.message!nfxDdcgDfooxyiAzaB:localhost:8800mޔ>mޔC@anon-20191002_181700-583:localhost:8800,e?Q ]$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCUm.room.history_visibility!nfxDdcgDfooxyiAzaB:localhost:8800mދmގ@anon-20191002_181700-583:localhost:8800$~e/Q ]$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4m.room.join_rules!nfxDdcgDfooxyiAzaB:localhost:8800mމ[mފ@anon-20191002_181700-583:localhost:8800&}e3Q ]$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQm.room.power_levels!nfxDdcgDfooxyiAzaB:localhost:8800mކKmއ@anon-20191002_181700-583:localhost:8800 a} { y w u sqomkigeca~6eeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~5eeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800~4eeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800~3eeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~2eeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800~1eeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800~0eeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~/eeQ$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~.eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~-eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~,eeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800~+eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~*eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~)eeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800~(eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~'eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~&eeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800~%eeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800~$eeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~#eeQ$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800~"eeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800~!eeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~ eeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800~eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og!nfxDdcgDfooxyiAzaB:localhost:8800~eeQ$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM!nfxDdcgDfooxyiAzaB:localhost:8800 47So6RnUQr9  V   r 9 Up  o6Rn58e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCMsha256 8e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEsha2568e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgsha256o8e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNssha256T8e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAsha2568e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6ssha2568e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1Isha2568e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Ysha256 U8e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogsha256k8e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slgsha256 #8e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlgsha256 u8e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwsha256 -8e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYssha2568e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4Asha2568e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlIsha2568e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0ssha2568e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91Msha256 8e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4sha2568e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXosha256b8e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8sha256'8e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgsha256 b8e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgsha256t8e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8sha256=8e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4sha2568e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0sha256 l8e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3ssha256 98e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2osha256 :8e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8sha256 O8e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Fawsha256Q8e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNMsha2568e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zEsha2568e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPEsha256!8e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7ussha256$8e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRksha2568e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQsha2568e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARwsha2568e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBssha2568e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa84sha256v8e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMssha256 '8e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Qsha2568e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CUsha2568e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp0sha2567e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iIsha2568e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPksha2568e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0sha256 8e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWEsha25647e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQsha2568e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DUsha2568e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgsha2568e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgsha256S8e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4sha256`8e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCosha256 Pm< xG e 4  p ?  { J  U $ ` /k: vEP[*f5q@|KV%.] @anon-20191002_181700-667:localhost:8800 .] @anon-20191002_181700-666:localhost:8800 v.] @anon-20191002_181700-665:localhost:8800 m.] @anon-20191002_181700-664:localhost:8800 g.] @anon-20191002_181700-663:localhost:8800 ^.] @anon-20191002_181700-662:localhost:8800 W.] @anon-20191002_181700-661:localhost:8800 Y.] @anon-20191002_181700-660:localhost:8800 K.] @anon-20191002_181700-659:localhost:8800 M.] @anon-20191002_181700-658:localhost:8800 A. ] @anon-20191002_181700-657:localhost:8800 8. ] @anon-20191002_181700-656:localhost:8800 +. ] @anon-20191002_181700-655:localhost:8800 &. ] @anon-20191002_181700-654:localhost:8800 . ] @anon-20191002_181700-653:localhost:8800 .] @anon-20191002_181700-652:localhost:8800 .]@anon-20191002_181700-651:localhost:8800 .]@anon-20191002_181700-650:localhost:8800 .]@anon-20191002_181700-649:localhost:8800 .]@anon-20191002_181700-648:localhost:8800 .]@anon-20191002_181700-647:localhost:8800 .] @anon-20191002_181700-646:localhost:8800 .] @anon-20191002_181700-645:localhost:8800 .] @anon-20191002_181700-644:localhost:8800 .] @anon-20191002_181700-643:localhost:8800 .~] @anon-20191002_181700-642:localhost:8800 .}] @anon-20191002_181700-641:localhost:8800 .|] @anon-20191002_181700-640:localhost:8800 .{] @anon-20191002_181700-639:localhost:8800 .z] @anon-20191002_181700-638:localhost:8800 .y] @anon-20191002_181700-637:localhost:8800 .x]@anon-20191002_181700-636:localhost:8800 .w] @anon-20191002_181700-635:localhost:8800 .v] @anon-20191002_181700-634:localhost:8800 .u] @anon-20191002_181700-633:localhost:8800 .t] @anon-20191002_181700-632:localhost:8800 .s]@anon-20191002_181700-631:localhost:8800 .r]@anon-20191002_181700-630:localhost:8800 .q] @anon-20191002_181700-628:localhost:8800 .p]@anon-20191002_181700-627:localhost:8800 .o] @anon-20191002_181700-626:localhost:8800 .n] @anon-20191002_181700-625:localhost:8800 .m] @anon-20191002_181700-624:localhost:8800 .l] @anon-20191002_181700-623:localhost:8800 |.k] @anon-20191002_181700-622:localhost:8800 w.j]@anon-20191002_181700-621:localhost:8800 m.i] @anon-20191002_181700-620:localhost:8800 r.h] @anon-20191002_181700-619:localhost:8800 l.g]@anon-20191002_181700-618:localhost:8800 g.f] @anon-20191002_181700-617:localhost:8800 g.e] @anon-20191002_181700-616:localhost:8800 `.d]@anon-20191002_181700-615:localhost:8800 Y.c] @anon-20191002_181700-614:localhost:8800 Z.b]@anon-20191002_181700-613:localhost:8800 P.a] @anon-20191002_181700-612:localhost:8800 Q.`]@anon-20191002_181700-611:localhost:8800 B._] @anon-20191002_181700-610:localhost:8800 H.^] @anon-20191002_181700-609:localhost:8800 G.]] @anon-20191002_181700-608:localhost:8800 F.\]@anon-20191002_181700-604:localhost:8800 .[] @anon-20191002_181700-606:localhost:8800 <.Z] @anon-20191002_181700-605:localhost:8800 :.Y]@anon-20191002_181700-602:localhost:8800 .X] @anon-20191002_181700-603:localhost:8800 '.W]@anon-20191002_181700-600:localhost:8800 .V] @anon-20191002_181700-601:localhost:8800 U7@admin:localhost:8800 .T]@anon-20191002_181700-598:localhost:8800 .S]@anon-20191002_181700-597:localhost:8800 .R]@anon-20191002_181700-596:localhost:8800 .Q]@anon-20191002_181700-595:localhost:8800 .P]@anon-20191002_181700-593:localhost:8800 .O]@anon-20191002_181700-591:localhost:8800 .N]@anon-20191002_181700-590:localhost:8800 .M]@anon-20191002_181700-589:localhost:8800 .L]@anon-20191002_181700-588:localhost:8800 .K]@anon-20191002_181700-587:localhost:8800 .J]@anon-20191002_181700-586:localhost:8800 .I]@anon-20191002_181700-585:localhost:8800 .H] @anon-20191002_181700-584:localhost:8800  DHzIe0`- ] ( \ ) Y $ T ! Q T!QN~I}J{HxC2]@anon-20191002_181700-661:localhost:8800a4]@anon-20191002_181700-660:localhost:8800m2]@anon-20191002_181700-631:localhost:8800aS2]@anon-20191002_181700-630:localhost:8800aR2[@anon-20191002_181700-62:localhost:8800mq0[@anon-20191002_181700-62:localhost:8800ap4]@anon-20191002_181700-628:localhost:8800mQ2]@anon-20191002_181700-628:localhost:8800aP2]@anon-20191002_181700-627:localhost:8800aO4]@anon-20191002_181700-626:localhost:8800mN2]@anon-20191002_181700-660:localhost:8800a2[@anon-20191002_181700-65:localhost:8800mv0[@anon-20191002_181700-65:localhost:8800at4]@anon-20191002_181700-659:localhost:8800m2]@anon-20191002_181700-659:localhost:8800a4]@anon-20191002_181700-658:localhost:8800m2]@anon-20191002_181700-658:localhost:8800a4]@anon-20191002_181700-657:localhost:8800m2]@anon-20191002_181700-657:localhost:8800a4]@anon-20191002_181700-656:localhost:8800m2]@anon-20191002_181700-656:localhost:8800a4]@anon-20191002_181700-655:localhost:8800m~2]@anon-20191002_181700-655:localhost:8800a}4]@anon-20191002_181700-654:localhost:8800m|2]@anon-20191002_181700-654:localhost:8800a{4]@anon-20191002_181700-653:localhost:8800mz2]@anon-20191002_181700-653:localhost:8800ay4]@anon-20191002_181700-652:localhost:8800mx2]@anon-20191002_181700-652:localhost:8800aw2]@anon-20191002_181700-651:localhost:8800av2]@anon-20191002_181700-650:localhost:8800au2[@anon-20191002_181700-64:localhost:8800mw0[@anon-20191002_181700-64:localhost:8800au2]@anon-20191002_181700-649:localhost:8800at2]@anon-20191002_181700-648:localhost:8800as2]@anon-20191002_181700-647:localhost:8800ar4]@anon-20191002_181700-646:localhost:8800mq2]@anon-20191002_181700-646:localhost:8800ap4]@anon-20191002_181700-645:localhost:8800mo2]@anon-20191002_181700-645:localhost:8800am4]@anon-20191002_181700-644:localhost:8800mn2]@anon-20191002_181700-644:localhost:8800al4]@anon-20191002_181700-643:localhost:8800mk2]@anon-20191002_181700-643:localhost:8800aj4]@anon-20191002_181700-642:localhost:8800mi2]@anon-20191002_181700-642:localhost:8800ah4]@anon-20191002_181700-641:localhost:8800mg2]@anon-20191002_181700-641:localhost:8800af4]@anon-20191002_181700-640:localhost:8800me2]@anon-20191002_181700-640:localhost:8800ad2[@anon-20191002_181700-63:localhost:8800ms0[@anon-20191002_181700-63:localhost:8800ar4]@anon-20191002_181700-639:localhost:8800mc2]@anon-20191002_181700-639:localhost:8800ab4]@anon-20191002_181700-638:localhost:8800ma2]@anon-20191002_181700-638:localhost:8800a`4]@anon-20191002_181700-637:localhost:8800m_2]@anon-20191002_181700-637:localhost:8800a^4]@anon-20191002_181700-636:localhost:8800m]2]@anon-20191002_181700-636:localhost:8800a\4]@anon-20191002_181700-635:localhost:8800m[2]@anon-20191002_181700-635:localhost:8800aZ4]@anon-20191002_181700-634:localhost:8800mY2]@anon-20191002_181700-634:localhost:8800aX4]@anon-20191002_181700-633:localhost:8800mW2]@anon-20191002_181700-633:localhost:8800aV4]@anon-20191002_181700-632:localhost:8800mU2]@anon-20191002_181700-632:localhost:8800aT   *tneQau$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3076}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw"], "type": "m.room.join_rules", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043241158, "hashes": {"sha256": "wNPVzazT635LfNvf3tcTwp1qbKj9HcWSgzZ4eshHbI0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bvgLoQx6BX788G+4Yd0ZYVfYNgVb/cOdbFm/I4K0n3pyPbb8E3rDqUVgVVECucEnHJ3kz5OEf5i2u9GqnEmwDw"}}, "unsigned": {"age_ts": 1570043241158}}kmeQac$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3075}{"auth_events": ["$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "type": "m.room.power_levels", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"users": {"@anon-20191002_181700-584:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043240229, "hashes": {"sha256": "QHoQv1NT5aUPf2kSj4Lz5H18YI14GvXGWntrCb4UUbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bgKdUhGqE7TR9h86KlQ3R/+ETrpg8+9izXGaU6GafawtGhO9rLsEU31N71ychkx6c42nw5TicvLfM6J6FsKsCw"}}, "unsigned": {"age_ts": 1570043240229}}vleQay$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3074}{"auth_events": ["$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No"], "prev_events": ["$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No"], "type": "m.room.member", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-584", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-584:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043239616, "hashes": {"sha256": "xizzAk+mpC+kbpNt5feBylaVjV42AG9ql0NDR3gwHbo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aeftlQBNSWVkUDBynu4obtyXoyQdx3tdsSe2penYKRo/62S0AT+aYsFzKoqeqxifuquc9Gsef388WxVXqNrCBw"}}, "unsigned": {"age_ts": 1570043239616}}ikeQa_$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3073}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-584:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043238656, "hashes": {"sha256": "Ij2Gd715yD0I8fbwvjKPmYVJsD9sauTOBr7NCcD5H7o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y4ufO754+u6rOdMKr+jGMtvFW6x11JbGWbkLJ9Yvq2/XRkx2cUBiJLFltZtPh0OK0dGfhGpQnMzPwbhsrAB2Bg"}}, "unsigned": {"age_ts": 1570043238656}} 7JH@@ B  B  B  D  D FFFHHJ J T?]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIRm_=[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGm\3?]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEmߨ!3?]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUm߀2?]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDmFp0?]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEmf1?]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZWm.?]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJm?/?]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXAm^?]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGUmf]?]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHSmА\?]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm[?]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUOm\Z=[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQIm8?]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWAmY?]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGGmRX?]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOSmNW?]!@anon-20191002_181700-646:localhost:8800HFMIURTAJAm♪V?]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVGmlU?]!@anon-20191002_181700-644:localhost:8800INFGSFBNKUmlqT?]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQm9WS?]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQmR?]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVIm}Q?]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQNmP=[!@anon-20191002_181700-63:localhost:8800VLTVDGDALOmK6?]!@anon-20191002_181700-639:localhost:8800VIDPYYIORGmᷱO?]!@anon-20191002_181700-638:localhost:8800AMILRIOBVFmVN?]!@anon-20191002_181700-637:localhost:8800SOCIZPGICGmqM?]!@anon-20191002_181700-636:localhost:8800EGOZKYJYMNmMHL?]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOLm3K?]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJGmJ?]!@anon-20191002_181700-633:localhost:8800TRECTOOCOTmI?]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWEmH?]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZmMG?]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPEmF=[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYXms5?]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTXmE?]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPWmɓD?]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWOmC?]!@anon-20191002_181700-625:localhost:8800LXKNSEODEImࠢB?]!@anon-20191002_181700-624:localhost:8800AATHUMCUILmA?]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUDmx@?]!@anon-20191002_181700-622:localhost:8800IAPOATKCLUmb??]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQmO>=[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUm^4?]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVVm5=?]!@anon-20191002_181700-618:localhost:8800KPRKVKAABYm4  8 v D  V |P J  J >v P$ *jc D   W %p 1| \ +1e$neDbJnco90WlYamn1T4HXaA2qF1Lm26PTsaM6NcLw7s1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI+1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ w1e$oL1SmNS0cuGjeBVVuQM79JfYJN6832_XkuYL1dt2mtk1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$nt5pYbPMt_K13M29pPjCEdUOeVlwPFPHE8UG6bOp6Qg1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc11e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMw1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMof1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIM1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI}1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagv1e$o6qdoxzSptfuZitggcv1v0HbdSB-qQZULKCjQEY1yuY1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT4 1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175k \1e$nVDUPjlJUZEqUzsem4VACskojxhvHxT97jcIfZCw4l8 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg1e$oIvJg4XLKIcTpoAEVcmyIOCOAMgGg767iHU8rE2U0hI1e$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwg1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh061e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$nNFhB9Pj6lj9LP8_xonQN5g0om4TvpgXamZPM4QsnAg1e$nMOFSyDFI4thL1KvRUhzm3PcRwNEGFKPf6WYBr-Czys1e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu441e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU1e$nGR148BIT9443GamCQDpMkl3vnMR5OajsvLA3pt0-NsK +1e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc j1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 l1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk 1e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYj1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0&1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU]1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY<1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nkxqovox2OjZG7hQK9BWdA_UeBRVQ0sOKrt9mPM7IQM1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI`1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96Ma1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0Z1e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w0e$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY_1e$nQerAGvxNaTDJV6xjLRp3sGNzm47JRlisRdesIDCt9E1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y 1e$oGN2zU2K5HwT8-xIpu1PskoepqfDz2lwp6bVMxgvTTs 1e$oJHlItihwnNHorocisbzOFQrVdAax80EmjsiGxc7yKE 1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ 1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg c1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQI1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y J1e$nNcoJA8BtoUdBoksepBWF8oLh1sboSof7nQIIEU0T-k x ~ wk~ireQa_$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3080}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-601:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043256635, "hashes": {"sha256": "6eLfkOf9rp1SCdcjUDLlpJJV7sgmoBXBEBtMe+Rrgm4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "08gRa7sMhQnkZdzHiyUpz+K1KXHFe9d+t8ckHOShtWeTNYa9zgHf8Q2q9PhkDz6QtfawoVx5X02d6o4oNvdZBQ"}}, "unsigned": {"age_ts": 1570043256635}}qeQm$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "txn_id": "566", "stream_ordering": 3079}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw"], "type": "m.room.message", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"body": "synced", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043244236, "hashes": {"sha256": "P7ot4yg8MlR7PjG8Y8Hw0sHBCILLq13dja9EQmtGNf4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NysEzmtpQSCQ664EPGPvM07YZ2QUGJZ9YOITakeoZMf+3FfT5iciZryhoi9cPwfbdhmwulj0qW8BanjEQSgOAw"}}, "unsigned": {"age_ts": 1570043244236}}peQm$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "txn_id": "565", "stream_ordering": 3078}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg"], "type": "m.room.message", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"body": "synced", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043243313, "hashes": {"sha256": "mWiJvWYsC5D/+sB8dGvkl/rDJ3KndVGeIOpVRhq0YW0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NBpFYHlE7/SPrMXfVqhjQsYilfu2mbO6R8SeJxzV8KM/rgHO+2wl8WsRjJmoWQaLO7MkqLvzatiCmpo9O7WWAQ"}}, "unsigned": {"age_ts": 1570043243313}}oeQa$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800{"token_id": 567, "stream_ordering": 3077}{"auth_events": ["$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw", "$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No", "$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ"], "prev_events": ["$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA"], "type": "m.room.history_visibility", "room_id": "!GwLdUoDplyVUogXDzu:localhost:8800", "sender": "@anon-20191002_181700-584:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043241828, "hashes": {"sha256": "Do+kC8U4LlVh4GeBAzoBTMv5MuEe+8UZeD8qlahGhpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MB3+hxFdOGuQg6jd3mq4e0c8AqX5t+FsfWiQleXTizLhiyHUWZyZXdqgkL8MEmRCS3BhimHgk+f3sVpqweJyCw"}}, "unsigned": {"age_ts": 1570043241828}} i 4 g i5 h1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgok1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3goh1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQoj1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85Qom1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawol1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgoo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwoe1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwoi1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4Aon1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQoc1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgod1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQog1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAof KvHb6 ~ P " l >  X * t F  ` 2 |N h: V(pB\.vHd6~P"l19-]@anon--]@anon-20191002_181700-680:localhost:8800+[@anon-20191002_181700-67:localhost:8800W-]@anon-20191002_181700-679:localhost:8800-]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-677:localhost:8800-]@anon-20191002_181700-676:localhost:8800-]@anon-20191002_181700-675:localhost:8800-]@anon-20191002_181700-674:localhost:8800-]@anon-20191002_181700-673:localhost:8800-]@anon-20191002_181700-672:localhost:8800-]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800-]@anon-20191002_181700-669:localhost:8800-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800-]@anon-20191002_181700-662:localhost:8800-]@anon-20191002_181700-661:localhost:8800-]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800U-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800-]@anon-20191002_181700-654:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-650:localhost:8800+[@anon-20191002_181700-64:localhost:8800V-]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800~-]@anon-20191002_181700-641:localhost:8800}-]@anon-20191002_181700-640:localhost:8800|+[@anon-20191002_181700-63:localhost:8800T-]@anon-20191002_181700-639:localhost:8800{-]@anon-20191002_181700-638:localhost:8800z-]@anon-20191002_181700-637:localhost:8800y-]@anon-20191002_181700-636:localhost:8800x-]@anon-20191002_181700-635:localhost:8800w-]@anon-20191002_181700-634:localhost:8800v-]@anon-20191002_181700-633:localhost:8800u-]@anon-20191002_181700-632:localhost:8800t-]@anon-20191002_181700-631:localhost:8800s-]@anon-20191002_181700-630:localhost:8800r+[@anon-20191002_181700-62:localhost:8800S-]@anon-20191002_181700-628:localhost:8800q-]@anon-20191002_181700-627:localhost:8800p-]@anon-20191002_181700-626:localhost:8800o-]@anon-20191002_181700-625:localhost:8800n-]@anon-20191002_181700-624:localhost:8800m-]@anon-20191002_181700-623:localhost:8800l-]@anon-20191002_181700-622:localhost:8800k-]@anon-20191002_181700-621:localhost:8800j-]@anon-20191002_181700-620:localhost:8800i+[@anon-20191002_181700-61:localhost:8800R-]@anon-20191002_181700-619:localhost:8800h-]@anon-20191002_181700-618:localhost:8800g-]@anon-20191002_181700-617:localhost:8800f-]@anon-20191002_181700-616:localhost:8800e-]@anon-20191002_181700-615:localhost:8800d-]@anon-20191002_181700-614:localhost:8800c-]@anon-20191002_181700-613:localhost:8800b-]@anon-20191002_181700-612:localhost:8800a-]@anon-20191002_181700-611:localhost:8800` KvHb6 ~ P " l >  X * t F  ` 2 |N h: V(pB\.vHd6~P"l19-]@anon--]@anon-20191002_181700-680:localhost:8800+[@anon-20191002_181700-67:localhost:8800W-]@anon-20191002_181700-679:localhost:8800-]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-677:localhost:8800-]@anon-20191002_181700-676:localhost:8800-]@anon-20191002_181700-675:localhost:8800-]@anon-20191002_181700-674:localhost:8800-]@anon-20191002_181700-673:localhost:8800-]@anon-20191002_181700-672:localhost:8800-]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800-]@anon-20191002_181700-669:localhost:8800-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800-]@anon-20191002_181700-662:localhost:8800-]@anon-20191002_181700-661:localhost:8800-]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800U-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800-]@anon-20191002_181700-654:localhost:8800-]@anon-20191002_181700-653:localhost:8800-]@anon-20191002_181700-652:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-650:localhost:8800+[@anon-20191002_181700-64:localhost:8800V-]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-646:localhost:8800-]@anon-20191002_181700-645:localhost:8800-]@anon-20191002_181700-644:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-642:localhost:8800~-]@anon-20191002_181700-641:localhost:8800}-]@anon-20191002_181700-640:localhost:8800|+[@anon-20191002_181700-63:localhost:8800T-]@anon-20191002_181700-639:localhost:8800{-]@anon-20191002_181700-638:localhost:8800z-]@anon-20191002_181700-637:localhost:8800y-]@anon-20191002_181700-636:localhost:8800x-]@anon-20191002_181700-635:localhost:8800w-]@anon-20191002_181700-634:localhost:8800v-]@anon-20191002_181700-633:localhost:8800u-]@anon-20191002_181700-632:localhost:8800t-]@anon-20191002_181700-631:localhost:8800s-]@anon-20191002_181700-630:localhost:8800r+[@anon-20191002_181700-62:localhost:8800S-]@anon-20191002_181700-628:localhost:8800q-]@anon-20191002_181700-627:localhost:8800p-]@anon-20191002_181700-626:localhost:8800o-]@anon-20191002_181700-625:localhost:8800n-]@anon-20191002_181700-624:localhost:8800m-]@anon-20191002_181700-623:localhost:8800l-]@anon-20191002_181700-622:localhost:8800k-]@anon-20191002_181700-621:localhost:8800j-]@anon-20191002_181700-620:localhost:8800i+[@anon-20191002_181700-61:localhost:8800R-]@anon-20191002_181700-619:localhost:8800h-]@anon-20191002_181700-618:localhost:8800g-]@anon-20191002_181700-617:localhost:8800f-]@anon-20191002_181700-616:localhost:8800e-]@anon-20191002_181700-615:localhost:8800d-]@anon-20191002_181700-614:localhost:8800c-]@anon-20191002_181700-613:localhost:8800b-]@anon-20191002_181700-612:localhost:8800a-]@anon-20191002_181700-611:localhost:8800`  * T~=g=]!cF@anon-20191002_181700-601:localhost:8800BRBWCFMZLMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJhLTlVUEkxMTZMaDcrfnAKMDAyZnNpZ25hdHVyZSCVL4wOss3stQBqS0T2dMMSFgrqGKCdKqLQErziY58pOwo;<7!1E@admin:localhost:8800GMJMIKRCODMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyOGNpZCB1c2VyX2lkID0gQGFkbWluOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZis6ZT1Wc1c5ZDdQeHk2WAowMDJmc2lnbmF0dXJlIHqtTk4Xh7-OYbB6u-Bib0xNU0qc9P4IS6T4-ZrZOs8JCgg;]!cD@anon-20191002_181700-598:localhost:8800TGNIJBJLORMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEA0fmc3Y0QxWUdmKzQ6O2IKMDAyZnNpZ25hdHVyZSBG-uobgFAmq9NLJXvEdSpgFgmN1SswLvdwubfHzKrPbQog:]!cC@anon-20191002_181700-597:localhost:8800TEPJNKLEKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhTQTFmTnE7LUtBQHlCTEMKMDAyZnNpZ25hdHVyZSB55WriqUdXCaW2zuQkGHisLRCQSwSiwmIsJDDKATirEAog9]!cB@anon-20191002_181700-596:localhost:8800WNSHUZKVHWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF8jcExhLjZqWioqb3JJTGIKMDAyZnNpZ25hdHVyZSATTRbNO7ghd-MJRhbJOUDzReRA2eNpboVfGfaE7b5togog8]!cA@anon-20191002_181700-596:localhost:8800XLWTYGZVSGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNrX153K2cxK1BOU2JSS3IKMDAyZnNpZ25hdHVyZSAe6JbkGlIFoVwqKgUpSQhIS91WBgnR3pTMnBpm3t9nswog7]!c@@anon-20191002_181700-595:localhost:8800HPPFUJBMSQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpIME1rMDJaNTVnQV4mKmQKMDAyZnNpZ25hdHVyZSDs0_JHyuwrzhsZIXxSBOdggNNwVbh6b2PSU7kjM6VnBAog6]!c?@anon-20191002_181700-593:localhost:8800MHLBNUKOHTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFV1IzBqNDdWXm5ncklhR2MKMDAyZnNpZ25hdHVyZSDHpR8ZHjt5986DzBZP0MnU2IPu3q7JCmTn5Jzgxs2pmwog5]!c>@anon-20191002_181700-591:localhost:8800EHJUGKTSXTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWSmFLJl5ZK0heb2ZuOlkKMDAyZnNpZ25hdHVyZSAO7MSz5oG_iGGUxl0k6OcSlgjGpZGamFhhrRuRdokuIgog4]!c=@anon-20191002_181700-590:localhost:8800WKVIGIMVPRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFJQ2k6JnR1d2csZCtTYkoKMDAyZnNpZ25hdHVyZSA9wYUO1vJBMowK4IpWVG5FkeN2atNDe-McB9m6-qrfWQog3]!c<@anon-20191002_181700-589:localhost:8800WSMMMNHHRQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTU4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlYRj1wM05EOS5vXjFKVnoKMDAyZnNpZ25hdHVyZSBYYHFUdAxAnXimtmCEKeGe9KUUuXOT8Dkgh7rJMizMtgo ! C S c s +;K[k{up ]@anon-20191002_181700-627:localhost:8800$2b$04$TpMNQpgqHE571L9TKBYowu8lPqTh07KbMRz6mt6qEwn59UnC18Hiy]uo ]@anon-20191002_181700-626:localhost:8800$2b$04$v26Z4qSgxmlTEo2k1K5cXOWob4OC76vAFhbibcxc9sskbTFE4uaz2]un ]@anon-20191002_181700-625:localhost:8800$2b$04$2jyEtdBsKLlMB5Fmyw8euOHgyBBjngUtizHXb8czH3W3bwVqWInvu]um ]@anon-20191002_181700-624:localhost:8800$2b$04$tQEzGyN8/nO/ec/OEngmO.ivfpfUrhfMMyAs0y284JDK3qXwPRSHa]ul ]@anon-20191002_181700-623:localhost:8800$2b$04$WOEPRy.Vzfg9aYvQyFhEvO5paGidc8p6CueJ6Bstod8nx5Y.F4zvm]uk ]@anon-20191002_181700-622:localhost:8800$2b$04$QAjvMuVgaQV2jXFm9yqx9OVVB0znaLc2w1m2dm1xUQIRS9eeq01Mm]uj ]@anon-20191002_181700-621:localhost:8800$2b$04$PgsHA/ZJLZEnO2rNLy.p5e.FR0lYlsBP/cc89LjaPtuYOoQYebqCW]ui ]@anon-20191002_181700-620:localhost:8800$2b$04$.a0HaMpK11arPc56ketCZ.EFnL9jnCn16XhINKpCa7piSe8i4XoYm]uh ]@anon-20191002_181700-619:localhost:8800$2b$04$7djKJv/cnYnBS8Iq39Bc2unYVXi1WtJW0w.UTnfbNqTY/udcwemwS]ug ]@anon-20191002_181700-618:localhost:8800$2b$04$bXnfCmgdFB0FzpmVQoT4MO23xHiWsya7XlpU59DuMbwe1jw0mN9QS]uf ]@anon-20191002_181700-617:localhost:8800$2b$04$saBVWzLm7MTcatZM3mm8muPFmrkLvS7LIpjZyEzGCVSEpY6GgXgre]ue ]@anon-20191002_181700-616:localhost:8800$2b$04$tlftjsa.rnfrjcWlNE/db.VaBbzQGv.z/i7Hsjelh0wrs2pbiNKGm]ud ]@anon-20191002_181700-615:localhost:8800$2b$04$bc.7ZUNo0PABPIizXyjH8u29OGbs2UmjQ0dNafhZKOEAtK/50A44.]uc ]@anon-20191002_181700-614:localhost:8800$2b$04$thRyz9cKz5s19QDniIk8l.Sykg5cwrRAMgRg/qh7GW.gqKGY4O76e]ub ]@anon-20191002_181700-613:localhost:8800$2b$04$sDQOoCEJ.7JFL6x1flop1.Xvtq.DOejY7TkuS/Gz0Pbv9sryw3Vky]ua ]@anon-20191002_181700-612:localhost:8800$2b$04$r6S4CgB/bHkl60xkI2IePe6UQqR9G1pQjZ8rRqdOwnz/mqFgWkVuG]u` ]@anon-20191002_181700-611:localhost:8800$2b$04$N//TQETE283GCPGuWKU9zeBKKxNjBPkfX5TftXpA1tND1OBUDpipW]u_ ]@anon-20191002_181700-610:localhost:8800$2b$04$uRi3W3VtrIRkrbnY6iW2O.t.312Z4TWj1AlHIQw2xMVzDRvQpnuIm]u^ ]@anon-20191002_181700-609:localhost:8800$2b$04$0GlXOMGWk/cBjpw8lJzEfe16KMxBX6FtkY1EnbSehPaJSdVksHZ6.]u] ]@anon-20191002_181700-608:localhost:8800$2b$04$NYQvqTbgXafKv/Aj.Sbx8eN89Whyqb9oPlUi8VcGIQPU5wK.U6sBi]u\ ] @anon-20191002_181700-604:localhost:8800$2b$04$qX0ZqcpyhDZJz3q8CNCl/.QJusfuEU2jeP/KrNWCsWz2qBSjcxSia]u[ ]@anon-20191002_181700-606:localhost:8800$2b$04$YL3o.00g5LUAS9IsKKMnhO92n3dQDv3ZwZK4K9ll3ZsO5O4M3UaRy]uZ ]@anon-20191002_181700-605:localhost:8800$2b$04$fAYXddt8J3TYg76vL88Oje0lUuCviOT8NaY1.ZP2dTdDaJMMrurES]uY ] @anon-20191002_181700-602:localhost:8800$2b$04$Y/4OyO7.qw5h1ngTSu3hAeq1TQJT.QppiyT6u9HJy4rQrlY3Yjwgq]uX ]@anon-20191002_181700-603:localhost:8800$2b$04$bKBVl2FLuYvqXxgW6lwRduIHQJmNDEzGdoSYjY1KunwLRIi0uLa8O]uW ] @anon-20191002_181700-600:localhost:8800$2b$04$rwJ.vvL2D9VSdq.UuGXKqO/Ys3eeiHMimJYjlBoMt4/7K9XQ6p4yy]wuV ]@anon-20191002_181700-601:localhost:8800$2b$04$0YWB7sdnThtkK.YezSIr3uYNwDqIWA6z5HXhWPtcNGIZTxeCBcIZu]wbU 7@admin:localhost:8800$2b$04$yCiYpoOoxsViaqflhWb5ueykG4DQHuYiXXybK0p3VMJy38Bn0NMFi]vuT ]@anon-20191002_181700-598:localhost:8800$2b$04$ZW9zPzpCNmRKgvzyNeMMFedFCi4nxMqXaeCPwvlnYTw3Inr0eEDC.]vuS ]@anon-20191002_181700-597:localhost:8800$2b$04$VrG9yZfxcyb9k6kv.WBLZ.kgWO7yRyk5FQ4DNodXC6Dfo3MfE602.]uuR ]@anon-20191002_181700-596:localhost:8800$2b$04$b2jh5sbxevFZI3RB5NY4fe.2pV/P8KAs3dU/F.OdExKbJzu7nzL1a]tuQ ]@anon-20191002_181700-595:localhost:8800$2b$04$nnDaSoMDctDf4Z7NsIJyHO8VHiQuRM8UJfK/p5ZFmPS8fGdpkVY4i]suP ]@anon-20191002_181700-593:localhost:8800$2b$04$mcO74g0QZMLXhRuruv0XrORln8.jzy1WQONa4YfEhTuKKGUp4oq5y]r  4 h 6mfd]c@anon-20191002_181700-620:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAo127.0.0.1>a[a@anon-20191002_181700-61:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gc1BxXzJXa0JsZStfSDBMQAowMDJmc2lnbmF0dXJlIOwn5Xis1RrOefXfY8UFWsNvZoJuqYHjOGYlvPALduveCg127.0.0.14d]c@anon-20191002_181700-619:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQo127.0.0.1=d]c@anon-20191002_181700-618:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwo127.0.0.1]!cG@anon-20191002_181700-600:localhost:8800RBYKXFWHAPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhczI4NHpvOjIyKkp-ZHcKMDAyZnNpZ25hdHVyZSAD9JeJIP3Tupr5ZZbRQoM8Hx-snGBPdo-286DrRelJDwo  veQa$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3084}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk"], "type": "m.room.history_visibility", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043259762, "hashes": {"sha256": "ELrGAykYY/gdnovp5yVSWiPlQgCOJnqzVfgJjvFk+CQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6FDogRwI93Lg+vWwDrUBzvIodns08AZXZkJICfOE1BuS5Eu5qWDsNrcZZXOs/V2BngzQe3Bs1CNKH+FMyvzEDw"}}, "unsigned": {"age_ts": 1570043259762}}tueQau$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3083}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc"], "type": "m.room.join_rules", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043258979, "hashes": {"sha256": "eU74TQ+TQRSUz3jA0T9ghCkEX6tt0SrvZYJsBZoMHHI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eqDYsKhklijkunB0HolYQ/1Ltxv4QKYXTgDhPaJFq0p/qSqEmRq64IO5i2jJbShDrAnLDDLMyop9zD1sN2+/AA"}}, "unsigned": {"age_ts": 1570043258979}}kteQac$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3082}{"auth_events": ["$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "type": "m.room.power_levels", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"users": {"@anon-20191002_181700-601:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043258096, "hashes": {"sha256": "KIxaCu7mrbMmEZhvnbmItab+buGaQ3loeaF8OVvOssQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "emTr/E9AZnnAgxKB3vB/nDJwA7ZFLrumBVBSU4BYSZ2bAdNnSKqDGeI0GYKAltYG7Gy/stGxegBfbkZl5077CQ"}}, "unsigned": {"age_ts": 1570043258096}}vseQay$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3081}{"auth_events": ["$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U"], "prev_events": ["$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U"], "type": "m.room.member", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-601", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-601:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043257376, "hashes": {"sha256": "Kdq0csqjX5B0XLNRqrtXqp8YRq5uR6EKuNg5hG5ro2M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Elhfdf7pHewVW/tnco35Hnr/HrYZnVT+q8Jpl2PidnqqtZcna3T9Pz/j9C+KrWoYIDDrmps4kk1hcFKHSGBLCQ"}}, "unsigned": {"age_ts": 1570043257376}} yj[L=.zk\M>/  { l ] N ? 0 !   | ~ o ` Q B 3 $    p a R C 4 %  &qbSD5rcTE6' sdUF7( teVG8) ufWH9*  m ^ O @ 1 "   } n _ P A 2 #   vgXI:+ whYJ;, mV mx x xmp w wml v vmi% u umf t tmc> s sm[ r rmYB q qmV p pmSG o omO n nmG} m mmB l lm@ k km=X j jm8 i im6 h hm* g gm* c cm* b bm* a am&Q ` `m! _ _mm ^ ^mp ] ]m \ \m [ [m Z Zm Y Ym X Xm W WmF V Vm@ U Um[ T Tm S Sm R Rm Q Qm P Pmܩ O Om N Nm< M MmC L Lm K Kmʥ J Jmǩ I Im H Hm߾Y G Gm߻ F Fm߶ E Em߱ D Dm߱ C Cm߭ B Bmߩ A Amߦ @ @mߢ9 ? ?mߟu > >mߚa = =mߔ < <mߓZ ; ;mߎ : :m߉ 9 9m߅# 8 8m߃ 7 7m߀- 6 6my 5 5mt 4 4mnT 3 3mk 2 2mh 1 1m= ' 'mW - -mTl , ,mQ + +mM * *mJ ) )mGR ( (m  mc 0 0m_ / /m[T . .m$  mT  m  m  m!  m  m. mr mc m m m;  mޮ  mޫ1  mޥd  mޢ  mޟ%  mޜ  mޙ  mޔ> mދ mމ[ mކK mރ mހ mx6 mu mrz mo ml ma m^l mZ mX mU mLb mIm mE mB m? m m m m m mD mD m m% m m m m m m9 m0 mே mଳ m m? m] m m m?  m ~ ~m5 } }m | |m { {m z zm| y ym7t m4 m1 m. m+ m! mU m m m m m m m+ m mk m m m{ m mc mh m m m8 m mz m0 m? m2 m m| mŚ m m mݿ mݽ mݻ mݹ mݷ mݵ mݳV mݰ` mݮ! mݬF mݨ mݦ mݤ mݞ mݛ mݘ2 mݖ& mݓ mݎ m݌ m݊ m݈e m݆ m݄ m @`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    8 0 x p h ` X P H @ (   xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xpxph`XPH@80( h`XPH@80( xph`xpXPhH@ ) 4 ( 3 & 1 % 0 ,  +  *  )  (  !    "                                                           ~  }  |  z  y  x  w  v  u  t  t  r  q  p  o  n ~ m } k | j { i z h y g x f w e v c u b t a s ` r _ q ^ p ] o [ n Z m Y l X k W j V i V h U g S f R e Q d P c O b N a M ` K _ J ^ I ] H \ G [ F Z E Y D X C W B V A U @ T ? S > R = Q < P ; O : N 9 M 8 L 7 K 6 J 5 I 4 H 3 G 2 F 1 E 0 D / C . B - A + @ * ? ) > ( = ' < & ; % : $ 9 # 8 " 7 ! 6 5  4  3  2  1  0  /  .  -  ,  +  *  )  (  '  &  %  $  #  "  !                                                                                                                                                                                                       ' 2 # / " . ! -  '  &  %  $  #                                                 TK#a9 # t M %  _ 8[ {S [3 3 r J # k ^ 7Ks kC; Cs+cK(K('Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800'Q!vZGjXEXQoCaoUXnkCa:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800y'Q!yfizglmCXdcqCgDrTr:localhost:8800x'Q!zuCqeooOnfWkYrQdxA:localhost:8800q'Q!zuCqeooOnfWkYrQdxA:localhost:8800p'Q!zuCqeooOnfWkYrQdxA:localhost:8800o'Q!zuCqeooOnfWkYrQdxA:localhost:8800n'Q!zuCqeooOnfWkYrQdxA:localhost:8800m'Q!zuCqeooOnfWkYrQdxA:localhost:8800l'Q!vttkrtSyHEJXVMlvLo:localhost:8800k'Q!vttkrtSyHEJXVMlvLo:localhost:8800j'Q!vttkrtSyHEJXVMlvLo:localhost:8800i'Q!whuymJoLfUdkFdxoyE:localhost:8800h'Q!whuymJoLfUdkFdxoyE:localhost:8800g'Q!whuymJoLfUdkFdxoyE:localhost:8800f'Q!yTQmLDAxZscWKLMSWh:localhost:8800e'Q!yTQmLDAxZscWKLMSWh:localhost:8800d'Q!yTQmLDAxZscWKLMSWh:localhost:8800c'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800^'Q!yNfCaBMPezurwkJRAX:localhost:8800]'Q!wCsDjKBtuUbrmZgjsB:localhost:8800P'Q!vnFXnkCSfTbsSNKrtg:localhost:8800!'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:8800A'Q!zsXPhIPzeXXLvuazzQ:localhost:8800>'Q!tcYctHPiaKzsKgrXlU:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800&Q!zFdNewlKnUiMBxnYrN:localhost:8800y&Q!xwoIOPTGmJIlTXakxC:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800(&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800%&Q!wUuodvgsmAJqKJUBCQ:localhost:8800z'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:88001&Q!wIhMbfQzYbJobPdwyi:localhost:88000'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800@&Q!vVmSdclwPIqYDbnmPn:localhost:8800?'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800 'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800t'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800r'Q!uPxXJHJyFQwvpQLZNs:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800)'Q!uGpSboYkgxVNOqNeUG:localhost:8800('Q!tkajvIKHoOMWGsReBs:localhost:8800 G v D  | J  P  V $ \ *bh608n< tBzHZ(NTj1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4g1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4f1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4e 1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio 1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio 1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio 1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s G1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s F1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwC1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1GhwB1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc Y1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y 1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y 1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y 1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0 1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0 1e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0 1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k ^1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k ]1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k \1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwV1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwU1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwT1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE(1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE'1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE&1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI R1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI Q1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI P1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI 1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI 1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI 1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI l1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI k1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwH1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuwG1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI01e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI/1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI.1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw J?  U  { #   > [ )$*p\ Dc>  j1 CiP7 IV p1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIC1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw 1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 _1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ1e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_Faw1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA -1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk 1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgW1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgV1e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U8v1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw ,1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo u1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM) 21e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg Z1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw}1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E<0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgg1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE51e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0m1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF400e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYYh1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo>1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI=1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffwW1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAY u^1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk 1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 81e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI c1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 21e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgX  nz fb^Z~ j v VRNJ r F~eeQ$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800}eeQ$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800seeQ$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc!JnAKXOrlyisFUpgJPw:localhost:8800zeeQ$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800yeeQ$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800xeeQ$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800weeQ$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800veeQ$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800ueeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800teeQ$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800XeeQ$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800WeeQ$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800VeeQ$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800UeeQ$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw!GwLdUoDplyVUogXDzu:localhost:8800TeeQ$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800SeeQ$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA!GwLdUoDplyVUogXDzu:localhost:8800ReeQ$O0tT-_quWWo1lSnQaZzL-31c2Jim2_chBZPoQM8rtVA$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw!GwLdUoDplyVUogXDzu:localhost:8800QeeQ$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ!GwLdUoDplyVUogXDzu:localhost:8800deeQ$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94!XRAZJeoZBhGeHKKjaG:localhost:8800feeQ$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800eeeQ$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800OeeQ$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBE$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU!nfxDdcgDfooxyiAzaB:localhost:8800|eeQ$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800{eeQ$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800ieeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800heeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800geeQ$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800PeeQ$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQ$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No!GwLdUoDplyVUogXDzu:localhost:8800ZeeQ$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800YeeQ$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800  veQay$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "stream_ordering": 3097}{"auth_events": ["$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8"], "prev_events": ["$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8"], "type": "m.room.member", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-603", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-603:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043270945, "hashes": {"sha256": "TyvyFuEG3Ji6iX5nejMvyYUH17d/yllu32FgZ5W4q9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ydyJ25V37WFCzImmSAQsUlmJaCD8wjfXaPkFZZXodof+lWRicRrNeJ5JIeZP71uEV5xmxzQEEU4GOtF3e+zYBg"}}, "unsigned": {"age_ts": 1570043270945}}ieQa_$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "stream_ordering": 3096}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-603:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043269612, "hashes": {"sha256": "lc9RfdS1owBZ/SJiETLUZo+U5Vz3CQGqQH+4oFaeq9Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/KRK0/92doNZt85uui1HHrhaOI3J4ePPEkT9KMGcYZmcERn0dBSRwKFy3xBl1BxAgMteXRDftU7U9UbkqfyUDA"}}, "unsigned": {"age_ts": 1570043269612}}eQw$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZic!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "txn_id": "576", "stream_ordering": 3095}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$Sorps0hgMrYFQdNza_9x_I4Hs_FUISzVt0l46O75E94"], "type": "m.room.message", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 10"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043267559, "hashes": {"sha256": "PXsZRAstrtF7xE4GVIpD4ktYOzXJlTPMb8Ro5GV3Lvo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rZjxXdNpsDxeJuKa61HK3uJy18+wMcF0VdFai20lgqHZZx+oB956RDJ4CpgSjm1+loyIqdeuwmT/vmtaWb8yCQ"}}, "unsigned": {"age_ts": 1570043267559}}nweQai$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800{"token_id": 582, "stream_ordering": 3085}{"auth_events": ["$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc", "$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U", "$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U"], "prev_events": ["$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA"], "type": "m.room.name", "room_id": "!XRAZJeoZBhGeHKKjaG:localhost:8800", "sender": "@anon-20191002_181700-601:localhost:8800", "content": {"name": "A room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043261230, "hashes": {"sha256": "4JCkfB08GiDzuMPWVnrW2PTWosQtQ2kBzkP3lStTK4M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XP9G3eBn4TJ98RPI6BDKDG2MF7Y3LhGW8hb+ba9hotrEKuicmCbegB3uBOnVE71ulKnC1Uge0Ik/0yJofb0kAw"}}, "unsigned": {"age_ts": 1570043261230}} Ct#k: * ha6OsAU < z / H   b \[ ) P  0  B V $1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAID1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCom1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE k1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU 1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA .1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 a1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA 41e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIE1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ 1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0 +1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM 1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc n21e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w90W1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAIF1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjEi1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1e$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUykP1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM*1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y 1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw :1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$UA95gdfB3ghhRm8G5aZz1Dy2rIUcTKrP0y9KSBmLsPo1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz421e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y 1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI d1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw ?1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$UQqWd8XG9BF8hW2QHZ-MbHEfVEKc5fR2Cc-UgCk5yRU0e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw51e$UKDvbHxm4OzSB9Y3vFYcsNPhGPcmLz8kb-FdjvBzwAA 0e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk81e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8q1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcT1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw~1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E=0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgh1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE61e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0n1e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF410e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ 1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly0s1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA j @  w _ -e3k9Yqj8pW>% w ^ ,! e 3   k 9  _ q ?-SSS? wE}L21e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM 1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s b1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 a1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI 1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc d1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj41e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMY 1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 +1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso 1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU 1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk 1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras L1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLks1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI 1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYY1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI1$3:localhost:42455 b3$39:localhost:42455 1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo3$38:localhost:42455 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPMv1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is U1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ901e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU_1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Ak1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE8W1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk3$48:localhost:42455 1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi01e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUP3$45:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcW1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOw|1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM_1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg]1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg @TMyDa,X% Q  } H  v A m 8  f 1](u@ l7\M'Mz4]@anon-20191002_181700-591:localhost:8800m44]@anon-20191002_181700-590:localhost:8800m44]@anon-20191002_181700-647:localhost:8800m464]@anon-20191002_181700-646:localhost:8800m454]@anon-20191002_181700-645:localhost:8800m444]@anon-20191002_181700-644:localhost:8800m434]@anon-20191002_181700-643:localhost:8800m424]@anon-20191002_181700-642:localhost:8800m414]@anon-20191002_181700-641:localhost:8800m401Y@anon-20191002_181700-5:localhost:8800m4-2[@anon-20191002_181700-59:localhost:8800m4,4]@anon-20191002_181700-598:localhost:8800m4 4]@anon-20191002_181700-597:localhost:8800m4 4]@anon-20191002_181700-596:localhost:8800m44]@anon-20191002_181700-596:localhost:8800m44]@anon-20191002_181700-595:localhost:8800m44]@anon-20191002_181700-593:localhost:8800m42[@anon-20191002_181700-58:localhost:8800m4+4]@anon-20191002_181700-589:localhost:8800m44]@anon-20191002_181700-588:localhost:8800m44]@anon-20191002_181700-587:localhost:8800m44]@anon-20191002_181700-586:localhost:8800m44]@anon-20191002_181700-585:localhost:8800m44]@anon-20191002_181700-640:localhost:8800m4/2[@anon-20191002_181700-63:localhost:8800m414]@anon-20191002_181700-639:localhost:8800m4.4]@anon-20191002_181700-638:localhost:8800m4-4]@anon-20191002_181700-637:localhost:8800m4,4]@anon-20191002_181700-636:localhost:8800m4+4]@anon-20191002_181700-635:localhost:8800m4*4]@anon-20191002_181700-634:localhost:8800m4)4]@anon-20191002_181700-633:localhost:8800m4(4]@anon-20191002_181700-632:localhost:8800m4'4]@anon-20191002_181700-631:localhost:8800m4&4]@anon-20191002_181700-630:localhost:8800m4%2[@anon-20191002_181700-62:localhost:8800m404]@anon-20191002_181700-628:localhost:8800m4$4]@anon-20191002_181700-627:localhost:8800m4#4]@anon-20191002_181700-626:localhost:8800m4"4]@anon-20191002_181700-625:localhost:8800m4!4]@anon-20191002_181700-624:localhost:8800m4 4]@anon-20191002_181700-623:localhost:8800m44]@anon-20191002_181700-622:localhost:8800m44]@anon-20191002_181700-620:localhost:8800m42[@anon-20191002_181700-61:localhost:8800m4/4]@anon-20191002_181700-619:localhost:8800m44]@anon-20191002_181700-618:localhost:8800m44]@anon-20191002_181700-617:localhost:8800m44]@anon-20191002_181700-616:localhost:8800m44]@anon-20191002_181700-615:localhost:8800m44]@anon-20191002_181700-614:localhost:8800m44]@anon-20191002_181700-613:localhost:8800m44]@anon-20191002_181700-612:localhost:8800m44]@anon-20191002_181700-611:localhost:8800m44]@anon-20191002_181700-610:localhost:8800m42[@anon-20191002_181700-60:localhost:8800m4.4]@anon-20191002_181700-609:localhost:8800m44]@anon-20191002_181700-608:localhost:8800m44]@anon-20191002_181700-605:localhost:8800m44]@anon-20191002_181700-604:localhost:8800m44]@anon-20191002_181700-603:localhost:8800m44]@anon-20191002_181700-602:localhost:8800m4 4]@anon-20191002_181700-601:localhost:8800m4 4]@anon-20191002_181700-600:localhost:8800m4  4 h 9md]c@anon-20191002_181700-644:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAo127.0.0.1Td]c@anon-20191002_181700-643:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwo127.0.0.1Sd]c@anon-20191002_181700-642:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgo127.0.0.1Rd]c@anon-20191002_181700-641:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQo127.0.0.1Qd]c@anon-20191002_181700-640:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgo127.0.0.1Pa[a@anon-20191002_181700-63:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gRm1GU15SMUY0UWgmSF53MQowMDJmc2lnbmF0dXJlIDbSRIvfnJi7G0mJ2nZWfJ5uU0lOqh__DEsor_T2DQ0xCg127.0.0.16d]c@anon-20191002_181700-639:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAo127.0.0.1Od]c@anon-20191002_181700-638:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAo127.0.0.1Nd]c@anon-20191002_181700-637:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgo127.0.0.1Md]c@anon-20191002_181700-636:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SYnVqRiwwZVFsO1IzSHYKMDAyZnNpZ25hdHVyZSAGsSAyhrkFU-OZCtccNJK_X4gCUh51n0KT15bBg2OOGAo127.0.0.1Ld]c@anon-20191002_181700-635:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwo127.0.0.1K >CG K O  S  W  [ _ c$g(k,o0s4w8{<<5]!@anon-20191002_181700-646:localhost:8800HFMIURTAJAm4<4]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVGm4<3]!@anon-20191002_181700-644:localhost:8800INFGSFBNKUm4<2]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQm4<1]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQm4<0]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVIm4 9 4/*|%w rmhc TuQe D!UTAORDrNxIbSlGByAp:localhost:8800$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mkTtQe C!UTAORDrNxIbSlGByAp:localhost:8800$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9GgTsQe B!UTAORDrNxIbSlGByAp:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwITrQe A!UTAORDrNxIbSlGByAp:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYETqQe @!UTAORDrNxIbSlGByAp:localhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48TpQe ?!UTAORDrNxIbSlGByAp:localhost:8800$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8oToQe >!UTAORDrNxIbSlGByAp:localhost:8800$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gTnQe =!UTAORDrNxIbSlGByAp:localhost:8800$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4TmQe eeQ$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800~=eeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800~<eeQ$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800~;eeQ$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800~:eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800~9eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800~8eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800~7eeQ$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800 {T (xh0  x PpH  ( X 0 P( H ` 8X0P@XpH h@`8 p XQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 %'Q!SBEprlZiuliFNSfNmz:localhost:8800m'Q!SBEprlZiuliFNSfNmz:localhost:8800l'Q!ROoilpDjLJfjKfSPIi:localhost:8800 ''Q!SBEprlZiuliFNSfNmz:localhost:8800o'Q!SBEprlZiuliFNSfNmz:localhost:8800n'Q!RmdhCjvouVLmyIHjaM:localhost:8800B'Q!RmdhCjvouVLmyIHjaM:localhost:8800A'Q!RmdhCjvouVLmyIHjaM:localhost:8800@'Q!RmdhCjvouVLmyIHjaM:localhost:8800?'Q!RmdhCjvouVLmyIHjaM:localhost:8800>'Q!RmdhCjvouVLmyIHjaM:localhost:8800='Q!RPfffkmSEbWggEjnoI:localhost:8800,'Q!RPfffkmSEbWggEjnoI:localhost:8800*'Q!RPfffkmSEbWggEjnoI:localhost:8800''Q!RPfffkmSEbWggEjnoI:localhost:8800$'Q!RPfffkmSEbWggEjnoI:localhost:8800!'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!SBEprlZiuliFNSfNmz:localhost:8800r'Q!SBEprlZiuliFNSfNmz:localhost:8800q'Q!SBEprlZiuliFNSfNmz:localhost:8800p'Q!RmdhCjvouVLmyIHjaM:localhost:8800D'Q!RmdhCjvouVLmyIHjaM:localhost:8800C'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800E'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800F'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RDEAXrqXQizuhCUFPq:localhost:8800 'Q!RmwbYvIIQyPlHlClty:localhost:8800x'Q!RmwbYvIIQyPlHlClty:localhost:8800w'Q!RmwbYvIIQyPlHlClty:localhost:8800v'Q!RmdhCjvouVLmyIHjaM:localhost:8800H'Q!RmdhCjvouVLmyIHjaM:localhost:8800G'Q!SBEprlZiuliFNSfNmz:localhost:8800s'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 v'Q!SUDzkfFBgpuCANOxRS:localhost:8800 u'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!RYNJAGdRhIlwRZFbrO:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 w'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800 'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 f'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 e 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 y'Q!SUDzkfFBgpuCANOxRS:localhost:8800 x'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 'Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ('Q!RmwbYvIIQyPlHlClty:localhost:8800{'Q!RmwbYvIIQyPlHlClty:localhost:8800z'Q!RmwbYvIIQyPlHlClty:localhost:8800y'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 h'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 g'Q!RSLvuCuAqKQQrKCxNq:localhost:8800  PI  V | J  $ ^ -e v D  3k9q? wE}KQW%]+j8p> 3c4Af2gzb61e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8q1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6we1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6wd1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEp1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEV1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNEo1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUL1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUK1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKUJ1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA1e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA1e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUA1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw u1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKw t1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk|1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsk{1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskz1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agC1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agB1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agA1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XY 1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOI 1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k80e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4 1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYU1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYT1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYS1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw%1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E^1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E]1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E\1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK41e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8p2s1` tHz  IfTX=J~ tH 0 >q"Js=e/W"KD1e$NNxl3OHe5smpTU_LBaAqpEKvJVm74h3E58VFwDN5YSs 1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQ 1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA  'Q$1570043429322ZfcNc:localhost:8800A 'Q$1570043195269hcCzg:localhost:88008 (1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 "1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eUk1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgG1e$InxwYlj7ZEEVaJDycX1eCiCdLqGtnjnta443cjV89UAa'Q$1570043712439XdJFc:localhost:8800 'Q$1570043558384QrKsp:localhost:8800&O$157004173511wRnRr:localhost:8800 (1e$0Vuo42ZI_LK4v_J4mpxP5JWN0p2RuvtCf6qHwDnzFmI 1e$-XlYmyaa8mXYWQ4SffPXnvjChgipyusFc5Hn0EMVW1I.1$3:localhost:37265V1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE}3$87:localhost:4245531e$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyU1e$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0][1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx01e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo :%M$15700427086bDrAU:localhost:8829{0e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE: 1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4 <1e$DseY8nZy6RhTr2qzq8bXOLE_bCVa5Uezo3a8WGFwPGI1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts 1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk [1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROAHu1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YY 1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs  3$67:localhost:424551e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 +1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQu 1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA82j1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A 1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgM1e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicU1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w*'Q$1570042666166IBpPy:localhost:8800$'Q$1570042620111taWCG:localhost:8800 C&O$157004182060gAdxi:localhost:8800 !&O$157004179138NbBYh:localhost:8800 6, S5^(PO x B   j 4  \ & ] O   x B 'k01e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMHw1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sG1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk 1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg 1e$sgCXG32OJiXfcLZaLGJE0IWslc5cXrTvWFmQ/U/VZyI g1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsIB1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE 1e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk+1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kb1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg ]1e$VSqTEw0I3BcQC4tjERLOFAUNsNUxnj1UZGhIaT6L3W41e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE 1e$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9oo 5 f1e$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA1e$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI ) 1e$tvo3TYFpvSBsNy_ithPAZtJjPpzr-phGse3Vkh2-RYoJ 51e$rt8zqRWacuSX6EzcnmZTHrMBJ1r0CiAVHNditGAy-w81e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0u1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E_51e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$msUy_2CEGs_nFnueCRNVw6SKUhUlwSmxgy6R7eckh_g 1e$mENnLNwbsdlhhtBeBEm3KiJaTQU/8iw56LRlkleBeM4 1e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4 b 91e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ y1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE&n1e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi01e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg!1e$fXJA_EPXCU3kQU55ZxWkKNgzYxxR5mbhbB3nrCgbDa8 1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE] 1e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I0 w1e$caoCHWGN_XYbAe-mR01LFT-beWUBZp6CJ75oV8fquN4 X1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY A 1e$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4"1e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdc1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt4 1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I -1e$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM]1e$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Y $1e$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo 1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo34 m1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE v veQay$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3113}{"auth_events": ["$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw"], "prev_events": ["$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw"], "type": "m.room.member", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-605", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-605:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043284105, "hashes": {"sha256": "wB7W5moT5x4TZeYMB9t+ZrTIC/Xr/RQG02gfzU0Pr7g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D2QXP4+u7YnTyR3LDb2aMCy7Umel/48FXDPMW/jgmFgLss4TKz1t9DOcRrxOd/5whg7q5+Oc++HqQXPVcF3pDA"}}, "unsigned": {"age_ts": 1570043284105}}ieQa_$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3112}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-605:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043283282, "hashes": {"sha256": "0RQUkERrWRpxT6ATBm9QirzH6cKdpqBYkxrakH5iYoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1JapPe4Dc/KdCWuCMzvcxFb4rz6C/KqfPa15YvVRYPC64x2dDmrjausS67RIRvz8jfJP1l+eHGV9lN/KfdzvCg"}}, "unsigned": {"age_ts": 1570043283282}}eQw$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "txn_id": "586", "stream_ordering": 3111}{"auth_events": ["$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E", "$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8", "$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs"], "prev_events": ["$F_VRxq9M-Z-uU-KW5_8sTE2BDKkPt2DUBtWpJ6pFiUc"], "type": "m.room.message", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 10"}, "depth": 16, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043280770, "hashes": {"sha256": "IdJ+anYFJyc1CLndadVeF+NehpH7f6wTvXKgKnyVg8c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mf2cbUi6Qzo9GHXpXTtUxknRLJyVHtWcJBPSnHkS0vPseM+5AYe7QXQU+2T3LYLTd7u69eu2Qn0GY34FK+YuCA"}}, "unsigned": {"age_ts": 1570043280770}}neQai$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800{"token_id": 584, "stream_ordering": 3101}{"auth_events": ["$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E", "$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8", "$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs"], "prev_events": ["$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U"], "type": "m.room.name", "room_id": "!JnAKXOrlyisFUpgJPw:localhost:8800", "sender": "@anon-20191002_181700-603:localhost:8800", "content": {"name": "A room name"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043274402, "hashes": {"sha256": "E2yRiI68MK1z5TKDbO0e6sPblBnaGBPzPMkN2Gv1YAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8OyHiywbhnoC7Frr5uIPYKjdvHXNBHuVdEqKrijK/nrkapIMrhLXhuzL7cXfN+DMBee72xOOny3mVhif/C31BQ"}}, "unsigned": {"age_ts": 1570043274402}} [  7= ' p  _ [EU[6e#Q ]$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUm.room.name!MXhwoqNXvexeDDSOZT:localhost:8800m߀-m߁@anon-20191002_181700-606:localhost:8800,5e?Q ]$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAm.room.history_visibility!MXhwoqNXvexeDDSOZT:localhost:8800mym|r@anon-20191002_181700-606:localhost:8800$4e/Q ]$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwm.room.join_rules!MXhwoqNXvexeDDSOZT:localhost:8800mtmu@anon-20191002_181700-606:localhost:8800&3e3Q ]$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgm.room.power_levels!MXhwoqNXvexeDDSOZT:localhost:8800mnTmps@anon-20191002_181700-606:localhost:8800 2e'Q ]$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcm.room.member!MXhwoqNXvexeDDSOZT:localhost:8800mkml@anon-20191002_181700-606:localhost:88001 e'Q  ]$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAm.room.create!MXhwoqNXvexeDDSOZT:localhost:8800mhmi-@anon-20191002_181700-606:localhost:8800 0e'Q ] $txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8m.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800 mcmc@anon-20191002_181700-607:localhost:8829 /e'Q ]$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0m.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800m_m`^@anon-20191002_181700-605:localhost:8800,-e?Q ]$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQm.room.history_visibility!zqQJfFCRlSEDPKlQPy:localhost:8800mWmX@anon-20191002_181700-605:localhost:8800e#Q ]$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0m.room.name!JnAKXOrlyisFUpgJPw:localhost:8800m$m%@anon-20191002_181700-603:localhost:8800,e?Q ]$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Um.room.history_visibility!JnAKXOrlyisFUpgJPw:localhost:8800mTm!@anon-20191002_181700-603:localhost:8800$e/Q ]$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNkm.room.join_rules!JnAKXOrlyisFUpgJPw:localhost:8800mm@anon-20191002_181700-603:localhost:8800&e3Q ]$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_Em.room.power_levels!JnAKXOrlyisFUpgJPw:localhost:8800mm@anon-20191002_181700-603:localhost:8800 e'Q ]$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsm.room.member!JnAKXOrlyisFUpgJPw:localhost:8800m!m@anon-20191002_181700-603:localhost:8800 e'Q ]$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8m.room.create!JnAKXOrlyisFUpgJPw:localhost:8800mmL@anon-20191002_181700-603:localhost:8800!'e)Q ]$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8m.room.message!JnAKXOrlyisFUpgJPw:localhost:8800m=m=@anon-20191002_181700-603:localhost:8800 )e'Q ]$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98m.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800mJmK2@anon-20191002_181700-605:localhost:8800( e'Q  ]$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwm.room.create!zqQJfFCRlSEDPKlQPy:localhost:8800mGRmG@anon-20191002_181700-605:localhost:8800 e#Q ]$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygm.room.name!XRAZJeoZBhGeHKKjaG:localhost:8800m.m@anon-20191002_181700-601:localhost:8800$,e/Q ]$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwm.room.join_rules!zqQJfFCRlSEDPKlQPy:localhost:8800mTlmU-@anon-20191002_181700-605:localhost:8800)+e9Q ]$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQm.room.canonical_alias!zqQJfFCRlSEDPKlQPy:localhost:8800mQmR[@anon-20191002_181700-605:localhost:8800&*e3Q ]$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXAm.room.power_levels!zqQJfFCRlSEDPKlQPy:localhost:8800mMmN@anon-20191002_181700-605:localhost:8800!e)Q ]$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicm.room.message!XRAZJeoZBhGeHKKjaG:localhost:8800m m @anon-20191002_181700-601:localhost:8800!.e)Q ]$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Ym.room.aliases!zqQJfFCRlSEDPKlQPy:localhost:8800m[Tm\@anon-20191002_181700-605:localhost:8800 {L b08 jp  v D >)6 | J # U O P   V $[   \I *n<B ht)1e$jioS9BbZvLv4XA2XmdBWhX1zUSSysKhIk6PSRy7KFY81e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U 1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA R1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 11e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg 1e$jVQT9HKZ15XIMmYYzMBTX4KD-bjqm1iEhvIpjiBUzrIi1e$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0d1e$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg "1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM =1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 11e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA 1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M51e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA11e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg 1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T8c1e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_gK1e$jd7LO4mI4q3viK5hljsw0_SVOweZcTjN3ICRmjpVAec01e$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw)1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg 1e$jMl21dcPBhSvt9qhqpBDrQYHFTlTcRtd3KT0Ntv317o1e$jLhV6igpT3cXlVDe87ZevPRVyj1Y2XU3r8YZm2xz1W81e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w 1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cw1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cu1e$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8cr1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxMg1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4o1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHgR1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ*1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLku1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08P1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA01e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsG1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsF1e$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWMi1e$joa4MTkZKlpZM-oJh1Q1A51FlAFpXV36i6UatEewYU01e$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4`1e$jkWuvk3eCZflGt9uxKVeQHRHkscDX9oBVcm9ecLWxLk"1e$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU1e$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0%1e$jZbydLYjOvA43phH8QAedcZhNqQ44lEGqTCCHKL56Vk1e$jUxNVWlG6CLjz0MIMSCmt--9cdJXgnHfMpH7JTi2Sv081e$jTz-YnA_EprYestQrVyIaufda0lUKNjL-1JrumvjdJY1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC4E1e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ51e$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ i1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 J1e$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo 31e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU 1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM21e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8 A R n5 R n 6 n5  QQm 74 S  o qP 5 U  r9 R  8e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88sha256 '8e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5ksha2568e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Qsha2568e$KRDYi3Za4TYIZMHKDmGXNzE03oMEVZ7IkEyNijOJrhosha256T8e$KOrGjwRXziexNH-NhfMBvUwWkniXPjHtLgnwQBkveWEsha256{8e$KMkrcKoH3XFOBTBEVibX2vVAshFJEyyVwaHC7Eb7XdMsha256!8e$KIkuva3x_aZl1RlvIIfeTkj9qB9AZ3QMOinwMPRtJGcsha2568e$KIC7jd_nx87w__IVvjzbUUcSEIkeVk0EhZAElFSSZ4wsha2568e$KDo570dhqDHoJhnlQSxO7dhh2GFe6B96iEY4xBiH1Ygsha2568e$KDJOHkVkZ1G5nkWHvgj2kKEW-sHWsAmbkfCALdYXn4Isha2568e$KBShX5XGzkCC9qyxbLim328tdn9ZIwdzMctkqXJHIyAsha256~8e$KBQlRvSe3vM9H2AFBTIRbv4ueJhNNTib89dzzAYIxjYsha256@8e$K9N_P6RPUrg4HWVPiNBrhvAUsozy2JD6ho_tS-DF52osha2568e$K7YAbXrIWdBatdL7-FUG0YocCTVc2r7Vgg02tJfOhkssha2568e$K7K-uU5gWQ9O7N05rb_9flSWHsyLiHoDCBLuPmdBSqosha2568e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvMsha256M8e$K-nVTZqOJkdom2mOFFhdXwy-OqwEWkwjgG-gQ-5nqb8sha256S8e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzYsha2568e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8sha2568e$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNosha2568e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2Isha256M8e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjgsha2568e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8sha2567e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdUsha2568e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4sha2568e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8ssha2568e$Jj1lS_HAtBvvAlS4OMlIEhEuYZIeXNPKupwJI7dqFfQsha256 88e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEsha256 8e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8sha256 8e$K3x5AYOmweSxc596v9FV7zvq6i7_zlJX3Eqet0CSiBEsha256 8e$Jt9vWuKb6vN8c34R4-Vj8uQgrcHB3tZvHtBh7w8U-wwsha256 8e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKgsha256 8e$KLpw4jcTAt5iqxQl11VpJgbEGsybX4iuTJ_RenoZx1Msha256 w8e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUAsha256 j8e$JsgwSmc6clTP2_sSEVdHVwuZ_KicyayM-EVG2LfzdiIsha256 q8e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYsha256 O8e$K5IUzgntfO0tK4OsXosZ76G1jTLjwrUUZRvEc1myuIwsha256 8e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQsha2568e$JhFbMKSBPm7cqD6PQDLqNsG4DZ1-p9PE9q1QMnbIgOIsha256 8e$JfU3L-VCvdwTx3--qE169WzAd5jLXtNsH5W5qhPzmxcsha256W8e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYsha256T8e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgsha256 8e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhksha256 8e$KNyNNA2Aenf0Gc1mB4TGiUebS7wakxWuPxSGd9OdwxMsha256 I8e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAwsha256 68e$JouAA-Ycd3uQig_d0HPycYWq7WvR61PzR64rf6Gy4Dwsha256 8e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6Qsha256 8e$KIwgziHPwb29JRp4TgTbE5yjPVz--zUlfJPc4C5qhhMsha2568e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMsha2568e$JrzRhX1Oz-qdOjxLg8LhIAVfKvIpI6v8eLaO866TaKosha256r8e$KFDA9IcJh83EGJl888fCt1VlFQRm5qamTCXKPvvnVIMsha2568e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAsha2568e$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIsha256 8e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFMsha256 @8e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKwsha256<8e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIsha2568e$JuM9De4bxaVkBellm45DBd21psII7AnPMLyo9MboN6Asha256 V8e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eYsha2568e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0sha2568e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuksha2568e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYsha256x7e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8sha256I8e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injgsha2568e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKtssha2568e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpUsha256  eQa$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3117}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw"], "type": "m.room.history_visibility", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043287297, "hashes": {"sha256": "p00Veo6+2stUCmyyzbHH+4hJc52+SnnQ8NTpclqZqK8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o3T8Pngs3Cb6WUbHGM/oyunwuGkyaCyS+4IUnnMf7e1kXOBIbMrXA+WCmefH9E8acVo1eVrP6wNQfBuTTVqtCA"}}, "unsigned": {"age_ts": 1570043287297}}teQau$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3116}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ"], "type": "m.room.join_rules", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043286636, "hashes": {"sha256": "nPbnGNow0TfJQ61UpFGg9FAE40zW7LzgOLd4b8Lzoyg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qBRkIcqd03ID5mRkPNYN2g19IeSWwDIsW83U4rGJxtZi7H896ieet3nhoLxT7ZNUNmHCkgueT32FbaDcPNFBDg"}}, "unsigned": {"age_ts": 1570043286636}} eQa!$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3115}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA"], "type": "m.room.canonical_alias", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"alias": "#__ANON__-25:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043285894, "hashes": {"sha256": "YZECFElZk/rPd+NaPUJ2mBHJPidojVoQf8QrnSTCcf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Y/OQMr5S6j81LAmtet2xCqabSjs/fVJ9Xh74SqvG9EKld0FJk1og9OjUerkvJItgUBSyiBW307dsRVb8bz33Ag"}}, "unsigned": {"age_ts": 1570043285894}}keQac$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3114}{"auth_events": ["$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "type": "m.room.power_levels", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"users": {"@anon-20191002_181700-605:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043284865, "hashes": {"sha256": "k2U+eBn+8dq6yoL8VFdxeLd2e5zR9bxr18VefTzAHiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "348LYcLr63d5NAldbTvAfBPs1HSBFnROLveliCrpREkA22rBOJXpzPfQhPVtcetmnhV8e/WA75VW3hPZ7oSuAg"}}, "unsigned": {"age_ts": 1570043284865}} , 8 - { " p  e CNZOD9.|#qf V-eL$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Ggsha25600* b_E$g"hV,eL$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIsha256//7 z)YwkV+eL$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEsha256ƠqY-CF C V*eL$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48sha256WVnx_kߺ,0=EN;9cV)eL$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8osha256Z kX]kA3E+(o>pV(eL$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gsha2561ohІe;>5(b>ji2cxV'eL$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4sha256SͩCP͏Ƹvڶ}V&eL$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4sha256^({;c  MZu(ΥOV%eL$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8sha256 E%3 fi_o+Jvhcw3K?V$eL$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcsha256X^XVa<𹝔 6 )rkWV#eL$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0sha256bWb5I0FͭV"eL$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUsha256,)t"f4iSc`V!eL$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4sha256Qx_+>f䅾2q6!J&V eL$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUsha256{46Iwm7,0;᫂ RwU*5VeL$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAsha256:rb}4EdK5>j VeL$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwsha256A*eC;bBp[ ;FVeL$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfgsha256g`[|4铥3F5VeL$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcsha256L,<}`s$ѦHywb`VeL$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNAsha256(0OIuUI0Qrv$.<ܐVeL$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8sha256(g@lXM!J>x k\ѮeOVeL$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0sha256H1(}j"੍VeL$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Ysha256PCdTs+ijwX _?VeL$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQsha256LE[t|XXy}ѽ X"VeL$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYwsha256Ou.ҧ{[i4Bm}VeL$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0sha256dFCŰX/qZƾ=VeL$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67Usha256߉V2hfXT _c|VeL$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNksha256T9<=e*s{%0tnA~pVeL$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_Esha256,AM'̯ɞ0@kVeL$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHssha256jNPK{J{uh"(Xa{VeL$DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8sha256 r~&8(ܸ¬~ 8/2VeL$XCTRJ7bWkorEp2pE5W9oU-wuEmoYlkInUAkKb2KqZicsha256\$'֒ħjDohS.jB'P obf'VweL$-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHygsha256x\$k,pýKӫ~x FH(VveL$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeAsha2562{X}C0K}zAi͋ɔpK+ܿMVueL$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wksha256,O]0Dױ{ u6iVteL$cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8ncsha256rf ba =tY!L3A t^wVseL$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Usha256B?wL3ҘZ[VreL$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1Usha256) $aPnc⳻Cn %X.UVqeL$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8sha256]68嵬NZ<,Pk^VeL$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8sha256x>p=0B]82*ŕVeL$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98sha256Vb|PQ_Gސ;Eqcߠ2}]VeL$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfwsha256Ŷ/Umcf\~IT!LIsŎ VpeL$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWwsha256Ck |C?|D*+T_x=emlVeL$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQsha256grYAEOvz2rtbfVeL$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXAsha256&q fwt20Rp R~Q$vIyLl? ^ 1  C1 ~ Q $ [.hl?q  q D  {N^ d 7 V,Q!Ulu,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 G G,Q!UTAORDrNxIbSlGByAp:localhost:8800 C C,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UTAORDrNxIbSlGByAp:localhost:8800 D D,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 pp,Q!TlJCaYlCkOOVzFDlLx:localhost:8800oo,Q!TlJCaYlCkOOVzFDlLx:localhost:8800nn,Q!TlJCaYlCkOOVzFDlLx:localhost:8800mm,Q!UTAORDrNxIbSlGByAp:localhost:8800 9 9+Q !UTAORDrNxIbSlGByAp:localhost:8800 7 7,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 H H,Q!UTAORDrNxIbSlGByAp:localhost:8800 B B,Q!UTAORDrNxIbSlGByAp:localhost:8800 A A,Q!UTAORDrNxIbSlGByAp:localhost:8800 @ @,Q!UTAORDrNxIbSlGByAp:localhost:8800 ? ?,Q!UTAORDrNxIbSlGByAp:localhost:8800 > >,Q!UTAORDrNxIbSlGByAp:localhost:8800 = =,Q!UTAORDrNxIbSlGByAp:localhost:8800 ; ;,Q!UTAORDrNxIbSlGByAp:localhost:8800 F F,Q!UTAORDrNxIbSlGByAp:localhost:8800 E E,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!URpLZLuBfVcfHVTBGS:localhost:8800+Q !URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800llY,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 rr,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 qq,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800+Q !UyLoIXmzVFwycmBUeh:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800+Q !UaitDdkGDcwvRLJSvp:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800~~,Q!UMFUOnYRvwKwSPkYHB:localhost:8800}},Q!UMFUOnYRvwKwSPkYHB:localhost:8800||+Q !UMFUOnYRvwKwSPkYHB:localhost:8800{{,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 +Q !UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800 R~Q$vIyLl? ^ 1  C1 ~ Q $ [.hl?q  q D  {N^ d 7 V,Q!Ulu,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 G G,Q!UTAORDrNxIbSlGByAp:localhost:8800 C C,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UTAORDrNxIbSlGByAp:localhost:8800 D D,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 pp,Q!TlJCaYlCkOOVzFDlLx:localhost:8800oo,Q!TlJCaYlCkOOVzFDlLx:localhost:8800nn,Q!TlJCaYlCkOOVzFDlLx:localhost:8800mm,Q!UTAORDrNxIbSlGByAp:localhost:8800 9 9+Q !UTAORDrNxIbSlGByAp:localhost:8800 7 7,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UTAORDrNxIbSlGByAp:localhost:8800 H H,Q!UTAORDrNxIbSlGByAp:localhost:8800 B B,Q!UTAORDrNxIbSlGByAp:localhost:8800 A A,Q!UTAORDrNxIbSlGByAp:localhost:8800 @ @,Q!UTAORDrNxIbSlGByAp:localhost:8800 ? ?,Q!UTAORDrNxIbSlGByAp:localhost:8800 > >,Q!UTAORDrNxIbSlGByAp:localhost:8800 = =,Q!UTAORDrNxIbSlGByAp:localhost:8800 ; ;,Q!UTAORDrNxIbSlGByAp:localhost:8800 F F,Q!UTAORDrNxIbSlGByAp:localhost:8800 E E,Q!UluPYLGXtInKDTjRzp:localhost:8800 +Q !UluPYLGXtInKDTjRzp:localhost:8800 ,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!URpLZLuBfVcfHVTBGS:localhost:8800+Q !URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800llY,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!URpLZLuBfVcfHVTBGS:localhost:8800,Q!UluPYLGXtInKDTjRzp:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 rr,Q!TlJCaYlCkOOVzFDlLx:localhost:8800 qq,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800,Q!UyLoIXmzVFwycmBUeh:localhost:8800+Q !UyLoIXmzVFwycmBUeh:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800,Q!UaitDdkGDcwvRLJSvp:localhost:8800+Q !UaitDdkGDcwvRLJSvp:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800,Q!UMFUOnYRvwKwSPkYHB:localhost:8800~~,Q!UMFUOnYRvwKwSPkYHB:localhost:8800}},Q!UMFUOnYRvwKwSPkYHB:localhost:8800||+Q !UMFUOnYRvwKwSPkYHB:localhost:8800{{,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800  ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!UGVFuRGyPQmBbGsEDo:localhost:8800 +Q !UGVFuRGyPQmBbGsEDo:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800 ,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800,Q!TleKOyAElrpgyyrAQA:localhost:8800 2:zM l? ^ 1  } Q $ Hg: q D  c 7 V )u,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 8,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 0,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / /,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . .,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - -,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ,,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + +,Q!zuCqeooOnfWkYrQdxA:localhost:8800 L L,Q!zuCqeooOnfWkYrQdxA:localhost:8800 K K,Q!zuCqeooOnfWkYrQdxA:localhost:8800 J J,Q!zuCqeooOnfWkYrQdxA:localhost:8800 I I,Q!zuCqeooOnfWkYrQdxA:localhost:8800 H H,Q!zuCqeooOnfWkYrQdxA:localhost:8800 G G,Q!zuCqeooOnfWkYrQdxA:localhost:8800 F F,Q!zuCqeooOnfWkYrQdxA:localhost:8800 E E,Q!zuCqeooOnfWkYrQdxA:localhost:8800 D D,Q!zuCqeooOnfWkYrQdxA:localhost:8800 C C+Q !zuCqeooOnfWkYrQdxA:localhost:8800 B B,Q!zsXPhIPzeXXLvuazzQ:localhost:8800cc,Q!zsXPhIPzeXXLvuazzQ:localhost:8800bb,Q!zsXPhIPzeXXLvuazzQ:localhost:8800aa,Q!zsXPhIPzeXXLvuazzQ:localhost:8800``,Q!zsXPhIPzeXXLvuazzQ:localhost:8800__,Q!zsXPhIPzeXXLvuazzQ:localhost:8800^^,Q!zsXPhIPzeXXLvuazzQ:localhost:8800]],Q!zsXPhIPzeXXLvuazzQ:localhost:8800\\+Q !zsXPhIPzeXXLvuazzQ:localhost:8800[[,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * *,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) )+Q !zqQJfFCRlSEDPKlQPy:localhost:8800 ( (,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ~~,Q!zoTQAhGwmDDUECKtbL:localhost:8800 }},Q!zoTQAhGwmDDUECKtbL:localhost:8800 ||,Q!zoTQAhGwmDDUECKtbL:localhost:8800 {{,Q!zoTQAhGwmDDUECKtbL:localhost:8800zz,Q!zoTQAhGwmDDUECKtbL:localhost:8800yy,Q!zoTQAhGwmDDUECKtbL:localhost:8800xx,Q!zoTQAhGwmDDUECKtbL:localhost:8800ww,Q!zoTQAhGwmDDUECKtbL:localhost:8800vv,Q!zoTQAhGwmDDUECKtbL:localhost:8800uu,Q!zoTQAhGwmDDUECKtbL:localhost:8800tt,Q!zoTQAhGwmDDUECKtbL:localhost:8800ss,Q!zoTQAhGwmDDUECKtbL:localhost:8800rr,Q!zoTQAhGwmDDUECKtbL:localhost:8800qq+Q !zoTQAhGwmDDUECKtbL:localhost:8800pp 2:zM l? ^ 1  } Q $ Hg: q D  c 7 V )u,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 8,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 0,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / /,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . .,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - -,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ,,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + +,Q!zuCqeooOnfWkYrQdxA:localhost:8800 L L,Q!zuCqeooOnfWkYrQdxA:localhost:8800 K K,Q!zuCqeooOnfWkYrQdxA:localhost:8800 J J,Q!zuCqeooOnfWkYrQdxA:localhost:8800 I I,Q!zuCqeooOnfWkYrQdxA:localhost:8800 H H,Q!zuCqeooOnfWkYrQdxA:localhost:8800 G G,Q!zuCqeooOnfWkYrQdxA:localhost:8800 F F,Q!zuCqeooOnfWkYrQdxA:localhost:8800 E E,Q!zuCqeooOnfWkYrQdxA:localhost:8800 D D,Q!zuCqeooOnfWkYrQdxA:localhost:8800 C C+Q !zuCqeooOnfWkYrQdxA:localhost:8800 B B,Q!zsXPhIPzeXXLvuazzQ:localhost:8800cc,Q!zsXPhIPzeXXLvuazzQ:localhost:8800bb,Q!zsXPhIPzeXXLvuazzQ:localhost:8800aa,Q!zsXPhIPzeXXLvuazzQ:localhost:8800``,Q!zsXPhIPzeXXLvuazzQ:localhost:8800__,Q!zsXPhIPzeXXLvuazzQ:localhost:8800^^,Q!zsXPhIPzeXXLvuazzQ:localhost:8800]],Q!zsXPhIPzeXXLvuazzQ:localhost:8800\\+Q !zsXPhIPzeXXLvuazzQ:localhost:8800[[,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * *,Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) )+Q !zqQJfFCRlSEDPKlQPy:localhost:8800 ( (,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ,Q!zoTQAhGwmDDUECKtbL:localhost:8800 ~~,Q!zoTQAhGwmDDUECKtbL:localhost:8800 }},Q!zoTQAhGwmDDUECKtbL:localhost:8800 ||,Q!zoTQAhGwmDDUECKtbL:localhost:8800 {{,Q!zoTQAhGwmDDUECKtbL:localhost:8800zz,Q!zoTQAhGwmDDUECKtbL:localhost:8800yy,Q!zoTQAhGwmDDUECKtbL:localhost:8800xx,Q!zoTQAhGwmDDUECKtbL:localhost:8800ww,Q!zoTQAhGwmDDUECKtbL:localhost:8800vv,Q!zoTQAhGwmDDUECKtbL:localhost:8800uu,Q!zoTQAhGwmDDUECKtbL:localhost:8800tt,Q!zoTQAhGwmDDUECKtbL:localhost:8800ss,Q!zoTQAhGwmDDUECKtbL:localhost:8800rr,Q!zoTQAhGwmDDUECKtbL:localhost:8800qq+Q !zoTQAhGwmDDUECKtbL:localhost:8800pp *Apb0> vD|Jjp  \ |P P8  Y ]+$ >  j8V|JPb \ '1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s 1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE V1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkz1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPky1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPkx0e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI51e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MK1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd821e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMsm1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91MM1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91ML1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgY1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEg1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I X1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I W1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I V1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogl1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogk1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogj1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw{1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwz1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVwy1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp01e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp01e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI70e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI61e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU 1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU 1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU '21e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE W 1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4 1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd83 21e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE U1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE T0e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ40e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ30e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ21e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg[1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRgZ 21e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4 d1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4 1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4 1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd851e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd841e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM21e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU 1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU 1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzAd !] l  w / e GLsny 4MX]i8Q3 e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 7Q']e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5oc6Q' e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.create$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 5Q']e !kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2or4Q))e !kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEo3Q? e !kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibility$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIg2Q/ e !kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rules$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEl1Q9 e !kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_alias$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoci0Q3 e !kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE /Q']e !kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Yc.Q' e !kjjUsMowsioSQRIJeg:localhost:8800m.room.create$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA -Q']e !UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI ,Q']e !UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEr+Q))e !UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48o*Q? e !UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibility$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8og)Q/ e !UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rules$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gl(Q9 e !UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_alias$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4i'Q3 e !UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 &Q']e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc %Q']e !UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 $Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUc#Q' e !UTAORDrNxIbSlGByAp:localhost:8800m.room.create$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4a"Q# e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.name$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUo!Q? e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibility$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAg Q/ e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rules$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwiQ3 e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg Q']e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vccQ' e !MXhwoqNXvexeDDSOZT:localhost:8800m.room.create$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8 Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$VhhHkiKpSbwh9kSk0LkPDjPtzbV3etTy0KPHKt3WXrE Q']e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-607:localhost:8829$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0rQ))e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.aliaseslocalhost:8800$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YoQ? e !zqQJfFCRlSEDPKlQPy:localhost:8800m.room.history_visibility$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ " J ! O&+S Zj+H AeQ']$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800joinp@eQ))$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800m?eQ? $D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibilitye>eQ/ $v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rulesj=eQ9 $64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_aliasg<eQ3 $C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels ;eQ']$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800joina8eQ' $UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800m.room.create_7eQ# $A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800m.room.namem6eQ? $GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibilitye5eQ/ $QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rulesg4eQ3 $wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels 3eQ']$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800joina2eQ' $E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800m.room.create  :eQ']$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800joind_)eQ# $8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0!JnAKXOrlyisFUpgJPw:localhost:8800m.room.namem(eQ? $jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800m.room.history_visibilitye'eQ/ $r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk!JnAKXOrlyisFUpgJPw:localhost:8800m.room.join_rulesg&eQ3 $LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E!JnAKXOrlyisFUpgJPw:localhost:8800m.room.power_levels %eQ']$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs!JnAKXOrlyisFUpgJPw:localhost:8800m.room.member@anon-20191002_181700-603:localhost:8800joina$eQ' $DHJ-sSb5t_mf4IKj-zgo6IzcuObCrBp-BQvOOC8yyt8!JnAKXOrlyisFUpgJPw:localhost:8800m.room.create_#eQ# $-5547g5czyRrLPL29XDXw73nS9OrBcN-FXgNRqNIHyg!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.namem"eQ? $MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.history_visibilitye!eQ/ $LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.join_rulesg eQ3 $cmannApiHWHxkCCZxz10WSGkTNIz_0Hm0wp0XvHS8nc!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.power_levels eQ']$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U!XRAZJeoZBhGeHKKjaG:localhost:8800m.room.member@anon-20191002_181700-601:localhost:8800join  h4eQ1#$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 3120}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-607", "membership": "join"}, "depth": 9, "hashes": {"sha256": "PYSyZBZnyVv2afuiDsypXcVEEFA/N+/Z0mZTRHGsWg0"}, "origin": "localhost:8829", "origin_server_ts": 1570043290386, "prev_events": ["$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0"], "prev_state": [], "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-607:localhost:8829", "state_key": "@anon-20191002_181700-607:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zYXQh0na38MNmoCSb71wVtKa1dK39Jrwpo/X4QaOZ2RRlhF7jU/KNH1NGtGnRb1ImOsCejrM5BrkiJO6RSSWAg"}, "localhost:8829": {"ed25519:a_UxIG": "JN/vCAbrmxBACTRpAM8coYrxJ3wvpQOoiuuBTopcWqR6yLeaW/iISPbXbnGhVaBBXl71ihas8EXGX9UDEKbQCQ"}}, "unsigned": {"age": 104, "replaces_state": "$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0"}}5eQaw$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3119}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y"], "type": "m.room.member", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-607", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-607:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043289517, "hashes": {"sha256": "vjUoq1/uGurLibA6xcO/SMlmafwriIQuC7umlrX54do"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sTPBMIVtA+XT4v1zoyWY+BCgRM1mO8WtSwOjozupY7vWJ9vLUQd9R0YDyzaymFyyTO9Veu+k3gjate36dvLnCw"}, "localhost:8829": {"ed25519:a_UxIG": "a3WRrR4FEhnmdxphyQOMFY/KVn+5pUmhJqGnAyru7rNs/6KJzLvYvM8MHaGHQDC77T3+KreWI6T6d8gJWXnuDw"}}, "unsigned": {"age_ts": 1570043289517, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#__ANON__-25:localhost:8800"}, "sender": "@anon-20191002_181700-605:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-605:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-605", "avatar_url": null}, "sender": "@anon-20191002_181700-605:localhost:8800"}]}}eQa5$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y!zqQJfFCRlSEDPKlQPy:localhost:8800{"token_id": 586, "stream_ordering": 3118}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ"], "type": "m.room.aliases", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"aliases": ["#__ANON__-25:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043288404, "hashes": {"sha256": "dPJ43YQYtLxB6w25Y2lAluMgJ4A8fbqdYV81/iSPGdU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ppQ89duyrWcsZhuzd5UrxEXgvbfq5ZmEGLyMUGflaLqwvoB3QdQp5bqCLSlmqpznC6ns/2l2O6/6QluyP72CCw"}}, "unsigned": {"age_ts": 1570043288404}}  $ [ceQ?u$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3124}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg"], "type": "m.room.join_rules", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043294728, "hashes": {"sha256": "E1JmmbGsL0RosFcf21YcTJiCamNFznwPGEW/5HWO+2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1yxCGv0PxwpJzQ3y887BfP9eJOoUMijOq5vvBhtyeG8RvWll6CYCgKFYtGb8BWkbGis30S38Nlxqzg/fnm/1Bw"}}, "unsigned": {"age_ts": 1570043294728}}\eQ?g$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3123}{"auth_events": ["$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "type": "m.room.power_levels", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"users": {"@anon-20191002_181700-606:localhost:8800": 100}, "users_default": -10, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043293268, "hashes": {"sha256": "I2sj/zemq6eWVvyJM2iuC6vH+GTKsnLHiava3agb2mA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Hp7FKFcQiD/rbHAd5EB9vO8AhCNMHaxJ5ZRq3M+TWR6rSs9LJV0logOikGmGRzMucIZgsjIkX6WlpzxLl1RADw"}}, "unsigned": {"age_ts": 1570043293268}}eeQ?y$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3122}{"auth_events": ["$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA"], "prev_events": ["$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA"], "type": "m.room.member", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-606", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-606:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043292593, "hashes": {"sha256": "HfUw4jDfbRIetHAIenJFCyt+fd0tvELadj7F81o3DvE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Rfa1/Cgt07sU6ZCXdYkjsKWsN7gUioVofUGfkGgFUSDuunDQllkolEmvM+IVDcZgKaAzqTxLifAatbqxXkTbCA"}}, "unsigned": {"age_ts": 1570043292593}}XeQ?_$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3121}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-606:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043291846, "hashes": {"sha256": "uPpdKVPCZECrM4PGBxGJHBTgdNHRiS1kmrmrhroQJkQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MprJ3tEVR1Q9pT+SwEdT0sfSn9k+nVtVnW3i6AZjWi5dc16tdKbxz783sW+v20x2B+6lyvP4BRp7x/+SK7RWDQ"}}, "unsigned": {"age_ts": 1570043291846}} Y 'YJ"eQ?C$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU!zqQJfFCRlSEDPKlQPy:localhost:8800{"stream_ordering": 3128}{"auth_events": ["$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA", "$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw", "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"], "prev_events": ["$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8"], "type": "m.room.member", "room_id": "!zqQJfFCRlSEDPKlQPy:localhost:8800", "sender": "@anon-20191002_181700-605:localhost:8800", "content": {"membership": "leave"}, "depth": 10, "prev_state": [], "state_key": "@anon-20191002_181700-605:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043299107, "hashes": {"sha256": "XKpctsk33bw304iI0SDNkF5yxSImPswR4KCawkeXFbU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t0HZRn6TONER/yXTTC9A5qAQE0bf6NCQyfBcqg5uUU7g66LYzIE2x6rDjkzY3q+9l4IkV/U73v3Fc+g4+gqQAA"}}, "unsigned": {"age_ts": 1570043299107, "replaces_state": "$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98"}}i!eQa_$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3127}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-608:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043298785, "hashes": {"sha256": "pPzh51lS/iR6xTDkENImwmzLNKqU6g8+rjauj17E+Vk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "A5UrXIfpjqwHCIWhYS2WY7C2+p7Dir4tjD1upKMGoKEi7g1Ap+x2srRdiMQmChavVRjuLZq+Ye+SDZ/y1mCQCA"}}, "unsigned": {"age_ts": 1570043298785}}p eQ?$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3126}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA"], "type": "m.room.name", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"name": "Content Violation Notification"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043297837, "hashes": {"sha256": "daFyg4SwOg/X/EujvAgH5a0p4U1mRurmdEoux+jNOvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cXnWmmi4NcBkYjah4/IB9DUX64ZULtmDDV+oa6p+zB1ZfOt4fsJhZ7GnjrvM/dNPhlBh2wedmGjfzwM4khIhCQ"}}, "unsigned": {"age_ts": 1570043297837}}teQ?$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800{"stream_ordering": 3125}{"auth_events": ["$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg", "$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA", "$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc"], "prev_events": ["$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw"], "type": "m.room.history_visibility", "room_id": "!MXhwoqNXvexeDDSOZT:localhost:8800", "sender": "@anon-20191002_181700-606:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043296187, "hashes": {"sha256": "Mw+Zixep2g//2ImK6z9LHklTBIhSXX1Thip3RIjoQsY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gN1MalJKiUY7uNbQZVbgme15FPgpHAGR+nqIpSi+6d5DOm0R3Ud3Th2H3z1ScYq4ZalnMeDasd/9s2qPN/4tCA"}}, "unsigned": {"age_ts": 1570043296187}} t T \ LD< 4 d ,$  l |teeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM!mTlCLZQCmfDuQsJxxp:localhost:8800OeeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00!mTlCLZQCmfDuQsJxxp:localhost:8800PeeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw!JusxqeECtidaPlWqhp:localhost:8800QeeQ$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4!wnriPzXkIMmdTNoJKU:localhost:8800́eeQ$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU!CNFopUEQTFbzjmLvii:localhost:8800=eeQ$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU!AMLmLqizBFklpqKibP:localhost:88001eeQ$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU$IY8mnh1ek2Q2OYnsR14eLKpSQPGE0r5aY6nJ6n6EXSQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo!uJtKGXTNdEnCPNOGDx:localhost:8800eeQ$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q!KeqmSjifajNKxtgqhj:localhost:8800ceeQ$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pw!cSUQGmpIsSCBAVTOHo:localhost:8800MeeQ$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07Wo!IPYMCBwcyNIzqdiIWv:localhost:8800ɁeeQ$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw!aknLNLxfChlLvFYhkJ:localhost:8800<eeQ$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc$wcKyI4rPSZY7CDafHxYx5OnMcx0ZtZJ0FII-z-EgsWA!aZwMKYDXJRlSKjQNWM:localhost:8800peeQ$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c!BGbJEmJRVJGlZFQbZe:localhost:8800΁eeQ$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ!UaitDdkGDcwvRLJSvp:localhost:8800!eeQ$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM!eySSVuCclRpBDgwKIU:localhost:8800eeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo$oifR350w8B5NUBBlqwf-SOAhViYdgOE0KC-JYy1pkWw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800 AeeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800 #eeQ$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800 ρeeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800 veeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4!CSqENqzAezaZnGktbE:localhost:8800 eeQ$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s$p9I4zPSl8QZfuXEh1SG521AMBIpvG-dLCk9QjSXOEFM!mTlCLZQCmfDuQsJxxp:localhost:8800N !U(P - 0 R LUX}  0RLU PQ']e \!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsdOQ' e [!OCEHAjcOXWNyWIESIS:localhost:8800m.room.create$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico NQ']e Y!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJposMQ))e X!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykpLQ? e W!qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibility$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAhKQ/ e V!qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rules$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFomJQ9 e U!qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_alias$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gjIQ3 e T!qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE HQ']e S!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5odGQ' e R!qjijQBfMwsCPTVgKPm:localhost:8800m.room.create$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 FQ']e P!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2osEQ))e O!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEpDQ? e N!kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibility$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIhCQ/ e M!kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rules$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEmBQ9 e L!kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_alias$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocjAQ3 e K!kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE @Q']e J!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Yd?Q' e I!kjjUsMowsioSQRIJeg:localhost:8800m.room.create$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA >Q']e B!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI =Q']e A!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEs<Q))e @!UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48p;Q? e ?!UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibility$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8oh:Q/ e >!UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rules$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gm9Q9 e =!UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_alias$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4j8Q3 e ;!UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 7Q']e :!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 6Q']e 9!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza085Q']ee 8!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98d4Q' e 7!UTAORDrNxIbSlGByAp:localhost:8800m.room.create$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4b3Q# e 6!MXhwoqNXvexeDDSOZT:localhost:8800m.room.name$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUp2Q? e 5!MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibility$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCAh1Q/ e 4!MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rules$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOwj0Q3 e 3!MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg 1^ k x ' 4 A N [ hu$1>KXer!P]Q@anon-20191002_181700-473:localhost:8800!kAxKaIQhXTtGFWSUgr:localhost:8800P]Q@anon-20191002_181700-471:localhost:8800!WhLedNwPGGGTtqeqam:localhost:8800P]Q@anon-20191002_181700-469:localhost:8800!yLccBXjjEasExpsXlt:localhost:8800P]Q@anon-20191002_181700-467:localhost:8800!PcvmCDeVUSyJbXpTig:localhost:8800P]Q@anon-20191002_181700-465:localhost:8800!HbYxdEuVIeLKHwqJEh:localhost:8800P]Q@anon-20191002_181700-464:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-463:localhost:8800!FbJSiQoZtZkaFwzzQq:localhost:8800P]Q@anon-20191002_181700-462:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-461:localhost:8800!JPTwFTSDaBXwUTgitj:localhost:8800P]Q@anon-20191002_181700-460:localhost:8800!RYNJAGdRhIlwRZFbrO:localhost:8800P]Q@anon-20191002_181700-458:localhost:8800!MqstbCLZIQFiYNHrqR:localhost:8800P]Q@anon-20191002_181700-456:localhost:8800!WuiaqqIOvBjgETqdus:localhost:8800P]Q@anon-20191002_181700-454:localhost:8800!bQDOrbAknnQZfUbhgS:localhost:8800P]Q@anon-20191002_181700-452:localhost:8800!GSxvxNevpCiwmFCHys:localhost:8800P]Q@anon-20191002_181700-450:localhost:8800!yfizglmCXdcqCgDrTr:localhost:8800P]Q@anon-20191002_181700-449:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800P]Q@anon-20191002_181700-448:localhost:8800!XnUZiYJDWVNGfsBnGz:localhost:8800P]Q@anon-20191002_181700-447:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800P]Q@anon-20191002_181700-446:localhost:8800!ePtMOPPOgOcBIMNZpn:localhost:8800P]Q@anon-20191002_181700-445:localhost:8800!YGUjVdVdpcQoGkRnWB:localhost:8800P]Q@anon-20191002_181700-444:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-443:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-442:localhost:8800!IZkczIYykpZDvjuUWn:localhost:8800P]Q@anon-20191002_181700-441:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-440:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-439:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-438:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-437:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-436:localhost:8800!zuCqeooOnfWkYrQdxA:localhost:8800P]Q@anon-20191002_181700-435:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-434:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-433:localhost:8800!vttkrtSyHEJXVMlvLo:localhost:8800P]Q@anon-20191002_181700-432:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-431:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-430:localhost:8800!whuymJoLfUdkFdxoyE:localhost:8800P]Q@anon-20191002_181700-429:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-428:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-427:localhost:8800!yTQmLDAxZscWKLMSWh:localhost:8800P]Q@anon-20191002_181700-426:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-425:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-424:localhost:8800!eWRdwtyqHvuxZFvhNS:localhost:8800P]Q@anon-20191002_181700-422:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-421:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-420:localhost:8800!UGVFuRGyPQmBbGsEDo:localhost:8800P]Q@anon-20191002_181700-419:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-418:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-417:localhost:8800!AMLmLqizBFklpqKibP:localhost:8800P]Q@anon-20191002_181700-416:localhost:8800!rWGwSSefrZzQYCYFHs:localhost:8800P]Q@anon-20191002_181700-475:localhost:8800!tLkhTnTgDjjAvscRkW:localhost:8800 a} { y w u sqomkigeca~teeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800~seeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~reeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~qeeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~peeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~oeeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~neeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~meeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~leeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~keeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~jeeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~ieeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~heeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~geeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~feeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800~eeeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800~deeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~ceeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800~beeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800~aeeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800~`eeQ$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~_eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$hFZifFASGFGFX0fl3pA7AxUdRbJxY9-gmbUyfV3pn98!zqQJfFCRlSEDPKlQPy:localhost:8800~^eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$xbYvVQ_sEMZtY2bxolzc7n6PSdNUIaABzExJc8WODfw!zqQJfFCRlSEDPKlQPy:localhost:8800~]eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA!zqQJfFCRlSEDPKlQPy:localhost:8800~\eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800~[eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800~ZeeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800~YeeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800~XeeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$E5d_AhynkigwT7j7rUl1VUkwUaiScvR2JKIuPO3ckNA!MXhwoqNXvexeDDSOZT:localhost:8800~WeeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$wbyDZ8vIYJyyW8fVfJA0pKvV6ZOl4jO6Rv8Uu8nUNfg!MXhwoqNXvexeDDSOZT:localhost:8800~VeeQ$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc!MXhwoqNXvexeDDSOZT:localhost:8800 8l D `8:]c!E@anon-20191002_181700-616:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtWczhVYXYqK2kxZEo5VUMKMDAyZnNpZ25hdHVyZSAyxMn--zXijwO_yDpNAKZp3Nowd1ex2CJt9oF3jnAAlQoYMFGFJXLHS127.0.0.1Perl + Net::Async::HTTP/0.44m9]c!E@anon-20191002_181700-615:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxQOkhhbnIqNG1BZnlZb0QKMDAyZnNpZ25hdHVyZSCd7FTUX1n-4f2mMjlkYjWuX6DbpozOJbgiroD47tErvwoLDFQWSUCEM127.0.0.1Perl + Net::Async::HTTP/0.44m8]c!E@anon-20191002_181700-613:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpreUxsRlNPfmpWV0R4emwKMDAyZnNpZ25hdHVyZSAFh5ccDMSVr8aWYsFwKsNl55tnlLMnNvdhEFpRcQnZOQoUDRWGJFVHI127.0.0.1Perl + Net::Async::HTTP/0.44mЃ7]c!E@anon-20191002_181700-614:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRIQ1Z3XztVd0RTK2R4K3QKMDAyZnNpZ25hdHVyZSBr6Tw_uDl-saWiJHMt1fEznSF3WHYr5dOTbcQ5XctL7woKKJOZKNSMZ127.0.0.1Perl + Net::Async::HTTP/0.44mG6]c!E@anon-20191002_181700-611:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBNYXI7KmtYMio1cF5wU2oKMDAyZnNpZ25hdHVyZSC6faRL5gRMDSrt3JVQXVAJk41B5lf4mWNReFXR91OndAoUERIFUMBMU127.0.0.1Perl + Net::Async::HTTP/0.44mڃ5]c!E@anon-20191002_181700-612:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDh3REZETWFodU5jO1BjSlIKMDAyZnNpZ25hdHVyZSBkO3hDSxe8Mu7xTlw3rYlxibs1_JShkhhmytcoluPlngoYGUHRNQFRP127.0.0.1Perl + Net::Async::HTTP/0.44m4]c!E@anon-20191002_181700-610:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo3Mi5lYlV2a2tfX1dUZnIKMDAyZnNpZ25hdHVyZSCn9NKRbpbNtymqTeTuS2KkH7b7NnoLOyqZngASnYZkXgoZXXERHSURN127.0.0.1Perl + Net::Async::HTTP/0.44mߨ3]c!E@anon-20191002_181700-609:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5KR0pKaXlXVTJZTjpfeVIKMDAyZnNpZ25hdHVyZSDu25ZQUNrElC1w8D-7akohXJPWdBEgbR0gt_QpQE4f6AoHHJPZAWEAE127.0.0.1Perl + Net::Async::HTTP/0.44mߨ!2]c!E@anon-20191002_181700-608:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteSHZmWnc4b3BCanVDOGEKMDAyZnNpZ25hdHVyZSAJXE0br2225NWIy-FWwqW1eaYEjTysP1DwchdfqEdGbwoRSNCULZYRU127.0.0.1Perl + Net::Async::HTTP/0.44m߀1]c!E@anon-20191002_181700-604:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDd2Z3M4VUdpZFk9PVQqb0QKMDAyZnNpZ25hdHVyZSD39rZw4ejANsei46y5Hswz78deevadOTxBob0SNf_4oAoOVWYBOSWZE127.0.0.1Perl + Net::Async::HTTP/0.44mf ~z v r n j fb^ZVRNJFeeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800eeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800eeQ$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800eeQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800eeQ$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks!UTAORDrNxIbSlGByAp:localhost:8800eeQ$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800eeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800eeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800eeQ$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800eeQ$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800eeQ$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800eeQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800eeQ$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800eeQ$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800eeQ$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800eeQ$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU$txyihyjUZ7BAbFiZTeIdq80hSvw-gHgLa1zRrmXmHU8!zqQJfFCRlSEDPKlQPy:localhost:8800eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800eeQ$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw!MXhwoqNXvexeDDSOZT:localhost:8800 mGcm< xG R ! ] ? < x G R!],h7sB~MX'  { J  c2n= ] m0]@anon-20191002_181700-653:localhost:88000]@anon-20191002_181700-588:localhost:8800g0]@anon-20191002_181700-641:localhost:88000]@anon-20191002_181700-640:localhost:88000]@anon-20191002_181700-639:localhost:88000]@anon-20191002_181700-638:localhost:88000]@anon-20191002_181700-637:localhost:88000]@anon-20191002_181700-636:localhost:88000]@anon-20191002_181700-635:localhost:88000]@anon-20191002_181700-634:localhost:88000]@anon-20191002_181700-633:localhost:88000]@anon-20191002_181700-632:localhost:88000]@anon-20191002_181700-631:localhost:88000]@anon-20191002_181700-630:localhost:88000]@anon-20191002_181700-628:localhost:88000]@anon-20191002_181700-627:localhost:88000]@anon-20191002_181700-626:localhost:88000]@anon-20191002_181700-625:localhost:88000]@anon-20191002_181700-624:localhost:88000]@anon-20191002_181700-623:localhost:88000]@anon-20191002_181700-622:localhost:88000]@anon-20191002_181700-621:localhost:88000]@anon-20191002_181700-620:localhost:88000]@anon-20191002_181700-619:localhost:88000]@anon-20191002_181700-618:localhost:88000]@anon-20191002_181700-617:localhost:88000]@anon-20191002_181700-616:localhost:88000]@anon-20191002_181700-615:localhost:88000]@anon-20191002_181700-614:localhost:88000]@anon-20191002_181700-613:localhost:8800~0]@anon-20191002_181700-612:localhost:8800}0]@anon-20191002_181700-611:localhost:8800|0]@anon-20191002_181700-610:localhost:8800{0]@anon-20191002_181700-609:localhost:8800z0]@anon-20191002_181700-608:localhost:8800y0]@anon-20191002_181700-604:localhost:8800x0]@anon-20191002_181700-606:localhost:8800w0]@anon-20191002_181700-605:localhost:8800v0]@anon-20191002_181700-602:localhost:8800u0]@anon-20191002_181700-603:localhost:8800t0]@anon-20191002_181700-600:localhost:8800s0]@anon-20191002_181700-601:localhost:8800r0]@anon-20191002_181700-650:localhost:88000]@anon-20191002_181700-649:localhost:88000]@anon-20191002_181700-648:localhost:88000]@anon-20191002_181700-647:localhost:88000]@anon-20191002_181700-646:localhost:88000]@anon-20191002_181700-645:localhost:88000]@anon-20191002_181700-644:localhost:88000]@anon-20191002_181700-643:localhost:88000]@anon-20191002_181700-642:localhost:88007@admin:localhost:8800q0]@anon-20191002_181700-598:localhost:8800p0]@anon-20191002_181700-597:localhost:8800o0]@anon-20191002_181700-596:localhost:8800n0]@anon-20191002_181700-596:localhost:8800m0]@anon-20191002_181700-595:localhost:8800l0]@anon-20191002_181700-593:localhost:8800k0]@anon-20191002_181700-591:localhost:8800j0]@anon-20191002_181700-590:localhost:8800i0]@anon-20191002_181700-589:localhost:8800h0]@anon-20191002_181700-587:localhost:8800f0]~@anon-20191002_181700-586:localhost:8800e0]}@anon-20191002_181700-585:localhost:8800d0]|@anon-20191002_181700-584:localhost:8800c0]{@anon-20191002_181700-583:localhost:8800b0]z@anon-20191002_181700-582:localhost:8800a0]y@anon-20191002_181700-581:localhost:8800`0]x@anon-20191002_181700-580:localhost:8800_0]@anon-20191002_181700-652:localhost:88000]@anon-20191002_181700-651:localhost:8800 "q: ) T q W f'DS\&TqpYeQ))$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800mXeQ? $0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibilityeWeQ/ $odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rulesgVeQ3 $4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels UeQ']$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800aTeQ' $C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800m.room.create SeQ']$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800pReQ))$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800mQeQ? $BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibilityePeQ/ $WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rulesjOeQ9 $xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_aliasgNeQ3 $b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels MeQ']$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800aLeQ' $GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800m.room.create KeQ']$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800pJeQ))$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800mIeQ? $9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibilityeHeQ/ $W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rulesjGeQ9 $jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_aliasgFeQ3 $jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels EeQ']$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800aDeQ' $9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800m.room.create CeQ']$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800 BeQ']$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-609:localhost:8800pAeQ))$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800m.room.aliaseslocalhost:8800m@eQ? $D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800m.room.history_visibilitye?eQ/ $v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800m.room.join_rulesj>eQ9 $64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_aliasg=eQ3 $C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels <eQ']$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800 ;eQ']$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800 :eQ']$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU!zqQJfFCRlSEDPKlQPy:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800a9eQ' $UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800m.room.create_8eQ# $A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU!MXhwoqNXvexeDDSOZT:localhost:8800m.room.name /RM H C > 9 4/*|%w Ib>WT4Qe 4!yAfsSyqpJWFnkXQFJL:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUT3Qe 3!yAfsSyqpJWFnkXQFJL:localhost:8800$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmoJ2QQ 2!AYFqrmxwClFQlcTTYq:localhost:8800$1570043354284IVfTL:localhost:8800J1QQ 1!AYFqrmxwClFQlcTTYq:localhost:8800$1570043353283ubEdk:localhost:8800J0QQ 0!AYFqrmxwClFQlcTTYq:localhost:8800$1570043352282iTcSU:localhost:8800J/QQ /!AYFqrmxwClFQlcTTYq:localhost:8800$1570043351281XHPOP:localhost:8800J.QQ .!AYFqrmxwClFQlcTTYq:localhost:8800$1570043350280ydSwy:localhost:8800:-Q1 -!pHoEnhQYhwlbJXqKQE:localhost:8800$3:localhost:42455J,QQ ,!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043348279FTdBe:localhost:8800J+QQ +!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043347278WlNld:localhost:8800J*QQ *!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346277FsKPl:localhost:8800J)QQ )!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346276qTXUF:localhost:8800J(QQ (!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043345275UDVPY:localhost:8800J'QQ '!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043344274cabjv:localhost:8800:&1Q &!0:localhost:42455$1570043341273LsXNn:localhost:8800T%Qe %!OCEHAjcOXWNyWIESIS:localhost:8800$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYT$Qe $!OCEHAjcOXWNyWIESIS:localhost:8800$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQT#Qe #!OCEHAjcOXWNyWIESIS:localhost:8800$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIT"Qe "!OCEHAjcOXWNyWIESIS:localhost:8800$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3isT!Qe !!OCEHAjcOXWNyWIESIS:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsT Qe !OCEHAjcOXWNyWIESIS:localhost:8800$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicoTQe !qjijQBfMwsCPTVgKPm:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpoTQe !qjijQBfMwsCPTVgKPm:localhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykTQe !qjijQBfMwsCPTVgKPm:localhost:8800$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMATQe !qjijQBfMwsCPTVgKPm:localhost:8800$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFoTQe !qjijQBfMwsCPTVgKPm:localhost:8800$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gTQe !qjijQBfMwsCPTVgKPm:localhost:8800$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oETQe !qjijQBfMwsCPTVgKPm:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5oTQe !qjijQBfMwsCPTVgKPm:localhost:8800$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8TQe !kjjUsMowsioSQRIJeg:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2oTQe !kjjUsMowsioSQRIJeg:localhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYETQe !kjjUsMowsioSQRIJeg:localhost:8800$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RITQe !kjjUsMowsioSQRIJeg:localhost:8800$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UETQe !kjjUsMowsioSQRIJeg:localhost:8800$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocTQe !kjjUsMowsioSQRIJeg:localhost:8800$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwETQe !kjjUsMowsioSQRIJeg:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1YTQe !kjjUsMowsioSQRIJeg:localhost:8800$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFATQe !UTAORDrNxIbSlGByAp:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwITQe !UTAORDrNxIbSlGByAp:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYET Qe !UTAORDrNxIbSlGByAp:localhost:8800$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48T Qe !UTAORDrNxIbSlGByAp:localhost:8800$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8oT Qe !UTAORDrNxIbSlGByAp:localhost:8800$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gT Qe !UTAORDrNxIbSlGByAp:localhost:8800$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4T Qe !UTAORDrNxIbSlGByAp:localhost:8800$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8TQe !MXhwoqNXvexeDDSOZT:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7VcTQe !UTAORDrNxIbSlGByAp:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0TQe !zqQJfFCRlSEDPKlQPy:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU W^ r # v  y1BL\W,Ne?Q ]$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIm.room.history_visibility!kjjUsMowsioSQRIJeg:localhost:8800mmk@anon-20191002_181700-612:localhost:8800$Me/Q ]$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEm.room.join_rules!kjjUsMowsioSQRIJeg:localhost:8800m<m]@anon-20191002_181700-612:localhost:8800)Le9Q ]$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocm.room.canonical_alias!kjjUsMowsioSQRIJeg:localhost:8800mCm@anon-20191002_181700-612:localhost:8800&Ke3Q ]$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEm.room.power_levels!kjjUsMowsioSQRIJeg:localhost:8800mmA@anon-20191002_181700-612:localhost:8800 Je'Q ]$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Ym.room.member!kjjUsMowsioSQRIJeg:localhost:8800mʥm@anon-20191002_181700-612:localhost:8800I e'Q  ]$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFAm.room.create!kjjUsMowsioSQRIJeg:localhost:8800mǩm@anon-20191002_181700-612:localhost:8800!He)Q ]$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8m.room.message!UTAORDrNxIbSlGByAp:localhost:8800mm@anon-20191002_181700-610:localhost:8800!Ge)Q ] $mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3Um.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߾Ym߾\@anon-20191002_181700-609:localhost:8800(Fe7Q ] $QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pksa.made.up.filler.type!UTAORDrNxIbSlGByAp:localhost:8800 m߻m߻@anon-20191002_181700-608:localhost:8800!Ee)Q ] $M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5Em.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߶m߶@anon-20191002_181700-610:localhost:8800!De)Q ] $2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mkm.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߱m߳@anon-20191002_181700-608:localhost:8800!Ce)Q ] $HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Ggm.room.message!UTAORDrNxIbSlGByAp:localhost:8800 m߱m߱@anon-20191002_181700-609:localhost:8800 Be'Q ] $LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIm.room.member!UTAORDrNxIbSlGByAp:localhost:8800 m߭m߮@anon-20191002_181700-610:localhost:8800 Ae'Q ]$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEm.room.member!UTAORDrNxIbSlGByAp:localhost:8800mߩmߪ&@anon-20191002_181700-609:localhost:8800!@e)Q ]$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48m.room.aliases!UTAORDrNxIbSlGByAp:localhost:8800mߦ mߦ@anon-20191002_181700-608:localhost:8800,?e?Q ]$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8om.room.history_visibility!UTAORDrNxIbSlGByAp:localhost:8800mߢ9mߣ@anon-20191002_181700-608:localhost:8800$>e/Q ]$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gm.room.join_rules!UTAORDrNxIbSlGByAp:localhost:8800mߟumߠ~@anon-20191002_181700-608:localhost:8800)=e9Q ]$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4m.room.canonical_alias!UTAORDrNxIbSlGByAp:localhost:8800mߚamߜS@anon-20191002_181700-608:localhost:8800!<e)Q ]$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4m.room.message!MXhwoqNXvexeDDSOZT:localhost:8800mߔmߗ@anon-20191002_181700-606:localhost:8800&;e3Q ]$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8m.room.power_levels!UTAORDrNxIbSlGByAp:localhost:8800mߓZmߕ@anon-20191002_181700-608:localhost:8800 :e'Q ]$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vcm.room.member!MXhwoqNXvexeDDSOZT:localhost:8800mߎmߑ@anon-20191002_181700-605:localhost:8800 9e'Q ]$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0m.room.member!UTAORDrNxIbSlGByAp:localhost:8800m߉mߏ@anon-20191002_181700-608:localhost:8800 8e'Q ] $HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUm.room.member!zqQJfFCRlSEDPKlQPy:localhost:8800 m߅#m߆@anon-20191002_181700-605:localhost:88007 e'Q  ]$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4m.room.create!UTAORDrNxIbSlGByAp:localhost:8800m߃m߅@anon-20191002_181700-608:localhost:8800 Rd0`, \ ( X $ T P  L |HX.lB\(lBpFtJ xN$'cQ$1570043385309imdbl:localhost:8800 P'bQ$1570043384308gPogh:localhost:8800 O'aQ$1570043383307bhuDV:localhost:8800 N'`Q$1570043382306WhWIU:localhost:8800 M'_Q$1570043380304caenp:localhost:8800 K'^Q$1570043379303bCgUn:localhost:8800 J']Q$1570043378302mKBGD:localhost:8800 I'\Q$1570043377301OraEa:localhost:8800 H'[Q$1570043377300CLPUi:localhost:8800 G'ZQ$1570043375299fbyXJ:localhost:8800 F'YQ$1570043374298UIMFg:localhost:8800 E'XQ$1570043373297SOjrf:localhost:8800 D'WQ$1570043372296yAiBq:localhost:8800 C'VQ$1570043371295coDXo:localhost:8800 B'UQ$1570043369294rquKy:localhost:8800 A'TQ$1570043369293ssSMv:localhost:8800 @'SQ$1570043368292FAoRb:localhost:8800 ?'RQ$1570043367291AEdax:localhost:8800 >'QQ$1570043366290YSCqz:localhost:8800 ='PQ$1570043364289XIEhE:localhost:8800 <'OQ$1570043364288SCpzq:localhost:8800 ;'NQ$1570043363287eSyun:localhost:8800 :'MQ$1570043362286KwXMK:localhost:8800 9'LQ$1570043361285xsPbY:localhost:8800 81Ke$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 71Je$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc 61Ie$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo 51He$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU 41Ge$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo 3'FQ$1570043354284IVfTL:localhost:8800 2'EQ$1570043353283ubEdk:localhost:8800 1'DQ$1570043352282iTcSU:localhost:8800 0'CQ$1570043351281XHPOP:localhost:8800 /'BQ$1570043350280ydSwy:localhost:8800 .A1$3:localhost:42455 -'@Q$1570043347278WlNld:localhost:8800 +'?Q$1570043346277FsKPl:localhost:8800 *'>Q$1570043346276qTXUF:localhost:8800 )'=Q$1570043345275UDVPY:localhost:8800 ('<Q$1570043344274cabjv:localhost:8800 '';Q$1570043341273LsXNn:localhost:8800 &1:e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY %19e$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ $18e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI #17e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is "16e$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs !15e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico 14e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08 13e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo 12e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk 11e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 10e$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo 1/e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g 1.e$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE 1-e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o 1,e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 1+e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ 1*e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o 1)e$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE 1(e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1'e$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE 1&e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc 1%e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE 1$e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 1#e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 1"e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 1!e$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U 1 e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E 1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk 1e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI 1e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE 1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 1e$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc 1e$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0 1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU  L+ } w E  % ~KeW LQ 9j+    R>  8 3?q X & _E] -wkp+21e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfUo1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis[1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo =1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg U1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg 1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM71e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAr1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroZ1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres<1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI c1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y X1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM I1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk G1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 :1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuos1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGMr1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQq1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkE1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE31e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs K1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI(1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E@1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k 1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo}1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA>1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX40e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMT1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIN1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsI1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcF1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is~1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ#0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwV1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE 1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIk1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 01e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM 1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo j1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI }1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI e1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw d 5~p(P- z 2 Z  :  b  B jFnJNR.z2~Z^:>E]=@anon-20191002_181700-657:localhost:8800anon-20191002_181700-657!E@__ANON__-30:localhost:42455E]=@anon-20191002_181700-656:localhost:8800anon-20191002_181700-656E]=@anon-20191002_181700-655:localhost:8800anon-20191002_181700-655!E@__ANON__-28:localhost:42455E~]=@anon-20191002_181700-654:localhost:8800anon-20191002_181700-654E}]=@anon-20191002_181700-653:localhost:8800anon-20191002_181700-653!|E@__ANON__-26:localhost:42455E{]=@anon-20191002_181700-652:localhost:8800anon-20191002_181700-652Ez]=@anon-20191002_181700-646:localhost:8800anon-20191002_181700-646!yE@__ANON__-22:localhost:42455Ex]=@anon-20191002_181700-645:localhost:8800anon-20191002_181700-645Ew]=@anon-20191002_181700-644:localhost:8800anon-20191002_181700-644!vE@__ANON__-21:localhost:42455Eu]=@anon-20191002_181700-643:localhost:8800anon-20191002_181700-643Et]=@anon-20191002_181700-642:localhost:8800anon-20191002_181700-642!sE@__ANON__-20:localhost:42455!rE@__ANON__-19:localhost:42455Eq]=@anon-20191002_181700-641:localhost:8800anon-20191002_181700-641!pE@__ANON__-18:localhost:42455Eo]=@anon-20191002_181700-640:localhost:8800anon-20191002_181700-640!nE@__ANON__-17:localhost:42455Em]=@anon-20191002_181700-639:localhost:8800anon-20191002_181700-639!lE@__ANON__-16:localhost:42455Ek]=@anon-20191002_181700-638:localhost:8800anon-20191002_181700-638!jE@__ANON__-15:localhost:42455Ei]=@anon-20191002_181700-637:localhost:8800anon-20191002_181700-637!hE@__ANON__-13:localhost:42455Eg]=@anon-20191002_181700-635:localhost:8800anon-20191002_181700-635!fE@__ANON__-12:localhost:42455Ee]=@anon-20191002_181700-634:localhost:8800anon-20191002_181700-634!dE@__ANON__-11:localhost:42455Ec]=@anon-20191002_181700-633:localhost:8800anon-20191002_181700-633Eb]=@anon-20191002_181700-632:localhost:8800anon-20191002_181700-632!aE@__ANON__-10:localhost:42455E`]=@anon-20191002_181700-629:localhost:8829anon-20191002_181700-629E_]=@anon-20191002_181700-628:localhost:8800anon-20191002_181700-628E^]=@anon-20191002_181700-626:localhost:8800anon-20191002_181700-626E]]=@anon-20191002_181700-625:localhost:8800anon-20191002_181700-625E\]=@anon-20191002_181700-624:localhost:8800anon-20191002_181700-624E[]=@anon-20191002_181700-623:localhost:8800anon-20191002_181700-623EZ]=@anon-20191002_181700-622:localhost:8800anon-20191002_181700-622EY]=@anon-20191002_181700-620:localhost:8800anon-20191002_181700-620 XC@__ANON__-2:localhost:42455EW]=@anon-20191002_181700-619:localhost:8800anon-20191002_181700-619EV]=@anon-20191002_181700-617:localhost:8800anon-20191002_181700-617 UC@__ANON__-0:localhost:42455ET]=@anon-20191002_181700-616:localhost:8800anon-20191002_181700-616ES]=@anon-20191002_181700-614:localhost:8800anon-20191002_181700-614ER]=@anon-20191002_181700-612:localhost:8800anon-20191002_181700-612EQ]=@anon-20191002_181700-610:localhost:8800anon-20191002_181700-610EP]=@anon-20191002_181700-609:localhost:8800anon-20191002_181700-609EO]=@anon-20191002_181700-605:localhost:8800anon-20191002_181700-605  fe *eQaM$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3136}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o"], "type": "m.room.aliases", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"aliases": ["#test-20191002_181700-44:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043307531, "hashes": {"sha256": "tmXefANPhiCuHnA+xFCP/Qe4GyV72GuSFBW7ZxpBKow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xLEhwvo7jHb2kAbkjTcW6WH6qeEMYa3H/4BG3kxKTB6HIFxDvWF0wK5clsKPhRT8kl63ZJYf+VKKuFLfbLBvDg"}}, "unsigned": {"age_ts": 1570043307531}})eQa$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3135}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g"], "type": "m.room.history_visibility", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043306553, "hashes": {"sha256": "iRsX9bRtKVboh9+8SLnayEUdUphr8GEMt6AEJyXlKX8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2LGAgXGiNB90ZtDAa2/Y8Q1xhk6a1M2pJcpNkrI9KG6Aey3QgF2DwnZJ9IWOtVmP8yV03c4WtUspf0ZcdUIiBg"}}, "unsigned": {"age_ts": 1570043306553}}t(eQau$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3134}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4"], "type": "m.room.join_rules", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043305845, "hashes": {"sha256": "ovZKGniWbWS4CkvtNrq+mUcIty0Di7CVQH5kD4Ro7zo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rlOQcLe+d+i/z9/0JyoCOhONl6Knu9C5moM8thHOCqzQqXvh7QW7cNREfrmBf+6j1QLlQdL9ag+ubTAGPA+XAw"}}, "unsigned": {"age_ts": 1570043305845}}'eQa9$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "stream_ordering": 3133}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8"], "type": "m.room.canonical_alias", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"alias": "#test-20191002_181700-44:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043304545, "hashes": {"sha256": "dtl/V6wEjGayu+dm7lT9r+qmpsaFEIAvMPxkRBhTFCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NFhjsHjF6qLoQI2V+hLYYBRLzyy43tsJfTLogQQD9GbNcRp4DEyMFghxXDckIKd6ieuCdTmvNmbtfyz4HCUACw"}}, "unsigned": {"age_ts": 1570043304545}} = ' 9ZKj8`Qpk> x G Y  _ -+  M  3 S ! e1e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk_1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4p0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4o0e$xBp4H9R374UOyPH16vHgs8-uK5YdbDI7U2HHvEkVAT4n1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk}d1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbk1e$xFwMRPozxnpVXMx0YFFiNPiwhfJiwGHxQkhbIOtYSbkE1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f81e$xFi6wVCSf-r3OSZbFr2EhCkhc10tTtPmENIOeIkp-Bk^1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8;1e$xAREr5Kwxrf0C2d9ytFnWD48BU4bRnmNfpPGhsG4Gh8:1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g1e$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw1e$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScF1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0<1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0;1e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0:1e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d81e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d81e$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d81e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s ~1e$xjm-jhSn6wxJLc2KsVv5BoBbzUBWTHhOGOd8Lx-wG0s }1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw 1e$xiyHGvydEHti2LhhJDAA7hy31kGKPXgPN4U5B-UpUEw 1e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk61e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk51e$xhgerCKNcgKEXq836SGtwFxjco5SWv8RBge-e-YhZSk41e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xgR5aJ8YNQ8g7K9evybdpKezFeHVhTIjKSTEzOGp3k41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm41e$xfVxAA6HgO6rF9JVbVnI1LO3gqrurSNOT7rI2ylBIm40e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBkm0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBkl0e$xaWfZ1dRKPslHxpu3qWMubODlDU-XUmPmxB49W8mbBkk1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xWZzRDsqcyF9kDWzXMDe6ubkFNdJ1wm6mPvaDk5Yknk1e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I31e$xUxucQknPXRmTPtOI9up9L4wP3C3Qsm8hiI9Btdjd0I21e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3g1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoQ1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoP1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjoO1e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc1e$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc D tBzHZ( \ * nh6<  | J  P  V $ Vj80pbP D v D1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU^11e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8~1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8}1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8|1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53Ed1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$I8kFBNc4fsu8SgDGsZMcXxoj6REpPG5bDpAx0UqMc_8 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 1e$IGVGXCFASN1n5hqph_-zWtmKCTKvLCZgNKXIJyhGOGM 1e$IDqkCl_u8-kCXi41wPSqL5nOVP21tcV3rReb7jqHe68 D01e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g1e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkw1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR81e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70V1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU_1e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoQ1e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoP1e$Hx2afHq-PHr8MOzBZJ8HWW7iRd3Wb12OfKwJzQbp53E1e$Hta4QCS9qBLm2x0r_vuNnCgZXh6zHXHsNKVaJYH1-60)1e$HsxVxX53HGTtozjseIBj5inTXufJGpIxY5j2AcolLKoR1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcr1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn41e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw71e$IEMQY6BcS18ItZllTdSgFXUTbpFpJLVM8PQy58lkuNw61e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn01e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn01e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLct1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcs1e$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoU]1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk 1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk 1e$I6JdGCbEc5gpWEWizXtbzH3-sNxkHXYY6u5BX9fWprk 1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok(1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok'1e$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wok&1e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw1e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw1e$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 1e$HzOMlTCE6s6j2Fmzw5GTDxzVORWnZFCICRS5shNWCFk 1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQh1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQg1e$Hz6y1w5eqwJAY7fRiZRdpYQKbNaC3BseeI5UDo0b1tQf1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So}1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So|1e$Hy2NIALzzFqww9J8OveiynsdK7qr3rp3uEViBpsC_So{,1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8?1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8>1e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8=1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg1e$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 J8 u { P % yoD )}R' c8mB N @k # w L ! J  s Hi>Te:V*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800 *Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VWYMJxEviBNDdJCuKT:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VOhMAiLfKyTOZbmKGw:localhost:8800ms*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 @ q*Q!UTAORDrNxIbSlGByAp:localhost:8800 ? p*Q!UTAORDrNxIbSlGByAp:localhost:8800 > o *Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!VUibrTIkcRbfrogbQV:localhost:8800 % b*Q!VUibrTIkcRbfrogbQV:localhost:8800 $ a*Q!VUibrTIkcRbfrogbQV:localhost:8800 # `*Q!VUibrTIkcRbfrogbQV:localhost:8800 " _*Q!VUibrTIkcRbfrogbQV:localhost:8800 ! ^*Q!VUibrTIkcRbfrogbQV:localhost:8800 ]*Q!VUibrTIkcRbfrogbQV:localhost:8800  \*Q!UTAORDrNxIbSlGByAp:localhost:8800 B s*Q!UTAORDrNxIbSlGByAp:localhost:8800 A r*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VOhMAiLfKyTOZbmKGw:localhost:8800tz*Q!VOhMAiLfKyTOZbmKGw:localhost:8800sy*Q!VOhMAiLfKyTOZbmKGw:localhost:8800rx*Q!VOhMAiLfKyTOZbmKGw:localhost:8800qw*Q!VOhMAiLfKyTOZbmKGw:localhost:8800pv*Q!VOhMAiLfKyTOZbmKGw:localhost:8800ou*Q!VOhMAiLfKyTOZbmKGw:localhost:8800nt*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 H z*Q!UTAORDrNxIbSlGByAp:localhost:8800 G y*Q!UTAORDrNxIbSlGByAp:localhost:8800 F x*Q!UTAORDrNxIbSlGByAp:localhost:8800 E w*Q!UTAORDrNxIbSlGByAp:localhost:8800 D v*Q!UTAORDrNxIbSlGByAp:localhost:8800 D u*Q!UTAORDrNxIbSlGByAp:localhost:8800 C tV*Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!VhUAklonNaWKRnLkcr:localhost:8800  FXR Xd2k:r@xFkL~:r@ x F  ~ L  R X & ^ ,%^,1e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE-1e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a0j1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE;1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk 1e$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM p1e$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU b1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA 1e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE %1e$UFVYFhLL_-rkF8xlch8eaZ1PRRQ4l_I2EbCOsc2HwjE?1e$UAuNjxTdrtRDoaul9VRlYMd16ejjVpyvYsXWAB6-Ly01e$U9QJfsT51IUL2-dF6kXEEYLP2muKc1iX7hiemsVgtl8l1e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcN1e$U7yDJ-xFqFEBfqYAhK4Jl5dWn4PGiYKBWu1Z6zacDCo|1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4e1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod41e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M1e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61E51e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgo1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI31e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA C0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGo1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Y1e$VJhbmC4T3AuzhdfdNkfT3EB8UPz-DBwJmULWR0Jlkr81e$VIMwkRoAUxSR48W9ls0XJ0gfj1t-8PkGjbQw10eu9OI1e$VILjrJcs6ZQ6xjUPPIDos_aen7b4t6nsLiWEHyrsqws1e$VHCptsehwYWcpe8RtmUY39ZoHxh_Mkx2nwRO15l3PC0t1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs8 1e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc1e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc'1e$VEEhzYiQaIm2tUapwoiw88QiAwyuhs98xsadFa8QG7w1e$VDxz1J2eA5sUBGq5PaGk7dJwCtKh5uYKKaB7DsFpg8o1e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKY1e$VBWpE4udEiVW_POjHPh317ybb3VoRHnA1R1da3a9Xg81e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf41e$V6poThjxq67xE3djYzB_iyifMmvQ_a5_11DiFLoVEBU A1e$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V2_CaFhkPV8GoPhf0XxJv-aMBKFV2hVf1VIwM4DL2r01e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qc1e$Uz7Siic9SQe3dAsPFjOlb36ec8yRHew7nKznGfrbmlsJ1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$Utor_tQgcxp86PhTcFAW5Wbti55KNd7l6SZ_8Ynx-eg1e$UtNZTVieiDZMgxn4Y8uGTgE2wYSexst0FBPStwAWm6k1e$UssIotFLKIGqpmJcwKEergU7QzZHshiORksKjm5TIVs >1e$UsqZyPL6WWHpl8asvEzdQYnCcaRYe1PiidpvF5zHHz41e$UqhWWpLLJzCR3fEu9i-nqxLtGnsqf50l2C0c5xo4S6Y1e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jM1e$UcDXcxqzdf-D1BhkVwWCEgK1fF-BAk0JPNoqmtXnTZw 1e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI1e$UYADROfj1DK9mwQ-B1S-pzO6u-vx-dgTwL9UMZ9mExo1e$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4 1e$UWeOFf-tHQ8g-ocpTA3EUCU5z5GzBSsU2NTWQZOvo341e$UVj7KF10k2lTEx5H30adlgtQDfftb0OvlVZN9Y_3w901e$UVV17u6DFGeJVK52V5wklaIdG6XaLI0R-gsDRf1AgDQ1e$UPcnng5GgVkNjx0wkhXnmfGTLuRiUH2zIGHbJLMXSiw10e$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw90e$UHeyc3WiYBR5a0-fXPBMBcmez5o_Ry_KGWFBbN-t1dk<1e$UHGQqDmqdDaN-HXZgllo_Shx0Kw7pDR1u2RR7gmDkFU1e$UG-oSGDO8unBRKQbYwCEPDcrTiSFyTBfmfbnKSQEx6Y Z < &L<.eQq$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "txn_id": "587", "stream_ordering": 3140}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"msgtype": "m.text", "body": "Message"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043310543, "hashes": {"sha256": "7KgeDSriwslJnt4yxgP3YccChV6seBnIbJUH9o8ofmo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f6Hn+jd/PgBqToFBBQboT6xPOtx4DpTotVomhnq3VIHB0kbIk3qb66BAWs6IuHRpYp1qJHlVEiyomZYfuCFFBQ"}}, "unsigned": {"age_ts": 1570043310543}}-eQq$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 590, "txn_id": "588", "stream_ordering": 3139}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE"], "prev_events": ["$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-609:localhost:8800", "content": {"msgtype": "m.text", "body": "Message"}, "depth": 10, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043310541, "hashes": {"sha256": "F8vts+epm91Y9plfKVwmqPGaCQoVjA9Rpb30Qe97PZA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tRYrXLvlXw2o98AA/3aFKeRhJSsvjkNVkVIr1wutHrtpCGN0ia+WeCYnyvsFxpS/BcE77ZySB4Jooq20fjgDBQ"}}, "unsigned": {"age_ts": 1570043310541}}V,eQa9$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 591, "stream_ordering": 3138}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g"], "prev_events": ["$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE"], "type": "m.room.member", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-610:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-610", "avatar_url": null}, "depth": 9, "prev_state": [], "state_key": "@anon-20191002_181700-610:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043309473, "hashes": {"sha256": "ZVRBqAGnKIJ63v8V/u/KUFBaxL1gxlFYNdbzNMc9mpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqpj8fCKs4dk/OES9M+dGYXa/7/wFS3lLd6k8YOkCGXl38tu5NhzJI+XtUS5sAmSVs4cKqAl8EmDmQBzZicjAA"}}, "unsigned": {"age_ts": 1570043309473}}V+eQa9$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 590, "stream_ordering": 3137}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g"], "prev_events": ["$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48"], "type": "m.room.member", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-609:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-609", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-609:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043308481, "hashes": {"sha256": "3kmjZloYuaIXr1pI5UBJWHGqIy4jXqEd+Yb5AEUdFNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LmcLh+V5EIAx6pfB0t3XqXYroV4PaEcHUm0lj9mgXcG58uIGE60S8v8VQOI6BHm7LEhGrzruAj1i0Yx7vaKoAQ"}}, "unsigned": {"age_ts": 1570043308481}} a} { y w u sqomkigeca~eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~ eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~ eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~~eeQ$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~}eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~|eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~{eeQ$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800~zeeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800~yeeQ$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~xeeQ$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800~weeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g!UTAORDrNxIbSlGByAp:localhost:8800~veeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4!UTAORDrNxIbSlGByAp:localhost:8800~ueeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8!UTAORDrNxIbSlGByAp:localhost:8800 Io z ; X a f !&Tq3*I%b{^QQ']$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800joinW]QQ' $1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.creates\Q1']$1570043341273LsXNn:localhost:8800!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800joinV[11'C$1:localhost:42455!0:localhost:42455m.room.member@__ANON__-0:localhost:42455join7Z11' $0:localhost:42455!0:localhost:42455m.room.create;Y11/ $2:localhost:42455!0:localhost:42455m.room.join_rulespXeQ))$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800mWeQ? $0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibilityeVeQ/ $odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rulesgUeQ3 $4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels TeQ']$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800m.room.member@anon-20191002_181700-616:localhost:8800joinaSeQ' $C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800m.room.createReQ']$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800invitepQeQ))$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800mPeQ? $BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibilityeOeQ/ $WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rulesjNeQ9 $xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_aliasgMeQ3 $b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800m.room.power_levels LeQ']$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-614:localhost:8800joinaKeQ' $GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800m.room.createJeQ']$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-611:localhost:8800invitepIeQ))$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800m.room.aliaseslocalhost:8800mHeQ? $9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800m.room.history_visibilityeGeQ/ $W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800m.room.join_rulesjFeQ9 $jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800m.room.canonical_aliasgEeQ3 $jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800m.room.power_levels DeQ']$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800m.room.member@anon-20191002_181700-612:localhost:8800joinaCeQ' $9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800m.room.create BeQ']$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800join  4 h 9md]c@anon-20191002_181700-633:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgo127.0.0.1Id]c@anon-20191002_181700-623:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6Iwo127.0.0.1@d]c@anon-20191002_181700-632:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwo127.0.0.1Hd]c@anon-20191002_181700-631:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQo127.0.0.1Gd]c@anon-20191002_181700-630:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygo127.0.0.1Fa[a@anon-20191002_181700-62:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZC5TS2tvQkdWV1FmVC16NAowMDJmc2lnbmF0dXJlILgAMCRiqORZ9GC71qRGlkEbVu8XJyKIcx06v8oPrFQnCg127.0.0.15d]c@anon-20191002_181700-628:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwo127.0.0.1Ed]c@anon-20191002_181700-627:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_go127.0.0.1Dd]c@anon-20191002_181700-626:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAo127.0.0.1Cd]c@anon-20191002_181700-625:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQo127.0.0.1Bd]c@anon-20191002_181700-624:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywo127.0.0.1A G \6# '  J   V8p n < P  > $u DD  UY jO}L |b0 * Gm1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc 21e$TdBQV8lunef3L5MOXgS7NPNQSN5fmTH4GgCfXf--xhE`1e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts1e$TULZ02J-OgUzQaeA8kZF2V1dZbAJseJ0gH4ze7CI7_01e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7Yv 1e$T6Vwzppc6Y1-IqPPFRp0LF8KcJWN7hjk12MBtYitVJk 1e$Sh6eVz8g6A68nQJGkme-chKQoBgqGGFTZbE0jNlaYAs 1e$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc 1e$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI 1e$TfVTA2fsjNlagk_vVFGNIWtCI9A-WePRtnX0gCpUeRA 1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZg0e$TeUDn8MCdEE9NWT-YvWPPDX9OO7yUlicORn4LdMONXU 1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGok 1e$THIQnHCHC1uQ2KUW7KULH-hCCdosGAFUkHp9ZBjEsEM h21e$So3hgDFww9PtROF-GftRuNQ1_zFbkrpTM1djnTuP1Kk 1e$T5rNOI6oxZykBaZLrb3RvDsxFUJ0Tjz5e5u0dWhaKwE 0e$TuoGs8xeA78vY7QZasgbNBmZNHyOxCDS5mHmAoEMaMgz1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TSNfFQnr-Z047OyBK40B5q1tJYb14qAad6uUOpjj0a01e$TIciR-prjl0B_Y-56XPJ8TC_IH4Ikq5tDS8gJbnFzXo0e$TEMBFJqXeqnYZ__kjuDZi_sXB9PmvPjb4AJlBsmhqF4:0e$TE1gUlpENKGVLFRBobAAstPeJHPx61dECVF9-9tPNyQ&1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0b1e$T13RpML-9o7CrKNDF9rgVETa6PbBAD0quoMEhTTyFYY1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY0e$T-bP_iZMnGPEyDwxhTa9tbLG7HMvc7jjifDSA_n3Ebo$1e$Sy1TrDPHI77xAD_MrBVKUMyGtQJkbIMXZmdL5WjmJvo1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA d1e$U2PqvB7pGHfuZfvFXRKjPG4rQgKH-Hx84TeOZI-Wod491e$U2GgrTLsu_xZwNQIIGQ8WqYyv0RJE8iIZmSLCPRxvzw1e$U26h_8rBujg_8VqvYRZ31OOZyoF9kmyyDqmDKcZhG4M 1e$U0w8SJTp-rWA_pQs2cmu8WJcaKe4WFjI2S5ESmGX0j01e$U-lRVVJGbaEBXPRw56N7speE_azFcGHJaXYl-onz61Eh1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A 1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI U1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgN1e$SpN_6cRidoXOY1gXU-V9N1DkHK90h3tZHM6_y7bmoCU 1e$SuHYtRPf_O8KatBd6gYCNV7Qt7l9kMeOuTTFGI5iH2M 1e$So-oFx3DppAcHgy5tMDtN-TlApkldLeDmLTLhjBx6I8 1e$T5jHlOoFJpxCPHfSgOq3lEMPzBAPYUfl36-p2LMYLp4 1e$SpTLtU7v4YZDaEAzwHzMHZ7crkMvMPQUjiQP-eC38U81e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ k1e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg 1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4 y1e$U4bvkSgFvJnYToY0GVjk3AE53_VIoi44mwW4lueIQfA1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQ 1e$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ 1e$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk )1e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA v21e$T1mOOD2lAs_px5j_zoliRlyfBE8SB96tZWTR8X3_FawQ1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww}1e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 21e$TJGUIbW59bzU-Cpq_JPF-hurPKDSX1CPvn3enbBdoHA1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkv1e$T4d1yy6gHx_8gNKnhorRz_QRe46Ch1tppDSXQqxtfYw ,1e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo1e$SryU7CHgOQCwNl6kDnZ9J-_bKtRVjnCKuQykN0hjHfQ]1e$TKnF-0Vb6tzuknSGfJhYkNxY5Xm1hn3RvQlYIrjs-JQ -1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo 21e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT01e$TcgGcsLn51fbbN3TWB0iV9xbJ4fIms9s5f_Y-Zsb-Lk21e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw /RM H C > 9 4/*|%Ng*CRMJ$QQ x!fDISaqNBhlOwherxSt:localhost:8800$1570043361285xsPbY:localhost:8800T#Qe w!yAfsSyqpJWFnkXQFJL:localhost:8800$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQT"Qe v!yAfsSyqpJWFnkXQFJL:localhost:8800$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3BcT!Qe u!yAfsSyqpJWFnkXQFJL:localhost:8800$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8foT Qe t!yAfsSyqpJWFnkXQFJL:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUTQe s!yAfsSyqpJWFnkXQFJL:localhost:8800$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmoJQQ r!AYFqrmxwClFQlcTTYq:localhost:8800$1570043354284IVfTL:localhost:8800JQQ q!AYFqrmxwClFQlcTTYq:localhost:8800$1570043353283ubEdk:localhost:8800JQQ p!AYFqrmxwClFQlcTTYq:localhost:8800$1570043352282iTcSU:localhost:8800JQQ o!AYFqrmxwClFQlcTTYq:localhost:8800$1570043351281XHPOP:localhost:8800JQQ n!AYFqrmxwClFQlcTTYq:localhost:8800$1570043350280ydSwy:localhost:8800:Q1 m!pHoEnhQYhwlbJXqKQE:localhost:8800$3:localhost:42455JQQ l!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043347278WlNld:localhost:8800JQQ k!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346277FsKPl:localhost:8800JQQ j!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043346276qTXUF:localhost:8800JQQ i!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043345275UDVPY:localhost:8800JQQ h!pHoEnhQYhwlbJXqKQE:localhost:8800$1570043344274cabjv:localhost:8800:1Q g!0:localhost:42455$1570043341273LsXNn:localhost:8800TQe `!OCEHAjcOXWNyWIESIS:localhost:8800$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYTQe _!OCEHAjcOXWNyWIESIS:localhost:8800$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQTQe ^!OCEHAjcOXWNyWIESIS:localhost:8800$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VITQe ]!OCEHAjcOXWNyWIESIS:localhost:8800$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3isTQe \!OCEHAjcOXWNyWIESIS:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsT Qe [!OCEHAjcOXWNyWIESIS:localhost:8800$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicoT Qe Z!qjijQBfMwsCPTVgKPm:localhost:8800$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08T Qe Y!qjijQBfMwsCPTVgKPm:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpoT Qe X!qjijQBfMwsCPTVgKPm:localhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykT Qe W!qjijQBfMwsCPTVgKPm:localhost:8800$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMATQe V!qjijQBfMwsCPTVgKPm:localhost:8800$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFoTQe U!qjijQBfMwsCPTVgKPm:localhost:8800$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gTQe T!qjijQBfMwsCPTVgKPm:localhost:8800$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oETQe S!qjijQBfMwsCPTVgKPm:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5oTQe R!qjijQBfMwsCPTVgKPm:localhost:8800$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8TQe Q!kjjUsMowsioSQRIJeg:localhost:8800$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQTQe P!kjjUsMowsioSQRIJeg:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2oTQe O!kjjUsMowsioSQRIJeg:localhost:8800$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYETQe N!kjjUsMowsioSQRIJeg:localhost:8800$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RITQe M!kjjUsMowsioSQRIJeg:localhost:8800$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UET~Qe L!kjjUsMowsioSQRIJeg:localhost:8800$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocT}Qe K!kjjUsMowsioSQRIJeg:localhost:8800$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwET|Qe J!kjjUsMowsioSQRIJeg:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1YT{Qe I!kjjUsMowsioSQRIJeg:localhost:8800$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFATzQe H!UTAORDrNxIbSlGByAp:localhost:8800$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8TyQe G!UTAORDrNxIbSlGByAp:localhost:8800$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3UTxQe F!UTAORDrNxIbSlGByAp:localhost:8800$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pksTwQe E!UTAORDrNxIbSlGByAp:localhost:8800$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5ETvQe D!UTAORDrNxIbSlGByAp:localhost:8800$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg /NC 8 - { " p  e ZODm.ATw(1V\eL$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fosha256,ۇ# {1?Ktǃ4]V[eL$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUsha256~fϋ}fԫF0slivew2VZeL$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmosha256 5nzzM6 nP7bjLYQL$1570043354284IVfTL:localhost:8800sha256֞߄Ԓ71~`Wҁue#_V:LXQL$1570043353283ubEdk:localhost:8800sha256t>'S` # ш׬/qZrqLWQL$1570043352282iTcSU:localhost:8800sha256+nl_l>'ff5b<[ɏ ]@o=VJeL$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYsha256'OJ}pXm8K5QfVIeL$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQsha256K(mlƩv/'[["94VHeL$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIsha256vTQN_׃yIk[RVGeL$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3issha256T'hڄ],Z.GgF&>+VFeL$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBssha256GBnWƗ^y{//40A<>&<VEeL$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicosha256 { ݆Y{3)ձƾ%(<ƉVDeL$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08sha256<@2z.)AG{#zjn`OVCeL$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJposha256q&+k< `K^{?n聳r &VBeL$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyksha256p{IDw&#Z9} C( [QI5x C)VAeL$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAsha256,}{`chjȐ+4-V@eL$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFosha256Yps6hHNP3Dk eL$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oEsha256o+T,rr϶I ٌLn FV=eL$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5osha256 nƞR =ryl &gV<eL$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8sha256kk^}; TD=qkF ֿV;eL$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQsha256m'Dc)Δ9jxr~\V:eL$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2osha256hX3TvkJHXRjlR׋jV9eL$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEsha256+K k0 vۚúibayV8eL$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIsha256 |zoG3W,+\زV7eL$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UEsha256[FH7ѧHy.L T"VAV6eL$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxocsha256x9rs !guƇV5eL$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwEsha256:v ׊Pw"D>VrV4eL$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Ysha256,2=c652Eme nq'VV3eL$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFAsha256[G/~&FʂMחv`ǃ+ȜPV2eL$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8sha256&ѩuF4,jNJڈKV1eL$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3Usha256Qx y?Iak:#cEƟO8$TuV0eL$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pkssha256A H7*hך(ZFT8A"KV/eL$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5Esha2563J5j?Ш{9[B3"hWp!wOV.eL$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mksha256xcg0rjѣ#E#'ot=i  HK2eQs$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 591, "txn_id": "592", "stream_ordering": 3144}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "prev_events": ["$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-610:localhost:8800", "content": {"body": "Message3", "msgtype": "m.text"}, "depth": 14, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043314404, "hashes": {"sha256": "JkUDrOpGuxeH8HXo7KEW+6CYYXw5bd6CRyFm+b6qAXo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YMb+FP+e+AVioWKDJw4btO3Jt6pBggvWLrMP6y43AjgIT9jGszSr6HOjIPBeYjMuCFoqAEyNG/dHnoKXVpqUCA"}}, "unsigned": {"age_ts": 1570043314404}}1eQs$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 590, "txn_id": "591", "stream_ordering": 3143}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE"], "prev_events": ["$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-609:localhost:8800", "content": {"msgtype": "m.text", "body": "Message2"}, "depth": 13, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043313753, "hashes": {"sha256": "3AZP/gG40sm9XtlpXm4SlaiRp0qNDOTo6b7vVrxj7lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QEjCdFbgw9bLxJs4Mx6stwJ1u8yFcGhRnxiNFfYdNM4G/kmWBqzdOrn+N01XZnZAts3X3hhRKisWP7CiDVf+Bw"}}, "unsigned": {"age_ts": 1570043313753}}p0eQI$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 589, "txn_id": "590", "stream_ordering": 3142}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0"], "prev_events": ["$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E"], "type": "a.made.up.filler.type", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-608:localhost:8800", "content": {"filler": 1}, "depth": 12, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043313044, "hashes": {"sha256": "+OZDViiXakxMHmYdWCcJykNGpyWfmU+3C+PT24EgrFA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Z5g31ZqWn7okgaDt/6e2WQxZh8pxGCMUfKIIeUYnkyywR2CDVY8HooJJ+AC7dHAXQhlaovyfOCii/PdJujxbDw"}}, "unsigned": {"age_ts": 1570043313044}}4/eQQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E!UTAORDrNxIbSlGByAp:localhost:8800{"token_id": 591, "txn_id": "589", "stream_ordering": 3141}{"auth_events": ["$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8", "$UXhf1Cs-5Y_kG1vn91T68Gaf5IW-MnE2oiH39EoRJr4", "$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI"], "prev_events": ["$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg", "$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk"], "type": "m.room.message", "room_id": "!UTAORDrNxIbSlGByAp:localhost:8800", "sender": "@anon-20191002_181700-610:localhost:8800", "content": {"msgtype": "m.text", "body": "Message"}, "depth": 11, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043311818, "hashes": {"sha256": "9uD0QELWAapHyORM+UpGU41AkMPM/TYl3glS8GhA7MA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IWDmPJTC4sPf5Q5W54Z8sEGUZsPGvs3suWLwn8jp/lfDloaZ6MNJNP4rkMDUoqaog8V3GE+RUYB72ozO1LV9DA"}}, "unsigned": {"age_ts": 1570043311818}} %k3/ + ' #  Cgy;Qu:^8kkMQQQ$1570043534365WVAkx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800\L3QQ$39:localhost:42455$1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kKQQQ$1570043530362jRUtV:localhost:8800$1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kJQQQ$1570043529361Oytod:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kIQQQ$1570043528360cetnZ:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kHQQQ$1570043527359ScxWW:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800kGQQQ$1570043525357VEfrE:localhost:8800$1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800kFQQQ$1570043524356NlySy:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800kEQQQ$1570043523355SbJjm:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800kDQQQ$1570043522354IAAap:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800\C3QQ$38:localhost:42455$1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800kBQQQ$1570043518351Popej:localhost:8800$1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800kAQQQ$1570043517350ncbDd:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800k@QQQ$1570043517349uVTMj:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800k?QQQ$1570043516348vThZG:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800;>111$3:localhost:41985$2:localhost:41985!0:localhost:41985;=111$3:localhost:44405$2:localhost:44405!0:localhost:44405;<111$3:localhost:37265$2:localhost:37265!0:localhost:37265=;331$37:localhost:42455$36:localhost:42455!8:localhost:42455=:331$33:localhost:42455$32:localhost:42455!7:localhost:42455k9QQQ$1570043506346EEQDj:localhost:8800$1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k8QQQ$1570043504345DCjlJ:localhost:8800$1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k7QQQ$1570043503344dJwGF:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k6QQQ$1570043503343snlnn:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800k5QQQ$1570043502342mVJmO:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:88004eeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:88003eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:88002eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:88001eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:88000eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800/eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800.eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800-eeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800,eeQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800+eeQ$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800\*3QQ$29:localhost:42455$1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k)QQQ$1570043486339YbYQQ:localhost:8800$1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800 Ct  U #  p \ *T Zb>0h6n< zNH("B  u D  | J  2(21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI;1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 61e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 {1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY O1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY A1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 '1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc,1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAd1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM 91e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE-1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkO1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA j1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh41e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA'1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0e1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to<1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYR1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcF1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYx0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8I1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k 1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8o1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAC0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicR1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 821e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4Y1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cv   *6eQa9$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3148}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE"], "type": "m.room.canonical_alias", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"alias": "#test-20191002_181700-45:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043318339, "hashes": {"sha256": "LrUEoOdF+oiICZ8/bC5FSka1wRqjUoj8k3APsrsN6qY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tXkYrzimdDmk2cbUb8KW6EuENPfsLlncogr61/eAWInfADf79TH42/c1AhraAHmYxBqdxvuYPa275yRWXD4DAQ"}}, "unsigned": {"age_ts": 1570043318339}}k5eQac$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3147}{"auth_events": ["$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "type": "m.room.power_levels", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"users": {"@anon-20191002_181700-612:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043317490, "hashes": {"sha256": "JeiyqrGf19l2jHA1QcItfa2TP45vC866+vb6Lg2Kbfc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NJUxrNL+0Fb1QTb9gG6SKnKtBizqoGgp7aq5UJyQG4EQeKppqM+ZVVBkWOjnYVqyKX+UUXx6tQSUbiQtBDpiBA"}}, "unsigned": {"age_ts": 1570043317490}}v4eQay$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3146}{"auth_events": ["$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA"], "prev_events": ["$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA"], "type": "m.room.member", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-612", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-612:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043316901, "hashes": {"sha256": "sRS71u4TFqiAzc2zVQ9dGn6oPlV2HRN5CQE/VNvuwJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aGcD0Kl8ClD0f0uSdjALxZgjWiCpqFM10r3eGbcMA9CBlJctbafDtTfqeK2djKcag5z97vv8M2koA8YGrD6aBg"}}, "unsigned": {"age_ts": 1570043316901}}i3eQa_$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3145}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-612:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043316137, "hashes": {"sha256": "dMALLudS0e+UodXpJ6Nc9iRHrSIegsKifWQDgbwu4Ww"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "I8djSiyzjIJWIL4GtaIV/YvVHY3/BzVTkn69+qGowCewMYJBLy5F3K1lHCuVIrf2gjTLMMjDXbPJGpy7UnqxBw"}}, "unsigned": {"age_ts": 1570043316137}} Ct  U #  p \ *T Zb>0h6n< zNH("B  u D  | J  2(21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls 1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI;1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY 1e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 61e$Kva5fwfXlaqf-LpkzyOuSkHqGF9KtY598_kMhdlNpx8 {1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BY O1e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY A1e$KUZXiTPJ65aIdK/XD4bHnpJ5+Zks5/LoWgnMxwOfl88 '1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 1e$LH9xbqvoRo0hOpnBrSQIlfsxJSXImSATZcPNxK24C0o 1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc,1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888 1e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEAd1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM 91e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE-1e$L9zsKyE0y5qtQYcqp9BOjhxQSrzHOnlK1mzoC9f9AGE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-OkO1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY1e$LLDkuFtO_05YAj_imRT06ZMVyysKU7VkgLAcK7SJ2CQ1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA j1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI 1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA'1e$L8O0ASa4UTj4RbdGj1XoPtC8MCrKwc5zWDDeOs4uaqc1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr0e1e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0to<1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRYR1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348UcF1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j01e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2Ukuk1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hM1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VYx0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8I1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k 1e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO941e$LbAEAPr3u9Lt/DGzwGJX61iy8GOm0MfTbaze0sNlC50 1e$LaZkKGjramCV0WqA57z2cxop9_IY9YPHb58OSSUWyyE1e$LaWltiapTrEoJJSo5vEKJsyy3fRvG8f3nNm5x7_gJ_01e$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk1e$LY3HOS7ZX7QyklWeH1DafPGm8BQZ6gZryREJ5T1NBgg1e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts8o1e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtAC0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicR1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg01e$LQIxKk6Xtq0kKr5Tf6vFLTNT83sOtz-ropjGuil8ySg1e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo 821e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4S1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA 1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cp [ [ 9eQaM$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3151}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI"], "type": "m.room.aliases", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"aliases": ["#test-20191002_181700-45:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043321513, "hashes": {"sha256": "1nih8ppu0LuVQJhEeEUq8zhssCaDhdF1bjSGKXB/F8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GSxKFKAW0Z8xSR2QUhGL4IQpbUo5IE7ooYOEhKpyux0k+Djr0tSDrQM2cvaxfxUTW3VHVewUW5TPOmvuRCxNAA"}}, "unsigned": {"age_ts": 1570043321513}}8eQa$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3150}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE"], "type": "m.room.history_visibility", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043320281, "hashes": {"sha256": "mVTkoFMEFLoqJ/drJQwUCHR7fF/v0PjMUH65F4Vzyao"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jFEoMCqB0Yya/Xm4fHfxZUQp3WYQMSI8d6B6MlI8nkNupPVVdhRFiRmm4LQOKD+liZN+4FcSA0MjnxlOA4D6Bg"}}, "unsigned": {"age_ts": 1570043320281}}t7eQau$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3149}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc"], "type": "m.room.join_rules", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043319356, "hashes": {"sha256": "gOppRHRfp39JYDna+ApjDTnhonbEODYtJhAf6AxQCdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xxUXAxmctzYm8Qi3eACsAWmy5u/Lj36P9/N/7xahDa87JQUc81dKCO5G4TrzujINFap7Ig8D0VIfBo1WEcFFAA"}}, "unsigned": {"age_ts": 1570043319356}} [ i  n  q!14`f4jQ3Q ]$1570043346276qTXUF:localhost:8800m.room.power_levels!pHoEnhQYhwlbJXqKQE:localhost:8800m=Xm=@anon-20191002_181700-619:localhost:8800iQ'Q ]$1570043345275UDVPY:localhost:8800m.room.member!pHoEnhQYhwlbJXqKQE:localhost:8800m8m9B@anon-20191002_181700-619:localhost:8800h Q'Q  ]$1570043344274cabjv:localhost:8800m.room.create!pHoEnhQYhwlbJXqKQE:localhost:8800m6m6k@anon-20191002_181700-619:localhost:8800gQ'1 ]$1570043341273LsXNn:localhost:8800m.room.member!0:localhost:42455m*m,T@anon-20191002_181700-617:localhost:8800mc1/1 C$2:localhost:42455m.room.join_rules!0:localhost:42455m*m+7@__ANON__-0:localhost:42455gb 1'1 C$1:localhost:42455m.room.member!0:localhost:42455m*m+7@__ANON__-0:localhost:42455ga1'1 C$0:localhost:42455m.room.create!0:localhost:42455m*m+7@__ANON__-0:localhost:42455!`e)Q ]$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYm.room.aliases!OCEHAjcOXWNyWIESIS:localhost:8800m&Qm&@anon-20191002_181700-616:localhost:8800,_e?Q ]$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQm.room.history_visibility!OCEHAjcOXWNyWIESIS:localhost:8800m!m"@anon-20191002_181700-616:localhost:8800$^e/Q ]$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIm.room.join_rules!OCEHAjcOXWNyWIESIS:localhost:8800mmmN@anon-20191002_181700-616:localhost:8800&]e3Q ]$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3ism.room.power_levels!OCEHAjcOXWNyWIESIS:localhost:8800mpm@anon-20191002_181700-616:localhost:8800 \e'Q ]$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsm.room.member!OCEHAjcOXWNyWIESIS:localhost:8800mm@anon-20191002_181700-616:localhost:8800[ e'Q  ]$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGicom.room.create!OCEHAjcOXWNyWIESIS:localhost:8800mm@anon-20191002_181700-616:localhost:8800(Ze7Q ] $PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08a.made.up.filler.type!qjijQBfMwsCPTVgKPm:localhost:8800 mm@anon-20191002_181700-614:localhost:8800 Ye'Q ]$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpom.room.member!qjijQBfMwsCPTVgKPm:localhost:8800mm:@anon-20191002_181700-614:localhost:8800!Xe)Q ]$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQykm.room.aliases!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800,We?Q ]$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAm.room.history_visibility!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800$Ve/Q ]$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFom.room.join_rules!qjijQBfMwsCPTVgKPm:localhost:8800mFm)@anon-20191002_181700-614:localhost:8800)Ue9Q ]$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0gm.room.canonical_alias!qjijQBfMwsCPTVgKPm:localhost:8800m@m/@anon-20191002_181700-614:localhost:8800&Te3Q ]$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oEm.room.power_levels!qjijQBfMwsCPTVgKPm:localhost:8800m[ma@anon-20191002_181700-614:localhost:8800 Se'Q ]$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5om.room.member!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800R e'Q  ]$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8m.room.create!qjijQBfMwsCPTVgKPm:localhost:8800mm@anon-20191002_181700-614:localhost:8800(Qe7Q ] $BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQa.made.up.filler.type!kjjUsMowsioSQRIJeg:localhost:8800 mm@anon-20191002_181700-612:localhost:8800 Pe'Q ]$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2om.room.member!kjjUsMowsioSQRIJeg:localhost:8800mm@anon-20191002_181700-612:localhost:8800!Oe)Q ]$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYEm.room.aliases!kjjUsMowsioSQRIJeg:localhost:8800mܩmo@anon-20191002_181700-612:localhost:8800 [ H[i<eQa_$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3154}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-614:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043325206, "hashes": {"sha256": "NsatYpg7z8e77/isBSHJbO0UjoLNKgNUmzMcr68r0DU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GCiGLvVPEkblxwdg2Yccnigf5KRo90IlNMiUk3wAy7eMgyhPYAmK+XXpFRScSIUjk2O7DepvhOBvxYUck9djAg"}}, "unsigned": {"age_ts": 1570043325206}}o;eQG$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "txn_id": "593", "stream_ordering": 3153}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o"], "type": "a.made.up.filler.type", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043323312, "hashes": {"sha256": "nt72h3gLzzBxKfXXlUIZkUzT8sIKnFe/m+GI+o1pirc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x9aZnxWXfcvKebUmIrBZ0oidxs/WulLcYgYF2JPiYccWNA+PmouWDUSUWt3st6nu/+lGTKMcLwm4zPaHlJqDCw"}}, "unsigned": {"age_ts": 1570043323312}}A:eQa$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o!kjjUsMowsioSQRIJeg:localhost:8800{"token_id": 593, "stream_ordering": 3152}{"auth_events": ["$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE", "$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA", "$W0ZIN7aaCNGngNPPxwfrSHnFLsZMDAWGVCKkVpAZ9UE", "$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y"], "prev_events": ["$DyvMSwUJjsrFa7MFMAt2w9uakKG8w7qgjmliYQO9eYE"], "type": "m.room.member", "room_id": "!kjjUsMowsioSQRIJeg:localhost:8800", "sender": "@anon-20191002_181700-612:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-611", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-611:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043322496, "hashes": {"sha256": "mpI6q/0y8Z+T6K+H08lz3Y4dOf2/qvkr7QzsMOVJRvk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "04WQQ4nXgvlniP9W6GNpHU6VMUg8R87MLlQGxFLgUIxRWsKWHeL6llXhTSBhScDvl7IoGRCfWaA+0QWrVhvCCQ"}}, "unsigned": {"age_ts": 1570043322496, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-45:localhost:8800"}, "sender": "@anon-20191002_181700-612:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-612:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-612:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-612", "avatar_url": null}, "sender": "@anon-20191002_181700-612:localhost:8800"}]}} 7p v Q]4)bM eEEQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0@__ANON__-12:localhost:42455@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800joinCL e]]Q=$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg@anon-20191002_181700-634:localhost:8800@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800joinanon-20191002_181700-634K eEEQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E@__ANON__-11:localhost:42455@__ANON__-11:localhost:42455!NanhNmCnVVpmZRJrTF:localhost:8800joinCJ e]]Q=$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk@anon-20191002_181700-633:localhost:8800@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800joinanon-20191002_181700-633)I Q]]1=$1570043391316OJaBO:localhost:8800@anon-20191002_181700-632:localhost:8800@anon-20191002_181700-632:localhost:8800!5:localhost:42455joinanon-20191002_181700-632jH 3EE1$11:localhost:42455@__ANON__-10:localhost:42455@__ANON__-10:localhost:42455!5:localhost:42455join8G O]]Q=$157004338812XhwjX:localhost:8829@anon-20191002_181700-629:localhost:8829@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800joinanon-20191002_181700-6299F Q]]Q=$1570043383307bhuDV:localhost:8800@anon-20191002_181700-628:localhost:8800@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800joinanon-20191002_181700-6289E Q]]Q=$1570043377301OraEa:localhost:8800@anon-20191002_181700-626:localhost:8800@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800joinanon-20191002_181700-6269D Q]]Q=$1570043372296yAiBq:localhost:8800@anon-20191002_181700-625:localhost:8800@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800joinanon-20191002_181700-6259C Q]]Q=$1570043367291AEdax:localhost:8800@anon-20191002_181700-624:localhost:8800@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800joinanon-20191002_181700-6249B Q]]Q=$1570043362286KwXMK:localhost:8800@anon-20191002_181700-623:localhost:8800@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800joinanon-20191002_181700-623CA e]]Q=$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU@anon-20191002_181700-622:localhost:8800@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800joinanon-20191002_181700-6229@ Q]]Q=$1570043351281XHPOP:localhost:8800@anon-20191002_181700-620:localhost:8800@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800joinanon-20191002_181700-620w? 1CCQ$3:localhost:42455@__ANON__-2:localhost:42455@__ANON__-2:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800join9> Q]]Q=$1570043345275UDVPY:localhost:8800@anon-20191002_181700-619:localhost:8800@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800joinanon-20191002_181700-619)= Q]]1=$1570043341273LsXNn:localhost:8800@anon-20191002_181700-617:localhost:8800@anon-20191002_181700-617:localhost:8800!0:localhost:42455joinanon-20191002_181700-617g< 1CC1$1:localhost:42455@__ANON__-0:localhost:42455@__ANON__-0:localhost:42455!0:localhost:42455joinC; e]]Q=$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs@anon-20191002_181700-616:localhost:8800@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800joinanon-20191002_181700-616E: e]]Q=$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo@anon-20191002_181700-613:localhost:8800@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800inviteanon-20191002_181700-613C9 e]]Q=$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o@anon-20191002_181700-614:localhost:8800@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800joinanon-20191002_181700-614E8 e]]Q=$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o@anon-20191002_181700-611:localhost:8800@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800inviteanon-20191002_181700-611 GPt= a * N  r ;  _ ( L p9]&Jn7[$Hl5Y"4)==anon-20191002_181700-685anon-20191002_181700-6854(==anon-20191002_181700-684anon-20191002_181700-6844'==anon-20191002_181700-683anon-20191002_181700-6834&==anon-20191002_181700-682anon-20191002_181700-6824%==anon-20191002_181700-681anon-20191002_181700-6814$==anon-20191002_181700-680anon-20191002_181700-6804#==anon-20191002_181700-679anon-20191002_181700-6794"==anon-20191002_181700-678anon-20191002_181700-6784!==anon-20191002_181700-677anon-20191002_181700-6774 ==anon-20191002_181700-676anon-20191002_181700-6764==anon-20191002_181700-675anon-20191002_181700-6754==anon-20191002_181700-674anon-20191002_181700-6744==anon-20191002_181700-673anon-20191002_181700-6734==anon-20191002_181700-672anon-20191002_181700-6724==anon-20191002_181700-671anon-20191002_181700-6714==anon-20191002_181700-670anon-20191002_181700-6704==anon-20191002_181700-669anon-20191002_181700-6694==anon-20191002_181700-668anon-20191002_181700-6684==anon-20191002_181700-667anon-20191002_181700-6674==anon-20191002_181700-666anon-20191002_181700-6664==anon-20191002_181700-665anon-20191002_181700-6654==anon-20191002_181700-664anon-20191002_181700-6644==anon-20191002_181700-663anon-20191002_181700-6634==anon-20191002_181700-662anon-20191002_181700-6624==anon-20191002_181700-661anon-20191002_181700-6614==anon-20191002_181700-660anon-20191002_181700-6604==anon-20191002_181700-659anon-20191002_181700-6594==anon-20191002_181700-658anon-20191002_181700-6584 ==anon-20191002_181700-657anon-20191002_181700-6574 ==anon-20191002_181700-656anon-20191002_181700-6564 ==anon-20191002_181700-655anon-20191002_181700-6554 ==anon-20191002_181700-654anon-20191002_181700-6544 ==anon-20191002_181700-653anon-20191002_181700-6534==anon-20191002_181700-652anon-20191002_181700-6524==anon-20191002_181700-651anon-20191002_181700-6514==anon-20191002_181700-650anon-20191002_181700-6504==anon-20191002_181700-649anon-20191002_181700-6494==anon-20191002_181700-648anon-20191002_181700-6484==anon-20191002_181700-647anon-20191002_181700-6474==anon-20191002_181700-646anon-20191002_181700-6464==anon-20191002_181700-645anon-20191002_181700-6454==anon-20191002_181700-644anon-20191002_181700-6444==anon-20191002_181700-643anon-20191002_181700-6434~==anon-20191002_181700-642anon-20191002_181700-6424}==anon-20191002_181700-641anon-20191002_181700-6414|==anon-20191002_181700-640anon-20191002_181700-6404{==anon-20191002_181700-639anon-20191002_181700-6394z==anon-20191002_181700-638anon-20191002_181700-6384y==anon-20191002_181700-637anon-20191002_181700-6374x==anon-20191002_181700-636anon-20191002_181700-6364w==anon-20191002_181700-635anon-20191002_181700-6354v==anon-20191002_181700-634anon-20191002_181700-6344u==anon-20191002_181700-633anon-20191002_181700-6334t==anon-20191002_181700-632anon-20191002_181700-6324s==anon-20191002_181700-631anon-20191002_181700-6314r==anon-20191002_181700-630anon-20191002_181700-6304q==anon-20191002_181700-628anon-20191002_181700-6284p==anon-20191002_181700-627anon-20191002_181700-6274o==anon-20191002_181700-626anon-20191002_181700-6264n==anon-20191002_181700-625anon-20191002_181700-6254m==anon-20191002_181700-624anon-20191002_181700-6244l==anon-20191002_181700-623anon-20191002_181700-6234k==anon-20191002_181700-622anon-20191002_181700-6224j==anon-20191002_181700-621anon-20191002_181700-6214i==anon-20191002_181700-620anon-20191002_181700-6204h==anon-20191002_181700-619anon-20191002_181700-6194g==anon-20191002_181700-618anon-20191002_181700-6184f==anon-20191002_181700-617anon-20191002_181700-6174e==anon-20191002_181700-616anon-20191002_181700-616?d=Sanon-20191002_181700-615Displayname Set For Federation Test4c==anon-20191002_181700-614anon-20191002_181700-614 g * T~=ggS]!c\@anon-20191002_181700-623:localhost:8800VLGPPLCUUDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6IwogR]!c[@anon-20191002_181700-622:localhost:8800IAPOATKCLUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygogQ]!cZ@anon-20191002_181700-621:localhost:8800MQWOVRGMDHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9IWFQza2lUTTFQV0FCSkcKMDAyZnNpZ25hdHVyZSDH8GKBiG2tmKZs-dzNXlz8Ww_sRhs7tCh0J4VtNcAN3wogP]!cY@anon-20191002_181700-620:localhost:8800CTOWFYNHGQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAogO]!cX@anon-20191002_181700-619:localhost:8800AZJJCPXJVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQogN]!cW@anon-20191002_181700-618:localhost:8800KPRKVKAABYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwogM]!cV@anon-20191002_181700-617:localhost:8800DZQIEDJUETMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJiQWdeRX5ENjNkbTZSYVkKMDAyZnNpZ25hdHVyZSA8zIpRzRmJlGIqkTBx6GA19slBMTUSU8V8B5mBBrAhIAogL]!cU@anon-20191002_181700-616:localhost:8800YMFGFJXLHSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtWczhVYXYqK2kxZEo5VUMKMDAyZnNpZ25hdHVyZSAyxMn--zXijwO_yDpNAKZp3Nowd1ex2CJt9oF3jnAAlQogK]!cT@anon-20191002_181700-615:localhost:8800LDFQWSUCEMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxQOkhhbnIqNG1BZnlZb0QKMDAyZnNpZ25hdHVyZSCd7FTUX1n-4f2mMjlkYjWuX6DbpozOJbgiroD47tErvwogJ]!cS@anon-20191002_181700-614:localhost:8800KKJOZKNSMZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRIQ1Z3XztVd0RTK2R4K3QKMDAyZnNpZ25hdHVyZSBr6Tw_uDl-saWiJHMt1fEznSF3WHYr5dOTbcQ5XctL7wogI]!cR@anon-20191002_181700-613:localhost:8800UDRWGJFVHIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpreUxsRlNPfmpWV0R4emwKMDAyZnNpZ25hdHVyZSAFh5ccDMSVr8aWYsFwKsNl55tnlLMnNvdhEFpRcQnZOQo  }t@eQau$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3158}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g"], "type": "m.room.join_rules", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043328582, "hashes": {"sha256": "LRev5PzIyA+fpPnxaYMbJunX3ff1hS/ZcsNeJK7a1sE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "u/xQBhrQtto6ZzZANCoZxmv4qvL8+pTrjs4DVNA6t1VqLzT342NUkyNQmer3OjrAkTAdei7KGCh6CVNecgikBw"}}, "unsigned": {"age_ts": 1570043328582}}?eQa9$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3157}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE"], "type": "m.room.canonical_alias", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"alias": "#test-20191002_181700-46:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043327808, "hashes": {"sha256": "ukT+tn8sYhEghfoMoPeFCVggHF9AH0gbFKBCpJI+FCY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oiIXXE/iNd9xAVV8yQ3Bf3LL17tg3bS/exIZW0RtLeJIDKFseh8aIX+7PnpxJ8Ps3z4wf6gGuNYJ63ycwGozDQ"}}, "unsigned": {"age_ts": 1570043327808}}k>eQac$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3156}{"auth_events": ["$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "type": "m.room.power_levels", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"users": {"@anon-20191002_181700-614:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043327067, "hashes": {"sha256": "ZSXM2Z7yek37jzbXrVvHmwICnrKP9G2fznxL4cNGrdU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "12yigBad7CVPHvqvca67OSA9m2VNlZT+oU/Ob4F/NVKAA6cnQNYEEKUY24sDtuWqlU0vAd5PT7AW7cRcbEz8BA"}}, "unsigned": {"age_ts": 1570043327067}}v=eQay$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3155}{"auth_events": ["$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8"], "prev_events": ["$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8"], "type": "m.room.member", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-614", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-614:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043326384, "hashes": {"sha256": "oRYlJmaHZOW5OgixeeJKHCHTaXVtYzzh46zNitfErCQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3qSfYXQ1Spqya3nxvPs5NOZ1596qe8kG/YtnzvWQisP7T3YgK4FhWAVcFvGRmerZO8BrVzCfOGzKu244sYOJCw"}}, "unsigned": {"age_ts": 1570043326384}} %|'@ K P t , \u6s,^c+D|e]Q? Q Q' e !OCEHAjcOXWNyWIESIS:localhost:8800m.room.create$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico =Q']e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.member@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpor<Q))e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.aliaseslocalhost:8800$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyko;Q? e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.history_visibility$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMAg:Q/ e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.join_rules$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFol9Q9 e !qjijQBfMwsCPTVgKPm:localhost:8800m.room.canonical_alias$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g #Z~z v r n j , 2V@PL\6Zk?QQQ$1570043369294rquKy:localhost:8800$1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k>QQQ$1570043369293ssSMv:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k=QQQ$1570043368292FAoRb:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k<QQQ$1570043367291AEdax:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800k;QQQ$1570043364289XIEhE:localhost:8800$1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800k:QQQ$1570043364288SCpzq:localhost:8800$1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800k9QQQ$1570043363287eSyun:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800k8QQQ$1570043362286KwXMK:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:88007eeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:88006eeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:88005eeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:88004eeQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800k3QQQ$1570043354284IVfTL:localhost:8800$1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800k2QQQ$1570043353283ubEdk:localhost:8800$1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800k1QQQ$1570043352282iTcSU:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800k0QQQ$1570043351281XHPOP:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800[/1QQ$3:localhost:42455$1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k.QQQ$1570043347278WlNld:localhost:8800$1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k-QQQ$1570043346277FsKPl:localhost:8800$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k,QQQ$1570043346276qTXUF:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800k+QQQ$1570043345275UDVPY:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800K*Q11$1570043341273LsXNn:localhost:8800$2:localhost:42455!0:localhost:42455;)111$2:localhost:42455$1:localhost:42455!0:localhost:42455;(111$1:localhost:42455$0:localhost:42455!0:localhost:42455'eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800&eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800%eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800$eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800#eeQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800"eeQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800!eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g!qjijQBfMwsCPTVgKPm:localhost:8800eeQ$xlLW4UVyy841_AJ1g8BvtnOWemomFHiz1MfMEDqLP0g$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800 I ^ 6  n F  ~ V . f>6^f>`8pH \ 5  vN& r K $ ~V. ~ V . &^6'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800 'Q!zFdNewlKnUiMBxnYrN:localhost:8800 'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 4'Q!zScKnCZCFPIIodAiQj:localhost:8800 1'Q!zScKnCZCFPIIodAiQj:localhost:8800 /'Q!zScKnCZCFPIIodAiQj:localhost:8800 -'Q!zHBgbzUZHshNGZvIBS:localhost:8800 6'Q!zHBgbzUZHshNGZvIBS:localhost:8800 5'Q!zHBgbzUZHshNGZvIBS:localhost:8800 4'Q!zHBgbzUZHshNGZvIBS:localhost:8800 3'Q!zHBgbzUZHshNGZvIBS:localhost:8800 2'Q!zHBgbzUZHshNGZvIBS:localhost:8800 1'Q!zHBgbzUZHshNGZvIBS:localhost:8800 0'Q!zHBgbzUZHshNGZvIBS:localhost:8800 /'Q!zHBgbzUZHshNGZvIBS:localhost:8800 -'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800 p'Q!yfizglmCXdcqCgDrTr:localhost:8800 o'Q!yfizglmCXdcqCgDrTr:localhost:8800 n'Q!yfizglmCXdcqCgDrTr:localhost:8800 m'Q!yfizglmCXdcqCgDrTr:localhost:8800 l'Q!yfizglmCXdcqCgDrTr:localhost:8800 k'Q!yfizglmCXdcqCgDrTr:localhost:8800 j'Q!yfizglmCXdcqCgDrTr:localhost:8800 i'Q!yfizglmCXdcqCgDrTr:localhost:8800 h'Q!yfizglmCXdcqCgDrTr:localhost:8800 g'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800,'Q!yWhIsLsgNVGcnELrDS:localhost:8800%'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800e&Q!zhCsYcaweVFJLLNwBz:localhost:8800.&Q!zhCsYcaweVFJLLNwBz:localhost:8800-&Q!zhCsYcaweVFJLLNwBz:localhost:8800,&Q!zhCsYcaweVFJLLNwBz:localhost:8800+&Q!zhCsYcaweVFJLLNwBz:localhost:8800*&Q!zhCsYcaweVFJLLNwBz:localhost:8800)&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800 +'Q!zScKnCZCFPIIodAiQj:localhost:8800 )'Q!zHBgbzUZHshNGZvIBS:localhost:8800 .  wACeQa$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3161}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk"], "type": "m.room.member", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-613", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-613:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043331788, "hashes": {"sha256": "OiEVOWkJ2QU7xXxot3ANk0ZGzAk5K9TPklC0ZndfrKs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lOr2m++DTt7YJVNT/odM7SOetj2xCgnt75nQrHyzEH2velMy6P7WyDVvd7J7JEfXnrhVJKF5lsuUK8Ki39orCg"}}, "unsigned": {"age_ts": 1570043331788, "invite_room_state": [{"type": "m.room.canonical_alias", "state_key": "", "content": {"alias": "#test-20191002_181700-46:localhost:8800"}, "sender": "@anon-20191002_181700-614:localhost:8800"}, {"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-614:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-614:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-614", "avatar_url": null}, "sender": "@anon-20191002_181700-614:localhost:8800"}]}} BeQaM$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3160}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA"], "type": "m.room.aliases", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"aliases": ["#test-20191002_181700-46:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043330538, "hashes": {"sha256": "R7aZ8MzwlZVx6kJotlm1DGn/7al4uu0KD5YxmvpXUMI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e/TWaLCkwJvtETxrC7r2omc4Cq2g92u6gHQmMvBwowlbKU1nOnI8i+0j0FMpafi/ROvOktXmkgoiXH+j/h/dCg"}}, "unsigned": {"age_ts": 1570043330538}}AeQa$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "stream_ordering": 3159}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo"], "type": "m.room.history_visibility", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043329299, "hashes": {"sha256": "ycAKLK+F1PUKpy4g8cm/wSiA+pplzZG3I8pbahT54uQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EsTm6yXo7Zw2OwDqGTV/kCPparklTFoX3Cg1vAQAb88mc4T9OQMWE75MsXi4wjYo7MfhypGz0Lw/c+tK7sM2Ag"}}, "unsigned": {"age_ts": 1570043329299}} "} { y w u sqomkp3,Rx j5QQQ$1570043347278WlNld:localhost:8800$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j4QQQ$1570043346277FsKPl:localhost:8800$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j3QQQ$1570043346277FsKPl:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j2QQQ$1570043346277FsKPl:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j1QQQ$1570043346276qTXUF:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j0QQQ$1570043346276qTXUF:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j/QQQ$1570043345275UDVPY:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800J.Q11$1570043341273LsXNn:localhost:8800$2:localhost:42455!0:localhost:42455J-Q11$1570043341273LsXNn:localhost:8800$0:localhost:42455!0:localhost:42455:,111$2:localhost:42455$1:localhost:42455!0:localhost:42455:+111$2:localhost:42455$0:localhost:42455!0:localhost:42455:*111$1:localhost:42455$0:localhost:42455!0:localhost:42455~)eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~(eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~'eeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800~&eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~%eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~$eeQ$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800~#eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~"eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~!eeQ$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800~ eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800~eeQ$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~eeQ$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$WXDe1A5zNmiVSKNOUK2slzNEaxACCb6QPHE_l3qVfFo!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8!qjijQBfMwsCPTVgKPm:localhost:8800~eeQ$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE!qjijQBfMwsCPTVgKPm:localhost:8800  l  ,D   d<$ \ 4|eeQ$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY$So-dIvcry5hTgpdCB4galafTmvO6A1XHnbQaddBVtAk!ZvLVbnHjeymRiFIkYr:localhost:8800 !eeQ$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjo!EyyNoldCLUdFHzXTDP:localhost:8800YeeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800 eeeQ$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI$-y4V5Cme16FIzongXpalxbHz8KEQ_iSi0bkF5tNs2ac!RPfffkmSEbWggEjnoI:localhost:8800eeQ$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE!KdOYYnOuwAyQzqwUki:localhost:8800|eeQ$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ$F4SllhQ4bfJwo-dhDmiJ2e0KqFlRpv25HxE0u3h2_Qs!zuCqeooOnfWkYrQdxA:localhost:8800teeQ$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64$hTDuOMAjM8Q-mHvq7A5XVl4NIfJDiZL2wzegslZZzlM!ITdmSQpjMnaPoHIbws:localhost:8800aeeQ$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U$xikgJLuX0mGZHBTK81Cq7W4fY9Tis7tDFW4gJVguw1U!XRAZJeoZBhGeHKKjaG:localhost:8800 LeeQ$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ!jfshVGNDxkvqPxFxWB:localhost:8800eeQ$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA!kwXxkGQFkaeenFTQJr:localhost:88008eeQ$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw$wNiusnRFKMFaoezFk-bMOpZzrfJ1KwSvKaKRNKN15J4!JusxqeECtidaPlWqhp:localhost:8800PeeQ$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg!GiSxJsKZhQVHBkrVPn:localhost:8800<eeQ$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM!HcMGemcRrLnLprOJJR:localhost:8800́eeQ$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM$00ylmQuKK9_ztaV7XbkPEScQ7FZR11uLdqdRZS8G5wg!wnriPzXkIMmdTNoJKU:localhost:8800 TeeQ$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ!rpVYLTJGcFNdGzFzXj:localhost:8800 teeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$86PQsDqsPyVRYPDXsiR_KmF8xqqWmABkDdlNaES_LG4!kjueCKHmYaYefEEpQY:localhost:8800eeQ$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM!kjueCKHmYaYefEEpQY:localhost:8800eeQ$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg!yAzXcNLHMuqFOcOexj:localhost:8800 eeQ$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c$WpX3pptN_LZQdzveaGSzeva-Sr06pvkDitd9j2L9uc8!EWkoFeckhXlNyjuIEB:localhost:8800ӁeeQ$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs!eySSVuCclRpBDgwKIU:localhost:8800}eeQ$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs$wDg4WicXIPdeA6MBwrYQiK707xozYQBSP5yTv0vJFmc!SBEprlZiuliFNSfNmz:localhost:8800BeeQ$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs!ZaltdIYVZjCHsCWTZD:localhost:8800I|eeQ$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o$sZdRAAo-McIHHjIqK-P0rbC3B7fpgDWrU4Knqm15krk!xcdNyJNFEdaBGFycsB:localhost:8800 r { v t o j hfa_[YWUjh|Q/e!IMiczgkCTjejbnbeyP:localhost:8800@3:localhost:8800$IN3snW-MmnU88W14ZHuCcf5yHZ60PxS7dJzScPaZgVgjoin{Q]e!IMiczgkCTjejbnbeyP:localhost:8800@anon-20191002_181700-161:localhost:8800$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssjoinhzQ/e!HIZTeBCxvpMSpcqGVD:localhost:8800@2:localhost:8800$-BAG2cxvD2pDVtu4dped1VvJTvt1wI8sAV6VhhCpw7kjoinyQ]e!HIZTeBCxvpMSpcqGVD:localhost:8800@anon-20191002_181700-160:localhost:8800$rppyFlmMLjMWHbYExTOc-gSF8Ik9F6eZZTkMJhnouH4joinxQ]e!awHAhLuEkavTGACcUW:localhost:8800@anon-20191002_181700-158:localhost:8800$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToMjoinwQ]e!OqPpVlCwmKdAUlwrXI:localhost:8800@anon-20191002_181700-156:localhost:8800$W-HXHRyHd7wrRPUrTgcMXYyR0coMtZS0HkZekzDlILEjoinvQ]e!quaZwrGnzbNWhwAOYB:localhost:8800@anon-20191002_181700-154:localhost:8800$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4joinuQ]e!JusxqeECtidaPlWqhp:localhost:8800@anon-20191002_181700-153:localhost:8800$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIjointQ]e!JusxqeECtidaPlWqhp:localhost:8800@anon-20191002_181700-152:localhost:8800$VaXX5qWOBGVLc7ksa37eAQrlSwqLOT3c44n63bFhWl4joinsQ]e!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-151:localhost:8800$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0joinrQ]e!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-149:localhost:8800$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8leaveqQ]e!aWvVRVaDflYyyGTOdD:localhost:8800@anon-20191002_181700-150:localhost:8800$I16rXcDQId5trG7G51K0cg4RdxeX62lDSwx3KbN9wokjoinpQ]e!GiSxJsKZhQVHBkrVPn:localhost:8800@anon-20191002_181700-146:localhost:8800$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNkjoinoQ]e!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-144:localhost:8800$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMjoinnQ]e!AjjrNwXmPTCruHxaJq:localhost:8800@anon-20191002_181700-143:localhost:8800$X5hZT3LI6rJt76AMolWVEZmidAjnx4X8_HEZRNQApvojoinmQ]e!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-142:localhost:8800$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4invitelQ]e!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-141:localhost:8800$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQjoinkQ]e!BkzROHxDAfKIzYpmPV:localhost:8800@anon-20191002_181700-140:localhost:8800$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8joinjQ]e!WWZVpyLeZfyfpWidLx:localhost:8800@anon-20191002_181700-138:localhost:8800$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtcjoiniQ]e!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-137:localhost:8800$VlCzq97PnF5j8aqR6GQZTiTKK0ngA3XTf7lUnjsQDBsjoinhQ]e!XIqmzIFbkHGQPIpywk:localhost:8800@anon-20191002_181700-136:localhost:8800$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgjoingQ]e!lMRBkbYJDQHgdBZBFJ:localhost:8800@anon-20191002_181700-135:localhost:8800$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQinvitefQ]e!lMRBkbYJDQHgdBZBFJ:localhost:8800@anon-20191002_181700-134:localhost:8800$-a2-0-ujdraAVJg_GH7fi0-Vz_ahAf6eh6ViArDQiCYjoineQ]e!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-133:localhost:8800$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADaginvitedQ]e!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-132:localhost:8800$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYAjoincQ]e!cHtqiAyCHEAoBIbCmL:localhost:8800@anon-20191002_181700-131:localhost:8800$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREjoinbQ]e!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-130:localhost:8800$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0inviteaQ]e!OBWkjfrDCNgYFfblia:localhost:8800@anon-20191002_181700-129:localhost:8800$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYjoin`Q]e!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-127:localhost:8800$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEIleave_Q]e!ntuwVdUxfzNIhIKYaz:localhost:8800@anon-20191002_181700-128:localhost:8800$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8join^Q]e!CQKLQUpSYakhxVDltC:localhost:8800@anon-20191002_181700-126:localhost:8800$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubgjoin D|t l d \ T LDeeQ$mWGVyptmwEdI94omovSMlHbvLc4SAB55iSbXee8mZEE$V6NE3ZfZhy9Hp5BjgcR0MiW5y0nz-ZkyxreYDxxbWSY!csWEXfVEVxdviNvgAd:localhost:8800geeQ$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY$-0JounNYWqeMQrR-qqxlXIGpvSzW_U6rlMnoXro8I5k!nvclDopiBLEOKBIheH:localhost:8800eeQ$mUtnNwyPELCQMvp7i+JllnYgmPcmOW/oXvZujXf/ynk$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY!uqIEMXzdeNeXdJmuwh:localhost:8800 $eeQ$mTp-837YYXgjEWwHb2Q9CWcVpg1-NcBCu_A1Zv_Gxhw$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$mTLzRv8H0hvZ6r38d-GO3GvfqOeFy7LdhI3cXI0AGEQ$-dWTK_O69gM5lFtzUcNmvLiVxWVbo7bly4Sj7iXjw88!HOPyhZPcKkrvSmDIvX:localhost:8800فeeQ$mQpT_ViB_BvLfUBcT_eAYk2rT62jd1z86V5NYrexZNo$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShI!vOfeZvbtpuHfoqShFl:localhost:8800eeQ$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcU$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk!SrMQpDMFREKRMELwbL:localhost:8800eeQ$mOfXZ0MfFL8XY8dc0GXB9Z3oVok9_tmsAPEI0CmwEtc$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM!WWZVpyLeZfyfpWidLx:localhost:8800eeQ$mLtWfJyZDzdyjsWMQ-y_LgACMxYsMEpBkk1jORMIPZ4$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETs!LvARVIpJZeRQxbKefX:localhost:8800eeQ$mK5R5AbT_P14Cnk_wUlh7ms6I4ljlkXGn084JANUl3U$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$mK43SlMwF-co-3mFqnycA-fZmdehC9ZPJ_E08O6PF3o$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY!fOJLpnbtgKNxxVDquX:localhost:8800eeQ$mJzK5CYL_QPSJh-PFsOK5HQ1pN7DQLRDdFtZpR1EYpI$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw!FAYqpziHeVZugCGaij:localhost:8800YeeQ$mIN4sj4EF0YQZimwgIPUW4bAHmUkfqp9fQQ18mfEtYc$TSWWVWW8TnWx23BN0Boj3eGa6y7AAb9KFjda43TRhfc!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$mHypQJ2VtbbTPswsYVlT69dxiPXMX1KDehGc1kTjNT0$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU!egCvzKpbEwmuvDoBTb:localhost:8800^eeQ$mH3Lb67T3o4jMjC3ciQcxsKLokp5rZEaJNGaqrTHbt8$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw!SrMQpDMFREKRMELwbL:localhost:8800!  &kGeQac$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3165}{"auth_events": ["$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "type": "m.room.power_levels", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"users": {"@anon-20191002_181700-616:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043337584, "hashes": {"sha256": "LpPtHrBb5HwXK32SZnNHwarfvIi0AH53A6Bbrez8TqE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hOxVhxAV8ESiFlcVQXM/oxdrMuu3SOejz4CCX72ufnNQuG7rtJRLg/Faek6QC5AVNIQ6bSVdnI+pLW+FwuV6AQ"}}, "unsigned": {"age_ts": 1570043337584}}vFeQay$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3164}{"auth_events": ["$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico"], "prev_events": ["$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico"], "type": "m.room.member", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-616", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-616:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043336835, "hashes": {"sha256": "1kccVzK7ySFx8ZCqnZBQvuQhKQlSEjhFGlpdjgzAR6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SexbYyGd5a3Xy91vxH1XaDvww5wbYRSDfJ9eADUmf4rLvtPFuFKFf0MootFEjCKU/LZJlhNyPkvUAqQq9Jw6Cg"}}, "unsigned": {"age_ts": 1570043336835}}iEeQa_$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3163}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-616:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043335939, "hashes": {"sha256": "AqFNWEmHL6zXK3l5oBbdzAr4a3JdOYoxXUtO/ZeUlyY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ekcJTKbmBkfSCTQobkcBWn41LO+5q6PtIdQgP0dXV71GFG2AvsEIp70fl3jzuIhmWE/3uc0Pr87rhvFB8FyCAA"}}, "unsigned": {"age_ts": 1570043335939}}oDeQG$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08!qjijQBfMwsCPTVgKPm:localhost:8800{"token_id": 595, "txn_id": "594", "stream_ordering": 3162}{"auth_events": ["$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE", "$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8", "$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o"], "prev_events": ["$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo"], "type": "a.made.up.filler.type", "room_id": "!qjijQBfMwsCPTVgKPm:localhost:8800", "sender": "@anon-20191002_181700-614:localhost:8800", "content": {"filler": 1}, "depth": 9, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043332632, "hashes": {"sha256": "LPItW8qP7WIR+LO7g3ZpvoeBba13Su8uVBO2Mqa26B0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MbLmO8IhDV2SEOSZ7OF/q1vLGR5/I+r5K38yHBeiQOBght0etBALRqZ0h9ml/l4mSSRSUi4EiP4UCq4nDZDgBg"}}, "unsigned": {"age_ts": 1570043332632}} ?+W%]Q}q V?  E2 P | J w $ D ^K , d>  vj9+j8}p]W Q221e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQ1e$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro1e$_ODsywVBFm5Pbqk0uNDF0qnRwDw0bijyyw6gb4Ue0Ck$1e$_JfVtut4jrSADk6xQOtj-cO8_4QSsrERlPutB4fnJmI1e$_JYHT2O708TjdqTjJeYv2ZOapphTDCD2mqMPS0iaoIY)1e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H901e$_HGD4ZEY9r5RImCwJFZzin78msQTZdUEr5Gk62UuLfc`1e$_GFnoh4EfGsCnk_vgjTNDGEjKwXMp1icN_nTkn0TgbI1e$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$aB-sSWc6fvc4FJ3AIct9VS-4eOm44k6FH7g5xFGwa841e$_TC1QZEWJ--0IhYt8ugclJ3gz4UBJ8eep4IO633xSH8(1e$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg }1e$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg1e$_hJmgTojdCwnwaP8DGUlfDYq_x4qiLFgCTIwqi6ie6s1e$_gP2GbN8G-uqsVIPp8UZTJGQwoiakBGlueuv5syTu1I1e$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j461e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8k1e$_Vahbq6i8bKqh2lrexpGIEooMrJhTazuKtAyge_qWt41e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y p1e$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs1e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo1e$_ePf2lE_IaXJUsd_srQiATRkleANKKAybE65XgX6slg .1e$_e8pFD8b5cTchR_S5Ib-y_-_jGTAlsF3hfhYb0TvIlg 1e$_cz7SRF1eE02UIdc0CZzpOXtnuouopt0IzbZJ72hsVw 81e$_c5pfL24Oud8K7hJjzPKnAl8VUqBL88enqmsGYieR4A1e$_b9dnnwfL6om8dBu1fq01Kci5rlIzY36vwQKyI6fYlI1e$_asNLvIXieJnRGjjsxaVZYUiVtWyCHh_ZTTaaliTr0s1e$_WaGSG7pjZ3hBsfULa1x1LI9jOfXjk62MZzup-kC91M 0e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czsN1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14FawR1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE"1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us%1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$_i3QEyDEeVpL-TFPNEvp7j1-x6fjdJg2YB0r_fiRHzA1e$aCnhAto5TiKFjSFuJ__zpqbl_hvIXuc6zFphCLrShLQ1e$aBh9blwi-xinNkD_O3KwQlZTBJNhOVRO5uhVuaSFARw1e$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs1e$a4yM0yOy_R6vzHzixlcLgyCbh4wDrOPcsarvxHwa5CU1e$a4U6U4G76Xtz7fB_xFu9ZTeIVGLYOed2hLb98dPtgp00e$a2WV0Cbid1IoTcWtUKl77_2ulyQAlowejAUGad9Q9iI1e$_vjC38mAkqQwqfkqTYy5QE7pPYgEGEOpNzw6ExA7oPk1e$_tkPwkbc35cld45GbctInaw5YTEbnmwEljMlEhGMpWE50e$_s_fOXBuJ9esh4KaMYzJB0Xv_Ceo2YX3ceAPe-6FZiQ1e$_qCaa2eAxYUBL74T_kCLwyDgR-62dzN5NxeeOuci9DU1e$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs1e$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog 1e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE1e$_vQlht6nUNuy9lUN3bhqX1HsNmp9Xw1Ff7Et72sjoF0 1e$_iRYbgTfcvj2y5sxj-IuRQnxw72IXYMsrHIoPWYPiCM 1e$_pl03-w_YPDQxoEh6b2TIokNhvTWnvXEIM0tZGDEsRg1e$_o-VS8RneLlQeTDAB6wHfviXOCRkjbHssouuR8oSUEgT1e$_nJL3zVsUwdgo9e_axO3h2WcjHlCHuLAnEDnVWNoDq4a1e$_nDbPlXrEw2NQtzIeBNVNUvN4wRaQoFJpbrEQqGVdCo1e$_kukdrczHsJoJXK525zt_pgtxB-sESggd10US-iYKZgz1e$a6kdcT5Bch296o4E7X9zxLfALfQVBvNXeNQsVP9hhMs 2 21e$a0L8T97ckDurZJe-E1oxrklYBbfiChEUE3aRMTzYxd8 Z1e$aLBfDYzwDCI3B_W_kj5M0SP86ZHXBBAtR_WcnjkUDNM 1e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s p21e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o P ii5 4  h g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAoq1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQow1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1Ywot1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwos1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAor1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgo{1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwoz1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgo}1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgov1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1gou1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4go|1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwoy1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2gox 'SU7q8 T  p 7 T  qS 8 T p8e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Ysha256w8e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyosha256 8e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOosha256 8e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okucsha256 [8e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYsha256 J8e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugsha256 >8e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAsha256 8e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrosha256 C8e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolksha2568e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwsha256y8e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkksha256 8e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQsha256-8e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeIsha2568e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Qsha2568e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTEsha256 7e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxssha256 8e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Kssha2568e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4ssha2568e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqcsha2568e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29csha256?7e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpUsha256 8e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4iosha2568e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gwsha256 8e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78sha256 8e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcsha256 .8e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1gsha2568e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hksha256m8e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTgsha256 8e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAsha256 ^8e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3gsha256 (8e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnAsha2568e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWYsha256|8e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAsha256f8e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjgsha25668e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8sha256l8e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIsha256u8e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZgsha256 c8e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPYsha256 G8e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduosha256 25VD V F  i #r/d'x. iF!\j' . v 3u^Q']!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-542:localhost:8829mBQ? !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.history_visibilityl:Q/ !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.join_rulesk^Q']!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-457:localhost:8829fBQ? !WuiaqqIOvBjgETqdus:localhost:8800m.room.history_visibilitye:Q/ !WuiaqqIOvBjgETqdus:localhost:8800m.room.join_rulesd<Q3 !WuiaqqIOvBjgETqdus:localhost:8800m.room.power_levelsc^Q']!WuiaqqIOvBjgETqdus:localhost:8800m.room.member@anon-20191002_181700-456:localhost:8800b6Q' !WuiaqqIOvBjgETqdus:localhost:8800m.room.createa^Q']!WpThtNEVhrUbUdCdMJ:localhost:8800m.room.member@anon-20191002_181700-541:localhost:8800i6Q' !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.createhGQ'/!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@5:localhost:8800U:Q/ !WjlTCJVOFJkanCtkFE:localhost:8800m.room.join_rulesR$6Q' !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create oBQ? !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibility s6Q' !WhLedNwPGGGTtqeqam:localhost:8800m.room.create<Q3 !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels q^Q']!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800 p:Q/ !WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rules rBQ? !XGAmnfaVvjDtQJuufa:localhost:8800m.room.history_visibility :Q/ !XGAmnfaVvjDtQJuufa:localhost:8800m.room.join_rules <Q3 !XGAmnfaVvjDtQJuufa:localhost:8800m.room.power_levels ^Q']!XGAmnfaVvjDtQJuufa:localhost:8800m.room.member@anon-20191002_181700-582:localhost:8800 6Q' !XGAmnfaVvjDtQJuufa:localhost:8800m.room.create BQ? !WjlTCJVOFJkanCtkFE:localhost:8800m.room.history_visibilityS<Q3 !WjlTCJVOFJkanCtkFE:localhost:8800m.room.guest_accessV6Q' !WjlTCJVOFJkanCtkFE:localhost:8800m.room.createO<Q3 !WhqVaRReBxJXADAyYD:localhost:8800m.room.power_levelsEQ'+!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@bob:matrix.org^Q']!WhqVaRReBxJXADAyYD:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800:Q/ !WhqVaRReBxJXADAyYD:localhost:8800m.room.join_rulesBQ? !WhqVaRReBxJXADAyYD:localhost:8800m.room.history_visibility<Q3 !WhqVaRReBxJXADAyYD:localhost:8800m.room.guest_access6Q' !WhqVaRReBxJXADAyYD:localhost:8800m.room.create<Q3 !WhLedNwPGGGTtqeqam:localhost:8800m.room.power_levels^Q']!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-472:localhost:8829^Q']!WhLedNwPGGGTtqeqam:localhost:8800m.room.member@anon-20191002_181700-471:localhost:8800:Q/ !WhLedNwPGGGTtqeqam:localhost:8800m.room.join_rulesBQ? !WhLedNwPGGGTtqeqam:localhost:8800m.room.history_visibilityBQ? !XMNRkfscQXRjgYrOSd:localhost:8800m.room.history_visibility6Q' !XMNRkfscQXRjgYrOSd:localhost:8800m.room.createCQ?!XIqmzIFbkHGQPIpywk:localhost:8800m.room.third_party_invite0<Q3 !XIqmzIFbkHGQPIpywk:localhost:8800m.room.power_levels^Q']!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-137:localhost:8800^Q']!XIqmzIFbkHGQPIpywk:localhost:8800m.room.member@anon-20191002_181700-136:localhost:8800:Q/ !XIqmzIFbkHGQPIpywk:localhost:8800m.room.join_rulesBQ? !XIqmzIFbkHGQPIpywk:localhost:8800m.room.history_visibility6Q' !XIqmzIFbkHGQPIpywk:localhost:8800m.room.create?Q9 !XIqmzIFbkHGQPIpywk:localhost:8800m.room.canonical_aliasEQ))!XIqmzIFbkHGQPIpywk:localhost:8800m.room.aliaseslocalhost:8800<Q3 !WjlTCJVOFJkanCtkFE:localhost:8800m.room.power_levelsQ^Q']!WjlTCJVOFJkanCtkFE:localhost:8800m.room.member@anon-20191002_181700-163:localhost:8800P<Q3 !WpThtNEVhrUbUdCdMJ:localhost:8800m.room.power_levelsj &c(? i  M |  6lu*G7s 'c^vQ/ Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules$1570043374298UIMFg:localhost:8800`uQ3 Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levels$1570043373297SOjrf:localhost:8800tQ']Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800$1570043372296yAiBq:localhost:8800ZsQ' Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.create$1570043371295coDXo:localhost:8800frQ? Q !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility$1570043369294rquKy:localhost:8800^qQ/ Q !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules$1570043369293ssSMv:localhost:8800`pQ3 Q !QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levels$1570043368292FAoRb:localhost:8800oQ']Q ~!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800$1570043367291AEdax:localhost:8800ZnQ' Q }!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.create$1570043366290YSCqz:localhost:8800fmQ? Q |!fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility$1570043364289XIEhE:localhost:8800^lQ/ Q {!fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules$1570043364288SCpzq:localhost:8800`kQ3 Q z!fDISaqNBhlOwherxSt:localhost:8800m.room.power_levels$1570043363287eSyun:localhost:8800jQ']Q y!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800$1570043362286KwXMK:localhost:8800ZiQ' Q x!fDISaqNBhlOwherxSt:localhost:8800m.room.create$1570043361285xsPbY:localhost:8800phQ? e w!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibility$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQhgQ/ e v!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rules$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3BcjfQ3 e u!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo eQ']e t!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUddQ' e s!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.create$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmofcQ? Q r!AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility$1570043354284IVfTL:localhost:8800^bQ/ Q q!AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules$1570043353283ubEdk:localhost:8800`aQ3 Q p!AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levels$1570043352282iTcSU:localhost:8800`Q']Q o!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800$1570043351281XHPOP:localhost:8800Z_Q' Q n!AYFqrmxwClFQlcTTYq:localhost:8800m.room.create$1570043350280ydSwy:localhost:8800e^Q'C1 m!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455$3:localhost:42455f]Q? Q l!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility$1570043347278WlNld:localhost:8800^\Q/ Q k!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules$1570043346277FsKPl:localhost:8800`[Q3 Q j!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levels$1570043346276qTXUF:localhost:8800ZQ']Q i!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800$1570043345275UDVPY:localhost:8800ZYQ' Q h!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.create$1570043344274cabjv:localhost:8800rX1']Q g!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800$1570043341273LsXNn:localhost:8800UW1'C1 g!0:localhost:42455m.room.member@__ANON__-0:localhost:42455$1:localhost:42455:V1' 1 g!0:localhost:42455m.room.create$0:localhost:42455>U1/ 1 g!0:localhost:42455m.room.join_rules$2:localhost:42455sTQ))e `!OCEHAjcOXWNyWIESIS:localhost:8800m.room.aliaseslocalhost:8800$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmYpSQ? e _!OCEHAjcOXWNyWIESIS:localhost:8800m.room.history_visibility$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQhRQ/ e ^!OCEHAjcOXWNyWIESIS:localhost:8800m.room.join_rules$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VIjQQ3 e ]!OCEHAjcOXWNyWIESIS:localhost:8800m.room.power_levels$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is  guK11aM $0:localhost:42455!0:localhost:42455{"outlier": true, "stream_ordering": 3169}{"origin_server_ts": 1570043341489, "prev_events": [], "event_id": "$0:localhost:42455", "auth_events": [], "content": {"creator": "@__ANON__-0:localhost:42455"}, "hashes": {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}, "sender": "@__ANON__-0:localhost:42455", "type": "m.room.create", "room_id": "!0:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 0, "signatures": {"localhost:42455": {"ed25519:1": "uc/e9P22kzK461WMaZWhsHTmcK3T1SMSaSl61/7RbltxlYcLbzOf3HI2sQznD7Ws7s8ADic1fFzNaI8UjA4mDA"}}, "unsigned": {}}JeQa5$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3168}{"auth_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is", "$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ"], "type": "m.room.aliases", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"aliases": ["#__ANON__-26:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043340369, "hashes": {"sha256": "WZ8eeL59JQQpD9AQcQe0/NOE2Qrxf/jM9AMktV25d40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9FfAyaGsAoEo1ekJUMCOVMrrwpfVUoa6rxXsUeq0fehLNyT09R4qLViSgW+8E4sQmIhhr0GzEvppuZYa+WSmAQ"}}, "unsigned": {"age_ts": 1570043340369}}IeQa$0EvMKG3uEJtsxql2Hi-fAPOaJx7jt1v9W-IiHjnhvjQ!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3167}{"auth_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is", "$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI"], "type": "m.room.history_visibility", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043339016, "hashes": {"sha256": "suggR7Bpj5e/CqMdPs5bqQ7pCnG0i11QN9hT1T6vL6Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3+iVvVD+PWEkIJnhHRCjI7t1fCZINMIJNRTg6JIbsrp9yc00wyD8fHApkT8BMQiMxdr1T0TMZ9jAKE3xaLVUDQ"}}, "unsigned": {"age_ts": 1570043339016}}tHeQau$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI!OCEHAjcOXWNyWIESIS:localhost:8800{"token_id": 597, "stream_ordering": 3166}{"auth_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is", "$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico", "$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBs"], "prev_events": ["$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is"], "type": "m.room.join_rules", "room_id": "!OCEHAjcOXWNyWIESIS:localhost:8800", "sender": "@anon-20191002_181700-616:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043338349, "hashes": {"sha256": "XgL8Wz130t41lipYqw+Vcg2I3VeBLvsipmO2EzB2Z4I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ONXOhctGsVNbkarLxxTr6VIolHDzBn4aT8AWD5zmI3oo/2OjY+N8vZcF9qPgKLCPGwrfoxWoXwnwLPjNmgqNCA"}}, "unsigned": {"age_ts": 1570043338349}} b vbOQQaC $1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3176}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-619:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043344274cabjv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043344390, "hashes": {"sha256": "gWbH7dHYajUBH5zJyssVIObudla04tOzFD8C9fd9puc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UUM4HCA8uvcwmas9IdMFj7aDSVB+mNhUu8+cx1Xe4cKOXJIKwkAMq7n3DdVgyOSZFNtdSv158HMG5gZktED9Cg"}}, "unsigned": {"age_ts": 1570043344390}}NQ1?o $1570043341273LsXNn:localhost:8800!0:localhost:42455{"stream_ordering": 3175}{"sender": "@anon-20191002_181700-617:localhost:8800", "prev_events": [["$2:localhost:42455", {"sha256": "UwLW9tV08ikKzx5dxLZOaWshu1gXu+YrYS+HP0byVOE"}]], "origin_server_ts": 1570043341506, "depth": 3, "state_key": "@anon-20191002_181700-617:localhost:8800", "origin": "localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-617", "avatar_url": null}, "room_id": "!0:localhost:42455", "auth_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}], ["$2:localhost:42455", {"sha256": "UwLW9tV08ikKzx5dxLZOaWshu1gXu+YrYS+HP0byVOE"}]], "type": "m.room.member", "prev_state": [], "event_id": "$1570043341273LsXNn:localhost:8800", "hashes": {"sha256": "yohBvYG7xl6JffN+RB3ioeeoxwtAfRar+k17VcY5zAE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rWdXiZh2qCCrO7/jTj6lQbvOCHg1Q5F6NDg16sBd/I05xa2EzvI9WVA6Qa9WgI/BT0qYAF4lN/81D5NNF4rDA"}}, "unsigned": {"age_ts": 1570043341508}}[M11a $2:localhost:42455!0:localhost:42455{"outlier": true, "stream_ordering": 3171}{"prev_events": [["$1:localhost:42455", {"sha256": "gX8A8HQhS50rYGKrb2oKsc7lP2y3fnxemXYaUphbLdA"}]], "origin_server_ts": 1570043341490, "content": {"join_rule": "public"}, "auth_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}], ["$1:localhost:42455", {"sha256": "gX8A8HQhS50rYGKrb2oKsc7lP2y3fnxemXYaUphbLdA"}]], "event_id": "$2:localhost:42455", "sender": "@__ANON__-0:localhost:42455", "hashes": {"sha256": "UwLW9tV08ikKzx5dxLZOaWshu1gXu+YrYS+HP0byVOE"}, "depth": 2, "state_key": "", "origin": "localhost:42455", "room_id": "!0:localhost:42455", "type": "m.room.join_rules", "signatures": {"localhost:42455": {"ed25519:1": "x+I+BBVCJz8MCyGi2ZHDNFlC9uOBZZn1ACy95tekaRx+oZuM/hrfN7GA+X3lIs3L+j7qxUQAX8eShB+FtnV1DA"}}, "unsigned": {}}L11a $1:localhost:42455!0:localhost:42455{"outlier": true, "stream_ordering": 3170}{"sender": "@__ANON__-0:localhost:42455", "hashes": {"sha256": "gX8A8HQhS50rYGKrb2oKsc7lP2y3fnxemXYaUphbLdA"}, "origin": "localhost:42455", "state_key": "@__ANON__-0:localhost:42455", "depth": 1, "type": "m.room.member", "room_id": "!0:localhost:42455", "prev_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}]], "origin_server_ts": 1570043341490, "content": {"membership": "join"}, "event_id": "$1:localhost:42455", "auth_events": [["$0:localhost:42455", {"sha256": "gc7e6S4vfnh+Lgr3++w0h/MpOH2BmSj2YRd8xTN6B9I"}]], "signatures": {"localhost:42455": {"ed25519:1": "wVqHMzPBWQ7K0u0Ztp9Ujd6PhaCXNO7BsqFLm17SlKTtWvute62AN3aMockiflnFEHl/Q0e9E9uPAYlZkeEDAg"}}, "unsigned": {}} 'q3g ' \  \ k )M)M)M)M[QQ/ $1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules]QQ3 $1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels~QQ']$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800W}QQ' $1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.createc|QQ? $1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility[{QQ/ $1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules]zQQ3 $1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levelsyQQ']$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800WxQQ' $1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.createcwQQ? $1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility[vQQ/ $1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules]uQQ3 $1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levelstQQ']$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800WsQQ' $1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.createcrQQ? $1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility[qQQ/ $1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules]pQQ3 $1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.power_levelsoQQ']$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800WnQQ' $1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.createmmeQ? $o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibilityeleQ/ $SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rulesgkeQ3 $t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels jeQ']$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800aieQ' $FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.createchQQ? $1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility[gQQ/ $1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules]fQQ3 $1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levelseQQ']$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800WdQQ' $1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.createbc1Q'C$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455cbQQ? $1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility[aQQ/ $1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules]`QQ3 $1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levels_QQ']$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@anon-20191002_181700-619:localhost:8800W^QQ' $1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.createo]Q1']$1570043341273LsXNn:localhost:8800!0:localhost:42455m.room.member@anon-20191002_181700-617:localhost:8800;\11/ $2:localhost:42455!0:localhost:42455m.room.join_rulesR[11'C$1:localhost:42455!0:localhost:42455m.room.member@__ANON__-0:localhost:424557Z11' $0:localhost:42455!0:localhost:42455m.room.create g5K7GUF o) o 4 v 9$s8  G bn1 + p uBQ? !ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibility :Q/ !ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rules <Q3 !ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels ^Q']!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800 6Q' !ELBgBaMSIMNkjFSumH:localhost:8800m.room.create BQ? !DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibility :Q/ !DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rules <Q3 !DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels ^Q']!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800 6Q' !DntdfAPfCfgdOoRMdl:localhost:8800m.room.create EQ))!DoiZErAdypBUMZKaeJ:localhost:8800m.room.aliaseslocalhost:8800<Q3 !DnUHoxreGexNmjSVpq:localhost:8800m.room.power_levels^Q']!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-351:localhost:8800^Q']!DnUHoxreGexNmjSVpq:localhost:8800m.room.member@anon-20191002_181700-350:localhost:8800:Q/ !DnUHoxreGexNmjSVpq:localhost:8800m.room.join_rulesBQ? !DnUHoxreGexNmjSVpq:localhost:8800m.room.history_visibility6Q' !DnUHoxreGexNmjSVpq:localhost:8800m.room.create<Q3 !DnUHoxreGexNmjSVpq:localhost:8800a.madeup.test.state<Q3 !DelfBAGvCrTXgNxmNV:localhost:8800m.room.power_levels^Q']!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800 BQ? !DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibility :Q/ !DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules RQ'E!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455 6Q' !DuqHkpTfWCUblSrxQj:localhost:8800m.room.create <Q3 !DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels <Q3 !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.power_levels^Q']!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-247:localhost:8800^Q']!EMhFCPhwmnWVnjtXXM:localhost:8800m.room.member@anon-20191002_181700-246:localhost:8800:Q/ !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.join_rulesBQ? !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.history_visibility<Q3 !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.guest_access6Q' !EMhFCPhwmnWVnjtXXM:localhost:8800m.room.create<Q3 !EABRjdYuYumMhLSwIa:localhost:8800m.room.power_levelsX^Q']!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@anon-20191002_181700-206:localhost:8800WHQ'1!EABRjdYuYumMhLSwIa:localhost:8800m.room.member@32:localhost:8800]:Q/ !EABRjdYuYumMhLSwIa:localhost:8800m.room.join_rulesYBQ? !EABRjdYuYumMhLSwIa:localhost:8800m.room.history_visibility\<Q3 !EABRjdYuYumMhLSwIa:localhost:8800m.room.guest_access[6Q' !EABRjdYuYumMhLSwIa:localhost:8800m.room.createV<Q3 !DqxFmsXPclgGqpSwdy:localhost:8800m.room.power_levels^Q']!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-481:localhost:8829^Q']!DqxFmsXPclgGqpSwdy:localhost:8800m.room.member@anon-20191002_181700-480:localhost:8800:Q/ !DqxFmsXPclgGqpSwdy:localhost:8800m.room.join_rulesBQ? !DqxFmsXPclgGqpSwdy:localhost:8800m.room.history_visibility6Q' !DqxFmsXPclgGqpSwdy:localhost:8800m.room.create?Q9 !DqxFmsXPclgGqpSwdy:localhost:8800m.room.canonical_aliasEQ))!DqxFmsXPclgGqpSwdy:localhost:8800m.room.aliaseslocalhost:8800<Q3 !DoiZErAdypBUMZKaeJ:localhost:8800m.room.power_levels^Q']!DoiZErAdypBUMZKaeJ:localhost:8800m.room.member@anon-20191002_181700-236:localhost:8800:Q/ !DoiZErAdypBUMZKaeJ:localhost:8800m.room.join_rulesBQ? !DoiZErAdypBUMZKaeJ:localhost:8800m.room.history_visibility6Q' !DoiZErAdypBUMZKaeJ:localhost:8800m.room.create?Q9 !DoiZErAdypBUMZKaeJ:localhost:8800m.room.canonical_alias .+U V ~ - r <!.mKXe; ^ H I 2 t 2rP]Q@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 P]Q@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800 P]Q@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800P]Q@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800P]Q@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800P]Q@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800P]Q@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800@]1@anon-20191002_181700-642:localhost:8800!6:localhost:42455P]Q@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800P]Q@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800P]Q@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800P]Q@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800P]Q@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800P]Q@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800@]1@anon-20191002_181700-632:localhost:8800!5:localhost:42455P]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800P]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800P]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800P]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800P]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:8800P]Q@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800P]Q@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800P]Q@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800P]Q@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800P]Q@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800P]Q@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800 (P]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800P]Q@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800$P]Q@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800&P]Q@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800"P]Q@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800 P]Q@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800P]Q@anon-20191002_181700-634:localhost:8800!DuqHkpTfWCUblSrxQj:localhost:8800P]Q@anon-20191002_181700-633:localhost:8800!NanhNmCnVVpmZRJrTF:localhost:8800N[Q@anon-20191002_181700-62:localhost:8800!vJQYmOxOBLwFKzYkNj:localhost:8800P]Q@anon-20191002_181700-629:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800P]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800N[Q@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800N[Q@anon-20191002_181700-64:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800N[Q@anon-20191002_181700-63:localhost:8800!uJtKGXTNdEnCPNOGDx:localhost:8800QP]Q@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800P]Q@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800P]Q@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800 _ _gRQQaq $1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3179}{"auth_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}], ["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}]], "prev_events": [["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}]], "type": "m.room.join_rules", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043346277FsKPl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043346944, "hashes": {"sha256": "ezwIjHy4OfvyDD21M/8lOm3ct4g73HqUeoYV0yKuzns"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "guGPQ5H3u/DS2efRq9fo6cPh1uoXtWL365O9HqNBCWUnGjI0gvJ/BW3mUBD2TuCCnysDOBR/2gOi1S4/LQtRAA"}}, "unsigned": {"age_ts": 1570043346944}}+QQQay $1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3178}{"auth_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}]], "prev_events": [["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}]], "type": "m.room.power_levels", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"users": {"@anon-20191002_181700-619:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043346276qTXUF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043346264, "hashes": {"sha256": "2is3joZh/DGWOlDVDA9aF0i2EelLw2cRNMgeganGiqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oSmlUbIpJVPMs6L3jWavIbBGKOcTndBHpcmtrsTtleXKaWMSEzwxHcotwUZIsAbB0DBt+wW4DvgR9VomaJTyCA"}}, "unsigned": {"age_ts": 1570043346264}}PQQa) $1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3177}{"auth_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}]], "prev_events": [["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}]], "type": "m.room.member", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-619", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-619:localhost:8800", "event_id": "$1570043345275UDVPY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043345104, "hashes": {"sha256": "ppQ5fvjkUDtaIKr4f0fpueRF/EvUyO2VaMxSXtJbtus"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/HVOXe+u0QHoUHn+v+Wx7O9VN4sj1pPTti1hWP5ubTRaLC08rQa8Fw9O4+LdGycOrvTP2dIjWhp4VuqegYc1BA"}}, "unsigned": {"age_ts": 1570043345104}} 8l D `8D]c!E@anon-20191002_181700-627:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_goXBWVSSSTPW127.0.0.1Perl + Net::Async::HTTP/0.44mɓC]c!E@anon-20191002_181700-626:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAoGMFLXIUBWO127.0.0.1Perl + Net::Async::HTTP/0.44mσB]c!E@anon-20191002_181700-625:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQoLXKNSEODEI127.0.0.1Perl + Net::Async::HTTP/0.44mࠢA]c!E@anon-20191002_181700-624:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywoAATHUMCUIL127.0.0.1Perl + Net::Async::HTTP/0.44mك@]c!E@anon-20191002_181700-623:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6IwoVLGPPLCUUD127.0.0.1Perl + Net::Async::HTTP/0.44mx?]c!E@anon-20191002_181700-622:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygoIAPOATKCLU127.0.0.1Perl + Net::Async::HTTP/0.44mb߃>]c!E@anon-20191002_181700-620:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAoCTOWFYNHGQ127.0.0.1Perl + Net::Async::HTTP/0.44mO=]c!E@anon-20191002_181700-619:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQoAZJJCPXJVV127.0.0.1Perl + Net::Async::HTTP/0.44m5<]c!E@anon-20191002_181700-618:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwoKPRKVKAABY127.0.0.1Perl + Net::Async::HTTP/0.44m4;]c!E@anon-20191002_181700-617:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJiQWdeRX5ENjNkbTZSYVkKMDAyZnNpZ25hdHVyZSA8zIpRzRmJlGIqkTBx6GA19slBMTUSU8V8B5mBBrAhIAoDZQIEDJUET127.0.0.1Perl + Net::Async::HTTP/0.44m*  2VQQa) $1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3183}{"auth_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}]], "prev_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}]], "type": "m.room.member", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-620", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-620:localhost:8800", "event_id": "$1570043351281XHPOP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043351879, "hashes": {"sha256": "ny4eT64CTpRLO+A4eFQ6TE2dgU/Weg+CT1jiY/Wz1PI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1pHAxgfp+Z5a94pnFlGs1xAdm48MTuNnPNzM18zO9stYHZ9uKODeshJd974N0h9TnoaDlKgtTFGOBFoOEte8Aw"}}, "unsigned": {"age_ts": 1570043351879}}UQQaC $1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3182}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-620:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043350280ydSwy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043350917, "hashes": {"sha256": "5PSKoe903aryo+F74W9HY+4I0eshAYw9T32CWzpOKHM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kbYmYauGoV9Kqp5vif0y0lFR5s7I9ZDw6JQh0kwyrIoLi3pToqHCvDw0q7ZtMsDgETg1kdF4DBJEVq+mNfJwAQ"}}, "unsigned": {"age_ts": 1570043350917}}NT1Q3 $3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3181}{"room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-2:localhost:42455", "depth": 6, "origin": "localhost:42455", "hashes": {"sha256": "XFqQYiHSoG+JSe/BY2wPCxJ2ze8SZhifahsUUXJzyo8"}, "sender": "@__ANON__-2:localhost:42455", "auth_events": [["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}], ["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043346277FsKPl:localhost:8800", {"sha256": "REKBqRJ7UtPEABUNRAqeOT/Q5XRlb/9RaowRqF1fxto"}]], "event_id": "$3:localhost:42455", "content": {"membership": "join"}, "origin_server_ts": 1570043348861, "prev_events": [["$1570043347278WlNld:localhost:8800", {"sha256": "KeUy29W/Q49k8xbuj9SRTAWo2tDjX5MjlKgGuyiXi+U"}]], "signatures": {"localhost:42455": {"ed25519:1": "EfE/YEgJPYTtoQdPqmGGR+YYexpCMWSoy8frZFzCMMccU2DE2fSBkBfkrlDA/24bJeip9R7MEpGQQqMTL+ZQBA"}}, "unsigned": {}}xSQQa $1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800{"token_id": 600, "stream_ordering": 3180}{"auth_events": [["$1570043346276qTXUF:localhost:8800", {"sha256": "G4TwCTcVNLMaSPtttDPAL+s5HYZwbBKhggk9FP2bos0"}], ["$1570043344274cabjv:localhost:8800", {"sha256": "FM+G6h7WW5QGvgCJrhr1QITyco18vQyvHBXM1WiITq0"}], ["$1570043345275UDVPY:localhost:8800", {"sha256": "GOQVt6IE6YFhxPceiVyczDFOQlYBPFnDrUK7NLjFI7A"}]], "prev_events": [["$1570043346277FsKPl:localhost:8800", {"sha256": "REKBqRJ7UtPEABUNRAqeOT/Q5XRlb/9RaowRqF1fxto"}]], "type": "m.room.history_visibility", "room_id": "!pHoEnhQYhwlbJXqKQE:localhost:8800", "sender": "@anon-20191002_181700-619:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043347278WlNld:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043347668, "hashes": {"sha256": "0XmITxHRGHcCsG3zWZcJOv8bVRUz5M3vIYxiWsRdgn4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YqSidKLDjHNpziQkRvnC6CxNVxSRnFbL+mdA8iBNhakVR6gu24A2L9bftCdG3Mr7AIgZaSpi0zNncvJjOoMcDw"}}, "unsigned": {"age_ts": 1570043347668}} *#l1s6"  ' lR/ d -Q}=t7X! Q  = N r<Q3 !wLitJYvgvNJzanSIvO:localhost:8800m.room.power_levelsl^Q']!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-432:localhost:8800^Q']!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-431:localhost:8800BQ? !whuymJoLfUdkFdxoyE:localhost:8800m.room.history_visibility:Q/ !whuymJoLfUdkFdxoyE:localhost:8800m.room.join_rules<Q3 !whuymJoLfUdkFdxoyE:localhost:8800m.room.power_levels^Q']!whuymJoLfUdkFdxoyE:localhost:8800m.room.member@anon-20191002_181700-430:localhost:88006Q' !whuymJoLfUdkFdxoyE:localhost:8800m.room.create  ^Q']!wLitJYvgvNJzanSIvO:localhost:8800m.room.member@anon-20191002_181700-284:localhost:8800k:Q/ !wLitJYvgvNJzanSIvO:localhost:8800m.room.join_rulesmBQ? !wLitJYvgvNJzanSIvO:localhost:8800m.room.history_visibilityn6Q' !wLitJYvgvNJzanSIvO:localhost:8800m.room.createj<Q3 !wIhMbfQzYbJobPdwyi:localhost:8800m.room.power_levels:^Q']!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-108:localhost:8800=^Q']!wIhMbfQzYbJobPdwyi:localhost:8800m.room.member@anon-20191002_181700-107:localhost:88009:Q/ !wIhMbfQzYbJobPdwyi:localhost:8800m.room.join_rules;BQ? !wIhMbfQzYbJobPdwyi:localhost:8800m.room.history_visibility<6Q' !wIhMbfQzYbJobPdwyi:localhost:8800m.room.create8<Q3 !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels ^Q']!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800 :Q/ !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rules BQ? !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibility 6Q' !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.create <Q3 !wsvXTJXouVkEZcCFsD:localhost:8800m.room.power_levels^Q']!wsvXTJXouVkEZcCFsD:localhost:8800m.room.member@anon-20191002_181700-237:localhost:8800:Q/ !wsvXTJXouVkEZcCFsD:localhost:8800m.room.join_rulesBQ? !wsvXTJXouVkEZcCFsD:localhost:8800m.room.history_visibility]Q'[!wnriPzXkIMmdTNoJKU:localhost:8800m.room.member@anon-20191002_181700-75:localhost:8800:Q/ !wnriPzXkIMmdTNoJKU:localhost:8800m.room.join_rulesBQ? !wnriPzXkIMmdTNoJKU:localhost:8800m.room.history_visibility6Q' !wnriPzXkIMmdTNoJKU:localhost:8800m.room.create?Q9 !wnriPzXkIMmdTNoJKU:localhost:8800m.room.canonical_aliasEQ))!wnriPzXkIMmdTNoJKU:localhost:8800m.room.aliaseslocalhost:8800<Q3 !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.power_levels^Q']!wUuodvgsmAJqKJUBCQ:localhost:8800m.room.member@anon-20191002_181700-173:localhost:8800:Q/ !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.join_rulesBQ? !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.history_visibility N6Q' !wUuodvgsmAJqKJUBCQ:localhost:8800m.room.create6Q' !wsvXTJXouVkEZcCFsD:localhost:8800m.room.create?Q9 !wsvXTJXouVkEZcCFsD:localhost:8800m.room.canonical_aliasEQ))!wsvXTJXouVkEZcCFsD:localhost:8800m.room.aliaseslocalhost:8800<Q3 !wnriPzXkIMmdTNoJKU:localhost:8800m.room.power_levels b@  n * :Jr4\Q'Q ]$1570043372296yAiBq:localhost:8800m.room.member!FZOLkaLbBpaibrbHZx:localhost:8800m?mॢ@anon-20191002_181700-625:localhost:8800 Q'Q  ]$1570043371295coDXo:localhost:8800m.room.create!FZOLkaLbBpaibrbHZx:localhost:8800m]m@anon-20191002_181700-625:localhost:8800"Q?Q ]$1570043369294rquKy:localhost:8800m.room.history_visibility!QxqzQoEBIZhmzHIGrl:localhost:8800mm@anon-20191002_181700-624:localhost:8800Q/Q ]$1570043369293ssSMv:localhost:8800m.room.join_rules!QxqzQoEBIZhmzHIGrl:localhost:8800mm@anon-20191002_181700-624:localhost:8800Q3Q ]$1570043368292FAoRb:localhost:8800m.room.power_levels!QxqzQoEBIZhmzHIGrl:localhost:8800m?m@anon-20191002_181700-624:localhost:8800~Q'Q ]$1570043367291AEdax:localhost:8800m.room.member!QxqzQoEBIZhmzHIGrl:localhost:8800mm)@anon-20191002_181700-624:localhost:8800} Q'Q  ]$1570043366290YSCqz:localhost:8800m.room.create!QxqzQoEBIZhmzHIGrl:localhost:8800m5m@anon-20191002_181700-624:localhost:8800"|Q?Q ]$1570043364289XIEhE:localhost:8800m.room.history_visibility!fDISaqNBhlOwherxSt:localhost:8800mmc@anon-20191002_181700-623:localhost:8800{Q/Q ]$1570043364288SCpzq:localhost:8800m.room.join_rules!fDISaqNBhlOwherxSt:localhost:8800mm4@anon-20191002_181700-623:localhost:8800zQ3Q ]$1570043363287eSyun:localhost:8800m.room.power_levels!fDISaqNBhlOwherxSt:localhost:8800mmq@anon-20191002_181700-623:localhost:8800yQ'Q ]$1570043362286KwXMK:localhost:8800m.room.member!fDISaqNBhlOwherxSt:localhost:8800m|m}9@anon-20191002_181700-623:localhost:8800x Q'Q  ]$1570043361285xsPbY:localhost:8800m.room.create!fDISaqNBhlOwherxSt:localhost:8800mxmx@anon-20191002_181700-623:localhost:8800,we?Q ]$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQm.room.history_visibility!yAfsSyqpJWFnkXQFJL:localhost:8800mp mr@anon-20191002_181700-622:localhost:8800$ve/Q ]$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bcm.room.join_rules!yAfsSyqpJWFnkXQFJL:localhost:8800mlmm@anon-20191002_181700-622:localhost:8800&ue3Q ]$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fom.room.power_levels!yAfsSyqpJWFnkXQFJL:localhost:8800mi%mj@anon-20191002_181700-622:localhost:8800 te'Q ]$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUm.room.member!yAfsSyqpJWFnkXQFJL:localhost:8800mfmg>@anon-20191002_181700-622:localhost:8800s e'Q  ]$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmom.room.create!yAfsSyqpJWFnkXQFJL:localhost:8800mc>mc@anon-20191002_181700-622:localhost:8800"rQ?Q ]$1570043354284IVfTL:localhost:8800m.room.history_visibility!AYFqrmxwClFQlcTTYq:localhost:8800m[m]@anon-20191002_181700-620:localhost:8800qQ/Q ]$1570043353283ubEdk:localhost:8800m.room.join_rules!AYFqrmxwClFQlcTTYq:localhost:8800mYBmY@anon-20191002_181700-620:localhost:8800pQ3Q ]$1570043352282iTcSU:localhost:8800m.room.power_levels!AYFqrmxwClFQlcTTYq:localhost:8800mVmW2@anon-20191002_181700-620:localhost:8800oQ'Q ]$1570043351281XHPOP:localhost:8800m.room.member!AYFqrmxwClFQlcTTYq:localhost:8800mSGmS@anon-20191002_181700-620:localhost:8800n Q'Q  ]$1570043350280ydSwy:localhost:8800m.room.create!AYFqrmxwClFQlcTTYq:localhost:8800mOmO@anon-20191002_181700-620:localhost:8800ym1'Q C$3:localhost:42455m.room.member!pHoEnhQYhwlbJXqKQE:localhost:8800mG}mG@__ANON__-2:localhost:42455"lQ?Q ]$1570043347278WlNld:localhost:8800m.room.history_visibility!pHoEnhQYhwlbJXqKQE:localhost:8800mBmDc@anon-20191002_181700-619:localhost:8800kQ/Q ]$1570043346277FsKPl:localhost:8800m.room.join_rules!pHoEnhQYhwlbJXqKQE:localhost:8800m@m@w@anon-20191002_181700-619:localhost:8800 #&l 5 [  : 8642Dj#IojXQQQ$1570043368292FAoRb:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jWQQQ$1570043368292FAoRb:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jVQQQ$1570043367291AEdax:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jUQQQ$1570043364289XIEhE:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jTQQQ$1570043364289XIEhE:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jSQQQ$1570043364289XIEhE:localhost:8800$1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jRQQQ$1570043364288SCpzq:localhost:8800$1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jQQQQ$1570043364288SCpzq:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jPQQQ$1570043364288SCpzq:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jOQQQ$1570043363287eSyun:localhost:8800$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jNQQQ$1570043363287eSyun:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800jMQQQ$1570043362286KwXMK:localhost:8800$1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800~LeeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800~KeeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800~JeeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800~IeeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800~HeeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800~GeeQ$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800~FeeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800~EeeQ$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800~DeeQ$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800jCQQQ$1570043354284IVfTL:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800jBQQQ$1570043354284IVfTL:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800jAQQQ$1570043354284IVfTL:localhost:8800$1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j@QQQ$1570043353283ubEdk:localhost:8800$1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j?QQQ$1570043353283ubEdk:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j>QQQ$1570043353283ubEdk:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j=QQQ$1570043352282iTcSU:localhost:8800$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j<QQQ$1570043352282iTcSU:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800j;QQQ$1570043351281XHPOP:localhost:8800$1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800Z:1QQ$3:localhost:42455$1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800Z91QQ$3:localhost:42455$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800Z81QQ$3:localhost:42455$1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j7QQQ$1570043347278WlNld:localhost:8800$1570043345275UDVPY:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800j6QQQ$1570043347278WlNld:localhost:8800$1570043344274cabjv:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800 -_  c ]f ^V X| Z  Y  )~(i +}(  \ \ TeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800TeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800 TeQ$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A!dvZnfJonDkxlrrDXUk:localhost:8800TeQ$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A!cidyuyekVzJHHvyomb:localhost:8800SeQ$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0!aWvVRVaDflYyyGTOdD:localhost:8800TTeQ$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK0!QyLUggxrTnULUAOseq:localhost:8800TeQ$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4!wLitJYvgvNJzanSIvO:localhost:8800TeQ$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo!BGbJEmJRVJGlZFQbZe:localhost:8800TeQ$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk!BckZfhQgrcyiMhEAAJ:localhost:8800TeQ$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ!KeqmSjifajNKxtgqhj:localhost:8800TeQ$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI!mBQpGaIiadEuKBXfOw:localhost:8800zSeQ$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA!aBCvSXjtZUEPlPGHvY:localhost:8800[TeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800tBAQ$lolredact:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800BSeQ$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE!cosGKKhHvKaVukBCic:localhost:8800SeQ$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw!loalEsWaTYwrVUNJLr:localhost:8800SeQ$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc!oXKJArsPmtgaYANBrg:localhost:88003TeQ$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI!FAYqpziHeVZugCGaij:localhost:8800TeQ$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y!uSBqTezaFcMnlowsEf:localhost:8800 SeQ$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI!jfshVGNDxkvqPxFxWB:localhost:8800SeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4!eySSVuCclRpBDgwKIU:localhost:88005SeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg!GiSxJsKZhQVHBkrVPn:localhost:8800SSeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8!itKDOCtoMkFUETDtle:localhost:8800aSeQ$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4!qxqNYKdtgvOQdhmgsj:localhost:8800`TeQ$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0!nxLxsxzliamzflrEBs:localhost:8800 SeQ$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY!odAvowLhHJcmkKlxFk:localhost:8800TeQ$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ!hFwigdYZkwYNSwelRH:localhost:8800TeQ$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ!aVxOoyiLLnxmzgLJat:localhost:8800TeQ$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU!fdEymmlcUvjgshvVyl:localhost:8800TeQ$pvHVIUrsknPW5-985Oxj5f-KE7JqvrTOzJY3gKG4g9Q!rWmvvGBgmFMdVvcfPk:localhost:8800TeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800SeQ$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJY!scyFsXcUIJiLIMwWMY:localhost:8800TeQ$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk!csWEXfVEVxdviNvgAd:localhost:8800nTeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ!aLxrqpqLkbzyIxGgpk:localhost:8800TeQ$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ!atnRTMliktaVUhMVID:localhost:8800TeQ$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm8!IlGJpjzrvvAFuwTAgo:localhost:8800TeQ$p6us8g9Ij-lz33R4ojrgpQVowD-J7SFhR1J1r9WaICE!rpVYLTJGcFNdGzFzXj:localhost:8800TeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY!ZYKvjplZRyIWvzkRyM:localhost:8800TeQ$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE!vyCFfUTJKYJSDadFhT:localhost:8800*TeQ$ojrXG4JWq86k0zYtP7TIRpB9nVR5Hj7sytLqdhWhJOg!wAyboOFgsOPwkmgMAI:localhost:8800SeQ$nRFJZ5amG3WvAg5MilBbu-LSCF0L1Cd0d1ZhBFhxpFY!xwoIOPTGmJIlTXakxC:localhost:8800 TeQ$mypK4oI6mTz13WyxVdhUTBvXMByqmw2rcbN5z9jy_zo!zNBpypJDRMlBdOcLlW:localhost:8800TeQ$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho!KeBlWUQiLYUoILKkTB:localhost:8800TeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800 TeQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800 ZW/b:sK$\4 Ezb;sL$ ^ 7 * p H ! ZR 3  n F  m  W / Bj'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800O&Q!fcdNYFWFyxmdpKAknc:localhost:8800r'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!jlGSdNttccYxjfLkwW:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800V&Q!ifQxHmNAcSSGHVMjfi:localhost:8800|'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800T'Q!iKezIvJyjkNqKayFju:localhost:8800*'Q!hrhDJbmXvXBizKoiiK:localhost:8800U'Q!hnQOBexFYpvJntEChZ:localhost:8800&Q!hgjYwwwjWJNgwrzOto:localhost:8800h'Q!hegUPDZCEEmBhsNJJR:localhost:8800J'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800&Q!hSzBsirdPWHtVjagXn:localhost:8800n'Q!hGsPmWXboxZZtOlsxY:localhost:8800S'Q!hFwigdYZkwYNSwelRH:localhost:8800E'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800K'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!itfjLXhEaORJLkbfVS:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!jRuDexjFzIDOKbwDJQ:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!qzrZzAieCgGSbpKOQR:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800z'Q!qInWQPtNQfBFoVzUtP:localhost:8800m&Q!qxqNYKdtgvOQdhmgsj:localhost:8800T&Q!quaZwrGnzbNWhwAOYB:localhost:8800L'Q!qjijQBfMwsCPTVgKPm:localhost:8800d'Q!qSUSLLWjDxcGibUZdT:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800H'Q!pduebXnTyxQWVxEICp:localhost:8800@'Q!paDmNxsOZIKyApbxXs:localhost:8800D'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800''Q!pHoEnhQYhwlbJXqKQE:localhost:8800g&Q!oznZaCpONuNDaLarkI:localhost:8800f'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:88002'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800A&Q!nteAxExBGJfaGIpuCx:localhost:8800V'Q!nfxDdcgDfooxyiAzaB:localhost:8800\'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&&Q!msMfSdLIAvklSSAnci:localhost:8800:'Q!mogJVPxghalmKbblUq:localhost:88000&Q!mfzIRinBAGGrZvQAuI:localhost:8800m'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800.&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800D&Q!lAGTcYIuMBXsVRGCOe:localhost:8800X&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800c'Q!kOmCTyiizHqfCJdhlR:localhost:8800('Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jDKAOtmeAGbYTpwyEW:localhost:8800&Q!itKDOCtoMkFUETDtle:localhost:8800U O  | J  P  K V2 %   ] +vdQ W%]p+%d2j8>Dj 8pWjj_gnu1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980u1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNoko1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4sTAvepqxgx8a9oT5nSF9jK6KdwcAipbp_Y7bS4SWWo d1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkQ1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM?1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI81e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc71e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo21e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s 1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zogd1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15Aumw1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs1e$4kDi2lysMyDO5D0rm1LV3wN6SZvyFOw0xfXLEPentlA1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezU 1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0t0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvo`1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA 1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4UYAQfT9WS6eN7VhjkqnHQCiB1HWAk2HPDcEnlp2J_s 1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA1e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM (1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Q4PYlkoKcrejsRn3ccLoLh-AlSsdReKIpwA6dESDyU1e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU1e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is ]1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90 <1e$4L4xG61_U2fciIP977WsM8FG1ENbgytOK5QYDDsBT-E 1e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U3$49:localhost:42455 83$46:localhost:42455 73$45:localhost:42455 63$48:localhost:42455 53$44:localhost:42455 43$43:localhost:42455 33$40:localhost:42455 ,1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Av1e$4ENbv2Icmkn6Ssyx6KckXft8xLpZj0chiee8Iy1o-bY 1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEk 1e$499W4hF3486zYZKK0Xz2Qw7L06boqJqEzWMAqxFkXdE1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0V1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUW1e$430DlyjIjNh41QdJSseWUdj_eHJHp5IzEhPEgJh04FML1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o+1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhcB1e$3ylbHe6wYfNMjSoKY-L-tMYf0U7F_x8J-FOj7cCAVOwt1e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM[1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEx1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6MgV1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74c1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso 1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk3$52:localhost:42455 @3$51:localhost:42455 ?3$50:localhost:42455 >1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760a1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsZ1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4ta8hUDEZSiIKfrF9xdiJPlSGmOdNHlj9dCFeXLXZ1U1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4sXqS3YbrEgVSUk4Bv5WjlU-kEF11Ib76hZF9-kpTHY UH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8ph@xP(@('Q$1570043479329kvsXb:localhost:8800'Q$1570043478328DMkRS:localhost:8800'Q$1570043478328DMkRS:localhost:8800'Q$1570043478328DMkRS:localhost:8800'Q$1570043477327AgpMM:localhost:8800'Q$1570043477327AgpMM:localhost:8800'Q$1570043477326hyTqo:localhost:8800'Q$1570043468324DLhaB:localhost:8800'Q$1570043468324DLhaB:localhost:8800'Q$1570043429322ZfcNc:localhost:8800C'Q$1570043429322ZfcNc:localhost:8800B'Q$1570043558384QrKsp:localhost:8800'Q$1570043557383IxQaJ:localhost:8800'Q$1570043550380LNzMz:localhost:8800'Q$1570043550380LNzMz:localhost:8800'Q$1570043550380LNzMz:localhost:8800'Q$1570043549379wtMED:localhost:8800'Q$1570043549379wtMED:localhost:8800'Q$1570043549379wtMED:localhost:8800'Q$1570043548378IxCfM:localhost:8800'Q$1570043548378IxCfM:localhost:8800'Q$1570043548378IxCfM:localhost:8800'Q$1570043547377kWWAW:localhost:8800'Q$1570043547377kWWAW:localhost:8800'Q$1570043546376YfkfL:localhost:8800'Q$1570043542373yGTqH:localhost:8800'Q$1570043542373yGTqH:localhost:8800'Q$1570043542373yGTqH:localhost:8800'Q$1570043541372ZeTYJ:localhost:8800'Q$1570043541372ZeTYJ:localhost:8800'Q$1570043541372ZeTYJ:localhost:8800'Q$1570043540371avDlf:localhost:8800'Q$1570043540371avDlf:localhost:8800'Q$1570043539370xCBJr:localhost:8800'Q$1570043536368agmuM:localhost:8800'Q$1570043536368agmuM:localhost:8800'Q$1570043536368agmuM:localhost:8800'Q$1570043536367lvGLr:localhost:8800'Q$1570043536367lvGLr:localhost:8800'Q$1570043536367lvGLr:localhost:8800'Q$1570043535366hhblx:localhost:8800'Q$1570043535366hhblx:localhost:8800'Q$1570043534365WVAkx:localhost:8800'Q$1570043530362jRUtV:localhost:8800'Q$1570043530362jRUtV:localhost:8800'Q$1570043530362jRUtV:localhost:8800'Q$1570043529361Oytod:localhost:8800'Q$1570043529361Oytod:localhost:8800'Q$1570043529361Oytod:localhost:8800'Q$1570043528360cetnZ:localhost:8800'Q$1570043528360cetnZ:localhost:8800'Q$1570043527359ScxWW:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043525357VEfrE:localhost:8800'Q$1570043524356NlySy:localhost:8800'Q$1570043524356NlySy:localhost:8800'Q$1570043524356NlySy:localhost:8800'Q$1570043523355SbJjm:localhost:8800'Q$1570043523355SbJjm:localhost:8800'Q$1570043522354IAAap:localhost:8800'Q$1570043518351Popej:localhost:8800'Q$1570043518351Popej:localhost:8800'Q$1570043518351Popej:localhost:8800'Q$1570043517350ncbDd:localhost:8800'Q$1570043517350ncbDd:localhost:8800'Q$1570043517350ncbDd:localhost:8800'Q$1570043517349uVTMj:localhost:8800'Q$1570043517349uVTMj:localhost:8800'Q$1570043516348vThZG:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043506346EEQDj:localhost:8800'Q$1570043504345DCjlJ:localhost:8800'Q$1570043504345DCjlJ:localhost:8800'Q$1570043504345DCjlJ:localhost:8800'Q$1570043503344dJwGF:localhost:8800'Q$1570043503344dJwGF:localhost:8800'Q$1570043503344dJwGF:localhost:8800'Q$1570043503343snlnn:localhost:8800'Q$1570043503343snlnn:localhost:8800'Q$1570043502342mVJmO:localhost:8800'Q$1570043479329kvsXb:localhost:8800'Q$1570043479329kvsXb:localhost:8800 ^$< Z x$ | ) { \z 'wt5d%uu ^ ^nO]@anon-20191002_181700-605:localhost:8800@anon-20191002_181700-605:localhost:8800 anon-20191002_181700-605nc]@anon-20191002_181700-633:localhost:8800@anon-20191002_181700-633:localhost:8800 anon-20191002_181700-633nb]@anon-20191002_181700-632:localhost:8800@anon-20191002_181700-632:localhost:8800 anon-20191002_181700-632r@pM j vxG  x | r \ ? " Y  J 8 & ' D P !_-f 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA `1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw `1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA _1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM V1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Ms1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz41e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAa1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w 01e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU]1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQO1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEH1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMA1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQY1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU}1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD0 d1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc3$94:localhost:42455 3$90:localhost:42455 d1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 *;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA n9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 9$95_m1:localhost:42455 1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUr1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYB1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IB1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx451e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YH1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 41e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg Y1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMc1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM811e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8l1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kN1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 41e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QW1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc 5  fxYQQa $1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3186}{"auth_events": [["$1570043352282iTcSU:localhost:8800", {"sha256": "K61uD2xfbP4+J90OZgaWtzxJX7y6ksAFG9+xKs0MFOk"}], ["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}], ["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}]], "prev_events": [["$1570043353283ubEdk:localhost:8800", {"sha256": "6ht0Pp0n54hTHmCapSAOlyOLDdGI16zsL3FaxXIFvHE"}]], "type": "m.room.history_visibility", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043354284IVfTL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043354035, "hashes": {"sha256": "V8S3J+NbliZp6aPpUc7UWI23nyPA+G6gjHo4k1aeds8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i9R3CxcWIbpWX4uNaZbPrspJg9TcX1dp5brBlEmZPdQz/6y48N+2KSI/JuwdRWOp9eDZZXC79t/1eH348oeNAg"}}, "unsigned": {"age_ts": 1570043354035}}gXQQaq $1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3185}{"auth_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}], ["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}], ["$1570043352282iTcSU:localhost:8800", {"sha256": "K61uD2xfbP4+J90OZgaWtzxJX7y6ksAFG9+xKs0MFOk"}]], "prev_events": [["$1570043352282iTcSU:localhost:8800", {"sha256": "K61uD2xfbP4+J90OZgaWtzxJX7y6ksAFG9+xKs0MFOk"}]], "type": "m.room.join_rules", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043353283ubEdk:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043353410, "hashes": {"sha256": "vLnaFNvfxi4DhP+vEaHl/NvPZ2hchQwqGSge7ZglVdY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fQd4DFBuTk6IHNETD9haYZEngcxtKBWoPPstLqp55+ZPSHW87NUFt69qrDpEbJsHnHEL2etkeWnDObgJHwPuCg"}}, "unsigned": {"age_ts": 1570043353410}}+WQQay $1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800{"token_id": 601, "stream_ordering": 3184}{"auth_events": [["$1570043350280ydSwy:localhost:8800", {"sha256": "oWXWvqBayyT+qk5jK66ARTzZ9qT/J699svLsECZfoL0"}], ["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}]], "prev_events": [["$1570043351281XHPOP:localhost:8800", {"sha256": "SQi3dZ/YDH9I75lAgIJ+RvG7pfK8OXhBWXksb48LtSI"}]], "type": "m.room.power_levels", "room_id": "!AYFqrmxwClFQlcTTYq:localhost:8800", "sender": "@anon-20191002_181700-620:localhost:8800", "content": {"users": {"@anon-20191002_181700-620:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043352282iTcSU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043352770, "hashes": {"sha256": "7kRFyzwcRHXwYKz2T87EamEMMY1efblBVyy+jM4clY0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V55vCaqrbKkw48b8rOH4hU4S1q95N6i1cLF0QtwRj7fZ396NmbDTglJ5gI0FjnaIxQQWT1AXF5f+KGJ6LM+NBg"}}, "unsigned": {"age_ts": 1570043352770}} Mj8p> v D  | J  P  W % ] +qU#i7o= uC{IOV$\*1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQ 1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz41e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Ms1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUr1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYB1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw `1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAa1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w 01e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IB1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kN1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 41e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QW1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 3$94:localhost:42455 ;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA ^1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx451e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA n1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YH1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 *0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU]1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc 51e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E 41e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM]1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8l1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQO1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEH1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8+1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMA1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg Y1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQY1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU}1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM V1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA _1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0  pI>  vX E  } K   R ^ X & _ -f4l:rj@xF~L&R ,1e$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts1e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego 1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE c1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 T1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 31e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY #1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$C_V7Ct2Gixz3WXszySnVsaQPuMa-8CUdBcQoPBbGico 1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 1e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c|1e$CiDl6XDbNQDnogwbB7C1MP6lk84OPUZ6Z2vfbAzYNE01e$Cg1Xigpk80iwm5mlEIjRq3_tL5gQ-XIw82LYz7NYHLI1e$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ1e$CdbfwRjg9Io-MCZYdah8HFn1Ys_NprmQt3elayoKEa81e$CbmmzfCV1ZjD9wz_2fFtZPxmmExHKgZcoM7yCf3_DTEc1e$CacyFcNDjYmtxPZ-c5ZaFXFSvBxOMrXrCt6CsZW5loY1e$CYgiTAmAFdWmcSAxw2uBnsXqrCKhyeYDrkCnP_Huf48K1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQo1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CW3rsJ1dgN7-lK5FtmxrJvKTPlWd8gYMZCc-J74FmCc1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4m1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig1e$CSMJjW5r3vKoQhMjLA_Zjv6Pg1x8Jw57Jno3sdgM6GM1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0_1e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E~1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo ?1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw/1e$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw *1e$CF4brsB3RGwqomo5xMvsa81XYdWvfpo4NwC-ogaHyIw1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4?1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr81e$C4u6BPb4gJkCRnJnqvAXZt0zy3wyRtBCGN4FM6D6Ox41e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0A1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV0W1e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wL1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjod1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk00e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq901e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_PcV1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 -1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7If1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U+1e$BpbJkgiaXLQUxbhiYimWSZ8H767JJpSYdkUOHY-sD2A)1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU`1e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ0e$Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEH1e$BRGG2cXfvZpYoJvA5u7-ZJToIzbpDtivW6hxJyIj0Aw 1e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U 81e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRo`1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2QI1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgs1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs@1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc1e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs .1e$CpJRJv71vZ4ogR0cRVmc_aSB2HsRfpQSLJqlNLtWOQI1e$Cm5IVEQ3g7IN63p69Pp7Ouo9dLH-iafNIgOJVI7mOLQ G8i(<G u  $ f  a\G#B 1}QQ']$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800joinW|QQ' $1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.create]eQQ3 $1570043352282iTcSU:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.power_levelsdQQ']$1570043351281XHPOP:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800joinWcQQ' $1570043350280ydSwy:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.createfb1Q'C$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.member@__ANON__-2:localhost:42455joincaQQ? $1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.history_visibility[`QQ/ $1570043346277FsKPl:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.join_rules]_QQ3 $1570043346276qTXUF:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800m.room.power_levelsc{QQ? $1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility[zQQ/ $1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules]yQQ3 $1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levelsxQQ']$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800joinWwQQ' $1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800m.room.createcvQQ? $1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility[uQQ/ $1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules]tQQ3 $1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levelssQQ']$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800joinWrQQ' $1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.createcqQQ? $1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.history_visibility[pQQ/ $1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.join_rules]oQQ3 $1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.power_levelsnQQ']$1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.member@anon-20191002_181700-623:localhost:8800joinWmQQ' $1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800m.room.createmleQ? $o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.history_visibilityekeQ/ $SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.join_rulesgjeQ3 $t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.power_levels ieQ']$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.member@anon-20191002_181700-622:localhost:8800joinaheQ' $FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800m.room.createcgQQ? $1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.history_visibility[fQQ/ $1570043353283ubEdk:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800m.room.join_rules ZT="|= D' D- ` -  y F )  Q 4  m V  f 3 _,kH%ZQ:}fKN7 u/  m.room.join_rules '  m.room.create "?  km.room.history_visibility /  jm.room.join_rules 3  im.room.power_levels >'] hm.room.member@anon-20191002_181700-635:localhost:8800 '  gm.room.create 3  fm.room.power_levels >'] fm.room.member@anon-20191002_181700-634:localhost:8800 2'E fm.room.member@__ANON__-12:localhost:42455 /  fm.room.join_rules '  fm.room.create 2'E em.room.member@__ANON__-12:localhost:42455 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create /  m.room.join_rules 2'E m.room.member@__ANON__-20:localhost:42455 '  m.room.create >'] m.room.member@anon-20191002_181700-642:localhost:8800 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-19:localhost:42455 2'E m.room.member@__ANON__-19:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-641:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-18:localhost:42455 2'E m.room.member@__ANON__-18:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-640:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-17:localhost:42455 2'E m.room.member@__ANON__-17:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-639:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-16:localhost:42455 2'E m.room.member@__ANON__-16:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-638:localhost:8800 '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-15:localhost:42455 /  m.room.join_rules '  m.room.create 3  ~m.room.power_levels 2'E ~m.room.member@__ANON__-15:localhost:42455 /  ~m.room.join_rules '  ~m.room.create 3  }m.room.power_levels 2'E }m.room.member@__ANON__-15:localhost:42455 /  }m.room.join_rules '  }m.room.create 2'E |m.room.member@__ANON__-15:localhost:42455 2'E {m.room.member@__ANON__-15:localhost:42455 "?  zm.room.history_visibility /  ym.room.join_rules 3  xm.room.power_levels >'] wm.room.member@anon-20191002_181700-637:localhost:8800 '  vm.room.create >'] um.room.member@anon-20191002_181700-636:localhost:8800 2'E tm.room.member@__ANON__-14:localhost:42455 2'E sm.room.member@__ANON__-14:localhost:42455 "?  rm.room.history_visibility /  qm.room.join_rules 3  pm.room.power_levels >'] om.room.member@anon-20191002_181700-636:localhost:8800 '  nm.room.create 2'E mm.room.member@__ANON__-13:localhost:42455 2'E lm.room.member@__ANON__-13:localhost:42455   *t]eQau$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3190}{"auth_events": ["$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo", "$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo", "$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "prev_events": ["$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo"], "type": "m.room.join_rules", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043358394, "hashes": {"sha256": "uJyReUvXyMh5RUBbTqGtUJ80uPAuyyHi9HJC3iojO4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "li/GYvHHiqwUsRADnIy1LORP1Dp4xNKeG2nRW/7nSZWc383J2zlaMykSohi4NPiqx/yOzpMVx5ziyvWuY66TCg"}}, "unsigned": {"age_ts": 1570043358394}}k\eQac$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3189}{"auth_events": ["$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo", "$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "prev_events": ["$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "type": "m.room.power_levels", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"users": {"@anon-20191002_181700-622:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043357477, "hashes": {"sha256": "YUfJ+xFRD0AF8FlZugKI7bnm0h4TCrZRubjCdXjnTFc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LpGJ68nz0j9S2hLT+BGrGnSCgy+SSoHfdqcH7yI+kNsw04HdsKwS+asTORKs6LU9yrkgk2CJGoE6mAfoXsebCw"}}, "unsigned": {"age_ts": 1570043357477}}v[eQay$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3188}{"auth_events": ["$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo"], "prev_events": ["$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo"], "type": "m.room.member", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-622", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-622:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043356879, "hashes": {"sha256": "u8y4LYWYjcNT1ejY11uohqKl7zbh6yc05IRyiTM6aPw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qJflKUdvD9nsSQuuHpbHwJdwxLpaAonBlY588au6mQfIG8jkkiguvO6tLs4UC+x+e4DPNZpkQXu2vhe7sJUJCQ"}}, "unsigned": {"age_ts": 1570043356879}}iZeQa_$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3187}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-622:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043355966, "hashes": {"sha256": "fFrbxHzZbKiepWqk4oVPBRJWvcsNzG5HNz6wQk5WHgA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lTgb1hM4WZdJ7eMWLY4+4YQYCKD3QkWoq8rxaMm1MJ1p6sJE0I2kqnvXtg5ctyDKpfWUkKC8S3FEiPwhpI26Bw"}}, "unsigned": {"age_ts": 1570043355966}} 1Ra z - F _  x + D]v)Bb ]XSNTeQe e!DuqHkpTfWCUblSrxQj:localhost:8800$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0TdQe d!DuqHkpTfWCUblSrxQj:localhost:8800$dn1y4CrHc3KnuswK2MfWm-y1ZzhEbYUpEHOg1xa1TfcTcQe c!DuqHkpTfWCUblSrxQj:localhost:8800$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwTbQe b!DuqHkpTfWCUblSrxQj:localhost:8800$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMTaQe a!DuqHkpTfWCUblSrxQj:localhost:8800$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgT`Qe `!DuqHkpTfWCUblSrxQj:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgT_Qe _!DuqHkpTfWCUblSrxQj:localhost:8800$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIT^Qe ^!NanhNmCnVVpmZRJrTF:localhost:8800$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgT]Qe ]!NanhNmCnVVpmZRJrTF:localhost:8800$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-ET\Qe \!NanhNmCnVVpmZRJrTF:localhost:8800$f-vRiHWufvykmGcu-CUS7JZLbFsdc15lpUVUlSVWlm4T[Qe [!NanhNmCnVVpmZRJrTF:localhost:8800$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6QTZQe Z!NanhNmCnVVpmZRJrTF:localhost:8800$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQTYQe Y!NanhNmCnVVpmZRJrTF:localhost:8800$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuATXQe X!NanhNmCnVVpmZRJrTF:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3GtkTWQe W!NanhNmCnVVpmZRJrTF:localhost:8800$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo:V1Q V!5:localhost:42455$1570043391316OJaBO:localhost:8800IUQO U!sqkBzbHHJOTNWwynqV:localhost:8800$157004338812XhwjX:localhost:8829JTQQ T!sqkBzbHHJOTNWwynqV:localhost:8800$1570043388313VFpux:localhost:8800JSQQ S!sqkBzbHHJOTNWwynqV:localhost:8800$1570043388312YDkJu:localhost:8800JRQQ R!sqkBzbHHJOTNWwynqV:localhost:8800$1570043387311DGzYi:localhost:8800JQQQ Q!sqkBzbHHJOTNWwynqV:localhost:8800$1570043386310bGMNl:localhost:8800JPQQ P!sqkBzbHHJOTNWwynqV:localhost:8800$1570043385309imdbl:localhost:8800JOQQ O!sqkBzbHHJOTNWwynqV:localhost:8800$1570043384308gPogh:localhost:8800JNQQ N!sqkBzbHHJOTNWwynqV:localhost:8800$1570043383307bhuDV:localhost:8800JMQQ M!sqkBzbHHJOTNWwynqV:localhost:8800$1570043382306WhWIU:localhost:8800JLQQ L!qInWQPtNQfBFoVzUtP:localhost:8800$1570043381305ccgXv:localhost:8800JKQQ K!qInWQPtNQfBFoVzUtP:localhost:8800$1570043380304caenp:localhost:8800JJQQ J!qInWQPtNQfBFoVzUtP:localhost:8800$1570043379303bCgUn:localhost:8800JIQQ I!qInWQPtNQfBFoVzUtP:localhost:8800$1570043378302mKBGD:localhost:8800JHQQ H!qInWQPtNQfBFoVzUtP:localhost:8800$1570043377301OraEa:localhost:8800JGQQ G!qInWQPtNQfBFoVzUtP:localhost:8800$1570043377300CLPUi:localhost:8800JFQQ F!FZOLkaLbBpaibrbHZx:localhost:8800$1570043375299fbyXJ:localhost:8800JEQQ E!FZOLkaLbBpaibrbHZx:localhost:8800$1570043374298UIMFg:localhost:8800JDQQ D!FZOLkaLbBpaibrbHZx:localhost:8800$1570043373297SOjrf:localhost:8800JCQQ C!FZOLkaLbBpaibrbHZx:localhost:8800$1570043372296yAiBq:localhost:8800JBQQ B!FZOLkaLbBpaibrbHZx:localhost:8800$1570043371295coDXo:localhost:8800JAQQ A!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369294rquKy:localhost:8800J@QQ @!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369293ssSMv:localhost:8800J?QQ ?!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043368292FAoRb:localhost:8800J>QQ >!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043367291AEdax:localhost:8800J=QQ =!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043366290YSCqz:localhost:8800J<QQ O`<2J:~~VeL$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtksha256En+'?S⥜Kg?wwVeL$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHosha256_$F%%9zө䧒zLQL$1570043392317hujur:localhost:8800sha256-l0bo (+_-L~QL$1570043391316OJaBO:localhost:8800sha256s{u$;LzroMo%5/8N=}3L$12:localhost:42455sha2569Ĉ;ol`*RL(xt=|3L$11:localhost:42455sha256KyE=wچ't<9!Qƾ={3L$10:localhost:42455sha256gS(׽\kӶH4 [=9KzOL$157004338812XhwjX:localhost:8829sha256tAqf8'/.)MbZ[LyQL$1570043388312YDkJu:localhost:8800sha256ѭս7ņ|V8:©=РU> LxQL$1570043387311DGzYi:localhost:8800sha256ot" ͮ ɩ!ŌE%[LwQL$1570043386310bGMNl:localhost:8800sha256=}rj!nCp%IC4qLvQL$1570043385309imdbl:localhost:8800sha256תKM} ( ShE(Pn{o!LuQL$1570043384308gPogh:localhost:8800sha2563>uO*o`Q`%;LtQL$1570043383307bhuDV:localhost:8800sha256U:b/}w?ǬY  bLsQL$1570043382306WhWIU:localhost:8800sha256)EԦk\TLk.82Rt.eLrQL$1570043380304caenp:localhost:8800sha256:piYfm4H8VLqQL$1570043379303bCgUn:localhost:8800sha256&]Qϝ|}],N`)gF dLpQL$1570043378302mKBGD:localhost:8800sha2562hucIe)y[~g#%WǩLoQL$1570043377301OraEa:localhost:8800sha256m͐~|+ f~ÃwIxb'_LnQL$1570043377300CLPUi:localhost:8800sha256.ȢU!_CcJG;LjQL$1570043372296yAiBq:localhost:8800sha256H L7{ѷA IIT:-2͉LiQL$1570043371295coDXo:localhost:8800sha256 Nɤ\Dw4o7';RL?W&LhQL$1570043369294rquKy:localhost:8800sha256mȺ:eO=uH\DH.wLgQL$1570043369293ssSMv:localhost:8800sha256 3-%wCEeK/ryWӒLfQL$1570043368292FAoRb:localhost:8800sha256rJֱ1nm#Qٳ2LeQL$1570043367291AEdax:localhost:8800sha256\ԟqsi@(pXQWLz8eLdQL$1570043366290YSCqz:localhost:8800sha256حx&حXۤYb>rKͭLcQL$1570043364289XIEhE:localhost:8800sha256'wÙޟfJTm뱖xѫPax'LbQL$1570043364288SCpzq:localhost:8800sha256q2GpOh9t1ZJ87&!WUQBLaQL$1570043363287eSyun:localhost:8800sha2569y:B;QRRw-dM7⍶L`QL$1570043362286KwXMK:localhost:8800sha256{( o*N):HٞL_QL$1570043361285xsPbY:localhost:8800sha256i3~!ďm"e hL85V^eL$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQsha256C;%g-,v Ԡ;8V]eL$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bcsha256HLm\<mm:5R˲ > W p>   Qv D  E |J\P$ * i  j 8Vcp ? 1e$ZXCeQ5rccygS9EbZD7qgp7_RXZ3fZv4IXXUSJkGGXmc1e$Zj-83-WCjvzeNBL79vEak3tJE1LAjBkGsUXi_g1sCZM1e$Zam64OC-AKP_JXKGy1P1lIZzvBoDwYll2BMmMfTx8og1e$ZM4S5cZobfc9XsVcv-JBkHAOSFIq2VXhJQWMTwsZGX0o1e$Z0pXwaGf1EEMa6rLkn6x7ZR01mlaDetPAIEqgJVDrzoG1e$ZzOg3RlFV67RVaD1JuJVCjYG8ZoQ4QTcxGswypeDGpw1e$ZJ5bXCgyMt3CCl4MlCBkU4oppSAFVLF8b8AnzlnFgu8A1e$ZTGwl8Kr9uLUmGP-KiOFG1IWHY2NQqxLkG1cc6hOPxY1e$_-KTa-oB2FgPOiBKYelS_soDH6N-NVII_sA2pQFnGvc1e$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A 1e$ZY1xgvtyBZigvcur0yWGlMsoi7qJ7CwARrEOR5wFZME1e$ZV26lnDvs_Dj34FnDewY9gvY4qgY3Z4mUUdcykaLGMI1e$ZTphziW4LRRSdEXFx0anao84i2UuGMGSPUig8E4Ng5g1e$ZR-IkgfutcM71swk-p8AbbzahS6qhHFRp8SSsWWwwyM1e$ZP8dAR3clyYGhprHls3fSpHAz8rYOb6dfHpAeDYZEHs1e$ZIvvErCz-RFxUG-wj05EWAol5Oi7NvonQ1N2LAGaqAY1e$ZGzoYhYxJlROMbCdGPoQoglPqNcEPCcPvpJW8KPc-Ng1e$ZEFSRrJkcj_4LAuRAH71ITrnJwHlWlXogClc3aiqtk81e$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k1e$ZCvgMa66hlqv8I9XrO21PLMF-nbBWq5D8EuePD9qSAk-1e$ZCmd3NqNHgmJAQr3zrQRYNSm2FWnrzkX9nKR3GgVjBI1e$Z8A-2m5pf_H_RsVS9H9lx6K4wldK7s5VeP2huWT1et4_1e$Z0zEwK_a0dcsYXXdZwDizimMJO-9BEgZOX_mDIfQqGc1e$Z028IKdpf2RTnkodLnAPFPfcyfoGLsrPVnNHzqf0Tgw1e$Yuw84nlPje9XzNKtInoGgFLvdLSjm52vDlyZnxRTLigU1e$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY1e$Ysd0Sc6HrCTL9mkUzv6-jUvZyknDcF5F61DCyKQrSX01e$YsEK-rWLPWLgXm15yzGtQrxu4jBbR8JoigpHGh-WshQI1e$YpGzdh92CGJ2f8ZcYvkvXG_OnWcKCQ8icGIBsJpHL6I1e$YnCGI8JGlx0NDtz6m9ZScEq4NSLS-8VEPLu6omp3Ejc1e$Yas8WrwmU-cYP23dMIf9eZic3jarneX06nIR4kCmPw411e$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU 41e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns -1e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1e$Yeuu6HGLls6klsr6JCyPdohNP-tcCclDWTjizIOXaR4 21e$_-uWOP5I-y8hsKa8dnKR_jE-sF7VGbZu6Hvz03OBT8s1e$Yq5edDXAuS818Ury5lIyRM1-rUZes3oPZJ-Sja_ZVZ0 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg - ^1e$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkk1e$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdg1e$Z1Is-mpWNp-bwP0ovpAfzKYFe_ujJ89z1_1SEQAV6Ok1e$ZhNfYBBZEdEGd278fbDOT-veFVDsaAbU0WUpVAYQvzks1e$Z1gkgqGpDmJ9-L3Zubg0Sym8ViNyMnUCRkbG5UKkhTET1e$Yumv9qgLcX2T9VidcKWd+/TkKnde3nNpL1BOIt9Y6p8# K21e$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ v1e$YlOGQIvu5IFqHct8VZog3vYplp9zBsCuMsBc_PgPfDQ(1e$ZAMNsg9LJJicth8AX4z4F23efZRwuRT-zdXnSPm5dlY wd1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw P1e$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA N1e$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo I21e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 E1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 91e$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ0e$_3pO-OpDyZD2-ir6hRzD2kAj6gY7GUIiJ3c9aTdCy1Q{1e$_11rWUOTxcl0VT1sCcpzBCvhS4rUl3qKd-pZLiO4WY821e$Z6DfchRZlODJQYlFiZZPdvOyegJ_6fUycuO8dGLsZgQ 1e$Yig0QpBwi95cRFBGe__yzcCmxw7mwq_mOFMC62XdcFA1e$ZyG-4AlWqDVeoX3m682MjyJ4J_bLYdqejO_mtCoTq7k1e$ZoA6ZLQTYVRU0sCDuzi9fxuuD2G3hsIFBDimKHwQxrU1e$Zn_9GKhkAonTc_c-YdR93CwKnYfa19iwj6LV2YUOJos1e$Zn94syEO7r3SbEyYzfJGqbuX52z3gfZzbaFkHkixJGw] - w c\-+aQQay $1570043363287eSyun:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3194}{"auth_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}], ["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}]], "prev_events": [["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}]], "type": "m.room.power_levels", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"users": {"@anon-20191002_181700-623:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043363287eSyun:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043363336, "hashes": {"sha256": "MlE+cVZ4guxpWt8fyll7zfi6aepvENIyUkAPtXTp4zE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AMIJ3uXQ7I6Ufv2LeoSnFO3fGUWP6dP9Lj8SD0yhx68KH13cIFdQgKGDAfIFFBfYYUG2QMwbERDytepkPDWmBw"}}, "unsigned": {"age_ts": 1570043363336}}`QQa) $1570043362286KwXMK:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3193}{"auth_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}]], "prev_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}]], "type": "m.room.member", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-623", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-623:localhost:8800", "event_id": "$1570043362286KwXMK:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043362505, "hashes": {"sha256": "TiU67uxbWQ1GMLguXRU8tL7kxGJJv1MpRgGLW9nrifE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dszFR4CfFjCwDJPZHxEMuxhPPnA761/bQRWuEqYEraDkqEEt8Qwl9d4tW1iInyGgygJp/EURaVRXOqisuR8GBg"}}, "unsigned": {"age_ts": 1570043362505}}_QQaC $1570043361285xsPbY:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3192}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-623:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043361285xsPbY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043361409, "hashes": {"sha256": "Xh6oG5ZCTDcoKorns5MPHpxhAml1JJX662WXwfzv3z0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ucXm+DL83S3KQxzjIqJQL7okPHEF/Wzff1TZUanSW5H2MMjyayLhoZe6SHoRTx2C4duKb7wtCfcrTbKa0vi9Ag"}}, "unsigned": {"age_ts": 1570043361409}}^eQa$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800{"token_id": 603, "stream_ordering": 3191}{"auth_events": ["$t-AQLNuHsyMKe9H8MT-Wgr1LGZfPdMeDNMvoH7Nd8fo", "$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo", "$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU"], "prev_events": ["$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc"], "type": "m.room.history_visibility", "room_id": "!yAfsSyqpJWFnkXQFJL:localhost:8800", "sender": "@anon-20191002_181700-622:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043359245, "hashes": {"sha256": "QscwV4S4SvDob0DEfAUhj24XoX/7H4M+0m3PzxVTkSY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "huKdFmnpiy9/cB4YhI/WnppMHegJY2eR1gYH6bYk5yhv4nXhaDjXy8ekTK4YvmzTBzCKfaD7OfBSShNywuvnBA"}}, "unsigned": {"age_ts": 1570043359245}} (<n< tBj8T"p> v D  | J  P  V $  \N *Z(T"Z(1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNky1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkz1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc0041e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A"1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk41e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk31e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk261e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gN1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gM1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gL1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo1e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl01e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk 1e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI `1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4 1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMM1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdML1e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdMK1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNkx1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ|1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG81e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw@1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw?1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw>1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw=1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI71e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI61e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI51e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0 1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0 1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ k1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ j1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ i  l & d ] Ut ME=5.eeQ$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y!sHRHoXzYrrPSlWBkoh:localhost:8800 eeQ$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXI$-uhp85yGOxGvcBbSICXuLaavp9Rf7HuiPsAJBQGBJco!eWRdwtyqHvuxZFvhNS:localhost:8800EeeQ$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q$Opy-jLL2m8KHKcZD2xB131diXaNCM8tbp6DS2S_zKb8!iKezIvJyjkNqKayFju:localhost:8800 xeeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800 eeQ$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMM$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw!scyFsXcUIJiLIMwWMY:localhost:8800_eeQ$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS8!BkzROHxDAfKIzYpmPV:localhost:8800)eeQ$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdU$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H4!aBCvSXjtZUEPlPGHvY:localhost:8800oeeQ$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An0!NQgavrmiCPUVaVjssy:localhost:8800eeQ$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU!lMRBkbYJDQHgdBZBFJ:localhost:8800eeQ$pWAA1OkjCx_HWNZIjZgpsHsGzumwUs4u5a6gpOrJKmw$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8!bNSXSTadOMhIrYpMzH:localhost:8800؁eeQ$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI$ghh6OLP2-EQkdd8_NRWBcLNMZRQIhj6Act-HqSM4KyY!OMkiVTuuOEeiFAXtUY:localhost:8800.eeQ$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM!nvclDopiBLEOKBIheH:localhost:8800eeQ$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ$IgJ-qAzAUGvshiXMphRpwrOSEu5vL6n8hV4E6OmVxMw!aLxrqpqLkbzyIxGgpk:localhost:88009eeQ$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ$7TMO30x9AHVBK14zLdrIwjrIBDafownSnurBFkePTto!vVmSdclwPIqYDbnmPn:localhost:8800eeQ$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI$mXPjiz6zgvVRPgnARMVzwRtHEJH8AvLXIno6jqabYG8!OBWkjfrDCNgYFfblia:localhost:8800eeQ$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUE$7xJ4m5jxqNYA-hGUcMENYvDLOhdt01Ne6CqpkISc-Ok!bzPCFeFSMbCESvNbxl:localhost:8800eeQ$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30!NZHpBquHDfJAjiawGk:localhost:8800;eeQ$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTII$jrgaR8-i_prj7zYIds-m1-H47vxgChz-IeB64tE-WWM!IMiczgkCTjejbnbeyP:localhost:8800ieeQ$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-4828$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!CQKLQUpSYakhxVDltC:localhost:8800eeQ$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k!ZYKvjplZRyIWvzkRyM:localhost:8800eeQ$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY!mogJVPxghalmKbblUq:localhost:8800 eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800 eeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800   4 h m9d]c@anon-20191002_181700-655:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAo127.0.0.1_d]c@anon-20191002_181700-653:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgo127.0.0.1]d]c@anon-20191002_181700-651:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85Qo127.0.0.1[d]c@anon-20191002_181700-652:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4Ao127.0.0.1\d]c@anon-20191002_181700-654:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgo127.0.0.1^d]c@anon-20191002_181700-650:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawo127.0.0.1Za[a@anon-20191002_181700-64:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQmIsKy53PWVqc0JLVkB3QwowMDJmc2lnbmF0dXJlIAYGre84pM-Ubkoq2s6gX5Bb1qcV0wKbyRxvSJtxUWjhCg127.0.0.18d]c@anon-20191002_181700-649:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgo127.0.0.1Yd]c@anon-20191002_181700-648:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQo127.0.0.1Xd]c@anon-20191002_181700-647:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwo127.0.0.1Wd]c@anon-20191002_181700-646:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3go127.0.0.1V 1f2 K d  } 0 I b {.hc ^YTOJTUQe !QkkdnzvdrjHaFGkzMt:localhost:8800$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0TTQe !QkkdnzvdrjHaFGkzMt:localhost:8800$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMTSQe !QkkdnzvdrjHaFGkzMt:localhost:8800$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctATRQe !QkkdnzvdrjHaFGkzMt:localhost:8800$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7ATQQe !QkkdnzvdrjHaFGkzMt:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8TPQe !QkkdnzvdrjHaFGkzMt:localhost:8800$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsTOQe !DuqHkpTfWCUblSrxQj:localhost:8800$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iUTNQe !DuqHkpTfWCUblSrxQj:localhost:8800$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0TMQe !DuqHkpTfWCUblSrxQj:localhost:8800$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwTLQe !DuqHkpTfWCUblSrxQj:localhost:8800$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMTKQe !DuqHkpTfWCUblSrxQj:localhost:8800$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgTJQe !DuqHkpTfWCUblSrxQj:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgTIQe !DuqHkpTfWCUblSrxQj:localhost:8800$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVITHQe !NanhNmCnVVpmZRJrTF:localhost:8800$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgTGQe !NanhNmCnVVpmZRJrTF:localhost:8800$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-ETFQe !NanhNmCnVVpmZRJrTF:localhost:8800$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6QTEQe !NanhNmCnVVpmZRJrTF:localhost:8800$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQTDQe !NanhNmCnVVpmZRJrTF:localhost:8800$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuATCQe !NanhNmCnVVpmZRJrTF:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3GtkTBQe !NanhNmCnVVpmZRJrTF:localhost:8800$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo:A1Q !5:localhost:42455$1570043392317hujur:localhost:8800:@1Q !5:localhost:42455$1570043391316OJaBO:localhost:8800I?QO !sqkBzbHHJOTNWwynqV:localhost:8800$157004338812XhwjX:localhost:8829J>QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043388312YDkJu:localhost:8800J=QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043387311DGzYi:localhost:8800J<QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043386310bGMNl:localhost:8800J;QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043385309imdbl:localhost:8800J:QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043384308gPogh:localhost:8800J9QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043383307bhuDV:localhost:8800J8QQ !sqkBzbHHJOTNWwynqV:localhost:8800$1570043382306WhWIU:localhost:8800J7QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043380304caenp:localhost:8800J6QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043379303bCgUn:localhost:8800J5QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043378302mKBGD:localhost:8800J4QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043377301OraEa:localhost:8800J3QQ !qInWQPtNQfBFoVzUtP:localhost:8800$1570043377300CLPUi:localhost:8800J2QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043375299fbyXJ:localhost:8800J1QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043374298UIMFg:localhost:8800J0QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043373297SOjrf:localhost:8800J/QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043372296yAiBq:localhost:8800J.QQ !FZOLkaLbBpaibrbHZx:localhost:8800$1570043371295coDXo:localhost:8800J-QQ !QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369294rquKy:localhost:8800J,QQ !QxqzQoEBIZhmzHIGrl:localhost:8800$1570043369293ssSMv:localhost:8800J+QQ !QxqzQoEBIZhmzHIGrl:localhost:8800$1570043368292FAoRb:localhost:8800J*QQ ~!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043367291AEdax:localhost:8800J)QQ }!QxqzQoEBIZhmzHIGrl:localhost:8800$1570043366290YSCqz:localhost:8800J(QQ |!fDISaqNBhlOwherxSt:localhost:8800$1570043364289XIEhE:localhost:8800J'QQ {!fDISaqNBhlOwherxSt:localhost:8800$1570043364288SCpzq:localhost:8800J&QQ z!fDISaqNBhlOwherxSt:localhost:8800$1570043363287eSyun:localhost:8800J%QQ y!fDISaqNBhlOwherxSt:localhost:8800$1570043362286KwXMK:localhost:8800  dQQaC $1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3197}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-624:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043366290YSCqz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043366709, "hashes": {"sha256": "/5P18qKwYzhNUV1Uu5ehOYZQYlu1tqH5gsb8NFKjzvU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fkIag1USN++XdJNYxcfsySTLguShv0U5+ZQdl/mOEdmzi578HBLi6yWf+pumWUK+TTY0hlYUHO6UwfsE4+t7DQ"}}, "unsigned": {"age_ts": 1570043366709}}xcQQa $1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3196}{"auth_events": [["$1570043363287eSyun:localhost:8800", {"sha256": "Oct5OoGCBEI7EFEBUt0HUnesxS29ZJu0TRaZ9DfijbY"}], ["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}], ["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}]], "prev_events": [["$1570043364288SCpzq:localhost:8800", {"sha256": "cTJHEnBP7BBoBznbdMMxWko4BTcm3AIaiCHfV1VRQu0"}]], "type": "m.room.history_visibility", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043364289XIEhE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043364889, "hashes": {"sha256": "5YolcDIqslWSrTEkfeFjMkO2sdIw17r24e/L3nhnwx0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4ebpWKeSlLh8ijK0lK0uCvOH3nY+mVPEVbSuewTSkIItLye9nETC31YzvF59DP8XJDNfDt7nxMegvKmlqZgAA"}}, "unsigned": {"age_ts": 1570043364889}}gbQQaq $1570043364288SCpzq:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800{"token_id": 604, "stream_ordering": 3195}{"auth_events": [["$1570043361285xsPbY:localhost:8800", {"sha256": "rWmnxDPskX6rFiHEj20iZQm1H7cCaPZMA7c4njWGuug"}], ["$1570043362286KwXMK:localhost:8800", {"sha256": "e8oougnuAaXUf5KoBfBviiqQTikBmQG6fwIIOkik2Z4"}], ["$1570043363287eSyun:localhost:8800", {"sha256": "Oct5OoGCBEI7EFEBUt0HUnesxS29ZJu0TRaZ9DfijbY"}]], "prev_events": [["$1570043363287eSyun:localhost:8800", {"sha256": "Oct5OoGCBEI7EFEBUt0HUnesxS29ZJu0TRaZ9DfijbY"}]], "type": "m.room.join_rules", "room_id": "!fDISaqNBhlOwherxSt:localhost:8800", "sender": "@anon-20191002_181700-623:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043364288SCpzq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043364004, "hashes": {"sha256": "ObbQ0UNWBRORmGSt3OBMJyOfBiwo4ExBleVeL+ODbhQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TTY6D+ZoUtspmnnj+U8Cz6ACzZptepLwQpXBcJ/Dn4nI6TXJQIzeXwBM7b2+uiEpypP3OpCgwKlponkVR2AJAg"}}, "unsigned": {"age_ts": 1570043364004}} J;g2a,X# Q  } H  v A m 8  d /[&RKwB p`+Z%|4]@anon-20191002_181700-674]@anon-20191002_181700-702:localhost:8800m-)4]@anon-20191002_181700-701:localhost:8800m 4]@anon-20191002_181700-700:localhost:8800m 1Y@anon-20191002_181700-6:localhost:8800mx14]@anon-20191002_181700-698:localhost:8800me4]@anon-20191002_181700-697:localhost:8800m R4]@anon-20191002_181700-696:localhost:8800m44]@anon-20191002_181700-695:localhost:8800m4]@anon-20191002_181700-693:localhost:8800m4]@anon-20191002_181700-692:localhost:8800m2[@anon-20191002_181700-63:localhost:8800mK64]@anon-20191002_181700-639:localhost:8800mᷱO4]@anon-20191002_181700-638:localhost:8800mVN4]@anon-20191002_181700-637:localhost:8800mqM4]@anon-20191002_181700-636:localhost:8800mMHL4]@anon-20191002_181700-635:localhost:8800m3K4]@anon-20191002_181700-634:localhost:8800mJ4]@anon-20191002_181700-633:localhost:8800mI4]@anon-20191002_181700-691:localhost:8800m濵4]@anon-20191002_181700-690:localhost:8800mk2[@anon-20191002_181700-68:localhost:8800mA:4]@anon-20191002_181700-689:localhost:8800m&4]@anon-20191002_181700-688:localhost:8800m 4]@anon-20191002_181700-687:localhost:8800m~4]@anon-20191002_181700-686:localhost:8800m|~4]@anon-20191002_181700-685:localhost:8800mU }4]@anon-20191002_181700-684:localhost:8800m/|4]@anon-20191002_181700-683:localhost:8800m {4]@anon-20191002_181700-682:localhost:8800m:z4]@anon-20191002_181700-681:localhost:8800mʪy4]@anon-20191002_181700-680:localhost:8800mx2[@anon-20191002_181700-67:localhost:8800mg94]@anon-20191002_181700-679:localhost:8800mw4]@anon-20191002_181700-678:localhost:8800m刨v4]@anon-20191002_181700-677:localhost:8800mau4]@anon-20191002_181700-676:localhost:8800mWt4]@anon-20191002_181700-675:localhost:8800m<s4]@anon-20191002_181700-674:localhost:8800m+[r4]@anon-20191002_181700-673:localhost:8800m(iq4]@anon-20191002_181700-672:localhost:8800m*p4]@anon-20191002_181700-671:localhost:8800m #o4]@anon-20191002_181700-670:localhost:8800mn4]@anon-20191002_181700-669:localhost:8800mem4]@anon-20191002_181700-668:localhost:8800mtl4]@anon-20191002_181700-667:localhost:8800mh,k4]@anon-20191002_181700-666:localhost:8800mKj4]@anon-20191002_181700-665:localhost:8800m-i4]@anon-20191002_181700-664:localhost:8800mh4]@anon-20191002_181700-663:localhost:8800mg4]@anon-20191002_181700-662:localhost:8800mf4]@anon-20191002_181700-661:localhost:8800mie4]@anon-20191002_181700-660:localhost:8800md2[@anon-20191002_181700-65:localhost:8800m&74]@anon-20191002_181700-659:localhost:8800mc4]@anon-20191002_181700-658:localhost:8800mr]b4]@anon-20191002_181700-657:localhost:8800mHa4]@anon-20191002_181700-656:localhost:8800m,7`4]@anon-20191002_181700-655:localhost:8800m_4]@anon-20191002_181700-654:localhost:8800m^4]@anon-20191002_181700-653:localhost:8800mf]4]@anon-20191002_181700-652:localhost:8800mА\4]@anon-20191002_181700-651:localhost:8800m[4]@anon-20191002_181700-650:localhost:8800m\Z2[@anon-20191002_181700-64:localhost:8800m84]@anon-20191002_181700-649:localhost:8800mY4]@anon-20191002_181700-648:localhost:8800mRX4]@anon-20191002_181700-647:localhost:8800mNW4]@anon-20191002_181700-646:localhost:8800m♪V4]@anon-20191002_181700-645:localhost:8800mlU4]@anon-20191002_181700-644:localhost:8800mlqT4]@anon-20191002_181700-643:localhost:8800m9WS4]@anon-20191002_181700-642:localhost:8800mR4]@anon-20191002_181700-641:localhost:8800m}Q4]@anon-20191002_181700-640:localhost:8800mP g * T~=gg^]!cg@anon-20191002_181700-635:localhost:8800SCDBHOHLOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwog]]!cf@anon-20191002_181700-634:localhost:8800GKOWEMDMJGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAog\]!ce@anon-20191002_181700-633:localhost:8800TRECTOOCOTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgog[]!cd@anon-20191002_181700-632:localhost:8800VIXCAXAJWEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwogZ]!cc@anon-20191002_181700-631:localhost:8800KQCHQRUBXZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQogY]!cb@anon-20191002_181700-630:localhost:8800VFOQXGNRPEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygogX]!ca@anon-20191002_181700-628:localhost:8800JKNWCQGMTXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwogW]!c`@anon-20191002_181700-627:localhost:8800XBWVSSSTPWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_gogV]!c_@anon-20191002_181700-626:localhost:8800GMFLXIUBWOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg7bU0rWEJeN2cmY2FXLm4KMDAyZnNpZ25hdHVyZSA75IZ-HkBAUDrHn-LyPiQNG2BPqA_aDnL2jPgBanGXUAogU]!c^@anon-20191002_181700-625:localhost:8800LXKNSEODEIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQogT]!c]@anon-20191002_181700-624:localhost:8800AATHUMCUILMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywo %]  R G h %`C9DnziQ3 e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAQ'Ee ]!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-EQ'Ee \!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$f-vRiHWufvykmGcu-CUS7JZLbFsdc15lpUVUlSVWlm4oQ? e [!NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibility$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qg~Q/ e Z!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQi}Q3 e Y!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA |Q']e X!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkc{Q' e W!NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHoqz1']Q V!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800$1570043391316OJaBO:localhost:8800Vy1'E3 V!5:localhost:42455m.room.member@__ANON__-10:localhost:42455$11:localhost:42455:x1' 3 V!5:localhost:42455m.room.create$10:localhost:42455>w1/ 3 V!5:localhost:42455m.room.join_rules$12:localhost:42455vQ']O U!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829$157004338812XhwjX:localhost:8829uQ']Q T!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829$1570043388313VFpux:localhost:8800htQ))Q S!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800$1570043388312YDkJu:localhost:8800esQ? Q R!sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility$1570043387311DGzYi:localhost:8800]rQ/ Q Q!sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules$1570043386310bGMNl:localhost:8800bqQ9 Q P!sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias$1570043385309imdbl:localhost:8800_pQ3 Q O!sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels$1570043384308gPogh:localhost:8800oQ']Q N!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800$1570043383307bhuDV:localhost:8800YnQ' Q M!sqkBzbHHJOTNWwynqV:localhost:8800m.room.create$1570043382306WhWIU:localhost:8800tmQ'CQ L!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@__ANON__-6:localhost:42455$1570043381305ccgXv:localhost:8800elQ? Q K!qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility$1570043380304caenp:localhost:8800]kQ/ Q J!qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules$1570043379303bCgUn:localhost:8800_jQ3 Q I!qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels$1570043378302mKBGD:localhost:8800iQ']Q H!qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800$1570043377301OraEa:localhost:8800YhQ' Q G!qInWQPtNQfBFoVzUtP:localhost:8800m.room.create$1570043377300CLPUi:localhost:8800egQ? Q F!FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility$1570043375299fbyXJ:localhost:8800]fQ/ Q E!FZOLkaLbBpaibrbHZx:localhost:8800m.room.join_rules$1570043374298UIMFg:localhost:8800_eQ3 Q D!FZOLkaLbBpaibrbHZx:localhost:8800m.room.power_levels$1570043373297SOjrf:localhost:8800dQ']Q C!FZOLkaLbBpaibrbHZx:localhost:8800m.room.member@anon-20191002_181700-625:localhost:8800$1570043372296yAiBq:localhost:8800YcQ' Q B!FZOLkaLbBpaibrbHZx:localhost:8800m.room.create$1570043371295coDXo:localhost:8800ebQ? Q A!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.history_visibility$1570043369294rquKy:localhost:8800]aQ/ Q @!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.join_rules$1570043369293ssSMv:localhost:8800_`Q3 Q ?!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.power_levels$1570043368292FAoRb:localhost:8800_Q']Q >!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.member@anon-20191002_181700-624:localhost:8800$1570043367291AEdax:localhost:8800Y^Q' Q =!QxqzQoEBIZhmzHIGrl:localhost:8800m.room.create$1570043366290YSCqz:localhost:8800 _ _ggQQaq $1570043369293ssSMv:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3200}{"auth_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}], ["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}], ["$1570043368292FAoRb:localhost:8800", {"sha256": "0HIaStaxMW5t1SPEE1HZs9cy0MsBPHJKa/HbFrc+kB4"}]], "prev_events": [["$1570043368292FAoRb:localhost:8800", {"sha256": "0HIaStaxMW5t1SPEE1HZs9cy0MsBPHJKa/HbFrc+kB4"}]], "type": "m.room.join_rules", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043369293ssSMv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043369137, "hashes": {"sha256": "mVb/nOHEqxZs9oxKg/KBwcRjfv1aQZksFANbYPhFEJI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jol0FvTjwJyguLyGt1yt1dB/8J1RG1WVK/vxAox4MA372tjXwgstlE8fBt0/0Ln4RKpkMZ8D5jgWcSd542gLCA"}}, "unsigned": {"age_ts": 1570043369137}}+fQQay $1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3199}{"auth_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}], ["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}]], "prev_events": [["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}]], "type": "m.room.power_levels", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"users": {"@anon-20191002_181700-624:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043368292FAoRb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043368511, "hashes": {"sha256": "UkPbzSnuhpI9tU1lsiw2eltJlbEL2bQPjH+LMbjowCI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VMXdNQAW+FAxvWi/EahAZnnKK3yaqxhK8THuEPQ8uIcuP+35iamRQp8w1k+gQaB2/RAQecaQLzZh3/ZpowVWDw"}}, "unsigned": {"age_ts": 1570043368511}}eQQa) $1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3198}{"auth_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}]], "prev_events": [["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}]], "type": "m.room.member", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-624", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-624:localhost:8800", "event_id": "$1570043367291AEdax:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043367610, "hashes": {"sha256": "dxeJEXMDroNcE4QuFT2sROW4ZEam1na4Ys4as1GpqGk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kIZwa+iNx2Sdnog/5PQlICXdHtPpYqvnenfOJnxaKCGIT6D0kHtbbaOLPjQ2KCXD9WO9cryWrv+P8haTxOj3AA"}}, "unsigned": {"age_ts": 1570043367610}} <]  M   S " 8 [ )  a /g5m; sAj]yHNV$c1+c11e$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA 1e$VX1A2-UdQVQ1KGa1cZFbaLaRrQCrs8tv_F8fWGQNArM0e$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0:1e$VL2isOQv7m8c-2G5JDaIcEQL9vvQPQjMV9fZiPPx6ik1e$VGw7urGYAtVK5hiih-kexVNotMwzCretc8qAwP7jJs81e$VFBC81fyxQ4f6V4j8S1lPAzzYk94rrzuxPHMSg9J/Xc10e$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncK0e$VCdHx-inwbS8RWM8cRYBSBnrZWklk8iBQub8k5FMYKYt1e$VAKUC59kqX11rKEOsfDkMB1p5lQYU457PCfy1fuDKf4v1e$V3VZvSGuZ7tY-MipDne4kK-97NxRJJrMme66dirR20A1e$V1OFOsqnUhdGvfgzUUdSyBbnBAbkPuwNq1tYJ40kK1Qa1e$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj41e$U_wbyWVHQ-pw1H4Fo41B9fnz68ane62C3fMAKhb-g9U1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqIb1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE0e$U8wTWaicy5r-BVELWAqqhaT1kZkS2os1qszvzl9OVBcX1e$U4xpT4UhCQCIlh9RlI27m4PpEqrx8kmSEHAb235_mc4I1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8Al1e$TiAQV5FAdHs95F0PdF5ewTv9Z33fwcr5iXGOQqlk3ZM1e$TeBqmFPvgOibuXF5DCRLz2qVOTRYkn1RQJyEoV1UJGoG1e$TdWCT7HfqFQzJn-IPMxJUJV9Qv2i0yPV-x8it13og7YJ1e$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_WwK1e$TPwN12LwVbOdDpWEsprnM6RrcYNFiScoCs45E89dNeQU1e$TM13nKrH7SQldgw-lZ4nj5sWGvxnBLkD5xYD7B3wwHE1e$TLKCCZJNpkKIt8DVKuXqzD9xGTt2gqI5MqAjL76XtNQ~1e$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIA1e$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vc1e$TAw8CqI75h55YAXWdpPhza1xtm7Z68JMwKFWFkn7An01e$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg1e$Sxr41BivHTNoSdszqybq21ZZgB82_pG5WZmQO02P0nI1e$SpT09-UL3_jfuoR9yYVdthUvEVH9H3aDsHz3uwtHJ2Y1e$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgo1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAg1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo(1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVsL1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4O1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYH1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI"0e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE!1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAf0e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg51e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2Uu1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg>1e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkZ1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IY1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkF1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ41e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 $&L r  + Q w 0V|5[:`j|QQQ$1570043387311DGzYi:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800j{QQQ$1570043387311DGzYi:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jzQQQ$1570043387311DGzYi:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jyQQQ$1570043386310bGMNl:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jxQQQ$1570043386310bGMNl:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jwQQQ$1570043386310bGMNl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jvQQQ$1570043385309imdbl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800juQQQ$1570043385309imdbl:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jtQQQ$1570043385309imdbl:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jsQQQ$1570043384308gPogh:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jrQQQ$1570043384308gPogh:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jqQQQ$1570043383307bhuDV:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jpQQQ$1570043380304caenp:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800joQQQ$1570043380304caenp:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jnQQQ$1570043380304caenp:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jmQQQ$1570043379303bCgUn:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jlQQQ$1570043379303bCgUn:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jkQQQ$1570043379303bCgUn:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jjQQQ$1570043378302mKBGD:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jiQQQ$1570043378302mKBGD:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jhQQQ$1570043377301OraEa:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800jgQQQ$1570043375299fbyXJ:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jfQQQ$1570043375299fbyXJ:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jeQQQ$1570043375299fbyXJ:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jdQQQ$1570043374298UIMFg:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jcQQQ$1570043374298UIMFg:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jbQQQ$1570043374298UIMFg:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800jaQQQ$1570043373297SOjrf:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800j`QQQ$1570043373297SOjrf:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800j_QQQ$1570043372296yAiBq:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800j^QQQ$1570043369294rquKy:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800j]QQQ$1570043369294rquKy:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800j\QQQ$1570043369294rquKy:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800j[QQQ$1570043369293ssSMv:localhost:8800$1570043368292FAoRb:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jZQQQ$1570043369293ssSMv:localhost:8800$1570043367291AEdax:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800jYQQQ$1570043369293ssSMv:localhost:8800$1570043366290YSCqz:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800 i pijQQa) $1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3203}{"auth_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}]], "prev_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}]], "type": "m.room.member", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-625", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-625:localhost:8800", "event_id": "$1570043372296yAiBq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043372863, "hashes": {"sha256": "r269GSxS8GIOeVXq58UKdgZXdy3uAHvTh0/7una9u8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xnfbWi34PYI+/EnNCjEcJuHEf32Lsuw07R7kfrQJ9JAdXCsEwCtVNN+qzTfMJap5eoS2lDRounil1mCV2L9wAw"}}, "unsigned": {"age_ts": 1570043372863}}iQQaC $1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3202}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-625:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043371295coDXo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043371869, "hashes": {"sha256": "Qm302tqD+k8RaVtO4yZ7du4aBJWo38+R2I/v+MFmdeY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9XL0uHjfYFHNnRlMJ47MUA2GU5P0qKAHzgEsuaa0Se9fIWrJb62yn8AIHTTbGpHZjd0f5Zeu+esxhfm6wzCoAA"}}, "unsigned": {"age_ts": 1570043371869}}xhQQa $1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800{"token_id": 605, "stream_ordering": 3201}{"auth_events": [["$1570043368292FAoRb:localhost:8800", {"sha256": "0HIaStaxMW5t1SPEE1HZs9cy0MsBPHJKa/HbFrc+kB4"}], ["$1570043366290YSCqz:localhost:8800", {"sha256": "udit3fEPG3gmix3YrftY9tuk91li3z4BnnJLza2kxtg"}], ["$1570043367291AEdax:localhost:8800", {"sha256": "XOjrrhjUn3FzaUCuKB1wl1jZFvBR1dkH8FfnTHo4qWU"}]], "prev_events": [["$1570043369293ssSMv:localhost:8800", {"sha256": "ChwzLSWMd4yDEkPQRWWYS7P7BugvpQKYcut5EalX05I"}]], "type": "m.room.history_visibility", "room_id": "!QxqzQoEBIZhmzHIGrl:localhost:8800", "sender": "@anon-20191002_181700-624:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043369294rquKy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043369948, "hashes": {"sha256": "/9TFKSDJezltoUlrYG0/WVzp3TdP9Ij8QOvE4mLWvvg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eiBXe8wRGb1XAW1QYZ+UMnNrHyQc4/7K8kmIg6u63XTn8eTjIoj4iHJiBpXhK/ribtX3lC/sUixr9YgZ/d61BA"}}, "unsigned": {"age_ts": 1570043369948}} =w=Y Uq8 T  p 7 U  q 8 T r9Uu<Xvw>Z! 0 8]!@anon-2019108]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU8]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXEv6[!@anon-20191002_181700-65:localhost:8800JPWZALXKWP]8]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOFu8]!@anon-20191002_181700-658:localhost:8800NAYXIQANDEt8]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYFs8]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGIr8]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIRq8]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXAp6[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIa8]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV8]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW7Y%@anon-20191002_181700-6:localhost:8800login_device5Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOW8]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO8]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG6[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUD`8]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY8]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK8]!@anon-20191002_181700-685:localhost:8800ESVUDGRJIL8]!@anon-20191002_181700-684:localhost:8800QWWSYDBLAC8]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPR8]!@anon-20191002_181700-682:localhost:8800RHXEIACOYG8]!@anon-20191002_181700-681:localhost:8800CDCNSMATEC8]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGI6[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXM_8]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKF8]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUT8]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGV8]!@anon-20191002_181700-676:localhost:8800KCVXVHDURO8]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAM8]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT8]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE8]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNR8]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF8]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMK8]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWO8]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGW~8]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHN}8]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSB|8]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQ{8]!@anon-20191002_181700-664:localhost:8800KYCVQKAERIz8]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIHy8]!@anon-20191002_181700-662:localhost:8800BPDPANNUMTx8]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXVw "$H l " F j O b^ZVRNJFaeeQ$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800`eeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800_eeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800^eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800]eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800\eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800[eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800ZeeQ$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800YeeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800XeeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800WeeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800VeeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800UeeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800TeeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800SeeQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800[RQQ1$1570043392317hujur:localhost:8800$1570043391316OJaBO:localhost:8800!5:localhost:42455LQQ31$1570043391316OJaBO:localhost:8800$12:localhost:42455!5:localhost:42455=P331$12:localhost:42455$11:localhost:42455!5:localhost:42455=O331$11:localhost:42455$10:localhost:42455!5:localhost:42455jNOQQ$157004338812XhwjX:localhost:8829$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kMQQQ$1570043388312YDkJu:localhost:8800$1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kLQQQ$1570043387311DGzYi:localhost:8800$1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kKQQQ$1570043386310bGMNl:localhost:8800$1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kJQQQ$1570043385309imdbl:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kIQQQ$1570043384308gPogh:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kHQQQ$1570043383307bhuDV:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800kGQQQ$1570043380304caenp:localhost:8800$1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kFQQQ$1570043379303bCgUn:localhost:8800$1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kEQQQ$1570043378302mKBGD:localhost:8800$1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kDQQQ$1570043377301OraEa:localhost:8800$1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800kCQQQ$1570043375299fbyXJ:localhost:8800$1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800kBQQQ$1570043374298UIMFg:localhost:8800$1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800kAQQQ$1570043373297SOjrf:localhost:8800$1570043372296yAiBq:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800k@QQQ$1570043372296yAiBq:localhost:8800$1570043371295coDXo:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800  fxmQQa $1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3206}{"auth_events": [["$1570043373297SOjrf:localhost:8800", {"sha256": "G8Jo4pzQjWOst5YWiroCCTAaGRFlrD3Z4tMjyfhzkj4"}], ["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}], ["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}]], "prev_events": [["$1570043374298UIMFg:localhost:8800", {"sha256": "azTWHT3xvcLoUcHdJMP7y5+EvML6x+ddsw4xxX5apF4"}]], "type": "m.room.history_visibility", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043375299fbyXJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043375495, "hashes": {"sha256": "5AwRePb8eSEP6kmqrNRBrAOf+scS9r1+nsR+3bHcpa4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ez5wgK6mqaPoO2k5XaUphUO+3+6BnNVJVv4Ye/Gx1z/164q0poo8bo1dWPTtkHHIjnxn85xpwD2Du7kgHfukDA"}}, "unsigned": {"age_ts": 1570043375495}}glQQaq $1570043374298UIMFg:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3205}{"auth_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}], ["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}], ["$1570043373297SOjrf:localhost:8800", {"sha256": "G8Jo4pzQjWOst5YWiroCCTAaGRFlrD3Z4tMjyfhzkj4"}]], "prev_events": [["$1570043373297SOjrf:localhost:8800", {"sha256": "G8Jo4pzQjWOst5YWiroCCTAaGRFlrD3Z4tMjyfhzkj4"}]], "type": "m.room.join_rules", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043374298UIMFg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043374771, "hashes": {"sha256": "xV4c8LrRTOpTeqpG/54wT/U0lAC7TfaEQeu5wz5ooP8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "p/VnvwZsxRT1MWclSPqwzIOY+ONdCvCva4IL8sK+VwHI6GVjbC0YmJ2AHNaCuGbnLUUO+Eav7XEn8g0d/zu6Cg"}}, "unsigned": {"age_ts": 1570043374771}}+kQQay $1570043373297SOjrf:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800{"token_id": 606, "stream_ordering": 3204}{"auth_events": [["$1570043371295coDXo:localhost:8800", {"sha256": "/gy8TsmkXETqBnfONG83sp8FByf0O1L0BUw/VybR+Ko"}], ["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}]], "prev_events": [["$1570043372296yAiBq:localhost:8800", {"sha256": "6UggTIr34Lo3e9G3mEEgEYJJSeZUOi0Q0DKx+82Jy/0"}]], "type": "m.room.power_levels", "room_id": "!FZOLkaLbBpaibrbHZx:localhost:8800", "sender": "@anon-20191002_181700-625:localhost:8800", "content": {"users": {"@anon-20191002_181700-625:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043373297SOjrf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043373803, "hashes": {"sha256": "9l00X2WnfeFgp0zQ0yMvpvg8WgGE9hx6ZNGF3EzzyC8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cG4F/HUCBmiQV+tiarCd/3CiLwWIow5m3Ke4vooUAclMMLSTEfsu+SaphWVOWiJhLEIK9AAIiJNxi11oDOLZAg"}}, "unsigned": {"age_ts": 1570043373803}} r` J  n 4MAEt"r, e?Q ]$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qm.room.history_visibility!NanhNmCnVVpmZRJrTF:localhost:8800m m l@anon-20191002_181700-633:localhost:8800$e/Q ]$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQm.room.join_rules!NanhNmCnVVpmZRJrTF:localhost:8800mm@anon-20191002_181700-633:localhost:8800&e3Q ]$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAm.room.power_levels!NanhNmCnVVpmZRJrTF:localhost:8800mmm@anon-20191002_181700-633:localhost:8800 e'Q ]$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkm.room.member!NanhNmCnVVpmZRJrTF:localhost:8800m;m@anon-20191002_181700-633:localhost:8800 e'Q  ]$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHom.room.create!NanhNmCnVVpmZRJrTF:localhost:8800mmc@anon-20191002_181700-633:localhost:8800Q)1 ]$1570043392317hujur:localhost:8800m.room.message!5:localhost:42455mVm@anon-20191002_181700-632:localhost:8800Q'1 ]$1570043391316OJaBO:localhost:8800m.room.member!5:localhost:42455mm@anon-20191002_181700-632:localhost:8800o3/1 E$12:localhost:42455m.room.join_rules!5:localhost:42455mm@__ANON__-10:localhost:42455i 3'1 E$11:localhost:42455m.room.member!5:localhost:42455mm@__ANON__-10:localhost:42455i3'1 E$10:localhost:42455m.room.create!5:localhost:42455mm@__ANON__-10:localhost:42455O'Q ]$157004338812XhwjX:localhost:8829m.room.member!sqkBzbHHJOTNWwynqV:localhost:8800mmA@anon-20191002_181700-629:localhost:8829Q)Q ]$1570043388312YDkJu:localhost:8800m.room.aliases!sqkBzbHHJOTNWwynqV:localhost:8800mm@anon-20191002_181700-628:localhost:8800"Q?Q ]$1570043387311DGzYi:localhost:8800m.room.history_visibility!sqkBzbHHJOTNWwynqV:localhost:8800mDmJ@anon-20191002_181700-628:localhost:8800Q/Q ]$1570043386310bGMNl:localhost:8800m.room.join_rules!sqkBzbHHJOTNWwynqV:localhost:8800mDmٷ@anon-20191002_181700-628:localhost:8800Q9Q ]$1570043385309imdbl:localhost:8800m.room.canonical_alias!sqkBzbHHJOTNWwynqV:localhost:8800m m@anon-20191002_181700-628:localhost:8800Q3Q ]$1570043384308gPogh:localhost:8800m.room.power_levels!sqkBzbHHJOTNWwynqV:localhost:8800m%mӺ@anon-20191002_181700-628:localhost:8800 Q'Q ]$1570043383307bhuDV:localhost:8800m.room.member!sqkBzbHHJOTNWwynqV:localhost:8800mmU@anon-20191002_181700-628:localhost:8800  Q'Q  ]$1570043382306WhWIU:localhost:8800m.room.create!sqkBzbHHJOTNWwynqV:localhost:8800mm4@anon-20191002_181700-628:localhost:8800" Q?Q ]$1570043380304caenp:localhost:8800m.room.history_visibility!qInWQPtNQfBFoVzUtP:localhost:8800mmď@anon-20191002_181700-626:localhost:8800 Q/Q ]$1570043379303bCgUn:localhost:8800m.room.join_rules!qInWQPtNQfBFoVzUtP:localhost:8800mmH@anon-20191002_181700-626:localhost:8800 Q3Q ]$1570043378302mKBGD:localhost:8800m.room.power_levels!qInWQPtNQfBFoVzUtP:localhost:8800mm<@anon-20191002_181700-626:localhost:8800Q'Q ]$1570043377301OraEa:localhost:8800m.room.member!qInWQPtNQfBFoVzUtP:localhost:8800m9m๛@anon-20191002_181700-626:localhost:8800 Q'Q  ]$1570043377300CLPUi:localhost:8800m.room.create!qInWQPtNQfBFoVzUtP:localhost:8800m0mඋ@anon-20191002_181700-626:localhost:8800"Q?Q ]$1570043375299fbyXJ:localhost:8800m.room.history_visibility!FZOLkaLbBpaibrbHZx:localhost:8800mேm'@anon-20191002_181700-625:localhost:8800Q/Q ]$1570043374298UIMFg:localhost:8800m.room.join_rules!FZOLkaLbBpaibrbHZx:localhost:8800mଳm%@anon-20191002_181700-625:localhost:8800Q3Q ]$1570043373297SOjrf:localhost:8800m.room.power_levels!FZOLkaLbBpaibrbHZx:localhost:8800mmF@anon-20191002_181700-625:localhost:8800 91 0 <4, (1 T L?tIA  9eeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800 ݁eeQ$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I$CH1WUViW8k7_P_goVGO6ZIC3he85gG2mMESyk7Ax8Uw!peJMRJtXBvIiCttNmm:localhost:8800 UDeeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800 e>111$3:localhost:41985$2:localhost:41985!0:localhost:41985 >111$3:localhost:44405$2:localhost:44405!0:localhost:44405 eeQ$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c$OkBlusQLS0b0QsN3Daby_Gt6AknOz8eAd447SGxM3Yk!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g!kwJgbtogEzCqYbUXfh:localhost:8800eeQ$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq0$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI!utJsNQubeIXvcTKGpx:localhost:8800^1QQ$3:localhost:42455$1570043347278WlNld:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800 /eeQ$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1k$b-awWn-xiNb7Lun40scXfV1uOSnfMxSNB0yMvbJAtxE!UGVFuRGyPQmBbGsEDo:localhost:8800@eeQ$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo!ffijTnPMbTrDXHqOXf:localhost:8800ȁeeQ$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vM!AjjrNwXmPTCruHxaJq:localhost:88005eeQ$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SY$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzw!fJXiUpbbOlLbHWmPgs:localhost:8800peeQ$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r0!mMsxpaIlcykPuOnDyl:localhost:8800ځeeQ$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFM$wqluRv7xYtKUAOVx9LMCCs3rhMG1GV_DAY3mkKdWjTg!TlJCaYlCkOOVzFDlLx:localhost:8800 eeQ$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE$N9RL05XogBVCOzk9fr969aWLjNu1dmbYKMl2AahbMC8!IlGJpjzrvvAFuwTAgo:localhost:8800 فeeQ$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo$WPhiaoksyMyYOcEMdajc4k4g7jDWsPOCdoigV7wW7Ec!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$3Q4AYWlrbbSBUt-qn-urgtRjGNuzvrBEY7HjGAla5LM$tCSy4I3CMzF-1KCaed5s85BtKzpPLz083YVbptTxVMI!AMLmLqizBFklpqKibP:localhost:88008eeQ$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A$D8UeMfh26y33HlYexkFbz1Z79qWyudOSHzEtKxOfIKM!bNSXSTadOMhIrYpMzH:localhost:8800 >111$3:localhost:37265$2:localhost:37265!0:localhost:37265  eeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800 y_3QQ$39:localhost:42455$1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800 |`eeQ$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0I!BrssELMbasSzTFpIXm:localhost:8800&eeQ$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0!DnUHoxreGexNmjSVpq:localhost:8800eeQ$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo$NsRiuuy3WJuQyTggyUjuUc6Bki-Y4QGfyNnc3fPZvW8!WWZVpyLeZfyfpWidLx:localhost:8800 ":Q * A z  Fjm q-qru pQ? e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibility$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwhQ/ e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMjQ3 e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg Q']e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgdQ' e !DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIQ/ ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ8Q']ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk,Q'Eee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-EQ' ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHoQ3 ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuAQ'Ee !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-Ep Q? e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibility$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Qh Q/ e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQj Q3 e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA Q']e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkd Q' e !NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHor1']Q !5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800$1570043391316OJaBO:localhost:8800W1'E3 !5:localhost:42455m.room.member@__ANON__-10:localhost:42455$11:localhost:42455;1' 3 !5:localhost:42455m.room.create$10:localhost:42455?1/ 3 !5:localhost:42455m.room.join_rules$12:localhost:42455Q']O !sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829$157004338812XhwjX:localhost:8829iQ))Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800$1570043388312YDkJu:localhost:8800fQ? Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility$1570043387311DGzYi:localhost:8800^Q/ Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules$1570043386310bGMNl:localhost:8800cQ9 Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias$1570043385309imdbl:localhost:8800`Q3 Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels$1570043384308gPogh:localhost:8800~Q']Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800$1570043383307bhuDV:localhost:8800Z}Q' Q !sqkBzbHHJOTNWwynqV:localhost:8800m.room.create$1570043382306WhWIU:localhost:8800f|Q? Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility$1570043380304caenp:localhost:8800^{Q/ Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules$1570043379303bCgUn:localhost:8800`zQ3 Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels$1570043378302mKBGD:localhost:8800yQ']Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.member@anon-20191002_181700-626:localhost:8800$1570043377301OraEa:localhost:8800ZxQ' Q !qInWQPtNQfBFoVzUtP:localhost:8800m.room.create$1570043377300CLPUi:localhost:8800fwQ? Q !FZOLkaLbBpaibrbHZx:localhost:8800m.room.history_visibility$1570043375299fbyXJ:localhost:8800  +pQQay $1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3209}{"auth_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}], ["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}]], "prev_events": [["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}]], "type": "m.room.power_levels", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"users": {"@anon-20191002_181700-626:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043378302mKBGD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043378912, "hashes": {"sha256": "hj+DjjDOKZJzAgSef7t9tSE8QmIj1SBnJEMNyJXG0gA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "bhVV5l4zHEMAU3km1sNtNJy9MlEBA/IoFWXCXnmGHmOGyps2KjKeaULaaTjmj+B5JoSoobK4AgaXlMdzc2x2Bg"}}, "unsigned": {"age_ts": 1570043378912}}oQQa) $1570043377301OraEa:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3208}{"auth_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}]], "prev_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}]], "type": "m.room.member", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-626", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-626:localhost:8800", "event_id": "$1570043377301OraEa:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043377977, "hashes": {"sha256": "ogMk0jwzO03dpd8DbKk0DiL2MbW80Nd8R7095TM9XwU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LEW+o9xP/3CjlQ+fVWEnxJLKa3Z9iS46xT1896T7wrU1TOj3gtmn0sdE7SfNReE5F3aDPsf15GMIA5V8j9CMDw"}}, "unsigned": {"age_ts": 1570043377977}}nQQaC $1570043377300CLPUi:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3207}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-626:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043377300CLPUi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043377200, "hashes": {"sha256": "DUeEen0zAS5bkBaQsmF98HUVhmbZA1QZ4ti5L0nbPyM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hRubHe42t6aMYgEcORZUuzUc/pF5wtsalSirWJ2DVf45cCqaqH0Tl7S7jeMYnRl7gD/hcl0uBMfrYPIYrbiODw"}}, "unsigned": {"age_ts": 1570043377200}} G o= u C % D| W Jp %W Q > | J  ]+c1j8 ] + P  zUC5waNW6wj52-1e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmo G1e$GF7rqu86TS40OWgHXXK_A36DxaVn6mmZUlagtS5pW_A1e$GLTzbj0pE6G6l9ebvquKz8CgSxx9RZHhWX-ZdO3la0I1e$GK3rWRh4fWGftdCoFqBwY3Q0qCZqH5zQw1tiWNwKX4Q j1e$G7txhO-_r3csN75uCYz-1xEpxWIghArhcVV189PFsNE1e$G6NZOwC-OdTHD3lceD6qz8mh3j_ZzUHvLreD5sI0jXoI1e$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc`1e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-ok1e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwD1e$G9RKwCbd0gVXQuqQwg_O6ioEdMqz6YLmly3YGpfgC6w1e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4j1e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOg1e$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw1e$FznTf4jeVAkKlk6XCdw28qdY5zhBUmLAL-WDKegKFxA1e$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU0e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAt1e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-g$1e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1ag11e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70q1e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUh1e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7I_1e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMd0e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQ 1e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZA1e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQ1e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G41e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFII1e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dis1e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pww1e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR81e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXU1e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ41e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxE1e$GVVvgzbwO7I32BkE-OJVpNv88_EBqX2a0A2pe6jef3E 1e$GTjfRrf8oLwKjxps9shrGDYpVbSAQHO2rZO-pjseun4 t1e$GScPnJARpzPegEe8Ejg9cxpPJg4FhFZH_ZuZ5LhjzKs0e$GRuzrrjZAm1KJL_DXbY_olL-gEvProtOejoKQOkxqDob1e$GQyFK5OQGyWj0LSOojuvOiBgJpR5_am5ejnrZiIdcyE}1e$GQYI6iASKLxKDHe40lLbWfs8R_RxreQ5yKGGr1KkydEi1e$GQ6oa2teu32NvDu58QuMkoCPVPCZRD3OxHFrRq4L1r8 ,1e$GPsoFs2HnQWAiMVZ77mMtZi4lAIbbWykiJnPJw-yFII1e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0 1e$GYzB5vtUCYWr-w5Ai5A978wjmzyAs-VoXxIgfLdJgv0 1e$GWLgJJYKITL_93LYvZWy9uftQI-zXs2rftxFy_kYTSA?1e$GVfnKoLyz7ySf-19cL4ImUq3kYSlrrGglCykAFJ-dsM 1e$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C41e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzw 1e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg1e$GfO9JzO2Skk22j_2CJhioM77FqyGQi6yTsqDnOpUJUQ}1e$GewswacEzHkW8MRSn001nM1gCndzWEfK5eOiCvwppts 1e$GdvgtDkd-vT0b7j09SmvlukhecUSXcJgy2EPkSRDDvs;0e$GcM4D_0GpUXDO3xSdCEE3FxMv-GwJ_NjWnHfpsU_-kgl1e$GZ12RNJC_2b3quwbwtWZgKkmByXOvFEivvb-k7Y8W3E1e$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg 1e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 1e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I ~1e$GE7XaSYcQIK7DmqdIlW1gU6Ou-TL8_lmzH-JLoqhN4E&1e$GDkbDkVMXnNhAQfoAQUkDeSpjnkfvNqQg4B4oM168y871e$GAwvF-XCD4_aTtgUW9azLLE_o_HErf8TFsvKhOfhzT41e$G4yhagjAn2peYhuI1WyuwHBUG2fZL2GYESww1usBkPM v21e$FzRhf2zO2KkFsMOWtiG9TMCMMZCha1fPqm1bITod_Ck1e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOId1e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9k51e$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo51e$G9l1CBJi7f61YVA7VuQ0CSL-Dp-YOZin-f_IOho2w7o 1e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8 a1e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXskZ1e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYg1e$GDistFMFmndpnqgNIGetritSJHZnaaHn3CC4XKZIRK4 Z2  sQQaC $1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3212}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"room_version": "2", "creator": "@anon-20191002_181700-628:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043382306WhWIU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043382984, "hashes": {"sha256": "XlLKPJv1efcMN4F/b7rAwfi9Bzj0002qllXkt0/WwkQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aOKXah6B6zOrOUX4l0jG7AHSM4j5WIHLnd/M0G3xmYsjbxDM6E6esPMbLSY01vdCyOC2BpSB2IQOAEg4INWnAg"}}, "unsigned": {"age_ts": 1570043382984}}xrQQa $1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3211}{"auth_events": [["$1570043378302mKBGD:localhost:8800", {"sha256": "zjJodajyY++7ScVlKXmmW5aqfvwBZyOZJbCHVwjwx6k"}], ["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}], ["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}]], "prev_events": [["$1570043379303bCgUn:localhost:8800", {"sha256": "Jl1Rz50FBeF8fY+ntspdvJOIuCz5lE5gKWdG9NkKmmQ"}]], "type": "m.room.history_visibility", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043380304caenp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043380607, "hashes": {"sha256": "PCE2JvOldVzfET30jiKcUMnlQKiyUw7k4RTs67SV5WA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/JlPBXHX9q058BM4H4owNullAar1VfTyQWJps2+2a/Hm51bgRkfTIhD6CLGcrsvvbwu+hbyLYmX5ZXWutihABg"}}, "unsigned": {"age_ts": 1570043380607}}gqQQaq $1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800{"token_id": 607, "stream_ordering": 3210}{"auth_events": [["$1570043377300CLPUi:localhost:8800", {"sha256": "4C4EyKKhVSHcEV9DY6dKRzsRPLVlqt09fH2jd0KtuXA"}], ["$1570043377301OraEa:localhost:8800", {"sha256": "jNxtzZCffnwrBgmKqJj3w2byfsODd9JJ1Hhihie96F8"}], ["$1570043378302mKBGD:localhost:8800", {"sha256": "zjJodajyY++7ScVlKXmmW5aqfvwBZyOZJbCHVwjwx6k"}]], "prev_events": [["$1570043378302mKBGD:localhost:8800", {"sha256": "zjJodajyY++7ScVlKXmmW5aqfvwBZyOZJbCHVwjwx6k"}]], "type": "m.room.join_rules", "room_id": "!qInWQPtNQfBFoVzUtP:localhost:8800", "sender": "@anon-20191002_181700-626:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043379303bCgUn:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043379678, "hashes": {"sha256": "fSCDUVKUntPAq+42H298yd5mzsN6pw7JBm0AqbqUQXo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cce/rIe8dSZhZNpG+QaurD7FPYxloXWmrQgduLk+eaf28dJU3U1MNiZ88wuRBmva02y+alGh2kQriyDgVEY4Bw"}}, "unsigned": {"age_ts": 1570043379678}} RSzM nAsF&4am@ ` 3  S & s F  e 8 X +wJi<[.{N,Q!wCsDjKBtuUbrmZgjsB:localhost:8800==,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 +Q !wBkUBAjOznOyxrLchl:localhost:8800 -,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!vyCFfUTJKYJSDadFhT:localhost:8800^^-,Q!wCsDjKBtuUbrmZgjsB:localhost:8800>>!Z,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wCsDjKBtuUbrmZgjsB:localhost:8800<<,Q!wCsDjKBtuUbrmZgjsB:localhost:8800;;+Q !wCsDjKBtuUbrmZgjsB:localhost:8800::,Q!wBBQYEPjQGnoAzDpEu:localhost:8800  ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 +Q !wBBQYEPjQGnoAzDpEu:localhost:8800 -,Q!wsvXTJXouVkEZcCFsD:localhost:8800+Q !wsvXTJXouVkEZcCFsD:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800+Q !wnriPzXkIMmdTNoJKU:localhost:8800,Q!whuymJoLfUdkFdxoyE:localhost:8800 8 8,Q!whuymJoLfUdkFdxoyE:localhost:8800 7 7,Q!whuymJoLfUdkFdxoyE:localhost:8800 6 6,Q!whuymJoLfUdkFdxoyE:localhost:8800 5 5,Q!whuymJoLfUdkFdxoyE:localhost:8800 4 4,Q!whuymJoLfUdkFdxoyE:localhost:8800 3 3,Q!whuymJoLfUdkFdxoyE:localhost:8800 2 2+Q !whuymJoLfUdkFdxoyE:localhost:8800 1 1,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800+Q !wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wLitJYvgvNJzanSIvO:localhost:8800bb,Q!wLitJYvgvNJzanSIvO:localhost:8800aa,Q!wLitJYvgvNJzanSIvO:localhost:8800``,Q!wLitJYvgvNJzanSIvO:localhost:8800__,Q!wLitJYvgvNJzanSIvO:localhost:8800^^+Q !wLitJYvgvNJzanSIvO:localhost:8800]],Q!wIhMbfQzYbJobPdwyi:localhost:8800,Q!wIhMbfQzYbJobPdwyi:localhost:8800~~,Q!wIhMbfQzYbJobPdwyi:localhost:8800}},Q!wIhMbfQzYbJobPdwyi:localhost:8800||,Q!wIhMbfQzYbJobPdwyi:localhost:8800{{+Q !wIhMbfQzYbJobPdwyi:localhost:8800zz,Q!wAyboOFgsOPwkmgMAI:localhost:8800??,Q!wAyboOFgsOPwkmgMAI:localhost:8800>>,Q!wAyboOFgsOPwkmgMAI:localhost:8800==,Q!wAyboOFgsOPwkmgMAI:localhost:8800<<,Q!wAyboOFgsOPwkmgMAI:localhost:8800;;+Q !wAyboOFgsOPwkmgMAI:localhost:8800::,Q!vyCFfUTJKYJSDadFhT:localhost:8800 `` RSzM nAsF&4am@ ` 3  S & s F  e 8 X +wJi<[.{N,Q!wCsDjKBtuUbrmZgjsB:localhost:8800==,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 +Q !wBkUBAjOznOyxrLchl:localhost:8800 -,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!vyCFfUTJKYJSDadFhT:localhost:8800^^-,Q!wCsDjKBtuUbrmZgjsB:localhost:8800>>!Z,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wBkUBAjOznOyxrLchl:localhost:8800 ,Q!wCsDjKBtuUbrmZgjsB:localhost:8800<<,Q!wCsDjKBtuUbrmZgjsB:localhost:8800;;+Q !wCsDjKBtuUbrmZgjsB:localhost:8800::,Q!wBBQYEPjQGnoAzDpEu:localhost:8800  ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 ,Q!wBBQYEPjQGnoAzDpEu:localhost:8800 +Q !wBBQYEPjQGnoAzDpEu:localhost:8800 -,Q!wsvXTJXouVkEZcCFsD:localhost:8800+Q !wsvXTJXouVkEZcCFsD:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800 ,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800,Q!wnriPzXkIMmdTNoJKU:localhost:8800+Q !wnriPzXkIMmdTNoJKU:localhost:8800,Q!whuymJoLfUdkFdxoyE:localhost:8800 8 8,Q!whuymJoLfUdkFdxoyE:localhost:8800 7 7,Q!whuymJoLfUdkFdxoyE:localhost:8800 6 6,Q!whuymJoLfUdkFdxoyE:localhost:8800 5 5,Q!whuymJoLfUdkFdxoyE:localhost:8800 4 4,Q!whuymJoLfUdkFdxoyE:localhost:8800 3 3,Q!whuymJoLfUdkFdxoyE:localhost:8800 2 2+Q !whuymJoLfUdkFdxoyE:localhost:8800 1 1,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wUuodvgsmAJqKJUBCQ:localhost:8800+Q !wUuodvgsmAJqKJUBCQ:localhost:8800,Q!wLitJYvgvNJzanSIvO:localhost:8800bb,Q!wLitJYvgvNJzanSIvO:localhost:8800aa,Q!wLitJYvgvNJzanSIvO:localhost:8800``,Q!wLitJYvgvNJzanSIvO:localhost:8800__,Q!wLitJYvgvNJzanSIvO:localhost:8800^^+Q !wLitJYvgvNJzanSIvO:localhost:8800]],Q!wIhMbfQzYbJobPdwyi:localhost:8800,Q!wIhMbfQzYbJobPdwyi:localhost:8800~~,Q!wIhMbfQzYbJobPdwyi:localhost:8800}},Q!wIhMbfQzYbJobPdwyi:localhost:8800||,Q!wIhMbfQzYbJobPdwyi:localhost:8800{{+Q !wIhMbfQzYbJobPdwyi:localhost:8800zz,Q!wAyboOFgsOPwkmgMAI:localhost:8800??,Q!wAyboOFgsOPwkmgMAI:localhost:8800>>,Q!wAyboOFgsOPwkmgMAI:localhost:8800==,Q!wAyboOFgsOPwkmgMAI:localhost:8800<<,Q!wAyboOFgsOPwkmgMAI:localhost:8800;;+Q !wAyboOFgsOPwkmgMAI:localhost:8800::,Q!vyCFfUTJKYJSDadFhT:localhost:8800 `` $@^ 7 M  |  GWf$@Iq.m$eQ? $PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800m.room.history_visibilitye#eQ/ $BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800m.room.join_rulesg"eQ3 $o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800m.room.power_levels !eQ']$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800a eQ' $Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800m.room.create}eQ'E$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455meQ? $sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibilityeeQ/ $nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rulesgeQ3 $r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels eQ']$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800aeQ' $7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create}eQ'E$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455meQ? $xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibilityeeQ/ $egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rulesgeQ3 $t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels eQ']$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800aeQ' $H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800m.room.create}eQ'E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455meQ? $mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibilityeeQ/ $PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rulesgeQ3 $JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levels eQ']$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800aeQ' $BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800m.room.createo Q1']$1570043391316OJaBO:localhost:8800!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800< 31/ $12:localhost:42455!5:localhost:42455m.room.join_rulesT 31'E$11:localhost:42455!5:localhost:42455m.room.member@__ANON__-10:localhost:424558 31' $10:localhost:42455!5:localhost:42455m.room.create~ OQ']$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829fQQ))$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800cQQ? $1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility[QQ/ $1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules`QQ9 $1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias]QQ3 $1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levelsQQ']$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800WQQ' $1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.createcQQ? $1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility "M 0 }   % 5EUeu -=Mu ]@anon-20191002_181700-662:localhost:8800$2b$04$oXURBEfBko3aRysF8PyhnOx1dvPKSwPLSSNEnQfLxhPDuBygHFHZK]u ]@anon-20191002_181700-661:localhost:8800$2b$04$93P6vBHax7M4lNVuL1Otc.dapDQ.R76wCUSOMfRYiiCP7LTATK8qC]u ]@anon-20191002_181700-660:localhost:8800$2b$04$A8/pvVjN6IIeOWVs6N3DEOlMcojaQGQ7DDnfvWDTFWxMPlyAQHR9.]u ]@anon-20191002_181700-659:localhost:8800$2b$04$b9KomiH8acsXbdB5TLEXXu4HAWX9CS3eW5s5y3OmwT8J0YoR72oq.]u ]@anon-20191002_181700-658:localhost:8800$2b$04$OPl/fdHWm2M8AoL4CSN1j.szhm.pS5O87z3pjLYfXrt3GKRaKJK3a]u ]@anon-20191002_181700-657:localhost:8800$2b$04$RUCr8C1pPT9UNo6g7c7zHuTd8Xj4pm0Rox/TGRLD461KFjry1zXzG]u ]@anon-20191002_181700-656:localhost:8800$2b$04$l5vJsV4jEqAM2dWsFxR1GOiisRUrzjuDzfnr1GOfTRojQeZ2WWJZu]u ]@anon-20191002_181700-655:localhost:8800$2b$04$9Uq0RCdTcwaH/bMSO0Z/COn2W9CzUk39/sIt7U5vqRTdYATjcPM8a]u ]@anon-20191002_181700-654:localhost:8800$2b$04$ZdL8VealXboG6fLNcmPTueCDyT5wor/b4jH1PuA4qKH..LVySn4kK]u ]@anon-20191002_181700-653:localhost:8800$2b$04$U61VJDeL20mgDNxutjI4kuL/nOQeUkgdiZRR.ZDWrY6WPIzT5nwsi]u ]@anon-20191002_181700-652:localhost:8800$2b$04$z/wtQmcPLejwMMDV7vxBX.Diho8W6AbAxNZr1/PCHQMr01UzpeUIe]zu ]@anon-20191002_181700-651:localhost:8800$2b$04$cWAUIECW2N8zSYGGQZQRQOvy9NA7w6vpaGUI2n68.8v1BG9.WVFS.]xu ]@anon-20191002_181700-650:localhost:8800$2b$04$uI0iAnTTlwiL4t45TAbxmuDJvqytRTXXPmz99/uzz1av0QPWA1szu]vu ]@anon-20191002_181700-649:localhost:8800$2b$04$Czs1k31p0U2Vzw7u/a0LKOcrJh96CjtFmxeYs0ID36Bawz6WGpJFe]uu ]@anon-20191002_181700-648:localhost:8800$2b$04$89DM05JrFotukLOxVHyoze4faL3dQmHs4WE8toNENjnFT/FazAQ1u]su ]@anon-20191002_181700-647:localhost:8800$2b$04$gySK6ZU6trx3obBITroLKe/nJcx85QAgfBvL7evd9X2r7CVdinX1e]ru ]@anon-20191002_181700-646:localhost:8800$2b$04$UsbQirgKbLx7LmCsYTNrJeHK6oUGbD5EWrgzSBwT6pBMbYU1cwE16]lu ]@anon-20191002_181700-645:localhost:8800$2b$04$Xd8BFfV72SN5hQ3aqrb2QuItMW4GHPsprqjdV05vZa8HVnyxT1nwS]`u ]@anon-20191002_181700-644:localhost:8800$2b$04$JjKRfY5gFqc96Md6zWbT0.xDPWKP/T0dE2E7bg7fnZQafVNWHQiWW]`u ]@anon-20191002_181700-643:localhost:8800$2b$04$Xk4Ls4srnmdwCSBwr7YkeOAEGs7GywjjktKjN3il0AC2FJEbCSzNu]Su~ ]@anon-20191002_181700-642:localhost:8800$2b$04$ZUoLXn2p6UdRQ5k0f0eLk.S6J2w4Si7y4ZZG2pUagGjO4t5v36/7m]Lu} ]@anon-20191002_181700-641:localhost:8800$2b$04$j.367Gpt9FWFi/KzrcsQVOO0Du1B8nh9aETEsU12uU0cFYMh9QeZG]Cu| ]@anon-20191002_181700-640:localhost:8800$2b$04$g88tnoC4dfeezWApxbjC7.jZWNur2qUZY4N7uIlFGRsKfQQTYANT2]:u{ ]@anon-20191002_181700-639:localhost:8800$2b$04$dTzbNcP.ESSf9VVhidGQ6OQIeDhbRxoM.soZBYeuk3IdFg8T8RXBe]2uz ]@anon-20191002_181700-638:localhost:8800$2b$04$Y52H9Ug4d9P78jvk/ZKdL.pCLpjHvL4vESBwZD0qbEhZENFVsaWOi])uy ]@anon-20191002_181700-637:localhost:8800$2b$04$sSAxTLM8MnSY/KqTkiBZ2eJUpKs.AQq6gzMXHIG6HgOOj8OGFg9NW] 8x ] @anon-20191002_181700-636:localhost:8800]uw ]@anon-20191002_181700-635:localhost:8800$2b$04$5fZCfWVNUGhG83MRwQBBPeGjPuT/2qWFz.U9W0L9w8QC8K6LnfOjq]uv ]@anon-20191002_181700-634:localhost:8800$2b$04$3XebvH7JYaTQAkrcQ8GiYeI/xuZQEgpnHyMZ7WXqgbWYhSYYHcU6m] uu ]@anon-20191002_181700-633:localhost:8800$2b$04$PlNt4QMIW5vqjPa/zvrxjO8c1yngchNeq12MnXIVHAu4RapesQQAW]ut ]@anon-20191002_181700-632:localhost:8800$2b$04$9QxArthuN8HUY5C.2GZ8T.Pgx7oO.ncE6En/H.nDxgz/VFvfNH8Q2]us ]@anon-20191002_181700-631:localhost:8800$2b$04$lWTlWWNXi7RJ1/vNanvDI.XJuXSm/AoZk6B.Fdrr1FIIfiTC15i1C]ur ]@anon-20191002_181700-630:localhost:8800$2b$04$CiPidbbC9zpzhYB4drscl.I13SrzT0g1xUsahf1Y8CgH7H74HEu/2]uq ]@anon-20191002_181700-628:localhost:8800$2b$04$a4dkrhK0Hk2yVfDTYnNFT.XAtKwkXrxNqzunmuKkhhnt4IQpRQBZG] ? G R V  \  b ! h ' o .u9x<L RX]b&e)> ]  @anon-20191002_181700-663:localhost:8800m&\> ]  @anon-20191002_181700-661:localhost:8800m&\9 ]@anon-20191002_181700-663:localhost:8800a&\> ]  @anon-20191002_181700-662:localhost:8800m&\9 ]@anon-20191002_181700-662:localhost:8800a&\> ]  @anon-20191002_181700-659:localhost:8800m&\9 ]@anon-20191002_181700-661:localhost:8800a&\> ]  @anon-20191002_181700-660:localhost:8800m&\9 ]@anon-20191002_181700-660:localhost:8800a&\9 ]@anon-20191002_181700-659:localhost:8800a&\? ] @anon-20191002_181700-658:localhost:8800m&\9 ]@anon-20191002_181700-658:localhost:8800a&\? ] @anon-20191002_181700-657:localhost:8800m&\J9 ]@anon-20191002_181700-657:localhost:8800a&\> ]  @anon-20191002_181700-656:localhost:8800m&\9 ]@anon-20191002_181700-656:localhost:8800a&\>~ ]  @anon-20191002_181700-655:localhost:8800m&\9} ]@anon-20191002_181700-655:localhost:8800a&\>| ]  @anon-20191002_181700-654:localhost:8800m&\9{ ]@anon-20191002_181700-654:localhost:8800a&\>z ]  @anon-20191002_181700-653:localhost:8800m&\9y ]@anon-20191002_181700-653:localhost:8800a&\>x ]  @anon-20191002_181700-652:localhost:8800m&\9w ]@anon-20191002_181700-652:localhost:8800a&\9v ]@anon-20191002_181700-651:localhost:8800a&\9u ]@anon-20191002_181700-650:localhost:8800a&\9t ]@anon-20191002_181700-649:localhost:8800a&\9s ]@anon-20191002_181700-648:localhost:8800a&\9r ]@anon-20191002_181700-647:localhost:8800a&\>q ] @anon-20191002_181700-646:localhost:8800m&\K>n ]  @anon-20191002_181700-644:localhost:8800m&\89p ]@anon-20191002_181700-646:localhost:8800a&\>o ]  @anon-20191002_181700-645:localhost:8800m&\C9m ]@anon-20191002_181700-645:localhost:8800a&\9l ]@anon-20191002_181700-644:localhost:8800a&\>k ]  @anon-20191002_181700-643:localhost:8800m&\:w9j ]@anon-20191002_181700-643:localhost:8800a&\=i ]  @anon-20191002_181700-642:localhost:8800m&\9h ]@anon-20191002_181700-642:localhost:8800a&\>g ]  @anon-20191002_181700-641:localhost:8800m&\u9f ]@anon-20191002_181700-641:localhost:8800a&\>e ]  @anon-20191002_181700-640:localhost:8800m&\u9d ]@anon-20191002_181700-640:localhost:8800a&\>c ]  @anon-20191002_181700-639:localhost:8800m&\.9b ]@anon-20191002_181700-639:localhost:8800a&\>a ]  @anon-20191002_181700-638:localhost:8800m&\}9` ]@anon-20191002_181700-638:localhost:8800a&\>_ ]  @anon-20191002_181700-637:localhost:8800m&\9^ ]@anon-20191002_181700-637:localhost:8800a&\>] ] @anon-20191002_181700-636:localhost:8800m&\9\ ]@anon-20191002_181700-636:localhost:8800a&\>[ ]  @anon-20191002_181700-635:localhost:8800m&\C9Z ]@anon-20191002_181700-635:localhost:8800a&\?Y ] @anon-20191002_181700-634:localhost:8800m&\C9X ]@anon-20191002_181700-634:localhost:8800a&\?W ] @anon-20191002_181700-633:localhost:8800m&\C9V ]@anon-20191002_181700-633:localhost:8800a&\>U ] @anon-20191002_181700-632:localhost:8800m&\9T ]@anon-20191002_181700-632:localhost:8800a&\9S ]@anon-20191002_181700-631:localhost:8800a&\9R ]@anon-20191002_181700-630:localhost:8800a&\>Q ]  @anon-20191002_181700-628:localhost:8800m&\9P ]@anon-20191002_181700-628:localhost:8800a&\ C j / ~ C  W k0OcD Xl1E Ym2F ( w <   V8?]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAM81]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQ80]!@anon-20191002_181700-664:localhost:8800KYCVQKAERI8/]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIH8.]!@anon-20191002_181700-662:localhost:8800BPDPANNUMT8-]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXV8,]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXE8+]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOF8*]!@anon-20191002_181700-658:localhost:8800NAYXIQANDE8)]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYF8(]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGI8']!@anon-20191002_181700-655:localhost:8800JMLNJUZSIR8&]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXA8%]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGU8$]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHS8#]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJ8"]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUO8!]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWA8 ]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGG8]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOS8]!@anon-20191002_181700-646:localhost:8800HFMIURTAJA8]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVG8]!@anon-20191002_181700-644:localhost:8800INFGSFBNKU8]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQ8]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQ8]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVI8]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQN8]!@anon-20191002_181700-639:localhost:8800VIDPYYIORG8]!@anon-20191002_181700-638:localhost:8800AMILRIOBVF8]!@anon-20191002_181700-637:localhost:8800SOCIZPGICG8]!@anon-20191002_181700-636:localhost:8800EGOZKYJYMN8 ]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPW8 ]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWO8 ]!@anon-20191002_181700-625:localhost:8800LXKNSEODEI8 ]!@anon-20191002_181700-624:localhost:8800AATHUMCUIL8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUD8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLU8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDH8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQ8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVV8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABY8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUET8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHS8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEM8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZ8~]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHI8}]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRP8|]!@anon-20191002_181700-611:localhost:8800UERIFUMBMU8{]!@anon-20191002_181700-610:localhost:8800ZXXERHSURN8z]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAE8=]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT8>]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE29E-@__ANON__-46:localhost:42455random_device_id88]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNR87]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF86]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMK85]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWO84]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGW83]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHN82]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSB8]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOL8]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJG8]!@anon-20191002_181700-633:localhost:8800TRECTOOCOT8]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWE8]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZ8]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPE8 ]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTX H~O d5sDY* n ?  T % i : ~ O d D r9Ok2N0L.Q$1570043748464QpNXV:localhost:8800sha256  .Q$1570043750466Tmiqu:localhost:8800sha256 8e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUsha256.Q$1570043754467mNKfq:localhost:8800sha256 .Q$1570043646420mPrhj:localhost:8800sha256 y.Q$1570043646419zIOAX:localhost:8800sha256 x.Q$1570043645418ABZkc:localhost:8800sha256 w.Q$1570043593416CouYv:localhost:8800sha256 D.Q$1570043592415heiAH:localhost:8800sha256 C.Q$1570043591414NuXxd:localhost:8800sha256 B.Q$1570043590413Khvee:localhost:8800sha256 A.Q$1570043589412JaDTY:localhost:8800sha256 @.Q$1570043588411PDBWG:localhost:8800sha256 ?8e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwsha256F8e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQsha256 08e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCosha256 ,8e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qYsha2568e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4sha256 &8e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28sha2568e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQsha2568e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpssha256t8e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPosha256 8e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7Esha2568e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwsha256 8e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6Msha2568e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Qsha256B1$1:localhost:42455sha256 L8e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxYsha256?3$19:localhost:42455sha256 8e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4sha2563$18:localhost:42455sha256 8e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQsha2563$17:localhost:42455sha256 3$16:localhost:42455sha256 8e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbksha25633$15:localhost:42455sha256 .Q$1570043748463euAqZ:localhost:8800sha256 .Q$1570043747462YuUEF:localhost:8800sha256 .Q$1570043746461eQhrq:localhost:8800sha256 .Q$1570043745460sJOiY:localhost:8800sha256 .Q$1570043744459BIUYb:localhost:8800sha256 .Q$1570043741458PZvre:localhost:8800sha256 .Q$1570043739456qeuuS:localhost:8800sha256 .Q$1570043738455KNDHf:localhost:8800sha256 .Q$1570043737454adOjg:localhost:8800sha256 .Q$1570043736453VtbeL:localhost:8800sha256 .Q$1570043736452Igyim:localhost:8800sha256 .Q$1570043733451EJhWh:localhost:8800sha256 .Q$1570043730449XMaNb:localhost:8800sha256 .Q$1570043729448XmFHA:localhost:8800sha256 .Q$1570043728447IkYro:localhost:8800sha256 .Q$1570043727446CGYaE:localhost:8800sha256 .Q$1570043726445lSnmj:localhost:8800sha256 .Q$1570043715443SSqOY:localhost:8800sha256 .Q$1570043713441WJPkP:localhost:8800sha256 .Q$1570043712440rfNzQ:localhost:8800sha256 .Q$1570043712439XdJFc:localhost:8800sha256 .Q$1570043711438bqOHL:localhost:8800sha256 .Q$1570043710437aFoBB:localhost:8800sha256 .Q$1570043683436iTOlZ:localhost:8800sha256 .Q$1570043680434abJWo:localhost:8800sha256 .Q$1570043670433bjAzo:localhost:8800sha256 .Q$1570043668432TfiHj:localhost:8800sha256 .Q$1570043664431IMLSL:localhost:8800sha256 .Q$1570043660430kLPpN:localhost:8800sha256 .Q$1570043656428rZaqi:localhost:8800sha256 .Q$1570043655427tEtWD:localhost:8800sha256 .Q$1570043654426seixP:localhost:8800sha256 .Q$1570043653425AhyPB:localhost:8800sha256 .Q$1570043652424mkkFn:localhost:8800sha256 ~.Q$1570043648422SglHQ:localhost:8800sha256 {.Q$1570043647421dmTZW:localhost:8800sha256 z = = vQQa5 $1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3215}{"auth_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}], ["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}]], "prev_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}]], "type": "m.room.canonical_alias", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"alias": "#test-20191002_181700-47:localhost:8800"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043385309imdbl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043385355, "hashes": {"sha256": "8VOLc8rQdgis4y7qBYZuPpNMBJvGQfPnk445Ym6LT+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "n/R94TtSR9nl5cugz0Odev/JAftIoFgIfUpmIRF2CsC23PtGfdkXR1AIJFcSt6GiGwRVlRPZjKkRW16nZ4FCAw"}}, "unsigned": {"age_ts": 1570043385355}}+uQQay $1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3214}{"auth_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "type": "m.room.power_levels", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"users": {"@anon-20191002_181700-628:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043384308gPogh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043384613, "hashes": {"sha256": "gAHq3lJhXB742jwlHrp0ue6lPrPBICScnbtcfHga1zc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GAFn1Q2dFkysrvFHnCAjiqvystSeMtyjoh8Yo5rqM8gFutT4eolXayJvG+zZA9Ql1I6p1+KVPYq2L+/x0JsdBQ"}}, "unsigned": {"age_ts": 1570043384613}}tQQa) $1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3213}{"auth_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}]], "prev_events": [["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}]], "type": "m.room.member", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-628", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-628:localhost:8800", "event_id": "$1570043383307bhuDV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043383789, "hashes": {"sha256": "fW6wLCPmj3T2ppuD1Awz8+bWsoHhEEcFufZ1KH1EHUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eu9W8JH2Q61BpbSMwJGvuytPdqMPyhDrM07l5dpIBjtZQ4K2+odM0cAbb66noiwPQa+rKB5VukefVo9Ybp39Dw"}}, "unsigned": {"age_ts": 1570043383789}} "&M u 6 j      ~eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800~eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800~ eeQ$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800~eeQ$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800KQ31$1570043391316OJaBO:localhost:8800$12:localhost:42455!5:localhost:42455KQ31$1570043391316OJaBO:localhost:8800$10:localhost:42455!5:localhost:42455<331$12:localhost:42455$11:localhost:42455!5:localhost:42455<331$12:localhost:42455$10:localhost:42455!5:localhost:42455<331$11:localhost:42455$10:localhost:42455!5:localhost:42455iOQQ$157004338812XhwjX:localhost:8829$1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800iOQQ$157004338812XhwjX:localhost:8829$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800iOQQ$157004338812XhwjX:localhost:8829$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800jQQQ$1570043388312YDkJu:localhost:8800$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800j~QQQ$1570043388312YDkJu:localhost:8800$1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800j}QQQ$1570043388312YDkJu:localhost:8800$1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 8l D `8N]c!E@anon-20191002_181700-638:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAoAMILRIOBVF127.0.0.1Perl + Net::Async::HTTP/0.44mVM]c!E@anon-20191002_181700-637:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgoSOCIZPGICG127.0.0.1Perl + Net::Async::HTTP/0.44mqۃL]c!E@anon-20191002_181700-636:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SYnVqRiwwZVFsO1IzSHYKMDAyZnNpZ25hdHVyZSAGsSAyhrkFU-OZCtccNJK_X4gCUh51n0KT15bBg2OOGAoEGOZKYJYMN127.0.0.1Perl + Net::Async::HTTP/0.44mMHK]c!E@anon-20191002_181700-635:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwoSCDBHOHLOL127.0.0.1Perl + Net::Async::HTTP/0.44m3J]c!E@anon-20191002_181700-634:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAoGKOWEMDMJG127.0.0.1Perl + Net::Async::HTTP/0.44mI]c!E@anon-20191002_181700-633:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgoTRECTOOCOT127.0.0.1Perl + Net::Async::HTTP/0.44mǃH]c!E@anon-20191002_181700-632:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwoVIXCAXAJWE127.0.0.1Perl + Net::Async::HTTP/0.44mG]c!E@anon-20191002_181700-631:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQoKQCHQRUBXZ127.0.0.1Perl + Net::Async::HTTP/0.44mMF]c!E@anon-20191002_181700-630:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygoVFOQXGNRPE127.0.0.1Perl + Net::Async::HTTP/0.44m꺃E]c!E@anon-20191002_181700-628:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwoJKNWCQGMTX127.0.0.1Perl + Net::Async::HTTP/0.44m  yQQaI $1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3218}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043387311DGzYi:localhost:8800", {"sha256": "psdvdJrX0iILj82u2iCiAaSQyaniIbrFjEWCJexb0c0"}]], "type": "m.room.aliases", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"aliases": ["#test-20191002_181700-47:localhost:8800"]}, "depth": 7, "prev_state": [], "state_key": "localhost:8800", "event_id": "$1570043388312YDkJu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043388079, "hashes": {"sha256": "rRMszM54QoEYnRCHjNrbF9c9ZXQMUd6xeVyUmZgZh3o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x2S+GLrcqHWm+YieSFl89HFPywym4g49efVb0JwMTAhw0PXRCKjZunUqk0Eu45N/sJQag+eThyx/ohSOygZEBA"}}, "unsigned": {"age_ts": 1570043388079}}xxQQa $1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3217}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043386310bGMNl:localhost:8800", {"sha256": "Pd/YfY1y6p5qEeUhsQBujuEaH0O6cNwBJavbSdZDNHE"}]], "type": "m.room.history_visibility", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043387311DGzYi:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043387204, "hashes": {"sha256": "ZqmYxzvut2db1OENbq3EIQ3dRCFpCsvLVQr1Y+O4kz8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gxpJTahpmBo8knn5hSiRijFrcX3M/BiTtfV8QULnWWwMTMVsHHnqqwLOhPICUfSPqxjJ2TfsE7Efr0a6cBaqCQ"}}, "unsigned": {"age_ts": 1570043387204}}gwQQaq $1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800{"token_id": 609, "stream_ordering": 3216}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043383307bhuDV:localhost:8800", {"sha256": "ylXXOhZi/C999LuY9KR3PxDN+oTHrLzDWZQJGIwKYqg"}]], "prev_events": [["$1570043385309imdbl:localhost:8800", {"sha256": "2dQG16pL97lNfSD0KAsAnlPiaEWYKB3aUPNu9817byE"}]], "type": "m.room.join_rules", "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-628:localhost:8800", "content": {"join_rule": "public"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043386310bGMNl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043386180, "hashes": {"sha256": "OOo0NjvwR8ej7+MITfGEul+1f71PQs2qSYPW/ldq87g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kptB/FOt6XC2knYqOzxMhgxubn5qEzhU7Z5/kswcHNouJtv/q3xtHKFIZrveNevwzffRMW1n0wdKYf6IZsSsBg"}}, "unsigned": {"age_ts": 1570043386180}} SY/i5 e 1 a - ] ) Y % U + hM2b.^*Z&V"RNkP563$24:localhost:42455 53$23:localhost:42455 43$22:localhost:42455 33$21:localhost:42455 23$20:localhost:42455 13$19:localhost:42455 03$18:localhost:42455 /3$17:localhost:42455 .3$16:localhost:42455 '-Q$1570043468324DLhaB:localhost:8800 1,e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U 1+e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1*e$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g 1)e$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18 1(e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec 1'e$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc 1&e$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY 1%e$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0 1$e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1#e$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4 1"e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1!e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y 1 e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4 1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI 1e$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps 1e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo 1e$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ 1e$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU 1e$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM 1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM 1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s 1e$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg  3$15:localhost:42455 ~ 3$14:localhost:42455 } 3$13:localhost:42455 |' Q$1570043429322ZfcNc:localhost:8800 z' Q$1570043428321klTqJ:localhost:8800 y'Q$1570043428320JDiOD:localhost:8800 x'Q$1570043426319TNjnu:localhost:8800 w'Q$1570043425318lLfNb:localhost:8800 v1e$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI u1e$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs t1e$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE t1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA r1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY q1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck p1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg o1~e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw n1}e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 m1|e$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM k1{e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA j1ze$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A i1ye$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 h1xe$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs g1we$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU f1ve$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 e1ue$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw c1te$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM b1se$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg a1re$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg `1qe$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI _1pe$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg ^1oe$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E ]1ne$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q [1me$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ Z1le$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA Y1ke$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk X1je$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo W'iQ$1570043392317hujur:localhost:8800 V'hQ$1570043391316OJaBO:localhost:8800 V&gO$157004338812XhwjX:localhost:8829 U'fQ$1570043388312YDkJu:localhost:8800 S'eQ$1570043387311DGzYi:localhost:8800 R'dQ$1570043386310bGMNl:localhost:8800 Q V8pH X 0  h @  x P (  j ~ e L   l : r@xF~LR X&8^,dK28'Q$1570043745460sJOiY:localhost:8800 'Q$1570043741458PZvre:localhost:8800 `1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk E'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 3$21:localhost:42455 3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr01e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B41e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ,1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ 01e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uox1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQMx1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM I1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KY1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxws1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ 01e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCoc1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY'1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQm1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E;1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:42455 )1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY3$19:localhost:42455 3$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 ~'Q$1570043727446CGYaE:localhost:8800 }'Q$1570043726445lSnmj:localhost:8800 |'Q$1570043715443SSqOY:localhost:8800 s'Q$1570043713441WJPkP:localhost:8800 o'Q$1570043712440rfNzQ:localhost:8800 n'Q$1570043712439XdJFc:localhost:8800 m'Q$1570043711438bqOHL:localhost:8800 q'Q$1570043711438bqOHL:localhost:8800 l'Q$1570043710437aFoBB:localhost:8800 r'Q$1570043710437aFoBB:localhost:8800 k'Q$1570043668432TfiHj:localhost:8800 O'Q$1570043656428rZaqi:localhost:8800 B'Q$1570043655427tEtWD:localhost:8800 A'Q$1570043654426seixP:localhost:8800 @'Q$1570043653425AhyPB:localhost:8800 ?'Q$1570043652424mkkFn:localhost:8800 C'Q$1570043652424mkkFn:localhost:8800 >'Q$1570043648422SglHQ:localhost:8800 ;'Q$1570043647421dmTZW:localhost:8800 :'Q$1570043646420mPrhj:localhost:8800 9'Q$1570043646419zIOAX:localhost:8800 <n1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU \  a}31a# $12:localhost:42455!5:localhost:42455{"outlier": true, "stream_ordering": 3222}{"origin_server_ts": 1570043391661, "prev_events": [["$11:localhost:42455", {"sha256": "PKsvTVXCsnU7Ryw0ncvj/FBj2+M7bAEWS53cBRY53T8"}]], "auth_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}], ["$11:localhost:42455", {"sha256": "PKsvTVXCsnU7Ryw0ncvj/FBj2+M7bAEWS53cBRY53T8"}]], "event_id": "$12:localhost:42455", "content": {"join_rule": "public"}, "hashes": {"sha256": "2QJWoqeK52ueOPdooeKJGovDSH2fxYl3+qxD6eaj9vI"}, "sender": "@__ANON__-10:localhost:42455", "room_id": "!5:localhost:42455", "type": "m.room.join_rules", "depth": 2, "state_key": "", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "b5nrACn6oM5eaUeSWaiGNn5V6a2VHKkla5ugvffGvNZKmT2JldNml/tyC1vIpLC4BRM0VQUDpTNrqfDtQceJDA"}}, "unsigned": {}}$|31a) $11:localhost:42455!5:localhost:42455{"outlier": true, "stream_ordering": 3221}{"hashes": {"sha256": "PKsvTVXCsnU7Ryw0ncvj/FBj2+M7bAEWS53cBRY53T8"}, "sender": "@__ANON__-10:localhost:42455", "type": "m.room.member", "room_id": "!5:localhost:42455", "origin": "localhost:42455", "depth": 1, "state_key": "@__ANON__-10:localhost:42455", "origin_server_ts": 1570043391660, "prev_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}]], "event_id": "$11:localhost:42455", "auth_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}]], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "uWFTGMHk5MsGPZ1/SmEgXkCVThb+p7gXr4AZCey7Ay3jHQ5t7Nm8T5i/bMk93AbCAvR6zA3ovCoa5r+6mKjvBQ"}}, "unsigned": {}}y{31aS $10:localhost:42455!5:localhost:42455{"outlier": true, "stream_ordering": 3220}{"content": {"creator": "@__ANON__-10:localhost:42455"}, "event_id": "$10:localhost:42455", "auth_events": [], "prev_events": [], "origin_server_ts": 1570043391659, "origin": "localhost:42455", "state_key": "", "depth": 0, "type": "m.room.create", "room_id": "!5:localhost:42455", "sender": "@__ANON__-10:localhost:42455", "hashes": {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}, "signatures": {"localhost:42455": {"ed25519:1": "NiN5hPiI5V8/u84X/3Ytm9jZhjev5lGCVihAlRVptw0hBw37P8DI+3C+Lu8qXKu7fm6dxHTjZ2FkitJWGdAaCQ"}}, "unsigned": {}}bzOQ1 $157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 3219}{"auth_events": [["$1570043384308gPogh:localhost:8800", {"sha256": "/qAznj7ytoZ1t4DxT7kqhb4D2m+OYFGN/6BgJd/mkzs"}], ["$1570043382306WhWIU:localhost:8800", {"sha256": "KUXM1KaPa1xU2UxrLrU4u/wy6+uq/ZtSDxSGdC6s62U"}], ["$1570043386310bGMNl:localhost:8800", {"sha256": "Pd/YfY1y6p5qEeUhsQBujuEaH0O6cNwBJavbSdZDNHE"}]], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-629", "membership": "join"}, "depth": 8, "event_id": "$157004338812XhwjX:localhost:8829", "hashes": {"sha256": "Pa1dRlN5iONVxYkaMKFp1CfURCJBNJc0Zi4zP9uQ0Bw"}, "origin": "localhost:8829", "origin_server_ts": 1570043388806, "prev_events": [["$1570043388312YDkJu:localhost:8800", {"sha256": "0a3Vvfk3ppfFhnyDi/p/7laQjjjDHjrCqT3+0KBVPg0"}]], "prev_state": [], "room_id": "!sqkBzbHHJOTNWwynqV:localhost:8800", "sender": "@anon-20191002_181700-629:localhost:8829", "state_key": "@anon-20191002_181700-629:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "It8SXIGBIYfCn9GEK9/J/S5oNQ9wKsJtDyKlCyM9cPgRcEquYQiRqllt/qSZiRFXMXTWBNaUAXAoSKHqt1pADg"}, "localhost:8829": {"ed25519:a_UxIG": "2wtKVLXHMbkI634yF/sVREIDPfa1IYdEBvby1MWvyKgGSf7J2AGJUP9qf3/bwg2wGbywvgZOGF5gWvx3BTjLAg"}}, "unsigned": {"age": 87}} i g 4 h5i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNXLlVVKkxjOW10Z1VULCMKMDAyZnNpZ25hdHVyZSDGsaSymiJbyAJhiloGWf8uN41JJmosd6ost6DYKxSUXQoU1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG0mK0VZSysuTC1ec0dJTTUKMDAyZnNpZ25hdHVyZSBJeQg_bzzYejwMsRoO75X6mKrAUwAP2F1CIRbdj0doywoT1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFAsbHBLb2xuZWdeX1NMSEQKMDAyZnNpZ25hdHVyZSBRVMRAOSkT70y1qDsaviwq5dwJBhzuvroh5hrLC2A6IwoS1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1qQytYXzV1M1g3QzVULDgKMDAyZnNpZ25hdHVyZSCU62aaEViU1JnfMzLymqjPYq9G0NNQu7aUqLty9xL8ygoR1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9IWFQza2lUTTFQV0FCSkcKMDAyZnNpZ25hdHVyZSDH8GKBiG2tmKZs-dzNXlz8Ww_sRhs7tCh0J4VtNcAN3woQ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdvVkdGVEdPOWI4MFdmUi4KMDAyZnNpZ25hdHVyZSBTtfD0uPZZTrsqeNlWvWIMJJLvllKVfEh8UkZUS8GqUAoP1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDQzNkoqcnFEbyZsNWFZQH4KMDAyZnNpZ25hdHVyZSCBnDGivNn9y4HTzt9IjLvEGeMDs49R0PvzTplRhWJuxQoO1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1SJip2M2NRVDF-KmtmbVoKMDAyZnNpZ25hdHVyZSCC_F4KwtLCbJdNqqfBZwtZkZPaXR_2SFTsek2eB4UERwoN1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJiQWdeRX5ENjNkbTZSYVkKMDAyZnNpZ25hdHVyZSA8zIpRzRmJlGIqkTBx6GA19slBMTUSU8V8B5mBBrAhIAoM1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtWczhVYXYqK2kxZEo5VUMKMDAyZnNpZ25hdHVyZSAyxMn--zXijwO_yDpNAKZp3Nowd1ex2CJt9oF3jnAAlQoL1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGxQOkhhbnIqNG1BZnlZb0QKMDAyZnNpZ25hdHVyZSCd7FTUX1n-4f2mMjlkYjWuX6DbpozOJbgiroD47tErvwoK1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHRIQ1Z3XztVd0RTK2R4K3QKMDAyZnNpZ25hdHVyZSBr6Tw_uDl-saWiJHMt1fEznSF3WHYr5dOTbcQ5XctL7woJ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpreUxsRlNPfmpWV0R4emwKMDAyZnNpZ25hdHVyZSAFh5ccDMSVr8aWYsFwKsNl55tnlLMnNvdhEFpRcQnZOQoI  !veQay$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3229}{"auth_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo"], "prev_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo"], "type": "m.room.member", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-633", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-633:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043396155, "hashes": {"sha256": "EQtkHm81Kwk0OP5a3sBLna06wCN5tqkrp6QbMU4AOGY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f575HDHbj4QbDLhi2YOGDDB+mEg4CQyNbz8YYvtFh5GWiqI+sx7OhwGVL8LSgyN8p8lEamVhu44mcwZFsV82BQ"}}, "unsigned": {"age_ts": 1570043396155}}ieQa_$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3228}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-633:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043395202, "hashes": {"sha256": "ihFFXdyABuEVWel327apMafErZk/KzErEUNWDDwU0ig"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5gMMQpS1FD7R0Ww/a5RnRMUwqVSsH7qVfxibzWj/XY8RVK1B/hXVCkLysL4A4JRmSLsOYE/HzwkOdr2y0NACAA"}}, "unsigned": {"age_ts": 1570043395202}}bQ1c $1570043392317hujur:localhost:8800!5:localhost:42455{"token_id": 612, "txn_id": "595", "stream_ordering": 3227}{"auth_events": [["$10:localhost:42455", {"sha256": "+2dTKIjQzN7XvVzga9O2p6G2SDSXCvPpqFsf3D2W2Dk"}], ["$1570043391316OJaBO:localhost:8800", {"sha256": "E6pzA5p7dfvnJDsITIXXFnrJcm9Npm8lEPqANRkvOE4"}]], "prev_events": [["$1570043391316OJaBO:localhost:8800", {"sha256": "E6pzA5p7dfvnJDsITIXXFnrJcm9Npm8lEPqANRkvOE4"}]], "type": "m.room.message", "room_id": "!5:localhost:42455", "sender": "@anon-20191002_181700-632:localhost:8800", "content": {"body": "Hello", "msgtype": "m.text"}, "depth": 4, "prev_state": [], "event_id": "$1570043392317hujur:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043392598, "hashes": {"sha256": "Fk56XyNwosqI78lRzlxSRDsLwTdgAuO16mt6AysBN7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+/iAg+UMDjvGMzm1O3vYRlZR9t4dgE8BpTPqb4ptGoPthn25fYxQP0j1whNs1pHex4GEdBEUKRY6hn0BvVe4Aw"}}, "unsigned": {"age_ts": 1570043392598}}~Q1?u $1570043391316OJaBO:localhost:8800!5:localhost:42455{"stream_ordering": 3226}{"content": {"membership": "join", "displayname": "anon-20191002_181700-632", "avatar_url": null}, "state_key": "@anon-20191002_181700-632:localhost:8800", "depth": 3, "type": "m.room.member", "auth_events": [["$10:localhost:42455", {"sha256": "2vEbCwF7HqEbBe0AEt2CjrLpVZ/i/tj6CXGwV0OD70I"}], ["$12:localhost:42455", {"sha256": "2QJWoqeK52ueOPdooeKJGovDSH2fxYl3+qxD6eaj9vI"}]], "room_id": "!5:localhost:42455", "prev_events": [["$12:localhost:42455", {"sha256": "2QJWoqeK52ueOPdooeKJGovDSH2fxYl3+qxD6eaj9vI"}]], "sender": "@anon-20191002_181700-632:localhost:8800", "prev_state": [], "event_id": "$1570043391316OJaBO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043391677, "hashes": {"sha256": "jkc31eyl4DbswuEeVT7gVagjCqKUzLwyI4M7gKuq1lk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vjl9Quz8fctosaS+h0UXAQTmyQkHfID1JBJiYepTwZmf8Bw3D5GrnKELYvo8iQvU64XFN3FVZjtETWTKFX2yBg"}}, "unsigned": {"age_ts": 1570043391677}} 05l^ k z ) d " M \ i v'4AN]y(5P]Q@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800;P]Q@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800:P]Q@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:88009P]Q@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:88008P]Q@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:88007P]Q@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800P]Q@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800P]Q@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800P]Q@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800N[Q@anon-20191002_181700-65:localhost:8800!rZWweGEChkxxtzyfDB:localhost:8800#P]Q@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:88006P]Q@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:88005N[Q@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800(P]Q@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:88004P]Q@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:88003P]Q@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:88002P]Q@anon-20191002_181700-702:localhost:8800!GsjDgpaxdwYfnefiWO:localhost:88001P]Q@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:88000P]Q@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800/P]Q@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800.P]Q@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800-P]Q@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800,N[Q@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800'P]Q@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800*P]Q@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800(P]Q@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800&P]Q@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800$P]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800"P]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800 N[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800%P]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800P]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800A]3@anon-20191002_181700-677:localhost:8800!13:localhost:42455A]3@anon-20191002_181700-676:localhost:8800!12:localhost:42455P]Q@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:8800A]3@anon-20191002_181700-674:localhost:8800!11:localhost:42455A]3@anon-20191002_181700-673:localhost:8800!11:localhost:42455A]3@anon-20191002_181700-672:localhost:8800!10:localhost:42455@]1@anon-20191002_181700-671:localhost:8800!9:localhost:42455P]Q@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 N[Q@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800&P]Q@anon-20191002_181700-669:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 P]Q@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800P]Q@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800 P]Q@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800P]Q@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800P]Q@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800P]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:8800 !rT=y K  ? e  | E/cc88me&eQ'E$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455joinm%eQ? $sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibilitye$eQ/ $nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rulesg#eQ3 $r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levelsQQ']$1570043383307bhuDV:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-628:localhost:8800joinWQQ' $1570043382306WhWIU:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.createcQQ? $1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.history_visibility[QQ/ $1570043379303bCgUn:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.join_rules]~QQ3 $1570043378302mKBGD:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800m.room.power_levels "eQ']$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800joina!eQ' $7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.createe eQ/ $egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules eQ']$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800joineQ'E$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455joinaeQ' $H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800m.room.creategeQ3 $t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levelsmeQ? $xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibilityeeQ/ $PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules eQ']$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800joineQ'E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455joinaeQ' $BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo!NanhNmCnVVpmZRJrTF:localhost:8800m.room.creategeQ3 $JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800m.room.power_levelsmeQ? $mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800m.room.history_visibilitys Q1']$1570043391316OJaBO:localhost:8800!5:localhost:42455m.room.member@anon-20191002_181700-632:localhost:8800joinX 31'E$11:localhost:42455!5:localhost:42455m.room.member@__ANON__-10:localhost:42455join8 31' $10:localhost:42455!5:localhost:42455m.room.create< 31/ $12:localhost:42455!5:localhost:42455m.room.join_rulesOQ']$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800m.room.member@anon-20191002_181700-629:localhost:8829joinfQQ))$1570043388312YDkJu:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.aliaseslocalhost:8800cQQ? $1570043387311DGzYi:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.history_visibility[QQ/ $1570043386310bGMNl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.join_rules`QQ9 $1570043385309imdbl:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.canonical_alias]QQ3 $1570043384308gPogh:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800m.room.power_levels a g   ?_7W/ ? `8 G_ Y 2 w Oo g  7 k '/O' D oG } UpH .  Ww 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800i'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800g'Q!ubmTdQFAhrhZkGULDx:localhost:8800L'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800Z'Q!vBvlJEXUSQKUYmsKcO:localhost:8800Y'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800c'Q!qSUSLLWjDxcGibUZdT:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800w'Q!utJsNQubeIXvcTKGpx:localhost:8800v'Q!vyCFfUTJKYJSDadFhT:localhost:8800m'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800`'Q!uSBqTezaFcMnlowsEf:localhost:8800_'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800-&Q!rZWweGEChkxxtzyfDB:localhost:8800$&Q!rZWweGEChkxxtzyfDB:localhost:8800#'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800>'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800e'Q!sHRHoXzYrrPSlWBkoh:localhost:8800d'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!vZGjXEXQoCaoUXnkCa:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800}'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800}'Q!wAyboOFgsOPwkmgMAI:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800l&Q!vVmSdclwPIqYDbnmPn:localhost:8800k'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800!'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 &Q!uJtKGXTNdEnCPNOGDx:localhost:8800"'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sBcwyPoXKgnSGVTjNR:localhost:8800a'Q!sBcwyPoXKgnSGVTjNR:localhost:8800`'Q!qtelAHlSkrqEFmlCqS:localhost:8800K'Q!qtelAHlSkrqEFmlCqS:localhost:8800J'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800s'Q!vRmMcoJDeCupADwqac:localhost:8800r'Q!vRmMcoJDeCupADwqac:localhost:8800q'Q!sBcwyPoXKgnSGVTjNR:localhost:8800b'Q!ubmTdQFAhrhZkGULDx:localhost:8800K'Q!rpVYLTJGcFNdGzFzXj:localhost:8800J'Q!rpVYLTJGcFNdGzFzXj:localhost:8800I'Q!rpVYLTJGcFNdGzFzXj:localhost:8800H'Q!uqIEMXzdeNeXdJmuwh:localhost:88002'Q!uqIEMXzdeNeXdJmuwh:localhost:88001'Q!uqIEMXzdeNeXdJmuwh:localhost:88000  }eQ33$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E!NanhNmCnVVpmZRJrTF:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3233}{"hashes": {"sha256": "F9mu/uIDnpVfPjHWFTCDTKpb7zwbHJacYNx8iR5NFH8"}, "sender": "@__ANON__-11:localhost:42455", "type": "m.room.member", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-11:localhost:42455", "depth": 6, "origin_server_ts": 1570043399786, "prev_events": ["$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q"], "auth_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ"], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "b2Et+Gz25nmt89o/6LBhxcDF/Htr4cyroLle7x+mpb5BuEVnfONjjp6SwsWY0ZgtTGvJcyDuaJbsXsmw030oCw"}}, "unsigned": {}}eQa$mWo7oiXHQfIGChfu_lPQCJGUI66AdlKu8Zo3J4_BB6Q!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3232}{"auth_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "prev_events": ["$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ"], "type": "m.room.history_visibility", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043398537, "hashes": {"sha256": "FzOfLWthsxfANaTGWfg1sxy8+jYz57tTs4PDentNg0A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EpOiorib2lmBhJABrPTTHif1ghjcLnPjHDXX4l7YHE3GEZpW77bDYcJRWBHf0uYpyQsrV47GFML+W0C5YqTwBA"}}, "unsigned": {"age_ts": 1570043398537}}teQau$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3231}{"auth_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "prev_events": ["$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA"], "type": "m.room.join_rules", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043397794, "hashes": {"sha256": "8Td1e+Vfx5QnkWQC/uFsn7UsH4r2NaPZ+uAn7kmi18I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XyMKCR3OoWCTsBxI+cRMCjqDHLBTSkfPr/F8cHVQH875VcW1MAav3JW8CtTsEVn+MjJPhNpb+rRbHJZeJkK9DA"}}, "unsigned": {"age_ts": 1570043397794}}keQac$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA!NanhNmCnVVpmZRJrTF:localhost:8800{"token_id": 613, "stream_ordering": 3230}{"auth_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "prev_events": ["$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk"], "type": "m.room.power_levels", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "sender": "@anon-20191002_181700-633:localhost:8800", "content": {"users": {"@anon-20191002_181700-633:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043396881, "hashes": {"sha256": "OSEl5p+AO3m8JbHtCDh3OBaleO6C1hTbmSUp8pwyMg4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eAR23aDqvKMSzCxf6H5nGjoZhMWqdVUJZbFTCQlD+3ifz0B+eyLAhV9Ik5jAeEQBE+NCkCxNRPnvmX0ERE3WDA"}}, "unsigned": {"age_ts": 1570043396881}} X8T)}R' { P % y N<e:>g # w L ! mBk@iFoD u J  s H qc8*Q!QWLJZmJqjWZjVOjdYF:localhost:8800%*Q!QWLJZmJqjWZjVOjdYF:localhost:8800$*Q!QWLJZmJqjWZjVOjdYF:localhost:8800#*Q!QWLJZmJqjWZjVOjdYF:localhost:8800"*Q!QWLJZmJqjWZjVOjdYF:localhost:8800!*Q!QWLJZmJqjWZjVOjdYF:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PUIxAaiCnbqaVbawGu:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PVyTvKbqnjSXfGWAMy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800 *Q!PgNDjhhIBAXKryuGKy:localhost:8800  *Q!PgNDjhhIBAXKryuGKy:localhost:8800  *Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ *Q!PgNDjhhIBAXKryuGKy:localhost:8800 ~ *Q!PgNDjhhIBAXKryuGKy:localhost:8800 } *Q!PgNDjhhIBAXKryuGKy:localhost:8800 | *Q!PgNDjhhIBAXKryuGKy:localhost:8800 { *Q!PgNDjhhIBAXKryuGKy:localhost:8800 z *Q!PgNDjhhIBAXKryuGKy:localhost:8800 y *Q!PgNDjhhIBAXKryuGKy:localhost:8800 x *Q!PgNDjhhIBAXKryuGKy:localhost:8800 w *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!PzoqoNRxeEEqiLyVSV:localhost:8800 *Q!QMrkSPlQDGborAyWtQ:localhost:8800T*Q!QMrkSPlQDGborAyWtQ:localhost:8800S*Q!QMrkSPlQDGborAyWtQ:localhost:8800R*Q!QMrkSPlQDGborAyWtQ:localhost:8800Q~*Q!QMrkSPlQDGborAyWtQ:localhost:8800P}*Q!QMrkSPlQDGborAyWtQ:localhost:8800O|*Q!QMrkSPlQDGborAyWtQ:localhost:8800N{*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!QFiJrWFFeTAAAUCjCE:localhost:8800*Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PcvmCDeVUSyJbXpTig:localhost:8800 *Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PQZMTVTeCYqMZwkHvW:localhost:8800*Q!PHkVrXAyfGkFtzSagu:localhost:8800  A*Q!PHkVrXAyfGkFtzSagu:localhost:8800  @*Q!PHkVrXAyfGkFtzSagu:localhost:8800  ?*Q!PHkVrXAyfGkFtzSagu:localhost:8800  >*Q!PHkVrXAyfGkFtzSagu:localhost:8800 =*Q!PHkVrXAyfGkFtzSagu:localhost:8800 <*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800*Q!PEcOacvKaBKpXjytEF:localhost:8800 JS! Ii7 v1 ] +Y 'N { = % puC  |  W Koc Q >    j1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc ]1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAR1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g 41e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus%1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc"1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI'1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkm1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY|1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg61e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8l1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIu1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90T1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAf1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw 1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQr1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA ^1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQk1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMy1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg c1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwy1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 L1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY G1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc .0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g (1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeId1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y}1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0b1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY J1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c?1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM d1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro C1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ-1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io JS! Ii7 v1 ] +Y 'N { = % puC  |  W Koc Q >    j1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc [1e$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA 1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw1e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW81e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo 1e$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH81e$u59JqYa9q0o6vyQMkqyLn7mqdd9nLy207SESyAQ3h0Q 1e$u36vL_UeN0wsaGwDvGRx60yAHQ7VkRflLkAAAju597M1e$u3-O80KB5MMt8ZsfhxJ6CnnjTaRARLfYDe4cL4YEjRAR1e$uhY0BpAEpJjWkl-Drli58gVt_Ehl_99jADLvmcKGhwA1e$u8POXgre_7UBTgRk-2A-b0nrbl_RHZ-dFg4fLti8fFI1e$u7FkRrL9zWXeMk5L7koUfYUfh5yJ6fILUpjtCm5nr8g 41e$ukjyzFOdqbKepEA8Ijq0elzarO3C6AJ84qhNHrukHb41e$ukW1i2au9O2t97c6kZEfuwuF0jNmA_8FEaIQDJBOnus%1e$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU1e$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo1e$ulmKJKfAQN-7xg_x5oKOuh-FlsYDpgbrvYKopv-R7v81e$uklzr47xCPIm3WcsO6T94voa7KKEBJSRenT9jP750aw0e$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc"1e$un4342L6aM12q94XjNroQF9mizj3N5Q1mIy2AD5cAFA1e$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI'1e$vGfSqRBkZcRnF_SbYtpfkoYuF2EaU8SmZ6Mwde6CD4s1e$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hkm1e$v03mPlrjR6u6QqZGYLaoLePOb2CtTDeekWISKYbudnA1e$v00eaY4XQuNvkmsRPjfe4cIDzsNvo_JA1pdhbo9eBWY|1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg61e$uxgqNzdsKIw6V7cWyxeuq-39-7Q7fZBV4bNjfUY6hz8l1e$ur5rqUfGyep97U-Euk2E_BEV4naXIY77zW4kN1J7ShIu1e$uovU6fMqrd8MtwmmcbCmQZAU12V5Cr7aUkt-XHxJduo1e$vF8QLQPv0kJPqWD8iLDidSuW64iaEHTTwYEU-0K8Tqc1e$uPx4VIR81JqtpNGPclYkUEs-JXjYS4xbxitTQfPVy90T1e$uP58mMcq64Svn4ABmEzlEoKTIIT-Kqleol75StZs6E01e$uNNyp7kXCBWlyb6NxTuES78dhkzQXldAzgQCowpG4Qc1e$uMkmpjGKP8RXmbDSbrqKEqZrbZUCFzs6lPDk6DuY3sQ1e$uLWOQ3SMS5q3NzdFGA2kh9ZmHjz_FUeWRAniBwdVRgk1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhAf1e$v9oDQt1_-_U4RSfGep0yCmOV0WaesVuIQKOsqjBn9Gw 1e$v6XYV9JAf-ruh0_FOu2sZW9vWT6RUB4fUHluDw3Qe1g1e$uRXcvx2ZuPVzsZWfvnOeq5IhHWL0nBI1z3dI0shd_TQr1e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ks1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkA ^1e$uSFGAvS4CvyRPuOqVSZMYRHFqNDh4fOLrofBVhRSDcw 0e$vIb0oOiORvZZlyPHBZyC1dS_0e3Lvh-VLH39GNpUfxs 1e$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU1e$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q1e$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQk1e$uX1LXwWQQfTA5Q2EolDfrY2Ouv7GBj_oHEhT77qmO7s1e$uVFWFf8w14Q7zydWPZ53uDKbp3k0b2BoYIPAvJJ85vMy1e$uqCkKiV2AgFLZVj835H5CPNgxvS6k_RDbObhRB2KKZg c1e$v9MANPuxgQwQWgH24g_TSGbSeZ63Hj8WxuXOQQVoM78 1e$uGrwWM1mDL_DboUN8KPN8YzezzDli-AxDcRKeKz8AAg 1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOwy1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo 1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk 1e$vK5MzZXvsDn94Ju2vfz6Na_Kmo6jsAmDncc77GR5hTE 1e$unk7iqEiIbquX/7jpV2iPZE/MwAROf0zcv/keN9wLYU 1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0 L1e$uq9jc5LbyK8oMNXMazK-_nvhjPRq-UiWTWxM6IQodPY G1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc .0e$vBTuql8S-iZC5IfQ-IZ2NTI591fhESPCZO8xCqQHxpU 1e$v5QAsnC9fVVYk5J6BD60fCbT6JvLlo2ZQbrCSaLHhTg 1e$v4-UMW9o0IZlpNA7prX4PpE1KGKnPmqYl4Pead8yY3g (1e$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeId1e$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs1e$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Yw1e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0\1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q1e$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY J1e$vCUs8yU988SH0bui06h-mKLzT4VQN-uEOSfeAt5i29c?1e$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM d1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro C1e$vQXAkE0Q3jJgkNGAyBSl4pDwIE2-CCCtjpyT90_EuAQ-1e$vAgMBtOjhYToDM7WWyB3HMVEKQnWrXHoEJdmTkIs4io h- 7 V fv0.M8 Q'Q  ]$1570043425318lLfNb:localhost:8800m.room.create!uPxXJHJyFQwvpQLZNs:localhost:8800mrmsB@anon-20191002_181700-637:localhost:8800 7e'Q ]$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIm.room.member!UluPYLGXtInKDTjRzp:localhost:8800mkml|@anon-20191002_181700-636:localhost:8800!6e)Q ]$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGsm.room.message!UluPYLGXtInKDTjRzp:localhost:8800md md@anon-20191002_181700-636:localhost:88005e'Q E$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEm.room.member!UluPYLGXtInKDTjRzp:localhost:8800m`Mm`@__ANON__-14:localhost:42455,4e?Q ]$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAm.room.history_visibility!UluPYLGXtInKDTjRzp:localhost:8800mYm[@anon-20191002_181700-636:localhost:8800$3e/Q ]$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYm.room.join_rules!UluPYLGXtInKDTjRzp:localhost:8800mWFmX2@anon-20191002_181700-636:localhost:8800&2e3Q ]$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ckm.room.power_levels!UluPYLGXtInKDTjRzp:localhost:8800mSmT@anon-20191002_181700-636:localhost:8800 1e'Q ]$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgm.room.member!UluPYLGXtInKDTjRzp:localhost:8800mQmQ@anon-20191002_181700-636:localhost:88000 e'Q  ]$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnwm.room.create!UluPYLGXtInKDTjRzp:localhost:8800mMmN6@anon-20191002_181700-636:localhost:8800/e'Q E$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0m.room.member!QkkdnzvdrjHaFGkzMt:localhost:8800mGmH$@__ANON__-13:localhost:42455,.e?Q ]$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMm.room.history_visibility!QkkdnzvdrjHaFGkzMt:localhost:8800mAmC@anon-20191002_181700-635:localhost:8800$-e/Q ]$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAm.room.join_rules!QkkdnzvdrjHaFGkzMt:localhost:8800m=m?b@anon-20191002_181700-635:localhost:8800&,e3Q ]$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7Am.room.power_levels!QkkdnzvdrjHaFGkzMt:localhost:8800m:m;@anon-20191002_181700-635:localhost:8800 +e'Q ]$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8m.room.member!QkkdnzvdrjHaFGkzMt:localhost:8800m7-m8)@anon-20191002_181700-635:localhost:8800* e'Q  ]$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsm.room.create!QkkdnzvdrjHaFGkzMt:localhost:8800m4.m4@anon-20191002_181700-635:localhost:8800)e)Q E$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iUm.room.message!DuqHkpTfWCUblSrxQj:localhost:8800m,\m/@__ANON__-12:localhost:42455(e'Q E$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0m.room.member!DuqHkpTfWCUblSrxQj:localhost:8800m*m+2@__ANON__-12:localhost:42455,'e?Q ]$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwm.room.history_visibility!DuqHkpTfWCUblSrxQj:localhost:8800m%m'O@anon-20191002_181700-634:localhost:8800$&e/Q ]$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMm.room.join_rules!DuqHkpTfWCUblSrxQj:localhost:8800m!m"@anon-20191002_181700-634:localhost:8800&%e3Q ]$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgm.room.power_levels!DuqHkpTfWCUblSrxQj:localhost:8800mm@anon-20191002_181700-634:localhost:8800 $e'Q ]$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgm.room.member!DuqHkpTfWCUblSrxQj:localhost:8800mmj@anon-20191002_181700-634:localhost:8800# e'Q  ]$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIm.room.create!DuqHkpTfWCUblSrxQj:localhost:8800mm;@anon-20191002_181700-634:localhost:8800"e)Q E$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgm.room.message!NanhNmCnVVpmZRJrTF:localhost:8800mRm@__ANON__-11:localhost:42455!e'Q E$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-Em.room.member!NanhNmCnVVpmZRJrTF:localhost:8800mjm@__ANON__-11:localhost:42455 ! * T ` r +0TP[$#Q']Q w!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800$1570043426319TNjnu:localhost:8800Y"Q' Q v!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800 !Q']e u!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI Q'Ee t!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEQ'Ee s!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455$q7WeKSNrzeGQG1zaJk5DGOIyi7kAhiBD6uOyRHU8vHgoQ? e r!UluPYLGXtInKDTjRzp:localhost:8800m.room.history_visibility$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAgQ/ e q!UluPYLGXtInKDTjRzp:localhost:8800m.room.join_rules$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYiQ3 e p!UluPYLGXtInKDTjRzp:localhost:8800m.room.power_levels$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck Q']e o!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgcQ' e n!UluPYLGXtInKDTjRzp:localhost:8800m.room.create$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnwQ'Ee m!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0Q'Ee l!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455$m62bY8wHsN4HmhHXaoGhZbLr16cbWdFu8pBvx7U6Jd0oQ? e k!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibility$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMgQ/ e j!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rules$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAiQ3 e i!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A Q']e h!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8cQ' e g!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsgQ/ e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM Q']e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgQ'Ee f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0cQ' e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIiQ3 e f!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg Q'Ee e!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 Q'Ee d!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$dn1y4CrHc3KnuswK2MfWm-y1ZzhEbYUpEHOg1xa1Tfco Q? e c!DuqHkpTfWCUblSrxQj:localhost:8800m.room.history_visibility$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfwg Q/ e b!DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hMi Q3 e a!DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg Q']e `!DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgcQ' e _!DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIgQ/ e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.join_rules$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ Q']e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3GtkQ'Ee ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.member@__ANON__-11:localhost:42455$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-EcQ' e ^!NanhNmCnVVpmZRJrTF:localhost:8800m.room.create$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo  y k eQac$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3237}{"auth_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "prev_events": ["$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "type": "m.room.power_levels", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"users": {"@anon-20191002_181700-634:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043403979, "hashes": {"sha256": "9Hu2FnrZv1RlApdJHLZYL41IZJXBw6wavTgSwZz/4lY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rs1Lylw8uy/bE+XuPkfv/epLCpuF8/nngoRzbg5qR9mWQWkiZNOeD4rbwPGQkH5lkoxJoek3LvqwVzlpJB6SDw"}}, "unsigned": {"age_ts": 1570043403979}}veQay$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3236}{"auth_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI"], "prev_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI"], "type": "m.room.member", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-634", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-634:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043403238, "hashes": {"sha256": "W/l5Ia8ADj5EK5A1TGGwHOQf3pG4TgvffsFiw29+y1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UYDOPf3JEA3D4NJuh/ApyN3akAijjdfk1al5a4T5earT5pSeEWn4ZX32iq+VmQ450FBNZQUVTFmef2oXwdjVCw"}}, "unsigned": {"age_ts": 1570043403238}}ieQa_$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3235}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-634:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043402411, "hashes": {"sha256": "0xZ3XVGpFC/R3PwBvBYsqxtDv6OZFlvqTyti5pRx9Ls"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "++v3OTtUlfwGoKKzblSfnjjaH6pCyThHIPKvNLQUN5A8N4KovM1Flcf1qDdexxIcitC4LQl6xSj39Dfmvwd1BQ"}}, "unsigned": {"age_ts": 1570043402411}}eQc$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:8800{"outlier": false, "stream_ordering": 3234}{"content": {"body": "Hello"}, "auth_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ", "$JRcNGXC0cPswq4aKtUqZPk9gPPKwMhbBStLgOvZ-fuA", "$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E"], "prev_events": ["$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo", "$sTuSnTZAa5GpxLhOsRwpioJiR-m1402DDoDh6S7h4-E"], "origin_server_ts": 1570043400274, "depth": 7, "origin": "localhost:42455", "room_id": "!NanhNmCnVVpmZRJrTF:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-11:localhost:42455", "hashes": {"sha256": "yqJSDlfzFG9nv2cqaRhWpoxHLR3rXwcz0Jj6Uqq6mr4"}, "signatures": {"localhost:42455": {"ed25519:1": "ZNcGzuISJmPy824uYR4gaXJDIY4l4qRmt5kI/EIUx6Sdr3Gc5ZUvVJDiyigGB34e6XQSaJ2otr5saYeAjmsSAg"}}, "unsigned": {}} CuzGe0`- ] ( X % U P  Q L|IL|I}JuEuB 4]@anon-20191002_181700-698:localhost:8800m4]@anon-20191002_181700-665:localhost:8800m2]@anon-20191002_181700-665:localhost:8800a4]@anon-20191002_181700-664:localhost:8800m2]@anon-20191002_181700-664:localhost:8800a4]@anon-20191002_181700-663:localhost:8800m2]@anon-20191002_181700-663:localhost:8800a4]@anon-20191002_181700-662:localhost:8800m2]@anon-20191002_181700-662:localhost:8800a2]@anon-20191002_181700-698:localhost:8800a2]@anon-20191002_181700-697:localhost:8800a2]@anon-20191002_181700-696:localhost:8800a2]@anon-20191002_181700-695:localhost:8800a2]@anon-20191002_181700-693:localhost:8800a2]@anon-20191002_181700-692:localhost:8800a4]@anon-20191002_181700-691:localhost:8800m2]@anon-20191002_181700-691:localhost:8800a4]@anon-20191002_181700-690:localhost:8800m2]@anon-20191002_181700-690:localhost:8800a2[@anon-20191002_181700-68:localhost:8800m{0[@anon-20191002_181700-68:localhost:8800az2]@anon-20191002_181700-689:localhost:8800a2]@anon-20191002_181700-688:localhost:8800a2]@anon-20191002_181700-687:localhost:8800a2]@anon-20191002_181700-686:localhost:8800a4]@anon-20191002_181700-685:localhost:8800m2]@anon-20191002_181700-685:localhost:8800a4]@anon-20191002_181700-684:localhost:8800m2]@anon-20191002_181700-684:localhost:8800a4]@anon-20191002_181700-683:localhost:8800m2]@anon-20191002_181700-683:localhost:8800a4]@anon-20191002_181700-682:localhost:8800m2]@anon-20191002_181700-682:localhost:8800a4]@anon-20191002_181700-681:localhost:8800m2]@anon-20191002_181700-681:localhost:8800a4]@anon-20191002_181700-680:localhost:8800m2]@anon-20191002_181700-680:localhost:8800a2[@anon-20191002_181700-67:localhost:8800my0[@anon-20191002_181700-67:localhost:8800ax4]@anon-20191002_181700-679:localhost:8800m2]@anon-20191002_181700-679:localhost:8800a4]@anon-20191002_181700-678:localhost:8800m2]@anon-20191002_181700-678:localhost:8800a4]@anon-20191002_181700-677:localhost:8800m2]@anon-20191002_181700-677:localhost:8800a4]@anon-20191002_181700-676:localhost:8800m2]@anon-20191002_181700-676:localhost:8800a4]@anon-20191002_181700-675:localhost:8800m2]@anon-20191002_181700-675:localhost:8800a4]@anon-20191002_181700-674:localhost:8800m2]@anon-20191002_181700-674:localhost:8800a4]@anon-20191002_181700-673:localhost:8800m2]@anon-20191002_181700-673:localhost:8800a4]@anon-20191002_181700-672:localhost:8800m2]@anon-20191002_181700-672:localhost:8800a4]@anon-20191002_181700-671:localhost:8800m2]@anon-20191002_181700-671:localhost:8800a4]@anon-20191002_181700-670:localhost:8800m2]@anon-20191002_181700-670:localhost:8800a4]@anon-20191002_181700-669:localhost:8800m2]@anon-20191002_181700-669:localhost:8800a4]@anon-20191002_181700-668:localhost:8800m2]@anon-20191002_181700-668:localhost:8800a4]@anon-20191002_181700-667:localhost:8800m2]@anon-20191002_181700-667:localhost:8800a4]@anon-20191002_181700-666:localhost:8800m2]@anon-20191002_181700-666:localhost:8800a M k D  } Vc /  h @  y Q ) uM%^6zqI!Z2 jBc<R*;;'Q!pTvdDtkgovsIdAdxCm:loca'Q!pTvdDtkgovsIdAdxCm:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sBcwyPoXKgnSGVTjNR:localhost:8800'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!qtelAHlSkrqEFmlCqS:localhost:8800p'Q!tcYctHPiaKzsKgrXlU:localhost:88006'Q!taANXnGBZntAreRurn:localhost:88005'Q!lgejtcwlywOoIXwEgy:localhost:8800W'Q!nhbUIcIbhuXkRqfeDa:localhost:8800G'Q!sJnuQYOyruhUpXDsLY:localhost:8800H'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!rwUuVBrftGHDBOlEZm:localhost:8800T'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800A'Q!raCWVWQGnXbmkexpCN:localhost:8800@&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800 ('Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!qzrZzAieCgGSbpKOQR:localhost:8800&Q!qxqNYKdtgvOQdhmgsj:localhost:8800`&Q!qxqNYKdtgvOQdhmgsj:localhost:8800_&Q!quaZwrGnzbNWhwAOYB:localhost:8800V'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800['Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800x&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 &Q!oXKJArsPmtgaYANBrg:localhost:88003'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800K&Q!nteAxExBGJfaGIpuCx:localhost:8800b'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800B'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&Q!msMfSdLIAvklSSAnci:localhost:8800;'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800M'Q!mTlCLZQCmfDuQsJxxp:localhost:8800L'Q!mTlCLZQCmfDuQsJxxp:localhost:8800K'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800z&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800N&Q!lAGTcYIuMBXsVRGCOe:localhost:8800u&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800?'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800D'Q!kjueCKHmYaYefEEpQY:localhost:8800C'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800  ~ eQs$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU!DuqHkpTfWCUblSrxQj:localhost:8800{"outlier": false, "redacted": true, "stream_ordering": 3241}{"auth_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM", "$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0"], "content": {}, "origin_server_ts": 1570043407452, "prev_events": ["$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0"], "type": "m.room.message", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "origin": "localhost:42455", "depth": 7, "hashes": {"sha256": "cfgyWdXybmI3tterSlX+lMD3HJcRaA382L7hKOozvoU"}, "sender": "@__ANON__-12:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "D7GVeLkGTkD8rxA8o21pmSQMRYgVwYlvNnFP0IPM8tH4JstctwQb154Rku9iU0EvdJg06qDp9srU2l5p3MffCg"}}, "unsigned": {}}} eQ33$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0!DuqHkpTfWCUblSrxQj:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3240}{"sender": "@__ANON__-12:localhost:42455", "hashes": {"sha256": "jwccbYjR3y0/b5iyt14Yg3Q3UdwRFiWacjQjOMJuAc0"}, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-12:localhost:42455", "type": "m.room.member", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "prev_events": ["$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw"], "origin_server_ts": 1570043407051, "content": {"membership": "join"}, "auth_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM"], "signatures": {"localhost:42455": {"ed25519:1": "OrOGmfhg5z0+wQc9m3KHg33B0FFMgYBCsmRDFSPSeURIqLjjWXCtS/HOlUe7tSs1ZM1dwamyJPtQSU1c7GDPCA"}}, "unsigned": {}} eQa$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3239}{"auth_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "prev_events": ["$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM"], "type": "m.room.history_visibility", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043405762, "hashes": {"sha256": "/41e7UuaM/JOhB2IpyPyuABGpbP0sGC7S0Z0XiDnJAI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MwsBSXbkis60RLUrDwy7cjzH+l6PumDYb6vwrX3Z9ebxyq2UF7y9oDY/grMJH/LI6sNFG/gfxbHzK4vrgSTxDQ"}}, "unsigned": {"age_ts": 1570043405762}}t eQau$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800{"token_id": 614, "stream_ordering": 3238}{"auth_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg", "$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI", "$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg"], "prev_events": ["$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg"], "type": "m.room.join_rules", "room_id": "!DuqHkpTfWCUblSrxQj:localhost:8800", "sender": "@anon-20191002_181700-634:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043404697, "hashes": {"sha256": "J+ykbjpGnFWspClXNqAHYn4/C4tYx2J8ZNge8LHcvvY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tu78whCKfi9nHsrPrlBrDQEyXHhF4AEc8pLiw9cyvdTwJrhp0jma00YVmtCNGO8h6duErS9vdqylYoNsTlBdBg"}}, "unsigned": {"age_ts": 1570043404697}} =V$\*2  V $ P  8d vp D> PvD j|J | J $ 2V ^ ,p> *\$1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg%1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w'1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w&1e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk21e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk11e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk01e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS08 1e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0f1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim41e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM*1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0 G1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTY1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgn1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgm1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHgl1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8L1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8K1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino81e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w(1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8J1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQO *1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUB1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUA1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU@1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQN1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAB1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM g1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM f1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM e1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YI1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YH1e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5YG1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino:1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino9 1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD01e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg# 5j8p> v D b0 | J  hn< P  V $ \6 *1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc"1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyge1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygd1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygc1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQog1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQof1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQoe1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0f1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIJ1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRII1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIH1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsc1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk 1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk 1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis31e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis21e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis11e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM+1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM*1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM)1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ ,1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ +1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIQ1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIP1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIO1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIN1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA g1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA f1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA e1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isP1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isO1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isN1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM /1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM .1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM - } { y w u sqomkigew j=QQQ$1570043428320JDiOD:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j<QQQ$1570043428320JDiOD:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j;QQQ$1570043426319TNjnu:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800~:eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~9eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~8eeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~7eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800~6eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~5eeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~4eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~3eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~2eeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~1eeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~0eeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~/eeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800~.eeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800~-eeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~,eeQ$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800~+eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800~*eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~)eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800~(eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800~'eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~&eeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800~%eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800~$eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~#eeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800~"eeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800~!eeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~ eeQ$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800~eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM!DuqHkpTfWCUblSrxQj:localhost:8800 |N J S {   B[!$F7Q? ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74p6Q? e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74h5Q/ e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rules$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsj4Q3 e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 3Q']e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sd2Q' e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.create$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgg1Q'E3 !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455f0Q? Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility$1570043429322ZfcNc:localhost:8800^/Q/ Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800`.Q3 Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800-Q']Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800$1570043426319TNjnu:localhost:8800Z,Q' Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:88008+Q']ee !UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg*Q'Ee !UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEp)Q? e !UluPYLGXtInKDTjRzp:localhost:8800m.room.history_visibility$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAh(Q/ e !UluPYLGXtInKDTjRzp:localhost:8800m.room.join_rules$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYj'Q3 e !UluPYLGXtInKDTjRzp:localhost:8800m.room.power_levels$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck &Q']e !UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgd%Q' e !UluPYLGXtInKDTjRzp:localhost:8800m.room.create$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw$Q'Ee !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0p#Q? e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.history_visibility$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMh"Q/ e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.join_rules$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAj!Q3 e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.power_levels$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A Q']e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@anon-20191002_181700-635:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8dQ' e !QkkdnzvdrjHaFGkzMt:localhost:8800m.room.create$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsQ/ ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.join_rules$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM8Q']ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDg,Q'Eee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0Q' ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.create$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVIQ3 ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.power_levels$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xg$t199vxUo_RV5BsN8KlrfwaplMjooNZe7-SvXk4km1xgQ'Ee !DuqHkpTfWCUblSrxQj:localhost:8800m.room.member@__ANON__-12:localhost:42455$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 JDT  H P  " V $ h6 \ * 8bn< tBNp>Z(0zj1e1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog=1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog<1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrk 1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg[1e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9ZgZ1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXY5ee9moc1uBCdxXxdKDUJNfOibEYs7G00b535sjog>1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo 1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo 1e$SdmhPtPbECFFh46q3Qnl7fJg56Zy2d_oH18JXi55KQo1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo 1e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s|1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SdIc6VhlL7akjcNZAUJNhIskxhCniYP4DnERs1Oym6E1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E 1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E 1e$SXXcyiebMaHlSVrg7OjsusnmZX3npaVFRmxoQdLh61E 1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEA1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JAZ1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo 1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo 1e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo 1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA\1e$SgJcH85rK_HMN3kPjB9In9ngtYpOKt90AB63wlrv5JA[1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI 1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8"1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8!1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8 1e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQ1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sO1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sN1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7sM1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA 1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA 1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUq1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUp1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAV1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCAU1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCATd1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw1e$Six4LKfmkUy0isRovv8-n1TdG1m5NRF2ZY3Q7dl15WM /RM H C > C \ Fsnid _ZUTQe !sAWFpvSUPExZLVcPEd:localhost:8800$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YTQe !sAWFpvSUPExZLVcPEd:localhost:8800$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQoTQe !sAWFpvSUPExZLVcPEd:localhost:8800$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUTQe !sAWFpvSUPExZLVcPEd:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4TQe !sAWFpvSUPExZLVcPEd:localhost:8800$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cTQe !YpcmaMNMzjvtgYtrli:localhost:8800$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoITQe !YpcmaMNMzjvtgYtrli:localhost:8800$dJvP2Cld7bj1OfVg74NWAEQzJAteNjsRLyKHcBGFZagT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$tvWfYhl0bbZ5HfUUD_KgpB4bJC2wQHNAZllEnIRwAdgT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHoT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUT Qe !YpcmaMNMzjvtgYtrli:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70TQe !YpcmaMNMzjvtgYtrli:localhost:8800$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4TQe !PzoqoNRxeEEqiLyVSV:localhost:8800$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8TQe !PzoqoNRxeEEqiLyVSV:localhost:8800$XJM5LZSZEd9C1-7-JBwo7jm9KRaHYgHNM3B_Rq0ub6oTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74TQe !PzoqoNRxeEEqiLyVSV:localhost:8800$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sTQe !PzoqoNRxeEEqiLyVSV:localhost:8800$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg;Q3 !uPxXJHJyFQwvpQLZNs:localhost:8800$15:localhost:42455;~Q3 ~!uPxXJHJyFQwvpQLZNs:localhost:8800$15:localhost:42455;}Q3 }!uPxXJHJyFQwvpQLZNs:localhost:8800$14:localhost:42455;|Q3 |!uPxXJHJyFQwvpQLZNs:localhost:8800$13:localhost:42455J{QQ {!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043430323sbmUE:localhost:8800JzQQ z!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043429322ZfcNc:localhost:8800JyQQ y!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428321klTqJ:localhost:8800JxQQ x!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428320JDiOD:localhost:8800JwQQ w!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043426319TNjnu:localhost:8800JvQQ v!uPxXJHJyFQwvpQLZNs:localhost:8800$1570043425318lLfNb:localhost:8800TuQe u!UluPYLGXtInKDTjRzp:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYITtQe t!UluPYLGXtInKDTjRzp:localhost:8800$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxETsQe s!UluPYLGXtInKDTjRzp:localhost:8800$q7WeKSNrzeGQG1zaJk5DGOIyi7kAhiBD6uOyRHU8vHgTrQe r!UluPYLGXtInKDTjRzp:localhost:8800$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lATqQe q!UluPYLGXtInKDTjRzp:localhost:8800$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYTpQe p!UluPYLGXtInKDTjRzp:localhost:8800$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ckToQe o!UluPYLGXtInKDTjRzp:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgTnQe n!UluPYLGXtInKDTjRzp:localhost:8800$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnwTmQe m!QkkdnzvdrjHaFGkzMt:localhost:8800$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0TlQe l!QkkdnzvdrjHaFGkzMt:localhost:8800$m62bY8wHsN4HmhHXaoGhZbLr16cbWdFu8pBvx7U6Jd0TkQe k!QkkdnzvdrjHaFGkzMt:localhost:8800$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMTjQe j!QkkdnzvdrjHaFGkzMt:localhost:8800$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctATiQe i!QkkdnzvdrjHaFGkzMt:localhost:8800$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7AThQe h!QkkdnzvdrjHaFGkzMt:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8TgQe g!QkkdnzvdrjHaFGkzMt:localhost:8800$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYsTfQe f!DuqHkpTfWCUblSrxQj:localhost:8800$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU   *teQau$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3245}{"auth_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A", "$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "prev_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A"], "type": "m.room.join_rules", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043411910, "hashes": {"sha256": "LlhXjAWB5bIC8j9+76s2pDFqQWpvoUzuVk+NTVTPiV4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GNTZKi812suQ1mAyZ+BwluEtDPcu/diaottkCNYunsiOw4BHVrc8vU4E82/sWuHABTaaf7jUHk6ltAM4J1XvBg"}}, "unsigned": {"age_ts": 1570043411910}}keQac$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3244}{"auth_events": ["$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "prev_events": ["$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "type": "m.room.power_levels", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"users": {"@anon-20191002_181700-635:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043411098, "hashes": {"sha256": "zRbOT4+n42F9cEke5SuI6kMLoZ2fa0BSQgKGOFzc1H8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5ZdH3fzDMQHsf5kw7XrKt0WP6pQwEY1bCJ5BN0mDNtIbSxGQ3jqFcXdDcU1jugNkcIHReRlgeSaWURnRwj0gAA"}}, "unsigned": {"age_ts": 1570043411098}}veQay$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3243}{"auth_events": ["$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs"], "prev_events": ["$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs"], "type": "m.room.member", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-635", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-635:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043410221, "hashes": {"sha256": "00OQf+2m1mZb557LmeMMc4c6ZHb2P6WoQn/pWWhYYc8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OAXdyADXxCPbwY2ZdStVUPjVTVZ91TuYAHmtDNDO34QwRttZz1+NoUtI5lxIIsu6/YsuZC41Pf3cxYD3tGLzDg"}}, "unsigned": {"age_ts": 1570043410221}}ieQa_$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3242}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-635:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043409454, "hashes": {"sha256": "gNqQuG7/SmWQegyJxk3/+scxKpI0Jk9mjuTVulEosEE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AhdSjKasNumN1QYf+oRHeYhMp8qcAKiHrNXTa60Ys+MzrSeMe9O4nOPEYfL8JUtt+nu+rC0dt6Gm5YQ0G7uMCA"}}, "unsigned": {"age_ts": 1570043409454}} .NC 8 - { " 5 W ~%sh]RG<1V;eL$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0sha256 Fî6,]2Y 1V:eL$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gsha256yvzkS"b  ,tg\"yiIeWHV9eL$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4sha256Nx,-9ְyým;QWAV8eL$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Usha256@Od~ D!o+SN¸qBD/UV7eL$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Ysha256g̾-~.v׶Q`LvwV6eL$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQosha256Tx*ZAhX#UyQmk'xi V5eL$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUsha256#aS<'5V4eL$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4sha256\u `yuKQn+FQV3eL$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6csha256EϬ+[.Lz>}BgV2eL$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIsha256fthLgk$0=U@V,eL$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4sha256EZm >4uYS_*l,k„V+eL$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8sha256.P35}Ir ]3 7?V*eL$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMsha256[>`1`JF ^QڋCmw~kYcV)eL$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMsha256(i"9_DymuB_%ZV(eL$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74sha256VD_$Ġ 8Q+ n'^T+V'eL$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzssha256<_,|b>Uo =*`Q+;V&eL$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMsha256؀ 4:TUXuMq^DpV%eL$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3ssha256kv{Qn¶k(TE`'{V$eL$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgsha256d),Gf#4ο7 W J=#3L$15:localhost:42455sha256*_"JH`m%="3L$14:localhost:42455sha256X LXQC1tάUF t^=!3L$13:localhost:42455sha256vͭ'#sKQe]I׸ r)'4c L QL$1570043429322ZfcNc:localhost:8800sha2568_YtZW!/E>7= 6SLQL$1570043428321klTqJ:localhost:8800sha256qE.(dGTzLWZ7- mUA!)%LQL$1570043428320JDiOD:localhost:8800sha256JETMLbj#S]sLQL$1570043426319TNjnu:localhost:8800sha256eRUFhn&w}Wh*ELQL$1570043425318lLfNb:localhost:8800sha256:9\'!9->6m}k6MDWVeL$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIsha256!Pc7mP Y@ ^#sVeL$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGssha256'J1xy7js >0C>3ΨkVeL$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxEsha256Py9C&GlXX l.+VeL$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lAsha256<); J7^uCB瓬Ҥ(nR|VeL$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0sha25602{ŋ7' w5ױf_m]VeL$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaMsha2566'';{t#lDwVeL$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctAsha256]S5⥆\QiR%ouSbxrVeL$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7Asha25636\p7'/%e1qH+;sVeL$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8sha256)nʠL>坤6+lVeL$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYssha2560`s̎y(- )jF$ E7úA  4 k 9md]c@anon-20191002_181700-665:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgo127.0.0.1id]c@anon-20191002_181700-663:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwo127.0.0.1gd]c@anon-20191002_181700-664:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwo127.0.0.1hd]c@anon-20191002_181700-666:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4go127.0.0.1jd]c@anon-20191002_181700-662:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2go127.0.0.1fd]c@anon-20191002_181700-661:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQo127.0.0.1ed]c@anon-20191002_181700-660:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgo127.0.0.1da[a@anon-20191002_181700-65:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWJzUHllfjBQVk9yUkBnQAowMDJmc2lnbmF0dXJlICYDnpLDE-G67D-wncc2cpRGDIv41sKvJBsMEGsTgbA0Cg127.0.0.17d]c@anon-20191002_181700-659:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1go127.0.0.1cd]c@anon-20191002_181700-658:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1Ywo127.0.0.1bd]c@anon-20191002_181700-657:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwo127.0.0.1a 9 D Z 5@yu i9d Q]]Q=$1570043502342mVJmO:localhost:8800@anon-20191002_181700-646:localhost:8800@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800joinanon-20191002_181700-646c eEEQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620@__ANON__-22:localhost:42455@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800joinCb e]]Q=$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg@anon-20191002_181700-645:localhost:8800@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800joinanon-20191002_181700-645Ca e]]Q=$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88@anon-20191002_181700-644:localhost:8800@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800joinanon-20191002_181700-644z` 3EEQ$29:localhost:42455@__ANON__-21:localhost:42455@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800join9_ Q]]Q=$1570043477326hyTqo:localhost:8800@anon-20191002_181700-643:localhost:8800@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800joinanon-20191002_181700-643)^ Q]]1=$1570043468324DLhaB:localhost:8800@anon-20191002_181700-642:localhost:8800@anon-20191002_181700-642:localhost:8800!6:localhost:42455joinanon-20191002_181700-642j] 3EE1$17:localhost:42455@__ANON__-20:localhost:42455@__ANON__-20:localhost:42455!6:localhost:42455join\ eEEQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U@__ANON__-19:localhost:42455@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800joinC[ e]]Q=$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY@anon-20191002_181700-641:localhost:8800@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800joinanon-20191002_181700-641Z eEEQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g@__ANON__-18:localhost:42455@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800joinCY e]]Q=$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4@anon-20191002_181700-640:localhost:8800@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800joinanon-20191002_181700-640X eEEQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI@__ANON__-17:localhost:42455@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800joinCW e]]Q=$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70@anon-20191002_181700-639:localhost:8800@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800joinanon-20191002_181700-639V eEEQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8@__ANON__-16:localhost:42455@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800joinCU e]]Q=$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s@anon-20191002_181700-638:localhost:8800@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800joinanon-20191002_181700-638zT 3EEQ$13:localhost:42455@__ANON__-15:localhost:42455@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800join9S Q]]Q=$1570043426319TNjnu:localhost:8800@anon-20191002_181700-637:localhost:8800@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800joinanon-20191002_181700-637,R e]]Q$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI@anon-20191002_181700-636:localhost:8800@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800leaveQ eEEQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE@__ANON__-14:localhost:42455@__ANON__-14:localhost:42455!UluPYLGXtInKDTjRzp:localhost:8800joinCP e]]Q=$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg@anon-20191002_181700-636:localhost:8800@anon-20191002_181700-636:localhost:8800!UluPYLGXtInKDTjRzp:localhost:8800joinanon-20191002_181700-636O eEEQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0@__ANON__-13:localhost:42455@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800joinCN e]]Q=$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8@anon-20191002_181700-635:localhost:8800@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800joinanon-20191002_181700-635 ~z v r n j S1-)%!eeQ$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps!YpcmaMNMzjvtgYtrli:localhost:8800eeQ$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800~eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800}eeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800|eeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800{eeQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800zeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800yeeQ$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800xeeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800weeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800veeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800ueeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800teeQ$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800Ms33Q$15:localhost:42455$14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800Mr33Q$14:localhost:42455$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800\q3QQ$13:localhost:42455$1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800kpQQQ$1570043429322ZfcNc:localhost:8800$1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800koQQQ$1570043428321klTqJ:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800knQQQ$1570043428320JDiOD:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800kmQQQ$1570043426319TNjnu:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800leeQ$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800keeQ$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800jeeQ$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800ieeQ$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800heeQ$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800geeQ$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800feeQ$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800eeeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800deeQ$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA!QkkdnzvdrjHaFGkzMt:localhost:8800ceeQ$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A!QkkdnzvdrjHaFGkzMt:localhost:8800beeQ$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8!QkkdnzvdrjHaFGkzMt:localhost:8800 +vyLl? _ 2  ~ Q $ q D  d 7 V *v,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 +Q !XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 +Q !WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  +Q !WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800+Q !WjlTCJVOFJkanCtkFE:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800+Q !WhqVaRReBxJXADAyYD:localhost:8800,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800  w veQay$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3249}{"auth_events": ["$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw"], "prev_events": ["$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw"], "type": "m.room.member", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-636", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-636:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043416855, "hashes": {"sha256": "jxJPog0yX1IOgZaNx2FzrKeAjwOwhOBSKGKrEc7N1+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KdzkEehdy+rX+PpouBSLu92GPb+y9GpDJ85EeFmPj3UjZwwIAIfP4u1u6Mz6l8Leq+7zxu9FN0vbfx5P4a2+Cg"}}, "unsigned": {"age_ts": 1570043416855}}ieQa_$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3248}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-636:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043415971, "hashes": {"sha256": "TTcbNDAk/iw5Y2dUwEraWyHfBBooG18O+a1pdtrFYkU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jWH23aknEterjkcLqih2ucWagmjgp0Rrx1UHSy+vEUiddKl4zVfANQnEceKqMDeVGKUgyLMoIBi5bLd7MrWcDg"}}, "unsigned": {"age_ts": 1570043415971}}}eQ33$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3247}{"sender": "@__ANON__-13:localhost:42455", "hashes": {"sha256": "/YzJTgh+h5b27ngQzCcGRT7/TAKhzu5fEMPVNUh/O3g"}, "state_key": "@__ANON__-13:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "type": "m.room.member", "prev_events": ["$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM"], "origin_server_ts": 1570043414458, "content": {"membership": "join"}, "auth_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A", "$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA"], "signatures": {"localhost:42455": {"ed25519:1": "3M2/dVVqNQ17F1hN3fWH4SK4umA4FcwAqgMaKLUo6rRw7WNARovf9kR0XGv/+fIxFMDYn8BA1uvVejA3iMBZDQ"}}, "unsigned": {}}eQa$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800{"token_id": 615, "stream_ordering": 3246}{"auth_events": ["$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A", "$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs", "$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8"], "prev_events": ["$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA"], "type": "m.room.history_visibility", "room_id": "!QkkdnzvdrjHaFGkzMt:localhost:8800", "sender": "@anon-20191002_181700-635:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043412763, "hashes": {"sha256": "Od9FB2/4vc0PqSnpa7zm5HWq0FLjHxSCGNbnSfns8K4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hoAgV0RG7qTtXiks+m2Akzj2kA85VYxdSbacSmldIjFXRFILnC2FeWbsBzCjK0ZQrS7dfdcAnQR2OALkVzkMDA"}}, "unsigned": {"age_ts": 1570043412763}} *j8p> v D  | J0  P  V $ \ *b1e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxId1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A1e$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$tsLvV5Ni-A03BDQpeOdnqkL_-mclAwq255NrkRtpb3E1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYP1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYO1e$ton9mlKG5L9y1rAEWZAoqpci8h0bdrfnVTmsNb-4IUYN1e$tnvOvG2eodN9qi5tWxeqNA9KOm7PLO9Gqhqv2uoVxJU1e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tk95YoZgxh8JV6wCdlCM8TcHaygwFzTe2LWGkXuUJwc1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwd1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwc1e$tjJn2b1uOaFKtcY08R8U0BMtFH2lSUgYaYFLZZy0Qpwb1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8.1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8-1e$tihvW7zBRLg7rGl4iVla5EAaQWgVRUkaevcRaCmRQL8,1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc1e$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMm1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMl1e$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMk1e$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61E1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$tbS2CM62fqlGcfFaEd-ZgOgeZVdHoWFKPQF_IQASOMA1e$taiQaG5wR8tH9TRYR5Yb0mueMbeM9ynXwzFNhMEp7pw P1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI 1e$tQtX9aO6gb4LbEpGw2Bja6rAEJvv7_0qrMiIxu8GsjI 1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM%1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM$1e$tQ1rjSL9iOjE5-QwBk3M4BnA-hRi2EfuHr_Cs0Qd7OM#1e$tOQ7KjHwuQMF6C3qYmrjTWYoFPNB3ckTJuK3XOzSrmg sbt# 0 = J Y  f sP]Q@anon-20191002_181700-185:localhost:8800!dnZVySJLGNtUKsSgXW:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-184:localhost:8800!oznZaCpONuNDaLarkI:localhost:8800P]Q@anon-20191002_181700-183:localhost:8800!eLsrBEnrHolwCNgkFW:localhost:8800P]Q@anon-20191002_181700-182:localhost:8800!ILbUVZOfPPwaZRrKJd:localhost:8800P]Q@anon-20191002_181700-181:localhost:8800!wAyboOFgsOPwkmgMAI:localhost:8800P]Q@anon-20191002_181700-180:localhost:8829!bnTuVBaAJTPbcYZtRl:localhost:8800N[Q@anon-20191002_181700-17:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800P]Q@anon-20191002_181700-179:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-178:localhost:8800!bnTuVBaAJTPbcYZtRl:localhost:8800P]Q@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-177:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-176:localhost:8800!tDsPLsKOLPePtEWRwn:localhost:8800P]Q@anon-20191002_181700-176:localhost:8800!BGbJEmJRVJGlZFQbZe:localhost:8800P]Q@anon-20191002_181700-175:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-174:localhost:8800!XMNRkfscQXRjgYrOSd:localhost:8800P]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800P]Q@anon-20191002_181700-173:localhost:8800!wUuodvgsmAJqKJUBCQ:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!zFdNewlKnUiMBxnYrN:localhost:8800P]Q@anon-20191002_181700-170:localhost:8800!KeBlWUQiLYUoILKkTB:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!zhCsYcaweVFJLLNwBz:localhost:8800M[Q @anon-20191002_181700-16:localhost:8800!zNCItZNbpkZKuufRhC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!plcvCHNbjCkNMMxnTk:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!odAvowLhHJcmkKlxFk:localhost:8800 ^Mp> j  Q  8 X & ,e4 vl;  | sAyG D NZT"` J.(1e$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg 1e$jBL3Ou52CuXXilB3IreNRLCcPtgTwFZy__a8COmlfwE E1e$jKwI9z6j-v-tZLauf0VB_YfcjdwBKxNKP7vZbrX4nfc1e$jJllAxtAMroC7kXpq0LKmCZuM2iOCFghiE2_g5y0bXg1e$hiSSD43KR2sxi6wB_2kYgXb2ZosgmJQ0QsDVmlNOHkg1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 1e$jR387Bd_teoUeIwbHh45F4nPcnMIDfW3IfFndRiOxoc F1e$jLDfErXcw8U6hihono94bPEI5PM0mBVoSH-r0gQKNhM1e$jCBBRpHc5VAoTl_5R3TiN_VM_Jor-YCK5G_4NPCr4GE71e$hPf2wHZqLR50f6IjoxVU8ldYnLn2G1pBRYU-d5zehaw'1e$iHfdPgNMIWyDTywz9OOLSg4kq0m2PSzKdSlaXILewAY1e$jIqIea9nXdSeu8Rje5roRfecnEGGw6jduq2eFWJiIEQ1e$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI1e$jF7GrL7usMnJTPR0lMcO4-IEO4FFWRAgApzsTLB88xI1e$jEcHoqsm2ia9ISqlLuvQ8G7pBf9tdcN8AyRNg0jE1r01e$jELWAx6_COivwHBwnjbpmC4Jpdj5A0FKnUxnS2gTcZQ1e$jCI5tSvtfOkETV90S8ZpmXoGw1XVZaoAE-82cFGXn_Y1e$jAwWcZ8PBX3DnnXa5OfhEP_xF_20Ar6Z-FIa86tFAsg1e$j5jLKJiKxXTnLf5nwuGqpFr0fYQ3qRhsaR7d-jC0o5Q1e$izSpKm3q7Tj0Hropj_Cv1w_pGACQEIX2kH3rqS2PkFY0e$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rch1e$isaptRTTnZ-HbjIN53E5-W1BnokpAR03gnLTaOJSbQkd1e$irClCE_hGZ-2QXtOC6Z_vqzlM6ENAantX5yzWp0Y4iQ1e$ioXOXWNLe_jcfApjqiXYf0fIFEKQ_Z3xZCbyG4pA_po1e$ijImwajPg5GnIIFapDImcIhmN8WnHGpFh3Pko6ODA9U1e$iiJO-h3-C52DGhyhOpEArSQws_vzggMocJtdnQY62Q41e$if2KhQfcJusa2hMZuXU90zk_aw0m8TV-9NQE8qaYLAU,1e$idpZ3Xh4mw_0zuP55hrwQwxhFKTYqbfjP6d4AMMjzSYN1e$ibSDEAejjS_awY90Yw-lMDhSAfcJzmzRVDpqx1pvnKo1e$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg1e$iZCC7POAXLWKMXGJh8mmfXv-1_0_FInG3PSe32j-LjU1e$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo1e$iTDe7R-obwSgDwhRl9cSNr1UJe5bpKP2Me2WLKyqKTw0e$iSYttYZNarD5zXxKkQ6tKGXxX1m34ZaoLP360qK2CY01e$iSDGaXdtgSmqkjdYjmkEzpvQS7iN7IwutctMxDhsiX81e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMu1e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK01e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ20e$iHfU5Pc5yFT-l7QQkO3ein0oTkV4YblYuIu1ddoepi0`1e$iGOlx_SxX6dEeLYFkifp56kg507Tv6zs917m01DwGXg1e$iDIzh6bndzA7c5MzlFhXIl8CvISvkGNIhl0Tbnkf0m80e$iDBv8sXReuQ16ARw4ZhTAts9AnZXvwH1cHb_Av4WfUcG1e$i6Z9eaLOveTGgAD0rgsp2HRaQIQRuweawPJa6xmth-k1e$i-5nN8BQeS5sJd5mqj9HmQ8biaNLPcBLKWv0ERS1Olw\21e$hv0H_uK7PYhmX9bsWKeLsE8km1zOMx3QiVc6qk7Fvik1e$hu7yPySSdO_GbziFIsrsGUdidR7CEmnDz4zPqgTUQpU1e$htpnU0aU2d7ayX5MXike73n2oKup3wYMuODKGvTgXX4[1e$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9QD1e$hqvbJzVc301Y5MitVn8aGZT6UOewmW4i_ywTHRtVl9A1e$houHzMR5ej6uKYkq5Nmci31ivvCXKE4rLJ6c5uHQgdcz0e$ho1JHhLjmbICnetD-9EqXhgbvnT_cyBD7t5cR2XK31Y"1e$hl9JBKMXel2eAEUjzQ7WY5vzspF4ByxStw4o8yQXjdw91e$hkHu0YMqbiafTG_LoeZSBtljTNSGQmHlSgMUqPQrEWAI1e$hb5GXt5X7h5Bu-MZNhLXs4jL26d48MPYLlt0-iLClS81e$hP3xWQSk8WRWQhFrn8dXO6KZk6fsWdmdfyFQR5cwC9sZ0e$hBnZdHp6m-yF1swNxanhTEd0romTLOvhy8s7UTAlYKw-1e$h7sx6TW-cCSeXQWlBOWs5QvNssVCY-P0adU0Ah2J-Yg41e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE B1e$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ 1e$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4 1e$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs 1e$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc 1e$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc ^1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg -1e$h6kQZvFnPY-87j411Oc7QoHk6thX32ydTPVVi6cytMk 0e$h6NdrK-eDYXtYOFQpT3boaZ72UG1obuzEeSM6LCvCF0.1e$h4cB5oQXnqXA8eaWiDdcnOsCsipXz5PulZ-BTHi6t0g<1e$h0w7Y07a3OUoNmrlaDSqgSrBYUWLzcEVlfRSjcrSNwg1e$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE 1e$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY M1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o 1e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew 1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s 1e$jT8iytjyM1tnHDYrNNsnu6QLh67J1AKPapxdRVuLiC41e$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA +vyLl? _ 2  ~ Q $ q D  d 7 V *v,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!XGAmnfaVvjDtQJuufa:localhost:8800 +Q !XGAmnfaVvjDtQJuufa:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WuiaqqIOvBjgETqdus:localhost:8800 +Q !WuiaqqIOvBjgETqdus:localhost:8800 ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WpThtNEVhrUbUdCdMJ:localhost:8800  +Q !WpThtNEVhrUbUdCdMJ:localhost:8800  ,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800,Q!WjlTCJVOFJkanCtkFE:localhost:8800+Q !WjlTCJVOFJkanCtkFE:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800,Q!WhqVaRReBxJXADAyYD:localhost:8800+Q !WhqVaRReBxJXADAyYD:localhost:8800,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 ,Q!WhLedNwPGGGTtqeqam:localhost:8800 g * T~=ggi]!cs@anon-20191002_181700-647:localhost:8800JJTUBBNUOSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwogh]!cr@anon-20191002_181700-646:localhost:8800HFMIURTAJAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3gogg]!cq@anon-20191002_181700-645:localhost:8800TQRBSFDPVGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQogf]!cp@anon-20191002_181700-644:localhost:8800INFGSFBNKUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAoge]!co@anon-20191002_181700-643:localhost:8800NELMCBWNVQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwogd]!cn@anon-20191002_181700-642:localhost:8800FQRREBIQEQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgogc]!cm@anon-20191002_181700-641:localhost:8800PFGGCSSRVIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQogb]!cl@anon-20191002_181700-640:localhost:8800JIZUEMVYQNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgoga]!ck@anon-20191002_181700-639:localhost:8800VIDPYYIORGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAog`]!cj@anon-20191002_181700-638:localhost:8800AMILRIOBVFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAog_]!ci@anon-20191002_181700-637:localhost:8800SOCIZPGICGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgo /RM H a  K _  Z UPKFA<72TQe !cRbfhxZdPstEsPGPAu:localhost:8800$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-UTQe !cRbfhxZdPstEsPGPAu:localhost:8800$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LATQe !cRbfhxZdPstEsPGPAu:localhost:8800$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gTQe !cRbfhxZdPstEsPGPAu:localhost:8800$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18TQe !cRbfhxZdPstEsPGPAu:localhost:8800$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecTQe !cRbfhxZdPstEsPGPAu:localhost:8800$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcT~Qe !cRbfhxZdPstEsPGPAu:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYT}Qe !cRbfhxZdPstEsPGPAu:localhost:8800$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0T|Qe !sAWFpvSUPExZLVcPEd:localhost:8800$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gT{Qe !sAWFpvSUPExZLVcPEd:localhost:8800$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4TzQe !sAWFpvSUPExZLVcPEd:localhost:8800$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1UTyQe !sAWFpvSUPExZLVcPEd:localhost:8800$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YTxQe !sAWFpvSUPExZLVcPEd:localhost:8800$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQoTwQe !sAWFpvSUPExZLVcPEd:localhost:8800$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUTvQe !sAWFpvSUPExZLVcPEd:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4TuQe !sAWFpvSUPExZLVcPEd:localhost:8800$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cTtQe !YpcmaMNMzjvtgYtrli:localhost:8800$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoITsQe !YpcmaMNMzjvtgYtrli:localhost:8800$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3psTrQe !YpcmaMNMzjvtgYtrli:localhost:8800$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHoTqQe !YpcmaMNMzjvtgYtrli:localhost:8800$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQTpQe !YpcmaMNMzjvtgYtrli:localhost:8800$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUToQe !YpcmaMNMzjvtgYtrli:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70TnQe !YpcmaMNMzjvtgYtrli:localhost:8800$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4TmQe !PzoqoNRxeEEqiLyVSV:localhost:8800$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8TlQe !PzoqoNRxeEEqiLyVSV:localhost:8800$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMTkQe !PzoqoNRxeEEqiLyVSV:localhost:8800$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMTjQe !PzoqoNRxeEEqiLyVSV:localhost:8800$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74TiQe !PzoqoNRxeEEqiLyVSV:localhost:8800$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsThQe !PzoqoNRxeEEqiLyVSV:localhost:8800$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMTgQe !PzoqoNRxeEEqiLyVSV:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sTfQe !PzoqoNRxeEEqiLyVSV:localhost:8800$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg;eQ3 !uPxXJHJyFQwvpQLZNs:localhost:8800$15:localhost:42455;dQ3 !uPxXJHJyFQwvpQLZNs:localhost:8800$14:localhost:42455;cQ3 !uPxXJHJyFQwvpQLZNs:localhost:8800$13:localhost:42455JbQQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043429322ZfcNc:localhost:8800JaQQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428321klTqJ:localhost:8800J`QQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043428320JDiOD:localhost:8800J_QQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043426319TNjnu:localhost:8800J^QQ !uPxXJHJyFQwvpQLZNs:localhost:8800$1570043425318lLfNb:localhost:8800T]Qe !UluPYLGXtInKDTjRzp:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIT\Qe !UluPYLGXtInKDTjRzp:localhost:8800$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGsT[Qe !UluPYLGXtInKDTjRzp:localhost:8800$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxETZQe !UluPYLGXtInKDTjRzp:localhost:8800$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lATYQe !UluPYLGXtInKDTjRzp:localhost:8800$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mYTXQe !UluPYLGXtInKDTjRzp:localhost:8800$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ckTWQe !UluPYLGXtInKDTjRzp:localhost:8800$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPgTVQe !UluPYLGXtInKDTjRzp:localhost:8800$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw  }eQ33$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3253}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY"], "content": {"membership": "join"}, "origin_server_ts": 1570043420749, "prev_events": ["$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA"], "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-14:localhost:42455", "depth": 6, "origin": "localhost:42455", "hashes": {"sha256": "2VSc5m+RCJIkycKRCxoMnzi9OqpZ40oXuT0v1FWa8sg"}, "sender": "@__ANON__-14:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "c4eRuXXD99W2diNiVg/9wLIygpi/mO+Zf9FPO4cnDIW93biOyMK522zwtngYVy5L2GDNfd68OUDebmaq2h5iBw"}}, "unsigned": {}}eQa$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3252}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY"], "type": "m.room.history_visibility", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043419105, "hashes": {"sha256": "egVgkladDbYGuh2/cEvI37PPUgsA6bUeHuJhvBslHE8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "biicQdVpfTwURH7qR1urSutyHkGdFfeyB/W/QWQpfKg0qzh3V22rNjOaXblu0aX/HkXY2Nef9AQ2f/nqyQeaBw"}}, "unsigned": {"age_ts": 1570043419105}}teQau$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3251}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck"], "type": "m.room.join_rules", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043418438, "hashes": {"sha256": "M+/x0Er2JvO41zrlKOocGjryxMWuBFGRchvG+ctQd4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xc6z7r9LjV37LKHMFPBvpbDozI3N7gQA3mjoFnqHfuraTh/rWFWtK2zTffNIp+fnO/rWXJPFvI7fHre0Qg1RDw"}}, "unsigned": {"age_ts": 1570043418438}}keQac$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "stream_ordering": 3250}{"auth_events": ["$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "type": "m.room.power_levels", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"users": {"@anon-20191002_181700-636:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043417523, "hashes": {"sha256": "ftRHXRa/FyHaq7QzUukWzJEa/HUKXXq1Len3KapQRak"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MzwmPqCJ7ipK0HRyJZen81Flk223R76ZRyJ/cHG838pE3Vgd2xIAwtVz3nMunE8NSLXaBm/C2jRRo5Lg9ygsAw"}}, "unsigned": {"age_ts": 1570043417523}} /k9q? 3 w E  } K   R Y '   _ -9ke1e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA k1e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 O1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c H1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 1e$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8 1e$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs 11e$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI )1e$F43KqIQb-AGSuNJobNJPwMKVKRGjppbb1lPjw3TV1Mk1e$F2tfpV7DtMQfYul8Lc8CsjoQ5zwKesxHk-a-zCCxqkg 1e$EtO6T64jOX8ndSV3nK-jTPPmfct084Gbz6Ivw_Dvwkwt1e$EsrBItbKtQKhbZw0qkjTC4j8Vej9rssJy2R6PcHR36o1e$Eqgv7XHnrDclUHJObWyOOIRA2Qheayu-st3EJLFwO9U1e$EpMs-pGbcCl7TqUjZLFQYTT3CI4NczfiXlxrJmDsb0o 1e$EnkUB1fnq20DVhvOMXpJ0qpCKEpK_7OCMtP5cDkJnN0 1e$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxc1e$ElLuqV1ug7ZxN3PVZyctmBdLUKxfII6cHTUBFjdf3_o1e$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWs:1e$Ej7RWPxE7unAkjskOLsvtGVS53IqsnvFabUYcoM5oGsX0e$Ei9xSvHseBlrgnTneikLekd8cfrkD10QEklWzca3VDQ!1e$Ei4RiEQdZipYmytacOItRw7Zcrr3grdgjG0ziFtT0SU|1e$Eh-ghwuho8Gg6NdNMw0mTVgZ8zwRJmTfcV3hfyWkwJA1e$Eg--2npTDgglRVwVuZupWxTgUAFLuz2cVBQq9LTQ-PY!1e$Efo6rRgOY2gjH93JgTtVBbZkasc4TEW6vR46KR7yaHs V1e$Ed0lwsshcktNWleXJBOlncFWvx1cOATeTaZngwhEkgQt1e$EbIchgL72pwWN3BwxRAMikNSajU3TTb3eB4ctUonGaIy1e$E_6Q1ni2uK7iDa1BfhMACCJR10I9INOhUrj2S7VFTlEL0e$EZtuJXDgDgh7Vn3_pfofHFWi2YWCx3GbsR-z-CcXbAEs1e$EWULRLKu_jV2gwRWKK-c_G0ITwuur2aZ94lurA1fUC41e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$EV7UgifsVETPORxWrlbqXK87R7BKC-YQs2Yr8YumW-w1e$ESnAX3wWrtAfygsB2qulIG5ubtI4VzS4DJpxYL9NeTc1e$ERvpgQ2vp6VLPPfKx_OqsMALMQQGUHosrwudBz8wF1c1e$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym451e$ENr183O_tzk0qsWNQmVeH9tjvAKFE4rmseyOmexmE5Y1e$EMkGUcTExv3IyAG9VByUya0O2GMg1M3IFHpv7GtekR4Q1e$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHs 1e$EJ_5-yBsxkuGX-TZ__b3gn_D7k7CKnC1EMRT_YTQBZwm1e$EJTar2M5BIE7BeTB15xESNAg60oa4PQcCIrRcOGDl1k1e$EFgXvO6GMXEw_EcE5pGZh72CdQMVGXbjPalk6sSKNj01e$EF0i2fSVHHmzYk_o_Dd22gRKMDNSv-HV3f5u8Vu_ciU *1e$EECFbJ4cb2UxtMfAnRNseIqW3yEjTaNK3hFKzUFdCPE~1e$EB8h-dQwPZg19QeY5DftzJMI7bbBaPgLcqOu34iLfGQ 1e$E97YKlrbj6M_7QSIC-Y6iBOxEQoGFWUSF7o3RTxUe4c0e$E5n0eVdDhgRdX608SNQqtlSo1CaXdOhPJrmFGGAyODU1e$E4j06bm5chkozgHeydGpxwmCsAWKWfC5L-5j90KADag 1e$E4a38Nf8lQwfwllT97ZhXxk8sAzOPGJ7gXp4wvRomYYY #p Y ( 1 Y i x6R[/8`p}GeQ'E$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455mFeQ? $ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibilitymEeQ? $ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibilityeDeQ/ $pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rulesgCeQ3 $-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels BeQ']$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800aAeQ' $DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800m.room.create}@eQ'E$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455m?eQ? $QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibilitym>eQ? $rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibilitye=eQ/ $ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rulesg<eQ3 $8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels ;eQ']$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800a:eQ' $Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800m.room.create}9eQ'E$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455m8eQ? $aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibilitye7eQ/ $_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rulesg6eQ3 $06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels 5eQ']$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800a4eQ' $i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800m.room.create}3eQ'E$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455m2eQ? $u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibilitym1eQ? $8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibilitye0eQ/ $hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rulesg/eQ3 $h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels .eQ']$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800a-eQ' $ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.created,3Q'E$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455c+QQ? $1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility[*QQ/ $1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules])QQ3 $1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels(QQ']$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800W'QQ' $1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create &eQ']$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@anon-20191002_181700-636:localhost:8800}%eQ'E$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE!UluPYLGXtInKDTjRzp:localhost:8800m.room.member@__ANON__-14:localhost:42455  {QQa) $1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3257}{"auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}]], "prev_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}]], "type": "m.room.member", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-637", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-637:localhost:8800", "event_id": "$1570043426319TNjnu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043426333, "hashes": {"sha256": "OPBLfGyZ2pvRH6D8pIBJIjxXseKvzEXDIDYeD9H35ok"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iT5XyOn9NK7C0c2x+jVP91WDX9aS6K21YlU69vAPCY5QirMUnsILA1XPOFnTa5YRja7Ow1el83zxu8rVPhBgBQ"}}, "unsigned": {"age_ts": 1570043426333}}QQaC $1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3256}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-637:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043425318lLfNb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043425503, "hashes": {"sha256": "BLH+VWGM6kAYojkNoxf1L697tJKClu1eStvxB182RXM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uAo3LYsTQMpUsK1yiOO9F7jMbQ7cSTwMoAGas5HxBJJ69OIi7e9kn5dmxy2qVJa3LCGVBVqpoqKWddV3arVFCg"}}, "unsigned": {"age_ts": 1570043425503}}IeQ?A$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYI!UluPYLGXtInKDTjRzp:localhost:8800{"stream_ordering": 3255}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs"], "type": "m.room.member", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"membership": "leave"}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-636:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043423634, "hashes": {"sha256": "r7i0pT+3YxhcMmMfF5ymKoH3AXmFELyap7b1t6C0NNM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zB0H9cA8jtPX3J3v/1opEGHs2YcZ+uvE6aSKE94h4AF9hbLRMx7jfqs1dCXJoZFLhX+XUo6eWNDVg5my/c8BAg"}}, "unsigned": {"age_ts": 1570043423634, "replaces_state": "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"}}eQk$io4nAkox_4q20Xi1eYvqNwFqcwunwZU-MEM-2zPOqGs!UluPYLGXtInKDTjRzp:localhost:8800{"token_id": 616, "txn_id": "596", "stream_ordering": 3254}{"auth_events": ["$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck", "$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw", "$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg"], "prev_events": ["$UNcUi3k5pEOkJkdsGpASn9BYq1gMFmwVtS7gxPnNKxE"], "type": "m.room.message", "room_id": "!UluPYLGXtInKDTjRzp:localhost:8800", "sender": "@anon-20191002_181700-636:localhost:8800", "content": {"body": "body1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043421709, "hashes": {"sha256": "gp2EJlPn4N0hBf6H5PwyJOsKw7CO0ocee8eKoH6i3ME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hUJS1FalQmon7ShFvas/+o0n70ls7zNL5W47BDIJ2oqPpwVrhrR9e1VPrJkXV5/7/9tu/BE5ubez5ukDhoRmBQ"}}, "unsigned": {"age_ts": 1570043421709}} MU1 J  P D   W %  ] +cp8i7[ j) o#= | u vC{I>O1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 d1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM\1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw 51e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs g1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94YZ1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh0M1e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM|1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQV1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrku1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs\1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IM1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gv1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYk1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o021e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx41e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg%1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yIy1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIAI1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhio1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9s#1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo|1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk|1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz0;1e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 1e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA J1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU H1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IW1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns1e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE r1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc Y1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw N1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q ?1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 21e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs \f(   d  ni/9L\&Re3Q ]$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUm.room.power_levels!sAWFpvSUPExZLVcPEd:localhost:8800mm@anon-20191002_181700-640:localhost:8800 Qe'Q ]$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4m.room.member!sAWFpvSUPExZLVcPEd:localhost:8800mm(@anon-20191002_181700-640:localhost:8800P e'Q  ]$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cm.room.create!sAWFpvSUPExZLVcPEd:localhost:8800mQmՠ@anon-20191002_181700-640:localhost:8800Oe'Q E$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIm.room.member!YpcmaMNMzjvtgYtrli:localhost:8800mmQ@__ANON__-17:localhost:42455!Ne)Q ]$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3psm.room.message!YpcmaMNMzjvtgYtrli:localhost:8800mm@anon-20191002_181700-639:localhost:8800,Me?Q ]$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHom.room.history_visibility!YpcmaMNMzjvtgYtrli:localhost:8800mmLJ@anon-20191002_181700-639:localhost:8800$Le/Q ]$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQm.room.join_rules!YpcmaMNMzjvtgYtrli:localhost:8800mm@anon-20191002_181700-639:localhost:8800&Ke3Q ]$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uUm.room.power_levels!YpcmaMNMzjvtgYtrli:localhost:8800mm@anon-20191002_181700-639:localhost:8800 Je'Q ]$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70m.room.member!YpcmaMNMzjvtgYtrli:localhost:8800m.m@anon-20191002_181700-639:localhost:8800I e'Q  ]$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4m.room.create!YpcmaMNMzjvtgYtrli:localhost:8800mmv@anon-20191002_181700-639:localhost:8800He'Q E$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8m.room.member!PzoqoNRxeEEqiLyVSV:localhost:8800mm@__ANON__-16:localhost:42455!Ge)Q ]$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWMm.room.message!PzoqoNRxeEEqiLyVSV:localhost:8800mᬏmᮚ@anon-20191002_181700-638:localhost:8800,Fe?Q ]$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMm.room.history_visibility!PzoqoNRxeEEqiLyVSV:localhost:8800mm@anon-20191002_181700-638:localhost:8800,Ee?Q ]$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74m.room.history_visibility!PzoqoNRxeEEqiLyVSV:localhost:8800mKm@anon-20191002_181700-638:localhost:8800$De/Q ]$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsm.room.join_rules!PzoqoNRxeEEqiLyVSV:localhost:8800m,mm@anon-20191002_181700-638:localhost:8800&Ce3Q ]$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOMm.room.power_levels!PzoqoNRxeEEqiLyVSV:localhost:8800mm៑@anon-20191002_181700-638:localhost:8800 Be'Q ]$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sm.room.member!PzoqoNRxeEEqiLyVSV:localhost:8800m!m7@anon-20191002_181700-638:localhost:8800A e'Q  ]$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStgm.room.create!PzoqoNRxeEEqiLyVSV:localhost:8800mᕼm0@anon-20191002_181700-638:localhost:8800|?3)Q E$15:localhost:42455m.room.message!uPxXJHJyFQwvpQLZNs:localhost:8800mክm-@__ANON__-15:localhost:42455|>3)Q E$14:localhost:42455m.room.message!uPxXJHJyFQwvpQLZNs:localhost:8800mክm~@__ANON__-15:localhost:42455{=3'Q E$13:localhost:42455m.room.member!uPxXJHJyFQwvpQLZNs:localhost:8800mmz@__ANON__-15:localhost:42455"<Q?Q ]$1570043429322ZfcNc:localhost:8800m.room.history_visibility!uPxXJHJyFQwvpQLZNs:localhost:8800mm@anon-20191002_181700-637:localhost:8800;Q/Q ]$1570043428321klTqJ:localhost:8800m.room.join_rules!uPxXJHJyFQwvpQLZNs:localhost:8800mmတ@anon-20191002_181700-637:localhost:8800:Q3Q ]$1570043428320JDiOD:localhost:8800m.room.power_levels!uPxXJHJyFQwvpQLZNs:localhost:8800m|m}@anon-20191002_181700-637:localhost:88009Q'Q ]$1570043426319TNjnu:localhost:8800m.room.member!uPxXJHJyFQwvpQLZNs:localhost:8800mvmv@anon-20191002_181700-637:localhost:8800 $>^ 7 n G ) `k#/GLp|iGQ3 e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU FQ']e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4cEQ' e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.create$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6cDQ'Ee !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoICQ'Ee !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455$dJvP2Cld7bj1OfVg74NWAEQzJAteNjsRLyKHcBGFZagoBQ? e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility$tvWfYhl0bbZ5HfUUD_KgpB4bJC2wQHNAZllEnIRwAdgoAQ? e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHog@Q/ e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rules$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQi?Q3 e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU >Q']e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70c=Q' e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.create$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4<Q'Ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8;Q'Ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455$XJM5LZSZEd9C1-7-JBwo7jm9KRaHYgHNM3B_Rq0ub6oo:Q? e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoMo9Q? e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74g8Q/ e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rules$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzsi7Q3 e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM 6Q']e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sc5Q' e !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.create$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg]4Q/ Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800f3Q'E3 !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455Y2Q' Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800_1Q3 Q !uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800]0Q/ Q ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800f/Q'E3 ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455Y.Q' Q ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800_-Q3 Q ~!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800],Q/ Q }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800f+Q'E3 }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455Y*Q' Q }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.create$1570043425318lLfNb:localhost:8800_)Q3 Q }!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800f(Q'E3 |!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$13:localhost:42455u'Q'EQ {!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455$1570043430323sbmUE:localhost:8800e&Q? Q z!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility$1570043429322ZfcNc:localhost:8800]%Q/ Q y!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules$1570043428321klTqJ:localhost:8800_$Q3 Q x!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels$1570043428320JDiOD:localhost:8800  fx QQa $1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3260}{"auth_events": [["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}], ["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}]], "prev_events": [["$1570043428321klTqJ:localhost:8800", {"sha256": "cUXoLihkR91UqZN6TAXlV1o3LbYTIAJtVUEhAx3eKSU"}]], "type": "m.room.history_visibility", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043429322ZfcNc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043429599, "hashes": {"sha256": "S3EUXjKv3CxZtyGtlfF9KdUxcepsC+Wo95/G3pOQWAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "78P8Vu4ihabtUfAwhC7cvOeukUJfjnFraSYi6sPsJ0UXFfZmT7H+B29WJLyj+oeevQARmeONpwjMHoz2nqNSDA"}}, "unsigned": {"age_ts": 1570043429599}}gQQaq $1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3259}{"auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}], ["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}]], "prev_events": [["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}]], "type": "m.room.join_rules", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043428321klTqJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043428892, "hashes": {"sha256": "AOm5fmQDmULXxmrZhybUN1OesSGk79GoSU7a19+N6d8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3wcG/2fR0LLOTAjdjzKiNRmdrE50uL3/N0JN9g3WzXY2urqwgh9C9DShx7LjC4R8Dj3NPM/up22Mncy8ncwhCg"}}, "unsigned": {"age_ts": 1570043428892}}+QQay $1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800{"token_id": 617, "stream_ordering": 3258}{"auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}]], "prev_events": [["$1570043426319TNjnu:localhost:8800", {"sha256": "ZYUQtFLiFlX6FMCWRmhukyand30XoldolSr8Hpn6RRc"}]], "type": "m.room.power_levels", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "sender": "@anon-20191002_181700-637:localhost:8800", "content": {"users": {"@anon-20191002_181700-637:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043428320JDiOD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043428091, "hashes": {"sha256": "FueNwh/uH6wE3yuS5GE8NrafNGKKwef3Vp09jgCvgT8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T2HYBlbHlOEhFaTeltomFw5UiFF4UoUvtEfFUNce7NS/y15BWMgR1FBsNXesqcLxamGFlHCdria2kX6/42fYCg"}}, "unsigned": {"age_ts": 1570043428091}} cV Bq |  ).Vmr   G RVVVVVXL31'E$17:localhost:42455!6:localhost:42455m.room.member@__ANON__-20:localhost:42455joinaFeQ' $DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800m.room.createEeQ'E$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455joinmDeQ? $QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibilityeCeQ/ $ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rulesgBeQ3 $8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels AeQ']$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800joina@eQ' $Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800m.room.create?eQ'E$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455joinm>eQ? $aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibilitye=eQ/ $_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rulesg<eQ3 $06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels ;eQ']$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800joina:eQ' $i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800m.room.create9eQ'E$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455joinm8eQ? $u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.history_visibility/QQ']$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@anon-20191002_181700-637:localhost:8800joinW.QQ' $1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.createKeQ'E$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455joinmJeQ? $ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibilityeIeQ/ $pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rulesgHeQ3 $-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels GeQ']$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800joine7eQ/ $hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.join_rulesg6eQ3 $h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.power_levels 5eQ']$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@anon-20191002_181700-638:localhost:8800joina4eQ' $ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800m.room.createh33Q'E$13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.member@__ANON__-15:localhost:42455joinc2QQ? $1570043429322ZfcNc:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.history_visibility[1QQ/ $1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.join_rules]0QQ3 $1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800m.room.power_levels &L r  X V T RPNLJHFDB~]eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~\eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800~[eeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800~ZeeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~YeeQ$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800~XeeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800~WeeQ$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~VeeQ$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~UeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800~TeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~SeeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~ReeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~QeeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~PeeQ$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~OeeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~NeeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~MeeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~LeeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~KeeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~JeeQ$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800~IeeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800~HeeQ$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800~GeeQ$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800[F3QQ$13:localhost:42455$1570043428321klTqJ:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800[E3QQ$13:localhost:42455$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800[D3QQ$13:localhost:42455$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800jCQQQ$1570043429322ZfcNc:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800jBQQQ$1570043429322ZfcNc:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800jAQQQ$1570043429322ZfcNc:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j@QQQ$1570043428321klTqJ:localhost:8800$1570043428320JDiOD:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j?QQQ$1570043428321klTqJ:localhost:8800$1570043426319TNjnu:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800j>QQQ$1570043428321klTqJ:localhost:8800$1570043425318lLfNb:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800 3 e 3i$eQa_$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3265}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-638:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043434428, "hashes": {"sha256": "Oj+Y17FeE6rTw3sA+7d7MPQMPeyTSXEC+sN2zsYsMF0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "d0ZCIRg7c/lp97SLTmEe8k/KBqcUW5Ct17NIwPsrumaQGZVgfWfm1SHQg4+lH2dv06K/LTmw+oT+adLOg5OWDQ"}}, "unsigned": {"age_ts": 1570043434428}}A#3QcA $15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800{"outlier": false, "stream_ordering": 3263}{"depth": 8, "origin": "localhost:42455", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-15:localhost:42455", "hashes": {"sha256": "Vn1qYDazZiG4exWaMPoVOX75GX5wV6l56VR5eCl3Dzw"}, "content": {"body": "Message 2"}, "auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "BLH+VWGM6kAYojkNoxf1L697tJKClu1eStvxB182RXM"}], ["$1570043428321klTqJ:localhost:8800", {"sha256": "AOm5fmQDmULXxmrZhybUN1OesSGk79GoSU7a19+N6d8"}], ["$1570043428320JDiOD:localhost:8800", {"sha256": "FueNwh/uH6wE3yuS5GE8NrafNGKKwef3Vp09jgCvgT8"}], ["$13:localhost:42455", {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}]], "event_id": "$15:localhost:42455", "prev_events": [["$14:localhost:42455", {"sha256": "xsY54hkCRWACTXFXNPvBG5KDaaUCTI+85gCJwzXvqFs"}]], "origin_server_ts": 1570043431597, "signatures": {"localhost:42455": {"ed25519:1": "bK8zKYhUiYCLlU2aUd1Iaas5pX899O3Tk09b9wCRlImeFGnaYH1oBisSqtsBwwiqtt9hm9eSyCCaUofsPz72CA"}}, "unsigned": {}}A"3QcA $14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800{"outlier": false, "stream_ordering": 3262}{"hashes": {"sha256": "xsY54hkCRWACTXFXNPvBG5KDaaUCTI+85gCJwzXvqFs"}, "sender": "@__ANON__-15:localhost:42455", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "type": "m.room.message", "depth": 7, "origin": "localhost:42455", "origin_server_ts": 1570043431597, "prev_events": [["$13:localhost:42455", {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}]], "auth_events": [["$1570043425318lLfNb:localhost:8800", {"sha256": "BLH+VWGM6kAYojkNoxf1L697tJKClu1eStvxB182RXM"}], ["$1570043428321klTqJ:localhost:8800", {"sha256": "AOm5fmQDmULXxmrZhybUN1OesSGk79GoSU7a19+N6d8"}], ["$1570043428320JDiOD:localhost:8800", {"sha256": "FueNwh/uH6wE3yuS5GE8NrafNGKKwef3Vp09jgCvgT8"}], ["$13:localhost:42455", {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}]], "event_id": "$14:localhost:42455", "content": {"body": "Message 1"}, "signatures": {"localhost:42455": {"ed25519:1": "VVAcMPOcuidT+ZgRe4MRYrVWPk4u4o9oz9BdwEdtFDxfMRg0RIKrv5bnIYJ3oUUIau+2O7EazUGOfHNiEv+zCw"}}, "unsigned": {}}R!3Q3 $13:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3261}{"sender": "@__ANON__-15:localhost:42455", "hashes": {"sha256": "ow9JvuCMs9SxxxAM2ao83STq0Tmigwxr7kAIMgFGcPk"}, "depth": 6, "state_key": "@__ANON__-15:localhost:42455", "origin": "localhost:42455", "room_id": "!uPxXJHJyFQwvpQLZNs:localhost:8800", "type": "m.room.member", "prev_events": [["$1570043429322ZfcNc:localhost:8800", {"sha256": "6zj16l9ZgnRaVyEvRbeMPoOSAjc9DKIDNgAR1+jxU7c"}]], "origin_server_ts": 1570043431128, "content": {"membership": "join"}, "auth_events": [["$1570043428320JDiOD:localhost:8800", {"sha256": "SkUdVLhNAkxiaruZACOQ41OYul3msg/6k/8Y66hzmKQ"}], ["$1570043425318lLfNb:localhost:8800", {"sha256": "vzrPAePtqDkOXCecIYY5Lb8+Nm19mKRrNk3f/URXkaQ"}], ["$1570043428321klTqJ:localhost:8800", {"sha256": "cUXoLihkR91UqZN6TAXlV1o3LbYTIAJtVUEhAx3eKSU"}]], "event_id": "$13:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "nZdEbouvDI0KY74dD/9Je69Iwzu2K/O8/XzTu6NGQbkDKIu5reOPxP0YQoU/BBkzn5K3xps4t5HcqaV3OgKGAQ"}}, "unsigned": {}} *X) { 2 W  | 3  IyAis!W3Y'i%eQ%$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc!DSFBpkqfnvBQbGoMUK:localhost:8800content.bodysentinelc$eQ%$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E!ZKPJvrCZHMHPEksYDc:localhost:8800content.bodyhic#eQ%$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY!PgNDjhhIBAXKryuGKy:localhost:8800content.bodyhic"eQ%$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800content.bodyhif!eQ%$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800content.bodyHellon eQ%'$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc!vnFXnkCSfTbsSNKrtg:localhost:8800content.bodyTest message1feQ%$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU!jRuDexjFzIDOKbwDJQ:localhost:8800content.bodyHello\?Q%)$60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800content.bodynothing to seeY?Q%#$59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800content.bodytotes legitbQQ%#$1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800content.bodyHello worldbQQ%#$1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800content.bodyHello worldO3Q%$53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800content.bodyevent_cO3Q%$52:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800content.bodyevent_xO3Q%$49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800content.bodyevent_cO3Q%$46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800content.bodyevent_xleQ%#$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4!wBBQYEPjQGnoAzDpEu:localhost:8800content.bodyHello worldfQQ%+$1570043486339YbYQQ:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 10 hereeQQ%)$1570043485338vbLwS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 9 hereeQQ%)$1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 8 hereeQQ%)$1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 7 hereeQQ%)$1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 6 hereeQQ%)$1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 5 hereeQQ%)$1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 4 hereeQQ%)$1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 3 heree QQ%)$1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 2 heree QQ%)$1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800content.bodyMessage 1 hereG 31%+$28:localhost:42455!6:localhost:42455content.bodyMessage 10 hereF 31%)$27:localhost:42455!6:localhost:42455content.bodyMessage 9 hereF 31%)$26:localhost:42455!6:localhost:42455content.bodyMessage 8 hereF31%)$25:localhost:42455!6:localhost:42455content.bodyMessage 7 hereF31%)$24:localhost:42455!6:localhost:42455content.bodyMessage 6 hereF31%)$23:localhost:42455!6:localhost:42455content.bodyMessage 5 hereF31%)$22:localhost:42455!6:localhost:42455content.bodyMessage 4 hereF31%)$21:localhost:42455!6:localhost:42455content.bodyMessage 3 hereF31%)$20:localhost:42455!6:localhost:42455content.bodyMessage 2 hereF31%)$19:localhost:42455!6:localhost:42455content.bodyMessage 1 herebeQ%$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800content.body1beQ%$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800content.body1beQ%$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps!YpcmaMNMzjvtgYtrli:localhost:8800content.body1b~eQ%$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800content.body1Q}3Q%$15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800content.bodyMessage 2Q|3Q%$14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800content.bodyMessage 1 \y^+aJ/M6i6 m P 5  n W  s 4  s \  l O 4 U8lIpU2h5t_J3cF/ >'] m.room.member@anon-20191002_181700-657:localhost:8800 C'  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-31:localhost:42455 D/  m.room.join_rules @"?  m.room.history_visibility A'  m.room.create ?3  m.room.power_levels ;2'E m.room.member@__ANON__-31:localhost:42455 =/  m.room.join_rules >'  m.room.create <! test_stateB :2'E m.room.member@__ANON__-31:localhost:42455 92'E m.room.member@__ANON__-31:localhost:42455 83  m.room.power_levels 7"?  m.room.history_visibility 6/  m.room.join_rules 53  m.room.power_levels 4>'] m.room.member@anon-20191002_181700-657:localhost:8800 3'  m.room.create 22'E m.room.member@__ANON__-30:localhost:42455 12'E m.room.member@__ANON__-30:localhost:42455 0"?  m.room.history_visibility //  m.room.join_rules .3  m.room.power_levels ->'] m.room.member@anon-20191002_181700-656:localhost:8800 ,'  m.room.create +"?  m.room.history_visibility */  m.room.join_rules )3  m.room.power_levels (>'] m.room.member@anon-20191002_181700-655:localhost:8800 ''  m.room.create &2'E m.room.member@__ANON__-28:localhost:42455 %2'E m.room.member@__ANON__-28:localhost:42455 $"?  m.room.history_visibility #/  m.room.join_rules "3  m.room.power_levels !>'] m.room.member@anon-20191002_181700-654:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-653:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-26:localhost:42455 2'E m.room.member@__ANON__-26:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-652:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-23:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-646:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-22:localhost:42455 2'E m.room.member@__ANON__-22:localhost:42455 "?  m.room.history_visibility "?  m.room.history_visibility /  m.room.join_rules /  m.room.join_rules 3  m.room.power_levels 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-645:localhost:8800 >'] m.room.member@anon-20191002_181700-644:localhost:8800 '  m.room.create '  m.room.create 2'E m.room.member@__ANON__-21:localhost:42455 2'E m.room.member@__ANON__-21:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-643:localhost:8800 '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules '  m.room.create 2'E m.room.member@__ANON__-20:localhost:42455 /  m.room.join_rules @ Qp  +> vWDp  ||j v DJ]> Q c%i71  V $ 1e$nRSFEV1TH9w1lu1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQU1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagx1e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI )1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$oIWLYO7BEnPk3Grd2o6dZ5Qt2N6n1vI5ovMKPs2uLhQ F1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U#1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc,1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fAQ1e$oEHD4zPqW8LNkY1f0QZum0s_EeqY9KeoGTvl0nhPiqg0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYb1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU*1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs41e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCoB1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otw1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k51e$nIxYJLGQUWSNtmRA0QzCTwCP-DnYXsCd99B7iCp1Eu41e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xU11e$oKhq6E18q_Y940Z6tFUXogrPZITx2F2ao7v8M2gUlKE1e$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kN1e$nH5JNtqyD9Dh4TebhOVBF7M71aSclK7F2gEfvo1XCMk1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$oQ_rqDARVDI9_Zd-k7P-lYZDsjy9FGUX5jldFmJz-EIl1e$oOS6eB4IAt-XF5XBjaZJgyzeCVXYy0nDA0clcIBkKyc1e$oHsSH1zRw_L9gcHAj4i4ZytY5d78-WNSruz5RWcHWqk1e$nHWCCxK_syJcJvWiMm85kC76vAxZH1nvR2GpHWW2Bh0 +1e$obTCNNIwbX7_cys01oAsFU7Eh9wK12a4QyGUszQ0L1w1e$o_yk2B9oFMTKAlSv1xM5-t57fCBQVtqWxq0X__yAfO41e$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ 1e$oV6lJX1L-Q_i34cEpuzEgeJZJzP1JDPTi2VTcmcIOTQr1e$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDg1e$oQhsCHmpYPE5X16Q52SKG9NPVd7WuyyZQ79Y2Oin7wc 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc 1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg51e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI 1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0 <1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ 1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg 1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E 1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck "1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk 821e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc L1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI F21e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y j1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk  (eQa$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3269}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs"], "type": "m.room.history_visibility", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043438155, "hashes": {"sha256": "Gdzq3WvRVTcfLwkah7h00R7gdNAzW1GdyBUGWTnU9k0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5R7YrFZMkTbZ3KH6E/uu+VFMl51KZUhCchw5DpnOOi0Tt0CW1v+2Tz4r8euqVaEMp0OKVtAfs9xllzuGzLIRBQ"}}, "unsigned": {"age_ts": 1570043438155}}t'eQau$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3268}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM"], "type": "m.room.join_rules", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043437356, "hashes": {"sha256": "/f1fQq65DMxiwZCGviGccDnUwAZHf1WSeM836I1aL2k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XSMl6FfuSQ758DK/ujauZq5t6FSTKlQGahxyE6ouERz1K4H0qprmDjFobLme0Rtp02XGcO2yXl9t3ABr7oC2Cw"}}, "unsigned": {"age_ts": 1570043437356}}k&eQac$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3267}{"auth_events": ["$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "type": "m.room.power_levels", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"users": {"@anon-20191002_181700-638:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043436530, "hashes": {"sha256": "PF3EFsPWp9W5OcNnbFinvSWI1nv4Lv8aFREkzWnP9LM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2MDX7FrTe9quk00lvgrYJIZbpZHCpYzLaVURUBxUFEFXsQ6LfD8HXOvGwq9Crv/o/T6woAc7qXtD+3wM7ZzsCg"}}, "unsigned": {"age_ts": 1570043436530}}v%eQay$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3266}{"auth_events": ["$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg"], "prev_events": ["$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg"], "type": "m.room.member", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-638", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-638:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043435297, "hashes": {"sha256": "BUTIFJyHUEl1C3GsOj5pM5sUZrbmAmFwJ/pU3DMCyCE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "He23bt12oZt5KGTDHRm+bcbNwZ7dj9sjutQ17FgXZS+cDQ0q20/CokU1Oju9XFPykvT+Odyd3EoXg1QWiaRNCQ"}}, "unsigned": {"age_ts": 1570043435297}} > -+>i,eQa_$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3273}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-639:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043443222, "hashes": {"sha256": "cJB4gAj/zHZpLrVHOtjalU+bwWVYiNY+DIoeMhJzPH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oXQAnx/k2Zbdau5yHXhS2rTNYVmT+AUNEU2IrCFhCujLjL8zj6olvCtB26drwRn6BCALMN5l3c2zgUCmnV8sCA"}}, "unsigned": {"age_ts": 1570043443222}}}+eQ33$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3272}{"content": {"membership": "join"}, "auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs"], "prev_events": ["$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM"], "origin_server_ts": 1570043441642, "state_key": "@__ANON__-16:localhost:42455", "depth": 8, "origin": "localhost:42455", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "type": "m.room.member", "sender": "@__ANON__-16:localhost:42455", "hashes": {"sha256": "ZxlPPr7ErtY1UGV06JVQo40YfDarUDlobSjQoo9sjgE"}, "signatures": {"localhost:42455": {"ed25519:1": "YPLvSdIVXn+iZKf4xH4A2N0C9mjuX5s1CVPY30vE6fkLJCOjhcfS2Hwlb19A0lyR1HjUiuaylcyREMmbdCGGAg"}}, "unsigned": {}}}*eQc$3ls-HpFgMWBKgEYJ8_JeUfGY-L3ai0NtvLkXd35rWWM!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "txn_id": "597", "stream_ordering": 3271}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM"], "type": "m.room.message", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043440271, "hashes": {"sha256": "Xom1GK6ZZSMHZAMDgsdqXU3maZOFHh5pGZgTkX73Gxc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "okii3yYWKH8KbHgZTgOUPKGfSHed516TBVWs/AiiCYbafsYHQwmaIUVm0O02LZLHJiZcGDErBCaK+uD5lcPKCQ"}}, "unsigned": {"age_ts": 1570043440271}}O)eQa+$u8Eo5xzGaSJ_-RY58gBfRB3ieW11n4dCoA5fm5QlWoM!PzoqoNRxeEEqiLyVSV:localhost:8800{"token_id": 618, "stream_ordering": 3270}{"auth_events": ["$h6z92IAMNM46B_PqVFX-WMN1iKVN0xNxBP5eRBmJcOM", "$ZAWayiksR73vvODLZpkjlTTOv-fwN40Q-w1XCuPAStg", "$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3s"], "prev_events": ["$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74"], "type": "m.room.history_visibility", "room_id": "!PzoqoNRxeEEqiLyVSV:localhost:8800", "sender": "@anon-20191002_181700-638:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043439362, "hashes": {"sha256": "d4eQTvFoVKwxc8k6xUjcDpDm3QhEIe7Qlu7ZnbRUBXU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BoojBMs0WDGpH55B7Oko7yktWBlQbotXmXZiNBNMO++y0RcqxGF3+Gt6rnmmm4U5ko24HSlXz4ZzoIUuZE2oAA"}}, "unsigned": {"age_ts": 1570043439362, "replaces_state": "$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74"}} rpxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8xp ` X P H @ 8 0 (    x p h ` X P H @ 8 m m l l k k j j i i h h g g f f e e d d c c b b a a                                                                                                                                                                                              ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o n n m m l l k k j j i i h h g g f f e e d d c c b b a a ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! ! T T S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! !                                                                ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U T T "| : O R t PYnN>U!S YQ']e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88dXQ' e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.create$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2AdWQ' e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.create$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqogVQ'E3 !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455$29:localhost:42455fUQ? Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility$1570043479329kvsXb:localhost:8800^TQ/ Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules$1570043478328DMkRS:localhost:8800`SQ3 Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levels$1570043477327AgpMM:localhost:8800RQ']Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800$1570043477326hyTqo:localhost:8800ZQQ' Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.create$1570043476325vnEPO:localhost:8800rP1']Q !6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800$1570043468324DLhaB:localhost:8800;O1' 3 !6:localhost:42455m.room.create$16:localhost:42455?N1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455WM1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455LQ'Ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-UKQ? ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18pJQ? e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18hIQ/ e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rules$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecjHQ3 e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc GQ']e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYdFQ' e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.create$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0EQ'Ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gDQ? ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YpCQ? e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YhBQ/ e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rules$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQojAQ3 e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.power_levels$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU @Q']e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@anon-20191002_181700-640:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4d?Q' e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.create$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c>Q'Ee !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@__ANON__-17:localhost:42455$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoIp=Q? e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.history_visibility$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHoh<Q/ e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.join_rules$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQj;Q3 e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.power_levels$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU :Q']e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.member@anon-20191002_181700-639:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70d9Q' e !YpcmaMNMzjvtgYtrli:localhost:8800m.room.create$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI48Q'Ee !PzoqoNRxeEEqiLyVSV:localhost:8800m.room.member@__ANON__-16:localhost:42455$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8  0eQa$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3277}{"auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ"], "type": "m.room.history_visibility", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043446556, "hashes": {"sha256": "d+ePsJlKA3rISTQCubCKR8/d4544IWhWy2GhjVR+R3k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aT7d1q6zxJ8vEBWr1RM82WgQ+CtHxPkaPeaPF1+syClN0WK0kNMl5zsfsn21ZhHyIGht+7NsKkXpdYC1BuwABA"}}, "unsigned": {"age_ts": 1570043446556}}t/eQau$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3276}{"auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU"], "type": "m.room.join_rules", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043445706, "hashes": {"sha256": "YPPNypk8NYrTvyBqrahPqpbWGs8cyb6JX/Vsn9dEkmU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fmIfs+Nb0yMC/7SXHos08yqpLoKbG7QJq9tV2BsA39sWdqrW3VBHZ9IgrCxwZzmMk6BhN0cgFIi+mOV6n3ceDw"}}, "unsigned": {"age_ts": 1570043445706}}k.eQac$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3275}{"auth_events": ["$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "type": "m.room.power_levels", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"users": {"@anon-20191002_181700-639:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043444683, "hashes": {"sha256": "JwbztfMbrJX6bujbT1vL/grt/MgN4o6R9C83zGWvQRk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uG30u2Q0MbZZPDXhZ3Ite2AhJz3iLaY1DH3yfZhGQdN3L8LaYWxrVS0bsRhtTgtlPGWpiKKv6OgMOUBZ+rvcAw"}}, "unsigned": {"age_ts": 1570043444683}}v-eQay$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "stream_ordering": 3274}{"auth_events": ["$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4"], "prev_events": ["$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4"], "type": "m.room.member", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-639", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-639:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043444014, "hashes": {"sha256": "c2Vxr7jQ+/zGw2I6SC9V9CnrYVU98dZGOBLGvY5g/0w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RLFGL0sVcNrmyAVFQH5wx+A5EqjLBWk4nZVf4S7ms8AWgh8spvq5/4ptmNqMuKIAh40+rJ/ROZYAOHuQCy2bAw"}}, "unsigned": {"age_ts": 1570043444014}} @@Q ^ 1 r 3 s 4 u 5 u 5u5b1AADFD@>5 Q!NcJYmIbgjsaKJOzBcs:localhost:8800m&\ (>4 Q!biBIcqnGelHvLnpkOu:localhost:8800m&\>3 Q!yNfCaBMPezurwkJRAX:localhost:8800m&\>2 Q!BKZJsoFNhiLTDYNclB:localhost:8800m&\>1 Q!aiOswwhoZqjhcjzbzc:localhost:8800m&\ !>0 Q!IYxUkyFHOgvhLpdkOA:localhost:8800m&\>/ Q!anErKtXIsVKEEsrzWM:localhost:8800m&\>. Q!TcCLuIBUrtFqghDgay:localhost:8800m&\>- Q!yWhIsLsgNVGcnELrDS:localhost:8800m&\ !<, Q  !wCsDjKBtuUbrmZgjsB:localhost:8800m&\?<+ Q  !SpXEytywhTbAftyVBr:localhost:8800m&\C<* Q  !itfjLXhEaORJLkbfVS:localhost:8800m&\?<) Q  !GsjDgpaxdwYfnefiWO:localhost:8800m&\:>( Q!jomrpmwwQQtghscizn:localhost:8800m&\<' Q  !ABHbfUdkHCJksMsaUt:localhost:8800m&\n<& Q  !DntdfAPfCfgdOoRMdl:localhost:8800m&\[<% Q  !THHfVSOSWiBQTHRAnJ:localhost:8800m&\m=$ Q !KetCYFxrTxawNOGnOf:localhost:8800m&\ .p=# Q !JiUawCFQnodcpssOfK:localhost:8800m&\ +=" Q !NgkQVVUNzoyCVPtckM:localhost:8800m&\ #f=! Q !lgejtcwlywOoIXwEgy:localhost:8800m&\L= Q !PUIxAaiCnbqaVbawGu:localhost:8800m&\ +n= Q !OJilSqnQvLgoXSqRaW:localhost:8800m&\= Q !SrwdtDytJDUBVZOueF:localhost:8800m&\< Q  !PVyTvKbqnjSXfGWAMy:localhost:8800m&\8. 3 !13:localhost:42455m&\a. 3 !12:localhost:42455m&\ = Q !nhbUIcIbhuXkRqfeDa:localhost:8800m&\/ 3!11:localhost:42455m&\x. 3 !10:localhost:42455m&\ - 1 !9:localhost:42455m&\ = Q !SnROoiDBapNNtMmKnT:localhost:8800m&\= Q !uGpSboYkgxVNOqNeUG:localhost:8800m&\= Q !DSFBpkqfnvBQbGoMUK:localhost:8800m&\= Q !ZKPJvrCZHMHPEksYDc:localhost:8800m&\= Q !PgNDjhhIBAXKryuGKy:localhost:8800m&\ $ = Q !vnFXnkCSfTbsSNKrtg:localhost:8800m&\ = Q !jRuDexjFzIDOKbwDJQ:localhost:8800m&\= Q !KcXNWNfbLcYsBKZHIp:localhost:8800m&\= Q !dBfASZrfiFeSKTjYJm:localhost:8800m&\ " = Q !taANXnGBZntAreRurn:localhost:8800m&\< Q  !tcYctHPiaKzsKgrXlU:localhost:8800m&\= Q !drnXStKXkNQkouqUAg:localhost:8800m&\< Q  !zScKnCZCFPIIodAiQj:localhost:8800m&\= Q !LazKtcHZriKzCvvGwV:localhost:8800m&\ #= Q !lEJUJZxqZPKZetemiR:localhost:8800m&\  0z= Q !bLWyXaXdvUhdSAooUz:localhost:8800m&\< Q  !YmRuIWixFpaqEeDQLZ:localhost:8800m&\= Q !bjdLCdBwkKaihRIRFG:localhost:8800m&\< Q  !qzrZzAieCgGSbpKOQR:localhost:8800m&\= Q !qzurjQHmiriwjaUMhO:localhost:8800m&\* 1 !0:localhost:41985m&\* 1 !0:localhost:44405m&\* 1 !0:localhost:37265m&\* 1 !8:localhost:42455m&\*~ 1 !7:localhost:42455m&\<} Q  !TSFcaXDBqrCREHRHxv:localhost:8800m&\K=| Q !AOEdqVKPFddrqbKPOL:localhost:8800m&\<{ Q  !wBBQYEPjQGnoAzDpEu:localhost:8800m&\8=z Q !oZGRyBAkNDrEeiAqWL:localhost:8800m&\>:-y 1 !6:localhost:42455m&\ =x Q !cRbfhxZdPstEsPGPAu:localhost:8800m&\H=w Q !sAWFpvSUPExZLVcPEd:localhost:8800m&\H=v Q !YpcmaMNMzjvtgYtrli:localhost:8800m&\ 8l D `8X]c!E@anon-20191002_181700-648:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQoFUMVLCFOGG127.0.0.1Perl + Net::Async::HTTP/0.44mRW]c!E@anon-20191002_181700-647:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGZDFTQGNjT0JmYjMqOHkKMDAyZnNpZ25hdHVyZSDv7dTi8771j9nn6GYn_PMtBEkTFOyv8_HFW7vOVRUVTwoJJTUBBNUOS127.0.0.1Perl + Net::Async::HTTP/0.44mNV]c!E@anon-20191002_181700-646:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhlSnBJOl9mVWtaeVJXSEIKMDAyZnNpZ25hdHVyZSCeqGSrd5cjGsBqIXm24MQN5BA56Jw7t22Oc17dR6Ty3goHFMIURTAJA127.0.0.1Perl + Net::Async::HTTP/0.44m♪U]c!E@anon-20191002_181700-645:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhPNC1tYXpXa1dlOVlaPWgKMDAyZnNpZ25hdHVyZSASDjiJbN1wnl7ylTLzCfEZQvDQZAu7w-cyIklbhT40iQoTQRBSFDPVG127.0.0.1Perl + Net::Async::HTTP/0.44mlT]c!E@anon-20191002_181700-644:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpyYz1SWjNrZVhNLW9HJjgKMDAyZnNpZ25hdHVyZSCbZJgvynzswSHUCKfebJkQ0LtOnemtLu4-bU3mSfm2KAoINFGSFBNKU127.0.0.1Perl + Net::Async::HTTP/0.44mlqS]c!E@anon-20191002_181700-643:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhDOHBDdS5GVmhZZVZuZT0KMDAyZnNpZ25hdHVyZSBtP3DjsNAJGYTNYBivsnVPG8sa3oFftowrPgd0-ZSyLwoNELMCBWNVQ127.0.0.1Perl + Net::Async::HTTP/0.44m9WR]c!E@anon-20191002_181700-642:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFpMckVpanVMMi0tVFBsK0IKMDAyZnNpZ25hdHVyZSBvKSHW41csYgxHP0_XXHTzXRJ3NM4EAVrGeEWZsa_6qgoFQRREBIQEQ127.0.0.1Perl + Net::Async::HTTP/0.44mQ]c!E@anon-20191002_181700-641:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVUT2d1YkxLYUBibG52TiMKMDAyZnNpZ25hdHVyZSDEEvDkZoVtXju0G5szDtGNLsVUk5li-YOV1m7h5PVQLQoPFGGCSSRVI127.0.0.1Perl + Net::Async::HTTP/0.44m}P]c!E@anon-20191002_181700-640:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHR0IyNWR3p-dis9K05SI1YKMDAyZnNpZ25hdHVyZSCkPPAvzL1EkV1awjU3e7VAuLNHSNtU0v3n7h_5H6UOsgoJIZUEMVYQN127.0.0.1Perl + Net::Async::HTTP/0.44mO]c!E@anon-20191002_181700-639:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAoVIDPYYIORG127.0.0.1Perl + Net::Async::HTTP/0.44mᷱ 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( hXPH@80(  x p h ` X P H @ 8 0 (    x p h ` X ( P H @ 8 0    h x p ` X P H @ 8 @  >  =  <  ;  9  9  8  7  6  5  2  2  1  0  /  .  ,  *  *  )  (  '  &  #  #  "  !                                     ~  }  |  {  z  y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                       }  }  |  z  z  y  x  w  v  t  r  r q p o n k k j i h g e c c b a ` _ ] [ [ Z Y X W S S R Q P O N M K J I H G E D C B @ ? > = ; : 9 8 6 5 4 3 1 0 / . + + * ) ( ' $ # " !                                                              ~ } 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 A  ?  >  =  <  ;  :  9  8  7  6  4  3  2  1  0  /  -  ,  +  *  )  (  '  %  $  #  "  !                                     ~  }  |  {  z  y  x  w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                         ~  }  |  {  z  y  x  w  u  t  s r q p o m l k j i h f e d c b a ` ^ ] \ [ Z Y X U T S R Q P O N L K J I H F E D C A @ ? > < ; : 9 7 6 5 4 2 1 0 / - , + * ) ( % $ # " !                                                             ~ } a} { y w u sqomkigeca~|eeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~{eeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~zeeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800~yeeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~xeeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~weeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800~veeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~ueeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~teeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800~seeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800~reeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~qeeQ$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~peeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800~oeeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~neeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~meeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~leeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~keeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~jeeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~ieeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~heeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~geeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~feeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~eeeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800~deeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800~ceeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~beeQ$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800~aeeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ!YpcmaMNMzjvtgYtrli:localhost:8800~`eeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4!YpcmaMNMzjvtgYtrli:localhost:8800~_eeQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU!YpcmaMNMzjvtgYtrli:localhost:8800~^eeQ$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70!YpcmaMNMzjvtgYtrli:localhost:8800  v4eQay$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3281}{"auth_events": ["$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c"], "prev_events": ["$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c"], "type": "m.room.member", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-640", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-640:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043451856, "hashes": {"sha256": "uDB1zInKDAlpdAcek+Q6McQ7VuRAmkJRQurMyWPQW4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6zdkjr3Jj+USQrjdQgVMZ+N5X/qHSo4DfSSV5uWVYpZ7yI1sGIYVA5SHB11v0LTllnrnIK7m5Bm4mzbutdi2CQ"}}, "unsigned": {"age_ts": 1570043451856}}i3eQa_$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3280}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-640:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043450705, "hashes": {"sha256": "TDp8wcItsQzgdjf4f6+1z4kSFLWyk4L1kkCPYv9lg8k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kJInPjjvnBaXl2gF609EEO0S5EIk4E/Sf8ACA8yhju87iWF5c9rS+iVlez2UmJIc6qcaR6hBXzueixVZF6EpAg"}}, "unsigned": {"age_ts": 1570043450705}}}2eQ33$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3279}{"prev_events": ["$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps"], "origin_server_ts": 1570043448815, "content": {"membership": "join"}, "auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$_QGRyMOEJgXIvi2Qd5Tw4ngEJjl7-U5RV428zyj-VQQ"], "sender": "@__ANON__-17:localhost:42455", "hashes": {"sha256": "A+9z3BXA2efLMVJOOjU0MFZk/ZXMrxC4l3q0cY8542k"}, "depth": 7, "state_key": "@__ANON__-17:localhost:42455", "origin": "localhost:42455", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "nkA/EaY6HEXvVilYE6rO9dihfYvIpQK7Zic1JuqMIEJA0Xbr32/RsrHC1ufnBUUG8h5ZZMTlTBLFq64SUDfJAw"}}, "unsigned": {}}}1eQc$oI9lFh2hZ3UKduiQafYryP6VDVQOXDULqRaQitbS3ps!YpcmaMNMzjvtgYtrli:localhost:8800{"token_id": 619, "txn_id": "598", "stream_ordering": 3278}{"auth_events": ["$06br1k9jwCANiLYew4WjA4OpHVErTOMpJXSoaUzR1uU", "$i_NFWm0JPjR1ufcEWVP2XxgqqZ2sBmwsDhJrkrzChI4", "$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70"], "prev_events": ["$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHo"], "type": "m.room.message", "room_id": "!YpcmaMNMzjvtgYtrli:localhost:8800", "sender": "@anon-20191002_181700-639:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043448006, "hashes": {"sha256": "prOCB3TNyDOE5Dq5hK3tqs0ja9oayY4h+q5eCRSZy80"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vyo1TxrLlAZW3SloBYepgJ/YgJp2Oxobby2/8fhHPZzQcKK5GOClv1xuMeuJwbZMF32XFXDBhJRaPY8+hD//BQ"}}, "unsigned": {"age_ts": 1570043448006}} A,Vl:r {V J  P  W % ` /  h 6> pp1e$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g1e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4jA$lolredact:localhost:42455B1e$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g 1e$mxFNqm6iGbNqwdJpzebNZdqvQY5Ph3xmh-YfXcdzMm80e$mvQLZCZ5A-Mw3TD-HdPmtGQshXCFOOHVckOPXOH06mc31e$mbamtYr8zlbjsPe0TPIcCThyZ2n7AMtlvOAKe6dhVho0e$mamQPxZo7Mp5DFDgUQdAXOOODXUywd-P5f-eiS1UccE1e$mZ3T-WESgVB78-jqQUhDhqvgBz2gnfZIZpHxzLb0qmQ1e$m3h7NyUycRD9TfbUEJuZRaRqPAwzhtPA_FRbolaUsAI1e$m2vJ50PjRQLSpvsQFAxLmyCwMfM-vc1kJCnsmyNO87Y 1e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1A0e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzI0e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe450e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgS0e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8a0e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ4`1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu01e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf81e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM0e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ8]1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA1e$jjMKSgJcJZsMOAtZDJlJG6k0qWd5Cx9TdGGlyC9x9AY1e$jglxC4t59kulgFvWyPRiCk8JLtK_0-5FtopVStFzN5wb1e$jJEExjoZzgeeqPGx4m_btwnmBadPTdjsdGlTt-l9lMc1e$jEzWg9tOXiucV2nrXQ378mUxud_M0at7mUiNxw0RWo80e$iuJBHSWOams83Yqcm7gSvF9WdTZxdic4yQoAedhGJkc=1e$iPa-wJ8YvV_kG8Ld5E3LJ8Up8cwiiAj0q2ipIYMAmfMx0e$iMAge6rHOk5uZbaqkzjWsGW2rBSW5h4h_iATCVUPDK0L0e$iKyHRzZc9t7VSr6rhKItL-wPZwGpI_GCPqIpU-SOOgQ.1e$hymMfi6QoqjDyRuyFGV71OLDcFEr56HvAUbMekJX9zk11e$hxAl7CNK8khCuyOWrMenFgk9XxZBJ_QYKc9Yi9jAC681e$hnQymqKXul1onJv7XTcgWxhqTTkki0E229D2pkKs5sE81e$hcA5JvEh4AUZNt66cPG7s-OXKwfgO6AVYNr1quavHLI1e$h1RXts7JGUIiDWhMo-wZQpRlLaZV7CveRSeTnWcETbg1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew1e$ghWwsySevG69Zm5qhIVwkKdHBbcYBQtzAvAh1HPewxc?0e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKgt0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0 )(Pl(Dl<X t 0 L h  @ \ x((DlD4AEQ@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800AEQ@__ANON__-19:localhost:42455!cRbfhxZdPstEsPGPAu:localhost:8800M~]Q@anon-20191002_181700-641:localhost:8800!cRbfhxZdPstEsPGPAu:localhost:8800A}EQ@__ANON__-18:localhost:42455!sAWFpvSUPExZLVcPEd:localhost:8800M|]Q@anon-20191002_181700-640:localhost:8800!sAWFpvSUPExZLVcPEd:localhost:8800A{EQ@__ANON__-17:localhost:42455!YpcmaMNMzjvtgYtrli:localhost:8800Mz]Q@anon-20191002_181700-639:localhost:8800!YpcmaMNMzjvtgYtrli:localhost:8800AyEQ@__ANON__-16:localhost:42455!PzoqoNRxeEEqiLyVSV:localhost:8800Mx]Q@anon-20191002_181700-638:localhost:8800!PzoqoNRxeEEqiLyVSV:localhost:8800AwEQ@__ANON__-15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800Mv]Q@anon-20191002_181700-637:localhost:8800!uPxXJHJyFQwvpQLZNs:localhost:8800AuEQ@__ANON__-13:localhost:42455!QkkdnzvdrjHaFGkzMt:localhost:8800Mt]Q@anon-20191002_181700-635:localhost:8800!QkkdnzvdrjHaFGkzMt:localhost:8800AsEQ@__ANON__-12:localhost:42455!DuqHkpTfWCUblSrxQj:localhost:8800M]Q@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800AEQ@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800M]Q@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800M]Q@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800AEQ@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800M]Q@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800M]Q@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800AEQ@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800M]Q@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800AEQ@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M]Q@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800AEQ@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800M]Q@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800M ]Q@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800A EQ@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800M ]Q@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800M ]Q@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800A EQ@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800M]Q@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800M]Q@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800AEQ@__ANON__-22:localhost:42455!AOEdqVKPFddrqbKPOL:localhost:8800M]Q@anon-20191002_181700-645:localhost:8800!AOEdqVKPFddrqbKPOL:localhost:8800M]Q@anon-20191002_181700-644:localhost:8800!wBBQYEPjQGnoAzDpEu:localhost:8800AEQ@__ANON__-21:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800M]Q@anon-20191002_181700-643:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800=]1@anon-20191002_181700-642:localhost:8800!6:localhost:424551E1@__ANON__-20:localhost:42455!6:localhost:42455 2NC Q  B  B  B  d w(;Na!od YNLmQL$1570043501341JmcnI:localhost:8800sha256򰑒}Sf, A VleL$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4sha256Zi4S(L\MDoW`VkeL$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620sha256s'h0nU ƁOAبLfmVjeL$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gsha256(*-SF Nd~SrVieL$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEsha256;G$aqS OoF-b L+P:VheL$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8sha256%7rj۵A#50cVgeL$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Esha256m{M7$n>~v)~"lU?VfeL$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQsha256CߘٱQ'{ ~"Q RTVeeL$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0Isha256$Z 0aLQ' apyGRBVdeL$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgsha256ʿ$ a 6m7UU M8VceL$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88sha256{""WPuS9LϒKrEX|VbeL$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2Asha256qX*q8nYف<:DN5߀c#`VaeL$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqosha256/ʗsoE 4^#$0gW,:=`3L$29:localhost:42455sha256qe1BCu y 0u?zPL_QL$1570043486339YbYQQ:localhost:8800sha256^|+HLTQL$1570043478328DMkRS:localhost:8800sha256cɷ+KBOT"GILSQL$1570043477327AgpMM:localhost:8800sha2562<j𣮦ݰ~=BVE0 5LRQL$1570043477326hyTqo:localhost:8800sha256Z~_!Dfъj9q ZTLQQL$1570043476325vnEPO:localhost:8800sha256 $cr gJa~L!έ=P3L$28:localhost:42455sha2566 M~!\;H`]IhQF^X켾=O3L$27:localhost:42455sha256 !f 3$h 3ִ=N3L$26:localhost:42455sha256<6+=0=v}޴&#Zz[.=M3L$25:localhost:42455sha256wX]юaΔ]i@2ZHk=L3L$24:localhost:42455sha256>lr?3*j6Z"-JM7 =K3L$23:localhost:42455sha256C>S\Th 0\B,-2=J3L$22:localhost:42455sha2568$8,iZT{Lk>^-PE=I3L$21:localhost:42455sha25636ɢB4k)r^%x`2y=G3L$19:localhost:42455sha256Y:kc@t7SnL<ʑzxQLFQL$1570043468324DLhaB:localhost:8800sha256ml *8HD5^w7To6vz=E3L$18:localhost:42455sha256lXIƚ„>o6mh']͒ u=D3L$17:localhost:42455sha256R'A$e55FXW$ޓ*Ԙ=C3L$16:localhost:42455sha256 Hɢb(K-CŬ[d {b>VBeL$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-Usha256}kځdBIQoV*/VAeL$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LAsha256xWj_~7Sk׉>԰V@eL$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gsha2569:!s FAAmqǮ $s {|hV?eL$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18sha256fܽK B4F&NcMޯ_V>eL$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecsha2565Ol=9T]2G%,QMMV=eL$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcsha256vmB$l`$kxOE|y%)2V<eL$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYsha256U>iPLhĖQF$ %rvm?#  G8eQa$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3285}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y"], "type": "m.room.history_visibility", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"history_visibility": "invite"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043456414, "hashes": {"sha256": "NB442nzZ/kaK6xZa7E2ECth6eApvZmbGS5txJd5byi8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XtmnSx6842ytRNzYNbUacYBu5pFxH5NW3hkLdRwijlb2aLb5IAuYJF728QDsyWRro0n4FNXTbpHNGsaCulJzBA"}}, "unsigned": {"age_ts": 1570043456414, "replaces_state": "$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y"}}7eQa$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3284}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo"], "type": "m.room.history_visibility", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043454998, "hashes": {"sha256": "1rRqGzA7Bfn/hf90XQJfVj8F07eFXuGDUTdM0gaa4uU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Zp6+PrZGy0qYSk1c8zVaaDJP4a1mAAPp34SxpEoiVWdayNstMYLi5qbIm+DmNy5kyd4pTNyCrqSxn7ogn7pxAw"}}, "unsigned": {"age_ts": 1570043454998}}t6eQau$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3283}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU"], "type": "m.room.join_rules", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043453562, "hashes": {"sha256": "xyCa/t82ebd9MrQ8wGiRRE9nudTSQ6wUOvwyyoLh8aI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nOF085dxg8/R0rkVVGkoI3SjzljB1mR4zr6ETI7zYxorJWVv6/bO/SKAOpjb+u3WITBpI/rllVpyXfSjwPyOCw"}}, "unsigned": {"age_ts": 1570043453562}}k5eQac$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "stream_ordering": 3282}{"auth_events": ["$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "type": "m.room.power_levels", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"users": {"@anon-20191002_181700-640:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043452610, "hashes": {"sha256": "M4fl2Y+TMjqtAIqbEzqAgCmWCFKoEfD8/FXdUkDVKDI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Bt9+PiME9zCvBOgi6RyFLlH+EIVnMTyeinhSGE2+OkHCVf0VgjFNVcQwu/dnayBAr0luhwXqd/ZnkLKjIdRlBw"}}, "unsigned": {"age_ts": 1570043452610}} '~z v r n j f &WWW;_9]k(QQQ$1570043485338vbLwS:localhost:8800$1570043484337ylFDA:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k'QQQ$1570043484337ylFDA:localhost:8800$1570043484336qKOPD:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k&QQQ$1570043484336qKOPD:localhost:8800$1570043483335oDIDb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k%QQQ$1570043483335oDIDb:localhost:8800$1570043483334ejWtI:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k$QQQ$1570043483334ejWtI:localhost:8800$1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k#QQQ$1570043482333DxDEq:localhost:8800$1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k"QQQ$1570043481332XroCo:localhost:8800$1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k!QQQ$1570043481331UNaWT:localhost:8800$1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800k QQQ$1570043480330seKnV:localhost:8800$1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043479329kvsXb:localhost:8800$1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043478328DMkRS:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043477327AgpMM:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800kQQQ$1570043477326hyTqo:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800=331$28:localhost:42455$27:localhost:42455!6:localhost:42455=331$27:localhost:42455$26:localhost:42455!6:localhost:42455=331$26:localhost:42455$25:localhost:42455!6:localhost:42455=331$25:localhost:42455$24:localhost:42455!6:localhost:42455=331$24:localhost:42455$23:localhost:42455!6:localhost:42455=331$23:localhost:42455$22:localhost:42455!6:localhost:42455=331$22:localhost:42455$21:localhost:42455!6:localhost:42455=331$21:localhost:42455$20:localhost:42455!6:localhost:42455=331$20:localhost:42455$19:localhost:42455!6:localhost:42455=331$19:localhost:42455$18:localhost:42455!6:localhost:42455LQ31$1570043468324DLhaB:localhost:8800$28:localhost:42455!6:localhost:42455=331$18:localhost:42455$17:localhost:42455!6:localhost:42455=331$17:localhost:42455$16:localhost:42455!6:localhost:42455eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800eeQ$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800eeQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU!sAWFpvSUPExZLVcPEd:localhost:8800eeQ$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4!sAWFpvSUPExZLVcPEd:localhost:8800 .$0 H M q } a $sCl+T}@i9b!Vu1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:t1' 3 !6:localhost:42455m.room.create$16:localhost:42455>s1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vr1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:q1' 3 !6:localhost:42455m.room.create$16:localhost:42455>p1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vo1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:n1' 3 !6:localhost:42455m.room.create$16:localhost:42455>m1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vl1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:k1' 3 !6:localhost:42455m.room.create$16:localhost:42455>j1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vi1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:h1' 3 !6:localhost:42455m.room.create$16:localhost:42455>g1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vf1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:e1' 3 !6:localhost:42455m.room.create$16:localhost:42455>d1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vc1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:b1' 3 !6:localhost:42455m.room.create$16:localhost:42455>a1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455V`1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:_1' 3 !6:localhost:42455m.room.create$16:localhost:42455>^1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455V]1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:\1' 3 !6:localhost:42455m.room.create$16:localhost:42455>[1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455VZ1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:Y1' 3 !6:localhost:42455m.room.create$16:localhost:42455qX1']Q !6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800$1570043468324DLhaB:localhost:8800:W1' 3 !6:localhost:42455m.room.create$16:localhost:42455>V1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455VU1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455TQ'Ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-USQ'Ee !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@__ANON__-19:localhost:42455$YoQ2ZzWjgeFI0dmpfkyF4jlSW67oM-yIsqQN18YRzScoRQ? e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842goQQ? e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.history_visibility$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18gPQ/ e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rules$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTeciOQ3 e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.power_levels$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc NQ']e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.member@anon-20191002_181700-641:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYcMQ' e !cRbfhxZdPstEsPGPAu:localhost:8800m.room.create$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0LQ'Ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gKQ'Ee !sAWFpvSUPExZLVcPEd:localhost:8800m.room.member@__ANON__-18:localhost:42455$G88iWOWyBTNt8tzS3RFpUCIyhx4RzVdnLBSUKKU2pFMoJQ? e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1UoIQ? e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.history_visibility$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5YgHQ/ e !sAWFpvSUPExZLVcPEd:localhost:8800m.room.join_rules$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo X S  u # s<BfnQ)Q ]$1570043481332XroCo:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800mO^mOb@anon-20191002_181700-643:localhost:8800mQ)Q ]$1570043481331UNaWT:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800mMmM#@anon-20191002_181700-643:localhost:8800lQ)Q ]$1570043480330seKnV:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800mJmJ@anon-20191002_181700-643:localhost:8800"kQ?Q ]$1570043479329kvsXb:localhost:8800m.room.history_visibility!oZGRyBAkNDrEeiAqWL:localhost:8800mDmFl@anon-20191002_181700-643:localhost:8800jQ/Q ]$1570043478328DMkRS:localhost:8800m.room.join_rules!oZGRyBAkNDrEeiAqWL:localhost:8800mB mBj@anon-20191002_181700-643:localhost:8800iQ3Q ]$1570043477327AgpMM:localhost:8800m.room.power_levels!oZGRyBAkNDrEeiAqWL:localhost:8800m?pm?@anon-20191002_181700-643:localhost:8800hQ'Q ]$1570043477326hyTqo:localhost:8800m.room.member!oZGRyBAkNDrEeiAqWL:localhost:8800m<|m<@anon-20191002_181700-643:localhost:8800g Q'Q  ]$1570043476325vnEPO:localhost:8800m.room.create!oZGRyBAkNDrEeiAqWL:localhost:8800m9m9@anon-20191002_181700-643:localhost:8800fQ'1 ] $1570043468324DLhaB:localhost:8800m.room.member!6:localhost:42455 m"m@anon-20191002_181700-642:localhost:8800ob3/1 E$18:localhost:42455m.room.join_rules!6:localhost:42455mm@__ANON__-20:localhost:42455ia 3'1  E$17:localhost:42455m.room.member!6:localhost:42455m m@__ANON__-20:localhost:42455i`3'1 E$16:localhost:42455m.room.create!6:localhost:42455m m@__ANON__-20:localhost:42455_e'Q E$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-Um.room.member!cRbfhxZdPstEsPGPAu:localhost:8800mmx@__ANON__-19:localhost:42455!^e)Q ]$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LAm.room.message!cRbfhxZdPstEsPGPAu:localhost:8800mCm@anon-20191002_181700-641:localhost:8800,]e?Q ]$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gm.room.history_visibility!cRbfhxZdPstEsPGPAu:localhost:8800m m@anon-20191002_181700-641:localhost:8800,\e?Q ]$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18m.room.history_visibility!cRbfhxZdPstEsPGPAu:localhost:8800mm @anon-20191002_181700-641:localhost:8800$[e/Q ]$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecm.room.join_rules!cRbfhxZdPstEsPGPAu:localhost:8800m&m[@anon-20191002_181700-641:localhost:8800&Ze3Q ]$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcm.room.power_levels!cRbfhxZdPstEsPGPAu:localhost:8800mgm@anon-20191002_181700-641:localhost:8800 Ye'Q ]$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYm.room.member!cRbfhxZdPstEsPGPAu:localhost:8800mm`@anon-20191002_181700-641:localhost:8800X e'Q  ]$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0m.room.create!cRbfhxZdPstEsPGPAu:localhost:8800mm@anon-20191002_181700-641:localhost:8800We'Q E$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gm.room.member!sAWFpvSUPExZLVcPEd:localhost:8800mm@__ANON__-18:localhost:42455!Ve)Q ]$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4m.room.message!sAWFpvSUPExZLVcPEd:localhost:8800mRm@anon-20191002_181700-640:localhost:8800,Ue?Q ]$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1Um.room.history_visibility!sAWFpvSUPExZLVcPEd:localhost:8800mm@anon-20191002_181700-640:localhost:8800,Te?Q ]$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Ym.room.history_visibility!sAWFpvSUPExZLVcPEd:localhost:8800mm@anon-20191002_181700-640:localhost:8800$Se/Q ]$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQom.room.join_rules!sAWFpvSUPExZLVcPEd:localhost:8800mzm@anon-20191002_181700-640:localhost:8800 6RM H C  | N h : c |/MHC>C\u(JJQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517350ncbDd:localhost:8800JIQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517349uVTMj:localhost:8800JHQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043516348vThZG:localhost:8800JGQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043515347LGRKl:localhost:8800JFQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043506346EEQDj:localhost:8800JEQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043504345DCjlJ:localhost:8800JDQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503344dJwGF:localhost:8800JCQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503343snlnn:localhost:8800JBQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043502342mVJmO:localhost:8800JAQQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043501341JmcnI:localhost:8800T@Qe !AOEdqVKPFddrqbKPOL:localhost:8800$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620T?Qe !AOEdqVKPFddrqbKPOL:localhost:8800$0brtZF9nLBiYjM_kc5S7_Se8gmf_EbCFcJAVj4dI0FYT>Qe !AOEdqVKPFddrqbKPOL:localhost:8800$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gT=Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoET<Qe !AOEdqVKPFddrqbKPOL:localhost:8800$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8T;Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9ET:Qe !AOEdqVKPFddrqbKPOL:localhost:8800$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQT9Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0IT8Qe !AOEdqVKPFddrqbKPOL:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgT7Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88T6Qe !AOEdqVKPFddrqbKPOL:localhost:8800$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2AT5Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo;4Q3 !oZGRyBAkNDrEeiAqWL:localhost:8800$29:localhost:42455J3QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043486340vukns:localhost:8800J2QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043479329kvsXb:localhost:8800J1QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043478328DMkRS:localhost:8800J0QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477327AgpMM:localhost:8800J/QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477326hyTqo:localhost:8800J.QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043476325vnEPO:localhost:8800+-13 !6:localhost:42455$28:localhost:42455+,13 !6:localhost:42455$27:localhost:42455++13 !6:localhost:42455$26:localhost:42455+*13 !6:localhost:42455$25:localhost:42455+)13 !6:localhost:42455$24:localhost:42455+(13 !6:localhost:42455$23:localhost:42455+'13 !6:localhost:42455$22:localhost:42455+&13 !6:localhost:42455$21:localhost:42455+%13 !6:localhost:42455$20:localhost:42455+$13 !6:localhost:42455$19:localhost:42455+#13 !6:localhost:42455$18:localhost:42455+"13 !6:localhost:42455$17:localhost:42455+!13 !6:localhost:42455$16:localhost:42455: 1Q !6:localhost:42455$1570043468324DLhaB:localhost:8800TQe !cRbfhxZdPstEsPGPAu:localhost:8800$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-UTQe !cRbfhxZdPstEsPGPAu:localhost:8800$YoQ2ZzWjgeFI0dmpfkyF4jlSW67oM-yIsqQN18YRzScTQe !cRbfhxZdPstEsPGPAu:localhost:8800$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842gTQe !cRbfhxZdPstEsPGPAu:localhost:8800$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18TQe !cRbfhxZdPstEsPGPAu:localhost:8800$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTecTQe !cRbfhxZdPstEsPGPAu:localhost:8800$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpcTQe !cRbfhxZdPstEsPGPAu:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYTQe !cRbfhxZdPstEsPGPAu:localhost:8800$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0TQe !sAWFpvSUPExZLVcPEd:localhost:8800$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0gTQe !sAWFpvSUPExZLVcPEd:localhost:8800$G88iWOWyBTNt8tzS3RFpUCIyhx4RzVdnLBSUKKU2pFMTQe !sAWFpvSUPExZLVcPEd:localhost:8800$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U  v<eQay$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3289}{"auth_events": ["$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0"], "prev_events": ["$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0"], "type": "m.room.member", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-641", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-641:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043461112, "hashes": {"sha256": "R0TeL6X3gsGVGXP+iWcHUb4gAbGClvpy+DDuLgZloTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7xERLDp/CQvq8IyUeRgeZx6+czD9ihBaQmR/TvFnEMc1X54jD1hYH2/L0DIKHETYjWSsm3hqX6iFZFoUuC9LBg"}}, "unsigned": {"age_ts": 1570043461112}}i;eQa_$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3288}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-641:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043459806, "hashes": {"sha256": "PRrlPGci35/ultDWTh3cDRb+gUHxuEb/yRHkHi4BQGY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w/f1cP/zS5ADX5yXG9KKQ//XvDXPjmtume06WDHViIkC3JCdJKgKBXqnrlpzNRwAY6XtqyQ2fdBkyIVmmMZAAg"}}, "unsigned": {"age_ts": 1570043459806}}}:eQ33$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3287}{"sender": "@__ANON__-18:localhost:42455", "hashes": {"sha256": "u1GaATIvyfdjvG2HbOb/qwi8qcQ5aVYFh5PJ2XAnWTs"}, "origin": "localhost:42455", "state_key": "@__ANON__-18:localhost:42455", "depth": 8, "type": "m.room.member", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "prev_events": ["$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4"], "origin_server_ts": 1570043458205, "content": {"membership": "join"}, "auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo"], "signatures": {"localhost:42455": {"ed25519:1": "0ACg/2i+23e14wLVZ3wQa0aM8z5ZnriTHKm8L6TEIS1FktiSKY3AQZMjj7P19nMghui4DPapJxMCrU7daD/hCQ"}}, "unsigned": {}}}9eQc$xk54sSz0kC055qcbB9awecO9bQAOnjvnsfalUVeDQR4!sAWFpvSUPExZLVcPEd:localhost:8800{"token_id": 620, "txn_id": "599", "stream_ordering": 3286}{"auth_events": ["$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU", "$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c", "$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4"], "prev_events": ["$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U"], "type": "m.room.message", "room_id": "!sAWFpvSUPExZLVcPEd:localhost:8800", "sender": "@anon-20191002_181700-640:localhost:8800", "content": {"body": "1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043457362, "hashes": {"sha256": "yyBC0ch6GFaQgEHmC8FSa2Mxl1fENRfxJrJzWpXNNzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QjiVXM1ItrcfSViG6r7arVgPdWoidX2cgTHAZnh1GzhDv1w32eBtLUho4RU3gXI4rhsHSTI/V7vPHIxu7uTBBQ"}}, "unsigned": {"age_ts": 1570043457362}} %Uq8 6 T  p 7 T  p 7 S o8e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40sha2568e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0sha256}8e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4sha256r8e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIsha256{8e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6Esha2568e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpIsha2568e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZIsha256 8e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMsha256 |8e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxAsha256)8e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5ksha256W8e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbosha2568e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Ysha256 8e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mwsha256 8e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0sha2568e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4sha256R8e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhAsha2568e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOcsha2568e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7Isha256M8e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4sha25687e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMsha256Y8e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mUsha2568e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgsha256Y8e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFAsha256~8e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jwsha256_8e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQsha256m8e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAMsha256 38e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuosha256 8e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAsha2568e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBmssha256 8e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrosha256E8e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgIsha2568e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7Asha2568e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEsha2568e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0sha256 k8e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6ssha256 8e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8sha256 8e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIsha256 4DT)}FoDR' { P % y N # w L ! u J  s H q*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eZjhYVNpwdogVDKHCk:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!eySSVuCclRpBDgwKIU:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!erBPdgtUsiOfIKUkho:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egbhiBqOGhloZzopol:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!egCvzKpbEwmuvDoBTb:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!edbUkYJIZBNOiTuLJs:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 # #*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 " "*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 ! !*Q!eWRdwtyqHvuxZFvhNS:localhost:8800 *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800   RU/aIOag5n< tBzj8q? w E , O  ) U # [ ) [ a /#1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU 1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk 1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI 1e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso (1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk z1e$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI S1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A H1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 21e$3xObqvwshuy32QOXzmVrT2P5Trrg0ABzmJhn1K28hLk1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U l1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0 1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B41e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1$2:localhost:42455 3$29:localhost:42455 Q1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY 1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgT1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFMK1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA81e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7kK1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE 1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$3xMwSE5gtIc5KLc2suLcilfBUSxpAIh72OoMA61D2dM1e$3vNrsbbJTSlxcP8Emi1PhXcRoFyNtAkFWw7EjU4EumEz1e$3sNJ8afEy8kGpti9QZclEo0riRQuT1IUB9pRfgUN6Mg1e$3q6qtDBITW1gItsltwBEX3Tt0QWKDVk7JIGTD0SmvCg1e$3nL8G_4-cLNd97E30QUeB6YcPE5hNb8MLMUck-zO74cJ1e$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg1e$3mexFCNRrpXHRlH6jpZ927NQ5lvo0CAK2c81B54qEPg !1e$3isTKVhulxWiVOZGJJr8Fe5FrLC0uq-c0C8OSF45CFMn1e$3gX06EhjIJQJ_BJoVdGJ-v1A9MySo8g6O0xCfNkwP-k1e$3fxBjLkjaFdotdboMnvvi64moluYGmEcxyXluRaxc5c1e$3cVSPeTKSLv4a3k3LazAMSSzDIudBKakl8cNxpy675o1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3ZuPXu46Hg7-p9yEoeas68tpCYacHNxpthU-6a2RMq01e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I +1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kd1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1e$3G3-1x4pTLcl508cIYJQSH7Ea387QBoPb_AIbJW86SI/1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYn1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI H1$3:localhost:44405 f1$3:localhost:42455 1$3:localhost:41985 g1$3:localhost:37265 e3$39:localhost:42455 x1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo3$38:localhost:42455 m1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-KaaoP3$37:localhost:42455 d1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug 3$33:localhost:42455 c1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj41e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYX1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J01e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w 1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUl1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsge 7h`8pHX0h X 0  h @  x P ( ` 8  p H 'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800 'Q!eWRdwtyqHvuxZFvhNS:localhost:8800   G@eQa$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3293}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18"], "type": "m.room.history_visibility", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"history_visibility": "joined"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043465126, "hashes": {"sha256": "ZJOjpulCPq7csAlIDtv8rQOGpDRi4SG5Yv2svCJV1rg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+SVz/BU4Dl+RUIs+EzVI8nwFT2JkUCJdli2PUaGdlh2becpwU+B0q2K7TkKdOAgQl6lgwf9J6TZWyAvQtiMIBw"}}, "unsigned": {"age_ts": 1570043465126, "replaces_state": "$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18"}}?eQa$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3292}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec"], "type": "m.room.history_visibility", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043463833, "hashes": {"sha256": "UOXZTrh/stCZNgqK6LpnbC4k+DrVm79L6YweoLNKStA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CY+XJyfAouhEjch/HUy9o2j02NCPPp/AUkcqJDkbz7vS4uZW/5afQCA2VPc0TiierXoWOGjaQOLSQwH5J0zzBA"}}, "unsigned": {"age_ts": 1570043463833}}t>eQau$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3291}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc"], "type": "m.room.join_rules", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043462950, "hashes": {"sha256": "Y/rn9NJGInOGlX7VGSj3pd2R/0SgZ8KuMDdYpQnQX6E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITAUPazUsNUMrYHSsxZdcNwmrJD1sG9pblQm0UiShoMTXt0ZPwDVuaEjw7p8p71phCohm9sxRqpKc/CrkJfgBg"}}, "unsigned": {"age_ts": 1570043462950}}k=eQac$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "stream_ordering": 3290}{"auth_events": ["$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "type": "m.room.power_levels", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"users": {"@anon-20191002_181700-641:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043461991, "hashes": {"sha256": "r1YKcr7diJW0jX9WISwmK0+XKSKFNirKYOOEbK4LloY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b+KAO/2qhFov7lnT+8Nuz64yBcFHkHSWPmZll3nUnC50kQrKaDMKZU7BnJZNKAfboJ8IHsnVhgGDUK+MeCkuAg"}}, "unsigned": {"age_ts": 1570043461991}}  \ T LtD<4,$| deeQ$b5aukgUrVOsscohyz7ZJIJqoCbvZjJmdTOduCUaG6oE$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o!qjijQBfMwsCPTVgKPm:localhost:8800 eeQ$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U$Y8uLTpsSv0omDywXNZxtg3hwroLKaJhsMmRn9udn5xU!egbhiBqOGhloZzopol:localhost:8800eeQ$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4$mmBIeufX2EOWQdPmy2leQiFZf7m5QmaBvc2AEU20zTw!vttkrtSyHEJXVMlvLo:localhost:8800feeQ$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk$-QSbXT0T0Wo23f1fkS6WhXngti91V_erVKuSif26hw4!WWZVpyLeZfyfpWidLx:localhost:8800!eeQ$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs$pwt4sSKo41TD1wXhv06WnIvPA-_GjL6d21cSZLlwAAM!eySSVuCclRpBDgwKIU:localhost:8800|eeQ$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU$XJH2yjMrpy63gdssPSBmq3NRw2gNPegmq50s-ooVngQ!CSqENqzAezaZnGktbE:localhost:8800 ́eeQ$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GE$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5k!pUSFAnuwUuMlbiInDR:localhost:88002eeQ$bUX13915Q2GpweJTXYHAPgxNbqpHNNT-3o9AsV7Mp_s$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs!zNBpypJDRMlBdOcLlW:localhost:8800xeeQ$bSLv14CuiI7XRmsSyTliiwJXM1AZEZD_GqEZAwtcnYg$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw!FPcQcheNebvdFvmOnr:localhost:8800!eeQ$bRhDbI7dMxc1p2W66_trtPtwzVeyU00bQFG6SAnmDEI$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc!ntuwVdUxfzNIhIKYaz:localhost:8800eeQ$bPYSd2Gc0zIfcC6HI3jqZAIKlsaOqZjj77Na00DrM7k$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4!EyEaTZElOkdURKbEXo:localhost:8800eeQ$bNknizNF2Ts_AETH7AIDy1FrkECdOpTdQXBvAvFs21w$GA3Idx3dkv8H06elGg0DCdvd4XTvi6xzd-b0hhj2PNw!oXKJArsPmtgaYANBrg:localhost:8800keeQ$bKEXeycWunh04JJbXCNMYib0IhHZk38C9JS1KwPO5MU$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg!zuCqeooOnfWkYrQdxA:localhost:8800peeQ$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE$YujDfp8wbLi3an8cn0sKrUwlnBKoTx9aBGhc6nHvUJY!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$bGUf7uRYN51Jd2FMY5z1uToLKy6xkxAriKYEYDJs6WQ$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K0!XIqmzIFbkHGQPIpywk:localhost:8800eeQ$bAYGkelK2nL9WG_i22Ij6ei6Kg7aSzpa9X8rVNT0xOY$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo!GwXGurbyEmykmmHcHJ:localhost:8800eeQ$bA0DwR9DTycefWqMw_g4wz_Dbt3IFJDvC5GBSZiTB5U$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ!kOmCTyiizHqfCJdhlR:localhost:8800 eeeQ$b7XuU6WN08iWcGL5JhxPhnwQY0LA_r5mbyUgAzTd3Y4$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE!CSqENqzAezaZnGktbE:localhost:8800 ΁eeQ$b7Er7ti1OJg7TpJI0340oNnTxtARzjIJFR6wpyWXFek$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFA!EieRtaCFZJJCIOkRPp:localhost:8800 eeQ$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$bhHukGjzMa5t-JDDEjshjWLeez76gmfOsBZjquno9-U$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE!svYOOXWZHtQQzlMcEP:localhost:8800 f L  z 6 H p2v<%Q/Q ]$1570043536367lvGLr:localhost:8800m.room.join_rules!YmRuIWixFpaqEeDQLZ:localhost:8800m#m#m@anon-20191002_181700-655:localhost:8800$Q3Q ]$1570043535366hhblx:localhost:8800m.room.power_levels!YmRuIWixFpaqEeDQLZ:localhost:8800mm @anon-20191002_181700-655:localhost:8800#Q'Q ]$1570043534365WVAkx:localhost:8800m.room.member!YmRuIWixFpaqEeDQLZ:localhost:8800mm@anon-20191002_181700-655:localhost:8800" Q'Q  ]$1570043533364iwqCT:localhost:8800m.room.create!YmRuIWixFpaqEeDQLZ:localhost:8800mml@anon-20191002_181700-655:localhost:8800{!3'Q E$39:localhost:42455m.room.member!bjdLCdBwkKaihRIRFG:localhost:8800m_m@__ANON__-28:localhost:42455" Q?Q ]$1570043530362jRUtV:localhost:8800m.room.history_visibility!bjdLCdBwkKaihRIRFG:localhost:8800m Dm&@anon-20191002_181700-654:localhost:8800Q/Q ]$1570043529361Oytod:localhost:8800m.room.join_rules!bjdLCdBwkKaihRIRFG:localhost:8800m Nm @anon-20191002_181700-654:localhost:8800Q3Q ]$1570043528360cetnZ:localhost:8800m.room.power_levels!bjdLCdBwkKaihRIRFG:localhost:8800mm<@anon-20191002_181700-654:localhost:8800Q'Q ]$1570043527359ScxWW:localhost:8800m.room.member!bjdLCdBwkKaihRIRFG:localhost:8800m!m@anon-20191002_181700-654:localhost:8800 Q'Q  ]$1570043527358wChxc:localhost:8800m.room.create!bjdLCdBwkKaihRIRFG:localhost:8800mm@anon-20191002_181700-654:localhost:8800"Q?Q ]$1570043525357VEfrE:localhost:8800m.room.history_visibility!qzrZzAieCgGSbpKOQR:localhost:8800mm@anon-20191002_181700-653:localhost:8800Q/Q ]$1570043524356NlySy:localhost:8800m.room.join_rules!qzrZzAieCgGSbpKOQR:localhost:8800m:m@anon-20191002_181700-653:localhost:8800Q3Q ]$1570043523355SbJjm:localhost:8800m.room.power_levels!qzrZzAieCgGSbpKOQR:localhost:8800mm@anon-20191002_181700-653:localhost:8800Q'Q ]$1570043522354IAAap:localhost:8800m.room.member!qzrZzAieCgGSbpKOQR:localhost:8800m>m@anon-20191002_181700-653:localhost:8800 Q'Q  ]$1570043521353geZrN:localhost:8800m.room.create!qzrZzAieCgGSbpKOQR:localhost:8800mmn@anon-20191002_181700-653:localhost:8800{3'Q E$38:localhost:42455m.room.member!qzurjQHmiriwjaUMhO:localhost:8800mmh@__ANON__-26:localhost:42455"Q?Q ]$1570043518351Popej:localhost:8800m.room.history_visibility!qzurjQHmiriwjaUMhO:localhost:8800m/m@anon-20191002_181700-652:localhost:8800Q/Q ]$1570043517350ncbDd:localhost:8800m.room.join_rules!qzurjQHmiriwjaUMhO:localhost:8800mmܓ@anon-20191002_181700-652:localhost:8800Q3Q ]$1570043517349uVTMj:localhost:8800m.room.power_levels!qzurjQHmiriwjaUMhO:localhost:8800mmL@anon-20191002_181700-652:localhost:8800Q'Q ]$1570043516348vThZG:localhost:8800m.room.member!qzurjQHmiriwjaUMhO:localhost:8800m^m@anon-20191002_181700-652:localhost:8800 Q'Q  ]$1570043515347LGRKl:localhost:8800m.room.create!qzurjQHmiriwjaUMhO:localhost:8800mmN@anon-20191002_181700-652:localhost:8800g1'1 ?$3:localhost:41985m.room.member!0:localhost:41985mdm @__ANON__:localhost:41985g 1'1 ?$3:localhost:44405m.room.member!0:localhost:44405mm²@__ANON__:localhost:44405g 1'1 ?$3:localhost:37265m.room.member!0:localhost:37265mEm@__ANON__:localhost:37265k 3'1 E$37:localhost:42455m.room.member!8:localhost:42455mⶢmⶬ@__ANON__-25:localhost:42455k 3'1 E$33:localhost:42455m.room.member!7:localhost:42455mⲭmⲹ@__ANON__-24:localhost:42455Q'Q ]$1570043506346EEQDj:localhost:8800m.room.member!TSFcaXDBqrCREHRHxv:localhost:8800mm⮌@anon-20191002_181700-646:localhost:8800 Z Z#D31_) $17:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -3}{"origin_server_ts": 1570043468813, "prev_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}]], "event_id": "$17:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}]], "content": {"membership": "join"}, "hashes": {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}, "sender": "@__ANON__-20:localhost:42455", "type": "m.room.member", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "depth": 1, "state_key": "@__ANON__-20:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "uD/5Ju6dsgM9TYRMDvCigoNIC2bvSOnpd6U1dEu0hYp4GCSqRzR3551K9U2oy4/Qq51yk91/1tykz/WAbKwdBw"}}, "unsigned": {}}xC31_S $16:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -2}{"origin_server_ts": 1570043468812, "prev_events": [], "auth_events": [], "event_id": "$16:localhost:42455", "content": {"creator": "@__ANON__-20:localhost:42455"}, "hashes": {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.create", "depth": 0, "state_key": "", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "L5rXqt1sHiRx9fwvu3KSxc3VxvhdcwFdIE8F8HJMWMJDfWHHhDThYReEhwdfWxUWvPCBs3TctO57Drv914q2BQ"}}, "unsigned": {}}}BeQ33$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3295}{"origin_server_ts": 1570043466987, "prev_events": ["$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA"], "auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec"], "content": {"membership": "join"}, "hashes": {"sha256": "MWY5YLG1x9Lbt/bAd3wwvspKZ8j4o6vjz7/RQ+p0Ca0"}, "sender": "@__ANON__-19:localhost:42455", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "type": "m.room.member", "depth": 8, "state_key": "@__ANON__-19:localhost:42455", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "UU1Fn7ITprORng0+nNNQScIcTcPy9FqRq3UopZzAx5/U/AgiApx1viUIc4Nh9iNeZhErlGxSqGymG0hNFrnhBw"}}, "unsigned": {}}}AeQc$uNUceFcGA-1qlRBfgX6WgfmQ_ZGZN1Nr14nQEz7C1LA!cRbfhxZdPstEsPGPAu:localhost:8800{"token_id": 621, "txn_id": "600", "stream_ordering": 3294}{"auth_events": ["$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc", "$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0", "$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rY"], "prev_events": ["$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g"], "type": "m.room.message", "room_id": "!cRbfhxZdPstEsPGPAu:localhost:8800", "sender": "@anon-20191002_181700-641:localhost:8800", "content": {"msgtype": "m.text", "body": "1"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043466051, "hashes": {"sha256": "9d76ZSnz51RDvRpMAJMDIuE5YYC4zqDyWMiFpNteOWE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9BdPIyHdDo+JzRZAKHoZX7UW7tSQ3gCQKIJ/FUDzZeKtcArw0ePG4Xr/zwW/K9zAdeuUoQH8OLRyiUfCPxs4DA"}}, "unsigned": {"age_ts": 1570043466051}} #}> r $ J p  ) O531/-+)'~eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800~eeQ$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~eeQ$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800[3QQ$29:localhost:42455$1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800[3QQ$29:localhost:42455$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800[3QQ$29:localhost:42455$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043479329kvsXb:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043479329kvsXb:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043479329kvsXb:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043478328DMkRS:localhost:8800$1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800j QQQ$1570043478328DMkRS:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043478328DMkRS:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043477327AgpMM:localhost:8800$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043477327AgpMM:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800jQQQ$1570043477326hyTqo:localhost:8800$1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800KQ31$1570043468324DLhaB:localhost:8800$18:localhost:42455!6:localhost:42455KQ31$1570043468324DLhaB:localhost:8800$16:localhost:42455!6:localhost:42455<331$18:localhost:42455$17:localhost:42455!6:localhost:42455<331$18:localhost:42455$16:localhost:42455!6:localhost:42455<331$17:localhost:42455$16:localhost:42455!6:localhost:42455~eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec!cRbfhxZdPstEsPGPAu:localhost:8800~~eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$DUbDrq21-Og2sRDvsSzBpfdd5zLQWQ3kGPutMegV2x0!cRbfhxZdPstEsPGPAu:localhost:8800~}eeQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U$-eyaGXYdbUL-JGwW1NxgJGt4T7tFCHx5tsIlKQbWMpc!cRbfhxZdPstEsPGPAu:localhost:8800 Je3  P  E  | w]  Dp+?9 X%W & J> v8   K ^ -k}Qjq1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs 1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms41e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU /1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3Xrs1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r01e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgh1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk1e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxIf1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM1e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttE1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 ^1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM d1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE01e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos>1e$xuuA0m4kiCsfYbD4FIMG/YbGR4cfct3ET8JpyhVGUI41e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU H1e$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY 21e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k0e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMS1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI&1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsl1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc71e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7isg1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEwU0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE 1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lki1e$xyzM6GwUXPwPQJLi4l1rPmGLm_f-YHq9Io9__jp2OEQ1e$xwbCEZOU1ZnOJ8Y4S5FtLLRfocK3puiBtfTxXvz0C201e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 21e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg <1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo  21e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU21e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU 1e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs\1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k 1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE  8H31_S $20:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -6}{"event_id": "$20:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "content": {"msgtype": "m.text", "body": "Message 2 here"}, "origin_server_ts": 1570043468816, "prev_events": [["$19:localhost:42455", {"sha256": "HpT1UqyVURnRV9drqmf2ziVS5IuQKq/MklvKAi1ajDk"}]], "type": "m.room.message", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "depth": 4, "hashes": {"sha256": "EBk66xkEqED7H+JMZTlYn79x6jVa2Z0DqfRBtGS16Cc"}, "sender": "@__ANON__-20:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "MCcdLwqwtzz00hJQ7nXGIz5L2nryJ2uEE2B3Bgw2Rq7+DnUbjNGzIt7uGgLTxXC3qTcesQFee3SF51RdnW3CBg"}}, "unsigned": {}}8G31_S $19:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -5}{"prev_events": [["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}]], "origin_server_ts": 1570043468815, "content": {"body": "Message 1 here", "msgtype": "m.text"}, "event_id": "$19:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "HpT1UqyVURnRV9drqmf2ziVS5IuQKq/MklvKAi1ajDk"}, "origin": "localhost:42455", "depth": 3, "type": "m.room.message", "room_id": "!6:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "Bb7Tb/IgvOyMMGKvV3/uKs9ZJTTsRL2KLGoVVJBQBMIRjWLDVILz4lrxgIn353kxMe8MxB7tHz3BaDT2TpPDCA"}}, "unsigned": {}} FQ1?w $1570043468324DLhaB:localhost:8800!6:localhost:42455{"stream_ordering": 3302}{"type": "m.room.member", "room_id": "!6:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}]], "content": {"membership": "join", "displayname": "anon-20191002_181700-642", "avatar_url": null}, "depth": 13, "state_key": "@anon-20191002_181700-642:localhost:8800", "sender": "@anon-20191002_181700-642:localhost:8800", "prev_events": [["$28:localhost:42455", {"sha256": "kAlUsZ8VUGVttt8onI3HTOZBNBUUMobdzoDSz9iHF70"}]], "prev_state": [], "event_id": "$1570043468324DLhaB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043468834, "hashes": {"sha256": "8ToPX7arzQgelXNOQfz3o2YcoRC3BBUSR/fJstk/YC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y9fuP0HDUaYR4xZGJCIO+8ty6FoBiGlUgJn/EqabFblOAIl3e4ZVbBI8uwQN/T4c674Ls/aUpooTBNiV7yQjBw"}}, "unsigned": {"age_ts": 1570043468834}}`E31_# $18:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -4}{"event_id": "$18:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "content": {"join_rule": "public"}, "origin_server_ts": 1570043468814, "prev_events": [["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "type": "m.room.join_rules", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 2, "hashes": {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}, "sender": "@__ANON__-20:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "0f+kFvFU7/MV6jwCprvYg6HZBF1dXpHt+YmpsmmyGS3DvTFo7KyGjoWl3+zVS4irVTimHKi/IxvJA+P+I6ywAg"}}, "unsigned": {}} &n/c # V  t 8`p4p4p2tdm3Q'E$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455clQQ? $1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility[kQQ/ $1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules]jQQ3 $1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levelsiQQ']$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800WhQQ' $1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.create_g11']$3:localhost:41985!0:localhost:41985m.room.member@anon-20191002_181700-651:localhost:8800_f11']$3:localhost:44405!0:localhost:44405m.room.member@anon-20191002_181700-650:localhost:8800_e11']$3:localhost:37265!0:localhost:37265m.room.member@anon-20191002_181700-649:localhost:8800`d31']$37:localhost:42455!8:localhost:42455m.room.member@anon-20191002_181700-648:localhost:8800`c31']$33:localhost:42455!7:localhost:42455m.room.member@anon-20191002_181700-647:localhost:8800sbQQ'E$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455caQQ? $1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility[`QQ/ $1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules]_QQ3 $1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels^QQ']$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800W]QQ' $1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.create}\eQ'E$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455m[eQ? $Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibilitymZeQ? $O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibilityeYeQ/ $xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_ruleseXeQ/ $f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rulesgWeQ3 $pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levelsgVeQ3 $JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels UeQ']$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800 TeQ']$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800aSeQ' $EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800m.room.createaReQ' $L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.createdQ3Q'E$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455cPQQ? $1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility[OQQ/ $1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules]NQQ3 $1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levelsMQQ']$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800WLQQ' $1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.createoKQ1']$1570043468324DLhaB:localhost:8800!6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:88007?Q$60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800853Q$55:localhost:42455!taANXnGBZntAreRurn:localhost:8800G6QQ$1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:88008*3Q$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800G+QQ$1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:88008 3Q$53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:880083Q$49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:880083Q$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800GQQ$1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:880083Q$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800GQQ$1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:880083Q$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800GQQ$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800QeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800QeQ$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4!wBBQYEPjQGnoAzDpEu:localhost:88008 3Q$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800Q eQ$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U!cRbfhxZdPstEsPGPAu:localhost:8800Q eQ$m_h5dnrS6Bpr1VMi0mKIDASCCSx0Z6lcIpB5aUllV0g!sAWFpvSUPExZLVcPEd:localhost:8800Q eQ$ZnRoTDzfbm7hss_mxfz2BeNsqhmUtSGRm2YW3yL4YoI!YpcmaMNMzjvtgYtrli:localhost:8800QeQ$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8!PzoqoNRxeEEqiLyVSV:localhost:880083Q$15:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800 TQeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0!QkkdnzvdrjHaFGkzMt:localhost:8800QeQ$VDmZMMrR2GnHHrtlm4VvpgVdKYzUpIduEk6xGCvF7iU!DuqHkpTfWCUblSrxQj:localhost:8800QeQ$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTg!NanhNmCnVVpmZRJrTF:localhost:88007Q1$1570043392317hujur:localhost:8800!5:localhost:42455FOQ$157004338812XhwjX:localhost:8829!sqkBzbHHJOTNWwynqV:localhost:8800GQQ$1570043380304caenp:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800883Q$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800GQQ$1570043375299fbyXJ:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800G~QQ$1570043369294rquKy:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800G}QQ$1570043364289XIEhE:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800Q|eQ$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ!yAfsSyqpJWFnkXQFJL:localhost:8800G{QQ$1570043354284IVfTL:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:88007z1Q$3:localhost:42455!pHoEnhQYhwlbJXqKQE:localhost:88007yQ1$1570043341273LsXNn:localhost:8800!0:localhost:42455QxeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800QweQ$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG08!qjijQBfMwsCPTVgKPm:localhost:8800QveQ$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ!kjjUsMowsioSQRIJeg:localhost:8800QueQ$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8!UTAORDrNxIbSlGByAp:localhost:8800QteQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4!MXhwoqNXvexeDDSOZT:localhost:88007 Q1$1570043468324DLhaB:localhost:8800!6:localhost:42455 2v)B [  t ' @  T OJETm 9az-FJ6QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043529361Oytod:localhost:8800J5QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043528360cetnZ:localhost:8800J4QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527359ScxWW:localhost:8800J3QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527358wChxc:localhost:8800J2QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043525357VEfrE:localhost:8800J1QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043524356NlySy:localhost:8800J0QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043523355SbJjm:localhost:8800J/QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043522354IAAap:localhost:8800J.QQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043521353geZrN:localhost:8800;-Q3 !qzurjQHmiriwjaUMhO:localhost:8800$38:localhost:42455J,QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043518351Popej:localhost:8800J+QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517350ncbDd:localhost:8800J*QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043517349uVTMj:localhost:8800J)QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043516348vThZG:localhost:8800J(QQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043515347LGRKl:localhost:8800J'QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043506346EEQDj:localhost:8800J&QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043504345DCjlJ:localhost:8800J%QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503344dJwGF:localhost:8800J$QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043503343snlnn:localhost:8800J#QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043502342mVJmO:localhost:8800J"QQ !TSFcaXDBqrCREHRHxv:localhost:8800$1570043501341JmcnI:localhost:8800T!Qe !wBBQYEPjQGnoAzDpEu:localhost:8800$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4T Qe !AOEdqVKPFddrqbKPOL:localhost:8800$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620TQe !AOEdqVKPFddrqbKPOL:localhost:8800$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gTQe !wBBQYEPjQGnoAzDpEu:localhost:8800$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoETQe !AOEdqVKPFddrqbKPOL:localhost:8800$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8TQe !wBBQYEPjQGnoAzDpEu:localhost:8800$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9ETQe !AOEdqVKPFddrqbKPOL:localhost:8800$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQTQe !wBBQYEPjQGnoAzDpEu:localhost:8800$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0ITQe !AOEdqVKPFddrqbKPOL:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgTQe !wBBQYEPjQGnoAzDpEu:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88TQe !AOEdqVKPFddrqbKPOL:localhost:8800$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2ATQe !wBBQYEPjQGnoAzDpEu:localhost:8800$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo;Q3 !oZGRyBAkNDrEeiAqWL:localhost:8800$29:localhost:42455JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043486339YbYQQ:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043485338vbLwS:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043484337ylFDA:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043484336qKOPD:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043483335oDIDb:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043483334ejWtI:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043482333DxDEq:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043481332XroCo:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043481331UNaWT:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043480330seKnV:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043479329kvsXb:localhost:8800J QQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043478328DMkRS:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477327AgpMM:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043477326hyTqo:localhost:8800JQQ !oZGRyBAkNDrEeiAqWL:localhost:8800$1570043476325vnEPO:localhost:8800:1Q !6:localhost:42455$1570043468324DLhaB:localhost:8800 &]/ q < G L z 2Sl,K'b{]WrQQ' $1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.createcqQQ? $1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility[pQQ/ $1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules]oQQ3 $1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levelsnQQ']$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800joinWmQQ' $1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.createhl3Q'E$38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455joinckQQ? $1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility[jQQ/ $1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules]iQQ3 $1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levelshQQ']$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800joinWgQQ' $1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800m.room.createyfQQ'E$1570043506346EEQDj:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455inviteceQQ? $1570043504345DCjlJ:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility[dQQ/ $1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules]cQQ3 $1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levelsbQQ']$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800joinWaQQ' $1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800m.room.create`eQ'E$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455joinm_eQ? $Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibilitym^eQ? $O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibilitye]eQ/ $xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rulese\eQ/ $f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rulesg[eQ3 $pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levelsgZeQ3 $JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels YeQ']$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800join XeQ']$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800joinaWeQ' $EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800m.room.createaVeQ' $L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo!wBBQYEPjQGnoAzDpEu:localhost:8800m.room.createhU3Q'E$29:localhost:42455!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455joincTQQ? $1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility[SQQ/ $1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules]RQQ3 $1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levelsQQQ']$1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800joinWPQQ' $1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800m.room.createsOQ1']$1570043468324DLhaB:localhost:8800!6:localhost:42455m.room.member@anon-20191002_181700-642:localhost:8800join8N31' $16:localhost:42455!6:localhost:42455m.room.createe%Q [ $ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW0m.room.topic!sPWVGnipjiiWQpywNO:localhost:8800 m/wm/@anon-20191002_181700-20:localhost:8800 R`3Ii<nA\/|O"yLl? _ 2  ~ Q $ S& q D  c 6 V )v,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800+Q !ELBgBaMSIMNkjFSumH:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ZZ,Q!DnUHoxreGexNmjSVpq:localhost:8800 YY,Q!DnUHoxreGexNmjSVpq:localhost:8800 XX,Q!DnUHoxreGexNmjSVpq:localhost:8800 WW,Q!DnUHoxreGexNmjSVpq:localhost:8800VV,Q!DnUHoxreGexNmjSVpq:localhost:8800UU,Q!DnUHoxreGexNmjSVpq:localhost:8800TT,Q!DnUHoxreGexNmjSVpq:localhost:8800SS,Q!DnUHoxreGexNmjSVpq:localhost:8800RR,Q!DnUHoxreGexNmjSVpq:localhost:8800QQ,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  +Q !DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800+Q !DoiZErAdypBUMZKaeJ:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800+Q !DntdfAPfCfgdOoRMdl:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ^^,Q!DnUHoxreGexNmjSVpq:localhost:8800 ]],Q!DnUHoxreGexNmjSVpq:localhost:8800 \\,Q!DnUHoxreGexNmjSVpq:localhost:8800 [[,Q!EfJcWhdjNARbuHYrqU:localhost:8800\\+Q !EfJcWhdjNARbuHYrqU:localhost:8800[[,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800+Q !EWkoFeckhXlNyjuIEB:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800+Q !EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800+Q !EABRjdYuYumMhLSwIa:localhost:8800,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 +Q !DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800   R`3Ii<nA\/|O"yLl? _ 2  ~ Q $ S& q D  c 6 V )v,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800,Q!ELBgBaMSIMNkjFSumH:localhost:8800+Q !ELBgBaMSIMNkjFSumH:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ZZ,Q!DnUHoxreGexNmjSVpq:localhost:8800 YY,Q!DnUHoxreGexNmjSVpq:localhost:8800 XX,Q!DnUHoxreGexNmjSVpq:localhost:8800 WW,Q!DnUHoxreGexNmjSVpq:localhost:8800VV,Q!DnUHoxreGexNmjSVpq:localhost:8800UU,Q!DnUHoxreGexNmjSVpq:localhost:8800TT,Q!DnUHoxreGexNmjSVpq:localhost:8800SS,Q!DnUHoxreGexNmjSVpq:localhost:8800RR,Q!DnUHoxreGexNmjSVpq:localhost:8800QQ,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  +Q !DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800,Q!DoiZErAdypBUMZKaeJ:localhost:8800+Q !DoiZErAdypBUMZKaeJ:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800,Q!DntdfAPfCfgdOoRMdl:localhost:8800+Q !DntdfAPfCfgdOoRMdl:localhost:8800,Q!DnUHoxreGexNmjSVpq:localhost:8800 ^^,Q!DnUHoxreGexNmjSVpq:localhost:8800 ]],Q!DnUHoxreGexNmjSVpq:localhost:8800 \\,Q!DnUHoxreGexNmjSVpq:localhost:8800 [[,Q!EfJcWhdjNARbuHYrqU:localhost:8800\\+Q !EfJcWhdjNARbuHYrqU:localhost:8800[[,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800,Q!EWkoFeckhXlNyjuIEB:localhost:8800+Q !EWkoFeckhXlNyjuIEB:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800 ,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EMhFCPhwmnWVnjtXXM:localhost:8800+Q !EMhFCPhwmnWVnjtXXM:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800 ,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800,Q!EABRjdYuYumMhLSwIa:localhost:8800+Q !EABRjdYuYumMhLSwIa:localhost:8800,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DuqHkpTfWCUblSrxQj:localhost:8800 +Q !DuqHkpTfWCUblSrxQj:localhost:8800 ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800  ,Q!DqxFmsXPclgGqpSwdy:localhost:8800    D9L31aS $24:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -10}{"hashes": {"sha256": "N2m1bGuofB9evylVvWsgnLvYidg2IcC/KxyyFbYyGwc"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "depth": 8, "origin": "localhost:42455", "origin_server_ts": 1570043468817, "prev_events": [["$23:localhost:42455", {"sha256": "wEv79S9J3kX/9IXix9i6S/r/VN5qbxgppsZ/DWFg05c"}]], "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$24:localhost:42455", "content": {"body": "Message 6 here", "msgtype": "m.text"}, "signatures": {"localhost:42455": {"ed25519:1": "ktkQaNG5y/Yphw5c4o4XLV5xZELbIkfPrdWW/gqMvFpYtUaS3xkfCN1U/ANKZFTMtNTKUREZWB/kjqOzBLvECg"}}, "unsigned": {}}8K31_S $23:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -9}{"hashes": {"sha256": "wEv79S9J3kX/9IXix9i6S/r/VN5qbxgppsZ/DWFg05c"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "depth": 7, "origin": "localhost:42455", "origin_server_ts": 1570043468817, "prev_events": [["$22:localhost:42455", {"sha256": "1I1iZfQ8nQuWm48tFpoeoKfq44JtAbmRmP767R2tfyE"}]], "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$23:localhost:42455", "content": {"msgtype": "m.text", "body": "Message 5 here"}, "signatures": {"localhost:42455": {"ed25519:1": "3cR1yEkWTiKT9ZPCwDh1wfT2VCjccXc09yHtZmdUuxTt7/clACxPbr1LZELd7XBRR+A64rzR0Xqp8xcX3+apCg"}}, "unsigned": {}}8J31_S $22:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -8}{"type": "m.room.message", "room_id": "!6:localhost:42455", "origin": "localhost:42455", "depth": 6, "hashes": {"sha256": "1I1iZfQ8nQuWm48tFpoeoKfq44JtAbmRmP767R2tfyE"}, "sender": "@__ANON__-20:localhost:42455", "event_id": "$22:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "content": {"body": "Message 4 here", "msgtype": "m.text"}, "origin_server_ts": 1570043468817, "prev_events": [["$21:localhost:42455", {"sha256": "4UKObP6e1kkvywFqDBcaTCr8towzmo0aWeGKCg8uUL4"}]], "signatures": {"localhost:42455": {"ed25519:1": "VZ6wSWLnM3nGsUirjUqC6+DD45ZQ9IrB/pbw336A+CwV5Ur2FajuBGPp9ga6U75jVpXiJNO21h9o11DlLU4uBw"}}, "unsigned": {}}8I31_S $21:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -7}{"origin_server_ts": 1570043468816, "prev_events": [["$20:localhost:42455", {"sha256": "EBk66xkEqED7H+JMZTlYn79x6jVa2Z0DqfRBtGS16Cc"}]], "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$21:localhost:42455", "content": {"msgtype": "m.text", "body": "Message 3 here"}, "hashes": {"sha256": "4UKObP6e1kkvywFqDBcaTCr8towzmo0aWeGKCg8uUL4"}, "sender": "@__ANON__-20:localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "depth": 5, "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "31bdl8++oXYLe9pPFnB+Waz5+NpD/661nUQVpx31prYaCpTRDQ4uaHPvmGvFbcdLh6OxYzIr9pkVnr+x7GNpAQ"}}, "unsigned": {}} Si>g<FoDmBk@T)}R' { P %e: y N # w L ! u J  s H q*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!ELBgBaMSIMNkjFSumH:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DnUHoxreGexNmjSVpq:localhost:8800^^*Q!DnUHoxreGexNmjSVpq:localhost:8800]]*Q!DnUHoxreGexNmjSVpq:localhost:8800\\*Q!DnUHoxreGexNmjSVpq:localhost:8800[[*Q!DnUHoxreGexNmjSVpq:localhost:8800ZZ*Q!DnUHoxreGexNmjSVpq:localhost:8800YY*Q!DnUHoxreGexNmjSVpq:localhost:8800XX*Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DqxFmsXPclgGqpSwdy:localhost:8800  *Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EhFUhsgQbBWmrnGmaz:localhost:8800 *Q!EfJcWhdjNARbuHYrqU:localhost:8800aa*Q!EfJcWhdjNARbuHYrqU:localhost:8800``*Q!EfJcWhdjNARbuHYrqU:localhost:8800__*Q!EfJcWhdjNARbuHYrqU:localhost:8800^^*Q!EfJcWhdjNARbuHYrqU:localhost:8800]]*Q!EfJcWhdjNARbuHYrqU:localhost:8800\\*Q!EfJcWhdjNARbuHYrqU:localhost:8800[[*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EWkoFeckhXlNyjuIEB:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EMhFCPhwmnWVnjtXXM:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 Gj8 | J ' Q  W % Y _ -e3k9rAyG wM? ES!  q E & 21e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY '1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 z1e$BfGy2KK0VPjeOM5Ssujd0o_bSUyEzPxmI37DY-bx-mY h1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELk1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk 1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0c1e$CNv0Vt2y2ORnqxZdbmWjoavrLNNE_rKgQdD0CQhSwKQ1e$CNdSkZtjjlDiLI-A6aN0hWQPNmij8J7p99l09OLjZf01e$CMySpZaza9A7GWwMikeyGI9I2tgChYOGv9CBa3G6KzI1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6Em1e$CHpQr1lUrzUciSYJR81NFD8sfIdkonH-E2nqESr32Lw1e$CGt81kuA_uzLEi4FXOFluk2QsApe11mEnZslckIig4U1e$CGnbE35QI4ylqPGLrHasKMu6ZDw7ehH1cypJRbpyF10 i1e$CGCnCw+GYpTyzOcADuXirS2FIGabV/j/hX+oxdQA6jE 21e$CAmQ4uieOloYkCH4Sk6ksMxLU_dIdUJKd4LBXicGwC4 t1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6gH1e$C6NXORYu4U2CiR3pCl9FIe8rW-OiF7GHKYsd6-hMKn4C1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8 1e$C4LT-a-Gfg5H0OSpE-AqjV-x1SeygCNGVaYb0rI0h7Y1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS0E1e$C41w_4RFgy6BGCsZ_qdlLfKhtRX8lz_ANDCArOCRoV01e$C2k6DHrtNXpUA1Zr7H08WS3Ws0DCQggRh_eKHtfmfKU0e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_wE1e$C0s3abe5-A2_NOHepHN8oJxYgkbUEFzrlZvxxTbRCjoX1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE70k1e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk00e$BzzpH3LapQvNGJeeROYUxQfPXELe61yr5UW7y70rq90 1e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc[1e$BvU74eqIJV3il2upCpWUaLuLV5PbnfJR0M8YK8iqVmk 1e$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8 W1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7Ij1e$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$Btf4bvgRlYgwE1hA-86jUcHUJOYc7wZBhi_hQg32Zegl1e$Bs2QtoITdSlaISl7hv2n-Sb7shmssmljurfmiDflF3U11e$BpkKTyIbKN/QjB6ClAAZqhAEecFpXX6YGi473wSyXE8 1e$BnbVYkxzE0XVy54kOv0amgoPxW6T91Buv212n-9Y1aU`1e$Bmr3fhgh_aFMmtMw7zccQRvDLv81WntNhn1bMAfcWm41e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDw 1e$Bfpufcjmcn5K4e6ctCWswGy96CH8tprOzN7ghhwthOQ/e $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA1e$BchitG-stffjcYOrNeqJUIYoLb3Dmry7aWRtbyRRCxY1e$Bbbv76fQUjnY-0ZAR_CLFJhWuM7YcXo92HQu-fqV2GA 1e$Ba6VCHiGtbmYFEkEns-blgG5pl-G_Q_yzuRF_ohBCcw1e$BXbOjUE3fCQkVfhzedbL8xI818Uj13iQx4SEbl2hsEg1e$BUIAFZT6Y-E3iP7YZ2jDkTBIongMc5gGHsnWOB8hKXY1e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEN1e$BJsMnRajiL_0EV4p6FIKadXKCfR439Q_vkjkgv6SlDk0e$BJBac-EtIDJKv9fBexJH1rNf1p1p0FBBceVmE-6eaRoX1e$BI2EA42wztBnl475HyZ1SlFf2VZvhSmCYUw13maZwUQ1e$BGwaN7SzCQROI9jzOClnfYyIgizkmOfGUeGMgjZzk2Q1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWgu1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSsi1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6AY1e$BJ6xLH3Ye_0czmBjaKERaqHIkPsrnu40wLXcHS2enMA 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ q11e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego 1e$C5RFJTMezwsVZt7yu2lfbyv69Up2aOP6spRjdzPcSz8 1e$CQ60upSwrHwyDNVdv7g9VA1cySHmwHWKDJucy_sMCVM 1e$CRjOR5aEeXcObtqVZczLG3oyq4aIByenboncU2-qxUg 1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo e11e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQt1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk81e$BP_qzXKmhR8wenPJ10Vps3qithOoTyrDSpmofpvl34U ` 5X0`8pH X 0  h @  x P ( ` 8  p H 'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!ELBgBaMSIMNkjFSumH:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800s'Q!EieRtaCFZJJCIOkRPp:localhost:8800r'Q!EieRtaCFZJJCIOkRPp:localhost:8800q'Q!EieRtaCFZJJCIOkRPp:localhost:8800p'Q!EieRtaCFZJJCIOkRPp:localhost:8800o'Q!EieRtaCFZJJCIOkRPp:localhost:8800n'Q!EieRtaCFZJJCIOkRPp:localhost:8800m'Q!EieRtaCFZJJCIOkRPp:localhost:8800l'Q!EieRtaCFZJJCIOkRPp:localhost:8800k'Q!EieRtaCFZJJCIOkRPp:localhost:8800j'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhUxBjnSkVXpTrQlrn:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EfJcWhdjNARbuHYrqU:localhost:8800`'Q!EfJcWhdjNARbuHYrqU:localhost:8800_'Q!EfJcWhdjNARbuHYrqU:localhost:8800^'Q!EfJcWhdjNARbuHYrqU:localhost:8800]'Q!EfJcWhdjNARbuHYrqU:localhost:8800\'Q!EfJcWhdjNARbuHYrqU:localhost:8800['Q!EfJcWhdjNARbuHYrqU:localhost:8800Z'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800  C;P31aW $28:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -14}{"prev_events": [["$27:localhost:42455", {"sha256": "HDkGTQCwdD9uMRsX6UKNnpFZrWY3aUYZUVUh2ARNRac"}]], "origin_server_ts": 1570043468819, "content": {"msgtype": "m.text", "body": "Message 10 here"}, "event_id": "$28:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "kAlUsZ8VUGVttt8onI3HTOZBNBUUMobdzoDSz9iHF70"}, "origin": "localhost:42455", "depth": 12, "type": "m.room.message", "room_id": "!6:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "bMfZg4nWqTUu/13HsDX2tWxHqBhrakPaXQNCqLR8EBaynEh2G5tlO9B1jCPAYs74DDbgFVfcZZuInqMJoysTBw"}}, "unsigned": {}}:O31aU $27:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -13}{"origin": "localhost:42455", "depth": 11, "type": "m.room.message", "room_id": "!6:localhost:42455", "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "HDkGTQCwdD9uMRsX6UKNnpFZrWY3aUYZUVUh2ARNRac"}, "content": {"body": "Message 9 here", "msgtype": "m.text"}, "event_id": "$27:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "prev_events": [["$26:localhost:42455", {"sha256": "wjT9h/aAYzSU/QFT7EAvYLfCHiQH8n2q2BL7mq8oQOw"}]], "origin_server_ts": 1570043468818, "signatures": {"localhost:42455": {"ed25519:1": "x9usSDfAJ4Ar28ZRZxr3Fuw3ZlgckMGgH430RkGvwlmRsBSPg71RuuBnhokpcED9+rxvRj05HlusnkbQeA9UDA"}}, "unsigned": {}}:N31aU $26:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -12}{"origin": "localhost:42455", "depth": 10, "type": "m.room.message", "room_id": "!6:localhost:42455", "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "wjT9h/aAYzSU/QFT7EAvYLfCHiQH8n2q2BL7mq8oQOw"}, "content": {"msgtype": "m.text", "body": "Message 8 here"}, "event_id": "$26:localhost:42455", "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "prev_events": [["$25:localhost:42455", {"sha256": "MWJNPitl2VvLzTOtFUkD1yzBUjpcxp+e0W17S5t2s+U"}]], "origin_server_ts": 1570043468818, "signatures": {"localhost:42455": {"ed25519:1": "UoiLlcuQAnQVfLLMZ4OmLlGhSUm7pncZE7Uxvui5OjIyOtXMjlIthTBwN2vUx9Ofs/hTL0JrCnyIiSjsOArxDg"}}, "unsigned": {}}9M31aS $25:localhost:42455!6:localhost:42455{"outlier": false, "stream_ordering": -11}{"depth": 9, "origin": "localhost:42455", "room_id": "!6:localhost:42455", "type": "m.room.message", "sender": "@__ANON__-20:localhost:42455", "hashes": {"sha256": "MWJNPitl2VvLzTOtFUkD1yzBUjpcxp+e0W17S5t2s+U"}, "content": {"msgtype": "m.text", "body": "Message 7 here"}, "auth_events": [["$16:localhost:42455", {"sha256": "wZrhPYPm6J7EtkDccVc3ZSX6v12h8Ne7q4DO+N23Wbw"}], ["$18:localhost:42455", {"sha256": "gSvV+7nuNlDYoWGq9tDOgTFC6t0NyNlfauBBvx/U2G8"}], ["$17:localhost:42455", {"sha256": "f6DC6OoG9GjK3c2TjxK1R0gGSlzqt/4nirzXXpzWb+M"}]], "event_id": "$25:localhost:42455", "prev_events": [["$24:localhost:42455", {"sha256": "N2m1bGuofB9evylVvWsgnLvYidg2IcC/KxyyFbYyGwc"}]], "origin_server_ts": 1570043468818, "signatures": {"localhost:42455": {"ed25519:1": "+XWvCKsWRv/6CsZ9braZ5PGtySUz2FyIx0vB8o8hxSExF5JoNsXjThFOtbI3jwasgRD+pi9+gYiSsN5sY6vEAw"}}, "unsigned": {}} _j@nD r H   g 3 c / i ?  m C V,Z0mCqG,Z0pFwM#{Q'3$54:localhost:42455 'Q$1570043572397AAGBm:localhost:8800 'Q$1570043572396lZXIU:localhost:8800 'Q$1570043571395bDLFD:localhost:8800 'Q$1570043570394QELCg:localhost:8800 'Q$1570043569393UscIm:localhost:8800 'Q$1570043568392ItLhq:localhost:8800 'Q$1570043567391GonfI:localhost:8800 ' Q$1570043566390qTwyJ:localhost:8800 ' Q$1570043565389RsxAr:localhost:8800 ' Q$1570043564388ZmOEV:localhost:8800  3$53:localhost:42455  3$52:localhost:42455 3$50:localhost:42455 'Q$1570043559386ZLBoz:localhost:8800 'Q$1570043558385Xpkrp:localhost:8800 'Q$1570043558384QrKsp:localhost:8800 'Q$1570043557383IxQaJ:localhost:8800 'Q$1570043556382AgYyj:localhost:8800 3$49:localhost:42455 3$46:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 '~Q$1570043550380LNzMz:localhost:8800 '}Q$1570043549379wtMED:localhost:8800 '|Q$1570043548378IxCfM:localhost:8800 '{Q$1570043547377kWWAW:localhost:8800 'zQ$1570043546376YfkfL:localhost:8800 'yQ$1570043545375TmtMk:localhost:8800 x3$40:localhost:42455 'wQ$1570043542373yGTqH:localhost:8800 'vQ$1570043541372ZeTYJ:localhost:8800 'uQ$1570043540371avDlf:localhost:8800 'tQ$1570043539370xCBJr:localhost:8800 'sQ$1570043538369ozxqx:localhost:8800 'rQ$1570043536368agmuM:localhost:8800 'qQ$1570043536367lvGLr:localhost:8800 'pQ$1570043535366hhblx:localhost:8800 'oQ$1570043534365WVAkx:localhost:8800 'nQ$1570043533364iwqCT:localhost:8800 m3$39:localhost:42455 'lQ$1570043530362jRUtV:localhost:8800 'kQ$1570043529361Oytod:localhost:8800 'jQ$1570043528360cetnZ:localhost:8800 'iQ$1570043527359ScxWW:localhost:8800 'hQ$1570043527358wChxc:localhost:8800 'gQ$1570043525357VEfrE:localhost:8800 'fQ$1570043524356NlySy:localhost:8800 'eQ$1570043523355SbJjm:localhost:8800 'dQ$1570043522354IAAap:localhost:8800 'cQ$1570043521353geZrN:localhost:8800 b3$38:localhost:42455 'aQ$1570043518351Popej:localhost:8800 '`Q$1570043517350ncbDd:localhost:8800 '_Q$1570043517349uVTMj:localhost:8800 '^Q$1570043516348vThZG:localhost:8800 ']Q$1570043515347LGRKl:localhost:8800 '\Q$1570043506346EEQDj:localhost:8800 '[Q$1570043504345DCjlJ:localhost:8800 'ZQ$1570043503344dJwGF:localhost:8800 'YQ$1570043503343snlnn:localhost:8800 'XQ$1570043502342mVJmO:localhost:8800 'WQ$1570043501341JmcnI:localhost:8800 1Ve$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4 1Ue$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 1Te$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1Se$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE 1Re$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8 1Qe$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1Pe$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ 1Oe$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I 1Ne$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1Me$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88 1Le$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A 1Ke$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo J3$29:localhost:42455 'IQ$1570043486339YbYQQ:localhost:8800 'HQ$1570043485338vbLwS:localhost:8800 'GQ$1570043484337ylFDA:localhost:8800 'FQ$1570043484336qKOPD:localhost:8800 'EQ$1570043483335oDIDb:localhost:8800 'DQ$1570043483334ejWtI:localhost:8800 'CQ$1570043482333DxDEq:localhost:8800 'BQ$1570043481332XroCo:localhost:8800 'AQ$1570043481331UNaWT:localhost:8800 '@Q$1570043480330seKnV:localhost:8800 '?Q$1570043479329kvsXb:localhost:8800 '>Q$1570043478328DMkRS:localhost:8800 '=Q$1570043477327AgpMM:localhost:8800 '<Q$1570043477326hyTqo:localhost:8800 ';Q$1570043476325vnEPO:localhost:8800 :3$28:localhost:42455 93$27:localhost:42455 83$26:localhost:42455 73$25:localhost:42455 %) E e 0  :f~";sXxYQ' Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.create$1570043521353geZrN:localhost:8800fQ'E3 !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455$38:localhost:42455uQ'EQ !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@__ANON__-26:localhost:42455$1570043519352auZGi:localhost:8800eQ? Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.history_visibility$1570043518351Popej:localhost:8800]Q/ Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.join_rules$1570043517350ncbDd:localhost:8800_Q3 Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.power_levels$1570043517349uVTMj:localhost:8800Q']Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.member@anon-20191002_181700-652:localhost:8800$1570043516348vThZG:localhost:8800YQ' Q !qzurjQHmiriwjaUMhO:localhost:8800m.room.create$1570043515347LGRKl:localhost:8800uQ'EQ !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@__ANON__-23:localhost:42455$1570043506346EEQDj:localhost:8800eQ? Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.history_visibility$1570043504345DCjlJ:localhost:8800]Q/ Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.join_rules$1570043503344dJwGF:localhost:8800_Q3 Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.power_levels$1570043503343snlnn:localhost:8800Q']Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.member@anon-20191002_181700-646:localhost:8800$1570043502342mVJmO:localhost:8800Y Q' Q !TSFcaXDBqrCREHRHxv:localhost:8800m.room.create$1570043501341JmcnI:localhost:8800 Q'Ee !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620 Q'Ee !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@__ANON__-22:localhost:42455$0brtZF9nLBiYjM_kc5S7_Se8gmf_EbCFcJAVj4dI0FYo Q? e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.history_visibility$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8go Q? e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.history_visibility$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEgQ/ e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.join_rules$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8gQ/ e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.join_rules$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9EiQ3 e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.power_levels$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQiQ3 e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.power_levels$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I Q']e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.member@anon-20191002_181700-645:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg Q']e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.member@anon-20191002_181700-644:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88cQ' e !AOEdqVKPFddrqbKPOL:localhost:8800m.room.create$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2AcQ' e !wBBQYEPjQGnoAzDpEu:localhost:8800m.room.create$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqofQ'E3 !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455$29:localhost:42455uQ'EQ !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@__ANON__-21:localhost:42455$1570043486340vukns:localhost:8800e~Q? Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.history_visibility$1570043479329kvsXb:localhost:8800]}Q/ Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.join_rules$1570043478328DMkRS:localhost:8800_|Q3 Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.power_levels$1570043477327AgpMM:localhost:8800{Q']Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.member@anon-20191002_181700-643:localhost:8800$1570043477326hyTqo:localhost:8800YzQ' Q !oZGRyBAkNDrEeiAqWL:localhost:8800m.room.create$1570043476325vnEPO:localhost:8800>y1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455Vx1'E3 !6:localhost:42455m.room.member@__ANON__-20:localhost:42455$17:localhost:42455:w1' 3 !6:localhost:42455m.room.create$16:localhost:42455>v1/ 3 !6:localhost:42455m.room.join_rules$18:localhost:42455  i g 4h5 i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45Hwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHotLSZab2tOeHkxYnJwXmgKMDAyZnNpZ25hdHVyZSD1rGdPLTZNakkh_tBs0CCCWrOZWWFp-qWxKxh8XnxyvAoa1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDgtKk0mLF4tMFBLSTdEVn4KMDAyZnNpZ25hdHVyZSA7TAeUnJJTM1jHs5iVEP6_-MLUiuTKwSNddziyJUwqlAo`1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF89KzVFOlVFLVdNV3h-QywKMDAyZnNpZ25hdHVyZSBLKwvSDZu49YEkXl2F6ja2lk3cvE7NA5SG2bBaVFVweAo]1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFTNXNIanZhZUQzcmRsRmsKMDAyZnNpZ25hdHVyZSAA0onHifatftb1uZbDhwJ2N2FQBdR6hvgzhJdapMghXgo\1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDdRVVJ1N1lJK34mYXhKeU4KMDAyZnNpZ25hdHVyZSCBzGZWIHU82dLBfXyzzfkDZcawicxcZFKftwex69sVFwo[1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY6MXYzRndMS3leRFRCPVAKMDAyZnNpZ25hdHVyZSAglaMO7CcWKgTfwvCgHtSnT06BMnfqb4uul_liw3PXnQoZ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDA0bypaU3I0V14yek8mb2oKMDAyZnNpZ25hdHVyZSBfHbpHseJ4Tkxm_D0aleFg9yGke1Gz_H0odjV0yBIeYgo_1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEB5YjcrMjdnSDB2ZzNSbzQKMDAyZnNpZ25hdHVyZSCQFt_CTqcrBUoH9DEtlHvwHWb7JNkSDtv_xWWcBEt7vwo^1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHImY3dFMF9UYW5AcSNfXkkKMDAyZnNpZ25hdHVyZSCSsyYEQM5ny3_f-QYY9cqzJyqEzAmlw1_taLZ05m1qygoY1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDMsJlo4QllnZCxkfnJsNEYKMDAyZnNpZ25hdHVyZSBd_ZfWu0bcbdQB0-rJYrpGAy4W4Ax63BL8CQUt-UjnMwoX1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHJwSWNFRjB5aWR3bTcyNHIKMDAyZnNpZ25hdHVyZSBFfcYqScH5WO8EryIAl9tAgm0Y0fLkpBqG_4tSzXpN_goW3  +SQQay $1570043477327AgpMM:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3305}{"auth_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "type": "m.room.power_levels", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"users": {"@anon-20191002_181700-643:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043477327AgpMM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043477872, "hashes": {"sha256": "6oa9fL2M0qZuBxaOP6OqO1RIhbMHus038bgURUhZT40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uUwKjZY5ci7PW+EgA/ACo3THatlXxsmLYTVQGsGJL9n/rnT70ZO+iqCoen1JF62K7rFSHaXqjZnqkYVbHq3yBw"}}, "unsigned": {"age_ts": 1570043477872}}RQQa) $1570043477326hyTqo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3304}{"auth_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}]], "prev_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}]], "type": "m.room.member", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-643", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-643:localhost:8800", "event_id": "$1570043477326hyTqo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043477116, "hashes": {"sha256": "IYNep77YbrMHSbHMxfdtg+1dF6vC4ptqBxfnmL7OSXE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AHH/kZn0qC0DH4mC6RkJRbedugdelZ5ok6SYpJ2e86h9sgPPrYTqW+Nqfj64/Q+eXtBtKhhgQXBs2yEREkR8DA"}}, "unsigned": {"age_ts": 1570043477116}}QQQaC $1570043476325vnEPO:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3303}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-643:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043476325vnEPO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043476390, "hashes": {"sha256": "z7Cmw9GYaJv5GFQ/NcNWOPrR+ncYb7gN9XVuE6Nn2WU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "XUhpEooZSpzMD39ZB1jHg3ehAyokZDTugaQW10fi31PtQkzYdPD5jghCJF+gRt+BmASnZjpO//uO9OcoSndMDg"}}, "unsigned": {"age_ts": 1570043476390}} P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P|pdXL@4( mw mb% m^_ mE mB m m  m뚑 m mo m m{  mw mb% m^_ mE mB m m m m2 mܜ m m mo mͧ m m7 m~ m꽺 m긄 mA m곲 mꮤ mꬉ mꨥ m  m  mz mx mt m\ mF( mCY mAr m@} m+ m  mS m5 m֜ m  m mv mF mC m mx mh mf mM mG m( mu m- m? m< mӥ m m觏 m m m膗 mmG mk mL mJg m+6 m'T m  m  m m  m& m m m m m獟 mx mv m` m^ mH_ mF= m/* m-) m  m  m R me m4 m m m m濵 mk m& m  m~ m|~ mU } m/| m { m:z mʪy mx mw m刨v mau mWt m<s m+[r m(iq m*p m #o mn mem mtl mh,k mKj m-i mh mg mf mie md mc mr]b mHa m,7` m_ m^ mf] mА\ m[ m\Z mY mRX mNW m♪V mlU mlqT m9WS mR m}Q mP mᷱO mVN mqM mMHL m3K mJ mI mH mMG mF mE mɓD mC mࠢB mA mx@ mb? mO> m5= m4< m*; m: m9 m8 mG7 m6 m5 mߨ4 mߨ!3 m߀2 mf1 mFp0 m?/ m. m Y- m, mc+ m)* m) m2( m' m& mȔ% m$ m,# m޽c" m޹! m޷ m޵ m޲ mޘ mހb ml mi[ mU m? m+u m mC mr m mݓg mo m[ m/5 my m m  mKa m m m m m m mf m mx m mߑ m^ m m m mɕ m m m m@ m  m볳 m밯 m뮆 m몤 m mJ m m.  }VQQy $1570043480330seKnV:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "601", "stream_ordering": 3308}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043479329kvsXb:localhost:8800", {"sha256": "A+u532PlFc6TWXd7KUhjZ2p1YRG1S5TyJp4+5F58K0g"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 1 here"}, "depth": 6, "prev_state": [], "event_id": "$1570043480330seKnV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043480705, "hashes": {"sha256": "SUIwpNBzUa7OQtlvZfWqhGN5cfZiAZatjTM0FC6XilM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mYxHDuh5rVONsnFOBCT/MW7EcsB1wR2I26b4DRFqGpCLgupwn0rjRfMCTqDN127gXLf6vXqSacYK078lH5lAAA"}}, "unsigned": {"age_ts": 1570043480705}}xUQQa $1570043479329kvsXb:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3307}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043478328DMkRS:localhost:8800", {"sha256": "iY5jybfdK/SnBUuY/ELVT1QcGSKKEkf59IfkSQaoEAQ"}]], "type": "m.room.history_visibility", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043479329kvsXb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043479272, "hashes": {"sha256": "5fOyne0LzCOw5bwNK8GuH2GeaLTpzJKy4/y/p8IsZFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZIKHK4CJ8b8uvgHEBZ8lduCOahA9cyU0m/QyOdZrJFncA2+olaZB7sP3frWb4ZmN5ERkm1iVNq9NBOBQ/oa4Bg"}}, "unsigned": {"age_ts": 1570043479272}}gTQQaq $1570043478328DMkRS:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "stream_ordering": 3306}{"auth_events": [["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}], ["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}]], "prev_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}]], "type": "m.room.join_rules", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043478328DMkRS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043478538, "hashes": {"sha256": "QcQBUCn5wZedGNsdIDJjfxQpzGMEmlESfZqJ4AbPR4U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "o/Vq3aDc17HJOiuGjzbXx73H0BXCBDgd6e//WOj2n+dfIqF+vWzFideItoo7yGueGq8oEZW/BYTuV5VAj/bEBg"}}, "unsigned": {"age_ts": 1570043478538}} =GvHd6 ~ R $ n @  Z ,  E H t1Ky _  7Q # l @ eksss-]@anon-20191002_181700-811:localhost:8800+.-]@anon-20191002_181700-832:localhost:8800--]@astest-0-20191002_181700:localhost:8800,-]@anon-20191002_181700-810:localhost:8800).-]@anon-20191002_181700-691:localhost:8800-]@anon-20191002_181700-684:localhost:8800-]@anon-20191002_181700-698:localhost:8800-]@anon-20191002_181700-737:localhost:8829!-]@anon-20191002_181700-681:localhost:8800-]@anon-20191002_181700-690:localhost:8800-]@anon-20191002_181700-683:localhost:8800-]@anon-20191002_181700-812:localhost:8800*-]@anon-20191002_181700-685:localhost:8800 -]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-658:localhost:8800 -]@anon-20191002_181700-659:localhost:8800 -]@anon-20191002_181700-649:localhost:8800-]@anon-20191002_181700-648:localhost:8800-]@anon-20191002_181700-647:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-665:localhost:8800 -]@anon-20191002_181700-657:localhost:8800 -]@anon-20191002_181700-661:localhost:8800 -]@anon-20191002_181700-642:localhost:8800-]@anon-20191002_181700-651:localhost:8800-]@anon-20191002_181700-644:localhost:8800=@spyglass:localhost:8800+[@anon-20191002_181700-96:localhost:8800?+[@anon-20191002_181700-90:localhost:8800=+[@anon-20191002_181700-75:localhost:88009+[@anon-20191002_181700-74:localhost:88008+[@anon-20191002_181700-72:localhost:88297+[@anon-20191002_181700-71:localhost:88005+[@anon-20191002_181700-70:localhost:88006+[@anon-20191002_181700-67:localhost:88003+[@anon-20191002_181700-66:localhost:88290+[@anon-20191002_181700-65:localhost:8800.+[@anon-20191002_181700-64:localhost:8800,-]@anon-20191002_181700-650:localhost:8800-]@anon-20191002_181700-643:localhost:8800-]@anon-20191002_181700-641:localhost:8800-]@anon-20191002_181700-640:localhost:8800-]@anon-20191002_181700-639:localhost:8800-]@anon-20191002_181700-638:localhost:8800-]@anon-20191002_181700-637:localhost:8800-]@anon-20191002_181700-636:localhost:8800-]@anon-20191002_181700-634:localhost:8800-]@anon-20191002_181700-633:localhost:8800-]@anon-20191002_181700-632:localhost:8800-]@anon-20191002_181700-629:localhost:8829+[@anon-20191002_181700-61:localhost:88004-]@anon-20191002_181700-613:localhost:8800-]@anon-20191002_181700-611:localhost:8800-]@anon-20191002_181700-610:localhost:8800+[@anon-20191002_181700-60:localhost:88002-]@anon-20191002_181700-609:localhost:8800-]@anon-20191002_181700-608:localhost:8800-]@anon-20191002_181700-607:localhost:8829-]@anon-20191002_181700-606:localhost:8800-]@anon-20191002_181700-603:localhost:8800-]@anon-20191002_181700-601:localhost:8800+[@anon-20191002_181700-59:localhost:8800#-]@anon-20191002_181700-598:localhost:8800-]@anon-20191002_181700-597:localhost:8800-]@anon-20191002_181700-593:localhost:8800-]@anon-20191002_181700-590:localhost:8800-]@anon-20191002_181700-584:localhost:8800-]@anon-20191002_181700-583:localhost:8800-]@anon-20191002_181700-582:localhost:8800 } }}YQQy $1570043482333DxDEq:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "604", "stream_ordering": 3311}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043481332XroCo:localhost:8800", {"sha256": "0BArZ38IQHRuWe5iH+czJVNmJm9VEbEnv517vmWZBnk"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 4 here"}, "depth": 9, "prev_state": [], "event_id": "$1570043482333DxDEq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043482427, "hashes": {"sha256": "zefLLMNr7iOK7/vmfhyEN1VnOzM3Nm2/8GcWgEMiL2E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jR9A4SKwPeoIv6XkSxuIOeICR1tAVWdIQZJtPnRvWd+8JOQWeTgHccJmOjhfFR8fmOBZYA4bIBhlGjPi+a5KCA"}}, "unsigned": {"age_ts": 1570043482427}}}XQQy $1570043481332XroCo:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "603", "stream_ordering": 3310}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043481331UNaWT:localhost:8800", {"sha256": "QKIRmgX7IpIlD9gxzxuwCszRsBUGCN8rzowd1WOHROo"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 3 here"}, "depth": 8, "prev_state": [], "event_id": "$1570043481332XroCo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043481950, "hashes": {"sha256": "STtufi7U+Ae32rXch2PjxC12zTDMcY5V3lRdG8Euz9E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e384EDvCPWr/Zgn7XlTwr+jHfScn51g6A3F9ueOwxdMm+F8pRFoKJ+wbCNPde/EfiXVDPTXV45RGV2w13Nu8Ag"}}, "unsigned": {"age_ts": 1570043481950}}}WQQy $1570043481331UNaWT:localhost:8800!oZGRyBAkNDrEeiAqWL:localhost:8800{"token_id": 623, "txn_id": "602", "stream_ordering": 3309}{"auth_events": [["$1570043477327AgpMM:localhost:8800", {"sha256": "MgM81vjTGWrwo66m3bAGfovKPacToffSQlZFMKsK5DU"}], ["$1570043476325vnEPO:localhost:8800", {"sha256": "Egvjx/wkY/9yIA1nn//P9w4YSmF+wEyzktwhFvDOrdI"}], ["$1570043477326hyTqo:localhost:8800", {"sha256": "WpF+X84hRPUSyGbRirFqmavNOXEgEsZ/+OkGn1pU+aw"}]], "prev_events": [["$1570043480330seKnV:localhost:8800", {"sha256": "Tu5i8vno226ZbRRxZBMHL/7UcX3D9rjyTEePXXTcQjA"}]], "type": "m.room.message", "room_id": "!oZGRyBAkNDrEeiAqWL:localhost:8800", "sender": "@anon-20191002_181700-643:localhost:8800", "content": {"msgtype": "m.text", "body": "Message 2 here"}, "depth": 7, "prev_state": [], "event_id": "$1570043481331UNaWT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043481370, "hashes": {"sha256": "Hpq3ABMAZ19jXtWvv/dtxx/K/ZJ/2GCpaKdDLgV+BJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U9T/WEHl907Af8DbrUd5K/Xlx+WM5ss/LNyEV5YvNfvv/26FBi6tX8v1B8/jDmAOZWD9EMxZKaoFsXvOQxn7Dw"}}, "unsigned": {"age_ts": 1570043481370}} Re:c P % y N # w L !8 } u J  sR' {<g H qFoDi>mBk@c*Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vOfeZvbtpuHfoqShFl:localhost:8800xx*Q!vOfeZvbtpuHfoqShFl:localhost:8800ww*Q!vOfeZvbtpuHfoqShFl:localhost:8800vv*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vJQYmOxOBLwFKzYkNj:localhost:8800*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 p p*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r r*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s s*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t t+*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v v*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u u*Q!vOfeZvbtpuHfoqShFl:localhost:8800yy*Q!vyCFfUTJKYJSDadFhT:localhost:8800^^*Q!vyCFfUTJKYJSDadFhT:localhost:8800\\*Q!vyCFfUTJKYJSDadFhT:localhost:8800ZZ*Q!vyCFfUTJKYJSDadFhT:localhost:8800XX*Q!vyCFfUTJKYJSDadFhT:localhost:8800VV*Q!vyCFfUTJKYJSDadFhT:localhost:8800TT*Q!vyCFfUTJKYJSDadFhT:localhost:8800RR*Q!vyCFfUTJKYJSDadFhT:localhost:8800QQ*Q!vttkrtSyHEJXVMlvLo:localhost:8800 A A*Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ @*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? ?*Q!vttkrtSyHEJXVMlvLo:localhost:8800 > >*Q!vttkrtSyHEJXVMlvLo:localhost:8800 = =*Q!vttkrtSyHEJXVMlvLo:localhost:8800 < <*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; ;*Q!vttkrtSyHEJXVMlvLo:localhost:8800 : :*Q!vttkrtSyHEJXVMlvLo:localhost:8800 9 9*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vRRNxNyGboLHNhqQvr:localhost:8800ZZ*Q!vRRNxNyGboLHNhqQvr:localhost:8800YY*Q!vRRNxNyGboLHNhqQvr:localhost:8800XX*Q!vRRNxNyGboLHNhqQvr:localhost:8800WW*Q!vRRNxNyGboLHNhqQvr:localhost:8800VV*Q!vRRNxNyGboLHNhqQvr:localhost:8800UU*Q!vRRNxNyGboLHNhqQvr:localhost:8800TT*Q!vOfeZvbtpuHfoqShFl:localhost:8800*Q!vOfeZvbtpuHfoqShFl:localhost:8800*Q!vOfeZvbtpuHfoqShFl:localhost:8800~~*Q!vOfeZvbtpuHfoqShFl:localhost:8800}}*Q!vOfeZvbtpuHfoqShFl:localhost:8800||*Q!vOfeZvbtpuHfoqShFl:localhost:8800{{*Q!vOfeZvbtpuHfoqShFl:localhost:8800zz*Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vRmMcoJDeCupADwqac:localhost:8800  *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q q+*Q!vRmMcoJDeCupADwqac:localhost:8800   ?yj[L=.zk\M/  { l ] N ? 0 !   ~ o ` Q B 3 $   u f W H 9 *  vgXI:+ whYJ;,xiZK<-yj[L=.zk\M>/  | m ^ O @ 1 "   } n _ P A 2 #   >{l]N?z|m^O@k\M1">>mXE t tmU s smR r rmO q qmLT p pmCk o omA n nm㾄 M Mm㹆 L Lm K Km㰚 J JmA I Im H HmP G Gm F Fm[ E Emn D Dm\ C Cm? B Bm A Am @ @m ? ?mJ > >m~ = =m|( < <myI ; ;mv8 : :ms% 9 9mg] 8 8mg[ 7 7mg[ 6 6mg\ 5 5ma 4 4m_Z 3 3m[ 2 2mW_ 1 1mT 0 0mP / /mK . .mH - -m@: , ,m;2 + +m7U * *m3n ) )m0F ( (m- ' 'm% & &m# % %m $ $m # #m " "m_ ! !m D m N  m  m!  m  m  m:  m  m>  m  m  m/  m  m  m^  m  md  m mE mⶢ mⲭ m  m{  m{  m  m  m  m┟  m@  m↼ mr m m) mz[ mxw mt, mr mm ml mc7 m`` m^ m[ mX mV mT mQ; mO^ mM mJ mD mB m?p m<| m9 m" m m m m m m m m m mm m m m mC m m m& mg m m m8E l lm5 k km2 j jm. i im' h hm!| g gm f fm e emO d dmb c cm b bm a am ` `mz _ _m< ^ ^m ] ]m \ \m [ [m0 Z Zm Y Ym X Xm W Wm| V Vmo U Um. T Tmj S Sm% R RmΘ Q Qm̰ P Pm O Om N Nm mR m m mz m m mQ m m m m m m. m m mᬏ m mK m, m m! mᕼ mክ mክ m m m m| m;B m mmv mr mk md m`M mY mWF mS mQ mM mG mA m= m: m7- m4. m,\ m* m% m! m m m mR mj m m m m; be/ ^ E  ]eexFb"Q?Q ]$1570043504345DCjlJ:localhost:8800m.room.history_visibility!TSFcaXDBqrCREHRHxv:localhost:8800m{ms@anon-20191002_181700-646:localhost:8800Q/Q ]$1570043503344dJwGF:localhost:8800m.room.join_rules!TSFcaXDBqrCREHRHxv:localhost:8800m{m@anon-20191002_181700-646:localhost:8800Q3Q ]$1570043503343snlnn:localhost:8800m.room.power_levels!TSFcaXDBqrCREHRHxv:localhost:8800mm1@anon-20191002_181700-646:localhost:8800Q'Q ]$1570043502342mVJmO:localhost:8800m.room.member!TSFcaXDBqrCREHRHxv:localhost:8800mmx@anon-20191002_181700-646:localhost:8800 Q'Q  ]$1570043501341JmcnI:localhost:8800m.room.create!TSFcaXDBqrCREHRHxv:localhost:8800m m⚳@anon-20191002_181700-646:localhost:8800!e)Q ]$Hlq6aTRTE_H0KEwUl7NcTUTtnPjW2Nrsb1cUmOSaYM4m.room.message!wBBQYEPjQGnoAzDpEu:localhost:8800m┟m@anon-20191002_181700-644:localhost:8800e'Q E$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620m.room.member!AOEdqVKPFddrqbKPOL:localhost:8800m@m@__ANON__-22:localhost:42455,e?Q ]$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8gm.room.history_visibility!AOEdqVKPFddrqbKPOL:localhost:8800m↼m@anon-20191002_181700-645:localhost:8800,e?Q ]$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoEm.room.history_visibility!wBBQYEPjQGnoAzDpEu:localhost:8800mrmE@anon-20191002_181700-644:localhost:8800$~e/Q ]$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8m.room.join_rules!AOEdqVKPFddrqbKPOL:localhost:8800mmI@anon-20191002_181700-645:localhost:8800$}e/Q ]$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9Em.room.join_rules!wBBQYEPjQGnoAzDpEu:localhost:8800m)m@anon-20191002_181700-644:localhost:8800&|e3Q ]$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQm.room.power_levels!AOEdqVKPFddrqbKPOL:localhost:8800mz[m}@anon-20191002_181700-645:localhost:8800&{e3Q ]$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0Im.room.power_levels!wBBQYEPjQGnoAzDpEu:localhost:8800mxwmz@anon-20191002_181700-644:localhost:8800 ze'Q ]$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgm.room.member!AOEdqVKPFddrqbKPOL:localhost:8800mt,mv@anon-20191002_181700-645:localhost:8800 ye'Q ]$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88m.room.member!wBBQYEPjQGnoAzDpEu:localhost:8800mrmu'@anon-20191002_181700-644:localhost:8800x e'Q  ]$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2Am.room.create!AOEdqVKPFddrqbKPOL:localhost:8800mmmok@anon-20191002_181700-645:localhost:8800w e'Q  ]$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqom.room.create!wBBQYEPjQGnoAzDpEu:localhost:8800mlmm@anon-20191002_181700-644:localhost:8800{v3'Q E$29:localhost:42455m.room.member!oZGRyBAkNDrEeiAqWL:localhost:8800mc7mc@__ANON__-21:localhost:42455uQ)Q ]$1570043486339YbYQQ:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800m``m`h@anon-20191002_181700-643:localhost:8800tQ)Q ]$1570043485338vbLwS:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800m^m^@anon-20191002_181700-643:localhost:8800sQ)Q ] $1570043484337ylFDA:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 m[m[ @anon-20191002_181700-643:localhost:8800rQ)Q ] $1570043484336qKOPD:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mXmX@anon-20191002_181700-643:localhost:8800qQ)Q ] $1570043483335oDIDb:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mVmW@anon-20191002_181700-643:localhost:8800pQ)Q ] $1570043483334ejWtI:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mTmT@anon-20191002_181700-643:localhost:8800oQ)Q ] $1570043482333DxDEq:localhost:8800m.room.message!oZGRyBAkNDrEeiAqWL:localhost:8800 mQ;mQF@anon-20191002_181700-643:localhost:8800 oo 0 b9jbvvo1i   0%  182 3 4)5)70042615105okfnm 24115nztib 32125lwdor 42135omfqy 51145wbynt 8153tmcyj 9154fztdf 5meuep 60156wxhvl 7svdcu 1158igwhf 9xqwjk 2160srmtm 1lgrsw764dorhm 83184tpchh 92194rxboz 700204cxvfq 9214pwhvu 18224mbwnj 25232uzihq 3sjcnf 6234miteq 5bahbo 7236aoaie 7iulyb 8238dtqib 9bmobm 9240abrvs 1uusiz 4310jcqya 3198272dgmin 392317hujur6 7 89cm476cekcaed5s85btkzpplz083yvbpttxvmi%m0cdunsc9xeg1ygmg3iizzrxki1qpop6jojvwnfeiqi8khs7ywororgdapvrxlr26qy2zbfu0rjody6v5unwmpxux3y5cfgje7soolhpkfkmqksjoxd*z6tdt9yt3hbjkds8lm3uaqqhv3kemgdpunxmmr4bgs9ci2_  0123456789 bbarvmydvvca jyj2pgwyliwklkemkw0mtcdyl3i7fkmw3rcgleja4m2vz*ne3j5jh0ycbo6o6dbjjywnsr03tyojb04b1ohkhisw vgwauhudgaqm0apm2ynfixynqg xjqy2cwehiyzpoqgs3U  0123456789azedzbpcue2zmu5ayvwfnkpyv4$gf6orqsr9h8lfzq7cy6exvk2u01woykok37h"i19mtjing7jhc3iofx14b4ahyar3rdvir0ls q4aywlrbbsbut*yfw5giqflh2ej3vv0owxccmnxeaphinari06ynb7nk4K    012455 30dlyjijnh41qdjssewudj456cvytda90789)9w4hf3486zyzkk0xz2qw7l06boqjqezwmaqxfkxdectg2s'enbv2icmkn6ssyx6kckxft8xlpzj0chiee8iy1ol4xg61#ndcalk6zicszuhmxsia1fdjtto2jfhgjl48oq20xi1eyvqnwfqcwunwzusxqs3ybregvsuk4bv5wjlu(uyaqft9ws6en7vhjkqnhqcib1hwak2hpdcenlp2j5<  0547g5czyrrlpl29xdxw73ns9orbcn9yxqiopylptlofryejvmiku1frgf14lsbry9oyznccw*s0ysgmd1rdecuzv4snxevelu9uq7mb8uzzgs8h6pxwz5q#vvzzeagiylrqjlc1m5j5sy2bdxjonsaywpy6- kklp6xu1cqgmnhslygdnweylnosuslnpt0xl*mtrexehtxcaqmy7rpolsa3fx6annkdyezrum58g5uao3628rw ufbmnnlxo*znoghokibbe4edck5znfrghdkdyikkf2256hp1vseo7( #47unaiwa7uwpycibdrilusrvrio90pbh1nkai1qr yinm7zxshgmufzcisgma5nqkqg8yoxjhfe6yyolijcg5t8oqsic tk7yef9qcivwlsxo8eug46f9xf9anfy8&V --P $8800 29a8tw64njepuezu*cuqktvpalxkjhcj88nnlpa1jeffuhsdttal2xmmfmoep3umhxc!ffairv4y9hqwvyqfqbvblhuuztmfdf1lq hoo7b9p6umiruqbffs8lmeq8k9k8ubdq4miamwwafdy49vngsocymvgznanumstw9e0f5pnkkste2bdkkpt2dubtwpj6pfiuc9+v  85oxj5fdf"q5uon9lofsc2lyfnpskd56obonzdxq5ktu sw1opxz71irmuaqhqcscd3qk3htvmysfx*yikxcandqbkg33dyc4dqfzmomixeyr0wlfadoeaicyaGs 3tlql)vmxuy0nkl34g0a7zemlda7gogrgpijf1j35p1vkjua1kqrh7wxocq7cfmdjxlrsxhtgzhmxld4dqzsckny39ugir329li9jiyfeqx9hmqvctu9f94sfw69iezgj1lbwwhlc2svn6rgzejfknlnlxfchllvfyhkj peffccmrwl mgtv4fyaf6xn0lmlqizbfklpqkibp$nd "o8u397tksjfq6kr5z2to3auj4yzbuyvayu pdb4m7shc3uxq qhegiamxcstf7mnhyserjfd2fpgzc9s7u15vcvyrww2vbwqoggiadb9ib5mupucho2lrjwscufqachocyuw3bixni3l7ltefore gnp8saojospv hhukgjzma5tjha2y*k3fqkssbnrm2oqwt6rac22aa5eqkhdyuccmrf4ytdmwyiehzwsmjfuskvvlockedody1yzlwnkrpncpdjbdgptqiemswfziqtcgjoqdorbaknnqzfubhgs.r05avgtv2ppof9vgen0ni58jviucichl4e*vu74eqijv3il2upcpwualulv5pbnfjr0m8yk8iqvmk*xbojue3fcqkvfhzedbl8xi818uj13iqx4sebl2hsegyznoocu1x+c3fwpi3yjswf9pwxc6466qc99cpxbhkikjrcvv5qp1q8mdr ,,Q &camq4uieoloykch4sk6ksmxlugckphdsyciocfvraq ncwhaykxgydrht4veleba0algxdmoq2oqkqobgqggftzbe0jnlayasqw6jjddhdlay4sd iqxzws4v8 kezm2tuqzylnilmaqontent $q60upswrhwydnvdv7g9va1cyshmwhwkdjucy%rjor5aeexcobtqvzczlg3oyq4aibyenboncu2sqenqzaezazngktbewyozywu0xgggarztpdiuirsjzzysd*8xic7o5tb7nlo02lq0y8oyn1qgh317qckaouufeygu9 a0ey2kf87gqeebdelfbagvcrtxgnxmnvidujkd4lbxicgwc4jwlhpjuyoksgqtrkyl9mlv4e9vdlynpn5qpvaap q4ukclknetnxfmsxpclggqpswdys 0zx2ghi4avznfjondkxlrrdxuk$ xztimbbn0mpo zodkwepwruethgggr2fdybx8tss49sz6e 97yklrbj6mbi5c8jrkcozsmm0ite0jea8qz7rpmmitnpmd7t*gmabhozhefxxlagpyjurehqhracskyufok02bo7ihyhjhp5izehpegjh04fmuxbjnskvxptrqlrnizn8ug54rfzgstsdnskwlg3zj3jodxyfdsoin0wwehkq0cnryozvwgjlaflbwwsqkeaoyovu2cp1lnqewj7zen6tqydipmstmoppogocbimnzpn*tnszuuekaaqahbjb31swfx5ygpfnrbm8lalk3gqph0%tnmzavz5ftqset0ljbgmlqzohv66lesz3obqaquewrdwtyqhvuxzfvhnsyl9xlxfrsxb3gbmffseposjkwdykif(1bumdayvfadtbcceefl46s9i9uznxxcaf28tudat2ubfw3r 4fdd257mkzqhjqdjforjaiy0irbj0mh2nak5zzbk 5hgkzkzi9m8mbjsiqoztzkafwzzqqhibvz2j&iqcvyzwawd5qvy0ukkcdvj7vdnrpk6nwr3clfzj5re)jmv5dskv1zewovtqijhfwd5sezwvtwxftx3ez0zci'lpa2nrd99rnhrlcrrjmtgbcohyfgcercjp9z7wopq3 s6ws8xcofqigcjcsuiszvt0l46o75e94 xgnrqnihygte'ybcifp1obnhkas5tvtxhhbaxbgebvlgqjqrkjyqg5y0bxgbg8hxpth6aaqpjpc4 dzh9q7nwcggbrhrwgkktdi9qjyiolz7hryme2w$ifl68s5jws2acvlipzuxgyboflhxjpn7avb9*k3rwrh4fwgftdcofqbwy3q0qczqh5zqw1tiwnwkx4q%uubd94d4eml0n7s8s2duptlojg21hpdfm1a94%noghwfqunqekpheuqgd1fjevqqi2dchnmd1t0qsq3w8esxvxnevpciwmfchyswlduodplyvuogxdzu yptyzocaduxirs2figabvh1rxts7jguiidwhmo7a1zm4heyepf3fu6regay8yp9rv8on4erdtcyrgtlhavea5kk0gg*atvoply4zw1mjbpeigykzdsjv5eezigd7m5sbj9fkibyxdeuvielkhwqjehccdosgafukhp9zbjesemello    <2gspmwxboxzztolsxy[hus*ie2vuywocq4h2y795bg0e3kxzaswjmeoe2ggklstnilxzt1ncwmko7jociflvobe0tz8pj pfgmwbkgeyj8rhdjbmxvxbizkoiiksbp RR+ Z htcjf0cnhna8usorltwztlbmqzxmmwbc74fjzk8hcihyltzsw0vzyx%4ocm10z4iqffy6h9zn2fph3n8vuanunwkjvk8frgcvjcbrityqlveka*ymmfi6qoqjdyruyfgv71oldcfer56hvaubmekjx9zkzhi2txxs4hs&78xhhqovrrvbhj2tyyakk0bnffl1ropth9ajpwqsklwjprlike4dkjpykszk*csjrrkjg9fjdhvm95cqftqqxl0xlze8nvjby9fttkid0fqkhcuuvt4ud2ewtonjzkhmcjtwclrstsvlysv4fxamqeyizy1zjxskezivjyjknqkayfjulgjpjzrvvafuwtago3hjbsfszubrnybdnzlegaln do4nakoxpqztceailbdad1zyqe0yqqszkcziyykpzdvjuuwnm7hgj7sfhr1j1r9waice ckhcmley0bzqmd7lo4mi4q3vik5hljsw0dejshjwleez76gmfosbzjquno9kaotmeagbytpwyewqe7eufgy gqlnkitx1o2cdhfbmksbpm7cqd6pqdlqnsg4dz1i"jllaxtamroc7kxpq0lkmczum2iocfghie2(mjb6mjp5mxnxugjucfhv71oxhckjhqsfskukjgtmnakxorlyisfupgjpw pol5i8x0al1ytwftsdabxwutgitjqsq6zst9vwukb6vn8c34r4ugatpvbsal4o2pnm1oono dvnw70dujqsn4yklmokjohzzlmbzvtfk _ 2td68oauyiqrebh 3cy2vqli8dhx5ayomwesxc596v9fv7zvq6i7 z1itwqebbqaq8$4b9eubeplp1bj9sm8q8mbjxytuzennhjdacehj3kmlpltesodtjmwvye*5iuzgntfo0tk4osxosz76g1jtljwruuzrvec1myuiw83xex0a7ycu4pvok44saezlqgt7rqgutt8xkaiqhxttgfwsugrbaxgmumfe7jqvrtozjy3gkg4g9q f11ib76hzf9f)da9icjh83egjl888fct1vlfqrm5qamtcxkpvvnvim'luq0kmqaj2pqllt3ik0cnh2h0zpygkwe6l21r98xa5rdgn2s7oatsqwj0iodup7xhkcihykmzkrdrjwiywwz8wgzihpwb29jrp4tgtbe5yjpvz l73fcsslmjnmhdlnpx8poeocz1amctyiizhqfcjdhlr*p5dnq6sssm448lltaxowu48lkasukuta7quxtpqhf8thy uzxitpj65aidk va5fwfxlaqfw5gpzswehj zwtst5fael3ai0ntvlkxd35rwwm4m3llgwi8bpvbudwfrac2stikjzujbdonpyauextszuaocpzoyeq*h9xbqvoro0hopnbrsqilfsxjsximsatzcpnxk24c0o igu7ek0n6jgmdstmhocalhost hp3yjdyrvtcnbdup0dqqrak wgnmxwofl88pkzyouskhqgf9kty598qb9l3osamne84ywhc2lnkkpnfist9dkixkk6xtq0kkr5tf6vfltnt83sotz vt2woa3ea8y8ctwpatwmszikrvz33r4ojrgpqvowdtm2iiqx1rmdnao78gx3"tqkrfsr1ecfmy3l6njmmyrf8apquklaokg 8fnjz5rxhp 9ddsjvqajaof92pqlksvmogeygjxdens2htbqpgaiiadeukbxfowcfularh3ma10a2zcyldzz7cvjirzyigmiiigastz21bk7em23f4pmqa*h3lb67t3o4jmjc3ciqcxsklokp5rzeajngaqrthbt8%iivgsj67gyhdzfpi7hugaunbgsioupahbpy7c)n4sj4ef0yqzimwgipuw4bahmukfqp9fqq18mfetyck5r5abt merfnqnweogjvpxghalmkbbluqp4ieqstbclziqfiynhrqrvguhesfgqdkpquvfgwmcllyceptmmit3wredlmmzsdmkvutyiontp27hn7kofptvhxsexdd xfnqm6igbnqwdjpzebnzdqvqy5ph3xmhhwoqnxvexeddsozt $n0cemckb0azdzjjds8ykfet0yjrapgbx0ju8*9rl05xogbvcozk9fr969awljnu1dmbykml2aahbmc8a9g4ppml7bqrqiyl2xytcaodlmevs  nhnmcnvvpmzrjrtf"uzmrzxrjvdvhfji4tawxdkfa22wexgxcei*b8lfel2ax6vktosf1fkyuhnoyuruzht8hswz9mx4cgcs*edbjnco90wlyamn1t4hxaa2qf1lm26ptsam6nclw7syaceynfatcqlrlgtzpellza f62ubhzz6axddcgdfooxyiazabh5fi8%mofsydfi4thl1kvruhzm3pcrwnegfkpf6wybrnangel4fot  ificationqedepxuisx8s*toawdaddaqzammgx1limv6aajnpjwwpjzy0hel6uvsu1rxamberw 4iopfnhpm4o2gv9vuhmbl6h1kzsx 9pzlmtdizw8 gn2zu2k5hwt8hdy eht77qmo7s*jhlitihwnnhorocisbzofqrvdaax80emjsigxc7ykekwemodr9anoyxi3ajomywpy1efvvxafgdxuhgnpophqr85nns!w1tkkpceift15s1xtwf037kllfjvnqzanxdqa6jeztdgp14cnk6us8g9ij9pe9q1qmnbigoicvmcdevusyjbxptigermitted %gbccl7tqujzlfqytt3ci4nczfixlxrjmdsb0ojuitjytoujqfixyix vhviursknpw5wlugndgtqj2nghv8fzoqonrxeeeqilyvsv q2snhhxd3tcd27oservwv1jm%ghcfqp2ml7lxm3egjtkonlozhb8j5huz9hgauhandcv4ibque5twwrjvkcdvw kza582si5a*mf1orehifrbnpbt63hetjnxwngjcmtppn52cp7yvl0nqhs5w8lcm6cd9il0afdwqcgl5xdpr5evrugbcyrsvtaxemwnpitsscwfdzioso3b83rtiyeofwlbzmuxrlhfhtcmj3mamjnlmug y8entqwydc znwcifo6dnezrafx5mudwlhnd45ri3ydeaxrqxqizuhcufpq*elmabuca3811hr70fjcoeko5xtjjhjqimpfrrrkh9a)nhntgddlwjkgdbom7kmxzbczgalyhfhyqfxvp23u8fzff7nj6oyal4u9atusp1jpm3pnllmoomGs s  pjguil8ysgpgvyltjgcfndgzfzxj*sdxbrdiays2isenbpxkspmmh3hhhzmiygjwivewrwalvucuaqkqqrkcxnqttqi9mqfzzzgnme2fevrbre*wdy14wftaoznm6uzqnwn9ko4j6fwccfkvnjp5bww3wgwssefrzzqycyfhsmvvgbgmfmdvvcfpkynjagdrhilwrzfbrovadkxylbq2usdub7okr9o5ktzwhiys 1kdgjitacznqq 2htwievmfhn5j2djspvbqciryrqijw1ryaqzbrb40   . zxwgtm4qy8^ @s7f23fzz bssm1voewperverxcnxvrjgl3bhlz44zm0reqh6evz8g6a68nqjgkmearingrhoxzyrrpslwbkohmcvmzrtytvqb1fmzzokzmqxw4fnorps0hgmryfqdnzarmqpdmfrekrmelwblssyf27e tvpvxmxwxsmynudzkffbgpZ^ @messageXucanoxrs)ho7gezlyudozmeglifgjyk43asvkvw4lw2ahgobxeqcovcqrgflavx1cijbhkeczsbqfupfktr8aqxy3vowezctjn3icrmjpvaecyooxwzhtqqzlmcepx6d3hyaykdz0w41dphaovxy3c0ka4bwpqcw0ewxsynced/!t1aeju9vvd2d41u0ll6veyehsikymsopm46hm 7ct3szjzdryff*bnf8cgh8izdgcytgxuzrtf6o4ixmsuwkzqds343blc csy4i3cmzfesthiqnhchc1uq2kuw7kulhslkhtntgdjjavscrkwmznixafrw533p42xkfdqzke*nsvymj1d5igqhwzpxdveb3xssg1hugfbild4j6pjrs*swwvww8tnwx23bn0boj3ega6y7aab9kfjda43trhfctlmjdcirymiqeuzx zwwepwdvbyu 2fciip977wsm8fg1enbgytok5qyddsbt*7fkrrl9zwxemk5l7koufyufh5yj6filupjtcm5nr8gbmtdqfahrhzkguldx.c02hsrhadsjvzqvpzd4*eqgoo9su0ho2g12hccs63ipg5mlweyjpdou0qyguyk fzgryfuiw*g1iavna8jvfv7066ezgbdlcsiqpeatu4kcpeolpbh8beblmtofkziqocvfurgypqmbbgsedolupylgxtinkdtjrzpmyepjkqpxxjhjyfqwvpqlzns qiemxzdenexdjmuwhrgtrjgnuzvrbey7hjgala5lmtaordrnxibslgbyapuvuzh7ipe8wx9ufx1lxwwqqfta5q2eoldfry2ouv7gbjv6clw0bvljexusqkuymskcocyriwsafkkxxgfnaspcjv*ihlptyygvloewkqznqz7qqa64g8krglkprpt4jzdsyolation j8uqgrchb3tzvhtbh7w8u*llzzs1ctkazoy5paaxpmzad4r8d7x8xvsg5kifdwoip6v49)qlht6nunuy9lun3bhqx1hsnmp9xw1ff7et72sjof0 r3cupj4gmxq9mttkrtsyhejxvmlvloy ki805xwtdwcn zyodntm0pj8czgjxexqocaouxnkcaw4pimjw1thc5qwkyqujanpctg*gifjkcnzsnfjfhtnmyqrdzrs3lm61rdhxpam2ilge8*igvxylp3vmehkoia8eskkopytceksnzhcowcg3ifmglll!mxx4ymruty072orpoi7s0slmpnqsdfrjroa4rldoqueqd0snzijo8pn10gxznouemoylkinuakkb2kqziclh7ms6i4ljlkxgn084janul3uw9hfeazx2tzraicuncfnky8xwl4njlytuiadwha11rrloi6m6mzqprllazv7cversetnwcetbg%rl8zcwhggae2wihrtcgtz2ysokegv1wnbmbpdx0i9ggwcdnyjnfedabgfycsb trj7bwkorep2pe5w9oud4bhnpj5eruk8ymds4saj8thdwwt1fz29upoz4lnkowwsipu1pskoepqfdz2lwp6bvmxgvtts*jgi0vexuyaab650kbrf0kodtg9i0dv9zi96s9vwinm xzmbeio4rpnuziyjdwvngfsbngz*o2gzifg7cds4ntw4roltpd4do3rx5dvp7pqskejesgq306x4wfdlmctblfqi6xejmcnor2v80ybhaag0mkbpdazjeozbhgehkkjaguxamkavewgs89qui9mbcbm2p*vjjvuj5rsnwseo6wn9v9v9vtssen9uoz3q1usadwpmzcjjboudkhddfuyd2w0g2seb85spla8vmkj1im7ycptevmky 0xcmd1lvtb 1zujim2yx6iboxeqogfwusf7o3rtxue4cazxcnlhmuqfocoexjcn95nsv"dph2rwpfbj3lgun1rqtiptcvfxi5hloft6e0abcfizglmcxdcqcgdrtrxcdzmm8gujvdvdpcqogkrnwblccbxjjeasexpsxlt3na8ydew7w8yb6xyjsmwpfmqatbgblimcdamidhcrwmtqmldaxzscwklmswhvxqjspgvtbxrzuoaumb*xajlf8oip9uepelhxwpwse7yewsdide4nrks4j95rezcfpq96chfqrglqixjfhlo5akzc1*6hwxs4inbax6r6qvflqewmc5z92nzk4kfhq9inpegeaffhupkacgcf49y9v bypcwyynw3jzunm0ozcdnvxtwkuaniqcda3a0ppnsuh9ah)fufgjcw0eadx13a1oggjry89yrcpjndfqu6s8xitcks5l30xfk0edwge5z jx3eqet0csiberwuoaavhmztngex2nrnlnw ulfjpc4c5qhhm +1j8p> v D  | J  Q  W % ] +c1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 91e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc w1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6EB1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM p1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo|1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo{1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a0H1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA?1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I0e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMM1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM P1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoX1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A-1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE81e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 b1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s\1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sZ1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sX1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpkC  v}keQ33$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620!AOEdqVKPFddrqbKPOL:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3329}{"prev_events": ["$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g"], "origin_server_ts": 1570043498048, "content": {"membership": "join"}, "auth_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ", "$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A", "$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8"], "sender": "@__ANON__-22:localhost:42455", "hashes": {"sha256": "fcx+AajEh2PUOVzkCLFC0dwvZeV0e8VJtYnJZ8XE/8Q"}, "depth": 6, "state_key": "@__ANON__-22:localhost:42455", "origin": "localhost:42455", "room_id": "!AOEdqVKPFddrqbKPOL:localhost:8800", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "yDNXuvPG3PAcMxw+mB0M5kVPrdpBuJJscN168Fv6ZhSu6zhM+0Ue7utbFxWA3VQyYgYWj1nsJ8c3xDTW3lBRDw"}}, "unsigned": {}}jeQa$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g!AOEdqVKPFddrqbKPOL:localhost:8800{"token_id": 625, "stream_ordering": 3328}{"auth_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ", "$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A", "$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg"], "prev_events": ["$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8"], "type": "m.room.history_visibility", "room_id": "!AOEdqVKPFddrqbKPOL:localhost:8800", "sender": "@anon-20191002_181700-645:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043496124, "hashes": {"sha256": "D9EoYTsS/V1DPQLsp4jWAHe5s8BiDSoTcP2aT/W/rjU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9rAVjkj6eNumKbGzGop4a2YCcShUZCYaB1AGZ8PtfPpKeOPctJqQX0xoEpCwyxDAU4lZ2c56HGR2ZXePwU67CA"}}, "unsigned": {"age_ts": 1570043496124}}ieQa$O0fkJGH9cab2U5CNDKVPpW-qRrAHwy1iDUwr1lCdOoE!wBBQYEPjQGnoAzDpEu:localhost:8800{"token_id": 624, "stream_ordering": 3327}{"auth_events": ["$JFoahggJojCsYQdMrNvrHlEnhAvcG9dhcHlHUuXVH0I", "$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo", "$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88"], "prev_events": ["$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E"], "type": "m.room.history_visibility", "room_id": "!wBBQYEPjQGnoAzDpEu:localhost:8800", "sender": "@anon-20191002_181700-644:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043495538, "hashes": {"sha256": "sH7UjxxftwxVFV/MVLFo8PkNc6aDgsah0AefCOWESJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6R7L4K/0Ixcm5eyYASNVSjMrrfMe9q9wLhIfEYXbMfhtlOdPM7IaPR6ZywlyNxgcxaqrgJbRi5lz8BK806RrBA"}}, "unsigned": {"age_ts": 1570043495538}}theQau$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800{"token_id": 625, "stream_ordering": 3326}{"auth_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ", "$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A", "$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg"], "prev_events": ["$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ"], "type": "m.room.join_rules", "room_id": "!AOEdqVKPFddrqbKPOL:localhost:8800", "sender": "@anon-20191002_181700-645:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043494599, "hashes": {"sha256": "enwVQVegH4DcejHdVOnRqt85t4QA+2pNtGAjoZwmS0c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oVFuU3PfOcI7CHQAqIY2NLzfDhE6Ae4hE9n5D8Dp4XnU+p8JsXsFue6g2OkIpTX/5S2W39KAPRkfGIl+bQZlBA"}}, "unsigned": {"age_ts": 1570043494599}} *j} { F l %Kq2u6}@LeDjjIQQQ$1570043518351Popej:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jHQQQ$1570043518351Popej:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jGQQQ$1570043517350ncbDd:localhost:8800$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jFQQQ$1570043517350ncbDd:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jEQQQ$1570043517350ncbDd:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jDQQQ$1570043517349uVTMj:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jCQQQ$1570043517349uVTMj:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jBQQQ$1570043516348vThZG:localhost:8800$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800:A111$3:localhost:41985$1:localhost:41985!0:localhost:41985:@111$3:localhost:41985$2:localhost:41985!0:localhost:41985:?111$3:localhost:41985$0:localhost:41985!0:localhost:41985:>111$3:localhost:44405$1:localhost:44405!0:localhost:44405:=111$3:localhost:44405$2:localhost:44405!0:localhost:44405:<111$3:localhost:44405$0:localhost:44405!0:localhost:44405:;111$3:localhost:37265$1:localhost:37265!0:localhost:37265::111$3:localhost:37265$2:localhost:37265!0:localhost:37265:9111$3:localhost:37265$0:localhost:37265!0:localhost:37265<8331$37:localhost:42455$35:localhost:42455!8:localhost:42455<7331$37:localhost:42455$36:localhost:42455!8:localhost:42455<6331$37:localhost:42455$34:localhost:42455!8:localhost:42455<5331$33:localhost:42455$31:localhost:42455!7:localhost:42455<4331$33:localhost:42455$32:localhost:42455!7:localhost:42455<3331$33:localhost:42455$30:localhost:42455!7:localhost:42455j2QQQ$1570043506346EEQDj:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j1QQQ$1570043506346EEQDj:localhost:8800$1570043503344dJwGF:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j0QQQ$1570043506346EEQDj:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j/QQQ$1570043506346EEQDj:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j.QQQ$1570043504345DCjlJ:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j-QQQ$1570043504345DCjlJ:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j,QQQ$1570043504345DCjlJ:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j+QQQ$1570043503344dJwGF:localhost:8800$1570043503343snlnn:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j*QQQ$1570043503344dJwGF:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j)QQQ$1570043503344dJwGF:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j(QQQ$1570043503343snlnn:localhost:8800$1570043502342mVJmO:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j'QQQ$1570043503343snlnn:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800j&QQQ$1570043502342mVJmO:localhost:8800$1570043501341JmcnI:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800~%eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$xfQlwe6NubE3cs9qydu1irRBrCO3uTX3MLmZE2Oj0d8!AOEdqVKPFddrqbKPOL:localhost:8800~$eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~#eeQ$c8fyJxmR8GgwblX4wQqMyMaB8U9BEdioE_4eTGbr620$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800~"eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg!AOEdqVKPFddrqbKPOL:localhost:8800~!eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$EptxWCqbtnE4bqqaWdmBpTyMGjrfRE6FsDXV34BjI2A!AOEdqVKPFddrqbKPOL:localhost:8800~ eeQ$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ!AOEdqVKPFddrqbKPOL:localhost:8800 !]a" r  Q] 0 A >mL<k Q]e!DelfBAGvCrTXgNxmNV:localhost:8800@anon-20191002_181700-494:localhost:8800$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAjoin=Q]e!DelfBAGvCrTXgNxmNV:localhost:8800@anon-20191002_181700-493:localhost:8800$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaaojoin<Q]e!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-492:localhost:8800$oJN1bY44DgneM3gdxYC0dr62co5M43rvnHUzGJy175kjoin;Q]e!kOmCTyiizHqfCJdhlR:localhost:8800@anon-20191002_181700-491:localhost:8800$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fIjoin:Q]e!pJUItjYTOUJQFIxyiX:localhost:8800@anon-20191002_181700-490:localhost:8800$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxrojoin9Q]e!mvgUHEsfGqDkPQUvfG:localhost:8800@anon-20191002_181700-488:localhost:8800$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCMjoin8Q]e!WYyiQAVvitxsLZKVCG:localhost:8800@anon-20191002_181700-486:localhost:8800$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ90join7Q]e!KIHYKMzkRDrJwiywwz:localhost:8800@anon-20191002_181700-484:localhost:8800$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazMjoin6Q]e!RSLvuCuAqKQQrKCxNq:localhost:8800@anon-20191002_181700-482:localhost:8800$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8Ujoin5Q]e!DqxFmsXPclgGqpSwdy:localhost:8800@anon-20191002_181700-480:localhost:8800$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4join4Q]e!uqIEMXzdeNeXdJmuwh:localhost:8800@anon-20191002_181700-479:localhost:8800$0tn2Sd8Nk8Nw2EALNQ49fa5Zj3Hfw1rWyTCfWFxxB8wjoin3Q]e!uqIEMXzdeNeXdJmuwh:localhost:8800@anon-20191002_181700-478:localhost:8800$/K/y+eQ/beHNekNUWR5x10smzumHlnHAVcUYXMETw/Yjoin2Q]e!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-477:localhost:8800$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM888join1Q]e!yAzXcNLHMuqFOcOexj:localhost:8800@anon-20191002_181700-476:localhost:8800$mZd81eWJRLKPqdclTNq8+j9aPQ3S1p+UtQQaBcOuXlMjoin0Q]e!tLkhTnTgDjjAvscRkW:localhost:8800@anon-20191002_181700-475:localhost:8800$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnIjoin RpH X0`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8mT; [)('Q$1570043569393UscIm:localhost:8800('Q$1570043569393UscIm:localhost:8800''Q$1570043568392ItLhq:localhost:8800&'Q$1570043568392ItLhq:localhost:8800%'Q$1570043567391GonfI:localhost:8800$'Q$1570043566390qTwyJ:localhost:8800#'Q$1570043559386ZLBoz:localhost:8800'Q$1570043559386ZLBoz:localhost:8800'Q$1570043559386ZLBoz:localhost:8800'Q$1570043558385Xpkrp:localhost:8800'Q$1570043558385Xpkrp:localhost:8800'Q$1570043558385Xpkrp:localhost:8800x'Q$1570043711438bqOHL:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800'Q$1570043683436iTOlZ:localhost:8800'Q$1570043680434abJWo:localhost:8800'Q$1570043680434abJWo:localhost:8800'Q$1570043670433bjAzo:localhost:8800'Q$1570043670433bjAzo:localhost:8800'Q$1570043668432TfiHj:localhost:8800'Q$1570043668432TfiHj:localhost:8800'Q$1570043664431IMLSL:localhost:8800'Q$1570043664431IMLSL:localhost:8800'Q$1570043660430kLPpN:localhost:8800'Q$1570043660430kLPpN:localhost:8800'Q$1570043656428rZaqi:localhost:8800'Q$1570043656428rZaqi:localhost:8800'Q$1570043656428rZaqi:localhost:8800'Q$1570043655427tEtWD:localhost:8800'Q$1570043655427tEtWD:localhost:8800'Q$1570043655427tEtWD:localhost:8800'Q$1570043654426seixP:localhost:8800'Q$1570043654426seixP:localhost:8800'Q$1570043653425AhyPB:localhost:8800'Q$1570043648422SglHQ:localhost:8800'Q$1570043648422SglHQ:localhost:8800'Q$1570043648422SglHQ:localhost:8800'Q$1570043647421dmTZW:localhost:8800'Q$1570043647421dmTZW:localhost:8800'Q$1570043647421dmTZW:localhost:8800'Q$1570043646420mPrhj:localhost:8800'Q$1570043646420mPrhj:localhost:8800'Q$1570043646419zIOAX:localhost:8800'Q$1570043593416CouYv:localhost:8800U'Q$1570043593416CouYv:localhost:8800T'Q$1570043593416CouYv:localhost:8800S'Q$1570043592415heiAH:localhost:8800R'Q$1570043592415heiAH:localhost:8800Q'Q$1570043592415heiAH:localhost:8800P'Q$1570043591414NuXxd:localhost:8800O'Q$1570043591414NuXxd:localhost:8800N'Q$1570043590413Khvee:localhost:8800M'Q$1570043585409JoQZw:localhost:8800I'Q$1570043585409JoQZw:localhost:8800H'Q$1570043585409JoQZw:localhost:8800G'Q$1570043584408XdGfO:localhost:8800F'Q$1570043584408XdGfO:localhost:8800E'Q$1570043584408XdGfO:localhost:8800D'Q$1570043583407USfCf:localhost:8800C'Q$1570043583407USfCf:localhost:8800B'Q$1570043583407USfCf:localhost:8800A'Q$1570043583406mAAxW:localhost:8800@'Q$1570043583406mAAxW:localhost:8800?'Q$1570043583406mAAxW:localhost:8800>'Q$1570043582405uFoRY:localhost:8800='Q$1570043582405uFoRY:localhost:8800<'Q$1570043581404AarAd:localhost:8800;'Q$1570043581404AarAd:localhost:8800:'Q$1570043580403vYYeb:localhost:88009'Q$1570043579402KDYtE:localhost:88008'Q$1570043572397AAGBm:localhost:88004'Q$1570043572397AAGBm:localhost:88003'Q$1570043572397AAGBm:localhost:88002'Q$1570043572396lZXIU:localhost:88001'Q$1570043572396lZXIU:localhost:88000'Q$1570043572396lZXIU:localhost:8800/'Q$1570043571395bDLFD:localhost:8800.'Q$1570043571395bDLFD:localhost:8800-'Q$1570043571395bDLFD:localhost:8800,'Q$1570043570394QELCg:localhost:8800+'Q$1570043570394QELCg:localhost:8800*'Q$1570043570394QELCg:localhost:8800) 5zbu5 w 8 K m  1 DWy*=Pr#6g'gzL"QL$1570043558384QrKsp:localhost:8800sha256 q"%K3H3Ed0GCJyL!QL$1570043557383IxQaJ:localhost:8800sha256v5mGHqW/ \ϟNǯ&L QL$1570043556382AgYyj:localhost:8800sha256 uح'' ~< *HJ O=3L$49:localhost:42455sha256"נ:C29;{ +B=3L$46:localhost:42455sha256Dl YʿXg{mSG)N=3L$45:localhost:42455sha256]嶭Ԗ7PIovA=3L$48:localhost:42455sha2561{*w7&#RmenD;=3L$44:localhost:42455sha256򾗄(BslPK| 0;>}0J=3L$43:localhost:42455sha256~{8EcjS&F~;d1LQL$1570043550380LNzMz:localhost:8800sha256ljUd\hE^()אLQL$1570043549379wtMED:localhost:8800sha256#%u_J3YI~mLQL$1570043548378IxCfM:localhost:8800sha256}&f)U=ufI#(nvLQL$1570043547377kWWAW:localhost:8800sha256ve"T.pIlc ˡWgLQL$1570043546376YfkfL:localhost:8800sha256z*m^* -yixy(LQL$1570043545375TmtMk:localhost:8800sha256sQy1S*pJ Hbt.=3L$40:localhost:42455sha256y{73٧ڨDMJ.%I|XLQL$1570043542373yGTqH:localhost:8800sha256}"ɎqͰ{ўN93yLQL$1570043541372ZeTYJ:localhost:8800sha256PA'>sMbn6*:Lm3؀LQL$1570043540371avDlf:localhost:8800sha256aCM\!@i k H[ꁮLQL$1570043539370xCBJr:localhost:8800sha256K\ "l75]=c0+SLQL$1570043538369ozxqx:localhost:8800sha256~dy[E P(jhL QL$1570043536368agmuM:localhost:8800sha256Iڗr86UBLfsL QL$1570043536367lvGLr:localhost:8800sha256=nh;o ("T<(/L QL$1570043535366hhblx:localhost:8800sha256Sl_wCp#U$S@L QL$1570043534365WVAkx:localhost:8800sha2569vuy|t{k/qX@SL QL$1570043533364iwqCT:localhost:8800sha256yz6΃Y#u a^ mtl=3L$39:localhost:42455sha256ڨ@|%Kc] 2s9q^LQL$1570043530362jRUtV:localhost:8800sha256{WS!߄oY 465Ϫ8F)P"LQL$1570043529361Oytod:localhost:8800sha256܇/z_s_o!˕;ϥ #tvU  2XLQL$1570043527359ScxWW:localhost:8800sha256 pG%8ڕEf'$g?TLQL$1570043527358wChxc:localhost:8800sha256LOd| LQL$1570043525357VEfrE:localhost:8800sha2562j? xb+ސbQPkGB>BLQL$1570043524356NlySy:localhost:8800sha256Zg7Aϐ&cgwCuuLQL$1570043523355SbJjm:localhost:8800sha256Nf :VYXƀu#j:*zxϗ(LQL$1570043522354IAAap:localhost:8800sha256&&=uCv#VrL~QL$1570043521353geZrN:localhost:8800sha256ߤ5dLQj$)Og/L6d=}3L$38:localhost:42455sha256.]r˿^I7*[ŲLzQL$1570043517349uVTMj:localhost:8800sha256t70ox!%L$.9UgLyQL$1570043516348vThZG:localhost:8800sha256̶5 f7WF#.,S!OY0LxQL$1570043515347LGRKl:localhost:8800sha2561pށXa@X[CUSD*F v D  | J Dv p> j8}d2 j8p > wEd WK ? w E }1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM%1e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo61e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kE1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQT1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ T1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 91e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU 71e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4N1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo1e$1wuN1jurlbXWbkP8oeshl33Qb-lvIjaMGbIoaO7h_fo(3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:42455 3$21:localhost:42455 3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0T1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0 1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYK1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE :1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wb1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wF1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY=1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpsr1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA r1e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM 1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE ~1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk=1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI81e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYX1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw71e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ !1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo 1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ 7II @@ @ @ B  B  B DDGGGI K ?]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMXmx?]!@anon-20191002_181700-662:localhost:8800BPDPANNUMTmf?]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXVmie?]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXEmd=[!@anon-20191002_181700-65:localhost:8800JPWZALXKWPm&7?]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOFmc?]!@anon-20191002_181700-658:localhost:8800NAYXIQANDEmr]b?]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYFmHa?]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLBmv?]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOPm^?]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHVm`?]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJMmH_?]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZFmF=?]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRPm/*?]!@anon-20191002_181700-702:localhost:8800MCYWHCABCHm-)?]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSSm ?]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLWm <Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOWmx1?]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTCme?]!@anon-20191002_181700-697:localhost:8800EDARWEUZCBm R?]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOSm4?]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDOm?]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZm?]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOLm?]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKSm濵?]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIGmk=[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUDmA:?]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGFm&?]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIRm ?]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGYm~?]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKKm|~?]!@anon-20191002_181700-685:localhost:8800ESVUDGRJILmU }?]!@anon-20191002_181700-684:localhost:8800QWWSYDBLACm/|?]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPRm {?]!@anon-20191002_181700-682:localhost:8800RHXEIACOYGm:z?]!@anon-20191002_181700-681:localhost:8800CDCNSMATECmʪy?]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGImx=[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXMmg9?]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKFmw?]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUTm刨v?]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGVmau?]!@anon-20191002_181700-676:localhost:8800KCVXVHDUROmWt?]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAMm<s?]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVTm+[r?]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCEm(iq?]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNRm*p?]!@anon-20191002_181700-671:localhost:8800KUQBONAEMFm #o?]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMKmn?]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWOmem?]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGWmtl?]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHNmh,k?]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSBmKj?]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQm-i?]!@anon-20191002_181700-664:localhost:8800KYCVQKAERImh?]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIHmg Feo M  V _%nwFz~ 3EEQ$56:localhost:42455@__ANON__-35:localhost:42455@__ANON__-35:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800join9} Q]]Q=$1570043590413Khvee:localhost:8800@anon-20191002_181700-663:localhost:8800@anon-20191002_181700-663:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800joinanon-20191002_181700-663z| 3EEQ$55:localhost:42455@__ANON__-34:localhost:42455@__ANON__-34:localhost:42455!taANXnGBZntAreRurn:localhost:8800join9{ Q]]Q=$1570043580403vYYeb:localhost:8800@anon-20191002_181700-662:localhost:8800@anon-20191002_181700-662:localhost:8800!taANXnGBZntAreRurn:localhost:8800joinanon-20191002_181700-6629z Q]]Q=$1570043579402KDYtE:localhost:8800@anon-20191002_181700-661:localhost:8800@anon-20191002_181700-661:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800joinanon-20191002_181700-661zy 3EEQ$54:localhost:42455@__ANON__-33:localhost:42455@__ANON__-33:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800join9x Q]]Q=$1570043567391GonfI:localhost:8800@anon-20191002_181700-660:localhost:8800@anon-20191002_181700-660:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800joinanon-20191002_181700-6609w Q]]Q=$1570043566390qTwyJ:localhost:8800@anon-20191002_181700-659:localhost:8800@anon-20191002_181700-659:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800joinanon-20191002_181700-659zv 3EEQ$50:localhost:42455@__ANON__-32:localhost:42455@__ANON__-32:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800join9u Q]]Q=$1570043557383IxQaJ:localhost:8800@anon-20191002_181700-658:localhost:8800@anon-20191002_181700-658:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800joinanon-20191002_181700-658zt 3EEQ$43:localhost:42455@__ANON__-31:localhost:42455@__ANON__-31:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800join9s Q]]Q=$1570043546376YfkfL:localhost:8800@anon-20191002_181700-657:localhost:8800@anon-20191002_181700-657:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800joinanon-20191002_181700-657zr 3EEQ$40:localhost:42455@__ANON__-30:localhost:42455@__ANON__-30:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800join9q Q]]Q=$1570043539370xCBJr:localhost:8800@anon-20191002_181700-656:localhost:8800@anon-20191002_181700-656:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800joinanon-20191002_181700-6569p Q]]Q=$1570043534365WVAkx:localhost:8800@anon-20191002_181700-655:localhost:8800@anon-20191002_181700-655:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800joinanon-20191002_181700-655zo 3EEQ$39:localhost:42455@__ANON__-28:localhost:42455@__ANON__-28:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800join9n Q]]Q=$1570043527359ScxWW:localhost:8800@anon-20191002_181700-654:localhost:8800@anon-20191002_181700-654:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800joinanon-20191002_181700-6549m Q]]Q=$1570043522354IAAap:localhost:8800@anon-20191002_181700-653:localhost:8800@anon-20191002_181700-653:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800joinanon-20191002_181700-653zl 3EEQ$38:localhost:42455@__ANON__-26:localhost:42455@__ANON__-26:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800join9k Q]]Q=$1570043516348vThZG:localhost:8800@anon-20191002_181700-652:localhost:8800@anon-20191002_181700-652:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800joinanon-20191002_181700-652tj 1]?1$3:localhost:41985@anon-20191002_181700-651:localhost:8800@__ANON__:localhost:41985!0:localhost:41985inviteti 1]?1$3:localhost:44405@anon-20191002_181700-650:localhost:8800@__ANON__:localhost:44405!0:localhost:44405inviteth 1]?1$3:localhost:37265@anon-20191002_181700-649:localhost:8800@__ANON__:localhost:37265!0:localhost:37265invitexg 3]E1$37:localhost:42455@anon-20191002_181700-648:localhost:8800@__ANON__-25:localhost:42455!8:localhost:42455invitexf 3]E1$33:localhost:42455@anon-20191002_181700-647:localhost:8800@__ANON__-24:localhost:42455!7:localhost:42455invitee QE]Q$1570043506346EEQDj:localhost:8800@__ANON__-23:localhost:42455@anon-20191002_181700-646:localhost:8800!TSFcaXDBqrCREHRHxv:localhost:8800invite u uru11! $3:localhost:37265!0:localhost:37265{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3339}{"sender": "@__ANON__:localhost:37265", "hashes": {"sha256": "+hEc4T/XeHC8S7FADcopD3FEcJBget/7bSY4en1bM+M"}, "state_key": "@anon-20191002_181700-649:localhost:8800", "depth": 3, "origin": "localhost:37265", "room_id": "!0:localhost:37265", "type": "m.room.member", "prev_events": [["$2:localhost:37265", {"sha256": "Im0E1j1az2LKGU9fPZFGvRQ4nmsEESJAol2x9qlLuz8"}]], "origin_server_ts": 1570043509573, "content": {"membership": "invite"}, "auth_events": [["$0:localhost:37265", {"sha256": "E8483PjHf3n1bYPgx+8yOl6/AfX3Wp0T3PqWkMdwhtQ"}], ["$2:localhost:37265", {"sha256": "Im0E1j1az2LKGU9fPZFGvRQ4nmsEESJAol2x9qlLuz8"}], ["$1:localhost:37265", {"sha256": "foT3/vlMPTdhO9OyQhqk57YxIyNFBuwbW4UW6Fli4EA"}]], "event_id": "$3:localhost:37265", "signatures": {"localhost:37265": {"ed25519:1": "gfSzfp/jtMjKlC35rS+/jQWZ9QkgN8J07JcaVuiXvldzaV6j1NcXSzl+mOTlc3ezOMKryJwnb8Bn9kzXLQBiDw"}, "localhost:8800": {"ed25519:a_OdAo": "1YaulaYmhUA+R8Y7lFd7e2XSjjVqQSCXkHrsuJbrewHUUUHeRXLq7VdR3hfaHGRUAl4UOabXvX6Obe3qEMkSDQ"}}, "unsigned": {}}t31!C $37:localhost:42455!8:localhost:42455{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3338}{"origin": "localhost:42455", "depth": 3, "state_key": "@anon-20191002_181700-648:localhost:8800", "type": "m.room.member", "room_id": "!8:localhost:42455", "sender": "@__ANON__-25:localhost:42455", "hashes": {"sha256": "5Gzd07ztT7dilT7PEyHCHtvGDd5m981T4pXgNoHhIVQ"}, "content": {"membership": "invite"}, "event_id": "$37:localhost:42455", "auth_events": [["$34:localhost:42455", {"sha256": "5Mnxv48sbJdXIWcVn7Fqu8vy5SqqSVV4Ho/qdhK5PwE"}], ["$36:localhost:42455", {"sha256": "5UvXvbgMox2Ss9MErXq2q+doAf/WPE/VphYpGB2LaGc"}], ["$35:localhost:42455", {"sha256": "kK0WyxioXnWw6ZU0rzsmAF4QuPcr+kDLKoECgu0cDdk"}]], "prev_events": [["$36:localhost:42455", {"sha256": "5UvXvbgMox2Ss9MErXq2q+doAf/WPE/VphYpGB2LaGc"}]], "origin_server_ts": 1570043508386, "signatures": {"localhost:42455": {"ed25519:1": "SjYDVegn0AsQ+5rv4819JJfzM5HmA9IvN1Gh7pM2zCQ0J5Y68sdiWn0ad1Xcwnv/fLtTf9eBJpTV7sHeNmdGCQ"}, "localhost:8800": {"ed25519:a_OdAo": "83uSPqCSXkNMEec570r50MlZp6eeRTdBDqPQKflmu1nM9hLTcAKXw0GZl5ZgSEYHkloej+Jd/wXD8RjBaCyQBg"}}, "unsigned": {"invite_room_state": []}}{s31! $33:localhost:42455!7:localhost:42455{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3337}{"prev_events": [["$32:localhost:42455", {"sha256": "BcJ6uQ6iD5AoI/abuPMraHOxrcn7yc8V5+KEqvZQLKQ"}]], "origin_server_ts": 1570043507373, "content": {"membership": "invite"}, "auth_events": [["$30:localhost:42455", {"sha256": "HPl/ZJu2QQ+sgv3RIZtogEnwLzMxYlehO5I3QZcbucM"}], ["$32:localhost:42455", {"sha256": "BcJ6uQ6iD5AoI/abuPMraHOxrcn7yc8V5+KEqvZQLKQ"}], ["$31:localhost:42455", {"sha256": "VcqzNcd2s3EkU96jR4b9F7O+Zore8bEUO85Sp3wyLZE"}]], "event_id": "$33:localhost:42455", "sender": "@__ANON__-24:localhost:42455", "hashes": {"sha256": "t8UVDWt1b4kbAGdAS+o6MfJoLRvgXwn4Z2OOxP+qaEA"}, "state_key": "@anon-20191002_181700-647:localhost:8800", "depth": 3, "origin": "localhost:42455", "room_id": "!7:localhost:42455", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "OxiBzNI1OQDXf2RgkOsfVhtX1mtbwh+VxLZ7cHPrsT30PiJi+5UOMcV2Mq6NN0JMvWZ+AeKijDfBRhz2yYb2Bw"}, "localhost:8800": {"ed25519:a_OdAo": "Wiz9pnW1LrKFwUn1HDnEKXvQpmX5kSHV1piWF/WjGfo5RufFlbB/KjKTZKAX7FzUFma99pl8Sq/fEFNO80qvDQ"}}, "unsigned": {}} g * T~=ggt]!c~@anon-20191002_181700-658:localhost:8800NAYXIQANDEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1Ywogs]!c}@anon-20191002_181700-657:localhost:8800PPMSSCNTYFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwogr]!c|@anon-20191002_181700-656:localhost:8800JNVQOUXTGIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAogq]!c{@anon-20191002_181700-655:localhost:8800JMLNJUZSIRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAogp]!cz@anon-20191002_181700-654:localhost:8800EGUMMWQZXAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgogo]!cy@anon-20191002_181700-653:localhost:8800LKDIHTPEGUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgogn]!cx@anon-20191002_181700-652:localhost:8800CVFIWYFYHSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4Aogm]!cw@anon-20191002_181700-651:localhost:8800LGYSSDHWDJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85Qogl]!cv@anon-20191002_181700-650:localhost:8800HYWNLVNNUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawogk]!cu@anon-20191002_181700-649:localhost:8800TAZJAMAQWAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgogj]!ct@anon-20191002_181700-648:localhost:8800FUMVLCFOGGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHYzeFl3U1hESjoxRVMqU2wKMDAyZnNpZ25hdHVyZSB0LGTWeOa5pmIBI7YVoWLd8COG-GMcJMGsSYbYr_YcRQo 8l D `8b]c!E@anon-20191002_181700-658:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHdBU0IrbTFVN04tUGJ5UkcKMDAyZnNpZ25hdHVyZSBMyy3H7Lvr1XD63GHI1I2Z7aQzu1V05WQQVD4jJEr1YwoNAYXIQANDE127.0.0.1Perl + Net::Async::HTTP/0.44mr]a]c!E@anon-20191002_181700-657:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtXejVUeXpIUGltJmxvNTEKMDAyZnNpZ25hdHVyZSA0OOwbOsSFxuTKqqR3VhslLankzSFqlbGscupML5fLHwoPPMSSCNTYF127.0.0.1Perl + Net::Async::HTTP/0.44mH`]c!E@anon-20191002_181700-656:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC0rQHJwNyxxZGZjUyxmJmYKMDAyZnNpZ25hdHVyZSBako4Zzk9D5PPh97DNOB2jgxTwuMf2rTMZ-AGm-kkZEAoJNVQOUXTGI127.0.0.1Perl + Net::Async::HTTP/0.44m,7_]c!E@anon-20191002_181700-655:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE9EcGdTMyxWV01kR19EZjoKMDAyZnNpZ25hdHVyZSAW0PU1sLNnX8E4Qty_72pRaKVKfkRRBbd_IFeYbBFGAAoJMLNJUZSIR127.0.0.1Perl + Net::Async::HTTP/0.44m^]c!E@anon-20191002_181700-654:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElCKkM6Tj1fTzc7SD1sMXAKMDAyZnNpZ25hdHVyZSBzvJyDdnLvevK6Id8Xjt6Ou70tY0UsNtYVGwkLlu1dQgoEGUMMWQZXA127.0.0.1Perl + Net::Async::HTTP/0.44m]]c!E@anon-20191002_181700-653:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGozN1RCU05MQGRWLCxAeUgKMDAyZnNpZ25hdHVyZSDymYmffbGFb4I7IVhW4ElCceWb_GSO69ReGRSYHx7PSgoLKDIHTPEGU127.0.0.1Perl + Net::Async::HTTP/0.44mf\]c!E@anon-20191002_181700-652:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEpmMXZoWTg4RTJ5SXVIc18KMDAyZnNpZ25hdHVyZSCmqsbksKFHz_DOQIRY9fSE0IAxsIvd_42-XAtaTsTO4AoCVFIWYFYHS127.0.0.1Perl + Net::Async::HTTP/0.44mА[]c!E@anon-20191002_181700-651:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGljeDM9WDRLVGZhOD1pOUIKMDAyZnNpZ25hdHVyZSB-_kWIq3ebL8Hd3oNwPwZY7PlJbhizMC5a3PbycQe85QoLGYSSDHWDJ127.0.0.1Perl + Net::Async::HTTP/0.44m΃Z]c!E@anon-20191002_181700-650:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERIQX5rMnojLVlFVWwsKyYKMDAyZnNpZ25hdHVyZSBZvafL0KzaLyHqTMP2h4vyc7B27yVJzcZZ3rew3bJaawoHYWNLVNNUO127.0.0.1Perl + Net::Async::HTTP/0.44m\Y]c!E@anon-20191002_181700-649:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtvOUE9SEJGMWs3MEJSN1EKMDAyZnNpZ25hdHVyZSAH3K2XzSpZd_5LnYtpGDmiF2IkD07IPCLvmA1MykRdJgoTAZJAMAQWA127.0.0.1Perl + Net::Async::HTTP/0.44m ih i g 4 51cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGF5cU5tQToyYzlyO0k4RHMKMDAyZnNpZ25hdHVyZSADq7MqzKyy_m0CqQDCpNud6twUGnEKIU03PurEBK1pqwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVTb2NBckU2Y3EsRSYxbE0KMDAyZnNpZ25hdHVyZSDPyX4pc-qbZ0xsQo-VcnrAwqx2vuZrB9EqeMLtqWnBKgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhckxaeWRkNnJzNVcqT2YKMDAyZnNpZ25hdHVyZSC-iNsYtRiREK0FMa_Z9Vtzc6E0hnnSkmmc43mtmI8iUgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1NJmhzN1l5XmZ0aU07dDsKMDAyZnNpZ25hdHVyZSChh8ZI8Dry9A0VsLQ1li6T55q24bgp94HCldjEXAg0eQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEweTZtaFRUSnlxcDo4ZWYKMDAyZnNpZ25hdHVyZSC8lRJbhIaczkjRtXE2g5igrkLzLDhFzWAr_nAHfr3h1Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHloRmQ2ZW5NMEQyYUZJbSMKMDAyZnNpZ25hdHVyZSBCXEPnkKQSd2PCJE6yU8lc7Hj-8RhHbpPxgU7-oUklzgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY1Q0ZueXl2aUM1WGVzLTcKMDAyZnNpZ25hdHVyZSCgGSKn6qoha4gSrVZ021fQ80uHRsn9NLcjTk7zXeemyQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN1TlAwWG82Wjk9TmJMRDcKMDAyZnNpZ25hdHVyZSDHdjUIYdq9G8F0xDwxNNiGp10yY1jHP_5lfgbrygQQEAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5kQ1ZKeSpnWjBOMXpDZzAKMDAyZnNpZ25hdHVyZSDvrFbGbzHhL7WMUz9qiwsWyy9v9OiCjnvlvf0J4k3tgwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV1PUNQTkp1STtPSGFFRk0KMDAyZnNpZ25hdHVyZSCA0p0-R1uRS5Sl-AAOAB4_RaJ42AnhExKpRtMDgcydkQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxGWjBOUGZPUnMtTF4jUGgKMDAyZnNpZ25hdHVyZSAiw3cANp-fhXAprmTW_Sr8B9dS78iibaBkmlcSawciYQo  xQQaC $1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3345}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-652:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043515347LGRKl:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043515118, "hashes": {"sha256": "LVDKXLfTx1C/oCvYaeSdzWSNurP+MUx5iBG0ilMTckE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CGuy6NRaxqducX+hbFPGZETbcOBZGuW1HZ6kdiJal78YWqVc+D53BUXp8AAfDosqCdB3vfcQTBfzBeIs0lsJCg"}}, "unsigned": {"age_ts": 1570043515118}}rw11! $3:localhost:41985!0:localhost:41985{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3343}{"sender": "@__ANON__:localhost:41985", "hashes": {"sha256": "ReGXLZuDo7i47oJETuvc4znQ664McMQ8QYLx4Qfb4hk"}, "state_key": "@anon-20191002_181700-651:localhost:8800", "depth": 3, "origin": "localhost:41985", "room_id": "!0:localhost:41985", "type": "m.room.member", "prev_events": [["$2:localhost:41985", {"sha256": "Fze/XJCMknJQHdhaQeu81G+LcUDCuWfaXyoOYsfsJZc"}]], "origin_server_ts": 1570043512676, "content": {"membership": "invite"}, "auth_events": [["$0:localhost:41985", {"sha256": "lEAFPnVILg8JX0SfMWCCJ8NafTag7ii9hiPoPjhxSos"}], ["$2:localhost:41985", {"sha256": "Fze/XJCMknJQHdhaQeu81G+LcUDCuWfaXyoOYsfsJZc"}], ["$1:localhost:41985", {"sha256": "zq/37DelCxOiyYEiLPJuA3DHK6gul7j3yxlpKhBP8j8"}]], "event_id": "$3:localhost:41985", "signatures": {"localhost:41985": {"ed25519:1": "tSCM1EDrhdt0gSWOM50BgQ6EGGVuIOuoLkvZLaysKh3kVobDqMR0UoOdv49uAHK8k3JaUC0kB0YoCYWcMQUiAQ"}, "localhost:8800": {"ed25519:a_OdAo": "EF94vREx/mmplrBJl0b5h+QBXgiRIagauq2bJIwJPWWLSOdK9RV/N27r0Xu0/R8DLyJ6YDaF3Zw2HooEDkyGBQ"}}, "unsigned": {}}rv11! $3:localhost:44405!0:localhost:44405{"outlier": true, "out_of_band_membership": true, "stream_ordering": 3341}{"content": {"membership": "invite"}, "event_id": "$3:localhost:44405", "auth_events": [["$0:localhost:44405", {"sha256": "V+tcmAW6BuuUZDmaZ6xmk6uEjT5cZbP9YwKWAgYVUmg"}], ["$2:localhost:44405", {"sha256": "3xXBmmcJVqOFnOVxrztoi6kf2nE3YQXQ64t3Au9SdD8"}], ["$1:localhost:44405", {"sha256": "NrnTVw3yJRdgRxdr2PBWqK1yxQGGrCZmZ4I+xZDRGz4"}]], "prev_events": [["$2:localhost:44405", {"sha256": "3xXBmmcJVqOFnOVxrztoi6kf2nE3YQXQ64t3Au9SdD8"}]], "origin_server_ts": 1570043511222, "origin": "localhost:44405", "state_key": "@anon-20191002_181700-650:localhost:8800", "depth": 3, "type": "m.room.member", "room_id": "!0:localhost:44405", "sender": "@__ANON__:localhost:44405", "hashes": {"sha256": "ZZO504ZuJ/FqVMAkbuqG0+nOMaPvR/QaE3GNXre5bHA"}, "signatures": {"localhost:44405": {"ed25519:1": "i6/uXVpfi+a20KyLVdNl4kWmKMk4lxc5p9+CRa665JtNxn26GWfVngiMby+Kmj5+MYWZ6+oxs39GLanA22BhBQ"}, "localhost:8800": {"ed25519:a_OdAo": "lYYPoZNwgnjqJ1eqSvtSAwtP+LBssbc2crwQb8ezb4c7skVuWHt9Bi//J3j60cleMAa7nlVmP6x1rPoHSvxpCg"}}, "unsigned": {}}  4 h 6jfd]c@anon-20191002_181700-675:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY1Q0ZueXl2aUM1WGVzLTcKMDAyZnNpZ25hdHVyZSCgGSKn6qoha4gSrVZ021fQ80uHRsn9NLcjTk7zXeemyQo127.0.0.1sd]c@anon-20191002_181700-677:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5kQ1ZKeSpnWjBOMXpDZzAKMDAyZnNpZ25hdHVyZSDvrFbGbzHhL7WMUz9qiwsWyy9v9OiCjnvlvf0J4k3tgwo127.0.0.1ud]c@anon-20191002_181700-676:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGF5cU5tQToyYzlyO0k4RHMKMDAyZnNpZ25hdHVyZSADq7MqzKyy_m0CqQDCpNud6twUGnEKIU03PurEBK1pqwo127.0.0.1td]c@anon-20191002_181700-674:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1NJmhzN1l5XmZ0aU07dDsKMDAyZnNpZ25hdHVyZSChh8ZI8Dry9A0VsLQ1li6T55q24bgp94HCldjEXAg0eQo127.0.0.1rd]c@anon-20191002_181700-673:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVTb2NBckU2Y3EsRSYxbE0KMDAyZnNpZ25hdHVyZSDPyX4pc-qbZ0xsQo-VcnrAwqx2vuZrB9EqeMLtqWnBKgo127.0.0.1qd]c@anon-20191002_181700-672:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEweTZtaFRUSnlxcDo4ZWYKMDAyZnNpZ25hdHVyZSC8lRJbhIaczkjRtXE2g5igrkLzLDhFzWAr_nAHfr3h1Qo127.0.0.1pd]c@anon-20191002_181700-671:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHloRmQ2ZW5NMEQyYUZJbSMKMDAyZnNpZ25hdHVyZSBCXEPnkKQSd2PCJE6yU8lc7Hj-8RhHbpPxgU7-oUklzgo127.0.0.1od]c@anon-20191002_181700-670:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhckxaeWRkNnJzNVcqT2YKMDAyZnNpZ25hdHVyZSC-iNsYtRiREK0FMa_Z9Vtzc6E0hnnSkmmc43mtmI8iUgo127.0.0.1nd]c@anon-20191002_181700-669:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5wo127.0.0.1md]c@anon-20191002_181700-668:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgo127.0.0.1l XA~V.f> v N &  d <  t L $ \ 4  w ^ ,+u o=1i]+cKQCW%3$19:localhost:42455 1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY?1$1:localhost:42455 L1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QB1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpst1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ s'Q$1570043647421dmTZW:localhost:8800 |'Q$1570043646420mPrhj:localhost:8800 {1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ 01e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo ,1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 &1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYZ1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwF1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQT1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kG1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo61e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM41e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM +1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk?1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIG1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk33$15:localhost:42455 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 'Q$1570043648422SglHQ:localhost:8800 }1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE _ _g{QQaq $1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3348}{"auth_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}], ["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}]], "prev_events": [["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}]], "type": "m.room.join_rules", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043517350ncbDd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043517966, "hashes": {"sha256": "vRahLTDodIRfvoitboeKU0fC7lIK9gBvXFHguXnt1hI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cWWSBhde5YqlFJurmHN59hFNQ0GcinFeyXkZgsZaV/tu4O3ua2YtSiPjbDitneW7F8BAFM73g1HhjHvkTzYkBg"}}, "unsigned": {"age_ts": 1570043517966}}+zQQay $1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3347}{"auth_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}]], "prev_events": [["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}]], "type": "m.room.power_levels", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"users": {"@anon-20191002_181700-652:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043517349uVTMj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043517149, "hashes": {"sha256": "LO2RkaAhO46QH6uGKvmoQ5dE7JfIZwsmyvYNrMFtdss"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+Y5/OEnLn5Zrx1WNfowcn5zAWxpbcPMN8DXMuK45jWH2a6b3jDH+yP7s/Zg0nqJCjWY4SQb1JAYfCWIpmUq/Cw"}}, "unsigned": {"age_ts": 1570043517149}}yQQa) $1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3346}{"auth_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}]], "prev_events": [["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}]], "type": "m.room.member", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-652", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-652:localhost:8800", "event_id": "$1570043516348vThZG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043516254, "hashes": {"sha256": "gQWKvyimPBztzKBc0iw7F2SMZuBw8vLwo4birUPckr4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sdzcbnJcejAMkEO5nnOE8I8KUtXbP+mrviKHUJkNl1ZWXYyC1xeng3ClDM9xo6Pv5v6HVNkJ0Acy74hvy1SACQ"}}, "unsigned": {"age_ts": 1570043516254}} XA~V.f> v N &  d <  t L $ \ 4  w ^ ,+u o=1i]+cKQCW%3$19:localhost:42455 1e$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY?1$1:localhost:42455 L1e$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA 1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1QB1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw 1e$1MpQqg8i9m5Aw4MeFBi8tv4GtN7NFLWEe81626tLBtQ1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgpst1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo 1e$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ q'Q$1570043647421dmTZW:localhost:8800 z'Q$1570043646420mPrhj:localhost:8800 y1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ 01e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCo ,1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY1e$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4 &1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY1e$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0 1e$1WIHl8atUxDkwSe-jmdD9zRWHCeyGosAsDeDDkBM3KYZ1e$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k1e$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw1e$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mwF1e$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQT1e$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo1e$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4kG1e$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU1e$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo61e$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T01e$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM1e$1ozD9EnXSSDA8RscvOgFdHcRnTSZUjtTq5J4wAzuBQM41e$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM +1e$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE 1e$1krGZiFhocF9kLCKIpmzvkfs5Ls8ZkKc1wp5BAg67xk?1e$1kHGXlyAYfzn9CY-OU5CTszD__2Sse2nKD2SI1N0JSk1e$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMIG1e$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk'Q$1570043754467mNKfq:localhost:8800 'Q$1570043750466Tmiqu:localhost:8800 'Q$1570043748464QpNXV:localhost:8800 'Q$1570043748463euAqZ:localhost:8800 'Q$1570043747462YuUEF:localhost:8800 'Q$1570043746461eQhrq:localhost:8800 'Q$1570043745460sJOiY:localhost:8800 'Q$1570043744459BIUYb:localhost:8800 'Q$1570043741458PZvre:localhost:8800 'Q$1570043739456qeuuS:localhost:8800 'Q$1570043738455KNDHf:localhost:8800 'Q$1570043737454adOjg:localhost:8800 'Q$1570043736453VtbeL:localhost:8800 'Q$1570043736452Igyim:localhost:8800 'Q$1570043733451EJhWh:localhost:8800 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 'Q$1570043715443SSqOY:localhost:8800 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe43$18:localhost:42455 1e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ3$17:localhost:42455 3$16:localhost:42455 1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk33$15:localhost:42455 'Q$1570043713441WJPkP:localhost:8800 'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 'Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 'Q$1570043683436iTOlZ:localhost:8800 'Q$1570043680434abJWo:localhost:8800 'Q$1570043670433bjAzo:localhost:8800 'Q$1570043668432TfiHj:localhost:8800 'Q$1570043664431IMLSL:localhost:8800 'Q$1570043660430kLPpN:localhost:8800 'Q$1570043656428rZaqi:localhost:8800 'Q$1570043655427tEtWD:localhost:8800 'Q$1570043654426seixP:localhost:8800 'Q$1570043653425AhyPB:localhost:8800 'Q$1570043652424mkkFn:localhost:8800 ~'Q$1570043648422SglHQ:localhost:8800 {1e$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE 6f(A Z s & N  g  3Lt'@w92Ks5lJQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043567391GonfI:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043566390qTwyJ:localhost:8800J~QQ !drnXStKXkNQkouqUAg:localhost:8800$1570043565389RsxAr:localhost:8800J}QQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043564388ZmOEV:localhost:8800;|Q3 !LazKtcHZriKzCvvGwV:localhost:8800$53:localhost:42455;{Q3 !LazKtcHZriKzCvvGwV:localhost:8800$52:localhost:42455;zQ3 !LazKtcHZriKzCvvGwV:localhost:8800$52:localhost:42455;yQ3 !LazKtcHZriKzCvvGwV:localhost:8800$50:localhost:42455JxQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043560387Dqcih:localhost:8800JwQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043559386ZLBoz:localhost:8800JvQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043558385Xpkrp:localhost:8800JuQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043558384QrKsp:localhost:8800JtQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043557383IxQaJ:localhost:8800JsQQ !LazKtcHZriKzCvvGwV:localhost:8800$1570043556382AgYyj:localhost:8800;rQ3 !lEJUJZxqZPKZetemiR:localhost:8800$49:localhost:42455;qQ3 !lEJUJZxqZPKZetemiR:localhost:8800$46:localhost:42455;pQ3 !lEJUJZxqZPKZetemiR:localhost:8800$46:localhost:42455;oQ3 !lEJUJZxqZPKZetemiR:localhost:8800$44:localhost:42455;nQ3 !lEJUJZxqZPKZetemiR:localhost:8800$44:localhost:42455;mQ3 !lEJUJZxqZPKZetemiR:localhost:8800$43:localhost:42455JlQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043551381AkShG:localhost:8800JkQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043550380LNzMz:localhost:8800JjQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043549379wtMED:localhost:8800JiQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043548378IxCfM:localhost:8800JhQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043547377kWWAW:localhost:8800JgQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043546376YfkfL:localhost:8800JfQQ !lEJUJZxqZPKZetemiR:localhost:8800$1570043545375TmtMk:localhost:8800;eQ3 !bLWyXaXdvUhdSAooUz:localhost:8800$40:localhost:42455JdQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043543374kGctZ:localhost:8800JcQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043542373yGTqH:localhost:8800JbQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043541372ZeTYJ:localhost:8800JaQQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043540371avDlf:localhost:8800J`QQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043539370xCBJr:localhost:8800J_QQ !bLWyXaXdvUhdSAooUz:localhost:8800$1570043538369ozxqx:localhost:8800J^QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536368agmuM:localhost:8800J]QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536367lvGLr:localhost:8800J\QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043535366hhblx:localhost:8800J[QQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043534365WVAkx:localhost:8800JZQQ !YmRuIWixFpaqEeDQLZ:localhost:8800$1570043533364iwqCT:localhost:8800;YQ3 !bjdLCdBwkKaihRIRFG:localhost:8800$39:localhost:42455JXQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043531363QpQmq:localhost:8800JWQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043530362jRUtV:localhost:8800JVQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043529361Oytod:localhost:8800JUQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043528360cetnZ:localhost:8800JTQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527359ScxWW:localhost:8800JSQQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043527358wChxc:localhost:8800JRQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043525357VEfrE:localhost:8800JQQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043524356NlySy:localhost:8800JPQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043523355SbJjm:localhost:8800JOQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043522354IAAap:localhost:8800JNQQ !qzrZzAieCgGSbpKOQR:localhost:8800$1570043521353geZrN:localhost:8800;MQ3 !qzurjQHmiriwjaUMhO:localhost:8800$38:localhost:42455JLQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043519352auZGi:localhost:8800JKQQ !qzurjQHmiriwjaUMhO:localhost:8800$1570043518351Popej:localhost:8800 G u J  s HmB i<k@ !: e L wT)c8 goD }R' { P % oD oD *Q!vttkrtSyHEJXVMlvLo:localhost:8800 @ |*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ? {*Q!vttkrtSyHEJXVMlvLo:localhost:8800 > z*Q!vttkrtSyHEJXVMlvLo:localhost:8800 = y*Q!vttkrtSyHEJXVMlvLo:localhost:8800 < x*Q!vttkrtSyHEJXVMlvLo:localhost:8800 ; w*Q!vttkrtSyHEJXVMlvLo:localhost:8800 : v*Q!vttkrtSyHEJXVMlvLo:localhost:8800 9 u*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 q *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 s +*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vttkrtSyHEJXVMlvLo:localhost:8800 A }*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vZGjXEXQoCaoUXnkCa:localhost:8800 *Q!vRmMcoJDeCupADwqac:localhost:8800  T*Q!vRmMcoJDeCupADwqac:localhost:8800  S*Q!vRmMcoJDeCupADwqac:localhost:8800  R*Q!vRmMcoJDeCupADwqac:localhost:8800  Q*Q!vRmMcoJDeCupADwqac:localhost:8800  P*Q!vRmMcoJDeCupADwqac:localhost:8800  O*Q!vRmMcoJDeCupADwqac:localhost:8800  N*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 v *Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vVmSdclwPIqYDbnmPn:localhost:8800*Q!vRRNxNyGboLHNhqQvr:localhost:8800Z_*Q!vRRNxNyGboLHNhqQvr:localhost:8800Y^*Q!vRRNxNyGboLHNhqQvr:localhost:8800X]*Q!vRRNxNyGboLHNhqQvr:localhost:8800W\*Q!vRRNxNyGboLHNhqQvr:localhost:8800V[*Q!vRRNxNyGboLHNhqQvr:localhost:8800UZ*Q!vRRNxNyGboLHNhqQvr:localhost:8800TY*Q!vOfeZvbtpuHfoqShFl:localhost:8800 V*Q!vnFXnkCSfTbsSNKrtg:localhost:8800 r *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 p *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 t *Q!vnFXnkCSfTbsSNKrtg:localhost:8800 u *Q!vxEMWYTUdzvLyVZNzJ:localhost:8800*Q!wAyboOFgsOPwkmgMAI:localhost:8800;?*Q!wAyboOFgsOPwkmgMAI:localhost:8800:>*Q!vyCFfUTJKYJSDadFhT:localhost:8800`f*Q!vyCFfUTJKYJSDadFhT:localhost:8800^d*Q!vyCFfUTJKYJSDadFhT:localhost:8800\b*Q!vyCFfUTJKYJSDadFhT:localhost:8800Z`*Q!vyCFfUTJKYJSDadFhT:localhost:8800X^*Q!vyCFfUTJKYJSDadFhT:localhost:8800V\*Q!vyCFfUTJKYJSDadFhT:localhost:8800TZ*Q!vyCFfUTJKYJSDadFhT:localhost:8800RX*Q!vyCFfUTJKYJSDadFhT:localhost:8800QW*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800 *Q!vpuivIQDEhyuhOLWpg:localhost:8800 *Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800*Q!vpuivIQDEhyuhOLWpg:localhost:8800  .QQa) $1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3352}{"auth_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}]], "prev_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}]], "type": "m.room.member", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-653", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-653:localhost:8800", "event_id": "$1570043522354IAAap:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043522622, "hashes": {"sha256": "gnj0c2CdVA3jFA3B8S45y2+ZR4sK5SWB5ld5+54ZN5U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pq/+31TkvuIMNcUUY1xlE3TyFM5hvA3CbaGMrRydIayi5qIjQ78VoTMKEs9Ki+Lohz4yuq91Fqx1SP03eqNzDQ"}}, "unsigned": {"age_ts": 1570043522622}}~QQaC $1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3351}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-653:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043521353geZrN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043521753, "hashes": {"sha256": "Lx05C70G01fDhaPZIAPyv1m+h2pgy9/tdXHVLgq1nVg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "scLeyBEwAK+zvZgN+k8GykWWRQ6JFwjSYuZ2VILEZLSoc5X2eW0WIwMGH287blaRrHGD02mYJMv8tjYQSOmJDA"}}, "unsigned": {"age_ts": 1570043521753}}R}3Q3 $38:localhost:42455!qzurjQHmiriwjaUMhO:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3350}{"sender": "@__ANON__-26:localhost:42455", "hashes": {"sha256": "D/+7jaNOdz2Y9nTTRkfUHGPu194ypu4DTIVICZyog9o"}, "state_key": "@__ANON__-26:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "type": "m.room.member", "prev_events": [["$1570043518351Popej:localhost:8800", {"sha256": "xyT+rfGteu5l2h+Y4R1XeJmJsOsWTXYdchb4ci6z5Sg"}]], "origin_server_ts": 1570043519997, "content": {"membership": "join"}, "auth_events": [["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}], ["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043517350ncbDd:localhost:8800", {"sha256": "tlS9JFFba/7y+kIq8mLF3ca/QsKvPirXW4nvxbITH4U"}]], "event_id": "$38:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "dpqcDl7rhmZFsTq3MR4t3nx4M/BRfeTN/G3Ri+ZYLeM0jKujM/2QzUTtt44QCgqPvBfqLzz73efi7SJ3+zz4AA"}}, "unsigned": {}}x|QQa $1570043518351Popej:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800{"token_id": 632, "stream_ordering": 3349}{"auth_events": [["$1570043517349uVTMj:localhost:8800", {"sha256": "8Q8bonTM4+c31jBveCEcmCVMJC45ufmPplX5mIsZZ9o"}], ["$1570043515347LGRKl:localhost:8800", {"sha256": "MXDf3oFYFGFAibW0zvtYW/udpUPoFlW9U8ZElbEq8UY"}], ["$1570043516348vThZG:localhost:8800", {"sha256": "zLaGwDWVCYpmN1fyRiORhqAuDixT3+T44okhzE/UWTA"}]], "prev_events": [["$1570043517350ncbDd:localhost:8800", {"sha256": "tlS9JFFba/7y+kIq8mLF3ca/QsKvPirXW4nvxbITH4U"}]], "type": "m.room.history_visibility", "room_id": "!qzurjQHmiriwjaUMhO:localhost:8800", "sender": "@anon-20191002_181700-652:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043518351Popej:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043518767, "hashes": {"sha256": "Iskc/DfVkRPho3W5b2QxLEAzztlwY+Dn19ooi6WV4UY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ALjhjqfHG+q5H6rXJUm/GCxgxsfi4KvTtObQ4c7xeNZCK7LK+vMo4oHvnbSb/OrtDe19GfUhCGGfZGBymdejAg"}}, "unsigned": {"age_ts": 1570043518767}} %5y 2 X ~  7 ]<qHn'MsjnQQQ$1570043540371avDlf:localhost:8800$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800jmQQQ$1570043540371avDlf:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800jlQQQ$1570043539370xCBJr:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800jkQQQ$1570043536368agmuM:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jjQQQ$1570043536368agmuM:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jiQQQ$1570043536368agmuM:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jhQQQ$1570043536367lvGLr:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jgQQQ$1570043536367lvGLr:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jfQQQ$1570043536367lvGLr:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jeQQQ$1570043535366hhblx:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jdQQQ$1570043535366hhblx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800jcQQQ$1570043534365WVAkx:localhost:8800$1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800[b3QQ$39:localhost:42455$1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800[a3QQ$39:localhost:42455$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800[`3QQ$39:localhost:42455$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j_QQQ$1570043530362jRUtV:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j^QQQ$1570043530362jRUtV:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j]QQQ$1570043530362jRUtV:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j\QQQ$1570043529361Oytod:localhost:8800$1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800j[QQQ$1570043529361Oytod:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jZQQQ$1570043529361Oytod:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jYQQQ$1570043528360cetnZ:localhost:8800$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jXQQQ$1570043528360cetnZ:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jWQQQ$1570043527359ScxWW:localhost:8800$1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800jVQQQ$1570043525357VEfrE:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jUQQQ$1570043525357VEfrE:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jTQQQ$1570043525357VEfrE:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jSQQQ$1570043524356NlySy:localhost:8800$1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jRQQQ$1570043524356NlySy:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jQQQQ$1570043524356NlySy:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jPQQQ$1570043523355SbJjm:localhost:8800$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jOQQQ$1570043523355SbJjm:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800jNQQQ$1570043522354IAAap:localhost:8800$1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800[M3QQ$38:localhost:42455$1570043517350ncbDd:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800[L3QQ$38:localhost:42455$1570043515347LGRKl:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800[K3QQ$38:localhost:42455$1570043517349uVTMj:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800jJQQQ$1570043518351Popej:localhost:8800$1570043516348vThZG:localhost:8800!qzurjQHmiriwjaUMhO:localhost:8800  5a+E M  U -% 5 d  ]eeQ$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA$BvSncoSCchu4JT8WOvmCtKoDalF2X0HEKrH2uQw34O8!peJMRJtXBvIiCttNmm:localhost:8800 XeeQ$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY$G1k3C_NfS_FvXiikJVvfOB_CkQlRL81HaHkCzk7N9C4!rWGwSSefrZzQYCYFHs:localhost:8800&eeQ$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQ$izC8egoIIUgL8tqzRTAAVyXDNSqQJRg0NcehlyS79Rc!NhWgOTYzEPRwAxRQvS:localhost:8800b=3P33Q$88:localhost:42455$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800 eeQ$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM$mUuq_rgBA2Mh4QvKujq3edgCjJEZkr5H30MUAh5-dSY!nvclDopiBLEOKBIheH:localhost:8800eeQ$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU!tPkCGJBKmqUXJoRrnY:localhost:8800 SeeQ$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQ$_4DnCFTmBJPVLYb04TKE_WUZU5EuoMy6MNZEy7oc8iQ!vRRNxNyGboLHNhqQvr:localhost:8800ہeeQ$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8$sOGamqi4PctvCs3f4b-vbjNCZV6PVV68eApaGmdexsE!MWCLSWWGdWcSivNVLI:localhost:8800<eeQ$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU$TcU6192pCd4R-zW_hhSLCbmBN9nQGaT97lhXhJtV_Ww!mMsxpaIlcykPuOnDyl:localhost:8800܁eeQ$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM$IHDA-FKbk9aBTgsq4moSKuUv00_S16qp0MREfyh56i0!DelfBAGvCrTXgNxmNV:localhost:8800 neeQ$88C4wsYS0WdmGuEN_ZePXWP5hgSmDPV9XwrtT92Kl28$te6oD7tlhoMGCibYh4SFGaz9ht_Zcs4V7Vk1hICdNkc!HmkcAMkMjWRhTDJMsy:localhost:88004eeQ$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74$hzwVkV_OLHyapmLqEo-xPuNV3m8Jh4E96QEqrGBRKzs!PzoqoNRxeEEqiLyVSV:localhost:8800 w ]$_3QQ$89:localhost:42455$1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 eeQ$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU$x8vBEIupGiiuv-OBDTo4G7ykNx6Z9PpklWMikX1eMkA!coGyOAgYnlBZAqznax:localhost:8800 eeQ$8CxiYVRMpfPgjlkNo1x1GczBQb8c-UAi-5z8iwXIXJ0$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800 ؁eeQ$8DeWskZ1W3tdzK3jfm3Xl6N8vmwtCqC0cta41UsPir8$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv8!MWCLSWWGdWcSivNVLI:localhost:8800=eeQ$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQg!IGVHKYcSuxzVPlFHlj:localhost:8800eeQ$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0$jY_fiVa6H7WVnBkyHMXkaGZYD1QJiqkTX4IeY3z_67U!JnAKXOrlyisFUpgJPw:localhost:8800 eeQ$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0!hgjYwwwjWJNgwrzOto:localhost:8800JeeQ$8CUqKtvpAlXKjhcj88nNlpa1jeffuHSDtTAL2XMMFMo$jYk_S2HTwIEvMfHn_WL-ZrWUOaAVhMztNGEx2NrnLNw!SrMQpDMFREKRMELwbL:localhost:8800)eeQ$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA!cGkVFpidyBBxUxsszG:localhost:8800P33Q$89:localhost:42455$88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800 n^ k x ) 8 E R  a nP]Q@anon-20191002_181700-228:localhost:8800!fOJLpnbtgKNxxVDquX:localhost:8800P]Q@anon-20191002_181700-226:localhost:8800!vAUAIZrCnHTeMGeNuw:localhost:8800P]Q@anon-20191002_181700-224:localhost:8800!EfJcWhdjNARbuHYrqU:localhost:8800P]Q@anon-20191002_181700-222:localhost:8800!vRRNxNyGboLHNhqQvr:localhost:8800P]Q@anon-20191002_181700-220:localhost:8800!NFWKQvZkIwvecnREOC:localhost:8800N[Q@anon-20191002_181700-21:localhost:8800!NZHpBquHDfJAjiawGk:localhost:8800 P]Q@anon-20191002_181700-218:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-217:localhost:8800!IPYMCBwcyNIzqdiIWv:localhost:8800P]Q@anon-20191002_181700-216:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-215:localhost:8800!HZqzpRgqekPOtxstVc:localhost:8800P]Q@anon-20191002_181700-214:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-213:localhost:8800!FklhVuCInffbDxunWv:localhost:8800P]Q@anon-20191002_181700-212:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800P]Q@anon-20191002_181700-211:localhost:8800!eJPTUgihvSwaOhIkrC:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!uxKymrHZeXRYCZwekU:localhost:8800N[Q@anon-20191002_181700-20:localhost:8800!sPWVGnipjiiWQpywNO:localhost:8800P]Q@anon-20191002_181700-209:localhost:8800!sfXbvAcOUJhzGwWEpZ:localhost:8800P]Q@anon-20191002_181700-208:localhost:8800!YufaOfAlruTdjyUCwO:localhost:8800P]Q@anon-20191002_181700-207:localhost:8800!ifQxHmNAcSSGHVMjfi:localhost:8800P]Q@anon-20191002_181700-206:localhost:8800!EABRjdYuYumMhLSwIa:localhost:8800P]Q@anon-20191002_181700-205:localhost:8800!FIOuvzpMhoERunVYYA:localhost:8800P]Q@anon-20191002_181700-204:localhost:8800!zNBpypJDRMlBdOcLlW:localhost:8800P]Q@anon-20191002_181700-203:localhost:8800!TcaopYfMoJFEcjYRzJ:localhost:8800P]Q@anon-20191002_181700-202:localhost:8800!BckZfhQgrcyiMhEAAJ:localhost:8800 (u$f $ f ? ] ?]2V2k"6T)uWQQ' $1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.createWQQ' $1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.created3Q'E$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455cQQ? $1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility[QQ/ $1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules]QQ3 $1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levelsQQ']$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800WQQ' $1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.createF 3Q!$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateYF 3Q!$48:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateTF 3Q!$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateBd 3Q'E$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455] QQ3 $1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levelscQQ? $1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility[QQ/ $1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules]QQ3 $1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levelsQQ']$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800WQQ' $1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.created3Q'E$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455cQQ? $1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility[QQ/ $1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules]QQ3 $1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levelsQQ']$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800W~QQ' $1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.createc}QQ? $1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility[|QQ/ $1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules]{QQ3 $1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levelszQQ']$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800WyQQ' $1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.createdx3Q'E$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455cwQQ? $1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility[vQQ/ $1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules]uQQ3 $1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levelstQQ']$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800WsQQ' $1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.createcrQQ? $1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility[qQQ/ $1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules]pQQ3 $1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levelsoQQ']$1570043522354IAAap:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800WnQQ' $1570043521353geZrN:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800m.room.create &{Q p  F e " ZyOn+c sN]@Q/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800Y?Q' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800]>Q/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800f=Q'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455Y<Q' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800_;Q3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800H:Q!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateB$44:localhost:42455f9Q'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455u8Q'EQ !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$1570043551381AkShG:localhost:8800_7Q3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800e6Q? Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility$1570043549379wtMED:localhost:8800]5Q/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800_4Q3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043547377kWWAW:localhost:88003Q']Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800$1570043546376YfkfL:localhost:8800Y2Q' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800f1Q'E3 !bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455$40:localhost:42455u0Q'EQ !bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455$1570043543374kGctZ:localhost:8800e/Q? Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility$1570043542373yGTqH:localhost:8800].Q/ Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules$1570043541372ZeTYJ:localhost:8800_-Q3 Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levels$1570043540371avDlf:localhost:8800,Q']Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800$1570043539370xCBJr:localhost:8800Y+Q' Q !bLWyXaXdvUhdSAooUz:localhost:8800m.room.create$1570043538369ozxqx:localhost:8800e*Q? Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility$1570043536368agmuM:localhost:8800])Q/ Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules$1570043536367lvGLr:localhost:8800_(Q3 Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levels$1570043535366hhblx:localhost:8800'Q']Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800$1570043534365WVAkx:localhost:8800Y&Q' Q !YmRuIWixFpaqEeDQLZ:localhost:8800m.room.create$1570043533364iwqCT:localhost:8800f%Q'E3 !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455$39:localhost:42455u$Q'EQ !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455$1570043531363QpQmq:localhost:8800e#Q? Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility$1570043530362jRUtV:localhost:8800]"Q/ Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules$1570043529361Oytod:localhost:8800_!Q3 Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levels$1570043528360cetnZ:localhost:8800 Q']Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800$1570043527359ScxWW:localhost:8800YQ' Q !bjdLCdBwkKaihRIRFG:localhost:8800m.room.create$1570043527358wChxc:localhost:8800eQ? Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.history_visibility$1570043525357VEfrE:localhost:8800]Q/ Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.join_rules$1570043524356NlySy:localhost:8800_Q3 Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.power_levels$1570043523355SbJjm:localhost:8800Q']Q !qzrZzAieCgGSbpKOQR:localhost:8800m.room.member@anon-20191002_181700-653:localhost:8800$1570043522354IAAap:localhost:8800 @"^0l> X * txJd6~zPR$l>NX"*r"D b 6 Z .  ~ R & v J 5 \-]@anon-20191002_181700-725:localhost:8800F-]@anon-20191002_181700-710:localhost:88005-]@anon-20191002_181700-708:localhost:88004-]@anon-20191002_181700-706:localhost:88003-]@anon-20191002_181700-704:localhost:88002-]@anon-20191002_181700-702:localhost:88001-]@anon-20191002_181700-701:localhost:88000-]@anon-20191002_181700-700:localhost:8800/-]@anon-20191002_181700-698:localhost:8800.-]@anon-20191002_181700-691:localhost:8800--]@anon-20191002_181700-690:localhost:8800,-]@anon-20191002_181700-685:localhost:8800*-]@anon-20191002_181700-684:localhost:8800(-]@anon-20191002_181700-683:localhost:8800&-]@anon-20191002_181700-682:localhost:8800$-]@anon-20191002_181700-681:localhost:8800"-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800-]@anon-20191002_181700-731:localhost:8800M-]@anon-20191002_181700-730:localhost:8800L-]@anon-20191002_181700-729:localhost:8800K-]@anon-20191002_181700-728:localhost:8800J-]@anon-20191002_181700-727:localhost:8800I-]@anon-20191002_181700-727:localhost:8800H-]@anon-20191002_181700-726:localhost:8800G-]@anon-20191002_181700-723:localhost:8800D-]@anon-20191002_181700-722:localhost:8800C-]@anon-20191002_181700-721:localhost:8800B-]@anon-20191002_181700-720:localhost:8800A-]@anon-20191002_181700-719:localhost:8800@-]@anon-20191002_181700-719:localhost:8800?-]@anon-20191002_181700-718:localhost:8800>-]@anon-20191002_181700-717:localhost:8800=-]@anon-20191002_181700-716:localhost:8800<-]@anon-20191002_181700-715:localhost:8800;-]@anon-20191002_181700-714:localhost:8800:-]@anon-20191002_181700-713:localhost:88009-]@anon-20191002_181700-712:localhost:88008-]@anon-20191002_181700-711:localhost:88007-]@anon-20191002_181700-711:localhost:88006j-]@anon-20191002_181700-680:localhost:8800 +[@anon-20191002_181700-67:localhost:8800%-]@anon-20191002_181700-679:localhost:8800-]@anon-20191002_181700-678:localhost:8800-]@anon-20191002_181700-677:localhost:8800-]@anon-20191002_181700-676:localhost:8800-]@anon-20191002_181700-675:localhost:8800-]@anon-20191002_181700-674:localhost:8800-]@anon-20191002_181700-673:localhost:8800-]@anon-20191002_181700-672:localhost:8800-]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800 +[@anon-20191002_181700-66:localhost:8829&-]@anon-20191002_181700-669:localhost:8800 -]@anon-20191002_181700-668:localhost:8800 +[@anon-20191002_181700-72:localhost:8829)+[@anon-20191002_181700-71:localhost:8800*+[@anon-20191002_181700-70:localhost:8800(+[@anon-20191002_181700-68:localhost:8800'-]@anon-20191002_181700-724:localhost:8800E  fxQQa $1570043525357VEfrE:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3355}{"auth_events": [["$1570043523355SbJjm:localhost:8800", {"sha256": "TsdmCTpWWblYxoAR/6F1uI0jajoqenjo+I3Pl5wo5YM"}], ["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}], ["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}]], "prev_events": [["$1570043524356NlySy:localhost:8800", {"sha256": "G5XZFloIipqTZzdB+8+QwCZjodYcAbdntcP2d0N1rHU"}]], "type": "m.room.history_visibility", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043525357VEfrE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043525569, "hashes": {"sha256": "vGdoLB9RYQnU1Ji9wiQGe3ttp5BKOQboDlEKdDwvTQo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mFlAVAWVMNDmfEMdQe1jAgbrItbs6Gj0WqdLblZWrowfVyEGpI+CqB4BicMqQ8Fwf1Zda7q/j4aTI7+r2wIrCQ"}}, "unsigned": {"age_ts": 1570043525569}}gQQaq $1570043524356NlySy:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3354}{"auth_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}], ["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}], ["$1570043523355SbJjm:localhost:8800", {"sha256": "TsdmCTpWWblYxoAR/6F1uI0jajoqenjo+I3Pl5wo5YM"}]], "prev_events": [["$1570043523355SbJjm:localhost:8800", {"sha256": "TsdmCTpWWblYxoAR/6F1uI0jajoqenjo+I3Pl5wo5YM"}]], "type": "m.room.join_rules", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043524356NlySy:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043524666, "hashes": {"sha256": "WnOe8nHCUkmXrvhynh1ajqdG39BtBYi53OH5h6a863I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VLpNB+5tDVFZts9oBTDzydT85J+F/yir6eA68ZwJYQKnx9EY3Va0bF7/M0ia5LTHtUcOpIWOGooEAC9P2vk7CQ"}}, "unsigned": {"age_ts": 1570043524666}}+QQay $1570043523355SbJjm:localhost:8800!qzrZzAieCgGSbpKOQR:localhost:8800{"token_id": 633, "stream_ordering": 3353}{"auth_events": [["$1570043521353geZrN:localhost:8800", {"sha256": "F6aL2t+k/jVkj0ys0FFqqLMkKU9nLwitvJdM0zYEmGQ"}], ["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}]], "prev_events": [["$1570043522354IAAap:localhost:8800", {"sha256": "JowdmRzs0iY9dUOudrfvI4Cs2O6JGaNW4awbj6ixF3I"}]], "type": "m.room.power_levels", "room_id": "!qzrZzAieCgGSbpKOQR:localhost:8800", "sender": "@anon-20191002_181700-653:localhost:8800", "content": {"users": {"@anon-20191002_181700-653:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043523355SbJjm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043523608, "hashes": {"sha256": "NE+elWwVjIFcMRJgqpDSiJn4yId78SYEhg0RsmfGWJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zKqjlHcPweyu0+cB/nbunMvuaM6yMAuUAl7fkXJ0UGMROZcC3dMsjlFwzJBSN3Gz53iCbXB4OZfr8eSxRfAaCg"}}, "unsigned": {"age_ts": 1570043523608}}  +QQay $1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3358}{"auth_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}]], "prev_events": [["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}]], "type": "m.room.power_levels", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"users": {"@anon-20191002_181700-654:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043528360cetnZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043528899, "hashes": {"sha256": "0Cg6dZ8/lihEoZ5LHQaXO2VWQfFDtXqT1BrGU/UYKhg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D+vPtFlBva20FW0fLTHwGR06bO9iu//MKVeExe0FqhM7oAQE2HFetkqof4G4BXw8bVcb1c23LY4lDW0d5EPwAQ"}}, "unsigned": {"age_ts": 1570043528899}}QQa) $1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3357}{"auth_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}]], "prev_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}]], "type": "m.room.member", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-654", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-654:localhost:8800", "event_id": "$1570043527359ScxWW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043527969, "hashes": {"sha256": "fz05IeGguQcSrJOttFI1Dc8ru5NBHz4GAOg4HXl8iU4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DdHdWEP2lqGHvs9W8ud/cJ3dVIUI/F+El/4cVxsOtV3Sk5vPGNey/3V/8Arp/4BMyw7h9a8tAzS4jYbTrDdCDg"}}, "unsigned": {"age_ts": 1570043527969}}QQaC $1570043527358wChxc:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3356}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-654:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043527358wChxc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043527169, "hashes": {"sha256": "ITtzB79WR5CJsFZZBaEKC6158Udlflp2WhNad5ulLyM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SRuf2zlSkZ9gWNNScN8R9qO/SGli9H4S81lq1LVUc7q1oWySERs2aa7zAiS26X9RC3UumtDD9WiWNdXaFWg/Aw"}}, "unsigned": {"age_ts": 1570043527169}}  \bD f  ; ]  2@|+\"unenQQQ$1570043712439XdJFc:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 l_QQ3$1570043670433bjAzo:localhost:8800$1570043668432TfiHj:localhost:8800!11:localhost:42455 OPQ33$1570043683436iTOlZ:localhost:8800$80:localhost:42455!13:localhost:42455 [PQ33$1570043680434abJWo:localhost:8800$76:localhost:42455!12:localhost:42455 WQnQQQ$1570043712440rfNzQ:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 m$_Q3Q$1570043715443SSqOY:localhost:8800$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800 pYnQQQ$1570043728447IkYro:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 }+nQQQ$1570043583407USfCf:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800 nQQQ$1570043583406mAAxW:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043582405uFoRY:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800 nQQQ$1570043581404AarAd:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 PQ33$1570043668432TfiHj:localhost:8800$73:localhost:42455!11:localhost:42455 NPQ33$1570043664431IMLSL:localhost:8800$70:localhost:42455!10:localhost:42455 KOQ31$1570043660430kLPpN:localhost:8800$67:localhost:42455!9:localhost:42455 HnQQQ$1570043656428rZaqi:localhost:8800$1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 AnQQQ$1570043655427tEtWD:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 @nQQQ$1570043654426seixP:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 ?nQQQ$1570043653425AhyPB:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800 >nQQQ$1570043648422SglHQ:localhost:8800$1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 :nQQQ$1570043647421dmTZW:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 9nQQQ$1570043646420mPrhj:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 8nQQQ$1570043646419zIOAX:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800 7nQQQ$1570043593416CouYv:localhost:8800$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043592415heiAH:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043591414NuXxd:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043590413Khvee:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800 nQQQ$1570043588411PDBWG:localhost:8800$1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043585409JoQZw:localhost:8800$1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800 nQQQ$1570043584408XdGfO:localhost:8800$1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800 nQQQ$1570043727446CGYaE:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 |nQQQ$1570043713441WJPkP:localhost:8800$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 nnQQQ$1570043711438bqOHL:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 k 'oyU K  F ups*:8` -o["QQ/ $1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules]!QQ3 $1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels] QQ3 $1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.power_levelsQQ']$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800joinQQ']$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.member@anon-20191002_181700-659:localhost:8800joinWQQ' $1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.createh3Q'E$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455joinF3Q!$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800test_stateYz ]QQ3 $1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levelscQQ? $1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility[QQ/ $1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rulesWQQ' $1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.createQQ']$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800joinh3Q'E$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455joinF 3Q!$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateYF 3Q!$48:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateTF 3Q!$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800test_stateB ] QQ3 $1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levelscQQ? $1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility[QQ/ $1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rulesWQQ' $1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.createQQ']$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800joinWQQ' $1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.createh3Q'E$40:localhost:42455!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@__ANON__-30:localhost:42455joincQQ? $1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.history_visibility[QQ/ $1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.join_rules]QQ3 $1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.power_levels~QQ']$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.member@anon-20191002_181700-656:localhost:8800joinW}QQ' $1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800m.room.createc|QQ? $1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.history_visibility[{QQ/ $1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.join_rules]zQQ3 $1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.power_levelsyQQ']$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.member@anon-20191002_181700-655:localhost:8800joinWxQQ' $1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800m.room.createhw3Q'E$39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455joincvQQ? $1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.history_visibility[uQQ/ $1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.join_rules]tQQ3 $1570043528360cetnZ:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.power_levelssQQ']$1570043527359ScxWW:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@anon-20191002_181700-654:localhost:8800join  R3Q3 $39:localhost:42455!bjdLCdBwkKaihRIRFG:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3361}{"origin": "localhost:42455", "state_key": "@__ANON__-28:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@__ANON__-28:localhost:42455", "hashes": {"sha256": "g6tWD0TN6hSvPWWdns69y/5D4DsWBtzYwkFtsTtFf/8"}, "content": {"membership": "join"}, "event_id": "$39:localhost:42455", "auth_events": [["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}], ["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043529361Oytod:localhost:8800", {"sha256": "AZfe7tyH/pz9+Z8vq3pfc1/kG28hy5U7lI/PpaQMIzw"}]], "prev_events": [["$1570043530362jRUtV:localhost:8800", {"sha256": "jwGbe1dTIdgf34RvWfYLNDY1k4WEz6oGHTiMRilQGCI"}]], "origin_server_ts": 1570043531615, "signatures": {"localhost:42455": {"ed25519:1": "zutTlGIIm24Uobtd25pc0KKwicK0RPK+LvKKKnR0Fm6fYgd2jDYc/8VK0lLH9jTuxJFmVX57Ra9jFixDMHvQDw"}}, "unsigned": {}}xQQa $1570043530362jRUtV:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3360}{"auth_events": [["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}], ["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}]], "prev_events": [["$1570043529361Oytod:localhost:8800", {"sha256": "AZfe7tyH/pz9+Z8vq3pfc1/kG28hy5U7lI/PpaQMIzw"}]], "type": "m.room.history_visibility", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043530362jRUtV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043530308, "hashes": {"sha256": "cxDhbbJIWCibWJrOPbDi8umZEoKJ95HIpVpTSEsjlQg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "c/lC249d2NIQJ84b3AJ/IkmOkgkP7nFdpf2I0XAqwDzjWHZ8Pjp6pCPv4C+ykoE4A4sVOcYmSWgW1VcVqKl+Cw"}}, "unsigned": {"age_ts": 1570043530308}}gQQaq $1570043529361Oytod:localhost:8800!bjdLCdBwkKaihRIRFG:localhost:8800{"token_id": 634, "stream_ordering": 3359}{"auth_events": [["$1570043527358wChxc:localhost:8800", {"sha256": "uL+T60wR9wbqT/7w0hun85oZ3/mlrpf6ZL58oQP+rQk"}], ["$1570043527359ScxWW:localhost:8800", {"sha256": "gQtwwZFHJab6ETiZlbHalUVmuhQnJGfBgAQ/tc3imFQ"}], ["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}]], "prev_events": [["$1570043528360cetnZ:localhost:8800", {"sha256": "flqq7py4PgDYH410yHZVf90KwQcL+A4WHNYSBv8y8Vg"}]], "type": "m.room.join_rules", "room_id": "!bjdLCdBwkKaihRIRFG:localhost:8800", "sender": "@anon-20191002_181700-654:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043529361Oytod:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043529550, "hashes": {"sha256": "HcpBi3LU22UVXSfORLxjsRN7xkCw8OQ6764PLL8RNFU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oiyd3R/0Xy6Nv7cnwmllUZO9qChubfO3lMtpx8e/rbxXaSBUGYFJDhOeOnCaEp6d2BPUgeIo4JuiswqDoPneCQ"}}, "unsigned": {"age_ts": 1570043529550}}  EI  r @  x F ~MU#[ )zI0hO=uC{Ij8p> v D D D22 l21e$7ZEIwFddCP9XSCKoIMtPC5vpbsTtjdSZ6uPICv00DeI1e$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo1e$7TCOQbUhbGhc7ndsrmnDa4tR6kodPCI0QKLNO8_GlpA1e$7T0R1xIN6fE7_47QWxRPA3I4i16t4NYjqNuQ-Bo3a0A1e$7RdEXYWSoL37BDFPy1gWWHPjJBZFMPC2ljQvA1NIBmQ1e$7R7t7L1yXuDAr712s_adM5b-q6nrAxvxxzETsQL9o1kO1e$7Piv-voOMP_skgb5p5VTX0rIRducJIL48oGobqdeaf411e$7LpIvbAVWJGUgQviiyV90cSvOI_WSdi3J4cCxTcLVE81e$7LGBsBnXoV3n80JPoP99CuNhSj41ybIRbs5D2kpR0ro3n20e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ^ :21e$7DBgc8D3zI55KIgtkBoLjB8pavQPRiQL9QdFN8O6QYs 1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE3$79:localhost:42455 1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM3$78:localhost:42455 3$77:localhost:42455 3$76:localhost:42455 1e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:42455 3$74:localhost:42455 3$73:localhost:42455 3$72:localhost:42455 3$71:localhost:42455 0e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzMt3$70:localhost:42455 |1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I41e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q%1e$6tgsI4xcUOn5aekC6zPuje73wfUiemR5XujU1tsyETss1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA81e$6qv4g7tST-eJnq0ztZpo_5OzDl3UMmBJbOrwSH9pYPk 1e$6qcHoRQho9t11QtSNXP3OlboHHyxqfC7nI_bU1UG2n01e$6qG5Sdslooo9u1xIYEZf0kMUzX6Mkpi0Bz-AQn8Ukik1e$6nZ5ddwyChjIZWGOUMViFGsPBZfzTelwIESGtM4KaFYN0e$6cwawd1ztlxoQvsHkyZkFv1_gTwNHVi2AvcTRvoVi1g0e$6azr86-8BVT9NW2JbGfuTEmrKobrTmIraJGUMxvS2h01e$6aj7YAcF7w6nyzTdA8z7J_b0Q-mHkpq3wxavAIpKB9A~1e$6_PTiib8YeZ_8xpNpbDjkIloH0lfJSalu4PxSQjOiGg0e$6YeQWbeLsYjj06OuzeiS1qfuA6f7F87AwfZHz-2NE3My1e$6YF3K6nm77vJNR6DerVqiOk9lk_Odjw_E2a-kwJl4d01e$6XxSUYy7dcK4wYWiexrxloJ1BACV1-d6nxobuzvvn6c1e$6X4Y0XO5Fhr-tGJ0MFuT1U18fN2YhDC2N5HWu6cDcgY,1e$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLw1e$6W3KVP7NkTIa_GkxOzPZEFFCmEjuLqyPUE4OC72aEN01e$6VrbrD1ZAHo4_EIIZg6sHpJui8wT-EFLT0SIukYzhkU 1e$6VncM3oS61ZltYrRhRJwBe7jf1yL7EvTy8YLlClfOac1e$6UsfUWGf_Z4MZ9f-m5KPHwCAOvlNo6MKKMLOsYi_YBU1e$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro 1e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 F1e$6Pa4FHbafkMH8ftgA437a_OxCGPC9UtKx1UBLgY0lKM1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Yg!1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY>1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_41e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA (1e$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9A1e$7sxP__GeJdcLcKeygczD4PmXRzddKZULMZEUQ7-WisMb1e$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk 1e$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk1e$7oVw-z_NOghhOGujauHy-xKfiY2DoNMr-jKfxECUa0Y1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE 1e$7lxIigVsRiktcUbPHXfE27palj3-gCopajX2miScOfEQ1e$7kDAt6-xflbKkejZvTnLcgw_48sIOr4dkOgIUEfJ1gg1e$7jLwK0jVoCZ5tFiqxhPINEM0ixnS18uHqVcFabaMDMss1e$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4K1e$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU 1e$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM31e$7_VVITJpp61RXafeHvC9Q9mpB1RbsSNdUzS0G8i0O-g 5u(A Z s 5 N  g ) o ";r4Mf2Z s&?JkQQ W!taANXnGBZntAreRurn:localhost:8800$1570043585409JoQZw:localhost:8800JjQQ V!tcYctHPiaKzsKgrXlU:localhost:8800$1570043584408XdGfO:localhost:8800JiQQ U!taANXnGBZntAreRurn:localhost:8800$1570043583407USfCf:localhost:8800JhQQ T!tcYctHPiaKzsKgrXlU:localhost:8800$1570043583406mAAxW:localhost:8800JgQQ S!taANXnGBZntAreRurn:localhost:8800$1570043582405uFoRY:localhost:8800JfQQ R!tcYctHPiaKzsKgrXlU:localhost:8800$1570043581404AarAd:localhost:8800JeQQ Q!taANXnGBZntAreRurn:localhost:8800$1570043580403vYYeb:localhost:8800JdQQ P!tcYctHPiaKzsKgrXlU:localhost:8800$1570043579402KDYtE:localhost:8800JcQQ O!taANXnGBZntAreRurn:localhost:8800$1570043578401arzBQ:localhost:8800JbQQ N!tcYctHPiaKzsKgrXlU:localhost:8800$1570043578400zncwP:localhost:8800JaQQ M!zScKnCZCFPIIodAiQj:localhost:8800$1570043575399SiSKs:localhost:8800;`Q3 L!drnXStKXkNQkouqUAg:localhost:8800$54:localhost:42455J_QQ K!drnXStKXkNQkouqUAg:localhost:8800$1570043572397AAGBm:localhost:8800J^QQ J!zScKnCZCFPIIodAiQj:localhost:8800$1570043572396lZXIU:localhost:8800J]QQ I!drnXStKXkNQkouqUAg:localhost:8800$1570043571395bDLFD:localhost:8800J\QQ H!zScKnCZCFPIIodAiQj:localhost:8800$1570043570394QELCg:localhost:8800J[QQ G!drnXStKXkNQkouqUAg:localhost:8800$1570043569393UscIm:localhost:8800JZQQ F!zScKnCZCFPIIodAiQj:localhost:8800$1570043568392ItLhq:localhost:8800JYQQ E!drnXStKXkNQkouqUAg:localhost:8800$1570043567391GonfI:localhost:8800JXQQ D!zScKnCZCFPIIodAiQj:localhost:8800$1570043566390qTwyJ:localhost:8800JWQQ C!drnXStKXkNQkouqUAg:localhost:8800$1570043565389RsxAr:localhost:8800JVQQ B!zScKnCZCFPIIodAiQj:localhost:8800$1570043564388ZmOEV:localhost:8800;UQ3 A!LazKtcHZriKzCvvGwV:localhost:8800$53:localhost:42455;TQ3 @!LazKtcHZriKzCvvGwV:localhost:8800$52:localhost:42455;SQ3 >!LazKtcHZriKzCvvGwV:localhost:8800$50:localhost:42455JRQQ =!LazKtcHZriKzCvvGwV:localhost:8800$1570043559386ZLBoz:localhost:8800JQQQ QQ '!bLWyXaXdvUhdSAooUz:localhost:8800$1570043538369ozxqx:localhost:8800J=QQ &!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536368agmuM:localhost:8800J<QQ %!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043536367lvGLr:localhost:8800J;QQ $!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043535366hhblx:localhost:8800J:QQ #!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043534365WVAkx:localhost:8800J9QQ "!YmRuIWixFpaqEeDQLZ:localhost:8800$1570043533364iwqCT:localhost:8800;8Q3 !!bjdLCdBwkKaihRIRFG:localhost:8800$39:localhost:42455J7QQ !bjdLCdBwkKaihRIRFG:localhost:8800$1570043530362jRUtV:localhost:8800 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8                                                                                 ~  ~  }  |  {  z  y  x  w  v  u  t  s  r  q  p  o  n  m  l  k  j  i ~ h } g | f { e z d y c x b w b v a u a t _ s ^ r ] q \ p [ o Z n Y m X l W k V j U i T h S g R f Q e P d O c N b M a L ` K _ J ^ I ] H \ G [ F Z E Y D X C W B V A U @ T > S = R < Q ; P : O 9 N 8 M 7 L 4 K 3 J 2 I 1 H 0 G / F . E - D , C + B * A ) @ ( ? ' > & = % < $ ; # : " 9 ! 8 7  6  5  4  3  2  1  0  /  .  -  ,  +  *  )  (  '  &  %  $  #  "  !                                                                                                                 `U{]?!mO1}_A% k M /  2oQ3aC%  qS5 cE' sUjL .z \>  S 8  t X <  y ] A 1   x d P < (  1<=anon-20191002_181700-721=anon-20191002_181700-720=anon-20191002_181700-718=anon-20191002_181700-719=anon-20191002_181700-717=anon-20191002_181700-716=anon-20191002_181700-715=anon-20191002_181700-714=anon-20191002_181700-713=anon-20191002_181700-712=anon-20191002_181700-711=anon-20191002_181700-710=anon-20191002_181700-709=anon-20191002_181700-708=anon-20191002_181700-707=anon-20191002_181700-706=anon-20191002_181700-705=anon-20191002_181700-704=anon-20191002_181700-703=anon-20191002_181700-702=anon-20191002_181700-701=anon-20191002_181700-700=anon-20191002_181700-697=anon-20191002_181700-698=anon-20191002_181700-696=anon-20191002_181700-695=anon-20191002_181700-693=anon-20191002_181700-692=anon-20191002_181700-691=anon-20191002_181700-690=anon-20191002_181700-689=anon-20191002_181700-688=anon-20191002_181700-687=anon-20191002_181700-686=anon-20191002_181700-685=anon-20191002_181700-684=anon-20191002_181700-683=anon-20191002_181700-682=anon-20191002_181700-681=anon-20191002_181700-680=anon-20191002_181700-670;anon-20191002_181700-67W=anon-20191002_181700-669=anon-20191002_181700-668=anon-20191002_181700-667=anon-20191002_181700-666=anon-20191002_181700-665=anon-20191002_181700-664=anon-20191002_181700-663=anon-20191002_181700-662=anon-20191002_181700-661=anon-20191002_181700-660=anon-20191002_181700-659=anon-20191002_181700-658=anon-20191002_181700-657=anon-20191002_181700-656=anon-20191002_181700-655=anon-20191002_181700-654=anon-20191002_181700-653=anon-20191002_181700-652=anon-20191002_181700-651=anon-20191002_181700-650=anon-20191002_181700-723=anon-20191002_181700-722 N=anon-20191002_181700-679=anon-20191002_181700-678=anon-20191002_181700-677=anon-20191002_181700-676=anon-20191002_181700-675=anon-20191002_181700-674=anon-20191002_181700-673=anon-20191002_181700-672=anon-20191002_181700-671;anon-20191002_181700-74\;anon-20191002_181700-73[;anon-20191002_181700-71Z;anon-20191002_181700-70Y9anon-20191002_181700-7;anon-20191002_181700-68X=anon-20191002_181700-745=anon-20191002_181700-744=anon-20191002_181700-743=anon-20191002_181700-742=anon-20191002_181700-736=anon-20191002_181700-735=anon-20191002_181700-734=anon-20191002_181700-733=anon-20191002_181700-732=anon-20191002_181700-731=anon-20191002_181700-730=anon-20191002_181700-729=anon-20191002_181700-728=anon-20191002_181700-726=anon-20191002_181700-727=anon-20191002_181700-725=anon-20191002_181700-724 BJsHqFqHX-V+  T ) } R ' { P % y N # w L !u(Q!aWJOsiuJONOvjKWEjO:localhost:8800ih(Q!aWJOsiuJONOvjKWEjO:localhost:8800hg(Q!aWJOsiuJONOvjKWEjO:localhost:8800gf(Q!aWJOsiuJONOvjKWEjO:localhost:8800fe*Q!aVxOoyiLLnxmzgLJat:localhost:8800>D*Q!aVxOoyiLLnxmzgLJat:localhost:8800=C*Q!aVxOoyiLLnxmzgLJat:localhost:88006<*Q!aVxOoyiLLnxmzgLJat:localhost:88005;*Q!aVxOoyiLLnxmzgLJat:localhost:88004:*Q!aVxOoyiLLnxmzgLJat:localhost:880039*Q!aVxOoyiLLnxmzgLJat:localhost:880028*Q!aVxOoyiLLnxmzgLJat:localhost:880017*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w *Q!aSKNKSGXPGoIbSrbEN:localhost:8800 v *Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aLxrqpqLkbzyIxGgpk:localhost:8800*Q!aZwMKYDXJRlSKjQNWM:localhost:88006W*Q!aZwMKYDXJRlSKjQNWM:localhost:88005V*Q!aZwMKYDXJRlSKjQNWM:localhost:88005U*Q!aZwMKYDXJRlSKjQNWM:localhost:88005T*Q!aZwMKYDXJRlSKjQNWM:localhost:88004S*Q!aZwMKYDXJRlSKjQNWM:localhost:88004R*Q!aZwMKYDXJRlSKjQNWM:localhost:88004Q*Q!aZwMKYDXJRlSKjQNWM:localhost:88003P*Q!aZwMKYDXJRlSKjQNWM:localhost:88003O*Q!aZwMKYDXJRlSKjQNWM:localhost:88003N*Q!aZwMKYDXJRlSKjQNWM:localhost:88002M*Q!aZwMKYDXJRlSKjQNWM:localhost:88002L*Q!aZwMKYDXJRlSKjQNWM:localhost:88001K*Q!aZwMKYDXJRlSKjQNWM:localhost:88001J*Q!aZwMKYDXJRlSKjQNWM:localhost:88001I*Q!aZwMKYDXJRlSKjQNWM:localhost:88000H*Q!aZwMKYDXJRlSKjQNWM:localhost:88000G*Q!aZwMKYDXJRlSKjQNWM:localhost:88000F*Q!aZwMKYDXJRlSKjQNWM:localhost:8800.E*Q!aZwMKYDXJRlSKjQNWM:localhost:8800-D*Q!aZwMKYDXJRlSKjQNWM:localhost:8800,C*Q!aZwMKYDXJRlSKjQNWM:localhost:8800+B*Q!aZwMKYDXJRlSKjQNWM:localhost:8800*A*Q!aZwMKYDXJRlSKjQNWM:localhost:8800)@*Q!aZwMKYDXJRlSKjQNWM:localhost:8800(?*Q!aZwMKYDXJRlSKjQNWM:localhost:8800'>*Q!aZwMKYDXJRlSKjQNWM:localhost:8800&=*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800(Q!aWJOsiuJONOvjKWEjO:localhost:8800kj(Q!aWJOsiuJONOvjKWEjO:localhost:8800ji  + QQay $1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3364}{"auth_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}], ["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}]], "prev_events": [["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}]], "type": "m.room.power_levels", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"users": {"@anon-20191002_181700-655:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043535366hhblx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043535342, "hashes": {"sha256": "ZyFisN42L5ZQjcwb4GBxf/w9dTJ9MMvh5TVMh2cW7wQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/yFtQyfSo9jf9huk9iFohfddcfQFVDIVJsEbWNK4jrF1wt32ZiKjnHCdE0hBj9UNnodXJn2eo9GmcfO+j0cqDA"}}, "unsigned": {"age_ts": 1570043535342}} QQa) $1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3363}{"auth_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}]], "prev_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}]], "type": "m.room.member", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-655", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-655:localhost:8800", "event_id": "$1570043534365WVAkx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043534358, "hashes": {"sha256": "YNFGUscUGOTGHj8XARjbRLBM9wV9g12GCQJUE9WDWBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+HX9AHSsuj6h0BpsDthaeP9+KYFN3BvnAHvkDB5VAoxa4NZvJ9uiz7U1ktnPfvTqY5SQ8x0ySlRKWAKGFmAoCg"}}, "unsigned": {"age_ts": 1570043534358}} QQaC $1570043533364iwqCT:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3362}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-655:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043533364iwqCT:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043533334, "hashes": {"sha256": "GKIPXRVp0ZpoPYL2RcwKbaNlcPT6RHjbNn975teP1bU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TzENs4njHtG8uDFy/mbEmFpztqrHlVVzhFVSyguQMSwjGV6nJiYz3/eVBNfBZL8/4leqQ5IhsgoIjofAdRq1AA"}}, "unsigned": {"age_ts": 1570043533334}} (t$H l 1 U y  k {+Atuv,PtkuQQQ$1570043572396lZXIU:localhost:8800$1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800ktQQQ$1570043571395bDLFD:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800ksQQQ$1570043570394QELCg:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800krQQQ$1570043569393UscIm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800kqQQQ$1570043568392ItLhq:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800kpQQQ$1570043567391GonfI:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800koQQQ$1570043566390qTwyJ:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800Mn33Q$53:localhost:42455$52:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800Mm33Q$53:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800\l3QQ$53:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800Mk33Q$52:localhost:42455$51:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800Mj33Q$52:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800\i3QQ$52:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800\h3QQ$50:localhost:42455$1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800kgQQQ$1570043559386ZLBoz:localhost:8800$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800kfQQQ$1570043558385Xpkrp:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800keQQQ$1570043558384QrKsp:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800kdQQQ$1570043557383IxQaJ:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800Mc33Q$49:localhost:42455$46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800Mb33Q$49:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800Ma33Q$46:localhost:42455$45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M`33Q$46:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M_33Q$45:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M^33Q$48:localhost:42455$44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800M]33Q$44:localhost:42455$43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800\\3QQ$44:localhost:42455$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800\[3QQ$43:localhost:42455$1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kZQQQ$1570043550380LNzMz:localhost:8800$1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kYQQQ$1570043549379wtMED:localhost:8800$1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kXQQQ$1570043548378IxCfM:localhost:8800$1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kWQQQ$1570043547377kWWAW:localhost:8800$1570043546376YfkfL:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800kVQQQ$1570043546376YfkfL:localhost:8800$1570043545375TmtMk:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800\U3QQ$40:localhost:42455$1570043542373yGTqH:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kTQQQ$1570043542373yGTqH:localhost:8800$1570043541372ZeTYJ:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kSQQQ$1570043541372ZeTYJ:localhost:8800$1570043540371avDlf:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kRQQQ$1570043540371avDlf:localhost:8800$1570043539370xCBJr:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kQQQQ$1570043539370xCBJr:localhost:8800$1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800kPQQQ$1570043536368agmuM:localhost:8800$1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800kOQQQ$1570043536367lvGLr:localhost:8800$1570043535366hhblx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800kNQQQ$1570043535366hhblx:localhost:8800$1570043534365WVAkx:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800  QQaC $1570043538369ozxqx:localhost:8800!bLWyXaXdvUhdSAooUz:localhost:8800{"token_id": 636, "stream_ordering": 3367}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!bLWyXaXdvUhdSAooUz:localhost:8800", "sender": "@anon-20191002_181700-656:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-656:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043538369ozxqx:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043538696, "hashes": {"sha256": "qlaEiQcyvREDcFpgq3+uGhQqYi+zKVtgShEfY7T5G5I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TzmKipVYBtCYrwR4PMfzgOTqr3Qvk/Kuv5WT0WbFHykJUplZ7K6s/ui+TKqCh2gInhuL4+vyNNLg9a/7BJn9Cg"}}, "unsigned": {"age_ts": 1570043538696}}x QQa $1570043536368agmuM:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3366}{"auth_events": [["$1570043535366hhblx:localhost:8800", {"sha256": "kFPObOFfrHe7hZa02uaoGK7oQ9RwI1XnGSRTQIkdDoM"}], ["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}], ["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}]], "prev_events": [["$1570043536367lvGLr:localhost:8800", {"sha256": "hZSQPfe3bvdoO/nJbw0CzSijrrwixVSXnRu1/DwoL8o"}]], "type": "m.room.history_visibility", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043536368agmuM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043536872, "hashes": {"sha256": "/QVOXFfO3JGBC9JausKr48CdDwVAYsYy08SyXQhM+Lg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KaTZBjzu0b+z2QMt3LgIKAj2Svn+F4MpKiByO3fw7fxrPT7ZypYr31pGrn6AvcOvb0KsmO/vCg4EubI0MzXWAA"}}, "unsigned": {"age_ts": 1570043536872}}g QQaq $1570043536367lvGLr:localhost:8800!YmRuIWixFpaqEeDQLZ:localhost:8800{"token_id": 635, "stream_ordering": 3365}{"auth_events": [["$1570043533364iwqCT:localhost:8800", {"sha256": "n3l65cTjNs6DEFn5oIiyI4SDdc0MYYFeIOqrbXTijWw"}], ["$1570043534365WVAkx:localhost:8800", {"sha256": "Oe12wp3Edfx5fHSPt3trrC+piZdxWKwGnMJAo1MY2t0"}], ["$1570043535366hhblx:localhost:8800", {"sha256": "kFPObOFfrHe7hZa02uaoGK7oQ9RwI1XnGSRTQIkdDoM"}]], "prev_events": [["$1570043535366hhblx:localhost:8800", {"sha256": "kFPObOFfrHe7hZa02uaoGK7oQ9RwI1XnGSRTQIkdDoM"}]], "type": "m.room.join_rules", "room_id": "!YmRuIWixFpaqEeDQLZ:localhost:8800", "sender": "@anon-20191002_181700-655:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043536367lvGLr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043536150, "hashes": {"sha256": "wUV1KvkCgAfx5dneLJIrN0905arTnDHT9u/sGIyVziU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r1PQ9b8nYeFNY4lJZsan3fsVAbt/5yHJYDoD3hVmChwKspJFrd/FZyFoItazu7OZIo7A6z6E8vNcqJVvfujhDg"}}, "unsigned": {"age_ts": 1570043536150}} 82xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( `XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8                                                                      |  {  z  y  x  w  u  t  s  r  q  p  n  m  l  k  j  i  h  g  f  e  d  c  _  ^  ]  \  [  Z  X  W  V  U  T  S  R  Q  P  O  N  L  K  J  I  H  G  F  E  D  C  B  A  A  A  A  @  >  =  <  ;  :  9  8  8  8  8  7  7  4  3  2  1  0  /  .  -  ,  +  *  )  (  ' ~ & } % | $ { # z " y ! x w  v  u  t  s  r  q  p  o  n  m  l  k  j  i  h  g  f  e  d  c  b  a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                   ~  }  |  {  z  y  x  w  v  u  t  s E>^6nF~V.f>`8pH Y 2 n F  ~ V .  f >  v N &'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800$'Q!aZwMKYDXJRlSKjQNWM:localhost:8800#'Q!aZwMKYDXJRlSKjQNWM:localhost:8800"'Q!aZwMKYDXJRlSKjQNWM:localhost:8800!'Q!aZwMKYDXJRlSKjQNWM:localhost:8800 'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800'Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800j&Q!aWJOsiuJONOvjKWEjO:localhost:8800i&Q!aWJOsiuJONOvjKWEjO:localhost:8800h&Q!aWJOsiuJONOvjKWEjO:localhost:8800g&Q!aWJOsiuJONOvjKWEjO:localhost:8800f&Q!aWJOsiuJONOvjKWEjO:localhost:8800e'Q!aVxOoyiLLnxmzgLJat:localhost:8800='Q!aVxOoyiLLnxmzgLJat:localhost:8800<'Q!aVxOoyiLLnxmzgLJat:localhost:88005'Q!aVxOoyiLLnxmzgLJat:localhost:88004'Q!aVxOoyiLLnxmzgLJat:localhost:88003'Q!aVxOoyiLLnxmzgLJat:localhost:88002'Q!aVxOoyiLLnxmzgLJat:localhost:88001'Q!aVxOoyiLLnxmzgLJat:localhost:88000'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 d'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 c'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 b'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 a'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 `'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800 Z( D . V!#Q |@3)Q E$52:localhost:42455m.room.message!LazKtcHZriKzCvvGwV:localhost:8800mm@@__ANON__-32:localhost:42455x?3!Q E$51:localhost:42455test_state!LazKtcHZriKzCvvGwV:localhost:8800mm㇧@__ANON__-32:localhost:42455{>3'Q E$50:localhost:42455m.room.member!LazKtcHZriKzCvvGwV:localhost:8800mJmー@__ANON__-32:localhost:42455"=Q?Q ]$1570043559386ZLBoz:localhost:8800m.room.history_visibility!LazKtcHZriKzCvvGwV:localhost:8800m~m&@anon-20191002_181700-658:localhost:8800<Q/Q ]$1570043558385Xpkrp:localhost:8800m.room.join_rules!LazKtcHZriKzCvvGwV:localhost:8800m|(m|@anon-20191002_181700-658:localhost:8800;Q3Q ]$1570043558384QrKsp:localhost:8800m.room.power_levels!LazKtcHZriKzCvvGwV:localhost:8800myImy@anon-20191002_181700-658:localhost:8800:Q'Q ]$1570043557383IxQaJ:localhost:8800m.room.member!LazKtcHZriKzCvvGwV:localhost:8800mv8mv@anon-20191002_181700-658:localhost:88009 Q'Q  ]$1570043556382AgYyj:localhost:8800m.room.create!LazKtcHZriKzCvvGwV:localhost:8800ms%ms@anon-20191002_181700-658:localhost:8800|83)Q E $49:localhost:42455m.room.message!lEJUJZxqZPKZetemiR:localhost:8800 mg]mm7@__ANON__-31:localhost:42455|73)Q E $46:localhost:42455m.room.message!lEJUJZxqZPKZetemiR:localhost:8800 mg[mj@__ANON__-31:localhost:42455x63!Q E $45:localhost:42455test_state!lEJUJZxqZPKZetemiR:localhost:8800 mg[mh5@__ANON__-31:localhost:42455x53!Q E $48:localhost:42455test_state!lEJUJZxqZPKZetemiR:localhost:8800 mg\mh5@__ANON__-31:localhost:42455x43!Q E$44:localhost:42455test_state!lEJUJZxqZPKZetemiR:localhost:8800mamd@__ANON__-31:localhost:42455{33'Q E$43:localhost:42455m.room.member!lEJUJZxqZPKZetemiR:localhost:8800m_Zm`@__ANON__-31:localhost:424552Q3Q ]$1570043550380LNzMz:localhost:8800m.room.power_levels!lEJUJZxqZPKZetemiR:localhost:8800m[m\_@anon-20191002_181700-657:localhost:8800"1Q?Q ]$1570043549379wtMED:localhost:8800m.room.history_visibility!lEJUJZxqZPKZetemiR:localhost:8800mW_mY@anon-20191002_181700-657:localhost:88000Q/Q ]$1570043548378IxCfM:localhost:8800m.room.join_rules!lEJUJZxqZPKZetemiR:localhost:8800mT mTc@anon-20191002_181700-657:localhost:8800/Q3Q ]$1570043547377kWWAW:localhost:8800m.room.power_levels!lEJUJZxqZPKZetemiR:localhost:8800mPmQ{@anon-20191002_181700-657:localhost:8800.Q'Q ]$1570043546376YfkfL:localhost:8800m.room.member!lEJUJZxqZPKZetemiR:localhost:8800mKmM@anon-20191002_181700-657:localhost:8800- Q'Q  ]$1570043545375TmtMk:localhost:8800m.room.create!lEJUJZxqZPKZetemiR:localhost:8800mHmI@anon-20191002_181700-657:localhost:8800{,3'Q E$40:localhost:42455m.room.member!bLWyXaXdvUhdSAooUz:localhost:8800m@:m@@__ANON__-30:localhost:42455"+Q?Q ]$1570043542373yGTqH:localhost:8800m.room.history_visibility!bLWyXaXdvUhdSAooUz:localhost:8800m;2m<@anon-20191002_181700-656:localhost:8800*Q/Q ]$1570043541372ZeTYJ:localhost:8800m.room.join_rules!bLWyXaXdvUhdSAooUz:localhost:8800m7Um7@anon-20191002_181700-656:localhost:8800)Q3Q ]$1570043540371avDlf:localhost:8800m.room.power_levels!bLWyXaXdvUhdSAooUz:localhost:8800m3nm5K@anon-20191002_181700-656:localhost:8800(Q'Q ]$1570043539370xCBJr:localhost:8800m.room.member!bLWyXaXdvUhdSAooUz:localhost:8800m0Fm0@anon-20191002_181700-656:localhost:8800' Q'Q  ]$1570043538369ozxqx:localhost:8800m.room.create!bLWyXaXdvUhdSAooUz:localhost:8800m-m-k@anon-20191002_181700-656:localhost:8800"&Q?Q ]$1570043536368agmuM:localhost:8800m.room.history_visibility!YmRuIWixFpaqEeDQLZ:localhost:8800m%m''@anon-20191002_181700-655:localhost:8800 + R   k  A ` 6cv'  FU !UA=ppL+ ] ,@anon-20191002_181700-811:localhost:8800offlinem뺗m3m뺛L* ] ,@anon-20191002_181700-812:localhost:8800offlinemm3m}L) ] ,@anon-20191002_181700-810:localhost:8800offlinem9m3m<K- ] .@anon-20191002_181700-832:localhost:8800onlinemmm:F, ]-@astest-0-20191002_181700:localhost:8800offlinem8]m8]6NF ] @anon-20191002_181700-691:localhost:8800offlinemmژL ] @anon-20191002_181700-684:localhost:8800offlinemQPm*m07F ]@anon-20191002_181700-698:localhost:8800offlinemm @! ]"@anon-20191002_181700-737:localhost:8829offlinemBmL ] @anon-20191002_181700-681:localhost:8800offlinemʫmSmpF ]@anon-20191002_181700-690:localhost:8800offlinemNmNL ] @anon-20191002_181700-683:localhost:8800offlinem m掄m 3 ML ] !@anon-20191002_181700-685:localhost:8800offlinemyamQmUF ]@anon-20191002_181700-678:localhost:8800offlinembmbF ]@anon-20191002_181700-667:localhost:8800offlinemmF ]@anon-20191002_181700-666:localhost:8800offlinembmbL ]  @anon-20191002_181700-657:localhost:8800offlinemHmtmp1Lw ] @anon-20191002_181700-642:localhost:8800offlinemGmlm&Fv ]@anon-20191002_181700-643:localhost:8800offlinemanmK!LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455fQ? Q =!LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility$1570043559386ZLBoz:localhost:8800^Q/ Q  v D  U | J  P  W % # ] +c1?ji7o= uC{IOqjz1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo e1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cp1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY !1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh30<1e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMMY1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A 1e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY64a1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o r1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM|1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk}1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsB1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wI1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI"1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE^1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE]1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE\1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewL1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs'1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAQ1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk"1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wa1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyE51e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgI 0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA 1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4i1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4f1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0M1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM"1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVIF1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc;1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmID1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU x1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA 2  fxQQa $1570043549379wtMED:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3377}{"auth_events": [["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}], ["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "prev_events": [["$1570043548378IxCfM:localhost:8800", {"sha256": "2n0mZuXpgfrfKfH101X4mKjEPbqSdWas2EnPI6EobnY"}]], "type": "m.room.history_visibility", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043549379wtMED:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043549535, "hashes": {"sha256": "aWpQ2TtAiguutYHfn+IlO/T5GfGitDIZ8zYpeMn7q1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RE1a+SYa5T1IW2UqtFZm5d5qJAfIraWuD0zGl2SOEIqyMFiAhQ7OGGD7z0t6p2Whj9Vb70snJuTm6MX5hj2QAA"}}, "unsigned": {"age_ts": 1570043549535}}gQQaq $1570043548378IxCfM:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3376}{"auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}], ["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}]], "prev_events": [["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}]], "type": "m.room.join_rules", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043548378IxCfM:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043548684, "hashes": {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vCtk1TDRCCueG4VWMIMyUikFH7roMVf6LwbCggwrhDPwC2aOAqfQm6460KcaOabNtZusoL3MDnN1CQ699i7zCw"}}, "unsigned": {"age_ts": 1570043548684}}+QQay $1570043547377kWWAW:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3375}{"auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "prev_events": [["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "type": "m.room.power_levels", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"users": {"@anon-20191002_181700-657:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043547377kWWAW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043547884, "hashes": {"sha256": "1XgxfBp72sGP/6Xi5C5SEC3ArLaiAoc6OaRbXawlMLQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wU+hRSMHaqX4/gDWfvN8s1r4k+wuRs9BkLa9AT7MxylqQU+vTE3izOoq3gln4d5PNldNaohF9y6Wh9VEnGo2Bw"}}, "unsigned": {"age_ts": 1570043547884}} 63i~; d  d ) k . y > l /h R{DgE1^Q<Q3 !utJsNQubeIXvcTKGpx:localhost:8800m.room.power_levels:Q/ !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.join_rulesBQ? !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.history_visibility6Q' !vZGjXEXQoCaoUXnkCa:localhost:8800m.room.create<Q3 !vVmSdclwPIqYDbnmPn:localhost:8800m.room.power_levels^Q']!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800^Q']!vVmSdclwPIqYDbnmPn:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800:Q/ !vVmSdclwPIqYDbnmPn:localhost:8800m.room.join_rulesBQ? !vVmSdclwPIqYDbnmPn:localhost:8800m.room.history_visibility6Q' !vVmSdclwPIqYDbnmPn:localhost:8800m.room.create~?Q9 !vVmSdclwPIqYDbnmPn:localhost:8800m.room.canonical_aliasEQ))!vVmSdclwPIqYDbnmPn:localhost:8800m.room.aliaseslocalhost:8800<Q3 !vRmMcoJDeCupADwqac:localhost:8800m.room.power_levelsd^Q']!vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-540:localhost:8829g^Q']!vRmMcoJDeCupADwqac:localhost:8800m.room.member@anon-20191002_181700-539:localhost:8800c:Q/ !vRmMcoJDeCupADwqac:localhost:8800m.room.join_ruleseBQ? !vRmMcoJDeCupADwqac:localhost:8800m.room.history_visibilityf6Q' !vRmMcoJDeCupADwqac:localhost:8800m.room.createb<Q3 !vRRNxNyGboLHNhqQvr:localhost:8800m.room.power_levels^Q']!vRRNxNyGboLHNhqQvr:localhost:8800m.room.member@anon-20191002_181700-222:localhost:8800:Q/ !vRRNxNyGboLHNhqQvr:localhost:8800m.room.join_rulesBQ? !vRRNxNyGboLHNhqQvr:localhost:8800m.room.history_visibility6Q' !vRRNxNyGboLHNhqQvr:localhost:8800m.room.create<Q3 !vOfeZvbtpuHfoqShFl:localhost:8800m.room.power_levels^Q']!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@anon-20191002_181700-189:localhost:8800HQ'1!vOfeZvbtpuHfoqShFl:localhost:8800m.room.member@16:localhost:8800:Q/ !vOfeZvbtpuHfoqShFl:localhost:8800m.room.join_rulesBQ? !vOfeZvbtpuHfoqShFl:localhost:8800m.room.history_visibility<Q3 !vOfeZvbtpuHfoqShFl:localhost:8800m.room.guest_access6Q' !vOfeZvbtpuHfoqShFl:localhost:8800m.room.create<Q3 !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.power_levels]Q'[!vJQYmOxOBLwFKzYkNj:localhost:8800m.room.member@anon-20191002_181700-62:localhost:8800:Q/ !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.join_rulesBQ? !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.history_visibility6Q' !vJQYmOxOBLwFKzYkNj:localhost:8800m.room.create:Q/ !vJQYmOxOBLwFKzYkNj:localhost:8800a.test.state.type<Q3 !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.power_levels"^Q']!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-511:localhost:8829'^Q']!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.member@anon-20191002_181700-510:localhost:8800!:Q/ !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.join_rules$BQ? !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.history_visibility%6Q' !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.create ?Q9 !vBvlJEXUSQKUYmsKcO:localhost:8800m.room.canonical_alias#EQ))!vBvlJEXUSQKUYmsKcO:localhost:8800m.room.aliaseslocalhost:8800&<Q3 !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.power_levels^Q']!vAUAIZrCnHTeMGeNuw:localhost:8800m.room.member@anon-20191002_181700-226:localhost:8800:Q/ !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.join_rulesBQ? !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.history_visibility6Q' !vAUAIZrCnHTeMGeNuw:localhost:8800m.room.create;Q3 !uxKymrHZeXRYCZwekU:localhost:8800m.room.power_levels;AQ? !uxKymrHZeXRYCZwekU:localhost:8800m.room.history_visibility=5Q' !uxKymrHZeXRYCZwekU:localhost:8800m.room.create99Q/ !uxKymrHZeXRYCZwekU:localhost:8800m.room.join_rules<\Q'[!uxKymrHZeXRYCZwekU:localhost:8800m.room.member@anon-20191002_181700-20:localhost:8800:  03Qc $44:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "stream_ordering": 3380}{"content": {"body": "event_b"}, "event_id": "$44:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "prev_events": [["$1570043549379wtMED:localhost:8800", {"sha256": "aWpQ2TtAiguutYHfn+IlO/T5GfGitDIZ8zYpeMn7q1E"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "origin_server_ts": 1570043552017, "origin": "localhost:42455", "depth": 8, "state_key": "B", "type": "test_state", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}, "signatures": {"localhost:42455": {"ed25519:1": "LWbuVRT3UaapxvF3XgeeLi1P7BMmorPTfr5MBRJ/GHmgCXZELOQCLe2ErBQFz8DYWCgRtwm+i2maB+OOUOglAA"}}, "unsigned": {}}R3Q3 $43:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3379}{"event_id": "$43:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "2n0mZuXpgfrfKfH101X4mKjEPbqSdWas2EnPI6EobnY"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "bGpVgBuUZLqKXPG99etotpdFXpeEKKW1m5j3g38p15A"}]], "content": {"membership": "join"}, "origin_server_ts": 1570043551578, "prev_events": [["$1570043550380LNzMz:localhost:8800", {"sha256": "bGpVgBuUZLqKXPG99etotpdFXpeEKKW1m5j3g38p15A"}]], "type": "m.room.member", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-31:localhost:42455", "depth": 7, "hashes": {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}, "sender": "@__ANON__-31:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "nez5JsXpw/klgSVtM2Pacmcfl4AVK/6c6k0YGxUITtgWV4olE+T++7Aj6Xocicl6aiUQ4g3+QebK1BUyXYWdCQ"}}, "unsigned": {}}kQQay $1570043550380LNzMz:localhost:8800!lEJUJZxqZPKZetemiR:localhost:8800{"token_id": 637, "stream_ordering": 3378}{"auth_events": [["$1570043547377kWWAW:localhost:8800", {"sha256": "dh/XZSK4kctULgKzBNIScEnqbGMVigvLoZu/igPiV2c"}], ["$1570043545375TmtMk:localhost:8800", {"sha256": "7HPiElGbeTFTpdAqvnC8Fh5KEArzSL6iucZinXT8Ltg"}], ["$1570043546376YfkfL:localhost:8800", {"sha256": "evyBvem/Kstt28QG1xl/1F7svuftKg0twnnY3Wl4eSg"}]], "prev_events": [["$1570043549379wtMED:localhost:8800", {"sha256": "I8Il4nXnf7nj9l/1FkqLM1ntxH/NSf+pf+8Cfrlt9fg"}]], "type": "m.room.power_levels", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "sender": "@anon-20191002_181700-657:localhost:8800", "content": {"users": {"@anon-20191002_181700-657:localhost:8800": 100, "@__ANON__-31:localhost:42455": 100}, "state_default": 50, "events_default": 0, "kick": 50, "events": {"m.room.canonical_alias": 50, "m.room.name": 50, "m.room.avatar": 50, "m.room.history_visibility": 100, "m.room.power_levels": 100}, "redact": 50, "ban": 50, "invite": 0, "users_default": 0}, "depth": 6, "prev_state": [], "state_key": "", "event_id": "$1570043550380LNzMz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043550719, "hashes": {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8O8BWbptghxvNmhETWbppdZxUHX/PplTB+W1nfSuvIpS9Okx292PCXPZRh4nvH9eterObRj2btD8hh6SbfCZCw"}}, "unsigned": {"age_ts": 1570043550719, "replaces_state": "$1570043547377kWWAW:localhost:8800"}} T~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf\RH>4*  vlbXND:0&= < ;  ~: } |9 | {8 { y7 z w6 y x5 w v4 v u3 u t2 t s1 s r0 q p/ p o. o n- n m, m l+ l k* k j) i h( h g' g f& f e% d c$ c b# b a" a `! ` _  _ ^ ^ ] \ [ [ Z Z Y Y X X W W V V T U S S R R Q Q P O N N M M L L K K J I H  H F  G F  F E  E D  D C C B B A @ ? ? > > = = < < ; : 3 9 8 8 7~ 7 6} 6 5| 5 4{ 3 ,z 2 1y 1 0x 0 /w / .v . -u , +t + $s * )r ) (q ( 'p ' &o & %n $ #m # "l " !k ! j i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [  Z Y X W V  U  T  S  R  Q  P  O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                         ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a `  ~_ } {^ | {] { y\ z x[ y wZ x vY w uX v tW u sV t rU q pT p oS n mR l jQ k jP j iO i hN h gM g fL e dK a `J ` _I _ ]H ^ ]G ] \F \ [E [ ZD Z YC X WB W UA V U@ U T? T S> S R= R Q< P O; O M: N F9 M K8 L K7 K J6 J I5 I H4 H G3 F D2 E D1 D C0 C B/ B A. A @- ? >, > =+ = <* < ;) ; 9( : 9' 9 8& 8 7% 7 6$ 6 5# 4 2" 3 2! 2 1  1 0 0 / / . - , , * + * * ) ) ( ( ' ' & % # $ # # " " ! !                                        ~  }  |  {  z  y  x  w  v u t s r q p o n m l k j  _3Qce $46:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "stream_ordering": 3383}{"depth": 9, "origin": "localhost:42455", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "YaFkewNiy7Ei3Zu2hwjns2vlk6xdrDKmed9foCMsdks"}, "content": {"body": "event_x"}, "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "event_id": "$46:localhost:42455", "prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}], ["$45:localhost:42455", {"sha256": "2xL4z1deikp5ByriZHdFdSy+KbhyuY59fzUYBkx43oQ"}]], "origin_server_ts": 1570043553627, "signatures": {"localhost:42455": {"ed25519:1": "5g1Tg62/Wt1HUqDr+3V7xUxhLgaAsxcFrqk9RrtmNHUAvag8gezNQwC0CXELrbR0OKel1Agkie60U1Gel5I3DQ"}}, "unsigned": {}}L3QaY $45:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": true, "stream_ordering": 3382}{"sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "2xL4z1deikp5ByriZHdFdSy+KbhyuY59fzUYBkx43oQ"}, "origin": "localhost:42455", "depth": 9, "state_key": "Y", "type": "test_state", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}]], "origin_server_ts": 1570043553627, "content": {"body": "event_y"}, "event_id": "$45:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "signatures": {"localhost:42455": {"ed25519:1": "eoy/K33mOxVmfOlLRudD1Hcz2GoLk0kr5CcnGlGL8qEAKnJ4Gq8sUOkl1qRUhXOmBQ3SFf8Qc0eF1oncEHHKCA"}}, "unsigned": {}}M3Qa[ $48:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": true, "stream_ordering": 3381}{"hashes": {"sha256": "xdYpTXzCWL3doMx7xlKjIx+5NLl9x4Rc2eK39WFbL30"}, "sender": "@__ANON__-31:localhost:42455", "type": "test_state", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "origin": "localhost:42455", "depth": 9, "state_key": "T", "origin_server_ts": 1570043553628, "prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}]], "event_id": "$48:localhost:42455", "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "content": {"topic": "how now"}, "signatures": {"localhost:42455": {"ed25519:1": "oA5MRdkgD5j8ps6szExlIoYavKhaAGM8zBEr5tGQdVvxkrezmBGp6Myz3zTyWAR7eYcOpssJnkpKAJmiY/V1CA"}}, "unsigned": {}} fA, P  F~L v ] D +  | J  j8R ^,X&4l:r@>x Z ( ` .f d1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAl1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y[1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YZ1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI!1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI 1e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgi1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA 1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I r1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I q1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I p1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM 1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUd1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzUc1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4 1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI 1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAn1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzAm1e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE01e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY 1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc 1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc 1e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc 1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMsp1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMj1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMi1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMh1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE 1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE 3$94:localhost:42455R3$94:localhost:42455Q3$94:localhost:42455P3$90:localhost:42455C3$90:localhost:42455B3$90:localhost:42455A1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz4 1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp011e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp001e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgj21e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9Q1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4'1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4)1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4(1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp0/1e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI (cM_ g  @ ~ " Y x NmObL'iDchQ']Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.member@anon-20191002_181700-659:localhost:8800$1570043566390qTwyJ:localhost:8800YgQ' Q !drnXStKXkNQkouqUAg:localhost:8800m.room.create$1570043565389RsxAr:localhost:8800YfQ' Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.create$1570043564388ZmOEV:localhost:8800]eQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800fdQ'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455YcQ' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800_bQ3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800]aQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800f`Q'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455Y_Q' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800_^Q3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800H]Q!3 !LazKtcHZriKzCvvGwV:localhost:8800test_stateY$51:localhost:42455f\Q'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455[Q']Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800$1570043557383IxQaJ:localhost:8800eZQ? Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility$1570043559386ZLBoz:localhost:8800]YQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800_XQ3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800YWQ' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800fVQ'E3 !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$50:localhost:42455uUQ'EQ !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@__ANON__-32:localhost:42455$1570043560387Dqcih:localhost:8800eTQ? Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.history_visibility$1570043559386ZLBoz:localhost:8800]SQ/ Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.join_rules$1570043558385Xpkrp:localhost:8800_RQ3 Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.power_levels$1570043558384QrKsp:localhost:8800QQ']Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.member@anon-20191002_181700-658:localhost:8800$1570043557383IxQaJ:localhost:8800YPQ' Q !LazKtcHZriKzCvvGwV:localhost:8800m.room.create$1570043556382AgYyj:localhost:8800]OQ/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800fNQ'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455YMQ' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800_LQ3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800]KQ/ Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.join_rules$1570043548378IxCfM:localhost:8800fJQ'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455YIQ' Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.create$1570043545375TmtMk:localhost:8800_HQ3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800_GQ3 Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.power_levels$1570043550380LNzMz:localhost:8800HFQ!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateY$45:localhost:42455HEQ!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateT$48:localhost:42455fDQ'E3 !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@__ANON__-31:localhost:42455$43:localhost:42455CQ']Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.member@anon-20191002_181700-657:localhost:8800$1570043546376YfkfL:localhost:8800HBQ!3 !lEJUJZxqZPKZetemiR:localhost:8800test_stateB$44:localhost:42455eAQ? Q !lEJUJZxqZPKZetemiR:localhost:8800m.room.history_visibility$1570043549379wtMED:localhost:8800 6`8X0pH X 0  h @  x P ( ` 8  p H 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800('Q!nxLxsxzliamzflrEBs:localhost:8800%'Q!nxLxsxzliamzflrEBs:localhost:8800"'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800C'Q!nvclDopiBLEOKBIheH:localhost:8800B'Q!nvclDopiBLEOKBIheH:localhost:8800A'Q!nvclDopiBLEOKBIheH:localhost:8800@'Q!nvclDopiBLEOKBIheH:localhost:8800?'Q!ntuwVdUxfzNIhIKYaz:localhost:88009'Q!ntuwVdUxfzNIhIKYaz:localhost:88008'Q!ntuwVdUxfzNIhIKYaz:localhost:88007'Q!ntuwVdUxfzNIhIKYaz:localhost:88006'Q!ntuwVdUxfzNIhIKYaz:localhost:88005'Q!ntuwVdUxfzNIhIKYaz:localhost:88004'Q!ntuwVdUxfzNIhIKYaz:localhost:88003'Q!ntuwVdUxfzNIhIKYaz:localhost:88002'Q!ntuwVdUxfzNIhIKYaz:localhost:88001'Q!ntuwVdUxfzNIhIKYaz:localhost:88000'Q!ntuwVdUxfzNIhIKYaz:localhost:8800/'Q!ntuwVdUxfzNIhIKYaz:localhost:8800.'Q!ntuwVdUxfzNIhIKYaz:localhost:8800-'Q!ntuwVdUxfzNIhIKYaz:localhost:8800,'Q!ntuwVdUxfzNIhIKYaz:localhost:8800+'Q!ntuwVdUxfzNIhIKYaz:localhost:8800*'Q!ntuwVdUxfzNIhIKYaz:localhost:8800)'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800 N iUN!QQa) $1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3386}{"auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}]], "prev_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}]], "type": "m.room.member", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-658", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-658:localhost:8800", "event_id": "$1570043557383IxQaJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043557432, "hashes": {"sha256": "v4Y5TrNLqu+YmDWzIzOPFrV11eyzi6lp7uCGhbRL45c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "89YGTtc07Al6NHz4ucevRANPhPZBdkY37HyA4h8Di5rGuo9zVvFyE9KHaByc8fMeDF+g7IqJMk5b7zUHBk/tAQ"}}, "unsigned": {"age_ts": 1570043557432}} QQaC $1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3385}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-658:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043556382AgYyj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043556645, "hashes": {"sha256": "U3T6UTooy9vJeVczq2pPPG14DrxwAKItKenpSaibXm4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yjwR4j4M6V8c3s07/F0w6x2JlTAs7Y3rdz7LUONP7Bkv25YLYy36vCsp2wregA9N5Ee/TYdQW4BR7bMXChxbDw"}}, "unsigned": {"age_ts": 1570043556645}}3Qce $49:localhost:42455!lEJUJZxqZPKZetemiR:localhost:8800{"outlier": false, "stream_ordering": 3384}{"prev_events": [["$44:localhost:42455", {"sha256": "St02eENl+y0qob9OUQVTwUL+rgwMR76txEj6BL+MgLc"}], ["$46:localhost:42455", {"sha256": "YaFkewNiy7Ei3Zu2hwjns2vlk6xdrDKmed9foCMsdks"}]], "origin_server_ts": 1570043553629, "content": {"body": "event_c"}, "auth_events": [["$1570043545375TmtMk:localhost:8800", {"sha256": "hWgSByCU068cbVBlprh5wj74bUvPxYTSqrUHqcrjtN4"}], ["$1570043548378IxCfM:localhost:8800", {"sha256": "beQU3wObjVsXZAU/rZ3nstRPZ6B547AxOWvlHbXDxR8"}], ["$1570043550380LNzMz:localhost:8800", {"sha256": "MqZNW0RjvEGvYXrfIxNb0MYI6XupyLpVO0A4nkJc+I8"}], ["$43:localhost:42455", {"sha256": "Pb4bsf48lUrbb1Q+uFEQVkjziZrl0IG9P218a6ZfMiE"}]], "event_id": "$49:localhost:42455", "sender": "@__ANON__-31:localhost:42455", "hashes": {"sha256": "fNKJ8hTqq9QPYmMmkLjpKYQLPtuzzY1MOO5RrtOtu1A"}, "depth": 9, "origin": "localhost:42455", "room_id": "!lEJUJZxqZPKZetemiR:localhost:8800", "type": "m.room.message", "signatures": {"localhost:42455": {"ed25519:1": "+dkYPw00Sb8pHVRITKdgrt7bx8z123ES1oL3PxZaEBwX5M1tS/qI3r9EWU1hnQ9mOd+/4QR5dpzS+sRWA+OVAw"}}, "unsigned": {}}  fx$QQa $1570043559386ZLBoz:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3389}{"auth_events": [["$1570043558384QrKsp:localhost:8800", {"sha256": "C9ZxoKUijCUCyUsz0ORIFjPoReDRyGTMBDBHQ/VKeQ8"}], ["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}], ["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}]], "prev_events": [["$1570043558385Xpkrp:localhost:8800", {"sha256": "9gL7CXxOuW9ckTga5kCxIRSOYRZkiNmM/4tYtYkjbjo"}]], "type": "m.room.history_visibility", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043559386ZLBoz:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043559618, "hashes": {"sha256": "FDJLXXEjdalG7E3l7LUDJOKYQZ8Z2cfa2nL7b+V2W4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KRu68DxJlc6kxnopnu4Zvkq3bCkgeLN1DFN9PXwFZNejOoNHMUZ4ar8Jfs8funkiLRrAnmb2+SwO2WKrkTlKDg"}}, "unsigned": {"age_ts": 1570043559618}}g#QQaq $1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3388}{"auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}], ["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}], ["$1570043558384QrKsp:localhost:8800", {"sha256": "C9ZxoKUijCUCyUsz0ORIFjPoReDRyGTMBDBHQ/VKeQ8"}]], "prev_events": [["$1570043558384QrKsp:localhost:8800", {"sha256": "C9ZxoKUijCUCyUsz0ORIFjPoReDRyGTMBDBHQ/VKeQ8"}]], "type": "m.room.join_rules", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043558385Xpkrp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043558952, "hashes": {"sha256": "DqoUE2zvx+Tty5OTkAsQpHAgod0oy0sjhpbl8WmyxKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9DLvQCFmHJcC6k9tXln+kDYMcuH/es+HtHGlxL56RBV55oGAXnD/CGxYDTN3sB/KKt9aLzrNW7Lg1rwnJAr8BQ"}}, "unsigned": {"age_ts": 1570043558952}}+"QQay $1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800{"token_id": 638, "stream_ordering": 3387}{"auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "5n+lDfufznUU3ditiifhJw1+PJF/CfKJKs5ISq75DU8"}], ["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}]], "prev_events": [["$1570043557383IxQaJ:localhost:8800", {"sha256": "6nah4DX4bea15kdIcbn7Vy8J9L5cz58VhE6jp8evJvI"}]], "type": "m.room.power_levels", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@anon-20191002_181700-658:localhost:8800", "content": {"users": {"@anon-20191002_181700-658:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043558384QrKsp:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043558217, "hashes": {"sha256": "3G3wlvAqGuomppnuBkfFjlVGaNShsAqSZBImF9NvAXg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KCCpofu4t+B5nPdYSNEoWBN1nZxHX7vOnmue9mUkReQJKB9r6x29YDLH/mRycLgt7CkJ6w7uHdIGKR/+xTD5Bw"}}, "unsigned": {"age_ts": 1570043558217}} &w&L r  X >  ;a@fE+Qwj;QQQ$1570043581404AarAd:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j:QQQ$1570043581404AarAd:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j9QQQ$1570043580403vYYeb:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800j8QQQ$1570043579402KDYtE:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800[73QQ$54:localhost:42455$1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800[63QQ$54:localhost:42455$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800[53QQ$54:localhost:42455$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j4QQQ$1570043572397AAGBm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j3QQQ$1570043572397AAGBm:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j2QQQ$1570043572397AAGBm:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j1QQQ$1570043572396lZXIU:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j0QQQ$1570043572396lZXIU:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j/QQQ$1570043572396lZXIU:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j.QQQ$1570043571395bDLFD:localhost:8800$1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j-QQQ$1570043571395bDLFD:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j,QQQ$1570043571395bDLFD:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j+QQQ$1570043570394QELCg:localhost:8800$1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j*QQQ$1570043570394QELCg:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j)QQQ$1570043570394QELCg:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j(QQQ$1570043569393UscIm:localhost:8800$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j'QQQ$1570043569393UscIm:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j&QQQ$1570043568392ItLhq:localhost:8800$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j%QQQ$1570043568392ItLhq:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800j$QQQ$1570043567391GonfI:localhost:8800$1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800j#QQQ$1570043566390qTwyJ:localhost:8800$1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800L"33Q$51:localhost:42455$50:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800[!3QQ$51:localhost:42455$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[ 3QQ$51:localhost:42455$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$51:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$50:localhost:42455$1570043558385Xpkrp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$50:localhost:42455$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800[3QQ$50:localhost:42455$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043559386ZLBoz:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043559386ZLBoz:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043559386ZLBoz:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043558385Xpkrp:localhost:8800$1570043558384QrKsp:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043558385Xpkrp:localhost:8800$1570043557383IxQaJ:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800jQQQ$1570043558385Xpkrp:localhost:8800$1570043556382AgYyj:localhost:8800!LazKtcHZriKzCvvGwV:localhost:8800 2|b"S f  y * L _  r #6X kGOD9.|VTeL$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUsha256I; 3iEKW/ 6e,NE UVSeL$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcsha256.XXϞ@/b#\6*+ԥͥZVReL$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEsha256OBۘ:T_ZjxOaVQeL$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8sha256ui&OO%kˋ8R䮴VPeL$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQsha256K^J-IM0g vso΂ZKtVOeL$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucsha256vXVLeL$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygsha256kx cSOq,.Ut#{Pao(VKeL$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0sha2560% ـʛ!Y3jMVJeL$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAsha256M.gQ&Q}ط g/]>SpVIeL$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4sha256POӎ`AJk_lQVHeL$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgsha256tJ.[C5mix c@xCG?L$60_msg_e:localhost:42455sha256n, jfKӹ(:dcFJxBCF?L$59_msg_d:localhost:42455sha2563cs3H2&j'{A<=E3L$56:localhost:42455sha256 C0 hߏS焥ڀ{`LDQL$1570043593416CouYv:localhost:8800sha2561k LR75BLCQL$1570043592415heiAH:localhost:8800sha256>HNK11jJ-׏O}zZ:LBQL$1570043591414NuXxd:localhost:8800sha256UvnJ}i͌03<:LAQL$1570043590413Khvee:localhost:8800sha256g\Kp+=% 5~fzU5 L@QL$1570043589412JaDTY:localhost:8800sha256y84 x3eO+.v c)zvL?QL$1570043588411PDBWG:localhost:8800sha256G苫.攴A%JlPD*yGLK맡=>3L$55:localhost:42455sha256$-"2Sj鎫M- XL=QL$1570043585409JoQZw:localhost:8800sha256_Jtgt3VTElЁU2#L<QL$1570043584408XdGfO:localhost:8800sha256 ?<4bVňŪR<[tDL;QL$1570043583407USfCf:localhost:8800sha256QkOv)}IH$'L:QL$1570043583406mAAxW:localhost:8800sha256?[W"`W]fK{xq N&4L9QL$1570043582405uFoRY:localhost:8800sha256mRNaX720;I0 L8QL$1570043581404AarAd:localhost:8800sha256簂yS0[+L7QL$1570043580403vYYeb:localhost:8800sha256OwT7y u)RAlnL6QL$1570043579402KDYtE:localhost:8800sha256g8ґnbQnj@c=rLItL5QL$1570043578401arzBQ:localhost:8800sha256'CWA$V+܉LCHj*[(L4QL$1570043578400zncwP:localhost:8800sha256!fHӂD5@9?3ڟHL3QL$1570043575399SiSKs:localhost:8800sha256\*o1a6}G%cz/=23L$54:localhost:42455sha256)) 8rz>Y5DM9{p8 ?)W~[L1QL$1570043572397AAGBm:localhost:8800sha256z9,%yQ%C0)qKY X@L0QL$1570043572396lZXIU:localhost:8800sha2568:}L!ˊAֺ, L/QL$1570043571395bDLFD:localhost:8800sha256vP261j'rw"+VDxvL.QL$1570043570394QELCg:localhost:8800sha2565GdC j^ItB6]L-QL$1570043569393UscIm:localhost:8800sha256z-@D˖JN"bKOʱEtw<МL,QL$1570043568392ItLhq:localhost:8800sha256DvobeKS4_͐~l+L+QL$1570043567391GonfI:localhost:8800sha2560Tvk1L1Tl lhAAzL*QL$1570043566390qTwyJ:localhost:8800sha256Kӈg&}ҡ ,-:7LP͝ᰥL)QL$1570043565389RsxAr:localhost:8800sha256BBÂ:jO9y騝N+/L(QL$1570043564388ZmOEV:localhost:8800sha256 ʸ[6 )\ FӜP{xh>ځ ='3L$53:localhost:42455sha2562Σp%Ju]1 JC>W|08=&3L$52:localhost:42455sha256c7"[e2 D* R=%3L$50:localhost:42455sha256@!4(gySĠ$?Q9 !UTAORDrNxIbSlGByAp:localhost:8800m.room.canonical_alias =6Q' !TleKOyAElrpgyyrAQA:localhost:8800m.room.create^Q']!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-608:localhost:8800 :6Q' !UTAORDrNxIbSlGByAp:localhost:8800m.room.create 8  +QQa) $1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3396}{"auth_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}]], "prev_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}]], "type": "m.room.member", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-659", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-659:localhost:8800", "event_id": "$1570043566390qTwyJ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043566958, "hashes": {"sha256": "a4dh5Z7x/yhp+KUqKUxG59DnUyKhvM1dkHbTt8ommCA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v3Atdsa1YaqHIClqhQvsm/0lTeomx2roLbhY4ZOWO+p7Cq0H9nEsTiwOj4A72wjKRgY9d0HWizI4e+Lj/34tDg"}}, "unsigned": {"age_ts": 1570043566958}}*QQaC $1570043565389RsxAr:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3395}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-660:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043565389RsxAr:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043565148, "hashes": {"sha256": "gTewl/8v9kvl4eTl+TBcKLa8UZFoiJ4vtbKJlDCQm4Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VzUz4a6I8qvM7nxq/ERciVoWhL155BQWIlsQPi9FGCzQEYxBrhmDRqocV4D4rF4Xd568ec1mXzUgiZWM5jd2Aw"}}, "unsigned": {"age_ts": 1570043565148}})QQaC $1570043564388ZmOEV:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3394}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-659:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043564388ZmOEV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043564863, "hashes": {"sha256": "B8rZUdE4lZO8nrMaYJgMBIl2CmXq7E1jOvWdMqtDKdI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HWLONvypwScF6IZj41jB44bQUObwsvGNPXvyRrQ8dlsZrtWyWcoawZR7Kkc96F8Az+xJg7how6pAnUwKI3A1BA"}}, "unsigned": {"age_ts": 1570043564863}}v(3Qc+ $53:localhost:42455!LazKtcHZriKzCvvGwV:localhost:8800{"outlier": false, "stream_ordering": 3393}{"origin": "localhost:42455", "depth": 7, "type": "m.room.message", "room_id": "!LazKtcHZriKzCvvGwV:localhost:8800", "sender": "@__ANON__-32:localhost:42455", "hashes": {"sha256": "DJeunpeq6qv9yDeQzE/isbG+HobR/7+DvAEwv+0M6oU"}, "content": {"body": "event_c"}, "event_id": "$53:localhost:42455", "auth_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "U3T6UTooy9vJeVczq2pPPG14DrxwAKItKenpSaibXm4"}], ["$1570043558385Xpkrp:localhost:8800", {"sha256": "DqoUE2zvx+Tty5OTkAsQpHAgod0oy0sjhpbl8WmyxKU"}], ["$1570043558384QrKsp:localhost:8800", {"sha256": "3G3wlvAqGuomppnuBkfFjlVGaNShsAqSZBImF9NvAXg"}], ["$50:localhost:42455", {"sha256": "l9/c/mcPB7VFnDGsefAkwudrfgEa2IsMOSHuG1XHURI"}]], "prev_events": [["$1570043556382AgYyj:localhost:8800", {"sha256": "U3T6UTooy9vJeVczq2pPPG14DrxwAKItKenpSaibXm4"}], ["$50:localhost:42455", {"sha256": "l9/c/mcPB7VFnDGsefAkwudrfgEa2IsMOSHuG1XHURI"}], ["$52:localhost:42455", {"sha256": "XrNViJfbas+bnwq7GnkRWu+iZl66u/TPn0rJidaHPQ4"}]], "origin_server_ts": 1570043561184, "signatures": {"localhost:42455": {"ed25519:1": "GcA6bx4ZOoJgEVYx52hex/dHVeqWLovsQ7ok3Iav6+/khOHb+ldu9eJrJe/D715GE+HeWWhGFmCaFMXUChlBCg"}}, "unsigned": {}} _Q  } ? U< r8\_Z Q'Q  ]$1570043589412JaDTY:localhost:8800m.room.create!dBfASZrfiFeSKTjYJm:localhost:8800m0m@anon-20191002_181700-663:localhost:8800YQ)Q ]$1570043588411PDBWG:localhost:8800m.room.message!tcYctHPiaKzsKgrXlU:localhost:8800mm@anon-20191002_181700-661:localhost:8800{X3'Q E$55:localhost:42455m.room.member!taANXnGBZntAreRurn:localhost:8800mm@__ANON__-34:localhost:42455"WQ?Q ]$1570043585409JoQZw:localhost:8800m.room.history_visibility!taANXnGBZntAreRurn:localhost:8800mm@anon-20191002_181700-662:localhost:8800"VQ?Q ]$1570043584408XdGfO:localhost:8800m.room.history_visibility!tcYctHPiaKzsKgrXlU:localhost:8800m|m@anon-20191002_181700-661:localhost:8800UQ/Q ]$1570043583407USfCf:localhost:8800m.room.join_rules!taANXnGBZntAreRurn:localhost:8800mom@anon-20191002_181700-662:localhost:8800TQ/Q ]$1570043583406mAAxW:localhost:8800m.room.join_rules!tcYctHPiaKzsKgrXlU:localhost:8800m.m@anon-20191002_181700-661:localhost:8800SQ3Q ]$1570043582405uFoRY:localhost:8800m.room.power_levels!taANXnGBZntAreRurn:localhost:8800mjmb@anon-20191002_181700-662:localhost:8800RQ3Q ]$1570043581404AarAd:localhost:8800m.room.power_levels!tcYctHPiaKzsKgrXlU:localhost:8800m%m?@anon-20191002_181700-661:localhost:8800QQ'Q ]$1570043580403vYYeb:localhost:8800m.room.member!taANXnGBZntAreRurn:localhost:8800mΘmц@anon-20191002_181700-662:localhost:8800PQ'Q ]$1570043579402KDYtE:localhost:8800m.room.member!tcYctHPiaKzsKgrXlU:localhost:8800m̰m@anon-20191002_181700-661:localhost:8800O Q'Q  ]$1570043578401arzBQ:localhost:8800m.room.create!taANXnGBZntAreRurn:localhost:8800mm @anon-20191002_181700-662:localhost:8800N Q'Q  ]$1570043578400zncwP:localhost:8800m.room.create!tcYctHPiaKzsKgrXlU:localhost:8800mm@anon-20191002_181700-661:localhost:8800MQ)Q ]$1570043575399SiSKs:localhost:8800m.room.message!zScKnCZCFPIIodAiQj:localhost:8800m㾄m㾇@anon-20191002_181700-659:localhost:8800{L3'Q E$54:localhost:42455m.room.member!drnXStKXkNQkouqUAg:localhost:8800m㹆m@__ANON__-33:localhost:42455"KQ?Q ]$1570043572397AAGBm:localhost:8800m.room.history_visibility!drnXStKXkNQkouqUAg:localhost:8800mmM@anon-20191002_181700-660:localhost:8800"JQ?Q ]$1570043572396lZXIU:localhost:8800m.room.history_visibility!zScKnCZCFPIIodAiQj:localhost:8800m㰚mB@anon-20191002_181700-659:localhost:8800IQ/Q ]$1570043571395bDLFD:localhost:8800m.room.join_rules!drnXStKXkNQkouqUAg:localhost:8800mAm㭓@anon-20191002_181700-660:localhost:8800HQ/Q ]$1570043570394QELCg:localhost:8800m.room.join_rules!zScKnCZCFPIIodAiQj:localhost:8800mmD@anon-20191002_181700-659:localhost:8800GQ3Q ]$1570043569393UscIm:localhost:8800m.room.power_levels!drnXStKXkNQkouqUAg:localhost:8800mPmc@anon-20191002_181700-660:localhost:8800FQ3Q ]$1570043568392ItLhq:localhost:8800m.room.power_levels!zScKnCZCFPIIodAiQj:localhost:8800mmy@anon-20191002_181700-659:localhost:8800EQ'Q ]$1570043567391GonfI:localhost:8800m.room.member!drnXStKXkNQkouqUAg:localhost:8800m[m@anon-20191002_181700-660:localhost:8800DQ'Q ]$1570043566390qTwyJ:localhost:8800m.room.member!zScKnCZCFPIIodAiQj:localhost:8800mnm㞅@anon-20191002_181700-659:localhost:8800C Q'Q  ]$1570043565389RsxAr:localhost:8800m.room.create!drnXStKXkNQkouqUAg:localhost:8800m\m㗽@anon-20191002_181700-660:localhost:8800B Q'Q  ]$1570043564388ZmOEV:localhost:8800m.room.create!zScKnCZCFPIIodAiQj:localhost:8800m?m㔶@anon-20191002_181700-659:localhost:8800|A3)Q E$53:localhost:42455m.room.message!LazKtcHZriKzCvvGwV:localhost:8800mm㋺@__ANON__-32:localhost:42455 g * T~=gg]!c@anon-20191002_181700-669:localhost:8800UUBRIPFVWOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5wog~]!c@anon-20191002_181700-668:localhost:8800DCHVQLDWGWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgog}]!c@anon-20191002_181700-667:localhost:8800DHNKEQDWHNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgog|]!c@anon-20191002_181700-666:localhost:8800LFHXFSCDSBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4gog{]!c@anon-20191002_181700-665:localhost:8800DPWOXNTOWQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgogz]!c@anon-20191002_181700-664:localhost:8800KYCVQKAERIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwogy]!c@anon-20191002_181700-663:localhost:8800IQBGXQXUIHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwogx]!c@anon-20191002_181700-662:localhost:8800BPDPANNUMTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2gogw]!c@anon-20191002_181700-661:localhost:8800UIDVSRDCXVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQogv]!c@anon-20191002_181700-660:localhost:8800MWFTHHYRXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgogu]!c@anon-20191002_181700-659:localhost:8800KLSOKHZPOFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1go 8l D `8l]c!E@anon-20191002_181700-668:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDAyPU9HMyZGcDVSXlpsbVQKMDAyZnNpZ25hdHVyZSB9pZHDnfw4b972PKJ33BM9NgYPUMkIcRRa782zOCkfXgoDCHVQLDWGW127.0.0.1Perl + Net::Async::HTTP/0.44mtk]c!E@anon-20191002_181700-667:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQ9WUY6WTNYTzJEKlIqcWIKMDAyZnNpZ25hdHVyZSAqJmpmggMMdMlhUWvk8mmHE0xYER_05FIApGcC_5m2rgoDHNKEQDWHN127.0.0.1Perl + Net::Async::HTTP/0.44mh,j]c!E@anon-20191002_181700-666:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEguam05QTgudWZBM1kmU2EKMDAyZnNpZ25hdHVyZSAIBihHzitHWklto81yCDnUpHvt06jCnakLLolvXzeU4goLFHXFSCDSB127.0.0.1Perl + Net::Async::HTTP/0.44mKi]c!E@anon-20191002_181700-665:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERnQS1wSG84ai5yXjhkRWgKMDAyZnNpZ25hdHVyZSDtRof6GPdOtA56DlKVhQUmIwJxOw1C629hiIVo1XiwUgoDPWOXNTOWQ127.0.0.1Perl + Net::Async::HTTP/0.44m-h]c!E@anon-20191002_181700-664:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFQjMGZMLmJGcDJaPWtLTDAKMDAyZnNpZ25hdHVyZSDZJb0YLiKgcw-18cIVEnXhA8LBrA3khB-ohCDLSjHUcwoKYCVQKAERI127.0.0.1Perl + Net::Async::HTTP/0.44mg]c!E@anon-20191002_181700-663:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpNOj1OYWduKjZuUENUNnAKMDAyZnNpZ25hdHVyZSDhk-An-t4iP5FvpHUTEoEWHee7TYKMiFpu3cusCKcKYwoIQBGXQXUIH127.0.0.1Perl + Net::Async::HTTP/0.44mf]c!E@anon-20191002_181700-662:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE0S0k2d2Vianp3MlNuS34KMDAyZnNpZ25hdHVyZSCux7mwe9laLRyCru1FWUE_D0zPMSsAVayhHqpn5Xoo2goBPDPANNUMT127.0.0.1Perl + Net::Async::HTTP/0.44me]c!E@anon-20191002_181700-661:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGcwNUZPZFUtWFozQ2xGNWoKMDAyZnNpZ25hdHVyZSBfCMP6VgZvYe-a8niei4q12gDOizziK4CR587WE9ZPQQoUIDVSRDCXV127.0.0.1Perl + Net::Async::HTTP/0.44mid]c!E@anon-20191002_181700-660:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC40RGhRc3hnRVJILSYuSkMKMDAyZnNpZ25hdHVyZSDQRaXa9xBA0-b58Qoby4R8jD7rBXNve9Tqgq02c3izFgoMWFTHHYRXE127.0.0.1Perl + Net::Async::HTTP/0.44mc]c!E@anon-20191002_181700-659:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE00XjRRZXd1MTUwPU5eci4KMDAyZnNpZ25hdHVyZSCS-rvqZ5Qz8Tz1emq1gP3EI7uS3MIHPfMNhzpl9szZ1goKLSOKHZPOF127.0.0.1Perl + Net::Async::HTTP/0.44m 7,Z%* X # O{Fr=i4s> j5a,_a b / c 0 e 2 f 3 54]@anon-20191002_181700-696:localhost:8800m4f4]@anon-20191002_181700-680:localhost:8800m4W4]@anon-20191002_181700-679:localhost:8800m4V4]@anon-20191002_181700-678:localhost:8800m4U4]@anon-20191002_181700-677:localhost:8800m4T4]@anon-20191002_181700-676:localhost:8800m4S4]@anon-20191002_181700-675:localhost:8800m4R4]@anon-20191002_181700-674:localhost:8800m4Q4]@anon-20191002_181700-673:localhost:8800m4P4]@anon-20191002_181700-672:localhost:8800m4O4]@anon-20191002_181700-671:localhost:8800m4N4]@anon-20191002_181700-670:localhost:8800m4M4]@anon-20191002_181700-669:localhost:8800m4L4]@anon-20191002_181700-668:localhost:8800m4K4]@anon-20191002_181700-667:localhost:8800m4J4]@anon-20191002_181700-666:localhost:8800m4I4]@anon-20191002_181700-665:localhost:8800m4H4]@anon-20191002_181700-656:localhost:8800m4?4]@anon-20191002_181700-655:localhost:8800m4>4]@anon-20191002_181700-654:localhost:8800m4=4]@anon-20191002_181700-653:localhost:8800m4<4]@anon-20191002_181700-652:localhost:8800m4;4]@anon-20191002_181700-651:localhost:8800m4:4]@anon-20191002_181700-650:localhost:8800m492[@anon-20191002_181700-64:localhost:8800m424]@anon-20191002_181700-649:localhost:8800m484]@anon-20191002_181700-700:localhost:8800m4i4]@anon-20191002_181700-698:localhost:8800m4h4]@anon-20191002_181700-697:localhost:8800m4g4]@anon-20191002_181700-689:localhost:8800m4`4]@anon-20191002_181700-688:localhost:8800m4_4]@anon-20191002_181700-687:localhost:8800m4^4]@anon-20191002_181700-686:localhost:8800m4]4]@anon-20191002_181700-685:localhost:8800m4\4]@anon-20191002_181700-684:localhost:8800m4[4]@anon-20191002_181700-683:localhost:8800m4Z4]@anon-20191002_181700-682:localhost:8800m4Y4]@anon-20191002_181700-681:localhost:8800m4X4]@anon-20191002_181700-664:localhost:8800m4G4]@anon-20191002_181700-663:localhost:8800m4F4]@anon-20191002_181700-662:localhost:8800m4E4]@anon-20191002_181700-661:localhost:8800m4D4]@anon-20191002_181700-660:localhost:8800m4C2[@anon-20191002_181700-65:localhost:8800m434]@anon-20191002_181700-659:localhost:8800m4B4]@anon-20191002_181700-658:localhost:8800m4A4]@anon-20191002_181700-657:localhost:8800m4@1Y@anon-20191002_181700-6:localhost:8800m462[@anon-20191002_181700-68:localhost:8800m452[@anon-20191002_181700-67:localhost:8800m444]@anon-20191002_181700-695:localhost:8800m4e4]@anon-20191002_181700-693:localhost:8800m4d4]@anon-20191002_181700-692:localhost:8800m4c4]@anon-20191002_181700-691:localhost:8800m4b4]@anon-20191002_181700-690:localhost:8800m4a >CG K O  S  W  [ _ c$g(k,o0s4w8{<]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIRm4<=]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXAm4<<]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGUm4<;]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHSm4<:]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm4<9]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUOm4<8]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWAm4<7]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGGm4<6]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOSm4 QLj39qq? x F   ~ L 9  k S ! Y '   _ -? ew^,d2j8Fxp> 1e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk 1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU 1e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa00e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwS0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No"1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA o1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o)1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSE1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wL1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEr1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC41e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAk1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIX3$56:localhost:42455 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAF1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok 1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 |1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs u1e$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk l1e$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM Z1e$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc R1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo M1e$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 1e$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s 3$55:localhost:42455 3$54:localhost:42455 3$50:localhost:42455 3$45:localhost:42455 3$48:localhost:42455 3$44:localhost:42455 3$43:localhost:42455 3$40:localhost:42455 1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcD1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4sa4QFk_nLJUkeauefZ08nRk355aGF3AZ5ohhPTJ6GY1e$4qrLdR9CfgE4peiXzi9Cme7g1oj3xGCSHlJ5EvHfvOc1e$4nj0UugfVHCr8TFkjOx0PuHEKEmelNNsbK_1ddH0zog1e$4lhMgTUGmhuKNm-Oq5d_joxn5Km7fvMzhXx4P15AumwP1e$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs:1e$4gRhV6ts_syfumNWjbyWglLAhHupDzl0KFY-vF3ozM01e$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM1e$4ctG2s_AvyRwW2vbWQoGgiAdB9I-8A8Tw64njEpUezUZ1e$4ccfAfv6Tojp4vrCd1o5sV6NN8qwMcNI2C-kNthIiwQ 1e$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0v0e$4apKC-fkg7SysqEVAIa3USoiCN4SfyDB7QJFQ-JBbvoY1e$4ZwIpvPwssPiatwd0K6_Es5jTn2mmn8yZp6eZGgH7FA1e$4Za3SgMTfcOcPhXPnH9A2LP3sbSlBHIHuePVFWPfWaU1e$4X1Hil4eNJPULGB96RTjH5D0rwn2gGJzKh8JsX02j3Y1e$4TXrhet8oIBzzu-7Z566MbJ20VrC88Kdi2TQp4WNWEA11e$4T3st2lyM_S8HOxpAwSvmKsgNOVROU6jrtUmpLEZaxw1e$4SWLl8Lvkhv--Ll_9kAJzNM51EFsIQDtZguixGJvdPM1e$4R9-ZVWuvP4n_G7sTHEGIY2T2DY1ktj0qnkpuqOD_-01e$4Owzx0eWC-DGH9exZHJL47AI4cH5yfi70lYbXyX4HjU41e$4M3JVOUFJ_ho2oRd-u_5LFou7Uf1FdhnEUYm4j4D3is 1e$4LVVQNXP1dxj5aYlknFqMuQrjufkdPbewtG63oqVZ9051e$4IF0eWnTkGDsuQbHmK6kRqrPpE10LocezHd_F7qQwpU1e$4HyxLMpKEhOcb3lm8Foz44Xeqjs4TQwzeZdp77Nv81U1e$4HLBXY8eD0hbh85INGa47eXrQ3fxdPgSlk6cZLoQ2RE 0e$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97Al1e$4DgxXbBN7zMuIOd5lO1L9aNXEEdHLCvBB9oJio2cZE81e$4ALNLMEDpub_7_R98iY7PCljq98JADrwmZboOfKfqAA 1e$49n3JSDG3wrGTijVelookIpt_cFRbavpVhxMf0pFsEkv1e$47D8DlrsoIW8Y4WYK5fB4CaUCgqcygyVt5VWhd6aOi0 1e$46FHZkbvDK9vVR6P_BQFF_nqkFmM8d4T70xXBusCuZQ0e$45RCNCYWNQAPb8Is-dNJDZBLSkh2LNH8BkLgWSh0gyUQ1e$40j1rxTkAObGpLiMWVap_2UXKNz8dMAPGnVRhXCek5o1e$3yoXQfeDFGPZLz3755TtlU3gnjENdDQaBtzqHinRVhc1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI 7 &{W ' F " ` 0On DcF!]fQ'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455Y Q' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800_ Q3 Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:8800_ Q3 Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:8800] Q/ Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800f Q'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455YQ' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800UQ3 = !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$57_pl_x:localhost:42455fQ'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455YQ' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800fQ'E3 !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455uQ'EQ !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$1570043594417GcQTD:localhost:8800eQ? Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility$1570043593416CouYv:localhost:8800]Q/ Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800_Q3 Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:8800Q']Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800$1570043590413Khvee:localhost:8800Y~Q' Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800f}Q'E3 !taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455$55:localhost:42455u|Q'EQ !taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455$1570043586410XgGlD:localhost:8800e{Q? Q !taANXnGBZntAreRurn:localhost:8800m.room.history_visibility$1570043585409JoQZw:localhost:8800ezQ? Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility$1570043584408XdGfO:localhost:8800]yQ/ Q !taANXnGBZntAreRurn:localhost:8800m.room.join_rules$1570043583407USfCf:localhost:8800]xQ/ Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules$1570043583406mAAxW:localhost:8800_wQ3 Q !taANXnGBZntAreRurn:localhost:8800m.room.power_levels$1570043582405uFoRY:localhost:8800_vQ3 Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels$1570043581404AarAd:localhost:8800uQ']Q !taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800$1570043580403vYYeb:localhost:8800tQ']Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800$1570043579402KDYtE:localhost:8800YsQ' Q !taANXnGBZntAreRurn:localhost:8800m.room.create$1570043578401arzBQ:localhost:8800YrQ' Q !tcYctHPiaKzsKgrXlU:localhost:8800m.room.create$1570043578400zncwP:localhost:8800fqQ'E3 !drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455$54:localhost:42455upQ'EQ !drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455$1570043574398LLbdN:localhost:8800eoQ? Q !drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibility$1570043572397AAGBm:localhost:8800enQ? Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility$1570043572396lZXIU:localhost:8800]mQ/ Q !drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules$1570043571395bDLFD:localhost:8800]lQ/ Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules$1570043570394QELCg:localhost:8800_kQ3 Q !drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels$1570043569393UscIm:localhost:8800_jQ3 Q !zScKnCZCFPIIodAiQj:localhost:8800m.room.power_levels$1570043568392ItLhq:localhost:8800iQ']Q !drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800$1570043567391GonfI:localhost:8800 %~<  M  5 w M L$Lhq m:eQ? $i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibilitye9eQ/ $nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rulesg8eQ3 $Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels 7eQ']$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800a6eQ' $pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create}5eQ'E$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455m4eQ? $ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibilitye3eQ/ $tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rulesg2eQ3 $jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels 1eQ']$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800a0eQ' $nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.created/3Q'E$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455c.QQ? $1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility[-QQ/ $1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules],QQ3 $1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels+QQ']$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800W*QQ' $1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.created)3Q'E$55:localhost:42455!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455c(QQ? $1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.history_visibilityc'QQ? $1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility[&QQ/ $1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.join_rules[%QQ/ $1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules]$QQ3 $1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.power_levels]#QQ3 $1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels"QQ']$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800!QQ']$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800W QQ' $1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.createWQQ' $1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.created3Q'E$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455cQQ? $1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibilitycQQ? $1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility[QQ/ $1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules[QQ/ $1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules]QQ3 $1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.power_levels]QQ3 $1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.power_levelsQQ']$1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.member@anon-20191002_181700-660:localhost:8800QQ']$1570043566390qTwyJ:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.member@anon-20191002_181700-659:localhost:8800  +.QQay $1570043569393UscIm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3399}{"auth_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}]], "prev_events": [["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}]], "type": "m.room.power_levels", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"users": {"@anon-20191002_181700-660:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043569393UscIm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043569232, "hashes": {"sha256": "ZD4uM7sB23xbQm2e1BaCg6Epdkz1NQysPDo2GBqh2v8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g5Wc0st4MC2aJ5WLTJ8XXPnDb/q7CapOvTmS73NUV2sLemB8CIEKOBNmTpR9B7hQF9JP5e3SkdT0wMrBnalEDQ"}}, "unsigned": {"age_ts": 1570043569232}}+-QQay $1570043568392ItLhq:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3398}{"auth_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "prev_events": [["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "type": "m.room.power_levels", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"users": {"@anon-20191002_181700-659:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043568392ItLhq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043568922, "hashes": {"sha256": "K+Loazz+y0hUB5dvZCZwWl4fZUIsE11Y1uW7CxA7ABE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZLrnqiezme56Zv8MiahcA1tDSP05jbGu8DFj4WUUtMsdtolh2ACiFTwwJjTp//Y1M20EsM6+PaVHCUTUys59Cw"}}, "unsigned": {"age_ts": 1570043568922}},QQa) $1570043567391GonfI:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3397}{"auth_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}]], "prev_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}]], "type": "m.room.member", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-660", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-660:localhost:8800", "event_id": "$1570043567391GonfI:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043567451, "hashes": {"sha256": "XWNZDU14W7xnEyVAvXNo7HFLMgSghk6HsQczXIDINlk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zDjLbzn6LWXAopnsI/8PeJFgs40Cnjq23echuT4OouTYK3UaAWoK7hcdIVIuliPb6Zih9jp04dNVBmMX1UndAg"}}, "unsigned": {"age_ts": 1570043567451}} 2vf2 Z s & ? X  3LB=83.){$vT2Qe 2!vnFXnkCSfTbsSNKrtg:localhost:8800$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUT1Qe 1!vnFXnkCSfTbsSNKrtg:localhost:8800$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oT0Qe 0!vnFXnkCSfTbsSNKrtg:localhost:8800$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8T/Qe /!vnFXnkCSfTbsSNKrtg:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQT.Qe .!vnFXnkCSfTbsSNKrtg:localhost:8800$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6YT-Qe -!jRuDexjFzIDOKbwDJQ:localhost:8800$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUT,Qe ,!jRuDexjFzIDOKbwDJQ:localhost:8800$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcT+Qe +!jRuDexjFzIDOKbwDJQ:localhost:8800$ODMJ-iUdhqDMHrNa-V288j4Ay7-4kL_az64iDroXTLwT*Qe *!jRuDexjFzIDOKbwDJQ:localhost:8800$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWET)Qe )!jRuDexjFzIDOKbwDJQ:localhost:8800$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8T(Qe (!jRuDexjFzIDOKbwDJQ:localhost:8800$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQT'Qe '!jRuDexjFzIDOKbwDJQ:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucT&Qe &!jRuDexjFzIDOKbwDJQ:localhost:8800$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wT%Qe %!KcXNWNfbLcYsBKZHIp:localhost:8800$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0T$Qe $!KcXNWNfbLcYsBKZHIp:localhost:8800$_Rc7L0rJ0B4bInG4fEV4-qUkc7VYf0NWkeM6fgYzDBIT#Qe #!KcXNWNfbLcYsBKZHIp:localhost:8800$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1BhbygT"Qe "!KcXNWNfbLcYsBKZHIp:localhost:8800$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0T!Qe !!KcXNWNfbLcYsBKZHIp:localhost:8800$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAT Qe !KcXNWNfbLcYsBKZHIp:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4TQe !KcXNWNfbLcYsBKZHIp:localhost:8800$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgAQ? !dBfASZrfiFeSKTjYJm:localhost:8800$60_msg_e:localhost:42455AQ? !dBfASZrfiFeSKTjYJm:localhost:8800$59_msg_d:localhost:42455AQ? !dBfASZrfiFeSKTjYJm:localhost:8800$59_msg_d:localhost:42455;Q3 !dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043594417GcQTD:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043593416CouYv:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043592415heiAH:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043591414NuXxd:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043590413Khvee:localhost:8800JQQ !dBfASZrfiFeSKTjYJm:localhost:8800$1570043589412JaDTY:localhost:8800;Q3 !taANXnGBZntAreRurn:localhost:8800$55:localhost:42455JQQ !taANXnGBZntAreRurn:localhost:8800$1570043586410XgGlD:localhost:8800JQQ !taANXnGBZntAreRurn:localhost:8800$1570043585409JoQZw:localhost:8800JQQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043584408XdGfO:localhost:8800JQQ !taANXnGBZntAreRurn:localhost:8800$1570043583407USfCf:localhost:8800JQQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043583406mAAxW:localhost:8800JQQ !taANXnGBZntAreRurn:localhost:8800$1570043582405uFoRY:localhost:8800J QQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043581404AarAd:localhost:8800J QQ !taANXnGBZntAreRurn:localhost:8800$1570043580403vYYeb:localhost:8800J QQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043579402KDYtE:localhost:8800J QQ !taANXnGBZntAreRurn:localhost:8800$1570043578401arzBQ:localhost:8800J QQ !tcYctHPiaKzsKgrXlU:localhost:8800$1570043578400zncwP:localhost:8800;Q3 !drnXStKXkNQkouqUAg:localhost:8800$54:localhost:42455JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043574398LLbdN:localhost:8800JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043572397AAGBm:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043572396lZXIU:localhost:8800JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043571395bDLFD:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043570394QELCg:localhost:8800JQQ !drnXStKXkNQkouqUAg:localhost:8800$1570043569393UscIm:localhost:8800JQQ !zScKnCZCFPIIodAiQj:localhost:8800$1570043568392ItLhq:localhost:8800 ^\?( gJ r O 4  y X %  o X jG$Q\)hExa.t] V # } b ? t-Q4y:>'] -m.room.member@anon-20191002_181700-665:localhost:8800 /  "m.room.join_rules 3  !m.room.power_levels >'] m.room.member@anon-20191002_181700-664:localhost:8800 '  m.room.create /  m.room.join_rules 2'E m.room.member@__ANON__-35:localhost:42455 '  m.room.create 3  m.room.power_levels 3  m.room.power_levels /  m.room.join_rules 2'E m.room.member@__ANON__-35:localhost:42455 '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-35:localhost:42455 '  m.room.create 2'E m.room.member@__ANON__-35:localhost:42455 2'E m.room.member@__ANON__-35:localhost:42455 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-663:localhost:8800 '  m.room.create ~2'E m.room.member@__ANON__-34:localhost:42455 }2'E m.room.member@__ANON__-34:localhost:42455 |"?  m.room.history_visibility {"?  m.room.history_visibility z/  m.room.join_rules y/  m.room.join_rules x3  m.room.power_levels w3  m.room.power_levels v>'] m.room.member@anon-20191002_181700-662:localhost:8800 u>'] m.room.member@anon-20191002_181700-661:localhost:8800 t'  m.room.create s'  m.room.create r2'E m.room.member@__ANON__-33:localhost:42455 q2'E m.room.member@__ANON__-33:localhost:42455 p"?  m.room.history_visibility o"?  m.room.history_visibility n/  m.room.join_rules m/  m.room.join_rules l3  m.room.power_levels k3  m.room.power_levels j>'] m.room.member@anon-20191002_181700-660:localhost:8800 i>'] m.room.member@anon-20191002_181700-659:localhost:8800 h'  m.room.create g'  m.room.create f3  m.room.power_levels b2'E m.room.member@__ANON__-32:localhost:42455 d/  m.room.join_rules e'  m.room.create c3  m.room.power_levels ^2'E m.room.member@__ANON__-32:localhost:42455 `/  m.room.join_rules a2'E -m.room.member@__ANON__-37:localhost:42455 /  -m.room.join_rules '  -m.room.create 2'E ,m.room.member@__ANON__-37:localhost:42455 2'E +m.room.member@__ANON__-37:localhost:42455 "?  *m.room.history_visibility /  )m.room.join_rules 3  (m.room.power_levels >'] 'm.room.member@anon-20191002_181700-665:localhost:8800 '  &m.room.create 2'E %m.room.member@__ANON__-36:localhost:42455 2'E $m.room.member@__ANON__-36:localhost:42455 "?  #m.room.history_visibility '  m.room.create _! test_stateY ]3  m.room.power_levels X>'] m.room.member@anon-20191002_181700-658:localhost:8800 [2'E m.room.member@__ANON__-32:localhost:42455 \/  m.room.join_rules Y"?  m.room.history_visibility Z'  m.room.create W2'E m.room.member@__ANON__-32:localhost:42455 V2'E m.room.member@__ANON__-32:localhost:42455 U"?  m.room.history_visibility T/  m.room.join_rules S3  -m.room.power_levels 3  m.room.power_levels R>'] m.room.member@anon-20191002_181700-658:localhost:8800 Q'  m.room.create P3  m.room.power_levels L2'E m.room.member@__ANON__-31:localhost:42455 N/  m.room.join_rules O'  m.room.create M3  m.room.power_levels H2'E m.room.member@__ANON__-31:localhost:42455 J/  m.room.join_rules K'  m.room.create I! test_stateY F! test_stateT E! test_stateB B *vHb4 | N n B  d 6  ~ P " l > -]@anon-20191002_181700-185:localhost:8800-]@anon-20191002_181700-184:localhost:8800-]@anon-20191002_181700-183:localhost:8800-]@anon-20191002_181700-182:localhost:8800-]@anon-20191002_181700-181:localhost:8800-]@anon-20191002_181700-180:localhost:8829+[@anon-20191002_181700-17:localhost:8800-]@anon-20191002_181700-179:localhost:8800-]@anon-20191002_181700-178:localhost:8800-]@anon-20191002_181700-177:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-176:localhost:8800-]@anon-20191002_181700-175:localhost:8800-]@anon-20191002_181700-174:localhost:8800-]@anon-20191002_181700-173:localhost:8800-]@anon-20191002_181700-170:localhost:8800-]@anon-20191002_181700-170:localhost:8800+[@anon-20191002_181700-16:localhost:8800,+[@anon-20191002_181700-16:localhost:8800'+[@anon-20191002_181700-16:localhost:8800"+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800+[@anon-20191002_181700-16:localhost:8800 +[@anon-20191002_181700-16:localhost:8800-]@anon-20191002_181700-169:localhost:8800z-]@anon-20191002_181700-169:localhost:8800y-]@anon-20191002_181700-169:localhost:8800x-]@anon-20191002_181700-168:localhost:8800q-]@anon-20191002_181700-167:localhost:8800k-]@anon-20191002_181700-166:localhost:8829e-]@anon-20191002_181700-165:localhost:8800_-]@anon-20191002_181700-164:localhost:8800X-]@anon-20191002_181700-163:localhost:8800P-]@anon-20191002_181700-162:localhost:8800H-]@anon-20191002_181700-161:localhost:8800A-]@anon-20191002_181700-160:localhost:8800:-]@anon-20191002_181700-158:localhost:88004-]@anon-20191002_181700-156:localhost:8800.-]@anon-20191002_181700-154:localhost:8800(-]@anon-20191002_181700-153:localhost:8800&-]@anon-20191002_181700-152:localhost:8800!  *x1QQa $1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3402}{"auth_events": [["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}], ["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "prev_events": [["$1570043570394QELCg:localhost:8800", {"sha256": "4rbv0DUci41HZEMMar28lrReSYGgdK/ssdFCNouwXYI"}]], "type": "m.room.history_visibility", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043572396lZXIU:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043572378, "hashes": {"sha256": "gSiO18VXWLut7eaOFNhlZB8Qd8AosUF5TGyYNKdJ2Eg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ojmYMAP51Py9ZJIlVz8ilEaHxxeIj7rWbAFx8CHRWZa84m+gvIsja5IFzGfyKJJK0Jxrqaq67BJ6rogjmvwdBQ"}}, "unsigned": {"age_ts": 1570043572378}}g0QQaq $1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3401}{"auth_events": [["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}], ["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}]], "prev_events": [["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}]], "type": "m.room.join_rules", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043571395bDLFD:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043571009, "hashes": {"sha256": "lYKAbPqkb9ue3fnVoG0bl574JPn21TnV28fS9ifSuhs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fhTy2KxVQLi01jgNDVLGlh8e0AxwcY4nj0dZ0DUrJ+kF+Be7qV1xEZJOtT7PSE0a9ArdXUJKbbjd8c+hNh5eCQ"}}, "unsigned": {"age_ts": 1570043571009}}g/QQaq $1570043570394QELCg:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "stream_ordering": 3400}{"auth_events": [["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}], ["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}]], "prev_events": [["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}]], "type": "m.room.join_rules", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043570394QELCg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043570684, "hashes": {"sha256": "x42E8ilZ2d37lIjrmwNghMJmrDG+TinRVlFk6F954VQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QIRgyx/IeWHurANt+4TetYYzZqhuAcLJwxiMGEZa1ECbt4WC9CNKQLJd6hKtPFDGJf/85yBEvDSh0G/HwlnrAQ"}}, "unsigned": {"age_ts": 1570043570684}} TU@rL$  e =  u M % ] 5 mxP(R Y  q ? _ -(Z"NzH0h1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M>1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M?1e$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwr1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E }1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E 1e$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E ~1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo3$17:localhost:42455'Q$1570043713441WJPkP:localhost:8800'Q$1570043713441WJPkP:localhost:8800'Q$1570043712440rfNzQ:localhost:88001e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps1e$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCow1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCov1e$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY 1e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo281e$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28t3$18:localhost:42455'Q$1570043715443SSqOY:localhost:8800'Q$1570043715443SSqOY:localhost:8800'Q$1570043713441WJPkP:localhost:8800b'Q$1570043750466Tmiqu:localhost:8800S'Q$1570043748464QpNXV:localhost:8800O'Q$1570043748464QpNXV:localhost:8800N'Q$1570043748464QpNXV:localhost:8800M'Q$1570043748463euAqZ:localhost:8800L'Q$1570043748463euAqZ:localhost:8800K'Q$1570043748463euAqZ:localhost:8800J'Q$1570043747462YuUEF:localhost:8800I'Q$1570043747462YuUEF:localhost:8800H'Q$1570043712440rfNzQ:localhost:8800'Q$1570043712440rfNzQ:localhost:8800 'Q$1570043712439XdJFc:localhost:8800 1e$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ1e$1RAH84fUH2NfkJLjLKL_sy0FAAxlZRKsJtQquOYKoCox 'Q$1570043746461eQhrq:localhost:8800G'Q$1570043741458PZvre:localhost:8800F'Q$1570043741458PZvre:localhost:8800E'Q$1570043741458PZvre:localhost:8800D'Q$1570043739456qeuuS:localhost:8800@'Q$1570043739456qeuuS:localhost:8800?'Q$1570043739456qeuuS:localhost:8800>'Q$1570043738455KNDHf:localhost:8800='Q$1570043738455KNDHf:localhost:8800<'Q$1570043738455KNDHf:localhost:8800;'Q$1570043737454adOjg:localhost:8800:'Q$1570043737454adOjg:localhost:88009'Q$1570043736453VtbeL:localhost:88008'Q$1570043733451EJhWh:localhost:88007'Q$1570043733451EJhWh:localhost:88006'Q$1570043733451EJhWh:localhost:88005'Q$1570043730449XMaNb:localhost:88001'Q$1570043730449XMaNb:localhost:88000'Q$1570043730449XMaNb:localhost:8800/'Q$1570043729448XmFHA:localhost:8800.'Q$1570043729448XmFHA:localhost:8800-'Q$1570043729448XmFHA:localhost:8800,'Q$1570043728447IkYro:localhost:8800+'Q$1570043728447IkYro:localhost:8800*1e$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M=1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1e$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q1$1:localhost:424551e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 1e$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4 3$18:localhost:424551e$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk#1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk"1e$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk!'Q$1570043727446CGYaE:localhost:8800)'Q$1570043715443SSqOY:localhost:8800'Q$1570043750466Tmiqu:localhost:8800U'Q$1570043750466Tmiqu:localhost:8800T ${>l H < v  K x 2h/8Air { FQ']e q!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQdEQ' e p!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6YDQ'Ee n!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcpCQ? e m!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibility$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEhBQ/ e l!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8jAQ3 e k!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ @Q']e j!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucd?Q' e i!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w>Q'Ee h!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0p=Q? e g!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibility$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygh<Q/ e f!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rules$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0j;Q3 e e!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA :Q']e d!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4d9Q' e c!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.create$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgg8Q'E3 _!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455$56:localhost:42455f7Q? Q ^!dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility$1570043593416CouYv:localhost:8800^6Q/ Q ]!dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800`5Q3 Q \!dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels$1570043591414NuXxd:localhost:88004Q']Q [!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800$1570043590413Khvee:localhost:8800Z3Q' Q Z!dBfASZrfiFeSKTjYJm:localhost:8800m.room.create$1570043589412JaDTY:localhost:8800g2Q'E3 X!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455$55:localhost:42455f1Q? Q W!taANXnGBZntAreRurn:localhost:8800m.room.history_visibility$1570043585409JoQZw:localhost:8800f0Q? Q V!tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility$1570043584408XdGfO:localhost:8800^/Q/ Q U!taANXnGBZntAreRurn:localhost:8800m.room.join_rules$1570043583407USfCf:localhost:8800^.Q/ Q T!tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules$1570043583406mAAxW:localhost:8800`-Q3 Q S!taANXnGBZntAreRurn:localhost:8800m.room.power_levels$1570043582405uFoRY:localhost:8800`,Q3 Q R!tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels$1570043581404AarAd:localhost:8800+Q']Q Q!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800$1570043580403vYYeb:localhost:8800*Q']Q P!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800$1570043579402KDYtE:localhost:8800Z)Q' Q O!taANXnGBZntAreRurn:localhost:8800m.room.create$1570043578401arzBQ:localhost:8800Z(Q' Q N!tcYctHPiaKzsKgrXlU:localhost:8800m.room.create$1570043578400zncwP:localhost:8800g'Q'E3 L!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455$54:localhost:42455f&Q? Q K!drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibility$1570043572397AAGBm:localhost:8800f%Q? Q J!zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility$1570043572396lZXIU:localhost:8800^$Q/ Q I!drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules$1570043571395bDLFD:localhost:8800^#Q/ Q H!zScKnCZCFPIIodAiQj:localhost:8800m.room.join_rules$1570043570394QELCg:localhost:8800 $<k 0 I - a W"'OfkgFeQ3 $6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels EeQ']$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800joinaDeQ' $_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.createCeQ'E$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455joinmBeQ? $i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibilityeAeQ/ $nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rulesg@eQ3 $Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels ?eQ']$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800joina>eQ' $pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create=eQ'E$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455joinm<eQ? $ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibilitye;eQ/ $tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rulesg:eQ3 $jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels 9eQ']$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800joina8eQ' $nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.createh73Q'E$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@__ANON__-35:localhost:42455joinc6QQ? $1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.history_visibility[5QQ/ $1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules]4QQ3 $1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.power_levels3QQ']$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.member@anon-20191002_181700-663:localhost:8800joinW2QQ' $1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800m.room.createh13Q'E$55:localhost:42455!taANXnGBZntAreRurn:localhost:8800m.room.member@__ANON__-34:localhost:42455joinc0QQ? $1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.history_visibilityc/QQ? $1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.history_visibility[.QQ/ $1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.join_rules[-QQ/ $1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.join_rules],QQ3 $1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.power_levels]+QQ3 $1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.power_levels*QQ']$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.member@anon-20191002_181700-662:localhost:8800join)QQ']$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.member@anon-20191002_181700-661:localhost:8800joinW(QQ' $1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800m.room.createW'QQ' $1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800m.room.createh&3Q'E$54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800m.room.member@__ANON__-33:localhost:42455joinc%QQ? $1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.history_visibilityc$QQ? $1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800m.room.history_visibility[#QQ/ $1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800m.room.join_rules  .z4QQs $1570043575399SiSKs:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800{"token_id": 639, "txn_id": "612", "stream_ordering": 3405}{"auth_events": [["$1570043568392ItLhq:localhost:8800", {"sha256": "RHaYb5ONYrLt+JNlS8vnUwKONF/rzZCFB35sK7KNj6A"}], ["$1570043564388ZmOEV:localhost:8800", {"sha256": "pgzKuFs2IAYpn1wN7KpGFdOcUHvS7Jl4oGg+2oEg59c"}], ["$1570043566390qTwyJ:localhost:8800", {"sha256": "S9OI42fmjCamfeHSoQuVLIMtOjdMlLZQ0M2d0sfhsKU"}]], "prev_events": [["$1570043572396lZXIU:localhost:8800", {"sha256": "ku0WzjgfOoDefUyzIbAIy4pB1rrS3cIY+yzvzwALy/k"}]], "type": "m.room.message", "room_id": "!zScKnCZCFPIIodAiQj:localhost:8800", "sender": "@anon-20191002_181700-659:localhost:8800", "content": {"body": "Hello world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "event_id": "$1570043575399SiSKs:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043575940, "hashes": {"sha256": "ItFwm89NJn84ND5DabEL8TNgKC0cPyndfIteCWBVTBk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gJXRgKluoQfjylcXXcdDV5ICMSCje28qi2tL0wG5yVqjJo3r/5MuHEu78NNSvNPvKRFYA7QvEPoRrNJVBlk5Cg"}}, "unsigned": {"age_ts": 1570043575940}}R33Q3 $54:localhost:42455!drnXStKXkNQkouqUAg:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3404}{"sender": "@__ANON__-33:localhost:42455", "hashes": {"sha256": "892Uv8d7JT0oYf4rT+l8i9aHfqXkHqH/bRLjQSRshDU"}, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-33:localhost:42455", "type": "m.room.member", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "prev_events": [["$1570043572397AAGBm:localhost:8800", {"sha256": "2RR6FIg5LPycJXlRhCXCQ8fFMClxS7VZC5aGWL9Aze0"}]], "origin_server_ts": 1570043574662, "content": {"membership": "join"}, "event_id": "$54:localhost:42455", "auth_events": [["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}], ["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043571395bDLFD:localhost:8800", {"sha256": "dttQMjYx62rSJ5pyd54VHSIdK/LVwFZEn9THeNj6v3Y"}]], "signatures": {"localhost:42455": {"ed25519:1": "dEXQU2AGNlI09BwAk31zrkk8H9DKxAzcVQ/MLRPvRO4QkbrPRqV8KQoksKq6ShWlSNv0qn/RHF6/YUVzdGPPBA"}}, "unsigned": {}}x2QQa $1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800{"token_id": 640, "stream_ordering": 3403}{"auth_events": [["$1570043569393UscIm:localhost:8800", {"sha256": "etctQJdE78uWE0pO3yJiiktPyrFFdHcQwYQ80JzGDtg"}], ["$1570043565389RsxAr:localhost:8800", {"sha256": "jcxCq8gTEoVCw4I6avBP4JrIwKehGDl5uJvpqJ1OKy8"}], ["$1570043567391GonfI:localhost:8800", {"sha256": "yf6n3dX2MFR22GupMc7QTDFUy2wLbN1o7rDFQctBetg"}]], "prev_events": [["$1570043571395bDLFD:localhost:8800", {"sha256": "dttQMjYx62rSJ5pyd54VHSIdK/LVwFZEn9THeNj6v3Y"}]], "type": "m.room.history_visibility", "room_id": "!drnXStKXkNQkouqUAg:localhost:8800", "sender": "@anon-20191002_181700-660:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043572397AAGBm:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043572735, "hashes": {"sha256": "Exr9P2HJjTC1nExppK+Zk3q2+1Lrm2NIo2NQB3Hbbg0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2BMr+8o+zIqy+BUtaoI4dFuHUraizuECZLaEbsq1y1iMC4mb8UqdNS1H2JaB1NjQBoOtFIsJCO2AGiP049sVCQ"}}, "unsigned": {"age_ts": 1570043572735}} KgN5}eMS!Z(a/#j8p> v E  } K 2  Q  W % U ] +1e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU f1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k ^1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk Y1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 1e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras 1e$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1$2:localhost:37265 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA81e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k g1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1Av1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s+1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE F1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds'1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:44405 1$2:localhost:42455 *1$2:localhost:41985 1e$3c8r9mBdJRYZkCUvmSWzFDqHfBXnun6wk8aOE_Bew4g1e$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4I V1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1e$3WxsHIXtAXsaKlft2vhv_eIE5iep51FBmgMoXZEHExs1e$3S6zHo83doJtBxLGblYmhBVIvtaA7YI7b8qs-ycWWuo1e$3MxFQ6Q45QI2oiwwhvxiJ5vcL33lrQHieDoHXSaDJ5U1e$3MR9iAXwDeW_aKgZVDQkLou-XXJPM4pfJxFcu82XJ-A1e$3JJswwRcqJPQ00ak8C4aFoAXAyPsywoASkiQ_suTG1kA1e$3IH2MNy0a2rkPGndQ4YTf51-Sec1LyqjpFRqaNzvRLk1e$3GF6orqsr9h8LfZq7Cy6eXvk2U01woYkOK37h-mp4iE 1e$3F9zp23TSOPCLXsGEVp1XeE-fkcUKd6VUZ7Yctw_2SYq1e$3DDAxQkYJJfMtg1x4b7lrj4BmUb-YB--TJuyapgcheI o1e$3Ag13l4XlXalQyNCKc_l7XZjbDdpawaJ01wSR4_UN_M1e$38dZpd91A1Qqy2N8tDw3IjwrfdKVfy_QABYmdB4Qujo 1e$37ohLCIGQK0ODxP_tFqOTeAWG8WzE08ZITp1dL-Kaao m3$36:localhost:42455 1e$35PaALduhx_6Zg9tqruvFDMZOh8ZIdZiu-JglpeFzug K1e$32s4kf5WyUkHCp6tBWjg4kSyIg3osW5cKATrp-xPwYA 1e$32mNGbLr+OEB34A/J0cVyYOYpW40gqunj1Ervc5XZj4 +3$32:localhost:42455 1e$31d8oN4GzCVqkVdA6cRKGxKW93uyonayz6pfQbQ-rMYI1e$31V34M-fQJ-vEX57FRvBLIp_hJE3SwkxcaWa977D13Q1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0z1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUk1e$2r-OYL22-R2ZvKL0PONBZ83bcs-DfIdZX_fOhrb-ikk1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2peaZE295ZlDVPzeQZ-kfTIgfpMZrUbCGqGnBqQPxsgT1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY(1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAop1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgK1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk  "3W { 1 U  >q73/+'#eeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800eeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800 eeQ$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800Y ??Q$60_msg_e:localhost:42455$59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800Y??Q$59_msg_d:localhost:42455$58_msg_c:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800\3QQ$56:localhost:42455$1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043593416CouYv:localhost:8800$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043592415heiAH:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043591414NuXxd:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043590413Khvee:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800kQQQ$1570043588411PDBWG:localhost:8800$1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800\3QQ$55:localhost:42455$1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800kQQQ$1570043585409JoQZw:localhost:8800$1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800kQQQ$1570043584408XdGfO:localhost:8800$1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800k~QQQ$1570043583407USfCf:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800k}QQQ$1570043583406mAAxW:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800k|QQQ$1570043582405uFoRY:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800k{QQQ$1570043581404AarAd:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800kzQQQ$1570043580403vYYeb:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800kyQQQ$1570043579402KDYtE:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800kxQQQ$1570043575399SiSKs:localhost:8800$1570043572396lZXIU:localhost:8800!zScKnCZCFPIIodAiQj:localhost:8800\w3QQ$54:localhost:42455$1570043572397AAGBm:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800kvQQQ$1570043572397AAGBm:localhost:8800$1570043571395bDLFD:localhost:8800!drnXStKXkNQkouqUAg:localhost:8800  , H?Qcq $59_msg_d:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": false, "stream_ordering": 3425}{"sender": "@__ANON__-35:localhost:42455", "hashes": {"sha256": "bBv/KrVPpYW1gXOVIxvTuaJtFtu+0g931WpGzf710pw"}, "origin": "localhost:42455", "depth": 11, "type": "m.room.message", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "prev_events": [["$58_msg_c:localhost:42455", {}]], "origin_server_ts": 1570043594715, "content": {"body": "totes legit"}, "event_id": "$59_msg_d:localhost:42455", "auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}], ["$56:localhost:42455", {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}]], "signatures": {"localhost:42455": {"ed25519:1": "8Ky4HtpRYhYd56LlFHopZnqLBclFXgLFXXM7v7cUp64TbvtEDWjjmjC0nL6ZrKOyhdDrytEkOR3HFxVCQ1/OBw"}}, "unsigned": {}}zG=Qa+ $57_pl_x:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": true, "stream_ordering": 3424}{"hashes": {"sha256": "uyqeup5WpCRCS1dVF7lwork5yyVK6pbFmfmcsgENg3M"}, "sender": "@__ANON__-35:localhost:42455", "type": "m.room.power_levels", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "origin": "localhost:42455", "state_key": "", "depth": 0, "origin_server_ts": 1570043594714, "prev_events": [["$this:event.does.not.exist", {}]], "event_id": "$57_pl_x:localhost:42455", "auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}], ["$56:localhost:42455", {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}]], "content": {"users": {"@__ANON__-35:localhost:42455": 100, "@anon-20191002_181700-663:localhost:8800": 0}}, "signatures": {"localhost:42455": {"ed25519:1": "emQNzK3Ndle+fzH0VUq1v9hyLqRK9iKwXXgOE5oo2J8LfSF/CD8XhMoMPIvptbXnx2ZjnZt2xJ4LNsKPI1TFAQ"}}, "unsigned": {}}RF3Q3 $56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3423}{"event_id": "$56:localhost:42455", "auth_events": [["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}], ["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "zT5IGP+iTkvApDEZMWpKLerXj8BPf62bfZK/93q4Wjo"}]], "content": {"membership": "join"}, "origin_server_ts": 1570043594362, "prev_events": [["$1570043593416CouYv:localhost:8800", {"sha256": "v7sU3cEck74xa5zGB7HFILv/TKVS4Kw3kRjUNfhCpIE"}]], "type": "m.room.member", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-35:localhost:42455", "depth": 6, "hashes": {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}, "sender": "@__ANON__-35:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "Yqji3O2byuyOyP3lW2NUda8s+2jN/iwG/8IxDeWjpIxNS6WTYGXnmB8Lm93FufWpOMCqN9iUnko+TE8wbLkRBw"}}, "unsigned": {}} TX.\2 o E  V " R  N  ~ J zFvBr> n:j6f2`E#{Q6'iQ$1570043660430kLPpN:localhost:8800 b#hI$64_redaction2:localhost:42455 a#gI$63_redaction1:localhost:42455 `f3$62:localhost:42455 _'eQ$1570043656428rZaqi:localhost:8800 ]'dQ$1570043655427tEtWD:localhost:8800 \'cQ$1570043654426seixP:localhost:8800 ['bQ$1570043653425AhyPB:localhost:8800 Z'aQ$1570043652424mkkFn:localhost:8800 Y`A$lolredact:localhost:42455 X_3$61:localhost:42455 W'^Q$1570043648422SglHQ:localhost:8800 U']Q$1570043647421dmTZW:localhost:8800 T'\Q$1570043646420mPrhj:localhost:8800 S'[Q$1570043646419zIOAX:localhost:8800 R'ZQ$1570043645418ABZkc:localhost:8800 Q1Ye$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc P1Xe$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA O1We$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E N1Ve$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs M1Ue$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw K1Te$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ J1Se$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 I1Re$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA H1Qe$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s G1Pe$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc F1Oe$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0 D1Ne$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw C1Me$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI B1Le$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU A1Ke$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ @1Je$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY ?1Ie$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE >1He$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U ;1Ge$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk =1Fe$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A <1Ee$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg ;1De$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg ;1Ce$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 91Be$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 81Ae$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA 71@e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA 61?e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q 51>e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc 41=e$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY 41<e$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU 21;e$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o 11:e$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 019e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ /18e$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y .17e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU -16e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc ,15e$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE *14e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 )13e$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ (12e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc '11e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w &10e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 %1/e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg #1.e$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0 "1-e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA !1,e$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4 1+e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg *?$60_msg_e:localhost:42455 )?$59_msg_d:localhost:42455 (3$56:localhost:42455 ''Q$1570043593416CouYv:localhost:8800 '&Q$1570043592415heiAH:localhost:8800 '%Q$1570043591414NuXxd:localhost:8800 '$Q$1570043590413Khvee:localhost:8800 '#Q$1570043589412JaDTY:localhost:8800 '"Q$1570043588411PDBWG:localhost:8800 !3$55:localhost:42455 ' Q$1570043585409JoQZw:localhost:8800 'Q$1570043584408XdGfO:localhost:8800 'Q$1570043583407USfCf:localhost:8800 'Q$1570043583406mAAxW:localhost:8800 'Q$1570043582405uFoRY:localhost:8800 'Q$1570043581404AarAd:localhost:8800 'Q$1570043580403vYYeb:localhost:8800 'Q$1570043579402KDYtE:localhost:8800 'Q$1570043578401arzBQ:localhost:8800 'Q$1570043578400zncwP:localhost:8800 'Q$1570043575399SiSKs:localhost:8800  v;=["Uu< X  t =  Y u <  Z !v=Y u<Z!vw>\#8]!@anon-20191002_181700-768]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG6[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUDi8]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY98]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK6[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCl8]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8]!@anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8]!@anon-20191002_181700-724:localhost:8800LOLQJOGTTU8]!@anon-20191002_181700-723:localhost:8800JIVAFIIFHN8]!@anon-20191002_181700-722:localhost:8800IZTIXMADAY8]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAG8]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN6[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIk8]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA8]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU6[!@anon-20191002_181700-70:localhost:8800PGQYANGMEIj8]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV8]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW7Y%@anon-20191002_181700-6:localhost:8800login_device5Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOW8]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO  8QQa) $1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3409}{"auth_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}]], "prev_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}]], "type": "m.room.member", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-662", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-662:localhost:8800", "event_id": "$1570043580403vYYeb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043580056, "hashes": {"sha256": "3lpzWLq1+shcM86AGINnRzHTTb22FTR6psvUbUyqnis"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qDX5/+jS06f5l/oTjXT1fcThq4X75s4paICvd8SQIUijOeQaTvLfZee/7IzA3utScBsM6C/dqiOFkltz9KZJBg"}}, "unsigned": {"age_ts": 1570043580056}}7QQa) $1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3408}{"auth_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}]], "prev_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}]], "type": "m.room.member", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-661", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-661:localhost:8800", "event_id": "$1570043579402KDYtE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043579568, "hashes": {"sha256": "SR8CKZLRPq2heIy0hRp7skLRpgWKQ8QNCGIseUNGCLg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UrWtDgOSDxncuAc0AkX6sy7eZ+QpVF6lxEj/w/hyh6kWm/Si8ZvcNtXYbfU+ugYqsTJkl7s03Ivweu+ZQ8HrAg"}}, "unsigned": {"age_ts": 1570043579568}}6QQaC $1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3407}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-662:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043578401arzBQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043578332, "hashes": {"sha256": "EgJxnzTNW8ArHLalezIKJcNTux1bC1sA5IpXcrW5Upk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OGLIBkC/08K5zLIsG0m9c9pD3iqf2lIKpAfy3An+dgqaM0ebR8iWZuxFCJ0xQIN2JuyApAntzKM2yA0rV/HZCg"}}, "unsigned": {"age_ts": 1570043578332}}5QQaC $1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3406}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-661:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043578400zncwP:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043578100, "hashes": {"sha256": "/18BIBGvG9/ak3RX5LHlF+DEZ0OYrW6XG2dOiAE75B4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+6Fe/EAK0c7qiZJFAXUO2j6fcxaovx0BJHn6+77YCP9oYNTrUuS+/vuY4wezOtj/0vat4ob5EIPg7gkbQGYNDw"}}, "unsigned": {"age_ts": 1570043578100}} @ \ . x J  d 6 R$xJ jd6 >~P"j< V(pB vH^ b0 6 Z .  ~ R &0\-]@anon-20191002_181700-720:localhost:8800M-]@anon-20191002_181700-719:localhost:8800L-]@anon-20191002_181700-718:localhost:8800K-]@anon-20191002_181700-717:localhost:8800J-]@anon-20191002_181700-716:localhost:8800I-]@anon-20191002_181700-715:localhost:8800H-]@anon-20191002_181700-714:localhost:8800G-]@anon-20191002_181700-713:localhost:8800F-]@anon-20191002_181700-712:localhost:8800E-]@anon-20191002_181700-711:localhost:8800D-]@anon-20191002_181700-710:localhost:8800C-]@anon-20191002_181700-708:localhost:8800B-]@anon-20191002_181700-706:localhost:8800A-]@anon-20191002_181700-704:localhost:8800@-]@anon-20191002_181700-702:localhost:8800?-]@anon-20191002_181700-701:localhost:8800>-]@anon-20191002_181700-700:localhost:8800=-]@anon-20191002_181700-698:localhost:8800<-]@anon-20191002_181700-691:localhost:8800;-]@anon-20191002_181700-690:localhost:8800:-]@anon-20191002_181700-685:localhost:88008-]@anon-20191002_181700-684:localhost:88006-]@anon-20191002_181700-683:localhost:88004-]@anon-20191002_181700-682:localhost:88002-]@anon-20191002_181700-681:localhost:88000-]@anon-20191002_181700-680:localhost:8800.-]@anon-20191002_181700-679:localhost:8800,-]@anon-20191002_181700-678:localhost:8800+-]@anon-20191002_181700-677:localhost:8800*-]@anon-20191002_181700-676:localhost:8800'-]@anon-20191002_181700-675:localhost:8800$-]@anon-20191002_181700-674:localhost:8800# P-]@anon-20191002_181700-673:localhost:8800"-]@anon-20191002_181700-672:localhost:8800 -]@anon-20191002_181700-671:localhost:8800-]@anon-20191002_181700-670:localhost:8800+[@anon-20191002_181700-66:localhost:8829-]@anon-20191002_181700-669:localhost:8800-]@anon-20191002_181700-668:localhost:8800-]@anon-20191002_181700-667:localhost:8800-]@anon-20191002_181700-666:localhost:8800-]@anon-20191002_181700-665:localhost:8800-]@anon-20191002_181700-664:localhost:8800-]@anon-20191002_181700-663:localhost:8800 -]@anon-20191002_181700-662:localhost:8800 -]@anon-20191002_181700-661:localhost:8800 -]@anon-20191002_181700-660:localhost:8800+[@anon-20191002_181700-65:localhost:8800-]@anon-20191002_181700-659:localhost:8800-]@anon-20191002_181700-658:localhost:8800-]@anon-20191002_181700-657:localhost:8800-]@anon-20191002_181700-656:localhost:8800-]@anon-20191002_181700-655:localhost:8800+[@anon-20191002_181700-71:localhost:8800+[@anon-20191002_181700-70:localhost:8800+[@anon-20191002_181700-68:localhost:8800+[@anon-20191002_181700-67:localhost:8800(-]@anon-20191002_181700-727:localhost:8800T-]@anon-20191002_181700-726:localhost:8800S-]@anon-20191002_181700-725:localhost:8800R-]@anon-20191002_181700-724:localhost:8800Q-]@anon-20191002_181700-723:localhost:8800P-]@anon-20191002_181700-722:localhost:8800O-]@anon-20191002_181700-721:localhost:8800N 7 7g;QQaq $1570043583406mAAxW:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3412}{"auth_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}], ["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}]], "prev_events": [["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}]], "type": "m.room.join_rules", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043583406mAAxW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043583278, "hashes": {"sha256": "+SR/FnBlnB3CVWT3jwB1sffar3Tq8DqUVSoSUXwMLKU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WRlMuL+KJ5S0Fkh6MY80w1GcZ2PyLJjhjdkiGEnl8WBBqHQEPmLvzHxnq39+WyaWm9C4Zd1H9KrS4j9GiUP6Cw"}}, "unsigned": {"age_ts": 1570043583278}}+:QQay $1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3411}{"auth_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}]], "prev_events": [["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}]], "type": "m.room.power_levels", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"users": {"@anon-20191002_181700-662:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043582405uFoRY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043582058, "hashes": {"sha256": "K9F0cxD/myD+FxzhEuL9wKQ/iQDI+xOsPjGSITYqVYg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "teTlbN7GN9LT0QtA75TcqNAZJ1rmPG4Bhu01W1B68YsiuRqVwPqJHAaDWUKH3o0GefL04jmjl6GQTw4q9Xb2CA"}}, "unsigned": {"age_ts": 1570043582058}}+9QQay $1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3410}{"auth_events": [["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "prev_events": [["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "type": "m.room.power_levels", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"users": {"@anon-20191002_181700-661:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043581404AarAd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043581477, "hashes": {"sha256": "QOPIqPOTNfLZ0gpNoNcum5vOGpRg14xmKLj6ccUs6wc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4H+3+xFKq6eUJcNbJUrvnLlIjZI50iG09e2MSfn/zb+IM17hOQ9ZJ2ZUhC5Mj5Slpsdp+Z8POE5YV8kkWzxAg"}}, "unsigned": {"age_ts": 1570043581477}} %&L r  + Q w N<b_;~`eeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800~_eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800~^eeQ$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800~]eeQ$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800Q\=3Q$57_pl_x:localhost:42455$56:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800`[=QQ$57_pl_x:localhost:42455$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800`Z=QQ$57_pl_x:localhost:42455$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800`Y=QQ$57_pl_x:localhost:42455$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[X3QQ$56:localhost:42455$1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[W3QQ$56:localhost:42455$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[V3QQ$56:localhost:42455$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jUQQQ$1570043593416CouYv:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jTQQQ$1570043593416CouYv:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jSQQQ$1570043593416CouYv:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jRQQQ$1570043592415heiAH:localhost:8800$1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jQQQQ$1570043592415heiAH:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jPQQQ$1570043592415heiAH:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jOQQQ$1570043591414NuXxd:localhost:8800$1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jNQQQ$1570043591414NuXxd:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800jMQQQ$1570043590413Khvee:localhost:8800$1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800[L3QQ$55:localhost:42455$1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800[K3QQ$55:localhost:42455$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800[J3QQ$55:localhost:42455$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800jIQQQ$1570043585409JoQZw:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800jHQQQ$1570043585409JoQZw:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800jGQQQ$1570043585409JoQZw:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800jFQQQ$1570043584408XdGfO:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800jEQQQ$1570043584408XdGfO:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800jDQQQ$1570043584408XdGfO:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800jCQQQ$1570043583407USfCf:localhost:8800$1570043582405uFoRY:localhost:8800!taANXnGBZntAreRurn:localhost:8800jBQQQ$1570043583407USfCf:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800jAQQQ$1570043583407USfCf:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800j@QQQ$1570043583406mAAxW:localhost:8800$1570043581404AarAd:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j?QQQ$1570043583406mAAxW:localhost:8800$1570043579402KDYtE:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j>QQQ$1570043583406mAAxW:localhost:8800$1570043578400zncwP:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800j=QQQ$1570043582405uFoRY:localhost:8800$1570043580403vYYeb:localhost:8800!taANXnGBZntAreRurn:localhost:8800j<QQQ$1570043582405uFoRY:localhost:8800$1570043578401arzBQ:localhost:8800!taANXnGBZntAreRurn:localhost:8800 !  9 j)K|<3 n - j $,4|nQQQ$1570043747462YuUEF:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 eeQ$1AUqqKHUDjHFL9tcgDa6PJnwW6nyKYno1wBUbYyTW6M$mk8cFFSgEmkpKQQcHR6jnhIZGWIaQHeN2Tubx83g_lc!YufaOfAlruTdjyUCwO:localhost:8800eeQ$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpw$0unAL4HzRrXxMLPqobmUEEucyEO1dg0dVsraiy99uxQ!atnRTMliktaVUhMVID:localhost:8800 eeQ$1DZ9WoONH7l0qVsqSETnj1MM397zbPQDGKb9G_7Oy7E$fJrWj9vkFtTGxjqAebb-EZdepO0U8pJi6oMCIfImGRY!kwXxkGQFkaeenFTQJr:localhost:8800:eeQ$1GYrC2Jvc5pe-20YPtfijVBEVjvZnnoR_IbMnC3TcPo$wxBfjbUEzO0rvrCLeofjAQ-6nHEQXrqN4nlvKdchIIY!mogJVPxghalmKbblUq:localhost:8800 eeQ$1N1l81yjploA0gT1NQ0tdYp6cmhfyDmbKGFMeNUzo28$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA!EABRjdYuYumMhLSwIa:localhost:8800eeQ$1KSEKpNZF3ylYT4U5Z0ygffVxh_AKaHHhiO088Xtgps$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70!EieRtaCFZJJCIOkRPp:localhost:8800P33Q$15:localhost:42455$14:localhost:42455!uPxXJHJyFQwvpQLZNs:localhost:8800 seeQ$1Nt8cHNJ18_-KeiXoQYz0cJkUJN5I29tEffgGrnh6qY$eSAMixL92r1lSUxSLTetiZ4flnVeYS1VEOTT7z8vjKQ!aLxrqpqLkbzyIxGgpk:localhost:8800%eeQ$1NFeiQi8KHs7YwoR_5sZ5Q-uC02hsrhadSjvzqVPzd4$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7Vc!MXhwoqNXvexeDDSOZT:localhost:8800 |bQ9Q$1570043754467mNKfq:localhost:8800$98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 _Q3Q$1570043750466Tmiqu:localhost:8800$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800 nQQQ$1570043748464QpNXV:localhost:8800$1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 nQQQ$1570043748463euAqZ:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 nQQQ$1570043730449XMaNb:localhost:8800$1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 nQQQ$1570043746461eQhrq:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 bQ9Q$1570043744459BIUYb:localhost:8800$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043744459BIUYb:localhost:8800$1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 _Q3Q$1570043741458PZvre:localhost:8800$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043739456qeuuS:localhost:8800$1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043738455KNDHf:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043737454adOjg:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 nQQQ$1570043736453VtbeL:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800 _Q3Q$1570043733451EJhWh:localhost:8800$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800 eeQ$1ARtzRbjZhOxhWDl5fXzYtN10pruYSf5_TImuh89s1Q$tihJiL2VpfrwjFOJN0sUo75AUPJhUisJi-Ovg_1sSVc!ILbUVZOfPPwaZRrKJd:localhost:8800>111$1:localhost:42455$0:localhost:42455!0:localhost:42455 (eeQ$19vLeCf5-RS5VKc9TjwCyS2bTeM725irOOcZh93rbxY$tK823vlYv0m-hTszIsMhwpq7uzdUubYOZkA0_0ZNxrU!HZqzpRgqekPOtxstVc:localhost:8800@331$19:localhost:42455$18:localhost:42455!6:localhost:42455 eeQ$18G_dDwi0oSqX3DaEc08gTgAzzVi4IbC-KQAEdwUZe4$hmeKSSoRSrPkrU4zbLBj9bDFzjnT4mIh2c1wFeOgPiQ!kpTPWDZdBbbXKLonZK:localhost:8800i@331$18:localhost:42455$17:localhost:42455!6:localhost:42455 eeQ$17LLTCvWkVEfNHMaNzT2Brm7b2ZUlxT5nt7rUMCPaVQ$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o!msMfSdLIAvklSSAnci:localhost:8800@331$17:localhost:42455$16:localhost:42455!6:localhost:42455 eeQ$15WhY_J6hWlKZDnZwY8NX_BDU6IiotSoQcHRQd3ZQbk$iUm7vjP76W4ojJ5Lv1boDU1TujuGbXu5ubS-phCj1jo!TWETXUgfFZafDdbqLS:localhost:8800  x>QQa $1570043585409JoQZw:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3415}{"auth_events": [["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}], ["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}]], "prev_events": [["$1570043583407USfCf:localhost:8800", {"sha256": "UcETa66T+cVPdoboxdzAFBgpvLh9nUm+SCQEuo0njBQ"}]], "type": "m.room.history_visibility", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043585409JoQZw:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043585294, "hashes": {"sha256": "Smu+qz1L6boy1dCzb9ZLRTt7UrTuqxxh6Qma+6DzgKI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "muSOGW1DTAzH7Gd2qmJ8Ak8biJ18Nv+wes07EHAgvnWGFiTq+sutxFjBCQbRumrN0Xcgn22jmQSqpnpTbW59AQ"}}, "unsigned": {"age_ts": 1570043585294}}x=QQa $1570043584408XdGfO:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "stream_ordering": 3414}{"auth_events": [["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}], ["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "prev_events": [["$1570043583406mAAxW:localhost:8800", {"sha256": "rLg/W1cRIhdgV122gIoIZgIPS4TZEHt4cQsgTga1JjQ"}]], "type": "m.room.history_visibility", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043584408XdGfO:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043584892, "hashes": {"sha256": "H05Ij2w10pvTm23jMLfBvxALlGnp/me+9uBHyE9JdKs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "usxLiJtqUsVTQfWGTJWzijqndXWgiidE8fjocLDp0yxnfKkUXvlcRHrql0kL4mv0WOywPAWGbJ/0ovvDMuF7Bg"}}, "unsigned": {"age_ts": 1570043584892}}g<QQaq $1570043583407USfCf:localhost:8800!taANXnGBZntAreRurn:localhost:8800{"token_id": 642, "stream_ordering": 3413}{"auth_events": [["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043580403vYYeb:localhost:8800", {"sha256": "xhNPlpLTd1TU8jfFeQ2W/XWrgPIFKVL3Qenz08BsbpQ"}], ["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}]], "prev_events": [["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}]], "type": "m.room.join_rules", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "sender": "@anon-20191002_181700-662:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043583407USfCf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043583599, "hashes": {"sha256": "05skaJbC0YOXPIk+UypwqU3DeD3bkcwSuTkocZD/MDI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NpofgpcrprOFueYDCLW7R3Tju+OJ23ycYlzvaevF5k89cBiHpjfgi1+EDozGFmY570s3kHN17JR0xCEV15LCCw"}}, "unsigned": {"age_ts": 1570043583599}} 0vu(A x 4 [  V Q LGB=83.){$vTQe !PgNDjhhIBAXKryuGKy:localhost:8800$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYTQe !PgNDjhhIBAXKryuGKy:localhost:8800$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8UTQe !PgNDjhhIBAXKryuGKy:localhost:8800$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8UTQe !PgNDjhhIBAXKryuGKy:localhost:8800$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdETQe !PgNDjhhIBAXKryuGKy:localhost:8800$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8UTQe !PgNDjhhIBAXKryuGKy:localhost:8800$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgTQe !PgNDjhhIBAXKryuGKy:localhost:8800$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8XbkTQe ~!PgNDjhhIBAXKryuGKy:localhost:8800$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgTQe ~!PgNDjhhIBAXKryuGKy:localhost:8800$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5ATQe }!PgNDjhhIBAXKryuGKy:localhost:8800$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgTQe |!PgNDjhhIBAXKryuGKy:localhost:8800$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgTQe {!PgNDjhhIBAXKryuGKy:localhost:8800$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQTQe z!PgNDjhhIBAXKryuGKy:localhost:8800$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYTQe y!PgNDjhhIBAXKryuGKy:localhost:8800$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAT Qe x!PgNDjhhIBAXKryuGKy:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAT Qe w!PgNDjhhIBAXKryuGKy:localhost:8800$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9QT Qe v!vnFXnkCSfTbsSNKrtg:localhost:8800$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okucT Qe u!vnFXnkCSfTbsSNKrtg:localhost:8800$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYT Qe t!vnFXnkCSfTbsSNKrtg:localhost:8800$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUTQe s!vnFXnkCSfTbsSNKrtg:localhost:8800$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oTQe r!vnFXnkCSfTbsSNKrtg:localhost:8800$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8TQe q!vnFXnkCSfTbsSNKrtg:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQTQe p!vnFXnkCSfTbsSNKrtg:localhost:8800$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6YTQe o!jRuDexjFzIDOKbwDJQ:localhost:8800$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUTQe n!jRuDexjFzIDOKbwDJQ:localhost:8800$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcTQe m!jRuDexjFzIDOKbwDJQ:localhost:8800$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWETQe l!jRuDexjFzIDOKbwDJQ:localhost:8800$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8TQe k!jRuDexjFzIDOKbwDJQ:localhost:8800$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQTQe j!jRuDexjFzIDOKbwDJQ:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucT~Qe i!jRuDexjFzIDOKbwDJQ:localhost:8800$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wT}Qe h!KcXNWNfbLcYsBKZHIp:localhost:8800$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0T|Qe g!KcXNWNfbLcYsBKZHIp:localhost:8800$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1BhbygT{Qe f!KcXNWNfbLcYsBKZHIp:localhost:8800$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0TzQe e!KcXNWNfbLcYsBKZHIp:localhost:8800$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNATyQe d!KcXNWNfbLcYsBKZHIp:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4TxQe c!KcXNWNfbLcYsBKZHIp:localhost:8800$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg;wQ3 b!dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455AvQ? b!dBfASZrfiFeSKTjYJm:localhost:8800$60_msg_e:localhost:42455AuQ? a!dBfASZrfiFeSKTjYJm:localhost:8800$59_msg_d:localhost:42455;tQ3 a!dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455;sQ3 _!dBfASZrfiFeSKTjYJm:localhost:8800$56:localhost:42455JrQQ ^!dBfASZrfiFeSKTjYJm:localhost:8800$1570043593416CouYv:localhost:8800JqQQ ]!dBfASZrfiFeSKTjYJm:localhost:8800$1570043592415heiAH:localhost:8800JpQQ \!dBfASZrfiFeSKTjYJm:localhost:8800$1570043591414NuXxd:localhost:8800JoQQ [!dBfASZrfiFeSKTjYJm:localhost:8800$1570043590413Khvee:localhost:8800JnQQ Z!dBfASZrfiFeSKTjYJm:localhost:8800$1570043589412JaDTY:localhost:8800JmQQ Y!tcYctHPiaKzsKgrXlU:localhost:8800$1570043588411PDBWG:localhost:8800;lQ3 X!taANXnGBZntAreRurn:localhost:8800$55:localhost:42455  ,BQQa) $1570043590413Khvee:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3419}{"auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}]], "prev_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}]], "type": "m.room.member", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-663", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-663:localhost:8800", "event_id": "$1570043590413Khvee:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043590585, "hashes": {"sha256": "MKuL6Mf6QmdPSAroALMEZv6r1XD/m6/E7m/vwo/tV4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QccJsKzOrbG9eqGBb+pTmJypiDNya6xEh0Ik/IxITQlv09KaAAji6us9zuuccDHkXozJfGad/nvcAlvyGc0GDA"}}, "unsigned": {"age_ts": 1570043590585}}AQQaC $1570043589412JaDTY:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3418}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-663:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043589412JaDTY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043589424, "hashes": {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fdLtiW2fDOIebAiFrgSSHcvnswKhvvy7e3dTlI8FwbjNaEJSM5cgACuU098CMQPoMkaP+PrXgIachLH8Ze7BAA"}}, "unsigned": {"age_ts": 1570043589424}}z@QQs $1570043588411PDBWG:localhost:8800!tcYctHPiaKzsKgrXlU:localhost:8800{"token_id": 641, "txn_id": "613", "stream_ordering": 3417}{"auth_events": [["$1570043581404AarAd:localhost:8800", {"sha256": "saKxEbb0iKQZ57CC9tXieVMW4jCmD6/u+lv1AcC5KwI"}], ["$1570043578400zncwP:localhost:8800", {"sha256": "IemiZkjTgv0TRDVAObX3gj+yub/ynTPan4Wr6slIjBQ"}], ["$1570043579402KDYtE:localhost:8800", {"sha256": "Z5IWtePyONKRvBzsw27EHWIZUceMQGM9ckxJ/HSU75I"}]], "prev_events": [["$1570043584408XdGfO:localhost:8800", {"sha256": "Cj88tjSsoYIIYghWBpXy9cWI3MWqUsjt8JygPLFbdEQ"}]], "type": "m.room.message", "room_id": "!tcYctHPiaKzsKgrXlU:localhost:8800", "sender": "@anon-20191002_181700-661:localhost:8800", "content": {"body": "Hello world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "event_id": "$1570043588411PDBWG:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043588091, "hashes": {"sha256": "7WAfF70eiPbnw1JYO8puEStvftDqlqxd4zSGpt+ADqQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wh4oWerXR5N576wd4nf+Agx9zi5QNKzQ3RUf9WSsOI+c381vocIi3h1Qc73qx2Gi3vi2CvucuoclmdLADNxEAQ"}}, "unsigned": {"age_ts": 1570043588091}}R?3Q3 $55:localhost:42455!taANXnGBZntAreRurn:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3416}{"sender": "@__ANON__-34:localhost:42455", "hashes": {"sha256": "Fu45llOYgRjWhX0+oNdV3HqYVlcSl+dQO5fd2ga1nKs"}, "origin": "localhost:42455", "state_key": "@__ANON__-34:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!taANXnGBZntAreRurn:localhost:8800", "prev_events": [["$1570043585409JoQZw:localhost:8800", {"sha256": "w9BfSnRndJGZohgz0OdWVJpF9IFs0IHY2BNVMiOx6tQ"}]], "origin_server_ts": 1570043587006, "content": {"membership": "join"}, "event_id": "$55:localhost:42455", "auth_events": [["$1570043582405uFoRY:localhost:8800", {"sha256": "7pzJbeTG9u3aB1LuTrIVg5JhWDcyMDtJMKue2dvHC9c"}], ["$1570043578401arzBQ:localhost:8800", {"sha256": "J0NXQST16QWPVhmDlgIriqrciUxDSGrZ3CqNyFsomdE"}], ["$1570043583407USfCf:localhost:8800", {"sha256": "UcETa66T+cVPdoboxdzAFBgpvLh9nUm+SCQEuo0njBQ"}]], "signatures": {"localhost:42455": {"ed25519:1": "GhX8Gkdry187UCDa8o4fuTlLe5tK2NWsn0is8W3nY1nj9kNwOf+f+NoEp9O3Dg+OwHQLanqjCfgaj55JQs1mCw"}}, "unsigned": {}} ! 0 @ P ` p(8HXhxu3 ]@anon-20191002_181700-696:localhost:8800$2b$04$6XBbqqzzq6PaYqpikwMYhev.oRCZNoM5hSJSwGtCeKj1paJc3ODJe]u2 ]@anon-20191002_181700-695:localhost:8800$2b$04$Rq.zv/VhuDh4hABfdQ7HIu9iFcRmXkuaMTibkpKGamyS4/QMMEIgW]u1 ]@anon-20191002_181700-693:localhost:8800$2b$04$vR346sI78EPBO.1NFsS8yuX3kYJPeVF4Q0IjZrEWeKFO45BKZq0GG]u0 ]@anon-20191002_181700-692:localhost:8800$2b$04$OcF1wirPOtWdtoDG/W/duupuGDNPIfRoTg1JQSZuNDFq2S7Lox/Hq]u/ ]@anon-20191002_181700-691:localhost:8800$2b$04$siddBw9ettAjYKN2Du5CxO.cTg//4bZZr18uXQHGG7HxAfPER/pAS]{u. ]@anon-20191002_181700-690:localhost:8800$2b$04$fHJk5s/ee1ncZhw5/tlpE.l.42AxADCtB6vE4zlaoQ2Bo9uqG98Ze]ou- ]@anon-20191002_181700-689:localhost:8800$2b$04$8j1DXyhXjHn1wLUAO93v9eW3ooOquJLYRMqEgpEhoXqkWd4H9lx8m]nu, ]@anon-20191002_181700-688:localhost:8800$2b$04$dwN1GsQTW9aGFcqjk0rj1.ODNbh0hhkxm6qS7Y/x1qDfciWPm0Dpm]mu+ ]@anon-20191002_181700-687:localhost:8800$2b$04$IhF/xRQ/LPfeS5wiMM.zDOeRRpLALHUF7o1CgzwTiGrUM4JKaiHlW]lu* ]@anon-20191002_181700-686:localhost:8800$2b$04$8yo8a2RMlzlHNa/v55mUYuSdU2.6g/mVgaq.zglZAUbi2bUV/mxTK]ku) ]@anon-20191002_181700-685:localhost:8800$2b$04$nnvc8rzkqtPKSCGArG2dlObstCHyX7zsU4w82FDS/CZb2WsFe7Xgy]`u( ]@anon-20191002_181700-684:localhost:8800$2b$04$GwETD9ezYBSgRuHixITl4.wJVNB/TZcJ5ATGOyq/HHYzVd4Snj4rS]Wu' ]@anon-20191002_181700-683:localhost:8800$2b$04$J.0CdfAOhJXEmFBR1cdfyOhXRd2CwqA/Fj3mn.BBPkQiGxBbVoAwW]Mu& ]@anon-20191002_181700-682:localhost:8800$2b$04$euN0w.wOkkNkLvMCX26iM./uZw5qa4tuyfDkGh1520bUMwDXxlw7u]Fu% ]@anon-20191002_181700-681:localhost:8800$2b$04$IY6M8m5/pitSWBbU3Bkky.70EMhTN9XKgeiuUE/atz0T90ajY/G6S]=u$ ]@anon-20191002_181700-680:localhost:8800$2b$04$tfReZN8.NTw9KrJ7s71n5Okdyk5Zof8bY/0sESM3anlL6qTMza0Dq]7u# ]@anon-20191002_181700-679:localhost:8800$2b$04$07TP0dUnmKkMZ44ze1fLW.InONo23fD9sH02ZFb82Gpa6LYhVCsQG],u" ]@anon-20191002_181700-678:localhost:8800$2b$04$6Lumnh0qRUPaA2/AiZssguecEaF2r3MeH290mefbZiifmKlOfJY56],u! ]@anon-20191002_181700-677:localhost:8800$2b$04$30809gImoPRRpFOUw/r84OhyRhVNbhWx9GllQNqWVz.FvIIj2YEda]"u ]@anon-20191002_181700-676:localhost:8800$2b$04$DZ4/9o3WW8pvHQQL74r6IuwxjkQv05yyzMrA7iHWDQR4U8uvtV3Sm] u ]@anon-20191002_181700-675:localhost:8800$2b$04$RJqmSeqgz8V5LV1s/tqWxuRrMm9S4Derhk8LvTtQ2epwoBve59ib6]u ]@anon-20191002_181700-674:localhost:8800$2b$04$6nT3JBMNnqSGOKjhV4.3seho6JrXRgLT3eynD6IAWSg2dCCUGEPH.]u ]@anon-20191002_181700-673:localhost:8800$2b$04$YhJ8JX2blq3e5IGula2i7ONGlb62iKeyJylUA1mgTU6cSdU0e.z5e]u ]@anon-20191002_181700-672:localhost:8800$2b$04$hgZsqYdlNzZU1YWLusiUqOTAfRk7/opZ.Ui2rr0v2pFg43S9kkfV6]u ]@anon-20191002_181700-671:localhost:8800$2b$04$6Rs8iV.RZ.9gN.efGyerq.cnyL4wsItaVVhAMwCggXTXJC2dcua3y] u ]@anon-20191002_181700-670:localhost:8800$2b$04$PH3kSX7T4P9Ycc2frWWIYO3jPtO4hcMcVoHaCd4qKWSK77ghQ5Nr2]u ]@anon-20191002_181700-669:localhost:8800$2b$04$pkEZf6gXrs9fZ7i6Jbiy3.o0A4ZUzMn39icMusgqSoMCyfECKv0My]u ]@anon-20191002_181700-668:localhost:8800$2b$04$D46DKiF.fXm3oHCNFfWu4OA4v5QTW3ZH9dfvxNQQu0s4P3en0FRii]u ]@anon-20191002_181700-667:localhost:8800$2b$04$8HKogDol7kl5h5bW9/OEd.SHKlPQWsK4JDHIIFe7jrlYTVW1GimSu]u ]@anon-20191002_181700-666:localhost:8800$2b$04$aCwbz.mrJFp5qrZYXpVuMOMOKGoMCkxfk3ATXQq6CfgWi1xFQL7V.]u ]@anon-20191002_181700-665:localhost:8800$2b$04$wKoPYyjLSrrPfld1PHGF5e71y5rjhvLL4SldCehxD1tVB9h44SddC]u ]@anon-20191002_181700-664:localhost:8800$2b$04$.snh/5icdzzy0ofnmVfDx.pO83RwzPKWN9qOb2Yo3X/x0MkGyFZES]u ]@anon-20191002_181700-663:localhost:8800$2b$04$5UWO34FGmaitBFbX3GW5jewDpD98ZXrVje5gj8Ye7QQtcY5WyBASi] f(  | p * (JHu'$se/Q ]$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7om.room.join_rules!vnFXnkCSfTbsSNKrtg:localhost:8800mUmV@anon-20191002_181700-666:localhost:8800&re3Q ]$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8m.room.power_levels!vnFXnkCSfTbsSNKrtg:localhost:8800mRmS@anon-20191002_181700-666:localhost:8800 qe'Q ]$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQm.room.member!vnFXnkCSfTbsSNKrtg:localhost:8800mOmPX@anon-20191002_181700-666:localhost:8800p e'Q  ]$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Ym.room.create!vnFXnkCSfTbsSNKrtg:localhost:8800mLTmL@anon-20191002_181700-666:localhost:8800oe)Q E$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lUm.room.message!jRuDexjFzIDOKbwDJQ:localhost:8800mCkmF:@__ANON__-37:localhost:42455ne'Q E$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcm.room.member!jRuDexjFzIDOKbwDJQ:localhost:8800mAmB?@__ANON__-37:localhost:42455,me?Q ]$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEm.room.history_visibility!jRuDexjFzIDOKbwDJQ:localhost:8800m;Bm=@anon-20191002_181700-665:localhost:8800$le/Q ]$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8m.room.join_rules!jRuDexjFzIDOKbwDJQ:localhost:8800m8Em9@anon-20191002_181700-665:localhost:8800&ke3Q ]$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQm.room.power_levels!jRuDexjFzIDOKbwDJQ:localhost:8800m5m6M@anon-20191002_181700-665:localhost:8800 je'Q ]$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucm.room.member!jRuDexjFzIDOKbwDJQ:localhost:8800m2m3@anon-20191002_181700-665:localhost:8800i e'Q  ]$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wm.room.create!jRuDexjFzIDOKbwDJQ:localhost:8800m.m.o@anon-20191002_181700-665:localhost:8800he'Q E$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0m.room.member!KcXNWNfbLcYsBKZHIp:localhost:8800m'm'@__ANON__-36:localhost:42455,ge?Q ]$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbygm.room.history_visibility!KcXNWNfbLcYsBKZHIp:localhost:8800m!|m#l@anon-20191002_181700-664:localhost:8800$fe/Q ]$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0m.room.join_rules!KcXNWNfbLcYsBKZHIp:localhost:8800mmh@anon-20191002_181700-664:localhost:8800&ee3Q ]$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNAm.room.power_levels!KcXNWNfbLcYsBKZHIp:localhost:8800mm@anon-20191002_181700-664:localhost:8800 de'Q ]$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4m.room.member!KcXNWNfbLcYsBKZHIp:localhost:8800mOm@anon-20191002_181700-664:localhost:8800c e'Q  ]$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXgm.room.create!KcXNWNfbLcYsBKZHIp:localhost:8800mbm@anon-20191002_181700-664:localhost:8800b?)Q E $60_msg_e:localhost:42455m.room.message!dBfASZrfiFeSKTjYJm:localhost:8800 mm@__ANON__-35:localhost:42455a?)Q E $59_msg_d:localhost:42455m.room.message!dBfASZrfiFeSKTjYJm:localhost:8800 mm @__ANON__-35:localhost:42455`=3Q E$57_pl_x:localhost:42455m.room.power_levels!dBfASZrfiFeSKTjYJm:localhost:8800mm v@__ANON__-35:localhost:42455{_3'Q E$56:localhost:42455m.room.member!dBfASZrfiFeSKTjYJm:localhost:8800mzm@__ANON__-35:localhost:42455"^Q?Q ]$1570043593416CouYv:localhost:8800m.room.history_visibility!dBfASZrfiFeSKTjYJm:localhost:8800m<mY@anon-20191002_181700-663:localhost:8800]Q/Q ]$1570043592415heiAH:localhost:8800m.room.join_rules!dBfASZrfiFeSKTjYJm:localhost:8800mm/@anon-20191002_181700-663:localhost:8800\Q3Q ]$1570043591414NuXxd:localhost:8800m.room.power_levels!dBfASZrfiFeSKTjYJm:localhost:8800mmq@anon-20191002_181700-663:localhost:8800[Q'Q ]$1570043590413Khvee:localhost:8800m.room.member!dBfASZrfiFeSKTjYJm:localhost:8800mmX@anon-20191002_181700-663:localhost:8800  fxEQQa $1570043593416CouYv:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3422}{"auth_events": [["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}], ["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}]], "prev_events": [["$1570043592415heiAH:localhost:8800", {"sha256": "zT5IGP+iTkvApDEZMWpKLerXj8BPf62bfZK/93q4Wjo"}]], "type": "m.room.history_visibility", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043593416CouYv:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043593276, "hashes": {"sha256": "VN6Yf3LS/ExgYXTaL2vQEidF5LwE9QmtdjNf35A47lc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mIweU8Pv3Nh2HV6QIumX1ArhXwRvLzquQK648tGMa5iEuAkPJ8+IHlwc9juWewQ7jcaamY8dvxH1ZdpZzIFuDg"}}, "unsigned": {"age_ts": 1570043593276}}gDQQaq $1570043592415heiAH:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3421}{"auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}]], "prev_events": [["$1570043591414NuXxd:localhost:8800", {"sha256": "sK63VfwSdm7zCEp9ymmLzYzPMO6cuoPY8dUziDw6joI"}]], "type": "m.room.join_rules", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043592415heiAH:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043592396, "hashes": {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k4td453tTQ68gmFF+Yfu63BUaxw8v/xjlbGMBUG5Bg1vbgWosERdG6m8gh0oxyn9NSIGqSb/LiRCtnzjHNWCCw"}}, "unsigned": {"age_ts": 1570043592396}}+CQQay $1570043591414NuXxd:localhost:8800!dBfASZrfiFeSKTjYJm:localhost:8800{"token_id": 643, "stream_ordering": 3420}{"auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "ea2KODSy7QIgeDNlqU8roeeD8y52mgxjzPspiLLXenY"}], ["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}]], "prev_events": [["$1570043590413Khvee:localhost:8800", {"sha256": "Z/9cS+RwK4vwlj0l+csgNX6r++qS9LnkZhsSelXJNSA"}]], "type": "m.room.power_levels", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "sender": "@anon-20191002_181700-663:localhost:8800", "content": {"users": {"@anon-20191002_181700-663:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043591414NuXxd:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043591695, "hashes": {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3b+HQPZHWa21Krp4NK/aKbJyP0oc2ui5qHe4W91Nfr2Dr8LsBm7LaM83Vg1sIothsH2t+6CP4VRq5BxD5ttJDw"}}, "unsigned": {"age_ts": 1570043591695}} "O:? c _ j " L;kp*/SO0Q'Ee ;!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg/Q'Ee :!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$fm4GaTaFZ3q0SieJ7jxN6_-ThXQh4dRhelGHOUfseSko.Q? e 9!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibility$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQg-Q/ e 8!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYi,Q3 e 7!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA +Q']e 6!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAc*Q' e 5!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q)Q'Ee 4!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY(Q'Ee 3!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455$j4AyAdLhDF4t55TkA_rLQjNLNGJGeYaaAnP1mP1z55wo'Q? e 2!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibility$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUg&Q/ e 1!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7oi%Q3 e 0!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 $Q']e /!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQc#Q' e .!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Yg"Q/ e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 !Q']e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc Q'Ee -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLccQ' e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wiQ3 e -!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQQ'Ee ,!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLcQ'Ee +!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455$ODMJ-iUdhqDMHrNa-V288j4Ay7-4kL_az64iDroXTLwoQ? e *!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.history_visibility$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWEgQ/ e )!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.join_rules$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8iQ3 e (!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.power_levels$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ Q']e '!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guccQ' e &!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.create$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075wQ'Ee %!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0Q'Ee $!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@__ANON__-36:localhost:42455$_Rc7L0rJ0B4bInG4fEV4-qUkc7VYf0NWkeM6fgYzDBIoQ? e #!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.history_visibility$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1BhbyggQ/ e "!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.join_rules$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0iQ3 e !!KcXNWNfbLcYsBKZHIp:localhost:8800m.room.power_levels$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA Q']e !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.member@anon-20191002_181700-664:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4cQ' e !KcXNWNfbLcYsBKZHIp:localhost:8800m.room.create$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg]Q/ Q !dBfASZrfiFeSKTjYJm:localhost:8800m.room.join_rules$1570043592415heiAH:localhost:8800 5T)FoD}R' { P % y N # w L ! u J  s H q*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  U*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  T*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  S*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ^ *Q!eLsrBEnrHolwCNgkFW:localhost:8800IM*Q!eLsrBEnrHolwCNgkFW:localhost:8800HL*Q!eLsrBEnrHolwCNgkFW:localhost:8800GK*Q!eLsrBEnrHolwCNgkFW:localhost:8800FJ*Q!eLsrBEnrHolwCNgkFW:localhost:8800EI*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eJPTUgihvSwaOhIkrC:localhost:8800-2*Q!eJPTUgihvSwaOhIkrC:localhost:8800,1*Q!eJPTUgihvSwaOhIkrC:localhost:8800+0*Q!eJPTUgihvSwaOhIkrC:localhost:8800*/*Q!eJPTUgihvSwaOhIkrC:localhost:8800).*Q!eJPTUgihvSwaOhIkrC:localhost:8800(-*Q!eJPTUgihvSwaOhIkrC:localhost:8800',*Q!eJPTUgihvSwaOhIkrC:localhost:8800&+*Q!eJPTUgihvSwaOhIkrC:localhost:8800%**Q!eJPTUgihvSwaOhIkrC:localhost:8800$)*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800  skLeQac$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3429}{"auth_events": ["$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "prev_events": ["$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "type": "m.room.power_levels", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"users": {"@anon-20191002_181700-664:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043599354, "hashes": {"sha256": "kLSLgAOq8qk3YHMXiEyKBix6mmeYfML3ylAbf/ulnBE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "68CmNXPA41cXOTovCwjvnOBqK6TypKxrsH6WZLLWjiYUdy9kCClKpJfGLwdyflF5lVrfvNfvnH4ZY1ze0vgHAg"}}, "unsigned": {"age_ts": 1570043599354}}vKeQay$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3428}{"auth_events": ["$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg"], "prev_events": ["$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg"], "type": "m.room.member", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-664", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-664:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043598671, "hashes": {"sha256": "ZLXv9oGnpNXNySB5mTDcHBROnTIk0/5aa3svolwqrMA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iGEDY+QSeVM5N+oaJr21hiyLt2R1B/CWH2DxiJ/RoiyaiXEb8gJiizmtx7O/gQpBIOnlgzeTtU+TJRiC/cK0Aw"}}, "unsigned": {"age_ts": 1570043598671}}iJeQa_$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3427}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-664:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043597666, "hashes": {"sha256": "otJcffuOtdIEcTYRB6fl4Bo26TW5sq3A1i5UxXYuwyU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uoKcPjhHdg1jZ3l3Kdpy9GnAzHLktLEEbdbVDGSlhMEI1e67X4kzvD8qQNSJL0/btn1WY0UmmUjMD1SHW9j4Dg"}}, "unsigned": {"age_ts": 1570043597666}}"I?Qcw $60_msg_e:localhost:42455!dBfASZrfiFeSKTjYJm:localhost:8800{"outlier": false, "stream_ordering": 3426}{"type": "m.room.message", "room_id": "!dBfASZrfiFeSKTjYJm:localhost:8800", "origin": "localhost:42455", "depth": 11, "hashes": {"sha256": "Y9LExr0rZULJCFRY+rN8lA9n+x+Fv9WnUhBI3lA0WcQ"}, "sender": "@__ANON__-35:localhost:42455", "event_id": "$60_msg_e:localhost:42455", "auth_events": [["$1570043589412JaDTY:localhost:8800", {"sha256": "mo0ikCNjLQ9FYJQJxI5YtNSMBHeOteceypOU3qvKAlM"}], ["$1570043592415heiAH:localhost:8800", {"sha256": "uinErCpgHzaruwtjy4MxqJ0SUczTshCOBfzYPnczCA0"}], ["$1570043591414NuXxd:localhost:8800", {"sha256": "WZ84+v8OyDvwWaJqRHXHCQj1dM8Mkjf1IW0XJvCUbZQ"}], ["$56:localhost:42455", {"sha256": "DGX2pZV+UCjvl8ion30naDpA+H3DymMl5+aR91rSA1Y"}]], "content": {"body": "nothing to see"}, "origin_server_ts": 1570043594715, "prev_events": [["$59_msg_d:localhost:42455", {}]], "signatures": {"localhost:42455": {"ed25519:1": "63jNfsolCbNSKPHWZMsD61HAovTmEcuR+7Yvo3RFt7Rdi2MlEYZhRrN06d8Y7Wrrp57OcnR5/7l5HLSwaUnYAQ"}}, "unsigned": {}} ?GM Q  U  ] ! e $ l ,s7v5{9?OUe)p4=M ]  @anon-20191002_181700-701:localhost:8800m&\R>L ]  @anon-20191002_181700-700:localhost:8800m&\?9K ]@anon-20191002_181700-701:localhost:8800a&\9J ]@anon-20191002_181700-700:localhost:8800a&\>I ]  @anon-20191002_181700-698:localhost:8800m&\n9H ]@anon-20191002_181700-697:localhost:8800a&\9G ]@anon-20191002_181700-698:localhost:8800a&\9F ]@anon-20191002_181700-696:localhost:8800a&\9E ]@anon-20191002_181700-695:localhost:8800a&\9D ]@anon-20191002_181700-693:localhost:8800a&\9C ]@anon-20191002_181700-692:localhost:8800a&\>B ]  @anon-20191002_181700-691:localhost:8800m&\[9A ]@anon-20191002_181700-691:localhost:8800a&\>@ ]  @anon-20191002_181700-690:localhost:8800m&\m9? ]@anon-20191002_181700-690:localhost:8800a&\9> ]@anon-20191002_181700-689:localhost:8800a&\9= ]@anon-20191002_181700-688:localhost:8800a&\9< ]@anon-20191002_181700-687:localhost:8800a&\9; ]@anon-20191002_181700-686:localhost:8800a&\>: ]  @anon-20191002_181700-685:localhost:8800m&\99 ]@anon-20191002_181700-685:localhost:8800a&\>8 ]  @anon-20191002_181700-684:localhost:8800m&\f97 ]@anon-20191002_181700-684:localhost:8800a&\?6 ] @anon-20191002_181700-683:localhost:8800m&\,95 ]@anon-20191002_181700-683:localhost:8800a&\?4 ] @anon-20191002_181700-682:localhost:8800m&\C93 ]@anon-20191002_181700-682:localhost:8800a&\>2 ]  @anon-20191002_181700-681:localhost:8800m&\;91 ]@anon-20191002_181700-681:localhost:8800a&\>0 ]  @anon-20191002_181700-680:localhost:8800m&\C>- ]  @anon-20191002_181700-678:localhost:8800m&\89/ ]@anon-20191002_181700-680:localhost:8800a&\>. ]  @anon-20191002_181700-679:localhost:8800m&\C9, ]@anon-20191002_181700-679:localhost:8800a&\9+ ]@anon-20191002_181700-678:localhost:8800a&\=* ]  @anon-20191002_181700-677:localhost:8800m&\9) ]@anon-20191002_181700-677:localhost:8800a&\=( ]  @anon-20191002_181700-676:localhost:8800m&\9' ]@anon-20191002_181700-676:localhost:8800a&\>& ]  @anon-20191002_181700-675:localhost:8800m&\C9% ]@anon-20191002_181700-675:localhost:8800a&\=$ ]  @anon-20191002_181700-674:localhost:8800m&\=# ]  @anon-20191002_181700-673:localhost:8800m&\9" ]@anon-20191002_181700-674:localhost:8800a&\9! ]@anon-20191002_181700-673:localhost:8800a&\= ]  @anon-20191002_181700-672:localhost:8800m&\9 ]@anon-20191002_181700-672:localhost:8800a&\= ]  @anon-20191002_181700-671:localhost:8800m&\9 ]@anon-20191002_181700-671:localhost:8800a&\? ] @anon-20191002_181700-670:localhost:8800m&\9 ]@anon-20191002_181700-670:localhost:8800a&\? ] @anon-20191002_181700-669:localhost:8800m&\9 ]@anon-20191002_181700-669:localhost:8800a&\@ ]@anon-20191002_181700-668:localhost:8800m&\ 9 ]@anon-20191002_181700-668:localhost:8800a&\> ]  @anon-20191002_181700-667:localhost:8800m&\j9 ]@anon-20191002_181700-667:localhost:8800a&\> ]  @anon-20191002_181700-666:localhost:8800m&\:9 ]@anon-20191002_181700-666:localhost:8800a&\> ]  @anon-20191002_181700-665:localhost:8800m&\C9 ]@anon-20191002_181700-665:localhost:8800a&\> ]  @anon-20191002_181700-664:localhost:8800m&\C9 ]@anon-20191002_181700-664:localhost:8800a&\ 5 ih i g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFiN2dpPW55Omh4dGtpT0MKMDAyZnNpZ25hdHVyZSAG_4rwETz8mescypyvlXeArGSgGB-f7oN8uYsSEuwbRAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENpMXN5VmlBO3h5NG9FQVcKMDAyZnNpZ25hdHVyZSCYuwn9jELEvJuUHDFlpMhBHDbPvBhF57TAUIgnygORqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDsyRFAxYTB3d0JfaCo5NEoKMDAyZnNpZ25hdHVyZSCiZWeiN5k8q08QkTiOIMXaDEtS78p3BtHDiD4U6mLWdAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNFOkdjeUY7MjAmQUdEVysKMDAyZnNpZ25hdHVyZSCrhY5xAnfaaIsWrJfYKh4tW-EB9Tfc_TZ3e6e0bi60IAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNjNHd1UUpjOW9UNUF4UXoKMDAyZnNpZ25hdHVyZSCPIUVN9lWQ8BoblKnX6rhKPpx4Xu7DL-voKOjr7T_ijgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExOWnhedGV-Lno9XnE4VX4KMDAyZnNpZ25hdHVyZSA5Kn1fYh9S-SPR2I_R6omhBs-F-gPAuYLrGasgatD_KQo /C j8pN+ ] h 6  p ? y H  | I }JMR!],h7s@ 0Q Q!QWLJZmJqjWZjVOjdYF:localhost:8800%0P Q!ZWANpHlizyLrUiVvAm:localhost:8800%.O Q  !TkluVzxeeCbMtbFWWS:localhost:8800%.N Q  !ELBgBaMSIMNkjFSumH:localhost:8800%.M Q  !CKNftKKCaOCVUyYWNY:localhost:8800%.L Q  !cvXpMzcxNNhsNttxvt:localhost:8800%.K Q  !jlGSdNttccYxjfLkwW:localhost:8800%.J Q  !ZNIjCvcWhgcwskanjT:localhost:8800%.I Q  !NJdkYMskQwIpIWlWkn:localhost:8800%.H Q  !jGQNGXehugtTvjUGKI:localhost:8800%.G Q  !VNdqhtoDkyMoQdMTtM:localhost:8800%.F Q  !ulbQzxdPXzuvNoqqgU:localhost:8800%.E Q  !pTvdDtkgovsIdAdxCm:localhost:8800%.D Q  !vxEMWYTUdzvLyVZNzJ:localhost:8800%.C Q  !CAGaRyRvrohDRBsrWH:localhost:8800%.B Q  !hNCwypIzdDZDVmCEfd:localhost:8800%.A Q  !eZjhYVNpwdogVDKHCk:localhost:8800%0@ Q!sBcwyPoXKgnSGVTjNR:localhost:8800%.? Q  !WgXzOXLTeqaGfiDFhL:localhost:8800%0> Q!LFBhoxJpmBqFrwEzGP:localhost:8800%0= Q!URpLZLuBfVcfHVTBGS:localhost:8800%.< Q  !YaLuQzmJKSMTSFEqjO:localhost:8800%0; Q!cOFSwLSkxZECJMvjjZ:localhost:8800%.: Q   !eGEEtFXUXuZDImkeql:localhost:8800%09 Q!ZOpRjvUhkWYJBFJZeO:localhost:8800%08 Q!BPNyKqmwcpGxIbGFZG:localhost:8800%07 Q!ZOwibbprUCQrSJQCrx:localhost:8800%06 Q!qtelAHlSkrqEFmlCqS:localhost:8800%05 Q!NcJYmIbgjsaKJOzBcs:localhost:8800%04 Q!biBIcqnGelHvLnpkOu:localhost:8800%03 Q!yNfCaBMPezurwkJRAX:localhost:8800%02 Q!BKZJsoFNhiLTDYNclB:localhost:8800%01 Q!aiOswwhoZqjhcjzbzc:localhost:8800%00 Q!IYxUkyFHOgvhLpdkOA:localhost:8800%0/ Q!anErKtXIsVKEEsrzWM:localhost:8800%0. Q!TcCLuIBUrtFqghDgay:localhost:8800%0- Q!yWhIsLsgNVGcnELrDS:localhost:8800%., Q  !wCsDjKBtuUbrmZgjsB:localhost:8800%.+ Q  !SpXEytywhTbAftyVBr:localhost:8800%.* Q  !itfjLXhEaORJLkbfVS:localhost:8800%.) Q  !GsjDgpaxdwYfnefiWO:localhost:8800%0( Q!jomrpmwwQQtghscizn:localhost:8800%.' Q  !ABHbfUdkHCJksMsaUt:localhost:8800%.& Q  !DntdfAPfCfgdOoRMdl:localhost:8800%.% Q  !THHfVSOSWiBQTHRAnJ:localhost:8800%/$ Q !KetCYFxrTxawNOGnOf:localhost:8800%/# Q !JiUawCFQnodcpssOfK:localhost:8800%/" Q !NgkQVVUNzoyCVPtckM:localhost:8800%/! Q !lgejtcwlywOoIXwEgy:localhost:8800%/ Q !PUIxAaiCnbqaVbawGu:localhost:8800%/ Q !OJilSqnQvLgoXSqRaW:localhost:8800%. Q  !PVyTvKbqnjSXfGWAMy:localhost:8800%./ Q !SrwdtDytJDUBVZOueF:localhost:8800%  3 !13:localhost:42455%  3 !12:localhost:42455%/ Q !nhbUIcIbhuXkRqfeDa:localhost:8800%! 3!11:localhost:42455%  3 !10:localhost:42455% 1 !9:localhost:42455%/ Q !SnROoiDBapNNtMmKnT:localhost:8800%/ Q !uGpSboYkgxVNOqNeUG:localhost:8800%/ Q !DSFBpkqfnvBQbGoMUK:localhost:8800%/ Q !ZKPJvrCZHMHPEksYDc:localhost:8800%/ Q !PgNDjhhIBAXKryuGKy:localhost:8800%/ Q !vnFXnkCSfTbsSNKrtg:localhost:8800%/ Q !jRuDexjFzIDOKbwDJQ:localhost:8800%/ Q !KcXNWNfbLcYsBKZHIp:localhost:8800% 9 D }  *cX>"XC e]]Q=$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI@anon-20191002_181700-675:localhost:8800@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:8800joinanon-20191002_181700-675* Q]]3=$1570043670433bjAzo:localhost:8800@anon-20191002_181700-674:localhost:8800@anon-20191002_181700-674:localhost:8800!11:localhost:42455joinanon-20191002_181700-674* Q]]3=$1570043668432TfiHj:localhost:8800@anon-20191002_181700-673:localhost:8800@anon-20191002_181700-673:localhost:8800!11:localhost:42455joinanon-20191002_181700-673k 3EE3$72:localhost:42455@__ANON__-47:localhost:42455@__ANON__-47:localhost:42455!11:localhost:42455join* Q]]3=$1570043664431IMLSL:localhost:8800@anon-20191002_181700-672:localhost:8800@anon-20191002_181700-672:localhost:8800!10:localhost:42455joinanon-20191002_181700-672k 3EE3$69:localhost:42455@__ANON__-46:localhost:42455@__ANON__-46:localhost:42455!10:localhost:42455join) Q]]1=$1570043660430kLPpN:localhost:8800@anon-20191002_181700-671:localhost:8800@anon-20191002_181700-671:localhost:8800!9:localhost:42455joinanon-20191002_181700-671j 3EE1$66:localhost:42455@__ANON__-45:localhost:42455@__ANON__-45:localhost:42455!9:localhost:42455joinz 3EEQ$62:localhost:42455@__ANON__-43:localhost:42455@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800join9 Q]]Q=$1570043653425AhyPB:localhost:8800@anon-20191002_181700-670:localhost:8800@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800joinanon-20191002_181700-670z 3EEQ$61:localhost:42455@__ANON__-41:localhost:42455@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800join9 Q]]Q=$1570043646419zIOAX:localhost:8800@anon-20191002_181700-669:localhost:8800@anon-20191002_181700-669:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800joinanon-20191002_181700-669 eEEQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs@__ANON__-40:localhost:42455@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800joinC e]]Q=$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA@anon-20191002_181700-668:localhost:8800@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800joinanon-20191002_181700-668 eEEQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc@__ANON__-40:localhost:42455@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800joinC e]]Q=$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU@anon-20191002_181700-668:localhost:8800@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800joinanon-20191002_181700-668 eEEQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg@__ANON__-39:localhost:42455@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800joinC e]]Q=$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA@anon-20191002_181700-667:localhost:8800@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800joinanon-20191002_181700-667 eEEQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY@__ANON__-38:localhost:42455@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800joinC e]]Q=$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ@anon-20191002_181700-666:localhost:8800@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800joinanon-20191002_181700-666 eEEQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc@__ANON__-37:localhost:42455@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800joinC e]]Q=$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc@anon-20191002_181700-665:localhost:8800@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800joinanon-20191002_181700-665 eEEQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0@__ANON__-36:localhost:42455@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800joinC e]]Q=$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4@anon-20191002_181700-664:localhost:8800@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:8800joinanon-20191002_181700-664  teQa$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3469}{"auth_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "prev_events": ["$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ"], "type": "m.room.history_visibility", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043639589, "hashes": {"sha256": "ZocEfmTtDXJ5i8tMLAoZFe8mH0sa1Px+8UQKRsBkJ1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8mrnqmxvtm2iEPg5AJubefOsK0+MBSqpMYaGfX5S9dRSED2VDUjvpXxkRVstI8Jqs0zeUl/ESs1IKUwnaNukDg"}}, "unsigned": {"age_ts": 1570043639589}}tseQau$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3468}{"auth_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "prev_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4"], "type": "m.room.join_rules", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043638477, "hashes": {"sha256": "yt8xkSW32NJAXNmL2G2/oHow1g3TCzr1rLuCHvUmwwE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2e+wfaTHDLycDJkw8aKAiVmpZJEPnm9zIQpnyziX+XDMXzXz3yo6S2FLIES7S6/Vu6S6qhGrxwxJr/bR/3srDw"}}, "unsigned": {"age_ts": 1570043638477}}kreQac$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3467}{"auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "prev_events": ["$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA"], "type": "m.room.power_levels", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"users": {"@anon-20191002_181700-668:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043637576, "hashes": {"sha256": "AE5MNWerSVmvRTDVLPU0mOx+l1Rm9H4/LugZc1CYGSQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tYpthLiEQEHuZDk0Dqqe2CTFa92qtpB3nwh8k6ZWp9HKSWf6hVxz3VW1iHGklcrWW2uvA4Zh7QC6PWbeYHOPAQ"}}, "unsigned": {"age_ts": 1570043637576}}vqeQay$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3466}{"auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s"], "prev_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s"], "type": "m.room.member", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-668", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-668:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043636870, "hashes": {"sha256": "Wi6INjByrha76Pswv58MljBXEY3Y0hBioBu4HTbxFLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iE32Y+sMJ3xiA+1s+ViFPSrIsKhUrzSfZMMiHynAICkmD4GXImsAyZTLt+jgor4dpUVno4HgDDBGHHhir2afCg"}}, "unsigned": {"age_ts": 1570043636870}}  7 k 9mfd]c@anon-20191002_181700-687:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAo127.0.0.1d]c@anon-20191002_181700-686:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwo127.0.0.1~d]c@anon-20191002_181700-685:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAo127.0.0.1}d]c@anon-20191002_181700-684:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogo127.0.0.1|d]c@anon-20191002_181700-683:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQo127.0.0.1{d]c@anon-20191002_181700-682:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQo127.0.0.1zd]c@anon-20191002_181700-681:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQo127.0.0.1yd]c@anon-20191002_181700-680:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV1PUNQTkp1STtPSGFFRk0KMDAyZnNpZ25hdHVyZSCA0p0-R1uRS5Sl-AAOAB4_RaJ42AnhExKpRtMDgcydkQo127.0.0.1xa[a@anon-20191002_181700-67:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gYWVqNkF2SEo3T3h3Y3NabAowMDJmc2lnbmF0dXJlIERx3xyh62YmTdBS_KE4ZPoFcp776UsmpbxeCx9AXyc8Cg127.0.0.19d]c@anon-20191002_181700-679:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxGWjBOUGZPUnMtTF4jUGgKMDAyZnNpZ25hdHVyZSAiw3cANp-fhXAprmTW_Sr8B9dS78iibaBkmlcSawciYQo127.0.0.1w  ~iPeQa_$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3433}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-665:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043604483, "hashes": {"sha256": "5edIZ5jKGYS2qdYlbfCpMSo6V/p5AbOqdvN4MGKRRYs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cpa2c4AmvYkLO66G//AJ/KNczWkk6WprJk80WBdDa+3b/cwLS9NCJuYavDvF9fxoCrwKR2DynRpthugU6fi2AQ"}}, "unsigned": {"age_ts": 1570043604483}}}OeQ33$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0!KcXNWNfbLcYsBKZHIp:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3432}{"auth_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA", "$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0"], "content": {"membership": "join"}, "origin_server_ts": 1570043602717, "prev_events": ["$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg"], "type": "m.room.member", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-36:localhost:42455", "depth": 6, "hashes": {"sha256": "pIeZSI5c0+sgU8C1lTcHOegYGBtt0QwCJUXqQ5+pQCQ"}, "sender": "@__ANON__-36:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "/c2tJNqj/70pm6jVgKTN14nnKLLRSno4Te3od6hNueZHCGI5FGR3Hgume2NvM7I2TnMOfT5JsZj9gVavsGc/DA"}}, "unsigned": {}}NeQa$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3431}{"auth_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA", "$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "prev_events": ["$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0"], "type": "m.room.history_visibility", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043601276, "hashes": {"sha256": "NejWE+liz/1k+r5gqpmRGskDmwfIi8rrSNiEAZdC/8E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OFPoglIcIrS4I6DpJQTKKd1WcTxBY2zH/XIWGMVwo/vCBHCTHQ5A/gAgL0+Ukc80s/9kxdUqKGINzw268tM1DA"}}, "unsigned": {"age_ts": 1570043601276}}tMeQau$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800{"token_id": 644, "stream_ordering": 3430}{"auth_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA", "$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg", "$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4"], "prev_events": ["$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA"], "type": "m.room.join_rules", "room_id": "!KcXNWNfbLcYsBKZHIp:localhost:8800", "sender": "@anon-20191002_181700-664:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043600350, "hashes": {"sha256": "wQAeGwloDtffdoM+iBYWBVsUeVOJUXDJ1WGbIwXD8EE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yYDFBNMD6iz82+EKf+pevKeILA5kN5F6jDZywbLI07WNicgJLeovOZxPzYTefAgx3xt8211vkIvsMlAHaKTeBw"}}, "unsigned": {"age_ts": 1570043600350}} a} { y w u sqomkigeca~eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~~eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800~}eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800~|eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~{eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800~zeeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800~yeeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~xeeQ$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800~weeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800~veeQ$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~ueeQ$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800~teeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800~seeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~reeQ$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800~qeeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800~peeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~oeeQ$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800~neeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800~meeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~leeQ$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800~keeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800~jeeQ$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~ieeQ$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w!jRuDexjFzIDOKbwDJQ:localhost:8800~heeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0!KcXNWNfbLcYsBKZHIp:localhost:8800~geeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800~feeQ$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800~eeeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800~deeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800~ceeQ$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA!KcXNWNfbLcYsBKZHIp:localhost:8800~beeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4!KcXNWNfbLcYsBKZHIp:localhost:8800~aeeQ$tB-BE7YBldcwhSUDDNmAypvn5vsh6ZFZM2qdwLyS_E0$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg!KcXNWNfbLcYsBKZHIp:localhost:8800 B; kyN# u !wR')@L!uJsH ' { P %qF# { P % y N # # { P % y N # w LXp*Q!OXpGdKbowFUTChPdmF:localhost:8800 #*Q!OXpGdKbowFUTChPdmF:localhost:8800 &*Q!OXpGdKbowFUTChPdmF:localhost:8800 %*Q!OXpGdKbowFUTChPdmF:localhost:8800 $*Q!OMkiVTuuOEeiFAXtUY:localhost:8800WW*Q!OMkiVTuuOEeiFAXtUY:localhost:8800VV*Q!OMkiVTuuOEeiFAXtUY:localhost:8800UU*Q!OMkiVTuuOEeiFAXtUY:localhost:8800TT*Q!OMkiVTuuOEeiFAXtUY:localhost:8800SS R*Q!PCgUmZOwWmtDsuFqXg:localhost:8800*0*Q!PCgUmZOwWmtDsuFqXg:localhost:8800'-*Q!PCgUmZOwWmtDsuFqXg:localhost:8800$**Q!PCgUmZOwWmtDsuFqXg:localhost:8800!'*Q!PCgUmZOwWmtDsuFqXg:localhost:8800#*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OqPpVlCwmKdAUlwrXI:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OaCEdDAiatpwYcagUb:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800,*Q!OWGKxAmTrHLciIdrJi:localhost:8800+*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OMkiVTuuOEeiFAXtUY:localhost:8800[[*Q!OMkiVTuuOEeiFAXtUY:localhost:8800ZZ*Q!OMkiVTuuOEeiFAXtUY:localhost:8800YY*Q!OMkiVTuuOEeiFAXtUY:localhost:8800XX*Q!OXpGdKbowFUTChPdmF:localhost:8800 "*Q!OtBUhGeUSiDMWRKIOT:localhost:8800 I *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 H *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 G *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 F *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 E *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 D *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 C *Q!OtBUhGeUSiDMWRKIOT:localhost:8800 B  L#*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800* %*Q!OJilSqnQvLgoXSqRaW:localhost:8800 }*Q!OSHhtkGUjpUCkXwIhj:localhost:8800*Q!OWGKxAmTrHLciIdrJi:localhost:8800/*Q!OWGKxAmTrHLciIdrJi:localhost:8800.+*Q!OWGKxAmTrHLciIdrJi:localhost:8800-TV*Q!OWGKxAmTrHLciIdrJi:localhost:88000 B`8sY? w O ' _ 7  o G   W /  g ? wO'_7oG%JQ !QWLJZmJqjWZjVOjdYF:localhost:8800%IQ !ZWANpHlizyLrUiVvAm:localhost:8800%HQ !TkluVzxeeCbMtbFWWS:localhost:8800%GQ !ELBgBaMSIMNkjFSumH:localhost:8800%FQ !CKNftKKCaOCVUyYWNY:localhost:8800%EQ !cvXpMzcxNNhsNttxvt:localhost:8800%DQ !jlGSdNttccYxjfLkwW:localhost:8800%CQ !ZNIjCvcWhgcwskanjT:localhost:8800%BQ !NJdkYMskQwIpIWlWkn:localhost:8800%AQ !jGQNGXehugtTvjUGKI:localhost:8800%@Q !VNdqhtoDkyMoQdMTtM:localhost:8800%?Q !ulbQzxdPXzuvNoqqgU:localhost:8800%>Q !pTvdDtkgovsIdAdxCm:localhost:8800%=Q !vxEMWYTUdzvLyVZNzJ:localhost:8800%<Q !CAGaRyRvrohDRBsrWH:localhost:8800%;Q !hNCwypIzdDZDVmCEfd:localhost:8800%:Q !eZjhYVNpwdogVDKHCk:localhost:8800%9Q !sBcwyPoXKgnSGVTjNR:localhost:8800%8Q !WgXzOXLTeqaGfiDFhL:localhost:8800%7Q !LFBhoxJpmBqFrwEzGP:localhost:8800%6Q !URpLZLuBfVcfHVTBGS:localhost:8800%5Q !YaLuQzmJKSMTSFEqjO:localhost:8800%4Q !cOFSwLSkxZECJMvjjZ:localhost:8800%3Q !eGEEtFXUXuZDImkeql:localhost:8800%2Q !ZOpRjvUhkWYJBFJZeO:localhost:8800%1Q !BPNyKqmwcpGxIbGFZG:localhost:8800%0Q !ZOwibbprUCQrSJQCrx:localhost:8800%/Q !qtelAHlSkrqEFmlCqS:localhost:8800%.Q !NcJYmIbgjsaKJOzBcs:localhost:8800%-Q !biBIcqnGelHvLnpkOu:localhost:8800%,Q !yNfCaBMPezurwkJRAX:localhost:8800%+Q !BKZJsoFNhiLTDYNclB:localhost:8800%*Q !aiOswwhoZqjhcjzbzc:localhost:8800%)Q !IYxUkyFHOgvhLpdkOA:localhost:8800%(Q !anErKtXIsVKEEsrzWM:localhost:8800%'Q !TcCLuIBUrtFqghDgay:localhost:8800%&Q !yWhIsLsgNVGcnELrDS:localhost:8800%%Q !wCsDjKBtuUbrmZgjsB:localhost:8800%$Q !SpXEytywhTbAftyVBr:localhost:8800%#Q !itfjLXhEaORJLkbfVS:localhost:8800%"Q !GsjDgpaxdwYfnefiWO:localhost:8800%!Q !jomrpmwwQQtghscizn:localhost:8800% Q !ABHbfUdkHCJksMsaUt:localhost:8800%Q !DntdfAPfCfgdOoRMdl:localhost:8800%Q !THHfVSOSWiBQTHRAnJ:localhost:8800%Q !KetCYFxrTxawNOGnOf:localhost:8800%Q !JiUawCFQnodcpssOfK:localhost:8800%Q !NgkQVVUNzoyCVPtckM:localhost:8800%Q !lgejtcwlywOoIXwEgy:localhost:8800%Q !PUIxAaiCnbqaVbawGu:localhost:8800%Q !OJilSqnQvLgoXSqRaW:localhost:8800%Q !SrwdtDytJDUBVZOueF:localhost:8800%Q !PVyTvKbqnjSXfGWAMy:localhost:88003!13:localhost:424553!12:localhost:42455%Q !nhbUIcIbhuXkRqfeDa:localhost:88003!11:localhost:424553!10:localhost:424551!9:localhost:42455%Q !SnROoiDBapNNtMmKnT:localhost:8800%Q !uGpSboYkgxVNOqNeUG:localhost:8800% Q !DSFBpkqfnvBQbGoMUK:localhost:8800% Q !ZKPJvrCZHMHPEksYDc:localhost:8800% Q !PgNDjhhIBAXKryuGKy:localhost:8800% Q !vnFXnkCSfTbsSNKrtg:localhost:8800% Q !jRuDexjFzIDOKbwDJQ:localhost:8800  TeQa$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3437}{"auth_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "prev_events": ["$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8"], "type": "m.room.history_visibility", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043607874, "hashes": {"sha256": "b1STjIRvcrp9UVHm5oDdbRoocSvlyQpJXbz3vZryVZI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gDRmenhBECSsWkoqIPRjMGSHfMwLcj419YENUgvTYJh0jmsdSurVMcVRmagkthwi7oCN48wJ5qexDiNrdGtPDA"}}, "unsigned": {"age_ts": 1570043607874}}tSeQau$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3436}{"auth_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "prev_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ"], "type": "m.room.join_rules", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043607109, "hashes": {"sha256": "n72oYhExM63/z5GLa2EQRfjoSLPEVh0WfaSYFrRB8Fk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RV30A1pQ5KKH5B4mNZSgkc71dSwd/NacCKdDf5tStcUQnVJdImhQMOEt6PkhdcHb/XbDhqSuZAKAvjNhvufbCw"}}, "unsigned": {"age_ts": 1570043607109}}kReQac$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3435}{"auth_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "prev_events": ["$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc"], "type": "m.room.power_levels", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"users": {"@anon-20191002_181700-665:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043606295, "hashes": {"sha256": "IY6IBCgq/9tSuQL3o91J7HnpqASFZ1ISNAkmANLinO8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k9D6PRTTu7IgYIJyiYl4MflC00MxW8JzLQ7EgS6J1B+eH6CBpgcT83ZzFrNjIqVN22OAmAGQWuTXn+v2LBJFDg"}}, "unsigned": {"age_ts": 1570043606295}}vQeQay$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc!jRuDexjFzIDOKbwDJQ:localhost:8800{"token_id": 645, "stream_ordering": 3434}{"auth_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w"], "prev_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w"], "type": "m.room.member", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "sender": "@anon-20191002_181700-665:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-665", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-665:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043605650, "hashes": {"sha256": "XOPMnHitn/p48u+qyKFxH3+Nh4v+gDFgR4GW5ImNdl0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OrvNQQtx5aY1t5QEheknPDeYXFxUq+iGuZWXfyPE2D59TaMy5NduWqNmyKOoHxddHYqVUqwhqov7SeyFl0a9Bw"}}, "unsigned": {"age_ts": 1570043605650}} ,ij8p> v E  } K   Q  W % i ] +c11e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI 1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8S1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw11e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0K1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAv1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hk1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gs1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Qw1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo31e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl01e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f81e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk 1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0F1e$qHCPCj2D0zmXnagUG8yn9tXTBlhRL32Y2hqfqH0pzLQm1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk1e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1e$qEgfNQjcrKFZrAsTcbg9jgWomMaYhFDXV8SkDtZhbxI)1e$qBj-wE9vNf01HDUXXSfuID75eKtf_8dkTUHOOPMaFRw1e$qAO1fjmnIhTk5zwojGXUJGkhxrc77Y_g-4QDMV5ZQBY1e$qABcie0blkCMrUGlkVBRB-gekW1Q-jVaAaqE72aClrIR0e$q9yPgBgWG3aCIcWE2OZWLVa7mQwCZCAriV3xTBpUZkMc1e$q873v4gopf8FxHpWoAYnbKi9skXDWqZhx0306KPqd4Y1e$q7cpj1Iwm21cZkxQ_QmqXPOJfUTRMHq9WXM4iueBaKs1e$q5s5S9Ez9o4DpIiGk42bnlSdHFkJtrGaly6m6srTXNc1e$q48fMB3eV6eRsKaADb5I33XJvRbJwrOJ4oJZFQsI5Ew1e$q2947iZpfQ0egVoWzWvdcv64Gm_Ccx-giJTAtDrJL3Q1e$q0bf0vPz95mBHQVsZ4ZWKmYZvlZl_L5ZwVl_D6cYf-k1e$q0FyUW_AbblEOQTfj4xFoL-g4L-OACEuiWIa60mKuWs1e$q-9tjMxKfOYhYguIvllIHravuX0kNXfLHznxHSkedK01e$pzO/aKKVGyd6wFFOkkZAGDM39AO/1DFfEjyABeUyr/s1e$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w 1e$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo1e$py5To3DX-3H09V0DSnwHjO04iJPJsdBJuVhTMFfuAUI1e$pxGEU1Rb43QLQ0XD_pcP_fQX_WDil8OplbD0EbJWtZk 8L(t,xT L(tP x T | 4 \  < d D lHh$X,!E@__ANON__-36:localhost:42455E]=@anon-20191002_181700-664:localhost:8800anon-20191002_181700-664!E@__ANON__-35:localhost:42455E ]=@anon-20191002_181700-663:localhost:8800anon-20191002_181700-663! E@__ANON__-34:localhost:42455E ]=@anon-20191002_181700-662:localhost:8800anon-20191002_181700-662E ]=@anon-20191002_181700-661:localhost:8800anon-20191002_181700-661! E@__ANON__-33:localhost:42455E]=@anon-20191002_181700-660:localhost:8800anon-20191002_181700-660E]=@anon-20191002_181700-659:localhost:8800anon-20191002_181700-659!E@__ANON__-32:localhost:42455E]=@anon-20191002_181700-658:localhost:8800anon-20191002_181700-658!E@__ANON__-31:localhost:42455E;]=@anon-20191002_181700-691:localhost:8800anon-20191002_181700-691E:]=@anon-20191002_181700-690:localhost:8800anon-20191002_181700-690!9E@__ANON__-58:localhost:42455E8]=@anon-20191002_181700-685:localhost:8800anon-20191002_181700-685!7E@__ANON__-57:localhost:42455E6]=@anon-20191002_181700-684:localhost:8800anon-20191002_181700-684!5E@__ANON__-56:localhost:42455E4]=@anon-20191002_181700-683:localhost:8800anon-20191002_181700-683!3E@__ANON__-55:localhost:42455E2]=@anon-20191002_181700-682:localhost:8800anon-20191002_181700-682!1E@__ANON__-54:localhost:42455E0]=@anon-20191002_181700-681:localhost:8800anon-20191002_181700-681!/E@__ANON__-53:localhost:42455E.]=@anon-20191002_181700-680:localhost:8800anon-20191002_181700-680!-E@__ANON__-52:localhost:42455E,]=@anon-20191002_181700-679:localhost:8800anon-20191002_181700-679E+]=@anon-20191002_181700-678:localhost:8800anon-20191002_181700-678E*]=@anon-20191002_181700-677:localhost:8800anon-20191002_181700-677!)E@__ANON__-51:localhost:42455!(E@__ANON__-50:localhost:42455E']=@anon-20191002_181700-676:localhost:8800anon-20191002_181700-676!&E@__ANON__-49:localhost:42455!%E@__ANON__-48:localhost:42455E$]=@anon-20191002_181700-675:localhost:8800anon-20191002_181700-675E#]=@anon-20191002_181700-674:localhost:8800anon-20191002_181700-674E"]=@anon-20191002_181700-673:localhost:8800anon-20191002_181700-673!!E@__ANON__-47:localhost:42455E ]=@anon-20191002_181700-672:localhost:8800anon-20191002_181700-672!E@__ANON__-46:localhost:42455E]=@anon-20191002_181700-671:localhost:8800anon-20191002_181700-671!E@__ANON__-45:localhost:42455!E@__ANON__-43:localhost:42455E]=@anon-20191002_181700-670:localhost:8800anon-20191002_181700-670!E@__ANON__-41:localhost:42455E]=@anon-20191002_181700-669:localhost:8800anon-20191002_181700-669!E@__ANON__-40:localhost:42455E]=@anon-20191002_181700-668:localhost:8800anon-20191002_181700-668!E@__ANON__-39:localhost:42455E]=@anon-20191002_181700-667:localhost:8800anon-20191002_181700-667!E@__ANON__-38:localhost:42455E]=@anon-20191002_181700-666:localhost:8800anon-20191002_181700-666!E@__ANON__-37:localhost:42455E]=@anon-20191002_181700-665:localhost:8800anon-20191002_181700-665   (;vXeQay$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3441}{"auth_events": ["$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y"], "prev_events": ["$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y"], "type": "m.room.member", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-666", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-666:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043613181, "hashes": {"sha256": "HaW7rOsW/Xo2Ksabu7GFy5Ay5JcP0W4PW8+ufXhArkA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H6jT5NX6tmWRJe0nOuCbpY8dl2wL0MoELRnVDKLaua9a+7q9Jlg2ZWQsimnxTQXOFICS8JhyZmr6BznI0MoFDQ"}}, "unsigned": {"age_ts": 1570043613181}}iWeQa_$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3440}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-666:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043612244, "hashes": {"sha256": "4fJhlOD8oH9XmyvSVoXI9aUPhX6c3r91M/ixtibEm3g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Wp0O+CJvZbEJjApmjqgjVV43t+4xazaRaIAPpApYRkRjq+5jZ4JeTfITBZPrltUtU/q6q3BLSZHvt/+CoOx8CA"}}, "unsigned": {"age_ts": 1570043612244}}SVeQc1$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU!jRuDexjFzIDOKbwDJQ:localhost:8800{"outlier": false, "stream_ordering": 3439}{"hashes": {"sha256": "+ij73gBQeJGbVpSdLW2ouParKb9v6d1m68V59XJOu5g"}, "sender": "@__ANON__-37:localhost:42455", "room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "type": "m.room.message", "depth": 7, "origin": "localhost:42455", "origin_server_ts": 1570043609963, "prev_events": ["$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc"], "auth_events": ["$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8", "$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc"], "content": {"body": "Hello"}, "signatures": {"localhost:42455": {"ed25519:1": "njNe0WadIVPD63lTWOnAr9MPSu/Uj2tXnGD/gXFQ2dIj22KM+uwp6TITiLQAyQUehG3c1PBrnpOcVIiBAL4yAg"}}, "unsigned": {}}}UeQ33$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3438}{"room_id": "!jRuDexjFzIDOKbwDJQ:localhost:8800", "type": "m.room.member", "depth": 6, "state_key": "@__ANON__-37:localhost:42455", "origin": "localhost:42455", "hashes": {"sha256": "dTq1ukESeEAnYrVMM5vkR4WlNEKy1inZ32JqKhvcqC0"}, "sender": "@__ANON__-37:localhost:42455", "auth_events": ["$Sxu81F7vSi1Jjg6rm51NMKVnC3ZzkW_OgtpaS8CudJQ", "$pzDBMd04v_ASNco8oLq764TzSJp7AGoPaY5vV8B075w", "$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8"], "content": {"membership": "join"}, "origin_server_ts": 1570043609490, "prev_events": ["$i_b1T93_v0IIDuob6Z_725g69g5UX1rhrQNqeJlPyWE"], "signatures": {"localhost:42455": {"ed25519:1": "fokN8h1p+uEOYxm6NDvBNf3kj166ZRzcHci7A1wa8a8+3lu1o0RFAFQ2OHlrN3OJZa6TbHP0E9i4h0mseunZCQ"}}, "unsigned": {}} 76 1 k9oP= uC\* } K i   V$|J7c W w E7c W w E1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg 1e$JpV3bHZ2tJQ8s2BwU5_LPxyQcTLXXVyr-gksk-qzRjg 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 1e$Joi-K-KsjGnAMSL0g5bbNyiExQPsczHCjsAs5m4N5j8 1e$K1ghSna71ya7FRMNFqRt93cbF4EuRVJ2tEa4rULpKts1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$K0XBsGmMFhm9d-P1241v_5N9S0OgC70cFDpdbQWxQvM1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw U1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw T1e$JeeeWJAcRo3I6PjltCyLR6xsnm2_jsUaV4V_fwWIttw S1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4 .1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4 -1e$JbUNt2lzyVxexjh1Nqy8rNzspn9RUqx88fGOJz0LH-4 ,1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8 (1e$JzTjU9VaGwK8PBU_LjsHK9k4BfMhOK38AANcRGx2AB8 '1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg1e$K2CMtR5ST8kdp2HYGVKdkmRCDs3SRCUe_m1JM88EIKg1e$K1uP8VZAaBlGj3iR8Ndr48pJyC3P69pYNBscAtSsbFM 0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU1e$JmZWf9FEzHIgpUIBRpMMm0hYp548sM0SKUP5nC9S3g4K1e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s31e$JkZX2PAhcfGKRE3Kmag5egfVCV1ogbortQFMSgKov8s21e$JhhRU99jfq9WNBtLpDXHQvaX5mMU1XeckC5xEQbYxVQY1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA1e$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDA1e$JdTBxiMRK7dlqpkDJgHowXaHyS1IgtzjlHHh1rwoTM81e$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8o1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIg1e$JY1dQlJcVzcuXjsY4wcKNJZqz5EgxyiNMK7TlTBJLIgc21e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I 1e$JwvRY44C-oIocRFIc-Fn7n_goiAGeMly2mjVFA_cj2I 1e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx01e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx021e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU 1e$JTXndvCrraXGaE_FHs677xIVHJC3X3Xg-51w20POMx0 1e$JTB50nhD49J0f1rGkwWwCQSla3DJUSKf1sA0LOU-odgN1e$JVRYZOZICb92atHsLGp_QLj9-AOdlE1pIuyx7eFR7FU E1e$K0Sawjk2_SBAgQQY_d1Sa_473RkmVyIoAAIOLO1ixKw)1e$JzijnjuHbKR_Kondx-K515bYI7fUmQywQdiWiYBZDzY1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk1e$Jsxc1Fc+oFZYt6ryqnDSKMqMqesG5dWhg1FX2/fYxhk1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QW1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QV1e$JyyZR68R2ZJppWF4zTK7MISdiFAjZ2ULHiNAnTzts6QU1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o1e$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o0e$JngAt1jD3vUPl5mKq5zLB-Hl8xNSm3TOdaP-lSvGxdU D v D  } K * Q  W % ^ ,d$j8p> vD|JPV\21e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk &1e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM _1e$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM 1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw ^1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo1e$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU 0 21e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE a1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk61e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz01e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc&1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc 61e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k(1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI 1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw31e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs\1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg 1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY #1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsF1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg X1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRssg1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUV1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etMF1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqs1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkU1e$Pnlkp16zF1kzZnEKWPCm3S0qRVG36OaM_47uRjxn9xk1e$Pnd4dIlRnkiRmETcuVICUKuXTx99n0ZmkrCz-MOK7OU1e$Pmdbyndqq7Z1LK_z5MWmH0KIdy_aDJlqudF0wb-wHyg1e$PkiUPC-K2GxuX3vIS24wKXW1f4aWnBQSYxvxf1_XyvYO1e$PhVPz6k2nY-pVkZVagEdEq5Jkhf6vbe9i0OZye4GRxA?1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM 0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo(1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf20 1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM 1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zs1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU #% M i r  )Wgv 4ZxMq[]QQ/ $1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules]\QQ3 $1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels[QQ']$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800WZQQ' $1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.createdY3Q'E$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455cXQQ? $1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility[WQQ/ $1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules]VQQ3 $1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levelsUQQ']$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800WTQQ' $1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create}SeQ'E$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455mReQ? $XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibilityeQeQ/ $1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rulesgPeQ3 $4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels OeQ']$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800aNeQ' $4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create}MeQ'E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455mLeQ? $aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibilityeKeQ/ $QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rulesgJeQ3 $EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels IeQ']$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800aHeQ' $SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create}GeQ'E$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455mFeQ? $qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibilityeEeQ/ $jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rulesgDeQ3 $8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels CeQ']$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800aBeQ' $RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create}AeQ'E$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455m@eQ? $xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibilitye?eQ/ $s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rulesg>eQ3 $6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels =eQ']$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@anon-20191002_181700-666:localhost:8800a<eQ' $_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.create};eQ'E$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc!jRuDexjFzIDOKbwDJQ:localhost:8800m.room.member@__ANON__-37:localhost:42455  oa{33aU $71:localhost:42455!11:localhost:42455{"outlier": true, "stream_ordering": 3503}{"room_id": "!11:localhost:42455", "type": "m.room.create", "state_key": "", "depth": 0, "origin": "localhost:42455", "hashes": {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}, "sender": "@__ANON__-47:localhost:42455", "auth_events": [], "event_id": "$71:localhost:42455", "content": {"creator": "@__ANON__-47:localhost:42455"}, "origin_server_ts": 1570043668574, "prev_events": [], "signatures": {"localhost:42455": {"ed25519:1": "mIZAQjjP7Q7g6vM88eotNcr4k/3BU6EWM0M9+7P9Odx0WqxFpuxV9n5QnHnhhHb4jYOK+S1yrYuZ16xAlphIBA"}}, "unsigned": {}} Q3?w $1570043664431IMLSL:localhost:8800!10:localhost:42455{"stream_ordering": 3502}{"depth": 3, "state_key": "@anon-20191002_181700-672:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-672", "avatar_url": null}, "room_id": "!10:localhost:42455", "auth_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}], ["$70:localhost:42455", {"sha256": "u2koyjPmjhJpY2qSwFfUNJXyjc6t+VVBTYapn9rKb+c"}]], "type": "m.room.member", "sender": "@anon-20191002_181700-672:localhost:8800", "prev_events": [["$70:localhost:42455", {"sha256": "u2koyjPmjhJpY2qSwFfUNJXyjc6t+VVBTYapn9rKb+c"}]], "prev_state": [], "event_id": "$1570043664431IMLSL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043664436, "hashes": {"sha256": "Cu+L9Gim8yCgUKDf8MQzIXxzcKqnnAWQVwEe3wTGb90"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LXl7W8djYiJfeD7Zt1yrjIXaxtTvtRZi/4BkdTO3vM+W/vw3WziW5qKpSErdj3k8xR7lQLSeEfEIQviKqJfaDA"}}, "unsigned": {"age_ts": 1570043664436}}c33a% $70:localhost:42455!10:localhost:42455{"outlier": true, "stream_ordering": 3498}{"origin_server_ts": 1570043664422, "prev_events": [["$69:localhost:42455", {"sha256": "MDl3YwbILqa0bhh/SjBwqn04sZnEnRI+VrOnt0WJVNQ"}]], "event_id": "$70:localhost:42455", "auth_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}], ["$69:localhost:42455", {"sha256": "MDl3YwbILqa0bhh/SjBwqn04sZnEnRI+VrOnt0WJVNQ"}]], "content": {"join_rule": "public"}, "hashes": {"sha256": "u2koyjPmjhJpY2qSwFfUNJXyjc6t+VVBTYapn9rKb+c"}, "sender": "@__ANON__-46:localhost:42455", "type": "m.room.join_rules", "room_id": "!10:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 2, "signatures": {"localhost:42455": {"ed25519:1": "EI0JGRJkwjGpQdfDyiWbzhN6Sfr8lSO6jjzfL0cztSsPgQDCjOUMugjmU3CXsrkHGbJ8E4QXJi8B+2OzA1jxDA"}}, "unsigned": {}}& 33a+ $69:localhost:42455!10:localhost:42455{"outlier": true, "stream_ordering": 3497}{"hashes": {"sha256": "MDl3YwbILqa0bhh/SjBwqn04sZnEnRI+VrOnt0WJVNQ"}, "sender": "@__ANON__-46:localhost:42455", "room_id": "!10:localhost:42455", "type": "m.room.member", "depth": 1, "state_key": "@__ANON__-46:localhost:42455", "origin": "localhost:42455", "origin_server_ts": 1570043664421, "prev_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}]], "auth_events": [["$68:localhost:42455", {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}]], "event_id": "$69:localhost:42455", "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "WGcoDMjtxgGJSPU/hAkUrEH/3WTsu0XtERbOdQFuJagiRkn417bG5fWi3tGpmcIxlQpGeFSz+diPlmPAskJaDQ"}}, "unsigned": {}} .NC 8 - { " p  e ZOD9.Ac~/LQL$1570043656428rZaqi:localhost:8800sha256ygV$W+(k?]Q1/?}E; ^LQL$1570043655427tEtWD:localhost:8800sha2565rxS.*%a4sYҙܬ#LQL$1570043654426seixP:localhost:8800sha256əed]L ⳨ ZME9~RLQL$1570043653425AhyPB:localhost:8800sha256}L/yT=|3L$61:localhost:42455sha256]K}Ɲ/ ?Nv<y/!)Ӿ-/L{QL$1570043648422SglHQ:localhost:8800sha256]"lF&sFxj]>כnLzQL$1570043647421dmTZW:localhost:8800sha256ºV"Zjr^XoM̚NOz[ LyQL$1570043646420mPrhj:localhost:8800sha256?E%iI*W9ȷfv PLxQL$1570043646419zIOAX:localhost:8800sha256o{!'uR!2ƵͦV>vXLwQL$1570043645418ABZkc:localhost:8800sha256)T̕' M0+ؙr$VveL$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcsha256Bw+E=WD tE8lqL g@gVueL$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAsha2562XQUJ+]\a#RMb7Ee-PVteL$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Esha256p(E$k=WнѡqVseL$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMssha256lfWN)l>8mNA,̅VreL$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwsha256^$7]x ;5Tfl?dL)ZDVqeL$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQsha256Rv*W(9~osi֏DVoeL$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAsha256SdΝ6>]vu:<ԗ0VneL$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-ssha256 ^?:!yפ\;T?*oVmeL$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcsha256>=mK>͋v/4\ꉜVleL$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0sha256hڸ ) M$*f]={-KswVkeL$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawsha256CVDm45(kſܲVjeL$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgIsha256b$hK.w†[V=xn^Y*VieL$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUsha256VB~zq[ٚ TUyGqfEVheL$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQsha256Jb"~BH&qSZ6׮GO4VgeL$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYsha256H悉u9]\ffTQEPkXVVfeL$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdEsha256 ~83I ä9\e5VXeL$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7osha256S |l2=eOߣgVWeL$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8sha256 r&u'1I!4*$٥"udM`VVeL$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQsha256ֳNqE'Nbdg J)TVUeL$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Ysha256X|xT\N~kCmM'˦  }\eQ33$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3445}{"content": {"membership": "join"}, "auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o"], "prev_events": ["$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU"], "origin_server_ts": 1570043616814, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-38:localhost:42455", "type": "m.room.member", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@__ANON__-38:localhost:42455", "hashes": {"sha256": "PA2++Ljis7LZ8Di+bfevW0Cr9BJLbTaGoOF1oCLGT/0"}, "signatures": {"localhost:42455": {"ed25519:1": "3DVvIJTglhH1zKRlSQ4XTmYtMcbcOZjB27+bCl1ETabFL2yrca7hNLazQlRnxoZMKYh23CDW+UpQ0ZYl8L7zCg"}}, "unsigned": {}}[eQa$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3444}{"auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o"], "type": "m.room.history_visibility", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043615301, "hashes": {"sha256": "br5SDj35etSgwpZTlEGEvWtzW/TqBFoDojDQr4BIbeQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8BKjnR6IQzk7ykDuq7j+LtHH6J2piL8IlRC3REsaWpuczpBuu47ALdV/TKS/bSfiN1fFsLlVtwGhEu1YLO/QAw"}}, "unsigned": {"age_ts": 1570043615301}}tZeQau$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3443}{"auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8"], "type": "m.room.join_rules", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043614643, "hashes": {"sha256": "NMm2DnUIEBkTTewmRX21rIicBvxHWJ0wD1u+fTuqTgk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "InurTxd7NiddfzjeS9oSPyfb4PrghMWCiBkghKwm8bKm1vLH84UNYeBhJYu/Qrx9VbrB5G5Dn1W/2ezCDEntAA"}}, "unsigned": {"age_ts": 1570043614643}}kYeQac$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "stream_ordering": 3442}{"auth_events": ["$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "type": "m.room.power_levels", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"users": {"@anon-20191002_181700-666:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043613919, "hashes": {"sha256": "cM1lRcmEwUpWu0WFdF4aJ6aNjiXJY/g8sPNo5qWg3p0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SKSAxGjJJJQu8u3F/K3JuaplI361BoNp7/8Fy+ZJsAP37YLTDJZA36kq4Fy92PwdRUstTrHa6OdZOdReFNBWCg"}}, "unsigned": {"age_ts": 1570043613919}} (1 : b k  t  )>AcEE,dQ'Eee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMscQ' ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sbQ3 ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4aQ/ ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw8`Q']ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU,_Q'Eee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc^Q' ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ]Q3 ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI\Q'Ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsp[Q? e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibility$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwhZQ/ e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQjYQ3 e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 XQ']e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAdWQ' e !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sVQ'Ee !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcpUQ? e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibility$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0hTQ/ e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawjSQ3 e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI RQ']e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUdQQ' e !ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQPQ'Ee |!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgpOQ? e {!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibility$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQhNQ/ e z!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYjMQ3 e y!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA LQ']e x!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAdKQ' e w!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9QJQ'Ee u!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYpIQ? e t!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibility$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUhHQ/ e s!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7ojGQ3 e r!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.power_levels$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8 \E $ vnh <  [ t D >Bp 6z J | )H *  VO  0Ub #1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4H1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgW1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0S1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLIy1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA'1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kW1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4P1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX460e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMY1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA|1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw]1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIE1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcx1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsC1e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw(1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40q1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMY1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y }1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM l1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0|1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 [1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo  21e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ~1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI}1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA{1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ^ P21e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM $ 21e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQoC1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I>1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro6 21e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA 21e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg /1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI811e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo 1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis h(? D l  F m]d&l9R# .jhHpQQ']$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800join[nQQ/ $1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_ruleshm3Q'E$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455joincjQQ? $1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibilityWlQQ' $1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create]kQQ3 $1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levelsgQQ']$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800joinoZe`eQ/ $QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules gaeQ3 $4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levelsmZeQ? $XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibilityeeeQ/ $1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules deQ']$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800joinceQ'E$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455joinabeQ' $4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.createg\eQ3 $EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levelsmTeQ? $aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibilityM _eQ']$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800join^eQ'E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455joina]eQ' $SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.createOeQ'E$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455joinmNeQ? $qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800m.room.history_visibilityeMeQ/ $jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rulesgLeQ3 $8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels KeQ']$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800joinaJeQ' $RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800m.room.createIeQ'E$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.member@__ANON__-38:localhost:42455joinmHeQ? $xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.history_visibilityeGeQ/ $s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800m.room.join_rules P q # { 3 Z97Y& e3Q ]$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4m.room.power_levels!DSFBpkqfnvBQbGoMUK:localhost:8800mHm䰵@anon-20191002_181700-668:localhost:8800 e'Q ]$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAm.room.member!DSFBpkqfnvBQbGoMUK:localhost:8800m䬆m@anon-20191002_181700-668:localhost:8800  e'Q  ]$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sm.room.create!DSFBpkqfnvBQbGoMUK:localhost:8800m䨆m"@anon-20191002_181700-668:localhost:8800e'Q E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcm.room.member!ZKPJvrCZHMHPEksYDc:localhost:8800m.m䤠@__ANON__-40:localhost:42455,e?Q ]$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0m.room.history_visibility!ZKPJvrCZHMHPEksYDc:localhost:8800m<m@anon-20191002_181700-668:localhost:8800$e/Q ]$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawm.room.join_rules!ZKPJvrCZHMHPEksYDc:localhost:8800mGm@anon-20191002_181700-668:localhost:8800&e3Q ]$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgIm.room.power_levels!ZKPJvrCZHMHPEksYDc:localhost:8800m:mX@anon-20191002_181700-668:localhost:8800 e'Q ]$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUm.room.member!ZKPJvrCZHMHPEksYDc:localhost:8800m䖲m+@anon-20191002_181700-668:localhost:8800 e'Q  ]$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQm.room.create!ZKPJvrCZHMHPEksYDc:localhost:8800mm䒅@anon-20191002_181700-668:localhost:8800e)Q E $B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYm.room.message!PgNDjhhIBAXKryuGKy:localhost:8800 mGm@__ANON__-39:localhost:42455e-Q E $CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdEm.room.redaction!PgNDjhhIBAXKryuGKy:localhost:8800 mm䊱@__ANON__-39:localhost:42455#e-Q ] $7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8Um.room.redaction!PgNDjhhIBAXKryuGKy:localhost:8800 mym~@anon-20191002_181700-667:localhost:8800e)Q E$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbkm.room.message!PgNDjhhIBAXKryuGKy:localhost:8800mm䄣@__ANON__-39:localhost:42455~e-Q E$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5Am.room.redaction!PgNDjhhIBAXKryuGKy:localhost:8800m䀮m@__ANON__-39:localhost:42455!}e)Q ]$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdgm.room.message!PgNDjhhIBAXKryuGKy:localhost:8800m}m~@anon-20191002_181700-667:localhost:8800|e'Q E$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgm.room.member!PgNDjhhIBAXKryuGKy:localhost:8800mzm{4@__ANON__-39:localhost:42455,{e?Q ]$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQm.room.history_visibility!PgNDjhhIBAXKryuGKy:localhost:8800mu@mw^@anon-20191002_181700-667:localhost:8800$ze/Q ]$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kYm.room.join_rules!PgNDjhhIBAXKryuGKy:localhost:8800mrZms%@anon-20191002_181700-667:localhost:8800&ye3Q ]$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAm.room.power_levels!PgNDjhhIBAXKryuGKy:localhost:8800moSmpf@anon-20191002_181700-667:localhost:8800 xe'Q ]$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAm.room.member!PgNDjhhIBAXKryuGKy:localhost:8800mlml@anon-20191002_181700-667:localhost:8800w e'Q  ]$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qm.room.create!PgNDjhhIBAXKryuGKy:localhost:8800mhmi-@anon-20191002_181700-667:localhost:8800!ve)Q ]$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okucm.room.message!vnFXnkCSfTbsSNKrtg:localhost:8800ma*ma@anon-20191002_181700-666:localhost:8800ue'Q E$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoYm.room.member!vnFXnkCSfTbsSNKrtg:localhost:8800m^.m^@__ANON__-38:localhost:42455,te?Q ]$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjUm.room.history_visibility!vnFXnkCSfTbsSNKrtg:localhost:8800mXEmZ@anon-20191002_181700-666:localhost:8800 ~z v r n j fb^ZVRNJF5eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:88004eeQ$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:88003eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:88002eeQ$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:88001eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw!DSFBpkqfnvBQbGoMUK:localhost:88000eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800/eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800.eeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800-eeQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800,eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800+eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800*eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800)eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800(eeQ$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800'eeQ$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE!PgNDjhhIBAXKryuGKy:localhost:8800&eeQ$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdE$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800%eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk!PgNDjhhIBAXKryuGKy:localhost:8800$eeQ$7tZXDGYxUUtIAD3W5MpXd2JXHOe73q1m13qmPaP1p8U$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800#eeQ$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8Xbk$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A!PgNDjhhIBAXKryuGKy:localhost:8800"eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800!eeQ$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800 eeQ$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800eeQ$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU!vnFXnkCSfTbsSNKrtg:localhost:8800eeQ$xsnk8KXRsox63RLw-mGpDE929jqVK6Yxpioh7C1rPjU$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800 0RM H C > 9 4/*|%4M}0Iq(:b1Q b!9:localhost:42455$1570043660430kLPpN:localhost:8800FaQI a!SnROoiDBapNNtMmKnT:localhost:8800$64_redaction2:localhost:42455F`QI `!SnROoiDBapNNtMmKnT:localhost:8800$63_redaction1:localhost:42455;_Q3 _!SnROoiDBapNNtMmKnT:localhost:8800$62:localhost:42455J^QQ ^!SnROoiDBapNNtMmKnT:localhost:8800$1570043656429hLPPT:localhost:8800J]QQ ]!SnROoiDBapNNtMmKnT:localhost:8800$1570043656428rZaqi:localhost:8800J\QQ \!SnROoiDBapNNtMmKnT:localhost:8800$1570043655427tEtWD:localhost:8800J[QQ [!SnROoiDBapNNtMmKnT:localhost:8800$1570043654426seixP:localhost:8800JZQQ Z!SnROoiDBapNNtMmKnT:localhost:8800$1570043653425AhyPB:localhost:8800JYQQ Y!SnROoiDBapNNtMmKnT:localhost:8800$1570043652424mkkFn:localhost:8800BXQA X!uGpSboYkgxVNOqNeUG:localhost:8800$lolredact:localhost:42455;WQ3 W!uGpSboYkgxVNOqNeUG:localhost:8800$61:localhost:42455JVQQ V!uGpSboYkgxVNOqNeUG:localhost:8800$1570043649423kEGEg:localhost:8800JUQQ U!uGpSboYkgxVNOqNeUG:localhost:8800$1570043648422SglHQ:localhost:8800JTQQ T!uGpSboYkgxVNOqNeUG:localhost:8800$1570043647421dmTZW:localhost:8800JSQQ S!uGpSboYkgxVNOqNeUG:localhost:8800$1570043646420mPrhj:localhost:8800JRQQ R!uGpSboYkgxVNOqNeUG:localhost:8800$1570043646419zIOAX:localhost:8800JQQQ Q!uGpSboYkgxVNOqNeUG:localhost:8800$1570043645418ABZkc:localhost:8800TPQe P!DSFBpkqfnvBQbGoMUK:localhost:8800$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcTOQe O!DSFBpkqfnvBQbGoMUK:localhost:8800$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVATNQe N!ZKPJvrCZHMHPEksYDc:localhost:8800$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3ETMQe M!DSFBpkqfnvBQbGoMUK:localhost:8800$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsTLQe L!DSFBpkqfnvBQbGoMUK:localhost:8800$chlKAjAZ1f_xaVxHnTSqQzyLfXsn2Y6Xju6nAWvw3t8TKQe K!DSFBpkqfnvBQbGoMUK:localhost:8800$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwTJQe J!DSFBpkqfnvBQbGoMUK:localhost:8800$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQTIQe I!DSFBpkqfnvBQbGoMUK:localhost:8800$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4THQe H!DSFBpkqfnvBQbGoMUK:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzATGQe G!DSFBpkqfnvBQbGoMUK:localhost:8800$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sTFQe F!ZKPJvrCZHMHPEksYDc:localhost:8800$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcTEQe E!ZKPJvrCZHMHPEksYDc:localhost:8800$0vo8cyfZw4Fp-lThwbYE0zSUTKkZrbu73OPguC5PCQ4TDQe D!ZKPJvrCZHMHPEksYDc:localhost:8800$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0TCQe C!ZKPJvrCZHMHPEksYDc:localhost:8800$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawTBQe B!ZKPJvrCZHMHPEksYDc:localhost:8800$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgITAQe A!ZKPJvrCZHMHPEksYDc:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUT@Qe @!ZKPJvrCZHMHPEksYDc:localhost:8800$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQT?Qe ?!PgNDjhhIBAXKryuGKy:localhost:8800$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvYT>Qe >!PgNDjhhIBAXKryuGKy:localhost:8800$CX7DODMASZr3C57DpNwEyzmDAeBcZf48dADjJr3ZUdET=Qe =!PgNDjhhIBAXKryuGKy:localhost:8800$_0ck8vWay0-lPRgGyHO7tIvPk2pw6GpEfMro5Ty8XbkT<Qe V+\3\1 Z /  X -  Z/X- V +  T ) } R '{*Q!zScKnCZCFPIIodAiQj:localhost:8800 M M*Q!zScKnCZCFPIIodAiQj:localhost:8800 J J*Q!zScKnCZCFPIIodAiQj:localhost:8800 H H*Q!zScKnCZCFPIIodAiQj:localhost:8800 F F*Q!zScKnCZCFPIIodAiQj:localhost:8800 D D*Q!zScKnCZCFPIIodAiQj:localhost:8800 B B*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 8*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 0*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / /*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . .*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - -*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ,*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + +*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * **Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) )*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ( ((Q!zhCsYcaweVFJLLNwBz:localhost:8800***Q!zuCqeooOnfWkYrQdxA:localhost:8800 L L*Q!zuCqeooOnfWkYrQdxA:localhost:8800 K K*Q!zuCqeooOnfWkYrQdxA:localhost:8800 J J*Q!zuCqeooOnfWkYrQdxA:localhost:8800 I I*Q!zuCqeooOnfWkYrQdxA:localhost:8800 H H*Q!zuCqeooOnfWkYrQdxA:localhost:8800 G G*Q!zuCqeooOnfWkYrQdxA:localhost:8800 F F*Q!zuCqeooOnfWkYrQdxA:localhost:8800 E E*Q!zuCqeooOnfWkYrQdxA:localhost:8800 D D*Q!zuCqeooOnfWkYrQdxA:localhost:8800 C C*Q!zuCqeooOnfWkYrQdxA:localhost:8800 B B*Q!zsXPhIPzeXXLvuazzQ:localhost:8800cc*Q!zsXPhIPzeXXLvuazzQ:localhost:8800bb*Q!zsXPhIPzeXXLvuazzQ:localhost:8800aa*Q!zsXPhIPzeXXLvuazzQ:localhost:8800``*Q!zsXPhIPzeXXLvuazzQ:localhost:8800__*Q!zsXPhIPzeXXLvuazzQ:localhost:8800^^*Q!zsXPhIPzeXXLvuazzQ:localhost:8800]]*Q!zsXPhIPzeXXLvuazzQ:localhost:8800\\*Q!zsXPhIPzeXXLvuazzQ:localhost:8800[[*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800~~*Q!zoTQAhGwmDDUECKtbL:localhost:8800}}*Q!zoTQAhGwmDDUECKtbL:localhost:8800||*Q!zoTQAhGwmDDUECKtbL:localhost:8800{{*Q!zoTQAhGwmDDUECKtbL:localhost:8800zz*Q!zoTQAhGwmDDUECKtbL:localhost:8800yy*Q!zoTQAhGwmDDUECKtbL:localhost:8800xx*Q!zoTQAhGwmDDUECKtbL:localhost:8800ww*Q!zoTQAhGwmDDUECKtbL:localhost:8800vv*Q!zoTQAhGwmDDUECKtbL:localhost:8800uu*Q!zoTQAhGwmDDUECKtbL:localhost:8800tt*Q!zoTQAhGwmDDUECKtbL:localhost:8800ss*Q!zoTQAhGwmDDUECKtbL:localhost:8800rr*Q!zoTQAhGwmDDUECKtbL:localhost:8800qq*Q!zoTQAhGwmDDUECKtbL:localhost:8800pp(Q!zhCsYcaweVFJLLNwBz:localhost:8800//(Q!zhCsYcaweVFJLLNwBz:localhost:8800..(Q!zhCsYcaweVFJLLNwBz:localhost:8800--(Q!zhCsYcaweVFJLLNwBz:localhost:8800,,(Q!zhCsYcaweVFJLLNwBz:localhost:8800++ a} { y w u sqomkigeca~eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU!ZKPJvrCZHMHPEksYDc:localhost:8800~eeQ$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~ eeQ$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ!ZKPJvrCZHMHPEksYDc:localhost:8800~ eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800~ eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~ eeQ$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800~ eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800~eeQ$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY$s4X5o6ZTuZcOCp6_k9N8G2wyPefKAcdls0_fo5MSZ7o!vnFXnkCSfTbsSNKrtg:localhost:8800 D T " e D >m 8Sy_ vA; s \ +Y  Mj'   3 f! 5  |Gp- 21e$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo:1e$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo/1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk%1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g|1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo1e$wO8DOr472NwaKSDEn3mWvQR15EN8xvVlqjVTtquJ5Iw_1e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScL1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbEZ1e$xzlhceLeuUcT8wcaMZtTNkFK9vVpmhLywOMCA7R8ttES1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIkF1e$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfMD1e$uy1QVEo3Zx8gwSylw3vQ_9WHBqnM_IC91T-CDfddKjg;1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4S1e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$uzF2mS2OQuNLELvJMX6PkZKvfOaPg7Ub02sRDVPEdhA1e$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0T1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw[1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg1e$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo1e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfA1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFon1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40a1e$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM81e$wTUZ1NYQnVdwCQsIlYEpCtY_yDGESSaKzEh3n3JbmeA1e$wqUPcyxlDbFrkjW0Rxm6EC2ya0pVvfpIXobdsoSLsN8 1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE 1e$xUcGJNPIPDR1t75zwL9jz/7dOZYUW8oNbDddCu2N+Gk41e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlg1e$wmQLaeAPLrelOgpckbtA9vOTFlvhJ39UpPausht5mNM1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro@1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI0e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLsg0e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIA1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQ0e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lkf0e$xR4HXnqtQxLwTAYvUIuf_KyoJIwrr7iubM5U8SnHd3gu0e$x1aht4y4fNlPvlwihhYbG7FGfI7s_P7crGsk3tRNHB0 1e$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk1e$wqQ0i1AnUqWFq4AYTub-L6_On_5xYZI8AzDXKvCXrwI0e$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q 0e$vIUqmQbKUfdEjq37Kw5POjpVwk9TCLe2abNnH--_2Ksi1e$ufVw17Dx3D5lrVVcSmU8Za618Yo6P6gT2Xl4c1LrvVw0e$ub9c1Nt5pLw_dzSgwiilyetrNB7GFOIGIKKdProGoW8n 1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r01e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc1e$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T01e$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI1e$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMc1e$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMd1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkki1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms_21e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZAY21e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQK1e$xkAeDyhz33IibU_EGJIGuI90d7x_o7EWPx8FD-Xm6f8H1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI1e$v4PKPr2ioN70qbWGaBVkaWAQK8Ud2Z6v2E31Gz47LkAF D\1Z/ X -  V +  T ) } R 'N#zW, { P %ywL!uJ*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 8 i*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 0 a*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 / `*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 . _*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 - ^*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 , ]*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 + \*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 * [*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ) Z*Q!zqQJfFCRlSEDPKlQPy:localhost:8800 ( Y$*Q!zuCqeooOnfWkYrQdxA:localhost:8800 L *Q!zuCqeooOnfWkYrQdxA:localhost:8800 K *Q!zuCqeooOnfWkYrQdxA:localhost:8800 J *Q!zuCqeooOnfWkYrQdxA:localhost:8800 I *Q!zuCqeooOnfWkYrQdxA:localhost:8800 H *Q!zuCqeooOnfWkYrQdxA:localhost:8800 G *Q!zuCqeooOnfWkYrQdxA:localhost:8800 F *Q!zuCqeooOnfWkYrQdxA:localhost:8800 E *Q!zuCqeooOnfWkYrQdxA:localhost:8800 D *Q!zuCqeooOnfWkYrQdxA:localhost:8800 C *Q!zuCqeooOnfWkYrQdxA:localhost:8800 B ~*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zsXPhIPzeXXLvuazzQ:localhost:8800c*Q!zsXPhIPzeXXLvuazzQ:localhost:8800c*Q!zsXPhIPzeXXLvuazzQ:localhost:8800b*Q!zsXPhIPzeXXLvuazzQ:localhost:8800a*Q!zsXPhIPzeXXLvuazzQ:localhost:8800`*Q!zsXPhIPzeXXLvuazzQ:localhost:8800_*Q!zsXPhIPzeXXLvuazzQ:localhost:8800^*Q!zsXPhIPzeXXLvuazzQ:localhost:8800]*Q!zsXPhIPzeXXLvuazzQ:localhost:8800\*Q!zsXPhIPzeXXLvuazzQ:localhost:8800[*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800*Q!zoTQAhGwmDDUECKtbL:localhost:8800~*Q!zoTQAhGwmDDUECKtbL:localhost:8800~*Q!zoTQAhGwmDDUECKtbL:localhost:8800}*Q!zoTQAhGwmDDUECKtbL:localhost:8800}*Q!zoTQAhGwmDDUECKtbL:localhost:8800|*Q!zoTQAhGwmDDUECKtbL:localhost:8800|*Q!zoTQAhGwmDDUECKtbL:localhost:8800{*Q!zoTQAhGwmDDUECKtbL:localhost:8800{*Q!zoTQAhGwmDDUECKtbL:localhost:8800z*Q!zoTQAhGwmDDUECKtbL:localhost:8800z*Q!zoTQAhGwmDDUECKtbL:localhost:8800y*Q!zoTQAhGwmDDUECKtbL:localhost:8800y*Q!zoTQAhGwmDDUECKtbL:localhost:8800x*Q!zoTQAhGwmDDUECKtbL:localhost:8800x*Q!zoTQAhGwmDDUECKtbL:localhost:8800w*Q!zoTQAhGwmDDUECKtbL:localhost:8800w*Q!zoTQAhGwmDDUECKtbL:localhost:8800v*Q!zoTQAhGwmDDUECKtbL:localhost:8800v*Q!zoTQAhGwmDDUECKtbL:localhost:8800u*Q!zoTQAhGwmDDUECKtbL:localhost:8800t*Q!zoTQAhGwmDDUECKtbL:localhost:8800s*Q!zoTQAhGwmDDUECKtbL:localhost:8800r*Q!zoTQAhGwmDDUECKtbL:localhost:8800q*Q!zoTQAhGwmDDUECKtbL:localhost:8800p(Q!zhCsYcaweVFJLLNwBz:localhost:8800/.(Q!zhCsYcaweVFJLLNwBz:localhost:8800.-(Q!zhCsYcaweVFJLLNwBz:localhost:8800-,)  s  k`eQac$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3449}{"auth_events": ["$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "type": "m.room.power_levels", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"users": {"@anon-20191002_181700-667:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043621203, "hashes": {"sha256": "yOqg+xvG9PzU5OMx22e65KR2ngWnEFK8YwDCRSfI99Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UMwFOQpS2xZpnoNJ01Ibb8tdj90sDlo6ejR2sjF6WOo1MxPA7tXhR5lH0Zcx1dfEJL8DDj3qzb8W5Yl2NdnWAQ"}}, "unsigned": {"age_ts": 1570043621203}}v_eQay$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3448}{"auth_events": ["$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q"], "prev_events": ["$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q"], "type": "m.room.member", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-667", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-667:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043620372, "hashes": {"sha256": "owx3ZD7dMI84Dg9hqAiQrLIqLDhBGBeUS6+wDO8Xqow"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v05NEs3YpE5h7P7fFp5wq7p74K0gH6jl62jhDayFjGGrjVicr6ErnWbQK48HvnA74csoUarSnsgv/+MBwFJ0Cw"}}, "unsigned": {"age_ts": 1570043620372}}i^eQa_$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3447}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"room_version": "5", "creator": "@anon-20191002_181700-667:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043619527, "hashes": {"sha256": "yvYFYIzRb4Nnn902qBh4m1Eix9lRMtHdAlxN+zKT8YI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2BTWBR1+T4jroXme9eeY88Lw+cN2PeyqVit7AzegtqBNDfBNR3pdsN7bPOwh8GuBclkjQSC0dONPtWm+g0K0Cw"}}, "unsigned": {"age_ts": 1570043619527}} ]eQ{$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc!vnFXnkCSfTbsSNKrtg:localhost:8800{"token_id": 646, "txn_id": "614", "stream_ordering": 3446}{"auth_events": ["$6QxyiwEm9IR1JzEWSSE0KsAk2aWzu5sideZktvhNYJ8", "$_etYfKaV97aAeFRcx89OjX6Y82tDbauwf03Y1CePy6Y", "$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ"], "prev_events": ["$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY"], "type": "m.room.message", "room_id": "!vnFXnkCSfTbsSNKrtg:localhost:8800", "sender": "@anon-20191002_181700-666:localhost:8800", "content": {"body": "Test message1", "msgtype": "m.text"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043617578, "hashes": {"sha256": "jwarWrgUfnMfjPMx44BCR+25vu/Nd7xVXXDFPkrovLM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fYWVQfQssoboiVdjpT2kTiwfuWfkt/mctN/FOIu7+NrCQWsOWypVCA/0giJoDDGb9AM6jYFLWKZkpSnF8sExCw"}}, "unsigned": {"age_ts": 1570043617578}} J]/wIvHe7  Q # m ?  Y + u G  a 3 {Mi; U'qCe7 Q# B -]@anon-20191002_181700-690:localhost:8800+[@anon-20191002_181700-68:localhost:8800X-]@anon-20191002_181700-689:localhost:8800-]@anon-20191002_181700-688:localhost:8800-]@anon-20191002_181700-687:localhost:8800-]@anon-20191002_181700-686:localhost:8800-]@anon-20191002_181700-685:localhost:8800-]@anon-20191002_181700-684:localhost:8800-]@anon-20191002_181700-683:localhost:8800-]@anon-20191002_181700-682:localhost:8800-]@anon-20191002_181700-756:localhost:8800-]@anon-20191002_181700-755:localhost:8800-]@anon-20191002_181700-754:localhost:8800-]@anon-20191002_181700-753:localhost:8800-]@anon-20191002_181700-752:localhost:8800-]@anon-20191002_181700-751:localhost:8800-]@anon-20191002_181700-750:localhost:8800+[@anon-20191002_181700-74:localhost:8800\-]@anon-20191002_181700-749:localhost:8800-]@anon-20191002_181700-748:localhost:8800-]@anon-20191002_181700-747:localhost:8800-]@anon-20191002_181700-746:localhost:8800-]@anon-20191002_181700-745:localhost:8800-]@anon-20191002_181700-744:localhost:8800-]@anon-20191002_181700-743:localhost:8800-]@anon-20191002_181700-742:localhost:8800+[@anon-20191002_181700-73:localhost:8800[-]@anon-20191002_181700-736:localhost:8800-]@anon-20191002_181700-735:localhost:8800-]@anon-20191002_181700-734:localhost:8800-]@anon-20191002_181700-733:localhost:8800-]@anon-20191002_181700-732:localhost:8800-]@anon-20191002_181700-731:localhost:8800-]@anon-20191002_181700-730:localhost:8800-]@anon-20191002_181700-729:localhost:8800-]@anon-20191002_181700-728:localhost:8800-]@anon-20191002_181700-727:localhost:8800-]@anon-20191002_181700-726:localhost:8800-]@anon-20191002_181700-725:localhost:8800-]@anon-20191002_181700-724:localhost:8800-]@anon-20191002_181700-723:localhost:8800-]@anon-20191002_181700-722:localhost:8800-]@anon-20191002_181700-721:localhost:8800-]@anon-20191002_181700-720:localhost:8800+[@anon-20191002_181700-71:localhost:8800Z-]@anon-20191002_181700-719:localhost:8800-]@anon-20191002_181700-718:localhost:8800-]@anon-20191002_181700-717:localhost:8800-]@anon-20191002_181700-716:localhost:8800-]@anon-20191002_181700-715:localhost:8800-]@anon-20191002_181700-714:localhost:8800-]@anon-20191002_181700-713:localhost:8800-]@anon-20191002_181700-712:localhost:8800-]@anon-20191002_181700-711:localhost:8800-]@anon-20191002_181700-710:localhost:8800+[@anon-20191002_181700-70:localhost:8800Y-]@anon-20191002_181700-709:localhost:8800-]@anon-20191002_181700-708:localhost:8800-]@anon-20191002_181700-707:localhost:8800-]@anon-20191002_181700-706:localhost:8800-]@anon-20191002_181700-705:localhost:8800-]@anon-20191002_181700-704:localhost:8800-]@anon-20191002_181700-703:localhost:8800-]@anon-20191002_181700-702:localhost:8800-]@anon-20191002_181700-701:localhost:8800-]@anon-20191002_181700-700:localhost:8800*Y@anon-20191002_181700-6:localhost:8800-]@anon-20191002_181700-698:localhost:8800-]@anon-20191002_181700-697:localhost:8800-]@anon-20191002_181700-696:localhost:8800-]@anon-20191002_181700-695:localhost:8800-]@anon-20191002_181700-693:localhost:8800-]@anon-20191002_181700-692:localhost:8800-]@anon-20191002_181700-691:localhost:8800 J]/wIvHe7  Q # m ?  Y + u G  a 3 {Mi; U'qCe7 Q# B -]@anon-20191002_181700-690:localhost:8800+[@anon-20191002_181700-68:localhost:8800X-]@anon-20191002_181700-689:localhost:8800-]@anon-20191002_181700-688:localhost:8800-]@anon-20191002_181700-687:localhost:8800-]@anon-20191002_181700-686:localhost:8800-]@anon-20191002_181700-685:localhost:8800-]@anon-20191002_181700-684:localhost:8800-]@anon-20191002_181700-683:localhost:8800-]@anon-20191002_181700-682:localhost:8800-]@anon-20191002_181700-756:localhost:8800-]@anon-20191002_181700-755:localhost:8800-]@anon-20191002_181700-754:localhost:8800-]@anon-20191002_181700-753:localhost:8800-]@anon-20191002_181700-752:localhost:8800-]@anon-20191002_181700-751:localhost:8800-]@anon-20191002_181700-750:localhost:8800+[@anon-20191002_181700-74:localhost:8800\-]@anon-20191002_181700-749:localhost:8800-]@anon-20191002_181700-748:localhost:8800-]@anon-20191002_181700-747:localhost:8800-]@anon-20191002_181700-746:localhost:8800-]@anon-20191002_181700-745:localhost:8800-]@anon-20191002_181700-744:localhost:8800-]@anon-20191002_181700-743:localhost:8800-]@anon-20191002_181700-742:localhost:8800+[@anon-20191002_181700-73:localhost:8800[-]@anon-20191002_181700-736:localhost:8800-]@anon-20191002_181700-735:localhost:8800-]@anon-20191002_181700-734:localhost:8800-]@anon-20191002_181700-733:localhost:8800-]@anon-20191002_181700-732:localhost:8800-]@anon-20191002_181700-731:localhost:8800-]@anon-20191002_181700-730:localhost:8800-]@anon-20191002_181700-729:localhost:8800-]@anon-20191002_181700-728:localhost:8800-]@anon-20191002_181700-727:localhost:8800-]@anon-20191002_181700-726:localhost:8800-]@anon-20191002_181700-725:localhost:8800-]@anon-20191002_181700-724:localhost:8800-]@anon-20191002_181700-723:localhost:8800-]@anon-20191002_181700-722:localhost:8800-]@anon-20191002_181700-721:localhost:8800-]@anon-20191002_181700-720:localhost:8800+[@anon-20191002_181700-71:localhost:8800Z-]@anon-20191002_181700-719:localhost:8800-]@anon-20191002_181700-718:localhost:8800-]@anon-20191002_181700-717:localhost:8800-]@anon-20191002_181700-716:localhost:8800-]@anon-20191002_181700-715:localhost:8800-]@anon-20191002_181700-714:localhost:8800-]@anon-20191002_181700-713:localhost:8800-]@anon-20191002_181700-712:localhost:8800-]@anon-20191002_181700-711:localhost:8800-]@anon-20191002_181700-710:localhost:8800+[@anon-20191002_181700-70:localhost:8800Y-]@anon-20191002_181700-709:localhost:8800-]@anon-20191002_181700-708:localhost:8800-]@anon-20191002_181700-707:localhost:8800-]@anon-20191002_181700-706:localhost:8800-]@anon-20191002_181700-705:localhost:8800-]@anon-20191002_181700-704:localhost:8800-]@anon-20191002_181700-703:localhost:8800-]@anon-20191002_181700-702:localhost:8800-]@anon-20191002_181700-701:localhost:8800-]@anon-20191002_181700-700:localhost:8800*Y@anon-20191002_181700-6:localhost:8800-]@anon-20191002_181700-698:localhost:8800-]@anon-20191002_181700-697:localhost:8800-]@anon-20191002_181700-696:localhost:8800-]@anon-20191002_181700-695:localhost:8800-]@anon-20191002_181700-693:localhost:8800-]@anon-20191002_181700-692:localhost:8800-]@anon-20191002_181700-691:localhost:8800 oC%tM%/G  5 _ 8   s K #]  ^ 6   q I "?   [W 4  gopSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:local'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800&'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800zMP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800s'Q!sqkBzbHHJOTNWwynqV:localhost:8800m'Q!yAfsSyqpJWFnkXQFJL:localhost:8800h'Q!zqQJfFCRlSEDPKlQPy:localhost:8800_'Q!ybXveQoxPVhjpKHAkG:localhost:8800V'Q!vZGjXEXQoCaoUXnkCa:localhost:8800P'Q!xcdNyJNFEdaBGFycsB:localhost:8800M('Q!tPkCGJBKmqUXJoRrnY:localhost:8800F'Q!zHBgbzUZHshNGZvIBS:localhost:8800A'Q!vRmMcoJDeCupADwqac:localhost:8800;'Q!wBkUBAjOznOyxrLchl:localhost:88006G('Q!vBvlJEXUSQKUYmsKcO:localhost:88001'Q!ubmTdQFAhrhZkGULDx:localhost:8800+('Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800 'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800  $zupkfa\WRMHC>94/*%  {vqlgbX]SNID?:50+&!  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*$ |pvjd^XRLF@:4.(" ztnhb\VPJD>82,& ~xrlf`ZTNHB<60*     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXVWTSRQPONMLKJIHGEFCBA@?>=<;:9876543210/.-,+*)('&%$#"!        ~]deQ#$_T3vVYNDcluEnYYmLeHfD4X93V3VDQ1o7T2lv7XAkdg!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "txn_id": "615", "stream_ordering": 3453}{"auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg"], "type": "m.room.message", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043624903, "hashes": {"sha256": "lIZtYPd3NcZTILXWazlYUNBgYJNusvOzzROhjQEBF2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3jsvnVsIi8+4QAC5JCohfU5DxGXwGU+1fUajYe48ECkRVkzRDCgylgZM81USsaeHtcJPwfWo8ETfhDx/bKPQDQ"}}, "unsigned": {"age_ts": 1570043624903}}}ceQ33$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBg!PgNDjhhIBAXKryuGKy:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3452}{"sender": "@__ANON__-39:localhost:42455", "hashes": {"sha256": "5PB/GpM46brpJvmvierG/ViGlhSAhTQUaDyNZaEsjqk"}, "state_key": "@__ANON__-39:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "type": "m.room.member", "prev_events": ["$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ"], "origin_server_ts": 1570043624140, "content": {"membership": "join"}, "auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY"], "signatures": {"localhost:42455": {"ed25519:1": "KiAsYZ6A5+XD96WIjex2fV3hyEyeR9D/bPwVKP6YKCgVwOIZqb64/7XHqyBWfKV0itTYs9EivfD6Nwvr8lqkCg"}}, "unsigned": {}}beQa$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3451}{"auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY"], "type": "m.room.history_visibility", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043622720, "hashes": {"sha256": "sllJwHAHG528Gl/WXFlmRx8Oh+jiER248ZO/egmFfj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GOxx/W6TLtuOQgXmPDzADPubGbGBKpYgN7RgL2YDYFjau4y8grfx/xjGzZ5V8igv2Cjf9GJ7jsOxN1pPXS5IDA"}}, "unsigned": {"age_ts": 1570043622720}}taeQau$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY!PgNDjhhIBAXKryuGKy:localhost:8800{"token_id": 647, "stream_ordering": 3450}{"auth_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA", "$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q", "$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA"], "prev_events": ["$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA"], "type": "m.room.join_rules", "room_id": "!PgNDjhhIBAXKryuGKy:localhost:8800", "sender": "@anon-20191002_181700-667:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043621978, "hashes": {"sha256": "PpqV358cHW22WOfP0WPzCEOgUKhS8NgvV8e102OOEAQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yV5uXzZDusDljY5mYBM1anbEpynkpG+eseI8A5xot/xn5MraJm1cyujB4G/MzOFSiH1xWvavffQXeyVe48SABw"}}, "unsigned": {"age_ts": 1570043621978}} DW s}R' < P % > H y N #  { qFge:T J  c8 mBk@ )i w L ! u*Q!UTAORDrNxIbSlGByAp:localhost:8800 ? ?*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UyLoIXmzVFwycmBUeh:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!VCSCNemqikJZiRtxrs:localhost:8829*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UTAORDrNxIbSlGByAp:localhost:8800 @ @*Q!UMFUOnYRvwKwSPkYHB:localhost:8800||*Q!UMFUOnYRvwKwSPkYHB:localhost:8800{{*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UaitDdkGDcwvRLJSvp:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!VOhMAiLfKyTOZbmKGw:localhost:8800nn*Q!VOhMAiLfKyTOZbmKGw:localhost:8800mm*Q!UTAORDrNxIbSlGByAp:localhost:8800 9 9*Q!UTAORDrNxIbSlGByAp:localhost:8800 7 7*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!VAEDgDJVqmxXZyAlSW:localhost:8800*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800 V*Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UTAORDrNxIbSlGByAp:localhost:8800 H H*Q!UTAORDrNxIbSlGByAp:localhost:8800 G G*Q!UTAORDrNxIbSlGByAp:localhost:8800 F F*Q!UTAORDrNxIbSlGByAp:localhost:8800 E E*Q!UTAORDrNxIbSlGByAp:localhost:8800 D D*Q!UTAORDrNxIbSlGByAp:localhost:8800 C C*Q!UTAORDrNxIbSlGByAp:localhost:8800 B B*Q!UTAORDrNxIbSlGByAp:localhost:8800 A A*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!VUibrTIkcRbfrogbQV:localhost:8800  *Q!VOhMAiLfKyTOZbmKGw:localhost:8800tt*Q!VOhMAiLfKyTOZbmKGw:localhost:8800ss*Q!VOhMAiLfKyTOZbmKGw:localhost:8800rr*Q!VOhMAiLfKyTOZbmKGw:localhost:8800qq*Q!VOhMAiLfKyTOZbmKGw:localhost:8800pp*Q!VOhMAiLfKyTOZbmKGw:localhost:8800oo*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!URpLZLuBfVcfHVTBGS:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800*Q!UMFUOnYRvwKwSPkYHB:localhost:8800~~*Q!UMFUOnYRvwKwSPkYHB:localhost:8800}}*Q!UTAORDrNxIbSlGByAp:localhost:8800 > >*Q!UTAORDrNxIbSlGByAp:localhost:8800 = =*Q!UTAORDrNxIbSlGByAp:localhost:8800 ; ;*Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!UGVFuRGyPQmBbGsEDo:localhost:8800  *Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!VNdqhtoDkyMoQdMTtM:localhost:8800*Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 *Q!UluPYLGXtInKDTjRzp:localhost:8800 + `|vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "    ztnhb\VPJD>82,& wvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  !. G _ f  G6fk %*NQQ'Ee L!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$chlKAjAZ1f_xaVxHnTSqQzyLfXsn2Y6Xju6nAWvw3t8oPQ? e K!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibility$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwgOQ/ e J!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQiNQ3 e I!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4 MQ']e H!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAcLQ' e G!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sKQ'Ee F!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcJQ'Ee E!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$0vo8cyfZw4Fp-lThwbYE0zSUTKkZrbu73OPguC5PCQ4oIQ? e D!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.history_visibility$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0gHQ/ e C!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawiGQ3 e B!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI FQ']e A!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUcEQ' e @!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQgDQ/ e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY CQ']e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXABQ'Ee ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgcAQ' e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qi@Q3 e ?!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAg?Q/ e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY >Q']e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA=Q'Ee >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgc<Q' e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qi;Q3 e >!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAg:Q/ e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.join_rules$jEDF2AUsZV9agkyXYqG4hOGOXQABW1pr34gxD8Br3kY 9Q']e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA8Q'Ee =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.member@__ANON__-39:localhost:42455$jpOsdy1KQep88sySJG2sIXrZIG2dTCilhjOGEYVJlBgc7Q' e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.create$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qi6Q3 e =!PgNDjhhIBAXKryuGKy:localhost:8800m.room.power_levels$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxAg5Q/ e ] @anon-20191002_181700-708:localhost:8800>.=]@anon-20191002_181700-707:localhost:88003.<] @anon-20191002_181700-706:localhost:88009.;]@anon-20191002_181700-705:localhost:8800/.:] @anon-20191002_181700-704:localhost:88004.9]@anon-20191002_181700-703:localhost:8800).8] @anon-20191002_181700-702:localhost:8800/.7] @anon-20191002_181700-701:localhost:8800).6] @anon-20191002_181700-700:localhost:8800(.5]@anon-20191002_181700-697:localhost:8800.4] @anon-20191002_181700-698:localhost:8800#.3]@anon-20191002_181700-696:localhost:8800.2]@anon-20191002_181700-695:localhost:8800.1]@anon-20191002_181700-693:localhost:8800.0]@anon-20191002_181700-692:localhost:8800./] @anon-20191002_181700-691:localhost:8800..] @anon-20191002_181700-690:localhost:8800.-]@anon-20191002_181700-689:localhost:8800.,]@anon-20191002_181700-688:localhost:8800.+]@anon-20191002_181700-687:localhost:8800.*]@anon-20191002_181700-686:localhost:8800.)] @anon-20191002_181700-685:localhost:8800.(] @anon-20191002_181700-684:localhost:8800.'] @anon-20191002_181700-683:localhost:8800 .&] @anon-20191002_181700-682:localhost:8800 .%] @anon-20191002_181700-681:localhost:8800 .$] @anon-20191002_181700-680:localhost:8800 .#] @anon-20191002_181700-679:localhost:8800 ."] @anon-20191002_181700-678:localhost:8800 .!] @anon-20191002_181700-677:localhost:8800 . ] @anon-20191002_181700-676:localhost:8800 .] @anon-20191002_181700-675:localhost:8800 .] @anon-20191002_181700-674:localhost:8800 .] @anon-20191002_181700-673:localhost:8800 .] @anon-20191002_181700-672:localhost:8800 .] @anon-20191002_181700-671:localhost:8800 .] @anon-20191002_181700-670:localhost:8800 .] @anon-20191002_181700-669:localhost:8800 /]@anon-20191002_181700-668:localhost:8800 a1ohoZa  h  o  v # i } * 18?FMT?]PdQ]!OCEHAjcOXWNyWIESIS:localhost:8800@anon-20191002_181700-616:localhost:88004PcQ]!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-614:localhost:88004PbQ]!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-612:localhost:88004PaQ]!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-608:localhost:88004P`Q]!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-606:localhost:88004P_Q]!zqQJfFCRlSEDPKlQPy:localhost:8800@anon-20191002_181700-605:localhost:88004x1 !6:localhost:424551n1 !5:localhost:424551PfQ]!pHoEnhQYhwlbJXqKQE:localhost:8800@anon-20191002_181700-619:localhost:88001MPQ]!uGpSboYkgxVNOqNeUG:localhost:8800@anon-20191002_181700-669:localhost:88001PQ]!DSFBpkqfnvBQbGoMUK:localhost:8800@anon-20191002_181700-668:localhost:88004e1 !0:localhost:424551P Q]!ZKPJvrCZHMHPEksYDc:localhost:8800@anon-20191002_181700-668:localhost:88004P Q]!PgNDjhhIBAXKryuGKy:localhost:8800@anon-20191002_181700-667:localhost:88005P Q]!vnFXnkCSfTbsSNKrtg:localhost:8800@anon-20191002_181700-666:localhost:88004P Q]!jRuDexjFzIDOKbwDJQ:localhost:8800@anon-20191002_181700-665:localhost:88004P Q ]!KcXNWNfbLcYsBKZHIp:localhost:8800@anon-20191002_181700-664:localhost:88004PQ]!dBfASZrfiFeSKTjYJm:localhost:8800@anon-20191002_181700-663:localhost:88001PQ]!taANXnGBZntAreRurn:localhost:8800@anon-20191002_181700-662:localhost:88001PQ]!tcYctHPiaKzsKgrXlU:localhost:8800@anon-20191002_181700-661:localhost:88001PQ]!drnXStKXkNQkouqUAg:localhost:8800@anon-20191002_181700-660:localhost:88001PQ]!zScKnCZCFPIIodAiQj:localhost:8800@anon-20191002_181700-659:localhost:88001PQ]!LazKtcHZriKzCvvGwV:localhost:8800@anon-20191002_181700-658:localhost:88001PQ]!lEJUJZxqZPKZetemiR:localhost:8800@anon-20191002_181700-657:localhost:88001PQ]!bLWyXaXdvUhdSAooUz:localhost:8800@anon-20191002_181700-656:localhost:88001PQ]!YmRuIWixFpaqEeDQLZ:localhost:8800@anon-20191002_181700-655:localhost:88001PQ]!bjdLCdBwkKaihRIRFG:localhost:8800@anon-20191002_181700-654:localhost:88001P~Q]!qzrZzAieCgGSbpKOQR:localhost:8800@anon-20191002_181700-653:localhost:88001P}Q]!qzurjQHmiriwjaUMhO:localhost:8800@anon-20191002_181700-652:localhost:88001P|Q]!TSFcaXDBqrCREHRHxv:localhost:8800@anon-20191002_181700-646:localhost:88001P{Q]!AOEdqVKPFddrqbKPOL:localhost:8800@anon-20191002_181700-645:localhost:88004PzQ]!wBBQYEPjQGnoAzDpEu:localhost:8800@anon-20191002_181700-644:localhost:88004PyQ]!oZGRyBAkNDrEeiAqWL:localhost:8800@anon-20191002_181700-643:localhost:88001PwQ]!cRbfhxZdPstEsPGPAu:localhost:8800@anon-20191002_181700-641:localhost:88004PvQ]!sAWFpvSUPExZLVcPEd:localhost:8800@anon-20191002_181700-640:localhost:88004PuQ]!YpcmaMNMzjvtgYtrli:localhost:8800@anon-20191002_181700-639:localhost:88004PtQ]!PzoqoNRxeEEqiLyVSV:localhost:8800@anon-20191002_181700-638:localhost:88004PsQ]!uPxXJHJyFQwvpQLZNs:localhost:8800@anon-20191002_181700-637:localhost:88001PrQ]!UluPYLGXtInKDTjRzp:localhost:8800@anon-20191002_181700-636:localhost:88004PqQ]!QkkdnzvdrjHaFGkzMt:localhost:8800@anon-20191002_181700-635:localhost:88004PpQ]!DuqHkpTfWCUblSrxQj:localhost:8800@anon-20191002_181700-634:localhost:88004PoQ]!NanhNmCnVVpmZRJrTF:localhost:8800@anon-20191002_181700-633:localhost:88004PmQ]!sqkBzbHHJOTNWwynqV:localhost:8800@anon-20191002_181700-628:localhost:88002PlQ]!qInWQPtNQfBFoVzUtP:localhost:8800@anon-20191002_181700-626:localhost:88002PkQ]!FZOLkaLbBpaibrbHZx:localhost:8800@anon-20191002_181700-625:localhost:88002PjQ]!QxqzQoEBIZhmzHIGrl:localhost:8800@anon-20191002_181700-624:localhost:88002PiQ]!fDISaqNBhlOwherxSt:localhost:8800@anon-20191002_181700-623:localhost:88001PhQ]!yAfsSyqpJWFnkXQFJL:localhost:8800@anon-20191002_181700-622:localhost:88004PgQ]!AYFqrmxwClFQlcTTYq:localhost:8800@anon-20191002_181700-620:localhost:88001 ZN1v7h) hK4 s X % s V ;  \ ? $  i 6 u 6  uXAtA*iL1vC&[xaF/  bm.room.join_rules 2'E :m.room.member@__ANON__-39:localhost:42455 "?  9m.room.history_visibility /  8m.room.join_rules 3  7m.room.power_levels >'] 6m.room.member@anon-20191002_181700-667:localhost:8800 '  5m.room.create 2'E 4m.room.member@__ANON__-38:localhost:42455 2'E 3m.room.member@__ANON__-38:localhost:42455 "?  2m.room.history_visibility /  1m.room.join_rules 3  0m.room.power_levels >'] /m.room.member@anon-20191002_181700-666:localhost:8800 '  bm.room.create 3  am.room.power_levels 2'E am.room.member@__ANON__-43:localhost:42455 /  am.room.join_rules '  am.room.create 3  `m.room.power_levels 2'E `m.room.member@__ANON__-43:localhost:42455 /  `m.room.join_rules '  `m.room.create 2'E _m.room.member@__ANON__-43:localhost:42455 2'E ^m.room.member@__ANON__-43:localhost:42455 "?  ]m.room.history_visibility /  \m.room.join_rules 3  [m.room.power_levels >'] Zm.room.member@anon-20191002_181700-670:localhost:8800 '  Ym.room.create 3  Xm.room.power_levels 2'E Xm.room.member@__ANON__-41:localhost:42455 /  Xm.room.join_rules '  Xm.room.create 2'E Wm.room.member@__ANON__-41:localhost:42455 2'E Vm.room.member@__ANON__-41:localhost:42455 "?  Um.room.history_visibility /  Tm.room.join_rules 3  Sm.room.power_levels >'] Rm.room.member@anon-20191002_181700-669:localhost:8800 '  Qm.room.create 3  Pm.room.power_levels >'] Pm.room.member@anon-20191002_181700-668:localhost:8800 2'E Pm.room.member@__ANON__-40:localhost:42455 /  Pm.room.join_rules '  Pm.room.create 3  Om.room.power_levels >'] Om.room.member@anon-20191002_181700-668:localhost:8800 2'E Om.room.member@__ANON__-40:localhost:42455 /  Om.room.join_rules '  Om.room.create 3  Nm.room.power_levels >'] Nm.room.member@anon-20191002_181700-668:localhost:8800 2'E Nm.room.member@__ANON__-40:localhost:42455 /  Nm.room.join_rules '  Nm.room.create 2'E Mm.room.member@__ANON__-40:localhost:42455 2'E Lm.room.member@__ANON__-40:localhost:42455 "?  Km.room.history_visibility /  Jm.room.join_rules 3  Im.room.power_levels >'] Hm.room.member@anon-20191002_181700-668:localhost:8800 '  Gm.room.create 2'E Fm.room.member@__ANON__-40:localhost:42455 2'E Em.room.member@__ANON__-40:localhost:42455 "?  Dm.room.history_visibility /  Cm.room.join_rules 3  Bm.room.power_levels >'] Am.room.member@anon-20191002_181700-668:localhost:8800 '  @m.room.create 3  ?m.room.power_levels >'] ?m.room.member@anon-20191002_181700-667:localhost:8800 2'E ?m.room.member@__ANON__-39:localhost:42455 /  ?m.room.join_rules '  ?m.room.create 3  >m.room.power_levels >'] >m.room.member@anon-20191002_181700-667:localhost:8800 2'E >m.room.member@__ANON__-39:localhost:42455 /  >m.room.join_rules '  >m.room.create 3  =m.room.power_levels >'] =m.room.member@anon-20191002_181700-667:localhost:8800 2'E =m.room.member@__ANON__-39:localhost:42455 /  =m.room.join_rules '  =m.room.create 3  '] M f (Ib$UD?Sgb TLQe !PVyTvKbqnjSXfGWAMy:localhost:8800$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcTKQe !SrwdtDytJDUBVZOueF:localhost:8800$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4TJQe !PVyTvKbqnjSXfGWAMy:localhost:8800$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRETIQe !SrwdtDytJDUBVZOueF:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYTHQe !PVyTvKbqnjSXfGWAMy:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gTGQe !SrwdtDytJDUBVZOueF:localhost:8800$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSukTFQe !PVyTvKbqnjSXfGWAMy:localhost:8800$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI;E3Q !13:localhost:42455$1570043683436iTOlZ:localhost:8800;D3Q !12:localhost:42455$1570043680434abJWo:localhost:8800TCQe !nhbUIcIbhuXkRqfeDa:localhost:8800$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxATBQe !nhbUIcIbhuXkRqfeDa:localhost:8800$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0TAQe !nhbUIcIbhuXkRqfeDa:localhost:8800$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYT@Qe !nhbUIcIbhuXkRqfeDa:localhost:8800$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIT?Qe !nhbUIcIbhuXkRqfeDa:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIT>Qe !nhbUIcIbhuXkRqfeDa:localhost:8800$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs;=3Q !11:localhost:42455$1570043670433bjAzo:localhost:8800;<3Q !11:localhost:42455$1570043668432TfiHj:localhost:8800;;3Q !10:localhost:42455$1570043664431IMLSL:localhost:8800::1Q !9:localhost:42455$1570043660430kLPpN:localhost:8800F9QI !SnROoiDBapNNtMmKnT:localhost:8800$64_redaction2:localhost:42455F8QI !SnROoiDBapNNtMmKnT:localhost:8800$63_redaction1:localhost:42455;7Q3 !SnROoiDBapNNtMmKnT:localhost:8800$62:localhost:42455J6QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043656428rZaqi:localhost:8800J5QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043655427tEtWD:localhost:8800J4QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043654426seixP:localhost:8800J3QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043653425AhyPB:localhost:8800J2QQ !SnROoiDBapNNtMmKnT:localhost:8800$1570043652424mkkFn:localhost:8800B1QA !uGpSboYkgxVNOqNeUG:localhost:8800$lolredact:localhost:42455;0Q3 !uGpSboYkgxVNOqNeUG:localhost:8800$61:localhost:42455J/QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043648422SglHQ:localhost:8800J.QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043647421dmTZW:localhost:8800J-QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043646420mPrhj:localhost:8800J,QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043646419zIOAX:localhost:8800J+QQ !uGpSboYkgxVNOqNeUG:localhost:8800$1570043645418ABZkc:localhost:8800T*Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcT)Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAT(Qe !ZKPJvrCZHMHPEksYDc:localhost:8800$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3ET'Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsT&Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwT%Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQT$Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4T#Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAT"Qe !DSFBpkqfnvBQbGoMUK:localhost:8800$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-sT!Qe !ZKPJvrCZHMHPEksYDc:localhost:8800$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIcT Qe !ZKPJvrCZHMHPEksYDc:localhost:8800$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0TQe !ZKPJvrCZHMHPEksYDc:localhost:8800$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylawTQe !ZKPJvrCZHMHPEksYDc:localhost:8800$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgITQe !ZKPJvrCZHMHPEksYDc:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUTQe !ZKPJvrCZHMHPEksYDc:localhost:8800$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ oBMtM%WG % G _ 8   s K #  ^ 6   q I "g   [ 4 5opSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localho'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800]&'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800('Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800yuP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800r'Q!sqkBzbHHJOTNWwynqV:localhost:8800l/'Q!yAfsSyqpJWFnkXQFJL:localhost:8800g'Q!zqQJfFCRlSEDPKlQPy:localhost:8800^'Q!ybXveQoxPVhjpKHAkG:localhost:8800U'Q!vZGjXEXQoCaoUXnkCa:localhost:8800O'Q!xcdNyJNFEdaBGFycsB:localhost:8800L('Q!tPkCGJBKmqUXJoRrnY:localhost:8800E'Q!zHBgbzUZHshNGZvIBS:localhost:8800@'Q!vRmMcoJDeCupADwqac:localhost:8800:'Q!wBkUBAjOznOyxrLchl:localhost:88005('Q!vBvlJEXUSQKUYmsKcO:localhost:88000'Q!ubmTdQFAhrhZkGULDx:localhost:8800*'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800 oBMtM%WG % G _ 8   s K #  ^ 6   q I "g   [ 4 5opSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localho'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800]&'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800('Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800yuP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800r'Q!sqkBzbHHJOTNWwynqV:localhost:8800l/'Q!yAfsSyqpJWFnkXQFJL:localhost:8800g'Q!zqQJfFCRlSEDPKlQPy:localhost:8800^'Q!ybXveQoxPVhjpKHAkG:localhost:8800U'Q!vZGjXEXQoCaoUXnkCa:localhost:8800O'Q!xcdNyJNFEdaBGFycsB:localhost:8800L('Q!tPkCGJBKmqUXJoRrnY:localhost:8800E'Q!zHBgbzUZHshNGZvIBS:localhost:8800@'Q!vRmMcoJDeCupADwqac:localhost:8800:'Q!wBkUBAjOznOyxrLchl:localhost:88005('Q!vBvlJEXUSQKUYmsKcO:localhost:88000'Q!ubmTdQFAhrhZkGULDx:localhost:8800*'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800 oBMtM%WG % G _ 8   s K #  ^ 6   q I "g   [ 4 5opSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localho'Q!uGpSboYkgxVNOqNeUG:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800]&'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800'Q!wCsDjKBtuUbrmZgjsB:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800('Q!ulbQzxdPXzuvNoqqgU:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800yuP'Q!uPxXJHJyFQwvpQLZNs:localhost:8800r'Q!sqkBzbHHJOTNWwynqV:localhost:8800l/'Q!yAfsSyqpJWFnkXQFJL:localhost:8800g'Q!zqQJfFCRlSEDPKlQPy:localhost:8800^'Q!ybXveQoxPVhjpKHAkG:localhost:8800U'Q!vZGjXEXQoCaoUXnkCa:localhost:8800O'Q!xcdNyJNFEdaBGFycsB:localhost:8800L('Q!tPkCGJBKmqUXJoRrnY:localhost:8800E'Q!zHBgbzUZHshNGZvIBS:localhost:8800@'Q!vRmMcoJDeCupADwqac:localhost:8800:'Q!wBkUBAjOznOyxrLchl:localhost:88005('Q!vBvlJEXUSQKUYmsKcO:localhost:88000'Q!ubmTdQFAhrhZkGULDx:localhost:8800*'Q!zuCqeooOnfWkYrQdxA:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800&Q!zNBpypJDRMlBdOcLlW:localhost:8800w&Q!zFdNewlKnUiMBxnYrN:localhost:8800['Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800!'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800 &Q!wUuodvgsmAJqKJUBCQ:localhost:8800\'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800/&Q!wAyboOFgsOPwkmgMAI:localhost:8800a'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800 'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88007'Q!vRRNxNyGboLHNhqQvr:localhost:8800&Q!vOfeZvbtpuHfoqShFl:localhost:8800i&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800&Q!tkajvIKHoOMWGsReBs:localhost:8800q'Q!tLkhTnTgDjjAvscRkW:localhost:8800&Q!tDsPLsKOLPePtEWRwn:localhost:8800^'Q!svYOOXWZHtQQzlMcEP:localhost:8800&Q!sfXbvAcOUJhzGwWEpZ:localhost:8800|&Q!scyFsXcUIJiLIMwWMY:localhost:8800 +j80p> v D   | J  P  V $  \ *b1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 81e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc v1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM o1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5k1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrboz1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y ~1e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD41e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA>1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7I1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX41e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlg1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQ1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM O1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuoW1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkAJ1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A,1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE-1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 a1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sP1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sO1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6sN1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRIQ1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk=1e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis11e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM DwIc5 ~ P " jrDR$l>cX*6 <  V  ( `3R% w c O ; '  s _ K 7 #  o [ G 3   k W C /   w _ G ' n--]@anon-20191002_181700-755:localhost:8800 -]@anon-20191002_181700-742:localhost:8800 W-]@anon-20191002_181700-737:localhost:8829 U-]@anon-20191002_181700-736:localhost:8800 Q-]@anon-20191002_181700-787:localhost:8800 -]@anon-20191002_181700-768:localhost:8800 -]@anon-20191002_181700-767:localhost:8800 -]@anon-20191002_181700-763:localhost:8800 -]@anon-20191002_181700-762:localhost:8800 -]@anon-20191002_181700-758:localhost:8800 -]@anon-20191002_181700-757:localhost:8800 -]@anon-20191002_181700-754:localhost:8800 |-]@anon-20191002_181700-755:localhost:8800 z-]@anon-20191002_181700-754:localhost:8800 u-]@anon-20191002_181700-752:localhost:8800 p-]@anon-20191002_181700-751:localhost:8800 n-]@anon-20191002_181700-750:localhost:8800 i-]@anon-20191002_181700-747:localhost:8800 g-]@anon-20191002_181700-746:localhost:8800 b-]@anon-20191002_181700-744:localhost:8800 ]-]@anon-20191002_181700-743:localhost:8800 [,[@anon-20191002_181700-81:localhost:8800,[@anon-20191002_181700-79:localhost:8800,[@anon-20191002_181700-77:localhost:8800,[@anon-20191002_181700-75:localhost:8800,[@anon-20191002_181700-74:localhost:8800,-]@anon-20191002_181700-717:localhost:8800 ,[@anon-20191002_181700-94:localhost:8829,[@anon-20191002_181700-93:localhost:8800,[@anon-20191002_181700-92:localhost:8829,[@anon-20191002_181700-91:localhost:8800,[@anon-20191002_181700-90:localhost:8800,[@anon-20191002_181700-89:localhost:8800,[@anon-20191002_181700-87:localhost:8800,[@anon-20191002_181700-86:localhost:8800,[@anon-20191002_181700-85:localhost:8800,[@anon-20191002_181700-84:localhost:8800,[@anon-20191002_181700-83:localhost:8800,[@anon-20191002_181700-82:localhost:8800-]@anon-20191002_181700-832:localhost:8800 -]@anon-20191002_181700-832:localhost:8800 -]@anon-20191002_181700-831:localhost:8800 -]@anon-20191002_181700-797:localhost:8800 -]@anon-20191002_181700-795:localhost:8800 -]@anon-20191002_181700-793:localhost:8800 -]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-789:localhost:8800 -]@anon-20191002_181700-735:localhost:8800 O-]@anon-20191002_181700-734:localhost:8800 K-]@anon-20191002_181700-733:localhost:8800 H-]@anon-20191002_181700-732:localhost:8800 D-]@anon-20191002_181700-731:localhost:8800 A-]@anon-20191002_181700-730:localhost:8800 =,[@anon-20191002_181700-72:localhost:8829-]@anon-20191002_181700-729:localhost:8800 9-]@anon-20191002_181700-728:localhost:8800 5-]@anon-20191002_181700-727:localhost:8800 3-]@anon-20191002_181700-726:localhost:8800 .-]@anon-20191002_181700-725:localhost:8800 ,-]@anon-20191002_181700-724:localhost:8800 (-]@anon-20191002_181700-723:localhost:8800 %-]@anon-20191002_181700-722:localhost:8800 !-]@anon-20191002_181700-721:localhost:8800 -]@anon-20191002_181700-720:localhost:8800 ,[@anon-20191002_181700-71:localhost:8800-]@anon-20191002_181700-719:localhost:8800 -]@anon-20191002_181700-718:localhost:8800   ~ipeQa_$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800{"token_id": 648, "stream_ordering": 3465}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-668:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043635846, "hashes": {"sha256": "JmYK5YGa2UymFasOTGOb3QTaUB+UApSOIkci7C+/PS4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TssE31c38CS6lMVGI5C6I+eubJVC1UnpGH7GjN14tm6L1L+ad4Y/Cs8+tGJX6zoia9zl4ynWoQhNryrllUHmDg"}}, "unsigned": {"age_ts": 1570043635846}}}oeQ33$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc!ZKPJvrCZHMHPEksYDc:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3464}{"hashes": {"sha256": "szPl9l5LwzW+DR6cX8yNMZ+RWUbYqH5iQnVSoktPqek"}, "sender": "@__ANON__-40:localhost:42455", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-40:localhost:42455", "depth": 6, "origin": "localhost:42455", "origin_server_ts": 1570043634734, "prev_events": ["$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0"], "auth_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw"], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "mzYB4bOOO5xxn7OBydvf9HwMRiEGZny+aI9RV1DUndvXAYcOUdDXdFHo1czfSEiHIpmtMKlLV6HTqPXr8nvPDw"}}, "unsigned": {}}neQa$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-0!ZKPJvrCZHMHPEksYDc:localhost:8800{"token_id": 648, "stream_ordering": 3463}{"auth_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU"], "prev_events": ["$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw"], "type": "m.room.history_visibility", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043633468, "hashes": {"sha256": "sA6g6jDEd0jSdu22GayEu8NRKqs8YnF5tdzqhz3NYJg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "42w2L7OImpjts3DIrIVL2Q7V3dXekpT3N6myWwEAdKFbqbCIjdm9qItweG4gHOZasejnDad3kwOvEoNdcO04Dg"}}, "unsigned": {"age_ts": 1570043633468}}tmeQau$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw!ZKPJvrCZHMHPEksYDc:localhost:8800{"token_id": 648, "stream_ordering": 3462}{"auth_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU"], "prev_events": ["$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI"], "type": "m.room.join_rules", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "sender": "@anon-20191002_181700-668:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043632711, "hashes": {"sha256": "uwZ+MlUSajUEe5a6FfK3jcxW+8MlTJbruiGeKICFMZQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CXx9tJRddUaaQqlltoXXk3jFg3ththgIUgk7MjjmwdRBJfLS9w7WVHV00cfeFesrhH10fRiGv1PTVcOAxWb9Bg"}}, "unsigned": {"age_ts": 1570043632711}}  | l U   M E=5-% deeQ$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8$IhcUuVT4ud2EWTOnJZKHmCjtwCl_l4m3llgWI_1z9cI!IlGJpjzrvvAFuwTAgo:localhost:8800 eeQ$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800 eeQ$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpo$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk!qjijQBfMwsCPTVgKPm:localhost:8800 ! eeQ$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDio$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU!CGckPHdSYcIocFvRAq:localhost:8800eeQ$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQM$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8$XQkdoOEVbeoUu8yq1kcUwHOsWJXf09P5IFRaJ5yQb70!NfaPEGKjnUDUTavzol:localhost:8800WeeQ$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4$XyvRnFgtPdPOXJzWJId7VyJzBTqtlP6w2bpT1z63lxM!eySSVuCclRpBDgwKIU:localhost:8800eeQ$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSg$4kV9oCSyJTQEu2gzKT07nbQHF0YQ2WeiGqKR93OYRbs!GiSxJsKZhQVHBkrVPn:localhost:8800@eeQ$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8$cd7gvmF6GnVBliyaOcMyNWwKkzvJN5d2FK2RdlO2Fi8!itKDOCtoMkFUETDtle:localhost:8800eeQ$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI!aVxOoyiLLnxmzgLJat:localhost:8800yeeQ$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU!AoAvmnwMkhYBQsbCsL:localhost:8800 eeQ$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Eg$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k!GiSxJsKZhQVHBkrVPn:localhost:8800;eeQ$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQo!mTlCLZQCmfDuQsJxxp:localhost:8800>eeQ$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZY$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA!HcMGemcRrLnLprOJJR:localhost:8800́eeQ$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA!OWGKxAmTrHLciIdrJi:localhost:8800FeeQ$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls!GgUNbVXspVTpOlaHBl:localhost:8800teeQ$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SI$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY!hGsPmWXboxZZtOlsxY:localhost:8800 eeQ$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0$um-9r1p4bSlfvSG36vlh19V-3qfoyf0V52-wkYXK1T0!hFwigdYZkwYNSwelRH:localhost:8800 IeeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800 eeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800 eeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800 `eeQ$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ$TIwxUaZJu-zEiEEae1LbhtMWBeztRw9KqXDpY3gu9fI!kOmCTyiizHqfCJdhlR:localhost:8800 d $DO f  2 - , I,0n,] -AdQ' e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.create$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJss3']Q !11:localhost:42455m.room.member@anon-20191002_181700-674:localhost:8800$1570043670433bjAzo:localhost:8800s3']Q !11:localhost:42455m.room.member@anon-20191002_181700-673:localhost:8800$1570043668432TfiHj:localhost:8800X3'E3 !11:localhost:42455m.room.member@__ANON__-47:localhost:42455$72:localhost:42455@3/ 3 !11:localhost:42455m.room.join_rules$73:localhost:42455<3' 3 !11:localhost:42455m.room.create$71:localhost:42455s3']Q !10:localhost:42455m.room.member@anon-20191002_181700-672:localhost:8800$1570043664431IMLSL:localhost:8800X3'E3 !10:localhost:42455m.room.member@__ANON__-46:localhost:42455$69:localhost:42455<3' 3 !10:localhost:42455m.room.create$68:localhost:42455@3/ 3 !10:localhost:42455m.room.join_rules$70:localhost:42455r~1']Q !9:localhost:42455m.room.member@anon-20191002_181700-671:localhost:8800$1570043660430kLPpN:localhost:8800W}1'E3 !9:localhost:42455m.room.member@__ANON__-45:localhost:42455$66:localhost:42455?|1/ 3 !9:localhost:42455m.room.join_rules$67:localhost:42455;{1' 3 !9:localhost:42455m.room.create$65:localhost:42455zQ/ QQ !SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800$1570043655427tEtWD:localhost:8800zyQ'E33 !SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455$62:localhost:42455|xQ' QQ !SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800$1570043652424mkkFn:localhost:8800wQ3 QQ !SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800$1570043654426seixP:localhost:8800gvQ'E3 !SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455fuQ? Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.history_visibility$1570043656428rZaqi:localhost:8800^tQ/ Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800`sQ3 Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800rQ']Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800$1570043653425AhyPB:localhost:8800ZqQ' Q !SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800pQ/ QQ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800$1570043647421dmTZW:localhost:8800zoQ'E33 !uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455$61:localhost:42455|nQ' QQ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800$1570043645418ABZkc:localhost:8800mQ3 QQ !uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800$1570043646420mPrhj:localhost:8800glQ'E3 !uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455fkQ? Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility$1570043648422SglHQ:localhost:8800^jQ/ Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800`iQ3 Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800hQ']Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800$1570043646419zIOAX:localhost:8800ZgQ' Q !uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800fQ/ ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ8eQ']ee !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA iV010123456781700920191002126830123442455 92345678950134567891012346892012312345678940123458950123456789612345678970123467898023460135 678910246792023456893234567894012345652345678960123 WX w C  q -&Tx .7Wp*3/3 E$70:localhost:42455m.room.join_rules!10:localhost:42455m&m@__ANON__-46:localhost:42455j) 3'3 E$69:localhost:42455m.room.member!10:localhost:42455m%m@__ANON__-46:localhost:42455j(3'3 E$68:localhost:42455m.room.create!10:localhost:42455m%m@__ANON__-46:localhost:42455'Q'1 ]$1570043660430kLPpN:localhost:8800m.room.member!9:localhost:42455m /m C@anon-20191002_181700-671:localhost:8800o#3/1 E$67:localhost:42455m.room.join_rules!9:localhost:42455m m @__ANON__-45:localhost:42455i" 3'1 E$66:localhost:42455m.room.member!9:localhost:42455m m @__ANON__-45:localhost:42455i!3'1 E$65:localhost:42455m.room.create!9:localhost:42455m m @__ANON__-45:localhost:42455 I-Q E$64_redaction2:localhost:42455m.room.redaction!SnROoiDBapNNtMmKnT:localhost:8800mm<@__ANON__-43:localhost:42455 I-Q E$63_redaction1:localhost:42455m.room.redaction!SnROoiDBapNNtMmKnT:localhost:8800mXmF@__ANON__-43:localhost:42455{3'Q E$62:localhost:42455m.room.member!SnROoiDBapNNtMmKnT:localhost:8800mm@__ANON__-43:localhost:42455"Q?Q ]$1570043656428rZaqi:localhost:8800m.room.history_visibility!SnROoiDBapNNtMmKnT:localhost:8800mm@anon-20191002_181700-670:localhost:8800Q/Q ]$1570043655427tEtWD:localhost:8800m.room.join_rules!SnROoiDBapNNtMmKnT:localhost:8800mm@anon-20191002_181700-670:localhost:8800Q3Q ]$1570043654426seixP:localhost:8800m.room.power_levels!SnROoiDBapNNtMmKnT:localhost:8800mPm@anon-20191002_181700-670:localhost:8800Q'Q ]$1570043653425AhyPB:localhost:8800m.room.member!SnROoiDBapNNtMmKnT:localhost:8800m,m@anon-20191002_181700-670:localhost:8800 Q'Q  ]$1570043652424mkkFn:localhost:8800m.room.create!SnROoiDBapNNtMmKnT:localhost:8800mhm@anon-20191002_181700-670:localhost:8800A-Q E$lolredact:localhost:42455m.room.redaction!uGpSboYkgxVNOqNeUG:localhost:8800mgmD@__ANON__-41:localhost:42455{3'Q E$61:localhost:42455m.room.member!uGpSboYkgxVNOqNeUG:localhost:8800mm@__ANON__-41:localhost:42455"Q?Q ]$1570043648422SglHQ:localhost:8800m.room.history_visibility!uGpSboYkgxVNOqNeUG:localhost:8800m(m۽@anon-20191002_181700-669:localhost:8800Q/Q ]$1570043647421dmTZW:localhost:8800m.room.join_rules!uGpSboYkgxVNOqNeUG:localhost:8800m֨m/@anon-20191002_181700-669:localhost:8800Q3Q ]$1570043646420mPrhj:localhost:8800m.room.power_levels!uGpSboYkgxVNOqNeUG:localhost:8800mmf@anon-20191002_181700-669:localhost:8800Q'Q ]$1570043646419zIOAX:localhost:8800m.room.member!uGpSboYkgxVNOqNeUG:localhost:8800mmm@anon-20191002_181700-669:localhost:8800 Q'Q  ]$1570043645418ABZkc:localhost:8800m.room.create!uGpSboYkgxVNOqNeUG:localhost:8800mm!@anon-20191002_181700-669:localhost:8800e)Q E$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcm.room.message!DSFBpkqfnvBQbGoMUK:localhost:8800mmȂ@__ANON__-40:localhost:42455e-Q E$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVAm.room.redaction!DSFBpkqfnvBQbGoMUK:localhost:8800m_m @__ANON__-40:localhost:42455e)Q E$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3Em.room.message!ZKPJvrCZHMHPEksYDc:localhost:8800mm3@__ANON__-40:localhost:42455e'Q E$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsm.room.member!DSFBpkqfnvBQbGoMUK:localhost:8800mmW@__ANON__-40:localhost:42455, e?Q ]$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvwm.room.history_visibility!DSFBpkqfnvBQbGoMUK:localhost:8800m%m@anon-20191002_181700-668:localhost:8800$ e/Q ]$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQm.room.join_rules!DSFBpkqfnvBQbGoMUK:localhost:8800mm䳸@anon-20191002_181700-668:localhost:8800 (e} { F l %i 1W}6z_CeLFQ33$1570043664431IMLSL:localhost:8800$70:localhost:42455!10:localhost:42455LEQ33$1570043664431IMLSL:localhost:8800$68:localhost:42455!10:localhost:42455=D333$70:localhost:42455$69:localhost:42455!10:localhost:42455=C333$70:localhost:42455$68:localhost:42455!10:localhost:42455=B333$69:localhost:42455$68:localhost:42455!10:localhost:42455KAQ31$1570043660430kLPpN:localhost:8800$67:localhost:42455!9:localhost:42455K@Q31$1570043660430kLPpN:localhost:8800$65:localhost:42455!9:localhost:42455331$67:localhost:42455$65:localhost:42455!9:localhost:42455<=331$66:localhost:42455$65:localhost:42455!9:localhost:42455[<3QQ$62:localhost:42455$1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800[;3QQ$62:localhost:42455$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800[:3QQ$62:localhost:42455$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j9QQQ$1570043656428rZaqi:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j8QQQ$1570043656428rZaqi:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j7QQQ$1570043656428rZaqi:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j6QQQ$1570043655427tEtWD:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j5QQQ$1570043655427tEtWD:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j4QQQ$1570043655427tEtWD:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j3QQQ$1570043654426seixP:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j2QQQ$1570043654426seixP:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800j1QQQ$1570043653425AhyPB:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800[03QQ$61:localhost:42455$1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800[/3QQ$61:localhost:42455$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800[.3QQ$61:localhost:42455$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j-QQQ$1570043648422SglHQ:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j,QQQ$1570043648422SglHQ:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j+QQQ$1570043648422SglHQ:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j*QQQ$1570043647421dmTZW:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j)QQQ$1570043647421dmTZW:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j(QQQ$1570043647421dmTZW:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j'QQQ$1570043646420mPrhj:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j&QQQ$1570043646420mPrhj:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800j%QQQ$1570043646419zIOAX:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800~$eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ!DSFBpkqfnvBQbGoMUK:localhost:8800~#eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~"eeQ$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800~!eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA!DSFBpkqfnvBQbGoMUK:localhost:8800~ eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s!DSFBpkqfnvBQbGoMUK:localhost:8800~eeQ$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800 $z~* 1 _ N x  ;TI$C8zYuQ' Q `!SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800_tQ3 Q `!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800fsQ'E3 _!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455urQ'EQ ^!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$1570043656429hLPPT:localhost:8800eqQ? Q ]!SnROoiDBapNNtMmKnT:localhost:8800m.room.history_visibility$1570043656428rZaqi:localhost:8800]pQ/ Q \!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800_oQ3 Q [!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800nQ']Q Z!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@anon-20191002_181700-670:localhost:8800$1570043653425AhyPB:localhost:8800YmQ' Q Y!SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800]lQ/ Q X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800fkQ'E3 X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455YjQ' Q X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800_iQ3 Q X!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800fhQ'E3 W!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$61:localhost:42455ugQ'EQ V!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@__ANON__-41:localhost:42455$1570043649423kEGEg:localhost:8800efQ? Q U!uGpSboYkgxVNOqNeUG:localhost:8800m.room.history_visibility$1570043648422SglHQ:localhost:8800]eQ/ Q T!uGpSboYkgxVNOqNeUG:localhost:8800m.room.join_rules$1570043647421dmTZW:localhost:8800_dQ3 Q S!uGpSboYkgxVNOqNeUG:localhost:8800m.room.power_levels$1570043646420mPrhj:localhost:8800cQ']Q R!uGpSboYkgxVNOqNeUG:localhost:8800m.room.member@anon-20191002_181700-669:localhost:8800$1570043646419zIOAX:localhost:8800YbQ' Q Q!uGpSboYkgxVNOqNeUG:localhost:8800m.room.create$1570043645418ABZkc:localhost:8800gaQ/ e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ `Q']e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA_Q'Ee P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMsc^Q' e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-si]Q3 e P!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4g\Q/ e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ [Q']e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAZQ'Ee O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMscYQ' e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-siXQ3 e O!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4gWQ/ e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.join_rules$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw VQ']e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUUQ'Ee N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.member@__ANON__-40:localhost:42455$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIccTQ' e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.create$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQiSQ3 e N!ZKPJvrCZHMHPEksYDc:localhost:8800m.room.power_levels$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgIRQ'Ee M!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs  *VxeQc7$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc!DSFBpkqfnvBQbGoMUK:localhost:8800{"outlier": false, "stream_ordering": 3473}{"origin_server_ts": 1570043643608, "prev_events": ["$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA"], "auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ", "$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs"], "content": {"body": "sentinel"}, "hashes": {"sha256": "WGOLn30MSVk6gZDVdBlm52yGE/76abyjWSfqFtV4DjI"}, "sender": "@__ANON__-40:localhost:42455", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "type": "m.room.message", "depth": 8, "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "QcoRuHEXA0GUI2wjwV64/7SKBWadBUaeVqH3xAeEHWYLhvuu9mJsxyMVQV8NRQT7fU7vjevPp7rbcjECn0h3Cw"}}, "unsigned": {}}MweQm$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA!DSFBpkqfnvBQbGoMUK:localhost:8800{"outlier": false, "recheck_redaction": true, "stream_ordering": 3472}{"type": "m.room.redaction", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "origin": "localhost:42455", "depth": 7, "hashes": {"sha256": "+2IVEG927kMn7PVy7MC7uzvd+28esKTjyOOolWlRtyg"}, "redacts": "$cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E", "sender": "@__ANON__-40:localhost:42455", "auth_events": ["$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ", "$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs"], "content": {}, "origin_server_ts": 1570043642975, "prev_events": ["$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzA", "$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs"], "signatures": {"localhost:42455": {"ed25519:1": "ELr03yWfaYOJ0bqeZN+iO/kG9dtIhNfYOjYBTIQhFOILnvtFNNdPTEPC12uaE7VzaNLgldyZYpUveW/pepULAA"}}, "unsigned": {}}veQc $cBwoxcZF6iRrpwcX57E91Fe-19fQveUA0aEe8QCSG3E!ZKPJvrCZHMHPEksYDc:localhost:8800{"outlier": false, "stream_ordering": 3471}{"depth": 7, "origin": "localhost:42455", "room_id": "!ZKPJvrCZHMHPEksYDc:localhost:8800", "type": "m.room.message", "sender": "@__ANON__-40:localhost:42455", "hashes": {"sha256": "vRAGdnZL9qBP80+HV3GQEpXklEz0ebW9W9XUSAxNEUU"}, "content": {"body": "hi"}, "auth_events": ["$SmIifkKP7R0dSCZxjx5TkVqyvRKhNteujr5HtftPzTQ", "$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw", "$EJpiJGhLLux3udPChtsBW7xWpj14mNJuXvOZWcDdKgI", "$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc"], "prev_events": ["$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkU", "$ipLWPoY96N9tFEs-0gGTzYvSHXYcAR0v_zRc6uqJnIc"], "origin_server_ts": 1570043641629, "signatures": {"localhost:42455": {"ed25519:1": "ItnAMSUTrW/N8GhwHYgdR/8pWGoF2hMwqglf/1vpUTmxxEbsSqjw5Jt/JLFL4Cl0JrPetCQRvqp4YdLEQYH8Ag"}}, "unsigned": {}}}ueQ33$EJrNBRVsZlf9TqEpFWylPpw4bfnxTrnBhwZBLMyFgMs!DSFBpkqfnvBQbGoMUK:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3470}{"prev_events": ["$XqPbJMAUN114m5YMEzvtNfZUsWanbLI_ZEwpWkTBrvw"], "origin_server_ts": 1570043641041, "content": {"membership": "join"}, "auth_events": ["$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4", "$4_kK4V4__oKGOsUheZrXpLuEXASoOx2irVSFP_kqb-s", "$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ"], "sender": "@__ANON__-40:localhost:42455", "hashes": {"sha256": "fRa8CiDYSo9t+mA9KNoyS7dsIwvFJxFDQdRCq9AVnWM"}, "origin": "localhost:42455", "state_key": "@__ANON__-40:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!DSFBpkqfnvBQbGoMUK:localhost:8800", "signatures": {"localhost:42455": {"ed25519:1": "UwfgURiOXKyvZjCrtQbD+hCnmKgUPQ1XA1D2QeYlCa/I3I+Epdqo6/m4VHT87MQzp01oOP4MTSDG5Jo+xpQXAg"}}, "unsigned": {}} )~4 g  < ` ) h (XE :w'#^eeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800]eeQ$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800\eeQ$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800M[Q33$1570043683436iTOlZ:localhost:8800$80:localhost:42455!13:localhost:42455>Z333$80:localhost:42455$79:localhost:42455!13:localhost:42455>Y333$79:localhost:42455$78:localhost:42455!13:localhost:42455>X333$78:localhost:42455$77:localhost:42455!13:localhost:42455MWQ33$1570043680434abJWo:localhost:8800$76:localhost:42455!12:localhost:42455>V333$76:localhost:42455$75:localhost:42455!12:localhost:42455>U333$75:localhost:42455$74:localhost:42455!12:localhost:42455TeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0!nhbUIcIbhuXkRqfeDa:localhost:8800SeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800ReeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800QeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800PeeQ$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800\OQQ3$1570043670433bjAzo:localhost:8800$1570043668432TfiHj:localhost:8800!11:localhost:42455MNQ33$1570043668432TfiHj:localhost:8800$73:localhost:42455!11:localhost:42455>M333$73:localhost:42455$72:localhost:42455!11:localhost:42455>L333$72:localhost:42455$71:localhost:42455!11:localhost:42455MKQ33$1570043664431IMLSL:localhost:8800$70:localhost:42455!10:localhost:42455>J333$70:localhost:42455$69:localhost:42455!10:localhost:42455>I333$69:localhost:42455$68:localhost:42455!10:localhost:42455LHQ31$1570043660430kLPpN:localhost:8800$67:localhost:42455!9:localhost:42455=G331$67:localhost:42455$66:localhost:42455!9:localhost:42455=F331$66:localhost:42455$65:localhost:42455!9:localhost:42455cEIIQ$64_redaction2:localhost:42455$63_redaction1:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800XDI3Q$63_redaction1:localhost:42455$62:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800gCIQQ$63_redaction1:localhost:42455$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800\B3QQ$62:localhost:42455$1570043656428rZaqi:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800kAQQQ$1570043656428rZaqi:localhost:8800$1570043655427tEtWD:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800k@QQQ$1570043655427tEtWD:localhost:8800$1570043654426seixP:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800k?QQQ$1570043654426seixP:localhost:8800$1570043653425AhyPB:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800k>QQQ$1570043653425AhyPB:localhost:8800$1570043652424mkkFn:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800T=A3Q$lolredact:localhost:42455$61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800c<AQQ$lolredact:localhost:42455$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800\;3QQ$61:localhost:42455$1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k:QQQ$1570043648422SglHQ:localhost:8800$1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k9QQQ$1570043647421dmTZW:localhost:8800$1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k8QQQ$1570043646420mPrhj:localhost:8800$1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800k7QQQ$1570043646419zIOAX:localhost:8800$1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:88006eeQ$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGc$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA!DSFBpkqfnvBQbGoMUK:localhost:8800  +{QQay $1570043646420mPrhj:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3476}{"auth_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}]], "prev_events": [["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}]], "type": "m.room.power_levels", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"users": {"@anon-20191002_181700-669:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043646420mPrhj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043646972, "hashes": {"sha256": "zaNaUfAGU+DfTQiQRgKnM3qvcPri/UwpzdjS9naBWpM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gw8552qy3pa1SzpWAmffvJ7v+qNiYe6/diyQUfQKiB32ybu4Kmz6adOO4bE6FaGMkJvgeqnEyIb1Ttn3mc4QCg"}}, "unsigned": {"age_ts": 1570043646972}}zQQa) $1570043646419zIOAX:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3475}{"auth_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}]], "prev_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}]], "type": "m.room.member", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-669", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-669:localhost:8800", "event_id": "$1570043646419zIOAX:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043646210, "hashes": {"sha256": "lLdfq/4WOj1X+gdQ+K8zOgJUvahOI+8EkTdozHKchjM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "prt01oPkWqCilfHbJTnCGOcqXkzQPr3fH2JqMIIJ5+bCJMpSVBGJY72uDl6NQE1RtXuzvRoawARc8k0r0xSXCQ"}}, "unsigned": {"age_ts": 1570043646210}}yQQaC $1570043645418ABZkc:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3474}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-669:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043645418ABZkc:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043645376, "hashes": {"sha256": "rlKyPDXjIXfHk1cmss1eoVSzp0xwt0zZCgyd36rVb4s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "baGwkBCVL+4expwbRUUPD03+y69w1GRGJPSOK5FTpgswGB0dxLVANpBKDOc1HleZtJdaMpcVwZsMVrM16PuVAQ"}}, "unsigned": {"age_ts": 1570043645376}} WQ> v D + X &  ^ , j  d 2  l : sOAyGM8S!zH\C{I21e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAT1e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU1e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW81e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA1e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cx1e$6PO7n0P7TEaP5rTdLUhxogAq14E89lgaqJbntt8a8Ygy1e$6Lsksuk0EZsTKeC1oyzJXO79d2xOkJu_TsIEt49LtnY1e$6LrSdCODMKusvFtoprm6tSqCRq8HH1Vlctnksi6j9_4U1e$6J5DM-9w9a8pfcCmzDAHioOO4cuP22Lr_VMJXVc8bUs1e$6GEdEI3s5blHcUywARf1hYX5aShTc9en0X_VcduSntU1e$6EDjvdz9-KfQmC6qTbfqMXfITw3h_931d9sN183DTmw1e$6BhyC9x2WKI3MUoMA7vqflYg3872lRvbr_dYGdJMv6o3$69:localhost:42455 1e$6983_cM5B0QEbmXa_Pfe7Kf9U3XGvbFEMgCv9m_xhTM3$68:localhost:42455 3$67:localhost:42455 3$66:localhost:42455 3$65:localhost:42455 #I$64_redaction2:localhost:42455 1e$64DrGVObzalD3h9QzY-Mxrh2vs7athPTD97d132kno4 =1e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbE#I$63_redaction1:localhost:42455 3$62:localhost:42455 1e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYS3$61:localhost:42455 ?$60_msg_e:localhost:42455 b1e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHM1e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpg1e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa41e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPk 1e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yo1e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6M1e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fw1e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkw1e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbas1e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VU1e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0 1e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pk1e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzs1e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyke1e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q1e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knls1e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8 40e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_461e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU1e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw #1e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA1e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk01e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa01e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B80e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwY0e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE 1e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7w_1e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o1e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqo1e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEM1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ)1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c1e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4h1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms81e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI?$59_msg_d:localhost:42455 a=$57_pl_x:localhost:42455 `3$56:localhost:42455 _1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA91e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE3$55:localhost:42455 X1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcw3$54:localhost:42455 L1e$53x3BxYVwThcLfCKdfZg4T7eMNrzyEkxZebW-PmntX8!3$53:localhost:42455 A1e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA1e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m01e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ  R~3Q3 $61:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3479}{"hashes": {"sha256": "9rM+B7cTKY16Zft+iH/1x/l7b4PM5G1/padeCKC1M3U"}, "sender": "@__ANON__-41:localhost:42455", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-41:localhost:42455", "depth": 6, "origin": "localhost:42455", "origin_server_ts": 1570043650075, "prev_events": [["$1570043648422SglHQ:localhost:8800", {"sha256": "5PaaXckigmyMRia95xwac+5GoXgcal0+FPHb79eb7G4"}]], "auth_events": [["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}], ["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043647421dmTZW:localhost:8800", {"sha256": "wrpWIlr98RjFanJegrxYb+D6Tcya3cZOT7Wb7RR6WyA"}]], "event_id": "$61:localhost:42455", "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "AHYtR8B73NcIsXoVXfuchd71Xw4ra6uMef17XAyNbMpa4lEExA/E77aQn8FzUbas88XlWCcbnyI53Q9ZHdgBBQ"}}, "unsigned": {}}x}QQa $1570043648422SglHQ:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3478}{"auth_events": [["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}], ["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}]], "prev_events": [["$1570043647421dmTZW:localhost:8800", {"sha256": "wrpWIlr98RjFanJegrxYb+D6Tcya3cZOT7Wb7RR6WyA"}]], "type": "m.room.history_visibility", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043648422SglHQ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043648552, "hashes": {"sha256": "XoCHt50GI2e6Eawwo5MkYGnYJZYbAQ4/Are4ihR6iwY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "vVBNH4Z2X1vvilFJ/wrdAFqsuZEWs22J/HmQUCKLhgB7koypdCPsClgybW+rBD/X+nSRSaBgxAayFyBXBrG8Bg"}}, "unsigned": {"age_ts": 1570043648552}}g|QQaq $1570043647421dmTZW:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800{"token_id": 649, "stream_ordering": 3477}{"auth_events": [["$1570043645418ABZkc:localhost:8800", {"sha256": "KVSRxdf0jgT9gre2FsyVJxcMTckwpuIr2Jmx/rZyJJ8"}], ["$1570043646419zIOAX:localhost:8800", {"sha256": "EsccbxJ/2HshkSd10VLuIc4DMpjGtbbNpt1WPnb0WKg"}], ["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}]], "prev_events": [["$1570043646420mPrhj:localhost:8800", {"sha256": "P0WFHNfTJWlJ6BUqj6CryO5Xt4D75DnIt2aldiDSUIs"}]], "type": "m.room.join_rules", "room_id": "!uGpSboYkgxVNOqNeUG:localhost:8800", "sender": "@anon-20191002_181700-669:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043647421dmTZW:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043647656, "hashes": {"sha256": "43NGXaBz3T+DwebiHfArjzWzEx4lxiTrz8UK0X78IP4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MAF7hm6sSp5peM2LZ+jQ2P6BRiDrWfwuJkohqW4HfuBgpeSCzYZTgXeE3/pAUUbzHtNKDRcHoNTKQnmUInPeCA"}}, "unsigned": {"age_ts": 1570043647656}} 8l D `8v]c!E@anon-20191002_181700-678:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN1TlAwWG82Wjk9TmJMRDcKMDAyZnNpZ25hdHVyZSDHdjUIYdq9G8F0xDwxNNiGp10yY1jHP_5lfgbrygQQEAoFCKGQLJFUT127.0.0.1Perl + Net::Async::HTTP/0.44m刨u]c!E@anon-20191002_181700-677:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5kQ1ZKeSpnWjBOMXpDZzAKMDAyZnNpZ25hdHVyZSDvrFbGbzHhL7WMUz9qiwsWyy9v9OiCjnvlvf0J4k3tgwoSLBVCRXVGV127.0.0.1Perl + Net::Async::HTTP/0.44mat]c!E@anon-20191002_181700-676:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGF5cU5tQToyYzlyO0k4RHMKMDAyZnNpZ25hdHVyZSADq7MqzKyy_m0CqQDCpNud6twUGnEKIU03PurEBK1pqwoKCVXVHDURO127.0.0.1Perl + Net::Async::HTTP/0.44mWރs]c!E@anon-20191002_181700-675:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGY1Q0ZueXl2aUM1WGVzLTcKMDAyZnNpZ25hdHVyZSCgGSKn6qoha4gSrVZ021fQ80uHRsn9NLcjTk7zXeemyQoROEGYOHAAM127.0.0.1Perl + Net::Async::HTTP/0.44m<r]c!E@anon-20191002_181700-674:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1NJmhzN1l5XmZ0aU07dDsKMDAyZnNpZ25hdHVyZSChh8ZI8Dry9A0VsLQ1li6T55q24bgp94HCldjEXAg0eQoGKOEAKYNVT127.0.0.1Perl + Net::Async::HTTP/0.44m+[q]c!E@anon-20191002_181700-673:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVTb2NBckU2Y3EsRSYxbE0KMDAyZnNpZ25hdHVyZSDPyX4pc-qbZ0xsQo-VcnrAwqx2vuZrB9EqeMLtqWnBKgoVPLLNWDDCE127.0.0.1Perl + Net::Async::HTTP/0.44m(ip]c!E@anon-20191002_181700-672:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDEweTZtaFRUSnlxcDo4ZWYKMDAyZnNpZ25hdHVyZSC8lRJbhIaczkjRtXE2g5igrkLzLDhFzWAr_nAHfr3h1QoNZHSLWNGNR127.0.0.1Perl + Net::Async::HTTP/0.44m*o]c!E@anon-20191002_181700-671:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHloRmQ2ZW5NMEQyYUZJbSMKMDAyZnNpZ25hdHVyZSBCXEPnkKQSd2PCJE6yU8lc7Hj-8RhHbpPxgU7-oUklzgoKUQBONAEMF127.0.0.1Perl + Net::Async::HTTP/0.44m #n]c!E@anon-20191002_181700-670:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhckxaeWRkNnJzNVcqT2YKMDAyZnNpZ25hdHVyZSC-iNsYtRiREK0FMa_Z9Vtzc6E0hnnSkmmc43mtmI8iUgoMCSVGGDMMK127.0.0.1Perl + Net::Async::HTTP/0.44mm]c!E@anon-20191002_181700-669:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG1IaH5ETjg9RGx6UDNjMEoKMDAyZnNpZ25hdHVyZSBexeQtyn-gs3AO47c68-lOQVsSDjy-kBL4aMjtebwO5woUUBRIPFVWO127.0.0.1Perl + Net::Async::HTTP/0.44me Q"P/   ^P 0 A p`!?a"@o Q<&EE@__ANON__-49:localhost:42455@__ANON__-49:localhost:42455<EE@__ANON__-35:localhost:42455@__ANON__-35:localhost:42455<%EE@__ANON__-48:localhost:42455@__ANON__-48:localhost:42455n$]@anon-20191002_181700-675:localhost:8800@anon-20191002_181700-675:localhost:8800 anon-20191002_181700-675n#]@anon-20191002_181700-674:localhost:8800@anon-20191002_181700-674:localhost:8800 anon-20191002_181700-674n"]@anon-20191002_181700-673:localhost:8800@anon-20191002_181700-673:localhost:8800 anon-20191002_181700-673v`lqv@GTZV/eL$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYsha256~E{q^*)(95E <v8D~V.eL$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWEsha256c L6[ ‡Z)EaV-eL$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNosha256u|b-IQ\;i|`1TV,eL$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOosha256>/f.UʰZ,xABbPV+eL$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScsha256~G0MId~62y jvK'V*eL$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Isha256g&,3u ޗ0$P;JV)eL$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEsha256@g//Km9MkLtV(eL$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcsha256Q[1{oYqO3rV'eL$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4sha256LRE2!9жE?8V&eL$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmREsha256DI*ۆRh?1=$EJ`V%eL$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYsha2567(Iʴ@@'nlW@vV$eL$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gsha256oxaPmi^gPhx d|9'=3L$75:localhost:42455sha256 _XP6`3wr(tyѵ =3L$74:localhost:42455sha256dןr0E~ ߥ{T`KVeL$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAsha256}G5ތË_1I1UqVeL$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0sha256 b#wnGTY!WEB,=R}VeL$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYsha256`h jW'kb9^|Y#Yn>VeL$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIsha256{GVgp^tx' 8Gg2`TEVeL$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIsha2562BI6tVʢ;HLlgG#2VeL$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJssha256T~%梡Ħ"^)vQvaP"=̛LQL$1570043670433bjAzo:localhost:8800sha256PiV>X\$Θ?)KMLQL$1570043668432TfiHj:localhost:8800sha256>-BqxLzd?o 2tUa[3DF5"(U,|#ًHIL$63_redaction1:localhost:42455sha256Wa6>bw>g{Z7=3L$62:localhost:42455sha256u߅eEc,vCdjx+-; *7y s 2 e #  < R]7o};DBcQ' e s!SrwdtDytJDUBVZOueF:localhost:8800m.room.create$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSukcQ' e r!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI?3/ 3 q!13:localhost:42455m.room.join_rules$79:localhost:42455W3'E3 q!13:localhost:42455m.room.member@__ANON__-51:localhost:42455$80:localhost:42455;3' 3 q!13:localhost:42455m.room.create$77:localhost:42455A33 3 p!13:localhost:42455m.room.power_levels$81:localhost:42455r3']Q o!13:localhost:42455m.room.member@anon-20191002_181700-677:localhost:8800$1570043683436iTOlZ:localhost:8800?3/ 3 o!13:localhost:42455m.room.join_rules$79:localhost:42455;3' 3 o!13:localhost:42455m.room.create$77:localhost:42455W3'E3 o!13:localhost:42455m.room.member@__ANON__-51:localhost:42455$80:localhost:42455W3'E3 o!13:localhost:42455m.room.member@__ANON__-50:localhost:42455$78:localhost:42455P33 Q n!12:localhost:42455m.room.power_levels$1570043681435TWaFw:localhost:8800r3']Q m!12:localhost:42455m.room.member@anon-20191002_181700-676:localhost:8800$1570043680434abJWo:localhost:8800W3'E3 m!12:localhost:42455m.room.member@__ANON__-49:localhost:42455$75:localhost:42455;3' 3 m!12:localhost:42455m.room.create$74:localhost:42455?3/ 3 m!12:localhost:42455m.room.join_rules$76:localhost:42455Q'Ee l!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAQ'Ee k!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455$lMtzuHp1gQo346tnaBIF9nMcd9qLO1eO8b5L-p0g8A8o Q? e j!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.history_visibility$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0g Q/ e i!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.join_rules$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYi Q3 e h!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.power_levels$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI Q']e g!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@anon-20191002_181700-675:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIc Q' e f!nhbUIcIbhuXkRqfeDa:localhost:8800m.room.create$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJsr3']Q e!11:localhost:42455m.room.member@anon-20191002_181700-674:localhost:8800$1570043670433bjAzo:localhost:8800r3']Q d!11:localhost:42455m.room.member@anon-20191002_181700-673:localhost:8800$1570043668432TfiHj:localhost:8800W3'E3 d!11:localhost:42455m.room.member@__ANON__-47:localhost:42455$72:localhost:42455?3/ 3 d!11:localhost:42455m.room.join_rules$73:localhost:42455;3' 3 d!11:localhost:42455m.room.create$71:localhost:42455r3']Q c!10:localhost:42455m.room.member@anon-20191002_181700-672:localhost:8800$1570043664431IMLSL:localhost:8800W3'E3 c!10:localhost:42455m.room.member@__ANON__-46:localhost:42455$69:localhost:42455;3' 3 c!10:localhost:42455m.room.create$68:localhost:42455?3/ 3 c!10:localhost:42455m.room.join_rules$70:localhost:42455q1']Q b!9:localhost:42455m.room.member@anon-20191002_181700-671:localhost:8800$1570043660430kLPpN:localhost:8800V~1'E3 b!9:localhost:42455m.room.member@__ANON__-45:localhost:42455$66:localhost:42455>}1/ 3 b!9:localhost:42455m.room.join_rules$67:localhost:42455:|1' 3 b!9:localhost:42455m.room.create$65:localhost:42455]{Q/ Q a!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800fzQ'E3 a!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455YyQ' Q a!SnROoiDBapNNtMmKnT:localhost:8800m.room.create$1570043652424mkkFn:localhost:8800_xQ3 Q a!SnROoiDBapNNtMmKnT:localhost:8800m.room.power_levels$1570043654426seixP:localhost:8800]wQ/ Q `!SnROoiDBapNNtMmKnT:localhost:8800m.room.join_rules$1570043655427tEtWD:localhost:8800fvQ'E3 `!SnROoiDBapNNtMmKnT:localhost:8800m.room.member@__ANON__-43:localhost:42455$62:localhost:42455 F\IOq?  w E  } K  Q  W %  ] +c1i\7o= {uC$V+11e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ ;1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAp1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 311e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 81e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 O1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 z1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w +1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA _1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEk1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY i1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc91e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A "1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkI1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ @1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ.1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A k1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI,1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 71e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIJ1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo%1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YD1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ,1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk\1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw@1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksX0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc|1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 2 @ 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 24 13 02 /1 .0 -/ ,. +- *, )+ (* ') &( %' $& #% "$ !# " !                                                                                                                                                                      ~  z  }  {  z ~ y } x | w { v z u y t x s w r v p u o t m s l r j q i p h o g n f m e l d k c j b i a h ` g _ f ] e \ d [ c Z b Y a X ` W _ U ^ T ] S \ R [ Q Z P Y O X N W M V K U J T I S H R G Q F P D O C N B M A L @ K ? J > I = G < F ; H ; E ; D 9 C 8 B 7 A 6 @ 5 ? 4 > 4 = 2 < 1 ; 0 : / 9 . 8 - 7 , 6                                                                               ~ }~ |} {| y{ zz xy wx vw uv tu st rs qr pq op no mn lm kl jk ij hi gh fg ef de cd bc ab `a _` ^_ ]^ \] [\ Z[ YZ XY WX VW UV TU ST RS QR PQ OP NO MN LM KL JK IJ HI FH EG DF CE BD AC @B ?A >@ =? <> ;= :< 9; 8: 79 68 57 46 35 C V#S Pe2btQN~I1 yD? . + ^ & [  d a / a , 4 g2]@anon-20191002_181700-730:localhost:8800a4]@anon-20191002_181700-723:localhost:8800m4]@anon-20191002_181700-713:localhost:8800m4]@anon-20191002_181700-722:localhost:8800m2]@anon-20191002_181700-723:localhost:8800a2]@anon-20191002_181700-722:localhost:8800a4]@anon-20191002_181700-721:localhost:8800m4]@anon-20191002_181700-720:localhost:8800m2]@anon-20191002_181700-721:localhost:8800a2]@anon-20191002_181700-720:localhost:8800a4]@anon-20191002_181700-719:localhost:8800m4]@anon-20191002_181700-718:localhost:8800m2]@anon-20191002_181700-718:localhost:8800a2]@anon-20191002_181700-719:localhost:8800a4]@anon-20191002_181700-717:localhost:8800m4]@anon-20191002_181700-716:localhost:8800m2]@anon-20191002_181700-717:localhost:8800a2]@anon-20191002_181700-716:localhost:8800a4]@anon-20191002_181700-715:localhost:8800m4]@anon-20191002_181700-714:localhost:8800m2]@anon-20191002_181700-715:localhost:8800a2]@anon-20191002_181700-714:localhost:8800a0[@anon-20191002_181700-70:localhost:8800a|2]@anon-20191002_181700-709:localhost:8800a4]@anon-20191002_181700-708:localhost:8800m2]@anon-20191002_181700-708:localhost:8800a2]@anon-20191002_181700-707:localhost:8800a4]@anon-20191002_181700-706:localhost:8800m2]@anon-20191002_181700-706:localhost:8800a2]@anon-20191002_181700-705:localhost:8800a a2]@anon-20191002_181700-704:localhost:8800a2]@anon-20191002_181700-703:localhost:8800a4]@anon-20191002_181700-702:localhost:8800m2]@anon-20191002_181700-702:localhost:8800a4]@anon-20191002_181700-701:localhost:8800m2]@anon-20191002_181700-701:localhost:8800a4]@anon-20191002_181700-700:localhost:8800m2]@anon-20191002_181700-700:localhost:8800a2]@anon-20191002_181700-731:localhost:8800a4]@anon-20191002_181700-729:localhost:8800m4]@anon-20191002_181700-728:localhost:8800m2]@anon-20191002_181700-729:localhost:8800a2]@anon-20191002_181700-728:localhost:8800a4]@anon-20191002_181700-727:localhost:8800m4]@anon-20191002_181700-726:localhost:8800m2]@anon-20191002_181700-726:localhost:8800a2]@anon-20191002_181700-727:localhost:8800a4]@anon-20191002_181700-725:localhost:8800m4]@anon-20191002_181700-724:localhost:8800m2]@anon-20191002_181700-725:localhost:8800a2]@anon-20191002_181700-724:localhost:8800a2]@anon-20191002_181700-732:localhost:8800a4]@anon-20191002_181700-704:localhost:8800m 32]@anon-20191002_181700-733:localhost:8800a4]@anon-20191002_181700-732:localhost:8800m4]@anon-20191002_181700-731:localhost:8800m4]@anon-20191002_181700-730:localhost:8800m02[@anon-20191002_181700-71:localhost:8800m0[@anon-20191002_181700-71:localhost:8800a}2]@anon-20191002_181700-713:localhost:8800a4]@anon-20191002_181700-712:localhost:8800m2]@anon-20191002_181700-712:localhost:8800a4]@anon-20191002_181700-711:localhost:8800m2]@anon-20191002_181700-711:localhost:8800a4]@anon-20191002_181700-710:localhost:8800m2]@anon-20191002_181700-710:localhost:8800a2[@anon-20191002_181700-70:localhost:8800m~ k [k{ 33aU $68:localhost:42455!10:localhost:42455{"outlier": true, "stream_ordering": 3496}{"prev_events": [], "origin_server_ts": 1570043664421, "content": {"creator": "@__ANON__-46:localhost:42455"}, "auth_events": [], "event_id": "$68:localhost:42455", "sender": "@__ANON__-46:localhost:42455", "hashes": {"sha256": "xZD5Xo9O20dg4loaWRewTK3dOc175uuQGLgZjwamwaU"}, "depth": 0, "state_key": "", "origin": "localhost:42455", "room_id": "!10:localhost:42455", "type": "m.room.create", "signatures": {"localhost:42455": {"ed25519:1": "mBM3zKbx0ZfrKumx2LG0SbpszZ8FMJdZ7dK1eEc1T6H14x6rfrTnRWlmXk90XKacaYzSqGn6kxBUiWDeYmYwAA"}}, "unsigned": {}} Q1?u $1570043660430kLPpN:localhost:8800!9:localhost:42455{"stream_ordering": 3495}{"sender": "@anon-20191002_181700-671:localhost:8800", "prev_events": [["$67:localhost:42455", {"sha256": "E8ulBCuCWKHD+ZEhyiqoTKIKBT802MYOSTo1snE1hCQ"}]], "room_id": "!9:localhost:42455", "auth_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}], ["$67:localhost:42455", {"sha256": "E8ulBCuCWKHD+ZEhyiqoTKIKBT802MYOSTo1snE1hCQ"}]], "type": "m.room.member", "depth": 3, "state_key": "@anon-20191002_181700-671:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-671", "avatar_url": null}, "prev_state": [], "event_id": "$1570043660430kLPpN:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043660591, "hashes": {"sha256": "UK8buBaA25VkVPM12jeGLaVODvW8pJ/OhVyU4V3vTuE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xDdqWqgR1/2mKRhvh/mqqLyDeUg05J/zZk7CMr/FBWz38laJgUgGD1JS53ISr/TaX2h/FhK7vPY8D9FCq8UIBA"}}, "unsigned": {"age_ts": 1570043660591}}a 31a# $67:localhost:42455!9:localhost:42455{"outlier": true, "stream_ordering": 3491}{"hashes": {"sha256": "E8ulBCuCWKHD+ZEhyiqoTKIKBT802MYOSTo1snE1hCQ"}, "sender": "@__ANON__-45:localhost:42455", "type": "m.room.join_rules", "room_id": "!9:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 2, "origin_server_ts": 1570043660574, "prev_events": [["$66:localhost:42455", {"sha256": "T0aECiv1MrLgcW8q77jt9GLkTL+OVPuQ3A5n1cVTXeM"}]], "event_id": "$67:localhost:42455", "auth_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}], ["$66:localhost:42455", {"sha256": "T0aECiv1MrLgcW8q77jt9GLkTL+OVPuQ3A5n1cVTXeM"}]], "content": {"join_rule": "public"}, "signatures": {"localhost:42455": {"ed25519:1": "L0U3E6ew3Aj+7yeUJA/K5UdOFDKWeidPFuHJtjO9zhc3z96zaoKbVrd6g/x4gJtjXMd8Qjc45TwEgCKjDyFJDQ"}}, "unsigned": {}}$ 31a) $66:localhost:42455!9:localhost:42455{"outlier": true, "stream_ordering": 3490}{"origin_server_ts": 1570043660573, "prev_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}]], "auth_events": [["$65:localhost:42455", {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}]], "event_id": "$66:localhost:42455", "content": {"membership": "join"}, "hashes": {"sha256": "T0aECiv1MrLgcW8q77jt9GLkTL+OVPuQ3A5n1cVTXeM"}, "sender": "@__ANON__-45:localhost:42455", "room_id": "!9:localhost:42455", "type": "m.room.member", "state_key": "@__ANON__-45:localhost:42455", "depth": 1, "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "gJWCwUkTPTQ1Hpjl7Aby9+EGXWBq0iTAYPomlz+tLtjwk9+lTb+62DJ+H/ZbE4CtMO6xDLw6/zob2GoNm9YDDg"}}, "unsigned": {}}y31aS $65:localhost:42455!9:localhost:42455{"outlier": true, "stream_ordering": 3489}{"hashes": {"sha256": "62h44dzgtVa8PE+fzESTQOq3ApTT/EGSo9n0nJ8/CBM"}, "sender": "@__ANON__-45:localhost:42455", "type": "m.room.create", "room_id": "!9:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 0, "origin_server_ts": 1570043660573, "prev_events": [], "event_id": "$65:localhost:42455", "auth_events": [], "content": {"creator": "@__ANON__-45:localhost:42455"}, "signatures": {"localhost:42455": {"ed25519:1": "n3/kpGzrsaDknA1+C8OyjLN1R6XMYmIr72VLxy90kOsreqtfCztnTpqOFTytBRwTMn8jrAWztArrmKUY8csQCg"}}, "unsigned": {}} F\IOq?  w E  } K  Q  W %  ] +c1i\7o= {uC$V+11e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI 1e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s 1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z8 1e$BAXU3ORfrRkklbqDhdNGJSX1ORuftnoI06nV5KeSHHo 1e$BG1_J6xEGeNjhynOlMU5y2p4cqvsmO-0yX7jslzupqQ ;1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAj1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA 311e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI 81e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 M1e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98 z1e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5w +1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA ]1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEk1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY g1e$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg1e$BBx9balpi9tQL6gYsaM_Eh5eZiwrUJRw6LfmXqCxxSs1e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc91e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A "1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkI1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ @1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ.1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY 1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A k1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI,1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsm1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 71e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIJ1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 1e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo%1e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl481e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73YD1e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ,1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk\1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw@1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-MksX0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNc|1e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8 2 -o [  ]  _ a  b ZV dghWoinlmeQTeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800|TeQ$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg!QnmLrBAxeItdHsaxWf:localhost:8800TeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800TeQ$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4!CSqENqzAezaZnGktbE:localhost:8800TeQ$xzVMkj1im7ycpTEVmK-SexCNxVRJgL3bhLZ44ZM0REQ!pJUItjYTOUJQFIxyiX:localhost:8800TeQ$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow!mvgUHEsfGqDkPQUvfG:localhost:8800TeQ$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4!NFWKQvZkIwvecnREOC:localhost:8800TeQ$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX4!bnTuVBaAJTPbcYZtRl:localhost:8800TeQ$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA!ZaltdIYVZjCHsCWTZD:localhost:8800SeQ$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI!JusxqeECtidaPlWqhp:localhost:8800USeQ$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTc!cSUQGmpIsSCBAVTOHo:localhost:8800/TeQ$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo!DnUHoxreGexNmjSVpq:localhost:8800UTeQ$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA!XcaKxZsPvbZhAGKKdx:localhost:8800TeQ$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjo!TlJCaYlCkOOVzFDlLx:localhost:8800XTeQ$wxwNCSmtP28aDWiLPugDdguY--Oyu_wFTKsXWb9Pruk!NQgavrmiCPUVaVjssy:localhost:8800TeQ$w_NhaB9FQsTnLu_Q7mgXJUBnXXrjA0qyazX1TorydVo!zsXPhIPzeXXLvuazzQ:localhost:8800~TeQ$wSsVMa4EbzUvdSw0hg1n2iZFBpG0rFwqFFAk3awH1xI!EyyNoldCLUdFHzXTDP:localhost:8800 TeQ$wQSaGTxaP9sw4dJ_mMQUQeZq34gNv-04A_I_rYcZocw!zoTQAhGwmDDUECKtbL:localhost:8800TeQ$wMhuaL1yH0Q-50BU5Y6t5Byf0E5BgPVw36RebBK_jng!kjueCKHmYaYefEEpQY:localhost:8800CReQ $wIws02QaOMP_NPxlHNR6O-q1jpzDLAzFGESBqgIAEZ0!zNCItZNbpkZKuufRhC:localhost:8800TeQ$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c!xvblqEscwOtCqJntfF:localhost:8800TeQ$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg!sJnuQYOyruhUpXDsLY:localhost:8800HSeQ$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns!OqPpVlCwmKdAUlwrXI:localhost:8800WTeQ$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIA!zuCqeooOnfWkYrQdxA:localhost:8800TeQ$v68dvU7284jKPLZrnjvH33ITZd2tXnrLk5b0ZxRh_Hk!SfYtaUhCFosNfHfUVm:localhost:88006TeQ$umfvxzBHS5ulNSYhnJTdJA5D3_sMnDEIMTRxVYdIjbI!csWEXfVEVxdviNvgAd:localhost:8800mTeQ$ulpdaghSlWjg5lvp9ApFqGyZB9IM6UGoFwQn8nCnmBo!CNFopUEQTFbzjmLvii:localhost:8800TeQ$uYexDiMiTNW7sbvoR9bypU68-bBWnFattGw4xxh2n5Q!ifQxHmNAcSSGHVMjfi:localhost:8800TeQ$uX4jhm23bMD3qNLGWGIB2hTh_RmlUl4bqBm5jW22LYQ!NPdjmIfsBVIIkvWBzD:localhost:88005SeQ$uK6e8FGcJ-N6F3tMQl7Iz2hnMhTKV1vJH3vbtyrHjnc!LaLcEGFLpjdlYlYKGC:localhost:8800SeQ$uHd8a1z70KxZlU5E_CQi4iHFBtL-EYGaftDbtvFimKU!CgVBWWcRJoHEcwoLcq:localhost:8800>TeQ$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxM!bNSXSTadOMhIrYpMzH:localhost:8800YTeQ$t8AO2DNspyXo_2yMkQn3s3qKhYgfQHACM6Ku3yhzxI0!QMrkSPlQDGborAyWtQ:localhost:8800{SeQ$t2EdBOFRiv78F4ViryQu8bQcqFycmSlej5UsA5rfIPs!aWJOsiuJONOvjKWEjO:localhost:8800TeQ$szYF8Y908esSX9pSWTw_728_iy9LzXAEjeIowS6_bXc!zoTQAhGwmDDUECKtbL:localhost:8800TeQ$sh1ndJpLsxxYTZ7Ys1aJdwhEpwhLgv_YzqMXiAhjHII!aaRwQZdNAliyvRHpjs:localhost:8800TeQ$sXHGUn4aYJJOSsX98oH6QT70oXyVxMxAxSjtTqv0cOU!hSzBsirdPWHtVjagXn:localhost:8800TeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800{TeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo!SrwdtDytJDUBVZOueF:localhost:8800STeQ$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc!vnFXnkCSfTbsSNKrtg:localhost:8800;STeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800TeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800TeQ$sZgWnAs_iLePcWYSR4XxLZtUdnehsxnI3SXydQ2L9B4!VUibrTIkcRbfrogbQV:localhost:8800TeQ$uyfHT93I40qkfY6u53DR2VjcbYk4BUv_xzWq3lG3HmY!OCEHAjcOXWNyWIESIS:localhost:8800TeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY!OXpGdKbowFUTChPdmF:localhost:8800U )j8p? y G  O   U # [h ) a /61e$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegoW1e$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcR1e$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE80e$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwk'1e$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5o1e$DDUXmC5tOf3q_WvNRy-FWIsK34OKf4ieA6Ded23ACpM1e$D8gds67rczVxHJ8UN6xXZ1cFR9jmCgwFDg8q4+L1cBU91e$D7av_K3TKZD0HC6lidADmYMDCGHU4R_lKZCMD28abkw1e$D4RfyBsP-2qxajjCKUBypM1J6CqPQceerRjyH5-UvR41e$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ1e$CunTX20bqmBwOV9E8osIP3WyDIk8qXvOxHddmBZFItY31e$CicZf0sADJNXbWwAmC5J-y6BRvG7ek_6qu1ybdQQ__c1e$CWmKo3Uh4yjduHpKTzAtD2wlvd-GV-sp-FgVVzUKhQoL1e$CWJ6oruUXhTeKqDBvxDALXZAMD0YBFry-oTAnaTj7ek1e$CViBpusqBTCxR2J1YQnd2wFlfdeQMsjXTg-8GEFT9CA1e$CUJD4AWzdpXZaPONdLCf-QYbr9rmLLcBfdPywZgJWT4'1e$CUH9WKzr64OIYDC4NJmAADlasSy5JNrkqlolWPjP7Ig?1e$CR1llD_lzY_5tcCNwlq4cVQOxm_4JgEkevjJ4TCIuJ0!1e$CKZx3mxBFIB5axssqPXP4NRfNLmyBQRpn5-52TiLh6E1e$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieo1e$C78VCQsEyCYrzDiMzfOIFD43V82Fyy5vfe2jBwgCD6g1e$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8q1e$C43M15GZIHxc1VlegnaEDsyL61moKs9j3Ew-im7AyS00e$C2gnbOqleQKKdIMCDBfGhFtih0J_obNukpbZBxZ4r_w1e$C00l5wqHYEA8gRDgyuSzy6YRDm_7piyw93v5MMTGE701e$C-GQQbNuM5KECtRTvmT9_R86eGIqfTGmmIyYW36apk00e$ByCtnh-0CFkwNl1gNXkKUmXCND1Nn7RSSSyRVj0L_Pc[1e$BvF61ncMePzuELRgHHLikS24oeVKPWgMQ3MX9G1IF7I$1e$BtmlXPy6vee96xp4SkAiIP8gbyMr1lr3CsZr5Oa73pM1e$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h881e$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwk/e $Bd5FEg_k7NLOJzP3ZNQ9Dvf4IBeObqZ1ENDaF6UzAGA0e$BSRWO3vZe5s3rbxNhXvy52s0zCxOAG7kkWHJkq6txGEV1e$BC7PyuhQM4KigzV9SYnMcg3UXTMN7PeBqzf5D7CM_z81e$B8nYwYftkPl3_RYR-xGKWUGz25PgC6FpINsTWVXk9Gc=1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkk1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8cx [!;r7J; c u   > y =jv6[9C[ZXz31'E$66:localhost:42455!9:localhost:42455m.room.member@__ANON__-45:localhost:42455join 3'3 E$75:localhost:42455m.room.member!12:localhost:42455mWmX_@__ANON__-49:localhost:42455j=3'3 E$74:localhost:42455m.room.create!12:localhost:42455mWmX_@__ANON__-49:localhost:42455<e'Q E$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAm.room.member!nhbUIcIbhuXkRqfeDa:localhost:8800mPmQy@__ANON__-48:localhost:42455,;e?Q ]$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0m.room.history_visibility!nhbUIcIbhuXkRqfeDa:localhost:8800mJzmL@anon-20191002_181700-675:localhost:8800$:e/Q ]$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYm.room.join_rules!nhbUIcIbhuXkRqfeDa:localhost:8800mGBmHB@anon-20191002_181700-675:localhost:8800&9e3Q ]$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qIm.room.power_levels!nhbUIcIbhuXkRqfeDa:localhost:8800mD;mEY@anon-20191002_181700-675:localhost:8800 8e'Q ]$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIm.room.member!nhbUIcIbhuXkRqfeDa:localhost:8800m@mAt@anon-20191002_181700-675:localhost:88007 e'Q  ]$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJsm.room.create!nhbUIcIbhuXkRqfeDa:localhost:8800m=am=@anon-20191002_181700-675:localhost:88006Q'3 ]$1570043670433bjAzo:localhost:8800m.room.member!11:localhost:42455m0Am2@anon-20191002_181700-674:localhost:88005Q'3 ]$1570043668432TfiHj:localhost:8800m.room.member!11:localhost:42455m(wm*@anon-20191002_181700-673:localhost:8800p13/3 E$73:localhost:42455m.room.join_rules!11:localhost:42455m(`m(@__ANON__-47:localhost:42455j0 3'3 E$72:localhost:42455m.room.member!11:localhost:42455m(_m(@__ANON__-47:localhost:42455j/3'3 E$71:localhost:42455m.room.create!11:localhost:42455m(^m(@__ANON__-47:localhost:42455.Q'3 ]$1570043664431IMLSL:localhost:8800m.room.member!10:localhost:42455m4m>@anon-20191002_181700-672:localhost:8800 XN~J s ? o ;  k 7  g 3 a F |HxDrW-yO% Z0mC%k7g31Ae$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g 1@e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU 1?e$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA 1>e$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc 1=e$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU 1<e$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU 1;e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ 1:e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE 19e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU '8Q$1570043754467mNKfq:localhost:8800 79$98_m2:localhost:42455 6;$97_sf2:localhost:42455 5;$96_sf1:localhost:42455 49$95_m1:localhost:42455 '3Q$1570043750466Tmiqu:localhost:8800 23$94:localhost:42455 '1Q$1570043748464QpNXV:localhost:8800 '0Q$1570043748463euAqZ:localhost:8800 '/Q$1570043747462YuUEF:localhost:8800 '.Q$1570043746461eQhrq:localhost:8800 '-Q$1570043745460sJOiY:localhost:8800 ',Q$1570043744459BIUYb:localhost:8800 +;$93_sf2:localhost:42455 *;$92_sf1:localhost:42455 )9$91_m1:localhost:42455 '(Q$1570043741458PZvre:localhost:8800 '3$90:localhost:42455 '&Q$1570043739456qeuuS:localhost:8800 '%Q$1570043738455KNDHf:localhost:8800 '$Q$1570043737454adOjg:localhost:8800 '#Q$1570043736453VtbeL:localhost:8800 '"Q$1570043736452Igyim:localhost:8800 !3$89:localhost:42455  3$88:localhost:42455 'Q$1570043733451EJhWh:localhost:8800 3$87:localhost:42455 'Q$1570043730449XMaNb:localhost:8800 'Q$1570043729448XmFHA:localhost:8800 'Q$1570043728447IkYro:localhost:8800 'Q$1570043727446CGYaE:localhost:8800 'Q$1570043726445lSnmj:localhost:8800 1e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ 1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE 1e$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko A$86_sent_F:localhost:42455 A$85_sent_E:localhost:42455 %M$84_backfilled_D:localhost:42455 'Q$1570043715443SSqOY:localhost:8800  3$82:localhost:42455 ' Q$1570043713441WJPkP:localhost:8800 ' Q$1570043712440rfNzQ:localhost:8800 ' Q$1570043712439XdJFc:localhost:8800 ' Q$1570043711438bqOHL:localhost:8800 'Q$1570043710437aFoBB:localhost:8800 1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko 1e$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE 1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY 1e$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE ~1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo z1e$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo }1e$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc {1~e$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I z1}e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE y1|e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc x1{e$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4 w1ze$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE v1ye$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY u1xe$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g t1we$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk s1ve$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI ru3$81:localhost:42455 p'tQ$1570043683436iTOlZ:localhost:8800 o'sQ$1570043680434abJWo:localhost:8800 m1re$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA l1qe$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0 j1pe$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY i1oe$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI h1ne$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI g1me$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs f'lQ$1570043670433bjAzo:localhost:8800 e'kQ$1570043668432TfiHj:localhost:8800 d'jQ$1570043664431IMLSL:localhost:8800 c F:vO(z> N  ^ " f * n 2 n 2n*v FF Vf*v:9J Q !QWLJZmJqjWZjVOjdYF:localhost:8800publicshared9I Q !ZWANpHlizyLrUiVvAm:localhost:8800publicshared9H Q !TkluVzxeeCbMtbFWWS:localhost:8800publicshared9G Q !ELBgBaMSIMNkjFSumH:localhost:8800publicshared9F Q !CKNftKKCaOCVUyYWNY:localhost:8800publicshared9E Q !cvXpMzcxNNhsNttxvt:localhost:8800publicshared9D Q !jlGSdNttccYxjfLkwW:localhost:8800publicshared9C Q !ZNIjCvcWhgcwskanjT:localhost:8800publicshared9B Q !NJdkYMskQwIpIWlWkn:localhost:8800publicshared9A Q !jGQNGXehugtTvjUGKI:localhost:8800publicshared9@ Q !VNdqhtoDkyMoQdMTtM:localhost:8800publicshared9? Q !ulbQzxdPXzuvNoqqgU:localhost:8800publicshared9> Q !pTvdDtkgovsIdAdxCm:localhost:8800publicshared9= Q !vxEMWYTUdzvLyVZNzJ:localhost:8800publicshared9< Q !CAGaRyRvrohDRBsrWH:localhost:8800publicshared9; Q !hNCwypIzdDZDVmCEfd:localhost:8800publicsharedA: Q !eZjhYVNpwdogVDKHCk:localhost:8800invitesharedcan_joinA9 Q !sBcwyPoXKgnSGVTjNR:localhost:8800invitesharedcan_join98 Q !WgXzOXLTeqaGfiDFhL:localhost:8800publicsharedA7 Q !LFBhoxJpmBqFrwEzGP:localhost:8800invitesharedcan_joinA6 Q !URpLZLuBfVcfHVTBGS:localhost:8800invitesharedcan_join95 Q !YaLuQzmJKSMTSFEqjO:localhost:8800publicsharedf094 Q !cOFSwLSkxZECJMvjjZ:localhost:8800publicshared93 Q !eGEEtFXUXuZDImkeql:localhost:8800publicshared92 Q !ZOpRjvUhkWYJBFJZeO:localhost:8800publicshared91 Q !BPNyKqmwcpGxIbGFZG:localhost:8800publicsharedA. Q !NcJYmIbgjsaKJOzBcs:localhost:8800invitesharedcan_join9/ Q !qtelAHlSkrqEFmlCqS:localhost:8800publicshared 90 Q !ZOwibbprUCQrSJQCrx:localhost:8800publicshared9- Q !biBIcqnGelHvLnpkOu:localhost:8800publicsharedA* Q !aiOswwhoZqjhcjzbzc:localhost:8800invitesharedcan_join9+ Q !BKZJsoFNhiLTDYNclB:localhost:8800publicshared9, Q !yNfCaBMPezurwkJRAX:localhost:8800publicshared9) Q !IYxUkyFHOgvhLpdkOA:localhost:8800publicshared9( Q !anErKtXIsVKEEsrzWM:localhost:8800publicshared9' Q !TcCLuIBUrtFqghDgay:localhost:8800publicsharedA& Q !yWhIsLsgNVGcnELrDS:localhost:8800invitesharedcan_join9% Q !wCsDjKBtuUbrmZgjsB:localhost:8800publicshared9$ Q !SpXEytywhTbAftyVBr:localhost:8800publicshared9# Q !itfjLXhEaORJLkbfVS:localhost:8800publicsharedA" Q !GsjDgpaxdwYfnefiWO:localhost:8800invitesharedcan_join9! Q !jomrpmwwQQtghscizn:localhost:8800publicshared9 Q !ABHbfUdkHCJksMsaUt:localhost:8800publicshared9 Q !DntdfAPfCfgdOoRMdl:localhost:8800publicshared9 Q !THHfVSOSWiBQTHRAnJ:localhost:8800publicshared9 Q !KetCYFxrTxawNOGnOf:localhost:8800publicshared9 Q !JiUawCFQnodcpssOfK:localhost:8800publicshared9 Q !NgkQVVUNzoyCVPtckM:localhost:8800publicshared9 Q !lgejtcwlywOoIXwEgy:localhost:8800publicshared9 Q !PUIxAaiCnbqaVbawGu:localhost:8800publicshared9 Q !OJilSqnQvLgoXSqRaW:localhost:8800publicshared9 Q !SrwdtDytJDUBVZOueF:localhost:8800publicshared9 Q !PVyTvKbqnjSXfGWAMy:localhost:8800publicshared6$ 3 !13:localhost:42455public$ 3 !12:localhost:42455public9 Q !nhbUIcIbhuXkRqfeDa:localhost:8800publicshared$ 3 !11:localhost:42455public$ 3 !10:localhost:42455public >%. Y  B m KX er! .^  :k M `  s $>P]Q@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800RP]Q@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800QP]Q@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:8800PP]Q@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:8800OP]Q@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:8800NP]Q@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:8800MP]Q@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800LP]Q@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800KP]Q@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800JP]Q@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800IP]Q@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800GP]Q@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800EP]Q@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800CP]Q@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800AP]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800?P]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800= 'N[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800P]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800;P]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800:A]3@anon-20191002_181700-677:localhost:8800!13:localhost:424559A]3@anon-20191002_181700-676:localhost:8800!12:localhost:424556P]Q@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:88003A]3@anon-20191002_181700-674:localhost:8800!11:localhost:424552A]3@anon-20191002_181700-673:localhost:8800!11:localhost:424551A]3@anon-20191002_181700-672:localhost:8800!10:localhost:42455/@]1@anon-20191002_181700-671:localhost:8800!9:localhost:42455-P]Q@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800*N[Q@anon-20191002_181700-66:localhost:8829!cosGKKhHvKaVukBCic:localhost:8800N[Q@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800#N[Q@anon-20191002_181700-70:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800!N[Q@anon-20191002_181700-68:localhost:8800!GGTWnzJfvPQBgQqDIE:localhost:8800 P]Q@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800ZP]Q@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800YP]Q@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800XP]Q@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800WP]Q@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800VP]Q@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800U 1^ k x ' 4 A N [ hu$1>KXer!P]Q@anon-20191002_181700-554:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800P]Q@anon-20191002_181700-552:localhost:8800!zHBgbzUZHshNGZvIBS:localhost:8800P]Q@anon-20191002_181700-551:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-550:localhost:8800!cidyuyekVzJHHvyomb:localhost:8800P]Q@anon-20191002_181700-549:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800P]Q@anon-20191002_181700-548:localhost:8800!pduebXnTyxQWVxEICp:localhost:8800P]Q@anon-20191002_181700-545:localhost:8800!ZvLVbnHjeymRiFIkYr:localhost:8800P]Q@anon-20191002_181700-543:localhost:8800!VUibrTIkcRbfrogbQV:localhost:8800P]Q@anon-20191002_181700-541:localhost:8800!WpThtNEVhrUbUdCdMJ:localhost:8800P]Q@anon-20191002_181700-539:localhost:8800!vRmMcoJDeCupADwqac:localhost:8800P]Q@anon-20191002_181700-538:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-537:localhost:8800!fGkUEndqGrieltwbCh:localhost:8800P]Q@anon-20191002_181700-536:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-535:localhost:8800!atnRTMliktaVUhMVID:localhost:8800P]Q@anon-20191002_181700-534:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-533:localhost:8800!PHkVrXAyfGkFtzSagu:localhost:8800P]Q@anon-20191002_181700-532:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-531:localhost:8800!EhFUhsgQbBWmrnGmaz:localhost:8800P]Q@anon-20191002_181700-521:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-520:localhost:8800!wBkUBAjOznOyxrLchl:localhost:8800P]Q@anon-20191002_181700-518:localhost:8800!sHRHoXzYrrPSlWBkoh:localhost:8800P]Q@anon-20191002_181700-516:localhost:8800!AoAvmnwMkhYBQsbCsL:localhost:8800P]Q@anon-20191002_181700-514:localhost:8800!IlGJpjzrvvAFuwTAgo:localhost:8800P]Q@anon-20191002_181700-512:localhost:8800!CSqENqzAezaZnGktbE:localhost:8800P]Q@anon-20191002_181700-510:localhost:8800!vBvlJEXUSQKUYmsKcO:localhost:8800P]Q@anon-20191002_181700-509:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800P]Q@anon-20191002_181700-508:localhost:8800!RDEAXrqXQizuhCUFPq:localhost:8800P]Q@anon-20191002_181700-507:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-506:localhost:8800!mogJVPxghalmKbblUq:localhost:8800P]Q@anon-20191002_181700-505:localhost:8800!EhUxBjnSkVXpTrQlrn:localhost:8800P]Q@anon-20191002_181700-503:localhost:8800!laUExtszUaoCpZoyEq:localhost:8800P]Q@anon-20191002_181700-501:localhost:8800!coGyOAgYnlBZAqznax:localhost:8800P]Q@anon-20191002_181700-499:localhost:8800!ubmTdQFAhrhZkGULDx:localhost:8800P]Q@anon-20191002_181700-497:localhost:8800!rpVYLTJGcFNdGzFzXj:localhost:8800P]Q@anon-20191002_181700-495:localhost:8800!iKezIvJyjkNqKayFju:localhost:8800P]Q@anon-20191002_181700-494:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800P]Q@anon-20191002_181700-493:localhost:8800!DelfBAGvCrTXgNxmNV:localhost:8800P]Q@anon-20191002_181700-492:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-491:localhost:8800!kOmCTyiizHqfCJdhlR:localhost:8800P]Q@anon-20191002_181700-490:localhost:8800!pJUItjYTOUJQFIxyiX:localhost:8800P]Q@anon-20191002_181700-488:localhost:8800!mvgUHEsfGqDkPQUvfG:localhost:8800P]Q@anon-20191002_181700-486:localhost:8800!WYyiQAVvitxsLZKVCG:localhost:8800P]Q@anon-20191002_181700-484:localhost:8800!KIHYKMzkRDrJwiywwz:localhost:8800P]Q@anon-20191002_181700-482:localhost:8800!RSLvuCuAqKQQrKCxNq:localhost:8800P]Q@anon-20191002_181700-480:localhost:8800!DqxFmsXPclgGqpSwdy:localhost:8800P]Q@anon-20191002_181700-479:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800P]Q@anon-20191002_181700-478:localhost:8800!uqIEMXzdeNeXdJmuwh:localhost:8800P]Q@anon-20191002_181700-477:localhost:8800!yAzXcNLHMuqFOcOexj:localhost:8800P]Q@anon-20191002_181700-555:localhost:8800!OtBUhGeUSiDMWRKIOT:localhost:8800 3 oa3*Q3a $1570043670433bjAzo:localhost:8800!11:localhost:42455{"token_id": 654, "stream_ordering": 3510}{"auth_events": [["$71:localhost:42455", {"sha256": "BSUpwN8CSQMshjRW+OyAEMhQ5g68DvZnVbrv+pk27bs"}], ["$73:localhost:42455", {"sha256": "9agIwLliA9BEg899YfZSc/3PpM/aVg7aaLKpMW66q9Q"}]], "prev_events": [["$1570043668432TfiHj:localhost:8800", {"sha256": "Pi1CcXgSTKWFemT7/j+5wG+O2gkydAQAxDzF+OLRxkk"}]], "type": "m.room.member", "room_id": "!11:localhost:42455", "sender": "@anon-20191002_181700-674:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-674", "avatar_url": null}, "depth": 4, "prev_state": [], "state_key": "@anon-20191002_181700-674:localhost:8800", "event_id": "$1570043670433bjAzo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043670593, "hashes": {"sha256": "cWM4+MBU89NrR5MuL7UFWMUCr23dk88JKYzPFVjV2kQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IxxfY6OCEp1fh/eDsig/Vf85jEfXxiUg61NWmwz0vZK1sQ4iPhWbKCUX7IKWWIoWTlCKVjQ5Tjq4Id7QHojxBg"}}, "unsigned": {"age_ts": 1570043670593}} Q3?w $1570043668432TfiHj:localhost:8800!11:localhost:42455{"stream_ordering": 3509}{"sender": "@anon-20191002_181700-673:localhost:8800", "prev_events": [["$73:localhost:42455", {"sha256": "cYj5RAAeJMwFqt7LnFfe1AdUJtS6+TPt2c5k6NgHrFA"}]], "type": "m.room.member", "room_id": "!11:localhost:42455", "auth_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}], ["$73:localhost:42455", {"sha256": "cYj5RAAeJMwFqt7LnFfe1AdUJtS6+TPt2c5k6NgHrFA"}]], "content": {"membership": "join", "displayname": "anon-20191002_181700-673", "avatar_url": null}, "depth": 3, "state_key": "@anon-20191002_181700-673:localhost:8800", "prev_state": [], "event_id": "$1570043668432TfiHj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043668599, "hashes": {"sha256": "r3c1UWWIGJcHSJ3N7O9kmkkoc6/DQRRKsVrA/L0vxf8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ptLia4OOUdGi2mSQZEDjzCQRApURW/rL5ZcGSCWdQgagk0nDvEnt9BZVI8cLgnSnbbYohz6POAqVkTr82Kq+CQ"}}, "unsigned": {"age_ts": 1570043668599}}c33a% $73:localhost:42455!11:localhost:42455{"outlier": true, "stream_ordering": 3505}{"origin": "localhost:42455", "state_key": "", "depth": 2, "type": "m.room.join_rules", "room_id": "!11:localhost:42455", "sender": "@__ANON__-47:localhost:42455", "hashes": {"sha256": "cYj5RAAeJMwFqt7LnFfe1AdUJtS6+TPt2c5k6NgHrFA"}, "content": {"join_rule": "public"}, "event_id": "$73:localhost:42455", "auth_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}], ["$72:localhost:42455", {"sha256": "AZwjTAjQmKOYsd8Zk/DvrXqALRVR8HMUh+3PU3ybX10"}]], "prev_events": [["$72:localhost:42455", {"sha256": "AZwjTAjQmKOYsd8Zk/DvrXqALRVR8HMUh+3PU3ybX10"}]], "origin_server_ts": 1570043668576, "signatures": {"localhost:42455": {"ed25519:1": "UZepJSSivegeALy+Akey+O8aTQZpgxjoTQ5BcJVPhsTh8PWaFMe9WPv+qToeS3Pdj+4Ci8roNZw1h3gB+sqWDA"}}, "unsigned": {}}&33a+ $72:localhost:42455!11:localhost:42455{"outlier": true, "stream_ordering": 3504}{"hashes": {"sha256": "AZwjTAjQmKOYsd8Zk/DvrXqALRVR8HMUh+3PU3ybX10"}, "sender": "@__ANON__-47:localhost:42455", "type": "m.room.member", "room_id": "!11:localhost:42455", "origin": "localhost:42455", "state_key": "@__ANON__-47:localhost:42455", "depth": 1, "origin_server_ts": 1570043668575, "prev_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}]], "event_id": "$72:localhost:42455", "auth_events": [["$71:localhost:42455", {"sha256": "7bej0elpw5CsouK69Q4hukcXMBGEpaPqi4MPw6TZKkg"}]], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "HjqGShFVDrU0xa/WnOaZkq8KOgMO0U4ushazNEP0WVGRYChWED9iLlKuAUUol63p79ly5ulG/l6djkGzykGzBA"}}, "unsigned": {}} )u@S   } {yx8ZZ |<{ywu~oeeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800~neeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800~meeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~leeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800~keeQ$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800~jeeQ$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~ieeQ$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800=h333$81:localhost:42455$80:localhost:42455!13:localhost:42455=g333$81:localhost:42455$79:localhost:42455!13:localhost:42455=f333$81:localhost:42455$77:localhost:42455!13:localhost:42455LeQ33$1570043683436iTOlZ:localhost:8800$79:localhost:42455!13:localhost:42455LdQ33$1570043683436iTOlZ:localhost:8800$77:localhost:42455!13:localhost:42455=c333$80:localhost:42455$79:localhost:42455!13:localhost:42455=b333$80:localhost:42455$77:localhost:42455!13:localhost:42455=a333$79:localhost:42455$78:localhost:42455!13:localhost:42455=`333$79:localhost:42455$77:localhost:42455!13:localhost:42455=_333$78:localhost:42455$77:localhost:42455!13:localhost:42455L^Q33$1570043680434abJWo:localhost:8800$76:localhost:42455!12:localhost:42455L]Q33$1570043680434abJWo:localhost:8800$74:localhost:42455!12:localhost:42455=\333$76:localhost:42455$75:localhost:42455!12:localhost:42455=[333$76:localhost:42455$74:localhost:42455!12:localhost:42455=Z333$75:localhost:42455$74:localhost:42455!12:localhost:42455~YeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800~XeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~WeeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800~VeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800~UeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~TeeQ$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800~SeeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800~ReeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~QeeQ$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800~PeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800~OeeQ$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800~NeeQ$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800LMQ33$1570043670433bjAzo:localhost:8800$73:localhost:42455!11:localhost:42455LLQ33$1570043670433bjAzo:localhost:8800$71:localhost:42455!11:localhost:42455LKQ33$1570043668432TfiHj:localhost:8800$73:localhost:42455!11:localhost:42455LJQ33$1570043668432TfiHj:localhost:8800$71:localhost:42455!11:localhost:42455=I333$73:localhost:42455$72:localhost:42455!11:localhost:42455=H333$73:localhost:42455$71:localhost:42455!11:localhost:42455=G333$72:localhost:42455$71:localhost:42455!11:localhost:42455 J \ 5 m E  ~ V .  h @  z S + c+;sK#S^6nG X0jBc<c<'Q!qtelAHlSkrqEFmlCqS:localhost:8800a{'Q!pTvdDtkgovsIdAdxCm:localhost:8800s'Q!qtelAHlSkrqEFmlCqS:localhost:8800b (&Q!tDsPLsKOLPePtEWRwn:localhost:8800}'Q!svYOOXWZHtQQzlMcEP:localhost:8800K'Q!svYOOXWZHtQQzlMcEP:localhost:8800J'Q!svYOOXWZHtQQzlMcEP:localhost:8800I'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800'Q!sJnuQYOyruhUpXDsLY:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800#'Q!raCWVWQGnXbmkexpCN:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800&Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800Y'Q!rWGwSSefrZzQYCYFHs:localhost:8800X'Q!rWGwSSefrZzQYCYFHs:localhost:8800W'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800'Q!qzrZzAieCgGSbpKOQR:localhost:8800 &Q!qxqNYKdtgvOQdhmgsj:localhost:8800p&Q!qxqNYKdtgvOQdhmgsj:localhost:8800o&Q!quaZwrGnzbNWhwAOYB:localhost:8800d'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:88000'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:88008'Q!ozgnwUlebxvzLVwyHW:localhost:88007&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:88006&Q!oXKJArsPmtgaYANBrg:localhost:88005'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800O&Q!nteAxExBGJfaGIpuCx:localhost:8800s'Q!nhbUIcIbhuXkRqfeDa:localhost:88004'Q!nhbUIcIbhuXkRqfeDa:localhost:88003'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&Q!msMfSdLIAvklSSAnci:localhost:8800D'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800:'Q!mBQpGaIiadEuKBXfOw:localhost:88009&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800B'Q!lgejtcwlywOoIXwEgy:localhost:8800AT   *teQau$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3514}{"auth_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI", "$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "prev_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI"], "type": "m.room.join_rules", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043676482, "hashes": {"sha256": "M0puudRTDmPZIUX/iqOLflK2mJ1fuoqk/Jljwz98F+s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8RPAxD+GqHFjfBAfwH01LqAHAnmaRD347JZjP//6QTBfhz3kfiMWZkN8ushHay8lhjv6WR6uq2I8KRTsRiDZAQ"}}, "unsigned": {"age_ts": 1570043676482}}keQac$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3513}{"auth_events": ["$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "prev_events": ["$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "type": "m.room.power_levels", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"users": {"@anon-20191002_181700-675:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043675707, "hashes": {"sha256": "y00Ux0tKxS2Ts8lfpsD4raYwvSbqyGBR++dXUBk4dXQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9ZGYu411FNDY8p1/hLMfccLLjkY1vMHI3tyMLXmI9hIzXNSECQF5M0gG+m+/PHh1NNHotBysuXOWe1RuJCaSAg"}}, "unsigned": {"age_ts": 1570043675707}}veQay$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3512}{"auth_events": ["$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs"], "prev_events": ["$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs"], "type": "m.room.member", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-675", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-675:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043674869, "hashes": {"sha256": "gjO+iqgZupWH3BHlwJ2wUZwQcySsiwIrRJMaJ3L8P+w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rw0yOt68w+FpL/xZtbXunPgoJZKnh9w8rTkj5jbrSfSMN68lve7aiwjBRB2FdsIBRzPIVCjt+26NwjfZxl89Bw"}}, "unsigned": {"age_ts": 1570043674869}}ieQa_$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3511}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-675:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043673953, "hashes": {"sha256": "ZJHWaJl6EG2Ko+38Oea8N9IyVlsTvi209p3C4V6tNvM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "/N4Lpb/eg2oVUas2Jw+rsujYpP1crrOS9khrP/LEbET2HjlobB2lqGnAldw1QkGokG/Evmk7lG0Im5lj84DxAA"}}, "unsigned": {"age_ts": 1570043673953}} 1:[UJu7  } K OC{o= j8p#>i)  v D W %1 I ] +[c1e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp01e$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU1e$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM1e$y3YKJSDxJ-qAgBJxYl1Uq--0FOY61fQYU9Qhwjc5O5A ~1e$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk 1e$y4qmAKkocHovGXHM_4qenh75jOTrMSsAhPv-FsK_oIki1e$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyoO1e$ymt4DWOxsdJTBE9xq5bLLC7dVfOFdICq4iPye1Bhbyg g1e$y6HlUSyd4xvgHToUYROwO3a1osYbjlb3TYKCX3ShIfAp1e$yPxUE9QNShC9r0XxVJ5QDDdb4UGceEXT7dJAfkX__Sc61e$yOq8aUd87nDHbyZpObfL_5sUQwXc6NqoZB3vB6GpxSs1e$yOeCXlZOP_0xx1lzY_SJMKdwzrumOPtWm02BU-zix5M1e$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiI 1e$yNcScBUGrp8p0SavTCV7uCJ2-LW7dnqTm2sDz0-KqZQo1e$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDg 1e$ylR4KgDYWkGd3MHO4_acsGhYI1V5UailbWv-J3jKaQo 1e$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk1e$ybQL5vNaU9LDfyKNcIcs_I19F_LLhTyMA0Ehyqx-NsI 0e$y88TRb2Cgf-S2gxUIalcJj2N4IftAH4QmHFhc3_sTtE"1e$yXajlF8oip9uePElHxwPwSe7YEWsDide4NrKs4j95RE 1e$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v81e$y8iqwpdtYLaQkpyDTSqA_vAVuREuwcz6YezJCchHLlgp1e$y8FQpP+iVYgC2WO517kOHHwSiJvW1nlEwMRs8Ol1wow L1e$yVNFFE79Tfmmgk3oa4DDf178m6qJRRx1bMHXZAQfRsk 1e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUy1e$ydh0nPYLac15PAfw2O2pzGKDNOB7qRcD8tmiiIAZEQo]1e$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM1e$yaJ-NCSnJwi8Hsfv9stZ-kDyY1NIHzFmVy0OvOQnwIY1e$yaGXI_WPu1eLq0DYW39aJ47jGhO8TdlcNIe9v8AdJ7g1e$ya-vjEhcE8PEREH2V0sFiKTbHzikJvFsrVP6lIs42iA1e$yYNDsTjtcHLZud-_cwJ2WNwD0ZcXMmOM2XlIrHBgkvQ1e$yVpRruiN-OUThc9uKn2eAFJnKjlW7sLV3NZbNM__rfU &1e$yDZPF9aYhlEP0VRVLMiXomFJ1SAVXuxmteFZCjvBkxI1e$yB-a4VzbRQaPNmpENyIPCTRnE84VL3NYvr3RfM3yres&1e$ynA8YDeW7W8yb6xYj_8hoo7B9P6um--Nw4iOpfNHpM4 1e$yETxYrBuw_9q47brKbEuEaneoZVt350FrcRocuGIpYU1e$yE4Pvt6zuA4W1q7-cHF86xNl8G0D8iNVckz67tCLsi41e$yuBsNdtMIv7hNKEhjlPs_kfFeyxCCyDiugVPWwNzdis 1e$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs01e$yJk-zF5I0irO0Ui_zahnlA22FSiDYl0hTIARR4bty001e$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk 0e$yGZblzyIfay8i_pq4EK-drUEcjyrWcOe2eM04ksTlEw\1e$yG7qiObcG9Ro-4RbaruqAEEEVpeXFjpzcxfvdfkdnmc1e$yEv2pG1gnqotTEOojiLsIaHdgUCs-1vFr2HZViPSAE0#1e$yvYLFE2cjz8qS7WnFXvRV-SaegRTJ9gp8bRORyjLXLs1e$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk1e$yrhtbw6rl0BToq9_7CKgFiBcXqiwWIQl31Ks4BRd0SU1e$yopYwy38ZMVAzkrZ2YxZ1UVJnw2uSesQpjjERyDEKlM1e$ynvmhHYAHpo_L2IAIU0RG7ZBR-a8XKmUG-jzGK1RORQ1e$ymusRV5JXli23Gn9pR3aiivRABGDuStFT0DOFXXlD4U1e$ym2OLaFwTXr6sLgJM9-B1Irpjb_4HVXE-47AmciEPsIF1e$ylXHYETVJyl2Y_x6BmeeiI3zMxOEWunGDKurrZyBYTcy1e$yl4a0L9VbO8147zNNg8wiRZQSQbkLL1pB_JmEnv3XrsF1e$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXos1e$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc11e$yiI72AByIyxmHyuZZvRalft2lPUa5yN5YNdTI_mEGGw+1e$yh3lxclTsfITwR-QYasBhVcD53pzmS-RZ75MxIh1DsA1e$yenJ_m29_Z6rFDzGTNr3Yz3toDd94I7l1gLKYnra7is > P *  HZ  V $Nj EBp \T("bz08h w6tn < | J 1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y 1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkw1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gx1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 s1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs v1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IM1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYm1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYE1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns81e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAQ1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQV1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs^1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo 21e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s / 21e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o041e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q ^1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc ]1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU Xd > P *  HZ  V $Nj EBp \T("bz08h w6tn < | J 1e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRs 1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y1e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrkw1e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gx1e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ1e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3w1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 s1e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDU1e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVs v1e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0IM1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVA1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYm1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY?1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns21e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzE 1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVI1e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4w"1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs41e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyE1e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWA1e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I1e$SVDkmb8HBS01TYSganNaHm4TIwekpmrRwiyawNqkPwg1e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tM1e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XM1e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ1e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAQ1e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuI1e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuI1e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEg1e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc81e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzo1e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Y1e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd81e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQV1e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBs^1e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-g1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTo 21e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02s / 21e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8A1e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k!1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o041e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx4 1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q \1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bc ]1e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Y 1e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkI 1e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQk 1e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZoc 1e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReM1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU Xd %Xp% ^  N Y  9 BEm14Vu+Xg-Q'E3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$82:localhost:42455f,Q? Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility$1570043713441WJPkP:localhost:8800^+Q/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800`*Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043712439XdJFc:localhost:8800)Q']Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800Z(Q' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800'Q'Ee !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0p&Q? e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibility$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkoh%Q/ e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEj$Q3 e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o #Q']e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYd"Q' e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.create$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!Q'Ee !SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOop Q? e !SrwdtDytJDUBVZOueF:localhost:8800m.room.history_visibility$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScpQ? e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibility$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4IhQ/ e !SrwdtDytJDUBVZOueF:localhost:8800m.room.join_rules$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEhQ/ e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rules$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcjQ3 e !SrwdtDytJDUBVZOueF:localhost:8800m.room.power_levels$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4jQ3 e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE Q']e !SrwdtDytJDUBVZOueF:localhost:8800m.room.member@anon-20191002_181700-679:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY Q']e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gdQ' e !SrwdtDytJDUBVZOueF:localhost:8800m.room.create$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSukdQ' e !PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqIs3']Q !13:localhost:42455m.room.member@anon-20191002_181700-677:localhost:8800$1570043683436iTOlZ:localhost:8800@3/ 3 !13:localhost:42455m.room.join_rules$79:localhost:42455<3' 3 !13:localhost:42455m.room.create$77:localhost:42455X3'E3 !13:localhost:42455m.room.member@__ANON__-51:localhost:42455$80:localhost:42455X3'E3 !13:localhost:42455m.room.member@__ANON__-50:localhost:42455$78:localhost:42455s3']Q !12:localhost:42455m.room.member@anon-20191002_181700-676:localhost:8800$1570043680434abJWo:localhost:8800X3'E3 !12:localhost:42455m.room.member@__ANON__-49:localhost:42455$75:localhost:42455<3' 3 !12:localhost:42455m.room.create$74:localhost:42455@3/ 3 !12:localhost:42455m.room.join_rules$76:localhost:42455 Q'Ee !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@__ANON__-48:localhost:42455$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxAp Q? e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.history_visibility$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0h Q/ e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.join_rules$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pYj Q3 e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.power_levels$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI Q']e !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.member@anon-20191002_181700-675:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1d=zS, i B   X 1 n G ] 6  s L %&O$157004179138NbBYh:localhost:8800 &O$157004179138NbBYh:localhost:8800 &O$157004179037FGMFG:localhost:8800 &O$157004179037FGMFG:localhost:8800 &O$157004179037FGMFG:localhost:8800 &O$157004178936zuJSX:localhost:8800 &O$157004178936zuJSX:localhost:8800 &O$157004178835mLAyG:localhost:8800 &O$157004177433OonrH:localhost:8800 Z&O$157004177433OonrH:localhost:8800 Y&O$157004177433OonrH:localhost:8800 X&O$157004177232wsJyW:localhost:8800 Q&O$157004177232wsJyW:localhost:8800 P&O$157004177232wsJyW:localhost:8800 O&O$157004177131trwoi:localhost:8800 N&O$157004177131trwoi:localhost:8800 M&O$157004177131trwoi:localhost:8800 L&O$157004177030bmvvg:localhost:8800 K&O$157004177030bmvvg:localhost:8800 J&O$157004177030bmvvg:localhost:8800 I&O$157004176929ezeJB:localhost:8800 H&O$157004176929ezeJB:localhost:8800 G&O$157004176828ZZJWh:localhost:8800 F&O$157004175925JuKDZ:localhost:8800 3&O$157004175925JuKDZ:localhost:8800 2&O$157004175925JuKDZ:localhost:8800 1&O$157004175824dFhko:localhost:8800 0&O$157004175824dFhko:localhost:8800 /&O$157004175824dFhko:localhost:8800 .&O$157004175723CBKAp:localhost:8800 -&O$157004175723CBKAp:localhost:8800 ,&O$157004175723CBKAp:localhost:8800 +&O$157004175622yCTNM:localhost:8800 *&O$157004175622yCTNM:localhost:8800 )&O$157004175621DDceh:localhost:8800 (&O$157004174718wxlLH:localhost:8800 &O$157004174718wxlLH:localhost:8800 &O$157004174718wxlLH:localhost:8800 &O$157004174617osGDW:localhost:8800 &O$157004174617osGDW:localhost:8800 &O$157004174617osGDW:localhost:8800 &O$157004174616PvcHe:localhost:8800 &O$157004174616PvcHe:localhost:8800 &O$157004174616PvcHe:localhost:8800 &O$157004174515XsrNb:localhost:8800 &O$157004174515XsrNb:localhost:8800 &O$157004174414klNmS:localhost:8800 &O$157004173511wRnRr:localhost:8800 &O$157004173511wRnRr:localhost:8800 M wwM&33a+ $75:localhost:42455!12:localhost:42455{"outlier": true, "stream_ordering": 3518}{"origin_server_ts": 1570043680727, "prev_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}]], "event_id": "$75:localhost:42455", "auth_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}]], "content": {"membership": "join"}, "hashes": {"sha256": "dGcbLoQhMGCivYz655i/eGCkEuBIiENnw7V+FHUTqaQ"}, "sender": "@__ANON__-49:localhost:42455", "type": "m.room.member", "room_id": "!12:localhost:42455", "origin": "localhost:42455", "depth": 1, "state_key": "@__ANON__-49:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "y4+oxoS8t+3uCo/ug9Ow375Bi9T9IGbgeZvHbCzK5OfLUB0OcLm+J/G21Cdk/G3vtALFrUQS05HG3/d3hxFaAA"}}, "unsigned": {}}{33aU $74:localhost:42455!12:localhost:42455{"outlier": true, "stream_ordering": 3517}{"origin_server_ts": 1570043680726, "prev_events": [], "auth_events": [], "event_id": "$74:localhost:42455", "content": {"creator": "@__ANON__-49:localhost:42455"}, "hashes": {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}, "sender": "@__ANON__-49:localhost:42455", "room_id": "!12:localhost:42455", "type": "m.room.create", "depth": 0, "state_key": "", "origin": "localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "zUmBc5kwUGqviq/mD0dgxOW+dJJdUDZAMWbeja3M2AYp0YnYMfFcspoF8yrmt/J54AE7NQ6usyccQKVNMw1rCg"}}, "unsigned": {}}}eQ33$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA!nhbUIcIbhuXkRqfeDa:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3516}{"content": {"membership": "join"}, "auth_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI", "$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY"], "prev_events": ["$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0"], "origin_server_ts": 1570043678929, "origin": "localhost:42455", "depth": 6, "state_key": "@__ANON__-48:localhost:42455", "type": "m.room.member", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@__ANON__-48:localhost:42455", "hashes": {"sha256": "WqX/pXNuakIf9UNDl+M69Fna7PkrZ11Ne39Jgbofzfk"}, "signatures": {"localhost:42455": {"ed25519:1": "VnpFu9ZqDptRgOjZd5ws4ZgjMA4bArFAAAPz8kPvqtMtH+dV7tBC9CgmF3V4fHigj3QE+FLAvYNokGxECH+pDw"}}, "unsigned": {}}eQa$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0!nhbUIcIbhuXkRqfeDa:localhost:8800{"token_id": 655, "stream_ordering": 3515}{"auth_events": ["$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI", "$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs", "$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI"], "prev_events": ["$-2BoCpJqAg6wV5ona2I53MlexXxZI1mKq4xuPgWO7pY"], "type": "m.room.history_visibility", "room_id": "!nhbUIcIbhuXkRqfeDa:localhost:8800", "sender": "@anon-20191002_181700-675:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043677306, "hashes": {"sha256": "BIXDS2UM/J8LLJx86C1PFFvNEQTy51EJ1dEWisIbgo0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ltkMaudfeU3Cn4tTT1mASlHLskA0iD/jHExbnfltfSCqT+EcgoW2jG3LHWjvxZlMcR64Ir3KTlOFmEJEenzqCA"}}, "unsigned": {"age_ts": 1570043677306}} n^ k x ' 4 A N [ nN[Q@anon-20191002_181700-16:localhost:8800!QZhNrNpwObZGJZpdAG:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!LaLcEGFLpjdlYlYKGC:localhost:8800N[Q@anon-20191002_181700-16:localhost:8800!GixhPUMvtKSWoKRgvw:localhost:8800 P]Q@anon-20191002_181700-169:localhost:8800!lAGTcYIuMBXsVRGCOe:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!WVzjUePHrzCjfyTbmK:localhost:8800P]Q@anon-20191002_181700-169:localhost:8800!UyLoIXmzVFwycmBUeh:localhost:8800P]Q@anon-20191002_181700-168:localhost:8800!nteAxExBGJfaGIpuCx:localhost:8800P]Q@anon-20191002_181700-167:localhost:8800!itKDOCtoMkFUETDtle:localhost:8800P]Q@anon-20191002_181700-166:localhost:8829!qxqNYKdtgvOQdhmgsj:localhost:8800P]Q@anon-20191002_181700-165:localhost:8800!qxqNYKdtgvOQdhmgsj:localhost:8800P]Q@anon-20191002_181700-164:localhost:8800!MlzmtUYSZOiByAZdKx:localhost:8800P]Q@anon-20191002_181700-163:localhost:8800!WjlTCJVOFJkanCtkFE:localhost:8800P]Q@anon-20191002_181700-162:localhost:8800!aBCvSXjtZUEPlPGHvY:localhost:8800P]Q@anon-20191002_181700-161:localhost:8800!IMiczgkCTjejbnbeyP:localhost:8800P]Q@anon-20191002_181700-160:localhost:8800!HIZTeBCxvpMSpcqGVD:localhost:8800P]Q@anon-20191002_181700-158:localhost:8800!awHAhLuEkavTGACcUW:localhost:8800P]Q@anon-20191002_181700-156:localhost:8800!OqPpVlCwmKdAUlwrXI:localhost:8800P]Q@anon-20191002_181700-154:localhost:8800!quaZwrGnzbNWhwAOYB:localhost:8800P]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800P]Q@anon-20191002_181700-153:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800P]Q@anon-20191002_181700-152:localhost:8800!JusxqeECtidaPlWqhp:localhost:8800P]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-151:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800P]Q@anon-20191002_181700-150:localhost:8800!aWvVRVaDflYyyGTOdD:localhost:8800 iM q 5 @?n4w3lC. e]]Q=$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc@anon-20191002_181700-698:localhost:8800@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800joinanon-20191002_181700-698C- e]]Q=$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU@anon-20191002_181700-691:localhost:8800@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800joinanon-20191002_181700-691C, e]]Q=$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE@anon-20191002_181700-690:localhost:8800@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800joinanon-20191002_181700-690z+ 3EEQ$94:localhost:42455@__ANON__-58:localhost:42455@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800join9* Q]]Q=$1570043746461eQhrq:localhost:8800@anon-20191002_181700-685:localhost:8800@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800joinanon-20191002_181700-685z) 3EEQ$90:localhost:42455@__ANON__-57:localhost:42455@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800join9( Q]]Q=$1570043736453VtbeL:localhost:8800@anon-20191002_181700-684:localhost:8800@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800joinanon-20191002_181700-684z' 3EEQ$87:localhost:42455@__ANON__-56:localhost:42455@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800join9& Q]]Q=$1570043727446CGYaE:localhost:8800@anon-20191002_181700-683:localhost:8800@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800joinanon-20191002_181700-683% eEEQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk@__ANON__-55:localhost:42455@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800joinC$ e]]Q=$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE@anon-20191002_181700-682:localhost:8800@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800joinanon-20191002_181700-682z# 3EEQ$82:localhost:42455@__ANON__-54:localhost:42455@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800join9" Q]]Q=$1570043711438bqOHL:localhost:8800@anon-20191002_181700-681:localhost:8800@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800joinanon-20191002_181700-681! eEEQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0@__ANON__-53:localhost:42455@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800joinC e]]Q=$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY@anon-20191002_181700-680:localhost:8800@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800joinanon-20191002_181700-680 eEEQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo@__ANON__-52:localhost:42455@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:8800joinC e]]Q=$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY@anon-20191002_181700-679:localhost:8800@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800joinanon-20191002_181700-679C e]]Q=$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g@anon-20191002_181700-678:localhost:8800@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800joinanon-20191002_181700-678* Q]]3=$1570043683436iTOlZ:localhost:8800@anon-20191002_181700-677:localhost:8800@anon-20191002_181700-677:localhost:8800!13:localhost:42455joinanon-20191002_181700-677k 3EE3$80:localhost:42455@__ANON__-51:localhost:42455@__ANON__-51:localhost:42455!13:localhost:42455joink 3EE3$78:localhost:42455@__ANON__-50:localhost:42455@__ANON__-50:localhost:42455!13:localhost:42455join* Q]]3=$1570043680434abJWo:localhost:8800@anon-20191002_181700-676:localhost:8800@anon-20191002_181700-676:localhost:8800!12:localhost:42455joinanon-20191002_181700-676k 3EE3$75:localhost:42455@__ANON__-49:localhost:42455@__ANON__-49:localhost:42455!12:localhost:42455join eEEQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA@__ANON__-48:localhost:42455@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:8800join 5Vj/ ~ C  W  k 0  D X l1E Ym2F Zn3G :8t]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8s]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8r]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8q]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8p]! @anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8o]! @anon-20191002_181700-724:localhost:8800LOLQJOGTTU8n]! @anon-20191002_181700-723:localhost:8800JIVAFIIFHN8m]! @anon-20191002_181700-722:localhost:8800IZTIXMADAY8l]! @anon-20191002_181700-721:localhost:8800BHJHLJEYAG8k]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN8j]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8i]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8h]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8g]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8f]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8e]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8d]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8c]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8b]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA8a]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU8`]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8_]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8^]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV8\]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8[]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8Z]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8Y]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8X]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8W]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW8V]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8U]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8T]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8S]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO8R]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8Q]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8P]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8O]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG8N]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8M]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8L]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY8K]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK8J]!@anon-20191002_181700-685:localhost:8800ESVUDGRJIL8I]!@anon-20191002_181700-684:localhost:8800QWWSYDBLAC8H]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPR8G]!@anon-20191002_181700-682:localhost:8800RHXEIACOYG8F]!@anon-20191002_181700-681:localhost:8800CDCNSMATEC8E]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGI8D]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKF8C]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUT8B]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGV8A]!@anon-20191002_181700-676:localhost:8800KCVXVHDURO1@E+@__ANON__-48:localhost:42455CURIOSITY_ROVER   & 33a+ $78:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3525}{"prev_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}]], "origin_server_ts": 1570043683293, "content": {"membership": "join"}, "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}]], "event_id": "$78:localhost:42455", "sender": "@__ANON__-50:localhost:42455", "hashes": {"sha256": "vSQ+ss3kE6yMk0EzWzZqRVZ6Gc/ZJd1oIWA0R872eKg"}, "depth": 1, "state_key": "@__ANON__-50:localhost:42455", "origin": "localhost:42455", "room_id": "!13:localhost:42455", "type": "m.room.member", "signatures": {"localhost:42455": {"ed25519:1": "GjUyoSYiu5PsLY23ATdFQls+sAexYbGE7ZIG2k2V/yaa1qkJ4VWyuf9oQJiGnR/sLRm8gc1kLLyCtxpr1M24Bw"}}, "unsigned": {}}{33aU $77:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3524}{"hashes": {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}, "sender": "@__ANON__-50:localhost:42455", "type": "m.room.create", "room_id": "!13:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 0, "origin_server_ts": 1570043683292, "prev_events": [], "event_id": "$77:localhost:42455", "auth_events": [], "content": {"creator": "@__ANON__-50:localhost:42455"}, "signatures": {"localhost:42455": {"ed25519:1": "1dVsY7KT3JkuFCkcoKpwyk30MrZEfejwh/zOORb32LYx2PNysQaH3EpumEPHurLmuLf+BHyFtsV1rg9dDodgDw"}}, "unsigned": {}} Q3?w $1570043680434abJWo:localhost:8800!12:localhost:42455{"stream_ordering": 3523}{"sender": "@anon-20191002_181700-676:localhost:8800", "prev_events": [["$76:localhost:42455", {"sha256": "1umzn5yszBBRJVZlCYvLlRNGlqcK5+Nar0FMwgOL15c"}]], "room_id": "!12:localhost:42455", "auth_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}], ["$76:localhost:42455", {"sha256": "1umzn5yszBBRJVZlCYvLlRNGlqcK5+Nar0FMwgOL15c"}]], "type": "m.room.member", "depth": 3, "state_key": "@anon-20191002_181700-676:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-676", "avatar_url": null}, "prev_state": [], "event_id": "$1570043680434abJWo:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043680748, "hashes": {"sha256": "wwp8FswipK1NES7LZ6K14/n4RtV3SAxMfzYHkxH8xH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "80SgP+94uHEqTRuXNhEQh0P81vXiZwFOULCH0sp9G6t5/bH4HiQfAIHT/9AuF+NdNQzALzp6GtpFQu/ME5vaDQ"}}, "unsigned": {"age_ts": 1570043680748}}c33a% $76:localhost:42455!12:localhost:42455{"outlier": true, "stream_ordering": 3519}{"sender": "@__ANON__-49:localhost:42455", "hashes": {"sha256": "1umzn5yszBBRJVZlCYvLlRNGlqcK5+Nar0FMwgOL15c"}, "origin": "localhost:42455", "depth": 2, "state_key": "", "type": "m.room.join_rules", "room_id": "!12:localhost:42455", "prev_events": [["$75:localhost:42455", {"sha256": "dGcbLoQhMGCivYz655i/eGCkEuBIiENnw7V+FHUTqaQ"}]], "origin_server_ts": 1570043680728, "content": {"join_rule": "public"}, "event_id": "$76:localhost:42455", "auth_events": [["$74:localhost:42455", {"sha256": "4Cc9c0pu+mEHDjNBRsIxtsbdWNdy8JKaTT8Of+hCQG4"}], ["$75:localhost:42455", {"sha256": "dGcbLoQhMGCivYz655i/eGCkEuBIiENnw7V+FHUTqaQ"}]], "signatures": {"localhost:42455": {"ed25519:1": "SXud5w1cRN7Nv+mj+IuwyStCzIGGo8GcnUPWuzYGxVAFRX3zCD4fj9dLv8gV8Zxb6LDL/kPFfgpiuVSPXYt3DQ"}}, "unsigned": {}} *T_d-fD 0  <  e . ] M pBQ? !CSqENqzAezaZnGktbE:localhost:8800m.room.history_visibility,<Q3 !CSqENqzAezaZnGktbE:localhost:8800m.room.guest_access-6Q' !CSqENqzAezaZnGktbE:localhost:8800m.room.create(<Q3 !CQKLQUpSYakhxVDltC:localhost:8800m.room.power_levels^Q']!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-126:localhost:8800^Q']!CQKLQUpSYakhxVDltC:localhost:8800m.room.member@anon-20191002_181700-125:localhost:8800:Q/ !CQKLQUpSYakhxVDltC:localhost:8800m.room.join_rulesBQ? !CQKLQUpSYakhxVDltC:localhost:8800m.room.history_visibility6Q' !CQKLQUpSYakhxVDltC:localhost:8800m.room.create?Q9 !CQKLQUpSYakhxVDltC:localhost:8800m.room.canonical_aliasEQ))!CQKLQUpSYakhxVDltC:localhost:8800m.room.aliaseslocalhost:88009Q- !CNFopUEQTFbzjmLvii:localhost:8800m.room.tombstone<Q3 !CNFopUEQTFbzjmLvii:localhost:8800m.room.power_levels^Q']!CNFopUEQTFbzjmLvii:localhost:8800m.room.member@anon-20191002_181700-300:localhost:8800^Q']!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-493:localhost:8800:Q/ !DelfBAGvCrTXgNxmNV:localhost:8800m.room.join_rulesBQ? !DelfBAGvCrTXgNxmNV:localhost:8800m.room.history_visibility<Q3 !DelfBAGvCrTXgNxmNV:localhost:8800m.room.guest_access6Q' !DelfBAGvCrTXgNxmNV:localhost:8800m.room.create<Q3 !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.power_levels a^Q']!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@anon-20191002_181700-668:localhost:8800 dRQ'E!DSFBpkqfnvBQbGoMUK:localhost:8800m.room.member@__ANON__-40:localhost:42455 c:Q/ !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.join_rules eBQ? !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.history_visibility Z6Q' !DSFBpkqfnvBQbGoMUK:localhost:8800m.room.create b<Q3 !CkNvQnbApPIcuKygDk:localhost:8800m.room.power_levels^Q']!CkNvQnbApPIcuKygDk:localhost:8800m.room.member@anon-20191002_181700-348:localhost:8800:Q/ !CkNvQnbApPIcuKygDk:localhost:8800m.room.join_rulesBQ? !CkNvQnbApPIcuKygDk:localhost:8800m.room.history_visibility6Q' !CkNvQnbApPIcuKygDk:localhost:8800m.room.create<Q3 !CkNvQnbApPIcuKygDk:localhost:8800a.madeup.test.state<Q3 !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.power_levels^Q']!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.member@anon-20191002_181700-120:localhost:8800:Q/ !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.join_rulesBQ? !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.history_visibility6Q' !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.create?Q9 !CgVBWWcRJoHEcwoLcq:localhost:8800m.room.canonical_aliasEQ))!CgVBWWcRJoHEcwoLcq:localhost:8800m.room.aliaseslocalhost:8800<Q3 !CSqENqzAezaZnGktbE:localhost:8800m.room.power_levels*^Q']!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-513:localhost:8829.^Q']!CSqENqzAezaZnGktbE:localhost:8800m.room.member@anon-20191002_181700-512:localhost:8800):Q/ !CSqENqzAezaZnGktbE:localhost:8800m.room.join_rules+ *2j8q? w E  ~ L   R X & ^ ,d1e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI 1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBID1e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM*1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQke1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIs,1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4%1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 71e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yov1e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew1e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY1e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs1e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFA C1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQz1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuk1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks0e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcq1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI H1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0 =1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA K1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl81e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIC0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVAm1e$9Vwh1BuGzN68-pl43ztkdbJh3yZQ8hO0bBNW1M9VQAQh1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw4?1e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU '  'b$33c! $81:localhost:42455!13:localhost:42455{"outlier": false, "stream_ordering": 3532}{"type": "m.room.power_levels", "room_id": "!13:localhost:42455", "origin": "localhost:42455", "state_key": "", "depth": 5, "hashes": {"sha256": "YsD4qAiugqlOwpJcsluLWsWhT6KMtCWNN4ND3meDWMI"}, "sender": "@__ANON__-51:localhost:42455", "event_id": "$81:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}], ["$80:localhost:42455", {"sha256": "2uo3/oB+8f1lcfOX7b/MhDCgccA+j28Br9pDbGd/pDE"}]], "content": {"users": {"@__ANON__-51:localhost:42455": 100}}, "origin_server_ts": 1570043685815, "prev_events": [["$1570043683436iTOlZ:localhost:8800", {"sha256": "pe1nkxpeUpnoBonKsjSBNLnUK4SbNzkcyBCQkHMbgBY"}]], "signatures": {"localhost:42455": {"ed25519:1": "CQN85fhrK9XgUiheJLpNuRCHMqhOvbNscPtKrqIcXYIoWpXdC63j1BNBt5Dxg+Hsa5RErdbAzNW/fttQLLiNCA"}}, "unsigned": {}} #Q3?w $1570043683436iTOlZ:localhost:8800!13:localhost:42455{"stream_ordering": 3531}{"content": {"membership": "join", "displayname": "anon-20191002_181700-677", "avatar_url": null}, "depth": 4, "state_key": "@anon-20191002_181700-677:localhost:8800", "type": "m.room.member", "room_id": "!13:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}]], "sender": "@anon-20191002_181700-677:localhost:8800", "prev_events": [["$80:localhost:42455", {"sha256": "2uo3/oB+8f1lcfOX7b/MhDCgccA+j28Br9pDbGd/pDE"}]], "prev_state": [], "event_id": "$1570043683436iTOlZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043683327, "hashes": {"sha256": "pe1nkxpeUpnoBonKsjSBNLnUK4SbNzkcyBCQkHMbgBY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "q4WBr6RbOPXDZfvh2Nn+koGxPasKk5R+qUImqu1mTR18kCrfanRL3a5qCY2P9hgVuAfYau2Wb9RiYLEW8EptDA"}}, "unsigned": {"age_ts": 1570043683327}}z"33aS $80:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3528}{"hashes": {"sha256": "2uo3/oB+8f1lcfOX7b/MhDCgccA+j28Br9pDbGd/pDE"}, "sender": "@__ANON__-51:localhost:42455", "type": "m.room.member", "room_id": "!13:localhost:42455", "origin": "localhost:42455", "depth": 3, "state_key": "@__ANON__-51:localhost:42455", "origin_server_ts": 1570043683294, "prev_events": [["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}]], "event_id": "$80:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$79:localhost:42455", {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}]], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "4jovuCiPssLnxnNOvQSrGK4k6H09gpQbgA77g+07oMbus4ukoG1Mys0vBB6M60//kCnIPfGESj0PNTq/tDHXAQ"}}, "unsigned": {}}c!33a% $79:localhost:42455!13:localhost:42455{"outlier": true, "stream_ordering": 3526}{"sender": "@__ANON__-50:localhost:42455", "hashes": {"sha256": "jKua+avizY5DplE83obJDuB1yza3cod/F36YWf5Cks8"}, "origin": "localhost:42455", "depth": 2, "state_key": "", "type": "m.room.join_rules", "room_id": "!13:localhost:42455", "prev_events": [["$78:localhost:42455", {"sha256": "vSQ+ss3kE6yMk0EzWzZqRVZ6Gc/ZJd1oIWA0R872eKg"}]], "origin_server_ts": 1570043683294, "content": {"join_rule": "public"}, "event_id": "$79:localhost:42455", "auth_events": [["$77:localhost:42455", {"sha256": "VMV5cfGD8Jfk3jSp0+jJ06/jQBx+lDxrIDj7NBoAMDo"}], ["$78:localhost:42455", {"sha256": "vSQ+ss3kE6yMk0EzWzZqRVZ6Gc/ZJd1oIWA0R872eKg"}]], "signatures": {"localhost:42455": {"ed25519:1": "k9AojItcjxvNJnn6mI46L1LXo2XSelub1rnf7JMa1uxZm1iwKgFJX869Rdc7YW3jiAou2wNvSOsRlZXQbzxRCQ"}}, "unsigned": {}} *zvHd6 ~ P " l >  X * t F  ` 2 z-]@anon-20191002_181700-268:localhost:8800.-]@anon-20191002_181700-267:localhost:88000-]@anon-20191002_181700-267:localhost:8800--]@anon-20191002_181700-266:localhost:8800,-]@anon-20191002_181700-266:localhost:8800+-]@anon-20191002_181700-266:localhost:8800*-]@anon-20191002_181700-265:localhost:8800)-]@anon-20191002_181700-264:localhost:8800(-]@anon-20191002_181700-263:localhost:8800'-]@anon-20191002_181700-262:localhost:8800&-]@anon-20191002_181700-262:localhost:8800%-]@anon-20191002_181700-261:localhost:8800$-]@anon-20191002_181700-260:localhost:8800#-]@anon-20191002_181700-260:localhost:8800"+[@anon-20191002_181700-25:localhost:8800-]@anon-20191002_181700-259:localhost:8800!-]@anon-20191002_181700-258:localhost:8800 -]@anon-20191002_181700-258:localhost:8800-]@anon-20191002_181700-257:localhost:8800-]@anon-20191002_181700-254:localhost:8800-]@anon-20191002_181700-253:localhost:8800-]@anon-20191002_181700-252:localhost:8800-]@anon-20191002_181700-251:localhost:8800-]@anon-20191002_181700-250:localhost:8800+[@anon-20191002_181700-24:localhost:8800-]@anon-20191002_181700-249:localhost:8800-]@anon-20191002_181700-248:localhost:8800-]@anon-20191002_181700-247:localhost:8800-]@anon-20191002_181700-246:localhost:8800-]@anon-20191002_181700-245:localhost:8800-]@anon-20191002_181700-244:localhost:8800-]@anon-20191002_181700-243:localhost:8800-]@anon-20191002_181700-242:localhost:8800-]@anon-20191002_181700-240:localhost:8800+[@anon-20191002_181700-23:localhost:8800 -]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-239:localhost:8800-]@anon-20191002_181700-238:localhost:8800 -]@anon-20191002_181700-237:localhost:8800 -]@anon-20191002_181700-236:localhost:8800 -]@anon-20191002_181700-234:localhost:8800 -]@anon-20191002_181700-232:localhost:8800 .k x ) z)S`m 6 C P ] Djw3&^QP]Q@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800[P]Q@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800EP]Q@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800DP]Q@anon-20191002_181700-722:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800CP]Q@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800NP]Q@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800MP]Q@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800LP]Q@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800KP]Q@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800JP]Q@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800IP]Q@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800HP]Q@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800GP]Q@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800FN[Q@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800,N[Q@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800+N[Q@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800)P]Q@anon-20191002_181700-755:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800dP]Q@anon-20191002_181700-754:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800cP]Q@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800bP]Q@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800aP]Q@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800`P]Q@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800_P]Q@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800^P]Q@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800]P]Q@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800\P]Q@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800ZP]Q@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800YP]Q@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800XP]Q@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800WP]Q@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800VP]Q@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800UP]Q@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800TP]Q@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800SP]Q@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800RP]Q@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800QP]Q@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800PP]Q@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800OP]Q@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800BP]Q@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800AN[Q@anon-20191002_181700-71:localhost:8800!OaCEdDAiatpwYcagUb:localhost:8800*P]Q@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800@P]Q@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800?P]Q@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800>P]Q@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800=P]Q@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800fP]Q@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800e *AFn F b F  r = E|;u%Mi%AFV f  v & ME]Q@anon-20191002_181700-684:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800ADEQ@__ANON__-56:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800MC]Q@anon-20191002_181700-683:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800ABEQ@__ANON__-55:localhost:42455!lgejtcwlywOoIXwEgy:localhost:8800MA]Q@anon-20191002_181700-682:localhost:8800!lgejtcwlywOoIXwEgy:localhost:8800A@EQ@__ANON__-54:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800M?]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800A>EQ@__ANON__-53:localhost:42455!OJilSqnQvLgoXSqRaW:localhost:8800M=]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800A<EQ@__ANON__-52:localhost:42455!SrwdtDytJDUBVZOueF:localhost:8800M;]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800M:]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800>9]3@anon-20191002_181700-677:localhost:8800!13:localhost:4245528E3@__ANON__-51:localhost:42455!13:localhost:42455>6]3@anon-20191002_181700-676:localhost:8800!12:localhost:4245525E3@__ANON__-49:localhost:42455!12:localhost:42455A4EQ@__ANON__-48:localhost:42455!nhbUIcIbhuXkRqfeDa:localhost:8800M3]Q@anon-20191002_181700-675:localhost:8800!nhbUIcIbhuXkRqfeDa:localhost:8800>2]3@anon-20191002_181700-674:localhost:8800!11:localhost:42455>1]3@anon-20191002_181700-673:localhost:8800!11:localhost:4245520E3@__ANON__-47:localhost:42455!11:localhost:42455>/]3@anon-20191002_181700-672:localhost:8800!10:localhost:424552.E3@__ANON__-46:localhost:42455!10:localhost:42455=-]1@anon-20191002_181700-671:localhost:8800!9:localhost:42455A+EQ@__ANON__-43:localhost:42455!SnROoiDBapNNtMmKnT:localhost:8800M*]Q@anon-20191002_181700-670:localhost:8800!SnROoiDBapNNtMmKnT:localhost:8800A)EQ@__ANON__-41:localhost:42455!uGpSboYkgxVNOqNeUG:localhost:8800M(]Q@anon-20191002_181700-669:localhost:8800!uGpSboYkgxVNOqNeUG:localhost:8800A'EQ@__ANON__-40:localhost:42455!DSFBpkqfnvBQbGoMUK:localhost:8800DM&]Q@anon-20191002_181700-668:localhost:8800!DSFBpkqfnvBQbGoMUK:localhost:8800A%EQ@__ANON__-40:localhost:42455!ZKPJvrCZHMHPEksYDc:localhost:8800M$]Q@anon-20191002_181700-668:localhost:8800!ZKPJvrCZHMHPEksYDc:localhost:8800A#EQ@__ANON__-39:localhost:42455!PgNDjhhIBAXKryuGKy:localhost:8800M"]Q@anon-20191002_181700-667:localhost:8800!PgNDjhhIBAXKryuGKy:localhost:8800A!EQ@__ANON__-38:localhost:42455!vnFXnkCSfTbsSNKrtg:localhost:8800M ]Q@anon-20191002_181700-666:localhost:8800!vnFXnkCSfTbsSNKrtg:localhost:8800AEQ@__ANON__-37:localhost:42455!jRuDexjFzIDOKbwDJQ:localhost:8800M]Q@anon-20191002_181700-665:localhost:8800!jRuDexjFzIDOKbwDJQ:localhost:8800AEQ@__ANON__-36:localhost:42455!KcXNWNfbLcYsBKZHIp:localhost:8800M]Q@anon-20191002_181700-664:localhost:8800!KcXNWNfbLcYsBKZHIp:localhost:880027E3@__ANON__-50:localhost:42455!13:localhost:424551,E1@__ANON__-45:localhost:42455!9:localhost:42455  7 k 9m^Y]@anon-20191002_181700-6:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBEJi5uSV5qMXJfZSNsOCxUCjAwMmZzaWduYXR1cmUgkk_cv_RQBk0J2z8yRM657J77s_ZIkyg4qmCFKKUSNtAK127.0.0.1d]c@anon-20191002_181700-689:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENpMXN5VmlBO3h5NG9FQVcKMDAyZnNpZ25hdHVyZSCYuwn9jELEvJuUHDFlpMhBHDbPvBhF57TAUIgnygORqAo127.0.0.1d]c@anon-20191002_181700-698:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDR2cXg6THcucnlNU0pTRCoKMDAyZnNpZ25hdHVyZSCRObAd4hl2kIR1cnziKag-gT2xiL5cBuSpDxQXp2Y56wo127.0.0.1d]c@anon-20191002_181700-697:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo9SiYzOmF-Vjswa1I7elQKMDAyZnNpZ25hdHVyZSDkBe_9qyNrIiBUuJNiAjQWbHTgjeGWn6B1g-XDytVnDAo127.0.0.1d]c@anon-20191002_181700-696:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5xdSxZZnhsU3JxVnQteUwKMDAyZnNpZ25hdHVyZSCtq1UJU_Wyiyp9peYu9r8YQgQoH6XNu9vzifshqGZ0AAo127.0.0.1d]c@anon-20191002_181700-695:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNjNHd1UUpjOW9UNUF4UXoKMDAyZnNpZ25hdHVyZSCPIUVN9lWQ8BoblKnX6rhKPpx4Xu7DL-voKOjr7T_ijgo127.0.0.1d]c@anon-20191002_181700-693:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExOWnhedGV-Lno9XnE4VX4KMDAyZnNpZ25hdHVyZSA5Kn1fYh9S-SPR2I_R6omhBs-F-gPAuYLrGasgatD_KQo127.0.0.1d]c@anon-20191002_181700-692:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDsyRFAxYTB3d0JfaCo5NEoKMDAyZnNpZ25hdHVyZSCiZWeiN5k8q08QkTiOIMXaDEtS78p3BtHDiD4U6mLWdAo127.0.0.1d]c@anon-20191002_181700-691:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNFOkdjeUY7MjAmQUdEVysKMDAyZnNpZ25hdHVyZSCrhY5xAnfaaIsWrJfYKh4tW-EB9Tfc_TZ3e6e0bi60IAo127.0.0.1d]c@anon-20191002_181700-690:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFiN2dpPW55Omh4dGtpT0MKMDAyZnNpZ25hdHVyZSAG_4rwETz8mescypyvlXeArGSgGB-f7oN8uYsSEuwbRAo127.0.0.1a[a@anon-20191002_181700-68:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlhxWG9jLVZXeGpsQG82XwowMDJmc2lnbmF0dXJlIBrNGz5fbKkCAMhgAmEJNyS56V61y1Wh-i-yvPQ4yx4fCg127.0.0.1: i  45 gih1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJ0OD1CbCZQVXRZUEYuRF4KMDAyZnNpZ25hdHVyZSAR-RXomZfd9jfoSoaVI6pRsyqBlKwUmG561zUi-FIt2QoA1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGw6Uy5xLSo5NzptfjdpK24KMDAyZnNpZ25hdHVyZSAr8JmBjDzsrn18tqTPNxvpFT3uHTg3cdfg39iqBzZiuQoB1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5KR0pKaXlXVTJZTjpfeVIKMDAyZnNpZ25hdHVyZSDu25ZQUNrElC1w8D-7akohXJPWdBEgbR0gt_QpQE4f6AoE1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICteSHZmWnc4b3BCanVDOGEKMDAyZnNpZ25hdHVyZSAJXE0br2225NWIy-FWwqW1eaYEjTysP1DwchdfqEdGbwoD1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGJhLTlVUEkxMTZMaDcrfnAKMDAyZnNpZ25hdHVyZSCVL4wOss3stQBqS0T2dMMSFgrqGKCdKqLQErziY58pOwo=1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBNYXI7KmtYMio1cF5wU2oKMDAyZnNpZ25hdHVyZSC6faRL5gRMDSrt3JVQXVAJk41B5lf4mWNReFXR91OndAoG1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDo3Mi5lYlV2a2tfX1dUZnIKMDAyZnNpZ25hdHVyZSCn9NKRbpbNtymqTeTuS2KkH7b7NnoLOyqZngASnYZkXgoF1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo9SiYzOmF-Vjswa1I7elQKMDAyZnNpZ25hdHVyZSDkBe_9qyNrIiBUuJNiAjQWbHTgjeGWn6B1g-XDytVnDAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDR2cXg6THcucnlNU0pTRCoKMDAyZnNpZ25hdHVyZSCRObAd4hl2kIR1cnziKag-gT2xiL5cBuSpDxQXp2Y56wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhhczI4NHpvOjIyKkp-ZHcKMDAyZnNpZ25hdHVyZSAD9JeJIP3Tupr5ZZbRQoM8Hx-snGBPdo-286DrRelJDwo>1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDd2Z3M4VUdpZFk9PVQqb0QKMDAyZnNpZ25hdHVyZSD39rZw4ejANsei46y5Hswz78deevadOTxBob0SNf_4oAoC1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERTTWUxSF9aWGY3dSNmMG8KMDAyZnNpZ25hdHVyZSA6nMib2JiEAnfufACgSZiuu29stAm69nlXei1bDKQbHgo?1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTYwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQmbiswUTlOdm09bnE7R0YKMDAyZnNpZ25hdHVyZSAu3jjIIkaMnRtR2dDenDeOtlu8Y3BzyovqanzgrC0ccgo@ Z9"~c0rOE( Q 4   b #  m :  y V # } b ? g4t]B%P3x]*xzW$oR; 0 & 3  m.room.power_levels X>'] em.room.member@anon-20191002_181700-674:localhost:8800 >'] dm.room.member@anon-20191002_181700-673:localhost:8800 2'E dm.room.member@__ANON__-47:localhost:42455 /  dm.room.join_rules '  dm.room.create >'] cm.room.member@anon-20191002_181700-672:localhost:8800 2'E cm.room.member@__ANON__-46:localhost:42455 /  cm.room.join_rules '  cm.room.create >'] bm.room.member@anon-20191002_181700-671:localhost:8800 >'] m.room.member@anon-20191002_181700-683:localhost:8800 W'  m.room.create V3  m.room.power_levels Q>'] m.room.member@anon-20191002_181700-682:localhost:8800 T2'E m.room.member@__ANON__-55:localhost:42455 S/  m.room.join_rules U'  m.room.create R2'E m.room.member@__ANON__-55:localhost:42455 P2'E m.room.member@__ANON__-55:localhost:42455 O"?  m.room.history_visibility N/  m.room.join_rules M3  m.room.power_levels L>'] m.room.member@anon-20191002_181700-682:localhost:8800 K'  m.room.create J3  m.room.power_levels G/  m.room.join_rules I'  m.room.create H/'? m.room.member@fakeuser:localhost:42455 F3  m.room.power_levels C/  m.room.join_rules E'  m.room.create D3  m.room.power_levels @/  m.room.join_rules B'  m.room.create A! test_stateC ?3  m.room.power_levels <>'] m.room.member@anon-20191002_181700-681:localhost:8800 >2'E m.room.member@__ANON__-54:localhost:42455 9/  m.room.join_rules :"?  m.room.history_visibility ='  m.room.create ;3  m.room.power_levels 82'E m.room.member@__ANON__-54:localhost:42455 72'E m.room.member@__ANON__-54:localhost:42455 6"?  m.room.history_visibility 5/  m.room.join_rules 43  m.room.power_levels 3>'] m.room.member@anon-20191002_181700-681:localhost:8800 2'  m.room.create 12'E m.room.member@__ANON__-53:localhost:42455 02'E m.room.member@__ANON__-53:localhost:42455 /"?  m.room.history_visibility ./  m.room.join_rules -3  m.room.power_levels ,>'] m.room.member@anon-20191002_181700-680:localhost:8800 +'  ~m.room.create *2'E }m.room.member@__ANON__-52:localhost:42455 )2'E |m.room.member@__ANON__-52:localhost:42455 ("?  {m.room.history_visibility '"?  zm.room.history_visibility &/  ym.room.join_rules %/  xm.room.join_rules $3  wm.room.power_levels #3  vm.room.power_levels ">'] um.room.member@anon-20191002_181700-679:localhost:8800 !>'] tm.room.member@anon-20191002_181700-678:localhost:8800 '  sm.room.create '  rm.room.create 2'E qm.room.member@__ANON__-51:localhost:42455 /  qm.room.join_rules '  qm.room.create 3  pm.room.power_levels >'] om.room.member@anon-20191002_181700-677:localhost:8800 2'E om.room.member@__ANON__-51:localhost:42455 2'E om.room.member@__ANON__-50:localhost:42455 /  om.room.join_rules '  om.room.create 3  nm.room.power_levels >'] mm.room.member@anon-20191002_181700-676:localhost:8800 2'E mm.room.member@__ANON__-49:localhost:42455 /  mm.room.join_rules '  mm.room.create 2'E lm.room.member@__ANON__-48:localhost:42455 2'E km.room.member@__ANON__-48:localhost:42455 "?  jm.room.history_visibility /  im.room.join_rules 3  hm.room.power_levels >'] gm.room.member@anon-20191002_181700-675:localhost:8800 '  fm.room.create 2  &2v(eQay$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3536}{"auth_events": ["$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk"], "prev_events": ["$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk"], "type": "m.room.member", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-679", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-679:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043694925, "hashes": {"sha256": "Q8tvvLIpvaO5qk4MSQ+ZUSSlkfJgZN6ghgqiPvtYuLU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9UEhrc7pMrhy82wFs3o9GA4Cy1jDPuvlf95+ZmZ79zqitQcSbyp10aqpzPHRFQrUFWEaoswcHXMC1NlPAPlGDA"}}, "unsigned": {"age_ts": 1570043694925}}v'eQay$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3535}{"auth_events": ["$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI"], "prev_events": ["$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI"], "type": "m.room.member", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-678", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-678:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043694637, "hashes": {"sha256": "I1o2eBO0k8lcPojEdzt0YHQNbh6C06vU6Mxr0oYQByA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KNWPFdHZJcrQwqxgGHmv5ZMGZA8pGNJlAgxI6KNafFh3gOatksEhhAukFriA5RNkWptSbQlZL0NV0MIjLaQSDA"}}, "unsigned": {"age_ts": 1570043694637}}i&eQa_$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3534}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-679:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043693516, "hashes": {"sha256": "ZYbzlXiaA/lu+Abm+zM4RFnoIxv61BzdMTpU0UpubUQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4+GykYlL0rZrSQs9mnQ7z7Jrymtf10uDwRR3RLckc2jz+oEOz4al3gAdThTd1bSFaORY1JF6mN+dHJEwc7KsCQ"}}, "unsigned": {"age_ts": 1570043693516}}i%eQa_$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3533}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-678:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043693315, "hashes": {"sha256": "LoVqXY25JLJZ5pZsvMuG89dwKc+Uwc/X5NNd0cbnXaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0tAptkQE9Wk/lyJx9OBnUHVxJhowToH11C1dD+nHO8ydHywk2/iqHtKj4Ap+6Px6A6d+dgqSBS4NUEUKiZu1DQ"}}, "unsigned": {"age_ts": 1570043693315}} $vqv 6 R N Y  ,j!V8K8v_CQ3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800]BQ/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800YAQ' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800_@Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800R?Q!G !PUIxAaiCnbqaVbawGu:localhost:8800test_stateC$83_outlier_C:localhost:42455>Q']Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800e=Q? Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility$1570043713441WJPkP:localhost:8800_<Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800Y;Q' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800]:Q/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800f9Q'E3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$82:localhost:42455_8Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800f7Q'E3 !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$82:localhost:42455u6Q'EQ !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455$1570043714442rgQEQ:localhost:8800e5Q? Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility$1570043713441WJPkP:localhost:8800]4Q/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800_3Q3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043712439XdJFc:localhost:88002Q']Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800Y1Q' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:88000Q'Ee !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0/Q'Ee !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455$Yj1rt_LOcsGS_lkdiK-A3WM8fjhMfKY8M_DXEYI4_ywo.Q? e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibility$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkog-Q/ e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEi,Q3 e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o +Q']e !OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYc*Q' e ~!OJilSqnQvLgoXSqRaW:localhost:8800m.room.create$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE)Q'Ee }!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo(Q'Ee |!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455$Y0pilSon-GVpe-MoIpC3_DaY-RTrW8XorV81tkFs5Eko'Q? e {!SrwdtDytJDUBVZOueF:localhost:8800m.room.history_visibility$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSco&Q? e z!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibility$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Ig%Q/ e y!SrwdtDytJDUBVZOueF:localhost:8800m.room.join_rules$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEg$Q/ e x!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rules$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpci#Q3 e w!SrwdtDytJDUBVZOueF:localhost:8800m.room.power_levels$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4i"Q3 e v!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE !Q']e u!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@anon-20191002_181700-679:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY Q']e t!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g 8l D `8]c!E@anon-20191002_181700-688:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQoXKOMYWOUIR127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-687:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAoIBFTGGSJGY127.0.0.1Perl + Net::Async::HTTP/0.44m~~]c!E@anon-20191002_181700-686:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwoFCAOSGHQKK127.0.0.1Perl + Net::Async::HTTP/0.44m|Ã}]c!E@anon-20191002_181700-685:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAoESVUDGRJIL127.0.0.1Perl + Net::Async::HTTP/0.44mU |]c!E@anon-20191002_181700-684:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogoQWWSYDBLAC127.0.0.1Perl + Net::Async::HTTP/0.44m/{]c!E@anon-20191002_181700-683:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQoWOMGUTEQPR127.0.0.1Perl + Net::Async::HTTP/0.44m z]c!E@anon-20191002_181700-682:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQoRHXEIACOYG127.0.0.1Perl + Net::Async::HTTP/0.44m:y]c!E@anon-20191002_181700-681:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQoCDCNSMATEC127.0.0.1Perl + Net::Async::HTTP/0.44mʪx]c!E@anon-20191002_181700-680:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEV1PUNQTkp1STtPSGFFRk0KMDAyZnNpZ25hdHVyZSCA0p0-R1uRS5Sl-AAOAB4_RaJ42AnhExKpRtMDgcydkQoEVTHCGRZGI127.0.0.1Perl + Net::Async::HTTP/0.44mw]c!E@anon-20191002_181700-679:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxGWjBOUGZPUnMtTF4jUGgKMDAyZnNpZ25hdHVyZSAiw3cANp-fhXAprmTW_Sr8B9dS78iibaBkmlcSawciYQoSNZWGQRAKF127.0.0.1Perl + Net::Async::HTTP/0.44m 2 "2t,eQau$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3540}{"auth_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4", "$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "prev_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4"], "type": "m.room.join_rules", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043698179, "hashes": {"sha256": "C3bHo6bw1ENHEm6Y2NBDso1YKvSrBZPQ2JTKiuGweBo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0KGpBhhZVOi0WRys1XR5ATIrjB/cYPgsaipdeCJbxtKwFkC75JZS0A9GU0Oywd6s6fOwp4dA+kjw5Ei6PK0/Aw"}}, "unsigned": {"age_ts": 1570043698179}}t+eQau$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3539}{"auth_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE", "$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE"], "type": "m.room.join_rules", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043697691, "hashes": {"sha256": "FCBmP6n+BZZC2D4pfjZci/vCfmJ+fVr2tvZWqPBOwGE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UbdsjDeMJUyvYhu/JZFwmNGr0qyEJWykSL6fJY6iyvUEfXu4hld3YmEqkqtqC4nKWY6pZlijGwMru6ZON4UOAA"}}, "unsigned": {"age_ts": 1570043697691}}k*eQac$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3538}{"auth_events": ["$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "prev_events": ["$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "type": "m.room.power_levels", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"users": {"@anon-20191002_181700-679:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043696580, "hashes": {"sha256": "VzUBXDI4gVoba+EAbUyBJI+MkZ2dPp040GRMVBNdqu8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JPukmvEb4kqHsMyfkq//UBvNZl6UnPphdrTNAFOkbXD9j1gmk8cN7KCXsj/45O4Y4UeCOkfHpJL7CXp5ECECCQ"}}, "unsigned": {"age_ts": 1570043696580}}k)eQac$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3537}{"auth_events": ["$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "type": "m.room.power_levels", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"users": {"@anon-20191002_181700-678:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043696149, "hashes": {"sha256": "bLApCeNmEshy8zvrHpiQo46qS4ruahhbk39Pg0lhm7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KlVbmUslaw6uYv/v3Fe6Ps+dH+Unyar2EoBxPXWoKPwgaFpbbpYUeYngOrVsqoPE0AkRE9GRevMemJVIe6fuBg"}}, "unsigned": {"age_ts": 1570043696149}} !o~z v r n j z 0r 73/+'KokQQQ$1570043730449XMaNb:localhost:8800$1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800k~QQQ$1570043729448XmFHA:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800k}QQQ$1570043728447IkYro:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800k|QQQ$1570043727446CGYaE:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{eeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800zeeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800yeeQ$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800xeeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800weeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800veeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800ueeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800teeQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800fsGQQ$83_outlier_C:localhost:42455$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800frGQQ$83_outlier_C:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800fqGQQ$83_outlier_C:localhost:42455$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800\pQ3Q$1570043715443SSqOY:localhost:8800$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800\o3QQ$82:localhost:42455$1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800knQQQ$1570043713441WJPkP:localhost:8800$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800kmQQQ$1570043712440rfNzQ:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800klQQQ$1570043712439XdJFc:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800kkQQQ$1570043711438bqOHL:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jeeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800ieeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800heeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800geeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800feeQ$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800eeeQ$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800deeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800ceeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800beeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc!PVyTvKbqnjSXfGWAMy:localhost:8800aeeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800`eeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800_eeQ$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800 SNl?_2   R~vI c ) V 6 h< p C  [.{N!m@sF& _ 23 c,Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ @,Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? ?,Q!WYyiQAVvitxsLZKVCG:localhost:8800 > >,Q!WYyiQAVvitxsLZKVCG:localhost:8800 = =,Q!WYyiQAVvitxsLZKVCG:localhost:8800 < <+Q !VOhMAiLfKyTOZbmKGw:localhost:8800mm,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WYyiQAVvitxsLZKVCG:localhost:8800 B B,Q!WYyiQAVvitxsLZKVCG:localhost:8800 A A +,Q!VOhMAiLfKyTOZbmKGw:localhost:8800oo,Q!VOhMAiLfKyTOZbmKGw:localhost:8800nn,Q!VCSCNemqikJZiRtxrs:localhost:8829,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ff,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ee,Q!WWZVpyLeZfyfpWidLx:localhost:8800dd,Q!WWZVpyLeZfyfpWidLx:localhost:8800cc,Q!WWZVpyLeZfyfpWidLx:localhost:8800bb,Q!WWZVpyLeZfyfpWidLx:localhost:8800aa,Q!WWZVpyLeZfyfpWidLx:localhost:8800``,Q!WWZVpyLeZfyfpWidLx:localhost:8800__,Q!WWZVpyLeZfyfpWidLx:localhost:8800^^+Q !WWZVpyLeZfyfpWidLx:localhost:8800]],Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !VUibrTIkcRbfrogbQV:localhost:8800  ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800qq,Q!VOhMAiLfKyTOZbmKGw:localhost:8800pp+Q !WFHIeSFQyuugGeBFxW:localhost:8800UU,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VUibrTIkcRbfrogbQV:localhost:8800 ! !,Q!VUibrTIkcRbfrogbQV:localhost:8800 ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800tt,Q!VOhMAiLfKyTOZbmKGw:localhost:8800ss,Q!VOhMAiLfKyTOZbmKGw:localhost:8800rr,Q!VUibrTIkcRbfrogbQV:localhost:8800 % %+Q !VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 +Q !VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 # #,Q!VUibrTIkcRbfrogbQV:localhost:8800 " ",Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !WVzjUePHrzCjfyTbmK:localhost:8800,Q!WFHIeSFQyuugGeBFxW:localhost:8800ZZ,Q!WFHIeSFQyuugGeBFxW:localhost:8800YY,Q!WFHIeSFQyuugGeBFxW:localhost:8800XX,Q!WFHIeSFQyuugGeBFxW:localhost:8800WW,Q!WFHIeSFQyuugGeBFxW:localhost:8800VV[,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800+Q !VNdqhtoDkyMoQdMTtM:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800+Q !WgXzOXLTeqaGfiDFhL:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 $ $+Q !WYyiQAVvitxsLZKVCG:localhost:8800 ; ; SNl?_2   R~vI c ) V 6 h< p C  [.{N!m@sF& _ 23 c,Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ @,Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? ?,Q!WYyiQAVvitxsLZKVCG:localhost:8800 > >,Q!WYyiQAVvitxsLZKVCG:localhost:8800 = =,Q!WYyiQAVvitxsLZKVCG:localhost:8800 < <+Q !VOhMAiLfKyTOZbmKGw:localhost:8800mm,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WYyiQAVvitxsLZKVCG:localhost:8800 B B,Q!WYyiQAVvitxsLZKVCG:localhost:8800 A A +,Q!VOhMAiLfKyTOZbmKGw:localhost:8800oo,Q!VOhMAiLfKyTOZbmKGw:localhost:8800nn,Q!VCSCNemqikJZiRtxrs:localhost:8829,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800 ,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ff,Q!WWZVpyLeZfyfpWidLx:localhost:8800 ee,Q!WWZVpyLeZfyfpWidLx:localhost:8800dd,Q!WWZVpyLeZfyfpWidLx:localhost:8800cc,Q!WWZVpyLeZfyfpWidLx:localhost:8800bb,Q!WWZVpyLeZfyfpWidLx:localhost:8800aa,Q!WWZVpyLeZfyfpWidLx:localhost:8800``,Q!WWZVpyLeZfyfpWidLx:localhost:8800__,Q!WWZVpyLeZfyfpWidLx:localhost:8800^^+Q !WWZVpyLeZfyfpWidLx:localhost:8800]],Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800,Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !VUibrTIkcRbfrogbQV:localhost:8800  ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800qq,Q!VOhMAiLfKyTOZbmKGw:localhost:8800pp+Q !WFHIeSFQyuugGeBFxW:localhost:8800UU,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VUibrTIkcRbfrogbQV:localhost:8800 ! !,Q!VUibrTIkcRbfrogbQV:localhost:8800 ,Q!VOhMAiLfKyTOZbmKGw:localhost:8800tt,Q!VOhMAiLfKyTOZbmKGw:localhost:8800ss,Q!VOhMAiLfKyTOZbmKGw:localhost:8800rr,Q!VUibrTIkcRbfrogbQV:localhost:8800 % %+Q !VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VhUAklonNaWKRnLkcr:localhost:8800 +Q !VhUAklonNaWKRnLkcr:localhost:8800 ,Q!VWYMJxEviBNDdJCuKT:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 # #,Q!VUibrTIkcRbfrogbQV:localhost:8800 " ",Q!WVzjUePHrzCjfyTbmK:localhost:8800+Q !WVzjUePHrzCjfyTbmK:localhost:8800,Q!WFHIeSFQyuugGeBFxW:localhost:8800ZZ,Q!WFHIeSFQyuugGeBFxW:localhost:8800YY,Q!WFHIeSFQyuugGeBFxW:localhost:8800XX,Q!WFHIeSFQyuugGeBFxW:localhost:8800WW,Q!WFHIeSFQyuugGeBFxW:localhost:8800VV[,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800,Q!VNdqhtoDkyMoQdMTtM:localhost:8800+Q !VNdqhtoDkyMoQdMTtM:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800,Q!WgXzOXLTeqaGfiDFhL:localhost:8800+Q !WgXzOXLTeqaGfiDFhL:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VAEDgDJVqmxXZyAlSW:localhost:8800,Q!VUibrTIkcRbfrogbQV:localhost:8800 $ $+Q !WYyiQAVvitxsLZKVCG:localhost:8800 ; ; X P  q # {3ayxY ke'Q ]$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEm.room.member!lgejtcwlywOoIXwEgy:localhost:8800m m@anon-20191002_181700-682:localhost:8800j e'Q  ]$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkom.room.create!lgejtcwlywOoIXwEgy:localhost:8800mm@anon-20191002_181700-682:localhost:8800ziAQ A $86_sent_F:localhost:42455message!PUIxAaiCnbqaVbawGu:localhost:8800 mm@fake_user:localhost:42455zhAQ A $85_sent_E:localhost:42455message!PUIxAaiCnbqaVbawGu:localhost:8800 mm^@fake_user:localhost:42455gMQ A $84_backfilled_D:localhost:42455message!PUIxAaiCnbqaVbawGu:localhost:8800 mm@fake_user:localhost:42455fG!Q E$83_outlier_C:localhost:42455test_state!PUIxAaiCnbqaVbawGu:localhost:8800mm@__ANON__-54:localhost:42455eQ3Q ]$1570043715443SSqOY:localhost:8800m.room.power_levels!PUIxAaiCnbqaVbawGu:localhost:8800mum+@anon-20191002_181700-681:localhost:8800{d3'Q E$82:localhost:42455m.room.member!PUIxAaiCnbqaVbawGu:localhost:8800m>m@__ANON__-54:localhost:42455"cQ?Q ]$1570043713441WJPkP:localhost:8800m.room.history_visibility!PUIxAaiCnbqaVbawGu:localhost:8800m'mٖ@anon-20191002_181700-681:localhost:8800bQ/Q ]$1570043712440rfNzQ:localhost:8800m.room.join_rules!PUIxAaiCnbqaVbawGu:localhost:8800mBmմ@anon-20191002_181700-681:localhost:8800aQ3Q ]$1570043712439XdJFc:localhost:8800m.room.power_levels!PUIxAaiCnbqaVbawGu:localhost:8800mLm@anon-20191002_181700-681:localhost:8800`Q'Q ]$1570043711438bqOHL:localhost:8800m.room.member!PUIxAaiCnbqaVbawGu:localhost:8800mmp@anon-20191002_181700-681:localhost:8800_ Q'Q  ]$1570043710437aFoBB:localhost:8800m.room.create!PUIxAaiCnbqaVbawGu:localhost:8800m%m|@anon-20191002_181700-681:localhost:8800^e'Q E$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0m.room.member!OJilSqnQvLgoXSqRaW:localhost:8800m'mġ@__ANON__-53:localhost:42455,]e?Q ]$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xkom.room.history_visibility!OJilSqnQvLgoXSqRaW:localhost:8800mm@anon-20191002_181700-680:localhost:8800$\e/Q ]$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEEm.room.join_rules!OJilSqnQvLgoXSqRaW:localhost:8800mYmW@anon-20191002_181700-680:localhost:8800&[e3Q ]$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1om.room.power_levels!OJilSqnQvLgoXSqRaW:localhost:8800m幆m庌@anon-20191002_181700-680:localhost:8800 Ze'Q ]$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYm.room.member!OJilSqnQvLgoXSqRaW:localhost:8800mem嶾@anon-20191002_181700-680:localhost:8800Y e'Q  ]$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWEm.room.create!OJilSqnQvLgoXSqRaW:localhost:8800mQm峴@anon-20191002_181700-680:localhost:8800!Xe)Q ]$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNom.room.message!PVyTvKbqnjSXfGWAMy:localhost:8800m2m宁@anon-20191002_181700-678:localhost:8800We'Q E$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOom.room.member!SrwdtDytJDUBVZOueF:localhost:8800m婃m@__ANON__-52:localhost:42455,Ve?Q ]$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScm.room.history_visibility!SrwdtDytJDUBVZOueF:localhost:8800m3m@anon-20191002_181700-679:localhost:8800,Ue?Q ]$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4Im.room.history_visibility!PVyTvKbqnjSXfGWAMy:localhost:8800mmy@anon-20191002_181700-678:localhost:8800$Te/Q ]$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZEm.room.join_rules!SrwdtDytJDUBVZOueF:localhost:8800mm@anon-20191002_181700-679:localhost:8800$Se/Q ]$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcm.room.join_rules!PVyTvKbqnjSXfGWAMy:localhost:8800mm圔@anon-20191002_181700-678:localhost:8800 X} { y w u sqomkigy 2XjQQQ$1570043712440rfNzQ:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043712440rfNzQ:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043712440rfNzQ:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043712439XdJFc:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043712439XdJFc:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800j QQQ$1570043711438bqOHL:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800~ eeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800~eeQ$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~~eeQ$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800~}eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800~|eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~{eeQ$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800~zeeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800~yeeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~xeeQ$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800~weeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800~veeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800~ueeQ$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800~teeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800~seeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800~reeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800~qeeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800~peeQ$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800 2RM H C \  7 2-<U?X ?X q$J~QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043750466Tmiqu:localhost:8800;}Q3 !KetCYFxrTxawNOGnOf:localhost:8800$94:localhost:42455J|QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043748464QpNXV:localhost:8800J{QQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043748463euAqZ:localhost:8800JzQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043747462YuUEF:localhost:8800JyQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043746461eQhrq:localhost:8800JxQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043745460sJOiY:localhost:8800JwQQ!JiUawCFQnodcpssOfK:localhost:8800$1570043744459BIUYb:localhost:8800JvQQ!JiUawCFQnodcpssOfK:localhost:8800$1570043741458PZvre:localhost:8800>uQ9!JiUawCFQnodcpssOfK:localhost:8800$91_m1:localhost:42455JtQQ!JiUawCFQnodcpssOfK:localhost:8800$1570043741458PZvre:localhost:8800;sQ3 !JiUawCFQnodcpssOfK:localhost:8800$90:localhost:42455JrQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043739456qeuuS:localhost:8800JqQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043738455KNDHf:localhost:8800JpQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043737454adOjg:localhost:8800JoQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736453VtbeL:localhost:8800JnQQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736452Igyim:localhost:8800;mQ3 !NgkQVVUNzoyCVPtckM:localhost:8800$89:localhost:42455JlQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043733451EJhWh:localhost:8800;kQ3 !NgkQVVUNzoyCVPtckM:localhost:8800$87:localhost:42455JjQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043730449XMaNb:localhost:8800JiQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043729448XmFHA:localhost:8800JhQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043728447IkYro:localhost:8800JgQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043727446CGYaE:localhost:8800JfQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043726445lSnmj:localhost:8800TeQe !lgejtcwlywOoIXwEgy:localhost:8800$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQTdQe !lgejtcwlywOoIXwEgy:localhost:8800$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkTcQe !lgejtcwlywOoIXwEgy:localhost:8800$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8ETbQe !lgejtcwlywOoIXwEgy:localhost:8800$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcTaQe !lgejtcwlywOoIXwEgy:localhost:8800$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYT`Qe !lgejtcwlywOoIXwEgy:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkET_Qe !lgejtcwlywOoIXwEgy:localhost:8800$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkoJ^QQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043715443SSqOY:localhost:8800;]Q3 !PUIxAaiCnbqaVbawGu:localhost:8800$82:localhost:42455J\QQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043713441WJPkP:localhost:8800J[QQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043712440rfNzQ:localhost:8800JZQQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043712439XdJFc:localhost:8800JYQQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043711438bqOHL:localhost:8800JXQQ !PUIxAaiCnbqaVbawGu:localhost:8800$1570043710437aFoBB:localhost:8800TWQe !OJilSqnQvLgoXSqRaW:localhost:8800$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0TVQe !OJilSqnQvLgoXSqRaW:localhost:8800$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66XkoTUQe !OJilSqnQvLgoXSqRaW:localhost:8800$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEETTQe !OJilSqnQvLgoXSqRaW:localhost:8800$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1oTSQe !OJilSqnQvLgoXSqRaW:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYTRQe !OJilSqnQvLgoXSqRaW:localhost:8800$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWETQQe !PVyTvKbqnjSXfGWAMy:localhost:8800$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNoTPQe !SrwdtDytJDUBVZOueF:localhost:8800$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOoTOQe !SrwdtDytJDUBVZOueF:localhost:8800$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuScTNQe !PVyTvKbqnjSXfGWAMy:localhost:8800$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4ITMQe !SrwdtDytJDUBVZOueF:localhost:8800$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE Iyj[L=.zk\M>/  { l ] N ? 0 !   ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9*  | m ^ O @ 1 "   } n _ P A 2 #   vgXI  } n _ P A 2 #   m]]m\\m h[[mZZmYYmXXm$WWmA //m;..m8--m5v,,m3++m/**m&.))m!6((m''m5&&m%%m$$m##mV""m!!m.  mmm$mٸmmm^mHmPmmmEm m}mmxVmtmrmo  ml  mj@  mf>  ma  m^m\TmY(mV mPmMmK.mHnmErmB m< m9 m70 m3u m0 m* m( m$ m mm m m? ma m mu m m m0 m m m m m m m mu m> m' mB mL m m% m' m mY m幆 me mQ m2 m婃 m3 m m m m m mM m- m m mk ma ma ma ma ma mW mW mW mW mP mJz mGB mD; m@ m=a m0A m(w m(` m(_ m(^ mNNmXMMmSLLmKKmJJm縏IIm>HHm粸GGm穣FFmEEm#DDmCCm(BBm疣AAm瓕@@m???m_>>m炝==m<<m}>;;my::mo99ml88mh77me(66maf55mX44mT/33mO22mL11mI00m4 m& m% m% m / m  m  m  m mX m m m mP m, mh mg m m( m֨ m m m m m_ m m m% m mH m䬆 m䨆 m. m< mG m: m䖲 m mG m my m  m䀮 ~ ~m} } }mz | |mu@ { {mrZ z zmoS y yml x xmh w wma* v vmPVVmUUm^TTmSSm݈RRm?QQmQPPmOO  wm0eQw$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "txn_id": "616", "stream_ordering": 3544}{"auth_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE", "$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I"], "type": "m.room.message", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"body": "Hello world", "msgtype": "m.text"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043702834, "hashes": {"sha256": "VNfRzeC9J8S4rxRlBUUMbFT9aHdDTe/7j2ZoIY5IfEI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1N6ZxRky5+vPLbiZbZLtLPQY5a0gzY3SMNYaiIDtrBJ7n9Clmy5lPOwzmCaKN6SgfLkhbdSCGXMFZpyH8JIVAw"}}, "unsigned": {"age_ts": 1570043702834}}}/eQ33$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo!SrwdtDytJDUBVZOueF:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3543}{"hashes": {"sha256": "n5VLZfrhAuRYNHe228GBU9E5o9KalCOmUQ25yJxhnaE"}, "sender": "@__ANON__-52:localhost:42455", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "type": "m.room.member", "depth": 6, "state_key": "@__ANON__-52:localhost:42455", "origin": "localhost:42455", "origin_server_ts": 1570043701635, "prev_events": ["$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc"], "auth_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4", "$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE"], "content": {"membership": "join"}, "signatures": {"localhost:42455": {"ed25519:1": "7dof3tcuOyMKMgUtKeQIAGhdp/9RqnD/6Y77Hzlb1Y7T5fce27o7dAlw0u0Mb0Lh05aPlgdUFiTkyEwMKVGWCA"}}, "unsigned": {}}.eQa$j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800{"token_id": 659, "stream_ordering": 3542}{"auth_events": ["$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4", "$yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk", "$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY"], "prev_events": ["$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE"], "type": "m.room.history_visibility", "room_id": "!SrwdtDytJDUBVZOueF:localhost:8800", "sender": "@anon-20191002_181700-679:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043699763, "hashes": {"sha256": "YuGZqfK6Gox2qauh0aPwyV/UAn/hDA6igb9adQ1V0/8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xA0Bn9RjVFrmA3E+6xXdqFJv1gNbnMqie/e7AHNHqMlpBoL6ulzStNI4MREY3sroyHujmH7+J+5fw9SC6W6mDQ"}}, "unsigned": {"age_ts": 1570043699763}}-eQa$GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800{"token_id": 658, "stream_ordering": 3541}{"auth_events": ["$h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE", "$tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI", "$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g"], "prev_events": ["$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc"], "type": "m.room.history_visibility", "room_id": "!PVyTvKbqnjSXfGWAMy:localhost:8800", "sender": "@anon-20191002_181700-678:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043699199, "hashes": {"sha256": "JW57cc6pmtKHxgLrGHUeuQ3lzA/c+1wIcRUrRgV3WfM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dBsqtjnlssKeshZgVV9CtEwtyCnEJB8L/YQVmZMBfpy1l2bPf+/mE9L6ABOQFL+kMEPRoadui+NEOu4NoQ4pAg"}}, "unsigned": {"age_ts": 1570043699199}} $' + W  y2eQ%=$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800content.bodyMessage from AS directlyi1eQ%$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg!ABHbfUdkHCJksMsaUt:localhost:8800content.bodytest.pngi0eQ%$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s!DntdfAPfCfgdOoRMdl:localhost:8800content.bodytest.txte/eQ%$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs!DntdfAPfCfgdOoRMdl:localhost:8800content.bodytesti.eQ%$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc!THHfVSOSWiBQTHRAnJ:localhost:8800content.bodytest.txtY-QQ%$1570043754467mNKfq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800content.bodym3M,9Q%$98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800content.bodyM2M+9Q%$95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800content.bodyM1Y*QQ%$1570043744459BIUYb:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800content.bodym3M)9Q%$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800content.bodyM1N(3Q%$88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800content.bodyDeniedj'eQ%$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ!lgejtcwlywOoIXwEgy:localhost:8800content.bodyMessage 1l&eQ%#$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo!PVyTvKbqnjSXfGWAMy:localhost:8800content.bodyHello world Fm< xG R ! ]  e 4 p?{JU$`/k: vE , h 7  s B[xG*0]@anon-20191002_181700-713:localhost:88000]@anon-20191002_181700-712:localhost:88000]@anon-20191002_181700-711:localhost:88000]@anon-20191002_181700-710:localhost:88000]@anon-20191002_181700-709:localhost:88000]@anon-20191002_181700-708:localhost:88000]@anon-20191002_181700-707:localhost:88000]@anon-20191002_181700-706:localhost:88000]@anon-20191002_181700-705:localhost:88000]@anon-20191002_181700-704:localhost:88000]@anon-20191002_181700-703:localhost:88000]@anon-20191002_181700-702:localhost:88000]@anon-20191002_181700-701:localhost:88000]@anon-20191002_181700-700:localhost:88000]@anon-20191002_181700-697:localhost:88000]@anon-20191002_181700-698:localhost:88000]@anon-20191002_181700-696:localhost:88000]@anon-20191002_181700-695:localhost:88000]@anon-20191002_181700-693:localhost:88000]@anon-20191002_181700-692:localhost:88000]@anon-20191002_181700-691:localhost:88000]@anon-20191002_181700-690:localhost:88000]@anon-20191002_181700-689:localhost:88000]@anon-20191002_181700-688:localhost:88000]@anon-20191002_181700-687:localhost:88000]@anon-20191002_181700-686:localhost:88000]@anon-20191002_181700-685:localhost:88000]@anon-20191002_181700-684:localhost:88000]@anon-20191002_181700-683:localhost:88000]@anon-20191002_181700-682:localhost:88000]@anon-20191002_181700-681:localhost:88000]@anon-20191002_181700-680:localhost:88000]@anon-20191002_181700-679:localhost:88000]@anon-20191002_181700-678:localhost:88000]@anon-20191002_181700-677:localhost:88000]@anon-20191002_181700-676:localhost:8800$E@__ANON__-48:localhost:424550]@anon-20191002_181700-675:localhost:88000]@anon-20191002_181700-673:localhost:88000]@anon-20191002_181700-674:localhost:8800$E@__ANON__-46:localhost:424550] @anon-20191002_181700-724:localhost:88000] @anon-20191002_181700-723:localhost:88000] @anon-20191002_181700-722:localhost:88000] @anon-20191002_181700-721:localhost:88000]@anon-20191002_181700-720:localhost:88000]@anon-20191002_181700-718:localhost:88000]@anon-20191002_181700-719:localhost:88000]@anon-20191002_181700-717:localhost:88000]@anon-20191002_181700-716:localhost:88000]@anon-20191002_181700-715:localhost:88000]@anon-20191002_181700-714:localhost:88000]@anon-20191002_181700-672:localhost:88000]@anon-20191002_181700-671:localhost:88000]@anon-20191002_181700-670:localhost:88000]@anon-20191002_181700-669:localhost:88000]@anon-20191002_181700-668:localhost:88000]@anon-20191002_181700-667:localhost:88000]@anon-20191002_181700-666:localhost:88000]@anon-20191002_181700-665:localhost:88000]@anon-20191002_181700-664:localhost:880010]@anon-20191002_181700-663:localhost:88000]@anon-20191002_181700-662:localhost:88000]@anon-20191002_181700-661:localhost:88000]@anon-20191002_181700-660:localhost:88000]@anon-20191002_181700-659:localhost:88000]@anon-20191002_181700-658:localhost:88000]@anon-20191002_181700-657:localhost:88000]@anon-20191002_181700-656:localhost:88000]@anon-20191002_181700-655:localhost:8800   *t4eQau$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3548}{"auth_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o", "$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "prev_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o"], "type": "m.room.join_rules", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043706457, "hashes": {"sha256": "P2E+VYly/7UThDWEEJE8n+Y35J7GfZlXUZO5nXjHRsE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Jt8k5d9Cr+pHme65fwi/M3J2rPySA/SOtFlvL2qBfqRI2VBEztzuRagQM169wwwkuMT/ecG6PZHNKEyM2IUaAw"}}, "unsigned": {"age_ts": 1570043706457}}k3eQac$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3547}{"auth_events": ["$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "prev_events": ["$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "type": "m.room.power_levels", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"users": {"@anon-20191002_181700-680:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043705734, "hashes": {"sha256": "c54e81t17I3qsAPXv/FIML/c7lT/S0zuDCQWtqwF3+4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZAyP5acf3AXheAdfR/sG7srJCaUYuH0VBT2OesMHR+hbPqTL72YC4lUGLgZM2ZrXa70anJjqfZUqLF3rYu5nCA"}}, "unsigned": {"age_ts": 1570043705734}}v2eQay$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3546}{"auth_events": ["$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE"], "prev_events": ["$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE"], "type": "m.room.member", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-680", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-680:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043704933, "hashes": {"sha256": "PdKXTMgCgNnAgPbkiuynudXbzlxb9RPc4Zi2TIeMXeA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QsZRGkNOl2ivix7qe1YkxP2yCiI/RQjzvtrBg3SZhGOgS/vnTCe1Pr1b0Q7ISk5cwifNvE4ae/EHK6vHoAm8DA"}}, "unsigned": {"age_ts": 1570043704933}}i1eQa_$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3545}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-680:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043704145, "hashes": {"sha256": "EVmdCzcMyNSpaiuskL2PtrAOyPmQUo6HpA6JS11SIkc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PX0t022V2VoUGT3eu3sNlHvGGEkHyXd+pFNuStbK9yphznNXKsz4LM8QbNsiqzKzlBnaXLYQA79Y9KX1nT1bAA"}}, "unsigned": {"age_ts": 1570043704145}} &X= M q  M 3 Bp&D_}RX[,QQ/ $1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules]+QQ3 $1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels*QQ']$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800W)QQ' $1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.create](QQ3 $1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levelsd'3Q'E$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455c&QQ? $1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility[%QQ/ $1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules]$QQ3 $1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels#QQ']$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800W"QQ' $1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.create]!QQ3 $1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levelsd 3Q'E$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455cQQ? $1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility[QQ/ $1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules]QQ3 $1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levelsQQ']$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800WQQ' $1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.create}eQ'E$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455meQ? $PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibilityeeQ/ $yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rulesgeQ3 $l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels eQ']$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800aeQ' $IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800m.room.createPGQ!$83_outlier_C:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800test_stateC]QQ3 $1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levelsd3Q'E$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455cQQ? $1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility[QQ/ $1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules]QQ3 $1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levelsQQ']$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800W QQ' $1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.create} eQ'E$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455m eQ? $WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibilitye eQ/ $KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rulesg eQ3 $cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels eQ']$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800aeQ' $7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.create ItE\- r C  Y + o @  U & j ; Q"f7|Mb3wI_0tE[,.Q.Q!jDKAOtmeAGbYTpwyEW:localhost:8800th.Q!jDKAOtmeAGbYTpwyEW:localhost:8800m.Q!itfjLXhEaORJLkbfVS:localhost:8800th.Q!itfjLXhEaORJLkbfVS:localhost:8800m.Q!itKDOCtoMkFUETDtle:localhost:8800th-Q!itKDOCtoMkFUETDtle:localhost:8800mU.Q!ijOiudvuzOLNmgNKfG:localhost:8800th.Q!ijOiudvuzOLNmgNKfG:localhost:8800mV.Q!ifQxHmNAcSSGHVMjfi:localhost:8800th-Q!ifQxHmNAcSSGHVMjfi:localhost:8800m|.Q!icheSPMgpemswIdQkw:localhost:8800th.Q!icheSPMgpemswIdQkw:localhost:8800m.Q!iTQSCiLqRMDtgXtUdC:localhost:8800th.Q!iTQSCiLqRMDtgXtUdC:localhost:8800m.Q!iLHJbsFszubrnybDNz:localhost:8800th.Q!iLHJbsFszubrnybDNz:localhost:8800mT.Q!iKezIvJyjkNqKayFju:localhost:8800th.Q!iKezIvJyjkNqKayFju:localhost:8800m*.Q!hrhDJbmXvXBizKoiiK:localhost:8800th.Q!hrhDJbmXvXBizKoiiK:localhost:8800mU.Q!hnQOBexFYpvJntEChZ:localhost:8800m.Q!hgjYwwwjWJNgwrzOto:localhost:8800th-Q!hgjYwwwjWJNgwrzOto:localhost:8800mh.Q!hegUPDZCEEmBhsNJJR:localhost:8800th.Q!hegUPDZCEEmBhsNJJR:localhost:8800mJ.Q!hZuwenlFDapIPBOyfi:localhost:8800th.Q!hZuwenlFDapIPBOyfi:localhost:8800m.Q!hYPSaMPGsLnvYSmwhg:localhost:8800th.Q!hYPSaMPGsLnvYSmwhg:localhost:8800m.Q!hWHyATwKfuznrqTiyu:localhost:8800th.Q!hWHyATwKfuznrqTiyu:localhost:8800m.Q!hSzBsirdPWHtVjagXn:localhost:8800th-Q!hSzBsirdPWHtVjagXn:localhost:8800mn.Q!hNCwypIzdDZDVmCEfd:localhost:8800th.Q!hNCwypIzdDZDVmCEfd:localhost:8800m.Q!hGsPmWXboxZZtOlsxY:localhost:8800th.Q!hGsPmWXboxZZtOlsxY:localhost:8800mS.Q!hFwigdYZkwYNSwelRH:localhost:8800th.Q!hFwigdYZkwYNSwelRH:localhost:8800mE.Q!hDAzBWYEyRVBRlrCHh:localhost:8800m.Q!gXfXRDTXeVvOHQdaaQ:localhost:8800th.Q!gXfXRDTXeVvOHQdaaQ:localhost:8800mK.Q!fuHSJcznvGQnoYoLPW:localhost:8800th.Q!fuHSJcznvGQnoYoLPW:localhost:8800m.Q!fsbkkRBZlUcBVVfMME:localhost:8800th.Q!fsbkkRBZlUcBVVfMME:localhost:8800m.Q!fkvdYkesQOFCAQkzky:localhost:8800m.Q!ffijTnPMbTrDXHqOXf:localhost:8800th.Q!ffijTnPMbTrDXHqOXf:localhost:8800m.Q!fdEymmlcUvjgshvVyl:localhost:8800th.Q!fdEymmlcUvjgshvVyl:localhost:8800mO.Q!fcdNYFWFyxmdpKAknc:localhost:8800th-Q!fcdNYFWFyxmdpKAknc:localhost:8800mr.Q!fOJLpnbtgKNxxVDquX:localhost:8800th.Q!fOJLpnbtgKNxxVDquX:localhost:8800m.Q!fJXiUpbbOlLbHWmPgs:localhost:8800th-Q!fJXiUpbbOlLbHWmPgs:localhost:8800m3.Q!fGkUEndqGrieltwbCh:localhost:8800th.Q!fGkUEndqGrieltwbCh:localhost:8800m;.Q!fDISaqNBhlOwherxSt:localhost:8800th.Q!fDISaqNBhlOwherxSt:localhost:8800mj.Q!eySSVuCclRpBDgwKIU:localhost:8800th-Q!eySSVuCclRpBDgwKIU:localhost:8800m4.Q!erBPdgtUsiOfIKUkho:localhost:8800th-Q!erBPdgtUsiOfIKUkho:localhost:8800mp.Q!egbhiBqOGhloZzopol:localhost:8800th.Q!egbhiBqOGhloZzopol:localhost:8800m.Q!egCvzKpbEwmuvDoBTb:localhost:8800th-Q!egCvzKpbEwmuvDoBTb:localhost:8800m1.Q!edbUkYJIZBNOiTuLJs:localhost:8800th-Q!edbUkYJIZBNOiTuLJs:localhost:8800m6.Q!eZjhYVNpwdogVDKHCk:localhost:8800th.Q!eZjhYVNpwdogVDKHCk:localhost:8800m hH(H X@xP( 0  h @  x P ( ` 8  p H h@xP(`8pH X0h X0hhP'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 'Q!SnROoiDBapNNtMmKnT:localhost:8800 ('Q!SpXEytywhTbAftyVBr:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800 h'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800p'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800m'Q!SfYtaUhCFosNfHfUVm:localhost:8800l'Q!SfYtaUhCFosNfHfUVm:localhost:8800j'Q!SfYtaUhCFosNfHfUVm:localhost:8800h'Q!SfYtaUhCFosNfHfUVm:localhost:8800f'Q!SfYtaUhCFosNfHfUVm:localhost:8800d'Q!SfYtaUhCFosNfHfUVm:localhost:8800b'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800 |u m= e ] U MEeeQ$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800 yeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800 FeeQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800 ÁeeQ$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirE$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGI!BrssELMbasSzTFpIXm:localhost:8800#eeQ$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q!XgobMgBjNcDRJnRXLD:localhost:8800YeeQ$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8$jlSCLoGxgAspSaEu8FzhfLTPxwGS_5QLKyu1HWCQWw0!rQeYcODvQiLsOIbQrJ:localhost:8800deeQ$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c$DdnlrhlsXY9VJ0HjRj69TxgdPeFqijeIbLhDqIP6DGQ!nxLxsxzliamzflrEBs:localhost:8800eeQ$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k!GGXyLHdVXqhQjPRvac:localhost:8800)eeQ$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ng$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI!OMkiVTuuOEeiFAXtUY:localhost:8800/eeQ$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQ$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsY!dnZVySJLGNtUKsSgXW:localhost:8800eeQ$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648$Fya9BNgYq_LWQnrzInI3p1LABIMwtXX3Av6JUSLFZzc!SfYtaUhCFosNfHfUVm:localhost:8800eeQ$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvk!vttkrtSyHEJXVMlvLo:localhost:8800heeQ$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI!XcaKxZsPvbZhAGKKdx:localhost:8800΁eeQ$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM!XgobMgBjNcDRJnRXLD:localhost:8800ZeeQ$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c$x9zK05E022e6s7NQhHsRU4Qy3yxllqAOk0bk7u9_NfM!wLitJYvgvNJzanSIvO:localhost:8800eeQ$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4!NfaPEGKjnUDUTavzol:localhost:8800UeeQ$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms$UP84xIcLXH_5XXRMcAC4TS8wG8PzZjHEByj7Wq_GoJw!uxKymrHZeXRYCZwekU:localhost:88005eeQ$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk$y87LZVXtLWxePbeWFQ9dphpneHW77v8wbaff5dKh9Lk!eySSVuCclRpBDgwKIU:localhost:8800 ~ > C q )@E(I  3 bw # N } U~m0eQ? $PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibilityaeQ' $tGIwNDpsLYr-xnTtyuJHvo2A5zuyaHvbXIlm1TAqqqI!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.create3eQ'E$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455joina2eQ' $IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800m.room.createg1eQ3 $l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levelsg!eQ3 $cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o!OJilSqnQvLgoXSqRaW:localhost:8800m.room.power_levels eQ']$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@anon-20191002_181700-680:localhost:8800joinaeQ' $7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.createeQ'E$uz4vZi7XBVX-9ZW0qMqw7Fr82cvdLHhB5gBCYumeUOo!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@__ANON__-52:localhost:42455joinmeQ? $j34ApEepME1J62Sb7oh-NvAHMnkMar0EjnazS_WkuSc!SrwdtDytJDUBVZOueF:localhost:8800m.room.history_visibilitymeQ? $GI6-nBrbAqNn4CYsuTPD8PV1IN6XMBEkruZQqDtKh4I!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.history_visibilityeeQ/ $QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE!SrwdtDytJDUBVZOueF:localhost:8800m.room.join_ruleseeQ/ $lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpc!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.join_rulesgeQ3 $TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800m.room.power_levelsgeQ3 $h0RJKp3OANuGqlLyr2iSBqKLP8cx-z0RnySURUpgmRE!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.power_levels eQ']$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHY!SrwdtDytJDUBVZOueF:localhost:8800m.room.member@anon-20191002_181700-679:localhost:8800join eQ']$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4g!PVyTvKbqnjSXfGWAMy:localhost:8800m.room.member@anon-20191002_181700-678:localhost:8800joinaeQ' $yHW8EtVw9P_rEhpqi7-YoxDBaVjl_s4xe_KtNatUSuk!SrwdtDytJDUBVZOueF:localhost:8800m.room.createh*3Q'E$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@__ANON__-54:localhost:42455joinc)QQ? $1570043713441WJPkP:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.history_visibility[(QQ/ $1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules]+QQ3 $1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels&QQ']$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800joinW%QQ' $1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$eQ'E$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!OJilSqnQvLgoXSqRaW:localhost:8800m.room.member@__ANON__-53:localhost:42455joinm#eQ? $WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800m.room.history_visibilitye"eQ/ $KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE!OJilSqnQvLgoXSqRaW:localhost:8800m.room.join_rules  w8QQa) $1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800{"token_id": 661, "stream_ordering": 3552}{"auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}]], "prev_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}]], "type": "m.room.member", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@anon-20191002_181700-681:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-681", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-681:localhost:8800", "event_id": "$1570043711438bqOHL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043711240, "hashes": {"sha256": "EsH8pflY5zWDxiBHdVj2tJy6TMLR/p6r0CraF0Vm9NY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gjsxlEWQUhIUeyYfRmvCYod+ZAhRV9PmKxazKCvkzS2N+FnLq+wgFUkK6F3WuimkXlwEhb1MUTXUJahgq/P3Bg"}}, "unsigned": {"age_ts": 1570043711240}}7QQaC $1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800{"token_id": 661, "stream_ordering": 3551}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@anon-20191002_181700-681:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-681:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043710437aFoBB:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043710501, "hashes": {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1Mxv8KyrXXa5IkiAfOYiDz1WqH63DxQ7zMf8dRmKSM5KKLFSTVBOh0Fr5mYm++LH08dqTU0bTCs1FXAxEcWFCA"}}, "unsigned": {"age_ts": 1570043710501}}}6eQ33$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0!OJilSqnQvLgoXSqRaW:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3550}{"content": {"membership": "join"}, "auth_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o", "$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE"], "prev_events": ["$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko"], "origin_server_ts": 1570043708455, "state_key": "@__ANON__-53:localhost:42455", "depth": 6, "origin": "localhost:42455", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "type": "m.room.member", "sender": "@__ANON__-53:localhost:42455", "hashes": {"sha256": "Mblyt+yGTcj7foih2Tsu4gtMkJ5QkiiCce8JUhGheBo"}, "signatures": {"localhost:42455": {"ed25519:1": "YTbU5e/NKHCySH2liY6B/2pAOtO5tlCSU5QD/24a6gM7u0GWOZcleMtzivYYjcEYXGensIKvPGtX8HHtsOR3DA"}}, "unsigned": {}}5eQa$WoTWswEqyzhNvl0hcCYMYx2jJc_AHdlwCIc6ml66Xko!OJilSqnQvLgoXSqRaW:localhost:8800{"token_id": 660, "stream_ordering": 3549}{"auth_events": ["$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o", "$7mMgvgnjTKU2W4TwCgHCh1oYKdkdwKrBlJ6JskWjAWE", "$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY"], "prev_events": ["$KKZD1b03wbYXBaKwu3FgO4f_rmc_aTc3CjaDJJOLeEE"], "type": "m.room.history_visibility", "room_id": "!OJilSqnQvLgoXSqRaW:localhost:8800", "sender": "@anon-20191002_181700-680:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043707165, "hashes": {"sha256": "Jw1VN4padfF+rbpAnr9Nmeq1gcFm6ETAQssKzjqBUME"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qcGop3cjhuth03FTHzhM//5ePP2PcMf1P7ra3EVkeFi3Y3LKMEuLnG6aH6kBlqR13E+MDaccltAc44p4SN7XDw"}}, "unsigned": {"age_ts": 1570043707165}} 8p7  S  k  oP 6 21M  R m N n 5 Q3 jl8e$RZcunCcmii8e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQUsha256 X8e$RttQi9mQFZZzgnMe2feVrBre_M8FNJZ5RXhp-id0fQksha256 88e$RwSChSJOnfLwUeLrc8MfO9kmxLZGoWga8tX_ojhBq4wsha256"8e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4sha2568e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Ysha2568e$RsDxBRdiayS2isEnBPxkSPMmH3hhhZMIygJWIveWRWAsha2568e$RwDy14wFtaOznm6UzQNwN9ko4j6FwcCFkVnjp5Bww3wsha2568e$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQsha2568e$SKmYzq3Sz9m1klVo-WLXZE6v6zSnbXhbCxc1Tx_43XMsha25698e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zssha2568e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYsha256?8e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Nssha25628e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQsha256 8e$S53dnW7xm3BBG3r1KvlFKekPmCZgufdLiNAUSoE4jzEsha256 8e$RsioQZS5MnRZVSeG-JFFpxQMN6DgsesRzYMFZChJgVssha256 v8e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8sha256 sO98e$RfQqSPUn1+i/MX1Zo56T7+M47PnEHSqDg0+K9sI0Z6Ysha256 8e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvYsha256m8e$SExtAOrYXLT3PH9t221_AAa_2joDsjXyUsuy6h7X3Bcsha256 ]8e$SUZsbqFUPFkTr8aQxY3-aA1KqrH7WxOCq7CfmdjXlRssha256 r8e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6csha256 8e$Rk9m80IXbcjesZsBdJ_t7y8aCTGkLGBjDNLXb1DUUkIsha256 8e$Rd6e80uXOt11pvy7znBZQhPNqaheiEzpizX3TZlOZocsha256 498e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Qsha256 \U98e$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUosha2568e$SN-TtLmjdcIRYmiQeUZX_k4hJ3KmLpLtESodTjmwvyEsha2568e$SJpwdC5wcAecfsb8KWuxMsBA2bHxJl8Uf9ifBRGsgEAsha256Q8e$SFax4USVNflPF5czeWGh9FmkpJttVQfTu7hvDrKIJuIsha2568e$SDxqZZT__nVTs01s_PBMd-7yNuPYkU8repsPrqviOuIsha2568e$SCuckMhkPxk2eCcnqQU_vgC_oBjMMiLbLMewXBTCCEgsha2568e$SBm8_7iuQlq1r__Qf6gpgS01-6-FQiXxSKY3V3-iAc8sha2568e$S9iwv7b6Rczchh6Duwi1E9pnAdh0n_iuXztBdp66Xzosha2568e$S64NpLsnosgDz3zG08X-PrHXhSpcMWXZBsWjl7IAG4Ysha2568e$S3dxnX8FZbXxOIjh0tOGKYEhNnHZxFhLuNVDz0OHnd8sha2568e$S3TbNx6ib42clAQ7E28yNXmtALeOz3ipKv6jsue4VCQsha256V8e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7ssha2568e$S-8jObCggj4Jgw2-0d3cutlWe1mL9c2UgHnw_3AYIVAsha2568e$RztmofSpfxHcRLEW_UyPg6WZ39aOiS09nS1ZpYPMWDUsha2568e$Rwswbuqgx0v9XmK4uSCKanfWEcgCns5_mUQ4SURtGrksha256w8e$RrgkuSBZvU9z1GEPvK8vmBJPvjBFbh7DtiupM8QwwBssha256^8e$RpuUis1leSGtN2PPNRiDfPPPLocSNWh8i4C_lpeve-gsha2568e$Rof3f3wVoV5LExOVKAqD-NH4nlsKlNT8BzHbRnZDnTosha2568e$RgJVGEi7Ghr9PoTCMS_jP0tWJpRnCrfJ9A2soeXur0Isha256M8e$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQsha2568e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4sha2568e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh8sha256A8e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8wsha2568e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Ysha2568e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1ssha2568e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1gsha256x8e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9ksha256!8e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oosha2568e$STChdx1jT934Ju8D6ZzjZ3FLrhgrL7HbqAeG8B2N02ssha256 /8e$SQr6z9B6pjL4fZvISDZIgX2dOeo3TTHKsJjFrhY7_tMsha2568e$S7FWAm-SWeYaH9ZHSEoyoJ5XLsWLOi-OZkV7e8DcReMsha256r8e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u8sha256 g * T~=gg]!c@anon-20191002_181700-691:localhost:8800KJUDUWTJKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNFOkdjeUY7MjAmQUdEVysKMDAyZnNpZ25hdHVyZSCrhY5xAnfaaIsWrJfYKh4tW-EB9Tfc_TZ3e6e0bi60IAog]!c@anon-20191002_181700-690:localhost:8800KFUCCJJOIGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFiN2dpPW55Omh4dGtpT0MKMDAyZnNpZ25hdHVyZSAG_4rwETz8mescypyvlXeArGSgGB-f7oN8uYsSEuwbRAog]!c@anon-20191002_181700-689:localhost:8800CXTYRGNUGFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENpMXN5VmlBO3h5NG9FQVcKMDAyZnNpZ25hdHVyZSCYuwn9jELEvJuUHDFlpMhBHDbPvBhF57TAUIgnygORqAog]!c@anon-20191002_181700-688:localhost:8800XKOMYWOUIRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHhCUio4NVFFbiMmRzJNWUcKMDAyZnNpZ25hdHVyZSA_T2_zTSNnwv_rtNy5-y1SzMIbglSQfhwydStwQw1TOQog]!c@anon-20191002_181700-687:localhost:8800IBFTGGSJGYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtxSFpDZFdsMFk7dHh5RV4KMDAyZnNpZ25hdHVyZSCi0se2-8VvuVw8soXD4NU604TUWOD8E3Fdafqo-s1yZAog]!c@anon-20191002_181700-686:localhost:8800FCAOSGHQKKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IElBb2ViOU5JaHBCYzFsd0sKMDAyZnNpZ25hdHVyZSBgSkZ5veqoGCTo6qs2YmizutuEjB6cRfyLlp7Ba3WUTwog]!c@anon-20191002_181700-685:localhost:8800ESVUDGRJILMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdMMi44TF91eHBiUz1fX3QKMDAyZnNpZ25hdHVyZSBbJQEZbfGZlZZZS2RpYl9BfDKoNrl8Npjth2GICRD7xAog]!c@anon-20191002_181700-684:localhost:8800QWWSYDBLACMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGRVbCt6cUFqZDdmcW5WfmUKMDAyZnNpZ25hdHVyZSDGKE-eCdLxMHl1ULLuszAi8Qm5oY3IoRJmQjJ716qHogog ]!c@anon-20191002_181700-683:localhost:8800WOMGUTEQPRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEwmZCM0bHQxeGFAQVVFJlgKMDAyZnNpZ25hdHVyZSDLn1kqt2QD_Zka1cbcmxsSUKftt0xkyItx3TscI2cPRQog ]!c@anon-20191002_181700-682:localhost:8800RHXEIACOYGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEl5ajtDZmlnOHpAYk87NXoKMDAyZnNpZ25hdHVyZSCnpc0mXDI3u5UbDP6DE2MQnJUfnr0Rmw1BgJp-dkvsOQog ]!c@anon-20191002_181700-681:localhost:8800CDCNSMATECMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFpZzRBM2k0LWtSMiMjdjMKMDAyZnNpZ25hdHVyZSD6pmeQnp5C8_sWMCZmue9no5MS0-rP7KjL1k1xHi4tPQo /jQ8q?  w E  ~ M   S ! Y ' _ -4f1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk X1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI K1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 1e$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A 1e$3-SSnRacF6qJsVAFzM5Nz57LtsFyCNHaj-MUXwZRKls1e$2wybAnt6GPvfNrsqAi2pnWVipTFV0NYuBZM-rFvz3J0y1e$2w9ZNl34Ilnlxm1GLSoCI5UuxYXYxkGH9l35xM3Oy0k0e$2vJ9zcvqj5E0ZRnf_2Vbv1QzK1JjqjH4Id32TRcJy3w1e$2tWIlWr4df0H1g-_HvZJgyoLM87M6FOWQ3E-iBRFdVUj1e$2ppFOOuB1Ocw68tfbM3-2DSP_5A9Hh_6DDqWRVsuXaA1e$2omDygTt6CUQ_zTdT-hFCB2CXcsPD2yi_a-hKls62_01e$2ne3J5jh0YCBO6O6DBJjyWnSR03tYOjb04b1oHKHiSw1e$2mpQ9PK4nIVwL36bdBrWX7Al4U_5Km42kS7AKALSKmY'1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAoo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E1e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-HgJ1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk 1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k f1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3doo1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg0e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1Au1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ 1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe01e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CY1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s*1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE E1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7w1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds&1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7w1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9cq1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 )3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3zb5 9 . | - @ b "DWA_r#Q 7,zVgeL$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUsha256qw >l&WTv>چ!m{luB@EVfeL$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUsha256^ 9I!d{@M ]VeeL$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQsha256o,X,}1mU\$}AVdeL$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEsha256[1ˢG'kc|a{q }i( VceL$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUsha256 >-4!%(>=1$n~@LbQL$1570043754467mNKfq:localhost:8800sha256<; 5]ot'UV^n91DVh @a9L$98_m2:localhost:42455sha256++ۘ$'o*ݺ|Oi_H`*A/tA`;L$97_sf2:localhost:42455sha256*V,7?cbk0FjA_;L$96_sf1:localhost:42455sha256XHl(}>7}}',q@^9L$95_m1:localhost:42455sha256^ï8ȿ o+Rnۄ+L]QL$1570043750466Tmiqu:localhost:8800sha256tťSVG|3gK 1 S.ߟs=\3L$94:localhost:42455sha256s'I$kxe _y"~q/oL[QL$1570043748464QpNXV:localhost:8800sha256}d^S~pZ!r/LZQL$1570043748463euAqZ:localhost:8800sha256vOԂ @`?|·))s%LYQL$1570043747462YuUEF:localhost:8800sha256/3q_9FIfkVL_LXQL$1570043746461eQhrq:localhost:8800sha256{r*F`tqM3KoLWQL$1570043745460sJOiY:localhost:8800sha256ON~@ }}xԈv`G_f.LVQL$1570043744459BIUYb:localhost:8800sha2568VY˪rGpR#4'>߽.NAU;L$93_sf2:localhost:42455sha256`ȑa-Z*bޫP>p,=K3L$89:localhost:42455sha2560 9 { ;X1yi@l=J3L$88:localhost:42455sha256~V{NY6,-DCq@π2 LIQL$1570043733451EJhWh:localhost:8800sha256TNG^0VNoP} `@w=H3L$87:localhost:42455sha256gNBah+Yu91LGQL$1570043730449XMaNb:localhost:8800sha256E)0Pk!&fd:f%2_=LFQL$1570043729448XmFHA:localhost:8800sha256GRX(H0V<1fIlM uLEQL$1570043728447IkYro:localhost:8800sha256yo׃"M^\4p"*jmLDQL$1570043727446CGYaE:localhost:8800sha256.#5"uGTB3m]^׵لVdLCQL$1570043726445lSnmj:localhost:8800sha256S諭࢜8ɇ)t9zkVBeL$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQsha256<@r{_<{ݕT vo; @VAeL$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQksha2560j:]?Be9:nΥY V@eL$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8Esha256=g|zC=` Р}V?eL$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcsha256-1<ՌTѨ?w ى<CV>eL$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYsha256o' f-7*/ѶV=eL$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEsha256K ɷ3H[aqPP?AV<eL$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkosha256"WK{qRNI𘗕_NJG;GL$83_outlier_C:localhost:42455sha256N>i@d v/zj]6 xL:QL$1570043715443SSqOY:localhost:8800sha2563HHI4 E!92w`1ȍL=93L$82:localhost:42455sha256~@@Dڀ!7ajKf}FL8QL$1570043713441WJPkP:localhost:8800sha256*3.?Df\-1$'ܘ00^EI<\=oL7QL$1570043712440rfNzQ:localhost:8800sha256vK3 |ACPԢ #5 L6QL$1570043712439XdJFc:localhost:8800sha256$X]K/F"U;:0!zS^5UL5QL$1570043711438bqOHL:localhost:8800sha256ѵAW@ `''CQ衝%  v ^ , d 2 j 9  q ? K w E }1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-01e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E91e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk .1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k M1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooC1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ X1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0 1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYZ1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE I1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wd1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wU1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 M3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:42455 3$21:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU V3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0V1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4P1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo #&[ 2 X F DB@><Nt-S[23QQ$87:localhost:42455$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j1QQQ$1570043730449XMaNb:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j0QQQ$1570043730449XMaNb:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j/QQQ$1570043730449XMaNb:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j.QQQ$1570043729448XmFHA:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j-QQQ$1570043729448XmFHA:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j,QQQ$1570043729448XmFHA:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j+QQQ$1570043728447IkYro:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j*QQQ$1570043728447IkYro:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j)QQQ$1570043727446CGYaE:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800~(eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800~'eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~&eeQ$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800~%eeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800~$eeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~#eeQ$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800~"eeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800~!eeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~ eeQ$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800~eeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800~eeQ$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800~eeQ$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800VG3Q$83_outlier_C:localhost:42455$82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800eGQQ$83_outlier_C:localhost:42455$1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800eGQQ$83_outlier_C:localhost:42455$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800eGQQ$83_outlier_C:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043715443SSqOY:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043715443SSqOY:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043715443SSqOY:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800[3QQ$82:localhost:42455$1570043712440rfNzQ:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800[3QQ$82:localhost:42455$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800[3QQ$82:localhost:42455$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043713441WJPkP:localhost:8800$1570043711438bqOHL:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043713441WJPkP:localhost:8800$1570043710437aFoBB:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800jQQQ$1570043713441WJPkP:localhost:8800$1570043712439XdJFc:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800 /j8W>%  v ^ , d 2 j 9  q ? K w E }1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI1e$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0~1e$2mYs8zl5IzTTdU1ComYTI2zVCy19K9cN5XBWY8KoM_M1e$2ls8UQjzHJxtP0Qyy2Cev0hsimcziDJSOAbgPLEPshM1e$2gffIzWA-h5GXmPXitJZjYfamWygrUNZk0D_1numXAo1e$2a-QwIglSm3do-8jJNuZiSteODIBjEEWxyeq7AW0E6E91e$2_-rWSieqFL4sRG_8n7evSnIprqkQCZAYgY_mL8c-Hg1e$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk .1e$2V7wPByvVpjKm3H4au4qkvKG0b50o_vhl9_OamodqFM1e$2UJB5naYMavfB6VGDlp77CCaAoP3zKKtxDS7DSpGerA1e$2THGJ8Fggzt08jMVM76HkJBnH1lEhT54sJPTHV-fr7k M1e$2Q-2PoIAYQEEM3wkUTUJ9TNXOPdxnYsYEzM9efM3dooC1e$2PeV1K-rnb6qLKL0bQV24qP8F-lEP7JQ6UHRP_HjgEg1e$2OusHTFyptw3pehhLkk4WQ-D1RtqNcU8zK-AROdY_1A1e$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQ V1e$2MW3RcGlejA4M2vz-gHRwgkKTDI9QjyIolZ7hRyme2w 0e$2Luq8GALbCgndpFI9f5fhhKcMkW2wRG4KAoJyuWXDe0 1e$2JiVfQl-_Ol-k0Mrr5pnfo2zLjNknVfJVgm0ffEe7CYZ1e$2JYj2pgwylIW-b_XZCjjboUdKHddFuYD2w0g2SEb85s1e$2JD5GCjgc-tCyH9D_mT3tlVFHQuD0h-UkntVrAcBHuE I1e$2Im7tlmHY5IX2jbjEkVimcSwD9XRivIsKY2MGbeHK7wd1e$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds1e$2GRAswUZ97wCSGynTp4ec9PkHb6p7FZG9qN5TGp_M8o1e$2Ey7NteprZkRjeTFFlCrQlNhgNuDFYYzD8WlMdaBG4I 1e$2D9OtUORSd-JhdRJ21aKzcwbxPcX9snf_164kKMTH7wU1e$2CG7svUIRJSfzX11A_9SyaLWNP1hdhz1AjvG5OWYw9c1e$2AWUjFEDd-aj3CVSdmrkoj87KgU50Ffd1HEd8G7MgQM 1$2:localhost:42455 M3$29:localhost:42455 3$28:localhost:42455 3$27:localhost:42455 3$26:localhost:42455 3$25:localhost:42455 1e$24juWWgGrE5rcc-vn6_hMiV9q8h1qElvsHi4XCMT8nY3$24:localhost:42455 3$23:localhost:42455 1e$22WjOFYGt456kQjyoAxVa6dW-9Rko94FLn7k7mCUS0U 3$22:localhost:42455 3$21:localhost:42455 1e$20k7DDNpRalLVy8J6fDKBIPfNmXILE5F7-wVqQsC7lU T3$20:localhost:42455 1e$209fphxYo0VxmRoItyYtFchHtf9x0EfX4mEqYZVVbr0V1e$1zjjF1AcdvvMz8w-Mmd97zy1wMhmOHKRw-uoYhAN2nc1e$1yeCKAu1QLq7SvRv542MlTuAaTbeB85DCb1BUvXe2B4P1e$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDU 1e$1xxD_locHp3YjdYrVTcNbDUp0_JVbSAL4o2pnM1OoNo  5>GQa $83_outlier_C:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": true, "stream_ordering": 3558}{"room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "type": "test_state", "depth": 8, "state_key": "C", "origin": "localhost:42455", "hashes": {"sha256": "UdALAiKSaUPauYnqrBq+ouiou9D4JfZ0Iam3jNIvOhk"}, "sender": "@__ANON__-54:localhost:42455", "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}], ["$82:localhost:42455", {"sha256": "7414QCt4wW4b5/hAiXoCt7b141ZwgQSyn++LIBmL6YM"}]], "event_id": "$83_outlier_C:localhost:42455", "content": {"body": "event_c"}, "origin_server_ts": 1570043716256, "prev_events": [["$1570043711438bqOHL:localhost:8800", {"sha256": "EsH8pflY5zWDxiBHdVj2tJy6TMLR/p6r0CraF0Vm9NY"}], ["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "signatures": {"localhost:42455": {"ed25519:1": "sQ2K0mdik8QAO+3Muoh5IJTlNeHBHpyMwZpuOreDM3Bm/CJE6j9mCo5X2D8yBVuQQw2AvQXDCLmFK/unAXJQBA"}}, "unsigned": {}}\=QQa[ $1570043715443SSqOY:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800{"token_id": 661, "stream_ordering": 3557}{"auth_events": [["$1570043712439XdJFc:localhost:8800", {"sha256": "/iRYXYVLL+wURiLBGVXy6Tv08jrRMIohelPxXhc1pVU"}], ["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}], ["$1570043711438bqOHL:localhost:8800", {"sha256": "+dG1QVdACYfrkgiY6mCQJ94nQ4ZRxh7ooZ08yWPUO5M"}]], "prev_events": [["$82:localhost:42455", {"sha256": "2H7h90Cn90AHRNqAIZI3pwUdEWHbwRRqS4Nm2hZ9FEY"}]], "type": "m.room.power_levels", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@anon-20191002_181700-681:localhost:8800", "content": {"events": {"m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.name": 50, "m.room.avatar": 50, "m.room.canonical_alias": 50}, "state_default": 50, "events_default": 0, "kick": 50, "users": {"@anon-20191002_181700-681:localhost:8800": 100, "@__ANON__-54:localhost:42455": 100}, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043715443SSqOY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043715701, "hashes": {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+EwvQO1HH5vKYEShVpG14wl9poiy/ow8Tfu0lWHYxP4M27J+bNCv8+YQsifIGSL2qy7SX2RsZopG4z4/3jwfCg"}}, "unsigned": {"age_ts": 1570043715701, "replaces_state": "$1570043712439XdJFc:localhost:8800"}}R<3Q3 $82:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3556}{"origin": "localhost:42455", "state_key": "@__ANON__-54:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@__ANON__-54:localhost:42455", "hashes": {"sha256": "7414QCt4wW4b5/hAiXoCt7b141ZwgQSyn++LIBmL6YM"}, "content": {"membership": "join"}, "event_id": "$82:localhost:42455", "auth_events": [["$1570043712439XdJFc:localhost:8800", {"sha256": "/iRYXYVLL+wURiLBGVXy6Tv08jrRMIohelPxXhc1pVU"}], ["$1570043710437aFoBB:localhost:8800", {"sha256": "BANQJ5CRoJl/DLJSHCORoBcNN7ZrFDR+v2r1WM65a6g"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "dkuh5bQzDc/1yHwPuOFB1EMWkPMaUL3G1KK3CyMENQw"}]], "prev_events": [["$1570043713441WJPkP:localhost:8800", {"sha256": "KjMuP0RmXAfG5ActMSTjJwPcmDAwXgRFSe88XD1vBfk"}]], "origin_server_ts": 1570043714622, "signatures": {"localhost:42455": {"ed25519:1": "mVUV9vQ1k2CpguSX+UynfGYNfEcocmamdh5MEQIQBvQPvhCvZShJfQXZwk4aGFHhUbibJs8czMiPBCWBm9NYDw"}}, "unsigned": {}} *~xJd6 R $ l @  Z , t H  b 4 ~+[@anon-20191002_181700-35:localhost:8800-]@anon-20191002_181700-359:localhost:8800-]@anon-20191002_181700-358:localhost:8800-]@anon-20191002_181700-357:localhost:8800 -]@anon-20191002_181700-356:localhost:8800 -]@anon-20191002_181700-355:localhost:8800 -]@anon-20191002_181700-354:localhost:8800 -]@anon-20191002_181700-352:localhost:8800 -]@anon-20191002_181700-351:localhost:8800-]@anon-20191002_181700-350:localhost:8800+[@anon-20191002_181700-34:localhost:8800 -]@anon-20191002_181700-349:localhost:8800-]@anon-20191002_181700-348:localhost:8800-]@anon-20191002_181700-347:localhost:8800-]@anon-20191002_181700-346:localhost:8800-]@anon-20191002_181700-345:localhost:8800-]@anon-20191002_181700-344:localhost:8829-]@anon-20191002_181700-343:localhost:8800-]@anon-20191002_181700-342:localhost:8800-]@anon-20191002_181700-341:localhost:8800-]@anon-20191002_181700-340:localhost:8829+[@anon-20191002_181700-33:localhost:8800 -]@anon-20191002_181700-339:localhost:8800-]@anon-20191002_181700-338:localhost:8800-]@anon-20191002_181700-337:localhost:8800-]@anon-20191002_181700-336:localhost:8800-]@anon-20191002_181700-333:localhost:8800-]@anon-20191002_181700-332:localhost:8800-]@anon-20191002_181700-331:localhost:8800-]@anon-20191002_181700-330:localhost:8800+[@anon-20191002_181700-32:localhost:8800 -]@anon-20191002_181700-329:localhost:8800-]@anon-20191002_181700-328:localhost:8800-]@anon-20191002_181700-327:localhost:8800-]@anon-20191002_181700-326:localhost:8800-]@anon-20191002_181700-325:localhost:8800-]@anon-20191002_181700-324:localhost:8800-]@anon-20191002_181700-323:localhost:8800-]@anon-20191002_181700-322:localhost:8800-]@anon-20191002_181700-321:localhost:8800-]@anon-20191002_181700-320:localhost:8800+[@anon-20191002_181700-31:localhost:8800  JQQa) $1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3570}{"auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}]], "prev_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}]], "type": "m.room.member", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-683", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-683:localhost:8800", "event_id": "$1570043727446CGYaE:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043727713, "hashes": {"sha256": "Y8SycC/DYYr+mX+sHmb63shMbQ5wBiSmtwXU2nJwVSM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lnjndJfZnwh7Hml5wW82iR7aU0FinyaWXMUlsxPSj+mzsAhbfDxmO7Xx2fi/r5NOQMRdDluRyZeXuLT48rhuBQ"}}, "unsigned": {"age_ts": 1570043727713}}IQQaC $1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3569}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-683:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043726445lSnmj:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043726750, "hashes": {"sha256": "RUQFM6a8tPgzGDFnW3Rq0l6c4DNOYbp8xazNWDVgvD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iQaKQLSpvVOINN0Cuyhmg/e2Uia83WMyG1UUxiNXmhdXt01xwrJvquOEj4LokPXMB3RkUpccH9i0fFhU73aaDw"}}, "unsigned": {"age_ts": 1570043726750}}7HeQcy$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQ!lgejtcwlywOoIXwEgy:localhost:8800{"outlier": false, "stream_ordering": 3568}{"hashes": {"sha256": "ZNNF4YHg2fpmGDkxg0+mqCySYdT4qvBh6Dh4YdWebtQ"}, "sender": "@__ANON__-55:localhost:42455", "type": "m.room.message", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "origin": "localhost:42455", "depth": 7, "origin_server_ts": 1570043724405, "prev_events": ["$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk"], "auth_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc", "$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk"], "content": {"body": "Message 1"}, "signatures": {"localhost:42455": {"ed25519:1": "FTkIH/YJUtp+dodiLiLb9dT0Wg6Bofhh9s/HXIkwEkBDlirotT3l/zcTtMIPR78C5SWVJAoTQLNjCmdWdCIfAg"}}, "unsigned": {}}}GeQ33$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk!lgejtcwlywOoIXwEgy:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3567}{"auth_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc"], "content": {"membership": "join"}, "origin_server_ts": 1570043724020, "prev_events": ["$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E"], "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "type": "m.room.member", "state_key": "@__ANON__-55:localhost:42455", "depth": 6, "origin": "localhost:42455", "hashes": {"sha256": "r1MLszXmnyMad76+cHtR14aUtAsOyeyfNFK3mshVqxM"}, "sender": "@__ANON__-55:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "2TNRhsVlOilBYs2MF7/dXXmAMXracenN4GEYtGiKZpgVkA8c/+E4yMv+/qsuCm4u/j3AhwU8t6am8g/WHLwPCA"}}, "unsigned": {}} KCX& C ^ , d 2 j 8  p > v D }jKQ8{^A%]+c1i7o= u$9$91e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta41e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk 1e$9TX820JtZt-BpSCvR-H9UrE1vSfZq1ZFrwMUNSsEvz41e$9TC7oFFCFWGwvHHKcd9lAHxqFXLaYaKlpVQkES6vK0Md1e$9SW1OPXZ71IRMuAqhqCScd3Qk3HTVmYSf-QervwV1jM1e$9RwDVH3NsPhIVnUFx1lkEI1tUJQWaD2d7rwvsd-9Qp01e$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI1e$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg 1e$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPUp1e$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0 1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY31e$9LALlB2Zfwx7wV2RZ-tStupcRe7qAWiL7fmEmgcEcuc1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw P1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiA_1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w !1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_I@1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3kL1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4 %1e$9Bu9Ruvxxx4HStAcmkbZlx_6A7sCvd07-kpz-kUtz9QU1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk k1e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE9$98_m2:localhost:42455 ;$97_sf2:localhost:42455 ;$96_sf1:localhost:42455 1e$968AXmAFswGz5MZW-NKm3KxE0oGwkqLL8szUmEcsTIo9$95_m1:localhost:42455 3$94:localhost:42455 ;$93_sf2:localhost:42455 ;$92_sf1:localhost:42455 9$91_m1:localhost:42455 3$90:localhost:42455 1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA A1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$8sbJiJq8y5G0WWE-FcwlzuQ0DvzY3_HnBnCwg3oLY0Y1e$8rjnNhWAPJZdTBVxcg-ZHF_iNcDk6RLCPl7OZxGRzx4&1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA ^1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0YH1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU]1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU1e$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc &1e$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E %1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE1e$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM1e$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw1e$8bRaflTZVdAPTjZbf86K9ilp7IcAupA24LzuGmpFIU41e$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8]1e$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA1e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQM1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxEF1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM81e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfM?1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg I1e$8TQEhAT7nlx9Ol72kk-G4cqOtI48dfprNxpQElePOIQW1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O6aH8GwahaVfAY2_03lwqYx42-vEHGaQ1Juki8YtqU{1e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM G1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeA O1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y 1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfMU1e$8FZEpl8kGvrEoBAKOFErCdHb5G6F7QQn8a5eVIr0K74 0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQs1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI_1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM3 z 8   %<r}|6l|MQ']Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800$1570043746461eQhrq:localhost:8800ZLQ' Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800KQ3 QQ!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043741458PZvre:localhost:8800$1570043737454adOjg:localhost:8800gJQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455fIQ? Q !JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility$1570043739456qeuuS:localhost:8800^HQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800`GQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800FQ']Q !JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800$1570043736453VtbeL:localhost:8800ZEQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800DQ/ QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800$1570043729448XmFHA:localhost:8800zCQ'E33 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455$87:localhost:42455|BQ' QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800$1570043726445lSnmj:localhost:8800AQ3 QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800$1570043733451EJhWh:localhost:8800@Q3 QQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043733451EJhWh:localhost:8800$1570043728447IkYro:localhost:8800g?Q'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455f>Q? Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility$1570043730449XMaNb:localhost:8800^=Q/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800`<Q3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800;Q']Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800$1570043727446CGYaE:localhost:8800Z:Q' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:88009Q/ ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc88Q']ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE,7Q'Eee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQk6Q' ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko5Q3 ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY4Q'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkp3Q? e !lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibility$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8Eh2Q/ e !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcj1Q3 e !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 0Q']e !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEd/Q' e !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko.Q3 QQ !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800$1570043712439XdJFc:localhost:8800   iBeQa_$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3562}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-682:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043719057, "hashes": {"sha256": "m4Cmj/xex2yTkUn8FNsN7fDnb63JCe22MzGDID/3l/0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JNDqe6uEKCHFMxcDuVF3yKxxmFA941SP7o7VaKFo+vAsS0wDfrRXjIdJISnqR9s12AejwnrV2yc910ID9guJAw"}}, "unsigned": {"age_ts": 1570043719057}}xAAQc! $86_sent_F:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "stream_ordering": 3561}{"hashes": {"sha256": "tQtJQKYgucBclR6ph1PkZ0q1gtlu2B9LOn0W1DnrURQ"}, "sender": "@fake_user:localhost:42455", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "type": "message", "depth": 11, "origin": "localhost:42455", "origin_server_ts": 1570043718020, "prev_events": [["$85_sent_E:localhost:42455", {"sha256": "lbh7+MYAqKxHH5+v+a1X/iLd6EKNIb8bqNZlk0tJfhI"}]], "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "event_id": "$86_sent_F:localhost:42455", "content": {"body": "event_f"}, "signatures": {"localhost:42455": {"ed25519:1": "TdnF91nFgDAvf8ii5fS2x1ITGsNO4yvYBVDBi/4Q1Wb4gaIe4N43eFZZQkanYPtYf7Q/vZP96aTxU20XCsfRAw"}}, "unsigned": {}}~@AQc- $85_sent_E:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "stream_ordering": 3560}{"prev_events": [["$84_backfilled_D:localhost:42455", {"sha256": "sxhW3P7y6GJUy+OCfABWaZddfN+b3K5DF/NOoIWzxqo"}]], "origin_server_ts": 1570043716260, "content": {"body": "event_e"}, "event_id": "$85_sent_E:localhost:42455", "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "sender": "@fake_user:localhost:42455", "hashes": {"sha256": "lbh7+MYAqKxHH5+v+a1X/iLd6EKNIb8bqNZlk0tJfhI"}, "origin": "localhost:42455", "depth": 10, "type": "message", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "signatures": {"localhost:42455": {"ed25519:1": "QsVnlvSKPRXZKtuXgde2zOCBqsDg40wk2LwpWAdv1lZpRsa0H8zdB0Ffd+DHnreF4k69u1GJiLeXX8Rm6kUqCw"}}, "unsigned": {}}?MQc1 $84_backfilled_D:localhost:42455!PUIxAaiCnbqaVbawGu:localhost:8800{"outlier": false, "stream_ordering": 3559}{"content": {"body": "event_d"}, "event_id": "$84_backfilled_D:localhost:42455", "auth_events": [["$1570043710437aFoBB:localhost:8800", {"sha256": "DtxCTv0XytHhkY4r4vwUzNS5vracEd2JdUppzq89tGw"}], ["$1570043712440rfNzQ:localhost:8800", {"sha256": "5W86ScoaC6goV9UA8Ns09RVBOQYxtsVC7k9c9uJpSmk"}], ["$1570043715443SSqOY:localhost:8800", {"sha256": "P4dtHDiZ5sxBADdtBFfEP7AcMynGt8XmgoNxN9OerYI"}]], "prev_events": [["$83_outlier_C:localhost:42455", {"sha256": "UdALAiKSaUPauYnqrBq+ouiou9D4JfZ0Iam3jNIvOhk"}]], "origin_server_ts": 1570043716259, "origin": "localhost:42455", "depth": 9, "type": "message", "room_id": "!PUIxAaiCnbqaVbawGu:localhost:8800", "sender": "@fake_user:localhost:42455", "hashes": {"sha256": "sxhW3P7y6GJUy+OCfABWaZddfN+b3K5DF/NOoIWzxqo"}, "signatures": {"localhost:42455": {"ed25519:1": "8J7WAU4TMYZO994QLGWodU55WKniD0DVsb0L4/YlVpy0uz33QSyEbcTFyKeDkzMwPI+QQi6N9An7o4kYtZmqBA"}}, "unsigned": {}} %Dm K P t p  #B7sN'k_hQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800gQ']Q !JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800$1570043736453VtbeL:localhost:8800YfQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800]eQ/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800fdQ'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455YcQ' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800_bQ3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800]aQ/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800f`Q'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455Y_Q' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800_^Q3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800_]Q3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043733451EJhWh:localhost:8800f\Q'E3 !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$87:localhost:42455u[Q'EQ !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455$1570043731450RDvsb:localhost:8800eZQ? Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility$1570043730449XMaNb:localhost:8800]YQ/ Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rules$1570043729448XmFHA:localhost:8800_XQ3 Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levels$1570043728447IkYro:localhost:8800WQ']Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800$1570043727446CGYaE:localhost:8800YVQ' Q !NgkQVVUNzoyCVPtckM:localhost:8800m.room.create$1570043726445lSnmj:localhost:8800gUQ/ e !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc TQ']e !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkESQ'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkcRQ' e !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTkoiQQ3 e !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYPQ'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkOQ'Ee !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@__ANON__-55:localhost:42455$V9LvQBTk5HXWoNLtFuHQz1KP4euh6nZgYTOU1i2m1tAoNQ? e !lgejtcwlywOoIXwEgy:localhost:8800m.room.history_visibility$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8EgMQ/ e !lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKciLQ3 e !lgejtcwlywOoIXwEgy:localhost:8800m.room.power_levels$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY KQ']e !lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEcJQ' e !lgejtcwlywOoIXwEgy:localhost:8800m.room.create$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko]IQ/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800YHQ' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800_GQ3 Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.power_levels$1570043715443SSqOY:localhost:8800rFQ'?Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@fakeuser:localhost:42455$1570043717444lLmER:localhost:8800]EQ/ Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.join_rules$1570043712440rfNzQ:localhost:8800YDQ' Q !PUIxAaiCnbqaVbawGu:localhost:8800m.room.create$1570043710437aFoBB:localhost:8800  FeQa$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3566}{"auth_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "prev_events": ["$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc"], "type": "m.room.history_visibility", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043722482, "hashes": {"sha256": "Kv5v0lTcDXmyscUPOkUKeSH+cluaXTg3mkYDcYPRG+Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fUWITbf1N03SjTGNTBcOwKvR5QIII9Bb/9KUWWrEC8XnQka3S9dH1izYw732pMbub/GqdjiMHLTk0A4UOr++Dg"}}, "unsigned": {"age_ts": 1570043722482}}tEeQau$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3565}{"auth_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY", "$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "prev_events": ["$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY"], "type": "m.room.join_rules", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043721776, "hashes": {"sha256": "btEEO9D3wDIpWqaVscnYCkvjQtAsJJPRt/S+0Fc+kRM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dHcuNE8YqCTHt6pxnyFUwkN8d59rKdYEC7pg3WWgsQmtOneEQgpbXBwvIH+ikajT7QVV7RCTX9hfbNS9y7m1Dw"}}, "unsigned": {"age_ts": 1570043721776}}kDeQac$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3564}{"auth_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko", "$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "prev_events": ["$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE"], "type": "m.room.power_levels", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"users": {"@anon-20191002_181700-682:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043720953, "hashes": {"sha256": "ixtpsFjYneN5dcuPG8zhoiuXRpj0DsSGoYNkPjY8mY4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Nn5Qf75ciGp4MVTVgNwPmudBF3/Uq3v0AfKIVdJT2WXTGoDF/93Dk2vaZLGefF0BDOI7Rz5GuYeDfUJqavA2Ag"}}, "unsigned": {"age_ts": 1570043720953}}vCeQay$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800{"token_id": 662, "stream_ordering": 3563}{"auth_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko"], "prev_events": ["$IuHbEwdXS3vxhO3RCHFS1h5OgknB8JiXldj6X68UTko"], "type": "m.room.member", "room_id": "!lgejtcwlywOoIXwEgy:localhost:8800", "sender": "@anon-20191002_181700-682:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-682", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-682:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043719949, "hashes": {"sha256": "1oMpKeSNT1E8qVC1Itq3Z6kOApjBnH0JxItmlu+Wrq0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "P+QA7n9oAto44eX4uENhBW8xEY5F68hDbpAqoAnY7D+NwqBXMboLu9FqggFgFCRCXDyI63CK78kFM620BBmUDg"}}, "unsigned": {"age_ts": 1570043719949}} V f 5 ] 9]y[]F Q'Q  ]$1570043745460sJOiY:localhost:8800m.room.create!KetCYFxrTxawNOGnOf:localhost:8800mV mVz@anon-20191002_181700-685:localhost:8800Q)Q ]$1570043744459BIUYb:localhost:8800m.room.message!JiUawCFQnodcpssOfK:localhost:8800mPmP@anon-20191002_181700-684:localhost:8800y;Q E $93_sf2:localhost:42455test.sf!JiUawCFQnodcpssOfK:localhost:8800 mMmNY@__ANON__-57:localhost:42455y;Q E$92_sf1:localhost:42455test.sf!JiUawCFQnodcpssOfK:localhost:8800mK.mK@__ANON__-57:localhost:424559)Q E$91_m1:localhost:42455m.room.message!JiUawCFQnodcpssOfK:localhost:8800mHnmH@__ANON__-57:localhost:42455Q3Q ]$1570043741458PZvre:localhost:8800m.room.power_levels!JiUawCFQnodcpssOfK:localhost:8800mErmE@anon-20191002_181700-684:localhost:8800{3'Q E$90:localhost:42455m.room.member!JiUawCFQnodcpssOfK:localhost:8800mBmBy@__ANON__-57:localhost:42455"~Q?Q ]$1570043739456qeuuS:localhost:8800m.room.history_visibility!JiUawCFQnodcpssOfK:localhost:8800m<m>@anon-20191002_181700-684:localhost:8800}Q/Q ]$1570043738455KNDHf:localhost:8800m.room.join_rules!JiUawCFQnodcpssOfK:localhost:8800m9m:u@anon-20191002_181700-684:localhost:8800|Q3Q ]$1570043737454adOjg:localhost:8800m.room.power_levels!JiUawCFQnodcpssOfK:localhost:8800m70m7@anon-20191002_181700-684:localhost:8800{Q'Q ]$1570043736453VtbeL:localhost:8800m.room.member!JiUawCFQnodcpssOfK:localhost:8800m3um3@anon-20191002_181700-684:localhost:8800z Q'Q  ]$1570043736452Igyim:localhost:8800m.room.create!JiUawCFQnodcpssOfK:localhost:8800m0m0@anon-20191002_181700-684:localhost:8800y3?Q E$89:localhost:42455m.room.other_message_type!NgkQVVUNzoyCVPtckM:localhost:8800m*m+1@__ANON__-56:localhost:42455|x3)Q E$88:localhost:42455m.room.message!NgkQVVUNzoyCVPtckM:localhost:8800m(m(@__ANON__-56:localhost:42455wQ3Q ]$1570043733451EJhWh:localhost:8800m.room.power_levels!NgkQVVUNzoyCVPtckM:localhost:8800m$m%@anon-20191002_181700-683:localhost:8800{v3'Q E$87:localhost:42455m.room.member!NgkQVVUNzoyCVPtckM:localhost:8800m m! @__ANON__-56:localhost:42455"uQ?Q ]$1570043730449XMaNb:localhost:8800m.room.history_visibility!NgkQVVUNzoyCVPtckM:localhost:8800mmm@anon-20191002_181700-683:localhost:8800tQ/Q ]$1570043729448XmFHA:localhost:8800m.room.join_rules!NgkQVVUNzoyCVPtckM:localhost:8800mmo@anon-20191002_181700-683:localhost:8800sQ3Q ]$1570043728447IkYro:localhost:8800m.room.power_levels!NgkQVVUNzoyCVPtckM:localhost:8800m?m@anon-20191002_181700-683:localhost:8800rQ'Q ]$1570043727446CGYaE:localhost:8800m.room.member!NgkQVVUNzoyCVPtckM:localhost:8800mam@anon-20191002_181700-683:localhost:8800q Q'Q  ]$1570043726445lSnmj:localhost:8800m.room.create!NgkQVVUNzoyCVPtckM:localhost:8800m m J@anon-20191002_181700-683:localhost:8800pe)Q E$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQm.room.message!lgejtcwlywOoIXwEgy:localhost:8800mum@__ANON__-55:localhost:42455oe'Q E$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkm.room.member!lgejtcwlywOoIXwEgy:localhost:8800mmh@__ANON__-55:localhost:42455,ne?Q ]$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8Em.room.history_visibility!lgejtcwlywOoIXwEgy:localhost:8800mm@anon-20191002_181700-682:localhost:8800$me/Q ]$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKcm.room.join_rules!lgejtcwlywOoIXwEgy:localhost:8800m0mB@anon-20191002_181700-682:localhost:8800&le3Q ]$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bYm.room.power_levels!lgejtcwlywOoIXwEgy:localhost:8800mm@anon-20191002_181700-682:localhost:8800 3RM f   A x + D l Z s&N~<MHC>TGQe !ABHbfUdkHCJksMsaUt:localhost:8800$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgTFQe !ABHbfUdkHCJksMsaUt:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucTEQe !ABHbfUdkHCJksMsaUt:localhost:8800$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8TDQe !DntdfAPfCfgdOoRMdl:localhost:8800$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4TCQe !DntdfAPfCfgdOoRMdl:localhost:8800$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582ZlgTBQe !DntdfAPfCfgdOoRMdl:localhost:8800$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gTAQe !DntdfAPfCfgdOoRMdl:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUT@Qe !DntdfAPfCfgdOoRMdl:localhost:8800$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAT?Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUT>Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUT=Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQT<Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrET;Qe !THHfVSOSWiBQTHRAnJ:localhost:8800$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU>:Q9 !KetCYFxrTxawNOGnOf:localhost:8800$98_m2:localhost:42455?9Q; !KetCYFxrTxawNOGnOf:localhost:8800$97_sf2:localhost:42455?8Q; !KetCYFxrTxawNOGnOf:localhost:8800$96_sf1:localhost:42455>7Q9 !KetCYFxrTxawNOGnOf:localhost:8800$95_m1:localhost:42455J6QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043750466Tmiqu:localhost:8800;5Q3 !KetCYFxrTxawNOGnOf:localhost:8800$94:localhost:42455J4QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043749465PrxQH:localhost:8800J3QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043748464QpNXV:localhost:8800J2QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043748463euAqZ:localhost:8800J1QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043747462YuUEF:localhost:8800J0QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043746461eQhrq:localhost:8800J/QQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043745460sJOiY:localhost:8800?.Q; !JiUawCFQnodcpssOfK:localhost:8800$93_sf2:localhost:42455?-Q; !JiUawCFQnodcpssOfK:localhost:8800$92_sf1:localhost:42455>,Q9 !JiUawCFQnodcpssOfK:localhost:8800$91_m1:localhost:42455J+QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043741458PZvre:localhost:8800;*Q3 !JiUawCFQnodcpssOfK:localhost:8800$90:localhost:42455J)QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043740457GtEWQ:localhost:8800J(QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043739456qeuuS:localhost:8800J'QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043738455KNDHf:localhost:8800J&QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043737454adOjg:localhost:8800J%QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736453VtbeL:localhost:8800J$QQ !JiUawCFQnodcpssOfK:localhost:8800$1570043736452Igyim:localhost:8800;#Q3 !NgkQVVUNzoyCVPtckM:localhost:8800$89:localhost:42455;"Q3 !NgkQVVUNzoyCVPtckM:localhost:8800$88:localhost:42455J!QQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043733451EJhWh:localhost:8800; Q3 !NgkQVVUNzoyCVPtckM:localhost:8800$87:localhost:42455JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043731450RDvsb:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043730449XMaNb:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043729448XmFHA:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043728447IkYro:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043727446CGYaE:localhost:8800JQQ !NgkQVVUNzoyCVPtckM:localhost:8800$1570043726445lSnmj:localhost:8800TQe !lgejtcwlywOoIXwEgy:localhost:8800$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQTQe !lgejtcwlywOoIXwEgy:localhost:8800$yTDPwWo69PddP-QXmkKKj-zpZbIEOZ46bs6l-FniFQkTQe !lgejtcwlywOoIXwEgy:localhost:8800$V9LvQBTk5HXWoNLtFuHQz1KP4euh6nZgYTOU1i2m1tATQe !lgejtcwlywOoIXwEgy:localhost:8800$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8ETQe !lgejtcwlywOoIXwEgy:localhost:8800$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc -qT)}R' { P % y N # w L ! u J  s H q*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!msMfSdLIAvklSSAnci:localhost:8800*Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mogJVPxghalmKbblUq:localhost:8800 *Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mfzIRinBAGGrZvQAuI:localhost:8800*Q!mTlCLZQCmfDuQsJxxp:localhost:8800:*Q!mTlCLZQCmfDuQsJxxp:localhost:88009*Q!mTlCLZQCmfDuQsJxxp:localhost:88008*Q!mTlCLZQCmfDuQsJxxp:localhost:88007*Q!mTlCLZQCmfDuQsJxxp:localhost:88006*Q!mTlCLZQCmfDuQsJxxp:localhost:88005*Q!mTlCLZQCmfDuQsJxxp:localhost:88004*Q!mTlCLZQCmfDuQsJxxp:localhost:88003*Q!mTlCLZQCmfDuQsJxxp:localhost:88002*Q!mTlCLZQCmfDuQsJxxp:localhost:88001*Q!mTlCLZQCmfDuQsJxxp:localhost:88000 -qT)}R' { P % y N # w L ! u J  s H q*Q!nxLxsxzliamzflrEBs:localhost:8800##*Q!nxLxsxzliamzflrEBs:localhost:8800  *Q!nxLxsxzliamzflrEBs:localhost:8800*Q!nvclDopiBLEOKBIheH:localhost:8800DD*Q!nvclDopiBLEOKBIheH:localhost:8800CC*Q!nvclDopiBLEOKBIheH:localhost:8800BB*Q!nvclDopiBLEOKBIheH:localhost:8800AA*Q!nvclDopiBLEOKBIheH:localhost:8800@@*Q!ntuwVdUxfzNIhIKYaz:localhost:8800::*Q!ntuwVdUxfzNIhIKYaz:localhost:880099*Q!ntuwVdUxfzNIhIKYaz:localhost:880088*Q!ntuwVdUxfzNIhIKYaz:localhost:880077*Q!ntuwVdUxfzNIhIKYaz:localhost:880066*Q!ntuwVdUxfzNIhIKYaz:localhost:880055*Q!ntuwVdUxfzNIhIKYaz:localhost:880044*Q!ntuwVdUxfzNIhIKYaz:localhost:880033*Q!ntuwVdUxfzNIhIKYaz:localhost:880022*Q!ntuwVdUxfzNIhIKYaz:localhost:880011*Q!ntuwVdUxfzNIhIKYaz:localhost:880000*Q!ntuwVdUxfzNIhIKYaz:localhost:8800//*Q!ntuwVdUxfzNIhIKYaz:localhost:8800..*Q!ntuwVdUxfzNIhIKYaz:localhost:8800--*Q!ntuwVdUxfzNIhIKYaz:localhost:8800,,*Q!ntuwVdUxfzNIhIKYaz:localhost:8800++*Q!ntuwVdUxfzNIhIKYaz:localhost:8800***Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nteAxExBGJfaGIpuCx:localhost:8800*Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nhbUIcIbhuXkRqfeDa:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nfxDdcgDfooxyiAzaB:localhost:8800 *Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800*Q!nftGLlLhVgzOwOFufp:localhost:8800  Z UI0 1998800&a00byspnmflfl7onjam7vckavubuqfd7egviycsbodycontentdirectlyfrom localhostmessagexpe9zwanphlizylruivvam5HZ0 1678800abhbfudkhcjksmsautbody cdam1q2qxypgontentg0q2yiiz0smwe7yporyr6kzytg67gj localhostpngtest4G Z0 16788009vilrwvdvdk9r94n5hfmbodycontentdntdfapfcfgdoormdlg1d05yoghl71cshdoemk8s localhosttestxt#F80 1508800bodycontentdntdfapfcfgdoormdl+idkstxwyupzseeo3u2i12cjvlmlyvdz8yamj2kb4bms localhosttest 6 *>6E x0 1526 0ck8vway01570043744459biuyb 54467mnkfq9fqveua0aee8qcsg3e!20k7ddnprallvy8j6fdkbipfnmxile5f742455 que4zlimc1jxlh7u9vco2nafgaxvno 6szgxauuq8800S9158ea+b0jmgonndfa5jpjdzbdczmzuuuuvuobhax9yvutdzvyodyQcbwoxczf6irrpwcx57e91feontentQxy6edeniedsfbpkqfnvbqbgomukhelloijiuawcfqnodcpssofk rudexjfzidokbwdjqketcyfxrtxawnognofsrnlgejtcwlywooixwegyocalhostWprggyho7tivpk2pw6gpefmro5ty8xbk ucnatb847im1 23 essage1ngkqvvunzoycvptckmr0fjqvoxbpydglkjzbew6jrdgcpgndjhhibaxkryugkyox6qhle4xuqx388e92vzvytvkbqnjsxfgwamy+qhjtdytfjj3m5fdeicmkdeu4nwxxkph4tr3utaxnqgcsentinel*t3vvyndcluenyymlehfd4x93v3vdq1o7t2lv7xakdgest hhfvsoswibqthranjxt ufdbypfazvnfxnkcsftbssnkrtg*wsphztdlayo00k2jdg3trizkfvpiv7zdgcuta8okucworldvqqsc7luzkpjvrczhmhpeksydciD B0 124310570043482333dxdeq 3334ejwti 5odidb 4336qkopd 7ylfda 5338vblws 6339ybyqq 575399sisks 88411pdbwg424556952396078800Z9bodyQc ontentQdbfaszrfifesktjyjm event!h0kewul7nctuttnpjw2nrsb1cumosaym4ellore$lq6atrtelazktchzrikzcvvgwv egitjujzxqzpkzetemir ocalhost`message$sgnothingozgrybakndreeiaqwl$seetcycthpiakzskgrxluoteswbbqyepjqgnoazdpeuorldx zscknczcfpiiodaiqjxC `0 11301 0570043480330seknv 1331unawt 2xroco9 qlrbfgx6wgfmq2  0123456783  42455=56678800" 9bodyQcontentQrbfhxzdpstespgpauhereB localhost^messageB+oi9lfh2hz3ukduiqafyryp6vdvqoxdulqraqitbs3pszgrybakndreeiaqwlsawfpvsupexzlvcped unucefcga+xk54ssz0kc055qcbb9aweco9bqaonjvnsfaluvedqr4ypcmamnmzjvtgytrlizgzn1nr14nqez7c1la,B @14 2343988cahtmess7zx+! B7 256459yconheloo6ukj Q8jr D  | Jp> I0  h PO6  VxZ $ \ *b (`.l:f{I4uC1e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA1e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA1e$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo v1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIr1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIq1e$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIp1e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b81e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx01e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No 1e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o 1e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4o 1e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ 1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-w1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE1e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvE=$57_pl_x:localhost:42455\=$57_pl_x:localhost:42455[=$57_pl_x:localhost:42455Z=$57_pl_x:localhost:42455Y3$56:localhost:42455X3$56:localhost:42455W3$56:localhost:42455V3$55:localhost:42455L3$55:localhost:42455K3$55:localhost:42455J3$54:localhost:4245573$54:localhost:4245563$54:localhost:4245553$51:localhost:42455"3$51:localhost:42455!3$51:localhost:42455 3$51:localhost:424553$50:localhost:424553$50:localhost:424553$50:localhost:424551e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c [1e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2c Z1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA 1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA 1e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHA 1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms*1e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Ms)1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI*1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI)1e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pI(1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA 1e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KA 1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJE1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc1e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjc1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$532MQmqffAWqQkLU533I0D8XN-zyR8TzYWsv6826wog1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg"1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!1e$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg 1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE1e$4vbk_9i-cwGHsHHb7Rm4BwqCgCR93O8lbG2cvhwiYPE 21e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 21e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs1e$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI7601e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok21e$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs  fxMQQa $1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3573}{"auth_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}], ["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "prev_events": [["$1570043729448XmFHA:localhost:8800", {"sha256": "vc/JzdEVR1JYKEgwVh886wgx/shm9BlJbE0MdenX98w"}]], "type": "m.room.history_visibility", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043730449XMaNb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043730285, "hashes": {"sha256": "2/o4ZsgdIrkISLgNSZg/MSwRAH9o0xKGgxaA6k94nn0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kL0HCN3rOG/bkGhH6l5YTmKFLdvhIOXCpdi0tOBaYkYScCCFnQIqfsq5CN0LWmv2urIWzCjyNLLFtyvXXSAQAg"}}, "unsigned": {"age_ts": 1570043730285}}gLQQaq $1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3572}{"auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}], ["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}]], "prev_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}]], "type": "m.room.join_rules", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043729448XmFHA:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043729411, "hashes": {"sha256": "KlqR6Br67AXzIcRZRq+9YljKU1JFTQWfKCaguZBVPP0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+hH2uXbfcozmY8vu2SOZuvDmk6nPy2K0vpmjZfk4jBJEumAur9wXaGT1pihc7GFdiL4Ib+OWEp9k0AKNqy1EDA"}}, "unsigned": {"age_ts": 1570043729411}}+KQQay $1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3571}{"auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "prev_events": [["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "type": "m.room.power_levels", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"users": {"@anon-20191002_181700-683:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043728447IkYro:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043728703, "hashes": {"sha256": "wOCt3qpsWV3Agt/x08/HiEBI4VYgbXWL3q7rjaltmNg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "L5dpefLnxR/ezA5GKrQhZ2kg76C54EbU/Zfa9KvTdOPkCT8iXINtI8ekJH1erTzSGMjUH4JUaDyBsWtmrJA8Cg"}}, "unsigned": {"age_ts": 1570043728703}} <4,|t l d \ T LDeeQ$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800 DeeQ$1_orIMKGz8tQxPxlA8AksdP_3HDPSHWqM9n5rMYsQh0$JCWh-zyElXiR_yJH2ir255dOCBgbOMn06pOEm5Z3UqA!XGAmnfaVvjDtQJuufa:localhost:8800 ɁeeQ$1T_rNpkJl85CFM6-Vv1f2FQuIdiZgL0UIM1s02Fej0k$bFcfJWrXxen7FCbsew4qNtzafL3KCzBnuDK_0DMsye8!sfXbvAcOUJhzGwWEpZ:localhost:8800eeQ$1TU7PYHc17GyMFvtWIOErNjOhJVLwi3WHaChEj_JGxw$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY!fJXiUpbbOlLbHWmPgs:localhost:8800reeQ$1THbz2F8xn8mWSbreeNPcspYcfJEWjij9mC2PljXELo$SvUUG4__cFG8Xm3fMjZrJ89kECKQFa9ohbT0wemvlLc!BpTqIemsWFZIqTcgJO:localhost:8800eeQ$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wro!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1S4e37S5faNpUX6QPDc8LOxY9vtuLBexf0Hem1WkNIQ$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo!zHBgbzUZHshNGZvIBS:localhost:8800 /eeQ$1vL690gk12bSsKJnHSTPLeWgroIOMQ-O5FB3EU3n_JE$y9scAml-uagpAKy09VTF8BBvZELY6_leaPJKGLcb8v8!TleKOyAElrpgyyrAQA:localhost:8800eeQ$1uNh3fuk3CpwewTqaNBCcA0ZY0iSLb-OEXVDfgrcSCQ$-0g8Jk_aw-v3l6pkMznk_rcVhbPhm78TJdIUYWDbrBQ!OMkiVTuuOEeiFAXtUY:localhost:8800+eeQ$1ttS1-vDdiq5glecKJP7OX7j2xCSb3Nph-rWj0Q8IdQ$4Wvh2xwxWkC53wchslf9HR8Z_pHMQUsLKrl7ZmVPMT4!DSFBpkqfnvBQbGoMUK:localhost:8800 /eeQ$1tkztnHT6WCNj4v1GUWmo4blr-cbH-1sWNV5SrQt3Uo$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU!fJXiUpbbOlLbHWmPgs:localhost:8800weeQ$1sWmJ4gVjmAOOSsLrbo94GJ6giGcYwfLUVGkrrRDI4k$7fCG15OYVYx7AkA16Q4O-T25P2ApzAs17PMy9EltiQ4!HhYREfUiJTpjWmOuPF:localhost:8800eeQ$1rnyUrbPGXHaleqSxjEqkkW3mCkAbXe4FdNodWnkVcU$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E!aaRwQZdNAliyvRHpjs:localhost:8800eeQ$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPo$GF6qkuCPc2WL52NCgJKyNquPuuGsPBYNVC-oQ3WNOvo!EyEaTZElOkdURKbEXo:localhost:8800eeQ$1rXvchWhEnF6QbqRcWPrHUPb57ULegfwcjm-wLkg4T0$FzYrxbZqFfxVVCEWzPtP1_MnLOyKlBhFAlRtJ4KLBKU!mfzIRinBAGGrZvQAuI:localhost:8800'eeQ$1qBztyS8amyPAlnuykg09Ia7VLUy5QRsWCbgbLrGJpM$tYyCr_rxvYjm8JL-2JaTAGiBv24w3xcjsKdQSwgbEQY!qxqNYKdtgvOQdhmgsj:localhost:8800eeQ$1n2OR4D8-_X4tK81hN6Mw4tf4THyScCTAAQxVQ9xyxA$IBxiI8vCd25HVNRZptwh3Fd_wu3i_8n5RULcLD2VUn0!nhbUIcIbhuXkRqfeDa:localhost:8800 TeeQ$1m0CDUNSc9XEg1ygMg3iIzzrxki1qPoP6jojvW/YrWM$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY!KIHYKMzkRDrJwiywwz:localhost:8800 HeeQ$1l_fw3Y85Uszf_zPTBpbjc5_i_BA0drK3WsrRU53cAE$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q!laUExtszUaoCpZoyEq:localhost:8800 eeQ$1jMO73YMqA1lf5rVp273HZZUpZpdv8bCF5pU93-oqMI$1THa1tfzH0IDB-5vRV9Xgnx5ED0O3S2FKhzvAOWT-mw!DnUHoxreGexNmjSVpq:localhost:8800eeQ$1hTvxVfSI542neuZbXXo4fAz-R3PBUKQwObhTE7xYzo$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE!DoiZErAdypBUMZKaeJ:localhost:8800eeQ$1fhb-yEmPq4HM56hrztawgjWOBkZPbSMGjREYocU7oY$pz-t8YxVwKIYUHFxLbHe2DpFs8xcD-vNdeNPWpU0PEo!qxqNYKdtgvOQdhmgsj:localhost:8800  P3Q M $88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3576}{"event_id": "$88:localhost:42455", "auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "RUQFM6a8tPgzGDFnW3Rq0l6c4DNOYbp8xazNWDVgvD4"}], ["$1570043729448XmFHA:localhost:8800", {"sha256": "KlqR6Br67AXzIcRZRq+9YljKU1JFTQWfKCaguZBVPP0"}], ["$1570043728447IkYro:localhost:8800", {"sha256": "wOCt3qpsWV3Agt/x08/HiEBI4VYgbXWL3q7rjaltmNg"}], ["$87:localhost:42455", {"sha256": "ac0OIsZp2OuUInyZ9i7TwoP09tcC/R25YqZFOcVLLBo"}]], "content": {"body": "Denied"}, "origin_server_ts": 1570043734037, "prev_events": [["$87:localhost:42455", {}]], "type": "m.room.message", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "origin": "localhost:42455", "depth": 7, "hashes": {"sha256": "+as0oeJIiF+V9ux0b/7enibSLiQ3Vy778c42gPgfwnc"}, "sender": "@__ANON__-56:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "qPx6jtwP5xoz5son6C33x6ox9suJyyE4e3Egh0Y+JUNJnEWH9QschCO7Ff0zDrWdiQ/e6mOY2phKxXFPQHO3Aw"}}, "unsigned": {}}MOQQa= $1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800{"token_id": 663, "stream_ordering": 3575}{"auth_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}], ["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043727446CGYaE:localhost:8800", {"sha256": "jS6VI501nCJ1R1RCoRozuW28tl2Zx16Q17W82YRW02Q"}]], "prev_events": [["$87:localhost:42455", {"sha256": "p7JnTrjMQu2OAIDMYbicmmgr/MAVWXWbyuqyOe2v3jE"}]], "type": "m.room.power_levels", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "sender": "@anon-20191002_181700-683:localhost:8800", "content": {"users": {"@anon-20191002_181700-683:localhost:8800": 100}, "events": {"m.room.message": 50, "m.room.canonical_alias": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100}, "kick": 50, "events_default": 0, "state_default": 50, "ban": 50, "invite": 0, "redact": 50, "users_default": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043733451EJhWh:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043733241, "hashes": {"sha256": "V7hHl4Ci1nWctn8sXsR9uL4RtFADdcy2fiFHeKx8WRU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ECbZZni4ZqAAtd96umddhFdFyzgerT9ZB8wcDTK13xQlyU7ATohdl5+RLXJ2jEk4m1u5QEG1cH3/hEKfSE8yBg"}}, "unsigned": {"age_ts": 1570043733241, "replaces_state": "$1570043728447IkYro:localhost:8800"}}RN3Q3 $87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3574}{"sender": "@__ANON__-56:localhost:42455", "hashes": {"sha256": "ac0OIsZp2OuUInyZ9i7TwoP09tcC/R25YqZFOcVLLBo"}, "depth": 6, "state_key": "@__ANON__-56:localhost:42455", "origin": "localhost:42455", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "type": "m.room.member", "prev_events": [["$1570043730449XMaNb:localhost:8800", {"sha256": "7eKZ/BxFKTBQFu1rIdMmZv9k8hK/qzpmk+HeJTIEXz0"}]], "origin_server_ts": 1570043732122, "content": {"membership": "join"}, "auth_events": [["$1570043728447IkYro:localhost:8800", {"sha256": "EHlv14PngeocnLci7E2UXlyPNHAisuAAuJ8qah7yo20"}], ["$1570043726445lSnmj:localhost:8800", {"sha256": "U+irreCinDjJhynedN3TOQWAlQESovDpehtr0PK6x/k"}], ["$1570043729448XmFHA:localhost:8800", {"sha256": "vc/JzdEVR1JYKEgwVh886wgx/shm9BlJbE0MdenX98w"}]], "event_id": "$87:localhost:42455", "signatures": {"localhost:42455": {"ed25519:1": "s7VRtHooJkPUJ0BXxEodGOXso9Ng1F+v4/ULWkzIbbsIT8e9Vj5gFTbrf4jURIJr9jTbsKdXHFRupjTH8w9cAA"}}, "unsigned": {}} %Dj # I o  ( l 4Z9_6k~WeeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800~VeeQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800jUQQQ$1570043750466Tmiqu:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jTQQQ$1570043750466Tmiqu:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jSQQQ$1570043750466Tmiqu:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800[R3QQ$94:localhost:42455$1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800[Q3QQ$94:localhost:42455$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800[P3QQ$94:localhost:42455$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jOQQQ$1570043748464QpNXV:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jNQQQ$1570043748464QpNXV:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jMQQQ$1570043748464QpNXV:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jLQQQ$1570043748463euAqZ:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jKQQQ$1570043748463euAqZ:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jJQQQ$1570043748463euAqZ:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jIQQQ$1570043747462YuUEF:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jHQQQ$1570043747462YuUEF:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jGQQQ$1570043746461eQhrq:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800jFQQQ$1570043741458PZvre:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800jEQQQ$1570043741458PZvre:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800jDQQQ$1570043741458PZvre:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800[C3QQ$90:localhost:42455$1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800[B3QQ$90:localhost:42455$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800[A3QQ$90:localhost:42455$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j@QQQ$1570043739456qeuuS:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j?QQQ$1570043739456qeuuS:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j>QQQ$1570043739456qeuuS:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j=QQQ$1570043738455KNDHf:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j<QQQ$1570043738455KNDHf:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j;QQQ$1570043738455KNDHf:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j:QQQ$1570043737454adOjg:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j9QQQ$1570043737454adOjg:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j8QQQ$1570043736453VtbeL:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800j7QQQ$1570043733451EJhWh:localhost:8800$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j6QQQ$1570043733451EJhWh:localhost:8800$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800j5QQQ$1570043733451EJhWh:localhost:8800$1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800[43QQ$87:localhost:42455$1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800[33QQ$87:localhost:42455$1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 &UBC g , z # ^ D3"iea]YU%eeQ$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800$eeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800#eeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800"eeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800!eeQ$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgc$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800eeQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800_Q9Q$1570043754467mNKfq:localhost:8800$98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800T9;Q$98_m2:localhost:42455$97_sf2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800_9QQ$98_m2:localhost:42455$1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800U;;Q$97_sf2:localhost:42455$96_sf1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800T;9Q$96_sf1:localhost:42455$95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800P93Q$95_m1:localhost:42455$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800\Q3Q$1570043750466Tmiqu:localhost:8800$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800\3QQ$94:localhost:42455$1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043748464QpNXV:localhost:8800$1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043748463euAqZ:localhost:8800$1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043747462YuUEF:localhost:8800$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800kQQQ$1570043746461eQhrq:localhost:8800$1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800_Q9Q$1570043744459BIUYb:localhost:8800$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043744459BIUYb:localhost:8800$1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800T ;9Q$93_sf2:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800T ;9Q$92_sf1:localhost:42455$91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800P 93Q$91_m1:localhost:42455$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800\ Q3Q$1570043741458PZvre:localhost:8800$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800\ 3QQ$90:localhost:42455$1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043739456qeuuS:localhost:8800$1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043738455KNDHf:localhost:8800$1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043737454adOjg:localhost:8800$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800kQQQ$1570043736453VtbeL:localhost:8800$1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800\3QQ$89:localhost:42455$1570043733451EJhWh:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800M33Q$89:localhost:42455$88:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800M33Q$88:localhost:42455$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800\Q3Q$1570043733451EJhWh:localhost:8800$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800\3QQ$87:localhost:42455$1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800 $Vr9 V  r 9 7 U  q 8 T p8e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUsha2568e$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8ssha256 8e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQksha2568e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIssha256m8e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4sha256 78e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5wsha2568e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIsha256J8e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjUsha256 8e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcsssha2568e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yosha256%8e$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48sha2568e$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Ysha256D8e$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pEsha2568e$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalewsha2568e$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8gsha2568e$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yYsha2568e$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCssha2568e$9u5bRy-BfiZGzBC9rcqCTYXXl-4bdhCwYPPHgyvInFAsha256 38e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwAsha2568e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQsha256,8e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUksha256\8e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4Kuksha2568e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqwsha256@8e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mkssha256X8e$9dF_JpOL5I8X0al1y_BGNP8saoJOSpV_hsbp-NqISx8sha256 27e$9d0uiq4Sgvne8temAwJduEDzlFGsc_q42wIUw7zrKNcsha256|8e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RIsha256 88e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0sha256 M8e$9_kFLUQ0kmQaJ2PqLlt3IK0CNh2h0ZPyGKwE6L21R98sha256 z8e$9_HxoG9VY04jmCsLmxccU74MA6CMWkophUrHfTz0R5wsha256 +8e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAsha256 ]8e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqEsha256k8e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8sha2568e$9Yev2BmPcHaewtOWLSGQVYEXP6G438ry9BBB3hqmXyEsha2568e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIsha256 7e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblUsha256  SQQa) $1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3579}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}]], "prev_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}]], "type": "m.room.member", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-684", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-684:localhost:8800", "event_id": "$1570043736453VtbeL:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043736949, "hashes": {"sha256": "LkKurelcIwT80bhN2tOjadi2hE60iwxhMoglcuqp0h4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "e9Jn5BdFPaC8zNMEmITPCDBCfw4TS2uPG6hwv4EF+3aC4I1AEKzfe2iOPZASXki136bTHEoSnLivCHSnJY4BAw"}}, "unsigned": {"age_ts": 1570043736949}}RQQaC $1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3578}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-684:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043736452Igyim:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043736224, "hashes": {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "j+xHtkqOqQNe5qzDOQd7LnknZ8Xml9PTDonyfhf3wiw35Sj3ki/0KnF7HAtLr6PU+j4cnzLkwk2tFPyZGO3+Dg"}}, "unsigned": {"age_ts": 1570043736224}}?Q3Qc= $89:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800{"outlier": false, "stream_ordering": 3577}{"depth": 8, "origin": "localhost:42455", "room_id": "!NgkQVVUNzoyCVPtckM:localhost:8800", "type": "m.room.other_message_type", "sender": "@__ANON__-56:localhost:42455", "hashes": {"sha256": "jXfYkEp8JGLe95rGPIALMCbqkDAJn+BVE8KUU5FaZfs"}, "content": {"body": "Allowed"}, "auth_events": [["$1570043726445lSnmj:localhost:8800", {"sha256": "RUQFM6a8tPgzGDFnW3Rq0l6c4DNOYbp8xazNWDVgvD4"}], ["$1570043729448XmFHA:localhost:8800", {"sha256": "KlqR6Br67AXzIcRZRq+9YljKU1JFTQWfKCaguZBVPP0"}], ["$1570043728447IkYro:localhost:8800", {"sha256": "wOCt3qpsWV3Agt/x08/HiEBI4VYgbXWL3q7rjaltmNg"}], ["$87:localhost:42455", {"sha256": "ac0OIsZp2OuUInyZ9i7TwoP09tcC/R25YqZFOcVLLBo"}]], "event_id": "$89:localhost:42455", "prev_events": [["$88:localhost:42455", {}], ["$1570043733451EJhWh:localhost:8800", {}]], "origin_server_ts": 1570043734710, "signatures": {"localhost:42455": {"ed25519:1": "IQdnCRkp+lZRRqH0KsDVzX4+JpCRhxJGsO5W4gD4NUr473a8XBtVnq+YkF8fvyWxFeNLf5NBozsplnjNM6V7Cg"}}, "unsigned": {}}  +_QQay $1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3591}{"auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "type": "m.room.power_levels", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"users": {"@anon-20191002_181700-685:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043747462YuUEF:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043747412, "hashes": {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fkCo4J+s44EZOWQoxUYMotOU+LpDrO0Tc3SZP9gLY6SY+39bOrKshWg684rtfEmHsUFe9PxCW+wpvP8ziLMrBQ"}}, "unsigned": {"age_ts": 1570043747412}}^QQa) $1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3590}{"auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}]], "prev_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}]], "type": "m.room.member", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-685", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-685:localhost:8800", "event_id": "$1570043746461eQhrq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043746600, "hashes": {"sha256": "YIeEzbo0XV/5xjXjtFjl47P4NnwP0exJk4DkpnKE7lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "V8gTtn/amJu6PNXtzFYSB+1If9Xa7/2NKzACnrrWE9zjM1YsCUgd1eGlyYA95ga5UNkD6o+KpAuXpkoENZ6RAQ"}}, "unsigned": {"age_ts": 1570043746600}}]QQaC $1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3589}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"room_version": "1", "creator": "@anon-20191002_181700-685:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "event_id": "$1570043745460sJOiY:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043745802, "hashes": {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RKX2PKKrE7OEKmL/QNz1iukdi3o20lRHVbNrmhMMF7k3P8qB855Mf6hdGTc8xNjvjab5eG8L11gLhaZosObkCw"}}, "unsigned": {"age_ts": 1570043745802}}  fxVQQa $1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3582}{"auth_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}], ["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "prev_events": [["$1570043738455KNDHf:localhost:8800", {"sha256": "ETMr/x+xU69NX13RwYe1mo62S7P9Bu4bj3WH4aiEVLI"}]], "type": "m.room.history_visibility", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043739456qeuuS:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043739378, "hashes": {"sha256": "3ku2KFWtunNJh15tSUkuYYkm+SfATrPIbgEA693ZsY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R8xudxK+53MeutqSD3C0lU9gjGMP/6OgtERuOnSh966ZEf4Ou0xcUr/WcVDrz6Oc7J40sXvLl9VCROiEhZMkBA"}}, "unsigned": {"age_ts": 1570043739378}}gUQQaq $1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3581}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}]], "prev_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}]], "type": "m.room.join_rules", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043738455KNDHf:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043738603, "hashes": {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "HOZZyXCHYuCiuBlNmg0axPwdofUdIhTSOn5+Rej+/+MTkuHLtC7qjevxL8yv7jRvx2anxyxqD2O7gS0kcrJsCA"}}, "unsigned": {"age_ts": 1570043738603}}+TQQay $1570043737454adOjg:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3580}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "prev_events": [["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "type": "m.room.power_levels", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"users": {"@anon-20191002_181700-684:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "event_id": "$1570043737454adOjg:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043737904, "hashes": {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "a5EGs/oU8WnJzW2UjxQVBbp7K029IJ3YiBdtAyEz52erPBTNSvz+WtFrZz2Oh6vBavzoVcDqeFg2y72H0ZvjDw"}}, "unsigned": {"age_ts": 1570043737904}} '8W 7 n G ) ` UtT)dF}YQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800] Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800f Q'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455Y Q' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_ Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800] Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455YQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800]Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455YQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800_Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043750466Tmiqu:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455uQ'EQ !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$1570043749465PrxQH:localhost:8800e~Q? Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility$1570043748464QpNXV:localhost:8800]}Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800_|Q3 Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800{Q']Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800$1570043746461eQhrq:localhost:8800YzQ' Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.create$1570043745460sJOiY:localhost:8800]yQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800fxQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455YwQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800_vQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800]uQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800ftQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455YsQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800_rQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800]qQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800fpQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455YoQ' Q !JiUawCFQnodcpssOfK:localhost:8800m.room.create$1570043736452Igyim:localhost:8800_nQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043737454adOjg:localhost:8800_mQ3 Q !JiUawCFQnodcpssOfK:localhost:8800m.room.power_levels$1570043741458PZvre:localhost:8800flQ'E3 !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$90:localhost:42455ukQ'EQ !JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455$1570043740457GtEWQ:localhost:8800ejQ? Q !JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility$1570043739456qeuuS:localhost:8800]iQ/ Q !JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules$1570043738455KNDHf:localhost:8800 JoD s J e:i>k 8cT) w L ! g<@mB H qF u':>e':>e*Q!RSLvuCuAqKQQrKCxNq:localhost:8800  *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ! !*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 # #*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 " "*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RmdhCjvouVLmyIHjaM:localhost:8800EE*Q!RmdhCjvouVLmyIHjaM:localhost:8800DD*Q!RmdhCjvouVLmyIHjaM:localhost:8800CC*Q!RmdhCjvouVLmyIHjaM:localhost:8800BB*Q!RmdhCjvouVLmyIHjaM:localhost:8800AA*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!SUDzkfFBgpuCANOxRS:localhost:8800 *Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!RmdhCjvouVLmyIHjaM:localhost:8800FF*Q!RPfffkmSEbWggEjnoI:localhost:8800%%*Q!RPfffkmSEbWggEjnoI:localhost:8800""*Q!RPfffkmSEbWggEjnoI:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!ROoilpDjLJfjKfSPIi:localhost:8800*Q!RmwbYvIIQyPlHlClty:localhost:8800yy*Q!RmwbYvIIQyPlHlClty:localhost:8800xx*Q!RmwbYvIIQyPlHlClty:localhost:8800ww*Q!RmdhCjvouVLmyIHjaM:localhost:8800II*Q!RmdhCjvouVLmyIHjaM:localhost:8800HH*Q!RmdhCjvouVLmyIHjaM:localhost:8800GG*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!RPfffkmSEbWggEjnoI:localhost:8800--*Q!RPfffkmSEbWggEjnoI:localhost:8800++*Q!RPfffkmSEbWggEjnoI:localhost:8800((*Q!SBEprlZiuliFNSfNmz:localhost:8800qq*Q!SBEprlZiuliFNSfNmz:localhost:8800pp*Q!SBEprlZiuliFNSfNmz:localhost:8800oo*Q!SBEprlZiuliFNSfNmz:localhost:8800nn*Q!SBEprlZiuliFNSfNmz:localhost:8800mm*Q!RmwbYvIIQyPlHlClty:localhost:8800||*Q!RmwbYvIIQyPlHlClty:localhost:8800{{*Q!RmwbYvIIQyPlHlClty:localhost:8800zz*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!QyLUggxrTnULUAOseq:localhost:8800*Q!SBEprlZiuliFNSfNmz:localhost:8800rr*Q!SBEprlZiuliFNSfNmz:localhost:8800ss*Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!QyLUggxrTnULUAOseq:localhost:8800*Q!SBEprlZiuliFNSfNmz:localhost:8800tt*Q!RmdhCjvouVLmyIHjaM:localhost:8800>>*Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RYNJAGdRhIlwRZFbrO:localhost:8800 *Q!RDEAXrqXQizuhCUFPq:localhost:8800 *Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ( (*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 ' '*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 & &*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 % %*Q!RSLvuCuAqKQQrKCxNq:localhost:8800 $ $*Q!RmdhCjvouVLmyIHjaM:localhost:8800@@*Q!RmdhCjvouVLmyIHjaM:localhost:8800??   Y9QcK $91_m1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "stream_ordering": 3585}{"prev_events": [["$90:localhost:42455", {}]], "origin_server_ts": 1570043742318, "content": {"body": "M1"}, "auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}], ["$90:localhost:42455", {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}]], "event_id": "$91_m1:localhost:42455", "sender": "@__ANON__-57:localhost:42455", "hashes": {"sha256": "bhPfYc+pZfX6W5nz1hmYEuSN9/+YPkubyWBhKta6k1U"}, "depth": 7, "origin": "localhost:42455", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "type": "m.room.message", "signatures": {"localhost:42455": {"ed25519:1": "BpPTzYT63XNI6l3VTuOGxS8DXDbbCaNVul2UH0+l6YXgXItzjaGiOEUyJ/FrQkaEKGvLhLXcUlchGLcWHyNeAw"}}, "unsigned": {}}FXQQa/ $1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "stream_ordering": 3584}{"auth_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}], ["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}]], "prev_events": [["$90:localhost:42455", {"sha256": "ANWhTVU7EbbDQ81k00KtFa9E6+cUGci0VJtAN6W3sW4"}]], "type": "m.room.power_levels", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"redact": 50, "ban": 50, "invite": 0, "users_default": 0, "users": {"@anon-20191002_181700-684:localhost:8800": 100}, "events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.history_visibility": 100, "m.room.power_levels": 100, "m.room.name": 50, "m.room.avatar": 50, "test.sf": 50, "m.room.canonical_alias": 50}}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043741458PZvre:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043741554, "hashes": {"sha256": "XTXRf+PRMtKaSmEow70+q7jGXUGCMNpzTNuXovKL/wQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xAnWVSxysQ90MpyRF+di40Ncyyl/ksBFAXHahD8QCJ1SRRwwJ6t2SrLZlMeC3hKFOfjyPONV0dL8xDNFIISTDw"}}, "unsigned": {"age_ts": 1570043741554, "replaces_state": "$1570043737454adOjg:localhost:8800"}}RW3Q3 $90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3583}{"origin_server_ts": 1570043740689, "prev_events": [["$1570043739456qeuuS:localhost:8800", {"sha256": "VaKP9Fe6V5sm6DfGaindDqx0aOEgqUjvltyAfRna8H0"}]], "event_id": "$90:localhost:42455", "auth_events": [["$1570043737454adOjg:localhost:8800", {"sha256": "RUeHrznusTiwrcs1E50cFqRN4yz+EtO29WP977bHMHE"}], ["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "ETMr/x+xU69NX13RwYe1mo62S7P9Bu4bj3WH4aiEVLI"}]], "content": {"membership": "join"}, "hashes": {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}, "sender": "@__ANON__-57:localhost:42455", "type": "m.room.member", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "origin": "localhost:42455", "state_key": "@__ANON__-57:localhost:42455", "depth": 6, "signatures": {"localhost:42455": {"ed25519:1": "gWoT6CnHsLjPB3gjP97mwy+EZkdMQ74niW5r0xXO9FqbwwAX8OP1gH78XlA6YuBDUQXzaI5njwxAK7bYGjExDA"}}, "unsigned": {}} Y^ gx')1570040430185localhost:8829mH2{"pdus":{"$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg":{}}}5w')"1570040430184localhost:8829mCr{"pdus":{}}Qv'+X1570043753688localhost:42455mv{"pdus":{"$98_m2:localhost:42455":{}}}Ru'+Z1570043753098localhost:42455mtK{"pdus":{"$97_sf2:localhost:42455":{}}}Rt'+Z1570043752357localhost:42455mq{"pdus":{"$96_sf1:localhost:42455":{}}}Qs'+X1570043751669localhost:42455mnD{"pdus":{"$95_m1:localhost:42455":{}}}Rr'+Z1570043743706localhost:42455mO{"pdus":{"$93_sf2:localhost:42455":{}}}Rq'+Z1570043743024localhost:42455mM:{"pdus":{"$92_sf1:localhost:42455":{}}}Qp'+X1570043742319localhost:42455mI{"pdus":{"$91_m1:localhost:42455":{}}}  H\QQ $1570043744459BIUYb:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800{"token_id": 664, "txn_id": "617", "stream_ordering": 3588}{"auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "2CIRNC4TP4YWZRji+D4tmwPSWir6Yt6r+1A+1HDw0yw"}], ["$1570043736453VtbeL:localhost:8800", {"sha256": "vrQ5wrSCyz83gyENM2TQpH8wqD/I+E6agAlZqrlptQ0"}], ["$1570043741458PZvre:localhost:8800", {"sha256": "0lwFCe1HVsaJ+XLnj7Z+H6p/mzmKyvdmEPpVjiaBoZU"}]], "prev_events": [["$1570043741458PZvre:localhost:8800", {"sha256": "0lwFCe1HVsaJ+XLnj7Z+H6p/mzmKyvdmEPpVjiaBoZU"}], ["$91_m1:localhost:42455", {"sha256": "T9lZsMZs8/nvonDwDFSmK9kCFH9iAd58E5gT7SfeLME"}]], "type": "m.room.message", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "sender": "@anon-20191002_181700-684:localhost:8800", "content": {"msgtype": "m.text", "body": "m3"}, "depth": 8, "prev_state": [], "event_id": "$1570043744459BIUYb:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043744408, "hashes": {"sha256": "09iZwlIkNqPxL5peYlyNaChLiWDxy1pM+SbqS0tnvF0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YR9oI2CxM+EQsw8b1jFkKGBCzs0hiae/DMb2Y1Sap+T66qAo9QerHca8h447+IqTx6CYdWtVsKIco2J18Qy1Cg"}}, "unsigned": {"age_ts": 1570043744408}}[;Q G $93_sf2:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3587}{"sender": "@__ANON__-57:localhost:42455", "hashes": {"sha256": "OUND8lGt9oi+5+qZ1M4E80uaHlirCiw5vCZGF/QRGwc"}, "origin": "localhost:42455", "depth": 9, "type": "test.sf", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "prev_events": [["$91_m1:localhost:42455", {}]], "origin_server_ts": 1570043743703, "content": {"body": "SF2"}, "event_id": "$93_sf2:localhost:42455", "auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}], ["$90:localhost:42455", {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}]], "signatures": {"localhost:42455": {"ed25519:1": "P5TOVDRGIl/yzX9fvGNXZA2AqvBn2tm2o/HxbJ9rHQINZFUjhJ/sKO9Nt4jYUr7kMySeVrEwd4d+sfrb3mPDBQ"}}, "unsigned": {}}Z;Q G $92_sf1:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3586}{"sender": "@__ANON__-57:localhost:42455", "hashes": {"sha256": "HOGFSTineRZODPSP0hiGaWLJXfN6b0KdDJJPLwKsMHk"}, "origin": "localhost:42455", "depth": 8, "type": "test.sf", "room_id": "!JiUawCFQnodcpssOfK:localhost:8800", "prev_events": [["$91_m1:localhost:42455", {}]], "origin_server_ts": 1570043743022, "content": {"body": "SF1"}, "event_id": "$92_sf1:localhost:42455", "auth_events": [["$1570043736452Igyim:localhost:8800", {"sha256": "nnrajyV6Bd2jOubk55nfelbQLX/MNlhACBpxXmnb3As"}], ["$1570043738455KNDHf:localhost:8800", {"sha256": "8nBbnsmXjP6sFdZ/wGn0sgdgYSsM9EOWOvyQA2hBYrA"}], ["$1570043737454adOjg:localhost:8800", {"sha256": "BGNG1nN6P2GYqKPPSejkHSgO8L5GikOBK1Gm31YAqGE"}], ["$90:localhost:42455", {"sha256": "mS2JC5ApJW/KliOzd5l67HpEYHyc/mi5DlNRXvVBqyE"}]], "signatures": {"localhost:42455": {"ed25519:1": "96GvTE6J5nA9m/ZoO2Gz49H4c9pJDSH6XjQGaoO6KgG/W01fuvDbxED8720riI3PGFZuCYW9HPavMdyu01V1Dw"}}, "unsigned": {}} f(  d f h +5>HN e'Q  ]$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8m.room.create!ABHbfUdkHCJksMsaUt:localhost:8800mm+@anon-20191002_181700-698:localhost:8800!e)Q ] $9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8sm.room.message!DntdfAPfCfgdOoRMdl:localhost:8800m$m(@anon-20191002_181700-691:localhost:8800!e)Q ]$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMsm.room.message!DntdfAPfCfgdOoRMdl:localhost:8800mٸmټ@anon-20191002_181700-691:localhost:8800,e?Q ]$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4m.room.history_visibility!DntdfAPfCfgdOoRMdl:localhost:8800mmր@anon-20191002_181700-691:localhost:8800$e/Q ]$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgm.room.join_rules!DntdfAPfCfgdOoRMdl:localhost:8800mm@anon-20191002_181700-691:localhost:8800&e3Q ]$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gm.room.power_levels!DntdfAPfCfgdOoRMdl:localhost:8800m^m@anon-20191002_181700-691:localhost:8800 e'Q ]$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUm.room.member!DntdfAPfCfgdOoRMdl:localhost:8800mHm@anon-20191002_181700-691:localhost:8800 e'Q  ]$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAm.room.create!DntdfAPfCfgdOoRMdl:localhost:8800mPm*@anon-20191002_181700-691:localhost:8800!e)Q ] $cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgcm.room.message!THHfVSOSWiBQTHRAnJ:localhost:8800mmK@anon-20191002_181700-690:localhost:8800,e?Q ]$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUm.room.history_visibility!THHfVSOSWiBQTHRAnJ:localhost:8800mm欃@anon-20191002_181700-690:localhost:8800$e/Q ]$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUm.room.join_rules!THHfVSOSWiBQTHRAnJ:localhost:8800mEm桸@anon-20191002_181700-690:localhost:8800&e3Q ]$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQm.room.power_levels!THHfVSOSWiBQTHRAnJ:localhost:8800m m朥@anon-20191002_181700-690:localhost:8800 e'Q ]$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEm.room.member!THHfVSOSWiBQTHRAnJ:localhost:8800m}m@anon-20191002_181700-690:localhost:8800 e'Q  ]$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUm.room.create!THHfVSOSWiBQTHRAnJ:localhost:8800mm^@anon-20191002_181700-690:localhost:8800Q)Q ] $1570043754467mNKfq:localhost:8800m.room.message!KetCYFxrTxawNOGnOf:localhost:8800 mxVmxZ@anon-20191002_181700-685:localhost:88009)Q E $98_m2:localhost:42455m.room.message!KetCYFxrTxawNOGnOf:localhost:8800 mtmul@__ANON__-58:localhost:42455y;Q E $97_sf2:localhost:42455test.sf!KetCYFxrTxawNOGnOf:localhost:8800 mrmr@__ANON__-58:localhost:42455y ;Q E$96_sf1:localhost:42455test.sf!KetCYFxrTxawNOGnOf:localhost:8800momp@__ANON__-58:localhost:42455 9)Q E$95_m1:localhost:42455m.room.message!KetCYFxrTxawNOGnOf:localhost:8800mlmma@__ANON__-58:localhost:42455 Q3Q ]$1570043750466Tmiqu:localhost:8800m.room.power_levels!KetCYFxrTxawNOGnOf:localhost:8800mj@mj@anon-20191002_181700-685:localhost:8800{ 3'Q E$94:localhost:42455m.room.member!KetCYFxrTxawNOGnOf:localhost:8800mf>mf@__ANON__-58:localhost:42455" Q?Q ]$1570043748464QpNXV:localhost:8800m.room.history_visibility!KetCYFxrTxawNOGnOf:localhost:8800mamc}@anon-20191002_181700-685:localhost:8800Q/Q ]$1570043748463euAqZ:localhost:8800m.room.join_rules!KetCYFxrTxawNOGnOf:localhost:8800m^m_u@anon-20191002_181700-685:localhost:8800Q3Q ]$1570043747462YuUEF:localhost:8800m.room.power_levels!KetCYFxrTxawNOGnOf:localhost:8800m\Tm\@anon-20191002_181700-685:localhost:8800Q'Q ]$1570043746461eQhrq:localhost:8800m.room.member!KetCYFxrTxawNOGnOf:localhost:8800mY(mY@anon-20191002_181700-685:localhost:8800  Y j  ? <qyU SX!IT7aWeQ' $5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800m.room.createmVeQ? $QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibilityeUeQ/ $KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rulesgTeQ3 $d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels SeQ']$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800joinaReQ' $Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800m.room.createmQeQ? $wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibilityePeQ/ $XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rulesgOeQ3 $lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels NeQ']$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800joinaMeQ' $y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create]LQQ3 $1570043747462YuUEF:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levelsWFQQ' $1570043745460sJOiY:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.create]EQQ3 $1570043741458PZvre:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.power_levelshD3Q'E$90:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800m.room.member@__ANON__-57:localhost:42455joincCQQ? $1570043739456qeuuS:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.history_visibility[BQQ/ $1570043738455KNDHf:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.join_rules@QQ']$1570043736453VtbeL:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.member@anon-20191002_181700-684:localhost:8800joinW?QQ' $1570043736452Igyim:localhost:8800!JiUawCFQnodcpssOfK:localhost:8800m.room.create[>QQ/ $1570043729448XmFHA:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.join_rulesh=3Q'E$87:localhost:42455!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@__ANON__-56:localhost:42455joinW<QQ' $1570043726445lSnmj:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.createc:QQ? $1570043730449XMaNb:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.history_visibility7QQ']$1570043727446CGYaE:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.member@anon-20191002_181700-683:localhost:8800joine5eQ/ $yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc!lgejtcwlywOoIXwEgy:localhost:8800m.room.join_rules 4eQ']$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkE!lgejtcwlywOoIXwEgy:localhost:8800m.room.member@anon-20191002_181700-682:localhost:8800joinhK3Q'E$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455joincJQQ? $1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility[IQQ/ $1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules];QQ3 $1570043728447IkYro:localhost:8800!NgkQVVUNzoyCVPtckM:localhost:8800m.room.power_levelsGQQ']$1570043746461eQhrq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@anon-20191002_181700-685:localhost:8800join #3o x  < E m | :IwzGymOeQ? $RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y!itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibilityeNeQ/ $Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rulesgMeQ3 $4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels LeQ']$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800aKeQ' $yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800m.room.creategJeQ3 $OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs!GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_accessmIeQ? $Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibilityeHeQ/ $2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rulesgGeQ3 $Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels FeQ']$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800aEeQ' $AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.create DeQ']$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800mCeQ? $OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800m.room.history_visibilityeBeQ/ $YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800m.room.join_rulesgAeQ3 $lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800m.room.power_levels @eQ']$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800a?eQ' $DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800m.room.createm>eQ? $xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibilitye=eQ/ $-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rulesg<eQ3 $9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels ;eQ']$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800a:eQ' $5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800m.room.createm9eQ? $QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4!DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibilitye8eQ/ $KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg!DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rulesg7eQ3 $d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels 6eQ']$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800a5eQ' $Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800m.room.createm4eQ? $wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibilitye3eQ/ $XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rulesg2eQ3 $lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels 1eQ']$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800a0eQ' $y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create]/QQ3 $1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levelsd.3Q'E$94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455c-QQ? $1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility "<i ] f  $ Lru 03U^adoQ' e0!itfjLXhEaORJLkbfVS:localhost:8800m.room.create$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsjnQ3 e/!GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_access$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_PisjspmQ? e.!GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibility$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIohlQ/ e-!GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rules$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0AjkQ3 e,!GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 jQ']e+!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIdiQ' e*!GsjDgpaxdwYfnefiWO:localhost:8800m.room.create$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI hQ']e)!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8pgQ? e(!jomrpmwwQQtghscizn:localhost:8800m.room.history_visibility$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIhfQ/ e'!jomrpmwwQQtghscizn:localhost:8800m.room.join_rules$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUjeQ3 e&!jomrpmwwQQtghscizn:localhost:8800m.room.power_levels$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A dQ']e%!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyodcQ' e$!jomrpmwwQQtghscizn:localhost:8800m.room.create$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYpbQ? e"!ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibility$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5khaQ/ e!!ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rules$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMj`Q3 e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg _Q']e!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucd^Q' e!ABHbfUdkHCJksMsaUt:localhost:8800m.room.create$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8p]Q? e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibility$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4h\Q/ e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rules$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlgj[Q3 e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g ZQ']e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUdYQ' e!DntdfAPfCfgdOoRMdl:localhost:8800m.room.create$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAApXQ? e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibility$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUhWQ/ e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rules$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUjVQ3 e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ UQ']e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEdTQ' e!THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUSQ3 QQ!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800$1570043750466Tmiqu:localhost:8800RQ3 QQ !KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043750466Tmiqu:localhost:8800$1570043747462YuUEF:localhost:8800gQQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455fPQ? Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.history_visibility$1570043748464QpNXV:localhost:8800^OQ/ Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800`NQ3 Q!KetCYFxrTxawNOGnOf:localhost:8800m.room.power_levels$1570043747462YuUEF:localhost:8800  Rb3Q3 $94:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:42455", "stream_ordering": 3594}{"content": {"membership": "join"}, "event_id": "$94:localhost:42455", "auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "3RDEdo2+T7yfvffUggpAt4C2YD/ofM6Hu9gpKXMlwJg"}]], "prev_events": [["$1570043748464QpNXV:localhost:8800", {"sha256": "uwF9ZPPoXohTwJsX2csFEn5wpJ1a6Ij7vueZIdtyLwA"}]], "origin_server_ts": 1570043749950, "origin": "localhost:42455", "state_key": "@__ANON__-58:localhost:42455", "depth": 6, "type": "m.room.member", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}, "signatures": {"localhost:42455": {"ed25519:1": "djDLznTPG6H1vvwPX+eXqQwfw9Xrs8L1SDs8FsSQ8IZuPdslYgkBpUoEQHsosIbUooL7VvdxqoVb31IPWmqcCw"}}, "unsigned": {}}xaQQa $1570043748464QpNXV:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3593}{"auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$1570043748463euAqZ:localhost:8800", {"sha256": "3RDEdo2+T7yfvffUggpAt4C2YD/ofM6Hu9gpKXMlwJg"}]], "type": "m.room.history_visibility", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "event_id": "$1570043748464QpNXV:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043748770, "hashes": {"sha256": "k127XuJXLNlyyYX9eazb0RQ1+zAP+uzlwpNIChHntDA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G0aifGui6R0kHyQuczTzwanM915zlfeulGznBdcQatzrbZpbV4A6a5if9+rV7RyXK/uWr8cuRlLbm9jh+YaGDg"}}, "unsigned": {"age_ts": 1570043748770}}g`QQaq $1570043748463euAqZ:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3592}{"auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}]], "prev_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}]], "type": "m.room.join_rules", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "event_id": "$1570043748463euAqZ:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043748095, "hashes": {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SsU9fr2LBHdZr9zC07/E9tg/kv9hwf2pUUOoT8FcVk7jX8YnhXNeDVDW41wurT3/97fRrEWgNRb58Y39Ic+iAA"}}, "unsigned": {"age_ts": 1570043748095}} _^+vYB'rOgJ3 c F / b /  y ^ +  u Z ' | Y B R5iFyV9"q2|e& o03  m.room.power_levels b2'E m.room.member@__ANON__-56:localhost:42455 d/  m.room.join_rules e'  m.room.create c3  m.room.power_levels ^2'E m.room.member@__ANON__-56:localhost:42455 `/  m.room.join_rules a'  m.room.create _3  m.room.power_levels ]2'E m.room.member@__ANON__-56:localhost:42455 \2'E m.room.member@__ANON__-56:localhost:42455 ["?  m.room.history_visibility Z>'] m.room.member@anon-20191002_181700-708:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-706:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-704:localhost:8800 '  m.room.create 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-702:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-701:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-700:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-698:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-691:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-690:localhost:8800 '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 /  m.room.join_rules '  m.room.create 3  m.room.power_levels 2'E m.room.member@__ANON__-58:localhost:42455 2'E m.room.member@__ANON__-58:localhost:42455 "?  m.room.history_visibility ~/  m.room.join_rules }3  m.room.power_levels |>'] m.room.member@anon-20191002_181700-685:localhost:8800 {'  m.room.create z3  m.room.power_levels v2'E m.room.member@__ANON__-57:localhost:42455 x/  m.room.join_rules y'  m.room.create w3  m.room.power_levels r2'E m.room.member@__ANON__-57:localhost:42455 t/  m.room.join_rules u'  m.room.create s3  m.room.power_levels n2'E m.room.member@__ANON__-57:localhost:42455 p/  m.room.join_rules q'  m.room.create o3  m.room.power_levels m2'E m.room.member@__ANON__-57:localhost:42455 l2'E m.room.member@__ANON__-57:localhost:42455 k"?  m.room.history_visibility j/  m.room.join_rules i3  m.room.power_levels h>'] m.room.member@anon-20191002_181700-684:localhost:8800 g'  m.room.create f  6)e;Q G $96_sf1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3597}{"content": {"body": "SF1"}, "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "event_id": "$96_sf1:localhost:42455", "prev_events": [["$95_m1:localhost:42455", {}]], "origin_server_ts": 1570043752354, "depth": 8, "origin": "localhost:42455", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "type": "test.sf", "sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "nxQxuckgukaBXZFX1A82UteyYxePRFC1Qh3cHlpomvQ"}, "signatures": {"localhost:42455": {"ed25519:1": "6k2NfRm9dlelAflEAYF2JpIZX/JWbBYbgZ8JprNuz5JvajbGuIaJcn3phOCqy/z6gNUfZp/mhFMyLBgMw1QNCQ"}}, "unsigned": {}} d9QcK $95_m1:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "stream_ordering": 3596}{"sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "tfQDH8jNVXiLeK/QSfKjpKzkysi91cEPtuOS6/YF3Rc"}, "origin": "localhost:42455", "depth": 7, "type": "m.room.message", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "prev_events": [["$94:localhost:42455", {}]], "origin_server_ts": 1570043751668, "content": {"body": "M1"}, "event_id": "$95_m1:localhost:42455", "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "signatures": {"localhost:42455": {"ed25519:1": "yDYCYd+niLaf0TM6vGg0zqx/KWQKsKP8MBvfgj5XPpFaH0eEJ/kTTBBrGmODOxBB2BSUVTU3cwSPg4/L15UNBw"}}, "unsigned": {}}FcQQa/ $1570043750466Tmiqu:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "stream_ordering": 3595}{"auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$94:localhost:42455", {"sha256": "cyd/SeUk1hSsa3hljO2LIF95In4UcS+/z2/LwtPsmBs"}]], "type": "m.room.power_levels", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"events_default": 0, "state_default": 50, "kick": 50, "events": {"m.room.canonical_alias": 50, "test.sf": 50, "m.room.avatar": 50, "m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100}, "users": {"@anon-20191002_181700-685:localhost:8800": 100}, "users_default": 0, "redact": 50, "ban": 50, "invite": 0}, "depth": 7, "prev_state": [], "state_key": "", "event_id": "$1570043750466Tmiqu:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043750976, "hashes": {"sha256": "5SRPKzKCg3M9LqvP041nlmjzWHDG4UhiBm99Pn/5jBQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WcyKpOi+lBj5pki/Td6HPduBozDesmziKsWCNAyJpHQLPeG3BsEd5Y2Km7y4JGXKJq3nkvODBv+OSW9ELcveBQ"}}, "unsigned": {"age_ts": 1570043750976, "replaces_state": "$1570043747462YuUEF:localhost:8800"}} <|t l< d \ T LDeeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800 xeeQ$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs!DntdfAPfCfgdOoRMdl:localhost:8800 eeQ$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA!MXhwoqNXvexeDDSOZT:localhost:8800 eeQ$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss$4fL4VKCVDmo-j4g2Qo7NHveymz-pXGU5ofrcvX9-QpM!msMfSdLIAvklSSAnci:localhost:8800eeQ$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$A3TLQL-4NDCalK6ZIcszUhmxsIa1FDjttO2jFHgjl48$ug1iAVNa8jVfv7066eZGbDLcsiqPEatu4KCpeoLPBH8!SrMQpDMFREKRMELwbL:localhost:8800eeQ$A2EFlUhn-5RUNksJZK9hDYxMdsGFZ6OYv4n7lEbT73Y$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA!RmdhCjvouVLmyIHjaM:localhost:8800eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s!mTlCLZQCmfDuQsJxxp:localhost:8800\eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmU!mTlCLZQCmfDuQsJxxp:localhost:8800^eeQ$9yxxjIOuYKdhJ_5_DUqSoj9lLSM8XIBdwRchVs971pE$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s!mTlCLZQCmfDuQsJxxp:localhost:8800]eeQ$9yj55mzgPTfoqxWQut_ti7Bxfe2R_EPKHVQnXtCalew$whIlB4BhQuN53B-K4OmCmCn7-0msFkPV2yBEsXVEgM8!ZaOktTIVeRgBXxfubH:localhost:8800LeeQ$9yZn1GmkTjpXzItO2Nlhw09yqaCjJlRh9Ydb-fmcQ8g$n6rCeRK6OuGMhjoIgIz469eoXw7NS_s9IRA-MIzCh40!JZouHBRxCRbcxYJnbn:localhost:8800eeQ$9xZnxY20zOYFun2xGSx6o9uZ32nS2y-nn_LdsZAR_yY$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f0!SyIWYOmcGiASNkPCTB:localhost:8800eeQ$9w_99b1oWaPNEkfESbdupk8i2Iv9NDag2dIFY5rrUCs$2GrOsjK4G42qjAoVm7X26akXBNDSjKjyqbnvewPy7ds!TeraguiGoZoeOGFzlI:localhost:8800'eeQ$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM!ZaOktTIVeRgBXxfubH:localhost:8800QeeQ$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQ$h8iLCChICPmTlTJ11ei7MxYOG9Beeid-eZcn97WgEiM!eJPTUgihvSwaOhIkrC:localhost:8800eeQ$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk$D3xOiPqhS890PRqKR5khy9YJPHxsBRMbjdK3sHllOiQ!bOSxzttDtclnrWnLov:localhost:8800 .r16 1 , ~ ' y " t oje` [VQLT,Qe:!wCsDjKBtuUbrmZgjsB:localhost:8800$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djssT+Qe9!SpXEytywhTbAftyVBr:localhost:8800$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAT*Qe8!SpXEytywhTbAftyVBr:localhost:8800$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIT)Qe7!SpXEytywhTbAftyVBr:localhost:8800$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2VcT(Qe6!SpXEytywhTbAftyVBr:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4T'Qe5!SpXEytywhTbAftyVBr:localhost:8800$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwT&Qe4!itfjLXhEaORJLkbfVS:localhost:8800$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82YT%Qe3!itfjLXhEaORJLkbfVS:localhost:8800$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAT$Qe2!itfjLXhEaORJLkbfVS:localhost:8800$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3ZtljyoT#Qe1!itfjLXhEaORJLkbfVS:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcT"Qe0!itfjLXhEaORJLkbfVS:localhost:8800$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsT!Qe/!GsjDgpaxdwYfnefiWO:localhost:8800$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_PisjsT Qe.!GsjDgpaxdwYfnefiWO:localhost:8800$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIoTQe-!GsjDgpaxdwYfnefiWO:localhost:8800$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0ATQe,!GsjDgpaxdwYfnefiWO:localhost:8800$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4TQe+!GsjDgpaxdwYfnefiWO:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBITQe*!GsjDgpaxdwYfnefiWO:localhost:8800$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZITQe)!jomrpmwwQQtghscizn:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8TQe(!jomrpmwwQQtghscizn:localhost:8800$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vITQe'!jomrpmwwQQtghscizn:localhost:8800$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUTQe&!jomrpmwwQQtghscizn:localhost:8800$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3ATQe%!jomrpmwwQQtghscizn:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoTQe$!jomrpmwwQQtghscizn:localhost:8800$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYTQe#!ABHbfUdkHCJksMsaUt:localhost:8800$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPgTQe"!ABHbfUdkHCJksMsaUt:localhost:8800$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kTQe!!ABHbfUdkHCJksMsaUt:localhost:8800$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMTQe !ABHbfUdkHCJksMsaUt:localhost:8800$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgTQe!ABHbfUdkHCJksMsaUt:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucTQe!ABHbfUdkHCJksMsaUt:localhost:8800$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8TQe!DntdfAPfCfgdOoRMdl:localhost:8800$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8sTQe!DntdfAPfCfgdOoRMdl:localhost:8800$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMsT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4T Qe!DntdfAPfCfgdOoRMdl:localhost:8800$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582ZlgT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1gT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUT Qe!DntdfAPfCfgdOoRMdl:localhost:8800$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAATQe!THHfVSOSWiBQTHRAnJ:localhost:8800$cxy6E_d-ksRn-9e_nr0fjqvoXbpyDGLKjzbeW6jrDgcTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQTQe!THHfVSOSWiBQTHRAnJ:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrETQe!THHfVSOSWiBQTHRAnJ:localhost:8800$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPUJQQ!KetCYFxrTxawNOGnOf:localhost:8800$1570043754467mNKfq:localhost:8800>Q9!KetCYFxrTxawNOGnOf:localhost:8800$98_m2:localhost:42455>Q9 !KetCYFxrTxawNOGnOf:localhost:8800$95_m1:localhost:42455JQQ !KetCYFxrTxawNOGnOf:localhost:8800$1570043750466Tmiqu:localhost:8800 ;f}\;uT3 m L + e D #  ~ ] <  v U 4  n M , fE$^=wV5lJ(~\:nL*^<pN, \ ')1570040430163localhost:8829; ')1570040430162localhost:8829: ')1570040430161localhost:88299 ')1570040430160localhost:88298 ')1570040430159localhost:88297 ')1570040430158localhost:88296 ')1570040430157localhost:88295 ')1570040430156localhost:88294 ')1570040430155localhost:88293 ')1570040430154localhost:88292 ')1570040430153localhost:88291 ')1570040430152localhost:88290 ')1570040430151localhost:8829/ ')1570040430150localhost:8829. ')1570040430149localhost:8829- ')1570040430148localhost:8829, ')1570040430147localhost:8829+ ')1570040430146localhost:8829* ')1570040430145localhost:8829) ')1570040430144localhost:8829( ')1570040430143localhost:8829' ')1570040430142localhost:8829& ')1570040430141localhost:8829% ')1570040430140localhost:8829$ ')1570040430139localhost:8829# ')1570040430138localhost:8829" ')1570040430137localhost:8829! ')1570040430136localhost:8829 ')1570040430135localhost:8829 ')1570040430134localhost:8829 ')1570040430133localhost:8829 ')1570040430132localhost:8829 ')1570040430131localhost:8829 ')1570040430130localhost:8829 ')1570040430129localhost:8829 ')1570040430128localhost:8829 ')1570040430127localhost:8829 ')1570040430126localhost:8829 ')1570040430125localhost:8829 ')1570040430124localhost:8829 ')1570040430123localhost:8829 ')1570040430122localhost:8829 ')1570040430121localhost:8829 ')1570040430120localhost:8829 ')1570040430119localhost:8829 ')1570040430118localhost:8829 ')1570040430117localhost:8829 ')1570040430116localhost:8829 ')1570040430115localhost:8829 ')1570040430114localhost:8829 ')1570040430113localhost:8829 ')1570040430112localhost:8829 ')1570040430111localhost:8829 ')1570040430110localhost:8829 ')1570040430109localhost:8829 ')1570040430108localhost:8829 ')1570040430107localhost:8829 ')1570040430106localhost:8829') 1570040430105localhost:8829 <|[:tS2 > k I '  } [ 9  m K )   ] ;  o M + _ ')1570040430185localhost:8829x ')1570040430184localhost:8829w!'+1570043753688localhost:42455v!'+1570043753098localhost:42455u!'+1570043752357localhost:42455t!'+1570043751669localhost:42455s!'+1570043743706localhost:42455r!'+1570043743024localhost:42455q!'+1570043742319localhost:42455p!'+1570043734714localhost:42455o!'+1570043734039localhost:42455n!'+1570043724409localhost:42455m!'+1570043724406localhost:42455l!'+1570043718021localhost:42455k!'+1570043716261localhost:42455j!'+1570043709303localhost:42455i!'+1570043708853localhost:42455h!'+1570043685815localhost:42455g!'+1570043667066localhost:42455f!'+1570043665475localhost:42455e!'+1570043658776localhost:42455d!'+1570043657562localhost:42455c!'+1570043650664localhost:42455b!'+1570043643608localhost:42455a!'+1570043642975localhost:42455`!'+1570043641630localhost:42455_!'+1570043628616localhost:42455^!'+1570043627779localhost:42455]!'+1570043626471localhost:42455\!'+1570043625647localhost:42455[!'+1570043618483localhost:42455Z!'+1570043617971localhost:42455Y!'+1570043609963localhost:42455X!'+1570043594716localhost:42455W!'+1570043561185localhost:42455V!'+1570043553629localhost:42455U!'+1570043552017localhost:42455T!'+1570043544090localhost:42455S!'+1570043431598localhost:42455R!'+1570043407452localhost:42455Q!'+1570043400274localhost:42455P ')1570040430183localhost:8829O ')1570040430182localhost:8829N ')1570040430181localhost:8829M ')1570040430180localhost:8829L ')1570040430179localhost:8829K ')1570040430178localhost:8829J ')1570040430177localhost:8829I ')1570040430176localhost:8829H ')1570040430175localhost:8829G ')1570040430174localhost:8829F ')1570040430173localhost:8829E ')1570040430172localhost:8829D ')1570040430171localhost:8829C ')1570040430170localhost:8829B ')1570040430169localhost:8829A ')1570040430168localhost:8829@ ')1570040430167localhost:8829? ')1570040430166localhost:8829> ')1570040430165localhost:8829= H 5HiieQa_$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3601}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-690:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043759560, "hashes": {"sha256": "OeBcTN+0+LVIGsxIjU2Qee2njq47neAZBqBSN2Zy0oE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "m8C7GIaM9m8OFeSnCWxXt7QD4UlQPJRncxKNmeGyEDJoIDLOhcErwU9nYR4K0PW+Jg3MRRHtFENzN3d1Fr3tBQ"}}, "unsigned": {"age_ts": 1570043759560}}fhQQK $1570043754467mNKfq:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800{"token_id": 665, "txn_id": "618", "stream_ordering": 3600}{"auth_events": [["$1570043747462YuUEF:localhost:8800", {"sha256": "L+czcZag9tbg4R9fOflGSYkIZmuPq8VWTPD7lr2eX+8"}], ["$1570043745460sJOiY:localhost:8800", {"sha256": "u7JPTn5A643gINB9feWH0XjUiHZgR1/GZvQdFOaZLvk"}], ["$1570043746461eQhrq:localhost:8800", {"sha256": "e3Iqso3U1v5GiBNg94N0CIRxok0zkbBLhG+bvoCSv7E"}]], "prev_events": [["$98_m2:localhost:42455", {"sha256": "lNffKyvbmCQnb80qhe6Mm926oHxPyGnRX0hgKkHvL3Q"}]], "type": "m.room.message", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@anon-20191002_181700-685:localhost:8800", "content": {"body": "m3", "msgtype": "m.text"}, "depth": 11, "prev_state": [], "event_id": "$1570043754467mNKfq:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043754582, "hashes": {"sha256": "xjBQpX1gjtgXLe8tPU7t/DGnGT3/hBf9a+t32WAs0mk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qGDkwZ1Eyc7YS70vMkUxL2QTevQN3G9fYOd+L0Kr/KA63yEa/ursEE6DoBBsgwohIqLFx3o6Z6CwRwb7OGNCDQ"}}, "unsigned": {"age_ts": 1570043754582}}:g9Qc- $98_m2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "stream_ordering": 3599}{"origin_server_ts": 1570043753686, "prev_events": [["$1570043750466Tmiqu:localhost:8800", {}], ["$97_sf2:localhost:42455", {}]], "event_id": "$98_m2:localhost:42455", "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "content": {"body": "M2"}, "hashes": {"sha256": "DOs3WPZcviMAMC/9/+bJRESw/svx5flwhB1PwzLuB8s"}, "sender": "@__ANON__-58:localhost:42455", "type": "m.room.message", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "origin": "localhost:42455", "depth": 10, "signatures": {"localhost:42455": {"ed25519:1": "vUjCjuwk5WL1ggk4QmM5pG8BEOdm1NgW3u+aa03NEUD6IBwDErsL5TXNJCjeP8VPFqNMXLsKqsvdWvGimrmBCQ"}}, "unsigned": {}}f;Q I $97_sf2:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800{"outlier": false, "soft_failed": true, "stream_ordering": 3598}{"origin": "localhost:42455", "depth": 9, "type": "test.sf", "room_id": "!KetCYFxrTxawNOGnOf:localhost:8800", "sender": "@__ANON__-58:localhost:42455", "hashes": {"sha256": "CfqUxZ+44PrnJjK7jxY9z6lpkqM+UeM0jWQ2F04xjlU"}, "content": {"body": "SF2"}, "event_id": "$97_sf2:localhost:42455", "auth_events": [["$1570043745460sJOiY:localhost:8800", {"sha256": "Y3sM6RSAnxHqpI4GbXMj38eji6KqHdi/25HUn/SLREE"}], ["$1570043748463euAqZ:localhost:8800", {"sha256": "vDoaYflOLlGMXy/38fipomx4XOiXbdgy42VCrstp/bg"}], ["$1570043747462YuUEF:localhost:8800", {"sha256": "m/tXVNkdlxq5EqAdF8M+0MNt+KH2qYwEnsiJkGaMMdQ"}], ["$94:localhost:42455", {"sha256": "Cov4ECT/kXu+BOoWLB5yWCjqEpCC5zpsF7/EaWmsHJ0"}]], "prev_events": [["$96_sf1:localhost:42455", {}]], "origin_server_ts": 1570043753097, "signatures": {"localhost:42455": {"ed25519:1": "RLLG9SLvY5O2D13pwjqvoY/KCm8vSYVdYqP/70DVblLoNIReDNfBd/rlA25RvwZ2Rq7xnErh94pkr6m0pWEhCg"}}, "unsigned": {}} #h7B l  / W \CNSw @hc2Q' e !SpXEytywhTbAftyVBr:localhost:8800m.room.create$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwo1Q? e !itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibility$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Yg0Q/ e !itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rules$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAi/Q3 e !itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo .Q']e !itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcc-Q' e !itfjLXhEaORJLkbfVS:localhost:8800m.room.create$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsi,Q3 e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_access$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjso+Q? e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibility$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIog*Q/ e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rules$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Ai)Q3 e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 (Q']e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIc'Q' e !GsjDgpaxdwYfnefiWO:localhost:8800m.room.create$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI &Q']e !jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8o%Q? e !jomrpmwwQQtghscizn:localhost:8800m.room.history_visibility$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIg$Q/ e !jomrpmwwQQtghscizn:localhost:8800m.room.join_rules$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUi#Q3 e !jomrpmwwQQtghscizn:localhost:8800m.room.power_levels$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A "Q']e !jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoc!Q' e !jomrpmwwQQtghscizn:localhost:8800m.room.create$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYo Q? e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibility$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kgQ/ e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rules$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMiQ3 e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg Q']e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uccQ' e !ABHbfUdkHCJksMsaUt:localhost:8800m.room.create$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8oQ? e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.history_visibility$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4gQ/ e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.join_rules$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582ZlgiQ3 e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.power_levels$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g Q']e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.member@anon-20191002_181700-691:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUcQ' e !DntdfAPfCfgdOoRMdl:localhost:8800m.room.create$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAAoQ? e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.history_visibility$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEUgQ/ e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.join_rules$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogUiQ3 e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.power_levels$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ Q']e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.member@anon-20191002_181700-690:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEcQ' e !THHfVSOSWiBQTHRAnJ:localhost:8800m.room.create$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU]Q/ Q !KetCYFxrTxawNOGnOf:localhost:8800m.room.join_rules$1570043748463euAqZ:localhost:8800fQ'E3 !KetCYFxrTxawNOGnOf:localhost:8800m.room.member@__ANON__-58:localhost:42455$94:localhost:42455 ->i { B " Q   m 4   P n5QinU5Qm4PxM@W@/98e$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8sha256 8e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8csha256J8e$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAsha256&8e$644nEqLMjsEuSUsotH8kTzOi-O5i_FhjLSfdXEZqnbEsha256*I$63_redaction1:localhost:42455sha256 3$62:localhost:42455sha256 8e$61DFkSILpy9RWZ6GNiBHj0fyTTfgKwnqA9noncF8_eYsha256H3$61:localhost:42455sha256 |%?$60_msg_e:localhost:42455sha256 G8e$60Mf1_HIes_a6VcBcNEJQtRWiR5jziRrUqNHpq01iHMsha2568e$5yvoa1Tc1KnR1JHZlkDK3AIqwOnfyT2knbtTmmsvJpgsha2568e$5w9JLSA_ASE3IbZn3lirrCNGSTcuZBVMaMcILJawYa4sha2568e$5trfhM0ORA3fMsWBimKjpZjWgBsKbksqCrIdNG-ijPksha256 8e$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yosha2568e$5qgCD0XGEbwVeNNSNmedx2iHk5BYqsqYU28_OHf-d6Msha2568e$5q395oTKQ6QY0t_dmtJIo6EG6qJMyZqX3KoR6mt00Fwsha2568e$5mIKU1FRgf14LSbRY9-Hr-eIZN8uG54rfZgStsdNSkwsha2568e$5iIEa1AJguDh1impawuCFGBCDr-CUOfe94HivXrdbassha2568e$5hEf38rm455O5_PmwC3P18YwVr2tJhfiYDqeu3Yv-VUsha2568e$5edUpsgX5LEYsTAn7qiNsOD9iLevSpEZFNCe9dJEyr0sha256 8e$5eQNRfuQ9aWx6akh2U2CgPt0IwduW24KWIUu7bO19Pksha2568e$5cXqXn0H_z6Lu5Dd7W1XYknmI6abmFQbTHZMO_HBBzssha2568e$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyksha256Z8e$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Qsha2568e$5WMw9OnSVOs7Ghguy4EHiHpguoaGSdme6Jqdey-Knlssha2568e$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8sha256 )7e$5UvkNfSBKAoGAXYBN2P36kJ0bNl4tJkZtuhO8RfGQ_4sha25658e$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vUsha2568e$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXwsha256 8e$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzAsha2568e$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0sha2568e$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0sha256~8e$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8sha2567e$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOwsha256X7e$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfEsha2568e$5NAkxbAu8oaJkmC0RWysl6DhfxDjylTkx3xThITkk7wsha256^8e$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0sha256 8e$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7Nosha2568e$5JbablOM44SqI4wPjtxs1xAcrA34GbpBULPFQ1bKb4osha2568e$5JI5Ka08wCYjDOiDBb-zsgMSsUuXzBxvoqNOzbkfGqosha2568e$5ISczmrOqflxh8_864Vkr4WFcMJBRk5o36B5bVzRmSEsha256L8e$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQsha256(8e$5GwKGu-MpHyiTon9i1MjTQYfD-ot0DSKdHgdijQcw-wsha256~8e$5G_EsM-DkkxB1rIG1MeuL4P49Ga9VHcMQ8mA5BcmdvEsha2568e$5FxeSK4cWcgGO654o31oqr0gm2x5clgoh63rp_H2k2csha2568e$5ESjg2txHLgdeLpFTka9wbkkCr-sY2ouu_LHx0a4eC4sha256g8e$5Cyl7OWf5B6MLFfNw7iF27PD4r5zyAk03XpZzBR-hHAsha2568e$5BxPKiqLUIcxecAs32QlHhPDpnWQWoLxB0IGTqrM7Mssha25678e$5B1HIdeXDX0V1X8NMxCu3nBhvCnqlTuJN2LzV2LY0pIsha256%?$59_msg_d:localhost:42455sha256 F3$56:localhost:42455sha256 E8e$55QEeVQ_9j0_9519e7mCjwhHqzp1R6XFIEG3Z5e46KAsha256.8e$55IewO2ouowmrU6hMlyKVdKXL19zRhU08cOiIgOdbJEsha2563$55:localhost:42455sha256 >8e$54pb1GG0bkxn3FFky5CoaBf2Scv7bh9H6j2nT0R3sjcsha256v3$54:localhost:42455sha256 2}8e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAsha2568e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUsha2568e$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8sha2568e$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0sha2568e$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQsha256{8e$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUsha256u J[$H l 9  m :  j 3 g 4  ` -a.Z'[(\)Q}Fn7[$4s==anon-20191002_181700-767anon-20191002_181700-7674r==anon-20191002_181700-766anon-20191002_181700-7664q==anon-20191002_181700-764anon-20191002_181700-7644p==anon-20191002_181700-763anon-20191002_181700-7634o==anon-20191002_181700-762anon-20191002_181700-7624n==anon-20191002_181700-761anon-20191002_181700-7614m==anon-20191002_181700-759anon-20191002_181700-7594l==anon-20191002_181700-760anon-20191002_181700-7604k==anon-20191002_181700-758anon-20191002_181700-7584j==anon-20191002_181700-757anon-20191002_181700-7574i==anon-20191002_181700-756anon-20191002_181700-7560h=5anon-20191002_181700-754FKOCVHIRTCIPSWJBHVGO4g==anon-20191002_181700-755anon-20191002_181700-7550f=5anon-20191002_181700-753QFPBNYJGLAPUUNVFDUHI0e=5anon-20191002_181700-752JYNGOISMLXVDWPDRVNCS4d==anon-20191002_181700-751anon-20191002_181700-7510c=5anon-20191002_181700-750BABSIRRXCUHNIFZHYFMB4b==anon-20191002_181700-749anon-20191002_181700-7490a=5anon-20191002_181700-748DNDDDSUFVLFEZFKOPXIQ4`==anon-20191002_181700-747anon-20191002_181700-7470_=5anon-20191002_181700-746QLDSIOXVCTASBPKYRNHI0^=5anon-20191002_181700-745ZTSVNXSUKXZYBFRNRFBJ0]=5anon-20191002_181700-744LIBVRACXDTFHBVRAEYIU0\=5anon-20191002_181700-743AZZDHJBDYOHRRTKDIRLP0[=5anon-20191002_181700-742WNMMSFHZOBUAIGUKXEDS0Z=5anon-20191002_181700-736VBKUVYHGDOTERLMJKIKN0Y=5anon-20191002_181700-735SIQEQJQUXKKSPCJKORZN0X=5anon-20191002_181700-734UXASHYODWFCQEAPTTQYS0W=5anon-20191002_181700-733RJATOAIYTIXPIBSXDZQD0V=5anon-20191002_181700-732EAGTVMRMBZANCBKYPGOB0U=5anon-20191002_181700-731ILOHRMOXOHIFUHDIJRAN0T=5anon-20191002_181700-730GSHKMOXHVOBRIYTDHTIE0S=5anon-20191002_181700-729JSLIPXUGQHACXICKVTRL0R=5anon-20191002_181700-728ARXGZCNJYIXAFEYVOMMS4Q==anon-20191002_181700-726anon-20191002_181700-726 0P=5anon-20191002_181700-727JKFBUCGCEHWWKASRVNAH0O=5anon-20191002_181700-725EFTSGHSHTSNXHOLBSBGX0N=5anon-20191002_181700-724FZLMWKXFLBFUARZOWWMC0M=5anon-20191002_181700-723GNPLVPMSZMJSVRMAEUVS0L=5anon-20191002_181700-722YXANMQQXNLDNMDAEAWBA0K=5anon-20191002_181700-721XOISPAUOSHVJCWENJUUS0J=5anon-20191002_181700-720XSMKELSYZZRIOKLQFSRH4I==anon-20191002_181700-718anon-20191002_181700-7180H=5anon-20191002_181700-719MILEDCIUNXUMWFEESQLV0G=5anon-20191002_181700-717HMVWDTIFKRGHQBGEGHRH0F=5anon-20191002_181700-716MJNQECZFMFOOTUTQHDEM0E=5anon-20191002_181700-715ILZFEUMGMNVXCRVUDWRW0D=5anon-20191002_181700-714ZONDVATSKCZDRCJEXKOT0C=5anon-20191002_181700-713KIPGYKTLFAKDJTVTRSGZ0B=5anon-20191002_181700-712SIQSTRPUPDLQEGIEGXYW0A=5anon-20191002_181700-711SPPIULUTUNSEUMJVVWAV4@==anon-20191002_181700-710anon-20191002_181700-7100?=5anon-20191002_181700-709AOIJORVKKVZNRNBFLQPH0>=5anon-20191002_181700-708QNSOXAXNRXGCIEWGQWKJ0==5anon-20191002_181700-707MSSKLANYGDDSESNBHGIX4<==anon-20191002_181700-706anon-20191002_181700-7060;=5anon-20191002_181700-705ONLGIFPYCWHPJBULBHUA0:=5anon-20191002_181700-704QBXFQKRQDWUAJPNVZOZD09=5anon-20191002_181700-703ZUIIYDVLWHSTSPIXWHFN08=5anon-20191002_181700-702YXIIECCUXAJQBCOFPUZN07=5anon-20191002_181700-701BLFZQHKYWUXKFZZINKLJ06=5anon-20191002_181700-700DOJGFUOIVLOGJFEZFHHT45==anon-20191002_181700-697anon-20191002_181700-69744==anon-20191002_181700-698anon-20191002_181700-69843==anon-20191002_181700-696anon-20191002_181700-69642==anon-20191002_181700-695anon-20191002_181700-69541==anon-20191002_181700-693anon-20191002_181700-69340==anon-20191002_181700-692anon-20191002_181700-6924/==anon-20191002_181700-691anon-20191002_181700-6914.==anon-20191002_181700-690anon-20191002_181700-6904-==anon-20191002_181700-689anon-20191002_181700-6894,==anon-20191002_181700-688anon-20191002_181700-6884+==anon-20191002_181700-687anon-20191002_181700-6874*==anon-20191002_181700-686anon-20191002_181700-686 <;WWs: V  r 9 W  s :  X t;Y u<Xtu<X8]!@anon-20191002_181700-8]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ8]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!@anon-20191002_181700-760:localhost:8800AAUYDDOUHU6[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMe8]!@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8]!@anon-20191002_181700-758:localhost:8800GUAXNWFTDG8]!@anon-20191002_181700-757:localhost:8800QRQFPUSZXE8]!@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ8]!@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG8]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN6[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXd8]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBW8]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA8]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNY8]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK6[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCc8]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8]!@anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8]!@anon-20191002_181700-724:localhost:8800LOLQJOGTTU8]!@anon-20191002_181700-723:localhost:8800JIVAFIIFHN8]!@anon-20191002_181700-722:localhost:8800IZTIXMADAY8]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAG8]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN6[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIb  4 h 6md]c@anon-20191002_181700-720:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAo127.0.0.1d]c@anon-20191002_181700-711:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQo127.0.0.1a[a@anon-20191002_181700-71:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQlNQUkxDLkdnaTVSOloucAowMDJmc2lnbmF0dXJlIGe12WriBywwvyersiT3ulqoOZCyfhA6GXkJhpPUI0bxCg127.0.0.1 j5ak6 a,X ,b- N  z E  s > Y j 5$ _ - 4]@anon-20191002_181700-779:localhost:8800m~4]@anon-20191002_181700-777:localhost:8800m꽺4]@anon-20191002_181700-750:localhost:8800mF4]@anon-20191002_181700-729:localhost:8800m觏4]@anon-20191002_181700-728:localhost:8800m4]@anon-20191002_181700-726:localhost:8800m4]@anon-20191002_181700-727:localhost:8800m膗4]@anon-20191002_181700-725:localhost:8800mmG4]@anon-20191002_181700-724:localhost:8800mk4]@anon-20191002_181700-723:localhost:8800mL4]@anon-20191002_181700-722:localhost:8800mJg4]@anon-20191002_181700-721:localhost:8800m+64]@anon-20191002_181700-720:localhost:8800m'T4]@anon-20191002_181700-718:localhost:8800m 4]@anon-20191002_181700-719:localhost:8800m 4]@anon-20191002_181700-717:localhost:8800m4]@anon-20191002_181700-716:localhost:8800m 4]@anon-20191002_181700-715:localhost:8800m&4]@anon-20191002_181700-714:localhost:8800m4]@anon-20191002_181700-713:localhost:8800m4]@anon-20191002_181700-712:localhost:8800m4]@anon-20191002_181700-751:localhost:8800mv4]@anon-20191002_181700-711:localhost:8800m獟4]@anon-20191002_181700-704:localhost:8800mF= 24]@anon-20191002_181700-775:localhost:8800m긄4]@anon-20191002_181700-774:localhost:8800mA4]@anon-20191002_181700-769:localhost:8800m 4]@anon-20191002_181700-768:localhost:8800m 4]@anon-20191002_181700-767:localhost:8800mz4]@anon-20191002_181700-766:localhost:8800mx4]@anon-20191002_181700-753:localhost:8800m 4]@anon-20191002_181700-752:localhost:8800m4]@anon-20191002_181700-730:localhost:8800m4]@anon-20191002_181700-705:localhost:8800mH_4]@anon-20191002_181700-735:localhost:8800mu4]@anon-20191002_181700-734:localhost:8800m-4]@anon-20191002_181700-733:localhost:8800m?4]@anon-20191002_181700-732:localhost:8800m<4]@anon-20191002_181700-731:localhost:8800mӥ+4]@anon-20191002_181700-773:localhost:8800m곲4]@anon-20191002_181700-772:localhost:8800mꮤ4]@anon-20191002_181700-771:localhost:8800mꬉ4]@anon-20191002_181700-770:localhost:8800mꨥ4]@anon-20191002_181700-764:localhost:8800mt4]@anon-20191002_181700-763:localhost:8800m\4]@anon-20191002_181700-762:localhost:8800mF(4]@anon-20191002_181700-761:localhost:8800mCY4]@anon-20191002_181700-760:localhost:8800mAr2[@anon-20191002_181700-75:localhost:8800mHm?4]@anon-20191002_181700-759:localhost:8800m@}4]@anon-20191002_181700-758:localhost:8800m+4]@anon-20191002_181700-757:localhost:8800m 4]@anon-20191002_181700-756:localhost:8800mS4]@anon-20191002_181700-755:localhost:8800m54]@anon-20191002_181700-754:localhost:8800m֜4]@anon-20191002_181700-710:localhost:8800m2[@anon-20191002_181700-70:localhost:8800m.;4]@anon-20191002_181700-709:localhost:8800mx4]@anon-20191002_181700-708:localhost:8800mv4]@anon-20191002_181700-707:localhost:8800m^4]@anon-20191002_181700-706:localhost:8800m`2[@anon-20191002_181700-74:localhost:8800m>2[@anon-20191002_181700-73:localhost:8800m=2[@anon-20191002_181700-71:localhost:8800m<4]@anon-20191002_181700-748:localhost:8800mC4]@anon-20191002_181700-747:localhost:8800m4]@anon-20191002_181700-746:localhost:8800mx4]@anon-20191002_181700-745:localhost:8800mh4]@anon-20191002_181700-744:localhost:8800mf4]@anon-20191002_181700-743:localhost:8800mM4]@anon-20191002_181700-742:localhost:8800mG4]@anon-20191002_181700-736:localhost:8800m(  meQa$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3605}{"auth_events": ["$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ", "$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU", "$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "prev_events": ["$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU"], "type": "m.room.history_visibility", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043766549, "hashes": {"sha256": "HBvnBp7FQvqhPknIXRch9wYqRZkvpokTewrQse527Sg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KmC3ReYJsBoD5WduOcIguI/s/R5t6PP/rXt2Rby9MzrAJKuWP4e7EjOy0kMdE8j9Yr7DIvqyBsL33NwwB2fhAA"}}, "unsigned": {"age_ts": 1570043766549}}tleQau$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3604}{"auth_events": ["$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ", "$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU", "$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "prev_events": ["$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ"], "type": "m.room.join_rules", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043764805, "hashes": {"sha256": "uQ95hASEMtmNuv5MeCFLNCIa6gbkCBeTRbZcXivx/p0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B5cKQREAEKlPpkAA93XPvVTxXyn9QBtJPHkfv+CSh6eqEglrvKHx8vRP1gcbi5tUlihAC6rS1w6df0uNNE+TCg"}}, "unsigned": {"age_ts": 1570043764805}}kkeQac$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3603}{"auth_events": ["$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU", "$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "prev_events": ["$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE"], "type": "m.room.power_levels", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"users": {"@anon-20191002_181700-690:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043762464, "hashes": {"sha256": "D6FHzUSpYGxuKoYixgB1SMtk0fvMhZJutA/1Vl3Of44"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2Xsl+02tBzto2r9TT+xxRnbMTh7VFpC3+OQ0mzf9jvEDC2jP1YHd0i5OhO+8WcFV8bPucMxIEceDMWZbXicCAA"}}, "unsigned": {"age_ts": 1570043762464}}vjeQay$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800{"token_id": 670, "stream_ordering": 3602}{"auth_events": ["$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU"], "prev_events": ["$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU"], "type": "m.room.member", "room_id": "!THHfVSOSWiBQTHRAnJ:localhost:8800", "sender": "@anon-20191002_181700-690:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-690", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-690:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043761021, "hashes": {"sha256": "2Ewp2L+8SrlMtaOqcguUVF9hJ3FGcgB6jbeqitH5yVA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ao9clxXfZIfW7g88CdNcNn4RFiw1zCLrAVdS/dC1V3oaOpgnF936DMlumw/axRSaPnItvYjgrNzre4Z0iJ5kDw"}}, "unsigned": {"age_ts": 1570043761021}} a} { y w u sqomkigeca~veeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800~ueeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~teeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800~seeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800~reeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~qeeQ$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~peeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800~oeeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~neeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800~meeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800~leeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~keeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800~jeeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800~ieeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~heeQ$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800~geeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800~feeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~eeeQ$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800~deeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800~ceeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~beeQ$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800~aeeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800~`eeQ$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~_eeQ$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800~^eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800~]eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800~\eeQ$wnF3DT6ErGz4JlfLVHa3GNQ-1tqGIW17bHXlQs0aQEU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800~[eeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800~ZeeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$y-ALPg8t2zQh_6nxyyUoPhS0m6491DHcJMkPbn7oQPU!THHfVSOSWiBQTHRAnJ:localhost:8800~YeeQ$XqcKtzmk59lJIWR76p_CBMJAEE2ctMnPG98L3F2OogU$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ!THHfVSOSWiBQTHRAnJ:localhost:8800~XeeQ$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQ$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrE!THHfVSOSWiBQTHRAnJ:localhost:8800 Y5- \ *b2j8-p> v D  M_ | J   P  ' S Vo= i7o= xFd1e$btG5tSlaBVLkq6HAVjU5zev04b3fzTnjbneKSBWr3NQ 1e$cDH3NPl8-V1q1agMbRSg_lCLSZfigg2qJn0zlw_R7S8 1e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA 1e$br05AVGtV+GdzH9Q7NWcGGbR+qiBQuE5+46CVYtda90 C1e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak m1e$cRULI5uF7yfXkSFgR0uYMb1VOq1EnP0FAYr70Fh9K8U 421e$blnlev0dv+VrU8je9OucGuADp1UhrbKbhzPcPuPEGjE 8!21e$cEuvnbMzFpD80OdofrD8TF_j4zPfTORwx2oMJZbhL_I *21e$cSf9WOudV6WJpoqgtLbhpX-3DA6UhBai72tmR_1Udck 1e$cLLwD-lpl8x4HnNN_W1eI5dg0lLoYUADjCewdomVmqU 1e$cCR0Rl4rzMzq53DIP0pHQqCdgntXleZ6bjCUZHDFlbY $1e$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 1e$cMn3THJplLKMYsuj1kkD3z52YGzuca12QPD2R1Ski1o h1e$blM-N0N8ep2ybmuFAgcvVUWDvf_CSYXE3OOzMIplzG8//e $bkSRUrERP27jeDfjOMLyTGozeyqSw5oomahf8Qo35_A1e$bk3FqkssBNRM2oqWt6RaC22aA5eQKHdyuCcMRf4ytdM 1e$bhldfP9ni7lctJ0TK6B6JZje0hNjoGsA6De7-OVArHU 1e$bdqkWSgRuMlPUHHMw5qP-R8dkfTKMHCBPyUQoziSzeA1e$bbzR_e3bSNL7tKLnq79qFji_DUKVcOmWl52mSNoZQ7U1e$b_KksPPB6SYdi6cHPFX8a-gOLy4X9hnMmsfkkATm4B4g1e$b_3D6dYjjBxMz3X9xhOKVXMgingHwGgtUaVA70jbHuk"1e$bZw0dyevvREYosa6ZSRm6FNLJOhL4eBtRIsfeSXQKrs}1e$bZNOOcu1x-sbSSM1voEWP-nu1rXa-aMgtV4FyaF6XN0 1e$bVu70OfsBrZtk822YIlYCKXQmmzu35o1oGgCRIDZrpU 21e$cU5JE1lBVaByQdZKOhZ6x49AWVSUu8fdM3w1Eb8VSx8$1e$cSJKEFkOvMttAAXbR7Mz1xY05ejKuZtMNv2p2U1KaGs"1e$cRe9YjTotu-RT4HaltLAqiu9ZMAMHK5ezLr45GpX2LA1e$cQtXfGhVQqmSwvHzVldno5LqGHmTHV8bEmaxsBiJ-sc1e$cLpTZH0b1A2NjOaHFRBdxULK81Fj04ONsJyYudOYijk1e$cLPqVeNKMpLw4-sCLqmYizIu0NenQjhq-8z5bQp2-ug1e$cJC7xzm9FCw5Rfmcvb-_Es78QdXUjmA3FK1NenbiNM41e$cHWCRCSl_soUdUP84ADLr2bFgHqr2qWLUFf0Z1CyZOMC1e$cHAr96PZGIrT9taZHCzz5OA-5_tdFseykINAgVNQL0c81e$cGrvx6AONHeA40fP2i-GdHmMHNUSCwchhB27jy6MKx81e$cEjYrJmO3JzCXmSupJ_kPV2D0HuwMxpAGD--looPdaA1e$cE_8Aolka3ATiKK9YFHFWpOlhP-YPw5xHeq1-ZX6pNMO1e$cBpowHWQq7VaxAPrdnROshjZzTXYIETjzO-5kqKl9ow1e$cBjZWGIW7BIXGR-TPLUIBRxNAZJKG100PHiDvwmt9-cC1e$cBNHDzgN0V6oF1jIYVFHMrFhziOzB-mRlFb1JePbn3c1e$c89n9HHC6Uvk_A7urEZcwIYEb-YR6lCHt9pvNtSkM3E 1e$c3j3t8Gi81abDDnrSHdnSJJ5sa2MHeqHrvrJmYwlcX8y1e$c3FwpI3YJswF9pWXc6466QC99CPxbHKiKjrCVv5Qp1Q 1e$c25uQcFuh9SqDPRkipptVcX0J_30bcZTSqTJNn-PpoM1e$c1hSqAkdVWQmeBiPpkv6HUU1EWxGoSA3p2X1e3nMxWIf1e$c1bJjbOw23l9eSXzPggDZ1mDDDXl9zbQmt6KMeWleSY1e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$c1GSsGyGKgEtIbupNwpJHO7Rv5OVFmCKrTXRs9w39381e$bzIdPtRJqX4fwuw0JHTuJDN9cO3pp27Dv5AJFWeGI8I1e$bwOXmfzWpl0acT4AJu9wb_fszKEmW1qZKJpOerPIBI4U1e$bt5lhaQYhOaE92B_2jmlxU_uOVObhUk7gK-seyeNJaY1e$bq7_ZKhMUfn34uN24GLYp2n09qoiXq_5h7ymGKivTnI21e$bpoMU0MfN6zr9tNnZhHv0GpSzVXk7PPi7DlGPnw0ZYI<1e$boSfmHfLn9p-EMbeO7xjHVDG01HKanijnW3yZEBL5Ho j @ SjkqeQac$d-_MYhMV5gWbVQCD7dIGYl7ZRpMsE5zZ9TFA89Mys1g!DntdfAPfCfgdOoRMdl:localhost:8800{"token_id": 671, "stream_ordering": 3609}{"auth_events": ["$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA", "$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU"], "prev_events": ["$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU"], "type": "m.room.power_levels", "room_id": "!DntdfAPfCfgdOoRMdl:localhost:8800", "sender": "@anon-20191002_181700-691:localhost:8800", "content": {"users": {"@anon-20191002_181700-691:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043776350, "hashes": {"sha256": "NoP36i/YydfqCGm+blLUINymt7upY7KxHpavITN3YuU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0Z+gLY8ThWjN3LNVCM01ekPVhBFdRxZXgG7dWnrk2LGU1yV4IZLLQcGTz+Hy/cF94RgadUCWgQAAzSb/2ORLDw"}}, "unsigned": {"age_ts": 1570043776350}}vpeQay$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAU!DntdfAPfCfgdOoRMdl:localhost:8800{"token_id": 671, "stream_ordering": 3608}{"auth_events": ["$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA"], "prev_events": ["$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA"], "type": "m.room.member", "room_id": "!DntdfAPfCfgdOoRMdl:localhost:8800", "sender": "@anon-20191002_181700-691:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-691", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-691:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043775048, "hashes": {"sha256": "nZD7hlBULFbnQ5BKYxlGG1FaV1ycpV8I8JrEvrWNjoc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wCzJ0oPbGXYyw57GP4QbP06hPrkl9Y3X0y+VD69vgsN271sHZQQFPZId5jscYWjGENtubAr6jPE6PpPMg22cAQ"}}, "unsigned": {"age_ts": 1570043775048}}ioeQa_$Vf7nNip5KN6ALh2gl6bJaxb6QIQ4ub_VF1YmDZlQyAA!DntdfAPfCfgdOoRMdl:localhost:8800{"token_id": 671, "stream_ordering": 3607}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!DntdfAPfCfgdOoRMdl:localhost:8800", "sender": "@anon-20191002_181700-691:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-691:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043773008, "hashes": {"sha256": "A5sDJz3meOlsVPqQlBsuVqg5AwEXVwQ/wFuPKtPpj78"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9kAdTdLFE9xiqsJRBhrXLQ2gmjeBaK4D/Utl5mgYd90QWFpC6V+C2d3lwm573AGMIt2WKlESstoGraZegP6nDQ"}}, "unsigned": {"age_ts": 1570043773008}}p#(8hVeL$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfosha256Rj̋_KPLUEkR FR%V eL$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQsha256EΨ&HL|[ǶGWVeL$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4sha256k'%VeL$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwsha256e@-:P*Qb'IչVeL$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Ysha256EG~>pӗT܌fVeL$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAsha256gPΝ_$tuW38-ϕVeL$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyosha256t%1\/ }6$8U0ݛe*VeL$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcsha256$T6_VeL$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjssha2568[Ref@twFnٞUl;VeL$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIosha256gcrld㸳S4^UPMVeL$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Asha256qJ(& Ρ}D~CftE}p@V~eL$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4sha256*Nv;_ &(6V}eL$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIsha256WseI"1uX1m>V|eL$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZIsha256O;*mʼnf*`}iԯ$eV{eL$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8sha256dTsYMb'>Qk/VzeL$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIsha256:"f▆n~;UCBVyeL$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUsha256ay8|~U]1i)e|L "ݴVxeL$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Asha256i埂4ZVi]@anon-20191002_181700-701:localhost:8800@anon-20191002_181700-701:localhost:8800 BLFZQHKYWUXKFZZINKLJj=]@anon-20191002_181700-700:localhost:8800@anon-20191002_181700-700:localhost:8800 DOJGFUOIVLOGJFEZFHHTn<]@anon-20191002_181700-698:localhost:8800@anon-20191002_181700-698:localhost:8800 anon-20191002_181700-698n:]@anon-20191002_181700-690:localhost:8800@anon-20191002_181700-690:localhost:8800 anon-20191002_181700-690<9EE@__ANON__-58:localhost:42455@__ANON__-58:localhost:42455n8]@anon-20191002_181700-685:localhost:8800@anon-20191002_181700-685:localhost:8800 anon-20191002_181700-685<7EE@__ANON__-57:localhost:42455@__ANON__-57:localhost:42455n6]@anon-20191002_181700-684:localhost:8800@anon-20191002_181700-684:localhost:8800 anon-20191002_181700-684<5EE@__ANON__-56:localhost:42455@__ANON__-56:localhost:42455n4]@anon-20191002_181700-683:localhost:8800@anon-20191002_181700-683:localhost:8800 anon-20191002_181700-683<3EE@__ANON__-55:localhost:42455@__ANON__-55:localhost:42455n2]@anon-20191002_181700-682:localhost:8800@anon-20191002_181700-682:localhost:8800 anon-20191002_181700-682<1EE@__ANON__-54:localhost:42455@__ANON__-54:localhost:42455PeeQ$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800=eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800<eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800;eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800:eeQ$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:88009eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:88008eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:88007eeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:88006eeQ$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:88005eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:88004eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:88003eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:88002eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:88001eeQ$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:88000eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800/eeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800.eeQ$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800-eeQ$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800,eeQ$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800+eeQ$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800*eeQ$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800)eeQ$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800(eeQ$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800'eeQ$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800&eeQ$9viLRwVdVDk9R94N5Hfm_G1d05YOGhl71cSHdoEMk8s$IdKStXWYuPzseeo3U2i12cJvLmlYvDz8YAMJ2kb4bMs!DntdfAPfCfgdOoRMdl:localhost:8800 ii 4h5 g  1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-Aoł1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8QoÂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgoǂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAoʂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAoɂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFN5WHdDLH5FMnhebkxfZloKMDAyZnNpZ25hdHVyZSBjyJPT-W3d_8jtq25bg0CXxeElEbBCLXZPtSSmUUe7OQoȂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQô1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQo˂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQo͂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwoƂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6Pzrwo g * T~=gg ]!c@anon-20191002_181700-704:localhost:8800EQKVVEUTZFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAog]!c@anon-20191002_181700-703:localhost:8800ZKXMBTYIRPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQog]!c@anon-20191002_181700-702:localhost:8800MCYWHCABCHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwog]!c@anon-20191002_181700-701:localhost:8800KSBXFIPYSSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAog]!c@anon-20191002_181700-700:localhost:8800GGDKZCAJLWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY5V2M2YnM6Nm5NJmg4SzoKMDAyZnNpZ25hdHVyZSD2H-fLXFMXpaFQcFyMxL9JFAeONbItYVwmt1eGsB3krwog]!c@anon-20191002_181700-697:localhost:8800EDARWEUZCBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo9SiYzOmF-Vjswa1I7elQKMDAyZnNpZ25hdHVyZSDkBe_9qyNrIiBUuJNiAjQWbHTgjeGWn6B1g-XDytVnDAog]!c@anon-20191002_181700-698:localhost:8800NUMXWJYFTCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDR2cXg6THcucnlNU0pTRCoKMDAyZnNpZ25hdHVyZSCRObAd4hl2kIR1cnziKag-gT2xiL5cBuSpDxQXp2Y56wog]!c@anon-20191002_181700-696:localhost:8800HBZTQHKFOSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5xdSxZZnhsU3JxVnQteUwKMDAyZnNpZ25hdHVyZSCtq1UJU_Wyiyp9peYu9r8YQgQoH6XNu9vzifshqGZ0AAog]!c@anon-20191002_181700-695:localhost:8800VDCAEKRWDOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHNjNHd1UUpjOW9UNUF4UXoKMDAyZnNpZ25hdHVyZSCPIUVN9lWQ8BoblKnX6rhKPpx4Xu7DL-voKOjr7T_ijgog]!c@anon-20191002_181700-693:localhost:8800LEFIZYPDBZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExOWnhedGV-Lno9XnE4VX4KMDAyZnNpZ25hdHVyZSA5Kn1fYh9S-SPR2I_R6omhBs-F-gPAuYLrGasgatD_KQog]!c@anon-20191002_181700-692:localhost:8800EWIJGPCFOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTY5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDsyRFAxYTB3d0JfaCo5NEoKMDAyZnNpZ25hdHVyZSCiZWeiN5k8q08QkTiOIMXaDEtS78p3BtHDiD4U6mLWdAo ! 0 @ P ` p(8HXhxuT ]@anon-20191002_181700-730:localhost:8800$2b$04$LPm/JM/V9kP5.62EtWROv.Kt1QI8nR3KbZHa5540jLufWRFrZyzNS]uS ]@anon-20191002_181700-729:localhost:8800$2b$04$3cxmvNtlof7pj/KswaAyU.zmPtJKrUQTQatfwb9cZR/uDWiYzd9HW]uR ]@anon-20191002_181700-728:localhost:8800$2b$04$DqTIbmkbsFP3rO7DXZ3.3OI.zRNr6/VeE1dQMqFkdeUUrtLnKVDzy]uQ ]@anon-20191002_181700-726:localhost:8800$2b$04$jtKGnGfQS0A.MArKkpXV5OBw2hP1py8ikNE5SPwSEYiL8f7ccUysi]uP ]@anon-20191002_181700-727:localhost:8800$2b$04$amWJDKQgFDJQvHJb/gbosOJQdgZpdQ7QnhV3od/iU5ifGBj8oSq.K]uO ]@anon-20191002_181700-725:localhost:8800$2b$04$5fmVHVdZF6eSWEdVX4ci.O4At12.WOeFI2GW6PBF7139/VTL5bgrS]uN ]@anon-20191002_181700-724:localhost:8800$2b$04$9S44kDlt74U4kCzowW7bZetKPW7KYleEzws8Yt7kphDlAEt5pHWw2]uM ]@anon-20191002_181700-723:localhost:8800$2b$04$esjuya8Wb./o8mdYWvw3c.smss0a7yICI8AkJLfs0OMBLF8mLFtMi]uL ]@anon-20191002_181700-722:localhost:8800$2b$04$UT7C3QqzUFqPycm72N7SJOc3oZYJig1p0Z6zrKwRm..mw5knPtwZC]uK ]@anon-20191002_181700-721:localhost:8800$2b$04$2jthXBxSF.S/E1CwpSvKierZurL1ESCt2Z8ve8JoasZQ3Pq2KU0WS]uJ ]@anon-20191002_181700-720:localhost:8800$2b$04$3TIzUsPBS5vuOKDCpjpvpOEg9OZ.wSsDqKZnG/TMqlGF.Cv.uVuxi]uI ]@anon-20191002_181700-718:localhost:8800$2b$04$lYreEbsVzzCFZ06F1rlBIOgBMeEcEPmMbNL5G9E1ifowpCk1jbeBu]uH ]@anon-20191002_181700-719:localhost:8800$2b$04$Y.0dvJSyR0BLJWfnMPdY2.Yd/1LLEvEHMAK0hT1Ehx5F1STozmnP2]uG ]@anon-20191002_181700-717:localhost:8800$2b$04$XHp8mOKGvQkQsyaGu3o9AOPBvPdCntaBwpFJgLh503WQ1G.9WEYX.]uF ]@anon-20191002_181700-716:localhost:8800$2b$04$/1IwY85Gpjn6lTCit49yAeBMvd19q4Kh8/OMu/5I36ZV7ThoE4JKK]uE ]@anon-20191002_181700-715:localhost:8800$2b$04$xOcBNKvvTmngcSKkjU4l1Oteuzg6ujL5T634ECn3OsjBd430lDpfm]uD ]@anon-20191002_181700-714:localhost:8800$2b$04$xYrmWmB5Ts7f.29OXnM51.bbzkTmaJIFxISequdJGKjXC1/ss0mR.]uC ]@anon-20191002_181700-713:localhost:8800$2b$04$c.vDZG2VpbLKdxKq5R4ME./MaqKIbJ7ErlCnD1UnHAIo77bWhKrLO]uB ]@anon-20191002_181700-712:localhost:8800$2b$04$aCCj9hFp.CSaW8eYFlwP6eA0YiQkSDEGIxrfOgZtQ4uQGAaWDCVA2]uA ]@anon-20191002_181700-711:localhost:8800$2b$04$YWJVBxKCwwuys16j/27cTerRWLmJXFrUEVjIg0SzGPl/lZ7vgE5ge]u@ ]@anon-20191002_181700-710:localhost:8800$2b$04$WIoYAmkLli12PAncgH3Oe.8HqYraqiu8cKRfdylAmZZiDN3H0rAGC]u? ]@anon-20191002_181700-709:localhost:8800$2b$04$.mdkT.YhUzKcFiA0Vj5yqu3szQz32CsyCToc39fQKhFIoTaN3vS.W]u> ]@anon-20191002_181700-708:localhost:8800$2b$04$Aoz4I4UQVDP73ig8F95m0uChWlREPmR6gl3EdIuOL6WRnIb8MX9e.]u= ]@anon-20191002_181700-707:localhost:8800$2b$04$fM0P7HaWiSOm/ffo5r1fWexL7.ViFNoModtH7D6gtp/tDnz6phgkS]u< ]@anon-20191002_181700-706:localhost:8800$2b$04$X8MBe2hjjvd1tBxMYJvth.rmjozaUalOgP9pfMVc8JhcgrHaK7vc2]u; ]@anon-20191002_181700-705:localhost:8800$2b$04$ao8o9KYvjVHIeI4FMbly5u8K6KSUzOUDm8sCnhhZ8aBGdmCtD64mW]u: ]@anon-20191002_181700-704:localhost:8800$2b$04$d4F5Cs9kCHJ6VQuIkuQ1P.L2B7Jw7u3bMmG9DsiPX2IeHaF0PzviC]u9 ]@anon-20191002_181700-703:localhost:8800$2b$04$gZEFXmQntHvI77CW4rgN0OwTbh1Qx1y0Kglh8IkeS/U3PpGt4Ithy]u8 ]@anon-20191002_181700-702:localhost:8800$2b$04$HqZDP9ZJyhppzA2RFXg6deUTsno2mJ/XcHz5TxdR6N3HIMw4QbmY6]u7 ]@anon-20191002_181700-701:localhost:8800$2b$04$WiyYDjTyp3sEJ8Kuqis9TOYeubXtufEpp3W8/oBkcBWtkDiUoJW62]u6 ]@anon-20191002_181700-700:localhost:8800$2b$04$XIqDPfh.CBeLzYRBLG/xHeV3yorQtId5WLGh25I8wMmhMwr1U8rmm]u5 ] @anon-20191002_181700-697:localhost:8800$2b$04$NHWNF2nGB/WpgUQVlkGGzO6DJ9j7ol973KJ7vSrh3fOtvx6ta945m]u4 ]@anon-20191002_181700-698:localhost:8800$2b$04$wcA1C673PTiv4NZXTdVEwOCXoAHl0otzemqu8KsRxxTMPx2zkoELO] )f~tj`VLB8.$zpf\RH>4*   v l b X N D : 0 &    | r h ^ T J @ 6 , "    x n d Z P F < 2 (   ~ t j ` V L B 8 . $    z p f \ R H > 4 *  vlbXND:0&|rh^TJ@6,"xndZPF<2( ~tj`VLB8.$zpf ]4 ]3 ]2 ]1 ]0 ]/ ]. ]- ], ]+ ]* ]) ]( ]' ]& ]% ]$ ]# ]" ]! ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]~ ]} ]} ]{ ]{ ]v ]p ]p ]o ]i ]c ]b ]a ]a ]\ ]S ]Q ]D ]D ]B ]A ]9 ]9 ]8 ]8 ], ], ]* ]* ]# ]! ] ] ] ]  ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]{ ]o ]n ]m ]l ]k ]` ]W ]M ]F ]= ]7 ], ], ]" ]  ] ] ] ] ]  ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]z ]x ]v ]u ]s ]r ]l ]` ]` ]S ]L~ ]C} ]:| ]2{ ])z ] y ]x ]w ] v ]u ]t ]s ]r ]q ]p ]o ]n ]m ]l ]k ]j ]i ]h ]g ]f ]e ]d ]c ]b ]a ]` ]_ ]^ ]] ]\ ][ ]Z ]Y ]X ]wW ]wV ]vU ]vT ]uS ]tR ]sQ ]rP ]pO ]pN ]oM ]nL ]nK ]mJ ]lI ]fH ]_G ]ZF ]ZE ]TD ]OC ]JB ]DA ]?@ ]>? ]2> ]#= ]< ]; ] : ]9 ]8 ]7 ]6 ]5 ]4 ]3 ]2 ]1 ]0 ]/ ]. ]- ], ]+ ]* ]) ]( ]' ]& ]% ]$ ]|# ]t" ]l! ]l ]e ]e ]^ ]^ ]X ]W ]W ]V ]U ]T ]S ]S ]H ]H ]@ ]8 ]. ]% ] ]   *tyeQau$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3617}{"auth_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg", "$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg"], "type": "m.room.join_rules", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043788712, "hashes": {"sha256": "F/TMyHXeZURuydiaYOdQ0mMUpUjYVppKhnr4djcaBiI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5qBDf4B3kiGQNCnmmYiyMKOUztqHu59fjt8HiAvD77gKuFveJJEo1JiF0E3D/Bzwrt+NAjJQ5nbEOZWRumASBw"}}, "unsigned": {"age_ts": 1570043788712}}kxeQac$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3616}{"auth_events": ["$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "type": "m.room.power_levels", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"users": {"@anon-20191002_181700-698:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043787822, "hashes": {"sha256": "/sdPktflE+RLUPkby+5WXAl2GpgdR5LxvEgkYEC7v0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9shjJYvDl9vubm6jI4QfEkZlu+JjYyWN5rOBuF5A2gLC2yWti/goGV0KP6Kzv6YCQSedaf0k7X8f6b3L5H4gAQ"}}, "unsigned": {"age_ts": 1570043787822}}vweQay$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3615}{"auth_events": ["$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8"], "prev_events": ["$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8"], "type": "m.room.member", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-698", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-698:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043787190, "hashes": {"sha256": "sNcqdlNIrAOLCnWyMHzYxNMOHvFiTRXLGRlzk4Jdw9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aRXmpcNvvwraKqskwMRZcg1pBfCvt4bEO2B3LaAK2LgtJCS31dTWFWBWd6b8IchtQo1xF7MQCUD02FJih8oTAA"}}, "unsigned": {"age_ts": 1570043787190}}iveQa_$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3614}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-698:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043786438, "hashes": {"sha256": "juENphPIwr79zLlaKuDWSSmnwf7amAS86dMUrPAYads"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "54AYag9rIIOQnfswVSPU45KguIzn4GpyiwRcZyWP1j6pl0AeAV0P3GVKxDacosBg3mu2JYpcRbH/l/LwImJOCg"}}, "unsigned": {"age_ts": 1570043786438}} I\ Z  o  m'15?I 6e'Q ]$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4m.room.member!SpXEytywhTbAftyVBr:localhost:8800me(mf @anon-20191002_181700-706:localhost:88005 e'Q  ]$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwm.room.create!SpXEytywhTbAftyVBr:localhost:8800mafma@anon-20191002_181700-706:localhost:8800,4e?Q ]$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Ym.room.history_visibility!itfjLXhEaORJLkbfVS:localhost:8800mXm[a@anon-20191002_181700-704:localhost:8800$3e/Q ]$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gAm.room.join_rules!itfjLXhEaORJLkbfVS:localhost:8800mT/mU'@anon-20191002_181700-704:localhost:8800&2e3Q ]$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyom.room.power_levels!itfjLXhEaORJLkbfVS:localhost:8800mOmQO@anon-20191002_181700-704:localhost:8800 1e'Q ]$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcm.room.member!itfjLXhEaORJLkbfVS:localhost:8800mLmMG@anon-20191002_181700-704:localhost:88000 e'Q  ]$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsm.room.create!itfjLXhEaORJLkbfVS:localhost:8800mImJ5@anon-20191002_181700-704:localhost:8800&/e3Q ]$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjsm.room.guest_access!GsjDgpaxdwYfnefiWO:localhost:8800mA mA@anon-20191002_181700-702:localhost:8800,.e?Q ]$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIom.room.history_visibility!GsjDgpaxdwYfnefiWO:localhost:8800m;m<@anon-20191002_181700-702:localhost:8800$-e/Q ]$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0Am.room.join_rules!GsjDgpaxdwYfnefiWO:localhost:8800m8m9@anon-20191002_181700-702:localhost:8800&,e3Q ]$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4m.room.power_levels!GsjDgpaxdwYfnefiWO:localhost:8800m5vm6@anon-20191002_181700-702:localhost:8800 +e'Q ]$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIm.room.member!GsjDgpaxdwYfnefiWO:localhost:8800m3m3~@anon-20191002_181700-702:localhost:8800* e'Q  ]$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZIm.room.create!GsjDgpaxdwYfnefiWO:localhost:8800m/m0Z@anon-20191002_181700-702:localhost:8800 )e'Q ]$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8m.room.member!jomrpmwwQQtghscizn:localhost:8800m&.m&@anon-20191002_181700-701:localhost:8800,(e?Q ]$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vIm.room.history_visibility!jomrpmwwQQtghscizn:localhost:8800m!6m#S@anon-20191002_181700-700:localhost:8800$'e/Q ]$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUm.room.join_rules!jomrpmwwQQtghscizn:localhost:8800mm @anon-20191002_181700-700:localhost:8800&&e3Q ]$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3Am.room.power_levels!jomrpmwwQQtghscizn:localhost:8800m5m@anon-20191002_181700-700:localhost:8800 %e'Q ]$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyom.room.member!jomrpmwwQQtghscizn:localhost:8800mm@anon-20191002_181700-700:localhost:8800$ e'Q  ]$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYm.room.create!jomrpmwwQQtghscizn:localhost:8800mm @anon-20191002_181700-700:localhost:8800!#e)Q ] $G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPgm.room.message!ABHbfUdkHCJksMsaUt:localhost:8800mm@anon-20191002_181700-698:localhost:8800,"e?Q ]$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5km.room.history_visibility!ABHbfUdkHCJksMsaUt:localhost:8800mVm[@anon-20191002_181700-698:localhost:8800$!e/Q ]$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZMm.room.join_rules!ABHbfUdkHCJksMsaUt:localhost:8800mm@anon-20191002_181700-698:localhost:8800& e3Q ]$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbgm.room.power_levels!ABHbfUdkHCJksMsaUt:localhost:8800m.mZ@anon-20191002_181700-698:localhost:8800 e'Q ]$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucm.room.member!ABHbfUdkHCJksMsaUt:localhost:8800mm9@anon-20191002_181700-698:localhost:8800 -RM H C > 9 4/*|%w rmhc TtQe !anErKtXIsVKEEsrzWM:localhost:8800$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUTsQe !yWhIsLsgNVGcnELrDS:localhost:8800$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQTrQe !TcCLuIBUrtFqghDgay:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jETqQe !TcCLuIBUrtFqghDgay:localhost:8800$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUTpQe !TcCLuIBUrtFqghDgay:localhost:8800$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQToQe !TcCLuIBUrtFqghDgay:localhost:8800$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUTnQe !TcCLuIBUrtFqghDgay:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdETmQe !TcCLuIBUrtFqghDgay:localhost:8800$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUTlQe !yWhIsLsgNVGcnELrDS:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4TkQe !yWhIsLsgNVGcnELrDS:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYTjQe !yWhIsLsgNVGcnELrDS:localhost:8800$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgTiQe !yWhIsLsgNVGcnELrDS:localhost:8800$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0ThQe !yWhIsLsgNVGcnELrDS:localhost:8800$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMTgQe !yWhIsLsgNVGcnELrDS:localhost:8800$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OATfQe !yWhIsLsgNVGcnELrDS:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0TeQe !yWhIsLsgNVGcnELrDS:localhost:8800$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMTdQe !wCsDjKBtuUbrmZgjsB:localhost:8800$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2roTcQe !wCsDjKBtuUbrmZgjsB:localhost:8800$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44GgTbQe !wCsDjKBtuUbrmZgjsB:localhost:8800$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfoTaQe !wCsDjKBtuUbrmZgjsB:localhost:8800$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQT`Qe !wCsDjKBtuUbrmZgjsB:localhost:8800$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djssT_Qe !SpXEytywhTbAftyVBr:localhost:8800$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAT^Qe !SpXEytywhTbAftyVBr:localhost:8800$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIT]Qe !SpXEytywhTbAftyVBr:localhost:8800$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2VcT\Qe !SpXEytywhTbAftyVBr:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4T[Qe !SpXEytywhTbAftyVBr:localhost:8800$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudwTZQe !itfjLXhEaORJLkbfVS:localhost:8800$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82YTYQe !itfjLXhEaORJLkbfVS:localhost:8800$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gATXQe !itfjLXhEaORJLkbfVS:localhost:8800$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3ZtljyoTWQe !itfjLXhEaORJLkbfVS:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcTVQe !itfjLXhEaORJLkbfVS:localhost:8800$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOsTUQe !GsjDgpaxdwYfnefiWO:localhost:8800$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_PisjsTTQe !GsjDgpaxdwYfnefiWO:localhost:8800$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIoTSQe !GsjDgpaxdwYfnefiWO:localhost:8800$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0ATRQe !GsjDgpaxdwYfnefiWO:localhost:8800$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4TQQe !GsjDgpaxdwYfnefiWO:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBITPQe !GsjDgpaxdwYfnefiWO:localhost:8800$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZITOQe !jomrpmwwQQtghscizn:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8TNQe !jomrpmwwQQtghscizn:localhost:8800$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vITMQe !jomrpmwwQQtghscizn:localhost:8800$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwUTLQe !jomrpmwwQQtghscizn:localhost:8800$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3ATKQe !jomrpmwwQQtghscizn:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyoTJQe !jomrpmwwQQtghscizn:localhost:8800$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sYTIQe !ABHbfUdkHCJksMsaUt:localhost:8800$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5kTHQe !ABHbfUdkHCJksMsaUt:localhost:8800$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM 0`8rJ" \ 4 l D  | T ,  d <  v N &'Q$1570042675176WKRiz:localhost:8800 'Q$1570042674175gurnU:localhost:8800 'Q$1570042673174OxGuP:localhost:8800 'Q$1570042672173XsxsH:localhost:8800 'Q$1570042672172vPvbe:localhost:8800 'Q$1570042671171AQZaz:localhost:8800 'Q$1570042670170TtDpX:localhost:8800 %M$15700426692GLpqH:localhost:8829 'Q$1570042668168uCbYK:localhost:8800 'Q$1570042667167mhSmJ:localhost:8800 'Q$1570042666166IBpPy:localhost:8800 'Q$1570042666165HDkhp:localhost:8800 'Q$1570042665164nYKmj:localhost:8800 ~'Q$1570042664163IAHXd:localhost:8800 }'Q$1570042663162sQrEh:localhost:8800 |'Q$1570042662161lGrSW:localhost:8800 {'Q$1570042662160SrmtM:localhost:8800 z'Q$1570042661159xQwJK:localhost:8800 y'Q$1570042661158igwHF:localhost:8800 x'Q$1570042660157svDcU:localhost:8800 w'Q$1570042660156wxhvl:localhost:8800 v'Q$1570042659155mEUeP:localhost:8800 u'Q$1570042659154Fztdf:localhost:8800 t'Q$1570042658153tmCYJ:localhost:8800 s'Q$1570042658152btGpA:localhost:8800 r'Q$1570042657151cITOZ:localhost:8800 q'Q$1570042656150UsLRz:localhost:8800 p'Q$1570042656149JNVWR:localhost:8800 o'Q$1570042655148eXOyA:localhost:8800 n'Q$1570042654147iSsjl:localhost:8800 m'Q$1570042653146dGCce:localhost:8800 l'Q$1570042651145wBynt:localhost:8800 k%M$15700426501OLytM:localhost:8829 j'Q$1570042649143JxPAB:localhost:8800 i'Q$1570042648142spuws:localhost:8800 h'Q$1570042648141xSHQB:localhost:8800 g'Q$1570042647140rNeEf:localhost:8800 f'Q$1570042646139VXLYO:localhost:8800 e'Q$1570042646138YEunv:localhost:8800 d'Q$1570042645137fBnPZ:localhost:8800 c'Q$1570042644136OugnY:localhost:8800 b'Q$1570042642135oMfQy:localhost:8800 a%M$15700426410cEjWu:localhost:8829 `'Q$1570042640133wGmrF:localhost:8800 _'Q$1570042639132zhjjB:localhost:8800 ^'Q$1570042638131kazZm:localhost:8800 ]'Q$1570042637130zlkqP:localhost:8800 \'Q$1570042636129shBTe:localhost:8800 [ S wSr}eQaq$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3621}{"auth_events": ["$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY"], "prev_events": ["$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY"], "type": "m.room.member", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"membership": "join", "displayname": "DOJGFUOIVLOGJFEZFHHT", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-700:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043794902, "hashes": {"sha256": "ifDH0DFYoSrxlrH48n4hbZ85mhC3V4ZyTH+SGPH5CYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NzwSEY0nPUnOya2POo/cYPGFVgLtIAPtud8ZVNFec9uVSgghh1SWkhnitkY8IWNT7q8YEKC9wxZYPwerqJz1DA"}}, "unsigned": {"age_ts": 1570043794902}}i|eQa_$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3620}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-700:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043793069, "hashes": {"sha256": "cZMigTA/Xjo27U1PIxEzYgLlbiYyXioo/godtA34oE0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Q4XNaVBmVgDAHvLXcDezHjcHZZPySLvemtoxpKXMmPGITObSt+t6MCZPOqfVrcJlCCDwoApLDUqdsnMf52Y3Ag"}}, "unsigned": {"age_ts": 1570043793069}}={eQc$G0q2YIiz0smwe7ypoRyR6KzYTG67gj-cdAm1q2QXyPg!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "txn_id": "622", "stream_ordering": 3619}{"auth_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg", "$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k"], "type": "m.room.message", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"url": "mxc://localhost:8800/lysZMZCYXnmEbKQByqnCYPHf", "msgtype": "m.image", "body": "test.png"}, "depth": 6, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570043791104, "hashes": {"sha256": "hF+Pl6QTUdv0YaWFSq1t8/RPg5q58pCRQSTlUML2UTk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5OV2/U/EoVo4wBeNI9m2xtYVOe+YICRBJIyL/SPrk6FGlsPZTD6KytpY/UWAmMKE6EmZjWGWJQfxrx627571Bw"}}, "unsigned": {"age_ts": 1570043791104}}zeQa$xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800{"token_id": 676, "stream_ordering": 3618}{"auth_events": ["$9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg", "$5VSt7LeE3itqxPTfd6h4FL55DidQRIDumB6GdDTsUW8", "$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc"], "prev_events": ["$-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM"], "type": "m.room.history_visibility", "room_id": "!ABHbfUdkHCJksMsaUt:localhost:8800", "sender": "@anon-20191002_181700-698:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043789398, "hashes": {"sha256": "D4P1oBvc7mXGDvF0J/p6IAmNzEwUCoRzMGTb7psFvUg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9QQZXaoHAQUMq3ebbM2R9UXvYK5Kvm4zpLfpBBi+Lw2eUViL5b/eKvKJ2EA//J/295aSXWRtW/RGwuQDoXthCg"}}, "unsigned": {"age_ts": 1570043789398}} -qT)}R' { P % y N # w L ! u J  s H q*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!EABRjdYuYumMhLSwIa:localhost:8800*Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DuqHkpTfWCUblSrxQj:localhost:8800 *Q!DqxFmsXPclgGqpSwdy:localhost:8800  Z*Q!DqxFmsXPclgGqpSwdy:localhost:8800  Y*Q!DqxFmsXPclgGqpSwdy:localhost:8800  X*Q!DqxFmsXPclgGqpSwdy:localhost:8800  W*Q!DqxFmsXPclgGqpSwdy:localhost:8800  V*Q!DqxFmsXPclgGqpSwdy:localhost:8800  U*Q!DqxFmsXPclgGqpSwdy:localhost:8800  T*Q!DqxFmsXPclgGqpSwdy:localhost:8800  S*Q!DqxFmsXPclgGqpSwdy:localhost:8800  R*Q!DqxFmsXPclgGqpSwdy:localhost:8800  Q*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DoiZErAdypBUMZKaeJ:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800*Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DntdfAPfCfgdOoRMdl:localhost:8800 *Q!DnUHoxreGexNmjSVpq:localhost:8800^*Q!DnUHoxreGexNmjSVpq:localhost:8800^*Q!DnUHoxreGexNmjSVpq:localhost:8800]*Q!DnUHoxreGexNmjSVpq:localhost:8800] y*ok9i? G  o N  V $ 7 \ *  b 021e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM1e$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg}1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkn1e$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6If1e$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y`1e$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs_1e$UrQ2mIf8umDzk4xlcVEe5riTh71aKueHeodvQpkLV6g1e$UpLYzYD94twKh1XLWMSvHvGU5dEmY3shAD9vfAFkPWc0e$UeB9fyex88dLnW3yW7453aSOEIuSmRcwyE_ZTzfO-jMK1e$U_jQt-PtjpLv4o7hYXTngfLgJC1hsoSmXMi0vDn_AqI1e$U3d867JRhxuk0kJWmclK9Ss2ZM36c9P2_f_4H-zfozA1e$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8A1e$TetRC3fDNzyCu70Mrr3Ch5uNLrMJmP5IpP7WiO4ydZgM1e$T-rF55tTM5f9ORldWaUhU1bQHDk966hzDfccsea4LuY1e$SeCSB8rw4fTEjg_tO6ZqB7kbaPoUrRCdXY2-qjvAqbgT1e$SbDJqwtkOU28fVwHjUFln8-F4sajzPTWadDaSEDWDCA1e$S0DQVzSiOLwp_sW7RAer_zoJzU2Dg4PZlcyds69iy7s1e$ReNHNtgdDLwJkgdboM7KmXzbCZGalYHFHyQfXvP23u81e$QyJlL7UHYpV0pgNIpGUQe5x9GASJz9LvkAg7SVyWROA1e$QoK-3Ebjqh4cXO8GZs8_HvUcWhfBHIzHTldnfhJiEz01e$QhjTdytFjj3m5FdEicMKdEU4nWxxkpH4tr3UTAxnQGcA0e$QgZyojtwngLDQSr_JA4-PisRqs6mRGjsBgztnZjAXhc<1e$Qg2H6vpXhWIaus3rCN6Y2M_Ox42Ca5wEmbH9lJCA94Y'1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX00e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQN1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz0A1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo1e$PSAGMNWcNwatg36lokKEk6i1mK165P8fuoMgUginndc71e$POX6QHLE4XuqX388e92Vz-lUCnaTb847i_6szgxAuuQWq21e$PNnilkAy23rnqC7v_SlBtRmdt0cEwOl7I3pqbmAGG080e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY"0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67Dk 1e$P2mCFSVbiKW8yeEd6YbU7J2MgshgPWCfP7bQIsHsXxw21e$Ow1TKKpCEiFT15s1Xtwf037kllFjvnQzAN_SSSyf27E1e$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G41e$O02pnMP2sVH-jyTDmlS1AE0lquZeEpZ0TQFjeOu_DL01e$Nt6yIcmg1BqlNlP_ZhMr4aKQck4hy1QJiU-ynlrTy5sF0e$NWuhFrSvKW5ycwYlcoYVzMvib2r3VzQ5rpQKux-x0UU91e$NUQ_zqEaEjM9kUVl-0mWzZFMx5DOvYb1dZrpF5ZD0Hg@1e$NTOAWdadDaqzAMmGX1LImV6aAJNPjWwpjzy0hel6uVs  4 h 6jd]c@anon-20191002_181700-732:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAo127.0.0.1d]c@anon-20191002_181700-731:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQo127.0.0.1d]c@anon-20191002_181700-730:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAo127.0.0.1d]c@anon-20191002_181700-729:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQo127.0.0.1d]c@anon-20191002_181700-728:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAo127.0.0.1d]c@anon-20191002_181700-727:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwo127.0.0.1d]c@anon-20191002_181700-726:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowo127.0.0.1d]c@anon-20191002_181700-725:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAo127.0.0.1d]c@anon-20191002_181700-724:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAo127.0.0.1d]c@anon-20191002_181700-723:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwo127.0.0.1d]c@anon-20191002_181700-722:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAo127.0.0.1 x , [Lxa[a@anon-20191002_181700-90:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkwOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHVsdFdXaEdAQS5VSEUwagowMDJmc2lnbmF0dXJlIPuaTY6FNDr8ZVppCTEgHNp2rEd_Wuq0YlmbtSc-HFHPCg127.0.0.1Md]c@anon-20191002_181700-830:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgo127.0.0.1a[a@anon-20191002_181700-81:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gU1hKV2hqLl93RlhtXkpWbgowMDJmc2lnbmF0dXJlIFxO0SKVMcCOKKX9QQh-A9tmIYTRsT9ESKlEmDIpC0XQCg127.0.0.1Cd]c@anon-20191002_181700-808:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQo127.0.0.1d]c@anon-20191002_181700-798:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1Ao127.0.0.1^d]c@anon-20191002_181700-787:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwo127.0.0.1d]c@anon-20191002_181700-773:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2Ao127.0.0.1ۂd]c@anon-20191002_181700-760:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2Ao127.0.0.1a[a@anon-20191002_181700-74:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gPXVLa190LTJFPVpndGc0TQowMDJmc2lnbmF0dXJlICmifbh2vRs9Mxq7wp5GZuaKVWpL5gvjHIuVyVhYpNYaCg127.0.0.1>d]c@anon-20191002_181700-733:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQo127.0.0.1zd]c@anon-20191002_181700-721:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAo127.0.0.1 8l D `8]c!E@anon-20191002_181700-711:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQoTQWWPGRZNA127.0.0.1Perl + Net::Async::HTTP/0.44m獟]c!E@anon-20191002_181700-709:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1woIIKOSHQIMX127.0.0.1Perl + Net::Async::HTTP/0.44mx]c!E@anon-20191002_181700-708:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwoSZXKLUUSLB127.0.0.1Perl + Net::Async::HTTP/0.44mv]c!E@anon-20191002_181700-706:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQoWRSEYXOBHV127.0.0.1Perl + Net::Async::HTTP/0.44m`ԃ]c!E@anon-20191002_181700-707:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0FwoVRUFRMLDOP127.0.0.1Perl + Net::Async::HTTP/0.44m^]c!E@anon-20191002_181700-705:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAoAZEUEPQBJM127.0.0.1Perl + Net::Async::HTTP/0.44mH_]c!E@anon-20191002_181700-704:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAoEQKVVEUTZF127.0.0.1Perl + Net::Async::HTTP/0.44mF= ]c!E@anon-20191002_181700-703:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQoZKXMBTYIRP127.0.0.1Perl + Net::Async::HTTP/0.44m/* ]c!E@anon-20191002_181700-702:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwoMCYWHCABCH127.0.0.1Perl + Net::Async::HTTP/0.44m-) ]c!E@anon-20191002_181700-701:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAoKSBXFIPYSS127.0.0.1Perl + Net::Async::HTTP/0.44m =z - j XL:w?B e]]Q5$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4@anon-20191002_181700-721:localhost:8800@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800joinXOISPAUOSHVJCWENJUUS?A e]]Q5$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0@anon-20191002_181700-720:localhost:8800@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800joinXSMKELSYZZRIOKLQFSRH?@ e]]Q5$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-719:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800joinMILEDCIUNXUMWFEESQLVA? e]]Q5$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800inviteMILEDCIUNXUMWFEESQLVC> e]]Q=$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-718:localhost:8800!aiOswwhoZqjhcjzbzc:localhost:8800joinanon-20191002_181700-718?= e]]Q5$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs@anon-20191002_181700-717:localhost:8800@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800joinHMVWDTIFKRGHQBGEGHRH?< e]]Q5$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I@anon-20191002_181700-716:localhost:8800@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800joinMJNQECZFMFOOTUTQHDEM?; e]]Q5$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I@anon-20191002_181700-715:localhost:8800@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800joinILZFEUMGMNVXCRVUDWRW?: e]]Q5$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo@anon-20191002_181700-714:localhost:8800@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800joinZONDVATSKCZDRCJEXKOT?9 e]]Q5$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE@anon-20191002_181700-713:localhost:8800@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800joinKIPGYKTLFAKDJTVTRSGZ?8 e]]Q5$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE@anon-20191002_181700-712:localhost:8800@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800joinSIQSTRPUPDLQEGIEGXYW?7 e]]Q5$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-711:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800joinSPPIULUTUNSEUMJVVWAVA6 e]]Q5$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY@anon-20191002_181700-711:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800inviteSPPIULUTUNSEUMJVVWAVC5 e]]Q=$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-710:localhost:8800!yWhIsLsgNVGcnELrDS:localhost:8800joinanon-20191002_181700-710?4 e]]Q5$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ@anon-20191002_181700-708:localhost:8800@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:8800joinQNSOXAXNRXGCIEWGQWKJC3 e]]Q=$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4@anon-20191002_181700-706:localhost:8800@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:8800joinanon-20191002_181700-706?2 e]]Q5$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc@anon-20191002_181700-704:localhost:8800@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:8800joinQBXFQKRQDWUAJPNVZOZD?1 e]]Q5$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI@anon-20191002_181700-702:localhost:8800@anon-20191002_181700-702:localhost:8800!GsjDgpaxdwYfnefiWO:localhost:8800joinYXIIECCUXAJQBCOFPUZN?0 e]]Q5$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8@anon-20191002_181700-701:localhost:8800@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:8800joinBLFZQHKYWUXKFZZINKLJ?/ e]]Q5$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo@anon-20191002_181700-700:localhost:8800@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800joinDOJGFUOIVLOGJFEZFHHT a5ao- 8 = e  4`e)a\eQ' $DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800m.room.createm[eQ? $xxSf90Jv46N472JIm631GBUyPrqeaaU8c9rFE94mP5k!ABHbfUdkHCJksMsaUt:localhost:8800m.room.history_visibilityeZeQ/ $-SsjyANTsMbKK2saJLf0zn8Qb27Zn0BLWjjoj5vjOZM!ABHbfUdkHCJksMsaUt:localhost:8800m.room.join_rulesgYeQ3 $9Pdo7Dk7nL8qE7N4Ic4zHJVavN9CrZ5BI8q565igSbg!ABHbfUdkHCJksMsaUt:localhost:8800m.room.power_levels XeQ']$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31uc!ABHbfUdkHCJksMsaUt:localhost:8800m.room.member@anon-20191002_181700-698:localhost:8800join seQ']$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800joinareQ' $O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.createmqeQ? $WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800m.room.history_visibilityepeQ/ $3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800m.room.join_rulesgoeQ3 $4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800m.room.power_levels neQ']$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800m.room.member@anon-20191002_181700-706:localhost:8800joinameQ' $ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800m.room.createmleQ? $RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y!itfjLXhEaORJLkbfVS:localhost:8800m.room.history_visibilityekeQ/ $Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA!itfjLXhEaORJLkbfVS:localhost:8800m.room.join_rulesgjeQ3 $4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800m.room.power_levels ieQ']$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800m.room.member@anon-20191002_181700-704:localhost:8800joinaheQ' $yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800m.room.createggeQ3 $OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs!GsjDgpaxdwYfnefiWO:localhost:8800m.room.guest_accessmfeQ? $Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800m.room.history_visibilityeeeQ/ $2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800m.room.join_rulesgdeQ3 $Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800m.room.power_levels ceQ']$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.member@anon-20191002_181700-702:localhost:8800joinabeQ' $AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800m.room.create aeQ']$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-701:localhost:8800joinm`eQ? $OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800m.room.history_visibilitye_eQ/ $YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800m.room.join_rulesg^eQ3 $lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800m.room.power_levels ]eQ']$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800m.room.member@anon-20191002_181700-700:localhost:8800join  ReQa1$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8!jomrpmwwQQtghscizn:localhost:8800{"token_id": 679, "stream_ordering": 3625}{"auth_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A", "$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU"], "prev_events": ["$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI"], "type": "m.room.member", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-701:localhost:8800", "content": {"membership": "join", "displayname": "BLFZQHKYWUXKFZZINKLJ", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-701:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043799086, "hashes": {"sha256": "ej3n5TA153uUTX7QquwkyMjQpV5L7o5b0C8uQXXJNyc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "f7fxCEW8tWypl8Y1AJfWRSRX43VX8VPdffC+RjHp7NFdLOGdGEf09rKtswZ0UnQZJc4GhF3MvXkhjLa3Si/mAw"}}, "unsigned": {"age_ts": 1570043799086}}eQa$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3624}{"auth_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A", "$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "prev_events": ["$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU"], "type": "m.room.history_visibility", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043797814, "hashes": {"sha256": "Et6ZsQ0nve08nvRjZ4q/5pEeZng0ZAhRth4q+uG58vA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mXVMUP37x/MpYel9mZPPifBIFuUcaYK7OliNzcuuTg/8kyaL53ZsA7KbV0LoJYoUe1dlFMObrTAFSylyDOpnBQ"}}, "unsigned": {"age_ts": 1570043797814}}teQau$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3623}{"auth_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A", "$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "prev_events": ["$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A"], "type": "m.room.join_rules", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043796922, "hashes": {"sha256": "xO1+6bIpwEM2wxMbNyPUXDn9cC0QMHADZocucZG8oYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hJJhYrHcpm6XfYO2rVYvTwMAvCjOjtDnLhlxiecSfUBJJUR2ikMMNX2Ppauf76k+dEDgxQlV/jzxWjy2l+yRBw"}}, "unsigned": {"age_ts": 1570043796922}}k~eQac$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800{"token_id": 678, "stream_ordering": 3622}{"auth_events": ["$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY", "$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "prev_events": ["$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo"], "type": "m.room.power_levels", "room_id": "!jomrpmwwQQtghscizn:localhost:8800", "sender": "@anon-20191002_181700-700:localhost:8800", "content": {"users": {"@anon-20191002_181700-700:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043796021, "hashes": {"sha256": "x8Po0lMKPqzWCk6hPYwrkGgeq3bGrTifUNorGsXY9OM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Xi85LO8DRkyci5EL9isZrk5A8XZFQidWtittVWbd9tCaETwulQJxXJCB3kgFU1iF6Cigc66gggwmATNBRkIcAA"}}, "unsigned": {"age_ts": 1570043796021}} a} { y w u sqomkigeca~eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800~eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800~eeQ$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800~eeQ$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800~eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$RZAZ80fAvpvnfj5wx9OXye_B4lSWH-_K3IyDt_Ha82Y$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$Z-9Q_Y6Czp1fAySmdHVXMzijr-ItxM-VHAOItvOO4gA$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$4nSuwtMlMdjByFwvnpoJfbWNNiQ4_VUTMP7v3Ztljyo$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~ eeQ$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800~eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800~eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800~~eeQ$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~}eeQ$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800~|eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$YXk4fH5VAF0csawxafrK78gpvsZlrK58TCCZIt20hwU!jomrpmwwQQtghscizn:localhost:8800~{eeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~zeeQ$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800~yeeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyo!jomrpmwwQQtghscizn:localhost:8800~xeeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$DTRYU2o77cLmb2o0smfNetUqj4IrV5i23jRAcSVC3sY!jomrpmwwQQtghscizn:localhost:8800~weeQ$OhW6uOYTA-siBmbiloZufpmnO6q491WRQ7OP0xRC8vI$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A!jomrpmwwQQtghscizn:localhost:8800 ?G R ]  c # j * q 1 x 8?F MT[b&i-p4> ]  @anon-20191002_181700-734:localhost:8800m&\?9 ]@anon-20191002_181700-735:localhost:8800a&\9 ]@anon-20191002_181700-734:localhost:8800a&\= ]  @anon-20191002_181700-733:localhost:8800m&\R> ]  @anon-20191002_181700-732:localhost:8800m&\?9 ]@anon-20191002_181700-733:localhost:8800a&\9 ]@anon-20191002_181700-732:localhost:8800a&\= ]  @anon-20191002_181700-731:localhost:8800m&\R> ]  @anon-20191002_181700-730:localhost:8800m&\?9 ]@anon-20191002_181700-731:localhost:8800a&\9 ]@anon-20191002_181700-730:localhost:8800a&\= ]  @anon-20191002_181700-729:localhost:8800m&\R> ]  @anon-20191002_181700-728:localhost:8800m&\?9 ]@anon-20191002_181700-729:localhost:8800a&\9~ ]@anon-20191002_181700-728:localhost:8800a&\=} ]  @anon-20191002_181700-727:localhost:8800m&\>| ] @anon-20191002_181700-726:localhost:8800m&\ $T9{ ]@anon-20191002_181700-726:localhost:8800a&\9z ]@anon-20191002_181700-727:localhost:8800a&\=y ]  @anon-20191002_181700-725:localhost:8800m&\R>x ]  @anon-20191002_181700-724:localhost:8800m&\?9w ]@anon-20191002_181700-725:localhost:8800a&\9v ]@anon-20191002_181700-724:localhost:8800a&\=u ]  @anon-20191002_181700-723:localhost:8800m&\R>t ]  @anon-20191002_181700-722:localhost:8800m&\?9s ]@anon-20191002_181700-723:localhost:8800a&\9r ]@anon-20191002_181700-722:localhost:8800a&\=q ]  @anon-20191002_181700-721:localhost:8800m&\R>p ]  @anon-20191002_181700-720:localhost:8800m&\?9o ]@anon-20191002_181700-721:localhost:8800a&\9n ]@anon-20191002_181700-720:localhost:8800a&\=m ]  @anon-20191002_181700-719:localhost:8800m&\>l ] @anon-20191002_181700-718:localhost:8800m&\ 9k ]@anon-20191002_181700-718:localhost:8800a&\9j ]@anon-20191002_181700-719:localhost:8800a&\=i ]  @anon-20191002_181700-717:localhost:8800m&\R>h ]  @anon-20191002_181700-716:localhost:8800m&\?9g ]@anon-20191002_181700-717:localhost:8800a&\9f ]@anon-20191002_181700-716:localhost:8800a&\=e ]  @anon-20191002_181700-715:localhost:8800m&\R>d ]  @anon-20191002_181700-714:localhost:8800m&\?9c ]@anon-20191002_181700-715:localhost:8800a&\9b ]@anon-20191002_181700-714:localhost:8800a&\=a ]  @anon-20191002_181700-713:localhost:8800m&\R>` ]  @anon-20191002_181700-712:localhost:8800m&\?9_ ]@anon-20191002_181700-713:localhost:8800a&\9^ ]@anon-20191002_181700-712:localhost:8800a&\=] ]  @anon-20191002_181700-711:localhost:8800m&\>\ ] @anon-20191002_181700-710:localhost:8800m&\ 9[ ]@anon-20191002_181700-711:localhost:8800a&\9Z ]@anon-20191002_181700-710:localhost:8800a&\>Y ]  @anon-20191002_181700-708:localhost:8800m&\?9X ]@anon-20191002_181700-709:localhost:8800a&\9W ]@anon-20191002_181700-708:localhost:8800a&\>V ]  @anon-20191002_181700-706:localhost:8800m&\C9U ]@anon-20191002_181700-707:localhost:8800a&\9T ]@anon-20191002_181700-706:localhost:8800a&\>S ]  @anon-20191002_181700-704:localhost:8800m&\?9R ]@anon-20191002_181700-705:localhost:8800a&\9Q ]@anon-20191002_181700-704:localhost:8800a&\>P ]  @anon-20191002_181700-702:localhost:8800m&\:9O ]@anon-20191002_181700-703:localhost:8800a&\9N ]@anon-20191002_181700-702:localhost:8800a&\   .teQau$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3629}{"auth_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4", "$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4"], "type": "m.room.join_rules", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043803807, "hashes": {"sha256": "pSRIC7rr/37wEJxFTuM41XH2ZZjZbi7XunzlUfQ4bVM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+yLg5dKolC8VYEhBR42fZyUqHK8Su7X6jfvlbjvqTAg/ntVolBG7gg3AAyilPBW70TaWWn/q9+yx3UEHsAjyCA"}}, "unsigned": {"age_ts": 1570043803807}}keQac$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3628}{"auth_events": ["$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "type": "m.room.power_levels", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"users": {"@anon-20191002_181700-702:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043802998, "hashes": {"sha256": "bF5f3wuKDJrlhdKoVSiinr4tChqlQaBSIK2OPGFpm1A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QWqTVtaoj5Dy5LNGVXMG/Po0Jk18d1b7lD/Aq8Z8V2jvtbYkF0ir39O1ornU/h3t71oCHdP1He1ukV/+IOSmAg"}}, "unsigned": {"age_ts": 1570043802998}}reQaq$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3627}{"auth_events": ["$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI"], "prev_events": ["$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI"], "type": "m.room.member", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"membership": "join", "displayname": "YXIIECCUXAJQBCOFPUZN", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-702:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043802374, "hashes": {"sha256": "dqTYzKI6uh1eLDUpZUyVTfhNvfArRKp5cTObX4PzMZY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Gd3wbb70JcTTyVPOgWWYOh5oLBcXlmdDs2ROWOgdE60BDryqMOlUxFRblqZ9TIHpV6GvrybuwbTBZN1yMBHFDQ"}}, "unsigned": {"age_ts": 1570043802374}}ieQa_$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3626}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-702:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043801579, "hashes": {"sha256": "MutFjj26Q05cqA5GMd48kCPmJQwFmH7LbKMb3Xr7vzc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KEa1VaJFN4bc3lvnsGXAAgibxUKZAMrOER121XeNO+mOkxYPlaJ62h8fLOWubW1Q1VBdBo3Gl0cKL2yOXARnBA"}}, "unsigned": {"age_ts": 1570043801579}}  w r eQaq$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc!itfjLXhEaORJLkbfVS:localhost:8800{"token_id": 682, "stream_ordering": 3633}{"auth_events": ["$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs"], "prev_events": ["$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs"], "type": "m.room.member", "room_id": "!itfjLXhEaORJLkbfVS:localhost:8800", "sender": "@anon-20191002_181700-704:localhost:8800", "content": {"membership": "join", "displayname": "QBXFQKRQDWUAJPNVZOZD", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-704:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043808988, "hashes": {"sha256": "x60bI/vTvkfWTUrXta2pKGcBRgMDUfpalSIxH85lXlk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wEdy225UzfCIhToY/SvUBX1tXZuUKbhfxAP4WKM8o4yWOjjGe0XiRwBc7im3n1aw5OhgU/CYnlo5RMQ5x+w3BQ"}}, "unsigned": {"age_ts": 1570043808988}}ieQa_$yKXKEFWWLghlqgxJI9L1PWu0Va6APjbaX_Kek-CQmOs!itfjLXhEaORJLkbfVS:localhost:8800{"token_id": 682, "stream_ordering": 3632}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!itfjLXhEaORJLkbfVS:localhost:8800", "sender": "@anon-20191002_181700-704:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-704:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043808212, "hashes": {"sha256": "+xMQ4c9BE9kbuo3WvfJky0fnJRtK91X1gvmCzkTny24"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ND7ENETTKX7LNPGmwk0yE8Jos1nJHeTB8yMED4Y4Dg45FDbi4ghKl2q4UDXT6F4kgMFD3lTTy3qOIMu7VZa7Bg"}}, "unsigned": {"age_ts": 1570043808212}}{eQa$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3631}{"auth_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4", "$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo"], "type": "m.room.guest_access", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043805963, "hashes": {"sha256": "+ECJyaGoVukzhCiMxhr37Pecx4cgUVSRrsmOyAOLOWk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5arhqb5rf4rxrWP0ooVNzQcc8wfDwY084yjdM2WUl0/j/3MJfumF8ull9971sTHt2R+qdyFAYCJJPaCS340NDA"}}, "unsigned": {"age_ts": 1570043805963}}eQa$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800{"token_id": 680, "stream_ordering": 3630}{"auth_events": ["$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4", "$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI", "$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI"], "prev_events": ["$2upxSigmDM6h7H1EfoX7-q2mQ2Z0RaMRFQ8QfXD4B0A"], "type": "m.room.history_visibility", "room_id": "!GsjDgpaxdwYfnefiWO:localhost:8800", "sender": "@anon-20191002_181700-702:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043804564, "hashes": {"sha256": "bCkGaxxBkBB95TjwxUZttXU4WlAJOeLR55VpJtVlaTI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TyHnoulbbWZkH1jncNy/1yY3hmZdT1D4VkDYlGzmm6u30TkHRHceDX1+lB+RZpcmkfGoO9qVU9mLd2Ek6itHBw"}}, "unsigned": {"age_ts": 1570043804564}} g * T~=gg+]!c@anon-20191002_181700-715:localhost:8800MLSIEUMQJDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYxOC5GZ0VyblZXbDNKaWwKMDAyZnNpZ25hdHVyZSC1jgN30N9Boz3icKaySX9JmHMm0pJfsNYa46s2uOsF7wog*]!c@anon-20191002_181700-714:localhost:8800YDBOITJCYDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDM3TWhtLV55VFlzdX52TlAKMDAyZnNpZ25hdHVyZSB-D0qq-F4VHMzUehUyHc8b4NXxmxoEJE1VMAKiqcw8pgog)]!c@anon-20191002_181700-713:localhost:8800HRGSFQOGPUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDROT2wuZFROc2VnR3M6c1gKMDAyZnNpZ25hdHVyZSDGynSuY1KhGWTzubZHTUhlUCJ8qFvK_oxm1XAOIo4j4gog(]!c@anon-20191002_181700-712:localhost:8800CFERAQYYHKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDN0dKX0A3RExxQXVTfmwKMDAyZnNpZ25hdHVyZSAES0eD9WiAuHrdgFXofP7Pui2WRI1MP61s9oGFvx-YqAog']!c@anon-20191002_181700-711:localhost:8800TQWWPGRZNAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQog&]!c@anon-20191002_181700-710:localhost:8800UKBZXSLNLUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5Aog%]!c@anon-20191002_181700-709:localhost:8800IIKOSHQIMXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1wog$]!c@anon-20191002_181700-708:localhost:8800SZXKLUUSLBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwog#]!c@anon-20191002_181700-707:localhost:8800VRUFRMLDOPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0Fwog"]!c@anon-20191002_181700-706:localhost:8800WRSEYXOBHVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQog!]!c@anon-20191002_181700-705:localhost:8800AZEUEPQBJMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAo !mp% . V |   :=_b?Bd<EmhQ/ eQ!anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rules$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkjQ3 eP!anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo Q']eO!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyod Q' eN!anErKtXIsVKEEsrzWM:localhost:8800m.room.create$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU Q/ eeM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM Q']eL!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEp Q? eK!TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibility$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUh Q/ eJ!TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rules$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQjQ3 eI!TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU Q']eH!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEdQ' eG!TcCLuIBUrtFqghDgay:localhost:8800m.room.create$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU8Q']eeF!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY Q']eE!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYjQ3 eD!yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_access$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgpQ? eC!yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibility$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0hQ/ eB!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMjQ3 eA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA Q']e@!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0d~Q' e?!yWhIsLsgNVGcnELrDS:localhost:8800m.room.create$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMp}Q? e>!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibility$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2roh|Q/ e=!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rules$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggj{Q3 e?]!@anon-20191002_181700-716:localhost:8800ATBUACMSGRm ?]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJDm&?]!@anon-20191002_181700-714:localhost:8800YDBOITJCYDm?]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPUm?]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNHmx?]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJmt?]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRGm\?]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQVmF(?]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEGmCY?]!@anon-20191002_181700-722:localhost:8800IZTIXMADAYmJg?]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAGm+6?]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXNm'T=[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIm=[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCm=?]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOBm ?]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQm?]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDMmv?]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCNmF pPW ]  ! j / \  Bp5Q' !kxTDuIasPNpXtiRsif:localhost:8800m.room.createq<Q3 !kwXxkGQFkaeenFTQJr:localhost:8800m.room.power_levels^Q']!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-249:localhost:8800^Q']!kwXxkGQFkaeenFTQJr:localhost:8800m.room.member@anon-20191002_181700-248:localhost:8800:Q/ !kwXxkGQFkaeenFTQJr:localhost:8800m.room.join_rulesBQ? !kwXxkGQFkaeenFTQJr:localhost:8800m.room.history_visibility<Q3 !kwXxkGQFkaeenFTQJr:localhost:8800m.room.guest_access6Q' !kwXxkGQFkaeenFTQJr:localhost:8800m.room.create<Q3 !kwJgbtogEzCqYbUXfh:localhost:8800m.room.power_levels^Q']!kwJgbtogEzCqYbUXfh:localhost:8800m.room.member@anon-20191002_181700-328:localhost:8800:Q/ !kwJgbtogEzCqYbUXfh:localhost:8800m.room.join_rulesBQ? !kwJgbtogEzCqYbUXfh:localhost:8800m.room.history_visibility6Q' !kwJgbtogEzCqYbUXfh:localhost:8800m.room.create<Q3 !krhefVncoErkCtnvsy:localhost:8800m.room.power_levels^Q']!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-293:localhost:8800^Q']!krhefVncoErkCtnvsy:localhost:8800m.room.member@anon-20191002_181700-292:localhost:8800:Q/ !krhefVncoErkCtnvsy:localhost:8800m.room.join_rulesBQ? !krhefVncoErkCtnvsy:localhost:8800m.room.history_visibility6Q' !krhefVncoErkCtnvsy:localhost:8800m.room.create?Q9 !krhefVncoErkCtnvsy:localhost:8800m.room.canonical_aliasEQ))!krhefVncoErkCtnvsy:localhost:8800m.room.aliaseslocalhost:8800<Q3 !kpTPWDZdBbbXKLonZK:localhost:8800m.room.power_levels^Q']!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-260:localhost:8800^Q']!kpTPWDZdBbbXKLonZK:localhost:8800m.room.member@anon-20191002_181700-259:localhost:8800:Q/ !kpTPWDZdBbbXKLonZK:localhost:8800m.room.join_rulesBQ? !kpTPWDZdBbbXKLonZK:localhost:8800m.room.history_visibility6Q' !kpTPWDZdBbbXKLonZK:localhost:8800m.room.create5Q% !kkgEEVUJynguTqAoWD:localhost:8800m.room.topic "= i r 6 ? gp #W`/ qeQ']$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800apeQ' $UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.createeoeQ/ $5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules neQ']$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800mmeQ? $PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibilityeleQ/ $4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rulesgkeQ3 $12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels jeQ']$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800aieQ' $wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800m.room.createeheQ/ $WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules geQ']$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800mfeQ? $7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibilityeeeQ/ $jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rulesgdeQ3 $QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels ceQ']$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800abeQ' $Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800m.room.create aeQ']$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800 `eQ']$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800g_eQ3 $jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_accessm^eQ? $pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibilitye]eQ/ $PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rulesg\eQ3 $dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels [eQ']$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800aZeQ' $4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.createmYeQ? $6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibilityeXeQ/ $klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rulesgWeQ3 $EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels VeQ']$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800aUeQ' $O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.createmTeQ? $WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800m.room.history_visibilityeSeQ/ $3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800m.room.join_rulesgReQ3 $4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800m.room.power_levels QeQ']$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800m.room.member@anon-20191002_181700-706:localhost:8800aPeQ' $ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800m.room.create "Xq) 4 ^ ! C%0ZY$#SXiTQ3 e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY SQ']e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IcRQ' e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.create$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMgQQ/ e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA PQ']e !anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IoOQ? e !anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibility$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0gNQ/ e !anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rules$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkiMQ3 e !anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo LQ']e !anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyocKQ' e !anErKtXIsVKEEsrzWM:localhost:8800m.room.create$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUgJQ/ e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ IQ']e !TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEoHQ? e !TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibility$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUgGQ/ e !TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rules$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQiFQ3 e !TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU EQ']e !TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEcDQ' e !TcCLuIBUrtFqghDgay:localhost:8800m.room.create$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU CQ']e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 BQ']e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYiAQ3 e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_access$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgo@Q? e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibility$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0g?Q/ e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMi>Q3 e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA =Q']e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0c<Q' e !yWhIsLsgNVGcnELrDS:localhost:8800m.room.create$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMo;Q? e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibility$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rog:Q/ e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rules$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggi9Q3 e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo 8Q']e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.member@anon-20191002_181700-708:localhost:8800$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQc7Q' e !wCsDjKBtuUbrmZgjsB:localhost:8800m.room.create$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djsso6Q? e !SpXEytywhTbAftyVBr:localhost:8800m.room.history_visibility$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAg5Q/ e !SpXEytywhTbAftyVBr:localhost:8800m.room.join_rules$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIi4Q3 e !SpXEytywhTbAftyVBr:localhost:8800m.room.power_levels$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc 3Q']e !SpXEytywhTbAftyVBr:localhost:8800m.room.member@anon-20191002_181700-706:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4  eQa$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3641}{"auth_events": ["$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc", "$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw", "$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "prev_events": ["$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI"], "type": "m.room.history_visibility", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043817865, "hashes": {"sha256": "lbJUzOv8d77d/LzhX5M+5UamAHKnvIfX7jCS7wqOAJQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "l8nBLEbovvNdQRdcX3V52wn4fYKHW6/DyzhdTyDUPQF0b0K0OBX/4us2hb++jnSDVKmo8yqh8ojWf1N4Cau5Dw"}}, "unsigned": {"age_ts": 1570043817865}}teQau$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3640}{"auth_events": ["$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc", "$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw", "$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "prev_events": ["$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc"], "type": "m.room.join_rules", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043817105, "hashes": {"sha256": "ehlZuTFHrazmyOus6u5zY18A438+YAys8oAfc9JinWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pcN/LmDlh4gXpi6ITGDpRelSE4sF1bjvPb2EZp7KIKfJC9UAX3225WvPHg+73YV1IZCs9tv891tW036UljGpBw"}}, "unsigned": {"age_ts": 1570043817105}}keQac$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3639}{"auth_events": ["$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw", "$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "prev_events": ["$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4"], "type": "m.room.power_levels", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"users": {"@anon-20191002_181700-706:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043816134, "hashes": {"sha256": "aVu6ooTheZDYPVKVDKIt6nldJ8t3Nr4Qrh0juTE5Xe4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6crJCYO+GnWGCEQlFf+YfkztB0N0mXadPDmjPX1EVQ/2eZ91rCH7NJjfibFTBOGGEZwYhbYXRYcoYubgnm5qCQ"}}, "unsigned": {"age_ts": 1570043816134}}veQay$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800{"token_id": 684, "stream_ordering": 3638}{"auth_events": ["$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw"], "prev_events": ["$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw"], "type": "m.room.member", "room_id": "!SpXEytywhTbAftyVBr:localhost:8800", "sender": "@anon-20191002_181700-706:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-706", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-706:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043815208, "hashes": {"sha256": "sw3zdPTumotqX3IkDhwQvb9AUKF+X5MX1WaZzrkEYCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SHGQewkPfbZdvgzEnLv4tclW4C72LTkeqjHtxUjTztoJM/pLFaYOEsfpmEcHwNEXkMl3wuDO6Lt0359zcP4wDw"}}, "unsigned": {"age_ts": 1570043815208}} FV \  f  pn |64FN e'Q  ]$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUm.room.create!anErKtXIsVKEEsrzWM:localhost:8800mm3@anon-20191002_181700-714:localhost:8800$Me/Q ] $WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQm.room.join_rules!yWhIsLsgNVGcnELrDS:localhost:8800 mXm@anon-20191002_181700-710:localhost:8800 Le'Q ]$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEm.room.member!TcCLuIBUrtFqghDgay:localhost:8800mSmý@anon-20191002_181700-713:localhost:8800,Ke?Q ]$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUm.room.history_visibility!TcCLuIBUrtFqghDgay:localhost:8800mm@anon-20191002_181700-712:localhost:8800$Je/Q ]$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQm.room.join_rules!TcCLuIBUrtFqghDgay:localhost:8800mm@anon-20191002_181700-712:localhost:8800&Ie3Q ]$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUm.room.power_levels!TcCLuIBUrtFqghDgay:localhost:8800m縏m@anon-20191002_181700-712:localhost:8800 He'Q ]$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEm.room.member!TcCLuIBUrtFqghDgay:localhost:8800m>m綦@anon-20191002_181700-712:localhost:8800G e'Q  ]$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUm.room.create!TcCLuIBUrtFqghDgay:localhost:8800m粸m?@anon-20191002_181700-712:localhost:8800 Fe'Q ]$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4m.room.member!yWhIsLsgNVGcnELrDS:localhost:8800m穣mc@anon-20191002_181700-711:localhost:8800 Ee'Q ]$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYm.room.member!yWhIsLsgNVGcnELrDS:localhost:8800mmp@anon-20191002_181700-710:localhost:8800&De3Q ]$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgm.room.guest_access!yWhIsLsgNVGcnELrDS:localhost:8800m#m%@anon-20191002_181700-710:localhost:8800,Ce?Q ]$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0m.room.history_visibility!yWhIsLsgNVGcnELrDS:localhost:8800mm瞮@anon-20191002_181700-710:localhost:8800$Be/Q ]$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMm.room.join_rules!yWhIsLsgNVGcnELrDS:localhost:8800m(mI@anon-20191002_181700-710:localhost:8800&Ae3Q ]$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAm.room.power_levels!yWhIsLsgNVGcnELrDS:localhost:8800m疣m@anon-20191002_181700-710:localhost:8800 @e'Q ]$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0m.room.member!yWhIsLsgNVGcnELrDS:localhost:8800m瓕m]@anon-20191002_181700-710:localhost:8800? e'Q  ]$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMm.room.create!yWhIsLsgNVGcnELrDS:localhost:8800m?m琷@anon-20191002_181700-710:localhost:8800,>e?Q ]$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2rom.room.history_visibility!wCsDjKBtuUbrmZgjsB:localhost:8800m_m@anon-20191002_181700-708:localhost:8800$=e/Q ]$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Ggm.room.join_rules!wCsDjKBtuUbrmZgjsB:localhost:8800m炝mp@anon-20191002_181700-708:localhost:8800&<e3Q ]$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfom.room.power_levels!wCsDjKBtuUbrmZgjsB:localhost:8800mm@anon-20191002_181700-708:localhost:8800 ;e'Q ]$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQm.room.member!wCsDjKBtuUbrmZgjsB:localhost:8800m}>m}@anon-20191002_181700-708:localhost:8800: e'Q  ]$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djssm.room.create!wCsDjKBtuUbrmZgjsB:localhost:8800mymz@anon-20191002_181700-708:localhost:8800,9e?Q ]$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzAm.room.history_visibility!SpXEytywhTbAftyVBr:localhost:8800momq@anon-20191002_181700-706:localhost:8800$8e/Q ]$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bIm.room.join_rules!SpXEytywhTbAftyVBr:localhost:8800mlmmw@anon-20191002_181700-706:localhost:8800&7e3Q ]$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vcm.room.power_levels!SpXEytywhTbAftyVBr:localhost:8800mhmjF@anon-20191002_181700-706:localhost:8800 a} { y w u sqomkigeca~4eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~3eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~2eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800~1eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~0eeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~/eeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~.eeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~-eeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~,eeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~+eeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~*eeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~)eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~(eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~'eeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~&eeQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~%eeQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~$eeQ$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~#eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800~"eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~!eeQ$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800~ eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800~eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800~eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800~eeQ$WsDYHLrKBfl0_wDVDPtftMV_AV-AY_hYFzhT9eomPzA$4PLjt6AKD-4qzNvepAQMmmtCeYPlezD2FCAeVxU-2Vc!SpXEytywhTbAftyVBr:localhost:8800~eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4!SpXEytywhTbAftyVBr:localhost:8800~eeQ$3mcjlQ8qVDbatoMlP7yRuPVVOWEonHltv7fmSnpt4bI$ZUCHyvagLToa-7gQ3PfWUCrIUWInk0mkGL2-FRXVudw!SpXEytywhTbAftyVBr:localhost:8800 5FT)}R' { P % y N # w L !oD u J  s H q*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WgXzOXLTeqaGfiDFhL:localhost:8800*Q!WFHIeSFQyuugGeBFxW:localhost:8800V*Q!WFHIeSFQyuugGeBFxW:localhost:8800U*Q!VhUAklonNaWKRnLkcr:localhost:8800 *Q!WjlTCJVOFJkanCtkFE:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhqVaRReBxJXADAyYD:localhost:8800*Q!WhLedNwPGGGTtqeqam:localhost:8800 +*Q!WhLedNwPGGGTtqeqam:localhost:8800 **Q!WhLedNwPGGGTtqeqam:localhost:8800 )*Q!WhLedNwPGGGTtqeqam:localhost:8800 (*Q!WhLedNwPGGGTtqeqam:localhost:8800 '*Q!WhLedNwPGGGTtqeqam:localhost:8800 &*Q!WhLedNwPGGGTtqeqam:localhost:8800 %*Q!WhLedNwPGGGTtqeqam:localhost:8800 $*Q!WYyiQAVvitxsLZKVCG:localhost:8800 B ~*Q!WYyiQAVvitxsLZKVCG:localhost:8800 A }*Q!WYyiQAVvitxsLZKVCG:localhost:8800 @ |*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ? {*Q!WYyiQAVvitxsLZKVCG:localhost:8800 > z*Q!WYyiQAVvitxsLZKVCG:localhost:8800 = y*Q!WYyiQAVvitxsLZKVCG:localhost:8800 < x*Q!WYyiQAVvitxsLZKVCG:localhost:8800 ; w*Q!WWZVpyLeZfyfpWidLx:localhost:8800fh*Q!WWZVpyLeZfyfpWidLx:localhost:8800eg*Q!WWZVpyLeZfyfpWidLx:localhost:8800df*Q!WWZVpyLeZfyfpWidLx:localhost:8800ce*Q!WWZVpyLeZfyfpWidLx:localhost:8800bd*Q!WWZVpyLeZfyfpWidLx:localhost:8800ac*Q!WWZVpyLeZfyfpWidLx:localhost:8800`b*Q!WWZVpyLeZfyfpWidLx:localhost:8800_a*Q!WWZVpyLeZfyfpWidLx:localhost:8800^`*Q!WWZVpyLeZfyfpWidLx:localhost:8800]_*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WVzjUePHrzCjfyTbmK:localhost:8800*Q!WFHIeSFQyuugGeBFxW:localhost:8800Z*Q!WFHIeSFQyuugGeBFxW:localhost:8800Y*Q!WFHIeSFQyuugGeBFxW:localhost:8800X*Q!WFHIeSFQyuugGeBFxW:localhost:8800W   .teQau$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3645}{"auth_events": ["$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo", "$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss", "$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ"], "prev_events": ["$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo"], "type": "m.room.join_rules", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043822749, "hashes": {"sha256": "CExRRLXyESo/wI7VNZ992aiHC5GE1489KvIORjnlze0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rxmox38jqSTLHLLArlZMPejmLSYRhupHQYiVSZAro7JQsYVSal8jEcAo7UeFQqilF/Cl/6swokLRC9ts0RAUBA"}}, "unsigned": {"age_ts": 1570043822749}}keQac$EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3644}{"auth_events": ["$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss", "$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ"], "prev_events": ["$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ"], "type": "m.room.power_levels", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"users": {"@anon-20191002_181700-708:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043822010, "hashes": {"sha256": "PK89G3i2PH5yfIgOAZqncS1WjDPnhzSKvg87dLoZVQ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Ui2EwBxXFa5SO30aVkVLvSF2j6BYU6VPp91+hBW/vglsaQc+2nwvO+rz9i8BWEwSPaSetw+P2i5OoVWJ1zWhDQ"}}, "unsigned": {"age_ts": 1570043822010}}reQaq$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3643}{"auth_events": ["$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss"], "prev_events": ["$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss"], "type": "m.room.member", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"membership": "join", "displayname": "QNSOXAXNRXGCIEWGQWKJ", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-708:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043821374, "hashes": {"sha256": "441VHVHkd39cjYl97baSqY+ghrpu8bXGwCxoPd9nkUc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8skAEKxaSLE7adZfiBESe19wmbSgVefeU6bMjoK3O+0S6m2iBJ17xRvy00FKx8qiBiJCq4P3XEiugrsNnfnqCw"}}, "unsigned": {"age_ts": 1570043821374}}ieQa_$O0K37CWRf-anE7yVJRAzymrZmnCprEmMA4STFl3djss!wCsDjKBtuUbrmZgjsB:localhost:8800{"token_id": 686, "stream_ordering": 3642}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!wCsDjKBtuUbrmZgjsB:localhost:8800", "sender": "@anon-20191002_181700-708:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-708:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043820456, "hashes": {"sha256": "3fNa1H6G0x5AWSzJJ12IsekNOfxdrltfeOJP6nne90Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9tjCAkk4/+ZO9HJBvAE5rqNmyIEhS27GcVKjS4QqLD4jBZu4B2mcUzZ9MMow0DFRpFY7JqeiWSEUH7GtsUXYBw"}}, "unsigned": {"age_ts": 1570043820456}} -RM H C > 9 4/*|%w rmhc TYQeg!BKZJsoFNhiLTDYNclB:localhost:8800$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYTXQef!BKZJsoFNhiLTDYNclB:localhost:8800$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoTWQee!BKZJsoFNhiLTDYNclB:localhost:8800$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUTVQed!BKZJsoFNhiLTDYNclB:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0TUQec!BKZJsoFNhiLTDYNclB:localhost:8800$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkTTQeb!aiOswwhoZqjhcjzbzc:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgTSQea!aiOswwhoZqjhcjzbzc:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760TRQe`!aiOswwhoZqjhcjzbzc:localhost:8800$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4NsTQQe_!aiOswwhoZqjhcjzbzc:localhost:8800$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkTPQe^!aiOswwhoZqjhcjzbzc:localhost:8800$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HATOQe]!aiOswwhoZqjhcjzbzc:localhost:8800$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_ATNQe\!aiOswwhoZqjhcjzbzc:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wTMQe[!aiOswwhoZqjhcjzbzc:localhost:8800$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsoTLQeZ!IYxUkyFHOgvhLpdkOA:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsTKQeY!IYxUkyFHOgvhLpdkOA:localhost:8800$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8TJQeX!IYxUkyFHOgvhLpdkOA:localhost:8800$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4TIQeW!IYxUkyFHOgvhLpdkOA:localhost:8800$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYTHQeV!IYxUkyFHOgvhLpdkOA:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3ITGQeU!IYxUkyFHOgvhLpdkOA:localhost:8800$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMTFQeT!yWhIsLsgNVGcnELrDS:localhost:8800$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYATEQeS!anErKtXIsVKEEsrzWM:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6ITDQeR!anErKtXIsVKEEsrzWM:localhost:8800$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0TCQeQ!anErKtXIsVKEEsrzWM:localhost:8800$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkTBQeP!anErKtXIsVKEEsrzWM:localhost:8800$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSoTAQeO!anErKtXIsVKEEsrzWM:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyoT@QeN!anErKtXIsVKEEsrzWM:localhost:8800$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHUT?QeM!yWhIsLsgNVGcnELrDS:localhost:8800$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQT>QeL!TcCLuIBUrtFqghDgay:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jET=QeK!TcCLuIBUrtFqghDgay:localhost:8800$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oUT<QeJ!TcCLuIBUrtFqghDgay:localhost:8800$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQT;QeI!TcCLuIBUrtFqghDgay:localhost:8800$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TUT:QeH!TcCLuIBUrtFqghDgay:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdET9QeG!TcCLuIBUrtFqghDgay:localhost:8800$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPUT8QeF!yWhIsLsgNVGcnELrDS:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4T7QeE!yWhIsLsgNVGcnELrDS:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDYT6QeD!yWhIsLsgNVGcnELrDS:localhost:8800$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDgT5QeC!yWhIsLsgNVGcnELrDS:localhost:8800$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0T4QeB!yWhIsLsgNVGcnELrDS:localhost:8800$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NMT3QeA!yWhIsLsgNVGcnELrDS:localhost:8800$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAT2Qe@!yWhIsLsgNVGcnELrDS:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0T1Qe?!yWhIsLsgNVGcnELrDS:localhost:8800$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBMT0Qe>!wCsDjKBtuUbrmZgjsB:localhost:8800$6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2roT/Qe=!wCsDjKBtuUbrmZgjsB:localhost:8800$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44GgT.Qe 9 4/*|%w rmhc T!Qe !!NcJYmIbgjsaKJOzBcs:localhost:8800$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wT Qe !NcJYmIbgjsaKJOzBcs:localhost:8800$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegTQe !NcJYmIbgjsaKJOzBcs:localhost:8800$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUTQe !NcJYmIbgjsaKJOzBcs:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cTQe !NcJYmIbgjsaKJOzBcs:localhost:8800$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgTQe !biBIcqnGelHvLnpkOu:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkTQe !biBIcqnGelHvLnpkOu:localhost:8800$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980TQe !biBIcqnGelHvLnpkOu:localhost:8800$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8TQe !biBIcqnGelHvLnpkOu:localhost:8800$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QTQe !biBIcqnGelHvLnpkOu:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNATQe !biBIcqnGelHvLnpkOu:localhost:8800$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcTQe !aiOswwhoZqjhcjzbzc:localhost:8800$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0TQe !yNfCaBMPezurwkJRAX:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokTQe !yNfCaBMPezurwkJRAX:localhost:8800$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8TQe !yNfCaBMPezurwkJRAX:localhost:8800$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYTQe !yNfCaBMPezurwkJRAX:localhost:8800$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kTQe !yNfCaBMPezurwkJRAX:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8TQe !yNfCaBMPezurwkJRAX:localhost:8800$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsTQe !aiOswwhoZqjhcjzbzc:localhost:8800$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gTQe !BKZJsoFNhiLTDYNclB:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4T Qe !BKZJsoFNhiLTDYNclB:localhost:8800$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYT Qe !BKZJsoFNhiLTDYNclB:localhost:8800$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoT Qe !BKZJsoFNhiLTDYNclB:localhost:8800$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUT Qe !BKZJsoFNhiLTDYNclB:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0T Qe !BKZJsoFNhiLTDYNclB:localhost:8800$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkTQe !aiOswwhoZqjhcjzbzc:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgTQe !aiOswwhoZqjhcjzbzc:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760TQe !aiOswwhoZqjhcjzbzc:localhost:8800$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4NsTQe !aiOswwhoZqjhcjzbzc:localhost:8800$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkTQe !aiOswwhoZqjhcjzbzc:localhost:8800$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HATQe !aiOswwhoZqjhcjzbzc:localhost:8800$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_ATQe !aiOswwhoZqjhcjzbzc:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wTQe !aiOswwhoZqjhcjzbzc:localhost:8800$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsoTQe !IYxUkyFHOgvhLpdkOA:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsTQe !IYxUkyFHOgvhLpdkOA:localhost:8800$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8T~Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4T}Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYT|Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IT{Qe !IYxUkyFHOgvhLpdkOA:localhost:8800$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMTzQe !yWhIsLsgNVGcnELrDS:localhost:8800$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYATyQe !anErKtXIsVKEEsrzWM:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6ITxQe !anErKtXIsVKEEsrzWM:localhost:8800$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0TwQe !anErKtXIsVKEEsrzWM:localhost:8800$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkTvQe !anErKtXIsVKEEsrzWM:localhost:8800$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSoTuQe !anErKtXIsVKEEsrzWM:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo  {eQa$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3652}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0"], "type": "m.room.guest_access", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043830563, "hashes": {"sha256": "58oM4Dg8EFXgvsWpFgDYNXrEff3VBPoJ6Qjqgb8c0sI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8frp9V+eK047qZE2o3ICXGwPwv8sas3HOXmTWazk761XlJVNcWOw/5RgMgfmDsnTXdJeA8EZeruwRKBtVeebDw"}}, "unsigned": {"age_ts": 1570043830563}}eQa$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3651}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM"], "type": "m.room.history_visibility", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043829706, "hashes": {"sha256": "VsFowMOhbeX6zfuwJp8CtjAPg6CNO8OOFLWwoCLAbH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RyX9k8+81KSiagQQ13k6vzm8mdI+aV6q+ICggm9Tvqh3WRtW8urYqNfquq7us6d3z1YAXMKqENpiVkv2ZgN5CQ"}}, "unsigned": {"age_ts": 1570043829706}}teQau$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3650}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA"], "type": "m.room.join_rules", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043828776, "hashes": {"sha256": "PvoPl2kSDIPCHWbUEohVdKV994bAxnJwFb33ho2Il5Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JFJlxory0qkqT7/7RbiUJkPHKJOV9OiwBYDjPdWsOPxfNskBp/hHldD6V1k4wVHOWYsDQwB0O2gkU0YvvvnuBg"}}, "unsigned": {"age_ts": 1570043828776}} ~z v r n j fb^ZVRNJFaeeQ$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800`eeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800_eeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800^eeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800]eeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800\eeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800[eeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800ZeeQ$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800YeeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800XeeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800WeeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800VeeQ$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800UeeQ$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800TeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800SeeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800ReeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800QeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800PeeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800OeeQ$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800NeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800MeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800LeeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800KeeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800JeeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800IeeQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800HeeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800GeeQ$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800FeeQ$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800EeeQ$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800DeeQ$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf V?eL$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYsha256Ko`eRK8Ҥ*NퟪV>eL$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48ksha256N/Vo w)NM3@ V=eL$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8sha256hM8HqC+rΧBp$mV<eL$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhssha256#zɃnux)yMm RMV;eL$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gsha256Sq'YF^(m8u:?suN,zsxV:eL$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4sha256~GvjII]hyK_Jc*cƃ8JP 8l D `8]c!E@anon-20191002_181700-720:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAoCJYSUKRSXN127.0.0.1Perl + Net::Async::HTTP/0.44m'T]c!E@anon-20191002_181700-718:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFDaFB1bS5vcUt-cXFTc1AKMDAyZnNpZ25hdHVyZSBuUwjAdastvQZGSYHyizirOyLuiIQKBqJADs7r5j1EgwoLCLSEHKRUG127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-719:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdAVy5KOWssdCxtcVdyd3cKMDAyZnNpZ25hdHVyZSAgraxxc6q5U_7VMbu5yfxGyGqUF06nK-jKqT7xjrhzOgoERYCEGRJPT127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-717:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZaYmY7VzoyaS5hT3UsRUsKMDAyZnNpZ25hdHVyZSCFQhHrZ-LTwiiiDge5GCVdrykrXQfkhmWf_Bbg0OR1AgoJZHRILWPLI127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-716:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4wOkx5ZmMuQitWbVU4LFoKMDAyZnNpZ25hdHVyZSCU0_9O6ALCEUu0OKMtSUgn0PKtFCpELylK1hj4uM_J9woATBUACMSGR127.0.0.1Perl + Net::Async::HTTP/0.44m ]c!E@anon-20191002_181700-715:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYxOC5GZ0VyblZXbDNKaWwKMDAyZnNpZ25hdHVyZSC1jgN30N9Boz3icKaySX9JmHMm0pJfsNYa46s2uOsF7woMLSIEUMQJD127.0.0.1Perl + Net::Async::HTTP/0.44m&]c!E@anon-20191002_181700-714:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDM3TWhtLV55VFlzdX52TlAKMDAyZnNpZ25hdHVyZSB-D0qq-F4VHMzUehUyHc8b4NXxmxoEJE1VMAKiqcw8pgoYDBOITJCYD127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-713:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDROT2wuZFROc2VnR3M6c1gKMDAyZnNpZ25hdHVyZSDGynSuY1KhGWTzubZHTUhlUCJ8qFvK_oxm1XAOIo4j4goHRGSFQOGPU127.0.0.1Perl + Net::Async::HTTP/0.44m҃]c!E@anon-20191002_181700-712:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDN0dKX0A3RExxQXVTfmwKMDAyZnNpZ25hdHVyZSAES0eD9WiAuHrdgFXofP7Pui2WRI1MP61s9oGFvx-YqAoCFERAQYYHK127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-710:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5AoUKBZXSLNLU127.0.0.1Perl + Net::Async::HTTP/0.44m 6 k#6ieQa_$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3655}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-712:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043835064, "hashes": {"sha256": "YPdmnc5PRWI/iulJsh7LgbtiVImiiDHu+Vmx6t7vsrI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aFwPNoiWgztjV/MoOTOJrx8cAiil64+IzeRPr4ZzBebX/Hqj/AwsdC3fejgdhXAsXuSmcs+wsY+vBfUHEdo5CA"}}, "unsigned": {"age_ts": 1570043835064}}DeQa$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 689, "stream_ordering": 3654}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM", "$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY"], "prev_events": ["$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY"], "type": "m.room.member", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-711:localhost:8800", "content": {"membership": "join", "displayname": "SPPIULUTUNSEUMJVVWAV", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-711:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043832739, "hashes": {"sha256": "00yF7ZSXcmqUCJ2+AyWKa9ExGbwl0i9P+40w4w/0NJM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "wLgxrWrPQhYmd5b/XngBHPlw4cWzdSDKzJ8vAmSanHv7W+kZeXwAnuQtBU41kOJftyiRk2J5n59RPW6PaayNAg"}}, "unsigned": {"age_ts": 1570043832739, "replaces_state": "$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY"}}eQa/$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3653}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg"], "type": "m.room.member", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"membership": "invite", "displayname": "SPPIULUTUNSEUMJVVWAV", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-711:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043831808, "hashes": {"sha256": "NDO9ztygFgiBHcRwIHjr8CrAST8peVYH+TJfDFtyM1E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O1cqZ9qy2pmbedKGqwL4NcgXVLDg0MvH1Xmr1LSvjJcrwnzLXvhYAdBxO4DOe6y6O06kuaovxK7pOKsrokgyCA"}}, "unsigned": {"age_ts": 1570043831808, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-710:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-710:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-710", "avatar_url": null}, "sender": "@anon-20191002_181700-710:localhost:8800"}]}}  K)R { K(E]]eQ@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800TD]]eQe@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-755:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8TC]]eQe@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-751:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgTB]]eQe@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-747:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywTA]]eQe~@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-727:localhost:8800$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMT@]]eQeb@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-719:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgT?]]eQeF@anon-20191002_181700-710:localhost:8800@anon-20191002_181700-711:localhost:8800$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4 a} { y w u sqomkigeca~SeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~ReeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800~QeeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~PeeQ$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800~OeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800~NeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~MeeQ$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800~LeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800~KeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~JeeQ$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800~IeeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800~HeeQ$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~GeeQ$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800~FeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~EeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800~DeeQ$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800~CeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800~BeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~AeeQ$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800~@eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800~?eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~>eeQ$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800~=eeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800~<eeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~;eeQ$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800~:eeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800~9eeQ$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~8eeQ$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800~7eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY!yWhIsLsgNVGcnELrDS:localhost:8800~6eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM!yWhIsLsgNVGcnELrDS:localhost:8800~5eeQ$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800 ]@ x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@80( xph`XPH@xp                                                                            ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o n n m m l l k k j j i i h h g g f f e e d d c c b b a a ` ` _ _ ^ ^ ] ] \ \ [ [ Z Z Y Y X X W W V V U U T T S S R R Q Q P P O O N N M M L L K K J J I I H H G G F F E E D D C C B B A A @ @ ? ? > > = = < < ; ; : : 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 / / . . - - , , + + * * ) ) ( ( ' ' & & % % $ $ # # " " ! !                                                                                                                                                                                              ~ ~ } } | | { { z z y y x x w w v v u u t t s s r r q q p p o o                   #eQa$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3659}{"auth_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU", "$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "prev_events": ["$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ"], "type": "m.room.history_visibility", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043838156, "hashes": {"sha256": "Gy+UwQKHJwM+VyarVt5wxnWtMrB6N2KroLjZcnf1UWE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "k+Zl95hEgF40sCS9CxSOTi88Lvo0leJ6MWorBT19auUK8jh5Q2VU583DWGvu6dupPLqONXVTvPvBcHhNFGfACQ"}}, "unsigned": {"age_ts": 1570043838156}}t"eQau$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3658}{"auth_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU", "$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "prev_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU"], "type": "m.room.join_rules", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043837384, "hashes": {"sha256": "ClMOnZWRfK2EqanOl9Ve581Gk23X6GUAxn0MnG7ODmg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QO4V+TfB4ofpurbCDad/tW4spbpiSBzoutg1QAWEU8Tu3y9jKChLy1vBqD6m1PNDTrPLBRj/g40AEEiZx/QEBQ"}}, "unsigned": {"age_ts": 1570043837384}}k!eQac$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3657}{"auth_events": ["$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "prev_events": ["$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE"], "type": "m.room.power_levels", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"users": {"@anon-20191002_181700-712:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043836559, "hashes": {"sha256": "4X135wyauv7srXdAT6OtsGM5zCPYFs35FGQrLJCkvM0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "2rTufiFTVOmnxXYdc6fwjf6lyHVMzz85+IeXbax9vzvkYuL2IspOuJYQLe+QIpeIUz4tngQpT9naXjrYnodXCw"}}, "unsigned": {"age_ts": 1570043836559}}r eQaq$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 690, "stream_ordering": 3656}{"auth_events": ["$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU"], "prev_events": ["$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU"], "type": "m.room.member", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-712:localhost:8800", "content": {"membership": "join", "displayname": "SIQSTRPUPDLQEGIEGXYW", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-712:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043835966, "hashes": {"sha256": "LViBCYAOJCLPfzsCiLhTW+Vjxub4z7xcuWeRr7bL1iQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1O5N8CKBUl+ib27h/sFQ2N6E9UcWxqaBHOElDaXElGQTkY4YB3y9DzccDpFMumVQoiiaoiTRFInX4e2Jy1P6Cg"}}, "unsigned": {"age_ts": 1570043835966}}  j  Nt yo- 8 = e INvD C aweQ' $4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800m.room.createmveQ? $6T2r-cpbTswdaB7e58JxYfx_HUKCDzkaP1g_Aw5A2ro!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.history_visibilitymeQ? $8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibilityeeQ/ $bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rulesgeQ3 $_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels eQ']$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800joina eQ' $UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.createe eQ/ $5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rulesa~eQ' $Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU!TcCLuIBUrtFqghDgay:localhost:8800m.room.create }eQ']$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-711:localhost:8800joing|eQ3 $jItJJSdwX3IGNksYSdaDQ3dJmzGMdLD8sz3PZVgKiDg!yWhIsLsgNVGcnELrDS:localhost:8800m.room.guest_accessm{eQ? $pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.history_visibilitygyeQ3 $dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA!yWhIsLsgNVGcnELrDS:localhost:8800m.room.power_levels xeQ']$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800m.room.member@anon-20191002_181700-710:localhost:8800join#eueQ/ $klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.join_rulesgteQ3 $EFJqAsyL4V-CSx5QgEz0VUVrUg3FAO-PgEbF1lLfJfo!wCsDjKBtuUbrmZgjsB:localhost:8800m.room.power_levels eQ']$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800joinm eQ? $PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibilityeeQ/ $4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800m.room.join_rulesgeQ3 $12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800m.room.power_levels eQ']$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-714:localhost:8800joinaeQ' $wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800m.room.create eQ']$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-713:localhost:8800joinmeQ? $7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU!TcCLuIBUrtFqghDgay:localhost:8800m.room.history_visibilityeeQ/ $jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ!TcCLuIBUrtFqghDgay:localhost:8800m.room.join_rulesgeQ3 $QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU!TcCLuIBUrtFqghDgay:localhost:8800m.room.power_levels eQ']$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdE!TcCLuIBUrtFqghDgay:localhost:8800m.room.member@anon-20191002_181700-712:localhost:8800join  *p r'eQaq$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3663}{"auth_events": ["$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU"], "prev_events": ["$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU"], "type": "m.room.member", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"membership": "join", "displayname": "ZONDVATSKCZDRCJEXKOT", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-714:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043843828, "hashes": {"sha256": "qpAvPjU7IoElTyHPvMcLuW+Ww9WeFaCSRb0JL5fWP2I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Et3/vC9xSxMMu8COR8wLJhOegjMYEeInUTuZSqURiHjga0HVOObvW3ZiFgpL0nqaC6ydBnTyjDJvHwkUEVzVDA"}}, "unsigned": {"age_ts": 1570043843828}}i&eQa_$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3662}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-714:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043843032, "hashes": {"sha256": "65fzqKdTbNNMzcE0W6qATAlIU4MyVF5gIwKtE/1J3iY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IDfeps3RGsI/mqfaJ9PLLhhM2xw8vP1tNxsZhAzIjy8/rcW58spwuSKpWUqTk7i1rTHt3EZgdMp+8/ULKD16AA"}}, "unsigned": {"age_ts": 1570043843032}}6%eQay$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3661}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4"], "type": "m.room.join_rules", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"join_rule": "public"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043840344, "hashes": {"sha256": "cE+BhB911Y2XdhMHwMMqfDEDztEVmHHK9bhKjxrv55E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nHnfTvdzOB7zOkdQAGNg4pqfnItoukOofc+mz2jZ5yfySj9+EP/1tkwn4OpEPatX39VRtWvUG2gSRTnCVYMqDA"}}, "unsigned": {"age_ts": 1570043840344, "replaces_state": "$PklJXWh5S38dX7PASmOqEZ3xKqJjvsaD9Dj6SrVQ1NM"}}R$eQa1$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jE!TcCLuIBUrtFqghDgay:localhost:8800{"token_id": 691, "stream_ordering": 3660}{"auth_events": ["$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU", "$Uq1NXAbYMbgxWC_dmZyd-6uOYTKK_-XPGPkigrxOtPU", "$jKVlYEJj_q0WJl6CsbnzSOShipgOIw-9EQYewiTk8hQ"], "prev_events": ["$7c-EdO8tmbIm2hF8fZo_7Mxc2E9CPT_QHDgPIY4q0oU"], "type": "m.room.member", "room_id": "!TcCLuIBUrtFqghDgay:localhost:8800", "sender": "@anon-20191002_181700-713:localhost:8800", "content": {"membership": "join", "displayname": "KIPGYKTLFAKDJTVTRSGZ", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-713:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043839315, "hashes": {"sha256": "L2qpyLYv1YHrDwRhMVooeYTGJMDZNU5zUDUmH1MrcVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "twmtncZWwPM+XVqoqM35HJcHhmQq/e7GsuK1/mzx9mDBnt8K8HyT/VihEBWKt6xEFEY9o72F6pdirAdvdpPXCg"}}, "unsigned": {"age_ts": 1570043839315}} T $#$TL  0 702181700?20191002?71014567892018800=anon?hmvwdtifkrghqbgeghrhilzfeumgmnvxcrvudwrw localhost=miledciunxumwfeesqlvjnqeczfmfootutqhdemsppiulutunseumjvvwavxoispauoshvjcwenjuussmkelsyzzrioklqfsrhzondvatskczdrcjexkot{  f0 749181700F20191002F69870012468101238800CanonFblfzqhkywuxkfzzinkljdojgfuoivlogjfezfhhtkipgyktlfakdjtvtrsgz localhostCqbxfqkrqdwuajpnvzozdnsoxaxnrxgciewgqwkjsiqstrpupdlqegiegxywppiulutunseumjvvwavyxiieccuxajqbcofpuzn}  j0 4951817002201910022424555567868234590188800+anonJ localhostCm J0 479181700+20191002+424555012346778980128800%anonI localhostC\ (0 462181700$20191002$42455%678950167234568800anonH localhostC> n0 433181700$20191002$4012455356668970128800anonB localhost=k H0 478181700+20191002+35678942455663456788800%anonI localhostC8 61288c6 65628B 4 5032a! 2 5540a BOc0`- ` , \ ) Y & V # U "TQPQRPM2]@anon-20191002_181700-742:localhost:8800a1[@anon-20191002_181700-73:localhost:8800a4]@anon-20191002_181700-736:localhost:8800m2]@anon-20191002_181700-736:localhost:8800a4]@anon-20191002_181700-735:localhost:8800m 2]@anon-20191002_181700-735:localhost:8800a 4]@anon-20191002_181700-734:localhost:8800m 2]@anon-20191002_181700-734:localhost:8800a 2]@anon-20191002_181700-782:localhost:8800aD2]@anon-20191002_181700-781:localhost:8800aC3[@anon-20191002_181700-77:localhost:8800m1[@anon-20191002_181700-77:localhost:8800a2]@anon-20191002_181700-779:localhost:8800aB2]@anon-20191002_181700-777:localhost:8800aA2]@anon-20191002_181700-775:localhost:8800a@2]@anon-20191002_181700-774:localhost:8800a>2]@anon-20191002_181700-773:localhost:8800a?2]@anon-20191002_181700-772:localhost:8800a<2]@anon-20191002_181700-771:localhost:8800a=2]@anon-20191002_181700-770:localhost:8800a:2]@anon-20191002_181700-769:localhost:8800a;4]@anon-20191002_181700-768:localhost:8800m92]@anon-20191002_181700-768:localhost:8800a84]@anon-20191002_181700-767:localhost:8800m72]@anon-20191002_181700-767:localhost:8800a62]@anon-20191002_181700-766:localhost:8800a52]@anon-20191002_181700-764:localhost:8800a44]@anon-20191002_181700-763:localhost:8800m32]@anon-20191002_181700-763:localhost:8800a24]@anon-20191002_181700-762:localhost:8800m12]@anon-20191002_181700-762:localhost:8800a02]@anon-20191002_181700-761:localhost:8800a/2]@anon-20191002_181700-760:localhost:8800a-3[@anon-20191002_181700-75:localhost:8800m1[@anon-20191002_181700-75:localhost:8800a2]@anon-20191002_181700-759:localhost:8800a.4]@anon-20191002_181700-758:localhost:8800m,2]@anon-20191002_181700-758:localhost:8800a+4]@anon-20191002_181700-757:localhost:8800m*2]@anon-20191002_181700-757:localhost:8800a)2]@anon-20191002_181700-756:localhost:8800a(4]@anon-20191002_181700-755:localhost:8800m'2]@anon-20191002_181700-755:localhost:8800a$4]@anon-20191002_181700-754:localhost:8800m&2]@anon-20191002_181700-754:localhost:8800a%2]@anon-20191002_181700-753:localhost:8800a"4]@anon-20191002_181700-752:localhost:8800m#2]@anon-20191002_181700-752:localhost:8800a!4]@anon-20191002_181700-751:localhost:8800m 2]@anon-20191002_181700-751:localhost:8800a4]@anon-20191002_181700-750:localhost:8800m2]@anon-20191002_181700-750:localhost:8800a3[@anon-20191002_181700-74:localhost:8800m1[@anon-20191002_181700-74:localhost:8800a2]@anon-20191002_181700-749:localhost:8800a2]@anon-20191002_181700-748:localhost:8800a4]@anon-20191002_181700-747:localhost:8800m2]@anon-20191002_181700-747:localhost:8800a4]@anon-20191002_181700-746:localhost:8800m2]@anon-20191002_181700-746:localhost:8800a2]@anon-20191002_181700-745:localhost:8800a4]@anon-20191002_181700-744:localhost:8800m2]@anon-20191002_181700-744:localhost:8800a4]@anon-20191002_181700-743:localhost:8800m2]@anon-20191002_181700-743:localhost:8800a4]@anon-20191002_181700-742:localhost:8800m S :  ~ Q $ f9l? aX4, \ / |O"oBf9 zM  p C  g U(uHsF,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800+Q !kkgEEVUJynguTqAoWD:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800,Q!kwJgbtogEzCqYbUXfh:localhost:8800+Q !kwJgbtogEzCqYbUXfh:localhost:8800  ,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800+Q !kjueCKHmYaYefEEpQY:localhost:8800,Q!kOmCTyiizHqfCJdhlR:localhost:8800 [ [ ,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800,Q!lAGTcYIuMBXsVRGCOe:localhost:8800+Q !lAGTcYIuMBXsVRGCOe:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kxTDuIasPNpXtiRsif:localhost:8800*Q!kxTDuIasPNpXtiRsif:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!kjueCKHmYaYefEEpQY:localhost:8800 ,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800+Q !krhefVncoErkCtnvsy:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800,Q!kpTPWDZdBbbXKLonZK:localhost:8800+Q !kpTPWDZdBbbXKLonZK:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800,Q!kkgEEVUJynguTqAoWD:localhost:8800 1*,Q!kOmCTyiizHqfCJdhlR:localhost:8800 \ \*Q!kxTDuIasPNpXtiRsif:localhost:8800~~)Q !kxTDuIasPNpXtiRsif:localhost:8800}},Q!kwXxkGQFkaeenFTQJr:localhost:8800 ,Q!kwXxkGQFkaeenFTQJr:localhost:8800 ,Q!kwXxkGQFkaeenFTQJr:localhost:8800 ,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kjjUsMowsioSQRIJeg:localhost:8800 Q Q,Q!kjjUsMowsioSQRIJeg:localhost:8800 P P,Q!kjjUsMowsioSQRIJeg:localhost:8800 O O,Q!kjjUsMowsioSQRIJeg:localhost:8800 N N,Q!kjjUsMowsioSQRIJeg:localhost:8800 M M,Q!kjjUsMowsioSQRIJeg:localhost:8800 L L,Q!kjjUsMowsioSQRIJeg:localhost:8800 K K,Q!kjjUsMowsioSQRIJeg:localhost:8800 J J+Q !kjjUsMowsioSQRIJeg:localhost:8800 I IZ,Q!kOmCTyiizHqfCJdhlR:localhost:8800 ] ],Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kjueCKHmYaYefEEpQY:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800,Q!kwXxkGQFkaeenFTQJr:localhost:8800+Q !kwXxkGQFkaeenFTQJr:localhost:8800,Q!krhefVncoErkCtnvsy:localhost:8800 ,Q!krhefVncoErkCtnvsy:localhost:8800 P\ Z  l  v"20FP$fe/Q ]$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMom.room.join_rules!BKZJsoFNhiLTDYNclB:localhost:8800m6m7@anon-20191002_181700-720:localhost:8800&ee3Q ]$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSUm.room.power_levels!BKZJsoFNhiLTDYNclB:localhost:8800m2m3@anon-20191002_181700-720:localhost:8800 de'Q ]$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0m.room.member!BKZJsoFNhiLTDYNclB:localhost:8800m/m/@anon-20191002_181700-720:localhost:8800c e'Q  ]$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfkm.room.create!BKZJsoFNhiLTDYNclB:localhost:8800m+m,J@anon-20191002_181700-720:localhost:8800 be'Q ]$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgm.room.member!aiOswwhoZqjhcjzbzc:localhost:8800m!Gm!@anon-20191002_181700-719:localhost:8800 ae'Q ]$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760m.room.member!aiOswwhoZqjhcjzbzc:localhost:8800m1m@anon-20191002_181700-718:localhost:8800&`e3Q ]$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Nsm.room.guest_access!aiOswwhoZqjhcjzbzc:localhost:8800m@m@anon-20191002_181700-718:localhost:8800,_e?Q ]$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkm.room.history_visibility!aiOswwhoZqjhcjzbzc:localhost:8800mmr@anon-20191002_181700-718:localhost:8800$^e/Q ]$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAm.room.join_rules!aiOswwhoZqjhcjzbzc:localhost:8800m[m@anon-20191002_181700-718:localhost:8800&]e3Q ]$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_Am.room.power_levels!aiOswwhoZqjhcjzbzc:localhost:8800mm@anon-20191002_181700-718:localhost:8800 \e'Q ]$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wm.room.member!aiOswwhoZqjhcjzbzc:localhost:8800mm@anon-20191002_181700-718:localhost:8800[ e'Q  ]$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBsom.room.create!aiOswwhoZqjhcjzbzc:localhost:8800m hm @anon-20191002_181700-718:localhost:8800 Ze'Q ]$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsm.room.member!IYxUkyFHOgvhLpdkOA:localhost:8800mm@anon-20191002_181700-717:localhost:8800,Ye?Q ]$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8m.room.history_visibility!IYxUkyFHOgvhLpdkOA:localhost:8800mmg@anon-20191002_181700-716:localhost:8800$Xe/Q ]$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4m.room.join_rules!IYxUkyFHOgvhLpdkOA:localhost:8800mm@anon-20191002_181700-716:localhost:8800&We3Q ]$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIYm.room.power_levels!IYxUkyFHOgvhLpdkOA:localhost:8800m$m~@anon-20191002_181700-716:localhost:8800 Ve'Q ]$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3Im.room.member!IYxUkyFHOgvhLpdkOA:localhost:8800mPm@anon-20191002_181700-716:localhost:8800U e'Q  ]$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMm.room.create!IYxUkyFHOgvhLpdkOA:localhost:8800mm(@anon-20191002_181700-716:localhost:8800$Te/Q ] $5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYAm.room.join_rules!yWhIsLsgNVGcnELrDS:localhost:8800 m^m@anon-20191002_181700-710:localhost:8800 Se'Q ]$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6Im.room.member!anErKtXIsVKEEsrzWM:localhost:8800mm@anon-20191002_181700-715:localhost:8800,Re?Q ]$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0m.room.history_visibility!anErKtXIsVKEEsrzWM:localhost:8800m݈m@anon-20191002_181700-714:localhost:8800$Qe/Q ]$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAkm.room.join_rules!anErKtXIsVKEEsrzWM:localhost:8800m?mz@anon-20191002_181700-714:localhost:8800&Pe3Q ]$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSom.room.power_levels!anErKtXIsVKEEsrzWM:localhost:8800mQmy@anon-20191002_181700-714:localhost:8800 Oe'Q ]$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyom.room.member!anErKtXIsVKEEsrzWM:localhost:8800mml@anon-20191002_181700-714:localhost:8800  R+eQa1$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6I!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 693, "stream_ordering": 3667}{"auth_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo", "$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk"], "prev_events": ["$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0"], "type": "m.room.member", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-715:localhost:8800", "content": {"membership": "join", "displayname": "ILZFEUMGMNVXCRVUDWRW", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-715:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043847332, "hashes": {"sha256": "cJP5AtZlrcb/8A3D6Nnt9GDkpZRbCySM891Y5w6jRxU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rDpsJLmGHptfzuKszWUUrQ8NkWweWZP3NJl3ghIWQO+kq25l9PIBrow5ECH8PRv96tUReThdsIs+I1NL9sY7CA"}}, "unsigned": {"age_ts": 1570043847332}}*eQa$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3666}{"auth_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo", "$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "prev_events": ["$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk"], "type": "m.room.history_visibility", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043846024, "hashes": {"sha256": "57dfby7qMDN7r9ahrDo55NaKzWdSwHm8zdS7Mu7T1Zw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cmrD6CXBM9O92j+9XM0nyKubXxluNvFylSqHgjIWwG6ZGt3N0vDDBdO6QlqvA89BsYIpCbN8hcq+vzZRJ5l/Aw"}}, "unsigned": {"age_ts": 1570043846024}}t)eQau$4AqhKL-dP1Wfs7EE1je2ORSFChDH0C-J1KnUkvyRuAk!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3665}{"auth_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo", "$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "prev_events": ["$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo"], "type": "m.room.join_rules", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043845183, "hashes": {"sha256": "jFRPBjfo90Wzn+K9fxoAjkcQFTRUE5WTBPVNvsWIrhA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dw5p7UnHvfDaXLcv1+6NXLDb4ZwUmEVHtWwTHYjL0UltHFEyqOGkb6Ds72Jvo0dPqN++oW95LGzi+MPNgWh7Ag"}}, "unsigned": {"age_ts": 1570043845183}}k(eQac$12z-SjqsBcRd7VdPdmJwttELMM4COmfnWzm6Ak9KJSo!anErKtXIsVKEEsrzWM:localhost:8800{"token_id": 692, "stream_ordering": 3664}{"auth_events": ["$wDJJkvbXq2LFK6hDZNLXG5d9Qc2WCVumoaa8xgRFQHU", "$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "prev_events": ["$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyo"], "type": "m.room.power_levels", "room_id": "!anErKtXIsVKEEsrzWM:localhost:8800", "sender": "@anon-20191002_181700-714:localhost:8800", "content": {"users": {"@anon-20191002_181700-714:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043844433, "hashes": {"sha256": "Dxpk1/3bQsnm06+3ZhK333vybnVWJB1UVydG9Kg0Wlk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YjKf1zYp8XNvNhsCrKM2A72o7y/bmZVki5pa4MMdax8NnAl66N25ynggInYxb7GP85XacSBW2DQkHkjiPy5OAw"}}, "unsigned": {"age_ts": 1570043844433}}  4 k 9md]c@anon-20191002_181700-748:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgo127.0.0.1d]c@anon-20191002_181700-747:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwo127.0.0.1d]c@anon-20191002_181700-746:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-Ao127.0.0.1d]c@anon-20191002_181700-745:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6Pzrwo127.0.0.1d]c@anon-20191002_181700-744:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8Qo127.0.0.1d]c@anon-20191002_181700-743:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQo127.0.0.1d]c@anon-20191002_181700-742:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45Hwo127.0.0.1a[a@anon-20191002_181700-73:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZXo0K3pSeSN0MF9Pcm9DQgowMDJmc2lnbmF0dXJlIKZ9S98zm-0GlavKk2-tDhna-eFoI_owNFeD2IRdf1-8Cg127.0.0.1=d]c@anon-20191002_181700-736:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgo127.0.0.1d]c@anon-20191002_181700-735:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAo127.0.0.1d]c@anon-20191002_181700-734:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAo127.0.0.1 Me n  # , / QT14V&/WTMd0Q' eq!biBIcqnGelHvLnpkOu:localhost:8800m.room.create$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc/Q? eep!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g .Q']eo!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokp-Q? en!yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibility$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8h,Q/ em!yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rules$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYj+Q3 el!yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k *Q']ek!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8d)Q' ej!yNfCaBMPezurwkJRAX:localhost:8800m.room.create$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs(Q? eei!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk 'Q']eh!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4p&Q? eg!BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibility$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYh%Q/ ef!BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rules$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoj$Q3 ee!BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU #Q']ed!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0d"Q' ec!BKZJsoFNhiLTDYNclB:localhost:8800m.room.create$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk8!Q']eeb!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760 Q']ea!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760jQ3 e`!aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_access$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4NspQ? e_!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkhQ/ e^!aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rules$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAjQ3 e]!aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A Q']e\!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wdQ' e[!aiOswwhoZqjhcjzbzc:localhost:8800m.room.create$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso Q']eZ!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNspQ? eY!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibility$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8hQ/ eX!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rules$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4jQ3 eW!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY Q']eV!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-716:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IdQ' eU!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.create$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfMQ/ eeT!yWhIsLsgNVGcnELrDS:localhost:8800m.room.join_rules$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ Q']eS!anErKtXIsVKEEsrzWM:localhost:8800m.room.member@anon-20191002_181700-715:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IpQ? eR!anErKtXIsVKEEsrzWM:localhost:8800m.room.history_visibility$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 s E Xsk/eQac$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3671}{"auth_events": ["$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "prev_events": ["$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "type": "m.room.power_levels", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"users": {"@anon-20191002_181700-716:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043852836, "hashes": {"sha256": "x1ovo8suqXRL7ZcevzBoNZ1KXV72WVqOFtcSq308CqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JYMjnGq6h8bgfiiFEElhdf8pTooq8W66qcTXzEzVJVvk6Ex3kBXweO7IC5PMH3WQEQVfvV9r+VtaYAfS9CjjCw"}}, "unsigned": {"age_ts": 1570043852836}}r.eQaq$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3670}{"auth_events": ["$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM"], "prev_events": ["$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM"], "type": "m.room.member", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"membership": "join", "displayname": "MJNQECZFMFOOTUTQHDEM", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-716:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043852112, "hashes": {"sha256": "GhhBUz5ErSheUK9cAbaGbDhyXmoiK05p8Ri83bwkhyA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Oaql4wGzZmRCCboqlUmtl0UiHjHtrI9QQ7XiApgS8enXULceZBztaAOJKeTN8wtXaqYmDE8mBeF6fs9B177WAQ"}}, "unsigned": {"age_ts": 1570043852112}}i-eQa_$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3669}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-716:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043851224, "hashes": {"sha256": "OIoijFptXM5IpojmRV7D2rM8eRM/aaO4/kbpNwnC86U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "25F+C/0EIoTkCMp0ZDkBiS+mOVFu4VE0pwwTlTQt6vX8xnnBa9bh45eMyqJ+bJ9uSFJbGEjiwbise2c//NprDg"}}, "unsigned": {"age_ts": 1570043851224}}7,eQa{$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA!yWhIsLsgNVGcnELrDS:localhost:8800{"token_id": 688, "stream_ordering": 3668}{"auth_events": ["$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OA", "$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM", "$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0"], "prev_events": ["$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ"], "type": "m.room.join_rules", "room_id": "!yWhIsLsgNVGcnELrDS:localhost:8800", "sender": "@anon-20191002_181700-710:localhost:8800", "content": {"join_rule": "invite"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043848542, "hashes": {"sha256": "CqJtirukVoe1BU1KrSBmawWguZBE6jwZkoZIZWFqSY8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LGxNcoGvUsQOFnw2p3F8trEQGJZxmeXkQAE+QEWSCoffGLWh6GsWm6QcxfHlNI2NS+LZoCXEPzzHf4XU0JPlCw"}}, "unsigned": {"age_ts": 1570043848542, "replaces_state": "$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ"}} a} { y w u sqomkigeca~reeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~qeeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~peeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800~oeeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~neeQ$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~meeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~leeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~keeQ$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~jeeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~ieeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~heeQ$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~geeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~feeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~eeeQ$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~deeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~ceeQ$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~beeQ$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~aeeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800~`eeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~_eeQ$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800~^eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800~]eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~\eeQ$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800~[eeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800~ZeeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~YeeQ$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800~XeeQ$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I!IYxUkyFHOgvhLpdkOA:localhost:8800~WeeQ$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~VeeQ$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM!IYxUkyFHOgvhLpdkOA:localhost:8800~UeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0!yWhIsLsgNVGcnELrDS:localhost:8800~TeeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800 ?y K! 000000000 ?q  0 378018170022019100227913578312800+anon+stest localhost+T  0 710181700?20191002?72673012345678800729anon?eagtvmrmbzancbkypgobgshkmoxhvobriytdhtieilohrmoxohifuhdijranjkfbucgcehwwkasrvnah localhost=rjatoaiytixpibsxdzqdsiqeqjquxkkspcjkorznuxashyodwfcqeapttqysvbkuvyhgdoterlmjkiknL  0 702181700?20191002?71892234567898800=anon?rxgzcnjyixafeyvommseftsghshtsnxholbsbgxfzlmwkxflbfuarzowwmcgnplvpmszmjsvrmaeuvsjkfbucgcehwwkasrvnahslipxugqhacxickvtrl localhost=miledciunxumwfeesqlvyxanmqqxnldnmdaeawbap P 0 738181700G20191002G73742346750124578800C29anonGzzdhjbdyohrrtkdirlpbabsirrxcuhnifzhyfmbfkocvhirtcipswjbhvgojyngoismlxvdwpdrvncslibvracxdtfhbvraeyiuocalhostCqldsioxvctasbpkyrnhiwnmmsfhzobuaigukxedsrmN0 97181700201910028800astest localhost[ & 0 461181700@20191002@7578623788799188007anon@ localhost7 g i ih5 4 g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2Ao҂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAoڂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQo؂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQoׂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgoւ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1QoՂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQoԂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwoӂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQoт1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQo܂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAo g * T~=gg6]!c@anon-20191002_181700-727:localhost:8800NCKNSWYLRRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwog5]!c@anon-20191002_181700-725:localhost:8800PPTZJMVRMQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAog4]!c@anon-20191002_181700-724:localhost:8800LOLQJOGTTUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAog3]!c@anon-20191002_181700-723:localhost:8800JIVAFIIFHNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwog2]!c@anon-20191002_181700-722:localhost:8800IZTIXMADAYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAog1]!c@anon-20191002_181700-721:localhost:8800BHJHLJEYAGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAog0]!c@anon-20191002_181700-720:localhost:8800CJYSUKRSXNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAog/]!c@anon-20191002_181700-718:localhost:8800LCLSEHKRUGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFDaFB1bS5vcUt-cXFTc1AKMDAyZnNpZ25hdHVyZSBuUwjAdastvQZGSYHyizirOyLuiIQKBqJADs7r5j1Egwog.]!c@anon-20191002_181700-719:localhost:8800ERYCEGRJPTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdAVy5KOWssdCxtcVdyd3cKMDAyZnNpZ25hdHVyZSAgraxxc6q5U_7VMbu5yfxGyGqUF06nK-jKqT7xjrhzOgog-]!c@anon-20191002_181700-717:localhost:8800JZHRILWPLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZaYmY7VzoyaS5hT3UsRUsKMDAyZnNpZ25hdHVyZSCFQhHrZ-LTwiiiDge5GCVdrykrXQfkhmWf_Bbg0OR1Agog,]!c@anon-20191002_181700-716:localhost:8800ATBUACMSGRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4wOkx5ZmMuQitWbVU4LFoKMDAyZnNpZ25hdHVyZSCU0_9O6ALCEUu0OKMtSUgn0PKtFCpELylK1hj4uM_J9wo q ~|vq>Q]e!KxhGcTbEWmtgGNpdox:localhost:8800@anon-20191002_181700-103:localhost:8800$Wu1FFB0uHiESlyJEO1rOEo3rr41sUgfXK8PshJ_WL8Ainvite=Q]e!KxhGcTbEWmtgGNpdox:localhost:8800@anon-20191002_181700-102:localhost:8800$EkoKs09KDodwBYoKANmDln39x6GKGRcXtNZ8MqBXBWsjoin<Q]e!HmkcAMkMjWRhTDJMsy:localhost:8800@anon-20191002_181700-100:localhost:8800$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIleave;Q]e!HmkcAMkMjWRhTDJMsy:localhost:8800@anon-20191002_181700-101:localhost:8800$JdqdjxMGfMDNn5UUsOC4hxKVN0VGNr7I2toOK62MoDAleave:Q[e!OMkiVTuuOEeiFAXtUY:localhost:8800@anon-20191002_181700-99:localhost:8800$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUncleave9Q[e!BrssELMbasSzTFpIXm:localhost:8800@anon-20191002_181700-96:localhost:8800$hxJUtei1JVJd6Ayc5N9QEvhsied2oFZPBAqzgARUgPQleave8Q[e!BrssELMbasSzTFpIXm:localhost:8800@anon-20191002_181700-97:localhost:8800$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUleave~7Q[e!RmdhCjvouVLmyIHjaM:localhost:8800@anon-20191002_181700-95:localhost:8800$EmyFfVo-S5tZQXu8z_fxI5EZIkVmpmKjxsLu6L1HYxcjoin~6Q[e!EyEaTZElOkdURKbEXo:localhost:8800@anon-20191002_181700-93:localhost:8800$1rjSwOGc0KzWWKXQsOuIiY2DJvTJeLwOy5zhU4YqNPojoin5Q[e!TWETXUgfFZafDdbqLS:localhost:8800@anon-20191002_181700-90:localhost:8800$VUqWr4dwmZSSXIWQ4iD2qAeBuxH2jhRRL7DZ1bLGkQ0leave~4Q[e!TWETXUgfFZafDdbqLS:localhost:8800@anon-20191002_181700-91:localhost:8800$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK8join~3Q[e!HAFNBarGuVZuWCgwWM:localhost:8800@anon-20191002_181700-89:localhost:8800$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQjoin~2Q[e!duCKuavMBSfRbTFPsc:localhost:8800@anon-20191002_181700-87:localhost:8800$XcuhKpvitHdAECtLF6uVEgkx_fDrfJKG41ILqpcmkOYjoin~1Q[e!duCKuavMBSfRbTFPsc:localhost:8800@anon-20191002_181700-86:localhost:8800$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnMjoin~0Q[e!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-85:localhost:8800$5t_yHRFkpiexPc-djPKLmYXDs0A3OpVX3277tsrv6yojoin~/Q[e!TleKOyAElrpgyyrAQA:localhost:8800@anon-20191002_181700-84:localhost:8800$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRMjoin~.Q[e!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-83:localhost:8800$oUD6CIw4nqxflLJToEPWb7To89OSET8_2la__DukDDgjoin~-Q[e!IGVHKYcSuxzVPlFHlj:localhost:8800@anon-20191002_181700-82:localhost:8800$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgjoin~,Q[e!xhbvqJDfxMSsZPqvld:localhost:8800@anon-20191002_181700-81:localhost:8800$JaD5J7uyh4jyvS5cUXSGcWC7yoItKg4gG2uEQ0cXw8ojoin~+Q[e!OSHhtkGUjpUCkXwIhj:localhost:8800@anon-20191002_181700-79:localhost:8800$IOxbMnz_hMtl-w_Rx1Gy1D0z5dOJePEqjS1lIemDei4join~*Q[e!AWfbViAZparIjmDaVT:localhost:8800@anon-20191002_181700-77:localhost:8800$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqAjoin~)Q[e!wnriPzXkIMmdTNoJKU:localhost:8800@anon-20191002_181700-75:localhost:8800$7uCLiH23qZvlcyY1EDbw3OuzqdzQmeQaVxmFNyrdE9Ajoin~(Q[e!jfshVGNDxkvqPxFxWB:localhost:8800@anon-20191002_181700-74:localhost:8800$XCM9WU38tK0bDDvVcMrKvrdBjcpYXm5hkoWXOeOXYZMjoin~'Q[e!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-71:localhost:8800$12uzyhXd2Lk8jjpxU5nILqbVXcDMRQgy0kmrGoiMGqgjoin~&Q[e!OaCEdDAiatpwYcagUb:localhost:8800@anon-20191002_181700-70:localhost:8800$fJE2h1cFkpE6toCksXorHbreENtBtSegAPPEQmMviD4join~%Q[e!GGTWnzJfvPQBgQqDIE:localhost:8800@anon-20191002_181700-68:localhost:8800$DJBpgo3dXF3K4hDk11-NuGIhJPlYkji4NwxWkUpIhwkjoin~$Q[e!cosGKKhHvKaVukBCic:localhost:8800@anon-20191002_181700-67:localhost:8800$-vdbz5vzq7w6XC3oaa6cZaefl_qd6YHy534PI-AiRDMjoin~#Q[e!rZWweGEChkxxtzyfDB:localhost:8800@anon-20191002_181700-64:localhost:8800$0B5BMPZf4c7H3nL8vsmxicZ3GPVkFNvC26V6ouOYdDgjoin~"Q[e!rZWweGEChkxxtzyfDB:localhost:8800@anon-20191002_181700-65:localhost:8800$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitIjoin~!Q[e!uJtKGXTNdEnCPNOGDx:localhost:8800@anon-20191002_181700-63:localhost:8800$YVsuH4ts5C9_1kYH4Of7IhPYeBWyYnnvr_vFv8lsvrAjoin~ Q[e!vJQYmOxOBLwFKzYkNj:localhost:8800@anon-20191002_181700-62:localhost:8800$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbEjoin "i.1 @ n  z  GJY)WZi eQ']$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800aeQ' $iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create eQ']$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800meQ? $4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibilityeeQ/ $px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rulesgeQ3 $O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels eQ']$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800a eQ' $-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800m.room.createm eQ? $DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility eQ']$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800m eQ? $_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibilityeeQ/ $S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rulesgeQ3 $DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels eQ']$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800aeQ' $I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800m.room.createmeQ? $vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility eQ']$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800meQ? $F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibilityeeQ/ $nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rulesgeQ3 $gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels eQ']$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800a~eQ' $7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800m.room.create }eQ']$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800 |eQ']$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800g{eQ3 $RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_accessmzeQ? $3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibilityeyeQ/ $HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rulesgxeQ3 $tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels weQ']$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800aveQ' $Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800m.room.create ueQ']$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800mteQ? $8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibilityeseQ/ $bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rulesgreQ3 $_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.power_levels :F`2zLvHb4 | N h : T & n @  Z ,t-]@anon-20191002_181700-112:localhost:8800-]@anon-20191002_181700-112:localhost:8800v-]@anon-20191002_181700-112:localhost:8800l-]@anon-20191002_181700-112:localhost:8800c-]@anon-20191002_181700-112:localhost:8800Y-]@anon-20191002_181700-112:localhost:8800O-]@anon-20191002_181700-111:localhost:8829M-]@anon-20191002_181700-110:localhost:8800E-]@anon-20191002_181700-109:localhost:8800G-]@anon-20191002_181700-109:localhost:8800?-]@anon-20191002_181700-108:localhost:8800=-]@anon-20191002_181700-107:localhost:88009-]@anon-20191002_181700-106:localhost:88004-]@anon-20191002_181700-105:localhost:88292-]@anon-20191002_181700-104:localhost:8800,-]@anon-20191002_181700-103:localhost:8800*-]@anon-20191002_181700-150:localhost:8800-]@anon-20191002_181700-149:localhost:8800-]@anon-20191002_181700-148:localhost:8829-]@anon-20191002_181700-147:localhost:8829-]@anon-20191002_181700-146:localhost:8800-]@anon-20191002_181700-144:localhost:8800 -]@anon-20191002_181700-143:localhost:8800-]@anon-20191002_181700-142:localhost:8800-]@anon-20191002_181700-141:localhost:8800-]@anon-20191002_181700-140:localhost:8800-]@anon-20191002_181700-139:localhost:8829-]@anon-20191002_181700-138:localhost:8800-]@anon-20191002_181700-137:localhost:8800-]@anon-20191002_181700-136:localhost:8800-]@anon-20191002_181700-135:localhost:8800-]@anon-20191002_181700-134:localhost:8800-]@anon-20191002_181700-133:localhost:8800-]@anon-20191002_181700-132:localhost:8800-]@anon-20191002_181700-131:localhost:8800-]@anon-20191002_181700-130:localhost:8800-]@anon-20191002_181700-129:localhost:8800-]@anon-20191002_181700-128:localhost:8800-]@anon-20191002_181700-127:localhost:8800-]@anon-20191002_181700-126:localhost:8800-]@anon-20191002_181700-125:localhost:8800-]@anon-20191002_181700-124:localhost:8800-]@anon-20191002_181700-123:localhost:8800-]@anon-20191002_181700-120:localhost:8800-]@anon-20191002_181700-119:localhost:8800-]@anon-20191002_181700-118:localhost:8800-]@anon-20191002_181700-117:localhost:8800-]@anon-20191002_181700-116:localhost:8800-]@anon-20191002_181700-115:localhost:8800-]@anon-20191002_181700-114:localhost:8800-]@anon-20191002_181700-113:localhost:8800-]@anon-20191002_181700-113:localhost:8800-]@anon-20191002_181700-113:localhost:8800|-]@anon-20191002_181700-113:localhost:8800r-]@anon-20191002_181700-113:localhost:8800i-]@anon-20191002_181700-113:localhost:8800_-]@anon-20191002_181700-113:localhost:8800U-]@anon-20191002_181700-112:localhost:8800 !$/ 4 X ] h m */SR] uQ']e !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cctQ' e !NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg sQ']e !biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkorQ? e !biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibility$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980gqQ/ e !biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rules$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8ipQ3 e !biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q oQ']e !biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAcnQ' e !biBIcqnGelHvLnpkOu:localhost:8800m.room.create$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcomQ? e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 lQ']e !yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokokQ? e !yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibility$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8gjQ/ e !yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rules$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYiiQ3 e !yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k hQ']e !yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8cgQ' e !yNfCaBMPezurwkJRAX:localhost:8800m.room.create$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsofQ? e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g eQ']e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4odQ? e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibility$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYgcQ/ e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rules$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMoibQ3 e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU aQ']e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0c`Q' e !BKZJsoFNhiLTDYNclB:localhost:8800m.room.create$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk _Q']e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg ^Q']e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760i]Q3 e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_access$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Nso\Q? e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHkg[Q/ e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rules$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HAiZQ3 e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A YQ']e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wcXQ' e !aiOswwhoZqjhcjzbzc:localhost:8800m.room.create$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso WQ']e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsoVQ? e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.history_visibility$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8gUQ/ e !IYxUkyFHOgvhLpdkOA:localhost:8800m.room.join_rules$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4 < )<i3eQa_$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3675}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-718:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043858024, "hashes": {"sha256": "UMydgzeSBQuWHR40pU5F/nBMAvqfu5IaCVyuqapyAcA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DFHMHteUwkPeJR0bCA58doO7iptOILma0HcMLgxb8M2RQmmSm9Jum5/r1rCWt+hNPdZ27dwtFMA3ydsZsLubCA"}}, "unsigned": {"age_ts": 1570043858024}}R2eQa1$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 695, "stream_ordering": 3674}{"auth_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY", "$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4"], "prev_events": ["$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8"], "type": "m.room.member", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-717:localhost:8800", "content": {"membership": "join", "displayname": "HMVWDTIFKRGHQBGEGHRH", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-717:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043855748, "hashes": {"sha256": "GfHc9IHbXR8XKOq4t0BJiZaRziR2NKBMIzbCMUBpYwU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "IRq3q4J37wwmtWPRT2GcP4NFzYIUcqJn5gYAbIaZyArHA3tGTBFRVAu4dVnZ8bIOHZTuLO2Eb9fFqe8wuTSxBg"}}, "unsigned": {"age_ts": 1570043855748}}1eQa$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3673}{"auth_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY", "$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "prev_events": ["$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4"], "type": "m.room.history_visibility", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043854549, "hashes": {"sha256": "9uCM/hkYA49ufZPFfKo66QQU+f8Quh2oWdvS4ZKkA+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8AY2ZflOqUrhOzWyge6ivZTJbCYO0Pfuu6LGH7aerQd/AVRVfOR6XVPvgyu6G+yTS36GUtB90igxtJ+nMCtrDw"}}, "unsigned": {"age_ts": 1570043854549}}t0eQau$bjyt5uew8cYlDybXT9X-ZEL_QZsckxHqjue6VF5ktS4!IYxUkyFHOgvhLpdkOA:localhost:8800{"token_id": 694, "stream_ordering": 3672}{"auth_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY", "$UToYnAXaj9cJElO-QTMBpRuLzKDvDGd5MQKRoyDKHfM", "$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I"], "prev_events": ["$_CM0KMyAQb1HB7M3yQU21JPPGk34AxAgp8Fbg1x2eIY"], "type": "m.room.join_rules", "room_id": "!IYxUkyFHOgvhLpdkOA:localhost:8800", "sender": "@anon-20191002_181700-716:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043853742, "hashes": {"sha256": "CxEcRA1ntorz1yrAy9ZkCQwgzKgegl2ZbrITj2DGyGw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uK3pUmdBOx8lRNl+cOaEbyc4P8lE53KIGZfpY9A+MkgltnwHNnRaDVyAWxK5RT5/M7lP2LPuYsahKfLret+DCw"}}, "unsigned": {"age_ts": 1570043853742}} (0j8p> v D  | J  P  0 V $ \ *b1e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA1e$B5puCho2LrjWSCUfQ-8OCyMvgZNAnUMStW9E0f5pNkk 1e$B5mU_iHRStSvLYsV4FxamQey_OXzTDg-Nf62ubhZz6A -1e$B0jmgonNdfA5jPJdzBdcZmZUUUUVUObHax9YVuTDzvY 1e$AzE_wBcPMoaIj2KYhPaD7XSEDNbSeyk9aGTfM7k_ELkJ1e$AytACvcu90CfjTgqUIEH0XRnbUu3jp5HnqN5oG-JrVk1e$AvScLg3hc8r6qmvnuhKpnktzWIj7V-Kq8xEnOXuwsaE1e$AtEqRyDRMQZrrjUZXAyC3yFtNjsDyfQXGJL9bsUT01s1e$Aszsc4bXsKI5AU5D2jFw-8sOMz_4k-TPTfRzBoYvUAM1e$AryAUzz1fM7n20HFtVBl7beTz4RbH0cZzqzx0A9vOuQ K1e$Aou91R_uB5C3Qfnlizw59hb1PlzebEzqMYCJoaZ9Aas1e$AhyHP8SAVhoDWpWqwZut3nW1opNVg61kFjtPpC84DWk1e$Ah7SO9eD-0Gn9jJv2d4EaCDOtcHh3wqOBJWB1ZS5wqw1e$A_UFdbypfAZ_4QUE4ZlimC1JxlH7u9VcO2nAfGAxVNo 1e$A_6OlydPClkjoum0nRd5ksOk7xnhquBxoYCUUBMjb8c1e$AXkCr5-SFMl8buh8AkTv6KjrJgpbfc92eG3EuTm7TMY1e$AVH5xjO-w2J4-LzE2mzESqh4B9_NVjdX3Qj0y3kaYxQ/1e$ATBewJnP8VAHhUmfC54POEikq0As-rJnu99Mla8NgBY *1e$APaMx209BA5DiqEpAsagmRrtp-Qj-SILIZmYg1tTh301e$AORk72QoiLnc3p9pjBj5Yqee9i3PXbGF68D3TVHqlMM 1e$ALlXauMkBT9N61-KBMMihtM-JPVfBmB2F9E7_QVye2A v1e$AKw3e_nSkle_bme9NyH0ACnC57iuEHwqX523VW2DnC01e$AKE2eLOnCQt4wSTK-hBUx3TbDiMWgB3Zib6YqB8QNBI-1e$AI11UY3jpeE4oESgnQFF2o1crdMn1FtGNGr3vtwHY641e$AHQiJCP_8EqZ0uQfM1YecmE5RVbJDTi_Z43Oqtr7D0o 1e$AE-SOyqE3G0PxYlmripgA32NaZK9ueXF1K8PJPOtZZI*1e$ADRYgyTGV5xo54bQJwdqtIsqavENzxYd5M5d-QTHEqY 1e$ACNv__WdGUVdUAudinTSQnrkkCHqLtE7heUGncy5lmA1e$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8U 1e$A8axL9c9W7PBBCTJA+ug70g0w7CQaAZ7AXb6y5sMRtI 1e$A8_g5q-wh1N0YUc5MZkGdV3JvS3L1YX_kUw0x2NUjkM1e$A8XIMWK71uJNEGnvDOrE37UBYO_T4Sr0gELoleGwScM1e$A8MS0BTfA6khyWr_6XIGFYOQagBzTWk-LEq5OzhTDQk1e$A8HWOqLPugLUigdSGQoHwy8WgwaB6frcJtPfdMCuqIsn1e$A7nJEu_HA0UjmuqIg64yjLRy7xQJFaiPWFmgUsKtpV4 B1e$A5Sz9WoXPjq7L9qSp2USOYjOgIJc6n8gUE4tjadmU5w1e$A5F1VWflAAx5Jfjm9kj42gjmSxSI2-YIYkM45qGabGIK1e$A3vMxuY0Nkl34G0A7zemLDA7gOGrgpIJF1J35P1VKjU 61e$A3mTCEEn3YSj7rN8qWK60PdwGUgG4NZjC7_MFwCDcss1e$A3Y8WZpwWPqyct5bUix3kr2gi1e4he1WKK-6EpNs4Yo&  7eQa$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3679}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA"], "type": "m.room.history_visibility", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043860899, "hashes": {"sha256": "Q3Fk9kJXg+p2ZOT4q59BS+rMlW6ZId3aRkk0IRllxIk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zrrTovjLlzBDAuaQ3EU9TMIPBV/nVXIloBJ7ojKrin2ne2WPdnhIIH2+ecPQi04iAhpVtSHkFUhJr9yPFQXHDQ"}}, "unsigned": {"age_ts": 1570043860899}}t6eQau$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3678}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A"], "type": "m.room.join_rules", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043860059, "hashes": {"sha256": "OMdcsnQg1CGs6FuxQ57WmDgZG0pbNjbbtnbDzfTbYNc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kv7DMHKl5XwScx5cKnlQm9f3k88TM2GLXObeYc55vD8C8JpCK/8XVBHPtgU5//N4QVofhghHYUgqg4ZI7xvQDw"}}, "unsigned": {"age_ts": 1570043860059}}k5eQac$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3677}{"auth_events": ["$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "type": "m.room.power_levels", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"users": {"@anon-20191002_181700-718:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043859343, "hashes": {"sha256": "dWRFaQMOKnw7gxZaeC6lcIn5rtm8sGVUYo5/MJYzEQM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "snp35OFhlDoMNG+Mq7aEJ3vAbIAl830GVcuDpaElJiBSFZI7I5eLjlkMyW4AdtUx3EUuTcssTmixxXqUeKeNDg"}}, "unsigned": {"age_ts": 1570043859343}}v4eQay$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3676}{"auth_events": ["$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso"], "prev_events": ["$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso"], "type": "m.room.member", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-718", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-718:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043858703, "hashes": {"sha256": "9tKafBTpA+RBILInf4u5+UZU2J8dhP5mt/lLNcC0HX0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mxV3zt//tggvaJQ3wb4AHxgp0XdAa2gETpEAQCumLZwu0u06aOwQ2KsKV7rscawyrezf57N0bNxNlNT4RyqWCA"}}, "unsigned": {"age_ts": 1570043858703}} Vn/x-Z?lO4rO_B n Q 6  [ > # H +  X ; b K rW4w8l}]@%wj>'] m.room.member@anon-20191002_181700-712:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-711:localhost:8800 "?  8m.room.history_visibility /  7m.room.join_rules 3  6m.room.power_levels >'] 5m.room.member@anon-20191002_181700-732:localhost:8800 '  4m.room.create /  3m.room.join_rules >'] 2m.room.member@anon-20191002_181700-731:localhost:8800 "?  1m.room.history_visibility 3  /m.room.power_levels /  m.room.join_rules >'] m.room.member@anon-20191002_181700-715:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-714:localhost:8800 '  m.room.create /  m.room.join_rules >'] m.room.member@anon-20191002_181700-713:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-711:localhost:8800 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-710:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules /  0m.room.join_rules >'] .m.room.member@anon-20191002_181700-730:localhost:8800 '  -m.room.create "?  ,m.room.history_visibility /  +m.room.join_rules >'] *m.room.member@anon-20191002_181700-729:localhost:8800 "?  )m.room.history_visibility /  (m.room.join_rules 3  'm.room.power_levels >'] &m.room.member@anon-20191002_181700-728:localhost:8800 '  %m.room.create >'] $m.room.member@anon-20191002_181700-727:localhost:8800 >'] #m.room.member@anon-20191002_181700-727:localhost:8800 3  "m.room.guest_access "?  !m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-726:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-725:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-724:localhost:8800 '  m.room.create "?  m.room.history_visibility >'] m.room.member@anon-20191002_181700-723:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-722:localhost:8800 '  m.room.create "?  m.room.history_visibility >'] m.room.member@anon-20191002_181700-721:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-720:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-719:localhost:8800 >'] m.room.member@anon-20191002_181700-719:localhost:8800 3  m.room.guest_access "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-718:localhost:8800 '  m.room.create >'] m.room.member@anon-20191002_181700-717:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-716:localhost:8800 '  m.room.create  D:eQa$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 696, "stream_ordering": 3682}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA", "$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760"], "prev_events": ["$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760"], "type": "m.room.member", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-719:localhost:8800", "content": {"membership": "join", "displayname": "MILEDCIUNXUMWFEESQLV", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-719:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043863367, "hashes": {"sha256": "cyYjmSsYE1Td7txqtvDFk3yfZ9BWlGgO4qKYsQKF8iI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "buklPhPCx9se1MXD1Jh18R8iF/WUqdDC82mLHSymyExReqGU+ubT3I/uFukuh5qWN1if+djXCzZkVZxc/GL2AA"}}, "unsigned": {"age_ts": 1570043863367, "replaces_state": "$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760"}}9eQa/$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3681}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns"], "type": "m.room.member", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"membership": "invite", "displayname": "MILEDCIUNXUMWFEESQLV", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-719:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043862577, "hashes": {"sha256": "bQNqh9EwygvSDWM8vTcyMNpp6xW+BPRRqnvMtgbnq8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "C+d5io20iCD1NVpkSFx6n8O+4fn6fpcov0hElRS92Lg5d4iKY+qpHSpYy27agisMDOhuM4Hx4pzyiJMzdhFvAA"}}, "unsigned": {"age_ts": 1570043862577, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-718:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-718:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-718", "avatar_url": null}, "sender": "@anon-20191002_181700-718:localhost:8800"}]}}{8eQa$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3680}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk"], "type": "m.room.guest_access", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043861568, "hashes": {"sha256": "Z9dStzmVR58ozEwXvsitr7m52i5bYFbrycD2+deW7uo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "EpyY1mVxlyXZGtPzrHKhBp+GiEnjApVbYAY8pERMEAjo1OQ9qYrnN722E861m7xJHc5QFPeTw7kcJOJuRb2yAQ"}}, "unsigned": {"age_ts": 1570043861568}} F|t n f ^ VF NeeQ$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800 `eeQ$5bLpkWayGIv1-lDFB-P_9_s6IahQVvVkzdiOIo_0dyk$7qtx__R5a1_rEUSPt_yZ_TOa-v_Cn3vN7oaq4nRlMlk!bOSxzttDtclnrWnLov:localhost:8800eeQ$5b-569N1I-cDmvFiYfKGwhW8H_HG0--3Qex6Z7bo60Q$BuZgt4Cyutl9Vjiq4G11VgGl_qf4ljNnQ3aJu9yFISU!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$5VVZzEagIYLrqjlc1m5J5sy2BdxJonSAyWPy+xzpla8$hIE2VuyWoCq4h2y795Bg0e3kxZASWjmeOE2gGkLStnI!KIHYKMzkRDrJwiywwz:localhost:8800 FeeQ$5SvLH4XmnhJrJr-aQ9PBFGkzVrgF6K7K7R_B8FA21vU$J4zYdGOU96JKIlAnEggodtlnR92ZaN3zLK1iByV9SMY!WjlTCJVOFJkanCtkFE:localhost:8800weeQ$5S0ySgmd1rDeCuZv4snxEvElU9uQ7mb8uZzGs8H6PXw$UEQgoo9sU0Ho2G12hCCS63IPG5mLweyJpdOU0qyGUyk!eWRdwtyqHvuxZFvhNS:localhost:8800PeeQ$5RqXOan1iGDoTD1U0GDs00KjWLuMd25mvSGNreDuCzA$yuyYCVKk9SCXqUtVBk3emvUyuNdbSK5wJ6wEEduWHpk!CNFopUEQTFbzjmLvii:localhost:8800CeeQ$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$5R_DVkQRNlmSdwcUUy3m5_JHNCyKK9qJteGZb6u2wa0$CkHpwgL4_tYsqIRen-jG2xzIHuTP5nsEIm8NLPdA7ts!UMFUOnYRvwKwSPkYHB:localhost:8800eeQ$5PyKXpHCtB_3tRqcQ8rzRXrZbxARk5fpBDgIbT1i5B8$b50qngy2tcpNgbYhQRGBYnBpVgl69t0WJv1FmvTaBhs!HXfrGcvJCbRItyQLVE:localhost:8800eeQ$5PgrAHLTZ-ND6FTDu_wQmWcSFbIrvLr_VIUwQemYzOw$XcwATzvQ7HxOMFqfkvNefddoW92b_h7uF-0bc4LMIcM!jYzridjeihmwPBuwLb:localhost:8800LeeQ$5OHopmkgA4W8dG15VsKbXlsmNbHGcRJEvrRmIzAfxfE$1-T-LyBUaPWAkJl8oUph4CetkKKceouaYF9_OdJXls0!LaLcEGFLpjdlYlYKGC:localhost:8800eeQ$5LDw8eHDptdeKBZwk8qWqlGoDg7D7mlTGIMxlmEshx0$xi7BeIq1Czr4cP0wJxeY6bdG6QKj2eo1cwm52-LUkfw!DuqHkpTfWCUblSrxQj:localhost:8800 ^eeQ$5KOHfhm74VBBtym-RS-LmRCcqR4udi1mqtSaKZOs7No$S-OD2Tvfg0A8zkD11-zo6NoriQLiFKRc7pwEWhKNIUo!NajQnqYmGyTjxhFYar:localhost:88294eeQ$5JupHQme3_qCvtcZ42wIZMG7gKcRzx__drG26p2pkYA$WOASv40otUn3l80PrYwdcdgf98-1VCr70iycVUsjhAQ!yWhIsLsgNVGcnELrDS:localhost:8800 0|pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8, xl`TH<0 m4} m4| m4{ m4z m4y m4x m4w m4v m4u m4t m4s m4r m4q m4p m4o m4n m4m m4l m4k m4j m4i m4h m4g m4f m4e m4d m4c m4b m4a m4` m4_ m4^ m4] m4\ m4[ m4Z m4Y m4X m4W m4V m4U m4T m4S m4R m4Q m4P m4O m4N m4M m4L m4K m4J m4I m4H m4G m4F m4E m4D m4C m4B m4A m4@ m4? m4> m4= m4< m4; m4: m49 m48 m47 m46 m45 m44 m43 m42 m41 m40 m4/ m4. m4- m4, m4+ m4* m4) m4( m4' m4& m4% m4$ m4# m4" m4! m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 m4 a} { y w u sqomkigeca~eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800~ eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800~eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800~eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~eeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800~~eeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800~}eeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~|eeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800~{eeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800~zeeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~yeeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800~xeeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800~weeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~veeQ$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800~ueeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$4yXvwtExEeBwIkdB5HHgeDQcYkjwsiPikYOdNwMI760!aiOswwhoZqjhcjzbzc:localhost:8800~teeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800~seeQ$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800 /a,X% 7c.  U " W $ X % Y ' [ (l4]@anon-20191002_181700-720:localhost:8800m4}4]@anon-20191002_181700-719:localhost:8800m4|4]@anon-20191002_181700-718:localhost:8800m4{4]@anon-20191002_181700-717:localhost:8800m4z4]@anon-20191002_181700-716:localhost:8800m4y4]@anon-20191002_181700-715:localhost:8800m4x4]@anon-20191002_181700-714:localhost:8800m4w4]@anon-20191002_181700-713:localhost:8800m4v4]@anon-20191002_181700-712:localhost:8800m4u#=@spyglass:localhost:8800m4O1Y@anon-20191002_181700-9:localhost:8800m4N2[@anon-20191002_181700-99:localhost:8800m42[@anon-20191002_181700-97:localhost:8800m4~2[@anon-20191002_181700-96:localhost:8800m4}2[@anon-20191002_181700-95:localhost:8800m4M2[@anon-20191002_181700-93:localhost:8800m4L2[@anon-20191002_181700-91:localhost:8800m4K2[@anon-20191002_181700-90:localhost:8800m4J1Y@anon-20191002_181700-8:localhost:8800m4I2[@anon-20191002_181700-89:localhost:8800m4H2[@anon-20191002_181700-88:localhost:8800m4G2[@anon-20191002_181700-87:localhost:8800m4F2[@anon-20191002_181700-86:localhost:8800m4E2[@anon-20191002_181700-85:localhost:8800m4D2[@anon-20191002_181700-84:localhost:8800m4C2[@anon-20191002_181700-83:localhost:8800m4B2[@anon-20191002_181700-82:localhost:8800m4A2[@anon-20191002_181700-81:localhost:8800m4@2[@anon-20191002_181700-80:localhost:8800m4?1Y@anon-20191002_181700-7:localhost:8800m4>2[@anon-20191002_181700-79:localhost:8800m4=2[@anon-20191002_181700-77:localhost:8800m4<2[@anon-20191002_181700-75:localhost:8800m4;2[@anon-20191002_181700-74:localhost:8800m4:2[@anon-20191002_181700-73:localhost:8800m492[@anon-20191002_181700-71:localhost:8800m484]@anon-20191002_181700-711:localhost:8800m4t4]@anon-20191002_181700-710:localhost:8800m4s2[@anon-20191002_181700-70:localhost:8800m474]@anon-20191002_181700-709:localhost:8800m4r4]@anon-20191002_181700-708:localhost:8800m4q4]@anon-20191002_181700-707:localhost:8800m4p4]@anon-20191002_181700-706:localhost:8800m4o4]@anon-20191002_181700-705:localhost:8800m4n4]@anon-20191002_181700-704:localhost:8800m4m4]@anon-20191002_181700-703:localhost:8800m4l4]@anon-20191002_181700-702:localhost:8800m4k CG <}]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXNm4<|]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPTm4<{]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUGm4eQau$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3686}{"auth_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU", "$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "prev_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU"], "type": "m.room.join_rules", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043868692, "hashes": {"sha256": "Dq64nP5Lbfl10nVJZE7S9y2rLZZFZc1EpQB/exXSiiw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SffomGiQXQh4LcF7PHuejVhnkjZgdbCTQiKync9ubre3XOnN53eJpDkbOBOGQtAMOVcb9IDXRgxZBpsIPppiAg"}}, "unsigned": {"age_ts": 1570043868692}}k=eQac$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3685}{"auth_events": ["$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "prev_events": ["$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "type": "m.room.power_levels", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"users": {"@anon-20191002_181700-720:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043867679, "hashes": {"sha256": "HYXAx8EelVyOnNq8KJW4fhJFigf2UbzXr5QjqLI5w70"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9yyBPPrhQ0gezryKbM0JYQBnVNYlpfggkBef8cpGsZc4/xyheJ1F424T4Rvwi5VnTbkJh4Rfn5ushPJsMGN+Ag"}}, "unsigned": {"age_ts": 1570043867679}}r<eQaq$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3684}{"auth_events": ["$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk"], "prev_events": ["$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk"], "type": "m.room.member", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"membership": "join", "displayname": "XSMKELSYZZRIOKLQFSRH", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-720:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043866895, "hashes": {"sha256": "0BptawWeJ7dcezbOA99GECXqRLa74ZjAhge79KkNdg8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dgAOz36t3f0zsTofVDJoyMdUWSWRTWwlAIZhSBYMUdFFJFJLto/QVlkkJZJ6ZQZG1LvkW3wDLMDLWanL3c6MAg"}}, "unsigned": {"age_ts": 1570043866895}}i;eQa_$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3683}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-720:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043866099, "hashes": {"sha256": "ZS+EslLqzLcoFNOzvhbdiVVujmKarqi3tsdZjipTeJ4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZuLJDg3dTUQuY+iKfalYWL8td0gu2YD2xtUCVcpDzJai3uTUa5RDWiwRPjLcMcVht0fE6G0wv9bwa/FjybRUCg"}}, "unsigned": {"age_ts": 1570043866099}} 0`8pH X 0  h @  x P ( ` 8  p H 'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DuqHkpTfWCUblSrxQj:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DqxFmsXPclgGqpSwdy:localhost:8800 'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DoiZErAdypBUMZKaeJ:localhost:8800'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DnUHoxreGexNmjSVpq:localhost:8800S'Q!DnUHoxreGexNmjSVpq:localhost:8800R'Q!DnUHoxreGexNmjSVpq:localhost:8800Q'Q!DnUHoxreGexNmjSVpq:localhost:8800P'Q!DnUHoxreGexNmjSVpq:localhost:8800O'Q!DnUHoxreGexNmjSVpq:localhost:8800N Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1We$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I V1Ve$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk U1Ue$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0 T1Te$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0 S1Se$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 R1Re$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo Q1Qe$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ P1Pe$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego O1Oe$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o N1Ne$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0 M1Me$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y L1Le$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 K1Ke$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU J1Je$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg I1Ie$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 H1He$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 F1Ge$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY E1Fe$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c D1Ee$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ C1De$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc B1Ce$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU A1Be$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 @1Ae$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog ?1@e$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA >1?e$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras =1>e$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI <1=e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE ;1<e$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90 :1;e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E 91:e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 819e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ 718e$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo 617e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8 516e$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8 415e$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90 314e$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA 213e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM 112e$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0 011e$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 /10e$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc .1/e$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo -1.e$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM ,1-e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU +1,e$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8 *1+e$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0 )1*e$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY (1)e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 '1(e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 &1'e$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs %1&e$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM $1%e$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI #1$e$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA "1#e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w !1"e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg 1!e$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 1 e$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c 1e$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 1e$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk 1e$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980 1e$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8 1e$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1e$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA 1e$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc 1e$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0 1e$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok 1e$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8 1e$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY 1e$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k 1e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8 1e$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs 1e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 1e$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY 1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1 e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU ~z v r n j fb^ZVRNJFeeQ$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800~eeQ$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800}eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800|eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800{eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800zeeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800yeeQ$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800xeeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800weeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800veeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800ueeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800teeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800seeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800reeQ$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800qeeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800peeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800oeeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800neeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800meeQ$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800leeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800keeQ$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800jeeQ$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800ieeQ$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800heeQ$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800geeQ$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800feeQ$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800eeeQ$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800deeQ$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800ceeQ$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800beeQ$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800  O p u .- e j  INvDOOOa4eQ' $IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800m.room.create 3eQ']$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800joing2eQ3 $bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_accessg/eQ3 $yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels .eQ']$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800joina-eQ' $iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create ,eQ']$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800joinm+eQ? $4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibilitye*eQ/ $px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rulesg)eQ3 $O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels (eQ']$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800joina'eQ' $-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800m.room.createm&eQ? $DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800m.room.history_visibility eQ']$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-720:localhost:8800joinaeQ' $7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk!BKZJsoFNhiLTDYNclB:localhost:8800m.room.create eQ']$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-719:localhost:8800joingeQ3 $RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns!aiOswwhoZqjhcjzbzc:localhost:8800m.room.guest_accesseeQ/ $HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA!aiOswwhoZqjhcjzbzc:localhost:8800m.room.join_rulesgeQ3 $tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A!aiOswwhoZqjhcjzbzc:localhost:8800m.room.power_levels eQ']$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800m.room.member@anon-20191002_181700-718:localhost:8800join eQ']$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNs!IYxUkyFHOgvhLpdkOA:localhost:8800m.room.member@anon-20191002_181700-717:localhost:8800join %eQ']$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-723:localhost:8800joinm$eQ? $_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800m.room.history_visibilitye#eQ/ $S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800m.room.join_rulesg"eQ3 $DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800m.room.power_levels !eQ']$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800m.room.member@anon-20191002_181700-722:localhost:8800joina eQ' $I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800m.room.createaeQ' $Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800m.room.create eQ']$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800m.room.member@anon-20191002_181700-721:localhost:8800joinmeQ? $F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800m.room.history_visibilityeeQ/ $nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo!BKZJsoFNhiLTDYNclB:localhost:8800m.room.join_rulesgeQ3 $gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU!BKZJsoFNhiLTDYNclB:localhost:8800m.room.power_levels  wiBeQa_$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3690}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-722:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043874660, "hashes": {"sha256": "mO3PtNAkRO4ClQbj9aGRy5+tYSZQqoyMKFn5SnL7egE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z6rHmG5lfjCiryGaQtHn3gKhdF7/js3A1JvuIXp8YI/hEHeebixkCzU8mQSAUhihXOki5sASF8RK7agOmdV0Cw"}}, "unsigned": {"age_ts": 1570043874660}}OAeQa+$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3689}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQg"], "type": "m.room.history_visibility", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043871869, "hashes": {"sha256": "Nm4wyaU8LdBmET6xNKq+Cf7hzMVrJZWYI6Ea4BpOPhc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8pS0mt8dCn/yamZwARhvO5Chfs3KcskV2Ye/5TRSdoCEombtPfsQCAvKXms7b7+wvV/pajfYJNm+4rvkAVJoCA"}}, "unsigned": {"age_ts": 1570043871869, "replaces_state": "$3LjLHZtw6LGXvmW2xZjeumzqGBOKU7Zr4narL2glHHk"}}R@eQa1$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 699, "stream_ordering": 3688}{"auth_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU", "$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo"], "prev_events": ["$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY"], "type": "m.room.member", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-721:localhost:8800", "content": {"membership": "join", "displayname": "XOISPAUOSHVJCWENJUUS", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-721:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043870822, "hashes": {"sha256": "ivUjPlivrOPEkOBvo2r1VjqekE55VUWvWOiXs3I48sc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gMLF4Wy9E/GiDNPTKIDMYKXhg0PCRqn2jLC5BnuUbBe1PiKN9J5k6POFZZW4IGHTmzxJhpkXymaoTrXP6Zh8Dg"}}, "unsigned": {"age_ts": 1570043870822}}?eQa$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LY!BKZJsoFNhiLTDYNclB:localhost:8800{"token_id": 698, "stream_ordering": 3687}{"auth_events": ["$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU", "$7sOGto3ejjp4peXcLKeytjyTUExeKhCKub3jKWQVQfk", "$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0"], "prev_events": ["$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo"], "type": "m.room.history_visibility", "room_id": "!BKZJsoFNhiLTDYNclB:localhost:8800", "sender": "@anon-20191002_181700-720:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043869509, "hashes": {"sha256": "LZkl/WbbAyi71dErzjM+XceIJYivO/EgHrujvUtTMNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "UjQ/LsFj8aNefyWzxPMEGtGHPuMXXOoR7WRQzgk/1DjyChgGCILgklCb/Wz35mtCTvrQtEWQaH6Rcq3MbFgpDw"}}, "unsigned": {"age_ts": 1570043869509}} :P Z d  `pt.,: ~e'Q ]$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMm.room.member!NcJYmIbgjsaKJOzBcs:localhost:8800m8m蟵@anon-20191002_181700-727:localhost:8800 }e'Q ]$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIm.room.member!NcJYmIbgjsaKJOzBcs:localhost:8800mum@anon-20191002_181700-726:localhost:8800&|e3Q ]$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAm.room.guest_access!NcJYmIbgjsaKJOzBcs:localhost:8800mm@anon-20191002_181700-726:localhost:8800,{e?Q ]$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wm.room.history_visibility!NcJYmIbgjsaKJOzBcs:localhost:8800mm@anon-20191002_181700-726:localhost:8800$ze/Q ]$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegm.room.join_rules!NcJYmIbgjsaKJOzBcs:localhost:8800mm@anon-20191002_181700-726:localhost:8800&ye3Q ]$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUm.room.power_levels!NcJYmIbgjsaKJOzBcs:localhost:8800m荪m@anon-20191002_181700-726:localhost:8800 xe'Q ]$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cm.room.member!NcJYmIbgjsaKJOzBcs:localhost:8800msms@anon-20191002_181700-726:localhost:8800w e'Q  ]$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgm.room.create!NcJYmIbgjsaKJOzBcs:localhost:8800mEm臡@anon-20191002_181700-726:localhost:8800 ve'Q ]$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkm.room.member!biBIcqnGelHvLnpkOu:localhost:8800m~m @anon-20191002_181700-725:localhost:8800,ue?Q ]$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980m.room.history_visibility!biBIcqnGelHvLnpkOu:localhost:8800mz m|@anon-20191002_181700-724:localhost:8800$te/Q ]$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8m.room.join_rules!biBIcqnGelHvLnpkOu:localhost:8800mvmxH@anon-20191002_181700-724:localhost:8800&se3Q ]$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qm.room.power_levels!biBIcqnGelHvLnpkOu:localhost:8800msmt@anon-20191002_181700-724:localhost:8800 re'Q ]$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAm.room.member!biBIcqnGelHvLnpkOu:localhost:8800mpmq[@anon-20191002_181700-724:localhost:8800q e'Q  ]$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcm.room.create!biBIcqnGelHvLnpkOu:localhost:8800mmmnE@anon-20191002_181700-724:localhost:8800,pe?Q ] $DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0m.room.history_visibility!aiOswwhoZqjhcjzbzc:localhost:8800 mcmc@anon-20191002_181700-718:localhost:8800 oe'Q ]$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokm.room.member!yNfCaBMPezurwkJRAX:localhost:8800m_'m_@anon-20191002_181700-723:localhost:8800,ne?Q ]$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8m.room.history_visibility!yNfCaBMPezurwkJRAX:localhost:8800mZm\+@anon-20191002_181700-722:localhost:8800$me/Q ]$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYm.room.join_rules!yNfCaBMPezurwkJRAX:localhost:8800mWmX@anon-20191002_181700-722:localhost:8800&le3Q ]$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48km.room.power_levels!yNfCaBMPezurwkJRAX:localhost:8800mTmV @anon-20191002_181700-722:localhost:8800 ke'Q ]$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8m.room.member!yNfCaBMPezurwkJRAX:localhost:8800mQOmQ@anon-20191002_181700-722:localhost:8800j e'Q  ]$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsm.room.create!yNfCaBMPezurwkJRAX:localhost:8800mMdmM@anon-20191002_181700-722:localhost:8800,ie?Q ] $vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gm.room.history_visibility!aiOswwhoZqjhcjzbzc:localhost:8800 mB}mB@anon-20191002_181700-718:localhost:8800 he'Q ]$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4m.room.member!BKZJsoFNhiLTDYNclB:localhost:8800m>fm>@anon-20191002_181700-721:localhost:8800,ge?Q ]$F-uwAnV0_4ud6mKdwb05KZu1boYMQJ-ql8uT0ShM3LYm.room.history_visibility!BKZJsoFNhiLTDYNclB:localhost:8800m9Em; @anon-20191002_181700-720:localhost:8800  4 h m9d]c@anon-20191002_181700-759:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwo127.0.0.1d]c@anon-20191002_181700-757:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAo127.0.0.1d]c@anon-20191002_181700-755:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQo127.0.0.1d]c@anon-20191002_181700-756:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwo127.0.0.1d]c@anon-20191002_181700-758:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQo127.0.0.1a[a@anon-20191002_181700-75:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZy0sdzB3UC5lJkAwakN1IwowMDJmc2lnbmF0dXJlIPlfADfQTKJlg1BL2EN_h4L5K2l8lY_fnTrbroYaciKjCg127.0.0.1?d]c@anon-20191002_181700-754:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAo127.0.0.1d]c@anon-20191002_181700-753:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQo127.0.0.1d]c@anon-20191002_181700-752:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQo127.0.0.1d]c@anon-20191002_181700-751:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAo127.0.0.1d]c@anon-20191002_181700-750:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAo127.0.0.1 8l D `8(]c!E@anon-20191002_181700-730:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAoBGYKRDCYIR127.0.0.1Perl + Net::Async::HTTP/0.44m']c!E@anon-20191002_181700-729:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQoDNPGOQMGAF127.0.0.1Perl + Net::Async::HTTP/0.44m觏&]c!E@anon-20191002_181700-728:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAoKLYTBBZKRQ127.0.0.1Perl + Net::Async::HTTP/0.44mʃ%]c!E@anon-20191002_181700-726:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowoDOLLBVDDIP127.0.0.1Perl + Net::Async::HTTP/0.44m$]c!E@anon-20191002_181700-727:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwoNCKNSWYLRR127.0.0.1Perl + Net::Async::HTTP/0.44m膗#]c!E@anon-20191002_181700-725:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAoPPTZJMVRMQ127.0.0.1Perl + Net::Async::HTTP/0.44mmG"]c!E@anon-20191002_181700-724:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAoLOLQJOGTTU127.0.0.1Perl + Net::Async::HTTP/0.44mk!]c!E@anon-20191002_181700-723:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwoJIVAFIIFHN127.0.0.1Perl + Net::Async::HTTP/0.44mLʃ ]c!E@anon-20191002_181700-722:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAoIZTIXMADAY127.0.0.1Perl + Net::Async::HTTP/0.44mJg]c!E@anon-20191002_181700-721:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAoBHJHLJEYAG127.0.0.1Perl + Net::Async::HTTP/0.44m+6 -RM H C > 9 4/*|%w rmhc TQe!NcJYmIbgjsaKJOzBcs:localhost:8800$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90TQe!BPNyKqmwcpGxIbGFZG:localhost:8800$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1ETQe!BPNyKqmwcpGxIbGFZG:localhost:8800$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4TQe!BPNyKqmwcpGxIbGFZG:localhost:8800$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQTQe!BPNyKqmwcpGxIbGFZG:localhost:8800$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXoTQe!BPNyKqmwcpGxIbGFZG:localhost:8800$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8TQe!BPNyKqmwcpGxIbGFZG:localhost:8800$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8TQe!NcJYmIbgjsaKJOzBcs:localhost:8800$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90T~Qe!ZOwibbprUCQrSJQCrx:localhost:8800$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAT}Qe!ZOwibbprUCQrSJQCrx:localhost:8800$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMT|Qe!ZOwibbprUCQrSJQCrx:localhost:8800$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0T{Qe!ZOwibbprUCQrSJQCrx:localhost:8800$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0TzQe!ZOwibbprUCQrSJQCrx:localhost:8800$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScTyQe!ZOwibbprUCQrSJQCrx:localhost:8800$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCoTxQe!NcJYmIbgjsaKJOzBcs:localhost:8800$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMTwQe!NcJYmIbgjsaKJOzBcs:localhost:8800$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUTvQe!qtelAHlSkrqEFmlCqS:localhost:8800$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8TuQe!qtelAHlSkrqEFmlCqS:localhost:8800$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0TtQe!qtelAHlSkrqEFmlCqS:localhost:8800$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYTsQe!qtelAHlSkrqEFmlCqS:localhost:8800$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4TrQe!qtelAHlSkrqEFmlCqS:localhost:8800$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00TqQe!qtelAHlSkrqEFmlCqS:localhost:8800$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsTpQe~!NcJYmIbgjsaKJOzBcs:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMToQe}!NcJYmIbgjsaKJOzBcs:localhost:8800$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PITnQe|!NcJYmIbgjsaKJOzBcs:localhost:8800$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSATmQe{!NcJYmIbgjsaKJOzBcs:localhost:8800$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wTlQez!NcJYmIbgjsaKJOzBcs:localhost:8800$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegTkQey!NcJYmIbgjsaKJOzBcs:localhost:8800$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUTjQex!NcJYmIbgjsaKJOzBcs:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cTiQew!NcJYmIbgjsaKJOzBcs:localhost:8800$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgThQev!biBIcqnGelHvLnpkOu:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkTgQeu!biBIcqnGelHvLnpkOu:localhost:8800$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980TfQet!biBIcqnGelHvLnpkOu:localhost:8800$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8TeQes!biBIcqnGelHvLnpkOu:localhost:8800$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49QTdQer!biBIcqnGelHvLnpkOu:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNATcQeq!biBIcqnGelHvLnpkOu:localhost:8800$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcTbQep!aiOswwhoZqjhcjzbzc:localhost:8800$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0TaQeo!yNfCaBMPezurwkJRAX:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokT`Qen!yNfCaBMPezurwkJRAX:localhost:8800$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8T_Qem!yNfCaBMPezurwkJRAX:localhost:8800$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fYT^Qel!yNfCaBMPezurwkJRAX:localhost:8800$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48kT]Qek!yNfCaBMPezurwkJRAX:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8T\Qej!yNfCaBMPezurwkJRAX:localhost:8800$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhsT[Qei!aiOswwhoZqjhcjzbzc:localhost:8800$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3gTZQeh!BKZJsoFNhiLTDYNclB:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4 ,NC 8 - { " p  e ZOD9.|#qf VkeL$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogsha256Ί` UouEܫى!'`VjeL$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAsha256Svبµ\uSGpὃiÐpVieL$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurassha256ܜid5 *Xю9 1< ,VheL$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIsha256T}'a 06Q_sVgeL$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEsha256vX8BGzA"cVfeL$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90sha256vn ]FSN!żd_R~VeeL$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Esha256?qM~CQm-mr,_BQVdeL$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4sha256{v ض.7G/c5XSlU ~ھVceL$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQsha256R ||y21uroϚ1oiVbeL$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXosha256Ti[dwq SVszVaeL$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8sha256;DZ Uՠ~TXrאJWS_V`eL$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8sha256aK eNGFG\݆SV_eL$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90sha256rMb ]dL?H1gZ;[CV^eL$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAsha256;2N ls]iEV]eL$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMsha256ևTk-7fq?f5bV\eL$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0sha256e` BO G&]H6J3c-V[eL$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0sha256J2Gu.(:۝ Mm=VZeL$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScsha256]ŷ"2pzEe>7Ty) 'VYeL$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCosha256Os2RT+!jBaDI~(:*VXeL$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMsha256lj gƚ2%/D! ;VWeL$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUsha256xe Pz GB>aJ+=:VVeL$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8sha256 A kH);Vu =uʘ VUeL$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0sha256*~)u[@,A2vA G/)VTeL$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYsha256).;f C8gycŒzʹgVSeL$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4sha256*l.yyvVm`ST֨&'VReL$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00sha256!"xkSRE}wߺpsMVQeL$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKssha256 FXMfzv=;EP3*xVPeL$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMsha256"&6Ea! Luq%+VOeL$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIsha256\KDafO2W VNeL$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAsha256npWj`e ڷ\OT VMeL$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wsha256D/YO!*rl LXMB+VLeL$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegsha256|z n .AA‰pqVKeL$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hUsha256˾O/+_#cyD1pVJeL$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8csha256b'-9 ,K,.Mx#VIeL$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSgsha256.c#y0dk`WﱖkMZ.e(VHeL$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urksha256O);.*2i"1;.5VGeL$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980sha256ᥛonΖ磏'9wçcVFeL$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8sha256u$U~XƋ}ʷVEeL$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Qsha256;~Xh@݈ tN}ūámVDeL$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAsha2566bOJ)~t&"?sm cčaVCeL$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCcsha256A |2~˵'XSI BVf'VBeL$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0sha256 #ģÔKBz> MzRu;&u`VAeL$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNoksha256s{r- ,3PI12f6V@eL$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8sha256Xh,W R%#EAX]1)^/ 0`8pH X 0  h B  | T ,  d <  t L $'Q$1570042698202juBqr:localhost:8800'Q$1570042698201kDowV:localhost:8800'Q$1570042697200mrENr:localhost:8800'Q$1570042697199ROUNP:localhost:8800'Q$1570042696198qbnxj:localhost:8800'Q$1570042695197vezoL:localhost:8800'Q$1570042694196OHsWc:localhost:8800'Q$1570042693195hNKnU:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042691192yNWVM:localhost:8800'Q$1570042690191yQfnl:localhost:8800'Q$1570042689190UkvMv:localhost:8800'Q$1570042688189axPjv:localhost:8800'Q$1570042687188ddQmS:localhost:8800'Q$1570042687187gbArC:localhost:8800'Q$1570042686186Qxqmn:localhost:8800'Q$1570042685185RhcXe:localhost:8800'Q$1570042682183iUUXF:localhost:8800'Q$1570042681182ZiRRU:localhost:8800'Q$1570042680181TFyrx:localhost:8800'Q$1570042680180uuIxG:localhost:8800'Q$1570042679179ZJCqE:localhost:8800'Q$1570042678178HSUoI:localhost:8800%M$15700426764DoRhm:localhost:8829%M$15700426753WBESe:localhost:8829'Q$1570042675176WKRiz:localhost:8800'Q$1570042674175gurnU:localhost:8800'Q$1570042673174OxGuP:localhost:8800'Q$1570042672173XsxsH:localhost:8800'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800'Q$1570042670170TtDpX:localhost:8800'Q$1570042668168uCbYK:localhost:8800'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042663162sQrEh:localhost:8800'Q$1570042662160SrmtM:localhost:8800'Q$1570042661159xQwJK:localhost:8800'Q$1570042661158igwHF:localhost:8800'Q$1570042660157svDcU:localhost:8800'Q$1570042660156wxhvl:localhost:8800'Q$1570042659155mEUeP:localhost:8800'Q$1570042659154Fztdf:localhost:8800'Q$1570042658153tmCYJ:localhost:8800'Q$1570042658152btGpA:localhost:8800  FeQa$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3694}{"auth_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k", "$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "prev_events": ["$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY"], "type": "m.room.history_visibility", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043878019, "hashes": {"sha256": "rbNgtKJHH1j7HgO6RRSzYE8rDgLYqrLVMPaOCHdlmyI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "h6lDoOck2r9CHpB5Ws2R3JpyLNnhUv+elKo7zBTr/46pd3qezOoP7vUcETTwJlVRmgO6uBcEm7rlK2bvnPu8Dg"}}, "unsigned": {"age_ts": 1570043878019}}tEeQau$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3693}{"auth_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k", "$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "prev_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k"], "type": "m.room.join_rules", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043877288, "hashes": {"sha256": "NrHdNQzgFcwfWROL7e5G7S29mH3vOUdv71EqBgjBTWE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TatY3o07ASmGobV/1jHmjY193WRwRaR32RvG5EoqgYA5Rpi2TjQhARIaGhQU9GPyQjvQT5yTRCyaN0zbjqlwCQ"}}, "unsigned": {"age_ts": 1570043877288}}kDeQac$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3692}{"auth_events": ["$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "prev_events": ["$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8"], "type": "m.room.power_levels", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"users": {"@anon-20191002_181700-722:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043876519, "hashes": {"sha256": "z/qyC6jJV2onrALD+3MpIQM31146X0fNShjDgPCFuk4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "deORxOgZE2nJki/fbu9CVioKVYtt9+mb3fcWtidGw6cuJftcqGXZ5E2xl6kbRB1PNWIoVHwOqrQxflvGA/DjAA"}}, "unsigned": {"age_ts": 1570043876519}}rCeQaq$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 700, "stream_ordering": 3691}{"auth_events": ["$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs"], "prev_events": ["$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs"], "type": "m.room.member", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-722:localhost:8800", "content": {"membership": "join", "displayname": "YXANMQQXNLDNMDAEAWBA", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-722:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043875663, "hashes": {"sha256": "nYtbJ5AqapNcraQ76Mev60xNGT31qCdtR3TvxGKM/Sk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "lViEHle5SH7MSl/P18wOZJUYdT3ZfK65xLCuapQxlSqvY6eGH5LeWOwzrfDzZEJXmzWd3wXao315FLEyMoTsAA"}}, "unsigned": {"age_ts": 1570043875663}} =z - h \P:?V e]]Q5$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0@anon-20191002_181700-742:localhost:8800@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800joinWNMMSFHZOBUAIGUKXEDS,U e]]Q$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg@anon-20191002_181700-737:localhost:8829@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800leaveCT e]]Q=$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0@anon-20191002_181700-737:localhost:8829@anon-20191002_181700-737:localhost:8829!eGEEtFXUXuZDImkeql:localhost:8800joinanon-20191002_181700-737ES e]]Q=$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4@anon-20191002_181700-737:localhost:8829@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800inviteanon-20191002_181700-737?R e]]Q5$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc@anon-20191002_181700-736:localhost:8800@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800joinVBKUVYHGDOTERLMJKIKN?Q e]]Q5$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8@anon-20191002_181700-735:localhost:8800@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800joinSIQEQJQUXKKSPCJKORZN?P e]]Q5$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI@anon-20191002_181700-734:localhost:8800@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800joinUXASHYODWFCQEAPTTQYS?O e]]Q5$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E@anon-20191002_181700-733:localhost:8800@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800joinRJATOAIYTIXPIBSXDZQD?N e]]Q5$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8@anon-20191002_181700-732:localhost:8800@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800joinEAGTVMRMBZANCBKYPGOB?M e]]Q5$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA@anon-20191002_181700-731:localhost:8800@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800joinILOHRMOXOHIFUHDIJRAN?L e]]Q5$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc@anon-20191002_181700-730:localhost:8800@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800joinGSHKMOXHVOBRIYTDHTIE?K e]]Q5$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8@anon-20191002_181700-729:localhost:8800@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800joinJSLIPXUGQHACXICKVTRL?J e]]Q5$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00@anon-20191002_181700-728:localhost:8800@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800joinARXGZCNJYIXAFEYVOMMS?I e]]Q5$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-727:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800joinJKFBUCGCEHWWKASRVNAHAH e]]Q5$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800inviteJKFBUCGCEHWWKASRVNAHCG e]]Q=$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-726:localhost:8800!NcJYmIbgjsaKJOzBcs:localhost:8800joinanon-20191002_181700-726?F e]]Q5$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk@anon-20191002_181700-725:localhost:8800@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800joinEFTSGHSHTSNXHOLBSBGX?E e]]Q5$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA@anon-20191002_181700-724:localhost:8800@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800joinFZLMWKXFLBFUARZOWWMC?D e]]Q5$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok@anon-20191002_181700-723:localhost:8800@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800joinGNPLVPMSZMJSVRMAEUVS?C e]]Q5$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8@anon-20191002_181700-722:localhost:8800@anon-20191002_181700-722:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800joinYXANMQQXNLDNMDAEAWBA 0`8pH X 0  h @  x P ( ` 8  p H 'Q!zuCqeooOnfWkYrQdxA:localhost:8800 A'Q!zuCqeooOnfWkYrQdxA:localhost:8800 @'Q!zuCqeooOnfWkYrQdxA:localhost:8800 ?'Q!zuCqeooOnfWkYrQdxA:localhost:8800 >'Q!zuCqeooOnfWkYrQdxA:localhost:8800 ='Q!zuCqeooOnfWkYrQdxA:localhost:8800 <'Q!zuCqeooOnfWkYrQdxA:localhost:8800 ;'Q!zuCqeooOnfWkYrQdxA:localhost:8800 :'Q!zuCqeooOnfWkYrQdxA:localhost:8800 9'Q!zuCqeooOnfWkYrQdxA:localhost:8800 8'Q!zuCqeooOnfWkYrQdxA:localhost:8800 7'Q!zsXPhIPzeXXLvuazzQ:localhost:8800X'Q!zsXPhIPzeXXLvuazzQ:localhost:8800W'Q!zsXPhIPzeXXLvuazzQ:localhost:8800V'Q!zsXPhIPzeXXLvuazzQ:localhost:8800U'Q!zsXPhIPzeXXLvuazzQ:localhost:8800T'Q!zsXPhIPzeXXLvuazzQ:localhost:8800S'Q!zsXPhIPzeXXLvuazzQ:localhost:8800R'Q!zsXPhIPzeXXLvuazzQ:localhost:8800Q'Q!zsXPhIPzeXXLvuazzQ:localhost:8800P'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 "'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:8800x'Q!zoTQAhGwmDDUECKtbL:localhost:8800w'Q!zoTQAhGwmDDUECKtbL:localhost:8800v'Q!zoTQAhGwmDDUECKtbL:localhost:8800u'Q!zoTQAhGwmDDUECKtbL:localhost:8800t'Q!zoTQAhGwmDDUECKtbL:localhost:8800s'Q!zoTQAhGwmDDUECKtbL:localhost:8800r'Q!zoTQAhGwmDDUECKtbL:localhost:8800q'Q!zoTQAhGwmDDUECKtbL:localhost:8800p'Q!zoTQAhGwmDDUECKtbL:localhost:8800o'Q!zoTQAhGwmDDUECKtbL:localhost:8800n'Q!zoTQAhGwmDDUECKtbL:localhost:8800m'Q!zoTQAhGwmDDUECKtbL:localhost:8800l'Q!zoTQAhGwmDDUECKtbL:localhost:8800k'Q!zoTQAhGwmDDUECKtbL:localhost:8800j'Q!zoTQAhGwmDDUECKtbL:localhost:8800i'Q!zoTQAhGwmDDUECKtbL:localhost:8800h'Q!zoTQAhGwmDDUECKtbL:localhost:8800g  *^qrJeQaq$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3698}{"auth_events": ["$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc"], "prev_events": ["$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc"], "type": "m.room.member", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"membership": "join", "displayname": "FZLMWKXFLBFUARZOWWMC", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-724:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043883757, "hashes": {"sha256": "/C5hL/hYrlcplYnn3KqMXj+DJiJVOSX3//vIrWdidFo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PPgkPeXMjEgCk4Mf8aQuLr8ZVykUj9XMSjlvk4+DErm1sdAme++Lln8K2ZW9oJhrxjQ75pAC7S+Dbg1ySbZoBQ"}}, "unsigned": {"age_ts": 1570043883757}}iIeQa_$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3697}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-724:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043882993, "hashes": {"sha256": "I6toZjkqK8qjJaZ1cs6bDx9e1+ezPj6DOSrzAcNGoXQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qBHIhXxhGbMXjEQnJk1XZKKhYqDej4U7MECZIDgK5yawF4eoGFGsEPiAMkVZQv+5DeCmKMDdpXv65ZGdBnZNAw"}}, "unsigned": {"age_ts": 1570043882993}}HHeQa$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0!aiOswwhoZqjhcjzbzc:localhost:8800{"token_id": 697, "stream_ordering": 3696}{"auth_events": ["$tde6XxeyberO0Scw-IPc8HVflr0GFaKyEIJI2YTNq_A", "$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso", "$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w"], "prev_events": ["$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g"], "type": "m.room.history_visibility", "room_id": "!aiOswwhoZqjhcjzbzc:localhost:8800", "sender": "@anon-20191002_181700-718:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043880212, "hashes": {"sha256": "woOSstt8oOpMusbRjtWE88sPsuiSYnRATNtVB/SHVvA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aCjdok1qwJx2b+9msp8gIIpEdzZHNrdSM/syrxqltmOB+wOUgVYuEI140GcaDYMB3kIXSyQOQawFow5asVY3AA"}}, "unsigned": {"age_ts": 1570043880212, "replaces_state": "$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g"}}RGeQa1$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNok!yNfCaBMPezurwkJRAX:localhost:8800{"token_id": 701, "stream_ordering": 3695}{"auth_events": ["$DrROLxDyVvFvCYd3GZu66Snc5K1OAU33M-VAIOXV48k", "$I4yJxcL2esmDk5NudXgpmuHQ9OEDeU1t-gxSuYlNvhs", "$S2_uYARlUhD3S-U40qQqToz77Z-q_gT9tKsZ0AEV5fY"], "prev_events": ["$_1iZ22iul7vELIlX0Q1SJdcjB-VFQYm4WJZdyTEpXi8"], "type": "m.room.member", "room_id": "!yNfCaBMPezurwkJRAX:localhost:8800", "sender": "@anon-20191002_181700-723:localhost:8800", "content": {"membership": "join", "displayname": "GNPLVPMSZMJSVRMAEUVS", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-723:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043879207, "hashes": {"sha256": "Zb+eHPoU3FfM8QAzMzPW43rvgoPfxCurw0ax1Wr9fBs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F8YIO4ssRXD5B3TcPEM5Bi8aZTsrunBtAiPeWG6erHdX8TbCib1WcM2ucvKED8YxMIlYt2O2O8ZO6JycHKWVDg"}}, "unsigned": {"age_ts": 1570043879207}} F {FoD} s H J u # w L !   q>g<iT)e:c8 k *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!ePtMOPPOgOcBIMNZpn:localhost:8800 g g*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 f f*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 e e*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 d d*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 c c*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 b b*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 a a*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ` `*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 _ _*Q!ePtMOPPOgOcBIMNZpn:localhost:8800 ^ ^+*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eJPTUgihvSwaOhIkrC:localhost:8800--*Q!eJPTUgihvSwaOhIkrC:localhost:8800,,*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eKrOqiOabJcMgIJjwC:localhost:8800*Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!duCKuavMBSfRbTFPsc:localhost:8800  *Q!eWRdwtyqHvuxZFvhNS:localhost:8800  *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!duCKuavMBSfRbTFPsc:localhost:8800''*Q!duCKuavMBSfRbTFPsc:localhost:8800&&*Q!duCKuavMBSfRbTFPsc:localhost:8800%%*Q!duCKuavMBSfRbTFPsc:localhost:8800$$*Q!duCKuavMBSfRbTFPsc:localhost:8800##*Q!duCKuavMBSfRbTFPsc:localhost:8800""*Q!duCKuavMBSfRbTFPsc:localhost:8800!!*Q!eJPTUgihvSwaOhIkrC:localhost:8800++*Q!eJPTUgihvSwaOhIkrC:localhost:8800***Q!eJPTUgihvSwaOhIkrC:localhost:8800((*Q!eJPTUgihvSwaOhIkrC:localhost:8800''*Q!eJPTUgihvSwaOhIkrC:localhost:8800&&*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!eJPTUgihvSwaOhIkrC:localhost:8800))*Q!eJPTUgihvSwaOhIkrC:localhost:8800$$*Q!eJPTUgihvSwaOhIkrC:localhost:8800%%*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 NV*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800*Q!eGEEtFXUXuZDImkeql:localhost:8800'-*Q!drnXStKXkNQkouqUAg:localhost:8800 L L*Q!drnXStKXkNQkouqUAg:localhost:8800 K K*Q!drnXStKXkNQkouqUAg:localhost:8800 I I*Q!drnXStKXkNQkouqUAg:localhost:8800 G GV*Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!dvZnfJonDkxlrrDXUk:localhost:8800 *Q!eLsrBEnrHolwCNgkFW:localhost:8800II*Q!eLsrBEnrHolwCNgkFW:localhost:8800HH*Q!eLsrBEnrHolwCNgkFW:localhost:8800GG*Q!eLsrBEnrHolwCNgkFW:localhost:8800FF*Q!eLsrBEnrHolwCNgkFW:localhost:8800EE a} { y w u sqomkigeca~0eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~/eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~.eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800~-eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~,eeQ$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~+eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~*eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~)eeQ$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~(eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~'eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~&eeQ$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~%eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~$eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~#eeQ$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~"eeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~!eeQ$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~ eeQ$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~eeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc!biBIcqnGelHvLnpkOu:localhost:8800~eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2w!aiOswwhoZqjhcjzbzc:localhost:8800~eeQ$DAUf9u4jxKPDlAFLEkJ60j64Ck2wettShnXvOyZ1YJ0$Y8TVJAy0llNqTqqFTk4Xd3gcvNE5dI9DjQjw4vkCBso!aiOswwhoZqjhcjzbzc:localhost:8800 Wp% . 1 S V 36X0),N&/WhPQ/ e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rules$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQjOQ3 e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo NQ']e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8dMQ' e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.create$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8LQ/ ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU KQ']e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrApJQ? e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibility$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMhIQ/ e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rules$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0jHQ3 e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0 GQ']e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScdFQ' e!ZOwibbprUCQrSJQCrx:localhost:8800m.room.create$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCoEQ? ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wDQ/ ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg CQ']e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8pBQ? e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibility$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0hAQ/ e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rules$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYj@Q3 e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 ?Q']e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00d>Q' e!qtelAHlSkrqEFmlCqS:localhost:8800m.room.create$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs8=Q']ee~!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI <Q']e}!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PIj;Q3 e|!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_access$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSAp:Q? e{!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_wh9Q/ ez!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwcegj8Q3 ey!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU 7Q']ex!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-726:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cd6Q' ew!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.create$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg 5Q']ev!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-725:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkp4Q? eu!biBIcqnGelHvLnpkOu:localhost:8800m.room.history_visibility$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980h3Q/ et!biBIcqnGelHvLnpkOu:localhost:8800m.room.join_rules$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8j2Q3 es!biBIcqnGelHvLnpkOu:localhost:8800m.room.power_levels$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q 1Q']er!biBIcqnGelHvLnpkOu:localhost:8800m.room.member@anon-20191002_181700-724:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA  RNeQa1$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 703, "stream_ordering": 3702}{"auth_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q", "$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8"], "prev_events": ["$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980"], "type": "m.room.member", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-725:localhost:8800", "content": {"membership": "join", "displayname": "EFTSGHSHTSNXHOLBSBGX", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-725:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043887302, "hashes": {"sha256": "CfE13BoSSWbyRkedkRFCzGdRAYDlDE8PbYV04Lf4Rwk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cjv9WUY+gKqIP7AhpxmS8QinaD7tgS0L1X2Hc7oJrCyuIzLMdHnBjOniEP7JBi6cNpWufCXf6++/4z9+rREgAA"}}, "unsigned": {"age_ts": 1570043887302}}MeQa$4aWbn7dvkuSC0m7Oluejj_gnuKapyTl30cOnY9MS980!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3701}{"auth_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q", "$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "prev_events": ["$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8"], "type": "m.room.history_visibility", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043886112, "hashes": {"sha256": "PY3GS93o+M5JQthXZIbkp+vKFgCXGE8YpbmwV41R24s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "T+I/27zRQdjtJyHhKsmrfyNUJ2O29ah2mebbONF6NAT2ncAxOP51zX6C3pyMmjRe4rq6+wuryx42zNll6IydDQ"}}, "unsigned": {"age_ts": 1570043886112}}tLeQau$px-qH3UXuNIkx_fhVcR-3utYkf-IFcaLff3Kt6O3rd8!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3700}{"auth_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q", "$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "prev_events": ["$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q"], "type": "m.room.join_rules", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043885210, "hashes": {"sha256": "Wecc1HKqwy7wJmb2dcm8bYW0HtyRNdtLzV8q3J0p10I"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "PbS64SqDYIhi04aYejqvKlX9I6ItAzmI6KRYCgYjK+XIWC1+trer+cRfVU2Y863FYFM5Rf7q7flVaLPoyyhKBw"}}, "unsigned": {"age_ts": 1570043885210}}kKeQac$O36T_FjJ_GhA3YgLdKFO8-V9xasGw6GHqPYBEdRt49Q!biBIcqnGelHvLnpkOu:localhost:8800{"token_id": 702, "stream_ordering": 3699}{"auth_events": ["$-aFBDLl8Mn7Ltfgn_VhTlvoSSQzOQvHSVumKxGYQBCc", "$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "prev_events": ["$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNA"], "type": "m.room.power_levels", "room_id": "!biBIcqnGelHvLnpkOu:localhost:8800", "sender": "@anon-20191002_181700-724:localhost:8800", "content": {"users": {"@anon-20191002_181700-724:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043884448, "hashes": {"sha256": "kB/PtZpojP8AcvqmLUdAq9Xs69uYQHCKKsyey19uRWI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D6mcl4+nBnSPENTuPD0jxsE3+Gk4YuKKsh/tkho+GfGwJ7cx99eq7ABpbCwC787FwPnRxx+rrohdtPZwmTV+BA"}}, "unsigned": {"age_ts": 1570043884448}} `|pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8, xl` m m m m~ mz mZ mW mT mQ mN mK m9 m7 m3 m1 m, m* m' m& m# m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m~ m| mz mx mq mo mn mk mi mg me mc ma m_ m] m[ mY mW mU mQ mN mL mJ mH mF mD mA m> m< m9 m6 m3 m2 m1 m- m, m( m% m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z:CUq8 V  rzA] _Up7$B{&^% 9   U q T z98]!@anon-20191002_181700-791:localhost:8800WJMTFALHBS*8]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAI$8]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!@anon-20191002_181700-795:localhost:8800JVASIBBRVU.8]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWI,8]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJ+8]!@anon-20191002_181700-788:localhost:8800JZUHRDQQEL%8]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ-8]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFX(8]!@anon-20191002_181700-790:localhost:8800VALGYGSZPA'8]!@anon-20191002_181700-787:localhost:8800ESOZVRSFST&8]!@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHU)8]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTK8]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ6[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXm58]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA5Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWX6[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDp6[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNo8]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLI#8]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZH"8]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIW!8]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQC 8]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCC68]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXF58]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUO48]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJR38]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ28]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJC18]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ08]!@anon-20191002_181700-798:localhost:8800INQDOVATBT/8]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!@anon-20191002_181700-760:localhost:8800AAUYDDOUHU 6[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMn8]!@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8]!@anon-20191002_181700-758:localhost:8800GUAXNWFTDG 8]!@anon-20191002_181700-757:localhost:8800QRQFPUSZXE 8]!@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ 8]!@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG 8]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN8]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBW g * T~=ggA]!c@anon-20191002_181700-742:localhost:8800OLLAKSSDJKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45Hwog@]!c@anon-20191002_181700-736:localhost:8800FLOTQJDCJVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgog?]!c@anon-20191002_181700-735:localhost:8800ZQXZAKNBDXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAog>]!c@anon-20191002_181700-734:localhost:8800KYIXUZPIHIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAog=]!c@anon-20191002_181700-733:localhost:8800YGJVVHZCJQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQog<]!c@anon-20191002_181700-732:localhost:8800XWWSSGHQCKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAog;]!c@anon-20191002_181700-731:localhost:8800QAJRBGVMCYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQog:]!c@anon-20191002_181700-730:localhost:8800BGYKRDCYIRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAog9]!c@anon-20191002_181700-729:localhost:8800DNPGOQMGAFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQog8]!c@anon-20191002_181700-728:localhost:8800KLYTBBZKRQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAog7]!c@anon-20191002_181700-726:localhost:8800DOLLBVDDIPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowo   *tReQau$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3706}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU"], "type": "m.room.join_rules", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043892195, "hashes": {"sha256": "nYS7cfNLCEH5JKwyGd2ASVTpafQcwNgVykhQ3RkkYDg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "gZLxBUBF5jPJsl67ap1dIg1dDTHuCIHgRfzaclOge5rLo0y7WaUdRZaIvq0EnkZmNag1dcW6+ZrXKxMGYCKEAQ"}}, "unsigned": {"age_ts": 1570043892195}}kQeQac$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3705}{"auth_events": ["$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "type": "m.room.power_levels", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"users": {"@anon-20191002_181700-726:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043891114, "hashes": {"sha256": "nt4OwYV3BuU0nOqUqzG8Cig1nn0KT0oRU2vgfQzhvJU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vs8w6icOmgEL72UqW2fVqzdRsfneQLPVcUpmD4gSIw0mDWC13Bh4+gPLAVRfv1wr9DxwyxhOG27bfIVHDgqXBw"}}, "unsigned": {"age_ts": 1570043891114}}vPeQay$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3704}{"auth_events": ["$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg"], "prev_events": ["$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg"], "type": "m.room.member", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-726", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-726:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043890291, "hashes": {"sha256": "ykCYbBHlE0JU/no2LpYU+jZsk+bRBm6KuBDjeXZRIAc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7cX5OSqtu9OPYdfpjXN7CAFpGTetZWJVocwVLsG5QIpxBDrOjc10p7mtckY/FEY38HPeX++6ylbe3F0Peg8sDg"}}, "unsigned": {"age_ts": 1570043890291}}iOeQa_$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3703}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-726:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043889477, "hashes": {"sha256": "M0TQKAuL5eLxBhnUuwJQkpn5BgAZgSvDsuzk4+LiDzQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iqAC9XiLldk+ZIjNOMeKXQur5czq5jlNd8QFpNY1bKWrTVsZiX9cZM3KmyHoRpkidSb+oYXNRoueI0aGvhm7Bw"}}, "unsigned": {"age_ts": 1570043889477}} 9 @ p , \  L |8l(t0d T \Hx0X8`Et]=@anon-20191002_181700-831:localhost:8800anon-20191002_181700-831Es]=@anon-20191002_181700-797:localhost:8800anon-20191002_181700-797Er]=@anon-20191002_181700-795:localhost:8800anon-20191002_181700-795Eq]=@anon-20191002_181700-793:localhost:8800anon-20191002_181700-793Ep]=@anon-20191002_181700-791:localhost:8800anon-20191002_181700-791Eo]=@anon-20191002_181700-789:localhost:8800anon-20191002_181700-789En]=@anon-20191002_181700-787:localhost:8800anon-20191002_181700-787Em]=@anon-20191002_181700-768:localhost:8800anon-20191002_181700-768El]=@anon-20191002_181700-767:localhost:8800anon-20191002_181700-767Ek]=@anon-20191002_181700-763:localhost:8800anon-20191002_181700-763Ej]=@anon-20191002_181700-762:localhost:8800anon-20191002_181700-762Ei]=@anon-20191002_181700-758:localhost:8800anon-20191002_181700-758Eh]=@anon-20191002_181700-757:localhost:8800anon-20191002_181700-757Eg]=@anon-20191002_181700-755:localhost:8800anon-20191002_181700-755Af]5@anon-20191002_181700-754:localhost:8800FKOCVHIRTCIPSWJBHVGOAe]5@anon-20191002_181700-752:localhost:8800JYNGOISMLXVDWPDRVNCSEd]=@anon-20191002_181700-751:localhost:8800anon-20191002_181700-751Ac]5@anon-20191002_181700-750:localhost:8800BABSIRRXCUHNIFZHYFMBEb]=@anon-20191002_181700-747:localhost:8800anon-20191002_181700-747Aa]5@anon-20191002_181700-746:localhost:8800QLDSIOXVCTASBPKYRNHIA`]5@anon-20191002_181700-744:localhost:8800LIBVRACXDTFHBVRAEYIUA_]5@anon-20191002_181700-743:localhost:8800AZZDHJBDYOHRRTKDIRLPA^]5@anon-20191002_181700-742:localhost:8800WNMMSFHZOBUAIGUKXEDSAR]5@anon-20191002_181700-725:localhost:8800EFTSGHSHTSNXHOLBSBGXAQ]5@anon-20191002_181700-724:localhost:8800FZLMWKXFLBFUARZOWWMCAP]5@anon-20191002_181700-723:localhost:8800GNPLVPMSZMJSVRMAEUVSAO]5@anon-20191002_181700-722:localhost:8800YXANMQQXNLDNMDAEAWBAAN]5@anon-20191002_181700-721:localhost:8800XOISPAUOSHVJCWENJUUSAM]5@anon-20191002_181700-720:localhost:8800XSMKELSYZZRIOKLQFSRHAL]5@anon-20191002_181700-719:localhost:8800MILEDCIUNXUMWFEESQLVEK]=@anon-20191002_181700-718:localhost:8800anon-20191002_181700-718AJ]5@anon-20191002_181700-717:localhost:8800HMVWDTIFKRGHQBGEGHRHAI]5@anon-20191002_181700-716:localhost:8800MJNQECZFMFOOTUTQHDEMAH]5@anon-20191002_181700-715:localhost:8800ILZFEUMGMNVXCRVUDWRWAG]5@anon-20191002_181700-714:localhost:8800ZONDVATSKCZDRCJEXKOTAF]5@anon-20191002_181700-713:localhost:8800KIPGYKTLFAKDJTVTRSGZAE]5@anon-20191002_181700-712:localhost:8800SIQSTRPUPDLQEGIEGXYWAD]5@anon-20191002_181700-711:localhost:8800SPPIULUTUNSEUMJVVWAVEC]=@anon-20191002_181700-710:localhost:8800anon-20191002_181700-710AB]5@anon-20191002_181700-708:localhost:8800QNSOXAXNRXGCIEWGQWKJEA]=@anon-20191002_181700-706:localhost:8800anon-20191002_181700-706A@]5@anon-20191002_181700-704:localhost:8800QBXFQKRQDWUAJPNVZOZDA?]5@anon-20191002_181700-702:localhost:8800YXIIECCUXAJQBCOFPUZNA>]5@anon-20191002_181700-701:localhost:8800BLFZQHKYWUXKFZZINKLJA=]5@anon-20191002_181700-700:localhost:8800DOJGFUOIVLOGJFEZFHHTE<]=@anon-20191002_181700-698:localhost:8800anon-20191002_181700-698A]]5@anon-20191002_181700-736:localhost:8800VBKUVYHGDOTERLMJKIKNA\]5@anon-20191002_181700-735:localhost:8800SIQEQJQUXKKSPCJKORZNA[]5@anon-20191002_181700-734:localhost:8800UXASHYODWFCQEAPTTQYSAZ]5@anon-20191002_181700-733:localhost:8800RJATOAIYTIXPIBSXDZQDAY]5@anon-20191002_181700-732:localhost:8800EAGTVMRMBZANCBKYPGOBAX]5@anon-20191002_181700-731:localhost:8800ILOHRMOXOHIFUHDIJRANAW]5@anon-20191002_181700-730:localhost:8800GSHKMOXHVOBRIYTDHTIEAV]5@anon-20191002_181700-729:localhost:8800JSLIPXUGQHACXICKVTRLAU]5@anon-20191002_181700-728:localhost:8800ARXGZCNJYIXAFEYVOMMSAT]5@anon-20191002_181700-727:localhost:8800JKFBUCGCEHWWKASRVNAHES]=@anon-20191002_181700-726:localhost:8800anon-20191002_181700-726 !*L . 9 c b %IP[GoQ? e ?!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibility$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFoggQ/ e >!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rules$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAiQ3 e =!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras Q']e GozGJY 5eQ']$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800m4eQ? $_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibilitye3eQ/ $Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rulesg2eQ3 $3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels 1eQ']$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800a0eQ' $dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.createm/eQ? $_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility .eQ']$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800m-eQ? $qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibilitye,eQ/ $nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rulesg+eQ3 $_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels *eQ']$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800a)eQ' $YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.createe(eQ/ $chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules 'eQ']$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800m&eQ? $8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibilitye%eQ/ $uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rulesg$eQ3 $SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels #eQ']$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800a"eQ' $T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800m.room.createm!eQ? $bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibilitye eQ/ $kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules eQ']$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800meQ? $x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibilityeeQ/ $KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rulesgeQ3 $Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels eQ']$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800aeQ' $IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800m.room.create eQ']$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800 eQ']$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.member@anon-20191002_181700-727:localhost:8800geQ3 $bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.guest_accessmeQ? $kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibilityeeQ/ $ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rulesgeQ3 $yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.power_levels c wcUeQa/$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3709}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA"], "type": "m.room.member", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"membership": "invite", "displayname": "JKFBUCGCEHWWKASRVNAH", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-727:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043894901, "hashes": {"sha256": "ebgQshrwyo7SwUZTvUFpbei9kKKF6IyjNQOeq8z4oro"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r4rFqRPSPrNrQhQ9BP8i2FXM2+Mbh1k0I9MFVXf+p7C/vFYXY/Dm3msypz1ZWFGIx2MnO3Bgym5egYhfIjH1Dg"}}, "unsigned": {"age_ts": 1570043894901, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-726:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-726:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-726", "avatar_url": null}, "sender": "@anon-20191002_181700-726:localhost:8800"}]}}{TeQa$bhjm839wkldqYJmrZSDat8wCoARcr_-uT4FUlxKgHSA!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3708}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w"], "type": "m.room.guest_access", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043894001, "hashes": {"sha256": "DTOc3y86pb0xVlkdBOQjF5Nt3Z7gHfsLrzKYFbpjyKc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "naJyL6utSgJGxeO0gbHBPkq2EVo1EGAA7W4QvhNR29OEBvEqOCdvvwOah97vpwSoyW6KeaYslJ1L2Ze1fzbcDw"}}, "unsigned": {"age_ts": 1570043894001}}SeQa$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3707}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg"], "type": "m.room.history_visibility", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043893197, "hashes": {"sha256": "bueYEPqNvpiQSmc6G42aP08cRUM9k4KmHGvVBMyuKLQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "eoo84sb8wm1ybV+IlbWZYnFzbjNaBef5yTMa4SrsTFTmxKsckajIcYGZgp6LyIW+tnELkDJJfXvySBg1NvlUCQ"}}, "unsigned": {"age_ts": 1570043893197}} ? \ *Tb0j8  h6n<p V $  "t P v DZ( | JBzHN 1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagV1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagU1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk91e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk81e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwf1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg ,1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM 1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGM d1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk:1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E^1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQZ1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQY1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQX 21e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0{1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0z1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i0y1e$o7jUkNVbfFoBN7XuQCf_7q-5XgvHJDyuKumi2B4B1PU1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI 1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pI 1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI 1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI 1e$o-uZyMZtcW-bUOzgprrMwZxvn2MCytPlpcCHCyO0czI1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkYS1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs p1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs o1e$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs n1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo 1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo 1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI 1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI 1e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrI 1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRc1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0k1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0j1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA0i 1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ 21e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8m1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8l 21e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck.1e$o1owKsBwnEdmvSilWO7iPIDP9VdIjGoMf7KYiuch_ck- 1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwe1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y1e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBwg1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8n1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXagW *j8p> v D   | J   P 1 V $ \ +cc1e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI 1e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk 1e$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E H1e$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ F1e$oGgNIZmWY6hET2viq4lyM_H3tj4iWmm0V7WhpjTxL5U1e$oGaWEnivEzXGWNkyNzAr9-0PPUkeEBuBPjeZyBPImrc1e$oFp4qGaTTlUHdJAxlp67jguhXs3dDhlulNULv_uJ5fA)1e$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1Y D0e$oATtND10f3ZVo6F1LtDvXjz-O60MlXfm28mjRJzSPMYa1e$o9VP7_q1G5ZLuOECq5rgSBtd8q1AXSykptwhAX_X0i01e$o8MNeLh6HdU_KMOE6NJ4vtFk0Luwgs9lGnLHLhKqqCk1e$o7_39b9mNcamJCop5WWGombGzyVr4GXYfo-ZEZl_1pIQ21e$o0TVYt5MqHuOqtLqGKUPmZOiyZE-WS34pCK5ds1azCQ1e$o0M7JWctLMv7_avYdtAJqNSgl3-QO-28FBTkOID01BQ l1e$o-BMxmzrHchMUH2GZ8oeESYHKy0RONPAeJRWfzolNqg1e$nztB9A3wlc8-RV-g0-QhMfhzQfVfNTydTY-OEWnoxkY1e$nw2wYV4VOU4dQUTbUtvlxmpXa-EOhpNtkuhzrNSckA01e$nu4vQXZs39xVe5vlr-7-letrKAaOhfnOwqi99LFZcBw1e$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0Y1e$nptLuFX0R7LYcKl-sS-_l1FsCdz-OFHhnIKPyDXzICg1e$np6UNeQRgJN3gblAJqKYOGhRzcro8Rr6d56vRtU5uWg1e$nndjWTGPYK8MwOsLrD4mk-ItPXwiD7KkmOGZ9IXqsCo1e$nnWSvRhpxCa8FE9P4CVry4ubOA-Ipd8SDlLp5K603O8 A1e$nmzzQbDhVlSYaD6m4Lk-DJAyqjXxEehcIksgOc4reT41e$nkFK4tSzSt7gX-sB7EebQK7vLG-YOGYaqJvKEvEQTrIm1e$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag1e$ngTOBlBJyKkuLN9rqBkvw7OuppZZtWCm8uhEDjjb96M1e$nflKFn1zBcJYEL4KQLyizBX6imd8T5U24L4HC_68kGMz1e$nfbBnEd1Ujdkq8zjCxIS1dM1sqFDVYftpdYyujq4Otwk1e$nf749_nK_aAEz7viA0y3RnG52wRfEWcVs-sipDSmHRcY1e$neCOxGl87f0mA2pu-bNVl2I-dRCRkEJipmm3cWyf8iU1e$nXrERnQXV27s4bVJj4YFi8ug2EjwNdDAX1atqM2q9K01e$nWqNqKfrXDWF4dm_Lk7HofR-yA2dTDzPf7Lz-Aj1E7w1e$nWp1Mv45fyfN1PNea_LFxB3p4h9tpxJ51m8Nx89o4Xw=1e$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAc 1e$nRSFEV1TH9w1luKlhrxcvVFpElIlhL5vdVPPYhB4ctA 1e$nRGvdEr2LphbQ4WyvTWKAm1peNH-Cqe2Y0Ad_x2TGXg 81e$nPJltY3_ZQ_V8redrStOdN3pW-fglmKpTpAbbBzWl0k1e$nOT_QFJ0_dLKbNs6lvzWGCVs3bUsCck6Bh13-AObLMo 1e$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBI 1e$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9guc ?1e$nI8NoPrsw32Na0mMrftq3yOMr1D0zarmT-2_pzeQ-xUS -RM H C > 9 4/*|%w rmhc TNQe N!cOFSwLSkxZECJMvjjZ:localhost:8800$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oTMQe M!cOFSwLSkxZECJMvjjZ:localhost:8800$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0TLQe L!cOFSwLSkxZECJMvjjZ:localhost:8800$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0YTKQe K!cOFSwLSkxZECJMvjjZ:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0TJQe J!cOFSwLSkxZECJMvjjZ:localhost:8800$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUTIQe I!eGEEtFXUXuZDImkeql:localhost:8800$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgTHQe H!eGEEtFXUXuZDImkeql:localhost:8800$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0TGQe G!eGEEtFXUXuZDImkeql:localhost:8800$NF6QJGaiXg5wluKm4znGCpLM0q6uwlc3KaRF5d5R8QUTFQe F!eGEEtFXUXuZDImkeql:localhost:8800$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4TEQe E!eGEEtFXUXuZDImkeql:localhost:8800$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYTDQe D!eGEEtFXUXuZDImkeql:localhost:8800$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cTCQe C!eGEEtFXUXuZDImkeql:localhost:8800$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQTBQe B!eGEEtFXUXuZDImkeql:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcTAQe A!eGEEtFXUXuZDImkeql:localhost:8800$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUT@Qe @!ZOpRjvUhkWYJBFJZeO:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8T?Qe ?!ZOpRjvUhkWYJBFJZeO:localhost:8800$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogT>Qe >!ZOpRjvUhkWYJBFJZeO:localhost:8800$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAT=Qe =!ZOpRjvUhkWYJBFJZeO:localhost:8800$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasT<Qe eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~=eeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800~<eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800~;eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~:eeQ$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800~9eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800~8eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~7eeQ$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800~6eeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800~5eeQ$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~4eeQ$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs!qtelAHlSkrqEFmlCqS:localhost:8800~3eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$nVwBoOLES0S_nLj0ABO2YWZPr72BMgCAgINXBwoJ_PI!NcJYmIbgjsaKJOzBcs:localhost:8800~2eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg!NcJYmIbgjsaKJOzBcs:localhost:8800~1eeQ$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800 2lp, < L \ l  | ,<`L\ l|,<L\ lM}]Q@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800M|]Q@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800M{]Q@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800Mz]Q@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800My]Q@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800Mx]Q@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800Mw]Q@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800Mv]Q@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800Mu]Q@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800Mt]Q@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800Ms]Q@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800Mr]Q@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800Mq]Q@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800Mp]Q@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800Mo]Q@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800Mn]Q@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800Mm]Q@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800Ml]Q@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800Mk]Q@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800Mh]Q@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800Mg]Q@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800Mf]Q@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800Me]Q@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800Mi]Q@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800M`]Q@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800M_]Q@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800M^]Q@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800M]]Q@anon-20191002_181700-722:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800MZ]Q@anon-20191002_181700-721:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800MY]Q@anon-20191002_181700-720:localhost:8800!BKZJsoFNhiLTDYNclB:localhost:8800MX]Q@anon-20191002_181700-717:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800MW]Q@anon-20191002_181700-716:localhost:8800!IYxUkyFHOgvhLpdkOA:localhost:8800MV]Q@anon-20191002_181700-715:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800MU]Q@anon-20191002_181700-714:localhost:8800!anErKtXIsVKEEsrzWM:localhost:8800MR]Q@anon-20191002_181700-713:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800MQ]Q@anon-20191002_181700-712:localhost:8800!TcCLuIBUrtFqghDgay:localhost:8800MP]Q@anon-20191002_181700-708:localhost:8800!wCsDjKBtuUbrmZgjsB:localhost:8800MO]Q@anon-20191002_181700-706:localhost:8800!SpXEytywhTbAftyVBr:localhost:8800MN]Q@anon-20191002_181700-704:localhost:8800!itfjLXhEaORJLkbfVS:localhost:8800MM]Q@anon-20191002_181700-701:localhost:8800!jomrpmwwQQtghscizn:localhost:8800ML]Q@anon-20191002_181700-700:localhost:8800!jomrpmwwQQtghscizn:localhost:8800MK]Q@anon-20191002_181700-698:localhost:8800!ABHbfUdkHCJksMsaUt:localhost:8800MJ]Q@anon-20191002_181700-691:localhost:8800!DntdfAPfCfgdOoRMdl:localhost:8800MI]Q@anon-20191002_181700-690:localhost:8800!THHfVSOSWiBQTHRAnJ:localhost:8800AHEQ@__ANON__-58:localhost:42455!KetCYFxrTxawNOGnOf:localhost:8800MG]Q@anon-20191002_181700-685:localhost:8800!KetCYFxrTxawNOGnOf:localhost:8800 Mj]Q@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800AFEQ@__ANON__-57:localhost:42455!JiUawCFQnodcpssOfK:localhost:8800Mb]Q@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800Ma]Q@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800 i 4h5 i g1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAo߂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAo݂1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwo F^ h  l  v$t(8<F e'Q ]$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIm.room.member!ZOpRjvUhkWYJBFJZeO:localhost:8800mm0@anon-20191002_181700-734:localhost:8800 e'Q  ]$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvEm.room.create!ZOpRjvUhkWYJBFJZeO:localhost:8800m$m@anon-20191002_181700-734:localhost:8800,e?Q ] $_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90m.room.history_visibility!NcJYmIbgjsaKJOzBcs:localhost:8800 mBm@anon-20191002_181700-726:localhost:8800 e'Q ]$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1Em.room.member!BPNyKqmwcpGxIbGFZG:localhost:8800mm@anon-20191002_181700-733:localhost:8800,e?Q ]$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4m.room.history_visibility!BPNyKqmwcpGxIbGFZG:localhost:8800mm@anon-20191002_181700-732:localhost:8800$e/Q ]$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQm.room.join_rules!BPNyKqmwcpGxIbGFZG:localhost:8800m&m@anon-20191002_181700-732:localhost:8800&e3Q ]$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXom.room.power_levels!BPNyKqmwcpGxIbGFZG:localhost:8800mJmU@anon-20191002_181700-732:localhost:8800 e'Q ]$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8m.room.member!BPNyKqmwcpGxIbGFZG:localhost:8800mRm@anon-20191002_181700-732:localhost:8800 e'Q  ]$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8m.room.create!BPNyKqmwcpGxIbGFZG:localhost:8800mmO@anon-20191002_181700-732:localhost:8800$ e/Q ] $chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90m.room.join_rules!NcJYmIbgjsaKJOzBcs:localhost:8800 mm@anon-20191002_181700-726:localhost:8800 e'Q ]$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAm.room.member!ZOwibbprUCQrSJQCrx:localhost:8800m m@anon-20191002_181700-731:localhost:8800, e?Q ]$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIMm.room.history_visibility!ZOwibbprUCQrSJQCrx:localhost:8800mm@anon-20191002_181700-730:localhost:8800$ e/Q ]$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0m.room.join_rules!ZOwibbprUCQrSJQCrx:localhost:8800m݁mw@anon-20191002_181700-730:localhost:8800& e3Q ]$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0m.room.power_levels!ZOwibbprUCQrSJQCrx:localhost:8800mڤmۭ@anon-20191002_181700-730:localhost:8800 e'Q ]$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScm.room.member!ZOwibbprUCQrSJQCrx:localhost:8800mm@anon-20191002_181700-730:localhost:8800 e'Q  ]$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCom.room.create!ZOwibbprUCQrSJQCrx:localhost:8800m[mԯ@anon-20191002_181700-730:localhost:8800,e?Q ] $bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvMm.room.history_visibility!NcJYmIbgjsaKJOzBcs:localhost:8800 mċmV@anon-20191002_181700-726:localhost:8800$e/Q ] $kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIUm.room.join_rules!NcJYmIbgjsaKJOzBcs:localhost:8800 msm@anon-20191002_181700-726:localhost:8800 e'Q ]$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8m.room.member!qtelAHlSkrqEFmlCqS:localhost:8800mpm @anon-20191002_181700-729:localhost:8800,e?Q ]$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0m.room.history_visibility!qtelAHlSkrqEFmlCqS:localhost:8800m m蹂@anon-20191002_181700-728:localhost:8800$e/Q ]$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rYm.room.join_rules!qtelAHlSkrqEFmlCqS:localhost:8800m{m贉@anon-20191002_181700-728:localhost:8800&e3Q ]$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4m.room.power_levels!qtelAHlSkrqEFmlCqS:localhost:8800mm@anon-20191002_181700-728:localhost:8800 e'Q ]$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00m.room.member!qtelAHlSkrqEFmlCqS:localhost:8800mm謦@anon-20191002_181700-728:localhost:8800 e'Q  ]$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKsm.room.create!qtelAHlSkrqEFmlCqS:localhost:8800m5m訏@anon-20191002_181700-728:localhost:8800 A~=|= | ; ~ ? C  G  I ~P"_!l.z<H Vc'p29v Q  !DoiZErAdypBUMZKaeJ:localhost:8800th&\9u Q  !DntdfAPfCfgdOoRMdl:localhost:8800th&\;t Q!DnUHoxreGexNmjSVpq:localhost:8800th&\;s Q!DelfBAGvCrTXgNxmNV:localhost:8800th&\:r Q !DSFBpkqfnvBQbGoMUK:localhost:8800th&\9q Q  !CkNvQnbApPIcuKygDk:localhost:8800th&\9p Q  !CgVBWWcRJoHEcwoLcq:localhost:8800th&\:o Q !CSqENqzAezaZnGktbE:localhost:8800th&\;n Q!CQKLQUpSYakhxVDltC:localhost:8800th&\9m Q  !CNFopUEQTFbzjmLvii:localhost:8800th&\9l Q  !CKNftKKCaOCVUyYWNY:localhost:8800th&\9k Q  !CGckPHdSYcIocFvRAq:localhost:8800th&\9j Q  !CAGaRyRvrohDRBsrWH:localhost:8800th&\;i Q!BpTqIemsWFZIqTcgJO:localhost:8800th&\9h Q  !BoyzlWNkRPncpDjBDg:localhost:8800th&\;g Q !BkzROHxDAfKIzYpmPV:localhost:8800th&\ 9f Q  !BfEFIDBthhkweqfhir:localhost:8800th&\ 9e Q   !BckZfhQgrcyiMhEAAJ:localhost:8800th&\;d Q!BPNyKqmwcpGxIbGFZG:localhost:8800th&\;c Q!BKZJsoFNhiLTDYNclB:localhost:8800th&\9b Q   !BGbJEmJRVJGlZFQbZe:localhost:8800th&\9a Q  !BDASLhdcKfNwxCTCSg:localhost:8800th&\9` Q   !AoAvmnwMkhYBQsbCsL:localhost:8800th&\;_ Q!AjjrNwXmPTCruHxaJq:localhost:8800th&\ 9^ Q  !AYFqrmxwClFQlcTTYq:localhost:8800th&\9] Q  !AWfbViAZparIjmDaVT:localhost:8800th&\:\ Q !AOEdqVKPFddrqbKPOL:localhost:8800th&\;[ Q!AMLmLqizBFklpqKibP:localhost:8800th&\9Z Q  !ABHbfUdkHCJksMsaUt:localhost:8800th&\*Y 1 !9:localhost:42455th&\*X 1 !6:localhost:42455th&\*W 1 !5:localhost:42455th&\+V 3 !13:localhost:42455th&\+U 3 !12:localhost:42455th&\,T 3!11:localhost:42455th&\+S 3 !10:localhost:42455th&\*R 1 !0:localhost:42455th&\>Q Q!QWLJZmJqjWZjVOjdYF:localhost:8800m&\>P Q!ZWANpHlizyLrUiVvAm:localhost:8800m&\@ Q!sBcwyPoXKgnSGVTjNR:localhost:8800m&\> Q!LFBhoxJpmBqFrwEzGP:localhost:8800m&\>= Q!URpLZLuBfVcfHVTBGS:localhost:8800m&\<< Q  !YaLuQzmJKSMTSFEqjO:localhost:8800m&\?>; Q!cOFSwLSkxZECJMvjjZ:localhost:8800m&\<: Q   !eGEEtFXUXuZDImkeql:localhost:8800m&\4>9 Q!ZOpRjvUhkWYJBFJZeO:localhost:8800m&\>8 Q!BPNyKqmwcpGxIbGFZG:localhost:8800m&\>7 Q!ZOwibbprUCQrSJQCrx:localhost:8800m&\>6 Q!qtelAHlSkrqEFmlCqS:localhost:8800m&\ E | J  * P  V> $ 0 \ *pbh6$n< \uC|JPVj821e$QslD-t-Y9kdL-nwAF8aar48gS8Fvn6aWWiPwpO3xJf4 1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE c1e$QwCHs1bC4NREGdIPbd8Fg_KrpzSeNShrshHFv9yylaw +1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q !1e$RNEW2A02HvEN4lV54NH68HTzfnkUugowh_wQ0_LOQ9Q 1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$QtZ57_jlEuzf0fz_7MDKOGmhM7TCvjSEPPZilwyD4TU 1e$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd41e$RXs855PQnsKqZ3VqgCMjpriELmUwpFkfkY5W-Xf1Oh81e$RSkFasKwAlIegs8qWmvekwc_Tfzr_2jtoV2_a8qUH8w1e$RSenx79aJ5Up4ZxtIgM9mnnJaLnFoShi3DXejjrsu8Y1e$RMyFgn0-8vF0Qa-wKGbTs7D7N2S1gB9EH28T21Jba1s71e$RMnhJ5ZsbksAnWmMPCV7Az0KKk_9cNSIqoVIIW9PQ1g1e$RLESTWoItXNI0hKmLlSyHj4BFWndN3UJQFfHxd1_z9k1e$RKziAQGHdDoYipQpPa7qrjkLUu6MinIcLBHNPUFV3Oo1e$RIbBwN3zpLerOeZxRGJQxo3gGKdS4DrR5MCmdH2bQvY1e$RI_rTmRtkTchAJhJnlgI9CHXu17Fe4FA0gx5T6OT7o01e$RISr2IqQXTsGFTBoQzWnEEG-P3YGpvGHIVo22didZVIh1e$RI3A_5vDpzvkUjxoLFw_nzJEta5Ipg83HOSYOIaRmvg1e$REnv3dNQyF7oIvuRSSTJoVH9apGx4GNPrMNGkdJFLx40e$RAr05c-uyKbG527COzEQjeB33Qx4KOpXJtgQ2Ux8jbE1e$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfA 1e$R8mBEM25iuccT2D7nIikM-NqsdFJ63s7pqf4X9yAjUg1e$R7Rd_QLrQ-PQaEH7f1GX1D-jyLvs8YGV9PpRTqIn_yI1e$R46LALgolJww6OWymyeU-mW5cLdDlusZAg6wIhaYWrU1e$QvnmNxf81lCOx_DyzFyehysqkGNsQQf416iAvSgtG2U 0e$QuIG7wz_GVV3GbOQhbWs0GKCdMCU5qlt907uh7XrcZI1e$Qu34MZjIDYv_A9nZpRRVcrUOBNq3KJWersEqcrfTWIA1e$QtktsWfLOnneOGNpBBclhpQAsiBoVFSV0T67NsZlhiol1e$QtdUefFFTQP8quokciLiLuOth4TtW8CQd8U6tw8KQ9so1e$QsE6clnAvcnlT25788QLgVxZCWhw-5FIgKCtxnL1Ghw _1e$QrkAJxzRDlIX9fXG3hnHfKv5_3-NXZJ387V4zSfYQmo1e$QqR0WafsSX1kjodpZ1La2EigjFuUyvJTHCoIb5qlFNk71e$Qo1LYLNDmJMJxuIVZX1UcJVn2rXDi_0GqjwMB0BfCqc'1e$QkZa582SI5A_fj5rE_jgqlNkItx1O2cd_mmErfnQNwE1e$Qg__Q9VJRsmw8-hPPrQQqPUHCC4vUqfbm0jjfTG33oM1e$QYr1CUg3kSpol9eaivaj2ygdWu759kZUOAhBiiL5pks 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QePYVMuL3Hs0P7okb9Q7EPjWdiKix4-NMqfDrmEvGF81e$QaVIxDRRh43BERpWm0uXsEIbAgcSABS1bOqQsWBtqh01e$QZnwCifO6DNEz_t4-YzCfpQ96cHFqrGlqixJFHLO5ak1e$QZFJbBmTzjcAuaI5ByE-NihmPV81nEz0bPD5FVFxiCM1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k)1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI!1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQ1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw41e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg 1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY $1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsH1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg Y1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY l1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk '1e$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I "1e$RLeoRoR1tUOKhVD2jeQvkZl8O8sl3EODe3COJ4iZ4Ns 1e$RbaUrlaoEOdwBZOjQBnuuYTxnos0wxLvqAL8xaiQRs4@1e$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQ 1e$Raaoz6yIK1su10x6gPWkwZ0Er-cRj5WonT59sLtCZ6c 1e$RZcunCcmii2BEnOR-biHXI7oC3azqQdTEp4yTS90SQU S1e$RZDd6R_sYAK2mtkU1z-3Tpc4ZK1rUtPHcsTxkTAxuu8 !o- ` e 4 54 ?mlw 5? WeQ']$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800joinaVeQ' $5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.createUeQ']$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829leavemTeQ? $-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibilityeSeQ/ $L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rulesgReQ3 $WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels QeQ']$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800joinaPeQ' $HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800m.room.create OeQ']$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800joinmNeQ? $_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibilityeMeQ/ $Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rulesgLeQ3 $3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels KeQ']$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800joinaJeQ' $dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.create HeQ']$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800joinmGeQ? $qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibilityeFeQ/ $nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.join_rulesgEeQ3 $_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.power_levels DeQ']$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-732:localhost:8800joinaCeQ' $YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.create AeQ']$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-731:localhost:8800joinm@eQ? $8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800m.room.history_visibilitye?eQ/ $uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.join_rulesg>eQ3 $SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800m.room.power_levels =eQ']$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800m.room.member@anon-20191002_181700-730:localhost:8800joina<eQ' $T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800m.room.createmIeQ? $_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibilityeBeQ/ $chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.join_rules 9eQ']$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-729:localhost:8800joinm8eQ? $x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800m.room.history_visibilitye7eQ/ $KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800m.room.join_rulesg6eQ3 $Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4!qtelAHlSkrqEFmlCqS:localhost:8800m.room.power_levels 5eQ']$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00!qtelAHlSkrqEFmlCqS:localhost:8800m.room.member@anon-20191002_181700-728:localhost:8800join xH`8pH X0 X 0  h@h@x h @  x P ( ` 8  P(( p H ('Q!vxEMWYTUdzvLyVZNzJ:localhos('Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800P'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 PX'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800('Q!vnFXnkCSfTbsSNKrtg:localhost:8800 ]'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 \'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 ['Q!vnFXnkCSfTbsSNKrtg:localhost:8800 Z'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 Y'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 X'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 W'Q!vyCFfUTJKYJSDadFhT:localhost:8800]'Q!vyCFfUTJKYJSDadFhT:localhost:8800['Q!vyCFfUTJKYJSDadFhT:localhost:8800Y'Q!vyCFfUTJKYJSDadFhT:localhost:8800W'Q!vyCFfUTJKYJSDadFhT:localhost:8800U'Q!vyCFfUTJKYJSDadFhT:localhost:8800S'Q!vyCFfUTJKYJSDadFhT:localhost:8800Q'Q!vyCFfUTJKYJSDadFhT:localhost:8800P'Q!vttkrtSyHEJXVMlvLo:localhost:8800 6'Q!vttkrtSyHEJXVMlvLo:localhost:8800 5'Q!vttkrtSyHEJXVMlvLo:localhost:8800 4'Q!vttkrtSyHEJXVMlvLo:localhost:8800 3'Q!vttkrtSyHEJXVMlvLo:localhost:8800 2'Q!vttkrtSyHEJXVMlvLo:localhost:8800 1'Q!vttkrtSyHEJXVMlvLo:localhost:8800 0'Q!vttkrtSyHEJXVMlvLo:localhost:8800 /'Q!vttkrtSyHEJXVMlvLo:localhost:8800 .'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800Y'Q!vRRNxNyGboLHNhqQvr:localhost:8800X'Q!vRRNxNyGboLHNhqQvr:localhost:8800W'Q!vRRNxNyGboLHNhqQvr:localhost:8800V'Q!vRRNxNyGboLHNhqQvr:localhost:8800U'Q!vRRNxNyGboLHNhqQvr:localhost:8800T'Q!vRRNxNyGboLHNhqQvr:localhost:8800S'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800~'Q!vOfeZvbtpuHfoqShFl:localhost:8800}'Q!vOfeZvbtpuHfoqShFl:localhost:8800|'Q!vOfeZvbtpuHfoqShFl:localhost:8800{ o )o6]eQay$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3717}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vM"], "type": "m.room.join_rules", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"join_rule": "public"}, "depth": 9, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043904371, "hashes": {"sha256": "k7Il9Z+4uGk00u4riaav4ZblhTw/Ms1Q6M4VpmJSQC0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "zDD+DkGzewXcJ8V4hRQXArIPLJFXMWgnPFo7/wsk55OJkg6qliTdTzuwWeH5KnaEmNM0WHIVkLDJeased7taAw"}}, "unsigned": {"age_ts": 1570043904371, "replaces_state": "$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg"}}R\eQa1$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800{"token_id": 707, "stream_ordering": 3716}{"auth_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4", "$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs", "$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY"], "prev_events": ["$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0"], "type": "m.room.member", "room_id": "!qtelAHlSkrqEFmlCqS:localhost:8800", "sender": "@anon-20191002_181700-729:localhost:8800", "content": {"membership": "join", "displayname": "JSLIPXUGQHACXICKVTRL", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-729:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043903088, "hashes": {"sha256": "//8GHLWgx2Ra4K/1wjCjk9qNsx+f9kOkacPbUSu0D9s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "34UZ2beQjl/0u/1CbRHcU7TbZPA9RHYde81zf4KaGWVvJyiyXQgW5SnFk951S2nQTsJXkMbxGkM3j+RxX1NjCw"}}, "unsigned": {"age_ts": 1570043903088}}[eQa$x8zJ6yp-ugYpdQFbQCxBMql25J5BDe3RRy-JmymgHx0!qtelAHlSkrqEFmlCqS:localhost:8800{"token_id": 706, "stream_ordering": 3715}{"auth_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4", "$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs", "$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00"], "prev_events": ["$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY"], "type": "m.room.history_visibility", "room_id": "!qtelAHlSkrqEFmlCqS:localhost:8800", "sender": "@anon-20191002_181700-728:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043901706, "hashes": {"sha256": "RVSs5K26VyiGMRaPwfzQY8d3VIGEY7iLMPBNp2ANCCc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fClbLGbIYW53nY9dZzwIrghZjCu5bbW+hqspFvvnhQV6Uo1ZfRzLiN6Mzvq4G4guhum3RvClOhCh+H0oIyAOAg"}}, "unsigned": {"age_ts": 1570043901706}}tZeQau$KROgAIAuOwhmCkPPOGfjeWOstsWShurJesq5A2f36rY!qtelAHlSkrqEFmlCqS:localhost:8800{"token_id": 706, "stream_ordering": 3714}{"auth_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4", "$IBFGWK9NZuF6tqnjdj07jMnQRRzqUI8EMwAq0-HqeKs", "$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00"], "prev_events": ["$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4"], "type": "m.room.join_rules", "room_id": "!qtelAHlSkrqEFmlCqS:localhost:8800", "sender": "@anon-20191002_181700-728:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043900795, "hashes": {"sha256": "NvkgQlNu2XlVInXR0SpG/WQ8Z6PKboMul7s4Le2zz4w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "i0fNhwoPYMNTpOgwgeVPCmXXsSVh5H7eiZJmGAppkIHXYI+0T6Tmnql1zcttcqKQjTM8c7MpCiaBufKetAQRBw"}}, "unsigned": {"age_ts": 1570043900795}} eL r ?e  = _ &>dD bV t <jM]@anon-20191002_181700-720:localhost:8800@anon-20191002_181700-720:localhost:8800 XSMKELSYZZRIOKLQFSRHjL]@anon-20191002_181700-719:localhost:8800@anon-20191002_181700-719:localhost:8800 MILEDCIUNXUMWFEESQLVnK]@anon-20191002_181700-718:localhost:8800@anon-20191002_181700-718:localhost:8800 anon-20191002_181700-718j`]@anon-20191002_181700-744:localhost:8800@anon-20191002_181700-744:localhost:8800 LIBVRACXDTFHBVRAEYIUj_]@anon-20191002_181700-743:localhost:8800@anon-20191002_181700-743:localhost:8800 AZZDHJBDYOHRRTKDIRLPj^]@anon-20191002_181700-742:localhost:8800@anon-20191002_181700-742:localhost:8800 WNMMSFHZOBUAIGUKXEDSj]]@anon-20191002_181700-736:localhost:8800@anon-20191002_181700-736:localhost:8800 VBKUVYHGDOTERLMJKIKNj\]@anon-20191002_181700-735:localhost:8800@anon-20191002_181700-735:localhost:8800 SIQEQJQUXKKSPCJKORZNj[]@anon-20191002_181700-734:localhost:8800@anon-20191002_181700-734:localhost:8800 UXASHYODWFCQEAPTTQYSjZ]@anon-20191002_181700-733:localhost:8800@anon-20191002_181700-733:localhost:8800 RJATOAIYTIXPIBSXDZQDjY]@anon-20191002_181700-732:localhost:8800@anon-20191002_181700-732:localhost:8800 EAGTVMRMBZANCBKYPGOBjV]@anon-20191002_181700-729:localhost:8800@anon-20191002_181700-729:localhost:8800 JSLIPXUGQHACXICKVTRLjU]@anon-20191002_181700-728:localhost:8800@anon-20191002_181700-728:localhost:8800 ARXGZCNJYIXAFEYVOMMSjT]@anon-20191002_181700-727:localhost:8800@anon-20191002_181700-727:localhost:8800 JKFBUCGCEHWWKASRVNAHnS]@anon-20191002_181700-726:localhost:8800@anon-20191002_181700-726:localhost:8800 anon-20191002_181700-726jR]@anon-20191002_181700-725:localhost:8800@anon-20191002_181700-725:localhost:8800 EFTSGHSHTSNXHOLBSBGXjQ]@anon-20191002_181700-724:localhost:8800@anon-20191002_181700-724:localhost:8800 FZLMWKXFLBFUARZOWWMCjP]@anon-20191002_181700-723:localhost:8800@anon-20191002_181700-723:localhost:8800 GNPLVPMSZMJSVRMAEUVSjO]@anon-20191002_181700-722:localhost:8800@anon-20191002_181700-722:localhost:8800 YXANMQQXNLDNMDAEAWBAjN]@anon-20191002_181700-721:localhost:8800@anon-20191002_181700-721:localhost:8800 XOISPAUOSHVJCWENJUUSjJ]@anon-20191002_181700-717:localhost:8800@anon-20191002_181700-717:localhost:8800 HMVWDTIFKRGHQBGEGHRHjI]@anon-20191002_181700-716:localhost:8800@anon-20191002_181700-716:localhost:8800 MJNQECZFMFOOTUTQHDEMjH]@anon-20191002_181700-715:localhost:8800@anon-20191002_181700-715:localhost:8800 ILZFEUMGMNVXCRVUDWRWjG]@anon-20191002_181700-714:localhost:8800@anon-20191002_181700-714:localhost:8800 ZONDVATSKCZDRCJEXKOTjF]@anon-20191002_181700-713:localhost:8800@anon-20191002_181700-713:localhost:8800 KIPGYKTLFAKDJTVTRSGZjX]@anon-20191002_181700-731:localhost:8800@anon-20191002_181700-731:localhost:8800 ILOHRMOXOHIFUHDIJRANjW]@anon-20191002_181700-730:localhost:8800@anon-20191002_181700-730:localhost:8800 GSHKMOXHVOBRIYTDHTIE Z , ?ZkaeQac$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3721}{"auth_events": ["$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "prev_events": ["$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "type": "m.room.power_levels", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"users": {"@anon-20191002_181700-730:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043910820, "hashes": {"sha256": "N8QnHAuKJUcL3WZ5Uq3VQON4snbkcVnsXrK9L6YZ0mo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jZ0MT5bSxCmpnm6jwZykSoDnlH8niLAITG6YjXOsyzjf3iOxoSPhOwQ1IAdX6N+9O+p4WtnEE9vrVey3Nf70Bw"}}, "unsigned": {"age_ts": 1570043910820}}r`eQaq$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3720}{"auth_events": ["$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo"], "prev_events": ["$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo"], "type": "m.room.member", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"membership": "join", "displayname": "GSHKMOXHVOBRIYTDHTIE", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-730:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043910015, "hashes": {"sha256": "X2n3cDfgU2uVtVF51kbMu7bbFEdZH7Uef/4MRZVX3mQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dJfa8CKPM/4vaX3lR9EiIy/3kmx2WosU+d0PFLayORRdXkX26ByiGcFT8JabNbjAUB6AIdTu61fZm1hHu0FXCQ"}}, "unsigned": {"age_ts": 1570043910015}}i_eQa_$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3719}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-730:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043909211, "hashes": {"sha256": "CAzVbeCvwtxr+AoQhu9uuCFTW0zKzHbjAzAoTQnGUsA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yX4K4ewq+wvRKPq9gX4ihmPHFU6sldBt48/BOlOhZ0XYop5A7jgVa0zIlb2+s0bUQ0bi//aZ4X3QuA3BSPWvCg"}}, "unsigned": {"age_ts": 1570043909211}}P^eQa-$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3718}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU"], "type": "m.room.history_visibility", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"history_visibility": "world_readable"}, "depth": 10, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043905163, "hashes": {"sha256": "TBrK/5YSEzjenmaI9OTa7ABYOAyTe5SczxVb+q/k+0g"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KbSOvAjCy322OH/FZJvpmHTI544jyAamjhLovB4ZKDVyxRoGQsXMIPrMJ5/GR+URVCjXIW2/f5cfVVpVKO44AA"}}, "unsigned": {"age_ts": 1570043905163, "replaces_state": "$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w"}} ! 0 @ P ` p(8HXhxuu ]@anon-20191002_181700-770:localhost:8800$2b$04$iyqLDp57XN.PoF2tH4nn0.7qJQ0oQengTg/6Li.IarFBJ/Q5d3Wgq]{ut ] @anon-20191002_181700-768:localhost:8800$2b$04$LQ77zGwoEnyXcBk/8SVAAOO2PHlHrznS.4e2xO.d/QeK1Z7lLw2ie]vus ] @anon-20191002_181700-767:localhost:8800$2b$04$.unm6liFWCNdKDpovUbNe.7y7/3ItZWMoSqhkKQsbei2c1Sp8rvVy]pur ] @anon-20191002_181700-766:localhost:8800$2b$04$k.0v7Wh3QFTXsX8vQH45Ce3ore6BGfSQ6AwIYLelPxElmluYzI0Ve]puq ] @anon-20191002_181700-764:localhost:8800$2b$04$vT66eO4fWT0GmCvsE2AxtuRUsnQn.4WSBG5VusVNrJJQe6Y82C9AO]oup ] @anon-20191002_181700-763:localhost:8800$2b$04$rO/aCNksyWuBD2mLK1BOCu.PVoNBQiThARcGJ27o6Kg/dbAxLqiAe]iuo ] @anon-20191002_181700-762:localhost:8800$2b$04$ZWuqJ5y0TlCvr7GRadHv.urUOfShfj1MCe1sO3.dr2hePdA3KXuOu]cun ] @anon-20191002_181700-761:localhost:8800$2b$04$RpKsTGGSgxTI3clX5rQImut4iFYogWD8/CM9lKPh3QjXd7tlTUR3K]bum ] @anon-20191002_181700-759:localhost:8800$2b$04$57avwY3/qey9gb6V7df4nuAJAo8hWeIsdYyn74UmfIGwLHcdqkn.m]aul ]@anon-20191002_181700-760:localhost:8800$2b$04$XQMZqqMYWBcOZmoBaHzQkeIagB29JKB8OhJH6ikITb85CcR6z5DmW]auk ] @anon-20191002_181700-758:localhost:8800$2b$04$GU4MhzHzigx9OLToAmP7I.jKnC.QSt3qp6ZD5HMh2TldJ2YNxKTCS]\uj ] @anon-20191002_181700-757:localhost:8800$2b$04$yUtYHtse0jpQpoaPOFHUjOQGgKhVhSSEs8jnXbfkS4jigqAh.L.0C]Sui ] @anon-20191002_181700-756:localhost:8800$2b$04$sTyOiJZxeFdi.Ums2u3s3.GWeZ9Iw0SwYygyJ70BPV.FulaRRyxXW]Quh ]@anon-20191002_181700-754:localhost:8800$2b$04$hLm0hZO8f2KSJzUMJIw5cOPTkgVwc5u0kwlv8GwoTGCCPB5L.JxVi]Dug ]@anon-20191002_181700-755:localhost:8800$2b$04$E6yYsR9iek2f.ovLtM8d6OZD6/hDzizWE4QklJacUfN/7h02l4yJ.]Duf ]@anon-20191002_181700-753:localhost:8800$2b$04$IRzhURbp4SFR5b6.TVITj.O.EFZru5eiCuVXrT42OL.Y19qSqWZh2]Bue ]@anon-20191002_181700-752:localhost:8800$2b$04$OoIIz2eqkBzhTGOKVUkztOjqghIyGYizFTvgpDPBif1YSFFqDpUcy]Aud ]@anon-20191002_181700-751:localhost:8800$2b$04$Svyu5B.4g01cBJgILLnwl.7EPySL218hKJU3wUFu5GS3pdaM6ONRO]9uc ]@anon-20191002_181700-750:localhost:8800$2b$04$8iP751kduLZw5kg24y9IEOO5GebR81WiLCgWPoWTbNQ154svT6F5G]9ub ]@anon-20191002_181700-749:localhost:8800$2b$04$BxePNB.gOJ/s7d5.RnGvPeNPiu6GYnJKx1vM5EomVDEOtnAKmFxE.]8ua ]@anon-20191002_181700-748:localhost:8800$2b$04$iHFBl3KfR2iz9odHSH184eIYWGvQ264UypjTIf064wbmoM9blPUIC]8u` ]@anon-20191002_181700-747:localhost:8800$2b$04$SpDV4mYUlJIcvNKLPqAcSO1NUM281JrI9flfv5MddxovwlUWAkPey],u_ ]@anon-20191002_181700-746:localhost:8800$2b$04$EA2Rz.IpNCmd3cbb3SwOX.PT3ypL/gS9RXQyEG.ltZOXNV3A3cqqm],u^ ]@anon-20191002_181700-745:localhost:8800$2b$04$JVpmok/ckjUwteGQRg.ZEeB.F05lldZjMdKq/wOklX6D4o4dLyFT6]*u] ]@anon-20191002_181700-744:localhost:8800$2b$04$w7OcCpU.pejWLoZTxryswOsshvut1o7ceS/zDIDAUhsNY.rMs3YDu]*u\ ]@anon-20191002_181700-743:localhost:8800$2b$04$UpysgO8s8dhkugVzCB/6fejoBNXdICnXnkq1UWIgJYr3xeBxm6QEm]#u[ ]@anon-20191002_181700-742:localhost:8800$2b$04$TTMFSVJogHr2RhpcSq14H.UVyKu/tAAqWWwdZejR6E6rrnJwYuOKG]!uZ ]@anon-20191002_181700-736:localhost:8800$2b$04$lFPmJDuyCwZ2Su2d8TRLLOaVnVMUf6psn3/mmGVq6MH6Ug.HmRnN6]uY ]@anon-20191002_181700-735:localhost:8800$2b$04$DmTYrTv80lql5T.tYyjD7OK0kX4PKnUdzP/9uG6KCN0q4XhG6g3Tu]uX ]@anon-20191002_181700-734:localhost:8800$2b$04$QaaXtDqgB0VsU1SWoKfAOuzzW2tohnTNyB63TGwIEQZnZeIQb41Ie]uW ]@anon-20191002_181700-733:localhost:8800$2b$04$kOkTTmV4rkNt6TwQMFigMuRXQBVgQKeqxuLhiiSyRBmaS74gF0N5G] uV ]@anon-20191002_181700-732:localhost:8800$2b$04$Z2e3VU4DQ6vj1lHULlGhSOrnr0GazjWXSrIh7TsE9pqSnvHa2aRhq] uU ]@anon-20191002_181700-731:localhost:8800$2b$04$YRNrlK1bQk.m9WQSazN/DueZXCsdtDsx9KvfnB8Wd5qujk8tWOqJG] ~z v r n j fb^ZVRNJFeeQ$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800eeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800eeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800eeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800eeQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800eeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800eeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800eeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800 eeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800 eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800 eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800eeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM!NcJYmIbgjsaKJOzBcs:localhost:8800eeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc!ZOwibbprUCQrSJQCrx:localhost:8800eeQ$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800 8l D `82]c!E@anon-20191002_181700-745:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6PzrwoGZRCRCKGZN127.0.0.1Perl + Net::Async::HTTP/0.44mh1]c!E@anon-20191002_181700-744:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8QoMCGVEWCDCM127.0.0.1Perl + Net::Async::HTTP/0.44mf0]c!E@anon-20191002_181700-743:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQoYETXYLXSKF127.0.0.1Perl + Net::Async::HTTP/0.44mM/]c!E@anon-20191002_181700-742:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9ILSZKa0QzflJ1QT1-LDgKMDAyZnNpZ25hdHVyZSBguKf1F5usUxEW-ymzyksc0Q8Y0lwPxaI-buHV7z45HwoOLLAKSSDJK127.0.0.1Perl + Net::Async::HTTP/0.44mG.]c!E@anon-20191002_181700-736:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgoFLOTQJDCJV127.0.0.1Perl + Net::Async::HTTP/0.44m(-]c!E@anon-20191002_181700-735:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAoZQXZAKNBDX127.0.0.1Perl + Net::Async::HTTP/0.44mu,]c!E@anon-20191002_181700-734:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAoKYIXUZPIHI127.0.0.1Perl + Net::Async::HTTP/0.44m-+]c!E@anon-20191002_181700-733:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQoYGJVVHZCJQ127.0.0.1Perl + Net::Async::HTTP/0.44m?*]c!E@anon-20191002_181700-732:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAoXWWSSGHQCK127.0.0.1Perl + Net::Async::HTTP/0.44m<)]c!E@anon-20191002_181700-731:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQoQAJRBGVMCY127.0.0.1Perl + Net::Async::HTTP/0.44mӥ n )n7eeQa{$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3725}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM"], "type": "m.room.join_rules", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"join_rule": "invite"}, "depth": 11, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043914766, "hashes": {"sha256": "VVHwSU21TqgoIBtvh+aUr5zuA08En0t64LN0kRjyowQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RLwVsaQLYYughaE18LksnTGVHLFOyJRWnknlv51bHtmltTeQUCoZHnpctAZaDEgr7+brV7yS3LIZ6Dkz+jWNAg"}}, "unsigned": {"age_ts": 1570043914766, "replaces_state": "$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU"}}RdeQa1$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 709, "stream_ordering": 3724}{"auth_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0", "$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0"], "prev_events": ["$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM"], "type": "m.room.member", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-731:localhost:8800", "content": {"membership": "join", "displayname": "ILOHRMOXOHIFUHDIJRAN", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-731:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043913740, "hashes": {"sha256": "lSgCj/mQEz/yZRObrEHe+qSMBrDer0n+e2a8IBtrx0U"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Mij0X7tDNvBwFvldvkdCWIo5gurIjtVaXxJn7vwAVti8BqGnT8gSnyA4fDJxVPXVM0o10itDsq4r2fL0R84lBg"}}, "unsigned": {"age_ts": 1570043913740}}ceQa$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3723}{"auth_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0", "$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "prev_events": ["$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0"], "type": "m.room.history_visibility", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043912353, "hashes": {"sha256": "1B2to39mXCtLeSziXLr3pgORtJpB3lNKRFKnCVu4mJY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "R1hcQFZPOv1rgEYvwhUF53TW4ZmVK9bD8kdH3jlVHnNrszQkLLW538GN5UOFZSpdGWwjc/UMeDIix79ydaMPDw"}}, "unsigned": {"age_ts": 1570043912353}}tbeQau$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800{"token_id": 708, "stream_ordering": 3722}{"auth_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0", "$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo", "$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCSc"], "prev_events": ["$SqfYMudHvHUujRkS-CjlEhA6s4iU252YC038-W2loT0"], "type": "m.room.join_rules", "room_id": "!ZOwibbprUCQrSJQCrx:localhost:8800", "sender": "@anon-20191002_181700-730:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043911553, "hashes": {"sha256": "eNzb7F73U5uitZSd4uRinhKEHO0QAEDDyjZ1n6xNbjk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8wRizdr7QtqCy7F317AwTKbLHorKJTaAlpwERJko78GEZS2Xfd3G3cRgwDS0GVwIFhRTgAT3PYwFEM7HshrZDA"}}, "unsigned": {"age_ts": 1570043911553}} 'fj8q@ z H  N  T " Z ( ` .f1e$9sFzY37yFr2baWjz6sc0LhgUwEs4SsTeUjeO1wYQJwA 1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQe1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQd1e$9m6OF1qrXBsfGeaUclbUo2fS54Wdvl_l27cZUzzcucQc1e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk51e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk41e$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUk31e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukC1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukB1e$9epPWV-eMgq0IzPjzFugXYvPFUxp2nL6YL0e7KR4KukA1e$9dvolLU5Ld5-gEMoLMag2yWP1v9wh_LI70aScNo1zqw1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9dv6WLyKf5oFK5uw5uFp3-9MeBrD6ANqDZ2f0Eu-Mks1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI1e$9cGOFQ18etHJGW8Fh_tHM8xX6CwrH3-9XNTYsv690RI1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0h1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0g1e$9bgdYN_N-dXH7TRrFQVP-s1VAxgIxZjC8BZMPvXAWK0f1e$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXA1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z58ozfimVeFel-MWgCfNuixLLHMCrIU9JJRTV3yNqE1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8=1e$9Z-Ku2KeUrP84Y1wVVlXsTK0Nnajxbp5bDYJzshpcl8<1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIG1e$9Xp0xvm77jcaTfOlTyyP2GZRmlhaVp-vXXduE4g9pgIF0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU+0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU*0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU)0e$9WJbvhzmoHQQV4fNM16Ia28jx91bP8KUqKJ8_waNblU(1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9WA95n4pbt871YezUaJhALzvlAG1PRDB3obrabbYQVA1e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9UWtFO5jU9S9gVSj02fbnvPd0lv6UazD95oKX3J1Aw41e$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjk /Ij8pW> v ] D  | c 1 i 7  o = u C {1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAL1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAK1e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAJ1e$7IPX0wVxHB1YUqi8LAksaWKRfqWem1vB9auU4MStVoQt1e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV031e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV021e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV011e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV001e$7HpiyLrInX4wPrM1WF4lHn_4-c29ukrXklAV2WgWMV0/1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$7HP5OsRmjy5rgv4L251ShuGMzIgP5f88W_Z2ZaZ-XgU1e$7GeP5BIWvryulk38jJKffSJPeQQbzzuYtYnmbUMg8IQ1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7FAd1h5PM5Mszn5DfN1MpsubzvverMm8pXs0WTUt44A1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE1e$7AymsHy/A6ZZg1Aue8gusIc0LFojwimhRDTHz4JhTXE3$79:localhost:424553$79:localhost:424551e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM1e$78ohSliUXonT-EdZ0MFS4b-qim_sVcUFUpmU1h--ZFM3$78:localhost:424553$76:localhost:424553$76:localhost:424551e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ41e$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ43$75:localhost:424553$73:localhost:424553$73:localhost:424553$72:localhost:424551e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM1e$70A2SbDJG7VidIXtxWeUbWY0H_dx4MNTQ-60eAbbKzM3$70:localhost:424553$70:localhost:424551e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$7-O8QDn-me_jKnpqYer3Z-yF_Bcd3hWKzjnX0NDA14I1e$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k%1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E u1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E t1e$6xEcQVTjuRGlu3Tvyai8L6XnXo34jV-aGA9BEy6eY5E s1e$6vZUExYs29z0nY9Nxo-rb5tpgh1P4om95PFfnvbco8Q 1e$6t6+6oysYksmHA0Yf3//5yZX+qLHo+1eOLLSGiWdFA83 a} { y w u sqomkigeca~neeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~meeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800~leeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800~keeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~jeeQ$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800~ieeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800~heeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~geeQ$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800~feeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800~eeeQ$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~deeQ$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800~ceeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~beeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~aeeQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~`eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800~_eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~^eeQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800~]eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800~\eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~[eeQ$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800~ZeeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800~YeeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~XeeQ$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800~WeeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800~VeeQ$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~UeeQ$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800~TeeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c!NcJYmIbgjsaKJOzBcs:localhost:8800~SeeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg!NcJYmIbgjsaKJOzBcs:localhost:8800~ReeQ$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU!NcJYmIbgjsaKJOzBcs:localhost:8800~QeeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800~PeeQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA$T3PlsTLPUpvBVAErDyFqEKhCYfJE70mdhH4oOh3qjCo!ZOwibbprUCQrSJQCrx:localhost:8800 Jxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    p x h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80(                                                                 ~  |  {  y  w  x  v  u  t  s  r  p  o  n  m  l  k  j  h  g  f  e  c  b  a  `  _  ^  ]  [  Z  Y  X  W  V  T  S  R  Q  P  N  M  L  K  J  H  F  F  E  D  C  B  A  ?  >  =  <  ;  3  8  7  6 ~ 5 } 4 | 1 z 0 y / x . w - v , { + u ) s ( r ' q & p % o $ t # n " m ! l k  j  i  h  g  f  e  d  c  a  `  _  ^  ]  b [ Z Y X W  \  V  U  T  S  R  Q  P O N M L K I H G F E J C B A @ ? D > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                  ~  {  {  y  x  w  v  u  t  s  r  p  o  m  j  j  i  h  g  f  d  `  _  ]  ]  \  [  Z  Y  W  U  U  T  S  R  Q  O  M  K  K  J  I  H  G  F  D  D  C  B Jxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80(                                                                  }  |  {  z  y  w  v  u  t  s  q  p  o  n  m  l  k  i  h  g  f  d  c  b  a  `  _  ^  \  [  Z  Y  X  W  V  U  S  R  Q  O  N  M  L  K  I  H  G  F  E  D  C  B  @  ?  >  =  <  :  9  8  7 ~ 6 } 5 | 3 { 2 z 1 y 0 x / w . v , u + t * s ) r ( q ' p & o $ n # m " l ! k j  i  h  g  f  e  d  c  b  a  `  _  ^  ]  \  [ Z Y X W  V  U  T  S  R  Q  P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                   }  |  {  z  y  x  w  v  u  t  q  p  n  l  k  j  i  h  g  e  a  `  _  ^  ]  \  [  Z  X  W  V  U  T  S  R  P  O  N  M  L  K  J  I  H  F  E  D  C   .tieQau$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3729}{"auth_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo", "$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "prev_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo"], "type": "m.room.join_rules", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043919398, "hashes": {"sha256": "vRGiRNp2ghLaSZLlizjSWn1dmEA8HgZuQGSw4pMZfAo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8g+nLwcZeSVZ1umDuc0PGefxp1BRBVhd3U0fXmMbcVyjLn9Yfl4/XUbzJmwurvqtLABL85LQNPLW09ED0b35CA"}}, "unsigned": {"age_ts": 1570043919398}}kheQac$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3728}{"auth_events": ["$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "prev_events": ["$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "type": "m.room.power_levels", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"users": {"@anon-20191002_181700-732:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043918666, "hashes": {"sha256": "dqNwaIS0Z0KRXJWrmbXUAOVteI3YwyQgvGxpRUy2+IE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "1FlPlBuV+isGeEeSuWvRdSHe72ECbkXVkaSzf+jlCNekjeI0w24liwk5PMSByEIu5m7nqiMsWNaiLJ1UmAdZCg"}}, "unsigned": {"age_ts": 1570043918666}}rgeQaq$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3727}{"auth_events": ["$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8"], "prev_events": ["$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8"], "type": "m.room.member", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"membership": "join", "displayname": "EAGTVMRMBZANCBKYPGOB", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-732:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043917650, "hashes": {"sha256": "0v+2eYy/ybgGCOvD1Hg0Zze9RAVz3qDmbPPLmJn+f84"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ixogrA9pWjshzKS8tgpV0zWwNU8oktpqeBd9peqj14HICXozMfKEZRBUT2xCf/VLjo7f7lM9THtZpZMZU0rLBQ"}}, "unsigned": {"age_ts": 1570043917650}}ifeQa_$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3726}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-732:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043916793, "hashes": {"sha256": "YMTgSheuwYdMSabj0/kqpmY8JhzfYc8Qy8lIU0qD890"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jnAlwNaHBkKu3cSl5tflt6Z2g9DthEzuO0XtuIoxS67zuWeXkzfa6esZEcb3bkx2yqUxLESNFhJn8P0KNp0DBw"}}, "unsigned": {"age_ts": 1570043916793}} Q<W%?]+}j8q? w w E ,  } Kc   X & 1j8}}1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI31e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mM1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBA1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj01e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGA1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H4_1e$qTSDhMtQPuwQT2Uc6HOg0myE0Rs_p-U35Ptn4JBZ8hkl1e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ31e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gW1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs,1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ C1e$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y  1e$r5UzsuGWNlygnHA3Jy8lHAjsZcMxvMQcceJIKzuXc7A z1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIuq21e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00(21e$rh2Gczv3iwUBMP6ur62b26Wn8Uqqg-CeluLrtO4gym40e$rgzIEGC8aO8QUUVvFrCx2cVKt05WM5O-bQhQPiN-SJYp1e$rgdfQ5hH6OAz0OhQ_lKilPmQouMn9Di0wDVlyzt06Ao1e$rfsi3kFmxirTkwROeswax3YKKq4zb3i0lgPT31y8MGo0e$reU9vi6V8zh29FCxBaUoZcFnBP3XB_oxyFg1d9q4s4c1e$rbjICXt0lGBPgAKRud2m7siROXRBo_-9rYLMTunL_mM1e$rZofCxCZmU4o97XtbcAYhFNTbDuXI2ZMaHj32CX8eyM 1e$rZl44-hsOFUfGs_V2sfPZYtXuuLu-TndJ9YUJxWA1SU1e$rZdrAg1xPMzPMgcxp84CBvM8RZ0OIMemDuhR-9UqFeE1e$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQ @ ^e1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$rElMaBuCa3811hr70fJCOEkO5xtjjHJQImPFRrRKH9A Qd1e$rLf7DBt8HR2D1YOakzjmGXIwRYqlM94Nwtzylsvmn64 V1e$rZKQrJaIbdVHWq82ST3djaAVjbJjn8QUl6p0u9RWJk4 S1e$rYogWL069n5HwZQlJ2hk5jxDUj1hpOGnffc-YoyDZ001e$rYICLKkVZjcuvCtddwCV_Vj4nyds30cTSKjF86z7gLo0e$rXac3t8p9KZzFxf8bLks_5vQHorrF6EGs-NAjL6EDjY1e$rVNSBopFsrUDFUCXvQYueX6g8HCnXCPPRH7H36GJtuI1e$rSAsD1L_EOHzrmBPF3cFR960GAQxDC-KN0LBYZDe4vki1e$rQapFkiUMevdKH24q-TZGGoim6Qe6faTFLOC9OvgqY0 21e$rA3Zf7DBR4Tyo4f3n304ZKsG6yyUHg74Cop_JC85zvs )21e$rR6DXMW7uhPKheVmvWXiSMQqYUe_x0hISEYXvUEYf-0g1e$rOn2YHb4OIO2knO4WMwr_9zkY3zJydXTF33o6CK_zgo1e$rIMCS_z3-3PanVYTuYAS9d5tMmScmZjA7EZr68bwYQk1e$rIEX5_4TKgCHFB7x7KtqxP7gWeY3bgJSeyaVA7sfHNQ 1e$rHrc4t9KxKEvISiDGHyqlrf7hReFTUQOtDRhGzCEubg%1e$rGNLAM9RZcjJBbV1sl9Quu7ydwU8y4CQdZawo8VUu9o1e$rFzff7NJ6oyaL4U9atUSp1_BR2PPof9VGen0Ni58JVI1e$r9q2mrT1xs3LuZLBaz7sUSJTcRAEQKMHaklYJt2TnEk1e$r8j_d7LUDH8i_TmLql8lY4eI1KJZPPtqo7bR469p8bs1e$r4NIZVKgOkP9CtFPFRzRBy9Tg7Zs58QCZHf0xyJMKL01e$r3qMWNO5D00K53Ld0Vrt2dMryXRq-Hga92knJAsrgfI/1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEk1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m4{1e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK4u1e$qvG38bWLypquXDQKN5jqqggkQNwk-MTlNsPZ7YlIzMw61e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw(1e$qqXmVE4zM_4WYqFWw2DjxSDlyvvqXfF9BT2aJcesJng41e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ71e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG82 5F  h  `mE}U-g?wO' P (  x @ _7W/oG8p X 0   X 0  'Q!ZOwibbprUCQrSJQCrx:localhost:8800L'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!ZvLVbnHjeymRiFIkYr:localhost:8800{'Q!ZvLVbnHjeymRiFIkYr:localhost:8800z'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800n'Q!atnRTMliktaVUhMVID:localhost:8800m'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800P'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aaRwQZdNAliyvRHpjs:localhost:8800W'Q!aZwMKYDXJRlSKjQNWM:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800'Q!aWvVRVaDflYyyGTOdD:localhost:8800&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800g'Q!aLxrqpqLkbzyIxGgpk:localhost:8800Z'Q!aLxrqpqLkbzyIxGgpk:localhost:8800Y'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800V'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800 +'Q!ZWANpHlizyLrUiVvAm:localhost:8800t'Q!ZWANpHlizyLrUiVvAm:localhost:8800s'Q!ZNIjCvcWhgcwskanjT:localhost:8800m'Q!ZOwibbprUCQrSJQCrx:localhost:8800M'Q!aiOswwhoZqjhcjzbzc:localhost:8800@'Q!aiOswwhoZqjhcjzbzc:localhost:8800?'Q!aiOswwhoZqjhcjzbzc:localhost:8800>'Q!anErKtXIsVKEEsrzWM:localhost:8800;'Q!anErKtXIsVKEEsrzWM:localhost:8800:'Q!ZKPJvrCZHMHPEksYDc:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800P'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800Q'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800n'Q!YpcmaMNMzjvtgYtrli:localhost:8800`('Q!biBIcqnGelHvLnpkOu:localhost:8800E('Q!biBIcqnGelHvLnpkOu:localhost:8800F'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800  4 h j6d]c@anon-20191002_181700-772:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAo127.0.0.1˂d]c@anon-20191002_181700-770:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQo127.0.0.1ɂd]c@anon-20191002_181700-768:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAo127.0.0.1ǂd]c@anon-20191002_181700-769:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQo127.0.0.1Ȃd]c@anon-20191002_181700-771:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwo127.0.0.1ʂd]c@anon-20191002_181700-767:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQo127.0.0.1Ƃd]c@anon-20191002_181700-766:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQo127.0.0.1łd]c@anon-20191002_181700-764:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQo127.0.0.1Ăd]c@anon-20191002_181700-763:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgo127.0.0.1Âd]c@anon-20191002_181700-762:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1Qo127.0.0.1‚d]c@anon-20191002_181700-761:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQo127.0.0.1  wimeQa_$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3733}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-734:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043924772, "hashes": {"sha256": "pgGdmSnsWATLl7+MfBovKcGEkVUrS1AqHPsHepktA8M"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DVKifwlP8caXBckLWL3FeSz4QE2bEgK5AZMUM1VK3NQ9HBGlHmh+6NyajHj97jWZqYAEI+wnVpp2bUGqNPXpAw"}}, "unsigned": {"age_ts": 1570043924772}}HleQa$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800{"token_id": 705, "stream_ordering": 3732}{"auth_events": ["$yALly74YB5zk5U-u8C-iK7-hXwWWI8xjiHlEHDFw_hU", "$iS5jI6d5BK4wZOz5awawEGBX77GW4v_Wa4aUTVouZSg", "$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8c"], "prev_events": ["$chZNYqkSgakKp5rkXWRMDz-IHEgxZ85aO4GDW0Odx90"], "type": "m.room.history_visibility", "room_id": "!NcJYmIbgjsaKJOzBcs:localhost:8800", "sender": "@anon-20191002_181700-726:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 12, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043922242, "hashes": {"sha256": "LLESGbX+3jEIm6YFUb7H9c1RKpvPJw2V8afQXKKLNR0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZOI2EFd+ojS8kkoOREnHN01ZCe9jYBuEb/4avUrAYZXeDKN7SkdrUAtddGwzeUdyfSc+tjRlq3hBZJsr7BlDDQ"}}, "unsigned": {"age_ts": 1570043922242, "replaces_state": "$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM"}}RkeQa1$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 711, "stream_ordering": 3731}{"auth_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo", "$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ"], "prev_events": ["$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4"], "type": "m.room.member", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-733:localhost:8800", "content": {"membership": "join", "displayname": "RJATOAIYTIXPIBSXDZQD", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-733:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043921289, "hashes": {"sha256": "wXv8ei+CvgcdQN74O0G6Fk3DzDEebUycCG+rRO5K3rc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QXQvG80rsBx+KgXuYZRPJ1W4oIvo1xSZrXTVec+QS/ULIMsG1ijsfnxfcJ476iQG+w0unMpSApDGROUYuMnXBA"}}, "unsigned": {"age_ts": 1570043921289}}jeQa$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4!BPNyKqmwcpGxIbGFZG:localhost:8800{"token_id": 710, "stream_ordering": 3730}{"auth_events": ["$_VSRxWmJWw_Ozx_YZHdxBbamCuFTGfL2veVWrLdzzXo", "$YZcG-6tLvOwfC2WITvKXR5dGR1y4kN2G01ME2vUGoA8", "$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8"], "prev_events": ["$nuhSu7SdDHx84nky1xUxdZPE9HJvz5ox5r5vxGm6lPQ"], "type": "m.room.history_visibility", "room_id": "!BPNyKqmwcpGxIbGFZG:localhost:8800", "sender": "@anon-20191002_181700-732:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043920046, "hashes": {"sha256": "u5IM0OlI0WrlTJ8Yg/OIqHLSG5/1ohUr25DROjnjvhU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FZFvxFeeq/HkY/PhcUGT3BwM1VNTKSm+WjWy9wi3/YmbJFbZOxEf81iGxudo8+M3DturaLoX22ISiZ5Df1UtAQ"}}, "unsigned": {"age_ts": 1570043920046}} ^] f  $ ' IAJrox 96^hpQ/ e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rules$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMjoQ3 e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM nQ']e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IpmQ? e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibility$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkdlQ' e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.create$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0hkQ/ e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rules$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0jjQ3 e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 iQ']e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUodhQ' e!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ gQ']e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegopfQ? e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibility$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oheQ/ e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rules$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0jdQ3 e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y cQ']e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0dbQ' e!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU8aQ']ee!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK08`Q']ee!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4 _Q']e!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4p^Q? e!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibility$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYh]Q/ e!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rules$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cj\Q3 e!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ [Q']e!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcdZQ' e!eGEEtFXUXuZDImkeql:localhost:8800m.room.create$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU YQ']e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8pXQ? e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.history_visibility$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFoghWQ/ e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.join_rules$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAjVQ3 e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.power_levels$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras UQ']e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIdTQ' e!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.create$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvESQ? ee!NcJYmIbgjsaKJOzBcs:localhost:8800m.room.history_visibility$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90$bBmQag4KZ3_GmgQyviWJjy_8xBvL2USNxxvSIQk7qvM RQ']e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.member@anon-20191002_181700-733:localhost:8800$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1EpQQ? e!BPNyKqmwcpGxIbGFZG:localhost:8800m.room.history_visibility$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 2@MZ 3>uQdbu& 9 L _  r # 6$P]Q@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800vP]Q@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800pP]Q@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800oP]Q@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800nP]Q@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800mP]Q@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800lP]Q@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800kP]Q@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800jP]Q@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800iP]Q@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800hP]Q@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800rP]Q@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800qN[Q@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800-P]Q@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800uP]Q@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800tP]Q@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800sN[Q@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:88006N[Q@anon-20191002_181700-87:localhost:8800!duCKuavMBSfRbTFPsc:localhost:88005N[Q@anon-20191002_181700-86:localhost:8800!duCKuavMBSfRbTFPsc:localhost:88004N[Q@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:88003N[Q@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:88002N[Q@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:88001N[Q@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:88000N[Q@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800/N[Q@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800.8/Q@random_dude:test!oXKJArsPmtgaYANBrg:localhost:8800b7+Q@bob:matrix.org!aLxrqpqLkbzyIxGgpk:localhost:8800Z7+Q@bob:matrix.org!WhqVaRReBxJXADAyYD:localhost:8800\N[Q@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800KN[Q@anon-20191002_181700-99:localhost:8800!OMkiVTuuOEeiFAXtUY:localhost:8800IN[Q@anon-20191002_181700-98:localhost:8829!OMkiVTuuOEeiFAXtUY:localhost:8800LN[Q@anon-20191002_181700-98:localhost:8829!OMkiVTuuOEeiFAXtUY:localhost:8800JN[Q@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800GN[Q@anon-20191002_181700-97:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800EN[Q@anon-20191002_181700-96:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800HN[Q@anon-20191002_181700-96:localhost:8800!BrssELMbasSzTFpIXm:localhost:8800FN[Q@anon-20191002_181700-95:localhost:8800!RmdhCjvouVLmyIHjaM:localhost:8800>N[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800DN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800CN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800BN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800AN[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800@N[Q@anon-20191002_181700-94:localhost:8829!RmdhCjvouVLmyIHjaM:localhost:8800?N[Q@anon-20191002_181700-93:localhost:8800!EyEaTZElOkdURKbEXo:localhost:8800;N[Q@anon-20191002_181700-92:localhost:8829!EyEaTZElOkdURKbEXo:localhost:8800=N[Q@anon-20191002_181700-92:localhost:8829!EyEaTZElOkdURKbEXo:localhost:8800 v DP   | J  P\  * W %V i ] ] +1e$kBLr7EST4QEvWU_U-yEUfyr7cqlsCkxYwLr7jU1CK_w#1e$kcV0lQ6a3vgelWYfT6zu6aycnhvz18ooEi3/jA4aazM 1e$l7N6SEoCqoeGU1rYC1KYUnPbzUovMhScdNv3HR_aqssD1e$l2-wJxSiHgpmFi2q-Zi_4ZYfN9UcxRKrKi_B-4uB0bY 1e$kOc83yWfAckaebVy9xkkM73wniW7skQc3mtAcJV03V8>1e$l6swv5PCnmLwP9gpdFa9IL3y2fnb1/fQvlnE9fjKQNo )1e$l1aLtG5o_RBdferB8uztV5FZLux562_71Vi_jdQrmrgo21e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebak1e$lGmBhhrln4I0WrNWPNDjUQGlB1OHieN9Tyb8N48IW3A 1e$lEZA8ZyuDJEk_-1da1XdvYx30cB59cpALgrx1G7YPvQ <1e$kWGPZSWEHj+y0XCMd1LvTb+2KlkEMkW0MTcDYl3i7Fk 1e$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ 71e$klz32FxiDVy2lmIzL67qG9Z7p7tAij6LcCPWKMU44Gg 1e$l8blafcoYakjN0hN-wxqE68PMTzzwxeeFc28_zrOeyA1e$kuUrri5hCZ7ues_j_ER_wTsxIQn9_NQJszbkQF6yJ60 1e$k4b9eubeplp1bj9Sm8q8mbjxYtuZEnNHjDACe_ATF7M1e$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3I 1e$k0Xqd64xwW5Vyy_IlLzqggCo23eDzSX0mUFndzWN3B81e$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c1e$kKrrDC617495pzAs8f1TGwXNDoFaZ-oG4UVlSaCjucM1e$kFFuC6YnCfuPJ6mXJ8Gcjm5MYbT-BfSYWsrC3JAuCz81e$kB4qdNghw0N42cyrMdugT-qN5bjOQq66cnapFRoueLk1e$kA30nRTTq9Nb83ZEHrk_M0WhJn6iNX5sw7jTO0ueS080e$k9Zh4u6DNIBaNyBD8RnbPIU8YUpqkP80sUoM2nauwPA41e$k5jByAmBSlN7usWw0DlGEJa71jivM6qxReOzW0jckA0,1e$k2td68oAuYIqrEbH-Y1zujIM2yx-8IrUqBFFS8lmEQ81e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0 1e$k3bDur9aIGP2kJtKMAdI5MGj4St3fBfBrsSy2RSTLmQ 21e$kBVQGOwEjkPNZFT0GXMrBBSViGkdj2p3WB0Jt1-AP5Y 1e$kP5dNq6sssM448LltaxOWu48LKaSUKuta7quXtPQHf8 1e$l1sikScws7Xmb4iGRRW6q4W2IjjhF8Rp-GXPmRwQtBU ~1e$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeA G1e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0 >1e$kP03hwq__f8n4lJWnqevR3Os-oxXcBMsI0hQmr67oD0 "1e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xo 1e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8 1e$jzXRisgVu9H6lVVShoOQ9WEmxu2KxH31ScFrRTNU6ig1e$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexsp1e$kHhlDVDr83oKiQGexkcan0I-E2GBSuorPdk6lqsSkIU-1e$jvuEiz+tua9THd1ayQ+nmssBHdZ7g+n7hSjyKPdXY84 1e$jsjGTS4UjmfNUa4m_xsIA1F929i3IGcvXT75v39TcNA -1e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E1e$l9KTxc-zx-jbtltqjuKeWNbV2EAMpa3QPzebg387rDU0e$l67vSkW0yIlqCKkLXtVUnTKBMy5YaKG3lqAXrZtTZ30E1e$l5TzMfaxUSCegXZnikn28ZNAbxiwNhmds2yojUqfqZ41e$l4lf5q5kMWAhqx0A-H4hiBM7xz370o5zPeSb8w_yLREC1e$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtUj1e$l-T3V5Rh4jd3u7WwYsKcQ8tV642wz7YgjubEIVv2xpEU1e$ky3Kswg-_osFX11W12mg0VIGBSIqRzLOETgKoRLoPu0&1e$ky28oKEpBe3AxfL_yGzBDU6l3pVrJvtFvI8Qpk4-gR41e$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo1e$kvkVPa9lmeT0GRc0Xyxfxm0VvCIx_nIftyrBmTaNUCw1e$kvQ2I6YLtPc1uF6n78tX9xLnBvh28PetlUyO37GGFLk1e$ktLxYJL0ewJBVMJKlnflLaUwOnH7RXJxhrQuT2c8ino 1e$kq-044wfggpcdyCOBtbLHann8UTW78ynsRRv3bcfim491e$kpgLF2p3CQNR0efUBkryXmNy5LyklO3QfLrK43fL8T81e$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw1e$klklNeo1XSVtZ6ennvDUCGLo_ubbge6zo7aqqFafP9A%1e$kk0XW8TUtC8Ue4GtEeop87HzdNK6USXODxmie9w37tM1e$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC01e$kfDeFzOb4StNHrCCoyELtf--GJpKlt9a4YbCud4Xp_g1e$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM1e$kc0rYswL00ZpH6-6UaKFzBfBCjr9AXisPyGtUVIGgTYg1e$kaUIB1C2craD4rANtOHiYToGPPzkj29wBqrXXo3X4H41e$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg1e$kYwyrVu-reyyVrG5dK__bGa4UcrgBpH6fY9eHcTZEmc1e$kSP2uOH6cdwp5AuHBdE70aSYcKb3x0AJoEbTVvhCrHg/1e$kO4zFsrqHBPFJHAu4VAQ-vuN4rjSMFWaRNGvc5nhdTQ1e$kaSGYmlCd4CjvFVS_GoHuYdHi1MKhyHMgbYg1Q4NnrA1e$k+Z+etTNMzavz5ftqSeT0LjBGmLqzoHV66leSZ3obqA 1e$ktJ8eu_AvsEg5qru9x3qbgftoAouQeJBwIACwolwceg" -RM H C > 9 4/*|%w rmhc T3Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgT2Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUT1Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsT0Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcT/Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgT.Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8T-Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwT,Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsT+Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_YT*Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwT)Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIT(Qe!LFBhoxJpmBqFrwEzGP:localhost:8800$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicT'Qe!URpLZLuBfVcfHVTBGS:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywT&Qe!URpLZLuBfVcfHVTBGS:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkT%Qe!URpLZLuBfVcfHVTBGS:localhost:8800$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEoT$Qe!URpLZLuBfVcfHVTBGS:localhost:8800$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01ET#Qe!URpLZLuBfVcfHVTBGS:localhost:8800$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMT"Qe!URpLZLuBfVcfHVTBGS:localhost:8800$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMT!Qe!URpLZLuBfVcfHVTBGS:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IT Qe!YaLuQzmJKSMTSFEqjO:localhost:8800$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkTQe!URpLZLuBfVcfHVTBGS:localhost:8800$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0TQe!YaLuQzmJKSMTSFEqjO:localhost:8800$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0TQe!YaLuQzmJKSMTSFEqjO:localhost:8800$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0TQe!YaLuQzmJKSMTSFEqjO:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoTQe!YaLuQzmJKSMTSFEqjO:localhost:8800$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegoTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-oTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0TQe!cOFSwLSkxZECJMvjjZ:localhost:8800$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0YTQe!cOFSwLSkxZECJMvjjZ:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0TQe!cOFSwLSkxZECJMvjjZ:localhost:8800$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUTQe!eGEEtFXUXuZDImkeql:localhost:8800$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgTQe!eGEEtFXUXuZDImkeql:localhost:8800$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0TQe!eGEEtFXUXuZDImkeql:localhost:8800$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4TQe!eGEEtFXUXuZDImkeql:localhost:8800$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYTQe!eGEEtFXUXuZDImkeql:localhost:8800$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cTQe!eGEEtFXUXuZDImkeql:localhost:8800$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQTQe!eGEEtFXUXuZDImkeql:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcT Qe!eGEEtFXUXuZDImkeql:localhost:8800$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUT Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8T Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogT Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAT Qe!ZOpRjvUhkWYJBFJZeO:localhost:8800$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasTQe!ZOpRjvUhkWYJBFJZeO:localhost:8800$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxITQe!ZOpRjvUhkWYJBFJZeO:localhost:8800$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE  qeQa$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3737}{"auth_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras", "$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "prev_events": ["$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA"], "type": "m.room.history_visibility", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043927890, "hashes": {"sha256": "E928jahmZ2AhpT+p3eGLYY44IXVeO2Ercf0tRtL2kxA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JU0czTx+F3H6ydM+klFcOZ/1EeM5KC+QD/mFE4qy6cQMjUwDvPgJqEJ7hGvQGlSbD48MtYAACo7zM4y/tHs5DQ"}}, "unsigned": {"age_ts": 1570043927890}}tpeQau$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3736}{"auth_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras", "$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "prev_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras"], "type": "m.room.join_rules", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043927146, "hashes": {"sha256": "AQBJUiN+SWR5aXRLQpqZTEOq9pz6zWcGmzS92dPf7sQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mnBBO6V+FCQwYNizgQrXk6Z1cSpoyPDyZNR0rtnj88cbVMGvQ/p75RgoQzYJMgCNX2lMIPQEKz4oZOd6+JqzCQ"}}, "unsigned": {"age_ts": 1570043927146}}koeQac$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3735}{"auth_events": ["$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "prev_events": ["$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI"], "type": "m.room.power_levels", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"users": {"@anon-20191002_181700-734:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043926407, "hashes": {"sha256": "0k7Z9afxDRSyfUongmncB+Y9MW/I8YlK64KEF0uDeLc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SC1cK4Xl2PHMVnqaI+p/9AtGJ7wa2ZlV10fsnPvzBKw5WooyqobvjxWHE5n+Mv36MrkyqeCmisqo08gatUoyBw"}}, "unsigned": {"age_ts": 1570043926407}}rneQaq$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxI!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 712, "stream_ordering": 3734}{"auth_events": ["$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE"], "prev_events": ["$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE"], "type": "m.room.member", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-734:localhost:8800", "content": {"membership": "join", "displayname": "UXASHYODWFCQEAPTTQYS", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-734:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043925708, "hashes": {"sha256": "Zbz714Mna6LM91F3DLd2MArazURqRQS03Rhof4uKkNs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "idsyE9kIQtX++z3XXXYooY+I/1pK3TjpmXvhsKKR6nAgoJucuj2lMd8dIl7MkYb7fp8temtC6w0sEwueL6CaBQ"}}, "unsigned": {"age_ts": 1570043925708}} PV Z  j  n&6:JP,.e?Q ]$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkm.room.history_visibility!YaLuQzmJKSMTSFEqjO:localhost:8800m}m逕@anon-20191002_181700-744:localhost:8800- e'Q  ]$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0m.room.create!URpLZLuBfVcfHVTBGS:localhost:8800m|ym|@anon-20191002_181700-746:localhost:8800$,e/Q ]$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0m.room.join_rules!YaLuQzmJKSMTSFEqjO:localhost:8800my0mz@anon-20191002_181700-744:localhost:8800&+e3Q ]$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0m.room.power_levels!YaLuQzmJKSMTSFEqjO:localhost:8800msmv@anon-20191002_181700-744:localhost:8800 *e'Q ]$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUom.room.member!YaLuQzmJKSMTSFEqjO:localhost:8800mm mn@anon-20191002_181700-744:localhost:8800) e'Q  ]$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQm.room.create!YaLuQzmJKSMTSFEqjO:localhost:8800milmi@anon-20191002_181700-744:localhost:8800 (e'Q ]$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegom.room.member!cOFSwLSkxZECJMvjjZ:localhost:8800m`tm`@anon-20191002_181700-743:localhost:8800,'e?Q ]$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-om.room.history_visibility!cOFSwLSkxZECJMvjjZ:localhost:8800m[Km]@anon-20191002_181700-742:localhost:8800$&e/Q ]$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0m.room.join_rules!cOFSwLSkxZECJMvjjZ:localhost:8800mXmY@anon-20191002_181700-742:localhost:8800&%e3Q ]$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Ym.room.power_levels!cOFSwLSkxZECJMvjjZ:localhost:8800mTmV@anon-20191002_181700-742:localhost:8800 $e'Q ]$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0m.room.member!cOFSwLSkxZECJMvjjZ:localhost:8800mQkmQ@anon-20191002_181700-742:localhost:8800# e'Q  ]$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUm.room.create!cOFSwLSkxZECJMvjjZ:localhost:8800mNimN@anon-20191002_181700-742:localhost:8800 "e'Q ]$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgm.room.member!eGEEtFXUXuZDImkeql:localhost:8800mBYmFZ@anon-20191002_181700-737:localhost:8829 !e'Q ]$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0m.room.member!eGEEtFXUXuZDImkeql:localhost:8800m?^m@/@anon-20191002_181700-737:localhost:8829 e'Q ]$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4m.room.member!eGEEtFXUXuZDImkeql:localhost:8800m<m=1@anon-20191002_181700-736:localhost:8800,e?Q ]$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYm.room.history_visibility!eGEEtFXUXuZDImkeql:localhost:8800m5wm7@anon-20191002_181700-736:localhost:8800$e/Q ]$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3cm.room.join_rules!eGEEtFXUXuZDImkeql:localhost:8800m2|m3`@anon-20191002_181700-736:localhost:8800&e3Q ]$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQm.room.power_levels!eGEEtFXUXuZDImkeql:localhost:8800m/\m0@anon-20191002_181700-736:localhost:8800 e'Q ]$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcm.room.member!eGEEtFXUXuZDImkeql:localhost:8800m,m-=@anon-20191002_181700-736:localhost:8800 e'Q  ]$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUm.room.create!eGEEtFXUXuZDImkeql:localhost:8800m)5m)@anon-20191002_181700-736:localhost:8800 e'Q ]$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8m.room.member!ZOpRjvUhkWYJBFJZeO:localhost:8800m"m#'@anon-20191002_181700-735:localhost:8800,e?Q ]$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFogm.room.history_visibility!ZOpRjvUhkWYJBFJZeO:localhost:8800mRmU@anon-20191002_181700-734:localhost:8800$e/Q ]$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHAm.room.join_rules!ZOpRjvUhkWYJBFJZeO:localhost:8800mjmi@anon-20191002_181700-734:localhost:8800&e3Q ]$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iurasm.room.power_levels!ZOpRjvUhkWYJBFJZeO:localhost:8800mm@anon-20191002_181700-734:localhost:8800 8xF (,j9 q? L w F   "^   N  ` .f5R X Z 1e$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbY &21e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 1e$gX6zQy0kHOoDQ1nnfu32wINKzQGw8iiMKaqD7pwqHSU 1e$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU:1e$gwXOUQYKd_8dUlk1B4HV4Rbc6cNLOGJlaUdpNhQJnxs1e$gtuQp9pS5NSGf4cZroRkWOi1EF965Lpw_h3s8W0AnzQ~21e$grQkBPQjTgycYwA8XSqVnCHIdAFInMID-KwJsDGWtQw 1e$gr50mzqbmACyjfuJ5eZAtYxxwxDStydDD7IPBk6BEyY1e$gqGsNBcU2UPZjfFPkXoOvAOiQwt_1VcgNFmMZwaw7ew1e$gq-uMYePjkQ-1XuX3y5CfGJE7SoOlHPKfkmQkSjo-Os1e$gpR6HPK_DFrkYsS5-rrJfsA8NQsWes1vUh09fR78qSk1e$gn1yzGytb-Vw3HwplHWoOaz6MMvRj9FEJJvyXPKv0UU1e$gmRZKf0u6KnUOlq9t7Siu80bu716eLqHTHR0lPVNVQQX1e$gkrySfFGWqomY4pwEZEIsHfGmIFLeHpljX4JdYFKcNs#1e$gY470F0zbop7UUdLvjgN2FYJp7-HnnJ64TK0rOjN5No 1e$gWj9TEuDiA0fJu3i1a6HWMXAbqOWW4YOoB_3R1EMifw1e$gNb5ZGZbPDYKSW_L9Xb0b3zDkY47E4AVveHvl83r7Iwd1e$g1ZGd_GFd36o_gMgXOH05X8Uvk2sh61wp4ra7yz0RIcs1e$fnep2T32cR7cLvgqcySNjfxkPCvyNh0-uop0sL1yf6E1e$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXgR1e$fdW-332hDEAOhbhVA18ayv2XGxtyx43oQSKGk73Yu801e$fxLCA1oGBcjdoy8UNNXBJtYjpbJNv1o87PpgpX2wjnQ1e$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0 W1e$gkOXDrivObHhyO14nglarnx-3cB2qAn9P08-VK4WWLI0e$gjv3DLkpRrizkdB0hvM2uM2JJgfUi7GRr5VTzMDeirw21e$gjbHkIR2KFrD4FoPfEUKOALRj-tjBusbh8URWjIfJVI Z21e$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ1e$ghCIDYblirAev_pEpU4s9GbSrM4d5vVcWHHdNDUqIO0R1e$ggy7k0setmtDJgZOPPQMH5gbDY9Ff4s_3hWMhZw5ziEt1e$ggOBfXRvDNY4kzhkafjME4ewk11l2DPUPzn0Q9sZCKQ1e$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB01e$gfhG9ddFMas2t3MGqjIiMoG9TtcI9f0KgkmeS_ip53A1e$gd7w2kKiqbjkrMWCYQqEoSAaadjPELzfkgffMN5ZG5Ar1e$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrU i 21e$g4SSPo-W0L8JougfV1KTscU2YEYPB6ILmb0DLOxcpo4 Tc1e$gX1wDb7GpNrl4kqtH6qI5U0ug6HtYYTGdgkGzp6yr8Q1e$gclrThhJq1Rg_pw4BNTOHDoYP7ZgaNTj-86l2iSdZKg1e$gbWxfo6q5UBS8gDdqEnptfrLmb6PO47m-2-ZW7jaxzwX0e$ga_EXTIyJVvybBZz-03LdtCTaL7vTCPFB5HDYO0GoW081e$gZrrX909_t-C5wenFl3E6khpGRBQM5PZ4vrfNkxkbCYj1e$gXl4n1i4IlHubVtQe61lsrsyTAv8VNg__Vo_pbNbYs80e$gUKYS6_gT_zCSB3WeTD788zAVsLAFyadVnh3EbyXntU1e$gR_jbED3D3Zluy_SGbXtJUrORHeEZvbMKp1nGGLGMak80e$gQTAXZ-Y5SHKZlAsTUthNrx-q6GFHwCbZ9Q4nOVZNU4]1e$gPQY2wSUZwBS4X0tp0APbo3_glxMU9NfEl1KbFykBcsb1e$gKAJqtmfVMwlBneywwuT97Xj8GmX_LOydJLDAMtqef01e$gGTxx-WKYz2luz73aK3mBviy8uqsrMocshn1IIQslNo1e$g9Y31rz_p1br5ee-sWYIK3Vdf_buc09yzRyMDmJXvnE1e$g7fvlfF29etCzMA4yjYYvCRnFP6Xq0z_FD6QkyPqiVU1e$g5jgS8Bebni4mAbWb9ADAfhBOiZsbM3J2r92SzbB2DE1e$g59B_tnMqFGu5BFvPpH4aDabB63-E27_uZczUlS0k-A1e$g1eQkTKplYZ3Wz4o3FxyGpsR_sWTlbmP7NGDnA1IXWMM1e$g1Z9fGX2mKHxwq_dkeqOu8aU-78RjW2Gfw3R2EfIuMo0e$fzJfR6LK8xa6oFknCtLPrSv1rHXKugYt8yjisgm-3GM;1e$fzBW8eXciUVsgQZiT4byzvIgHB5r203eGX4UScuyY1g!1e$frxSCR3cDBPPW-0qhhllnbu1Ns7KlEyg643SKZ3p_Q02 !]q | 4   -,7a$F(3]g7Q/ e `!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rules$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Yi6Q3 e _!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw 5Q']e ^!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIc4Q' e ]!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic 3Q']e \!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw 2Q']e [!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLki1Q3 e Z!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_access$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEoo0Q? e Y!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibility$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Eg/Q/ e X!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rules$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMi.Q3 e W!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM -Q']e V!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Io,Q? e U!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibility$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkc+Q' e T!URpLZLuBfVcfHVTBGS:localhost:8800m.room.create$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0g*Q/ e S!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rules$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0i)Q3 e R!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0 (Q']e Q!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoc'Q' e P!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ &Q']e O!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegoo%Q? e N!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibility$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-og$Q/ e M!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rules$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0i#Q3 e L!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y "Q']e K!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0c!Q' e J!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU Q']e I!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg Q']e H!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0 Q']e G!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$NF6QJGaiXg5wluKm4znGCpLM0q6uwlc3KaRF5d5R8QU Q']e F!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4oQ? e E!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibility$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYgQ/ e D!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rules$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3ciQ3 e C!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ Q']e B!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmccQ' e A!eGEEtFXUXuZDImkeql:localhost:8800m.room.create$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU Q']e @!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-735:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8 X * =XkueQac$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3741}{"auth_events": ["$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "type": "m.room.power_levels", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"users": {"@anon-20191002_181700-736:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043932508, "hashes": {"sha256": "r6eUEEVnEMFRXMxaCrJrPgNGcN8gaCpdfpQL8PvVk4E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GNqEuIH9yQ3hsev7RGLGrWC3w4f7qC323ChuNmy43nbzH+bHwZWZ7dgeyjkhcIMikCn613k63hhZbjP7m6meAQ"}}, "unsigned": {"age_ts": 1570043932508}}rteQaq$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3740}{"auth_events": ["$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU"], "prev_events": ["$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU"], "type": "m.room.member", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"membership": "join", "displayname": "VBKUVYHGDOTERLMJKIKN", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-736:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043931870, "hashes": {"sha256": "OV56EXrVqTh9ulAec2up+DatrQqFCaoDC53aBKVvus4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WoRVxX6Kv3QVTeJgH9yFj/Qp2IhoxFjCA3U0OX5nGwzl0gX5iy+o/+LIZQ7F3sIkXKaY9wYmjYyOSRR/u7LoDg"}}, "unsigned": {"age_ts": 1570043931870}}iseQa_$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3739}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-736:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043930933, "hashes": {"sha256": "CgqAqtZa0Gpdw30QJ3wGhPNOwiO8Rh94/YDL5Hp1PyE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "z7Z5H00sp2P25/wdnWlQwY8NqDWNtkC7d6WzUln8xva4tq6rKWJeC558J6YMnxGMTDWjNJQ7Du6V/BnYrn6gCA"}}, "unsigned": {"age_ts": 1570043930933}}RreQa1$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800{"token_id": 713, "stream_ordering": 3738}{"auth_events": ["$3JyYaWQ1grPNChvpKljRjjm2DTE8xQos5poB6_iuras", "$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE", "$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA"], "prev_events": ["$_eUTzoqpYPkL4-BVb3VF3KvZiQ-FvgSWISdgrIgTFog"], "type": "m.room.member", "room_id": "!ZOpRjvUhkWYJBFJZeO:localhost:8800", "sender": "@anon-20191002_181700-735:localhost:8800", "content": {"membership": "join", "displayname": "SIQEQJQUXKKSPCJKORZN", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-735:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043929245, "hashes": {"sha256": "shuhankv0hZo4qIi7pSk0zQYDtpP0yXNnA51GUXwyRg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "10vm4rC68uK7feYWOW12oJInYaAtDXbmOLZWfBQgkQIj4bw+W+to9GUenf8CQwx9hveGyCrufJTKCy8JDwSkDQ"}}, "unsigned": {"age_ts": 1570043929245}} a} { y w u sqomkigeca~ eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~ eeQ$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800~eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800~eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~eeQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800~~eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~}eeQ$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~|eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~{eeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800~zeeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~yeeQ$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~xeeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~weeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~veeQ$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~ueeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~teeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~seeQ$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800~reeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800~qeeQ$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~peeQ$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800~oeeQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8$Ab9TdtiohMK1lrCEXKx14p5TR3DszeG9g4ppw5DcHHA!ZOpRjvUhkWYJBFJZeO:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VeL$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNssha256a7cJA !f2bVeL$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawsha256Yd!&*w0|m+wD퉬VeL$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIosha256Uw!h$:~:-rOІz(VeL$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4sha256z3,9X Y YQhJwVeL$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgsha256<~0O8Hc b:fz6VeL$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUsha256>&{u@e;aQ(`VeL$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxssha2565Zf<;vc9#)^kVeL$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcsha256URL!t4z@^xF,VeL$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lgsha256?N66XFăkq) ".t gRVeL$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8sha256$ ƚx[l4G3|?V eL$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwsha256I x>{UvDv=|'R/*CV eL$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdssha256'F HּD:z &#myV eL$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ysha256*aȾl"6Y/\#MOV eL$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwsha256j jTr"cdƝle-uNwPV eL$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIsha256:=BŦሟnѪ )L)VeL$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicsha256[a.m|Mm$u.Q hRo:'VeL$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywsha256 : `AqB1|53m3,VeL$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLksha256AvDaF`8ӵy~ &Enc̹VeL$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEosha256Ԧ0GΊ4>jhQ'RPJVeL$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Esha256xVu5f{ W9-rȼ/JύQVeL$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMsha256r "dH5L]-ba4xVeL$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMsha256jVݙ{IRqr YVeL$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Isha256D#V{Zlj8}䈓)袭nbVeL$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkksha256GW<7k3K6U`>IVeL$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0sha256k `4on➳~"DK#;mV~eL$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0sha256VM#]* WEκnDh0~fV}eL$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0sha256} (LBҝ4 *q=<=V|eL$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUosha256;Wk1E>: 2A6]~Ժ YJV{eL$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQsha256F F1۞ǙP'JMMGQVzeL$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aegosha256ݖ0"kϝDB-u eƛ`z VyeL$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-osha256%C =AQfH~}qBćVxeL$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0sha256cAXdq2)@]F9蚈UmF;VweL$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Ysha256-̗c >0*h?#1X{FVveL$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0sha256Pkso>&H`Fb ?e]-VueL$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamUsha256G.0N|OP}W|xD`AjeVteL$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwgsha256)[ѰYTƑPe `8zG4VseL$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0sha256 8K{IeV”TcoHXRn VreL$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4sha256 7kN5tX0C3BfnVqeL$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSYsha256aVOM9f)s+#6W/Cy&VpeL$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3csha256/ zrSVd+i"~HR wVoeL$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQsha256Z`љ%A&΃Nㅿvf !UVneL$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcsha256 vX_N[cN)\ʚmgVmeL$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUsha256Am39Ɨ'po\MXw%w*@)%VleL$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8sha256/gu%vjʘj=9rYEU%_ ZfP p 3  D q . W  k ZAQ? !aWbcZNVBalJilCEsdr:localhost:8800m.room.history_visibility{5Q' !aWbcZNVBalJilCEsdr:localhost:8800m.room.createw;Q3 !aWJOsiuJONOvjKWEjO:localhost:8800m.room.power_levels_\Q'[!aWJOsiuJONOvjKWEjO:localhost:8800m.room.member@anon-20191002_181700-33:localhost:8800^9Q/ !aWJOsiuJONOvjKWEjO:localhost:8800m.room.join_rules`AQ? !aWJOsiuJONOvjKWEjO:localhost:8800m.room.history_visibilitya5Q' !aWJOsiuJONOvjKWEjO:localhost:8800m.room.create]9Q- !aVxOoyiLLnxmzgLJat:localhost:8800m.room.tombstoneA<Q3 !aVxOoyiLLnxmzgLJat:localhost:8800m.room.power_levelsB^Q']!aVxOoyiLLnxmzgLJat:localhost:8800m.room.member@anon-20191002_181700-305:localhost:88006:Q/ !aVxOoyiLLnxmzgLJat:localhost:8800m.room.join_rules8BQ? !aVxOoyiLLnxmzgLJat:localhost:8800m.room.history_visibility96Q' !aVxOoyiLLnxmzgLJat:localhost:8800m.room.create5<Q3 !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.power_levels^Q']!aSKNKSGXPGoIbSrbEN:localhost:8800m.room.member@anon-20191002_181700-564:localhost:8800:Q/ !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.join_rulesBQ? !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.history_visibility6Q' !aSKNKSGXPGoIbSrbEN:localhost:8800m.room.create9Q- !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.tombstone<Q3 !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.power_levelsEQ'+!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@bob:matrix.org^Q']!aLxrqpqLkbzyIxGgpk:localhost:8800m.room.member@anon-20191002_181700-299:localhost:8800:Q/ !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.join_rulesBQ? !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.history_visibility6Q' !aLxrqpqLkbzyIxGgpk:localhost:8800m.room.create<Q3 !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.power_levels\^Q']!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-373:localhost:8800[^Q']!aHyAJEOSdKqTiRjOvw:localhost:8800m.room.member@anon-20191002_181700-372:localhost:8800_:Q/ !aHyAJEOSdKqTiRjOvw:localhost:8800m.room.join_rules] @CJ V  \ g ' 3 r o 9 z1}AG R]!m1}AQ9L ]@anon-20191002_181700-790:localhost:8800a&\>K ]  @anon-20191002_181700-787:localhost:8800m&\C9J ]@anon-20191002_181700-787:localhost:8800a&\9I ]@anon-20191002_181700-788:localhost:8800a&\9H ]@anon-20191002_181700-786:localhost:8800a&\9G ]@anon-20191002_181700-785:localhost:8800a&\9F ]@anon-20191002_181700-784:localhost:8800a&\9E ]@anon-20191002_181700-783:localhost:8800a&\9D ]@anon-20191002_181700-782:localhost:8800a&\9C ]@anon-20191002_181700-781:localhost:8800a&\9B ]@anon-20191002_181700-779:localhost:8800a&\9A ]@anon-20191002_181700-777:localhost:8800a&\9@ ]@anon-20191002_181700-775:localhost:8800a&\9? ]@anon-20191002_181700-773:localhost:8800a&\9> ]@anon-20191002_181700-774:localhost:8800a&\9= ]@anon-20191002_181700-771:localhost:8800a&\9< ]@anon-20191002_181700-772:localhost:8800a&\9; ]@anon-20191002_181700-769:localhost:8800a&\9: ]@anon-20191002_181700-770:localhost:8800a&\>9 ]  @anon-20191002_181700-768:localhost:8800m&\C98 ]@anon-20191002_181700-768:localhost:8800a&\>7 ]  @anon-20191002_181700-767:localhost:8800m&\C96 ]@anon-20191002_181700-767:localhost:8800a&\95 ]@anon-20191002_181700-766:localhost:8800a&\94 ]@anon-20191002_181700-764:localhost:8800a&\>3 ]  @anon-20191002_181700-763:localhost:8800m&\C92 ]@anon-20191002_181700-763:localhost:8800a&\>1 ]  @anon-20191002_181700-762:localhost:8800m&\C90 ]@anon-20191002_181700-762:localhost:8800a&\9/ ]@anon-20191002_181700-761:localhost:8800a&\9. ]@anon-20191002_181700-759:localhost:8800a&\9- ]@anon-20191002_181700-760:localhost:8800a&\>, ]  @anon-20191002_181700-758:localhost:8800m&\CA& ]@anon-20191002_181700-754:localhost:8800m&\. u9+ ]@anon-20191002_181700-758:localhost:8800a&\>* ]  @anon-20191002_181700-757:localhost:8800m&\C9( ]@anon-20191002_181700-756:localhost:8800a&\9) ]@anon-20191002_181700-757:localhost:8800a&\># ]  @anon-20191002_181700-752:localhost:8800m&\?9% ]@anon-20191002_181700-754:localhost:8800a&\9$ ]@anon-20191002_181700-755:localhost:8800a&\=' ]  @anon-20191002_181700-755:localhost:8800m&\9" ]@anon-20191002_181700-753:localhost:8800a&\9! ]@anon-20191002_181700-752:localhost:8800a&\= ]  @anon-20191002_181700-751:localhost:8800m&\> ] @anon-20191002_181700-750:localhost:8800m&\K9 ]@anon-20191002_181700-751:localhost:8800a&\9 ]@anon-20191002_181700-750:localhost:8800a&\9 ]@anon-20191002_181700-749:localhost:8800a&\9 ]@anon-20191002_181700-748:localhost:8800a&\> ] @anon-20191002_181700-746:localhost:8800m&\K> ]  @anon-20191002_181700-744:localhost:8800m&\?9 ]@anon-20191002_181700-747:localhost:8800a&\9 ]@anon-20191002_181700-746:localhost:8800a&\= ]  @anon-20191002_181700-747:localhost:8800m&\9 ]@anon-20191002_181700-745:localhost:8800a&\9 ]@anon-20191002_181700-744:localhost:8800a&\= ]  @anon-20191002_181700-743:localhost:8800m&\R> ]  @anon-20191002_181700-742:localhost:8800m&\?9 ]@anon-20191002_181700-743:localhost:8800a&\9 ]@anon-20191002_181700-742:localhost:8800a&\> ] @anon-20191002_181700-736:localhost:8800m&\9 ]@anon-20191002_181700-736:localhost:8800a&\= ]  @anon-20191002_181700-735:localhost:8800m&\R "R= @ & 5 c f u ?Bp |!IR WeQ']$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800gVeQ3 $SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_accessmUeQ? $J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibilityeTeQ/ $KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rulesgSeQ3 $asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels ReQ']$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800aQeQ' $wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create PeQ']$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800 OeQ']$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800gNeQ3 $_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_accessmMeQ? $s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibilityeLeQ/ $ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rulesgKeQ3 $ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels JeQ']$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800mIeQ? $w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibilityaHeQ' $5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800m.room.createeGeQ/ $2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rulesgFeQ3 $zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels EeQ']$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800aDeQ' $5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create CeQ']$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800mBeQ? $JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibilityeAeQ/ $Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rulesg@eQ3 $vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels ?eQ']$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-742:localhost:8800a>eQ' $5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.create =eQ']$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829 <eQ']$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829 ;eQ']$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-737:localhost:8829m:eQ? $-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800m.room.history_visibilitye9eQ/ $L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800m.room.join_rulesg8eQ3 $WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ!eGEEtFXUXuZDImkeql:localhost:8800m.room.power_levels 7eQ']$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc!eGEEtFXUXuZDImkeql:localhost:8800m.room.member@anon-20191002_181700-736:localhost:8800a6eQ' $HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU!eGEEtFXUXuZDImkeql:localhost:8800m.room.create ~~Q]e!QWLJZmJqjWZjVOjdYF:localhost:8800@astest-1-20191002_181700:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4ojoin  xeQa/$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3744}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY"], "type": "m.room.member", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-737", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-737:localhost:8829", "origin": "localhost:8800", "origin_server_ts": 1570043935944, "hashes": {"sha256": "njOSPRzbb76WNmxv8pq1aVleSd/v/NcaSIsByo0UCwE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WMKz12EoQA3Mzs39nPZKL4J4FjwMAeCX7N5JtzQ4R272Nhop7VpEmZGcB6DiJJ4/thZUtHy5h07XRBwkcYHDDg"}, "localhost:8829": {"ed25519:a_UxIG": "3xRCZj/AG2ZB3lIZ9fUGisMavgKncixXBoac2Z7U9ieB3RgB5OyQZOWI2cSZqY4Sv5I8GJMmfb+Egw385nnOCg"}}, "unsigned": {"age_ts": 1570043935944, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "public"}, "sender": "@anon-20191002_181700-736:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-736:localhost:8800", "content": {"membership": "join", "displayname": "VBKUVYHGDOTERLMJKIKN", "avatar_url": null}, "sender": "@anon-20191002_181700-736:localhost:8800"}]}}weQa$-WGyVk9NOWYpFHOK9o6cKyM2tNPb9FepL-9Drfm4eSY!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3743}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c"], "type": "m.room.history_visibility", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043934071, "hashes": {"sha256": "eegRyypHwWRS7O4TYBG71hWTqLkZ70uyPOM5UlyvR4k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "knb/1HBU82iioLMUwzAvqDcEweB4F9BybITTou+ZFnsLyb0R1tr0nG3n40BrmoCbpz44q97n8ToKBz5i8p/bAw"}}, "unsigned": {"age_ts": 1570043934071}}tveQau$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c!eGEEtFXUXuZDImkeql:localhost:8800{"token_id": 714, "stream_ordering": 3742}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmc"], "prev_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ"], "type": "m.room.join_rules", "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-736:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043933308, "hashes": {"sha256": "ggdvX6neD5yfwr7y2P1V8QtAxaWfIyCd5GryUJQV2iE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "WwA840fr84ccbMmdY3IECcvnQXZhfvkPFDFcdxk1zY/eR3Ae8Ocw7Z+gib1inq08S85hUpbmKVD4YONgdx9TBw"}}, "unsigned": {"age_ts": 1570043933308}}  Ij}r|eQaq$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3748}{"auth_events": ["$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU"], "prev_events": ["$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU"], "type": "m.room.member", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"membership": "join", "displayname": "WNMMSFHZOBUAIGUKXEDS", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-742:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043941227, "hashes": {"sha256": "xsGizZhFMCJGwo27Y5RIdN3CQWaO255jC/vsEJbtiqI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QN2CBjI/VgmMuxwSMpiI4kE8OKFZJWcvgeNuak7mxUTAiSKoYC8yXX5L+DobGiUEpWcMYY/kYQ074lDsBFZGBg"}}, "unsigned": {"age_ts": 1570043941227}}i{eQa_$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3747}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-742:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043940457, "hashes": {"sha256": "bLOvyuavsLGaeegXyQY+jD7qJIM5dREskIlYh4SeJHg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Vkuiae4eGOLwjWLuFwgvKtYZ0KDCNvzj3D5Vu4ura5FZRtkSv8e8w1t5bDcnBWRFMOL/ep0E/w6umFh6FprDDA"}}, "unsigned": {"age_ts": 1570043940457}}[zeQcA$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800{"outlier": false, "stream_ordering": 3746}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0"], "content": {"membership": "leave"}, "depth": 8, "hashes": {"sha256": "Y+0hleYnnHJm0dZSaoMfxvd3SNJK7TFCKk7MrNlOKFE"}, "origin": "localhost:8829", "origin_server_ts": 1570043937369, "prev_events": ["$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0"], "prev_state": [], "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-737:localhost:8829", "state_key": "@anon-20191002_181700-737:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8829": {"ed25519:a_UxIG": "zOklSmYhebaDitznnGn7BOztNozVXlAg0WgZa5wdRkWqeHGfin5TntQc4OFoNt3q2Idp/bSjA6+NkHXctkQtCA"}}, "unsigned": {"age_ts": 1570043937369, "replaces_state": "$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0"}}3yeQ1!$xw04S7h7SWVW3MKU5FSwBWNvkKWkSFibUpjRbqYZIK0!eGEEtFXUXuZDImkeql:localhost:8800{"outlier": false, "send_on_behalf_of": "localhost:8829", "stream_ordering": 3745}{"auth_events": ["$WmDA0Zn6DiVB-rAmzoNOkuOFv4nldr-Z32YMnCHuVZQ", "$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSU", "$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c"], "content": {"avatar_url": null, "displayname": "anon-20191002_181700-737", "membership": "join"}, "depth": 7, "hashes": {"sha256": "aCiGagMFalOmDqFeCF807dZG3olbUWVArwopRrqyMsU"}, "origin": "localhost:8829", "origin_server_ts": 1570043936606, "prev_events": ["$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4"], "prev_state": [], "room_id": "!eGEEtFXUXuZDImkeql:localhost:8800", "sender": "@anon-20191002_181700-737:localhost:8829", "state_key": "@anon-20191002_181700-737:localhost:8829", "type": "m.room.member", "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VXJUI5CFT46NNuS8eD6ofyb0DEGsWXmLe3SlShbf99K2ZWR67cirWIKcnmGpmxyRTfUzydqfbTwpj+6GFrwtCw"}, "localhost:8829": {"ed25519:a_UxIG": "mEeNOTVWansQ5gzHo0q9ieB1mrjQgSrcFmFefiwKkS74pE9cTFyoJ43dXGmr8O8SFaoFT33tADhbjuKlJ2B4Cw"}}, "unsigned": {"age": 95, "replaces_state": "$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4"}} S<  v D Y>' J zI P g p j /! O5n< [ a U # 1e )1e$dlI7zIqczPwt9NH795eBMVh5S2VhPav7gWdYSI8s8bM1e$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_81e$dF5To7ZNhm_mUjL3DC9uypm-VDi5QPDKi2dkt6DEzF81e$dAjHl4ajmVciz77iU4Pgl08qGOonlFxIaJMTNRGoDos1e$d6_7PgR4RDXnFCZam0AYsHNz7XyGPQsr1VVb-WcweRg1e$d6TJxiNOREFRwXGn5J7Jg3JaGCRFP0_n1XhY1jWZh3s1e$d4Njd4cd5JTpexnLP0ySNelH13PiBcq0sB1K-4y6n7Q1e$dms5qYurMYqVOP97Ya7fNlrImfsVB92nwLnot7RvirEL20e$doHujppZKPXVLLzruqzaggKOeJOeNg6P5trDNHtOcd4O61e$dVhRMYGcDA2sDi1wMZbE36wRz0lC39RwtE1KTaR7DaIE1e$dVHwUH4G6WDAPN1MHb_claFEYvbvbfFoAQ8fAm5vuMM1e$dTgzHEIYh9IUYIHfAQWwxA5ZyuQ6iWHeNmmwuQRE73c_1e$dSOI98tyCSTClME-YYkJxmfFNBCPWblkQHQkQ6FHjIc0e$dR0TbeTC2sTnZK3WSv37hvETK_TiYsrWRz-gauJn1ms@1e$dQ-Zwpjbg8IEYciKbdHnzHLWbhRou065geWSqfmOvgk1e$dNp7fbxyjU5Pc-UePdP6vYc3R2HjvlNkTYnrkQNskyE01e$dKjlEvvHFAXn1cas9UxWWmy4EsmSUSLYq3kk7WX2-I00e$dI933WAiFRR3BpEYTYDMfwBiOmG7ML7SaNp6_hZTAeYD0e$dHaNPbAYu9556mP8P2GCNqMpNe39oxu83e9l3ELrxsA1e$dGOzZvN8T6rojP2KbDYJJkZQ6sqzGZ5VH7dr6ijFupg1e$dp41guq26VxuF1FdV-8KL-T3aEaAnslBpRi_YNjhkk41e$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9Y 1e$e0fWVolnhXBedHjziycL1ec46_BHZzLtgORgVL5F5qI 1e$dxAF9IgE2b6BMo76cqmN9ELbHw1JA2_Fr1gDyRqW55w1e$dvH8uVMt0MPiXuVNE2FDXpZylA5O0CL7Jn7B0sr3JXAH1e$dv1a0fM5v9maXe6IiDwJbRixqrydaqBEhsUi0W8FvEsQ1e$dteQ5Z_VbX1x9X4fOpj2hFL1P7jjENpvSkSRqzLjmbY0e$drOA9S9ea8zHZu0EOjGJcLlKndyr8sieYn5GKHcNxwg01e$dq4UKCLkneTN_EyL9xlXfRSxb3gbMffsEpOSjkWdyKI1e$dpyReNp-xGhXzgmKSjCKqWZIUgNRS751q4tGO1JhCNM1e$dbWqObK1HMITDAh9w247sKNeAmH4B8uPRzwLr2oLaLw21e$dxBJEXsi3pJdsN7dWXvIWiKiJ3ru2oaBsNLx8Q2DmPUQ1e$dckXTBnxC1aLfXXCW08moyKk2yzq47AOgpe8wb3c648e1e$diLhY7OhXl20noSkMz-Dgsp6UQyeQDKIcna1au-RW_c 1e$dzODKwePWRUEtHGgGR2fDYbX8Tss49sz6-IIZy1zJXs1e$dkXwVmmhbp0SAbzyFJ_q4DbRVTKV269f2JfzADmK7G8) 1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WIY1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA P1e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xU1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE1e$e0NTJ5YQdesNc3k4a4RAl4eZfyi+VSbo4sgMYXJD1RQ B1e$dSiNFPEge6tX9rTGLWAj5fBGnMxqpWs9oFDtHTdM6OAA1e$d9gUFHQ3s_inGnS8h5Lv_vyhYTxI_BknkmpN1QDaDiY 1e$ddNpcaPjCcLHmiBudSiETlpZ32orPlYUhfXTEl9b-ngY 21e$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc81e$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM1e$dcKK6ZX7W3Xiw9pZZ8oyD2uh7h_uFEL_wvco7yJ7RUI > |d1e$dGGWavxf9LAvx_iztso5U0Kmg47l9pq3aQjen9y5r_M 21e$dn_1HrYSuf6xA1gRHTgeQkd6o0ESE_OEIvwT2mPuHvE1e$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E Q1e$dH3UFBms9dPD2PtANKpxCk4fgpJygrNnWB6w83786VQ E1e$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI1e$d1lH224EMGopQNOOkx_ZFXyvcBFOpJZ3k2bqH6pLeCM/1e$d1PJs5UT-79edtS-sSo-D5yWfRIV5CmRKAjfnktQk4Qi1e$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI21e$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo1e$ddNUKqp685R8RTfCTVnfgV3p8Hz5aPLBIgSwh3zd5ZQT8d1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y21e$ddehSz8RY1S2MhurM3_Ku-Rs6M56MQ6TQeAIB4VjEoM d &j8p> v D  | J  P  V $ \ *1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgj1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgi1e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgh1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APk1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro %1e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jAro $1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIY1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E1e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-E1e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs1e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs1e$aN2H6g_n8rOK-OgVuuDaYLQjZiATtvlYOtDZQc95czs1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw 1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw 1e$aMYgIj-iHjlKKU6eSj9FlTfatCvw3lJWOBN1zg14Faw 1e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-01e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-01e$aKXauAwWwscpnSBNCCQq92ZdPauV-bd7pC3tS3Ofd-01e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE61e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE51e$aK2iNvPnNB3mWOPjVIbVv7iGqvKFW0oErdCUSQSE7zE41e$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP81e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2o1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE"1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE!1e$aHF8JBrjsmadBcX0-3-ysLOcOMS8u6UYz7n05QzWIPE 1e$aFKEAo-7veC5oqfJ5ocYQznNyNaS53WoNtieMGUO7us E1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk1e$aE0OtreQsomXKWmT3C0NbQDbF0n-7hiihjUTq8ciwRk <  | v D ; * b>Um G \#ysA V J $  \ *g P p83Xiw21e$eX8513hqiqAUUg6MwgjeU7DW2TuTmOJs495GNeKJTvkg1e$eGMabHozheFxXlagPyjUreHQhRaCSKYUFOK02BO7IhY[1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg~1e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc p1e$eEMXfrbHCs0V30W-mHLN7IUerhSy3N4zGRvd2Vhwe9g0e$en3TC9KoD5o1HOaWRElIUdf3QANgjHp4NtHwZKuZJQc81e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg1e$eUZgcrrcjYbLm8wZvNYV3AG_emrnccTsPCfvK5eR_QEU1e$eMEiTmjwcJ_3F-uHET__XfiI8a1c0CBnGywfbi2v2VQ1e$eJ2Krblf35rGcF0kVBYkHzW4w5FGLD4U3kt3jbZs-tE1e$eIZwQ9IATY3aE_N_Nd_lhMMms_PlGRpCdsFMDXcNj_Mo(1e$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw |1e$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 2 21e$egk5CwUwCZU_0s6juVvtbADV0xTzgOvyAY1M9Na53hM \1e$eD7t-nA9g4PpML7BQrqiyl2XytcAODL__cIqxZWs4v8 1e$elg3zJ3JodxyfDSOIn0wWehkQ0c_JuGAtp_Rnllm-dsV1e$ejkecZXGpdLj7jU0Ec61u7VKuilXPbgRPYw2xuoPC5Q=1e$eh5xLzkhZNG0jy4MRd0MqGU-rIkQEuUbwmfFJy_V_vc1e$eb7cmJaUBAG-JG-rIX7ZhzR8xJlr-sy3kAyl9IXXOsg521e$eBI5-EB_9q5uOn9LoFsc2LyfNPskD56oboNzDXq5ktU1e$eXUjIQ5Cxs3FiPK2U_aXXSzPgTEiOyv9FcubbH4dwqs1e$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voAx0e$e3ZvrZno3N99NtXYZiGtF2HqIfXjrcyD5MXF2WC33xUt1e$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE/21e$f54S922u3pQBI6XgTC6L8LFUvuu2-LXQHOrsApzju3U 1e$eYzFCF62QPX8sfE6bY6mk70aqngULStF9myXDMDOyWY1e$e58itzgOJ9Zd-4TScH_3tojrPm88k5U0oUMLXHo9PyU1e$e_ICIbmb5A1rDKnnAqjcigshvQsBaTsJwyqxljO1lRUc 2 1e$eP_IyLvUfZWTGVzVPQGB2iqjqhuQERUSZHIi_A367es 1e$eOlzPp6fOPdXCE-m_PnNKA0HHXccZ7gMyo0AjaRp5CQ 1e$eShLCGQQIRKvMC5KibrqrJfpbYowOOgP11oIGG7T-tc 1e$exMoYgiBeusisKPBQYkq9I2ydg8C5gjiMClg4MAxM_k 1e$f3QTahtCynnP6yDDiJKr4k-fsNBFpSN3haQ6YjvJsOs1e$f2UbFW3r_Ly8ctWpAtwmSZikRv_ds0zX2gHi4a_oHDY'1e$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q 1e$f1BUmdAyvfaDTbCCeefl46S9i9UzNXXcaf28tudAT-o01e$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V401e$esY7SlHLGvz41EEQw5NeHwhM-o-9yU0I6q0uibLWRgM 1e$eq7CdTC2C_5MHRHPU4Lt7y06JvkSUH02muH64DUNSYo1e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg|1e$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ W 21e$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Og 1e$f5dPa8LkC7bpqayzFEa-isQtc-i2ipNh0ogVGPoNwkU d1e$e_RQh2BO4CtmNKv8Nw0DQsFW2gxOIWPJGfzp9LW0Yd4 21e$es8aie2XkVD-oHchnGR-ljyNDMB4VeihLJr5Hwkv9Kw 1e$e5wnCvx3u8i5IfjtPMVqgdUU5nUpsPjgRA47dit4NYo 1e$eFlswCkp_kofeY5Ll3voPvB_q3Ae5zWdb_y71WYu5501e$e_qpyTmTIvAPONgsO8u9r_7AjXpH3RBzO5eF0X0_yAg}1e$eBBYlKME6SYnvP29UybmOEK5BfzpOctw0q1qGzy3gqA1e$eB-n3FXP3T6u__kXErHpQDVpTxPLXUBGMSNxf5Jno6U1e$e9JKIFjWBAqfZd21Xgq1uXQ9xG6340N6rsJtAhBl66I1e$e44gFQ0oHZOrUlzAuOK3pHHfK837DEkvZC1hKGuU9WI1e$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthIe0e$f7R3Ha9lHezZk3nCdjHEIFh89ISJIggec8QtjlGrxLQ1e$eQ76C5UQeKDcyuBDyEKBOYX5cyrsLW9eIW6756xtU_k1e$f8M-mCFuLarH3MA10a2zCYL-vr3cUpJ4Gm_6O3628rwZ1e$f7naY7XVoq7uQ2wur1D22NX0MpEVaiEH0Xd_KVNGgOUvj21e$f9dte028jfI3JG4-j373dtgpftXYImxVnoQ_gxTl-9E 1e$f9CncZrcQa1eLwyaJnae9AHm3cky9B7V9YMbqPm3NJY21e$e6qUrn-o15dCArRmAkqGbCjc7CezVBsimDm8jOJPIIc2 1a`8qI! Z 2 j B  } V /  i A  ya Q ) 'Q!pTvdDtkgovsIdAdxCm:localhost:8800h'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800@'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:8800b&Q!oXKJArsPmtgaYANBrg:localhost:8800a&Q!oXKJArsPmtgaYANBrg:localhost:8800`'Q!nxLxsxzliamzflrEBs:localhost:88001'Q!nvclDopiBLEOKBIheH:localhost:8800i&Q!ntuwVdUxfzNIhIKYaz:localhost:8800|&Q!ntuwVdUxfzNIhIKYaz:localhost:8800{&Q!ntuwVdUxfzNIhIKYaz:localhost:8800z'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:8800~'Q!mvgUHEsfGqDkPQUvfG:localhost:8800?'Q!mvgUHEsfGqDkPQUvfG:localhost:8800>'Q!mvgUHEsfGqDkPQUvfG:localhost:8800=&Q!msMfSdLIAvklSSAnci:localhost:8800p'Q!mogJVPxghalmKbblUq:localhost:8800U'Q!mogJVPxghalmKbblUq:localhost:8800T'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:8800'Q!mOrKBPhetifKHDmElM:localhost:8800R'Q!mMsxpaIlcykPuOnDyl:localhost:8800K'Q!mMsxpaIlcykPuOnDyl:localhost:8800J'Q!mBQpGaIiadEuKBXfOw:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800%'Q!lgejtcwlywOoIXwEgy:localhost:8800$'Q!laUExtszUaoCpZoyEq:localhost:8800R'Q!laUExtszUaoCpZoyEq:localhost:8800Q'Q!laUExtszUaoCpZoyEq:localhost:8800P g * T~=ggL]!c@anon-20191002_181700-753:localhost:8800PLSIYKWQOBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQogK]!c@anon-20191002_181700-752:localhost:8800RYCPPVBPAQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQogJ]!c@anon-20191002_181700-751:localhost:8800FXMMNKQIDMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAogI]!c@anon-20191002_181700-750:localhost:8800VQNSLBGSCNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAogH]!c@anon-20191002_181700-749:localhost:8800UPJEGCTJBWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFN5WHdDLH5FMnhebkxfZloKMDAyZnNpZ25hdHVyZSBjyJPT-W3d_8jtq25bg0CXxeElEbBCLXZPtSSmUUe7OQogG]!c@anon-20191002_181700-748:localhost:8800FCZXWADFJAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgogF]!c@anon-20191002_181700-747:localhost:8800IJKBXNQJNYMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwogE]!c@anon-20191002_181700-746:localhost:8800SROUQRJUGNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-AogD]!c@anon-20191002_181700-745:localhost:8800GZRCRCKGZNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEtRcjpudGJSUTY2Ui1sYU8KMDAyZnNpZ25hdHVyZSAuvvo2b3WF4LSg645dlDTDAACv-57uTUGOEK4Qj6PzrwogC]!c@anon-20191002_181700-744:localhost:8800MCGVEWCDCMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFTM3BGRDVAT3JPX2JQQyMKMDAyZnNpZ25hdHVyZSBkrlWmOacavWZxvOatOFQ2Jjq_mL6cXqCVmkW-NiIA8QogB]!c@anon-20191002_181700-743:localhost:8800YETXYLXSKFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQo Mxph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`XPH@80( % c$ b# a" `! _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                                                                                                   ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? ~> }= |< {; z: y9 x8 w7 v6 u5 t4 s3 r2 q1 p0 o/ n. m- l, k+ j* i) h( g' f& e% d$ c" b! a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !           MvHJdd6"~P8j< V( pB \ 0  T ( x L p D  h < x-]@astest-1-20191002_181700:localhost:8800v-]@anon-20191002_181700-832:localhost:8800u-]@astest-0-20191002_181700:localhost:8800t-]@anon-20191002_181700-832:localhost:8800s-]@anon-20191002_181700-831:localhost:8800r-]@anon-20191002_181700-797:localhost:8800q-]@anon-20191002_181700-795:localhost:8800p-]@anon-20191002_181700-793:localhost:8800o-]@anon-20191002_181700-791:localhost:8800n-]@anon-20191002_181700-791:localhost:8800m-]@anon-20191002_181700-789:localhost:8800l-]@anon-20191002_181700-787:localhost:8800k-]@anon-20191002_181700-768:localhost:8800j-]@anon-20191002_181700-767:localhost:8800i-]@anon-20191002_181700-763:localhost:8800h-]@anon-20191002_181700-762:localhost:8800g-]@anon-20191002_181700-758:localhost:8800f-]@anon-20191002_181700-757:localhost:8800e-]@anon-20191002_181700-755:localhost:8800d-]@anon-20191002_181700-754:localhost:8800c-]@anon-20191002_181700-755:localhost:8800b-]@anon-20191002_181700-755:localhost:8800a-]@anon-20191002_181700-754:localhost:8800`-]@anon-20191002_181700-752:localhost:8800_-]@anon-20191002_181700-751:localhost:8800^-]@anon-20191002_181700-751:localhost:8800]-]@anon-20191002_181700-750:localhost:8800\-]@anon-20191002_181700-747:localhost:8800[-]@anon-20191002_181700-747:localhost:8800Z-]@anon-20191002_181700-746:localhost:8800Y-]@anon-20191002_181700-744:localhost:8800X-]@anon-20191002_181700-743:localhost:8800W/@random_dude:testb+@bob:matrix.org\+@bob:matrix.orgZ+[@anon-20191002_181700-99:localhost:8800K+[@anon-20191002_181700-99:localhost:8800I+[@anon-20191002_181700-98:localhost:8829L+[@anon-20191002_181700-98:localhost:8829J+[@anon-20191002_181700-97:localhost:8800G+[@anon-20191002_181700-97:localhost:8800E+[@anon-20191002_181700-96:localhost:8800H+[@anon-20191002_181700-96:localhost:8800F+[@anon-20191002_181700-95:localhost:8800>+[@anon-20191002_181700-94:localhost:8829D+[@anon-20191002_181700-94:localhost:8829C+[@anon-20191002_181700-94:localhost:8829B+[@anon-20191002_181700-94:localhost:8829A+[@anon-20191002_181700-94:localhost:8829@+[@anon-20191002_181700-94:localhost:8829?+[@anon-20191002_181700-93:localhost:8800;+[@anon-20191002_181700-92:localhost:8829=+[@anon-20191002_181700-92:localhost:8829<+[@anon-20191002_181700-91:localhost:88008+[@anon-20191002_181700-90:localhost:8800:+[@anon-20191002_181700-90:localhost:88009+[@anon-20191002_181700-89:localhost:88007+[@anon-20191002_181700-87:localhost:88006+[@anon-20191002_181700-87:localhost:88005+[@anon-20191002_181700-86:localhost:88004+[@anon-20191002_181700-85:localhost:88003+[@anon-20191002_181700-84:localhost:88002+[@anon-20191002_181700-83:localhost:88001+[@anon-20191002_181700-82:localhost:88000+[@anon-20191002_181700-81:localhost:8800/+[@anon-20191002_181700-79:localhost:8800.+[@anon-20191002_181700-77:localhost:8800-+[@anon-20191002_181700-75:localhost:8800,+[@anon-20191002_181700-74:localhost:8800+-]@anon-20191002_181700-742:localhost:8800V-]@anon-20191002_181700-737:localhost:8829U-]@anon-20191002_181700-737:localhost:8829T-]@anon-20191002_181700-737:localhost:8829S-]@anon-20191002_181700-736:localhost:8800R-]@anon-20191002_181700-735:localhost:8800Q-]@anon-20191002_181700-734:localhost:8800P-]@anon-20191002_181700-733:localhost:8800O  ReQa1$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 716, "stream_ordering": 3752}{"auth_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y", "$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0"], "prev_events": ["$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o"], "type": "m.room.member", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-743:localhost:8800", "content": {"membership": "join", "displayname": "AZZDHJBDYOHRRTKDIRLP", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@anon-20191002_181700-743:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043945076, "hashes": {"sha256": "Tt24p1MiEf+G5JBxdkiYZU1COiXTvcLGrQaL05hOjMQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jYwbiNzYNBiFUj5fnjrPH++2BmZ4AvJLJURxSf7V4z4nuG2XXKmX8gyls+sFBIpDI7eB76yHre5c+djzzYIxBA"}}, "unsigned": {"age_ts": 1570043945076}}eQa$JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3751}{"auth_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y", "$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "prev_events": ["$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0"], "type": "m.room.history_visibility", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043943755, "hashes": {"sha256": "CSxrvJTANJrtkqHPOfrD2bYWG9UgydoPo4giB9xVywc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BilJX5Cgu9UGopCTiQcIMcoPhqzh+SVhBp+MZv9ilWg5JLmhpJQgdLFBYU21vg7lfsTg76LIf1ChoyQp1WsMCA"}}, "unsigned": {"age_ts": 1570043943755}}t~eQau$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3750}{"auth_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y", "$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "prev_events": ["$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y"], "type": "m.room.join_rules", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043943108, "hashes": {"sha256": "50cfDMbmYwep4/OoUkSXzfpq3Hv9HY3PZYjhZH02EVE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r+rIR2ugGWgXDjjX4vf1mTC+sDr2qmpf/4fzSX1XOHhYMhV99vBmwtu6M3IsR7qZp39jm/Mj4Duhd6q/4zi3Ag"}}, "unsigned": {"age_ts": 1570043943108}}k}eQac$vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800{"token_id": 715, "stream_ordering": 3749}{"auth_events": ["$5KntRy4wwE58T5z-ylB9xle5s3y_lnj5RLFgz0EeamU", "$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "prev_events": ["$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0"], "type": "m.room.power_levels", "room_id": "!cOFSwLSkxZECJMvjjZ:localhost:8800", "sender": "@anon-20191002_181700-742:localhost:8800", "content": {"users": {"@anon-20191002_181700-742:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043942039, "hashes": {"sha256": "/pm2ELXdjFb+3+ETH9AImYLlWQtT6WIPTOeea6rrvzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t9V2SUS71C3I2KGG9SEg30qdV9r8xQBqF8vgmPBM77tPxQmerGzFUFcUdo/xF4fsIEoPDWPGbXkw9Np8aV19BA"}}, "unsigned": {"age_ts": 1570043942039}} ".- 8 f   / U`e#.3[f$gyeQ3 $Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_accessmxeQ? $5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibilityeweQ/ $_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rulesgveQ3 $_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels ueQ']$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800joinateQ' $jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.createmseQ? $ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibilityereQ/ $PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rulesgqeQ3 $PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels peQ']$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800joinaoeQ' $EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create neQ']$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800joingmeQ3 $SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_accessmleQ? $J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibilityekeQ/ $KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rulesgjeQ3 $asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels ieQ']$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800joinaheQ' $wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create geQ']$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800joingfeQ3 $_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_accessmeeQ? $s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibilityedeQ/ $ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.join_rulesgceQ3 $ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800m.room.power_levels beQ']$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-746:localhost:8800joinmaeQ? $w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.history_visibilitya`eQ' $5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800m.room.createe_eQ/ $2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.join_rulesg^eQ3 $zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.power_levels ]eQ']$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.member@anon-20191002_181700-744:localhost:8800joina\eQ' $5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800m.room.create [eQ']$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.member@anon-20191002_181700-743:localhost:8800joinmZeQ? $JZEPtcsW-P9DDT3AQVEPsmaCEkh-ibAFrK19cULEh-o!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.history_visibilityeYeQ/ $Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.join_rulesgXeQ3 $vLEtsaHmzJdjCz4wu8HeKvJo_j_gIzHD_Fjwl3uhv0Y!cOFSwLSkxZECJMvjjZ:localhost:8800m.room.power_levels -RM H C > 9 4/*|%w rmhc T{Qe {!hNCwypIzdDZDVmCEfd:localhost:8800$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0TzQe z!eZjhYVNpwdogVDKHCk:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQTyQe y!hNCwypIzdDZDVmCEfd:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08TxQe x!hNCwypIzdDZDVmCEfd:localhost:8800$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_ATwQe w!eZjhYVNpwdogVDKHCk:localhost:8800$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnsTvQe v!eZjhYVNpwdogVDKHCk:localhost:8800$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgTuQe u!eZjhYVNpwdogVDKHCk:localhost:8800$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMTtQe t!eZjhYVNpwdogVDKHCk:localhost:8800$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSITsQe s!eZjhYVNpwdogVDKHCk:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0TrQe r!eZjhYVNpwdogVDKHCk:localhost:8800$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdoTqQe q!sBcwyPoXKgnSGVTjNR:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8TpQe p!sBcwyPoXKgnSGVTjNR:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40ToQe o!sBcwyPoXKgnSGVTjNR:localhost:8800$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigTnQe n!sBcwyPoXKgnSGVTjNR:localhost:8800$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8TmQe m!sBcwyPoXKgnSGVTjNR:localhost:8800$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsTlQe l!sBcwyPoXKgnSGVTjNR:localhost:8800$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsTkQe k!sBcwyPoXKgnSGVTjNR:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawTjQe j!sBcwyPoXKgnSGVTjNR:localhost:8800$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIoTiQe i!WgXzOXLTeqaGfiDFhL:localhost:8800$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4ThQe h!WgXzOXLTeqaGfiDFhL:localhost:8800$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgTgQe g!WgXzOXLTeqaGfiDFhL:localhost:8800$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUTfQe f!WgXzOXLTeqaGfiDFhL:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsTeQe e!WgXzOXLTeqaGfiDFhL:localhost:8800$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcTdQe d!LFBhoxJpmBqFrwEzGP:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgTcQe c!LFBhoxJpmBqFrwEzGP:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8TbQe b!LFBhoxJpmBqFrwEzGP:localhost:8800$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwTaQe a!LFBhoxJpmBqFrwEzGP:localhost:8800$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsT`Qe `!LFBhoxJpmBqFrwEzGP:localhost:8800$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_YT_Qe _!LFBhoxJpmBqFrwEzGP:localhost:8800$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwT^Qe ^!LFBhoxJpmBqFrwEzGP:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIT]Qe ]!LFBhoxJpmBqFrwEzGP:localhost:8800$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicT\Qe \!URpLZLuBfVcfHVTBGS:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywT[Qe [!URpLZLuBfVcfHVTBGS:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkTZQe Z!URpLZLuBfVcfHVTBGS:localhost:8800$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEoTYQe Y!URpLZLuBfVcfHVTBGS:localhost:8800$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01ETXQe X!URpLZLuBfVcfHVTBGS:localhost:8800$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMTWQe W!URpLZLuBfVcfHVTBGS:localhost:8800$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMTVQe V!URpLZLuBfVcfHVTBGS:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2ITUQe U!YaLuQzmJKSMTSFEqjO:localhost:8800$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkkTTQe T!URpLZLuBfVcfHVTBGS:localhost:8800$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0TSQe S!YaLuQzmJKSMTSFEqjO:localhost:8800$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0TRQe R!YaLuQzmJKSMTSFEqjO:localhost:8800$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0TQQe Q!YaLuQzmJKSMTSFEqjO:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUoTPQe P!YaLuQzmJKSMTSFEqjO:localhost:8800$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQTOQe O!cOFSwLSkxZECJMvjjZ:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego N ? 0 !   | m ^ O @ 1 "   } n _ P A 2 #   ~ o ` Q B 3 $    p a R C 4 %  qbSD5&rcTE6' sdUF7( teVG8) ufWH9* vgXI:+ whYJ;,m<  m7qm2 m-Im*mm<  m7qm2 m-Im*m%\m"Gmm1m m mVm~m)mmmmPm|mpa  mm  mj1  mf  mc  mV<mSmPmLmHm=Km9Rm5m3)m/m*/m'cm#m mmm mm m9mmmmmmFmmmꕃm|m_m m/m m|mmmjmgbmb9m^1mTmQmN8mJsmGm7m5?m2~m0m-m$m!m]mmemmmm m1mm+m5mWm-mmmm mڇmAmxm0memžmm鸩m~mOmm驣mmmJmm鐖m鍢mm釃mtm}m|ymy0msmm milm`tm[KmXmTmQkmNimBYm?^m<m5wm2|m/\m,m)5m"mRmjmmm$mBmmm&mJmRmmm mm݁mڤmm[mċmsmpm m{mmm5m8~~mu}}m||m{{mzzm荪yymsxxmEwwm~vvmz uumvttmsssmprrmmqqmcppm_'oomZnnmWmmmTllmQOkkmMdjjmB}iim>fhhm9Eggm6ffm2eem/ddm+ccm!Gbbm1aam@``m__gmL%%mH$$mE1##mBQ""m?!! L=  R X & ^ ,,d2j8q? XwE}K^R j&^,X21e$H_r7O5SjzlQLqXB3W2XKN54AZeqo4P0J1LM4RQ8NcVI q1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc1e$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8r1e$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigp1e$HUFto6eCyzM5xpcnA6Bwb5hc8U3rWHclGPp3lCpAKSUC1e$Hi5YwljPnuJA8C8EYtcjXN4VNiqSK9Slqs2lkFq0lLc 61e$Hh9i8A3geHvLGwLXvkEFhdP6YxjTBZlT1bBEB8ktvcQ1e$HMVOrjg9WZ0fViPu5ZjNm32j8Q9kKr6xtRl-Yv7s0HA1e$Hb2ByuIoKgYt48EBzlMBzkYM5tBOZIma-qjFflNyB8g 1e$HdkjWpRJ6UvXZdm1TvFLwu0FK7uq_CCyJXaLnqEU9Ts1e$Hcg7uSM6xFNb_wWPuiIbdPXqdK659L9C6slaZ-00yW01e$HaTdUt06NS6404QeRVHen6aOLC4Gs9Gu-PzGHTcDtkwH1e$Ha40F_4M8DOoOTRB0yxYzFK6LeGUE5OhynUsXu9OB081e$H_hFRk5THPor94bdjCOvGFvRrBEG82oiopVvEKtOPR8 0e$HZKvV5aBlysLr1Yu5mbR1FiavrjNG1byGoEX4JWWVcA`1e$HZD6q6tmRRzwl7-jRxGofkx9e5Pbc2k_O48uZrXCspY 1e$HZ-J9lSFcOI6lLlobo1OJL05nP0fI_09CvDHlSsh2M41e$HYeJbT0KA3nvc9J2gwWIi03INxfWd-PJJlsJQreoDAka1e$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0<1e$HU8rsMAt3eq0GxcuW1wWTW0RLomJLOn5aR0yJz_jvT81e$HSa2cR_fDe-bEQbu7Gbed48GGRTxdIsywBuKMFL0nXA 1e$HQq21vx6gHtDqq6_XYkteAYCB2NYod3Aye1mHR0rczM1e$HQCRuJ-sLZyrCdNCOHu5esdaiSXV2c6GkWVCev9LNvMM1e$HOtCQHH2fMcXemkrf9rHRYBJCyQXYNKz4okCYQeRNIY1e$HO7jOciflVoBE0tZ8PJ-vYki805xWtDWCN_QhAndcv4 W1e$HMOn7SqD_VQ-csdbfohouXt190hsAFZVWavBhicvYqs1e$HLYsaZWEkx1Qw4bLbiFvkzh-WUel_EXzhT8ShRHkaak1e$HIvOpeubuDE3oKK9BrRn3Ejhh1WsScGmxaObPamXhe00e$HH549RU7-ZcKdu0aKzeI7cQS7grJlQq2q6nAtVmtkiY1e$HDwD6LuBNRTojELGZ8LecoBzShmJAR0EdSj6L2wyK2U=1e$HCvmcw9fTlchUX-cCR_Lj7zuu7YABJYmUMH2aFDjMLY01e$HC3xUQnAKIEE4FnWYy3dGYJrT9XuhcIAavXigRpi1XA 1e$HB1aL5Q5gbeRrO1QFBZxEPQTU-A4cuyYLu_U7luK5AY1e$HAtvopLy4ZW1MJbpeIGyKZDSJv5Eezigd7M5sbJ9FkI C1e$H9K0elu1KedRq2UV3EyJQuNHsRnjcauN1p2pDOFaTs8A1e$H7mlM7mmqtz8Nt8Twx8cqhybJpYQTMdXB06zMgFzhLY1e$H6hI1cHBo_lhMeghqzAa77rq7B3fSI_bolQcUrZqfIk c1e$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4E1e$H2Al2Wc7nOvKpc_4LOdCw7MYAR4kctu0XYRN6pX257s1e$H1pcqB8mZrvsj1S82Y9zl9smNEZSqf41_QbUZe6n7eg1e$H1_yId-vh9mrANVOGz0IIPkXgVUmeOtDjVs3g1iLZS81e$H0WISFbF5UWmlpOlxsB_2JYBN4IEkDYMRsaDiu7u3xE1e$GyHWflTvrWxbCPDFRcZpkVy24FSmCM11AojZKDZCMT41e$Gvb7IlOX7lOygc5XrQLHXVsGrArvEDjEHyNFHUNgCu8 1e$GvMGjsde9ARoEB2KC9TWTI1RzdsAfpo8BlAlqm3UZzw 1e$GulVwImBkgMXsI6GHXHq0_ZzPvCi5dfkK4NZRVU73XsV1e$GuRdYiBmkGUyb4Dc0LoV0KImKKEh2kgjdQ_Ahm2w3eU K1e$GuJm5kSzcoCfBCGj9q9B2ou6vLdSswUD1cbh-Kx0a5Q1e$GseVUWj2jjr2E7hnhdf0Twu5LKMLLQwOF5prA4wISsYP1e$Gs8GEEio16mrTjzQYo9t9C4EM-BJlwHstwzoEilzRVk1e$GqSNeb92yRewBdrHLiA1itpkDAFcSG45VlJjoec_f9wA1e$GqE0RaL2vt8J1meIgxy3YaTV1zfnAl0aK0a-FWxVxDM 71e$GoM6cpWOYn0ONEXy3OmOZEsCyB81p5mT8_6NPvxquCA 1e$Go2Lejf8nbAje22gz6DpMpFI3CVEc0bcQ3aJKX6TObw1e$Gn0s4Itq4DXNb7BbBEg2KGqhWKyOF6kDlAQk9BAU3_Y1e$GlJcaIFy3vYBPomohbKTlKGvgqWun5Il_IB3qbGuNho1e$Gl4FR5o8cmPBiq5zx6U5ASuvGrRIFJwKlI5iwYL8DPs1e$Gk_N3VAJ3E4I9_ogXN1dfudsxmmfTrmgKtxjzU1kPGc1e$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk81e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM41e$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg  a} { y w u sqomkigeca~,eeQ$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~+eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800~*eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800~)eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~(eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~'eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~&eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800~%eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~$eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~#eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~"eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~!eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~ eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800~eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800~eeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego$Y4pBWGSSceEyqynYQF1GOfL5j-iaiFVtRju_7b-O_a0!cOFSwLSkxZECJMvjjZ:localhost:8800 =z ' d N2kOCj e]]Q=$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw@anon-20191002_181700-768:localhost:8800@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800joinanon-20191002_181700-768Ci e]]Q=$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA@anon-20191002_181700-767:localhost:8800@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800joinanon-20191002_181700-767Ch e]]Q=$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE@anon-20191002_181700-763:localhost:8800@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800joinanon-20191002_181700-763Cg e]]Q=$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c@anon-20191002_181700-762:localhost:8800@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800joinanon-20191002_181700-762Cf e]]Q=$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk@anon-20191002_181700-758:localhost:8800@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800joinanon-20191002_181700-758Ce e]]Q=$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08@anon-20191002_181700-757:localhost:8800@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800joinanon-20191002_181700-757Ed e]]Q=$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800inviteanon-20191002_181700-755?c e]]Q5$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-754:localhost:8800!eZjhYVNpwdogVDKHCk:localhost:8800joinFKOCVHIRTCIPSWJBHVGOCb e]]Q=$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-755:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800joinanon-20191002_181700-755Ea e]]Q=$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800inviteanon-20191002_181700-755?` e]]Q5$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-754:localhost:8800!sBcwyPoXKgnSGVTjNR:localhost:8800joinFKOCVHIRTCIPSWJBHVGO?_ e]]Q5$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs@anon-20191002_181700-752:localhost:8800@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800joinJYNGOISMLXVDWPDRVNCSC^ e]]Q=$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-751:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800joinanon-20191002_181700-751E] e]]Q=$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800inviteanon-20191002_181700-751?\ e]]Q5$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-750:localhost:8800!LFBhoxJpmBqFrwEzGP:localhost:8800joinBABSIRRXCUHNIFZHYFMBC[ e]]Q=$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-747:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800joinanon-20191002_181700-747EZ e]]Q=$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800inviteanon-20191002_181700-747?Y e]]Q5$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-746:localhost:8800!URpLZLuBfVcfHVTBGS:localhost:8800joinQLDSIOXVCTASBPKYRNHI?X e]]Q5$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo@anon-20191002_181700-744:localhost:8800@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800joinLIBVRACXDTFHBVRAEYIU?W e]]Q5$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego@anon-20191002_181700-743:localhost:8800@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800joinAZZDHJBDYOHRRTKDIRLP ,(^ k z ) 6 C+ 8 E VR_  ily |(P]Q@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800P]Q@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800P]Q@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800P]Q@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800~P]Q@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800}P]Q@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800|P]Q@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800{P]Q@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800zP]Q@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800yP]Q@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800xP]Q@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800wP]Q@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800vP]Q@anon-20191002_181700-768:localhost:8800!VNdqhtoDkyMoQdMTtM:localhost:8800uP]Q@anon-20191002_181700-767:localhost:8800!ulbQzxdPXzuvNoqqgU:localhost:8800tP]Q@anon-20191002_181700-763:localhost:8800!pTvdDtkgovsIdAdxCm:localhost:8800sP]Q@anon-20191002_181700-762:localhost:8800!vxEMWYTUdzvLyVZNzJ:localhost:8800rP]Q@anon-20191002_181700-758:localhost:8800!CAGaRyRvrohDRBsrWH:localhost:8800qP]Q@anon-20191002_181700-757:localhost:8800!hNCwypIzdDZDVmCEfd:localhost:8800pP]Q@anon-20191002_181700-752:localhost:8800!WgXzOXLTeqaGfiDFhL:localhost:8800oP]Q@anon-20191002_181700-744:localhost:8800!YaLuQzmJKSMTSFEqjO:localhost:8800nN[Q@anon-20191002_181700-85:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800,N[Q@anon-20191002_181700-84:localhost:8800!TleKOyAElrpgyyrAQA:localhost:8800+N[Q@anon-20191002_181700-83:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800*N[Q@anon-20191002_181700-82:localhost:8800!IGVHKYcSuxzVPlFHlj:localhost:8800)N[Q@anon-20191002_181700-81:localhost:8800!xhbvqJDfxMSsZPqvld:localhost:8800(N[Q@anon-20191002_181700-79:localhost:8800!OSHhtkGUjpUCkXwIhj:localhost:8800'N[Q@anon-20191002_181700-77:localhost:8800!AWfbViAZparIjmDaVT:localhost:8800&N[Q@anon-20191002_181700-75:localhost:8800!wnriPzXkIMmdTNoJKU:localhost:8800%N[Q@anon-20191002_181700-74:localhost:8800!jfshVGNDxkvqPxFxWB:localhost:8800$P]Q@anon-20191002_181700-743:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800mP]Q@anon-20191002_181700-742:localhost:8800!cOFSwLSkxZECJMvjjZ:localhost:8800lP]Q@anon-20191002_181700-736:localhost:8800!eGEEtFXUXuZDImkeql:localhost:8800kP]Q@anon-20191002_181700-735:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800jP]Q@anon-20191002_181700-734:localhost:8800!ZOpRjvUhkWYJBFJZeO:localhost:8800iP]Q@anon-20191002_181700-733:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800hP]Q@anon-20191002_181700-732:localhost:8800!BPNyKqmwcpGxIbGFZG:localhost:8800gP]Q@anon-20191002_181700-731:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800fP]Q@anon-20191002_181700-730:localhost:8800!ZOwibbprUCQrSJQCrx:localhost:8800eN[Q@anon-20191002_181700-72:localhost:8829!OaCEdDAiatpwYcagUb:localhost:8800"P]Q@anon-20191002_181700-729:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800bP]Q@anon-20191002_181700-728:localhost:8800!qtelAHlSkrqEFmlCqS:localhost:8800aP]Q@anon-20191002_181700-725:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800`P]Q@anon-20191002_181700-724:localhost:8800!biBIcqnGelHvLnpkOu:localhost:8800_P]Q@anon-20191002_181700-723:localhost:8800!yNfCaBMPezurwkJRAX:localhost:8800^   .teQau$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3756}{"auth_events": ["$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0", "$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ", "$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "prev_events": ["$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0"], "type": "m.room.join_rules", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043951408, "hashes": {"sha256": "cMuKZnDLf9vex6lxpW7m3PYe9BRobZfODJfXk5/Xo0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "fuvTKodbW4GqtoXYqIxA5j3daXKX0mzg4pFS0YIlJIafbluByhQw9/grFl4EVuGHaK9UxN/CBdb7OIxvh7KwBA"}}, "unsigned": {"age_ts": 1570043951408}}keQac$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3755}{"auth_events": ["$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ", "$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "prev_events": ["$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "type": "m.room.power_levels", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"users": {"@anon-20191002_181700-744:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043949965, "hashes": {"sha256": "wqTXEnibsdxtbgmwKpVHg4XX0QXX1BlJbT2OoPocFfU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xVpC6LCDs91dy3x3oFJ4H8yEOj4WTOVtKxS0egXixneLkz3FrFhIaE68QfNpObBUia+FFhAwJBq316KXmn91Dg"}}, "unsigned": {"age_ts": 1570043949965}}reQaq$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3754}{"auth_events": ["$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ"], "prev_events": ["$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ"], "type": "m.room.member", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"membership": "join", "displayname": "LIBVRACXDTFHBVRAEYIU", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-744:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043948301, "hashes": {"sha256": "g29odtUB3l05oHTmYhhfaU72dcUdHtX8QQSGKPMtCoE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "7fPooXcBhWpr5bVslB651mgliCCvahmfxshdkOULcOZTfApRKnGexNp+c3mvxdenqvNqqBJgUyb6hllJx1yZAg"}}, "unsigned": {"age_ts": 1570043948301}}ieQa_$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3753}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-744:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043947372, "hashes": {"sha256": "e9xIxOmFAaQwdp13CcRQwIOppY52DNRCq25bp+8ioho"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "oF8LUQTOB9rwg5a6q9m3zUYNUSOkLp0NVmpt1lbqxgZtCNuk8QyZq1iN0qwu0QZhaOQikn+hTxGr3P6IIrgADA"}}, "unsigned": {"age_ts": 1570043947372}} ~z v r n j fb^ZVRNJF;eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800:eeQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:88009eeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:88008eeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:88007eeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:88006eeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:88005eeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:88004eeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:88003eeQ$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:88002eeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:88001eeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:88000eeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800/eeQ$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800.eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800-eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800,eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800+eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800*eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800)eeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800(eeQ$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800'eeQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800&eeQ$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800%eeQ$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800$eeQ$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800#eeQ$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800"eeQ$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800!eeQ$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800 eeQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0!YaLuQzmJKSMTSFEqjO:localhost:8800eeQ$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0!YaLuQzmJKSMTSFEqjO:localhost:8800eeQ$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo!YaLuQzmJKSMTSFEqjO:localhost:8800 X9o V   ] , P +&c81i7  Jp $^> vD|||   v D   1e$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtk 1e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw 1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 1e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI i1e$9J8Rh1nPGZfWNGvAx96ukxkVrABVrSpCFhUOQiiWmrw1e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM 1e$8TtASJftiHbnyGO_cLokO4WyKL-MneEF83i0IEfGvvg1e$8MDRdWoBe9Ajg-rvEfQ048qgZ3jDP13AB9cNnK6lAeAP3$80:localhost:42455 1e$83pFZBioBc_tGiONIXeDoAD3Bog1ZBsbbgix6aPayug1e$839we-xJH0R3JiPsWjl9-SBD9u7cKA1bUUk1eMQJQyk Q1e$81oJayLYtK5OQNHs5Ii7NbGQDKnp5B24IVdHhRrDQok1e$81HXJ_VanYfl-2_XFBSYyfWzjAripjALT_UuRDt9Ud4,1e$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKY1e$9KRAsMjveRqYmGonp2q7JOqDNFSzHdsTwNtwYyxYeMs1e$9JdO4C5DrhKJRISukM4EmpNcSgzJo4zIbiQ8zJy2JmI1e$9J7bUObnS0600c6sWi81LKfUehLyhgsdUK7F6PViUiAf1e$9J5JiXpDXx/WG4N2GWHMjXp0iZj+r93v8PzAvLmAE9w1e$9J2oGCU5wKB3Cw2Po395pFE00By99sVD-V2sjQv7V_IX1e$9GCFGf81qEC8zBHQ4v8MTMlhTXxLhY0vBSItLc_O3BM1e$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k1e$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ41e$99vGp30yFE3lyoDabwV1FgaAnF78K0IRJA3gRB9PBBE1e$8r4z5yAKgnpzu78s_ZRq_L9PYNU3YZ-tD7aklDUrZoI1e$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y0e$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJUW1e$8kGud4C9Mv5_9C1BokCI9IjZOWiUv8qTzJ7xHMeXBqI1e$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIUG1e$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw1e$8bSQs6UmL1xAxsucV55T6ZYY2mJp8K7WukPgNlTItQw- 21e$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ1e$8Z3PGqa-c0fim5Zhxdj1dy-DXAPO-99RurBPeF-QhxE]1e$8Voxt5byk62ZbAGuE7QfPxFWtFjMUoF6JAP-w6OntfMF1e$8S6RB1RtGglelJIO30-hf1moHjDcQWFg1veUU2C9Sv81e$8O5NsOOqrt-JSoc9Etup-1lGmoN3ZWsyUUks-W16HLg1e$8MSmsFaqOo2Q0jS4awYS0OTKHxW6rRg_DESPIYoL1dM1e$8La-WlWhbnHickPGpuf3gCDLEa-y6-fUbxvdvTc8o2Y;1e$8ER_Ey1I1yfrQwPj6GOH15ierJzH3rP2oBWR9rQFzZc0e$8FVH11fuYCENaEz_t-6b1-7v2udtYinKfsjnUer9YlQi1e$8HBE6YMf5AJY1DPC3zIsk7ilCaxEEknbql-vxOJeVD01e$8GnmSYRxTbMGb8PVqPQc76AT72uxXok9M7RsVMIWlfM1e$8yXg5hK_dT3iyvRD1uCxEk0xe6Y6ECZ0IFIt-71CbxA L1e$85-mhmhc7gR4-ga2aT_YRE8KxhXPU5okdioR95DKi0ot1e$8xoBE_SRIxZ_kWG7GLff4h31tMGJUwjePKeHlaonEzU 1e$876uc985lzwWXXMilkPeBl2Qx5WE3_Be17DFsgYxA_AM1e$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48 @1e$88778R9IUFydMHsn3X4omuhLBanyT8q8ZBqHVNoDhBY1e$8K9k8UbdQ4MIAMWwAfdY49vnGS_VcYriWsa-wQUEqD0 ) 21e$89t2EkS7aeqyNuV9RTAvuH8jZ3V9m_YsnJLxM4OiUWw_1e$895RnA-aAnWDH7sNbSOvRW06hKGvhrDq73w3AglljJU |21e$8p8HqgvtCu-4JWhN_VUT8bo2wNVV-Q69CGqriMGFPzA&1e$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM @jd1e$8WqxsC8RbC8yc3Uwz_bCvO2bBgxO_yE5lbwKS04esM8 23$94:localhost:42455 3$90:localhost:42455 3$87:localhost:42455 3$82:localhost:42455   keQac$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3760}{"auth_events": ["$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "type": "m.room.power_levels", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"users": {"@anon-20191002_181700-746:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043955075, "hashes": {"sha256": "4Pjl/GZtHidLI/KNI2ZgoREJWRZTDKh3BCGx2uZ12A0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Iiqwjegd4bpp0ABfQ9ZIzsi/vkzSqhIYzTfWItRJcFBPWQTnAZJKfzweGfrEVeudvWCtCj8vREDL4fPu8PjRCA"}}, "unsigned": {"age_ts": 1570043955075}}reQaq$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3759}{"auth_events": ["$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0"], "prev_events": ["$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0"], "type": "m.room.member", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"membership": "join", "displayname": "QLDSIOXVCTASBPKYRNHI", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-746:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043954036, "hashes": {"sha256": "0EKaV/zovNRbq5eUo+WnMXRdq1d+vWqYnBUJZOAm4Sc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6fAOL3iQmVdMEpXnSH3j4izbipM47QFW1Z1dmTswgygdMlmU7Hnsfg2yP/WI/MvYusDUFPDeoVpdpKj+3Fx0Ag"}}, "unsigned": {"age_ts": 1570043954036}}eQa$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800{"token_id": 717, "stream_ordering": 3758}{"auth_events": ["$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0", "$5sxG6gnjA0YxrcnV257HmZCGkuJQwxInEUpNTUdRzfQ", "$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUo"], "prev_events": ["$2VZNI10q-Q2St1ezRc66-G5Em2gw5b3d5Nx-ZtXh3-0"], "type": "m.room.history_visibility", "room_id": "!YaLuQzmJKSMTSFEqjO:localhost:8800", "sender": "@anon-20191002_181700-744:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043952398, "hashes": {"sha256": "k/IjyMPBmCJNoU2H3foDyuV26SnZOuck5cPaW3G3lmM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w1rU1Th2SeV4kRre30ry6aFJSruf6oYj2SKBvQy3cX33nvSrWF9PguoUYj6WXiWILFT/AeO/kCudYtKPYWMJBA"}}, "unsigned": {"age_ts": 1570043952398}}ieQa_$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3757}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-746:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043952249, "hashes": {"sha256": "VvwSrIGLmDJXm+8JO94GDtMViUVVG271Ej+XZsVAbdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ubX2qYbrEJajp/HOYg8gt5fvENbmK/MBKZlu9TLRczrqfmQ5LeEJDe50WwKtEeKZKFHvIi65d0CO63rZj7vRAw"}}, "unsigned": {"age_ts": 1570043952249}} N\ Z h " x v.>DN$Fe/Q ]$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsm.room.join_rules!sBcwyPoXKgnSGVTjNR:localhost:8800mm@anon-20191002_181700-754:localhost:8800&Ee3Q ]$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsm.room.power_levels!sBcwyPoXKgnSGVTjNR:localhost:8800mm@anon-20191002_181700-754:localhost:8800 De'Q ]$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawm.room.member!sBcwyPoXKgnSGVTjNR:localhost:8800m m^@anon-20191002_181700-754:localhost:8800C e'Q  ]$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIom.room.create!sBcwyPoXKgnSGVTjNR:localhost:8800mڇmܡ@anon-20191002_181700-754:localhost:8800,Be?Q ]$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4m.room.history_visibility!WgXzOXLTeqaGfiDFhL:localhost:8800mAm~@anon-20191002_181700-752:localhost:8800$Ae/Q ]$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgm.room.join_rules!WgXzOXLTeqaGfiDFhL:localhost:8800mxmG@anon-20191002_181700-752:localhost:8800&@e3Q ]$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcUm.room.power_levels!WgXzOXLTeqaGfiDFhL:localhost:8800m0mЊ@anon-20191002_181700-752:localhost:8800 ?e'Q ]$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsm.room.member!WgXzOXLTeqaGfiDFhL:localhost:8800mem@anon-20191002_181700-752:localhost:8800> e'Q  ]$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMcm.room.create!WgXzOXLTeqaGfiDFhL:localhost:8800mžm@anon-20191002_181700-752:localhost:8800 =e'Q ]$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lgm.room.member!LFBhoxJpmBqFrwEzGP:localhost:8800mm@@anon-20191002_181700-751:localhost:8800 <e'Q ]$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8m.room.member!LFBhoxJpmBqFrwEzGP:localhost:8800m鸩m@anon-20191002_181700-750:localhost:8800&;e3Q ]$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwm.room.guest_access!LFBhoxJpmBqFrwEzGP:localhost:8800m~m`@anon-20191002_181700-750:localhost:8800,:e?Q ]$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdsm.room.history_visibility!LFBhoxJpmBqFrwEzGP:localhost:8800mOmx@anon-20191002_181700-750:localhost:8800$9e/Q ]$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Ym.room.join_rules!LFBhoxJpmBqFrwEzGP:localhost:8800mm@anon-20191002_181700-750:localhost:8800&8e3Q ]$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwm.room.power_levels!LFBhoxJpmBqFrwEzGP:localhost:8800m驣m骴@anon-20191002_181700-750:localhost:8800 7e'Q ]$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIm.room.member!LFBhoxJpmBqFrwEzGP:localhost:8800mm8@anon-20191002_181700-750:localhost:88006 e'Q  ]$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOicm.room.create!LFBhoxJpmBqFrwEzGP:localhost:8800mm[@anon-20191002_181700-750:localhost:8800 5e'Q ]$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywm.room.member!URpLZLuBfVcfHVTBGS:localhost:8800mJm@anon-20191002_181700-747:localhost:8800 4e'Q ]$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkm.room.member!URpLZLuBfVcfHVTBGS:localhost:8800mmg@anon-20191002_181700-746:localhost:8800&3e3Q ]$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEom.room.guest_access!URpLZLuBfVcfHVTBGS:localhost:8800m鐖m\@anon-20191002_181700-746:localhost:8800,2e?Q ]$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01Em.room.history_visibility!URpLZLuBfVcfHVTBGS:localhost:8800m鍢mj@anon-20191002_181700-746:localhost:8800$1e/Q ]$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJMm.room.join_rules!URpLZLuBfVcfHVTBGS:localhost:8800mm鋈@anon-20191002_181700-746:localhost:8800&0e3Q ]$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMm.room.power_levels!URpLZLuBfVcfHVTBGS:localhost:8800m釃m@anon-20191002_181700-746:localhost:8800 /e'Q ]$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2Im.room.member!URpLZLuBfVcfHVTBGS:localhost:8800mtm@anon-20191002_181700-746:localhost:8800 8l D `8<]c!E@anon-20191002_181700-756:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwoVNKYAMEGUQ127.0.0.1Perl + Net::Async::HTTP/0.44mS;]c!E@anon-20191002_181700-755:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQoAJENIKARXJ127.0.0.1Perl + Net::Async::HTTP/0.44m5:]c!E@anon-20191002_181700-754:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAoZUIRTQEUGG127.0.0.1Perl + Net::Async::HTTP/0.44m֜9]c!E@anon-20191002_181700-753:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGU6Z01KOUM3MSNkVD12djQKMDAyZnNpZ25hdHVyZSD-dOkA6mclTxbbot0PQKcg3t_wPGDZuK8QS9_vn4-7pQoPLSIYKWQOB127.0.0.1Perl + Net::Async::HTTP/0.44m 8]c!E@anon-20191002_181700-752:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDojV2dXQyZyMDJzNmpiSW0KMDAyZnNpZ25hdHVyZSAcWErSpy0GgsX-3eLRi__qiMdN-57XVwHvcysnUb-4zQoRYCPPVBPAQ127.0.0.1Perl + Net::Async::HTTP/0.44mփ7]c!E@anon-20191002_181700-751:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEE2NkxtUFd6YlpCNEJoV34KMDAyZnNpZ25hdHVyZSAIJ3M5NKGtxWSh3TYB1jDZYgsedVQtetpHvZm2ofoNVAoFXMMNKQIDM127.0.0.1Perl + Net::Async::HTTP/0.44mv6]c!E@anon-20191002_181700-750:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVUTTBfPV53X282U2h4UmoKMDAyZnNpZ25hdHVyZSCBRvaQt0cUgqSOtMz0S19VHZbRJAn7WOoYQliYtaTUOAoVQNSLBGSCN127.0.0.1Perl + Net::Async::HTTP/0.44mF5]c!E@anon-20191002_181700-748:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG14eXYwaFU5SncjZG40TTcKMDAyZnNpZ25hdHVyZSC3BsG3Ss1eOBRGacGoJH3GemLDq0PkfBTxEFUplzjdfgoFCZXWADFJA127.0.0.1Perl + Net::Async::HTTP/0.44mC4]c!E@anon-20191002_181700-747:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFNlMXpsZn4qd0FsZWR6M0AKMDAyZnNpZ25hdHVyZSAt2HgBi1KZK7fXRGURkoa17Fd0EpRckxfiWxm3K9TwRwoIJKBXNQJNY127.0.0.1Perl + Net::Async::HTTP/0.44m3]c!E@anon-20191002_181700-746:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF5MJlMwMzJhKmtXaGdtT2QKMDAyZnNpZ25hdHVyZSAi2LQ15Nj32X7YvoVAOW4LUISJ9ofycZslZ111Yyb4-AoSROUQRJUGN127.0.0.1Perl + Net::Async::HTTP/0.44mx Kd0`, \ ( X $ T P  L |HxDt@ p<l8h4d0`,1"e$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU 1!e$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM 1 e$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw 1e$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 1e$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew 1e$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU 1e$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 1e$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo 1e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 1e$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk 1e$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc 1e$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo 1e$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50 1e$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s 1e$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw 1e$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI 1e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg 1e$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ 1e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM 1e$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA 1e$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4 1 e$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4 1 e$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA 1 e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1 e$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE 1 e$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs 1e$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI 1e$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc 1e$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 1e$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c 1e$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU 1e$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA 1e$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y 1e$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 1e$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk 1e$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY ~1~e$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk }1}e$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI |1|e$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 {1{e$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 y1ze$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ z1ye$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A x1xe$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns w1we$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg v1ve$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM u1ue$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI t1te$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0 s1se$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo r1re$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 q1qe$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 p1pe$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig o1oe$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8 n1ne$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs m1me$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs l1le$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw k1ke$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo j1je$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4 i1ie$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg h1he$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU g1ge$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs f1fe$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc e1ee$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg d1de$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 c1ce$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw b1be$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds a1ae$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y `1`e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw _1_e$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI ^1^e$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic ]1]e$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw \1\e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk [1[e$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo Z1Ze$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E Y1Ye$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM X1Xe$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM W  { eQa$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3763}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E"], "type": "m.room.guest_access", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043957398, "hashes": {"sha256": "6ZlYLp5hr/VExM1MzeFByak/dCF2Q4NxIwyf4kmxc/o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LT4KgVm7HZhJtttm+DFifMbOyp/FebysbPSiIUq03IgnTRMM2B6IeHqII6sgjklpiRCmtpBt8S3txQGXopezDQ"}}, "unsigned": {"age_ts": 1570043957398}} eQa$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3762}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM"], "type": "m.room.history_visibility", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043956642, "hashes": {"sha256": "CHmuhbW279xqOoYZs8bGXhKdhzUAoi+SeLlKpJK5+D0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r21Rva8Dc/CE7A3YO4dbFBuu4R7UR54fvVzARhXwjGtqXnyELhOjVc8l4I2L+DHAjUyfOunFPyL9pJy6k8cQAA"}}, "unsigned": {"age_ts": 1570043956642}}t eQau$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3761}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM"], "type": "m.room.join_rules", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043955924, "hashes": {"sha256": "HeCvSbZnFnLxpTqVFKkDHMs3i/3DBsoRBOw2MaqlwUU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "TVjoeSPW0BYTyuKOzt4Ol/9LPCdA/iZVRcrifzIeABYiTKteURNU3FP1yzWnVtx49iykUixMMTuXV0ZYnzi2AQ"}}, "unsigned": {"age_ts": 1570043955924}}   m p  % ru 03UX58ZdQ' e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.create$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_AjQ3 e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_access$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnspQ? e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibility$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgh Q/ e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rules$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMj Q3 e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI Q']e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0d Q' e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo8 Q']ee!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40 Q']e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40jQ3 e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_access$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigpQ? e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibility$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8hQ/ e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rules$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsjQ3 e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs Q']e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawdQ' e!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.create$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIopQ? e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibility$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4hQ/ e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rules$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgjQ3 e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU ~Q']e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsd}Q' e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc8|Q']ee!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8 {Q']e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8jzQ3 e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_access$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwpyQ? e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibility$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzdshxQ/ e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.join_rules$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_YjwQ3 e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.power_levels$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw vQ']e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-750:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIduQ' e!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.create$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic8tQ']ee!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk sQ']e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.member@anon-20191002_181700-747:localhost:8800$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLkjrQ3 e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.guest_access$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEopqQ? e!URpLZLuBfVcfHVTBGS:localhost:8800m.room.history_visibility$s3iIVrd18TUcZqD9e7IIC41XkDkt6HLIvC9Kz42N01E 2 k2ieQa_$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3766}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-750:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043962363, "hashes": {"sha256": "/6VGnD2vGfOhaJxDSVFrnk4FvQ81inIphEGXeVzPfTg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "b24VORGG+I3AiBrFNlEC4h3n4C6qqPsQRtilc10DAMa/qHiVEvtTfB38Ol1NcBrLbnwMBJ0fKOxCtR/IITRKAg"}}, "unsigned": {"age_ts": 1570043962363}}H eQa$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 720, "stream_ordering": 3765}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM", "$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk"], "prev_events": ["$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk"], "type": "m.room.member", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-747:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-747", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-747:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043959114, "hashes": {"sha256": "iLKGtnxjq2IEMDABMyrFBt5OLEkoeRQQWsAXdCOccLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5vNZF/kclBcqkhFH8WMwX9z1F3fRxwLwb97ecmWJDw0gQP5Au0qq6oTWI/7dL4CpRJ4yB/2aeu82LQk1Ius8AA"}}, "unsigned": {"age_ts": 1570043959114, "replaces_state": "$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk"}} eQa/$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk!URpLZLuBfVcfHVTBGS:localhost:8800{"token_id": 719, "stream_ordering": 3764}{"auth_events": ["$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRM", "$5ZRrCWA0b27inrPafhIipuX5RPvoFJpLI6w758z77m0", "$ynIMImStofkcqEg1TLVdLeeTYhVhjNwepb6jNMzNeJM", "$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2I"], "prev_events": ["$_NSmo-4wR7aozorRND5q8mi-o1HEGB_tJ1ITlIW-UEo"], "type": "m.room.member", "room_id": "!URpLZLuBfVcfHVTBGS:localhost:8800", "sender": "@anon-20191002_181700-746:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-747", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-747:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043958262, "hashes": {"sha256": "D1shIP3d+46d5Ie1OBaGj0MjXUKvprlIBYQsLBei9hA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "10P4j+p6IfujmZuNBDGDZwATaOiFskBCdP1PiELIthhOSULxrlfhuUlJAUwH9TXQ1V2j3EkYE5abvxEbQBYkCQ"}}, "unsigned": {"age_ts": 1570043958262, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-746:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-746:localhost:8800", "content": {"membership": "join", "displayname": "QLDSIOXVCTASBPKYRNHI", "avatar_url": null}, "sender": "@anon-20191002_181700-746:localhost:8800"}]}} HjO,z_<  @ ) P x 9   k P - {<F/~?"I2{d%t5fC, { <   v S < L /  /  m.room.join_rules X3  m.room.power_levels W>'] m.room.member@anon-20191002_181700-758:localhost:8800 V'  ~m.room.create U"?  }m.room.history_visibility T/  |m.room.join_rules S3  {m.room.power_levels R>'] zm.room.member@anon-20191002_181700-755:localhost:8800 Q>'] ym.room.member@anon-20191002_181700-757:localhost:8800 P'  xm.room.create O3  wm.room.guest_access N"?  vm.room.history_visibility M/  um.room.join_rules L3  tm.room.power_levels K>'] sm.room.member@anon-20191002_181700-754:localhost:8800 J'  rm.room.create I>'] qm.room.member@anon-20191002_181700-755:localhost:8800 H>'] pm.room.member@anon-20191002_181700-755:localhost:8800 G3  om.room.guest_access F"?  nm.room.history_visibility E/  mm.room.join_rules D3  lm.room.power_levels C>'] km.room.member@anon-20191002_181700-754:localhost:8800 B'  jm.room.create A"?  im.room.history_visibility @/  hm.room.join_rules ?3  gm.room.power_levels >>'] fm.room.member@anon-20191002_181700-752:localhost:8800 ='  em.room.create <>'] dm.room.member@anon-20191002_181700-751:localhost:8800 ;>'] cm.room.member@anon-20191002_181700-751:localhost:8800 :3  bm.room.guest_access 9"?  am.room.history_visibility 8/  `m.room.join_rules 73  _m.room.power_levels 6>'] ^m.room.member@anon-20191002_181700-750:localhost:8800 5'  ]m.room.create 4>'] \m.room.member@anon-20191002_181700-747:localhost:8800 3>'] [m.room.member@anon-20191002_181700-747:localhost:8800 23  Zm.room.guest_access 1"?  Ym.room.history_visibility 0/  Xm.room.join_rules /3  Wm.room.power_levels .>'] Vm.room.member@anon-20191002_181700-746:localhost:8800 -"?  Um.room.history_visibility ,'  Tm.room.create +/  Sm.room.join_rules *3  Rm.room.power_levels )>'] Qm.room.member@anon-20191002_181700-744:localhost:8800 ('  Pm.room.create '>'] Om.room.member@anon-20191002_181700-743:localhost:8800 &"?  Nm.room.history_visibility %/  Mm.room.join_rules $3  Lm.room.power_levels #>'] Km.room.member@anon-20191002_181700-742:localhost:8800 "'  Jm.room.create !>'] Im.room.member@anon-20191002_181700-737:localhost:8829 >'] Hm.room.member@anon-20191002_181700-737:localhost:8829 >'] Gm.room.member@anon-20191002_181700-737:localhost:8829 >'] Fm.room.member@anon-20191002_181700-737:localhost:8829 "?  Em.room.history_visibility /  Dm.room.join_rules 3  Cm.room.power_levels >'] Bm.room.member@anon-20191002_181700-736:localhost:8800 '  Am.room.create >'] @m.room.member@anon-20191002_181700-735:localhost:8800 "?  ?m.room.history_visibility /  >m.room.join_rules 3  =m.room.power_levels >']  v D  | J  Q  W %1 ] +c1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI{1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM |1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA)1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kW1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4R1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IM1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX480e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMY1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgY1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA~1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw_1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQm1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM 31e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo 1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4x1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroE1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 k1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s 1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc (1j8p> v D  | J  Q  W %1 ] +c1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI{1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D0}1e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM |1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA)1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kW1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4R1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IM1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX480e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMY1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgY1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA~1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw_1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQm1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM 31e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo 1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm4r1e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroE1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 k1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s 1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 1e$yy0xPAjVjINU0ai4P3fs1QvLw-7ZiQ48mwhDsfSygKc 3?>Rf+z?Oc( w <  P  d ) x =  Q e*ySg,{@8]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA8]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNY8]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8~]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8}]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8|]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK8{]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8z]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8y]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8x]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8w]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8v]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8u]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8']!D@anon-20191002_181700-790:localhost:8800VALGYGSZPA8&]!C@anon-20191002_181700-787:localhost:8800ESOZVRSFST8%]!B@anon-20191002_181700-788:localhost:8800JZUHRDQQEL8$]!A@anon-20191002_181700-786:localhost:8800WJWBUMRLAI8#]!@@anon-20191002_181700-785:localhost:8800TVEQJOAJLI8"]!?@anon-20191002_181700-784:localhost:8800SHHMGHRUZH8!]!>@anon-20191002_181700-783:localhost:8800CBPSCDUMIW8 ]!=@anon-20191002_181700-782:localhost:8800CMQAXLTOQC8]!<@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!;@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!:@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!9@anon-20191002_181700-775:localhost:8800KWWOCKYJTK8]!8@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ8]!7@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!6@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!5@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!4@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!3@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!2@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!1@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!0@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!/@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!.@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!-@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!,@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!+@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8 ]!*@anon-20191002_181700-760:localhost:8800AAUYDDOUHU8 ]!)@anon-20191002_181700-758:localhost:8800GUAXNWFTDG8 ]!(@anon-20191002_181700-757:localhost:8800QRQFPUSZXE8 ]!'@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ8 ]!&@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG8]!%@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!$@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!#@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!"@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN8]! @anon-20191002_181700-749:localhost:8800UPJEGCTJBW  iih5 g 4 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGhVMWkrZ1JuNEhxPWJYVEsKMDAyZnNpZ25hdHVyZSDrKJ14COasWCLfQ7JP_DcKSNLxTUoofNNnaS96UxrohQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGsxWUcsWVd5O0h0U1FQLl4KMDAyZnNpZ25hdHVyZSA3ft4wYArNZ7d3Zh1PZ-nZ6NBBNQWGzeOBa7HJ2v0OfAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHpWd2hwPTFwenl1Mi5FLFkKMDAyZnNpZ25hdHVyZSB1uM1gOEgAdQFsUxJiPnrcwKSDUMSaQyhxFX1HGmkHcAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICxZem9fflRBTkwwQHNoci0KMDAyZnNpZ25hdHVyZSD1r-6-O8-VkiNQqXLl_zdkOkVh0ZBPBBYmtDNhUtIkhQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhrNlJEMEs0KnFxZ2hscm8KMDAyZnNpZ25hdHVyZSAmrmFEO6uL_oiQzt1GWZsgXgq87Hr3_x86FFxE8sxn1wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF9YZXJwJmVeMV9YJiM4ZjMKMDAyZnNpZ25hdHVyZSB5NjZzeDt0lBB0D1LtH8IyMvYvIrLkTxc6vre0UFloIwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHBtbktOPWF0YiZiZDItLlcKMDAyZnNpZ25hdHVyZSChfTZFs7lHO1ZgTyC38clDz-UAxx8_tnr8Qr6cSTK0Fwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZGMjg1XyN6ay5nR3huVDIKMDAyZnNpZ25hdHVyZSCYnYb1_ZWI9PweWP20wPM6zOErLXpEKMDK8O6aZowylwo31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDROT2wuZFROc2VnR3M6c1gKMDAyZnNpZ25hdHVyZSDGynSuY1KhGWTzubZHTUhlUCJ8qFvK_oxm1XAOIo4j4go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpDN0dKX0A3RExxQXVTfmwKMDAyZnNpZ25hdHVyZSAES0eD9WiAuHrdgFXofP7Pui2WRI1MP61s9oGFvx-YqAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFRpU0owVm1XaHQxdztXcmQKMDAyZnNpZ25hdHVyZSDR-HRcdLK_MfsYfd0iHNcd_xMcYxJ7GnKmeLPACenMAQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGQxRXojMEstfm1-OEk7LEUKMDAyZnNpZ25hdHVyZSCmP_kohp-g3ROt4ETgBm5t92jQ6wZVM812SXe1QswB5Ao @!k=W)qCvHb4 | N j ?  Y + s G  a 3 }OtHbBeAiE!+[@anon-20191002_181700-77:localhost:8800^-]@anon-20191002_181700-779:localhost:8800-]@anon-20191002_181700-777:localhost:8800-]@anon-20191002_181700-775:localhost:8800-]@anon-20191002_181700-774:localhost:8800-]@anon-20191002_181700-773:localhost:8800-]@anon-20191002_181700-772:localhost:8800-]@anon-20191002_181700-771:localhost:8800-]@anon-20191002_181700-770:localhost:8800-]@anon-20191002_181700-769:localhost:8800-]@anon-20191002_181700-768:localhost:8800-]@anon-20191002_181700-767:localhost:8800-]@anon-20191002_181700-766:localhost:8800-]@anon-20191002_181700-764:localhost:8800-]@anon-20191002_181700-763:localhost:8800-]@anon-20191002_181700-762:localhost:8800-]@anon-20191002_181700-761:localhost:8800-]@anon-20191002_181700-760:localhost:8800+[@anon-20191002_181700-75:localhost:8800]-]@anon-20191002_181700-759:localhost:8800-]@anon-20191002_181700-758:localhost:8800-]@anon-20191002_181700-820:localhost:8800#+[@anon-20191002_181700-81:localhost:8800a-]@anon-20191002_181700-819:localhost:8800$-]@anon-20191002_181700-818:localhost:8800"-]@anon-20191002_181700-816:localhost:8800 -]@anon-20191002_181700-815:localhost:8800!-]@anon-20191002_181700-814:localhost:8800-]@anon-20191002_181700-813:localhost:8800-]@anon-20191002_181700-812:localhost:8800-]@anon-20191002_181700-811:localhost:8800-]@anon-20191002_181700-810:localhost:8800+[@anon-20191002_181700-80:localhost:8800`-]@anon-20191002_181700-809:localhost:8800-]@anon-20191002_181700-808:localhost:8800-]@anon-20191002_181700-807:localhost:8800-]@anon-20191002_181700-806:localhost:8800-]@anon-20191002_181700-805:localhost:8800-]@anon-20191002_181700-804:localhost:8800-]@anon-20191002_181700-803:localhost:8800-]@anon-20191002_181700-802:localhost:8800-]@anon-20191002_181700-801:localhost:8800-]@anon-20191002_181700-800:localhost:8800*Y@anon-20191002_181700-7:localhost:8800+[@anon-20191002_181700-79:localhost:8800_-]@anon-20191002_181700-799:localhost:8800-]@anon-20191002_181700-798:localhost:8800-]@anon-20191002_181700-797:localhost:8800-]@anon-20191002_181700-796:localhost:8800 -]@anon-20191002_181700-795:localhost:8800 -]@anon-20191002_181700-794:localhost:8800 -]@anon-20191002_181700-793:localhost:8800 -]@anon-20191002_181700-792:localhost:8800-]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-790:localhost:8800-]@anon-20191002_181700-789:localhost:8800-]@anon-20191002_181700-788:localhost:8800-]@anon-20191002_181700-787:localhost:8800-]@anon-20191002_181700-786:localhost:8800-]@anon-20191002_181700-785:localhost:8800-]@anon-20191002_181700-784:localhost:8800-]@anon-20191002_181700-783:localhost:8800-]@anon-20191002_181700-782:localhost:8800-]@anon-20191002_181700-781:localhost:8800 @!k=W)qCvHb4 | N j ?  Y + s G  a 3 }OtHbBeAiE!+[@anon-20191002_181700-77:localhost:8800^-]@anon-20191002_181700-779:localhost:8800-]@anon-20191002_181700-777:localhost:8800-]@anon-20191002_181700-775:localhost:8800-]@anon-20191002_181700-774:localhost:8800-]@anon-20191002_181700-773:localhost:8800-]@anon-20191002_181700-772:localhost:8800-]@anon-20191002_181700-771:localhost:8800-]@anon-20191002_181700-770:localhost:8800-]@anon-20191002_181700-769:localhost:8800-]@anon-20191002_181700-768:localhost:8800-]@anon-20191002_181700-767:localhost:8800-]@anon-20191002_181700-766:localhost:8800-]@anon-20191002_181700-764:localhost:8800-]@anon-20191002_181700-763:localhost:8800-]@anon-20191002_181700-762:localhost:8800-]@anon-20191002_181700-761:localhost:8800-]@anon-20191002_181700-760:localhost:8800+[@anon-20191002_181700-75:localhost:8800]-]@anon-20191002_181700-759:localhost:8800-]@anon-20191002_181700-758:localhost:8800-]@anon-20191002_181700-820:localhost:8800#+[@anon-20191002_181700-81:localhost:8800a-]@anon-20191002_181700-819:localhost:8800$-]@anon-20191002_181700-818:localhost:8800"-]@anon-20191002_181700-816:localhost:8800 -]@anon-20191002_181700-815:localhost:8800!-]@anon-20191002_181700-814:localhost:8800-]@anon-20191002_181700-813:localhost:8800-]@anon-20191002_181700-812:localhost:8800-]@anon-20191002_181700-811:localhost:8800-]@anon-20191002_181700-810:localhost:8800+[@anon-20191002_181700-80:localhost:8800`-]@anon-20191002_181700-809:localhost:8800-]@anon-20191002_181700-808:localhost:8800-]@anon-20191002_181700-807:localhost:8800-]@anon-20191002_181700-806:localhost:8800-]@anon-20191002_181700-805:localhost:8800-]@anon-20191002_181700-804:localhost:8800-]@anon-20191002_181700-803:localhost:8800-]@anon-20191002_181700-802:localhost:8800-]@anon-20191002_181700-801:localhost:8800-]@anon-20191002_181700-800:localhost:8800*Y@anon-20191002_181700-7:localhost:8800+[@anon-20191002_181700-79:localhost:8800_-]@anon-20191002_181700-799:localhost:8800-]@anon-20191002_181700-798:localhost:8800-]@anon-20191002_181700-797:localhost:8800-]@anon-20191002_181700-796:localhost:8800 -]@anon-20191002_181700-795:localhost:8800 -]@anon-20191002_181700-794:localhost:8800 -]@anon-20191002_181700-793:localhost:8800 -]@anon-20191002_181700-792:localhost:8800-]@anon-20191002_181700-791:localhost:8800 -]@anon-20191002_181700-790:localhost:8800-]@anon-20191002_181700-789:localhost:8800-]@anon-20191002_181700-788:localhost:8800-]@anon-20191002_181700-787:localhost:8800-]@anon-20191002_181700-786:localhost:8800-]@anon-20191002_181700-785:localhost:8800-]@anon-20191002_181700-784:localhost:8800-]@anon-20191002_181700-783:localhost:8800-]@anon-20191002_181700-782:localhost:8800-]@anon-20191002_181700-781:localhost:8800  eQa$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3770}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y"], "type": "m.room.history_visibility", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043965519, "hashes": {"sha256": "RSCLuplbJw/eVJRhXYs9w/KwPzH2AUGejhTqU23Qnj0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D2wOhrAA2GHftocl78wLZjrprUJXnFv2meANVFURx3e44cAWXvYU5zYkVZ+ppKrhucPNPR0IkWyZ6zeBZJyfBQ"}}, "unsigned": {"age_ts": 1570043965519}}teQau$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3769}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw"], "type": "m.room.join_rules", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043964609, "hashes": {"sha256": "18787sw1bOoVzzWS+oytFSO+ydZU45dWUcNsW/kDMfw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nI1+9y7rLCzJoLz086LqaSANfSzFhyfSa8YQFtTzK+VgmeeKBRoXas+j60VdVAZWQFDzYjSN5ne4WJ/28iSwCw"}}, "unsigned": {"age_ts": 1570043964609}}keQac$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3768}{"auth_events": ["$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "type": "m.room.power_levels", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"users": {"@anon-20191002_181700-750:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043963811, "hashes": {"sha256": "1+/04PCp+mH+H/rQqf3AmPkYi1oYKpzHeyVoT+zCeDI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AFfolYSWui9sJxIPmxT11nQw6ck+rfMtbB2dzx/wjTqnzsOKa5ADCLzkDiKLn1zsSzd0nDn1Um9YroWELr50Ag"}}, "unsigned": {"age_ts": 1570043963811}}reQaq$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3767}{"auth_events": ["$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic"], "prev_events": ["$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic"], "type": "m.room.member", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"membership": "join", "displayname": "BABSIRRXCUHNIFZHYFMB", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-750:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043963092, "hashes": {"sha256": "fvxXP5+PUnI44YyEcXjx085QNEsNeJbBHeip3KxODII"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "GEYbdMOjtf1hoD4iZ3vRqx9fRUS26sOdcAOLHSLXln/YCYzw5S/G1ftgiT6tRbFUQjOs2UqwGsltKOlp7kdIAw"}}, "unsigned": {"age_ts": 1570043963092}} B;m< xG R ! ]  ~ M X'c2n= yHS"^- R ! ] , h 7  ` B0]H@anon-20191002_181700-794:localhost:8800+0]G@anon-20191002_181700-791:localhost:8800*0]F@anon-20191002_181700-792:localhost:8800)0]E@anon-20191002_181700-789:localhost:8800(0]D@anon-20191002_181700-790:localhost:8800'0]C@anon-20191002_181700-787:localhost:8800&0]B@anon-20191002_181700-788:localhost:8800%0]A@anon-20191002_181700-786:localhost:8800$0]@@anon-20191002_181700-785:localhost:8800#0]?@anon-20191002_181700-784:localhost:8800"0]>@anon-20191002_181700-783:localhost:8800!0]=@anon-20191002_181700-782:localhost:8800 0]<@anon-20191002_181700-781:localhost:88000];@anon-20191002_181700-779:localhost:88000]:@anon-20191002_181700-777:localhost:88000]9@anon-20191002_181700-775:localhost:88000]8@anon-20191002_181700-773:localhost:88000]7@anon-20191002_181700-774:localhost:88000]6@anon-20191002_181700-771:localhost:88000]5@anon-20191002_181700-772:localhost:88000]4@anon-20191002_181700-769:localhost:88000]3@anon-20191002_181700-770:localhost:88000]2@anon-20191002_181700-768:localhost:88000]1@anon-20191002_181700-767:localhost:88000]0@anon-20191002_181700-766:localhost:88000]/@anon-20191002_181700-764:localhost:88000].@anon-20191002_181700-763:localhost:88000]-@anon-20191002_181700-762:localhost:88000],@anon-20191002_181700-761:localhost:88000]+@anon-20191002_181700-759:localhost:88000]*@anon-20191002_181700-760:localhost:8800 0])@anon-20191002_181700-758:localhost:8800 0](@anon-20191002_181700-757:localhost:8800 0]'@anon-20191002_181700-756:localhost:8800 0]&@anon-20191002_181700-754:localhost:8800 0]%@anon-20191002_181700-755:localhost:88000]$@anon-20191002_181700-753:localhost:88000]#@anon-20191002_181700-752:localhost:88000]"@anon-20191002_181700-751:localhost:88000]!@anon-20191002_181700-750:localhost:88000] @anon-20191002_181700-749:localhost:88000]@anon-20191002_181700-748:localhost:88000]@anon-20191002_181700-747:localhost:88000]@anon-20191002_181700-746:localhost:88000]@anon-20191002_181700-745:localhost:88000]@anon-20191002_181700-744:localhost:88000]@anon-20191002_181700-743:localhost:88000]@anon-20191002_181700-742:localhost:88000]@anon-20191002_181700-736:localhost:88000]@anon-20191002_181700-735:localhost:88000]@anon-20191002_181700-734:localhost:88000]@anon-20191002_181700-733:localhost:88000]@anon-20191002_181700-732:localhost:88000]@anon-20191002_181700-731:localhost:88000]@anon-20191002_181700-730:localhost:88000]@anon-20191002_181700-729:localhost:88000]@anon-20191002_181700-728:localhost:88000]@anon-20191002_181700-726:localhost:88000]@anon-20191002_181700-727:localhost:8800 a} { y w u sqomkigeca~KeeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~JeeQ$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~IeeQ$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~HeeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800~GeeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~FeeQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800~EeeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800~DeeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~CeeQ$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800~BeeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800~AeeQ$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~@eeQ$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800~?eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800~>eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800~=eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~<eeQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~;eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~:eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y!LFBhoxJpmBqFrwEzGP:localhost:8800~9eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~8eeQ$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~7eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~6eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~5eeQ$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~4eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~3eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~2eeQ$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~1eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~0eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800~/eeQ$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw!LFBhoxJpmBqFrwEzGP:localhost:8800~.eeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI!LFBhoxJpmBqFrwEzGP:localhost:8800~-eeQ$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic!LFBhoxJpmBqFrwEzGP:localhost:8800 4W%9 q? J  P   D  V $ \ +]+kj8wEe3q? p  |q? p  | v>21e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs@1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs?1e$N4qb4tASIrXFywZdpwOpyMfAVzGdpyxn7Q9E7iJGVgs>1e$N5-c0eNvyiWR_exFgH1dhud1qXIEhclf1ZbedLfpLdw1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA)1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk&1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUcd1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB0 1e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB01e$NDvdw4mWAMGyqE3ljE4ad7qISvTI4R9ZPKK8oYZfKB021e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA+1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ5901e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA|1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoA{1e$MoKM10lxG3nDjQ_UfmD7P8_IrP-74RLKep7eV1_nyoAz1e$MntYfY1DMOdLfXqSQbppH82LuMmUsXDFSyvcv038BeA*1e$NCWH2BphcB_OBi1JpgbcLZ01jc4bU86gm_Ueba8jEgUd |21e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NNNLijp-dqwZ3ccTOUhA-QzCjLaR_W_zUYf3DcnZ0I81e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg1e$NIvOPv4LEo-_7DyQNDWvTcyNCNzxlU80sxAEHQTgbPg0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2YI0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2YH0e$N3hqBEnjwLLF1M0j2v3b08N03VtCJfldV_eJ3EicN2YG1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N3PjomovOVHSGqoD0ReuroHMMvJdN9_I8B_QFHa8jkk1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg$1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg#1e$N-hqgETt3L-m7Dh31jJtVG1L2-yz603FgZ5MdGnljKg"1e$MyYTlBWvLSYn70N_w0DgCHdJX0hbtfoUDPSIRPZqBK81e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMw1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMv1e$MuRW3OJ44p7h_bryaNhHBmX1qrcYJzgUWwxgY16wYNMu1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw 1e$Mr_LmADdLjHXmfM3KLD3b9nuEjBxzu63nOoIH-NAigw 1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04~1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04}1e$MrT1fntl9Bq19viaEXgJJ2EOkHXY0JDXRVYTkgFAH04| vd1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHc 1e$Mwiv6-kiTudYMN5bhI5lz0KYE62V5-FGIoncn0brId41e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$ND+k4XY/qjG7GPMEUvijT+iE8++eWx8tUgIggrbk5U01e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM1e$MqqfS01ZimTzA-cY2kcvuGNuEMhTQnAj4BkXsIVZgsM "N"  9 a f  5Wbg%*NoYQ? e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibility$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAgXQ/ e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rules$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YiWQ3 e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 VQ']e !CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkcUQ' e ~!CAGaRyRvrohDRBsrWH:localhost:8800m.room.create$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYoTQ? e }!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibility$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkgSQ/ e |!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rules$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIiRQ3 e {!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 QQ']e z!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ PQ']e y!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08cOQ' e x!hNCwypIzdDZDVmCEfd:localhost:8800m.room.create$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_AiNQ3 e w!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_access$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnsoMQ? e v!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibility$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRggLQ/ e u!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rules$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMiKQ3 e t!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI JQ']e s!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0cIQ' e r!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo HQ']e q!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8 GQ']e p!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40iFQ3 e o!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_access$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigoEQ? e n!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibility$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8gDQ/ e m!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rules$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsiCQ3 e l!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs BQ']e k!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawcAQ' e j!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.create$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIoo@Q? e i!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibility$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4g?Q/ e h!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rules$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrgi>Q3 e g!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU =Q']e f!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsc<Q' e e!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc ;Q']e d!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg :Q']e c!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8i9Q3 e b!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.guest_access$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxwo8Q? e a!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.history_visibility$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds  HeQa$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 724, "stream_ordering": 3773}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y", "$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8"], "prev_events": ["$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8"], "type": "m.room.member", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-751:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-751", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-751:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043968465, "hashes": {"sha256": "Khc2lQYyR7Xvw86hEyrG7MUB5yph+L+tvY1vhhJ0oDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "YFvDeAUKeb0/4mls1CgwxdHskvt01LJzP3nGSHMWn2v3V4vBf4lT/wy16wjlu6x90VjE2l9HUfAh1nWbV7GLDQ"}}, "unsigned": {"age_ts": 1570043968465, "replaces_state": "$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8"}}eQa/$JAnmGsaa8-ESeK1bbDTki9T3psn0RzOQfLo_nAL97w8!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3772}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw"], "type": "m.room.member", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-751", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-751:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043967657, "hashes": {"sha256": "L5bEp4Xc5UwdG5znt5OjRXbmgBWgVJASV99WWqzrQH4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4TWCE8b0YDA2sZU87qYpQ4qieHnSWICPOQE69gCnu/71eBzLw+4OhQ55rjdFmjcfjkkGgo6BLOcaOh4Sku6fCg"}}, "unsigned": {"age_ts": 1570043967657, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-750:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-750:localhost:8800", "content": {"membership": "join", "displayname": "BABSIRRXCUHNIFZHYFMB", "avatar_url": null}, "sender": "@anon-20191002_181700-750:localhost:8800"}]}}{eQa$SeqeC3g-e5OSVRh2qK6oRKt2fz31fCdSLwEqv9hDjxw!LFBhoxJpmBqFrwEzGP:localhost:8800{"token_id": 723, "stream_ordering": 3771}{"auth_events": ["$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJw", "$wFvhzGGCLm2VfE1tp-DW4iT2oXUutlELaFKgEvFvOic", "$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBI"], "prev_events": ["$J5JGCrtI1rxErjqn7xGDeg2BJiOrihgaiaBtEXkDzds"], "type": "m.room.guest_access", "room_id": "!LFBhoxJpmBqFrwEzGP:localhost:8800", "sender": "@anon-20191002_181700-750:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043966590, "hashes": {"sha256": "JgKvNbcCX7SPLdvgHkM89cz1tYX0nMbHUfHKFzuGoD4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ZBczJZKspv2zw7+diwm9xaa4FDPvurz+FAj5UwE8keeDSQDXVOA71GZmxLBUP1Pa70zIT1gMbR6U92uecvopDg"}}, "unsigned": {"age_ts": 1570043966590}} !#R `  | E  h R  {0Y D gBQ? !NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibility :Q/ !NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rules <Q3 !NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels ^Q']!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800 6Q' !NJdkYMskQwIpIWlWkn:localhost:8800m.room.create ^Q']!NNiyzThHMivrxhojfp:localhost:8800m.room.member@anon-20191002_181700-297:localhost:8800:Q/ !NNiyzThHMivrxhojfp:localhost:8800m.room.join_rulesBQ? !NNiyzThHMivrxhojfp:localhost:8800m.room.history_visibility6Q' !NNiyzThHMivrxhojfp:localhost:8800m.room.create<Q3 !NFWKQvZkIwvecnREOC:localhost:8800m.room.power_levels^Q']!NFWKQvZkIwvecnREOC:localhost:8800m.room.member@anon-20191002_181700-220:localhost:8800:Q/ !NFWKQvZkIwvecnREOC:localhost:8800m.room.join_rulesBQ? !NFWKQvZkIwvecnREOC:localhost:8800m.room.history_visibility6Q' !NFWKQvZkIwvecnREOC:localhost:8800m.room.create<Q3 !MqstbCLZIQFiYNHrqR:localhost:8800m.room.power_levelsi^Q']!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-459:localhost:8829l^Q']!MqstbCLZIQFiYNHrqR:localhost:8800m.room.member@anon-20191002_181700-458:localhost:8800h:Q/ !MqstbCLZIQFiYNHrqR:localhost:8800m.room.join_rulesjBQ? !MqstbCLZIQFiYNHrqR:localhost:8800m.room.history_visibilityk6Q' !MqstbCLZIQFiYNHrqR:localhost:8800m.room.createg<Q3 !MlzmtUYSZOiByAZdKx:localhost:8800m.room.power_levelsY^Q']!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@anon-20191002_181700-164:localhost:8800XGQ'/!MlzmtUYSZOiByAZdKx:localhost:8800m.room.member@6:localhost:8800]:Q/ !MlzmtUYSZOiByAZdKx:localhost:8800m.room.join_rulesZBQ? !MlzmtUYSZOiByAZdKx:localhost:8800m.room.history_visibility[<Q3 !MlzmtUYSZOiByAZdKx:localhost:8800m.room.guest_access\6Q' !MlzmtUYSZOiByAZdKx:localhost:8800m.room.createW<Q3 !MXhwoqNXvexeDDSOZT:localhost:8800m.room.power_levels 44Q# !MXhwoqNXvexeDDSOZT:localhost:8800m.room.name 7^Q']!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-606:localhost:8800 3^Q']!MXhwoqNXvexeDDSOZT:localhost:8800m.room.member@anon-20191002_181700-605:localhost:8800 ;:Q/ !MXhwoqNXvexeDDSOZT:localhost:8800m.room.join_rules 5BQ? !MXhwoqNXvexeDDSOZT:localhost:8800m.room.history_visibility 6 t l d ] U|  M %E=5-eeQ$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES4$6xOx-bB-KvzSNb92CiL6St_7cQ8uOXB7KInL1J3H-7k!AMLmLqizBFklpqKibP:localhost:8800,eeQ$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM$mjTmHZPvfc9Df6Mo9dDRSyaIEyVGu1K/S/dMe3W+r5E!RSLvuCuAqKQQrKCxNq:localhost:8800 9eeQ$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYE!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY!paDmNxsOZIKyApbxXs:localhost:8800 ?eeQ$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0$4Xzt17js05PpcM7qQem2BaWyu197EIRhvC6din52YBM!yWhIsLsgNVGcnELrDS:localhost:8800 eeQ$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0$sTYXGLaAjJkn0CfNvg97tdx0ACNsRK53gIGcthWrtaM!QkkdnzvdrjHaFGkzMt:localhost:8800 eeeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$2XjqY2cwEHIY_2qm0aPM2yNFIxYnqG-K-f4fdD257mk!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E$HNcwMK_aKpEFFCCmrWL-X0W-7iSGmA5nq-KF-x0i9Gg!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk$d-qI97dpm1RH_hYrf0QmSiBHG-e0KIuuEVnEI1WG4MI!HWTlaNxUKnDsrtlOxU:localhost:88009eeQ$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP38$dgX25oYOMZlkDEjfpsiXd5Do8HIWKhS_983CXpOWXtM!GGXyLHdVXqhQjPRvac:localhost:8800*eeQ$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0$jZwMWnT46tUPc3gWMwobAUUYDlP_Sw7MSwq7BON4vF0!BkzROHxDAfKIzYpmPV:localhost:8800%eeQ$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV4$jZzyJpZJygzpMGM0OQ72SpkQC_5Q5aDCLlg8-qdfapU!iTQSCiLqRMDtgXtUdC:localhost:8800eeQ$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI$jNYy38h-zYb8gg2ruNVcqe0Jc9_Xx17b86fr2V6SnPA!rZWweGEChkxxtzyfDB:localhost:8800eeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800 }eeQ$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro$a6kNYMo9hxPyykAc12alJPWlfRIC4o5HdDPyiD4QI1Q!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw!SrMQpDMFREKRMELwbL:localhost:8800eeQ$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo!WjlTCJVOFJkanCtkFE:localhost:8800|eeQ$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY$SKe_Jwa_xV7eEwAG2FynhH40rVE9xMckmJijHD_QqoQ!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE$RYN3T2W65HnIVsNchTinVzVAPwfTuOcpSTrz1L3lmd4!MBWnwKRwFznvRpAzxr:localhost:8800eeQ$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE$khM_JvjNO1lwnBH5Zxx5tp_mUbPqVuPYIVgMx_rBPC0!IfYYyzLHSOeyJBxBfn:localhost:8800eeQ$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwk$4E_vBxhNZ96P65rbwIEtcDb9_1487wZAQrlkfloI97A!NhWgOTYzEPRwAxRQvS:localhost:8800eeeQ$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4$oY4EVggJKC6_VJ9lj0dNAG85QGRPFeH4jRm1dZdxC7M!cHtqiAyCHEAoBIbCmL:localhost:8800eeQ$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQo$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiI!ffijTnPMbTrDXHqOXf:localhost:8800ǁeeQ$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY$75gpHKsgwmHjM7M2td7JySE3w0e-tsIIjW1kBzDUiZ4!UyLoIXmzVFwycmBUeh:localhost:8800eeQ$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw$JzHVsi85-Z7nLeBruK7CdNEbC22GASYyeth24D1rhNo!IfYYyzLHSOeyJBxBfn:localhost:8800$eeQ$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQ$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800GeeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800 >xh X H 8 (  EeeQ$lA5IzEfxQgJleyuyR9KzrxlpKzifeJ69EPzPy7kLTAQ$e3sIX6oIVOZeUKB-pnxYH5ITaNcAmgPMi1VSaPO_voA!IZkczIYykpZDvjuUWn:localhost:8800y >eeQ$k_Q_YamJIqLQAZE-A91xMvyKrSE0ZahI4Ie1bAZUzHg$tQYccoNH7uCJdIVjkkQkBBX55TH3wZUcJ2XfnNod45k!JGhlAUflyNxErGGZZu:localhost:8800Q eeQ$jkesdSq5z-1EaiNabrxCat4Bh8BUYJgMW1uuzXn1Bu4$mvPdVc1xPcn38XNDDUzP8oJ-Kvdd2UPU6Ji8_uJHAXo!KXMUzALpMMMKqoQXUS:localhost:8800_ eeQ$jGjBc5i7_7NzrN9DkHsjQyS4dr36eF_uOCTSpbFjVPI$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc!mBQpGaIiadEuKBXfOw:localhost:8800 eeQ$i_bYk7U5st-vrwA49q3wPJlAnIiiSF02-yGi-mG2bQg$XZWolo2hgAWcY5gWnVEPdJxLiBkd7EIfb3rCqaMcWXM!zoTQAhGwmDDUECKtbL:localhost:8800eeQ$htGbGT2CO4UihCh-MW2bNyRKsk99O6Z-H4S38vymR9Q$Sk9OD1D7Ctfv1v_0fi7LzrGgBdI4peX5_7XtBQ-dffw!XgobMgBjNcDRJnRXLD:localhost:8800X eeQ$h-0lEB0csupXzQ9Mzb7OfXE92Wkgu9AOgCcJyAgHE74$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc!mTlCLZQCmfDuQsJxxp:localhost:8800K1eeQ$gYSMkur3nElqmf2IOVhGrhPkrx9YstV5rqZUooAXtCc$TgSgo7mQ1RDAr2wsrdtFtFuY8hqOpW3YoRj8cKR0JAI!mTlCLZQCmfDuQsJxxp:localhost:8800D eeQ$fit7w1llT0m_iHU0LznAL0G5gz0WfY1_7-UMYEumrXg$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU!fsbkkRBZlUcBVVfMME:localhost:8800 teeQ$f1dhxy-kL7lj_y3FkDQpu7AbOlRxIl1djRgG8yGyB7Q$-qIEI95alcZaxYHHYpvTcJYM2nNuJzzc17PUFr1IQeM!EieRtaCFZJJCIOkRPp:localhost:8800 1eeQ$eLXDojk0Botff4K_S_BrGF3v4SgHuiO9-p9hfUZYthI$ycntZ8XE12iiLdcdITUvF0MdZ5IQjYhfBgt01nV3iGM!KeqmSjifajNKxtgqhj:localhost:8800eBeeQ$dnaqT9VK3sr3MasIMNNifDrMiFIcfMVFC3I21lvBoc8$kmcUDOdmXuGO9eT9CqptspJ6N8JpK-zIRfVeF2DhQnw!EABRjdYuYumMhLSwIa:localhost:8800{eeQ$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9E$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4!paDmNxsOZIKyApbxXs:localhost:8800 CeeQ$cnCmFJ3N0BPbcjIrbq7ZcNQWhdeZPhXKgf3u2aFj_N4$7Tx4SbybL63J6ihBAM1x77OV6VPV0RotdAhIsfqWmRo!BkzROHxDAfKIzYpmPV:localhost:8800, 4`xph`XPH@80( xph`XPH@80(  x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    x p h ` X P H @ 8 0 (    xph`XPH@80( xph`XPH@80( xph`%$#"!           ~}|{zyxwvutsrq~p}o|n{mzlykxjwivhugtfserdqcpboan`m_l^k]j\i[hZgYfXeWdVcUbTaS`R_Q^P]O\N[MZLYKXJWIVHUGTFSERDQCPBOAN@M?L>K=J<I;H:G9F8E7D6C5B4A3@2?1>0=/<.;-:,9+8*7)6(5'4&3%2$1#0"/!. -,+*)('&%$#"!                                   "s @ O }  %.Vn,;igyeQ3 $jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels xeQ']$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800aweQ' $dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.createmveQ? $KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibilityeueQ/ $dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rulesgteQ3 $fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels seQ']$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800areQ' $wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800m.room.createmqeQ? $4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibilityepeQ/ $FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rulesgoeQ3 $ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels neQ']$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800 meQ']$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800aleQ' $YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800m.room.creategkeQ3 $Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_accessmjeQ? $fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibilityeieQ/ $wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rulesgheQ3 $qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels geQ']$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800afeQ' $dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create eeQ']$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800 deQ']$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800gceQ3 $Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.guest_accessmbeQ? $5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.history_visibilityeaeQ/ $_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.join_rulesg`eQ3 $_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.power_levels _eQ']$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800a^eQ' $jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.createm]eQ? $ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.history_visibilitye\eQ/ $PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.join_rulesg[eQ3 $PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.power_levels ZeQ']$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.member@anon-20191002_181700-752:localhost:8800aYeQ' $EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800m.room.create XeQ']$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800m.room.member@anon-20191002_181700-751:localhost:8800 E}u m e ] U MEeeQ$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo$iPq-gKUubD94d4EMl0N7S8s2DUPtlOJg21HpDfm1a94!SrMQpDMFREKRMELwbL:localhost:8800eeQ$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_8$d3HxFyIGQDS0igqOVld7eG_-eeRwcPzAH_VDMdwSDsI!wnriPzXkIMmdTNoJKU:localhost:8800eeQ$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya0$h5SJcXSrEoJ2GeH1KXR42BFIC2VbgQtPLgRAH6G-pcM!HZqzpRgqekPOtxstVc:localhost:8800eeQ$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY$cbryohb3lpthoxNBwOtuDS_nGCJg84EBUCIwSDTTy6w!OXpGdKbowFUTChPdmF:localhost:8800 ƁeeQ$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc$IIrQeyIBBRGcfzkAL_NBAzeuDVAqsS8hxrsiZaFrZdA!hegUPDZCEEmBhsNJJR:localhost:8800 ]eeQ$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T8$ghYc-6Q-NN49rpsruJsSM9MwsgMm_MYc-1oMGiCL5GQ!TleKOyAElrpgyyrAQA:localhost:8800eeQ$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRug$WG_mXl1YTZhioQ0LpuiTMa-NgGTKtfPzM0r46L_N1iM!zuCqeooOnfWkYrQdxA:localhost:8800reeQ$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA$IsozxyTx_hFT6Mxwc-AKMsJ3MnSqUI7NdxsuMdguhpI!vBvlJEXUSQKUYmsKcO:localhost:8800 eeQ$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro$0W1lpqJvfYm_2igT6frnHcgYC5vsKdFVzYqUGTHMHvQ!pJUItjYTOUJQFIxyiX:localhost:8800 ]eeQ$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc$_5d3icseTaoPO062UgJHwCogki63VIjzsG3fJI_MLoY!vnFXnkCSfTbsSNKrtg:localhost:8800 eeQ$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk$5ReTGeX6CqsIyFtieKUiJ3ka8XiecO1_CtnyMV43Jk0!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY!RmwbYvIIQyPlHlClty:localhost:8800eeQ$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk$Cfu0IWJuQUDrMMTq9J5--xly0TJFqpdYal1ULyUv-LQ!EhFUhsgQbBWmrnGmaz:localhost:8800 eeQ$vP6V49_NauzmrZXRjvdvhfJI4taWXDKfa22wEXGXCeI$icSJRRKJg9fJdHvM95cQfTQQXl0xLzE8nvjBY9FtTkI!SrMQpDMFREKRMELwbL:localhost:8800 eeQ$vLjbLHNS6nQqSiGFzsLExljjKi5UafE8oWRA6uc1W7Q$NXia7jMtf6n0k5_zx4yVD_DsZ6Ak0HEBZPnUt33yi_0!kkgEEVUJynguTqAoWD:localhost:8800y   .teQau$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3777}{"auth_events": ["$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU", "$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc", "$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "prev_events": ["$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU"], "type": "m.room.join_rules", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043975032, "hashes": {"sha256": "yHtGT4Gw1KUm8LOmR8EbW+V0/7Lggrx+NXOnGKRR5S8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "MZPidSg8GDDMq4prerNp2I9SmEv2yCWg8dqeW7PpmcyCeHxGFrmkq7lE1c+Yx/Q3Zdd+pkp9//qc1NnkeR7PCA"}}, "unsigned": {"age_ts": 1570043975032}}keQac$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3776}{"auth_events": ["$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc", "$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "prev_events": ["$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "type": "m.room.power_levels", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"users": {"@anon-20191002_181700-752:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043973168, "hashes": {"sha256": "7z3pSDRB34AwAqLex2vzCdxjaQ6WzGXeocWnltIORfU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "JI6AMPsJWZ2O6l8Cs/kpr+sf0GwxVMzZNOSV1LZ+NukxHKuPbCYHkZPtYh61VtdvLMpzk04WFHKKKjbckGUjCg"}}, "unsigned": {"age_ts": 1570043973168}}reQaq$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3775}{"auth_events": ["$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc"], "prev_events": ["$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc"], "type": "m.room.member", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"membership": "join", "displayname": "JYNGOISMLXVDWPDRVNCS", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-752:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043971941, "hashes": {"sha256": "cXlLWdHBZKphbi85vgJM8z2ye7MIOEuAsnighhxt5h8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ygwdBRDKzMR83D97BefaVfY5vXRysGOkdxdMPZzyDWw+Oobf49Lja3PRh2zxosF/aYEsYq8HDLKQvriehf2nBQ"}}, "unsigned": {"age_ts": 1570043971941}}ieQa_$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3774}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-752:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043971006, "hashes": {"sha256": "fSwoxnwbZP5+uqWUpBkrlqbn2gzn7wAGK11AvRIaLFQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t4orVM2xhxa/DIvBAHic/DJxAeKTYqEP5xI0K9XQLBO5er4QjBD3Y3Q64n68W9mIz4DTXGlkcOfW3jviNBZuAw"}}, "unsigned": {"age_ts": 1570043971006}} 4N;m wF Q \ + g 6  r A  | K V%a0l; wFQ \+g-e/4]@anon-20191002_181700-832:localhost:8800$.5] @astest-1-20191002_181700:localhost:8800%1.3] @astest-0-20191002_181700:localhost:88002?@as-user-1:localhost:880071o@astest-01create-1-20191002_181700:localhost:880080q@_astest-01create-0-20191002_181700:localhost:88007/o@astest-01create-0-20191002_181700:localhost:8800..] @anon-20191002_181700-831:localhost:8800.-]@anon-20191002_181700-830:localhost:8800.,]@anon-20191002_181700-829:localhost:8800.+]@anon-20191002_181700-828:localhost:8800.*]@anon-20191002_181700-827:localhost:8800.)]@anon-20191002_181700-826:localhost:8800.(]@anon-20191002_181700-825:localhost:8800.']@anon-20191002_181700-823:localhost:8800.&]@anon-20191002_181700-821:localhost:8800.%]@anon-20191002_181700-822:localhost:8800.$]@anon-20191002_181700-819:localhost:8800.#]@anon-20191002_181700-820:localhost:8800."]@anon-20191002_181700-818:localhost:8800.!]@anon-20191002_181700-815:localhost:8800. ]@anon-20191002_181700-816:localhost:8800.]@anon-20191002_181700-813:localhost:8800.]@anon-20191002_181700-814:localhost:8800.]@anon-20191002_181700-812:localhost:8800.]@anon-20191002_181700-811:localhost:8800.]@anon-20191002_181700-809:localhost:8800.]@anon-20191002_181700-810:localhost:8800.]@anon-20191002_181700-807:localhost:8800.]@anon-20191002_181700-808:localhost:8800.]@anon-20191002_181700-805:localhost:8800.]@anon-20191002_181700-806:localhost:8800.]@anon-20191002_181700-803:localhost:8800.]@anon-20191002_181700-804:localhost:8800.]@anon-20191002_181700-801:localhost:8800.]@anon-20191002_181700-802:localhost:8800.]@anon-20191002_181700-799:localhost:8800.]@anon-20191002_181700-800:localhost:8800.] @anon-20191002_181700-797:localhost:8800.]@anon-20191002_181700-798:localhost:8800 . ] @anon-20191002_181700-795:localhost:8800 . ]@anon-20191002_181700-796:localhost:8800. ] @anon-20191002_181700-793:localhost:8800. ]@anon-20191002_181700-794:localhost:8800/ ]@anon-20191002_181700-791:localhost:8800.]@anon-20191002_181700-792:localhost:8800.] @anon-20191002_181700-789:localhost:8800.]@anon-20191002_181700-790:localhost:8800.] @anon-20191002_181700-787:localhost:8800.]@anon-20191002_181700-788:localhost:8800.]@anon-20191002_181700-786:localhost:8800.]@anon-20191002_181700-785:localhost:8800.]@anon-20191002_181700-784:localhost:8800.]@anon-20191002_181700-783:localhost:8800.]@anon-20191002_181700-782:localhost:8800.~]@anon-20191002_181700-781:localhost:8800.}]@anon-20191002_181700-779:localhost:8800.|]@anon-20191002_181700-777:localhost:8800.{]@anon-20191002_181700-775:localhost:8800.z]@anon-20191002_181700-773:localhost:8800.y]@anon-20191002_181700-774:localhost:8800.x]@anon-20191002_181700-771:localhost:8800.w]@anon-20191002_181700-772:localhost:8800.v]@anon-20191002_181700-769:localhost:8800.u]@anon-20191002_181700-770:localhost:8800.t] @anon-20191002_181700-768:localhost:8800.s] @anon-20191002_181700-767:localhost:8800.r]@anon-20191002_181700-766:localhost:8800.q]@anon-20191002_181700-764:localhost:8800.p] @anon-20191002_181700-763:localhost:8800.o] @anon-20191002_181700-762:localhost:8800.n]@anon-20191002_181700-761:localhost:8800.m]@anon-20191002_181700-759:localhost:8800.l]@anon-20191002_181700-760:localhost:8800/h]@anon-20191002_181700-754:localhost:8800.j] @anon-20191002_181700-757:localhost:8800.i]@anon-20191002_181700-756:localhost:8800.k] @anon-20191002_181700-758:localhost:8800 g * T~=ggW]!c@anon-20191002_181700-764:localhost:8800CSKXMMYZWJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQogV]!c@anon-20191002_181700-763:localhost:8800JLJXCXZRRGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgogU]!c@anon-20191002_181700-762:localhost:8800SUIBWCIGQVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1QogT]!c@anon-20191002_181700-761:localhost:8800VFSPRJLZEGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQogS]!c@anon-20191002_181700-759:localhost:8800KXAFXIMWWPMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwogR]!c@anon-20191002_181700-760:localhost:8800AAUYDDOUHUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2AogQ]!c@anon-20191002_181700-758:localhost:8800GUAXNWFTDGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQogP]!c@anon-20191002_181700-757:localhost:8800QRQFPUSZXEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAogO]!c@anon-20191002_181700-756:localhost:8800VNKYAMEGUQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwogN]!c@anon-20191002_181700-754:localhost:8800ZUIRTQEUGGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDk4MzBKenFqOi41SDViLGYKMDAyZnNpZ25hdHVyZSC80asmTwwpiKzRHZlTdiQocjmElLdm151jIXy3SnnNxAogM]!c@anon-20191002_181700-755:localhost:8800AJENIKARXJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IERqeEtMTmM1SF8yZCZsM2IKMDAyZnNpZ25hdHVyZSDM3ZyC6JFRQwrN5dUmGr9fC7_n2ndf4-W902JhFV7aNQo -RM H C > 9 4/*|%w rmhc T`Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50T_Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9sT^Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwT]Qe!VNdqhtoDkyMoQdMTtM:localhost:8800$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIT\Qe!ulbQzxdPXzuvNoqqgU:localhost:8800$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgT[Qe!ulbQzxdPXzuvNoqqgU:localhost:8800$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQTZQe!ulbQzxdPXzuvNoqqgU:localhost:8800$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMTYQe!ulbQzxdPXzuvNoqqgU:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BATXQe!ulbQzxdPXzuvNoqqgU:localhost:8800$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4TWQe!pTvdDtkgovsIdAdxCm:localhost:8800$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4TVQe!pTvdDtkgovsIdAdxCm:localhost:8800$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDATUQe!pTvdDtkgovsIdAdxCm:localhost:8800$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMTTQe!pTvdDtkgovsIdAdxCm:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWETSQe!pTvdDtkgovsIdAdxCm:localhost:8800$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zsTRQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsITQQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcTPQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598TOQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cTNQe!vxEMWYTUdzvLyVZNzJ:localhost:8800$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUTMQe!CAGaRyRvrohDRBsrWH:localhost:8800$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoATLQe!CAGaRyRvrohDRBsrWH:localhost:8800$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YTKQe!CAGaRyRvrohDRBsrWH:localhost:8800$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694TJQe!CAGaRyRvrohDRBsrWH:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkTIQe!CAGaRyRvrohDRBsrWH:localhost:8800$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYTHQe!hNCwypIzdDZDVmCEfd:localhost:8800$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkTGQe!hNCwypIzdDZDVmCEfd:localhost:8800$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQITFQe!hNCwypIzdDZDVmCEfd:localhost:8800$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0TEQe!hNCwypIzdDZDVmCEfd:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08TDQe!eZjhYVNpwdogVDKHCk:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQTCQe!hNCwypIzdDZDVmCEfd:localhost:8800$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_ATBQe!eZjhYVNpwdogVDKHCk:localhost:8800$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8SnsTAQe!eZjhYVNpwdogVDKHCk:localhost:8800$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgT@Qe!eZjhYVNpwdogVDKHCk:localhost:8800$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMT?Qe!eZjhYVNpwdogVDKHCk:localhost:8800$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIT>Qe!eZjhYVNpwdogVDKHCk:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0T=Qe!eZjhYVNpwdogVDKHCk:localhost:8800$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdoT<Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8T;Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40T:Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigT9Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8T8Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYsT7Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNsT6Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawT5Qe!sBcwyPoXKgnSGVTjNR:localhost:8800$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIoT4Qe!WgXzOXLTeqaGfiDFhL:localhost:8800$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4  w keQac$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3781}{"auth_events": ["$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "type": "m.room.power_levels", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"users": {"@anon-20191002_181700-754:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043978658, "hashes": {"sha256": "1VHEWDLHDOfoWDasvG1iQiXPkfg4YDltL36jBzl95aM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "nWnLvaD5tfpuFOae6JhY8o50K5/WChikduHc5o2m4T6Lty55hOItEuS84rYRkfimr0mEDReEKg0udwwEtJTHAg"}}, "unsigned": {"age_ts": 1570043978658}}reQaq$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3780}{"auth_events": ["$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo"], "prev_events": ["$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo"], "type": "m.room.member", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-754:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043977741, "hashes": {"sha256": "qc+pYVfX6130nby15LQ0ASsZzhysdggUaR23OUMVfzU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0x85J1HXlcn6FWGQyhMIL1XGE4kZCeSBp8gxvHasuur0EVy3A91GuosldQTJJDRDVRtTJjhmnlEBZp+lhkS1BQ"}}, "unsigned": {"age_ts": 1570043977741}}ieQa_$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3779}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-754:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043976327, "hashes": {"sha256": "g4a4qQHvJayQ7sm54zH4nETmBkGHNzrCpYyRUH5xSdA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VmJaIu4UskCGKgFPYXrZFgQKblqhaq609FXQQdc/b2+E8Pv8c/CCgaDMb1J9UPa9PITYDc0wd5ZNrE9A580mBQ"}}, "unsigned": {"age_ts": 1570043976327}}eQa$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800{"token_id": 725, "stream_ordering": 3778}{"auth_events": ["$PiaGe3UVQKHaBGX3Ow5hUcT8KKG_4aoPlLlg_h6ggcU", "$EFWMUkz0kyEBm7GWjfX-i7R0NHpAXomneP7Pz0bLLMc", "$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxs"], "prev_events": ["$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg"], "type": "m.room.history_visibility", "room_id": "!WgXzOXLTeqaGfiDFhL:localhost:8800", "sender": "@anon-20191002_181700-752:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043976001, "hashes": {"sha256": "yKYbrV7UWleKISwFrmdNqhQOLnuqPCB6iso/kfM+/Lw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tAUi3L1PRPBcIbEZtjHy9dVZSZAJgM5vDDZlryBUxghCz4zEGEWgKCpu6CE5VV6ieJu0zP70Q8dNPVHsoM67Aw"}}, "unsigned": {"age_ts": 1570043976001}} ^Kg2d1 a . a,/b.^+ `b - ad0 . b / [' c .[)]) l C 2]@anon-20191002_181700-798:localhost:8800aX2]@anon-20191002_181700-812:localhost:8800ah2]@anon-20191002_181700-811:localhost:8800ag2]@anon-20191002_181700-814:localhost:8800ai2]@anon-20191002_181700-810:localhost:8800ae2]@anon-20191002_181700-807:localhost:8800ad2]@anon-20191002_181700-808:localhost:8800ac2]@anon-20191002_181700-805:localhost:8800ab2]@anon-20191002_181700-797:localhost:8800aY2]@anon-20191002_181700-809:localhost:8800af^2]@anon-20191002_181700-803:localhost:8800a`2]@anon-20191002_181700-804:localhost:8800a_2]@anon-20191002_181700-801:localhost:8800a^2]@anon-20191002_181700-802:localhost:8800a]2]@anon-20191002_181700-799:localhost:8800a\2]@anon-20191002_181700-800:localhost:8800a[4]@anon-20191002_181700-797:localhost:8800mZ3[@anon-20191002_181700-81:localhost:8800m1[@anon-20191002_181700-81:localhost:8800a1[@anon-20191002_181700-80:localhost:8800a/Y@anon-20191002_181700-7:localhost:8800a$3[@anon-20191002_181700-79:localhost:8800m1[@anon-20191002_181700-79:localhost:8800a2]@anon-20191002_181700-806:localhost:8800aa2]@anon-20191002_181700-784:localhost:8800aF1[@anon-20191002_181700-89:localhost:8800a1[@anon-20191002_181700-88:localhost:8800a3[@anon-20191002_181700-87:localhost:8800m1[@anon-20191002_181700-87:localhost:8800a3[@anon-20191002_181700-86:localhost:8800m1[@anon-20191002_181700-86:localhost:8800a3[@anon-20191002_181700-85:localhost:8800m1[@anon-20191002_181700-85:localhost:8800a3[@anon-20191002_181700-84:localhost:8800m1[@anon-20191002_181700-84:localhost:8800a3[@anon-20191002_181700-83:localhost:8800m1[@anon-20191002_181700-83:localhost:8800a3[@anon-20191002_181700-82:localhost:8800m1[@anon-20191002_181700-82:localhost:8800a94]@anon-20191002_181700-832:localhost:8800m2]@anon-20191002_181700-832:localhost:8800a4]@anon-20191002_181700-831:localhost:8800mz2]@anon-20191002_181700-831:localhost:8800ay2]@anon-20191002_181700-830:localhost:8800ax2]@anon-20191002_181700-829:localhost:8800aw2]@anon-20191002_181700-828:localhost:8800av2]@anon-20191002_181700-827:localhost:8800au2]@anon-20191002_181700-826:localhost:8800at2]@anon-20191002_181700-825:localhost:8800as2]@anon-20191002_181700-823:localhost:8800ar2]@anon-20191002_181700-821:localhost:8800aq2]@anon-20191002_181700-822:localhost:8800ap2]@anon-20191002_181700-819:localhost:8800ao2]@anon-20191002_181700-820:localhost:8800an2]@anon-20191002_181700-818:localhost:8800am2]@anon-20191002_181700-815:localhost:8800al2]@anon-20191002_181700-816:localhost:8800ak2]@anon-20191002_181700-813:localhost:8800aj2]@anon-20191002_181700-796:localhost:8800aU4]@anon-20191002_181700-795:localhost:8800mW2]@anon-20191002_181700-795:localhost:8800aV2]@anon-20191002_181700-794:localhost:8800aR4]@anon-20191002_181700-793:localhost:8800mT2]@anon-20191002_181700-793:localhost:8800aS2]@anon-20191002_181700-792:localhost:8800aO4]@anon-20191002_181700-791:localhost:8800mQ2]@anon-20191002_181700-791:localhost:8800aP2]@anon-20191002_181700-790:localhost:8800aL4]@anon-20191002_181700-789:localhost:8800mN2]@anon-20191002_181700-789:localhost:8800aM2]@anon-20191002_181700-788:localhost:8800aI4]@anon-20191002_181700-787:localhost:8800mK2]@anon-20191002_181700-787:localhost:8800aJ2]@anon-20191002_181700-786:localhost:8800aH2]@anon-20191002_181700-785:localhost:8800aG  { eQa$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3784}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8"], "type": "m.room.guest_access", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043982125, "hashes": {"sha256": "qsd2FaH6J6EpwQyl4qUCO6nHm2ZSB7cf7vEnLzyomd4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VlbP1BqvW2VCQqgwpaX0j2StjwE1Zghgckk8ZAa+c/GpXVARiL6AJPUFSGIQMKo1jME/sC9FCuRE7cjQKD28CA"}}, "unsigned": {"age_ts": 1570043982125}}eQa$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3783}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs"], "type": "m.room.history_visibility", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043981276, "hashes": {"sha256": "0ZRKYr20rGOQmciI4D8SOJomOc0/eD4tVa2Bm++NQnY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "OZCKOZsLCbFtJ9iZ44sn2C2AvWWwfmb4NJo80qAe1cXe3B94orn1oPgGk21g63ioD6N+U99t6nit1rXLpEUKBA"}}, "unsigned": {"age_ts": 1570043981276}}teQau$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3782}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs"], "type": "m.room.join_rules", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043979400, "hashes": {"sha256": "QElTfDXN3bh41uYfQ3v9tU7uxTxgTyLF4EgHVDguN2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hHKuKeURLSNTJdgezwEXx/NdNe+YaVK7ZtP90sA4v+OClI2bGemz1yEIucNfeILGPd9lr1MCCtbUYiNDrcMQAA"}}, "unsigned": {"age_ts": 1570043979400}} a} { y w u sqomkigeca~jeeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~ieeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~heeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~geeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~feeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~eeeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~deeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~ceeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~beeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~aeeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~`eeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800~_eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~^eeQ$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~]eeQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800~\eeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800~[eeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800~ZeeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~YeeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~XeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~WeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs!sBcwyPoXKgnSGVTjNR:localhost:8800~VeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~UeeQ$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~TeeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~SeeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~ReeQ$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~QeeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~PeeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~OeeQ$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800~NeeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw!sBcwyPoXKgnSGVTjNR:localhost:8800~MeeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo!sBcwyPoXKgnSGVTjNR:localhost:8800~LeeQ$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs!sBcwyPoXKgnSGVTjNR:localhost:8800 ,NC 8 - { " p  e ZOD9.|#qf VCeL$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOksha256۪- C+Zٓi(!uد"VBeL$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcsha256K?UeAW+V5Bz~Xi%.BYVAeL$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGosha256!f"{(ݚғ EN.gljV@eL$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50sha256K>CbLBoZe&UG3ͿʦV?eL$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9ssha256,|íSaX0y12C^U<3V>eL$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwsha256_z)NȈ\F0x8%MV=eL$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIsha256( [H,V®s)6V<eL$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgsha256ILωt{. HYd=ɘV;eL$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQsha256Tg~;}X,O|i!6l7CV:eL$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMsha256Y{8E#{nљsQy\cV9eL$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAsha2566(xv ( _`+ĜV8eL$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4sha256!%ε(*רcĠfGjV7eL$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4sha256it|еA8L NTNV6eL$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAsha256dc$(yel$yVnm3"Ų0V5eL$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMsha256jN',XeM~ WV4eL$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEsha256Ix ݼ[ ފbcd~I*KfaV3eL$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zssha256G,PҮsKnY8ћ ~U W;V2eL$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIsha256s~%~G =k. ,S>:V1eL$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcsha2568~`]?@*y3=ZTV0eL$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598sha256][\=5ēuwyFO #"b/1V/eL$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1csha256̋GX­mF%joܪ{/WV.eL$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUsha256w [m/6`gmED d6\V-eL$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAsha256(s2ԡ֊9[f};i Ǡ@FvV,eL$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Ysha256upvZɚ=jI:hTksFV+eL$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694sha256d+S˓RJ]yD vMj\W0l&V%eL$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08sha2568Av9rS}|)l'NOV$eL$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQsha256=y;r4 6fM0tV#eL$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Asha256bo$)%L̹ ȿ/^+V"eL$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snssha256.f */uaq0 xTtyԼJ{V!eL$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgsha256} !"6AC4vѣ!V eL$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMsha256u_K4Qp8\0o{<ƃVeL$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIsha256#3h~3bVm^*GBz)"VeL$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0sha256' ] 4wb5hƋ}LFVeL$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdosha256tIگ(]/i_&}`7k3VeL$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8sha2566+&R4ÍuVeL$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40sha256}@ÇѿЩd0w=,9 VeL$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigsha256քE)n-Zkbk7 ܰ.(VeL$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8sha256O11zz=ޘS WoqG wٿVeL$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYssha256WɎ;ӛlߚnX2lzli HP ^  n  l&0:8H&^e3Q ]$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598m.room.power_levels!vxEMWYTUdzvLyVZNzJ:localhost:8800mN8mOA@anon-20191002_181700-762:localhost:8800 ]e'Q ]$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cm.room.member!vxEMWYTUdzvLyVZNzJ:localhost:8800mJsmJ@anon-20191002_181700-762:localhost:8800\ e'Q  ]$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUm.room.create!vxEMWYTUdzvLyVZNzJ:localhost:8800mGmG@anon-20191002_181700-762:localhost:8800,[e?Q ]$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAm.room.history_visibility!CAGaRyRvrohDRBsrWH:localhost:8800m7m9@anon-20191002_181700-758:localhost:8800$Ze/Q ]$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Ym.room.join_rules!CAGaRyRvrohDRBsrWH:localhost:8800m5?m5@anon-20191002_181700-758:localhost:8800&Ye3Q ]$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694m.room.power_levels!CAGaRyRvrohDRBsrWH:localhost:8800m2~m3@anon-20191002_181700-758:localhost:8800 Xe'Q ]$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkm.room.member!CAGaRyRvrohDRBsrWH:localhost:8800m0m0@anon-20191002_181700-758:localhost:8800W e'Q  ]$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYm.room.create!CAGaRyRvrohDRBsrWH:localhost:8800m-m-p@anon-20191002_181700-758:localhost:8800,Ve?Q ]$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkm.room.history_visibility!hNCwypIzdDZDVmCEfd:localhost:8800m$m&/@anon-20191002_181700-757:localhost:8800$Ue/Q ]$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIm.room.join_rules!hNCwypIzdDZDVmCEfd:localhost:8800m!m"@anon-20191002_181700-757:localhost:8800&Te3Q ]$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0m.room.power_levels!hNCwypIzdDZDVmCEfd:localhost:8800m]m@anon-20191002_181700-757:localhost:8800 Se'Q ]$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08m.room.member!hNCwypIzdDZDVmCEfd:localhost:8800mmi@anon-20191002_181700-757:localhost:8800 Re'Q ]$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQm.room.member!eZjhYVNpwdogVDKHCk:localhost:8800memz@anon-20191002_181700-754:localhost:8800Q e'Q  ]$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_Am.room.create!hNCwypIzdDZDVmCEfd:localhost:8800mm@anon-20191002_181700-757:localhost:8800&Pe3Q ]$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Snsm.room.guest_access!eZjhYVNpwdogVDKHCk:localhost:8800mm1@anon-20191002_181700-754:localhost:8800,Oe?Q ]$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRgm.room.history_visibility!eZjhYVNpwdogVDKHCk:localhost:8800mm8@anon-20191002_181700-754:localhost:8800$Ne/Q ]$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoMm.room.join_rules!eZjhYVNpwdogVDKHCk:localhost:8800m m @anon-20191002_181700-754:localhost:8800&Me3Q ]$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSIm.room.power_levels!eZjhYVNpwdogVDKHCk:localhost:8800m1m @anon-20191002_181700-754:localhost:8800 Le'Q ]$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0m.room.member!eZjhYVNpwdogVDKHCk:localhost:8800mm@anon-20191002_181700-754:localhost:8800K e'Q  ]$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdom.room.create!eZjhYVNpwdogVDKHCk:localhost:8800m+mF@anon-20191002_181700-754:localhost:8800 Je'Q ]$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8m.room.member!sBcwyPoXKgnSGVTjNR:localhost:8800m5m@anon-20191002_181700-755:localhost:8800 Ie'Q ]$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40m.room.member!sBcwyPoXKgnSGVTjNR:localhost:8800mWm@anon-20191002_181700-754:localhost:8800&He3Q ]$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLigm.room.guest_access!sBcwyPoXKgnSGVTjNR:localhost:8800m-m@anon-20191002_181700-754:localhost:8800,Ge?Q ]$5JTkT7cxzuTVGDF6ej3C3phTDFfOyW9xR4Hgpw132b8m.room.history_visibility!sBcwyPoXKgnSGVTjNR:localhost:8800mm@anon-20191002_181700-754:localhost:8800 2 k2i#eQa_$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3787}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-754:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043984939, "hashes": {"sha256": "tzU3SDuZIpjBvcoxT1tYe3xkIZGxjDqk79FRtZxGzYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0mtCziHOyTnl/QaFVseYC1IihJLNRw0z0PS2YCSag9+bm/0NEdsH4tE7N0fWSgtop8PqnbWIJrxQlaurcsHbCQ"}}, "unsigned": {"age_ts": 1570043984939}}H"eQa$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 727, "stream_ordering": 3786}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs", "$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40"], "prev_events": ["$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40"], "type": "m.room.member", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-755:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-755", "avatar_url": null}, "depth": 8, "prev_state": [], "state_key": "@anon-20191002_181700-755:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043983925, "hashes": {"sha256": "fCk1o5O5Iz+1UCNe/OQI+uMiEhJ6orjuztEDPC8aVUY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rttuxhK/qEueQsKinxcKv5SWiU/HjS1wQQfr9itCBats1vPUzcJQaTGdSyUmTP0pOERGkNGg8UdlLNJ3t8cNBg"}}, "unsigned": {"age_ts": 1570043983925, "replaces_state": "$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40"}}!eQa/$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD40!sBcwyPoXKgnSGVTjNR:localhost:8800{"token_id": 728, "stream_ordering": 3785}{"auth_events": ["$_pNhN_VjvY9KQczoDKvh6iGUxWYyBvPOHOBisgHrrNs", "$jalVdwjI1xghaCQa1_g61H7D5N86Ei2ack_QhnrgKIo", "$_cZXCK3JjpQ7x9OboGzE35puHqjn1lgyp7Vs-3psaYs", "$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiaw"], "prev_events": ["$Gu621oRFoQCOKW4to73UWggAwWtiqms31iClG9ywLig"], "type": "m.room.member", "room_id": "!sBcwyPoXKgnSGVTjNR:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-755", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-755:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043983191, "hashes": {"sha256": "7CUasjwVqPJYjhArJPwEjxEmX4wBnMl/4Kkf298d3NI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "0EXx5ebEiYNEivmFA9/zu1Dj+0ol8CX99yIQrK7G4SUcMQjkCGXHQL64NA9I/gMLUG90qqhAJCPm6HwJwXVJDg"}}, "unsigned": {"age_ts": 1570043983191, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-754:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "sender": "@anon-20191002_181700-754:localhost:8800"}]}} "o z 8 j F t  =in27_j(aeQ' $KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.createmeQ? $Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibilityeeQ/ $oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rulesgeQ3 $pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels eQ']$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800joinaeQ' $8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.createmeQ? $Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibilityeeQ/ $ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rulesgeQ3 $ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels eQ']$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800joinaeQ' $RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800m.room.createmeQ? $2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibilityeeQ/ $Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rulesgeQ3 $jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels eQ']$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800joina eQ' $dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.createm eQ? $KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibilitye eQ/ $dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rulesg eQ3 $fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels eQ']$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800joinaeQ' $wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800m.room.createmeQ? $4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibilityeeQ/ $FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rulesgeQ3 $ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels eQ']$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800joineQ']$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800inviteaeQ' $YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800m.room.creategeQ3 $Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800m.room.guest_accessmeQ? $fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800m.room.history_visibilitye~eQ/ $wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800m.room.join_rulesg}eQ3 $qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800m.room.power_levels |eQ']$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-754:localhost:8800joina{eQ' $dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo!eZjhYVNpwdogVDKHCk:localhost:8800m.room.create zeQ']$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800join 8&p> v D  | K  & Q X W % ] +c1i7o= wE^,^,1e1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g01e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4L1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc61e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y+0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcO1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYN1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoD1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00 1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUS1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Yj1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAm1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g B1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E /1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y)1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI ,1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkv1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4E1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQof1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQr1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc?1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI,1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA w 8&p> v D  | K  & Q X W % ] +c1i7o= wE^,^,1e1e$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns1e$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w1e$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g01e$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDI 1e$MnpLWWQYOSmWDLA3lUlx2-SGBoW4DGxR3BSZDjnhavk 1e$Mni-WbwyH7x-gLWCldIyeQ_f689OZmUpu8YX-MuBnZA 1e$MllQqfdMFSPSEZgkZMNNkWFHxFNNWaJzBIhMU2g6nT4L1e$MkHhrVKRkKbVRM1OcwKqZ2Kn-OCsVPyV-yTmHvzIfps1e$MipR4ZXge4QlErBC2BMhqalHIXb3IwcOTqgZdexw28s0e$MiMWQ3dN7VAy7GwdGr9qkR4LTcYoqBZqG3a44ZncGNc61e$MhwPdQbbzjBqrDOrveIICUGTf-WZhI0W5en0F_Gz59Y+0e$MhrKLIifWSiKsET8Yoy9GxUwHsiCBQeKdjIn9VwYnUcO1e$MgBXZ-X5EXAF6W8kbRiJ0dPv0Jsx2jGCAPJaYdCilcYN1e$Mf6fwqBopzm-3940RgQzhiiJIBFEeZEgHm-MAab07WoD1e$Maof92pQlKsVmOGeyGjXdEns2hT/K3z1iTwqEbbQAq8 1e$M_eOyJiY1wZCaZ_6nS_OvB4Vy-VQmn9hbhfD6Zlrr00 1e$MWJmygWyzScacQOHTjUlDVNXODVoyq0moZsD4BSt6hs1e$MVfIF77AbZkheK9yXe-jJRvXKL27l258IZS8ghvc-jUS1e$MUk957OqST9W39mxhLBDRlJ3MnkBenh_QEHq59cVHw81e$MTaBl-kq-vpK0qsT4mujqccWo5RUOruWy4apgaTO1qk1e$MRVrlWJDeyKgnashV6Vv5-C5Ot3nGLMCzk90oqtOA5Yj1e$MQ7TLENx9Hu4ULpPotY1MW5unrMLlWi0O17bwDMZV8U1e$MPIoCOTPLKkujVPOIu1SzEoVgXhWcgEEQ4JWJ0DcGcE 1e$MP75fXK0osm06aYgwhYzrG5PqjScXe32k9bf7qLkmFAm1e$MO2rRAiFY5zv6fvyzApi3SDM2RB9T3lRWYJGr291Wkk1e$MMsuP1Yye7yv4JQcV7I5Jyrv_K0PAXOyETJD1g2ZP381e$MMpYIc0Qq3VHtyZv5Rs5cF0PdysitH6YtySLvnU7C5g B1e$MMYl_ImHj_EgasPcyBK1ofdVE8_T-Jgo4lCm2nwFN_0i1e$MLXNMhAE7HvFi_bfETcnvrAMoHfBNcHXsWblwF8ebV0 1e$MEoRNJsJEJcBN4_zB5GQ2LgZbg2n7HluZdP4GpNCcV41e$MC84OcDihfgm7aM8cRk4cXMVY4H4kDi2Kz_WUIiFnqI1e$M9N5dxbC6h_GWs3Z3ihc-kYy3qttMSwyfGxTs96pXro1e$M9DDSjVqAj_QqHs5W8lCM6cd9iL0aFdwqCGL5XdPr5E /1e$M6Or248FElbTCimk1i_2ObjxiUB_zxF6VE_wKxzKF5Y)1e$M5kqo0+5GdFyMeN2i6oPOkzRI4RC98trIO58CI9Z9KM 1e$M4_IdRsXgsqs2R2Ihx9VhVQ1y9jmemH1ux2CmUJMES41e$M3r1RmTWfQFxZFXJZHNvIMBn_o2q44t5Z_iHQuV1TKA1e$M22A-yQnqmxycXSQEzqAZEe-Bdp6cYGs37nFcP4lXac1e$LykKs99X4_TDxF79tA5wDufGlGgidORh-8DFUoGwJdE 1e$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwI ,1e$LvnOcCrOVHsQ4ymmGrCmUbTpBU1lcPZouO0g8xMVoBY1e$Ls5igfg8S5VjGHg-y5oDqVcMECBcQn2JpIVYrQngWlE1e$LrrngcaitBpIKIFvzlC3VjaqEwBqyhWCdEA1cBM3OWE0e$LrQLGkhtdR2ySFvec6rZXA04Nt0g6FKaR6niCfsrzwkv1e$LqtL20Sp9BreRyaYQihx00jdtf5cjILjdAw1TSQfsj4E1e$Lo_eqsX9NjW8if8_gk0qiMn1N1qYBmRr1qrGfv1KsQof1e$LkA-7gIIK-AVen6vxkoXrWZjYZl-ASvP8DGc5qnAnnY1e$LjLZ3C_6Tshl1c6t0qQqqo3kzkuFXtGwS9gKM85bPSw1e$Lj2HtUR13kGCaM5kKHI2fjX1ogno0mn_muHxCBFSPUQr1e$Lg7Tlv3DHKQqUoAY9BaxFfhFRt8-o6v3UgjPygeszEc?1e$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc1e$Leu1_umEJk4AMyIikXylIZAFzq8m672dLp85N72h2cM 1e$LeZ-H2i9vsrxNRA5K7IQAYyCAAlwtVdkE9KFM6IPpC4 1e$LdnbMlhzCLwZoTfIVqL1urX7U43zaL6o0a5tkAub0ps1e$LdldPI-x0viT85uGXEmxtvWhJ-7FyO5M6memazUjjdI,1e$MliZUVXkSitd_sZc3WGOI-tS5k1iNx-X90XIZe2QLVA u i 4h5  gi 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908Ao1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHY5V2M2YnM6Nm5NJmg4SzoKMDAyZnNpZ25hdHVyZSD2H-fLXFMXpaFQcFyMxL9JFAeONbItYVwmt1eGsB3krwo  'eQa$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3791}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM"], "type": "m.room.history_visibility", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043989926, "hashes": {"sha256": "fDGsjNsZaSJ7qAIUAWfaplpHO5DKlHmsgSE2LpjQT5w"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ws9iORi9+/W32N49fOiUOTCNWbEf1o7KiPHnwrJyXogUIktGD9gtw1b1bm1IhZ6OTuKjjyhhuYNcMD0+OOl6Dg"}}, "unsigned": {"age_ts": 1570043989926}}t&eQau$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3790}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI"], "type": "m.room.join_rules", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"join_rule": "invite"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043988926, "hashes": {"sha256": "T/BPvaDYXoPWn0JwkUpkRCB2fO6J0AXiaISg9KA7OTU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5hWIjSvpBqfcnGEHML+M68eCTUEHB4Hy8Y+WoMpbRDe89mMFqyjOsqHKzdUW3Vkjio6nO6o7IQO1gZfMNN84BQ"}}, "unsigned": {"age_ts": 1570043988926}}k%eQac$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3789}{"auth_events": ["$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "type": "m.room.power_levels", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"users": {"@anon-20191002_181700-754:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043987761, "hashes": {"sha256": "seYThqkxg9QNawDDcUKfrr/mfSQ8E3F2jlzU0ves9Ts"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "BLvOaZibf8zyEqkosKIvLkVzjGN+Otv+PC4fK4UfmH6E+ekaCBa0k6GCkIbQOhOXHL6wdGRm9FE9zniWLDQjDA"}}, "unsigned": {"age_ts": 1570043987761}}r$eQaq$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3788}{"auth_events": ["$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo"], "prev_events": ["$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo"], "type": "m.room.member", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-754:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043986921, "hashes": {"sha256": "2TAtSrMxj//iYHoLKCrs1bT68RuHMB4zMNktrSPkjaY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NW8Pa8OOiMedH8i3mPpENPqZeN7OIwA3A6YVnmTQqYSbqAGA35Nn0BIfF2hc1MljblYX2jlONN7ujoa1Gda9CA"}}, "unsigned": {"age_ts": 1570043986921}} ~z v r n j fb^ZVRNJFYeeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800XeeQ$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800WeeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800VeeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800UeeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800TeeQ$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800SeeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800ReeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800QeeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800PeeQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800OeeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800NeeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800MeeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800LeeQ$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800KeeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800JeeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800IeeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800HeeQ$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800GeeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800FeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800EeeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800DeeQ$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800CeeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800BeeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800AeeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800@eeQ$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800?eeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800>eeQ$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg!eZjhYVNpwdogVDKHCk:localhost:8800=eeQ$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800<eeQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI!eZjhYVNpwdogVDKHCk:localhost:8800  4 h 9md]c@anon-20191002_181700-785:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAo127.0.0.1Ղd]c@anon-20191002_181700-783:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgo127.0.0.1ӂd]c@anon-20191002_181700-784:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAo127.0.0.1Ԃd]c@anon-20191002_181700-786:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAo127.0.0.1ւd]c@anon-20191002_181700-782:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1go127.0.0.1҂d]c@anon-20191002_181700-781:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50Qo127.0.0.1тa[a@anon-20191002_181700-77:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMzd0YVl3K3NDeGheVWpOfgowMDJmc2lnbmF0dXJlIMk4zxtJL2wVlisn2DcFoJfPIeJQw8ppv6D8pc5Hf9TZCg127.0.0.1@d]c@anon-20191002_181700-779:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAo127.0.0.1Ђd]c@anon-20191002_181700-777:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgo127.0.0.1ςd]c@anon-20191002_181700-775:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwo127.0.0.1΂d]c@anon-20191002_181700-774:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAo127.0.0.1 8l D `8F]c!E@anon-20191002_181700-767:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQoHLSHGDMIOB127.0.0.1Perl + Net::Async::HTTP/0.44mzE]c!E@anon-20191002_181700-766:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQoHMOWFAWFNH127.0.0.1Perl + Net::Async::HTTP/0.44mxD]c!E@anon-20191002_181700-764:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDNveDB4aW0jazdfLHZzbl4KMDAyZnNpZ25hdHVyZSDIFr9E3a-4AIJV-4pNWGXBaDH06fcvWvKaDKVpFhDeUQoCSKXMMYZWJ127.0.0.1Perl + Net::Async::HTTP/0.44mtC]c!E@anon-20191002_181700-763:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5HWDM6MlduVX44MCZzbFMKMDAyZnNpZ25hdHVyZSDqiQZ6Yl98UsfU-Cu4DY8Z8YcAc4v8Ef0E9KhhB8z0qgoJLJXCXZRRG127.0.0.1Perl + Net::Async::HTTP/0.44m\B]c!E@anon-20191002_181700-762:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ID1uaFIyLWxSaWFjOTRBaWwKMDAyZnNpZ25hdHVyZSBOI2-whn-hAqhY2LJ49fHgXCY9nfHA9BpJYwpPw0or1QoSUIBWCIGQV127.0.0.1Perl + Net::Async::HTTP/0.44mF(A]c!E@anon-20191002_181700-761:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpjQDtFSVB4SXB0RTAmSDgKMDAyZnNpZ25hdHVyZSB2PbAojKxV8Uc4TtYkUA_dtsKa3NqwpeK64hvOTTdhiQoVFSPRJLZEG127.0.0.1Perl + Net::Async::HTTP/0.44mCY@]c!E@anon-20191002_181700-760:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFXaXBtSmU4WVV3QDtjO1cKMDAyZnNpZ25hdHVyZSBVGKTgJtUCip8gkfOki141BszQDjnajnGvW4biM0dS2AoAAUYDDOUHU127.0.0.1Perl + Net::Async::HTTP/0.44mAr?]c!E@anon-20191002_181700-759:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFFRQG5XWCtzcTJzUV9vc2MKMDAyZnNpZ25hdHVyZSB3hUEWMj29-oSAcSWFZoIauD_l3TTNY0OzAy-QbnFzSwoKXAFXIMWWP127.0.0.1Perl + Net::Async::HTTP/0.44m@}>]c!E@anon-20191002_181700-758:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZ2ZGJeSitxTHdlczF5QzMKMDAyZnNpZ25hdHVyZSArP0TomdrImCYvLGf1EFfDqF_mDDFysiK6bhLRkt5tFQoGUAXNWFTDG127.0.0.1Perl + Net::Async::HTTP/0.44m+=]c!E@anon-20191002_181700-757:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5FZ29rZjtGOHYwJjNvSXIKMDAyZnNpZ25hdHVyZSDriojjI92n5P-FStX-_2ssDl5aXk5sLwBcPPjNwlm3tAoQRQFPUSZXE127.0.0.1Perl + Net::Async::HTTP/0.44m  v+eQay$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3795}{"auth_events": ["$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A"], "prev_events": ["$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A"], "type": "m.room.member", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-757", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-757:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043992493, "hashes": {"sha256": "fxyHAbnqBtNwp9UTt47oBTzVr9dKELAdrTpvoUyJMLo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "w1EsgQfVRj5BnsQQnuKi+5sXg5jiXhpi5YnETVGgh0eYpKphHn4feFa/5NZA+UPtgx9spHwG9WzjIimjkYD1DQ"}}, "unsigned": {"age_ts": 1570043992493}}*eQa/$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3794}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns"], "type": "m.room.member", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "invite", "displayname": "anon-20191002_181700-755", "avatar_url": null}, "depth": 7, "prev_state": [], "state_key": "@anon-20191002_181700-755:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043992677, "hashes": {"sha256": "NoIYwRx8iuIbTykvr5vketQtdeW4obpzrnbF/1NWB8A"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "hJJKn8KEGN64z3J6xIn1GBHm1uOclJVyeuI7l8wHDnf6BTkSvZ5nHgcInWndIC8UBRm5cEvLcHAN5hqZqN0GAA"}}, "unsigned": {"age_ts": 1570043992677, "invite_room_state": [{"type": "m.room.join_rules", "state_key": "", "content": {"join_rule": "invite"}, "sender": "@anon-20191002_181700-754:localhost:8800"}, {"type": "m.room.member", "state_key": "@anon-20191002_181700-754:localhost:8800", "content": {"membership": "join", "displayname": "FKOCVHIRTCIPSWJBHVGO", "avatar_url": null}, "sender": "@anon-20191002_181700-754:localhost:8800"}]}}i)eQa_$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3793}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-757:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043991304, "hashes": {"sha256": "HhVf55D215c2XfGQvnHW1TzMS+g8MxuAlchenpwMEGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "KFwCwRBImjM2chAQNTY0QvSfw2usLQKbNU8+K8IiMg69egrXU5R4FRO5+AwIXpqFeFwuBA23KwebOQHOsdnrBQ"}}, "unsigned": {"age_ts": 1570043991304}}{(eQa$Lu1m4g0qmbEG47YvdcphkXEwFPcJkYL9eFR0edS8Sns!eZjhYVNpwdogVDKHCk:localhost:8800{"token_id": 728, "stream_ordering": 3792}{"auth_events": ["$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI", "$dEnaryj4XS8R6mlftSb8u33sYI83jLqjAvZryzOmhdo", "$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0"], "prev_events": ["$fZ4MDPQgpoi_Ie6aBCI28KblQUOMNBm2kNX9dtGjIRg"], "type": "m.room.guest_access", "room_id": "!eZjhYVNpwdogVDKHCk:localhost:8800", "sender": "@anon-20191002_181700-754:localhost:8800", "content": {"guest_access": "can_join"}, "depth": 6, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043991301, "hashes": {"sha256": "opEgHRrFe+DQYeLp9t1U2mhSv/z0eQ3LDDLdT+NXQJ0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5VcE5/FT39wguT4DXq+HW5rOHv58Qfza+E6wXmsvXLcBXlzzMR5bpuT7YfgkKg5Eyr/NaKA7kUD6h27ayJ8DAQ"}}, "unsigned": {"age_ts": 1570043991301}} a} { y w u sqomkigeca~ eeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~eeQ$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800~~eeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800~}eeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~|eeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800~{eeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800~zeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~yeeQ$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800~xeeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800~weeQ$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~veeQ$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800~ueeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800~teeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~seeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800~reeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800~qeeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~peeQ$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800~oeeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08!hNCwypIzdDZDVmCEfd:localhost:8800~neeQ$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~meeQ$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800~leeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0!eZjhYVNpwdogVDKHCk:localhost:8800~keeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ$wgV1X0uq1uHikDRRcPsUxPaCOFwwma5v_nv5PKAFxoM!eZjhYVNpwdogVDKHCk:localhost:8800 "|ps . 1 S \ Bhk&)KT|h2Q/ e!jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rules$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoj1Q3 e!jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw 0Q']e!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkd/Q' e!jGQNGXehugtTvjUGKI:localhost:8800m.room.create$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcp.Q? e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibility$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGoh-Q/ e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rules$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50j,Q3 e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s +Q']e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwd*Q' e!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.create$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIp)Q? e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibility$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgh(Q/ e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rules$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQj'Q3 e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM &Q']e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAd%Q' e!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.create$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4p$Q? e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibility$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4h#Q/ e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rules$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAj"Q3 e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM !Q']e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEd Q' e!pTvdDtkgovsIdAdxCm:localhost:8800m.room.create$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zspQ? e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibility$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIhQ/ e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcjQ3 e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 Q']e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cdQ' e!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.create$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUpQ? e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.history_visibility$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoAhQ/ e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.join_rules$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YjQ3 e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.power_levels$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694 Q']e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.member@anon-20191002_181700-758:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkdQ' e!CAGaRyRvrohDRBsrWH:localhost:8800m.room.create$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYpQ? e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.history_visibility$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkhQ/ e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.join_rules$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQIjQ3 e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.power_levels$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0 Q']e!hNCwypIzdDZDVmCEfd:localhost:8800m.room.member@anon-20191002_181700-757:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08 Q']e!eZjhYVNpwdogVDKHCk:localhost:8800m.room.member@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ I \ 4 l D  `8 2Z | T ,  b:rJ"b:r f ?  z R * Z2 jJ"'QJ"'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800  'Q!mMsxpaIlcykPuOnDyl:localhost:8800}'Q!mMsxpaIlcykPuOnDyl:localhost:8800|'Q!mMsxpaIlcykPuOnDyl:localhost:8800{'Q!mMsxpaIlcykPuOnDyl:localhost:8800z'Q!mMsxpaIlcykPuOnDyl:localhost:8800y'Q!mMsxpaIlcykPuOnDyl:localhost:8800x'Q!mMsxpaIlcykPuOnDyl:localhost:8800w'Q!mMsxpaIlcykPuOnDyl:localhost:8800v'Q!mMsxpaIlcykPuOnDyl:localhost:8800u'Q!mMsxpaIlcykPuOnDyl:localhost:8800t'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800B'Q!mBQpGaIiadEuKBXfOw:localhost:8800A'Q!mBQpGaIiadEuKBXfOw:localhost:8800@'Q!mBQpGaIiadEuKBXfOw:localhost:8800?'Q!mBQpGaIiadEuKBXfOw:localhost:8800>'Q!mBQpGaIiadEuKBXfOw:localhost:8800='Q!mBQpGaIiadEuKBXfOw:localhost:8800<'Q!mBQpGaIiadEuKBXfOw:localhost:8800;&Q!loalEsWaTYwrVUNJLr:localhost:8800(&Q!loalEsWaTYwrVUNJLr:localhost:8800'&Q!loalEsWaTYwrVUNJLr:localhost:8800&&Q!loalEsWaTYwrVUNJLr:localhost:8800%&Q!loalEsWaTYwrVUNJLr:localhost:8800$&Q!loalEsWaTYwrVUNJLr:localhost:8800#'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800Q'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800P'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800O'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800N'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800M'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800L'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kxTDuIasPNpXtiRsif:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800~&Q!kxTDuIasPNpXtiRsif:localhost:8800}?'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800   i/eQa_$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3799}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-758:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043997468, "hashes": {"sha256": "qnqlYXdCbwc0rmb2BYqcksLwbm9qDqaVMno0ASNeLqw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DuXWuThgFJOFV5GbzWCfCdmMLeF9+oGmq9wHxRozwHprjC6nZhy1eP6rYgx/G6x9dvL3T4pnaW6Is+7L6BDNBQ"}}, "unsigned": {"age_ts": 1570043997468}}.eQa$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3798}{"auth_events": ["$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0", "$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A", "$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "prev_events": ["$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI"], "type": "m.room.history_visibility", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043995309, "hashes": {"sha256": "a+tjUeeZfnQ8Xw11Xa/yVIVhmk3FGUWJGNhVIUhSU4Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "aPII61m0srORIbqhs5pS3h+qVGXM2jbvdRChn6KHb3kqr3wTWgSEr2nj9X9YEhVe4+zOqlfs20BlVQTObePhBw"}}, "unsigned": {"age_ts": 1570043995309}}t-eQau$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3797}{"auth_events": ["$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0", "$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A", "$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "prev_events": ["$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0"], "type": "m.room.join_rules", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043994542, "hashes": {"sha256": "KrCRmwUM/hIaHRsTh0RgCG9e8onx4/KA4XTf4iM9Ae0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "pRBWN8Auq+SxCaZMvop/470bUVCgUTHX6KuY0l54++rQGEZBentn8BMERfk+EANfxNqD+3nuAZYUSEcToHnICQ"}}, "unsigned": {"age_ts": 1570043994542}}k,eQac$ye8-6UriXXmVRAnmhXbnp02AA-dqmlxXMK5sGLABJp0!hNCwypIzdDZDVmCEfd:localhost:8800{"token_id": 730, "stream_ordering": 3796}{"auth_events": ["$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A", "$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "prev_events": ["$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08"], "type": "m.room.power_levels", "room_id": "!hNCwypIzdDZDVmCEfd:localhost:8800", "sender": "@anon-20191002_181700-757:localhost:8800", "content": {"users": {"@anon-20191002_181700-757:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043993693, "hashes": {"sha256": "ipHlsrLHrcexAnBi4tCo2eeoRACnserkvrIr79C9KAY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "thG6nSyY7H9eXoRf7z9PcYjQ/TsctBZtoKHHQP7qLMRmZ/mzLB+JvmO4WUMLHeNOUrE3K8buNcbDs777XH8gAg"}}, "unsigned": {"age_ts": 1570043993693}} -RM H C > 9 4/*|%w rmhc T(Qe !jlGSdNttccYxjfLkwW:localhost:8800$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUT'Qe !jlGSdNttccYxjfLkwW:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFoT&Qe !jlGSdNttccYxjfLkwW:localhost:8800$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgT%Qe !ZNIjCvcWhgcwskanjT:localhost:8800$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywT$Qe !ZNIjCvcWhgcwskanjT:localhost:8800$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkT#Qe !ZNIjCvcWhgcwskanjT:localhost:8800$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94T"Qe !ZNIjCvcWhgcwskanjT:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAT!Qe !ZNIjCvcWhgcwskanjT:localhost:8800$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUT Qe !NJdkYMskQwIpIWlWkn:localhost:8800$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMTQe !NJdkYMskQwIpIWlWkn:localhost:8800$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awTQe !NJdkYMskQwIpIWlWkn:localhost:8800$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5kTQe !NJdkYMskQwIpIWlWkn:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewTQe !NJdkYMskQwIpIWlWkn:localhost:8800$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUTQe !jGQNGXehugtTvjUGKI:localhost:8800$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gTQe !jGQNGXehugtTvjUGKI:localhost:8800$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoTQe !jGQNGXehugtTvjUGKI:localhost:8800$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwTQe !jGQNGXehugtTvjUGKI:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkTQe !jGQNGXehugtTvjUGKI:localhost:8800$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGoTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50TQe !VNdqhtoDkyMoQdMTtM:localhost:8800$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9sTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwTQe !VNdqhtoDkyMoQdMTtM:localhost:8800$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqITQe !ulbQzxdPXzuvNoqqgU:localhost:8800$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgTQe !ulbQzxdPXzuvNoqqgU:localhost:8800$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQTQe !ulbQzxdPXzuvNoqqgU:localhost:8800$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMTQe !ulbQzxdPXzuvNoqqgU:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAT Qe !ulbQzxdPXzuvNoqqgU:localhost:8800$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4T Qe !pTvdDtkgovsIdAdxCm:localhost:8800$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4T Qe !pTvdDtkgovsIdAdxCm:localhost:8800$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAT Qe !pTvdDtkgovsIdAdxCm:localhost:8800$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMT Qe !pTvdDtkgovsIdAdxCm:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWETQe !pTvdDtkgovsIdAdxCm:localhost:8800$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zsTQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsITQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcTQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598TQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cTQe !vxEMWYTUdzvLyVZNzJ:localhost:8800$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBUTQe !CAGaRyRvrohDRBsrWH:localhost:8800$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoATQe !CAGaRyRvrohDRBsrWH:localhost:8800$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0YTQe !CAGaRyRvrohDRBsrWH:localhost:8800$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694TQe !CAGaRyRvrohDRBsrWH:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkT~Qe ~!CAGaRyRvrohDRBsrWH:localhost:8800$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrYT}Qe }!hNCwypIzdDZDVmCEfd:localhost:8800$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvkT|Qe |!hNCwypIzdDZDVmCEfd:localhost:8800$FK2hvu_1GOBO5FCPP9GzKuhGfekMC4RbncKLJJx7eQI 6Uq8 T  pRn5pJ7fP-S6o 7 h 8  y J  _ 0 8]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZC8]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUO8]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJR8]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ8]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJC8]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ8]!@anon-20191002_181700-798:localhost:8800INQDOVATBT8]!@anon-20191002_181700-795:localhost:8800JVASIBBRVU8]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ8]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCR8]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJ8]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFD 8]!@anon-20191002_181700-822:localhost:8800CCEPFILJPU 8]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOS8]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJ 8]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIG 8]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCL 8]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOL8]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPV8]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKB8]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVV8]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCC8]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXF6[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNf6[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEi6[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFh5Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWX6[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDg8]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOH8]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHS8]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBV8]!@anon-20191002_181700-810:localhost:8800RESWFULJEC8]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJX8]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDM8]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRWB8]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAX8]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSN8]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCK8]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWI8]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHU8]!@anon-20191002_181700-791:localhost:8800WJMTFALHBS8]!@anon-20191002_181700-790:localhost:8800VALGYGSZPA8]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFX8]!@anon-20191002_181700-788:localhost:8800JZUHRDQQEL8]!@anon-20191002_181700-787:localhost:8800ESOZVRSFST8]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAI8]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLI8]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZH8]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIW8]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQC8]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTK  3eQa$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3803}{"auth_events": ["$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694", "$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY", "$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "prev_events": ["$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y"], "type": "m.room.history_visibility", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044000169, "hashes": {"sha256": "NNFD7YT2n9l5eeDdEWbFlrOpg/jLV848RbOzfKRbAC4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tX10OPbsZA2Yjr4SVL88nJWiomsNZfJAELoRgBEXzQz5aMFXTs42mIC8vxhg795YVsOlVbEyIdumrXkNjoglBg"}}, "unsigned": {"age_ts": 1570044000169}}t2eQau$dXCCduaJ49AchlrJmqA9av5JOpZo7lT_sA4ea6_7c0Y!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3802}{"auth_events": ["$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694", "$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY", "$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "prev_events": ["$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694"], "type": "m.room.join_rules", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043999551, "hashes": {"sha256": "7RPN7V0CHnS7rSqi/4xlveTPYq2BHngJrurqhONHR/c"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "U6ytPzaSKYEu2dMcEO6azIDZ8QPr0dLpcdHGVJjpU1Ff/SB5E7LCYt0wtHQFxEw6ZQKabyd2wTn1ROiL8n4JBw"}}, "unsigned": {"age_ts": 1570043999551}}k1eQac$fxn2ZO4roLdTmwDuy5MWlb2ehVI8_UFlxkKGY7CG694!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3801}{"auth_events": ["$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY", "$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "prev_events": ["$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk"], "type": "m.room.power_levels", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"users": {"@anon-20191002_181700-758:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570043998846, "hashes": {"sha256": "vxeYst51JSCIRIILcXJaUXR4yvTNGjsbHUKtMT/z9eo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Men1sWpUNipFdSeX5H3+4czrJ0c+jZH1QyEHGj/jkdTGmXrMnu/z+6lGUUpueMTjx/SeMjAnfw2Twk9von5HCg"}}, "unsigned": {"age_ts": 1570043998846}}v0eQay$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIk!CAGaRyRvrohDRBsrWH:localhost:8800{"token_id": 731, "stream_ordering": 3800}{"auth_events": ["$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY"], "prev_events": ["$wNXEz_R5hAIFWcIw-JZonkoAe94YUK-dajFlb-GowrY"], "type": "m.room.member", "room_id": "!CAGaRyRvrohDRBsrWH:localhost:8800", "sender": "@anon-20191002_181700-758:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-758", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-758:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570043998238, "hashes": {"sha256": "JYfohPVuvDbV/3PMlHqvA3tfvRpLTDu6GUH8gI51SK4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6B17zOaXSTSf3fyuWiioODeOXiufZxZKBI+PkcFsYNgAeVw50z6WejlRt5bVNrfGxV3ViCTN/3UAtaYAuAuRBQ"}}, "unsigned": {"age_ts": 1570043998238}} < ~tj`VLB8.$zpf\RH>4*   y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > #U 5 ] b % IT~ Ain,1Uo|Q? e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibility$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywg{Q/ e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rules$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkizQ3 e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 yQ']e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAcxQ' e !ZNIjCvcWhgcwskanjT:localhost:8800m.room.create$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUowQ? e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibility$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMgvQ/ e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rules$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awiuQ3 e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k tQ']e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewcsQ' e !NJdkYMskQwIpIWlWkn:localhost:8800m.room.create$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUorQ? e !jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibility$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8ggqQ/ e !jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rules$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoipQ3 e !jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw oQ']e !jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkcnQ' e !jGQNGXehugtTvjUGKI:localhost:8800m.room.create$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcomQ? e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibility$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGoglQ/ e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rules$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50ikQ3 e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s jQ']e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwciQ' e !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.create$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIohQ? e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibility$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgggQ/ e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rules$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQifQ3 e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM eQ']e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAcdQ' e !ulbQzxdPXzuvNoqqgU:localhost:8800m.room.create$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4ocQ? e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibility$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4gbQ/ e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rules$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAiaQ3 e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM `Q']e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEc_Q' e !pTvdDtkgovsIdAdxCm:localhost:8800m.room.create$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zso^Q? e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibility$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIg]Q/ e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLci\Q3 e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.power_levels$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598 [Q']e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.member@anon-20191002_181700-762:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1ccZQ' e !vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.create$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU   *t7eQau$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3807}{"auth_events": ["$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598", "$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU", "$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "prev_events": ["$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598"], "type": "m.room.join_rules", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044006846, "hashes": {"sha256": "VvWNWoYvo+onfj9xAx3Duy+Ty3ZDLqXQ/gCkBG/3bFE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "3nFf9ibSC5PVsM9YTmXKxayXGES3uTYli5GSlhMCgGaF7051VgXpFNLzW3N4usmCC7q1sSxeRs/twWUBlU2eAQ"}}, "unsigned": {"age_ts": 1570044006846}}k6eQac$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3806}{"auth_events": ["$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU", "$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "prev_events": ["$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "type": "m.room.power_levels", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"users": {"@anon-20191002_181700-762:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044005944, "hashes": {"sha256": "oqEGuWLi+cu25WcuIVxFP2a+DzT/RE9l7PWEFvyYcNQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "G4uD886iJSFJ7y3NK8Tp+o3R5GYm82Sto78E2RKSpF4uPhQhuGPHiyLQKCkuu17Gp0KODEr8Zm/tbexvM7C0Dg"}}, "unsigned": {"age_ts": 1570044005944}}v5eQay$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3805}{"auth_events": ["$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU"], "prev_events": ["$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU"], "type": "m.room.member", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-762", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-762:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044004979, "hashes": {"sha256": "1lO+onEzJezSQCrzyJ/4yiUqoyW+ihzXVdeV1fQl8oQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "tdnB7caZNm3Uo+6n9DG48Ubtca/YP5C15sXLFHj2PEW3xFcM5gyJrlhO7/Y95sbWr5f6OUgld6pUU6vE6mAhBg"}}, "unsigned": {"age_ts": 1570044004979}}i4eQa_$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3804}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-762:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044004233, "hashes": {"sha256": "aq7TSXGjUc4QhDzFgv5ArbDLxJnkq7klkkbpu8V3plg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "rPMhtR5dgKxTe8xRv/Fmdl/ussSAbyWY9Ii4UhTfH8bHFL2UpdON+UZOKYII077qObIOiZ6wExaDtn3HqoZ8Dg"}}, "unsigned": {"age_ts": 1570044004233}} 7  1 Q\  W % * ] +co= uC${IPVj8Vj81e$Krj1bLsWrBTeLnmhgnn3dlaCbYutYFNU1qgXJv0nBs4 1e$LMS6-8QpMflUdXqJEkyw2FCuBmYc76xBiqeImbs5rDY `1e$Kk4Guq-v-M4TFXYBke4FmDu-X5SVgAoLJhAompPBNh4 G1e$KbxHD-S5AHUpjZEvzJtth4-dYfi-F2EpvSNzd582Zlg 8V21e$L8qX5sMI7XNvRZD3AqMg-jQXil4jgiTG1TBnV_osOqo R1e$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8 1e$LEGIzMdNG7EnzK8cyZ7N1NQcGwLj9oiWMO5AweDFa_E 21e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 721e$LUkA53DyqMU1oyvxbe1NncjyC4wte3B_b1DuNuZgts81e$LU-G6wsYC1CV_IZseosD8K-VkyxlV_GZVVSyUz9XrtA0e$LSb8eQ13PD2LQQhvSEXj9qfD5GWqqtreHUsMQsbTmicM1e$LRHvvfviDHFw1mb7pJDeji4dfSYLoF29qIB62ryrNg0u1e$LNhPXckehvQwHYO68twHRK7owtexe5O1C3WyNrkZ6Wk 1e$LJxSzusM_Siz3RF91fVP_nuUWm-hd64qa3w6Vdb4kjg1e$LJ6H-0pbAWexktis1tMRpYn5ox7n-7JbmlBUMUZoo9g1e$LHZfo3tAtfrUZx8v4pZFRFtHIqaWy0DDFz0o3Vz-rlI1e$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc1e$LEqx7ecvjgEab+kUNCJpVvqq1YVhi4mFSjVya5wM8881e$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA1e$LES/v0H7p7kqDN8x2GGxdv/U2MBvMIE3u6b6AX9okCM<1e$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eA `1e$LAeGqdYVMUV4qY6IWDnU--6cLqhqHFj-YGDkl24fohE1e$L8SsxMLBCqZL-dBDzUqAwnhc6pieTW39NqtGBjBH-Ok1e$L8Qf9H94kijhM3tbC5Ubw-9C8pESvBrXpICmwvNv1TA1e$L6BxGd0VC2SNwXM_mbqPdEJTr3DdTzBkgmhELIY2LPU21e$L5izv3QqLR2oGoivrYv38iMw1vEOL1cGm_BOI-wq9Ls y1e$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64Ks1e$L3zzD_EsGV0UJLPtQHf-hpahs8PhBlrU_wxZJ_pvVr01e$L3oUyc5ka_KUXNNXsdT-G4P2fx9-aJmG_iKGLWrc5tc1e$L2coxY2s7HkmYxf3INff6Jb7ugWsSlqHdpFIkOxF0tod1e$KRsCVuwSrb_-njpqVjRkp2Dy_xAWmcA3S8qJ87LyNUA 91e$KkBpJwcKrX8nl_SjADfh8gf0sxxIeQbyKlk5x0-GkUY  J21e$KYUoRdBhnK6p4TTpaipmptNMCLiOOYNxH7e32LahiAw 1e$L-jb04C3fLColcCEcz_uQxt6F69T6ntQID9F337KvLE1e$KwPusAMMbVd6lDntaMwl2suWHNR_QprTB5-GwDiDF6A1e$KwBgpGWNCd3dG5rvRLFSBH0mdUfMnNaoxAboc4qjvRY1e$Kvb6o-Y3nCZzCm7o5xvBjstjzXWdZdvLt8u1Rn3Sx6U1e$KqN3v0uJUMnxUOTqCXiXTkz0OmqVXTXZQevmru-pitI1e$KqDFxIRvXr8z/DGg7B2giykfNTWX94FaxN4mSYaS3Zo1e$KpGxXgThK5IzhkTHXTTqvhiBXvXzfsPoBj_Bnt348Uc1e$KmUW4I0BrlRre9rZ-CigefG8MIbE3dFt_idaiCijFpY1e$Kjz0iX1YqKk3kqtz-POSfb5Y2hhcuj69lne2oPQVmJI1e$Kjv2lMW2Jx4z70BBOnamAMdf_6E7mMwOqzSDMZ4p2eY1e$Kj3PSZMuL16XbgNVhx_uQVWm8r15tovvEuVs0B-n7BYM1e$KiPWpE5fJtoTSU9ikQjfCqUkh6gUie11OjcYeSq14j0]1e$Kh8QUws1IxpxZKnQBRTBab4JeyRxbEuyvus8pl2UkukW1e$KfXa5rD-BJhA2y_RZWHIy-5IoPyLpTloFrYEjv-t6hMB1e$KdW7NCXsjQeamElRxiFZ1HKZuGf92JzsLHgEOgNY2VY0e$KZ0cohtynR7dl4slCtpfZh-uWTTZ7OupH0rUQXqx6d8D1e$KYxCJvct9mdGn9dtZdaT_9fw4u7pfGx7fxTOkl-injg1e$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-Q1e$KUoHjZT49kMvydyI4jqzX-6rjO-dBs_a3jcMQMwDlpU1e$KSS5wE3_OJbATZo2KD1oigorqzWweG82Kh6Jzinyt5kX1e$KslhGMzIvuxsmoUigTaHWabHL7iX5FwjluYThE2kT_Y 1e$L7jnG9Qges1yplP3Vu0XZMor8mkiyX7FwsZI9FIMt3c  w k;eQac$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3811}{"auth_events": ["$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs", "$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "prev_events": ["$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "type": "m.room.power_levels", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"users": {"@anon-20191002_181700-763:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044012386, "hashes": {"sha256": "HmcRg0AAUYk6wgtV9lJ5esdQnK1Z/UQtkC5Z7MK3eHY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "AvshhSuiwSubvwCbtcHun1Teiw6BZA9YKFk+J5M67N0aWgQUaAv4Jun5fREMsnJSLWvcmXz9w4ur6HShe3ilAQ"}}, "unsigned": {"age_ts": 1570044012386}}v:eQay$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3810}{"auth_events": ["$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs"], "prev_events": ["$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs"], "type": "m.room.member", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-763", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-763:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044011065, "hashes": {"sha256": "ecnaKHHj/c+qMlks6z/YPto3OzFGxMrJntneJQ0gUMs"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "cC66mAg7JmtH+KuiktCbOPWFmo2etqYLzUvQn3JOMY2mKXKMYq5eLRNRoJdMqVUyJJ4pmiWw5OTu2qYFVXzzDw"}}, "unsigned": {"age_ts": 1570044011065}}i9eQa_$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3809}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-763:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044010033, "hashes": {"sha256": "J3YvhdLqoPUqkPi1r/EOyAlmZMVs+dyLXOykUwIavWw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "K7YUTsJxnfh5Fuwvq3f4qE7lnMSQfjDpFQ+0Jv+LFdRT8IPD09+CFaQGqltQXUT9Cx0FuUw8gmAXGG/7XHE8AA"}}, "unsigned": {"age_ts": 1570044010033}}8eQa$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800{"token_id": 735, "stream_ordering": 3808}{"auth_events": ["$jV2cW62_XD28NeXEk6OWdd93eUb-TwwPI8giYi8x598", "$dwr_zN5bbZYD7Q4vNpGvYJJnyhxtRUQKwJ9k4AY2XBU", "$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1c"], "prev_events": ["$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc"], "type": "m.room.history_visibility", "room_id": "!vxEMWYTUdzvLyVZNzJ:localhost:8800", "sender": "@anon-20191002_181700-762:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044007660, "hashes": {"sha256": "bV9YFWx85AfgFrguJmdKAJkqEfBkJYjCJkTYODVN/gM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sYyAFArtvXj3fK4UTh9QnHNP0l0uPeLzblURg4sNyHCn4OFFyPlrITjGYEwLrlM7MxvXUuqksIXPWafW0GUnCA"}}, "unsigned": {"age_ts": 1570044007660}} #GUq8 T  p 7 S  o 6  d +G8e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwsha2568e$m2IIqx1RMdNaO78Gx3_6LnPt0XL-5oyZnCCw-v6cLW0sha2568e$m0lk-b6-Qlm61onj8xmNnlDZYkkffcPYHPgig0kgRr0sha2568e$lzT-kBAXgmumF-Ka7YCU4pVok44sAezLqgt7RQgUTT8sha256 8e$lvJAlRaOWDXzSFoIVdqObpsyDle6cRzKU3Ad7PYCgQAsha2568e$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1Asha256 ,8e$lrcIlksZv9VQgBHir_97f8qWgwelEhEB5vQPHkJqHZosha2568e$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQsha256&A$lolredact:localhost:42455sha256 }8e$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8sha256a8e$ljdAcDqWkkVROx2nAQQCITvD_9MgxYLrWUxRnmG9Kwgsha2568e$liGu7EK0N6-nEZPEllZa_enrYoZvWgjlAFlBwWSQkeAsha2568e$lhB9l9YtM8nKMGqY0oT97rqqRq_Fc1Kgho2UTlrfrsUsha2568e$lflEYAHiLE4b6vpViJ_YkSjI8alnqjuFaY8Nq0RtT_4sha256;8e$lf3SeDquLjHcrIxad8XV4Osr8Et5OIDakEptVdwjwzIsha2568e$leLu86Krls7ARft1RPz0IE8bbPmwsjsn7SSte4UN6SIsha256 8e$ld6AqejKf9X-JChH21JrRViiDc3SHg8jVi7UkkdtDiosha2568e$lcm5_3u3PqMHpCQssqHSWVUX5_5bfcufKam7EIkIEQMsha2568e$lckk_Eqjr9HADb5YNqJAp9F_zKNoCt_XcCt6s205zJ8sha2568e$la85FHZJi2YCebK2gWWBX442_2D6bcgseo0dZBkMoe4sha2568e$la08R62mhs381mroNBldr7lRDcuqkFbyTn0JhUEqkSgsha2568e$l_FwfySprTn4uqij_M9VP-w6HlC-LGgQ3fyw5_Asfi8sha2568e$lZtRW5UGwzF79wCVk9cb8J3cF89vWdRx9Y5PAjOTcpcsha256 8e$lYtvRMzuuCQw-pUxRe7PwxTEqohs6Ja12eMVlqgA2-4sha25628e$lYfQCMV95UpHQGRPwcDq4LshP1oZ6QM1M96wERPp1Egsha2568e$lW8sAP3UWCybu32n7_u-FzFt5uGHVYKg5rtcJH2sQQQsha256 8e$lSsi_d9LIOLrhqGPwsG_1Ddf5T0GB4VoNTeVqtMnF14sha2568e$lSDj3r9YWi0h1XjnbBzA3VDkXbjD7sAbzn4BAfTzOZYsha2568e$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJposha256 C8e$lOdQQrak-3AZedzbPcue2zmu5ayVWFNKpYV4_NH5Fi8sha256 8e$lNmALBO1Y08vFV9L_hNQuoSeiJXPyz-28o6T9Qa8lz0sha256 M8e$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0sha25668e$lKPIlCzc464VaHOos6gx2Moi13JSdgoUa9bTamZebaksha2568e$lJprgWmbc_zR5993mB6M70XRmKL1z_HZw82mWfKI-xosha256 8e$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-Esha256 4tBzH T " Z#8 J ( N ) D a / vg5>  {CpI   {CpI  1e$pOTUQ0cx1Rt_8Gp4-ifANBce-noiaIXPz_Zhe7YpzY0 [21e$pSy9VZD-I6_Dl0itTjL-yaf3UMay-qFluQN-EXRj-iUrd1e$pP71sJrkjKs5otNE5Mm3vY-Ovv9HgkVqng4EBWdTidY U21e$pA1m7PnVby8ERx3-Tlyd67ldqh4lKGbo713YMp5itKA1e$ptIxh8v_FKPiRasW_w7eTotyAFG_vP1jvz1nDs7RO3M11e$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM 1e$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM 1e$pVGQHH99ReR2yTFy5ClgxuJ38agowAm-c_CL9m5q6C0 ^1e$plR-uiXg5qKhl8SmIqBe1ikddvKLUcp2YVAiPbkSzJs 1e$p-hqfMqj8Q3Z0spszt2z1n-sxycq3ReoBGEx50x2U9Qm1e$ot7KJ9-AwSj8xDuKkwPwGd-vLQDgxPY3hjJ8Kw0cGLo1e$onUHFsT1S95DFxsmpKfw8Do5AaGcKTo-4ZKh7PC7FGA[1e$okTN5V0pD9dTaHFjyMSRR5lpRgFwTiLa_HEkVPibxQwd1e$okT26p34hSRRrrdU3pxG_fpSLSzMOMAL2jaeQ5kmLTg&1e$ogO5BljYYu_eJa21c9gtuMEEIj4WG1KbrTcCST_st_Ez1e$oed9a9qBjWRCgkl_Ue1v9fT0y1Z_1fuHmavzhCqKL-U G1e$odZ2z9xUUbVOX50SkdeD0ft5wvlJFcJ_s2ujW4j_6VI 1e$od-bdodn82jUS0e5Ce96iV2uSiYufnLMotbBLsmYjv8 1e$pvJ7Q-ya2mk26sOEDBAYUhYb_hJaLtYzdeB18Jwk5WMw0e$ptXswuTsuLx9UjV7QMkGZ7BvANnQz086bprbTq5BnMMg1e$proGBi_uS2HbjvFL4a9kXwRVE9dvdPTgUWesTegtKpU"1e$poPO9PVbtTiFQLaf9vBwkwc_B5u0zwy2U9PvBj2KXg4O1e$poEMrtQhiJ_w2yVWkBRMg36jvBtOhQ1mj99wCd8kDdUq1e$pmqkJ21SJWDEDXpyF1i5ggi5T1mbMUOw7aK1eHUzdzI1e$pjWbgl1-aXNn9QV-SeJhaERx8nCO25mfGpXtfsNUi2c1e$pjVGICQbIEsmAoUMYclVo1qf2G582Kce5Gl4d_IiZaI%1e$pgRIAzTtLvD1_dq-Pmh7KBv5P9AP1sfrPXcx_ypW3SQ1e$pfCKWTq33uVx4PqNEKz_k0ogvTHtQASBo0NuxwLK5cI0e$paSvAvKpXS4q494c2x4A9F7gCMzxcEY9wA6aHD_SA_4A1e$p_Sm_y9xJZNueS8KWrJMfsTg2S-PcwddechsU2JdTIIk1e$pW1EsM6nrT8MS_ndhRlbXRg8tcbqJVYLNPS40A-48281e$pFRd39BOLyL5cuDaIpZ5DRdOu1sw-SRyNJRqV-RHQj41e$p8paHV7pyuk21Jzvg9iHVXxGO4ufSul6zWMRrexeFL81e$p3e3xcw760PMk9JY_HO5_Ycns4g_VOU2cngZZzXmCKI1e$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQ1e$p0nCcnMNslu53q4TcZfdUII3m_CAqGGEEHOMPf5y5wE1e$p6-H8hWllaVRq5d8wvZND5XgRFukmLin9t7SMIiVxnM1e$p5NO0ZGD6hGgNKxmJwVyJvkn7bs9I-XzqP2ArD0HII01e$p4vQGRzU4H9xelo4eW5rb5EdjXdkHd11xYFs0NjpwqQ4 Nd1e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 ! 21e$pdMB-bcz3vdgR7srVNUdzBwamUEJV2KguwlzTtI4I6Q[ |d1e$pfs1T2zR0j38OVTqXdTuMvkYR-QlLBBR_ZFNiZmjTec D 1e$pB78PWT9rnsJ86A2qftfHKm1cp-NHND4LaPnAXpszF0 21e$pi5GotnRbvb4ylO0Bpt1yyeKItebSCC8IHAVRtKmDnQ@1e$pPSYXxCsZE0_xkt9zxZ-xI9sIvmn8Vo-nXHUG3_bct4 21e$pUPa35jZscoeUbquJ8QF9LF7DH6xoSKrUfsVC1KU3lQ W1e$pjD_oi-KLdC28Z-vm51pTYVaHODkdLu-uicTIOF45R4 21e$pe8Y2KhdC7-7pEqBD6_oiEdGzcFo7cWTDAJoOxVmjUEp21e$ppG4W0Bft2tDGjE2mnsuQlPHS-ILXiP8SjDlbXnIlXIfj1e$p_Q8W6tANdvVD93VymENQOgxinrxLktJObZ2nZj5MuQY1e$pAAqumq45PjOn5e7ab7oupmdnqzaYRAoYNJg2CdKkaQ d1e$pf4nDnOXlvl83J3WCr6qWxj0PecjwgRo9lxhTOnDq_E BX b  `  pv(.8B ve'Q ]$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewm.room.member!NJdkYMskQwIpIWlWkn:localhost:8800m mo@anon-20191002_181700-789:localhost:8800u e'Q  ]$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUm.room.create!NJdkYMskQwIpIWlWkn:localhost:8800m9m@anon-20191002_181700-789:localhost:8800,te?Q ]$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gm.room.history_visibility!jGQNGXehugtTvjUGKI:localhost:8800mm@anon-20191002_181700-787:localhost:8800$se/Q ]$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVom.room.join_rules!jGQNGXehugtTvjUGKI:localhost:8800mm@anon-20191002_181700-787:localhost:8800&re3Q ]$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwm.room.power_levels!jGQNGXehugtTvjUGKI:localhost:8800mm5@anon-20191002_181700-787:localhost:8800 qe'Q ]$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkm.room.member!jGQNGXehugtTvjUGKI:localhost:8800mmK@anon-20191002_181700-787:localhost:8800p e'Q  ]$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcm.room.create!jGQNGXehugtTvjUGKI:localhost:8800mm?@anon-20191002_181700-787:localhost:8800,oe?Q ]$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGom.room.history_visibility!VNdqhtoDkyMoQdMTtM:localhost:8800mFm@anon-20191002_181700-768:localhost:8800$ne/Q ]$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50m.room.join_rules!VNdqhtoDkyMoQdMTtM:localhost:8800mm꜔@anon-20191002_181700-768:localhost:8800&me3Q ]$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9sm.room.power_levels!VNdqhtoDkyMoQdMTtM:localhost:8800mm>@anon-20191002_181700-768:localhost:8800 le'Q ]$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwm.room.member!VNdqhtoDkyMoQdMTtM:localhost:8800mꕃm@anon-20191002_181700-768:localhost:8800k e'Q  ]$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqIm.room.create!VNdqhtoDkyMoQdMTtM:localhost:8800m|m@anon-20191002_181700-768:localhost:8800,je?Q ]$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgm.room.history_visibility!ulbQzxdPXzuvNoqqgU:localhost:8800m_m@anon-20191002_181700-767:localhost:8800$ie/Q ]$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQm.room.join_rules!ulbQzxdPXzuvNoqqgU:localhost:8800m mz@anon-20191002_181700-767:localhost:8800&he3Q ]$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGMm.room.power_levels!ulbQzxdPXzuvNoqqgU:localhost:8800m/mk@anon-20191002_181700-767:localhost:8800 ge'Q ]$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAm.room.member!ulbQzxdPXzuvNoqqgU:localhost:8800m m@anon-20191002_181700-767:localhost:8800f e'Q  ]$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4m.room.create!ulbQzxdPXzuvNoqqgU:localhost:8800m|m|m@anon-20191002_181700-767:localhost:8800,ee?Q ]$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4m.room.history_visibility!pTvdDtkgovsIdAdxCm:localhost:8800mmmoT@anon-20191002_181700-763:localhost:8800$de/Q ]$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDAm.room.join_rules!pTvdDtkgovsIdAdxCm:localhost:8800mjmkO@anon-20191002_181700-763:localhost:8800&ce3Q ]$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxMm.room.power_levels!pTvdDtkgovsIdAdxCm:localhost:8800mgbmh@anon-20191002_181700-763:localhost:8800 be'Q ]$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEm.room.member!pTvdDtkgovsIdAdxCm:localhost:8800mb9mb@anon-20191002_181700-763:localhost:8800a e'Q  ]$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zsm.room.create!pTvdDtkgovsIdAdxCm:localhost:8800m^1m^@anon-20191002_181700-763:localhost:8800,`e?Q ]$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsIm.room.history_visibility!vxEMWYTUdzvLyVZNzJ:localhost:8800mTmW,@anon-20191002_181700-762:localhost:8800$_e/Q ]$Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLcm.room.join_rules!vxEMWYTUdzvLyVZNzJ:localhost:8800mQmRq@anon-20191002_181700-762:localhost:8800 #(7 e  2 ^ g+4\k)8fgeQ3 $3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels eQ']$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800aeQ' $O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800m.room.createmeQ? $85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibilityeeQ/ $nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rulesgeQ3 $LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels eQ']$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800aeQ' $5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800m.room.createmeQ? $PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibilityeeQ/ $VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rulesgeQ3 $34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels eQ']$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800aeQ' $18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800m.room.createmeQ? $mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibilityeeQ/ $D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rulesg eQ3 $Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels eQ']$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800a eQ' $S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800m.room.createm eQ? $t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibilitye eQ/ $-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rulesgeQ3 $hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels eQ']$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800aeQ' $KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.createmeQ? $Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.history_visibilityeeQ/ $oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.join_rulesgeQ3 $pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.power_levels eQ']$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.member@anon-20191002_181700-767:localhost:8800aeQ' $8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800m.room.createmeQ? $Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800m.room.history_visibilityeeQ/ $ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800m.room.join_rulesg~eQ3 $ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800m.room.power_levels }eQ']$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800m.room.member@anon-20191002_181700-763:localhost:8800a|eQ' $RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800m.room.createm{eQ? $2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.history_visibilityezeQ/ $Gzh-rftglaBdzD9AKnm7wZsziK-TA6UErD1aVPfMFLc!vxEMWYTUdzvLyVZNzJ:localhost:8800m.room.join_rules a} { y w u sqomkigeca~(eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800~'eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~&eeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800~%eeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800~$eeQ$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~#eeQ$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~"eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800~!eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~ eeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800~eeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800~eeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~eeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM!pTvdDtkgovsIdAdxCm:localhost:8800~ eeQ$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE!pTvdDtkgovsIdAdxCm:localhost:8800 'cj8p> v D  | J  P  V $ ] +c1e$r1SKjvQOOTy3PWWGoypze4UlMPV03W6LQRSjfrtwiNk 1e$r-9DTasEKQVucmk5XmEYzve0Z6Ed6CPhHUGOk1yqnEkn1e$qzJcFtt5J9YzMbgr_-o9gOPqqfv6sT_0Uw17fitv_m41e$qvYgvLnLZNb2YiiX-nruPJ2Xv5AjVdSJlpBCkUiGWK41e$qt7dx_4bxqskhB6KVjW1HkAqkkcMmgaGN5TdQr9GbdM~0e$qt5G5rwmxSALV6NaQSTw4TvZGvKx7xZxhFeZVGIrepw"1e$qrrHRuKU4HnBpX4XZ5zBBDfVBv3pFUU8fDzE2qNNcNk 1e$qnBIx3eL7mUrtMXKewmjuGV6qTIL1DeD5nicO8w43FQ1e$qkvk121FoROiYs4NflKBSFVcGL1e28gEDpDqmuBGBzQ 1e$qkgIhc5xAowa92gYUCY1p5YYhdwUAAxjlkvQQZTaZG8B1e$qkE_nmk6WriLBZVhW7c0I7PsLbYXb6hY8eZvl4lRoAw 1e$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y1e$qgm3SI1QhYWG5vXPM5v0bXw8Vq4MFycfWTC9XLpFfgI1e$qfmymAzh40jpw5axoZ50GScohaTvQbeveWqo6ol06mMP1e$qfAS-VqMpA-rzEsEC3ApCBCJD4p3JrXc93_eV2oH2-01e$qaSj1kEVfDhV7M3GeqrzCaJ_dH_xM-GC9e6R9PGmbBAE1e$qZ3Qn82Nyetf8wrR71m3InETGx9kBV0e6vkHVGr5hj0N1e$qZ-BHyMzaH4zYlZtn4aNBF7f5Q7vBYsqR4TqDkJ6KSI ;1e$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00 1e$qXA6bx3mT59nU1AM4Ftbq450KQZfiWznlGNM4UX6lGAt1e$qVRUGbCyRSVTAXEmWnpITsSc-gbg8hxPTH6aAqpJPC4 1e$qUY_9DXkG7uJwMrWudr-xyVrhIdRTAVzEG5Uq1SP0H41e$qPYGQd5_1Vdiuzdnq9zncwOPZ0nF2BCKxlut2uc4gtQ|1e$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7g1e$qNvrM_sA4bMw5ITGG4v33NlkR652wTzmnCcbnV3n3Fs1e$qNknSZ_wn1HrHllMs9oBVoFkHEnq9LM0fl0unHS6p_Q 1e$qMHLme08qwa42mxQBGUsrBdvwXpYuS1Mmf7L9HlXevo81e$qMF1ORehIFrbNPbt63heTjNxWNgjcMtppN52Cp7YVl0{1e$qLMrj607Ud3bFC_1TQF7fok2Vq6oOLnWdtdkyAeqjjo 1e$qLGbQsOeRaRDbojCe7xxMsXtfeNK4F_jFdr6BiXP-f8 1e$qKrsmtb6DhE3XARVBa00XpNYOg2NORQCwiYuDqcl7Yk G1e$qKYDGcoF6yYX-B7B8BGdiTwpReuYPow-6hvJGYYWDUo1e$qKRQmMBKBjMMInihIuFcUVcADVqiwrwjlgBlh9YzjI0J1e$qHu7ds70qg0L2LaSiPgu0zdHL-ZjNVhTbFWWDX7I2r4 1e$qGi30aWu7FedGu2Oy3ZmyWvQUoTcIEfVa4_9A8wEiWk51e$qGYBBVnKm9c7RtAyBjbgFC5iZvwulCxB2vSBVJYW4TA1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYs1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYr1e$qGCH5FV9l-BygtOX1nyYa6dENDZ9j4C_Or1L0urUosYq -qT)}R' { P % y N # w L ! u J  s H q*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!raCWVWQGnXbmkexpCN:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rZWweGEChkxxtzyfDB:localhost:8800*Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWmvvGBgmFMdVvcfPk:localhost:8800 *Q!rWGwSSefrZzQYCYFHs:localhost:8800 6*Q!rWGwSSefrZzQYCYFHs:localhost:8800 5*Q!rWGwSSefrZzQYCYFHs:localhost:8800 4*Q!rWGwSSefrZzQYCYFHs:localhost:8800 3*Q!rWGwSSefrZzQYCYFHs:localhost:8800 2*Q!rWGwSSefrZzQYCYFHs:localhost:8800 1*Q!rWGwSSefrZzQYCYFHs:localhost:8800 0*Q!rWGwSSefrZzQYCYFHs:localhost:8800 /  v?eQay$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3815}{"auth_events": ["$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4"], "prev_events": ["$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4"], "type": "m.room.member", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-767", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-767:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044018445, "hashes": {"sha256": "Sg0bHQ0Mq9QVLZdfvYnQc6LpT13k5ENDM8EoJHkO66o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dpn5weWzV4Ct9uXmBLUjaqNPxGFO0lCAakvt4yjt1iAujFsxaaV3gy9pSZ9fPeKnBi/3x8VlQHM7xsbC5U3CCQ"}}, "unsigned": {"age_ts": 1570044018445}}i>eQa_$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3814}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-767:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044017684, "hashes": {"sha256": "3nqk4yghAYd/YUwDrrq9WIQeFszokag7Nia2mhlYHG4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "RJ0y8YgEFdTHOPk/tIoT8YJzmOgv/GF9kkX+ahSJWqOtj7qxD/OnPAGdjZVGQR2wR5TA5z4hf3FwRwMFW0f5AA"}}, "unsigned": {"age_ts": 1570044017684}}=eQa$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3813}{"auth_events": ["$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM", "$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs", "$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "prev_events": ["$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA"], "type": "m.room.history_visibility", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044013964, "hashes": {"sha256": "+fjYLuynIzWvdw+a3ELPjsy1T9mvPvOCEuKubEq0ngI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Cm160JJfZolnvD1AVIyUy9vL8MVoWvgxBG6KJX0H2t1TNO+L0K4dZ72RLdZLmnr/npcQpK5BTcEAIQ1Mo11ZAA"}}, "unsigned": {"age_ts": 1570044013964}}t<eQau$ZI1jJCh5ZWz4-iTkEQa1eVZugKCLbd8YADPBIsWyjDA!pTvdDtkgovsIdAdxCm:localhost:8800{"token_id": 736, "stream_ordering": 3812}{"auth_events": ["$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM", "$RyxQoNKu59RzsrDISwhuWeewONGbDH69Vb2JIFe-0zs", "$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWE"], "prev_events": ["$ouPv74lqTifhG-yl_iyBWJIO6fCgZddNfq7UCpfOVxM"], "type": "m.room.join_rules", "room_id": "!pTvdDtkgovsIdAdxCm:localhost:8800", "sender": "@anon-20191002_181700-763:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044013187, "hashes": {"sha256": "HmHLRPds+IQUx3/rqRwHY+XxwNcd+9sZWwXovRPEjUM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "t14jJ4Jf8nZTGHOUHQAzExYvFzLfoQA3zX1S0nRqnQ38TeWcxAhKahIhxUYjj+AulzPtUzAc2uU6IwZiIjVbCg"}}, "unsigned": {"age_ts": 1570044013187}} g * T~=ggb]!c@anon-20191002_181700-777:localhost:8800DNPSVJVGARMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgoga]!c@anon-20191002_181700-775:localhost:8800KWWOCKYJTKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwog`]!c@anon-20191002_181700-773:localhost:8800KNQPPEVHSZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2Aog_]!c@anon-20191002_181700-774:localhost:8800EHLWRALUNWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAog^]!c@anon-20191002_181700-771:localhost:8800WFJTBQEQEAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwog]]!c@anon-20191002_181700-772:localhost:8800AMIQGAPEEXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAog\]!c@anon-20191002_181700-769:localhost:8800YMNXMSKEVLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQog[]!c@anon-20191002_181700-770:localhost:8800CKDIOBKNJMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQogZ]!c@anon-20191002_181700-768:localhost:8800NKUFFDEKKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAogY]!c@anon-20191002_181700-767:localhost:8800HLSHGDMIOBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC5STjZAdkRfYkdvOkhYPXoKMDAyZnNpZ25hdHVyZSDqmXZfJGXKZThiVNy2lPXAainbzxecKS--Hk-z1dRcHQogX]!c@anon-20191002_181700-766:localhost:8800HMOWFAWFNHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEdlK0ZYJmo3djJRWXdAbGMKMDAyZnNpZ25hdHVyZSAS-84-3b3SPvUH2kKA2i7SIGMWwaPkZph_DNy0sRSSgQo D|t l d \ T LDeeQ$OVvPokHDC0tvKO8qt1-NLcO4UcyjkcnO9opdcFxqal8$kx7QWx6wOMj78y-A7eDwSqwlTj7xHLm8ruqnyBL_kDo!OaCEdDAiatpwYcagUb:localhost:8800eeQ$OVJ4IGEEd_r_RNkCZdp5adxtyloeUvKW7lQu_yKcLC0$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E!zHBgbzUZHshNGZvIBS:localhost:8800 4eeQ$OUZWZkU9mpRdWCwt6Rh0v5S0G9ZiaiNeHrQDCvR1MIw$9NB9LF68PmLu2_WUQBGLokYaENVBFaMDmRwXzfWooPU!SvKwEALYoNreUvqAlp:localhost:8800eeQ$OTWPGKpuLc7tQMaco3nsOPdespjuHfXS11-La8QOhuU$BFeHl4wn-TwqMSCviflWXVlFMsaGnOv76nnhUWpapWg!fJXiUpbbOlLbHWmPgs:localhost:8800veeQ$OSH6-V9GF4mJ-GwX49jIzt-acV-Pgke65_iLG3eEruI$sMW9u34_u1aKmZoXNHWP7PBADVFMajFSe4-Vy6j7E5M!ZaOktTIVeRgBXxfubH:localhost:8800TeeQ$ORrmgBw6Id7ot3MLRkFBbdJxDqTHrgskcwkHe_d842g$ZpyU3L3p8qFLufQgkNTyQjSM70YRjiZOFqxj7U3er18!cRbfhxZdPstEsPGPAu:localhost:8800 eeQ$OOwDW9tStmUahWZA1XQZm3dGbtmeVb4fbLoIB_Pisjs$Z2Mc74nL5r5ybGS8B7vjuLNTNJpehFVQ95FN0hwcpIo!GsjDgpaxdwYfnefiWO:localhost:8800 eeQ$OO9i6i9OG6EYnB6Wgm9jlfjEa3_ScmM2pSgGEjPd7G4$l2mIo1z8ZMLGVMEclTwYkgTAZGYv-mmn96yHGgYWMtU!fOJLpnbtgKNxxVDquX:localhost:8800eeQ$ONGNc6a0F4r2I_WXcAYxbToi9v4Rcty59IYprhSHwOM$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM!RDEAXrqXQizuhCUFPq:localhost:8800 eeQ$OMbVvvjDpiRpu7wxSaOttnN7FSHOS2Dj7ZWDrAGNbsQ$5Hw4teqJ_n4m40ZM_kjIR7zlzn11n2rrRP8viTvL6wQ!HAFNBarGuVZuWCgwWM:localhost:8800eeQ$OKwvkS30r0CDrnMZsqjONf_k3RYGgGKof1qt71bHTzg$xrt1JZnQAulcFxcSiNb24A30ioxyEFZOeVr-gkJehuY!BoyzlWNkRPncpDjBDg:localhost:8800݁eeQ$OHEALUkT1ZVcy5-Phz1qm9kfprcCEY9mdT126qJeiRM$aBYh7-Pz7BjOPP_LZAxK2Q0HfvEL28EXDACYkcLmFBs!TleKOyAElrpgyyrAQA:localhost:8800eeQ$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcs$_OiPm4h8SMmt8Y9XKqjGz7l71bq8ULJweOdJk8V0Bro!XiwGxQKwjgutEClKUy:localhost:8829deeQ$OF5Ah3eKkGNm27cEHEuq7t2oFyDnGReauqdKzSNuDSE$X600Wa3A5tKhUaFQOykWakpcONk8T8L1CQTnUmzCpBo!KdOYYnOuwAyQzqwUki:localhost:8800{eeQ$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08$YsDv_8MTgG8k_CnzJepM48y5De3UDOXIvxwvj16nK_A!hNCwypIzdDZDVmCEfd:localhost:8800 @ )k93r@ x F  ~ L  R X & ^ ,e1e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE 01e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 1e$PhIXE0vm1_3ZkvDj0QvREMIqOJ7C99RnjnO6lN_Vckg1e$PggcTrrmSboXslT7KXYthAOsI-OnH7HQkwr0Gtb13SM0e$PffBt-A1w7VLUa8EqwvPy2hN3Dtez1vRe1Y6kH41Leo,1e$PegNFu1nyFZowTPkkIQOh4TsypY6KSSBbTzZWyxdf201e$PeJwvWO20E3q62x2f80aj8hgIfPMVf4HuEZIokSzGqM1e$PcNxed800zvgyH7kZz1dELHbd4DjM9-2ylr1ttyjUCs1e$PZqOyShyq7tmK4XMNYKghyjyq2Jeu3_m1XHzupNjMeM \1e$PZ5xocCPnFFbsXwM2tgnwN8aO4jfY10sXZSa35OpPLg1e$PWLUgNdGtQj2nGHv8f_zl30xfk0edwGE5Z__JqSq6zsJ1e$PVHJKh9k1ev2LqfWkqpdJ3s-_23NEQ3zJAmNb5kFoa81e$PU-erV6d6OOttz_TDVJ_gpqMgmt_prudA7jBk1Cjodw1e$PSxwFlCGWw6XmCdX1Gog6x55Tcq-7emgQ0L2XSd4KYo1e$PSUcUTgUcTMElsVeJWK6V1h6-YARAEtcZGvFxKCA_M0 m1e$PR0DpRNnBb98CJSgrOx6Q9TK5T2NYJP1IPjQoJt9r8E 1e$PPtuDgslnX8qRZEOmd4F6JNlzw455AzpYn_Kpw2-tVg1e$PPIE8JoC4UhyDcdRDu8k6xwmXof3xcZx-FAG_riN7HIa1e$PObqTggtIUk7-SQcXYX7ecrsT_vcW6xw-fGTf702oIw1e$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE901e$PL0csIywsH7tlzCgTwWn_zgESKYDYwtiOtpmwHo2rrg 1e$PK1sbteuS0Wy5hAb8zD_K12QF6ZGBlgG5kzr3JURKsg1e$PJjEW_3AbjEtQxszH1xJk2K5JOmstyqbcypDUKn99yM1e$PJD-QNmrp4j8qNHXQGqLDI2gU5lZkT_5VI5Q8LEmH_s1e$PIoj_dVLEHsL3hCFkuQ5xF2p3OUUnpYOo1SrsjfEnzQ 1e$PInx_GAmKV6zccjwYEiMrfENQF227Y-Fim9243zVUYU_1e$PImaeh0i7a1D-DwpgV5luNjsOrDgoVnUifGeKa1wrWk>1e$PIdp_nCoqLI6ZmhmFK9rOdVvpFbGbOMfvGrQ17QAmwc1e$PIVBoDfjzonNymkOjGGhDfW5NPFNBKzVs5uCpfXLbf01e$PI7AEYVh8spvwnzOzD9WE6VC7Jse3psEZp6bUoJ9kT8 1e$PEgiIv5ca9kMp-9__cmOFkZJ03HK9iIS7bVHRNZ0pRY1e$PCq65Jci_uPF9geKJCst9NhaOS1BxcgW5c-YB0ObotM 1e$PCk7Dc1KATc8l7NVO2shqzyM7lJwy0rs548mbLEQ4lA $1e$PCVjxDpQ_ALGqio8VV4uOvAlrCwSCBvN5UIV6EIGBTk 0e$P9WXPBgyhrGd4zwuvOnCjt4QOitKnjfV2I3BbzC67DkC1e$P5qsOlRCsA1Gv1BJYuVJ8PRF6vNlmSlUTmW3udBxj-YH1e$P59xi3p3RrmFG3VyGGIiwKeBKWwJ6jZ1bFEewutCLeEJ1e$P33tzwEfbdI1qoimreRx3ppco1Obe8i5rU4Kmh-9AyE {1e$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oM1e$P0Z46nKlBeoreoF6-g_X4HM5ncrJ_CqTwvGRwfRJEwI0e$P08BpB_BQg5ZjR9Q_Jwj1lbfxWXTlpn7wjbO8zSHqkE?  iCeQa_$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3819}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-768:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044023420, "hashes": {"sha256": "2POoaUeSliLog47BZDM/b37WMX/zTIE58R/IMsLNtPI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uZclyumpsOzfS6CHDrn5YrMNVuAeg4GbeEnJ1F/1tG236ie3M6Z/iNT+H2fMdA4alfIfqJkCH4OWW+1CLXUUDQ"}}, "unsigned": {"age_ts": 1570044023420}}BeQa$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3818}{"auth_events": ["$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM", "$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4", "$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "prev_events": ["$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ"], "type": "m.room.history_visibility", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044021087, "hashes": {"sha256": "hccAgf8modQ239OPCOh3Brzc53SIKzta/vAP3FTv/JM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "epeQRlfTPtbKpzTjGmE7hRIer35dASAGrEFMN49ULYoF8gXw85gAqnb6ikTSTL/XiyTn8susmXWtsHPlbFhVBw"}}, "unsigned": {"age_ts": 1570044021087}}tAeQau$oVSfospnfjv4Dn1YtCxPfL1pzSGzNrDtymy1D8w3QxQ!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3817}{"auth_events": ["$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM", "$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4", "$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "prev_events": ["$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM"], "type": "m.room.join_rules", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044020237, "hashes": {"sha256": "Mdo4DtYWv6C8QxoRFUBboIrEDOtHdiyuG4C6uagZTM4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8WmV2uCTlrBpXysyyLLqBZQ6QsxbhDhjxScQedYxgZLSC669HrmS85uC+crq1HS4E++/x/9ux5nlwUKD9KLDAQ"}}, "unsigned": {"age_ts": 1570044020237}}k@eQac$pOiK6lkPe6MWs_aL9t44RSN7r27D7dGZc1F58d3fXGM!ulbQzxdPXzuvNoqqgU:localhost:8800{"token_id": 739, "stream_ordering": 3816}{"auth_events": ["$8JghsoIlgrHvzrUo4-EUKteoY8Sg8cYUz-ZmR-hqta4", "$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "prev_events": ["$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BA"], "type": "m.room.power_levels", "room_id": "!ulbQzxdPXzuvNoqqgU:localhost:8800", "sender": "@anon-20191002_181700-767:localhost:8800", "content": {"users": {"@anon-20191002_181700-767:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044019247, "hashes": {"sha256": "QAs43HUa+fNbXqimIwWDZ2Y+HXTq8UO51sVVjVJ5e+0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CpS9OvsZmqY1LsRMgFeTaiN/yKwOMB93d8kRD7NDF66rcTAuHOqJZBNVIwIk+lnftUT8Kw9bLMIb0sCQTzpeDw"}}, "unsigned": {"age_ts": 1570044019247}} QI}Ht? k6b -Y$a O,X#  O c.Z % P  R  S 4]@anon-20191002_181700-822:localhost:8800m4]@anon-20191002_181700-806:localhost:8800m몤4]@anon-20191002_181700-805:localhost:8800m4]@anon-20191002_181700-804:localhost:8800mJ4]@anon-20191002_181700-803:localhost:8800m4]@anon-20191002_181700-802:localhost:8800m.4]@anon-20191002_181700-801:localhost:8800m뚑4]@anon-20191002_181700-800:localhost:8800m4]@anon-20191002_181700-799:localhost:8800mo4]@anon-20191002_181700-798:localhost:8800m4]@anon-20191002_181700-797:localhost:8800m{ 4]@anon-20191002_181700-796:localhost:8800mw4]@anon-20191002_181700-795:localhost:8800mb%4]@anon-20191002_181700-794:localhost:8800m^_4]@anon-20191002_181700-793:localhost:8800mE4]@anon-20191002_181700-792:localhost:8800mB4]@anon-20191002_181700-791:localhost:8800m4]@anon-20191002_181700-790:localhost:8800m4]@anon-20191002_181700-789:localhost:8800m4]@anon-20191002_181700-788:localhost:8800m24]@anon-20191002_181700-787:localhost:8800mܜ4]@anon-20191002_181700-786:localhost:8800m4]@anon-20191002_181700-785:localhost:8800m4]@anon-20191002_181700-784:localhost:8800mo4]@anon-20191002_181700-783:localhost:8800mͧ4]@anon-20191002_181700-782:localhost:8800m4]@anon-20191002_181700-781:localhost:8800m7 54]@astest-1-20191002_181700:localhost:8800mKa4]@anon-20191002_181700-832:localhost:8800m4]@anon-20191002_181700-831:localhost:8800m4]@anon-20191002_181700-830:localhost:8800m4]@anon-20191002_181700-829:localhost:8800m4]@anon-20191002_181700-828:localhost:8800m4]@anon-20191002_181700-827:localhost:8800m4]@anon-20191002_181700-826:localhost:8800mf4]@anon-20191002_181700-825:localhost:8800m4]@anon-20191002_181700-823:localhost:8800mx"= @spyglass:localhost:8800mp1Y@anon-20191002_181700-9:localhost:8800mk2[@anon-20191002_181700-99:localhost:8800m*R2[@anon-20191002_181700-97:localhost:8800m+P2[@anon-20191002_181700-96:localhost:8800mQQ2[@anon-20191002_181700-95:localhost:8800mO2[@anon-20191002_181700-93:localhost:8800mAN2[@anon-20191002_181700-91:localhost:8800muIL2[@anon-20191002_181700-90:localhost:8800mM1Y@anon-20191002_181700-8:localhost:8800m}(2[@anon-20191002_181700-89:localhost:8800ma+J2[@anon-20191002_181700-88:localhost:8800mqK2[@anon-20191002_181700-87:localhost:8800mYI2[@anon-20191002_181700-86:localhost:8800m?H2[@anon-20191002_181700-85:localhost:8800m,G2[@anon-20191002_181700-84:localhost:8800mqF2[@anon-20191002_181700-83:localhost:8800m ;E2[@anon-20191002_181700-82:localhost:8800mD2[@anon-20191002_181700-81:localhost:8800m:C2[@anon-20191002_181700-80:localhost:8800mB1Y@anon-20191002_181700-7:localhost:8800my2[@anon-20191002_181700-79:localhost:8800mA34]@anon-20191002_181700-821:localhost:8800mߑ4]@anon-20191002_181700-820:localhost:8800m^4]@anon-20191002_181700-819:localhost:8800m4]@anon-20191002_181700-818:localhost:8800m4]@anon-20191002_181700-816:localhost:8800m4]@anon-20191002_181700-815:localhost:8800mɕ4]@anon-20191002_181700-814:localhost:8800m4]@anon-20191002_181700-813:localhost:8800m4]@anon-20191002_181700-812:localhost:8800m4]@anon-20191002_181700-811:localhost:8800m@4]@anon-20191002_181700-810:localhost:8800m 4]@anon-20191002_181700-809:localhost:8800m볳4]@anon-20191002_181700-808:localhost:8800m밯4]@anon-20191002_181700-807:localhost:8800m뮆 .??? I I???? ??@ @ Q  Y  b $ j -?]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUOm뚑?]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJCm?]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQmo?]!@anon-20191002_181700-798:localhost:8800INQDOVATBTm?]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJm{ ?]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQmw?]!@anon-20191002_181700-795:localhost:8800JVASIBBRVUmb%?]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJm^_?]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWImE?]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHUmB?]!@anon-20191002_181700-791:localhost:8800WJMTFALHBSm?]!@anon-20191002_181700-790:localhost:8800VALGYGSZPAm?]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFXm?]!@anon-20191002_181700-788:localhost:8800JZUHRDQQELm2?]!@anon-20191002_181700-787:localhost:8800ESOZVRSFSTmܜ?]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAIm?]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLIm?]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXWm~?]!@anon-20191002_181700-777:localhost:8800DNPSVJVGARm꽺?]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTKm긄?]!@anon-20191002_181700-774:localhost:8800EHLWRALUNWmA?]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZm곲?]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEXmꮤ?]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEAmꬉ?]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJMmꨥ?]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVLm ?]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKSm ?]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRWm?]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXFmJ?]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCCm?]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJRm.J?]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZHmo?]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIWmͧ?]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQCm?]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVGm7=[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNm&@=[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFmB<Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWXmy=[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDmA?]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOHm?]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHSm@?]!@anon-20191002_181700-810:localhost:8800RESWFULJECm ?]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBVm볳?]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDMm밯?]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJXm뮆?]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVVm몤 A[$H l 5 Y " } F  j 3 W {D h1UyB f/S v?44==astest-1-20191002_181700astest-1-20191002_18170043==anon-20191002_181700-832anon-20191002_181700-83242==astest-0-20191002_181700astest-0-20191002_181700F1OOastest-01create-1-20191002_181700astest-01create-1-20191002_181700H0QQ_astest-01create-0-20191002_181700_astest-01create-0-20191002_181700F/OOastest-01create-0-20191002_181700astest-01create-0-20191002_1817004.==anon-20191002_181700-831anon-20191002_181700-8314-==anon-20191002_181700-830anon-20191002_181700-8304,==anon-20191002_181700-829anon-20191002_181700-8294+==anon-20191002_181700-828anon-20191002_181700-8284*==anon-20191002_181700-827anon-20191002_181700-8274)==anon-20191002_181700-826anon-20191002_181700-8264(==anon-20191002_181700-825anon-20191002_181700-8254'==anon-20191002_181700-823anon-20191002_181700-8234&==anon-20191002_181700-821anon-20191002_181700-8214%==anon-20191002_181700-822anon-20191002_181700-8224$==anon-20191002_181700-819anon-20191002_181700-8194#==anon-20191002_181700-820anon-20191002_181700-8204"==anon-20191002_181700-818anon-20191002_181700-8184!==anon-20191002_181700-815anon-20191002_181700-8154 ==anon-20191002_181700-816anon-20191002_181700-8164==anon-20191002_181700-813anon-20191002_181700-8134==anon-20191002_181700-814anon-20191002_181700-8144==anon-20191002_181700-812anon-20191002_181700-8124==anon-20191002_181700-811anon-20191002_181700-8114==anon-20191002_181700-809anon-20191002_181700-8094==anon-20191002_181700-810anon-20191002_181700-8104==anon-20191002_181700-807anon-20191002_181700-8074==anon-20191002_181700-808anon-20191002_181700-8084==anon-20191002_181700-805anon-20191002_181700-8054==anon-20191002_181700-806anon-20191002_181700-8064==anon-20191002_181700-803anon-20191002_181700-8034==anon-20191002_181700-804anon-20191002_181700-8044==anon-20191002_181700-801anon-20191002_181700-8014==anon-20191002_181700-802anon-20191002_181700-8024==anon-20191002_181700-799anon-20191002_181700-7994==anon-20191002_181700-800anon-20191002_181700-8004==anon-20191002_181700-797anon-20191002_181700-7974==anon-20191002_181700-798anon-20191002_181700-7984 ==anon-20191002_181700-795anon-20191002_181700-7954 ==anon-20191002_181700-796anon-20191002_181700-7964 ==anon-20191002_181700-793anon-20191002_181700-7934 ==anon-20191002_181700-794anon-20191002_181700-7944 ==anon-20191002_181700-791anon-20191002_181700-7914==anon-20191002_181700-792anon-20191002_181700-7924==anon-20191002_181700-789anon-20191002_181700-7894==anon-20191002_181700-790anon-20191002_181700-7904==anon-20191002_181700-787anon-20191002_181700-7874==anon-20191002_181700-788anon-20191002_181700-7884==anon-20191002_181700-786anon-20191002_181700-7864==anon-20191002_181700-785anon-20191002_181700-7854==anon-20191002_181700-784anon-20191002_181700-7844==anon-20191002_181700-783anon-20191002_181700-7834==anon-20191002_181700-782anon-20191002_181700-7824~==anon-20191002_181700-781anon-20191002_181700-7814}==anon-20191002_181700-779anon-20191002_181700-7794|==anon-20191002_181700-777anon-20191002_181700-7774{==anon-20191002_181700-775anon-20191002_181700-7754z==anon-20191002_181700-773anon-20191002_181700-7734y==anon-20191002_181700-774anon-20191002_181700-7744x==anon-20191002_181700-771anon-20191002_181700-7714w==anon-20191002_181700-772anon-20191002_181700-7724v==anon-20191002_181700-769anon-20191002_181700-7694u==anon-20191002_181700-770anon-20191002_181700-7704t==anon-20191002_181700-768anon-20191002_181700-768 2 2Za h  PAQ]!VNdqhtoDkyMoQdMTtM:localhost:8800@anon-20191002_181700-768:localhost:88004=PKQ]!QWLJZmJqjWZjVOjdYF:localhost:8800@anon-20191002_181700-832:localhost:88004PJQ]!ZWANpHlizyLrUiVvAm:localhost:8800@anon-20191002_181700-832:localhost:88004PIQ]!TkluVzxeeCbMtbFWWS:localhost:8800@anon-20191002_181700-831:localhost:88004PHQ]!ELBgBaMSIMNkjFSumH:localhost:8800@anon-20191002_181700-797:localhost:88004PGQ]!CKNftKKCaOCVUyYWNY:localhost:8800@anon-20191002_181700-795:localhost:88004PFQ]!cvXpMzcxNNhsNttxvt:localhost:8800@anon-20191002_181700-793:localhost:88004PEQ]!jlGSdNttccYxjfLkwW:localhost:8800@anon-20191002_181700-791:localhost:88004PDQ]!ZNIjCvcWhgcwskanjT:localhost:8800@anon-20191002_181700-791:localhost:88004PCQ]!NJdkYMskQwIpIWlWkn:localhost:8800@anon-20191002_181700-789:localhost:88004PBQ]!jGQNGXehugtTvjUGKI:localhost:8800@anon-20191002_181700-787:localhost:88004 9 U  ]w 6    o G ' Y 1 7 l D -m  | Ve / ggg'Q!vnFXnkCSfTbsSNKrtg:localho'Q!vnFXnkCSfTbsSNKrtg:localhost:8800;P'Q!zScKnCZCFPIIodAiQj:localhost:8800+'Q!wCsDjKBtuUbrmZgjsB:localhost:8800b}('Q!wBBQYEPjQGnoAzDpEu:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800l'Q!yWhIsLsgNVGcnELrDS:localhost:8800g'Q!uPxXJHJyFQwvpQLZNs:localhost:8800('Q!vxEMWYTUdzvLyVZNzJ:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800E('Q!ulbQzxdPXzuvNoqqgU:localhost:8800('Q!ybXveQoxPVhjpKHAkG:localhost:8800_z'Q!vZGjXEXQoCaoUXnkCa:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800OP'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800('Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800?('Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800 ('Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800~'Q!zsXPhIPzeXXLvuazzQ:localhost:8800}'Q!zoTQAhGwmDDUECKtbL:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800&Q!zhCsYcaweVFJLLNwBz:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800 'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800"#(&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:88000'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800*'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:88008'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800;'Q!uSBqTezaFcMnlowsEf:localhost:8800 &Q!uJtKGXTNdEnCPNOGDx:localhost:8800  GeQa$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3823}{"auth_events": ["$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s", "$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI", "$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "prev_events": ["$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50"], "type": "m.room.history_visibility", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044026438, "hashes": {"sha256": "SXI3i4Z0KNJFVLTbjSANiVVOFlvKvrHwPqwPakS9sF8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9pdqrqqXLvKJhKafasCpgBnMAFELcWJC9YSoaXaI34beNdBMJVnWkYYBbr8MsDwZTalHygrKE+wNgzYWJ3uRCA"}}, "unsigned": {"age_ts": 1570044026438}}tFeQau$-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3822}{"auth_events": ["$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s", "$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI", "$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "prev_events": ["$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s"], "type": "m.room.join_rules", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044025820, "hashes": {"sha256": "fIvI4uqjuRiBBOtKOWKvOUS6q0EPYnxxvqAQuZeMA7k"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "LGTTwTjiTgAWneExMlk8ODtT76Vfyl/4kmkm2zdAtHBDM2Q4zDj7t4GPWbixP72GzMGIuJkKOFquqegujrtnDQ"}}, "unsigned": {"age_ts": 1570044025820}}kEeQac$hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3821}{"auth_events": ["$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI", "$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "prev_events": ["$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw"], "type": "m.room.power_levels", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"users": {"@anon-20191002_181700-768:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044024816, "hashes": {"sha256": "9jk6TZ8COcP3cn430HOc+6eBe3vOrwadBldHWOCMg48"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iwwmoSn/Z4xg6nN+STCyF3nnkD3VG6WSvCgTR5dvD4h60X36c+URub/h0GqXtsJ5mYt9RF+dGFd3vqYnjH28Aw"}}, "unsigned": {"age_ts": 1570044024816}}vDeQay$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800{"token_id": 740, "stream_ordering": 3820}{"auth_events": ["$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI"], "prev_events": ["$KKmjHg0VW-PeSNTxrSzzVsKuFHPlKRcZzMDTNrcTsqI"], "type": "m.room.member", "room_id": "!VNdqhtoDkyMoQdMTtM:localhost:8800", "sender": "@anon-20191002_181700-768:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-768", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-768:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044024195, "hashes": {"sha256": "IyTmxyFEYX8Mhm/d7aL8ntylmwetizYJ28EqDULrLq0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sQHYCqQXrwJ9K+m1J0ldFgTZSyfIPiU69SRUeHZ0mskOtUMUsGx/TAeEMjPdl2vALP09hQfbckDHfq3/rSuGCQ"}}, "unsigned": {"age_ts": 1570044024195}} 0`8pH X 0  j B  ~ X 0  h @  x P ( 'Q$1570042696198qbnxj:localhost:8800'Q$1570042695197vezoL:localhost:8800'Q$1570042694196OHsWc:localhost:8800'Q$1570042692194rxboZ:localhost:8800'Q$1570042691193uVdPZ:localhost:8800'Q$1570042691192yNWVM:localhost:8800'Q$1570042690191yQfnl:localhost:8800'Q$1570042689190UkvMv:localhost:8800'Q$1570042688189axPjv:localhost:8800'Q$1570042687188ddQmS:localhost:8800'Q$1570042687187gbArC:localhost:8800'Q$1570042686186Qxqmn:localhost:8800'Q$1570042683184TpChh:localhost:8800'Q$1570042682183iUUXF:localhost:8800'Q$1570042681182ZiRRU:localhost:8800'Q$1570042680181TFyrx:localhost:8800'Q$1570042680180uuIxG:localhost:8800'Q$1570042679179ZJCqE:localhost:8800%M$15700426765pydev:localhost:8829%M$15700426764DoRhm:localhost:8829%M$15700426753WBESe:localhost:8829'Q$1570042675176WKRiz:localhost:8800'Q$1570042674175gurnU:localhost:8800'Q$1570042673174OxGuP:localhost:8800'Q$1570042672173XsxsH:localhost:8800'Q$1570042672172vPvbe:localhost:8800'Q$1570042671171AQZaz:localhost:8800%M$15700426692GLpqH:localhost:8829'Q$1570042668168uCbYK:localhost:8800'Q$1570042667167mhSmJ:localhost:8800'Q$1570042666166IBpPy:localhost:8800'Q$1570042666165HDkhp:localhost:8800'Q$1570042665164nYKmj:localhost:8800'Q$1570042664163IAHXd:localhost:8800'Q$1570042662161lGrSW:localhost:8800'Q$1570042662160SrmtM:localhost:8800'Q$1570042661159xQwJK:localhost:8800'Q$1570042661158igwHF:localhost:8800'Q$1570042660157svDcU:localhost:8800'Q$1570042660156wxhvl:localhost:8800'Q$1570042659155mEUeP:localhost:8800'Q$1570042659154Fztdf:localhost:8800'Q$1570042658153tmCYJ:localhost:8800'Q$1570042658152btGpA:localhost:8800'Q$1570042657151cITOZ:localhost:8800'Q$1570042656150UsLRz:localhost:8800'Q$1570042656149JNVWR:localhost:8800'Q$1570042655148eXOyA:localhost:8800 #o- 8 f  / [`$)Q\%Sa>eQ' $noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800m.room.createm=eQ? $3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibilitye<eQ/ $FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rulesg;eQ3 $HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels :eQ']$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800joina9eQ' $QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.createm8eQ? $EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibilitye7eQ/ $6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rulesg6eQ3 $pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels 5eQ']$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800joina4eQ' $SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800m.room.createm3eQ? $x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibilitye2eQ/ $P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rulesg1eQ3 $3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels 0eQ']$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800joina/eQ' $O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800m.room.createm.eQ? $85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibilitye-eQ/ $nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rulesg,eQ3 $LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels +eQ']$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800joina*eQ' $5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800m.room.createm)eQ? $PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibilitye(eQ/ $VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rulesg'eQ3 $34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels &eQ']$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800joina%eQ' $18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800m.room.createm$eQ? $mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibilitye#eQ/ $D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800m.room.join_rulesg"eQ3 $Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800m.room.power_levels !eQ']$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800m.room.member@anon-20191002_181700-787:localhost:8800joina eQ' $S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800m.room.createmeQ? $t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.history_visibilityeeQ/ $-IbW70s-Q59iTEJvWmUOlib_VaFH_sgzzb-3AMqm_50!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.join_rulesgeQ3 $hN8XLHySqdz8acyBFMpTwd1hWDDKeefhMTJDXlU8M9s!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.power_levels eQ']$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbw!VNdqhtoDkyMoQdMTtM:localhost:8800m.room.member@anon-20191002_181700-768:localhost:8800join " 5 ] b % IT~ AZe( Q']e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YcQ' e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU Q']e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91woQ? e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibility$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwgQ/ e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rules$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIiQ3 e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 Q']e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8cQ' e !ZWANpHlizyLrUiVvAm:localhost:8800m.room.create$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUrQ))e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUoQ? e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibility$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMgQ/ e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rules$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQiQ3 e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE Q']e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwcQ' e !TkluVzxeeCbMtbFWWS:localhost:8800m.room.create$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsoQ? e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibility$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsgQ/ e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rules$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAiQ3 e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg Q']e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcc Q' e !ELBgBaMSIMNkjFSumH:localhost:8800m.room.create$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIo Q? e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibility$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsog Q/ e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rules$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYi Q3 e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 Q']e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkcQ' e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.create$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYoQ? e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibility$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAgQ/ e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rules$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAiQ3 e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 Q']e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQcQ' e !cvXpMzcxNNhsNttxvt:localhost:8800m.room.create$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TsoQ? e !jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibility$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpogQ/ e !jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4iQ3 e !jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU ~Q']e !jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFoc}Q' e !jlGSdNttccYxjfLkwW:localhost:8800m.room.create$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg 8l D `8P]c!E@anon-20191002_181700-779:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAoOWQMDGTEXW127.0.0.1Perl + Net::Async::HTTP/0.44m~O]c!E@anon-20191002_181700-777:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFp6cDdQZDgrWjlaS2p4eWEKMDAyZnNpZ25hdHVyZSAvA0t47Jpx-O11hU0YEO1UdvMRHx5j9kn5F-VTdl-PIgoDNPSVJVGAR127.0.0.1Perl + Net::Async::HTTP/0.44m꽺N]c!E@anon-20191002_181700-775:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF56QEphQFV3eUVVR3pCcX4KMDAyZnNpZ25hdHVyZSBIj-dVL8E1TkFjzzfcClAVZM5WIG1TA0BLe5zBfAkMLwoKWWOCKYJTK127.0.0.1Perl + Net::Async::HTTP/0.44m긄M]c!E@anon-20191002_181700-774:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEQ4Zy5RMD0uLDJCI2U5Ky4KMDAyZnNpZ25hdHVyZSBUVLbbZ4AvfN1GcF73o35f05ZudHYwwIwTObg273ZGXAoEHLWRALUNW127.0.0.1Perl + Net::Async::HTTP/0.44mAL]c!E@anon-20191002_181700-773:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEUrTUlwWWU7RD1MT3J5RFEKMDAyZnNpZ25hdHVyZSAIW1j9cBnsYLOn-OMAVUY7oiQiYY_0P66I8DUslslg2AoKNQPPEVHSZ127.0.0.1Perl + Net::Async::HTTP/0.44m곲K]c!E@anon-20191002_181700-772:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH5hSzdZRWZTSUYyQG15T0sKMDAyZnNpZ25hdHVyZSD3cWJHK8yfFf739wmxgn7L8NvzN1MrmJZDYJsEtSmoGAoAMIQGAPEEX127.0.0.1Perl + Net::Async::HTTP/0.44mꮤJ]c!E@anon-20191002_181700-771:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5XcUIjLEUwWjtnTEJoZnMKMDAyZnNpZ25hdHVyZSBNFeOtTMeos10aKMZhYSO4eTtYNxAa4XXHf5r2DOMtzwoWFJTBQEQEA127.0.0.1Perl + Net::Async::HTTP/0.44mꬉI]c!E@anon-20191002_181700-770:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQoCKDIOBKNJM127.0.0.1Perl + Net::Async::HTTP/0.44mꨥH]c!E@anon-20191002_181700-769:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFhELF4mRld4YlBaNWo9eW8KMDAyZnNpZ25hdHVyZSCxEoxT8qlZ7AWuBju0SGQxcl0Oa_ZSwgEE78R7loIqCQoYMNXMSKEVL127.0.0.1Perl + Net::Async::HTTP/0.44m G]c!E@anon-20191002_181700-768:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc2ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpyNDZ3Z0FMYjRvSnZLQzoKMDAyZnNpZ25hdHVyZSCFUSNczJVL050tjW4GtBYHk9_uR7Yz5HjHNp7e7vn7VAoNKUFFDEKKS127.0.0.1Perl + Net::Async::HTTP/0.44m -RM H C > 9 4/*|%w rmhc T Qe!ZWANpHlizyLrUiVvAm:localhost:8800$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4T Qe!ZWANpHlizyLrUiVvAm:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8T Qe!ZWANpHlizyLrUiVvAm:localhost:8800$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUT Qe!TkluVzxeeCbMtbFWWS:localhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUT Qe!TkluVzxeeCbMtbFWWS:localhost:8800$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMTQe!TkluVzxeeCbMtbFWWS:localhost:8800$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQTQe!TkluVzxeeCbMtbFWWS:localhost:8800$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pETQe!TkluVzxeeCbMtbFWWS:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwTQe!TkluVzxeeCbMtbFWWS:localhost:8800$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsTQe!ELBgBaMSIMNkjFSumH:localhost:8800$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsTQe!ELBgBaMSIMNkjFSumH:localhost:8800$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgATQe!ELBgBaMSIMNkjFSumH:localhost:8800$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9ZgTQe!ELBgBaMSIMNkjFSumH:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcTQe!ELBgBaMSIMNkjFSumH:localhost:8800$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQITQe !CKNftKKCaOCVUyYWNY:localhost:8800$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoT~Qe !CKNftKKCaOCVUyYWNY:localhost:8800$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYT}Qe !CKNftKKCaOCVUyYWNY:localhost:8800$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4T|Qe !CKNftKKCaOCVUyYWNY:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkT{Qe !CKNftKKCaOCVUyYWNY:localhost:8800$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYTzQe!cvXpMzcxNNhsNttxvt:localhost:8800$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkATyQe!cvXpMzcxNNhsNttxvt:localhost:8800$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwATxQe!cvXpMzcxNNhsNttxvt:localhost:8800$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0TwQe!cvXpMzcxNNhsNttxvt:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQTvQe!cvXpMzcxNNhsNttxvt:localhost:8800$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TsTuQe!jlGSdNttccYxjfLkwW:localhost:8800$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoTtQe!jlGSdNttccYxjfLkwW:localhost:8800$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4TsQe!jlGSdNttccYxjfLkwW:localhost:8800$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUTrQe!jlGSdNttccYxjfLkwW:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFoTqQe!jlGSdNttccYxjfLkwW:localhost:8800$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgTpQe!ZNIjCvcWhgcwskanjT:localhost:8800$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywToQe!ZNIjCvcWhgcwskanjT:localhost:8800$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkTnQe!ZNIjCvcWhgcwskanjT:localhost:8800$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94TmQe!ZNIjCvcWhgcwskanjT:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llATlQe!ZNIjCvcWhgcwskanjT:localhost:8800$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUTkQe!NJdkYMskQwIpIWlWkn:localhost:8800$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMTjQe!NJdkYMskQwIpIWlWkn:localhost:8800$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awTiQe!NJdkYMskQwIpIWlWkn:localhost:8800$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5kThQe!NJdkYMskQwIpIWlWkn:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewTgQe!NJdkYMskQwIpIWlWkn:localhost:8800$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUTfQe!jGQNGXehugtTvjUGKI:localhost:8800$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gTeQe!jGQNGXehugtTvjUGKI:localhost:8800$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVoTdQe!jGQNGXehugtTvjUGKI:localhost:8800$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwTcQe!jGQNGXehugtTvjUGKI:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkTbQe!jGQNGXehugtTvjUGKI:localhost:8800$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbcTaQe!VNdqhtoDkyMoQdMTtM:localhost:8800$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo (1j8p> v D  | J1  P  V $ \ +c1e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo d1e$wGtcCWfvvjX-ZwZxGXUw09Cr6QACRl_Pfgy4OffzyNg P1e$wEZPZLvld-hZ2hbbBd-chhHvch3wo9yvhfR4mwJKU2c1e$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UY1e$wEKP3TtGwaw5pcEYI5Y5NOuJjBQEaCVVPcka4vEXnooC0e$wC-1cHvBXAZEMrcUBDYGY71JUZFYX8WMdFTF-YLsFkA1e$wA6MX6R1BdJJ_wga1LJeNFOKIW3lvTMvqk7aqlW4hOg.1e$w9e5nWyGjiIuC0wMVAJWF_WTCxXmqEak57jPA6vmsBw1e$w7XlsUHUxk_gonKPlEq3ucJpo5svrArni9ai8CsOOtk 1e$w6KDWGOy5oe1AMSB31EE-W96a-2Fm5I2qnqo48B24xY1e$w5sU6VGZSTR7nfW-vxjPo61MojAnqX6Ny-J7-a05nP41e$w3xJ_iJhvL_RZbUOyIKMxcdIJqNsatmx6Qxbgu6UF0Iz1e$w1YgsRUsbGOyydeTjJ-ISwY3LzDQlJrJfH0c3vjszns[1e$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk 1e$w-OipDdm-uVlMI28iwlFgtXp6OZYETdQs_aZP2KpVME1e$w-9XIr9mqbVdGzv-qTSWyZUbb7IeSabRwIUP4WSQL_U1e$vztnF9zRrqbEvJ37rdJfufqjD756MJehMJZsoLRajGE1e$vxvBn1n5-WyM7uh70dGoFz_tivusrJyQbmhRPz2uMeQ 1e$vwWNkR3ss9OkXIBErripEbJ5dlmIlLxIHCdD1vC1az81e$vrlTjHEnWZdGXihtmDh1Oj9zAroVdU4soaPweo6jc3g 1e$vqVs2r9VnMe8FgtLGGg9eCDNHVA_sJd_U9tJZE_ClN01e$vmW4jqiSVTaS2W4YmRsFPVpIJu9OcUR5_pB7XZEEk4E1e$vlqeG6gqrZ-yfkcmIs3QfJ74cIjKN1OhjqBujqJu5081e$viP-oseTTla1uhsiuV6pOANWtq9DLg6khH6MKdvHYIAu1e$viHLPtYygvloEWkQzNqz7qQA64G8KrgLkprpT4JzdsY G1e$vh-fHhy4zBWKc8kacVZphgkTv0ORPqfYLoIA4N6fL9kT1e$vgDhARAPGD4ukH2-9IdpZ6zyV7LVZ_zyTw9APYCg0iU1e$vfkkxXgFnaspCjv-xQ306X4WFdLMCtblFqi6xeJMcNo1e$vexn7WomPv1wNavdOiF6qMzN6AcEDke2pNjKPe5KM_81e$vd3zS-Gmw_6tEAddNkdfKSO7lSe3QZ5vUgxSmZQ6Ya01e$vaUcVp0CJVebxaOYMhec4sAX7v1TFwvFa9GAimmqlCY 1e$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44Bgc ]1e$vXMPnU3RCyJWiDEC6SsNYmsN1FmFdMbWEaVv_xDK3T81e$vWfJILuVlwL0HgMgMZ2FVKJN6_nsFSxjwKdxmITnRugr1e$vWdt0Yf_xzsTPIAXJhWduILM5AITsebYWh-oa1OUcZA 1e$vWWT7khWCBFBVsnJG3LMFhuSeAqtPBfnTKHfDMOUxro ]1e$vWSphzTDlAYo00K2jdg3TRiZKfvPIV7ZDGCuTa8okuc 1e$vVNY2VPpHEYOIJh9gP_UfBy9PcDhaXApPjAS8OCXolk1e$vRan4C1Jt1RY6tNZMrhZSxYP9kZk1oVMPasLiyXEtOw1e$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7Ytegkk ! 0 @ P ` p(8HXhxu ]@anon-20191002_181700-806:localhost:8800$2b$04$yyT8Aq8iIQTYOFOh5O.BTe7PFh3rIQcbYZPZA74TukiHY58K68MxK]u ] @anon-20191002_181700-803:localhost:8800$2b$04$54hv2X5PUVQ9FB8AlZa0ueli.Ex1k9TVHlUs8lJ7ow4vLGt7VGNGS]u ]@anon-20191002_181700-804:localhost:8800$2b$04$rVNK5IFlIisPfgOFhWYyd.zmbnhZUy7IFvayzyS5ggD95ZVlSYiY.]u ] @anon-20191002_181700-801:localhost:8800$2b$04$C41R1bw77aNfFboZLDA8WO474lIJHXrt.opj.R8A8z1u2eR4SVYJe]u ]@anon-20191002_181700-802:localhost:8800$2b$04$nev7CtCotCdfBAcxWCfa9.CEFyyJcBwFllKKB26RNqgZMGlUOva/q]u ] @anon-20191002_181700-799:localhost:8800$2b$04$5JOD4xyllCfS.xqCErfC.Ox1rYYgt5UGRXlt0ilpPZjwjBVK99s3W]u ]@anon-20191002_181700-800:localhost:8800$2b$04$vR2hWWx2CCf1fS3MjAhTiO7k7u5SVVYnaky1Imiv1KFdd0bNmC28.]u ] @anon-20191002_181700-797:localhost:8800$2b$04$IG3uD1UlImJjw4rElU1jMuKJUKQLu0SwNT02rw3nyr8Iq5HZLxiJy]u ]@anon-20191002_181700-798:localhost:8800$2b$04$SabdOVsS8/Gp9DUI77c9GuTaOSgkwn7vicCZcn5AcpDGKgWOqW79y]u ] @anon-20191002_181700-795:localhost:8800$2b$04$bjlbxoBQSRSX2CM8rjKKT.PirVr6/ZINOEgkTBOwjm1S.6hAr2y3K]u ]@anon-20191002_181700-796:localhost:8800$2b$04$f9RuEFKQ3PbcsLtAnipbveef2R63T53HxMuKYcPHKFJZ4eRINuYJ.]u ] @anon-20191002_181700-793:localhost:8800$2b$04$FXWTCa4uRBzE4vjox4eEb.gwpGY8g.xTI6nJvx8wX3GLSoxSkiGhG]u ]@anon-20191002_181700-794:localhost:8800$2b$04$.aZrjIo5Bc154volJiNwZ.a4wWhorc1ZvPSazudfEV07M7z/MabmG]u ] @anon-20191002_181700-791:localhost:8800$2b$04$Y0yQzV0YdOw2dZTDK4/Z5u1hePxvXHXMyj2e9pkycfglFn29ZWfBW]u ]@anon-20191002_181700-792:localhost:8800$2b$04$h6Dnv59ianmIdJ7ip/EdpOOApFKQEYxktjG/Yxpi7vsSzpmlaoL/O]u ] @anon-20191002_181700-789:localhost:8800$2b$04$OiWHsAJ1jToXLx.fuS1Go.K3zuQzgTJBY0Kzanhz7zdJgon6943We]u ]@anon-20191002_181700-790:localhost:8800$2b$04$7Nl.S8E4kSzX0I.fKeDB1elHcX788VkjNxp.JjnFJZY/rlyRCvNVS]u ] @anon-20191002_181700-787:localhost:8800$2b$04$3bJtUUAadE.2h5xHckNNl.AcrLFzLtt0XYNVtzHZ.INEo9u4XeG4C]u ]@anon-20191002_181700-788:localhost:8800$2b$04$9zH34ETJchLd2xKhszh72uwllw89cSDBTny7NKo0fUI/VprljuXZu]u ] @anon-20191002_181700-786:localhost:8800$2b$04$ngRXrtEPTJsJfFXzpgPb4eLw5BWYZ/xrclOVYh9uiulz5Wp/RFpma]u ] @anon-20191002_181700-785:localhost:8800$2b$04$z1cqQ0ptoY/G3JFCbe86P.YrzLIqlxlTjh8k9tMrZ2IARrg2AotSy]u ] @anon-20191002_181700-784:localhost:8800$2b$04$tBgzWg6tqMxCJ8BpevGQVOchKzZPF8yc2i6jB6KacdAqPDVqR/.Fa]u ] @anon-20191002_181700-783:localhost:8800$2b$04$ncMQdSrhn9RNXqob7wqMn.9oS18ysnOB9XEKQi210M9qRJRpVmqGO]u ] @anon-20191002_181700-782:localhost:8800$2b$04$AWQQW88w3AeAHE0PR09WG.Y7osxcWYcCbXt5qbM84HUonMx9HaTSW]u~ ] @anon-20191002_181700-781:localhost:8800$2b$04$oZquyldwgcCJGIEm2pIk4OPmXuBAZ3u1havpKhOSkvEU1PYBxiIEq]u} ] @anon-20191002_181700-779:localhost:8800$2b$04$OaSbnsW94PJlWUCx9CP0NOTFO08l0pY9J6wrpTYEGf.jjZqInhpLq]u| ] @anon-20191002_181700-777:localhost:8800$2b$04$/Q.oulNIVsaCg/z0TPUwye/m4V/bpNOj9bd9yi4X5Vf/eC6HpLyYm]u{ ] @anon-20191002_181700-775:localhost:8800$2b$04$3.8TtA0gns6o6P6SJx6Ige0OcDrmv8zP2w1i48jRPqdaQ7HfLdAOS]uz ] @anon-20191002_181700-773:localhost:8800$2b$04$VJiJJLcOC25C4YO/LfB5aOw.upMkXdC7o7w4gnENe6hWZALfrjEbS]uy ]@anon-20191002_181700-774:localhost:8800$2b$04$tCr1WYYdQ9uV5Yb7ampYju3ANeQ8oiWgI2vAkoUqK5Wx7Sab6yH8S]~ux ] @anon-20191002_181700-771:localhost:8800$2b$04$NPzXG8xpugnYygBmtcVS3.IxmtjnsN/dgyR54Fv10lO3Xjp/sLmtS]}uw ]@anon-20191002_181700-772:localhost:8800$2b$04$P7QcTgPhkXybqKgr29qlFO3DFqpCRXwVbZo5DnbQNfY1DPfLqBZyW]}uv ] @anon-20191002_181700-769:localhost:8800$2b$04$h.LYBFZ7cHeYT1c3tEc8t.L5vlvfOF98BAiAKNySkySj2x4KlVHbS]{  g 4 h5i31cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtDWT1CenhHTzgtNVdsKkcKMDAyZnNpZ25hdHVyZSDjSvxHqzmph0yCO_1vgk_snSGesF70_GW2bbwA_mQrowo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFYxOC5GZ0VyblZXbDNKaWwKMDAyZnNpZ25hdHVyZSC1jgN30N9Boz3icKaySX9JmHMm0pJfsNYa46s2uOsF7wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDoua0FWI0szeExRaiNzNVAKMDAyZnNpZ25hdHVyZSAlZU0OUepnnVv9jqbug-sbZ6TWB0bIJ1pHIG11ZfYUwAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGZSSEAwLEVsZko0bm1fZUIKMDAyZnNpZ25hdHVyZSASg4ICU1oWfrrY5sD6GyN0E01_Ey46aRSHRZwqAOoaFAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhtZTthbHozSG11UVh0OXAKMDAyZnNpZ25hdHVyZSA4HF2WBRhJjGQy42KhoURJ_Fx5CUWSqdi8MllqhmvFqwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4wOkx5ZmMuQitWbVU4LFoKMDAyZnNpZ25hdHVyZSCU0_9O6ALCEUu0OKMtSUgn0PKtFCpELylK1hj4uM_J9wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGlnbnVIUU1KX2pLQW1KUlEKMDAyZnNpZ25hdHVyZSAqJ68NBAAlfcO5a-wMVOjM3PT5wL29nhNgIejIMb-yxAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFBEeks6YV8wbDZSNUA6U0QKMDAyZnNpZ25hdHVyZSCVHVIjgXl3ZT7ZZadUskVdAp_4kkf9X3sxP_5MnqH0zAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMwJjNCSnhMeTJoR3RhI2gKMDAyZnNpZ25hdHVyZSDuAvbhp1QxvAykyMSM3khnS3JImXx6o2OaH9aVIZOSZAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGdAVy5KOWssdCxtcVdyd3cKMDAyZnNpZ25hdHVyZSAgraxxc6q5U_7VMbu5yfxGyGqUF06nK-jKqT7xjrhzOgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFDaFB1bS5vcUt-cXFTc1AKMDAyZnNpZ25hdHVyZSBuUwjAdastvQZGSYHyizirOyLuiIQKBqJADs7r5j1Egwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDZaYmY7VzoyaS5hT3UsRUsKMDAyZnNpZ25hdHVyZSCFQhHrZ-LTwiiiDge5GCVdrykrXQfkhmWf_Bbg0OR1Ago  [ $ H1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8Qo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8Vvkswo[1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFMyRVJ6cFAzU2E6cXRwWHAKMDAyZnNpZ25hdHVyZSBU1W9x_JTBwwTpcD_IX15fTQ3Y0SDopL6hcb_DCW6VwAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENxZ20zbHdjQnBfUUdDLnQKMDAyZnNpZ25hdHVyZSBX8PM6qNotR08y1eHoA2Yjdp2MkIjQuN30DKugYVZPBwo>1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDM3TWhtLV55VFlzdX52TlAKMDAyZnNpZ25hdHVyZSB-D0qq-F4VHMzUehUyHc8b4NXxmxoEJE1VMAKiqcw8pgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwoĂ1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3Kyt-PUtOOm1ob1RHaisKMDAyZnNpZ25hdHVyZSAlBBnlC57fM8lXVEpRRv5FvX-rphWgxm5-8v6W58UFSQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc1Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICNHTkNhKkN0WCNRJkxsXzoKMDAyZnNpZ25hdHVyZSCi9F9Q8MmCnJqb2x8wrPSQiYkPM5Qdb9sI3QMCIoDVYwoK1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc0Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICw5R2Z6K3dnS1UyM2xIeFYKMDAyZnNpZ25hdHVyZSCjOM8ISBLAuKSCH3c2Vmddmr1VE2-QdMN2AD2jext6dQo  4 h 6jfd]c@anon-20191002_181700-795:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQo127.0.0.1߂d]c@anon-20191002_181700-797:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgo127.0.0.1d]c@anon-20191002_181700-796:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAo127.0.0.1d]c@anon-20191002_181700-794:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgo127.0.0.1ނd]c@anon-20191002_181700-793:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908Ao127.0.0.1݂d]c@anon-20191002_181700-792:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4Qo127.0.0.1܂d]c@anon-20191002_181700-791:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-Qo127.0.0.1ۂd]c@anon-20191002_181700-790:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwo127.0.0.1ڂd]c@anon-20191002_181700-789:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQo127.0.0.1قd]c@anon-20191002_181700-788:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligo127.0.0.1 }DlN0|^@" n P 4  b DnP2~ (B`$R p4b& DrT 6dF(  b e I -  j N 2 D  u a M 9 % =astest-1-20191002_1817004=anon-20191002_181700-8323=astest-0-20191002_1817002&Oastest-01create-1-20191002_1817001&Oastest-01create-0-20191002_181700/=anon-20191002_181700-831.=anon-20191002_181700-830-=anon-20191002_181700-829,=anon-20191002_181700-828+=anon-20191002_181700-827*=anon-20191002_181700-826)=anon-20191002_181700-825(=anon-20191002_181700-823'=anon-20191002_181700-821&=anon-20191002_181700-822%=anon-20191002_181700-819$=anon-20191002_181700-820#=anon-20191002_181700-818"=anon-20191002_181700-815!=anon-20191002_181700-816 =anon-20191002_181700-813=anon-20191002_181700-814=anon-20191002_181700-812=anon-20191002_181700-811=anon-20191002_181700-809=anon-20191002_181700-810=anon-20191002_181700-807=anon-20191002_181700-808=anon-20191002_181700-805=anon-20191002_181700-806=anon-20191002_181700-803=anon-20191002_181700-804=anon-20191002_181700-801=anon-20191002_181700-802=anon-20191002_181700-799=anon-20191002_181700-800=anon-20191002_181700-797=anon-20191002_181700-798=anon-20191002_181700-795 =anon-20191002_181700-796 =anon-20191002_181700-793 =anon-20191002_181700-794 =anon-20191002_181700-791 =anon-20191002_181700-792=anon-20191002_181700-789=anon-20191002_181700-790=anon-20191002_181700-787=anon-20191002_181700-788=anon-20191002_181700-786=anon-20191002_181700-785=anon-20191002_181700-784=anon-20191002_181700-783=anon-20191002_181700-782=anon-20191002_181700-781!user-upper spyglass!mycooluser+chrtestuser-93- +chrtestuser-92-+chrtestuser-91- +chrtestuser-64- +chrtestuser-63-+chrtestuser-58-+chrtestuser-39-+chrtestuser-34-+chrtestuser-33--chrtestuser-233--chrtestuser-163--chrtestuser-125--chrtestuser-124- -chrtestuser-123- +chrtestuser-10-#cas_user=21D;anon-20191002_181700-99p;anon-20191002_181700-97n;anon-20191002_181700-96o;anon-20191002_181700-95m;anon-20191002_181700-93l;anon-20191002_181700-91j;anon-20191002_181700-90k9anon-20191002_181700-9;anon-20191002_181700-89h;anon-20191002_181700-88i;anon-20191002_181700-87f;anon-20191002_181700-86g;anon-20191002_181700-85d;anon-20191002_181700-84e;anon-20191002_181700-83c;anon-20191002_181700-82b;anon-20191002_181700-81a;anon-20191002_181700-80`9anon-20191002_181700-8;anon-20191002_181700-79_=anon-20191002_181700-779=anon-20191002_181700-777=anon-20191002_181700-775=anon-20191002_181700-774=anon-20191002_181700-773=anon-20191002_181700-772=anon-20191002_181700-771=anon-20191002_181700-770;anon-20191002_181700-77^=anon-20191002_181700-769=anon-20191002_181700-768=anon-20191002_181700-767=anon-20191002_181700-766=anon-20191002_181700-764=anon-20191002_181700-763=anon-20191002_181700-762=anon-20191002_181700-761=anon-20191002_181700-760=anon-20191002_181700-759=anon-20191002_181700-758=anon-20191002_181700-757=anon-20191002_181700-756=anon-20191002_181700-755=anon-20191002_181700-754=anon-20191002_181700-753=anon-20191002_181700-752=anon-20191002_181700-751=anon-20191002_181700-750;anon-20191002_181700-75]=anon-20191002_181700-749=anon-20191002_181700-748=anon-20191002_181700-747 g * T~=ggm]!c@anon-20191002_181700-789:localhost:8800GKBQSBKKFXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQogl]!c@anon-20191002_181700-790:localhost:8800VALGYGSZPAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwogk]!c@anon-20191002_181700-787:localhost:8800ESOZVRSFSTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwogj]!c@anon-20191002_181700-788:localhost:8800JZUHRDQQELMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligogi]!c@anon-20191002_181700-786:localhost:8800WJWBUMRLAIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAogh]!c@anon-20191002_181700-785:localhost:8800TVEQJOAJLIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAogg]!c@anon-20191002_181700-784:localhost:8800SHHMGHRUZHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAogf]!c@anon-20191002_181700-783:localhost:8800CBPSCDUMIWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgoge]!c@anon-20191002_181700-782:localhost:8800CMQAXLTOQCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1gogd]!c@anon-20191002_181700-781:localhost:8800FVUJNXJFVGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50Qogc]!c@anon-20191002_181700-779:localhost:8800OWQMDGTEXWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc3OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVQTHlDPToqZzhfJmRrUk8KMDAyZnNpZ25hdHVyZSCMJEowNlo-KulvyDBaW6JrZw6VqoCy5eH6x06gh7TZmAo u_ I 3   zo|cX?' c]!W+__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800membership{"membership": "join", "content": {}} c]!Y+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800membership{"membership": "leave", "content": {}} c]!W+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800membership{"membership": "join", "content": {}}pc]!#+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-773:localhost:8800"}} c]!W+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800membership{"membership": "join", "content": {}} c]!Y+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800membership{"membership": "leave", "content": {}} c]!W+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800membership{"membership": "join", "content": {}}pc]!#+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-771:localhost:8800"}} c]!W+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800membership{"membership": "join", "content": {}}p c]!#+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-769:localhost:8800"}} c]!W +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800membership{"membership": "join", "content": {}} c]!W +__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800membership{"membership": "join", "content": {}} a]!W +__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800membership{"membership": "join", "content": {}} a]!W +__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800membership{"membership": "join", "content": {}}a]!W +__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800membership{"membership": "join", "content": {}}a]!W+__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800membership{"membership": "join", "content": {}} t\ D ,  peM5:" 4c]!W5+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800membership{"membership": "join", "content": {}} 3c]!W4+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800membership{"membership": "join", "content": {}}p2c]!#3+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-813:localhost:8800"}} 1c]!W2+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800membership{"membership": "join", "content": {}} 0c]!W1+__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800membership{"membership": "join", "content": {}} /c]!W0+__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800membership{"membership": "join", "content": {}}x.c]!3/+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": "Test Group", "avatar_url": null}, "inviter": "@anon-20191002_181700-809:localhost:8800"}} -c]!W.+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800membership{"membership": "join", "content": {}} ,c]!W-+__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800membership{"membership": "join", "content": {}} +c]!W,+__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800membership{"membership": "join", "content": {}} *c]!W++__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800membership{"membership": "join", "content": {}} )c]!W*+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800membership{"membership": "join", "content": {}}p(c]!#)+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-801:localhost:8800"}} 'c]!W(+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800membership{"membership": "join", "content": {}} &c]!W'+__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800membership{"membership": "join", "content": {}} %c]!W&+__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800membership{"membership": "join", "content": {}} $c]!W%+__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800membership{"membership": "join", "content": {}} #c]!W$+__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800membership{"membership": "join", "content": {}} "c]!W#+__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800membership{"membership": "join", "content": {}} !c]!W"+__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800membership{"membership": "join", "content": {}} c]!W!+__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800membership{"membership": "join", "content": {}} c]!W +__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800membership{"membership": "join", "content": {}} c]!W+__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800membership{"membership": "join", "content": {}} 8l D `8Z]c!E@anon-20191002_181700-790:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC4uQnMwenIsUHIqckxKcmkKMDAyZnNpZ25hdHVyZSBJ8J3lE_ODL9phv_5fE-lHdJKBHUgZVjkyskaB5WAZDwoVALGYGSZPA127.0.0.1Perl + Net::Async::HTTP/0.44mY]c!E@anon-20191002_181700-789:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEs7bEQzeFdXX293dDhmWFUKMDAyZnNpZ25hdHVyZSClfBuAQfReizr1AeqZ9T82dRg0aY9ErjpqVf5IEYpOWQoGKBQSBKKFX127.0.0.1Perl + Net::Async::HTTP/0.44mX]c!E@anon-20191002_181700-788:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG5yO2dMS3hnPWpSciNBUi4KMDAyZnNpZ25hdHVyZSCXsX__yxEiTGKq1nf_350t1enBlrbUVHdbF50wIAVligoJZUHRDQQEL127.0.0.1Perl + Net::Async::HTTP/0.44m2W]c!E@anon-20191002_181700-787:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICo2VHRpSWhxenJ2LmFaZUUKMDAyZnNpZ25hdHVyZSAG88vBTMC3h7MZJFmDELI0VKONTpWWc0EyTxHpAasDPwoESOZVRSFST127.0.0.1Perl + Net::Async::HTTP/0.44mܜV]c!E@anon-20191002_181700-786:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEotXjN-aGhWT2QzQVUxOiYKMDAyZnNpZ25hdHVyZSAOBGo_3sjx0V8f4_FBhKRjXl2B_qKvLiPi0XdO31WUcAoWJWBUMRLAI127.0.0.1Perl + Net::Async::HTTP/0.44mU]c!E@anon-20191002_181700-785:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI0dmdHX0ZPO3p2Lj1kTGwKMDAyZnNpZ25hdHVyZSDteTR9k2WukFEAqY-NV43-PN5Ts3H-srmetlKrqNNFHAoTVEQJOAJLI127.0.0.1Perl + Net::Async::HTTP/0.44mT]c!E@anon-20191002_181700-784:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICtjNngrTzA2fkd-OGRmVUMKMDAyZnNpZ25hdHVyZSACALeGgoTCoTT76A-AX3Lng0skraRzpTCS1Dk9W_AFXAoSHHMGHRUZH127.0.0.1Perl + Net::Async::HTTP/0.44moS]c!E@anon-20191002_181700-783:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGM0dVVLSkZtZjIwVXpvMC4KMDAyZnNpZ25hdHVyZSAsjhkf__WPGYVyYetJn8-AFNW9kQTi1nQavca_LXDWqgoCBPSCDUMIW127.0.0.1Perl + Net::Async::HTTP/0.44mͧR]c!E@anon-20191002_181700-782:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENaZXM9T2V3X0p6WlRqdlkKMDAyZnNpZ25hdHVyZSB-mtYkZpKw9g-8kIhEh0DtnW7_IXzne26uS_r6K8Sm1goCMQAXLTOQC127.0.0.1Perl + Net::Async::HTTP/0.44mQ]c!E@anon-20191002_181700-781:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc4MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEg9X3E5YVQycmRFRjdvWTsKMDAyZnNpZ25hdHVyZSDCwT1uJdMdhtZh7Wxkzf7xYsaO7Tony1AHFJubokc50QoFVUJNXJFVG127.0.0.1Perl + Net::Async::HTTP/0.44m7   = q ?sd]c@anon-20191002_181700-807:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-Qo127.0.0.1d]c@anon-20191002_181700-799:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQo127.0.0.1d]c@anon-20191002_181700-806:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAo127.0.0.1d]c@anon-20191002_181700-805:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQo127.0.0.1d]c@anon-20191002_181700-804:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8Vvkswo127.0.0.1d]c@anon-20191002_181700-803:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAo127.0.0.1d]c@anon-20191002_181700-802:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAo127.0.0.1d]c@anon-20191002_181700-801:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAo127.0.0.1d]c@anon-20191002_181700-800:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRago127.0.0.1^Y]@anon-20191002_181700-7:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmcU1lLkppYW04YU1UT1A3CjAwMmZzaWduYXR1cmUgpNgOhprdZww4eaoO0CRQJXj11HWYC1sJvQ1OfPemCXgK127.0.0.1a[a@anon-20191002_181700-79:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZVpzcTBiLHh6bjM0JktrfgowMDJmc2lnbmF0dXJlIFVecQj4SlhKwVrG1GrwDRHCFDewgh0zoh-A3BHuaXJRCg127.0.0.1A i gh5i 4  1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGguVWdBXi1ScHlSLllsamwKMDAyZnNpZ25hdHVyZSCXe17VexoM-gtqv649tfNgna_XMAHPFwKKMME2h8MDzgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE5DazYyQWNCOk9fNkpAfiYKMDAyZnNpZ25hdHVyZSAFGXy1cOsLaChyl9EhMMuW2wPScu0Rfb-FIoIVS7mrmAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IF83K0tJMStVbU1UcWoqX1cKMDAyZnNpZ25hdHVyZSCfuWWpeDwBpv3a5A4etr48dhu87Rbi8tV2NL82vU2xnAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHFGQG93Tl4teFFZblZkK20KMDAyZnNpZ25hdHVyZSDRUHu0QUHqKS6cIEG-R2U3vGAMQv1mKmW4d7QnLbnswQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpFR1BQJkUyVjt1QlZYfjAKMDAyZnNpZ25hdHVyZSAXGRwZXmmMXKx4PG65h0brnmAf0kqAHbQ2W5K7ec9uAAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICN3OV5WSzR6SEsjTGQsS34KMDAyZnNpZ25hdHVyZSDS-10KjhqEZJTWCJ7-8XgOthPvs3I_cnFH3mk8-eU_XQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTczMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBIIyN0RzYqZlFwNGMmdFcKMDAyZnNpZ25hdHVyZSC8q2UGf_d3rU7nRr0UHMEkgktEkdc7oYbPgMZ0DVqeEAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9-aisybTgrRENzOHpVLVIKMDAyZnNpZ25hdHVyZSDAjSbisLPrBfdiO_QnBSx3KJvFIbh5jDrfagBzaHkorAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRago1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTcyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFI4VTRqU2ZfalhENS5BSFcKMDAyZnNpZ25hdHVyZSAc577yjhZE3LrbB2HztQandvBQiUNvnGaqJJK21ExAcQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAo 9r  V :sCv e]]Q=$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o@astest-1-20191002_181700:localhost:8800@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800joinastest-1-20191002_181700Cu e]]Q=$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y@anon-20191002_181700-832:localhost:8800@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800joinanon-20191002_181700-832Ct e]]Q=$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w@astest-0-20191002_181700:localhost:8800@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800joinastest-0-20191002_181700Cs e]]Q=$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8@anon-20191002_181700-832:localhost:8800@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800joinanon-20191002_181700-832Cr e]]Q=$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw@anon-20191002_181700-831:localhost:8800@anon-20191002_181700-831:localhost:8800!TkluVzxeeCbMtbFWWS:localhost:8800joinanon-20191002_181700-831Cq e]]Q=$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc@anon-20191002_181700-797:localhost:8800@anon-20191002_181700-797:localhost:8800!ELBgBaMSIMNkjFSumH:localhost:8800joinanon-20191002_181700-797Cp e]]Q=$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak@anon-20191002_181700-795:localhost:8800@anon-20191002_181700-795:localhost:8800!CKNftKKCaOCVUyYWNY:localhost:8800joinanon-20191002_181700-795Co e]]Q=$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ@anon-20191002_181700-793:localhost:8800@anon-20191002_181700-793:localhost:8800!cvXpMzcxNNhsNttxvt:localhost:8800joinanon-20191002_181700-793Cn e]]Q=$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo@anon-20191002_181700-791:localhost:8800@anon-20191002_181700-791:localhost:8800!jlGSdNttccYxjfLkwW:localhost:8800joinanon-20191002_181700-791Cm e]]Q=$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA@anon-20191002_181700-791:localhost:8800@anon-20191002_181700-791:localhost:8800!ZNIjCvcWhgcwskanjT:localhost:8800joinanon-20191002_181700-791Cl e]]Q=$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew@anon-20191002_181700-789:localhost:8800@anon-20191002_181700-789:localhost:8800!NJdkYMskQwIpIWlWkn:localhost:8800joinanon-20191002_181700-789Ck e]]Q=$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk@anon-20191002_181700-787:localhost:8800@anon-20191002_181700-787:localhost:8800!jGQNGXehugtTvjUGKI:localhost:8800joinanon-20191002_181700-787   *tKeQau$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3827}{"auth_events": ["$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw", "$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc", "$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "prev_events": ["$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw"], "type": "m.room.join_rules", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044046087, "hashes": {"sha256": "WwsJdDIosc+0Wlb3HRCnw6ix1nGNckZ6B+j15C+uOcY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H7aL/Yu+ICJInt8P9otTBUcZxE92alyLn1FX9LMOf9xw48lqFUEeQTiN1iGlMavhky+ilD/30FZ7e7ADWKRWDQ"}}, "unsigned": {"age_ts": 1570044046087}}kJeQac$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3826}{"auth_events": ["$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc", "$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "prev_events": ["$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "type": "m.room.power_levels", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"users": {"@anon-20191002_181700-787:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044045221, "hashes": {"sha256": "hsR7mfiDCqsetPbHSiZvx86Bfp24ZB2pbbnF88kdYIY"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9yoGcYV1AJQMuTYYk/7y4QKNiY+iPqvEw7xCpuVNXZ9OpGojXHk/yVgJL5mYcWXwn1h9OZCOTbQ+lZ0ThbNDAg"}}, "unsigned": {"age_ts": 1570044045221}}vIeQay$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3825}{"auth_events": ["$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc"], "prev_events": ["$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc"], "type": "m.room.member", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-787", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-787:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044044520, "hashes": {"sha256": "vIGO7/fkrLEI50uEo2o/4Bci0I1HBboFPWbpAyeZtqM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "jIGq4FjA8GfXDkBlszus1mD4OVwLh0KtFUx1aaOeO9mKoghIvpfg1wEDGJMPO3uK2k/XdneOcLl0qxkFSnyoDQ"}}, "unsigned": {"age_ts": 1570044044520}}iHeQa_$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3824}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-787:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044042730, "hashes": {"sha256": "6MvQXVXw8jCyFEP5YVMh1yYclXyzzYSknJhDfmcFaGk"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "iq/iq1YYjkB4vewI5ZpQS/p4l9vKmGDV5AF0n9mf2JjW3Sc4ZoIBe6DneONm4WrbRTVh6Xjdv1xVc8igwcaxBA"}}, "unsigned": {"age_ts": 1570044042730}} 4xJd6 ~ R $ l >  Z , < z NV( " r F j-]@astest-1-20191002_181700:localhost:8800w-]@astest-0-20191002_181700:localhost:8800v-]@anon-20191002_181700-832:localhost:8800u-]@anon-20191002_181700-831:localhost:8800t-]@anon-20191002_181700-797:localhost:8800s-]@anon-20191002_181700-795:localhost:8800r-]@anon-20191002_181700-793:localhost:8800q-]@anon-20191002_181700-791:localhost:8800p-]@anon-20191002_181700-789:localhost:8800o+[@anon-20191002_181700-99:localhost:8800.+[@anon-20191002_181700-97:localhost:8800-+[@anon-20191002_181700-95:localhost:8800,+[@anon-20191002_181700-93:localhost:8800++[@anon-20191002_181700-91:localhost:8800*+[@anon-20191002_181700-89:localhost:8800)+[@anon-20191002_181700-87:localhost:8800(+[@anon-20191002_181700-86:localhost:8800'+[@anon-20191002_181700-85:localhost:8800&+[@anon-20191002_181700-84:localhost:8800%+[@anon-20191002_181700-83:localhost:8800$+[@anon-20191002_181700-82:localhost:8800#+[@anon-20191002_181700-81:localhost:8800"+[@anon-20191002_181700-79:localhost:8800!-]@anon-20191002_181700-787:localhost:8800n+[@anon-20191002_181700-77:localhost:8800 -]@anon-20191002_181700-768:localhost:8800m-]@anon-20191002_181700-767:localhost:8800l-]@anon-20191002_181700-763:localhost:8800k-]@anon-20191002_181700-762:localhost:8800j+[@anon-20191002_181700-75:localhost:8800-]@anon-20191002_181700-758:localhost:8800i-]@anon-20191002_181700-757:localhost:8800h-]@anon-20191002_181700-755:localhost:8800g-]@anon-20191002_181700-754:localhost:8800f-]@anon-20191002_181700-752:localhost:8800e-]@anon-20191002_181700-751:localhost:8800d-]@anon-20191002_181700-750:localhost:8800c+[@anon-20191002_181700-74:localhost:8800-]@anon-20191002_181700-747:localhost:8800b-]@anon-20191002_181700-746:localhost:8800a-]@anon-20191002_181700-744:localhost:8800`-]@anon-20191002_181700-743:localhost:8800_-]@anon-20191002_181700-742:localhost:8800^-]@anon-20191002_181700-736:localhost:8800]-]@anon-20191002_181700-735:localhost:8800\-]@anon-20191002_181700-734:localhost:8800[-]@anon-20191002_181700-733:localhost:8800Z-]@anon-20191002_181700-732:localhost:8800Y-]@anon-20191002_181700-731:localhost:8800X-]@anon-20191002_181700-730:localhost:8800W+[@anon-20191002_181700-72:localhost:8829-]@anon-20191002_181700-729:localhost:8800V ,NC 8 - { " p  e ZOD9.|#qf VoeL$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwsha256{[~Q#/JVneL$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIsha256d75HL(tЙxU8VmeL$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4sha256[d eRYZT4&VleL$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8sha256vrKɢON!,XbF6*BgVkeL$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUsha256esCbˠJ4@?ʍ ^!{ɢjVjeL$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUsha256-)3/@{˼:fL"e\gI˻VieL$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMsha256b\T|8֡>!rYQ3nVheL$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQsha256mEܥ׏^="dAxY 7B~VgeL$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEsha256?cd^ @vMG۸hgVfeL$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwsha256C[cpVe6| G>dWbOy,VeeL$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXssha256vi}-#Km.:6P(,{VdeL$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynssha256fp϶eөiz<ܽt^f.8V{VceL$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAsha256"U ' 4wM?PH4wP.VbeL$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zgsha256K&\ZΈOPtj'GVaeL$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcsha256~Cɻ1)e?@բq |tV`eL$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIsha256#M6-L կUXAV_eL$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsosha256ޒ8 +%FG\2jTgLJV^eL$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYsha256=5(8 >ܹ5lʮH‘V]eL$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4sha256jfZIXma,ހ1iV\eL$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Aksha256q]pOyR.O?`eA΅81p V[eL$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYsha256@[vlDaMWA2NȪX<>b֦VZeL$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAsha256xK.f j̥' Z@VYeL$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAsha256*@,1ǻ1bR=zOonJ]OVXeL$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0sha256(KQ̝\DY5KG3 ۤVWeL$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQsha256p1IaVVeL$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Tssha256J8:?y'/ %#f;VUeL$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWposha256ǤƷa'[ !ex\=-ZZVTeL$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4sha256?u]ne~;t "J~w@"fCfVSeL$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUsha256jD gX k//.դoXVReL$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFosha256q>V7 8DZeZVQeL$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgsha256;v>x"DiU-%'cdamX]:hVPeL$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywsha256d$3j {K= 7~ׇ+u*,VOeL$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHksha256N JʵH_}@zYZyVNeL$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94sha256,Q? Ńf $>|;VMeL$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAsha256Cҳ72At67PVLeL$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUsha256˚2ENY~03uI~VKeL$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMsha256>xZS:%WMbDn2m,VJeL$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awsha256UĦeE 1z-lO(MѬVIeL$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5ksha256߀/ PNX.,ǰ%5CVHeL$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewsha256m뜯[&hAs+fTGZuVGeL$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUsha256ǥsC+SBNj}:As32uVFeL$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8gsha256sk9>Cƙ ]+"TWVEeL$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVosha256 |٤&90k2e,lZG3!ZVDeL$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwsha256ű,/LY+Pu4 cl ~z v r n j fb^ZVRNJFweeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800veeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800ueeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800teeQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800seeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800reeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800qeeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800peeQ$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800oeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800neeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800meeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800leeQ$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800keeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800jeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800ieeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800heeQ$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800geeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800feeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800eeeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800deeQ$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800ceeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800beeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800aeeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800`eeQ$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800_eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800^eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800]eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800\eeQ$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800[eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo!jGQNGXehugtTvjUGKI:localhost:8800ZeeQ$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800 #7Uq8 T7  q 8 T  p 7 S p8e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYsha2567e$FyQgVmO5qPwrDXbTnDxIhX0uYWIdu9KghohKp-X2xUAsha256t8e$FxzUC5waNW6wj52-mXoQs5h6igSLTTYLA25QN-6lYmosha256 Z8e$FwZOuavX4r7PBk-zD_Me96vxNSYEgt5TcFl8XVpYo-gsha256$8e$Fu5OisAR3NBW1w1sg6ADUsN4YN2LzB_ukeLxVeJWsKwsha256F8e$Ftm8wL6W6URnG3Ilr1te1Tz98-SYdXS6mO3dYGQMXsksha256i8e$Ft7ic5ewbItgVrcQgdBvjl5SyU69eWSCn5TveXAB1agsha25618e$Fs8DglBZjY45LoPHYYdqyt5iluBrg4IvhXi_VMs47XYsha256i8e$FphomHajErfTlQhxqoQvd7khC_2mrS4YiTqqKp5xeg4sha256y8e$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWwsha2568e$FnMPzP3c4Af2gzb6hXNWCi6aN5brpzVICciybPLQlx8sha256 q8e$FmXmlvejzpNOE22mbg1I2HyRkorj_BLF4h6uRwEZD70sha256s8e$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEsha256 8e$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZgsha2568e$FjF9xM2RJd32FqPsBmBH6CzgzCqzWa1-qJq1A4zxLLUsha256j8e$FfjcqR8d0dFej-7mNchHztqg2q3dqZXTk3Y8od1uUOgsha2568e$FfEfsb03iQj9pPSMkZLT0au7Zx2SfJT0cQ6-8KWhyOIsha2568e$FejJvxxe_JONuj2wdmpYgNfl9g2Gzmqwr41idOmmj7Isha256a8e$FbTNOi_lNqQBkq61zWS8jZYY1t_e601xg5kzCBXgdDMsha256d8e$FWziffE56KpzwPVXCO4ZzQbZBI1FSnC4PhWvYwev3-osha256z8e$FVviywlOClZJJqrWyukANO49JhCHPy061g1Rtc8sE9ksha256D7e$FVmTeGw89hciY_6cZzVF0fFGvxajVd6GF-rjUUR5SxQsha256 8e$FT7O91wQYbiZzDltZ6JdA_NhcyA4_q1g538TJykeVZAsha2568e$FSz6Vm8J9Tm26JAkErmnZhnJmmLJ5hdt4_IArdHoniQsha2568e$FSiM-H1aBh1sCEoNQogTX9VAPQZ1PkjnjINh5lCn8G4sha2568e$FS7UtWHe8aIr04HKfFW2QyjA1yUY7VUNT3dkqBnBeFIsha256I8e$FPq3-D9_3i19mtJinG7JhC3ioFx14b4AHYAR3RdVIr0sha256 8e$FPOvDvOhSlwfqos2hCKjz5bRRJA8P2uChLLi6PY9Dissha2568e$FNtof_w9Hwrd_EGKsBiZ8g4KgGvTf7Y9W7C2VgnX5pwsha256w8e$FNO6Y_g2sAzW_-4KuAQcT41-pPSTMldfRZNYwYpAqR8sha2568e$FNA1lcpCg0Mc9rX_IdqgJxQU26bcuwyff3LsxBw5BXUsha2568e$FMgp9A0Sd7VtI8tmJPf2GquAnYVAspSbMBpul7syWQ4sha2568e$FLm-lBgL73n3XdakxmvY9th9KKuoOv3PuX1dFYZYwzwsha256 8e$FLY3Snr-gucyc6aYs5WWbZaMYNLRnpNMUKrZZeOolxEsha2568e$FL4nKELyHEXunngx7jMTETYvMpqTyn2VmEqoByHKlNMsha256  w kOeQac$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3831}{"auth_events": ["$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU", "$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "prev_events": ["$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "type": "m.room.power_levels", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"users": {"@anon-20191002_181700-789:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044053454, "hashes": {"sha256": "IkEef/hFEYPz64bVgzC3FdKUs+z9XSkvaIAOvz215oQ"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "g69xAWbCit8A28wFpdc54YjSevUzjh2HbHd3393l4fVmSou0mU5d6dGSy5/pFgAbpNH3JJVFoxK7ydxaYdD7Ag"}}, "unsigned": {"age_ts": 1570044053454}}vNeQay$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3830}{"auth_events": ["$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU"], "prev_events": ["$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU"], "type": "m.room.member", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-789", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-789:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044052233, "hashes": {"sha256": "2vdbB52EcunUqMGZq4PgozGrWvSIdHcK0fI/7eQLMxg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "v20qZGIIuXKudwIB9TuVFB/GEaEW2Gyu0hWWIX06qLGl5bp5VhCfpN6ot44RptIvIhAcR1z/HR3GdejmaQiJDQ"}}, "unsigned": {"age_ts": 1570044052233}}iMeQa_$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3829}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-789:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044051001, "hashes": {"sha256": "OWHLjMGFRY+ZjSHSnkaWzxGlkyvbWn4IsKEopTKwwwA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "VpElDPFFlR8hRI+NUzBe0ZwIPuyXdbsIs+6jNe0FIuNTG5cG2d2NtGYQb5ObEcAR+29SuRBEZo8RhWKMp8KVDA"}}, "unsigned": {"age_ts": 1570044051001}}LeQa$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800{"token_id": 757, "stream_ordering": 3828}{"auth_events": ["$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw", "$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc", "$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk"], "prev_events": ["$D_4JfNmkJhU5MIhrMmWilpDy_ruGLPKabFpHMxshsVo"], "type": "m.room.history_visibility", "room_id": "!jGQNGXehugtTvjUGKI:localhost:8800", "sender": "@anon-20191002_181700-787:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044046796, "hashes": {"sha256": "Toh2TXDTfUHjVplhd4J0RCUkg0e6Y52KW8oCR6ZWrXI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "uobf8YdpRvD3nxB8VARGeaN03NYFn79FEID1EutFa/njkxlOn1eVlyhQqw5hBn5pwr2A++g2GVhl+XOK7L95Aw"}}, "unsigned": {"age_ts": 1570044046796}} a} { y w u sqomkigeca~GeeQ$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800~FeeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800~EeeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~DeeQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800~CeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800~BeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~AeeQ$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800~@eeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800~?eeQ$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~>eeQ$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800~=eeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800~<eeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~;eeQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800~:eeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800~9eeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~8eeQ$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800~7eeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800~6eeQ$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~5eeQ$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800~4eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800~3eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~2eeQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800~1eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800~0eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~/eeQ$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k!NJdkYMskQwIpIWlWkn:localhost:8800~.eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew!NJdkYMskQwIpIWlWkn:localhost:8800~-eeQ$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~,eeQ$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU!NJdkYMskQwIpIWlWkn:localhost:8800~+eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOk!jGQNGXehugtTvjUGKI:localhost:8800~*eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$S_sZ_T-jVWVBVysAVjVCen6gvFhp7qElLurNQhRZEbc!jGQNGXehugtTvjUGKI:localhost:8800~)eeQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g$Form7Pnv5sWxLIW5L0z4WZAr6oFQdQO46Qc0C_5jyWw!jGQNGXehugtTvjUGKI:localhost:8800 "&) K T |  :`c!CLt jTQ3 e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE SQ']e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwdRQ' e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.create$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXspQQ? e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibility$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynshPQ/ e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rules$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAjOQ3 e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg NQ']e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcdMQ' e!ELBgBaMSIMNkjFSumH:localhost:8800m.room.create$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIpLQ? e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibility$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsohKQ/ e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rules$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYjJQ3 e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 IQ']e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkdHQ' e !CKNftKKCaOCVUyYWNY:localhost:8800m.room.create$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYpGQ? e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibility$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAhFQ/ e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rules$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAjEQ3 e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 DQ']e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQdCQ' e!cvXpMzcxNNhsNttxvt:localhost:8800m.room.create$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TspBQ? e!jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibility$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpohAQ/ e!jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4j@Q3 e!jlGSdNttccYxjfLkwW:localhost:8800m.room.power_levels$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU ?Q']e!jlGSdNttccYxjfLkwW:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFod>Q' e!jlGSdNttccYxjfLkwW:localhost:8800m.room.create$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgp=Q? e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.history_visibility$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywh<Q/ e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.join_rules$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkj;Q3 e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.power_levels$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 :Q']e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.member@anon-20191002_181700-791:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAd9Q' e!ZNIjCvcWhgcwskanjT:localhost:8800m.room.create$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUp8Q? e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.history_visibility$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMh7Q/ e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.join_rules$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awj6Q3 e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.power_levels$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k 5Q']e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.member@anon-20191002_181700-789:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewd4Q' e!NJdkYMskQwIpIWlWkn:localhost:8800m.room.create$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HUp3Q? e!jGQNGXehugtTvjUGKI:localhost:8800m.room.history_visibility$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g 8G P V  a % q 5 E U e)u9I YH_@ ]@anon-20191002_181700-832:localhost:8800m&\ 9 ]@astest-1-20191002_181700:localhost:8800a&\> ] @astest-0-20191002_181700:localhost:8800m&\X= ]  @astest-1-20191002_181700:localhost:8800m&\V9 ]@anon-20191002_181700-832:localhost:8800a&\9 ]@astest-0-20191002_181700:localhost:8800a&\.~ ? @as-user-1:localhost:8800m&\B} o@astest-01create-1-20191002_181700:localhost:8800a&\C| q@_astest-01create-0-20191002_181700:localhost:8800a&\B{ o@astest-01create-0-20191002_181700:localhost:8800a&\>z ]  @anon-20191002_181700-831:localhost:8800m&\C9y ]@anon-20191002_181700-831:localhost:8800a&\9x ]@anon-20191002_181700-830:localhost:8800a&\9w ]@anon-20191002_181700-829:localhost:8800a&\9v ]@anon-20191002_181700-828:localhost:8800a&\9u ]@anon-20191002_181700-827:localhost:8800a&\9t ]@anon-20191002_181700-826:localhost:8800a&\9s ]@anon-20191002_181700-825:localhost:8800a&\9r ]@anon-20191002_181700-823:localhost:8800a&\9q ]@anon-20191002_181700-821:localhost:8800a&\9p ]@anon-20191002_181700-822:localhost:8800a&\9o ]@anon-20191002_181700-819:localhost:8800a&\9n ]@anon-20191002_181700-820:localhost:8800a&\9m ]@anon-20191002_181700-818:localhost:8800a&\9l ]@anon-20191002_181700-815:localhost:8800a&\9k ]@anon-20191002_181700-816:localhost:8800a&\9j ]@anon-20191002_181700-813:localhost:8800a&\9i ]@anon-20191002_181700-814:localhost:8800a&\9h ]@anon-20191002_181700-812:localhost:8800a&\9g ]@anon-20191002_181700-811:localhost:8800a&\9f ]@anon-20191002_181700-809:localhost:8800a&\9e ]@anon-20191002_181700-810:localhost:8800a&\9d ]@anon-20191002_181700-807:localhost:8800a&\9c ]@anon-20191002_181700-808:localhost:8800a&\9b ]@anon-20191002_181700-805:localhost:8800a&\9a ]@anon-20191002_181700-806:localhost:8800a&\9` ]@anon-20191002_181700-803:localhost:8800a&\9_ ]@anon-20191002_181700-804:localhost:8800a&\9^ ]@anon-20191002_181700-801:localhost:8800a&\9] ]@anon-20191002_181700-802:localhost:8800a&\9\ ]@anon-20191002_181700-799:localhost:8800a&\9[ ]@anon-20191002_181700-800:localhost:8800a&\>Z ]  @anon-20191002_181700-797:localhost:8800m&\C9Y ]@anon-20191002_181700-797:localhost:8800a&\9X ]@anon-20191002_181700-798:localhost:8800a&\>W ]  @anon-20191002_181700-795:localhost:8800m&\C9V ]@anon-20191002_181700-795:localhost:8800a&\9U ]@anon-20191002_181700-796:localhost:8800a&\>T ]  @anon-20191002_181700-793:localhost:8800m&\C9S ]@anon-20191002_181700-793:localhost:8800a&\9R ]@anon-20191002_181700-794:localhost:8800a&\@Q ]@anon-20191002_181700-791:localhost:8800m&\ 9P ]@anon-20191002_181700-791:localhost:8800a&\9O ]@anon-20191002_181700-792:localhost:8800a&\>N ]  @anon-20191002_181700-789:localhost:8800m&\C9M ]@anon-20191002_181700-789:localhost:8800a&\ ]ww}jWC/{gS?+ w c O ; '  s _ K 7 #  o [ G 3   k W C /    w _ G ' -]@astest-1-20191002_181700:localhost:8800 -]@astest-0-20191002_181700:localhost:8800 )localhost:8800 Athis_state_does_not_changeAthis_state_does_not_changeAthis_state_does_not_change1this_state_changes1this_state_changes1this_state_changes)localhost:8800 )localhost:8800 X)localhost:8800 Q)localhost:8800 I)localhost:8800 @)localhost:8800G)localhost:8800&)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800x)localhost:8800R)localhost:8800C)localhost:8800p)localhost:8800d)localhost:8800a)localhost:8800 )localhost:8800 )localhost:8800)localhost:8800)localhost:8800{)localhost:8800 )localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:88008)localhost:88001)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800d)localhost:8800M)localhost:8800)localhost:8800 )localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800{)localhost:8800q)localhost:8800h)localhost:8800^)localhost:8800T)localhost:8800L)localhost:8800D)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800)localhost:8800J)localhost:8800C)localhost:88006)localhost:8800Y Y T B /@random_dude:testW+@bob:matrix.org+@bob:matrix.org g * T~=ggx]!c@anon-20191002_181700-802:localhost:8800NFTDLWJQJRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAogw]!c@anon-20191002_181700-799:localhost:8800LEWHBWNYPQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQogv]!c@anon-20191002_181700-800:localhost:8800PFQNMAUDJCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRagogu]!c@anon-20191002_181700-797:localhost:8800BZMLAVLJHJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgogt]!c@anon-20191002_181700-798:localhost:8800INQDOVATBTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1Aogs]!c@anon-20191002_181700-795:localhost:8800JVASIBBRVUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQogr]!c@anon-20191002_181700-796:localhost:8800TWRMWQHVDQMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAogq]!c@anon-20191002_181700-793:localhost:8800AKRKGRHMWIMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908Aogp]!c@anon-20191002_181700-794:localhost:8800HERKLRVCIJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgogo]!c@anon-20191002_181700-791:localhost:8800WJMTFALHBSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-Qogn]!c@anon-20191002_181700-792:localhost:8800YSFSTXJXHUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4Qo <V \  f  pn(~&6< e'Q  ]$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIm.room.create!ELBgBaMSIMNkjFSumH:localhost:8800m|m}Q@anon-20191002_181700-797:localhost:8800, e?Q ]$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsom.room.history_visibility!CKNftKKCaOCVUyYWNY:localhost:8800mpamsF@anon-20191002_181700-795:localhost:8800$ e/Q ]$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYm.room.join_rules!CKNftKKCaOCVUyYWNY:localhost:8800mmmm@anon-20191002_181700-795:localhost:8800& e3Q ]$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4m.room.power_levels!CKNftKKCaOCVUyYWNY:localhost:8800mj1mkO@anon-20191002_181700-795:localhost:8800 e'Q ]$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Akm.room.member!CKNftKKCaOCVUyYWNY:localhost:8800mfmg@anon-20191002_181700-795:localhost:8800  e'Q  ]$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYm.room.create!CKNftKKCaOCVUyYWNY:localhost:8800mcmc@anon-20191002_181700-795:localhost:8800,e?Q ]$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAm.room.history_visibility!cvXpMzcxNNhsNttxvt:localhost:8800mV<mXt@anon-20191002_181700-793:localhost:8800$e/Q ]$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAm.room.join_rules!cvXpMzcxNNhsNttxvt:localhost:8800mSmTY@anon-20191002_181700-793:localhost:8800&e3Q ]$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0m.room.power_levels!cvXpMzcxNNhsNttxvt:localhost:8800mPmQ@anon-20191002_181700-793:localhost:8800 e'Q ]$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQm.room.member!cvXpMzcxNNhsNttxvt:localhost:8800mLmM@anon-20191002_181700-793:localhost:8800 e'Q  ]$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Tsm.room.create!cvXpMzcxNNhsNttxvt:localhost:8800mHmI@anon-20191002_181700-793:localhost:8800,e?Q ]$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpom.room.history_visibility!jlGSdNttccYxjfLkwW:localhost:8800m=Km?1@anon-20191002_181700-791:localhost:8800$e/Q ]$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4m.room.join_rules!jlGSdNttccYxjfLkwW:localhost:8800m9Rm;+@anon-20191002_181700-791:localhost:8800&e3Q ]$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJUm.room.power_levels!jlGSdNttccYxjfLkwW:localhost:8800m5m6@anon-20191002_181700-791:localhost:8800 e'Q ]$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFom.room.member!jlGSdNttccYxjfLkwW:localhost:8800m3)m3@anon-20191002_181700-791:localhost:8800 e'Q  ]$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIgm.room.create!jlGSdNttccYxjfLkwW:localhost:8800m/m0J@anon-20191002_181700-791:localhost:8800,~e?Q ]$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEywm.room.history_visibility!ZNIjCvcWhgcwskanjT:localhost:8800m*/m,@anon-20191002_181700-791:localhost:8800$}e/Q ]$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHkm.room.join_rules!ZNIjCvcWhgcwskanjT:localhost:8800m'cm(=@anon-20191002_181700-791:localhost:8800&|e3Q ]$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94m.room.power_levels!ZNIjCvcWhgcwskanjT:localhost:8800m#m$@anon-20191002_181700-791:localhost:8800 {e'Q ]$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAm.room.member!ZNIjCvcWhgcwskanjT:localhost:8800m m!Z@anon-20191002_181700-791:localhost:8800z e'Q  ]$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KUm.room.create!ZNIjCvcWhgcwskanjT:localhost:8800mmv@anon-20191002_181700-791:localhost:8800,ye?Q ]$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPMm.room.history_visibility!NJdkYMskQwIpIWlWkn:localhost:8800mm@anon-20191002_181700-789:localhost:8800$xe/Q ]$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0awm.room.join_rules!NJdkYMskQwIpIWlWkn:localhost:8800m m?@anon-20191002_181700-789:localhost:8800&we3Q ]$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5km.room.power_levels!NJdkYMskQwIpIWlWkn:localhost:8800mm @anon-20191002_181700-789:localhost:8800  vSeQay$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3835}{"auth_events": ["$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU"], "prev_events": ["$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU"], "type": "m.room.member", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-791", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-791:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044059888, "hashes": {"sha256": "jPJ5bD6uCbB00PoCjepoXgrY7alF6vOlhjZ/CAP5f8Y"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ieRDNgiVHpxw5UNAORRWSWFu8lidNNO3lUhwTPh1VHqs2gLiqXzftEwzvuBhhEC8EO36BmDe3+ns95MYVVeeDg"}}, "unsigned": {"age_ts": 1570044059888}}iReQa_$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3834}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-791:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044059060, "hashes": {"sha256": "x8mgEHXT1hUlFr75dX6hEPjrI9h2b0oNZuTSncJqbVA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "y/ctGoqTVD7bNFVgb+kp0U+mSZo5yK0A5b79cHtTR3G/BOD/2pnUuiokoqfuz2YfMeFGiWXhupNAdha1gvNMCA"}}, "unsigned": {"age_ts": 1570044059060}}QeQa$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3833}{"auth_events": ["$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k", "$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU", "$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "prev_events": ["$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw"], "type": "m.room.history_visibility", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044055957, "hashes": {"sha256": "Cnco14bKHkHN8megDNTes0AsN9peezZa34MWiP9QUQU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "qbWQs0YMEMEGKw0Ea3BMd0GTRd3uEVh2AedjDiUG/5d3IowKMqdeIwi6/Up/UsoYGN69vgnidLgscEPUSXGaAQ"}}, "unsigned": {"age_ts": 1570044055957}}tPeQau$VYfEpuamZYtFqOoJMXotyffdbMYVB08o702Wo4iD0aw!NJdkYMskQwIpIWlWkn:localhost:8800{"token_id": 759, "stream_ordering": 3832}{"auth_events": ["$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k", "$18el8Yz53nOtQ8z7gCsA01NCx4uKfTpBc5QzMpHh0HU", "$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidew"], "prev_events": ["$34AvDcVQiNL7qU4OqawdCFi6lJ8uLLiix7AlgDWbQ5k"], "type": "m.room.join_rules", "room_id": "!NJdkYMskQwIpIWlWkn:localhost:8800", "sender": "@anon-20191002_181700-789:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044054748, "hashes": {"sha256": "0/wcWaPd910/JKdfj6389yFJsYhkhCPprAW3Ij9b7Ac"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mPLjVnItZZ1g0uYv2MyTyorO9IDuL3wY09JDkGWWxgisQ3f2UYryclrvTqMO+C/+kdFNM6gCc47SQvIoXN05BQ"}}, "unsigned": {"age_ts": 1570044054748}} (X\ ` d  h  l  p t x$|(QeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800QeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800QeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800QeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800QeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800Q eQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800Q eQ$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800Q eQ$PpimGXhaUzolwIxXqRSRTbhiRNhuMm3u0yyA6gLUHPM!NJdkYMskQwIpIWlWkn:localhost:8800Q eQ$mcKd6nNr5Dk-Q8aZDInHXbQrsIqbqNX6GSJU7_-ZV8g!jGQNGXehugtTvjUGKI:localhost:8800QeQ$t93JIWYHCLIie76VGOTxKN2a0pMNDuVF9U4uZ_RsBGo!VNdqhtoDkyMoQdMTtM:localhost:8800QeQ$Fkm6roNMzM-JqO10e7mlHC4NCkhZZPw9Gvh_hIqFyZg!ulbQzxdPXzuvNoqqgU:localhost:8800QeQ$Emn_dPd89dC1QThMko2GAPrLFp4NB45O_4PD-lSlEk4!pTvdDtkgovsIdAdxCm:localhost:8800QeQ$2HOWrX4lfuERgcBHBw-ezwq_PWsulZDHCSxTPsM6qsI!vxEMWYTUdzvLyVZNzJ:localhost:8800QeQ$KHMyD9ShxNLWioE5W2aPve99kztplyDsisegQNJGdoA!CAGaRyRvrohDRBsrWH:localhost:8800QeQ$4_k17JUM2qzaXSF58GZQsgx8MVoRhr65CTTktL8qEvk!hNCwypIzdDZDVmCEfd:localhost:8800QeQ$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQ!eZjhYVNpwdogVDKHCk:localhost:8800QeQ$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8!sBcwyPoXKgnSGVTjNR:localhost:8800Q~eQ$ejMs5_I5mli8_J8gWacSCuq7WZraUR5oSsZ3_a2Njw4!WgXzOXLTeqaGfiDFhL:localhost:8800Q}eQ$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_Lg!LFBhoxJpmBqFrwEzGP:localhost:8800Q|eQ$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMyw!URpLZLuBfVcfHVTBGS:localhost:8800Q{eQ$w0fbV5HoqjwSlzeritlrM0vAl57gv9QP8Tb3VWCMPkk!YaLuQzmJKSMTSFEqjO:localhost:8800QxeQ$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_Aego!cOFSwLSkxZECJMvjjZ:localhost:8800QweQ$_SnIW9GwCI5ZVNHGkVAV8mWjDMGhYK44eosWRzT0jwg!eGEEtFXUXuZDImkeql:localhost:8800QveQ$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8!ZOpRjvUhkWYJBFJZeO:localhost:8800QueQ$_JTxFf12txRuDb6KvF2--EZTTiGRxbxkg19Sfn-2H90!NcJYmIbgjsaKJOzBcs:localhost:8800QteQ$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1E!BPNyKqmwcpGxIbGFZG:localhost:8800QreQ$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrA!ZOwibbprUCQrSJQCrx:localhost:8800QpeQ$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8!qtelAHlSkrqEFmlCqS:localhost:8800QneQ$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urk!biBIcqnGelHvLnpkOu:localhost:8800Q eQ$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800 -}T)}R' } T +  Z /  X -  V +  T )}*Q!aZwMKYDXJRlSKjQNWM:localhost:8800..*Q!aZwMKYDXJRlSKjQNWM:localhost:8800--*Q!aZwMKYDXJRlSKjQNWM:localhost:8800,,*Q!aZwMKYDXJRlSKjQNWM:localhost:8800++*Q!aZwMKYDXJRlSKjQNWM:localhost:8800***Q!aZwMKYDXJRlSKjQNWM:localhost:8800))*Q!aZwMKYDXJRlSKjQNWM:localhost:8800((*Q!aZwMKYDXJRlSKjQNWM:localhost:8800''*Q!aZwMKYDXJRlSKjQNWM:localhost:8800&&*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWvVRVaDflYyyGTOdD:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800*Q!aWbcZNVBalJilCEsdr:localhost:8800(Q!aWJOsiuJONOvjKWEjO:localhost:8800kk(Q!aWJOsiuJONOvjKWEjO:localhost:8800jj(Q!aWJOsiuJONOvjKWEjO:localhost:8800ii(Q!aWJOsiuJONOvjKWEjO:localhost:8800hh(Q!aWJOsiuJONOvjKWEjO:localhost:8800gg(Q!aWJOsiuJONOvjKWEjO:localhost:8800ff*Q!aVxOoyiLLnxmzgLJat:localhost:8800>>*Q!aVxOoyiLLnxmzgLJat:localhost:8800==*Q!aVxOoyiLLnxmzgLJat:localhost:880066*Q!aVxOoyiLLnxmzgLJat:localhost:880055*Q!aVxOoyiLLnxmzgLJat:localhost:880044*Q!aVxOoyiLLnxmzgLJat:localhost:880033*Q!aVxOoyiLLnxmzgLJat:localhost:880022*Q!aVxOoyiLLnxmzgLJat:localhost:880011*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z z*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y y*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x x*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 w w*Q!aSKNKSGXPGoIbSrbEN:localhost:8800 v v*Q!aLxrqpqLkbzyIxGgpk:localhost:8800 +Dd0`, \ ( X $ T P  L |HxD1Me$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o 1Le$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs 1Ke$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8 1Je$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 1Ie$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y 1He$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU 1Ge$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc 1Fe$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w 1Ee$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw 1De$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI 1Ce$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 1Be$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8 1Ae$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU 1@e$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU 1?e$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM 1>e$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ 1=e$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE 1<e$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw 1;e$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs 1:e$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns 19e$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA 18e$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg 17e$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc 16e$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI 15e$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso 14e$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY 13e$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4 12e$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak 11e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY 10e$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA 1/e$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA 1.e$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0 1-e$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ 1,e$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts 1+e$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo 1*e$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 1)e$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU 1(e$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo 1'e$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg 1&e$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw 1%e$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk 1$e$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94 1#e$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA 8l D `8d]c!E@anon-20191002_181700-800:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpsZDpUOFB3aVF2dlZIZmkKMDAyZnNpZ25hdHVyZSAwHwqCzbeWL9Z28tFQtn2K1n5WefIgjuAfRoZur1eRagoPFQNMAUDJC127.0.0.1Perl + Net::Async::HTTP/0.44mc]c!E@anon-20191002_181700-799:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5OTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGI9QCYqSTVFK284bWZScFQKMDAyZnNpZ25hdHVyZSDjZiNV1cpFavwMYNCMiUkwxnVTJnIJQnACBX6bZo7WSQoLEWHBWNYPQ127.0.0.1Perl + Net::Async::HTTP/0.44mob]c!E@anon-20191002_181700-798:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5ODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhpQUhsOFZQUlYuXzBWOzoKMDAyZnNpZ25hdHVyZSC9sIQv5jMknOeKZpgjvmujHmopNMQ4fjATxqmyarZX1AoINQDOVATBT127.0.0.1Perl + Net::Async::HTTP/0.44ma]c!E@anon-20191002_181700-797:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Nzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHZUKlo2aGFIYnV4QnFueUwKMDAyZnNpZ25hdHVyZSDW3uDuA9Fj0_xxiznQ6XBVsMNyCTxXThxt_K1Q_8sdRgoBZMLAVLJHJ127.0.0.1Perl + Net::Async::HTTP/0.44m{ `]c!E@anon-20191002_181700-796:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Njpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDVWeT1oMCx4M2ZYJnl2dU0KMDAyZnNpZ25hdHVyZSBiqNPSbUonQeewehFHdI0HzmGTPD1XsxMekkE2DKBaXAoTWRMWQHVDQ127.0.0.1Perl + Net::Async::HTTP/0.44mw_]c!E@anon-20191002_181700-795:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDhDSHVqQkp0ZXZqYWIjdSwKMDAyZnNpZ25hdHVyZSBv540qXbNpxWpq9tuaxWIGMFdd8u-WeOGhmHDxaPTxPQoJVASIBBRVU127.0.0.1Perl + Net::Async::HTTP/0.44mb%^]c!E@anon-20191002_181700-794:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5NDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFR2QXdvSiwsV1djKlM4USsKMDAyZnNpZ25hdHVyZSCc_yRI0BT3mn05jtmX13_ThcbeTXLBbi2jSoDZMSmVOgoHERKLRVCIJ127.0.0.1Perl + Net::Async::HTTP/0.44m^_]]c!E@anon-20191002_181700-793:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFM0MjVENkNDSGw7Kmk4flEKMDAyZnNpZ25hdHVyZSBQpPM2WSVbg76TWF0deIdjJF3P0SKww2-zvgqoa3908AoAKRKGRHMWI127.0.0.1Perl + Net::Async::HTTP/0.44mE\]c!E@anon-20191002_181700-792:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5Mjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEcmSUlqZmlAJlY2SV9MOWYKMDAyZnNpZ25hdHVyZSDYVRgigfCtC0beqY6UnhJut-ORo7UR0AC0ZZco4TsI4QoYSFSTXJXHU127.0.0.1Perl + Net::Async::HTTP/0.44mB[]c!E@anon-20191002_181700-791:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTc5MTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZ5OU4qOSZKVj1AaEBCSkUKMDAyZnNpZ25hdHVyZSC94-GQUnPqWdblaMNb8RFtTmr8l7QLuIuPE8S9UwfI-QoWJMTFALHBS127.0.0.1Perl + Net::Async::HTTP/0.44m  iWeQa_$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3839}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-791:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044063628, "hashes": {"sha256": "Kcfi3Bi6CCxUYD+f6W0RSWoK6Gd093dH+MMLm2mV1jM"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "xmw7Da20xxbD5q04tllCBsH2on0FNmhjcEzinJUpAQGLD6UqwTb+APBxii2S/WmtEqZigQRhxpV6lRAI7EOoDA"}}, "unsigned": {"age_ts": 1570044063628}}VeQa$85BkJAAzqQTfas8Je676BUs9xA03l-l-14crdRIqEyw!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3838}{"auth_events": ["$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94", "$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU", "$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "prev_events": ["$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk"], "type": "m.room.history_visibility", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044062255, "hashes": {"sha256": "13yIq3v5GGBR/elUz4aenB4BccPl5pjTrk/s8sgjm3s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9Qe7/6kPkZU9SZP2pxvtlPIGotBxRVtw3PkzpGWxDdnMzo4IcrbDEvmwBfWgx9iNy79gnovmAKr1gk/sLEqrAg"}}, "unsigned": {"age_ts": 1570044062255}}tUeQau$nk6_thqRCsACvUqo1cbKtUhf5rjYfd76A0B6WapazHk!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3837}{"auth_events": ["$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94", "$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU", "$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "prev_events": ["$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94"], "type": "m.room.join_rules", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044061539, "hashes": {"sha256": "GwAzFZGvg2tPhlNKc+HLRYUv0gUXKWbZubi3yCiEEK0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "247qEOjikmr6c+0cuZpR7zcfrHY8ifWl7KqQKMgAO+gy4KcWc+oUV5JnWdX1DtLDvqf3m3TAW7T2bq7Wo0QFDg"}}, "unsigned": {"age_ts": 1570044061539}}kTeQac$LMtRrz8JxYPonmYEsMIFIOyCICSPuj6kunyiG6ylO94!ZNIjCvcWhgcwskanjT:localhost:8800{"token_id": 761, "stream_ordering": 3836}{"auth_events": ["$5suaMuNFThigWX795vXEMDP5f3XR7Un0qp6jfvq37KU", "$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "prev_events": ["$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llA"], "type": "m.room.power_levels", "room_id": "!ZNIjCvcWhgcwskanjT:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"users": {"@anon-20191002_181700-791:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044060643, "hashes": {"sha256": "xwp2pbscpSuVPl/1zeqopdVe4mwZ4pioKexmGPi+aDE"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "D9Y4wEtXjADIEihaNW1DmzIw6gJNLCcz6PyEiLDaluMYR4ZnLUun3nVPXfc0UmbGfBSipF2fWBdwJB90CFsxDA"}}, "unsigned": {"age_ts": 1570044060643}}  [eQa$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3843}{"auth_events": ["$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU", "$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg", "$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "prev_events": ["$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4"], "type": "m.room.history_visibility", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044067147, "hashes": {"sha256": "WAnjQpttH5gOuwnzgtjXvRnycbicWcMx5gvZpYFZwDo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6iApY5hfn42eRTxsaIY1EYTKNGHvZty3aF9+Pw44L3gSUVc/MZU6hZs2anrxV7YNeUdR9UaBI1PcRP8j4zy+CQ"}}, "unsigned": {"age_ts": 1570044067147}}tZeQau$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3842}{"auth_events": ["$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU", "$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg", "$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "prev_events": ["$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU"], "type": "m.room.join_rules", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044066130, "hashes": {"sha256": "4UxBFR7nbkPnnKVE1igukXkmutDR1y3u8mLxog4+vO0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ILBOej4iYlDMYIlEt8XMMGHb7qjYe5vZq/9spUAMOMewtIOhdgzP5EVdeYPj4wEkHWM9p2JKfA6F/kUdIG4QDA"}}, "unsigned": {"age_ts": 1570044066130}}kYeQac$3WraROrXGOQJuK5nWAlrqcEvL5PHwi7-1aQPuvtvWJU!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3841}{"auth_events": ["$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg", "$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "prev_events": ["$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo"], "type": "m.room.power_levels", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"users": {"@anon-20191002_181700-791:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044065222, "hashes": {"sha256": "5aiwThfMaUKsYtahd/INSeO+cfNZ+ukTSVDKY0xtT50"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "anjjRHzsEhD6MjP+Q37S3qBiR8wl/+iNdjCFNK3X5SMQzx0mUvqGGx+oD0UQo6dCYxl8BmOCq4KREOVNijoKBA"}}, "unsigned": {"age_ts": 1570044065222}}vXeQay$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFo!jlGSdNttccYxjfLkwW:localhost:8800{"token_id": 761, "stream_ordering": 3840}{"auth_events": ["$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg"], "prev_events": ["$O3Y-qIJ46rUiRGmkhFXI2y0lvI4nY_msZGFtWF06aIg"], "type": "m.room.member", "room_id": "!jlGSdNttccYxjfLkwW:localhost:8800", "sender": "@anon-20191002_181700-791:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-791", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-791:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044064553, "hashes": {"sha256": "UlrPpL5q4hi99jVbV7wVinnBK0KmWeq0Au39Fn6dIw4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SvuDoDWCwEovdyHJyRPwzyX1np0Xj4ozTTRhgqerbqKr81bZWY0geWXm0Ujjy7+w+lNgcGF+xsFNb+IJCfE4AQ"}}, "unsigned": {"age_ts": 1570044064553}} #RM H C > 9 4/*|%w rTKQe !QWLJZmJqjWZjVOjdYF:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4oTJQe !QWLJZmJqjWZjVOjdYF:localhost:8800$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsTIQe !QWLJZmJqjWZjVOjdYF:localhost:8800$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8THQe !QWLJZmJqjWZjVOjdYF:localhost:8800$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624TGQe !QWLJZmJqjWZjVOjdYF:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YTFQe !QWLJZmJqjWZjVOjdYF:localhost:8800$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUTEQe !ZWANpHlizyLrUiVvAm:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wTDQe !ZWANpHlizyLrUiVvAm:localhost:8800$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwTCQe !ZWANpHlizyLrUiVvAm:localhost:8800$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLITBQe !ZWANpHlizyLrUiVvAm:localhost:8800$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4TAQe !ZWANpHlizyLrUiVvAm:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8T@Qe !ZWANpHlizyLrUiVvAm:localhost:8800$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUT?Qe !TkluVzxeeCbMtbFWWS:localhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUT>Qe !TkluVzxeeCbMtbFWWS:localhost:8800$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMT=Qe !TkluVzxeeCbMtbFWWS:localhost:8800$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQT<Qe !TkluVzxeeCbMtbFWWS:localhost:8800$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pET;Qe !TkluVzxeeCbMtbFWWS:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwT:Qe !TkluVzxeeCbMtbFWWS:localhost:8800$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsT9Qe !ELBgBaMSIMNkjFSumH:localhost:8800$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsT8Qe !ELBgBaMSIMNkjFSumH:localhost:8800$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAT7Qe !ELBgBaMSIMNkjFSumH:localhost:8800$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9ZgT6Qe !ELBgBaMSIMNkjFSumH:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcT5Qe !ELBgBaMSIMNkjFSumH:localhost:8800$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQIT4Qe !CKNftKKCaOCVUyYWNY:localhost:8800$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSsoT3Qe !CKNftKKCaOCVUyYWNY:localhost:8800$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfYT2Qe !CKNftKKCaOCVUyYWNY:localhost:8800$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4T1Qe !CKNftKKCaOCVUyYWNY:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkT0Qe !CKNftKKCaOCVUyYWNY:localhost:8800$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qYT/Qe !cvXpMzcxNNhsNttxvt:localhost:8800$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkAT.Qe !cvXpMzcxNNhsNttxvt:localhost:8800$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwAT-Qe !cvXpMzcxNNhsNttxvt:localhost:8800$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0T,Qe !cvXpMzcxNNhsNttxvt:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQT+Qe !cvXpMzcxNNhsNttxvt:localhost:8800$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_TsT*Qe !jlGSdNttccYxjfLkwW:localhost:8800$x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpoT)Qe !jlGSdNttccYxjfLkwW:localhost:8800$P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4 E|u m e ] U MEeeQ$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI$bJfPwksBAEKZIFzRJ_nVUxDm7nYR-G46Zm0pnleA_BE!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So$YrKQdupY3H6T4j_iPeNLXxFIAmimUTTMDWQ6ZRq3NQQ!ijOiudvuzOLNmgNKfG:localhost:8800 eeQ$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE$TB6-obeblJ7wUrazRYIy6SEOOaPdxdC2uEWpPzjH0A4!SrwdtDytJDUBVZOueF:localhost:8800 aeeQ$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vek$LE_JAUZkPNWRw19vts7JfX9xpwIVfFaf60TsqdB1vEA!vAUAIZrCnHTeMGeNuw:localhost:8800eeQ$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUs$jxLEcnxjuTmZZ8nF-95QakQZTHHC5-y_qKB-WmXhexs!SBEprlZiuliFNSfNmz:localhost:8800FeeQ$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg$e7xUg3kI99HanFV2ClW5lqQhNrzTqEqrWBeD0UEgpbQ!mvgUHEsfGqDkPQUvfG:localhost:8800 XeeQ$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ$qifbwMWEW0k0BFmQaN65__GSxoGjSemqj63odPTps-Y!msMfSdLIAvklSSAnci:localhost:8800eeQ$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U$rPRnzL75LcATfi7E3c8AdpTXtlGmF2AYTHa-wvp3B5Y!sAWFpvSUPExZLVcPEd:localhost:8800 eeQ$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs$8-ynwbvnb907OgSPicuHvl7TxlSpr_rUhFEdobHJGsM!VAEDgDJVqmxXZyAlSW:localhost:8800eeQ$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss$kcRxBg_97P7706ruu3MaaWgIra5oL_BK2GwE_LhmWxM!IMiczgkCTjejbnbeyP:localhost:8800geeQ$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw$4wV26nuF_pnxUTudQttK2WCt3maHu7It-YPqGZi8FAg!GwLdUoDplyVUogXDzu:localhost:8800 ԁeeQ$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk$ZDiO75qWLzH2hOCMeRxV_nl-w9h-GKugrDZ0Ckt6h-k!ifQxHmNAcSSGHVMjfi:localhost:8800eeQ$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q$lIFJ0q3YcPAqWOp3RQlc0FMLRaAQ8EhBia_XcP2Ny-E!GgUNbVXspVTpOlaHBl:localhost:8800eeQ$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnU$I-l1Ye6blhMZW_6wZyZdE8c7-u4rsXBnB5PMUK0bLKw!BDASLhdcKfNwxCTCSg:localhost:8800VeeQ$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX0$LfaQ_uSTAGMTOfWKZKM3-_Ldxk5tHO5DTwT3pw5SSXc!ROoilpDjLJfjKfSPIi:localhost:8800 #i(7 e  2 ^ g+4\&)8fi ?eQ']$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800m>eQ? $XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibilitye=eQ/ $Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rulesg<eQ3 $jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels ;eQ']$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800a:eQ' $NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create 9eQ']$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800m8eQ? $e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibilitye7eQ/ $4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rulesg6eQ3 $n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels 5eQ']$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800a4eQ' $ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800m.room.createp3eQ))$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800m2eQ? $8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibilitye1eQ/ $-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rulesg0eQ3 $P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels /eQ']$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800a.eQ' $CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800m.room.createm-eQ? $Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibilitye,eQ/ $IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rulesg+eQ3 $S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels *eQ']$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800a)eQ' $noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800m.room.createm(eQ? $3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800m.room.history_visibilitye'eQ/ $FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.join_rulesg&eQ3 $HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800m.room.power_levels %eQ']$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800m.room.member@anon-20191002_181700-795:localhost:8800a$eQ' $QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800m.room.createm#eQ? $EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.history_visibilitye"eQ/ $6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800m.room.join_rulesg!eQ3 $pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800m.room.power_levels eQ']$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800m.room.member@anon-20191002_181700-793:localhost:8800aeQ' $SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800m.room.createmeQ? $x6TGt6dhJ1sWCoSG8SFlf3hcPazUG-gtuFrnv9XlWpo!jlGSdNttccYxjfLkwW:localhost:8800m.room.history_visibilityeeQ/ $P7vZdV1uZR-ffjt0tAwiSn7Fw8jFd8pA7N4im2ZDZv4!jlGSdNttccYxjfLkwW:localhost:8800m.room.join_rules   *t_eQau$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3847}{"auth_events": ["$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0", "$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts", "$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "prev_events": ["$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0"], "type": "m.room.join_rules", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044072847, "hashes": {"sha256": "imNuUpHJohwpZPeIpk//JBhUyfYFigFk71+9ops0R40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "r4CYiZhul2h0RMmim5u/u6Y/c7H9DsVycomrwkI39Qq7yzWZaK1F81uxt46bVB1m2FlOohBjvTXdSU/oLWH3Bw"}}, "unsigned": {"age_ts": 1570044072847}}k^eQac$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3846}{"auth_events": ["$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts", "$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "prev_events": ["$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "type": "m.room.power_levels", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"users": {"@anon-20191002_181700-793:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044072084, "hashes": {"sha256": "J7BvaKH12YvNsD9vzabrNk+6Ci+hl9ZM3KLwoLRImVI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FqsybKlBdhPfevNzMtCFDwgYu0vbkw7l2pnrAYF+QWHeUXOc9/uxLGjyPFQUramEygExGAFPS6jZcRZcbeuRAw"}}, "unsigned": {"age_ts": 1570044072084}}v]eQay$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3845}{"auth_events": ["$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts"], "prev_events": ["$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts"], "type": "m.room.member", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-793", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-793:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044071145, "hashes": {"sha256": "NnIVtqlDVGFaD3tZ0gDMqDbstZPdLjKaQnvN6Ieoduo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "yRQUZ5ugwQktzZ+Pmw78Ct4tUXgc53J5738cz6oOtIHvAIQiMFt8PbNRPKmcwk4+pBE3/2ODdwjRykBAN2TMCw"}}, "unsigned": {"age_ts": 1570044071145}}i\eQa_$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3844}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-793:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044070059, "hashes": {"sha256": "J+WwIrfRxY7rg0j1zntPsHOrXSMsJkit5jffox3pF+o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Tv5k5dDDrz92lkefPH0yqolUGCEZ0qwwx7jsUyq5VLG6vgc8E2YNBjj2vT/9PoSyKl2H0arTfv2NJNNpfRI5Dg"}}, "unsigned": {"age_ts": 1570044070059}}  w kceQac$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3851}{"auth_events": ["$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY", "$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "prev_events": ["$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "type": "m.room.power_levels", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"users": {"@anon-20191002_181700-795:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044078641, "hashes": {"sha256": "UofzRlygY3uItkn1iMM8Y3dNlwDOseLid1O+A7mZva8"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x2k1l+AiBlSgmueTDUO87BJ+ONvorQFm5YftcKCGAQmFhyzcLdyXGffqJIOQcJmMM1e6gOaL8Q01oOuuoRyYBw"}}, "unsigned": {"age_ts": 1570044078641}}vbeQay$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3850}{"auth_events": ["$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY"], "prev_events": ["$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY"], "type": "m.room.member", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-795", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-795:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044077745, "hashes": {"sha256": "nNc7PSyxTzhhsdu/ah6wtBo7KpCdUMNa4f/Y9dZjF00"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "65QGq60i1nQV+VJ1vJveMD4bqjj8wKzY1/CTMQ9WtZSMTxLpbOp0N26oTHX9PWIlt8+Vhe2lJzVoQUE71nYjDw"}}, "unsigned": {"age_ts": 1570044077745}}iaeQa_$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3849}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-795:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044076953, "hashes": {"sha256": "6iQvXQswcHZZiCfLgOCzGUlhmmeQ7wz6XA8GN+OmPT4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "SsGCxAp/zS2ugzaJEWqUed62/PB36RC2XXPq7IFJ3fD2Kb1UIcQQb1KOIDsIQw6Xp7LB55uYA4oS6GD4VAHzAA"}}, "unsigned": {"age_ts": 1570044076953}}`eQa$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA!cvXpMzcxNNhsNttxvt:localhost:8800{"token_id": 763, "stream_ordering": 3848}{"auth_events": ["$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0", "$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts", "$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ"], "prev_events": ["$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA"], "type": "m.room.history_visibility", "room_id": "!cvXpMzcxNNhsNttxvt:localhost:8800", "sender": "@anon-20191002_181700-793:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044073532, "hashes": {"sha256": "/LuLY6Zob3oF3vznleu2NLv0dqcpwSLoKkoUE3PnWno"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "78thmMgQCn+v5bpHLQzco//91ViJjpB7SVIh3ow2w875kY/yz1P1/jdd4ENM/00HFPx0TVXXV+VmduefajrPAg"}}, "unsigned": {"age_ts": 1570044073532}} a} { y w u sqomkigeca~feeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~eeeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800~deeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800~ceeQ$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~beeQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~aeeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800~`eeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~_eeQ$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800~^eeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800~]eeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~\eeQ$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800~[eeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800~ZeeQ$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~YeeQ$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800~XeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800~WeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~VeeQ$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800~UeeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800~TeeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~SeeQ$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4!CKNftKKCaOCVUyYWNY:localhost:8800~ReeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak!CKNftKKCaOCVUyYWNY:localhost:8800~QeeQ$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~PeeQ$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY!CKNftKKCaOCVUyYWNY:localhost:8800~OeeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800~NeeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800~MeeQ$EpGOeEsSmy5mDb5q8MylsuLc7obAJ8T4l6oX6CDBWkA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800~LeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800~KeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800~JeeQ$6vW0KqFALDHgx7sxYs9SPXr-HrpP42-Q5OtuwkpdTwA$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0!cvXpMzcxNNhsNttxvt:localhost:8800~IeeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQ!cvXpMzcxNNhsNttxvt:localhost:8800~HeeQ$pIsoS7_iUabMnQOu-NZc-0RZNQEbSx3RR38zlgzbpN0$SjgQsqk6FL8_84Z5odj_viewL6b4D4AK4SX5I2b0_Ts!cvXpMzcxNNhsNttxvt:localhost:8800 EJ J  Q  _ } =  )<Q3 !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.power_levels?^Q']!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-447:localhost:8800D^Q']!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.member@anon-20191002_181700-446:localhost:8800>:Q/ !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.join_rulesABQ? !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.history_visibilityB6Q' !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.create=?Q9 !ePtMOPPOgOcBIMNZpn:localhost:8800m.room.canonical_alias@EQ))!ePtMOPPOgOcBIMNZpn:localhost:8800m.room.aliaseslocalhost:8800C<Q3 !eLsrBEnrHolwCNgkFW:localhost:8800m.room.power_levels^Q']!eLsrBEnrHolwCNgkFW:localhost:8800m.room.member@anon-20191002_181700-183:localhost:8800:Q/ !eLsrBEnrHolwCNgkFW:localhost:8800m.room.join_rulesBQ? !eLsrBEnrHolwCNgkFW:localhost:8800m.room.history_visibility6Q' !eLsrBEnrHolwCNgkFW:localhost:8800m.room.create<Q3 !eKrOqiOabJcMgIJjwC:localhost:8800m.room.power_levels^Q']!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800^Q']!eKrOqiOabJcMgIJjwC:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800:Q/ !eKrOqiOabJcMgIJjwC:localhost:8800m.room.join_rulesBQ? !eKrOqiOabJcMgIJjwC:localhost:8800m.room.history_visibility6Q' !eKrOqiOabJcMgIJjwC:localhost:8800m.room.create?Q9 !eKrOqiOabJcMgIJjwC:localhost:8800m.room.canonical_aliasEQ))!eKrOqiOabJcMgIJjwC:localhost:8800m.room.aliaseslocalhost:8800<Q3 !eJPTUgihvSwaOhIkrC:localhost:8800m.room.power_levelsv^Q']!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-212:localhost:8800z^Q']!eJPTUgihvSwaOhIkrC:localhost:8800m.room.member@anon-20191002_181700-211:localhost:8800u:Q/ !eJPTUgihvSwaOhIkrC:localhost:8800m.room.join_ruleswBQ? !eJPTUgihvSwaOhIkrC:localhost:8800m.room.history_visibilityx<Q3 !eJPTUgihvSwaOhIkrC:localhost:8800m.room.guest_accessy  & 6 F f b \b^tz(8u*Q]Q!zScKnCZCFPIIodAiQj:localhost:8800@anon-20191002_181700-659:localhost:8800$1570043566390qTwyJ:localhost:8800joinu)Q]Q!LazKtcHZriKzCvvGwV:localhost:8800@anon-20191002_181700-658:localhost:8800$1570043557383IxQaJ:localhost:8800joinu(Q]Q!lEJUJZxqZPKZetemiR:localhost:8800@anon-20191002_181700-657:localhost:8800$1570043546376YfkfL:localhost:8800joinu'Q]Q!bLWyXaXdvUhdSAooUz:localhost:8800@anon-20191002_181700-656:localhost:8800$1570043539370xCBJr:localhost:8800joinu&Q]Q!YmRuIWixFpaqEeDQLZ:localhost:8800@anon-20191002_181700-655:localhost:8800$1570043534365WVAkx:localhost:8800joinu%Q]Q!bjdLCdBwkKaihRIRFG:localhost:8800@anon-20191002_181700-654:localhost:8800$1570043527359ScxWW:localhost:8800joinu$Q]Q!qzrZzAieCgGSbpKOQR:localhost:8800@anon-20191002_181700-653:localhost:8800$1570043522354IAAap:localhost:8800joinu#Q]Q!qzurjQHmiriwjaUMhO:localhost:8800@anon-20191002_181700-652:localhost:8800$1570043516348vThZG:localhost:8800joinu"Q]Q!TSFcaXDBqrCREHRHxv:localhost:8800@anon-20191002_181700-646:localhost:8800$1570043502342mVJmO:localhost:8800join!Q]e!AOEdqVKPFddrqbKPOL:localhost:8800@anon-20191002_181700-645:localhost:8800$yMq_gZDYJA1hnSCWHac2q203VVX4C7vLTfP48Zj_GDgjoin Q]e!wBBQYEPjQGnoAzDpEu:localhost:8800@anon-20191002_181700-644:localhost:8800$Btd72iKbEiJXkVAIget1U6k5pIZMz5JL9HJFnVh8h88joinuQ]Q!oZGRyBAkNDrEeiAqWL:localhost:8800@anon-20191002_181700-643:localhost:8800$1570043477326hyTqo:localhost:8800joine1]Q!6:localhost:42455@anon-20191002_181700-642:localhost:8800$1570043468324DLhaB:localhost:8800joinQ]e!cRbfhxZdPstEsPGPAu:localhost:8800@anon-20191002_181700-641:localhost:8800$11WhPvhpUAeWTLW4aMSW-OFRRrQkpyD4JXJ2bT8j_rYjoinQ]e!sAWFpvSUPExZLVcPEd:localhost:8800@anon-20191002_181700-640:localhost:8800$XHXXCh9g2nl1oZCBwNBL29gYUefubgC98O8rAEZRvA4joinQ]e!YpcmaMNMzjvtgYtrli:localhost:8800@anon-20191002_181700-639:localhost:8800$Hvn_B5hLk6MMeNbAFj5npWuR5RjvGSSyMJuCPVVAk70joinQ]e!PzoqoNRxeEEqiLyVSV:localhost:8800@anon-20191002_181700-638:localhost:8800$a7AU-KZ2qt17UeJuwrYe2AFrKKlUGhT07kXDE-pgJ3sjoinuQ]Q!uPxXJHJyFQwvpQLZNs:localhost:8800@anon-20191002_181700-637:localhost:8800$1570043426319TNjnu:localhost:8800joinQ]e!UluPYLGXtInKDTjRzp:localhost:8800@anon-20191002_181700-636:localhost:8800$IVBjl_8TN21QogsCWUCuDV4f-PvaDoH6wQizIwZzqYIleaveQ]e!QkkdnzvdrjHaFGkzMt:localhost:8800@anon-20191002_181700-635:localhost:8800$Kf70bh72yqBMlczmPpn5-or5n-WdpMn9vDbRK6ObbB8joinQ]e!DuqHkpTfWCUblSrxQj:localhost:8800@anon-20191002_181700-634:localhost:8800$SyOpi8Z20xqs-UeTmijTNe-aeCtSHPayDmlL3ZH-bDgjoinQ]e!NanhNmCnVVpmZRJrTF:localhost:8800@anon-20191002_181700-633:localhost:8800$9AWCRRpuKxcnP-ZT4-KlnJUaS9LmZ_cRGa4_dxZ3Gtkjoine1]Q!5:localhost:42455@anon-20191002_181700-632:localhost:8800$1570043391316OJaBO:localhost:8800joinuQ]Q!sqkBzbHHJOTNWwynqV:localhost:8800@anon-20191002_181700-628:localhost:8800$1570043383307bhuDV:localhost:8800joinuQ]Q!qInWQPtNQfBFoVzUtP:localhost:8800@anon-20191002_181700-626:localhost:8800$1570043377301OraEa:localhost:8800joinuQ]Q!FZOLkaLbBpaibrbHZx:localhost:8800@anon-20191002_181700-625:localhost:8800$1570043372296yAiBq:localhost:8800joinuQ]Q!QxqzQoEBIZhmzHIGrl:localhost:8800@anon-20191002_181700-624:localhost:8800$1570043367291AEdax:localhost:8800joinuQ]Q!fDISaqNBhlOwherxSt:localhost:8800@anon-20191002_181700-623:localhost:8800$1570043362286KwXMK:localhost:8800joinQ]e!yAfsSyqpJWFnkXQFJL:localhost:8800@anon-20191002_181700-622:localhost:8800$fo1mz4v3faJmCNSrRoUw2HMUbGmfdr73omXedwTDMrUjoinu Q]Q!AYFqrmxwClFQlcTTYq:localhost:8800@anon-20191002_181700-620:localhost:8800$1570043351281XHPOP:localhost:8800joinu Q]Q!pHoEnhQYhwlbJXqKQE:localhost:8800@anon-20191002_181700-619:localhost:8800$1570043345275UDVPY:localhost:8800joine 1]Q!0:localhost:42455@anon-20191002_181700-617:localhost:8800$1570043341273LsXNn:localhost:8800join "D f  5 S q <Znw]@astest-1-20191002_181700:localhost:8800@astest-1-20191002_181700:localhost:8800 astest-1-20191002_181700nv]@astest-0-20191002_181700:localhost:8800@astest-0-20191002_181700:localhost:8800 astest-0-20191002_181700nu]@anon-20191002_181700-832:localhost:8800@anon-20191002_181700-832:localhost:8800 anon-20191002_181700-832nt]@anon-20191002_181700-831:localhost:8800@anon-20191002_181700-831:localhost:8800 anon-20191002_181700-831ns]@anon-20191002_181700-797:localhost:8800@anon-20191002_181700-797:localhost:8800 anon-20191002_181700-797nq]@anon-20191002_181700-793:localhost:8800@anon-20191002_181700-793:localhost:8800 anon-20191002_181700-793np]@anon-20191002_181700-791:localhost:8800@anon-20191002_181700-791:localhost:8800 anon-20191002_181700-791no]@anon-20191002_181700-789:localhost:8800@anon-20191002_181700-789:localhost:8800 anon-20191002_181700-789nn]@anon-20191002_181700-787:localhost:8800@anon-20191002_181700-787:localhost:8800 anon-20191002_181700-787nm]@anon-20191002_181700-768:localhost:8800@anon-20191002_181700-768:localhost:8800 anon-20191002_181700-768nl]@anon-20191002_181700-767:localhost:8800@anon-20191002_181700-767:localhost:8800 anon-20191002_181700-767nk]@anon-20191002_181700-763:localhost:8800@anon-20191002_181700-763:localhost:8800 anon-20191002_181700-763nj]@anon-20191002_181700-762:localhost:8800@anon-20191002_181700-762:localhost:8800 anon-20191002_181700-762ni]@anon-20191002_181700-758:localhost:8800@anon-20191002_181700-758:localhost:8800 anon-20191002_181700-758nh]@anon-20191002_181700-757:localhost:8800@anon-20191002_181700-757:localhost:8800 anon-20191002_181700-757ng]@anon-20191002_181700-755:localhost:8800@anon-20191002_181700-755:localhost:8800 anon-20191002_181700-755jf]@anon-20191002_181700-754:localhost:8800@anon-20191002_181700-754:localhost:8800 FKOCVHIRTCIPSWJBHVGOje]@anon-20191002_181700-752:localhost:8800@anon-20191002_181700-752:localhost:8800 JYNGOISMLXVDWPDRVNCSnd]@anon-20191002_181700-751:localhost:8800@anon-20191002_181700-751:localhost:8800 anon-20191002_181700-751jc]@anon-20191002_181700-750:localhost:8800@anon-20191002_181700-750:localhost:8800 BABSIRRXCUHNIFZHYFMBnb]@anon-20191002_181700-747:localhost:8800@anon-20191002_181700-747:localhost:8800 anon-20191002_181700-747ja]@anon-20191002_181700-746:localhost:8800@anon-20191002_181700-746:localhost:8800 QLDSIOXVCTASBPKYRNHInr]@anon-20191002_181700-795:localhost:8800@anon-20191002_181700-795:localhost:8800 anon-20191002_181700-795  vgeQay$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3855}{"auth_events": ["$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI"], "prev_events": ["$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI"], "type": "m.room.member", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-797", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-797:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044084304, "hashes": {"sha256": "M4qUIXW367PES3bFuQRg50qYx6YS/BA5h15Yyrh39lo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "F6St9pNFaEBWjLCQX+97LZYqmQpkxaWZPOPH1hyhDXdVbvq9DZj+auQYMIl2SNElpgbkeAJQQqv0PMIYyTmhBQ"}}, "unsigned": {"age_ts": 1570044084304}}ifeQa_$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3854}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-797:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044083438, "hashes": {"sha256": "0jxqEB3v0/TSGUCItNRUzc2rNcfEUXfP99ZvbuiiZGg"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "kIf8/uObVREskIf4azWEnDTmORoYzLNf69jnW7JTDXQaXoVQdLeL0iE8aLUKwmQpq/PCmv5zs1/XwqQOuJzCDg"}}, "unsigned": {"age_ts": 1570044083438}}eeQa$3pKVONoNnBQrJUZHjqHK71zcMrIGErRqVGeGBBhMSso!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3853}{"auth_events": ["$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4", "$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY", "$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "prev_events": ["$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY"], "type": "m.room.history_visibility", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044080225, "hashes": {"sha256": "2xWZFwDiePlhpal5H6688sDXV2Uiz2uz0TVGtujiaaU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "O8su4RlOSmrxc1xJZIGX2+SYCVbiDo9u8NSNuT09SS+m+GpIYQ22DKFuj9FdFmA/ZXUBuwNN+d9K27jgHU1JAQ"}}, "unsigned": {"age_ts": 1570044080225}}tdeQau$FT018L4oOP7r0SCr_z7cuTUImGyrt63KruXdSJ3CkfY!CKNftKKCaOCVUyYWNY:localhost:8800{"token_id": 765, "stream_ordering": 3852}{"auth_events": ["$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4", "$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY", "$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7Ak"], "prev_events": ["$HQCcyvtqu9zlZlq_qklYrshtYSzegOy1wA4xg2mvrM4"], "type": "m.room.join_rules", "room_id": "!CKNftKKCaOCVUyYWNY:localhost:8800", "sender": "@anon-20191002_181700-795:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044079367, "hashes": {"sha256": "+scoVrf8FAXCGb7OSpga6AVu+4EJ7x15d92j5bnO7Lc"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "Lgn25CMP5gjc4ZbM+giNXsV+3BjVj+QUOSe4iOD7mxErcRcOEXk9O23fIqkGLSS07IuRywyb4rB6jav4LUbADg"}}, "unsigned": {"age_ts": 1570044079367}} EHf-Ii0Lh/[$I s <  ^ (  B f 6  w H  ] .8]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHOT8]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKUS8]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQERAo!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNTP8]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWAO8]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKSN8]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAXM8]!@anon-20191002_181700-828:localhost:8800VKQEDRMGFLL8]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSNK8]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCKJ8]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCRI8]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJH8]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFDG8]!@anon-20191002_181700-822:localhost:8800CCEPFILJPUF8]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGE8]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCLD8]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOLC8]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPVB6[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOs6[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEr8]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKBA8]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZC?8]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOS@8]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOH>8]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHS=8]!@anon-20191002_181700-810:localhost:8800RESWFULJEC;6[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFq8]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBV<8]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDM98]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJX:8]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVV7)A!@user-upper:localhost:8800XOXAYMRLKG'=!@spyglass:localhost:8800BUNJZHLDRS+A%@mycooluser:localhost:8800my_device_id.K!@chrtestuser-93-:localhost:8800HXQEHKTZDR .K!@chrtestuser-92-:localhost:8800CTWNGYMNFD.K!@chrtestuser-91-:localhost:8800XTTHVJFCAE .K!@chrtestuser-64-:localhost:8800WQBPBXVRII .K!@chrtestuser-63-:localhost:8800DYMSSHFRND.K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS.K!@chrtestuser-39-:localhost:8800HQOBQJZUDV.K!@chrtestuser-34-:localhost:8800JUJQTQDDTH.K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV/M!@chrtestuser-233-:localhost:8800AJJFHKXPHA/M!@chrtestuser-163-:localhost:8800FYFIWVYQAG/M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ/M!@chrtestuser-124-:localhost:8800BIQFYVWLZN /M!@chrtestuser-123-:localhost:8800GABZLTWEEJ .K!@chrtestuser-10-:localhost:8800NPPZGPSUFO*C!@cas_user=21:localhost:8800BIHKGABDWPO7Y%@anon-20191002_181700-9:localhost:8800login_device$5Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQ#7[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMY6[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZ7[!@anon-20191002_181700-96:localhost:8800TASTZEHNVL6[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZT~6[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNB}6[!@anon-20191002_181700-91:localhost:8800UIADKEMPGA{6[!@anon-20191002_181700-90:localhost:8800BJDBLNAUER|3Y@anon-20191002_181700-8:localhost:8800device_2!3Y@anon-20191002_181700-8:localhost:8800device_1"5Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJOD 6[!@anon-20191002_181700-89:localhost:8800OFESILMBJHy6[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDIz6[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZw6[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWx6[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVu6[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENv6[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUt \ Z  j  |64IS %e'Q ]$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4om.room.member!QWLJZmJqjWZjVOjdYF:localhost:8800mLmM"@astest-1-20191002_181700:localhost:8800,$e?Q ]$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsm.room.history_visibility!QWLJZmJqjWZjVOjdYF:localhost:8800mHmI@anon-20191002_181700-832:localhost:8800$#e/Q ]$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8m.room.join_rules!QWLJZmJqjWZjVOjdYF:localhost:8800mE1mF@anon-20191002_181700-832:localhost:8800&"e3Q ]$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624m.room.power_levels!QWLJZmJqjWZjVOjdYF:localhost:8800mBQmC@anon-20191002_181700-832:localhost:8800 !e'Q ]$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Ym.room.member!QWLJZmJqjWZjVOjdYF:localhost:8800m?m@@anon-20191002_181700-832:localhost:8800  e'Q  ]$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUm.room.create!QWLJZmJqjWZjVOjdYF:localhost:8800m<m=@anon-20191002_181700-832:localhost:8800!e)Q ]$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycm.room.message!ZWANpHlizyLrUiVvAm:localhost:8800m7qm7w@astest-0-20191002_181700:localhost:8800 e'Q ]$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wm.room.member!ZWANpHlizyLrUiVvAm:localhost:8800m2 m3,@astest-0-20191002_181700:localhost:8800,e?Q ]$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwm.room.history_visibility!ZWANpHlizyLrUiVvAm:localhost:8800m-Im/@anon-20191002_181700-832:localhost:8800$e/Q ]$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIm.room.join_rules!ZWANpHlizyLrUiVvAm:localhost:8800m*m+&@anon-20191002_181700-832:localhost:8800&e3Q ]$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4m.room.power_levels!ZWANpHlizyLrUiVvAm:localhost:8800m%\m(@anon-20191002_181700-832:localhost:8800 e'Q ]$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8m.room.member!ZWANpHlizyLrUiVvAm:localhost:8800m"Gm"@anon-20191002_181700-832:localhost:8800 e'Q  ]$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUm.room.create!ZWANpHlizyLrUiVvAm:localhost:8800mm @anon-20191002_181700-832:localhost:8800e)Q ?$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUm.room.aliases!TkluVzxeeCbMtbFWWS:localhost:8800m1m@as-user-1:localhost:8800,e?Q ]$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMm.room.history_visibility!TkluVzxeeCbMtbFWWS:localhost:8800m m@anon-20191002_181700-831:localhost:8800$e/Q ]$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQm.room.join_rules!TkluVzxeeCbMtbFWWS:localhost:8800m m @anon-20191002_181700-831:localhost:8800&e3Q ]$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pEm.room.power_levels!TkluVzxeeCbMtbFWWS:localhost:8800mVm@anon-20191002_181700-831:localhost:8800 e'Q ]$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwm.room.member!TkluVzxeeCbMtbFWWS:localhost:8800m~m@anon-20191002_181700-831:localhost:8800 e'Q  ]$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXsm.room.create!TkluVzxeeCbMtbFWWS:localhost:8800m)m@anon-20191002_181700-831:localhost:8800,e?Q ]$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWynsm.room.history_visibility!ELBgBaMSIMNkjFSumH:localhost:8800mm@anon-20191002_181700-797:localhost:8800$e/Q ]$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgAm.room.join_rules!ELBgBaMSIMNkjFSumH:localhost:8800mm@anon-20191002_181700-797:localhost:8800&e3Q ]$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zgm.room.power_levels!ELBgBaMSIMNkjFSumH:localhost:8800mm@anon-20191002_181700-797:localhost:8800 e'Q ]$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcm.room.member!ELBgBaMSIMNkjFSumH:localhost:8800mPm뀽@anon-20191002_181700-797:localhost:8800 o- 8 f  $ LW\ TeQ']$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800joinmSeQ? $XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibilityeReQ/ $Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rulesgQeQ3 $jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels PeQ']$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800joinaOeQ' $NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create NeQ']$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800joinmMeQ? $e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibilityeLeQ/ $4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rulesgKeQ3 $n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels JeQ']$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800joinaIeQ' $ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800m.room.createpHeQ))$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800mGeQ? $8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibilityeFeQ/ $-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rulesgEeQ3 $P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800m.room.power_levels DeQ']$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800m.room.member@anon-20191002_181700-831:localhost:8800joinaCeQ' $CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800m.room.createmBeQ? $Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800m.room.history_visibilityeAeQ/ $IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800m.room.join_rulesg@eQ3 $S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800m.room.power_levels ?eQ']$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc!ELBgBaMSIMNkjFSumH:localhost:8800m.room.member@anon-20191002_181700-797:localhost:8800join  4 h 6jfa[a@anon-20191002_181700-82:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gO1FnT3VYRDg6ZFktbCM7MAowMDJmc2lnbmF0dXJlIMtgVTLtJj1aS3EKgQ-iyCBLpm82DexTIvTvutvTjk4ECg127.0.0.1Dd]c@anon-20191002_181700-829:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQo127.0.0.1d]c@anon-20191002_181700-828:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtZOmJ5Y0BrQV86NX5ZbTAKMDAyZnNpZ25hdHVyZSAVKP_9ut80aKox6QESvRUFw_E8HKAsMRDzBJPjll0F7wo127.0.0.1d]c@anon-20191002_181700-827:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2Bwo127.0.0.1d]c@anon-20191002_181700-826:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgo127.0.0.1d]c@anon-20191002_181700-825:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6go127.0.0.1d]c@anon-20191002_181700-823:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAo127.0.0.1d]c@anon-20191002_181700-822:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32wo127.0.0.1d]c@anon-20191002_181700-821:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAo127.0.0.1d]c@anon-20191002_181700-820:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgo127.0.0.1  ikeQa_$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3859}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-831:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044117033, "hashes": {"sha256": "Zw3usQx6oKr5fuSkPJezspNti7OHUR5n+RaTvXaUGb4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "FYEck54rd2h4sPRXkJsfTW7hOeg9bLMRh8k2PSPsljf5oycZ+NfuVTqMNJO6coPG0t9+1uoQD69kRFlDl2xVCg"}}, "unsigned": {"age_ts": 1570044117033}}jeQa$Zvq333DPtmXc06kG7ASFaXo87dy9A3TMXmYu6ThWyns!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3858}{"auth_events": ["$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg", "$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI", "$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "prev_events": ["$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA"], "type": "m.room.history_visibility", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044086749, "hashes": {"sha256": "DmnlWQdXnqnuq/Yr8gfBiLc7cMe0qD2lfFq8aHOlmK0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "NWVGCXqrSvA92QvakBDGibuxswtvPY9bu/jcwG6+bHj8FOlupAzGHpD43L2u8xylKWexs/nGiAx9jj/HuFBwBg"}}, "unsigned": {"age_ts": 1570044086749}}tieQau$IrKmVb8LJ-Lm084JNHfd7E0_qBUOUN9INJagd8NQLgA!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3857}{"auth_events": ["$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg", "$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI", "$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "prev_events": ["$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg"], "type": "m.room.join_rules", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044086040, "hashes": {"sha256": "sLUibHU6j5RdDw3iF2gYdkrePNGVylcUuV4wm4NqK0E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "6o94BIzAxlF5/KCcH+hwvAKXOGQXydhjGhdQDFFFklDZmr9RYDMLFcBml1CeDlCuP9MMRUEkQsx+aKdcQE98Cg"}}, "unsigned": {"age_ts": 1570044086040}}kheQac$S_uaFqPcJgi5uOgcXLiZWscAzojrTxJQ3XRqJ49H9Zg!ELBgBaMSIMNkjFSumH:localhost:8800{"token_id": 767, "stream_ordering": 3856}{"auth_events": ["$noiVnSPkTe_P7jYtTAzY1a_U7N9VvFj-Qf6l7a2cEQI", "$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "prev_events": ["$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dc"], "type": "m.room.power_levels", "room_id": "!ELBgBaMSIMNkjFSumH:localhost:8800", "sender": "@anon-20191002_181700-797:localhost:8800", "content": {"users": {"@anon-20191002_181700-797:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044084969, "hashes": {"sha256": "TblHQI/CnTOeVDrawJE4Cc6wxu8ZSOaIWeVffrBtjXw"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dLNnRumS1vgdB6fzWyUSF9Roph4YanaPiXnmZsn7mcmlSE/HjbaurqSI6EWls/fex+iAoxdNFjcxLiZ/+vnUDg"}}, "unsigned": {"age_ts": 1570044084969}} IrO8H+ z _ < % t 5  g L )  x a "  q T 9 eNw8H+>'] m.room.member@astest-1-20191002_181700:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-832:localhost:8800 '  m.room.create >'] m.room.member@astest-0-20191002_181700:localhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-832:localhost:8800 '  m.room.create %)) m.room.aliaseslocalhost:8800 "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-831:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-797:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-795:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-793:localhost:8800 '  m.room.create "?  m.room.history_visibility /  m.room.join_rules 3  m.room.power_levels >'] m.room.member@anon-20191002_181700-791:localhost:8800 ~'  m.room.create }"?  m.room.history_visibility |/  m.room.join_rules {3  m.room.power_levels z>'] m.room.member@anon-20191002_181700-791:localhost:8800 y'  m.room.create x"?  m.room.history_visibility w/  m.room.join_rules v3  m.room.power_levels u>'] m.room.member@anon-20191002_181700-789:localhost:8800 t'  m.room.create s"?  m.room.history_visibility r/  m.room.join_rules q3  m.room.power_levels p>'] m.room.member@anon-20191002_181700-787:localhost:8800 o'  m.room.create n"?  m.room.history_visibility m/  m.room.join_rules l3  m.room.power_levels k>'] m.room.member@anon-20191002_181700-768:localhost:8800 j'  m.room.create i"?  m.room.history_visibility h/  m.room.join_rules g3  m.room.power_levels f>'] m.room.member@anon-20191002_181700-767:localhost:8800 e'  m.room.create d"?  m.room.history_visibility c/  m.room.join_rules b3  m.room.power_levels a>'] m.room.member@anon-20191002_181700-763:localhost:8800 `'  m.room.create _"?  m.room.history_visibility ^/  m.room.join_rules ]3  m.room.power_levels \>'] m.room.member@anon-20191002_181700-762:localhost:8800 ['  m.room.create Z = * T~=gg]!c @anon-20191002_181700-809:localhost:8800FIWEAYAHBVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgog]!c @anon-20191002_181700-810:localhost:8800RESWFULJECMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAog]!c @anon-20191002_181700-807:localhost:8800PRZHLWPXJXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-Qog~]!c@anon-20191002_181700-808:localhost:8800JCKLBLRDDMMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQog}]!c@anon-20191002_181700-805:localhost:8800BNRHSJKYRWMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQog|]!c@anon-20191002_181700-806:localhost:8800HOBYWJEDVVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAog{]!c@anon-20191002_181700-803:localhost:8800PRYHWWCHCCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAogz]!c@anon-20191002_181700-804:localhost:8800VJFGXBTXXFMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8Vvkswogy]!c@anon-20191002_181700-801:localhost:8800MRLZAOHJUOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAo 2 0 @ P ` peup(q2<4 ] @astest-1-20191002_181700:localhost:8800]AS-1u3 ]@anon-20191002_181700-832:localhost:8800$2b$04$BfzYUVnEkTIE0kDCYvqCAuCMj4zu/OwMlfot8icDjF9tiuBL7skH6]<2 ] @astest-0-20191002_181700:localhost:8800]AS-1E1 o @astest-01create-1-20191002_181700:localhost:8800]AS-1B0 q @_astest-01create-0-20191002_181700:localhost:8800]E/ o @astest-01create-0-20191002_181700:localhost:8800]AS-1u. ]@anon-20191002_181700-831:localhost:8800$2b$04$cxj0H2ksyxHFN59bIziPK.BGtTfa67z7jwXiBq2U5xqFVGm4W4qYu]u- ]@anon-20191002_181700-830:localhost:8800$2b$04$.HFU8TtoUHoNcnp9FsgdaOE8yk4l2ZbvH/x3ij39e5hGYag8f.eeS]u, ]@anon-20191002_181700-829:localhost:8800$2b$04$BsdbVE5EdzQm6YymlnhuMOLjiSNmCpDaMLORbcpnBVhaJcX3Q46/S]8+ ] @anon-20191002_181700-828:localhost:8800]u* ]@anon-20191002_181700-827:localhost:8800$2b$04$MefZn0kAFjgF4/H8DjiUHOXRwGI02Odg2nn9pJshmUyaxcS1DzwA.]u) ]@anon-20191002_181700-826:localhost:8800$2b$04$qUD1Jq51Wi4JxI134zt5YOewmjw2c2Mdg89A.WZjc3vQMjxYK1o1q]u( ]@anon-20191002_181700-825:localhost:8800$2b$04$vtUMxfuUGyqXlnftlGYsYe4b2rpaNDIU04SqhJ6y618rLjEYbh5vS]u' ] @anon-20191002_181700-823:localhost:8800$2b$04$UwZPC7WnT4t83g.vY3aouOE6fpHMUuVXkgBFt36hUGCp9Butq4ya2]u& ] @anon-20191002_181700-821:localhost:8800$2b$04$mnwKry0XBL4ZmC29jaOINORPwCsEA5K4JtuJZQBI2BOIpYYgaQ6dG]u% ]@anon-20191002_181700-822:localhost:8800$2b$04$bwnJSkwLIIijIKLREVrtOOUiPDm3qhhySh.UZAjVzbGdB4sOkxub.]u$ ] @anon-20191002_181700-819:localhost:8800$2b$04$7S98nFwV5HCzDOOAqV39IOjSec2XljG4igY.1IEaGENsr28N75S22]u# ]@anon-20191002_181700-820:localhost:8800$2b$04$xJUcUkmj4u4e.EztpMzCXuSQE2Y.YVqohic5o84VNCj1rRLs1qT7S]u" ] @anon-20191002_181700-818:localhost:8800$2b$04$8kIgaoMhqDmFfQ0FsoJQneAQfukzojPfVBe475lgdBJWTMMXXPzOi]u! ] @anon-20191002_181700-815:localhost:8800$2b$04$PcXDdcJ/4kxOLrmtwVIvVuvPB.WpVIi.VZ9/3EHOzMWK6bOYhBlXK]u ]@anon-20191002_181700-816:localhost:8800$2b$04$HXAiv0nSq67TfliI2hVf.O.MyQ9ozhxSpWuhDEpVi3k1m1HYrEWA6]u ] @anon-20191002_181700-813:localhost:8800$2b$04$flsl554RdIV1fZkNKstZXettLuYZvMsHcO9b0p.8ZtQbQ6yQaa26O]u ]@anon-20191002_181700-814:localhost:8800$2b$04$G3EGzPvbJiiWMpzWvge1.OV4gvVH/x8jLjbf9xa7We5X3EepS7lGO]u ] @anon-20191002_181700-812:localhost:8800$2b$04$l9Fswza4iUBgGdmEpAu2gOnrRIMYQIGf4CNGj5XO6.JtB1sSADC8K]u ] @anon-20191002_181700-811:localhost:8800$2b$04$s4gBFa3MiVdaHsdtIUDIj.al/3QFdV9xpRlx1QXfvyhMcJbHNWb/C]u ] @anon-20191002_181700-809:localhost:8800$2b$04$r7.bxS8dcmcH/c1uZyB0FezB1xM6eXfkLcCh55WMX9Ov0BQr.xOrW]u ]@anon-20191002_181700-810:localhost:8800$2b$04$14MBipDatVzsJo4zib/G7uyBdGRy5bwTDH52erDhgHrQQeGgeDcH6]u ] @anon-20191002_181700-807:localhost:8800$2b$04$usu9DEXWbAUlxlTVNgDOWOdIhi7Vo2QeUndLlu7GxX.vMKbOD89oG]u ]@anon-20191002_181700-808:localhost:8800$2b$04$Vak.aza6Cmfo2r9ndwgIW.zxnKcu9aRlbkB8hvp3Tzi3rHAv5lv2m]u ] @anon-20191002_181700-805:localhost:8800$2b$04$DrqtQKBl0eptnLGByJx3oeqNUhudPU8DzUbOyAg1aSvgAqZthFDO2] i gh5 4  i1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_Ktwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-Qo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44Fgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4wo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0Qpwo 8l D `8n]c!E@anon-20191002_181700-810:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGtoNiZkX29HckVPZEZAbisKMDAyZnNpZ25hdHVyZSBKWqfqsUwstR7u3XhDaNvQdK8TB8HuAOJz3hlD5GufhAoRESWFULJEC127.0.0.1Perl + Net::Async::HTTP/0.44m m]c!E@anon-20191002_181700-809:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFxU3JFbnY2M0lnXlVmLnIKMDAyZnNpZ25hdHVyZSCdwmPZCONWKClCbel28UKvQy32wPHqNIRtOYtBiPtacgoFIWEAYAHBV127.0.0.1Perl + Net::Async::HTTP/0.44m볳l]c!E@anon-20191002_181700-808:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGROLSZDLWksZE1UaUhkU2UKMDAyZnNpZ25hdHVyZSD-ku6M50Hku8PNUnPgyr8nXS78eLW6nTK7XchKoOFwmQoJCKLBLRDDM127.0.0.1Perl + Net::Async::HTTP/0.44m밯k]c!E@anon-20191002_181700-807:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJ0WmJCTlN0NTZQZEl3UloKMDAyZnNpZ25hdHVyZSCMFrzm9c-Yi6qHE4j4t_5ZzVfNvNNbDa0nxAt6txi_-QoPRZHLWPXJX127.0.0.1Perl + Net::Async::HTTP/0.44m뮆j]c!E@anon-20191002_181700-806:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IExDeEJZJnlEaGFqbWk2VUsKMDAyZnNpZ25hdHVyZSAWq-qj9r6SttGza65pI5k3C3WsGmV8eAN10t6vo2JHHAoHOBYWJEDVV127.0.0.1Perl + Net::Async::HTTP/0.44m몤i]c!E@anon-20191002_181700-805:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBzRDZIRTBPZXVuJlJxOUwKMDAyZnNpZ25hdHVyZSD0fSOLh-8732P_VjjydJOdJIi0UMlMVKrEZLuZcdbQdQoBNRHSJKYRW127.0.0.1Perl + Net::Async::HTTP/0.44mh]c!E@anon-20191002_181700-804:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGpRZTcmYlNXT1U5MUFnayYKMDAyZnNpZ25hdHVyZSASaocC35pEls2smNUVoSyXdG5fNDwqYckFCZ2E8VvkswoVJFGXBTXXF127.0.0.1Perl + Net::Async::HTTP/0.44mJg]c!E@anon-20191002_181700-803:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHA3anZJXjJkNT1TdXhCWF8KMDAyZnNpZ25hdHVyZSA_DrI4nEAqMSUfXXvVeVJYBS7D31NHc7OVG3a3uH4wRAoPRYHWWCHCC127.0.0.1Perl + Net::Async::HTTP/0.44mf]c!E@anon-20191002_181700-802:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IH56Q2U1KjZQV0UyMitNaFIKMDAyZnNpZ25hdHVyZSB4yUSgYflmfmm9wpqmVAPjI3vX8RK7JmYDFL96SrdVYAoNFTDLWJQJR127.0.0.1Perl + Net::Async::HTTP/0.44m.e]c!E@anon-20191002_181700-801:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgwMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEI5aTZ-Q2EzVXNlZE5fUUUKMDAyZnNpZ25hdHVyZSCW5DV_1nbHMkOTE_JPrccI5KnbrPB0_Q8NCjnRkDtimAoMRLZAOHJUO127.0.0.1Perl + Net::Async::HTTP/0.44m뚑 ~z v r n j c_[WSOKGCQ]e!QWLJZmJqjWZjVOjdYF:localhost:8800@anon-20191002_181700-832:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YjoinQ]e!ZWANpHlizyLrUiVvAm:localhost:8800@astest-0-20191002_181700:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wjoinQ]e!ZWANpHlizyLrUiVvAm:localhost:8800@anon-20191002_181700-832:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8joinQ]e!TkluVzxeeCbMtbFWWS:localhost:8800@anon-20191002_181700-831:localhost:8800$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiwjoinQ]e!ELBgBaMSIMNkjFSumH:localhost:8800@anon-20191002_181700-797:localhost:8800$f35Dybsx2sQpqGU_QNWiAODE0nHL7yD3mvp8FK507dcjoinQ]e!CKNftKKCaOCVUyYWNY:localhost:8800@anon-20191002_181700-795:localhost:8800$cV1w8k-88HkYD65SLk8_YNNlQRzOhbihzzjJDzFw7AkjoinQ]e!cvXpMzcxNNhsNttxvt:localhost:8800@anon-20191002_181700-793:localhost:8800$jLzB5HCylsvwF4nmMRTDPM3ktdhuRz6MngRJYaF_hxQjoinQ]e!jlGSdNttccYxjfLkwW:localhost:8800@anon-20191002_181700-791:localhost:8800$vnE-4Bm87eOHVhu7tzeQDAOMOMPDGPpElFplhfzyFFojoin~Q]e!ZNIjCvcWhgcwskanjT:localhost:8800@anon-20191002_181700-791:localhost:8800$5UPIBx7z0rPnoDfMMkGGxNB0NgGXuP4P5x3wjZM3llAjoin}Q]e!NJdkYMskQwIpIWlWkn:localhost:8800@anon-20191002_181700-789:localhost:8800$hm3rnK9bJmhByg4HFRKOof9z2-orvGYTVEdamvKidewjoin|Q]e!jGQNGXehugtTvjUGKI:localhost:8800@anon-20191002_181700-787:localhost:8800$26oU8C0EqwkUQ5ArWoTZk93yaSgUwyHl4XXYr50iGOkjoin{Q]e!VNdqhtoDkyMoQdMTtM:localhost:8800@anon-20191002_181700-768:localhost:8800$018SvnqCKU7IiAfruRFcRjB4FvoFOIt_ia7HyiWyTbwjoinzQ]e!ulbQzxdPXzuvNoqqgU:localhost:8800@anon-20191002_181700-767:localhost:8800$Nu8ohHiYoMx2ICgPIF8SYNMO0Su8Fx-Y7b_EnKQS0BAjoinyQ]e!pTvdDtkgovsIdAdxCm:localhost:8800@anon-20191002_181700-763:localhost:8800$_kl4th4L3bzeFlsg3opikPrc9GNkD-1-SSpLqMxmHWEjoinxQ]e!vxEMWYTUdzvLyVZNzJ:localhost:8800@anon-20191002_181700-762:localhost:8800$EtfMi0dYwq31bUYPtMUl1Gr1b-Sj3Kp7ji8UohKvy1cjoinwQ]e!CAGaRyRvrohDRBsrWH:localhost:8800@anon-20191002_181700-758:localhost:8800$1wNGBzPRcZsmCEzxXuh4sxHdex9PhinT_Ccv6WDWnIkjoinvQ]e!hNCwypIzdDZDVmCEfd:localhost:8800@anon-20191002_181700-757:localhost:8800$OEHMDw92qdX4ijkVcgPy1FN_nH18FSlsJ06dyhnbD08joinuQ]e!eZjhYVNpwdogVDKHCk:localhost:8800@anon-20191002_181700-755:localhost:8800$lqcOPXk7cjSt-76x7sMLnYE2GGZNqP_q8KEw8bIRunQinvitetQ]e!eZjhYVNpwdogVDKHCk:localhost:8800@anon-20191002_181700-754:localhost:8800$-ScApgwD3l0gNHfaYjW8-NFoxot9TKafoJkeRo745-0joinsQ]e!sBcwyPoXKgnSGVTjNR:localhost:8800@anon-20191002_181700-755:localhost:8800$HZuBNh7U-xP3r_2cK74O2BMm5gNSAr6PNLatw411pX8joinrQ]e!sBcwyPoXKgnSGVTjNR:localhost:8800@anon-20191002_181700-754:localhost:8800$WWQhuibuEyp3MPGRzwV8bY7kK4iMd-fwxtIYRNLtiawjoinqQ]e!WgXzOXLTeqaGfiDFhL:localhost:8800@anon-20191002_181700-752:localhost:8800$uNY1ztRayv3LZjzU2-s7BXbfA81jvh05IymPXh-jaxsjoinpQ]e!LFBhoxJpmBqFrwEzGP:localhost:8800@anon-20191002_181700-751:localhost:8800$P042NuL2HVisqEbEg2txhIgpC_kij4Qu53QKZ8FS_LgjoinoQ]e!LFBhoxJpmBqFrwEzGP:localhost:8800@anon-20191002_181700-750:localhost:8800$8zr7v--FPULFpt0V4Yifbv_RqvSvCwwpTJveDsIpvBIjoinnQ]e!URpLZLuBfVcfHVTBGS:localhost:8800@anon-20191002_181700-747:localhost:8800$xg2ODo6_thQ6ieQKYEHQcUKq6DF8NbozbdrY4w6YMywjoinmQ]e!URpLZLuBfVcfHVTBGS:localhost:8800@anon-20191002_181700-746:localhost:8800$RCNWe7PTWmz2as04-33kiJPfKc3uheiirclu7OHsq2IjoinlQ]e!YaLuQzmJKSMTSFEqjO:localhost:8800@anon-20191002_181700-744:localhost:8800$0ztXa48xRRTcERQ-OoINMkGs8TbRXY1-1LqeCv2UWUojoinkQ]e!cOFSwLSkxZECJMvjjZ:localhost:8800@anon-20191002_181700-743:localhost:8800$CN2WMCJrz50U3NdEikL5LQjV0nUMZe6khcabYP_AegojoinjQ]e!cOFSwLSkxZECJMvjjZ:localhost:8800@anon-20191002_181700-742:localhost:8800$gu5QFWugsHPeb4g-tCZIYLFGYhMJPxrU6xHhrGVdqi0joiniQ]e!eGEEtFXUXuZDImkeql:localhost:8800@anon-20191002_181700-736:localhost:8800$DXZYX04c7YkFFbQVW_tjxBzJ004p91zl9sqako9tEmcjoin :>| Y 6 r  K $`:vP*f@| `c] +__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800join{}`c] +__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800join{}`c] +__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800join{}`c] +__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800join{}`c] +__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800join{}`c] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800join{}ac]+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-774:localhost:8800leave{}`c] +__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800join{}ac]+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-772:localhost:8800leave{}`c] +__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800join{}` c]+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800join{}` c] +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800join{}` c] +__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800join{}_ a] +__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800join{}_ a] +__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800join{}_a] +__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800join{}_a] +__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800join{}_a] +__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800join{}_a] +__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800join{}_a] +__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800join{}_a] +__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800join{}_a] +__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800join{}_a] +__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800join{}  D  Z 4 p J.j$`:`3c] +__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:8800join{}`2c] +__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:8800join{}`1c]+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:8800join{}`0c] +__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800join{}`/c] +__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800join{}`.c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800join{}`-c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800join{}`,c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800join{}`'c] +__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800join{}`&c] +__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800join{}`%c] +__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800join{}`$c] +__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800join{}`#c]+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800join{}`"c] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800join{}`!c] +__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800join{}` c] +__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800join{}`c] +__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800join{}`c] +__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800join{}`c] +__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800join{}`c] +__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800join{}`c] +__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800join{}`c] +__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800join{}`c] +__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800join{}`c] +__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800join{}`+c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800join{}`*c] +__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800join{}`)c] +__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800join{}O(c]i+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-810:localhost:8800invite{"profile": {"name": "Test Group", "avatar_url": null}, "inviter": "@anon-20191002_181700-809:localhost:8800"} 2j8l8 l :  QT ^ 4 b 9  h =  l C 4]@astest-1-20191002_181700:localhost:8800m2]@astest-1-20191002_181700:localhost:8800a4]@astest-0-20191002_181700:localhost:8800m2]@astest-0-20191002_181700:localhost:8800a%?@as-user-1:localhost:8800m~;o@astest-01create-1-20191002_181700:localhost:8800a};o@astest-01create-0-20191002_181700:localhost:8800a{%A@user-upper:localhost:8800m#A@user-upper:localhost:8800a!=@spyglass:localhost:8800a %A@mycooluser:localhost:8800m#A@mycooluser:localhost:8800a(K@chrtestuser-93-:localhost:8800a*K@chrtestuser-92-:localhost:8800m(K@chrtestuser-92-:localhost:8800a(K@chrtestuser-91-:localhost:8800a *K@chrtestuser-64-:localhost:8800m(K@chrtestuser-64-:localhost:8800a *K@chrtestuser-63-:localhost:8800m(K@chrtestuser-63-:localhost:8800a*K@chrtestuser-58-:localhost:8800m(K@chrtestuser-58-:localhost:8800a(K@chrtestuser-39-:localhost:8800a*K@chrtestuser-34-:localhost:8800m (K@chrtestuser-34-:localhost:8800a*K@chrtestuser-33-:localhost:8800m (K@chrtestuser-33-:localhost:8800a)M@chrtestuser-233-:localhost:8800a)M@chrtestuser-163-:localhost:8800a)M@chrtestuser-125-:localhost:8800a)M@chrtestuser-124-:localhost:8800a)M@chrtestuser-123-:localhost:8800a(K@chrtestuser-10-:localhost:8800a$C@cas_user=21:localhost:8800a`/Y@anon-20191002_181700-9:localhost:8800a&3[@anon-20191002_181700-99:localhost:8800m1[@anon-20191002_181700-99:localhost:8800a3[@anon-20191002_181700-97:localhost:8800m1[@anon-20191002_181700-97:localhost:8800a3[@anon-20191002_181700-96:localhost:8800m1[@anon-20191002_181700-96:localhost:8800a3[@anon-20191002_181700-95:localhost:8800m1[@anon-20191002_181700-95:localhost:8800a3[@anon-20191002_181700-93:localhost:8800m1[@anon-20191002_181700-93:localhost:8800a3[@anon-20191002_181700-91:localhost:8800m1[@anon-20191002_181700-91:localhost:8800a3[@anon-20191002_181700-90:localhost:8800m1[@anon-20191002_181700-90:localhost:8800a/Y@anon-20191002_181700-8:localhost:8800a%  : t K)d]c@anon-20191002_181700-832:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngo127.0.0.1d]c@anon-20191002_181700-831:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwo127.0.0.1^Y]@anon-20191002_181700-8:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSAmeHpBdFNoS29GLWJPQXNWCjAwMmZzaWduYXR1cmUgkWKVSOO1fR2DNESPCV6hXA5GSXjxlF7Cun-6grAmqrYK127.0.0.1a[a@anon-20191002_181700-89:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gSFZeX2l-X0xfT2JaK3k9YwowMDJmc2lnbmF0dXJlIIjm7K967iTXQU4UPn-LktMm00dvGLLNJUW5iQ5xIQ2oCg127.0.0.1Ja[a@anon-20191002_181700-88:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg4OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gWGRkMyp6YSpiOS1nI2hGVwowMDJmc2lnbmF0dXJlIA8GRSU5kO6L5Ea3DeaYvtm6CN5E3TWYGH8PJOKLHl3KCg127.0.0.1Ka[a@anon-20191002_181700-87:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gUWoxKlg7MTRnclZeSXdlNwowMDJmc2lnbmF0dXJlILA5Hm5du1u9H0vIlcMB3jx4QJcd1KkY30vZvGuTWEn8Cg127.0.0.1Ia[a@anon-20191002_181700-86:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gdFkqUSxxQzt6OlFeRFheQAowMDJmc2lnbmF0dXJlIIvOLNph3L-mgxCu5a3VBqY9vSKkC30Q_a5rbZ6Sa-30Cg127.0.0.1Ha[a@anon-20191002_181700-85:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gNFJEcGFjLEhDLSt4NDBUNgowMDJmc2lnbmF0dXJlIBYFG_03BxLuLLoe86SKIfb_KGIidrF_uYrixkFqUvcNCg127.0.0.1Ga[a@anon-20191002_181700-84:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTg0OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gcS5BTFQqdTVLZm1kMTkxMgowMDJmc2lnbmF0dXJlIFHSGDlETbFU0T97gjTXke3hkR4p05JS8qJ7sTV6Tla3Cg127.0.0.1Fa[a@anon-20191002_181700-83:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQGdpMzc5LG1RWio0cWRlKwowMDJmc2lnbmF0dXJlIKwZNP9bhUbO681MuJAru3vF1FKb7TkGmOiUKq99DyTtCg127.0.0.1E 8l D `8x]c!E@anon-20191002_181700-821:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAoLMJVQYBCFD127.0.0.1Perl + Net::Async::HTTP/0.44mߑw]c!E@anon-20191002_181700-820:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgoLLRZDHKYCL127.0.0.1Perl + Net::Async::HTTP/0.44m^v]c!E@anon-20191002_181700-819:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8QoZSSFHJTFIG127.0.0.1Perl + Net::Async::HTTP/0.44mu]c!E@anon-20191002_181700-818:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgoFQFDWYIMOL127.0.0.1Perl + Net::Async::HTTP/0.44mt]c!E@anon-20191002_181700-816:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4woPQOEGOAQKB127.0.0.1Perl + Net::Async::HTTP/0.44m΃s]c!E@anon-20191002_181700-815:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0QpwoHJUZHQSZPV127.0.0.1Perl + Net::Async::HTTP/0.44mɕr]c!E@anon-20191002_181700-814:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44FgoVHWGFZXPZC127.0.0.1Perl + Net::Async::HTTP/0.44mq]c!E@anon-20191002_181700-813:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgoVHZZXIJGOS127.0.0.1Perl + Net::Async::HTTP/0.44mp]c!E@anon-20191002_181700-812:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQoNTGXHOAHOH127.0.0.1Perl + Net::Async::HTTP/0.44mo]c!E@anon-20191002_181700-811:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_KtwgoHQYXFHPRHS127.0.0.1Perl + Net::Async::HTTP/0.44m@ == * T~gg]!c @anon-20191002_181700-812:localhost:8800NTGXHOAHOHMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IG9odWJJLXc4ZFhSfkY7Z2oKMDAyZnNpZ25hdHVyZSAuClTz_jY__w41omnvMnBVf_jfc0yYaEBL8HLJM7RAGQog]!c @anon-20191002_181700-811:localhost:8800HQYXFHPRHSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IC1BOl8jcnBKZmUyTzFoMlEKMDAyZnNpZ25hdHVyZSCMGiS1Siv_bm_Oe9ByoNAdIBj2UBmIotnDlfv45_Ktwgog ]!c@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IE45U29hRHd3VnJeMzhlX3kKMDAyZnNpZ25hdHVyZSBQ8TWpfvljuUde8ocoSR2IbpgY31FoTiiOYfzd9MtA8Qog ]!c@anon-20191002_181700-820:localhost:8800LLRZDHKYCLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgog]!c@anon-20191002_181700-818:localhost:8800FQFDWYIMOLMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICZBUlhlKkVNZjJFMmpuPV4KMDAyZnNpZ25hdHVyZSB0zRvXyi3307nyBJQwzMr2Kvx3haJ0msH-r4bWviUFbgog]!c@anon-20191002_181700-815:localhost:8800HJUZHQSZPVMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDRoI2VvZTNVZlpuQDp4aTUKMDAyZnNpZ25hdHVyZSDV6cGNYtIKMP4jn8FnwVpr6w5zuXGwJYNE74Akgy0Qpwog]!c@anon-20191002_181700-816:localhost:8800PQOEGOAQKBMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IER3NS1NOHBETy4zcm06QTQKMDAyZnNpZ25hdHVyZSDd8mKE4aCjPqISC1ZJ3CpO3dneWugt2DcTNT5Q2A8f4wog]!c@anon-20191002_181700-813:localhost:8800VHZZXIJGOSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IFZLLSo3Z0FTOTtBSTlVMm8KMDAyZnNpZ25hdHVyZSCRJQJUxcdcr9SiHkYIIVCDf9nzcchYyudXhJ4wWfizwgog]!c@anon-20191002_181700-814:localhost:8800VHWGFZXPZCMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgxNDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IENhd1hnMEcmNSYrVWhSMS4KMDAyZnNpZ25hdHVyZSCvKSmzUIFw8iFTA42gEbhkpQltkKDJ3SCMN8jZ_K44Fgo  QI A 8 - { " p e ZOD9.|#qfX]c@anon-20191002_181700-783:localhost:8800+__anon__-20191002_181700-19:localhost:8800X]c@anon-20191002_181700-782:localhost:8800+__anon__-20191002_181700-18:localhost:8800X]c@anon-20191002_181700-781:localhost:8800+__anon__-20191002_181700-17:localhost:8800X]c@anon-20191002_181700-779:localhost:8800+__anon__-20191002_181700-16:localhost:8800X]c@anon-20191002_181700-777:localhost:8800+__anon__-20191002_181700-15:localhost:8800X]c@anon-20191002_181700-775:localhost:8800+__anon__-20191002_181700-14:localhost:8800X]c@anon-20191002_181700-774:localhost:8800+__anon__-20191002_181700-13:localhost:8800X]c@anon-20191002_181700-773:localhost:8800+__anon__-20191002_181700-13:localhost:8800X]c@anon-20191002_181700-772:localhost:8800+__anon__-20191002_181700-12:localhost:8800X]c@anon-20191002_181700-771:localhost:8800+__anon__-20191002_181700-12:localhost:8800X]c@anon-20191002_181700-770:localhost:8800+__anon__-20191002_181700-11:localhost:8800 X]c@anon-20191002_181700-769:localhost:8800+__anon__-20191002_181700-11:localhost:8800 X]c@anon-20191002_181700-768:localhost:8800+__anon__-20191002_181700-10:localhost:8800 W]a@anon-20191002_181700-767:localhost:8800+__anon__-20191002_181700-9:localhost:8800 W]a@anon-20191002_181700-766:localhost:8800+__anon__-20191002_181700-8:localhost:8800 W]a@anon-20191002_181700-764:localhost:8800+__anon__-20191002_181700-7:localhost:8800W]a@anon-20191002_181700-763:localhost:8800+__anon__-20191002_181700-6:localhost:8800W]a@anon-20191002_181700-762:localhost:8800+__anon__-20191002_181700-5:localhost:8800W]a@anon-20191002_181700-761:localhost:8800+__anon__-20191002_181700-4:localhost:8800W]a@anon-20191002_181700-759:localhost:8800+__anon__-20191002_181700-3:localhost:8800W]a@anon-20191002_181700-758:localhost:8800+__anon__-20191002_181700-2:localhost:8800W]a@anon-20191002_181700-757:localhost:8800+__anon__-20191002_181700-1:localhost:8800V]a @anon-20191002_181700-756:localhost:8800+__anon__-20191002_181700-0:localhost:8800 NC 8 - { " p  e ZOX]c@anon-20191002_181700-823:localhost:8800+__anon__-20191002_181700-42:localhost:88003X]c@anon-20191002_181700-821:localhost:8800+__anon__-20191002_181700-41:localhost:88002X]c@anon-20191002_181700-820:localhost:8800+__anon__-20191002_181700-40:localhost:88001X]c@anon-20191002_181700-819:localhost:8800+__anon__-20191002_181700-40:localhost:88000X]c@anon-20191002_181700-818:localhost:8800+__anon__-20191002_181700-39:localhost:8800/X]c@anon-20191002_181700-816:localhost:8800+__anon__-20191002_181700-38:localhost:8800.X]c@anon-20191002_181700-815:localhost:8800+__anon__-20191002_181700-38:localhost:8800-X]c@anon-20191002_181700-814:localhost:8800+__anon__-20191002_181700-37:localhost:8800,X]c@anon-20191002_181700-813:localhost:8800+__anon__-20191002_181700-37:localhost:8800+X]c@anon-20191002_181700-812:localhost:8800+__anon__-20191002_181700-36:localhost:8800*X]c@anon-20191002_181700-811:localhost:8800+__anon__-20191002_181700-35:localhost:8800)X]c@anon-20191002_181700-810:localhost:8800+__anon__-20191002_181700-34:localhost:8800(X]c@anon-20191002_181700-809:localhost:8800+__anon__-20191002_181700-34:localhost:8800'X]c@anon-20191002_181700-807:localhost:8800+__anon__-20191002_181700-33:localhost:8800&X]c@anon-20191002_181700-805:localhost:8800+__anon__-20191002_181700-32:localhost:8800%X]c@anon-20191002_181700-803:localhost:8800+__anon__-20191002_181700-31:localhost:8800$X]c@anon-20191002_181700-802:localhost:8800+__anon__-20191002_181700-30:localhost:8800#X]c@anon-20191002_181700-801:localhost:8800+__anon__-20191002_181700-30:localhost:8800"X]c@anon-20191002_181700-799:localhost:8800+__anon__-20191002_181700-29:localhost:8800!X]c@anon-20191002_181700-797:localhost:8800+__anon__-20191002_181700-28:localhost:8800 X]c@anon-20191002_181700-795:localhost:8800+__anon__-20191002_181700-27:localhost:8800X]c@anon-20191002_181700-793:localhost:8800+__anon__-20191002_181700-26:localhost:8800X]c@anon-20191002_181700-791:localhost:8800+__anon__-20191002_181700-25:localhost:8800X]c@anon-20191002_181700-789:localhost:8800+__anon__-20191002_181700-24:localhost:8800X]c@anon-20191002_181700-787:localhost:8800+__anon__-20191002_181700-23:localhost:8800X]c@anon-20191002_181700-786:localhost:8800+__anon__-20191002_181700-22:localhost:8800X]c@anon-20191002_181700-785:localhost:8800+__anon__-20191002_181700-21:localhost:8800    i Q ;c]!W<+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:8800membership{"membership": "join", "content": {}} :c]!W;+__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:8800membership{"membership": "join", "content": {}} 9c]!W:+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:8800membership{"membership": "join", "content": {}} 8c]!W9+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800membership{"membership": "join", "content": {}} 7c]!W8+__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800membership{"membership": "join", "content": {}} 6c]!W7+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800membership{"membership": "join", "content": {}}p5c]!#6+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800membership{"membership": "invite", "content": {"profile": {"name": null, "avatar_url": null}, "inviter": "@anon-20191002_181700-815:localhost:8800"}} ,NC 8 , x  j  \ N@2~$pbTFX,c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800X+c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800X*c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800X)c] +__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800X(c] +__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800X'c] +__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800X&c] +__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800X%c] +__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800X$c] +__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800X#c] +__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800X"c] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800X!c] +__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800X c] +__anon__-20191002_181700-29:localhost:8800@anon-20191002_181700-799:localhost:8800Xc] +__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800Xc] +__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800Xc] +__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800Xc] +__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800Xc] +__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800Xc] +__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800Xc] +__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800Xc] +__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800Xc] +__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800Xc] +__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800Xc] +__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800Xc] +__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800Xc] +__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800Xc] +__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800Xc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829Xc] +__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800Xc] +__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800Xc] +__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800X c] +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800X c] +__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800X c] +__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800W a] +__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800W a] +__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800Wa] +__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800Wa] +__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800Wa] +__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800Wa] +__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800Wa] +__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800Wa] +__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800Wa] +__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800Wa] +__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800  L> X3c] +__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:8829X2c] +__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:8800X1c] +__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:8800X0c] +__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:8800X/c] +__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800X.c] +__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800X-c] +__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829 D 8 - { " p eQ ZOD9.|#qfI A Xc]+__anon__-20191002_181700-28:localhost:8800@anon-20191002_181700-797:localhost:8800Xc]+__anon__-20191002_181700-27:localhost:8800@anon-20191002_181700-795:localhost:8800Xc]+__anon__-20191002_181700-26:localhost:8800@anon-20191002_181700-793:localhost:8800Xc]+__anon__-20191002_181700-25:localhost:8800@anon-20191002_181700-791:localhost:8800Xc]+__anon__-20191002_181700-24:localhost:8800@anon-20191002_181700-789:localhost:8800Xc]+__anon__-20191002_181700-23:localhost:8800@anon-20191002_181700-787:localhost:8800Xc]+__anon__-20191002_181700-22:localhost:8800@anon-20191002_181700-786:localhost:8800Xc]+__anon__-20191002_181700-21:localhost:8800@anon-20191002_181700-785:localhost:8800Xc]+__anon__-20191002_181700-20:localhost:8800@anon-20191002_181700-784:localhost:8800Xc]+__anon__-20191002_181700-19:localhost:8800@anon-20191002_181700-783:localhost:8800Xc]+__anon__-20191002_181700-18:localhost:8800@anon-20191002_181700-782:localhost:8800Xc]+__anon__-20191002_181700-17:localhost:8800@anon-20191002_181700-781:localhost:8800Xc]+__anon__-20191002_181700-16:localhost:8800@anon-20191002_181700-779:localhost:8800Xc]+__anon__-20191002_181700-15:localhost:8800@anon-20191002_181700-777:localhost:8800Xc]+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-776:localhost:8829Xc]+__anon__-20191002_181700-14:localhost:8800@anon-20191002_181700-775:localhost:8800Xc]+__anon__-20191002_181700-13:localhost:8800@anon-20191002_181700-773:localhost:8800Xc]+__anon__-20191002_181700-12:localhost:8800@anon-20191002_181700-771:localhost:8800Xc]+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-770:localhost:8800 Xc]+__anon__-20191002_181700-11:localhost:8800@anon-20191002_181700-769:localhost:8800 Xc]+__anon__-20191002_181700-10:localhost:8800@anon-20191002_181700-768:localhost:8800 Wa]+__anon__-20191002_181700-1:localhost:8800@anon-20191002_181700-757:localhost:8800Va] +__anon__-20191002_181700-0:localhost:8800@anon-20191002_181700-756:localhost:8800 OD 9 . | # r W  j bXc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-824:localhost:88293Xc]+__anon__-20191002_181700-42:localhost:8800@anon-20191002_181700-823:localhost:88002Xc]+__anon__-20191002_181700-41:localhost:8800@anon-20191002_181700-821:localhost:88001Xc]+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-820:localhost:88000Xc]+__anon__-20191002_181700-40:localhost:8800@anon-20191002_181700-819:localhost:8800/Wa]+__anon__-20191002_181700-9:localhost:8800@anon-20191002_181700-767:localhost:8800 Wa]+__anon__-20191002_181700-8:localhost:8800@anon-20191002_181700-766:localhost:8800 Wa]+__anon__-20191002_181700-7:localhost:8800@anon-20191002_181700-764:localhost:8800Wa]+__anon__-20191002_181700-6:localhost:8800@anon-20191002_181700-763:localhost:8800Wa]+__anon__-20191002_181700-5:localhost:8800@anon-20191002_181700-762:localhost:8800Wa]+__anon__-20191002_181700-4:localhost:8800@anon-20191002_181700-761:localhost:8800Wa]+__anon__-20191002_181700-3:localhost:8800@anon-20191002_181700-759:localhost:8800Xc]+__anon__-20191002_181700-39:localhost:8800@anon-20191002_181700-818:localhost:8800.Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-817:localhost:8829-Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-816:localhost:8800,Xc]+__anon__-20191002_181700-38:localhost:8800@anon-20191002_181700-815:localhost:8800+Xc]+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-814:localhost:8800*Xc]+__anon__-20191002_181700-37:localhost:8800@anon-20191002_181700-813:localhost:8800)Xc]+__anon__-20191002_181700-36:localhost:8800@anon-20191002_181700-812:localhost:8800(Xc]+__anon__-20191002_181700-35:localhost:8800@anon-20191002_181700-811:localhost:8800'Xc]+__anon__-20191002_181700-34:localhost:8800@anon-20191002_181700-809:localhost:8800&Xc]+__anon__-20191002_181700-33:localhost:8800@anon-20191002_181700-807:localhost:8800%Xc]+__anon__-20191002_181700-32:localhost:8800@anon-20191002_181700-805:localhost:8800$Xc]+__anon__-20191002_181700-31:localhost:8800@anon-20191002_181700-803:localhost:8800#Xc]+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-802:localhost:8800"Xc]+__anon__-20191002_181700-30:localhost:8800@anon-20191002_181700-801:localhost:8800!Wa]+__anon__-20191002_181700-2:localhost:8800@anon-20191002_181700-758:localhost:8800 ih5i 4 g 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2Bwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6go1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32wo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDFqcCxZaitmI0t1NG9URXgKMDAyZnNpZ25hdHVyZSAsFbTcfRS7jFMMRNXNYB-N6qY0XNGnTZl4DwbW6W1JVgo 1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI4bSxaTlJReEJAUThUekoKMDAyZnNpZ25hdHVyZSBtwxrANKPmMKrh9kZ_GnYlwttEipOHV6mneSTCC8eKOwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwo1cMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgo -c( w <  P  d ) x =  Q e*Oy>?8T]!r@astest-1-20191002_181700:localhost:8800OYDJFJVTHO8S]!q@anon-20191002_181700-832:localhost:8800HFTRPYGIKU8R]!p@astest-0-20191002_181700:localhost:8800XUQOQEKIQEBQq!o@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZAPo!n@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNT8O]!m@anon-20191002_181700-831:localhost:8800XNGQHPEIWA8N]!l@anon-20191002_181700-830:localhost:8800ERVCXTVUKS8M]!k@anon-20191002_181700-829:localhost:8800XJTWYRZUAX8L]!j@anon-20191002_181700-828:localhost:8800VKQEDRMGFL8E]!b@anon-20191002_181700-819:localhost:8800ZSSFHJTFIG8D]!a@anon-20191002_181700-820:localhost:8800LLRZDHKYCL8C]!`@anon-20191002_181700-818:localhost:8800FQFDWYIMOL8B]!_@anon-20191002_181700-815:localhost:8800HJUZHQSZPV8A]!^@anon-20191002_181700-816:localhost:8800PQOEGOAQKB8@]!]@anon-20191002_181700-813:localhost:8800VHZZXIJGOS8?]!\@anon-20191002_181700-814:localhost:8800VHWGFZXPZC8>]![@anon-20191002_181700-812:localhost:8800NTGXHOAHOH8=]!Z@anon-20191002_181700-811:localhost:8800HQYXFHPRHS8<]!Y@anon-20191002_181700-809:localhost:8800FIWEAYAHBV8;]!X@anon-20191002_181700-810:localhost:8800RESWFULJEC8:]!W@anon-20191002_181700-807:localhost:8800PRZHLWPXJX89]!V@anon-20191002_181700-808:localhost:8800JCKLBLRDDM88]!U@anon-20191002_181700-805:localhost:8800BNRHSJKYRW87]!T@anon-20191002_181700-806:localhost:8800HOBYWJEDVV86]!S@anon-20191002_181700-803:localhost:8800PRYHWWCHCC85]!R@anon-20191002_181700-804:localhost:8800VJFGXBTXXF84]!Q@anon-20191002_181700-801:localhost:8800MRLZAOHJUO83]!P@anon-20191002_181700-802:localhost:8800NFTDLWJQJR82]!O@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ81]!N@anon-20191002_181700-800:localhost:8800PFQNMAUDJC80]!M@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ8/]!L@anon-20191002_181700-798:localhost:8800INQDOVATBT8.]!K@anon-20191002_181700-795:localhost:8800JVASIBBRVU8-]!J@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ8,]!I@anon-20191002_181700-793:localhost:8800AKRKGRHMWI8+]!H@anon-20191002_181700-794:localhost:8800HERKLRVCIJ8*]!G@anon-20191002_181700-791:localhost:8800WJMTFALHBS8)]!F@anon-20191002_181700-792:localhost:8800YSFSTXJXHU8(]!E@anon-20191002_181700-789:localhost:8800GKBQSBKKFX8K]!h@anon-20191002_181700-827:localhost:8800DCXRWYLYSN8J]!g@anon-20191002_181700-826:localhost:8800NTTIDMFUCK8I]!f@anon-20191002_181700-825:localhost:8800FCBTIUXJCR8H]!e@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJ8G]!d@anon-20191002_181700-821:localhost:8800LMJVQYBCFD8F]!c@anon-20191002_181700-822:localhost:8800CCEPFILJPU 8l D `8]c!E@anon-20191002_181700-832:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngoHFTRPYGIKU127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-831:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwoXNGQHPEIWA127.0.0.1Perl + Net::Async::HTTP/0.44m׃]c!E@anon-20191002_181700-830:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgoERVCXTVUKS127.0.0.1Perl + Net::Async::HTTP/0.44m]c!E@anon-20191002_181700-829:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQoXJTWYRZUAX127.0.0.1Perl + Net::Async::HTTP/0.44m~]c!E@anon-20191002_181700-828:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyODpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDtZOmJ5Y0BrQV86NX5ZbTAKMDAyZnNpZ25hdHVyZSAVKP_9ut80aKox6QESvRUFw_E8HKAsMRDzBJPjll0F7woVKQEDRMGFL127.0.0.1Perl + Net::Async::HTTP/0.44m̃}]c!E@anon-20191002_181700-827:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2BwoDCXRWYLYSN127.0.0.1Perl + Net::Async::HTTP/0.44m|]c!E@anon-20191002_181700-826:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgoNTTIDMFUCK127.0.0.1Perl + Net::Async::HTTP/0.44mf{]c!E@anon-20191002_181700-825:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6goFCBTIUXJCR127.0.0.1Perl + Net::Async::HTTP/0.44m溃z]c!E@anon-20191002_181700-823:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAoZJPRRDUAYJ127.0.0.1Perl + Net::Async::HTTP/0.44mxy]c!E@anon-20191002_181700-822:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32woCCEPFILJPU127.0.0.1Perl + Net::Async::HTTP/0.44m ,$J][$I s <  ` * $ h 8  y J  _ 0 8]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHO8]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKU8]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQEAo!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNT8]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWA8]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKS)A!@user-upper:localhost:8800XOXAYMRLKG'=!@spyglass:localhost:8800BUNJZHLDRS+A%@mycooluser:localhost:8800my_device_id.K!@chrtestuser-93-:localhost:8800HXQEHKTZDR .K!@chrtestuser-92-:localhost:8800CTWNGYMNFD.K!@chrtestuser-91-:localhost:8800XTTHVJFCAE .K!@chrtestuser-64-:localhost:8800WQBPBXVRII .K!@chrtestuser-63-:localhost:8800DYMSSHFRND.K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS.K!@chrtestuser-39-:localhost:8800HQOBQJZUDV.K!@chrtestuser-34-:localhost:8800JUJQTQDDTH.K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV/M!@chrtestuser-233-:localhost:8800AJJFHKXPHA/M!@chrtestuser-163-:localhost:8800FYFIWVYQAG/M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ/M!@chrtestuser-124-:localhost:8800BIQFYVWLZN /M!@chrtestuser-123-:localhost:8800GABZLTWEEJ .K!@chrtestuser-10-:localhost:8800NPPZGPSUFO*C!@cas_user=21:localhost:8800BIHKGABDWPM7Y%@anon-20191002_181700-9:localhost:8800login_device$5Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQ#6[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYx6[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZv6[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLw6[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZTu6[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNBt6[!@anon-20191002_181700-91:localhost:8800UIADKEMPGAr6[!@anon-20191002_181700-90:localhost:8800BJDBLNAUERs3Y@anon-20191002_181700-8:localhost:8800device_2!3Y@anon-20191002_181700-8:localhost:8800device_1"5Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJOD 6[!@anon-20191002_181700-89:localhost:8800OFESILMBJHp6[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDIq6[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZn6[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWo6[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVl6[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENm6[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUk ; T~ *=;~q!} @_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NWNpZCB1c2VyX2lkID0gQF9hc3Rlc3QtMDFjcmVhdGUtMC0yMDE5MTAwMl8xODE3MDA6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBkOEdGK2hUQUl5Rzt3Ums6CjAwMmZzaWduYXR1cmUg-CanMzUXVM_nrXBr1DolihUkhdjrHy2fXncXv2KA26IK|o!{@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNTMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDA0NGNpZCB1c2VyX2lkID0gQGFzdGVzdC0wMWNyZWF0ZS0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDg3Vlk5RURBKk5wVUY1fmUKMDAyZnNpZ25hdHVyZSBnfFubw9NgLkbaicepY-N33O3DczkknCqPfyu2xJSnaQog]!c@anon-20191002_181700-831:localhost:8800XNGQHPEIWAMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGVndXkycjtTeXM1UGY6KyYKMDAyZnNpZ25hdHVyZSAZ0TGIau9F8HmAAkFSxAmxjUw1jVwvDfAxG29KuYHeAwog]!c@anon-20191002_181700-830:localhost:8800ERVCXTVUKSMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJYODc7T1g4dGdYVmN-Zy0KMDAyZnNpZ25hdHVyZSCz6G7vaEjUF7Yes3rIci8UmDdCAmzdL2iTercsZWOxDgog]!c@anon-20191002_181700-829:localhost:8800XJTWYRZUAXMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyOTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICpIU0lTUm4qSkEtSmVrflQKMDAyZnNpZ25hdHVyZSD-ptbaYlfm6JlbFEhntLGxCDZVFQSQkalWbcO36bRCBQog]!c@anon-20191002_181700-825:localhost:8800FCBTIUXJCRMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEBGI19vaExsT2I6LUoseVYKMDAyZnNpZ25hdHVyZSCbG1Hq8fQgikeV3OpQfwX5XwxhcRMrNNUhbS8EhQEE6gog ]!c@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IEJER2E6NTpvWSxyUz1fbUkKMDAyZnNpZ25hdHVyZSAWowMdtwrGxbrMMsyKkvM6jRTwtGMMuBkokm_mnuncpAog ]!c@anon-20191002_181700-821:localhost:8800LMJVQYBCFDMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMTpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGFQUTMsYUhqQmZyVEtqRk4KMDAyZnNpZ25hdHVyZSBzFIdcSjFdF_XY6GAn6Cfh6smmCibfWQ7bt8CZZb8YRAog ]!c@anon-20191002_181700-822:localhost:8800CCEPFILJPUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDBKbVdAI3JWX3A4MDlrUEgKMDAyZnNpZ25hdHVyZSCHr37GrHxHc3zzlFV2UjiC-73QwWpDNFfYfU-qA9S32wog]!c@anon-20191002_181700-827:localhost:8800DCXRWYLYSNMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNzpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IGs3Tk9XPThXLEpnWVJ-OD0KMDAyZnNpZ25hdHVyZSDa1xiulLfCrd629rK2JZ6GyeCzYN0tnlgO1hvtl7G2Bwog]!c@anon-20191002_181700-826:localhost:8800NTTIDMFUCKMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgyNjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHB5fi1WRi1qMnJlVVp3eXUKMDAyZnNpZ25hdHVyZSDibzcBijD3zlOP_Y16eV3Hr-SWp7FL7nRsLbd6Uu4bdgo r : w 8d]c@astest-1-20191002_181700:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgo127.0.0.1a[a@anon-20191002_181700-95:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk1OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gQHZSU2ppUlh4RjdoblBtegowMDJmc2lnbmF0dXJlIJeJJil1G68fHXaIozoJecK8J--l1ll2wqslt6Lk3grgCg127.0.0.1Oa[a@anon-20191002_181700-93:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gS2M3LTlIT2g5N0pGUmU9VQowMDJmc2lnbmF0dXJlIJoQIU71s_d4tsCE96OwhgtKshpJs1pqWYxf-60Oepu6Cg127.0.0.1Na[a@anon-20191002_181700-91:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTkxOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gZUZIbTFMOTYjRnY0aC40cgowMDJmc2lnbmF0dXJlIJO2qss018LokoAVy2zYHvXGCOkO55sT-Tz1Uy1Cd0uFCg127.0.0.1L==9 @spyglass:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAyYmNpZCB1c2VyX2lkID0gQHNweWdsYXNzOmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gaWsmO3JYTTc6T3I2KlFRYwowMDJmc2lnbmF0dXJlID-2__U7Frda4TNB9EdexS6xpsQkAUr33DfTzkFmVnOOCg127.0.0.1^Y]@anon-20191002_181700-9:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzOWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk6bG9jYWxob3N0Ojg4MDAKMDAxNmNpZCB0eXBlID0gYWNjZXNzCjAwMjFjaWQgbm9uY2UgPSBzYUdTQDpTKmJSMmJaUGJJCjAwMmZzaWduYXR1cmUgWDFAfkOAG9zzziZxa6uptuNosNXNeSB38pO-GTo6bGsK127.0.0.1a[a@anon-20191002_181700-99:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk5OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gbyMzcEJtcHZpXnQqTU1YbgowMDJmc2lnbmF0dXJlIIhZvQTHXu_i32lEoe2dP0R2u7_a-9HksDa0RJCQICINCg127.0.0.1Ra[a@anon-20191002_181700-97:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk3OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gMDhxOzBxb2hKZnJRLjpOcAowMDJmc2lnbmF0dXJlIKq7_9XUdFfnt9N6hWpfh6v5WYofEB8ZH-NGNniJ-KpaCg127.0.0.1Pa[a@anon-20191002_181700-96:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYWNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTk2OmxvY2FsaG9zdDo4ODAwCjAwMTZjaWQgdHlwZSA9IGFjY2VzcwowMDIxY2lkIG5vbmNlID0gXzlOfkhWTWVxRz16eHA9OwowMDJmc2lnbmF0dXJlIMCX7ZgtxymDVGgonf51xxMf6a7BF-Hb937lStZfqIHSCg127.0.0.1Q %@B B  8 x8 F  N  W  _ !x?]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHOmKa?]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKUm?]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWAm?]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKSm?]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAXm?]!@anon-20191002_181700-828:localhost:8800VKQEDRMGFLm-=! @spyglass:localhost:8800BUNJZHLDRSmp<Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQmk=[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYm*R=[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZm+P=[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLmQQ=[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZTmO=[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNBmAN=[!@anon-20191002_181700-91:localhost:8800UIADKEMPGAmuIL=[!@anon-20191002_181700-90:localhost:8800BJDBLNAUERmM<Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJODm}(=[!@anon-20191002_181700-89:localhost:8800OFESILMBJHma+J=[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDImqK=[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZmYI=[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWm?H=[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVm,G=[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENmqF=[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUm ;E=[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOmD?]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSNm?]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCKmf?]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCRm?]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJmx?]!@anon-20191002_181700-822:localhost:8800CCEPFILJPUm?]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFDmߑ?]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCLm^=[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEm:C?]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGm?]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOLm?]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKBm?]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPVmɕ?]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZCm  oeQa$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3863}{"auth_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE", "$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs", "$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "prev_events": ["$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ"], "type": "m.room.history_visibility", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044120261, "hashes": {"sha256": "7FkgJVXarWNuSbBUZatENgK54TjX8zl9eTcizmOlte4"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "+eXmTNmhc9Z4SwanoY9GlOh9p8hzMAxEUP5pra0hl+78WhODOBmh26RxTmCTT6lEyJOBvfg76Bw/RjFSpRHLCA"}}, "unsigned": {"age_ts": 1570044120261}}tneQau$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3862}{"auth_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE", "$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs", "$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "prev_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE"], "type": "m.room.join_rules", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044119468, "hashes": {"sha256": "AUEX+bie6d8z8nSGQhqS3VkQhWN9RJcn6J99wXsxC2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "dFgSSZegKVSK7beCRkTYjMjf95QJ0OmXfCr59VpRhCCzc0j6EEb3hDbUfT522gonCBsxQ1UIbeTq4x3R6E6MBg"}}, "unsigned": {"age_ts": 1570044119468}}kmeQac$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3861}{"auth_events": ["$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs", "$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "prev_events": ["$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw"], "type": "m.room.power_levels", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"users": {"@anon-20191002_181700-831:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044118614, "hashes": {"sha256": "6hutDPEfcVzuscr2phTyxKvuSGPqNmcFzlSnipaDMtA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "B1cDXBlsBI4KpOEsQjJFCxvyAbjGfvLCvHilBVYrisuENZPL+eVDOu0164oFD31JDfVq4l060sSy+scbzD/CBw"}}, "unsigned": {"age_ts": 1570044118614}}vleQay$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800{"token_id": 798, "stream_ordering": 3860}{"auth_events": ["$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs"], "prev_events": ["$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs"], "type": "m.room.member", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@anon-20191002_181700-831:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-831", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-831:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044117886, "hashes": {"sha256": "Jtb8OLENWWziCo8FGXIJ7XmdTIrMwLWUgvgfHCZ2W/E"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "DjXImOInZzZDllJvmu8I8VJbPFfEr+ny6juBKkLQ7kOR/w/xSRwo94pYBgwfwTxRcnr7HlfclvRqGyqmg2ieBw"}}, "unsigned": {"age_ts": 1570044117886}} Ir H  4 q : ]5Q% !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.topict<Q3 !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.power_levelss^Q']!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-113:localhost:8800r^Q']!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800l:Q/ !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.join_rulesoBQ? !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.history_visibilityp6Q' !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.createk?Q9 !VAEDgDJVqmxXZyAlSW:localhost:8800m.room.canonical_aliasnEQ))!VAEDgDJVqmxXZyAlSW:localhost:8800m.room.aliaseslocalhost:8800q<Q3 !UyLoIXmzVFwycmBUeh:localhost:8800m.room.power_levels}^Q']!UyLoIXmzVFwycmBUeh:localhost:8800m.room.member@anon-20191002_181700-169:localhost:8800z:Q/ !UyLoIXmzVFwycmBUeh:localhost:8800m.room.join_rulesBQ? !UyLoIXmzVFwycmBUeh:localhost:8800m.room.history_visibility6Q' !UyLoIXmzVFwycmBUeh:localhost:8800m.room.createu?Q9 !UyLoIXmzVFwycmBUeh:localhost:8800m.room.canonical_aliasEQ))!UyLoIXmzVFwycmBUeh:localhost:8800m.room.aliaseslocalhost:8800<Q3 !UaitDdkGDcwvRLJSvp:localhost:8800m.room.power_levels^Q']!UaitDdkGDcwvRLJSvp:localhost:8800m.room.member@anon-20191002_181700-333:localhost:8800:Q/ !UaitDdkGDcwvRLJSvp:localhost:8800m.room.join_rulesBQ? !UaitDdkGDcwvRLJSvp:localhost:8800m.room.history_visibility6Q' !UaitDdkGDcwvRLJSvp:localhost:8800m.room.create<Q3 !UTAORDrNxIbSlGByAp:localhost:8800m.room.power_levels <^@ 9 ` % ~' :  D-yrGh-F~h! 6Q' !TlJCaYlCkOOVzFDlLx:localhost:8800m.room.create~;^Q']!ZOpRjvUhkWYJBFJZeO:localhost:8800m.room.member@anon-20191002_181700-734:localhost:8800 K h<Q3 !OSHhtkGUjpUCkXwIhj:localhost:8800m.room.power_levelsRQ'E!QkkdnzvdrjHaFGkzMt:localhost:8800m.room.member@__ANON__-13:localhost:42455 ^Q']!PUIxAaiCnbqaVbawGu:localhost:8800m.room.member@anon-20191002_181700-681:localhost:8800 ^Q']!UTAORDrNxIbSlGByAp:localhost:8800m.room.member@anon-20191002_181700-610:localhost:8800 B-6Q' !YQATbgbLImCDamiDHC:localhost:8800m.room.create:Q/ !XMNRkfscQXRjgYrOSd:localhost:8800m.room.join_rules <Q3 !WYyiQAVvitxsLZKVCG:localhost:8800m.room.power_levels6Q' !VNdqhtoDkyMoQdMTtM:localhost:8800m.room.create BQ? !SvKwEALYoNreUvqAlp:localhost:8800m.room.history_visibility <Q3 !RmdhCjvouVLmyIHjaM:localhost:8800m.room.power_levelsd:Q/ !NfaPEGKjnUDUTavzol:localhost:8800m.room.join_rules/G<Q3 !NNiyzThHMivrxhojfp:localhost:8800m.room.power_levels 6Q' !MXhwoqNXvexeDDSOZT:localhost:8800m.room.create 26Q' !KxhGcTbEWmtgGNpdox:localhost:8800m.room.avatar)6Q' !KIHYKMzkRDrJwiywwz:localhost:8800m.room.create^Q']!IfYYyzLHSOeyJBxBfn:localhost:8800m.room.member@anon-20191002_181700-242:localhost:8800^Q']!HusOrLtWZTLbmQZxmm:localhost:8800m.room.member@anon-20191002_181700-408:localhost:8800 <Q3 !HOPyhZPcKkrvSmDIvX:localhost:8800m.room.power_levels^Q']!GSxvxNevpCiwmFCHys:localhost:8800m.room.member@anon-20191002_181700-453:localhost:8829ZV<Q3 !FIOuvzpMhoERunVYYA:localhost:8800m.room.power_levelsQ6Q' !EWkoFeckhXlNyjuIEB:localhost:8800m.room.create'^Q']!DelfBAGvCrTXgNxmNV:localhost:8800m.room.member@anon-20191002_181700-494:localhost:8800:Q/ !CNFopUEQTFbzjmLvii:localhost:8800m.room.join_rules:Q/ !BfEFIDBthhkweqfhir:localhost:8800m.room.encryption^Q']!AYFqrmxwClFQlcTTYq:localhost:8800m.room.member@anon-20191002_181700-620:localhost:8800 dF0|A { : U  k 0 O  H F ;Q3 !zNCItZNbpkZKuufRhC:localhost:8800m.room.power_levels BQ? !yTQmLDAxZscWKLMSWh:localhost:8800m.room.history_visibility5Q' !wvnfKBSrUlfNmYoeil:localhost:8800m.room.createl <Q3 !wBkUBAjOznOyxrLchl:localhost:8800m.room.power_levelsC^Q']!vZGjXEXQoCaoUXnkCa:localhost:8800m.room.member@anon-20191002_181700-571:localhost:8800 ^Q']!utJsNQubeIXvcTKGpx:localhost:8800m.room.member@anon-20191002_181700-323:localhost:8800 R<Q3 !taANXnGBZntAreRurn:localhost:8800m.room.power_levels ,>Q9 !sPWVGnipjiiWQpywNO:localhost:8800m.room.canonical_alias3W^Q']!rWGwSSefrZzQYCYFHs:localhost:8800m.room.member@anon-20191002_181700-416:localhost:8800p6Q' !qjijQBfMwsCPTVgKPm:localhost:8800m.room.create K 6Q' !pHoEnhQYhwlbJXqKQE:localhost:8800m.room.create ]T<Q3 !nhbUIcIbhuXkRqfeDa:localhost:8800m.room.power_levels ^Q']!mMsxpaIlcykPuOnDyl:localhost:8800m.room.member@anon-20191002_181700-290:localhost:8800~AQ? !kxTDuIasPNpXtiRsif:localhost:8800m.room.history_visibilityu <Q3 !kkgEEVUJynguTqAoWD:localhost:8800m.room.power_levels <Q3 !jfshVGNDxkvqPxFxWB:localhost:8800m.room.power_levels^Q']!ijOiudvuzOLNmgNKfG:localhost:8800m.room.member@anon-20191002_181700-576:localhost:8800<Q3 !hegUPDZCEEmBhsNJJR:localhost:8800m.room.power_levels^Q']!fsbkkRBZlUcBVVfMME:localhost:8800m.room.member@anon-20191002_181700-276:localhost:8800P^Q']!eySSVuCclRpBDgwKIU:localhost:8800m.room.member@anon-20191002_181700-112:localhost:8800c6Q' !eWRdwtyqHvuxZFvhNS:localhost:8800m.room.create v6Q' !eJPTUgihvSwaOhIkrC:localhost:8800m.room.createt 5Q' !dUnULFLGtgaVdwHtnz:localhost:8800m.room.create| :Q/ !cRbfhxZdPstEsPGPAu:localhost:8800m.room.join_rules RQ'E!bjdLCdBwkKaihRIRFG:localhost:8800m.room.member@__ANON__-28:localhost:42455 `6Q' !awHAhLuEkavTGACcUW:localhost:8800m.room.create39Q/ !aWbcZNVBalJilCEsdr:localhost:8800m.room.join_rulesz 'cj8q? w E  } K  Q  W % ] +c1e$QXbnRLH2YUazDmCDONO1eX4MjByGiibTRW7d2GOJzLk\1e$QWNNGSyRR2yXSu1HG2UgmfFsSQQbp-rdm2CCm59Bg1k1e$QUgqthGYQ3s9JxwBCCM7BQrr2ah-mKDr-O_7MglHNmM 1e$QSpl2UO2Hx-_7ztiQof5cFuMDb4IBaE7tc4HgdBGtOw 1e$QSEAwXdWDvl8LfdEYAYfgpGnpFpFVKZ1frIIVVwirEE#1e$QRXe5WqpiiCwp6JzL4nuAmOL01xtv6c_-l5NIuBrILQ1e$QQvGp9T5V5L7b_-DrcQspuWGGnBa__odxHvA6qU2BTI1e$QQeoL6bV1INYUovQL5Faw-S6Cx8jexO_RwObra3PDRQX1e$QPhbt_h26tdsRJRhTVfYQYmUoTKGTuHIqlg8-D5i1qY1e$QNRDQDLwYW9YY3tuH6npdwR_GfYWvZb8-uM2uYQkiiIc1e$QMMwvlCK2Py7g2t5TdGbNo8pFANe2NPNybn6a8LZiPw1e$QKFvA8YAdqIAK6_ibFPuQ7fCO0QFO5WLAy_hvWzcQUI>1e$QJir9CKpJjlNAiUwiATZCj-XRWLgE3rKHhpVNUhuDuw1e$QJVkcDVw-OkwEmodr9anoyxi3ajO-LJgMdStMh-hhUs 1e$QItwWr_M2TQkRfSr1ECFmY3l6nJMMYrF8apqUKLAokg i1e$QIjvnuf07y/fqb3VpZnX6OY7DzbFH2Obm7gzld2mMEY 1e$QIP-KMT1bndBdjSKfLHBT_rcMMlYoWJMDD3hKe2nPzI 1e$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797So 1e$QGeVoS8vEEttojlNa0zBH7nZBLvlzfkT5Af66XTzoZE }1e$QG3S4_6CkAfHuqKoBB99lIsaK47pnwhA7IL9H8r8vekc1e$QF0PBOnLDqlo1-VlDdR1gt-uQ-3gia-gY8NMh1DjwUsq1e$QDZpzKCSnJAJ91RKQCA3rgVsXvsIt5xywvwa5P/UpFg .1e$QCDUBI91UE3tXmEiQcHCXUB2j5kfDD_30K_N3i-7_DQ1e$QAZPZKvCFsl-hL4YCsMWv75EIW8rU8pOwrhxQkSAL1U 1e$Q8Gy0-Ci7UOOjCJmKUpF4abDRzkBPceSEaJxJyPFiIs1e$Q5mnMxoNnqe5Dv8FHj1Dxlv4XuBr83P3kPJuX75x3f01e$Q5guIjtQLUUs5cN6ivXEO39-fiUA2ngLWTBNI8PJRss1e$Q2sNhHxD3T_AfEQX9hMqvCtU9F94sfW69IezGj1lbWw 1e$Q2HC3bFAUQl5VacNlOPH08Krw6M2lSjdg1PNaVJRmbk1e$Q-nFoCNNMporj3GiBwS961e6Y-qkzLcltGYkA1CoZ8Q1e$PzPeHslhEv5jtDWe6WGUtXqwgUjFu3yPmLFRevzvZxk0e$Px9SRlI5OReZAxX178Y7MFBD0xYkEoSmaWDYcnhFjnUd1e$PvtIWfLN7sH7FumWdN479s55HYdkZ_T3BUi94Q-iIX01e$PujpBpvOC4crPxFuFxAQgxIvThVnFtdlibMNXjW1etM1e$PuVAS94caHBGkmmdiDwslid3buBMUFB42u1tBIda5KQQ1e$PtDBWy8RrT5N7IJ9BhYbb2YYIu3FJfhnf5qk7kF5eqsX1e$Psu-CgvBQ-9uCLifyjS8rzlnpiZO0OnndrxPROMFnz01e$PqnSxxNnZCTNmOcAl2OC-iPD4VUzHi3gO2HWZFgIEkUD1e$Pq5erAP3pa51gOTu9kNChqSa55Os7-nH0qQobsGZUnw ~ 0`8pH X 0  h @  x P ( ` 8  p H 'Q!WFHIeSFQyuugGeBFxW:localhost:8800M'Q!WFHIeSFQyuugGeBFxW:localhost:8800L'Q!WFHIeSFQyuugGeBFxW:localhost:8800K'Q!WFHIeSFQyuugGeBFxW:localhost:8800J'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VUibrTIkcRbfrogbQV:localhost:8800 'Q!VOhMAiLfKyTOZbmKGw:localhost:8800s'Q!VOhMAiLfKyTOZbmKGw:localhost:8800r'Q!VOhMAiLfKyTOZbmKGw:localhost:8800q'Q!VOhMAiLfKyTOZbmKGw:localhost:8800p'Q!VOhMAiLfKyTOZbmKGw:localhost:8800o'Q!VOhMAiLfKyTOZbmKGw:localhost:8800n'Q!VOhMAiLfKyTOZbmKGw:localhost:8800m'Q!VOhMAiLfKyTOZbmKGw:localhost:8800l'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800'Q!VCSCNemqikJZiRtxrs:localhost:8829'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800 } { y w u sqomkigec~eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800~~eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800~}eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~|eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800~{eeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800~zeeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~yeeQ$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~xeeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800~weeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~veeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800~ueeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800~teeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~seeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800~reeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800~qeeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~peeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800~oeeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800~neeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~meeQ$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800~leeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~keeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800~jeeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800~ieeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs!TkluVzxeeCbMtbFWWS:localhost:8800~heeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE!TkluVzxeeCbMtbFWWS:localhost:8800~geeQ$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ$m0NbY3BWlGXRNuKhfAy2qA9Ho6OjPmTYV5di8E95uiw!TkluVzxeeCbMtbFWWS:localhost:8800 E|u m e ] U MEeeQ$0q4dtsNxlzfY0ldVJ7BLeQsmIu2wr73nccxld812bM8$uZnH0L9t-OdHg-mkfe9haksHcf9aZRw_dl_miYppSuU!bNSXSTadOMhIrYpMzH:localhost:8800ׁeeQ$0nSjgPx5osuoF6SaeeJ7iouUmh4PZWMdn6UuR1AUsUw$SrX7-g_dqXmEWSSwFT9kVrwbd4z3Ga3JAp9dqlvJTno!XMNRkfscQXRjgYrOSd:localhost:8800āeeQ$0nOz4QWBsKTFQ3b2-gWbCHRgSEWl5JWJMm4e1pJMPvA$xlmgXsUvejVZhJpmNaXjnlfSd_YmcV6OC1GFVNkQi9o!SrMQpDMFREKRMELwbL:localhost:8800eeQ$0mXS1bY1VWUIc6eT9UpMTrzsEdu23v9Z8pzmQNDTbas$VEp5zgDQj3Z9erCLnND2JwhNeOaiq9wPNmJx2L8tUnc!OMkiVTuuOEeiFAXtUY:localhost:88001eeQ$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIsk$H2Ba-mlipHvjB6vtnY_WGFsuUXAq0gU_s0SdlayNx-4!bOSxzttDtclnrWnLov:localhost:8800eeQ$0iX0bcDuCn0H_nhSSS-tJeINIVXskjhMeMc-Hw-AAAs$nsoaz3JTUPlekNLfRNSHFw7mWGW7Lyv4ZVl4dcCP5Hs!EMhFCPhwmnWVnjtXXM:localhost:88002eeQ$0iFn7GyjCURNxGhd7y18-yZQbmUfeVggpfvqLPNzRko$e3005hIqwf0_fL6brYwDgWgf6H0kra3SkmkLb0Nh8tE!nteAxExBGJfaGIpuCx:localhost:8800eeQ$0hyVk-QsQz9KFDPfiRn9RDa-MT7Idi9ezrEKoMsOToM$7avKObhQzbEPbvllZOArKsxVdGha5X6xYmq5lNQxQQM!awHAhLuEkavTGACcUW:localhost:8800\eeQ$0h32jqDVFpiLxNybARPjBMKJyHst0zzvjCojRHDQhu8$LGKDhWIv1oK_XhX6mzZ-SCd0R7oIaal2qNjQhm4RVSc!ozgnwUlebxvzLVwyHW:localhost:8800reeQ$0fckXODuGVMkJP4FxV8nG1mXees1LVMo1aJkE7UsCbA$3mmRuTz-yi4iD4FXhQnEbkgMc2F4RXIbmzy5eygG-Eg!lAGTcYIuMBXsVRGCOe:localhost:8800eeQ$0fcaYdoVMOljEGXJnIM1faTVA9EFJtKUlTgNKhxywBE$KObR2BJtrkwCoXElqSb5Gj4up+CEqR2HvJ9PVnWUDnI!tLkhTnTgDjjAvscRkW:localhost:8800 eeQ$0fPoprppHjwuEhkaIsGcT41SNhfDdLKyRO_InP_wwjU$gxk2VENjeMF5htXF_l4tRWqaQMc_MCWaGYVlZGRdHbU!nxLxsxzliamzflrEBs:localhost:8800eeQ$0cgsvLwPItnQGGvifGm6v4nb2CWFR0U6teb9LXiTyIw$xFc_K5sdncoG4gH6Apl7dTxWzh5FIt8c3IEQDxHNUAc!scyFsXcUIJiLIMwWMY:localhost:8800^eeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$yiilWZqKFcEhXqRUOpItRiRWue4v6CMWy6rxePt9Bjc!aZwMKYDXJRlSKjQNWM:localhost:8800yeeQ$0a8V7jH39R9pAdx4hHUR4RXfIt-KLldrDfc9RlnBILM$jJWRuwW_Nd5nFYVDGlM1lU2B358aU9qoIqk_6Bfvc8c!aZwMKYDXJRlSKjQNWM:localhost:8800w  "E H j s v  cQ']e%!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4opbQ? e$!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibility$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMshaQ/ e#!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rules$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8j`Q3 e"!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624 _Q']e!!QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Yd^Q' e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.create$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU ]Q']e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@astest-0-20191002_181700:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wp\Q? e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.history_visibility$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwh[Q/ e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.join_rules$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLIjZQ3 e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.power_levels$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4 YQ']e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.member@anon-20191002_181700-832:localhost:8800$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8dXQ' e!ZWANpHlizyLrUiVvAm:localhost:8800m.room.create$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauUsWQ))e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.aliaseslocalhost:8800$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwUpVQ? e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.history_visibility$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgMhUQ/ e!TkluVzxeeCbMtbFWWS:localhost:8800m.room.join_rules$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ E|t l d \ T MEeeQ$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM$-21F1dyl6n_Xjx9ePSJk3UHdeKdZDTe2-UL25gB-uQQ!TkluVzxeeCbMtbFWWS:localhost:8800 weeQ$8mHRCvY3x54mv71enpWJ-2kqExo2DHFxS3BT2BsqR0Y$m5M_ts89NPtKNrXEbfx7Zi3JXojcfrQaD_gh3t03WaU!RmdhCjvouVLmyIHjaM:localhost:8800!eeQ$8lejVm54119r37qLAKwsMMX4PUUYTha7OzkYGvqtY48$D1rB9gxrWF1rQYczlrRFFivsESiZb4OwPqNwldgPs8o!UTAORDrNxIbSlGByAp:localhost:8800 eeQ$8kImuHCGatbXZ2KPH8XG1PNph40Dv5xwOsbHdwlWjJU$CwZjDeimFPt1Fx2qRTAkuNsQjuhv4UJcnIryhtL_Zxo!xwoIOPTGmJIlTXakxC:localhost:8800PeeQ$8iBwcJ5R_ireWa0Eyfy2RK4NMwOzFY8-DEs3quDyUIU$RcedZIfDIhWONiHgmhemu5JoxALHPBgPCduwjKaYAtQ!egCvzKpbEwmuvDoBTb:localhost:8800]eeQ$8iBGxGrUuvdGU40/iSLaTYAOPeJiKuxTxOyPeeQsqTc$9D3HgmUsBLJfnAzwa9waYZvSC9v4cc48u1MNrFYwkJ4!WYyiQAVvitxsLZKVCG:localhost:8800 QeeQ$8gmhtp5BiREp3qTr8u9eSWybOKe59xsyujGlTZZv38E$xVWut8kISIqAM6hhyIh3FAXf2QMk0bl5HLYKnfEPrmI!zHBgbzUZHshNGZvIBS:localhost:8800 3eeQ$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvw$LZULrw-hIeuOpDTuz1BPgJCtKckbqcnfn5FtNHfUgLk!PEcOacvKaBKpXjytEF:localhost:88006eeQ$8fFaIRv4y9hqWVYQfQbvBlHUuZTMfdF1LQ-1Cm476cE$o2GV9VUhmBL6H1KZsX_I7QSKlWJPRlIke4DKJPykszk!svYOOXWZHtQQzlMcEP:localhost:8800eeQ$8eP3UMhxC_t1aejU9VVd2D41u0Ll6VeyehSikYMSoPM$kL73FcsSLMjn_UvUZH7ipE8wx9uf_vYzYOdNtM0pj8c!HusOrLtWZTLbmQZxmm:localhost:8800eeQ$8cwCh-qs1ocOVMxrLTfV3GaD-_rbcYU_Zvuc0DVilIM$uf1liGDSHO4ME0IO3vmhTwG-9QtHJl1IgjbeSjPnYy0!ZOwibbprUCQrSJQCrx:localhost:8800 eeQ$8bYD3EOtQXz9VPVb44CZYjXLCn3qAIWuctm68vVxE9w$9QIHMqr_jLNYYFIvvsOOjR1nXuHFLE-Lc6mOUY1eJVI!fcdNYFWFyxmdpKAknc:localhost:8800GeeQ$8bA3fAldUY9LFaiY7Q7oZSNinr_atqQz_Tt7_yNB4L8$nhAIOTDGtl84MuS8XbkIg3miO6RwJwkyEK2gLOauXag!bNSXSTadOMhIrYpMzH:localhost:8800eeQ$8a_om2kxRYusKJspGsQpQzPPexXvX3SpKrJdbe4vlAA$ccVIIiTwvHTH8a-cQM59rcAz1ZLGG0dH2-OZZI0wHOc!kjueCKHmYaYefEEpQY:localhost:8800 eeQ$8_Xr635hAWrC2FnFncQxOSg87VWHPvWStwwiwTYVrEQ$9EQuktGB-CuaEqxoXxwmt16Kvq59Aij2QznonQeTS3k!NFWKQvZkIwvecnREOC:localhost:8800 2vHd6 Z .   S ' x@ A  | W 2 } Y 5 n-]@astest-1-20191002_181700:localhost:88004-]@anon-20191002_181700-832:localhost:88003-]@astest-0-20191002_181700:localhost:88002A@user-upper:localhost:8800=@spyglass:localhost:8800A@mycooluser:localhost:8800#K@chrtestuser-93-:localhost:8800 #K@chrtestuser-92-:localhost:8800#K@chrtestuser-91-:localhost:8800 #K@chrtestuser-64-:localhost:8800 #K@chrtestuser-63-:localhost:8800#K@chrtestuser-58-:localhost:8800#K@chrtestuser-39-:localhost:8800#K@chrtestuser-34-:localhost:8800#K@chrtestuser-33-:localhost:8800$M@chrtestuser-233-:localhost:8800$M@chrtestuser-163-:localhost:8800$M@chrtestuser-125-:localhost:8800$M@chrtestuser-124-:localhost:8800 $M@chrtestuser-123-:localhost:8800 #K@chrtestuser-10-:localhost:8800C@cas_user=21:localhost:8800D6o@astest-01create-1-20191002_181700:localhost:880016o@astest-01create-0-20191002_181700:localhost:8800/*Y@anon-20191002_181700-9:localhost:8800+[@anon-20191002_181700-99:localhost:8800p+[@anon-20191002_181700-97:localhost:8800n+[@anon-20191002_181700-96:localhost:8800o+[@anon-20191002_181700-95:localhost:8800m+[@anon-20191002_181700-93:localhost:8800l+[@anon-20191002_181700-91:localhost:8800j+[@anon-20191002_181700-90:localhost:8800k*Y@anon-20191002_181700-8:localhost:8800+[@anon-20191002_181700-89:localhost:8800h+[@anon-20191002_181700-88:localhost:8800i+[@anon-20191002_181700-87:localhost:8800f+[@anon-20191002_181700-86:localhost:8800g+[@anon-20191002_181700-85:localhost:8800d+[@anon-20191002_181700-84:localhost:8800e+[@anon-20191002_181700-83:localhost:8800c-]@anon-20191002_181700-831:localhost:8800.-]@anon-20191002_181700-830:localhost:8800-+[@anon-20191002_181700-82:localhost:8800b-]@anon-20191002_181700-829:localhost:8800,-]@anon-20191002_181700-828:localhost:8800+-]@anon-20191002_181700-827:localhost:8800*-]@anon-20191002_181700-826:localhost:8800)-]@anon-20191002_181700-825:localhost:8800(-]@anon-20191002_181700-823:localhost:8800'-]@anon-20191002_181700-822:localhost:8800% 3vHd6 Z .   S ' xO! A  | W 2 } Y 5 n-]@astest-1-20191002_181700:localhost:88005-]@anon-20191002_181700-832:localhost:88004-]@astest-0-20191002_181700:localhost:88003?@as-user-1:localhost:88002A@user-upper:localhost:8800=@spyglass:localhost:8800A@mycooluser:localhost:8800#K@chrtestuser-93-:localhost:8800 #K@chrtestuser-92-:localhost:8800#K@chrtestuser-91-:localhost:8800 #K@chrtestuser-64-:localhost:8800 #K@chrtestuser-63-:localhost:8800#K@chrtestuser-58-:localhost:8800#K@chrtestuser-39-:localhost:8800#K@chrtestuser-34-:localhost:8800#K@chrtestuser-33-:localhost:8800$M@chrtestuser-233-:localhost:8800$M@chrtestuser-163-:localhost:8800$M@chrtestuser-125-:localhost:8800$M@chrtestuser-124-:localhost:8800 $M@chrtestuser-123-:localhost:8800 #K@chrtestuser-10-:localhost:8800C@cas_user=21:localhost:8800D6o@astest-01create-1-20191002_181700:localhost:880016o@astest-01create-0-20191002_181700:localhost:8800/*Y@anon-20191002_181700-9:localhost:8800+[@anon-20191002_181700-99:localhost:8800p+[@anon-20191002_181700-97:localhost:8800n+[@anon-20191002_181700-96:localhost:8800o+[@anon-20191002_181700-95:localhost:8800m+[@anon-20191002_181700-93:localhost:8800l+[@anon-20191002_181700-91:localhost:8800j+[@anon-20191002_181700-90:localhost:8800k*Y@anon-20191002_181700-8:localhost:8800+[@anon-20191002_181700-89:localhost:8800h+[@anon-20191002_181700-88:localhost:8800i+[@anon-20191002_181700-87:localhost:8800f+[@anon-20191002_181700-86:localhost:8800g+[@anon-20191002_181700-85:localhost:8800d+[@anon-20191002_181700-84:localhost:8800e+[@anon-20191002_181700-83:localhost:8800c-]@anon-20191002_181700-831:localhost:8800.-]@anon-20191002_181700-830:localhost:8800-+[@anon-20191002_181700-82:localhost:8800b-]@anon-20191002_181700-829:localhost:8800,-]@anon-20191002_181700-828:localhost:8800+-]@anon-20191002_181700-827:localhost:8800*-]@anon-20191002_181700-826:localhost:8800)-]@anon-20191002_181700-825:localhost:8800(-]@anon-20191002_181700-823:localhost:8800'-]@anon-20191002_181700-822:localhost:8800%  JkseQac$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3867}{"auth_events": ["$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "prev_events": ["$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "type": "m.room.power_levels", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"users": {"@anon-20191002_181700-832:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044126556, "hashes": {"sha256": "G1yD2SmymSxlAaO7TiLqUFLmGrDe/jrhD5RMtPaUW7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "x6c4KslBgdcicSWLKmusKooOFfL0GfgPG8Vx1SWG0dJjJhRUQ/ttBp3Ii9sVDpabjfi62veu+WyLoWmEP1gyAw"}}, "unsigned": {"age_ts": 1570044126556}}vreQay$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3866}{"auth_events": ["$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU"], "prev_events": ["$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU"], "type": "m.room.member", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-832", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-832:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044125767, "hashes": {"sha256": "W46wRE1lwMTaBEBd4Ibx4RpudTB1Z/tgF/EoRXVxSYo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8zO/Z01nvXVostcHrNaP5ojcVmg5RR/Mx4kH4PW8v0CKiUHiXeI5IuSRGge1OFgqrZkvDux10WF+mmCz5csFAw"}}, "unsigned": {"age_ts": 1570044125767}}iqeQa_$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3865}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-832:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044124848, "hashes": {"sha256": "2wD3bYM/PwAN2+gG0xNJkbRo8snZxAbx/mAQCKGHM4o"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "5Hy4BvSMzfiCJSZsHCYxhpT30ibK4LKWmlSxamVbTQpRb7sbQUPVngswMDHYL4OjIavKOXaE4NiulqREnGyeAQ"}}, "unsigned": {"age_ts": 1570044124848}}KpeQ?E$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU!TkluVzxeeCbMtbFWWS:localhost:8800{"stream_ordering": 3864}{"auth_events": ["$P5BjgMLaZF4JiYOGgqnhtUDudutNR7XbuGjlsWea9pE", "$CHZpfZquvy0jS7zubS644joIHjae4sxQ-w_GKCybiXs"], "prev_events": ["$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM"], "type": "m.room.aliases", "room_id": "!TkluVzxeeCbMtbFWWS:localhost:8800", "sender": "@as-user-1:localhost:8800", "content": {"aliases": ["#astest-__ANON__-31:localhost:8800"]}, "depth": 6, "prev_state": [], "state_key": "localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044122929, "hashes": {"sha256": "6T98RLWsEGF84SGNQfRcME6RyBMdwOl8XDHeeJ39yTA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "E9uFYE4MF20Brtot84IuxS9XZqxQmu7ZAUApN0lpuAR65Z7sWqsJdcqrA6pSSPI6vI1f4zNsag+HFWcYSJzSBA"}}, "unsigned": {"age_ts": 1570044122929}} ~z v r n j eeQ$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800eeQ$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800~eeQ$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800}eeQ$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800|eeQ$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800{eeQ$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4!ZWANpHlizyLrUiVvAm:localhost:8800zeeQ$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8!ZWANpHlizyLrUiVvAm:localhost:8800yeeQ$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU!ZWANpHlizyLrUiVvAm:localhost:8800xeeQ$9y0pMy9AFvwCexHLvDrz080XZqxMImVcG2frEEnLuwU$8n8eYrBcEvqNCFR8ijiLh9ahPpXjIRNyWVEzm9xujgM!TkluVzxeeCbMtbFWWS:localhost:8800   * g]!c#@astest-1-20191002_181700:localhost:8800OYDJFJVTHOMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgog]!c"@anon-20191002_181700-832:localhost:8800HFTRPYGIKUMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFub24tMjAxOTEwMDJfMTgxNzAwLTgzMjpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9ICMmLjR0LTIrZm4tZkxJS0gKMDAyZnNpZ25hdHVyZSCoTGVqZ5SSjaDppJXocEDlVXCxuXtah2mua62Y6duyngog]!c!@astest-0-20191002_181700:localhost:8800XUQOQEKIQEMDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0wLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IDI4bSxaTlJReEJAUThUekoKMDAyZnNpZ25hdHVyZSBtwxrANKPmMKrh9kZ_GnYlwttEipOHV6mneSTCC8eKOwo (Em< xG R ! ] , h 7  s B  ~ M vE0]r@astest-1-20191002_181700:localhost:8800T0]q@anon-20191002_181700-832:localhost:8800S0]p@astest-0-20191002_181700:localhost:8800R:qo@_astest-01create-0-20191002_181700:localhost:8800Q9on@astest-01create-0-20191002_181700:localhost:8800P0]m@anon-20191002_181700-831:localhost:8800O0]l@anon-20191002_181700-830:localhost:8800N0]k@anon-20191002_181700-829:localhost:8800M0]j@anon-20191002_181700-828:localhost:8800L0]h@anon-20191002_181700-827:localhost:8800K0]g@anon-20191002_181700-826:localhost:8800J0]f@anon-20191002_181700-825:localhost:8800I0]e@anon-20191002_181700-823:localhost:8800H0]d@anon-20191002_181700-821:localhost:8800G0]c@anon-20191002_181700-822:localhost:8800F0]b@anon-20191002_181700-819:localhost:8800E0]a@anon-20191002_181700-820:localhost:8800D0]`@anon-20191002_181700-818:localhost:8800C0]_@anon-20191002_181700-815:localhost:8800B0]^@anon-20191002_181700-816:localhost:8800A0]]@anon-20191002_181700-813:localhost:8800@0]\@anon-20191002_181700-814:localhost:8800?0][@anon-20191002_181700-812:localhost:8800>0]Z@anon-20191002_181700-811:localhost:8800=0]Y@anon-20191002_181700-809:localhost:8800<0]X@anon-20191002_181700-810:localhost:8800;0]W@anon-20191002_181700-807:localhost:8800:0]V@anon-20191002_181700-808:localhost:880090]U@anon-20191002_181700-805:localhost:880080]T@anon-20191002_181700-806:localhost:880070]S@anon-20191002_181700-803:localhost:880060]R@anon-20191002_181700-804:localhost:880050]Q@anon-20191002_181700-801:localhost:880040]P@anon-20191002_181700-802:localhost:880030]O@anon-20191002_181700-799:localhost:880020]N@anon-20191002_181700-800:localhost:880010]M@anon-20191002_181700-797:localhost:880000]L@anon-20191002_181700-798:localhost:8800/0]K@anon-20191002_181700-795:localhost:8800.0]J@anon-20191002_181700-796:localhost:8800- "nUq8 T  p 7 S  o 6 R n8e$ayCsChxSJ-eu-5IZOoCVkIovtTNTiBVdIKg21NZsO4Msha2568e$awPbI84IVGrdzxeayOG3xlTxk92yXNT5BDrGZKozRlAsha256 [8e$auOAqjZIakwiI0uBbgT0EwW19ke_roT0kv4ZoyLf2BEsha256 8e$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUsha256 8e$as_rafx5MUdWLhNd45RI3y_sXy3c0Ka4bwpqcw0ewxssha2568e$asYUZPv3iIH8CzAYjHIFXGPb_iKqYf52ebRqX8NW3OIsha256c8e$asML1WoPVLBysiKcjWNkxp1sZdotzHUEzA9OtncDUJwsha2568e$as4nlvyqVWkhont1Y9WbsmB0hbCL6OA8h_AF32d2qjgsha2568e$araNhUba1Ws4zQgCO3LUE-XKeceRxHwfuWlD1UWK8w0sha2568e$apO02NMcfGHp4ap8oUwsByzzZCB9LvfqICRzIDOtRWwsha2568e$ap1W3ZnOe6ij4AGGjPyxSVKNcXK3G9kLw-ioWX-RHRMsha2568e$ap1VlkhdItb25m2tyawrff_uy0leWG4iIEjRPYmtYKUsha2568e$aoVDPYE8N5WDhm1-BgfZJ0wsX_3u8nSeAlrhcNJ-mcYsha256)8e$amF-ZjgDlB8y6VXGORzIJZzrOCUpPCZw03bCMzvi7hgsha2568e$al4m0rOmFP3reobUbdMVZOtzFogAupOpKxUalEB0oBQsha256H8e$ajTD7GkvyGjgebWR5lDWg5_ewljaOF1kfG5PMRATlRssha256:8e$ajNg3QusQMyUXcokaTWgvoPjlEEF4g6TxN0XOI5oZBIsha2568e$afZLPvNEO0ocTIFVyfKiZKUBOqTENbuDK0ZgVtkCBbIsha256g8e$aehUW3WYRV3UHeuqAcBdxbYp7wgycpLTgyaxmBcWoHosha256 8e$adVIR3rPkKfYjtqs_CZbcOa12V0lEl3t3B4yw7W2bqQsha256 8e$acrBYvl_xHAhG1Q85QponXC7JamG5kSqHQD6taHBjrgsha2568e$abFvOO1O2gK5N5WaPlOOzqMY5vgfjZM46j48_7RvyQgsha256 8e$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4gsha2568e$aaxHTGZHMxLD4DqZs-w4PImjW1tHc5qwkYquJanPCTgsha256 8e$aaLeBLIkgpbL0e8C1PBVZZtvJUS2SQAVafySIqkvu9wsha2568e$a_vTqYZhkVVyDAZAXZEPR62M1z0mreYqg8zI33oPwmUsha2568e$aZlt05ZqPHryoo0fBNxrQN3Q3i8_nMagJOqfHg37x4wsha256k8e$aYs0-0FQc7-oaiHfrWC5XYORl3EQoN1wBWqu6LLCZdcsha256 8e$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgsha2568e$aQaoFu9uZyues5k7upGb_6UD_A7DipZ0s07ngD72APksha256 8e$aPCh8qqYOyzXc5JrI6XtdoQcBj2NNReXDW-xT97jArosha2568e$aNeMCaeLFeT9eYar7mw3gyihGoL8d-g848uVih8aYIYsha2568e$aNGbiokQk8iY2LCwbFEwJQBqtMA6aYYayGdaTwPpQ-Esha256 %8e$aNDo8U397TkSjfq6Kr5z2to3AUj4yzbUYvAYU_59yXQsha256 (p(Ew]=@astest-1-20191002_181700:localhost:8800astest-1-20191002_181700Ev]=@astest-0-20191002_181700:localhost:8800astest-0-20191002_181700Eu]=@anon-20191002_181700-832:localhost:8800anon-20191002_181700-832 RM H TQe%!QWLJZmJqjWZjVOjdYF:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4oTQe$!QWLJZmJqjWZjVOjdYF:localhost:8800$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsTQe#!QWLJZmJqjWZjVOjdYF:localhost:8800$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8TQe"!QWLJZmJqjWZjVOjdYF:localhost:8800$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624TQe!!QWLJZmJqjWZjVOjdYF:localhost:8800$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5YTQe !QWLJZmJqjWZjVOjdYF:localhost:8800$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUTQe!ZWANpHlizyLrUiVvAm:localhost:8800$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycTQe!ZWANpHlizyLrUiVvAm:localhost:8800$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wTQe!ZWANpHlizyLrUiVvAm:localhost:8800$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfwTQe!ZWANpHlizyLrUiVvAm:localhost:8800$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI  6qweQ?$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviyc!ZWANpHlizyLrUiVvAm:localhost:8800{"stream_ordering": 3871}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w"], "prev_events": ["$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w"], "type": "m.room.message", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@astest-0-20191002_181700:localhost:8800", "content": {"msgtype": "m.text", "body": "Message from AS directly"}, "depth": 7, "prev_state": [], "origin": "localhost:8800", "origin_server_ts": 1570044131185, "hashes": {"sha256": "wkD5gDLUO7C+EYPoW/5WnQfDJy34VCg6vtppn2hLgfA"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "60mHNAT+OYxYLHuAeZuz8hKbDAEUY4x78AIEopOeRUFzaRiS33XVEamMvc4JGMZauD8O3WRObYsQdWlPtwAFCg"}}, "unsigned": {"age_ts": 1570044131185}}EveQ?9$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91w!ZWANpHlizyLrUiVvAm:localhost:8800{"stream_ordering": 3870}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI"], "prev_events": ["$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw"], "type": "m.room.member", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@astest-0-20191002_181700:localhost:8800", "content": {"membership": "join", "displayname": "astest-0-20191002_181700", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@astest-0-20191002_181700:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044129803, "hashes": {"sha256": "joNnmQ5pcaMqSdVlWPDRn141lvBrOhddyoZ8E7wmU2s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "9onPorZ5FlsToeyfK76gud54z1QEOUCRQj/6Eca8GAH2ftq9G8VZsJlRsnVC1s4iIzxWYX3c3td6IvnGg9/6Cw"}}, "unsigned": {"age_ts": 1570044129803}}ueQa$e_iLuvH6o_1bv35R6gcT0uUdEyPw-u8vtLa0usdKvfw!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3869}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "prev_events": ["$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI"], "type": "m.room.history_visibility", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044128585, "hashes": {"sha256": "lZCR1U79Hz9A2GTb4r5Q8VOyJ0glOMrik0Vha3o9XCU"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "QQH5k05ZFp467oFNYWwUrrxHg5VHhEH49b9WR6j/iucC6n1whGOmHFdrdDjEv3EYsDHqBT2sACCJImhAjubdAA"}}, "unsigned": {"age_ts": 1570044128585}}tteQau$4txkN8cSNcHSSN33TAPwvCiXdBrtpMLa0Jl4s9BVOLI!ZWANpHlizyLrUiVvAm:localhost:8800{"token_id": 802, "stream_ordering": 3868}{"auth_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4", "$ZeL0c0MRYv7LoEraNEA_5K_KjRnZ_wtejCF7gcmiauU", "$dnJLyaJPE07ZIe-r7fgsWJjYYkb8FaQ2hiq96kL6Z_8"], "prev_events": ["$n94fhRPKW9dkgQqmZY-3sRVSFJSGD1la-boGVDTwJg4"], "type": "m.room.join_rules", "room_id": "!ZWANpHlizyLrUiVvAm:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044127751, "hashes": {"sha256": "fL89XfzhEaDottCGBA8xkpLXYBgrBU3HYVD3h2T8vAo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "mqAPWl+XQe0L67gyjs7Ge2NOd5tx+sUxEpO37cvuzh4a/euZfrrN21b3G6L4UcmtJvmMYihAM62t4Oico+wrDA"}}, "unsigned": {"age_ts": 1570044127751}} ll]c!E@astest-1-20191002_181700:localhost:8800MDAxY2xvY2F0aW9uIGxvY2FsaG9zdDo4ODAwCjAwMTNpZGVudGlmaWVyIGtleQowMDEwY2lkIGdlbiA9IDEKMDAzYmNpZCB1c2VyX2lkID0gQGFzdGVzdC0xLTIwMTkxMDAyXzE4MTcwMDpsb2NhbGhvc3Q6ODgwMAowMDE2Y2lkIHR5cGUgPSBhY2Nlc3MKMDAyMWNpZCBub25jZSA9IHVveUVnbDNuRGVUVVp5KjUKMDAyZnNpZ25hdHVyZSCBETAFaXSIZjRv9EC7Bdob7KMvzupLnf5-JY-BCqzQTgoOYDJFJVTHO127.0.0.1Perl + Net::Async::HTTP/0.44mKa `M]Q@astest-1-20191002_181700:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800M]Q@anon-20191002_181700-832:localhost:8800!QWLJZmJqjWZjVOjdYF:localhost:8800M]Q@astest-0-20191002_181700:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800M~]Q@anon-20191002_181700-832:localhost:8800!ZWANpHlizyLrUiVvAm:localhost:8800  8NC 8VweL$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4osha2562 MH#  \5 'kVveL$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMssha256\BNgp"niPaETеc_z7 VueL$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8sha256זۓߨ_cA%x# gOVteL$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624sha256P"^{S4&ZY暣ԗ2vnVseL$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Ysha256`qv`& iHY VreL$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVUsha2566 c;oC4)UVqeL$xpe9-a00BYSpnmfLfL7oNjAM7vCKAvUbuQFd7EGviycsha256Ɨ4g|60 ]A'VpeL$M30BGwHnMZRBxmy-fewipKvQqcZ6qf5TUmzEWOcR91wsha2563}1Al}"ЩzSRlX\ 'cj8p> v D  | J  Q  W % ] +c1e$zvBEBNIGr5oJ0x7uU8WBa-HxgNwmjFzzcnvPnf2IqLI|1e$zsx9Cii1TMLo2MRC0p2PNPTFCZr7y_oLKpZxxT08-D01e$zrCybrZC_35EPRLML13c-MFDX1deWD92VPBPhsypk6E1e$zpYx1vErBKn125LaVmMfRXYetCkG0J_BJhBH8bCGWpI1e$zpOH10m9fkEmRWbDpr6XVlxba1VBTOZEX6czEUfPZZI 1e$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpM 1e$zfZrQ8rQiBukLpHzOdLjkR0n7GTXLUUawZ3dZxF8XxA*1e$zexZBo4vAujCyru1Wj5-alI1heOoc8nIoKDTVhm0o5kX1e$zdr_i9keJYIDtlA7ml_ZH3b_BsUuRtRkdWpE3lgFrbo1e$zd59QPqyxMOH8hzRv9CpZJUdGn-6qecwdz0stDkLD401e$zcyygUGt2RVCnzXW7mg0SzxiHefA07_tNYbg5eChs6Y 1e$zcyENat3tZmi_HflBUfe4Ud8d7wfMDalTveWu0mm_mw 1e$zbUlZ7KYh97FPn8DIlt8LN6Rza9A3cf0qv-AAGdd6a01e$z_YY4ZOm022xIM3QOeeOymZwXfT7rGkC-C4OwoeJFD4S1e$z_WxfNxwGL0_Gbki52uMNFRBFt3f2BxzQW29yiCGqhA1e$zXwGtM4qy8-StVpvxMxWXSMyN-_UGBeBlMtofkzIQOc1e$zXZDhK7DObG1BmosctcR_WmYOFkVkoleJgmqjuQAY7IX1e$zX8FNaB_d5vy3kcPpcMHMwyuoUoxjQso1EJyHECrEX490e$zVmWmsKgIlFgqCrSwS_2Aa0Mps5ALHn-bbYSE1dj9sMZ1e$zVVufMhrmEk6CXA2dh2xq_cNzCO_L1hhriEKUlsZ7mU1e$zTpCuTE_XidWHWzaRrsYcUDXEu_JrPXPy1srOtMVxlgZ1e$zQsaIeNeVYtBY2a0Qzf1_yPfiTq7e17NMpnqP7QZHFA1e$zQAOQNfNb1vLScQr6O_bBpAl5iJs9UrxgMHxWgNO2Jw`1e$zMkXcz4O1ocUJYLPpSXj9YBHDw4qR6i2ru8KgKvu6CQx1e$zLDYryAEZ0LFGn+VkKuMq8D0HQLFNV1cnRM/Jo/PxAM >1e$zGG961PrGVfG4cZxb_CoLh1G-bd2YD_dG4fJIRu3nuo +1e$zEBW9iFeKjrTHHWCspz3B5TabzgFGOnaulMnRJxBHkA1e$zByNC383x_iIa07mFzV0s1h_GQEwALxDnTNC0sGYZm41e$zBJ-CmcOHdKMWJGR6yAYZJw4oT97Gxd9WhtRnVGcBms 1e$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wroP1e$z7PZrHXoKUC7NzBk_BebSsM34EU5sOBu9DHmiibSjgI1e$z6_jYxvFYZxEn4LmL65Cou32haO5fXxLZwHu46vXv7A1e$z6B27CBfkMY2Tj5hoe8eGXIjtt4KjLamQdgNg-nhgbE1e$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0 1e$z1nxESWDEghpQGcYeuczO1lxWToOq5Wopmafduk1m6s1e$z1E7FCmx9uSuJ6XGEftv6UkNHPqTG7L7xaedKc7VZB8 1e$yziVQvUrAdGf0KCve7D80qw8fq4fNcAfe2Xp6RLahRI1e$yzIv6PF29P_M_A5DrRiEz62ELhu4Sy4zUDjNqhmaLUQ1e$yykttdjXEahKBUiFXGrgtBL4i2HiIed7TGgN6VSgxYQ 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800J'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800N&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:8800:'Q!fDISaqNBhlOwherxSt:localhost:8800i&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800Q&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800,'Q!cidyuyekVzJHHvyomb:localhost:8800@&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800w'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800I'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800M&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:88009'Q!fDISaqNBhlOwherxSt:localhost:8800h&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800P&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800+'Q!cidyuyekVzJHHvyomb:localhost:8800?&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800v'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800~'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800I'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800M&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:88009'Q!fDISaqNBhlOwherxSt:localhost:8800h&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800P&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800+'Q!cidyuyekVzJHHvyomb:localhost:8800?&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800v'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800~'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800   *t{eQau$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3875}{"auth_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624", "$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "prev_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624"], "type": "m.room.join_rules", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"join_rule": "public"}, "depth": 4, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044134705, "hashes": {"sha256": "04I6AbOjMe8rFa4Kj6Pm/70KgvdEt5dXj9OrRzrRq7Q"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "ITDX8FnLRo5JXQvn7//Tj2nuGd0ElQ47u4XT0wXN66LSm8OkuqijHMy6eiF1cYYVrswEaPYgWeKV9AGpS/9RAg"}}, "unsigned": {"age_ts": 1570044134705}}kzeQac$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3874}{"auth_events": ["$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "prev_events": ["$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "type": "m.room.power_levels", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"users": {"@anon-20191002_181700-832:localhost:8800": 100}, "users_default": 0, "events": {"m.room.name": 50, "m.room.power_levels": 100, "m.room.history_visibility": 100, "m.room.canonical_alias": 50, "m.room.avatar": 50}, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 0}, "depth": 3, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044133969, "hashes": {"sha256": "XclHb/T38G6cNnkEeBezzgD3yPIhzBX7xfc1tEX/TQo"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "8E0i5+bd0lqFn5Hq/T5pvKp1Q/oW5vzNPbtHn1XYWoJYRX4FML9wU43m1tx6GvF5l9A+zS+8NJf4a8f/fG4QBg"}}, "unsigned": {"age_ts": 1570044133969}}vyeQay$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3873}{"auth_events": ["$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU"], "prev_events": ["$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU"], "type": "m.room.member", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"membership": "join", "displayname": "anon-20191002_181700-832", "avatar_url": null}, "depth": 2, "prev_state": [], "state_key": "@anon-20191002_181700-832:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044133305, "hashes": {"sha256": "M8AhEONTn8gWgluA0fkIN9QlENr8QL7fYPJPB1m8O0s"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "CQnD/Xfk8brHgtAZTzBkOXXVqh43Iogper6Bc2tXKjTgdXpUGBHhnBTqcEK1i4nk4PXA6bZPwlqgG5V8PBbGDA"}}, "unsigned": {"age_ts": 1570044133305}}ixeQa_$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3872}{"auth_events": [], "prev_events": [], "type": "m.room.create", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"room_version": "4", "creator": "@anon-20191002_181700-832:localhost:8800"}, "depth": 1, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044132366, "hashes": {"sha256": "cRNKFYDoFRQEJ1xY9six8+kG9Pu+n5YstPP/6vPUe40"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "sWnyHw2Din0RW3eEHTauSH4BCLywtYpEVMSw4/NHrFc9JvHcN/pKe/w68/DwOtxMKlcicgA0dYJ8iPm+rYxMCQ"}}, "unsigned": {"age_ts": 1570044132366}} |vpjd^XRLF@:4.(" ztnhb\VPJD>82,&  ~ x r l f ` Z T N H B < 6 0 * $     | v p j d ^ X R L F @ : 4 . ( "     z t n h b \ V P J D > 8 2 , &      ~ x r l f ` Z T N H B < 6 0 * $     {wٝs͝okgc_[WSOK~GxCt?l;j7g3d/`+\'W#S QMFA97 30( |xuqm iea]YURNJFٜBԜ>Μ:̜7ʜ3/+'#  }yuq}muipenbc_i\gYdVbS^P\MOJTFRBM>I;D8>4;03,0()$& "՛ ~{xȚtplhd`ך\њXΚTʚPÚLHEB>;841.+'$! |yxqm{jxfu r_o\k ggc _ Z\PYNVLSHPDLf:b7^4Z1V,R*N(J&F#C@=951 -)% !        { ݖw ږs ˖o Ֆk Жg ͖c ǖ_ Ŗ[ W S O L I E B > ; 0`9rK# \ 4 o H [ 3 n G  Y 1 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800I'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800M&Q!fcdNYFWFyxmdpKAknc:localhost:8800p'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:88003'Q!fGkUEndqGrieltwbCh:localhost:88009'Q!fDISaqNBhlOwherxSt:localhost:8800h&Q!eySSVuCclRpBDgwKIU:localhost:88004&Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:88001&Q!edbUkYJIZBNOiTuLJs:localhost:88006'Q!eZjhYVNpwdogVDKHCk:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800&Q!eLsrBEnrHolwCNgkFW:localhost:8800c&Q!eKrOqiOabJcMgIJjwC:localhost:88008&Q!eJPTUgihvSwaOhIkrC:localhost:8800}'Q!eGEEtFXUXuZDImkeql:localhost:8800'Q!dvZnfJonDkxlrrDXUk:localhost:8800P&Q!duCKuavMBSfRbTFPsc:localhost:8800$'Q!drnXStKXkNQkouqUAg:localhost:8800&Q!dnZVySJLGNtUKsSgXW:localhost:8800e'Q!djwLhpJUYOKsgQtrky:localhost:8800&Q!dWgOTucBVQBKZjfndN:localhost:8800m&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800'Q!dBfASZrfiFeSKTjYJm:localhost:8800'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800&Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800+'Q!cidyuyekVzJHHvyomb:localhost:8800?&Q!cSUQGmpIsSCBAVTOHo:localhost:8800.'Q!cRbfhxZdPstEsPGPAu:localhost:8800v'Q!cOFSwLSkxZECJMvjjZ:localhost:8800&Q!cHtqiAyCHEAoBIbCmL:localhost:8800C'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800&Q!bnTuVBaAJTPbcYZtRl:localhost:8800`'Q!bkwyieHZwSMJfuSKvV:localhost:8800'Q!bjdLCdBwkKaihRIRFG:localhost:8800~'Q!biBIcqnGelHvLnpkOu:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800 )*) "Q']e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.member@astest-1-20191002_181700:localhost:8800$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4oo!Q? e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.history_visibility$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMsg Q/ e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.join_rules$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8iQ3 e !QWLJZmJqjWZjVOjdYF:localhost:8800m.room.power_levels$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624  wV}eQa9$ijIgmOhNSPuI_yOc-Arz4esewfkKmo5c-TWJ_CAna4o!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 803, "stream_ordering": 3877}{"auth_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624", "$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8"], "prev_events": ["$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs"], "type": "m.room.member", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@astest-1-20191002_181700:localhost:8800", "content": {"membership": "join", "displayname": "astest-1-20191002_181700", "avatar_url": null}, "depth": 6, "prev_state": [], "state_key": "@astest-1-20191002_181700:localhost:8800", "origin": "localhost:8800", "origin_server_ts": 1570044136658, "hashes": {"sha256": "qPSw17sEd9to0vTgetuo/GOkWaK8gNbHUm6Vc5sbSQI"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "H0KNGWKJIQdLhkueNVkyFv3F4nVfj0rsqvUAqO4bVV7maQIa441z5T7uNn5NrQbLcXB8OcM7kXF4RIySGTD7AQ"}}, "unsigned": {"age_ts": 1570044136658}}|eQa$XAayQk7EZ3DqzyKCbhNpUGFFVNDQtYZjX3ofNwuQEMs!QWLJZmJqjWZjVOjdYF:localhost:8800{"token_id": 802, "stream_ordering": 3876}{"auth_events": ["$jVCoIl7-e_VTvTT0EZjfJlrWFVnmmqPUl_gyjXYZ624", "$NtT9grzQC73iY_c7hKgQAtIIDo2Nb7dD-_Ybpck0KVU", "$YJj_EnF27GDsjhLz9LjF7AYmCZSsE2lIl8xZoo8gp5Y"], "prev_events": ["$Hbjr15bk25Mc_6zfqLVfY0GQALb_uSWeeJyIIwlnhk8"], "type": "m.room.history_visibility", "room_id": "!QWLJZmJqjWZjVOjdYF:localhost:8800", "sender": "@anon-20191002_181700-832:localhost:8800", "content": {"history_visibility": "shared"}, "depth": 5, "prev_state": [], "state_key": "", "origin": "localhost:8800", "origin_server_ts": 1570044135444, "hashes": {"sha256": "r88OW1DTfDnWeBN1fpm5miHeMHk18osDgUuJvWddzs0"}, "signatures": {"localhost:8800": {"ed25519:a_OdAo": "4nfhzQRDwovP/Zj7NFjK///sxvuf8t6vY0xoCR60AocZRV2SGjo8hoUGoMakQWQw3PMYKX9Gzx1vX3Ccf3/ICw"}}, "unsigned": {"age_ts": 1570044135444}} ) |?Q m L  X 4 | X,d5 =anon-20191002_181700-400{"room":{"state":{"lazy_load_members":true},"timeline":{"limit":10}}}b==anon-20191002_181700-397{"room":{"state":{"lazy_load_members":true},"timeline":{"limit":10}}}Z<=anon-20191002_181700-392{"event_format":"federation","room":{"timeline":{"limit":1}}};=ranon-20191002_181700-390{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.receipt"]},"state":{"types":[]},"timeline":{"types":[]}}}:=ranon-20191002_181700-389{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.receipt"]},"state":{"types":[]},"timeline":{"types":[]}}}9=panon-20191002_181700-388{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.typing"]},"state":{"types":[]},"timeline":{"types":[]}}}8=panon-20191002_181700-387{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.typing"]},"state":{"types":[]},"timeline":{"types":[]}}}7=panon-20191002_181700-386{"presence":{"types":[]},"room":{"ephemeral":{"types":["m.typing"]},"state":{"types":[]},"timeline":{"types":[]}}};6=Janon-20191002_181700-385{"room":{"include_leave":true}};5=Janon-20191002_181700-384{"room":{"include_leave":true}};4=Janon-20191002_181700-383{"room":{"include_leave":true}};3=Janon-20191002_181700-382{"room":{"include_leave":true}};2=Janon-20191002_181700-381{"room":{"include_leave":true}};1=Janon-20191002_181700-380{"room":{"include_leave":true}}$0=anon-20191002_181700-379{"room":{"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["m.room.message","a.madeup.test.state"]}}}$/=anon-20191002_181700-378{"room":{"include_leave":true,"state":{"types":["a.madeup.test.state"]},"timeline":{"types":["m.room.message","a.madeup.test.state"]}}};.=Janon-20191002_181700-377{"room":{"include_leave":true}}R-=xanon-20191002_181700-375{"room":{"include_leave":true,"timeline":{"limit":1}}},=anon-20191002_181700-374{};+=Janon-20191002_181700-372{"room":{"include_leave":true}};*=Janon-20191002_181700-371{"room":{"include_leave":true}};)=Janon-20191002_181700-370{"room":{"include_leave":true}};(=Janon-20191002_181700-369{"room":{"include_leave":true}}E'=^anon-20191002_181700-368{"presence":{"not_types":["m.presence"]}} AA=anon-20191002_181700-397==anon-20191002_181700-392<=anon-20191002_181700-390;=anon-20191002_181700-389:=anon-20191002_181700-3889=anon-20191002_181700-3878=anon-20191002_181700-3867=anon-20191002_181700-3856=anon-20191002_181700-3845=anon-20191002_181700-3834=anon-20191002_181700-3823=anon-20191002_181700-3812=anon-20191002_181700-3801=anon-20191002_181700-3790=anon-20191002_181700-378/=anon-20191002_181700-377.=anon-20191002_181700-375-=anon-20191002_181700-374,=anon-20191002_181700-372+=anon-20191002_181700-371*=anon-20191002_181700-370)=anon-20191002_181700-369(=anon-20191002_181700-368'=anon-20191002_181700-367&=anon-20191002_181700-366%=anon-20191002_181700-365$=anon-20191002_181700-364#=anon-20191002_181700-363"=anon-20191002_181700-353!=anon-20191002_181700-352 =anon-20191002_181700-351=anon-20191002_181700-350=anon-20191002_181700-349=anon-20191002_181700-348=anon-20191002_181700-347=anon-20191002_181700-346=anon-20191002_181700-345=anon-20191002_181700-343=anon-20191002_181700-342=anon-20191002_181700-341=anon-20191002_181700-339=anon-20191002_181700-338=anon-20191002_181700-337=anon-20191002_181700-336=anon-20191002_181700-335=anon-20191002_181700-334=anon-20191002_181700-333=anon-20191002_181700-332=anon-20191002_181700-331 =anon-20191002_181700-330 =anon-20191002_181700-329 =anon-20191002_181700-328 =anon-20191002_181700-327 =anon-20191002_181700-326=anon-20191002_181700-321=anon-20191002_181700-320=anon-20191002_181700-319=anon-20191002_181700-318=anon-20191002_181700-317=anon-20191002_181700-315= anon-20191002_181700-314 N~z | x ~ zvrnjd`\UN Q]e!OCEHAjcOXWNyWIESIS:localhost:8800@anon-20191002_181700-616:localhost:8800$sUdCblfGl4teFh_9eel7LxsvNIra-ZowQbs8oj4mPBsjoin Q]e!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-613:localhost:8800$lRiqGXHE_yYrwms84pQMYOb80Eteez9u9eiBs3IKJpoinviteQ]e!qjijQBfMwsCPTVgKPm:localhost:8800@anon-20191002_181700-614:localhost:8800$DG7GnpzQ4lIKtNUMPXJ5uukO3Wy5lAv36SbEzefaZ5ojoinQ]e!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-611:localhost:8800$aIP_WDNUdqmdqBlru7jlhQhKSOT4WFLFamyuA1LXi2oinviteQ]e!kjjUsMowsioSQRIJeg:localhost:8800@anon-20191002_181700-612:localhost:8800$oCwyGrbznj3KY5UTNvSCiTUyRW1lCW5x5OHQEePsJ1YjoinQ]e!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-610:localhost:8800$LxXsBrW4D__sjC-PN8cgehS3vtcpylnHHXeg2PZrEwIjoinQ]e!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-609:localhost:8800$xqBxHOBZLalD9eT7hoDJH9kCgaGERiC_se8DQxqwDYEjoinQ]e!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-605:localhost:8800$-1ieXlj7gVam4hVhPPC5nZTmDc_-NguoKc7Gcptr7VcjoinQ]e!UTAORDrNxIbSlGByAp:localhost:8800@anon-20191002_181700-608:localhost:8800$sX-il-tijZPWV_li39c1SYIOkB4wu-0AnxdG8hkWza0joinQ]e!zqQJfFCRlSEDPKlQPy:localhost:8800@anon-20191002_181700-605:localhost:8800$HpK18o7LLAapKQ__3NDmdIW17BIiA2Y0aVOaFGNguoUleaveQ]e!MXhwoqNXvexeDDSOZT:localhost:8800@anon-20191002_181700-606:localhost:8800$TCw8faRg7sv7c9YkF9GmCIi8wcDQ9cNIeR93YmAF1vcjoinQ]e!JnAKXOrlyisFUpgJPw:localhost:8800@anon-20191002_181700-603:localhost:8800$EMEWak4TUEt77sjBxkrDe5jQdfRoIigdqRlYr-NhuHsjoin~Q]e!XRAZJeoZBhGeHKKjaG:localhost:8800@anon-20191002_181700-601:localhost:8800$AAjyFsVCwT-zdxUW4KdMrYmJEdLiijPSmKWTrlqLW8Ujoin}Q]e!GwLdUoDplyVUogXDzu:localhost:8800@anon-20191002_181700-584:localhost:8800$OaXceoyCWKWIEShoYEVC2XQFJAj3lczHvOcrn-DLOiQjoin|Q]e!nfxDdcgDfooxyiAzaB:localhost:8800@anon-20191002_181700-583:localhost:8800$euGr3VEog-jGjXWunbUaQ0KixRQ08YER468aZAng5Ogjoin{Q]e!XGAmnfaVvjDtQJuufa:localhost:8800@anon-20191002_181700-582:localhost:8800$d1OMqm2tCwEdqpw6QmgCgW0GiJ8n4b7Cfbr_upue_9YjoinzQ]e!OXpGdKbowFUTChPdmF:localhost:8800@anon-20191002_181700-580:localhost:8800$Y1LekyFrrI6ojqSmRINC3xkHDFfN1DzQggGo2OyqVRIjoinyQ]e!XUbDuPDiMTXJZDyAPc:localhost:8800@anon-20191002_181700-579:localhost:8800$1yEMU-rGZHlquKYDDqEySbeAMR0R7PjYul2gfKL-dDUjoinxQ]e!VhUAklonNaWKRnLkcr:localhost:8800@anon-20191002_181700-578:localhost:8800$tbkBgk52o_F9Ih_Y43TcG0z1HMAA2aYzN9r0RN7f61EjoinwQ]e!ybXveQoxPVhjpKHAkG:localhost:8800@anon-20191002_181700-577:localhost:8800$9U3f2ptLpFPqqAgxqU5H7OW6QA8rvg6w1dUMXcpocjkjoinvQ]e!ijOiudvuzOLNmgNKfG:localhost:8800@anon-20191002_181700-576:localhost:8800$QIL5UNCSJMTJIflUWrxxmdPPcmkDXuSfhtdlMC797SojoinuuQ]Q!hrhDJbmXvXBizKoiiK:localhost:8800@anon-20191002_181700-574:localhost:8800$1570043192266CXqej:localhost:8800jointQ]e!iLHJbsFszubrnybDNz:localhost:8800@anon-20191002_181700-574:localhost:8800$nu3vO8J84-fbKbgLr2av8mEMQET4TbvOxO5dOFG0X0YjoinsQ]e!hGsPmWXboxZZtOlsxY:localhost:8800@anon-20191002_181700-573:localhost:8800$yO3dAn39G0Y6Zz_CqcfxrrTGkarc2pm3yRY05YMCbiIjoinrQ]e!dvZnfJonDkxlrrDXUk:localhost:8800@anon-20191002_181700-572:localhost:8800$LBL0ZcJZB6Ji2uDvgz4fSJ6TS0bra9_oR5cNOA2j2eAjoinqQ]e!vZGjXEXQoCaoUXnkCa:localhost:8800@anon-20191002_181700-571:localhost:8800$ICcBipm9HRbin-uNe4GQHwQM2oERUxaPPxPa276MMn4joinupQ]Q!GBPGYLDkXcAsHgkfuS:localhost:8800@anon-20191002_181700-570:localhost:8800$1570043151259knbjg:localhost:8800joinoQ]e!fdEymmlcUvjgshvVyl:localhost:8800@anon-20191002_181700-570:localhost:8800$SnXeqZ2McsOlDfkyxprt4aJk2ht9xfDAYxDy0lnGxgojoinnQ]e!xcdNyJNFEdaBGFycsB:localhost:8800@anon-20191002_181700-569:localhost:8800$zlc_hNAqtQl25hgRXUW9AvSqC9MFGN4yjlW57XQabpMjoinmQ]e!SUDzkfFBgpuCANOxRS:localhost:8800@anon-20191002_181700-568:localhost:8800$gfhRqgT0VK2hEKQDoLIujDO7UhAEbKjqRid_QkEPtB0joinlQ]e!rWmvvGBgmFMdVvcfPk:localhost:8800@anon-20191002_181700-567:localhost:8800$CIZbPJf9CrFrHbjcWAGf5zUJ8vFjR_kwA6RLMdopieojoin     $ S-)/5EA=JQ]e!jomrpmwwQQtghscizn:localhost:8800@anon-20191002_181700-701:localhost:8800$Ebpk3-BUFMIFxMwScwZZTWKj9yeCpz6DUZrrjdtr4i8joinIQ]e!jomrpmwwQQtghscizn:localhost:8800@anon-20191002_181700-700:localhost:8800$uta7DjJrrdo4iFYh0ksLYle4YMMqvuHrP3hqkclgXyojoinHQ]e!ABHbfUdkHCJksMsaUt:localhost:8800@anon-20191002_181700-698:localhost:8800$slyn7RAXvZ1G9h3ahTBQQsdh7I2BQHcToZbjiwr31ucjoinGQ]e!DntdfAPfCfgdOoRMdl:localhost:8800@anon-20191002_181700-691:localhost:8800$atEhdEP7B0chmhd3eVEXJsSUw19Z7CweFmgIx-LUkAUjoinFQ]e!THHfVSOSWiBQTHRAnJ:localhost:8800@anon-20191002_181700-690:localhost:8800$FlsAMcuiR8Ana5jRY3xh1POre8Rxn-Igfa25aSgaCrEjoinuEQ]Q!KetCYFxrTxawNOGnOf:localhost:8800@anon-20191002_181700-685:localhost:8800$1570043746461eQhrq:localhost:8800joinuDQ]Q!JiUawCFQnodcpssOfK:localhost:8800@anon-20191002_181700-684:localhost:8800$1570043736453VtbeL:localhost:8800joinuCQ]Q!NgkQVVUNzoyCVPtckM:localhost:8800@anon-20191002_181700-683:localhost:8800$1570043727446CGYaE:localhost:8800joinBQ]e!lgejtcwlywOoIXwEgy:localhost:8800@anon-20191002_181700-682:localhost:8800$0UsMjffJtxAz-AhIW2GP0vYdtxvPcaS2UFA_ouIZAkEjoinuAQ]Q!PUIxAaiCnbqaVbawGu:localhost:8800@anon-20191002_181700-681:localhost:8800$1570043711438bqOHL:localhost:8800join@Q]e!OJilSqnQvLgoXSqRaW:localhost:8800@anon-20191002_181700-680:localhost:8800$fkWK83txFF7hKuwpxig5NaXyRcEKhjwHdjjiF0R-kbYjoin?Q]e!SrwdtDytJDUBVZOueF:localhost:8800@anon-20191002_181700-679:localhost:8800$sDe6KIFJ8ZsGhb_qyrScq6WNxx7x8kBAJ27p_WxXQHYjoin>Q]e!PVyTvKbqnjSXfGWAMy:localhost:8800@anon-20191002_181700-678:localhost:8800$b3jxYVBtaV5nvVAVaIV4wNwJgYb6D6H92ReePE2ND4gjoinf=3]Q!13:localhost:42455@anon-20191002_181700-677:localhost:8800$1570043683436iTOlZ:localhost:8800joinf<3]Q!12:localhost:42455@anon-20191002_181700-676:localhost:8800$1570043680434abJWo:localhost:8800join;Q]e!nhbUIcIbhuXkRqfeDa:localhost:8800@anon-20191002_181700-675:localhost:8800$MkKPSboRGjZ0VvHKooWTEjv8SPpMbGeVR54j4NnKzDIjoinf:3]Q!11:localhost:42455@anon-20191002_181700-674:localhost:8800$1570043670433bjAzo:localhost:8800joinf93]Q!11:localhost:42455@anon-20191002_181700-673:localhost:8800$1570043668432TfiHj:localhost:8800joinf83]Q!10:localhost:42455@anon-20191002_181700-672:localhost:8800$1570043664431IMLSL:localhost:8800joine71]Q!9:localhost:42455@anon-20191002_181700-671:localhost:8800$1570043660430kLPpN:localhost:8800joinu6Q]Q!SnROoiDBapNNtMmKnT:localhost:8800@anon-20191002_181700-670:localhost:8800$1570043653425AhyPB:localhost:8800joinu5Q]Q!uGpSboYkgxVNOqNeUG:localhost:8800@anon-20191002_181700-669:localhost:8800$1570043646419zIOAX:localhost:8800join4Q]e!DSFBpkqfnvBQbGoMUK:localhost:8800@anon-20191002_181700-668:localhost:8800$U-cEyWSXj6r1586dNj6VXfesdgGTdZ7OOonX6jzUlzAjoin3Q]e!ZKPJvrCZHMHPEksYDc:localhost:8800@anon-20191002_181700-668:localhost:8800$wRCm61ZCi36Y53pxWwHZmoGDIKPUVFV5RxoF0HGIZkUjoin2Q]e!PgNDjhhIBAXKryuGKy:localhost:8800@anon-20191002_181700-667:localhost:8800$9ZnK2_x7bqF7C4Z4LAQTQ9cV3Pi_6ce37_u_6f63iXAjoin1Q]e!vnFXnkCSfTbsSNKrtg:localhost:8800@anon-20191002_181700-666:localhost:8800$2Nazok5xoq9FoL4nTpNiAKrFZGf_DAxK_Snn0umq9lQjoin0Q]e!jRuDexjFzIDOKbwDJQ:localhost:8800@anon-20191002_181700-665:localhost:8800$nIysxcoHlHY8WipSX_BsdQgN1MIf-7aQk3Zre5r9gucjoin/Q]e!KcXNWNfbLcYsBKZHIp:localhost:8800@anon-20191002_181700-664:localhost:8800$ULpPgg_TjghglqCjFZmqmwPIQYVKsmuFX2zvUYIfEu4joinu.Q]Q!dBfASZrfiFeSKTjYJm:localhost:8800@anon-20191002_181700-663:localhost:8800$1570043590413Khvee:localhost:8800joinu-Q]Q!taANXnGBZntAreRurn:localhost:8800@anon-20191002_181700-662:localhost:8800$1570043580403vYYeb:localhost:8800joinu,Q]Q!tcYctHPiaKzsKgrXlU:localhost:8800@anon-20191002_181700-661:localhost:8800$1570043579402KDYtE:localhost:8800joinu+Q]Q!drnXStKXkNQkouqUAg:localhost:8800@anon-20191002_181700-660:localhost:8800$1570043567391GonfI:localhost:8800join ~z v r n j fb^ZVRNJFhQ]e!ZOpRjvUhkWYJBFJZeO:localhost:8800@anon-20191002_181700-735:localhost:8800$-B0vZ3UldmrKmAK_Fx600vdqPTlyFbeLWaLGRVWCJV8joingQ]e!ZOpRjvUhkWYJBFJZeO:localhost:8800@anon-20191002_181700-734:localhost:8800$tVT52tIQ7X0n4shhwI0MohOt8c0wFrs2vryHUd5fcxIjoinfQ]e!BPNyKqmwcpGxIbGFZG:localhost:8800@anon-20191002_181700-733:localhost:8800$oAM_wHFNwX4DHQSIF8hDUZucbS2wo20RcixfAEKYm1EjoineQ]e!BPNyKqmwcpGxIbGFZG:localhost:8800@anon-20191002_181700-732:localhost:8800$ljsIx7HQEAzN19xV1aB-qVRY4shy4fvXkO8ZSldT3V8joindQ]e!ZOwibbprUCQrSJQCrx:localhost:8800@anon-20191002_181700-731:localhost:8800$6DsyHhJO9ZIT3BzoqtcJ7Wyd2dhzp6OswcBdhmlFDrAjoincQ]e!ZOwibbprUCQrSJQCrx:localhost:8800@anon-20191002_181700-730:localhost:8800$xgVdDsW3oJTeIjLWHxxwynpFZfQ-N6hUGbKnGXkpCScjoinbQ]e!qtelAHlSkrqEFmlCqS:localhost:8800@anon-20191002_181700-729:localhost:8800$IEEMvL1rSKgpjzuGE1Z1DaOWDD2Xug51ypj739gKDY8joinaQ]e!qtelAHlSkrqEFmlCqS:localhost:8800@anon-20191002_181700-728:localhost:8800$qY-OISJ41WsGU6KnUh5FzMHtqZB94vd337qecI6Mc00join`Q]e!NcJYmIbgjsaKJOzBcs:localhost:8800@anon-20191002_181700-727:localhost:8800$IsUXJuY2uEVhEiHyGeALTHUZBJ5xuAPw7KUOFCUr0vMjoin_Q]e!NcJYmIbgjsaKJOzBcs:localhost:8800@anon-20191002_181700-726:localhost:8800$5GInsH8tGuYQOdkKLEssF9YunE0EBIHh9-nceCPBi8cjoin^Q]e!biBIcqnGelHvLnpkOu:localhost:8800@anon-20191002_181700-725:localhost:8800$Tyk7Ln_Apv8qheAFMgP2aSKFMbu-8Dun-C7ONd35urkjoin]Q]e!biBIcqnGelHvLnpkOu:localhost:8800@anon-20191002_181700-724:localhost:8800$7wY2wWJPSogZKX50rSYin4OrP3Ntosj5CWPEjWHWBNAjoin\Q]e!yNfCaBMPezurwkJRAX:localhost:8800@anon-20191002_181700-723:localhost:8800$4pfxc3uR5HIt4vYJwywzl53yUEnHx8HkMegygWatNokjoin[Q]e!yNfCaBMPezurwkJRAX:localhost:8800@anon-20191002_181700-722:localhost:8800$aJlNOATmSHGajRKIQytyis6nqEL-GfYDcKokrbdtiP8joinZQ]e!BKZJsoFNhiLTDYNclB:localhost:8800@anon-20191002_181700-721:localhost:8800$iH5HBqL2wean7Ih2ajxOJieOBr_39Tmv7lglYX5lfi4joinYQ]e!BKZJsoFNhiLTDYNclB:localhost:8800@anon-20191002_181700-720:localhost:8800$lM9g_3EYXYQAf99272I5qo6e-GjuNgjWDUtti0gFWK0joinXQ]e!aiOswwhoZqjhcjzbzc:localhost:8800@anon-20191002_181700-719:localhost:8800$IAT_J_oe3qt3drEv6D1La9uWjIFHnrXsranJ_hAWSQgjoinWQ]e!aiOswwhoZqjhcjzbzc:localhost:8800@anon-20191002_181700-718:localhost:8800$O85AA-eOUTVYRlyLv_zWja1aXXT1nfaRr1akUW3qk2wjoinVQ]e!IYxUkyFHOgvhLpdkOA:localhost:8800@anon-20191002_181700-717:localhost:8800$4y-k1kV8Ls3iyS1dx0bNbifrhnbd1GefQSNiMcm-TNsjoinUQ]e!IYxUkyFHOgvhLpdkOA:localhost:8800@anon-20191002_181700-716:localhost:8800$kSRUEOlFhe_5BEylB3Y95WyljqCWp5O6n6m6OlXsk3IjoinTQ]e!anErKtXIsVKEEsrzWM:localhost:8800@anon-20191002_181700-715:localhost:8800$NjPfhoaWG6pM9TSAa_eT5ryrN-ppCMcYIC4bkbaIZ6IjoinSQ]e!anErKtXIsVKEEsrzWM:localhost:8800@anon-20191002_181700-714:localhost:8800$yeeYYofKGSYunv-pYYr9dsL8GC51CJ2QbVTFd64riyojoinRQ]e!TcCLuIBUrtFqghDgay:localhost:8800@anon-20191002_181700-713:localhost:8800$0PK5gOlBWI6GJbNmfEZWmQQqwZusQF3e3lB2zJak-jEjoinQQ]e!TcCLuIBUrtFqghDgay:localhost:8800@anon-20191002_181700-712:localhost:8800$ChL2q-Q25XhVtp8Gbty9hdamYl3HHqhJ5mtMXK6QpdEjoinPQ]e!yWhIsLsgNVGcnELrDS:localhost:8800@anon-20191002_181700-711:localhost:8800$Dl589Rl8XM52eEbib2OABBiO4YeCCP7uw2F3DasWPF4joinOQ]e!yWhIsLsgNVGcnELrDS:localhost:8800@anon-20191002_181700-710:localhost:8800$M92U7YjNFzTzBhO-8qJ8yTdKpwXMZydJqTY8ndN34g0joinNQ]e!wCsDjKBtuUbrmZgjsB:localhost:8800@anon-20191002_181700-708:localhost:8800$RannkM6oJrLwSKa3j5dMfBERFVvHtvOS2Uf8vPw8kvQjoinMQ]e!SpXEytywhTbAftyVBr:localhost:8800@anon-20191002_181700-706:localhost:8800$a38nyOl_JcLdPHNjrNH57UpEGSW298WRGGN8OpCo6j4joinLQ]e!itfjLXhEaORJLkbfVS:localhost:8800@anon-20191002_181700-704:localhost:8800$nSRUPO5oX__jXqRBOYQ2paap5pdfIR-Rot9MDPSamAcjoinKQ]e!GsjDgpaxdwYfnefiWO:localhost:8800@anon-20191002_181700-702:localhost:8800$nLSfV3PWGmXsSePEyiLJ4-2UMXXzWKUxF22gEj7gsBIjoin ~z v r n j fb^ZTNJFBkQ]e!gXfXRDTXeVvOHQdaaQ:localhost:8800@anon-20191002_181700-566:localhost:8800$z52P2jhJf3FmZplbhBS61P85jpHXy_T0m5gUjpSj8r0joinjQ]e!hegUPDZCEEmBhsNJJR:localhost:8800@anon-20191002_181700-565:localhost:8800$vZj2ADYk1SHio-ixDwI9ieijxZu3lLnUvoMhWd44BgcjoiniQ]e!aSKNKSGXPGoIbSrbEN:localhost:8800@anon-20191002_181700-564:localhost:8800$-8WyV9kqAQuZNs5CHgq0Zs8-ybrrAuyZqKlC--IMD-gjoinhQ]e!peJMRJtXBvIiCttNmm:localhost:8800@anon-20191002_181700-563:localhost:8800$3Xtxt8RiY3cNCj3B46HPzC86ABdpOAEQrnFD3VWDh4IjoingQ]e!tPkCGJBKmqUXJoRrnY:localhost:8800@anon-20191002_181700-562:localhost:8800$kLQohhYZ-segU-tyLjG4ba3DrhJsAUEQZMt-DwXMoeAjoinfQ]e!QnmLrBAxeItdHsaxWf:localhost:8800@anon-20191002_181700-561:localhost:8800$t90IexHozI-qIa8Aph6fAZ-f6LuzfnIVoX9RACOFnvIjoineQ]e!hFwigdYZkwYNSwelRH:localhost:8800@anon-20191002_181700-558:localhost:8800$rK2ZbrA6bGKKsbgssNcgAXVlmp71h7aAugLYiuWuFnQjoindQ]e!paDmNxsOZIKyApbxXs:localhost:8800@anon-20191002_181700-556:localhost:8800$dPYFcNoXC8o7tNxMczGoXNWBaxacXMTPu0qjpu75S9EleavecQ]e!paDmNxsOZIKyApbxXs:localhost:8800@anon-20191002_181700-557:localhost:8800$XCogLG6lM5oGe9vjPXSDCdOjBZ2GEtaY1r4oiV1ULr4joinbQ]e!OtBUhGeUSiDMWRKIOT:localhost:8800@anon-20191002_181700-555:localhost:8800$MxB82yf921hRya6MFJtAhFbAG_XjSpEQhzqXc5AfnHcleaveaQ]e!OtBUhGeUSiDMWRKIOT:localhost:8800@anon-20191002_181700-554:localhost:8800$XqbYmEE54rrODDabU_tikz-cXGJgLqNA_ur_7OmBCuojoin`Q]e!zHBgbzUZHshNGZvIBS:localhost:8800@anon-20191002_181700-552:localhost:8800$v6eL58-KTEc1vpGzt8Q7N4AmldUDpPM8t4CmRzuPsMcjoin_Q]e!cidyuyekVzJHHvyomb:localhost:8800@anon-20191002_181700-551:localhost:8800$lsbO-wp1cw1g-i-W4B73S7fSmmYE_q8IBpoVnWPTC1Ajoin^Q]e!cidyuyekVzJHHvyomb:localhost:8800@anon-20191002_181700-550:localhost:8800$s9AjnEA60OaddCTDJwtTkX9qIROVIA5w3MrKiaVWEswjoin]Q]e!pduebXnTyxQWVxEICp:localhost:8800@anon-20191002_181700-549:localhost:8800$rrTaWt3otp6Nx_7-wR35ZadYI04rW95N1TDkX-QThUcjoin\Q]e!pduebXnTyxQWVxEICp:localhost:8800@anon-20191002_181700-548:localhost:8800$twOf1begnHRMxPIf5Hx7HzQT0L_EzToEKYJ--qTK7Yojoin[Q]e!ZvLVbnHjeymRiFIkYr:localhost:8800@anon-20191002_181700-545:localhost:8800$MohE5BeCsYA67bLgObpgdIgPstuy51gq2qoCmvqZ590joinZQ]e!VUibrTIkcRbfrogbQV:localhost:8800@anon-20191002_181700-543:localhost:8800$J-oIAHel7EX8aZGKO89tVs8T4XvPmb4Hz6YMgEyYWEIjoinYQ]e!WpThtNEVhrUbUdCdMJ:localhost:8800@anon-20191002_181700-541:localhost:8800$04gsxRRv6jtBv_je15qwiWNjtqkDEHu4A1jNcgfzEzgjoinXQ]e!vRmMcoJDeCupADwqac:localhost:8800@anon-20191002_181700-539:localhost:8800$C5O4eAgnOtrMuvosT0hN5ptCyuRB8b2lWw8rh8Uqlr8joinWQ]e!fGkUEndqGrieltwbCh:localhost:8800@anon-20191002_181700-538:localhost:8800$9Lx-JUyILpgpsdT6P1bAlF0nbIinXPmAfFIp7w8iYE0joinVQ]e!fGkUEndqGrieltwbCh:localhost:8800@anon-20191002_181700-537:localhost:8800$YbOgS1ONZ3pOEi7Qlm54VfMV3N_P41rFYusHafoLvkkjoinUQ]e!atnRTMliktaVUhMVID:localhost:8800@anon-20191002_181700-536:localhost:8800$p11ZDGOvmpa2B_DX3D-cYhG-kLz5kFKexG8pA-B_wBQjoinTQ]e!atnRTMliktaVUhMVID:localhost:8800@anon-20191002_181700-535:localhost:8800$1CtPShvaGaRtr-rkK5Qgf-EMFIg8F9aiQTf6qYAKzpwjoinSQ]e!PHkVrXAyfGkFtzSagu:localhost:8800@anon-20191002_181700-534:localhost:8800$Tvrgn9CIqQmikQ9KoEAEb9B3i7mAVYJ31vTu0Hhy-8AjoinRQ]e!PHkVrXAyfGkFtzSagu:localhost:8800@anon-20191002_181700-533:localhost:8800$Bi6s0sorxL0eJuYQQRQJrEPei1RY-tHJ-V-KQR9XVDwjoinQQ]e!EhFUhsgQbBWmrnGmaz:localhost:8800@anon-20191002_181700-532:localhost:8800$bn8CbVFjUpG3oEMlW8ZvNfCr3icsfN3lPCn5vzAXikUjoinPQ]e!EhFUhsgQbBWmrnGmaz:localhost:8800@anon-20191002_181700-531:localhost:8800$vR8wYmNGrU-iADLzVgPQBcQZ3Pb_f0AtaxvA7YtegkkjoinOQ]e!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-521:localhost:8800$Zcpk4yWOptSrEgZHkgmRKjVKpXo2Con_2X9zFnDHfdgjoinNQ]e!wBkUBAjOznOyxrLchl:localhost:8800@anon-20191002_181700-520:localhost:8800$RAPCStuYRQnW5t_r3zTkJd6rj-NvafhtIkTRzO0OSfAjoin ~z v r n j f`\XTPIB<SQ]e!fkvdYkesQOFCAQkzky:localhost:8800@anon-20191002_181700-369:localhost:8800$-vJlWLbSG-WmlREaOy5Sa46nPtnuBs9WKleh1sRKlxYleaveRQ]e!OWGKxAmTrHLciIdrJi:localhost:8800@anon-20191002_181700-368:localhost:8800$POCfjXwMkfHOl-GaTgb-_HEM1fPenp8zBehLI_zkE90leaveQQ]e!aknLNLxfChlLvFYhkJ:localhost:8800@anon-20191002_181700-367:localhost:8800$yjdW9951tem77j23ZGDMUJyGdKceOSWesQsFia1UXosjoinPQ]e!HWTlaNxUKnDsrtlOxU:localhost:8800@anon-20191002_181700-366:localhost:8800$abAIUfiB_YdWDnFQAubDj0n0-HKCYvU6hnV5NilDt4ginviteOQ]e!HWTlaNxUKnDsrtlOxU:localhost:8800@anon-20191002_181700-365:localhost:8800$P2NYSEejOh1PwK10Hqv5okYMgwto2TMS9Jzjs78W1oMjoinNQ]e!pUSFAnuwUuMlbiInDR:localhost:8800@anon-20191002_181700-364:localhost:8800$L4-M8dBLfPem95dEbsAfO7eBv6u91myEKaotp4I64KsinviteMQ]e!pUSFAnuwUuMlbiInDR:localhost:8800@anon-20191002_181700-363:localhost:8800$bUx5vbjaS8lMWhW-L0rLEpFv_KDZat0MX4b-qVt-3GEjoinLQ]e!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-361:localhost:8800$UveQE1tZHn7xlRV0uvbMdQlsybT-iHqTxIvhMx-Jwj4joinKQ]e!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-362:localhost:8800$mP8IHze7PQkx53FhqhSAYCUHSfR-UU6YI9yRoLtwtcUjoinJQ]e!SrMQpDMFREKRMELwbL:localhost:8800@anon-20191002_181700-360:localhost:8800$KWmK2sPIWN4LnBkeVhvb7ID2Qpi5jMRQ89gKpuFvr-QjoinIQ]e!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-358:localhost:8800$tc_3RzILkzXUzx0u_om78r2-VNSLA_X-kDFrcik8MxMjoinHQ]e!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-359:localhost:8800$aUGUd2giq_6v7KciNiK2gvL26luQSt-m0xMZhbVxTLgjoinGQ]e!bNSXSTadOMhIrYpMzH:localhost:8800@anon-20191002_181700-357:localhost:8800$4c5Z8IAelW0kTsX0dW8PC8eOkPj-_u2mcbOPb0Br8T0joinFQ]e!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-355:localhost:8800$xGsGn_-EohnyAMHPzaEJeyFRyRVkC7gyElLkV9znUjojoinEQ]e!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-356:localhost:8800$qPPAYeMGqXNkw_WiZ2L570SsYEyS0MhBMRMLVPTEt7gjoinDQ]e!TlJCaYlCkOOVzFDlLx:localhost:8800@anon-20191002_181700-354:localhost:8800$6WOf_UVlf3nLJf-pC2HJ5MhF4mVCuJT7Gi1c4fS9tLwjoinCQ]e!bOSxzttDtclnrWnLov:localhost:8800@anon-20191002_181700-353:localhost:8800$9j8BsHwcDgDkl2tM10BQ-gIRxdEebzBQDGEqreHPAUkleaveBQ]e!bOSxzttDtclnrWnLov:localhost:8800@anon-20191002_181700-352:localhost:8800$0le6nJ6d2B8GJFIPfAIEt4gont5JS9b9ouRVR_tSIskjoinAQ]e!DnUHoxreGexNmjSVpq:localhost:8800@anon-20191002_181700-351:localhost:8800$HYOiqIKqQvROrV7-_MYOoyPKetT2Skwi-aDqwjDj_K0join@Q]e!DnUHoxreGexNmjSVpq:localhost:8800@anon-20191002_181700-350:localhost:8800$z9oJXiRijrZBnRvHZpltrXl_7r2GYI1zy5jbZwW-wrojoin?Q]e!rwUuVBrftGHDBOlEZm:localhost:8800@anon-20191002_181700-349:localhost:8800$9LWot1K2VyRYxvRTZakiKG0h4AdRQAacaVM2XZWwQKYjoin>Q]e!CkNvQnbApPIcuKygDk:localhost:8800@anon-20191002_181700-348:localhost:8800$wEZFVFpsIlUco45GEyenAq7621Sl_A2KzBhZXuxj2UYjoin=Q]e!NboFFVLpJHTeuUKCjM:localhost:8800@anon-20191002_181700-347:localhost:8800$f-E4Egljtc69vOVDQ2NPqZEU6GjeWct5svIduP8-V40join<Q]e!NboFFVLpJHTeuUKCjM:localhost:8800@anon-20191002_181700-346:localhost:8800$XEcERk8IuV4inz_uEbCREWIetrl3D7C0g5t8AcKUi3Yjoin;Q]e!aZwMKYDXJRlSKjQNWM:localhost:8800@anon-20191002_181700-345:localhost:8800$t5idXYtCO-qFDO0tWYu9Y-UPBJxavRJpvlsfxjYaGokjoin:Q]e!XiwGxQKwjgutEClKUy:localhost:8829@anon-20191002_181700-343:localhost:8800$OH9JypPm4zuzyMZaYYl1SqYKCfxiFFHcZN0uS6MzKcsjoin9Q]e!mTlCLZQCmfDuQsJxxp:localhost:8800@anon-20191002_181700-342:localhost:8800$WNxBnxZbMjSLRM6xbwZkVUhijdYwF-Gs2k-Bb5kAvQojoin8Q]e!PEcOacvKaBKpXjytEF:localhost:8800@anon-20191002_181700-341:localhost:8800$8g-9OXvx4XLGjL05EHm6pmpi6MzF2Av5zw-mmtYVCvwjoin7Q]e!NajQnqYmGyTjxhFYar:localhost:8829@anon-20191002_181700-339:localhost:8800$EO_ilJSTxvfNKzw2FDpU3mdbY9XAerH3INpRSEP6ym4join6Q]e!sJnuQYOyruhUpXDsLY:localhost:8800@anon-20191002_181700-338:localhost:8800$fW8XkY89dpXi2PE8s5OQHR4Xz8EDBX2wPjh46D5z3Okjoin       $LU = A  _ ! -?G$<I EE?tableui_auth_sessions_credentialsui_auth_sessions_credentials/CREATE TABLE ui_auth_sessions_credentials( session_id TEXT NOT NULL, stage_type TEXT NOT NULL, result TEXT NOT NULL, UNIQUE (session_id, stage_type), FOREIGN KEY (session_id) REFERENCES ui_auth_sessions (session_id) )@S-indexsqlite_autoindex_ui_auth_sessions_1ui_auth_sessions.--Wtableui_auth_sessionsui_auth_sessions-CREATE TABLE ui_auth_sessions( session_id TEXT NOT NULL, creation_time BIGINT NOT NULL, serverdict TEXT NOT NULL, clientdict TEXT NOT NULL, uri TEXT NOT NULL, method TEXT NOT NULL, description TEXT NOT NULL, UNIQUE (session_id) )O=3indexlocal_current_membership_room_idxlocal_current_membership$CREATE INDEX local_current_membership_room_idx ON local_current_membership(room_id) E=Iindexlocal_current_membership_idxlocal_current_membershipCREATE UNIQUE INDEX local_current_membership_idx ON local_current_membership(user_id, room_id)~== tablelocal_current_membershiplocal_current_membershipCREATE TABLE local_current_membership ( room_id TEXT NOT NULL, user_id TEXT NOT NULL, event_id TEXT NOT NULL, membership TEXT NOT NULL ) OA;indexdevice_lists_remote_resync_ts_idxdevice_lists_remote_resyncCREATE INDEX device_lists_remote_resync_ts_idx ON device_lists_remote_resync (added_ts) IAAindexdevice_lists_remote_resync_idxdevice_lists_remote_resync3CREATE UNIQUE INDEX device_lists_remote_resync_idx ON device_lists_remote_resync (user_id)AACtabledevice_lists_remote_resyncdevice_lists_remote_resyncCREATE TABLE device_lists_remote_resync ( user_id TEXT NOT NULL, added_ts BIGINT NOT NULL )DOEindexe2e_cross_signing_signatures2_idxe2e_cross_signing_signaturesCREATE INDEX e2e_cross_signing_signatures2_idx ON e2e_cross_signing_signatures(user_id, target_user_id, target_device_id)~K)%indexroom_retention_max_lifetime_idxroom_retentionCREATE INDEX room_retention_max_lifetime_idx on room_retention(max_lifetime);}O)indexsqlite_autoindex_room_retention_1room_retention?-|))tableroom_retentionroom_retention>CREATE TABLE room_retention( room_id TEXT, event_id TEXT, min_lifetime BIGINT, max_lifetime BIGINT, PRIMARY KEY(room_id, event_id) ).{Aindexsqlite_autoindex_devices_1devicesxzEtabledevicesdevicesCREATE TABLE "devices" ( user_id TEXT NOT NULL, device_id TEXT NOT NULL, display_name TEXT, last_seen BIGINT, ip TEXT, user_agent TEXT, hidden BOOLEAN DEFAULT 0, CONSTRAINT device_uniqueness UNIQUE (user_id, device_id) )yI%Oindexevent_labels_room_id_label_idxevent_labelsCREATE INDEX event_labels_room_id_label_idx ON event_labels(room_id, label, topological_ordering){8xK%indexsqlite_autoindex_event_labels_1event_labels8w%%1tableevent_labelsevent_labelsCREATE TABLE event_labels ( event_id TEXT, label TEXT, room_id TEXT NOT NULL, topological_ordering BIGINT NOT NULL, PRIMARY KEY(event_id, label) )vvA%indexevent_expiry_expiry_ts_idxevent_expiryCREATE INDEX event_expiry_expiry_ts_idx ON event_expiry(expiry_ts)8uK%indexsqlite_autoindex_event_expiry_1event_expiryuO)\6jD  w Q*[1a6 ( KW c (6[!@anon-20191002_181700-82:localhost:8800JESTYYWXIOi8]!@anon-20191002_181700-759:localhost:8800KXAFXIMWWP8]!@anon-20191002_181700-698:localhost:8800NUMXWJYFTC8]!@anon-20191002_181700-202:localhost:8800TBTWVFPOAO8]!@anon-20191002_181700-579:localhost:8800LLEXLPJZBRJ8]!@anon-20191002_181700-508:localhost:8800IUNUZDZDEU 8]!@anon-20191002_181700-432:localhost:8800ZOPSRSBYRN 8]!@anon-20191002_181700-376:localhost:8800IDKHLQVFRN8]!@anon-20191002_181700-318:localhost:8800PHFUHLOHRJj8]!@anon-20191002_181700-260:localhost:8800PEYMVGORHU26[!@anon-20191002_181700-63:localhost:8800VLTVDGDALO[8]!@anon-20191002_181700-136:localhost:8800HMGQCGXZSS 6_,`- _ + ] # X ,  E { 1g&4h-aJ3g5d6[!E@anon-20191002_181700-26:localhost:8800UBEJKIDKFLmq127.0.0.1Perl + Net::Async::HTTP/0.44d5[!E@anon-20191002_181700-25:localhost:8800IOMJWWQXRTmm127.0.0.1Perl + Net::Async::HTTP/0.44d4[!E@anon-20191002_181700-24:localhost:8800MRUESCORNAmi127.0.0.1Perl + Net::Async::HTTP/0.44d3[!E@anon-20191002_181700-23:localhost:8800SNOHQGNOOLmS127.0.0.1Perl + Net::Async::HTTP/0.44d2[!E@anon-20191002_181700-22:localhost:8800HVNUPXSZHYmd127.0.0.1Perl + Net::Async::HTTP/0.44d1[!E@anon-20191002_181700-21:localhost:8800KHJDEDTDXIm?z127.0.0.1Perl + Net::Async::HTTP/0.44d0[!E@anon-20191002_181700-20:localhost:8800MIHVANNPDDm[127.0.0.1Perl + Net::Async::HTTP/0.449/[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL9.[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK9-[!@anon-20191002_181700-17:localhost:8800VRXIORHZEXd,[!E@anon-20191002_181700-16:localhost:8800OZMNCFRFTFm127.0.0.1Perl + Net::Async::HTTP/0.44d+[!E@anon-20191002_181700-15:localhost:8800KLXIHUSAOGm127.0.0.1Perl + Net::Async::HTTP/0.44I*[%)@anon-20191002_181700-14:localhost:8800login_devicedevice displayd)[!E@anon-20191002_181700-14:localhost:8800UAGQKBVBOWmo127.0.0.1Perl + Net::Async::HTTP/0.44d([!E@anon-20191002_181700-12:localhost:8800ATMHTVRQSQm127.0.0.1Perl + Net::Async::HTTP/0.449'[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZGd&[!E@anon-20191002_181700-11:localhost:8800GGVPWYJLFAm?127.0.0.1Perl + Net::Async::HTTP/0.44d%[!E@anon-20191002_181700-10:localhost:8800FPVSQGRDQGm127.0.0.1Perl + Net::Async::HTTP/0.44J$Y%-@anon-20191002_181700-9:localhost:8800login_devicenew display namec#Y!E@anon-20191002_181700-9:localhost:8800MGUQLDGKRQmk127.0.0.1Perl + Net::Async::HTTP/0.44?"Y@anon-20191002_181700-8:localhost:8800device_1display 1?!Y@anon-20191002_181700-8:localhost:8800device_2display 2c Y!E@anon-20191002_181700-8:localhost:8800EBQTKFPJODm}(127.0.0.1Perl + Net::Async::HTTP/0.44cY!E@anon-20191002_181700-7:localhost:8800FWKDVNUPWXmy127.0.0.1Perl + Net::Async::HTTP/0.44HY%)@anon-20191002_181700-6:localhost:8800login_devicedevice displaycY!E@anon-20191002_181700-6:localhost:8800YDTVVUXGOWmx1127.0.0.1Perl + Net::Async::HTTP/0.44cY!E@anon-20191002_181700-5:localhost:8800WYYDRNGEZSmua127.0.0.1Perl + Net::Async::HTTP/0.44cY!E@anon-20191002_181700-4:localhost:8800OXDBJBCTVLms-127.0.0.1Perl + Net::Async::HTTP/0.44U=!E@spyglass:localhost:8800BUNJZHLDRSmp127.0.0.1Perl + Net::Async::HTTP/0.44);!@02login:localhost:8800TUIMTGQXHF*;#@02login:localhost:8800my_super_id);!@02login:localhost:8800FHCBMHROPD);!@02login:localhost:8800OFRAEFMMXR9[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC8Y!@anon-20191002_181700-2:localhost:8800RDNVTAXLBR8Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF1K!@chrtestuser-39-:localhost:8800HQOBQJZUDV1K!@chrtestuser-10-:localhost:8800NPPZGPSUFO2M!@chrtestuser-233-:localhost:8800AJJFHKXPHA2M!@chrtestuser-163-:localhost:8800FYFIWVYQAG2M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ2 M!@chrtestuser-124-:localhost:8800BIQFYVWLZN2 M!@chrtestuser-123-:localhost:8800GABZLTWEEJ1 K!@chrtestuser-93-:localhost:8800HXQEHKTZDR1 K!@chrtestuser-91-:localhost:8800XTTHVJFCAE1 K!@chrtestuser-64-:localhost:8800WQBPBXVRII1K!@chrtestuser-92-:localhost:8800CTWNGYMNFD1K!@chrtestuser-63-:localhost:8800DYMSSHFRND1K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS1K!@chrtestuser-34-:localhost:8800JUJQTQDDTH1K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV.A%@mycooluser:localhost:8800my_device_id,A!@user-upper:localhost:8800XOXAYMRLKGAk!@01register-user-20191002_181700:localhost:8800KRNGWLGVFN +4X & Z ( \ 7  /QJ~LNda[!E@anon-20191002_181700-71:localhost:8800TCTQJEZQFIm127.0.0.1Perl + Net::Async::HTTP/0.44d`[!E@anon-20191002_181700-70:localhost:8800PGQYANGMEIm.127.0.0.1Perl + Net::Async::HTTP/0.44d_[!E@anon-20191002_181700-68:localhost:8800GNKAPUDEUDmA127.0.0.1Perl + Net::Async::HTTP/0.44d^[!E@anon-20191002_181700-67:localhost:8800ONYGLHFWXMmg127.0.0.1Perl + Net::Async::HTTP/0.44d][!E@anon-20191002_181700-64:localhost:8800NPZFHRJOQIm127.0.0.1Perl + Net::Async::HTTP/0.44d\[!E@anon-20191002_181700-65:localhost:8800JPWZALXKWPm&127.0.0.1Perl + Net::Async::HTTP/0.44d[[!E@anon-20191002_181700-63:localhost:8800VLTVDGDALOmK127.0.0.1Perl + Net::Async::HTTP/0.44dZ[!E@anon-20191002_181700-62:localhost:8800PJTOWKTNYXms127.0.0.1Perl + Net::Async::HTTP/0.44dY[!E@anon-20191002_181700-61:localhost:8800SXUBBXHSVUm^127.0.0.1Perl + Net::Async::HTTP/0.44dX[!E@anon-20191002_181700-60:localhost:8800JSZKVAFOZGm\127.0.0.1Perl + Net::Async::HTTP/0.44dW[!E@anon-20191002_181700-59:localhost:8800DRVLOZZUPQmZ127.0.0.1Perl + Net::Async::HTTP/0.44dV[!E@anon-20191002_181700-57:localhost:8800NFIQURSFUOmUB127.0.0.1Perl + Net::Async::HTTP/0.44dU[!E@anon-20191002_181700-55:localhost:8800GJICSOZSSMmN127.0.0.1Perl + Net::Async::HTTP/0.44dT[!E@anon-20191002_181700-54:localhost:8800WKSZTPHXTGmK127.0.0.1Perl + Net::Async::HTTP/0.44dS[!E@anon-20191002_181700-53:localhost:8800HCQPROAEXNmG127.0.0.1Perl + Net::Async::HTTP/0.44dR[!E@anon-20191002_181700-52:localhost:8800KYXATQJIHBmBj127.0.0.1Perl + Net::Async::HTTP/0.449Q[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPdP[!E@anon-20191002_181700-51:localhost:8800EXJVEMMDWDm?127.0.0.1Perl + Net::Async::HTTP/0.44dO[!E@anon-20191002_181700-50:localhost:8800BNBHLRCHUXm=127.0.0.1Perl + Net::Async::HTTP/0.44dN[!E@anon-20191002_181700-48:localhost:8800AJQOQZXPLWm6127.0.0.1Perl + Net::Async::HTTP/0.44-MC!@cas_user=21:localhost:8800BIHKGABDWP9L[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLU@K[%@anon-20191002_181700-45:localhost:8800xyzzydisplay_namekJ[%E@anon-20191002_181700-44:localhost:8800xyzzydisplay_namem-127.0.0.1Perl + Net::Async::HTTP/0.449I[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPD9H[!@anon-20191002_181700-43:localhost:8800CHTLJMKZAB#G/!@0:localhost:8800BLOODGXNYN#F/!@0:localhost:8800DWCYKFLVQMdE[!E@anon-20191002_181700-41:localhost:8800OLPAIVSAQXm'#127.0.0.1Perl + Net::Async::HTTP/0.44dD[!E@anon-20191002_181700-40:localhost:8800MBXHKMDVDXm%K127.0.0.1Perl + Net::Async::HTTP/0.44dC[!E@anon-20191002_181700-39:localhost:8800FJQMNXTSGYm127.0.0.1Perl + Net::Async::HTTP/0.44dB[!E@anon-20191002_181700-38:localhost:8800COQUCEUZOKm127.0.0.1Perl + Net::Async::HTTP/0.44dA[!E@anon-20191002_181700-37:localhost:8800VQICIZWNXHm3127.0.0.1Perl + Net::Async::HTTP/0.44d@[!E@anon-20191002_181700-36:localhost:8800KRWZEWLMKOmJ127.0.0.1Perl + Net::Async::HTTP/0.44d?[!E@anon-20191002_181700-35:localhost:8800EALQMPIKHOm 127.0.0.1Perl + Net::Async::HTTP/0.44d>[!E@anon-20191002_181700-34:localhost:8800ZGZSYILFGAm127.0.0.1Perl + Net::Async::HTTP/0.44d=[!E@anon-20191002_181700-33:localhost:8800SKGXUBFLKNm127.0.0.1Perl + Net::Async::HTTP/0.44d<[!E@anon-20191002_181700-32:localhost:8800DXDIQOFVCBm127.0.0.1Perl + Net::Async::HTTP/0.44d;[!E@anon-20191002_181700-31:localhost:8800ZSHMPNTQHCm127.0.0.1Perl + Net::Async::HTTP/0.449:[!@anon-20191002_181700-30:localhost:8800STWEJRRVAK99[!@anon-20191002_181700-29:localhost:8800WSREAIROYNd8[!E@anon-20191002_181700-28:localhost:8800XMXOPMIZZUmz127.0.0.1Perl + Net::Async::HTTP/0.44d7[!E@anon-20191002_181700-27:localhost:8800TWNKNEABLTmv127.0.0.1Perl + Net::Async::HTTP/0.44 StM%tO* q M (  o J % m H # n J (  H p 8 X w>Z!x?["w>\#$1%@36:localhost:8800guest_device$1%@35:localhost:8800guest_deviceBBq!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZ6%7!@admin:localhost:8800GMJMIKRCOD]8]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUA8]!@anon-20191002_181700-134:localhost:8800PCQACQPKQA8]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCA8]!@anon-20191002_181700-132:localhost:8800JPOUKBEMRT8]!@anon-20191002_181700-131:localhost:8800SOOHJVIHOR8]!@anon-20191002_181700-130:localhost:8800OESOAGWHDN6[!@anon-20191002_181700-12:localhost:8800ATMHTVRQSQ(8]!@anon-20191002_181700-129:localhost:8800PFGGATLHBE8]!@anon-20191002_181700-128:localhost:8800TAEIHPVZLY8]!@anon-20191002_181700-127:localhost:8800DDIVPYVSUI8]!@anon-20191002_181700-126:localhost:8800NXVZZYYNXF8]!@anon-20191002_181700-125:localhost:8800KJCLUQSSUQ8]!@anon-20191002_181700-124:localhost:8800CLOWKQMSAJ8]!@anon-20191002_181700-123:localhost:8800GANYBEJLPQ8]!@anon-20191002_181700-122:localhost:8800KKXSFRABDE8]!@anon-20191002_181700-121:localhost:8800SXEBHSUFRM8]!@anon-20191002_181700-120:localhost:8800NYHQUMFAGS6[!@anon-20191002_181700-11:localhost:8800GGVPWYJLFA&8]!@anon-20191002_181700-119:localhost:8800CPKUOIOMCL8]!@anon-20191002_181700-118:localhost:8800EGGHWNCYVG8]!@anon-20191002_181700-117:localhost:8800AOWWBWACSK8]!@anon-20191002_181700-116:localhost:8800NOEVNPHDUZ8]!@anon-20191002_181700-115:localhost:8800XPQYONRAEB8]!@anon-20191002_181700-114:localhost:8800CMIIGGQSIH8]!@anon-20191002_181700-113:localhost:8800DEIMBREIQT8]!@anon-20191002_181700-112:localhost:8800NJWUEDBXDE8]!@anon-20191002_181700-110:localhost:8800LARRQIDFNH6[!@anon-20191002_181700-10:localhost:8800FPVSQGRDQG%8]!@anon-20191002_181700-109:localhost:8800OVPPVZDCAA7]!@anon-20191002_181700-108:localhost:8800KLPFELDKEH7]!@anon-20191002_181700-107:localhost:8800IZRBPAPTCW~7]!@anon-20191002_181700-106:localhost:8800SACQZSUOIF}7]!@anon-20191002_181700-104:localhost:8800LWMHDFOEAF|7]!@anon-20191002_181700-103:localhost:8800WCYOWUZDUIz7]!@anon-20191002_181700-102:localhost:8800GRLAMJPVVL{7]!@anon-20191002_181700-101:localhost:8800PXXMUXFBMGx7]!@anon-20191002_181700-100:localhost:8800DHGUQTFIHGy#/%@9:localhost:8800guest_device#/%@8:localhost:8800guest_device!/!@8:localhost:8800SPYUTHBEKD#/%@7:localhost:8800guest_device#/%@6:localhost:8800guest_device#/%@5:localhost:8800guest_device#/%@4:localhost:8800guest_device#/%@3:localhost:8800guest_device$1%@34:localhost:8800guest_device$1%@33:localhost:8800guest_device$1%@32:localhost:8800guest_device$1%@31:localhost:8800guest_device$1%@30:localhost:8800guest_device#/%@2:localhost:8800guest_device$1%@29:localhost:8800guest_device$1%@28:localhost:8800guest_device$1%@27:localhost:8800guest_device$1%@26:localhost:8800guest_device$1%@25:localhost:8800guest_device$1%@24:localhost:8800guest_device$1%@23:localhost:8800guest_device$1%@22:localhost:8800guest_device$1%@21:localhost:8800guest_device$1%@20:localhost:8800guest_device#/%@1:localhost:8800guest_device$1%@19:localhost:8800guest_device$1%@18:localhost:8800guest_device$1%@17:localhost:8800guest_device$1%@16:localhost:8800guest_device$1%@15:localhost:8800guest_device$1%@14:localhost:8800guest_device$1%@13:localhost:8800guest_device$1%@12:localhost:8800guest_device$1%@11:localhost:8800guest_device$1%@10:localhost:8800guest_device /!@0:localhost:8800DWCYKFLVQMF /!@0:localhost:8800BLOODGXNYNG';#@02login:localhost:8800my_super_id&;!@02login:localhost:8800TUIMTGQXHF&;!@02login:localhost:8800OFRAEFMMXR&;!@02login:localhost:8800FHCBMHROPD=k! @01register-user-20191002_181700:localhost:8800KRNGWLGVFN B__Uq: V  r 9 W  s :  X t;Y u<X!v=Y zA$8]!@an6[!@anon-20191002_181700-13:localhost:8800VNBXZAVQZG'8]!@anon-20191002_181700-138:localhost:8800JFLHGXHKXS8]!@anon-20191002_181700-137:localhost:8800TZFFQCVKWQ8]!@anon-20191002_181700-201:localhost:8800OUGKUQQECU8]!@anon-20191002_181700-200:localhost:8800XLQZYUOVVW5Y!@anon-20191002_181700-1:localhost:8800IFSRUEYXNF6[!@anon-20191002_181700-19:localhost:8800YBVCGWDMTL/8]!@anon-20191002_181700-199:localhost:8800UANUDVZWCS8]!@anon-20191002_181700-198:localhost:8800MKVWNPADZZ8]!@anon-20191002_181700-197:localhost:8800QFRRVNJLDZ8]!@anon-20191002_181700-196:localhost:8800RTTTFCSQDL8]!@anon-20191002_181700-195:localhost:8800BSLOCEIQRD8]!@anon-20191002_181700-194:localhost:8800QUCVOCSWYA8]!@anon-20191002_181700-193:localhost:8800PFHPRPBSVJ8]!@anon-20191002_181700-192:localhost:8800OXPLOWSTCM8]!@anon-20191002_181700-191:localhost:8800CZZXBALTJT8]!@anon-20191002_181700-190:localhost:8800QIEZENAKEZ6[!@anon-20191002_181700-18:localhost:8800TRFQQDTHPK.8]!@anon-20191002_181700-189:localhost:8800RWJCTIMOHJ8]!@anon-20191002_181700-188:localhost:8800HQVPFKSROB8]!@anon-20191002_181700-187:localhost:8800PTZIGIMOFF8]!@anon-20191002_181700-186:localhost:8800MCDWETOPHN8]!@anon-20191002_181700-185:localhost:8800VORURBUNEE8]!@anon-20191002_181700-184:localhost:8800VWQCQPUGVZ8]!@anon-20191002_181700-183:localhost:8800PNPQZSANHG8]!@anon-20191002_181700-182:localhost:8800TONQTGLEJV8]!@anon-20191002_181700-181:localhost:8800EXTONIIZTH6[!@anon-20191002_181700-17:localhost:8800VRXIORHZEX-8]!@anon-20191002_181700-179:localhost:8800LJJECQVQQO8]!@anon-20191002_181700-178:localhost:8800RLQRIRERLR8]!@anon-20191002_181700-177:localhost:8800HOVRIDACJI8]!@anon-20191002_181700-176:localhost:8800KYCPIRLNMA8]!@anon-20191002_181700-175:localhost:8800LQUTZGXEPW8]!@anon-20191002_181700-174:localhost:8800XYSQAGTUQW8]!@anon-20191002_181700-173:localhost:8800HMAAIYSKTY8]!@anon-20191002_181700-170:localhost:8800SULWIONTNX6[!@anon-20191002_181700-16:localhost:8800OZMNCFRFTF,8]!@anon-20191002_181700-169:localhost:8800MFKRKTWRFR8]!@anon-20191002_181700-168:localhost:8800LFMVYJKZWW8]!@anon-20191002_181700-167:localhost:8800CZRBBMXBTZ8]!@anon-20191002_181700-165:localhost:8800YDADSUNIXE8]!@anon-20191002_181700-164:localhost:8800GPCCYGLLRJ8]!@anon-20191002_181700-163:localhost:8800IWJPSDUPWL8]!@anon-20191002_181700-162:localhost:8800PCGWJXGQXF8]!@anon-20191002_181700-161:localhost:8800EYZNWDJKKN8]!@anon-20191002_181700-160:localhost:8800RSEHRUSFUD6[!@anon-20191002_181700-15:localhost:8800KLXIHUSAOG+8]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYN8]!@anon-20191002_181700-158:localhost:8800XSKFBBFHAV8]!@anon-20191002_181700-157:localhost:8800FXSFHLELFT8]!@anon-20191002_181700-156:localhost:8800KJWWDXWUBD8]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJY8]!@anon-20191002_181700-154:localhost:8800ZNFFHUUXFG8]!@anon-20191002_181700-153:localhost:8800RAWLINNCFA8]!@anon-20191002_181700-152:localhost:8800GXUCZNSPYG8]!@anon-20191002_181700-151:localhost:8800OZBCDWREHR8]!@anon-20191002_181700-150:localhost:8800RWWSTPGDUM8[%@anon-20191002_181700-14:localhost:8800login_device*6[!@anon-20191002_181700-14:localhost:8800UAGQKBVBOW)8]!@anon-20191002_181700-149:localhost:8800AGJMWNVTGM8]!@anon-20191002_181700-146:localhost:8800FNNRVHNVLI8]!@anon-20191002_181700-144:localhost:8800KPCPVEDJYH8]!@anon-20191002_181700-143:localhost:8800ZFSJBJHVKY8]!@anon-20191002_181700-142:localhost:8800DLSRULHTCQ8]!@anon-20191002_181700-141:localhost:8800XOYNHFFWDU8]!@anon-20191002_181700-140:localhost:8800OLUEHITWUA '\4h 6 j  8 l  :n<n9k4d,\e]!E@anon-20191002_181700-119:localhost:8800CPKUOIOMCLm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-117:localhost:8800AOWWBWACSKm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-116:localhost:8800NOEVNPHDUZmB127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-115:localhost:8800XPQYONRAEBmg127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-114:localhost:8800CMIIGGQSIHm-127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-113:localhost:8800DEIMBREIQTm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-112:localhost:8800NJWUEDBXDEmɸ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-110:localhost:8800LARRQIDFNHmq127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-109:localhost:8800OVPPVZDCAAm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-108:localhost:8800KLPFELDKEHm}127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-107:localhost:8800IZRBPAPTCWmp127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-106:localhost:8800SACQZSUOIFm[P127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-104:localhost:8800LWMHDFOEAFmC127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-102:localhost:8800GRLAMJPVVLm)127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-103:localhost:8800WCYOWUZDUIm>127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-100:localhost:8800DHGUQTFIHGm"e127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-101:localhost:8800PXXMUXFBMGm127.0.0.1Perl + Net::Async::HTTP/0.44dw[!E@anon-20191002_181700-99:localhost:8800ZATUVUGXMYm*127.0.0.1Perl + Net::Async::HTTP/0.44dv[!E@anon-20191002_181700-96:localhost:8800TASTZEHNVLmQ127.0.0.1Perl + Net::Async::HTTP/0.44du[!E@anon-20191002_181700-97:localhost:8800JTJHHIHPPZm+127.0.0.1Perl + Net::Async::HTTP/0.44dt[!E@anon-20191002_181700-95:localhost:8800RLXRFTIWZTm127.0.0.1Perl + Net::Async::HTTP/0.44ds[!E@anon-20191002_181700-93:localhost:8800JXLBIPXXNBmA127.0.0.1Perl + Net::Async::HTTP/0.44dr[!E@anon-20191002_181700-90:localhost:8800BJDBLNAUERm127.0.0.1Perl + Net::Async::HTTP/0.44dq[!E@anon-20191002_181700-91:localhost:8800UIADKEMPGAmuI127.0.0.1Perl + Net::Async::HTTP/0.44dp[!E@anon-20191002_181700-88:localhost:8800GEBSMXLRDImq127.0.0.1Perl + Net::Async::HTTP/0.44do[!E@anon-20191002_181700-89:localhost:8800OFESILMBJHma+127.0.0.1Perl + Net::Async::HTTP/0.44dn[!E@anon-20191002_181700-86:localhost:8800YRHRLSEQYWm?127.0.0.1Perl + Net::Async::HTTP/0.44dm[!E@anon-20191002_181700-87:localhost:8800NPXBGXDHGZmY127.0.0.1Perl + Net::Async::HTTP/0.44dl[!E@anon-20191002_181700-84:localhost:8800YUGLTPPJENmq127.0.0.1Perl + Net::Async::HTTP/0.44dk[!E@anon-20191002_181700-85:localhost:8800ITOHGGKZTVm,127.0.0.1Perl + Net::Async::HTTP/0.44dj[!E@anon-20191002_181700-83:localhost:8800STLQYGHMSUm ;127.0.0.1Perl + Net::Async::HTTP/0.44di[!E@anon-20191002_181700-82:localhost:8800JESTYYWXIOm127.0.0.1Perl + Net::Async::HTTP/0.44dh[!E@anon-20191002_181700-81:localhost:8800CWYDKHHDSEm:127.0.0.1Perl + Net::Async::HTTP/0.44dg[!E@anon-20191002_181700-80:localhost:8800YTTBSSDSAFm127.0.0.1Perl + Net::Async::HTTP/0.44df[!E@anon-20191002_181700-79:localhost:8800EJTCNAZVHDm127.0.0.1Perl + Net::Async::HTTP/0.44de[!E@anon-20191002_181700-77:localhost:8800FSPHKPOXWNm&127.0.0.1Perl + Net::Async::HTTP/0.44dd[!E@anon-20191002_181700-75:localhost:8800RNMICKNMBMmHm127.0.0.1Perl + Net::Async::HTTP/0.44dc[!E@anon-20191002_181700-74:localhost:8800SVXLVPCWLXm127.0.0.1Perl + Net::Async::HTTP/0.44db[!E@anon-20191002_181700-73:localhost:8800XAYBGVYWKCm127.0.0.1Perl + Net::Async::HTTP/0.44 )0` ( X K { > 1a)Y!QD7TP1/%E@3:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-160:localhost:8800RSEHRUSFUDm127.0.0.1Perl + Net::Async::HTTP/0.44P//%E@2:localhost:8800guest_devicem޵127.0.0.1Perl + Net::Async::HTTP/0.44P./%E@1:localhost:8800guest_devicemȫ127.0.0.1Perl + Net::Async::HTTP/0.44:-]!@anon-20191002_181700-159:localhost:8800AHWAAMEKYNe,]!E@anon-20191002_181700-158:localhost:8800XSKFBBFHAVm127.0.0.1Perl + Net::Async::HTTP/0.44:+]!@anon-20191002_181700-157:localhost:8800FXSFHLELFTe*]!E@anon-20191002_181700-156:localhost:8800KJWWDXWUBDm127.0.0.1Perl + Net::Async::HTTP/0.44:)]!@anon-20191002_181700-155:localhost:8800LVXDKVKVJYe(]!E@anon-20191002_181700-154:localhost:8800ZNFFHUUXFGmqh127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-153:localhost:8800RAWLINNCFAm`y127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-152:localhost:8800GXUCZNSPYGmKN127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-151:localhost:8800OZBCDWREHRm=127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-149:localhost:8800AGJMWNVTGMmf127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-150:localhost:8800RWWSTPGDUMm/127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-146:localhost:8800FNNRVHNVLIm^127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-143:localhost:8800ZFSJBJHVKYm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-144:localhost:8800KPCPVEDJYHm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-142:localhost:8800DLSRULHTCQm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-141:localhost:8800XOYNHFFWDUm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-140:localhost:8800OLUEHITWUAmL127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-138:localhost:8800JFLHGXHKXSmj127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-136:localhost:8800HMGQCGXZSSmI127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-137:localhost:8800TZFFQCVKWQmd127.0.0.1Perl + Net::Async::HTTP/0.44:]!@anon-20191002_181700-135:localhost:8800SDWTGMDDUAe]!E@anon-20191002_181700-134:localhost:8800PCQACQPKQAm3127.0.0.1Perl + Net::Async::HTTP/0.44:]!@anon-20191002_181700-133:localhost:8800LAOZZBUWCAe]!E@anon-20191002_181700-131:localhost:8800SOOHJVIHORmH127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-132:localhost:8800JPOUKBEMRTm&127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-129:localhost:8800PFGGATLHBEm127.0.0.1Perl + Net::Async::HTTP/0.44:]!@anon-20191002_181700-130:localhost:8800OESOAGWHDNe]!E@anon-20191002_181700-127:localhost:8800DDIVPYVSUImu127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-128:localhost:8800TAEIHPVZLYm 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-125:localhost:8800KJCLUQSSUQmc127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-126:localhost:8800NXVZZYYNXFm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-124:localhost:8800CLOWKQMSAJml127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-123:localhost:8800GANYBEJLPQml127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-122:localhost:8800KKXSFRABDEm_127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-121:localhost:8800SXEBHSUFRMm_127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-120:localhost:8800NYHQUMFAGSm9127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-118:localhost:8800EGGHWNCYVGm127.0.0.1Perl + Net::Async::HTTP/0.44 >>>Us: V  r 9  W  s :  X t;W u<Xv=Y wZ!8]!@anon-20191002_181700-203:localhost:8800UCNLRVNQIF6[!@anon-20191002_181700-25:localhost:8800IOMJWWQXRT58]!@anon-20191002_181700-259:localhost:8800CBTLKTDDZA18]!@anon-20191002_181700-258:localhost:8800ZRYHQQPEDT08]!@anon-20191002_181700-257:localhost:8800AZPFFCLWTK/8]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLF.8]!@anon-20191002_181700-254:localhost:8800XJEYVFLUEX-8]!@anon-20191002_181700-253:localhost:8800VCNUHOFNKS,8]!@anon-20191002_181700-252:localhost:8800RURXOUWORG+8]!@anon-20191002_181700-251:localhost:8800PMDEYZFDXJ*8]!@anon-20191002_181700-250:localhost:8800HLUDALFTVR)6[!@anon-20191002_181700-24:localhost:8800MRUESCORNA48]!@anon-20191002_181700-249:localhost:8800TCARNJMFBO(8]!@anon-20191002_181700-248:localhost:8800SFZRVIZXHM'8]!@anon-20191002_181700-247:localhost:8800TRPUOTMOOT%8]!@anon-20191002_181700-246:localhost:8800VWLZTFZJKU&8]!@anon-20191002_181700-245:localhost:8800BMGHUZBIKD$8]!@anon-20191002_181700-244:localhost:8800VWUTZPSOAH#8]!@anon-20191002_181700-243:localhost:8800FMNGREYZML"8]!@anon-20191002_181700-242:localhost:8800AYBUQGWFIB!8]!@anon-20191002_181700-241:localhost:8800AXXWURZRJC 8]!@anon-20191002_181700-240:localhost:8800CDHFDOSRPZ6[!@anon-20191002_181700-23:localhost:8800SNOHQGNOOL38]!@anon-20191002_181700-239:localhost:8800WFWDJJSKCM8]!@anon-20191002_181700-238:localhost:8800CJBYPQAOBX8]!@anon-20191002_181700-237:localhost:8800GTKLCHUYBN8]!@anon-20191002_181700-236:localhost:8800ALVQESJRHC8]!@anon-20191002_181700-235:localhost:8800OYRPJJEYFG8]!@anon-20191002_181700-234:localhost:8800KLAICDFHKH8]!@anon-20191002_181700-233:localhost:8800ZGKUWUKWUY8]!@anon-20191002_181700-232:localhost:8800UUXEQUNCHP8]!@anon-20191002_181700-231:localhost:8800BJMMTIEXWQ8]!@anon-20191002_181700-230:localhost:8800ZDQWNSBGEB6[!@anon-20191002_181700-22:localhost:8800HVNUPXSZHY28]!@anon-20191002_181700-229:localhost:8800HEUCKALXOC8]!@anon-20191002_181700-228:localhost:8800UJAKRYEXDS8]!@anon-20191002_181700-227:localhost:8800WRSATVMLKK8]!@anon-20191002_181700-226:localhost:8800AUORQAXWJL8]!@anon-20191002_181700-225:localhost:8800ZNKOABDJUU8]!@anon-20191002_181700-224:localhost:8800VJTZAJOEFY 8]!@anon-20191002_181700-223:localhost:8800IOQWEQAUDW 8]!@anon-20191002_181700-222:localhost:8800VOKSLIDSSO 8]!@anon-20191002_181700-221:localhost:8800REITENATXK 8]!@anon-20191002_181700-220:localhost:8800OOLATWHSMP 6[!@anon-20191002_181700-21:localhost:8800KHJDEDTDXI18]!@anon-20191002_181700-219:localhost:8800KBEVVOFICU8]!@anon-20191002_181700-218:localhost:8800EJUSKMCYXQ8]!@anon-20191002_181700-217:localhost:8800UMNJQPXSWW8]!@anon-20191002_181700-216:localhost:8800RYBXPLVXBJ8]!@anon-20191002_181700-215:localhost:8800YMMAIPPEFO8]!@anon-20191002_181700-214:localhost:8800MEYMCWHAWP8]!@anon-20191002_181700-213:localhost:8800LEQWCYQYGH8]!@anon-20191002_181700-212:localhost:8800RTYZTLKABN8]!@anon-20191002_181700-211:localhost:8800FQOBFRKZSM8]!@anon-20191002_181700-210:localhost:8800PHSGQQQBDF6[!@anon-20191002_181700-20:localhost:8800MIHVANNPDD08]!@anon-20191002_181700-209:localhost:8800LYXETIOPNT8]!@anon-20191002_181700-208:localhost:8800NIDXMAEJEY8]!@anon-20191002_181700-207:localhost:8800FTYKIESLCC8]!@anon-20191002_181700-206:localhost:8800AXGAUUMYLV8]!@anon-20191002_181700-205:localhost:8800MIXIJDMFDO8]!@anon-20191002_181700-204:localhost:8800HOFBXQYKDH *E" g  Y x O   o 7g/_;[KQ[1%E@18:localhost:8800guest_devicemF127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-190:localhost:8800QIEZENAKEZm127.0.0.1Perl + Net::Async::HTTP/0.44QY1%E@17:localhost:8800guest_devicemE127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-189:localhost:8800RWJCTIMOHJm5127.0.0.1Perl + Net::Async::HTTP/0.44QW1%E@16:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-188:localhost:8800HQVPFKSROBm127.0.0.1Perl + Net::Async::HTTP/0.44QU1%E@15:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-187:localhost:8800PTZIGIMOFFm_127.0.0.1Perl + Net::Async::HTTP/0.44QS1%E@14:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-186:localhost:8800MCDWETOPHNm2%127.0.0.1Perl + Net::Async::HTTP/0.44QQ1%E@13:localhost:8800guest_devicemP<127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-185:localhost:8800VORURBUNEEmU127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-184:localhost:8800VWQCQPUGVZm127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-183:localhost:8800PNPQZSANHGmG127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-182:localhost:8800TONQTGLEJVm127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-181:localhost:8800EXTONIIZTHm)127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-179:localhost:8800LJJECQVQQOm127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-178:localhost:8800RLQRIRERLRm127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-177:localhost:8800HOVRIDACJIm 127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-176:localhost:8800KYCPIRLNMAm\127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-175:localhost:8800LQUTZGXEPWmV127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-174:localhost:8800XYSQAGTUQWmH127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-173:localhost:8800HMAAIYSKTYm1B127.0.0.1Perl + Net::Async::HTTP/0.44QD1%E@12:localhost:8800guest_devicem/Z127.0.0.1Perl + Net::Async::HTTP/0.44QC1%E@11:localhost:8800guest_devicem+a127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-170:localhost:8800SULWIONTNXm'127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-169:localhost:8800MFKRKTWRFRmµ127.0.0.1Perl + Net::Async::HTTP/0.44e@]!E@anon-20191002_181700-168:localhost:8800LFMVYJKZWWm127.0.0.1Perl + Net::Async::HTTP/0.44&?1%@10:localhost:8800guest_device%>/%@9:localhost:8800guest_deviceN=/!E@8:localhost:8800SPYUTHBEKDm2127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-167:localhost:8800CZRBBMXBTZm127.0.0.1Perl + Net::Async::HTTP/0.44P;/%E@8:localhost:8800guest_devicem\127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-165:localhost:8800YDADSUNIXEmf127.0.0.1Perl + Net::Async::HTTP/0.44P9/%E@7:localhost:8800guest_devicemy127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-164:localhost:8800GPCCYGLLRJmE127.0.0.1Perl + Net::Async::HTTP/0.44P7/%E@6:localhost:8800guest_devicemY?127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-163:localhost:8800IWJPSDUPWLm'127.0.0.1Perl + Net::Async::HTTP/0.44P5/%E@5:localhost:8800guest_devicem8127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-162:localhost:8800PCGWJXGQXFm 127.0.0.1Perl + Net::Async::HTTP/0.44P3/%E@4:localhost:8800guest_devicem"127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-161:localhost:8800EYZNWDJKKNm127.0.0.1Perl + Net::Async::HTTP/0.44 )D d  @ 0 t P@` P,p8he]!E@anon-20191002_181700-215:localhost:8800YMMAIPPEFOm.127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-214:localhost:8800MEYMCWHAWPm 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-213:localhost:8800LEQWCYQYGHm I127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-212:localhost:8800RTYZTLKABNm]127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-211:localhost:8800FQOBFRKZSMmތ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-209:localhost:8800LYXETIOPNTm4127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-210:localhost:8800PHSGQQQBDFm{127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-208:localhost:8800NIDXMAEJEYmCZ127.0.0.1Perl + Net::Async::HTTP/0.44Q|1%E@34:localhost:8800guest_devicems127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-207:localhost:8800FTYKIESLCCm^127.0.0.1Perl + Net::Async::HTTP/0.44Qz1%E@33:localhost:8800guest_devicem3 127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-206:localhost:8800AXGAUUMYLVmw127.0.0.1Perl + Net::Async::HTTP/0.44Qx1%E@32:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-205:localhost:8800MIXIJDMFDOm}127.0.0.1Perl + Net::Async::HTTP/0.44Qv1%E@31:localhost:8800guest_devicem127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-204:localhost:8800HOFBXQYKDHmR127.0.0.1Perl + Net::Async::HTTP/0.44Qt1%E@30:localhost:8800guest_devicemq127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-203:localhost:8800UCNLRVNQIFm8]!@anon-20191002_181700-271:localhost:8800EYEJMZUSJY;8]!@anon-20191002_181700-270:localhost:8800SRSYWQDCQU<6[!@anon-20191002_181700-26:localhost:8800UBEJKIDKFL6 &0` ( X P H$h0`(X e*]!E@anon-20191002_181700-251:localhost:8800PMDEYZFDXJm{127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-250:localhost:8800HLUDALFTVRm{$127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-249:localhost:8800TCARNJMFBOm(8127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-248:localhost:8800SFZRVIZXHMm'\127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-246:localhost:8800VWLZTFZJKUmk127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-247:localhost:8800TRPUOTMOOTmi*127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-245:localhost:8800BMGHUZBIKDm 127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-244:localhost:8800VWUTZPSOAHm x127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-243:localhost:8800FMNGREYZMLm127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-242:localhost:8800AYBUQGWFIBm?127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-241:localhost:8800AXXWURZRJCmϕ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-240:localhost:8800CDHFDOSRPZmϒ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-239:localhost:8800WFWDJJSKCMm¬G127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-238:localhost:8800CJBYPQAOBXm«127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-237:localhost:8800GTKLCHUYBNmŒ{127.0.0.1Perl + Net::Async::HTTP/0.44Q1%E@36:localhost:8800guest_devicem¨127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-236:localhost:8800ALVQESJRHCmpa127.0.0.1Perl + Net::Async::HTTP/0.44Q1%E@35:localhost:8800guest_devicem‰127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-235:localhost:8800OYRPJJEYFGmXl127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-234:localhost:8800KLAICDFHKHmXj127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-233:localhost:8800ZGKUWUKWUYm?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-232:localhost:8800UUXEQUNCHPm?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-231:localhost:8800BJMMTIEXWQm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-230:localhost:8800ZDQWNSBGEBm"127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-229:localhost:8800HEUCKALXOCm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-228:localhost:8800UJAKRYEXDSm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-227:localhost:8800WRSATVMLKKmߞ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-226:localhost:8800AUORQAXWJLm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-225:localhost:8800ZNKOABDJUUm_127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-224:localhost:8800VJTZAJOEFYm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-223:localhost:8800IOQWEQAUDWm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-222:localhost:8800VOKSLIDSSOmE127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-221:localhost:8800REITENATXKm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-220:localhost:8800OOLATWHSMPmvV127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-219:localhost:8800KBEVVOFICUmu127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-218:localhost:8800EJUSKMCYXQmU127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-217:localhost:8800UMNJQPXSWWmU>127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-216:localhost:8800RYBXPLVXBJm/127.0.0.1Perl + Net::Async::HTTP/0.44 '~0# S  K {  Cs f.^&VN~eQ]!E@anon-20191002_181700-292:localhost:8800GGCVZACJDJmg127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-291:localhost:8800OPDSPHGDRKm^t127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-290:localhost:8800HIUKIRMYDGmD`127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-289:localhost:8800WRUIAYGXANm]!E@anon-20191002_181700-272:localhost:8800NRGYAKPXELmA}127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-273:localhost:8800SZMGOEVXQWm[s127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-270:localhost:8800SRSYWQDCQUm127.0.0.1Perl + Net::Async::HTTP/0.44e;]!E@anon-20191002_181700-271:localhost:8800EYEJMZUSJYm127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-269:localhost:8800EDTNFCDRMRmq127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-268:localhost:8800BTQHLEFFPUm127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-266:localhost:8800MREALOZRTWm 127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-265:localhost:8800COAARRCECCmſ;127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-264:localhost:8800DYYKUWOSTJmų127.0.0.1Perl + Net::Async::HTTP/0.44e5]!E@anon-20191002_181700-263:localhost:8800KUHOBSXQVMmšT127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-262:localhost:8800OLJVXJZUXGmő'127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-261:localhost:8800HLJRYNNHWEmŁ127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-260:localhost:8800PEYMVGORHUmq127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-259:localhost:8800CBTLKTDDZAma127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-258:localhost:8800ZRYHQQPEDTmE127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-257:localhost:8800AZPFFCLWTKm/127.0.0.1Perl + Net::Async::HTTP/0.44:.]!@anon-20191002_181700-255:localhost:8800QPFIMVOQLFe-]!E@anon-20191002_181700-254:localhost:8800XJEYVFLUEXm127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-253:localhost:8800VCNUHOFNKSm<127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-252:localhost:8800RURXOUWORGm0127.0.0.1Perl + Net::Async::HTTP/0.44 =w=["Us: V  t ;  W  u <  X t;Y u<Z!vw>\#8]!@anon-20191002_181700-375:localhost:8800ABNAUGMGBU8]!@anon-20191002_181700-325:localhost:8800CDWNGKHJGSq8]!@anon-20191002_181700-324:localhost:8800KKATIXOBNFp8]!@anon-20191002_181700-323:localhost:8800BHOVENVWZCo8]!@anon-20191002_181700-322:localhost:8800CMZHVCVAXTn8]!@anon-20191002_181700-321:localhost:8800WXFXGVMZGCm8]!@anon-20191002_181700-320:localhost:8800WFQFGOHNGBl6[!@anon-20191002_181700-31:localhost:8800ZSHMPNTQHC;8]!@anon-20191002_181700-319:localhost:8800HSJRSHPEIAk8]!@anon-20191002_181700-374:localhost:8800AEAOAEZYHY8]!@anon-20191002_181700-373:localhost:8800LNMPGJNAVZ8]!@anon-20191002_181700-372:localhost:8800ADGVRBGQNM8]!@anon-20191002_181700-371:localhost:8800MVADRLDOGO8]!@anon-20191002_181700-370:localhost:8800SBQUDYTSCJ6[!@anon-20191002_181700-36:localhost:8800KRWZEWLMKO@8]!@anon-20191002_181700-369:localhost:8800PMLSUBDYRA8]!@anon-20191002_181700-368:localhost:8800OXEBNZFASJ8]!@anon-20191002_181700-367:localhost:8800YMOZJNEHXT8]!@anon-20191002_181700-366:localhost:8800FABJQITKMR8]!@anon-20191002_181700-365:localhost:8800GEIVTPEZWO8]!@anon-20191002_181700-364:localhost:8800PEYTIDQOTB8]!@anon-20191002_181700-363:localhost:8800OFUEGGAJXF8]!@anon-20191002_181700-362:localhost:8800DYTMFWLSUR8]!@anon-20191002_181700-361:localhost:8800XCHGELQORJ8]!@anon-20191002_181700-360:localhost:8800XKNFVZJCRE6[!@anon-20191002_181700-35:localhost:8800EALQMPIKHO?8]!@anon-20191002_181700-359:localhost:8800NYAYBPPYBR8]!@anon-20191002_181700-358:localhost:8800YPZTVFTILN8]!@anon-20191002_181700-357:localhost:8800TFBXZDXERT8]!@anon-20191002_181700-356:localhost:8800ECXXWUQUFN8]!@anon-20191002_181700-355:localhost:8800LDOCSGURJI8]!@anon-20191002_181700-354:localhost:8800EEONPHMPKH8]!@anon-20191002_181700-353:localhost:8800JNEJUBWWRW8]!@anon-20191002_181700-352:localhost:8800HQKTWVQFMP8]!@anon-20191002_181700-351:localhost:8800GHNDMAFVFR8]!@anon-20191002_181700-350:localhost:8800TQWBNMPIAI6[!@anon-20191002_181700-34:localhost:8800ZGZSYILFGA>8]!@anon-20191002_181700-349:localhost:8800IPTJJENAYS8]!@anon-20191002_181700-348:localhost:8800KYSIYINERZ8]!@anon-20191002_181700-347:localhost:8800CFRSANQZYU8]!@anon-20191002_181700-346:localhost:8800CIUYDTNROP8]!@anon-20191002_181700-345:localhost:8800QSMLRPQTHA8]!@anon-20191002_181700-343:localhost:8800QPHBRHJQML8]!@anon-20191002_181700-342:localhost:8800TTVUAXXSXP8]!@anon-20191002_181700-341:localhost:8800GZLOUPOIMW6[!@anon-20191002_181700-33:localhost:8800SKGXUBFLKN=8]!@anon-20191002_181700-339:localhost:8800DEVPCFFDOH8]!@anon-20191002_181700-338:localhost:8800OUNFKLKIBD~8]!@anon-20191002_181700-337:localhost:8800AOHNBPYYLF}8]!@anon-20191002_181700-336:localhost:8800OFRRIKPQIS|8]!@anon-20191002_181700-335:localhost:8800WEGENLHOLI{8]!@anon-20191002_181700-334:localhost:8800KPXDOKYVYYz8]!@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUy8]!@anon-20191002_181700-332:localhost:8800TBDDBAQUGPx8]!@anon-20191002_181700-331:localhost:8800COONNUXFOLw8]!@anon-20191002_181700-330:localhost:8800TFGJMHITULv6[!@anon-20191002_181700-32:localhost:8800DXDIQOFVCB<8]!@anon-20191002_181700-329:localhost:8800KKMPVZBDLSu8]!@anon-20191002_181700-328:localhost:8800DZKGSTQGUOt8]!@anon-20191002_181700-327:localhost:8800WQCLQHKZHCs8]!@anon-20191002_181700-326:localhost:8800YBIXYTHJYTr &0` ( X P Hx@p8h0`ew]!E@anon-20191002_181700-331:localhost:8800COONNUXFOLm$127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-330:localhost:8800TFGJMHITULmͺ127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-329:localhost:8800KKMPVZBDLSm˟e127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-328:localhost:8800DZKGSTQGUOmˈ 127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-327:localhost:8800WQCLQHKZHCmn127.0.0.1Perl + Net::Async::HTTP/0.44er]!E@anon-20191002_181700-326:localhost:8800YBIXYTHJYTmP127.0.0.1Perl + Net::Async::HTTP/0.44eq]!E@anon-20191002_181700-325:localhost:8800CDWNGKHJGSmH127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-324:localhost:8800KKATIXOBNFm&127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-323:localhost:8800BHOVENVWZCm127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-322:localhost:8800CMZHVCVAXTm 127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-321:localhost:8800WXFXGVMZGCm127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-320:localhost:8800WFQFGOHNGBm127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-319:localhost:8800HSJRSHPEIAm127.0.0.1Perl + Net::Async::HTTP/0.44ej]!E@anon-20191002_181700-318:localhost:8800PHFUHLOHRJmʳ127.0.0.1Perl + Net::Async::HTTP/0.44ei]!E@anon-20191002_181700-317:localhost:8800KSXFFXWMCBmʝt127.0.0.1Perl + Net::Async::HTTP/0.44eh]!E@anon-20191002_181700-316:localhost:8800JHIWJLKOFGmʛ127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-315:localhost:8800KXXAQONTRLmʙ127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-314:localhost:8800BTSWZNQVTPmʗT127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-312:localhost:8800LFIOTRIQVMmi127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-311:localhost:8800BNVFQNMSXMm:127.0.0.1Perl + Net::Async::HTTP/0.44ec]!E@anon-20191002_181700-310:localhost:8800UKYXDPZQOOm%127.0.0.1Perl + Net::Async::HTTP/0.44eb]!E@anon-20191002_181700-309:localhost:8800OEPQWZYGARm#127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-308:localhost:8800VRKBCOUWEFms127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-307:localhost:8800BEZNVUIADUm .127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-306:localhost:8800XZDIPYWWODm127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-305:localhost:8800PDQTBQSPGXm&127.0.0.1Perl + Net::Async::HTTP/0.44e]]!E@anon-20191002_181700-304:localhost:8800MQWNAFYDXKməB127.0.0.1Perl + Net::Async::HTTP/0.44e\]!E@anon-20191002_181700-303:localhost:8800FUOYNGGDMQmp,127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-302:localhost:8800PAWIWMHYHHm=o127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-301:localhost:8800SJPGITTBTXmo127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-300:localhost:8800ZZJIQPLATKm̔127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-299:localhost:8800BPDORAMNSEmȃ127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-298:localhost:8800GTROHDSCGVmE127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-297:localhost:8800DVSKNCGFXXm127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-296:localhost:8800SBLEQBXZQLm127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-295:localhost:8800CIYGWJHPPNmǷ3127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-294:localhost:8800RKGLRVXFMGmdžg127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-293:localhost:8800PVLMJRXINQm{127.0.0.1Perl + Net::Async::HTTP/0.44 =wUs: V  t ;  W  s <  Z !v=["w>Z#x?["w>Z!8]!@anon-20191002_181700-431:localhost:8800JIBNPXSTDL8]!@anon-20191002_181700-430:localhost:8800EJQMGEXFCC8]!@anon-20191002_181700-429:localhost:8800OXLZZLMFDN8]!@anon-20191002_181700-428:localhost:8800XEDNEAYRYK8]!@anon-20191002_181700-427:localhost:8800JZIIFMRYCA8]!@anon-20191002_181700-426:localhost:8800GGEPZOIJRJ8]!@anon-20191002_181700-425:localhost:8800TXVBKWCWYM8]!@anon-20191002_181700-424:localhost:8800ZTZZRYHYSR8]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZR8]!@anon-20191002_181700-422:localhost:8800VPDAIJPBTT8]!@anon-20191002_181700-421:localhost:8800UDSBEIJMWH8]!@anon-20191002_181700-420:localhost:8800PFSCBSPFUQ6[!@anon-20191002_181700-41:localhost:8800OLPAIVSAQXE8]!@anon-20191002_181700-419:localhost:8800WRAHOCOTZG8]!@anon-20191002_181700-418:localhost:8800UIZEZFRVWZ8]!@anon-20191002_181700-417:localhost:8800VZYHWNRJEP8]!@anon-20191002_181700-416:localhost:8800DJBLIYEMJA8]!@anon-20191002_181700-415:localhost:8800GYOCEBCXKN8]!@anon-20191002_181700-414:localhost:8800JOACLHYIFX8]!@anon-20191002_181700-413:localhost:8800ADVOIWYJVV8]!@anon-20191002_181700-412:localhost:8800EGSWCNVTAJ8]!@anon-20191002_181700-411:localhost:8800QBCZCYKWIT8]!@anon-20191002_181700-410:localhost:8800UDEVOELNMK6[!@anon-20191002_181700-40:localhost:8800MBXHKMDVDXD8]!@anon-20191002_181700-409:localhost:8800GINWCFSINT8]!@anon-20191002_181700-408:localhost:8800XKDKZYMRFB8]!@anon-20191002_181700-407:localhost:8800RTGALMPCLS8]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGU8]!@anon-20191002_181700-405:localhost:8800QVDYLSWJGF8]!@anon-20191002_181700-404:localhost:8800QFVVSFPXDR8]!@anon-20191002_181700-403:localhost:8800MFLWYWCNCI8]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLI8]!@anon-20191002_181700-401:localhost:8800EBUCUMIOWS8]!@anon-20191002_181700-400:localhost:8800QHUMTZGCNW6[!@anon-20191002_181700-3a:localhost:8800KUKHFAMCTC6[!@anon-20191002_181700-39:localhost:8800FJQMNXTSGYC8]!@anon-20191002_181700-399:localhost:8800PYXHCRNRQL8]!@anon-20191002_181700-398:localhost:8800QJTBFOFNHM8]!@anon-20191002_181700-397:localhost:8800MUYZSHOUYA8]!@anon-20191002_181700-396:localhost:8800ALHPRAAFGP8]!@anon-20191002_181700-395:localhost:8800QBHVPKMMWE8]!@anon-20191002_181700-394:localhost:8800PSPZGMAOEG8]!@anon-20191002_181700-393:localhost:8800ABJMLTSTAS8]!@anon-20191002_181700-392:localhost:8800GEJMGKQZNJ8]!@anon-20191002_181700-391:localhost:8800XGNSQPEQLL8]!@anon-20191002_181700-390:localhost:8800IMMWZCJBQH6[!@anon-20191002_181700-38:localhost:8800COQUCEUZOKB8]!@anon-20191002_181700-389:localhost:8800NHRBBKCZKA8]!@anon-20191002_181700-388:localhost:8800WFNOXGPIPE8]!@anon-20191002_181700-387:localhost:8800AJRMDNNIDH8]!@anon-20191002_181700-386:localhost:8800QTCKZJPBWS8]!@anon-20191002_181700-385:localhost:8800ZHNFADRSTE8]!@anon-20191002_181700-384:localhost:8800UKXQVESHRP8]!@anon-20191002_181700-383:localhost:8800CPGAGQTCJJ8]!@anon-20191002_181700-382:localhost:8800KSBAPZNICM8]!@anon-20191002_181700-381:localhost:8800CRNWPBWJUO8]!@anon-20191002_181700-380:localhost:8800KLOHIVURCF6[!@anon-20191002_181700-37:localhost:8800VQICIZWNXHA8]!@anon-20191002_181700-379:localhost:8800XGMNNMSEOT8]!@anon-20191002_181700-378:localhost:8800BACPAMXENX8]!@anon-20191002_181700-377:localhost:8800IARUZBQDWZ &0` ( X P Hx@p8h0`e]!E@anon-20191002_181700-371:localhost:8800MVADRLDOGOmS127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-370:localhost:8800SBQUDYTSCJmc127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-369:localhost:8800PMLSUBDYRAmx127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-368:localhost:8800OXEBNZFASJmϱ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-367:localhost:8800YMOZJNEHXTmϘ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-365:localhost:8800GEIVTPEZWOm~127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-366:localhost:8800FABJQITKMRm~127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-363:localhost:8800OFUEGGAJXFm`127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-364:localhost:8800PEYTIDQOTBm`127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-360:localhost:8800XKNFVZJCREmň127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-361:localhost:8800XCHGELQORJm^127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-362:localhost:8800DYTMFWLSURm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-359:localhost:8800NYAYBPPYBRmβ 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-357:localhost:8800TFBXZDXERTm]127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-358:localhost:8800YPZTVFTILNm)127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-356:localhost:8800ECXXWUQUFNm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-354:localhost:8800EEONPHMPKHm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-355:localhost:8800LDOCSGURJIms127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-353:localhost:8800JNEJUBWWRWm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-352:localhost:8800HQKTWVQFMPm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-350:localhost:8800TQWBNMPIAIm͒)127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-351:localhost:8800GHNDMAFVFRm͒+127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-349:localhost:8800IPTJJENAYSms127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-348:localhost:8800KYSIYINERZmV127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-346:localhost:8800CIUYDTNROPm5h127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-347:localhost:8800CFRSANQZYUm5k127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-345:localhost:8800QSMLRPQTHAm 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-343:localhost:8800QPHBRHJQMLm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-342:localhost:8800TTVUAXXSXPm„127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-341:localhost:8800GZLOUPOIMWm̢V127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-339:localhost:8800DEVPCFFDOHm̑*127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-338:localhost:8800OUNFKLKIBDmo127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-337:localhost:8800AOHNBPYYLFmS127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-336:localhost:8800OFRRIKPQISmR127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-335:localhost:8800WEGENLHOLImM127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-334:localhost:8800KPXDOKYVYYmK127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-333:localhost:8800ZFSXBCPVTUm.127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-332:localhost:8800TBDDBAQUGPm127.0.0.1Perl + Net::Async::HTTP/0.44 '0` ( X P Hx@p8+[N:D]!@anon-20191002_181700-410:localhost:8800UDEVOELNMKeC]!E@anon-20191002_181700-409:localhost:8800GINWCFSINTm0 127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-408:localhost:8800XKDKZYMRFBm+!127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-407:localhost:8800RTGALMPCLSmj127.0.0.1Perl + Net::Async::HTTP/0.44:@]!@anon-20191002_181700-406:localhost:8800TSQHBFVCGUe?]!E@anon-20191002_181700-405:localhost:8800QVDYLSWJGFm127.0.0.1Perl + Net::Async::HTTP/0.44e>]!E@anon-20191002_181700-404:localhost:8800QFVVSFPXDRmr127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-403:localhost:8800MFLWYWCNCIm127.0.0.1Perl + Net::Async::HTTP/0.44:<]!@anon-20191002_181700-402:localhost:8800RGMKVZWLLIe;]!E@anon-20191002_181700-401:localhost:8800EBUCUMIOWSm127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-400:localhost:8800QHUMTZGCNWmҲ127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-399:localhost:8800PYXHCRNRQLmҚ127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-397:localhost:8800MUYZSHOUYAm҂127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-398:localhost:8800QJTBFOFNHMmҖ127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-396:localhost:8800ALHPRAAFGPm}127.0.0.1Perl + Net::Async::HTTP/0.44e5]!E@anon-20191002_181700-395:localhost:8800QBHVPKMMWEmd127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-394:localhost:8800PSPZGMAOEGmK127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-393:localhost:8800ABJMLTSTASm1p127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-392:localhost:8800GEJMGKQZNJm127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-391:localhost:8800XGNSQPEQLLm|127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-390:localhost:8800IMMWZCJBQHmI127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-389:localhost:8800NHRBBKCZKAm127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-388:localhost:8800WFNOXGPIPEmѧ127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-387:localhost:8800AJRMDNNIDHmђ127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-386:localhost:8800QTCKZJPBWSm}#127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-385:localhost:8800ZHNFADRSTEmP9127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-384:localhost:8800UKXQVESHRPmP=127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-383:localhost:8800CPGAGQTCJJm3127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-382:localhost:8800KSBAPZNICMm/127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-381:localhost:8800CRNWPBWJUOm127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-380:localhost:8800KLOHIVURCFm127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-379:localhost:8800XGMNNMSEOTm΅127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-378:localhost:8800BACPAMXENXm΃127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-377:localhost:8800IARUZBQDWZmЛ127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-375:localhost:8800ABNAUGMGBUmk~127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-376:localhost:8800IDKHLQVFRNmЇ127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-374:localhost:8800AEAOAEZYHYm;|127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-372:localhost:8800ADGVRBGQNMm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-373:localhost:8800LNMPGJNAVZm!%127.0.0.1Perl + Net::Async::HTTP/0.44 >Kf-Ws: ] $ y @  c *  F b )Gc,Hd.JKi08]!@anon-20191002_181700-507:localhost:8800XTAWUKOTOH6[!@anon-20191002_181700-43:localhost:8800CHTLJMKZABH8]!@anon-20191002_181700-439:localhost:8800CVIXABNKXU8]!@anon-20191002_181700-438:localhost:8800TJXWGIJRBF8]!@anon-20191002_181700-437:localhost:8800PMLBXPJIHM8]!@anon-20191002_181700-436:localhost:8800PJOSZGJIHE8]!@anon-20191002_181700-435:localhost:8800SYLXZYMBKM8]!@anon-20191002_181700-434:localhost:8800FQTRGMUKGZ8]!@anon-20191002_181700-433:localhost:8800UUQGLCEWQB8]!@anon-20191002_181700-506:localhost:8800WTFXNSFUTL8]!@anon-20191002_181700-505:localhost:8800QKCBIAVDQA8]!@anon-20191002_181700-503:localhost:8800JNGLRXMCQM8]!@anon-20191002_181700-501:localhost:8800YBYGOFEONK 5Y!@anon-20191002_181700-4:localhost:8800OXDBJBCTVL8]!@anon-20191002_181700-499:localhost:8800VXSECXNERA 8]!@anon-20191002_181700-497:localhost:8800OIZUJKPCSC 8]!@anon-20191002_181700-495:localhost:8800QBXBDGRDFZ 8]!@anon-20191002_181700-494:localhost:8800HEAHMVMVEQ8]!@anon-20191002_181700-493:localhost:8800GRPWUCANVU 8]!@anon-20191002_181700-492:localhost:8800BHHCHVPHQT8]!@anon-20191002_181700-491:localhost:8800SADWUTCSYM8]!@anon-20191002_181700-490:localhost:8800YZYHXUDJBU6[!@anon-20191002_181700-48:localhost:8800AJQOQZXPLWN8]!@anon-20191002_181700-488:localhost:8800SPGGZQRKHZ8]!@anon-20191002_181700-486:localhost:8800OFHZWZEQDS8]!@anon-20191002_181700-484:localhost:8800FWOSSLYDNU8]!@anon-20191002_181700-482:localhost:8800JRYARQINGZ8]!@anon-20191002_181700-480:localhost:8800XJOMFBTCLS6[!@anon-20191002_181700-47:localhost:8800JCZSZIHLLUL8]!@anon-20191002_181700-479:localhost:8800NIEZZMOKPH8]!@anon-20191002_181700-478:localhost:8800VNBLCYVGBZ8]!@anon-20191002_181700-477:localhost:8800UXWKBDSXBA8]!@anon-20191002_181700-476:localhost:8800RXRCJNSJQB8]!@anon-20191002_181700-475:localhost:8800JJMOBOLFAH8]!@anon-20191002_181700-473:localhost:8800TSHZTIBDHN8]!@anon-20191002_181700-471:localhost:8800VTNKSDWUTB8]!@anon-20191002_181700-469:localhost:8800VLYSIOTSXR8]!@anon-20191002_181700-467:localhost:8800TOUFSHQMBK8]!@anon-20191002_181700-465:localhost:8800JPLWYOLOJM8]!@anon-20191002_181700-464:localhost:8800VUWRFRZGNE8]!@anon-20191002_181700-463:localhost:8800ZKSEJYQPIO8]!@anon-20191002_181700-462:localhost:8800SKOLIDFQEN8]!@anon-20191002_181700-461:localhost:8800GRYRTUWCZU8]!@anon-20191002_181700-460:localhost:8800GJEFYISBJP1[@anon-20191002_181700-45:localhost:8800xyzzyK8]!@anon-20191002_181700-458:localhost:8800BKBKPFYUSG8]!@anon-20191002_181700-456:localhost:8800CRSASZJZPS8]!@anon-20191002_181700-454:localhost:8800BXAWMRWQLA8]!@anon-20191002_181700-452:localhost:8800NISMZSIYDM8]!@anon-20191002_181700-450:localhost:8800JKUEUBZDEC1[@anon-20191002_181700-44:localhost:8800xyzzyJ8]!@anon-20191002_181700-449:localhost:8800MYBVEJZYHY8]!@anon-20191002_181700-448:localhost:8800LJFADOXYLP8]!@anon-20191002_181700-447:localhost:8800VKYHTJKXLW8]!@anon-20191002_181700-446:localhost:8800JWCYKNRWXJ8]!@anon-20191002_181700-445:localhost:8800IBQSIDYLYF8]!@anon-20191002_181700-444:localhost:8800OXPWWQTOCJ8]!@anon-20191002_181700-443:localhost:8800EZTQKOQREE8]!@anon-20191002_181700-442:localhost:8800ICXJFYTXBA8]!@anon-20191002_181700-441:localhost:8800MUSKUFQFQV8]!@anon-20191002_181700-440:localhost:8800OHPAOKURKK6[!@anon-20191002_181700-43:localhost:8800QIUVDLRUPDI &0` ( X {  Cs ;k3c+[#ej]!E@anon-20191002_181700-449:localhost:8800MYBVEJZYHYmS127.0.0.1Perl + Net::Async::HTTP/0.44ei]!E@anon-20191002_181700-446:localhost:8800JWCYKNRWXJm127.0.0.1Perl + Net::Async::HTTP/0.44eh]!E@anon-20191002_181700-447:localhost:8800VKYHTJKXLWm4^127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-445:localhost:8800IBQSIDYLYFm127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-444:localhost:8800OXPWWQTOCJmd127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-443:localhost:8800EZTQKOQREEm127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-442:localhost:8800ICXJFYTXBAmړ127.0.0.1Perl + Net::Async::HTTP/0.44ec]!E@anon-20191002_181700-441:localhost:8800MUSKUFQFQVm127.0.0.1Perl + Net::Async::HTTP/0.44eb]!E@anon-20191002_181700-440:localhost:8800OHPAOKURKKm127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-439:localhost:8800CVIXABNKXUmB127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-437:localhost:8800PMLBXPJIHMm127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-436:localhost:8800PJOSZGJIHEmԭ127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-438:localhost:8800TJXWGIJRBFm;127.0.0.1Perl + Net::Async::HTTP/0.44e]]!E@anon-20191002_181700-434:localhost:8800FQTRGMUKGZmԙ127.0.0.1Perl + Net::Async::HTTP/0.44e\]!E@anon-20191002_181700-433:localhost:8800UUQGLCEWQBmԃ127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-435:localhost:8800SYLXZYMBKMmԞ127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-432:localhost:8800ZOPSRSBYRNmvY127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-431:localhost:8800JIBNPXSTDLmr)127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-430:localhost:8800EJQMGEXFCCm]127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-429:localhost:8800OXLZZLMFDNmH127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-428:localhost:8800XEDNEAYRYKmF127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-427:localhost:8800JZIIFMRYCAm04127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-426:localhost:8800GGEPZOIJRJm127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-424:localhost:8800ZTZZRYHYSRm127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-425:localhost:8800TXVBKWCWYMm127.0.0.1Perl + Net::Async::HTTP/0.44:Q]!@anon-20191002_181700-423:localhost:8800LYUZSTXPZReP]!E@anon-20191002_181700-421:localhost:8800UDSBEIJMWHm127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-422:localhost:8800VPDAIJPBTTmk127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-420:localhost:8800PFSCBSPFUQm127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-419:localhost:8800WRAHOCOTZGmӹ127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-417:localhost:8800VZYHWNRJEPmӢY127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-418:localhost:8800UIZEZFRVWZmӶw127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-416:localhost:8800DJBLIYEMJAmӌ127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-414:localhost:8800JOACLHYIFXmr127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-415:localhost:8800GYOCEBCXKNmӇS127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-413:localhost:8800ADVOIWYJVVm_c127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-411:localhost:8800QBCZCYKWITmC127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-412:localhost:8800EGSWCNVTAJmZU127.0.0.1Perl + Net::Async::HTTP/0.44 >@]$Y u< Z ! v =  [ " w >  \ #x?]$y@\#x?y@^%8]!@anon-20191002_181700-578:localhost:8800JVKVSBXCSNI8]!@anon-20191002_181700-577:localhost:8800MKYGCGNVJBH8]!@anon-20191002_181700-518:localhost:8800LJEXZWJDWN8]!@anon-20191002_181700-516:localhost:8800DBXNPICYFO8]!@anon-20191002_181700-514:localhost:8800LBNXTFJTIT8]!@anon-20191002_181700-512:localhost:8800XMPLTRSJHY8]!@anon-20191002_181700-510:localhost:8800TMGCAARJXM6[!@anon-20191002_181700-50:localhost:8800BNBHLRCHUXO8]!@anon-20191002_181700-509:localhost:8800RHTCHJDJOV8]!@anon-20191002_181700-576:localhost:8800OMBHTKYAAUG8]!@anon-20191002_181700-575:localhost:8800NDSWGGEQOXF8]!@anon-20191002_181700-574:localhost:8800HLLZYJLEQNE8]!@anon-20191002_181700-573:localhost:8800BMOWCJUXWQD8]!@anon-20191002_181700-572:localhost:8800VQNUOKTLPPC8]!@anon-20191002_181700-571:localhost:8800LDVXZXQHTMB8]!@anon-20191002_181700-570:localhost:8800ECXFORDQSPA8]!@anon-20191002_181700-569:localhost:8800QUJKINDXXQ@8]!@anon-20191002_181700-568:localhost:8800IRGUUINXHF?8]!@anon-20191002_181700-567:localhost:8800XHVOSXRUNL>8]!@anon-20191002_181700-566:localhost:8800QBBGHXSEKF=8]!@anon-20191002_181700-565:localhost:8800MSICJQZBGX<8]!@anon-20191002_181700-564:localhost:8800JAGAKQJOKZ;8]!@anon-20191002_181700-563:localhost:8800RLVZAZQHOM:8]!@anon-20191002_181700-562:localhost:8800RUCUWRMARX98]!@anon-20191002_181700-561:localhost:8800YQDTZKECLG88]!@anon-20191002_181700-560:localhost:8800MSCBPCIKEE76[!@anon-20191002_181700-55:localhost:8800GJICSOZSSMU8]!@anon-20191002_181700-558:localhost:8800ZVKDTDNPLS68]!@anon-20191002_181700-557:localhost:8800KTBNHNNWDA58]!@anon-20191002_181700-556:localhost:8800TMQBHREBEO48]!@anon-20191002_181700-555:localhost:8800MAWHFJMVIZ38]!@anon-20191002_181700-554:localhost:8800FFUSIPBHXS28]!@anon-20191002_181700-552:localhost:8800JYCWUAAHBU18]!@anon-20191002_181700-551:localhost:8800PDLFVATDIV08]!@anon-20191002_181700-550:localhost:8800TBXCVBUGVR/6[!@anon-20191002_181700-54:localhost:8800WKSZTPHXTGT8]!@anon-20191002_181700-549:localhost:8800BYOSFCFMSO.8]!@anon-20191002_181700-548:localhost:8800XQXKFJTYCC-8]!@anon-20191002_181700-545:localhost:8800TWGXUTPQOV,8]!@anon-20191002_181700-543:localhost:8800FZCMWYDVSK+8]!@anon-20191002_181700-541:localhost:8800XVDHHDVGDJ*6[!@anon-20191002_181700-53:localhost:8800HCQPROAEXNS8]!@anon-20191002_181700-539:localhost:8800OLXWQXBCRO)8]!@anon-20191002_181700-538:localhost:8800PJMZGLQCBZ'8]!@anon-20191002_181700-537:localhost:8800JAPSJNDXUJ(8]!@anon-20191002_181700-535:localhost:8800RWVMFNQDZQ&8]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZ%8]!@anon-20191002_181700-534:localhost:8800FBPWXONJWM#8]!@anon-20191002_181700-533:localhost:8800TYQEWPDZRP$8]!@anon-20191002_181700-532:localhost:8800FXXARIFXSS!8]!@anon-20191002_181700-531:localhost:8800HVNAEYFAYK"6[!@anon-20191002_181700-52:localhost:8800KYXATQJIHBR8]!@anon-20191002_181700-529:localhost:8800WXKOXWYNOL 8]!@anon-20191002_181700-527:localhost:8800BACKHRSCZN8]!@anon-20191002_181700-526:localhost:8800CNSENJMXXV8]!@anon-20191002_181700-525:localhost:8800DQXQXDJYET8]!@anon-20191002_181700-524:localhost:8800IVEUVINDHF8]!@anon-20191002_181700-523:localhost:8800CMSDWRWLLH8]!@anon-20191002_181700-521:localhost:8800PMRXQYAAOV8]!@anon-20191002_181700-520:localhost:8800LGMWFFKPIS6[!@anon-20191002_181700-51:localhost:8800IJUKQYPGHPQ6[!@anon-20191002_181700-51:localhost:8800EXJVEMMDWDP &0` ( X P Hx@p8h0`e]!E@anon-20191002_181700-506:localhost:8800WTFXNSFUTLmG127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-505:localhost:8800QKCBIAVDQAm/127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-503:localhost:8800JNGLRXMCQMm i127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-501:localhost:8800YBYGOFEONKm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-499:localhost:8800VXSECXNERAm¤127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-497:localhost:8800OIZUJKPCSCm؞127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-495:localhost:8800QBXBDGRDFZm|W127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-493:localhost:8800GRPWUCANVUmY?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-494:localhost:8800HEAHMVMVEQmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-492:localhost:8800BHHCHVPHQTmOs127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-491:localhost:8800SADWUTCSYMm3_127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-490:localhost:8800YZYHXUDJBUm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-488:localhost:8800SPGGZQRKHZm!127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-486:localhost:8800OFHZWZEQDSm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-484:localhost:8800FWOSSLYDNUmײ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-482:localhost:8800JRYARQINGZmא127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-480:localhost:8800XJOMFBTCLSmm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-479:localhost:8800NIEZZMOKPHmb127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-478:localhost:8800VNBLCYVGBZmON127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-477:localhost:8800UXWKBDSXBAmEl127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-476:localhost:8800RXRCJNSJQBm-127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-475:localhost:8800JJMOBOLFAHm1127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-473:localhost:8800TSHZTIBDHNm127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-471:localhost:8800VTNKSDWUTBme127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-469:localhost:8800VLYSIOTSXRm֬127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-467:localhost:8800TOUFSHQMBKm։127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-465:localhost:8800JPLWYOLOJMmh127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-464:localhost:8800VUWRFRZGNEm\127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-463:localhost:8800ZKSEJYQPIOmH127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-462:localhost:8800SKOLIDFQENm?127.0.0.1Perl + Net::Async::HTTP/0.44er]!E@anon-20191002_181700-461:localhost:8800GRYRTUWCZUm%127.0.0.1Perl + Net::Async::HTTP/0.44eq]!E@anon-20191002_181700-460:localhost:8800GJEFYISBJPm 127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-458:localhost:8800BKBKPFYUSGmv127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-456:localhost:8800CRSASZJZPSm127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-454:localhost:8800BXAWMRWQLAmը127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-452:localhost:8800NISMZSIYDMmՇP127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-450:localhost:8800JKUEUBZDECm^127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-448:localhost:8800LJFADOXYLPm?R127.0.0.1Perl + Net::Async::HTTP/0.44 &0` ( X P o 7*TL|Dce6]!E@anon-20191002_181700-558:localhost:8800ZVKDTDNPLSm9127.0.0.1Perl + Net::Async::HTTP/0.44v5]!/E@anon-20191002_181700-557:localhost:8800KTBNHNNWDAtest display namem+127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-556:localhost:8800TMQBHREBEOm127.0.0.1Perl + Net::Async::HTTP/0.44v3]!/E@anon-20191002_181700-555:localhost:8800MAWHFJMVIZtest display namem 127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-554:localhost:8800FFUSIPBHXSm127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-552:localhost:8800JYCWUAAHBUmB127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-551:localhost:8800PDLFVATDIVmL127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-550:localhost:8800TBXCVBUGVRm۲127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-549:localhost:8800BYOSFCFMSOmۦ127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-548:localhost:8800XQXKFJTYCCmے127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-545:localhost:8800TWGXUTPQOVmY127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-543:localhost:8800FZCMWYDVSKm(127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-541:localhost:8800XVDHHDVGDJm127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-539:localhost:8800OLXWQXBCROm#127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-537:localhost:8800JAPSJNDXUJm̌127.0.0.1Perl + Net::Async::HTTP/0.44k']!E@anon-20191002_181700-538:localhost:8800PJMZGLQCBZwibblem127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-535:localhost:8800RWVMFNQDZQmگ127.0.0.1Perl + Net::Async::HTTP/0.44:%]!@anon-20191002_181700-534:localhost:8800RHYMUWAILZe$]!E@anon-20191002_181700-533:localhost:8800TYQEWPDZRPmڕ(127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-534:localhost:8800FBPWXONJWMmڤ127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-531:localhost:8800HVNAEYFAYKm{127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-532:localhost:8800FXXARIFXSSmڋY127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-529:localhost:8800WXKOXWYNOLmv127.0.0.1Perl + Net::Async::HTTP/0.44v]!/E@anon-20191002_181700-527:localhost:8800BACKHRSCZNtest display namemr2127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-526:localhost:8800CNSENJMXXVmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-525:localhost:8800DQXQXDJYETml127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-524:localhost:8800IVEUVINDHFmh127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-523:localhost:8800CMSDWRWLLHmf}127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-521:localhost:8800PMRXQYAAOVm@127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-520:localhost:8800LGMWFFKPISm?127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-518:localhost:8800LJEXZWJDWNm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-516:localhost:8800DBXNPICYFOm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-514:localhost:8800LBNXTFJTITm՞127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-512:localhost:8800XMPLTRSJHYmٴ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-510:localhost:8800TMGCAARJXMmَ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-509:localhost:8800RHTCHJDJOVmق|127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-508:localhost:8800IUNUZDZDEUmj127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-507:localhost:8800XTAWUKOTOHm`127.0.0.1Perl + Net::Async::HTTP/0.44 =x\#Uq8 T  u <  X  v =  Y u>Z!v=["w>xA]$8]!@anon-20191002_181700-639:localhost:8800VIDPYYIORG8]!@anon-20191002_181700-585:localhost:8800XLLZJGYIHRP8]!@anon-20191002_181700-584:localhost:8800FZKRURXWXEO8]!@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEN8]!@anon-20191002_181700-582:localhost:8800WSKNBNWTARM8]!@anon-20191002_181700-581:localhost:8800RYCHJSFPQZL8]!@anon-20191002_181700-580:localhost:8800CRNUPLGBOPK6[!@anon-20191002_181700-57:localhost:8800NFIQURSFUOV8]!@anon-20191002_181700-638:localhost:8800AMILRIOBVF8]!@anon-20191002_181700-637:localhost:8800SOCIZPGICG8]!@anon-20191002_181700-635:localhost:8800SCDBHOHLOL8]!@anon-20191002_181700-634:localhost:8800GKOWEMDMJG~8]!@anon-20191002_181700-633:localhost:8800TRECTOOCOT}8]!@anon-20191002_181700-632:localhost:8800VIXCAXAJWE|8]!@anon-20191002_181700-631:localhost:8800KQCHQRUBXZ{8]!@anon-20191002_181700-630:localhost:8800VFOQXGNRPEz6[!@anon-20191002_181700-62:localhost:8800PJTOWKTNYXZ8]!@anon-20191002_181700-628:localhost:8800JKNWCQGMTXy8]!@anon-20191002_181700-627:localhost:8800XBWVSSSTPWx8]!@anon-20191002_181700-626:localhost:8800GMFLXIUBWOw8]!@anon-20191002_181700-625:localhost:8800LXKNSEODEIv8]!@anon-20191002_181700-624:localhost:8800AATHUMCUILu8]!@anon-20191002_181700-623:localhost:8800VLGPPLCUUDt8]!@anon-20191002_181700-622:localhost:8800IAPOATKCLUs8]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDHr8]!@anon-20191002_181700-620:localhost:8800CTOWFYNHGQq6[!@anon-20191002_181700-61:localhost:8800SXUBBXHSVUY8]!@anon-20191002_181700-619:localhost:8800AZJJCPXJVVp8]!@anon-20191002_181700-618:localhost:8800KPRKVKAABYo8]!@anon-20191002_181700-617:localhost:8800DZQIEDJUETn8]!@anon-20191002_181700-616:localhost:8800YMFGFJXLHSm8]!@anon-20191002_181700-615:localhost:8800LDFQWSUCEMl8]!@anon-20191002_181700-614:localhost:8800KKJOZKNSMZk8]!@anon-20191002_181700-613:localhost:8800UDRWGJFVHIj8]!@anon-20191002_181700-612:localhost:8800YGUHRNQFRPi8]!@anon-20191002_181700-611:localhost:8800UERIFUMBMUh8]!@anon-20191002_181700-610:localhost:8800ZXXERHSURNg6[!@anon-20191002_181700-60:localhost:8800JSZKVAFOZGX8]!@anon-20191002_181700-609:localhost:8800HHJPZAWEAEf8]!@anon-20191002_181700-608:localhost:8800RSNCULZYRUe8]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVc8]!@anon-20191002_181700-605:localhost:8800CFUUUFWJDDb8]!@anon-20191002_181700-604:localhost:8800OVWYBOSWZEd8]!@anon-20191002_181700-603:localhost:8800KOCCLCFIZW`8]!@anon-20191002_181700-602:localhost:8800KDNTCWSCOJa8]!@anon-20191002_181700-601:localhost:8800BRBWCFMZLM^8]!@anon-20191002_181700-600:localhost:8800RBYKXFWHAP_5Y!@anon-20191002_181700-5:localhost:8800WYYDRNGEZS6[!@anon-20191002_181700-59:localhost:8800DRVLOZZUPQW8]!@anon-20191002_181700-598:localhost:8800TGNIJBJLOR\8]!@anon-20191002_181700-597:localhost:8800TEPJNKLEKS[8]!@anon-20191002_181700-596:localhost:8800XLWTYGZVSGY8]!@anon-20191002_181700-596:localhost:8800WNSHUZKVHWZ8]!@anon-20191002_181700-595:localhost:8800HPPFUJBMSQX8]!@anon-20191002_181700-593:localhost:8800MHLBNUKOHTW8]!@anon-20191002_181700-591:localhost:8800EHJUGKTSXTV8]!@anon-20191002_181700-590:localhost:8800WKVIGIMVPRU8]!@anon-20191002_181700-589:localhost:8800WSMMMNHHRQT8]!@anon-20191002_181700-588:localhost:8800CHJPRGUPAUS8]!@anon-20191002_181700-587:localhost:8800VGJOOHQHVER8]!@anon-20191002_181700-586:localhost:8800DOTBNZJMYCQ &0` ( X P Hx@p8h0`e\]!E@anon-20191002_181700-598:localhost:8800TGNIJBJLORm)127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-597:localhost:8800TEPJNKLEKSm127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-596:localhost:8800WNSHUZKVHWm2127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-596:localhost:8800XLWTYGZVSGm127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-595:localhost:8800HPPFUJBMSQm127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-593:localhost:8800MHLBNUKOHTmȔ127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-591:localhost:8800EHJUGKTSXTm127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-590:localhost:8800WKVIGIMVPRm,127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-589:localhost:8800WSMMMNHHRQm޽c127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-588:localhost:8800CHJPRGUPAUm޹127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-587:localhost:8800VGJOOHQHVEm޷127.0.0.1Perl + Net::Async::HTTP/0.44eQ]!E@anon-20191002_181700-586:localhost:8800DOTBNZJMYCm޵127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-585:localhost:8800XLLZJGYIHRm޲127.0.0.1Perl + Net::Async::HTTP/0.44eO]!E@anon-20191002_181700-584:localhost:8800FZKRURXWXEmޘ127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-583:localhost:8800ZQYHHUGDMEmހb127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-582:localhost:8800WSKNBNWTARml127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-581:localhost:8800RYCHJSFPQZmi[127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-580:localhost:8800CRNUPLGBOPmU127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-579:localhost:8800LLEXLPJZBRm?127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-578:localhost:8800JVKVSBXCSNm+u127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-577:localhost:8800MKYGCGNVJBm127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-576:localhost:8800OMBHTKYAAUmC127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-575:localhost:8800NDSWGGEQOXmr127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-574:localhost:8800HLLZYJLEQNm127.0.0.1Perl + Net::Async::HTTP/0.44eD]!E@anon-20191002_181700-573:localhost:8800BMOWCJUXWQmݓg127.0.0.1Perl + Net::Async::HTTP/0.44eC]!E@anon-20191002_181700-572:localhost:8800VQNUOKTLPPmo127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-571:localhost:8800LDVXZXQHTMm[127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-570:localhost:8800ECXFORDQSPm/5127.0.0.1Perl + Net::Async::HTTP/0.44e@]!E@anon-20191002_181700-569:localhost:8800QUJKINDXXQmy127.0.0.1Perl + Net::Async::HTTP/0.44e?]!E@anon-20191002_181700-568:localhost:8800IRGUUINXHFm127.0.0.1Perl + Net::Async::HTTP/0.44e>]!E@anon-20191002_181700-567:localhost:8800XHVOSXRUNLm127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-566:localhost:8800QBBGHXSEKFmԚ127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-565:localhost:8800MSICJQZBGXm127.0.0.1Perl + Net::Async::HTTP/0.44e;]!E@anon-20191002_181700-564:localhost:8800JAGAKQJOKZmܭn127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-563:localhost:8800RLVZAZQHOMmܘS127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-562:localhost:8800RUCUWRMARXm܃127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-561:localhost:8800YQDTZKECLGmr127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-560:localhost:8800MSCBPCIKEEmd127.0.0.1Perl + Net::Async::HTTP/0.44 'Cs f . ^ & VyAq 9i1ae]!E@anon-20191002_181700-640:localhost:8800JIZUEMVYQNm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-639:localhost:8800VIDPYYIORGmᷱ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-638:localhost:8800AMILRIOBVFmV127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-637:localhost:8800SOCIZPGICGmq127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-635:localhost:8800SCDBHOHLOLm3127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-634:localhost:8800GKOWEMDMJGm127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-633:localhost:8800TRECTOOCOTm127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-632:localhost:8800VIXCAXAJWEm127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-631:localhost:8800KQCHQRUBXZmM127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-630:localhost:8800VFOQXGNRPEm127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-628:localhost:8800JKNWCQGMTXm127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-627:localhost:8800XBWVSSSTPWmɓ127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-626:localhost:8800GMFLXIUBWOm127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-625:localhost:8800LXKNSEODEImࠢ127.0.0.1Perl + Net::Async::HTTP/0.44eu]!E@anon-20191002_181700-624:localhost:8800AATHUMCUILm127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-623:localhost:8800VLGPPLCUUDmx127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-622:localhost:8800IAPOATKCLUmb127.0.0.1Perl + Net::Async::HTTP/0.44:r]!@anon-20191002_181700-621:localhost:8800MQWOVRGMDHeq]!E@anon-20191002_181700-620:localhost:8800CTOWFYNHGQmO127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-619:localhost:8800AZJJCPXJVVm5127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-618:localhost:8800KPRKVKAABYm4127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-617:localhost:8800DZQIEDJUETm*127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-616:localhost:8800YMFGFJXLHSm127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-615:localhost:8800LDFQWSUCEMm127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-614:localhost:8800KKJOZKNSMZmG127.0.0.1Perl + Net::Async::HTTP/0.44ej]!E@anon-20191002_181700-613:localhost:8800UDRWGJFVHIm127.0.0.1Perl + Net::Async::HTTP/0.44ei]!E@anon-20191002_181700-612:localhost:8800YGUHRNQFRPm127.0.0.1Perl + Net::Async::HTTP/0.44eh]!E@anon-20191002_181700-611:localhost:8800UERIFUMBMUm127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-610:localhost:8800ZXXERHSURNmߨ127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-609:localhost:8800HHJPZAWEAEmߨ!127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-608:localhost:8800RSNCULZYRUm߀127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-604:localhost:8800OVWYBOSWZEmf127.0.0.1Perl + Net::Async::HTTP/0.44:c]!@anon-20191002_181700-606:localhost:8800RBTCMPCZTVeb]!E@anon-20191002_181700-605:localhost:8800CFUUUFWJDDmFp127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-602:localhost:8800KDNTCWSCOJm?127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-603:localhost:8800KOCCLCFIZWm127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-600:localhost:8800RBYKXFWHAPm Y127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-601:localhost:8800BRBWCFMZLMm127.0.0.1Perl + Net::Async::HTTP/0.44R]7!E@admin:localhost:8800GMJMIKRCODmc127.0.0.1Perl + Net::Async::HTTP/0.44 =s;WWs: V  t ;  W  s :  V r;Ws:Xts:Z! 0 8]!@anon-20198]!@anon-20191002_181700-697:localhost:8800EDARWEUZCB8]!@anon-20191002_181700-647:localhost:8800JJTUBBNUOS8]!@anon-20191002_181700-646:localhost:8800HFMIURTAJA8]!@anon-20191002_181700-645:localhost:8800TQRBSFDPVG8]!@anon-20191002_181700-644:localhost:8800INFGSFBNKU8]!@anon-20191002_181700-643:localhost:8800NELMCBWNVQ8]!@anon-20191002_181700-642:localhost:8800FQRREBIQEQ8]!@anon-20191002_181700-641:localhost:8800PFGGCSSRVI8]!@anon-20191002_181700-640:localhost:8800JIZUEMVYQN8]!@anon-20191002_181700-696:localhost:8800HBZTQHKFOS8]!@anon-20191002_181700-695:localhost:8800VDCAEKRWDO8]!@anon-20191002_181700-693:localhost:8800LEFIZYPDBZ8]!@anon-20191002_181700-692:localhost:8800EWIJGPCFOL8]!@anon-20191002_181700-691:localhost:8800KJUDUWTJKS8]!@anon-20191002_181700-690:localhost:8800KFUCCJJOIG6[!@anon-20191002_181700-68:localhost:8800GNKAPUDEUD_8]!@anon-20191002_181700-689:localhost:8800CXTYRGNUGF8]!@anon-20191002_181700-688:localhost:8800XKOMYWOUIR8]!@anon-20191002_181700-687:localhost:8800IBFTGGSJGY8]!@anon-20191002_181700-686:localhost:8800FCAOSGHQKK8]!@anon-20191002_181700-685:localhost:8800ESVUDGRJIL8]!@anon-20191002_181700-684:localhost:8800QWWSYDBLAC8]!@anon-20191002_181700-683:localhost:8800WOMGUTEQPR8]!@anon-20191002_181700-682:localhost:8800RHXEIACOYG8]!@anon-20191002_181700-681:localhost:8800CDCNSMATEC8]!@anon-20191002_181700-680:localhost:8800EVTHCGRZGI6[!@anon-20191002_181700-67:localhost:8800ONYGLHFWXM^8]!@anon-20191002_181700-679:localhost:8800SNZWGQRAKF8]!@anon-20191002_181700-678:localhost:8800FCKGQLJFUT8]!@anon-20191002_181700-677:localhost:8800SLBVCRXVGV8]!@anon-20191002_181700-676:localhost:8800KCVXVHDURO8]!@anon-20191002_181700-675:localhost:8800ROEGYOHAAM8]!@anon-20191002_181700-674:localhost:8800GKOEAKYNVT8]!@anon-20191002_181700-673:localhost:8800VPLLNWDDCE8]!@anon-20191002_181700-672:localhost:8800NZHSLWNGNR8]!@anon-20191002_181700-671:localhost:8800KUQBONAEMF8]!@anon-20191002_181700-670:localhost:8800MCSVGGDMMK8]!@anon-20191002_181700-669:localhost:8800UUBRIPFVWO8]!@anon-20191002_181700-668:localhost:8800DCHVQLDWGW8]!@anon-20191002_181700-667:localhost:8800DHNKEQDWHN8]!@anon-20191002_181700-666:localhost:8800LFHXFSCDSB8]!@anon-20191002_181700-665:localhost:8800DPWOXNTOWQ8]!@anon-20191002_181700-664:localhost:8800KYCVQKAERI8]!@anon-20191002_181700-663:localhost:8800IQBGXQXUIH8]!@anon-20191002_181700-662:localhost:8800BPDPANNUMT8]!@anon-20191002_181700-661:localhost:8800UIDVSRDCXV8]!@anon-20191002_181700-660:localhost:8800MWFTHHYRXE6[!@anon-20191002_181700-65:localhost:8800JPWZALXKWP\8]!@anon-20191002_181700-659:localhost:8800KLSOKHZPOF8]!@anon-20191002_181700-658:localhost:8800NAYXIQANDE8]!@anon-20191002_181700-657:localhost:8800PPMSSCNTYF8]!@anon-20191002_181700-656:localhost:8800JNVQOUXTGI8]!@anon-20191002_181700-655:localhost:8800JMLNJUZSIR8]!@anon-20191002_181700-654:localhost:8800EGUMMWQZXA8]!@anon-20191002_181700-653:localhost:8800LKDIHTPEGU8]!@anon-20191002_181700-652:localhost:8800CVFIWYFYHS8]!@anon-20191002_181700-651:localhost:8800LGYSSDHWDJ8]!@anon-20191002_181700-650:localhost:8800HYWNLVNNUO6[!@anon-20191002_181700-64:localhost:8800NPZFHRJOQI]8]!@anon-20191002_181700-649:localhost:8800TAZJAMAQWA8]!@anon-20191002_181700-648:localhost:8800FUMVLCFOGG &0` ( X P Hx@p8h0`e)]!E@anon-20191002_181700-678:localhost:8800FCKGQLJFUTm刨127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-677:localhost:8800SLBVCRXVGVma127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-676:localhost:8800KCVXVHDUROmW127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-675:localhost:8800ROEGYOHAAMm<127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-674:localhost:8800GKOEAKYNVTm+[127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-673:localhost:8800VPLLNWDDCEm(i127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-672:localhost:8800NZHSLWNGNRm*127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-671:localhost:8800KUQBONAEMFm #127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-670:localhost:8800MCSVGGDMMKm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-669:localhost:8800UUBRIPFVWOme127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-668:localhost:8800DCHVQLDWGWmt127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-667:localhost:8800DHNKEQDWHNmh,127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-666:localhost:8800LFHXFSCDSBmK127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-665:localhost:8800DPWOXNTOWQm-127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-664:localhost:8800KYCVQKAERIm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-663:localhost:8800IQBGXQXUIHm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-662:localhost:8800BPDPANNUMTm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-661:localhost:8800UIDVSRDCXVmi127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-660:localhost:8800MWFTHHYRXEm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-659:localhost:8800KLSOKHZPOFm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-658:localhost:8800NAYXIQANDEmr]127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-657:localhost:8800PPMSSCNTYFmH127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-656:localhost:8800JNVQOUXTGIm,7127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-655:localhost:8800JMLNJUZSIRm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-654:localhost:8800EGUMMWQZXAm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-653:localhost:8800LKDIHTPEGUmf127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-652:localhost:8800CVFIWYFYHSmА127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-651:localhost:8800LGYSSDHWDJm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-650:localhost:8800HYWNLVNNUOm\127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-649:localhost:8800TAZJAMAQWAm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-648:localhost:8800FUMVLCFOGGmR127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-647:localhost:8800JJTUBBNUOSmN127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-646:localhost:8800HFMIURTAJAm♪127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-645:localhost:8800TQRBSFDPVGml127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-644:localhost:8800INFGSFBNKUmlq127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-643:localhost:8800NELMCBWNVQm9W127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-642:localhost:8800FQRREBIQEQm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-641:localhost:8800PFGGCSSRVIm}127.0.0.1Perl + Net::Async::HTTP/0.44 <>["Us: V  t ;  W  s :  V t;Wu<Xtu<X8]!@anon-20191002_181700-705:localhost:8800AZEUEPQBJM8]!@anon-20191002_181700-704:localhost:8800EQKVVEUTZF8]!@anon-20191002_181700-703:localhost:8800ZKXMBTYIRP8]!@anon-20191002_181700-702:localhost:8800MCYWHCABCH8]!@anon-20191002_181700-701:localhost:8800KSBXFIPYSS8]!@anon-20191002_181700-700:localhost:8800GGDKZCAJLW7Y%@anon-20191002_181700-6:localhost:8800login_device5Y!@anon-20191002_181700-6:localhost:8800YDTVVUXGOW8]!@anon-20191002_181700-758:localhost:8800GUAXNWFTDG8]!@anon-20191002_181700-757:localhost:8800QRQFPUSZXE8]!@anon-20191002_181700-756:localhost:8800VNKYAMEGUQ8]!@anon-20191002_181700-755:localhost:8800AJENIKARXJ8]!@anon-20191002_181700-754:localhost:8800ZUIRTQEUGG8]!@anon-20191002_181700-753:localhost:8800PLSIYKWQOB8]!@anon-20191002_181700-752:localhost:8800RYCPPVBPAQ8]!@anon-20191002_181700-751:localhost:8800FXMMNKQIDM8]!@anon-20191002_181700-750:localhost:8800VQNSLBGSCN6[!@anon-20191002_181700-74:localhost:8800SVXLVPCWLXc8]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBW8]!@anon-20191002_181700-748:localhost:8800FCZXWADFJA8]!@anon-20191002_181700-747:localhost:8800IJKBXNQJNY8]!@anon-20191002_181700-746:localhost:8800SROUQRJUGN8]!@anon-20191002_181700-745:localhost:8800GZRCRCKGZN8]!@anon-20191002_181700-744:localhost:8800MCGVEWCDCM8]!@anon-20191002_181700-743:localhost:8800YETXYLXSKF8]!@anon-20191002_181700-742:localhost:8800OLLAKSSDJK6[!@anon-20191002_181700-73:localhost:8800XAYBGVYWKCb8]!@anon-20191002_181700-736:localhost:8800FLOTQJDCJV8]!@anon-20191002_181700-735:localhost:8800ZQXZAKNBDX8]!@anon-20191002_181700-734:localhost:8800KYIXUZPIHI8]!@anon-20191002_181700-733:localhost:8800YGJVVHZCJQ8]!@anon-20191002_181700-732:localhost:8800XWWSSGHQCK8]!@anon-20191002_181700-731:localhost:8800QAJRBGVMCY8]!@anon-20191002_181700-730:localhost:8800BGYKRDCYIR8]!@anon-20191002_181700-729:localhost:8800DNPGOQMGAF8]!@anon-20191002_181700-728:localhost:8800KLYTBBZKRQ8]!@anon-20191002_181700-727:localhost:8800NCKNSWYLRR8]!@anon-20191002_181700-726:localhost:8800DOLLBVDDIP8]!@anon-20191002_181700-725:localhost:8800PPTZJMVRMQ8]!@anon-20191002_181700-724:localhost:8800LOLQJOGTTU8]!@anon-20191002_181700-723:localhost:8800JIVAFIIFHN8]!@anon-20191002_181700-722:localhost:8800IZTIXMADAY8]!@anon-20191002_181700-721:localhost:8800BHJHLJEYAG8]!@anon-20191002_181700-720:localhost:8800CJYSUKRSXN6[!@anon-20191002_181700-71:localhost:8800TCTQJEZQFIa8]!@anon-20191002_181700-719:localhost:8800ERYCEGRJPT8]!@anon-20191002_181700-718:localhost:8800LCLSEHKRUG8]!@anon-20191002_181700-717:localhost:8800JZHRILWPLI8]!@anon-20191002_181700-716:localhost:8800ATBUACMSGR8]!@anon-20191002_181700-715:localhost:8800MLSIEUMQJD8]!@anon-20191002_181700-714:localhost:8800YDBOITJCYD8]!@anon-20191002_181700-713:localhost:8800HRGSFQOGPU8]!@anon-20191002_181700-712:localhost:8800CFERAQYYHK8]!@anon-20191002_181700-711:localhost:8800TQWWPGRZNA8]!@anon-20191002_181700-710:localhost:8800UKBZXSLNLU6[!@anon-20191002_181700-70:localhost:8800PGQYANGMEI`8]!@anon-20191002_181700-709:localhost:8800IIKOSHQIMX8]!@anon-20191002_181700-708:localhost:8800SZXKLUUSLB8]!@anon-20191002_181700-707:localhost:8800VRUFRMLDOP8]!@anon-20191002_181700-706:localhost:8800WRSEYXOBHV &0` ( X P Hx@p8h0`eO]!E@anon-20191002_181700-719:localhost:8800ERYCEGRJPTm 127.0.0.1Perl + Net::Async::HTTP/0.44eN]!E@anon-20191002_181700-717:localhost:8800JZHRILWPLIm127.0.0.1Perl + Net::Async::HTTP/0.44eM]!E@anon-20191002_181700-716:localhost:8800ATBUACMSGRm 127.0.0.1Perl + Net::Async::HTTP/0.44eL]!E@anon-20191002_181700-715:localhost:8800MLSIEUMQJDm&127.0.0.1Perl + Net::Async::HTTP/0.44eK]!E@anon-20191002_181700-714:localhost:8800YDBOITJCYDm127.0.0.1Perl + Net::Async::HTTP/0.44eJ]!E@anon-20191002_181700-713:localhost:8800HRGSFQOGPUm127.0.0.1Perl + Net::Async::HTTP/0.44eI]!E@anon-20191002_181700-712:localhost:8800CFERAQYYHKm127.0.0.1Perl + Net::Async::HTTP/0.44eH]!E@anon-20191002_181700-711:localhost:8800TQWWPGRZNAm獟127.0.0.1Perl + Net::Async::HTTP/0.44eG]!E@anon-20191002_181700-710:localhost:8800UKBZXSLNLUm127.0.0.1Perl + Net::Async::HTTP/0.44eF]!E@anon-20191002_181700-709:localhost:8800IIKOSHQIMXmx127.0.0.1Perl + Net::Async::HTTP/0.44eE]!E@anon-20191002_181700-708:localhost:8800SZXKLUUSLBmv127.0.0.1Perl + Net::Async::HTTP/0.44eD]!E@anon-20191002_181700-707:localhost:8800VRUFRMLDOPm^127.0.0.1Perl + Net::Async::HTTP/0.44eC]!E@anon-20191002_181700-706:localhost:8800WRSEYXOBHVm`127.0.0.1Perl + Net::Async::HTTP/0.44eB]!E@anon-20191002_181700-705:localhost:8800AZEUEPQBJMmH_127.0.0.1Perl + Net::Async::HTTP/0.44eA]!E@anon-20191002_181700-704:localhost:8800EQKVVEUTZFmF=127.0.0.1Perl + Net::Async::HTTP/0.44e@]!E@anon-20191002_181700-703:localhost:8800ZKXMBTYIRPm/*127.0.0.1Perl + Net::Async::HTTP/0.44e?]!E@anon-20191002_181700-702:localhost:8800MCYWHCABCHm-)127.0.0.1Perl + Net::Async::HTTP/0.44e>]!E@anon-20191002_181700-701:localhost:8800KSBXFIPYSSm 127.0.0.1Perl + Net::Async::HTTP/0.44e=]!E@anon-20191002_181700-700:localhost:8800GGDKZCAJLWm 127.0.0.1Perl + Net::Async::HTTP/0.44e<]!E@anon-20191002_181700-697:localhost:8800EDARWEUZCBm R127.0.0.1Perl + Net::Async::HTTP/0.44e;]!E@anon-20191002_181700-698:localhost:8800NUMXWJYFTCme127.0.0.1Perl + Net::Async::HTTP/0.44e:]!E@anon-20191002_181700-696:localhost:8800HBZTQHKFOSm4127.0.0.1Perl + Net::Async::HTTP/0.44e9]!E@anon-20191002_181700-695:localhost:8800VDCAEKRWDOm127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-693:localhost:8800LEFIZYPDBZm127.0.0.1Perl + Net::Async::HTTP/0.44e7]!E@anon-20191002_181700-692:localhost:8800EWIJGPCFOLm127.0.0.1Perl + Net::Async::HTTP/0.44e6]!E@anon-20191002_181700-691:localhost:8800KJUDUWTJKSm濵127.0.0.1Perl + Net::Async::HTTP/0.44e5]!E@anon-20191002_181700-690:localhost:8800KFUCCJJOIGmk127.0.0.1Perl + Net::Async::HTTP/0.44e4]!E@anon-20191002_181700-689:localhost:8800CXTYRGNUGFm&127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-688:localhost:8800XKOMYWOUIRm 127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-687:localhost:8800IBFTGGSJGYm~127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-686:localhost:8800FCAOSGHQKKm|127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-685:localhost:8800ESVUDGRJILmU 127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-684:localhost:8800QWWSYDBLACm/127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-683:localhost:8800WOMGUTEQPRm 127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-682:localhost:8800RHXEIACOYGm:127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-681:localhost:8800CDCNSMATECmʪ127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-680:localhost:8800EVTHCGRZGIm127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-679:localhost:8800SNZWGQRAKFm127.0.0.1Perl + Net::Async::HTTP/0.44 &0` ( X P Hx@3c+[#eu]!E@anon-20191002_181700-761:localhost:8800VFSPRJLZEGmCY127.0.0.1Perl + Net::Async::HTTP/0.44et]!E@anon-20191002_181700-759:localhost:8800KXAFXIMWWPm@}127.0.0.1Perl + Net::Async::HTTP/0.44es]!E@anon-20191002_181700-760:localhost:8800AAUYDDOUHUmAr127.0.0.1Perl + Net::Async::HTTP/0.44er]!E@anon-20191002_181700-758:localhost:8800GUAXNWFTDGm+127.0.0.1Perl + Net::Async::HTTP/0.44eq]!E@anon-20191002_181700-757:localhost:8800QRQFPUSZXEm 127.0.0.1Perl + Net::Async::HTTP/0.44ep]!E@anon-20191002_181700-756:localhost:8800VNKYAMEGUQmS127.0.0.1Perl + Net::Async::HTTP/0.44eo]!E@anon-20191002_181700-754:localhost:8800ZUIRTQEUGGm֜127.0.0.1Perl + Net::Async::HTTP/0.44en]!E@anon-20191002_181700-755:localhost:8800AJENIKARXJm5127.0.0.1Perl + Net::Async::HTTP/0.44em]!E@anon-20191002_181700-753:localhost:8800PLSIYKWQOBm 127.0.0.1Perl + Net::Async::HTTP/0.44el]!E@anon-20191002_181700-752:localhost:8800RYCPPVBPAQm127.0.0.1Perl + Net::Async::HTTP/0.44ek]!E@anon-20191002_181700-751:localhost:8800FXMMNKQIDMmv127.0.0.1Perl + Net::Async::HTTP/0.44ej]!E@anon-20191002_181700-750:localhost:8800VQNSLBGSCNmF127.0.0.1Perl + Net::Async::HTTP/0.44:i]!@anon-20191002_181700-749:localhost:8800UPJEGCTJBWeh]!E@anon-20191002_181700-748:localhost:8800FCZXWADFJAmC127.0.0.1Perl + Net::Async::HTTP/0.44eg]!E@anon-20191002_181700-747:localhost:8800IJKBXNQJNYm127.0.0.1Perl + Net::Async::HTTP/0.44ef]!E@anon-20191002_181700-746:localhost:8800SROUQRJUGNmx127.0.0.1Perl + Net::Async::HTTP/0.44ee]!E@anon-20191002_181700-745:localhost:8800GZRCRCKGZNmh127.0.0.1Perl + Net::Async::HTTP/0.44ed]!E@anon-20191002_181700-744:localhost:8800MCGVEWCDCMmf127.0.0.1Perl + Net::Async::HTTP/0.44ec]!E@anon-20191002_181700-743:localhost:8800YETXYLXSKFmM127.0.0.1Perl + Net::Async::HTTP/0.44eb]!E@anon-20191002_181700-742:localhost:8800OLLAKSSDJKmG127.0.0.1Perl + Net::Async::HTTP/0.44ea]!E@anon-20191002_181700-736:localhost:8800FLOTQJDCJVm(127.0.0.1Perl + Net::Async::HTTP/0.44e`]!E@anon-20191002_181700-735:localhost:8800ZQXZAKNBDXmu127.0.0.1Perl + Net::Async::HTTP/0.44e_]!E@anon-20191002_181700-734:localhost:8800KYIXUZPIHIm-127.0.0.1Perl + Net::Async::HTTP/0.44e^]!E@anon-20191002_181700-733:localhost:8800YGJVVHZCJQm?127.0.0.1Perl + Net::Async::HTTP/0.44e]]!E@anon-20191002_181700-732:localhost:8800XWWSSGHQCKm<127.0.0.1Perl + Net::Async::HTTP/0.44e\]!E@anon-20191002_181700-731:localhost:8800QAJRBGVMCYmӥ127.0.0.1Perl + Net::Async::HTTP/0.44e[]!E@anon-20191002_181700-730:localhost:8800BGYKRDCYIRm127.0.0.1Perl + Net::Async::HTTP/0.44eZ]!E@anon-20191002_181700-729:localhost:8800DNPGOQMGAFm觏127.0.0.1Perl + Net::Async::HTTP/0.44eY]!E@anon-20191002_181700-728:localhost:8800KLYTBBZKRQm127.0.0.1Perl + Net::Async::HTTP/0.44eX]!E@anon-20191002_181700-726:localhost:8800DOLLBVDDIPm127.0.0.1Perl + Net::Async::HTTP/0.44eW]!E@anon-20191002_181700-727:localhost:8800NCKNSWYLRRm膗127.0.0.1Perl + Net::Async::HTTP/0.44eV]!E@anon-20191002_181700-725:localhost:8800PPTZJMVRMQmmG127.0.0.1Perl + Net::Async::HTTP/0.44eU]!E@anon-20191002_181700-724:localhost:8800LOLQJOGTTUmk127.0.0.1Perl + Net::Async::HTTP/0.44eT]!E@anon-20191002_181700-723:localhost:8800JIVAFIIFHNmL127.0.0.1Perl + Net::Async::HTTP/0.44eS]!E@anon-20191002_181700-722:localhost:8800IZTIXMADAYmJg127.0.0.1Perl + Net::Async::HTTP/0.44eR]!E@anon-20191002_181700-721:localhost:8800BHJHLJEYAGm+6127.0.0.1Perl + Net::Async::HTTP/0.44eQ]!E@anon-20191002_181700-720:localhost:8800CJYSUKRSXNm'T127.0.0.1Perl + Net::Async::HTTP/0.44eP]!E@anon-20191002_181700-718:localhost:8800LCLSEHKRUGm 127.0.0.1Perl + Net::Async::HTTP/0.44 EUq8 T  px?["]n$5Q@y\# v 7  S o ? 6 R 8]!@anon-20191002_181700-829:localhost:8800XJTWYRZUAX28]!@anon-20191002_181700-797:localhost:8800BZMLAVLJHJ8]!@anon-20191002_181700-788:localhost:8800JZUHRDQQEL 8]!@anon-20191002_181700-786:localhost:8800WJWBUMRLAI 8]!@anon-20191002_181700-785:localhost:8800TVEQJOAJLI 8]!@anon-20191002_181700-784:localhost:8800SHHMGHRUZH8]!@anon-20191002_181700-783:localhost:8800CBPSCDUMIW8]!@anon-20191002_181700-782:localhost:8800CMQAXLTOQC8]!@anon-20191002_181700-781:localhost:8800FVUJNXJFVG8]!@anon-20191002_181700-779:localhost:8800OWQMDGTEXW8]!@anon-20191002_181700-807:localhost:8800PRZHLWPXJX 8]!@anon-20191002_181700-808:localhost:8800JCKLBLRDDM8]!@anon-20191002_181700-805:localhost:8800BNRHSJKYRW8]!@anon-20191002_181700-806:localhost:8800HOBYWJEDVV8]!@anon-20191002_181700-803:localhost:8800PRYHWWCHCC8]!@anon-20191002_181700-804:localhost:8800VJFGXBTXXF8]!@anon-20191002_181700-801:localhost:8800MRLZAOHJUO8]!@anon-20191002_181700-802:localhost:8800NFTDLWJQJR8]!@anon-20191002_181700-799:localhost:8800LEWHBWNYPQ8]!@anon-20191002_181700-800:localhost:8800PFQNMAUDJC8]!@anon-20191002_181700-792:localhost:8800YSFSTXJXHU8]!@anon-20191002_181700-789:localhost:8800GKBQSBKKFX8]!@anon-20191002_181700-790:localhost:8800VALGYGSZPA 8]!@anon-20191002_181700-787:localhost:8800ESOZVRSFST 6[!@anon-20191002_181700-75:localhost:8800RNMICKNMBMd6[!@anon-20191002_181700-81:localhost:8800CWYDKHHDSEh6[!@anon-20191002_181700-80:localhost:8800YTTBSSDSAFg5Y!@anon-20191002_181700-7:localhost:8800FWKDVNUPWX6[!@anon-20191002_181700-79:localhost:8800EJTCNAZVHDf6[!@anon-20191002_181700-77:localhost:8800FSPHKPOXWNe8]!@anon-20191002_181700-798:localhost:8800INQDOVATBT8]!@anon-20191002_181700-795:localhost:8800JVASIBBRVU8]!@anon-20191002_181700-796:localhost:8800TWRMWQHVDQ8]!@anon-20191002_181700-793:localhost:8800AKRKGRHMWI8]!@anon-20191002_181700-794:localhost:8800HERKLRVCIJ8]!@anon-20191002_181700-791:localhost:8800WJMTFALHBS8]!@anon-20191002_181700-827:localhost:8800DCXRWYLYSN18]!@anon-20191002_181700-826:localhost:8800NTTIDMFUCK08]!@anon-20191002_181700-825:localhost:8800FCBTIUXJCR/8]!@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJ.8]!@anon-20191002_181700-821:localhost:8800LMJVQYBCFD-8]!@anon-20191002_181700-822:localhost:8800CCEPFILJPU,8]!@anon-20191002_181700-819:localhost:8800ZSSFHJTFIG+8]!@anon-20191002_181700-820:localhost:8800LLRZDHKYCL*8]!@anon-20191002_181700-818:localhost:8800FQFDWYIMOL)8]!@anon-20191002_181700-815:localhost:8800HJUZHQSZPV(8]!@anon-20191002_181700-816:localhost:8800PQOEGOAQKB'8]!@anon-20191002_181700-813:localhost:8800VHZZXIJGOS&8]!@anon-20191002_181700-814:localhost:8800VHWGFZXPZC%8]!@anon-20191002_181700-812:localhost:8800NTGXHOAHOH$8]!@anon-20191002_181700-811:localhost:8800HQYXFHPRHS#8]!@anon-20191002_181700-809:localhost:8800FIWEAYAHBV"8]!@anon-20191002_181700-810:localhost:8800RESWFULJEC!8]!@anon-20191002_181700-777:localhost:8800DNPSVJVGAR8]!@anon-20191002_181700-775:localhost:8800KWWOCKYJTK8]!@anon-20191002_181700-774:localhost:8800EHLWRALUNW8]!@anon-20191002_181700-773:localhost:8800KNQPPEVHSZ8]!@anon-20191002_181700-772:localhost:8800AMIQGAPEEX8]!@anon-20191002_181700-771:localhost:8800WFJTBQEQEA8]!@anon-20191002_181700-770:localhost:8800CKDIOBKNJM8]!@anon-20191002_181700-769:localhost:8800YMNXMSKEVL8]!@anon-20191002_181700-768:localhost:8800NKUFFDEKKS8]!@anon-20191002_181700-767:localhost:8800HLSHGDMIOB8]!@anon-20191002_181700-766:localhost:8800HMOWFAWFNH8]!@anon-20191002_181700-764:localhost:8800CSKXMMYZWJ8]!@anon-20191002_181700-763:localhost:8800JLJXCXZRRG8]!@anon-20191002_181700-762:localhost:8800SUIBWCIGQV8]!@anon-20191002_181700-761:localhost:8800VFSPRJLZEG8]!@anon-20191002_181700-760:localhost:8800AAUYDDOUHU &0` ( X P Hx@p8h0`e]!E@anon-20191002_181700-804:localhost:8800VJFGXBTXXFmJ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-801:localhost:8800MRLZAOHJUOm뚑127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-802:localhost:8800NFTDLWJQJRm.127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-799:localhost:8800LEWHBWNYPQmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-800:localhost:8800PFQNMAUDJCm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-797:localhost:8800BZMLAVLJHJm{ 127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-798:localhost:8800INQDOVATBTm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-795:localhost:8800JVASIBBRVUmb%127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-796:localhost:8800TWRMWQHVDQmw127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-793:localhost:8800AKRKGRHMWImE127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-794:localhost:8800HERKLRVCIJm^_127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-791:localhost:8800WJMTFALHBSm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-792:localhost:8800YSFSTXJXHUmB127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-789:localhost:8800GKBQSBKKFXm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-790:localhost:8800VALGYGSZPAm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-787:localhost:8800ESOZVRSFSTmܜ127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-788:localhost:8800JZUHRDQQELm2127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-786:localhost:8800WJWBUMRLAIm127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-785:localhost:8800TVEQJOAJLIm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-784:localhost:8800SHHMGHRUZHmo127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-783:localhost:8800CBPSCDUMIWmͧ127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-782:localhost:8800CMQAXLTOQCm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-781:localhost:8800FVUJNXJFVGm7127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-779:localhost:8800OWQMDGTEXWm~127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-777:localhost:8800DNPSVJVGARm꽺127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-775:localhost:8800KWWOCKYJTKm긄127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-773:localhost:8800KNQPPEVHSZm곲127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-774:localhost:8800EHLWRALUNWmA127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-771:localhost:8800WFJTBQEQEAmꬉ127.0.0.1Perl + Net::Async::HTTP/0.44e~]!E@anon-20191002_181700-772:localhost:8800AMIQGAPEEXmꮤ127.0.0.1Perl + Net::Async::HTTP/0.44e}]!E@anon-20191002_181700-769:localhost:8800YMNXMSKEVLm 127.0.0.1Perl + Net::Async::HTTP/0.44e|]!E@anon-20191002_181700-770:localhost:8800CKDIOBKNJMmꨥ127.0.0.1Perl + Net::Async::HTTP/0.44e{]!E@anon-20191002_181700-768:localhost:8800NKUFFDEKKSm 127.0.0.1Perl + Net::Async::HTTP/0.44ez]!E@anon-20191002_181700-767:localhost:8800HLSHGDMIOBmz127.0.0.1Perl + Net::Async::HTTP/0.44ey]!E@anon-20191002_181700-766:localhost:8800HMOWFAWFNHmx127.0.0.1Perl + Net::Async::HTTP/0.44ex]!E@anon-20191002_181700-764:localhost:8800CSKXMMYZWJmt127.0.0.1Perl + Net::Async::HTTP/0.44ew]!E@anon-20191002_181700-763:localhost:8800JLJXCXZRRGm\127.0.0.1Perl + Net::Async::HTTP/0.44ev]!E@anon-20191002_181700-762:localhost:8800SUIBWCIGQVmF(127.0.0.1Perl + Net::Async::HTTP/0.44 >0` ( X P Hx@K>e9]!E@astest-1-20191002_181700:localhost:8800OYDJFJVTHOmKa127.0.0.1Perl + Net::Async::HTTP/0.44e8]!E@anon-20191002_181700-832:localhost:8800HFTRPYGIKUm127.0.0.1Perl + Net::Async::HTTP/0.44:7]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQED6q!@_astest-01create-0-20191002_181700:localhost:8800SJHWPMAPHZC5o!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNTe4]!E@anon-20191002_181700-831:localhost:8800XNGQHPEIWAm127.0.0.1Perl + Net::Async::HTTP/0.44e3]!E@anon-20191002_181700-830:localhost:8800ERVCXTVUKSm127.0.0.1Perl + Net::Async::HTTP/0.44e2]!E@anon-20191002_181700-829:localhost:8800XJTWYRZUAXm127.0.0.1Perl + Net::Async::HTTP/0.44e1]!E@anon-20191002_181700-827:localhost:8800DCXRWYLYSNm127.0.0.1Perl + Net::Async::HTTP/0.44e0]!E@anon-20191002_181700-826:localhost:8800NTTIDMFUCKmf127.0.0.1Perl + Net::Async::HTTP/0.44e/]!E@anon-20191002_181700-825:localhost:8800FCBTIUXJCRm127.0.0.1Perl + Net::Async::HTTP/0.44e.]!E@anon-20191002_181700-823:localhost:8800ZJPRRDUAYJmx127.0.0.1Perl + Net::Async::HTTP/0.44e-]!E@anon-20191002_181700-821:localhost:8800LMJVQYBCFDmߑ127.0.0.1Perl + Net::Async::HTTP/0.44e,]!E@anon-20191002_181700-822:localhost:8800CCEPFILJPUm127.0.0.1Perl + Net::Async::HTTP/0.44e+]!E@anon-20191002_181700-819:localhost:8800ZSSFHJTFIGm127.0.0.1Perl + Net::Async::HTTP/0.44e*]!E@anon-20191002_181700-820:localhost:8800LLRZDHKYCLm^127.0.0.1Perl + Net::Async::HTTP/0.44e)]!E@anon-20191002_181700-818:localhost:8800FQFDWYIMOLm127.0.0.1Perl + Net::Async::HTTP/0.44e(]!E@anon-20191002_181700-815:localhost:8800HJUZHQSZPVmɕ127.0.0.1Perl + Net::Async::HTTP/0.44e']!E@anon-20191002_181700-816:localhost:8800PQOEGOAQKBm127.0.0.1Perl + Net::Async::HTTP/0.44e&]!E@anon-20191002_181700-813:localhost:8800VHZZXIJGOSm127.0.0.1Perl + Net::Async::HTTP/0.44e%]!E@anon-20191002_181700-814:localhost:8800VHWGFZXPZCm127.0.0.1Perl + Net::Async::HTTP/0.44e$]!E@anon-20191002_181700-812:localhost:8800NTGXHOAHOHm127.0.0.1Perl + Net::Async::HTTP/0.44e#]!E@anon-20191002_181700-811:localhost:8800HQYXFHPRHSm@127.0.0.1Perl + Net::Async::HTTP/0.44e"]!E@anon-20191002_181700-809:localhost:8800FIWEAYAHBVm볳127.0.0.1Perl + Net::Async::HTTP/0.44e!]!E@anon-20191002_181700-810:localhost:8800RESWFULJECm 127.0.0.1Perl + Net::Async::HTTP/0.44e ]!E@anon-20191002_181700-807:localhost:8800PRZHLWPXJXm뮆127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-808:localhost:8800JCKLBLRDDMm밯127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-805:localhost:8800BNRHSJKYRWm127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-806:localhost:8800HOBYWJEDVVm몤127.0.0.1Perl + Net::Async::HTTP/0.44e]!E@anon-20191002_181700-803:localhost:8800PRYHWWCHCCm127.0.0.1Perl + Net::Async::HTTP/0.44 ,$J][$I s <  ` * $ h 8  y J  _ 0 8]!@astest-1-20191002_181700:localhost:8800OYDJFJVTHO98]!@anon-20191002_181700-832:localhost:8800HFTRPYGIKU88]!@astest-0-20191002_181700:localhost:8800XUQOQEKIQE7Ao!@astest-01create-0-20191002_181700:localhost:8800RSMCFQLCNT58]!@anon-20191002_181700-831:localhost:8800XNGQHPEIWA48]!@anon-20191002_181700-830:localhost:8800ERVCXTVUKS3)A!@user-upper:localhost:8800XOXAYMRLKG'=!@spyglass:localhost:8800BUNJZHLDRS+A%@mycooluser:localhost:8800my_device_id.K!@chrtestuser-93-:localhost:8800HXQEHKTZDR .K!@chrtestuser-92-:localhost:8800CTWNGYMNFD.K!@chrtestuser-91-:localhost:8800XTTHVJFCAE .K!@chrtestuser-64-:localhost:8800WQBPBXVRII .K!@chrtestuser-63-:localhost:8800DYMSSHFRND.K!@chrtestuser-58-:localhost:8800ZSYDIEMYSS.K!@chrtestuser-39-:localhost:8800HQOBQJZUDV.K!@chrtestuser-34-:localhost:8800JUJQTQDDTH.K!@chrtestuser-33-:localhost:8800ZAXVDOYTVV/M!@chrtestuser-233-:localhost:8800AJJFHKXPHA/M!@chrtestuser-163-:localhost:8800FYFIWVYQAG/M!@chrtestuser-125-:localhost:8800YFYOOHMJPQ/M!@chrtestuser-124-:localhost:8800BIQFYVWLZN /M!@chrtestuser-123-:localhost:8800GABZLTWEEJ .K!@chrtestuser-10-:localhost:8800NPPZGPSUFO*C!@cas_user=21:localhost:8800BIHKGABDWPM7Y%@anon-20191002_181700-9:localhost:8800login_device$5Y!@anon-20191002_181700-9:localhost:8800MGUQLDGKRQ#6[!@anon-20191002_181700-99:localhost:8800ZATUVUGXMYw6[!@anon-20191002_181700-97:localhost:8800JTJHHIHPPZu6[!@anon-20191002_181700-96:localhost:8800TASTZEHNVLv6[!@anon-20191002_181700-95:localhost:8800RLXRFTIWZTt6[!@anon-20191002_181700-93:localhost:8800JXLBIPXXNBs6[!@anon-20191002_181700-91:localhost:8800UIADKEMPGAq6[!@anon-20191002_181700-90:localhost:8800BJDBLNAUERr3Y@anon-20191002_181700-8:localhost:8800device_2!3Y@anon-20191002_181700-8:localhost:8800device_1"5Y!@anon-20191002_181700-8:localhost:8800EBQTKFPJOD 6[!@anon-20191002_181700-89:localhost:8800OFESILMBJHo6[!@anon-20191002_181700-88:localhost:8800GEBSMXLRDIp6[!@anon-20191002_181700-87:localhost:8800NPXBGXDHGZm6[!@anon-20191002_181700-86:localhost:8800YRHRLSEQYWn6[!@anon-20191002_181700-85:localhost:8800ITOHGGKZTVk6[!@anon-20191002_181700-84:localhost:8800YUGLTPPJENl6[!@anon-20191002_181700-83:localhost:8800STLQYGHMSUj 1^ k x ' 4 A N [ hu$1>KXw&3P]Q@anon-20191002_181700-626:localhost:8800!qInWQPtNQfBFoVzUtP:localhost:8800P]Q@anon-20191002_181700-625:localhost:8800!FZOLkaLbBpaibrbHZx:localhost:8800P]Q@anon-20191002_181700-624:localhost:8800!QxqzQoEBIZhmzHIGrl:localhost:8800P]Q@anon-20191002_181700-623:localhost:8800!fDISaqNBhlOwherxSt:localhost:8800P]Q@anon-20191002_181700-622:localhost:8800!yAfsSyqpJWFnkXQFJL:localhost:8800P]Q@anon-20191002_181700-620:localhost:8800!AYFqrmxwClFQlcTTYq:localhost:8800 N[Q@anon-20191002_181700-61:localhost:8800!kkgEEVUJynguTqAoWD:localhost:8800P]Q@anon-20191002_181700-619:localhost:8800!pHoEnhQYhwlbJXqKQE:localhost:8800 @]1@anon-20191002_181700-617:localhost:8800!0:localhost:42455 P]Q@anon-20191002_181700-616:localhost:8800!OCEHAjcOXWNyWIESIS:localhost:8800 P]Q@anon-20191002_181700-614:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800P]Q@anon-20191002_181700-613:localhost:8800!qjijQBfMwsCPTVgKPm:localhost:8800 P]Q@anon-20191002_181700-612:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-611:localhost:8800!kjjUsMowsioSQRIJeg:localhost:8800P]Q@anon-20191002_181700-610:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-609:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-608:localhost:8800!UTAORDrNxIbSlGByAp:localhost:8800P]Q@anon-20191002_181700-606:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!zqQJfFCRlSEDPKlQPy:localhost:8800P]Q@anon-20191002_181700-605:localhost:8800!MXhwoqNXvexeDDSOZT:localhost:8800P]Q@anon-20191002_181700-603:localhost:8800!JnAKXOrlyisFUpgJPw:localhost:8800P]Q@anon-20191002_181700-601:localhost:8800!XRAZJeoZBhGeHKKjaG:localhost:8800P]Q@anon-20191002_181700-584:localhost:8800!GwLdUoDplyVUogXDzu:localhost:8800P]Q@anon-20191002_181700-583:localhost:8800!nfxDdcgDfooxyiAzaB:localhost:8800P]Q@anon-20191002_181700-582:localhost:8800!XGAmnfaVvjDtQJuufa:localhost:8800P]Q@anon-20191002_181700-580:localhost:8800!OXpGdKbowFUTChPdmF:localhost:8800P]Q@anon-20191002_181700-579:localhost:8800!XUbDuPDiMTXJZDyAPc:localhost:8800P]Q@anon-20191002_181700-578:localhost:8800!VhUAklonNaWKRnLkcr:localhost:8800P]Q@anon-20191002_181700-577:localhost:8800!ybXveQoxPVhjpKHAkG:localhost:8800P]Q@anon-20191002_181700-576:localhost:8800!ijOiudvuzOLNmgNKfG:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!iLHJbsFszubrnybDNz:localhost:8800P]Q@anon-20191002_181700-574:localhost:8800!hrhDJbmXvXBizKoiiK:localhost:8800P]Q@anon-20191002_181700-573:localhost:8800!hGsPmWXboxZZtOlsxY:localhost:8800P]Q@anon-20191002_181700-572:localhost:8800!dvZnfJonDkxlrrDXUk:localhost:8800P]Q@anon-20191002_181700-571:localhost:8800!vZGjXEXQoCaoUXnkCa:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!fdEymmlcUvjgshvVyl:localhost:8800P]Q@anon-20191002_181700-570:localhost:8800!GBPGYLDkXcAsHgkfuS:localhost:8800P]Q@anon-20191002_181700-569:localhost:8800!xcdNyJNFEdaBGFycsB:localhost:8800P]Q@anon-20191002_181700-568:localhost:8800!SUDzkfFBgpuCANOxRS:localhost:8800P]Q@anon-20191002_181700-567:localhost:8800!rWmvvGBgmFMdVvcfPk:localhost:8800P]Q@anon-20191002_181700-566:localhost:8800!gXfXRDTXeVvOHQdaaQ:localhost:8800P]Q@anon-20191002_181700-565:localhost:8800!hegUPDZCEEmBhsNJJR:localhost:8800P]Q@anon-20191002_181700-564:localhost:8800!aSKNKSGXPGoIbSrbEN:localhost:8800P]Q@anon-20191002_181700-563:localhost:8800!peJMRJtXBvIiCttNmm:localhost:8800P]Q@anon-20191002_181700-562:localhost:8800!tPkCGJBKmqUXJoRrnY:localhost:8800P]Q@anon-20191002_181700-561:localhost:8800!QnmLrBAxeItdHsaxWf:localhost:8800P]Q@anon-20191002_181700-558:localhost:8800!hFwigdYZkwYNSwelRH:localhost:8800P]Q@anon-20191002_181700-557:localhost:8800!paDmNxsOZIKyApbxXs:localhost:8800P]Q@anon-20191002_181700-628:localhost:8800!sqkBzbHHJOTNWwynqV:localhost:8800 2n{* 9 V  c  r !  .;JWdq [DSP]Q@anon-20191002_181700-681:localhost:8800!PUIxAaiCnbqaVbawGu:localhost:8800AP]Q@anon-20191002_181700-680:localhost:8800!OJilSqnQvLgoXSqRaW:localhost:8800@N[Q@anon-20191002_181700-67:localhost:8800!cosGKKhHvKaVukBCic:localhost:8800$P]Q@anon-20191002_181700-679:localhost:8800!SrwdtDytJDUBVZOueF:localhost:8800?P]Q@anon-20191002_181700-678:localhost:8800!PVyTvKbqnjSXfGWAMy:localhost:8800>A]3@anon-20191002_181700-677:localhost:8800!13:localhost:42455=A]3@anon-20191002_181700-676:localhost:8800!12:localhost:42455&Q!CgVBWWcRJoHEcwoLcq:localhost:8800Z'Q!CSqENqzAezaZnGktbE:localhost:8800&Q!CQKLQUpSYakhxVDltC:localhost:8800^&Q!CQKLQUpSYakhxVDltC:localhost:8800]'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CKNftKKCaOCVUyYWNY:localhost:8800'Q!CGckPHdSYcIocFvRAq:localhost:8800o'Q!CAGaRyRvrohDRBsrWH:localhost:8800w&Q!BrssELMbasSzTFpIXm:localhost:88009&Q!BrssELMbasSzTFpIXm:localhost:88008'Q!BpTqIemsWFZIqTcgJO:localhost:8800w'Q!BpTqIemsWFZIqTcgJO:localhost:8800v'Q!BpTqIemsWFZIqTcgJO:localhost:8800u'Q!BoyzlWNkRPncpDjBDg:localhost:8800n&Q!BkzROHxDAfKIzYpmPV:localhost:8800m&Q!BkzROHxDAfKIzYpmPV:localhost:8800l&Q!BkzROHxDAfKIzYpmPV:localhost:8800k'Q!BfEFIDBthhkweqfhir:localhost:8800 'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800f'Q!BPNyKqmwcpGxIbGFZG:localhost:8800e'Q!BKZJsoFNhiLTDYNclB:localhost:8800Z'Q!BKZJsoFNhiLTDYNclB:localhost:8800Y'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800&Q!AjjrNwXmPTCruHxaJq:localhost:8800o&Q!AjjrNwXmPTCruHxaJq:localhost:8800n'Q!AYFqrmxwClFQlcTTYq:localhost:8800 &Q!AWfbViAZparIjmDaVT:localhost:8800*'Q!AOEdqVKPFddrqbKPOL:localhost:8800!'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:8800H1!9:localhost:4245571!6:localhost:424551!5:localhost:424553!13:localhost:42455=3!12:localhost:42455<3!11:localhost:42455:3!11:localhost:4245593!10:localhost:4245581!0:localhost:42455 aa:tL$ ` 8  p H X 0  h A  z R * d<uM%]5 nF~V.iA{T-f>'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800'Q!PEcOacvKaBKpXjytEF:localhost:88008'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800&Q!OqPpVlCwmKdAUlwrXI:localhost:8800w&Q!OaCEdDAiatpwYcagUb:localhost:8800'&Q!OaCEdDAiatpwYcagUb:localhost:8800&'Q!OXpGdKbowFUTChPdmF:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800R&Q!OSHhtkGUjpUCkXwIhj:localhost:8800+&Q!OMkiVTuuOEeiFAXtUY:localhost:8800:'Q!OJilSqnQvLgoXSqRaW:localhost:8800@'Q!OCEHAjcOXWNyWIESIS:localhost:8800 &Q!OBWkjfrDCNgYFfblia:localhost:8800b&Q!OBWkjfrDCNgYFfblia:localhost:8800a'Q!NrxQuziwSWzsHuXIlG:localhost:8800&Q!NhWgOTYzEPRwAxRQvS:localhost:8800'Q!NgkQVVUNzoyCVPtckM:localhost:8800C'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800g'Q!NcJYmIbgjsaKJOzBcs:localhost:8800`'Q!NcJYmIbgjsaKJOzBcs:localhost:8800_'Q!NboFFVLpJHTeuUKCjM:localhost:8800='Q!NboFFVLpJHTeuUKCjM:localhost:8800<'Q!NanhNmCnVVpmZRJrTF:localhost:8800'Q!NajQnqYmGyTjxhFYar:localhost:88297&Q!NZHpBquHDfJAjiawGk:localhost:8800 'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NQgavrmiCPUVaVjssy:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800!'Q!NNiyzThHMivrxhojfp:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800}'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800'Q!MWCLSWWGdWcSivNVLI:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800#'Q!LazKtcHZriKzCvvGwV:localhost:8800)&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800p'Q!LFBhoxJpmBqFrwEzGP:localhost:8800o&Q!KxhGcTbEWmtgGNpdox:localhost:8800>&Q!KxhGcTbEWmtgGNpdox:localhost:8800='Q!KmuRTfGFgJdgIDAgIW:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800E'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800/'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800&Q!JusxqeECtidaPlWqhp:localhost:8800u&Q!JusxqeECtidaPlWqhp:localhost:8800t'Q!JnAKXOrlyisFUpgJPw:localhost:8800'Q!JiUawCFQnodcpssOfK:localhost:8800D'Q!JZouHBRxCRbcxYJnbn:localhost:8800-'Q!JYLMokjOhZZlmbZvTf:localhost:8800i'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800V'Q!IYxUkyFHOgvhLpdkOA:localhost:8800U'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800&Q!IMiczgkCTjejbnbeyP:localhost:8800|&Q!IMiczgkCTjejbnbeyP:localhost:8800{'Q!ILbUVZOfPPwaZRrKJd:localhost:8800&Q!IGVHKYcSuxzVPlFHlj:localhost:8800.&Q!IGVHKYcSuxzVPlFHlj:localhost:8800-'Q!HusOrLtWZTLbmQZxmm:localhost:8800z'Q!HusOrLtWZTLbmQZxmm:localhost:8800y'Q!HusOrLtWZTLbmQZxmm:localhost:8800x&Q!HmkcAMkMjWRhTDJMsy:localhost:8800<&Q!HmkcAMkMjWRhTDJMsy:localhost:8800;'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800&Q!HcMGemcRrLnLprOJJR:localhost:8800Y&Q!HcMGemcRrLnLprOJJR:localhost:8800X'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800 a`8pI! Y 1 i A  { S +  c <  w O '_7qI!Y1 kC|T,e>xQ)a9&Q!XgobMgBjNcDRJnRXLD:localhost:8800D&Q!XgobMgBjNcDRJnRXLD:localhost:8800C'Q!XcaKxZsPvbZhAGKKdx:localhost:8800k'Q!XUbDuPDiMTXJZDyAPc:localhost:8800'Q!XRAZJeoZBhGeHKKjaG:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800&Q!XIqmzIFbkHGQPIpywk:localhost:8800i&Q!XIqmzIFbkHGQPIpywk:localhost:8800h'Q!XGAmnfaVvjDtQJuufa:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800&Q!WjlTCJVOFJkanCtkFE:localhost:8800~'Q!WhqVaRReBxJXADAyYD:localhost:8800'Q!WhLedNwPGGGTtqeqam:localhost:8800'Q!WgXzOXLTeqaGfiDFhL:localhost:8800q'Q!WYyiQAVvitxsLZKVCG:localhost:8800&Q!WWZVpyLeZfyfpWidLx:localhost:8800j'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800c'Q!WFHIeSFQyuugGeBFxW:localhost:8800b'Q!VhUAklonNaWKRnLkcr:localhost:8800&Q!VWYMJxEviBNDdJCuKT:localhost:8800['Q!VUibrTIkcRbfrogbQV:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800{&Q!VAEDgDJVqmxXZyAlSW:localhost:8800M&Q!VAEDgDJVqmxXZyAlSW:localhost:8800L'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800'Q!UaitDdkGDcwvRLJSvp:localhost:88003'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!UTAORDrNxIbSlGByAp:localhost:8800'Q!URpLZLuBfVcfHVTBGS:localhost:8800n'Q!URpLZLuBfVcfHVTBGS:localhost:8800m'Q!UMFUOnYRvwKwSPkYHB:localhost:8800%'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800&Q!TleKOyAElrpgyyrAQA:localhost:88000&Q!TleKOyAElrpgyyrAQA:localhost:8800/'Q!TlJCaYlCkOOVzFDlLx:localhost:8800F'Q!TlJCaYlCkOOVzFDlLx:localhost:8800E'Q!TlJCaYlCkOOVzFDlLx:localhost:8800D'Q!TkluVzxeeCbMtbFWWS:localhost:8800'Q!TeraguiGoZoeOGFzlI:localhost:88005'Q!TeraguiGoZoeOGFzlI:localhost:88004'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800R'Q!TcCLuIBUrtFqghDgay:localhost:8800Q&Q!TWETXUgfFZafDdbqLS:localhost:88005&Q!TWETXUgfFZafDdbqLS:localhost:88004'Q!TSFcaXDBqrCREHRHxv:localhost:8800"'Q!THHfVSOSWiBQTHRAnJ:localhost:8800F&Q!SyIWYOmcGiASNkPCTB:localhost:8800W&Q!SyIWYOmcGiASNkPCTB:localhost:8800V'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800?'Q!SrMQpDMFREKRMELwbL:localhost:8800L'Q!SrMQpDMFREKRMELwbL:localhost:8800K'Q!SrMQpDMFREKRMELwbL:localhost:8800J'Q!SpXEytywhTbAftyVBr:localhost:8800M'Q!SnROoiDBapNNtMmKnT:localhost:88006'Q!SfYtaUhCFosNfHfUVm:localhost:8800"'Q!SUDzkfFBgpuCANOxRS:localhost:8800&Q!SBEprlZiuliFNSfNmz:localhost:8800?'Q!RmwbYvIIQyPlHlClty:localhost:8800&Q!RmdhCjvouVLmyIHjaM:localhost:88007'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800'Q!QnmLrBAxeItdHsaxWf:localhost:8800'Q!QkkdnzvdrjHaFGkzMt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800Z&Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800a'Q!QMrkSPlQDGborAyWtQ:localhost:8800`'Q!QFiJrWFFeTAAAUCjCE:localhost:8800'Q!PzoqoNRxeEEqiLyVSV:localhost:8800'Q!PgNDjhhIBAXKryuGKy:localhost:88002'Q!PcvmCDeVUSyJbXpTig:localhost:8800'Q!PVyTvKbqnjSXfGWAMy:localhost:8800>'Q!XiwGxQKwjgutEClKUy:localhost:8829: a`8pH X 0  h @  y Q )  d =  v N &_7oGW/g?zR*d<uM%_7&Q!eKrOqiOabJcMgIJjwC:localhost:8800R'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800i'Q!dvZnfJonDkxlrrDXUk:localhost:8800&Q!duCKuavMBSfRbTFPsc:localhost:88002&Q!duCKuavMBSfRbTFPsc:localhost:88001'Q!drnXStKXkNQkouqUAg:localhost:8800+'Q!dnZVySJLGNtUKsSgXW:localhost:8800'Q!djwLhpJUYOKsgQtrky:localhost:8800m'Q!dWgOTucBVQBKZjfndN:localhost:8800&Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:88002'Q!dBfASZrfiFeSKTjYJm:localhost:8800.'Q!cvXpMzcxNNhsNttxvt:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800X&Q!cosGKKhHvKaVukBCic:localhost:8800$'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800&Q!cSUQGmpIsSCBAVTOHo:localhost:8800@'Q!cRbfhxZdPstEsPGPAu:localhost:8800'Q!cOFSwLSkxZECJMvjjZ:localhost:8800k'Q!cOFSwLSkxZECJMvjjZ:localhost:8800j&Q!cHtqiAyCHEAoBIbCmL:localhost:8800e&Q!cHtqiAyCHEAoBIbCmL:localhost:8800d&Q!cHtqiAyCHEAoBIbCmL:localhost:8800c'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bkwyieHZwSMJfuSKvV:localhost:8800l'Q!bjdLCdBwkKaihRIRFG:localhost:8800%'Q!biBIcqnGelHvLnpkOu:localhost:8800^'Q!biBIcqnGelHvLnpkOu:localhost:8800]'Q!beBXQofoOfxNBtzsut:localhost:8800 'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800C'Q!bOSxzttDtclnrWnLov:localhost:8800B'Q!bNSXSTadOMhIrYpMzH:localhost:8800I'Q!bNSXSTadOMhIrYpMzH:localhost:8800H'Q!bNSXSTadOMhIrYpMzH:localhost:8800G'Q!bLWyXaXdvUhdSAooUz:localhost:8800''Q!azRJNFPIRSFAskLILK:localhost:8800&Q!awHAhLuEkavTGACcUW:localhost:8800x'Q!atnRTMliktaVUhMVID:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800'Q!anErKtXIsVKEEsrzWM:localhost:8800T'Q!anErKtXIsVKEEsrzWM:localhost:8800S'Q!aknLNLxfChlLvFYhkJ:localhost:8800Q'Q!aiOswwhoZqjhcjzbzc:localhost:8800X'Q!aiOswwhoZqjhcjzbzc:localhost:8800W'Q!aaRwQZdNAliyvRHpjs:localhost:8800 'Q!aZwMKYDXJRlSKjQNWM:localhost:8800;&Q!aWvVRVaDflYyyGTOdD:localhost:8800s&Q!aWvVRVaDflYyyGTOdD:localhost:8800r&Q!aWvVRVaDflYyyGTOdD:localhost:8800q&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWJOsiuJONOvjKWEjO:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800'Q!aLxrqpqLkbzyIxGgpk:localhost:8800 'Q!aHyAJEOSdKqTiRjOvw:localhost:8800W'Q!aHyAJEOSdKqTiRjOvw:localhost:8800V&Q!aBCvSXjtZUEPlPGHvY:localhost:8800}'Q!ZvLVbnHjeymRiFIkYr:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaltdIYVZjCHsCWTZD:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZaOktTIVeRgBXxfubH:localhost:8800'Q!ZYKvjplZRyIWvzkRyM:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZWANpHlizyLrUiVvAm:localhost:8800'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800 'Q!ZOwibbprUCQrSJQCrx:localhost:8800d'Q!ZOwibbprUCQrSJQCrx:localhost:8800c'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800h'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800g'Q!ZNIjCvcWhgcwskanjT:localhost:8800~'Q!ZKPJvrCZHMHPEksYDc:localhost:88003'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800f'Q!YpcmaMNMzjvtgYtrli:localhost:8800'Q!YmRuIWixFpaqEeDQLZ:localhost:8800&'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800l'Q!YQATbgbLImCDamiDHC:localhost:8800t'Q!YQATbgbLImCDamiDHC:localhost:8800s'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800&Q!eKrOqiOabJcMgIJjwC:localhost:8800S a`8rK# ] 5 o G   W /  g ?  w O '_7oGZ3 pI!Y1 jBzS+e>'Q!mBQpGaIiadEuKBXfOw:localhost:8800_'Q!mBQpGaIiadEuKBXfOw:localhost:8800^&Q!loalEsWaTYwrVUNJLr:localhost:8800'Q!lgejtcwlywOoIXwEgy:localhost:8800B'Q!laUExtszUaoCpZoyEq:localhost:8800&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800g&Q!lMRBkbYJDQHgdBZBFJ:localhost:8800f'Q!lEJUJZxqZPKZetemiR:localhost:8800('Q!lAGTcYIuMBXsVRGCOe:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwXxkGQFkaeenFTQJr:localhost:8800'Q!kwJgbtogEzCqYbUXfh:localhost:8800.'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800&Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:88001'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kjjUsMowsioSQRIJeg:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800J'Q!jomrpmwwQQtghscizn:localhost:8800I'Q!jlGSdNttccYxjfLkwW:localhost:8800&Q!jfshVGNDxkvqPxFxWB:localhost:8800(&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800 'Q!jRuDexjFzIDOKbwDJQ:localhost:88000'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800|'Q!jDKAOtmeAGbYTpwyEW:localhost:8800j'Q!itfjLXhEaORJLkbfVS:localhost:8800L'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800''Q!iTQSCiLqRMDtgXtUdC:localhost:8800&'Q!iLHJbsFszubrnybDNz:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800U'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:8800'Q!hegUPDZCEEmBhsNJJR:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800$'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800'Q!hNCwypIzdDZDVmCEfd:localhost:8800v'Q!hGsPmWXboxZZtOlsxY:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800T'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800S'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800&Q!fJXiUpbbOlLbHWmPgs:localhost:8800I&Q!fJXiUpbbOlLbHWmPgs:localhost:8800H'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800'Q!fDISaqNBhlOwherxSt:localhost:8800&Q!eySSVuCclRpBDgwKIU:localhost:8800K&Q!eySSVuCclRpBDgwKIU:localhost:8800J'Q!erBPdgtUsiOfIKUkho:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800&Q!egCvzKpbEwmuvDoBTb:localhost:8800E&Q!edbUkYJIZBNOiTuLJs:localhost:8800O&Q!edbUkYJIZBNOiTuLJs:localhost:8800N'Q!eZjhYVNpwdogVDKHCk:localhost:8800u'Q!eZjhYVNpwdogVDKHCk:localhost:8800t'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800 ``8qI! \ 5 n F  ~ V .  h @  y Q ) a9sK#[4 mE}U-f>wO'`9'Q!vZGjXEXQoCaoUXnkCa:localhost:8800&Q!vVmSdclwPIqYDbnmPn:localhost:8800Q&Q!vVmSdclwPIqYDbnmPn:localhost:8800P'Q!vRmMcoJDeCupADwqac:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800&Q!vJQYmOxOBLwFKzYkNj:localhost:8800 'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800 'Q!utJsNQubeIXvcTKGpx:localhost:8800)'Q!utJsNQubeIXvcTKGpx:localhost:8800('Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800'Q!ulbQzxdPXzuvNoqqgU:localhost:8800z'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800&Q!uJtKGXTNdEnCPNOGDx:localhost:8800!'Q!uGpSboYkgxVNOqNeUG:localhost:88005'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800,'Q!taANXnGBZntAreRurn:localhost:8800-'Q!tPkCGJBKmqUXJoRrnY:localhost:8800'Q!tLkhTnTgDjjAvscRkW:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800r'Q!svYOOXWZHtQQzlMcEP:localhost:8800q'Q!svYOOXWZHtQQzlMcEP:localhost:8800p'Q!sqkBzbHHJOTNWwynqV:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800&Q!sPWVGnipjiiWQpywNO:localhost:8800 'Q!sJnuQYOyruhUpXDsLY:localhost:88006'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800s'Q!sBcwyPoXKgnSGVTjNR:localhost:8800r'Q!sAWFpvSUPExZLVcPEd:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800?'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:8800/&Q!rZWweGEChkxxtzyfDB:localhost:8800#&Q!rZWweGEChkxxtzyfDB:localhost:8800"'Q!rWmvvGBgmFMdVvcfPk:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800~'Q!rQeYcODvQiLsOIbQrJ:localhost:8800Y'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800#'Q!qzrZzAieCgGSbpKOQR:localhost:8800$'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800&Q!quaZwrGnzbNWhwAOYB:localhost:8800v'Q!qtelAHlSkrqEFmlCqS:localhost:8800b'Q!qtelAHlSkrqEFmlCqS:localhost:8800a'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800'Q!qSUSLLWjDxcGibUZdT:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!pduebXnTyxQWVxEICp:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!paDmNxsOZIKyApbxXs:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800N'Q!pUSFAnuwUuMlbiInDR:localhost:8800M'Q!pTvdDtkgovsIdAdxCm:localhost:8800y'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 'Q!oznZaCpONuNDaLarkI:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800\'Q!ozgnwUlebxvzLVwyHW:localhost:8800[&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800&Q!oXKJArsPmtgaYANBrg:localhost:8800G&Q!oXKJArsPmtgaYANBrg:localhost:8800F'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800&Q!ntuwVdUxfzNIhIKYaz:localhost:8800`&Q!ntuwVdUxfzNIhIKYaz:localhost:8800_'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800;'Q!nfxDdcgDfooxyiAzaB:localhost:8800'Q!nftGLlLhVgzOwOFufp:localhost:88000'Q!mvgUHEsfGqDkPQUvfG:localhost:8800&Q!msMfSdLIAvklSSAnci:localhost:8800U'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800'Q!mTlCLZQCmfDuQsJxxp:localhost:88009'Q!mOrKBPhetifKHDmElM:localhost:8800( 8I`8pH! Z 2 l E  ~ V .  f >  v N ( a9qI'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800e'Q!zsXPhIPzeXXLvuazzQ:localhost:8800d'Q!zqQJfFCRlSEDPKlQPy:localhost:8800'Q!zoTQAhGwmDDUECKtbL:localhost:8800h&Q!zhCsYcaweVFJLLNwBz:localhost:8800'Q!zScKnCZCFPIIodAiQj:localhost:8800*%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800'Q!yWhIsLsgNVGcnELrDS:localhost:8800P'Q!yWhIsLsgNVGcnELrDS:localhost:8800O'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800\'Q!yNfCaBMPezurwkJRAX:localhost:8800['Q!yLccBXjjEasExpsXlt:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!yAzXcNLHMuqFOcOexj:localhost:8800'Q!yAfsSyqpJWFnkXQFJL:localhost:8800&Q!xwoIOPTGmJIlTXakxC:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800&Q!xhbvqJDfxMSsZPqvld:localhost:8800,'Q!xcdNyJNFEdaBGFycsB:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800]&Q!wvnfKBSrUlfNmYoeil:localhost:8800'Q!wsvXTJXouVkEZcCFsD:localhost:8800&Q!wnriPzXkIMmdTNoJKU:localhost:8800)'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800&Q!wIhMbfQzYbJobPdwyi:localhost:8800B&Q!wIhMbfQzYbJobPdwyi:localhost:8800A'Q!wCsDjKBtuUbrmZgjsB:localhost:8800N'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800x'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800 11vZ|) 0 7 > E LSZahov#}*1P@Q]!ulbQzxdPXzuvNoqqgU:localhost:8800@anon-20191002_181700-767:localhost:88004P?Q]!pTvdDtkgovsIdAdxCm:localhost:8800@anon-20191002_181700-763:localhost:88004P>Q]!vxEMWYTUdzvLyVZNzJ:localhost:8800@anon-20191002_181700-762:localhost:88004P=Q]!CAGaRyRvrohDRBsrWH:localhost:8800@anon-20191002_181700-758:localhost:88004P<Q]!hNCwypIzdDZDVmCEfd:localhost:8800@anon-20191002_181700-757:localhost:88004P;Q]!eZjhYVNpwdogVDKHCk:localhost:8800@anon-20191002_181700-754:localhost:88004P:Q]!sBcwyPoXKgnSGVTjNR:localhost:8800@anon-20191002_181700-754:localhost:88004P9Q]!WgXzOXLTeqaGfiDFhL:localhost:8800@anon-20191002_181700-752:localhost:88004P8Q]!LFBhoxJpmBqFrwEzGP:localhost:8800@anon-20191002_181700-750:localhost:88004P7Q]!URpLZLuBfVcfHVTBGS:localhost:8800@anon-20191002_181700-746:localhost:88004P6Q]!YaLuQzmJKSMTSFEqjO:localhost:8800@anon-20191002_181700-744:localhost:88004P5Q]!cOFSwLSkxZECJMvjjZ:localhost:8800@anon-20191002_181700-742:localhost:88004P4Q]!eGEEtFXUXuZDImkeql:localhost:8800@anon-20191002_181700-736:localhost:88004P3Q]!ZOpRjvUhkWYJBFJZeO:localhost:8800@anon-20191002_181700-734:localhost:88004P2Q]!BPNyKqmwcpGxIbGFZG:localhost:8800@anon-20191002_181700-732:localhost:88004P1Q]!ZOwibbprUCQrSJQCrx:localhost:8800@anon-20191002_181700-730:localhost:88004P0Q]!qtelAHlSkrqEFmlCqS:localhost:8800@anon-20191002_181700-728:localhost:88004P/Q]!NcJYmIbgjsaKJOzBcs:localhost:8800@anon-20191002_181700-726:localhost:88004P.Q]!biBIcqnGelHvLnpkOu:localhost:8800@anon-20191002_181700-724:localhost:88004P-Q]!yNfCaBMPezurwkJRAX:localhost:8800@anon-20191002_181700-722:localhost:88004P,Q]!BKZJsoFNhiLTDYNclB:localhost:8800@anon-20191002_181700-720:localhost:88004P+Q]!aiOswwhoZqjhcjzbzc:localhost:8800@anon-20191002_181700-718:localhost:88004P*Q]!IYxUkyFHOgvhLpdkOA:localhost:8800@anon-20191002_181700-716:localhost:88004P)Q]!anErKtXIsVKEEsrzWM:localhost:8800@anon-20191002_181700-714:localhost:88004P(Q]!TcCLuIBUrtFqghDgay:localhost:8800@anon-20191002_181700-712:localhost:88004P'Q]!yWhIsLsgNVGcnELrDS:localhost:8800@anon-20191002_181700-710:localhost:88004P&Q]!wCsDjKBtuUbrmZgjsB:localhost:8800@anon-20191002_181700-708:localhost:88004P%Q]!SpXEytywhTbAftyVBr:localhost:8800@anon-20191002_181700-706:localhost:88004P$Q]!itfjLXhEaORJLkbfVS:localhost:8800@anon-20191002_181700-704:localhost:88004P#Q]!GsjDgpaxdwYfnefiWO:localhost:8800@anon-20191002_181700-702:localhost:88004P"Q]!jomrpmwwQQtghscizn:localhost:8800@anon-20191002_181700-700:localhost:88004P!Q]!ABHbfUdkHCJksMsaUt:localhost:8800@anon-20191002_181700-698:localhost:88004P Q]!DntdfAPfCfgdOoRMdl:localhost:8800@anon-20191002_181700-691:localhost:88004PQ]!THHfVSOSWiBQTHRAnJ:localhost:8800@anon-20191002_181700-690:localhost:88004PQ]!KetCYFxrTxawNOGnOf:localhost:8800@anon-20191002_181700-685:localhost:88001PQ]!JiUawCFQnodcpssOfK:localhost:8800@anon-20191002_181700-684:localhost:88001PQ]!NgkQVVUNzoyCVPtckM:localhost:8800@anon-20191002_181700-683:localhost:88001PQ]!lgejtcwlywOoIXwEgy:localhost:8800@anon-20191002_181700-682:localhost:88004PQ]!PUIxAaiCnbqaVbawGu:localhost:8800@anon-20191002_181700-681:localhost:88001PQ]!OJilSqnQvLgoXSqRaW:localhost:8800@anon-20191002_181700-680:localhost:88004PQ]!SrwdtDytJDUBVZOueF:localhost:8800@anon-20191002_181700-679:localhost:88004PQ]!PVyTvKbqnjSXfGWAMy:localhost:8800@anon-20191002_181700-678:localhost:880043 !13:localhost:4245513 !12:localhost:424551PQ]!nhbUIcIbhuXkRqfeDa:localhost:8800@anon-20191002_181700-675:localhost:880043 !11:localhost:4245513 !10:localhost:4245511 !9:localhost:424551PQ]!SnROoiDBapNNtMmKnT:localhost:8800@anon-20191002_181700-670:localhost:88001     C=+]localhost:42455@anon-20191002_181700-674:localhost:8800=+]localhost:42455@anon-20191002_181700-673:localhost:8800=+]localhost:42455@anon-20191002_181700-671:localhost:8800=+]localhost:42455@anon-20191002_181700-636:localhost:8800  J <+]localhost:42455@anon-20191002_181700-674:localhost:8800<+]localhost:42455@anon-20191002_181700-673:localhost:8800<+]localhost:42455@anon-20191002_181700-671:localhost:8800;+] localhost:42455@anon-20191002_181700-636:localhost:8800 ! federationmastereventsmaster N [ , !zKe: `6P 1S$ l = j ;  q B  R #  W ( i\u- r C  q.Q!dvZnfJonDkxlrrDXUk:localhost:8800th.Q!cOFSwLSkxZECJMvjjZ:localhost:8800th.Q!cHtqiAyCHEAoBIbCmL:localhost:8800th.Q!biBIcqnGelHvLnpkOu:localhost:8800th.Q!beBXQofoOfxNBtzsut:localhost:8800th.Q!bQDOrbAknnQZfUbhgS:localhost:8800th.Q!bOSxzttDtclnrWnLov:localhost:8800th.Q!bNSXSTadOMhIrYpMzH:localhost:8800th.Q!bLWyXaXdvUhdSAooUz:localhost:8800th.Q!azRJNFPIRSFAskLILK:localhost:8800th.Q!cidyuyekVzJHHvyomb:localhost:8800th.Q!bnTuVBaAJTPbcYZtRl:localhost:8800th.Q!bkwyieHZwSMJfuSKvV:localhost:8800th.Q!bjdLCdBwkKaihRIRFG:localhost:8800th.Q!bQDOrbAknnQZfUbhgS:localhost:8800m.Q!bOSxzttDtclnrWnLov:localhost:8800m.Q!bNSXSTadOMhIrYpMzH:localhost:8800m.Q!bLWyXaXdvUhdSAooUz:localhost:8800m.Q!azRJNFPIRSFAskLILK:localhost:8800m.Q!bzPCFeFSMbCESvNbxl:localhost:8800m-Q!bnTuVBaAJTPbcYZtRl:localhost:8800mb.Q!bkwyieHZwSMJfuSKvV:localhost:8800m.Q!bjdLCdBwkKaihRIRFG:localhost:8800m.Q!biBIcqnGelHvLnpkOu:localhost:8800m.Q!beBXQofoOfxNBtzsut:localhost:8800m.Q!dvZnfJonDkxlrrDXUk:localhost:8800mR-Q!duCKuavMBSfRbTFPsc:localhost:8800m$.Q!drnXStKXkNQkouqUAg:localhost:8800m-Q!dnZVySJLGNtUKsSgXW:localhost:8800mg.Q!djwLhpJUYOKsgQtrky:localhost:8800m-Q!dWgOTucBVQBKZjfndN:localhost:8800mo-Q!dUnULFLGtgaVdwHtnz:localhost:8800m.Q!dDqNKNFdIjCAwnyaxp:localhost:8800m.Q!dBfASZrfiFeSKTjYJm:localhost:8800m.Q!cvXpMzcxNNhsNttxvt:localhost:8800m.Q!csWEXfVEVxdviNvgAd:localhost:8800m-Q!cosGKKhHvKaVukBCic:localhost:8800m.Q!coGyOAgYnlBZAqznax:localhost:8800m-.Q!cidyuyekVzJHHvyomb:localhost:8800mA-Q!cSUQGmpIsSCBAVTOHo:localhost:8800m..Q!cRbfhxZdPstEsPGPAu:localhost:8800mx.Q!cOFSwLSkxZECJMvjjZ:localhost:8800m-Q!cHtqiAyCHEAoBIbCmL:localhost:8800mC.Q!cGkVFpidyBBxUxsszG:localhost:8800m.Q!bzPCFeFSMbCESvNbxl:localhost:8800th.Q!cGkVFpidyBBxUxsszG:localhost:8800th.Q!cSUQGmpIsSCBAVTOHo:localhost:8800th.Q!cRbfhxZdPstEsPGPAu:localhost:8800th.Q!coGyOAgYnlBZAqznax:localhost:8800th.Q!cosGKKhHvKaVukBCic:localhost:8800th.Q!duCKuavMBSfRbTFPsc:localhost:8800th.Q!drnXStKXkNQkouqUAg:localhost:8800th.Q!dnZVySJLGNtUKsSgXW:localhost:8800th.Q!djwLhpJUYOKsgQtrky:localhost:8800th.Q!dWgOTucBVQBKZjfndN:localhost:8800th.Q!dUnULFLGtgaVdwHtnz:localhost:8800th.Q!dDqNKNFdIjCAwnyaxp:localhost:8800th.Q!dBfASZrfiFeSKTjYJm:localhost:8800th.Q!cvXpMzcxNNhsNttxvt:localhost:8800th.Q!csWEXfVEVxdviNvgAd:localhost:8800th.Q!awHAhLuEkavTGACcUW:localhost:8800th-Q!awHAhLuEkavTGACcUW:localhost:8800mN.Q!atnRTMliktaVUhMVID:localhost:8800th.Q!atnRTMliktaVUhMVID:localhost:8800m:.Q!anErKtXIsVKEEsrzWM:localhost:8800th.Q!anErKtXIsVKEEsrzWM:localhost:8800m.Q!aknLNLxfChlLvFYhkJ:localhost:8800th,.Q!eWRdwtyqHvuxZFvhNS:localhost:8800m .Q!ePtMOPPOgOcBIMNZpn:localhost:8800th.Q!ePtMOPPOgOcBIMNZpn:localhost:8800m.Q!eLsrBEnrHolwCNgkFW:localhost:8800th-Q!eLsrBEnrHolwCNgkFW:localhost:8800me.Q!eKrOqiOabJcMgIJjwC:localhost:8800th.Q!eJPTUgihvSwaOhIkrC:localhost:8800th.Q!eGEEtFXUXuZDImkeql:localhost:8800th-Q!eKrOqiOabJcMgIJjwC:localhost:8800m8-Q!eJPTUgihvSwaOhIkrC:localhost:8800m.Q!eGEEtFXUXuZDImkeql:localhost:8800m AKV f ( r 4 ~ A  Q  ^ "l0z=JYg+v:I V9x Q  !TSFcaXDBqrCREHRHxv:localhost:8800th&\9w Q  !THHfVSOSWiBQTHRAnJ:localhost:8800th&\;v Q!SyIWYOmcGiASNkPCTB:localhost:8800th&\9u Q  !SvKwEALYoNreUvqAlp:localhost:8800th&\:t Q !SrwdtDytJDUBVZOueF:localhost:8800th&\;s Q!SrMQpDMFREKRMELwbL:localhost:8800th&\9r Q  !SpXEytywhTbAftyVBr:localhost:8800th&\:q Q !SnROoiDBapNNtMmKnT:localhost:8800th&\9p Q  !SfYtaUhCFosNfHfUVm:localhost:8800th&\9o Q  !SUDzkfFBgpuCANOxRS:localhost:8800th&\9n Q  !SBEprlZiuliFNSfNmz:localhost:8800th&\9m Q  !RmwbYvIIQyPlHlClty:localhost:8800th&\9l Q   !RmdhCjvouVLmyIHjaM:localhost:8800th&\9k Q  !RYNJAGdRhIlwRZFbrO:localhost:8800th&\:j Q !RSLvuCuAqKQQrKCxNq:localhost:8800th&\9i Q  !RPfffkmSEbWggEjnoI:localhost:8800th&\9h Q   !ROoilpDjLJfjKfSPIi:localhost:8800th&\;g Q!RDEAXrqXQizuhCUFPq:localhost:8800th&\9f Q  !QyLUggxrTnULUAOseq:localhost:8800th&\9e Q  !QxqzQoEBIZhmzHIGrl:localhost:8800th&\9d Q  !QnmLrBAxeItdHsaxWf:localhost:8800th&\:c Q !QkkdnzvdrjHaFGkzMt:localhost:8800th&\9b Q  !QcaNrIiUsWpTiVGOnt:localhost:8800th&\9a Q  !QZhNrNpwObZGJZpdAG:localhost:8800th&\;` Q!QWLJZmJqjWZjVOjdYF:localhost:8800th&\9_ Q  !QMrkSPlQDGborAyWtQ:localhost:8800th&\9^ Q  !QFiJrWFFeTAAAUCjCE:localhost:8800th&\:] Q !PzoqoNRxeEEqiLyVSV:localhost:8800th&\:\ Q !PgNDjhhIBAXKryuGKy:localhost:8800th&\:[ Q !PcvmCDeVUSyJbXpTig:localhost:8800th&\9Z Q  !PVyTvKbqnjSXfGWAMy:localhost:8800th&\:Y Q !PUIxAaiCnbqaVbawGu:localhost:8800th&\9X Q   !PQZMTVTeCYqMZwkHvW:localhost:8800th&\;W Q!PHkVrXAyfGkFtzSagu:localhost:8800th&\9V Q  !PEcOacvKaBKpXjytEF:localhost:8800th&\9U Q   !OtBUhGeUSiDMWRKIOT:localhost:8800th&\9T Q  !OqPpVlCwmKdAUlwrXI:localhost:8800th&\;S Q!OaCEdDAiatpwYcagUb:localhost:8800th&\ 9R Q  !OXpGdKbowFUTChPdmF:localhost:8800th&\9Q Q  !OSHhtkGUjpUCkXwIhj:localhost:8800th&\:P Q !OJilSqnQvLgoXSqRaW:localhost:8800th&\9O Q  !OCEHAjcOXWNyWIESIS:localhost:8800th&\9N Q  !OBWkjfrDCNgYFfblia:localhost:8800th&\9M Q  !NrxQuziwSWzsHuXIlG:localhost:8800th&\9L Q  !NhWgOTYzEPRwAxRQvS:localhost:8800th&\:K Q !NgkQVVUNzoyCVPtckM:localhost:8800th&\9J Q  !NfaPEGKjnUDUTavzol:localhost:8800th&\9I Q  !NeYaCeYNFATCqlrlGT:localhost:8800th&\;H Q!NcJYmIbgjsaKJOzBcs:localhost:8800th&\;G Q!NboFFVLpJHTeuUKCjM:localhost:8800th&\:F Q !NanhNmCnVVpmZRJrTF:localhost:8800th&\:E Q !NajQnqYmGyTjxhFYar:localhost:8829th&\9D Q  !NZHpBquHDfJAjiawGk:localhost:8800th&\;C Q!NQgavrmiCPUVaVjssy:localhost:8800th&\9B Q  !NPdjmIfsBVIIkvWBzD:localhost:8800th&\9A Q  !NNiyzThHMivrxhojfp:localhost:8800th&\9@ Q  !NJdkYMskQwIpIWlWkn:localhost:8800th&\9? Q  !NFWKQvZkIwvecnREOC:localhost:8800th&\:> Q !MqstbCLZIQFiYNHrqR:localhost:8800th&\;= Q!MlzmtUYSZOiByAZdKx:localhost:8800th&\;< Q!MXhwoqNXvexeDDSOZT:localhost:8800th&\9; Q  !MWCLSWWGdWcSivNVLI:localhost:8800th&\9: Q  !MBWnwKRwFznvRpAzxr:localhost:8800th&\99 Q  !LvARVIpJZeRQxbKefX:localhost:8800th&\:8 Q !LazKtcHZriKzCvvGwV:localhost:8800th&\ (P|pdXL@4(th\PD8,  x l ` T H < 0 $    th\PD8, xl`TH<0$ |pdXL@4(th\PD8, xl`TH<0$ |pdXL@4(th\P | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 ( th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th~ th} th| th{ thz thy thx thw thv thu tht ths thr thq thp tho thn thm thl thk thj thi thh thg thf the thd thc thb tha th` th_ th^ th] th\ th[ thZ thY thX thW thV thU thTl thS thR thQ thP thO thN thM thL thK thJ thI thH thG thF thE thD thC thB thA th@ th? th> th= th< th; th: th9 th8 th7 th6 th5 th4 th3 th2 th1 th0 th/ th. th- th, th+ th* th) th( th' th& th% th$ th# th" th! th th th th th th th th th th th th th th th th th th th th th th AJ T ^ " l . y ; J  Y e's5~@O\f*r6F ;9 Q !aWvVRVaDflYyyGTOdD:localhost:8800th&\98 Q  !aWbcZNVBalJilCEsdr:localhost:8800th&\97 Q  !aWJOsiuJONOvjKWEjO:localhost:8800th&\96 Q  !aVxOoyiLLnxmzgLJat:localhost:8800th&\95 Q  !aSKNKSGXPGoIbSrbEN:localhost:8800th&\94 Q  !aLxrqpqLkbzyIxGgpk:localhost:8800th&\93 Q   !aHyAJEOSdKqTiRjOvw:localhost:8800th&\92 Q  !aBCvSXjtZUEPlPGHvY:localhost:8800th&\91 Q  !ZvLVbnHjeymRiFIkYr:localhost:8800th&\;0 Q!ZaltdIYVZjCHsCWTZD:localhost:8800th&\;/ Q!ZaOktTIVeRgBXxfubH:localhost:8800th&\9. Q  !ZYKvjplZRyIWvzkRyM:localhost:8800th&\;- Q!ZWANpHlizyLrUiVvAm:localhost:8800th&\9, Q  !ZShBIxwbJmxjjZmoRQ:localhost:8800th&\;+ Q!ZOwibbprUCQrSJQCrx:localhost:8800th&\;* Q!ZOpRjvUhkWYJBFJZeO:localhost:8800th&\9) Q  !ZNIjCvcWhgcwskanjT:localhost:8800th&\:( Q !ZKPJvrCZHMHPEksYDc:localhost:8800th&\;' Q!YufaOfAlruTdjyUCwO:localhost:8800th&\9& Q  !YtVXQjSPgVtbxrzUOA:localhost:8800th&\:% Q !YpcmaMNMzjvtgYtrli:localhost:8800th&\9$ Q  !YmRuIWixFpaqEeDQLZ:localhost:8800th&\9# Q  !YgaGPEraeLCqHQirin:localhost:8800th&\9" Q  !YaLuQzmJKSMTSFEqjO:localhost:8800th&\;! Q!YQATbgbLImCDamiDHC:localhost:8800th&\9 Q  !YGUjVdVdpcQoGkRnWB:localhost:8800th&\; Q!XnUZiYJDWVNGfsBnGz:localhost:8800th&\: Q !XiwGxQKwjgutEClKUy:localhost:8829th&\; Q!XgobMgBjNcDRJnRXLD:localhost:8800th&\9 Q  !XcaKxZsPvbZhAGKKdx:localhost:8800th&\9 Q  !XUbDuPDiMTXJZDyAPc:localhost:8800th&\9 Q  !XRAZJeoZBhGeHKKjaG:localhost:8800th&\; Q!XNfwczePlyYFWLCaui:localhost:8800th&\; Q!XMNRkfscQXRjgYrOSd:localhost:8800th&\; Q!XIqmzIFbkHGQPIpywk:localhost:8800th&\ 9 Q  !XGAmnfaVvjDtQJuufa:localhost:8800th&\9 Q   !WuiaqqIOvBjgETqdus:localhost:8800th&\: Q !WpThtNEVhrUbUdCdMJ:localhost:8800th&\9 Q   !WjlTCJVOFJkanCtkFE:localhost:8800th&\9 Q  !WhqVaRReBxJXADAyYD:localhost:8800th&\9 Q   !WhLedNwPGGGTtqeqam:localhost:8800th&\9 Q  !WgXzOXLTeqaGfiDFhL:localhost:8800th&\9 Q   !WYyiQAVvitxsLZKVCG:localhost:8800th&\: Q !WWZVpyLeZfyfpWidLx:localhost:8800th&\ 9 Q  !WVzjUePHrzCjfyTbmK:localhost:8800th&\; Q!WFHIeSFQyuugGeBFxW:localhost:8800th&\9 Q  !VhUAklonNaWKRnLkcr:localhost:8800th&\9 Q  !VWYMJxEviBNDdJCuKT:localhost:8800th&\: Q !VUibrTIkcRbfrogbQV:localhost:8800th&\; Q!VOhMAiLfKyTOZbmKGw:localhost:8800th&\9 Q  !VNdqhtoDkyMoQdMTtM:localhost:8800th&\; Q!VAEDgDJVqmxXZyAlSW:localhost:8800th&\ 9 Q  !UyLoIXmzVFwycmBUeh:localhost:8800th&\9 Q  !UaitDdkGDcwvRLJSvp:localhost:8800th&\; Q!UTAORDrNxIbSlGByAp:localhost:8800th&\ ; Q!URpLZLuBfVcfHVTBGS:localhost:8800th&\9 Q  !UMFUOnYRvwKwSPkYHB:localhost:8800th&\; Q!UGVFuRGyPQmBbGsEDo:localhost:8800th&\; Q!TleKOyAElrpgyyrAQA:localhost:8800th&\;~ Q!TlJCaYlCkOOVzFDlLx:localhost:8800th&\9} Q  !TkluVzxeeCbMtbFWWS:localhost:8800th&\;| Q!TeraguiGoZoeOGFzlI:localhost:8800th&\9{ Q  !TcaopYfMoJFEcjYRzJ:localhost:8800th&\;z Q!TcCLuIBUrtFqghDgay:localhost:8800th&\9y Q   !TWETXUgfFZafDdbqLS:localhost:8800th&\ JuI_0sDY* o @  U & k =  S $ i : ~O e6{La2xuF\-.Q!nvclDopiBLEOKBIheH:localhost:8800m.Q!jlGSdNttccYxjfLkwW:localhost:8800m.Q!jfshVGNDxkvqPxFxWB:localhost:8800th -Q!jfshVGNDxkvqPxFxWB:localhost:8800m.Q!jYzridjeihmwPBuwLb:localhost:8800th -Q!jYzridjeihmwPBuwLb:localhost:8800m .Q!jRuDexjFzIDOKbwDJQ:localhost:8800th .Q!jRuDexjFzIDOKbwDJQ:localhost:8800m.Q!jIfvTrwedrWLubsnlM:localhost:8800th .Q!jIfvTrwedrWLubsnlM:localhost:8800m.Q!jGQNGXehugtTvjUGKI:localhost:8800th.Q!ntuwVdUxfzNIhIKYaz:localhost:8800th,-Q!ntuwVdUxfzNIhIKYaz:localhost:8800mA.Q!nteAxExBGJfaGIpuCx:localhost:8800th+-Q!nteAxExBGJfaGIpuCx:localhost:8800mV.Q!nhbUIcIbhuXkRqfeDa:localhost:8800th*.Q!nhbUIcIbhuXkRqfeDa:localhost:8800m.Q!nfxDdcgDfooxyiAzaB:localhost:8800th).Q!nfxDdcgDfooxyiAzaB:localhost:8800m\.Q!nftGLlLhVgzOwOFufp:localhost:8800th(.Q!nftGLlLhVgzOwOFufp:localhost:8800m.Q!mvgUHEsfGqDkPQUvfG:localhost:8800th'.Q!mvgUHEsfGqDkPQUvfG:localhost:8800m&.Q!msMfSdLIAvklSSAnci:localhost:8800th&-Q!msMfSdLIAvklSSAnci:localhost:8800m:.Q!mogJVPxghalmKbblUq:localhost:8800th%.Q!mogJVPxghalmKbblUq:localhost:8800m0.Q!mfzIRinBAGGrZvQAuI:localhost:8800th$-Q!mfzIRinBAGGrZvQAuI:localhost:8800mm.Q!mTlCLZQCmfDuQsJxxp:localhost:8800th#.Q!mTlCLZQCmfDuQsJxxp:localhost:8800m.Q!mOrKBPhetifKHDmElM:localhost:8800th".Q!mOrKBPhetifKHDmElM:localhost:8800m.Q!mMsxpaIlcykPuOnDyl:localhost:8800th!.Q!mMsxpaIlcykPuOnDyl:localhost:8800m.Q!mBQpGaIiadEuKBXfOw:localhost:8800th .Q!mBQpGaIiadEuKBXfOw:localhost:8800m.Q!loalEsWaTYwrVUNJLr:localhost:8800th-Q!loalEsWaTYwrVUNJLr:localhost:8800m.Q!lgejtcwlywOoIXwEgy:localhost:8800th.Q!lgejtcwlywOoIXwEgy:localhost:8800m.Q!laUExtszUaoCpZoyEq:localhost:8800th.Q!laUExtszUaoCpZoyEq:localhost:8800m..Q!lMRBkbYJDQHgdBZBFJ:localhost:8800th-Q!lMRBkbYJDQHgdBZBFJ:localhost:8800mD.Q!lEJUJZxqZPKZetemiR:localhost:8800th.Q!lEJUJZxqZPKZetemiR:localhost:8800m.Q!lAGTcYIuMBXsVRGCOe:localhost:8800th-Q!lAGTcYIuMBXsVRGCOe:localhost:8800mX.Q!kxTDuIasPNpXtiRsif:localhost:8800th-Q!kxTDuIasPNpXtiRsif:localhost:8800m.Q!kwXxkGQFkaeenFTQJr:localhost:8800th.Q!kwXxkGQFkaeenFTQJr:localhost:8800m.Q!kwJgbtogEzCqYbUXfh:localhost:8800th.Q!kwJgbtogEzCqYbUXfh:localhost:8800m.Q!krhefVncoErkCtnvsy:localhost:8800th.Q!krhefVncoErkCtnvsy:localhost:8800m.Q!kpTPWDZdBbbXKLonZK:localhost:8800th.Q!kpTPWDZdBbbXKLonZK:localhost:8800m.Q!kkgEEVUJynguTqAoWD:localhost:8800th-Q!kkgEEVUJynguTqAoWD:localhost:8800m.Q!kjueCKHmYaYefEEpQY:localhost:8800th.Q!kjueCKHmYaYefEEpQY:localhost:8800m.Q!kjjUsMowsioSQRIJeg:localhost:8800th.Q!kjjUsMowsioSQRIJeg:localhost:8800mc.Q!kOmCTyiizHqfCJdhlR:localhost:8800th.Q!kOmCTyiizHqfCJdhlR:localhost:8800m(.Q!kAxKaIQhXTtGFWSUgr:localhost:8800th.Q!kAxKaIQhXTtGFWSUgr:localhost:8800m.Q!jveVPZSXJOJyNDebPO:localhost:8800th.Q!jveVPZSXJOJyNDebPO:localhost:8800m.Q!jomrpmwwQQtghscizn:localhost:8800th.Q!jomrpmwwQQtghscizn:localhost:8800m.Q!jlGSdNttccYxjfLkwW:localhost:8800th AJV c ' p 4 z < G V e)r6~BLXd(r6E 9z Q  !hYPSaMPGsLnvYSmwhg:localhost:8800th&\9y Q  !hWHyATwKfuznrqTiyu:localhost:8800th&\9x Q  !hSzBsirdPWHtVjagXn:localhost:8800th&\9w Q  !hNCwypIzdDZDVmCEfd:localhost:8800th&\9v Q  !hGsPmWXboxZZtOlsxY:localhost:8800th&\:u Q !hFwigdYZkwYNSwelRH:localhost:8800th&\9t Q  !gXfXRDTXeVvOHQdaaQ:localhost:8800th&\9s Q  !fuHSJcznvGQnoYoLPW:localhost:8800th&\9r Q  !fsbkkRBZlUcBVVfMME:localhost:8800th&\;q Q!ffijTnPMbTrDXHqOXf:localhost:8800th&\9p Q  !fdEymmlcUvjgshvVyl:localhost:8800th&\9o Q  !fcdNYFWFyxmdpKAknc:localhost:8800th&\9n Q  !fOJLpnbtgKNxxVDquX:localhost:8800th&\;m Q!fJXiUpbbOlLbHWmPgs:localhost:8800th&\ ;l Q!fGkUEndqGrieltwbCh:localhost:8800th&\9k Q  !fDISaqNBhlOwherxSt:localhost:8800th&\;j Q!eySSVuCclRpBDgwKIU:localhost:8800th&\9i Q  !erBPdgtUsiOfIKUkho:localhost:8800th&\;h Q !egbhiBqOGhloZzopol:localhost:8800th&\9g Q  !egCvzKpbEwmuvDoBTb:localhost:8800th&\;f Q!edbUkYJIZBNOiTuLJs:localhost:8800th&\9e Q  !eZjhYVNpwdogVDKHCk:localhost:8800th&\;d Q!eWRdwtyqHvuxZFvhNS:localhost:8800th&\;c Q!ePtMOPPOgOcBIMNZpn:localhost:8800th&\9b Q  !eLsrBEnrHolwCNgkFW:localhost:8800th&\;a Q!eKrOqiOabJcMgIJjwC:localhost:8800th&\;` Q!eJPTUgihvSwaOhIkrC:localhost:8800th&\9_ Q   !eGEEtFXUXuZDImkeql:localhost:8800th&\9^ Q  !dvZnfJonDkxlrrDXUk:localhost:8800th&\;] Q!duCKuavMBSfRbTFPsc:localhost:8800th&\:\ Q !drnXStKXkNQkouqUAg:localhost:8800th&\9[ Q  !dnZVySJLGNtUKsSgXW:localhost:8800th&\9Z Q  !djwLhpJUYOKsgQtrky:localhost:8800th&\9Y Q  !dWgOTucBVQBKZjfndN:localhost:8800th&\9X Q  !dUnULFLGtgaVdwHtnz:localhost:8800th&\9W Q  !dDqNKNFdIjCAwnyaxp:localhost:8800th&\:V Q !dBfASZrfiFeSKTjYJm:localhost:8800th&\9U Q  !cvXpMzcxNNhsNttxvt:localhost:8800th&\9T Q  !csWEXfVEVxdviNvgAd:localhost:8800th&\:S Q !cosGKKhHvKaVukBCic:localhost:8800th&\9R Q   !coGyOAgYnlBZAqznax:localhost:8800th&\;Q Q!cidyuyekVzJHHvyomb:localhost:8800th&\9P Q  !cSUQGmpIsSCBAVTOHo:localhost:8800th&\:O Q !cRbfhxZdPstEsPGPAu:localhost:8800th&\;N Q!cOFSwLSkxZECJMvjjZ:localhost:8800th&\;M Q !cHtqiAyCHEAoBIbCmL:localhost:8800th&\ ;L Q!cGkVFpidyBBxUxsszG:localhost:8800th&\;K Q !bzPCFeFSMbCESvNbxl:localhost:8800th&\;J Q!bnTuVBaAJTPbcYZtRl:localhost:8800th&\ 9I Q  !bkwyieHZwSMJfuSKvV:localhost:8800th&\:H Q !bjdLCdBwkKaihRIRFG:localhost:8800th&\;G Q!biBIcqnGelHvLnpkOu:localhost:8800th&\9F Q  !beBXQofoOfxNBtzsut:localhost:8800th&\9E Q  !bQDOrbAknnQZfUbhgS:localhost:8800th&\9D Q   !bOSxzttDtclnrWnLov:localhost:8800th&\;C Q!bNSXSTadOMhIrYpMzH:localhost:8800th&\:B Q !bLWyXaXdvUhdSAooUz:localhost:8800th&\9A Q  !azRJNFPIRSFAskLILK:localhost:8800th&\9@ Q  !awHAhLuEkavTGACcUW:localhost:8800th&\;? Q!atnRTMliktaVUhMVID:localhost:8800th&\;> Q!anErKtXIsVKEEsrzWM:localhost:8800th&\9= Q  !aknLNLxfChlLvFYhkJ:localhost:8800th&\;< Q!aiOswwhoZqjhcjzbzc:localhost:8800th&\9; Q  !aaRwQZdNAliyvRHpjs:localhost:8800th&\ 9: Q  !aZwMKYDXJRlSKjQNWM:localhost:8800th&\ ,H,zK q B  W ( l =  S $ h 9 P!e6`1{LuFb4[sDZ,,/.Q!rJhSRzmWBQHlIhuDXT:localhost:8800thD.Q!nxLxsxzliamzflrEBs:localhost:8800m.Q!scyFsXcUIJiLIMwWMY:localhost:8800thP.Q!sPWVGnipjiiWQpywNO:localhost:8800thO.Q!sJnuQYOyruhUpXDsLY:localhost:8800thN.Q!sHRHoXzYrrPSlWBkoh:localhost:8800thM.Q!sBcwyPoXKgnSGVTjNR:localhost:8800thL.Q!sAWFpvSUPExZLVcPEd:localhost:8800thK.Q!rwUuVBrftGHDBOlEZm:localhost:8800thJ.Q!rpVYLTJGcFNdGzFzXj:localhost:8800thI.Q!raCWVWQGnXbmkexpCN:localhost:8800thH.Q!rZWweGEChkxxtzyfDB:localhost:8800thG.Q!rWmvvGBgmFMdVvcfPk:localhost:8800thF.Q!rWGwSSefrZzQYCYFHs:localhost:8800thE.Q!ozgnwUlebxvzLVwyHW:localhost:8800m.Q!odAvowLhHJcmkKlxFk:localhost:8800th1-Q!odAvowLhHJcmkKlxFk:localhost:8800m.Q!oZGRyBAkNDrEeiAqWL:localhost:8800th0.Q!oZGRyBAkNDrEeiAqWL:localhost:8800mz.Q!oXKJArsPmtgaYANBrg:localhost:8800th/-Q!oXKJArsPmtgaYANBrg:localhost:8800m2.Q!nxLxsxzliamzflrEBs:localhost:8800th.-Q!sfXbvAcOUJhzGwWEpZ:localhost:8800m~-Q!scyFsXcUIJiLIMwWMY:localhost:8800m-Q!sPWVGnipjiiWQpywNO:localhost:8800m .Q!sJnuQYOyruhUpXDsLY:localhost:8800m.Q!sHRHoXzYrrPSlWBkoh:localhost:8800m6.Q!sBcwyPoXKgnSGVTjNR:localhost:8800m.Q!sAWFpvSUPExZLVcPEd:localhost:8800mw.Q!rwUuVBrftGHDBOlEZm:localhost:8800m.Q!rpVYLTJGcFNdGzFzXj:localhost:8800m+.Q!raCWVWQGnXbmkexpCN:localhost:8800m-Q!rZWweGEChkxxtzyfDB:localhost:8800m.Q!rWmvvGBgmFMdVvcfPk:localhost:8800mL.Q!rWGwSSefrZzQYCYFHs:localhost:8800m.Q!rQeYcODvQiLsOIbQrJ:localhost:8800m.Q!rJhSRzmWBQHlIhuDXT:localhost:8800m.Q!qzurjQHmiriwjaUMhO:localhost:8800thC.Q!qzurjQHmiriwjaUMhO:localhost:8800m.Q!qzrZzAieCgGSbpKOQR:localhost:8800thB.Q!qzrZzAieCgGSbpKOQR:localhost:8800m.Q!qxqNYKdtgvOQdhmgsj:localhost:8800thA-Q!qxqNYKdtgvOQdhmgsj:localhost:8800mT.Q!quaZwrGnzbNWhwAOYB:localhost:8800th@-Q!quaZwrGnzbNWhwAOYB:localhost:8800mL.Q!qtelAHlSkrqEFmlCqS:localhost:8800th?.Q!qtelAHlSkrqEFmlCqS:localhost:8800m.Q!qjijQBfMwsCPTVgKPm:localhost:8800th>.Q!qjijQBfMwsCPTVgKPm:localhost:8800md.Q!qSUSLLWjDxcGibUZdT:localhost:8800th=.Q!qSUSLLWjDxcGibUZdT:localhost:8800m.Q!qInWQPtNQfBFoVzUtP:localhost:8800th<.Q!qInWQPtNQfBFoVzUtP:localhost:8800mm.Q!plcvCHNbjCkNMMxnTk:localhost:8800th;-Q!plcvCHNbjCkNMMxnTk:localhost:8800m.Q!peJMRJtXBvIiCttNmm:localhost:8800th:.Q!peJMRJtXBvIiCttNmm:localhost:8800mH.Q!pduebXnTyxQWVxEICp:localhost:8800th9.Q!pduebXnTyxQWVxEICp:localhost:8800m@.Q!paDmNxsOZIKyApbxXs:localhost:8800th8.Q!paDmNxsOZIKyApbxXs:localhost:8800mD.Q!pUSFAnuwUuMlbiInDR:localhost:8800th7.Q!pUSFAnuwUuMlbiInDR:localhost:8800m.Q!pTvdDtkgovsIdAdxCm:localhost:8800th6.Q!pTvdDtkgovsIdAdxCm:localhost:8800m.Q!pJUItjYTOUJQFIxyiX:localhost:8800th5.Q!pJUItjYTOUJQFIxyiX:localhost:8800m'.Q!pHoEnhQYhwlbJXqKQE:localhost:8800th4.Q!pHoEnhQYhwlbJXqKQE:localhost:8800mg.Q!oznZaCpONuNDaLarkI:localhost:8800th3-Q!oznZaCpONuNDaLarkI:localhost:8800mf.Q!ozgnwUlebxvzLVwyHW:localhost:8800th2 AJW c ' s 6 B  O  _ #m0z>JWf*t7DT9; Q  !plcvCHNbjCkNMMxnTk:localhost:8800th&\9: Q  !peJMRJtXBvIiCttNmm:localhost:8800th&\;9 Q!pduebXnTyxQWVxEICp:localhost:8800th&\98 Q   !paDmNxsOZIKyApbxXs:localhost:8800th&\97 Q  !pUSFAnuwUuMlbiInDR:localhost:8800th&\96 Q  !pTvdDtkgovsIdAdxCm:localhost:8800th&\95 Q  !pJUItjYTOUJQFIxyiX:localhost:8800th&\:4 Q !pHoEnhQYhwlbJXqKQE:localhost:8800th&\93 Q  !oznZaCpONuNDaLarkI:localhost:8800th&\;2 Q!ozgnwUlebxvzLVwyHW:localhost:8800th&\91 Q  !odAvowLhHJcmkKlxFk:localhost:8800th&\:0 Q !oZGRyBAkNDrEeiAqWL:localhost:8800th&\;/ Q !oXKJArsPmtgaYANBrg:localhost:8800th&\ 9. Q  !nxLxsxzliamzflrEBs:localhost:8800th&\9- Q  !nvclDopiBLEOKBIheH:localhost:8800th&\9, Q   !ntuwVdUxfzNIhIKYaz:localhost:8800th&\ 9+ Q  !nteAxExBGJfaGIpuCx:localhost:8800th&\:* Q !nhbUIcIbhuXkRqfeDa:localhost:8800th&\9) Q  !nfxDdcgDfooxyiAzaB:localhost:8800th&\9( Q  !nftGLlLhVgzOwOFufp:localhost:8800th&\:' Q !mvgUHEsfGqDkPQUvfG:localhost:8800th&\9& Q  !msMfSdLIAvklSSAnci:localhost:8800th&\;% Q!mogJVPxghalmKbblUq:localhost:8800th&\9$ Q  !mfzIRinBAGGrZvQAuI:localhost:8800th&\9# Q  !mTlCLZQCmfDuQsJxxp:localhost:8800th&\9" Q  !mOrKBPhetifKHDmElM:localhost:8800th&\;! Q!mMsxpaIlcykPuOnDyl:localhost:8800th&\; Q!mBQpGaIiadEuKBXfOw:localhost:8800th&\9 Q  !loalEsWaTYwrVUNJLr:localhost:8800th&\: Q !lgejtcwlywOoIXwEgy:localhost:8800th&\: Q !laUExtszUaoCpZoyEq:localhost:8800th&\9 Q  !lMRBkbYJDQHgdBZBFJ:localhost:8800th&\: Q !lEJUJZxqZPKZetemiR:localhost:8800th&\ 9 Q  !lAGTcYIuMBXsVRGCOe:localhost:8800th&\9 Q  !kxTDuIasPNpXtiRsif:localhost:8800th&\; Q!kwXxkGQFkaeenFTQJr:localhost:8800th&\9 Q  !kwJgbtogEzCqYbUXfh:localhost:8800th&\9 Q   !krhefVncoErkCtnvsy:localhost:8800th&\9 Q   !kpTPWDZdBbbXKLonZK:localhost:8800th&\9 Q  !kkgEEVUJynguTqAoWD:localhost:8800th&\9 Q  !kjueCKHmYaYefEEpQY:localhost:8800th&\9 Q  !kjjUsMowsioSQRIJeg:localhost:8800th&\; Q!kOmCTyiizHqfCJdhlR:localhost:8800th&\: Q !kAxKaIQhXTtGFWSUgr:localhost:8800th&\9 Q  !jveVPZSXJOJyNDebPO:localhost:8800th&\; Q!jomrpmwwQQtghscizn:localhost:8800th&\9 Q  !jlGSdNttccYxjfLkwW:localhost:8800th&\9 Q  !jfshVGNDxkvqPxFxWB:localhost:8800th&\; Q !jYzridjeihmwPBuwLb:localhost:8800th&\: Q !jRuDexjFzIDOKbwDJQ:localhost:8800th&\9 Q  !jIfvTrwedrWLubsnlM:localhost:8800th&\9 Q  !jGQNGXehugtTvjUGKI:localhost:8800th&\9 Q  !jDKAOtmeAGbYTpwyEW:localhost:8800th&\9 Q  !itfjLXhEaORJLkbfVS:localhost:8800th&\; Q!itKDOCtoMkFUETDtle:localhost:8800th&\9 Q  !ijOiudvuzOLNmgNKfG:localhost:8800th&\; Q!ifQxHmNAcSSGHVMjfi:localhost:8800th&\9 Q  !icheSPMgpemswIdQkw:localhost:8800th&\; Q!iTQSCiLqRMDtgXtUdC:localhost:8800th&\9 Q  !iLHJbsFszubrnybDNz:localhost:8800th&\: Q !iKezIvJyjkNqKayFju:localhost:8800th&\9~ Q  !hrhDJbmXvXBizKoiiK:localhost:8800th&\;} Q!hgjYwwwjWJNgwrzOto:localhost:8800th&\9| Q  !hegUPDZCEEmBhsNJJR:localhost:8800th&\9{ Q  !hZuwenlFDapIPBOyfi:localhost:8800th&\ W>1e[, p A  W ( (6lz=KU`&P!tEj; 1 , q B  W ) p B ^.Q!wAyboOFgsOPwkmgMAI:localhost:8800thp.Q!vOfeZvbtpuHfoqShFl:localhost:8800thf.Q!vJQYmOxOBLwFKzYkNj:localhost:8800the.Q!vBvlJEXUSQKUYmsKcO:localhost:8800thd.Q!vAUAIZrCnHTeMGeNuw:localhost:8800thc.Q!uxKymrHZeXRYCZwekU:localhost:8800thb.Q!utJsNQubeIXvcTKGpx:localhost:8800tha.Q!uqIEMXzdeNeXdJmuwh:localhost:8800th`.Q!ulbQzxdPXzuvNoqqgU:localhost:8800th_.Q!ubmTdQFAhrhZkGULDx:localhost:8800th^.Q!uSBqTezaFcMnlowsEf:localhost:8800th].Q!uPxXJHJyFQwvpQLZNs:localhost:8800th\.Q!svYOOXWZHtQQzlMcEP:localhost:8800thS.Q!svYOOXWZHtQQzlMcEP:localhost:8800m.Q!sqkBzbHHJOTNWwynqV:localhost:8800thR.Q!sqkBzbHHJOTNWwynqV:localhost:8800mn.Q!vZGjXEXQoCaoUXnkCa:localhost:8800thj.Q!vVmSdclwPIqYDbnmPn:localhost:8800thi.Q!vRmMcoJDeCupADwqac:localhost:8800thh.Q!vRRNxNyGboLHNhqQvr:localhost:8800thg-Q!tDsPLsKOLPePtEWRwn:localhost:8800m`.Q!vyCFfUTJKYJSDadFhT:localhost:8800tho.Q!vxEMWYTUdzvLyVZNzJ:localhost:8800thn.Q!vttkrtSyHEJXVMlvLo:localhost:8800thm.Q!vpuivIQDEhyuhOLWpg:localhost:8800thl.Q!vnFXnkCSfTbsSNKrtg:localhost:8800thk.Q!vRmMcoJDeCupADwqac:localhost:8800m<.Q!vRRNxNyGboLHNhqQvr:localhost:8800m-Q!vOfeZvbtpuHfoqShFl:localhost:8800mk-Q!vJQYmOxOBLwFKzYkNj:localhost:8800m.Q!vBvlJEXUSQKUYmsKcO:localhost:8800m2.Q!vAUAIZrCnHTeMGeNuw:localhost:8800m-Q!uxKymrHZeXRYCZwekU:localhost:8800m .Q!utJsNQubeIXvcTKGpx:localhost:8800m.Q!uqIEMXzdeNeXdJmuwh:localhost:8800m!.Q!ulbQzxdPXzuvNoqqgU:localhost:8800m.Q!ubmTdQFAhrhZkGULDx:localhost:8800m,.Q!uSBqTezaFcMnlowsEf:localhost:8800m.Q!uPxXJHJyFQwvpQLZNs:localhost:8800mtt.Q!uJtKGXTNdEnCPNOGDx:localhost:8800th[-Q!uJtKGXTNdEnCPNOGDx:localhost:8800m.Q!uGpSboYkgxVNOqNeUG:localhost:8800thZ.Q!uGpSboYkgxVNOqNeUG:localhost:8800m.Q!tkajvIKHoOMWGsReBs:localhost:8800thY-Q!tkajvIKHoOMWGsReBs:localhost:8800ms.Q!tcYctHPiaKzsKgrXlU:localhost:8800thX.Q!tcYctHPiaKzsKgrXlU:localhost:8800m.Q!taANXnGBZntAreRurn:localhost:8800thW.Q!taANXnGBZntAreRurn:localhost:8800m.Q!tPkCGJBKmqUXJoRrnY:localhost:8800thV.Q!tPkCGJBKmqUXJoRrnY:localhost:8800mG.Q!tLkhTnTgDjjAvscRkW:localhost:8800thU.Q!tLkhTnTgDjjAvscRkW:localhost:8800m.Q!tDsPLsKOLPePtEWRwn:localhost:8800thT-Q!wAyboOFgsOPwkmgMAI:localhost:8800mc.Q!vyCFfUTJKYJSDadFhT:localhost:8800m.Q!vxEMWYTUdzvLyVZNzJ:localhost:8800m.Q!vttkrtSyHEJXVMlvLo:localhost:8800m .Q!vpuivIQDEhyuhOLWpg:localhost:8800m.Q!vnFXnkCSfTbsSNKrtg:localhost:8800m.Q!vZGjXEXQoCaoUXnkCa:localhost:8800mQ-Q!vVmSdclwPIqYDbnmPn:localhost:8800m7 ALY f ( s 6  C  P  _ #n1}?LYf(t8DR9| Q  !xhbvqJDfxMSsZPqvld:localhost:8800th&\9{ Q  !xcdNyJNFEdaBGFycsB:localhost:8800th&\9z Q  !wvnfKBSrUlfNmYoeil:localhost:8800th&\9y Q  !wsvXTJXouVkEZcCFsD:localhost:8800th&\9x Q  !wnriPzXkIMmdTNoJKU:localhost:8800th&\;w Q!whuymJoLfUdkFdxoyE:localhost:8800th&\9v Q  !wUuodvgsmAJqKJUBCQ:localhost:8800th&\9u Q  !wLitJYvgvNJzanSIvO:localhost:8800th&\;t Q!wIhMbfQzYbJobPdwyi:localhost:8800th&\9s Q  !wCsDjKBtuUbrmZgjsB:localhost:8800th&\;r Q!wBkUBAjOznOyxrLchl:localhost:8800th&\ 9q Q  !wBBQYEPjQGnoAzDpEu:localhost:8800th&\9p Q  !wAyboOFgsOPwkmgMAI:localhost:8800th&\9o Q  !vyCFfUTJKYJSDadFhT:localhost:8800th&\ 9n Q  !vxEMWYTUdzvLyVZNzJ:localhost:8800th&\;m Q!vttkrtSyHEJXVMlvLo:localhost:8800th&\9l Q  !vpuivIQDEhyuhOLWpg:localhost:8800th&\:k Q !vnFXnkCSfTbsSNKrtg:localhost:8800th&\9j Q  !vZGjXEXQoCaoUXnkCa:localhost:8800th&\;i Q!vVmSdclwPIqYDbnmPn:localhost:8800th&\:h Q !vRmMcoJDeCupADwqac:localhost:8800th&\9g Q  !vRRNxNyGboLHNhqQvr:localhost:8800th&\;f Q!vOfeZvbtpuHfoqShFl:localhost:8800th&\9e Q  !vJQYmOxOBLwFKzYkNj:localhost:8800th&\:d Q !vBvlJEXUSQKUYmsKcO:localhost:8800th&\9c Q  !vAUAIZrCnHTeMGeNuw:localhost:8800th&\9b Q  !uxKymrHZeXRYCZwekU:localhost:8800th&\;a Q!utJsNQubeIXvcTKGpx:localhost:8800th&\;` Q!uqIEMXzdeNeXdJmuwh:localhost:8800th&\9_ Q  !ulbQzxdPXzuvNoqqgU:localhost:8800th&\9^ Q  !ubmTdQFAhrhZkGULDx:localhost:8800th&\9] Q  !uSBqTezaFcMnlowsEf:localhost:8800th&\:\ Q !uPxXJHJyFQwvpQLZNs:localhost:8800th&\9[ Q  !uJtKGXTNdEnCPNOGDx:localhost:8800th&\:Z Q !uGpSboYkgxVNOqNeUG:localhost:8800th&\9Y Q  !tkajvIKHoOMWGsReBs:localhost:8800th&\9X Q  !tcYctHPiaKzsKgrXlU:localhost:8800th&\:W Q !taANXnGBZntAreRurn:localhost:8800th&\9V Q  !tPkCGJBKmqUXJoRrnY:localhost:8800th&\9U Q  !tLkhTnTgDjjAvscRkW:localhost:8800th&\9T Q  !tDsPLsKOLPePtEWRwn:localhost:8800th&\;S Q!svYOOXWZHtQQzlMcEP:localhost:8800th&\:R Q !sqkBzbHHJOTNWwynqV:localhost:8800th&\9Q Q  !sfXbvAcOUJhzGwWEpZ:localhost:8800th&\9P Q  !scyFsXcUIJiLIMwWMY:localhost:8800th&\9O Q  !sPWVGnipjiiWQpywNO:localhost:8800th&\ 9N Q  !sJnuQYOyruhUpXDsLY:localhost:8800th&\:M Q !sHRHoXzYrrPSlWBkoh:localhost:8800th&\;L Q!sBcwyPoXKgnSGVTjNR:localhost:8800th&\:K Q !sAWFpvSUPExZLVcPEd:localhost:8800th&\9J Q  !rwUuVBrftGHDBOlEZm:localhost:8800th&\:I Q !rpVYLTJGcFNdGzFzXj:localhost:8800th&\9H Q  !raCWVWQGnXbmkexpCN:localhost:8800th&\;G Q!rZWweGEChkxxtzyfDB:localhost:8800th&\9F Q  !rWmvvGBgmFMdVvcfPk:localhost:8800th&\;E Q!rWGwSSefrZzQYCYFHs:localhost:8800th&\9D Q  !rJhSRzmWBQHlIhuDXT:localhost:8800th&\:C Q !qzurjQHmiriwjaUMhO:localhost:8800th&\9B Q  !qzrZzAieCgGSbpKOQR:localhost:8800th&\:A Q  !qxqNYKdtgvOQdhmgsj:localhost:8800th&\ 9@ Q  !quaZwrGnzbNWhwAOYB:localhost:8800th&\;? Q!qtelAHlSkrqEFmlCqS:localhost:8800th&\9> Q  !qjijQBfMwsCPTVgKPm:localhost:8800th&\9= Q  !qSUSLLWjDxcGibUZdT:localhost:8800th&\9< Q  !qInWQPtNQfBFoVzUtP:localhost:8800th&\ |pdXL@4(th\PD8,  x l ` T H < 0 $  | p d X L @ 4 (    t h \ P D 8 ,   x l ` T H < 0 $  | p d X L @ 4 (   th\PD8,  th th th th th th th th th th th th th th th th th th~ th} th| th{ thz thy thx thw thv thu tht ths thr thq thp tho thn thm thl thk thj thi thh thg thf the thd thc thb tha th` th_ th^ th] th\ th[ thZ thY thX thW thV thU thT thS thR thQ thP thO thN thM thL thK thJ thI thH thG thF thE thD thC thB thA th@ th? th> th= th< th; th: th9 th8 th7 th6 th5 th4 th3 th2 th1 th0 th/ th. th- th, th+ th* th) th( th' th& th% th$ th# th" th! th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th th ?zsDZ, q B  U X& *   j o; @    P U! '   e n6 @ z.Q!zuCqeooOnfWkYrQdxA:localhost:8800th.Q!zsXPhIPzeXXLvuazzQ:localhost:8800th.Q!zoTQAhGwmDDUECKtbL:localhost:8800th.Q!zhCsYcaweVFJLLNwBz:localhost:8800th.Q!zScKnCZCFPIIodAiQj:localhost:8800th.Q!zNCItZNbpkZKuufRhC:localhost:8800th.Q!zNBpypJDRMlBdOcLlW:localhost:8800th.Q!zHBgbzUZHshNGZvIBS:localhost:8800th.Q!zFdNewlKnUiMBxnYrN:localhost:8800th.Q!yfizglmCXdcqCgDrTr:localhost:8800th.Q!ybXveQoxPVhjpKHAkG:localhost:8800th.Q!yWhIsLsgNVGcnELrDS:localhost:8800th.Q!yTQmLDAxZscWKLMSWh:localhost:8800th.Q!yNfCaBMPezurwkJRAX:localhost:8800th.Q!yLccBXjjEasExpsXlt:localhost:8800th.Q!yAzXcNLHMuqFOcOexj:localhost:8800th.Q!yAfsSyqpJWFnkXQFJL:localhost:8800th.Q!xwoIOPTGmJIlTXakxC:localhost:8800th~.Q!xvblqEscwOtCqJntfF:localhost:8800th}.Q!xhbvqJDfxMSsZPqvld:localhost:8800th|.Q!xcdNyJNFEdaBGFycsB:localhost:8800th{.Q!wvnfKBSrUlfNmYoeil:localhost:8800thz.Q!zuCqeooOnfWkYrQdxA:localhost:8800m .Q!zsXPhIPzeXXLvuazzQ:localhost:8800m.Q!zqQJfFCRlSEDPKlQPy:localhost:8800m`.Q!zoTQAhGwmDDUECKtbL:localhost:8800m-Q!zhCsYcaweVFJLLNwBz:localhost:8800m.Q!zScKnCZCFPIIodAiQj:localhost:8800m,Q !zNCItZNbpkZKuufRhC:localhost:8800m-Q!zNBpypJDRMlBdOcLlW:localhost:8800my.Q!zHBgbzUZHshNGZvIBS:localhost:8800mB-Q!zFdNewlKnUiMBxnYrN:localhost:8800m[.Q!yfizglmCXdcqCgDrTr:localhost:8800m.Q!ybXveQoxPVhjpKHAkG:localhost:8800mW.Q!yWhIsLsgNVGcnELrDS:localhost:8800m.Q!yTQmLDAxZscWKLMSWh:localhost:8800m .Q!yNfCaBMPezurwkJRAX:localhost:8800m.Q!yLccBXjjEasExpsXlt:localhost:8800m.Q!yAzXcNLHMuqFOcOexj:localhost:8800m .Q!yAfsSyqpJWFnkXQFJL:localhost:8800mi-Q!xwoIOPTGmJIlTXakxC:localhost:8800m .Q!xvblqEscwOtCqJntfF:localhost:8800m-Q!xhbvqJDfxMSsZPqvld:localhost:8800m!.Q!xcdNyJNFEdaBGFycsB:localhost:8800mN.Q!xXYMxashIZAUOTuGAJ:localhost:8800m-Q!wvnfKBSrUlfNmYoeil:localhost:8800m.Q!wsvXTJXouVkEZcCFsD:localhost:8800thy.Q!wsvXTJXouVkEZcCFsD:localhost:8800m.Q!wnriPzXkIMmdTNoJKU:localhost:8800thx-Q!wnriPzXkIMmdTNoJKU:localhost:8800m.Q!whuymJoLfUdkFdxoyE:localhost:8800thw.Q!whuymJoLfUdkFdxoyE:localhost:8800m .Q!wUuodvgsmAJqKJUBCQ:localhost:8800thv-Q!wUuodvgsmAJqKJUBCQ:localhost:8800m^.Q!wLitJYvgvNJzanSIvO:localhost:8800thu.Q!wLitJYvgvNJzanSIvO:localhost:8800m.Q!wIhMbfQzYbJobPdwyi:localhost:8800tht-Q!wIhMbfQzYbJobPdwyi:localhost:8800m/.Q!wCsDjKBtuUbrmZgjsB:localhost:8800ths.Q!wCsDjKBtuUbrmZgjsB:localhost:8800m.Q!wBkUBAjOznOyxrLchl:localhost:8800thr.Q!wBkUBAjOznOyxrLchl:localhost:8800m7.Q!wBBQYEPjQGnoAzDpEu:localhost:8800thq  ~LV c & p 4 ~; Q!zuCqeooOnfWkYrQdxA:localhost:8800th&\ 9 Q  !zsXPhIPzeXXLvuazzQ:localhost:8800th&\9 Q  !zoTQAhGwmDDUECKtbL:localhost:8800th&\9 Q  !zhCsYcaweVFJLLNwBz:localhost:8800th&\9 Q  !zScKnCZCFPIIodAiQj:localhost:8800th&\9 Q  !zNCItZNbpkZKuufRhC:localhost:8800th&\; Q!zNBpypJDRMlBdOcLlW:localhost:8800th&\: Q !zHBgbzUZHshNGZvIBS:localhost:8800th&\9 Q  !zFdNewlKnUiMBxnYrN:localhost:8800th&\: Q !yfizglmCXdcqCgDrTr:localhost:8800th&\9 Q  !ybXveQoxPVhjpKHAkG:localhost:8800th&\; Q!yWhIsLsgNVGcnELrDS:localhost:8800th&\; Q!yTQmLDAxZscWKLMSWh:localhost:8800th&\; Q!yNfCaBMPezurwkJRAX:localhost:8800th&\9 Q  !yLccBXjjEasExpsXlt:localhost:8800th&\; Q!yAzXcNLHMuqFOcOexj:localhost:8800th&\9 Q  !yAfsSyqpJWFnkXQFJL:localhost:8800th&\9~ Q  !xwoIOPTGmJIlTXakxC:localhost:8800th&\9} Q  !xvblqEscwOtCqJntfF:localhost:8800th&\! Vc|P$tH l @  e 9 ^ 2  Vb'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 a'Q!yLccBXjjEasExpsXlt:localhost:8800,`'Q!wBkUBAjOznOyxrLchl:localhost:8800_'Q!vJQYmOxOBLwFKzYkNj:localhost:8800^'Q!taANXnGBZntAreRurn:localhost:8800 ]'Q!rpVYLTJGcFNdGzFzXj:localhost:8800\'Q!qInWQPtNQfBFoVzUtP:localhost:8800 K['Q!nvclDopiBLEOKBIheH:localhost:8800Z&Q!loalEsWaTYwrVUNJLr:localhost:8800$Y'Q!kjjUsMowsioSQRIJeg:localhost:8800 X'Q!ijOiudvuzOLNmgNKfG:localhost:8800 W'Q!hGsPmWXboxZZtOlsxY:localhost:8800 V'Q!eySSVuCclRpBDgwKIU:localhost:8800U'Q!eGEEtFXUXuZDImkeql:localhost:8800 BT'Q!cRbfhxZdPstEsPGPAu:localhost:8800 S'Q!bNSXSTadOMhIrYpMzH:localhost:8800R&Q!aWJOsiuJONOvjKWEjO:localhost:8800`Q'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 NP'Q!XMNRkfscQXRjgYrOSd:localhost:8800O'Q!VhUAklonNaWKRnLkcr:localhost:8800 N'Q!TleKOyAElrpgyyrAQA:localhost:8800M'Q!SnROoiDBapNNtMmKnT:localhost:8800 aL'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 =K'Q!PHkVrXAyfGkFtzSagu:localhost:8800 J'Q!NrxQuziwSWzsHuXIlG:localhost:8800I'Q!NFWKQvZkIwvecnREOC:localhost:8800H'Q!KetCYFxrTxawNOGnOf:localhost:8800 G'Q!IlGJpjzrvvAFuwTAgo:localhost:8800F'Q!HbYxdEuVIeLKHwqJEh:localhost:8800E'Q!GGXyLHdVXqhQjPRvac:localhost:8800YD'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 C'Q!CgVBWWcRJoHEcwoLcq:localhost:8800B'Q!BckZfhQgrcyiMhEAAJ:localhost:8800 jkR9 x`H0 x P ( ` 8  p H X 0  h @ xP(`8pH X0 mE}U-e=uM%'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 9'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 8'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 7'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 6'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 5'Q!BPNyKqmwcpGxIbGFZG:localhost:8800 4'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BKZJsoFNhiLTDYNclB:localhost:8800 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800 'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800'Q!BGbJEmJRVJGlZFQbZe:localhost:8800&Q!BDASLhdcKfNwxCTCSg:localhost:8800]&Q!BDASLhdcKfNwxCTCSg:localhost:8800\&Q!BDASLhdcKfNwxCTCSg:localhost:8800[&Q!BDASLhdcKfNwxCTCSg:localhost:8800Z&Q!BDASLhdcKfNwxCTCSg:localhost:8800Y'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AoAvmnwMkhYBQsbCsL:localhost:8800'Q!AjjrNwXmPTCruHxaJq:localhost:8800N'Q!AjjrNwXmPTCruHxaJq:localhost:8800M'Q!AjjrNwXmPTCruHxaJq:localhost:8800L'Q!AjjrNwXmPTCruHxaJq:localhost:8800K'Q!AjjrNwXmPTCruHxaJq:localhost:8800J'Q!AjjrNwXmPTCruHxaJq:localhost:8800I'Q!AjjrNwXmPTCruHxaJq:localhost:8800H'Q!AjjrNwXmPTCruHxaJq:localhost:8800G'Q!AjjrNwXmPTCruHxaJq:localhost:8800F'Q!AjjrNwXmPTCruHxaJq:localhost:8800E'Q!AjjrNwXmPTCruHxaJq:localhost:8800D'Q!AjjrNwXmPTCruHxaJq:localhost:8800C'Q!AYFqrmxwClFQlcTTYq:localhost:8800 2'Q!AYFqrmxwClFQlcTTYq:localhost:8800 1'Q!AYFqrmxwClFQlcTTYq:localhost:8800 0'Q!AYFqrmxwClFQlcTTYq:localhost:8800 /'Q!AYFqrmxwClFQlcTTYq:localhost:8800 .'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AWfbViAZparIjmDaVT:localhost:8800'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AOEdqVKPFddrqbKPOL:localhost:8800 'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!AMLmLqizBFklpqKibP:localhost:8800'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 'Q!ABHbfUdkHCJksMsaUt:localhost:8800 1!9:localhost:42455 b1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!6:localhost:42455 1!5:localhost:42455 V3!13:localhost:42455 q3!13:localhost:42455 p3!13:localhost:42455 o3!12:localhost:42455 n3!12:localhost:42455 m3!11:localhost:42455 e3!11:localhost:42455 d3!10:localhost:42455 c1!0:localhost:42455 & a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CSqENqzAezaZnGktbE:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CQKLQUpSYakhxVDltC:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800'Q!CNFopUEQTFbzjmLvii:localhost:8800{'Q!CNFopUEQTFbzjmLvii:localhost:8800z'Q!CNFopUEQTFbzjmLvii:localhost:8800y'Q!CNFopUEQTFbzjmLvii:localhost:8800x'Q!CNFopUEQTFbzjmLvii:localhost:8800w'Q!CNFopUEQTFbzjmLvii:localhost:8800u'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CKNftKKCaOCVUyYWNY:localhost:8800 'Q!CGckPHdSYcIocFvRAq:localhost:8800S'Q!CGckPHdSYcIocFvRAq:localhost:8800R'Q!CGckPHdSYcIocFvRAq:localhost:8800Q'Q!CGckPHdSYcIocFvRAq:localhost:8800P'Q!CGckPHdSYcIocFvRAq:localhost:8800O'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 'Q!CAGaRyRvrohDRBsrWH:localhost:8800 ~'Q!BrssELMbasSzTFpIXm:localhost:8800.'Q!BrssELMbasSzTFpIXm:localhost:8800-'Q!BrssELMbasSzTFpIXm:localhost:8800,'Q!BrssELMbasSzTFpIXm:localhost:8800+'Q!BrssELMbasSzTFpIXm:localhost:8800*'Q!BrssELMbasSzTFpIXm:localhost:8800)'Q!BrssELMbasSzTFpIXm:localhost:8800('Q!BrssELMbasSzTFpIXm:localhost:8800''Q!BrssELMbasSzTFpIXm:localhost:8800&'Q!BpTqIemsWFZIqTcgJO:localhost:8800j'Q!BpTqIemsWFZIqTcgJO:localhost:8800i'Q!BpTqIemsWFZIqTcgJO:localhost:8800h'Q!BpTqIemsWFZIqTcgJO:localhost:8800g'Q!BpTqIemsWFZIqTcgJO:localhost:8800f'Q!BpTqIemsWFZIqTcgJO:localhost:8800e'Q!BpTqIemsWFZIqTcgJO:localhost:8800d'Q!BpTqIemsWFZIqTcgJO:localhost:8800c'Q!BoyzlWNkRPncpDjBDg:localhost:8800N'Q!BoyzlWNkRPncpDjBDg:localhost:8800M'Q!BoyzlWNkRPncpDjBDg:localhost:8800L'Q!BoyzlWNkRPncpDjBDg:localhost:8800K'Q!BoyzlWNkRPncpDjBDg:localhost:8800J'Q!BkzROHxDAfKIzYpmPV:localhost:8800B'Q!BkzROHxDAfKIzYpmPV:localhost:8800A'Q!BkzROHxDAfKIzYpmPV:localhost:8800@'Q!BkzROHxDAfKIzYpmPV:localhost:8800?'Q!BkzROHxDAfKIzYpmPV:localhost:8800>'Q!BkzROHxDAfKIzYpmPV:localhost:8800='Q!BkzROHxDAfKIzYpmPV:localhost:8800<'Q!BkzROHxDAfKIzYpmPV:localhost:8800;'Q!BkzROHxDAfKIzYpmPV:localhost:8800:'Q!BkzROHxDAfKIzYpmPV:localhost:88009'Q!BkzROHxDAfKIzYpmPV:localhost:88008'Q!BkzROHxDAfKIzYpmPV:localhost:88007'Q!BfEFIDBthhkweqfhir:localhost:8800l'Q!BfEFIDBthhkweqfhir:localhost:8800i'Q!BfEFIDBthhkweqfhir:localhost:8800h'Q!BfEFIDBthhkweqfhir:localhost:8800f'Q!BfEFIDBthhkweqfhir:localhost:8800d'Q!BfEFIDBthhkweqfhir:localhost:8800b'Q!BfEFIDBthhkweqfhir:localhost:8800`'Q!BfEFIDBthhkweqfhir:localhost:8800^'Q!BfEFIDBthhkweqfhir:localhost:8800\'Q!BfEFIDBthhkweqfhir:localhost:8800['Q!BfEFIDBthhkweqfhir:localhost:8800Z'Q!BfEFIDBthhkweqfhir:localhost:8800Y'Q!BfEFIDBthhkweqfhir:localhost:8800X'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!BckZfhQgrcyiMhEAAJ:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800'Q!EfJcWhdjNARbuHYrqU:localhost:8800 'Q!EfJcWhdjNARbuHYrqU:localhost:8800 'Q!EfJcWhdjNARbuHYrqU:localhost:8800 'Q!EWkoFeckhXlNyjuIEB:localhost:8800"'Q!EWkoFeckhXlNyjuIEB:localhost:8800!'Q!EWkoFeckhXlNyjuIEB:localhost:8800 'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EWkoFeckhXlNyjuIEB:localhost:8800'Q!EMhFCPhwmnWVnjtXXM:localhost:8800e'Q!EMhFCPhwmnWVnjtXXM:localhost:8800d'Q!EMhFCPhwmnWVnjtXXM:localhost:8800c'Q!EMhFCPhwmnWVnjtXXM:localhost:8800b'Q!EMhFCPhwmnWVnjtXXM:localhost:8800a'Q!EMhFCPhwmnWVnjtXXM:localhost:8800`'Q!EMhFCPhwmnWVnjtXXM:localhost:8800_'Q!EMhFCPhwmnWVnjtXXM:localhost:8800^'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!ELBgBaMSIMNkjFSumH:localhost:8800 'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!EABRjdYuYumMhLSwIa:localhost:8800'Q!DuqHkpTfWCUblSrxQj:localhost:8800 f'Q!DuqHkpTfWCUblSrxQj:localhost:8800 e'Q!DuqHkpTfWCUblSrxQj:localhost:8800 d'Q!DuqHkpTfWCUblSrxQj:localhost:8800 c'Q!DuqHkpTfWCUblSrxQj:localhost:8800 b'Q!DuqHkpTfWCUblSrxQj:localhost:8800 a'Q!DuqHkpTfWCUblSrxQj:localhost:8800 `'Q!DuqHkpTfWCUblSrxQj:localhost:8800 _'Q!DqxFmsXPclgGqpSwdy:localhost:8800\'Q!DqxFmsXPclgGqpSwdy:localhost:8800['Q!DqxFmsXPclgGqpSwdy:localhost:8800Z'Q!DqxFmsXPclgGqpSwdy:localhost:8800Y'Q!DqxFmsXPclgGqpSwdy:localhost:8800X'Q!DqxFmsXPclgGqpSwdy:localhost:8800W'Q!DqxFmsXPclgGqpSwdy:localhost:8800V'Q!DqxFmsXPclgGqpSwdy:localhost:8800U'Q!DqxFmsXPclgGqpSwdy:localhost:8800T'Q!DoiZErAdypBUMZKaeJ:localhost:88006'Q!DoiZErAdypBUMZKaeJ:localhost:88005'Q!DoiZErAdypBUMZKaeJ:localhost:88004'Q!DoiZErAdypBUMZKaeJ:localhost:88003'Q!DoiZErAdypBUMZKaeJ:localhost:88002'Q!DoiZErAdypBUMZKaeJ:localhost:88001'Q!DoiZErAdypBUMZKaeJ:localhost:88000'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DntdfAPfCfgdOoRMdl:localhost:8800 'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DnUHoxreGexNmjSVpq:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DelfBAGvCrTXgNxmNV:localhost:8800'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 P'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 O'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 M'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 L'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 K'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 J'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 I'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 H'Q!DSFBpkqfnvBQbGoMUK:localhost:8800 G'Q!CkNvQnbApPIcuKygDk:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800'Q!CkNvQnbApPIcuKygDk:localhost:8800~'Q!CkNvQnbApPIcuKygDk:localhost:8800}'Q!CkNvQnbApPIcuKygDk:localhost:8800|'Q!CkNvQnbApPIcuKygDk:localhost:8800{'Q!CkNvQnbApPIcuKygDk:localhost:8800z'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!CgVBWWcRJoHEcwoLcq:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!GGXyLHdVXqhQjPRvac:localhost:8800W'Q!GGXyLHdVXqhQjPRvac:localhost:8800V'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GGTWnzJfvPQBgQqDIE:localhost:8800'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!GBPGYLDkXcAsHgkfuS:localhost:8800 'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FklhVuCInffbDxunWv:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FbJSiQoZtZkaFwzzQq:localhost:8800'Q!FZOLkaLbBpaibrbHZx:localhost:8800 F'Q!FZOLkaLbBpaibrbHZx:localhost:8800 E'Q!FZOLkaLbBpaibrbHZx:localhost:8800 D'Q!FZOLkaLbBpaibrbHZx:localhost:8800 C'Q!FZOLkaLbBpaibrbHZx:localhost:8800 B'Q!FPcQcheNebvdFvmOnr:localhost:8800['Q!FPcQcheNebvdFvmOnr:localhost:8800Z'Q!FPcQcheNebvdFvmOnr:localhost:8800Y'Q!FPcQcheNebvdFvmOnr:localhost:8800X'Q!FPcQcheNebvdFvmOnr:localhost:8800W'Q!FPcQcheNebvdFvmOnr:localhost:8800V'Q!FPcQcheNebvdFvmOnr:localhost:8800U'Q!FPcQcheNebvdFvmOnr:localhost:8800T'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FIOuvzpMhoERunVYYA:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800'Q!FAYqpziHeVZugCGaij:localhost:8800~'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyyNoldCLUdFHzXTDP:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EyEaTZElOkdURKbEXo:localhost:8800'Q!EieRtaCFZJJCIOkRPp:localhost:8800J'Q!EieRtaCFZJJCIOkRPp:localhost:8800I'Q!EieRtaCFZJJCIOkRPp:localhost:8800H'Q!EieRtaCFZJJCIOkRPp:localhost:8800G'Q!EieRtaCFZJJCIOkRPp:localhost:8800F'Q!EieRtaCFZJJCIOkRPp:localhost:8800E'Q!EieRtaCFZJJCIOkRPp:localhost:8800D'Q!EieRtaCFZJJCIOkRPp:localhost:8800C'Q!EieRtaCFZJJCIOkRPp:localhost:8800B'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhUxBjnSkVXpTrQlrn:localhost:8800'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!EhFUhsgQbBWmrnGmaz:localhost:8800 'Q!GGXyLHdVXqhQjPRvac:localhost:8800X a`8pH X 0  h @  x P ( d =  u M %]5 mE}U-e=uM%]5 mE}U-'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HZqzpRgqekPOtxstVc:localhost:8800'Q!HXfrGcvJCbRItyQLVE:localhost:8800z'Q!HXfrGcvJCbRItyQLVE:localhost:8800y'Q!HXfrGcvJCbRItyQLVE:localhost:8800x'Q!HXfrGcvJCbRItyQLVE:localhost:8800w'Q!HXfrGcvJCbRItyQLVE:localhost:8800v'Q!HXfrGcvJCbRItyQLVE:localhost:8800u'Q!HXfrGcvJCbRItyQLVE:localhost:8800t'Q!HXfrGcvJCbRItyQLVE:localhost:8800s'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HWTlaNxUKnDsrtlOxU:localhost:8800'Q!HOPyhZPcKkrvSmDIvX:localhost:8800''Q!HOPyhZPcKkrvSmDIvX:localhost:8800&'Q!HOPyhZPcKkrvSmDIvX:localhost:8800%'Q!HOPyhZPcKkrvSmDIvX:localhost:8800$'Q!HOPyhZPcKkrvSmDIvX:localhost:8800#'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HIZTeBCxvpMSpcqGVD:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!HAFNBarGuVZuWCgwWM:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwXGurbyEmykmmHcHJ:localhost:8800'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GwLdUoDplyVUogXDzu:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 'Q!GsjDgpaxdwYfnefiWO:localhost:8800 &Q!GixhPUMvtKSWoKRgvw:localhost:8800/&Q!GixhPUMvtKSWoKRgvw:localhost:8800.&Q!GixhPUMvtKSWoKRgvw:localhost:8800-&Q!GixhPUMvtKSWoKRgvw:localhost:8800,&Q!GixhPUMvtKSWoKRgvw:localhost:8800+'Q!GiSxJsKZhQVHBkrVPn:localhost:8800['Q!GiSxJsKZhQVHBkrVPn:localhost:8800Z'Q!GiSxJsKZhQVHBkrVPn:localhost:8800Y'Q!GiSxJsKZhQVHBkrVPn:localhost:8800X'Q!GiSxJsKZhQVHBkrVPn:localhost:8800W'Q!GiSxJsKZhQVHBkrVPn:localhost:8800V'Q!GiSxJsKZhQVHBkrVPn:localhost:8800U'Q!GiSxJsKZhQVHBkrVPn:localhost:8800T'Q!GiSxJsKZhQVHBkrVPn:localhost:8800S'Q!GiSxJsKZhQVHBkrVPn:localhost:8800R'Q!GiSxJsKZhQVHBkrVPn:localhost:8800Q'Q!GiSxJsKZhQVHBkrVPn:localhost:8800P'Q!GiSxJsKZhQVHBkrVPn:localhost:8800O'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GgUNbVXspVTpOlaHBl:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GSxvxNevpCiwmFCHys:localhost:8800'Q!GGXyLHdVXqhQjPRvac:localhost:8800]'Q!GGXyLHdVXqhQjPRvac:localhost:8800\'Q!GGXyLHdVXqhQjPRvac:localhost:8800['Q!GGXyLHdVXqhQjPRvac:localhost:8800Z'Q!HbYxdEuVIeLKHwqJEh:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!IfYYyzLHSOeyJBxBfn:localhost:8800T'Q!IfYYyzLHSOeyJBxBfn:localhost:8800S'Q!IfYYyzLHSOeyJBxBfn:localhost:8800R'Q!IfYYyzLHSOeyJBxBfn:localhost:8800Q'Q!IfYYyzLHSOeyJBxBfn:localhost:8800P'Q!IfYYyzLHSOeyJBxBfn:localhost:8800O'Q!IfYYyzLHSOeyJBxBfn:localhost:8800N'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IZkczIYykpZDvjuUWn:localhost:8800'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!IYxUkyFHOgvhLpdkOA:localhost:8800 'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!ITdmSQpjMnaPoHIbws:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IPYMCBwcyNIzqdiIWv:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!IMiczgkCTjejbnbeyP:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!ILbUVZOfPPwaZRrKJd:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!IGVHKYcSuxzVPlFHlj:localhost:8800'Q!HusOrLtWZTLbmQZxmm:localhost:8800r'Q!HusOrLtWZTLbmQZxmm:localhost:8800q'Q!HusOrLtWZTLbmQZxmm:localhost:8800p'Q!HusOrLtWZTLbmQZxmm:localhost:8800o'Q!HusOrLtWZTLbmQZxmm:localhost:8800n'Q!HusOrLtWZTLbmQZxmm:localhost:8800m'Q!HusOrLtWZTLbmQZxmm:localhost:8800l'Q!HusOrLtWZTLbmQZxmm:localhost:8800k'Q!HmkcAMkMjWRhTDJMsy:localhost:8800A'Q!HmkcAMkMjWRhTDJMsy:localhost:8800@'Q!HmkcAMkMjWRhTDJMsy:localhost:8800?'Q!HmkcAMkMjWRhTDJMsy:localhost:8800>'Q!HmkcAMkMjWRhTDJMsy:localhost:8800='Q!HmkcAMkMjWRhTDJMsy:localhost:8800<'Q!HmkcAMkMjWRhTDJMsy:localhost:8800;'Q!HmkcAMkMjWRhTDJMsy:localhost:8800:'Q!HmkcAMkMjWRhTDJMsy:localhost:88009'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HhYREfUiJTpjWmOuPF:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HcMGemcRrLnLprOJJR:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!HbYxdEuVIeLKHwqJEh:localhost:8800'Q!IfYYyzLHSOeyJBxBfn:localhost:8800U a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeqmSjifajNKxtgqhj:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KeBlWUQiLYUoILKkTB:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KdOYYnOuwAyQzqwUki:localhost:8800'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 %'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 $'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 #'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 "'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 !'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 'Q!KcXNWNfbLcYsBKZHIp:localhost:8800 'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KXMUzALpMMMKqoQXUS:localhost:8800'Q!KIHYKMzkRDrJwiywwz:localhost:8800k'Q!KIHYKMzkRDrJwiywwz:localhost:8800j'Q!KIHYKMzkRDrJwiywwz:localhost:8800i'Q!KIHYKMzkRDrJwiywwz:localhost:8800h'Q!KIHYKMzkRDrJwiywwz:localhost:8800g'Q!KIHYKMzkRDrJwiywwz:localhost:8800f'Q!JusxqeECtidaPlWqhp:localhost:8800p'Q!JusxqeECtidaPlWqhp:localhost:8800o'Q!JusxqeECtidaPlWqhp:localhost:8800n'Q!JusxqeECtidaPlWqhp:localhost:8800m'Q!JusxqeECtidaPlWqhp:localhost:8800l'Q!JusxqeECtidaPlWqhp:localhost:8800k'Q!JusxqeECtidaPlWqhp:localhost:8800j'Q!JusxqeECtidaPlWqhp:localhost:8800i'Q!JusxqeECtidaPlWqhp:localhost:8800h'Q!JnAKXOrlyisFUpgJPw:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JiUawCFQnodcpssOfK:localhost:8800 'Q!JZouHBRxCRbcxYJnbn:localhost:8800,'Q!JZouHBRxCRbcxYJnbn:localhost:8800+'Q!JZouHBRxCRbcxYJnbn:localhost:8800*'Q!JZouHBRxCRbcxYJnbn:localhost:8800)'Q!JZouHBRxCRbcxYJnbn:localhost:8800('Q!JYLMokjOhZZlmbZvTf:localhost:88005'Q!JYLMokjOhZZlmbZvTf:localhost:88004'Q!JYLMokjOhZZlmbZvTf:localhost:88003'Q!JYLMokjOhZZlmbZvTf:localhost:88002'Q!JYLMokjOhZZlmbZvTf:localhost:88001'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800 'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JPTwFTSDaBXwUTgitj:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!JGhlAUflyNxErGGZZu:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!IlGJpjzrvvAFuwTAgo:localhost:8800'Q!KetCYFxrTxawNOGnOf:localhost:8800 a`8pH X 0  h @  x P ( b ;  v N &^6nF~V.f>vN&^6nF~V.'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!NFWKQvZkIwvecnREOC:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MqstbCLZIQFiYNHrqR:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MlzmtUYSZOiByAZdKx:localhost:8800'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MXhwoqNXvexeDDSOZT:localhost:8800 'Q!MWCLSWWGdWcSivNVLI:localhost:8800z'Q!MWCLSWWGdWcSivNVLI:localhost:8800y'Q!MWCLSWWGdWcSivNVLI:localhost:8800x'Q!MWCLSWWGdWcSivNVLI:localhost:8800w'Q!MWCLSWWGdWcSivNVLI:localhost:8800v'Q!MWCLSWWGdWcSivNVLI:localhost:8800u'Q!MWCLSWWGdWcSivNVLI:localhost:8800t'Q!MWCLSWWGdWcSivNVLI:localhost:8800s'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!MBWnwKRwFznvRpAzxr:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LvARVIpJZeRQxbKefX:localhost:8800'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 'Q!LazKtcHZriKzCvvGwV:localhost:8800 &Q!LaLcEGFLpjdlYlYKGC:localhost:8800 &Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800&Q!LaLcEGFLpjdlYlYKGC:localhost:8800'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 d'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 c'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 b'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 a'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 `'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 _'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 ^'Q!LFBhoxJpmBqFrwEzGP:localhost:8800 ]'Q!KxhGcTbEWmtgGNpdox:localhost:8800I'Q!KxhGcTbEWmtgGNpdox:localhost:8800H'Q!KxhGcTbEWmtgGNpdox:localhost:8800G'Q!KxhGcTbEWmtgGNpdox:localhost:8800F'Q!KxhGcTbEWmtgGNpdox:localhost:8800E'Q!KxhGcTbEWmtgGNpdox:localhost:8800D'Q!KxhGcTbEWmtgGNpdox:localhost:8800C'Q!KxhGcTbEWmtgGNpdox:localhost:8800B'Q!KmuRTfGFgJdgIDAgIW:localhost:88007'Q!KmuRTfGFgJdgIDAgIW:localhost:88000'Q!KmuRTfGFgJdgIDAgIW:localhost:8800/'Q!KmuRTfGFgJdgIDAgIW:localhost:8800.'Q!KmuRTfGFgJdgIDAgIW:localhost:8800-'Q!KmuRTfGFgJdgIDAgIW:localhost:8800,'Q!KmuRTfGFgJdgIDAgIW:localhost:8800+'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!KetCYFxrTxawNOGnOf:localhost:8800 'Q!NFWKQvZkIwvecnREOC:localhost:8800 a`8pH X 0  h @  x P (  e >  v N &^6nF~V.f>vN&^6nF[3 'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800~'Q!NrxQuziwSWzsHuXIlG:localhost:8800}'Q!NrxQuziwSWzsHuXIlG:localhost:8800|&Q!NhWgOTYzEPRwAxRQvS:localhost:8800l&Q!NhWgOTYzEPRwAxRQvS:localhost:8800k&Q!NhWgOTYzEPRwAxRQvS:localhost:8800j&Q!NhWgOTYzEPRwAxRQvS:localhost:8800i&Q!NhWgOTYzEPRwAxRQvS:localhost:8800h'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NgkQVVUNzoyCVPtckM:localhost:8800 'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NfaPEGKjnUDUTavzol:localhost:8800'Q!NeYaCeYNFATCqlrlGT:localhost:8800+'Q!NeYaCeYNFATCqlrlGT:localhost:8800*'Q!NeYaCeYNFATCqlrlGT:localhost:8800)'Q!NeYaCeYNFATCqlrlGT:localhost:8800('Q!NeYaCeYNFATCqlrlGT:localhost:8800''Q!NcJYmIbgjsaKJOzBcs:localhost:8800 :'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 3'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 ,'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 +'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 $'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 #'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 "'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 !'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NcJYmIbgjsaKJOzBcs:localhost:8800 'Q!NboFFVLpJHTeuUKCjM:localhost:8800y'Q!NboFFVLpJHTeuUKCjM:localhost:8800x'Q!NboFFVLpJHTeuUKCjM:localhost:8800w'Q!NboFFVLpJHTeuUKCjM:localhost:8800v'Q!NboFFVLpJHTeuUKCjM:localhost:8800u'Q!NboFFVLpJHTeuUKCjM:localhost:8800t'Q!NboFFVLpJHTeuUKCjM:localhost:8800s'Q!NboFFVLpJHTeuUKCjM:localhost:8800r'Q!NanhNmCnVVpmZRJrTF:localhost:8800 ^'Q!NanhNmCnVVpmZRJrTF:localhost:8800 ]'Q!NanhNmCnVVpmZRJrTF:localhost:8800 \'Q!NanhNmCnVVpmZRJrTF:localhost:8800 ['Q!NanhNmCnVVpmZRJrTF:localhost:8800 Z'Q!NanhNmCnVVpmZRJrTF:localhost:8800 Y'Q!NanhNmCnVVpmZRJrTF:localhost:8800 X'Q!NanhNmCnVVpmZRJrTF:localhost:8800 W'Q!NajQnqYmGyTjxhFYar:localhost:8829W&Q!NZHpBquHDfJAjiawGk:localhost:8800C&Q!NZHpBquHDfJAjiawGk:localhost:8800B&Q!NZHpBquHDfJAjiawGk:localhost:8800A&Q!NZHpBquHDfJAjiawGk:localhost:8800@&Q!NZHpBquHDfJAjiawGk:localhost:8800?&Q!NZHpBquHDfJAjiawGk:localhost:8800>'Q!NQgavrmiCPUVaVjssy:localhost:8800A'Q!NQgavrmiCPUVaVjssy:localhost:8800@'Q!NQgavrmiCPUVaVjssy:localhost:8800?'Q!NQgavrmiCPUVaVjssy:localhost:8800>'Q!NQgavrmiCPUVaVjssy:localhost:8800='Q!NQgavrmiCPUVaVjssy:localhost:8800<'Q!NQgavrmiCPUVaVjssy:localhost:8800;'Q!NQgavrmiCPUVaVjssy:localhost:8800:'Q!NQgavrmiCPUVaVjssy:localhost:88009'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NPdjmIfsBVIIkvWBzD:localhost:8800'Q!NNiyzThHMivrxhojfp:localhost:8800F'Q!NNiyzThHMivrxhojfp:localhost:8800?'Q!NNiyzThHMivrxhojfp:localhost:8800>'Q!NNiyzThHMivrxhojfp:localhost:8800='Q!NNiyzThHMivrxhojfp:localhost:8800<'Q!NNiyzThHMivrxhojfp:localhost:8800;'Q!NNiyzThHMivrxhojfp:localhost:8800:'Q!NNiyzThHMivrxhojfp:localhost:88009'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NJdkYMskQwIpIWlWkn:localhost:8800 'Q!NrxQuziwSWzsHuXIlG:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!PEcOacvKaBKpXjytEF:localhost:8800_'Q!PEcOacvKaBKpXjytEF:localhost:8800^'Q!PEcOacvKaBKpXjytEF:localhost:8800]'Q!PEcOacvKaBKpXjytEF:localhost:8800\'Q!PEcOacvKaBKpXjytEF:localhost:8800['Q!PEcOacvKaBKpXjytEF:localhost:8800Z'Q!PEcOacvKaBKpXjytEF:localhost:8800Y'Q!PEcOacvKaBKpXjytEF:localhost:8800X'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!PCgUmZOwWmtDsuFqXg:localhost:8800'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 V'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 U'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 T'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 S'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 R'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 Q'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 P'Q!OtBUhGeUSiDMWRKIOT:localhost:8800 O'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800'Q!OqPpVlCwmKdAUlwrXI:localhost:8800~'Q!OqPpVlCwmKdAUlwrXI:localhost:8800}'Q!OqPpVlCwmKdAUlwrXI:localhost:8800|'Q!OqPpVlCwmKdAUlwrXI:localhost:8800{'Q!OqPpVlCwmKdAUlwrXI:localhost:8800z'Q!OqPpVlCwmKdAUlwrXI:localhost:8800y'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OaCEdDAiatpwYcagUb:localhost:8800'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OXpGdKbowFUTChPdmF:localhost:8800 'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OWGKxAmTrHLciIdrJi:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OSHhtkGUjpUCkXwIhj:localhost:8800'Q!OMkiVTuuOEeiFAXtUY:localhost:88008'Q!OMkiVTuuOEeiFAXtUY:localhost:88007'Q!OMkiVTuuOEeiFAXtUY:localhost:88006'Q!OMkiVTuuOEeiFAXtUY:localhost:88005'Q!OMkiVTuuOEeiFAXtUY:localhost:88004'Q!OMkiVTuuOEeiFAXtUY:localhost:88003'Q!OMkiVTuuOEeiFAXtUY:localhost:88002'Q!OMkiVTuuOEeiFAXtUY:localhost:88001'Q!OMkiVTuuOEeiFAXtUY:localhost:88000'Q!OMkiVTuuOEeiFAXtUY:localhost:8800/'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 'Q!OJilSqnQvLgoXSqRaW:localhost:8800 ~'Q!OCEHAjcOXWNyWIESIS:localhost:8800 %'Q!OCEHAjcOXWNyWIESIS:localhost:8800 $'Q!OCEHAjcOXWNyWIESIS:localhost:8800 #'Q!OCEHAjcOXWNyWIESIS:localhost:8800 "'Q!OCEHAjcOXWNyWIESIS:localhost:8800 !'Q!OCEHAjcOXWNyWIESIS:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800'Q!OBWkjfrDCNgYFfblia:localhost:8800'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800 'Q!OBWkjfrDCNgYFfblia:localhost:8800'Q!NrxQuziwSWzsHuXIlG:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH!^6nF~V.'Q!QnmLrBAxeItdHsaxWf:localhost:8800 l'Q!QnmLrBAxeItdHsaxWf:localhost:8800 k'Q!QnmLrBAxeItdHsaxWf:localhost:8800 j'Q!QnmLrBAxeItdHsaxWf:localhost:8800 i'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 m'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 l'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 k'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 j'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 i'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 h'Q!QkkdnzvdrjHaFGkzMt:localhost:8800 g'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800'Q!QcaNrIiUsWpTiVGOnt:localhost:8800&Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800 &Q!QZhNrNpwObZGJZpdAG:localhost:8800'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QWLJZmJqjWZjVOjdYF:localhost:8800 'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QMrkSPlQDGborAyWtQ:localhost:8800'Q!QFiJrWFFeTAAAUCjCE:localhost:88008'Q!QFiJrWFFeTAAAUCjCE:localhost:88006'Q!QFiJrWFFeTAAAUCjCE:localhost:88005'Q!QFiJrWFFeTAAAUCjCE:localhost:88004'Q!QFiJrWFFeTAAAUCjCE:localhost:88003'Q!QFiJrWFFeTAAAUCjCE:localhost:88002'Q!QFiJrWFFeTAAAUCjCE:localhost:88001'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PzoqoNRxeEEqiLyVSV:localhost:8800 'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ?'Q!PgNDjhhIBAXKryuGKy:localhost:8800 >'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ='Q!PgNDjhhIBAXKryuGKy:localhost:8800 <'Q!PgNDjhhIBAXKryuGKy:localhost:8800 ;'Q!PgNDjhhIBAXKryuGKy:localhost:8800 :'Q!PgNDjhhIBAXKryuGKy:localhost:8800 9'Q!PgNDjhhIBAXKryuGKy:localhost:8800 8'Q!PgNDjhhIBAXKryuGKy:localhost:8800 7'Q!PgNDjhhIBAXKryuGKy:localhost:8800 6'Q!PgNDjhhIBAXKryuGKy:localhost:8800 5'Q!PcvmCDeVUSyJbXpTig:localhost:8800('Q!PcvmCDeVUSyJbXpTig:localhost:8800''Q!PcvmCDeVUSyJbXpTig:localhost:8800&'Q!PcvmCDeVUSyJbXpTig:localhost:8800%'Q!PcvmCDeVUSyJbXpTig:localhost:8800$'Q!PcvmCDeVUSyJbXpTig:localhost:8800#'Q!PcvmCDeVUSyJbXpTig:localhost:8800"'Q!PcvmCDeVUSyJbXpTig:localhost:8800!'Q!PcvmCDeVUSyJbXpTig:localhost:8800 'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 z'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 x'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 v'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 t'Q!PVyTvKbqnjSXfGWAMy:localhost:8800 r'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PUIxAaiCnbqaVbawGu:localhost:8800 'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PQZMTVTeCYqMZwkHvW:localhost:8800'Q!PHkVrXAyfGkFtzSagu:localhost:8800 'Q!QnmLrBAxeItdHsaxWf:localhost:8800 m a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!SnROoiDBapNNtMmKnT:localhost:8800 _'Q!SnROoiDBapNNtMmKnT:localhost:8800 ^'Q!SnROoiDBapNNtMmKnT:localhost:8800 ]'Q!SnROoiDBapNNtMmKnT:localhost:8800 \'Q!SnROoiDBapNNtMmKnT:localhost:8800 ['Q!SnROoiDBapNNtMmKnT:localhost:8800 Z'Q!SnROoiDBapNNtMmKnT:localhost:8800 Y'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SfYtaUhCFosNfHfUVm:localhost:8800'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SUDzkfFBgpuCANOxRS:localhost:8800 'Q!SBEprlZiuliFNSfNmz:localhost:8800Q'Q!SBEprlZiuliFNSfNmz:localhost:8800P'Q!SBEprlZiuliFNSfNmz:localhost:8800O'Q!SBEprlZiuliFNSfNmz:localhost:8800N'Q!SBEprlZiuliFNSfNmz:localhost:8800M'Q!SBEprlZiuliFNSfNmz:localhost:8800L'Q!SBEprlZiuliFNSfNmz:localhost:8800K'Q!SBEprlZiuliFNSfNmz:localhost:8800J'Q!RmwbYvIIQyPlHlClty:localhost:8800)'Q!RmwbYvIIQyPlHlClty:localhost:8800('Q!RmwbYvIIQyPlHlClty:localhost:8800''Q!RmwbYvIIQyPlHlClty:localhost:8800&'Q!RmwbYvIIQyPlHlClty:localhost:8800%'Q!RmwbYvIIQyPlHlClty:localhost:8800$'Q!RmdhCjvouVLmyIHjaM:localhost:8800%'Q!RmdhCjvouVLmyIHjaM:localhost:8800$'Q!RmdhCjvouVLmyIHjaM:localhost:8800#'Q!RmdhCjvouVLmyIHjaM:localhost:8800"'Q!RmdhCjvouVLmyIHjaM:localhost:8800!'Q!RmdhCjvouVLmyIHjaM:localhost:8800 'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RmdhCjvouVLmyIHjaM:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RYNJAGdRhIlwRZFbrO:localhost:8800'Q!RSLvuCuAqKQQrKCxNq:localhost:8800e'Q!RSLvuCuAqKQQrKCxNq:localhost:8800d'Q!RSLvuCuAqKQQrKCxNq:localhost:8800c'Q!RSLvuCuAqKQQrKCxNq:localhost:8800b'Q!RSLvuCuAqKQQrKCxNq:localhost:8800a'Q!RSLvuCuAqKQQrKCxNq:localhost:8800`'Q!RSLvuCuAqKQQrKCxNq:localhost:8800_'Q!RSLvuCuAqKQQrKCxNq:localhost:8800^'Q!RSLvuCuAqKQQrKCxNq:localhost:8800]'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!RPfffkmSEbWggEjnoI:localhost:8800'Q!ROoilpDjLJfjKfSPIi:localhost:8800G'Q!ROoilpDjLJfjKfSPIi:localhost:8800F'Q!ROoilpDjLJfjKfSPIi:localhost:8800E'Q!ROoilpDjLJfjKfSPIi:localhost:8800D'Q!ROoilpDjLJfjKfSPIi:localhost:8800C'Q!ROoilpDjLJfjKfSPIi:localhost:8800B'Q!ROoilpDjLJfjKfSPIi:localhost:8800A'Q!ROoilpDjLJfjKfSPIi:localhost:8800@'Q!ROoilpDjLJfjKfSPIi:localhost:8800?'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!RDEAXrqXQizuhCUFPq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800)'Q!QyLUggxrTnULUAOseq:localhost:8800"'Q!QyLUggxrTnULUAOseq:localhost:8800!'Q!QyLUggxrTnULUAOseq:localhost:8800 'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QyLUggxrTnULUAOseq:localhost:8800'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 A'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 @'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 ?'Q!QxqzQoEBIZhmzHIGrl:localhost:8800 >'Q!SnROoiDBapNNtMmKnT:localhost:8800 ` a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TlJCaYlCkOOVzFDlLx:localhost:8800'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TkluVzxeeCbMtbFWWS:localhost:8800 'Q!TeraguiGoZoeOGFzlI:localhost:8800P'Q!TeraguiGoZoeOGFzlI:localhost:8800O'Q!TeraguiGoZoeOGFzlI:localhost:8800N'Q!TeraguiGoZoeOGFzlI:localhost:8800M'Q!TeraguiGoZoeOGFzlI:localhost:8800L'Q!TeraguiGoZoeOGFzlI:localhost:8800K'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcaopYfMoJFEcjYRzJ:localhost:8800'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TcCLuIBUrtFqghDgay:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800 'Q!TWETXUgfFZafDdbqLS:localhost:8800'Q!TWETXUgfFZafDdbqLS:localhost:8800'Q!TWETXUgfFZafDdbqLS:localhost:8800'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!TSFcaXDBqrCREHRHxv:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!THHfVSOSWiBQTHRAnJ:localhost:8800 'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SyIWYOmcGiASNkPCTB:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800#'Q!SvKwEALYoNreUvqAlp:localhost:8800"'Q!SvKwEALYoNreUvqAlp:localhost:8800!'Q!SvKwEALYoNreUvqAlp:localhost:8800 'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SvKwEALYoNreUvqAlp:localhost:8800'Q!SrwdtDytJDUBVZOueF:localhost:8800 }'Q!SrwdtDytJDUBVZOueF:localhost:8800 |'Q!SrwdtDytJDUBVZOueF:localhost:8800 {'Q!SrwdtDytJDUBVZOueF:localhost:8800 y'Q!SrwdtDytJDUBVZOueF:localhost:8800 w'Q!SrwdtDytJDUBVZOueF:localhost:8800 u'Q!SrwdtDytJDUBVZOueF:localhost:8800 s'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SrMQpDMFREKRMELwbL:localhost:8800'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!SpXEytywhTbAftyVBr:localhost:8800 'Q!TleKOyAElrpgyyrAQA:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VhUAklonNaWKRnLkcr:localhost:8800 'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VWYMJxEviBNDdJCuKT:localhost:8800'Q!VUibrTIkcRbfrogbQV:localhost:8800 /'Q!VUibrTIkcRbfrogbQV:localhost:8800 .'Q!VUibrTIkcRbfrogbQV:localhost:8800 -'Q!VUibrTIkcRbfrogbQV:localhost:8800 ,'Q!VUibrTIkcRbfrogbQV:localhost:8800 +'Q!VUibrTIkcRbfrogbQV:localhost:8800 *'Q!VUibrTIkcRbfrogbQV:localhost:8800 )'Q!VUibrTIkcRbfrogbQV:localhost:8800 ('Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VOhMAiLfKyTOZbmKGw:localhost:8800'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VNdqhtoDkyMoQdMTtM:localhost:8800 'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!VAEDgDJVqmxXZyAlSW:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UyLoIXmzVFwycmBUeh:localhost:8800'Q!UluPYLGXtInKDTjRzp:localhost:8800 u'Q!UluPYLGXtInKDTjRzp:localhost:8800 t'Q!UluPYLGXtInKDTjRzp:localhost:8800 s'Q!UluPYLGXtInKDTjRzp:localhost:8800 r'Q!UluPYLGXtInKDTjRzp:localhost:8800 q'Q!UluPYLGXtInKDTjRzp:localhost:8800 p'Q!UluPYLGXtInKDTjRzp:localhost:8800 o'Q!UluPYLGXtInKDTjRzp:localhost:8800 n'Q!UaitDdkGDcwvRLJSvp:localhost:8800J'Q!UaitDdkGDcwvRLJSvp:localhost:8800I'Q!UaitDdkGDcwvRLJSvp:localhost:8800H'Q!UaitDdkGDcwvRLJSvp:localhost:8800G'Q!UaitDdkGDcwvRLJSvp:localhost:8800F'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!UTAORDrNxIbSlGByAp:localhost:8800 'Q!URpLZLuBfVcfHVTBGS:localhost:8800 \'Q!URpLZLuBfVcfHVTBGS:localhost:8800 ['Q!URpLZLuBfVcfHVTBGS:localhost:8800 Z'Q!URpLZLuBfVcfHVTBGS:localhost:8800 Y'Q!URpLZLuBfVcfHVTBGS:localhost:8800 X'Q!URpLZLuBfVcfHVTBGS:localhost:8800 W'Q!URpLZLuBfVcfHVTBGS:localhost:8800 V'Q!URpLZLuBfVcfHVTBGS:localhost:8800 T'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800'Q!UMFUOnYRvwKwSPkYHB:localhost:8800 'Q!UMFUOnYRvwKwSPkYHB:localhost:8800 'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!UGVFuRGyPQmBbGsEDo:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!TleKOyAElrpgyyrAQA:localhost:8800'Q!VhUAklonNaWKRnLkcr:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XIqmzIFbkHGQPIpywk:localhost:8800*'Q!XIqmzIFbkHGQPIpywk:localhost:8800)'Q!XIqmzIFbkHGQPIpywk:localhost:8800('Q!XIqmzIFbkHGQPIpywk:localhost:8800''Q!XIqmzIFbkHGQPIpywk:localhost:8800&'Q!XIqmzIFbkHGQPIpywk:localhost:8800%'Q!XIqmzIFbkHGQPIpywk:localhost:8800$'Q!XIqmzIFbkHGQPIpywk:localhost:8800#'Q!XIqmzIFbkHGQPIpywk:localhost:8800"'Q!XIqmzIFbkHGQPIpywk:localhost:8800!'Q!XIqmzIFbkHGQPIpywk:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!XGAmnfaVvjDtQJuufa:localhost:8800 'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WuiaqqIOvBjgETqdus:localhost:8800'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 ''Q!WpThtNEVhrUbUdCdMJ:localhost:8800 &'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 %'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 $'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 #'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 "'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 !'Q!WpThtNEVhrUbUdCdMJ:localhost:8800 'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WjlTCJVOFJkanCtkFE:localhost:8800'Q!WhqVaRReBxJXADAyYD:localhost:8800v'Q!WhqVaRReBxJXADAyYD:localhost:8800s'Q!WhqVaRReBxJXADAyYD:localhost:8800r'Q!WhqVaRReBxJXADAyYD:localhost:8800q'Q!WhqVaRReBxJXADAyYD:localhost:8800p'Q!WhqVaRReBxJXADAyYD:localhost:8800o'Q!WhqVaRReBxJXADAyYD:localhost:8800n'Q!WhqVaRReBxJXADAyYD:localhost:8800m'Q!WhLedNwPGGGTtqeqam:localhost:88006'Q!WhLedNwPGGGTtqeqam:localhost:88005'Q!WhLedNwPGGGTtqeqam:localhost:88004'Q!WhLedNwPGGGTtqeqam:localhost:88003'Q!WhLedNwPGGGTtqeqam:localhost:88002'Q!WhLedNwPGGGTtqeqam:localhost:88001'Q!WhLedNwPGGGTtqeqam:localhost:88000'Q!WhLedNwPGGGTtqeqam:localhost:8800/'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 i'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 h'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 g'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 f'Q!WgXzOXLTeqaGfiDFhL:localhost:8800 e'Q!WYyiQAVvitxsLZKVCG:localhost:8800s'Q!WYyiQAVvitxsLZKVCG:localhost:8800r'Q!WYyiQAVvitxsLZKVCG:localhost:8800q'Q!WYyiQAVvitxsLZKVCG:localhost:8800p'Q!WYyiQAVvitxsLZKVCG:localhost:8800o'Q!WYyiQAVvitxsLZKVCG:localhost:8800n'Q!WYyiQAVvitxsLZKVCG:localhost:8800m'Q!WYyiQAVvitxsLZKVCG:localhost:8800l'Q!WWZVpyLeZfyfpWidLx:localhost:88006'Q!WWZVpyLeZfyfpWidLx:localhost:88005'Q!WWZVpyLeZfyfpWidLx:localhost:88004'Q!WWZVpyLeZfyfpWidLx:localhost:88003'Q!WWZVpyLeZfyfpWidLx:localhost:88002'Q!WWZVpyLeZfyfpWidLx:localhost:88001'Q!WWZVpyLeZfyfpWidLx:localhost:88000'Q!WWZVpyLeZfyfpWidLx:localhost:8800/'Q!WWZVpyLeZfyfpWidLx:localhost:8800.'Q!WWZVpyLeZfyfpWidLx:localhost:8800-'Q!WWZVpyLeZfyfpWidLx:localhost:8800,'Q!WWZVpyLeZfyfpWidLx:localhost:8800+'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WVzjUePHrzCjfyTbmK:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!WFHIeSFQyuugGeBFxW:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!ZKPJvrCZHMHPEksYDc:localhost:8800 E'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 D'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 C'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 B'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 A'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 @'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YufaOfAlruTdjyUCwO:localhost:8800'Q!YtVXQjSPgVtbxrzUOA:localhost:8800&'Q!YtVXQjSPgVtbxrzUOA:localhost:8800%'Q!YtVXQjSPgVtbxrzUOA:localhost:8800$'Q!YtVXQjSPgVtbxrzUOA:localhost:8800#'Q!YtVXQjSPgVtbxrzUOA:localhost:8800"'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YpcmaMNMzjvtgYtrli:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YmRuIWixFpaqEeDQLZ:localhost:8800 'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YgaGPEraeLCqHQirin:localhost:8800'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 U'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 S'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 R'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 Q'Q!YaLuQzmJKSMTSFEqjO:localhost:8800 P'Q!YQATbgbLImCDamiDHC:localhost:8800b'Q!YQATbgbLImCDamiDHC:localhost:8800a'Q!YQATbgbLImCDamiDHC:localhost:8800`'Q!YQATbgbLImCDamiDHC:localhost:8800_'Q!YQATbgbLImCDamiDHC:localhost:8800^'Q!YQATbgbLImCDamiDHC:localhost:8800]'Q!YQATbgbLImCDamiDHC:localhost:8800\'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!YGUjVdVdpcQoGkRnWB:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XnUZiYJDWVNGfsBnGz:localhost:8800'Q!XiwGxQKwjgutEClKUy:localhost:8829i'Q!XiwGxQKwjgutEClKUy:localhost:8829h'Q!XgobMgBjNcDRJnRXLD:localhost:8800i'Q!XgobMgBjNcDRJnRXLD:localhost:8800h'Q!XgobMgBjNcDRJnRXLD:localhost:8800g'Q!XgobMgBjNcDRJnRXLD:localhost:8800f'Q!XgobMgBjNcDRJnRXLD:localhost:8800e'Q!XgobMgBjNcDRJnRXLD:localhost:8800d'Q!XgobMgBjNcDRJnRXLD:localhost:8800c'Q!XgobMgBjNcDRJnRXLD:localhost:8800b'Q!XgobMgBjNcDRJnRXLD:localhost:8800a'Q!XgobMgBjNcDRJnRXLD:localhost:8800`'Q!XgobMgBjNcDRJnRXLD:localhost:8800_'Q!XcaKxZsPvbZhAGKKdx:localhost:8800?'Q!XcaKxZsPvbZhAGKKdx:localhost:8800>'Q!XcaKxZsPvbZhAGKKdx:localhost:8800='Q!XcaKxZsPvbZhAGKKdx:localhost:8800<'Q!XcaKxZsPvbZhAGKKdx:localhost:8800;'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XUbDuPDiMTXJZDyAPc:localhost:8800 'Q!XRAZJeoZBhGeHKKjaG:localhost:8800 'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XNfwczePlyYFWLCaui:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!XMNRkfscQXRjgYrOSd:localhost:8800'Q!ZKPJvrCZHMHPEksYDc:localhost:8800 F a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP(&Q!aWJOsiuJONOvjKWEjO:localhost:8800^'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aVxOoyiLLnxmzgLJat:localhost:8800'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 |'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 {'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 z'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 y'Q!aSKNKSGXPGoIbSrbEN:localhost:8800 x'Q!aLxrqpqLkbzyIxGgpk:localhost:8800t'Q!aLxrqpqLkbzyIxGgpk:localhost:8800k'Q!aLxrqpqLkbzyIxGgpk:localhost:8800g'Q!aLxrqpqLkbzyIxGgpk:localhost:8800e'Q!aLxrqpqLkbzyIxGgpk:localhost:8800c'Q!aLxrqpqLkbzyIxGgpk:localhost:8800a'Q!aLxrqpqLkbzyIxGgpk:localhost:8800_'Q!aLxrqpqLkbzyIxGgpk:localhost:8800]'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aHyAJEOSdKqTiRjOvw:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!aBCvSXjtZUEPlPGHvY:localhost:8800'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 5'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 4'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 3'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 2'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 1'Q!ZvLVbnHjeymRiFIkYr:localhost:8800 0'Q!ZaltdIYVZjCHsCWTZD:localhost:8800t'Q!ZaltdIYVZjCHsCWTZD:localhost:8800s'Q!ZaltdIYVZjCHsCWTZD:localhost:8800r'Q!ZaltdIYVZjCHsCWTZD:localhost:8800q'Q!ZaltdIYVZjCHsCWTZD:localhost:8800p'Q!ZaltdIYVZjCHsCWTZD:localhost:8800o'Q!ZaltdIYVZjCHsCWTZD:localhost:8800n'Q!ZaOktTIVeRgBXxfubH:localhost:8800}'Q!ZaOktTIVeRgBXxfubH:localhost:8800|'Q!ZaOktTIVeRgBXxfubH:localhost:8800{'Q!ZaOktTIVeRgBXxfubH:localhost:8800z'Q!ZaOktTIVeRgBXxfubH:localhost:8800y'Q!ZaOktTIVeRgBXxfubH:localhost:8800x'Q!ZaOktTIVeRgBXxfubH:localhost:8800w'Q!ZaOktTIVeRgBXxfubH:localhost:8800v'Q!ZaOktTIVeRgBXxfubH:localhost:8800u'Q!ZYKvjplZRyIWvzkRyM:localhost:8800M'Q!ZYKvjplZRyIWvzkRyM:localhost:8800L'Q!ZYKvjplZRyIWvzkRyM:localhost:8800K'Q!ZYKvjplZRyIWvzkRyM:localhost:8800J'Q!ZYKvjplZRyIWvzkRyM:localhost:8800I'Q!ZYKvjplZRyIWvzkRyM:localhost:8800H'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZWANpHlizyLrUiVvAm:localhost:8800 'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800G'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800E'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800D'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800C'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800B'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800A'Q!ZShBIxwbJmxjjZmoRQ:localhost:8800@'Q!ZOwibbprUCQrSJQCrx:localhost:8800 2'Q!ZOwibbprUCQrSJQCrx:localhost:8800 1'Q!ZOwibbprUCQrSJQCrx:localhost:8800 0'Q!ZOwibbprUCQrSJQCrx:localhost:8800 /'Q!ZOwibbprUCQrSJQCrx:localhost:8800 .'Q!ZOwibbprUCQrSJQCrx:localhost:8800 -'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 @'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 ?'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 >'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 ='Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 <'Q!ZOpRjvUhkWYJBFJZeO:localhost:8800 ;'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 'Q!ZNIjCvcWhgcwskanjT:localhost:8800 &Q!aWJOsiuJONOvjKWEjO:localhost:8800_ ad=wO' _ 7  o G   W /  g ?  w O '_7oGW/g?wO'_7oGW/'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!bLWyXaXdvUhdSAooUz:localhost:8800 'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!azRJNFPIRSFAskLILK:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!awHAhLuEkavTGACcUW:localhost:8800'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!atnRTMliktaVUhMVID:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!anErKtXIsVKEEsrzWM:localhost:8800 'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aknLNLxfChlLvFYhkJ:localhost:8800'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aiOswwhoZqjhcjzbzc:localhost:8800 'Q!aaRwQZdNAliyvRHpjs:localhost:8800j'Q!aaRwQZdNAliyvRHpjs:localhost:8800W'Q!aaRwQZdNAliyvRHpjs:localhost:8800V'Q!aaRwQZdNAliyvRHpjs:localhost:8800U'Q!aaRwQZdNAliyvRHpjs:localhost:8800T'Q!aaRwQZdNAliyvRHpjs:localhost:8800S'Q!aaRwQZdNAliyvRHpjs:localhost:8800R'Q!aaRwQZdNAliyvRHpjs:localhost:8800Q'Q!aaRwQZdNAliyvRHpjs:localhost:8800P'Q!aaRwQZdNAliyvRHpjs:localhost:8800O'Q!aaRwQZdNAliyvRHpjs:localhost:8800N'Q!aaRwQZdNAliyvRHpjs:localhost:8800M'Q!aaRwQZdNAliyvRHpjs:localhost:8800L'Q!aaRwQZdNAliyvRHpjs:localhost:8800K'Q!aaRwQZdNAliyvRHpjs:localhost:8800J'Q!aaRwQZdNAliyvRHpjs:localhost:8800I'Q!aaRwQZdNAliyvRHpjs:localhost:8800H'Q!aZwMKYDXJRlSKjQNWM:localhost:8800q'Q!aZwMKYDXJRlSKjQNWM:localhost:8800p'Q!aZwMKYDXJRlSKjQNWM:localhost:8800o'Q!aZwMKYDXJRlSKjQNWM:localhost:8800n'Q!aZwMKYDXJRlSKjQNWM:localhost:8800m'Q!aZwMKYDXJRlSKjQNWM:localhost:8800l'Q!aZwMKYDXJRlSKjQNWM:localhost:8800k'Q!aZwMKYDXJRlSKjQNWM:localhost:8800j'Q!aWvVRVaDflYyyGTOdD:localhost:8800g'Q!aWvVRVaDflYyyGTOdD:localhost:8800f'Q!aWvVRVaDflYyyGTOdD:localhost:8800e'Q!aWvVRVaDflYyyGTOdD:localhost:8800d'Q!aWvVRVaDflYyyGTOdD:localhost:8800c'Q!aWvVRVaDflYyyGTOdD:localhost:8800b'Q!aWvVRVaDflYyyGTOdD:localhost:8800a'Q!aWvVRVaDflYyyGTOdD:localhost:8800`'Q!aWvVRVaDflYyyGTOdD:localhost:8800_'Q!aWvVRVaDflYyyGTOdD:localhost:8800^'Q!aWvVRVaDflYyyGTOdD:localhost:8800]'Q!aWvVRVaDflYyyGTOdD:localhost:8800\&Q!aWbcZNVBalJilCEsdr:localhost:8800&Q!aWbcZNVBalJilCEsdr:localhost:8800~&Q!aWbcZNVBalJilCEsdr:localhost:8800}&Q!aWbcZNVBalJilCEsdr:localhost:8800|&Q!aWbcZNVBalJilCEsdr:localhost:8800{&Q!aWJOsiuJONOvjKWEjO:localhost:8800b&Q!aWJOsiuJONOvjKWEjO:localhost:8800a a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cRbfhxZdPstEsPGPAu:localhost:8800 'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 O'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 N'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 M'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 L'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 K'Q!cOFSwLSkxZECJMvjjZ:localhost:8800 J'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cHtqiAyCHEAoBIbCmL:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!cGkVFpidyBBxUxsszG:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bzPCFeFSMbCESvNbxl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800'Q!bnTuVBaAJTPbcYZtRl:localhost:8800 'Q!bnTuVBaAJTPbcYZtRl:localhost:8800 'Q!bnTuVBaAJTPbcYZtRl:localhost:8800 'Q!bkwyieHZwSMJfuSKvV:localhost:8800D'Q!bkwyieHZwSMJfuSKvV:localhost:8800C'Q!bkwyieHZwSMJfuSKvV:localhost:8800B'Q!bkwyieHZwSMJfuSKvV:localhost:8800A'Q!bkwyieHZwSMJfuSKvV:localhost:8800@'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!bjdLCdBwkKaihRIRFG:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!biBIcqnGelHvLnpkOu:localhost:8800 'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!beBXQofoOfxNBtzsut:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bQDOrbAknnQZfUbhgS:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bOSxzttDtclnrWnLov:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!bNSXSTadOMhIrYpMzH:localhost:8800'Q!cRbfhxZdPstEsPGPAu:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!dvZnfJonDkxlrrDXUk:localhost:8800 'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!duCKuavMBSfRbTFPsc:localhost:8800'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!drnXStKXkNQkouqUAg:localhost:8800 'Q!dnZVySJLGNtUKsSgXW:localhost:8800/'Q!dnZVySJLGNtUKsSgXW:localhost:8800.'Q!dnZVySJLGNtUKsSgXW:localhost:8800-'Q!dnZVySJLGNtUKsSgXW:localhost:8800,'Q!dnZVySJLGNtUKsSgXW:localhost:8800+'Q!dnZVySJLGNtUKsSgXW:localhost:8800*'Q!djwLhpJUYOKsgQtrky:localhost:8800I'Q!djwLhpJUYOKsgQtrky:localhost:8800H'Q!djwLhpJUYOKsgQtrky:localhost:8800G'Q!djwLhpJUYOKsgQtrky:localhost:8800F'Q!djwLhpJUYOKsgQtrky:localhost:8800E'Q!dWgOTucBVQBKZjfndN:localhost:8800m'Q!dWgOTucBVQBKZjfndN:localhost:8800l'Q!dWgOTucBVQBKZjfndN:localhost:8800k'Q!dWgOTucBVQBKZjfndN:localhost:8800j'Q!dWgOTucBVQBKZjfndN:localhost:8800i'Q!dWgOTucBVQBKZjfndN:localhost:8800h'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dUnULFLGtgaVdwHtnz:localhost:8800'Q!dDqNKNFdIjCAwnyaxp:localhost:8800E'Q!dDqNKNFdIjCAwnyaxp:localhost:8800D'Q!dDqNKNFdIjCAwnyaxp:localhost:8800C'Q!dDqNKNFdIjCAwnyaxp:localhost:8800B'Q!dDqNKNFdIjCAwnyaxp:localhost:8800A'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!dBfASZrfiFeSKTjYJm:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!cvXpMzcxNNhsNttxvt:localhost:8800 'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!csWEXfVEVxdviNvgAd:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!cosGKKhHvKaVukBCic:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!coGyOAgYnlBZAqznax:localhost:8800'Q!cidyuyekVzJHHvyomb:localhost:8800 A'Q!cidyuyekVzJHHvyomb:localhost:8800 @'Q!cidyuyekVzJHHvyomb:localhost:8800 ?'Q!cidyuyekVzJHHvyomb:localhost:8800 >'Q!cidyuyekVzJHHvyomb:localhost:8800 ='Q!cidyuyekVzJHHvyomb:localhost:8800 <'Q!cSUQGmpIsSCBAVTOHo:localhost:8800W'Q!cSUQGmpIsSCBAVTOHo:localhost:8800V'Q!cSUQGmpIsSCBAVTOHo:localhost:8800U'Q!cSUQGmpIsSCBAVTOHo:localhost:8800T'Q!cSUQGmpIsSCBAVTOHo:localhost:8800S'Q!cSUQGmpIsSCBAVTOHo:localhost:8800R'Q!eGEEtFXUXuZDImkeql:localhost:8800 A a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!erBPdgtUsiOfIKUkho:localhost:8800r'Q!erBPdgtUsiOfIKUkho:localhost:8800q'Q!erBPdgtUsiOfIKUkho:localhost:8800p'Q!erBPdgtUsiOfIKUkho:localhost:8800o'Q!erBPdgtUsiOfIKUkho:localhost:8800n'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egbhiBqOGhloZzopol:localhost:8800'Q!egCvzKpbEwmuvDoBTb:localhost:8800s'Q!egCvzKpbEwmuvDoBTb:localhost:8800r'Q!egCvzKpbEwmuvDoBTb:localhost:8800q'Q!egCvzKpbEwmuvDoBTb:localhost:8800p'Q!egCvzKpbEwmuvDoBTb:localhost:8800o'Q!egCvzKpbEwmuvDoBTb:localhost:8800n'Q!egCvzKpbEwmuvDoBTb:localhost:8800m'Q!egCvzKpbEwmuvDoBTb:localhost:8800l'Q!egCvzKpbEwmuvDoBTb:localhost:8800k'Q!egCvzKpbEwmuvDoBTb:localhost:8800j'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!edbUkYJIZBNOiTuLJs:localhost:8800'Q!eZjhYVNpwdogVDKHCk:localhost:8800 z'Q!eZjhYVNpwdogVDKHCk:localhost:8800 w'Q!eZjhYVNpwdogVDKHCk:localhost:8800 v'Q!eZjhYVNpwdogVDKHCk:localhost:8800 u'Q!eZjhYVNpwdogVDKHCk:localhost:8800 t'Q!eZjhYVNpwdogVDKHCk:localhost:8800 s'Q!eZjhYVNpwdogVDKHCk:localhost:8800 r'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!eWRdwtyqHvuxZFvhNS:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!ePtMOPPOgOcBIMNZpn:localhost:8800'Q!eLsrBEnrHolwCNgkFW:localhost:8800#'Q!eLsrBEnrHolwCNgkFW:localhost:8800"'Q!eLsrBEnrHolwCNgkFW:localhost:8800!'Q!eLsrBEnrHolwCNgkFW:localhost:8800 'Q!eLsrBEnrHolwCNgkFW:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eKrOqiOabJcMgIJjwC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eJPTUgihvSwaOhIkrC:localhost:8800'Q!eGEEtFXUXuZDImkeql:localhost:8800 I'Q!eGEEtFXUXuZDImkeql:localhost:8800 H'Q!eGEEtFXUXuZDImkeql:localhost:8800 G'Q!eGEEtFXUXuZDImkeql:localhost:8800 F'Q!eGEEtFXUXuZDImkeql:localhost:8800 E'Q!eGEEtFXUXuZDImkeql:localhost:8800 D'Q!eGEEtFXUXuZDImkeql:localhost:8800 C'Q!eySSVuCclRpBDgwKIU:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!hFwigdYZkwYNSwelRH:localhost:8800 g'Q!hFwigdYZkwYNSwelRH:localhost:8800 f'Q!hFwigdYZkwYNSwelRH:localhost:8800 e'Q!hFwigdYZkwYNSwelRH:localhost:8800 d'Q!hFwigdYZkwYNSwelRH:localhost:8800 c'Q!hFwigdYZkwYNSwelRH:localhost:8800 b'Q!hFwigdYZkwYNSwelRH:localhost:8800 a'Q!hFwigdYZkwYNSwelRH:localhost:8800 `'Q!hFwigdYZkwYNSwelRH:localhost:8800 _'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!hDAzBWYEyRVBRlrCHh:localhost:8800'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!gXfXRDTXeVvOHQdaaQ:localhost:8800 'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fuHSJcznvGQnoYoLPW:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fsbkkRBZlUcBVVfMME:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!fkvdYkesQOFCAQkzky:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!ffijTnPMbTrDXHqOXf:localhost:8800'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fdEymmlcUvjgshvVyl:localhost:8800 'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800'Q!fcdNYFWFyxmdpKAknc:localhost:8800~'Q!fcdNYFWFyxmdpKAknc:localhost:8800}'Q!fcdNYFWFyxmdpKAknc:localhost:8800|'Q!fcdNYFWFyxmdpKAknc:localhost:8800{'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fOJLpnbtgKNxxVDquX:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fJXiUpbbOlLbHWmPgs:localhost:8800'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fGkUEndqGrieltwbCh:localhost:8800 'Q!fDISaqNBhlOwherxSt:localhost:8800 <'Q!fDISaqNBhlOwherxSt:localhost:8800 ;'Q!fDISaqNBhlOwherxSt:localhost:8800 :'Q!fDISaqNBhlOwherxSt:localhost:8800 9'Q!fDISaqNBhlOwherxSt:localhost:8800 8'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!eySSVuCclRpBDgwKIU:localhost:8800'Q!hFwigdYZkwYNSwelRH:localhost:8800 h a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!ifQxHmNAcSSGHVMjfi:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!icheSPMgpemswIdQkw:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iTQSCiLqRMDtgXtUdC:localhost:8800'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iLHJbsFszubrnybDNz:localhost:8800 'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!iKezIvJyjkNqKayFju:localhost:8800'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hrhDJbmXvXBizKoiiK:localhost:8800 'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hnQOBexFYpvJntEChZ:localhost:8800'Q!hgjYwwwjWJNgwrzOto:localhost:88008'Q!hgjYwwwjWJNgwrzOto:localhost:88007'Q!hgjYwwwjWJNgwrzOto:localhost:88006'Q!hgjYwwwjWJNgwrzOto:localhost:88005'Q!hgjYwwwjWJNgwrzOto:localhost:88004'Q!hgjYwwwjWJNgwrzOto:localhost:88003'Q!hgjYwwwjWJNgwrzOto:localhost:88002'Q!hgjYwwwjWJNgwrzOto:localhost:88001'Q!hgjYwwwjWJNgwrzOto:localhost:88000'Q!hegUPDZCEEmBhsNJJR:localhost:8800 'Q!hegUPDZCEEmBhsNJJR:localhost:8800 'Q!hegUPDZCEEmBhsNJJR:localhost:8800 'Q!hegUPDZCEEmBhsNJJR:localhost:8800 ~'Q!hegUPDZCEEmBhsNJJR:localhost:8800 }'Q!hZuwenlFDapIPBOyfi:localhost:8800 'Q!hZuwenlFDapIPBOyfi:localhost:8800 'Q!hZuwenlFDapIPBOyfi:localhost:8800 'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hZuwenlFDapIPBOyfi:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hYPSaMPGsLnvYSmwhg:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hWHyATwKfuznrqTiyu:localhost:8800'Q!hSzBsirdPWHtVjagXn:localhost:8800g'Q!hSzBsirdPWHtVjagXn:localhost:8800f'Q!hSzBsirdPWHtVjagXn:localhost:8800e'Q!hSzBsirdPWHtVjagXn:localhost:8800d'Q!hSzBsirdPWHtVjagXn:localhost:8800c'Q!hSzBsirdPWHtVjagXn:localhost:8800b'Q!hNCwypIzdDZDVmCEfd:localhost:8800 }'Q!hNCwypIzdDZDVmCEfd:localhost:8800 |'Q!hNCwypIzdDZDVmCEfd:localhost:8800 {'Q!hNCwypIzdDZDVmCEfd:localhost:8800 y'Q!hNCwypIzdDZDVmCEfd:localhost:8800 x'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!hGsPmWXboxZZtOlsxY:localhost:8800 'Q!ifQxHmNAcSSGHVMjfi:localhost:8800 a`8pH X 0  h @  x P ( ` 8  q J #`9vO(`8pH X0h@xP(`8'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kOmCTyiizHqfCJdhlR:localhost:8800'Q!kAxKaIQhXTtGFWSUgr:localhost:8800>'Q!kAxKaIQhXTtGFWSUgr:localhost:8800='Q!kAxKaIQhXTtGFWSUgr:localhost:8800<'Q!kAxKaIQhXTtGFWSUgr:localhost:8800;'Q!kAxKaIQhXTtGFWSUgr:localhost:8800:'Q!kAxKaIQhXTtGFWSUgr:localhost:88009'Q!kAxKaIQhXTtGFWSUgr:localhost:88008'Q!kAxKaIQhXTtGFWSUgr:localhost:88007'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jveVPZSXJOJyNDebPO:localhost:8800'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jomrpmwwQQtghscizn:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jlGSdNttccYxjfLkwW:localhost:8800 'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800'Q!jfshVGNDxkvqPxFxWB:localhost:8800&Q!jYzridjeihmwPBuwLb:localhost:8800S&Q!jYzridjeihmwPBuwLb:localhost:8800R&Q!jYzridjeihmwPBuwLb:localhost:8800Q&Q!jYzridjeihmwPBuwLb:localhost:8800P&Q!jYzridjeihmwPBuwLb:localhost:8800O&Q!jYzridjeihmwPBuwLb:localhost:8800N&Q!jYzridjeihmwPBuwLb:localhost:8800M&Q!jYzridjeihmwPBuwLb:localhost:8800L&Q!jYzridjeihmwPBuwLb:localhost:8800K&Q!jYzridjeihmwPBuwLb:localhost:8800J&Q!jYzridjeihmwPBuwLb:localhost:8800I&Q!jYzridjeihmwPBuwLb:localhost:8800H&Q!jYzridjeihmwPBuwLb:localhost:8800G&Q!jYzridjeihmwPBuwLb:localhost:8800F&Q!jYzridjeihmwPBuwLb:localhost:8800E&Q!jYzridjeihmwPBuwLb:localhost:8800D'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 -'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 ,'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 +'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 *'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 )'Q!jRuDexjFzIDOKbwDJQ:localhost:8800 ('Q!jRuDexjFzIDOKbwDJQ:localhost:8800 ''Q!jRuDexjFzIDOKbwDJQ:localhost:8800 &'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jIfvTrwedrWLubsnlM:localhost:8800'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jGQNGXehugtTvjUGKI:localhost:8800 'Q!jDKAOtmeAGbYTpwyEW:localhost:8800:'Q!jDKAOtmeAGbYTpwyEW:localhost:88009'Q!jDKAOtmeAGbYTpwyEW:localhost:88008'Q!jDKAOtmeAGbYTpwyEW:localhost:88007'Q!jDKAOtmeAGbYTpwyEW:localhost:88006'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itfjLXhEaORJLkbfVS:localhost:8800 'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!itKDOCtoMkFUETDtle:localhost:8800'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!ijOiudvuzOLNmgNKfG:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800  a`8pH X 0  h @  x P ( ` 8  p H ]6qI!Y1 iAyQ)a9qI!Y1 &Q!loalEsWaTYwrVUNJLr:localhost:8800"&Q!loalEsWaTYwrVUNJLr:localhost:8800!'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!lgejtcwlywOoIXwEgy:localhost:8800 'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!laUExtszUaoCpZoyEq:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lMRBkbYJDQHgdBZBFJ:localhost:8800'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lEJUJZxqZPKZetemiR:localhost:8800 'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800'Q!lAGTcYIuMBXsVRGCOe:localhost:8800&Q!kxTDuIasPNpXtiRsif:localhost:8800z&Q!kxTDuIasPNpXtiRsif:localhost:8800y&Q!kxTDuIasPNpXtiRsif:localhost:8800x&Q!kxTDuIasPNpXtiRsif:localhost:8800w&Q!kxTDuIasPNpXtiRsif:localhost:8800v&Q!kxTDuIasPNpXtiRsif:localhost:8800u&Q!kxTDuIasPNpXtiRsif:localhost:8800t&Q!kxTDuIasPNpXtiRsif:localhost:8800s&Q!kxTDuIasPNpXtiRsif:localhost:8800r'Q!kwXxkGQFkaeenFTQJr:localhost:8800m'Q!kwXxkGQFkaeenFTQJr:localhost:8800l'Q!kwXxkGQFkaeenFTQJr:localhost:8800k'Q!kwXxkGQFkaeenFTQJr:localhost:8800j'Q!kwXxkGQFkaeenFTQJr:localhost:8800i'Q!kwXxkGQFkaeenFTQJr:localhost:8800h'Q!kwXxkGQFkaeenFTQJr:localhost:8800g'Q!kwXxkGQFkaeenFTQJr:localhost:8800f'Q!kwJgbtogEzCqYbUXfh:localhost:88001'Q!kwJgbtogEzCqYbUXfh:localhost:88000'Q!kwJgbtogEzCqYbUXfh:localhost:8800/'Q!kwJgbtogEzCqYbUXfh:localhost:8800.'Q!kwJgbtogEzCqYbUXfh:localhost:8800-'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800 'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!krhefVncoErkCtnvsy:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kpTPWDZdBbbXKLonZK:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kkgEEVUJynguTqAoWD:localhost:8800'Q!kjueCKHmYaYefEEpQY:localhost:8800@'Q!kjueCKHmYaYefEEpQY:localhost:8800?'Q!kjueCKHmYaYefEEpQY:localhost:8800>'Q!kjueCKHmYaYefEEpQY:localhost:8800='Q!kjueCKHmYaYefEEpQY:localhost:8800<'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 'Q!kjjUsMowsioSQRIJeg:localhost:8800 &Q!loalEsWaTYwrVUNJLr:localhost:8800# aa9qI! Y 1 i A  y Q )  a 9  q I !Y1 iAyQ)a9qI!Y1 iAyQ)'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!ntuwVdUxfzNIhIKYaz:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nteAxExBGJfaGIpuCx:localhost:8800'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 l'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 k'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 j'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 i'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 h'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 g'Q!nhbUIcIbhuXkRqfeDa:localhost:8800 f'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nfxDdcgDfooxyiAzaB:localhost:8800 'Q!nftGLlLhVgzOwOFufp:localhost:8800;'Q!nftGLlLhVgzOwOFufp:localhost:8800:'Q!nftGLlLhVgzOwOFufp:localhost:88009'Q!nftGLlLhVgzOwOFufp:localhost:88008'Q!nftGLlLhVgzOwOFufp:localhost:88007'Q!mvgUHEsfGqDkPQUvfG:localhost:8800{'Q!mvgUHEsfGqDkPQUvfG:localhost:8800z'Q!mvgUHEsfGqDkPQUvfG:localhost:8800y'Q!mvgUHEsfGqDkPQUvfG:localhost:8800x'Q!mvgUHEsfGqDkPQUvfG:localhost:8800w'Q!mvgUHEsfGqDkPQUvfG:localhost:8800v'Q!mvgUHEsfGqDkPQUvfG:localhost:8800u'Q!mvgUHEsfGqDkPQUvfG:localhost:8800t'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!msMfSdLIAvklSSAnci:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mogJVPxghalmKbblUq:localhost:8800'Q!mfzIRinBAGGrZvQAuI:localhost:8800a'Q!mfzIRinBAGGrZvQAuI:localhost:8800`'Q!mfzIRinBAGGrZvQAuI:localhost:8800_'Q!mfzIRinBAGGrZvQAuI:localhost:8800^'Q!mfzIRinBAGGrZvQAuI:localhost:8800]'Q!mfzIRinBAGGrZvQAuI:localhost:8800\'Q!mTlCLZQCmfDuQsJxxp:localhost:8800g'Q!mTlCLZQCmfDuQsJxxp:localhost:8800f'Q!mTlCLZQCmfDuQsJxxp:localhost:8800e'Q!mTlCLZQCmfDuQsJxxp:localhost:8800d'Q!mTlCLZQCmfDuQsJxxp:localhost:8800c'Q!mTlCLZQCmfDuQsJxxp:localhost:8800b'Q!mTlCLZQCmfDuQsJxxp:localhost:8800a'Q!mTlCLZQCmfDuQsJxxp:localhost:8800`'Q!mOrKBPhetifKHDmElM:localhost:8800*'Q!mOrKBPhetifKHDmElM:localhost:8800('Q!mOrKBPhetifKHDmElM:localhost:8800''Q!mOrKBPhetifKHDmElM:localhost:8800&'Q!mOrKBPhetifKHDmElM:localhost:8800%'Q!mOrKBPhetifKHDmElM:localhost:8800$'Q!mOrKBPhetifKHDmElM:localhost:8800#'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mMsxpaIlcykPuOnDyl:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800 'Q!mBQpGaIiadEuKBXfOw:localhost:8800'Q!mBQpGaIiadEuKBXfOw:localhost:8800&Q!loalEsWaTYwrVUNJLr:localhost:8800% a`8pH X 0  h @  z S ,  f >  v N &^6nF~V.f>vN&^6nG ]5 'Q!qInWQPtNQfBFoVzUtP:localhost:8800 I'Q!qInWQPtNQfBFoVzUtP:localhost:8800 H'Q!qInWQPtNQfBFoVzUtP:localhost:8800 G&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800&Q!plcvCHNbjCkNMMxnTk:localhost:8800'Q!peJMRJtXBvIiCttNmm:localhost:8800 w'Q!peJMRJtXBvIiCttNmm:localhost:8800 v'Q!peJMRJtXBvIiCttNmm:localhost:8800 u'Q!peJMRJtXBvIiCttNmm:localhost:8800 t'Q!peJMRJtXBvIiCttNmm:localhost:8800 s'Q!pduebXnTyxQWVxEICp:localhost:8800 ;'Q!pduebXnTyxQWVxEICp:localhost:8800 :'Q!pduebXnTyxQWVxEICp:localhost:8800 9'Q!pduebXnTyxQWVxEICp:localhost:8800 8'Q!pduebXnTyxQWVxEICp:localhost:8800 7'Q!pduebXnTyxQWVxEICp:localhost:8800 6'Q!paDmNxsOZIKyApbxXs:localhost:8800 ^'Q!paDmNxsOZIKyApbxXs:localhost:8800 ]'Q!paDmNxsOZIKyApbxXs:localhost:8800 \'Q!paDmNxsOZIKyApbxXs:localhost:8800 ['Q!paDmNxsOZIKyApbxXs:localhost:8800 Z'Q!paDmNxsOZIKyApbxXs:localhost:8800 Y'Q!paDmNxsOZIKyApbxXs:localhost:8800 X'Q!paDmNxsOZIKyApbxXs:localhost:8800 W'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pUSFAnuwUuMlbiInDR:localhost:8800'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pTvdDtkgovsIdAdxCm:localhost:8800 'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800'Q!pJUItjYTOUJQFIxyiX:localhost:8800~'Q!pJUItjYTOUJQFIxyiX:localhost:8800}'Q!pJUItjYTOUJQFIxyiX:localhost:8800|'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 -'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 ,'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 +'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 *'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 )'Q!pHoEnhQYhwlbJXqKQE:localhost:8800 ('Q!pHoEnhQYhwlbJXqKQE:localhost:8800 ''Q!oznZaCpONuNDaLarkI:localhost:8800)'Q!oznZaCpONuNDaLarkI:localhost:8800('Q!oznZaCpONuNDaLarkI:localhost:8800''Q!oznZaCpONuNDaLarkI:localhost:8800&'Q!oznZaCpONuNDaLarkI:localhost:8800%'Q!oznZaCpONuNDaLarkI:localhost:8800$'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800'Q!ozgnwUlebxvzLVwyHW:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800&Q!odAvowLhHJcmkKlxFk:localhost:8800'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oZGRyBAkNDrEeiAqWL:localhost:8800 'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800'Q!oXKJArsPmtgaYANBrg:localhost:8800~'Q!oXKJArsPmtgaYANBrg:localhost:8800}'Q!oXKJArsPmtgaYANBrg:localhost:8800|'Q!oXKJArsPmtgaYANBrg:localhost:8800{'Q!oXKJArsPmtgaYANBrg:localhost:8800z'Q!oXKJArsPmtgaYANBrg:localhost:8800y'Q!oXKJArsPmtgaYANBrg:localhost:8800x'Q!oXKJArsPmtgaYANBrg:localhost:8800w'Q!oXKJArsPmtgaYANBrg:localhost:8800v'Q!oXKJArsPmtgaYANBrg:localhost:8800u'Q!oXKJArsPmtgaYANBrg:localhost:8800t'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nxLxsxzliamzflrEBs:localhost:8800'Q!nvclDopiBLEOKBIheH:localhost:8800'Q!qInWQPtNQfBFoVzUtP:localhost:8800 J a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!raCWVWQGnXbmkexpCN:localhost:88006'Q!raCWVWQGnXbmkexpCN:localhost:88005'Q!raCWVWQGnXbmkexpCN:localhost:88004'Q!raCWVWQGnXbmkexpCN:localhost:88003'Q!raCWVWQGnXbmkexpCN:localhost:88002'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rZWweGEChkxxtzyfDB:localhost:8800'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWmvvGBgmFMdVvcfPk:localhost:8800 'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800'Q!rWGwSSefrZzQYCYFHs:localhost:8800~'Q!rWGwSSefrZzQYCYFHs:localhost:8800}'Q!rWGwSSefrZzQYCYFHs:localhost:8800|'Q!rWGwSSefrZzQYCYFHs:localhost:8800{'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rQeYcODvQiLsOIbQrJ:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!rJhSRzmWBQHlIhuDXT:localhost:8800'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzurjQHmiriwjaUMhO:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qzrZzAieCgGSbpKOQR:localhost:8800 'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!qxqNYKdtgvOQdhmgsj:localhost:8800'Q!quaZwrGnzbNWhwAOYB:localhost:8800x'Q!quaZwrGnzbNWhwAOYB:localhost:8800w'Q!quaZwrGnzbNWhwAOYB:localhost:8800v'Q!quaZwrGnzbNWhwAOYB:localhost:8800u'Q!quaZwrGnzbNWhwAOYB:localhost:8800t'Q!quaZwrGnzbNWhwAOYB:localhost:8800s'Q!quaZwrGnzbNWhwAOYB:localhost:8800r'Q!quaZwrGnzbNWhwAOYB:localhost:8800q'Q!qtelAHlSkrqEFmlCqS:localhost:8800 *'Q!qtelAHlSkrqEFmlCqS:localhost:8800 )'Q!qtelAHlSkrqEFmlCqS:localhost:8800 ('Q!qtelAHlSkrqEFmlCqS:localhost:8800 ''Q!qtelAHlSkrqEFmlCqS:localhost:8800 &'Q!qtelAHlSkrqEFmlCqS:localhost:8800 %'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qjijQBfMwsCPTVgKPm:localhost:8800 'Q!qSUSLLWjDxcGibUZdT:localhost:8800/'Q!qSUSLLWjDxcGibUZdT:localhost:8800.'Q!qSUSLLWjDxcGibUZdT:localhost:8800-'Q!qSUSLLWjDxcGibUZdT:localhost:8800,'Q!qSUSLLWjDxcGibUZdT:localhost:8800+'Q!qSUSLLWjDxcGibUZdT:localhost:8800*'Q!qInWQPtNQfBFoVzUtP:localhost:8800 L'Q!rpVYLTJGcFNdGzFzXj:localhost:8800 a`8pH X 0  h @  x P ( ` 8  t M &c<vN&^6nF~V.f>vN&^6'Q!taANXnGBZntAreRurn:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 r'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 q'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 p'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 o'Q!tPkCGJBKmqUXJoRrnY:localhost:8800 n'Q!tLkhTnTgDjjAvscRkW:localhost:8800C'Q!tLkhTnTgDjjAvscRkW:localhost:8800B'Q!tLkhTnTgDjjAvscRkW:localhost:8800A'Q!tLkhTnTgDjjAvscRkW:localhost:8800@'Q!tLkhTnTgDjjAvscRkW:localhost:8800?'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!tDsPLsKOLPePtEWRwn:localhost:8800'Q!svYOOXWZHtQQzlMcEP:localhost:8800['Q!svYOOXWZHtQQzlMcEP:localhost:8800Z'Q!svYOOXWZHtQQzlMcEP:localhost:8800Y'Q!svYOOXWZHtQQzlMcEP:localhost:8800X'Q!svYOOXWZHtQQzlMcEP:localhost:8800W'Q!svYOOXWZHtQQzlMcEP:localhost:8800V'Q!svYOOXWZHtQQzlMcEP:localhost:8800U'Q!svYOOXWZHtQQzlMcEP:localhost:8800T'Q!sqkBzbHHJOTNWwynqV:localhost:8800 U'Q!sqkBzbHHJOTNWwynqV:localhost:8800 T'Q!sqkBzbHHJOTNWwynqV:localhost:8800 S'Q!sqkBzbHHJOTNWwynqV:localhost:8800 R'Q!sqkBzbHHJOTNWwynqV:localhost:8800 Q'Q!sqkBzbHHJOTNWwynqV:localhost:8800 P'Q!sqkBzbHHJOTNWwynqV:localhost:8800 O'Q!sqkBzbHHJOTNWwynqV:localhost:8800 N'Q!sqkBzbHHJOTNWwynqV:localhost:8800 M'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800'Q!sfXbvAcOUJhzGwWEpZ:localhost:8800&Q!scyFsXcUIJiLIMwWMY:localhost:8800g&Q!scyFsXcUIJiLIMwWMY:localhost:8800f&Q!scyFsXcUIJiLIMwWMY:localhost:8800e&Q!scyFsXcUIJiLIMwWMY:localhost:8800d&Q!scyFsXcUIJiLIMwWMY:localhost:8800c&Q!sPWVGnipjiiWQpywNO:localhost:88008&Q!sPWVGnipjiiWQpywNO:localhost:88007&Q!sPWVGnipjiiWQpywNO:localhost:88006&Q!sPWVGnipjiiWQpywNO:localhost:88005&Q!sPWVGnipjiiWQpywNO:localhost:88004&Q!sPWVGnipjiiWQpywNO:localhost:88003&Q!sPWVGnipjiiWQpywNO:localhost:88002&Q!sPWVGnipjiiWQpywNO:localhost:88001&Q!sPWVGnipjiiWQpywNO:localhost:88000'Q!sJnuQYOyruhUpXDsLY:localhost:8800V'Q!sJnuQYOyruhUpXDsLY:localhost:8800U'Q!sJnuQYOyruhUpXDsLY:localhost:8800T'Q!sJnuQYOyruhUpXDsLY:localhost:8800S'Q!sJnuQYOyruhUpXDsLY:localhost:8800R'Q!sJnuQYOyruhUpXDsLY:localhost:8800Q'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sHRHoXzYrrPSlWBkoh:localhost:8800'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 q'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 p'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 o'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 n'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 m'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 l'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 k'Q!sBcwyPoXKgnSGVTjNR:localhost:8800 j'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!sAWFpvSUPExZLVcPEd:localhost:8800 'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rwUuVBrftGHDBOlEZm:localhost:8800'Q!rpVYLTJGcFNdGzFzXj:localhost:8800'Q!taANXnGBZntAreRurn:localhost:8800  a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH!]5 mE}U-'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vBvlJEXUSQKUYmsKcO:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800'Q!vAUAIZrCnHTeMGeNuw:localhost:8800&Q!uxKymrHZeXRYCZwekU:localhost:8800=&Q!uxKymrHZeXRYCZwekU:localhost:8800<&Q!uxKymrHZeXRYCZwekU:localhost:8800;&Q!uxKymrHZeXRYCZwekU:localhost:8800:&Q!uxKymrHZeXRYCZwekU:localhost:88009'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!utJsNQubeIXvcTKGpx:localhost:8800'Q!uqIEMXzdeNeXdJmuwh:localhost:8800S'Q!uqIEMXzdeNeXdJmuwh:localhost:8800R'Q!uqIEMXzdeNeXdJmuwh:localhost:8800Q'Q!uqIEMXzdeNeXdJmuwh:localhost:8800P'Q!uqIEMXzdeNeXdJmuwh:localhost:8800O'Q!uqIEMXzdeNeXdJmuwh:localhost:8800N'Q!uqIEMXzdeNeXdJmuwh:localhost:8800M'Q!uqIEMXzdeNeXdJmuwh:localhost:8800L'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ulbQzxdPXzuvNoqqgU:localhost:8800 'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!ubmTdQFAhrhZkGULDx:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uSBqTezaFcMnlowsEf:localhost:8800'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 ~'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 }'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 |'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 {'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 z'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 y'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 x'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 w'Q!uPxXJHJyFQwvpQLZNs:localhost:8800 v'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uJtKGXTNdEnCPNOGDx:localhost:8800'Q!uGpSboYkgxVNOqNeUG:localhost:8800 X'Q!uGpSboYkgxVNOqNeUG:localhost:8800 W'Q!uGpSboYkgxVNOqNeUG:localhost:8800 V'Q!uGpSboYkgxVNOqNeUG:localhost:8800 U'Q!uGpSboYkgxVNOqNeUG:localhost:8800 T'Q!uGpSboYkgxVNOqNeUG:localhost:8800 S'Q!uGpSboYkgxVNOqNeUG:localhost:8800 R'Q!uGpSboYkgxVNOqNeUG:localhost:8800 Q'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tkajvIKHoOMWGsReBs:localhost:8800'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!tcYctHPiaKzsKgrXlU:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!taANXnGBZntAreRurn:localhost:8800 'Q!vJQYmOxOBLwFKzYkNj:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8pH X0h@xP('Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wBBQYEPjQGnoAzDpEu:localhost:8800 'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!wAyboOFgsOPwkmgMAI:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vyCFfUTJKYJSDadFhT:localhost:8800'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vxEMWYTUdzvLyVZNzJ:localhost:8800 'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vttkrtSyHEJXVMlvLo:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vpuivIQDEhyuhOLWpg:localhost:8800'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 4'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 3'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 2'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 1'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 0'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 /'Q!vnFXnkCSfTbsSNKrtg:localhost:8800 .'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vZGjXEXQoCaoUXnkCa:localhost:8800 'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vVmSdclwPIqYDbnmPn:localhost:8800'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRmMcoJDeCupADwqac:localhost:8800 'Q!vRRNxNyGboLHNhqQvr:localhost:8800 'Q!vRRNxNyGboLHNhqQvr:localhost:8800 'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vRRNxNyGboLHNhqQvr:localhost:8800'Q!vOfeZvbtpuHfoqShFl:localhost:8800S'Q!vOfeZvbtpuHfoqShFl:localhost:8800R'Q!vOfeZvbtpuHfoqShFl:localhost:8800Q'Q!vOfeZvbtpuHfoqShFl:localhost:8800P'Q!vOfeZvbtpuHfoqShFl:localhost:8800O'Q!vOfeZvbtpuHfoqShFl:localhost:8800N'Q!vOfeZvbtpuHfoqShFl:localhost:8800M'Q!vOfeZvbtpuHfoqShFl:localhost:8800L'Q!vOfeZvbtpuHfoqShFl:localhost:8800K'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!vJQYmOxOBLwFKzYkNj:localhost:8800'Q!wBkUBAjOznOyxrLchl:localhost:8800 a`8pH X 0  h @  x P ( ` 8  p H Z3 mE}U-e=uM%a:rJ"Z2 'Q!yLccBXjjEasExpsXlt:localhost:8800*'Q!yLccBXjjEasExpsXlt:localhost:8800)'Q!yAzXcNLHMuqFOcOexj:localhost:8800K'Q!yAzXcNLHMuqFOcOexj:localhost:8800J'Q!yAzXcNLHMuqFOcOexj:localhost:8800I'Q!yAzXcNLHMuqFOcOexj:localhost:8800H'Q!yAzXcNLHMuqFOcOexj:localhost:8800G'Q!yAzXcNLHMuqFOcOexj:localhost:8800F'Q!yAzXcNLHMuqFOcOexj:localhost:8800E'Q!yAzXcNLHMuqFOcOexj:localhost:8800D'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 7'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 6'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 5'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 4'Q!yAfsSyqpJWFnkXQFJL:localhost:8800 3&Q!xwoIOPTGmJIlTXakxC:localhost:8800X&Q!xwoIOPTGmJIlTXakxC:localhost:8800W&Q!xwoIOPTGmJIlTXakxC:localhost:8800V&Q!xwoIOPTGmJIlTXakxC:localhost:8800U&Q!xwoIOPTGmJIlTXakxC:localhost:8800T'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xvblqEscwOtCqJntfF:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xhbvqJDfxMSsZPqvld:localhost:8800'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xcdNyJNFEdaBGFycsB:localhost:8800 'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800'Q!xXYMxashIZAUOTuGAJ:localhost:8800&Q!wvnfKBSrUlfNmYoeil:localhost:8800q&Q!wvnfKBSrUlfNmYoeil:localhost:8800p&Q!wvnfKBSrUlfNmYoeil:localhost:8800o&Q!wvnfKBSrUlfNmYoeil:localhost:8800n&Q!wvnfKBSrUlfNmYoeil:localhost:8800m'Q!wsvXTJXouVkEZcCFsD:localhost:8800>'Q!wsvXTJXouVkEZcCFsD:localhost:8800='Q!wsvXTJXouVkEZcCFsD:localhost:8800<'Q!wsvXTJXouVkEZcCFsD:localhost:8800;'Q!wsvXTJXouVkEZcCFsD:localhost:8800:'Q!wsvXTJXouVkEZcCFsD:localhost:88009'Q!wsvXTJXouVkEZcCFsD:localhost:88008'Q!wsvXTJXouVkEZcCFsD:localhost:88007'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!wnriPzXkIMmdTNoJKU:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!whuymJoLfUdkFdxoyE:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wUuodvgsmAJqKJUBCQ:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wLitJYvgvNJzanSIvO:localhost:8800'Q!wIhMbfQzYbJobPdwyi:localhost:8800^'Q!wIhMbfQzYbJobPdwyi:localhost:8800]'Q!wIhMbfQzYbJobPdwyi:localhost:8800\'Q!wIhMbfQzYbJobPdwyi:localhost:8800['Q!wIhMbfQzYbJobPdwyi:localhost:8800Z'Q!wIhMbfQzYbJobPdwyi:localhost:8800Y'Q!wIhMbfQzYbJobPdwyi:localhost:8800X'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wCsDjKBtuUbrmZgjsB:localhost:8800 'Q!wBkUBAjOznOyxrLchl:localhost:8800'Q!yLccBXjjEasExpsXlt:localhost:8800+ ``8pH X 0  h @  x P ( ` 8  p H X0h@xP(`8tM&`8tM%]5 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zoTQAhGwmDDUECKtbL:localhost:88000'Q!zoTQAhGwmDDUECKtbL:localhost:8800/'Q!zoTQAhGwmDDUECKtbL:localhost:8800.'Q!zoTQAhGwmDDUECKtbL:localhost:8800-'Q!zoTQAhGwmDDUECKtbL:localhost:8800,&Q!zhCsYcaweVFJLLNwBz:localhost:8800*&Q!zhCsYcaweVFJLLNwBz:localhost:8800)&Q!zhCsYcaweVFJLLNwBz:localhost:8800(&Q!zhCsYcaweVFJLLNwBz:localhost:8800'&Q!zhCsYcaweVFJLLNwBz:localhost:8800&'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 'Q!zScKnCZCFPIIodAiQj:localhost:8800 &Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800&Q!zNCItZNbpkZKuufRhC:localhost:8800%Q !zNCItZNbpkZKuufRhC:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zNBpypJDRMlBdOcLlW:localhost:8800'Q!zHBgbzUZHshNGZvIBS:localhost:8800 N'Q!zHBgbzUZHshNGZvIBS:localhost:8800 M'Q!zHBgbzUZHshNGZvIBS:localhost:8800 L'Q!zHBgbzUZHshNGZvIBS:localhost:8800 K'Q!zHBgbzUZHshNGZvIBS:localhost:8800 J'Q!zHBgbzUZHshNGZvIBS:localhost:8800 I'Q!zHBgbzUZHshNGZvIBS:localhost:8800 H'Q!zHBgbzUZHshNGZvIBS:localhost:8800 G'Q!zHBgbzUZHshNGZvIBS:localhost:8800 F'Q!zHBgbzUZHshNGZvIBS:localhost:8800 E'Q!zHBgbzUZHshNGZvIBS:localhost:8800 D'Q!zHBgbzUZHshNGZvIBS:localhost:8800 C'Q!zHBgbzUZHshNGZvIBS:localhost:8800 B'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!zFdNewlKnUiMBxnYrN:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!yfizglmCXdcqCgDrTr:localhost:8800'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!ybXveQoxPVhjpKHAkG:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yWhIsLsgNVGcnELrDS:localhost:8800 'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yTQmLDAxZscWKLMSWh:localhost:8800'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yNfCaBMPezurwkJRAX:localhost:8800 'Q!yLccBXjjEasExpsXlt:localhost:8800.'Q!yLccBXjjEasExpsXlt:localhost:8800-(  h`8pH X 0  h'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zuCqeooOnfWkYrQdxA:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800!'Q!zsXPhIPzeXXLvuazzQ:localhost:8800 'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zsXPhIPzeXXLvuazzQ:localhost:8800'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 'Q!zqQJfFCRlSEDPKlQPy:localhost:8800 3#Qexample.com!QWLJZmJqjWZjVOjdYF:localhost:8800$ 1#Q example.com!QWLJZmJqjWZjVOjdYF:localhost:8800 G jG?/indexdestination_rooms_room_iddestination_roomsgCREATE INDEX destination_rooms_room_id ON destination_rooms (room_id)BU/indexsqlite_autoindex_destination_rooms_1destination_roomseU//Wtabledestination_roomsdestination_roomsdCREATE TABLE destination_rooms ( -- the destination in question. destination TEXT NOT NULL REFERENCES destinations (destination), -- the ID of the room in question room_id TEXT NOT NULL REFERENCES rooms (room_id), -- the stream_ordering of the event stream_ordering BIGINT NOT NULL, PRIMARY KEY (destination, room_id) -- We don't declare a foreign key on stream_ordering here because that'd mean -- we'd need to either maintain an index (expensive) or do a table scan of -- destination_rooms whenever we delete an event (also potentially expensive). -- In addition to that, a foreign key on stream_ordering would be redundant -- as this row doesn't need to refer to a specific event; if the event gets -- deleted then it doesn't affect the validity of the stream_ordering here. )q=% indexstate_groups_room_id_idxstate_groupsACREATE INDEX state_groups_room_id_idx ON state_groups (room_id)5SAaindexfederation_stream_position_instancefederation_stream_position3CREATE UNIQUE INDEX federation_stream_position_instance ON federation_stream_position(type, instance_name)H [5indexsqlite_autoindex_ui_auth_sessions_ips_1ui_auth_sessions_ips 55/tableui_auth_sessions_ipsui_auth_sessions_ipsCREATE TABLE ui_auth_sessions_ips( session_id TEXT NOT NULL, ip TEXT NOT NULL, user_agent TEXT NOT NULL, UNIQUE (session_id, ip, user_agent), FOREIGN KEY (session_id) REFERENCES ui_auth_sessions (session_id) )] gQ indexdevice_lists_outbound_last_success_unique_idxdevice_lists_outbound_last_success2CREATE UNIQUE INDEX device_lists_outbound_last_success_unique_idx ON "device_lists_outbound_last_success" (destination, user_id)S QQtabledevice_lists_outbound_last_successdevice_lists_outbound_last_success1CREATE TABLE "device_lists_outbound_last_success" ( destination TEXT NOT NULL, user_id TEXT NOT NULL, stream_id BIGINT NOT NULL )X kEindexsqlite_autoindex_ui_auth_sessions_credentials_1ui_auth_sessions_credentials0 %Q !QWLJZmJqjWZjVOjdYF:localhost:8800synapse-1.100.0/.ci/twisted_trunk_build_failed_issue_template.md000066400000000000000000000002131455622526000250250ustar00rootroot00000000000000--- title: CI run against Twisted trunk is failing --- See https://github.com/{{env.GITHUB_REPOSITORY}}/actions/runs/{{env.GITHUB_RUN_ID}} synapse-1.100.0/.ci/worker-blacklist000066400000000000000000000002351455622526000172150ustar00rootroot00000000000000# This file serves as a blacklist for SyTest tests that we expect will fail in # Synapse when run under worker mode. For more details, see sytest-blacklist. synapse-1.100.0/.codecov.yml000066400000000000000000000004101455622526000155600ustar00rootroot00000000000000comment: off coverage: status: project: default: target: 0 # Target % coverage, can be auto. Turned off for now threshold: null base: auto patch: default: target: 0 threshold: null base: auto synapse-1.100.0/.coveragerc000066400000000000000000000001561455622526000154650ustar00rootroot00000000000000[run] branch = True parallel = True include=$TOP/synapse/* data_file = $TOP/.coverage [report] precision = 2 synapse-1.100.0/.dockerignore000066400000000000000000000003071455622526000160160ustar00rootroot00000000000000# ignore everything by default * # things to include !docker !synapse !rust !README.rst !pyproject.toml !poetry.lock !Cargo.lock !Cargo.toml !build_rust.py rust/target synapse/*.so **/__pycache__ synapse-1.100.0/.editorconfig000066400000000000000000000002601455622526000160150ustar00rootroot00000000000000# EditorConfig https://EditorConfig.org # top-most EditorConfig file root = true # 4 space indentation [*.{py,pyi}] indent_style = space indent_size = 4 max_line_length = 88 synapse-1.100.0/.git-blame-ignore-revs000066400000000000000000000021451455622526000174440ustar00rootroot00000000000000# Commits in this file will be removed from GitHub blame results. # # To use this file locally, use: # git blame --ignore-revs-file="path/to/.git-blame-ignore-revs" # # or configure the `blame.ignoreRevsFile` option in your git config. # # If ignoring a pull request that was not squash merged, only the merge # commit needs to be put here. Child commits will be resolved from it. # Run black (https://github.com/matrix-org/synapse/pull/3679). 8b3d9b6b199abb87246f982d5db356f1966db925 # Black reformatting (https://github.com/matrix-org/synapse/pull/5482). 32e7c9e7f20b57dd081023ac42d6931a8da9b3a3 # Target Python 3.5 with black (https://github.com/matrix-org/synapse/pull/8664). aff1eb7c671b0a3813407321d2702ec46c71fa56 # Update black to 20.8b1 (https://github.com/matrix-org/synapse/pull/9381). 0a00b7ff14890987f09112a2ae696c61001e6cf1 # Convert tests/rest/admin/test_room.py to unix file endings (https://github.com/matrix-org/synapse/pull/7953). c4268e3da64f1abb5b31deaeb5769adb6510c0a7 # Update black to 23.1.0 (https://github.com/matrix-org/synapse/pull/15103) 9bb2eac71962970d02842bca441f4bcdbbf93a11 synapse-1.100.0/.github/000077500000000000000000000000001455622526000147025ustar00rootroot00000000000000synapse-1.100.0/.github/CODEOWNERS000066400000000000000000000001641455622526000162760ustar00rootroot00000000000000# Automatically request reviews from the synapse-core team when a pull request comes in. * @element-hq/synapse-core synapse-1.100.0/.github/ISSUE_TEMPLATE.md000066400000000000000000000004031455622526000174040ustar00rootroot00000000000000**If you are looking for support** please ask in **#synapse:matrix.org** (using a matrix.org account if necessary). We do not use GitHub issues for support. **If you want to report a security issue** please see https://matrix.org/security-disclosure-policy/ synapse-1.100.0/.github/ISSUE_TEMPLATE/000077500000000000000000000000001455622526000170655ustar00rootroot00000000000000synapse-1.100.0/.github/ISSUE_TEMPLATE/BUG_REPORT.yml000066400000000000000000000117231455622526000213240ustar00rootroot00000000000000name: Bug report description: Create a report to help us improve body: - type: markdown attributes: value: | **THIS IS NOT A SUPPORT CHANNEL!** **IF YOU HAVE SUPPORT QUESTIONS ABOUT RUNNING OR CONFIGURING YOUR OWN HOME SERVER**, please ask in **[#synapse:matrix.org](https://matrix.to/#/#synapse:matrix.org)** (using a matrix.org account if necessary). If you want to report a security issue, please see https://matrix.org/security-disclosure-policy/ This is a bug report form. By following the instructions below and completing the sections with your information, you will help the us to get all the necessary data to fix your issue. You can also preview your report before submitting it. - type: textarea id: description attributes: label: Description description: Describe the problem that you are experiencing validations: required: true - type: textarea id: reproduction_steps attributes: label: Steps to reproduce description: | Describe the series of steps that leads you to the problem. Describe how what happens differs from what you expected. placeholder: Tell us what you see! value: | - list the steps - that reproduce the bug - using hyphens as bullet points validations: required: true - type: markdown attributes: value: | --- **IMPORTANT**: please answer the following questions, to help us narrow down the problem. - type: input id: homeserver attributes: label: Homeserver description: Which homeserver was this issue identified on? (matrix.org, another homeserver, etc) validations: required: true - type: input id: version attributes: label: Synapse Version description: | What version of Synapse is this homeserver running? You can find the Synapse version by visiting https://yourserver.example.com/_matrix/federation/v1/version or with this command: ``` $ curl http://localhost:8008/_synapse/admin/v1/server_version ``` (You may need to replace `localhost:8008` if Synapse is not configured to listen on that port.) validations: required: true - type: dropdown id: install_method attributes: label: Installation Method options: - Docker (matrixdotorg/synapse) - Debian packages from packages.matrix.org - pip (from PyPI) - Other (please mention below) - I don't know validations: required: true - type: input id: database attributes: label: Database description: | Are you using SQLite or PostgreSQL? What's the version of your database? If PostgreSQL, please also answer the following: - are you using a single PostgreSQL server or [separate servers for `main` and `state`](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#databases)? - have you previously ported from SQLite using the Synapse "portdb" script? - have you previously restored from a backup? validations: required: true - type: dropdown id: workers attributes: label: Workers description: | Are you running a single Synapse process, or are you running [2 or more workers](https://element-hq.github.io/synapse/latest/workers.html)? options: - Single process - Multiple workers - I don't know validations: required: true - type: textarea id: platform attributes: label: Platform description: | Tell us about the environment in which your homeserver is operating... e.g. distro, hardware, if it's running in a vm/container, etc. validations: required: true - type: textarea id: config attributes: label: Configuration description: | Do you have any unusual config options turned on? If so, please provide details. - Experimental or undocumented features - [Presence](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#presence) - [Message retention](https://element-hq.github.io/synapse/latest/message_retention_policies.html) - [Synapse modules](https://element-hq.github.io/synapse/latest/modules/index.html) - type: textarea id: logs attributes: label: Relevant log output description: | Please copy and paste any relevant log output as text (not images), ideally at INFO or DEBUG log level. This will be automatically formatted into code, so there is no need for backticks (`\``). Please be careful to remove any personal or private data. **Bug reports are usually impossible to diagnose without logging.** render: shell validations: required: true - type: textarea id: anything_else attributes: label: Anything else that would be useful to know? synapse-1.100.0/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md000066400000000000000000000002211455622526000217050ustar00rootroot00000000000000--- name: Feature request about: Suggest an idea for this project --- **Description:** synapse-1.100.0/.github/ISSUE_TEMPLATE/SUPPORT_REQUEST.md000066400000000000000000000004061455622526000217730ustar00rootroot00000000000000--- name: Support request about: I need support for Synapse --- Please don't file github issues asking for support. Instead, please join [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org) (from a matrix.org account if necessary), and ask there. synapse-1.100.0/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000021051455622526000205010ustar00rootroot00000000000000### Pull Request Checklist * [ ] Pull request is based on the develop branch * [ ] Pull request includes a [changelog file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog). The entry should: - Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from `EventStore` to `EventWorkerStore`.". - Use markdown where necessary, mostly for `code blocks`. - End with either a period (.) or an exclamation mark (!). - Start with a capital letter. - Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry. * [ ] [Code style](https://element-hq.github.io/synapse/latest/code_style.html) is correct (run the [linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters)) synapse-1.100.0/.github/SUPPORT.md000066400000000000000000000004121455622526000163750ustar00rootroot00000000000000[**#synapse:matrix.org**](https://matrix.to/#/#synapse:matrix.org) is the official support room for Synapse, and can be accessed by any client from https://matrix.org/docs/projects/try-matrix-now.html. Please ask for support there, rather than filing github issues. synapse-1.100.0/.github/dependabot.yml000066400000000000000000000011701455622526000175310ustar00rootroot00000000000000version: 2 updates: - # "pip" is the correct setting for poetry, per https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem package-ecosystem: "pip" directory: "/" schedule: interval: "weekly" - package-ecosystem: "docker" directory: "/docker" schedule: interval: "weekly" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" - package-ecosystem: "cargo" directory: "/" versioning-strategy: "lockfile-only" schedule: interval: "weekly" synapse-1.100.0/.github/workflows/000077500000000000000000000000001455622526000167375ustar00rootroot00000000000000synapse-1.100.0/.github/workflows/docker.yml000066400000000000000000000061061455622526000207340ustar00rootroot00000000000000# GitHub actions workflow which builds and publishes the docker images. name: Build docker images on: push: tags: ["v*"] branches: [ master, main, develop ] workflow_dispatch: permissions: contents: read packages: write id-token: write # needed for signing the images with GitHub OIDC Token jobs: build: runs-on: ubuntu-latest steps: - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@v3 with: platforms: arm64 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3 - name: Inspect builder run: docker buildx inspect - name: Install Cosign uses: sigstore/cosign-installer@v3.3.0 - name: Checkout repository uses: actions/checkout@v4 - name: Extract version from pyproject.toml # Note: explicitly requesting bash will mean bash is invoked with `-eo pipefail`, see # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell shell: bash run: | echo "SYNAPSE_VERSION=$(grep "^version" pyproject.toml | sed -E 's/version\s*=\s*["]([^"]*)["]/\1/')" >> $GITHUB_ENV - name: Log in to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Log in to GHCR uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Calculate docker image tag id: set-tag uses: docker/metadata-action@master with: images: | docker.io/matrixdotorg/synapse ghcr.io/element-hq/synapse flavor: | latest=false tags: | type=raw,value=develop,enable=${{ github.ref == 'refs/heads/develop' }} type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }} type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} type=pep440,pattern={{raw}} - name: Build and push all platforms id: build-and-push uses: docker/build-push-action@v5 with: push: true labels: | gitsha1=${{ github.sha }} org.opencontainers.image.version=${{ env.SYNAPSE_VERSION }} tags: "${{ steps.set-tag.outputs.tags }}" file: "docker/Dockerfile" platforms: linux/amd64,linux/arm64 # arm64 builds OOM without the git fetch setting. c.f. # https://github.com/rust-lang/cargo/issues/10583 build-args: | CARGO_NET_GIT_FETCH_WITH_CLI=true - name: Sign the images with GitHub OIDC Token env: DIGEST: ${{ steps.build-and-push.outputs.digest }} TAGS: ${{ steps.set-tag.outputs.tags }} run: | images="" for tag in ${TAGS}; do images+="${tag}@${DIGEST} " done cosign sign --yes ${images} synapse-1.100.0/.github/workflows/docs-pr-netlify.yaml000066400000000000000000000024161455622526000226450ustar00rootroot00000000000000name: Deploy documentation PR preview on: workflow_run: workflows: [ "Prepare documentation PR preview" ] types: - completed jobs: netlify: if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' runs-on: ubuntu-latest steps: # There's a 'download artifact' action, but it hasn't been updated for the workflow_run action # (https://github.com/actions/download-artifact/issues/60) so instead we get this mess: - name: 📥 Download artifact uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d # v3.0.0 with: workflow: docs-pr.yaml run_id: ${{ github.event.workflow_run.id }} name: book path: book - name: 📤 Deploy to Netlify uses: matrix-org/netlify-pr-preview@v3 with: path: book owner: ${{ github.event.workflow_run.head_repository.owner.login }} branch: ${{ github.event.workflow_run.head_branch }} revision: ${{ github.event.workflow_run.head_sha }} token: ${{ secrets.NETLIFY_AUTH_TOKEN }} site_id: ${{ secrets.NETLIFY_SITE_ID }} desc: Documentation preview deployment_env: PR Documentation Preview synapse-1.100.0/.github/workflows/docs-pr.yaml000066400000000000000000000044641455622526000212020ustar00rootroot00000000000000name: Prepare documentation PR preview on: pull_request: paths: - docs/** - book.toml - .github/workflows/docs-pr.yaml - scripts-dev/schema_versions.py jobs: pages: name: GitHub Pages runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: # Fetch all history so that the schema_versions script works. fetch-depth: 0 - name: Setup mdbook uses: peaceiris/actions-mdbook@adeb05db28a0c0004681db83893d56c0388ea9ea # v1.2.0 with: mdbook-version: '0.4.17' - name: Setup python uses: actions/setup-python@v5 with: python-version: "3.x" - run: "pip install 'packaging>=20.0' 'GitPython>=3.1.20'" - name: Build the documentation # mdbook will only create an index.html if we're including docs/README.md in SUMMARY.md. # However, we're using docs/README.md for other purposes and need to pick a new page # as the default. Let's opt for the welcome page instead. run: | mdbook build cp book/welcome_and_overview.html book/index.html - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: book path: book # We'll only use this in a workflow_run, then we're done with it retention-days: 1 link-check: name: Check links in documentation runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup mdbook uses: peaceiris/actions-mdbook@adeb05db28a0c0004681db83893d56c0388ea9ea # v1.2.0 with: mdbook-version: '0.4.17' - name: Setup htmltest run: | wget https://github.com/wjdp/htmltest/releases/download/v0.17.0/htmltest_0.17.0_linux_amd64.tar.gz echo '775c597ee74899d6002cd2d93076f897f4ba68686bceabe2e5d72e84c57bc0fb htmltest_0.17.0_linux_amd64.tar.gz' | sha256sum -c tar zxf htmltest_0.17.0_linux_amd64.tar.gz - name: Test links with htmltest # Build the book with `./` as the site URL (to make checks on 404.html possible) # Then run htmltest (without checking external links since that involves the network and is slow). run: | MDBOOK_OUTPUT__HTML__SITE_URL="./" mdbook build ./htmltest book --skip-external synapse-1.100.0/.github/workflows/docs.yaml000066400000000000000000000071001455622526000205510ustar00rootroot00000000000000name: Deploy the documentation on: push: branches: # For bleeding-edge documentation - develop # For documentation specific to a release - 'release-v*' # stable docs - master workflow_dispatch: jobs: pre: name: Calculate variables for GitHub Pages deployment runs-on: ubuntu-latest steps: # Figure out the target directory. # # The target directory depends on the name of the branch # - name: Get the target directory name id: vars run: | # first strip the 'refs/heads/' prefix with some shell foo branch="${GITHUB_REF#refs/heads/}" case $branch in release-*) # strip 'release-' from the name for release branches. branch="${branch#release-}" ;; master) # deploy to "latest" for the master branch. branch="latest" ;; esac # finally, set the 'branch-version' var. echo "branch-version=$branch" >> "$GITHUB_OUTPUT" outputs: branch-version: ${{ steps.vars.outputs.branch-version }} ################################################################################ pages-docs: name: GitHub Pages runs-on: ubuntu-latest needs: - pre steps: - uses: actions/checkout@v4 with: # Fetch all history so that the schema_versions script works. fetch-depth: 0 - name: Setup mdbook uses: peaceiris/actions-mdbook@adeb05db28a0c0004681db83893d56c0388ea9ea # v1.2.0 with: mdbook-version: '0.4.17' - name: Set version of docs run: echo 'window.SYNAPSE_VERSION = "${{ needs.pre.outputs.branch-version }}";' > ./docs/website_files/version.js - name: Setup python uses: actions/setup-python@v5 with: python-version: "3.x" - run: "pip install 'packaging>=20.0' 'GitPython>=3.1.20'" - name: Build the documentation # mdbook will only create an index.html if we're including docs/README.md in SUMMARY.md. # However, we're using docs/README.md for other purposes and need to pick a new page # as the default. Let's opt for the welcome page instead. run: | mdbook build cp book/welcome_and_overview.html book/index.html # Deploy to the target directory. - name: Deploy to gh pages uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 # v3.9.3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./book destination_dir: ./${{ needs.pre.outputs.branch-version }} ################################################################################ pages-devdocs: name: GitHub Pages (developer docs) runs-on: ubuntu-latest needs: - pre steps: - uses: actions/checkout@v4 - name: "Set up Sphinx" uses: matrix-org/setup-python-poetry@v1 with: python-version: "3.x" poetry-version: "1.3.2" groups: "dev-docs" extras: "" - name: Build the documentation run: | cd dev-docs poetry run make html # Deploy to the target directory. - name: Deploy to gh pages uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 # v3.9.3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./dev-docs/_build/html destination_dir: ./dev-docs/${{ needs.pre.outputs.branch-version }} synapse-1.100.0/.github/workflows/fix_lint.yaml000066400000000000000000000025041455622526000214400ustar00rootroot00000000000000# A helper workflow to automatically fixup any linting errors on a PR. Must be # triggered manually. name: Attempt to automatically fix linting errors on: workflow_dispatch: jobs: fixup: name: Fix up runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@master with: # We use nightly so that `fmt` correctly groups together imports, and # clippy correctly fixes up the benchmarks. toolchain: nightly-2022-12-01 components: rustfmt - uses: Swatinem/rust-cache@v2 - name: Setup Poetry uses: matrix-org/setup-python-poetry@v1 with: install-project: "false" - name: Import order (isort) continue-on-error: true run: poetry run isort . - name: Code style (black) continue-on-error: true run: poetry run black . - name: Semantic checks (ruff) continue-on-error: true run: poetry run ruff --fix . - run: cargo clippy --all-features --fix -- -D warnings continue-on-error: true - run: cargo fmt continue-on-error: true - uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "Attempt to fix linting" synapse-1.100.0/.github/workflows/latest_deps.yml000066400000000000000000000177611455622526000220050ustar00rootroot00000000000000# People who are freshly `pip install`ing from PyPI will pull in the latest versions of # dependencies which match the broad requirements. Since most CI runs are against # the locked poetry environment, run specifically against the latest dependencies to # know if there's an upcoming breaking change. # # As an overview this workflow: # - checks out develop, # - installs from source, pulling in the dependencies like a fresh `pip install` would, and # - runs mypy and test suites in that checkout. # # Based on the twisted trunk CI job. name: Latest dependencies on: schedule: - cron: 0 7 * * * workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: check_repo: # Prevent this workflow from running on any fork of Synapse other than element-hq/synapse, as it is # only useful to the Synapse core team. # All other workflow steps depend on this one, thus if 'should_run_workflow' is not 'true', the rest # of the workflow will be skipped as well. runs-on: ubuntu-latest outputs: should_run_workflow: ${{ steps.check_condition.outputs.should_run_workflow }} steps: - id: check_condition run: echo "should_run_workflow=${{ github.repository == 'element-hq/synapse' }}" >> "$GITHUB_OUTPUT" mypy: needs: check_repo if: needs.check_repo.outputs.should_run_workflow == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 # The dev dependencies aren't exposed in the wheel metadata (at least with current # poetry-core versions), so we install with poetry. - uses: matrix-org/setup-python-poetry@v1 with: python-version: "3.x" poetry-version: "1.3.2" extras: "all" # Dump installed versions for debugging. - run: poetry run pip list > before.txt # Upgrade all runtime dependencies only. This is intended to mimic a fresh # `pip install matrix-synapse[all]` as closely as possible. - run: poetry update --no-dev - run: poetry run pip list > after.txt && (diff -u before.txt after.txt || true) - name: Remove unhelpful options from mypy config run: sed -e '/warn_unused_ignores = True/d' -e '/warn_redundant_casts = True/d' -i mypy.ini - run: poetry run mypy trial: needs: check_repo if: needs.check_repo.outputs.should_run_workflow == 'true' runs-on: ubuntu-latest strategy: matrix: include: - database: "sqlite" - database: "postgres" postgres-version: "14" steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: sudo apt-get -qq install xmlsec1 - name: Set up PostgreSQL ${{ matrix.postgres-version }} if: ${{ matrix.postgres-version }} run: | docker run -d -p 5432:5432 \ -e POSTGRES_PASSWORD=postgres \ -e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \ postgres:${{ matrix.postgres-version }} - uses: actions/setup-python@v5 with: python-version: "3.x" - run: pip install .[all,test] - name: Await PostgreSQL if: ${{ matrix.postgres-version }} timeout-minutes: 2 run: until pg_isready -h localhost; do sleep 1; done # We nuke the local copy, as we've installed synapse into the virtualenv # (rather than use an editable install, which we no longer support). If we # don't do this then python can't find the native lib. - run: rm -rf synapse/ - run: python -m twisted.trial --jobs=2 tests env: SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }} SYNAPSE_POSTGRES_HOST: localhost SYNAPSE_POSTGRES_USER: postgres SYNAPSE_POSTGRES_PASSWORD: postgres - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true sytest: needs: check_repo if: needs.check_repo.outputs.should_run_workflow == 'true' runs-on: ubuntu-latest container: image: matrixdotorg/sytest-synapse:testing volumes: - ${{ github.workspace }}:/src strategy: fail-fast: false matrix: include: - sytest-tag: focal - sytest-tag: focal postgres: postgres workers: workers redis: redis env: POSTGRES: ${{ matrix.postgres && 1}} WORKERS: ${{ matrix.workers && 1 }} REDIS: ${{ matrix.redis && 1 }} BLACKLIST: ${{ matrix.workers && 'synapse-blacklist-with-workers' }} steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Ensure sytest runs `pip install` # Delete the lockfile so sytest will `pip install` rather than `poetry install` run: rm /src/poetry.lock working-directory: /src - name: Prepare test blacklist run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers - name: Run SyTest run: /bootstrap.sh synapse working-directory: /src - name: Summarise results.tap if: ${{ always() }} run: /sytest/scripts/tap_to_gha.pl /logs/results.tap - name: Upload SyTest logs uses: actions/upload-artifact@v4 if: ${{ always() }} with: name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }}) path: | /logs/results.tap /logs/**/*.log* complement: needs: check_repo if: "!failure() && !cancelled() && needs.check_repo.outputs.should_run_workflow == 'true'" runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - arrangement: monolith database: SQLite - arrangement: monolith database: Postgres - arrangement: workers database: Postgres steps: - name: Run actions/checkout@v4 for synapse uses: actions/checkout@v4 with: path: synapse - name: Prepare Complement's Prerequisites run: synapse/.ci/scripts/setup_complement_prerequisites.sh - uses: actions/setup-go@v5 with: cache-dependency-path: complement/go.sum go-version-file: complement/go.mod - run: | set -o pipefail TEST_ONLY_IGNORE_POETRY_LOCKFILE=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | synapse/.ci/scripts/gotestfmt shell: bash name: Run Complement Tests # Open an issue if the build fails, so we know about it. # Only do this if we're not experimenting with this action in a PR. open-issue: if: "failure() && github.event_name != 'push' && github.event_name != 'pull_request' && needs.check_repo.outputs.should_run_workflow == 'true'" needs: # TODO: should mypy be included here? It feels more brittle than the others. - mypy - trial - sytest - complement runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: update_existing: true filename: .ci/latest_deps_build_failed_issue_template.md synapse-1.100.0/.github/workflows/poetry_lockfile.yaml000066400000000000000000000010341455622526000230130ustar00rootroot00000000000000on: push: branches: ["develop", "release-*"] paths: - poetry.lock pull_request: paths: - poetry.lock concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: check-sdists: name: "Check locked dependencies have sdists" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.x' - run: pip install tomli - run: ./scripts-dev/check_locked_deps_have_sdists.py synapse-1.100.0/.github/workflows/push_complement_image.yml000066400000000000000000000052131455622526000240270ustar00rootroot00000000000000# This task does not run complement tests, see tests.yaml instead. # This task does not build docker images for synapse for use on docker hub, see docker.yaml instead name: Store complement-synapse image in ghcr.io on: push: branches: [ "master" ] schedule: - cron: '0 5 * * *' workflow_dispatch: inputs: branch: required: true default: 'develop' type: choice options: - develop - master # Only run this action once per pull request/branch; restart if a new commit arrives. # C.f. https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency # and https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: name: Build and push complement image runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout specific branch (debug build) uses: actions/checkout@v4 if: github.event_name == 'workflow_dispatch' with: ref: ${{ inputs.branch }} - name: Checkout clean copy of develop (scheduled build) uses: actions/checkout@v4 if: github.event_name == 'schedule' with: ref: develop - name: Checkout clean copy of master (on-push) uses: actions/checkout@v4 if: github.event_name == 'push' with: ref: master - name: Login to registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Work out labels for complement image id: meta uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository }}/complement-synapse tags: | type=schedule,pattern=nightly,enable=${{ github.event_name == 'schedule'}} type=raw,value=develop,enable=${{ github.event_name == 'schedule' || inputs.branch == 'develop' }} type=raw,value=latest,enable=${{ github.event_name == 'push' || inputs.branch == 'master' }} type=sha,format=long - name: Run scripts-dev/complement.sh to generate complement-synapse:latest image. run: scripts-dev/complement.sh --build-only - name: Tag and push generated image run: | for TAG in ${{ join(fromJson(steps.meta.outputs.json).tags, ' ') }}; do echo "tag and push $TAG" docker tag complement-synapse $TAG docker push $TAG done synapse-1.100.0/.github/workflows/release-artifacts.yml000066400000000000000000000153361455622526000230700ustar00rootroot00000000000000# GitHub actions workflow which builds the release artifacts. name: Build release artifacts on: # we build on PRs and develop to (hopefully) get early warning # of things breaking (but only build one set of debs). PRs skip # building wheels on macOS & ARM. pull_request: push: branches: ["develop", "release-*"] # we do the full build on tags. tags: ["v*"] merge_group: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: write jobs: get-distros: name: "Calculate list of debian distros" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.x' - id: set-distros run: | # if we're running from a tag, get the full list of distros; otherwise just use debian:sid # NOTE: inside the actual Dockerfile-dhvirtualenv, the image name is expanded into its full image path dists='["debian:sid"]' if [[ $GITHUB_REF == refs/tags/* ]]; then dists=$(scripts-dev/build_debian_packages.py --show-dists-json) fi echo "distros=$dists" >> "$GITHUB_OUTPUT" # map the step outputs to job outputs outputs: distros: ${{ steps.set-distros.outputs.distros }} # now build the packages with a matrix build. build-debs: needs: get-distros name: "Build .deb packages" runs-on: ubuntu-latest strategy: matrix: distro: ${{ fromJson(needs.get-distros.outputs.distros) }} steps: - name: Checkout uses: actions/checkout@v4 with: path: src - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3 with: install: true - name: Set up docker layer caching uses: actions/cache@v4 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Set up python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Build the packages # see https://github.com/docker/build-push-action/issues/252 # for the cache magic here run: | ./src/scripts-dev/build_debian_packages.py \ --docker-build-arg=--cache-from=type=local,src=/tmp/.buildx-cache \ --docker-build-arg=--cache-to=type=local,mode=max,dest=/tmp/.buildx-cache-new \ --docker-build-arg=--progress=plain \ --docker-build-arg=--load \ "${{ matrix.distro }}" rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache - name: Upload debs as artifacts uses: actions/upload-artifact@v3 # Don't upgrade to v4; broken: https://github.com/actions/upload-artifact#breaking-changes with: name: debs path: debs/* build-wheels: name: Build wheels on ${{ matrix.os }} for ${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-20.04, macos-11] arch: [x86_64, aarch64] # is_pr is a flag used to exclude certain jobs from the matrix on PRs. # It is not read by the rest of the workflow. is_pr: - ${{ startsWith(github.ref, 'refs/pull/') }} exclude: # Don't build macos wheels on PR CI. - is_pr: true os: "macos-11" # Don't build aarch64 wheels on mac. - os: "macos-11" arch: aarch64 # Don't build aarch64 wheels on PR CI. - is_pr: true arch: aarch64 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: # setup-python@v4 doesn't impose a default python version. Need to use 3.x # here, because `python` on osx points to Python 2.7. python-version: "3.x" - name: Install cibuildwheel run: python -m pip install cibuildwheel==2.16.2 - name: Set up QEMU to emulate aarch64 if: matrix.arch == 'aarch64' uses: docker/setup-qemu-action@v3 with: platforms: arm64 - name: Build aarch64 wheels if: matrix.arch == 'aarch64' run: echo 'CIBW_ARCHS_LINUX=aarch64' >> $GITHUB_ENV - name: Only build a single wheel on PR if: startsWith(github.ref, 'refs/pull/') run: echo "CIBW_BUILD="cp38-manylinux_${{ matrix.arch }}"" >> $GITHUB_ENV - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse env: # Skip testing for platforms which various libraries don't have wheels # for, and so need extra build deps. CIBW_TEST_SKIP: pp3*-* *i686* *musl* # Fix Rust OOM errors on emulated aarch64: https://github.com/rust-lang/cargo/issues/10583 CARGO_NET_GIT_FETCH_WITH_CLI: true CIBW_ENVIRONMENT_PASS_LINUX: CARGO_NET_GIT_FETCH_WITH_CLI - uses: actions/upload-artifact@v3 # Don't upgrade to v4; broken: https://github.com/actions/upload-artifact#breaking-changes with: name: Wheel path: ./wheelhouse/*.whl build-sdist: name: Build sdist runs-on: ubuntu-latest if: ${{ !startsWith(github.ref, 'refs/pull/') }} steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.10' - run: pip install build - name: Build sdist run: python -m build --sdist - uses: actions/upload-artifact@v3 # Don't upgrade to v4; broken: https://github.com/actions/upload-artifact#breaking-changes with: name: Sdist path: dist/*.tar.gz # if it's a tag, create a release and attach the artifacts to it attach-assets: name: "Attach assets to release" if: ${{ !failure() && !cancelled() && startsWith(github.ref, 'refs/tags/') }} needs: - build-debs - build-wheels - build-sdist runs-on: ubuntu-latest steps: - name: Download all workflow run artifacts uses: actions/download-artifact@v3 # Don't upgrade to v4, it should match upload-artifact - name: Build a tarball for the debs run: tar -cvJf debs.tar.xz debs - name: Attach to release uses: softprops/action-gh-release@a929a66f232c1b11af63782948aa2210f981808a # PR#109 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: | Sdist/* Wheel/* debs.tar.xz # if it's not already published, keep the release as a draft. draft: true # mark it as a prerelease if the tag contains 'rc'. prerelease: ${{ contains(github.ref, 'rc') }} synapse-1.100.0/.github/workflows/tests.yml000066400000000000000000000551351455622526000206350ustar00rootroot00000000000000name: Tests on: push: branches: ["develop", "release-*"] pull_request: merge_group: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: # Job to detect what has changed so we don't run e.g. Rust checks on PRs that # don't modify Rust code. changes: runs-on: ubuntu-latest outputs: rust: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.rust }} trial: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.trial }} integration: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.integration }} linting: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.linting }} steps: - uses: dorny/paths-filter@v2 id: filter # We only check on PRs if: startsWith(github.ref, 'refs/pull/') with: filters: | rust: - 'rust/**' - 'Cargo.toml' - 'Cargo.lock' - '.rustfmt.toml' - '.github/workflows/tests.yml' trial: - 'synapse/**' - 'tests/**' - 'rust/**' - '.ci/scripts/calculate_jobs.py' - 'Cargo.toml' - 'Cargo.lock' - 'pyproject.toml' - 'poetry.lock' - '.github/workflows/tests.yml' integration: - 'synapse/**' - 'rust/**' - 'docker/**' - 'Cargo.toml' - 'Cargo.lock' - 'pyproject.toml' - 'poetry.lock' - 'docker/**' - '.ci/**' - 'scripts-dev/complement.sh' - '.github/workflows/tests.yml' linting: - 'synapse/**' - 'docker/**' - 'tests/**' - 'scripts-dev/**' - 'contrib/**' - 'synmark/**' - 'stubs/**' - '.ci/**' - 'mypy.ini' - 'pyproject.toml' - 'poetry.lock' - '.github/workflows/tests.yml' check-sampleconfig: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.linting == 'true' }} steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 - uses: matrix-org/setup-python-poetry@v1 with: python-version: "3.x" poetry-version: "1.3.2" extras: "all" - run: poetry run scripts-dev/generate_sample_config.sh --check - run: poetry run scripts-dev/config-lint.sh check-schema-delta: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.linting == 'true' }} steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - run: "pip install 'click==8.1.1' 'GitPython>=3.1.20'" - run: scripts-dev/check_schema_delta.py --force-colors check-lockfile: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - run: .ci/scripts/check_lockfile.py lint: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.linting == 'true' }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Poetry uses: matrix-org/setup-python-poetry@v1 with: install-project: "false" - name: Import order (isort) run: poetry run isort --check --diff . - name: Code style (black) run: poetry run black --check --diff . - name: Semantic checks (ruff) # --quiet suppresses the update check. run: poetry run ruff --quiet . lint-mypy: runs-on: ubuntu-latest name: Typechecking needs: changes if: ${{ needs.changes.outputs.linting == 'true' }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 - name: Setup Poetry uses: matrix-org/setup-python-poetry@v1 with: # We want to make use of type hints in optional dependencies too. extras: all # We have seen odd mypy failures that were resolved when we started # installing the project again: # https://github.com/matrix-org/synapse/pull/15376#issuecomment-1498983775 # To make CI green, err towards caution and install the project. install-project: "true" # Cribbed from # https://github.com/AustinScola/mypy-cache-github-action/blob/85ea4f2972abed39b33bd02c36e341b28ca59213/src/restore.ts#L10-L17 - name: Restore/persist mypy's cache uses: actions/cache@v4 with: path: | .mypy_cache key: mypy-cache-${{ github.context.sha }} restore-keys: mypy-cache- - name: Run mypy run: poetry run mypy lint-crlf: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check line endings run: scripts-dev/check_line_terminators.sh lint-newsfile: if: ${{ (github.base_ref == 'develop' || contains(github.base_ref, 'release-')) && github.actor != 'dependabot[bot]' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - uses: actions/setup-python@v5 with: python-version: "3.x" - run: "pip install 'towncrier>=18.6.0rc1'" - run: scripts-dev/check-newsfragment.sh env: PULL_REQUEST_NUMBER: ${{ github.event.number }} lint-pydantic: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.linting == 'true' }} steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 - uses: matrix-org/setup-python-poetry@v1 with: poetry-version: "1.3.2" extras: "all" - run: poetry run scripts-dev/check_pydantic_models.py lint-clippy: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.rust == 'true' }} steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 with: components: clippy - uses: Swatinem/rust-cache@v2 - run: cargo clippy -- -D warnings # We also lint against a nightly rustc so that we can lint the benchmark # suite, which requires a nightly compiler. lint-clippy-nightly: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.rust == 'true' }} steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@master with: toolchain: nightly-2022-12-01 components: clippy - uses: Swatinem/rust-cache@v2 - run: cargo clippy --all-features -- -D warnings lint-rustfmt: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.rust == 'true' }} steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@master with: # We use nightly so that it correctly groups together imports toolchain: nightly-2022-12-01 components: rustfmt - uses: Swatinem/rust-cache@v2 - run: cargo fmt --check # Dummy step to gate other tests on without repeating the whole list linting-done: if: ${{ !cancelled() }} # Run this even if prior jobs were skipped needs: - lint - lint-mypy - lint-crlf - lint-newsfile - lint-pydantic - check-sampleconfig - check-schema-delta - check-lockfile - lint-clippy - lint-clippy-nightly - lint-rustfmt runs-on: ubuntu-latest steps: - uses: matrix-org/done-action@v2 with: needs: ${{ toJSON(needs) }} # Various bits are skipped if there was no applicable changes. skippable: | check-sampleconfig check-schema-delta lint lint-mypy lint-newsfile lint-pydantic lint-clippy lint-clippy-nightly lint-rustfmt calculate-test-jobs: if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail needs: linting-done runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - id: get-matrix run: .ci/scripts/calculate_jobs.py outputs: trial_test_matrix: ${{ steps.get-matrix.outputs.trial_test_matrix }} sytest_test_matrix: ${{ steps.get-matrix.outputs.sytest_test_matrix }} trial: if: ${{ !cancelled() && !failure() && needs.changes.outputs.trial == 'true' }} # Allow previous steps to be skipped, but not fail needs: - calculate-test-jobs - changes runs-on: ubuntu-latest strategy: matrix: job: ${{ fromJson(needs.calculate-test-jobs.outputs.trial_test_matrix) }} steps: - uses: actions/checkout@v4 - run: sudo apt-get -qq install xmlsec1 - name: Set up PostgreSQL ${{ matrix.job.postgres-version }} if: ${{ matrix.job.postgres-version }} # 1. Mount postgres data files onto a tmpfs in-memory filesystem to reduce overhead of docker's overlayfs layer. # 2. Expose the unix socket for postgres. This removes latency of using docker-proxy for connections. run: | docker run -d -p 5432:5432 \ --tmpfs /var/lib/postgres:rw,size=6144m \ --mount 'type=bind,src=/var/run/postgresql,dst=/var/run/postgresql' \ -e POSTGRES_PASSWORD=postgres \ -e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \ postgres:${{ matrix.job.postgres-version }} - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 - uses: matrix-org/setup-python-poetry@v1 with: python-version: ${{ matrix.job.python-version }} poetry-version: "1.3.2" extras: ${{ matrix.job.extras }} - name: Await PostgreSQL if: ${{ matrix.job.postgres-version }} timeout-minutes: 2 run: until pg_isready -h localhost; do sleep 1; done - run: poetry run trial --jobs=6 tests env: SYNAPSE_POSTGRES: ${{ matrix.job.database == 'postgres' || '' }} SYNAPSE_POSTGRES_HOST: /var/run/postgresql SYNAPSE_POSTGRES_USER: postgres SYNAPSE_POSTGRES_PASSWORD: postgres - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true trial-olddeps: # Note: sqlite only; no postgres if: ${{ !cancelled() && !failure() && needs.changes.outputs.trial == 'true' }} # Allow previous steps to be skipped, but not fail needs: - linting-done - changes runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 # There aren't wheels for some of the older deps, so we need to install # their build dependencies - run: | sudo apt-get -qq update sudo apt-get -qq install build-essential libffi-dev python-dev \ libxml2-dev libxslt-dev xmlsec1 zlib1g-dev libjpeg-dev libwebp-dev - uses: actions/setup-python@v5 with: python-version: '3.8' - name: Prepare old deps if: steps.cache-poetry-old-deps.outputs.cache-hit != 'true' run: .ci/scripts/prepare_old_deps.sh # Note: we install using `pip` here, not poetry. `poetry install` ignores the # build-system section (https://github.com/python-poetry/poetry/issues/6154), but # we explicitly want to test that you can `pip install` using the oldest version # of poetry-core and setuptools-rust. - run: pip install .[all,test] # We nuke the local copy, as we've installed synapse into the virtualenv # (rather than use an editable install, which we no longer support). If we # don't do this then python can't find the native lib. - run: rm -rf synapse/ # Sanity check we can import/run Synapse - run: python -m synapse.app.homeserver --help - run: python -m twisted.trial -j6 tests - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true trial-pypy: # Very slow; only run if the branch name includes 'pypy' # Note: sqlite only; no postgres. Completely untested since poetry move. if: ${{ contains(github.ref, 'pypy') && !failure() && !cancelled() && needs.changes.outputs.trial == 'true' }} needs: - linting-done - changes runs-on: ubuntu-latest strategy: matrix: python-version: ["pypy-3.8"] extras: ["all"] steps: - uses: actions/checkout@v4 # Install libs necessary for PyPy to build binary wheels for dependencies - run: sudo apt-get -qq install xmlsec1 libxml2-dev libxslt-dev - uses: matrix-org/setup-python-poetry@v1 with: python-version: ${{ matrix.python-version }} poetry-version: "1.3.2" extras: ${{ matrix.extras }} - run: poetry run trial --jobs=2 tests - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true sytest: if: ${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true' }} needs: - calculate-test-jobs - changes runs-on: ubuntu-latest container: image: matrixdotorg/sytest-synapse:${{ matrix.job.sytest-tag }} volumes: - ${{ github.workspace }}:/src env: SYTEST_BRANCH: ${{ github.head_ref }} POSTGRES: ${{ matrix.job.postgres && 1}} MULTI_POSTGRES: ${{ (matrix.job.postgres == 'multi-postgres') || '' }} ASYNCIO_REACTOR: ${{ (matrix.job.reactor == 'asyncio') || '' }} WORKERS: ${{ matrix.job.workers && 1 }} BLACKLIST: ${{ matrix.job.workers && 'synapse-blacklist-with-workers' }} TOP: ${{ github.workspace }} strategy: fail-fast: false matrix: job: ${{ fromJson(needs.calculate-test-jobs.outputs.sytest_test_matrix) }} steps: - uses: actions/checkout@v4 - name: Prepare test blacklist run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 - name: Run SyTest run: /bootstrap.sh synapse working-directory: /src - name: Summarise results.tap if: ${{ always() }} run: /sytest/scripts/tap_to_gha.pl /logs/results.tap - name: Upload SyTest logs uses: actions/upload-artifact@v4 if: ${{ always() }} with: name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.job.*, ', ') }}) path: | /logs/results.tap /logs/**/*.log* export-data: if: ${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true'}} # Allow previous steps to be skipped, but not fail needs: [linting-done, portdb, changes] runs-on: ubuntu-latest env: TOP: ${{ github.workspace }} services: postgres: image: postgres ports: - 5432:5432 env: POSTGRES_PASSWORD: "postgres" POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8" options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - run: sudo apt-get -qq install xmlsec1 postgresql-client - uses: matrix-org/setup-python-poetry@v1 with: poetry-version: "1.3.2" extras: "postgres" - run: .ci/scripts/test_export_data_command.sh env: PGHOST: localhost PGUSER: postgres PGPASSWORD: postgres PGDATABASE: postgres portdb: if: ${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true'}} # Allow previous steps to be skipped, but not fail needs: - linting-done - changes runs-on: ubuntu-latest strategy: matrix: include: - python-version: "3.8" postgres-version: "11" - python-version: "3.11" postgres-version: "15" services: postgres: image: postgres:${{ matrix.postgres-version }} ports: - 5432:5432 env: POSTGRES_PASSWORD: "postgres" POSTGRES_INITDB_ARGS: "--lc-collate C --lc-ctype C --encoding UTF8" options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - name: Add PostgreSQL apt repository # We need a version of pg_dump that can handle the version of # PostgreSQL being tested against. The Ubuntu package repository lags # behind new releases, so we have to use the PostreSQL apt repository. # Steps taken from https://www.postgresql.org/download/linux/ubuntu/ run: | sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update - run: sudo apt-get -qq install xmlsec1 postgresql-client - uses: matrix-org/setup-python-poetry@v1 with: python-version: ${{ matrix.python-version }} poetry-version: "1.3.2" extras: "postgres" - run: .ci/scripts/test_synapse_port_db.sh id: run_tester_script env: PGHOST: localhost PGUSER: postgres PGPASSWORD: postgres PGDATABASE: postgres - name: "Upload schema differences" uses: actions/upload-artifact@v4 if: ${{ failure() && !cancelled() && steps.run_tester_script.outcome == 'failure' }} with: name: Schema dumps path: | unported.sql ported.sql schema_diff complement: if: "${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true' }}" needs: - linting-done - changes runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - arrangement: monolith database: SQLite - arrangement: monolith database: Postgres - arrangement: workers database: Postgres steps: - name: Run actions/checkout@v4 for synapse uses: actions/checkout@v4 with: path: synapse - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 - name: Prepare Complement's Prerequisites run: synapse/.ci/scripts/setup_complement_prerequisites.sh - uses: actions/setup-go@v5 with: cache-dependency-path: complement/go.sum go-version-file: complement/go.mod # use p=1 concurrency as GHA boxes are underpowered and don't like running tons of synapses at once. - run: | set -o pipefail COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -p 1 -json 2>&1 | synapse/.ci/scripts/gotestfmt shell: bash env: POSTGRES: ${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS: ${{ (matrix.arrangement == 'workers') && 1 || '' }} name: Run Complement Tests cargo-test: if: ${{ needs.changes.outputs.rust == 'true' }} runs-on: ubuntu-latest needs: - linting-done - changes steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 - run: cargo test # We want to ensure that the cargo benchmarks still compile, which requires a # nightly compiler. cargo-bench: if: ${{ needs.changes.outputs.rust == 'true' }} runs-on: ubuntu-latest needs: - linting-done - changes steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@master with: toolchain: nightly-2022-12-01 - uses: Swatinem/rust-cache@v2 - run: cargo bench --no-run # a job which marks all the other jobs as complete, thus allowing PRs to be merged. tests-done: if: ${{ always() }} needs: - trial - trial-olddeps - sytest - export-data - portdb - complement - cargo-test - cargo-bench - linting-done runs-on: ubuntu-latest steps: - uses: matrix-org/done-action@v2 with: needs: ${{ toJSON(needs) }} # Various bits are skipped if there was no applicable changes. # The newsfile lint may be skipped on non PR builds. skippable: | trial trial-olddeps sytest portdb export-data complement lint-newsfile cargo-test cargo-bench synapse-1.100.0/.github/workflows/triage-incoming.yml000066400000000000000000000005431455622526000225400ustar00rootroot00000000000000name: Move new issues into the issue triage board on: issues: types: [ opened ] jobs: triage: uses: matrix-org/backend-meta/.github/workflows/triage-incoming.yml@v2 with: project_id: 'PVT_kwDOAIB0Bs4AFDdZ' content_id: ${{ github.event.issue.node_id }} secrets: github_access_token: ${{ secrets.ELEMENT_BOT_TOKEN }} synapse-1.100.0/.github/workflows/triage_labelled.yml000066400000000000000000000024471455622526000225700ustar00rootroot00000000000000name: Move labelled issues to correct projects on: issues: types: [ labeled ] jobs: move_needs_info: name: Move X-Needs-Info on the triage board runs-on: ubuntu-latest if: > contains(github.event.issue.labels.*.name, 'X-Needs-Info') steps: - uses: actions/add-to-project@main id: add_project with: project-url: "https://github.com/orgs/matrix-org/projects/67" github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - name: Set status env: GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} run: | gh api graphql -f query=' mutation( $project: ID! $item: ID! $fieldid: ID! $columnid: String! ) { updateProjectV2ItemFieldValue( input: { projectId: $project itemId: $item fieldId: $fieldid value: { singleSelectOptionId: $columnid } } ) { projectV2Item { id } } }' -f project="PVT_kwDOAIB0Bs4AFDdZ" -f item=${{ steps.add_project.outputs.itemId }} -f fieldid="PVTSSF_lADOAIB0Bs4AFDdZzgC6ZA4" -f columnid=ba22e43c --silent synapse-1.100.0/.github/workflows/twisted_trunk.yml000066400000000000000000000164251455622526000224000ustar00rootroot00000000000000name: Twisted Trunk on: schedule: - cron: 0 8 * * * workflow_dispatch: # NB: inputs are only present when this workflow is dispatched manually. # (The default below is the default field value in the form to trigger # a manual dispatch). Otherwise the inputs will evaluate to null. inputs: twisted_ref: description: Commit, branch or tag to checkout from upstream Twisted. required: false default: 'trunk' type: string concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: check_repo: # Prevent this workflow from running on any fork of Synapse other than element-hq/synapse, as it is # only useful to the Synapse core team. # All other workflow steps depend on this one, thus if 'should_run_workflow' is not 'true', the rest # of the workflow will be skipped as well. if: github.repository == 'element-hq/synapse' runs-on: ubuntu-latest outputs: should_run_workflow: ${{ steps.check_condition.outputs.should_run_workflow }} steps: - id: check_condition run: echo "should_run_workflow=${{ github.repository == 'element-hq/synapse' }}" >> "$GITHUB_OUTPUT" mypy: needs: check_repo if: needs.check_repo.outputs.should_run_workflow == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - uses: matrix-org/setup-python-poetry@v1 with: python-version: "3.x" extras: "all" - run: | poetry remove twisted poetry add --extras tls git+https://github.com/twisted/twisted.git#${{ inputs.twisted_ref || 'trunk' }} poetry install --no-interaction --extras "all test" - name: Remove unhelpful options from mypy config run: sed -e '/warn_unused_ignores = True/d' -e '/warn_redundant_casts = True/d' -i mypy.ini - run: poetry run mypy trial: needs: check_repo if: needs.check_repo.outputs.should_run_workflow == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: sudo apt-get -qq install xmlsec1 - name: Install Rust uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - uses: matrix-org/setup-python-poetry@v1 with: python-version: "3.x" extras: "all test" - run: | poetry remove twisted poetry add --extras tls git+https://github.com/twisted/twisted.git#trunk poetry install --no-interaction --extras "all test" - run: poetry run trial --jobs 2 tests - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} # Note: Dumps to workflow logs instead of using actions/upload-artifact # This keeps logs colocated with failing jobs # It also ignores find's exit code; this is a best effort affair run: >- find _trial_temp -name '*.log' -exec echo "::group::{}" \; -exec cat {} \; -exec echo "::endgroup::" \; || true sytest: needs: check_repo if: needs.check_repo.outputs.should_run_workflow == 'true' runs-on: ubuntu-latest container: # We're using ubuntu:focal because it uses Python 3.8 which is our minimum supported Python version. # This job is a canary to warn us about unreleased twisted changes that would cause problems for us if # they were to be released immediately. For simplicity's sake (and to save CI runners) we use the oldest # version, assuming that any incompatibilities on newer versions would also be present on the oldest. image: matrixdotorg/sytest-synapse:focal volumes: - ${{ github.workspace }}:/src steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Patch dependencies # Note: The poetry commands want to create a virtualenv in /src/.venv/, # but the sytest-synapse container expects it to be in /venv/. # We symlink it before running poetry so that poetry actually # ends up installing to `/venv`. run: | ln -s -T /venv /src/.venv poetry remove twisted poetry add --extras tls git+https://github.com/twisted/twisted.git#trunk poetry install --no-interaction --extras "all test" working-directory: /src - name: Run SyTest run: /bootstrap.sh synapse working-directory: /src env: # Use offline mode to avoid reinstalling the pinned version of # twisted. OFFLINE: 1 - name: Summarise results.tap if: ${{ always() }} run: /sytest/scripts/tap_to_gha.pl /logs/results.tap - name: Upload SyTest logs uses: actions/upload-artifact@v4 if: ${{ always() }} with: name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }}) path: | /logs/results.tap /logs/**/*.log* complement: needs: check_repo if: "!failure() && !cancelled() && needs.check_repo.outputs.should_run_workflow == 'true'" runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - arrangement: monolith database: SQLite - arrangement: monolith database: Postgres - arrangement: workers database: Postgres steps: - name: Run actions/checkout@v4 for synapse uses: actions/checkout@v4 with: path: synapse - name: Prepare Complement's Prerequisites run: synapse/.ci/scripts/setup_complement_prerequisites.sh - uses: actions/setup-go@v5 with: cache-dependency-path: complement/go.sum go-version-file: complement/go.mod # This step is specific to the 'Twisted trunk' test run: - name: Patch dependencies run: | set -x DEBIAN_FRONTEND=noninteractive sudo apt-get install -yqq python3 pipx pipx install poetry==1.3.2 poetry remove -n twisted poetry add -n --extras tls git+https://github.com/twisted/twisted.git#trunk poetry lock --no-update working-directory: synapse - run: | set -o pipefail TEST_ONLY_SKIP_DEP_HASH_VERIFICATION=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | synapse/.ci/scripts/gotestfmt shell: bash name: Run Complement Tests # open an issue if the build fails, so we know about it. open-issue: if: failure() && needs.check_repo.outputs.should_run_workflow == 'true' needs: - mypy - trial - sytest - complement runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: update_existing: true filename: .ci/twisted_trunk_build_failed_issue_template.md synapse-1.100.0/.gitignore000066400000000000000000000016731455622526000153410ustar00rootroot00000000000000# filename patterns *~ .*.swp .#* *.deb *.egg *.egg-info *.lock *.py[cod] *.snap *.tac _trial_temp/ _trial_temp*/ /out .DS_Store __pycache__/ # We do want poetry, cargo and flake lockfiles. !poetry.lock !Cargo.lock !flake.lock # stuff that is likely to exist when you run a server locally /*.db /*.log /*.log.* /*.log.config /*.pid /.python-version /*.signing.key /env/ /.venv*/ /homeserver*.yaml /logs /media_store/ /uploads /homeserver-config-overrides.d # For direnv users /.envrc .direnv/ # For nix/devenv users .devenv/ # IDEs /.idea/ /.ropeproject/ /.vscode/ # build products !/.coveragerc /.coverage* /.mypy_cache/ /.tox /.tox-pg-container /build/ /coverage.* /dist/ /docs/build/ /dev-docs/_build/ /htmlcov /pip-wheel-metadata/ # docs book/ # complement /complement-* /main.tar.gz # rust /target/ /synapse/*.so # Poetry will create a setup.py, which we don't want to include. /setup.py # Don't include users' poetry configs /poetry.toml synapse-1.100.0/.rustfmt.toml000066400000000000000000000000431455622526000160160ustar00rootroot00000000000000group_imports = "StdExternalCrate" synapse-1.100.0/AUTHORS.rst000066400000000000000000000031131455622526000152170ustar00rootroot00000000000000The following is an incomplete list of people outside the core team who have contributed to Synapse. It is no longer maintained: more recent contributions are listed in the `changelog `_. ---- Turned to Dust * ArchLinux installation instructions Brabo * Installation instruction fixes Ivan Shapovalov * contrib/systemd: a sample systemd unit file and a logger configuration Eric Myhre * Fix bug where ``media_store_path`` config option was ignored by v0 content repository API. Muthu Subramanian * Add SAML2 support for registration and login. Steven Hammerton * Add CAS support for registration and login. Mads Robin Christensen * CentOS 7 installation instructions. Florent Violleau * Add Raspberry Pi installation instructions and general troubleshooting items Niklas Riekenbrauck * Add JWT support for registration and login Christoph Witzany * Add LDAP support for authentication Pierre Jaury * Docker packaging Serban Constantin * Small bug fix Joseph Weston * Add admin API for querying HS version Benjamin Saunders * Documentation improvements Werner Sembach * Automatically remove a group/community when it is empty synapse-1.100.0/CHANGES.md000066400000000000000000006076231455622526000147520ustar00rootroot00000000000000# Synapse 1.100.0 (2024-01-30) No significant changes since 1.100.0rc3. # Synapse 1.100.0rc3 (2024-01-24) ### Bugfixes - Fix database performance regression due to changing Postgres table statistics. Introduced in v1.100.0rc1. ([\#16849](https://github.com/element-hq/synapse/issues/16849)) # Synapse 1.100.0rc2 (2024-01-24) This version is the same as 1.100.0rc1 but with fixes to the release process. ### Internal Changes - Downgrade the `download-artifact` and `upload-artifact` actions to v3 due to breaking changes. ([\#16847](https://github.com/element-hq/synapse/issues/16847)) # Synapse 1.100.0rc1 (2024-01-23) *This version was never released to PyPI or the Debian repository due to failures in the automatic part of the release process.* ### Features - Advertise experimental support for [MSC4028](https://github.com/matrix-org/matrix-spec-proposals/pull/4028) through `/_matrix/clients/versions` if enabled. Contributed by @hanadi92. ([\#16787](https://github.com/element-hq/synapse/issues/16787)) ### Bugfixes - Handle wildcard type filters properly for room messages endpoint. Contributed by Mo Balaa. ([\#14984](https://github.com/element-hq/synapse/issues/14984)) ### Improved Documentation - Add a link to the "Request log format" explainer on the "Logging sample config" documentation page. ([\#16778](https://github.com/element-hq/synapse/issues/16778)) - Fix broken links in issue templates and documentation. ([\#16810](https://github.com/element-hq/synapse/issues/16810)) - NGINX listen http2 deprecation in documentation template for reverse proxy. ([\#16831](https://github.com/element-hq/synapse/issues/16831)) ### Internal Changes - Faster partial join to room with complex auth graph. ([\#7](https://github.com/element-hq/synapse/issues/7)) - Improve DB performance of calculating badge counts for push. ([\#16756](https://github.com/element-hq/synapse/issues/16756)) - Split up deleting devices into batches. ([\#16766](https://github.com/element-hq/synapse/issues/16766)) - Remove CI check for sign-off as we require a CLA signature instead. ([\#16776](https://github.com/element-hq/synapse/issues/16776)) - Ensure CI fails when linting fails to make sure auto-merge does the correct thing. ([\#16781](https://github.com/element-hq/synapse/issues/16781)) - Faster load recents for sync by reducing amount of state pulled out. ([\#16783](https://github.com/element-hq/synapse/issues/16783)) - Reduce amount of state pulled out when querying federation hierachy. ([\#16785](https://github.com/element-hq/synapse/issues/16785)) - Pull less state out of the DB when we retry fetching old events during backfill. ([\#16788](https://github.com/element-hq/synapse/issues/16788)) - Optimize query for fetching to-device messages in `/sync`. ([\#16805](https://github.com/element-hq/synapse/issues/16805)) - Reject OIDC config when `client_secret` isn't specified, but the auth method requires one. ([\#16806](https://github.com/element-hq/synapse/issues/16806)) - Allow room creation but not publishing to continue if room publication rules are violated when creating a new room. ([\#16811](https://github.com/element-hq/synapse/issues/16811)) - Bump minimum supported Rust version to 1.65.0. ([\#16818](https://github.com/element-hq/synapse/issues/16818)) - Fixup copyright lines in file headers after the licensing change. ([\#16820](https://github.com/element-hq/synapse/issues/16820)) - Add a `--generate-only` option to the internal configuration/launch script for Complement. ([\#16828](https://github.com/element-hq/synapse/issues/16828)) - Preparatory work for tweaking performance of auth chain lookups. ([\#16833](https://github.com/element-hq/synapse/issues/16833)) - Speed up e2e device keys queries for bot accounts. ([\#16841](https://github.com/element-hq/synapse/issues/16841)) ### Updates to locked dependencies * Bump actions/cache from 3 to 4. ([\#16832](https://github.com/element-hq/synapse/issues/16832)) * Bump actions/download-artifact from 3 to 4. ([\#16795](https://github.com/element-hq/synapse/issues/16795)) * Bump actions/upload-artifact from 3 to 4. ([\#16796](https://github.com/element-hq/synapse/issues/16796)) * Bump anyhow from 1.0.75 to 1.0.79. ([\#16789](https://github.com/element-hq/synapse/issues/16789)) * Bump authlib from 1.2.1 to 1.3.0. ([\#16801](https://github.com/element-hq/synapse/issues/16801)) * Bump dawidd6/action-download-artifact from 2.28.0 to 3.0.0. ([\#16794](https://github.com/element-hq/synapse/issues/16794)) * Bump immutabledict from 4.0.0 to 4.1.0. ([\#16812](https://github.com/element-hq/synapse/issues/16812)) * Bump isort from 5.13.1 to 5.13.2. ([\#16835](https://github.com/element-hq/synapse/issues/16835)) * Bump lxml from 4.9.3 to 5.1.0. ([\#16813](https://github.com/element-hq/synapse/issues/16813)) * Bump pillow from 10.1.0 to 10.2.0. ([\#16802](https://github.com/element-hq/synapse/issues/16802)) * Bump pydantic from 2.5.2 to 2.5.3. ([\#16836](https://github.com/element-hq/synapse/issues/16836)) * Bump pyo3 from 0.20.0 to 0.20.2. ([\#16791](https://github.com/element-hq/synapse/issues/16791)) * Bump regex from 1.9.6 to 1.10.3. ([\#16837](https://github.com/element-hq/synapse/issues/16837)) * Bump ruff from 0.1.13 to 0.1.14. ([\#16838](https://github.com/element-hq/synapse/issues/16838)) * Bump ruff from 0.1.7 to 0.1.13. ([\#16814](https://github.com/element-hq/synapse/issues/16814)) * Bump sentry-sdk from 1.35.0 to 1.39.1. ([\#16799](https://github.com/element-hq/synapse/issues/16799)) * Bump serde_json from 1.0.108 to 1.0.111. ([\#16792](https://github.com/element-hq/synapse/issues/16792)) * Bump service-identity from 23.1.0 to 24.1.0. ([\#16816](https://github.com/element-hq/synapse/issues/16816)) * Bump types-commonmark from 0.9.2.4 to 0.9.2.20240106. ([\#16797](https://github.com/element-hq/synapse/issues/16797)) * Bump types-jsonschema from 4.20.0.0 to 4.20.0.20240105. ([\#16800](https://github.com/element-hq/synapse/issues/16800)) * Bump types-jsonschema from 4.20.0.20240105 to 4.21.0.20240118. ([\#16834](https://github.com/element-hq/synapse/issues/16834)) * Bump types-netaddr from 0.9.0.1 to 0.10.0.20240106. ([\#16839](https://github.com/element-hq/synapse/issues/16839)) * Bump typing-extensions from 4.8.0 to 4.9.0. ([\#16815](https://github.com/element-hq/synapse/issues/16815)) # Synapse 1.99.0 (2024-01-16) Synapse 1.99.0 is the first Synapse release under an AGPLv3.0 licence (with CLA to enable Element to sell AGPL exceptions). You can read more about this here: - https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/ - https://element.io/blog/element-to-adopt-agplv3/ - https://element.io/blog/synapse-now-lives-at-github-com-element-hq-synapse/ No significant changes since 1.99.0rc1. # Synapse 1.99.0rc1 (2024-01-09) ### Features - Add [config options](https://element-hq.github.io/synapse/v1.99/usage/configuration/config_documentation.html#server_notices) to set the avatar and the topic of the server notices room, as well as the avatar of the server notices user. ([\#16679](https://github.com/matrix-org/synapse/issues/16679)) - Add config option [`email.notif_delay_before_mail`](https://element-hq.github.io/synapse/v1.99/usage/configuration/config_documentation.html#email) to tweak the delay before an email is sent following a notification. ([\#16696](https://github.com/matrix-org/synapse/issues/16696)) - Add new configuration option [`sentry.environment`](https://element-hq.github.io/synapse/v1.99/usage/configuration/config_documentation.html#sentry) for improved system monitoring. Contributed by @zeeshanrafiqrana. ([\#16738](https://github.com/matrix-org/synapse/issues/16738)) - Filter out rooms from the room directory being served to other homeservers when those rooms block that homeserver by their Access Control Lists. ([\#16759](https://github.com/element-hq/synapse/issues/16759)) ### Bugfixes - Fix a long-standing bug where the signing keys generated by Synapse were world-readable. Contributed by Fabian Klemp. ([\#16740](https://github.com/matrix-org/synapse/issues/16740)) - Fix email verification redirection. Contributed by Fadhlan Ridhwanallah. ([\#16761](https://github.com/element-hq/synapse/issues/16761)) - Fixed a bug that prevented users from being queried by display name if it contains non-ASCII characters. ([\#16767](https://github.com/element-hq/synapse/issues/16767)) - Allow reactivate user without password with Admin API in some edge cases. ([\#16770](https://github.com/element-hq/synapse/issues/16770)) - Adds the `recursion_depth` parameter to the response of the /relations endpoint if MSC3981 recursion is being performed. ([\#16775](https://github.com/element-hq/synapse/issues/16775)) ### Improved Documentation - Added version picker for Synapse documentation. Contributed by @Dmytro27Ind. ([\#16533](https://github.com/matrix-org/synapse/issues/16533)) - Clarify that `password_config.enabled: "only_for_reauth"` does not allow new logins to be created using password auth. ([\#16737](https://github.com/matrix-org/synapse/issues/16737)) - Remove value from header in configuration documentation for `refresh_token_lifetime`. ([\#16763](https://github.com/element-hq/synapse/issues/16763)) - Add another custom statistics collection server to the documentation. Contributed by @loelkes. ([\#16769](https://github.com/element-hq/synapse/issues/16769)) ### Internal Changes - Remove run-once workflow after adding the version picker to the documentation. ([\#9453](https://github.com/element-hq/synapse/issues/9453)) - Update the implementation of [MSC2965](https://github.com/matrix-org/matrix-spec-proposals/pull/2965) (OIDC Provider discovery). ([\#16726](https://github.com/matrix-org/synapse/issues/16726)) - Move the rust stubs inline for better IDE integration. ([\#16757](https://github.com/element-hq/synapse/issues/16757)) - Fix sample config doc CI. ([\#16758](https://github.com/element-hq/synapse/issues/16758)) - Simplify event internal metadata class. ([\#16762](https://github.com/element-hq/synapse/issues/16762), [\#16780](https://github.com/element-hq/synapse/issues/16780)) - Sign the published docker image using [cosign](https://docs.sigstore.dev/). ([\#16774](https://github.com/element-hq/synapse/issues/16774)) - Port `EventInternalMetadata` class to Rust. ([\#16782](https://github.com/element-hq/synapse/issues/16782)) ### Updates to locked dependencies * Bump actions/setup-go from 4 to 5. ([\#16749](https://github.com/matrix-org/synapse/issues/16749)) * Bump actions/setup-python from 4 to 5. ([\#16748](https://github.com/matrix-org/synapse/issues/16748)) * Bump immutabledict from 3.0.0 to 4.0.0. ([\#16743](https://github.com/matrix-org/synapse/issues/16743)) * Bump isort from 5.12.0 to 5.13.0. ([\#16745](https://github.com/matrix-org/synapse/issues/16745)) * Bump isort from 5.13.0 to 5.13.1. ([\#16752](https://github.com/matrix-org/synapse/issues/16752)) * Bump pydantic from 2.5.1 to 2.5.2. ([\#16747](https://github.com/matrix-org/synapse/issues/16747)) * Bump ruff from 0.1.6 to 0.1.7. ([\#16746](https://github.com/matrix-org/synapse/issues/16746)) * Bump types-setuptools from 68.2.0.2 to 69.0.0.0. ([\#16744](https://github.com/matrix-org/synapse/issues/16744)) # Synapse 1.98.0 (2023-12-12) Synapse 1.98.0 will be the last Synapse release in 2023; the regular release cadence will resume in January 2024. Synapse will soon be forked by Element under an AGPLv3.0 licence (with CLA, for proprietary dual licensing). You can read more about this here: - https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/ - https://element.io/blog/element-to-adopt-agplv3/ The Matrix.org Foundation copy of the project will be archived. Any changes needed by server administrators will be communicated via our usual announcements channels, but we are striving to make this as seamless as possible. No significant changes since 1.98.0rc1. # Synapse 1.98.0rc1 (2023-12-05) ### Features - Synapse now declares support for Matrix v1.7, v1.8, and v1.9. ([\#16707](https://github.com/matrix-org/synapse/issues/16707)) - Add `on_user_login` [module API](https://matrix-org.github.io/synapse/latest/modules/writing_a_module.html) callback for when a user logs in. ([\#15207](https://github.com/matrix-org/synapse/issues/15207)) - Support [MSC4069: Inhibit profile propagation](https://github.com/matrix-org/matrix-spec-proposals/pull/4069). ([\#16636](https://github.com/matrix-org/synapse/issues/16636)) - Restore tracking of requests and monthly active users when delegating authentication via [MSC3861](https://github.com/matrix-org/synapse/pull/16672) to an OIDC provider. ([\#16672](https://github.com/matrix-org/synapse/issues/16672)) - Add an autojoin setting for server notices rooms, so users may be joined directly instead of receiving an invite. ([\#16699](https://github.com/matrix-org/synapse/issues/16699)) - Follow redirects when downloading media over federation (per [MSC3860](https://github.com/matrix-org/matrix-spec-proposals/pull/3860)). ([\#16701](https://github.com/matrix-org/synapse/issues/16701)) ### Bugfixes - Enable refreshable tokens on the admin registration endpoint. ([\#16642](https://github.com/matrix-org/synapse/issues/16642)) - Consistently bypass rate limits when using the server notice admin API. ([\#16670](https://github.com/matrix-org/synapse/issues/16670)) - Fix a bug introduced in Synapse 1.7.2 where rooms whose power levels lacked an `events` field could not be upgraded. ([\#16725](https://github.com/matrix-org/synapse/issues/16725)) - Fix `GET /_synapse/admin/v1/federation/destinations` [admin API](https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html) returning null (instead of 0) for `retry_last_ts` and `retry_interval`. ([\#16729](https://github.com/matrix-org/synapse/issues/16729)) ### Improved Documentation - Add schema rollback information to documentation. ([\#16661](https://github.com/matrix-org/synapse/issues/16661)) - Fix poetry version typo in the [contributors' guide](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html). ([\#16695](https://github.com/matrix-org/synapse/issues/16695)) - Switch the example UNIX socket paths to `/run`. Add HAProxy example configuration for UNIX sockets. ([\#16700](https://github.com/matrix-org/synapse/issues/16700)) - Add documentation for how to validate the configuration file with `synapse.config` script. ([\#16714](https://github.com/matrix-org/synapse/issues/16714)) ### Internal Changes - Clean-up unused tables. ([\#16522](https://github.com/matrix-org/synapse/issues/16522)) - Reduce a little database load while processing state auth chains. ([\#16552](https://github.com/matrix-org/synapse/issues/16552)) - Reduce database load of pruning old `user_ips`. ([\#16667](https://github.com/matrix-org/synapse/issues/16667)) - Reduce DB load when forget on leave setting is disabled. ([\#16668](https://github.com/matrix-org/synapse/issues/16668)) - Ignore `encryption_enabled_by_default_for_room_type` setting when creating server notices room, since the notices will be send unencrypted anyway. ([\#16677](https://github.com/matrix-org/synapse/issues/16677)) - Correctly read the to-device stream ID on startup using SQLite. ([\#16682](https://github.com/matrix-org/synapse/issues/16682)) - Reoranganise test files. ([\#16684](https://github.com/matrix-org/synapse/issues/16684)) - Remove old full schema dumps which are no longer used. ([\#16697](https://github.com/matrix-org/synapse/issues/16697)) - Raise poetry-core upper bound to <=1.8.1. This allows contributors to import Synapse after `poetry install`ing with Poetry 1.6 and above. Contributed by Mo Balaa. ([\#16702](https://github.com/matrix-org/synapse/issues/16702)) - Add a workflow to try and automatically fixup linting in a PR. ([\#16704](https://github.com/matrix-org/synapse/issues/16704)) ### Updates to locked dependencies * Bump cryptography from 41.0.5 to 41.0.6. ([\#16703](https://github.com/matrix-org/synapse/issues/16703)) * Bump cryptography from 41.0.6 to 41.0.7. ([\#16721](https://github.com/matrix-org/synapse/issues/16721)) * Bump idna from 3.4 to 3.6. ([\#16720](https://github.com/matrix-org/synapse/issues/16720)) * Bump jsonschema from 4.19.1 to 4.20.0. ([\#16692](https://github.com/matrix-org/synapse/issues/16692)) * Bump matrix-org/netlify-pr-preview from 2 to 3. ([\#16719](https://github.com/matrix-org/synapse/issues/16719)) * Bump phonenumbers from 8.13.23 to 8.13.26. ([\#16722](https://github.com/matrix-org/synapse/issues/16722)) * Bump prometheus-client from 0.18.0 to 0.19.0. ([\#16691](https://github.com/matrix-org/synapse/issues/16691)) * Bump pyasn1 from 0.5.0 to 0.5.1. ([\#16689](https://github.com/matrix-org/synapse/issues/16689)) * Bump pydantic from 2.4.2 to 2.5.1. ([\#16663](https://github.com/matrix-org/synapse/issues/16663)) * Bump pyo3 (0.19.2→0.20.0), pythonize (0.19.0→0.20.0) and pyo3-log (0.8.1→0.9.0). ([\#16673](https://github.com/matrix-org/synapse/issues/16673)) * Bump pyopenssl from 23.2.0 to 23.3.0. ([\#16662](https://github.com/matrix-org/synapse/issues/16662)) * Bump ruff from 0.1.4 to 0.1.6. ([\#16690](https://github.com/matrix-org/synapse/issues/16690)) * Bump sentry-sdk from 1.32.0 to 1.35.0. ([\#16666](https://github.com/matrix-org/synapse/issues/16666)) * Bump serde from 1.0.192 to 1.0.193. ([\#16693](https://github.com/matrix-org/synapse/issues/16693)) * Bump sphinx-autodoc2 from 0.4.2 to 0.5.0. ([\#16723](https://github.com/matrix-org/synapse/issues/16723)) * Bump types-jsonschema from 4.19.0.4 to 4.20.0.0. ([\#16724](https://github.com/matrix-org/synapse/issues/16724)) * Bump types-pillow from 10.1.0.0 to 10.1.0.2. ([\#16664](https://github.com/matrix-org/synapse/issues/16664)) * Bump types-psycopg2 from 2.9.21.15 to 2.9.21.16. ([\#16665](https://github.com/matrix-org/synapse/issues/16665)) * Bump types-setuptools from 68.2.0.0 to 68.2.0.2. ([\#16688](https://github.com/matrix-org/synapse/issues/16688)) # Synapse 1.97.0 (2023-11-28) Synapse will soon be forked by Element under an AGPLv3.0 licence (with CLA, for proprietary dual licensing). You can read more about this here: - https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/ - https://element.io/blog/element-to-adopt-agplv3/ The Matrix.org Foundation copy of the project will be archived. Any changes needed by server administrators will be communicated via our usual announcements channels, but we are striving to make this as seamless as possible. No significant changes since 1.97.0rc1. # Synapse 1.97.0rc1 (2023-11-21) ### Features - Add support for asynchronous uploads as defined by [MSC2246](https://github.com/matrix-org/matrix-spec-proposals/pull/2246). Contributed by @sumnerevans at @beeper. ([\#15503](https://github.com/matrix-org/synapse/issues/15503)) - Improve the performance of some operations in multi-worker deployments. ([\#16613](https://github.com/matrix-org/synapse/issues/16613), [\#16616](https://github.com/matrix-org/synapse/issues/16616)) ### Bugfixes - Fix a long-standing bug where some queries updated the same row twice. Introduced in Synapse 1.57.0. ([\#16609](https://github.com/matrix-org/synapse/issues/16609)) - Fix a long-standing bug where Synapse would not unbind third-party identifiers for Application Service users when deactivated and would not emit a compliant response. ([\#16617](https://github.com/matrix-org/synapse/issues/16617)) - Fix sending out of order `POSITION` over replication, causing additional database load. ([\#16639](https://github.com/matrix-org/synapse/issues/16639)) ### Improved Documentation - Note that the option [`outbound_federation_restricted_to`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#outbound_federation_restricted_to) was added in Synapse 1.89.0, and fix a nearby formatting error. ([\#16628](https://github.com/matrix-org/synapse/issues/16628)) - Update parameter information for the `/timestamp_to_event` admin API. ([\#16631](https://github.com/matrix-org/synapse/issues/16631)) - Provide an example for a common encrypted media response from the admin user media API and mention possible null values. ([\#16654](https://github.com/matrix-org/synapse/issues/16654)) ### Internal Changes - Remove whole table locks on push rule modifications. Contributed by Nick @ Beeper (@fizzadar). ([\#16051](https://github.com/matrix-org/synapse/issues/16051)) - Support reactor tick timings on more types of event loops. ([\#16532](https://github.com/matrix-org/synapse/issues/16532)) - Improve type hints. ([\#16564](https://github.com/matrix-org/synapse/issues/16564), [\#16611](https://github.com/matrix-org/synapse/issues/16611), [\#16612](https://github.com/matrix-org/synapse/issues/16612)) - Avoid executing no-op queries. ([\#16583](https://github.com/matrix-org/synapse/issues/16583)) - Simplify persistence code to be per-room. ([\#16584](https://github.com/matrix-org/synapse/issues/16584)) - Use standard SQL helpers in persistence code. ([\#16585](https://github.com/matrix-org/synapse/issues/16585)) - Avoid updating the stream cache unnecessarily. ([\#16586](https://github.com/matrix-org/synapse/issues/16586)) - Improve performance when using opentracing. ([\#16589](https://github.com/matrix-org/synapse/issues/16589)) - Run push rule evaluator setup in parallel. ([\#16590](https://github.com/matrix-org/synapse/issues/16590)) - Improve tests of the SQL generator. ([\#16596](https://github.com/matrix-org/synapse/issues/16596)) - Use more generic database methods. ([\#16615](https://github.com/matrix-org/synapse/issues/16615)) - Use `dbname` instead of the deprecated `database` connection parameter for psycopg2. ([\#16618](https://github.com/matrix-org/synapse/issues/16618)) - Add an internal [Admin API endpoint](https://matrix-org.github.io/synapse/v1.97/usage/configuration/config_documentation.html#allow-replacing-master-cross-signing-key-without-user-interactive-auth) to temporarily grant the ability to update an existing cross-signing key without UIA. ([\#16634](https://github.com/matrix-org/synapse/issues/16634)) - Improve references to GitHub issues. ([\#16637](https://github.com/matrix-org/synapse/issues/16637), [\#16638](https://github.com/matrix-org/synapse/issues/16638)) - More efficiently handle no-op `POSITION` over replication. ([\#16640](https://github.com/matrix-org/synapse/issues/16640), [\#16655](https://github.com/matrix-org/synapse/issues/16655)) - Speed up deleting of device messages when deleting a device. ([\#16643](https://github.com/matrix-org/synapse/issues/16643)) - Speed up persisting large number of outliers. ([\#16649](https://github.com/matrix-org/synapse/issues/16649)) - Reduce max concurrency of background tasks, reducing potential max DB load. ([\#16656](https://github.com/matrix-org/synapse/issues/16656), [\#16660](https://github.com/matrix-org/synapse/issues/16660)) - Speed up purge room by adding an index to `event_push_summary`. ([\#16657](https://github.com/matrix-org/synapse/issues/16657)) ### Updates to locked dependencies * Bump prometheus-client from 0.17.1 to 0.18.0. ([\#16626](https://github.com/matrix-org/synapse/issues/16626)) * Bump pyicu from 2.11 to 2.12. ([\#16603](https://github.com/matrix-org/synapse/issues/16603)) * Bump requests-toolbelt from 0.10.1 to 1.0.0. ([\#16659](https://github.com/matrix-org/synapse/issues/16659)) * Bump ruff from 0.0.292 to 0.1.4. ([\#16600](https://github.com/matrix-org/synapse/issues/16600)) * Bump serde from 1.0.190 to 1.0.192. ([\#16627](https://github.com/matrix-org/synapse/issues/16627)) * Bump serde_json from 1.0.107 to 1.0.108. ([\#16604](https://github.com/matrix-org/synapse/issues/16604)) * Bump setuptools-rust from 1.8.0 to 1.8.1. ([\#16601](https://github.com/matrix-org/synapse/issues/16601)) * Bump towncrier from 23.6.0 to 23.11.0. ([\#16622](https://github.com/matrix-org/synapse/issues/16622)) * Bump treq from 22.2.0 to 23.11.0. ([\#16623](https://github.com/matrix-org/synapse/issues/16623)) * Bump twisted from 23.8.0 to 23.10.0. ([\#16588](https://github.com/matrix-org/synapse/issues/16588)) * Bump types-bleach from 6.1.0.0 to 6.1.0.1. ([\#16624](https://github.com/matrix-org/synapse/issues/16624)) * Bump types-jsonschema from 4.19.0.3 to 4.19.0.4. ([\#16599](https://github.com/matrix-org/synapse/issues/16599)) * Bump types-pyopenssl from 23.2.0.2 to 23.3.0.0. ([\#16625](https://github.com/matrix-org/synapse/issues/16625)) * Bump types-pyyaml from 6.0.12.11 to 6.0.12.12. ([\#16602](https://github.com/matrix-org/synapse/issues/16602)) # Synapse 1.96.1 (2023-11-17) Synapse will soon be forked by Element under an AGPLv3.0 licence (with CLA, for proprietary dual licensing). You can read more about this here: * https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/ * https://element.io/blog/element-to-adopt-agplv3/ The Matrix.org Foundation copy of the project will be archived. Any changes needed by server administrators will be communicated via our usual [announcements channels](https://matrix.to/#/#homeowners:matrix.org), but we are striving to make this as seamless as possible. This minor release was needed only because of CI-related trouble on [v1.96.0](https://github.com/matrix-org/synapse/releases/tag/v1.96.0), which was never released. ### Internal Changes - Fix building of wheels in CI. ([\#16653](https://github.com/matrix-org/synapse/issues/16653)) # Synapse 1.96.0 (2023-11-16) ### Bugfixes - Fix "'int' object is not iterable" error in `set_device_id_for_pushers` background update introduced in Synapse 1.95.0. ([\#16594](https://github.com/matrix-org/synapse/issues/16594)) # Synapse 1.96.0rc1 (2023-10-31) ### Features - Add experimental support to allow multiple workers to write to receipts stream. ([\#16432](https://github.com/matrix-org/synapse/issues/16432)) - Add a new module API for controller presence. ([\#16544](https://github.com/matrix-org/synapse/issues/16544)) - Add a new module API callback that allows adding extra fields to events' unsigned section when sent down to clients. ([\#16549](https://github.com/matrix-org/synapse/issues/16549)) - Improve the performance of claiming encryption keys. ([\#16565](https://github.com/matrix-org/synapse/issues/16565), [\#16570](https://github.com/matrix-org/synapse/issues/16570)) ### Bugfixes - Fixed a bug in the example Grafana dashboard that prevents it from finding the correct datasource. Contributed by @MichaelSasser. ([\#16471](https://github.com/matrix-org/synapse/issues/16471)) - Fix a long-standing, exceedingly rare edge case where the first event persisted by a new event persister worker might not be sent down `/sync`. ([\#16473](https://github.com/matrix-org/synapse/issues/16473), [\#16557](https://github.com/matrix-org/synapse/issues/16557), [\#16561](https://github.com/matrix-org/synapse/issues/16561), [\#16578](https://github.com/matrix-org/synapse/issues/16578), [\#16580](https://github.com/matrix-org/synapse/issues/16580)) - Fix long-standing bug where `/sync` incorrectly did not mark a room as `limited` in a sync requests when there were missing remote events. ([\#16485](https://github.com/matrix-org/synapse/issues/16485)) - Fix a bug introduced in Synapse 1.41 where HTTP(S) forward proxy authorization would fail when using basic HTTP authentication with a long `username:password` string. ([\#16504](https://github.com/matrix-org/synapse/issues/16504)) - Force TLS certificate verification in user registration script. ([\#16530](https://github.com/matrix-org/synapse/issues/16530)) - Fix long-standing bug where `/sync` could tightloop after restart when using SQLite. ([\#16540](https://github.com/matrix-org/synapse/issues/16540)) - Fix ratelimiting of message sending when using workers, where the ratelimit would only be applied after most of the work has been done. ([\#16558](https://github.com/matrix-org/synapse/issues/16558)) - Fix a long-standing bug where invited/knocking users would not leave during a room purge. ([\#16559](https://github.com/matrix-org/synapse/issues/16559)) ### Improved Documentation - Improve documentation of presence router. ([\#16529](https://github.com/matrix-org/synapse/issues/16529)) - Add a sentence to the [opentracing docs](https://matrix-org.github.io/synapse/latest/opentracing.html) on how you can have jaeger in a different place than synapse. ([\#16531](https://github.com/matrix-org/synapse/issues/16531)) - Correctly describe the meaning of unspecified rule lists in the [`alias_creation_rules`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#alias_creation_rules) and [`room_list_publication_rules`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#room_list_publication_rules) config options and improve their descriptions more generally. ([\#16541](https://github.com/matrix-org/synapse/issues/16541)) - Pin the recommended poetry version in [contributors' guide](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html). ([\#16550](https://github.com/matrix-org/synapse/issues/16550)) - Fix a broken link to the [client breakdown](https://matrix.org/ecosystem/clients/) in the README. ([\#16569](https://github.com/matrix-org/synapse/issues/16569)) ### Internal Changes - Improve performance of delete device messages query, cf issue [16479](https://github.com/matrix-org/synapse/issues/16479). ([\#16492](https://github.com/matrix-org/synapse/issues/16492)) - Reduce memory allocations. ([\#16505](https://github.com/matrix-org/synapse/issues/16505)) - Improve replication performance when purging rooms. ([\#16510](https://github.com/matrix-org/synapse/issues/16510)) - Run tests against Python 3.12. ([\#16511](https://github.com/matrix-org/synapse/issues/16511)) - Run trial & integration tests in continuous integration when `.ci` directory is modified. ([\#16512](https://github.com/matrix-org/synapse/issues/16512)) - Remove duplicate call to mark remote server 'awake' when using a federation sending worker. ([\#16515](https://github.com/matrix-org/synapse/issues/16515)) - Enable dirty runs on Complement CI, which is significantly faster. ([\#16520](https://github.com/matrix-org/synapse/issues/16520)) - Stop deleting from an unused table. ([\#16521](https://github.com/matrix-org/synapse/issues/16521)) - Improve type hints. ([\#16526](https://github.com/matrix-org/synapse/issues/16526), [\#16551](https://github.com/matrix-org/synapse/issues/16551)) - Fix running unit tests on Twisted trunk. ([\#16528](https://github.com/matrix-org/synapse/issues/16528)) - Reduce some spurious logging in worker mode. ([\#16555](https://github.com/matrix-org/synapse/issues/16555)) - Stop porting a table in port db that we're going to nuke and rebuild anyway. ([\#16563](https://github.com/matrix-org/synapse/issues/16563)) - Deal with warnings from running complement in CI. ([\#16567](https://github.com/matrix-org/synapse/issues/16567)) - Allow building with `setuptools_rust` 1.8.0. ([\#16574](https://github.com/matrix-org/synapse/issues/16574)) ### Updates to locked dependencies * Bump black from 23.10.0 to 23.10.1. ([\#16575](https://github.com/matrix-org/synapse/issues/16575)) * Bump black from 23.9.1 to 23.10.0. ([\#16538](https://github.com/matrix-org/synapse/issues/16538)) * Bump cryptography from 41.0.4 to 41.0.5. ([\#16572](https://github.com/matrix-org/synapse/issues/16572)) * Bump gitpython from 3.1.37 to 3.1.40. ([\#16534](https://github.com/matrix-org/synapse/issues/16534)) * Bump phonenumbers from 8.13.22 to 8.13.23. ([\#16576](https://github.com/matrix-org/synapse/issues/16576)) * Bump pygithub from 1.59.1 to 2.1.1. ([\#16535](https://github.com/matrix-org/synapse/issues/16535)) - Bump matrix-synapse-ldap3 from 0.2.2 to 0.3.0. ([\#16539](https://github.com/matrix-org/synapse/issues/16539)) * Bump serde from 1.0.189 to 1.0.190. ([\#16577](https://github.com/matrix-org/synapse/issues/16577)) * Bump setuptools-rust from 1.7.0 to 1.8.0. ([\#16574](https://github.com/matrix-org/synapse/issues/16574)) * Bump types-pillow from 10.0.0.3 to 10.1.0.0. ([\#16536](https://github.com/matrix-org/synapse/issues/16536)) * Bump types-psycopg2 from 2.9.21.14 to 2.9.21.15. ([\#16573](https://github.com/matrix-org/synapse/issues/16573)) * Bump types-requests from 2.31.0.2 to 2.31.0.10. ([\#16537](https://github.com/matrix-org/synapse/issues/16537)) * Bump urllib3 from 1.26.17 to 1.26.18. ([\#16516](https://github.com/matrix-org/synapse/issues/16516)) # Synapse 1.95.1 (2023-10-31) ## Security advisory The following issue is fixed in 1.95.1. - [GHSA-mp92-3jfm-3575](https://github.com/matrix-org/synapse/security/advisories/GHSA-mp92-3jfm-3575) / [CVE-2023-43796](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-43796) — Moderate Severity Cached device information of remote users can be queried from Synapse. This can be used to enumerate the remote users known to a homeserver. See the advisory for more details. If you have any questions, email security@matrix.org. # Synapse 1.95.0 (2023-10-24) ### Internal Changes - Build Debian packages for [Ubuntu 23.10 Mantic Minotaur](https://canonical.com/blog/canonical-releases-ubuntu-23-10-mantic-minotaur). ([\#16524](https://github.com/matrix-org/synapse/issues/16524)) # Synapse 1.95.0rc1 (2023-10-17) ### Bugfixes - Remove legacy unspecced `knock_state_events` field returned in some responses. ([\#16403](https://github.com/matrix-org/synapse/issues/16403)) - Fix a bug introduced in Synapse 1.81.0 where an `AttributeError` would be raised when `_matrix/client/v3/account/whoami` is called over a unix socket. Contributed by @Sir-Photch. ([\#16404](https://github.com/matrix-org/synapse/issues/16404)) - Properly return inline media when content types have parameters. ([\#16440](https://github.com/matrix-org/synapse/issues/16440)) - Prevent the purging of large rooms from timing out when Postgres is in use. The timeout which causes this issue was introduced in Synapse 1.88.0. ([\#16455](https://github.com/matrix-org/synapse/issues/16455)) - Improve the performance of purging rooms, particularly encrypted rooms. ([\#16457](https://github.com/matrix-org/synapse/issues/16457)) - Fix a bug introduced in Synapse 1.59.0 where servers could be incorrectly marked as available after an error response was received. ([\#16506](https://github.com/matrix-org/synapse/issues/16506)) ### Improved Documentation - Document internal background update mechanism. ([\#16420](https://github.com/matrix-org/synapse/issues/16420)) - Fix a typo in the sql for [useful SQL for admins document](https://matrix-org.github.io/synapse/latest/usage/administration/useful_sql_for_admins.html). ([\#16477](https://github.com/matrix-org/synapse/issues/16477)) ### Internal Changes - Bump pyo3 from 0.17.1 to 0.19.2. ([\#16162](https://github.com/matrix-org/synapse/issues/16162)) - Update registration of media repository URLs. ([\#16419](https://github.com/matrix-org/synapse/issues/16419)) - Improve type hints. ([\#16421](https://github.com/matrix-org/synapse/issues/16421), [\#16468](https://github.com/matrix-org/synapse/issues/16468), [\#16469](https://github.com/matrix-org/synapse/issues/16469), [\#16507](https://github.com/matrix-org/synapse/issues/16507)) - Refactor some code to simplify and better type receipts stream adjacent code. ([\#16426](https://github.com/matrix-org/synapse/issues/16426)) - Factor out `MultiWriter` token from `RoomStreamToken`. ([\#16427](https://github.com/matrix-org/synapse/issues/16427)) - Improve code comments. ([\#16428](https://github.com/matrix-org/synapse/issues/16428)) - Reduce memory allocations. ([\#16429](https://github.com/matrix-org/synapse/issues/16429), [\#16431](https://github.com/matrix-org/synapse/issues/16431), [\#16433](https://github.com/matrix-org/synapse/issues/16433), [\#16434](https://github.com/matrix-org/synapse/issues/16434), [\#16438](https://github.com/matrix-org/synapse/issues/16438), [\#16444](https://github.com/matrix-org/synapse/issues/16444)) - Remove unused method. ([\#16435](https://github.com/matrix-org/synapse/issues/16435)) - Improve rate limiting logic. ([\#16441](https://github.com/matrix-org/synapse/issues/16441)) - Do not block running of CI behind the check for sign-off on PRs. ([\#16454](https://github.com/matrix-org/synapse/issues/16454)) - Update the release script to remind releaser to check for special release notes. ([\#16461](https://github.com/matrix-org/synapse/issues/16461)) - Update complement.sh to match new public API shape. ([\#16466](https://github.com/matrix-org/synapse/issues/16466)) - Clean up logging on event persister endpoints. ([\#16488](https://github.com/matrix-org/synapse/issues/16488)) - Remove useless async job to delete device messages on sync, since we only deliver (and hence delete) up to 100 device messages at a time. ([\#16491](https://github.com/matrix-org/synapse/issues/16491)) ### Updates to locked dependencies * Bump bleach from 6.0.0 to 6.1.0. ([\#16451](https://github.com/matrix-org/synapse/issues/16451)) * Bump jsonschema from 4.19.0 to 4.19.1. ([\#16500](https://github.com/matrix-org/synapse/issues/16500)) * Bump netaddr from 0.8.0 to 0.9.0. ([\#16453](https://github.com/matrix-org/synapse/issues/16453)) * Bump packaging from 23.1 to 23.2. ([\#16497](https://github.com/matrix-org/synapse/issues/16497)) * Bump pillow from 10.0.1 to 10.1.0. ([\#16498](https://github.com/matrix-org/synapse/issues/16498)) * Bump psycopg2 from 2.9.8 to 2.9.9. ([\#16452](https://github.com/matrix-org/synapse/issues/16452)) * Bump pyo3-log from 0.8.3 to 0.8.4. ([\#16495](https://github.com/matrix-org/synapse/issues/16495)) * Bump ruff from 0.0.290 to 0.0.292. ([\#16449](https://github.com/matrix-org/synapse/issues/16449)) * Bump sentry-sdk from 1.31.0 to 1.32.0. ([\#16496](https://github.com/matrix-org/synapse/issues/16496)) * Bump serde from 1.0.188 to 1.0.189. ([\#16494](https://github.com/matrix-org/synapse/issues/16494)) * Bump types-bleach from 6.0.0.4 to 6.1.0.0. ([\#16450](https://github.com/matrix-org/synapse/issues/16450)) * Bump types-jsonschema from 4.17.0.10 to 4.19.0.3. ([\#16499](https://github.com/matrix-org/synapse/issues/16499)) # Synapse 1.94.0 (2023-10-10) No significant changes since 1.94.0rc1. However, please take note of the security advisory that follows. ## Security advisory The following issue is fixed in 1.94.0 (and RC). - [GHSA-5chr-wjw5-3gq4](https://github.com/matrix-org/synapse/security/advisories/GHSA-5chr-wjw5-3gq4) / [CVE-2023-45129](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-45129) — Moderate Severity A malicious server ACL event can impact performance temporarily or permanently leading to a persistent denial of service. Homeservers running on a closed federation (which presumably do not need to use server ACLs) are not affected. See the advisory for more details. If you have any questions, email security@matrix.org. # Synapse 1.94.0rc1 (2023-10-03) ### Features - Render plain, CSS, CSV, JSON and common image formats in the browser (inline) when requested through the /download endpoint. ([\#15988](https://github.com/matrix-org/synapse/issues/15988)) - Add experimental support for [MSC4028](https://github.com/matrix-org/matrix-spec-proposals/pull/4028) to push all encrypted events to clients. ([\#16361](https://github.com/matrix-org/synapse/issues/16361)) - Minor performance improvement when sending presence to federated servers. ([\#16385](https://github.com/matrix-org/synapse/issues/16385)) - Minor performance improvement by caching server ACL checking. ([\#16360](https://github.com/matrix-org/synapse/issues/16360)) ### Improved Documentation - Add developer documentation concerning gradual schema migrations with column alterations. ([\#15691](https://github.com/matrix-org/synapse/issues/15691)) - Improve documentation of the user directory search algorithm. ([\#16320](https://github.com/matrix-org/synapse/issues/16320)) - Fix rendering of user admin API documentation around deactivation. This was broken in Synapse 1.91.0. ([\#16355](https://github.com/matrix-org/synapse/issues/16355)) - Update documentation around message retention policies. ([\#16382](https://github.com/matrix-org/synapse/issues/16382)) - Add note to `federation_domain_whitelist` config option to clarify its usage. ([\#16416](https://github.com/matrix-org/synapse/issues/16416)) - Improve legacy release notes. ([\#16418](https://github.com/matrix-org/synapse/issues/16418)) ### Deprecations and Removals - Remove Python version from `/_synapse/admin/v1/server_version`. ([\#16380](https://github.com/matrix-org/synapse/issues/16380)) ### Internal Changes - Avoid running CI steps when the files they check have not been changed. ([\#14745](https://github.com/matrix-org/synapse/issues/14745), [\#16387](https://github.com/matrix-org/synapse/issues/16387)) - Improve type hints. ([\#14911](https://github.com/matrix-org/synapse/issues/14911), [\#16350](https://github.com/matrix-org/synapse/issues/16350), [\#16356](https://github.com/matrix-org/synapse/issues/16356), [\#16395](https://github.com/matrix-org/synapse/issues/16395)) - Added support for pydantic v2 in addition to pydantic v1. Contributed by Maxwell G (@gotmax23). ([\#16332](https://github.com/matrix-org/synapse/issues/16332)) - Get CI to check PRs have been signed-off. ([\#16348](https://github.com/matrix-org/synapse/issues/16348)) - Add missing licence header. ([\#16359](https://github.com/matrix-org/synapse/issues/16359)) - Improve type hints, and bump types-psycopg2 from 2.9.21.11 to 2.9.21.14. ([\#16381](https://github.com/matrix-org/synapse/issues/16381)) - Improve comments in `StateGroupBackgroundUpdateStore`. ([\#16383](https://github.com/matrix-org/synapse/issues/16383)) - Update maturin configuration. ([\#16394](https://github.com/matrix-org/synapse/issues/16394)) - Downgrade replication stream time out error log lines to warning. ([\#16401](https://github.com/matrix-org/synapse/issues/16401)) ### Updates to locked dependencies * Bump actions/checkout from 3 to 4. ([\#16250](https://github.com/matrix-org/synapse/issues/16250)) * Bump cryptography from 41.0.3 to 41.0.4. ([\#16362](https://github.com/matrix-org/synapse/issues/16362)) * Bump dawidd6/action-download-artifact from 2.27.0 to 2.28.0. ([\#16374](https://github.com/matrix-org/synapse/issues/16374)) * Bump docker/setup-buildx-action from 2 to 3. ([\#16375](https://github.com/matrix-org/synapse/issues/16375)) * Bump gitpython from 3.1.35 to 3.1.37. ([\#16376](https://github.com/matrix-org/synapse/issues/16376)) * Bump msgpack from 1.0.5 to 1.0.6. ([\#16377](https://github.com/matrix-org/synapse/issues/16377)) * Bump msgpack from 1.0.6 to 1.0.7. ([\#16412](https://github.com/matrix-org/synapse/issues/16412)) * Bump phonenumbers from 8.13.19 to 8.13.22. ([\#16413](https://github.com/matrix-org/synapse/issues/16413)) * Bump psycopg2 from 2.9.7 to 2.9.8. ([\#16409](https://github.com/matrix-org/synapse/issues/16409)) * Bump pydantic from 2.3.0 to 2.4.2. ([\#16410](https://github.com/matrix-org/synapse/issues/16410)) * Bump regex from 1.9.5 to 1.9.6. ([\#16408](https://github.com/matrix-org/synapse/issues/16408)) * Bump sentry-sdk from 1.30.0 to 1.31.0. ([\#16378](https://github.com/matrix-org/synapse/issues/16378)) * Bump types-netaddr from 0.8.0.9 to 0.9.0.1. ([\#16411](https://github.com/matrix-org/synapse/issues/16411)) * Bump types-psycopg2 from 2.9.21.11 to 2.9.21.14. ([\#16381](https://github.com/matrix-org/synapse/issues/16381)) * Bump urllib3 from 1.26.15 to 1.26.17. ([\#16422](https://github.com/matrix-org/synapse/issues/16422)) # Synapse 1.93.0 (2023-09-26) No significant changes since 1.93.0rc1. ## Security advisory The following issues are fixed in 1.93.0 (and RCs). - [GHSA-4f74-84v3-j9q5](https://github.com/matrix-org/synapse/security/advisories/GHSA-4f74-84v3-j9q5) / [CVE-2023-41335](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-41335) — Low Severity Temporary storage of plaintext passwords during password changes. - [GHSA-7565-cq32-vx2x](https://github.com/matrix-org/synapse/security/advisories/GHSA-7565-cq32-vx2x) / [CVE-2023-42453](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-42453) — Low Severity Improper validation of receipts allows forged read receipts. See the advisories for more details. If you have any questions, email security@matrix.org. # Synapse 1.93.0rc1 (2023-09-19) ### Features - Add automatic purge after all users have forgotten a room. ([\#15488](https://github.com/matrix-org/synapse/issues/15488)) - Restore room purge/shutdown after a Synapse restart. ([\#15488](https://github.com/matrix-org/synapse/issues/15488)) - Support resolving homeservers using `matrix-fed` DNS SRV records from [MSC4040](https://github.com/matrix-org/matrix-spec-proposals/pull/4040). ([\#16137](https://github.com/matrix-org/synapse/issues/16137)) - Add the ability to use `G` (GiB) and `T` (TiB) suffixes in configuration options that refer to numbers of bytes. ([\#16219](https://github.com/matrix-org/synapse/issues/16219)) - Add span information to requests sent to appservices. Contributed by MTRNord. ([\#16227](https://github.com/matrix-org/synapse/issues/16227)) - Add the ability to enable/disable registrations when using CAS. Contributed by Aurélien Grimpard. ([\#16262](https://github.com/matrix-org/synapse/issues/16262)) - Allow the `/notifications` endpoint to be routed to workers. ([\#16265](https://github.com/matrix-org/synapse/issues/16265)) - Enable users to easily unsubscribe to notifications emails via the `List-Unsubscribe` header. ([\#16274](https://github.com/matrix-org/synapse/issues/16274)) - Report whether a user is `locked` in the [List Accounts admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#list-accounts), and exclude locked users by default. ([\#16328](https://github.com/matrix-org/synapse/issues/16328)) ### Bugfixes - Fix a long-standing bug where multi-device accounts could cause high load due to presence. ([\#16066](https://github.com/matrix-org/synapse/issues/16066), [\#16170](https://github.com/matrix-org/synapse/issues/16170), [\#16171](https://github.com/matrix-org/synapse/issues/16171), [\#16172](https://github.com/matrix-org/synapse/issues/16172), [\#16174](https://github.com/matrix-org/synapse/issues/16174)) - Fix a long-standing bug where appservices using [MSC2409](https://github.com/matrix-org/matrix-spec-proposals/pull/2409) to receive `to_device` messages would only get messages for one user. ([\#16251](https://github.com/matrix-org/synapse/issues/16251)) - Fix bug when using workers where Synapse could end up re-requesting the same remote device repeatedly. ([\#16252](https://github.com/matrix-org/synapse/issues/16252)) - Fix long-standing bug where we kept re-requesting a remote server's key repeatedly, potentially causing delays in receiving events over federation. ([\#16257](https://github.com/matrix-org/synapse/issues/16257)) - Avoid temporary storage of sensitive information. ([\#16272](https://github.com/matrix-org/synapse/issues/16272)) - Fix bug introduced in Synapse 1.49.0 when using dehydrated devices ([MSC2697](https://github.com/matrix-org/matrix-spec-proposals/pull/2697)) and refresh tokens. Contributed by Hanadi. ([\#16288](https://github.com/matrix-org/synapse/issues/16288)) - Fix a long-standing bug where invalid receipts would be accepted. ([\#16327](https://github.com/matrix-org/synapse/issues/16327)) - Use standard name for UTF-8 charset in emails. ([\#16329](https://github.com/matrix-org/synapse/issues/16329)) - Don't try refetching device lists for users on remote hosts that are marked as "down". ([\#16298](https://github.com/matrix-org/synapse/issues/16298)) ### Improved Documentation - Fix typos in the documentation. ([\#16282](https://github.com/matrix-org/synapse/issues/16282)) - Link to the Alpine Linux community package for Synapse. ([\#16304](https://github.com/matrix-org/synapse/issues/16304)) - Use string for `federation_client_minimum_tls_version` documentation examples. Contributed by @jcgruenhage. ([\#16353](https://github.com/matrix-org/synapse/issues/16353)) ### Internal Changes - Allow modules to delete rooms. ([\#15997](https://github.com/matrix-org/synapse/issues/15997)) - Add GCC and GNU Make to the Nix flake development environment so that `ruff` can be compiled. ([\#16090](https://github.com/matrix-org/synapse/issues/16090), [\#16263](https://github.com/matrix-org/synapse/issues/16263)) - Fix type checking when using the new version of Twisted. ([\#16235](https://github.com/matrix-org/synapse/issues/16235)) - Delete device messages asynchronously and in staged batches using the task scheduler. ([\#16240](https://github.com/matrix-org/synapse/issues/16240), [\#16311](https://github.com/matrix-org/synapse/issues/16311), [\#16312](https://github.com/matrix-org/synapse/issues/16312), [\#16313](https://github.com/matrix-org/synapse/issues/16313)) - Bump minimum supported Rust version to 1.61.0. ([\#16248](https://github.com/matrix-org/synapse/issues/16248)) - Update rust to version 1.71.1 in the nix development environment. ([\#16260](https://github.com/matrix-org/synapse/issues/16260)) - Simplify server key storage. ([\#16261](https://github.com/matrix-org/synapse/issues/16261)) - Reduce CPU overhead of change password endpoint. ([\#16264](https://github.com/matrix-org/synapse/issues/16264)) - Stop purging from tables slated for removal. ([\#16273](https://github.com/matrix-org/synapse/issues/16273)) - Improve type hints. ([\#16276](https://github.com/matrix-org/synapse/issues/16276), [\#16301](https://github.com/matrix-org/synapse/issues/16301), [\#16325](https://github.com/matrix-org/synapse/issues/16325), [\#16326](https://github.com/matrix-org/synapse/issues/16326)) - Raise `setuptools_rust` version cap to 1.7.0. ([\#16277](https://github.com/matrix-org/synapse/issues/16277)) - Fix using the new task scheduler causing lots of CPU to be used. ([\#16278](https://github.com/matrix-org/synapse/issues/16278)) - Upgrade CI run of Python 3.12 from rc1 to rc2. ([\#16280](https://github.com/matrix-org/synapse/issues/16280)) - Include values in SQL debug when using `execute_values` with Postgres. ([\#16281](https://github.com/matrix-org/synapse/issues/16281)) - Enable additional linting checks. ([\#16283](https://github.com/matrix-org/synapse/issues/16283)) - Refactor `receipts_graph` Postgres transactions to stop error messages. ([\#16299](https://github.com/matrix-org/synapse/issues/16299)) - Small improvements to logging in replication code. ([\#16309](https://github.com/matrix-org/synapse/issues/16309)) - Remove a reference cycle in background processes. ([\#16314](https://github.com/matrix-org/synapse/issues/16314)) - Only use literal strings for background process names. ([\#16315](https://github.com/matrix-org/synapse/issues/16315)) - Refactor `get_user_by_id`. ([\#16316](https://github.com/matrix-org/synapse/issues/16316)) - Speed up task to delete to-device messages. ([\#16318](https://github.com/matrix-org/synapse/issues/16318)) - Avoid patching code in tests. ([\#16349](https://github.com/matrix-org/synapse/issues/16349)) - Test against PostgreSQL 16. ([\#16351](https://github.com/matrix-org/synapse/issues/16351)) ### Updates to locked dependencies * Bump mypy from 1.4.1 to 1.5.1. ([\#16300](https://github.com/matrix-org/synapse/issues/16300)) * Bump black from 23.7.0 to 23.9.1. ([\#16295](https://github.com/matrix-org/synapse/issues/16295)) * Bump docker/build-push-action from 4 to 5. ([\#16336](https://github.com/matrix-org/synapse/issues/16336)) * Bump docker/login-action from 2 to 3. ([\#16339](https://github.com/matrix-org/synapse/issues/16339)) * Bump docker/metadata-action from 4 to 5. ([\#16337](https://github.com/matrix-org/synapse/issues/16337)) * Bump docker/setup-qemu-action from 2 to 3. ([\#16338](https://github.com/matrix-org/synapse/issues/16338)) * Bump furo from 2023.8.19 to 2023.9.10. ([\#16340](https://github.com/matrix-org/synapse/issues/16340)) * Bump gitpython from 3.1.32 to 3.1.35. ([\#16267](https://github.com/matrix-org/synapse/issues/16267), [\#16279](https://github.com/matrix-org/synapse/issues/16279)) * Bump mypy-zope from 1.0.0 to 1.0.1. ([\#16291](https://github.com/matrix-org/synapse/issues/16291)) * Bump pillow from 10.0.0 to 10.0.1. ([\#16344](https://github.com/matrix-org/synapse/issues/16344)) * Bump regex from 1.9.4 to 1.9.5. ([\#16233](https://github.com/matrix-org/synapse/issues/16233)) * Bump ruff from 0.0.286 to 0.0.290. ([\#16342](https://github.com/matrix-org/synapse/issues/16342)) * Bump serde_json from 1.0.105 to 1.0.107. ([\#16296](https://github.com/matrix-org/synapse/issues/16296), [\#16345](https://github.com/matrix-org/synapse/issues/16345)) * Bump twisted from 22.10.0 to 23.8.0. ([\#16235](https://github.com/matrix-org/synapse/issues/16235)) * Bump types-pillow from 10.0.0.2 to 10.0.0.3. ([\#16293](https://github.com/matrix-org/synapse/issues/16293)) * Bump types-setuptools from 68.0.0.3 to 68.2.0.0. ([\#16292](https://github.com/matrix-org/synapse/issues/16292)) * Bump typing-extensions from 4.7.1 to 4.8.0. ([\#16341](https://github.com/matrix-org/synapse/issues/16341)) # Synapse 1.92.3 (2023-09-18) This is again a security update targeted at mitigating [CVE-2023-4863](https://cve.org/CVERecord?id=CVE-2023-4863). It turns out that libwebp is bundled statically in Pillow wheels so we need to update this dependency instead of libwebp package at the OS level. Unlike what was advertised in 1.92.2 changelog this release also impacts PyPI wheels and Debian packages from matrix.org. We encourage admins to upgrade as soon as possible. ### Internal Changes - Pillow 10.0.1 is now mandatory because of libwebp CVE-2023-4863, since Pillow provides libwebp in the wheels. ([\#16347](https://github.com/matrix-org/synapse/issues/16347)) ### Updates to locked dependencies * Bump pillow from 10.0.0 to 10.0.1. ([\#16344](https://github.com/matrix-org/synapse/issues/16344)) # Synapse 1.92.2 (2023-09-15) This is a Docker-only update to mitigate [CVE-2023-4863](https://cve.org/CVERecord?id=CVE-2023-4863), a critical vulnerability in `libwebp`. Server admins not using Docker should ensure that their `libwebp` is up to date (if installed). We encourage admins to upgrade as soon as possible. ### Updates to the Docker image - Update docker image to use Debian bookworm as the base. ([\#16324](https://github.com/matrix-org/synapse/issues/16324)) # Synapse 1.92.1 (2023-09-12) This minor release was needed only because of CI-related trouble on [v1.92.0](https://github.com/matrix-org/synapse/releases/tag/v1.92.0), which was never released. ### Internal Changes - Stop building Ubuntu Kinetic since it is EOL and repos seem to be dead. # Synapse 1.92.0 (2023-09-12) This release includes the same [bugfix](https://github.com/matrix-org/synapse/issues/16258) as Synapse 1.91.2. This version was never released following a CI build failure, cf [v1.92.1 changelog](https://github.com/matrix-org/synapse/releases/tag/v1.92.1). ### Bugfixes - Revert [MSC3861](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) introspection cache, admin impersonation and account lock. ([\#16258](https://github.com/matrix-org/synapse/issues/16258)) ### Internal Changes - Fix incorrect docstring for `Ratelimiter`. ([\#16255](https://github.com/matrix-org/synapse/issues/16255)) - Update the release script to work on macOS. ([\#16266](https://github.com/matrix-org/synapse/issues/16266)) # Synapse 1.91.2 (2023-09-06) ### Bugfixes - Revert [MSC3861](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) introspection cache, admin impersonation and account lock. ([\#16258](https://github.com/matrix-org/synapse/issues/16258)) # Synapse 1.92.0rc1 (2023-09-05) ### Features - Add configuration setting for CAS protocol version. Contributed by Aurélien Grimpard. ([\#15816](https://github.com/matrix-org/synapse/issues/15816)) - Suppress notifications from message edits per [MSC3958](https://github.com/matrix-org/matrix-spec-proposals/pull/3958). ([\#16113](https://github.com/matrix-org/synapse/issues/16113)) - Experimental support for [MSC4041](https://github.com/matrix-org/matrix-spec-proposals/pull/4041): return a `Retry-After` header with `M_LIMIT_EXCEEDED` error responses. ([\#16136](https://github.com/matrix-org/synapse/issues/16136)) - Add `last_seen_ts` to the [admin users API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html). ([\#16218](https://github.com/matrix-org/synapse/issues/16218)) - Improve resource usage when sending data to a large number of remote hosts that are marked as "down". ([\#16223](https://github.com/matrix-org/synapse/issues/16223)) ### Bugfixes - Fix IPv6-related bugs on SMTP settings, adding groundwork to fix similar issues. Contributed by @evilham and @telmich (ungleich.ch). ([\#16155](https://github.com/matrix-org/synapse/issues/16155)) - Fix a spec compliance issue where requests to the `/publicRooms` federation API would specify `include_all_networks` as a string. ([\#16185](https://github.com/matrix-org/synapse/issues/16185)) - Fix inaccurate error message while attempting to ban or unban a user with the same or higher PL by spliting the conditional statements. Contributed by @leviosacz. ([\#16205](https://github.com/matrix-org/synapse/issues/16205)) - Fix a rare bug that broke looping calls, which could lead to e.g. linearly increasing memory usage. Introduced in v1.90.0. ([\#16210](https://github.com/matrix-org/synapse/issues/16210)) - Fix a long-standing bug where uploading images would fail if we could not generate thumbnails for them. ([\#16211](https://github.com/matrix-org/synapse/issues/16211)) - Fix a long-standing bug where we did not correctly back off from servers that had "gone" if they returned 4xx series error codes. ([\#16221](https://github.com/matrix-org/synapse/issues/16221)) ### Improved Documentation - Update links to the [matrix.org blog](https://matrix.org/blog/). ([\#16008](https://github.com/matrix-org/synapse/issues/16008)) - Document which [admin APIs](https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html) are disabled when experimental [MSC3861](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) support is enabled. ([\#16168](https://github.com/matrix-org/synapse/issues/16168)) - Document [`exclude_rooms_from_sync`](https://matrix-org.github.io/synapse/v1.92/usage/configuration/config_documentation.html#exclude_rooms_from_sync) configuration option. ([\#16178](https://github.com/matrix-org/synapse/issues/16178)) ### Internal Changes - Prepare unit tests for Python 3.12. ([\#16099](https://github.com/matrix-org/synapse/issues/16099)) - Fix nightly CI jobs. ([\#16121](https://github.com/matrix-org/synapse/issues/16121), [\#16213](https://github.com/matrix-org/synapse/issues/16213)) - Describe which rate limiter was hit in logs. ([\#16135](https://github.com/matrix-org/synapse/issues/16135)) - Simplify presence code when using workers. ([\#16170](https://github.com/matrix-org/synapse/issues/16170)) - Track per-device information in the presence code. ([\#16171](https://github.com/matrix-org/synapse/issues/16171), [\#16172](https://github.com/matrix-org/synapse/issues/16172)) - Stop using the `event_txn_id` table. ([\#16175](https://github.com/matrix-org/synapse/issues/16175)) - Use `AsyncMock` instead of custom code. ([\#16179](https://github.com/matrix-org/synapse/issues/16179), [\#16180](https://github.com/matrix-org/synapse/issues/16180)) - Improve error reporting of invalid data passed to `/_matrix/key/v2/query`. ([\#16183](https://github.com/matrix-org/synapse/issues/16183)) - Task scheduler: add replication notify for new task to launch ASAP. ([\#16184](https://github.com/matrix-org/synapse/issues/16184)) - Improve type hints. ([\#16186](https://github.com/matrix-org/synapse/issues/16186), [\#16188](https://github.com/matrix-org/synapse/issues/16188), [\#16201](https://github.com/matrix-org/synapse/issues/16201)) - Bump black version to 23.7.0. ([\#16187](https://github.com/matrix-org/synapse/issues/16187)) - Log the details of background update failures. ([\#16212](https://github.com/matrix-org/synapse/issues/16212)) - Cache device resync requests over replication. ([\#16241](https://github.com/matrix-org/synapse/issues/16241)) ### Updates to locked dependencies * Bump anyhow from 1.0.72 to 1.0.75. ([\#16141](https://github.com/matrix-org/synapse/issues/16141)) * Bump furo from 2023.7.26 to 2023.8.19. ([\#16238](https://github.com/matrix-org/synapse/issues/16238)) * Bump phonenumbers from 8.13.18 to 8.13.19. ([\#16237](https://github.com/matrix-org/synapse/issues/16237)) * Bump psycopg2 from 2.9.6 to 2.9.7. ([\#16196](https://github.com/matrix-org/synapse/issues/16196)) * Bump regex from 1.9.3 to 1.9.4. ([\#16195](https://github.com/matrix-org/synapse/issues/16195)) * Bump ruff from 0.0.277 to 0.0.286. ([\#16198](https://github.com/matrix-org/synapse/issues/16198)) * Bump sentry-sdk from 1.29.2 to 1.30.0. ([\#16236](https://github.com/matrix-org/synapse/issues/16236)) * Bump serde from 1.0.184 to 1.0.188. ([\#16194](https://github.com/matrix-org/synapse/issues/16194)) * Bump serde_json from 1.0.104 to 1.0.105. ([\#16140](https://github.com/matrix-org/synapse/issues/16140)) * Bump types-psycopg2 from 2.9.21.10 to 2.9.21.11. ([\#16200](https://github.com/matrix-org/synapse/issues/16200)) * Bump types-pyyaml from 6.0.12.10 to 6.0.12.11. ([\#16199](https://github.com/matrix-org/synapse/issues/16199)) # Synapse 1.91.1 (2023-09-04) ### Bugfixes - Fix a performance regression introduced in Synapse 1.91.0 where event persistence would cause an excessive linear growth in CPU usage. ([\#16220](https://github.com/matrix-org/synapse/issues/16220)) # Synapse 1.91.0 (2023-08-30) No significant changes since 1.91.0rc1. # Synapse 1.91.0rc1 (2023-08-23) ### Features - Implements an admin API to lock an user without deactivating them. Based on [MSC3939](https://github.com/matrix-org/matrix-spec-proposals/pull/3939). ([\#15870](https://github.com/matrix-org/synapse/issues/15870)) - Implements a task scheduler for resumable potentially long running tasks. ([\#15891](https://github.com/matrix-org/synapse/issues/15891)) - Allow specifying `client_secret_path` as alternative to `client_secret` for OIDC providers. This avoids leaking the client secret in the homeserver config. Contributed by @Ma27. ([\#16030](https://github.com/matrix-org/synapse/issues/16030)) - Allow customising the IdP display name, icon, and brand for SAML and CAS providers (in addition to OIDC provider). ([\#16094](https://github.com/matrix-org/synapse/issues/16094)) - Add an `admins` query parameter to the [List Accounts](https://matrix-org.github.io/synapse/v1.91/admin_api/user_admin_api.html#list-accounts) [admin API](https://matrix-org.github.io/synapse/v1.91/usage/administration/admin_api/index.html), to include only admins or to exclude admins in user queries. ([\#16114](https://github.com/matrix-org/synapse/issues/16114)) ### Bugfixes - Fix long-standing bug where concurrent requests to change a user's push rules could cause a deadlock. Contributed by Nick @ Beeper (@fizzadar). ([\#16052](https://github.com/matrix-org/synapse/issues/16052)) - Fix a long-standing bu in `/sync` where timeout=0 does not skip caching, resulting in slow calls in cases where there are no new changes. Contributed by @PlasmaIntec. ([\#16080](https://github.com/matrix-org/synapse/issues/16080)) - Fix performance of state resolutions for large, old rooms that did not have the full auth chain persisted. ([\#16116](https://github.com/matrix-org/synapse/issues/16116)) - Filter out user agent references to the sliding sync proxy and rust-sdk from the user_daily_visits table to ensure that Element X can be represented fully. ([\#16124](https://github.com/matrix-org/synapse/issues/16124)) - User constent and 3-PID changes capability cannot be enabled when using experimental [MSC3861](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) support. ([\#16127](https://github.com/matrix-org/synapse/issues/16127), [\#16134](https://github.com/matrix-org/synapse/issues/16134)) - Fix a rare race that could block new events from being sent for up to two minutes. Introduced in v1.90.0. ([\#16133](https://github.com/matrix-org/synapse/issues/16133), [\#16169](https://github.com/matrix-org/synapse/issues/16169)) - Fix performance degredation when there are a lot of in-flight replication requests. ([\#16148](https://github.com/matrix-org/synapse/issues/16148)) - Fix a bug introduced in 1.87 where synapse would send an excessive amount of federation requests to servers which have been offline for a long time. Contributed by Nico. ([\#16156](https://github.com/matrix-org/synapse/issues/16156), [\#16164](https://github.com/matrix-org/synapse/issues/16164)) ### Improved Documentation - Structured logging docs: add a link to explain the ELK stack ([\#16091](https://github.com/matrix-org/synapse/issues/16091)) ### Internal Changes - Update dehydrated devices implementation. ([\#16010](https://github.com/matrix-org/synapse/issues/16010)) - Fix database performance of read/write worker locks. ([\#16061](https://github.com/matrix-org/synapse/issues/16061)) - Fix building the nix development environment on MacOS systems. ([\#16063](https://github.com/matrix-org/synapse/issues/16063)) - Override global statement timeout when creating indexes in Postgres. ([\#16085](https://github.com/matrix-org/synapse/issues/16085)) - Fix the type annotation on `run_db_interaction` in the Module API. ([\#16089](https://github.com/matrix-org/synapse/issues/16089)) - Clean-up the presence code. ([\#16092](https://github.com/matrix-org/synapse/issues/16092)) - Run `pyupgrade` for Python 3.8+. ([\#16110](https://github.com/matrix-org/synapse/issues/16110)) - Rename pagination and purge locks and add comments to explain why they exist and how they work. ([\#16112](https://github.com/matrix-org/synapse/issues/16112)) - Attempt to fix the twisted trunk job. ([\#16115](https://github.com/matrix-org/synapse/issues/16115)) - Cache token introspection response from OIDC provider. ([\#16117](https://github.com/matrix-org/synapse/issues/16117)) - Add cache to `get_server_keys_json_for_remote`. ([\#16123](https://github.com/matrix-org/synapse/issues/16123)) - Add an admin endpoint to allow authorizing server to signal token revocations. ([\#16125](https://github.com/matrix-org/synapse/issues/16125)) - Add response time metrics for introspection requests for delegated auth. ([\#16131](https://github.com/matrix-org/synapse/issues/16131)) - MSC3861: allow impersonation by an admin user using `_oidc_admin_impersonate_user_id` query parameter. ([\#16132](https://github.com/matrix-org/synapse/issues/16132)) - Increase performance of read/write locks. ([\#16149](https://github.com/matrix-org/synapse/issues/16149)) - Improve presence tests. ([\#16150](https://github.com/matrix-org/synapse/issues/16150), [\#16151](https://github.com/matrix-org/synapse/issues/16151), [\#16158](https://github.com/matrix-org/synapse/issues/16158)) - Raised the poetry-core version cap to 1.7.0. ([\#16152](https://github.com/matrix-org/synapse/issues/16152)) - Fix assertion in user directory unit tests. ([\#16157](https://github.com/matrix-org/synapse/issues/16157)) - Reduce scope of locks when paginating to alleviate DB contention. ([\#16159](https://github.com/matrix-org/synapse/issues/16159)) - Reduce DB contention on worker locks. ([\#16160](https://github.com/matrix-org/synapse/issues/16160)) - Task scheduler: mark task as active if we are scheduling as soon as possible. ([\#16165](https://github.com/matrix-org/synapse/issues/16165)) ### Updates to locked dependencies * Bump click from 8.1.6 to 8.1.7. ([\#16145](https://github.com/matrix-org/synapse/issues/16145)) * Bump gitpython from 3.1.31 to 3.1.32. ([\#16103](https://github.com/matrix-org/synapse/issues/16103)) * Bump ijson from 3.2.1 to 3.2.3. ([\#16143](https://github.com/matrix-org/synapse/issues/16143)) * Bump isort from 5.11.5 to 5.12.0. ([\#16108](https://github.com/matrix-org/synapse/issues/16108)) * Bump log from 0.4.19 to 0.4.20. ([\#16109](https://github.com/matrix-org/synapse/issues/16109)) * Bump pygithub from 1.59.0 to 1.59.1. ([\#16144](https://github.com/matrix-org/synapse/issues/16144)) * Bump sentry-sdk from 1.28.1 to 1.29.2. ([\#16142](https://github.com/matrix-org/synapse/issues/16142)) * Bump serde from 1.0.183 to 1.0.184. ([\#16139](https://github.com/matrix-org/synapse/issues/16139)) * Bump txredisapi from 1.4.9 to 1.4.10. ([\#16107](https://github.com/matrix-org/synapse/issues/16107)) * Bump types-bleach from 6.0.0.3 to 6.0.0.4. ([\#16106](https://github.com/matrix-org/synapse/issues/16106)) * Bump types-pillow from 10.0.0.1 to 10.0.0.2. ([\#16105](https://github.com/matrix-org/synapse/issues/16105)) * Bump types-pyopenssl from 23.2.0.1 to 23.2.0.2. ([\#16146](https://github.com/matrix-org/synapse/issues/16146)) # Synapse 1.91.0rc1 (2023-08-23) ### Features - Implements an admin API to lock an user without deactivating them. Based on [MSC3939](https://github.com/matrix-org/matrix-spec-proposals/pull/3939). ([\#15870](https://github.com/matrix-org/synapse/issues/15870)) - Allow specifying `client_secret_path` as alternative to `client_secret` for OIDC providers. This avoids leaking the client secret in the homeserver config. Contributed by @Ma27. ([\#16030](https://github.com/matrix-org/synapse/issues/16030)) - Allow customising the IdP display name, icon, and brand for SAML and CAS providers (in addition to OIDC provider). ([\#16094](https://github.com/matrix-org/synapse/issues/16094)) - Add an `admins` query parameter to the [List Accounts](https://matrix-org.github.io/synapse/v1.91/admin_api/user_admin_api.html#list-accounts) [admin API](https://matrix-org.github.io/synapse/v1.91/usage/administration/admin_api/index.html), to include only admins or to exclude admins in user queries. ([\#16114](https://github.com/matrix-org/synapse/issues/16114)) ### Bugfixes - Fix long-standing bug where concurrent requests to change a user's push rules could cause a deadlock. Contributed by Nick @ Beeper (@fizzadar). ([\#16052](https://github.com/matrix-org/synapse/issues/16052)) - Fix a long-standing bug in `/sync` where timeout=0 does not skip caching, resulting in slow calls in cases where there are no new changes. Contributed by @PlasmaIntec. ([\#16080](https://github.com/matrix-org/synapse/issues/16080)) - Fix performance of state resolutions for large, old rooms that did not have the full auth chain persisted. ([\#16116](https://github.com/matrix-org/synapse/issues/16116)) - Filter out user agent references to the sliding sync proxy and rust-sdk from the `user_daily_visits` table to ensure that Element X can be represented fully. ([\#16124](https://github.com/matrix-org/synapse/issues/16124)) - User constent and third-party ID changes capability cannot be enabled when using experimental [MSC3861](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) support. ([\#16127](https://github.com/matrix-org/synapse/issues/16127), [\#16134](https://github.com/matrix-org/synapse/issues/16134)) - Fix a rare race that could block new events from being sent for up to two minutes. Introduced in v1.90.0. ([\#16133](https://github.com/matrix-org/synapse/issues/16133), [\#16169](https://github.com/matrix-org/synapse/issues/16169)) - Fix performance degredation when there are a lot of in-flight replication requests. ([\#16148](https://github.com/matrix-org/synapse/issues/16148)) - Fix a bug introduced in 1.87 where synapse would send an excessive amount of federation requests to servers which have been offline for a long time. Contributed by Nico. ([\#16156](https://github.com/matrix-org/synapse/issues/16156), [\#16164](https://github.com/matrix-org/synapse/issues/16164)) ### Improved Documentation - Structured logging docs: add a link to explain the ELK stack ([\#16091](https://github.com/matrix-org/synapse/issues/16091)) ### Internal Changes - Update dehydrated devices implementation. ([\#16010](https://github.com/matrix-org/synapse/issues/16010)) - Fix database performance of read/write worker locks. ([\#16061](https://github.com/matrix-org/synapse/issues/16061)) - Fix building the nix development environment on MacOS systems. ([\#16063](https://github.com/matrix-org/synapse/issues/16063)) - Override global statement timeout when creating indexes in Postgres. ([\#16085](https://github.com/matrix-org/synapse/issues/16085)) - Fix the type annotation on `run_db_interaction` in the Module API. ([\#16089](https://github.com/matrix-org/synapse/issues/16089)) - Clean-up the presence code. ([\#16092](https://github.com/matrix-org/synapse/issues/16092)) - Run `pyupgrade` for Python 3.8+. ([\#16110](https://github.com/matrix-org/synapse/issues/16110)) - Rename pagination and purge locks and add comments to explain why they exist and how they work. ([\#16112](https://github.com/matrix-org/synapse/issues/16112)) - Attempt to fix the twisted trunk job. ([\#16115](https://github.com/matrix-org/synapse/issues/16115)) - Cache token introspection response from OIDC provider. ([\#16117](https://github.com/matrix-org/synapse/issues/16117)) - Add cache to `get_server_keys_json_for_remote`. ([\#16123](https://github.com/matrix-org/synapse/issues/16123)) - Add an admin endpoint to allow authorizing server to signal token revocations. ([\#16125](https://github.com/matrix-org/synapse/issues/16125)) - Add response time metrics for introspection requests for delegated auth. ([\#16131](https://github.com/matrix-org/synapse/issues/16131)) - [MSC3861](https://github.com/matrix-org/matrix-spec-proposals/pull/3861): allow impersonation by an admin user using `_oidc_admin_impersonate_user_id` query parameter. ([\#16132](https://github.com/matrix-org/synapse/issues/16132)) - Increase performance of read/write locks. ([\#16149](https://github.com/matrix-org/synapse/issues/16149)) - Improve presence tests. ([\#16150](https://github.com/matrix-org/synapse/issues/16150), [\#16151](https://github.com/matrix-org/synapse/issues/16151), [\#16158](https://github.com/matrix-org/synapse/issues/16158)) - Raised the poetry-core version cap to 1.7.0. ([\#16152](https://github.com/matrix-org/synapse/issues/16152)) - Fix assertion in user directory unit tests. ([\#16157](https://github.com/matrix-org/synapse/issues/16157)) - Reduce scope of locks when paginating to alleviate DB contention. ([\#16159](https://github.com/matrix-org/synapse/issues/16159)) - Reduce DB contention on worker locks. ([\#16160](https://github.com/matrix-org/synapse/issues/16160)) - Task scheduler: mark task as active if we are scheduling as soon as possible. ([\#16165](https://github.com/matrix-org/synapse/issues/16165)) - Implements a task scheduler for resumable potentially long running tasks. ([\#15891](https://github.com/matrix-org/synapse/issues/15891)) ### Updates to locked dependencies * Bump click from 8.1.6 to 8.1.7. ([\#16145](https://github.com/matrix-org/synapse/issues/16145)) * Bump gitpython from 3.1.31 to 3.1.32. ([\#16103](https://github.com/matrix-org/synapse/issues/16103)) * Bump ijson from 3.2.1 to 3.2.3. ([\#16143](https://github.com/matrix-org/synapse/issues/16143)) * Bump isort from 5.11.5 to 5.12.0. ([\#16108](https://github.com/matrix-org/synapse/issues/16108)) * Bump log from 0.4.19 to 0.4.20. ([\#16109](https://github.com/matrix-org/synapse/issues/16109)) * Bump pygithub from 1.59.0 to 1.59.1. ([\#16144](https://github.com/matrix-org/synapse/issues/16144)) * Bump sentry-sdk from 1.28.1 to 1.29.2. ([\#16142](https://github.com/matrix-org/synapse/issues/16142)) * Bump serde from 1.0.183 to 1.0.184. ([\#16139](https://github.com/matrix-org/synapse/issues/16139)) * Bump txredisapi from 1.4.9 to 1.4.10. ([\#16107](https://github.com/matrix-org/synapse/issues/16107)) * Bump types-bleach from 6.0.0.3 to 6.0.0.4. ([\#16106](https://github.com/matrix-org/synapse/issues/16106)) * Bump types-pillow from 10.0.0.1 to 10.0.0.2. ([\#16105](https://github.com/matrix-org/synapse/issues/16105)) * Bump types-pyopenssl from 23.2.0.1 to 23.2.0.2. ([\#16146](https://github.com/matrix-org/synapse/issues/16146)) # Synapse 1.90.0 (2023-08-15) No significant changes since 1.90.0rc1. # Synapse 1.90.0rc1 (2023-08-08) ### Features - Scope transaction IDs to devices (implement [MSC3970](https://github.com/matrix-org/matrix-spec-proposals/pull/3970)). ([\#15629](https://github.com/matrix-org/synapse/issues/15629)) - Remove old rows from the `cache_invalidation_stream_by_instance` table automatically (this table is unused in SQLite). ([\#15868](https://github.com/matrix-org/synapse/issues/15868)) ### Bugfixes - Fix a long-standing bug where purging history and paginating simultaneously could lead to database corruption when using workers. ([\#15791](https://github.com/matrix-org/synapse/issues/15791)) - Fix a long-standing bug where profile endpoint returned a 404 when the user's display name was empty. ([\#16012](https://github.com/matrix-org/synapse/issues/16012)) - Fix a long-standing bug where the `synapse_port_db` failed to configure sequences for application services and partial stated rooms. ([\#16043](https://github.com/matrix-org/synapse/issues/16043)) - Fix long-standing bug with deletion in dehydrated devices v2. ([\#16046](https://github.com/matrix-org/synapse/issues/16046)) ### Updates to the Docker image - Add `org.opencontainers.image.version` labels to Docker containers [published by Matrix.org](https://hub.docker.com/r/matrixdotorg/synapse). Contributed by Mo Balaa. ([\#15972](https://github.com/matrix-org/synapse/issues/15972), [\#16009](https://github.com/matrix-org/synapse/issues/16009)) ### Improved Documentation - Add a internal documentation page describing the ["streams" used within Synapse](https://matrix-org.github.io/synapse/v1.90/development/synapse_architecture/streams.html). ([\#16015](https://github.com/matrix-org/synapse/issues/16015)) - Clarify comment on the keys/upload over replication enpoint. ([\#16016](https://github.com/matrix-org/synapse/issues/16016)) - Do not expose Admin API in caddy reverse proxy example. Contributed by @NilsIrl. ([\#16027](https://github.com/matrix-org/synapse/issues/16027)) ### Deprecations and Removals - Remove support for legacy application service paths. ([\#15964](https://github.com/matrix-org/synapse/issues/15964)) - Move support for application service query parameter authorization behind a configuration option. ([\#16017](https://github.com/matrix-org/synapse/issues/16017)) ### Internal Changes - Update SQL queries to inline boolean parameters as supported in SQLite 3.27. ([\#15525](https://github.com/matrix-org/synapse/issues/15525)) - Allow for the configuration of the backoff algorithm for federation destinations. ([\#15754](https://github.com/matrix-org/synapse/issues/15754)) - Allow modules to check whether the current worker is configured to run background tasks. ([\#15991](https://github.com/matrix-org/synapse/issues/15991)) - Update support for [MSC3958](https://github.com/matrix-org/matrix-spec-proposals/pull/3958) to match the latest revision of the MSC. ([\#15992](https://github.com/matrix-org/synapse/issues/15992)) - Allow modules to schedule delayed background calls. ([\#15993](https://github.com/matrix-org/synapse/issues/15993)) - Properly overwrite the `redacts` content-property for forwards-compatibility with room versions 1 through 10. ([\#16013](https://github.com/matrix-org/synapse/issues/16013)) - Fix building the nix development environment on MacOS systems. ([\#16019](https://github.com/matrix-org/synapse/issues/16019)) - Remove leading and trailing spaces when setting a display name. ([\#16031](https://github.com/matrix-org/synapse/issues/16031)) - Combine duplicated code. ([\#16023](https://github.com/matrix-org/synapse/issues/16023)) - Collect additional metrics from `ResponseCache` for eviction. ([\#16028](https://github.com/matrix-org/synapse/issues/16028)) - Fix endpoint improperly declaring support for MSC3814. ([\#16068](https://github.com/matrix-org/synapse/issues/16068)) - Drop backwards compat hack for event serialization. ([\#16069](https://github.com/matrix-org/synapse/issues/16069)) ### Updates to locked dependencies * Update PyYAML to 6.0.1. ([\#16011](https://github.com/matrix-org/synapse/issues/16011)) * Bump cryptography from 41.0.2 to 41.0.3. ([\#16048](https://github.com/matrix-org/synapse/issues/16048)) * Bump furo from 2023.5.20 to 2023.7.26. ([\#16077](https://github.com/matrix-org/synapse/issues/16077)) * Bump immutabledict from 2.2.4 to 3.0.0. ([\#16034](https://github.com/matrix-org/synapse/issues/16034)) * Update certifi to 2023.7.22 and pygments to 2.15.1. ([\#16044](https://github.com/matrix-org/synapse/issues/16044)) * Bump jsonschema from 4.18.3 to 4.19.0. ([\#16081](https://github.com/matrix-org/synapse/issues/16081)) * Bump phonenumbers from 8.13.14 to 8.13.18. ([\#16076](https://github.com/matrix-org/synapse/issues/16076)) * Bump regex from 1.9.1 to 1.9.3. ([\#16073](https://github.com/matrix-org/synapse/issues/16073)) * Bump serde from 1.0.171 to 1.0.175. ([\#15982](https://github.com/matrix-org/synapse/issues/15982)) * Bump serde from 1.0.175 to 1.0.179. ([\#16033](https://github.com/matrix-org/synapse/issues/16033)) * Bump serde from 1.0.179 to 1.0.183. ([\#16074](https://github.com/matrix-org/synapse/issues/16074)) * Bump serde_json from 1.0.103 to 1.0.104. ([\#16032](https://github.com/matrix-org/synapse/issues/16032)) * Bump service-identity from 21.1.0 to 23.1.0. ([\#16038](https://github.com/matrix-org/synapse/issues/16038)) * Bump types-commonmark from 0.9.2.3 to 0.9.2.4. ([\#16037](https://github.com/matrix-org/synapse/issues/16037)) * Bump types-jsonschema from 4.17.0.8 to 4.17.0.10. ([\#16036](https://github.com/matrix-org/synapse/issues/16036)) * Bump types-netaddr from 0.8.0.8 to 0.8.0.9. ([\#16035](https://github.com/matrix-org/synapse/issues/16035)) * Bump types-opentracing from 2.4.10.5 to 2.4.10.6. ([\#16078](https://github.com/matrix-org/synapse/issues/16078)) * Bump types-setuptools from 68.0.0.0 to 68.0.0.3. ([\#16079](https://github.com/matrix-org/synapse/issues/16079)) # Synapse 1.89.0 (2023-08-01) No significant changes since 1.89.0rc1. # Synapse 1.89.0rc1 (2023-07-25) ### Features - Add Unix Socket support for HTTP Replication Listeners. [Document and provide usage instructions](https://matrix-org.github.io/synapse/v1.89/usage/configuration/config_documentation.html#listeners) for utilizing Unix sockets in Synapse. Contributed by Jason Little. ([\#15708](https://github.com/matrix-org/synapse/issues/15708), [\#15924](https://github.com/matrix-org/synapse/issues/15924)) - Allow `+` in Matrix IDs, per [MSC4009](https://github.com/matrix-org/matrix-spec-proposals/pull/4009). ([\#15911](https://github.com/matrix-org/synapse/issues/15911)) - Support room version 11 from [MSC3820](https://github.com/matrix-org/matrix-spec-proposals/pull/3820). ([\#15912](https://github.com/matrix-org/synapse/issues/15912)) - Allow configuring the set of workers to proxy outbound federation traffic through via `outbound_federation_restricted_to`. ([\#15913](https://github.com/matrix-org/synapse/issues/15913), [\#15969](https://github.com/matrix-org/synapse/issues/15969)) - Implement [MSC3814](https://github.com/matrix-org/matrix-spec-proposals/pull/3814), dehydrated devices v2/shrivelled sessions and move [MSC2697](https://github.com/matrix-org/matrix-spec-proposals/pull/2697) behind a config flag. Contributed by Nico from Famedly, H-Shay and poljar. ([\#15929](https://github.com/matrix-org/synapse/issues/15929)) ### Bugfixes - Fix a long-standing bug where remote invites weren't correctly pushed. ([\#15820](https://github.com/matrix-org/synapse/issues/15820)) - Fix background schema updates failing over a large upgrade gap. ([\#15887](https://github.com/matrix-org/synapse/issues/15887)) - Fix a bug introduced in 1.86.0 where Synapse starting with an empty `experimental_features` configuration setting. ([\#15925](https://github.com/matrix-org/synapse/issues/15925)) - Fixed deploy annotations in the provided Grafana dashboard config, so that it shows for any homeserver and not just matrix.org. Contributed by @wrjlewis. ([\#15957](https://github.com/matrix-org/synapse/issues/15957)) - Ensure a long state res does not starve CPU by occasionally yielding to the reactor. ([\#15960](https://github.com/matrix-org/synapse/issues/15960)) - Properly handle redactions of creation events. ([\#15973](https://github.com/matrix-org/synapse/issues/15973)) - Fix a bug where resyncing stale device lists could block responding to federation transactions, and thus delay receiving new data from the remote server. ([\#15975](https://github.com/matrix-org/synapse/issues/15975)) ### Improved Documentation - Better clarify how to run a worker instance (pass both configs). ([\#15921](https://github.com/matrix-org/synapse/issues/15921)) - Improve [the documentation](https://matrix-org.github.io/synapse/v1.89/admin_api/user_admin_api.html#login-as-a-user) for the login as a user admin API. ([\#15938](https://github.com/matrix-org/synapse/issues/15938)) - Fix broken Arch Linux package link. Contributed by @SnipeXandrej. ([\#15981](https://github.com/matrix-org/synapse/issues/15981)) ### Deprecations and Removals - Remove support for calling the `/register` endpoint with an unspecced `user` property for application services. ([\#15928](https://github.com/matrix-org/synapse/issues/15928)) ### Internal Changes - Mark `get_user_in_directory` private since it is only used in tests. Also remove the cache from it. ([\#15884](https://github.com/matrix-org/synapse/issues/15884)) - Document which Python version runs on a given Linux distribution so we can more easily clean up later. ([\#15909](https://github.com/matrix-org/synapse/issues/15909)) - Add details to warning in log when we fail to fetch an alias. ([\#15922](https://github.com/matrix-org/synapse/issues/15922)) - Remove unneeded `__init__`. ([\#15926](https://github.com/matrix-org/synapse/issues/15926)) - Fix bug with read/write lock implementation. This is currently unused so has no observable effects. ([\#15933](https://github.com/matrix-org/synapse/issues/15933), [\#15958](https://github.com/matrix-org/synapse/issues/15958)) - Unbreak the nix development environment by pinning the Rust version to 1.70.0. ([\#15940](https://github.com/matrix-org/synapse/issues/15940)) - Update presence metrics to differentiate remote vs local users. ([\#15952](https://github.com/matrix-org/synapse/issues/15952)) - Stop reading from column `user_id` of table `profiles`. ([\#15955](https://github.com/matrix-org/synapse/issues/15955)) - Build packages for Debian Trixie. ([\#15961](https://github.com/matrix-org/synapse/issues/15961)) - Reduce the amount of state we pull out. ([\#15968](https://github.com/matrix-org/synapse/issues/15968)) - Speed up updating state in large rooms. ([\#15971](https://github.com/matrix-org/synapse/issues/15971)) ### Updates to locked dependencies * Bump anyhow from 1.0.71 to 1.0.72. ([\#15949](https://github.com/matrix-org/synapse/issues/15949)) * Bump click from 8.1.3 to 8.1.6. ([\#15984](https://github.com/matrix-org/synapse/issues/15984)) * Bump cryptography from 41.0.1 to 41.0.2. ([\#15943](https://github.com/matrix-org/synapse/issues/15943)) * Bump jsonschema from 4.17.3 to 4.18.3. ([\#15948](https://github.com/matrix-org/synapse/issues/15948)) * Bump pillow from 9.4.0 to 10.0.0. ([\#15986](https://github.com/matrix-org/synapse/issues/15986)) * Bump prometheus-client from 0.17.0 to 0.17.1. ([\#15945](https://github.com/matrix-org/synapse/issues/15945)) * Bump pydantic from 1.10.10 to 1.10.11. ([\#15946](https://github.com/matrix-org/synapse/issues/15946)) * Bump pygithub from 1.58.2 to 1.59.0. ([\#15834](https://github.com/matrix-org/synapse/issues/15834)) * Bump pyo3-log from 0.8.2 to 0.8.3. ([\#15951](https://github.com/matrix-org/synapse/issues/15951)) * Bump sentry-sdk from 1.26.0 to 1.28.1. ([\#15985](https://github.com/matrix-org/synapse/issues/15985)) * Bump serde_json from 1.0.100 to 1.0.103. ([\#15950](https://github.com/matrix-org/synapse/issues/15950)) * Bump types-pillow from 9.5.0.4 to 10.0.0.1. ([\#15932](https://github.com/matrix-org/synapse/issues/15932)) * Bump types-requests from 2.31.0.1 to 2.31.0.2. ([\#15983](https://github.com/matrix-org/synapse/issues/15983)) * Bump typing-extensions from 4.5.0 to 4.7.1. ([\#15947](https://github.com/matrix-org/synapse/issues/15947)) # Synapse 1.88.0 (2023-07-18) This release - raises the minimum supported version of Python to 3.8, as Python 3.7 is now [end-of-life](https://devguide.python.org/versions/), and - removes deprecated config options related to worker deployment. See [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.88/docs/upgrade.md#upgrading-to-v1880) for more information. ### Bugfixes - Revert "Stop writing to column `user_id` of tables `profiles` and `user_filters`", which was introduced in Synapse 1.88.0rc1. ([\#15953](https://github.com/matrix-org/synapse/issues/15953)) # Synapse 1.88.0rc1 (2023-07-11) ### Features - Add `not_user_type` param to the [list accounts admin API](https://matrix-org.github.io/synapse/v1.88/admin_api/user_admin_api.html#list-accounts). ([\#15844](https://github.com/matrix-org/synapse/issues/15844)) ### Bugfixes - Pin `pydantic` to `^=1.7.4` to avoid backwards-incompatible API changes from the 2.0.0 release. Contributed by @PaarthShah. ([\#15862](https://github.com/matrix-org/synapse/issues/15862)) - Correctly resize thumbnails with pillow version >=10. ([\#15876](https://github.com/matrix-org/synapse/issues/15876)) ### Improved Documentation - Fixed header levels on the [Admin API "Users"](https://matrix-org.github.io/synapse/v1.87/admin_api/user_admin_api.html) documentation page. Contributed by @sumnerevans at @beeper. ([\#15852](https://github.com/matrix-org/synapse/issues/15852)) - Remove deprecated `worker_replication_host`, `worker_replication_http_port` and `worker_replication_http_tls` configuration options. ([\#15872](https://github.com/matrix-org/synapse/issues/15872)) ### Deprecations and Removals - **Remove deprecated `worker_replication_host`, `worker_replication_http_port` and `worker_replication_http_tls` configuration options.** See the [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.88/docs/upgrade.md#removal-of-worker_replication_-settings) for more details. ([\#15860](https://github.com/matrix-org/synapse/issues/15860)) - Remove support for Python 3.7 and hence for Debian Buster. ([\#15851](https://github.com/matrix-org/synapse/issues/15851), [\#15892](https://github.com/matrix-org/synapse/issues/15892), [\#15893](https://github.com/matrix-org/synapse/issues/15893), [\#15917](https://github.com/matrix-org/synapse/pull/15917)) ### Internal Changes - Add foreign key constraint to `event_forward_extremities`. ([\#15751](https://github.com/matrix-org/synapse/issues/15751), [\#15907](https://github.com/matrix-org/synapse/issues/15907)) - Add read/write style cross-worker locks. ([\#15782](https://github.com/matrix-org/synapse/issues/15782)) - Stop writing to column `user_id` of tables `profiles` and `user_filters`. ([\#15787](https://github.com/matrix-org/synapse/issues/15787)) - Use lower isolation level when cleaning old presence stream data to avoid serialization errors. ([\#15826](https://github.com/matrix-org/synapse/issues/15826)) - Add tracing to media `/upload` code paths. ([\#15850](https://github.com/matrix-org/synapse/issues/15850), [\#15888](https://github.com/matrix-org/synapse/issues/15888)) - Add a timeout that aborts any Postgres statement taking more than 1 hour. ([\#15853](https://github.com/matrix-org/synapse/issues/15853)) - Fix the `devenv up` configuration which was ignoring the config overrides. ([\#15854](https://github.com/matrix-org/synapse/issues/15854)) - Optimised cleanup of old entries in `device_lists_stream`. ([\#15861](https://github.com/matrix-org/synapse/issues/15861)) - Update the Matrix clients link in the _It works! Synapse is running_ landing page. ([\#15874](https://github.com/matrix-org/synapse/issues/15874)) - Fix building Synapse with the nightly Rust compiler. ([\#15906](https://github.com/matrix-org/synapse/issues/15906)) - Add `Server` to Access-Control-Expose-Headers header. ([\#15908](https://github.com/matrix-org/synapse/issues/15908)) ### Updates to locked dependencies * Bump authlib from 1.2.0 to 1.2.1. ([\#15864](https://github.com/matrix-org/synapse/issues/15864)) * Bump importlib-metadata from 6.6.0 to 6.7.0. ([\#15865](https://github.com/matrix-org/synapse/issues/15865)) * Bump lxml from 4.9.2 to 4.9.3. ([\#15897](https://github.com/matrix-org/synapse/issues/15897)) * Bump regex from 1.8.4 to 1.9.1. ([\#15902](https://github.com/matrix-org/synapse/issues/15902)) * Bump ruff from 0.0.275 to 0.0.277. ([\#15900](https://github.com/matrix-org/synapse/issues/15900)) * Bump sentry-sdk from 1.25.1 to 1.26.0. ([\#15867](https://github.com/matrix-org/synapse/issues/15867)) * Bump serde_json from 1.0.99 to 1.0.100. ([\#15901](https://github.com/matrix-org/synapse/issues/15901)) * Bump types-pyopenssl from 23.2.0.0 to 23.2.0.1. ([\#15866](https://github.com/matrix-org/synapse/issues/15866)) # Synapse 1.87.0 (2023-07-04) Please note that this will be the last release of Synapse that is compatible with Python 3.7 and earlier. This is due to Python 3.7 now having reached End of Life; see our [deprecation policy](https://matrix-org.github.io/synapse/v1.87/deprecation_policy.html) for more details. ### Bugfixes - Pin `pydantic` to `^1.7.4` to avoid backwards-incompatible API changes from the 2.0.0 release. Resolves https://github.com/matrix-org/synapse/issues/15858. Contributed by @PaarthShah. ([\#15862](https://github.com/matrix-org/synapse/issues/15862)) ### Internal Changes - Split out 2022 changes from the changelog so the rendered version in GitHub doesn't timeout as much. ([\#15846](https://github.com/matrix-org/synapse/issues/15846)) # Synapse 1.87.0rc1 (2023-06-27) ### Features - Improve `/messages` response time by avoiding backfill when we already have messages to return. ([\#15737](https://github.com/matrix-org/synapse/issues/15737)) - Add spam checker module API for logins. ([\#15838](https://github.com/matrix-org/synapse/issues/15838)) ### Bugfixes - Fix a long-standing bug where media files were served in an unsafe manner. Contributed by @joshqou. ([\#15680](https://github.com/matrix-org/synapse/issues/15680)) - Avoid invalidating a cache that was just prefilled. ([\#15758](https://github.com/matrix-org/synapse/issues/15758)) - Fix requesting multiple keys at once over federation, related to [MSC3983](https://github.com/matrix-org/matrix-spec-proposals/pull/3983). ([\#15770](https://github.com/matrix-org/synapse/issues/15770)) - Fix joining rooms through aliases where the alias server isn't a real homeserver. Contributed by @tulir @ Beeper. ([\#15776](https://github.com/matrix-org/synapse/issues/15776)) - Fix a bug in push rules handling leading to an invalid (per spec) `is_user_mention` rule sent to clients. Also fix wrong rule names for `is_user_mention` and `is_room_mention`. ([\#15781](https://github.com/matrix-org/synapse/issues/15781)) - Fix a bug introduced in 1.57.0 where the wrong table would be locked on updating database rows when using SQLite as the database backend. ([\#15788](https://github.com/matrix-org/synapse/issues/15788)) - Fix Sytest environmental variable evaluation in CI. ([\#15804](https://github.com/matrix-org/synapse/issues/15804)) - Fix forgotten rooms missing from initial sync after rejoining them. Contributed by Nico from Famedly. ([\#15815](https://github.com/matrix-org/synapse/issues/15815)) - Fix sqlite `user_filters` upgrade introduced in v1.86.0. ([\#15817](https://github.com/matrix-org/synapse/issues/15817)) ### Improved Documentation - Document `looping_call()` functionality that will wait for the given function to finish before scheduling another. ([\#15772](https://github.com/matrix-org/synapse/issues/15772)) - Fix a typo in the [Admin API](https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html). ([\#15805](https://github.com/matrix-org/synapse/issues/15805)) - Fix typo in MSC number in faster remote room join architecture doc. ([\#15812](https://github.com/matrix-org/synapse/issues/15812)) ### Deprecations and Removals - Remove experimental [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716) implementation to incrementally import history into existing rooms. ([\#15748](https://github.com/matrix-org/synapse/issues/15748)) ### Internal Changes - Replace `EventContext` fields `prev_group` and `delta_ids` with field `state_group_deltas`. ([\#15233](https://github.com/matrix-org/synapse/issues/15233)) - Regularly try to send transactions to other servers after they failed instead of waiting for a new event to be available before trying. ([\#15743](https://github.com/matrix-org/synapse/issues/15743)) - Fix requesting multiple keys at once over federation, related to [MSC3983](https://github.com/matrix-org/matrix-spec-proposals/pull/3983). ([\#15755](https://github.com/matrix-org/synapse/issues/15755)) - Allow for the configuration of max request retries and min/max retry delays in the matrix federation client. ([\#15783](https://github.com/matrix-org/synapse/issues/15783)) - Switch from `matrix://` to `matrix-federation://` scheme for internal Synapse routing of outbound federation traffic. ([\#15806](https://github.com/matrix-org/synapse/issues/15806)) - Fix harmless exceptions being printed when running the port DB script. ([\#15814](https://github.com/matrix-org/synapse/issues/15814)) ### Updates to locked dependencies * Bump attrs from 22.2.0 to 23.1.0. ([\#15801](https://github.com/matrix-org/synapse/issues/15801)) * Bump cryptography from 40.0.2 to 41.0.1. ([\#15800](https://github.com/matrix-org/synapse/issues/15800)) * Bump ijson from 3.2.0.post0 to 3.2.1. ([\#15802](https://github.com/matrix-org/synapse/issues/15802)) * Bump phonenumbers from 8.13.13 to 8.13.14. ([\#15798](https://github.com/matrix-org/synapse/issues/15798)) * Bump ruff from 0.0.265 to 0.0.272. ([\#15799](https://github.com/matrix-org/synapse/issues/15799)) * Bump ruff from 0.0.272 to 0.0.275. ([\#15833](https://github.com/matrix-org/synapse/issues/15833)) * Bump serde_json from 1.0.96 to 1.0.97. ([\#15797](https://github.com/matrix-org/synapse/issues/15797)) * Bump serde_json from 1.0.97 to 1.0.99. ([\#15832](https://github.com/matrix-org/synapse/issues/15832)) * Bump towncrier from 22.12.0 to 23.6.0. ([\#15831](https://github.com/matrix-org/synapse/issues/15831)) * Bump types-opentracing from 2.4.10.4 to 2.4.10.5. ([\#15830](https://github.com/matrix-org/synapse/issues/15830)) * Bump types-setuptools from 67.8.0.0 to 68.0.0.0. ([\#15835](https://github.com/matrix-org/synapse/issues/15835)) Synapse 1.86.0 (2023-06-20) =========================== No significant changes since 1.86.0rc2. Synapse 1.86.0rc2 (2023-06-14) ============================== Bugfixes -------- - Fix an error when having workers of different versions running. ([\#15774](https://github.com/matrix-org/synapse/issues/15774)) Synapse 1.86.0rc1 (2023-06-13) ============================== This version was tagged but never released. Features -------- - Stable support for [MSC3882](https://github.com/matrix-org/matrix-spec-proposals/pull/3882) to allow an existing device/session to generate a login token for use on a new device/session. ([\#15388](https://github.com/matrix-org/synapse/issues/15388)) - Support resolving a room's [canonical alias](https://spec.matrix.org/v1.7/client-server-api/#mroomcanonical_alias) via the module API. ([\#15450](https://github.com/matrix-org/synapse/issues/15450)) - Enable support for [MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952): intentional mentions. ([\#15520](https://github.com/matrix-org/synapse/issues/15520)) - Experimental [MSC3861](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) support: delegate auth to an OIDC provider. ([\#15582](https://github.com/matrix-org/synapse/issues/15582)) - Add Synapse version deploy annotations to Grafana dashboard which enables easy correlation between behavior changes witnessed in a graph to a certain Synapse version and nail down regressions. ([\#15674](https://github.com/matrix-org/synapse/issues/15674)) - Add a catch-all * to the supported relation types when redacting an event and its related events. This is an update to [MSC3912](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) implementation. ([\#15705](https://github.com/matrix-org/synapse/issues/15705)) - Speed up `/messages` by backfilling in the background when there are no backward extremities where we are directly paginating. ([\#15710](https://github.com/matrix-org/synapse/issues/15710)) - Expose a metric reporting the database background update status. ([\#15740](https://github.com/matrix-org/synapse/issues/15740)) Bugfixes -------- - Correctly clear caches when we delete a room. ([\#15609](https://github.com/matrix-org/synapse/issues/15609)) - Check permissions for enabling encryption earlier during room creation to avoid creating broken rooms. ([\#15695](https://github.com/matrix-org/synapse/issues/15695)) Improved Documentation ---------------------- - Simplify query to find participating servers in a room. ([\#15732](https://github.com/matrix-org/synapse/issues/15732)) Internal Changes ---------------- - Log when events are (maybe unexpectedly) filtered out of responses in tests. ([\#14213](https://github.com/matrix-org/synapse/issues/14213)) - Read from column `full_user_id` rather than `user_id` of tables `profiles` and `user_filters`. ([\#15649](https://github.com/matrix-org/synapse/issues/15649)) - Add support for tracing functions which return `Awaitable`s. ([\#15650](https://github.com/matrix-org/synapse/issues/15650)) - Cache requests for user's devices over federation. ([\#15675](https://github.com/matrix-org/synapse/issues/15675)) - Add fully qualified docker image names to Dockerfiles. ([\#15689](https://github.com/matrix-org/synapse/issues/15689)) - Remove some unused code. ([\#15690](https://github.com/matrix-org/synapse/issues/15690)) - Improve type hints. ([\#15694](https://github.com/matrix-org/synapse/issues/15694), [\#15697](https://github.com/matrix-org/synapse/issues/15697)) - Update docstring and traces on `maybe_backfill()` functions. ([\#15709](https://github.com/matrix-org/synapse/issues/15709)) - Add context for when/why to use the `long_retries` option when sending Federation requests. ([\#15721](https://github.com/matrix-org/synapse/issues/15721)) - Removed some unused fields. ([\#15723](https://github.com/matrix-org/synapse/issues/15723)) - Update federation error to more plainly explain we can only authorize our own membership events. ([\#15725](https://github.com/matrix-org/synapse/issues/15725)) - Prevent the `latest_deps` and `twisted_trunk` daily GitHub Actions workflows from running on forks of the codebase. ([\#15726](https://github.com/matrix-org/synapse/issues/15726)) - Improve performance of user directory search. ([\#15729](https://github.com/matrix-org/synapse/issues/15729)) - Remove redundant table join with `room_memberships` when doing a `is_host_joined()`/`is_host_invited()` call (`membership` is already part of the `current_state_events`). ([\#15731](https://github.com/matrix-org/synapse/issues/15731)) - Remove superfluous `room_memberships` join from background update. ([\#15733](https://github.com/matrix-org/synapse/issues/15733)) - Speed up typechecking CI. ([\#15752](https://github.com/matrix-org/synapse/issues/15752)) - Bump minimum supported Rust version to 1.60.0. ([\#15768](https://github.com/matrix-org/synapse/issues/15768)) ### Updates to locked dependencies * Bump importlib-metadata from 6.1.0 to 6.6.0. ([\#15711](https://github.com/matrix-org/synapse/issues/15711)) * Bump library/redis from 6-bullseye to 7-bullseye in /docker. ([\#15712](https://github.com/matrix-org/synapse/issues/15712)) * Bump log from 0.4.18 to 0.4.19. ([\#15761](https://github.com/matrix-org/synapse/issues/15761)) * Bump phonenumbers from 8.13.11 to 8.13.13. ([\#15763](https://github.com/matrix-org/synapse/issues/15763)) * Bump pyasn1 from 0.4.8 to 0.5.0. ([\#15713](https://github.com/matrix-org/synapse/issues/15713)) * Bump pydantic from 1.10.8 to 1.10.9. ([\#15762](https://github.com/matrix-org/synapse/issues/15762)) * Bump pyo3-log from 0.8.1 to 0.8.2. ([\#15759](https://github.com/matrix-org/synapse/issues/15759)) * Bump pyopenssl from 23.1.1 to 23.2.0. ([\#15765](https://github.com/matrix-org/synapse/issues/15765)) * Bump regex from 1.7.3 to 1.8.4. ([\#15769](https://github.com/matrix-org/synapse/issues/15769)) * Bump sentry-sdk from 1.22.1 to 1.25.0. ([\#15714](https://github.com/matrix-org/synapse/issues/15714)) * Bump sentry-sdk from 1.25.0 to 1.25.1. ([\#15764](https://github.com/matrix-org/synapse/issues/15764)) * Bump serde from 1.0.163 to 1.0.164. ([\#15760](https://github.com/matrix-org/synapse/issues/15760)) * Bump types-jsonschema from 4.17.0.7 to 4.17.0.8. ([\#15716](https://github.com/matrix-org/synapse/issues/15716)) * Bump types-pyopenssl from 23.1.0.2 to 23.2.0.0. ([\#15766](https://github.com/matrix-org/synapse/issues/15766)) * Bump types-requests from 2.31.0.0 to 2.31.0.1. ([\#15715](https://github.com/matrix-org/synapse/issues/15715)) Synapse 1.85.2 (2023-06-08) =========================== Bugfixes -------- - Fix regression where using TLS for HTTP replication between workers did not work. Introduced in v1.85.0. ([\#15746](https://github.com/matrix-org/synapse/issues/15746)) Synapse 1.85.1 (2023-06-07) =========================== Note: this release only fixes a bug that stopped some deployments from upgrading to v1.85.0. There is no need to upgrade to v1.85.1 if successfully running v1.85.0. Bugfixes -------- - Fix bug in schema delta that broke upgrades for some deployments. Introduced in v1.85.0. ([\#15738](https://github.com/matrix-org/synapse/issues/15738), [\#15739](https://github.com/matrix-org/synapse/issues/15739)) Synapse 1.85.0 (2023-06-06) =========================== No significant changes since 1.85.0rc2. ## Security advisory The following issues are fixed in 1.85.0 (and RCs). - [GHSA-26c5-ppr8-f33p](https://github.com/matrix-org/synapse/security/advisories/GHSA-26c5-ppr8-f33p) / [CVE-2023-32682](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-32682) — Low Severity It may be possible for a deactivated user to login when using uncommon configurations. - [GHSA-98px-6486-j7qc](https://github.com/matrix-org/synapse/security/advisories/GHSA-98px-6486-j7qc) / [CVE-2023-32683](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-32683) — Low Severity A discovered oEmbed or image URL can bypass the `url_preview_url_blacklist` setting potentially allowing server side request forgery or bypassing network policies. Impact is limited to IP addresses allowed by the `url_preview_ip_range_blacklist` setting (by default this only allows public IPs). See the advisories for more details. If you have any questions, email security@matrix.org. Synapse 1.85.0rc2 (2023-06-01) ============================== Bugfixes -------- - Fix a performance issue introduced in Synapse v1.83.0 which meant that purging rooms was very slow and database-intensive. ([\#15693](https://github.com/matrix-org/synapse/issues/15693)) Deprecations and Removals ------------------------- - Deprecate calling the `/register` endpoint with an unspecced `user` property for application services. ([\#15703](https://github.com/matrix-org/synapse/issues/15703)) Internal Changes ---------------- - Speed up background jobs `populate_full_user_id_user_filters` and `populate_full_user_id_profiles`. ([\#15700](https://github.com/matrix-org/synapse/issues/15700)) Synapse 1.85.0rc1 (2023-05-30) ============================== Features -------- - Improve performance of backfill requests by performing backfill of previously failed requests in the background. ([\#15585](https://github.com/matrix-org/synapse/issues/15585)) - Add a new [admin API](https://matrix-org.github.io/synapse/v1.85/usage/administration/admin_api/index.html) to [create a new device for a user](https://matrix-org.github.io/synapse/v1.85/admin_api/user_admin_api.html#create-a-device). ([\#15611](https://github.com/matrix-org/synapse/issues/15611)) - Add Unix socket support for Redis connections. Contributed by Jason Little. ([\#15644](https://github.com/matrix-org/synapse/issues/15644)) Bugfixes -------- - Fix a long-standing bug where setting the read marker could fail when using message retention. Contributed by Nick @ Beeper (@fizzadar). ([\#15464](https://github.com/matrix-org/synapse/issues/15464)) - Fix a long-standing bug where the `url_preview_url_blacklist` configuration setting was not applied to oEmbed or image URLs found while previewing a URL. ([\#15601](https://github.com/matrix-org/synapse/issues/15601)) - Fix a long-standing bug where filters with multiple backslashes were rejected. ([\#15607](https://github.com/matrix-org/synapse/issues/15607)) - Fix a bug introduced in Synapse 1.82.0 where the error message displayed when validation of the `app_service_config_files` config option fails would be incorrectly formatted. ([\#15614](https://github.com/matrix-org/synapse/issues/15614)) - Fix a long-standing bug where deactivated users were still able to login using the custom `org.matrix.login.jwt` login type (if enabled). ([\#15624](https://github.com/matrix-org/synapse/issues/15624)) - Fix a long-standing bug where deactivated users were able to login in uncommon situations. ([\#15634](https://github.com/matrix-org/synapse/issues/15634)) Improved Documentation ---------------------- - Warn users that at least 3.75GB of space is needed for the nix Synapse development environment. ([\#15613](https://github.com/matrix-org/synapse/issues/15613)) - Remove outdated comment from the generated and sample homeserver log configs. ([\#15648](https://github.com/matrix-org/synapse/issues/15648)) - Improve contributor docs to make it more clear that Rust is a necessary prerequisite. Contributed by @grantm. ([\#15668](https://github.com/matrix-org/synapse/issues/15668)) Deprecations and Removals ------------------------- - Remove the old version of the R30 (30-day retained users) phone-home metric. ([\#10428](https://github.com/matrix-org/synapse/issues/10428)) Internal Changes ---------------- - Create dependabot changelogs at release time. ([\#15481](https://github.com/matrix-org/synapse/issues/15481)) - Add not null constraint to column `full_user_id` of tables `profiles` and `user_filters`. ([\#15537](https://github.com/matrix-org/synapse/issues/15537)) - Allow connecting to HTTP Replication Endpoints by using `worker_name` when constructing the request. ([\#15578](https://github.com/matrix-org/synapse/issues/15578)) - Make the `thread_id` column on `event_push_actions`, `event_push_actions_staging`, and `event_push_summary` non-null. ([\#15597](https://github.com/matrix-org/synapse/issues/15597)) - Run mypy type checking with the minimum supported Python version to catch new usage that isn't backwards-compatible. ([\#15602](https://github.com/matrix-org/synapse/issues/15602)) - Fix subscriptable type usage in Python <3.9. ([\#15604](https://github.com/matrix-org/synapse/issues/15604)) - Update internal terminology. ([\#15606](https://github.com/matrix-org/synapse/issues/15606), [\#15620](https://github.com/matrix-org/synapse/issues/15620)) - Instrument `state` and `state_group` storage-related operations to better picture what's happening when tracing. ([\#15610](https://github.com/matrix-org/synapse/issues/15610), [\#15647](https://github.com/matrix-org/synapse/issues/15647)) - Trace how many new events from the backfill response we need to process. ([\#15633](https://github.com/matrix-org/synapse/issues/15633)) - Re-type config paths in `ConfigError`s to be `StrSequence`s instead of `Iterable[str]`s. ([\#15615](https://github.com/matrix-org/synapse/issues/15615)) - Update Mutual Rooms ([MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666)) implementation to match new proposal text. ([\#15621](https://github.com/matrix-org/synapse/issues/15621)) - Remove the unstable identifiers from faster joins ([MSC3706](https://github.com/matrix-org/matrix-spec-proposals/pull/3706)). ([\#15625](https://github.com/matrix-org/synapse/issues/15625)) - Fix the olddeps CI. ([\#15626](https://github.com/matrix-org/synapse/issues/15626)) - Remove duplicate timestamp from test logs (`_trial_temp/test.log`). ([\#15636](https://github.com/matrix-org/synapse/issues/15636)) - Fix two memory leaks in `trial` test runs. ([\#15630](https://github.com/matrix-org/synapse/issues/15630)) - Limit the size of the `HomeServerConfig` cache in trial test runs. ([\#15646](https://github.com/matrix-org/synapse/issues/15646)) - Improve type hints. ([\#15658](https://github.com/matrix-org/synapse/issues/15658), [\#15659](https://github.com/matrix-org/synapse/issues/15659)) - Add requesting user id parameter to key claim methods in `TransportLayerClient`. ([\#15663](https://github.com/matrix-org/synapse/issues/15663)) - Speed up rebuilding of the user directory for local users. ([\#15665](https://github.com/matrix-org/synapse/issues/15665)) - Implement "option 2" for [MSC3820](https://github.com/matrix-org/matrix-spec-proposals/pull/3820): Room version 11. ([\#15666](https://github.com/matrix-org/synapse/issues/15666), [\#15678](https://github.com/matrix-org/synapse/issues/15678)) ### Updates to locked dependencies * Bump furo from 2023.3.27 to 2023.5.20. ([\#15642](https://github.com/matrix-org/synapse/issues/15642)) * Bump log from 0.4.17 to 0.4.18. ([\#15681](https://github.com/matrix-org/synapse/issues/15681)) * Bump prometheus-client from 0.16.0 to 0.17.0. ([\#15682](https://github.com/matrix-org/synapse/issues/15682)) * Bump pydantic from 1.10.7 to 1.10.8. ([\#15685](https://github.com/matrix-org/synapse/issues/15685)) * Bump pygithub from 1.58.1 to 1.58.2. ([\#15643](https://github.com/matrix-org/synapse/issues/15643)) * Bump requests from 2.28.2 to 2.31.0. ([\#15651](https://github.com/matrix-org/synapse/issues/15651)) * Bump sphinx from 6.1.3 to 6.2.1. ([\#15641](https://github.com/matrix-org/synapse/issues/15641)) * Bump types-bleach from 6.0.0.1 to 6.0.0.3. ([\#15686](https://github.com/matrix-org/synapse/issues/15686)) * Bump types-pillow from 9.5.0.2 to 9.5.0.4. ([\#15640](https://github.com/matrix-org/synapse/issues/15640)) * Bump types-pyyaml from 6.0.12.9 to 6.0.12.10. ([\#15683](https://github.com/matrix-org/synapse/issues/15683)) * Bump types-requests from 2.30.0.0 to 2.31.0.0. ([\#15684](https://github.com/matrix-org/synapse/issues/15684)) * Bump types-setuptools from 67.7.0.2 to 67.8.0.0. ([\#15639](https://github.com/matrix-org/synapse/issues/15639)) Synapse 1.84.1 (2023-05-26) =========================== This patch release fixes a major issue with homeservers that do not have an `instance_map` defined but which do use workers. If you have already upgraded to Synapse 1.84.0 and your homeserver is working normally, then there is no need to update to this patch release. Bugfixes -------- - Fix a bug introduced in Synapse v1.84.0 where workers do not start up when no `instance_map` was provided. ([\#15672](https://github.com/matrix-org/synapse/issues/15672)) Internal Changes ---------------- - Add `dch` and `notify-send` to the development Nix flake so that the release script can be used. ([\#15673](https://github.com/matrix-org/synapse/issues/15673)) Synapse 1.84.0 (2023-05-23) =========================== The `worker_replication_*` configuration settings have been deprecated in favour of configuring the main process consistently with other instances in the `instance_map`. The deprecated settings will be removed in Synapse v1.88.0, but changing your configuration in advance is recommended. See the [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.84/docs/upgrade.md#upgrading-to-v1840) for more information. Bugfixes -------- - Fix a bug introduced in Synapse 1.84.0rc1 where errors during startup were not reported correctly on Python < 3.10. ([\#15599](https://github.com/matrix-org/synapse/issues/15599)) Synapse 1.84.0rc1 (2023-05-16) ============================== Features -------- - Add an option to prevent media downloads from configured domains. ([\#15197](https://github.com/matrix-org/synapse/issues/15197)) - Add `forget_rooms_on_leave` config option to automatically forget rooms when users leave them or are removed from them. ([\#15224](https://github.com/matrix-org/synapse/issues/15224)) - Add redis TLS configuration options. ([\#15312](https://github.com/matrix-org/synapse/issues/15312)) - Add a config option to delay push notifications by a random amount, to discourage time-based profiling. ([\#15516](https://github.com/matrix-org/synapse/issues/15516)) - Stabilize support for [MSC2659](https://github.com/matrix-org/matrix-spec-proposals/pull/2659): application service ping endpoint. Contributed by Tulir @ Beeper. ([\#15528](https://github.com/matrix-org/synapse/issues/15528)) - Implement [MSC4009](https://github.com/matrix-org/matrix-spec-proposals/pull/4009) to expand the supported characters in Matrix IDs. ([\#15536](https://github.com/matrix-org/synapse/issues/15536)) - Advertise support for Matrix 1.6 on `/_matrix/client/versions`. ([\#15559](https://github.com/matrix-org/synapse/issues/15559)) - Print full error and stack-trace of any exception that occurs during startup/initialization. ([\#15569](https://github.com/matrix-org/synapse/issues/15569)) Bugfixes -------- - Don't fail on federation over TOR where SRV queries are not supported. Contributed by Zdzichu. ([\#15523](https://github.com/matrix-org/synapse/issues/15523)) - Experimental support for [MSC4010](https://github.com/matrix-org/matrix-spec-proposals/pull/4010) which rejects setting the `"m.push_rules"` via account data. ([\#15554](https://github.com/matrix-org/synapse/issues/15554), [\#15555](https://github.com/matrix-org/synapse/issues/15555)) - Fix a long-standing bug where an invalid membership event could cause an internal server error. ([\#15564](https://github.com/matrix-org/synapse/issues/15564)) - Require at least poetry-core v1.1.0. ([\#15566](https://github.com/matrix-org/synapse/issues/15566), [\#15571](https://github.com/matrix-org/synapse/issues/15571)) Deprecations and Removals ------------------------- - Remove need for `worker_replication_*` based settings in worker configuration yaml by placing this data directly on the `instance_map` instead. ([\#15491](https://github.com/matrix-org/synapse/issues/15491)) Updates to the Docker image --------------------------- - Add pkg-config package to Stage 0 to be able to build Dockerfile on ppc64le architecture. ([\#15567](https://github.com/matrix-org/synapse/issues/15567)) Improved Documentation ---------------------- - Clarify documentation of the "Create or modify account" Admin API. ([\#15544](https://github.com/matrix-org/synapse/issues/15544)) - Fix path to the `statistics/database/rooms` admin API in documentation. ([\#15560](https://github.com/matrix-org/synapse/issues/15560)) - Update and improve Mastodon Single Sign-On documentation. ([\#15587](https://github.com/matrix-org/synapse/issues/15587)) Internal Changes ---------------- - Use oEmbed to generate URL previews for YouTube Shorts. ([\#15025](https://github.com/matrix-org/synapse/issues/15025)) - Create new `Client` for use with HTTP Replication between workers. Contributed by Jason Little. ([\#15470](https://github.com/matrix-org/synapse/issues/15470)) - Bump pyicu from 2.10.2 to 2.11. ([\#15509](https://github.com/matrix-org/synapse/issues/15509)) - Remove references to supporting per-user flag for [MSC2654](https://github.com/matrix-org/matrix-spec-proposals/pull/2654). ([\#15522](https://github.com/matrix-org/synapse/issues/15522)) - Don't use a trusted key server when running the demo scripts. ([\#15527](https://github.com/matrix-org/synapse/issues/15527)) - Speed up rebuilding of the user directory for local users. ([\#15529](https://github.com/matrix-org/synapse/issues/15529)) - Speed up deleting of old rows in `event_push_actions`. ([\#15531](https://github.com/matrix-org/synapse/issues/15531)) - Install the `xmlsec` and `mdbook` packages and switch back to the upstream [cachix/devenv](https://github.com/cachix/devenv) repo in the nix development environment. ([\#15532](https://github.com/matrix-org/synapse/issues/15532), [\#15533](https://github.com/matrix-org/synapse/issues/15533), [\#15545](https://github.com/matrix-org/synapse/issues/15545)) - Implement [MSC3987](https://github.com/matrix-org/matrix-spec-proposals/pull/3987) by removing `"dont_notify"` from the list of actions in default push rules. ([\#15534](https://github.com/matrix-org/synapse/issues/15534)) - Move various module API callback registration methods to a dedicated class. ([\#15535](https://github.com/matrix-org/synapse/issues/15535)) - Proxy `/user/devices` federation queries to application services for [MSC3984](https://github.com/matrix-org/matrix-spec-proposals/pull/3984). ([\#15539](https://github.com/matrix-org/synapse/issues/15539)) - Factor out an `is_mine_server_name` method. ([\#15542](https://github.com/matrix-org/synapse/issues/15542)) - Allow running Complement tests using [podman](https://podman.io/) by adding a `PODMAN` environment variable to `scripts-dev/complement.sh`. ([\#15543](https://github.com/matrix-org/synapse/issues/15543)) - Bump serde from 1.0.160 to 1.0.162. ([\#15548](https://github.com/matrix-org/synapse/issues/15548)) - Bump types-setuptools from 67.6.0.5 to 67.7.0.1. ([\#15549](https://github.com/matrix-org/synapse/issues/15549)) - Bump sentry-sdk from 1.19.1 to 1.22.1. ([\#15550](https://github.com/matrix-org/synapse/issues/15550)) - Bump ruff from 0.0.259 to 0.0.265. ([\#15551](https://github.com/matrix-org/synapse/issues/15551)) - Bump hiredis from 2.2.2 to 2.2.3. ([\#15552](https://github.com/matrix-org/synapse/issues/15552)) - Bump types-requests from 2.29.0.0 to 2.30.0.0. ([\#15553](https://github.com/matrix-org/synapse/issues/15553)) - Add `org.matrix.msc3981` info to `/_matrix/client/versions`. ([\#15558](https://github.com/matrix-org/synapse/issues/15558)) - Declare unstable support for [MSC3391](https://github.com/matrix-org/matrix-spec-proposals/pull/3391) under `/_matrix/client/versions` if the experimental implementation is enabled. ([\#15562](https://github.com/matrix-org/synapse/issues/15562)) - Implement [MSC3821](https://github.com/matrix-org/matrix-spec-proposals/pull/3821) to update the redaction rules. ([\#15563](https://github.com/matrix-org/synapse/issues/15563)) - Implement updated redaction rules from [MSC3389](https://github.com/matrix-org/matrix-spec-proposals/pull/3389). ([\#15565](https://github.com/matrix-org/synapse/issues/15565)) - Allow `pip install` to use setuptools_rust 1.6.0 when building Synapse. ([\#15570](https://github.com/matrix-org/synapse/issues/15570)) - Deal with upcoming Github Actions deprecations. ([\#15576](https://github.com/matrix-org/synapse/issues/15576)) - Export `run_as_background_process` from the module API. ([\#15577](https://github.com/matrix-org/synapse/issues/15577)) - Update build system requirements to allow building with poetry-core==1.6.0. ([\#15588](https://github.com/matrix-org/synapse/issues/15588)) - Bump serde from 1.0.162 to 1.0.163. ([\#15589](https://github.com/matrix-org/synapse/issues/15589)) - Bump phonenumbers from 8.13.7 to 8.13.11. ([\#15590](https://github.com/matrix-org/synapse/issues/15590)) - Bump types-psycopg2 from 2.9.21.9 to 2.9.21.10. ([\#15591](https://github.com/matrix-org/synapse/issues/15591)) - Bump types-commonmark from 0.9.2.2 to 0.9.2.3. ([\#15592](https://github.com/matrix-org/synapse/issues/15592)) - Bump types-setuptools from 67.7.0.1 to 67.7.0.2. ([\#15594](https://github.com/matrix-org/synapse/issues/15594)) Synapse 1.83.0 (2023-05-09) =========================== No significant changes since 1.83.0rc1. Synapse 1.83.0rc1 (2023-05-02) ============================== Features -------- - Experimental support to recursively provide relations per [MSC3981](https://github.com/matrix-org/matrix-spec-proposals/pull/3981). ([\#15315](https://github.com/matrix-org/synapse/issues/15315)) - Experimental support for [MSC3970](https://github.com/matrix-org/matrix-spec-proposals/pull/3970): Scope transaction IDs to devices. ([\#15318](https://github.com/matrix-org/synapse/issues/15318)) - Add an [admin API endpoint](https://matrix-org.github.io/synapse/v1.83/admin_api/experimental_features.html) to support per-user feature flags. ([\#15344](https://github.com/matrix-org/synapse/issues/15344)) - Add a module API to send an HTTP push notification. ([\#15387](https://github.com/matrix-org/synapse/issues/15387)) - Add an [admin API endpoint](https://matrix-org.github.io/synapse/v1.83/admin_api/statistics.html#get-largest-rooms-by-size-in-database) to query the largest rooms by disk space used in the database. ([\#15482](https://github.com/matrix-org/synapse/issues/15482)) Bugfixes -------- - Disable push rule evaluation for rooms excluded from sync. ([\#15361](https://github.com/matrix-org/synapse/issues/15361)) - Fix a long-standing bug where cached server key results which were directly fetched would not be properly re-used. ([\#15417](https://github.com/matrix-org/synapse/issues/15417)) - Fix a bug introduced in Synapse 1.73.0 where some experimental push rules were returned by default. ([\#15494](https://github.com/matrix-org/synapse/issues/15494)) Improved Documentation ---------------------- - Add Nginx loadbalancing example with sticky mxid for workers. ([\#15411](https://github.com/matrix-org/synapse/issues/15411)) - Update outdated development docs that mention restrictions in versions of SQLite that we no longer support. ([\#15498](https://github.com/matrix-org/synapse/issues/15498)) Internal Changes ---------------- - Speedup tests by caching HomeServerConfig instances. ([\#15284](https://github.com/matrix-org/synapse/issues/15284)) - Add denormalised event stream ordering column to membership state tables for future use. Contributed by Nick @ Beeper (@fizzadar). ([\#15356](https://github.com/matrix-org/synapse/issues/15356)) - Always use multi-user device resync replication endpoints. ([\#15418](https://github.com/matrix-org/synapse/issues/15418)) - Add column `full_user_id` to tables `profiles` and `user_filters`. ([\#15458](https://github.com/matrix-org/synapse/issues/15458)) - Update support for [MSC3983](https://github.com/matrix-org/matrix-spec-proposals/pull/3983) to allow always returning fallback-keys in a `/keys/claim` request. ([\#15462](https://github.com/matrix-org/synapse/issues/15462)) - Improve type hints. ([\#15465](https://github.com/matrix-org/synapse/issues/15465), [\#15496](https://github.com/matrix-org/synapse/issues/15496), [\#15497](https://github.com/matrix-org/synapse/issues/15497)) - Support claiming more than one OTK at a time. ([\#15468](https://github.com/matrix-org/synapse/issues/15468)) - Bump types-pyyaml from 6.0.12.8 to 6.0.12.9. ([\#15471](https://github.com/matrix-org/synapse/issues/15471)) - Bump pyasn1-modules from 0.2.8 to 0.3.0. ([\#15473](https://github.com/matrix-org/synapse/issues/15473)) - Bump cryptography from 40.0.1 to 40.0.2. ([\#15474](https://github.com/matrix-org/synapse/issues/15474)) - Bump types-netaddr from 0.8.0.7 to 0.8.0.8. ([\#15475](https://github.com/matrix-org/synapse/issues/15475)) - Bump types-jsonschema from 4.17.0.6 to 4.17.0.7. ([\#15476](https://github.com/matrix-org/synapse/issues/15476)) - Ask bug reporters to provide logs as text. ([\#15479](https://github.com/matrix-org/synapse/issues/15479)) - Add a Nix flake for use as a development environment. ([\#15495](https://github.com/matrix-org/synapse/issues/15495)) - Bump anyhow from 1.0.70 to 1.0.71. ([\#15507](https://github.com/matrix-org/synapse/issues/15507)) - Bump types-pillow from 9.4.0.19 to 9.5.0.2. ([\#15508](https://github.com/matrix-org/synapse/issues/15508)) - Bump packaging from 23.0 to 23.1. ([\#15510](https://github.com/matrix-org/synapse/issues/15510)) - Bump types-requests from 2.28.11.16 to 2.29.0.0. ([\#15511](https://github.com/matrix-org/synapse/issues/15511)) - Bump setuptools-rust from 1.5.2 to 1.6.0. ([\#15512](https://github.com/matrix-org/synapse/issues/15512)) - Update the check_schema_delta script to account for when the schema version has been bumped locally. ([\#15466](https://github.com/matrix-org/synapse/issues/15466)) Synapse 1.82.0 (2023-04-25) =========================== No significant changes since 1.82.0rc1. Synapse 1.82.0rc1 (2023-04-18) ============================== Features -------- - Allow loading the `/directory/room/{roomAlias}` endpoint on workers. ([\#15333](https://github.com/matrix-org/synapse/issues/15333)) - Add some validation to `instance_map` configuration loading. ([\#15431](https://github.com/matrix-org/synapse/issues/15431)) - Allow loading the `/capabilities` endpoint on workers. ([\#15436](https://github.com/matrix-org/synapse/issues/15436)) Bugfixes -------- - Delete server-side backup keys when deactivating an account. ([\#15181](https://github.com/matrix-org/synapse/issues/15181)) - Fix and document untold assumption that `on_logged_out` module hooks will be called before the deletion of pushers. ([\#15410](https://github.com/matrix-org/synapse/issues/15410)) - Improve robustness when handling a perspective key response by deduplicating received server keys. ([\#15423](https://github.com/matrix-org/synapse/issues/15423)) - Synapse now correctly fails to start if the config option `app_service_config_files` is not a list. ([\#15425](https://github.com/matrix-org/synapse/issues/15425)) - Disable loading `RefreshTokenServlet` (`/_matrix/client/(r0|v3|unstable)/refresh`) on workers. ([\#15428](https://github.com/matrix-org/synapse/issues/15428)) Improved Documentation ---------------------- - Note that the `delete_stale_devices_after` background job always runs on the main process. ([\#15452](https://github.com/matrix-org/synapse/issues/15452)) Deprecations and Removals ------------------------- - Remove the broken, unspecced registration fallback. Note that the *login* fallback is unaffected by this change. ([\#15405](https://github.com/matrix-org/synapse/issues/15405)) Internal Changes ---------------- - Bump black from 23.1.0 to 23.3.0. ([\#15372](https://github.com/matrix-org/synapse/issues/15372)) - Bump pyopenssl from 23.1.0 to 23.1.1. ([\#15373](https://github.com/matrix-org/synapse/issues/15373)) - Bump types-psycopg2 from 2.9.21.8 to 2.9.21.9. ([\#15374](https://github.com/matrix-org/synapse/issues/15374)) - Bump types-netaddr from 0.8.0.6 to 0.8.0.7. ([\#15375](https://github.com/matrix-org/synapse/issues/15375)) - Bump types-opentracing from 2.4.10.3 to 2.4.10.4. ([\#15376](https://github.com/matrix-org/synapse/issues/15376)) - Bump dawidd6/action-download-artifact from 2.26.0 to 2.26.1. ([\#15404](https://github.com/matrix-org/synapse/issues/15404)) - Bump parameterized from 0.8.1 to 0.9.0. ([\#15412](https://github.com/matrix-org/synapse/issues/15412)) - Bump types-pillow from 9.4.0.17 to 9.4.0.19. ([\#15413](https://github.com/matrix-org/synapse/issues/15413)) - Bump sentry-sdk from 1.17.0 to 1.19.1. ([\#15414](https://github.com/matrix-org/synapse/issues/15414)) - Bump immutabledict from 2.2.3 to 2.2.4. ([\#15415](https://github.com/matrix-org/synapse/issues/15415)) - Bump dawidd6/action-download-artifact from 2.26.1 to 2.27.0. ([\#15441](https://github.com/matrix-org/synapse/issues/15441)) - Bump serde_json from 1.0.95 to 1.0.96. ([\#15442](https://github.com/matrix-org/synapse/issues/15442)) - Bump serde from 1.0.159 to 1.0.160. ([\#15443](https://github.com/matrix-org/synapse/issues/15443)) - Bump pillow from 9.4.0 to 9.5.0. ([\#15444](https://github.com/matrix-org/synapse/issues/15444)) - Bump furo from 2023.3.23 to 2023.3.27. ([\#15445](https://github.com/matrix-org/synapse/issues/15445)) - Bump types-pyopenssl from 23.1.0.0 to 23.1.0.2. ([\#15446](https://github.com/matrix-org/synapse/issues/15446)) - Bump mypy from 1.0.0 to 1.0.1. ([\#15447](https://github.com/matrix-org/synapse/issues/15447)) - Bump psycopg2 from 2.9.5 to 2.9.6. ([\#15448](https://github.com/matrix-org/synapse/issues/15448)) - Improve DB performance of clearing out old data from `stream_ordering_to_exterm`. ([\#15382](https://github.com/matrix-org/synapse/issues/15382), [\#15429](https://github.com/matrix-org/synapse/issues/15429)) - Implement [MSC3989](https://github.com/matrix-org/matrix-spec-proposals/pull/3989) redaction algorithm. ([\#15393](https://github.com/matrix-org/synapse/issues/15393)) - Implement [MSC2175](https://github.com/matrix-org/matrix-doc/pull/2175) to stop adding `creator` to create events. ([\#15394](https://github.com/matrix-org/synapse/issues/15394)) - Implement [MSC2174](https://github.com/matrix-org/matrix-spec-proposals/pull/2174) to move the `redacts` key to a `content` property. ([\#15395](https://github.com/matrix-org/synapse/issues/15395)) - Trust dtonlay/rust-toolchain in CI. ([\#15406](https://github.com/matrix-org/synapse/issues/15406)) - Explicitly install Synapse during typechecking in CI. ([\#15409](https://github.com/matrix-org/synapse/issues/15409)) - Only load the SSO redirect servlet if SSO is enabled. ([\#15421](https://github.com/matrix-org/synapse/issues/15421)) - Refactor `SimpleHttpClient` to pull out a base class. ([\#15427](https://github.com/matrix-org/synapse/issues/15427)) - Improve type hints. ([\#15432](https://github.com/matrix-org/synapse/issues/15432)) - Convert async to normal tests in `TestSSOHandler`. ([\#15433](https://github.com/matrix-org/synapse/issues/15433)) - Speed up the user directory background update. ([\#15435](https://github.com/matrix-org/synapse/issues/15435)) - Disable directory listing for static resources in `/_matrix/static/`. ([\#15438](https://github.com/matrix-org/synapse/issues/15438)) - Move various module API callback registration methods to a dedicated class. ([\#15453](https://github.com/matrix-org/synapse/issues/15453)) Synapse 1.81.0 (2023-04-11) =========================== Synapse now attempts the versioned appservice paths before falling back to the [legacy paths](https://spec.matrix.org/v1.6/application-service-api/#legacy-routes). Usage of the legacy routes should be considered deprecated. Additionally, Synapse has supported sending the application service access token via [the `Authorization` header](https://spec.matrix.org/v1.6/application-service-api/#authorization) since v1.70.0. For backwards compatibility it is *also* sent as the `access_token` query parameter. This is insecure and should be considered deprecated. A future version of Synapse (v1.88.0 or later) will remove support for legacy application service routes and query parameter authorization. No significant changes since 1.81.0rc2. Synapse 1.81.0rc2 (2023-04-06) ============================== Bugfixes -------- - Fix the `set_device_id_for_pushers_txn` background update crash. ([\#15391](https://github.com/matrix-org/synapse/issues/15391)) Internal Changes ---------------- - Update CI to run complement under the latest stable go version. ([\#15403](https://github.com/matrix-org/synapse/issues/15403)) Synapse 1.81.0rc1 (2023-04-04) ============================== Features -------- - Add the ability to enable/disable registrations when in the OIDC flow. ([\#14978](https://github.com/matrix-org/synapse/issues/14978)) - Add a primitive helper script for listing worker endpoints. ([\#15243](https://github.com/matrix-org/synapse/issues/15243)) - Experimental support for passing One Time Key and device key requests to application services ([MSC3983](https://github.com/matrix-org/matrix-spec-proposals/pull/3983) and [MSC3984](https://github.com/matrix-org/matrix-spec-proposals/pull/3984)). ([\#15314](https://github.com/matrix-org/synapse/issues/15314), [\#15321](https://github.com/matrix-org/synapse/issues/15321)) - Allow loading `/password_policy` endpoint on workers. ([\#15331](https://github.com/matrix-org/synapse/issues/15331)) - Add experimental support for Unix sockets. Contributed by Jason Little. ([\#15353](https://github.com/matrix-org/synapse/issues/15353)) - Build Debian packages for Ubuntu 23.04 (Lunar Lobster). ([\#15381](https://github.com/matrix-org/synapse/issues/15381)) Bugfixes -------- - Fix a long-standing bug where edits of non-`m.room.message` events would not be correctly bundled. ([\#15295](https://github.com/matrix-org/synapse/issues/15295)) - Fix a bug introduced in Synapse v1.55.0 which could delay remote homeservers being able to decrypt encrypted messages sent by local users. ([\#15297](https://github.com/matrix-org/synapse/issues/15297)) - Add a check to [SQLite port_db script](https://matrix-org.github.io/synapse/latest/postgres.html#porting-from-sqlite) to ensure that the sqlite database passed to the script exists before trying to port from it. ([\#15306](https://github.com/matrix-org/synapse/issues/15306)) - Fix a bug introduced in Synapse 1.76.0 where responses from worker deployments could include an internal `_INT_STREAM_POS` key. ([\#15309](https://github.com/matrix-org/synapse/issues/15309)) - Fix a long-standing bug that Synpase only used the [legacy appservice routes](https://spec.matrix.org/v1.6/application-service-api/#legacy-routes). ([\#15317](https://github.com/matrix-org/synapse/issues/15317)) - Fix a long-standing bug preventing users from rejoining rooms after being banned and unbanned over federation. Contributed by Nico. ([\#15323](https://github.com/matrix-org/synapse/issues/15323)) - Fix bug in worker mode where on a rolling restart of workers the "typing" worker would consume 100% CPU until it got restarted. ([\#15332](https://github.com/matrix-org/synapse/issues/15332)) - Fix a long-standing bug where some to_device messages could be dropped when using workers. ([\#15349](https://github.com/matrix-org/synapse/issues/15349)) - Fix a bug introduced in Synapse 1.70.0 where the background sync from a faster join could spin for hours when one of the events involved had been marked for backoff. ([\#15351](https://github.com/matrix-org/synapse/issues/15351)) - Fix missing app variable in mail subject for password resets. Contributed by Cyberes. ([\#15352](https://github.com/matrix-org/synapse/issues/15352)) - Fix a rare bug introduced in Synapse 1.66.0 where initial syncs would fail when the user had been kicked from a faster joined room that had not finished syncing. ([\#15383](https://github.com/matrix-org/synapse/issues/15383)) Improved Documentation ---------------------- - Fix a typo in login requests ratelimit defaults. ([\#15341](https://github.com/matrix-org/synapse/issues/15341)) - Add some clarification to the doc/comments regarding TCP replication. ([\#15354](https://github.com/matrix-org/synapse/issues/15354)) - Note that Synapse 1.74 queued a rebuild of the user directory tables. ([\#15386](https://github.com/matrix-org/synapse/issues/15386)) Internal Changes ---------------- - Use `immutabledict` instead of `frozendict`. ([\#15113](https://github.com/matrix-org/synapse/issues/15113)) - Add developer documentation for the Federation Sender and add a documentation mechanism using Sphinx. ([\#15265](https://github.com/matrix-org/synapse/issues/15265), [\#15336](https://github.com/matrix-org/synapse/issues/15336)) - Make the pushers rely on the `device_id` instead of the `access_token_id` for various operations. ([\#15280](https://github.com/matrix-org/synapse/issues/15280)) - Bump sentry-sdk from 1.15.0 to 1.17.0. ([\#15285](https://github.com/matrix-org/synapse/issues/15285)) - Allow running the Twisted trunk job against other branches. ([\#15302](https://github.com/matrix-org/synapse/issues/15302)) - Remind the releaser to ask for changelog feedback in [#synapse-dev](https://matrix.to/#/#synapse-dev:matrix.org). ([\#15303](https://github.com/matrix-org/synapse/issues/15303)) - Bump dtolnay/rust-toolchain from e12eda571dc9a5ee5d58eecf4738ec291c66f295 to fc3253060d0c959bea12a59f10f8391454a0b02d. ([\#15304](https://github.com/matrix-org/synapse/issues/15304)) - Reject events with an invalid "mentions" property per [MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952). ([\#15311](https://github.com/matrix-org/synapse/issues/15311)) - As an optimisation, use `TRUNCATE` on Postgres when clearing the user directory tables. ([\#15316](https://github.com/matrix-org/synapse/issues/15316)) - Fix `.gitignore` rule for the Complement source tarball downloaded automatically by `complement.sh`. ([\#15319](https://github.com/matrix-org/synapse/issues/15319)) - Bump serde from 1.0.157 to 1.0.158. ([\#15324](https://github.com/matrix-org/synapse/issues/15324)) - Bump regex from 1.7.1 to 1.7.3. ([\#15325](https://github.com/matrix-org/synapse/issues/15325)) - Bump types-pyopenssl from 23.0.0.4 to 23.1.0.0. ([\#15326](https://github.com/matrix-org/synapse/issues/15326)) - Bump furo from 2022.12.7 to 2023.3.23. ([\#15327](https://github.com/matrix-org/synapse/issues/15327)) - Bump ruff from 0.0.252 to 0.0.259. ([\#15328](https://github.com/matrix-org/synapse/issues/15328)) - Bump cryptography from 40.0.0 to 40.0.1. ([\#15329](https://github.com/matrix-org/synapse/issues/15329)) - Bump mypy-zope from 0.9.0 to 0.9.1. ([\#15330](https://github.com/matrix-org/synapse/issues/15330)) - Speed up unit tests when using SQLite3. ([\#15334](https://github.com/matrix-org/synapse/issues/15334)) - Speed up pydantic CI job. ([\#15339](https://github.com/matrix-org/synapse/issues/15339)) - Speed up sample config CI job. ([\#15340](https://github.com/matrix-org/synapse/issues/15340)) - Fix copyright year in SSO footer template. ([\#15358](https://github.com/matrix-org/synapse/issues/15358)) - Bump peaceiris/actions-gh-pages from 3.9.2 to 3.9.3. ([\#15369](https://github.com/matrix-org/synapse/issues/15369)) - Bump serde from 1.0.158 to 1.0.159. ([\#15370](https://github.com/matrix-org/synapse/issues/15370)) - Bump serde_json from 1.0.94 to 1.0.95. ([\#15371](https://github.com/matrix-org/synapse/issues/15371)) - Speed up membership queries for users with forgotten rooms. ([\#15385](https://github.com/matrix-org/synapse/issues/15385)) Synapse 1.80.0 (2023-03-28) =========================== No significant changes since 1.80.0rc2. Synapse 1.80.0rc2 (2023-03-22) ============================== Bugfixes -------- - Fix a bug in which the [`POST /_matrix/client/v3/rooms/{roomId}/report/{eventId}`](https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3roomsroomidreporteventid) endpoint would return the wrong error if the user did not have permission to view the event. This aligns Synapse's implementation with [MSC2249](https://github.com/matrix-org/matrix-spec-proposals/pull/2249). ([\#15298](https://github.com/matrix-org/synapse/issues/15298), [\#15300](https://github.com/matrix-org/synapse/issues/15300)) - Fix a bug introduced in Synapse 1.75.0rc1 where the [SQLite port_db script](https://matrix-org.github.io/synapse/latest/postgres.html#porting-from-sqlite) would fail to open the SQLite database. ([\#15301](https://github.com/matrix-org/synapse/issues/15301)) Synapse 1.80.0rc1 (2023-03-21) ============================== Features -------- - Stabilise support for [MSC3966](https://github.com/matrix-org/matrix-spec-proposals/pull/3966): `event_property_contains` push condition. ([\#15187](https://github.com/matrix-org/synapse/issues/15187)) - Implement [MSC2659](https://github.com/matrix-org/matrix-spec-proposals/pull/2659): application service ping endpoint. Contributed by Tulir @ Beeper. ([\#15249](https://github.com/matrix-org/synapse/issues/15249)) - Allow loading `/register/available` endpoint on workers. ([\#15268](https://github.com/matrix-org/synapse/issues/15268)) - Improve performance of creating and authenticating events. ([\#15195](https://github.com/matrix-org/synapse/issues/15195)) - Add topic and name events to group of events that are batch persisted when creating a room. ([\#15229](https://github.com/matrix-org/synapse/issues/15229)) Bugfixes -------- - Fix a long-standing bug in which the user directory would assume any remote membership state events represent a profile change. ([\#14755](https://github.com/matrix-org/synapse/issues/14755), [\#14756](https://github.com/matrix-org/synapse/issues/14756)) - Implement [MSC3873](https://github.com/matrix-org/matrix-spec-proposals/pull/3873) to fix a long-standing bug where properties with dots were handled ambiguously in push rules. ([\#15190](https://github.com/matrix-org/synapse/issues/15190)) - Faster joins: Fix a bug introduced in Synapse 1.66 where spurious "Failed to find memberships ..." errors would be logged. ([\#15232](https://github.com/matrix-org/synapse/issues/15232)) - Fix a long-standing error when sending message into deleted room. ([\#15235](https://github.com/matrix-org/synapse/issues/15235)) Updates to the Docker image --------------------------- - Ensure the Dockerfile builds on platforms that don't have a `cryptography` wheel. ([\#15239](https://github.com/matrix-org/synapse/issues/15239)) - Mirror images to the GitHub Container Registry (`ghcr.io/matrix-org/synapse`). ([\#15281](https://github.com/matrix-org/synapse/issues/15281), [\#15282](https://github.com/matrix-org/synapse/issues/15282)) Improved Documentation ---------------------- - Add a missing endpoint to the workers documentation. ([\#15223](https://github.com/matrix-org/synapse/issues/15223)) Internal Changes ---------------- - Add additional functionality to declaring worker types when starting Complement in worker mode. ([\#14921](https://github.com/matrix-org/synapse/issues/14921)) - Add `Synapse-Trace-Id` to `access-control-expose-headers` header. ([\#14974](https://github.com/matrix-org/synapse/issues/14974)) - Make the `HttpTransactionCache` use the `Requester` in addition of the just the `Request` to build the transaction key. ([\#15200](https://github.com/matrix-org/synapse/issues/15200)) - Improve log lines when purging rooms. ([\#15222](https://github.com/matrix-org/synapse/issues/15222)) - Improve type hints. ([\#15230](https://github.com/matrix-org/synapse/issues/15230), [\#15231](https://github.com/matrix-org/synapse/issues/15231), [\#15238](https://github.com/matrix-org/synapse/issues/15238)) - Move various module API callback registration methods to a dedicated class. ([\#15237](https://github.com/matrix-org/synapse/issues/15237)) - Configure GitHub Actions for merge queues. ([\#15244](https://github.com/matrix-org/synapse/issues/15244)) - Add schema comments about the `destinations` and `destination_rooms` tables. ([\#15247](https://github.com/matrix-org/synapse/issues/15247)) - Skip processing of auto-join room behaviour if there are no auto-join rooms configured. ([\#15262](https://github.com/matrix-org/synapse/issues/15262)) - Remove unused store method `_set_destination_retry_timings_emulated`. ([\#15266](https://github.com/matrix-org/synapse/issues/15266)) - Reorganize URL preview code. ([\#15269](https://github.com/matrix-org/synapse/issues/15269)) - Clean-up direct TCP replication code. ([\#15272](https://github.com/matrix-org/synapse/issues/15272), [\#15274](https://github.com/matrix-org/synapse/issues/15274)) - Make `configure_workers_and_start` script used in Complement tests compatible with older versions of Python. ([\#15275](https://github.com/matrix-org/synapse/issues/15275)) - Add a `/versions` flag for [MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952). ([\#15293](https://github.com/matrix-org/synapse/issues/15293)) - Bump hiredis from 2.2.1 to 2.2.2. ([\#15252](https://github.com/matrix-org/synapse/issues/15252)) - Bump serde from 1.0.152 to 1.0.155. ([\#15253](https://github.com/matrix-org/synapse/issues/15253)) - Bump pysaml2 from 7.2.1 to 7.3.1. ([\#15254](https://github.com/matrix-org/synapse/issues/15254)) - Bump msgpack from 1.0.4 to 1.0.5. ([\#15255](https://github.com/matrix-org/synapse/issues/15255)) - Bump gitpython from 3.1.30 to 3.1.31. ([\#15256](https://github.com/matrix-org/synapse/issues/15256)) - Bump cryptography from 39.0.1 to 39.0.2. ([\#15257](https://github.com/matrix-org/synapse/issues/15257)) - Bump pydantic from 1.10.4 to 1.10.6. ([\#15286](https://github.com/matrix-org/synapse/issues/15286)) - Bump serde from 1.0.155 to 1.0.157. ([\#15287](https://github.com/matrix-org/synapse/issues/15287)) - Bump anyhow from 1.0.69 to 1.0.70. ([\#15288](https://github.com/matrix-org/synapse/issues/15288)) - Bump txredisapi from 1.4.7 to 1.4.9. ([\#15289](https://github.com/matrix-org/synapse/issues/15289)) - Bump pygithub from 1.57 to 1.58.1. ([\#15290](https://github.com/matrix-org/synapse/issues/15290)) - Bump types-requests from 2.28.11.12 to 2.28.11.15. ([\#15291](https://github.com/matrix-org/synapse/issues/15291)) Synapse 1.79.0 (2023-03-14) =========================== No significant changes since 1.79.0rc2. Synapse 1.79.0rc2 (2023-03-13) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.79.0rc1 where attempting to register a `on_remove_user_third_party_identifier` module API callback would be a no-op. ([\#15227](https://github.com/matrix-org/synapse/issues/15227)) - Fix a rare bug introduced in Synapse 1.73 where events could remain unsent to other homeservers after a faster-join to a room. ([\#15248](https://github.com/matrix-org/synapse/issues/15248)) Internal Changes ---------------- - Refactor `filter_events_for_server`. ([\#15240](https://github.com/matrix-org/synapse/issues/15240)) Synapse 1.79.0rc1 (2023-03-07) ============================== Features -------- - Add two new Third Party Rules module API callbacks: [`on_add_user_third_party_identifier`](https://matrix-org.github.io/synapse/v1.79/modules/third_party_rules_callbacks.html#on_add_user_third_party_identifier) and [`on_remove_user_third_party_identifier`](https://matrix-org.github.io/synapse/v1.79/modules/third_party_rules_callbacks.html#on_remove_user_third_party_identifier). ([\#15044](https://github.com/matrix-org/synapse/issues/15044)) - Experimental support for [MSC3967](https://github.com/matrix-org/matrix-spec-proposals/pull/3967) to not require UIA for setting up cross-signing on first use. ([\#15077](https://github.com/matrix-org/synapse/issues/15077)) - Add media information to the command line [user data export tool](https://matrix-org.github.io/synapse/v1.79/usage/administration/admin_faq.html#how-can-i-export-user-data). ([\#15107](https://github.com/matrix-org/synapse/issues/15107)) - Add an [admin API](https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html) to delete a [specific event report](https://spec.matrix.org/v1.6/client-server-api/#reporting-content). ([\#15116](https://github.com/matrix-org/synapse/issues/15116)) - Add support for knocking to workers. ([\#15133](https://github.com/matrix-org/synapse/issues/15133)) - Allow use of the `/filter` Client-Server APIs on workers. ([\#15134](https://github.com/matrix-org/synapse/issues/15134)) - Update support for [MSC2677](https://github.com/matrix-org/matrix-spec-proposals/pull/2677): remove support for server-side aggregation of reactions. ([\#15172](https://github.com/matrix-org/synapse/issues/15172)) - Stabilise support for [MSC3758](https://github.com/matrix-org/matrix-spec-proposals/pull/3758): `event_property_is` push condition. ([\#15185](https://github.com/matrix-org/synapse/issues/15185)) Bugfixes -------- - Fix a bug introduced in Synapse 1.75 that caused experimental support for deleting account data to raise an internal server error while using an account data writer worker. ([\#14869](https://github.com/matrix-org/synapse/issues/14869)) - Fix a long-standing bug where Synapse handled an unspecced field on push rules. ([\#15088](https://github.com/matrix-org/synapse/issues/15088)) - Fix a long-standing bug where a URL preview would break if the discovered oEmbed failed to download. ([\#15092](https://github.com/matrix-org/synapse/issues/15092)) - Fix a long-standing bug where an initial sync would not respond to changes to the list of ignored users if there was an initial sync cached. ([\#15163](https://github.com/matrix-org/synapse/issues/15163)) - Add the `transaction_id` in the events included in many endpoints' responses. ([\#15174](https://github.com/matrix-org/synapse/issues/15174)) - Fix a bug introduced in Synapse 1.78.0 where requests to claim dehydrated devices would fail with a `405` error. ([\#15180](https://github.com/matrix-org/synapse/issues/15180)) - Stop applying edits when bundling aggregations, per [MSC3925](https://github.com/matrix-org/matrix-spec-proposals/pull/3925). ([\#15193](https://github.com/matrix-org/synapse/issues/15193)) - Fix a long-standing bug where the user directory search was not case-insensitive for accented characters. ([\#15143](https://github.com/matrix-org/synapse/issues/15143)) Updates to the Docker image --------------------------- - Improve startup logging in the with-workers Docker image. ([\#15186](https://github.com/matrix-org/synapse/issues/15186)) Improved Documentation ---------------------- - Document how to use caches in a module. ([\#14026](https://github.com/matrix-org/synapse/issues/14026)) - Clarify which worker processes the ThirdPartyRules' [`on_new_event`](https://matrix-org.github.io/synapse/v1.78/modules/third_party_rules_callbacks.html#on_new_event) module API callback runs on. ([\#15071](https://github.com/matrix-org/synapse/issues/15071)) - Document using [Shibboleth](https://www.shibboleth.net/) as an OpenID Provider. ([\#15112](https://github.com/matrix-org/synapse/issues/15112)) - Correct reference to `federation_verify_certificates` in configuration documentation. ([\#15139](https://github.com/matrix-org/synapse/issues/15139)) - Correct small documentation errors in some `MatrixFederationHttpClient` methods. ([\#15148](https://github.com/matrix-org/synapse/issues/15148)) - Correct the description of the behavior of `registration_shared_secret_path` on startup. ([\#15168](https://github.com/matrix-org/synapse/issues/15168)) Deprecations and Removals ------------------------- - Deprecate the `on_threepid_bind` module callback, to be replaced by [`on_add_user_third_party_identifier`](https://matrix-org.github.io/synapse/v1.79/modules/third_party_rules_callbacks.html#on_add_user_third_party_identifier). See [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.79/docs/upgrade.md#upgrading-to-v1790). ([\#15044](https://github.com/matrix-org/synapse/issues/15044)) - Remove the unspecced `room_alias` field from the [`/createRoom`](https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3createroom) response. ([\#15093](https://github.com/matrix-org/synapse/issues/15093)) - Remove the unspecced `PUT` on the `/knock/{roomIdOrAlias}` endpoint. ([\#15189](https://github.com/matrix-org/synapse/issues/15189)) - Remove the undocumented and unspecced `type` parameter to the `/thumbnail` endpoint. ([\#15137](https://github.com/matrix-org/synapse/issues/15137)) - Remove unspecced and buggy `PUT` method on the unstable `/rooms//batch_send` endpoint. ([\#15199](https://github.com/matrix-org/synapse/issues/15199)) Internal Changes ---------------- - Run the integration test suites with the asyncio reactor enabled in CI. ([\#14101](https://github.com/matrix-org/synapse/issues/14101)) - Batch up storing state groups when creating a new room. ([\#14918](https://github.com/matrix-org/synapse/issues/14918)) - Update [MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952) support based on changes to the MSC. ([\#15051](https://github.com/matrix-org/synapse/issues/15051)) - Refactor writing json data in `FileExfiltrationWriter`. ([\#15095](https://github.com/matrix-org/synapse/issues/15095)) - Tighten the login ratelimit defaults. ([\#15135](https://github.com/matrix-org/synapse/issues/15135)) - Fix a typo in an experimental config setting. ([\#15138](https://github.com/matrix-org/synapse/issues/15138)) - Refactor the media modules. ([\#15146](https://github.com/matrix-org/synapse/issues/15146), [\#15175](https://github.com/matrix-org/synapse/issues/15175)) - Improve type hints. ([\#15164](https://github.com/matrix-org/synapse/issues/15164)) - Move `get_event_report` and `get_event_reports_paginate` from `RoomStore` to `RoomWorkerStore`. ([\#15165](https://github.com/matrix-org/synapse/issues/15165)) - Remove dangling reference to being a reference implementation in docstring. ([\#15167](https://github.com/matrix-org/synapse/issues/15167)) - Add an option to force a rebuild of the "editable" complement image. ([\#15184](https://github.com/matrix-org/synapse/issues/15184)) - Use nightly rustfmt in CI. ([\#15188](https://github.com/matrix-org/synapse/issues/15188)) - Add a `get_next_txn` method to `StreamIdGenerator` to match `MultiWriterIdGenerator`. ([\#15191](https://github.com/matrix-org/synapse/issues/15191)) - Combine `AbstractStreamIdTracker` and `AbstractStreamIdGenerator`. ([\#15192](https://github.com/matrix-org/synapse/issues/15192)) - Automatically fix errors with `ruff`. ([\#15194](https://github.com/matrix-org/synapse/issues/15194)) - Refactor database transaction for query users' devices to reduce database pool contention. ([\#15215](https://github.com/matrix-org/synapse/issues/15215)) - Correct `test_icu_word_boundary_punctuation` so that it passes with the ICU versions available in Alpine and macOS. ([\#15177](https://github.com/matrix-org/synapse/issues/15177))
Locked dependency updates - Bump actions/checkout from 2 to 3. ([\#15155](https://github.com/matrix-org/synapse/issues/15155)) - Bump black from 22.12.0 to 23.1.0. ([\#15103](https://github.com/matrix-org/synapse/issues/15103)) - Bump dawidd6/action-download-artifact from 2.25.0 to 2.26.0. ([\#15152](https://github.com/matrix-org/synapse/issues/15152)) - Bump docker/login-action from 1 to 2. ([\#15154](https://github.com/matrix-org/synapse/issues/15154)) - Bump matrix-org/backend-meta from 1 to 2. ([\#15156](https://github.com/matrix-org/synapse/issues/15156)) - Bump ruff from 0.0.237 to 0.0.252. ([\#15159](https://github.com/matrix-org/synapse/issues/15159)) - Bump serde_json from 1.0.93 to 1.0.94. ([\#15214](https://github.com/matrix-org/synapse/issues/15214)) - Bump types-commonmark from 0.9.2.1 to 0.9.2.2. ([\#15209](https://github.com/matrix-org/synapse/issues/15209)) - Bump types-opentracing from 2.4.10.1 to 2.4.10.3. ([\#15158](https://github.com/matrix-org/synapse/issues/15158)) - Bump types-pillow from 9.4.0.13 to 9.4.0.17. ([\#15211](https://github.com/matrix-org/synapse/issues/15211)) - Bump types-psycopg2 from 2.9.21.4 to 2.9.21.8. ([\#15210](https://github.com/matrix-org/synapse/issues/15210)) - Bump types-pyopenssl from 22.1.0.2 to 23.0.0.4. ([\#15213](https://github.com/matrix-org/synapse/issues/15213)) - Bump types-setuptools from 67.3.0.1 to 67.4.0.3. ([\#15160](https://github.com/matrix-org/synapse/issues/15160)) - Bump types-setuptools from 67.4.0.3 to 67.5.0.0. ([\#15212](https://github.com/matrix-org/synapse/issues/15212)) - Bump typing-extensions from 4.4.0 to 4.5.0. ([\#15157](https://github.com/matrix-org/synapse/issues/15157))
Synapse 1.78.0 (2023-02-28) =========================== Bugfixes -------- - Fix a bug introduced in Synapse 1.76 where 5s delays would occasionally occur in deployments using workers. ([\#15150](https://github.com/matrix-org/synapse/issues/15150)) Synapse 1.78.0rc1 (2023-02-21) ============================== Features -------- - Implement the experimental `exact_event_match` push rule condition from [MSC3758](https://github.com/matrix-org/matrix-spec-proposals/pull/3758). ([\#14964](https://github.com/matrix-org/synapse/issues/14964)) - Add account data to the command line [user data export tool](https://matrix-org.github.io/synapse/v1.78/usage/administration/admin_faq.html#how-can-i-export-user-data). ([\#14969](https://github.com/matrix-org/synapse/issues/14969)) - Implement [MSC3873](https://github.com/matrix-org/matrix-spec-proposals/pull/3873) to disambiguate push rule keys with dots in them. ([\#15004](https://github.com/matrix-org/synapse/issues/15004)) - Allow Synapse to use a specific Redis [logical database](https://redis.io/commands/select/) in worker-mode deployments. ([\#15034](https://github.com/matrix-org/synapse/issues/15034)) - Tag opentracing spans for federation requests with the name of the worker serving the request. ([\#15042](https://github.com/matrix-org/synapse/issues/15042)) - Implement the experimental `exact_event_property_contains` push rule condition from [MSC3966](https://github.com/matrix-org/matrix-spec-proposals/pull/3966). ([\#15045](https://github.com/matrix-org/synapse/issues/15045)) - Remove spurious `dont_notify` action from the defaults for the `.m.rule.reaction` pushrule. ([\#15073](https://github.com/matrix-org/synapse/issues/15073)) - Update the error code returned when user sends a duplicate annotation. ([\#15075](https://github.com/matrix-org/synapse/issues/15075)) Bugfixes -------- - Prevent clients from reporting nonexistent events. ([\#13779](https://github.com/matrix-org/synapse/issues/13779)) - Return spec-compliant JSON errors when unknown endpoints are requested. ([\#14605](https://github.com/matrix-org/synapse/issues/14605)) - Fix a long-standing bug where the room aliases returned could be corrupted. ([\#15038](https://github.com/matrix-org/synapse/issues/15038)) - Fix a bug introduced in Synapse 1.76.0 where partially-joined rooms could not be deleted using the [purge room API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api). ([\#15068](https://github.com/matrix-org/synapse/issues/15068)) - Fix a long-standing bug where federated joins would fail if the first server in the list of servers to try is not in the room. ([\#15074](https://github.com/matrix-org/synapse/issues/15074)) - Fix a bug introduced in Synapse v1.74.0 where searching with colons when using ICU for search term tokenisation would fail with an error. ([\#15079](https://github.com/matrix-org/synapse/issues/15079)) - Reduce the likelihood of a rare race condition where rejoining a restricted room over federation would fail. ([\#15080](https://github.com/matrix-org/synapse/issues/15080)) - Fix a bug introduced in Synapse 1.76 where workers would fail to start if the `health` listener was configured. ([\#15096](https://github.com/matrix-org/synapse/issues/15096)) - Fix a bug introduced in Synapse 1.75 where the [portdb script](https://matrix-org.github.io/synapse/release-v1.78/postgres.html#porting-from-sqlite) would fail to run after a room had been faster-joined. ([\#15108](https://github.com/matrix-org/synapse/issues/15108)) Improved Documentation ---------------------- - Document how to start Synapse with Poetry. Contributed by @thezaidbintariq. ([\#14892](https://github.com/matrix-org/synapse/issues/14892), [\#15022](https://github.com/matrix-org/synapse/issues/15022)) - Update delegation documentation to clarify that SRV DNS delegation does not eliminate all needs to serve files from .well-known locations. Contributed by @williamkray. ([\#14959](https://github.com/matrix-org/synapse/issues/14959)) - Fix a mistake in registration_shared_secret_path docs. ([\#15078](https://github.com/matrix-org/synapse/issues/15078)) - Refer to a more recent blog post on the [Database Maintenance Tools](https://matrix-org.github.io/synapse/latest/usage/administration/database_maintenance_tools.html) page. Contributed by @jahway603. ([\#15083](https://github.com/matrix-org/synapse/issues/15083)) Internal Changes ---------------- - Re-type hint some collections as read-only. ([\#13755](https://github.com/matrix-org/synapse/issues/13755)) - Faster joins: don't stall when another user joins during a partial-state room resync. ([\#14606](https://github.com/matrix-org/synapse/issues/14606)) - Add a class `UnpersistedEventContext` to allow for the batching up of storing state groups. ([\#14675](https://github.com/matrix-org/synapse/issues/14675)) - Add a check to ensure that locked dependencies have source distributions available. ([\#14742](https://github.com/matrix-org/synapse/issues/14742)) - Tweak comment on `_is_local_room_accessible` as part of room visibility in `/hierarchy` to clarify the condition for a room being visible. ([\#14834](https://github.com/matrix-org/synapse/issues/14834)) - Prevent `WARNING: there is already a transaction in progress` lines appearing in PostgreSQL's logs on some occasions. ([\#14840](https://github.com/matrix-org/synapse/issues/14840)) - Use `StrCollection` to avoid potential bugs with `Collection[str]`. ([\#14929](https://github.com/matrix-org/synapse/issues/14929)) - Improve performance of `/sync` in a few situations. ([\#14973](https://github.com/matrix-org/synapse/issues/14973)) - Limit concurrent event creation for a room to avoid state resolution when sending bursts of events to a local room. ([\#14977](https://github.com/matrix-org/synapse/issues/14977)) - Skip calculating unread push actions in /sync when enable_push is false. ([\#14980](https://github.com/matrix-org/synapse/issues/14980)) - Add a schema dump symlinks inside `contrib`, to make it easier for IDEs to interrogate Synapse's database schema. ([\#14982](https://github.com/matrix-org/synapse/issues/14982)) - Improve type hints. ([\#15008](https://github.com/matrix-org/synapse/issues/15008), [\#15026](https://github.com/matrix-org/synapse/issues/15026), [\#15027](https://github.com/matrix-org/synapse/issues/15027), [\#15028](https://github.com/matrix-org/synapse/issues/15028), [\#15031](https://github.com/matrix-org/synapse/issues/15031), [\#15035](https://github.com/matrix-org/synapse/issues/15035), [\#15052](https://github.com/matrix-org/synapse/issues/15052), [\#15072](https://github.com/matrix-org/synapse/issues/15072), [\#15084](https://github.com/matrix-org/synapse/issues/15084)) - Update [MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952) support based on changes to the MSC. ([\#15037](https://github.com/matrix-org/synapse/issues/15037)) - Avoid mutating a cached value in `get_user_devices_from_cache`. ([\#15040](https://github.com/matrix-org/synapse/issues/15040)) - Fix a rare exception in logs on start up. ([\#15041](https://github.com/matrix-org/synapse/issues/15041)) - Update pyo3-log to v0.8.1. ([\#15043](https://github.com/matrix-org/synapse/issues/15043)) - Avoid mutating cached values in `_generate_sync_entry_for_account_data`. ([\#15047](https://github.com/matrix-org/synapse/issues/15047)) - Refactor arguments of `try_unbind_threepid` and `_try_unbind_threepid_with_id_server` to not use dictionaries. ([\#15053](https://github.com/matrix-org/synapse/issues/15053)) - Merge debug logging from the hotfixes branch. ([\#15054](https://github.com/matrix-org/synapse/issues/15054)) - Faster joins: omit device list updates originating from partial state rooms in /sync responses without lazy loading of members enabled. ([\#15069](https://github.com/matrix-org/synapse/issues/15069)) - Fix clashing database transaction name. ([\#15070](https://github.com/matrix-org/synapse/issues/15070)) - Upper-bound frozendict dependency. This works around us being unable to test installing our wheels against Python 3.11 in CI. ([\#15114](https://github.com/matrix-org/synapse/issues/15114)) - Tweak logging for when a worker waits for its view of a replication stream to catch up. ([\#15120](https://github.com/matrix-org/synapse/issues/15120))
Locked dependency updates - Bump bleach from 5.0.1 to 6.0.0. ([\#15059](https://github.com/matrix-org/synapse/issues/15059)) - Bump cryptography from 38.0.4 to 39.0.1. ([\#15020](https://github.com/matrix-org/synapse/issues/15020)) - Bump ruff version from 0.0.230 to 0.0.237. ([\#15033](https://github.com/matrix-org/synapse/issues/15033)) - Bump dtolnay/rust-toolchain from 9cd00a88a73addc8617065438eff914dd08d0955 to 25dc93b901a87e864900a8aec6c12e9aa794c0c3. ([\#15060](https://github.com/matrix-org/synapse/issues/15060)) - Bump systemd-python from 234 to 235. ([\#15061](https://github.com/matrix-org/synapse/issues/15061)) - Bump serde_json from 1.0.92 to 1.0.93. ([\#15062](https://github.com/matrix-org/synapse/issues/15062)) - Bump types-requests from 2.28.11.8 to 2.28.11.12. ([\#15063](https://github.com/matrix-org/synapse/issues/15063)) - Bump types-pillow from 9.4.0.5 to 9.4.0.10. ([\#15064](https://github.com/matrix-org/synapse/issues/15064)) - Bump sentry-sdk from 1.13.0 to 1.15.0. ([\#15065](https://github.com/matrix-org/synapse/issues/15065)) - Bump types-jsonschema from 4.17.0.3 to 4.17.0.5. ([\#15099](https://github.com/matrix-org/synapse/issues/15099)) - Bump types-bleach from 5.0.3.1 to 6.0.0.0. ([\#15100](https://github.com/matrix-org/synapse/issues/15100)) - Bump dtolnay/rust-toolchain from 25dc93b901a87e864900a8aec6c12e9aa794c0c3 to e12eda571dc9a5ee5d58eecf4738ec291c66f295. ([\#15101](https://github.com/matrix-org/synapse/issues/15101)) - Bump dawidd6/action-download-artifact from 2.24.3 to 2.25.0. ([\#15102](https://github.com/matrix-org/synapse/issues/15102)) - Bump types-pillow from 9.4.0.10 to 9.4.0.13. ([\#15104](https://github.com/matrix-org/synapse/issues/15104)) - Bump types-setuptools from 67.1.0.0 to 67.3.0.1. ([\#15105](https://github.com/matrix-org/synapse/issues/15105))
Synapse 1.77.0 (2023-02-14) =========================== No significant changes since 1.77.0rc2. Synapse 1.77.0rc2 (2023-02-10) ============================== Bugfixes -------- - Fix bug where retried replication requests would return a failure. Introduced in v1.76.0. ([\#15024](https://github.com/matrix-org/synapse/issues/15024)) Internal Changes ---------------- - Prepare for future database schema changes. ([\#15036](https://github.com/matrix-org/synapse/issues/15036)) Synapse 1.77.0rc1 (2023-02-07) ============================== Features -------- - Experimental support for [MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952): intentional mentions. ([\#14823](https://github.com/matrix-org/synapse/issues/14823), [\#14943](https://github.com/matrix-org/synapse/issues/14943), [\#14957](https://github.com/matrix-org/synapse/issues/14957), [\#14958](https://github.com/matrix-org/synapse/issues/14958)) - Experimental support to suppress notifications from message edits ([MSC3958](https://github.com/matrix-org/matrix-spec-proposals/pull/3958)). ([\#14960](https://github.com/matrix-org/synapse/issues/14960), [\#15016](https://github.com/matrix-org/synapse/issues/15016)) - Add profile information, devices and connections to the command line [user data export tool](https://matrix-org.github.io/synapse/v1.77/usage/administration/admin_faq.html#how-can-i-export-user-data). ([\#14894](https://github.com/matrix-org/synapse/issues/14894)) - Improve performance when joining or sending an event in large rooms. ([\#14962](https://github.com/matrix-org/synapse/issues/14962)) - Improve performance of joining and leaving large rooms with many local users. ([\#14971](https://github.com/matrix-org/synapse/issues/14971)) Bugfixes -------- - Fix a bug introduced in Synapse 1.53.0 where `next_batch` tokens from `/sync` could not be used with the `/relations` endpoint. ([\#14866](https://github.com/matrix-org/synapse/issues/14866)) - Fix a bug introduced in Synapse 1.35.0 where the module API's `send_local_online_presence_to` would fail to send presence updates over federation. ([\#14880](https://github.com/matrix-org/synapse/issues/14880)) - Fix a bug introduced in Synapse 1.70.0 where the background updates to add non-thread unique indexes on receipts could fail when upgrading from 1.67.0 or earlier. ([\#14915](https://github.com/matrix-org/synapse/issues/14915)) - Fix a regression introduced in Synapse 1.69.0 which can result in database corruption when database migrations are interrupted on sqlite. ([\#14926](https://github.com/matrix-org/synapse/issues/14926)) - Fix a bug introduced in Synapse 1.68.0 where we were unable to service remote joins in rooms with `@room` notification levels set to `null` in their (malformed) power levels. ([\#14942](https://github.com/matrix-org/synapse/issues/14942)) - Fix a bug introduced in Synapse 1.64.0 where boolean power levels were erroneously permitted in [v10 rooms](https://spec.matrix.org/v1.5/rooms/v10/). ([\#14944](https://github.com/matrix-org/synapse/issues/14944)) - Fix a long-standing bug where sending messages on servers with presence enabled would spam "Re-starting finished log context" log lines. ([\#14947](https://github.com/matrix-org/synapse/issues/14947)) - Fix a bug introduced in Synapse 1.68.0 where logging from the Rust module was not properly logged. ([\#14976](https://github.com/matrix-org/synapse/issues/14976)) - Fix various long-standing bugs in Synapse's config, event and request handling where booleans were unintentionally accepted where an integer was expected. ([\#14945](https://github.com/matrix-org/synapse/issues/14945)) Internal Changes ---------------- - Add missing type hints. ([\#14879](https://github.com/matrix-org/synapse/issues/14879), [\#14886](https://github.com/matrix-org/synapse/issues/14886), [\#14887](https://github.com/matrix-org/synapse/issues/14887), [\#14904](https://github.com/matrix-org/synapse/issues/14904), [\#14927](https://github.com/matrix-org/synapse/issues/14927), [\#14956](https://github.com/matrix-org/synapse/issues/14956), [\#14983](https://github.com/matrix-org/synapse/issues/14983), [\#14984](https://github.com/matrix-org/synapse/issues/14984), [\#14985](https://github.com/matrix-org/synapse/issues/14985), [\#14987](https://github.com/matrix-org/synapse/issues/14987), [\#14988](https://github.com/matrix-org/synapse/issues/14988), [\#14990](https://github.com/matrix-org/synapse/issues/14990), [\#14991](https://github.com/matrix-org/synapse/issues/14991), [\#14992](https://github.com/matrix-org/synapse/issues/14992), [\#15007](https://github.com/matrix-org/synapse/issues/15007)) - Use `StrCollection` to avoid potential bugs with `Collection[str]`. ([\#14922](https://github.com/matrix-org/synapse/issues/14922)) - Allow running the complement tests suites with the asyncio reactor enabled. ([\#14858](https://github.com/matrix-org/synapse/issues/14858)) - Improve performance of `/sync` in a few situations. ([\#14908](https://github.com/matrix-org/synapse/issues/14908), [\#14970](https://github.com/matrix-org/synapse/issues/14970)) - Document how to handle Dependabot pull requests. ([\#14916](https://github.com/matrix-org/synapse/issues/14916)) - Fix typo in release script. ([\#14920](https://github.com/matrix-org/synapse/issues/14920)) - Update build system requirements to allow building with poetry-core 1.5.0. ([\#14949](https://github.com/matrix-org/synapse/issues/14949), [\#15019](https://github.com/matrix-org/synapse/issues/15019)) - Add an [lnav](https://lnav.org) config file for Synapse logs to `/contrib/lnav`. ([\#14953](https://github.com/matrix-org/synapse/issues/14953)) - Faster joins: Refactor internal handling of servers in room to never store an empty list. ([\#14954](https://github.com/matrix-org/synapse/issues/14954)) - Faster joins: tag `v2/send_join/` requests to indicate if they served a partial join response. ([\#14950](https://github.com/matrix-org/synapse/issues/14950)) - Allow running `cargo` without the `extension-module` option. ([\#14965](https://github.com/matrix-org/synapse/issues/14965)) - Preparatory work for adding a denormalised event stream ordering column in the future. Contributed by Nick @ Beeper (@fizzadar). ([\#14979](https://github.com/matrix-org/synapse/issues/14979), [9cd7610](https://github.com/matrix-org/synapse/commit/9cd7610f86ab5051c9365dd38d1eec405a5f8ca6), [f10caa7](https://github.com/matrix-org/synapse/commit/f10caa73eee0caa91cf373966104d1ededae2aee); see [\#15014](https://github.com/matrix-org/synapse/issues/15014)) - Add tests for `_flatten_dict`. ([\#14981](https://github.com/matrix-org/synapse/issues/14981), [\#15002](https://github.com/matrix-org/synapse/issues/15002))
Locked dependency updates - Bump dtolnay/rust-toolchain from e645b0cf01249a964ec099494d38d2da0f0b349f to 9cd00a88a73addc8617065438eff914dd08d0955. ([\#14968](https://github.com/matrix-org/synapse/issues/14968)) - Bump docker/build-push-action from 3 to 4. ([\#14952](https://github.com/matrix-org/synapse/issues/14952)) - Bump ijson from 3.1.4 to 3.2.0.post0. ([\#14935](https://github.com/matrix-org/synapse/issues/14935)) - Bump types-pyyaml from 6.0.12.2 to 6.0.12.3. ([\#14936](https://github.com/matrix-org/synapse/issues/14936)) - Bump types-jsonschema from 4.17.0.2 to 4.17.0.3. ([\#14937](https://github.com/matrix-org/synapse/issues/14937)) - Bump types-pillow from 9.4.0.3 to 9.4.0.5. ([\#14938](https://github.com/matrix-org/synapse/issues/14938)) - Bump hiredis from 2.0.0 to 2.1.1. ([\#14939](https://github.com/matrix-org/synapse/issues/14939)) - Bump hiredis from 2.1.1 to 2.2.1. ([\#14993](https://github.com/matrix-org/synapse/issues/14993)) - Bump types-setuptools from 65.6.0.3 to 67.1.0.0. ([\#14994](https://github.com/matrix-org/synapse/issues/14994)) - Bump prometheus-client from 0.15.0 to 0.16.0. ([\#14995](https://github.com/matrix-org/synapse/issues/14995)) - Bump anyhow from 1.0.68 to 1.0.69. ([\#14996](https://github.com/matrix-org/synapse/issues/14996)) - Bump serde_json from 1.0.91 to 1.0.92. ([\#14997](https://github.com/matrix-org/synapse/issues/14997)) - Bump isort from 5.11.4 to 5.11.5. ([\#14998](https://github.com/matrix-org/synapse/issues/14998)) - Bump phonenumbers from 8.13.4 to 8.13.5. ([\#14999](https://github.com/matrix-org/synapse/issues/14999))
Synapse 1.76.0 (2023-01-31) =========================== The 1.76 release is the first to enable faster joins ([MSC3706](https://github.com/matrix-org/matrix-spec-proposals/pull/3706) and [MSC3902](https://github.com/matrix-org/matrix-spec-proposals/pull/3902)) by default. Admins can opt-out: see [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.76/docs/upgrade.md#faster-joins-are-enabled-by-default) for more details. The upgrade from 1.75 to 1.76 changes the account data replication streams in a backwards-incompatible manner. Server operators running a multi-worker deployment should consult [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.76/docs/upgrade.md#changes-to-the-account-data-replication-streams). Those who are `poetry install`ing from source using our lockfile should ensure their poetry version is 1.3.2 or higher; [see upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.76/docs/upgrade.md#minimum-version-of-poetry-is-now-132). Notes on faster joins --------------------- The faster joins project sees the most benefit when joining a room with a large number of members (joined or historical). We expect it to be particularly useful for joining large public rooms like the [Matrix HQ](https://matrix.to/#/#matrix:matrix.org) or [Synapse Admins](https://matrix.to/#/#synapse:matrix.org) rooms. After a faster join, Synapse considers that room "partially joined". In this state, you should be able to - read incoming messages; - see incoming state changes, e.g. room topic changes; and - send messages, if the room is unencrypted. Synapse has to spend more effort to complete the join in the background. Once this finishes, you will be able to - send messages, if the room is in encrypted; - retrieve room history from before your join, if permitted by the room settings; and - access the full list of room members. Improved Documentation ---------------------- - Describe the ideas and the internal machinery behind faster joins. ([\#14677](https://github.com/matrix-org/synapse/issues/14677)) Synapse 1.76.0rc2 (2023-01-27) ============================== Bugfixes -------- - Faster joins: Fix a bug introduced in Synapse 1.69 where device list EDUs could fail to be handled after a restart when a faster join sync is in progress. ([\#14914](https://github.com/matrix-org/synapse/issues/14914)) Internal Changes ---------------- - Faster joins: Improve performance of looking up partial-state status of rooms. ([\#14917](https://github.com/matrix-org/synapse/issues/14917)) Synapse 1.76.0rc1 (2023-01-25) ============================== Features -------- - Update the default room version to [v10](https://spec.matrix.org/v1.5/rooms/v10/) ([MSC 3904](https://github.com/matrix-org/matrix-spec-proposals/pull/3904)). Contributed by @FSG-Cat. ([\#14111](https://github.com/matrix-org/synapse/issues/14111)) - Add a `set_displayname()` method to the module API for setting a user's display name. ([\#14629](https://github.com/matrix-org/synapse/issues/14629)) - Add a dedicated listener configuration for `health` endpoint. ([\#14747](https://github.com/matrix-org/synapse/issues/14747)) - Implement support for [MSC3890](https://github.com/matrix-org/matrix-spec-proposals/pull/3890): Remotely silence local notifications. ([\#14775](https://github.com/matrix-org/synapse/issues/14775)) - Implement experimental support for [MSC3930](https://github.com/matrix-org/matrix-spec-proposals/pull/3930): Push rules for ([MSC3381](https://github.com/matrix-org/matrix-spec-proposals/pull/3381)) Polls. ([\#14787](https://github.com/matrix-org/synapse/issues/14787)) - Per [MSC3925](https://github.com/matrix-org/matrix-spec-proposals/pull/3925), bundle the whole of the replacement with any edited events, and optionally inhibit server-side replacement. ([\#14811](https://github.com/matrix-org/synapse/issues/14811)) - Faster joins: always serve a partial join response to servers that request it with the stable query param. ([\#14839](https://github.com/matrix-org/synapse/issues/14839)) - Faster joins: allow non-lazy-loading ("eager") syncs to complete after a partial join by omitting partial state rooms until they become fully stated. ([\#14870](https://github.com/matrix-org/synapse/issues/14870)) - Faster joins: request partial joins by default. Admins can opt-out of this for the time being---see the upgrade notes. ([\#14905](https://github.com/matrix-org/synapse/issues/14905)) Bugfixes -------- - Add index to improve performance of the `/timestamp_to_event` endpoint used for jumping to a specific date in the timeline of a room. ([\#14799](https://github.com/matrix-org/synapse/issues/14799)) - Fix a long-standing bug where Synapse would exhaust the stack when processing many federation requests where the remote homeserver has disconencted early. ([\#14812](https://github.com/matrix-org/synapse/issues/14812), [\#14842](https://github.com/matrix-org/synapse/issues/14842)) - Fix rare races when using workers. ([\#14820](https://github.com/matrix-org/synapse/issues/14820)) - Fix a bug introduced in Synapse 1.64.0 when using room version 10 with frozen events enabled. ([\#14864](https://github.com/matrix-org/synapse/issues/14864)) - Fix a long-standing bug where the `populate_room_stats` background job could fail on broken rooms. ([\#14873](https://github.com/matrix-org/synapse/issues/14873)) - Faster joins: Fix a bug in worker deployments where the room stats and user directory would not get updated when finishing a fast join until another event is sent or received. ([\#14874](https://github.com/matrix-org/synapse/issues/14874)) - Faster joins: Fix incompatibility with joins into restricted rooms where no local users have the ability to invite. ([\#14882](https://github.com/matrix-org/synapse/issues/14882)) - Fix a regression introduced in Synapse 1.69.0 which can result in database corruption when database migrations are interrupted on sqlite. ([\#14910](https://github.com/matrix-org/synapse/issues/14910)) Updates to the Docker image --------------------------- - Bump default Python version in the Dockerfile from 3.9 to 3.11. ([\#14875](https://github.com/matrix-org/synapse/issues/14875)) Improved Documentation ---------------------- - Include `x_forwarded` entry in the HTTP listener example configs and remove the remaining `worker_main_http_uri` entries. ([\#14667](https://github.com/matrix-org/synapse/issues/14667)) - Remove duplicate commands from the Code Style documentation page; point to the Contributing Guide instead. ([\#14773](https://github.com/matrix-org/synapse/issues/14773)) - Add missing documentation for `tag` to `listeners` section. ([\#14803](https://github.com/matrix-org/synapse/issues/14803)) - Updated documentation in configuration manual for `user_directory.search_all_users`. ([\#14818](https://github.com/matrix-org/synapse/issues/14818)) - Add `worker_manhole` to configuration manual. ([\#14824](https://github.com/matrix-org/synapse/issues/14824)) - Fix the example config missing the `id` field in [application service documentation](https://matrix-org.github.io/synapse/latest/application_services.html). ([\#14845](https://github.com/matrix-org/synapse/issues/14845)) - Minor corrections to the logging configuration documentation. ([\#14868](https://github.com/matrix-org/synapse/issues/14868)) - Document the export user data command. Contributed by @thezaidbintariq. ([\#14883](https://github.com/matrix-org/synapse/issues/14883)) Deprecations and Removals ------------------------- - Poetry 1.3.2 or higher is now required when `poetry install`ing from source. ([\#14860](https://github.com/matrix-org/synapse/issues/14860)) Internal Changes ---------------- - Faster remote room joins (worker mode): do not populate external hosts-in-room cache when sending events as this requires blocking for full state. ([\#14749](https://github.com/matrix-org/synapse/issues/14749)) - Enable Complement tests for Faster Remote Room Joins against worker-mode Synapse. ([\#14752](https://github.com/matrix-org/synapse/issues/14752)) - Add some clarifying comments and refactor a portion of the `Keyring` class for readability. ([\#14804](https://github.com/matrix-org/synapse/issues/14804)) - Add local poetry config files (`poetry.toml`) to `.gitignore`. ([\#14807](https://github.com/matrix-org/synapse/issues/14807)) - Add missing type hints. ([\#14816](https://github.com/matrix-org/synapse/issues/14816), [\#14885](https://github.com/matrix-org/synapse/issues/14885), [\#14889](https://github.com/matrix-org/synapse/issues/14889)) - Refactor push tests. ([\#14819](https://github.com/matrix-org/synapse/issues/14819)) - Re-enable some linting that was disabled when we switched to ruff. ([\#14821](https://github.com/matrix-org/synapse/issues/14821)) - Add `cargo fmt` and `cargo clippy` to the lint script. ([\#14822](https://github.com/matrix-org/synapse/issues/14822)) - Drop unused table `presence`. ([\#14825](https://github.com/matrix-org/synapse/issues/14825)) - Merge the two account data and the two device list replication streams. ([\#14826](https://github.com/matrix-org/synapse/issues/14826), [\#14833](https://github.com/matrix-org/synapse/issues/14833)) - Faster joins: use stable identifiers from [MSC3706](https://github.com/matrix-org/matrix-spec-proposals/pull/3706). ([\#14832](https://github.com/matrix-org/synapse/issues/14832), [\#14841](https://github.com/matrix-org/synapse/issues/14841)) - Add a parameter to control whether the federation client performs a partial state join. ([\#14843](https://github.com/matrix-org/synapse/issues/14843)) - Add check to avoid starting duplicate partial state syncs. ([\#14844](https://github.com/matrix-org/synapse/issues/14844)) - Add an early return when handling no-op presence updates. ([\#14855](https://github.com/matrix-org/synapse/issues/14855)) - Fix `wait_for_stream_position` to correctly wait for the right instance to advance its token. ([\#14856](https://github.com/matrix-org/synapse/issues/14856), [\#14872](https://github.com/matrix-org/synapse/issues/14872)) - Always notify replication when a stream advances automatically. ([\#14877](https://github.com/matrix-org/synapse/issues/14877)) - Reduce max time we wait for stream positions. ([\#14881](https://github.com/matrix-org/synapse/issues/14881)) - Faster joins: allow the resync process more time to fetch `/state` ids. ([\#14912](https://github.com/matrix-org/synapse/issues/14912)) - Bump regex from 1.7.0 to 1.7.1. ([\#14848](https://github.com/matrix-org/synapse/issues/14848)) - Bump peaceiris/actions-gh-pages from 3.9.1 to 3.9.2. ([\#14861](https://github.com/matrix-org/synapse/issues/14861)) - Bump ruff from 0.0.215 to 0.0.224. ([\#14862](https://github.com/matrix-org/synapse/issues/14862)) - Bump types-pillow from 9.4.0.0 to 9.4.0.3. ([\#14863](https://github.com/matrix-org/synapse/issues/14863)) - Bump types-opentracing from 2.4.10 to 2.4.10.1. ([\#14896](https://github.com/matrix-org/synapse/issues/14896)) - Bump ruff from 0.0.224 to 0.0.230. ([\#14897](https://github.com/matrix-org/synapse/issues/14897)) - Bump types-requests from 2.28.11.7 to 2.28.11.8. ([\#14899](https://github.com/matrix-org/synapse/issues/14899)) - Bump types-psycopg2 from 2.9.21.2 to 2.9.21.4. ([\#14900](https://github.com/matrix-org/synapse/issues/14900)) - Bump types-commonmark from 0.9.2 to 0.9.2.1. ([\#14901](https://github.com/matrix-org/synapse/issues/14901)) Synapse 1.75.0 (2023-01-17) =========================== No significant changes since 1.75.0rc2. Synapse 1.75.0rc2 (2023-01-12) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.75.0rc1 where device lists could be miscalculated with some sync filters. ([\#14810](https://github.com/matrix-org/synapse/issues/14810)) - Fix race where calling `/members` or `/state` with an `at` parameter could fail for newly created rooms, when using multiple workers. ([\#14817](https://github.com/matrix-org/synapse/issues/14817)) Synapse 1.75.0rc1 (2023-01-10) ============================== Features -------- - Add a `cached` function to `synapse.module_api` that returns a decorator to cache return values of functions. ([\#14663](https://github.com/matrix-org/synapse/issues/14663)) - Add experimental support for [MSC3391](https://github.com/matrix-org/matrix-spec-proposals/pull/3391) (removing account data). ([\#14714](https://github.com/matrix-org/synapse/issues/14714)) - Support [RFC7636](https://datatracker.ietf.org/doc/html/rfc7636) Proof Key for Code Exchange for OAuth single sign-on. ([\#14750](https://github.com/matrix-org/synapse/issues/14750)) - Support non-OpenID compliant userinfo claims for subject and picture. ([\#14753](https://github.com/matrix-org/synapse/issues/14753)) - Improve performance of `/sync` when filtering all rooms, message types, or senders. ([\#14786](https://github.com/matrix-org/synapse/issues/14786)) - Improve performance of the `/hierarchy` endpoint. ([\#14263](https://github.com/matrix-org/synapse/issues/14263)) Bugfixes -------- - Fix the *MAU Limits* section of the Grafana dashboard relying on a specific `job` name for the workers of a Synapse deployment. ([\#14644](https://github.com/matrix-org/synapse/issues/14644)) - Fix a bug introduced in Synapse 1.70.0 which could cause spurious `UNIQUE constraint failed` errors in the `rotate_notifs` background job. ([\#14669](https://github.com/matrix-org/synapse/issues/14669)) - Ensure stream IDs are always updated after caches get invalidated with workers. Contributed by Nick @ Beeper (@fizzadar). ([\#14723](https://github.com/matrix-org/synapse/issues/14723)) - Remove the unspecced `device` field from `/pushrules` responses. ([\#14727](https://github.com/matrix-org/synapse/issues/14727)) - Fix a bug introduced in Synapse 1.73.0 where the `picture_claim` configured under `oidc_providers` was unused (the default value of `"picture"` was used instead). ([\#14751](https://github.com/matrix-org/synapse/issues/14751)) - Unescape HTML entities in URL preview titles making use of oEmbed responses. ([\#14781](https://github.com/matrix-org/synapse/issues/14781)) - Disable sending confirmation email when 3pid is disabled. ([\#14725](https://github.com/matrix-org/synapse/issues/14725)) Improved Documentation ---------------------- - Declare support for Python 3.11. ([\#14673](https://github.com/matrix-org/synapse/issues/14673)) - Fix `target_memory_usage` being used in the description for the actual `cache_autotune` sub-option `target_cache_memory_usage`. ([\#14674](https://github.com/matrix-org/synapse/issues/14674)) - Move `email` to Server section in config file documentation. ([\#14730](https://github.com/matrix-org/synapse/issues/14730)) - Fix broken links in the Synapse documentation. ([\#14744](https://github.com/matrix-org/synapse/issues/14744)) - Add missing worker settings to shared configuration documentation. ([\#14748](https://github.com/matrix-org/synapse/issues/14748)) - Document using Twitter as a OAuth 2.0 authentication provider. ([\#14778](https://github.com/matrix-org/synapse/issues/14778)) - Fix Synapse 1.74 upgrade notes to correctly explain how to install pyICU when installing Synapse from PyPI. ([\#14797](https://github.com/matrix-org/synapse/issues/14797)) - Update link to towncrier in contribution guide. ([\#14801](https://github.com/matrix-org/synapse/issues/14801)) - Use `htmltest` to check links in the Synapse documentation. ([\#14743](https://github.com/matrix-org/synapse/issues/14743)) Internal Changes ---------------- - Faster remote room joins: stream the un-partial-stating of events over replication. ([\#14545](https://github.com/matrix-org/synapse/issues/14545), [\#14546](https://github.com/matrix-org/synapse/issues/14546)) - Use [ruff](https://github.com/charliermarsh/ruff/) instead of flake8. ([\#14633](https://github.com/matrix-org/synapse/issues/14633), [\#14741](https://github.com/matrix-org/synapse/issues/14741)) - Change `handle_new_client_event` signature so that a 429 does not reach clients on `PartialStateConflictError`, and internally retry when needed instead. ([\#14665](https://github.com/matrix-org/synapse/issues/14665)) - Remove dependency on jQuery on reCAPTCHA page. ([\#14672](https://github.com/matrix-org/synapse/issues/14672)) - Faster joins: make `compute_state_after_events` consistent with other state-fetching functions that take a `StateFilter`. ([\#14676](https://github.com/matrix-org/synapse/issues/14676)) - Add missing type hints. ([\#14680](https://github.com/matrix-org/synapse/issues/14680), [\#14681](https://github.com/matrix-org/synapse/issues/14681), [\#14687](https://github.com/matrix-org/synapse/issues/14687)) - Improve type annotations for the helper methods on a `CachedFunction`. ([\#14685](https://github.com/matrix-org/synapse/issues/14685)) - Check that the SQLite database file exists before porting to PostgreSQL. ([\#14692](https://github.com/matrix-org/synapse/issues/14692)) - Add `.direnv/` directory to .gitignore to prevent local state generated by the [direnv](https://direnv.net/) development tool from being committed. ([\#14707](https://github.com/matrix-org/synapse/issues/14707)) - Batch up replication requests to request the resyncing of remote users's devices. ([\#14716](https://github.com/matrix-org/synapse/issues/14716)) - If debug logging is enabled, log the `msgid`s of any to-device messages that are returned over `/sync`. ([\#14724](https://github.com/matrix-org/synapse/issues/14724)) - Change GHA CI job to follow best practices. ([\#14772](https://github.com/matrix-org/synapse/issues/14772)) - Switch to our fork of `dh-virtualenv` to work around an upstream Python 3.11 incompatibility. ([\#14774](https://github.com/matrix-org/synapse/issues/14774)) - Skip testing built wheels for PyPy 3.7 on Linux x86_64 as we lack new required dependencies in the build environment. ([\#14802](https://github.com/matrix-org/synapse/issues/14802)) ### Dependabot updates
- Bump JasonEtco/create-an-issue from 2.8.1 to 2.8.2. ([\#14693](https://github.com/matrix-org/synapse/issues/14693)) - Bump anyhow from 1.0.66 to 1.0.68. ([\#14694](https://github.com/matrix-org/synapse/issues/14694)) - Bump blake2 from 0.10.5 to 0.10.6. ([\#14695](https://github.com/matrix-org/synapse/issues/14695)) - Bump serde_json from 1.0.89 to 1.0.91. ([\#14696](https://github.com/matrix-org/synapse/issues/14696)) - Bump serde from 1.0.150 to 1.0.151. ([\#14697](https://github.com/matrix-org/synapse/issues/14697)) - Bump lxml from 4.9.1 to 4.9.2. ([\#14698](https://github.com/matrix-org/synapse/issues/14698)) - Bump types-jsonschema from 4.17.0.1 to 4.17.0.2. ([\#14700](https://github.com/matrix-org/synapse/issues/14700)) - Bump sentry-sdk from 1.11.1 to 1.12.0. ([\#14701](https://github.com/matrix-org/synapse/issues/14701)) - Bump types-setuptools from 65.6.0.1 to 65.6.0.2. ([\#14702](https://github.com/matrix-org/synapse/issues/14702)) - Bump minimum PyYAML to 3.13. ([\#14720](https://github.com/matrix-org/synapse/issues/14720)) - Bump JasonEtco/create-an-issue from 2.8.2 to 2.9.1. ([\#14731](https://github.com/matrix-org/synapse/issues/14731)) - Bump towncrier from 22.8.0 to 22.12.0. ([\#14732](https://github.com/matrix-org/synapse/issues/14732)) - Bump isort from 5.10.1 to 5.11.4. ([\#14733](https://github.com/matrix-org/synapse/issues/14733)) - Bump attrs from 22.1.0 to 22.2.0. ([\#14734](https://github.com/matrix-org/synapse/issues/14734)) - Bump black from 22.10.0 to 22.12.0. ([\#14735](https://github.com/matrix-org/synapse/issues/14735)) - Bump sentry-sdk from 1.12.0 to 1.12.1. ([\#14736](https://github.com/matrix-org/synapse/issues/14736)) - Bump setuptools from 65.3.0 to 65.5.1. ([\#14738](https://github.com/matrix-org/synapse/issues/14738)) - Bump serde from 1.0.151 to 1.0.152. ([\#14758](https://github.com/matrix-org/synapse/issues/14758)) - Bump ruff from 0.0.189 to 0.0.206. ([\#14759](https://github.com/matrix-org/synapse/issues/14759)) - Bump pydantic from 1.10.2 to 1.10.4. ([\#14760](https://github.com/matrix-org/synapse/issues/14760)) - Bump gitpython from 3.1.29 to 3.1.30. ([\#14761](https://github.com/matrix-org/synapse/issues/14761)) - Bump pillow from 9.3.0 to 9.4.0. ([\#14762](https://github.com/matrix-org/synapse/issues/14762)) - Bump types-requests from 2.28.11.5 to 2.28.11.7. ([\#14763](https://github.com/matrix-org/synapse/issues/14763)) - Bump dawidd6/action-download-artifact from 2.24.2 to 2.24.3. ([\#14779](https://github.com/matrix-org/synapse/issues/14779)) - Bump peaceiris/actions-gh-pages from 3.9.0 to 3.9.1. ([\#14791](https://github.com/matrix-org/synapse/issues/14791)) - Bump types-pillow from 9.3.0.4 to 9.4.0.0. ([\#14792](https://github.com/matrix-org/synapse/issues/14792)) - Bump pyopenssl from 22.1.0 to 23.0.0. ([\#14793](https://github.com/matrix-org/synapse/issues/14793)) - Bump types-setuptools from 65.6.0.2 to 65.6.0.3. ([\#14794](https://github.com/matrix-org/synapse/issues/14794)) - Bump importlib-metadata from 4.2.0 to 6.0.0. ([\#14795](https://github.com/matrix-org/synapse/issues/14795)) - Bump ruff from 0.0.206 to 0.0.215. ([\#14796](https://github.com/matrix-org/synapse/issues/14796))
**Changelogs for older versions can be found [here](docs/changelogs/).** synapse-1.100.0/CONTRIBUTING.md000066400000000000000000000002531455622526000155730ustar00rootroot00000000000000# Welcome to Synapse Please see the [contributors' guide](https://element-hq.github.io/synapse/latest/development/contributing_guide.html) in our rendered documentation. synapse-1.100.0/Cargo.lock000066400000000000000000000306541455622526000152570ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "aho-corasick" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] [[package]] name = "anyhow" version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "arc-swap" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "983cd8b9d4b02a6dc6ffa557262eb5858a27a0038ffffe21a0f133eaa819a164" [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake2" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ "digest", ] [[package]] name = "block-buffer" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" dependencies = [ "generic-array", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "crypto-common" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", "typenum", ] [[package]] name = "digest" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ "block-buffer", "crypto-common", "subtle", ] [[package]] name = "generic-array" version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", ] [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "itoa" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" version = "0.2.135" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" [[package]] name = "lock_api" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg", "scopeguard", ] [[package]] name = "log" version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "parking_lot" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", "parking_lot_core", ] [[package]] name = "parking_lot_core" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", "windows-sys", ] [[package]] name = "proc-macro2" version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0" dependencies = [ "anyhow", "cfg-if", "indoc", "libc", "memoffset", "parking_lot", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-log" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c10808ee7250403bedb24bc30c32493e93875fef7ba3e4292226fe924f398bd" dependencies = [ "arc-swap", "log", "pyo3", ] [[package]] name = "pyo3-macros" version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f" dependencies = [ "heck", "proc-macro2", "quote", "syn", ] [[package]] name = "pythonize" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffd1c3ef39c725d63db5f9bc455461bafd80540cb7824c61afb823501921a850" dependencies = [ "pyo3", "serde", ] [[package]] name = "quote" version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] [[package]] name = "redox_syscall" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] [[package]] name = "regex" version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", "regex-automata", "regex-syntax", ] [[package]] name = "regex-automata" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "ryu" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "serde" version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "serde_json" version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "itoa", "ryu", "serde", ] [[package]] name = "smallvec" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "subtle" version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "synapse" version = "0.1.0" dependencies = [ "anyhow", "blake2", "hex", "lazy_static", "log", "pyo3", "pyo3-log", "pythonize", "regex", "serde", "serde_json", ] [[package]] name = "target-lexicon" version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1" [[package]] name = "typenum" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "unicode-ident" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "windows-sys" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ "windows_aarch64_msvc", "windows_i686_gnu", "windows_i686_msvc", "windows_x86_64_gnu", "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] name = "windows_i686_gnu" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] name = "windows_x86_64_gnu" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" synapse-1.100.0/Cargo.toml000066400000000000000000000002711455622526000152720ustar00rootroot00000000000000# We make the whole Synapse folder a workspace so that we can run `cargo` # commands from the root (rather than having to cd into rust/). [workspace] members = ["rust"] resolver = "2" synapse-1.100.0/INSTALL.md000066400000000000000000000004331455622526000147720ustar00rootroot00000000000000# Installation Instructions This document has moved to the [Synapse documentation website](https://element-hq.github.io/synapse/latest/setup/installation.html). Please update your links. The markdown source is available in [docs/setup/installation.md](docs/setup/installation.md). synapse-1.100.0/LICENSE000066400000000000000000001033331455622526000143520ustar00rootroot00000000000000 GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . synapse-1.100.0/README.rst000066400000000000000000000261601455622526000150360ustar00rootroot00000000000000========================================================================= Synapse |support| |development| |documentation| |license| |pypi| |python| ========================================================================= Synapse is an open-source `Matrix `_ homeserver written and maintained by the Matrix.org Foundation. We began rapid development in 2014, reaching v1.0.0 in 2019. Development on Synapse and the Matrix protocol itself continues in earnest today. Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP. Matrix.org has more to say about the `goals of the Matrix project `_, and the `formal specification `_ describes the technical details. .. contents:: Installing and configuration ============================ The Synapse documentation describes `how to install Synapse `_. We recommend using `Docker images `_ or `Debian packages from Matrix.org `_. .. _federation: Synapse has a variety of `config options `_ which can be used to customise its behaviour after installation. There are additional details on how to `configure Synapse for federation here `_. .. _reverse-proxy: Using a reverse proxy with Synapse ---------------------------------- It is recommended to put a reverse proxy such as `nginx `_, `Apache `_, `Caddy `_, `HAProxy `_ or `relayd `_ in front of Synapse. One advantage of doing so is that it means that you can expose the default https port (443) to Matrix clients without needing to run Synapse with root privileges. For information on configuring one, see `the reverse proxy docs `_. Upgrading an existing Synapse ----------------------------- The instructions for upgrading Synapse are in `the upgrade notes`_. Please check these instructions as upgrading may require extra steps for some versions of Synapse. .. _the upgrade notes: https://element-hq.github.io/synapse/develop/upgrade.html Platform dependencies --------------------- Synapse uses a number of platform dependencies such as Python and PostgreSQL, and aims to follow supported upstream versions. See the `deprecation policy `_ for more details. Security note ------------- Matrix serves raw, user-supplied data in some APIs -- specifically the `content repository endpoints`_. .. _content repository endpoints: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid Whilst we make a reasonable effort to mitigate against XSS attacks (for instance, by using `CSP`_), a Matrix homeserver should not be hosted on a domain hosting other web applications. This especially applies to sharing the domain with Matrix web clients and other sensitive applications like webmail. See https://developer.github.com/changes/2014-04-25-user-content-security for more information. .. _CSP: https://github.com/matrix-org/synapse/pull/1021 Ideally, the homeserver should not simply be on a different subdomain, but on a completely different `registered domain`_ (also known as top-level site or eTLD+1). This is because `some attacks`_ are still possible as long as the two applications share the same registered domain. .. _registered domain: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3 .. _some attacks: https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie To illustrate this with an example, if your Element Web or other sensitive web application is hosted on ``A.example1.com``, you should ideally host Synapse on ``example2.com``. Some amount of protection is offered by hosting on ``B.example1.com`` instead, so this is also acceptable in some scenarios. However, you should *not* host your Synapse on ``A.example1.com``. Note that all of the above refers exclusively to the domain used in Synapse's ``public_baseurl`` setting. In particular, it has no bearing on the domain mentioned in MXIDs hosted on that server. Following this advice ensures that even if an XSS is found in Synapse, the impact to other applications will be minimal. Testing a new installation ========================== The easiest way to try out your new Synapse installation is by connecting to it from a web client. Unless you are running a test instance of Synapse on your local machine, in general, you will need to enable TLS support before you can successfully connect from a client: see `TLS certificates `_. An easy way to get started is to login or register via Element at https://app.element.io/#/login or https://app.element.io/#/register respectively. You will need to change the server you are logging into from ``matrix.org`` and instead specify a Homeserver URL of ``https://:8448`` (or just ``https://`` if you are using a reverse proxy). If you prefer to use another client, refer to our `client breakdown `_. If all goes well you should at least be able to log in, create a room, and start sending messages. .. _`client-user-reg`: Registering a new user from a client ------------------------------------ By default, registration of new users via Matrix clients is disabled. To enable it: 1. In the `registration config section `_ set ``enable_registration: true`` in ``homeserver.yaml``. 2. Then **either**: a. set up a `CAPTCHA `_, or b. set ``enable_registration_without_verification: true`` in ``homeserver.yaml``. We **strongly** recommend using a CAPTCHA, particularly if your homeserver is exposed to the public internet. Without it, anyone can freely register accounts on your homeserver. This can be exploited by attackers to create spambots targetting the rest of the Matrix federation. Your new user name will be formed partly from the ``server_name``, and partly from a localpart you specify when you create the account. Your name will take the form of:: @localpart:my.domain.name (pronounced "at localpart on my dot domain dot name"). As when logging in, you will need to specify a "Custom server". Specify your desired ``localpart`` in the 'User name' box. Troubleshooting and support =========================== The `Admin FAQ `_ includes tips on dealing with some common problems. For more details, see `Synapse's wider documentation `_. For additional support installing or managing Synapse, please ask in the community support room |room|_ (from a matrix.org account if necessary). We do not use GitHub issues for support requests, only for bug reports and feature requests. .. |room| replace:: ``#synapse:matrix.org`` .. _room: https://matrix.to/#/#synapse:matrix.org .. |docs| replace:: ``docs`` .. _docs: docs Identity Servers ================ Identity servers have the job of mapping email addresses and other 3rd Party IDs (3PIDs) to Matrix user IDs, as well as verifying the ownership of 3PIDs before creating that mapping. **They are not where accounts or credentials are stored - these live on home servers. Identity Servers are just for mapping 3rd party IDs to matrix IDs.** This process is very security-sensitive, as there is obvious risk of spam if it is too easy to sign up for Matrix accounts or harvest 3PID data. In the longer term, we hope to create a decentralised system to manage it (`matrix-doc #712 `_), but in the meantime, the role of managing trusted identity in the Matrix ecosystem is farmed out to a cluster of known trusted ecosystem partners, who run 'Matrix Identity Servers' such as `Sydent `_, whose role is purely to authenticate and track 3PID logins and publish end-user public keys. You can host your own copy of Sydent, but this will prevent you reaching other users in the Matrix ecosystem via their email address, and prevent them finding you. We therefore recommend that you use one of the centralised identity servers at ``https://matrix.org`` or ``https://vector.im`` for now. To reiterate: the Identity server will only be used if you choose to associate an email address with your account, or send an invite to another user via their email address. Development =========== We welcome contributions to Synapse from the community! The best place to get started is our `guide for contributors `_. This is part of our larger `documentation `_, which includes information for Synapse developers as well as Synapse administrators. Developers might be particularly interested in: * `Synapse's database schema `_, * `notes on Synapse's implementation details `_, and * `how we use git `_. Alongside all that, join our developer community on Matrix: `#synapse-dev:matrix.org `_, featuring real humans! .. |support| image:: https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix :alt: (get support on #synapse:matrix.org) :target: https://matrix.to/#/#synapse:matrix.org .. |development| image:: https://img.shields.io/matrix/synapse-dev:matrix.org?label=development&logo=matrix :alt: (discuss development on #synapse-dev:matrix.org) :target: https://matrix.to/#/#synapse-dev:matrix.org .. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success :alt: (Rendered documentation on GitHub Pages) :target: https://element-hq.github.io/synapse/latest/ .. |license| image:: https://img.shields.io/github/license/element-hq/synapse :alt: (check license in LICENSE file) :target: LICENSE .. |pypi| image:: https://img.shields.io/pypi/v/matrix-synapse :alt: (latest version released on PyPi) :target: https://pypi.org/project/matrix-synapse .. |python| image:: https://img.shields.io/pypi/pyversions/matrix-synapse :alt: (supported python versions) :target: https://pypi.org/project/matrix-synapse synapse-1.100.0/UPGRADE.rst000066400000000000000000000004011455622526000151560ustar00rootroot00000000000000Upgrading Synapse ================= This document has moved to the `Synapse documentation website `_. Please update your links. The markdown source is available in `docs/upgrade.md `_. synapse-1.100.0/book.toml000066400000000000000000000027311455622526000151740ustar00rootroot00000000000000# Documentation for possible options in this file is at # https://rust-lang.github.io/mdBook/format/config.html [book] title = "Synapse" authors = ["The Matrix.org Foundation C.I.C."] language = "en" multilingual = false # The directory that documentation files are stored in src = "docs" [build] # Prevent markdown pages from being automatically generated when they're # linked to in SUMMARY.md create-missing = false [output.html] # The URL visitors will be directed to when they try to edit a page edit-url-template = "https://github.com/element-hq/synapse/edit/develop/{path}" # Remove the numbers that appear before each item in the sidebar, as they can # get quite messy as we nest deeper no-section-label = true # The source code URL of the repository git-repository-url = "https://github.com/element-hq/synapse" # The path that the docs are hosted on site-url = "/synapse/" # Additional HTML, JS, CSS that's injected into each page of the book. # More information available in docs/website_files/README.md additional-css = [ "docs/website_files/table-of-contents.css", "docs/website_files/remove-nav-buttons.css", "docs/website_files/indent-section-headers.css", "docs/website_files/version-picker.css", ] additional-js = [ "docs/website_files/table-of-contents.js", "docs/website_files/version-picker.js", "docs/website_files/version.js", ] theme = "docs/website_files/theme" [preprocessor.schema_versions] command = "./scripts-dev/schema_versions.py" synapse-1.100.0/build_rust.py000066400000000000000000000014271455622526000160740ustar00rootroot00000000000000# A build script for poetry that adds the rust extension. import os from typing import Any, Dict from setuptools_rust import Binding, RustExtension def build(setup_kwargs: Dict[str, Any]) -> None: original_project_dir = os.path.dirname(os.path.realpath(__file__)) cargo_toml_path = os.path.join(original_project_dir, "rust", "Cargo.toml") extension = RustExtension( target="synapse.synapse_rust", path=cargo_toml_path, binding=Binding.PyO3, py_limited_api=True, # We force always building in release mode, as we can't tell the # difference between using `poetry` in development vs production. debug=False, ) setup_kwargs.setdefault("rust_extensions", []).append(extension) setup_kwargs["zip_safe"] = False synapse-1.100.0/changelog.d/000077500000000000000000000000001455622526000155135ustar00rootroot00000000000000synapse-1.100.0/changelog.d/.gitignore000066400000000000000000000000141455622526000174760ustar00rootroot00000000000000!.gitignore synapse-1.100.0/contrib/000077500000000000000000000000001455622526000150025ustar00rootroot00000000000000synapse-1.100.0/contrib/README.rst000066400000000000000000000007471455622526000165010ustar00rootroot00000000000000Community Contributions ======================= Everything in this directory are projects submitted by the community that may be useful to others. As such, the project maintainers cannot guarantee support, stability or backwards compatibility of these projects. Files in this directory should *not* be relied on directly, as they may not continue to work or exist in future. If you wish to use any of these files then they should be copied to avoid them breaking from underneath you. synapse-1.100.0/contrib/cmdclient/000077500000000000000000000000001455622526000167445ustar00rootroot00000000000000synapse-1.100.0/contrib/cmdclient/console.py000077500000000000000000000730471455622526000207760ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ Starts a synapse client console. """ import argparse import binascii import cmd import getpass import json import shlex import sys import time import urllib from http import TwistedHttpClient from typing import Optional import urlparse from signedjson.key import NACL_ED25519, decode_verify_key_bytes from signedjson.sign import SignatureVerifyException, verify_signed_json from twisted.internet import defer, reactor, threads CONFIG_JSON = "cmdclient_config.json" # TODO: The concept of trusted identity servers has been deprecated. This option and checks # should be removed TRUSTED_ID_SERVERS = ["localhost:8001"] class SynapseCmd(cmd.Cmd): """Basic synapse command-line processor. This processes commands from the user and calls the relevant HTTP methods. """ def __init__(self, http_client, server_url, identity_server_url, username, token): cmd.Cmd.__init__(self) self.http_client = http_client self.http_client.verbose = True self.config = { "url": server_url, "identityServerUrl": identity_server_url, "user": username, "token": token, "verbose": "on", "complete_usernames": "on", "send_delivery_receipts": "on", } self.path_prefix = "/_matrix/client/api/v1" self.event_stream_token = "END" self.prompt = ">>> " def do_EOF(self, line): # allows CTRL+D quitting return True def emptyline(self): pass # else it repeats the previous command def _usr(self): return self.config["user"] def _tok(self): return self.config["token"] def _url(self): return self.config["url"] + self.path_prefix def _identityServerUrl(self): return self.config["identityServerUrl"] def _is_on(self, config_name): if config_name in self.config: return self.config[config_name] == "on" return False def _domain(self): if "user" not in self.config or not self.config["user"]: return None return self.config["user"].split(":")[1] def do_config(self, line): """Show the config for this client: "config" Edit a key value mapping: "config key value" e.g. "config token 1234" Config variables: user: The username to auth with. token: The access token to auth with. url: The url of the server. verbose: [on|off] The verbosity of requests/responses. complete_usernames: [on|off] Auto complete partial usernames by assuming they are on the same homeserver as you. E.g. name >> @name:yourhost send_delivery_receipts: [on|off] Automatically send receipts to messages when performing a 'stream' command. Additional key/values can be added and can be substituted into requests by using $. E.g. 'config roomid room1' then 'raw get /rooms/$roomid'. """ if len(line) == 0: print(json.dumps(self.config, indent=4)) return try: args = self._parse(line, ["key", "val"], force_keys=True) # make sure restricted config values are checked config_rules = [ # key, valid_values ("verbose", ["on", "off"]), ("complete_usernames", ["on", "off"]), ("send_delivery_receipts", ["on", "off"]), ] for key, valid_vals in config_rules: if key == args["key"] and args["val"] not in valid_vals: print("%s value must be one of %s" % (args["key"], valid_vals)) return # toggle the http client verbosity if args["key"] == "verbose": self.http_client.verbose = "on" == args["val"] # assign the new config self.config[args["key"]] = args["val"] print(json.dumps(self.config, indent=4)) save_config(self.config) except Exception as e: print(e) def do_register(self, line): """Registers for a new account: "register " : The desired user ID : Do not automatically clobber config values. """ args = self._parse(line, ["userid", "noupdate"]) password = None pwd = None pwd2 = "_" while pwd != pwd2: pwd = getpass.getpass("Type a password for this user: ") pwd2 = getpass.getpass("Retype the password: ") if pwd != pwd2 or len(pwd) == 0: print("Password mismatch.") pwd = None else: password = pwd body = {"type": "m.login.password"} if "userid" in args: body["user"] = args["userid"] if password: body["password"] = password reactor.callFromThread(self._do_register, body, "noupdate" not in args) @defer.inlineCallbacks def _do_register(self, data, update_config): # check the registration flows url = self._url() + "/register" json_res = yield self.http_client.do_request("GET", url) print(json.dumps(json_res, indent=4)) passwordFlow = None for flow in json_res["flows"]: if flow["type"] == "m.login.recaptcha" or ( "stages" in flow and "m.login.recaptcha" in flow["stages"] ): print("Unable to register: Home server requires captcha.") return if flow["type"] == "m.login.password" and "stages" not in flow: passwordFlow = flow break if not passwordFlow: return json_res = yield self.http_client.do_request("POST", url, data=data) print(json.dumps(json_res, indent=4)) if update_config and "user_id" in json_res: self.config["user"] = json_res["user_id"] self.config["token"] = json_res["access_token"] save_config(self.config) def do_login(self, line): """Login as a specific user: "login @bob:localhost" You MAY be prompted for a password, or instructed to visit a URL. """ try: args = self._parse(line, ["user_id"], force_keys=True) can_login = threads.blockingCallFromThread(reactor, self._check_can_login) if can_login: p = getpass.getpass("Enter your password: ") user = args["user_id"] if self._is_on("complete_usernames") and not user.startswith("@"): domain = self._domain() if domain: user = "@" + user + ":" + domain reactor.callFromThread(self._do_login, user, p) # print " got %s " % p except Exception as e: print(e) @defer.inlineCallbacks def _do_login(self, user, password): path = "/login" data = {"user": user, "password": password, "type": "m.login.password"} url = self._url() + path json_res = yield self.http_client.do_request("POST", url, data=data) print(json_res) if "access_token" in json_res: self.config["user"] = user self.config["token"] = json_res["access_token"] save_config(self.config) print("Login successful.") @defer.inlineCallbacks def _check_can_login(self): path = "/login" # ALWAYS check that the home server can handle the login request before # submitting! url = self._url() + path json_res = yield self.http_client.do_request("GET", url) print(json_res) if "flows" not in json_res: print("Failed to find any login flows.") defer.returnValue(False) flow = json_res["flows"][0] # assume first is the one we want. if "type" not in flow or "m.login.password" != flow["type"] or "stages" in flow: fallback_url = self._url() + "/login/fallback" print( "Unable to login via the command line client. Please visit " "%s to login." % fallback_url ) defer.returnValue(False) defer.returnValue(True) def do_emailrequest(self, line): """Requests the association of a third party identifier
The email address) A string of characters generated when requesting an email that you'll supply in subsequent calls to identify yourself The number of times the user has requested an email. Leave this the same between requests to retry the request at the transport level. Increment it to request that the email be sent again. """ args = self._parse(line, ["address", "clientSecret", "sendAttempt"]) postArgs = { "email": args["address"], "clientSecret": args["clientSecret"], "sendAttempt": args["sendAttempt"], } reactor.callFromThread(self._do_emailrequest, postArgs) @defer.inlineCallbacks def _do_emailrequest(self, args): # TODO: Update to use v2 Identity Service API endpoint url = ( self._identityServerUrl() + "/_matrix/identity/api/v1/validate/email/requestToken" ) json_res = yield self.http_client.do_request( "POST", url, data=urllib.urlencode(args), jsonreq=False, headers={"Content-Type": ["application/x-www-form-urlencoded"]}, ) print(json_res) if "sid" in json_res: print("Token sent. Your session ID is %s" % (json_res["sid"])) def do_emailvalidate(self, line): """Validate and associate a third party ID The session ID (sid) given to you in the response to requestToken The token sent to your third party identifier address The same clientSecret you supplied in requestToken """ args = self._parse(line, ["sid", "token", "clientSecret"]) postArgs = { "sid": args["sid"], "token": args["token"], "clientSecret": args["clientSecret"], } reactor.callFromThread(self._do_emailvalidate, postArgs) @defer.inlineCallbacks def _do_emailvalidate(self, args): # TODO: Update to use v2 Identity Service API endpoint url = ( self._identityServerUrl() + "/_matrix/identity/api/v1/validate/email/submitToken" ) json_res = yield self.http_client.do_request( "POST", url, data=urllib.urlencode(args), jsonreq=False, headers={"Content-Type": ["application/x-www-form-urlencoded"]}, ) print(json_res) def do_3pidbind(self, line): """Validate and associate a third party ID The session ID (sid) given to you in the response to requestToken The same clientSecret you supplied in requestToken """ args = self._parse(line, ["sid", "clientSecret"]) postArgs = {"sid": args["sid"], "clientSecret": args["clientSecret"]} postArgs["mxid"] = self.config["user"] reactor.callFromThread(self._do_3pidbind, postArgs) @defer.inlineCallbacks def _do_3pidbind(self, args): # TODO: Update to use v2 Identity Service API endpoint url = self._identityServerUrl() + "/_matrix/identity/api/v1/3pid/bind" json_res = yield self.http_client.do_request( "POST", url, data=urllib.urlencode(args), jsonreq=False, headers={"Content-Type": ["application/x-www-form-urlencoded"]}, ) print(json_res) def do_join(self, line): """Joins a room: "join " """ try: args = self._parse(line, ["roomid"], force_keys=True) self._do_membership_change(args["roomid"], "join", self._usr()) except Exception as e: print(e) def do_joinalias(self, line): try: args = self._parse(line, ["roomname"], force_keys=True) path = "/join/%s" % urllib.quote(args["roomname"]) reactor.callFromThread(self._run_and_pprint, "POST", path, {}) except Exception as e: print(e) def do_topic(self, line): """ "topic [set|get] []" Set the topic for a room: topic set Get the topic for a room: topic get """ try: args = self._parse(line, ["action", "roomid", "topic"]) if "action" not in args or "roomid" not in args: print("Must specify set|get and a room ID.") return if args["action"].lower() not in ["set", "get"]: print("Must specify set|get, not %s" % args["action"]) return path = "/rooms/%s/topic" % urllib.quote(args["roomid"]) if args["action"].lower() == "set": if "topic" not in args: print("Must specify a new topic.") return body = {"topic": args["topic"]} reactor.callFromThread(self._run_and_pprint, "PUT", path, body) elif args["action"].lower() == "get": reactor.callFromThread(self._run_and_pprint, "GET", path) except Exception as e: print(e) def do_invite(self, line): """Invite a user to a room: "invite " """ try: args = self._parse(line, ["userid", "roomid"], force_keys=True) user_id = args["userid"] reactor.callFromThread(self._do_invite, args["roomid"], user_id) except Exception as e: print(e) @defer.inlineCallbacks def _do_invite(self, roomid, userstring): if not userstring.startswith("@") and self._is_on("complete_usernames"): # TODO: Update to use v2 Identity Service API endpoint url = self._identityServerUrl() + "/_matrix/identity/api/v1/lookup" json_res = yield self.http_client.do_request( "GET", url, qparams={"medium": "email", "address": userstring} ) mxid = None if "mxid" in json_res and "signatures" in json_res: # TODO: Update to use v2 Identity Service API endpoint url = ( self._identityServerUrl() + "/_matrix/identity/api/v1/pubkey/ed25519" ) pubKey = None pubKeyObj = yield self.http_client.do_request("GET", url) if "public_key" in pubKeyObj: pubKey = decode_verify_key_bytes( NACL_ED25519, binascii.unhexlify(pubKeyObj["public_key"]) ) else: print("No public key found in pubkey response!") sigValid = False if pubKey: for signame in json_res["signatures"]: if signame not in TRUSTED_ID_SERVERS: print( "Ignoring signature from untrusted server %s" % (signame) ) else: try: verify_signed_json(json_res, signame, pubKey) sigValid = True print( "Mapping %s -> %s correctly signed by %s" % (userstring, json_res["mxid"], signame) ) break except SignatureVerifyException as e: print("Invalid signature from %s" % (signame)) print(e) if sigValid: print("Resolved 3pid %s to %s" % (userstring, json_res["mxid"])) mxid = json_res["mxid"] else: print( "Got association for %s but couldn't verify signature" % (userstring) ) if not mxid: mxid = "@" + userstring + ":" + self._domain() self._do_membership_change(roomid, "invite", mxid) def do_leave(self, line): """Leaves a room: "leave " """ try: args = self._parse(line, ["roomid"], force_keys=True) self._do_membership_change(args["roomid"], "leave", self._usr()) except Exception as e: print(e) def do_send(self, line): """Sends a message. "send " """ args = self._parse(line, ["roomid", "body"]) txn_id = "txn%s" % int(time.time()) path = "/rooms/%s/send/m.room.message/%s" % ( urllib.quote(args["roomid"]), txn_id, ) body_json = {"msgtype": "m.text", "body": args["body"]} reactor.callFromThread(self._run_and_pprint, "PUT", path, body_json) def do_list(self, line): """List data about a room. "list members [query]" - List all the members in this room. "list messages [query]" - List all the messages in this room. Where [query] will be directly applied as query parameters, allowing you to use the pagination API. E.g. the last 3 messages in this room: "list messages from=END&to=START&limit=3" """ args = self._parse(line, ["type", "roomid", "qp"]) if "type" not in args or "roomid" not in args: print("Must specify type and room ID.") return if args["type"] not in ["members", "messages"]: print("Unrecognised type: %s" % args["type"]) return room_id = args["roomid"] path = "/rooms/%s/%s" % (urllib.quote(room_id), args["type"]) qp = {"access_token": self._tok()} if "qp" in args: for key_value_str in args["qp"].split("&"): try: key_value = key_value_str.split("=") qp[key_value[0]] = key_value[1] except Exception: print("Bad query param: %s" % key_value) return reactor.callFromThread(self._run_and_pprint, "GET", path, query_params=qp) def do_create(self, line): """Creates a room. "create [public|private] " - Create a room with the specified visibility. "create " - Create a room with default visibility. "create [public|private]" - Create a room with specified visibility. "create" - Create a room with default visibility. """ args = self._parse(line, ["vis", "roomname"]) # fixup args depending on which were set body = {} if "vis" in args and args["vis"] in ["public", "private"]: body["visibility"] = args["vis"] if "roomname" in args: room_name = args["roomname"] body["room_alias_name"] = room_name elif "vis" in args and args["vis"] not in ["public", "private"]: room_name = args["vis"] body["room_alias_name"] = room_name reactor.callFromThread(self._run_and_pprint, "POST", "/createRoom", body) def do_raw(self, line): """Directly send a JSON object: "raw " : Required. One of "PUT", "GET", "POST", "xPUT", "xGET", "xPOST". Methods with 'x' prefixed will not automatically append the access token. : Required. E.g. "/events" : Optional. E.g. "{ "msgtype":"custom.text", "body":"abc123"}" """ args = self._parse(line, ["method", "path", "data"]) # sanity check if "method" not in args or "path" not in args: print("Must specify path and method.") return args["method"] = args["method"].upper() valid_methods = [ "PUT", "GET", "POST", "DELETE", "XPUT", "XGET", "XPOST", "XDELETE", ] if args["method"] not in valid_methods: print("Unsupported method: %s" % args["method"]) return if "data" not in args: args["data"] = None else: try: args["data"] = json.loads(args["data"]) except Exception as e: print("Data is not valid JSON. %s" % e) return qp = {"access_token": self._tok()} if args["method"].startswith("X"): qp = {} # remove access token args["method"] = args["method"][1:] # snip the X else: # append any query params the user has set try: parsed_url = urlparse.urlparse(args["path"]) qp.update(urlparse.parse_qs(parsed_url.query)) args["path"] = parsed_url.path except Exception: pass reactor.callFromThread( self._run_and_pprint, args["method"], args["path"], args["data"], query_params=qp, ) def do_stream(self, line): """Stream data from the server: "stream " """ args = self._parse(line, ["timeout"]) timeout = 5000 if "timeout" in args: try: timeout = int(args["timeout"]) except ValueError: print("Timeout must be in milliseconds.") return reactor.callFromThread(self._do_event_stream, timeout) @defer.inlineCallbacks def _do_event_stream(self, timeout): res = yield defer.ensureDeferred( self.http_client.get_json( self._url() + "/events", { "access_token": self._tok(), "timeout": str(timeout), "from": self.event_stream_token, }, ) ) print(json.dumps(res, indent=4)) if "chunk" in res: for event in res["chunk"]: if ( event["type"] == "m.room.message" and self._is_on("send_delivery_receipts") and event["user_id"] != self._usr() ): # not sent by us self._send_receipt(event, "d") # update the position in the stram if "end" in res: self.event_stream_token = res["end"] def _send_receipt(self, event, feedback_type): path = "/rooms/%s/messages/%s/%s/feedback/%s/%s" % ( urllib.quote(event["room_id"]), event["user_id"], event["msg_id"], self._usr(), feedback_type, ) data = {} reactor.callFromThread( self._run_and_pprint, "PUT", path, data=data, alt_text="Sent receipt for %s" % event["msg_id"], ) def _do_membership_change(self, roomid, membership, userid): path = "/rooms/%s/state/m.room.member/%s" % ( urllib.quote(roomid), urllib.quote(userid), ) data = {"membership": membership} reactor.callFromThread(self._run_and_pprint, "PUT", path, data=data) def do_displayname(self, line): """Get or set my displayname: "displayname [new_name]" """ args = self._parse(line, ["name"]) path = "/profile/%s/displayname" % (self.config["user"]) if "name" in args: data = {"displayname": args["name"]} reactor.callFromThread(self._run_and_pprint, "PUT", path, data=data) else: reactor.callFromThread(self._run_and_pprint, "GET", path) def _do_presence_state(self, state, line): args = self._parse(line, ["msgstring"]) path = "/presence/%s/status" % (self.config["user"]) data = {"state": state} if "msgstring" in args: data["status_msg"] = args["msgstring"] reactor.callFromThread(self._run_and_pprint, "PUT", path, data=data) def do_offline(self, line): """Set my presence state to OFFLINE""" self._do_presence_state(0, line) def do_away(self, line): """Set my presence state to AWAY""" self._do_presence_state(1, line) def do_online(self, line): """Set my presence state to ONLINE""" self._do_presence_state(2, line) def _parse(self, line, keys, force_keys=False): """Parses the given line. Args: line : The line to parse keys : A list of keys to map onto the args force_keys : True to enforce that the line has a value for every key Returns: A dict of key:arg """ line_args = shlex.split(line) if force_keys and len(line_args) != len(keys): raise IndexError("Must specify all args: %s" % keys) # do $ substitutions for i, arg in enumerate(line_args): for config_key in self.config: if ("$" + config_key) in arg: arg = arg.replace("$" + config_key, self.config[config_key]) line_args[i] = arg return dict(zip(keys, line_args)) @defer.inlineCallbacks def _run_and_pprint( self, method, path, data=None, query_params: Optional[dict] = None, alt_text=None, ): """Runs an HTTP request and pretty prints the output. Args: method: HTTP method path: Relative path data: Raw JSON data if any query_params: dict of query parameters to add to the url """ query_params = query_params or {"access_token": None} url = self._url() + path if "access_token" in query_params: query_params["access_token"] = self._tok() json_res = yield self.http_client.do_request( method, url, data=data, qparams=query_params ) if alt_text: print(alt_text) else: print(json.dumps(json_res, indent=4)) def save_config(config): with open(CONFIG_JSON, "w") as out: json.dump(config, out) def main(server_url, identity_server_url, username, token, config_path): print("Synapse command line client") print("===========================") print("Server: %s" % server_url) print("Type 'help' to get started.") print("Close this console with CTRL+C then CTRL+D.") if not username or not token: print("- 'register ' - Register an account") print("- 'stream' - Connect to the event stream") print("- 'create ' - Create a room") print("- 'send ' - Send a message") http_client = TwistedHttpClient() # the command line client syn_cmd = SynapseCmd(http_client, server_url, identity_server_url, username, token) # load synapse.json config from a previous session global CONFIG_JSON CONFIG_JSON = config_path # bit cheeky, but just overwrite the global try: with open(config_path) as config: syn_cmd.config = json.load(config) try: http_client.verbose = "on" == syn_cmd.config["verbose"] except Exception: pass print("Loaded config from %s" % config_path) except Exception: pass # Twisted-specific: Runs the command processor in Twisted's event loop # to maintain a single thread for both commands and event processing. # If using another HTTP client, just call syn_cmd.cmdloop() reactor.callInThread(syn_cmd.cmdloop) reactor.run() if __name__ == "__main__": parser = argparse.ArgumentParser("Starts a synapse client.") parser.add_argument( "-s", "--server", dest="server", default="http://localhost:8008", help="The URL of the home server to talk to.", ) parser.add_argument( "-i", "--identity-server", dest="identityserver", default="http://localhost:8090", help="The URL of the identity server to talk to.", ) parser.add_argument( "-u", "--username", dest="username", help="Your username on the server." ) parser.add_argument("-t", "--token", dest="token", help="Your access token.") parser.add_argument( "-c", "--config", dest="config", default=CONFIG_JSON, help="The location of the config.json file to read from.", ) args = parser.parse_args() if not args.server: print("You must supply a server URL to communicate with.") parser.print_help() sys.exit(1) server = args.server if not server.startswith("http://"): server = "http://" + args.server main(server, args.identityserver, args.username, args.token, args.config) synapse-1.100.0/contrib/cmdclient/http.py000066400000000000000000000151351455622526000203020ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import json import urllib from pprint import pformat from typing import Optional from twisted.internet import defer, reactor from twisted.web.client import Agent, readBody from twisted.web.http_headers import Headers class HttpClient: """Interface for talking json over http""" def put_json(self, url, data): """Sends the specifed json data using PUT Args: url (str): The URL to PUT data to. data (dict): A dict containing the data that will be used as the request body. This will be encoded as JSON. Returns: Deferred: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. """ def get_json(self, url, args=None): """Gets some json from the given host homeserver and path Args: url (str): The URL to GET data from. args (dict): A dictionary used to create query strings, defaults to None. **Note**: The value of each key is assumed to be an iterable and *not* a string. Returns: Deferred: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. """ class TwistedHttpClient(HttpClient): """Wrapper around the twisted HTTP client api. Attributes: agent (twisted.web.client.Agent): The twisted Agent used to send the requests. """ def __init__(self): self.agent = Agent(reactor) @defer.inlineCallbacks def put_json(self, url, data): response = yield self._create_put_request( url, data, headers_dict={"Content-Type": ["application/json"]} ) body = yield readBody(response) defer.returnValue((response.code, body)) @defer.inlineCallbacks def get_json(self, url, args=None): if args: # generates a list of strings of form "k=v". qs = urllib.urlencode(args, True) url = "%s?%s" % (url, qs) response = yield self._create_get_request(url) body = yield readBody(response) defer.returnValue(json.loads(body)) def _create_put_request(self, url, json_data, headers_dict: Optional[dict] = None): """Wrapper of _create_request to issue a PUT request""" headers_dict = headers_dict or {} if "Content-Type" not in headers_dict: raise defer.error(RuntimeError("Must include Content-Type header for PUTs")) return self._create_request( "PUT", url, producer=_JsonProducer(json_data), headers_dict=headers_dict ) def _create_get_request(self, url, headers_dict: Optional[dict] = None): """Wrapper of _create_request to issue a GET request""" return self._create_request("GET", url, headers_dict=headers_dict or {}) @defer.inlineCallbacks def do_request( self, method, url, data=None, qparams=None, jsonreq=True, headers: Optional[dict] = None, ): headers = headers or {} if qparams: url = "%s?%s" % (url, urllib.urlencode(qparams, True)) if jsonreq: prod = _JsonProducer(data) headers["Content-Type"] = ["application/json"] else: prod = _RawProducer(data) if method in ["POST", "PUT"]: response = yield self._create_request( method, url, producer=prod, headers_dict=headers ) else: response = yield self._create_request(method, url) body = yield readBody(response) defer.returnValue(json.loads(body)) @defer.inlineCallbacks def _create_request( self, method, url, producer=None, headers_dict: Optional[dict] = None ): """Creates and sends a request to the given url""" headers_dict = headers_dict or {} headers_dict["User-Agent"] = ["Synapse Cmd Client"] retries_left = 5 print("%s to %s with headers %s" % (method, url, headers_dict)) if self.verbose and producer: if "password" in producer.data: temp = producer.data["password"] producer.data["password"] = "[REDACTED]" print(json.dumps(producer.data, indent=4)) producer.data["password"] = temp else: print(json.dumps(producer.data, indent=4)) while True: try: response = yield self.agent.request( method, url.encode("UTF8"), Headers(headers_dict), producer ) break except Exception as e: print("uh oh: %s" % e) if retries_left: yield self.sleep(2 ** (5 - retries_left)) retries_left -= 1 else: raise e if self.verbose: print("Status %s %s" % (response.code, response.phrase)) print(pformat(list(response.headers.getAllRawHeaders()))) defer.returnValue(response) def sleep(self, seconds): d = defer.Deferred() reactor.callLater(seconds, d.callback, seconds) return d class _RawProducer: def __init__(self, data): self.data = data self.body = data self.length = len(self.body) def startProducing(self, consumer): consumer.write(self.body) return defer.succeed(None) def pauseProducing(self): pass def stopProducing(self): pass class _JsonProducer: """Used by the twisted http client to create the HTTP body from json""" def __init__(self, jsn): self.data = jsn self.body = json.dumps(jsn).encode("utf8") self.length = len(self.body) def startProducing(self, consumer): consumer.write(self.body) return defer.succeed(None) def pauseProducing(self): pass def stopProducing(self): pass synapse-1.100.0/contrib/datagrip/000077500000000000000000000000001455622526000165755ustar00rootroot00000000000000synapse-1.100.0/contrib/datagrip/README.md000066400000000000000000000025161455622526000200600ustar00rootroot00000000000000# Schema symlinks This directory contains symlinks to the latest dump of the postgres full schema. This is useful to have, as it allows IDEs to understand our schema and provide autocomplete, linters, inspections, etc. In particular, the DataGrip functionality in IntelliJ's products seems to only consider files called `*.sql` when defining a schema from DDL; `*.sql.postgres` will be ignored. To get around this we symlink those files to ones ending in `.sql`. We've chosen to ignore the `.sql.sqlite` schema dumps here, as they're not intended for production use (and are much quicker to test against). ## Example ![](datagrip-aware-of-schema.png) ## Caveats - Doesn't include temporary tables created ad-hoc by Synapse. - Postgres only. IDEs will likely be confused by SQLite-specific queries. - Will not include migrations created after the latest schema dump. - Symlinks might confuse checkouts on Windows systems. ## Instructions ### Jetbrains IDEs with DataGrip plugin - View -> Tool Windows -> Database - `+` Icon -> DDL Data Source - Pick a name, e.g. `Synapse schema dump` - Under sources, click `+`. - Add an entry with Path pointing to this directory, and dialect set to PostgreSQL. - OK, and OK. - IDE should now be aware of the schema. - Try control-clicking on a table name in a bit of SQL e.g. in `_get_forgotten_rooms_for_user_txn`.synapse-1.100.0/contrib/datagrip/common.sql000077700000000000000000000000001455622526000353322../../synapse/storage/schema/common/full_schemas/72/full.sql.postgresustar00rootroot00000000000000synapse-1.100.0/contrib/datagrip/datagrip-aware-of-schema.png000066400000000000000000000324521455622526000240410ustar00rootroot00000000000000PNG  IHDRHC*tEXtCreation TimeFri 03 Feb 2023 16:59:12 GMTxDtEXtSoftwaregnome-screenshot>PLTE6A5---777VVV222)))&&&CGJ+++KMM(((5?4111%%%-++///000++-MMMTVX3=20<58A50:/2<1;A5y`CA-+6A8+,84?3ZrzFGJ7-++-?x2>YsOD6521Sn|M7/4>3@[ufI0s3,2AXL\;0,p09/.B_6BL{j2++1_C.xcI-8RjWE6Uepyv\J.+HbwU4ssOaXk}j1,+DRwn2mR7s0;WGA4w||{ZSPX3C3/`qvyvh2mlu2mg2{gLHyqiYv/?osF4}{vCJfFE6\^4z~~gbPU2{YNz@B5+-6R\3gi_56F2g28Sn6B?FV6DUe3,5Lh[HgwP90LpcOm306Do_`srr5Hr224Wbgc2hd7TyX=0cQ:gBp22LKN[Q2~mSh@/]1mis3c3^31]JJR4zT0Hx^NX~MrC84V12:DGWz]8KYvvm`C]afgYq_FcE0?mcy}N]hUIIhor445FY?e_VSWHjmLf|cNp=Qcb41NKd4,VPLVTȹen{KNSgt@o`L~jiD7dǗM4<2T IDATxhga휰fs!1ۄhMbrH9G^J.MDIwFˁ] hQ"UZggAg?IBygyޙdcf7/̼;ϼ;ߌ2=&W4zN X2eK$&֚8a?uK:<6 V,ogtI7~Mn^caGarzQRTsgp˩PH],j,[ibZev,W_XM-eFwtR؁} bUoqeS__+ni8VV^nXV/߬Ǐqw7ߌ/[.,sC۝,~qgY\wuc/-O+7{ǪϬW6fՅ~_3ُ}ek+,lSJX?zAi;mb'ZyWq =U#vh%]v_vUś&s2/OzEy<|Y!B]3n۽*)Lj)H>ehoˇ؏v!ٟtQq)k/kV2xKPK ׿|kQ(Ob,߻Vr.dAzroy~Z?>)B<|Ųi7t{,wL,:fsgV;,?휴DmzIJKsWK2cy<~?SVFX^R8Nd.OعԛdɌ/llWv'ь|wy{~brUHǘߠEc~_\T~Ti~Yt8_-}Kaq8κ qngߗ_K9y80^9^۽۟8K8G?h<%cU-H/[_.iZ}CHnw(9h,[rh^;Jc@s,CX2X2X2eXX Ag݇ә+?{9KE;љ`z~ɲ{XNׯh-_le,Sxx%0y~׷:_#~aR_5oO%?7Sߵ;XqYܿ2aWw7-)~c|Ԥ/S}>b[vQͲM}8;/q_jߞɧ~c:+zyfkG}|θxAg5NV9{m~cʲ&׸~e#&~aZO.bq$, q_fiya7,~^k/2=^~k]?,S8=e6Ϳ,S|ljB-}|~e]i#8epz6,wԪo,oٺ?Wv_o%͸y^k鋶q_e"_s9خĹ5wI߬e5hI\a/_yZZ,g22!,CX e e9`ٯ5pp;{" #,>QOeAtRwqxp< rt߇>CV5, hqۯtM?/y߳օ%0/slfUKl ʡe%˖Y/]T-{xyx3WX&>lfe~h`!{nNlX6:^.?se>lvg+%˶9N3Z+^v;X q9GX>lY{}˔E>.nqgtFv,S+ Ze=;Y>aifr/r(^e#oo)K$[Әhj;9&X,Rf9evK|>\Y;_N[ _Ј0pHȮˑXt'C'?=}/6~lL,<;ۍ;#@,g+z>ݳrʛβ!2r|fEKy|0^}Dd%:v#z{X˙ayidb/_X6ד&gyi*1.̰|awX,|/˩e`9C,o5/c'tÃe=6fLXhD~ȗo ,c,gd~Y_^,Nkvcz͞ǘMG5k1 {,YvHdFIB"1qsw{?ﰣo !<s9HP``c,u,CX2X2XÇra흏}"`8+Y?׏LPƏw%)kVsVۻ2ܯl&)A5ks!dy|/cE9 3 <-fQϚ ][Y}#ʕw_ w KYO[<їsGWOoΧF$j(bkgճ6Q߁< ~iv;3_ڬ&*d2sHfX At *XZ"ภG3]YY!Z.Dk]]jA6ehL~{cCfy~9} gUw2O*/eO/կB?.~FP'K>LzD`Yԯ_xq!Z'p)A0i[n.Z40-҈#9PV\k?:i~.y8;nX޳!M`l\vkM^h4~ !Y*# yWq FkI;ѧܘw#}^O򢸄d-,ó0i#/[4\HK#3@a򁡡7˜YF"%Zb,%qF\GJ`uqxQh>EQaDP`yxK_9 %"\_4+}KtX~Yx,14UC~9+QյlS2nvB;l|Uwb ܏Y6, 㙫B?e9X:!2\"_Xi4 /0d[4/gH1^]%9]J>^K~Yl'OvI?e9X:mC1E3嘢;W:9@BtZici9y,eKg7#cfd˥N5PLe]ˢ:e/uZiOYNA: e , x7݌bZ<<[e옥e,;caW4, ]sO\16.X OҼOYx٥x]mG.LeB65X- uOzV](GSz_Za.Sa;H>Fx83z>[,OLUQe*e22e[d c=XlJM2LY,SeLY,S)˔gd7r~ObƳ{6dx]V-?Ycς[P{Z2YAX6a7eJuOs 1} !za_,skx,`^# -1R]:(O6TW*S*8O^vțRY0xGO۲Щl#PT2zS,dZg|;~߳õ E;G#JAnٷ%ؑ,n0mq,">YfliIYϺd9C3˟GݲޓZ|%ptl9ZvsW*׽\rI極+NoY:7U 9GýVƁj5kB{c? RW?7iONg-A#QVV+,:glBN,fzU{y5%f%>-2996v9TEoj9./? X8X ݕh,[^`al`yy rƳ/՝_g 3=W͞~V%.i숅AXdO{q7v! gG:\9H{]=^Ľ^x3K9~c8IJ51g y~=scv_#ao,n9ˑ  1Ci҉<>t˔,;mbZl()Ƀ菌/8Ĉ,rHcYOoC)վ;.y*6U5S/];&-;F(N,mjҿzguhPNY~~/7/A5[O>An7ʕYV~e7̦7fk3_unx*K ؼH:!I[K &C.&BTb7tf,&(QfbY"qH W!Qj@`]6bv%1ǻ7of'Fs91~08*Yf:lVc}sc˴_. /$_+We$0+ˡY֭caWt9:Wy>8{^ƯuJ8 ,y&i(KsD~mB"褈X_/B~՞6 ,k{6B6" ,2 ,˫Se`Xe`Xe`X1# X{HE3>InSt٬sqwvߧ71ou֒ }>3 ,hTePf㲢Ȳ9Vu:kk(e9Sh=?pF{+ ,Srct٬-˾cŹp.:k`c}feCe[]0kl.hj[3-mg2Z3QAe0`cphGu|KXv>oogLgm/ 3i%q uy}96z/Xz%ehvtWpc/;fR>r Kց2児,jYIa԰8,u\^;H._ƟO>H焻 ɲ>Ǹͫ:Set*aq=k,gv \zg?Aq܂[oՀwሊ$Ixwe,xFTy [#8K0exljEi{,Jz{YE):ec;oܩg#Χ#A:Eg=*TXǐ(x\/SCRg6.,O.e gsvľ0q8`5:מy3ew Z/G@ƝG^3"4= w˺R_PЯ/˺eyB':-\Z5gu 7;?EgXnk !9yAx~(̒p-dH/cv)99 Lk̛%.I+;b6EYEqzb#$M~ɨ 䢂 }T-I1Ͱ_bs'eY05z=%q|bq'o<ruc\,dx$=Eqzlģxgؖ}[N䅉=ѱm< DbY|e ^eyxDt)B5iފ#A,7z.ɖ- XǗMIJh"~TßHW>>+r[Vs^=__?w/#Z!$v^K)2XVz(#? 8]ӹCв,XHka9L>Gǽ_*,|GH ߤobZ(æe`^8Fq{dHݛT˒%*AI H7֒ Ewpyڐ !Htp`UwP=??(* ( }ߙ}llr/⛙}wgyf 歅ek}wۙOr])^xx>|Ъ<?8x5ZO?XVk]o#ߎT '=ՠg٠u,g< ,'KA[y #?%>۟W8s/wH?|xa}o{gt1sQ')j/K-{>~3(q>M,~~nv>[}טǻV,;24^q"/,o2~Cctwd]lr~Ba;gؼ@;ݛW۰7B}L3ˏX$A5|?#)j?XƳE}q(~YQ{ϙGA;G?aڳeleA/_ -r9%^>{w@'qkCǰ *%`-?21L, 2hjr*I+_^UL_|A`,/^~ ,啠W[[_`~,e`,/ˁ|{F!҂eX.`[cY,c s'P^,7/>di2rrˍe$.m=ve&2rJb s/eRek `9g/r,{rNc9,e 3 3XN 32rβ̞P]Q5ҡ se=:f32^ !'/`9,+0fW$P˹ 3hNMb 3 3H;Bl&y( lϋ2:Voo30hw/Mֻ6\roM3FҲa9J٢k+VUQ1g;v|' 뵢.t8o]Ebb'nlbr܁q琄j`YZtj  :.+ KyFPqZҒqJ+,q;_\y{wvPYf=1ٓfoj1PQ7 _2yH.Q+E~$]]K~¥vOqgOfvx,UÓ?5.ف2^г|< |ۢ=H !aGb:m\7?|COOJҪ-s~9 iG|~Y6l(lZI/ <)7xn"]*F4#(ZrȤM5rm/PH/A`22!,CX2X2*^䉇9i1\>GXqI@,{+y \GSou`yX^p`D S~c?LQ%Xfuu1j4nZ4t2monH}}$G[j8-'»Vex^ # password: # use_tls: True # certificate_file: # private_key_file: # ca_file: ``` This assumes that your Redis service is called `redis` in your Docker Compose file. ### Add a replication Listener Locate the `listeners` section of your `homeserver.yaml` and add the following replication listener: ```yaml listeners: # Other listeners - port: 9093 type: http resources: - names: [replication] ``` This listener is used by the workers for replication and is referred to in worker config files using the following settings: ```yaml worker_replication_host: synapse worker_replication_http_port: 9093 ``` ### Configure Federation Senders This section is applicable if you are using Federation senders (synapse.app.federation_sender). Locate the `send_federation` and `federation_sender_instances` settings in your `homeserver.yaml` and configure them: ```yaml # This will disable federation sending on the main Synapse instance send_federation: false federation_sender_instances: - synapse-federation-sender-1 # The worker_name setting in your federation sender worker configuration file ``` ## Other Worker types Using the concepts shown here it is possible to create other worker types in Docker Compose. See the [Workers](https://element-hq.github.io/synapse/latest/workers.html#available-worker-applications) documentation for a list of available workers. synapse-1.100.0/contrib/docker_compose_workers/docker-compose.yaml000066400000000000000000000043541455622526000253560ustar00rootroot00000000000000networks: backend: services: postgres: image: postgres:latest restart: unless-stopped volumes: - ${VOLUME_PATH}/var/lib/postgresql/data:/var/lib/postgresql/data:rw networks: - backend environment: POSTGRES_DB: synapse POSTGRES_USER: synapse_user POSTGRES_PASSWORD: postgres POSTGRES_INITDB_ARGS: --encoding=UTF8 --locale=C redis: image: redis:latest restart: unless-stopped networks: - backend synapse: image: matrixdotorg/synapse:latest container_name: synapse restart: unless-stopped volumes: - ${VOLUME_PATH}/data:/data:rw ports: - 8008:8008 networks: - backend environment: SYNAPSE_CONFIG_DIR: /data SYNAPSE_CONFIG_PATH: /data/homeserver.yaml depends_on: - postgres synapse-generic-worker-1: image: matrixdotorg/synapse:latest container_name: synapse-generic-worker-1 restart: unless-stopped entrypoint: ["/start.py", "run", "--config-path=/data/homeserver.yaml", "--config-path=/data/workers/synapse-generic-worker-1.yaml"] healthcheck: test: ["CMD-SHELL", "curl -fSs http://localhost:8081/health || exit 1"] start_period: "5s" interval: "15s" timeout: "5s" networks: - backend volumes: - ${VOLUME_PATH}/data:/data:rw # Replace VOLUME_PATH with the path to your Synapse volume environment: SYNAPSE_WORKER: synapse.app.generic_worker # Expose port if required so your reverse proxy can send requests to this worker # Port configuration will depend on how the http listener is defined in the worker configuration file ports: - 8081:8081 depends_on: - synapse synapse-federation-sender-1: image: matrixdotorg/synapse:latest container_name: synapse-federation-sender-1 restart: unless-stopped entrypoint: ["/start.py", "run", "--config-path=/data/homeserver.yaml", "--config-path=/data/workers/synapse-federation-sender-1.yaml"] healthcheck: disable: true networks: - backend volumes: - ${VOLUME_PATH}/data:/data:rw # Replace VOLUME_PATH with the path to your Synapse volume environment: SYNAPSE_WORKER: synapse.app.federation_sender depends_on: - synapse synapse-1.100.0/contrib/docker_compose_workers/workers/000077500000000000000000000000001455622526000232465ustar00rootroot00000000000000synapse-1.100.0/contrib/docker_compose_workers/workers/synapse-federation-sender-1.yaml000066400000000000000000000004071455622526000313470ustar00rootroot00000000000000worker_app: synapse.app.federation_sender worker_name: synapse-federation-sender-1 # The replication listener on the main synapse process. worker_replication_host: synapse worker_replication_http_port: 9093 worker_log_config: /data/federation_sender.log.config synapse-1.100.0/contrib/docker_compose_workers/workers/synapse-generic-worker-1.yaml000066400000000000000000000005601455622526000306740ustar00rootroot00000000000000worker_app: synapse.app.generic_worker worker_name: synapse-generic-worker-1 # The replication listener on the main synapse process. worker_replication_host: synapse worker_replication_http_port: 9093 worker_listeners: - type: http port: 8081 x_forwarded: true resources: - names: [client, federation] worker_log_config: /data/worker.log.config synapse-1.100.0/contrib/example_log_config.yaml000066400000000000000000000024161455622526000215120ustar00rootroot00000000000000# Example log_config file for synapse. To enable, point `log_config` to it in # `homeserver.yaml`, and restart synapse. # # This configuration will produce similar results to the defaults within # synapse, but can be edited to give more flexibility. version: 1 formatters: fmt: format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s- %(message)s' filters: context: (): synapse.logging.context.LoggingContextFilter request: "" handlers: # example output to console console: class: logging.StreamHandler formatter: fmt filters: [context] # example output to file - to enable, edit 'root' config below. file: class: logging.handlers.RotatingFileHandler formatter: fmt filename: /var/log/synapse/homeserver.log maxBytes: 100000000 backupCount: 3 filters: [context] encoding: utf8 root: level: INFO handlers: [console] # to use file handler instead, switch to [file] loggers: synapse: level: INFO synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO # example of enabling debugging for a component: # # synapse.federation.transport.server: # level: DEBUG synapse-1.100.0/contrib/grafana/000077500000000000000000000000001455622526000164015ustar00rootroot00000000000000synapse-1.100.0/contrib/grafana/README.md000066400000000000000000000010751455622526000176630ustar00rootroot00000000000000# Using the Synapse Grafana dashboard 0. Set up Prometheus and Grafana. Out of scope for this readme. Useful documentation about using Grafana with Prometheus: http://docs.grafana.org/features/datasources/prometheus/ 1. Have your Prometheus scrape your Synapse. https://element-hq.github.io/synapse/latest/metrics-howto.html 2. Import dashboard into Grafana. Download `synapse.json`. Import it to Grafana and select the correct Prometheus datasource. http://docs.grafana.org/reference/export_import/ 3. Set up required recording rules. [contrib/prometheus](../prometheus) synapse-1.100.0/contrib/grafana/synapse.json000066400000000000000000013352131455622526000207660ustar00rootroot00000000000000{ "__elements": {}, "__requires": [ { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "9.2.2" }, { "type": "panel", "id": "graph", "name": "Graph (old)", "version": "" }, { "type": "panel", "id": "heatmap", "name": "Heatmap", "version": "" }, { "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" }, { "type": "panel", "id": "timeseries", "name": "Time series", "version": "" } ], "annotations": { "list": [ { "builtIn": 1, "datasource": { "uid": "${DS_PROMETHEUS}" }, "enable": false, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "limit": 100, "name": "Annotations & Alerts", "showIn": 0, "type": "dashboard" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "enable": true, "expr": "changes(process_start_time_seconds{instance=\"$instance\",job=~\"synapse\"}[$bucket_size]) * on (instance, job) group_left(version) synapse_build_info{instance=\"$instance\",job=\"synapse\"}", "iconColor": "purple", "name": "deploys", "titleFormat": "Deployed {{version}}" } ] }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "id": null, "links": [ { "asDropdown": false, "icon": "external link", "includeVars": true, "keepTime": true, "tags": [ "matrix" ], "title": "Dashboards", "type": "dashboards" } ], "liveNow": false, "panels": [ { "collapsed": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 73, "panels": [], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Overview", "type": "row" }, { "cards": { "cardPadding": -1, "cardRound": 0 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 1 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 189, "legend": { "show": false }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": -1, "cellRadius": 0, "cellValues": {}, "color": { "exponent": 0.5, "fill": "#b4ff00", "mode": "scheme", "reverse": false, "scale": "exponential", "scheme": "Inferno", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": false }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "reverse": false, "unit": "s" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le)", "format": "heatmap", "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Event Send Time (excluding errors, all workers)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "format": "s", "logBase": 2, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 1 }, "hiddenSeries": false, "id": 152, "legend": { "avg": false, "current": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 0, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Avg", "fill": 0, "linewidth": 3 }, { "alias": "99%", "color": "#C4162A", "fillBelowTo": "90%" }, { "alias": "90%", "color": "#FF7383", "fillBelowTo": "75%" }, { "alias": "75%", "color": "#FFEE52", "fillBelowTo": "50%" }, { "alias": "50%", "color": "#73BF69", "fillBelowTo": "25%" }, { "alias": "25%", "color": "#1F60C4", "fillBelowTo": "5%" }, { "alias": "5%", "lines": false }, { "alias": "Average", "color": "rgb(255, 255, 255)", "lines": true, "linewidth": 3 }, { "alias": "Events", "color": "#B877D9", "hideTooltip": true, "points": true, "yaxis": 2, "zindex": -3 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.99, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.9, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "90%", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.75, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.5, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.25, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "legendFormat": "25%", "refId": "F" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.05, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) by (le))", "legendFormat": "5%", "refId": "G" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_http_server_response_time_seconds_sum{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size])) / sum(rate(synapse_http_server_response_time_seconds_count{servlet='RoomSendEventRestServlet',index=~\"$index\",instance=\"$instance\",code=~\"2..\"}[$bucket_size]))", "legendFormat": "Average", "refId": "H" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_storage_events_persisted_events_total{instance=\"$instance\"}[$bucket_size]))", "hide": false, "instant": false, "legendFormat": "Events", "refId": "E" } ], "thresholds": [ { "$$hashKey": "object:283", "colorMode": "warning", "fill": false, "line": true, "op": "gt", "value": 1, "yaxis": "left" }, { "$$hashKey": "object:284", "colorMode": "critical", "fill": false, "line": true, "op": "gt", "value": 2, "yaxis": "left" } ], "timeRegions": [], "title": "Event Send Time Quantiles (excluding errors, all workers)", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:255", "format": "s", "label": "", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:256", "format": "hertz", "label": "", "logBase": 1, "min": "0", "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 10 }, "hiddenSeries": false, "id": 75, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 3, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(process_cpu_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} ", "refId": "A" } ], "thresholds": [ { "$$hashKey": "object:566", "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeRegions": [], "title": "CPU usage", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:538", "format": "percentunit", "logBase": 1, "max": "1.5", "min": "0", "show": true }, { "$$hashKey": "object:539", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 10 }, "hiddenSeries": false, "id": 198, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 3, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}} {{index}}", "refId": "A", "step": 20, "target": "" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"})", "hide": true, "interval": "", "legendFormat": "total", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Memory", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "transformations": [], "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:1560", "format": "bytes", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:1561", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 1, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 10, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 19 }, "id": 245, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "synapse_build_info{instance=\"$instance\", job=\"synapse\"} - 1", "legendFormat": "version {{version}}", "range": true, "refId": "deployed_synapse_versions" } ], "title": "Deployed Synapse versions over time", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 19 }, "hiddenSeries": false, "id": 37, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "$$hashKey": "object:639", "alias": "/max$/", "color": "#890F02", "fill": 0, "legend": false } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "process_open_fds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "refId": "A", "step": 20 }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "process_max_fds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": true, "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} max", "refId": "B", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Open FDs", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:650", "format": "none", "label": "", "logBase": 1, "show": true }, { "$$hashKey": "object:651", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 26 }, "id": 54, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 27 }, "hiddenSeries": false, "id": 5, "legend": { "alignAsTable": false, "avg": false, "current": false, "hideEmpty": false, "hideZero": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 3, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "$$hashKey": "object:1240", "alias": "/user/" }, { "$$hashKey": "object:1241", "alias": "/system/" } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(process_cpu_system_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} system ", "metric": "", "range": true, "refId": "B", "step": 20 }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(process_cpu_user_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} user", "refId": "A", "step": 20 } ], "thresholds": [ { "$$hashKey": "object:1278", "colorMode": "custom", "fillColor": "rgba(255, 255, 255, 1)", "line": true, "lineColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 0.5, "yaxis": "left" }, { "$$hashKey": "object:1279", "colorMode": "custom", "fillColor": "rgba(255, 255, 255, 1)", "line": true, "lineColor": "rgb(87, 6, 16)", "op": "gt", "value": 0.8, "yaxis": "left" }, { "$$hashKey": "object:1498", "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeRegions": [], "title": "CPU", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:1250", "format": "percentunit", "label": "", "logBase": 1, "max": "1.2", "min": 0, "show": true }, { "$$hashKey": "object:1251", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "Shows the time in which the given percentage of reactor ticks completed, over the sampled timespan", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "links": [], "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "s" }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 27 }, "id": 105, "interval": "", "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "8.3.2", "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "histogram_quantile(0.999, rate(python_twisted_reactor_tick_time_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]))", "hide": false, "interval": "", "legendFormat": "{{job}}-{{index}} 99.9%", "refId": "E" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "histogram_quantile(0.99, rate(python_twisted_reactor_tick_time_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} 99%", "refId": "A", "step": 20 }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "histogram_quantile(0.95, rate(python_twisted_reactor_tick_time_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 95%", "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.90, rate(python_twisted_reactor_tick_time_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 90%", "refId": "C" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "rate(python_twisted_reactor_tick_time_sum{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size]) / rate(python_twisted_reactor_tick_time_count{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} mean", "refId": "D" } ], "title": "Reactor tick quantiles", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 34 }, "hiddenSeries": false, "id": 34, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}} {{index}}", "refId": "A", "step": 20, "target": "" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(process_resident_memory_bytes{instance=\"$instance\",job=~\"$job\",index=~\"$index\"})", "interval": "", "legendFormat": "total", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Memory", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "transformations": [], "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "bytes", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 34 }, "hiddenSeries": false, "id": 49, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "/^up/", "legend": false, "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "scrape_duration_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Prometheus scrape time", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "min": "0", "show": true }, { "decimals": 0, "format": "none", "label": "", "logBase": 1, "max": "0", "min": "-1", "show": false } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 41 }, "hiddenSeries": false, "id": 53, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "$$hashKey": "object:116", "alias": "/^version .*/", "lines": true, "linewidth": 6, "points": false } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "min_over_time(up{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "synapse_build_info{instance=\"$instance\", job=\"synapse\"} - 1", "hide": false, "legendFormat": "version {{version}}", "range": true, "refId": "deployed_synapse_versions" } ], "thresholds": [], "timeRegions": [], "title": "Up", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 41 }, "hiddenSeries": false, "id": 120, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null as zero", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": true, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_http_server_response_ru_utime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_http_server_response_ru_stime_seconds{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "instant": false, "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_background_process_ru_utime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_background_process_ru_stime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "B" } ], "thresholds": [ { "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeRegions": [], "title": "Stacked CPU usage", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:572", "format": "percentunit", "logBase": 1, "show": true }, { "$$hashKey": "object:573", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 48 }, "hiddenSeries": false, "id": 136, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_http_client_requests_total{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "legendFormat": "{{job}}-{{index}} {{method}}", "range": true, "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_http_matrixfederationclient_requests_total{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "legendFormat": "{{job}}-{{index}} {{method}} (federation)", "range": true, "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Outgoing HTTP request rate", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:123", "format": "reqps", "logBase": 1, "show": true }, { "$$hashKey": "object:124", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "active threads", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 48 }, "id": 207, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "synapse_threadpool_working_threads{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "title": "Threadpool activity", "type": "timeseries" } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Process info", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 27 }, "id": 56, "panels": [ { "cards": { "cardPadding": -1, "cardRound": 0 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 28 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 85, "legend": { "show": false }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": -1, "cellRadius": 0, "cellValues": {}, "color": { "exponent": 0.5, "fill": "#b4ff00", "mode": "scheme", "reverse": false, "scale": "exponential", "scheme": "Inferno", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": false }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "reverse": false, "unit": "s" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\"}[$bucket_size])) by (le)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Event Send Time (Including errors, across all workers)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "format": "s", "logBase": 2, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "", "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 28 }, "hiddenSeries": false, "id": 33, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_storage_events_persisted_events_total{instance=\"$instance\"}[$bucket_size])) without (job,index)", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "", "refId": "A", "step": 20, "target": "" } ], "thresholds": [], "timeRegions": [], "title": "Events Persisted (all workers)", "tooltip": { "shared": true, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:102", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:103", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "decimals": 1, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 37 }, "hiddenSeries": false, "id": 40, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_events_persisted_by_source_type{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{type}}", "refId": "D" } ], "thresholds": [], "timeRegions": [], "title": "Events/s Local vs Remote", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": "", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "decimals": 1, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 37 }, "hiddenSeries": false, "id": 46, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_events_persisted_by_event_type{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "instant": false, "intervalFactor": 2, "legendFormat": "{{type}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Events/s by Type", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": { "irc-freenode (local)": "#EAB839" }, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "decimals": 1, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 44 }, "hiddenSeries": false, "id": 44, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_events_persisted_by_origin{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{origin_entity}} ({{origin_type}})", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Events/s by Origin", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "decimals": 1, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 44 }, "hiddenSeries": false, "id": 45, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(synapse_storage_events_persisted_events_sep_total{job=~\"$job\",index=~\"$index\", type=\"m.room.member\",instance=\"$instance\", origin_type=\"local\"}[$bucket_size])) by (origin_type, origin_entity)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{origin_entity}} ({{origin_type}})", "range": true, "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Memberships/s by Origin", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:232", "format": "hertz", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:233", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 51 }, "hiddenSeries": false, "id": 118, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "repeatDirection": "h", "seriesOverrides": [ { "$$hashKey": "object:316", "alias": "mean", "linewidth": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "histogram_quantile(0.99, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 99%", "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.95, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 95%", "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.90, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 90%", "refId": "C" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.50, sum(rate(synapse_http_server_response_time_seconds_bucket{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} 50%", "refId": "D" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(synapse_http_server_response_time_seconds_sum{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method) / sum(rate(synapse_http_server_response_time_seconds_count{servlet='RoomSendEventRestServlet',instance=\"$instance\",code=~\"2..\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (method)", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} mean", "range": true, "refId": "E" } ], "thresholds": [], "timeRegions": [], "title": "Event send time quantiles by worker", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:263", "format": "s", "logBase": 1, "show": true }, { "$$hashKey": "object:264", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "CPU and DB time spent on most expensive state resolution in a room, summed over all workers. This is a very rough proxy for \"how fast is state res\", but it doesn't accurately represent the system load (e.g. it completely ignores cheap state resolutions).\n", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 30, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "normal" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "s/s" }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 51 }, "id": 222, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false }, "tooltip": { "mode": "multi", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": false, "expr": "sum(rate(synapse_state_res_db_for_biggest_room_seconds_total{instance=\"$instance\"}[1m]))", "format": "time_series", "hide": false, "instant": false, "interval": "", "legendFormat": "DB time", "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": false, "expr": "sum(rate(synapse_state_res_cpu_for_biggest_room_seconds_total{instance=\"$instance\"}[1m]))", "format": "time_series", "hide": false, "instant": false, "interval": "", "legendFormat": "CPU time", "refId": "C" } ], "title": "Stateres worst-case", "type": "timeseries" } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Event persistence", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 28 }, "id": 57, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 2, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 29 }, "hiddenSeries": false, "id": 4, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_http_server_requests_received_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [ { "$$hashKey": "object:234", "colorMode": "custom", "fill": true, "fillColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 100, "yaxis": "left" }, { "$$hashKey": "object:235", "colorMode": "custom", "fill": true, "fillColor": "rgba(234, 112, 112, 0.22)", "op": "gt", "value": 250, "yaxis": "left" } ], "timeRegions": [], "title": "Request Count by arrival time", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:206", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:207", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 29 }, "hiddenSeries": false, "id": 32, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_http_server_requests_received_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\",method!=\"OPTIONS\"}[$bucket_size]) and topk(10,synapse_http_server_requests_received_total{instance=\"$instance\",job=~\"$job\",method!=\"OPTIONS\"})", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{method}} {{servlet}} {{job}}-{{index}}", "refId": "A", "step": 20, "target": "" } ], "thresholds": [], "timeRegions": [], "title": "Top 10 Request Counts", "tooltip": { "shared": false, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:305", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:306", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 2, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 37 }, "hiddenSeries": false, "id": 139, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_http_server_in_flight_requests_ru_utime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_http_server_in_flight_requests_ru_stime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [ { "$$hashKey": "object:135", "colorMode": "custom", "fill": true, "fillColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 100, "yaxis": "left" }, { "$$hashKey": "object:136", "colorMode": "custom", "fill": true, "fillColor": "rgba(234, 112, 112, 0.22)", "op": "gt", "value": 250, "yaxis": "left" } ], "timeRegions": [], "title": "Total CPU Usage by Endpoint", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:107", "format": "percentunit", "logBase": 1, "show": true }, { "$$hashKey": "object:108", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 37 }, "hiddenSeries": false, "id": 52, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "(rate(synapse_http_server_in_flight_requests_ru_utime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_http_server_in_flight_requests_ru_stime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) / rate(synapse_http_server_requests_received_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [ { "$$hashKey": "object:417", "colorMode": "custom", "fill": true, "fillColor": "rgba(216, 200, 27, 0.27)", "op": "gt", "value": 100, "yaxis": "left" }, { "$$hashKey": "object:418", "colorMode": "custom", "fill": true, "fillColor": "rgba(234, 112, 112, 0.22)", "op": "gt", "value": 250, "yaxis": "left" } ], "timeRegions": [], "title": "Average CPU Usage by Endpoint", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:389", "format": "s", "logBase": 1, "show": true }, { "$$hashKey": "object:390", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 45 }, "hiddenSeries": false, "id": 7, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_http_server_in_flight_requests_db_txn_duration_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}} {{tag}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "DB Usage by endpoint", "tooltip": { "shared": false, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:488", "format": "percentunit", "logBase": 1, "show": true }, { "$$hashKey": "object:489", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 2, "fillGradient": 0, "grid": {}, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 45 }, "hiddenSeries": false, "id": 47, "legend": { "alignAsTable": true, "avg": true, "current": false, "hideEmpty": false, "hideZero": true, "max": true, "min": false, "rightSide": false, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "(sum(rate(synapse_http_server_response_time_seconds_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\",tag!=\"incremental_sync\"}[$bucket_size])) without (code))/(sum(rate(synapse_http_server_response_time_seconds_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\",tag!=\"incremental_sync\"}[$bucket_size])) without (code))", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Non-sync avg response time", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 53 }, "hiddenSeries": false, "id": 103, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Total", "color": "rgb(255, 255, 255)", "fill": 0, "linewidth": 3 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "topk(10,synapse_http_server_in_flight_requests_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"})", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{method}} {{servlet}}", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(avg_over_time(synapse_http_server_in_flight_requests_count{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "interval": "", "legendFormat": "Total", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Requests in flight", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Requests", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 29 }, "id": 97, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 30 }, "hiddenSeries": false, "id": 99, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_background_process_ru_utime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])+rate(synapse_background_process_ru_stime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "CPU usage by background jobs", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 30 }, "hiddenSeries": false, "id": 101, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_background_process_db_txn_duration_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) + rate(synapse_background_process_db_sched_duration_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "hide": false, "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "DB usage by background jobs (including scheduling time)", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 39 }, "hiddenSeries": false, "id": 138, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_background_process_in_flight_count{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Background jobs in flight", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Background jobs", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 30 }, "id": 81, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 31 }, "hiddenSeries": false, "id": 79, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_federation_client_sent_transactions_total{instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "successful txn rate", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_util_metrics_block_count_total{block_name=\"_send_new_transaction\",instance=\"$instance\"}[$bucket_size]) - ignoring (block_name) rate(synapse_federation_client_sent_transactions_total{instance=\"$instance\"}[$bucket_size]))", "legendFormat": "failed txn rate", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Outgoing federation transaction rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 31 }, "hiddenSeries": false, "id": 83, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_federation_server_received_pdus_total{instance=~\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "pdus", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_federation_server_received_edus_total{instance=~\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "edus", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Incoming PDU/EDU rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 40 }, "hiddenSeries": false, "id": 109, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(synapse_federation_client_sent_pdu_destinations_count_total{instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "pdus", "range": true, "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_federation_client_sent_edus_total{instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "edus", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Outgoing PDU/EDU rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 40 }, "hiddenSeries": false, "id": 111, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_federation_client_sent_edus_by_type_total{instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{type}}", "range": true, "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Outgoing EDUs by type", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:462", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:463", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "Triangular growth may indicate a problem with federation sending from the remote host --- but it may also be the case that everyone is asleep and no messages are being sent.\n\nSee https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_metrics_domains", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 60, "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "line" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 60 } ] }, "unit": "m" }, "overrides": [ { "__systemRef": "hideSeriesFrom", "matcher": { "id": "byNames", "options": { "mode": "exclude", "names": [ "libera.chat " ], "prefix": "All except:", "readOnly": true } }, "properties": [ { "id": "custom.hideFrom", "value": { "legend": false, "tooltip": false, "viz": true } } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 49 }, "id": 243, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "exemplar": false, "expr": "(time() - max without (job, index, host) (avg_over_time(synapse_federation_last_received_pdu_time[10m]))) / 60", "instant": false, "legendFormat": "{{server_name}} ", "range": true, "refId": "A" } ], "title": "Age of last PDU received from nominated hosts", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "Triangular growth may indicate a problem with federation senders on the monitored instance---but it may also be the case that everyone is asleep and no messages are being sent.\n\nSee https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_metrics_domains", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 60, "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "line" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 60 } ] }, "unit": "m" }, "overrides": [ { "__systemRef": "hideSeriesFrom", "matcher": { "id": "byNames", "options": { "mode": "exclude", "names": [ "libera.chat" ], "prefix": "All except:", "readOnly": true } }, "properties": [ { "id": "custom.hideFrom", "value": { "legend": false, "tooltip": false, "viz": true } } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 49 }, "id": 241, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "exemplar": false, "expr": "(time() - max without (job, index, host) (avg_over_time(synapse_federation_last_sent_pdu_time[10m]))) / 60", "instant": false, "legendFormat": "{{server_name}}", "range": true, "refId": "A" } ], "title": "Age of last PDU sent to nominated hosts", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "The number of events in the in-memory queues ", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 57 }, "hiddenSeries": false, "id": 142, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "synapse_federation_transaction_queue_pending_pdus{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "pending PDUs {{job}}-{{index}}", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_federation_transaction_queue_pending_edus{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "pending EDUs {{job}}-{{index}}", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "In-memory federation transmission queues", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:547", "format": "short", "label": "events", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:548", "format": "short", "label": "", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "Number of events queued up on the master process for processing by the federation sender", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 57 }, "hiddenSeries": false, "id": 140, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_federation_send_queue_presence_changed_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "presence changed", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_federation_send_queue_presence_map_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "presence map", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_federation_send_queue_presence_destinations_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "presence destinations", "refId": "E" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_federation_send_queue_keyed_edu_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "keyed edus", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_federation_send_queue_edus_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "other edus", "refId": "D" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_federation_send_queue_pos_time_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "stream positions", "refId": "F" } ], "thresholds": [], "timeRegions": [], "title": "Outgoing EDU queues on master", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "none", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "cards": { "cardPadding": -1 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 66 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 166, "legend": { "show": false }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": -1, "cellValues": { "decimals": 2 }, "color": { "exponent": 0.5, "fill": "#b4ff00", "min": 0, "mode": "scheme", "reverse": false, "scale": "exponential", "scheme": "Inferno", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": false }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "decimals": 0, "reverse": false, "unit": "s" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_event_processing_lag_by_event_bucket{instance=\"$instance\",name=\"federation_sender\"}[$bucket_size])) by (le)", "format": "heatmap", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{ le }}", "refId": "A" } ], "title": "Federation send PDU lag", "tooltip": { "show": true, "showHistogram": true }, "tooltipDecimals": 2, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "decimals": 0, "format": "s", "logBase": 1, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 66 }, "hiddenSeries": false, "id": 162, "legend": { "avg": false, "current": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 0, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Avg", "fill": 0, "linewidth": 3 }, { "alias": "99%", "color": "#C4162A", "fillBelowTo": "90%" }, { "alias": "90%", "color": "#FF7383", "fillBelowTo": "75%" }, { "alias": "75%", "color": "#FFEE52", "fillBelowTo": "50%" }, { "alias": "50%", "color": "#73BF69", "fillBelowTo": "25%" }, { "alias": "25%", "color": "#1F60C4", "fillBelowTo": "5%" }, { "alias": "5%", "lines": false }, { "alias": "Average", "color": "rgb(255, 255, 255)", "lines": true, "linewidth": 3 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.99, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.9, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "90%", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.75, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "75%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.5, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "50%", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.25, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "interval": "", "legendFormat": "25%", "refId": "F" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.05, sum(rate(synapse_event_processing_lag_by_event_bucket{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "interval": "", "legendFormat": "5%", "refId": "G" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_event_processing_lag_by_event_sum{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size])) / sum(rate(synapse_event_processing_lag_by_event_count{name='federation_sender',index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "interval": "", "legendFormat": "Average", "refId": "H" } ], "thresholds": [ { "colorMode": "warning", "fill": false, "line": true, "op": "gt", "value": 0.25, "yaxis": "left" }, { "colorMode": "critical", "fill": false, "line": true, "op": "gt", "value": 1, "yaxis": "left" } ], "timeRegions": [], "title": "Federation send PDU lag quantiles", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "s", "label": "", "logBase": 1, "min": "0", "show": true }, { "format": "hertz", "label": "", "logBase": 1, "min": "0", "show": true } ], "yaxis": { "align": false } }, { "cards": { "cardPadding": -1 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 75 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 164, "legend": { "show": false }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": -1, "cellValues": { "decimals": 2 }, "color": { "exponent": 0.5, "fill": "#b4ff00", "min": 0, "mode": "scheme", "reverse": false, "scale": "exponential", "scheme": "Inferno", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": false }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "decimals": 0, "reverse": false, "unit": "s" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_federation_server_pdu_process_time_bucket{instance=\"$instance\"}[$bucket_size])) by (le)", "format": "heatmap", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{ le }}", "refId": "A" } ], "title": "Handle inbound PDU time", "tooltip": { "show": true, "showHistogram": true }, "tooltipDecimals": 2, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "decimals": 0, "format": "s", "logBase": 1, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 75 }, "hiddenSeries": false, "id": 203, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "synapse_federation_server_oldest_inbound_pdu_in_staging{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}}", "range": true, "refId": "A", "step": 4 } ], "thresholds": [], "timeRegions": [], "title": "Age of oldest event in staging area", "tooltip": { "msResolution": false, "shared": true, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:92", "format": "ms", "logBase": 1, "min": 0, "show": true }, { "$$hashKey": "object:93", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 84 }, "hiddenSeries": false, "id": 202, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "synapse_federation_server_number_inbound_pdu_in_staging{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}}", "range": true, "refId": "A", "step": 4 } ], "thresholds": [], "timeRegions": [], "title": "Number of events in federation staging area", "tooltip": { "msResolution": false, "shared": true, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:92", "format": "none", "logBase": 1, "min": 0, "show": true }, { "$$hashKey": "object:93", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 84 }, "hiddenSeries": false, "id": 205, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_federation_soft_failed_events_total{instance=\"$instance\"}[$bucket_size]))", "interval": "", "legendFormat": "soft-failed events", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Soft-failed event rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:131", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:132", "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Federation", "type": "row" }, { "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 31 }, "id": 227, "panels": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 154 }, "id": 239, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum(increase(synapse_rate_limit_reject_total{instance=\"$instance\"}[$bucket_size]))", "refId": "A" } ], "title": "Number of rate limit rejected requests", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 154 }, "id": 235, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum(increase(synapse_rate_limit_sleep_total{instance=\"$instance\"}[$bucket_size]))", "refId": "A" } ], "title": "Number of requests being slept by the rate limiter", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "Why is the data zero (0)? https://github.com/matrix-org/synapse/pull/13541#discussion_r951926322", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 162 }, "id": 237, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.4", "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum(increase(synapse_rate_limit_reject_affected_hosts{instance=\"$instance\"}[$bucket_size]))", "refId": "A" } ], "title": "Number of hosts being rejected by the rate limiter", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "https://github.com/matrix-org/synapse/pull/13541", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 162 }, "id": 233, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.4", "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum(increase(synapse_rate_limit_sleep_affected_hosts{instance=\"$instance\"}[$bucket_size]))", "refId": "A" } ], "title": "Number of hosts being slept by the rate limiter", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 170 }, "hiddenSeries": false, "id": 229, "legend": { "avg": false, "current": false, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 0, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "$$hashKey": "object:276", "alias": "Avg", "fill": 0, "linewidth": 3 }, { "$$hashKey": "object:277", "alias": "99%", "color": "#C4162A", "fillBelowTo": "90%" }, { "$$hashKey": "object:278", "alias": "90%", "color": "#FF7383", "fillBelowTo": "75%" }, { "$$hashKey": "object:279", "alias": "75%", "color": "#FFEE52", "fillBelowTo": "50%" }, { "$$hashKey": "object:280", "alias": "50%", "color": "#73BF69", "fillBelowTo": "25%" }, { "$$hashKey": "object:281", "alias": "25%", "color": "#1F60C4", "fillBelowTo": "5%" }, { "$$hashKey": "object:282", "alias": "5%", "lines": false }, { "$$hashKey": "object:283", "alias": "Average", "color": "rgb(255, 255, 255)", "lines": true, "linewidth": 3 }, { "$$hashKey": "object:284", "alias": ">99%", "color": "#B877D9", "fill": 3, "lines": true } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.9995, sum(rate(synapse_rate_limit_queue_wait_time_seconds_bucket{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "hide": false, "intervalFactor": 1, "legendFormat": ">99%", "range": true, "refId": "E" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.99, sum(rate(synapse_rate_limit_queue_wait_time_seconds_bucket{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "range": true, "refId": "D" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.9, sum(rate(synapse_rate_limit_queue_wait_time_seconds_bucket{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "90%", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.75, sum(rate(synapse_rate_limit_queue_wait_time_seconds_bucket{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.5, sum(rate(synapse_rate_limit_queue_wait_time_seconds_bucket{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.25, sum(rate(synapse_rate_limit_queue_wait_time_seconds_bucket{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "legendFormat": "25%", "refId": "F" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.05, sum(rate(synapse_rate_limit_queue_wait_time_seconds_bucket{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) by (le))", "legendFormat": "5%", "refId": "G" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_rate_limit_queue_wait_time_seconds_sum{index=~\"$index\",instance=\"$instance\"}[$bucket_size])) / sum(rate(synapse_rate_limit_queue_wait_time_seconds_count{index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "legendFormat": "Average", "refId": "H" } ], "thresholds": [ { "$$hashKey": "object:283", "colorMode": "warning", "fill": false, "line": true, "op": "gt", "value": 1, "yaxis": "left" }, { "$$hashKey": "object:284", "colorMode": "critical", "fill": false, "line": true, "op": "gt", "value": 2, "yaxis": "left" } ], "timeRegions": [], "title": "Rate limit queue wait time Quantiles (all workers)", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:255", "format": "s", "label": "", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:256", "format": "hertz", "label": "", "logBase": 1, "min": "0", "show": true } ], "yaxis": { "align": false } }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "line" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" } ] }, "unit": "hertz" }, "overrides": [ { "matcher": { "id": "byName", "options": "Default reject threshold (50 requests within a second)" }, "properties": [ { "id": "color", "value": { "fixedColor": "red", "mode": "fixed" } }, { "id": "custom.lineWidth", "value": 2 } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 170 }, "id": 231, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_rate_limit_sleep_total{instance=\"$instance\"}[$bucket_size]))", "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "50", "hide": false, "legendFormat": "Default reject threshold (50 requests within a second)", "range": true, "refId": "B" } ], "title": "Rate of requests being slept by the rate limiter", "type": "timeseries" } ], "title": "Federation rate limiter", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 32 }, "id": 60, "panels": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "links": [], "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "hertz" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 155 }, "id": 51, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "none" } }, "pluginVersion": "9.2.2", "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_http_httppusher_http_pushes_processed_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) and on (instance, job, index) (synapse_http_httppusher_http_pushes_failed_total + synapse_http_httppusher_http_pushes_processed_total) > 0", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "processed {{job}}-{{index}}", "range": true, "refId": "A", "step": 20 }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_http_httppusher_http_pushes_failed_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) and on (instance, job, index) (synapse_http_httppusher_http_pushes_failed_total + synapse_http_httppusher_http_pushes_processed_total) > 0", "format": "time_series", "intervalFactor": 2, "legendFormat": "failed {{job}}-{{index}}", "range": true, "refId": "B", "step": 20 } ], "title": "HTTP Push rate", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 155 }, "hiddenSeries": false, "id": 134, "legend": { "avg": false, "current": false, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "topk(10,synapse_pushers{job=~\"$job\",index=~\"$index\", instance=\"$instance\"})", "legendFormat": "{{kind}} {{app_id}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Active pusher instances by app", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Pushes", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 33 }, "id": 219, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "How many entries in current state that we are iterating over while calculating push rules.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 33 }, "hiddenSeries": false, "id": 209, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "8.4.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_push_bulk_push_rule_evaluator_push_rules_state_size_counter_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{index}}", "metric": "synapse_push_bulk_push_rule_evaluator_push_rules_state_size_counter_total", "refId": "A", "step": 2 } ], "thresholds": [], "timeRegions": [], "title": "Iterations over State", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": "", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "Rate that the cached push rules for a room get invalidated due to underlying push rules being changed. ", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 33 }, "hiddenSeries": false, "id": 211, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "8.4.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{index}}", "metric": "synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter_total", "refId": "A", "step": 2 } ], "thresholds": [], "timeRegions": [], "title": "Push Rule Invalidations", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": "", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "How often the \"delta optimisation\" happens.\n\nThe delta optimisation is when we update the push rules for a room incrementally after a state change where we know the delta between the old state and the new state.\n\nThis can't happen if we don't the delta or we're calculating push rules from scratch.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 40 }, "hiddenSeries": false, "id": 213, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "8.4.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Number of calls", "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_util_caches_cache_hits{job=\"$job\",index=~\"$index\",name=\"push_rules_delta_state_cache_metric\",instance=\"$instance\"}[$bucket_size]))/sum(rate(synapse_util_caches_cache{job=\"$job\",index=~\"$index\", name=\"push_rules_delta_state_cache_metric\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "Hit Rate", "metric": "synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter_total", "refId": "A", "step": 2 }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_util_caches_cache{job=\"$job\",index=~\"$index\", name=\"push_rules_delta_state_cache_metric\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "Number of calls", "refId": "B", "step": 2 } ], "thresholds": [], "timeRegions": [], "title": "Delta Optimisation", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "label": "", "logBase": 1, "max": "1", "min": "0", "show": true }, { "format": "hertz", "label": "", "logBase": 1, "min": "0", "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "How often we have the correct cached push rules for a room.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 40 }, "hiddenSeries": false, "id": 215, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "8.4.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Number of calls", "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_util_caches_cache_hits{job=\"$job\",index=~\"$index\",name=\"room_push_rule_cache\",instance=\"$instance\"}[$bucket_size]))/sum(rate(synapse_util_caches_cache{job=\"$job\",index=~\"$index\", name=\"room_push_rule_cache\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "Hit Rate", "metric": "synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter_total", "refId": "A", "step": 2 }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_util_caches_cache{job=\"$job\",index=~\"$index\", name=\"room_push_rule_cache\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "Number of calls", "refId": "B", "step": 2 } ], "thresholds": [], "timeRegions": [], "title": "How often we reuse existing calculated push rules", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "label": "", "logBase": 1, "max": "1", "min": "0", "show": true }, { "format": "hertz", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "How often we have existing cached push rules for the room. \n\nNote that these might be outdated and need to be recalculated if the state has changed.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 47 }, "hiddenSeries": false, "id": 217, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "8.4.3", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Number of calls", "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_util_caches_cache_hits{job=\"$job\",index=~\"$index\",name=\"_get_rules_for_room\",instance=\"$instance\"}[$bucket_size]))/sum(rate(synapse_util_caches_cache{job=\"$job\",index=~\"$index\", name=\"_get_rules_for_room\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "Hit Rate", "metric": "synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter_total", "refId": "A", "step": 2 }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum(rate(synapse_util_caches_cache{job=\"$job\",index=~\"$index\", name=\"_get_rules_for_room\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "Number of calls", "refId": "B", "step": 2 } ], "thresholds": [], "timeRegions": [], "title": "How often we have the RulesForRoom cached", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "label": "", "logBase": 1, "max": "1", "min": "0", "show": true }, { "format": "hertz", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Push Rule Cache", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 34 }, "id": 58, "panels": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "links": [], "mappings": [], "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "s" }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 35 }, "id": 48, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "9.0.4", "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_schedule_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(synapse_storage_schedule_time_count[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}}", "refId": "A", "step": 20 } ], "title": "Avg time waiting for db conn", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "Shows the time in which the given percentage of database queries were scheduled, over the sampled timespan", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 35 }, "hiddenSeries": false, "id": 104, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.99, rate(synapse_storage_schedule_time_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "hide": false, "intervalFactor": 1, "legendFormat": "{{job}} {{index}} 99%", "refId": "A", "step": 20 }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.95, rate(synapse_storage_schedule_time_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}} {{index}} 95%", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.90, rate(synapse_storage_schedule_time_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}} {{index}} 90%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_schedule_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(synapse_storage_schedule_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}} {{index}} mean", "refId": "D" } ], "thresholds": [], "timeRegions": [], "title": "Db scheduling time quantiles", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "s", "label": "", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 42 }, "hiddenSeries": false, "id": 10, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "topk(10, rate(synapse_storage_transaction_time_count_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{desc}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Top DB transactions by txn rate", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "min": 0, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 42 }, "hiddenSeries": false, "id": 11, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_transaction_time_sum_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{desc}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "DB transactions by total txn time", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 49 }, "hiddenSeries": false, "id": 180, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": true, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": false }, "paceLength": 10, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_transaction_time_sum_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(synapse_storage_transaction_time_count_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{desc}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Average DB txn time", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 6, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 49 }, "hiddenSeries": false, "id": 200, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.99, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.9, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "90%", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.75, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.5, sum(rate(synapse_storage_schedule_time_bucket{index=~\"$index\",instance=\"$instance\",job=\"$job\"}[$bucket_size])) by (le))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Time waiting for DB connection quantiles", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:203", "format": "s", "label": "", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:204", "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Database", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 35 }, "id": 59, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 0, "y": 158 }, "hiddenSeries": false, "id": 12, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_metrics_block_ru_utime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\",block_name!=\"wrapped_request_handler\"}[$bucket_size]) + rate(synapse_util_metrics_block_ru_stime_seconds_total[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Total CPU Usage by Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 158 }, "hiddenSeries": false, "id": 26, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "(rate(synapse_util_metrics_block_ru_utime_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) + rate(synapse_util_metrics_block_ru_stime_seconds_total[$bucket_size])) / rate(synapse_util_metrics_block_count_total[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Average CPU Time per Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "ms", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 0, "y": 171 }, "hiddenSeries": false, "id": 13, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "rate(synapse_util_metrics_block_db_txn_duration_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Total DB Usage by Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:196", "format": "percentunit", "logBase": 1, "min": 0, "show": true }, { "$$hashKey": "object:197", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "The time each database transaction takes to execute, on average, broken down by metrics block.", "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 171 }, "hiddenSeries": false, "id": 27, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_metrics_block_db_txn_duration_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) / rate(synapse_util_metrics_block_db_txn_count_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Average Database Transaction time, by Block", "tooltip": { "shared": true, "sort": 2, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "ms", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 0, "y": 184 }, "hiddenSeries": false, "id": 28, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_metrics_block_db_txn_duration_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) / rate(synapse_util_metrics_block_db_txn_count_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Average Transactions per Block", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "none", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 184 }, "hiddenSeries": false, "id": 25, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": false, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_metrics_block_time_seconds_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]) / rate(synapse_util_metrics_block_count_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Average Wallclock Time per Block", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:180", "format": "s", "logBase": 1, "show": true }, { "$$hashKey": "object:181", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 15, "w": 12, "x": 0, "y": 197 }, "hiddenSeries": false, "id": 154, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_metrics_block_count_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "interval": "", "legendFormat": "{{job}}-{{index}} {{block_name}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Block count", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Per-block metrics", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 36 }, "id": 61, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "decimals": 2, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "grid": {}, "gridPos": { "h": 10, "w": 12, "x": 0, "y": 36 }, "hiddenSeries": false, "id": 1, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": true, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_caches_cache_hits{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])/rate(synapse_util_caches_cache{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Cache Hit Ratio", "tooltip": { "msResolution": true, "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "label": "", "logBase": 1, "max": "1", "min": 0, "show": true }, { "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 10, "w": 12, "x": 12, "y": 36 }, "hiddenSeries": false, "id": 8, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_util_caches_cache_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Cache Size", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "min": 0, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "editable": true, "error": false, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 10, "w": 12, "x": 0, "y": 46 }, "hiddenSeries": false, "id": 38, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_caches_cache{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Cache request rate", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "rps", "logBase": 1, "min": 0, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 10, "w": 12, "x": 12, "y": 46 }, "hiddenSeries": false, "id": 39, "legend": { "alignAsTable": true, "avg": false, "current": false, "hideEmpty": false, "hideZero": false, "max": true, "min": false, "rightSide": false, "show": true, "sort": "max", "sortDesc": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "topk(10, rate(synapse_util_caches_cache{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]) - rate(synapse_util_caches_cache_hits{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Top 10 cache misses", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:101", "format": "rps", "logBase": 1, "show": true }, { "$$hashKey": "object:102", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 56 }, "hiddenSeries": false, "id": 65, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.0.4", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_caches_cache_evicted_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{name}} ({{reason}}) {{job}}-{{index}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Cache eviction rate", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "label": "entries / second", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Caches", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 37 }, "id": 148, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 29 }, "hiddenSeries": false, "id": 146, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_util_caches_response_cache_size{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Response cache size", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 29 }, "hiddenSeries": false, "id": 150, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_util_caches_response_cache_hits{instance=\"$instance\", job=~\"$job\", index=~\"$index\"}[$bucket_size])/rate(synapse_util_caches_response_cache{instance=\"$instance\", job=~\"$job\", index=~\"$index\"}[$bucket_size])", "interval": "", "legendFormat": "{{name}} {{job}}-{{index}}", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "", "interval": "", "legendFormat": "", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Response cache hit rate", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "max": "1", "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Response caches", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 38 }, "id": 62, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 30 }, "hiddenSeries": false, "id": 91, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": true, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(python_gc_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[10m])", "format": "time_series", "instant": false, "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Total GC time by bucket (10m smoothing)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "percentunit", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "decimals": 3, "editable": true, "error": false, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "grid": {}, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 30 }, "hiddenSeries": false, "id": 21, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null as zero", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(python_gc_time_sum{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(python_gc_time_count[$bucket_size])", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}} {{index}} gen {{gen}} ", "refId": "A", "step": 20, "target": "" } ], "thresholds": [], "timeRegions": [], "title": "Average GC Time Per Collection", "tooltip": { "shared": false, "sort": 0, "value_type": "cumulative" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "s", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "'gen 0' shows the number of objects allocated since the last gen0 GC.\n'gen 1' / 'gen 2' show the number of gen0/gen1 GCs since the last gen1/gen2 GC.", "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 39 }, "hiddenSeries": false, "id": 89, "legend": { "avg": false, "current": false, "hideEmpty": true, "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "/gen 0$/", "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "python_gc_counts{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Allocation counts", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Gen N-1 GCs since last Gen N GC", "logBase": 1, "show": true }, { "format": "short", "label": "Objects since last Gen 0 GC", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 39 }, "hiddenSeries": false, "id": 93, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(python_gc_unreachable_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/rate(python_gc_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Object counts per collection", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": {}, "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 48 }, "hiddenSeries": false, "id": 95, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(python_gc_time_count{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} gen {{gen}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "GC frequency", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "cards": { "cardPadding": 0 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateSpectral", "exponent": 0.5, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 48 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 87, "legend": { "show": true }, "links": [], "reverseYBuckets": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(python_gc_time_bucket[$bucket_size])) by (le)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "GC durations", "tooltip": { "show": true, "showHistogram": false }, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "format": "s", "logBase": 1, "show": true }, "yBucketBound": "auto" } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "GC", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 39 }, "id": 63, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 162 }, "hiddenSeries": false, "id": 43, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum (rate(synapse_replication_tcp_protocol_outbound_commands_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (name, conn_id)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{command}}", "refId": "A", "step": 20 } ], "thresholds": [], "timeRegions": [], "title": "Rate of outgoing commands", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:89", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:90", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "links": [], "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "hertz" }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 162 }, "id": 41, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "8.4.3", "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "rate(synapse_replication_tcp_resource_stream_updates_total{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{stream_name}}", "refId": "A", "step": 20 } ], "title": "Rate of outgoing RDATA commands, by stream", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "links": [], "mappings": [], "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "hertz" }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 169 }, "id": 42, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "8.4.3", "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "sum (rate(synapse_replication_tcp_protocol_inbound_commands_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])) without (name, conn_id)", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{job}}-{{index}} {{command}}", "refId": "A", "step": 20 } ], "title": "Rate of incoming commands (including echoes)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "axisSoftMin": 1, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "links": [], "mappings": [], "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "hertz" }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 169 }, "id": 220, "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "8.4.3", "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "exemplar": true, "expr": "rate(synapse_replication_tcp_protocol_inbound_rdata_count_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{stream_name}}", "refId": "A", "step": 20 } ], "title": "Rate of incoming RDATA commands (excluding echoes), by stream", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 176 }, "hiddenSeries": false, "id": 144, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_replication_tcp_command_queue{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "interval": "", "legendFormat": "{{stream_name}} {{job}}-{{index}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Queued incoming RDATA commands, by stream", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:218", "format": "short", "logBase": 1, "show": true }, { "$$hashKey": "object:219", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 176 }, "hiddenSeries": false, "id": 115, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_replication_tcp_protocol_close_reason_total{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{reason_type}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Replication connection close reasons", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:260", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:261", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 183 }, "hiddenSeries": false, "id": 113, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_replication_tcp_resource_connections_per_stream{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{stream_name}}", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_replication_tcp_resource_total_connections{job=~\"$job\",index=~\"$index\",instance=\"$instance\"}", "format": "time_series", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}}", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Replication connections", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Replication", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 40 }, "id": 69, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 163 }, "hiddenSeries": false, "id": 67, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "max(synapse_event_persisted_position{instance=\"$instance\"}) - on() group_right() synapse_event_processing_positions{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Event processing lag", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "events", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 163 }, "hiddenSeries": false, "id": 71, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "time()*1000-synapse_event_processing_last_ts{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Age of last processed event", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "ms", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 172 }, "hiddenSeries": false, "id": 121, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "paceLength": 10, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "deriv(synapse_event_processing_last_ts{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])/1000 - 1", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{job}}-{{index}} {{name}}", "refId": "B" } ], "thresholds": [], "timeRegions": [], "title": "Event processing catchup rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "none", "label": "fallbehind(-) / catchup(+): s/sec", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Event processing loop positions", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 41 }, "id": 126, "panels": [ { "cards": { "cardPadding": 0 }, "color": { "cardColor": "#B877D9", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "Colour reflects the number of rooms with the given number of forward extremities, or fewer.\n\nThis is only updated once an hour.", "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 42 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 122, "legend": { "show": true }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": 1, "cellValues": {}, "color": { "exponent": 0.5, "fill": "#B877D9", "min": 0, "mode": "opacity", "reverse": false, "scale": "exponential", "scheme": "Oranges", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": true }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "decimals": 0, "reverse": false, "unit": "short" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_forward_extremities_bucket{instance=\"$instance\"} and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Number of rooms, by number of forward extremities in room", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "Number of rooms with the given number of forward extremities or fewer.\n\nThis is only updated once an hour.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 42 }, "hiddenSeries": false, "id": 124, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_forward_extremities_bucket{instance=\"$instance\"} > 0", "format": "heatmap", "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Room counts, by number of extremities", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "none", "label": "Number of rooms", "logBase": 10, "show": true }, { "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } }, { "cards": { "cardPadding": 0 }, "color": { "cardColor": "#5794F2", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "Colour reflects the number of events persisted to rooms with the given number of forward extremities, or fewer.", "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 50 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 127, "legend": { "show": true }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": 1, "cellValues": {}, "color": { "exponent": 0.5, "fill": "#5794F2", "min": 0, "mode": "opacity", "reverse": false, "scale": "exponential", "scheme": "Oranges", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": true }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "decimals": 0, "reverse": false, "unit": "short" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Events persisted, by number of forward extremities in room (heatmap)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "For a given percentage P, the number X where P% of events were persisted to rooms with X forward extremities or fewer.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 50 }, "hiddenSeries": false, "id": 128, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.5, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.75, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.90, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "90%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.99, rate(synapse_storage_events_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" } ], "thresholds": [], "timeRegions": [], "title": "Events persisted, by number of forward extremities in room (quantiles)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Number of extremities in room", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "cards": { "cardPadding": 0 }, "color": { "cardColor": "#FF9830", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "Colour reflects the number of events persisted to rooms with the given number of stale forward extremities, or fewer.\n\nStale forward extremities are those that were in the previous set of extremities as well as the new.", "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 58 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 129, "legend": { "show": true }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": 1, "cellValues": {}, "color": { "exponent": 0.5, "fill": "#FF9830", "min": 0, "mode": "opacity", "reverse": false, "scale": "exponential", "scheme": "Oranges", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": true }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "decimals": 0, "reverse": false, "unit": "short" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0)", "format": "heatmap", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Events persisted, by number of stale forward extremities in room (heatmap)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "For given percentage P, the number X where P% of events were persisted to rooms with X stale forward extremities or fewer.\n\nStale forward extremities are those that were in the previous set of extremities as well as the new.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 58 }, "hiddenSeries": false, "id": 130, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.5, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "50%", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.75, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "75%", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.90, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "90%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.99, rate(synapse_storage_events_stale_forward_extremities_persisted_bucket{instance=\"$instance\"}[$bucket_size]) and on (index, instance, job) (synapse_storage_events_persisted_events_total > 0))", "format": "time_series", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" } ], "thresholds": [], "timeRegions": [], "title": "Events persisted, by number of stale forward extremities in room (quantiles)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Number of stale forward extremities in room", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "cards": { "cardPadding": 0 }, "color": { "cardColor": "#73BF69", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "opacity" }, "dataFormat": "tsbuckets", "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "Colour reflects the number of state resolution operations performed over the given number of state groups, or fewer.", "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 66 }, "heatmap": {}, "hideZeroBuckets": true, "highlightCards": true, "id": 131, "legend": { "show": true }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": 1, "cellValues": {}, "color": { "exponent": 0.5, "fill": "#73BF69", "min": 0, "mode": "opacity", "reverse": false, "scale": "exponential", "scheme": "Oranges", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": true }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "decimals": 0, "reverse": false, "unit": "short" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size])", "format": "heatmap", "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "Number of state resolution performed, by number of state groups involved (heatmap)", "tooltip": { "show": true, "showHistogram": true }, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "decimals": 0, "format": "short", "logBase": 1, "show": true }, "yBucketBound": "auto" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "For a given percentage P, the number X where P% of state resolution operations took place over X state groups or fewer.", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 66 }, "hiddenSeries": false, "id": 132, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.5, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "50%", "range": true, "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.75, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "75%", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.90, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "90%", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "histogram_quantile(0.99, rate(synapse_state_number_state_groups_in_resolution_bucket{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "99%", "refId": "D" } ], "thresholds": [], "timeRegions": [], "title": "Number of state resolutions performed, by number of state groups involved (quantiles)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": "Number of state groups", "logBase": 1, "min": "0", "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "description": "When we do a state res while persisting events we try and see if we can prune any stale extremities.", "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 74 }, "hiddenSeries": false, "id": 179, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_storage_events_state_resolutions_during_persistence_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "interval": "", "legendFormat": "State res ", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_storage_events_potential_times_prune_extremities_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "interval": "", "legendFormat": "Potential to prune", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_storage_events_times_pruned_extremities_total{instance=\"$instance\",job=~\"$job\",index=~\"$index\"}[$bucket_size]))", "interval": "", "legendFormat": "Pruned", "refId": "C" } ], "thresholds": [], "timeRegions": [], "title": "Stale extremity dropping", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Extremities", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 42 }, "id": 158, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 43 }, "hiddenSeries": false, "id": 156, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [ { "$$hashKey": "object:632", "alias": "Max", "color": "#bf1b00", "fill": 0, "linewidth": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "max(synapse_admin_mau_max{instance=\"$instance\"})", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "Max", "range": true, "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "max(synapse_admin_mau_current{instance=\"$instance\"})", "hide": false, "legendFormat": "Current", "range": true, "refId": "C" } ], "thresholds": [], "timeRegions": [], "title": "MAU Limits", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:176", "format": "short", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:177", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 43 }, "hiddenSeries": false, "id": 160, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "synapse_admin_mau_current_mau_by_service{instance=\"$instance\"}", "interval": "", "legendFormat": "{{ app_service }}", "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "MAU by Appservice", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "MAU", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 43 }, "id": 177, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 44 }, "hiddenSeries": false, "id": 173, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_notifier_users_woken_by_stream_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "hide": false, "intervalFactor": 2, "legendFormat": "{{stream}} {{index}}", "metric": "synapse_notifier", "range": true, "refId": "A", "step": 2 } ], "thresholds": [], "timeRegions": [], "title": "Notifier Streams Woken", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:734", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:735", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 44 }, "hiddenSeries": false, "id": 175, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_handler_presence_get_updates_total{job=~\"$job\",instance=\"$instance\"}[$bucket_size])", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{type}} {{index}}", "range": true, "refId": "A", "step": 2 } ], "thresholds": [], "timeRegions": [], "title": "Presence Stream Fetch Type Rates", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:819", "format": "hertz", "logBase": 1, "min": "0", "show": true }, { "$$hashKey": "object:820", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Notifier", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 44 }, "id": 170, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 45 }, "hiddenSeries": false, "id": 168, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_appservice_api_sent_events_total{instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{service}}", "range": true, "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Sent Events rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:177", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:178", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 45 }, "hiddenSeries": false, "id": 171, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_appservice_api_sent_transactions_total{instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{exported_service }} {{ service }}", "range": true, "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Transactions rate", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:260", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:261", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Appservices", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 45 }, "id": 188, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 46 }, "hiddenSeries": false, "id": 182, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_handler_presence_notified_presence_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Notified", "refId": "A" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_handler_presence_federation_presence_out_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Remote ping", "refId": "B" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_handler_presence_presence_updates_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Total updates", "refId": "C" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_handler_presence_federation_presence_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Remote updates", "refId": "D" }, { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "rate(synapse_handler_presence_bump_active_time_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "Bump active time", "refId": "E" } ], "thresholds": [], "timeRegions": [], "title": "Presence", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "format": "hertz", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 46 }, "hiddenSeries": false, "id": 184, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_handler_presence_state_transition_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{from}} -> {{to}}", "range": true, "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Presence state transitions", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:1090", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:1091", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 54 }, "hiddenSeries": false, "id": 186, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_handler_presence_notify_reason_total{job=\"$job\",index=~\"$index\",instance=\"$instance\"}[$bucket_size])", "interval": "", "legendFormat": "{{reason}}", "range": true, "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "Presence notify reason", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:165", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:166", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "Presence", "type": "row" }, { "collapsed": true, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 46 }, "id": 197, "panels": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "hertz" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 47 }, "id": 191, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "pluginVersion": "9.0.4", "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_external_cache_set{job=~\"$job\", instance=\"$instance\", index=~\"$index\"}[$bucket_size])", "interval": "", "legendFormat": "{{ cache_name }} {{job}}-{{ index }}", "range": true, "refId": "A" } ], "title": "External Cache Set Rate", "type": "timeseries" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "", "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 47 }, "hiddenSeries": false, "id": 193, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "9.2.2", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum without (hit) (rate(synapse_external_cache_get{job=~\"$job\", instance=\"$instance\", index=~\"$index\"}[$bucket_size]))", "interval": "", "legendFormat": "{{ cache_name }} {{job}}-{{ index }}", "range": true, "refId": "A" } ], "thresholds": [], "timeRegions": [], "title": "External Cache Get Rate", "tooltip": { "shared": true, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:390", "format": "hertz", "logBase": 1, "show": true }, { "$$hashKey": "object:391", "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "cards": { "cardPadding": -1 }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", "colorScheme": "interpolateInferno", "exponent": 0.5, "min": 0, "mode": "spectrum" }, "dataFormat": "tsbuckets", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 55 }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 195, "legend": { "show": false }, "links": [], "options": { "calculate": false, "calculation": {}, "cellGap": -1, "cellValues": { "decimals": 2 }, "color": { "exponent": 0.5, "fill": "#b4ff00", "min": 0, "mode": "scheme", "reverse": false, "scale": "exponential", "scheme": "Inferno", "steps": 128 }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "filterValues": { "le": 1e-9 }, "legend": { "show": false }, "rowsFrame": { "layout": "auto" }, "showValue": "never", "tooltip": { "show": true, "yHistogram": true }, "yAxis": { "axisPlacement": "left", "decimals": 0, "reverse": false, "unit": "s" } }, "pluginVersion": "9.2.2", "reverseYBuckets": false, "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "expr": "sum(rate(synapse_external_cache_response_time_seconds_bucket{index=~\"$index\",instance=\"$instance\",job=~\"$job\"}[$bucket_size])) by (le)", "format": "heatmap", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{le}}", "refId": "A" } ], "title": "External Cache Response Time", "tooltip": { "show": true, "showHistogram": true }, "tooltipDecimals": 2, "type": "heatmap", "xAxis": { "show": true }, "yAxis": { "decimals": 0, "format": "s", "logBase": 1, "show": true }, "yBucketBound": "auto" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green" } ] }, "unit": "hertz" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 55 }, "id": 223, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "pluginVersion": "9.0.4", "targets": [ { "datasource": { "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "rate(synapse_external_cache_get{job=~\"$job\", instance=\"$instance\", index=~\"$index\", hit=\"False\"}[$bucket_size])", "interval": "", "legendFormat": "{{ cache_name }} {{job}}-{{ index }}", "range": true, "refId": "A" } ], "title": "External Cache Miss Rate", "type": "timeseries" } ], "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "refId": "A" } ], "title": "External Cache", "type": "row" } ], "refresh": false, "schemaVersion": 37, "style": "dark", "tags": [ "matrix" ], "templating": { "list": [ { "current": { "selected": false, "text": "default", "value": "default" }, "hide": 0, "includeAll": false, "multi": false, "name": "DS_PROMETHEUS", "label": "Datasource", "options": [], "query": "prometheus", "queryValue": "", "refresh": 1, "regex": "", "skipUrlSync": false, "type": "datasource" }, { "allFormat": "glob", "auto": true, "auto_count": 100, "auto_min": "30s", "current": { "selected": false, "text": "auto", "value": "$__auto_interval_bucket_size" }, "hide": 0, "includeAll": false, "label": "Bucket Size", "multi": false, "multiFormat": "glob", "name": "bucket_size", "options": [ { "selected": true, "text": "auto", "value": "$__auto_interval_bucket_size" }, { "selected": false, "text": "30s", "value": "30s" }, { "selected": false, "text": "1m", "value": "1m" }, { "selected": false, "text": "2m", "value": "2m" }, { "selected": false, "text": "5m", "value": "5m" }, { "selected": false, "text": "10m", "value": "10m" }, { "selected": false, "text": "15m", "value": "15m" } ], "query": "30s,1m,2m,5m,10m,15m", "queryValue": "", "refresh": 2, "skipUrlSync": false, "type": "interval" }, { "current": {}, "datasource": { "uid": "${DS_PROMETHEUS}" }, "definition": "", "hide": 0, "includeAll": false, "multi": false, "name": "instance", "options": [], "query": { "query": "label_values(synapse_util_metrics_block_ru_utime_seconds_total, instance)", "refId": "Prometheus-instance-Variable-Query" }, "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 1, "tagValuesQuery": "", "tagsQuery": "", "type": "query", "useTags": false }, { "allFormat": "regex wildcard", "allValue": "", "current": {}, "datasource": { "uid": "${DS_PROMETHEUS}" }, "definition": "", "hide": 0, "hideLabel": false, "includeAll": true, "label": "Job", "multi": true, "multiFormat": "regex values", "name": "job", "options": [], "query": { "query": "label_values(synapse_util_metrics_block_ru_utime_seconds_total, job)", "refId": "Prometheus-job-Variable-Query" }, "refresh": 2, "refresh_on_load": false, "regex": "", "skipUrlSync": false, "sort": 1, "tagValuesQuery": "", "tagsQuery": "", "type": "query", "useTags": false }, { "allFormat": "regex wildcard", "allValue": ".*", "current": {}, "datasource": { "uid": "${DS_PROMETHEUS}" }, "definition": "", "hide": 0, "hideLabel": false, "includeAll": true, "label": "", "multi": true, "multiFormat": "regex values", "name": "index", "options": [], "query": { "query": "label_values(synapse_util_metrics_block_ru_utime_seconds_total, index)", "refId": "Prometheus-index-Variable-Query" }, "refresh": 2, "refresh_on_load": false, "regex": "", "skipUrlSync": false, "sort": 3, "tagValuesQuery": "", "tagsQuery": "", "type": "query", "useTags": false } ] }, "time": { "from": "now-3h", "to": "now" }, "timepicker": { "now": true, "refresh_intervals": [ "5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "time_options": [ "5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d" ] }, "timezone": "", "title": "Synapse", "uid": "000000012", "version": 160, "weekStart": "" } synapse-1.100.0/contrib/graph/000077500000000000000000000000001455622526000161035ustar00rootroot00000000000000synapse-1.100.0/contrib/graph/graph.py000066400000000000000000000110151455622526000175540ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import cgi import datetime import json import urllib.request from typing import List import pydot def make_name(pdu_id: str, origin: str) -> str: return f"{pdu_id}@{origin}" def make_graph(pdus: List[dict], filename_prefix: str) -> None: """ Generate a dot and SVG file for a graph of events in the room based on the topological ordering by querying a homeserver. """ pdu_map = {} node_map = {} origins = set() colors = {"red", "green", "blue", "yellow", "purple"} for pdu in pdus: origins.add(pdu.get("origin")) color_map = {color: color for color in colors if color in origins} colors -= set(color_map.values()) color_map[None] = "black" for o in origins: if o in color_map: continue try: c = colors.pop() color_map[o] = c except Exception: print("Run out of colours!") color_map[o] = "black" graph = pydot.Dot(graph_name="Test") for pdu in pdus: name = make_name(pdu.get("pdu_id"), pdu.get("origin")) pdu_map[name] = pdu t = datetime.datetime.fromtimestamp(float(pdu["ts"]) / 1000).strftime( "%Y-%m-%d %H:%M:%S,%f" ) label = ( "<" "%(name)s
" "Type: %(type)s
" "State key: %(state_key)s
" "Content: %(content)s
" "Time: %(time)s
" "Depth: %(depth)s
" ">" ) % { "name": name, "type": pdu.get("pdu_type"), "state_key": pdu.get("state_key"), "content": cgi.escape(json.dumps(pdu.get("content")), quote=True), "time": t, "depth": pdu.get("depth"), } node = pydot.Node(name=name, label=label, color=color_map[pdu.get("origin")]) node_map[name] = node graph.add_node(node) for pdu in pdus: start_name = make_name(pdu.get("pdu_id"), pdu.get("origin")) for i, o in pdu.get("prev_pdus", []): end_name = make_name(i, o) if end_name not in node_map: print("%s not in nodes" % end_name) continue edge = pydot.Edge(node_map[start_name], node_map[end_name]) graph.add_edge(edge) # Add prev_state edges, if they exist if pdu.get("prev_state_id") and pdu.get("prev_state_origin"): prev_state_name = make_name( pdu.get("prev_state_id"), pdu.get("prev_state_origin") ) if prev_state_name in node_map: state_edge = pydot.Edge( node_map[start_name], node_map[prev_state_name], style="dotted" ) graph.add_edge(state_edge) graph.write("%s.dot" % filename_prefix, format="raw", prog="dot") # graph.write_png("%s.png" % filename_prefix, prog='dot') graph.write_svg("%s.svg" % filename_prefix, prog="dot") def get_pdus(host: str, room: str) -> List[dict]: transaction = json.loads( urllib.request.urlopen( f"http://{host}/_matrix/federation/v1/context/{room}/" ).read() ) return transaction["pdus"] if __name__ == "__main__": parser = argparse.ArgumentParser( description="Generate a PDU graph for a given room by talking " "to the given homeserver to get the list of PDUs. \n" "Requires pydot." ) parser.add_argument( "-p", "--prefix", dest="prefix", help="String to prefix output files with" ) parser.add_argument("host") parser.add_argument("room") args = parser.parse_args() host = args.host room = args.room prefix = args.prefix if args.prefix else "%s_graph" % (room) pdus = get_pdus(host, room) make_graph(pdus, prefix) synapse-1.100.0/contrib/graph/graph2.py000066400000000000000000000114121455622526000176370ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import datetime import html import json import sqlite3 import pydot from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.events import make_event_from_dict from synapse.util.frozenutils import unfreeze def make_graph(db_name: str, room_id: str, file_prefix: str, limit: int) -> None: """ Generate a dot and SVG file for a graph of events in the room based on the topological ordering by reading from a Synapse SQLite database. """ conn = sqlite3.connect(db_name) sql = "SELECT room_version FROM rooms WHERE room_id = ?" c = conn.execute(sql, (room_id,)) room_version = KNOWN_ROOM_VERSIONS[c.fetchone()[0]] sql = ( "SELECT json, internal_metadata FROM event_json as j " "INNER JOIN events as e ON e.event_id = j.event_id " "WHERE j.room_id = ?" ) args = [room_id] if limit: sql += " ORDER BY topological_ordering DESC, stream_ordering DESC LIMIT ?" args.append(limit) c = conn.execute(sql, args) events = [ make_event_from_dict(json.loads(e[0]), room_version, json.loads(e[1])) for e in c.fetchall() ] events.sort(key=lambda e: e.depth) node_map = {} state_groups = {} graph = pydot.Dot(graph_name="Test") for event in events: c = conn.execute( "SELECT state_group FROM event_to_state_groups WHERE event_id = ?", (event.event_id,), ) res = c.fetchone() state_group = res[0] if res else None if state_group is not None: state_groups.setdefault(state_group, []).append(event.event_id) t = datetime.datetime.fromtimestamp( float(event.origin_server_ts) / 1000 ).strftime("%Y-%m-%d %H:%M:%S,%f") content = json.dumps(unfreeze(event.get_dict()["content"])) label = ( "<" "%(name)s
" "Type: %(type)s
" "State key: %(state_key)s
" "Content: %(content)s
" "Time: %(time)s
" "Depth: %(depth)s
" "State group: %(state_group)s
" ">" ) % { "name": event.event_id, "type": event.type, "state_key": event.get("state_key", None), "content": html.escape(content, quote=True), "time": t, "depth": event.depth, "state_group": state_group, } node = pydot.Node(name=event.event_id, label=label) node_map[event.event_id] = node graph.add_node(node) for event in events: for prev_id in event.prev_event_ids(): try: end_node = node_map[prev_id] except Exception: end_node = pydot.Node(name=prev_id, label=f"<{prev_id}>") node_map[prev_id] = end_node graph.add_node(end_node) edge = pydot.Edge(node_map[event.event_id], end_node) graph.add_edge(edge) for group, event_ids in state_groups.items(): if len(event_ids) <= 1: continue cluster = pydot.Cluster(str(group), label=f"") for event_id in event_ids: cluster.add_node(node_map[event_id]) graph.add_subgraph(cluster) graph.write("%s.dot" % file_prefix, format="raw", prog="dot") graph.write_svg("%s.svg" % file_prefix, prog="dot") if __name__ == "__main__": parser = argparse.ArgumentParser( description="Generate a PDU graph for a given room by talking " "to the given Synapse SQLite file to get the list of PDUs. \n" "Requires pydot." ) parser.add_argument( "-p", "--prefix", dest="prefix", help="String to prefix output files with", default="graph_output", ) parser.add_argument("-l", "--limit", help="Only retrieve the last N events.") parser.add_argument("db") parser.add_argument("room") args = parser.parse_args() make_graph(args.db, args.room, args.prefix, args.limit) synapse-1.100.0/contrib/graph/graph3.py000066400000000000000000000111051455622526000176370ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import datetime import html import json import pydot from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.events import make_event_from_dict from synapse.util.frozenutils import unfreeze def make_graph(file_name: str, file_prefix: str, limit: int) -> None: """ Generate a dot and SVG file for a graph of events in the room based on the topological ordering by reading line-delimited JSON from a file. """ print("Reading lines") with open(file_name) as f: lines = f.readlines() print("Read lines") # Figure out the room version, assume the first line is the create event. room_version = KNOWN_ROOM_VERSIONS[ json.loads(lines[0]).get("content", {}).get("room_version") ] events = [make_event_from_dict(json.loads(line), room_version) for line in lines] print("Loaded events.") events.sort(key=lambda e: e.depth) print("Sorted events") if limit: events = events[-int(limit) :] node_map = {} graph = pydot.Dot(graph_name="Test") for event in events: t = datetime.datetime.fromtimestamp( float(event.origin_server_ts) / 1000 ).strftime("%Y-%m-%d %H:%M:%S,%f") content = json.dumps(unfreeze(event.get_dict()["content"]), indent=4) content = content.replace("\n", "
\n") print(content) content = [] for key, value in unfreeze(event.get_dict()["content"]).items(): if value is None: value = "" elif isinstance(value, str): pass else: value = json.dumps(value) content.append( "%s: %s," % ( html.escape(key, quote=True).encode("ascii", "xmlcharrefreplace"), html.escape(value, quote=True).encode("ascii", "xmlcharrefreplace"), ) ) content = "
\n".join(content) print(content) label = ( "<" "%(name)s
" "Type: %(type)s
" "State key: %(state_key)s
" "Content: %(content)s
" "Time: %(time)s
" "Depth: %(depth)s
" ">" ) % { "name": event.event_id, "type": event.type, "state_key": event.get("state_key", None), "content": content, "time": t, "depth": event.depth, } node = pydot.Node(name=event.event_id, label=label) node_map[event.event_id] = node graph.add_node(node) print("Created Nodes") for event in events: for prev_id in event.prev_event_ids(): try: end_node = node_map[prev_id] except Exception: end_node = pydot.Node(name=prev_id, label=f"<{prev_id}>") node_map[prev_id] = end_node graph.add_node(end_node) edge = pydot.Edge(node_map[event.event_id], end_node) graph.add_edge(edge) print("Created edges") graph.write("%s.dot" % file_prefix, format="raw", prog="dot") print("Created Dot") graph.write_svg("%s.svg" % file_prefix, prog="dot") print("Created svg") if __name__ == "__main__": parser = argparse.ArgumentParser( description="Generate a PDU graph for a given room by reading " "from a file with line deliminated events. \n" "Requires pydot." ) parser.add_argument( "-p", "--prefix", dest="prefix", help="String to prefix output files with", default="graph_output", ) parser.add_argument("-l", "--limit", help="Only retrieve the last N events.") parser.add_argument("event_file") args = parser.parse_args() make_graph(args.event_file, args.prefix, args.limit) synapse-1.100.0/contrib/lnav/000077500000000000000000000000001455622526000157425ustar00rootroot00000000000000synapse-1.100.0/contrib/lnav/README.md000066400000000000000000000035531455622526000172270ustar00rootroot00000000000000# `lnav` config for Synapse logs [lnav](https://lnav.org/) is a log-viewing tool. It is particularly useful when you need to interleave multiple log files, or for exploring a large log file with regex filters. The downside is that it is not as ubiquitous as tools like `less`, `grep`, etc. This directory contains an `lnav` [log format definition]( https://docs.lnav.org/en/v0.10.1/formats.html#defining-a-new-format ) for Synapse logs as emitted by Synapse with the default [logging configuration]( https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#log_config ). It supports lnav 0.10.1 because that's what's packaged by my distribution. This should allow lnav: - to interpret timestamps, allowing log interleaving; - to interpret log severity levels, allowing colouring by log level(!!!); - to interpret request IDs, allowing you to skip through a specific request; and - to highlight room, event and user IDs in logs. See also https://gist.github.com/benje/e2ab750b0a81d11920d83af637d289f7 for a similar example. ## Example [![asciicast](https://asciinema.org/a/556133.svg)](https://asciinema.org/a/556133) ## Tips - `lnav -i /path/to/synapse/checkout/contrib/lnav/synapse-log-format.json` - `lnav my_synapse_log_file` or `lnav synapse_log_files.*`, etc. - `lnav --help` for CLI help. Within lnav itself: - `?` for help within lnav itself. - `q` to quit. - `/` to search a-la `less` and `vim`, then `n` and `N` to continue searching down and up. - Use `o` and `O` to skip through logs based on the request ID (`POST-1234`, or else the value of the [`request_id_header`]( https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html?highlight=request_id_header#listeners ) header). This may get confused if the same request ID is repeated among multiple files or process restarts. - ??? - Profit synapse-1.100.0/contrib/lnav/synapse-log-format.json000066400000000000000000000054611455622526000223720ustar00rootroot00000000000000{ "$schema": "https://lnav.org/schemas/format-v1.schema.json", "synapse": { "title": "Synapse logs", "description": "Logs output by Synapse, a Matrix homesever, under its default logging config.", "regex": { "log": { "pattern": ".*(?\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}) - (?.+) - (?\\d+) - (?\\w+) - (?.+) - (?.*)" } }, "json": false, "timestamp-field": "timestamp", "timestamp-format": [ "%Y-%m-%d %H:%M:%S,%L" ], "level-field": "level", "body-field": "body", "opid-field": "context", "level": { "critical": "CRITICAL", "error": "ERROR", "warning": "WARNING", "info": "INFO", "debug": "DEBUG" }, "sample": [ { "line": "my-matrix-server-generic-worker-4 | 2023-01-27 09:47:09,818 - synapse.replication.tcp.client - 381 - ERROR - PUT-32992 - Timed out waiting for stream receipts", "level": "error" }, { "line": "my-matrix-server-federation-sender-1 | 2023-01-25 20:56:20,995 - synapse.http.matrixfederationclient - 709 - WARNING - federation_transaction_transmission_loop-3 - {PUT-O-3} [example.com] Request failed: PUT matrix-federation://example.com/_matrix/federation/v1/send/1674680155797: HttpResponseException('403: Forbidden')", "level": "warning" }, { "line": "my-matrix-server | 2023-01-25 20:55:54,433 - synapse.storage.databases - 66 - INFO - main - [database config 'master']: Checking database server", "level": "info" }, { "line": "my-matrix-server | 2023-01-26 15:08:40,447 - synapse.access.http.8008 - 460 - INFO - PUT-74929 - 0.0.0.0 - 8008 - {@alice:example.com} Processed request: 0.011sec/0.000sec (0.000sec, 0.000sec) (0.001sec/0.008sec/3) 2B 200 \"PUT /_matrix/client/r0/user/%40alice%3Atexample.com/account_data/im.vector.setting.breadcrumbs HTTP/1.0\" \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Element/1.11.20 Chrome/108.0.5359.179 Electron/22.0.3 Safari/537.36\" [0 dbevts]", "level": "info" } ], "highlights": { "user_id": { "pattern": "(@|%40)[^:% ]+(:|%3A)[\\[\\]0-9a-zA-Z.\\-:]+(:\\d{1,5})?(?System Resources

CPU

Memory

File descriptors

Reactor

Total reactor time

Average reactor tick time

Storage

Queries

Transactions

Transaction execution time

Average time waiting for database connection

Cache request rate

Cache size

Requests

Requests by Servlet

 (without EventStreamRestServlet or SyncRestServlet)

Average response times

All responses by code

Error responses by code

CPU Usage

DB Usage

Average event send times

Federation

Sent Messages

Received Messages

Pending

Clients

Notifiers

Notified Events

{{ template "prom_content_tail" . }} {{ template "tail" }} synapse-1.100.0/contrib/prometheus/synapse-v2.rules000066400000000000000000000051231455622526000222610ustar00rootroot00000000000000groups: - name: synapse rules: ### ### Prometheus Console Only ### The following rules are only needed if you use the Prometheus Console ### in contrib/prometheus/consoles/synapse.html ### - record: 'synapse_federation_client_sent' labels: type: "EDU" expr: 'synapse_federation_client_sent_edus_total + 0' - record: 'synapse_federation_client_sent' labels: type: "PDU" expr: 'synapse_federation_client_sent_pdu_destinations_count_total + 0' - record: 'synapse_federation_client_sent' labels: type: "Query" expr: 'sum(synapse_federation_client_sent_queries) by (job)' - record: 'synapse_federation_server_received' labels: type: "EDU" expr: 'synapse_federation_server_received_edus_total + 0' - record: 'synapse_federation_server_received' labels: type: "PDU" expr: 'synapse_federation_server_received_pdus_total + 0' - record: 'synapse_federation_server_received' labels: type: "Query" expr: 'sum(synapse_federation_server_received_queries) by (job)' - record: 'synapse_federation_transaction_queue_pending' labels: type: "EDU" expr: 'synapse_federation_transaction_queue_pending_edus + 0' - record: 'synapse_federation_transaction_queue_pending' labels: type: "PDU" expr: 'synapse_federation_transaction_queue_pending_pdus + 0' ### ### End of 'Prometheus Console Only' rules block ### ### ### Grafana Only ### The following rules are only needed if you use the Grafana dashboard ### in contrib/grafana/synapse.json ### - record: synapse_storage_events_persisted_by_source_type expr: sum without(type, origin_type, origin_entity) (synapse_storage_events_persisted_events_sep_total{origin_type="remote"}) labels: type: remote - record: synapse_storage_events_persisted_by_source_type expr: sum without(type, origin_type, origin_entity) (synapse_storage_events_persisted_events_sep_total{origin_entity="*client*",origin_type="local"}) labels: type: local - record: synapse_storage_events_persisted_by_source_type expr: sum without(type, origin_type, origin_entity) (synapse_storage_events_persisted_events_sep_total{origin_entity!="*client*",origin_type="local"}) labels: type: bridges - record: synapse_storage_events_persisted_by_event_type expr: sum without(origin_entity, origin_type) (synapse_storage_events_persisted_events_sep_total) - record: synapse_storage_events_persisted_by_origin expr: sum without(type) (synapse_storage_events_persisted_events_sep_total) ### ### End of 'Grafana Only' rules block ### synapse-1.100.0/contrib/purge_api/000077500000000000000000000000001455622526000167555ustar00rootroot00000000000000synapse-1.100.0/contrib/purge_api/README.md000066400000000000000000000011731455622526000202360ustar00rootroot00000000000000Purge history API examples ========================== # `purge_history.sh` A bash file, that uses the [purge history API](https://element-hq.github.io/synapse/latest/admin_api/purge_history_api.html) to purge all messages in a list of rooms up to a certain event. You can select a timeframe or a number of messages that you want to keep in the room. Just configure the variables DOMAIN, ADMIN, ROOMS_ARRAY and TIME at the top of the script. # `purge_remote_media.sh` A bash file, that uses the [purge history API](https://element-hq.github.io/synapse/latest/admin_api/purge_history_api.html) to purge all old cached remote media. synapse-1.100.0/contrib/purge_api/purge_history.sh000066400000000000000000000150501455622526000222150ustar00rootroot00000000000000#!/usr/bin/env bash # this script will use the api: # https://element-hq.github.io/synapse/latest/admin_api/purge_history_api.html # # It will purge all messages in a list of rooms up to a cetrain event ################################################################################################### # define your domain and admin user ################################################################################################### # add this user as admin in your home server: DOMAIN=yourserver.tld # add this user as admin in your home server: ADMIN="@you_admin_username:$DOMAIN" API_URL="$DOMAIN:8008/_matrix/client/r0" ################################################################################################### #choose the rooms to prune old messages from (add a free comment at the end) ################################################################################################### # the room_id's you can get e.g. from your Riot clients "View Source" button on each message ROOMS_ARRAY=( '!DgvjtOljKujDBrxyHk:matrix.org#riot:matrix.org' '!QtykxKocfZaZOUrTwp:matrix.org#Matrix HQ' ) # ALTERNATIVELY: # you can select all the rooms that are not encrypted and loop over the result: # SELECT room_id FROM rooms WHERE room_id NOT IN (SELECT DISTINCT room_id FROM events WHERE type ='m.room.encrypted') # or # select all rooms with at least 100 members: # SELECT q.room_id FROM (select count(*) as numberofusers, room_id FROM current_state_events WHERE type ='m.room.member' # GROUP BY room_id) AS q LEFT JOIN room_aliases a ON q.room_id=a.room_id WHERE q.numberofusers > 100 ORDER BY numberofusers desc ################################################################################################### # evaluate the EVENT_ID before which should be pruned ################################################################################################### # choose a time before which the messages should be pruned: TIME='12 months ago' # ALTERNATIVELY: # a certain time: # TIME='2016-08-31 23:59:59' # creates a timestamp from the given time string: UNIX_TIMESTAMP=$(date +%s%3N --date='TZ="UTC+2" '"$TIME") # ALTERNATIVELY: # prune all messages that are older than 1000 messages ago: # LAST_MESSAGES=1000 # SQL_GET_EVENT="SELECT event_id from events WHERE type='m.room.message' AND room_id ='$ROOM' ORDER BY received_ts DESC LIMIT 1 offset $(($LAST_MESSAGES - 1))" # ALTERNATIVELY: # select the EVENT_ID manually: #EVENT_ID='$1471814088343495zpPNI:matrix.org' # an example event from 21st of Aug 2016 by Matthew ################################################################################################### # make the admin user a server admin in the database with ################################################################################################### # psql -A -t --dbname=synapse -c "UPDATE users SET admin=1 WHERE name LIKE '$ADMIN'" ################################################################################################### # database function ################################################################################################### sql (){ # for sqlite3: #sqlite3 homeserver.db "pragma busy_timeout=20000;$1" | awk '{print $2}' # for postgres: psql -A -t --dbname=synapse -c "$1" | grep -v 'Pager' } ################################################################################################### # get an access token ################################################################################################### # for example externally by watching Riot in your browser's network inspector # or internally on the server locally, use this: TOKEN=$(sql "SELECT token FROM access_tokens WHERE user_id='$ADMIN' ORDER BY id DESC LIMIT 1") AUTH="Authorization: Bearer $TOKEN" ################################################################################################### # check, if your TOKEN works. For example this works: ################################################################################################### # $ curl --header "$AUTH" "$API_URL/rooms/$ROOM/state/m.room.power_levels" ################################################################################################### # finally start pruning the room: ################################################################################################### # this will really delete local events, so the messages in the room really # disappear unless they are restored by remote federation. This is because # we pass {"delete_local_events":true} to the curl invocation below. for ROOM in "${ROOMS_ARRAY[@]}"; do echo "########################################### $(date) ################# " echo "pruning room: $ROOM ..." ROOM=${ROOM%#*} #set -x echo "check for alias in db..." # for postgres: sql "SELECT * FROM room_aliases WHERE room_id='$ROOM'" echo "get event..." # for postgres: EVENT_ID=$(sql "SELECT event_id FROM events WHERE type='m.room.message' AND received_ts<'$UNIX_TIMESTAMP' AND room_id='$ROOM' ORDER BY received_ts DESC LIMIT 1;") if [ "$EVENT_ID" == "" ]; then echo "no event $TIME" else echo "event: $EVENT_ID" SLEEP=2 set -x # call purge OUT=$(curl --header "$AUTH" -s -d '{"delete_local_events":true}' POST "$API_URL/admin/purge_history/$ROOM/$EVENT_ID") PURGE_ID=$(echo "$OUT" |grep purge_id|cut -d'"' -f4 ) if [ "$PURGE_ID" == "" ]; then # probably the history purge is already in progress for $ROOM : "continuing with next room" else while : ; do # get status of purge and sleep longer each time if still active sleep $SLEEP STATUS=$(curl --header "$AUTH" -s GET "$API_URL/admin/purge_history_status/$PURGE_ID" |grep status|cut -d'"' -f4) : "$ROOM --> Status: $STATUS" [[ "$STATUS" == "active" ]] || break SLEEP=$((SLEEP + 1)) done fi set +x sleep 1 fi done ################################################################################################### # additionally ################################################################################################### # to benefit from pruning large amounts of data, you need to call VACUUM to free the unused space. # This can take a very long time (hours) and the client have to be stopped while you do so: # $ synctl stop # $ sqlite3 -line homeserver.db "vacuum;" # $ synctl start # This could be set, so you don't need to prune every time after deleting some rows: # $ sqlite3 homeserver.db "PRAGMA auto_vacuum = FULL;" # be cautious, it could make the database somewhat slow if there are a lot of deletions exit synapse-1.100.0/contrib/purge_api/purge_remote_media.sh000066400000000000000000000045351455622526000231540ustar00rootroot00000000000000#!/usr/bin/env bash DOMAIN=yourserver.tld # add this user as admin in your home server: ADMIN="@you_admin_username:$DOMAIN" API_URL="$DOMAIN:8008/_matrix/client/r0" # choose a time before which the messages should be pruned: # TIME='2016-08-31 23:59:59' TIME='12 months ago' # creates a timestamp from the given time string: UNIX_TIMESTAMP=$(date +%s%3N --date='TZ="UTC+2" '"$TIME") ################################################################################################### # database function ################################################################################################### sql (){ # for sqlite3: #sqlite3 homeserver.db "pragma busy_timeout=20000;$1" | awk '{print $2}' # for postgres: psql -A -t --dbname=synapse -c "$1" | grep -v 'Pager' } ############################################################################### # make the admin user a server admin in the database with ############################################################################### # sql "UPDATE users SET admin=1 WHERE name LIKE '$ADMIN'" ############################################################################### # get an access token ############################################################################### # for example externally by watching Riot in your browser's network inspector # or internally on the server locally, use this: TOKEN=$(sql "SELECT token FROM access_tokens WHERE user_id='$ADMIN' ORDER BY id DESC LIMIT 1") ############################################################################### # check, if your TOKEN works. For example this works: ############################################################################### # curl --header "Authorization: Bearer $TOKEN" "$API_URL/rooms/$ROOM/state/m.room.power_levels" ############################################################################### # optional check size before ############################################################################### # echo calculate used storage before ... # du -shc ../.synapse/media_store/* ############################################################################### # finally start pruning media: ############################################################################### set -x # for debugging the generated string curl --header "Authorization: Bearer $TOKEN" -X POST "$API_URL/admin/purge_media_cache/?before_ts=$UNIX_TIMESTAMP" synapse-1.100.0/contrib/snap/000077500000000000000000000000001455622526000157435ustar00rootroot00000000000000synapse-1.100.0/contrib/snap/snapcraft.yaml000066400000000000000000000024521455622526000206130ustar00rootroot00000000000000name: matrix-synapse base: core18 version: git summary: Reference Matrix homeserver description: | Synapse is the reference Matrix homeserver. Matrix is a federated and decentralised instant messaging and VoIP system. grade: stable confinement: strict apps: matrix-synapse: command: synctl --no-daemonize start $SNAP_COMMON/homeserver.yaml stop-command: synctl -c $SNAP_COMMON stop plugs: [network-bind, network] daemon: simple hash-password: command: hash_password generate-config: command: generate_config generate-signing-key: command: generate_signing_key register-new-matrix-user: command: register_new_matrix_user plugs: [network] synctl: command: synctl parts: matrix-synapse: source: . plugin: python python-version: python3 python-packages: - '.[all]' - pip - setuptools - setuptools-scm - wheel build-packages: - libffi-dev - libturbojpeg0-dev - libssl-dev - libxslt1-dev - libpq-dev - zlib1g-dev stage-packages: - libasn1-8-heimdal - libgssapi3-heimdal - libhcrypto4-heimdal - libheimbase1-heimdal - libheimntlm0-heimdal - libhx509-5-heimdal - libkrb5-26-heimdal - libldap-2.4-2 - libpq5 - libsasl2-2 synapse-1.100.0/contrib/systemd-with-workers/000077500000000000000000000000001455622526000211355ustar00rootroot00000000000000synapse-1.100.0/contrib/systemd-with-workers/README.md000066400000000000000000000003321455622526000224120ustar00rootroot00000000000000The documentation for using systemd to manage synapse workers is now part of the main synapse distribution. See [docs/systemd-with-workers](https://element-hq.github.io/synapse/latest/systemd-with-workers/index.html). synapse-1.100.0/contrib/systemd/000077500000000000000000000000001455622526000164725ustar00rootroot00000000000000synapse-1.100.0/contrib/systemd/README.md000066400000000000000000000017751455622526000177630ustar00rootroot00000000000000# Setup Synapse with Systemd This is a setup for managing synapse with a user contributed systemd unit file. It provides a `matrix-synapse` systemd unit file that should be tailored to accommodate your installation in accordance with the installation instructions provided in [installation instructions](https://element-hq.github.io/synapse/latest/setup/installation.html). ## Setup 1. Under the service section, ensure the `User` variable matches which user you installed synapse under and wish to run it as. 2. Under the service section, ensure the `WorkingDirectory` variable matches where you have installed synapse. 3. Under the service section, ensure the `ExecStart` variable matches the appropriate locations of your installation. 4. Copy the `matrix-synapse.service` to `/etc/systemd/system/` 5. Start Synapse: `sudo systemctl start matrix-synapse` 6. Verify Synapse is running: `sudo systemctl status matrix-synapse` 7. *optional* Enable Synapse to start at system boot: `sudo systemctl enable matrix-synapse` synapse-1.100.0/contrib/systemd/log_config.yaml000066400000000000000000000010271455622526000214640ustar00rootroot00000000000000version: 1 # In systemd's journal, loglevel is implicitly stored, so let's omit it # from the message text. formatters: journal_fmt: format: '%(name)s: [%(request)s] %(message)s' filters: context: (): synapse.logging.context.LoggingContextFilter request: "" handlers: journal: class: systemd.journal.JournalHandler formatter: journal_fmt filters: [context] SYSLOG_IDENTIFIER: synapse root: level: INFO handlers: [journal] disable_existing_loggers: False synapse-1.100.0/contrib/systemd/matrix-synapse.service000066400000000000000000000022271455622526000230430ustar00rootroot00000000000000# Example systemd configuration file for synapse. Copy into # /etc/systemd/system/, update the paths if necessary, then: # # systemctl enable matrix-synapse # systemctl start matrix-synapse # # This assumes that Synapse has been installed by a user named # synapse. # # This assumes that Synapse has been installed in a virtualenv in # the user's home directory: `/home/synapse/synapse/env`. # # **NOTE:** This is an example service file that may change in the future. If you # wish to use this please copy rather than symlink it. [Unit] Description=Synapse Matrix homeserver # If you are using postgresql to persist data, uncomment this line to make sure # synapse starts after the postgresql service. # After=postgresql.service [Service] Type=notify NotifyAccess=main ExecReload=/bin/kill -HUP $MAINPID Restart=on-abort User=synapse Group=nogroup WorkingDirectory=/home/synapse/synapse ExecStart=/home/synapse/synapse/env/bin/python -m synapse.app.homeserver --config-path=/home/synapse/synapse/homeserver.yaml SyslogIdentifier=matrix-synapse # adjust the cache factor if necessary # Environment=SYNAPSE_CACHE_FACTOR=2.0 [Install] WantedBy=multi-user.target synapse-1.100.0/contrib/systemd/override-hardened.conf000066400000000000000000000036501455622526000227340ustar00rootroot00000000000000[Service] # The following directives give the synapse service R/W access to: # - /run/matrix-synapse # - /var/lib/matrix-synapse # - /var/log/matrix-synapse RuntimeDirectory=matrix-synapse StateDirectory=matrix-synapse LogsDirectory=matrix-synapse ###################### ## Security Sandbox ## ###################### # Make sure that the service has its own unshared tmpfs at /tmp and that it # cannot see or change any real devices PrivateTmp=true PrivateDevices=true # We give no capabilities to a service by default CapabilityBoundingSet= AmbientCapabilities= # Protect the following from modification: # - The entire filesystem # - sysctl settings and loaded kernel modules # - No modifications allowed to Control Groups # - Hostname # - System Clock ProtectSystem=strict ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true ProtectClock=true ProtectHostname=true # Prevent access to the following: # - /home directory # - Kernel logs ProtectHome=tmpfs ProtectKernelLogs=true # Make sure that the process can only see PIDs and process details of itself, # and the second option disables seeing details of things like system load and # I/O etc ProtectProc=invisible ProcSubset=pid # While not needed, we set these options explicitly # - This process has been given access to the host network # - It can also communicate with any IP Address PrivateNetwork=false RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX IPAddressAllow=any # Restrict system calls to a sane bunch SystemCallArchitectures=native SystemCallFilter=@system-service SystemCallFilter=~@privileged @resources @obsolete # Misc restrictions # - Since the process is a python process it needs to be able to write and # execute memory regions, so we set MemoryDenyWriteExecute to false RestrictSUIDSGID=true RemoveIPC=true NoNewPrivileges=true RestrictRealtime=true RestrictNamespaces=true LockPersonality=true PrivateUsers=true MemoryDenyWriteExecute=false synapse-1.100.0/contrib/vertobot/000077500000000000000000000000001455622526000166465ustar00rootroot00000000000000synapse-1.100.0/contrib/vertobot/.gitignore000066400000000000000000000000321455622526000206310ustar00rootroot00000000000000vucbot.yaml vertobot.yaml synapse-1.100.0/contrib/vertobot/bot.pl000077500000000000000000000224331455622526000177760ustar00rootroot00000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; # // use IO::Socket::SSL qw(SSL_VERIFY_NONE); use IO::Async::Loop; use Net::Async::WebSocket::Client; use Net::Async::Matrix 0.11_002; use JSON; use YAML; use Data::UUID; use Getopt::Long; use Data::Dumper; binmode STDOUT, ":encoding(UTF-8)"; binmode STDERR, ":encoding(UTF-8)"; my $loop = IO::Async::Loop->new; # Net::Async::HTTP + SSL + IO::Poll doesn't play well. See # https://rt.cpan.org/Ticket/Display.html?id=93107 ref $loop eq "IO::Async::Loop::Poll" and warn "Using SSL with IO::Poll causes known memory-leaks!!\n"; GetOptions( 'C|config=s' => \my $CONFIG, 'eval-from=s' => \my $EVAL_FROM, ) or exit 1; if( defined $EVAL_FROM ) { # An emergency 'eval() this file' hack $SIG{HUP} = sub { my $code = do { open my $fh, "<", $EVAL_FROM or warn( "Cannot read - $!" ), return; local $/; <$fh> }; eval $code or warn "Cannot eval() - $@"; }; } defined $CONFIG or die "Must supply --config\n"; my %CONFIG = %{ YAML::LoadFile( $CONFIG ) }; my %MATRIX_CONFIG = %{ $CONFIG{matrix} }; # No harm in always applying this $MATRIX_CONFIG{SSL_verify_mode} = SSL_VERIFY_NONE; # Track every Room object, so we can ->leave them all on shutdown my %bot_matrix_rooms; my $bridgestate = {}; my $roomid_by_callid = {}; my $bot_verto = Net::Async::WebSocket::Client->new( on_frame => sub { my ( $self, $frame ) = @_; warn "[Verto] receiving $frame"; on_verto_json($frame); }, ); $loop->add( $bot_verto ); my $sessid = lc new Data::UUID->create_str(); my $bot_matrix = Net::Async::Matrix->new( %MATRIX_CONFIG, on_log => sub { warn "log: @_\n" }, on_invite => sub { my ($matrix, $invite) = @_; warn "[Matrix] invited to: " . $invite->{room_id} . " by " . $invite->{inviter} . "\n"; $matrix->join_room( $invite->{room_id} )->get; }, on_room_new => sub { my ($matrix, $room) = @_; warn "[Matrix] have a room ID: " . $room->room_id . "\n"; $bot_matrix_rooms{$room->room_id} = $room; # log in to verto on behalf of this room $bridgestate->{$room->room_id}->{sessid} = $sessid; $room->configure( on_message => \&on_room_message, ); my $f = send_verto_json_request("login", { 'login' => $CONFIG{'verto-dialog-params'}{'login'}, 'passwd' => $CONFIG{'verto-config'}{'passwd'}, 'sessid' => $sessid, }); $matrix->adopt_future($f); # we deliberately don't paginate the room, as we only care about # new calls }, on_unknown_event => \&on_unknown_event, on_error => sub { print STDERR "Matrix failure: @_\n"; }, ); $loop->add( $bot_matrix ); sub on_unknown_event { my ($matrix, $event) = @_; print Dumper($event); my $room_id = $event->{room_id}; my %dp = %{$CONFIG{'verto-dialog-params'}}; $dp{callID} = $bridgestate->{$room_id}->{callid}; if ($event->{type} eq 'm.call.invite') { $bridgestate->{$room_id}->{matrix_callid} = $event->{content}->{call_id}; $bridgestate->{$room_id}->{callid} = lc new Data::UUID->create_str(); $bridgestate->{$room_id}->{offer} = $event->{content}->{offer}->{sdp}; $bridgestate->{$room_id}->{gathered_candidates} = 0; $roomid_by_callid->{ $bridgestate->{$room_id}->{callid} } = $room_id; # no trickle ICE in verto apparently } elsif ($event->{type} eq 'm.call.candidates') { # XXX: compare call IDs if (!$bridgestate->{$room_id}->{gathered_candidates}) { $bridgestate->{$room_id}->{gathered_candidates} = 1; my $offer = $bridgestate->{$room_id}->{offer}; my $candidate_block = { audio => '', video => '', }; foreach (@{$event->{content}->{candidates}}) { if ($_->{sdpMid}) { $candidate_block->{$_->{sdpMid}} .= "a=" . $_->{candidate} . "\r\n"; } else { $candidate_block->{audio} .= "a=" . $_->{candidate} . "\r\n"; $candidate_block->{video} .= "a=" . $_->{candidate} . "\r\n"; } } # XXX: assumes audio comes first #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{audio}/; #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{video}/; $offer =~ s/(m=video)/$candidate_block->{audio}$1/; $offer =~ s/(.$)/$1\n$candidate_block->{video}$1/; my $f = send_verto_json_request("verto.invite", { "sdp" => $offer, "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $matrix->adopt_future($f); } else { # ignore them, as no trickle ICE, although we might as well # batch them up # foreach (@{$event->{content}->{candidates}}) { # push @{$bridgestate->{$room_id}->{candidates}}, $_; # } } } elsif ($event->{type} eq 'm.call.hangup') { if ($bridgestate->{$room_id}->{matrix_callid} eq $event->{content}->{call_id}) { my $f = send_verto_json_request("verto.bye", { "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $matrix->adopt_future($f); } else { warn "Ignoring unrecognised callid: ".$event->{content}->{call_id}; } } else { warn "Unhandled event: $event->{type}"; } } sub on_room_message { my ($room, $from, $content) = @_; my $room_id = $room->room_id; warn "[Matrix] in $room_id: $from: " . $content->{body} . "\n"; } Future->needs_all( $bot_matrix->login( %{ $CONFIG{"matrix-bot"} } )->then( sub { $bot_matrix->start; }), $bot_verto->connect( %{ $CONFIG{"verto-bot"} }, on_connect_error => sub { die "Cannot connect to verto - $_[-1]" }, on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" }, )->on_done( sub { warn("[Verto] connected to websocket"); }), )->get; $loop->attach_signal( PIPE => sub { warn "pipe\n" } ); $loop->attach_signal( INT => sub { $loop->stop }, ); $loop->attach_signal( TERM => sub { $loop->stop }, ); eval { $loop->run; } or my $e = $@; # When the bot gets shut down, have it leave the rooms so it's clear to observers # that it is no longer running. # if( $CONFIG{"leave-on-shutdown"} // 1 ) { # print STDERR "Removing bot from Matrix rooms...\n"; # Future->wait_all( map { $_->leave->else_done() } values %bot_matrix_rooms )->get; # } # else { # print STDERR "Leaving bot users in Matrix rooms.\n"; # } die $e if $e; exit 0; { my $json_id; my $requests; sub send_verto_json_request { $json_id ||= 1; my ($method, $params) = @_; my $json = { jsonrpc => "2.0", method => $method, params => $params, id => $json_id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); my $request = $loop->new_future; $requests->{$json_id} = $request; $json_id++; return $request; } sub send_verto_json_response { my ($result, $id) = @_; my $json = { jsonrpc => "2.0", result => $result, id => $id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); } sub on_verto_json { my $json = JSON->new->decode( $_[0] ); if ($json->{method}) { if (($json->{method} eq 'verto.answer' && $json->{params}->{sdp}) || $json->{method} eq 'verto.media') { my $room_id = $roomid_by_callid->{$json->{params}->{callID}}; my $room = $bot_matrix_rooms{$room_id}; if ($json->{params}->{sdp}) { # HACK HACK HACK HACK $room->_do_POST_json( "/send/m.call.answer", { call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, answer => { sdp => $json->{params}->{sdp}, type => "answer", }, })->then( sub { send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } } else { warn ("[Verto] unhandled method: " . $json->{method}); send_verto_json_response( { method => $json->{method}, }, $json->{id}); } } elsif ($json->{result}) { $requests->{$json->{id}}->done($json->{result}); } elsif ($json->{error}) { $requests->{$json->{id}}->fail($json->{error}->{message}, $json->{error}); } } } synapse-1.100.0/contrib/vertobot/bridge.pl000077500000000000000000000436171455622526000204550ustar00rootroot00000000000000#!/usr/bin/env perl use strict; use warnings; use 5.010; # // use IO::Socket::SSL qw(SSL_VERIFY_NONE); use IO::Async::Loop; use Net::Async::WebSocket::Client; use Net::Async::HTTP; use Net::Async::HTTP::Server; use JSON; use YAML; use Data::UUID; use Getopt::Long; use Data::Dumper; use URI::Encode qw(uri_encode uri_decode); binmode STDOUT, ":encoding(UTF-8)"; binmode STDERR, ":encoding(UTF-8)"; my $msisdn_to_matrix = { '447417892400' => '@matthew:matrix.org', }; my $matrix_to_msisdn = {}; foreach (keys %$msisdn_to_matrix) { $matrix_to_msisdn->{$msisdn_to_matrix->{$_}} = $_; } my $loop = IO::Async::Loop->new; # Net::Async::HTTP + SSL + IO::Poll doesn't play well. See # https://rt.cpan.org/Ticket/Display.html?id=93107 # ref $loop eq "IO::Async::Loop::Poll" and # warn "Using SSL with IO::Poll causes known memory-leaks!!\n"; GetOptions( 'C|config=s' => \my $CONFIG, 'eval-from=s' => \my $EVAL_FROM, ) or exit 1; if( defined $EVAL_FROM ) { # An emergency 'eval() this file' hack $SIG{HUP} = sub { my $code = do { open my $fh, "<", $EVAL_FROM or warn( "Cannot read - $!" ), return; local $/; <$fh> }; eval $code or warn "Cannot eval() - $@"; }; } defined $CONFIG or die "Must supply --config\n"; my %CONFIG = %{ YAML::LoadFile( $CONFIG ) }; my %MATRIX_CONFIG = %{ $CONFIG{matrix} }; # No harm in always applying this $MATRIX_CONFIG{SSL_verify_mode} = SSL_VERIFY_NONE; my $bridgestate = {}; my $roomid_by_callid = {}; my $sessid = lc new Data::UUID->create_str(); my $as_token = $CONFIG{"matrix-bot"}->{as_token}; my $hs_domain = $CONFIG{"matrix-bot"}->{domain}; my $http = Net::Async::HTTP->new(); $loop->add( $http ); sub create_virtual_user { my ($localpart) = @_; my ( $response ) = $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/register?". "access_token=$as_token&user_id=$localpart" ), content_type => "application/json", content => <get; warn $response->as_string if ($response->code != 200); } my $http_server = Net::Async::HTTP::Server->new( on_request => sub { my $self = shift; my ( $req ) = @_; my $response; my $path = uri_decode($req->path); warn("request: $path"); if ($path =~ m#/users/\@(\+.*)#) { # when queried about virtual users, auto-create them in the HS my $localpart = $1; create_virtual_user($localpart); $response = HTTP::Response->new( 200 ); $response->add_content('{}'); $response->content_type( "application/json" ); } elsif ($path =~ m#/transactions/(.*)#) { my $event = JSON->new->decode($req->body); print Dumper($event); my $room_id = $event->{room_id}; my %dp = %{$CONFIG{'verto-dialog-params'}}; $dp{callID} = $bridgestate->{$room_id}->{callid}; if ($event->{type} eq 'm.room.membership') { my $membership = $event->{content}->{membership}; my $state_key = $event->{state_key}; my $room_id = $event->{state_id}; if ($membership eq 'invite') { # autojoin invites my ( $response ) = $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/rooms/$room_id/join?". "access_token=$as_token&user_id=$state_key" ), content_type => "application/json", content => "{}", )->get; warn $response->as_string if ($response->code != 200); } } elsif ($event->{type} eq 'm.call.invite') { my $room_id = $event->{room_id}; $bridgestate->{$room_id}->{matrix_callid} = $event->{content}->{call_id}; $bridgestate->{$room_id}->{callid} = lc new Data::UUID->create_str(); $bridgestate->{$room_id}->{sessid} = $sessid; # $bridgestate->{$room_id}->{offer} = $event->{content}->{offer}->{sdp}; my $offer = $event->{content}->{offer}->{sdp}; # $bridgestate->{$room_id}->{gathered_candidates} = 0; $roomid_by_callid->{ $bridgestate->{$room_id}->{callid} } = $room_id; # no trickle ICE in verto apparently my $f = send_verto_json_request("verto.invite", { "sdp" => $offer, "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $self->adopt_future($f); } # elsif ($event->{type} eq 'm.call.candidates') { # # XXX: this could fire for both matrix->verto and verto->matrix calls # # and races as it collects candidates. much better to just turn off # # candidate gathering in the webclient entirely for now # # my $room_id = $event->{room_id}; # # XXX: compare call IDs # if (!$bridgestate->{$room_id}->{gathered_candidates}) { # $bridgestate->{$room_id}->{gathered_candidates} = 1; # my $offer = $bridgestate->{$room_id}->{offer}; # my $candidate_block = ""; # foreach (@{$event->{content}->{candidates}}) { # $candidate_block .= "a=" . $_->{candidate} . "\r\n"; # } # # XXX: collate using the right m= line - for now assume audio call # $offer =~ s/(a=rtcp.*[\r\n]+)/$1$candidate_block/; # # my $f = send_verto_json_request("verto.invite", { # "sdp" => $offer, # "dialogParams" => \%dp, # "sessid" => $bridgestate->{$room_id}->{sessid}, # }); # $self->adopt_future($f); # } # else { # # ignore them, as no trickle ICE, although we might as well # # batch them up # # foreach (@{$event->{content}->{candidates}}) { # # push @{$bridgestate->{$room_id}->{candidates}}, $_; # # } # } # } elsif ($event->{type} eq 'm.call.answer') { # grab the answer and relay it to verto as a verto.answer my $room_id = $event->{room_id}; my $answer = $event->{content}->{answer}->{sdp}; my $f = send_verto_json_request("verto.answer", { "sdp" => $answer, "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $self->adopt_future($f); } elsif ($event->{type} eq 'm.call.hangup') { my $room_id = $event->{room_id}; if ($bridgestate->{$room_id}->{matrix_callid} eq $event->{content}->{call_id}) { my $f = send_verto_json_request("verto.bye", { "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, }); $self->adopt_future($f); } else { warn "Ignoring unrecognised callid: ".$event->{content}->{call_id}; } } else { warn "Unhandled event: $event->{type}"; } $response = HTTP::Response->new( 200 ); $response->add_content('{}'); $response->content_type( "application/json" ); } else { warn "Unhandled path: $path"; $response = HTTP::Response->new( 404 ); } $req->respond( $response ); }, ); $loop->add( $http_server ); $http_server->listen( addr => { family => "inet", socktype => "stream", port => 8009 }, on_listen_error => sub { die "Cannot listen - $_[-1]\n" }, ); my $bot_verto = Net::Async::WebSocket::Client->new( on_frame => sub { my ( $self, $frame ) = @_; warn "[Verto] receiving $frame"; on_verto_json($frame); }, ); $loop->add( $bot_verto ); my $verto_connecting = $loop->new_future; $bot_verto->connect( %{ $CONFIG{"verto-bot"} }, on_connected => sub { warn("[Verto] connected to websocket"); if (not $verto_connecting->is_done) { $verto_connecting->done($bot_verto); send_verto_json_request("login", { 'login' => $CONFIG{'verto-dialog-params'}{'login'}, 'passwd' => $CONFIG{'verto-config'}{'passwd'}, 'sessid' => $sessid, }); } }, on_connect_error => sub { die "Cannot connect to verto - $_[-1]" }, on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" }, ); # die Dumper($verto_connecting); my $as_url = $CONFIG{"matrix-bot"}->{as_url}; Future->needs_all( $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}."/_matrix/appservice/v1/register" ), content_type => "application/json", content => <then( sub{ my ($response) = (@_); warn $response->as_string if ($response->code != 200); return Future->done; }), $verto_connecting, )->get; $loop->attach_signal( PIPE => sub { warn "pipe\n" } ); $loop->attach_signal( INT => sub { $loop->stop }, ); $loop->attach_signal( TERM => sub { $loop->stop }, ); eval { $loop->run; } or my $e = $@; die $e if $e; exit 0; { my $json_id; my $requests; sub send_verto_json_request { $json_id ||= 1; my ($method, $params) = @_; my $json = { jsonrpc => "2.0", method => $method, params => $params, id => $json_id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); my $request = $loop->new_future; $requests->{$json_id} = $request; $json_id++; return $request; } sub send_verto_json_response { my ($result, $id) = @_; my $json = { jsonrpc => "2.0", result => $result, id => $id, }; my $text = JSON->new->encode( $json ); warn "[Verto] sending $text"; $bot_verto->send_frame ( $text ); } sub on_verto_json { my $json = JSON->new->decode( $_[0] ); if ($json->{method}) { if (($json->{method} eq 'verto.answer' && $json->{params}->{sdp}) || $json->{method} eq 'verto.media') { my $caller = $json->{dialogParams}->{caller_id_number}; my $callee = $json->{dialogParams}->{destination_number}; my $caller_user = '@+' . $caller . ':' . $hs_domain; my $callee_user = $msisdn_to_matrix->{$callee} || warn "unrecogised callee: $callee"; my $room_id = $roomid_by_callid->{$json->{params}->{callID}}; if ($json->{params}->{sdp}) { $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/send/m.call.answer?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, answer => { sdp => $json->{params}->{sdp}, type => "answer", }, }), )->then( sub { send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } } elsif ($json->{method} eq 'verto.invite') { my $caller = $json->{dialogParams}->{caller_id_number}; my $callee = $json->{dialogParams}->{destination_number}; my $caller_user = '@+' . $caller . ':' . $hs_domain; my $callee_user = $msisdn_to_matrix->{$callee} || warn "unrecogised callee: $callee"; my $alias = ($caller lt $callee) ? ($caller.'-'.$callee) : ($callee.'-'.$caller); my $room_id; # create a virtual user for the caller if needed. create_virtual_user($caller); # create a room of form #peer-peer and invite the callee $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/createRoom?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ room_alias_name => $alias, invite => [ $callee_user ], }), )->then( sub { my ( $response ) = @_; my $resp = JSON->new->decode($response->content); $room_id = $resp->{room_id}; $roomid_by_callid->{$json->{params}->{callID}} = $room_id; })->get; # join it my ($response) = $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/join/$room_id?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => '{}', )->get; $bridgestate->{$room_id}->{matrix_callid} = lc new Data::UUID->create_str(); $bridgestate->{$room_id}->{callid} = $json->{dialogParams}->{callID}; $bridgestate->{$room_id}->{sessid} = $sessid; # put the m.call.invite in there $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/send/m.call.invite?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, answer => { sdp => $json->{params}->{sdp}, type => "offer", }, }), )->then( sub { # acknowledge the verto send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } elsif ($json->{method} eq 'verto.bye') { my $caller = $json->{dialogParams}->{caller_id_number}; my $callee = $json->{dialogParams}->{destination_number}; my $caller_user = '@+' . $caller . ':' . $hs_domain; my $callee_user = $msisdn_to_matrix->{$callee} || warn "unrecogised callee: $callee"; my $room_id = $roomid_by_callid->{$json->{params}->{callID}}; # put the m.call.hangup into the room $http->do_request( method => "POST", uri => URI->new( $CONFIG{"matrix"}->{server}. "/_matrix/client/api/v1/send/m.call.hangup?". "access_token=$as_token&user_id=$caller_user" ), content_type => "application/json", content => JSON->new->encode({ call_id => $bridgestate->{$room_id}->{matrix_callid}, version => 0, }), )->then( sub { # acknowledge the verto send_verto_json_response( { method => $json->{method}, }, $json->{id}); })->get; } else { warn ("[Verto] unhandled method: " . $json->{method}); send_verto_json_response( { method => $json->{method}, }, $json->{id}); } } elsif ($json->{result}) { $requests->{$json->{id}}->done($json->{result}); } elsif ($json->{error}) { $requests->{$json->{id}}->fail($json->{error}->{message}, $json->{error}); } } } synapse-1.100.0/contrib/vertobot/config.yaml000066400000000000000000000012431455622526000207770ustar00rootroot00000000000000# Generic Matrix connection params matrix: server: 'matrix.org' SSL: 1 # Bot-user connection details matrix-bot: user_id: '@vertobot:matrix.org' password: '' domain: 'matrix.org" as_url: 'http://localhost:8009' as_token: 'vertobot123' verto-bot: host: webrtc.freeswitch.org service: 8081 url: "ws://webrtc.freeswitch.org:8081/" verto-config: passwd: 1234 verto-dialog-params: useVideo: false useStereo: false tag: "webcam" login: "1008@webrtc.freeswitch.org" destination_number: "9664" caller_id_name: "FreeSWITCH User" caller_id_number: "1008" callID: "" remote_caller_id_name: "Outbound Call" remote_caller_id_number: "9664" synapse-1.100.0/contrib/vertobot/cpanfile000066400000000000000000000005651455622526000203600ustar00rootroot00000000000000requires 'parent', 0; requires 'Future', '>= 0.29'; requires 'Net::Async::Matrix', '>= 0.11_002'; requires 'Net::Async::Matrix::Utils'; requires 'Net::Async::WebSocket::Protocol', 0; requires 'Data::UUID', 0; requires 'IO::Async', '>= 0.63'; requires 'IO::Async::SSL', 0; requires 'IO::Socket::SSL', 0; requires 'YAML', 0; requires 'JSON', 0; requires 'Getopt::Long', 0; synapse-1.100.0/contrib/vertobot/verto-example.json000066400000000000000000000172551455622526000223430ustar00rootroot00000000000000# JSON is shown in *reverse* chronological order. # Send v. Receive is implicit. { "jsonrpc": "2.0", "id": 7, "result": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "message": "CALL ENDED", "causeCode": 16, "cause": "NORMAL_CLEARING", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.bye", "params": { "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 7 } { "jsonrpc": "2.0", "id": 6, "result": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "action": "toggleHold", "holdState": "active", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.modify", "params": { "action": "toggleHold", "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 6 } { "jsonrpc": "2.0", "id": 5, "result": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "action": "toggleHold", "holdState": "held", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.modify", "params": { "action": "toggleHold", "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 5 } { "jsonrpc": "2.0", "id": 349819, "result": { "method": "verto.answer" } } { "jsonrpc": "2.0", "id": 349819, "method": "verto.answer", "params": { "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "sdp": "v=0\no=FreeSWITCH 1417101432 1417101433 IN IP4 209.105.235.10\ns=FreeSWITCH\nc=IN IP4 209.105.235.10\nt=0 0\na=msid-semantic: WMS jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vq\nm=audio 30134 RTP/SAVPF 111 126\na=rtpmap:111 opus/48000/2\na=fmtp:111 minptime=10; stereo=1\na=rtpmap:126 telephone-event/8000\na=silenceSupp:off - - - -\na=ptime:20\na=sendrecv\na=fingerprint:sha-256 F8:72:18:E9:72:89:99:22:5B:F8:B6:C6:C6:0D:C5:9B:B2:FB:BC:CA:8D:AB:13:8A:66:E1:37:38:A0:16:AA:41\na=rtcp-mux\na=rtcp:30134 IN IP4 209.105.235.10\na=ssrc:210967934 cname:rOIEajpw4FocakWY\na=ssrc:210967934 msid:jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vq a0\na=ssrc:210967934 mslabel:jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vq\na=ssrc:210967934 label:jA3rmwLVwUq1iE6TYEYHeLk2YTUlh1Vqa0\na=ice-ufrag:OKwTmGLapwmxn7OF\na=ice-pwd:MmaMwq8rVmtWxfLbQ7U2Ew3T\na=candidate:2372654928 1 udp 659136 209.105.235.10 30134 typ host generation 0\n" } } { "jsonrpc": "2.0", "id": 4, "result": { "message": "CALL CREATED", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "method": "verto.invite", "params": { "sdp": "v=0\r\no=- 1381685806032722557 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio\r\na=msid-semantic: WMS 6OOMyGAyJakjwaOOBtV7WcBCCuIW6PpuXsNg\r\nm=audio 63088 RTP/SAVPF 111 103 104 0 8 106 105 13 126\r\nc=IN IP4 81.138.8.249\r\na=rtcp:63088 IN IP4 81.138.8.249\r\na=candidate:460398169 1 udp 2122260223 10.10.79.10 49945 typ host generation 0\r\na=candidate:460398169 2 udp 2122260223 10.10.79.10 49945 typ host generation 0\r\na=candidate:3460887983 1 udp 2122194687 192.168.1.64 63088 typ host generation 0\r\na=candidate:3460887983 2 udp 2122194687 192.168.1.64 63088 typ host generation 0\r\na=candidate:945327227 1 udp 1685987071 81.138.8.249 63088 typ srflx raddr 192.168.1.64 rport 63088 generation 0\r\na=candidate:945327227 2 udp 1685987071 81.138.8.249 63088 typ srflx raddr 192.168.1.64 rport 63088 generation 0\r\na=candidate:1441981097 1 tcp 1518280447 10.10.79.10 0 typ host tcptype active generation 0\r\na=candidate:1441981097 2 tcp 1518280447 10.10.79.10 0 typ host tcptype active generation 0\r\na=candidate:2160789855 1 tcp 1518214911 192.168.1.64 0 typ host tcptype active generation 0\r\na=candidate:2160789855 2 tcp 1518214911 192.168.1.64 0 typ host tcptype active generation 0\r\na=ice-ufrag:cP4qeRhn0LpcpA88\r\na=ice-pwd:fREmgSkXsDLGUUH1bwfrBQhW\r\na=ice-options:google-ice\r\na=fingerprint:sha-256 AF:35:64:1B:62:8A:EF:27:AE:2B:88:2E:FE:78:29:0B:08:DA:64:6C:DE:02:57:E3:EE:B1:D7:86:B8:36:8F:B0\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10; stereo=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:126 telephone-event/8000\r\na=maxptime:60\r\na=ssrc:558827154 cname:vdKHBNqa17t2gmE3\r\na=ssrc:558827154 msid:6OOMyGAyJakjwaOOBtV7WcBCCuIW6PpuXsNg bf1303fb-9833-4d7d-b9e4-b32cfe04acc3\r\na=ssrc:558827154 mslabel:6OOMyGAyJakjwaOOBtV7WcBCCuIW6PpuXsNg\r\na=ssrc:558827154 label:bf1303fb-9833-4d7d-b9e4-b32cfe04acc3\r\n", "dialogParams": { "useVideo": false, "useStereo": true, "tag": "webcam", "login": "1008@webrtc.freeswitch.org", "destination_number": "9664", "caller_id_name": "FreeSWITCH User", "caller_id_number": "1008", "callID": "12795aa6-2a8d-84ee-ce63-2e82ffe825ef", "remote_caller_id_name": "Outbound Call", "remote_caller_id_number": "9664" }, "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 4 } { "jsonrpc": "2.0", "id": 3, "result": { "message": "logged in", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" } } { "jsonrpc": "2.0", "id": 1, "error": { "code": -32000, "message": "Authentication Required" } } { "jsonrpc": "2.0", "method": "login", "params": { "login": "1008@webrtc.freeswitch.org", "passwd": "1234", "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 3 } { "jsonrpc": "2.0", "id": 2, "error": { "code": -32000, "message": "Authentication Required" } } { "jsonrpc": "2.0", "method": "login", "params": { "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 1 } { "jsonrpc": "2.0", "method": "login", "params": { "sessid": "03a11060-3e14-23b6-c620-51b892c52983" }, "id": 2 } synapse-1.100.0/contrib/workers-bash-scripts/000077500000000000000000000000001455622526000210765ustar00rootroot00000000000000synapse-1.100.0/contrib/workers-bash-scripts/create-multiple-generic-workers.md000066400000000000000000000020111455622526000276120ustar00rootroot00000000000000# Creating multiple generic workers with a bash script Setting up multiple worker configuration files manually can be time-consuming. You can alternatively create multiple worker configuration files with a simple `bash` script. For example: ```sh #!/bin/bash for i in {1..5} do cat << EOF > generic_worker$i.yaml worker_app: synapse.app.generic_worker worker_name: generic_worker$i # The replication listener on the main synapse process. worker_replication_host: 127.0.0.1 worker_replication_http_port: 9093 worker_listeners: - type: http port: 808$i x_forwarded: true resources: - names: [client, federation] worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml #worker_pid_file: DATADIR/generic_worker$i.pid EOF done ``` This would create five generic workers with a unique `worker_name` field in each file and listening on ports 8081-8085. Customise the script to your needs. Note that `worker_pid_file` is required if `worker_daemonize` is `true`. Uncomment and/or modify the line if needed. synapse-1.100.0/contrib/workers-bash-scripts/create-multiple-stream-writers.md000066400000000000000000000113171455622526000275050ustar00rootroot00000000000000# Creating multiple stream writers with a bash script This script creates multiple [stream writer](https://github.com/element-hq/synapse/blob/develop/docs/workers.md#stream-writers) workers. Stream writers require both replication and HTTP listeners. It also prints out the example lines for Synapse main configuration file. Remember to route necessary endpoints directly to a worker associated with it. If you run the script as-is, it will create workers with the replication listener starting from port 8034 and another, regular http listener starting from 8044. If you don't need all of the stream writers listed in the script, just remove them from the ```STREAM_WRITERS``` array. Hint: Note that `worker_pid_file` is required if `worker_daemonize` is `true`. Uncomment and/or modify the line if needed. ```sh #!/bin/bash # Start with these replication and http ports. # The script loop starts with the exact port and then increments it by one. REP_START_PORT=8034 HTTP_START_PORT=8044 # Stream writer workers to generate. Feel free to add or remove them as you wish. # Event persister ("events") isn't included here as it does not require its # own HTTP listener. STREAM_WRITERS+=( "presence" "typing" "receipts" "to_device" "account_data" ) NUM_WRITERS=$(expr ${#STREAM_WRITERS[@]}) i=0 while [ $i -lt "$NUM_WRITERS" ] do cat << EOF > ${STREAM_WRITERS[$i]}_stream_writer.yaml worker_app: synapse.app.generic_worker worker_name: ${STREAM_WRITERS[$i]}_stream_writer # The replication listener on the main synapse process. worker_replication_host: 127.0.0.1 worker_replication_http_port: 9093 worker_listeners: - type: http port: $(expr $REP_START_PORT + $i) resources: - names: [replication] - type: http port: $(expr $HTTP_START_PORT + $i) x_forwarded: true resources: - names: [client] #worker_pid_file: DATADIR/${STREAM_WRITERS[$i]}.pid worker_log_config: /etc/matrix-synapse/stream-writer-log.yaml EOF HOMESERVER_YAML_INSTANCE_MAP+=$" ${STREAM_WRITERS[$i]}_stream_writer: host: 127.0.0.1 port: $(expr $REP_START_PORT + $i) " HOMESERVER_YAML_STREAM_WRITERS+=$" ${STREAM_WRITERS[$i]}: ${STREAM_WRITERS[$i]}_stream_writer " ((i++)) done cat << EXAMPLECONFIG # Add these lines to your homeserver.yaml. # Don't forget to configure your reverse proxy and # necessary endpoints to their respective worker. # See https://github.com/element-hq/synapse/blob/develop/docs/workers.md # for more information. # Remember: Under NO circumstances should the replication # listener be exposed to the public internet; # it has no authentication and is unencrypted. instance_map: $HOMESERVER_YAML_INSTANCE_MAP stream_writers: $HOMESERVER_YAML_STREAM_WRITERS EXAMPLECONFIG ``` Copy the code above save it to a file ```create_stream_writers.sh``` (for example). Make the script executable by running ```chmod +x create_stream_writers.sh```. ## Run the script to create workers and print out a sample configuration Simply run the script to create YAML files in the current folder and print out the required configuration for ```homeserver.yaml```. ```console $ ./create_stream_writers.sh ``` You should receive an output similar to the following: ```console # Add these lines to your homeserver.yaml. # Don't forget to configure your reverse proxy and # necessary endpoints to their respective worker. # See https://github.com/element-hq/synapse/blob/develop/docs/workers.md # for more information # Remember: Under NO circumstances should the replication # listener be exposed to the public internet; # it has no authentication and is unencrypted. instance_map: presence_stream_writer: host: 127.0.0.1 port: 8034 typing_stream_writer: host: 127.0.0.1 port: 8035 receipts_stream_writer: host: 127.0.0.1 port: 8036 to_device_stream_writer: host: 127.0.0.1 port: 8037 account_data_stream_writer: host: 127.0.0.1 port: 8038 stream_writers: presence: presence_stream_writer typing: typing_stream_writer receipts: receipts_stream_writer to_device: to_device_stream_writer account_data: account_data_stream_writer ``` Simply copy-and-paste the output to an appropriate place in your Synapse main configuration file. ## Write directly to Synapse configuration file You could also write the output directly to homeserver main configuration file. **This, however, is not recommended** as even a small typo (such as replacing >> with >) can erase the entire ```homeserver.yaml```. If you do this, back up your original configuration file first: ```console # Back up homeserver.yaml first cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.bak # Create workers and write output to your homeserver.yaml ./create_stream_writers.sh >> /etc/matrix-synapse/homeserver.yaml ``` synapse-1.100.0/debian/000077500000000000000000000000001455622526000145645ustar00rootroot00000000000000synapse-1.100.0/debian/.gitignore000066400000000000000000000002351455622526000165540ustar00rootroot00000000000000/matrix-synapse-py3.*.debhelper /matrix-synapse-py3.debhelper.log /matrix-synapse-py3.substvars /matrix-synapse-*/ /files /debhelper-build-stamp /.debhelper synapse-1.100.0/debian/NEWS000066400000000000000000000032121455622526000152610ustar00rootroot00000000000000matrix-synapse-py3 (0.34.0) stable; urgency=medium matrix-synapse-py3 is intended as a drop-in replacement for the existing matrix-synapse package. When the package is installed, matrix-synapse will be automatically uninstalled. The replacement should be relatively seamless, however, please note the following important differences to matrix-synapse: * Most importantly, the matrix-synapse service now runs under Python 3 rather than Python 2.7. * Synapse is installed into its own virtualenv (in /opt/venvs/matrix-synapse) instead of using the system python libraries. (This may mean that you can remove a number of old dependencies with `apt autoremove`). * If you have previously manually installed any custom python extensions (such as matrix-synapse-rest-auth) into the system python directories, you will need to reinstall them in the new virtualenv. Please consult the documentation of the relevant extensions for further details. matrix-synapse-py3 will take over responsibility for the existing configuration files, including the matrix-synapse systemd service. Beware, however, that `apt purge matrix-synapse` will *disable* the matrix-synapse service (so that it will not be started on reboot), even though that service is no longer being provided by the matrix-synapse package. It can be re-enabled with `systemctl enable matrix-synapse`. The matrix.org team will continue to provide Python 2 `matrix-synapse` packages for the next couple of releases, to allow time for system administrators to test the new packages. -- Richard van der Hoff Wed, 19 Dec 2018 14:00:00 +0000 synapse-1.100.0/debian/build_virtualenv000077500000000000000000000107461455622526000201000ustar00rootroot00000000000000#!/bin/bash # # runs dh_virtualenv to build the virtualenv in the build directory, # and then runs the trial tests against the installed synapse. set -e export DH_VIRTUALENV_INSTALL_ROOT=/opt/venvs # make sure that the virtualenv links to the specific version of python, by # dereferencing the python3 symlink. # # Otherwise, if somebody tries to install (say) the stretch package on buster, # they will get a confusing error about "No module named 'synapse'", because # python won't look in the right directory. At least this way, the error will # be a *bit* more obvious. # SNAKE=$(readlink -e /usr/bin/python3) # try to set the CFLAGS so any compiled C extensions are compiled with the most # generic as possible x64 instructions, so that compiling it on a new Intel chip # doesn't enable features not available on older ones or AMD. # # TODO: add similar things for non-amd64, or figure out a more generic way to # do this. case $(dpkg-architecture -q DEB_HOST_ARCH) in amd64) export CFLAGS=-march=x86-64 ;; esac # Manually install Poetry and export a pip-compatible `requirements.txt` TEMP_VENV="$(mktemp -d)" python3 -m venv "$TEMP_VENV" source "$TEMP_VENV/bin/activate" pip install -U pip pip install poetry==1.3.2 poetry export \ --extras all \ --extras test \ --extras systemd \ -o exported_requirements.txt deactivate rm -rf "$TEMP_VENV" # Use --no-deps to only install pinned versions in exported_requirements.txt, # and to avoid https://github.com/pypa/pip/issues/9644 dh_virtualenv \ --install-suffix "matrix-synapse" \ --builtin-venv \ --python "$SNAKE" \ --upgrade-pip \ --preinstall="lxml" \ --preinstall="mock" \ --preinstall="wheel" \ --extra-pip-arg="--no-deps" \ --extra-pip-arg="--no-cache-dir" \ --extra-pip-arg="--compile" \ --extras="all,systemd,test" \ --requirements="exported_requirements.txt" PACKAGE_BUILD_DIR="$(pwd)/debian/matrix-synapse-py3" VIRTUALENV_DIR="${PACKAGE_BUILD_DIR}${DH_VIRTUALENV_INSTALL_ROOT}/matrix-synapse" TARGET_PYTHON="${VIRTUALENV_DIR}/bin/python" case "$DEB_BUILD_OPTIONS" in *nocheck*) # Skip running tests if "nocheck" present in $DEB_BUILD_OPTIONS ;; *) # Copy tests to a temporary directory so that we can put them on the # PYTHONPATH without putting the uninstalled synapse on the pythonpath. tmpdir=$(mktemp -d) trap 'rm -r $tmpdir' EXIT cp -r tests "$tmpdir" # To avoid pulling in the unbuilt Synapse in the local directory pushd / PYTHONPATH="$tmpdir" \ "${TARGET_PYTHON}" -m twisted.trial --reporter=text -j2 tests popd ;; esac # build the config file "${TARGET_PYTHON}" "${VIRTUALENV_DIR}/bin/generate_config" \ --config-dir="/etc/matrix-synapse" \ --data-dir="/var/lib/matrix-synapse" | perl -pe ' # tweak the paths to the tls certs and signing keys /^tls_.*_path:/ and s/SERVERNAME/homeserver/; /^signing_key_path:/ and s/SERVERNAME/homeserver/; # tweak the pid file location /^pid_file:/ and s#:.*#: "/var/run/matrix-synapse.pid"#; # tweak the path to the log config /^log_config:/ and s/SERVERNAME\.log\.config/log.yaml/; # tweak the path to the media store /^media_store_path:/ and s#/media_store#/media#; # remove the server_name setting, which is set in a separate file /^server_name:/ and $_ = "#\n# This is set in /etc/matrix-synapse/conf.d/server_name.yaml for Debian installations.\n# $_"; # remove the report_stats setting, which is set in a separate file /^# report_stats:/ and $_ = ""; ' > "${PACKAGE_BUILD_DIR}/etc/matrix-synapse/homeserver.yaml" # build the log config file "${TARGET_PYTHON}" "${VIRTUALENV_DIR}/bin/generate_log_config" \ --output-file="${PACKAGE_BUILD_DIR}/etc/matrix-synapse/log.yaml" # add a dependency on the right version of python to substvars. PYPKG=$(basename "$SNAKE") echo "synapse:pydepends=$PYPKG" >> debian/matrix-synapse-py3.substvars # add a couple of triggers. This is needed so that dh-virtualenv can rebuild # the venv when the system python changes (see # https://dh-virtualenv.readthedocs.io/en/latest/tutorial.html#step-2-set-up-packaging-for-your-project) # # we do it here rather than the more conventional way of just adding it to # debian/matrix-synapse-py3.triggers, because we need to add a trigger on the # right version of python. cat >>"debian/.debhelper/generated/matrix-synapse-py3/triggers" < Tue, 30 Jan 2024 16:58:19 +0000 matrix-synapse-py3 (1.100.0~rc3) stable; urgency=medium * New Synapse release 1.100.0rc3. -- Synapse Packaging team Wed, 24 Jan 2024 14:18:15 +0000 matrix-synapse-py3 (1.100.0~rc2) stable; urgency=medium * New Synapse release 1.100.0rc2. -- Synapse Packaging team Wed, 24 Jan 2024 11:59:51 +0000 matrix-synapse-py3 (1.100.0~rc1) stable; urgency=medium * New Synapse release 1.100.0rc1. -- Synapse Packaging team Tue, 23 Jan 2024 14:24:16 +0000 matrix-synapse-py3 (1.99.0) stable; urgency=medium * Fix copyright file with new licensing * New Synapse release 1.99.0. -- Synapse Packaging team Tue, 16 Jan 2024 11:58:34 +0000 matrix-synapse-py3 (1.99.0~rc1) stable; urgency=medium * New Synapse release 1.99.0rc1. -- Synapse Packaging team Tue, 09 Jan 2024 13:43:56 +0000 matrix-synapse-py3 (1.98.0) stable; urgency=medium * New Synapse release 1.98.0. -- Synapse Packaging team Tue, 12 Dec 2023 15:04:31 +0000 matrix-synapse-py3 (1.98.0~rc1) stable; urgency=medium * New Synapse release 1.98.0rc1. -- Synapse Packaging team Tue, 05 Dec 2023 13:08:42 +0000 matrix-synapse-py3 (1.97.0) stable; urgency=medium * New Synapse release 1.97.0. -- Synapse Packaging team Tue, 28 Nov 2023 14:08:58 +0000 matrix-synapse-py3 (1.97.0~rc1) stable; urgency=medium * New Synapse release 1.97.0rc1. -- Synapse Packaging team Tue, 21 Nov 2023 12:32:03 +0000 matrix-synapse-py3 (1.96.1) stable; urgency=medium * New synapse release 1.96.1. -- Synapse Packaging team Fri, 17 Nov 2023 12:48:45 +0000 matrix-synapse-py3 (1.96.0) stable; urgency=medium * New synapse release 1.96.0. -- Synapse Packaging team Thu, 16 Nov 2023 17:54:26 +0000 matrix-synapse-py3 (1.96.0~rc1) stable; urgency=medium * New Synapse release 1.96.0rc1. -- Synapse Packaging team Tue, 31 Oct 2023 14:09:09 +0000 matrix-synapse-py3 (1.95.1) stable; urgency=medium * New Synapse release 1.95.1. -- Synapse Packaging team Tue, 31 Oct 2023 14:00:00 +0000 matrix-synapse-py3 (1.95.0) stable; urgency=medium * New Synapse release 1.95.0. -- Synapse Packaging team Tue, 24 Oct 2023 13:00:46 +0100 matrix-synapse-py3 (1.95.0~rc1) stable; urgency=medium * New synapse release 1.95.0rc1. -- Synapse Packaging team Tue, 17 Oct 2023 15:50:17 +0000 matrix-synapse-py3 (1.94.0) stable; urgency=medium * New Synapse release 1.94.0. -- Synapse Packaging team Tue, 10 Oct 2023 10:57:41 +0100 matrix-synapse-py3 (1.94.0~rc1) stable; urgency=medium * New Synapse release 1.94.0rc1. -- Synapse Packaging team Tue, 03 Oct 2023 11:48:18 +0100 matrix-synapse-py3 (1.93.0) stable; urgency=medium * New Synapse release 1.93.0. -- Synapse Packaging team Tue, 26 Sep 2023 15:54:40 +0100 matrix-synapse-py3 (1.93.0~rc1) stable; urgency=medium * New synapse release 1.93.0rc1. -- Synapse Packaging team Tue, 19 Sep 2023 11:55:00 +0000 matrix-synapse-py3 (1.92.3) stable; urgency=medium * New Synapse release 1.92.3. -- Synapse Packaging team Mon, 18 Sep 2023 15:05:04 +0200 matrix-synapse-py3 (1.92.2) stable; urgency=medium * New Synapse release 1.92.2. -- Synapse Packaging team Fri, 15 Sep 2023 13:17:41 +0100 matrix-synapse-py3 (1.92.1) stable; urgency=medium * New Synapse release 1.92.1. -- Synapse Packaging team Tue, 12 Sep 2023 13:19:42 +0200 matrix-synapse-py3 (1.92.0) stable; urgency=medium * New Synapse release 1.92.0. -- Synapse Packaging team Tue, 12 Sep 2023 11:59:23 +0200 matrix-synapse-py3 (1.91.2) stable; urgency=medium * New synapse release 1.91.2. -- Synapse Packaging team Wed, 06 Sep 2023 14:59:30 +0000 matrix-synapse-py3 (1.92.0~rc1) stable; urgency=medium * New Synapse release 1.92.0rc1. -- Synapse Packaging team Tue, 05 Sep 2023 11:21:43 +0100 matrix-synapse-py3 (1.91.1) stable; urgency=medium * New Synapse release 1.91.1. -- Synapse Packaging team Mon, 04 Sep 2023 14:03:18 +0100 matrix-synapse-py3 (1.91.0) stable; urgency=medium * New Synapse release 1.91.0. -- Synapse Packaging team Wed, 30 Aug 2023 11:18:10 +0100 matrix-synapse-py3 (1.91.0~rc1) stable; urgency=medium * New Synapse release 1.91.0rc1. -- Synapse Packaging team Wed, 23 Aug 2023 09:47:18 -0700 matrix-synapse-py3 (1.90.0) stable; urgency=medium * New Synapse release 1.90.0. -- Synapse Packaging team Tue, 15 Aug 2023 11:17:34 +0100 matrix-synapse-py3 (1.90.0~rc1) stable; urgency=medium * New Synapse release 1.90.0rc1. -- Synapse Packaging team Tue, 08 Aug 2023 15:29:34 +0100 matrix-synapse-py3 (1.89.0) stable; urgency=medium * New Synapse release 1.89.0. -- Synapse Packaging team Tue, 01 Aug 2023 11:07:15 +0100 matrix-synapse-py3 (1.89.0~rc1) stable; urgency=medium * New Synapse release 1.89.0rc1. -- Synapse Packaging team Tue, 25 Jul 2023 14:31:07 +0200 matrix-synapse-py3 (1.88.0) stable; urgency=medium * New Synapse release 1.88.0. -- Synapse Packaging team Tue, 18 Jul 2023 13:59:28 +0100 matrix-synapse-py3 (1.88.0~rc1) stable; urgency=medium * New Synapse release 1.88.0rc1. -- Synapse Packaging team Tue, 11 Jul 2023 10:20:19 +0100 matrix-synapse-py3 (1.87.0) stable; urgency=medium * New Synapse release 1.87.0. -- Synapse Packaging team Tue, 04 Jul 2023 16:24:00 +0100 matrix-synapse-py3 (1.87.0~rc1) stable; urgency=medium * New synapse release 1.87.0rc1. -- Synapse Packaging team Tue, 27 Jun 2023 15:27:04 +0000 matrix-synapse-py3 (1.86.0) stable; urgency=medium * New Synapse release 1.86.0. -- Synapse Packaging team Tue, 20 Jun 2023 17:22:46 +0200 matrix-synapse-py3 (1.86.0~rc2) stable; urgency=medium * New Synapse release 1.86.0rc2. -- Synapse Packaging team Wed, 14 Jun 2023 12:16:27 +0200 matrix-synapse-py3 (1.86.0~rc1) stable; urgency=medium * New Synapse release 1.86.0rc1. -- Synapse Packaging team Tue, 13 Jun 2023 14:30:45 +0200 matrix-synapse-py3 (1.85.2) stable; urgency=medium * New Synapse release 1.85.2. -- Synapse Packaging team Thu, 08 Jun 2023 13:04:18 +0100 matrix-synapse-py3 (1.85.1) stable; urgency=medium * New Synapse release 1.85.1. -- Synapse Packaging team Wed, 07 Jun 2023 10:51:12 +0100 matrix-synapse-py3 (1.85.0) stable; urgency=medium * New Synapse release 1.85.0. -- Synapse Packaging team Tue, 06 Jun 2023 09:39:29 +0100 matrix-synapse-py3 (1.85.0~rc2) stable; urgency=medium * New Synapse release 1.85.0rc2. -- Synapse Packaging team Thu, 01 Jun 2023 09:16:18 -0700 matrix-synapse-py3 (1.85.0~rc1) stable; urgency=medium * New Synapse release 1.85.0rc1. -- Synapse Packaging team Tue, 30 May 2023 13:56:54 +0100 matrix-synapse-py3 (1.84.1) stable; urgency=medium * New Synapse release 1.84.1. -- Synapse Packaging team Fri, 26 May 2023 16:15:30 +0100 matrix-synapse-py3 (1.84.0) stable; urgency=medium * New Synapse release 1.84.0. -- Synapse Packaging team Tue, 23 May 2023 10:57:22 +0100 matrix-synapse-py3 (1.84.0~rc1) stable; urgency=medium * New Synapse release 1.84.0rc1. -- Synapse Packaging team Tue, 16 May 2023 11:12:02 +0100 matrix-synapse-py3 (1.83.0) stable; urgency=medium * New Synapse release 1.83.0. -- Synapse Packaging team Tue, 09 May 2023 18:13:37 +0200 matrix-synapse-py3 (1.83.0~rc1) stable; urgency=medium * New Synapse release 1.83.0rc1. -- Synapse Packaging team Tue, 02 May 2023 15:56:38 +0100 matrix-synapse-py3 (1.82.0) stable; urgency=medium * New Synapse release 1.82.0. -- Synapse Packaging team Tue, 25 Apr 2023 11:56:06 +0100 matrix-synapse-py3 (1.82.0~rc1) stable; urgency=medium * New Synapse release 1.82.0rc1. -- Synapse Packaging team Tue, 18 Apr 2023 09:47:30 +0100 matrix-synapse-py3 (1.81.0) stable; urgency=medium * New Synapse release 1.81.0. -- Synapse Packaging team Tue, 11 Apr 2023 14:18:35 +0100 matrix-synapse-py3 (1.81.0~rc2) stable; urgency=medium * New Synapse release 1.81.0rc2. -- Synapse Packaging team Thu, 06 Apr 2023 16:07:54 +0100 matrix-synapse-py3 (1.81.0~rc1) stable; urgency=medium * New Synapse release 1.81.0rc1. -- Synapse Packaging team Tue, 04 Apr 2023 14:29:03 +0100 matrix-synapse-py3 (1.80.0) stable; urgency=medium * New Synapse release 1.80.0. -- Synapse Packaging team Tue, 28 Mar 2023 11:10:33 +0100 matrix-synapse-py3 (1.80.0~rc2) stable; urgency=medium * New Synapse release 1.80.0rc2. -- Synapse Packaging team Wed, 22 Mar 2023 08:30:16 -0700 matrix-synapse-py3 (1.80.0~rc1) stable; urgency=medium * New Synapse release 1.80.0rc1. -- Synapse Packaging team Tue, 21 Mar 2023 10:56:08 -0700 matrix-synapse-py3 (1.79.0) stable; urgency=medium * New Synapse release 1.79.0. -- Synapse Packaging team Tue, 14 Mar 2023 16:14:50 +0100 matrix-synapse-py3 (1.79.0~rc2) stable; urgency=medium * New Synapse release 1.79.0rc2. -- Synapse Packaging team Mon, 13 Mar 2023 12:54:21 +0000 matrix-synapse-py3 (1.79.0~rc1) stable; urgency=medium * New Synapse release 1.79.0rc1. -- Synapse Packaging team Tue, 07 Mar 2023 12:03:49 +0000 matrix-synapse-py3 (1.78.0) stable; urgency=medium * New Synapse release 1.78.0. -- Synapse Packaging team Tue, 28 Feb 2023 08:56:03 -0800 matrix-synapse-py3 (1.78.0~rc1) stable; urgency=medium * Add `matrix-org-archive-keyring` package as recommended. * New Synapse release 1.78.0rc1. -- Synapse Packaging team Tue, 21 Feb 2023 14:29:19 +0000 matrix-synapse-py3 (1.77.0) stable; urgency=medium * New Synapse release 1.77.0. -- Synapse Packaging team Tue, 14 Feb 2023 12:59:02 +0100 matrix-synapse-py3 (1.77.0~rc2) stable; urgency=medium * New Synapse release 1.77.0rc2. -- Synapse Packaging team Fri, 10 Feb 2023 12:44:21 +0000 matrix-synapse-py3 (1.77.0~rc1) stable; urgency=medium * New Synapse release 1.77.0rc1. -- Synapse Packaging team Tue, 07 Feb 2023 13:45:14 +0000 matrix-synapse-py3 (1.76.0) stable; urgency=medium * New Synapse release 1.76.0. -- Synapse Packaging team Tue, 31 Jan 2023 08:21:47 -0800 matrix-synapse-py3 (1.76.0~rc2) stable; urgency=medium * New Synapse release 1.76.0rc2. -- Synapse Packaging team Fri, 27 Jan 2023 11:17:57 +0000 matrix-synapse-py3 (1.76.0~rc1) stable; urgency=medium * Use Poetry 1.3.2 to manage the bundled virtualenv included with this package. * New Synapse release 1.76.0rc1. -- Synapse Packaging team Wed, 25 Jan 2023 16:21:16 +0000 matrix-synapse-py3 (1.75.0) stable; urgency=medium * New Synapse release 1.75.0. -- Synapse Packaging team Tue, 17 Jan 2023 11:36:02 +0000 matrix-synapse-py3 (1.75.0~rc2) stable; urgency=medium * New Synapse release 1.75.0rc2. -- Synapse Packaging team Thu, 12 Jan 2023 10:30:15 -0800 matrix-synapse-py3 (1.75.0~rc1) stable; urgency=medium * New Synapse release 1.75.0rc1. -- Synapse Packaging team Tue, 10 Jan 2023 12:18:27 +0000 matrix-synapse-py3 (1.74.0) stable; urgency=medium * New Synapse release 1.74.0. -- Synapse Packaging team Tue, 20 Dec 2022 16:07:38 +0000 matrix-synapse-py3 (1.74.0~rc1) stable; urgency=medium * New dependency on libicu-dev to provide improved results for user search. * New Synapse release 1.74.0rc1. -- Synapse Packaging team Tue, 13 Dec 2022 13:30:01 +0000 matrix-synapse-py3 (1.73.0) stable; urgency=medium * New Synapse release 1.73.0. -- Synapse Packaging team Tue, 06 Dec 2022 11:48:56 +0000 matrix-synapse-py3 (1.73.0~rc2) stable; urgency=medium * New Synapse release 1.73.0rc2. -- Synapse Packaging team Thu, 01 Dec 2022 10:02:19 +0000 matrix-synapse-py3 (1.73.0~rc1) stable; urgency=medium * New Synapse release 1.73.0rc1. -- Synapse Packaging team Tue, 29 Nov 2022 12:28:13 +0000 matrix-synapse-py3 (1.72.0) stable; urgency=medium * New Synapse release 1.72.0. -- Synapse Packaging team Tue, 22 Nov 2022 10:57:30 +0000 matrix-synapse-py3 (1.72.0~rc1) stable; urgency=medium * New Synapse release 1.72.0rc1. -- Synapse Packaging team Wed, 16 Nov 2022 15:10:59 +0000 matrix-synapse-py3 (1.71.0) stable; urgency=medium * New Synapse release 1.71.0. -- Synapse Packaging team Tue, 08 Nov 2022 10:38:10 +0000 matrix-synapse-py3 (1.71.0~rc2) stable; urgency=medium * New Synapse release 1.71.0rc2. -- Synapse Packaging team Fri, 04 Nov 2022 12:00:33 +0000 matrix-synapse-py3 (1.71.0~rc1) stable; urgency=medium * New Synapse release 1.71.0rc1. -- Synapse Packaging team Tue, 01 Nov 2022 12:10:17 +0000 matrix-synapse-py3 (1.70.1) stable; urgency=medium * New Synapse release 1.70.1. -- Synapse Packaging team Fri, 28 Oct 2022 12:10:21 +0100 matrix-synapse-py3 (1.70.0) stable; urgency=medium * New Synapse release 1.70.0. -- Synapse Packaging team Wed, 26 Oct 2022 11:11:50 +0100 matrix-synapse-py3 (1.70.0~rc2) stable; urgency=medium * New Synapse release 1.70.0rc2. -- Synapse Packaging team Tue, 25 Oct 2022 10:59:47 +0100 matrix-synapse-py3 (1.70.0~rc1) stable; urgency=medium * New Synapse release 1.70.0rc1. -- Synapse Packaging team Wed, 19 Oct 2022 14:11:57 +0100 matrix-synapse-py3 (1.69.0) stable; urgency=medium * New Synapse release 1.69.0. -- Synapse Packaging team Mon, 17 Oct 2022 11:31:03 +0100 matrix-synapse-py3 (1.69.0~rc4) stable; urgency=medium * New Synapse release 1.69.0rc4. -- Synapse Packaging team Fri, 14 Oct 2022 15:04:47 +0100 matrix-synapse-py3 (1.69.0~rc3) stable; urgency=medium * New Synapse release 1.69.0rc3. -- Synapse Packaging team Wed, 12 Oct 2022 13:24:04 +0100 matrix-synapse-py3 (1.69.0~rc2) stable; urgency=medium * New Synapse release 1.69.0rc2. -- Synapse Packaging team Thu, 06 Oct 2022 14:45:00 +0100 matrix-synapse-py3 (1.69.0~rc1) stable; urgency=medium * The man page for the hash_password script has been updated to reflect the correct default value of 'bcrypt_rounds'. * New Synapse release 1.69.0rc1. -- Synapse Packaging team Tue, 04 Oct 2022 11:17:16 +0100 matrix-synapse-py3 (1.68.0) stable; urgency=medium * New Synapse release 1.68.0. -- Synapse Packaging team Tue, 27 Sep 2022 12:02:09 +0100 matrix-synapse-py3 (1.68.0~rc2) stable; urgency=medium * New Synapse release 1.68.0rc2. -- Synapse Packaging team Fri, 23 Sep 2022 09:40:10 +0100 matrix-synapse-py3 (1.68.0~rc1) stable; urgency=medium * New Synapse release 1.68.0rc1. -- Synapse Packaging team Tue, 20 Sep 2022 11:18:20 +0100 matrix-synapse-py3 (1.67.0) stable; urgency=medium * New Synapse release 1.67.0. -- Synapse Packaging team Tue, 13 Sep 2022 09:19:56 +0100 matrix-synapse-py3 (1.67.0~rc1) stable; urgency=medium [ Erik Johnston ] * Use stable poetry 1.2.0 version, rather than a prerelease. [ Synapse Packaging team ] * New Synapse release 1.67.0rc1. -- Synapse Packaging team Tue, 06 Sep 2022 09:01:06 +0100 matrix-synapse-py3 (1.66.0) stable; urgency=medium * New Synapse release 1.66.0. -- Synapse Packaging team Wed, 31 Aug 2022 11:20:17 +0100 matrix-synapse-py3 (1.66.0~rc2+nmu1) UNRELEASED; urgency=medium [ Jörg Behrmann ] * Update debhelper to compatibility level 12. * Drop the preinst script stopping synapse. * Allocate a group for the system user. * Change dpkg-statoverride to --force-statoverride-add. [ Erik Johnston ] * Disable `dh_auto_configure` as it broke during Rust build. -- Jörg Behrmann Tue, 23 Aug 2022 17:17:00 +0100 matrix-synapse-py3 (1.66.0~rc2) stable; urgency=medium * New Synapse release 1.66.0rc2. -- Synapse Packaging team Tue, 30 Aug 2022 12:25:19 +0100 matrix-synapse-py3 (1.66.0~rc1) stable; urgency=medium * New Synapse release 1.66.0rc1. -- Synapse Packaging team Tue, 23 Aug 2022 09:48:55 +0100 matrix-synapse-py3 (1.65.0) stable; urgency=medium * New Synapse release 1.65.0. -- Synapse Packaging team Tue, 16 Aug 2022 16:51:26 +0100 matrix-synapse-py3 (1.65.0~rc2) stable; urgency=medium * New Synapse release 1.65.0rc2. -- Synapse Packaging team Thu, 11 Aug 2022 11:38:18 +0100 matrix-synapse-py3 (1.65.0~rc1) stable; urgency=medium * New Synapse release 1.65.0rc1. -- Synapse Packaging team Tue, 09 Aug 2022 11:39:29 +0100 matrix-synapse-py3 (1.64.0) stable; urgency=medium * New Synapse release 1.64.0. -- Synapse Packaging team Tue, 02 Aug 2022 10:32:30 +0100 matrix-synapse-py3 (1.64.0~rc2) stable; urgency=medium * New Synapse release 1.64.0rc2. -- Synapse Packaging team Fri, 29 Jul 2022 12:22:53 +0100 matrix-synapse-py3 (1.64.0~rc1) stable; urgency=medium * New Synapse release 1.64.0rc1. -- Synapse Packaging team Tue, 26 Jul 2022 12:11:49 +0100 matrix-synapse-py3 (1.63.1) stable; urgency=medium * New Synapse release 1.63.1. -- Synapse Packaging team Wed, 20 Jul 2022 13:36:52 +0100 matrix-synapse-py3 (1.63.0) stable; urgency=medium * Clarify that homeserver server names are included in the data reported by opt-in server stats reporting (`report_stats` homeserver config option). * New Synapse release 1.63.0. -- Synapse Packaging team Tue, 19 Jul 2022 14:42:24 +0200 matrix-synapse-py3 (1.63.0~rc1) stable; urgency=medium * New Synapse release 1.63.0rc1. -- Synapse Packaging team Tue, 12 Jul 2022 11:26:02 +0100 matrix-synapse-py3 (1.62.0) stable; urgency=medium * New Synapse release 1.62.0. -- Synapse Packaging team Tue, 05 Jul 2022 11:14:15 +0100 matrix-synapse-py3 (1.62.0~rc3) stable; urgency=medium * New Synapse release 1.62.0rc3. -- Synapse Packaging team Mon, 04 Jul 2022 16:07:01 +0100 matrix-synapse-py3 (1.62.0~rc2) stable; urgency=medium * New Synapse release 1.62.0rc2. -- Synapse Packaging team Fri, 01 Jul 2022 11:42:41 +0100 matrix-synapse-py3 (1.62.0~rc1) stable; urgency=medium * New Synapse release 1.62.0rc1. -- Synapse Packaging team Tue, 28 Jun 2022 16:34:57 +0100 matrix-synapse-py3 (1.61.1) stable; urgency=medium * New Synapse release 1.61.1. -- Synapse Packaging team Tue, 28 Jun 2022 14:33:46 +0100 matrix-synapse-py3 (1.61.0) stable; urgency=medium * New Synapse release 1.61.0. -- Synapse Packaging team Tue, 14 Jun 2022 11:44:19 +0100 matrix-synapse-py3 (1.61.0~rc1) stable; urgency=medium * Remove unused `jitsimeetbridge` experiment from `contrib` directory. * New Synapse release 1.61.0rc1. -- Synapse Packaging team Tue, 07 Jun 2022 12:42:31 +0100 matrix-synapse-py3 (1.60.0) stable; urgency=medium * New Synapse release 1.60.0. -- Synapse Packaging team Tue, 31 May 2022 13:41:22 +0100 matrix-synapse-py3 (1.60.0~rc2) stable; urgency=medium * New Synapse release 1.60.0rc2. -- Synapse Packaging team Fri, 27 May 2022 11:04:55 +0100 matrix-synapse-py3 (1.60.0~rc1) stable; urgency=medium * New Synapse release 1.60.0rc1. -- Synapse Packaging team Tue, 24 May 2022 12:05:01 +0100 matrix-synapse-py3 (1.59.1) stable; urgency=medium * New Synapse release 1.59.1. -- Synapse Packaging team Wed, 18 May 2022 11:41:46 +0100 matrix-synapse-py3 (1.59.0) stable; urgency=medium * New Synapse release 1.59.0. -- Synapse Packaging team Tue, 17 May 2022 10:26:50 +0100 matrix-synapse-py3 (1.59.0~rc2) stable; urgency=medium * New Synapse release 1.59.0rc2. -- Synapse Packaging team Mon, 16 May 2022 12:52:15 +0100 matrix-synapse-py3 (1.59.0~rc1) stable; urgency=medium * Adjust how the `exported-requirements.txt` file is generated as part of the process of building these packages. This affects the package maintainers only; end-users are unaffected. * New Synapse release 1.59.0rc1. -- Synapse Packaging team Tue, 10 May 2022 10:45:08 +0100 matrix-synapse-py3 (1.58.1) stable; urgency=medium * Include python dependencies from the `systemd` and `cache_memory` extras package groups, which were incorrectly omitted from the 1.58.0 package. * New Synapse release 1.58.1. -- Synapse Packaging team Thu, 05 May 2022 14:58:23 +0100 matrix-synapse-py3 (1.58.0) stable; urgency=medium * New Synapse release 1.58.0. -- Synapse Packaging team Tue, 03 May 2022 10:52:58 +0100 matrix-synapse-py3 (1.58.0~rc2) stable; urgency=medium * New Synapse release 1.58.0rc2. -- Synapse Packaging team Tue, 26 Apr 2022 17:14:56 +0100 matrix-synapse-py3 (1.58.0~rc1) stable; urgency=medium * Use poetry to manage the bundled virtualenv included with this package. * New Synapse release 1.58.0rc1. -- Synapse Packaging team Tue, 26 Apr 2022 11:15:20 +0100 matrix-synapse-py3 (1.57.1) stable; urgency=medium * New synapse release 1.57.1. -- Synapse Packaging team Wed, 20 Apr 2022 15:27:21 +0100 matrix-synapse-py3 (1.57.0) stable; urgency=medium * New synapse release 1.57.0. -- Synapse Packaging team Tue, 19 Apr 2022 10:58:42 +0100 matrix-synapse-py3 (1.57.0~rc1) stable; urgency=medium * New synapse release 1.57.0~rc1. -- Synapse Packaging team Tue, 12 Apr 2022 13:36:25 +0100 matrix-synapse-py3 (1.56.0) stable; urgency=medium * New synapse release 1.56.0. -- Synapse Packaging team Tue, 05 Apr 2022 12:38:39 +0100 matrix-synapse-py3 (1.56.0~rc1) stable; urgency=medium * New synapse release 1.56.0~rc1. -- Synapse Packaging team Tue, 29 Mar 2022 10:40:50 +0100 matrix-synapse-py3 (1.55.2) stable; urgency=medium * New synapse release 1.55.2. -- Synapse Packaging team Thu, 24 Mar 2022 19:07:11 +0000 matrix-synapse-py3 (1.55.1) stable; urgency=medium * New synapse release 1.55.1. -- Synapse Packaging team Thu, 24 Mar 2022 17:44:23 +0000 matrix-synapse-py3 (1.55.0) stable; urgency=medium * New synapse release 1.55.0. -- Synapse Packaging team Tue, 22 Mar 2022 13:59:26 +0000 matrix-synapse-py3 (1.55.0~rc1) stable; urgency=medium * New synapse release 1.55.0~rc1. -- Synapse Packaging team Tue, 15 Mar 2022 10:59:31 +0000 matrix-synapse-py3 (1.54.0) stable; urgency=medium * New synapse release 1.54.0. -- Synapse Packaging team Tue, 08 Mar 2022 10:54:52 +0000 matrix-synapse-py3 (1.54.0~rc1) stable; urgency=medium * New synapse release 1.54.0~rc1. -- Synapse Packaging team Wed, 02 Mar 2022 10:43:22 +0000 matrix-synapse-py3 (1.53.0) stable; urgency=medium * New synapse release 1.53.0. -- Synapse Packaging team Tue, 22 Feb 2022 11:32:06 +0000 matrix-synapse-py3 (1.53.0~rc1) stable; urgency=medium * New synapse release 1.53.0~rc1. -- Synapse Packaging team Tue, 15 Feb 2022 10:40:50 +0000 matrix-synapse-py3 (1.52.0) stable; urgency=medium * New synapse release 1.52.0. -- Synapse Packaging team Tue, 08 Feb 2022 11:34:54 +0000 matrix-synapse-py3 (1.52.0~rc1) stable; urgency=medium * New synapse release 1.52.0~rc1. -- Synapse Packaging team Tue, 01 Feb 2022 11:04:09 +0000 matrix-synapse-py3 (1.51.0) stable; urgency=medium * New synapse release 1.51.0. -- Synapse Packaging team Tue, 25 Jan 2022 11:28:51 +0000 matrix-synapse-py3 (1.51.0~rc2) stable; urgency=medium * New synapse release 1.51.0~rc2. -- Synapse Packaging team Mon, 24 Jan 2022 12:25:00 +0000 matrix-synapse-py3 (1.51.0~rc1) stable; urgency=medium * New synapse release 1.51.0~rc1. -- Synapse Packaging team Fri, 21 Jan 2022 10:46:02 +0000 matrix-synapse-py3 (1.50.2) stable; urgency=medium * New synapse release 1.50.2. -- Synapse Packaging team Mon, 24 Jan 2022 13:37:11 +0000 matrix-synapse-py3 (1.50.1) stable; urgency=medium * New synapse release 1.50.1. -- Synapse Packaging team Tue, 18 Jan 2022 16:06:26 +0000 matrix-synapse-py3 (1.50.0) stable; urgency=medium * New synapse release 1.50.0. -- Synapse Packaging team Tue, 18 Jan 2022 10:40:38 +0000 matrix-synapse-py3 (1.50.0~rc2) stable; urgency=medium * New synapse release 1.50.0~rc2. -- Synapse Packaging team Fri, 14 Jan 2022 11:18:06 +0000 matrix-synapse-py3 (1.50.0~rc1) stable; urgency=medium * New synapse release 1.50.0~rc1. -- Synapse Packaging team Wed, 05 Jan 2022 12:36:17 +0000 matrix-synapse-py3 (1.49.2) stable; urgency=medium * New synapse release 1.49.2. -- Synapse Packaging team Tue, 21 Dec 2021 17:31:03 +0000 matrix-synapse-py3 (1.49.1) stable; urgency=medium * New synapse release 1.49.1. -- Synapse Packaging team Tue, 21 Dec 2021 11:07:30 +0000 matrix-synapse-py3 (1.49.0) stable; urgency=medium * New synapse release 1.49.0. -- Synapse Packaging team Tue, 14 Dec 2021 12:39:46 +0000 matrix-synapse-py3 (1.49.0~rc1) stable; urgency=medium * New synapse release 1.49.0~rc1. -- Synapse Packaging team Tue, 07 Dec 2021 13:52:21 +0000 matrix-synapse-py3 (1.48.0) stable; urgency=medium * New synapse release 1.48.0. -- Synapse Packaging team Tue, 30 Nov 2021 11:24:15 +0000 matrix-synapse-py3 (1.48.0~rc1) stable; urgency=medium * New synapse release 1.48.0~rc1. -- Synapse Packaging team Thu, 25 Nov 2021 15:56:03 +0000 matrix-synapse-py3 (1.47.1) stable; urgency=medium * New synapse release 1.47.1. -- Synapse Packaging team Fri, 19 Nov 2021 13:44:32 +0000 matrix-synapse-py3 (1.47.0) stable; urgency=medium * New synapse release 1.47.0. -- Synapse Packaging team Wed, 17 Nov 2021 13:09:43 +0000 matrix-synapse-py3 (1.47.0~rc3) stable; urgency=medium * New synapse release 1.47.0~rc3. -- Synapse Packaging team Tue, 16 Nov 2021 14:32:47 +0000 matrix-synapse-py3 (1.47.0~rc2) stable; urgency=medium [ Dan Callahan ] * Update scripts to pass Shellcheck lints. * Remove unused Vagrant scripts from debian/ directory. * Allow building Debian packages for any architecture, not just amd64. * Preinstall the "wheel" package when building virtualenvs. * Do not error if /etc/default/matrix-synapse is missing. [ Synapse Packaging team ] * New synapse release 1.47.0~rc2. -- Synapse Packaging team Wed, 10 Nov 2021 09:41:01 +0000 matrix-synapse-py3 (1.46.0) stable; urgency=medium [ Richard van der Hoff ] * Compress debs with xz, to fix incompatibility of impish debs with reprepro. [ Synapse Packaging team ] * New synapse release 1.46.0. -- Synapse Packaging team Tue, 02 Nov 2021 13:22:53 +0000 matrix-synapse-py3 (1.46.0~rc1) stable; urgency=medium * New synapse release 1.46.0~rc1. -- Synapse Packaging team Tue, 26 Oct 2021 14:04:04 +0100 matrix-synapse-py3 (1.45.1) stable; urgency=medium * New synapse release 1.45.1. -- Synapse Packaging team Wed, 20 Oct 2021 11:58:27 +0100 matrix-synapse-py3 (1.45.0) stable; urgency=medium * New synapse release 1.45.0. -- Synapse Packaging team Tue, 19 Oct 2021 11:18:53 +0100 matrix-synapse-py3 (1.45.0~rc2) stable; urgency=medium * New synapse release 1.45.0~rc2. -- Synapse Packaging team Thu, 14 Oct 2021 10:58:24 +0100 matrix-synapse-py3 (1.45.0~rc1) stable; urgency=medium [ Nick @ Beeper ] * Include an `update_synapse_database` script in the distribution. [ Synapse Packaging team ] * New synapse release 1.45.0~rc1. -- Synapse Packaging team Tue, 12 Oct 2021 10:46:27 +0100 matrix-synapse-py3 (1.44.0) stable; urgency=medium * New synapse release 1.44.0. -- Synapse Packaging team Tue, 05 Oct 2021 13:43:57 +0100 matrix-synapse-py3 (1.44.0~rc3) stable; urgency=medium * New synapse release 1.44.0~rc3. -- Synapse Packaging team Mon, 04 Oct 2021 14:57:22 +0100 matrix-synapse-py3 (1.44.0~rc2) stable; urgency=medium * New synapse release 1.44.0~rc2. -- Synapse Packaging team Thu, 30 Sep 2021 12:39:10 +0100 matrix-synapse-py3 (1.44.0~rc1) stable; urgency=medium * New synapse release 1.44.0~rc1. -- Synapse Packaging team Tue, 28 Sep 2021 13:41:28 +0100 matrix-synapse-py3 (1.43.0) stable; urgency=medium * New synapse release 1.43.0. -- Synapse Packaging team Tue, 21 Sep 2021 11:49:05 +0100 matrix-synapse-py3 (1.43.0~rc2) stable; urgency=medium * New synapse release 1.43.0~rc2. -- Synapse Packaging team Fri, 17 Sep 2021 10:43:21 +0100 matrix-synapse-py3 (1.43.0~rc1) stable; urgency=medium * New synapse release 1.43.0~rc1. -- Synapse Packaging team Tue, 14 Sep 2021 11:39:46 +0100 matrix-synapse-py3 (1.42.0) stable; urgency=medium * New synapse release 1.42.0. -- Synapse Packaging team Tue, 07 Sep 2021 16:19:09 +0100 matrix-synapse-py3 (1.42.0~rc2) stable; urgency=medium * New synapse release 1.42.0~rc2. -- Synapse Packaging team Mon, 06 Sep 2021 15:25:13 +0100 matrix-synapse-py3 (1.42.0~rc1) stable; urgency=medium * New synapse release 1.42.0rc1. -- Synapse Packaging team Wed, 01 Sep 2021 11:37:48 +0100 matrix-synapse-py3 (1.41.1) stable; urgency=high * New synapse release 1.41.1. -- Synapse Packaging team Tue, 31 Aug 2021 12:59:10 +0100 matrix-synapse-py3 (1.41.0) stable; urgency=medium * New synapse release 1.41.0. -- Synapse Packaging team Tue, 24 Aug 2021 15:31:45 +0100 matrix-synapse-py3 (1.41.0~rc1) stable; urgency=medium * New synapse release 1.41.0~rc1. -- Synapse Packaging team Wed, 18 Aug 2021 15:52:00 +0100 matrix-synapse-py3 (1.40.0) stable; urgency=medium * New synapse release 1.40.0. -- Synapse Packaging team Tue, 10 Aug 2021 13:50:48 +0100 matrix-synapse-py3 (1.40.0~rc3) stable; urgency=medium * New synapse release 1.40.0~rc3. -- Synapse Packaging team Mon, 09 Aug 2021 13:41:08 +0100 matrix-synapse-py3 (1.40.0~rc2) stable; urgency=medium * New synapse release 1.40.0~rc2. -- Synapse Packaging team Wed, 04 Aug 2021 17:08:55 +0100 matrix-synapse-py3 (1.40.0~rc1) stable; urgency=medium [ Richard van der Hoff ] * Drop backwards-compatibility code that was required to support Ubuntu Xenial. * Update package triggers so that the virtualenv is correctly rebuilt when the system python is rebuilt, on recent Python versions. [ Synapse Packaging team ] * New synapse release 1.40.0~rc1. -- Synapse Packaging team Tue, 03 Aug 2021 11:31:49 +0100 matrix-synapse-py3 (1.39.0) stable; urgency=medium * New synapse release 1.39.0. -- Synapse Packaging team Thu, 29 Jul 2021 09:59:00 +0100 matrix-synapse-py3 (1.39.0~rc3) stable; urgency=medium * New synapse release 1.39.0~rc3. -- Synapse Packaging team Wed, 28 Jul 2021 13:30:58 +0100 matrix-synapse-py3 (1.38.1) stable; urgency=medium * New synapse release 1.38.1. -- Synapse Packaging team Thu, 22 Jul 2021 15:37:06 +0100 matrix-synapse-py3 (1.39.0~rc1) stable; urgency=medium * New synapse release 1.39.0rc1. -- Synapse Packaging team Tue, 20 Jul 2021 14:28:34 +0100 matrix-synapse-py3 (1.38.0) stable; urgency=medium * New synapse release 1.38.0. -- Synapse Packaging team Tue, 13 Jul 2021 13:20:56 +0100 matrix-synapse-py3 (1.38.0rc3) prerelease; urgency=medium [ Erik Johnston ] * Add synapse_review_recent_signups script [ Synapse Packaging team ] * New synapse release 1.38.0rc3. -- Synapse Packaging team Tue, 13 Jul 2021 11:53:56 +0100 matrix-synapse-py3 (1.37.1) stable; urgency=medium * New synapse release 1.37.1. -- Synapse Packaging team Wed, 30 Jun 2021 12:24:06 +0100 matrix-synapse-py3 (1.37.0) stable; urgency=medium * New synapse release 1.37.0. -- Synapse Packaging team Tue, 29 Jun 2021 10:15:25 +0100 matrix-synapse-py3 (1.36.0) stable; urgency=medium * New synapse release 1.36.0. -- Synapse Packaging team Tue, 15 Jun 2021 15:41:53 +0100 matrix-synapse-py3 (1.35.1) stable; urgency=medium * New synapse release 1.35.1. -- Synapse Packaging team Thu, 03 Jun 2021 08:11:29 -0400 matrix-synapse-py3 (1.35.0) stable; urgency=medium * New synapse release 1.35.0. -- Synapse Packaging team Tue, 01 Jun 2021 13:23:35 +0100 matrix-synapse-py3 (1.34.0) stable; urgency=medium * New synapse release 1.34.0. -- Synapse Packaging team Mon, 17 May 2021 11:34:18 +0100 matrix-synapse-py3 (1.33.2) stable; urgency=medium * New synapse release 1.33.2. -- Synapse Packaging team Tue, 11 May 2021 11:17:59 +0100 matrix-synapse-py3 (1.33.1) stable; urgency=medium * New synapse release 1.33.1. -- Synapse Packaging team Thu, 06 May 2021 14:06:33 +0100 matrix-synapse-py3 (1.33.0) stable; urgency=medium * New synapse release 1.33.0. -- Synapse Packaging team Wed, 05 May 2021 14:15:27 +0100 matrix-synapse-py3 (1.32.2) stable; urgency=medium * New synapse release 1.32.2. -- Synapse Packaging team Wed, 22 Apr 2021 12:43:52 +0100 matrix-synapse-py3 (1.32.1) stable; urgency=medium * New synapse release 1.32.1. -- Synapse Packaging team Wed, 21 Apr 2021 14:00:55 +0100 matrix-synapse-py3 (1.32.0) stable; urgency=medium [ Dan Callahan ] * Skip tests when DEB_BUILD_OPTIONS contains "nocheck". [ Synapse Packaging team ] * New synapse release 1.32.0. -- Synapse Packaging team Tue, 20 Apr 2021 14:28:39 +0100 matrix-synapse-py3 (1.31.0) stable; urgency=medium * New synapse release 1.31.0. -- Synapse Packaging team Tue, 06 Apr 2021 13:08:29 +0100 matrix-synapse-py3 (1.30.1) stable; urgency=medium * New synapse release 1.30.1. -- Synapse Packaging team Fri, 26 Mar 2021 12:01:28 +0000 matrix-synapse-py3 (1.30.0) stable; urgency=medium * New synapse release 1.30.0. -- Synapse Packaging team Mon, 22 Mar 2021 13:15:34 +0000 matrix-synapse-py3 (1.29.0) stable; urgency=medium [ Jonathan de Jong ] * Remove the python -B flag (don't generate bytecode) in scripts and documentation. [ Synapse Packaging team ] * New synapse release 1.29.0. -- Synapse Packaging team Mon, 08 Mar 2021 13:51:50 +0000 matrix-synapse-py3 (1.28.0) stable; urgency=medium * New synapse release 1.28.0. -- Synapse Packaging team Thu, 25 Feb 2021 10:21:57 +0000 matrix-synapse-py3 (1.27.0) stable; urgency=medium [ Dan Callahan ] * Fix build on Ubuntu 16.04 LTS (Xenial). [ Synapse Packaging team ] * New synapse release 1.27.0. -- Synapse Packaging team Tue, 16 Feb 2021 13:11:28 +0000 matrix-synapse-py3 (1.26.0) stable; urgency=medium [ Richard van der Hoff ] * Remove dependency on `python3-distutils`. [ Synapse Packaging team ] * New synapse release 1.26.0. -- Synapse Packaging team Wed, 27 Jan 2021 12:43:35 -0500 matrix-synapse-py3 (1.25.0) stable; urgency=medium [ Dan Callahan ] * Update dependencies to account for the removal of the transitional dh-systemd package from Debian Bullseye. [ Synapse Packaging team ] * New synapse release 1.25.0. -- Synapse Packaging team Wed, 13 Jan 2021 10:14:55 +0000 matrix-synapse-py3 (1.24.0) stable; urgency=medium * New synapse release 1.24.0. -- Synapse Packaging team Wed, 09 Dec 2020 10:14:30 +0000 matrix-synapse-py3 (1.23.1) stable; urgency=medium * New synapse release 1.23.1. -- Synapse Packaging team Wed, 09 Dec 2020 10:40:39 +0000 matrix-synapse-py3 (1.23.0) stable; urgency=medium * New synapse release 1.23.0. -- Synapse Packaging team Wed, 18 Nov 2020 11:41:28 +0000 matrix-synapse-py3 (1.22.1) stable; urgency=medium * New synapse release 1.22.1. -- Synapse Packaging team Fri, 30 Oct 2020 15:25:37 +0000 matrix-synapse-py3 (1.22.0) stable; urgency=medium * New synapse release 1.22.0. -- Synapse Packaging team Tue, 27 Oct 2020 12:07:12 +0000 matrix-synapse-py3 (1.21.2) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.21.2. -- Synapse Packaging team Thu, 15 Oct 2020 09:23:27 -0400 matrix-synapse-py3 (1.21.1) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.21.1. [ Andrew Morgan ] * Explicitly install "test" python dependencies. -- Synapse Packaging team Tue, 13 Oct 2020 10:24:13 +0100 matrix-synapse-py3 (1.21.0) stable; urgency=medium * New synapse release 1.21.0. -- Synapse Packaging team Mon, 12 Oct 2020 15:47:44 +0100 matrix-synapse-py3 (1.20.1) stable; urgency=medium * New synapse release 1.20.1. -- Synapse Packaging team Thu, 24 Sep 2020 16:25:22 +0100 matrix-synapse-py3 (1.20.0) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.20.0. [ Dexter Chua ] * Use Type=notify in systemd service -- Synapse Packaging team Tue, 22 Sep 2020 15:19:32 +0100 matrix-synapse-py3 (1.19.3) stable; urgency=medium * New synapse release 1.19.3. -- Synapse Packaging team Fri, 18 Sep 2020 14:59:30 +0100 matrix-synapse-py3 (1.19.2) stable; urgency=medium * New synapse release 1.19.2. -- Synapse Packaging team Wed, 16 Sep 2020 12:50:30 +0100 matrix-synapse-py3 (1.19.1) stable; urgency=medium * New synapse release 1.19.1. -- Synapse Packaging team Thu, 27 Aug 2020 10:50:19 +0100 matrix-synapse-py3 (1.19.0) stable; urgency=medium [ Synapse Packaging team ] * New synapse release 1.19.0. [ Aaron Raimist ] * Fix outdated documentation for SYNAPSE_CACHE_FACTOR -- Synapse Packaging team Mon, 17 Aug 2020 14:06:42 +0100 matrix-synapse-py3 (1.18.0) stable; urgency=medium * New synapse release 1.18.0. -- Synapse Packaging team Thu, 30 Jul 2020 10:55:53 +0100 matrix-synapse-py3 (1.17.0) stable; urgency=medium * New synapse release 1.17.0. -- Synapse Packaging team Mon, 13 Jul 2020 10:20:31 +0100 matrix-synapse-py3 (1.16.1) stable; urgency=medium * New synapse release 1.16.1. -- Synapse Packaging team Fri, 10 Jul 2020 12:09:24 +0100 matrix-synapse-py3 (1.17.0rc1) stable; urgency=medium * New synapse release 1.17.0rc1. -- Synapse Packaging team Thu, 09 Jul 2020 16:53:12 +0100 matrix-synapse-py3 (1.16.0) stable; urgency=medium * New synapse release 1.16.0. -- Synapse Packaging team Wed, 08 Jul 2020 11:03:48 +0100 matrix-synapse-py3 (1.15.2) stable; urgency=medium * New synapse release 1.15.2. -- Synapse Packaging team Thu, 02 Jul 2020 10:34:00 -0400 matrix-synapse-py3 (1.15.1) stable; urgency=medium * New synapse release 1.15.1. -- Synapse Packaging team Tue, 16 Jun 2020 10:27:50 +0100 matrix-synapse-py3 (1.15.0) stable; urgency=medium * New synapse release 1.15.0. -- Synapse Packaging team Thu, 11 Jun 2020 13:27:06 +0100 matrix-synapse-py3 (1.14.0) stable; urgency=medium * New synapse release 1.14.0. -- Synapse Packaging team Thu, 28 May 2020 10:37:27 +0000 matrix-synapse-py3 (1.13.0) stable; urgency=medium [ Patrick Cloke ] * Add information about .well-known files to Debian installation scripts. [ Synapse Packaging team ] * New synapse release 1.13.0. -- Synapse Packaging team Tue, 19 May 2020 09:16:56 -0400 matrix-synapse-py3 (1.12.4) stable; urgency=medium * New synapse release 1.12.4. -- Synapse Packaging team Thu, 23 Apr 2020 10:58:14 -0400 matrix-synapse-py3 (1.12.3) stable; urgency=medium [ Richard van der Hoff ] * Update the Debian build scripts to handle the new installation paths for the support libraries introduced by Pillow 7.1.1. [ Synapse Packaging team ] * New synapse release 1.12.3. -- Synapse Packaging team Fri, 03 Apr 2020 10:55:03 +0100 matrix-synapse-py3 (1.12.2) stable; urgency=medium * New synapse release 1.12.2. -- Synapse Packaging team Mon, 02 Apr 2020 19:02:17 +0000 matrix-synapse-py3 (1.12.1) stable; urgency=medium * New synapse release 1.12.1. -- Synapse Packaging team Mon, 02 Apr 2020 11:30:47 +0000 matrix-synapse-py3 (1.12.0) stable; urgency=medium * New synapse release 1.12.0. -- Synapse Packaging team Mon, 23 Mar 2020 12:13:03 +0000 matrix-synapse-py3 (1.11.1) stable; urgency=medium * New synapse release 1.11.1. -- Synapse Packaging team Tue, 03 Mar 2020 15:01:22 +0000 matrix-synapse-py3 (1.11.0) stable; urgency=medium * New synapse release 1.11.0. -- Synapse Packaging team Fri, 21 Feb 2020 08:54:34 +0000 matrix-synapse-py3 (1.10.1) stable; urgency=medium * New synapse release 1.10.1. -- Synapse Packaging team Mon, 17 Feb 2020 16:27:28 +0000 matrix-synapse-py3 (1.10.0) stable; urgency=medium * New synapse release 1.10.0. -- Synapse Packaging team Wed, 12 Feb 2020 12:18:54 +0000 matrix-synapse-py3 (1.9.1) stable; urgency=medium * New synapse release 1.9.1. -- Synapse Packaging team Tue, 28 Jan 2020 13:09:23 +0000 matrix-synapse-py3 (1.9.0) stable; urgency=medium * New synapse release 1.9.0. -- Synapse Packaging team Thu, 23 Jan 2020 12:56:31 +0000 matrix-synapse-py3 (1.8.0) stable; urgency=medium [ Richard van der Hoff ] * Automate generation of the default log configuration file. [ Synapse Packaging team ] * New synapse release 1.8.0. -- Synapse Packaging team Thu, 09 Jan 2020 11:39:27 +0000 matrix-synapse-py3 (1.7.3) stable; urgency=medium * New synapse release 1.7.3. -- Synapse Packaging team Tue, 31 Dec 2019 10:45:04 +0000 matrix-synapse-py3 (1.7.2) stable; urgency=medium * New synapse release 1.7.2. -- Synapse Packaging team Fri, 20 Dec 2019 10:56:50 +0000 matrix-synapse-py3 (1.7.1) stable; urgency=medium * New synapse release 1.7.1. -- Synapse Packaging team Wed, 18 Dec 2019 09:37:59 +0000 matrix-synapse-py3 (1.7.0) stable; urgency=medium * New synapse release 1.7.0. -- Synapse Packaging team Fri, 13 Dec 2019 10:19:38 +0000 matrix-synapse-py3 (1.6.1) stable; urgency=medium * New synapse release 1.6.1. -- Synapse Packaging team Thu, 28 Nov 2019 11:10:40 +0000 matrix-synapse-py3 (1.6.0) stable; urgency=medium * New synapse release 1.6.0. -- Synapse Packaging team Tue, 26 Nov 2019 12:15:40 +0000 matrix-synapse-py3 (1.5.1) stable; urgency=medium * New synapse release 1.5.1. -- Synapse Packaging team Wed, 06 Nov 2019 10:02:14 +0000 matrix-synapse-py3 (1.5.0) stable; urgency=medium * New synapse release 1.5.0. -- Synapse Packaging team Tue, 29 Oct 2019 14:28:41 +0000 matrix-synapse-py3 (1.4.1) stable; urgency=medium * New synapse release 1.4.1. -- Synapse Packaging team Fri, 18 Oct 2019 10:13:27 +0100 matrix-synapse-py3 (1.4.0) stable; urgency=medium * New synapse release 1.4.0. -- Synapse Packaging team Thu, 03 Oct 2019 13:22:25 +0100 matrix-synapse-py3 (1.3.1) stable; urgency=medium * New synapse release 1.3.1. -- Synapse Packaging team Sat, 17 Aug 2019 09:15:49 +0100 matrix-synapse-py3 (1.3.0) stable; urgency=medium [ Andrew Morgan ] * Remove libsqlite3-dev from required build dependencies. [ Synapse Packaging team ] * New synapse release 1.3.0. -- Synapse Packaging team Thu, 15 Aug 2019 12:04:23 +0100 matrix-synapse-py3 (1.2.0) stable; urgency=medium [ Amber Brown ] * Update logging config defaults to match API changes in Synapse. [ Richard van der Hoff ] * Add Recommends and Depends for some libraries which you probably want. [ Synapse Packaging team ] * New synapse release 1.2.0. -- Synapse Packaging team Thu, 25 Jul 2019 14:10:07 +0100 matrix-synapse-py3 (1.1.0) stable; urgency=medium [ Silke Hofstra ] * Include systemd-python to allow logging to the systemd journal. [ Synapse Packaging team ] * New synapse release 1.1.0. -- Synapse Packaging team Thu, 04 Jul 2019 11:43:41 +0100 matrix-synapse-py3 (1.0.0) stable; urgency=medium * New synapse release 1.0.0. -- Synapse Packaging team Tue, 11 Jun 2019 17:09:53 +0100 matrix-synapse-py3 (0.99.5.2) stable; urgency=medium * New synapse release 0.99.5.2. -- Synapse Packaging team Thu, 30 May 2019 16:28:07 +0100 matrix-synapse-py3 (0.99.5.1) stable; urgency=medium * New synapse release 0.99.5.1. -- Synapse Packaging team Wed, 22 May 2019 16:22:24 +0000 matrix-synapse-py3 (0.99.4) stable; urgency=medium [ Christoph Müller ] * Configure the systemd units to have a log identifier of `matrix-synapse` [ Synapse Packaging team ] * New synapse release 0.99.4. -- Synapse Packaging team Wed, 15 May 2019 13:58:08 +0100 matrix-synapse-py3 (0.99.3.2) stable; urgency=medium * New synapse release 0.99.3.2. -- Synapse Packaging team Fri, 03 May 2019 18:56:20 +0100 matrix-synapse-py3 (0.99.3.1) stable; urgency=medium * New synapse release 0.99.3.1. -- Synapse Packaging team Fri, 03 May 2019 16:02:43 +0100 matrix-synapse-py3 (0.99.3) stable; urgency=medium [ Richard van der Hoff ] * Fix warning during preconfiguration. (Fixes: https://github.com/matrix-org/synapse/issues/4819) [ Synapse Packaging team ] * New synapse release 0.99.3. -- Synapse Packaging team Mon, 01 Apr 2019 12:48:21 +0000 matrix-synapse-py3 (0.99.2) stable; urgency=medium * Fix overwriting of config settings on upgrade. * New synapse release 0.99.2. -- Synapse Packaging team Fri, 01 Mar 2019 10:55:08 +0000 matrix-synapse-py3 (0.99.1.1) stable; urgency=medium * New synapse release 0.99.1.1 -- Synapse Packaging team Thu, 14 Feb 2019 17:19:44 +0000 matrix-synapse-py3 (0.99.1) stable; urgency=medium [ Damjan Georgievski ] * Added ExecReload= in service unit file to send a HUP signal [ Synapse Packaging team ] * New synapse release 0.99.1 -- Synapse Packaging team Thu, 14 Feb 2019 14:12:26 +0000 matrix-synapse-py3 (0.99.0) stable; urgency=medium * New synapse release 0.99.0 -- Synapse Packaging team Tue, 5 Feb 2019 18:25:00 +0000 matrix-synapse-py3 (0.34.1.1++1) stable; urgency=medium * Update conflicts specifications to allow smoother transition from matrix-synapse. -- Synapse Packaging team Sat, 12 Jan 2019 12:58:35 +0000 matrix-synapse-py3 (0.34.1.1) stable; urgency=high * New synapse release 0.34.1.1 -- Synapse Packaging team Thu, 10 Jan 2019 15:04:52 +0000 matrix-synapse-py3 (0.34.1+1) stable; urgency=medium * Remove 'Breaks: matrix-synapse-ldap3'. (matrix-synapse-py3 includes the matrix-synapse-ldap3 python files, which makes the matrix-synapse-ldap3 debian package redundant but not broken. -- Synapse Packaging team Wed, 09 Jan 2019 15:30:00 +0000 matrix-synapse-py3 (0.34.1) stable; urgency=medium * New synapse release 0.34.1. * Update Conflicts specifications to allow installation alongside our matrix-synapse transitional package. -- Synapse Packaging team Wed, 09 Jan 2019 14:52:24 +0000 matrix-synapse-py3 (0.34.0) stable; urgency=medium * New synapse release 0.34.0. * Synapse is now installed into a Python 3 virtual environment with up-to-date dependencies. * The matrix-synapse service will now be restarted when the package is upgraded. (Fixes https://github.com/matrix-org/package-synapse-debian/issues/18) -- Synapse packaging team Wed, 19 Dec 2018 14:00:00 +0000 matrix-synapse (0.33.9-1matrix1) stretch; urgency=medium [ Erik Johnston ] * Remove dependency on python-pydenticon [ Richard van der Hoff ] * New upstream version 0.33.9 * Refresh patches for 0.33.9 -- Richard van der Hoff Tue, 20 Nov 2018 10:26:05 +0000 matrix-synapse (0.33.8-1) stretch; urgency=medium * New upstream version 0.33.8 -- Erik Johnston Thu, 01 Nov 2018 14:33:26 +0000 matrix-synapse (0.33.7-1matrix1) stretch; urgency=medium * New upstream version 0.33.7 -- Richard van der Hoff Thu, 18 Oct 2018 16:18:26 +0100 matrix-synapse (0.33.6-1matrix1) stretch; urgency=medium * Imported Upstream version 0.33.6 * Remove redundant explicit dep on python-bcrypt * Run the tests during build * Add dependency on python-attr 16.0 * Refresh patches for 0.33.6 -- Richard van der Hoff Thu, 04 Oct 2018 14:40:29 +0100 matrix-synapse (0.33.5.1-1matrix1) stretch; urgency=medium * Imported Upstream version 0.33.5.1 -- Richard van der Hoff Mon, 24 Sep 2018 18:20:51 +0100 matrix-synapse (0.33.5-1matrix1) stretch; urgency=medium * Imported Upstream version 0.33.5 -- Richard van der Hoff Mon, 24 Sep 2018 16:06:23 +0100 matrix-synapse (0.33.4-1mx1) stretch; urgency=medium * Imported Upstream version 0.33.4 * Avoid telling people to install packages with pip (fixes https://github.com/matrix-org/synapse/issues/3743) -- Richard van der Hoff Fri, 07 Sep 2018 14:06:17 +0100 matrix-synapse (0.33.3.1-1mx1) stretch; urgency=critical [ Richard van der Hoff ] * Imported Upstream version 0.33.3.1 -- Richard van der Hoff Thu, 06 Sep 2018 11:20:37 +0100 matrix-synapse (0.33.3-2) stretch; urgency=medium * We now require python-twisted 17.1.0 or later * Add recommendations for python-psycopg2 and python-lxml -- Richard van der Hoff Thu, 23 Aug 2018 19:04:08 +0100 matrix-synapse (0.33.3-1) jessie; urgency=medium * New upstream version 0.33.3 -- Richard van der Hoff Wed, 22 Aug 2018 14:50:30 +0100 matrix-synapse (0.33.2-1) jessie; urgency=medium * New upstream version 0.33.2 -- Richard van der Hoff Thu, 09 Aug 2018 15:40:42 +0100 matrix-synapse (0.33.1-1) jessie; urgency=medium * New upstream version 0.33.1 -- Erik Johnston Thu, 02 Aug 2018 15:52:19 +0100 matrix-synapse (0.33.0-1) jessie; urgency=medium * New upstream version 0.33.0 -- Richard van der Hoff Thu, 19 Jul 2018 13:38:41 +0100 matrix-synapse (0.32.1-1) jessie; urgency=medium * New upstream version 0.32.1 -- Richard van der Hoff Fri, 06 Jul 2018 17:16:29 +0100 matrix-synapse (0.32.0-1) jessie; urgency=medium * New upstream version 0.32.0 -- Erik Johnston Fri, 06 Jul 2018 15:34:06 +0100 matrix-synapse (0.31.2-1) jessie; urgency=high * New upstream version 0.31.2 -- Richard van der Hoff Thu, 14 Jun 2018 16:49:07 +0100 matrix-synapse (0.31.1-1) jessie; urgency=medium * New upstream version 0.31.1 * Require python-prometheus-client >= 0.0.14 -- Richard van der Hoff Fri, 08 Jun 2018 16:11:55 +0100 matrix-synapse (0.31.0-1) jessie; urgency=medium * New upstream version 0.31.0 -- Richard van der Hoff Wed, 06 Jun 2018 17:23:10 +0100 matrix-synapse (0.30.0-1) jessie; urgency=medium [ Michael Kaye ] * update homeserver.yaml to be somewhat more modern. [ Erik Johnston ] * New upstream version 0.30.0 -- Erik Johnston Thu, 24 May 2018 16:43:16 +0100 matrix-synapse (0.29.0-1) jessie; urgency=medium * New upstream version 0.29.0 -- Erik Johnston Wed, 16 May 2018 17:43:06 +0100 matrix-synapse (0.28.1-1) jessie; urgency=medium * New upstream version 0.28.1 -- Erik Johnston Tue, 01 May 2018 19:21:39 +0100 matrix-synapse (0.28.0-1) jessie; urgency=medium * New upstream 0.28.0 -- Erik Johnston Fri, 27 Apr 2018 13:15:49 +0100 matrix-synapse (0.27.4-1) jessie; urgency=medium * Bump canonicaljson version * New upstream 0.27.4 -- Erik Johnston Fri, 13 Apr 2018 13:37:47 +0100 matrix-synapse (0.27.3-1) jessie; urgency=medium * Report stats should default to off * Refresh patches * New upstream 0.27.3 -- Erik Johnston Wed, 11 Apr 2018 11:43:47 +0100 matrix-synapse (0.27.2-1) jessie; urgency=medium * New upstream version 0.27.2 -- Erik Johnston Mon, 26 Mar 2018 16:41:57 +0100 matrix-synapse (0.27.1-1) jessie; urgency=medium * New upstream version 0.27.1 -- Erik Johnston Mon, 26 Mar 2018 16:22:03 +0100 matrix-synapse (0.27.0-2) jessie; urgency=medium * Fix bcrypt dependency -- Erik Johnston Mon, 26 Mar 2018 16:00:26 +0100 matrix-synapse (0.27.0-1) jessie; urgency=medium * New upstream version 0.27.0 -- Erik Johnston Mon, 26 Mar 2018 15:07:52 +0100 matrix-synapse (0.26.1-1) jessie; urgency=medium * Ignore RC * New upstream version 0.26.1 -- Erik Johnston Fri, 16 Mar 2018 00:40:08 +0000 matrix-synapse (0.26.0-1) jessie; urgency=medium [ Richard van der Hoff ] * Remove `level` for `file` log handler [ Erik Johnston ] -- Erik Johnston Fri, 05 Jan 2018 11:21:26 +0000 matrix-synapse (0.25.1-1) jessie; urgency=medium * New upstream version 0.25.1 -- Erik Johnston Mon, 20 Nov 2017 10:05:37 +0000 matrix-synapse (0.25.0-1) jessie; urgency=medium * New upstream version 0.25.0 -- Erik Johnston Wed, 15 Nov 2017 11:36:32 +0000 matrix-synapse (0.24.1-1) jessie; urgency=medium * New upstream version 0.24.1 -- Erik Johnston Tue, 24 Oct 2017 15:05:03 +0100 matrix-synapse (0.24.0-1) jessie; urgency=medium * New upstream version 0.24.0 -- Erik Johnston Mon, 23 Oct 2017 14:11:46 +0100 matrix-synapse (0.23.1-1) xenial; urgency=medium * Imported upstream version 0.23.1 -- Erik Johnston Thu, 05 Oct 2017 15:28:25 +0100 matrix-synapse (0.23.0-1) jessie; urgency=medium * Fix patch after refactor * Add patch to remove requirement on affinity package * refresh webclient patch -- Erik Johnston Mon, 02 Oct 2017 15:34:57 +0100 matrix-synapse (0.22.1-1) jessie; urgency=medium * Imported Upstream version 0.22.1 -- Erik Johnston Thu, 06 Jul 2017 18:14:13 +0100 matrix-synapse (0.22.0-1) jessie; urgency=medium * Imported upstream version 0.22.0 -- Erik Johnston Thu, 06 Jul 2017 10:47:45 +0100 matrix-synapse (0.21.1-1) jessie; urgency=medium * Imported upstream version 0.21.1 -- Erik Johnston Thu, 15 Jun 2017 13:31:13 +0100 matrix-synapse (0.21.0-1) jessie; urgency=medium * Imported upstream version 0.21.0 * Update patches -- Erik Johnston Thu, 18 May 2017 14:16:54 +0100 matrix-synapse (0.20.0-2) jessie; urgency=medium * Depend on python-jsonschema -- Erik Johnston Wed, 12 Apr 2017 10:41:46 +0100 matrix-synapse (0.20.0-1) jessie; urgency=medium * Imported upstream version 0.20.0 -- Erik Johnston Tue, 11 Apr 2017 12:58:26 +0100 matrix-synapse (0.19.3-1) jessie; urgency=medium * Imported upstream version 0.19.3 -- Erik Johnston Tue, 21 Mar 2017 13:45:41 +0000 matrix-synapse (0.19.2-1) jessie; urgency=medium [ Sunil Mohan Adapa ] * Bump standards version to 3.9.8 * Add debian/copyright file * Don't ignore errors in debian/config * Reformat depenedencies in debian/control * Internationalize strings in template file * Update package description * Add lsb-base as dependency * Update questions for debconf style * Add man pages for all binaries [ Erik Johnston ] * Imported upstream version 0.19.2 -- Erik Johnston Tue, 21 Feb 2017 13:55:00 +0000 matrix-synapse (0.19.1-1) jessie; urgency=medium * Imported upstream version 0.19.1 -- Erik Johnston Thu, 09 Feb 2017 11:53:27 +0000 matrix-synapse (0.19.0-1) jessie; urgency=medium This build requires python-twisted 0.19.0, which may need to be installed from backports. [ Bryce Chidester ] * Add EnvironmentFile to the systemd service * Create matrix-synapse.default [ Erik Johnston ] * Imported upstream version 0.19.0 -- Erik Johnston Sat, 04 Feb 2017 09:58:29 +0000 matrix-synapse (0.18.7-1) trusty; urgency=medium * Imported Upstream version 0.18.4 -- Erik Johnston Mon, 09 Jan 2017 15:10:21 +0000 matrix-synapse (0.18.5-1) trusty; urgency=medium * Imported Upstream version 0.18.5 -- Erik Johnston Fri, 16 Dec 2016 10:51:59 +0000 matrix-synapse (0.18.4-1) trusty; urgency=medium * Imported Upstream version 0.18.4 -- Erik Johnston Tue, 22 Nov 2016 10:33:41 +0000 matrix-synapse (0.18.3-1) trusty; urgency=medium * Imported Upstream version 0.18.3 * Remove upstreamed ldap3 patch -- Erik Johnston Tue, 08 Nov 2016 15:01:49 +0000 matrix-synapse (0.18.2-2) trusty; urgency=high * Patch ldap3 support to workaround differences in python-ldap3 0.9, bug allowed unauthorized logins if ldap3 0.9 was used. -- Erik Johnston Tue, 08 Nov 2016 13:48:09 +0000 matrix-synapse (0.18.2-1) trusty; urgency=medium * Imported Upstream version 0.18.2 -- Erik Johnston Tue, 01 Nov 2016 13:30:45 +0000 matrix-synapse (0.18.1-1) trusty; urgency=medium * Imported Upstream version 0.18.1 -- Erik Johnston Wed, 05 Oct 2016 14:52:53 +0100 matrix-synapse (0.18.0-1) trusty; urgency=medium * Imported Upstream version 0.18.0 -- Erik Johnston Mon, 19 Sep 2016 17:38:48 +0100 matrix-synapse (0.17.3-1) trusty; urgency=medium * Imported Upstream version 0.17.3 -- Erik Johnston Fri, 09 Sep 2016 11:18:18 +0100 matrix-synapse (0.17.2-1) trusty; urgency=medium * Imported Upstream version 0.17.2 -- Erik Johnston Thu, 08 Sep 2016 15:37:14 +0100 matrix-synapse (0.17.1-1) trusty; urgency=medium * Imported Upstream version 0.17.1 -- Erik Johnston Wed, 24 Aug 2016 15:11:29 +0100 matrix-synapse (0.17.0-1) trusty; urgency=medium * Imported Upstream version 0.17.0 -- Erik Johnston Mon, 08 Aug 2016 13:56:15 +0100 matrix-synapse (0.16.1-r1-1) trusty; urgency=medium * Imported Upstream version 0.16.1-r1 -- Erik Johnston Fri, 08 Jul 2016 16:47:35 +0100 matrix-synapse (0.16.1-2) trusty; urgency=critical * Apply security patch -- Erik Johnston Fri, 08 Jul 2016 11:05:27 +0100 matrix-synapse (0.16.1-1) trusty; urgency=medium * New upstream release -- Erik Johnston Tue, 21 Jun 2016 14:56:48 +0100 matrix-synapse (0.16.0-3) trusty; urgency=medium * Don't require strict nacl==0.3.0 requirement -- Erik Johnston Mon, 20 Jun 2016 13:24:22 +0100 matrix-synapse (0.16.0-2) trusty; urgency=medium * Also change the permissions of /etc/matrix-synapse * Add apt webclient instructions * Fix up patches * Update default homeserver.yaml * Add patch -- Erik Johnston Fri, 10 Jun 2016 14:06:20 +0100 matrix-synapse (0.16.0-1) trusty; urgency=medium [ David A Roberts ] * systemd [ Erik Johnston ] * Fixup postinst and matrix-synapse.service * Handle email optional deps * New upstream release -- Erik Johnston Thu, 09 Jun 2016 16:17:01 +0100 matrix-synapse (0.14.0-1) trusty; urgency=medium * Remove saml2 module requirements -- Erik Johnston Wed, 30 Mar 2016 14:31:17 +0100 matrix-synapse (0.13.3-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 11 Feb 2016 16:35:39 +0000 matrix-synapse (0.13.2-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 11 Feb 2016 11:01:16 +0000 matrix-synapse (0.13.0-1) trusty; urgency=medium * New upstream release -- Erik Johnston Wed, 10 Feb 2016 16:34:39 +0000 matrix-synapse (0.12.0-2) trusty; urgency=medium * Don't default `registerion_shared_secret` config option -- Erik Johnston Wed, 06 Jan 2016 16:34:02 +0000 matrix-synapse (0.12.0-1) stable; urgency=medium * Imported Upstream version 0.12.0 -- Mark Haines Mon, 04 Jan 2016 15:38:33 +0000 matrix-synapse (0.11.1-1) unstable; urgency=medium * Imported Upstream version 0.11.1 -- Erik Johnston Fri, 20 Nov 2015 17:56:52 +0000 matrix-synapse (0.11.0-r2-1) stable; urgency=medium * Imported Upstream version 0.11.0-r2 * Add gbp.conf -- Erik Johnston Thu, 19 Nov 2015 13:52:36 +0000 matrix-synapse (0.11.0-1) wheezy; urgency=medium * Fix dependencies. -- Erik Johnston Tue, 17 Nov 2015 16:28:06 +0000 matrix-synapse (0.11.0-0) wheezy; urgency=medium * New upstream release -- Erik Johnston Tue, 17 Nov 2015 16:03:01 +0000 matrix-synapse (0.10.0-2) wheezy; urgency=medium * Rebuild for wheezy. -- Erik Johnston Fri, 04 Sep 2015 14:21:03 +0100 matrix-synapse (0.10.0-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 03 Sep 2015 10:08:34 +0100 matrix-synapse (0.10.0~rc6-3) trusty; urgency=medium * Create log directory. -- Erik Johnston Wed, 02 Sep 2015 17:49:07 +0100 matrix-synapse (0.10.0~rc6-2) trusty; urgency=medium * Add patch to work around upstream bug in config directory handling. -- Erik Johnston Wed, 02 Sep 2015 17:42:42 +0100 matrix-synapse (0.10.0~rc6-1) trusty; urgency=medium * New upstream release -- Erik Johnston Wed, 02 Sep 2015 17:21:21 +0100 matrix-synapse (0.10.0~rc5-3) trusty; urgency=medium * Update init script to work. -- Erik Johnston Fri, 28 Aug 2015 10:51:56 +0100 matrix-synapse (0.10.0~rc5-2) trusty; urgency=medium * Fix where python files are installed. -- Erik Johnston Thu, 27 Aug 2015 11:55:39 +0100 matrix-synapse (0.10.0~rc5-1) trusty; urgency=medium * New upstream release -- Erik Johnston Thu, 27 Aug 2015 11:26:54 +0100 matrix-synapse (0.10.0~rc4-1) trusty; urgency=medium * New upstream version. -- Erik Johnston Thu, 27 Aug 2015 10:29:31 +0100 matrix-synapse (0.10.0~rc3-7) trusty; urgency=medium * Add debian/watch -- Erik Johnston Wed, 26 Aug 2015 17:57:08 +0100 matrix-synapse (0.10.0~rc3-6) trusty; urgency=medium * Deps. -- Erik Johnston Wed, 26 Aug 2015 17:07:13 +0100 matrix-synapse (0.10.0~rc3-5) trusty; urgency=medium * Deps. -- Erik Johnston Wed, 26 Aug 2015 16:18:02 +0100 matrix-synapse (0.10.0~rc3-4) trusty; urgency=medium * More deps. -- Erik Johnston Wed, 26 Aug 2015 14:09:27 +0100 matrix-synapse (0.10.0~rc3-3) trusty; urgency=medium * Update deps. -- Erik Johnston Wed, 26 Aug 2015 13:49:20 +0100 matrix-synapse (0.10.0~rc3-2) trusty; urgency=medium * Add more deps. -- Erik Johnston Wed, 26 Aug 2015 13:25:45 +0100 matrix-synapse (0.10.0~rc3-1) trusty; urgency=medium * New upstream release -- Erik Johnston Tue, 25 Aug 2015 17:52:33 +0100 matrix-synapse (0.9.3-1~trusty1) trusty; urgency=medium * Rebuild for trusty. -- Erik Johnston Thu, 20 Aug 2015 15:05:43 +0100 matrix-synapse (0.9.3-1) wheezy; urgency=medium * New upstream release * Create a user, "matrix-synapse", to run as * Log to /var/log/matrix-synapse/ directory * Override the way synapse looks for the angular SDK (syweb) so it finds the packaged one -- Paul "LeoNerd" Evans Fri, 07 Aug 2015 15:32:12 +0100 matrix-synapse (0.9.2-2) wheezy; urgency=medium * Supply a default config file * Create directory in /var/lib * Use debconf to ask the user for the server name at installation time -- Paul "LeoNerd" Evans Thu, 06 Aug 2015 15:28:00 +0100 matrix-synapse (0.9.2-1) wheezy; urgency=low * source package automatically created by stdeb 0.8.2 -- Paul "LeoNerd" Evans Fri, 12 Jun 2015 14:32:03 +0100 synapse-1.100.0/debian/clean000066400000000000000000000000321455622526000155640ustar00rootroot00000000000000exported_requirements.txt synapse-1.100.0/debian/control000066400000000000000000000022631455622526000161720ustar00rootroot00000000000000Source: matrix-synapse-py3 Section: contrib/python Priority: extra Maintainer: Synapse Packaging team # keep this list in sync with the build dependencies in docker/Dockerfile-dhvirtualenv. Build-Depends: debhelper-compat (= 12), dh-virtualenv (>= 1.1), libsystemd-dev, libpq-dev, libicu-dev, pkg-config, lsb-release, python3-dev, python3, python3-setuptools, python3-pip, python3-venv, tar, Standards-Version: 3.9.8 Homepage: https://github.com/element-hq/synapse Package: matrix-synapse-py3 Architecture: any Provides: matrix-synapse Conflicts: matrix-synapse (<< 0.34.0.1-0matrix2), matrix-synapse (>= 0.34.0.1-1), Pre-Depends: dpkg (>= 1.16.1) Depends: adduser, debconf, ${misc:Depends}, ${shlibs:Depends}, ${synapse:pydepends}, # some of our scripts use perl, but none of them are important, # so we put perl:Depends in Suggests rather than Depends. Recommends: ${shlibs1:Recommends}, matrix-org-archive-keyring, Suggests: sqlite3, ${perl:Depends}, Description: Open federated Instant Messaging and VoIP server Matrix is an ambitious new ecosystem for open federated Instant Messaging and VoIP. Synapse is a reference Matrix server implementation. synapse-1.100.0/debian/copyright000066400000000000000000000076771455622526000165400ustar00rootroot00000000000000Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: synapse Source: https://github.com/element-hq/synapse Files: * Copyright: 2014-2017, OpenMarket Ltd, 2017-2018 New Vector Ltd License: Apache-2.0 Files: * Copyright: 2023 New Vector Ltd License: AGPL-3.0-or-later Files: synapse/config/saml2.py Copyright: 2015, Ericsson License: Apache-2.0 Files: synapse/config/jwt.py Copyright: 2015, Niklas Riekenbrauck License: Apache-2.0 Files: synapse/config/workers.py Copyright: 2016, matrix.org License: Apache-2.0 Files: synapse/config/repository.py Copyright: 2014-2015, matrix.org License: Apache-2.0 Files: debian/* Copyright: 2016-2017, Erik Johnston 2017, Rahul De 2017, Sunil Mohan Adapa License: Apache-2.0 License: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. . On Debian systems, the full text of the Apache License version 2.0 can be found in the file `/usr/share/common-licenses/Apache-2.0'. License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: Expat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. synapse-1.100.0/debian/dirs000066400000000000000000000001011455622526000154400ustar00rootroot00000000000000etc/matrix-synapse var/lib/matrix-synapse var/log/matrix-synapse synapse-1.100.0/debian/hash_password.1000066400000000000000000000042221455622526000175130ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "HASH_PASSWORD" "1" "July 2021" "" "" .SH "NAME" \fBhash_password\fR \- Calculate the hash of a new password, so that passwords can be reset .SH "SYNOPSIS" \fBhash_password\fR [\fB\-p\fR|\fB\-\-password\fR [password]] [\fB\-c\fR|\fB\-\-config\fR \fIfile\fR] .SH "DESCRIPTION" \fBhash_password\fR calculates the hash of a supplied password using bcrypt\. .P \fBhash_password\fR takes a password as an parameter either on the command line or the \fBSTDIN\fR if not supplied\. .P It accepts an YAML file which can be used to specify parameters like the number of rounds for bcrypt and password_config section having the pepper value used for the hashing\. By default \fBbcrypt_rounds\fR is set to \fB12\fR\. .P The hashed password is written on the \fBSTDOUT\fR\. .SH "FILES" A sample YAML file accepted by \fBhash_password\fR is described below: .P bcrypt_rounds: 17 password_config: pepper: "random hashing pepper" .SH "OPTIONS" .TP \fB\-p\fR, \fB\-\-password\fR Read the password form the command line if [password] is supplied\. If not, prompt the user and read the password form the \fBSTDIN\fR\. It is not recommended to type the password on the command line directly\. Use the STDIN instead\. .TP \fB\-c\fR, \fB\-\-config\fR Read the supplied YAML \fIfile\fR containing the options \fBbcrypt_rounds\fR and the \fBpassword_config\fR section containing the \fBpepper\fR value\. .SH "EXAMPLES" Hash from the command line: .IP "" 4 .nf $ hash_password \-p "p@ssw0rd" $2b$12$VJNqWQYfsWTEwcELfoSi4Oa8eA17movHqqi8\.X8fWFpum7SxZ9MFe .fi .IP "" 0 .P Hash from the STDIN: .IP "" 4 .nf $ hash_password Password: Confirm password: $2b$12$AszlvfmJl2esnyhmn8m/kuR2tdXgROWtWxnX\.rcuAbM8ErLoUhybG .fi .IP "" 0 .P Using a config file: .IP "" 4 .nf $ hash_password \-c config\.yml Password: Confirm password: $2b$12$CwI\.wBNr\.w3kmiUlV3T5s\.GT2wH7uebDCovDrCOh18dFedlANK99O .fi .IP "" 0 .SH "COPYRIGHT" This man page was written by Rahul De <\fI\%mailto:rahulde@swecha\.net\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synctl(1), synapse_port_db(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/hash_password.ronn000066400000000000000000000037141455622526000203340ustar00rootroot00000000000000hash_password(1) -- Calculate the hash of a new password, so that passwords can be reset ======================================================================================== ## SYNOPSIS `hash_password` [`-p`|`--password` [password]] [`-c`|`--config` ] ## DESCRIPTION **hash_password** calculates the hash of a supplied password using bcrypt. `hash_password` takes a password as an parameter either on the command line or the `STDIN` if not supplied. It accepts an YAML file which can be used to specify parameters like the number of rounds for bcrypt and password_config section having the pepper value used for the hashing. By default `bcrypt_rounds` is set to **12**. The hashed password is written on the `STDOUT`. ## FILES A sample YAML file accepted by `hash_password` is described below: bcrypt_rounds: 17 password_config: pepper: "random hashing pepper" ## OPTIONS * `-p`, `--password`: Read the password form the command line if [password] is supplied. If not, prompt the user and read the password form the `STDIN`. It is not recommended to type the password on the command line directly. Use the STDIN instead. * `-c`, `--config`: Read the supplied YAML containing the options `bcrypt_rounds` and the `password_config` section containing the `pepper` value. ## EXAMPLES Hash from the command line: $ hash_password -p "p@ssw0rd" $2b$12$VJNqWQYfsWTEwcELfoSi4Oa8eA17movHqqi8.X8fWFpum7SxZ9MFe Hash from the STDIN: $ hash_password Password: Confirm password: $2b$12$AszlvfmJl2esnyhmn8m/kuR2tdXgROWtWxnX.rcuAbM8ErLoUhybG Using a config file: $ hash_password -c config.yml Password: Confirm password: $2b$12$CwI.wBNr.w3kmiUlV3T5s.GT2wH7uebDCovDrCOh18dFedlANK99O ## COPYRIGHT This man page was written by Rahul De <> for Debian GNU/Linux distribution. ## SEE ALSO synctl(1), synapse_port_db(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/install000066400000000000000000000000701455622526000161520ustar00rootroot00000000000000debian/manage_debconf.pl /opt/venvs/matrix-synapse/lib/ synapse-1.100.0/debian/manage_debconf.pl000077500000000000000000000061111455622526000200330ustar00rootroot00000000000000#!/usr/bin/perl # # Interface between our config files and the debconf database. # # Usage: # # manage_debconf.pl # # where can be: # # read: read the configuration from the yaml into debconf # update: update the yaml config according to the debconf database use strict; use warnings; use Debconf::Client::ConfModule (qw/get set/); # map from the name of a setting in our .yaml file to the relevant debconf # setting. my %MAPPINGS=( server_name => 'matrix-synapse/server-name', report_stats => 'matrix-synapse/report-stats', ); # enable debug if dpkg --debug my $DEBUG = $ENV{DPKG_MAINTSCRIPT_DEBUG}; sub read_config { my @files = @_; foreach my $file (@files) { print STDERR "reading $file\n" if $DEBUG; open my $FH, "<", $file or next; # rudimentary parsing which (a) avoids having to depend on a yaml library, # and (b) is tolerant of yaml errors while($_ = <$FH>) { while (my ($setting, $debconf) = each %MAPPINGS) { $setting = quotemeta $setting; if(/^${setting}\s*:(.*)$/) { my $val = $1; # remove leading/trailing whitespace $val =~ s/^\s*//; $val =~ s/\s*$//; # remove surrounding quotes if ($val =~ /^"(.*)"$/ || $val =~ /^'(.*)'$/) { $val = $1; } print STDERR ">> $debconf = $val\n" if $DEBUG; set($debconf, $val); } } } close $FH; } } sub update_config { my @files = @_; my %substs = (); while (my ($setting, $debconf) = each %MAPPINGS) { my @res = get($debconf); $substs{$setting} = $res[1] if $res[0] == 0; } foreach my $file (@files) { print STDERR "checking $file\n" if $DEBUG; open my $FH, "<", $file or next; my $updated = 0; # read the whole file into memory my @lines = <$FH>; while (my ($setting, $val) = each %substs) { $setting = quotemeta $setting; map { if (/^${setting}\s*:\s*(.*)\s*$/) { my $current = $1; if ($val ne $current) { $_ = "${setting}: $val\n"; $updated = 1; } } } @lines; } close $FH; next unless $updated; print STDERR "updating $file\n" if $DEBUG; open $FH, ">", $file or die "unable to update $file"; print $FH @lines; close $FH; } } my $cmd = $ARGV[0]; my $read = 0; my $update = 0; if (not $cmd) { die "must specify a command to perform\n"; } elsif ($cmd eq 'read') { $read = 1; } elsif ($cmd eq 'update') { $update = 1; } else { die "unknown command '$cmd'\n"; } my @files = ( "/etc/matrix-synapse/homeserver.yaml", glob("/etc/matrix-synapse/conf.d/*.yaml"), ); if ($read) { read_config(@files); } elsif ($update) { update_config(@files); } synapse-1.100.0/debian/manpages000066400000000000000000000002111455622526000162740ustar00rootroot00000000000000debian/hash_password.1 debian/register_new_matrix_user.1 debian/synapse_port_db.1 debian/synapse_review_recent_signups.1 debian/synctl.1 synapse-1.100.0/debian/matrix-synapse-py3.config000077500000000000000000000007471455622526000214630ustar00rootroot00000000000000#!/bin/sh set -e # shellcheck disable=SC1091 . /usr/share/debconf/confmodule # try to update the debconf db according to whatever is in the config files # # note that we may get run during preconfiguration, in which case the script # will not yet be installed. [ -x /opt/venvs/matrix-synapse/lib/manage_debconf.pl ] && \ /opt/venvs/matrix-synapse/lib/manage_debconf.pl read db_input high matrix-synapse/server-name || true db_input high matrix-synapse/report-stats || true db_go synapse-1.100.0/debian/matrix-synapse-py3.links000066400000000000000000000007061455622526000213260ustar00rootroot00000000000000opt/venvs/matrix-synapse/bin/hash_password usr/bin/hash_password opt/venvs/matrix-synapse/bin/register_new_matrix_user usr/bin/register_new_matrix_user opt/venvs/matrix-synapse/bin/synapse_port_db usr/bin/synapse_port_db opt/venvs/matrix-synapse/bin/synapse_review_recent_signups usr/bin/synapse_review_recent_signups opt/venvs/matrix-synapse/bin/synctl usr/bin/synctl opt/venvs/matrix-synapse/bin/update_synapse_database usr/bin/update_synapse_database synapse-1.100.0/debian/matrix-synapse-py3.postinst000066400000000000000000000032761455622526000220760ustar00rootroot00000000000000#!/bin/sh -e # shellcheck disable=SC1091 . /usr/share/debconf/confmodule CONFIGFILE_SERVERNAME="/etc/matrix-synapse/conf.d/server_name.yaml" CONFIGFILE_REPORTSTATS="/etc/matrix-synapse/conf.d/report_stats.yaml" USER="matrix-synapse" case "$1" in configure|reconfigure) # generate template config files if they don't exist mkdir -p "/etc/matrix-synapse/conf.d/" if [ ! -e "$CONFIGFILE_SERVERNAME" ]; then cat > "$CONFIGFILE_SERVERNAME" < "$CONFIGFILE_REPORTSTATS" </dev/null; then adduser --quiet --system --group --no-create-home --home /var/lib/matrix-synapse $USER fi for DIR in /var/lib/matrix-synapse /var/log/matrix-synapse /etc/matrix-synapse; do if ! dpkg-statoverride --list --quiet $DIR >/dev/null; then dpkg-statoverride --force-statoverride-add --quiet --update --add $USER "$(id -gn $USER)" 0755 $DIR fi done ;; esac #DEBHELPER# exit 0 synapse-1.100.0/debian/matrix-synapse.service000066400000000000000000000014701455622526000211340ustar00rootroot00000000000000[Unit] Description=Synapse Matrix homeserver [Service] Type=notify User=matrix-synapse WorkingDirectory=/var/lib/matrix-synapse ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-keys ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ ExecReload=/bin/kill -HUP $MAINPID Restart=always RestartSec=3 SyslogIdentifier=matrix-synapse # The environment file is not shipped by default anymore and the below directive # is for backwards compatibility only. Please use your homeserver.yaml if # possible. EnvironmentFile=-/etc/default/matrix-synapse [Install] WantedBy=multi-user.target synapse-1.100.0/debian/po/000077500000000000000000000000001455622526000152025ustar00rootroot00000000000000synapse-1.100.0/debian/po/POTFILES.in000066400000000000000000000000441455622526000167550ustar00rootroot00000000000000[type: gettext/rfc822deb] templates synapse-1.100.0/debian/po/templates.pot000066400000000000000000000034561455622526000177340ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the matrix-synapse-py3 package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: matrix-synapse-py3\n" "Report-Msgid-Bugs-To: matrix-synapse-py3@packages.debian.org\n" "POT-Creation-Date: 2020-04-06 16:39-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../templates:1001 msgid "Name of the server:" msgstr "" #. Type: string #. Description #: ../templates:1001 msgid "" "The name that this homeserver will appear as, to clients and other servers " "via federation. This is normally the public hostname of the server running " "synapse, but can be different if you set up delegation. Please refer to the " "delegation documentation in this case: https://github.com/element-hq/synapse/" "blob/master/docs/delegate.md." msgstr "" #. Type: boolean #. Description #: ../templates:2001 msgid "Report homeserver usage statistics?" msgstr "" #. Type: boolean #. Description #: ../templates:2001 msgid "" "Developers of Matrix and Synapse really appreciate helping the project out " "by reporting homeserver usage statistics from this homeserver. Your " "homeserver's server name, along with very basic aggregate data (e.g. " "number of users) will be reported. But it helps track the growth of the " "Matrix community, and helps in making Matrix a success, as well as to " "convince other networks that they should peer with Matrix." msgstr "" #. Type: boolean #. Description #: ../templates:2001 msgid "Thank you." msgstr "" synapse-1.100.0/debian/register_new_matrix_user.1000066400000000000000000000041731455622526000217720ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "REGISTER_NEW_MATRIX_USER" "1" "July 2021" "" "" .SH "NAME" \fBregister_new_matrix_user\fR \- Used to register new users with a given home server when registration has been disabled .SH "SYNOPSIS" \fBregister_new_matrix_user\fR options\|\.\|\.\|\. .SH "DESCRIPTION" \fBregister_new_matrix_user\fR registers new users with a given home server when registration has been disabled\. For this to work, the home server must be configured with the \'registration_shared_secret\' option set\. .P This accepts the user credentials like the username, password, is user an admin or not and registers the user onto the homeserver database\. Also, a YAML file containing the shared secret can be provided\. If not, the shared secret can be provided via the command line\. .P By default it assumes the home server URL to be \fBhttps://localhost:8448\fR\. This can be changed via the \fBserver_url\fR command line option\. .SH "FILES" A sample YAML file accepted by \fBregister_new_matrix_user\fR is described below: .IP "" 4 .nf registration_shared_secret: "s3cr3t" .fi .IP "" 0 .SH "OPTIONS" .TP \fB\-u\fR, \fB\-\-user\fR Local part of the new user\. Will prompt if omitted\. .TP \fB\-p\fR, \fB\-\-password\fR New password for user\. Will prompt if omitted\. Supplying the password on the command line is not recommended\. Use the STDIN instead\. .TP \fB\-a\fR, \fB\-\-admin\fR Register new user as an admin\. Will prompt if omitted\. .TP \fB\-c\fR, \fB\-\-config\fR Path to server config file containing the shared secret\. .TP \fB\-k\fR, \fB\-\-shared\-secret\fR Shared secret as defined in server config file\. This is an optional parameter as it can be also supplied via the YAML file\. .TP \fBserver_url\fR URL of the home server\. Defaults to \'https://localhost:8448\'\. .SH "EXAMPLES" .nf $ register_new_matrix_user \-u user1 \-p p@ssword \-a \-c config\.yaml .fi .SH "COPYRIGHT" This man page was written by Rahul De <\fI\%mailto:rahulde@swecha\.net\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synctl(1), synapse_port_db(1), hash_password(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/register_new_matrix_user.ronn000066400000000000000000000037401455622526000226050ustar00rootroot00000000000000register_new_matrix_user(1) -- Used to register new users with a given home server when registration has been disabled ====================================================================================================================== ## SYNOPSIS `register_new_matrix_user` options... ## DESCRIPTION **register_new_matrix_user** registers new users with a given home server when registration has been disabled. For this to work, the home server must be configured with the 'registration_shared_secret' option set. This accepts the user credentials like the username, password, is user an admin or not and registers the user onto the homeserver database. Also, a YAML file containing the shared secret can be provided. If not, the shared secret can be provided via the command line. By default it assumes the home server URL to be `https://localhost:8448`. This can be changed via the `server_url` command line option. ## FILES A sample YAML file accepted by `register_new_matrix_user` is described below: registration_shared_secret: "s3cr3t" ## OPTIONS * `-u`, `--user`: Local part of the new user. Will prompt if omitted. * `-p`, `--password`: New password for user. Will prompt if omitted. Supplying the password on the command line is not recommended. Use the STDIN instead. * `-a`, `--admin`: Register new user as an admin. Will prompt if omitted. * `-c`, `--config`: Path to server config file containing the shared secret. * `-k`, `--shared-secret`: Shared secret as defined in server config file. This is an optional parameter as it can be also supplied via the YAML file. * `server_url`: URL of the home server. Defaults to 'https://localhost:8448'. ## EXAMPLES $ register_new_matrix_user -u user1 -p p@ssword -a -c config.yaml ## COPYRIGHT This man page was written by Rahul De <> for Debian GNU/Linux distribution. ## SEE ALSO synctl(1), synapse_port_db(1), hash_password(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/rules000077500000000000000000000046541455622526000156550ustar00rootroot00000000000000#!/usr/bin/make -f # # Build Debian package using https://github.com/spotify/dh-virtualenv # # assume we only have one package PACKAGE_NAME:=`dh_listpackages` override_dh_installsystemd: dh_installsystemd --name=matrix-synapse # we don't really want to strip the symbols from our object files. override_dh_strip: override_dh_auto_configure: # many libraries pulled from PyPI have allocatable sections after # non-allocatable ones on which dwz errors out. For those without the issue the # gains are only marginal override_dh_dwz: # dh_shlibdeps calls dpkg-shlibdeps, which finds all the binary files # (executables and shared libs) in the package, and looks for the shared # libraries that they depend on. It then adds a dependency on the package that # contains that library to the package. # # We make two modifications to that process... # override_dh_shlibdeps: # Firstly, postgres is not a hard dependency for us, so we want to make # the things that psycopg2 depends on (such as libpq) be # recommendations rather than hard dependencies. We do so by # running dpkg-shlibdeps manually on psycopg2's libs. # find debian/$(PACKAGE_NAME)/ -path '*/site-packages/psycopg2/*.so' | \ xargs dpkg-shlibdeps -Tdebian/$(PACKAGE_NAME).substvars \ -pshlibs1 -dRecommends # secondly, we exclude PIL's libraries from the process. They are known # to be self-contained, but they have interdependencies and # dpkg-shlibdeps doesn't know how to resolve them. # # As of Pillow 7.1.0, these libraries are in site-packages/Pillow.libs. # Previously, they were in site-packages/PIL/.libs. As of Pillow 10.2.0 # the package name is lowercased to site-packages/pillow.libs. # # (we also need to exclude psycopg2, of course, since we've already # dealt with that.) # dh_shlibdeps \ -X site-packages/PIL/.libs \ -X site-packages/Pillow.libs \ -X site-packages/pillow.libs \ -X site-packages/psycopg2 override_dh_virtualenv: ./debian/build_virtualenv override_dh_builddeb: # force the compression to xzip, to stop dpkg-deb on impish defaulting to zstd # (which requires reprepro 5.3.0-1.3, which is currently only in 'experimental' in Debian: # https://metadata.ftp-master.debian.org/changelogs/main/r/reprepro/reprepro_5.3.0-1.3_changelog) dh_builddeb -- -Zxz %: dh $@ --with python-virtualenv synapse-1.100.0/debian/source/000077500000000000000000000000001455622526000160645ustar00rootroot00000000000000synapse-1.100.0/debian/source/format000066400000000000000000000000151455622526000172730ustar00rootroot000000000000003.0 (native) synapse-1.100.0/debian/synapse_port_db.1000066400000000000000000000053251455622526000200460ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "SYNAPSE_PORT_DB" "1" "July 2021" "" "" .SH "NAME" \fBsynapse_port_db\fR \- A script to port an existing synapse SQLite database to a new PostgreSQL database\. .SH "SYNOPSIS" \fBsynapse_port_db\fR [\-v] \-\-sqlite\-database=\fIdbfile\fR \-\-postgres\-config=\fIyamlconfig\fR [\-\-curses] [\-\-batch\-size=\fIbatch\-size\fR] .SH "DESCRIPTION" \fBsynapse_port_db\fR ports an existing synapse SQLite database to a new PostgreSQL database\. .P SQLite database is specified with \fB\-\-sqlite\-database\fR option and PostgreSQL configuration required to connect to PostgreSQL database is provided using \fB\-\-postgres\-config\fR configuration\. The configuration is specified in YAML format\. .SH "OPTIONS" .TP \fB\-v\fR Print log messages in \fBdebug\fR level instead of \fBinfo\fR level\. .TP \fB\-\-sqlite\-database\fR The snapshot of the SQLite database file\. This must not be currently used by a running synapse server\. .TP \fB\-\-postgres\-config\fR The database config file for the PostgreSQL database\. .TP \fB\-\-curses\fR Display a curses based progress UI\. .SH "CONFIG FILE" The postgres configuration file must be a valid YAML file with the following options\. .IP "\[ci]" 4 \fBdatabase\fR: Database configuration section\. This section header can be ignored and the options below may be specified as top level keys\. .IP "\[ci]" 4 \fBname\fR: Connector to use when connecting to the database\. This value must be \fBpsycopg2\fR\. .IP "\[ci]" 4 \fBargs\fR: DB API 2\.0 compatible arguments to send to the \fBpsycopg2\fR module\. .IP "\[ci]" 4 \fBdbname\fR \- the database name .IP "\[ci]" 4 \fBuser\fR \- user name used to authenticate .IP "\[ci]" 4 \fBpassword\fR \- password used to authenticate .IP "\[ci]" 4 \fBhost\fR \- database host address (defaults to UNIX socket if not provided) .IP "\[ci]" 4 \fBport\fR \- connection port number (defaults to 5432 if not provided) .IP "" 0 .IP "\[ci]" 4 \fBsynchronous_commit\fR: Optional\. Default is True\. If the value is \fBFalse\fR, enable asynchronous commit and don\'t wait for the server to call fsync before ending the transaction\. See: https://www\.postgresql\.org/docs/current/static/wal\-async\-commit\.html .IP "" 0 .IP "" 0 .P Following example illustrates the configuration file format\. .IP "" 4 .nf database: name: psycopg2 args: dbname: synapsedb user: synapseuser password: ORohmi9Eet=ohphi host: localhost synchronous_commit: false .fi .IP "" 0 .SH "COPYRIGHT" This man page was written by Sunil Mohan Adapa <\fI\%mailto:sunil@medhas\.org\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synctl(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/synapse_port_db.ronn000066400000000000000000000047321455622526000206630ustar00rootroot00000000000000synapse_port_db(1) -- A script to port an existing synapse SQLite database to a new PostgreSQL database. ============================================= ## SYNOPSIS `synapse_port_db` [-v] --sqlite-database= --postgres-config= [--curses] [--batch-size=] ## DESCRIPTION **synapse_port_db** ports an existing synapse SQLite database to a new PostgreSQL database. SQLite database is specified with `--sqlite-database` option and PostgreSQL configuration required to connect to PostgreSQL database is provided using `--postgres-config` configuration. The configuration is specified in YAML format. ## OPTIONS * `-v`: Print log messages in `debug` level instead of `info` level. * `--sqlite-database`: The snapshot of the SQLite database file. This must not be currently used by a running synapse server. * `--postgres-config`: The database config file for the PostgreSQL database. * `--curses`: Display a curses based progress UI. ## CONFIG FILE The postgres configuration file must be a valid YAML file with the following options. * `database`: Database configuration section. This section header can be ignored and the options below may be specified as top level keys. * `name`: Connector to use when connecting to the database. This value must be `psycopg2`. * `args`: DB API 2.0 compatible arguments to send to the `psycopg2` module. * `dbname` - the database name * `user` - user name used to authenticate * `password` - password used to authenticate * `host` - database host address (defaults to UNIX socket if not provided) * `port` - connection port number (defaults to 5432 if not provided) * `synchronous_commit`: Optional. Default is True. If the value is `False`, enable asynchronous commit and don't wait for the server to call fsync before ending the transaction. See: https://www.postgresql.org/docs/current/static/wal-async-commit.html Following example illustrates the configuration file format. database: name: psycopg2 args: dbname: synapsedb user: synapseuser password: ORohmi9Eet=ohphi host: localhost synchronous_commit: false ## COPYRIGHT This man page was written by Sunil Mohan Adapa <> for Debian GNU/Linux distribution. ## SEE ALSO synctl(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/synapse_review_recent_signups.1000066400000000000000000000026051455622526000230240ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "SYNAPSE_REVIEW_RECENT_SIGNUPS" "1" "July 2021" "" "" .SH "NAME" \fBsynapse_review_recent_signups\fR \- Print users that have recently registered on Synapse .SH "SYNOPSIS" \fBsynapse_review_recent_signups\fR \fB\-c\fR|\fB\-\-config\fR \fIfile\fR [\fB\-s\fR|\fB\-\-since\fR \fIperiod\fR] [\fB\-e\fR|\fB\-\-exclude\-emails\fR] [\fB\-u\fR|\fB\-\-only\-users\fR] .SH "DESCRIPTION" \fBsynapse_review_recent_signups\fR prints out recently registered users on a Synapse server, as well as some basic information about the user\. .P \fBsynapse_review_recent_signups\fR must be supplied with the config of the Synapse server, so that it can fetch the database config and connect to the database\. .SH "OPTIONS" .TP \fB\-c\fR, \fB\-\-config\fR The config file(s) used by the Synapse server\. .TP \fB\-s\fR, \fB\-\-since\fR How far back to search for newly registered users\. Defaults to 7d, i\.e\. up to seven days in the past\. Valid units are \'s\', \'m\', \'h\', \'d\', \'w\', or \'y\'\. .TP \fB\-e\fR, \fB\-\-exclude\-emails\fR Do not print out users that have validated emails associated with their account\. .TP \fB\-u\fR, \fB\-\-only\-users\fR Only print out the user IDs of recently registered users, without any additional information .SH "SEE ALSO" synctl(1), synapse_port_db(1), register_new_matrix_user(1), hash_password(1) synapse-1.100.0/debian/synapse_review_recent_signups.ronn000066400000000000000000000023371455622526000236420ustar00rootroot00000000000000synapse_review_recent_signups(1) -- Print users that have recently registered on Synapse ======================================================================================== ## SYNOPSIS `synapse_review_recent_signups` `-c`|`--config` [`-s`|`--since` ] [`-e`|`--exclude-emails`] [`-u`|`--only-users`] ## DESCRIPTION **synapse_review_recent_signups** prints out recently registered users on a Synapse server, as well as some basic information about the user. `synapse_review_recent_signups` must be supplied with the config of the Synapse server, so that it can fetch the database config and connect to the database. ## OPTIONS * `-c`, `--config`: The config file(s) used by the Synapse server. * `-s`, `--since`: How far back to search for newly registered users. Defaults to 7d, i.e. up to seven days in the past. Valid units are 's', 'm', 'h', 'd', 'w', or 'y'. * `-e`, `--exclude-emails`: Do not print out users that have validated emails associated with their account. * `-u`, `--only-users`: Only print out the user IDs of recently registered users, without any additional information ## SEE ALSO synctl(1), synapse_port_db(1), register_new_matrix_user(1), hash_password(1) synapse-1.100.0/debian/synctl.1000066400000000000000000000042641455622526000161700ustar00rootroot00000000000000.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "SYNCTL" "1" "July 2021" "" "" .SH "NAME" \fBsynctl\fR \- Synapse server control interface .SH "SYNOPSIS" Start, stop or restart synapse server\. .P \fBsynctl\fR {start|stop|restart} [configfile] [\-w|\-\-worker=\fIWORKERCONFIG\fR] [\-a|\-\-all\-processes=\fIWORKERCONFIGDIR\fR] .SH "DESCRIPTION" \fBsynctl\fR can be used to start, stop or restart Synapse server\. The control operation can be done on all processes or a single worker process\. .SH "OPTIONS" .TP \fBaction\fR The value of action should be one of \fBstart\fR, \fBstop\fR or \fBrestart\fR\. .TP \fBconfigfile\fR Optional path of the configuration file to use\. Default value is \fBhomeserver\.yaml\fR\. The configuration file must exist for the operation to succeed\. .TP \fB\-w\fR, \fB\-\-worker\fR: .TP \fB\-a\fR, \fB\-\-all\-processes\fR: .SH "CONFIGURATION FILE" Configuration file may be generated as follows: .IP "" 4 .nf $ python \-m synapse\.app\.homeserver \-c config\.yaml \-\-generate\-config \-\-server\-name= .fi .IP "" 0 .SH "ENVIRONMENT" .TP \fBSYNAPSE_CACHE_FACTOR\fR Synapse\'s architecture is quite RAM hungry currently \- we deliberately cache a lot of recent room data and metadata in RAM in order to speed up common requests\. We\'ll improve this in the future, but for now the easiest way to either reduce the RAM usage (at the risk of slowing things down) is to set the almost\-undocumented \fBSYNAPSE_CACHE_FACTOR\fR environment variable\. The default is 0\.5, which can be decreased to reduce RAM usage in memory constrained enviroments, or increased if performance starts to degrade\. .IP However, degraded performance due to a low cache factor, common on machines with slow disks, often leads to explosions in memory use due backlogged requests\. In this case, reducing the cache factor will make things worse\. Instead, try increasing it drastically\. 2\.0 is a good starting value\. .SH "COPYRIGHT" This man page was written by Sunil Mohan Adapa <\fI\%mailto:sunil@medhas\.org\fR> for Debian GNU/Linux distribution\. .SH "SEE ALSO" synapse_port_db(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/synctl.ronn000066400000000000000000000051011455622526000167730ustar00rootroot00000000000000synctl(1) -- Synapse server control interface ============================================= ## SYNOPSIS Start, stop or restart synapse server. `synctl` {start|stop|restart} [configfile] [-w|--worker=] [-a|--all-processes=] ## DESCRIPTION **synctl** can be used to start, stop or restart Synapse server. The control operation can be done on all processes or a single worker process. ## OPTIONS * `action`: The value of action should be one of `start`, `stop` or `restart`. * `configfile`: Optional path of the configuration file to use. Default value is `homeserver.yaml`. The configuration file must exist for the operation to succeed. * `-w`, `--worker`: Perform start, stop or restart operations on a single worker. Incompatible with `-a`|`--all-processes`. Value passed must be a valid worker's configuration file. * `-a`, `--all-processes`: Perform start, stop or restart operations on all the workers in the given directory and the main synapse process. Incompatible with `-w`|`--worker`. Value passed must be a directory containing valid work configuration files. All files ending with `.yaml` extension shall be considered as configuration files and all other files in the directory are ignored. ## CONFIGURATION FILE Configuration file may be generated as follows: $ python -m synapse.app.homeserver -c config.yaml --generate-config --server-name= ## ENVIRONMENT * `SYNAPSE_CACHE_FACTOR`: Synapse's architecture is quite RAM hungry currently - we deliberately cache a lot of recent room data and metadata in RAM in order to speed up common requests. We'll improve this in the future, but for now the easiest way to either reduce the RAM usage (at the risk of slowing things down) is to set the almost-undocumented ``SYNAPSE_CACHE_FACTOR`` environment variable. The default is 0.5, which can be decreased to reduce RAM usage in memory constrained enviroments, or increased if performance starts to degrade. However, degraded performance due to a low cache factor, common on machines with slow disks, often leads to explosions in memory use due backlogged requests. In this case, reducing the cache factor will make things worse. Instead, try increasing it drastically. 2.0 is a good starting value. ## COPYRIGHT This man page was written by Sunil Mohan Adapa <> for Debian GNU/Linux distribution. ## SEE ALSO synapse_port_db(1), hash_password(1), register_new_matrix_user(1), synapse_review_recent_signups(1) synapse-1.100.0/debian/templates000066400000000000000000000017171455622526000165130ustar00rootroot00000000000000Template: matrix-synapse/server-name Type: string _Description: Name of the server: The name that this homeserver will appear as, to clients and other servers via federation. This is normally the public hostname of the server running synapse, but can be different if you set up delegation. Please refer to the delegation documentation in this case: https://github.com/element-hq/synapse/blob/master/docs/delegate.md. Template: matrix-synapse/report-stats Type: boolean Default: false _Description: Report homeserver usage statistics? Developers of Matrix and Synapse really appreciate helping the project out by reporting homeserver usage statistics from this homeserver. Your homeserver's server name, along with very basic aggregate data (e.g. number of users) will be reported. But it helps track the growth of the Matrix community, and helps in making Matrix a success, as well as to convince other networks that they should peer with Matrix. . Thank you. synapse-1.100.0/demo/000077500000000000000000000000001455622526000142665ustar00rootroot00000000000000synapse-1.100.0/demo/.gitignore000066400000000000000000000001121455622526000162500ustar00rootroot00000000000000# Ignore all the temporary files from the demo servers. 8080/ 8081/ 8082/ synapse-1.100.0/demo/clean.sh000077500000000000000000000005361455622526000157130ustar00rootroot00000000000000#!/usr/bin/env bash set -e DIR="$( cd "$( dirname "$0" )" && pwd )" # Ensure that the servers are stopped. $DIR/stop.sh PID_FILE="$DIR/servers.pid" if [ -f "$PID_FILE" ]; then echo "servers.pid exists!" exit 1 fi for port in 8080 8081 8082; do rm -rf "${DIR:?}/$port" rm -rf "$DIR/media_store.$port" done rm -rf "${DIR:?}/etc" synapse-1.100.0/demo/start.sh000077500000000000000000000105301455622526000157610ustar00rootroot00000000000000#!/usr/bin/env bash DIR="$( cd "$( dirname "$0" )" && pwd )" CWD=$(pwd) cd "$DIR/.." || exit # Do not override PYTHONPATH if we are in a virtual env if [ "$VIRTUAL_ENV" = "" ]; then PYTHONPATH=$(readlink -f "$(pwd)") export PYTHONPATH echo "$PYTHONPATH" fi # Create servers which listen on HTTP at 808x and HTTPS at 848x. for port in 8080 8081 8082; do echo "Starting server on port $port... " https_port=$((port + 400)) mkdir -p demo/$port pushd demo/$port || exit # Generate the configuration for the homeserver at localhost:848x, note that # the homeserver name needs to match the HTTPS listening port for federation # to properly work.. python3 -m synapse.app.homeserver \ --generate-config \ --server-name "localhost:$https_port" \ --config-path "$port.config" \ --report-stats no if ! grep -F "Customisation made by demo/start.sh" -q "$port.config"; then # Generate TLS keys. openssl req -x509 -newkey rsa:4096 \ -keyout "localhost:$port.tls.key" \ -out "localhost:$port.tls.crt" \ -days 365 -nodes -subj "/O=matrix" # Add customisations to the configuration. { printf '\n\n# Customisation made by demo/start.sh\n\n' echo "public_baseurl: http://localhost:$port/" echo 'enable_registration: true' echo 'enable_registration_without_verification: true' echo '' # Warning, this heredoc depends on the interaction of tabs and spaces. # Please don't accidentally bork me with your fancy settings. listeners=$(cat <<-PORTLISTENERS # Configure server to listen on both $https_port and $port # This overides some of the default settings above listeners: - port: $https_port type: http tls: true resources: - names: [client, federation] - port: $port tls: false bind_addresses: ['::1', '127.0.0.1'] type: http x_forwarded: true resources: - names: [client, federation] compress: false PORTLISTENERS ) echo "${listeners}" # Disable TLS for the servers printf '\n\n# Disable TLS for the servers.' echo '# DO NOT USE IN PRODUCTION' echo 'use_insecure_ssl_client_just_for_testing_do_not_use: true' echo 'federation_verify_certificates: false' # Set paths for the TLS certificates. echo "tls_certificate_path: \"$DIR/$port/localhost:$port.tls.crt\"" echo "tls_private_key_path: \"$DIR/$port/localhost:$port.tls.key\"" # Request keys directly from servers contacted over federation echo 'trusted_key_servers: []' # Allow the servers to communicate over localhost. allow_list=$(cat <<-ALLOW_LIST # Allow the servers to communicate over localhost. ip_range_whitelist: - '127.0.0.1/8' - '::1/128' ALLOW_LIST ) echo "${allow_list}" } >> "$port.config" fi # Check script parameters if [ $# -eq 1 ]; then if [ "$1" = "--no-rate-limit" ]; then # Disable any rate limiting ratelimiting=$(cat <<-RC rc_message: per_second: 1000 burst_count: 1000 rc_registration: per_second: 1000 burst_count: 1000 rc_login: address: per_second: 1000 burst_count: 1000 account: per_second: 1000 burst_count: 1000 failed_attempts: per_second: 1000 burst_count: 1000 rc_admin_redaction: per_second: 1000 burst_count: 1000 rc_joins: local: per_second: 1000 burst_count: 1000 remote: per_second: 1000 burst_count: 1000 rc_3pid_validation: per_second: 1000 burst_count: 1000 rc_invites: per_room: per_second: 1000 burst_count: 1000 per_user: per_second: 1000 burst_count: 1000 RC ) echo "${ratelimiting}" >> "$port.config" fi fi # Always disable reporting of stats if the option is not there. if ! grep -F "report_stats" -q "$port.config" ; then echo "report_stats: false" >> "$port.config" fi # Run the homeserver in the background. python3 -m synapse.app.homeserver \ --config-path "$port.config" \ -D \ popd || exit done cd "$CWD" || exit synapse-1.100.0/demo/stop.sh000077500000000000000000000004061455622526000156120ustar00rootroot00000000000000#!/usr/bin/env bash DIR="$( cd "$( dirname "$0" )" && pwd )" FILES=$(find "$DIR" -name "*.pid" -type f); for pid_file in $FILES; do pid=$(cat "$pid_file") if [[ $pid ]]; then echo "Killing $pid_file with $pid" kill "$pid" fi done synapse-1.100.0/dev-docs/000077500000000000000000000000001455622526000150465ustar00rootroot00000000000000synapse-1.100.0/dev-docs/Makefile000066400000000000000000000011721455622526000165070ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) synapse-1.100.0/dev-docs/conf.py000066400000000000000000000027451455622526000163550ustar00rootroot00000000000000# Configuration file for the Sphinx documentation builder. # # For the full list of built-in configuration values, see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = "Synapse development" copyright = "2023, The Matrix.org Foundation C.I.C." author = "The Synapse Maintainers and Community" # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration extensions = [ "autodoc2", "myst_parser", ] templates_path = ["_templates"] exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # -- Options for Autodoc2 ---------------------------------------------------- autodoc2_docstring_parser_regexes = [ # this will render all docstrings as 'MyST' Markdown (r".*", "myst"), ] autodoc2_packages = [ { "path": "../synapse", # Don't render documentation for everything as a matter of course "auto_mode": False, }, ] # -- Options for MyST (Markdown) --------------------------------------------- # myst_heading_anchors = 2 # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = "furo" html_static_path = ["_static"] synapse-1.100.0/dev-docs/index.rst000066400000000000000000000010171455622526000167060ustar00rootroot00000000000000.. Synapse Developer Documentation documentation master file, created by sphinx-quickstart on Mon Mar 13 08:59:51 2023. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to the Synapse Developer Documentation! =========================================================== .. toctree:: :maxdepth: 2 :caption: Contents: modules/federation_sender Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` synapse-1.100.0/dev-docs/modules/000077500000000000000000000000001455622526000165165ustar00rootroot00000000000000synapse-1.100.0/dev-docs/modules/federation_sender.md000066400000000000000000000001331455622526000225150ustar00rootroot00000000000000Federation Sender ================= ```{autodoc2-docstring} synapse.federation.sender ``` synapse-1.100.0/docker/000077500000000000000000000000001455622526000146115ustar00rootroot00000000000000synapse-1.100.0/docker/Dockerfile000066400000000000000000000154551455622526000166150ustar00rootroot00000000000000# syntax=docker/dockerfile:1 # Dockerfile to build the matrixdotorg/synapse docker images. # # Note that it uses features which are only available in BuildKit - see # https://docs.docker.com/go/buildkit/ for more information. # # To build the image, run `docker build` command from the root of the # synapse repository: # # DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile . # # There is an optional PYTHON_VERSION build argument which sets the # version of python to build against: for example: # # DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile --build-arg PYTHON_VERSION=3.10 . # # Irritatingly, there is no blessed guide on how to distribute an application with its # poetry-managed environment in a docker image. We have opted for # `poetry export | pip install -r /dev/stdin`, but beware: we have experienced bugs in # in `poetry export` in the past. ARG PYTHON_VERSION=3.11 ### ### Stage 0: generate requirements.txt ### # We hardcode the use of Debian bookworm here because this could change upstream # and other Dockerfiles used for testing are expecting bookworm. FROM docker.io/library/python:${PYTHON_VERSION}-slim-bookworm as requirements # RUN --mount is specific to buildkit and is documented at # https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md#build-mounts-run---mount. # Here we use it to set up a cache for apt (and below for pip), to improve # rebuild speeds on slow connections. RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update -qq && apt-get install -yqq \ build-essential curl git libffi-dev libssl-dev pkg-config \ && rm -rf /var/lib/apt/lists/* # Install rust and ensure its in the PATH. # (Rust may be needed to compile `cryptography`---which is one of poetry's # dependencies---on platforms that don't have a `cryptography` wheel. ENV RUSTUP_HOME=/rust ENV CARGO_HOME=/cargo ENV PATH=/cargo/bin:/rust/bin:$PATH RUN mkdir /rust /cargo RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable --profile minimal # arm64 builds consume a lot of memory if `CARGO_NET_GIT_FETCH_WITH_CLI` is not # set to true, so we expose it as a build-arg. ARG CARGO_NET_GIT_FETCH_WITH_CLI=false ENV CARGO_NET_GIT_FETCH_WITH_CLI=$CARGO_NET_GIT_FETCH_WITH_CLI # We install poetry in its own build stage to avoid its dependencies conflicting with # synapse's dependencies. RUN --mount=type=cache,target=/root/.cache/pip \ pip install --user "poetry==1.3.2" WORKDIR /synapse # Copy just what we need to run `poetry export`... COPY pyproject.toml poetry.lock /synapse/ # If specified, we won't verify the hashes of dependencies. # This is only needed if the hashes of dependencies cannot be checked for some # reason, such as when a git repository is used directly as a dependency. ARG TEST_ONLY_SKIP_DEP_HASH_VERIFICATION # If specified, we won't use the Poetry lockfile. # Instead, we'll just install what a regular `pip install` would from PyPI. ARG TEST_ONLY_IGNORE_POETRY_LOCKFILE # Export the dependencies, but only if we're actually going to use the Poetry lockfile. # Otherwise, just create an empty requirements file so that the Dockerfile can # proceed. RUN if [ -z "$TEST_ONLY_IGNORE_POETRY_LOCKFILE" ]; then \ /root/.local/bin/poetry export --extras all -o /synapse/requirements.txt ${TEST_ONLY_SKIP_DEP_HASH_VERIFICATION:+--without-hashes}; \ else \ touch /synapse/requirements.txt; \ fi ### ### Stage 1: builder ### FROM docker.io/library/python:${PYTHON_VERSION}-slim-bookworm as builder # install the OS build deps RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update -qq && apt-get install -yqq \ build-essential \ libffi-dev \ libjpeg-dev \ libpq-dev \ libssl-dev \ libwebp-dev \ libxml++2.6-dev \ libxslt1-dev \ openssl \ zlib1g-dev \ git \ curl \ libicu-dev \ pkg-config \ && rm -rf /var/lib/apt/lists/* # Install rust and ensure its in the PATH ENV RUSTUP_HOME=/rust ENV CARGO_HOME=/cargo ENV PATH=/cargo/bin:/rust/bin:$PATH RUN mkdir /rust /cargo RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable --profile minimal # arm64 builds consume a lot of memory if `CARGO_NET_GIT_FETCH_WITH_CLI` is not # set to true, so we expose it as a build-arg. ARG CARGO_NET_GIT_FETCH_WITH_CLI=false ENV CARGO_NET_GIT_FETCH_WITH_CLI=$CARGO_NET_GIT_FETCH_WITH_CLI # To speed up rebuilds, install all of the dependencies before we copy over # the whole synapse project, so that this layer in the Docker cache can be # used while you develop on the source # # This is aiming at installing the `[tool.poetry.depdendencies]` from pyproject.toml. COPY --from=requirements /synapse/requirements.txt /synapse/ RUN --mount=type=cache,target=/root/.cache/pip \ pip install --prefix="/install" --no-deps --no-warn-script-location -r /synapse/requirements.txt # Copy over the rest of the synapse source code. COPY synapse /synapse/synapse/ COPY rust /synapse/rust/ # ... and what we need to `pip install`. COPY pyproject.toml README.rst build_rust.py Cargo.toml Cargo.lock /synapse/ # Repeat of earlier build argument declaration, as this is a new build stage. ARG TEST_ONLY_IGNORE_POETRY_LOCKFILE # Install the synapse package itself. # If we have populated requirements.txt, we don't install any dependencies # as we should already have those from the previous `pip install` step. RUN --mount=type=cache,target=/synapse/target,sharing=locked \ --mount=type=cache,target=${CARGO_HOME}/registry,sharing=locked \ if [ -z "$TEST_ONLY_IGNORE_POETRY_LOCKFILE" ]; then \ pip install --prefix="/install" --no-deps --no-warn-script-location /synapse[all]; \ else \ pip install --prefix="/install" --no-warn-script-location /synapse[all]; \ fi ### ### Stage 2: runtime ### FROM docker.io/library/python:${PYTHON_VERSION}-slim-bookworm LABEL org.opencontainers.image.url='https://matrix.org/docs/projects/server/synapse' LABEL org.opencontainers.image.documentation='https://github.com/element-hq/synapse/blob/master/docker/README.md' LABEL org.opencontainers.image.source='https://github.com/element-hq/synapse.git' LABEL org.opencontainers.image.licenses='Apache-2.0' RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update -qq && apt-get install -yqq \ curl \ gosu \ libjpeg62-turbo \ libpq5 \ libwebp7 \ xmlsec1 \ libjemalloc2 \ libicu72 \ libssl-dev \ openssl \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /install /usr/local COPY ./docker/start.py /start.py COPY ./docker/conf /conf EXPOSE 8008/tcp 8009/tcp 8448/tcp ENTRYPOINT ["/start.py"] HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \ CMD curl -fSs http://localhost:8008/health || exit 1 synapse-1.100.0/docker/Dockerfile-dhvirtualenv000066400000000000000000000073371455622526000213260ustar00rootroot00000000000000# A dockerfile which builds a docker image for building a debian package for # synapse. The distro to build for is passed as a docker build var. # # The default entrypoint expects the synapse source to be mounted as a # (read-only) volume at /synapse/source, and an output directory at /debs. # # A pair of environment variables (TARGET_USERID and TARGET_GROUPID) can be # passed to the docker container; if these are set, the build script will chown # the build products accordingly, to avoid ending up with things owned by root # in the host filesystem. # Get the distro we want to pull from as a dynamic build variable ARG distro="" ### ### Stage 0: build a dh-virtualenv ### # This is only really needed on focal, since other distributions we # care about have a recent version of dh-virtualenv by default. Unfortunately, # it looks like focal is going to be with us for a while. # # (focal doesn't have a dh-virtualenv package at all. There is a PPA at # https://launchpad.net/~jyrki-pulliainen/+archive/ubuntu/dh-virtualenv, but # it's not obviously easier to use that than to build our own.) FROM docker.io/library/${distro} as builder RUN apt-get update -qq -o Acquire::Languages=none RUN env DEBIAN_FRONTEND=noninteractive apt-get install \ -yqq --no-install-recommends \ build-essential \ ca-certificates \ devscripts \ equivs \ wget # fetch and unpack the package # We are temporarily using a fork of dh-virtualenv due to an incompatibility with Python 3.11, which ships with # Debian sid. TODO: Switch back to upstream once https://github.com/spotify/dh-virtualenv/pull/354 has merged. RUN mkdir /dh-virtualenv RUN wget -q -O /dh-virtualenv.tar.gz https://github.com/matrix-org/dh-virtualenv/archive/refs/tags/matrixorg-2023010302.tar.gz RUN tar -xv --strip-components=1 -C /dh-virtualenv -f /dh-virtualenv.tar.gz # install its build deps. We do another apt-cache-update here, because we might # be using a stale cache from docker build. RUN apt-get update -qq -o Acquire::Languages=none \ && cd /dh-virtualenv \ && env DEBIAN_FRONTEND=noninteractive mk-build-deps -ri -t "apt-get -y --no-install-recommends" # Build it. Note that building the docs doesn't work due to differences in # Sphinx APIs across versions/distros. RUN cd /dh-virtualenv && DEB_BUILD_OPTIONS=nodoc dpkg-buildpackage -us -uc -b ### ### Stage 1 ### FROM docker.io/library/${distro} # Get the distro we want to pull from as a dynamic build variable # (We need to define it in each build stage) ARG distro="" ENV distro ${distro} # Install the build dependencies # # NB: keep this list in sync with the list of build-deps in debian/control # TODO: it would be nice to do that automatically. RUN apt-get update -qq -o Acquire::Languages=none \ && env DEBIAN_FRONTEND=noninteractive apt-get install \ -yqq --no-install-recommends -o Dpkg::Options::=--force-unsafe-io \ build-essential \ curl \ debhelper \ devscripts \ libsystemd-dev \ lsb-release \ pkg-config \ python3-dev \ python3-pip \ python3-setuptools \ python3-venv \ sqlite3 \ libpq-dev \ libicu-dev \ pkg-config \ xmlsec1 # Install rust and ensure it's in the PATH ENV RUSTUP_HOME=/rust ENV CARGO_HOME=/cargo ENV PATH=/cargo/bin:/rust/bin:$PATH RUN mkdir /rust /cargo RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable --profile minimal COPY --from=builder /dh-virtualenv_1.2.2-1_all.deb / # install dhvirtualenv. Update the apt cache again first, in case we got a # cached cache from docker the first time. RUN apt-get update -qq -o Acquire::Languages=none \ && apt-get install -yq /dh-virtualenv_1.2.2-1_all.deb WORKDIR /synapse/source ENTRYPOINT ["bash","/synapse/source/docker/build_debian.sh"] synapse-1.100.0/docker/Dockerfile-workers000066400000000000000000000052271455622526000203030ustar00rootroot00000000000000# syntax=docker/dockerfile:1 ARG SYNAPSE_VERSION=latest ARG FROM=matrixdotorg/synapse:$SYNAPSE_VERSION # first of all, we create a base image with an nginx which we can copy into the # target image. For repeated rebuilds, this is much faster than apt installing # each time. FROM docker.io/library/debian:bookworm-slim AS deps_base RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update -qq && \ DEBIAN_FRONTEND=noninteractive apt-get install -yqq --no-install-recommends \ redis-server nginx-light # Similarly, a base to copy the redis server from. # # The redis docker image has fewer dynamic libraries than the debian package, # which makes it much easier to copy (but we need to make sure we use an image # based on the same debian version as the synapse image, to make sure we get # the expected version of libc. FROM docker.io/library/redis:7-bookworm AS redis_base # now build the final image, based on the the regular Synapse docker image FROM $FROM # Install supervisord with pip instead of apt, to avoid installing a second # copy of python. RUN --mount=type=cache,target=/root/.cache/pip \ pip install supervisor~=4.2 RUN mkdir -p /etc/supervisor/conf.d # Copy over redis and nginx COPY --from=redis_base /usr/local/bin/redis-server /usr/local/bin COPY --from=deps_base /usr/sbin/nginx /usr/sbin COPY --from=deps_base /usr/share/nginx /usr/share/nginx COPY --from=deps_base /usr/lib/nginx /usr/lib/nginx COPY --from=deps_base /etc/nginx /etc/nginx RUN rm /etc/nginx/sites-enabled/default RUN mkdir /var/log/nginx /var/lib/nginx RUN chown www-data /var/lib/nginx # have nginx log to stderr/out RUN ln -sf /dev/stdout /var/log/nginx/access.log RUN ln -sf /dev/stderr /var/log/nginx/error.log # Copy Synapse worker, nginx and supervisord configuration template files COPY ./docker/conf-workers/* /conf/ # Copy a script to prefix log lines with the supervisor program name COPY ./docker/prefix-log /usr/local/bin/ # Expose nginx listener port EXPOSE 8080/tcp # A script to read environment variables and create the necessary # files to run the desired worker configuration. Will start supervisord. COPY ./docker/configure_workers_and_start.py /configure_workers_and_start.py ENTRYPOINT ["/configure_workers_and_start.py"] # Replace the healthcheck with one which checks *all* the workers. The script # is generated by configure_workers_and_start.py. HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \ CMD /bin/sh /healthcheck.sh synapse-1.100.0/docker/README-testing.md000066400000000000000000000133301455622526000175430ustar00rootroot00000000000000# Running tests against a dockerised Synapse It's possible to run integration tests against Synapse using [Complement](https://github.com/matrix-org/complement). Complement is a Matrix Spec compliance test suite for homeservers, and supports any homeserver docker image configured to listen on ports 8008/8448. This document contains instructions for building Synapse docker images that can be run inside Complement for testing purposes. Note that running Synapse's unit tests from within the docker image is not supported. ## Using the Complement launch script `scripts-dev/complement.sh` is a script that will automatically build and run Synapse against Complement. Consult the [contributing guide][guideComplementSh] for instructions on how to use it. [guideComplementSh]: https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-integration-tests-complement ## Building and running the images manually Under some circumstances, you may wish to build the images manually. The instructions below will lead you to doing that. Note that these images can only be built using [BuildKit](https://docs.docker.com/develop/develop-images/build_enhancements/), therefore BuildKit needs to be enabled when calling `docker build`. This can be done by setting `DOCKER_BUILDKIT=1` in your environment. Start by building the base Synapse docker image. If you wish to run tests with the latest release of Synapse, instead of your current checkout, you can skip this step. From the root of the repository: ```sh docker build -t matrixdotorg/synapse -f docker/Dockerfile . ``` Next, build the workerised Synapse docker image, which is a layer over the base image. ```sh docker build -t matrixdotorg/synapse-workers -f docker/Dockerfile-workers . ``` Finally, build the multi-purpose image for Complement, which is a layer over the workers image. ```sh docker build -t complement-synapse -f docker/complement/Dockerfile docker/complement ``` This will build an image with the tag `complement-synapse`, which can be handed to Complement for testing via the `COMPLEMENT_BASE_IMAGE` environment variable. Refer to [Complement's documentation](https://github.com/matrix-org/complement/#running) for how to run the tests, as well as the various available command line flags. See [the Complement image README](./complement/README.md) for information about the expected environment variables. ## Running the Dockerfile-worker image standalone For manual testing of a multi-process Synapse instance in Docker, [Dockerfile-workers](Dockerfile-workers) is a Dockerfile that will produce an image bundling all necessary components together for a workerised homeserver instance. This includes any desired Synapse worker processes, a nginx to route traffic accordingly, a redis for worker communication and a supervisord instance to start up and monitor all processes. You will need to provide your own postgres container to connect to, and TLS is not handled by the container. Once you've built the image using the above instructions, you can run it. Be sure you've set up a volume according to the [usual Synapse docker instructions](README.md). Then run something along the lines of: ``` docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=no \ -e POSTGRES_HOST=postgres \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=somesecret \ -e SYNAPSE_WORKER_TYPES=synchrotron,media_repository,user_dir \ -e SYNAPSE_WORKERS_WRITE_LOGS_TO_DISK=1 \ matrixdotorg/synapse-workers ``` ...substituting `POSTGRES*` variables for those that match a postgres host you have available (usually a running postgres docker container). ### Workers The `SYNAPSE_WORKER_TYPES` environment variable is a comma-separated list of workers to use when running the container. All possible worker names are defined by the keys of the `WORKERS_CONFIG` variable in [this script](configure_workers_and_start.py), which the Dockerfile makes use of to generate appropriate worker, nginx and supervisord config files. Sharding is supported for a subset of workers, in line with the [worker documentation](../docs/workers.md). To run multiple instances of a given worker type, simply specify the type multiple times in `SYNAPSE_WORKER_TYPES` (e.g `SYNAPSE_WORKER_TYPES=event_creator,event_creator...`). Otherwise, `SYNAPSE_WORKER_TYPES` can either be left empty or unset to spawn no workers (leaving only the main process). The container will only be configured to use Redis-based worker mode if there are workers enabled. ### Logging Logs for workers and the main process are logged to stdout and can be viewed with standard `docker logs` tooling. Worker logs contain their worker name after the timestamp. Setting `SYNAPSE_WORKERS_WRITE_LOGS_TO_DISK=1` will cause worker logs to be written to `/logs/.log`. Logs are kept for 1 week and rotate every day at 00: 00, according to the container's clock. Logging for the main process must still be configured by modifying the homeserver's log config in your Synapse data volume. ### Application Services Setting the `SYNAPSE_AS_REGISTRATION_DIR` environment variable to the path of a directory (within the container) will cause the configuration script to scan that directory for `.yaml`/`.yml` registration files. Synapse will be configured to load these configuration files. ### TLS Termination Nginx is present in the image to route requests to the appropriate workers, but it does not serve TLS by default. You can configure `SYNAPSE_TLS_CERT` and `SYNAPSE_TLS_KEY` to point to a TLS certificate and key (respectively), both in PEM (textual) format. In this case, Nginx will additionally serve using HTTPS on port 8448. synapse-1.100.0/docker/README.md000066400000000000000000000225301455622526000160720ustar00rootroot00000000000000# Synapse Docker This Docker image will run Synapse as a single process. By default it uses a sqlite database; for production use you should connect it to a separate postgres database. The image also does *not* provide a TURN server. This image should work on all platforms that are supported by Docker upstream. Note that Docker's WS1-backend Linux Containers on Windows platform is [experimental](https://github.com/docker/for-win/issues/6470) and is not supported by this image. ## Volumes By default, the image expects a single volume, located at `/data`, that will hold: * configuration files; * uploaded media and thumbnails; * the SQLite database if you do not configure postgres; * the appservices configuration. You are free to use separate volumes depending on storage endpoints at your disposal. For instance, `/data/media` could be stored on a large but low performance hdd storage while other files could be stored on high performance endpoints. In order to setup an application service, simply create an `appservices` directory in the data volume and write the application service Yaml configuration file there. Multiple application services are supported. ## Generating a configuration file The first step is to generate a valid config file. To do this, you can run the image with the `generate` command line option. You will need to specify values for the `SYNAPSE_SERVER_NAME` and `SYNAPSE_REPORT_STATS` environment variable, and mount a docker volume to store the configuration on. For example: ``` docker run -it --rm \ --mount type=volume,src=synapse-data,dst=/data \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest generate ``` For information on picking a suitable server name, see https://element-hq.github.io/synapse/latest/setup/installation.html. The above command will generate a `homeserver.yaml` in (typically) `/var/lib/docker/volumes/synapse-data/_data`. You should check this file, and customise it to your needs. The following environment variables are supported in `generate` mode: * `SYNAPSE_SERVER_NAME` (mandatory): the server public hostname. * `SYNAPSE_REPORT_STATS` (mandatory, `yes` or `no`): whether to enable anonymous statistics reporting. * `SYNAPSE_HTTP_PORT`: the port Synapse should listen on for http traffic. Defaults to `8008`. * `SYNAPSE_CONFIG_DIR`: where additional config files (such as the log config and event signing key) will be stored. Defaults to `/data`. * `SYNAPSE_CONFIG_PATH`: path to the file to be generated. Defaults to `/homeserver.yaml`. * `SYNAPSE_DATA_DIR`: where the generated config will put persistent data such as the database and media store. Defaults to `/data`. * `UID`, `GID`: the user id and group id to use for creating the data directories. If unset, and no user is set via `docker run --user`, defaults to `991`, `991`. * `SYNAPSE_LOG_LEVEL`: the log level to use (one of `DEBUG`, `INFO`, `WARNING` or `ERROR`). Defaults to `INFO`. * `SYNAPSE_LOG_SENSITIVE`: if set and the log level is set to `DEBUG`, Synapse will log sensitive information such as access tokens. This should not be needed unless you are a developer attempting to debug something particularly tricky. * `SYNAPSE_LOG_TESTING`: if set, Synapse will log additional information useful for testing. ## Postgres By default the config will use SQLite. See the [docs on using Postgres](https://github.com/element-hq/synapse/blob/develop/docs/postgres.md) for more info on how to use Postgres. Until this section is improved [this issue](https://github.com/element-hq/synapse/issues/8304) may provide useful information. ## Running synapse Once you have a valid configuration file, you can start synapse as follows: ``` docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ matrixdotorg/synapse:latest ``` (assuming 8008 is the port Synapse is configured to listen on for http traffic.) You can then check that it has started correctly with: ``` docker logs synapse ``` If all is well, you should now be able to connect to http://localhost:8008 and see a confirmation message. The following environment variables are supported in `run` mode: * `SYNAPSE_CONFIG_DIR`: where additional config files are stored. Defaults to `/data`. * `SYNAPSE_CONFIG_PATH`: path to the config file. Defaults to `/homeserver.yaml`. * `SYNAPSE_WORKER`: module to execute, used when running synapse with workers. Defaults to `synapse.app.homeserver`, which is suitable for non-worker mode. * `UID`, `GID`: the user and group id to run Synapse as. If unset, and no user is set via `docker run --user`, defaults to `991`, `991`. Note that this user must have permission to read the config files, and write to the data directories. * `TZ`: the [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) the container will run with. Defaults to `UTC`. For more complex setups (e.g. for workers) you can also pass your args directly to synapse using `run` mode. For example like this: ``` docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ matrixdotorg/synapse:latest run \ -m synapse.app.generic_worker \ --config-path=/data/homeserver.yaml \ --config-path=/data/generic_worker.yaml ``` If you do not provide `-m`, the value of the `SYNAPSE_WORKER` environment variable is used. If you do not provide at least one `--config-path` or `-c`, the value of the `SYNAPSE_CONFIG_PATH` environment variable is used instead. ## Generating an (admin) user After synapse is running, you may wish to create a user via `register_new_matrix_user`. This requires a `registration_shared_secret` to be set in your config file. Synapse must be restarted to pick up this change. You can then call the script: ``` docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --help ``` Remember to remove the `registration_shared_secret` and restart if you no-longer need it. ## TLS support The default configuration exposes a single HTTP port: http://localhost:8008. It is suitable for local testing, but for any practical use, you will either need to use a reverse proxy, or configure Synapse to expose an HTTPS port. For documentation on using a reverse proxy, see https://github.com/element-hq/synapse/blob/master/docs/reverse_proxy.md. For more information on enabling TLS support in synapse itself, see https://element-hq.github.io/synapse/latest/setup/installation.html#tls-certificates. Of course, you will need to expose the TLS port from the container with a `-p` argument to `docker run`. ## Legacy dynamic configuration file support The docker image used to support creating a dynamic configuration file based on environment variables. This is no longer supported, and an error will be raised if you try to run synapse without a config file. It is, however, possible to generate a static configuration file based on the environment variables that were previously used. To do this, run the docker container once with the environment variables set, and `migrate_config` command line option. For example: ``` docker run -it --rm \ --mount type=volume,src=synapse-data,dst=/data \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest migrate_config ``` This will generate the same configuration file as the legacy mode used, and will store it in `/data/homeserver.yaml`. You can then use it as shown above at [Running synapse](#running-synapse). Note that the defaults used in this configuration file may be different to those when generating a new config file with `generate`: for example, TLS is enabled by default in this mode. You are encouraged to inspect the generated configuration file and edit it to ensure it meets your needs. ## Building the image If you need to build the image from a Synapse checkout, use the following `docker build` command from the repo's root: ``` DOCKER_BUILDKIT=1 docker build -t matrixdotorg/synapse -f docker/Dockerfile . ``` You can choose to build a different docker image by changing the value of the `-f` flag to point to another Dockerfile. ## Disabling the healthcheck If you are using a non-standard port or tls inside docker you can disable the healthcheck whilst running the above `docker run` commands. ``` --no-healthcheck ``` ## Disabling the healthcheck in docker-compose file If you wish to disable the healthcheck via docker-compose, append the following to your service configuration. ``` healthcheck: disable: true ``` ## Setting custom healthcheck on docker run If you wish to point the healthcheck at a different port with docker command, add the following ``` --health-cmd 'curl -fSs http://localhost:1234/health' ``` ## Setting the healthcheck in docker-compose file You can add the following to set a custom healthcheck in a docker compose file. You will need docker-compose version >2.1 for this to work. ``` healthcheck: test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"] interval: 15s timeout: 5s retries: 3 start_period: 5s ``` ## Using jemalloc Jemalloc is embedded in the image and will be used instead of the default allocator. You can read about jemalloc by reading the Synapse [Admin FAQ](https://element-hq.github.io/synapse/latest/usage/administration/admin_faq.html#help-synapse-is-slow-and-eats-all-my-ramcpu). synapse-1.100.0/docker/build_debian.sh000066400000000000000000000023141455622526000175460ustar00rootroot00000000000000#!/usr/bin/env bash # The script to build the Debian package, as ran inside the Docker image. set -ex # Get the codename from distro env DIST=$(cut -d ':' -f2 <<< "${distro:?}") # we get a read-only copy of the source: make a writeable copy cp -aT /synapse/source /synapse/build cd /synapse/build # if this is a prerelease, set the Section accordingly. # # When the package is later added to the package repo, reprepro will use the # Section to determine which "component" it should go into (see # https://manpages.debian.org/stretch/reprepro/reprepro.1.en.html#GUESSING) DEB_VERSION=$(dpkg-parsechangelog -SVersion) case $DEB_VERSION in *~rc*|*~a*|*~b*|*~c*) sed -ie '/^Section:/c\Section: prerelease' debian/control ;; esac # add an entry to the changelog for this distribution dch -M -l "+$DIST" "build for $DIST" dch -M -r "" --force-distribution --distribution "$DIST" dpkg-buildpackage -us -uc ls -l .. # copy the build results out, setting perms if necessary shopt -s nullglob for i in ../*.deb ../*.dsc ../*.tar.xz ../*.changes ../*.buildinfo; do [ -z "$TARGET_USERID" ] || chown "$TARGET_USERID" "$i" [ -z "$TARGET_GROUPID" ] || chgrp "$TARGET_GROUPID" "$i" mv "$i" /debs done synapse-1.100.0/docker/complement/000077500000000000000000000000001455622526000167545ustar00rootroot00000000000000synapse-1.100.0/docker/complement/Dockerfile000066400000000000000000000051451455622526000207530ustar00rootroot00000000000000# syntax=docker/dockerfile:1 # This dockerfile builds on top of 'docker/Dockerfile-workers' in element-hq/synapse # by including a built-in postgres instance, as well as setting up the homeserver so # that it is ready for testing via Complement. # # Instructions for building this image from those it depends on is detailed in this guide: # https://github.com/element-hq/synapse/blob/develop/docker/README-testing.md#testing-with-postgresql-and-single-or-multi-process-synapse ARG SYNAPSE_VERSION=latest # This is an intermediate image, to be built locally (not pulled from a registry). ARG FROM=matrixdotorg/synapse-workers:$SYNAPSE_VERSION FROM $FROM # First of all, we copy postgres server from the official postgres image, # since for repeated rebuilds, this is much faster than apt installing # postgres each time. # This trick only works because (a) the Synapse image happens to have all the # shared libraries that postgres wants, (b) we use a postgres image based on # the same debian version as Synapse's docker image (so the versions of the # shared libraries match). RUN adduser --system --uid 999 postgres --home /var/lib/postgresql COPY --from=docker.io/library/postgres:13-bookworm /usr/lib/postgresql /usr/lib/postgresql COPY --from=docker.io/library/postgres:13-bookworm /usr/share/postgresql /usr/share/postgresql RUN mkdir /var/run/postgresql && chown postgres /var/run/postgresql ENV PATH="${PATH}:/usr/lib/postgresql/13/bin" ENV PGDATA=/var/lib/postgresql/data # We also initialize the database at build time, rather than runtime, so that it's faster to spin up the image. RUN gosu postgres initdb --locale=C --encoding=UTF-8 --auth-host password # Configure a password and create a database for Synapse RUN echo "ALTER USER postgres PASSWORD 'somesecret'" | gosu postgres postgres --single RUN echo "CREATE DATABASE synapse" | gosu postgres postgres --single # Extend the shared homeserver config to disable rate-limiting, # set Complement's static shared secret, enable registration, amongst other # tweaks to get Synapse ready for testing. # To do this, we copy the old template out of the way and then include it # with Jinja2. RUN mv /conf/shared.yaml.j2 /conf/shared-orig.yaml.j2 COPY conf/workers-shared-extra.yaml.j2 /conf/shared.yaml.j2 WORKDIR /data COPY conf/postgres.supervisord.conf /etc/supervisor/conf.d/postgres.conf # Copy the entrypoint COPY conf/start_for_complement.sh / # Expose nginx's listener ports EXPOSE 8008 8448 ENTRYPOINT ["/start_for_complement.sh"] # Update the healthcheck to have a shorter check interval HEALTHCHECK --start-period=5s --interval=1s --timeout=1s \ CMD /bin/sh /healthcheck.sh synapse-1.100.0/docker/complement/README.md000066400000000000000000000025611455622526000202370ustar00rootroot00000000000000# Unified Complement image for Synapse This is an image for testing Synapse with [the *Complement* integration test suite][complement]. It contains some insecure defaults that are only suitable for testing purposes, so **please don't use this image for a production server**. This multi-purpose image is built on top of `Dockerfile-workers` in the parent directory and can be switched using environment variables between the following configurations: - Monolithic Synapse with SQLite (default, or `SYNAPSE_COMPLEMENT_DATABASE=sqlite`) - Monolithic Synapse with Postgres (`SYNAPSE_COMPLEMENT_DATABASE=postgres`) - Workerised Synapse with Postgres (`SYNAPSE_COMPLEMENT_DATABASE=postgres` and `SYNAPSE_COMPLEMENT_USE_WORKERS=true`) The image is self-contained; it contains an integrated Postgres, Redis and Nginx. ## How to get Complement to pass the environment variables through To pass these environment variables, use [Complement's `COMPLEMENT_SHARE_ENV_PREFIX`][complementEnv] variable to configure an environment prefix to pass through, then prefix the above options with that prefix. Example: ``` COMPLEMENT_SHARE_ENV_PREFIX=PASS_ PASS_SYNAPSE_COMPLEMENT_DATABASE=postgres ``` Consult `scripts-dev/complement.sh` in the repository root for a real example. [complement]: https://github.com/matrix-org/complement [complementEnv]: https://github.com/matrix-org/complement/pull/382 synapse-1.100.0/docker/complement/conf/000077500000000000000000000000001455622526000177015ustar00rootroot00000000000000synapse-1.100.0/docker/complement/conf/postgres.supervisord.conf000066400000000000000000000010611455622526000250000ustar00rootroot00000000000000[program:postgres] command=/usr/local/bin/prefix-log gosu postgres postgres # Only start if START_POSTGRES=1 autostart=%(ENV_START_POSTGRES)s # Lower priority number = starts first priority=1 autorestart=unexpected stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 # Use 'Fast Shutdown' mode which aborts current transactions and closes connections quickly. # (Default (TERM) is 'Smart Shutdown' which stops accepting new connections but # lets existing connections close gracefully.) stopsignal=INT synapse-1.100.0/docker/complement/conf/start_for_complement.sh000077500000000000000000000103671455622526000244750ustar00rootroot00000000000000#!/bin/bash # # Default ENTRYPOINT for the docker image used for testing synapse with workers under complement set -e echo "Complement Synapse launcher" echo " Args: $@" echo " Env: SYNAPSE_COMPLEMENT_DATABASE=$SYNAPSE_COMPLEMENT_DATABASE SYNAPSE_COMPLEMENT_USE_WORKERS=$SYNAPSE_COMPLEMENT_USE_WORKERS SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR=$SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR" function log { d=$(date +"%Y-%m-%d %H:%M:%S,%3N") echo "$d $@" } # Set the server name of the homeserver export SYNAPSE_SERVER_NAME=${SERVER_NAME} # No need to report stats here export SYNAPSE_REPORT_STATS=no case "$SYNAPSE_COMPLEMENT_DATABASE" in postgres) # Set postgres authentication details which will be placed in the homeserver config file export POSTGRES_PASSWORD=somesecret export POSTGRES_USER=postgres export POSTGRES_HOST=localhost # configure supervisord to start postgres export START_POSTGRES=true ;; sqlite|"") # Configure supervisord not to start Postgres, as we don't need it export START_POSTGRES=false ;; *) echo "Unknown Synapse database: SYNAPSE_COMPLEMENT_DATABASE=$SYNAPSE_COMPLEMENT_DATABASE" >&2 exit 1 ;; esac if [[ -n "$SYNAPSE_COMPLEMENT_USE_WORKERS" ]]; then # Specify the workers to test with # Allow overriding by explicitly setting SYNAPSE_WORKER_TYPES outside, while still # utilizing WORKERS=1 for backwards compatibility. # -n True if the length of string is non-zero. # -z True if the length of string is zero. if [[ -z "$SYNAPSE_WORKER_TYPES" ]]; then export SYNAPSE_WORKER_TYPES="\ event_persister:2, \ background_worker, \ frontend_proxy, \ event_creator, \ user_dir, \ media_repository, \ federation_inbound, \ federation_reader, \ federation_sender, \ synchrotron, \ client_reader, \ appservice, \ pusher, \ stream_writers=account_data+presence+receipts+to_device+typing" fi log "Workers requested: $SYNAPSE_WORKER_TYPES" # adjust connection pool limits on worker mode as otherwise running lots of worker synapses # can make docker unhappy (in GHA) export POSTGRES_CP_MIN=1 export POSTGRES_CP_MAX=3 echo "using reduced connection pool limits for worker mode" # Improve startup times by using a launcher based on fork() export SYNAPSE_USE_EXPERIMENTAL_FORKING_LAUNCHER=1 else # Empty string here means 'main process only' export SYNAPSE_WORKER_TYPES="" fi if [[ -n "$SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR" ]]; then if [[ -n "$SYNAPSE_USE_EXPERIMENTAL_FORKING_LAUNCHER" ]]; then export SYNAPSE_COMPLEMENT_FORKING_LAUNCHER_ASYNC_IO_REACTOR="1" else export SYNAPSE_ASYNC_IO_REACTOR="1" fi else export SYNAPSE_ASYNC_IO_REACTOR="0" fi # Add Complement's appservice registration directory, if there is one # (It can be absent when there are no application services in this test!) if [ -d /complement/appservice ]; then export SYNAPSE_AS_REGISTRATION_DIR=/complement/appservice fi # Generate a TLS key, then generate a certificate by having Complement's CA sign it # Note that both the key and certificate are in PEM format (not DER). # First generate a configuration file to set up a Subject Alternative Name. cat > /conf/server.tls.conf <= 1.1.0 ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 {% endif %} server_name localhost; # Nginx by default only allows file uploads up to 1M in size # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml client_max_body_size 100M; {{ worker_locations }} # Send all other traffic to the main process location ~* ^(\\/_matrix|\\/_synapse) { {% if using_unix_sockets %} proxy_pass http://unix:/run/main_public.sock; {% else %} proxy_pass http://localhost:8080; {% endif %} proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; } } synapse-1.100.0/docker/conf-workers/shared.yaml.j2000066400000000000000000000012051455622526000216720ustar00rootroot00000000000000# This file contains the base for the shared homeserver config file between Synapse workers, # as part of ./Dockerfile-workers. # configure_workers_and_start.py uses and amends to this file depending on the workers # that have been selected. {% if enable_redis %} redis: enabled: true {% if using_unix_sockets %} path: /tmp/redis.sock {% endif %} {% endif %} {% if appservice_registrations is not none %} ## Application Services ## # A list of application service config files to use. app_service_config_files: {%- for path in appservice_registrations %} - "{{ path }}" {%- endfor %} {%- endif %} {{ shared_worker_config }} synapse-1.100.0/docker/conf-workers/supervisord.conf.j2000066400000000000000000000017431455622526000230030ustar00rootroot00000000000000# This file contains the base config for supervisord, as part of ../Dockerfile-workers. # configure_workers_and_start.py uses and amends to this file depending on the workers # that have been selected. [supervisord] nodaemon=true user=root [include] files = /etc/supervisor/conf.d/*.conf [program:nginx] command=/usr/local/bin/prefix-log /usr/sbin/nginx -g "daemon off;" priority=500 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 username=www-data autorestart=true [program:redis] {% if using_unix_sockets %} command=/usr/local/bin/prefix-log /usr/local/bin/redis-server --unixsocket /tmp/redis.sock {% else %} command=/usr/local/bin/prefix-log /usr/local/bin/redis-server {% endif %} priority=1 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 username=redis autorestart=true # Redis can be disabled if the image is being used without workers autostart={{ enable_redis }} synapse-1.100.0/docker/conf-workers/synapse.supervisord.conf.j2000066400000000000000000000030111455622526000244520ustar00rootroot00000000000000{% if use_forking_launcher %} [program:synapse_fork] command=/usr/local/bin/python -m synapse.app.complement_fork_starter {{ main_config_path }} synapse.app.homeserver --config-path="{{ main_config_path }}" --config-path=/conf/workers/shared.yaml {%- for worker in workers %} -- {{ worker.app }} --config-path="{{ main_config_path }}" --config-path=/conf/workers/shared.yaml --config-path=/conf/workers/{{ worker.name }}.yaml {%- endfor %} stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 autorestart=unexpected exitcodes=0 {% else %} [program:synapse_main] command=/usr/local/bin/prefix-log /usr/local/bin/python -m synapse.app.homeserver --config-path="{{ main_config_path }}" --config-path=/conf/workers/shared.yaml priority=10 # Log startup failures to supervisord's stdout/err # Regular synapse logs will still go in the configured data directory stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 autorestart=unexpected exitcodes=0 {% for worker in workers %} [program:synapse_{{ worker.name }}] command=/usr/local/bin/prefix-log /usr/local/bin/python -m {{ worker.app }} --config-path="{{ main_config_path }}" --config-path=/conf/workers/shared.yaml --config-path=/conf/workers/{{ worker.name }}.yaml autorestart=unexpected priority=500 exitcodes=0 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 {% endfor %} {% endif %} synapse-1.100.0/docker/conf-workers/worker.yaml.j2000066400000000000000000000011521455622526000217360ustar00rootroot00000000000000# This is a configuration template for a single worker instance, and is # used by Dockerfile-workers. # Values will be change depending on whichever workers are selected when # running that image. worker_app: "{{ app }}" worker_name: "{{ name }}" worker_listeners: - type: http {% if using_unix_sockets %} path: "/run/worker.{{ port }}" {% else %} port: {{ port }} {% endif %} {% if listener_resources %} resources: - names: {%- for resource in listener_resources %} - {{ resource }} {%- endfor %} {% endif %} worker_log_config: {{ worker_log_config_filepath }} {{ worker_extra_conf }} synapse-1.100.0/docker/conf/000077500000000000000000000000001455622526000155365ustar00rootroot00000000000000synapse-1.100.0/docker/conf/homeserver.yaml000066400000000000000000000106721455622526000206070ustar00rootroot00000000000000# vim:ft=yaml ## TLS ## {% if not SYNAPSE_NO_TLS %} tls_certificate_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.crt" tls_private_key_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.key" {% endif %} ## Server ## server_name: "{{ SYNAPSE_SERVER_NAME }}" pid_file: /homeserver.pid web_client: False soft_file_limit: 0 log_config: "{{ SYNAPSE_LOG_CONFIG }}" ## Ports ## listeners: {% if not SYNAPSE_NO_TLS %} - port: 8448 bind_addresses: ['::'] type: http tls: true x_forwarded: false resources: - names: [client] compress: true - names: [federation] # Federation APIs compress: false {% endif %} # Allow configuring in case we want to reverse proxy 8008 # using another process in the same container {% if SYNAPSE_USE_UNIX_SOCKET %} # Unix sockets don't care about TLS or IP addresses or ports - path: '/run/main_public.sock' type: http {% else %} - port: {{ SYNAPSE_HTTP_PORT or 8008 }} tls: false bind_addresses: ['::'] type: http x_forwarded: false {% endif %} resources: - names: [client] compress: true - names: [federation] compress: false ## Database ## {% if POSTGRES_PASSWORD %} database: name: "psycopg2" args: user: "{{ POSTGRES_USER or "synapse" }}" password: "{{ POSTGRES_PASSWORD }}" database: "{{ POSTGRES_DB or "synapse" }}" {% if not SYNAPSE_USE_UNIX_SOCKET %} {# Synapse will use a default unix socket for Postgres when host/port is not specified (behavior from `psycopg2`). #} host: "{{ POSTGRES_HOST or "db" }}" port: "{{ POSTGRES_PORT or "5432" }}" {% endif %} cp_min: {{ POSTGRES_CP_MIN or 5 }} cp_max: {{ POSTGRES_CP_MAX or 10 }} {% else %} database: name: "sqlite3" args: database: "/data/homeserver.db" {% endif %} ## Performance ## event_cache_size: "{{ SYNAPSE_EVENT_CACHE_SIZE or "10K" }}" ## Ratelimiting ## rc_messages_per_second: 0.2 rc_message_burst_count: 10.0 federation_rc_window_size: 1000 federation_rc_sleep_limit: 10 federation_rc_sleep_delay: 500 federation_rc_reject_limit: 50 federation_rc_concurrent: 3 ## Files ## media_store_path: "/data/media" max_upload_size: "{{ SYNAPSE_MAX_UPLOAD_SIZE or "50M" }}" max_image_pixels: "32M" dynamic_thumbnails: false # List of thumbnail to precalculate when an image is uploaded. thumbnail_sizes: - width: 32 height: 32 method: crop - width: 96 height: 96 method: crop - width: 320 height: 240 method: scale - width: 640 height: 480 method: scale - width: 800 height: 600 method: scale url_preview_enabled: False max_spider_size: "10M" ## Captcha ## {% if SYNAPSE_RECAPTCHA_PUBLIC_KEY %} recaptcha_public_key: "{{ SYNAPSE_RECAPTCHA_PUBLIC_KEY }}" recaptcha_private_key: "{{ SYNAPSE_RECAPTCHA_PRIVATE_KEY }}" enable_registration_captcha: True recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify" {% else %} recaptcha_public_key: "YOUR_PUBLIC_KEY" recaptcha_private_key: "YOUR_PRIVATE_KEY" enable_registration_captcha: False recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify" {% endif %} ## Turn ## {% if SYNAPSE_TURN_URIS %} turn_uris: {% for uri in SYNAPSE_TURN_URIS.split(',') %} - "{{ uri }}" {% endfor %} turn_shared_secret: "{{ SYNAPSE_TURN_SECRET }}" turn_user_lifetime: "1h" turn_allow_guests: True {% else %} turn_uris: [] turn_shared_secret: "YOUR_SHARED_SECRET" turn_user_lifetime: "1h" turn_allow_guests: True {% endif %} ## Registration ## enable_registration: {{ "True" if SYNAPSE_ENABLE_REGISTRATION else "False" }} registration_shared_secret: "{{ SYNAPSE_REGISTRATION_SHARED_SECRET }}" bcrypt_rounds: 12 allow_guest_access: {{ "True" if SYNAPSE_ALLOW_GUEST else "False" }} enable_group_creation: true ## Metrics ### {% if SYNAPSE_REPORT_STATS.lower() == "yes" %} enable_metrics: True report_stats: True {% else %} enable_metrics: False report_stats: False {% endif %} ## API Configuration ## {% if SYNAPSE_APPSERVICES %} app_service_config_files: {% for appservice in SYNAPSE_APPSERVICES %} - "{{ appservice }}" {% endfor %} {% endif %} macaroon_secret_key: "{{ SYNAPSE_MACAROON_SECRET_KEY }}" expire_access_token: False ## Signing Keys ## signing_key_path: "/data/{{ SYNAPSE_SERVER_NAME }}.signing.key" old_signing_keys: {} key_refresh_interval: "1d" # 1 Day. # The trusted servers to download signing keys from. trusted_key_servers: - server_name: matrix.org verify_keys: "ed25519:auto": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw" password_config: enabled: true synapse-1.100.0/docker/conf/log.config000066400000000000000000000057721455622526000175210ustar00rootroot00000000000000version: 1 formatters: precise: {% if include_worker_name_in_log_line %} format: '{{ worker_name }} | %(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' {% else %} format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' {% endif %} handlers: {% if LOG_FILE_PATH %} file: class: logging.handlers.TimedRotatingFileHandler formatter: precise filename: {{ LOG_FILE_PATH }} when: "midnight" backupCount: 6 # Does not include the current log file. encoding: utf8 # Default to buffering writes to log file for efficiency. # WARNING/ERROR logs will still be flushed immediately, but there will be a # delay (of up to `period` seconds, or until the buffer is full with # `capacity` messages) before INFO/DEBUG logs get written. buffer: class: synapse.logging.handlers.PeriodicallyFlushingMemoryHandler target: file # The capacity is the maximum number of log lines that are buffered # before being written to disk. Increasing this will lead to better # performance, at the expensive of it taking longer for log lines to # be written to disk. # This parameter is required. capacity: 10 # Logs with a level at or above the flush level will cause the buffer to # be flushed immediately. # Default value: 40 (ERROR) # Other values: 50 (CRITICAL), 30 (WARNING), 20 (INFO), 10 (DEBUG) flushLevel: 30 # Flush immediately for WARNING logs and higher # The period of time, in seconds, between forced flushes. # Messages will not be delayed for longer than this time. # Default value: 5 seconds period: 5 {% endif %} console: class: logging.StreamHandler formatter: precise loggers: # This is just here so we can leave `loggers` in the config regardless of whether # we configure other loggers below (avoid empty yaml dict error). _placeholder: level: "INFO" {% if not SYNAPSE_LOG_SENSITIVE %} {# If SYNAPSE_LOG_SENSITIVE is unset, then override synapse.storage.SQL to INFO so that DEBUG entries (containing sensitive information) are not emitted. #} synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO {% endif %} {% if SYNAPSE_LOG_TESTING %} {# If Synapse is under test, log a few more useful things for a developer attempting to debug something particularly tricky. With `synapse.visibility.filtered_event_debug`, it logs when events are (maybe unexpectedly) filtered out of responses in tests. It's just nice to be able to look at the CI log and figure out why an event isn't being returned. #} synapse.visibility.filtered_event_debug: level: DEBUG {% endif %} root: level: {{ SYNAPSE_LOG_LEVEL or "INFO" }} {% if LOG_FILE_PATH %} handlers: [console, buffer] {% else %} handlers: [console] {% endif %} disable_existing_loggers: false synapse-1.100.0/docker/configure_workers_and_start.py000077500000000000000000001275511455622526000227750ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # # This script reads environment variables and generates a shared Synapse worker, # nginx and supervisord configs depending on the workers requested. # # The environment variables it reads are: # * SYNAPSE_SERVER_NAME: The desired server_name of the homeserver. # * SYNAPSE_REPORT_STATS: Whether to report stats. # * SYNAPSE_WORKER_TYPES: A comma separated list of worker names as specified in WORKERS_CONFIG # below. Leave empty for no workers. Add a ':' and a number at the end to # multiply that worker. Append multiple worker types with '+' to merge the # worker types into a single worker. Add a name and a '=' to the front of a # worker type to give this instance a name in logs and nginx. # Examples: # SYNAPSE_WORKER_TYPES='event_persister, federation_sender, client_reader' # SYNAPSE_WORKER_TYPES='event_persister:2, federation_sender:2, client_reader' # SYNAPSE_WORKER_TYPES='stream_writers=account_data+presence+typing' # * SYNAPSE_AS_REGISTRATION_DIR: If specified, a directory in which .yaml and .yml files # will be treated as Application Service registration files. # * SYNAPSE_TLS_CERT: Path to a TLS certificate in PEM format. # * SYNAPSE_TLS_KEY: Path to a TLS key. If this and SYNAPSE_TLS_CERT are specified, # Nginx will be configured to serve TLS on port 8448. # * SYNAPSE_USE_EXPERIMENTAL_FORKING_LAUNCHER: Whether to use the forking launcher, # only intended for usage in Complement at the moment. # No stability guarantees are provided. # * SYNAPSE_LOG_LEVEL: Set this to DEBUG, INFO, WARNING or ERROR to change the # log level. INFO is the default. # * SYNAPSE_LOG_SENSITIVE: If unset, SQL and SQL values won't be logged, # regardless of the SYNAPSE_LOG_LEVEL setting. # * SYNAPSE_LOG_TESTING: if set, Synapse will log additional information useful # for testing. # # NOTE: According to Complement's ENTRYPOINT expectations for a homeserver image (as defined # in the project's README), this script may be run multiple times, and functionality should # continue to work if so. import os import platform import re import subprocess import sys from argparse import ArgumentParser from collections import defaultdict from itertools import chain from pathlib import Path from typing import ( Any, Dict, List, Mapping, MutableMapping, NoReturn, Optional, Set, SupportsIndex, ) import yaml from jinja2 import Environment, FileSystemLoader MAIN_PROCESS_HTTP_LISTENER_PORT = 8080 MAIN_PROCESS_INSTANCE_NAME = "main" MAIN_PROCESS_LOCALHOST_ADDRESS = "127.0.0.1" MAIN_PROCESS_REPLICATION_PORT = 9093 # Obviously, these would only be used with the UNIX socket option MAIN_PROCESS_UNIX_SOCKET_PUBLIC_PATH = "/run/main_public.sock" MAIN_PROCESS_UNIX_SOCKET_PRIVATE_PATH = "/run/main_private.sock" # A simple name used as a placeholder in the WORKERS_CONFIG below. This will be replaced # during processing with the name of the worker. WORKER_PLACEHOLDER_NAME = "placeholder_name" # Workers with exposed endpoints needs either "client", "federation", or "media" listener_resources # Watching /_matrix/client needs a "client" listener # Watching /_matrix/federation needs a "federation" listener # Watching /_matrix/media and related needs a "media" listener # Stream Writers require "client" and "replication" listeners because they # have to attach by instance_map to the master process and have client endpoints. WORKERS_CONFIG: Dict[str, Dict[str, Any]] = { "pusher": { "app": "synapse.app.generic_worker", "listener_resources": [], "endpoint_patterns": [], "shared_extra_conf": {}, "worker_extra_conf": "", }, "user_dir": { "app": "synapse.app.generic_worker", "listener_resources": ["client"], "endpoint_patterns": [ "^/_matrix/client/(api/v1|r0|v3|unstable)/user_directory/search$" ], "shared_extra_conf": { "update_user_directory_from_worker": WORKER_PLACEHOLDER_NAME }, "worker_extra_conf": "", }, "media_repository": { "app": "synapse.app.generic_worker", "listener_resources": ["media"], "endpoint_patterns": [ "^/_matrix/media/", "^/_synapse/admin/v1/purge_media_cache$", "^/_synapse/admin/v1/room/.*/media.*$", "^/_synapse/admin/v1/user/.*/media.*$", "^/_synapse/admin/v1/media/.*$", "^/_synapse/admin/v1/quarantine_media/.*$", ], # The first configured media worker will run the media background jobs "shared_extra_conf": { "enable_media_repo": False, "media_instance_running_background_jobs": WORKER_PLACEHOLDER_NAME, }, "worker_extra_conf": "enable_media_repo: true", }, "appservice": { "app": "synapse.app.generic_worker", "listener_resources": [], "endpoint_patterns": [], "shared_extra_conf": { "notify_appservices_from_worker": WORKER_PLACEHOLDER_NAME }, "worker_extra_conf": "", }, "federation_sender": { "app": "synapse.app.generic_worker", "listener_resources": [], "endpoint_patterns": [], "shared_extra_conf": {}, "worker_extra_conf": "", }, "synchrotron": { "app": "synapse.app.generic_worker", "listener_resources": ["client"], "endpoint_patterns": [ "^/_matrix/client/(v2_alpha|r0|v3)/sync$", "^/_matrix/client/(api/v1|v2_alpha|r0|v3)/events$", "^/_matrix/client/(api/v1|r0|v3)/initialSync$", "^/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "client_reader": { "app": "synapse.app.generic_worker", "listener_resources": ["client"], "endpoint_patterns": [ "^/_matrix/client/(api/v1|r0|v3|unstable)/publicRooms$", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/joined_members$", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/context/.*$", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/members$", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state$", "^/_matrix/client/v1/rooms/.*/hierarchy$", "^/_matrix/client/(v1|unstable)/rooms/.*/relations/", "^/_matrix/client/v1/rooms/.*/threads$", "^/_matrix/client/(api/v1|r0|v3|unstable)/login$", "^/_matrix/client/(api/v1|r0|v3|unstable)/account/3pid$", "^/_matrix/client/(api/v1|r0|v3|unstable)/account/whoami$", "^/_matrix/client/versions$", "^/_matrix/client/(api/v1|r0|v3|unstable)/voip/turnServer$", "^/_matrix/client/(r0|v3|unstable)/register$", "^/_matrix/client/(r0|v3|unstable)/register/available$", "^/_matrix/client/(r0|v3|unstable)/auth/.*/fallback/web$", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/messages$", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/event", "^/_matrix/client/(api/v1|r0|v3|unstable)/joined_rooms", "^/_matrix/client/(api/v1|r0|v3|unstable/.*)/rooms/.*/aliases", "^/_matrix/client/v1/rooms/.*/timestamp_to_event$", "^/_matrix/client/(api/v1|r0|v3|unstable)/search", "^/_matrix/client/(r0|v3|unstable)/user/.*/filter(/|$)", "^/_matrix/client/(r0|v3|unstable)/password_policy$", "^/_matrix/client/(api/v1|r0|v3|unstable)/directory/room/.*$", "^/_matrix/client/(r0|v3|unstable)/capabilities$", "^/_matrix/client/(r0|v3|unstable)/notifications$", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "federation_reader": { "app": "synapse.app.generic_worker", "listener_resources": ["federation"], "endpoint_patterns": [ "^/_matrix/federation/(v1|v2)/event/", "^/_matrix/federation/(v1|v2)/state/", "^/_matrix/federation/(v1|v2)/state_ids/", "^/_matrix/federation/(v1|v2)/backfill/", "^/_matrix/federation/(v1|v2)/get_missing_events/", "^/_matrix/federation/(v1|v2)/publicRooms", "^/_matrix/federation/(v1|v2)/query/", "^/_matrix/federation/(v1|v2)/make_join/", "^/_matrix/federation/(v1|v2)/make_leave/", "^/_matrix/federation/(v1|v2)/send_join/", "^/_matrix/federation/(v1|v2)/send_leave/", "^/_matrix/federation/(v1|v2)/invite/", "^/_matrix/federation/(v1|v2)/query_auth/", "^/_matrix/federation/(v1|v2)/event_auth/", "^/_matrix/federation/v1/timestamp_to_event/", "^/_matrix/federation/(v1|v2)/exchange_third_party_invite/", "^/_matrix/federation/(v1|v2)/user/devices/", "^/_matrix/federation/(v1|v2)/get_groups_publicised$", "^/_matrix/key/v2/query", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "federation_inbound": { "app": "synapse.app.generic_worker", "listener_resources": ["federation"], "endpoint_patterns": ["/_matrix/federation/(v1|v2)/send/"], "shared_extra_conf": {}, "worker_extra_conf": "", }, "event_persister": { "app": "synapse.app.generic_worker", "listener_resources": ["replication"], "endpoint_patterns": [], "shared_extra_conf": {}, "worker_extra_conf": "", }, "background_worker": { "app": "synapse.app.generic_worker", "listener_resources": [], "endpoint_patterns": [], # This worker cannot be sharded. Therefore, there should only ever be one # background worker. This is enforced for the safety of your database. "shared_extra_conf": {"run_background_tasks_on": WORKER_PLACEHOLDER_NAME}, "worker_extra_conf": "", }, "event_creator": { "app": "synapse.app.generic_worker", "listener_resources": ["client"], "endpoint_patterns": [ "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/redact", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/send", "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick)$", "^/_matrix/client/(api/v1|r0|v3|unstable)/join/", "^/_matrix/client/(api/v1|r0|v3|unstable)/knock/", "^/_matrix/client/(api/v1|r0|v3|unstable)/profile/", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "frontend_proxy": { "app": "synapse.app.generic_worker", "listener_resources": ["client", "replication"], "endpoint_patterns": ["^/_matrix/client/(api/v1|r0|v3|unstable)/keys/upload"], "shared_extra_conf": {}, "worker_extra_conf": "", }, "account_data": { "app": "synapse.app.generic_worker", "listener_resources": ["client", "replication"], "endpoint_patterns": [ "^/_matrix/client/(r0|v3|unstable)/.*/tags", "^/_matrix/client/(r0|v3|unstable)/.*/account_data", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "presence": { "app": "synapse.app.generic_worker", "listener_resources": ["client", "replication"], "endpoint_patterns": ["^/_matrix/client/(api/v1|r0|v3|unstable)/presence/"], "shared_extra_conf": {}, "worker_extra_conf": "", }, "receipts": { "app": "synapse.app.generic_worker", "listener_resources": ["client", "replication"], "endpoint_patterns": [ "^/_matrix/client/(r0|v3|unstable)/rooms/.*/receipt", "^/_matrix/client/(r0|v3|unstable)/rooms/.*/read_markers", ], "shared_extra_conf": {}, "worker_extra_conf": "", }, "to_device": { "app": "synapse.app.generic_worker", "listener_resources": ["client", "replication"], "endpoint_patterns": ["^/_matrix/client/(r0|v3|unstable)/sendToDevice/"], "shared_extra_conf": {}, "worker_extra_conf": "", }, "typing": { "app": "synapse.app.generic_worker", "listener_resources": ["client", "replication"], "endpoint_patterns": [ "^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/typing" ], "shared_extra_conf": {}, "worker_extra_conf": "", }, } # Templates for sections that may be inserted multiple times in config files NGINX_LOCATION_CONFIG_BLOCK = """ location ~* {endpoint} {{ proxy_pass {upstream}; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; }} """ NGINX_UPSTREAM_CONFIG_BLOCK = """ upstream {upstream_worker_base_name} {{ {body} }} """ # Utility functions def log(txt: str) -> None: print(txt) def error(txt: str) -> NoReturn: print(txt, file=sys.stderr) sys.exit(2) def flush_buffers() -> None: sys.stdout.flush() sys.stderr.flush() def convert(src: str, dst: str, **template_vars: object) -> None: """Generate a file from a template Args: src: Path to the input file. dst: Path to write to. template_vars: The arguments to replace placeholder variables in the template with. """ # Read the template file # We disable autoescape to prevent template variables from being escaped, # as we're not using HTML. env = Environment(loader=FileSystemLoader(os.path.dirname(src)), autoescape=False) template = env.get_template(os.path.basename(src)) # Generate a string from the template. rendered = template.render(**template_vars) # Write the generated contents to a file # # We use append mode in case the files have already been written to by something else # (for instance, as part of the instructions in a dockerfile). with open(dst, "a") as outfile: # In case the existing file doesn't end with a newline outfile.write("\n") outfile.write(rendered) def add_worker_roles_to_shared_config( shared_config: dict, worker_types_set: Set[str], worker_name: str, worker_port: int, ) -> None: """Given a dictionary representing a config file shared across all workers, append appropriate worker information to it for the current worker_type instance. Args: shared_config: The config dict that all worker instances share (after being converted to YAML) worker_types_set: The type of worker (one of those defined in WORKERS_CONFIG). This list can be a single worker type or multiple. worker_name: The name of the worker instance. worker_port: The HTTP replication port that the worker instance is listening on. """ # The instance_map config field marks the workers that write to various replication # streams instance_map = shared_config.setdefault("instance_map", {}) # This is a list of the stream_writers that there can be only one of. Events can be # sharded, and therefore doesn't belong here. singular_stream_writers = [ "account_data", "presence", "receipts", "to_device", "typing", ] # Worker-type specific sharding config. Now a single worker can fulfill multiple # roles, check each. if "pusher" in worker_types_set: shared_config.setdefault("pusher_instances", []).append(worker_name) if "federation_sender" in worker_types_set: shared_config.setdefault("federation_sender_instances", []).append(worker_name) if "event_persister" in worker_types_set: # Event persisters write to the events stream, so we need to update # the list of event stream writers shared_config.setdefault("stream_writers", {}).setdefault("events", []).append( worker_name ) # Map of stream writer instance names to host/ports combos if os.environ.get("SYNAPSE_USE_UNIX_SOCKET", False): instance_map[worker_name] = { "path": f"/run/worker.{worker_port}", } else: instance_map[worker_name] = { "host": "localhost", "port": worker_port, } # Update the list of stream writers. It's convenient that the name of the worker # type is the same as the stream to write. Iterate over the whole list in case there # is more than one. for worker in worker_types_set: if worker in singular_stream_writers: shared_config.setdefault("stream_writers", {}).setdefault( worker, [] ).append(worker_name) # Map of stream writer instance names to host/ports combos # For now, all stream writers need http replication ports if os.environ.get("SYNAPSE_USE_UNIX_SOCKET", False): instance_map[worker_name] = { "path": f"/run/worker.{worker_port}", } else: instance_map[worker_name] = { "host": "localhost", "port": worker_port, } def merge_worker_template_configs( existing_dict: Optional[Dict[str, Any]], to_be_merged_dict: Dict[str, Any], ) -> Dict[str, Any]: """When given an existing dict of worker template configuration consisting with both dicts and lists, merge new template data from WORKERS_CONFIG(or create) and return new dict. Args: existing_dict: Either an existing worker template or a fresh blank one. to_be_merged_dict: The template from WORKERS_CONFIGS to be merged into existing_dict. Returns: The newly merged together dict values. """ new_dict: Dict[str, Any] = {} if not existing_dict: # It doesn't exist yet, just use the new dict(but take a copy not a reference) new_dict = to_be_merged_dict.copy() else: for i in to_be_merged_dict.keys(): if (i == "endpoint_patterns") or (i == "listener_resources"): # merge the two lists, remove duplicates new_dict[i] = list(set(existing_dict[i] + to_be_merged_dict[i])) elif i == "shared_extra_conf": # merge dictionary's, the worker name will be replaced later new_dict[i] = {**existing_dict[i], **to_be_merged_dict[i]} elif i == "worker_extra_conf": # There is only one worker type that has a 'worker_extra_conf' and it is # the media_repo. Since duplicate worker types on the same worker don't # work, this is fine. new_dict[i] = existing_dict[i] + to_be_merged_dict[i] else: # Everything else should be identical, like "app", which only works # because all apps are now generic_workers. new_dict[i] = to_be_merged_dict[i] return new_dict def insert_worker_name_for_worker_config( existing_dict: Dict[str, Any], worker_name: str ) -> Dict[str, Any]: """Insert a given worker name into the worker's configuration dict. Args: existing_dict: The worker_config dict that is imported into shared_config. worker_name: The name of the worker to insert. Returns: Copy of the dict with newly inserted worker name """ dict_to_edit = existing_dict.copy() for k, v in dict_to_edit["shared_extra_conf"].items(): # Only proceed if it's the placeholder name string if v == WORKER_PLACEHOLDER_NAME: dict_to_edit["shared_extra_conf"][k] = worker_name return dict_to_edit def apply_requested_multiplier_for_worker(worker_types: List[str]) -> List[str]: """ Apply multiplier(if found) by returning a new expanded list with some basic error checking. Args: worker_types: The unprocessed List of requested workers Returns: A new list with all requested workers expanded. """ # Checking performed: # 1. if worker:2 or more is declared, it will create additional workers up to number # 2. if worker:1, it will create a single copy of this worker as if no number was # given # 3. if worker:0 is declared, this worker will be ignored. This is to allow for # scripting and automated expansion and is intended behaviour. # 4. if worker:NaN or is a negative number, it will error and log it. new_worker_types = [] for worker_type in worker_types: if ":" in worker_type: worker_type_components = split_and_strip_string(worker_type, ":", 1) worker_count = 0 # Should only be 2 components, a type of worker(s) and an integer as a # string. Cast the number as an int then it can be used as a counter. try: worker_count = int(worker_type_components[1]) except ValueError: error( f"Bad number in worker count for '{worker_type}': " f"'{worker_type_components[1]}' is not an integer" ) # As long as there are more than 0, we add one to the list to make below. for _ in range(worker_count): new_worker_types.append(worker_type_components[0]) else: # If it's not a real worker_type, it will error out later. new_worker_types.append(worker_type) return new_worker_types def is_sharding_allowed_for_worker_type(worker_type: str) -> bool: """Helper to check to make sure worker types that cannot have multiples do not. Args: worker_type: The type of worker to check against. Returns: True if allowed, False if not """ return worker_type not in [ "background_worker", "account_data", "presence", "receipts", "typing", "to_device", ] def split_and_strip_string( given_string: str, split_char: str, max_split: SupportsIndex = -1 ) -> List[str]: """ Helper to split a string on split_char and strip whitespace from each end of each element. Args: given_string: The string to split split_char: The character to split the string on max_split: kwarg for split() to limit how many times the split() happens Returns: A List of strings """ # Removes whitespace from ends of result strings before adding to list. Allow for # overriding 'maxsplit' kwarg, default being -1 to signify no maximum. return [x.strip() for x in given_string.split(split_char, maxsplit=max_split)] def generate_base_homeserver_config() -> None: """Starts Synapse and generates a basic homeserver config, which will later be modified for worker support. Raises: CalledProcessError if calling start.py returned a non-zero exit code. """ # start.py already does this for us, so just call that. # note that this script is copied in in the official, monolith dockerfile os.environ["SYNAPSE_HTTP_PORT"] = str(MAIN_PROCESS_HTTP_LISTENER_PORT) subprocess.run(["/usr/local/bin/python", "/start.py", "migrate_config"], check=True) def parse_worker_types( requested_worker_types: List[str], ) -> Dict[str, Set[str]]: """Read the desired list of requested workers and prepare the data for use in generating worker config files while also checking for potential gotchas. Args: requested_worker_types: The list formed from the split environment variable containing the unprocessed requests for workers. Returns: A dict of worker names to set of worker types. Format: {'worker_name': {'worker_type', 'worker_type2'} } """ # A counter of worker_base_name -> int. Used for determining the name for a given # worker when generating its config file, as each worker's name is just # worker_base_name followed by instance number worker_base_name_counter: Dict[str, int] = defaultdict(int) # Similar to above, but more finely grained. This is used to determine we don't have # more than a single worker for cases where multiples would be bad(e.g. presence). worker_type_shard_counter: Dict[str, int] = defaultdict(int) # The final result of all this processing dict_to_return: Dict[str, Set[str]] = {} # Handle any multipliers requested for given workers. multiple_processed_worker_types = apply_requested_multiplier_for_worker( requested_worker_types ) # Process each worker_type_string # Examples of expected formats: # - requested_name=type1+type2+type3 # - synchrotron # - event_creator+event_persister for worker_type_string in multiple_processed_worker_types: # First, if a name is requested, use that — otherwise generate one. worker_base_name: str = "" if "=" in worker_type_string: # Split on "=", remove extra whitespace from ends then make list worker_type_split = split_and_strip_string(worker_type_string, "=") if len(worker_type_split) > 2: error( "There should only be one '=' in the worker type string. " f"Please fix: {worker_type_string}" ) # Assign the name worker_base_name = worker_type_split[0] if not re.match(r"^[a-zA-Z0-9_+-]*[a-zA-Z_+-]$", worker_base_name): # Apply a fairly narrow regex to the worker names. Some characters # aren't safe for use in file paths or nginx configurations. # Don't allow to end with a number because we'll add a number # ourselves in a moment. error( "Invalid worker name; please choose a name consisting of " "alphanumeric letters, _ + -, but not ending with a digit: " f"{worker_base_name!r}" ) # Continue processing the remainder of the worker_type string # with the name override removed. worker_type_string = worker_type_split[1] # Split the worker_type_string on "+", remove whitespace from ends then make # the list a set so it's deduplicated. worker_types_set: Set[str] = set( split_and_strip_string(worker_type_string, "+") ) if not worker_base_name: # No base name specified: generate one deterministically from set of # types worker_base_name = "+".join(sorted(worker_types_set)) # At this point, we have: # worker_base_name which is the name for the worker, without counter. # worker_types_set which is the set of worker types for this worker. # Validate worker_type and make sure we don't allow sharding for a worker type # that doesn't support it. Will error and stop if it is a problem, # e.g. 'background_worker'. for worker_type in worker_types_set: # Verify this is a real defined worker type. If it's not, stop everything so # it can be fixed. if worker_type not in WORKERS_CONFIG: error( f"{worker_type} is an unknown worker type! Was found in " f"'{worker_type_string}'. Please fix!" ) if worker_type in worker_type_shard_counter: if not is_sharding_allowed_for_worker_type(worker_type): error( f"There can be only a single worker with {worker_type} " "type. Please recount and remove." ) # Not in shard counter, must not have seen it yet, add it. worker_type_shard_counter[worker_type] += 1 # Generate the number for the worker using incrementing counter worker_base_name_counter[worker_base_name] += 1 worker_number = worker_base_name_counter[worker_base_name] worker_name = f"{worker_base_name}{worker_number}" if worker_number > 1: # If this isn't the first worker, check that we don't have a confusing # mixture of worker types with the same base name. first_worker_with_base_name = dict_to_return[f"{worker_base_name}1"] if first_worker_with_base_name != worker_types_set: error( f"Can not use worker_name: '{worker_name}' for worker_type(s): " f"{worker_types_set!r}. It is already in use by " f"worker_type(s): {first_worker_with_base_name!r}" ) dict_to_return[worker_name] = worker_types_set return dict_to_return def generate_worker_files( environ: Mapping[str, str], config_path: str, data_dir: str, requested_worker_types: Dict[str, Set[str]], ) -> None: """Read the desired workers(if any) that is passed in and generate shared homeserver, nginx and supervisord configs. Args: environ: os.environ instance. config_path: The location of the generated Synapse main worker config file. data_dir: The location of the synapse data directory. Where log and user-facing config files live. requested_worker_types: A Dict containing requested workers in the format of {'worker_name1': {'worker_type', ...}} """ # Note that yaml cares about indentation, so care should be taken to insert lines # into files at the correct indentation below. # Convenience helper for if using unix sockets instead of host:port using_unix_sockets = environ.get("SYNAPSE_USE_UNIX_SOCKET", False) # First read the original config file and extract the listeners block. Then we'll # add another listener for replication. Later we'll write out the result to the # shared config file. listeners: List[Any] if using_unix_sockets: listeners = [ { "path": MAIN_PROCESS_UNIX_SOCKET_PRIVATE_PATH, "type": "http", "resources": [{"names": ["replication"]}], } ] else: listeners = [ { "port": MAIN_PROCESS_REPLICATION_PORT, "bind_address": MAIN_PROCESS_LOCALHOST_ADDRESS, "type": "http", "resources": [{"names": ["replication"]}], } ] with open(config_path) as file_stream: original_config = yaml.safe_load(file_stream) original_listeners = original_config.get("listeners") if original_listeners: listeners += original_listeners # The shared homeserver config. The contents of which will be inserted into the # base shared worker jinja2 template. This config file will be passed to all # workers, included Synapse's main process. It is intended mainly for disabling # functionality when certain workers are spun up, and adding a replication listener. shared_config: Dict[str, Any] = {"listeners": listeners} # List of dicts that describe workers. # We pass this to the Supervisor template later to generate the appropriate # program blocks. worker_descriptors: List[Dict[str, Any]] = [] # Upstreams for load-balancing purposes. This dict takes the form of the worker # type to the ports of each worker. For example: # { # worker_type: {1234, 1235, ...}} # } # and will be used to construct 'upstream' nginx directives. nginx_upstreams: Dict[str, Set[int]] = {} # A map of: {"endpoint": "upstream"}, where "upstream" is a str representing what # will be placed after the proxy_pass directive. The main benefit to representing # this data as a dict over a str is that we can easily deduplicate endpoints # across multiple instances of the same worker. The final rendering will be combined # with nginx_upstreams and placed in /etc/nginx/conf.d. nginx_locations: Dict[str, str] = {} # Create the worker configuration directory if it doesn't already exist os.makedirs("/conf/workers", exist_ok=True) # Start worker ports from this arbitrary port worker_port = 18009 # A list of internal endpoints to healthcheck, starting with the main process # which exists even if no workers do. # This list ends up being part of the command line to curl, (curl added support for # Unix sockets in version 7.40). if using_unix_sockets: healthcheck_urls = [ f"--unix-socket {MAIN_PROCESS_UNIX_SOCKET_PUBLIC_PATH} " # The scheme and hostname from the following URL are ignored. # The only thing that matters is the path `/health` "http://localhost/health" ] else: healthcheck_urls = ["http://localhost:8080/health"] # Get the set of all worker types that we have configured all_worker_types_in_use = set(chain(*requested_worker_types.values())) # Map locations to upstreams (corresponding to worker types) in Nginx # but only if we use the appropriate worker type for worker_type in all_worker_types_in_use: for endpoint_pattern in WORKERS_CONFIG[worker_type]["endpoint_patterns"]: nginx_locations[endpoint_pattern] = f"http://{worker_type}" # For each worker type specified by the user, create config values and write it's # yaml config file for worker_name, worker_types_set in requested_worker_types.items(): # The collected and processed data will live here. worker_config: Dict[str, Any] = {} # Merge all worker config templates for this worker into a single config for worker_type in worker_types_set: copy_of_template_config = WORKERS_CONFIG[worker_type].copy() # Merge worker type template configuration data. It's a combination of lists # and dicts, so use this helper. worker_config = merge_worker_template_configs( worker_config, copy_of_template_config ) # Replace placeholder names in the config template with the actual worker name. worker_config = insert_worker_name_for_worker_config(worker_config, worker_name) worker_config.update( {"name": worker_name, "port": str(worker_port), "config_path": config_path} ) # Update the shared config with any worker_type specific options. The first of a # given worker_type needs to stay assigned and not be replaced. worker_config["shared_extra_conf"].update(shared_config) shared_config = worker_config["shared_extra_conf"] if using_unix_sockets: healthcheck_urls.append( f"--unix-socket /run/worker.{worker_port} http://localhost/health" ) else: healthcheck_urls.append("http://localhost:%d/health" % (worker_port,)) # Update the shared config with sharding-related options if necessary add_worker_roles_to_shared_config( shared_config, worker_types_set, worker_name, worker_port ) # Enable the worker in supervisord worker_descriptors.append(worker_config) # Write out the worker's logging config file log_config_filepath = generate_worker_log_config(environ, worker_name, data_dir) # Then a worker config file convert( "/conf/worker.yaml.j2", f"/conf/workers/{worker_name}.yaml", **worker_config, worker_log_config_filepath=log_config_filepath, using_unix_sockets=using_unix_sockets, ) # Save this worker's port number to the correct nginx upstreams for worker_type in worker_types_set: nginx_upstreams.setdefault(worker_type, set()).add(worker_port) worker_port += 1 # Build the nginx location config blocks nginx_location_config = "" for endpoint, upstream in nginx_locations.items(): nginx_location_config += NGINX_LOCATION_CONFIG_BLOCK.format( endpoint=endpoint, upstream=upstream, ) # Determine the load-balancing upstreams to configure nginx_upstream_config = "" for upstream_worker_base_name, upstream_worker_ports in nginx_upstreams.items(): body = "" if using_unix_sockets: for port in upstream_worker_ports: body += f" server unix:/run/worker.{port};\n" else: for port in upstream_worker_ports: body += f" server localhost:{port};\n" # Add to the list of configured upstreams nginx_upstream_config += NGINX_UPSTREAM_CONFIG_BLOCK.format( upstream_worker_base_name=upstream_worker_base_name, body=body, ) # Finally, we'll write out the config files. # log config for the master process master_log_config = generate_worker_log_config(environ, "master", data_dir) shared_config["log_config"] = master_log_config # Find application service registrations appservice_registrations = None appservice_registration_dir = os.environ.get("SYNAPSE_AS_REGISTRATION_DIR") if appservice_registration_dir: # Scan for all YAML files that should be application service registrations. appservice_registrations = [ str(reg_path.resolve()) for reg_path in Path(appservice_registration_dir).iterdir() if reg_path.suffix.lower() in (".yaml", ".yml") ] workers_in_use = len(requested_worker_types) > 0 # If there are workers, add the main process to the instance_map too. if workers_in_use: instance_map = shared_config.setdefault("instance_map", {}) if using_unix_sockets: instance_map[MAIN_PROCESS_INSTANCE_NAME] = { "path": MAIN_PROCESS_UNIX_SOCKET_PRIVATE_PATH, } else: instance_map[MAIN_PROCESS_INSTANCE_NAME] = { "host": MAIN_PROCESS_LOCALHOST_ADDRESS, "port": MAIN_PROCESS_REPLICATION_PORT, } # Shared homeserver config convert( "/conf/shared.yaml.j2", "/conf/workers/shared.yaml", shared_worker_config=yaml.dump(shared_config), appservice_registrations=appservice_registrations, enable_redis=workers_in_use, workers_in_use=workers_in_use, using_unix_sockets=using_unix_sockets, ) # Nginx config convert( "/conf/nginx.conf.j2", "/etc/nginx/conf.d/matrix-synapse.conf", worker_locations=nginx_location_config, upstream_directives=nginx_upstream_config, tls_cert_path=os.environ.get("SYNAPSE_TLS_CERT"), tls_key_path=os.environ.get("SYNAPSE_TLS_KEY"), using_unix_sockets=using_unix_sockets, ) # Supervisord config os.makedirs("/etc/supervisor", exist_ok=True) convert( "/conf/supervisord.conf.j2", "/etc/supervisor/supervisord.conf", main_config_path=config_path, enable_redis=workers_in_use, using_unix_sockets=using_unix_sockets, ) convert( "/conf/synapse.supervisord.conf.j2", "/etc/supervisor/conf.d/synapse.conf", workers=worker_descriptors, main_config_path=config_path, use_forking_launcher=environ.get("SYNAPSE_USE_EXPERIMENTAL_FORKING_LAUNCHER"), ) # healthcheck config convert( "/conf/healthcheck.sh.j2", "/healthcheck.sh", healthcheck_urls=healthcheck_urls, ) # Ensure the logging directory exists log_dir = data_dir + "/logs" if not os.path.exists(log_dir): os.mkdir(log_dir) def generate_worker_log_config( environ: Mapping[str, str], worker_name: str, data_dir: str ) -> str: """Generate a log.config file for the given worker. Returns: the path to the generated file """ # Check whether we should write worker logs to disk, in addition to the console extra_log_template_args: Dict[str, Optional[str]] = {} if environ.get("SYNAPSE_WORKERS_WRITE_LOGS_TO_DISK"): extra_log_template_args["LOG_FILE_PATH"] = f"{data_dir}/logs/{worker_name}.log" extra_log_template_args["SYNAPSE_LOG_LEVEL"] = environ.get("SYNAPSE_LOG_LEVEL") extra_log_template_args["SYNAPSE_LOG_SENSITIVE"] = environ.get( "SYNAPSE_LOG_SENSITIVE" ) extra_log_template_args["SYNAPSE_LOG_TESTING"] = environ.get("SYNAPSE_LOG_TESTING") # Render and write the file log_config_filepath = f"/conf/workers/{worker_name}.log.config" convert( "/conf/log.config", log_config_filepath, worker_name=worker_name, **extra_log_template_args, include_worker_name_in_log_line=environ.get( "SYNAPSE_USE_EXPERIMENTAL_FORKING_LAUNCHER" ), ) return log_config_filepath def main(args: List[str], environ: MutableMapping[str, str]) -> None: parser = ArgumentParser() parser.add_argument( "--generate-only", action="store_true", help="Only generate configuration; don't run Synapse.", ) opts = parser.parse_args(args) config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get("SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml") data_dir = environ.get("SYNAPSE_DATA_DIR", "/data") # override SYNAPSE_NO_TLS, we don't support TLS in worker mode, # this needs to be handled by a frontend proxy environ["SYNAPSE_NO_TLS"] = "yes" # Generate the base homeserver config if one does not yet exist if not os.path.exists(config_path): log("Generating base homeserver config") generate_base_homeserver_config() else: log("Base homeserver config exists—not regenerating") # This script may be run multiple times (mostly by Complement, see note at top of # file). Don't re-configure workers in this instance. mark_filepath = "/conf/workers_have_been_configured" if not os.path.exists(mark_filepath): # Collect and validate worker_type requests # Read the desired worker configuration from the environment worker_types_env = environ.get("SYNAPSE_WORKER_TYPES", "").strip() # Only process worker_types if they exist if not worker_types_env: # No workers, just the main process worker_types = [] requested_worker_types: Dict[str, Any] = {} else: # Split type names by comma, ignoring whitespace. worker_types = split_and_strip_string(worker_types_env, ",") requested_worker_types = parse_worker_types(worker_types) # Always regenerate all other config files log("Generating worker config files") generate_worker_files(environ, config_path, data_dir, requested_worker_types) # Mark workers as being configured with open(mark_filepath, "w") as f: f.write("") else: log("Worker config exists—not regenerating") if opts.generate_only: log("--generate-only: won't run Synapse") return # Lifted right out of start.py jemallocpath = "/usr/lib/%s-linux-gnu/libjemalloc.so.2" % (platform.machine(),) if os.path.isfile(jemallocpath): environ["LD_PRELOAD"] = jemallocpath else: log("Could not find %s, will not use" % (jemallocpath,)) # Start supervisord, which will start Synapse, all of the configured worker # processes, redis, nginx etc. according to the config we created above. log("Starting supervisord") flush_buffers() os.execle( "/usr/local/bin/supervisord", "supervisord", "-c", "/etc/supervisor/supervisord.conf", environ, ) if __name__ == "__main__": main(sys.argv[1:], os.environ) synapse-1.100.0/docker/editable.Dockerfile000066400000000000000000000044421455622526000203570ustar00rootroot00000000000000# syntax=docker/dockerfile:1 # This dockerfile builds an editable install of Synapse. # # Used by `complement.sh`. Not suitable for production use. ARG PYTHON_VERSION=3.9 ### ### Stage 0: generate requirements.txt ### # We hardcode the use of Debian bookworm here because this could change upstream # and other Dockerfiles used for testing are expecting bookworm. FROM docker.io/library/python:${PYTHON_VERSION}-slim-bookworm # Install Rust and other dependencies (stolen from normal Dockerfile) # install the OS build deps RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update -qq && apt-get install -yqq \ build-essential \ libffi-dev \ libjpeg-dev \ libpq-dev \ libssl-dev \ libwebp-dev \ libxml++2.6-dev \ libxslt1-dev \ openssl \ zlib1g-dev \ git \ curl \ gosu \ libjpeg62-turbo \ libpq5 \ libwebp7 \ xmlsec1 \ libjemalloc2 \ && rm -rf /var/lib/apt/lists/* ENV RUSTUP_HOME=/rust ENV CARGO_HOME=/cargo ENV PATH=/cargo/bin:/rust/bin:$PATH RUN mkdir /rust /cargo RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable --profile minimal # Make a base copy of the editable source tree, so that we have something to # install and build now — even though it's going to be covered up by a mount # at runtime. COPY synapse /editable-src/synapse/ COPY rust /editable-src/rust/ # ... and what we need to `pip install`. COPY pyproject.toml poetry.lock README.rst build_rust.py Cargo.toml Cargo.lock /editable-src/ RUN pip install poetry RUN poetry config virtualenvs.create false RUN cd /editable-src && poetry install --extras all # Make copies of useful things for inspection: # - the Rust module (must be copied to the editable source tree before startup) # - poetry.lock is useful for checking if dependencies have changed. RUN cp /editable-src/synapse/synapse_rust.abi3.so /synapse_rust.abi3.so.bak RUN cp /editable-src/poetry.lock /poetry.lock.bak ### Extra setup from original Dockerfile COPY ./docker/start.py /start.py COPY ./docker/conf /conf EXPOSE 8008/tcp 8009/tcp 8448/tcp ENTRYPOINT ["/start.py"] HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \ CMD curl -fSs http://localhost:8008/health || exit 1 synapse-1.100.0/docker/prefix-log000077500000000000000000000005611455622526000166150ustar00rootroot00000000000000#!/bin/bash # # Prefixes all lines on stdout and stderr with the process name (as determined by # the SUPERVISOR_PROCESS_NAME env var, which is automatically set by Supervisor). # # Usage: # prefix-log command [args...] # exec 1> >(awk '{print "'"${SUPERVISOR_PROCESS_NAME}"' | "$0}' >&1) exec 2> >(awk '{print "'"${SUPERVISOR_PROCESS_NAME}"' | "$0}' >&2) exec "$@" synapse-1.100.0/docker/start.py000077500000000000000000000224271455622526000163320ustar00rootroot00000000000000#!/usr/local/bin/python import codecs import glob import os import platform import subprocess import sys from typing import Any, Dict, List, Mapping, MutableMapping, NoReturn, Optional import jinja2 # Utility functions def log(txt: str) -> None: print(txt) def error(txt: str) -> NoReturn: print(txt, file=sys.stderr) sys.exit(2) def flush_buffers() -> None: sys.stdout.flush() sys.stderr.flush() def convert(src: str, dst: str, environ: Mapping[str, object]) -> None: """Generate a file from a template Args: src: path to input file dst: path to file to write environ: environment dictionary, for replacement mappings. """ with open(src) as infile: template = infile.read() rendered = jinja2.Template(template).render(**environ) with open(dst, "w") as outfile: outfile.write(rendered) def generate_config_from_template( config_dir: str, config_path: str, os_environ: Mapping[str, str], ownership: Optional[str], ) -> None: """Generate a homeserver.yaml from environment variables Args: config_dir: where to put generated config files config_path: where to put the main config file os_environ: environment mapping ownership: ":" string which will be used to set ownership of the generated configs. If None, ownership will not change. """ for v in ("SYNAPSE_SERVER_NAME", "SYNAPSE_REPORT_STATS"): if v not in os_environ: error( "Environment variable '%s' is mandatory when generating a config file." % (v,) ) # populate some params from data files (if they exist, else create new ones) environ: Dict[str, Any] = dict(os_environ) secrets = { "registration": "SYNAPSE_REGISTRATION_SHARED_SECRET", "macaroon": "SYNAPSE_MACAROON_SECRET_KEY", } for name, secret in secrets.items(): if secret not in environ: filename = "/data/%s.%s.key" % (environ["SYNAPSE_SERVER_NAME"], name) # if the file already exists, load in the existing value; otherwise, # generate a new secret and write it to a file if os.path.exists(filename): log("Reading %s from %s" % (secret, filename)) with open(filename) as handle: value = handle.read() else: log(f"Generating a random secret for {secret}") value = codecs.encode(os.urandom(32), "hex").decode() with open(filename, "w") as handle: handle.write(value) environ[secret] = value environ["SYNAPSE_APPSERVICES"] = glob.glob("/data/appservices/*.yaml") if not os.path.exists(config_dir): os.mkdir(config_dir) # Convert SYNAPSE_NO_TLS to boolean if exists if "SYNAPSE_NO_TLS" in environ: tlsanswerstring = str.lower(environ["SYNAPSE_NO_TLS"]) if tlsanswerstring in ("true", "on", "1", "yes"): environ["SYNAPSE_NO_TLS"] = True else: if tlsanswerstring in ("false", "off", "0", "no"): environ["SYNAPSE_NO_TLS"] = False else: error( 'Environment variable "SYNAPSE_NO_TLS" found but value "' + tlsanswerstring + '" unrecognized; exiting.' ) if "SYNAPSE_LOG_CONFIG" not in environ: environ["SYNAPSE_LOG_CONFIG"] = config_dir + "/log.config" log("Generating synapse config file " + config_path) convert("/conf/homeserver.yaml", config_path, environ) log_config_file = environ["SYNAPSE_LOG_CONFIG"] log("Generating log config file " + log_config_file) convert( "/conf/log.config", log_config_file, {**environ, "include_worker_name_in_log_line": False}, ) # Hopefully we already have a signing key, but generate one if not. args = [ sys.executable, "-m", "synapse.app.homeserver", "--config-path", config_path, # tell synapse to put generated keys in /data rather than /compiled "--keys-directory", config_dir, "--generate-keys", ] if ownership is not None: log(f"Setting ownership on /data to {ownership}") subprocess.run(["chown", "-R", ownership, "/data"], check=True) args = ["gosu", ownership] + args subprocess.run(args, check=True) def run_generate_config(environ: Mapping[str, str], ownership: Optional[str]) -> None: """Run synapse with a --generate-config param to generate a template config file Args: environ: env vars from `os.enrivon`. ownership: "userid:groupid" arg for chmod. If None, ownership will not change. Never returns. """ for v in ("SYNAPSE_SERVER_NAME", "SYNAPSE_REPORT_STATS"): if v not in environ: error("Environment variable '%s' is mandatory in `generate` mode." % (v,)) server_name = environ["SYNAPSE_SERVER_NAME"] config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get("SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml") data_dir = environ.get("SYNAPSE_DATA_DIR", "/data") if ownership is not None: # make sure that synapse has perms to write to the data dir. log(f"Setting ownership on {data_dir} to {ownership}") subprocess.run(["chown", ownership, data_dir], check=True) # create a suitable log config from our template log_config_file = "%s/%s.log.config" % (config_dir, server_name) if not os.path.exists(log_config_file): log("Creating log config %s" % (log_config_file,)) convert("/conf/log.config", log_config_file, environ) # generate the main config file, and a signing key. args = [ sys.executable, "-m", "synapse.app.homeserver", "--server-name", server_name, "--report-stats", environ["SYNAPSE_REPORT_STATS"], "--config-path", config_path, "--config-directory", config_dir, "--data-directory", data_dir, "--generate-config", "--open-private-ports", ] # log("running %s" % (args, )) flush_buffers() os.execv(sys.executable, args) def main(args: List[str], environ: MutableMapping[str, str]) -> None: mode = args[1] if len(args) > 1 else "run" # if we were given an explicit user to switch to, do so ownership = None if "UID" in environ: desired_uid = int(environ["UID"]) desired_gid = int(environ.get("GID", "991")) ownership = f"{desired_uid}:{desired_gid}" elif os.getuid() == 0: # otherwise, if we are running as root, use user 991 ownership = "991:991" synapse_worker = environ.get("SYNAPSE_WORKER", "synapse.app.homeserver") # In generate mode, generate a configuration and missing keys, then exit if mode == "generate": return run_generate_config(environ, ownership) if mode == "migrate_config": # generate a config based on environment vars. config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get( "SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml" ) return generate_config_from_template( config_dir, config_path, environ, ownership ) if mode != "run": error("Unknown execution mode '%s'" % (mode,)) args = args[2:] if "-m" not in args: args = ["-m", synapse_worker] + args jemallocpath = "/usr/lib/%s-linux-gnu/libjemalloc.so.2" % (platform.machine(),) if os.path.isfile(jemallocpath): environ["LD_PRELOAD"] = jemallocpath else: log("Could not find %s, will not use" % (jemallocpath,)) # if there are no config files passed to synapse, try adding the default file if not any(p.startswith(("--config-path", "-c")) for p in args): config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_path = environ.get( "SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml" ) if not os.path.exists(config_path): if "SYNAPSE_SERVER_NAME" in environ: error( """\ Config file '%s' does not exist. The synapse docker image no longer supports generating a config file on-the-fly based on environment variables. You can migrate to a static config file by running with 'migrate_config'. See the README for more details. """ % (config_path,) ) error( "Config file '%s' does not exist. You should either create a new " "config file by running with the `generate` argument (and then edit " "the resulting file before restarting) or specify the path to an " "existing config file with the SYNAPSE_CONFIG_PATH variable." % (config_path,) ) args += ["--config-path", config_path] log("Starting synapse with args " + " ".join(args)) args = [sys.executable] + args if ownership is not None: args = ["gosu", ownership] + args flush_buffers() os.execve("/usr/sbin/gosu", args, environ) else: flush_buffers() os.execve(sys.executable, args, environ) if __name__ == "__main__": main(sys.argv, os.environ) synapse-1.100.0/docs/000077500000000000000000000000001455622526000142725ustar00rootroot00000000000000synapse-1.100.0/docs/.sample_config_header.yaml000066400000000000000000000012171455622526000213530ustar00rootroot00000000000000# This file is maintained as an up-to-date snapshot of the default # homeserver.yaml configuration generated by Synapse. You can find a # complete accounting of possible configuration options at # https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html # # It is *not* intended to be copied and used as the basis for a real # homeserver.yaml. Instead, if you are starting from scratch, please generate # a fresh config using Synapse by following the instructions in # https://element-hq.github.io/synapse/latest/setup/installation.html. # ################################################################################ synapse-1.100.0/docs/CAPTCHA_SETUP.md000066400000000000000000000032431455622526000166410ustar00rootroot00000000000000# Overview A captcha can be enabled on your homeserver to help prevent bots from registering accounts. Synapse currently uses Google's reCAPTCHA service which requires API keys from Google. ## Getting API keys 1. Create a new site at 1. Set the label to anything you want 1. Set the type to reCAPTCHA v2 using the "I'm not a robot" Checkbox option. This is the only type of captcha that works with Synapse. 1. Add the public hostname for your server, as set in `public_baseurl` in `homeserver.yaml`, to the list of authorized domains. If you have not set `public_baseurl`, use `server_name`. 1. Agree to the terms of service and submit. 1. Copy your site key and secret key and add them to your `homeserver.yaml` configuration file ```yaml recaptcha_public_key: YOUR_SITE_KEY recaptcha_private_key: YOUR_SECRET_KEY ``` 1. Enable the CAPTCHA for new registrations ```yaml enable_registration_captcha: true ``` 1. Go to the settings page for the CAPTCHA you just created 1. Uncheck the "Verify the origin of reCAPTCHA solutions" checkbox so that the captcha can be displayed in any client. If you do not disable this option then you must specify the domains of every client that is allowed to display the CAPTCHA. ## Configuring IP used for auth The reCAPTCHA API requires that the IP address of the user who solved the CAPTCHA is sent. If the client is connecting through a proxy or load balancer, it may be required to use the `X-Forwarded-For` (XFF) header instead of the origin IP address. This can be configured using the `x_forwarded` directive in the listeners section of the `homeserver.yaml` configuration file. synapse-1.100.0/docs/README.md000066400000000000000000000060351455622526000155550ustar00rootroot00000000000000# Synapse Documentation **The documentation is currently hosted [here](https://element-hq.github.io/synapse).** Please update any links to point to the new website instead. ## About This directory currently holds a series of markdown files documenting how to install, use and develop Synapse. The documentation is readable directly from this repository, but it is recommended to instead browse through the [website](https://element-hq.github.io/synapse) for easier discoverability. ## Adding to the documentation Most of the documentation currently exists as top-level files, as when organising them into a structured website, these files were kept in place so that existing links would not break. The rest of the documentation is stored in folders, such as `setup`, `usage`, and `development` etc. **All new documentation files should be placed in structured folders.** For example: To create a new user-facing documentation page about a new Single Sign-On protocol named "MyCoolProtocol", one should create a new file with a relevant name, such as "my_cool_protocol.md". This file might fit into the documentation structure at: - Usage - Configuration - User Authentication - Single Sign-On - **My Cool Protocol** Given that, one would place the new file under `usage/configuration/user_authentication/single_sign_on/my_cool_protocol.md`. Note that the structure of the documentation (and thus the left sidebar on the website) is determined by the list in [SUMMARY.md](SUMMARY.md). The final thing to do when adding a new page is to add a new line linking to the new documentation file: ```markdown - [My Cool Protocol](usage/configuration/user_authentication/single_sign_on/my_cool_protocol.md) ``` ## Building the documentation The documentation is built with [mdbook](https://rust-lang.github.io/mdBook/), and the outline of the documentation is determined by the structure of [SUMMARY.md](SUMMARY.md). First, [get mdbook](https://github.com/rust-lang/mdBook#installation). Then, **from the root of the repository**, build the documentation with: ```sh mdbook build ``` The rendered contents will be outputted to a new `book/` directory at the root of the repository. Please note that index.html is not built by default, it is created by copying over the file `welcome_and_overview.html` to `index.html` during deployment. Thus, when running `mdbook serve` locally the book will initially show a 404 in place of the index due to the above. Do not be alarmed! You can also have mdbook host the docs on a local webserver with hot-reload functionality via: ```sh mdbook serve ``` The URL at which the docs can be viewed at will be logged. ## Configuration and theming The look and behaviour of the website is configured by the [book.toml](../book.toml) file at the root of the repository. See [mdbook's documentation on configuration](https://rust-lang.github.io/mdBook/format/config.html) for available options. The site can be themed and additionally extended with extra UI and features. See [website_files/README.md](website_files/README.md) for details. synapse-1.100.0/docs/SUMMARY.md000066400000000000000000000136741455622526000157640ustar00rootroot00000000000000# Summary # Introduction - [Welcome and Overview](welcome_and_overview.md) # Setup - [Installation](setup/installation.md) - [Using Postgres](postgres.md) - [Configuring a Reverse Proxy](reverse_proxy.md) - [Configuring a Forward/Outbound Proxy](setup/forward_proxy.md) - [Configuring a Turn Server](turn-howto.md) - [coturn TURN server](setup/turn/coturn.md) - [eturnal TURN server](setup/turn/eturnal.md) - [Delegation](delegate.md) # Upgrading - [Upgrading between Synapse Versions](upgrade.md) # Usage - [Federation](federate.md) - [Configuration](usage/configuration/README.md) - [Configuration Manual](usage/configuration/config_documentation.md) - [Homeserver Sample Config File](usage/configuration/homeserver_sample_config.md) - [Logging Sample Config File](usage/configuration/logging_sample_config.md) - [Structured Logging](structured_logging.md) - [Templates](templates.md) - [User Authentication](usage/configuration/user_authentication/README.md) - [Single-Sign On](usage/configuration/user_authentication/single_sign_on/README.md) - [OpenID Connect](openid.md) - [SAML](usage/configuration/user_authentication/single_sign_on/saml.md) - [CAS](usage/configuration/user_authentication/single_sign_on/cas.md) - [SSO Mapping Providers](sso_mapping_providers.md) - [Password Auth Providers](password_auth_providers.md) - [JSON Web Tokens](jwt.md) - [Refresh Tokens](usage/configuration/user_authentication/refresh_tokens.md) - [Registration Captcha](CAPTCHA_SETUP.md) - [Application Services](application_services.md) - [Server Notices](server_notices.md) - [Consent Tracking](consent_tracking.md) - [User Directory](user_directory.md) - [Message Retention Policies](message_retention_policies.md) - [Pluggable Modules](modules/index.md) - [Writing a module](modules/writing_a_module.md) - [Spam checker callbacks](modules/spam_checker_callbacks.md) - [Third-party rules callbacks](modules/third_party_rules_callbacks.md) - [Presence router callbacks](modules/presence_router_callbacks.md) - [Account validity callbacks](modules/account_validity_callbacks.md) - [Password auth provider callbacks](modules/password_auth_provider_callbacks.md) - [Background update controller callbacks](modules/background_update_controller_callbacks.md) - [Account data callbacks](modules/account_data_callbacks.md) - [Add extra fields to client events unsigned section callbacks](modules/add_extra_fields_to_client_events_unsigned.md) - [Porting a legacy module to the new interface](modules/porting_legacy_module.md) - [Workers](workers.md) - [Using `synctl` with Workers](synctl_workers.md) - [Systemd](systemd-with-workers/README.md) - [Administration](usage/administration/README.md) - [Admin API](usage/administration/admin_api/README.md) - [Account Validity](admin_api/account_validity.md) - [Background Updates](usage/administration/admin_api/background_updates.md) - [Event Reports](admin_api/event_reports.md) - [Experimental Features](admin_api/experimental_features.md) - [Media](admin_api/media_admin_api.md) - [Purge History](admin_api/purge_history_api.md) - [Register Users](admin_api/register_api.md) - [Registration Tokens](usage/administration/admin_api/registration_tokens.md) - [Manipulate Room Membership](admin_api/room_membership.md) - [Rooms](admin_api/rooms.md) - [Server Notices](admin_api/server_notices.md) - [Statistics](admin_api/statistics.md) - [Users](admin_api/user_admin_api.md) - [Server Version](admin_api/version_api.md) - [Federation](usage/administration/admin_api/federation.md) - [Manhole](manhole.md) - [Monitoring](metrics-howto.md) - [Reporting Homeserver Usage Statistics](usage/administration/monitoring/reporting_homeserver_usage_statistics.md) - [Monthly Active Users](usage/administration/monthly_active_users.md) - [Understanding Synapse Through Grafana Graphs](usage/administration/understanding_synapse_through_grafana_graphs.md) - [Useful SQL for Admins](usage/administration/useful_sql_for_admins.md) - [Database Maintenance Tools](usage/administration/database_maintenance_tools.md) - [State Groups](usage/administration/state_groups.md) - [Request log format](usage/administration/request_log.md) - [Admin FAQ](usage/administration/admin_faq.md) - [Scripts]() # Development - [Contributing Guide](development/contributing_guide.md) - [Code Style](code_style.md) - [Reviewing Code](development/reviews.md) - [Release Cycle](development/releases.md) - [Git Usage](development/git.md) - [Testing]() - [Demo scripts](development/demo.md) - [OpenTracing](opentracing.md) - [Database Schemas](development/database_schema.md) - [Experimental features](development/experimental_features.md) - [Dependency management](development/dependencies.md) - [Synapse Architecture]() - [Cancellation](development/synapse_architecture/cancellation.md) - [Log Contexts](log_contexts.md) - [Replication](replication.md) - [Streams](development/synapse_architecture/streams.md) - [TCP Replication](tcp_replication.md) - [Faster remote joins](development/synapse_architecture/faster_joins.md) - [Internal Documentation](development/internal_documentation/README.md) - [Single Sign-On]() - [SAML](development/saml.md) - [CAS](development/cas.md) - [Room DAG concepts](development/room-dag-concepts.md) - [State Resolution]() - [The Auth Chain Difference Algorithm](auth_chain_difference_algorithm.md) - [Media Repository](media_repository.md) - [Room and User Statistics](room_and_user_statistics.md) - [Scripts]() # Other - [Dependency Deprecation Policy](deprecation_policy.md) - [Running Synapse on a Single-Board Computer](other/running_synapse_on_single_board_computers.md) synapse-1.100.0/docs/admin_api/000077500000000000000000000000001455622526000162135ustar00rootroot00000000000000synapse-1.100.0/docs/admin_api/README.rst000066400000000000000000000012301455622526000176760ustar00rootroot00000000000000Admin APIs ========== **Note**: The latest documentation can be viewed `here `_. See `docs/README.md <../README.md>`_ for more information. **Please update links to point to the website instead.** Existing files in this directory are preserved to maintain historical links, but may be moved in the future. This directory includes documentation for the various synapse specific admin APIs available. Updates to the existing Admin API documentation should still be made to these files, but any new documentation files should instead be placed under `docs/usage/administration/admin_api <../usage/administration/admin_api>`_. synapse-1.100.0/docs/admin_api/account_validity.md000066400000000000000000000023711455622526000221010ustar00rootroot00000000000000# Account validity API **Note:** This API is disabled when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) This API allows a server administrator to manage the validity of an account. To use it, you must enable the account validity feature (under `account_validity`) in Synapse's configuration. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). ## Renew account This API extends the validity of an account by as much time as configured in the `period` parameter from the `account_validity` configuration. The API is: ``` POST /_synapse/admin/v1/account_validity/validity ``` with the following body: ```json { "user_id": "", "expiration_ts": 0, "enable_renewal_emails": true } ``` `expiration_ts` is an optional parameter and overrides the expiration date, which otherwise defaults to now + validity period. `enable_renewal_emails` is also an optional parameter and enables/disables sending renewal emails to the user. Defaults to true. The API returns with the new expiration date for this account, as a timestamp in milliseconds since epoch: ```json { "expiration_ts": 0 } ``` synapse-1.100.0/docs/admin_api/event_reports.md000066400000000000000000000150431455622526000214370ustar00rootroot00000000000000# Show reported events This API returns information about reported events. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). The api is: ``` GET /_synapse/admin/v1/event_reports?from=0&limit=10 ``` It returns a JSON body like the following: ```json { "event_reports": [ { "event_id": "$bNUFCwGzWca1meCGkjp-zwslF-GfVcXukvRLI1_FaVY", "id": 2, "reason": "foo", "score": -100, "received_ts": 1570897107409, "canonical_alias": "#alias1:matrix.org", "room_id": "!ERAgBpSOcCCuTJqQPk:matrix.org", "name": "Matrix HQ", "sender": "@foobar:matrix.org", "user_id": "@foo:matrix.org" }, { "event_id": "$3IcdZsDaN_En-S1DF4EMCy3v4gNRKeOJs8W5qTOKj4I", "id": 3, "reason": "bar", "score": -100, "received_ts": 1598889612059, "canonical_alias": "#alias2:matrix.org", "room_id": "!eGvUQuTCkHGVwNMOjv:matrix.org", "name": "Your room name here", "sender": "@foobar:matrix.org", "user_id": "@bar:matrix.org" } ], "next_token": 2, "total": 4 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more reports to paginate through. **URL parameters:** * `limit`: integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. * `from`: integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. * `dir`: string - Direction of event report order. Whether to fetch the most recent first (`b`) or the oldest first (`f`). Defaults to `b`. * `user_id`: string - Is optional and filters to only return users with user IDs that contain this value. This is the user who reported the event and wrote the reason. * `room_id`: string - Is optional and filters to only return rooms with room IDs that contain this value. **Response** The following fields are returned in the JSON response body: * `id`: integer - ID of event report. * `received_ts`: integer - The timestamp (in milliseconds since the unix epoch) when this report was sent. * `room_id`: string - The ID of the room in which the event being reported is located. * `name`: string - The name of the room. * `event_id`: string - The ID of the reported event. * `user_id`: string - This is the user who reported the event and wrote the reason. * `reason`: string - Comment made by the `user_id` in this report. May be blank or `null`. * `score`: integer - Content is reported based upon a negative score, where -100 is "most offensive" and 0 is "inoffensive". May be `null`. * `sender`: string - This is the ID of the user who sent the original message/event that was reported. * `canonical_alias`: string - The canonical alias of the room. `null` if the room does not have a canonical alias set. * `next_token`: integer - Indication for pagination. See above. * `total`: integer - Total number of event reports related to the query (`user_id` and `room_id`). # Show details of a specific event report This API returns information about a specific event report. The api is: ``` GET /_synapse/admin/v1/event_reports/ ``` It returns a JSON body like the following: ```json { "event_id": "$bNUFCwGzWca1meCGkjp-zwslF-GfVcXukvRLI1_FaVY", "event_json": { "auth_events": [ "$YK4arsKKcc0LRoe700pS8DSjOvUT4NDv0HfInlMFw2M", "$oggsNXxzPFRE3y53SUNd7nsj69-QzKv03a1RucHu-ws" ], "content": { "body": "matrix.org: This Week in Matrix", "format": "org.matrix.custom.html", "formatted_body": "matrix.org:
This Week in Matrix", "msgtype": "m.notice" }, "depth": 546, "hashes": { "sha256": "xK1//xnmvHJIOvbgXlkI8eEqdvoMmihVDJ9J4SNlsAw" }, "origin": "matrix.org", "origin_server_ts": 1592291711430, "prev_events": [ "$YK4arsKKcc0LRoe700pS8DSjOvUT4NDv0HfInlMFw2M" ], "prev_state": [], "room_id": "!ERAgBpSOcCCuTJqQPk:matrix.org", "sender": "@foobar:matrix.org", "signatures": { "matrix.org": { "ed25519:a_JaEG": "cs+OUKW/iHx5pEidbWxh0UiNNHwe46Ai9LwNz+Ah16aWDNszVIe2gaAcVZfvNsBhakQTew51tlKmL2kspXk/Dg" } }, "type": "m.room.message", "unsigned": { "age_ts": 1592291711430 } }, "id": , "reason": "foo", "score": -100, "received_ts": 1570897107409, "canonical_alias": "#alias1:matrix.org", "room_id": "!ERAgBpSOcCCuTJqQPk:matrix.org", "name": "Matrix HQ", "sender": "@foobar:matrix.org", "user_id": "@foo:matrix.org" } ``` **URL parameters:** * `report_id`: string - The ID of the event report. **Response** The following fields are returned in the JSON response body: * `id`: integer - ID of event report. * `received_ts`: integer - The timestamp (in milliseconds since the unix epoch) when this report was sent. * `room_id`: string - The ID of the room in which the event being reported is located. * `name`: string - The name of the room. * `event_id`: string - The ID of the reported event. * `user_id`: string - This is the user who reported the event and wrote the reason. * `reason`: string - Comment made by the `user_id` in this report. May be blank. * `score`: integer - Content is reported based upon a negative score, where -100 is "most offensive" and 0 is "inoffensive". * `sender`: string - This is the ID of the user who sent the original message/event that was reported. * `canonical_alias`: string - The canonical alias of the room. `null` if the room does not have a canonical alias set. * `event_json`: object - Details of the original event that was reported. # Delete a specific event report This API deletes a specific event report. If the request is successful, the response body will be an empty JSON object. The api is: ``` DELETE /_synapse/admin/v1/event_reports/ ``` **URL parameters:** * `report_id`: string - The ID of the event report. synapse-1.100.0/docs/admin_api/experimental_features.md000066400000000000000000000031141455622526000231270ustar00rootroot00000000000000# Experimental Features API This API allows a server administrator to enable or disable some experimental features on a per-user basis. The currently supported features are: - [MSC3026](https://github.com/matrix-org/matrix-spec-proposals/pull/3026): busy presence state enabled - [MSC3881](https://github.com/matrix-org/matrix-spec-proposals/pull/3881): enable remotely toggling push notifications for another client - [MSC3967](https://github.com/matrix-org/matrix-spec-proposals/pull/3967): do not require UIA when first uploading cross-signing keys. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). ## Enabling/Disabling Features This API allows a server administrator to enable experimental features for a given user. The request must provide a body containing the user id and listing the features to enable/disable in the following format: ```json { "features": { "msc3026":true, "msc3881":true } } ``` where true is used to enable the feature, and false is used to disable the feature. The API is: ``` PUT /_synapse/admin/v1/experimental_features/ ``` ## Listing Enabled Features To list which features are enabled/disabled for a given user send a request to the following API: ``` GET /_synapse/admin/v1/experimental_features/ ``` It will return a list of possible features and indicate whether they are enabled or disabled for the user like so: ```json { "features": { "msc3026": true, "msc3881": false, "msc3967": false } } ```synapse-1.100.0/docs/admin_api/media_admin_api.md000066400000000000000000000157231455622526000216250ustar00rootroot00000000000000# Querying media These APIs allow extracting media information from the homeserver. Details about the format of the `media_id` and storage of the media in the file system are documented under [media repository](../media_repository.md). To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). ## List all media in a room This API gets a list of known media in a room. However, it only shows media from unencrypted events or rooms. The API is: ``` GET /_synapse/admin/v1/room//media ``` The API returns a JSON body like the following: ```json { "local": [ "mxc://localhost/xwvutsrqponmlkjihgfedcba", "mxc://localhost/abcdefghijklmnopqrstuvwx" ], "remote": [ "mxc://matrix.org/xwvutsrqponmlkjihgfedcba", "mxc://matrix.org/abcdefghijklmnopqrstuvwx" ] } ``` ## List all media uploaded by a user Listing all media that has been uploaded by a local user can be achieved through the use of the [List media uploaded by a user](user_admin_api.md#list-media-uploaded-by-a-user) Admin API. # Quarantine media Quarantining media means that it is marked as inaccessible by users. It applies to any local media, and any locally-cached copies of remote media. The media file itself (and any thumbnails) is not deleted from the server. ## Quarantining media by ID This API quarantines a single piece of local or remote media. Request: ``` POST /_synapse/admin/v1/media/quarantine// {} ``` Where `server_name` is in the form of `example.org`, and `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` ## Remove media from quarantine by ID This API removes a single piece of local or remote media from quarantine. Request: ``` POST /_synapse/admin/v1/media/unquarantine// {} ``` Where `server_name` is in the form of `example.org`, and `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` ## Quarantining media in a room This API quarantines all local and remote media in a room. Request: ``` POST /_synapse/admin/v1/room//media/quarantine {} ``` Where `room_id` is in the form of `!roomid12345:example.org`. Response: ```json { "num_quarantined": 10 } ``` The following fields are returned in the JSON response body: * `num_quarantined`: integer - The number of media items successfully quarantined Note that there is a legacy endpoint, `POST /_synapse/admin/v1/quarantine_media/`, that operates the same. However, it is deprecated and may be removed in a future release. ## Quarantining all media of a user This API quarantines all *local* media that a *local* user has uploaded. That is to say, if you would like to quarantine media uploaded by a user on a remote homeserver, you should instead use one of the other APIs. Request: ``` POST /_synapse/admin/v1/user//media/quarantine {} ``` URL Parameters * `user_id`: string - User ID in the form of `@bob:example.org` Response: ```json { "num_quarantined": 10 } ``` The following fields are returned in the JSON response body: * `num_quarantined`: integer - The number of media items successfully quarantined ## Protecting media from being quarantined This API protects a single piece of local media from being quarantined using the above APIs. This is useful for sticker packs and other shared media which you do not want to get quarantined, especially when [quarantining media in a room](#quarantining-media-in-a-room). Request: ``` POST /_synapse/admin/v1/media/protect/ {} ``` Where `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` ## Unprotecting media from being quarantined This API reverts the protection of a media. Request: ``` POST /_synapse/admin/v1/media/unprotect/ {} ``` Where `media_id` is in the form of `abcdefg12345...`. Response: ```json {} ``` # Delete local media This API deletes the *local* media from the disk of your own server. This includes any local thumbnails and copies of media downloaded from remote homeservers. This API will not affect media that has been uploaded to external media repositories (e.g https://github.com/turt2live/matrix-media-repo/). See also [Purge Remote Media API](#purge-remote-media-api). ## Delete a specific local media Delete a specific `media_id`. Request: ``` DELETE /_synapse/admin/v1/media// {} ``` URL Parameters * `server_name`: string - The name of your local server (e.g `matrix.org`) * `media_id`: string - The ID of the media (e.g `abcdefghijklmnopqrstuvwx`) Response: ```json { "deleted_media": [ "abcdefghijklmnopqrstuvwx" ], "total": 1 } ``` The following fields are returned in the JSON response body: * `deleted_media`: an array of strings - List of deleted `media_id` * `total`: integer - Total number of deleted `media_id` ## Delete local media by date or size Request: ``` POST /_synapse/admin/v1/media/delete?before_ts= {} ``` *Deprecated in Synapse v1.78.0:* This API is available at the deprecated endpoint: ``` POST /_synapse/admin/v1/media//delete?before_ts= {} ``` URL Parameters * `server_name`: string - The name of your local server (e.g `matrix.org`). *Deprecated in Synapse v1.78.0.* * `before_ts`: string representing a positive integer - Unix timestamp in milliseconds. Files that were last used before this timestamp will be deleted. It is the timestamp of last access, not the timestamp when the file was created. * `size_gt`: Optional - string representing a positive integer - Size of the media in bytes. Files that are larger will be deleted. Defaults to `0`. * `keep_profiles`: Optional - string representing a boolean - Switch to also delete files that are still used in image data (e.g user profile, room avatar). If `false` these files will be deleted. Defaults to `true`. Response: ```json { "deleted_media": [ "abcdefghijklmnopqrstuvwx", "abcdefghijklmnopqrstuvwz" ], "total": 2 } ``` The following fields are returned in the JSON response body: * `deleted_media`: an array of strings - List of deleted `media_id` * `total`: integer - Total number of deleted `media_id` ## Delete media uploaded by a user You can find details of how to delete multiple media uploaded by a user in [User Admin API](user_admin_api.md#delete-media-uploaded-by-a-user). # Purge Remote Media API The purge remote media API allows server admins to purge old cached remote media. The API is: ``` POST /_synapse/admin/v1/purge_media_cache?before_ts= {} ``` URL Parameters * `before_ts`: string representing a positive integer - Unix timestamp in milliseconds. All cached media that was last accessed before this timestamp will be removed. Response: ```json { "deleted": 10 } ``` The following fields are returned in the JSON response body: * `deleted`: integer - The number of media items successfully deleted If the user re-requests purged remote media, synapse will re-request the media from the originating server. synapse-1.100.0/docs/admin_api/purge_history_api.md000066400000000000000000000042071455622526000222740ustar00rootroot00000000000000# Purge History API The purge history API allows server admins to purge historic events from their database, reclaiming disk space. Depending on the amount of history being purged a call to the API may take several minutes or longer. During this period users will not be able to paginate further back in the room from the point being purged from. Note that Synapse requires at least one message in each room, so it will never delete the last message in a room. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). The API is: ``` POST /_synapse/admin/v1/purge_history/[/] ``` By default, events sent by local users are not deleted, as they may represent the only copies of this content in existence. (Events sent by remote users are deleted.) Room state data (such as joins, leaves, topic) is always preserved. To delete local message events as well, set `delete_local_events` in the body: ```json { "delete_local_events": true } ``` The caller must specify the point in the room to purge up to. This can be specified by including an event_id in the URI, or by setting a `purge_up_to_event_id` or `purge_up_to_ts` in the request body. If an event id is given, that event (and others at the same graph depth) will be retained. If `purge_up_to_ts` is given, it should be a timestamp since the unix epoch, in milliseconds. The API starts the purge running, and returns immediately with a JSON body with a purge id: ```json { "purge_id": "" } ``` ## Purge status query It is possible to poll for updates on recent purges with a second API; ``` GET /_synapse/admin/v1/purge_history_status/ ``` This API returns a JSON body like the following: ```json { "status": "active" } ``` The status will be one of `active`, `complete`, or `failed`. If `status` is `failed` there will be a string `error` with the error message. ## Reclaim disk space (Postgres) To reclaim the disk space and return it to the operating system, you need to run `VACUUM FULL;` on the database. synapse-1.100.0/docs/admin_api/register_api.md000066400000000000000000000051211455622526000212110ustar00rootroot00000000000000# Shared-Secret Registration **Note:** This API is disabled when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) This API allows for the creation of users in an administrative and non-interactive way. This is generally used for bootstrapping a Synapse instance with administrator accounts. To authenticate yourself to the server, you will need both the shared secret ([`registration_shared_secret`](../usage/configuration/config_documentation.md#registration_shared_secret) in the homeserver configuration), and a one-time nonce. If the registration shared secret is not configured, this API is not enabled. To fetch the nonce, you need to request one from the API: ``` > GET /_synapse/admin/v1/register < {"nonce": "thisisanonce"} ``` Once you have the nonce, you can make a `POST` to the same URL with a JSON body containing the nonce, username, password, whether they are an admin (optional, False by default), and a HMAC digest of the content. Also you can set the displayname (optional, `username` by default). As an example: ``` > POST /_synapse/admin/v1/register > { "nonce": "thisisanonce", "username": "pepper_roni", "displayname": "Pepper Roni", "password": "pizza", "admin": true, "mac": "mac_digest_here" } < { "access_token": "token_here", "user_id": "@pepper_roni:localhost", "home_server": "test", "device_id": "device_id_here" } ``` The MAC is the hex digest output of the HMAC-SHA1 algorithm, with the key being the shared secret and the content being the nonce, user, password, either the string "admin" or "notadmin", and optionally the user_type each separated by NULs. Here is an easy way to generate the HMAC digest if you have Bash and OpenSSL: ```bash # Update these values and then paste this code block into a bash terminal nonce='thisisanonce' username='pepper_roni' password='pizza' admin='admin' secret='shared_secret' printf '%s\0%s\0%s\0%s' "$nonce" "$username" "$password" "$admin" | openssl sha1 -hmac "$secret" | awk '{print $2}' ``` For an example of generation in Python: ```python import hmac, hashlib def generate_mac(nonce, user, password, admin=False, user_type=None): mac = hmac.new( key=shared_secret, digestmod=hashlib.sha1, ) mac.update(nonce.encode('utf8')) mac.update(b"\x00") mac.update(user.encode('utf8')) mac.update(b"\x00") mac.update(password.encode('utf8')) mac.update(b"\x00") mac.update(b"admin" if admin else b"notadmin") if user_type: mac.update(b"\x00") mac.update(user_type.encode('utf8')) return mac.hexdigest() ``` synapse-1.100.0/docs/admin_api/room_membership.md000066400000000000000000000015001455622526000217200ustar00rootroot00000000000000# Edit Room Membership API This API allows an administrator to join an user account with a given `user_id` to a room with a given `room_id_or_alias`. You can only modify the membership of local users. The server administrator must be in the room and have permission to invite users. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). ## Parameters The following parameters are available: * `user_id` - Fully qualified user: for example, `@user:server.com`. * `room_id_or_alias` - The room identifier or alias to join: for example, `!636q39766251:server.com`. ## Usage ``` POST /_synapse/admin/v1/join/ { "user_id": "@user:server.com" } ``` Response: ```json { "room_id": "!636q39766251:server.com" } ``` synapse-1.100.0/docs/admin_api/rooms.md000066400000000000000000001051531455622526000177010ustar00rootroot00000000000000# List Room API The List Room admin API allows server admins to get a list of rooms on their server. There are various parameters available that allow for filtering and sorting the returned list. This API supports pagination. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). **Parameters** The following query parameters are available: * `from` - Offset in the returned list. Defaults to `0`. * `limit` - Maximum amount of rooms to return. Defaults to `100`. * `order_by` - The method in which to sort the returned list of rooms. Valid values are: - `alphabetical` - Same as `name`. This is deprecated. - `size` - Same as `joined_members`. This is deprecated. - `name` - Rooms are ordered alphabetically by room name. This is the default. - `canonical_alias` - Rooms are ordered alphabetically by main alias address of the room. - `joined_members` - Rooms are ordered by the number of members. Largest to smallest. - `joined_local_members` - Rooms are ordered by the number of local members. Largest to smallest. - `version` - Rooms are ordered by room version. Largest to smallest. - `creator` - Rooms are ordered alphabetically by creator of the room. - `encryption` - Rooms are ordered alphabetically by the end-to-end encryption algorithm. - `federatable` - Rooms are ordered by whether the room is federatable. - `public` - Rooms are ordered by visibility in room list. - `join_rules` - Rooms are ordered alphabetically by join rules of the room. - `guest_access` - Rooms are ordered alphabetically by guest access option of the room. - `history_visibility` - Rooms are ordered alphabetically by visibility of history of the room. - `state_events` - Rooms are ordered by number of state events. Largest to smallest. * `dir` - Direction of room order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. * `search_term` - Filter rooms by their room name, canonical alias and room id. Specifically, rooms are selected if the search term is contained in - the room's name, - the local part of the room's canonical alias, or - the complete (local and server part) room's id (case sensitive). Defaults to no filtering. **Response** The following fields are possible in the JSON response body: * `rooms` - An array of objects, each containing information about a room. - Room objects contain the following fields: - `room_id` - The ID of the room. - `name` - The name of the room. - `canonical_alias` - The canonical (main) alias address of the room. - `joined_members` - How many users are currently in the room. - `joined_local_members` - How many local users are currently in the room. - `version` - The version of the room as a string. - `creator` - The `user_id` of the room creator. - `encryption` - Algorithm of end-to-end encryption of messages. Is `null` if encryption is not active. - `federatable` - Whether users on other servers can join this room. - `public` - Whether the room is visible in room directory. - `join_rules` - The type of rules used for users wishing to join this room. One of: ["public", "knock", "invite", "private"]. - `guest_access` - Whether guests can join the room. One of: ["can_join", "forbidden"]. - `history_visibility` - Who can see the room history. One of: ["invited", "joined", "shared", "world_readable"]. - `state_events` - Total number of state_events of a room. Complexity of the room. - `room_type` - The type of the room taken from the room's creation event; for example "m.space" if the room is a space. If the room does not define a type, the value will be `null`. * `offset` - The current pagination offset in rooms. This parameter should be used instead of `next_token` for room offset as `next_token` is not intended to be parsed. * `total_rooms` - The total number of rooms this query can return. Using this and `offset`, you have enough information to know the current progression through the list. * `next_batch` - If this field is present, we know that there are potentially more rooms on the server that did not all fit into this response. We can use `next_batch` to get the "next page" of results. To do so, simply repeat your request, setting the `from` parameter to the value of `next_batch`. * `prev_batch` - If this field is present, it is possible to paginate backwards. Use `prev_batch` for the `from` value in the next request to get the "previous page" of results. The API is: A standard request with no filtering: ``` GET /_synapse/admin/v1/rooms ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!OGEhHVWSdvArJzumhm:matrix.org", "name": "Matrix HQ", "canonical_alias": "#matrix:matrix.org", "joined_members": 8326, "joined_local_members": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534, "room_type": "m.space" }, ... (8 hidden items) ... { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "name": "This Week In Matrix (TWIM)", "canonical_alias": "#twim:matrix.org", "joined_members": 314, "joined_local_members": 20, "version": "4", "creator": "@foo:matrix.org", "encryption": "m.megolm.v1.aes-sha2", "federatable": true, "public": false, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8345, "room_type": null } ], "offset": 0, "total_rooms": 10 } ``` Filtering by room name: ``` GET /_synapse/admin/v1/rooms?search_term=TWIM ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "name": "This Week In Matrix (TWIM)", "canonical_alias": "#twim:matrix.org", "joined_members": 314, "joined_local_members": 20, "version": "4", "creator": "@foo:matrix.org", "encryption": "m.megolm.v1.aes-sha2", "federatable": true, "public": false, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8, "room_type": null } ], "offset": 0, "total_rooms": 1 } ``` Paginating through a list of rooms: ``` GET /_synapse/admin/v1/rooms?order_by=size ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!OGEhHVWSdvArJzumhm:matrix.org", "name": "Matrix HQ", "canonical_alias": "#matrix:matrix.org", "joined_members": 8326, "joined_local_members": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534, "room_type": null }, ... (98 hidden items) ... { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "name": "This Week In Matrix (TWIM)", "canonical_alias": "#twim:matrix.org", "joined_members": 314, "joined_local_members": 20, "version": "4", "creator": "@foo:matrix.org", "encryption": "m.megolm.v1.aes-sha2", "federatable": true, "public": false, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8345, "room_type": "m.space" } ], "offset": 0, "total_rooms": 150, "next_token": 100 } ``` The presence of the `next_token` parameter tells us that there are more rooms than returned in this request, and we need to make another request to get them. To get the next batch of room results, we repeat our request, setting the `from` parameter to the value of `next_token`. ``` GET /_synapse/admin/v1/rooms?order_by=size&from=100 ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!mscvqgqpHYjBGDxNym:matrix.org", "name": "Music Theory", "canonical_alias": "#musictheory:matrix.org", "joined_members": 127, "joined_local_members": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534, "room_type": "m.space" }, ... (48 hidden items) ... { "room_id": "!twcBhHVdZlQWuuxBhN:termina.org.uk", "name": "weechat-matrix", "canonical_alias": "#weechat-matrix:termina.org.uk", "joined_members": 137, "joined_local_members": 20, "version": "4", "creator": "@foo:termina.org.uk", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 8345, "room_type": null } ], "offset": 100, "prev_batch": 0, "total_rooms": 150 } ``` Once the `next_token` parameter is no longer present, we know we've reached the end of the list. # Room Details API The Room Details admin API allows server admins to get all details of a room. The following fields are possible in the JSON response body: * `room_id` - The ID of the room. * `name` - The name of the room. * `topic` - The topic of the room. * `avatar` - The `mxc` URI to the avatar of the room. * `canonical_alias` - The canonical (main) alias address of the room. * `joined_members` - How many users are currently in the room. * `joined_local_members` - How many local users are currently in the room. * `joined_local_devices` - How many local devices are currently in the room. * `version` - The version of the room as a string. * `creator` - The `user_id` of the room creator. * `encryption` - Algorithm of end-to-end encryption of messages. Is `null` if encryption is not active. * `federatable` - Whether users on other servers can join this room. * `public` - Whether the room is visible in room directory. * `join_rules` - The type of rules used for users wishing to join this room. One of: ["public", "knock", "invite", "private"]. * `guest_access` - Whether guests can join the room. One of: ["can_join", "forbidden"]. * `history_visibility` - Who can see the room history. One of: ["invited", "joined", "shared", "world_readable"]. * `state_events` - Total number of state_events of a room. Complexity of the room. * `room_type` - The type of the room taken from the room's creation event; for example "m.space" if the room is a space. If the room does not define a type, the value will be `null`. * `forgotten` - Whether all local users have [forgotten](https://spec.matrix.org/latest/client-server-api/#leaving-rooms) the room. The API is: ``` GET /_synapse/admin/v1/rooms/ ``` A response body like the following is returned: ```json { "room_id": "!mscvqgqpHYjBGDxNym:matrix.org", "name": "Music Theory", "avatar": "mxc://matrix.org/AQDaVFlbkQoErdOgqWRgiGSV", "topic": "Theory, Composition, Notation, Analysis", "canonical_alias": "#musictheory:matrix.org", "joined_members": 127, "joined_local_members": 2, "joined_local_devices": 2, "version": "1", "creator": "@foo:matrix.org", "encryption": null, "federatable": true, "public": true, "join_rules": "invite", "guest_access": null, "history_visibility": "shared", "state_events": 93534, "room_type": "m.space", "forgotten": false } ``` _Changed in Synapse 1.66:_ Added the `forgotten` key to the response body. # Room Members API The Room Members admin API allows server admins to get a list of all members of a room. The response includes the following fields: * `members` - A list of all the members that are present in the room, represented by their ids. * `total` - Total number of members in the room. The API is: ``` GET /_synapse/admin/v1/rooms//members ``` A response body like the following is returned: ```json { "members": [ "@foo:matrix.org", "@bar:matrix.org", "@foobar:matrix.org" ], "total": 3 } ``` # Room State API The Room State admin API allows server admins to get a list of all state events in a room. The response includes the following fields: * `state` - The current state of the room at the time of request. The API is: ``` GET /_synapse/admin/v1/rooms//state ``` A response body like the following is returned: ```json { "state": [ {"type": "m.room.create", "state_key": "", "etc": true}, {"type": "m.room.power_levels", "state_key": "", "etc": true}, {"type": "m.room.name", "state_key": "", "etc": true} ] } ``` # Room Messages API The Room Messages admin API allows server admins to get all messages sent to a room in a given timeframe. There are various parameters available that allow for filtering and ordering the returned list. This API supports pagination. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). This endpoint mirrors the [Matrix Spec defined Messages API](https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3roomsroomidmessages). The API is: ``` GET /_synapse/admin/v1/rooms//messages ``` **Parameters** The following path parameters are required: * `room_id` - The ID of the room you wish you fetch messages from. The following query parameters are available: * `from` (required) - The token to start returning events from. This token can be obtained from a prev_batch or next_batch token returned by the /sync endpoint, or from an end token returned by a previous request to this endpoint. * `to` - The token to stop returning events at. * `limit` - The maximum number of events to return. Defaults to `10`. * `filter` - A JSON RoomEventFilter to filter returned events with. * `dir` - The direction to return events from. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. **Response** The following fields are possible in the JSON response body: * `chunk` - A list of room events. The order depends on the dir parameter. Note that an empty chunk does not necessarily imply that no more events are available. Clients should continue to paginate until no end property is returned. * `end` - A token corresponding to the end of chunk. This token can be passed back to this endpoint to request further events. If no further events are available, this property is omitted from the response. * `start` - A token corresponding to the start of chunk. * `state` - A list of state events relevant to showing the chunk. **Example** For more details on each chunk, read [the Matrix specification](https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3roomsroomidmessages). ```json { "chunk": [ { "content": { "body": "This is an example text message", "format": "org.matrix.custom.html", "formatted_body": "This is an example text message", "msgtype": "m.text" }, "event_id": "$143273582443PhrSn:example.org", "origin_server_ts": 1432735824653, "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "type": "m.room.message", "unsigned": { "age": 1234 } }, { "content": { "name": "The room name" }, "event_id": "$143273582443PhrSn:example.org", "origin_server_ts": 1432735824653, "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "state_key": "", "type": "m.room.name", "unsigned": { "age": 1234 } }, { "content": { "body": "Gangnam Style", "info": { "duration": 2140786, "h": 320, "mimetype": "video/mp4", "size": 1563685, "thumbnail_info": { "h": 300, "mimetype": "image/jpeg", "size": 46144, "w": 300 }, "thumbnail_url": "mxc://example.org/FHyPlCeYUSFFxlgbQYZmoEoe", "w": 480 }, "msgtype": "m.video", "url": "mxc://example.org/a526eYUSFFxlgbQYZmo442" }, "event_id": "$143273582443PhrSn:example.org", "origin_server_ts": 1432735824653, "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "type": "m.room.message", "unsigned": { "age": 1234 } } ], "end": "t47409-4357353_219380_26003_2265", "start": "t47429-4392820_219380_26003_2265" } ``` # Room Timestamp to Event API The Room Timestamp to Event API endpoint fetches the `event_id` of the closest event to the given timestamp (`ts` query parameter) in the given direction (`dir` query parameter). Useful for cases like jump to date so you can start paginating messages from a given date in the archive. The API is: ``` GET /_synapse/admin/v1/rooms//timestamp_to_event ``` **Parameters** The following path parameters are required: * `room_id` - The ID of the room you wish to check. The following query parameters are available: * `ts` - a timestamp in milliseconds where we will find the closest event in the given direction. * `dir` - can be `f` or `b` to indicate forwards and backwards in time from the given timestamp. Defaults to `f`. **Response** * `event_id` - The event ID closest to the given timestamp. * `origin_server_ts` - The timestamp of the event in milliseconds since the Unix epoch. # Block Room API The Block Room admin API allows server admins to block and unblock rooms, and query to see if a given room is blocked. This API can be used to pre-emptively block a room, even if it's unknown to this homeserver. Users will be prevented from joining a blocked room. ## Block or unblock a room The API is: ``` PUT /_synapse/admin/v1/rooms//block ``` with a body of: ```json { "block": true } ``` A response body like the following is returned: ```json { "block": true } ``` **Parameters** The following parameters should be set in the URL: - `room_id` - The ID of the room. The following JSON body parameters are available: - `block` - If `true` the room will be blocked and if `false` the room will be unblocked. **Response** The following fields are possible in the JSON response body: - `block` - A boolean. `true` if the room is blocked, otherwise `false` ## Get block status The API is: ``` GET /_synapse/admin/v1/rooms//block ``` A response body like the following is returned: ```json { "block": true, "user_id": "" } ``` **Parameters** The following parameters should be set in the URL: - `room_id` - The ID of the room. **Response** The following fields are possible in the JSON response body: - `block` - A boolean. `true` if the room is blocked, otherwise `false` - `user_id` - An optional string. If the room is blocked (`block` is `true`) shows the user who has add the room to blocking list. Otherwise it is not displayed. # Delete Room API The Delete Room admin API allows server admins to remove rooms from the server and block these rooms. Shuts down a room. Moves all local users and room aliases automatically to a new room if `new_room_user_id` is set. Otherwise local users only leave the room without any information. The new room will be created with the user specified by the `new_room_user_id` parameter as room administrator and will contain a message explaining what happened. Users invited to the new room will have power level `-10` by default, and thus be unable to speak. If `block` is `true`, users will be prevented from joining the old room. This option can in [Version 1](#version-1-old-version) also be used to pre-emptively block a room, even if it's unknown to this homeserver. In this case, the room will be blocked, and no further action will be taken. If `block` is `false`, attempting to delete an unknown room is invalid and will be rejected as a bad request. This API will remove all trace of the old room from your database after removing all local users. If `purge` is `true` (the default), all traces of the old room will be removed from your database after removing all local users. If you do not want this to happen, set `purge` to `false`. Depending on the amount of history being purged, a call to the API may take several minutes or longer. The local server will only have the power to move local user and room aliases to the new room. Users on other servers will be unaffected. ## Version 1 (old version) This version works synchronously. That means you only get the response once the server has finished the action, which may take a long time. If you request the same action a second time, and the server has not finished the first one, the second request will block. This is fixed in version 2 of this API. The parameters are the same in both APIs. This API will become deprecated in the future. The API is: ``` DELETE /_synapse/admin/v1/rooms/ ``` with a body of: ```json { "new_room_user_id": "@someuser:example.com", "room_name": "Content Violation Notification", "message": "Bad Room has been shutdown due to content violations on this server. Please review our Terms of Service.", "block": true, "purge": true } ``` A response body like the following is returned: ```json { "kicked_users": [ "@foobar:example.com" ], "failed_to_kick_users": [], "local_aliases": [ "#badroom:example.com", "#evilsaloon:example.com" ], "new_room_id": "!newroomid:example.com" } ``` The parameters and response values have the same format as [version 2](#version-2-new-version) of the API. ## Version 2 (new version) **Note**: This API is new, experimental and "subject to change". This version works asynchronously, meaning you get the response from server immediately while the server works on that task in background. You can then request the status of the action to check if it has completed. The API is: ``` DELETE /_synapse/admin/v2/rooms/ ``` with a body of: ```json { "new_room_user_id": "@someuser:example.com", "room_name": "Content Violation Notification", "message": "Bad Room has been shutdown due to content violations on this server. Please review our Terms of Service.", "block": true, "purge": true } ``` The API starts the shut down and purge running, and returns immediately with a JSON body with a purge id: ```json { "delete_id": "" } ``` **Parameters** The following parameters should be set in the URL: * `room_id` - The ID of the room. The following JSON body parameters are available: * `new_room_user_id` - Optional. If set, a new room will be created with this user ID as the creator and admin, and all users in the old room will be moved into that room. If not set, no new room will be created and the users will just be removed from the old room. The user ID must be on the local server, but does not necessarily have to belong to a registered user. * `room_name` - Optional. A string representing the name of the room that new users will be invited to. Defaults to `Content Violation Notification` * `message` - Optional. A string containing the first message that will be sent as `new_room_user_id` in the new room. Ideally this will clearly convey why the original room was shut down. Defaults to `Sharing illegal content on this server is not permitted and rooms in violation will be blocked.` * `block` - Optional. If set to `true`, this room will be added to a blocking list, preventing future attempts to join the room. Rooms can be blocked even if they're not yet known to the homeserver (only with [Version 1](#version-1-old-version) of the API). Defaults to `false`. * `purge` - Optional. If set to `true`, it will remove all traces of the room from your database. Defaults to `true`. * `force_purge` - Optional, and ignored unless `purge` is `true`. If set to `true`, it will force a purge to go ahead even if there are local users still in the room. Do not use this unless a regular `purge` operation fails, as it could leave those users' clients in a confused state. The JSON body must not be empty. The body must be at least `{}`. ## Status of deleting rooms **Note**: This API is new, experimental and "subject to change". It is possible to query the status of the background task for deleting rooms. The status can be queried up to 24 hours after completion of the task, or until Synapse is restarted (whichever happens first). ### Query by `room_id` With this API you can get the status of all active deletion tasks, and all those completed in the last 24h, for the given `room_id`. The API is: ``` GET /_synapse/admin/v2/rooms//delete_status ``` A response body like the following is returned: ```json { "results": [ { "delete_id": "delete_id1", "status": "failed", "error": "error message", "shutdown_room": { "kicked_users": [], "failed_to_kick_users": [], "local_aliases": [], "new_room_id": null } }, { "delete_id": "delete_id2", "status": "purging", "shutdown_room": { "kicked_users": [ "@foobar:example.com" ], "failed_to_kick_users": [], "local_aliases": [ "#badroom:example.com", "#evilsaloon:example.com" ], "new_room_id": "!newroomid:example.com" } } ] } ``` **Parameters** The following parameters should be set in the URL: * `room_id` - The ID of the room. ### Query by `delete_id` With this API you can get the status of one specific task by `delete_id`. The API is: ``` GET /_synapse/admin/v2/rooms/delete_status/ ``` A response body like the following is returned: ```json { "status": "purging", "shutdown_room": { "kicked_users": [ "@foobar:example.com" ], "failed_to_kick_users": [], "local_aliases": [ "#badroom:example.com", "#evilsaloon:example.com" ], "new_room_id": "!newroomid:example.com" } } ``` **Parameters** The following parameters should be set in the URL: * `delete_id` - The ID for this delete. ### Response The following fields are returned in the JSON response body: - `results` - An array of objects, each containing information about one task. This field is omitted from the result when you query by `delete_id`. Task objects contain the following fields: - `delete_id` - The ID for this purge if you query by `room_id`. - `status` - The status will be one of: - `shutting_down` - The process is removing users from the room. - `purging` - The process is purging the room and event data from database. - `complete` - The process has completed successfully. - `failed` - The process is aborted, an error has occurred. - `error` - A string that shows an error message if `status` is `failed`. Otherwise this field is hidden. - `shutdown_room` - An object containing information about the result of shutting down the room. *Note:* The result is shown after removing the room members. The delete process can still be running. Please pay attention to the `status`. - `kicked_users` - An array of users (`user_id`) that were kicked. - `failed_to_kick_users` - An array of users (`user_id`) that that were not kicked. - `local_aliases` - An array of strings representing the local aliases that were migrated from the old room to the new. - `new_room_id` - A string representing the room ID of the new room, or `null` if no such room was created. ## Undoing room deletions *Note*: This guide may be outdated by the time you read it. By nature of room deletions being performed at the database level, the structure can and does change without notice. First, it's important to understand that a room deletion is very destructive. Undoing a deletion is not as simple as pretending it never happened - work has to be done to move forward instead of resetting the past. In fact, in some cases it might not be possible to recover at all: * If the room was invite-only, your users will need to be re-invited. * If the room no longer has any members at all, it'll be impossible to rejoin. * The first user to rejoin will have to do so via an alias on a different server (or receive an invite from a user on a different server). With all that being said, if you still want to try and recover the room: 1. If the room was `block`ed, you must unblock it on your server. This can be accomplished as follows: 1. For safety reasons, shut down Synapse. 2. In the database, run `DELETE FROM blocked_rooms WHERE room_id = '!example:example.org';` * For caution: it's recommended to run this in a transaction: `BEGIN; DELETE ...;`, verify you got 1 result, then `COMMIT;`. * The room ID is the same one supplied to the delete room API, not the Content Violation room. 3. Restart Synapse. This step is unnecessary if `block` was not set. 2. Any room aliases on your server that pointed to the deleted room may have been deleted, or redirected to the Content Violation room. These will need to be restored manually. 3. Users on your server that were in the deleted room will have been kicked from the room. Consider whether you want to update their membership (possibly via the [Edit Room Membership API](room_membership.md)) or let them handle rejoining themselves. 4. If `new_room_user_id` was given, a 'Content Violation' will have been created. Consider whether you want to delete that roomm. # Make Room Admin API Grants another user the highest power available to a local user who is in the room. If the user is not in the room, and it is not publicly joinable, then invite the user. By default the server admin (the caller) is granted power, but another user can optionally be specified, e.g.: ``` POST /_synapse/admin/v1/rooms//make_room_admin { "user_id": "@foo:example.com" } ``` # Forward Extremities Admin API Enables querying and deleting forward extremities from rooms. When a lot of forward extremities accumulate in a room, performance can become degraded. For details, see [#1760](https://github.com/matrix-org/synapse/issues/1760). ## Check for forward extremities To check the status of forward extremities for a room: ``` GET /_synapse/admin/v1/rooms//forward_extremities ``` A response as follows will be returned: ```json { "count": 1, "results": [ { "event_id": "$M5SP266vsnxctfwFgFLNceaCo3ujhRtg_NiiHabcdefgh", "state_group": 439, "depth": 123, "received_ts": 1611263016761 } ] } ``` ## Deleting forward extremities **WARNING**: Please ensure you know what you're doing and have read the related issue [#1760](https://github.com/matrix-org/synapse/issues/1760). Under no situations should this API be executed as an automated maintenance task! If a room has lots of forward extremities, the extra can be deleted as follows: ``` DELETE /_synapse/admin/v1/rooms//forward_extremities ``` A response as follows will be returned, indicating the amount of forward extremities that were deleted. ```json { "deleted": 1 } ``` # Event Context API This API lets a client find the context of an event. This is designed primarily to investigate abuse reports. ``` GET /_synapse/admin/v1/rooms//context/ ``` This API mimmicks [GET /_matrix/client/r0/rooms/{roomId}/context/{eventId}](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-rooms-roomid-context-eventid). Please refer to the link for all details on parameters and reseponse. Example response: ```json { "end": "t29-57_2_0_2", "events_after": [ { "content": { "body": "This is an example text message", "msgtype": "m.text", "format": "org.matrix.custom.html", "formatted_body": "This is an example text message" }, "type": "m.room.message", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 } } ], "event": { "content": { "body": "filename.jpg", "info": { "h": 398, "w": 394, "mimetype": "image/jpeg", "size": 31037 }, "url": "mxc://example.org/JWEIFJgwEIhweiWJE", "msgtype": "m.image" }, "type": "m.room.message", "event_id": "$f3h4d129462ha:example.com", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 } }, "events_before": [ { "content": { "body": "something-important.doc", "filename": "something-important.doc", "info": { "mimetype": "application/msword", "size": 46144 }, "msgtype": "m.file", "url": "mxc://example.org/FHyPlCeYUSFFxlgbQYZmoEoe" }, "type": "m.room.message", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 } } ], "start": "t27-54_2_0_2", "state": [ { "content": { "creator": "@example:example.org", "room_version": "1", "m.federate": true, "predecessor": { "event_id": "$something:example.org", "room_id": "!oldroom:example.org" } }, "type": "m.room.create", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 }, "state_key": "" }, { "content": { "membership": "join", "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF", "displayname": "Alice Margatroid" }, "type": "m.room.member", "event_id": "$143273582443PhrSn:example.org", "room_id": "!636q39766251:example.com", "sender": "@example:example.org", "origin_server_ts": 1432735824653, "unsigned": { "age": 1234 }, "state_key": "@alice:example.org" } ] } ``` synapse-1.100.0/docs/admin_api/server_notices.md000066400000000000000000000021441455622526000215700ustar00rootroot00000000000000# Server Notices The API to send notices is as follows: ``` POST /_synapse/admin/v1/send_server_notice ``` or: ``` PUT /_synapse/admin/v1/send_server_notice/{txnId} ``` You will need to authenticate with an access token for an admin user. When using the `PUT` form, retransmissions with the same transaction ID will be ignored in the same way as with `PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}`. The request body should look something like the following: ```json { "user_id": "@target_user:server_name", "content": { "msgtype": "m.text", "body": "This is my message" } } ``` You can optionally include the following additional parameters: * `type`: the type of event. Defaults to `m.room.message`. * `state_key`: Setting this will result in a state event being sent. Once the notice has been sent, the API will return the following response: ```json { "event_id": "" } ``` Note that server notices must be enabled in `homeserver.yaml` before this API can be used. See [the server notices documentation](../server_notices.md) for more information. synapse-1.100.0/docs/admin_api/statistics.md000066400000000000000000000103451455622526000207320ustar00rootroot00000000000000# Users' media usage statistics Returns information about all local media usage of users. Gives the possibility to filter them by time and user. To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). The API is: ``` GET /_synapse/admin/v1/statistics/users/media ``` A response body like the following is returned: ```json { "users": [ { "displayname": "foo_user_0", "media_count": 2, "media_length": 134, "user_id": "@foo_user_0:test" }, { "displayname": "foo_user_1", "media_count": 2, "media_length": 134, "user_id": "@foo_user_1:test" } ], "next_token": 3, "total": 10 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more reports to paginate through. **Parameters** The following parameters should be set in the URL: * `limit`: string representing a positive integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. * `from`: string representing a positive integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. * `order_by` - string - The method in which to sort the returned list of users. Valid values are: - `user_id` - Users are ordered alphabetically by `user_id`. This is the default. - `displayname` - Users are ordered alphabetically by `displayname`. - `media_length` - Users are ordered by the total size of uploaded media in bytes. Smallest to largest. - `media_count` - Users are ordered by number of uploaded media. Smallest to largest. * `from_ts` - string representing a positive integer - Considers only files created at this timestamp or later. Unix timestamp in ms. * `until_ts` - string representing a positive integer - Considers only files created at this timestamp or earlier. Unix timestamp in ms. * `search_term` - string - Filter users by their user ID localpart **or** displayname. The search term can be found in any part of the string. Defaults to no filtering. * `dir` - string - Direction of order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. **Response** The following fields are returned in the JSON response body: * `users` - An array of objects, each containing information about the user and their local media. Objects contain the following fields: - `displayname` - string - Displayname of this user. - `media_count` - integer - Number of uploaded media by this user. - `media_length` - integer - Size of uploaded media in bytes by this user. - `user_id` - string - Fully-qualified user ID (ex. `@user:server.com`). * `next_token` - integer - Opaque value used for pagination. See above. * `total` - integer - Total number of users after filtering. # Get largest rooms by size in database Returns the 10 largest rooms and an estimate of how much space in the database they are taking. This does not include the size of any associated media associated with the room. Returns an error on SQLite. *Note:* This uses the planner statistics from PostgreSQL to do the estimates, which means that the returned information can vary widely from reality. However, it should be enough to get a rough idea of where database disk space is going. The API is: ``` GET /_synapse/admin/v1/statistics/database/rooms ``` A response body like the following is returned: ```json { "rooms": [ { "room_id": "!OGEhHVWSdvArJzumhm:matrix.org", "estimated_size": 47325417353 } ], } ``` **Response** The following fields are returned in the JSON response body: * `rooms` - An array of objects, sorted by largest room first. Objects contain the following fields: - `room_id` - string - The room ID. - `estimated_size` - integer - Estimated disk space used in bytes by the room in the database. *Added in Synapse 1.83.0* synapse-1.100.0/docs/admin_api/user_admin_api.md000066400000000000000000001212041455622526000215140ustar00rootroot00000000000000# User Admin API To use it, you will need to authenticate by providing an `access_token` for a server admin: see [Admin API](../usage/administration/admin_api/). ## Query User Account This API returns information about a specific user account. The api is: ``` GET /_synapse/admin/v2/users/ ``` It returns a JSON body like the following: ```jsonc { "name": "@user:example.com", "displayname": "User", // can be null if not set "threepids": [ { "medium": "email", "address": "", "added_at": 1586458409743, "validated_at": 1586458409743 }, { "medium": "email", "address": "", "added_at": 1586458409743, "validated_at": 1586458409743 } ], "avatar_url": "", // can be null if not set "is_guest": 0, "admin": 0, "deactivated": 0, "erased": false, "shadow_banned": 0, "creation_ts": 1560432506, "appservice_id": null, "consent_server_notice_sent": null, "consent_version": null, "consent_ts": null, "external_ids": [ { "auth_provider": "", "external_id": "" }, { "auth_provider": "", "external_id": "" } ], "user_type": null, "locked": false } ``` URL parameters: - `user_id`: fully-qualified user id: for example, `@user:server.com`. ## Create or modify account This API allows an administrator to create or modify a user account with a specific `user_id`. This api is: ``` PUT /_synapse/admin/v2/users/ ``` with a body of: ```json { "password": "user_password", "logout_devices": false, "displayname": "Alice Marigold", "avatar_url": "mxc://example.com/abcde12345", "threepids": [ { "medium": "email", "address": "alice@example.com" }, { "medium": "email", "address": "alice@domain.org" } ], "external_ids": [ { "auth_provider": "example", "external_id": "12345" }, { "auth_provider": "example2", "external_id": "abc54321" } ], "admin": false, "deactivated": false, "user_type": null, "locked": false } ``` Returns HTTP status code: - `201` - When a new user object was created. - `200` - When a user was modified. URL parameters: - `user_id` - A fully-qualified user id. For example, `@user:server.com`. Body parameters: - `password` - **string**, optional. If provided, the user's password is updated and all devices are logged out, unless `logout_devices` is set to `false`. - `logout_devices` - **bool**, optional, defaults to `true`. If set to `false`, devices aren't logged out even when `password` is provided. - `displayname` - **string**, optional. If set to an empty string (`""`), the user's display name will be removed. - `avatar_url` - **string**, optional. Must be a [MXC URI](https://matrix.org/docs/spec/client_server/r0.6.0#matrix-content-mxc-uris). If set to an empty string (`""`), the user's avatar is removed. - `threepids` - **array**, optional. If provided, the user's third-party IDs (email, msisdn) are entirely replaced with the given list. Each item in the array is an object with the following fields: - `medium` - **string**, required. The type of third-party ID, either `email` or `msisdn` (phone number). - `address` - **string**, required. The third-party ID itself, e.g. `alice@example.com` for `email` or `447470274584` (for a phone number with country code "44") and `19254857364` (for a phone number with country code "1") for `msisdn`. Note: If a threepid is removed from a user via this option, Synapse will also attempt to remove that threepid from any identity servers it is aware has a binding for it. - `external_ids` - **array**, optional. Allow setting the identifier of the external identity provider for SSO (Single sign-on). More details are in the configuration manual under the sections [sso](../usage/configuration/config_documentation.md#sso) and [oidc_providers](../usage/configuration/config_documentation.md#oidc_providers). - `auth_provider` - **string**, required. The unique, internal ID of the external identity provider. The same as `idp_id` from the homeserver configuration. Note that no error is raised if the provided value is not in the homeserver configuration. - `external_id` - **string**, required. An identifier for the user in the external identity provider. When the user logs in to the identity provider, this must be the unique ID that they map to. - `admin` - **bool**, optional, defaults to `false`. Whether the user is a homeserver administrator, granting them access to the Admin API, among other things. - `deactivated` - **bool**, optional. If unspecified, deactivation state will be left unchanged. Note: - For the password field there is no strict check of the necessity for its presence. It is possible to have active users without a password, e.g. when authenticating with OIDC is configured. You must check yourself whether a password is required when reactivating a user or not. - It is not possible to set a password if the config option `password_config.localdb_enabled` is set `false`. Users' passwords are wiped upon account deactivation, hence the need to set a new one here. Note: a user cannot be erased with this API. For more details on deactivating and erasing users see [Deactivate Account](#deactivate-account). - `locked` - **bool**, optional. If unspecified, locked state will be left unchanged. - `user_type` - **string** or null, optional. If not provided, the user type will be not be changed. If `null` is given, the user type will be cleared. Other allowed options are: `bot` and `support`. ## List Accounts This API returns all local user accounts. By default, the response is ordered by ascending user ID. ``` GET /_synapse/admin/v2/users?from=0&limit=10&guests=false ``` A response body like the following is returned: ```json { "users": [ { "name": "", "is_guest": 0, "admin": 0, "user_type": null, "deactivated": 0, "erased": false, "shadow_banned": 0, "displayname": "", "avatar_url": null, "creation_ts": 1560432668000, "locked": false }, { "name": "", "is_guest": 0, "admin": 1, "user_type": null, "deactivated": 0, "erased": false, "shadow_banned": 0, "displayname": "", "avatar_url": "", "creation_ts": 1561550621000, "locked": false } ], "next_token": "100", "total": 200 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more users to paginate through. **Parameters** The following parameters should be set in the URL: - `user_id` - Is optional and filters to only return users with user IDs that contain this value. This parameter is ignored when using the `name` parameter. - `name` - Is optional and filters to only return users with user ID localparts **or** displaynames that contain this value. - `guests` - string representing a bool - Is optional and if `false` will **exclude** guest users. Defaults to `true` to include guest users. This parameter is not supported when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) - `admins` - Optional flag to filter admins. If `true`, only admins are queried. If `false`, admins are excluded from the query. When the flag is absent (the default), **both** admins and non-admins are included in the search results. - `deactivated` - string representing a bool - Is optional and if `true` will **include** deactivated users. Defaults to `false` to exclude deactivated users. - `limit` - string representing a positive integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. - `from` - string representing a positive integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. - `order_by` - The method by which to sort the returned list of users. If the ordered field has duplicates, the second order is always by ascending `name`, which guarantees a stable ordering. Valid values are: - `name` - Users are ordered alphabetically by `name`. This is the default. - `is_guest` - Users are ordered by `is_guest` status. - `admin` - Users are ordered by `admin` status. - `user_type` - Users are ordered alphabetically by `user_type`. - `deactivated` - Users are ordered by `deactivated` status. - `shadow_banned` - Users are ordered by `shadow_banned` status. - `displayname` - Users are ordered alphabetically by `displayname`. - `avatar_url` - Users are ordered alphabetically by avatar URL. - `creation_ts` - Users are ordered by when the users was created in ms. - `last_seen_ts` - Users are ordered by when the user was lastly seen in ms. - `dir` - Direction of media order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. - `not_user_type` - Exclude certain user types, such as bot users, from the request. Can be provided multiple times. Possible values are `bot`, `support` or "empty string". "empty string" here means to exclude users without a type. - `locked` - string representing a bool - Is optional and if `true` will **include** locked users. Defaults to `false` to exclude locked users. Note: Introduced in v1.93. Caution. The database only has indexes on the columns `name` and `creation_ts`. This means that if a different sort order is used (`is_guest`, `admin`, `user_type`, `deactivated`, `shadow_banned`, `avatar_url` or `displayname`), this can cause a large load on the database, especially for large environments. **Response** The following fields are returned in the JSON response body: - `users` - An array of objects, each containing information about an user. User objects contain the following fields: - `name` - string - Fully-qualified user ID (ex. `@user:server.com`). - `is_guest` - bool - Status if that user is a guest account. - `admin` - bool - Status if that user is a server administrator. - `user_type` - string - Type of the user. Normal users are type `None`. This allows user type specific behaviour. There are also types `support` and `bot`. - `deactivated` - bool - Status if that user has been marked as deactivated. - `erased` - bool - Status if that user has been marked as erased. - `shadow_banned` - bool - Status if that user has been marked as shadow banned. - `displayname` - string - The user's display name if they have set one. - `avatar_url` - string - The user's avatar URL if they have set one. - `creation_ts` - integer - The user's creation timestamp in ms. - `last_seen_ts` - integer - The user's last activity timestamp in ms. - `locked` - bool - Status if that user has been marked as locked. Note: Introduced in v1.93. - `next_token`: string representing a positive integer - Indication for pagination. See above. - `total` - integer - Total number of media. *Added in Synapse 1.93:* the `locked` query parameter and response field. ## Query current sessions for a user This API returns information about the active sessions for a specific user. The endpoints are: ``` GET /_synapse/admin/v1/whois/ ``` and: ``` GET /_matrix/client/r0/admin/whois/ ``` See also: [Client Server API Whois](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-admin-whois-userid). It returns a JSON body like the following: ```json { "user_id": "", "devices": { "": { "sessions": [ { "connections": [ { "ip": "1.2.3.4", "last_seen": 1417222374433, "user_agent": "Mozilla/5.0 ..." }, { "ip": "1.2.3.10", "last_seen": 1417222374500, "user_agent": "Dalvik/2.1.0 ..." } ] } ] } } } ``` `last_seen` is measured in milliseconds since the Unix epoch. ## Deactivate Account This API deactivates an account. It removes active access tokens, resets the password, and deletes third-party IDs (to prevent the user requesting a password reset). It can also mark the user as GDPR-erased. This means messages sent by the user will still be visible by anyone that was in the room when these messages were sent, but hidden from users joining the room afterwards. The api is: ``` POST /_synapse/admin/v1/deactivate/ ``` with a body of: ```json { "erase": true } ``` The erase parameter is optional and defaults to `false`. An empty body may be passed for backwards compatibility. The following actions are performed when deactivating an user: - Try to unbind 3PIDs from the identity server - Remove all 3PIDs from the homeserver - Delete all devices and E2EE keys - Delete all access tokens - Delete all pushers - Delete the password hash - Removal from all rooms the user is a member of - Remove the user from the user directory - Reject all pending invites - Remove all account validity information related to the user - Remove the arbitrary data store known as *account data*. For example, this includes: - list of ignored users; - push rules; - secret storage keys; and - cross-signing keys. The following additional actions are performed during deactivation if `erase` is set to `true`: - Remove the user's display name - Remove the user's avatar URL - Mark the user as erased The following actions are **NOT** performed. The list may be incomplete. - Remove mappings of SSO IDs - [Delete media uploaded](#delete-media-uploaded-by-a-user) by user (included avatar images) - Delete sent and received messages - Remove the user's creation (registration) timestamp - [Remove rate limit overrides](#override-ratelimiting-for-users) - Remove from monthly active users - Remove user's consent information (consent version and timestamp) ## Reset password **Note:** This API is disabled when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) Changes the password of another user. This will automatically log the user out of all their devices. The api is: ``` POST /_synapse/admin/v1/reset_password/ ``` with a body of: ```json { "new_password": "", "logout_devices": true } ``` The parameter `new_password` is required. The parameter `logout_devices` is optional and defaults to `true`. ## Get whether a user is a server administrator or not **Note:** This API is disabled when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) The api is: ``` GET /_synapse/admin/v1/users//admin ``` A response body like the following is returned: ```json { "admin": true } ``` ## Change whether a user is a server administrator or not **Note:** This API is disabled when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) Note that you cannot demote yourself. The api is: ``` PUT /_synapse/admin/v1/users//admin ``` with a body of: ```json { "admin": true } ``` ## List room memberships of a user Gets a list of all `room_id` that a specific `user_id` is member. The API is: ``` GET /_synapse/admin/v1/users//joined_rooms ``` A response body like the following is returned: ```json { "joined_rooms": [ "!DuGcnbhHGaSZQoNQR:matrix.org", "!ZtSaPCawyWtxfWiIy:matrix.org" ], "total": 2 } ``` The server returns the list of rooms of which the user and the server are member. If the user is local, all the rooms of which the user is member are returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `joined_rooms` - An array of `room_id`. - `total` - Number of rooms. ## Account Data Gets information about account data for a specific `user_id`. The API is: ``` GET /_synapse/admin/v1/users//accountdata ``` A response body like the following is returned: ```json { "account_data": { "global": { "m.secret_storage.key.LmIGHTg5W": { "algorithm": "m.secret_storage.v1.aes-hmac-sha2", "iv": "fwjNZatxg==", "mac": "eWh9kNnLWZUNOgnc=" }, "im.vector.hide_profile": { "hide_profile": true }, "org.matrix.preview_urls": { "disable": false }, "im.vector.riot.breadcrumb_rooms": { "rooms": [ "!LxcBDAsDUVAfJDEo:matrix.org", "!MAhRxqasbItjOqxu:matrix.org" ] }, "m.accepted_terms": { "accepted": [ "https://example.org/somewhere/privacy-1.2-en.html", "https://example.org/somewhere/terms-2.0-en.html" ] }, "im.vector.setting.breadcrumbs": { "recent_rooms": [ "!MAhRxqasbItqxuEt:matrix.org", "!ZtSaPCawyWtxiImy:matrix.org" ] } }, "rooms": { "!GUdfZSHUJibpiVqHYd:matrix.org": { "m.fully_read": { "event_id": "$156334540fYIhZ:matrix.org" } }, "!tOZwOOiqwCYQkLhV:matrix.org": { "m.fully_read": { "event_id": "$xjsIyp4_NaVl2yPvIZs_k1Jl8tsC_Sp23wjqXPno" } } } } } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `account_data` - A map containing the account data for the user - `global` - A map containing the global account data for the user - `rooms` - A map containing the account data per room for the user ## User media ### List media uploaded by a user Gets a list of all local media that a specific `user_id` has created. These are media that the user has uploaded themselves ([local media](../media_repository.md#local-media)), as well as [URL preview images](../media_repository.md#url-previews) requested by the user if the [feature is enabled](../usage/configuration/config_documentation.md#url_preview_enabled). By default, the response is ordered by descending creation date and ascending media ID. The newest media is on top. You can change the order with parameters `order_by` and `dir`. The API is: ``` GET /_synapse/admin/v1/users//media ``` A response body like the following is returned: ```json { "media": [ { "created_ts": 100400, "last_access_ts": null, "media_id": "qXhyRzulkwLsNHTbpHreuEgo", "media_length": 67, "media_type": "image/png", "quarantined_by": null, "safe_from_quarantine": false, "upload_name": "test1.png" }, { "created_ts": 200400, "last_access_ts": null, "media_id": "FHfiSnzoINDatrXHQIXBtahw", "media_length": 67, "media_type": "image/png", "quarantined_by": null, "safe_from_quarantine": false, "upload_name": "test2.png" }, { "created_ts": 300400, "last_access_ts": 300700, "media_id": "BzYNLRUgGHphBkdKGbzXwbjX", "media_length": 1337, "media_type": "application/octet-stream", "quarantined_by": null, "safe_from_quarantine": false, "upload_name": null } ], "next_token": 3, "total": 2 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more reports to paginate through. **Parameters** The following parameters should be set in the URL: - `user_id` - string - fully qualified: for example, `@user:server.com`. - `limit`: string representing a positive integer - Is optional but is used for pagination, denoting the maximum number of items to return in this call. Defaults to `100`. - `from`: string representing a positive integer - Is optional but used for pagination, denoting the offset in the returned results. This should be treated as an opaque value and not explicitly set to anything other than the return value of `next_token` from a previous call. Defaults to `0`. - `order_by` - The method by which to sort the returned list of media. If the ordered field has duplicates, the second order is always by ascending `media_id`, which guarantees a stable ordering. Valid values are: - `media_id` - Media are ordered alphabetically by `media_id`. - `upload_name` - Media are ordered alphabetically by name the media was uploaded with. - `created_ts` - Media are ordered by when the content was uploaded in ms. Smallest to largest. This is the default. - `last_access_ts` - Media are ordered by when the content was last accessed in ms. Smallest to largest. - `media_length` - Media are ordered by length of the media in bytes. Smallest to largest. - `media_type` - Media are ordered alphabetically by MIME-type. - `quarantined_by` - Media are ordered alphabetically by the user ID that initiated the quarantine request for this media. - `safe_from_quarantine` - Media are ordered by the status if this media is safe from quarantining. - `dir` - Direction of media order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. If neither `order_by` nor `dir` is set, the default order is newest media on top (corresponds to `order_by` = `created_ts` and `dir` = `b`). Caution. The database only has indexes on the columns `media_id`, `user_id` and `created_ts`. This means that if a different sort order is used (`upload_name`, `last_access_ts`, `media_length`, `media_type`, `quarantined_by` or `safe_from_quarantine`), this can cause a large load on the database, especially for large environments. **Response** The following fields are returned in the JSON response body: - `media` - An array of objects, each containing information about a media. Media objects contain the following fields: - `created_ts` - integer - Timestamp when the content was uploaded in ms. - `last_access_ts` - integer or null - Timestamp when the content was last accessed in ms. Null if there was no access, yet. - `media_id` - string - The id used to refer to the media. Details about the format are documented under [media repository](../media_repository.md). - `media_length` - integer - Length of the media in bytes. - `media_type` - string - The MIME-type of the media. - `quarantined_by` - string or null - The user ID that initiated the quarantine request for this media. Null if not quarantined. - `safe_from_quarantine` - bool - Status if this media is safe from quarantining. - `upload_name` - string or null - The name the media was uploaded with. Null if not provided during upload. - `next_token`: integer - Indication for pagination. See above. - `total` - integer - Total number of media. ### Delete media uploaded by a user This API deletes the *local* media from the disk of your own server that a specific `user_id` has created. This includes any local thumbnails. This API will not affect media that has been uploaded to external media repositories (e.g https://github.com/turt2live/matrix-media-repo/). By default, the API deletes media ordered by descending creation date and ascending media ID. The newest media is deleted first. You can change the order with parameters `order_by` and `dir`. If no `limit` is set the API deletes `100` files per request. The API is: ``` DELETE /_synapse/admin/v1/users//media ``` A response body like the following is returned: ```json { "deleted_media": [ "abcdefghijklmnopqrstuvwx" ], "total": 1 } ``` The following fields are returned in the JSON response body: * `deleted_media`: an array of strings - List of deleted `media_id` * `total`: integer - Total number of deleted `media_id` **Note**: There is no `next_token`. This is not useful for deleting media, because after deleting media the remaining media have a new order. **Parameters** This API has the same parameters as [List media uploaded by a user](#list-media-uploaded-by-a-user). With the parameters you can for example limit the number of files to delete at once or delete largest/smallest or newest/oldest files first. ## Login as a user **Note:** This API is disabled when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) Get an access token that can be used to authenticate as that user. Useful for when admins wish to do actions on behalf of a user. The API is: ``` POST /_synapse/admin/v1/users//login {} ``` An optional `valid_until_ms` field can be specified in the request body as an integer timestamp that specifies when the token should expire. By default tokens do not expire. Note that this API does not allow a user to login as themselves (to create more tokens). A response body like the following is returned: ```json { "access_token": "" } ``` This API does *not* generate a new device for the user, and so will not appear their `/devices` list, and in general the target user should not be able to tell they have been logged in as. To expire the token call the standard `/logout` API with the token. Note: The token will expire if the *admin* user calls `/logout/all` from any of their devices, but the token will *not* expire if the target user does the same. ## Allow replacing master cross-signing key without User-Interactive Auth This endpoint is not intended for server administrator usage; we describe it here for completeness. This API temporarily permits a user to replace their master cross-signing key without going through [user-interactive authentication](https://spec.matrix.org/v1.8/client-server-api/#user-interactive-authentication-api) (UIA). This is useful when Synapse has delegated its authentication to the [Matrix Authentication Service](https://github.com/matrix-org/matrix-authentication-service/); as Synapse cannot perform UIA is not possible in these circumstances. The API is ```http request POST /_synapse/admin/v1/users//_allow_cross_signing_replacement_without_uia {} ``` If the user does not exist, or does exist but has no master cross-signing key, this will return with status code `404 Not Found`. Otherwise, a response body like the following is returned, with status `200 OK`: ```json { "updatable_without_uia_before_ms": 1234567890 } ``` The response body is a JSON object with a single field: - `updatable_without_uia_before_ms`: integer. The timestamp in milliseconds before which the user is permitted to replace their cross-signing key without going through UIA. _Added in Synapse 1.97.0._ ## User devices ### List all devices Gets information about all devices for a specific `user_id`. The API is: ``` GET /_synapse/admin/v2/users//devices ``` A response body like the following is returned: ```json { "devices": [ { "device_id": "QBUAZIFURK", "display_name": "android", "last_seen_ip": "1.2.3.4", "last_seen_user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0", "last_seen_ts": 1474491775024, "user_id": "" }, { "device_id": "AUIECTSRND", "display_name": "ios", "last_seen_ip": "1.2.3.5", "last_seen_user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0", "last_seen_ts": 1474491775025, "user_id": "" } ], "total": 2 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `devices` - An array of objects, each containing information about a device. Device objects contain the following fields: - `device_id` - Identifier of device. - `display_name` - Display name set by the user for this device. Absent if no name has been set. - `last_seen_ip` - The IP address where this device was last seen. (May be a few minutes out of date, for efficiency reasons). - `last_seen_user_agent` - The user agent of the device when it was last seen. (May be a few minutes out of date, for efficiency reasons). - `last_seen_ts` - The timestamp (in milliseconds since the unix epoch) when this devices was last seen. (May be a few minutes out of date, for efficiency reasons). - `user_id` - Owner of device. - `total` - Total number of user's devices. ### Create a device Creates a new device for a specific `user_id` and `device_id`. Does nothing if the `device_id` exists already. The API is: ``` POST /_synapse/admin/v2/users//devices { "device_id": "QBUAZIFURK" } ``` An empty JSON dict is returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. The following fields are required in the JSON request body: - `device_id` - The device ID to create. ### Delete multiple devices Deletes the given devices for a specific `user_id`, and invalidates any access token associated with them. The API is: ``` POST /_synapse/admin/v2/users//delete_devices { "devices": [ "QBUAZIFURK", "AUIECTSRND" ] } ``` An empty JSON dict is returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. The following fields are required in the JSON request body: - `devices` - The list of device IDs to delete. ### Show a device Gets information on a single device, by `device_id` for a specific `user_id`. The API is: ``` GET /_synapse/admin/v2/users//devices/ ``` A response body like the following is returned: ```json { "device_id": "", "display_name": "android", "last_seen_ip": "1.2.3.4", "last_seen_user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0", "last_seen_ts": 1474491775024, "user_id": "" } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. - `device_id` - The device to retrieve. **Response** The following fields are returned in the JSON response body: - `device_id` - Identifier of device. - `display_name` - Display name set by the user for this device. Absent if no name has been set. - `last_seen_ip` - The IP address where this device was last seen. (May be a few minutes out of date, for efficiency reasons). - `last_seen_user_agent` - The user agent of the device when it was last seen. (May be a few minutes out of date, for efficiency reasons). - `last_seen_ts` - The timestamp (in milliseconds since the unix epoch) when this devices was last seen. (May be a few minutes out of date, for efficiency reasons). - `user_id` - Owner of device. ### Update a device Updates the metadata on the given `device_id` for a specific `user_id`. The API is: ``` PUT /_synapse/admin/v2/users//devices/ { "display_name": "My other phone" } ``` An empty JSON dict is returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. - `device_id` - The device to update. The following fields are required in the JSON request body: - `display_name` - The new display name for this device. If not given, the display name is unchanged. ### Delete a device Deletes the given `device_id` for a specific `user_id`, and invalidates any access token associated with it. The API is: ``` DELETE /_synapse/admin/v2/users//devices/ {} ``` An empty JSON dict is returned. **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. - `device_id` - The device to delete. ## List all pushers Gets information about all pushers for a specific `user_id`. The API is: ``` GET /_synapse/admin/v1/users//pushers ``` A response body like the following is returned: ```json { "pushers": [ { "app_display_name":"HTTP Push Notifications", "app_id":"m.http", "data": { "url":"example.com" }, "device_display_name":"pushy push", "kind":"http", "lang":"None", "profile_tag":"", "pushkey":"a@example.com" } ], "total": 1 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - fully qualified: for example, `@user:server.com`. **Response** The following fields are returned in the JSON response body: - `pushers` - An array containing the current pushers for the user - `app_display_name` - string - A string that will allow the user to identify what application owns this pusher. - `app_id` - string - This is a reverse-DNS style identifier for the application. Max length, 64 chars. - `data` - A dictionary of information for the pusher implementation itself. - `url` - string - Required if `kind` is `http`. The URL to use to send notifications to. - `format` - string - The format to use when sending notifications to the Push Gateway. - `device_display_name` - string - A string that will allow the user to identify what device owns this pusher. - `profile_tag` - string - This string determines which set of device specific rules this pusher executes. - `kind` - string - The kind of pusher. "http" is a pusher that sends HTTP pokes. - `lang` - string - The preferred language for receiving notifications (e.g. 'en' or 'en-US') - `profile_tag` - string - This string determines which set of device specific rules this pusher executes. - `pushkey` - string - This is a unique identifier for this pusher. Max length, 512 bytes. - `total` - integer - Number of pushers. See also the [Client-Server API Spec on pushers](https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-pushers). ## Controlling whether a user is shadow-banned Shadow-banning is a useful tool for moderating malicious or egregiously abusive users. A shadow-banned users receives successful responses to their client-server API requests, but the events are not propagated into rooms. This can be an effective tool as it (hopefully) takes longer for the user to realise they are being moderated before pivoting to another account. Shadow-banning a user should be used as a tool of last resort and may lead to confusing or broken behaviour for the client. A shadow-banned user will not receive any notification and it is generally more appropriate to ban or kick abusive users. A shadow-banned user will be unable to contact anyone on the server. To shadow-ban a user the API is: ``` POST /_synapse/admin/v1/users//shadow_ban ``` To un-shadow-ban a user the API is: ``` DELETE /_synapse/admin/v1/users//shadow_ban ``` An empty JSON dict is returned in both cases. **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. ## Override ratelimiting for users This API allows to override or disable ratelimiting for a specific user. There are specific APIs to set, get and delete a ratelimit. ### Get status of ratelimit The API is: ``` GET /_synapse/admin/v1/users//override_ratelimit ``` A response body like the following is returned: ```json { "messages_per_second": 0, "burst_count": 0 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. **Response** The following fields are returned in the JSON response body: - `messages_per_second` - integer - The number of actions that can be performed in a second. `0` mean that ratelimiting is disabled for this user. - `burst_count` - integer - How many actions that can be performed before being limited. If **no** custom ratelimit is set, an empty JSON dict is returned. ```json {} ``` ### Set ratelimit The API is: ``` POST /_synapse/admin/v1/users//override_ratelimit ``` A response body like the following is returned: ```json { "messages_per_second": 0, "burst_count": 0 } ``` **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. Body parameters: - `messages_per_second` - positive integer, optional. The number of actions that can be performed in a second. Defaults to `0`. - `burst_count` - positive integer, optional. How many actions that can be performed before being limited. Defaults to `0`. To disable users' ratelimit set both values to `0`. **Response** The following fields are returned in the JSON response body: - `messages_per_second` - integer - The number of actions that can be performed in a second. - `burst_count` - integer - How many actions that can be performed before being limited. ### Delete ratelimit The API is: ``` DELETE /_synapse/admin/v1/users//override_ratelimit ``` An empty JSON dict is returned. ```json {} ``` **Parameters** The following parameters should be set in the URL: - `user_id` - The fully qualified MXID: for example, `@user:server.com`. The user must be local. ## Check username availability Checks to see if a username is available, and valid, for the server. See [the client-server API](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-register-available) for more information. This endpoint will work even if registration is disabled on the server, unlike `/_matrix/client/r0/register/available`. The API is: ``` GET /_synapse/admin/v1/username_available?username=$localpart ``` The request and response format is the same as the [/_matrix/client/r0/register/available](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-register-available) API. ## Find a user based on their ID in an auth provider The API is: ``` GET /_synapse/admin/v1/auth_providers/$provider/users/$external_id ``` When a user matched the given ID for the given provider, an HTTP code `200` with a response body like the following is returned: ```json { "user_id": "@hello:example.org" } ``` **Parameters** The following parameters should be set in the URL: - `provider` - The ID of the authentication provider, as advertised by the [`GET /_matrix/client/v3/login`](https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3login) API in the `m.login.sso` authentication method. - `external_id` - The user ID from the authentication provider. Usually corresponds to the `sub` claim for OIDC providers, or to the `uid` attestation for SAML2 providers. The `external_id` may have characters that are not URL-safe (typically `/`, `:` or `@`), so it is advised to URL-encode those parameters. **Errors** Returns a `404` HTTP status code if no user was found, with a response body like this: ```json { "errcode":"M_NOT_FOUND", "error":"User not found" } ``` _Added in Synapse 1.68.0._ ## Find a user based on their Third Party ID (ThreePID or 3PID) The API is: ``` GET /_synapse/admin/v1/threepid/$medium/users/$address ``` When a user matched the given address for the given medium, an HTTP code `200` with a response body like the following is returned: ```json { "user_id": "@hello:example.org" } ``` **Parameters** The following parameters should be set in the URL: - `medium` - Kind of third-party ID, either `email` or `msisdn`. - `address` - Value of the third-party ID. The `address` may have characters that are not URL-safe, so it is advised to URL-encode those parameters. **Errors** Returns a `404` HTTP status code if no user was found, with a response body like this: ```json { "errcode":"M_NOT_FOUND", "error":"User not found" } ``` _Added in Synapse 1.72.0._ synapse-1.100.0/docs/admin_api/version_api.md000066400000000000000000000007401455622526000210540ustar00rootroot00000000000000# Version API This API returns the running Synapse version. This is useful when a Synapse instance is behind a proxy that does not forward the 'Server' header (which also contains Synapse version information). The api is: ``` GET /_synapse/admin/v1/server_version ``` It returns a JSON body like the following: ```json { "server_version": "0.99.2rc1 (b=develop, abcdef123)" } ``` *Changed in Synapse 1.94.0:* The `python_version` key was removed from the response body. synapse-1.100.0/docs/ancient_architecture_notes.md000066400000000000000000000055201455622526000222110ustar00rootroot00000000000000> **Warning** > These architecture notes are spectacularly old, and date back > to when Synapse was just federation code in isolation. This should be > merged into the main spec. # Server to Server ## Server to Server Stack To use the server to server stack, homeservers should only need to interact with the Messaging layer. The server to server side of things is designed into 4 distinct layers: 1. Messaging Layer 2. Pdu Layer 3. Transaction Layer 4. Transport Layer Where the bottom (the transport layer) is what talks to the internet via HTTP, and the top (the messaging layer) talks to the rest of the Home Server with a domain specific API. 1. **Messaging Layer** This is what the rest of the homeserver hits to send messages, join rooms, etc. It also allows you to register callbacks for when it gets notified by lower levels that e.g. a new message has been received. It is responsible for serializing requests to send to the data layer, and to parse requests received from the data layer. 2. **PDU Layer** This layer handles: - duplicate `pdu_id`'s - i.e., it makes sure we ignore them. - responding to requests for a given `pdu_id` - responding to requests for all metadata for a given context (i.e. room) - handling incoming backfill requests So it has to parse incoming messages to discover which are metadata and which aren't, and has to correctly clobber existing metadata where appropriate. For incoming PDUs, it has to check the PDUs it references to see if we have missed any. If we have go and ask someone (another homeserver) for it. 3. **Transaction Layer** This layer makes incoming requests idempotent. i.e., it stores which transaction id's we have seen and what our response were. If we have already seen a message with the given transaction id, we do not notify higher levels but simply respond with the previous response. `transaction_id` is from "`GET /send//`" It's also responsible for batching PDUs into single transaction for sending to remote destinations, so that we only ever have one transaction in flight to a given destination at any one time. This is also responsible for answering requests for things after a given set of transactions, i.e., ask for everything after 'ver' X. 4. **Transport Layer** This is responsible for starting a HTTP server and hitting the correct callbacks on the Transaction layer, as well as sending both data and requests for data. ## Persistence We persist things in a single sqlite3 database. All database queries get run on a separate, dedicated thread. This that we only ever have one query running at a time, making it a lot easier to do things in a safe manner. The queries are located in the `synapse.persistence.transactions` module, and the table information in the `synapse.persistence.tables` module. synapse-1.100.0/docs/application_services.md000066400000000000000000000023421455622526000210230ustar00rootroot00000000000000# Registering an Application Service The registration of new application services depends on the homeserver used. In synapse, you need to create a new configuration file for your AS and add it to the list specified under the `app_service_config_files` config option in your synapse config. For example: ```yaml app_service_config_files: - /home/matrix/.synapse/.yaml ``` The format of the AS configuration file is as follows: ```yaml id: url: as_token: hs_token: sender_localpart: namespaces: users: # List of users we're interested in - exclusive: regex: group_id: - ... aliases: [] # List of aliases we're interested in rooms: [] # List of room ids we're interested in ``` `exclusive`: If enabled, only this application service is allowed to register users in its namespace(s). `group_id`: All users of this application service are dynamically joined to this group. This is useful for e.g user organisation or flairs. See the [spec](https://matrix.org/docs/spec/application_service/unstable.html) for further details on how application services work. synapse-1.100.0/docs/architecture.md000066400000000000000000000067771455622526000173170ustar00rootroot00000000000000# Synapse Architecture As of the end of Oct 2014, Synapse's overall architecture looks like: synapse .-----------------------------------------------------. | Notifier | | ^ | | | | | | | .------------|------. | | | handlers/ | | | | | v | | | | Event*Handler <--------> rest/* <=> Client | | Rooms*Handler | | HS <=> federation/* <==> FederationHandler | | | | | PresenceHandler | | | | | TypingHandler | | | | '-------------------' | | | | | | | | state/* | | | | | | | | | v v | | `--------------> storage/* | | | | '--------------------------|--------------------------' v .----. | DB | '----' - Handlers: business logic of synapse itself. Follows a set contract of BaseHandler: - BaseHandler gives us onNewRoomEvent which: (TODO: flesh this out and make it less cryptic): - handle_state(event) - auth(event) - persist_event(event) - notify notifier or federation(event) - PresenceHandler: use distributor to get EDUs out of Federation. Very lightweight logic built on the distributor - TypingHandler: use distributor to get EDUs out of Federation. Very lightweight logic built on the distributor - EventsHandler: handles the events stream... - FederationHandler: - gets PDU from Federation Layer; turns into an event; follows basehandler functionality. - RoomsHandler: does all the room logic, including members - lots of classes in RoomsHandler. - ProfileHandler: talks to the storage to store/retrieve profile info. - EventFactory: generates events of particular event types. - Notifier: Backs the events handler - REST: Interfaces handlers and events to the outside world via HTTP/JSON. Converts events back and forth from JSON. - Federation: holds the HTTP client & server to talk to other servers. Does replication to make sure there's nothing missing in the graph. Handles reliability. Handles txns. - Distributor: generic event bus. used for presence & typing only currently. Notifier could be implemented using Distributor - so far we are only using for things which actually /require/ dynamic pluggability however as it can obfuscate the actual flow of control. - Auth: helper singleton to say whether a given event is allowed to do a given thing (TODO: put this on the diagram) - State: helper singleton: does state conflict resolution. You give it an event and it tells you if it actually updates the state or not, and annotates the event up properly and handles merge conflict resolution. - Storage: abstracts the storage engine. synapse-1.100.0/docs/auth_chain_diff.dot000066400000000000000000000015131455622526000200750ustar00rootroot00000000000000digraph auth { nodesep=0.5; rankdir="RL"; C [label="Create (1,1)"]; BJ [label="Bob's Join (2,1)", color=red]; BJ2 [label="Bob's Join (2,2)", color=red]; BJ2 -> BJ [color=red, dir=none]; subgraph cluster_foo { A1 [label="Alice's invite (4,1)", color=blue]; A2 [label="Alice's Join (4,2)", color=blue]; A3 [label="Alice's Join (4,3)", color=blue]; A3 -> A2 -> A1 [color=blue, dir=none]; color=none; } PL1 [label="Power Level (3,1)", color=darkgreen]; PL2 [label="Power Level (3,2)", color=darkgreen]; PL2 -> PL1 [color=darkgreen, dir=none]; {rank = same; C; BJ; PL1; A1;} A1 -> C [color=grey]; A1 -> BJ [color=grey]; PL1 -> C [color=grey]; BJ2 -> PL1 [penwidth=2]; A3 -> PL2 [penwidth=2]; A1 -> PL1 -> BJ -> C [penwidth=2]; } synapse-1.100.0/docs/auth_chain_diff.dot.png000066400000000000000000001226731455622526000206730ustar00rootroot00000000000000PNG  IHDRp*{bKGD IDATxw\S?W 0Þ^ n;j[Qk+ծ_kmmý*TdYa$qQQ!ȃGrxss>EEQEQEQEQZ|PEQeP((ʠhAQEQA⃢((EQEQE( EQE->((2(Z|PEQeP((ʠhAQEQA⃢((EQEQE( EQE->((2(Z|PEQeP((ʠhAQEQA⃢((EQEQE( EQE->((2(3c`8J%ZZ܌ftkoG[rH$P* --]]hoimi k뛖XZ `i [[fǃ%x]]hjR=s҂tvB"\uJ AHznMx&5ak r㩳\pp'sl%Riw>kw[?ojRR)d2u=#ݴ񦇚ffptTg&չܛ[AS"RPWuupQ_X =em[[]67-@Tk+ *٩6\\nn@yd QWzB$Bm-! =+up:anQ/Ե47ߴfMd{s:55Lֽǃ|ã; P"QSCccϊBշ>~MCgo%(hnV4]&S=v OOuJkgX,L"TWB!! 55`aWW7m.S2 jMM"ilT*b1R[lV<=ܜ$TT@ 먬@YW>_L gƘbڸ¥馑kC]NMMw?nfj~~QJԹ]Y}Р~m//ug 00  ;5_ \t/n!(+iܺ7^^M/iЏtu4PP)R Cv߂0t(iEbT*\\Wշ|>|}{(??x{K bRաAw^P33#$ Ap0;nr+WE0G=$6v̵uu7[Lz39:FHsg(ŇX|磠(.D2Dd~2-32LPEsii0DD * QQ#"'99Ea!:;ͭ{@=?I^RbUu;8 :Æ!&Æ!2Xdg3T=Dެ2__zun36Sfn!!=:b⣬ /"+K]s3HuC@}zyy((@u588 2Gb"M;ME[23l䠼^2=ӭj(S磣 ða>G#:ZןғFdd #C̈RaPPY!7WD."##0Vhh@f&23q"23ssDGhDF0PhjB^ |䠣*$1 6vP瑞tB/FCںTD=?DSlmѣQzENMI ӑt@Hs!.]](,TB{;0j0f y⣡gi:N!CRSA@AAwiX\ 0'b/$1PTV?Թ]WWWLik⣩ 'Na8VbdLI䤓(J48sTbH̙'!7),Ğ=ؽ%%psøq<3fН]y9N8~ǜ9XƎl`P={gjkS~Çqru=8)ǍGߏs`D̚3榫qZ[ٳ37vdSVGj*JK9s0w.7vXHMhmER~ >G^۱w/jjs1w.BBuq0RSP*1y2ǜ9<ŇRcǰmx1e8u AŘ8Kb Mp8<=rBpNVg'UW!*y/Xce(2RSq#.^DHܹ7vX.!|9 1F(>֒'ބ"cǒ'mmjljqt$+V+Wk/aɴiP;&J?ZZ$<dHD4vLTSC~8;ss2w.9sQzS[K>6<09rG!W^!VVݝ襤DQQ[GM#H::?IyMRZj(C9}̙C8I'*ҵkkI֬!2OL!;ᚾC ‚&RLRI~DG̞Mrs(d&Ill;FcDCq13X$!:eht|1 ڽ?Ʉ  UHGkȘ1‚ FH,#"/d;;;z5H elǏbnN>m#?IɪUJEo'NN$0;fhjvbgG""HVCTLٳOrn G2cGC *ټX[wǙvFBp֭3Y Rtǎcǎ%? кNm/_={NVv]vdUbab">ӦW_qT(HNs琕8#`_̈́{"2'bfmm1}5kpqNvgzm ɸt *ܾX 矆s/_~ 8o?hLaׯ{yymڴzY뛛'|{,?{,ùrʝXWWqƉ'\Rp…_+ɽswGj*6o%KLP*1gvƯ5U` B͎9[y[zwvv~666QQQ6mbVHo77{:ƎŻg$IKK˪UxV{K*ܹzw4 D++F?SSScbb\npp? *444..@iiqVZwhG[W^V[[ﻸxzzٳ@hhf@ϙ;w^Irr;8::Xy;v,]򔔔Ç6dcy#wbbbV^}5x%6 ZTX ᩧ ^={qww饗}yUuѢEl6;,,WpK66XVKK >cin^|~^^_bbfarߣ ))^v%r2 7ԬnݺBs=gkkx, RU;vpppj*ݻw{xx;w{nBȶmƎ[ZZ*gΜf!˗/W(ÇٳG*9sٹs({5fW_|rssرcrH$?~<Ç3UT+Wܲe{S=7.88'xBR}w!:Ay͛{Nń%F{s@ ;fggw֟~fr?/6fh/1Xz%lJA>j4w^^^ /LtΛ>#^^O&=}fڵk_PILyf|''[r>VVV7ofpߟ >~WMP!o&*_|@(2MزeK,JƩϞ=[{aggi!,>jԩd"4L @vRV\y?qFr?7!?R<ݽһ8_ݢE vUU3Lrz-c# b.ynX}ݜ9sqqqFꫯ:;;zWWWLX@yyyWu/`Ϡ5lw9oUZZY _|^*r?0J5 ޾`d)w40s[*>}:))?_fm??:ʹx}T*?k׮Xk׮oak&aB//;5:u}o̾圳Kn}_}ƌFڽ{fW\/ﺗ80pNoi۞=(+3P[<1/̗KuMM 󢡫~뭷| -- |(}7G|Es:mKKǏ5*..裏4O,€:o*>F'l{6mچ 4K⋥Kj''';w|ᇵx<oƝ;f̘o>[v?c=~p+++&-zw/q_](/= ;dlmm}T:F4 GGeBϤk?eff{w-Ə?sL!њ`},8*n;`FTۃ6tusܧzbm>޺\M98e |_l ?_jB//ŋ߿YŒe)[1f~a}}}kk믿f͚aÆxwygMMMKK˹sz-M+2O>|ׯ^qk=fJyReX޽{ fۮB5N'˭8Cƍwhlļyh~66h翶P>>>?#P(H$O?yzÇggϞO4, & SO! v>vWsfq HJ 13#jllLNNNHHqR駟?^.ՑU*UuuŌ3nNfٽ+ɉ鯏>"vvTM ߰a?nݺ͑Lx?xuuuMMӧM|џo֎9ya{Nb46 ??rsUUU|>g-))inn/cbbzI |@@,>T*2{6qu!!!3L/xyyiJf111[K[[)S\|Y!CXYY1ĉڭKׯY{yy}Ƿ&Mz!_[ךw^ۮА?5N;w=2x̘1>vTliXOID6vv8En3g!J%YXZXr)7)#8t萗ׯBɓ}Y#6\ib3<013#g2kMiw]>p8'7d^%qqƆl`%@WbeE֯X|0^%=Dk5yyy8(wWk֬1I$ $<JE6m"66$6C@I\N@7E)SA,@3no'kk2b]BJEl!ҒXA*+eɉۓ>"ZGR2iҔIP*ɏ?bnNV g.\ Æ6,X@ʌ e$dzAllȚ58C*%6??baA.5)SQRB~''zO1'Hb"aO KxP:E~{#Ӱ O.-#2V7ߟpH]ڽIn%aa %7n)0dɸq"^^d:";&}:x FRRH[| y{ٝ4t($54W^!<$ɺɣw,Bȭ'Uz:mCj*0s&U I=8r9{OJ1c.Ŵi^օ ظ{Ř7Fd8r;w!8;lЫJDZq#~|>.OܫP}҂};NF` ^|Ka`alߎan)S0s&w+eZ[qoXַ IDAT=7mWs`\$$*TuvQaa8$''aaa 7cN ܹ;V:T= BXӦB?կC :q80jLĉHLyWOJ\:'p4 31kRT^RSRc Lpiñc8zV$%a\<<<T@j*EM "#1}:NbAfq(cP*1e Ypp0r`)>4q(~'OB ƌĉ8ʀQ\SpΞEC\]1~<}3faTdgc;rsaaѣ1mNEL X:;Gq5f fSOWkpTHK޽w&`TL cGݬ OsgMdC[y9ΟGZ~ B!lmx-"BOR}' /ii8`cQ0y2&OFlLX3gp~55GBFƘ1=VVƎ$ 3S/A*E`:M38~'Nq471\{ %u}:;1cƎ=H=Dq1Jxz"!#F :wm#?yyz)nY"1 5 033v&NBv6ΝCZQ[ ssc(aLE*E~>rrp"q*b(`MB ӑFX[#!IICl,耟H$Q`f($L77c+C=%dfEdeA {{DF"* QQDd$=G~> 7`ؖ5kr]}Gqq1vZEշB尶FT S"#akk(MH\uWTqq=F!)i<&HKCFJJRCL:R;cGjs;; NNHLĨQ= uA"Ai) "A$ 7^dv EE(/Gy922ldС=_ለ@` _ggG;CQRB\.5Gh(I.GUQXN5;yCCBi)]]]`[tχD@KӁؒ[UUee[i)** /|| q)@*@33/;^|vpǏzCCCeeekk+stt4C UU\,-??~~︻PUJuJ%l"$>ASR<}tJJ 7̯\AI M=T!t7B!!  Ap0BC A@,>nRA @Y]SokP.Jnnps \]WW Φ?kkCS  DÍ T<Y">ϺsRYY|||0jjRW!ׯB=UWC. xy|><<>wq" Gm:kkQ[ RoСNؿu[~΋/y`~ׯ*XZ|>3Ýamm_>(֤4"jjԩΰW_EPBC80uu/UU;:ǃx\.lman{{p8pp}2M^r8=ooGWWCBu=V(hiJ&ThiBVHhiAs3ZZԷ&C`X[E9quU ??Ә|{{{UUH$r;k֔ <555DE46v ptTqp%9ss٩roncӛ!3V"BfhkT  :;܌&ukp >_}Gg p}) ZCP]d3z] ݯ}b۫sff`aBf=(MM;P( @&T6hnFggw>k'zMR( cfcKtL2ݏZ@ plssʪbnGsu8WL& w-AZ[[+**lYSS76޾Od~vv9\mO''cEv s\2JwӳKQ;&DtvS;:ˠ[NN~0 />15 Nٹ|7E@=42@*ΪZmvsj***Z[[5]SSPL2$6Mz3llS^jzdlrrr mZ|Pr|}}+** 4quu---RCa⃺#.U^^Ȑ!+---** `(芊vck…/}\T_X[[GGG߸q<333 S`!!!%%% y2ܹS{L0uPBs;'''@P^^^WWdoo>okk[XXa}Qv,+++%%eݭZ^`/kب->~annn_cccrrr`(J$ɏ?y˗/kj:x^IQAJ'E533rJ{{;4 +V16FJgݝ]VXX󃂂4C ,+00ںD.CP)JWo&;;[b̙ɓ&M7jK桡|>?:tfff ",,NNQ ukoo, z{9>o(tiEEEAAAS]\\\ 򢢢gꃖ~iӦM999t2!,ͥ>4iҩS\\\bcKJJ!!!!NNNѴ{wۡK.]G Z| ->JPD׼Jt3ԱaÆevvvW\|r``ꏂhz)Ei477_>??_uP->(~kZZZBBB83AHvvvQQQDDO)عsT*, ]d  Z|Pb#""JKK#EGSSӞ={낂BKK3fСjehEEEYYY!!!aaa Caaa> /l(JOhAˍ)+++**wvv *)) R~˖-׮], uL<وQ26lggWVVvUkkk|T*թSRRR8 5/^l2q(jeL666C(((LJQC]]SRR5 P`edQQQaaa/_rJTTC(PG||E/^h((hAհasrr"""BCݱc͛+**4 ϟo(ʸhA Æ +,,͍ppp5vhuzHNN~ghVS->DEE2755әO)SQSSso뚅[|yllB^X$%%eddGGZ.kBHaaaKKKhhhqqǐ!CEF3Ա~BYN:(N?]'xV}b \-|㢨`:6mTYYY~^ziذaF2:q뽼Je/9qĤI ҠR :::\.!$..QTއ:,X@'M:wzã2AITfggT*La( ջvڸq@ ,d:^~嘘#FQ&vo7oB&X^XXn7J9bS} J/^w^UZZz1]]]LII9yv u,Zʰ!S`FG>r֬Y=COlvdd$bcBXM";ʔ\vm̘1s~wrsϞ=SL D"6=yԺ͛7GDD/pn>R(CUQQgܨ7Rfii`X(pYf544X>k֬4XY.[NOQ@G>쩧<;v,<|Tz cByԩV8T@n:ZyPay/n())QTƎΝ;Npuu]jUii̙C(CzvttuH[;[-;MM]6\&K;ۻ]DT4K(UJC ] h324;K;3#ͱXpm̭,-yV<k[re0o/??188N~WV&ɛ--f&%RT.emmrEڢT);*E@C{U뵗rm97myV<6 @\s5׌kgigaf9Z;ޔV::jr|qEK@[fk=@:܂f+S55 MzxQQ11QQQ^Q<+C,Æ Lhh yy¼bfXˆkIu槟=tx䲪7JO?q߇2=ۧ5NneErbܪܪJ҆k2?ٟv}F6 *)MMb|b݌}tRgg'7K4\Y[[PSPX)'&+*+6vf쬬:RɱF?{])3JB .V\R{EET~QQ^11l=X_sĨ!c}cҝr4`;eYY+.29_Xas<† 򎢥)U2QY0)*DGxb`ۡ(C{Aɯ?Y|ԕSgKζZm2؛AXqL65p͸6iR#fƎ .B"##N7R~'O^إnԐQ @ A1aVeV{g;ϊPC&M IT(W!l)8Vӄ &:&3FJK._`6VL<-bZ{떟/HCCUAu£'OQG[gЉC'2j+4sReO]9ufǤIC'>;RFšC{.Inen4$irac}c騦)*(>qⓍ퍁ӣ>gF!\ȑ#CaMK{~+uW\l]F4frxxcDR̩9Q|Dщe]ӣ?L[AE7Glׅ].˯wu9lٓ'{T)H0 IDAT]޷?{Q?;n3 7ɮ**==]T95he\؝{~a05'}"10V؃T.=Zptù:b}c{bȅ~2l}[o=s'sv'bÖ[ qQNܽzj]]fkloyas[ k #<#rva> 4e,r3?_@qxJƾx̕(>N~NT2=f c^x8aZs!zZtXB@BG ?:Ѯ ]# 30)#-5\Xckf1(HNND"7n|>8^t|1>:o2]]ӿoiYf=*ϓI|ԝ^G>Ty)oFJ-@PQQgg3:F'M՚AFoO鯟6u4.gQI{Q&*[coN}X"켰pvزxЉkҥK9leۗğ=ݖPB&}֎ ٭\c>ihuOI;v;>/_={N]v]tbXG-.pϰjeii "|v Oq) y\2b]|YP-@{_XXX<<}u$IAA#lmm%KDEExK$O?dՇViΝKOO/++Jr_~UTE3WXm۶@do6!~Ud/-2Q/>Dev+Vxyyyyyi]>j{r PGGG/}\.^{_j/Μ9 Q|Blv~~~?bWlb/c*>fddy rvfaTwB^O /voP*aaa%L%ۖ8\Tm(Ŝ/#t1Ϟ=CظKY,Ś5kVYY/4Kz-L?())Yj@ >}sfffBu͡`\?gݻo;v())Ytf5z0Fz{lC˧GOUDl[[ND҇˕7S|&ᙅ#< CuѢEl6;,,׷{C&-?<ڢ(tk="8ɜݙ S"W_;v,!رcvvvnmm駟lll.oܸ1m4333HDijj3fK{{f%֭d۶m;vliiX,9s&=z4;33ۮY$?ÇT+WnٲER-T;7n\pp}]oo\y<ޭ#^{ܼk|a>^٫gu挌 @pk׮Zƺ&{&r&DEEx!/ EVRٻﰨqCtPuc&DMq[b4lz&DibVEE"}f:qɀ Hgs=/xsOqrd:e@r'~:N?9{ׯߺuh֭[o>}zÆ &M:~ʕ+绻9r$55U*zyy1L@۳b\XXߙfϞ_<3 v@MMN#)00PR]re.y7@UU0Pon?݂e~Ѿì Ã?:n֭_}cb esB+ШsJR 6Ɂٳg{m$oȾi$#W^[o)JL|GڵԩS˗/fhhh= /ҢErss'O_Ϙ>?r^<Ś9sɓSRR%`I2]ў"s>7eeeNNNC:1&YC'1W_iӦ^ۭYuBjٿ$i!i jIᓬ y*--NWZ_~Z~}SS'|rڵrZG_bN80,X'x<6M^ 9#Bo&lٲaOV+) ^iZ6WR\T*tZ/(4 kT3gfUye h""w/Z?fR?Nw r4Y11Kw9p8ﻇŋ BHpySGL>ey@ /0PEEEd*~W;pLhѢL"ߥܹsCBBL?{{{?S|Abbb[[EsrrLFP`0-ZRzW^R=bRPWzw~榦ϓF… "h'yם6:K^/X KV;vϦYエ,BK( np~J˕k رcd'[G<ýΐf'LMi//M6-l='{ڴi/r`~'ә{49pTWW~sr86m6Lfyڴi=gڴiS{<%% [նֆl,Sg^]Ko޼9Yz&Enu 9q<%+ޥZ WjM>zz.S 1 <4K=e˖ fς*7HX94Vy%_VVv ӏb… Ø \"=& fW w',j#4f Z^g}SojZńz\.wӇ_x:Z:u͛G@^3w- QPPPQѝ.h4sε 8Qh›_t&lVxNVuYh1Nƌ FgF~ᇀӧه~I|233z)`{m>Kht BĥKznvڰSjnv.<睿8@h,GA%v}}ӑMM&KDŽp}^N\-ww{*T*ϝ;sceekFr/\?PKYh_=O[Gܚ#FE! + 8Ŷ) 372og s˻ /ۂI$SR݃n޼9ydr(m?lO\9ܼ.cہm!yמ {\)k61#B`RoL-[n Q>1윸SG*j㬍nrB2׬bFҥKQQQёhl|wes5S`΍XT>җNX:FhZART~LfY2w2 ?9w e}4G8nܸ^oܸd2cbbRD*yw/ZN6Ie>4)4#׏ٓ{;7+/?=i&.#6d$'g'Nӗ?qhTڽFN-Yѳ)[*l0.]ݻ5V$M<ٌũt׏bPЧ

dAh؆|H=P,*rz(顥Kg1H/U^:DMkM{OO{zwhii)..2e HOR4??„ 5aW#,M^EcJ:Sr'mIAI'^5ySEwBCeäDk;01ýU~.$7fi҇N ImEE\.OIIA/_ ҒCBǏ n0?~<`.B*$gKffRJ>ii҇SBfdäD~ʹ( >>0ލfH o6ܼ)YPxSx\g1̸t2!Mыިk+m%j tf[Ϗ7|WxWxgxg^/֡|myOPR... 2-nT*U^^^BB@ׯ_www~ZV-~-DTR,*VsM"Týyx{{eڕUUUUŢqIUsUyc\#?yԐQ/B.mE¢[MnIn+*U:]BI;vE;y1߮hPut*;-yqThC8@ʧˁv`W|7 lW+Օqtz|FE x7xyŋ=zԩSjm#,n߾2^)/^tTLA 35}w*;{Fҩ:Crbv%74P;2vf9[:$mc+\-t;Jj }k?m/V3a9،;똞7r\iTyub.|޽ׯjc-X@VwǎK,Ynٳh4^r% `3|@sezCa0:U@D>JRt9B㲹@Ҹ,.pd:ظ$B/L>FdٿgsscK.-]c=C 'N>|XP@tt5k֌|Uzjll4i195MB.BvĮ5 :uŋM-w~Ǐ;c9rd,|˖-AAA<ӧ H58R~!NTTիWgΜi"~~͚5L&S?~|…AAA[l]RT& i8hzwE!d-|܏UV%''M<9""bڵ?㫯J@,ڵ+222---++|4c}\.\zrttl@!}d۷odҵkג"""Ӄ,Xpܹ{4C9_~}@@/^h̀e2Y[[PX,*߶S IDATBp:"i_G}n߾-Z]SS#H{ĉ0x<ի~iOϑ"N<|NB-L>Fd $ {W*VUUuvvzyyq8ÇgeeUUUv`2/^j4f'J݇zlii`D`!  .T*.]ZRRn:ѣ/ ݲeKMM#rqqF,K{?Bւ77qƵݻw ݻw444ڵ+""bΜ9WTf)Z"tvvFDD pBL>`Q('޺uS(u ׯ `4z)_7FRhsv CE|iii%%%&55?lhh8rHff&9=+++))+ɆQ\MM` vL&IBL>pp88Lv5PHzGϜ9S^^;t{7BdOiy,&!d?0@1a„*@ J푑۶m>ṣ>jѣs̉ٵkD"ApMZ2n!d?0@#BRCCCɧ0eee@Tjff#G>xr{EEŖ-[̙sQNw3֪G-!d?0@ffbbbڮ]]___|֭srrc]8.,,2 | 0a[QQQiiiRSS$7]8Fחi h4Y!p:"ccSkkk bܸqua*++ۻwߦ&FO?400pʔ)dgqÉ4B| swwOKK()))))WGLLΝ;G}Nŋ}}}7nܘk.du4h4<![>F[>fj"ԩS~On41%%%w8B!–dAd͛7o߾=px~~~_.CKFT*[>B~`,NxF@P(V-..vvv6mݻE"ݻSRRB]ƍ7c0@!//T:.Bawz}aa!Jxn:>_TTy^ _`0cBvd%,+11100%%%FHuxw) {.ё P4&!dW0@CP:::U*A%%%J2!!aĘL&pLmmΝ;CBB|>^ ` L *!lGvFSRRP(8yp!h4oYYY}]ϡQQQO>ڵkM@EEJJLL4/BhLHHpppdC<1d 7x#<<1FqtB&FcYYN jnn.))v 77uݸq T*VueD0 "\rRiQQ͎|*ԩSYYYgϞ5zd:99-_NB"jJ211|ru:ugdԒ͛7{{{DׯXzuvv~BÅJo0{@줤$VPP RpH$:sL@@ĮT*=p9sx<A!4TeD൷p8 bLlƢ|>smv1wիW/]\!`X|M77:vhxBLfҵZ͛oݺcZ8F՞:u ݲeKUU E!l)SX,f2 QYY)BCCM3 qqqgg?.\eyᬬ,>oHRxUV-[NBY| ͓O>y}~aƍdu-YdS"}xG?w{DDĭ[ϖyJu֭03_ƏOv *,i󳲲c}}}{gy&>>~$'G >vX>< |>_&%%W^^VqRyLjjݻ%ɑ#G233_>JHHHKK2ܬ!4apj__^ۋy}<4M~~Z&gF!))Y3 2nܸAT*:HRBݻNJnDv튌6mZVVB3L>瘗2*h4 a,:`0_v-:::%%&Ṹx{{WVVo.CE.s \ti1Q!_h4*HTFрB2Ý5"O.zN  l6l6[6]LgAnP(^^^F1888 JqªhƍwϝsssXȅcO?\^g1 E O~W@;j>AF=izbDpr''`0l]j;X !d'n "44D]( 9 "]y+0]H7;r_;|xw-HI9e T  Jj5tvV 2(Tv}ܙ ~~bCjTR3gEEE{{ĉ_jsssz]a2/1b1"_"Fs\nwf pf..@\G3E::+e@NPzSӓ#x{wUxS@waABm'*ܾ w|ԀTڵ}ǧ?x{q, /,,LLLuD" !6Əbc-aҤI6SiiBHKK`?)..6mh>/lkk#|bcyuZ"" - &N HNB>]t rɓc||l Au&N33fp8:ޔRBY,b2L&`xxxU牺)S5%"FҬ9`dp"\AD1 Rѐ]--´i0a- ~g䣡NӧYP*f̀ 1bcmVWʊ^ttd0$n@M\r%..CUɹMNjG5EE]e0 &›u;ԅ hl''3χ ,:v !40[$yyp4#df0k~, X ??Ck+DD…p!̚5Z X,VLLL߷ʴZmBBNgɓPS0s&Y[y9> j5…x1:2;VL>/BCaܮ[7F#ɓp<VDD +W⭆CAVӰ7nL4yjի Þ=pTT@l,\ +VXYg zÇMիaŊ0\!f䣾>@+!3s#ͅCA+ॗV#g4/^w1X\YY9uTM"֕dZt4: <sq#v Ar,|[o߂<<[$V*~ee Wv#??ѱd%%%!>>JACb"<$N9Z55C{;<ܭGBh}_(3@J TT޽P] [`1ٰ~=`4EPZj밺999]Jܸ5z ֬c_Zs!>6nf[XcC; * Μ}χ+n"C#BBv697qVݹVL&tO>lrr)=۲%"a2aZ(,ݻ 2~t:[a䣢&Owށ^2XgrdF @V|$%ANk%vaٹŲ!1~+WX*֮ x%x Ȁ#F T*u+vT&OY`60löm0oL 7ngqmVCb"|Bh,qmYk`7sB=aaa/-00_װ .]j`z뭃T;tizVb@ѐ?NK=sQ*a"xm1N{N`mhr֬+`K^#tnz^q2̀%KOk0)Gw?AFR__+hmm׿5rر_ Z=44}gFb~:k֬76N8OŅX0,XʀΝ;Dnmm=wZ61Z-1w.I\fcm'R / T7-[ Bc"(b>s:.Рhby<|<|w|xWJz뭷`ʕ*j溹?nܸ/쬫[f +frd{nJ?˅M\HX֭,b@.\hll$_| acm|m`Okv >Pᄈl)iM> 776k0EDDbzc?rT*i4ɓ'`ǎC:jHt:]TTԶmzi0bcc8^g2 .]DRo޼iMhfoK. BunnnMM8wPCam7;@m֨A]Kmm-k}>o``a>\...L&SכF7?~ƌ6l S[̘1f'%%]xlvLLLJJ ܺu+##u]UT1ck対X,ѻpk׮%Zj]*<@H4˔)Sm6nȞ}&M_`Rd}Je0w.,_n3k{﹧5j;ߠ[ưd,F#KlnLwwwRi4Je~~E`׮]ɓ'e2Çt:AO?4ڹsX,.((?~cCCA=^'"--ѣ*ܹsbHz Wq7o&bڴi4 ^x@1}tWWW2^222kfee sqqAċ/1#r8A?ܺ: \b_4ߞ֨AlLYƮa%g`z$NwFcdd?o_{O?ݳ!B⋦-䴘~RG r

>@Ǐ *[ я/D" *++_}Eh?sXMY soa=vij αCR CKKӧ_}'xh4[n%&&v^n>}ynܸaff͚k ?Ͼ irzL.xfzp@gĚNNu֯6ejx#ëb/*ՠVT(Je_/Ci_ !dBANNRV}P(cgNII9|y\.\ߟDtȑ'|rΝ+cǎAP(P[[;@0UUr90YMF,9gkkpoF#d쳐lR0P(JVn4lj2.\C>Pj{{ZT lR|DE /Ct&9gΜz J\NXH4uԞ[Mv֭/b׮]o/<@NNN0r E߷3g 2)5j5O֒V 3Z=X,9 IDAT% O>R5}>֨p-vCh c|1w0f4\AAA| y# R{+Wbq~j7dX/Ryyylllnn咍zT ~`zߟd^ۿ更4r HNw7|s 瘟z;ofwCT3j@RREʘ8_ᱶW `XDhWUB!|Ozr...EEERիǓdA>|/^, E"… ͛GNwBlݺU,<=ϯR _|QWW駟O?ussow9~xS=uL2ETy_m4Z> w;{ܹsCBBznٱcG Ey{{v6B`,ZP JHN:Ο?/ /\0.EXX_ؓdNDVAMk3nH [ )#{W[[[M{;v,11doݺ4hܳgc0111}gkVT|۽vyܹPGG P'L'&&Θ1;3n?Uցw{p8dAӦM ?prI~~~ϓZ[(bL-ʕ+%  zbD"!J~n탯Ilm'pv&2o,B$*1e JXbp`0x&PE./[l0{P< no'&M"BBh,??͖-%f"d2t ߟxKFhl,xz鐓3 Rܽ{7>^z鞻i47+&Lq}TT@F/0fG3Rd7F _~5 jj,[X7*k;dgCFAp,{G34<\lُ?8}є)Sz gK(.\pܸqRafv 99dP()9sD 'ZHNc,^ܘ6j^̛/b"h$>`23-#QXX8{ھ} XPM4Ryܹsaq*a@<4drǢQP q:p={,r~? ̓ڵPT> ۶yNB0mÑH$4mʔ)ØdD^x x5xEے~h} 5Əu@kNN> 2vK0I?(x=ߠd2*ey**ॗ`/1 ijYؿ\!32_ˇ ys𗿀EgA&'ݠPOÝ+z Ebb"mD7s GQ>:׿bB`$޽PU3a%p<|%9nnal`WO ŋt %vh+Wš50e <*4xj5< {@v6K/Uf:,&%$N?\]a (ۻ"8x !%6n+elϲiR gAa!ʕb {38x́?|QY+8xnބ0xXMVCfG Spܸ!!bX<#WQQQkkkjjŗB8x - .!)aiNB}=$'ʕVX!K>L !(+WW7.?<=")p > OX p!<$Lnw~/^RSLu 3o`̞?OïT qqx'IVO>L8yΜ!3N@ۄtP( 7.^KŮ)23aB:s\.ep)8yrsJĮ 3VYVS\ .Av6ӦAf&,YO%&2= PXF#Œ0iAt4h6p >\!#22`\F:Heee$==5F"p ?.@e%鐖bF?JKχ˗!'ʀFdȀ3!"t䣧NɁ  'j - RS!- "#1uχ6рJ822l\tJN<ցHu20ӳ@pC z(/T))]}4pvunv|djpp `\$(.^X2@x8L cO& ర0[b>r9tv2r!2ûk{LtP_]KJT*ppȮڞ &-Ɏ^ZyZSZ %%P] 88@XXWxx Kqjr9TWCUTWw}UU۠VCL 0~<$&l7oM:>GKdPPJyÁ޵=,ll[tWuSͯt df+"4Z/ʠ **/LB!..cmJ%P 44@S44DB!DܵoODxkX,K-n:;:]=0<Ш! CPPA!4"|QFả!4aFD!L>pm!bN!L>(PUUE B | {WQQqn30@vMՊbGGG[ǂB<0@v͛lB!/D"˽9cA!d6| ;+**tzllcA!dN| ;uMш\Bh#P(J}||pUs0@vGTVVV2[ǂB0@vB$&&:B/:.::G X#555>>>8Ba| {T[[fBm| P(tzJJcA!dY| jJmB!٘^v`HLLdX!alIX[B0@6c4]bbbmB!+نhjQQQ8!+عEEFF:BV6V{uNB݇0@VT*`?~A!d| ikk+..&"!!  L>WUUhGGG[Bf0@PVV&HX,aBBcML;>nnnbdZ'$;JKRRA!d{8<̃$ɮ\T*1@!D–H$a}gϞmɃJ? | ܹsϜ9߻~~~4͚!XPP X,Vrr2uD!>v<yyeL啞B^cȤRJyyy&LrHBƏ3y +l2.4+c'd2˗% ˝2e f!peŊ ؃ @###TW!]CVvvv^\\lzgg焄@ !=pX%Kژ|_ea7o4111)))y  L>'1Rkԩ>>>!Ш]IJ$G R]]bۨBӱX8\"!Pa0e˖~>}vr!DY,dXVVV666x%PXRR2yMM W(cXު100r jjj .d2 ҥK:ݻwd2.Ն갴TQQQYYӃZdp8^;P( Lw>|DbL6|ښN666W!^VV%–555&4uk־)mmm&ƍ/1+Ç\.OMM***aX+Wp8npzeggc/}k֬!-vY"k̦100rM>oiivZwww77X1+Dggg߽{R(oo>}ul6|& |򬬬˗/''' p89u#hnnNIIIIIwB;$$w쵐J>R ~{0QWW}M6-\P}tzzz}QXX...~N/70fhx?`hhcǎ+V٧-)))::qA]]]SSSKK@ D##ό iii}]nnC6mڤfʲ2E&%Ao?O<׿wޣG yc޽$88Ν;n 5#CBB8T*˻qիU[&::ۻZMsT>RSSmmm߿{喙vZvv@ `ٿL MC*޽ǧ>֭HXnnn=طo@ PuG -8 gϞ RI![۷oo?Մ>*0u9L7|"J}||bq~~y{ƍq)7R chheiiсceE*u{{{O:h``f͚~S/bիW={`?vtt9s#<<|/uӧOݻ_t2*XO\jjj׮]÷/^lii%Iqq={:)byOONxGBCC/_O&;Ⱦ>KK?JJJO8oY`,Lfiim6|[XX{***jǎe  d2"1ȼ&~MMիW[+֬dD"q1!GGGԴf͚cǎ;wbQQQr[*7nH---===^,(&>`~~5333-]A'h !mmɇ-X!l2R>d2ǎx"УGN>}՗~1SOE!-khh('s1o|@ \~jL [2}o:::.|ˊbMMM---|~`0ieeeee{޽–&&&;.WZER'Z:q BQR!D&-[^^`0>;RÇgfff__e{H$FrL&ÎXJ~駑mmmByYXX@!gyqξh""ގىb0~'5QJ jjj;e}}}Ϝ9SYYf/]:<GBա8%>RuuuW.++ 333#ϟQ(NNN؋hSΝ;;hkks8 #G(MrrrllGFF\\\h4Z||$ljE={lA7\.v|ʕK,Yn+Gblooٲe6l&0j+J]]]GFF_\._|###2^"&%%rdII ~!y6k۶mor `:(r$?lhhصk\z\\ٳg>|8O>p+ ݻ8&:!!!!!iZXX$&&&'' *% LOO|dTTJ#4IDATZ[[}}}-,,\:T(G/W\jQ.|}}T҃28qb*ɓ'tB{쉏tҖ-[p LBe!TZZqFX|???U1nݺŭ[NT([[uڵ :$+RHF!tM q.Q-\lٲSNEFF޹sDMCT>0_|ŊRuSo!BU[[{F͈"'Ovss۹sydd$vZ/^hmmgddrϟ?OUH N'u9B}wkjjjbbb.^ݽe˖U7`Nw .TUUX`jBabb˗򌍍CBB.\>Fwwwn޼dH _2۶m>>>Aխ5 F*uuu1̀k׺̅{LB&dff޸q@[[Æ zzzoքQ###9997oLMM!NNNNNN$I *L&+..D-Z~Ocf>ͭ  p8"qVTTr \]]W\fKf>jll|AaaaAA$ښdbX,sss Uw:%UUU<x>---;;;bT&ޞ1HUUUAA+//jllT(D"t􁡡j<--- ؃:H,dؼvvvZZZ*>^$***>}:FhFFFt:{LPd2L% =JcD244488(BH$bO |@с=f-\p4 X,e``_0Jxᖖ涶6@06>X,HD$L&S( b)ȈFtSS9Tc* Eoo/DRhJWAH$&LՅm6Q>T3r# |@ |@BآzIENDB`synapse-1.100.0/docs/auth_chain_difference_algorithm.md000066400000000000000000000156441455622526000231510ustar00rootroot00000000000000# Auth Chain Difference Algorithm The auth chain difference algorithm is used by V2 state resolution, where a naive implementation can be a significant source of CPU and DB usage. ### Definitions A *state set* is a set of state events; e.g. the input of a state resolution algorithm is a collection of state sets. The *auth chain* of a set of events are all the events' auth events and *their* auth events, recursively (i.e. the events reachable by walking the graph induced by an event's auth events links). The *auth chain difference* of a collection of state sets is the union minus the intersection of the sets of auth chains corresponding to the state sets, i.e an event is in the auth chain difference if it is reachable by walking the auth event graph from at least one of the state sets but not from *all* of the state sets. ## Breadth First Walk Algorithm A way of calculating the auth chain difference without calculating the full auth chains for each state set is to do a parallel breadth first walk (ordered by depth) of each state set's auth chain. By tracking which events are reachable from each state set we can finish early if every pending event is reachable from every state set. This can work well for state sets that have a small auth chain difference, but can be very inefficient for larger differences. However, this algorithm is still used if we don't have a chain cover index for the room (e.g. because we're in the process of indexing it). ## Chain Cover Index Synapse computes auth chain differences by pre-computing a "chain cover" index for the auth chain in a room, allowing us to efficiently make reachability queries like "is event `A` in the auth chain of event `B`?". We could do this with an index that tracks all pairs `(A, B)` such that `A` is in the auth chain of `B`. However, this would be prohibitively large, scaling poorly as the room accumulates more state events. Instead, we break down the graph into *chains*. A chain is a subset of a DAG with the following property: for any pair of events `E` and `F` in the chain, the chain contains a path `E -> F` or a path `F -> E`. This forces a chain to be linear (without forks), e.g. `E -> F -> G -> ... -> H`. Each event in the chain is given a *sequence number* local to that chain. The oldest event `E` in the chain has sequence number 1. If `E` has a child `F` in the chain, then `F` has sequence number 2. If `E` has a grandchild `G` in the chain, then `G` has sequence number 3; and so on. Synapse ensures that each persisted event belongs to exactly one chain, and tracks how the chains are connected to one another. This allows us to efficiently answer reachability queries. Doing so uses less storage than tracking reachability on an event-by-event basis, particularly when we have fewer and longer chains. See > Jagadish, H. (1990). [A compression technique to materialize transitive closure](https://doi.org/10.1145/99935.99944). > *ACM Transactions on Database Systems (TODS)*, 15*(4)*, 558-598. for the original idea or > Y. Chen, Y. Chen, [An efficient algorithm for answering graph > reachability queries](https://doi.org/10.1109/ICDE.2008.4497498), > in: 2008 IEEE 24th International Conference on Data Engineering, April 2008, > pp. 893–902. (PDF available via [Google Scholar](https://scholar.google.com/scholar?q=Y.%20Chen,%20Y.%20Chen,%20An%20efficient%20algorithm%20for%20answering%20graph%20reachability%20queries,%20in:%202008%20IEEE%2024th%20International%20Conference%20on%20Data%20Engineering,%20April%202008,%20pp.%20893902.).) for a more modern take. In practical terms, the chain cover assigns every event a *chain ID* and *sequence number* (e.g. `(5,3)`), and maintains a map of *links* between events in chains (e.g. `(5,3) -> (2,4)`) such that `A` is reachable by `B` (i.e. `A` is in the auth chain of `B`) if and only if either: 1. `A` and `B` have the same chain ID and `A`'s sequence number is less than `B`'s sequence number; or 2. there is a link `L` between `B`'s chain ID and `A`'s chain ID such that `L.start_seq_no` <= `B.seq_no` and `A.seq_no` <= `L.end_seq_no`. There are actually two potential implementations, one where we store links from each chain to every other reachable chain (the transitive closure of the links graph), and one where we remove redundant links (the transitive reduction of the links graph) e.g. if we have chains `C3 -> C2 -> C1` then the link `C3 -> C1` would not be stored. Synapse uses the former implementation so that it doesn't need to recurse to test reachability between chains. This trades-off extra storage in order to save CPU cycles and DB queries. ### Example An example auth graph would look like the following, where chains have been formed based on type/state_key and are denoted by colour and are labelled with `(chain ID, sequence number)`. Links are denoted by the arrows (links in grey are those that would be remove in the second implementation described above). ![Example](auth_chain_diff.dot.png) Note that we don't include all links between events and their auth events, as most of those links would be redundant. For example, all events point to the create event, but each chain only needs the one link from it's base to the create event. ## Using the Index This index can be used to calculate the auth chain difference of the state sets by looking at the chain ID and sequence numbers reachable from each state set: 1. For every state set lookup the chain ID/sequence numbers of each state event 2. Use the index to find all chains and the maximum sequence number reachable from each state set. 3. The auth chain difference is then all events in each chain that have sequence numbers between the maximum sequence number reachable from *any* state set and the minimum reachable by *all* state sets (if any). Note that steps 2 is effectively calculating the auth chain for each state set (in terms of chain IDs and sequence numbers), and step 3 is calculating the difference between the union and intersection of the auth chains. ### Worked Example For example, given the above graph, we can calculate the difference between state sets consisting of: 1. `S1`: Alice's invite `(4,1)` and Bob's second join `(2,2)`; and 2. `S2`: Alice's second join `(4,3)` and Bob's first join `(2,1)`. Using the index we see that the following auth chains are reachable from each state set: 1. `S1`: `(1,1)`, `(2,2)`, `(3,1)` & `(4,1)` 2. `S2`: `(1,1)`, `(2,1)`, `(3,2)` & `(4,3)` And so, for each the ranges that are in the auth chain difference: 1. Chain 1: None, (since everything can reach the create event). 2. Chain 2: The range `(1, 2]` (i.e. just `2`), as `1` is reachable by all state sets and the maximum reachable is `2` (corresponding to Bob's second join). 3. Chain 3: Similarly the range `(1, 2]` (corresponding to the second power level). 4. Chain 4: The range `(1, 3]` (corresponding to both of Alice's joins). So the final result is: Bob's second join `(2,2)`, the second power level `(3,2)` and both of Alice's joins `(4,2)` & `(4,3)`. synapse-1.100.0/docs/changelogs/000077500000000000000000000000001455622526000164045ustar00rootroot00000000000000synapse-1.100.0/docs/changelogs/CHANGES-2019.md000066400000000000000000002617521455622526000204040ustar00rootroot00000000000000 Synapse 1.7.3 (2019-12-31) ========================== This release fixes a long-standing bug in the state resolution algorithm. Bugfixes -------- - Fix exceptions caused by state resolution choking on malformed events. ([\#6608](https://github.com/matrix-org/synapse/issues/6608)) Synapse 1.7.2 (2019-12-20) ========================== This release fixes some regressions introduced in Synapse 1.7.0 and 1.7.1. Bugfixes -------- - Fix a regression introduced in Synapse 1.7.1 which caused errors when attempting to backfill rooms over federation. ([\#6576](https://github.com/matrix-org/synapse/issues/6576)) - Fix a bug introduced in Synapse 1.7.0 which caused an error on startup when upgrading from versions before 1.3.0. ([\#6578](https://github.com/matrix-org/synapse/issues/6578)) Synapse 1.7.1 (2019-12-18) ========================== This release includes several security fixes as well as a fix to a bug exposed by the security fixes. Administrators are encouraged to upgrade as soon as possible. Security updates ---------------- - Fix a bug which could cause room events to be incorrectly authorized using events from a different room. ([\#6501](https://github.com/matrix-org/synapse/issues/6501), [\#6503](https://github.com/matrix-org/synapse/issues/6503), [\#6521](https://github.com/matrix-org/synapse/issues/6521), [\#6524](https://github.com/matrix-org/synapse/issues/6524), [\#6530](https://github.com/matrix-org/synapse/issues/6530), [\#6531](https://github.com/matrix-org/synapse/issues/6531)) - Fix a bug causing responses to the `/context` client endpoint to not use the pruned version of the event. ([\#6553](https://github.com/matrix-org/synapse/issues/6553)) - Fix a cause of state resets in room versions 2 onwards. ([\#6556](https://github.com/matrix-org/synapse/issues/6556), [\#6560](https://github.com/matrix-org/synapse/issues/6560)) Bugfixes -------- - Fix a bug which could cause the federation server to incorrectly return errors when handling certain obscure event graphs. ([\#6526](https://github.com/matrix-org/synapse/issues/6526), [\#6527](https://github.com/matrix-org/synapse/issues/6527)) Synapse 1.7.0 (2019-12-13) ========================== This release changes the default settings so that only local authenticated users can query the server's room directory. See the [upgrade notes](docs/upgrade.md#upgrading-to-v170) for details. Support for SQLite versions before 3.11 is now deprecated. A future release will refuse to start if used with an SQLite version before 3.11. Administrators are reminded that SQLite should not be used for production instances. Instructions for migrating to Postgres are available [here](docs/postgres.md). A future release of synapse will, by default, disable federation for servers using SQLite. No significant changes since 1.7.0rc2. Synapse 1.7.0rc2 (2019-12-11) ============================= Bugfixes -------- - Fix incorrect error message for invalid requests when setting user's avatar URL. ([\#6497](https://github.com/matrix-org/synapse/issues/6497)) - Fix support for SQLite 3.7. ([\#6499](https://github.com/matrix-org/synapse/issues/6499)) - Fix regression where sending email push would not work when using a pusher worker. ([\#6507](https://github.com/matrix-org/synapse/issues/6507), [\#6509](https://github.com/matrix-org/synapse/issues/6509)) Synapse 1.7.0rc1 (2019-12-09) ============================= Features -------- - Implement per-room message retention policies. ([\#5815](https://github.com/matrix-org/synapse/issues/5815), [\#6436](https://github.com/matrix-org/synapse/issues/6436)) - Add etag and count fields to key backup endpoints to help clients guess if there are new keys. ([\#5858](https://github.com/matrix-org/synapse/issues/5858)) - Add `/admin/v2/users` endpoint with pagination. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5925](https://github.com/matrix-org/synapse/issues/5925)) - Require User-Interactive Authentication for `/account/3pid/add`, meaning the user's password will be required to add a third-party ID to their account. ([\#6119](https://github.com/matrix-org/synapse/issues/6119)) - Implement the `/_matrix/federation/unstable/net.atleastfornow/state/` API as drafted in MSC2314. ([\#6176](https://github.com/matrix-org/synapse/issues/6176)) - Configure privacy-preserving settings by default for the room directory. ([\#6355](https://github.com/matrix-org/synapse/issues/6355)) - Add ephemeral messages support by partially implementing [MSC2228](https://github.com/matrix-org/matrix-doc/pull/2228). ([\#6409](https://github.com/matrix-org/synapse/issues/6409)) - Add support for [MSC 2367](https://github.com/matrix-org/matrix-doc/pull/2367), which allows specifying a reason on all membership events. ([\#6434](https://github.com/matrix-org/synapse/issues/6434)) Bugfixes -------- - Transfer non-standard power levels on room upgrade. ([\#6237](https://github.com/matrix-org/synapse/issues/6237)) - Fix error from the Pillow library when uploading RGBA images. ([\#6241](https://github.com/matrix-org/synapse/issues/6241)) - Correctly apply the event filter to the `state`, `events_before` and `events_after` fields in the response to `/context` requests. ([\#6329](https://github.com/matrix-org/synapse/issues/6329)) - Fix caching devices for remote users when using workers, so that we don't attempt to refetch (and potentially fail) each time a user requests devices. ([\#6332](https://github.com/matrix-org/synapse/issues/6332)) - Prevent account data syncs getting lost across TCP replication. ([\#6333](https://github.com/matrix-org/synapse/issues/6333)) - Fix bug: TypeError in `register_user()` while using LDAP auth module. ([\#6406](https://github.com/matrix-org/synapse/issues/6406)) - Fix an intermittent exception when handling read-receipts. ([\#6408](https://github.com/matrix-org/synapse/issues/6408)) - Fix broken guest registration when there are existing blocks of numeric user IDs. ([\#6420](https://github.com/matrix-org/synapse/issues/6420)) - Fix startup error when http proxy is defined. ([\#6421](https://github.com/matrix-org/synapse/issues/6421)) - Fix error when using synapse_port_db on a vanilla synapse db. ([\#6449](https://github.com/matrix-org/synapse/issues/6449)) - Fix uploading multiple cross signing signatures for the same user. ([\#6451](https://github.com/matrix-org/synapse/issues/6451)) - Fix bug which lead to exceptions being thrown in a loop when a cross-signed device is deleted. ([\#6462](https://github.com/matrix-org/synapse/issues/6462)) - Fix `synapse_port_db` not exiting with a 0 code if something went wrong during the port process. ([\#6470](https://github.com/matrix-org/synapse/issues/6470)) - Improve sanity-checking when receiving events over federation. ([\#6472](https://github.com/matrix-org/synapse/issues/6472)) - Fix inaccurate per-block Prometheus metrics. ([\#6491](https://github.com/matrix-org/synapse/issues/6491)) - Fix small performance regression for sending invites. ([\#6493](https://github.com/matrix-org/synapse/issues/6493)) - Back out cross-signing code added in Synapse 1.5.0, which caused a performance regression. ([\#6494](https://github.com/matrix-org/synapse/issues/6494)) Improved Documentation ---------------------- - Update documentation and variables in user contributed systemd reference file. ([\#6369](https://github.com/matrix-org/synapse/issues/6369), [\#6490](https://github.com/matrix-org/synapse/issues/6490)) - Fix link in the user directory documentation. ([\#6388](https://github.com/matrix-org/synapse/issues/6388)) - Add build instructions to the docker readme. ([\#6390](https://github.com/matrix-org/synapse/issues/6390)) - Switch Ubuntu package install recommendation to use python3 packages in INSTALL.md. ([\#6443](https://github.com/matrix-org/synapse/issues/6443)) - Write some docs for the quarantine_media api. ([\#6458](https://github.com/matrix-org/synapse/issues/6458)) - Convert CONTRIBUTING.rst to markdown (among other small fixes). ([\#6461](https://github.com/matrix-org/synapse/issues/6461)) Deprecations and Removals ------------------------- - Remove admin/v1/users_paginate endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5925](https://github.com/matrix-org/synapse/issues/5925)) - Remove fallback for federation with old servers which lack the /federation/v1/state_ids API. ([\#6488](https://github.com/matrix-org/synapse/issues/6488)) Internal Changes ---------------- - Add benchmarks for structured logging and improve output performance. ([\#6266](https://github.com/matrix-org/synapse/issues/6266)) - Improve the performance of outputting structured logging. ([\#6322](https://github.com/matrix-org/synapse/issues/6322)) - Refactor some code in the event authentication path for clarity. ([\#6343](https://github.com/matrix-org/synapse/issues/6343), [\#6468](https://github.com/matrix-org/synapse/issues/6468), [\#6480](https://github.com/matrix-org/synapse/issues/6480)) - Clean up some unnecessary quotation marks around the codebase. ([\#6362](https://github.com/matrix-org/synapse/issues/6362)) - Complain on startup instead of 500'ing during runtime when `public_baseurl` isn't set when necessary. ([\#6379](https://github.com/matrix-org/synapse/issues/6379)) - Add a test scenario to make sure room history purges don't break `/messages` in the future. ([\#6392](https://github.com/matrix-org/synapse/issues/6392)) - Clarifications for the email configuration settings. ([\#6423](https://github.com/matrix-org/synapse/issues/6423)) - Add more tests to the blacklist when running in worker mode. ([\#6429](https://github.com/matrix-org/synapse/issues/6429)) - Refactor data store layer to support multiple databases in the future. ([\#6454](https://github.com/matrix-org/synapse/issues/6454), [\#6464](https://github.com/matrix-org/synapse/issues/6464), [\#6469](https://github.com/matrix-org/synapse/issues/6469), [\#6487](https://github.com/matrix-org/synapse/issues/6487)) - Port synapse.rest.client.v1 to async/await. ([\#6482](https://github.com/matrix-org/synapse/issues/6482)) - Port synapse.rest.client.v2_alpha to async/await. ([\#6483](https://github.com/matrix-org/synapse/issues/6483)) - Port SyncHandler to async/await. ([\#6484](https://github.com/matrix-org/synapse/issues/6484)) Synapse 1.6.1 (2019-11-28) ========================== Security updates ---------------- This release includes a security fix ([\#6426](https://github.com/matrix-org/synapse/issues/6426), below). Administrators are encouraged to upgrade as soon as possible. Bugfixes -------- - Clean up local threepids from user on account deactivation. ([\#6426](https://github.com/matrix-org/synapse/issues/6426)) - Fix startup error when http proxy is defined. ([\#6421](https://github.com/matrix-org/synapse/issues/6421)) Synapse 1.6.0 (2019-11-26) ========================== Bugfixes -------- - Fix phone home stats reporting. ([\#6418](https://github.com/matrix-org/synapse/issues/6418)) Synapse 1.6.0rc2 (2019-11-25) ============================= Bugfixes -------- - Fix a bug which could cause the background database update handler for event labels to get stuck in a loop raising exceptions. ([\#6407](https://github.com/matrix-org/synapse/issues/6407)) Synapse 1.6.0rc1 (2019-11-20) ============================= Features -------- - Add federation support for cross-signing. ([\#5727](https://github.com/matrix-org/synapse/issues/5727)) - Increase default room version from 4 to 5, thereby enforcing server key validity period checks. ([\#6220](https://github.com/matrix-org/synapse/issues/6220)) - Add support for outbound http proxying via http_proxy/HTTPS_PROXY env vars. ([\#6238](https://github.com/matrix-org/synapse/issues/6238)) - Implement label-based filtering on `/sync` and `/messages` ([MSC2326](https://github.com/matrix-org/matrix-doc/pull/2326)). ([\#6301](https://github.com/matrix-org/synapse/issues/6301), [\#6310](https://github.com/matrix-org/synapse/issues/6310), [\#6340](https://github.com/matrix-org/synapse/issues/6340)) Bugfixes -------- - Fix LruCache callback deduplication for Python 3.8. Contributed by @V02460. ([\#6213](https://github.com/matrix-org/synapse/issues/6213)) - Remove a room from a server's public rooms list on room upgrade. ([\#6232](https://github.com/matrix-org/synapse/issues/6232), [\#6235](https://github.com/matrix-org/synapse/issues/6235)) - Delete keys from key backup when deleting backup versions. ([\#6253](https://github.com/matrix-org/synapse/issues/6253)) - Make notification of cross-signing signatures work with workers. ([\#6254](https://github.com/matrix-org/synapse/issues/6254)) - Fix exception when remote servers attempt to join a room that they're not allowed to join. ([\#6278](https://github.com/matrix-org/synapse/issues/6278)) - Prevent errors from appearing on Synapse startup if `git` is not installed. ([\#6284](https://github.com/matrix-org/synapse/issues/6284)) - Appservice requests will no longer contain a double slash prefix when the appservice url provided ends in a slash. ([\#6306](https://github.com/matrix-org/synapse/issues/6306)) - Fix `/purge_room` admin API. ([\#6307](https://github.com/matrix-org/synapse/issues/6307)) - Fix the `hidden` field in the `devices` table for SQLite versions prior to 3.23.0. ([\#6313](https://github.com/matrix-org/synapse/issues/6313)) - Fix bug which caused rejected events to be persisted with the wrong room state. ([\#6320](https://github.com/matrix-org/synapse/issues/6320)) - Fix bug where `rc_login` ratelimiting would prematurely kick in. ([\#6335](https://github.com/matrix-org/synapse/issues/6335)) - Prevent the server taking a long time to start up when guest registration is enabled. ([\#6338](https://github.com/matrix-org/synapse/issues/6338)) - Fix bug where upgrading a guest account to a full user would fail when account validity is enabled. ([\#6359](https://github.com/matrix-org/synapse/issues/6359)) - Fix `to_device` stream ID getting reset every time Synapse restarts, which had the potential to cause unable to decrypt errors. ([\#6363](https://github.com/matrix-org/synapse/issues/6363)) - Fix permission denied error when trying to generate a config file with the docker image. ([\#6389](https://github.com/matrix-org/synapse/issues/6389)) Improved Documentation ---------------------- - Contributor documentation now mentions script to run linters. ([\#6164](https://github.com/matrix-org/synapse/issues/6164)) - Modify CAPTCHA_SETUP.md to update the terms `private key` and `public key` to `secret key` and `site key` respectively. Contributed by Yash Jipkate. ([\#6257](https://github.com/matrix-org/synapse/issues/6257)) - Update `INSTALL.md` Email section to talk about `account_threepid_delegates`. ([\#6272](https://github.com/matrix-org/synapse/issues/6272)) - Fix a small typo in `account_threepid_delegates` configuration option. ([\#6273](https://github.com/matrix-org/synapse/issues/6273)) Internal Changes ---------------- - Add a CI job to test the `synapse_port_db` script. ([\#6140](https://github.com/matrix-org/synapse/issues/6140), [\#6276](https://github.com/matrix-org/synapse/issues/6276)) - Convert EventContext to an attrs. ([\#6218](https://github.com/matrix-org/synapse/issues/6218)) - Move `persist_events` out from main data store. ([\#6240](https://github.com/matrix-org/synapse/issues/6240), [\#6300](https://github.com/matrix-org/synapse/issues/6300)) - Reduce verbosity of user/room stats. ([\#6250](https://github.com/matrix-org/synapse/issues/6250)) - Reduce impact of debug logging. ([\#6251](https://github.com/matrix-org/synapse/issues/6251)) - Expose some homeserver functionality to spam checkers. ([\#6259](https://github.com/matrix-org/synapse/issues/6259)) - Change cache descriptors to always return deferreds. ([\#6263](https://github.com/matrix-org/synapse/issues/6263), [\#6291](https://github.com/matrix-org/synapse/issues/6291)) - Fix incorrect comment regarding the functionality of an `if` statement. ([\#6269](https://github.com/matrix-org/synapse/issues/6269)) - Update CI to run `isort` over the `scripts` and `scripts-dev` directories. ([\#6270](https://github.com/matrix-org/synapse/issues/6270)) - Replace every instance of `logger.warn` method with `logger.warning` as the former is deprecated. ([\#6271](https://github.com/matrix-org/synapse/issues/6271), [\#6314](https://github.com/matrix-org/synapse/issues/6314)) - Port replication http server endpoints to async/await. ([\#6274](https://github.com/matrix-org/synapse/issues/6274)) - Port room rest handlers to async/await. ([\#6275](https://github.com/matrix-org/synapse/issues/6275)) - Remove redundant CLI parameters on CI's `flake8` step. ([\#6277](https://github.com/matrix-org/synapse/issues/6277)) - Port `federation_server.py` to async/await. ([\#6279](https://github.com/matrix-org/synapse/issues/6279)) - Port receipt and read markers to async/wait. ([\#6280](https://github.com/matrix-org/synapse/issues/6280)) - Split out state storage into separate data store. ([\#6294](https://github.com/matrix-org/synapse/issues/6294), [\#6295](https://github.com/matrix-org/synapse/issues/6295)) - Refactor EventContext for clarity. ([\#6298](https://github.com/matrix-org/synapse/issues/6298)) - Update the version of black used to 19.10b0. ([\#6304](https://github.com/matrix-org/synapse/issues/6304)) - Add some documentation about worker replication. ([\#6305](https://github.com/matrix-org/synapse/issues/6305)) - Move admin endpoints into separate files. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#6308](https://github.com/matrix-org/synapse/issues/6308)) - Document the use of `lint.sh` for code style enforcement & extend it to run on specified paths only. ([\#6312](https://github.com/matrix-org/synapse/issues/6312)) - Add optional python dependencies and dependent binary libraries to snapcraft packaging. ([\#6317](https://github.com/matrix-org/synapse/issues/6317)) - Remove the dependency on psutil and replace functionality with the stdlib `resource` module. ([\#6318](https://github.com/matrix-org/synapse/issues/6318), [\#6336](https://github.com/matrix-org/synapse/issues/6336)) - Improve documentation for EventContext fields. ([\#6319](https://github.com/matrix-org/synapse/issues/6319)) - Add some checks that we aren't using state from rejected events. ([\#6330](https://github.com/matrix-org/synapse/issues/6330)) - Add continuous integration for python 3.8. ([\#6341](https://github.com/matrix-org/synapse/issues/6341)) - Correct spacing/case of various instances of the word "homeserver". ([\#6357](https://github.com/matrix-org/synapse/issues/6357)) - Temporarily blacklist the failing unit test PurgeRoomTestCase.test_purge_room. ([\#6361](https://github.com/matrix-org/synapse/issues/6361)) Synapse 1.5.1 (2019-11-06) ========================== Features -------- - Limit the length of data returned by url previews, to prevent DoS attacks. ([\#6331](https://github.com/matrix-org/synapse/issues/6331), [\#6334](https://github.com/matrix-org/synapse/issues/6334)) Synapse 1.5.0 (2019-10-29) ========================== Security updates ---------------- This release includes a security fix ([\#6262](https://github.com/matrix-org/synapse/issues/6262), below). Administrators are encouraged to upgrade as soon as possible. Bugfixes -------- - Fix bug where room directory search was case sensitive. ([\#6268](https://github.com/matrix-org/synapse/issues/6268)) Synapse 1.5.0rc2 (2019-10-28) ============================= Bugfixes -------- - Update list of boolean columns in `synapse_port_db`. ([\#6247](https://github.com/matrix-org/synapse/issues/6247)) - Fix /keys/query API on workers. ([\#6256](https://github.com/matrix-org/synapse/issues/6256)) - Improve signature checking on some federation APIs. ([\#6262](https://github.com/matrix-org/synapse/issues/6262)) Internal Changes ---------------- - Move schema delta files to the correct data store. ([\#6248](https://github.com/matrix-org/synapse/issues/6248)) - Small performance improvement by removing repeated config lookups in room stats calculation. ([\#6255](https://github.com/matrix-org/synapse/issues/6255)) Synapse 1.5.0rc1 (2019-10-24) ========================== Features -------- - Improve quality of thumbnails for 1-bit/8-bit color palette images. ([\#2142](https://github.com/matrix-org/synapse/issues/2142)) - Add ability to upload cross-signing signatures. ([\#5726](https://github.com/matrix-org/synapse/issues/5726)) - Allow uploading of cross-signing keys. ([\#5769](https://github.com/matrix-org/synapse/issues/5769)) - CAS login now provides a default display name for users if a `displayname_attribute` is set in the configuration file. ([\#6114](https://github.com/matrix-org/synapse/issues/6114)) - Reject all pending invites for a user during deactivation. ([\#6125](https://github.com/matrix-org/synapse/issues/6125)) - Add config option to suppress client side resource limit alerting. ([\#6173](https://github.com/matrix-org/synapse/issues/6173)) Bugfixes -------- - Return an HTTP 404 instead of 400 when requesting a filter by ID that is unknown to the server. Thanks to @krombel for contributing this! ([\#2380](https://github.com/matrix-org/synapse/issues/2380)) - Fix a bug where users could be invited twice to the same group. ([\#3436](https://github.com/matrix-org/synapse/issues/3436)) - Fix `/createRoom` failing with badly-formatted MXIDs in the invitee list. Thanks to @wener291! ([\#4088](https://github.com/matrix-org/synapse/issues/4088)) - Make the `synapse_port_db` script create the right indexes on a new PostgreSQL database. ([\#6102](https://github.com/matrix-org/synapse/issues/6102), [\#6178](https://github.com/matrix-org/synapse/issues/6178), [\#6243](https://github.com/matrix-org/synapse/issues/6243)) - Fix bug when uploading a large file: Synapse responds with `M_UNKNOWN` while it should be `M_TOO_LARGE` according to spec. Contributed by Anshul Angaria. ([\#6109](https://github.com/matrix-org/synapse/issues/6109)) - Fix user push rules being deleted from a room when it is upgraded. ([\#6144](https://github.com/matrix-org/synapse/issues/6144)) - Don't 500 when trying to exchange a revoked 3PID invite. ([\#6147](https://github.com/matrix-org/synapse/issues/6147)) - Fix transferring notifications and tags when joining an upgraded room that is new to your server. ([\#6155](https://github.com/matrix-org/synapse/issues/6155)) - Fix bug where guest account registration can wedge after restart. ([\#6161](https://github.com/matrix-org/synapse/issues/6161)) - Fix monthly active user reaping when reserved users are specified. ([\#6168](https://github.com/matrix-org/synapse/issues/6168)) - Fix `/federation/v1/state` endpoint not supporting newer room versions. ([\#6170](https://github.com/matrix-org/synapse/issues/6170)) - Fix bug where we were updating censored events as bytes rather than text, occaisonally causing invalid JSON being inserted breaking APIs that attempted to fetch such events. ([\#6186](https://github.com/matrix-org/synapse/issues/6186)) - Fix occasional missed updates in the room and user directories. ([\#6187](https://github.com/matrix-org/synapse/issues/6187)) - Fix tracing of non-JSON APIs, `/media`, `/key` etc. ([\#6195](https://github.com/matrix-org/synapse/issues/6195)) - Fix bug where presence would not get timed out correctly if a synchrotron worker is used and restarted. ([\#6212](https://github.com/matrix-org/synapse/issues/6212)) - synapse_port_db: Add 2 additional BOOLEAN_COLUMNS to be able to convert from database schema v56. ([\#6216](https://github.com/matrix-org/synapse/issues/6216)) - Fix a bug where the Synapse demo script blacklisted `::1` (ipv6 localhost) from receiving federation traffic. ([\#6229](https://github.com/matrix-org/synapse/issues/6229)) Updates to the Docker image --------------------------- - Fix logging getting lost for the docker image. ([\#6197](https://github.com/matrix-org/synapse/issues/6197)) Internal Changes ---------------- - Update `user_filters` table to have a unique index, and non-null columns. Thanks to @pik for contributing this. ([\#1172](https://github.com/matrix-org/synapse/issues/1172), [\#6175](https://github.com/matrix-org/synapse/issues/6175), [\#6184](https://github.com/matrix-org/synapse/issues/6184)) - Allow devices to be marked as hidden, for use by features such as cross-signing. This adds a new field with a default value to the devices field in the database, and so the database upgrade may take a long time depending on how many devices are in the database. ([\#5759](https://github.com/matrix-org/synapse/issues/5759)) - Move lookup-related functions from RoomMemberHandler to IdentityHandler. ([\#5978](https://github.com/matrix-org/synapse/issues/5978)) - Improve performance of the public room list directory. ([\#6019](https://github.com/matrix-org/synapse/issues/6019), [\#6152](https://github.com/matrix-org/synapse/issues/6152), [\#6153](https://github.com/matrix-org/synapse/issues/6153), [\#6154](https://github.com/matrix-org/synapse/issues/6154)) - Edit header dicts docstrings in `SimpleHttpClient` to note that `str` or `bytes` can be passed as header keys. ([\#6077](https://github.com/matrix-org/synapse/issues/6077)) - Add snapcraft packaging information. Contributed by @devec0. ([\#6084](https://github.com/matrix-org/synapse/issues/6084), [\#6191](https://github.com/matrix-org/synapse/issues/6191)) - Kill off half-implemented password-reset via sms. ([\#6101](https://github.com/matrix-org/synapse/issues/6101)) - Remove `get_user_by_req` opentracing span and add some tags. ([\#6108](https://github.com/matrix-org/synapse/issues/6108)) - Drop some unused database tables. ([\#6115](https://github.com/matrix-org/synapse/issues/6115)) - Add env var to turn on tracking of log context changes. ([\#6127](https://github.com/matrix-org/synapse/issues/6127)) - Refactor configuration loading to allow better typechecking. ([\#6137](https://github.com/matrix-org/synapse/issues/6137)) - Log responder when responding to media request. ([\#6139](https://github.com/matrix-org/synapse/issues/6139)) - Improve performance of `find_next_generated_user_id` DB query. ([\#6148](https://github.com/matrix-org/synapse/issues/6148)) - Expand type-checking on modules imported by `synapse.config`. ([\#6150](https://github.com/matrix-org/synapse/issues/6150)) - Use Postgres ANY for selecting many values. ([\#6156](https://github.com/matrix-org/synapse/issues/6156)) - Add more caching to `_get_joined_users_from_context` DB query. ([\#6159](https://github.com/matrix-org/synapse/issues/6159)) - Add some metrics on the federation sender. ([\#6160](https://github.com/matrix-org/synapse/issues/6160)) - Add some logging to the rooms stats updates, to try to track down a flaky test. ([\#6167](https://github.com/matrix-org/synapse/issues/6167)) - Remove unused `timeout` parameter from `_get_public_room_list`. ([\#6179](https://github.com/matrix-org/synapse/issues/6179)) - Reject (accidental) attempts to insert bytes into postgres tables. ([\#6186](https://github.com/matrix-org/synapse/issues/6186)) - Make `version` optional in body of `PUT /room_keys/version/{version}`, since it's redundant. ([\#6189](https://github.com/matrix-org/synapse/issues/6189)) - Make storage layer responsible for adding device names to key, rather than the handler. ([\#6193](https://github.com/matrix-org/synapse/issues/6193)) - Port `synapse.rest.admin` module to use async/await. ([\#6196](https://github.com/matrix-org/synapse/issues/6196)) - Enforce that all boolean configuration values are lowercase in CI. ([\#6203](https://github.com/matrix-org/synapse/issues/6203)) - Remove some unused event-auth code. ([\#6214](https://github.com/matrix-org/synapse/issues/6214)) - Remove `Auth.check` method. ([\#6217](https://github.com/matrix-org/synapse/issues/6217)) - Remove `format_tap.py` script in favour of a perl reimplementation in Sytest's repo. ([\#6219](https://github.com/matrix-org/synapse/issues/6219)) - Refactor storage layer in preparation to support having multiple databases. ([\#6231](https://github.com/matrix-org/synapse/issues/6231)) - Remove some extra quotation marks across the codebase. ([\#6236](https://github.com/matrix-org/synapse/issues/6236)) Synapse 1.4.1 (2019-10-18) ========================== No changes since 1.4.1rc1. Synapse 1.4.1rc1 (2019-10-17) ============================= Bugfixes -------- - Fix bug where redacted events were sometimes incorrectly censored in the database, breaking APIs that attempted to fetch such events. ([\#6185](https://github.com/matrix-org/synapse/issues/6185), [5b0e9948](https://github.com/matrix-org/synapse/commit/5b0e9948eaae801643e594b5abc8ee4b10bd194e)) Synapse 1.4.0 (2019-10-03) ========================== Bugfixes -------- - Redact `client_secret` in server logs. ([\#6158](https://github.com/matrix-org/synapse/issues/6158)) Synapse 1.4.0rc2 (2019-10-02) ============================= Bugfixes -------- - Fix bug in background update that adds last seen information to the `devices` table, and improve its performance on Postgres. ([\#6135](https://github.com/matrix-org/synapse/issues/6135)) - Fix bad performance of censoring redactions background task. ([\#6141](https://github.com/matrix-org/synapse/issues/6141)) - Fix fetching censored redactions from DB, which caused APIs like initial sync to fail if it tried to include the censored redaction. ([\#6145](https://github.com/matrix-org/synapse/issues/6145)) - Fix exceptions when storing large retry intervals for down remote servers. ([\#6146](https://github.com/matrix-org/synapse/issues/6146)) Internal Changes ---------------- - Fix up sample config entry for `redaction_retention_period` option. ([\#6117](https://github.com/matrix-org/synapse/issues/6117)) Synapse 1.4.0rc1 (2019-09-26) ============================= Note that this release includes significant changes around 3pid verification. Administrators are reminded to review the [upgrade notes](docs/upgrade.md#upgrading-to-v140). Features -------- - Changes to 3pid verification: - Add the ability to send registration emails from the homeserver rather than delegating to an identity server. ([\#5835](https://github.com/matrix-org/synapse/issues/5835), [\#5940](https://github.com/matrix-org/synapse/issues/5940), [\#5993](https://github.com/matrix-org/synapse/issues/5993), [\#5994](https://github.com/matrix-org/synapse/issues/5994), [\#5868](https://github.com/matrix-org/synapse/issues/5868)) - Replace `trust_identity_server_for_password_resets` config option with `account_threepid_delegates`, and make the `id_server` parameteter optional on `*/requestToken` endpoints, as per [MSC2263](https://github.com/matrix-org/matrix-doc/pull/2263). ([\#5876](https://github.com/matrix-org/synapse/issues/5876), [\#5969](https://github.com/matrix-org/synapse/issues/5969), [\#6028](https://github.com/matrix-org/synapse/issues/6028)) - Switch to using the v2 Identity Service `/lookup` API where available, with fallback to v1. (Implements [MSC2134](https://github.com/matrix-org/matrix-doc/pull/2134) plus `id_access_token authentication` for v2 Identity Service APIs from [MSC2140](https://github.com/matrix-org/matrix-doc/pull/2140)). ([\#5897](https://github.com/matrix-org/synapse/issues/5897)) - Remove `bind_email` and `bind_msisdn` parameters from `/register` ala [MSC2140](https://github.com/matrix-org/matrix-doc/pull/2140). ([\#5964](https://github.com/matrix-org/synapse/issues/5964)) - Add `m.id_access_token` to `unstable_features` in `/versions` as per [MSC2264](https://github.com/matrix-org/matrix-doc/pull/2264). ([\#5974](https://github.com/matrix-org/synapse/issues/5974)) - Use the v2 Identity Service API for 3PID invites. ([\#5979](https://github.com/matrix-org/synapse/issues/5979)) - Add `POST /_matrix/client/unstable/account/3pid/unbind` endpoint from [MSC2140](https://github.com/matrix-org/matrix-doc/pull/2140) for unbinding a 3PID from an identity server without removing it from the homeserver user account. ([\#5980](https://github.com/matrix-org/synapse/issues/5980), [\#6062](https://github.com/matrix-org/synapse/issues/6062)) - Use `account_threepid_delegate.email` and `account_threepid_delegate.msisdn` for validating threepid sessions. ([\#6011](https://github.com/matrix-org/synapse/issues/6011)) - Allow homeserver to handle or delegate email validation when adding an email to a user's account. ([\#6042](https://github.com/matrix-org/synapse/issues/6042)) - Implement new Client Server API endpoints `/account/3pid/add` and `/account/3pid/bind` as per [MSC2290](https://github.com/matrix-org/matrix-doc/pull/2290). ([\#6043](https://github.com/matrix-org/synapse/issues/6043)) - Add an unstable feature flag for separate add/bind 3pid APIs. ([\#6044](https://github.com/matrix-org/synapse/issues/6044)) - Remove `bind` parameter from Client Server POST `/account` endpoint as per [MSC2290](https://github.com/matrix-org/matrix-doc/pull/2290/). ([\#6067](https://github.com/matrix-org/synapse/issues/6067)) - Add `POST /add_threepid/msisdn/submit_token` endpoint for proxying submitToken on an `account_threepid_handler`. ([\#6078](https://github.com/matrix-org/synapse/issues/6078)) - Add `submit_url` response parameter to `*/msisdn/requestToken` endpoints. ([\#6079](https://github.com/matrix-org/synapse/issues/6079)) - Add `m.require_identity_server` flag to /version's unstable_features. ([\#5972](https://github.com/matrix-org/synapse/issues/5972)) - Enhancements to OpenTracing support: - Make OpenTracing work in worker mode. ([\#5771](https://github.com/matrix-org/synapse/issues/5771)) - Pass OpenTracing contexts between servers when transmitting EDUs. ([\#5852](https://github.com/matrix-org/synapse/issues/5852)) - OpenTracing for device list updates. ([\#5853](https://github.com/matrix-org/synapse/issues/5853)) - Add a tag recording a request's authenticated entity and corresponding servlet in OpenTracing. ([\#5856](https://github.com/matrix-org/synapse/issues/5856)) - Add minimum OpenTracing for client servlets. ([\#5983](https://github.com/matrix-org/synapse/issues/5983)) - Check at setup that OpenTracing is installed if it's enabled in the config. ([\#5985](https://github.com/matrix-org/synapse/issues/5985)) - Trace replication send times. ([\#5986](https://github.com/matrix-org/synapse/issues/5986)) - Include missing OpenTracing contexts in outbout replication requests. ([\#5982](https://github.com/matrix-org/synapse/issues/5982)) - Fix sending of EDUs when OpenTracing is enabled with an empty whitelist. ([\#5984](https://github.com/matrix-org/synapse/issues/5984)) - Fix invalid references to None while OpenTracing if the log context slips. ([\#5988](https://github.com/matrix-org/synapse/issues/5988), [\#5991](https://github.com/matrix-org/synapse/issues/5991)) - OpenTracing for room and e2e keys. ([\#5855](https://github.com/matrix-org/synapse/issues/5855)) - Add OpenTracing span over HTTP push processing. ([\#6003](https://github.com/matrix-org/synapse/issues/6003)) - Add an admin API to purge old rooms from the database. ([\#5845](https://github.com/matrix-org/synapse/issues/5845)) - Retry well-known lookups if we have recently seen a valid well-known record for the server. ([\#5850](https://github.com/matrix-org/synapse/issues/5850)) - Add support for filtered room-directory search requests over federation ([MSC2197](https://github.com/matrix-org/matrix-doc/pull/2197), in order to allow upcoming room directory query performance improvements. ([\#5859](https://github.com/matrix-org/synapse/issues/5859)) - Correctly retry all hosts returned from SRV when we fail to connect. ([\#5864](https://github.com/matrix-org/synapse/issues/5864)) - Add admin API endpoint for setting whether or not a user is a server administrator. ([\#5878](https://github.com/matrix-org/synapse/issues/5878)) - Enable cleaning up extremities with dummy events by default to prevent undue build up of forward extremities. ([\#5884](https://github.com/matrix-org/synapse/issues/5884)) - Add config option to sign remote key query responses with a separate key. ([\#5895](https://github.com/matrix-org/synapse/issues/5895)) - Add support for config templating. ([\#5900](https://github.com/matrix-org/synapse/issues/5900)) - Users with the type of "support" or "bot" are no longer required to consent. ([\#5902](https://github.com/matrix-org/synapse/issues/5902)) - Let synctl accept a directory of config files. ([\#5904](https://github.com/matrix-org/synapse/issues/5904)) - Increase max display name size to 256. ([\#5906](https://github.com/matrix-org/synapse/issues/5906)) - Add admin API endpoint for getting whether or not a user is a server administrator. ([\#5914](https://github.com/matrix-org/synapse/issues/5914)) - Redact events in the database that have been redacted for a week. ([\#5934](https://github.com/matrix-org/synapse/issues/5934)) - New prometheus metrics: - `synapse_federation_known_servers`: represents the total number of servers your server knows about (i.e. is in rooms with), including itself. Enable by setting `metrics_flags.known_servers` to True in the configuration.([\#5981](https://github.com/matrix-org/synapse/issues/5981)) - `synapse_build_info`: exposes the Python version, OS version, and Synapse version of the running server. ([\#6005](https://github.com/matrix-org/synapse/issues/6005)) - Give appropriate exit codes when synctl fails. ([\#5992](https://github.com/matrix-org/synapse/issues/5992)) - Apply the federation blacklist to requests to identity servers. ([\#6000](https://github.com/matrix-org/synapse/issues/6000)) - Add `report_stats_endpoint` option to configure where stats are reported to, if enabled. Contributed by @Sorunome. ([\#6012](https://github.com/matrix-org/synapse/issues/6012)) - Add config option to increase ratelimits for room admins redacting messages. ([\#6015](https://github.com/matrix-org/synapse/issues/6015)) - Stop sending federation transactions to servers which have been down for a long time. ([\#6026](https://github.com/matrix-org/synapse/issues/6026)) - Make the process for mapping SAML2 users to matrix IDs more flexible. ([\#6037](https://github.com/matrix-org/synapse/issues/6037)) - Return a clearer error message when a timeout occurs when attempting to contact an identity server. ([\#6073](https://github.com/matrix-org/synapse/issues/6073)) - Prevent password reset's submit_token endpoint from accepting trailing slashes. ([\#6074](https://github.com/matrix-org/synapse/issues/6074)) - Return 403 on `/register/available` if registration has been disabled. ([\#6082](https://github.com/matrix-org/synapse/issues/6082)) - Explicitly log when a homeserver does not have the `trusted_key_servers` config field configured. ([\#6090](https://github.com/matrix-org/synapse/issues/6090)) - Add support for pruning old rows in `user_ips` table. ([\#6098](https://github.com/matrix-org/synapse/issues/6098)) Bugfixes -------- - Don't create broken room when `power_level_content_override.users` does not contain `creator_id`. ([\#5633](https://github.com/matrix-org/synapse/issues/5633)) - Fix database index so that different backup versions can have the same sessions. ([\#5857](https://github.com/matrix-org/synapse/issues/5857)) - Fix Synapse looking for config options `password_reset_failure_template` and `password_reset_success_template`, when they are actually `password_reset_template_failure_html`, `password_reset_template_success_html`. ([\#5863](https://github.com/matrix-org/synapse/issues/5863)) - Fix stack overflow when recovering an appservice which had an outage. ([\#5885](https://github.com/matrix-org/synapse/issues/5885)) - Fix error message which referred to `public_base_url` instead of `public_baseurl`. Thanks to @aaronraimist for the fix! ([\#5909](https://github.com/matrix-org/synapse/issues/5909)) - Fix 404 for thumbnail download when `dynamic_thumbnails` is `false` and the thumbnail was dynamically generated. Fix reported by rkfg. ([\#5915](https://github.com/matrix-org/synapse/issues/5915)) - Fix a cache-invalidation bug for worker-based deployments. ([\#5920](https://github.com/matrix-org/synapse/issues/5920)) - Fix admin API for listing media in a room not being available with an external media repo. ([\#5966](https://github.com/matrix-org/synapse/issues/5966)) - Fix list media admin API always returning an error. ([\#5967](https://github.com/matrix-org/synapse/issues/5967)) - Fix room and user stats tracking. ([\#5971](https://github.com/matrix-org/synapse/issues/5971), [\#5998](https://github.com/matrix-org/synapse/issues/5998), [\#6029](https://github.com/matrix-org/synapse/issues/6029)) - Return a `M_MISSING_PARAM` if `sid` is not provided to `/account/3pid`. ([\#5995](https://github.com/matrix-org/synapse/issues/5995)) - `federation_certificate_verification_whitelist` now will not cause `TypeErrors` to be raised (a regression in 1.3). Additionally, it now supports internationalised domain names in their non-canonical representation. ([\#5996](https://github.com/matrix-org/synapse/issues/5996)) - Only count real users when checking for auto-creation of auto-join room. ([\#6004](https://github.com/matrix-org/synapse/issues/6004)) - Ensure support users can be registered even if MAU limit is reached. ([\#6020](https://github.com/matrix-org/synapse/issues/6020)) - Fix bug where login error was shown incorrectly on SSO fallback login. ([\#6024](https://github.com/matrix-org/synapse/issues/6024)) - Fix bug in calculating the federation retry backoff period. ([\#6025](https://github.com/matrix-org/synapse/issues/6025)) - Prevent exceptions being logged when extremity-cleanup events fail due to lack of user consent to the terms of service. ([\#6053](https://github.com/matrix-org/synapse/issues/6053)) - Remove POST method from password-reset `submit_token` endpoint until we implement `submit_url` functionality. ([\#6056](https://github.com/matrix-org/synapse/issues/6056)) - Fix logcontext spam on non-Linux platforms. ([\#6059](https://github.com/matrix-org/synapse/issues/6059)) - Ensure query parameters in email validation links are URL-encoded. ([\#6063](https://github.com/matrix-org/synapse/issues/6063)) - Fix a bug which caused SAML attribute maps to be overridden by defaults. ([\#6069](https://github.com/matrix-org/synapse/issues/6069)) - Fix the logged number of updated items for the `users_set_deactivated_flag` background update. ([\#6092](https://github.com/matrix-org/synapse/issues/6092)) - Add `sid` to `next_link` for email validation. ([\#6097](https://github.com/matrix-org/synapse/issues/6097)) - Threepid validity checks on msisdns should not be dependent on `threepid_behaviour_email`. ([\#6104](https://github.com/matrix-org/synapse/issues/6104)) - Ensure that servers which are not configured to support email address verification do not offer it in the registration flows. ([\#6107](https://github.com/matrix-org/synapse/issues/6107)) Updates to the Docker image --------------------------- - Avoid changing `UID/GID` if they are already correct. ([\#5970](https://github.com/matrix-org/synapse/issues/5970)) - Provide `SYNAPSE_WORKER` envvar to specify python module. ([\#6058](https://github.com/matrix-org/synapse/issues/6058)) Improved Documentation ---------------------- - Convert documentation to markdown (from rst) ([\#5849](https://github.com/matrix-org/synapse/issues/5849)) - Update `INSTALL.md` to say that Python 2 is no longer supported. ([\#5953](https://github.com/matrix-org/synapse/issues/5953)) - Add developer documentation for using SAML2. ([\#6032](https://github.com/matrix-org/synapse/issues/6032)) - Add some notes on rolling back to v1.3.1. ([\#6049](https://github.com/matrix-org/synapse/issues/6049)) - Update the upgrade notes. ([\#6050](https://github.com/matrix-org/synapse/issues/6050)) Deprecations and Removals ------------------------- - Remove shared-secret registration from `/_matrix/client/r0/register` endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5877](https://github.com/matrix-org/synapse/issues/5877)) - Deprecate the `trusted_third_party_id_servers` option. ([\#5875](https://github.com/matrix-org/synapse/issues/5875)) Internal Changes ---------------- - Lay the groundwork for structured logging output. ([\#5680](https://github.com/matrix-org/synapse/issues/5680)) - Retry well-known lookup before the cache expires, giving a grace period where the remote well-known can be down but we still use the old result. ([\#5844](https://github.com/matrix-org/synapse/issues/5844)) - Remove log line for debugging issue #5407. ([\#5860](https://github.com/matrix-org/synapse/issues/5860)) - Refactor the Appservice scheduler code. ([\#5886](https://github.com/matrix-org/synapse/issues/5886)) - Compatibility with v2 Identity Service APIs other than /lookup. ([\#5892](https://github.com/matrix-org/synapse/issues/5892), [\#6013](https://github.com/matrix-org/synapse/issues/6013)) - Stop populating some unused tables. ([\#5893](https://github.com/matrix-org/synapse/issues/5893), [\#6047](https://github.com/matrix-org/synapse/issues/6047)) - Add missing index on `users_in_public_rooms` to improve the performance of directory queries. ([\#5894](https://github.com/matrix-org/synapse/issues/5894)) - Improve the logging when we have an error when fetching signing keys. ([\#5896](https://github.com/matrix-org/synapse/issues/5896)) - Add support for database engine-specific schema deltas, based on file extension. ([\#5911](https://github.com/matrix-org/synapse/issues/5911)) - Update Buildkite pipeline to use plugins instead of buildkite-agent commands. ([\#5922](https://github.com/matrix-org/synapse/issues/5922)) - Add link in sample config to the logging config schema. ([\#5926](https://github.com/matrix-org/synapse/issues/5926)) - Remove unnecessary parentheses in return statements. ([\#5931](https://github.com/matrix-org/synapse/issues/5931)) - Remove unused `jenkins/prepare_sytest.sh` file. ([\#5938](https://github.com/matrix-org/synapse/issues/5938)) - Move Buildkite pipeline config to the pipelines repo. ([\#5943](https://github.com/matrix-org/synapse/issues/5943)) - Remove unnecessary return statements in the codebase which were the result of a regex run. ([\#5962](https://github.com/matrix-org/synapse/issues/5962)) - Remove left-over methods from v1 registration API. ([\#5963](https://github.com/matrix-org/synapse/issues/5963)) - Cleanup event auth type initialisation. ([\#5975](https://github.com/matrix-org/synapse/issues/5975)) - Clean up dependency checking at setup. ([\#5989](https://github.com/matrix-org/synapse/issues/5989)) - Update OpenTracing docs to use the unified `trace` method. ([\#5776](https://github.com/matrix-org/synapse/issues/5776)) - Small refactor of function arguments and docstrings in` RoomMemberHandler`. ([\#6009](https://github.com/matrix-org/synapse/issues/6009)) - Remove unused `origin` argument on `FederationHandler.add_display_name_to_third_party_invite`. ([\#6010](https://github.com/matrix-org/synapse/issues/6010)) - Add a `failure_ts` column to the `destinations` database table. ([\#6016](https://github.com/matrix-org/synapse/issues/6016), [\#6072](https://github.com/matrix-org/synapse/issues/6072)) - Clean up some code in the retry logic. ([\#6017](https://github.com/matrix-org/synapse/issues/6017)) - Fix the structured logging tests stomping on the global log configuration for subsequent tests. ([\#6023](https://github.com/matrix-org/synapse/issues/6023)) - Clean up the sample config for SAML authentication. ([\#6064](https://github.com/matrix-org/synapse/issues/6064)) - Change mailer logging to reflect Synapse doesn't just do chat notifications by email now. ([\#6075](https://github.com/matrix-org/synapse/issues/6075)) - Move last-seen info into devices table. ([\#6089](https://github.com/matrix-org/synapse/issues/6089)) - Remove unused parameter to `get_user_id_by_threepid`. ([\#6099](https://github.com/matrix-org/synapse/issues/6099)) - Refactor the user-interactive auth handling. ([\#6105](https://github.com/matrix-org/synapse/issues/6105)) - Refactor code for calculating registration flows. ([\#6106](https://github.com/matrix-org/synapse/issues/6106)) Synapse 1.3.1 (2019-08-17) ========================== Features -------- - Drop hard dependency on `sdnotify` python package. ([\#5871](https://github.com/matrix-org/synapse/issues/5871)) Bugfixes -------- - Fix startup issue (hang on ACME provisioning) due to ordering of Twisted reactor startup. Thanks to @chrismoos for supplying the fix. ([\#5867](https://github.com/matrix-org/synapse/issues/5867)) Synapse 1.3.0 (2019-08-15) ========================== Bugfixes -------- - Fix 500 Internal Server Error on `publicRooms` when the public room list was cached. ([\#5851](https://github.com/matrix-org/synapse/issues/5851)) Synapse 1.3.0rc1 (2019-08-13) ========================== Features -------- - Use `M_USER_DEACTIVATED` instead of `M_UNKNOWN` for errcode when a deactivated user attempts to login. ([\#5686](https://github.com/matrix-org/synapse/issues/5686)) - Add sd_notify hooks to ease systemd integration and allows usage of Type=Notify. ([\#5732](https://github.com/matrix-org/synapse/issues/5732)) - Synapse will no longer serve any media repo admin endpoints when `enable_media_repo` is set to False in the configuration. If a media repo worker is used, the admin APIs relating to the media repo will be served from it instead. ([\#5754](https://github.com/matrix-org/synapse/issues/5754), [\#5848](https://github.com/matrix-org/synapse/issues/5848)) - Synapse can now be configured to not join remote rooms of a given "complexity" (currently, state events) over federation. This option can be used to prevent adverse performance on resource-constrained homeservers. ([\#5783](https://github.com/matrix-org/synapse/issues/5783)) - Allow defining HTML templates to serve the user on account renewal attempt when using the account validity feature. ([\#5807](https://github.com/matrix-org/synapse/issues/5807)) Bugfixes -------- - Fix UISIs during homeserver outage. ([\#5693](https://github.com/matrix-org/synapse/issues/5693), [\#5789](https://github.com/matrix-org/synapse/issues/5789)) - Fix stack overflow in server key lookup code. ([\#5724](https://github.com/matrix-org/synapse/issues/5724)) - start.sh no longer uses deprecated cli option. ([\#5725](https://github.com/matrix-org/synapse/issues/5725)) - Log when we receive an event receipt from an unexpected origin. ([\#5743](https://github.com/matrix-org/synapse/issues/5743)) - Fix debian packaging scripts to correctly build sid packages. ([\#5775](https://github.com/matrix-org/synapse/issues/5775)) - Correctly handle redactions of redactions. ([\#5788](https://github.com/matrix-org/synapse/issues/5788)) - Return 404 instead of 403 when accessing /rooms/{roomId}/event/{eventId} for an event without the appropriate permissions. ([\#5798](https://github.com/matrix-org/synapse/issues/5798)) - Fix check that tombstone is a state event in push rules. ([\#5804](https://github.com/matrix-org/synapse/issues/5804)) - Fix error when trying to login as a deactivated user when using a worker to handle login. ([\#5806](https://github.com/matrix-org/synapse/issues/5806)) - Fix bug where user `/sync` stream could get wedged in rare circumstances. ([\#5825](https://github.com/matrix-org/synapse/issues/5825)) - The purge_remote_media.sh script was fixed. ([\#5839](https://github.com/matrix-org/synapse/issues/5839)) Deprecations and Removals ------------------------- - Synapse now no longer accepts the `-v`/`--verbose`, `-f`/`--log-file`, or `--log-config` command line flags, and removes the deprecated `verbose` and `log_file` configuration file options. Users of these options should migrate their options into the dedicated log configuration. ([\#5678](https://github.com/matrix-org/synapse/issues/5678), [\#5729](https://github.com/matrix-org/synapse/issues/5729)) - Remove non-functional 'expire_access_token' setting. ([\#5782](https://github.com/matrix-org/synapse/issues/5782)) Internal Changes ---------------- - Make Jaeger fully configurable. ([\#5694](https://github.com/matrix-org/synapse/issues/5694)) - Add precautionary measures to prevent future abuse of `window.opener` in default welcome page. ([\#5695](https://github.com/matrix-org/synapse/issues/5695)) - Reduce database IO usage by optimising queries for current membership. ([\#5706](https://github.com/matrix-org/synapse/issues/5706), [\#5738](https://github.com/matrix-org/synapse/issues/5738), [\#5746](https://github.com/matrix-org/synapse/issues/5746), [\#5752](https://github.com/matrix-org/synapse/issues/5752), [\#5770](https://github.com/matrix-org/synapse/issues/5770), [\#5774](https://github.com/matrix-org/synapse/issues/5774), [\#5792](https://github.com/matrix-org/synapse/issues/5792), [\#5793](https://github.com/matrix-org/synapse/issues/5793)) - Improve caching when fetching `get_filtered_current_state_ids`. ([\#5713](https://github.com/matrix-org/synapse/issues/5713)) - Don't accept opentracing data from clients. ([\#5715](https://github.com/matrix-org/synapse/issues/5715)) - Speed up PostgreSQL unit tests in CI. ([\#5717](https://github.com/matrix-org/synapse/issues/5717)) - Update the coding style document. ([\#5719](https://github.com/matrix-org/synapse/issues/5719)) - Improve database query performance when recording retry intervals for remote hosts. ([\#5720](https://github.com/matrix-org/synapse/issues/5720)) - Add a set of opentracing utils. ([\#5722](https://github.com/matrix-org/synapse/issues/5722)) - Cache result of get_version_string to reduce overhead of `/version` federation requests. ([\#5730](https://github.com/matrix-org/synapse/issues/5730)) - Return 'user_type' in admin API user endpoints results. ([\#5731](https://github.com/matrix-org/synapse/issues/5731)) - Don't package the sytest test blacklist file. ([\#5733](https://github.com/matrix-org/synapse/issues/5733)) - Replace uses of returnValue with plain return, as returnValue is not needed on Python 3. ([\#5736](https://github.com/matrix-org/synapse/issues/5736)) - Blacklist some flakey tests in worker mode. ([\#5740](https://github.com/matrix-org/synapse/issues/5740)) - Fix some error cases in the caching layer. ([\#5749](https://github.com/matrix-org/synapse/issues/5749)) - Add a prometheus metric for pending cache lookups. ([\#5750](https://github.com/matrix-org/synapse/issues/5750)) - Stop trying to fetch events with event_id=None. ([\#5753](https://github.com/matrix-org/synapse/issues/5753)) - Convert RedactionTestCase to modern test style. ([\#5768](https://github.com/matrix-org/synapse/issues/5768)) - Allow looping calls to be given arguments. ([\#5780](https://github.com/matrix-org/synapse/issues/5780)) - Set the logs emitted when checking typing and presence timeouts to DEBUG level, not INFO. ([\#5785](https://github.com/matrix-org/synapse/issues/5785)) - Remove DelayedCall debugging from the test suite, as it is no longer required in the vast majority of Synapse's tests. ([\#5787](https://github.com/matrix-org/synapse/issues/5787)) - Remove some spurious exceptions from the logs where we failed to talk to a remote server. ([\#5790](https://github.com/matrix-org/synapse/issues/5790)) - Improve performance when making `.well-known` requests by sharing the SSL options between requests. ([\#5794](https://github.com/matrix-org/synapse/issues/5794)) - Disable codecov GitHub comments on PRs. ([\#5796](https://github.com/matrix-org/synapse/issues/5796)) - Don't allow clients to send tombstone events that reference the room it's sent in. ([\#5801](https://github.com/matrix-org/synapse/issues/5801)) - Deny redactions of events sent in a different room. ([\#5802](https://github.com/matrix-org/synapse/issues/5802)) - Deny sending well known state types as non-state events. ([\#5805](https://github.com/matrix-org/synapse/issues/5805)) - Handle incorrectly encoded query params correctly by returning a 400. ([\#5808](https://github.com/matrix-org/synapse/issues/5808)) - Handle pusher being deleted during processing rather than logging an exception. ([\#5809](https://github.com/matrix-org/synapse/issues/5809)) - Return 502 not 500 when failing to reach any remote server. ([\#5810](https://github.com/matrix-org/synapse/issues/5810)) - Reduce global pauses in the events stream caused by expensive state resolution during persistence. ([\#5826](https://github.com/matrix-org/synapse/issues/5826)) - Add a lower bound to well-known lookup cache time to avoid repeated lookups. ([\#5836](https://github.com/matrix-org/synapse/issues/5836)) - Whitelist history visibility sytests in worker mode tests. ([\#5843](https://github.com/matrix-org/synapse/issues/5843)) Synapse 1.2.1 (2019-07-26) ========================== Security update --------------- This release includes *four* security fixes: - Prevent an attack where a federated server could send redactions for arbitrary events in v1 and v2 rooms. ([\#5767](https://github.com/matrix-org/synapse/issues/5767)) - Prevent a denial-of-service attack where cycles of redaction events would make Synapse spin infinitely. Thanks to `@lrizika:matrix.org` for identifying and responsibly disclosing this issue. ([0f2ecb961](https://github.com/matrix-org/synapse/commit/0f2ecb961)) - Prevent an attack where users could be joined or parted from public rooms without their consent. Thanks to @dylangerdaly for identifying and responsibly disclosing this issue. ([\#5744](https://github.com/matrix-org/synapse/issues/5744)) - Fix a vulnerability where a federated server could spoof read-receipts from users on other servers. Thanks to @dylangerdaly for identifying this issue too. ([\#5743](https://github.com/matrix-org/synapse/issues/5743)) Additionally, the following fix was in Synapse **1.2.0**, but was not correctly identified during the original release: - It was possible for a room moderator to send a redaction for an `m.room.create` event, which would downgrade the room to version 1. Thanks to `/dev/ponies` for identifying and responsibly disclosing this issue! ([\#5701](https://github.com/matrix-org/synapse/issues/5701)) Synapse 1.2.0 (2019-07-25) ========================== No significant changes. Synapse 1.2.0rc2 (2019-07-24) ============================= Bugfixes -------- - Fix a regression introduced in v1.2.0rc1 which led to incorrect labels on some prometheus metrics. ([\#5734](https://github.com/matrix-org/synapse/issues/5734)) Synapse 1.2.0rc1 (2019-07-22) ============================= Security fixes -------------- This update included a security fix which was initially incorrectly flagged as a regular bug fix. - It was possible for a room moderator to send a redaction for an `m.room.create` event, which would downgrade the room to version 1. Thanks to `/dev/ponies` for identifying and responsibly disclosing this issue! ([\#5701](https://github.com/matrix-org/synapse/issues/5701)) Features -------- - Add support for opentracing. ([\#5544](https://github.com/matrix-org/synapse/issues/5544), [\#5712](https://github.com/matrix-org/synapse/issues/5712)) - Add ability to pull all locally stored events out of synapse that a particular user can see. ([\#5589](https://github.com/matrix-org/synapse/issues/5589)) - Add a basic admin command app to allow server operators to run Synapse admin commands separately from the main production instance. ([\#5597](https://github.com/matrix-org/synapse/issues/5597)) - Add `sender` and `origin_server_ts` fields to `m.replace`. ([\#5613](https://github.com/matrix-org/synapse/issues/5613)) - Add default push rule to ignore reactions. ([\#5623](https://github.com/matrix-org/synapse/issues/5623)) - Include the original event when asking for its relations. ([\#5626](https://github.com/matrix-org/synapse/issues/5626)) - Implement `session_lifetime` configuration option, after which access tokens will expire. ([\#5660](https://github.com/matrix-org/synapse/issues/5660)) - Return "This account has been deactivated" when a deactivated user tries to login. ([\#5674](https://github.com/matrix-org/synapse/issues/5674)) - Enable aggregations support by default ([\#5714](https://github.com/matrix-org/synapse/issues/5714)) Bugfixes -------- - Fix 'utime went backwards' errors on daemonization. ([\#5609](https://github.com/matrix-org/synapse/issues/5609)) - Various minor fixes to the federation request rate limiter. ([\#5621](https://github.com/matrix-org/synapse/issues/5621)) - Forbid viewing relations on an event once it has been redacted. ([\#5629](https://github.com/matrix-org/synapse/issues/5629)) - Fix requests to the `/store_invite` endpoint of identity servers being sent in the wrong format. ([\#5638](https://github.com/matrix-org/synapse/issues/5638)) - Fix newly-registered users not being able to lookup their own profile without joining a room. ([\#5644](https://github.com/matrix-org/synapse/issues/5644)) - Fix bug in #5626 that prevented the original_event field from actually having the contents of the original event in a call to `/relations`. ([\#5654](https://github.com/matrix-org/synapse/issues/5654)) - Fix 3PID bind requests being sent to identity servers as `application/x-form-www-urlencoded` data, which is deprecated. ([\#5658](https://github.com/matrix-org/synapse/issues/5658)) - Fix some problems with authenticating redactions in recent room versions. ([\#5699](https://github.com/matrix-org/synapse/issues/5699), [\#5700](https://github.com/matrix-org/synapse/issues/5700), [\#5707](https://github.com/matrix-org/synapse/issues/5707)) Updates to the Docker image --------------------------- - Base Docker image on a newer Alpine Linux version (3.8 -> 3.10). ([\#5619](https://github.com/matrix-org/synapse/issues/5619)) - Add missing space in default logging file format generated by the Docker image. ([\#5620](https://github.com/matrix-org/synapse/issues/5620)) Improved Documentation ---------------------- - Add information about nginx normalisation to reverse_proxy.rst. Contributed by @skalarproduktraum - thanks! ([\#5397](https://github.com/matrix-org/synapse/issues/5397)) - --no-pep517 should be --no-use-pep517 in the documentation to setup the development environment. ([\#5651](https://github.com/matrix-org/synapse/issues/5651)) - Improvements to Postgres setup instructions. Contributed by @Lrizika - thanks! ([\#5661](https://github.com/matrix-org/synapse/issues/5661)) - Minor tweaks to postgres documentation. ([\#5675](https://github.com/matrix-org/synapse/issues/5675)) Deprecations and Removals ------------------------- - Remove support for the `invite_3pid_guest` configuration setting. ([\#5625](https://github.com/matrix-org/synapse/issues/5625)) Internal Changes ---------------- - Move logging code out of `synapse.util` and into `synapse.logging`. ([\#5606](https://github.com/matrix-org/synapse/issues/5606), [\#5617](https://github.com/matrix-org/synapse/issues/5617)) - Add a blacklist file to the repo to blacklist certain sytests from failing CI. ([\#5611](https://github.com/matrix-org/synapse/issues/5611)) - Make runtime errors surrounding password reset emails much clearer. ([\#5616](https://github.com/matrix-org/synapse/issues/5616)) - Remove dead code for persiting outgoing federation transactions. ([\#5622](https://github.com/matrix-org/synapse/issues/5622)) - Add `lint.sh` to the scripts-dev folder which will run all linting steps required by CI. ([\#5627](https://github.com/matrix-org/synapse/issues/5627)) - Move RegistrationHandler.get_or_create_user to test code. ([\#5628](https://github.com/matrix-org/synapse/issues/5628)) - Add some more common python virtual-environment paths to the black exclusion list. ([\#5630](https://github.com/matrix-org/synapse/issues/5630)) - Some counter metrics exposed over Prometheus have been renamed, with the old names preserved for backwards compatibility and deprecated. See `docs/metrics-howto.rst` for details. ([\#5636](https://github.com/matrix-org/synapse/issues/5636)) - Unblacklist some user_directory sytests. ([\#5637](https://github.com/matrix-org/synapse/issues/5637)) - Factor out some redundant code in the login implementation. ([\#5639](https://github.com/matrix-org/synapse/issues/5639)) - Update ModuleApi to avoid register(generate_token=True). ([\#5640](https://github.com/matrix-org/synapse/issues/5640)) - Remove access-token support from `RegistrationHandler.register`, and rename it. ([\#5641](https://github.com/matrix-org/synapse/issues/5641)) - Remove access-token support from `RegistrationStore.register`, and rename it. ([\#5642](https://github.com/matrix-org/synapse/issues/5642)) - Improve logging for auto-join when a new user is created. ([\#5643](https://github.com/matrix-org/synapse/issues/5643)) - Remove unused and unnecessary check for FederationDeniedError in _exception_to_failure. ([\#5645](https://github.com/matrix-org/synapse/issues/5645)) - Fix a small typo in a code comment. ([\#5655](https://github.com/matrix-org/synapse/issues/5655)) - Clean up exception handling around client access tokens. ([\#5656](https://github.com/matrix-org/synapse/issues/5656)) - Add a mechanism for per-test homeserver configuration in the unit tests. ([\#5657](https://github.com/matrix-org/synapse/issues/5657)) - Inline issue_access_token. ([\#5659](https://github.com/matrix-org/synapse/issues/5659)) - Update the sytest BuildKite configuration to checkout Synapse in `/src`. ([\#5664](https://github.com/matrix-org/synapse/issues/5664)) - Add a `docker` type to the towncrier configuration. ([\#5673](https://github.com/matrix-org/synapse/issues/5673)) - Convert `synapse.federation.transport.server` to `async`. Might improve some stack traces. ([\#5689](https://github.com/matrix-org/synapse/issues/5689)) - Documentation for opentracing. ([\#5703](https://github.com/matrix-org/synapse/issues/5703)) Synapse 1.1.0 (2019-07-04) ========================== As of v1.1.0, Synapse no longer supports Python 2, nor Postgres version 9.4. See the [upgrade notes](docs/upgrade.md#upgrading-to-v110) for more details. This release also deprecates the use of environment variables to configure the docker image. See the [docker README](https://github.com/matrix-org/synapse/blob/release-v1.1.0/docker/README.md#legacy-dynamic-configuration-file-support) for more details. No changes since 1.1.0rc2. Synapse 1.1.0rc2 (2019-07-03) ============================= Bugfixes -------- - Fix regression in 1.1rc1 where OPTIONS requests to the media repo would fail. ([\#5593](https://github.com/matrix-org/synapse/issues/5593)) - Removed the `SYNAPSE_SMTP_*` docker container environment variables. Using these environment variables prevented the docker container from starting in Synapse v1.0, even though they didn't actually allow any functionality anyway. ([\#5596](https://github.com/matrix-org/synapse/issues/5596)) - Fix a number of "Starting txn from sentinel context" warnings. ([\#5605](https://github.com/matrix-org/synapse/issues/5605)) Internal Changes ---------------- - Update github templates. ([\#5552](https://github.com/matrix-org/synapse/issues/5552)) Synapse 1.1.0rc1 (2019-07-02) ============================= As of v1.1.0, Synapse no longer supports Python 2, nor Postgres version 9.4. See the [upgrade notes](docs/upgrade.md#upgrading-to-v110) for more details. Features -------- - Added possibility to disable local password authentication. Contributed by Daniel Hoffend. ([\#5092](https://github.com/matrix-org/synapse/issues/5092)) - Add monthly active users to phonehome stats. ([\#5252](https://github.com/matrix-org/synapse/issues/5252)) - Allow expired user to trigger renewal email sending manually. ([\#5363](https://github.com/matrix-org/synapse/issues/5363)) - Statistics on forward extremities per room are now exposed via Prometheus. ([\#5384](https://github.com/matrix-org/synapse/issues/5384), [\#5458](https://github.com/matrix-org/synapse/issues/5458), [\#5461](https://github.com/matrix-org/synapse/issues/5461)) - Add --no-daemonize option to run synapse in the foreground, per issue #4130. Contributed by Soham Gumaste. ([\#5412](https://github.com/matrix-org/synapse/issues/5412), [\#5587](https://github.com/matrix-org/synapse/issues/5587)) - Fully support SAML2 authentication. Contributed by [Alexander Trost](https://github.com/galexrt) - thank you! ([\#5422](https://github.com/matrix-org/synapse/issues/5422)) - Allow server admins to define implementations of extra rules for allowing or denying incoming events. ([\#5440](https://github.com/matrix-org/synapse/issues/5440), [\#5474](https://github.com/matrix-org/synapse/issues/5474), [\#5477](https://github.com/matrix-org/synapse/issues/5477)) - Add support for handling pagination APIs on client reader worker. ([\#5505](https://github.com/matrix-org/synapse/issues/5505), [\#5513](https://github.com/matrix-org/synapse/issues/5513), [\#5531](https://github.com/matrix-org/synapse/issues/5531)) - Improve help and cmdline option names for --generate-config options. ([\#5512](https://github.com/matrix-org/synapse/issues/5512)) - Allow configuration of the path used for ACME account keys. ([\#5516](https://github.com/matrix-org/synapse/issues/5516), [\#5521](https://github.com/matrix-org/synapse/issues/5521), [\#5522](https://github.com/matrix-org/synapse/issues/5522)) - Add --data-dir and --open-private-ports options. ([\#5524](https://github.com/matrix-org/synapse/issues/5524)) - Split public rooms directory auth config in two settings, in order to manage client auth independently from the federation part of it. Obsoletes the "restrict_public_rooms_to_local_users" configuration setting. If "restrict_public_rooms_to_local_users" is set in the config, Synapse will act as if both new options are enabled, i.e. require authentication through the client API and deny federation requests. ([\#5534](https://github.com/matrix-org/synapse/issues/5534)) - The minimum TLS version used for outgoing federation requests can now be set with `federation_client_minimum_tls_version`. ([\#5550](https://github.com/matrix-org/synapse/issues/5550)) - Optimise devices changed query to not pull unnecessary rows from the database, reducing database load. ([\#5559](https://github.com/matrix-org/synapse/issues/5559)) - Add new metrics for number of forward extremities being persisted and number of state groups involved in resolution. ([\#5476](https://github.com/matrix-org/synapse/issues/5476)) Bugfixes -------- - Fix bug processing incoming events over federation if call to `/get_missing_events` fails. ([\#5042](https://github.com/matrix-org/synapse/issues/5042)) - Prevent more than one room upgrade happening simultaneously on the same room. ([\#5051](https://github.com/matrix-org/synapse/issues/5051)) - Fix a bug where running synapse_port_db would cause the account validity feature to fail because it didn't set the type of the email_sent column to boolean. ([\#5325](https://github.com/matrix-org/synapse/issues/5325)) - Warn about disabling email-based password resets when a reset occurs, and remove warning when someone attempts a phone-based reset. ([\#5387](https://github.com/matrix-org/synapse/issues/5387)) - Fix email notifications for unnamed rooms with multiple people. ([\#5388](https://github.com/matrix-org/synapse/issues/5388)) - Fix exceptions in federation reader worker caused by attempting to renew attestations, which should only happen on master worker. ([\#5389](https://github.com/matrix-org/synapse/issues/5389)) - Fix handling of failures fetching remote content to not log failures as exceptions. ([\#5390](https://github.com/matrix-org/synapse/issues/5390)) - Fix a bug where deactivated users could receive renewal emails if the account validity feature is on. ([\#5394](https://github.com/matrix-org/synapse/issues/5394)) - Fix missing invite state after exchanging 3PID invites over federaton. ([\#5464](https://github.com/matrix-org/synapse/issues/5464)) - Fix intermittent exceptions on Apple hardware. Also fix bug that caused database activity times to be under-reported in log lines. ([\#5498](https://github.com/matrix-org/synapse/issues/5498)) - Fix logging error when a tampered event is detected. ([\#5500](https://github.com/matrix-org/synapse/issues/5500)) - Fix bug where clients could tight loop calling `/sync` for a period. ([\#5507](https://github.com/matrix-org/synapse/issues/5507)) - Fix bug with `jinja2` preventing Synapse from starting. Users who had this problem should now simply need to run `pip install matrix-synapse`. ([\#5514](https://github.com/matrix-org/synapse/issues/5514)) - Fix a regression where homeservers on private IP addresses were incorrectly blacklisted. ([\#5523](https://github.com/matrix-org/synapse/issues/5523)) - Fixed m.login.jwt using unregistered user_id and added pyjwt>=1.6.4 as jwt conditional dependencies. Contributed by Pau Rodriguez-Estivill. ([\#5555](https://github.com/matrix-org/synapse/issues/5555), [\#5586](https://github.com/matrix-org/synapse/issues/5586)) - Fix a bug that would cause invited users to receive several emails for a single 3PID invite in case the inviter is rate limited. ([\#5576](https://github.com/matrix-org/synapse/issues/5576)) Updates to the Docker image --------------------------- - Add ability to change Docker containers [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) with the `TZ` variable. ([\#5383](https://github.com/matrix-org/synapse/issues/5383)) - Update docker image to use Python 3.7. ([\#5546](https://github.com/matrix-org/synapse/issues/5546)) - Deprecate the use of environment variables for configuration, and make the use of a static configuration the default. ([\#5561](https://github.com/matrix-org/synapse/issues/5561), [\#5562](https://github.com/matrix-org/synapse/issues/5562), [\#5566](https://github.com/matrix-org/synapse/issues/5566), [\#5567](https://github.com/matrix-org/synapse/issues/5567)) - Increase default log level for docker image to INFO. It can still be changed by editing the generated log.config file. ([\#5547](https://github.com/matrix-org/synapse/issues/5547)) - Send synapse logs to the docker logging system, by default. ([\#5565](https://github.com/matrix-org/synapse/issues/5565)) - Open the non-TLS port by default. ([\#5568](https://github.com/matrix-org/synapse/issues/5568)) - Fix failure to start under docker with SAML support enabled. ([\#5490](https://github.com/matrix-org/synapse/issues/5490)) - Use a sensible location for data files when generating a config file. ([\#5563](https://github.com/matrix-org/synapse/issues/5563)) Deprecations and Removals ------------------------- - Python 2.7 is no longer a supported platform. Synapse now requires Python 3.5+ to run. ([\#5425](https://github.com/matrix-org/synapse/issues/5425)) - PostgreSQL 9.4 is no longer supported. Synapse requires Postgres 9.5+ or above for Postgres support. ([\#5448](https://github.com/matrix-org/synapse/issues/5448)) - Remove support for cpu_affinity setting. ([\#5525](https://github.com/matrix-org/synapse/issues/5525)) Improved Documentation ---------------------- - Improve README section on performance troubleshooting. ([\#4276](https://github.com/matrix-org/synapse/issues/4276)) - Add information about how to install and run `black` on the codebase to code_style.rst. ([\#5537](https://github.com/matrix-org/synapse/issues/5537)) - Improve install docs on choosing server_name. ([\#5558](https://github.com/matrix-org/synapse/issues/5558)) Internal Changes ---------------- - Add logging to 3pid invite signature verification. ([\#5015](https://github.com/matrix-org/synapse/issues/5015)) - Update example haproxy config to a more compatible setup. ([\#5313](https://github.com/matrix-org/synapse/issues/5313)) - Track deactivated accounts in the database. ([\#5378](https://github.com/matrix-org/synapse/issues/5378), [\#5465](https://github.com/matrix-org/synapse/issues/5465), [\#5493](https://github.com/matrix-org/synapse/issues/5493)) - Clean up code for sending federation EDUs. ([\#5381](https://github.com/matrix-org/synapse/issues/5381)) - Add a sponsor button to the repo. ([\#5382](https://github.com/matrix-org/synapse/issues/5382), [\#5386](https://github.com/matrix-org/synapse/issues/5386)) - Don't log non-200 responses from federation queries as exceptions. ([\#5383](https://github.com/matrix-org/synapse/issues/5383)) - Update Python syntax in contrib/ to Python 3. ([\#5446](https://github.com/matrix-org/synapse/issues/5446)) - Update federation_client dev script to support `.well-known` and work with python3. ([\#5447](https://github.com/matrix-org/synapse/issues/5447)) - SyTest has been moved to Buildkite. ([\#5459](https://github.com/matrix-org/synapse/issues/5459)) - Demo script now uses python3. ([\#5460](https://github.com/matrix-org/synapse/issues/5460)) - Synapse can now handle RestServlets that return coroutines. ([\#5475](https://github.com/matrix-org/synapse/issues/5475), [\#5585](https://github.com/matrix-org/synapse/issues/5585)) - The demo servers talk to each other again. ([\#5478](https://github.com/matrix-org/synapse/issues/5478)) - Add an EXPERIMENTAL config option to try and periodically clean up extremities by sending dummy events. ([\#5480](https://github.com/matrix-org/synapse/issues/5480)) - Synapse's codebase is now formatted by `black`. ([\#5482](https://github.com/matrix-org/synapse/issues/5482)) - Some cleanups and sanity-checking in the CPU and database metrics. ([\#5499](https://github.com/matrix-org/synapse/issues/5499)) - Improve email notification logging. ([\#5502](https://github.com/matrix-org/synapse/issues/5502)) - Fix "Unexpected entry in 'full_schemas'" log warning. ([\#5509](https://github.com/matrix-org/synapse/issues/5509)) - Improve logging when generating config files. ([\#5510](https://github.com/matrix-org/synapse/issues/5510)) - Refactor and clean up Config parser for maintainability. ([\#5511](https://github.com/matrix-org/synapse/issues/5511)) - Make the config clearer in that email.template_dir is relative to the Synapse's root directory, not the `synapse/` folder within it. ([\#5543](https://github.com/matrix-org/synapse/issues/5543)) - Update v1.0.0 release changelog to include more information about changes to password resets. ([\#5545](https://github.com/matrix-org/synapse/issues/5545)) - Remove non-functioning check_event_hash.py dev script. ([\#5548](https://github.com/matrix-org/synapse/issues/5548)) - Synapse will now only allow TLS v1.2 connections when serving federation, if it terminates TLS. As Synapse's allowed ciphers were only able to be used in TLSv1.2 before, this does not change behaviour. ([\#5550](https://github.com/matrix-org/synapse/issues/5550)) - Logging when running GC collection on generation 0 is now at the DEBUG level, not INFO. ([\#5557](https://github.com/matrix-org/synapse/issues/5557)) - Reduce the amount of stuff we send in the docker context. ([\#5564](https://github.com/matrix-org/synapse/issues/5564)) - Point the reverse links in the Purge History contrib scripts at the intended location. ([\#5570](https://github.com/matrix-org/synapse/issues/5570)) Synapse 1.0.0 (2019-06-11) ========================== Bugfixes -------- - Fix bug where attempting to send transactions with large number of EDUs can fail. ([\#5418](https://github.com/matrix-org/synapse/issues/5418)) Improved Documentation ---------------------- - Expand the federation guide to include relevant content from the MSC1711 FAQ ([\#5419](https://github.com/matrix-org/synapse/issues/5419)) Internal Changes ---------------- - Move password reset links to /_matrix/client/unstable namespace. ([\#5424](https://github.com/matrix-org/synapse/issues/5424)) Synapse 1.0.0rc3 (2019-06-10) ============================= Security: Fix authentication bug introduced in 1.0.0rc1. Please upgrade to rc3 immediately Synapse 1.0.0rc2 (2019-06-10) ============================= Bugfixes -------- - Remove redundant warning about key server response validation. ([\#5392](https://github.com/matrix-org/synapse/issues/5392)) - Fix bug where old keys stored in the database with a null valid until timestamp caused all verification requests for that key to fail. ([\#5415](https://github.com/matrix-org/synapse/issues/5415)) - Fix excessive memory using with default `federation_verify_certificates: true` configuration. ([\#5417](https://github.com/matrix-org/synapse/issues/5417)) Synapse 1.0.0rc1 (2019-06-07) ============================= Features -------- - Synapse now more efficiently collates room statistics. ([\#4338](https://github.com/matrix-org/synapse/issues/4338), [\#5260](https://github.com/matrix-org/synapse/issues/5260), [\#5324](https://github.com/matrix-org/synapse/issues/5324)) - Add experimental support for relations (aka reactions and edits). ([\#5220](https://github.com/matrix-org/synapse/issues/5220)) - Ability to configure default room version. ([\#5223](https://github.com/matrix-org/synapse/issues/5223), [\#5249](https://github.com/matrix-org/synapse/issues/5249)) - Allow configuring a range for the account validity startup job. ([\#5276](https://github.com/matrix-org/synapse/issues/5276)) - CAS login will now hit the r0 API, not the deprecated v1 one. ([\#5286](https://github.com/matrix-org/synapse/issues/5286)) - Validate federation server TLS certificates by default (implements [MSC1711](https://github.com/matrix-org/matrix-doc/blob/master/proposals/1711-x509-for-federation.md)). ([\#5359](https://github.com/matrix-org/synapse/issues/5359)) - Update /_matrix/client/versions to reference support for r0.5.0. ([\#5360](https://github.com/matrix-org/synapse/issues/5360)) - Add a script to generate new signing-key files. ([\#5361](https://github.com/matrix-org/synapse/issues/5361)) - Update upgrade and installation guides ahead of 1.0. ([\#5371](https://github.com/matrix-org/synapse/issues/5371)) - Replace the `perspectives` configuration section with `trusted_key_servers`, and make validating the signatures on responses optional (since TLS will do this job for us). ([\#5374](https://github.com/matrix-org/synapse/issues/5374)) - Add ability to perform password reset via email without trusting the identity server. **As a result of this PR, password resets will now be disabled on the default configuration.** Password reset emails are now sent from the homeserver by default, instead of the identity server. To enable this functionality, ensure `email` and `public_baseurl` config options are filled out. If you would like to re-enable password resets being sent from the identity server (warning: this is dangerous! See [#5345](https://github.com/matrix-org/synapse/pull/5345)), set `email.trust_identity_server_for_password_resets` to true. ([\#5377](https://github.com/matrix-org/synapse/issues/5377)) - Set default room version to v4. ([\#5379](https://github.com/matrix-org/synapse/issues/5379)) Bugfixes -------- - Fixes client-server API not sending "m.heroes" to lazy-load /sync requests when a rooms name or its canonical alias are empty. Thanks to @dnaf for this work! ([\#5089](https://github.com/matrix-org/synapse/issues/5089)) - Prevent federation device list updates breaking when processing multiple updates at once. ([\#5156](https://github.com/matrix-org/synapse/issues/5156)) - Fix worker registration bug caused by ClientReaderSlavedStore being unable to see get_profileinfo. ([\#5200](https://github.com/matrix-org/synapse/issues/5200)) - Fix race when backfilling in rooms with worker mode. ([\#5221](https://github.com/matrix-org/synapse/issues/5221)) - Fix appservice timestamp massaging. ([\#5233](https://github.com/matrix-org/synapse/issues/5233)) - Ensure that server_keys fetched via a notary server are correctly signed. ([\#5251](https://github.com/matrix-org/synapse/issues/5251)) - Show the correct error when logging out and access token is missing. ([\#5256](https://github.com/matrix-org/synapse/issues/5256)) - Fix error code when there is an invalid parameter on /_matrix/client/r0/publicRooms ([\#5257](https://github.com/matrix-org/synapse/issues/5257)) - Fix error when downloading thumbnail with missing width/height parameter. ([\#5258](https://github.com/matrix-org/synapse/issues/5258)) - Fix schema update for account validity. ([\#5268](https://github.com/matrix-org/synapse/issues/5268)) - Fix bug where we leaked extremities when we soft failed events, leading to performance degradation. ([\#5274](https://github.com/matrix-org/synapse/issues/5274), [\#5278](https://github.com/matrix-org/synapse/issues/5278), [\#5291](https://github.com/matrix-org/synapse/issues/5291)) - Fix "db txn 'update_presence' from sentinel context" log messages. ([\#5275](https://github.com/matrix-org/synapse/issues/5275)) - Fix dropped logcontexts during high outbound traffic. ([\#5277](https://github.com/matrix-org/synapse/issues/5277)) - Fix a bug where it is not possible to get events in the federation format with the request `GET /_matrix/client/r0/rooms/{roomId}/messages`. ([\#5293](https://github.com/matrix-org/synapse/issues/5293)) - Fix performance problems with the rooms stats background update. ([\#5294](https://github.com/matrix-org/synapse/issues/5294)) - Fix noisy 'no key for server' logs. ([\#5300](https://github.com/matrix-org/synapse/issues/5300)) - Fix bug where a notary server would sometimes forget old keys. ([\#5307](https://github.com/matrix-org/synapse/issues/5307)) - Prevent users from setting huge displaynames and avatar URLs. ([\#5309](https://github.com/matrix-org/synapse/issues/5309)) - Fix handling of failures when processing incoming events where calling `/event_auth` on remote server fails. ([\#5317](https://github.com/matrix-org/synapse/issues/5317)) - Ensure that we have an up-to-date copy of the signing key when validating incoming federation requests. ([\#5321](https://github.com/matrix-org/synapse/issues/5321)) - Fix various problems which made the signing-key notary server time out for some requests. ([\#5333](https://github.com/matrix-org/synapse/issues/5333)) - Fix bug which would make certain operations (such as room joins) block for 20 minutes while attemoting to fetch verification keys. ([\#5334](https://github.com/matrix-org/synapse/issues/5334)) - Fix a bug where we could rapidly mark a server as unreachable even though it was only down for a few minutes. ([\#5335](https://github.com/matrix-org/synapse/issues/5335), [\#5340](https://github.com/matrix-org/synapse/issues/5340)) - Fix a bug where account validity renewal emails could only be sent when email notifs were enabled. ([\#5341](https://github.com/matrix-org/synapse/issues/5341)) - Fix failure when fetching batches of events during backfill, etc. ([\#5342](https://github.com/matrix-org/synapse/issues/5342)) - Add a new room version where the timestamps on events are checked against the validity periods on signing keys. ([\#5348](https://github.com/matrix-org/synapse/issues/5348), [\#5354](https://github.com/matrix-org/synapse/issues/5354)) - Fix room stats and presence background updates to correctly handle missing events. ([\#5352](https://github.com/matrix-org/synapse/issues/5352)) - Include left members in room summaries' heroes. ([\#5355](https://github.com/matrix-org/synapse/issues/5355)) - Fix `federation_custom_ca_list` configuration option. ([\#5362](https://github.com/matrix-org/synapse/issues/5362)) - Fix missing logcontext warnings on shutdown. ([\#5369](https://github.com/matrix-org/synapse/issues/5369)) Improved Documentation ---------------------- - Fix docs on resetting the user directory. ([\#5282](https://github.com/matrix-org/synapse/issues/5282)) - Fix notes about ACME in the MSC1711 faq. ([\#5357](https://github.com/matrix-org/synapse/issues/5357)) Internal Changes ---------------- - Synapse will now serve the experimental "room complexity" API endpoint. ([\#5216](https://github.com/matrix-org/synapse/issues/5216)) - The base classes for the v1 and v2_alpha REST APIs have been unified. ([\#5226](https://github.com/matrix-org/synapse/issues/5226), [\#5328](https://github.com/matrix-org/synapse/issues/5328)) - Simplifications and comments in do_auth. ([\#5227](https://github.com/matrix-org/synapse/issues/5227)) - Remove urllib3 pin as requests 2.22.0 has been released supporting urllib3 1.25.2. ([\#5230](https://github.com/matrix-org/synapse/issues/5230)) - Preparatory work for key-validity features. ([\#5232](https://github.com/matrix-org/synapse/issues/5232), [\#5234](https://github.com/matrix-org/synapse/issues/5234), [\#5235](https://github.com/matrix-org/synapse/issues/5235), [\#5236](https://github.com/matrix-org/synapse/issues/5236), [\#5237](https://github.com/matrix-org/synapse/issues/5237), [\#5244](https://github.com/matrix-org/synapse/issues/5244), [\#5250](https://github.com/matrix-org/synapse/issues/5250), [\#5296](https://github.com/matrix-org/synapse/issues/5296), [\#5299](https://github.com/matrix-org/synapse/issues/5299), [\#5343](https://github.com/matrix-org/synapse/issues/5343), [\#5347](https://github.com/matrix-org/synapse/issues/5347), [\#5356](https://github.com/matrix-org/synapse/issues/5356)) - Specify the type of reCAPTCHA key to use. ([\#5283](https://github.com/matrix-org/synapse/issues/5283)) - Improve sample config for monthly active user blocking. ([\#5284](https://github.com/matrix-org/synapse/issues/5284)) - Remove spurious debug from MatrixFederationHttpClient.get_json. ([\#5287](https://github.com/matrix-org/synapse/issues/5287)) - Improve logging for logcontext leaks. ([\#5288](https://github.com/matrix-org/synapse/issues/5288)) - Clarify that the admin change password API logs the user out. ([\#5303](https://github.com/matrix-org/synapse/issues/5303)) - New installs will now use the v54 full schema, rather than the full schema v14 and applying incremental updates to v54. ([\#5320](https://github.com/matrix-org/synapse/issues/5320)) - Improve docstrings on MatrixFederationClient. ([\#5332](https://github.com/matrix-org/synapse/issues/5332)) - Clean up FederationClient.get_events for clarity. ([\#5344](https://github.com/matrix-org/synapse/issues/5344)) - Various improvements to debug logging. ([\#5353](https://github.com/matrix-org/synapse/issues/5353)) - Don't run CI build checks until sample config check has passed. ([\#5370](https://github.com/matrix-org/synapse/issues/5370)) - Automatically retry buildkite builds (max twice) when an agent is lost. ([\#5380](https://github.com/matrix-org/synapse/issues/5380)) **Changelogs for versions older than 1.0.0 can be found [here](CHANGES-pre-1.0.md).** synapse-1.100.0/docs/changelogs/CHANGES-2020.md000066400000000000000000005337421455622526000203750ustar00rootroot00000000000000Synapse 1.24.0 (2020-12-09) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- The following issues are fixed in v1.23.1 and v1.24.0. - There is a denial of service attack ([CVE-2020-26257](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-26257)) against the federation APIs in which future events will not be correctly sent to other servers over federation. This affects all servers that participate in open federation. (Fixed in [#8776](https://github.com/matrix-org/synapse/pull/8776)). - Synapse may be affected by OpenSSL [CVE-2020-1971](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1971). Synapse administrators should ensure that they have the latest versions of the cryptography Python package installed. To upgrade Synapse along with the cryptography package: * Administrators using the [`matrix.org` Docker image](https://hub.docker.com/r/matrixdotorg/synapse/) or the [Debian/Ubuntu packages from `matrix.org`](https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages) should ensure that they have version 1.24.0 or 1.23.1 installed: these images include the updated packages. * Administrators who have [installed Synapse from source](https://matrix-org.github.io/synapse/latest/setup/installation.html#installing-from-source) should upgrade the cryptography package within their virtualenv by running: ```sh /bin/pip install 'cryptography>=3.3' ``` * Administrators who have installed Synapse from distribution packages should consult the information from their distributions. Internal Changes ---------------- - Add a maximum version for pysaml2 on Python 3.5. ([\#8898](https://github.com/matrix-org/synapse/issues/8898)) Synapse 1.23.1 (2020-12-09) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- The following issues are fixed in v1.23.1 and v1.24.0. - There is a denial of service attack ([CVE-2020-26257](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-26257)) against the federation APIs in which future events will not be correctly sent to other servers over federation. This affects all servers that participate in open federation. (Fixed in [#8776](https://github.com/matrix-org/synapse/pull/8776)). - Synapse may be affected by OpenSSL [CVE-2020-1971](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1971). Synapse administrators should ensure that they have the latest versions of the cryptography Python package installed. To upgrade Synapse along with the cryptography package: * Administrators using the [`matrix.org` Docker image](https://hub.docker.com/r/matrixdotorg/synapse/) or the [Debian/Ubuntu packages from `matrix.org`](https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages) should ensure that they have version 1.24.0 or 1.23.1 installed: these images include the updated packages. * Administrators who have [installed Synapse from source](https://matrix-org.github.io/synapse/latest/setup/installation.html#installing-from-source) should upgrade the cryptography package within their virtualenv by running: ```sh /bin/pip install 'cryptography>=3.3' ``` * Administrators who have installed Synapse from distribution packages should consult the information from their distributions. Bugfixes -------- - Fix a bug in some federation APIs which could lead to unexpected behaviour if different parameters were set in the URI and the request body. ([\#8776](https://github.com/matrix-org/synapse/issues/8776)) Internal Changes ---------------- - Add a maximum version for pysaml2 on Python 3.5. ([\#8898](https://github.com/matrix-org/synapse/issues/8898)) Synapse 1.24.0rc2 (2020-12-04) ============================== Bugfixes -------- - Fix a regression in v1.24.0rc1 which failed to allow SAML mapping providers which were unable to redirect users to an additional page. ([\#8878](https://github.com/matrix-org/synapse/issues/8878)) Internal Changes ---------------- - Add support for the `prometheus_client` newer than 0.9.0. Contributed by Jordan Bancino. ([\#8875](https://github.com/matrix-org/synapse/issues/8875)) Synapse 1.24.0rc1 (2020-12-02) ============================== Features -------- - Add admin API for logging in as a user. ([\#8617](https://github.com/matrix-org/synapse/issues/8617)) - Allow specification of the SAML IdP if the metadata returns multiple IdPs. ([\#8630](https://github.com/matrix-org/synapse/issues/8630)) - Add support for re-trying generation of a localpart for OpenID Connect mapping providers. ([\#8801](https://github.com/matrix-org/synapse/issues/8801), [\#8855](https://github.com/matrix-org/synapse/issues/8855)) - Allow the `Date` header through CORS. Contributed by Nicolas Chamo. ([\#8804](https://github.com/matrix-org/synapse/issues/8804)) - Add a config option, `push.group_by_unread_count`, which controls whether unread message counts in push notifications are defined as "the number of rooms with unread messages" or "total unread messages". ([\#8820](https://github.com/matrix-org/synapse/issues/8820)) - Add `force_purge` option to delete-room admin api. ([\#8843](https://github.com/matrix-org/synapse/issues/8843)) Bugfixes -------- - Fix a bug where appservices may be sent an excessive amount of read receipts and presence. Broke in v1.22.0. ([\#8744](https://github.com/matrix-org/synapse/issues/8744)) - Fix a bug in some federation APIs which could lead to unexpected behaviour if different parameters were set in the URI and the request body. ([\#8776](https://github.com/matrix-org/synapse/issues/8776)) - Fix a bug where synctl could spawn duplicate copies of a worker. Contributed by Waylon Cude. ([\#8798](https://github.com/matrix-org/synapse/issues/8798)) - Allow per-room profiles to be used for the server notice user. ([\#8799](https://github.com/matrix-org/synapse/issues/8799)) - Fix a bug where logging could break after a call to SIGHUP. ([\#8817](https://github.com/matrix-org/synapse/issues/8817)) - Fix `register_new_matrix_user` failing with "Bad Request" when trailing slash is included in server URL. Contributed by @angdraug. ([\#8823](https://github.com/matrix-org/synapse/issues/8823)) - Fix a minor long-standing bug in login, where we would offer the `password` login type if a custom auth provider supported it, even if password login was disabled. ([\#8835](https://github.com/matrix-org/synapse/issues/8835)) - Fix a long-standing bug which caused Synapse to require unspecified parameters during user-interactive authentication. ([\#8848](https://github.com/matrix-org/synapse/issues/8848)) - Fix a bug introduced in v1.20.0 where the user-agent and IP address reported during user registration for CAS, OpenID Connect, and SAML were of the wrong form. ([\#8784](https://github.com/matrix-org/synapse/issues/8784)) Improved Documentation ---------------------- - Clarify the usecase for a msisdn delegate. Contributed by Adrian Wannenmacher. ([\#8734](https://github.com/matrix-org/synapse/issues/8734)) - Remove extraneous comma from JSON example in User Admin API docs. ([\#8771](https://github.com/matrix-org/synapse/issues/8771)) - Update `turn-howto.md` with troubleshooting notes. ([\#8779](https://github.com/matrix-org/synapse/issues/8779)) - Fix the example on how to set the `Content-Type` header in nginx for the Client Well-Known URI. ([\#8793](https://github.com/matrix-org/synapse/issues/8793)) - Improve the documentation for the admin API to list all media in a room with respect to encrypted events. ([\#8795](https://github.com/matrix-org/synapse/issues/8795)) - Update the formatting of the `push` section of the homeserver config file to better align with the [code style guidelines](https://github.com/matrix-org/synapse/blob/develop/docs/code_style.md#configuration-file-format). ([\#8818](https://github.com/matrix-org/synapse/issues/8818)) - Improve documentation how to configure prometheus for workers. ([\#8822](https://github.com/matrix-org/synapse/issues/8822)) - Update example prometheus console. ([\#8824](https://github.com/matrix-org/synapse/issues/8824)) Deprecations and Removals ------------------------- - Remove old `/_matrix/client/*/admin` endpoints which were deprecated since Synapse 1.20.0. ([\#8785](https://github.com/matrix-org/synapse/issues/8785)) - Disable pretty printing JSON responses for curl. Users who want pretty-printed output should use [jq](https://stedolan.github.io/jq/) in combination with curl. Contributed by @tulir. ([\#8833](https://github.com/matrix-org/synapse/issues/8833)) Internal Changes ---------------- - Simplify the way the `HomeServer` object caches its internal attributes. ([\#8565](https://github.com/matrix-org/synapse/issues/8565), [\#8851](https://github.com/matrix-org/synapse/issues/8851)) - Add an example and documentation for clock skew to the SAML2 sample configuration to allow for clock/time difference between the homserver and IdP. Contributed by @localguru. ([\#8731](https://github.com/matrix-org/synapse/issues/8731)) - Generalise `RoomMemberHandler._locally_reject_invite` to apply to more flows than just invite. ([\#8751](https://github.com/matrix-org/synapse/issues/8751)) - Generalise `RoomStore.maybe_store_room_on_invite` to handle other, non-invite membership events. ([\#8754](https://github.com/matrix-org/synapse/issues/8754)) - Refactor test utilities for injecting HTTP requests. ([\#8757](https://github.com/matrix-org/synapse/issues/8757), [\#8758](https://github.com/matrix-org/synapse/issues/8758), [\#8759](https://github.com/matrix-org/synapse/issues/8759), [\#8760](https://github.com/matrix-org/synapse/issues/8760), [\#8761](https://github.com/matrix-org/synapse/issues/8761), [\#8777](https://github.com/matrix-org/synapse/issues/8777)) - Consolidate logic between the OpenID Connect and SAML code. ([\#8765](https://github.com/matrix-org/synapse/issues/8765)) - Use `TYPE_CHECKING` instead of magic `MYPY` variable. ([\#8770](https://github.com/matrix-org/synapse/issues/8770)) - Add a commandline script to sign arbitrary json objects. ([\#8772](https://github.com/matrix-org/synapse/issues/8772)) - Minor log line improvements for the SSO mapping code used to generate Matrix IDs from SSO IDs. ([\#8773](https://github.com/matrix-org/synapse/issues/8773)) - Add additional error checking for OpenID Connect and SAML mapping providers. ([\#8774](https://github.com/matrix-org/synapse/issues/8774), [\#8800](https://github.com/matrix-org/synapse/issues/8800)) - Add type hints to HTTP abstractions. ([\#8806](https://github.com/matrix-org/synapse/issues/8806), [\#8812](https://github.com/matrix-org/synapse/issues/8812)) - Remove unnecessary function arguments and add typing to several membership replication classes. ([\#8809](https://github.com/matrix-org/synapse/issues/8809)) - Optimise the lookup for an invite from another homeserver when trying to reject it. ([\#8815](https://github.com/matrix-org/synapse/issues/8815)) - Add tests for `password_auth_provider`s. ([\#8819](https://github.com/matrix-org/synapse/issues/8819)) - Drop redundant database index on `event_json`. ([\#8845](https://github.com/matrix-org/synapse/issues/8845)) - Simplify `uk.half-shot.msc2778.login.application_service` login handler. ([\#8847](https://github.com/matrix-org/synapse/issues/8847)) - Refactor `password_auth_provider` support code. ([\#8849](https://github.com/matrix-org/synapse/issues/8849)) - Add missing `ordering` to background database updates. ([\#8850](https://github.com/matrix-org/synapse/issues/8850)) - Allow for specifying a room version when creating a room in unit tests via `RestHelper.create_room_as`. ([\#8854](https://github.com/matrix-org/synapse/issues/8854)) Synapse 1.23.0 (2020-11-18) =========================== This release changes the way structured logging is configured. See the [upgrade notes](docs/upgrade.md#upgrading-to-v1230) for details. **Note**: We are aware of a trivially exploitable denial of service vulnerability in versions of Synapse prior to 1.20.0. Complete details will be disclosed on Monday, November 23rd. If you have not upgraded recently, please do so. Bugfixes -------- - Fix a dependency versioning bug in the Dockerfile that prevented Synapse from starting. ([\#8767](https://github.com/matrix-org/synapse/issues/8767)) Synapse 1.23.0rc1 (2020-11-13) ============================== Features -------- - Add a push rule that highlights when a jitsi conference is created in a room. ([\#8286](https://github.com/matrix-org/synapse/issues/8286)) - Add an admin api to delete a single file or files that were not used for a defined time from server. Contributed by @dklimpel. ([\#8519](https://github.com/matrix-org/synapse/issues/8519)) - Split admin API for reported events (`GET /_synapse/admin/v1/event_reports`) into detail and list endpoints. This is a breaking change to #8217 which was introduced in Synapse v1.21.0. Those who already use this API should check their scripts. Contributed by @dklimpel. ([\#8539](https://github.com/matrix-org/synapse/issues/8539)) - Support generating structured logs via the standard logging configuration. ([\#8607](https://github.com/matrix-org/synapse/issues/8607), [\#8685](https://github.com/matrix-org/synapse/issues/8685)) - Add an admin API to allow server admins to list users' pushers. Contributed by @dklimpel. ([\#8610](https://github.com/matrix-org/synapse/issues/8610), [\#8689](https://github.com/matrix-org/synapse/issues/8689)) - Add an admin API `GET /_synapse/admin/v1/users//media` to get information about uploaded media. Contributed by @dklimpel. ([\#8647](https://github.com/matrix-org/synapse/issues/8647)) - Add an admin API for local user media statistics. Contributed by @dklimpel. ([\#8700](https://github.com/matrix-org/synapse/issues/8700)) - Add `displayname` to Shared-Secret Registration for admins. ([\#8722](https://github.com/matrix-org/synapse/issues/8722)) Bugfixes -------- - Fix fetching of E2E cross signing keys over federation when only one of the master key and device signing key is cached already. ([\#8455](https://github.com/matrix-org/synapse/issues/8455)) - Fix a bug where Synapse would blindly forward bad responses from federation to clients when retrieving profile information. ([\#8580](https://github.com/matrix-org/synapse/issues/8580)) - Fix a bug where the account validity endpoint would silently fail if the user ID did not have an expiration time. It now returns a 400 error. ([\#8620](https://github.com/matrix-org/synapse/issues/8620)) - Fix email notifications for invites without local state. ([\#8627](https://github.com/matrix-org/synapse/issues/8627)) - Fix handling of invalid group IDs to return a 400 rather than log an exception and return a 500. ([\#8628](https://github.com/matrix-org/synapse/issues/8628)) - Fix handling of User-Agent headers that are invalid UTF-8, which caused user agents of users to not get correctly recorded. ([\#8632](https://github.com/matrix-org/synapse/issues/8632)) - Fix a bug in the `joined_rooms` admin API if the user has never joined any rooms. The bug was introduced, along with the API, in v1.21.0. ([\#8643](https://github.com/matrix-org/synapse/issues/8643)) - Fix exception during handling multiple concurrent requests for remote media when using multiple media repositories. ([\#8682](https://github.com/matrix-org/synapse/issues/8682)) - Fix bug that prevented Synapse from recovering after losing connection to the database. ([\#8726](https://github.com/matrix-org/synapse/issues/8726)) - Fix bug where the `/_synapse/admin/v1/send_server_notice` API could send notices to non-notice rooms. ([\#8728](https://github.com/matrix-org/synapse/issues/8728)) - Fix PostgreSQL port script fails when DB has no backfilled events. Broke in v1.21.0. ([\#8729](https://github.com/matrix-org/synapse/issues/8729)) - Fix PostgreSQL port script to correctly handle foreign key constraints. Broke in v1.21.0. ([\#8730](https://github.com/matrix-org/synapse/issues/8730)) - Fix PostgreSQL port script so that it can be run again after a failure. Broke in v1.21.0. ([\#8755](https://github.com/matrix-org/synapse/issues/8755)) Improved Documentation ---------------------- - Instructions for Azure AD in the OpenID Connect documentation. Contributed by peterk. ([\#8582](https://github.com/matrix-org/synapse/issues/8582)) - Improve the sample configuration for single sign-on providers. ([\#8635](https://github.com/matrix-org/synapse/issues/8635)) - Fix the filepath of Dex's example config and the link to Dex's Getting Started guide in the OpenID Connect docs. ([\#8657](https://github.com/matrix-org/synapse/issues/8657)) - Note support for Python 3.9. ([\#8665](https://github.com/matrix-org/synapse/issues/8665)) - Minor updates to docs on running tests. ([\#8666](https://github.com/matrix-org/synapse/issues/8666)) - Interlink prometheus/grafana documentation. ([\#8667](https://github.com/matrix-org/synapse/issues/8667)) - Notes on SSO logins and media_repository worker. ([\#8701](https://github.com/matrix-org/synapse/issues/8701)) - Document experimental support for running multiple event persisters. ([\#8706](https://github.com/matrix-org/synapse/issues/8706)) - Add information regarding the various sources of, and expected contributions to, Synapse's documentation to `CONTRIBUTING.md`. ([\#8714](https://github.com/matrix-org/synapse/issues/8714)) - Migrate documentation `docs/admin_api/event_reports` to markdown. ([\#8742](https://github.com/matrix-org/synapse/issues/8742)) - Add some helpful hints to the README for new Synapse developers. Contributed by @chagai95. ([\#8746](https://github.com/matrix-org/synapse/issues/8746)) Internal Changes ---------------- - Optimise `/createRoom` with multiple invited users. ([\#8559](https://github.com/matrix-org/synapse/issues/8559)) - Implement and use an `@lru_cache` decorator. ([\#8595](https://github.com/matrix-org/synapse/issues/8595)) - Don't instantiate Requester directly. ([\#8614](https://github.com/matrix-org/synapse/issues/8614)) - Type hints for `RegistrationStore`. ([\#8615](https://github.com/matrix-org/synapse/issues/8615)) - Change schema to support access tokens belonging to one user but granting access to another. ([\#8616](https://github.com/matrix-org/synapse/issues/8616)) - Remove unused OPTIONS handlers. ([\#8621](https://github.com/matrix-org/synapse/issues/8621)) - Run `mypy` as part of the lint.sh script. ([\#8633](https://github.com/matrix-org/synapse/issues/8633)) - Correct Synapse's PyPI package name in the OpenID Connect installation instructions. ([\#8634](https://github.com/matrix-org/synapse/issues/8634)) - Catch exceptions during initialization of `password_providers`. Contributed by Nicolai Søborg. ([\#8636](https://github.com/matrix-org/synapse/issues/8636)) - Fix typos and spelling errors in the code. ([\#8639](https://github.com/matrix-org/synapse/issues/8639)) - Reduce number of OpenTracing spans started. ([\#8640](https://github.com/matrix-org/synapse/issues/8640), [\#8668](https://github.com/matrix-org/synapse/issues/8668), [\#8670](https://github.com/matrix-org/synapse/issues/8670)) - Add field `total` to device list in admin API. ([\#8644](https://github.com/matrix-org/synapse/issues/8644)) - Add more type hints to the application services code. ([\#8655](https://github.com/matrix-org/synapse/issues/8655), [\#8693](https://github.com/matrix-org/synapse/issues/8693)) - Tell Black to format code for Python 3.5. ([\#8664](https://github.com/matrix-org/synapse/issues/8664)) - Don't pull event from DB when handling replication traffic. ([\#8669](https://github.com/matrix-org/synapse/issues/8669)) - Abstract some invite-related code in preparation for landing knocking. ([\#8671](https://github.com/matrix-org/synapse/issues/8671), [\#8688](https://github.com/matrix-org/synapse/issues/8688)) - Clarify representation of events in logfiles. ([\#8679](https://github.com/matrix-org/synapse/issues/8679)) - Don't require `hiredis` package to be installed to run unit tests. ([\#8680](https://github.com/matrix-org/synapse/issues/8680)) - Fix typing info on cache call signature to accept `on_invalidate`. ([\#8684](https://github.com/matrix-org/synapse/issues/8684)) - Fail tests if they do not await coroutines. ([\#8690](https://github.com/matrix-org/synapse/issues/8690)) - Improve start time by adding an index to `e2e_cross_signing_keys.stream_id`. ([\#8694](https://github.com/matrix-org/synapse/issues/8694)) - Re-organize the structured logging code to separate the TCP transport handling from the JSON formatting. ([\#8697](https://github.com/matrix-org/synapse/issues/8697)) - Use Python 3.8 in Docker images by default. ([\#8698](https://github.com/matrix-org/synapse/issues/8698)) - Remove the "draft" status of the Room Details Admin API. ([\#8702](https://github.com/matrix-org/synapse/issues/8702)) - Improve the error returned when a non-string displayname or avatar_url is used when updating a user's profile. ([\#8705](https://github.com/matrix-org/synapse/issues/8705)) - Block attempts by clients to send server ACLs, or redactions of server ACLs, that would result in the local server being blocked from the room. ([\#8708](https://github.com/matrix-org/synapse/issues/8708)) - Add metrics the allow the local sysadmin to track 3PID `/requestToken` requests. ([\#8712](https://github.com/matrix-org/synapse/issues/8712)) - Consolidate duplicated lists of purged tables that are checked in tests. ([\#8713](https://github.com/matrix-org/synapse/issues/8713)) - Add some `mdui:UIInfo` element examples for `saml2_config` in the homeserver config. ([\#8718](https://github.com/matrix-org/synapse/issues/8718)) - Improve the error message returned when a remote server incorrectly sets the `Content-Type` header in response to a JSON request. ([\#8719](https://github.com/matrix-org/synapse/issues/8719)) - Speed up repeated state resolutions on the same room by caching event ID to auth event ID lookups. ([\#8752](https://github.com/matrix-org/synapse/issues/8752)) Synapse 1.22.1 (2020-10-30) =========================== Bugfixes -------- - Fix a bug where an appservice may not be forwarded events for a room it was recently invited to. Broke in v1.22.0. ([\#8676](https://github.com/matrix-org/synapse/issues/8676)) - Fix `Object of type frozendict is not JSON serializable` exceptions when using third-party event rules. Broke in v1.22.0. ([\#8678](https://github.com/matrix-org/synapse/issues/8678)) Synapse 1.22.0 (2020-10-27) =========================== No significant changes. Synapse 1.22.0rc2 (2020-10-26) ============================== Bugfixes -------- - Fix bugs where ephemeral events were not sent to appservices. Broke in v1.22.0rc1. ([\#8648](https://github.com/matrix-org/synapse/issues/8648), [\#8656](https://github.com/matrix-org/synapse/issues/8656)) - Fix `user_daily_visits` table to not have duplicate rows per user/device due to multiple user agents. Broke in v1.22.0rc1. ([\#8654](https://github.com/matrix-org/synapse/issues/8654)) Synapse 1.22.0rc1 (2020-10-22) ============================== Features -------- - Add a configuration option for always using the "userinfo endpoint" for OpenID Connect. This fixes support for some identity providers, e.g. GitLab. Contributed by Benjamin Koch. ([\#7658](https://github.com/matrix-org/synapse/issues/7658)) - Add ability for `ThirdPartyEventRules` modules to query and manipulate whether a room is in the public rooms directory. ([\#8292](https://github.com/matrix-org/synapse/issues/8292), [\#8467](https://github.com/matrix-org/synapse/issues/8467)) - Add support for olm fallback keys ([MSC2732](https://github.com/matrix-org/matrix-doc/pull/2732)). ([\#8312](https://github.com/matrix-org/synapse/issues/8312), [\#8501](https://github.com/matrix-org/synapse/issues/8501)) - Add support for running background tasks in a separate worker process. ([\#8369](https://github.com/matrix-org/synapse/issues/8369), [\#8458](https://github.com/matrix-org/synapse/issues/8458), [\#8489](https://github.com/matrix-org/synapse/issues/8489), [\#8513](https://github.com/matrix-org/synapse/issues/8513), [\#8544](https://github.com/matrix-org/synapse/issues/8544), [\#8599](https://github.com/matrix-org/synapse/issues/8599)) - Add support for device dehydration ([MSC2697](https://github.com/matrix-org/matrix-doc/pull/2697)). ([\#8380](https://github.com/matrix-org/synapse/issues/8380)) - Add support for [MSC2409](https://github.com/matrix-org/matrix-doc/pull/2409), which allows sending typing, read receipts, and presence events to appservices. ([\#8437](https://github.com/matrix-org/synapse/issues/8437), [\#8590](https://github.com/matrix-org/synapse/issues/8590)) - Change default room version to "6", per [MSC2788](https://github.com/matrix-org/matrix-doc/pull/2788). ([\#8461](https://github.com/matrix-org/synapse/issues/8461)) - Add the ability to send non-membership events into a room via the `ModuleApi`. ([\#8479](https://github.com/matrix-org/synapse/issues/8479)) - Increase default upload size limit from 10M to 50M. Contributed by @Akkowicz. ([\#8502](https://github.com/matrix-org/synapse/issues/8502)) - Add support for modifying event content in `ThirdPartyRules` modules. ([\#8535](https://github.com/matrix-org/synapse/issues/8535), [\#8564](https://github.com/matrix-org/synapse/issues/8564)) Bugfixes -------- - Fix a longstanding bug where invalid ignored users in account data could break clients. ([\#8454](https://github.com/matrix-org/synapse/issues/8454)) - Fix a bug where backfilling a room with an event that was missing the `redacts` field would break. ([\#8457](https://github.com/matrix-org/synapse/issues/8457)) - Don't attempt to respond to some requests if the client has already disconnected. ([\#8465](https://github.com/matrix-org/synapse/issues/8465)) - Fix message duplication if something goes wrong after persisting the event. ([\#8476](https://github.com/matrix-org/synapse/issues/8476)) - Fix incremental sync returning an incorrect `prev_batch` token in timeline section, which when used to paginate returned events that were included in the incremental sync. Broken since v0.16.0. ([\#8486](https://github.com/matrix-org/synapse/issues/8486)) - Expose the `uk.half-shot.msc2778.login.application_service` to clients from the login API. This feature was added in v1.21.0, but was not exposed as a potential login flow. ([\#8504](https://github.com/matrix-org/synapse/issues/8504)) - Fix error code for `/profile/{userId}/displayname` to be `M_BAD_JSON`. ([\#8517](https://github.com/matrix-org/synapse/issues/8517)) - Fix a bug introduced in v1.7.0 that could cause Synapse to insert values from non-state `m.room.retention` events into the `room_retention` database table. ([\#8527](https://github.com/matrix-org/synapse/issues/8527)) - Fix not sending events over federation when using sharded event writers. ([\#8536](https://github.com/matrix-org/synapse/issues/8536)) - Fix a long standing bug where email notifications for encrypted messages were blank. ([\#8545](https://github.com/matrix-org/synapse/issues/8545)) - Fix increase in the number of `There was no active span...` errors logged when using OpenTracing. ([\#8567](https://github.com/matrix-org/synapse/issues/8567)) - Fix a bug that prevented errors encountered during execution of the `synapse_port_db` from being correctly printed. ([\#8585](https://github.com/matrix-org/synapse/issues/8585)) - Fix appservice transactions to only include a maximum of 100 persistent and 100 ephemeral events. ([\#8606](https://github.com/matrix-org/synapse/issues/8606)) Updates to the Docker image --------------------------- - Added multi-arch support (arm64,arm/v7) for the docker images. Contributed by @maquis196. ([\#7921](https://github.com/matrix-org/synapse/issues/7921)) - Add support for passing commandline args to the synapse process. Contributed by @samuel-p. ([\#8390](https://github.com/matrix-org/synapse/issues/8390)) Improved Documentation ---------------------- - Update the directions for using the manhole with coroutines. ([\#8462](https://github.com/matrix-org/synapse/issues/8462)) - Improve readme by adding new shield.io badges. ([\#8493](https://github.com/matrix-org/synapse/issues/8493)) - Added note about docker in manhole.md regarding which ip address to bind to. Contributed by @Maquis196. ([\#8526](https://github.com/matrix-org/synapse/issues/8526)) - Document the new behaviour of the `allowed_lifetime_min` and `allowed_lifetime_max` settings in the room retention configuration. ([\#8529](https://github.com/matrix-org/synapse/issues/8529)) Deprecations and Removals ------------------------- - Drop unused `device_max_stream_id` table. ([\#8589](https://github.com/matrix-org/synapse/issues/8589)) Internal Changes ---------------- - Check for unreachable code with mypy. ([\#8432](https://github.com/matrix-org/synapse/issues/8432)) - Add unit test for event persister sharding. ([\#8433](https://github.com/matrix-org/synapse/issues/8433)) - Allow events to be sent to clients sooner when using sharded event persisters. ([\#8439](https://github.com/matrix-org/synapse/issues/8439), [\#8488](https://github.com/matrix-org/synapse/issues/8488), [\#8496](https://github.com/matrix-org/synapse/issues/8496), [\#8499](https://github.com/matrix-org/synapse/issues/8499)) - Configure `public_baseurl` when using demo scripts. ([\#8443](https://github.com/matrix-org/synapse/issues/8443)) - Add SQL logging on queries that happen during startup. ([\#8448](https://github.com/matrix-org/synapse/issues/8448)) - Speed up unit tests when using PostgreSQL. ([\#8450](https://github.com/matrix-org/synapse/issues/8450)) - Remove redundant database loads of stream_ordering for events we already have. ([\#8452](https://github.com/matrix-org/synapse/issues/8452)) - Reduce inconsistencies between codepaths for membership and non-membership events. ([\#8463](https://github.com/matrix-org/synapse/issues/8463)) - Combine `SpamCheckerApi` with the more generic `ModuleApi`. ([\#8464](https://github.com/matrix-org/synapse/issues/8464)) - Additional testing for `ThirdPartyEventRules`. ([\#8468](https://github.com/matrix-org/synapse/issues/8468)) - Add `-d` option to `./scripts-dev/lint.sh` to lint files that have changed since the last git commit. ([\#8472](https://github.com/matrix-org/synapse/issues/8472)) - Unblacklist some sytests. ([\#8474](https://github.com/matrix-org/synapse/issues/8474)) - Include the log level in the phone home stats. ([\#8477](https://github.com/matrix-org/synapse/issues/8477)) - Remove outdated sphinx documentation, scripts and configuration. ([\#8480](https://github.com/matrix-org/synapse/issues/8480)) - Clarify error message when plugin config parsers raise an error. ([\#8492](https://github.com/matrix-org/synapse/issues/8492)) - Remove the deprecated `Handlers` object. ([\#8494](https://github.com/matrix-org/synapse/issues/8494)) - Fix a threadsafety bug in unit tests. ([\#8497](https://github.com/matrix-org/synapse/issues/8497)) - Add user agent to user_daily_visits table. ([\#8503](https://github.com/matrix-org/synapse/issues/8503)) - Add type hints to various parts of the code base. ([\#8407](https://github.com/matrix-org/synapse/issues/8407), [\#8505](https://github.com/matrix-org/synapse/issues/8505), [\#8507](https://github.com/matrix-org/synapse/issues/8507), [\#8547](https://github.com/matrix-org/synapse/issues/8547), [\#8562](https://github.com/matrix-org/synapse/issues/8562), [\#8609](https://github.com/matrix-org/synapse/issues/8609)) - Remove unused code from the test framework. ([\#8514](https://github.com/matrix-org/synapse/issues/8514)) - Apply some internal fixes to the `HomeServer` class to make its code more idiomatic and statically-verifiable. ([\#8515](https://github.com/matrix-org/synapse/issues/8515)) - Factor out common code between `RoomMemberHandler._locally_reject_invite` and `EventCreationHandler.create_event`. ([\#8537](https://github.com/matrix-org/synapse/issues/8537)) - Improve database performance by executing more queries without starting transactions. ([\#8542](https://github.com/matrix-org/synapse/issues/8542)) - Rename `Cache` to `DeferredCache`, to better reflect its purpose. ([\#8548](https://github.com/matrix-org/synapse/issues/8548)) - Move metric registration code down into `LruCache`. ([\#8561](https://github.com/matrix-org/synapse/issues/8561), [\#8591](https://github.com/matrix-org/synapse/issues/8591)) - Replace `DeferredCache` with the lighter-weight `LruCache` where possible. ([\#8563](https://github.com/matrix-org/synapse/issues/8563)) - Add virtualenv-generated folders to `.gitignore`. ([\#8566](https://github.com/matrix-org/synapse/issues/8566)) - Add `get_immediate` method to `DeferredCache`. ([\#8568](https://github.com/matrix-org/synapse/issues/8568)) - Fix mypy not properly checking across the codebase, additionally, fix a typing assertion error in `handlers/auth.py`. ([\#8569](https://github.com/matrix-org/synapse/issues/8569)) - Fix `synmark` benchmark runner. ([\#8571](https://github.com/matrix-org/synapse/issues/8571)) - Modify `DeferredCache.get()` to return `Deferred`s instead of `ObservableDeferred`s. ([\#8572](https://github.com/matrix-org/synapse/issues/8572)) - Adjust a protocol-type definition to fit `sqlite3` assertions. ([\#8577](https://github.com/matrix-org/synapse/issues/8577)) - Support macOS on the `synmark` benchmark runner. ([\#8578](https://github.com/matrix-org/synapse/issues/8578)) - Update `mypy` static type checker to 0.790. ([\#8583](https://github.com/matrix-org/synapse/issues/8583), [\#8600](https://github.com/matrix-org/synapse/issues/8600)) - Re-organize the structured logging code to separate the TCP transport handling from the JSON formatting. ([\#8587](https://github.com/matrix-org/synapse/issues/8587)) - Remove extraneous unittest logging decorators from unit tests. ([\#8592](https://github.com/matrix-org/synapse/issues/8592)) - Minor optimisations in caching code. ([\#8593](https://github.com/matrix-org/synapse/issues/8593), [\#8594](https://github.com/matrix-org/synapse/issues/8594)) Synapse 1.21.2 (2020-10-15) =========================== Debian packages and Docker images have been rebuilt using the latest versions of dependency libraries, including authlib 0.15.1. Please see bugfixes below. Security advisory ----------------- * HTML pages served via Synapse were vulnerable to cross-site scripting (XSS) attacks. All server administrators are encouraged to upgrade. ([\#8444](https://github.com/matrix-org/synapse/pull/8444)) ([CVE-2020-26891](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-26891)) This fix was originally included in v1.21.0 but was missing a security advisory. This was reported by [Denis Kasak](https://github.com/dkasak). Bugfixes -------- - Fix rare bug where sending an event would fail due to a racey assertion. ([\#8530](https://github.com/matrix-org/synapse/issues/8530)) - An updated version of the authlib dependency is included in the Docker and Debian images to fix an issue using OpenID Connect. See [\#8534](https://github.com/matrix-org/synapse/issues/8534) for details. Synapse 1.21.1 (2020-10-13) =========================== This release fixes a regression in v1.21.0 that prevented debian packages from being built. It is otherwise identical to v1.21.0. Synapse 1.21.0 (2020-10-12) =========================== No significant changes since v1.21.0rc3. As [noted in v1.20.0](https://github.com/matrix-org/synapse/blob/release-v1.21.0/CHANGES.md#synapse-1200-2020-09-22), a future release will drop support for accessing Synapse's [Admin API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api) under the `/_matrix/client/*` endpoint prefixes. At that point, the Admin API will only be accessible under `/_synapse/admin`. Synapse 1.21.0rc3 (2020-10-08) ============================== Bugfixes -------- - Fix duplication of events on high traffic servers, caused by PostgreSQL `could not serialize access due to concurrent update` errors. ([\#8456](https://github.com/matrix-org/synapse/issues/8456)) Internal Changes ---------------- - Add Groovy Gorilla to the list of distributions we build `.deb`s for. ([\#8475](https://github.com/matrix-org/synapse/issues/8475)) Synapse 1.21.0rc2 (2020-10-02) ============================== Features -------- - Convert additional templates from inline HTML to Jinja2 templates. ([\#8444](https://github.com/matrix-org/synapse/issues/8444)) Bugfixes -------- - Fix a regression in v1.21.0rc1 which broke thumbnails of remote media. ([\#8438](https://github.com/matrix-org/synapse/issues/8438)) - Do not expose the experimental `uk.half-shot.msc2778.login.application_service` flow in the login API, which caused a compatibility problem with Element iOS. ([\#8440](https://github.com/matrix-org/synapse/issues/8440)) - Fix malformed log line in new federation "catch up" logic. ([\#8442](https://github.com/matrix-org/synapse/issues/8442)) - Fix DB query on startup for negative streams which caused long start up times. Introduced in [\#8374](https://github.com/matrix-org/synapse/issues/8374). ([\#8447](https://github.com/matrix-org/synapse/issues/8447)) Synapse 1.21.0rc1 (2020-10-01) ============================== Features -------- - Require the user to confirm that their password should be reset after clicking the email confirmation link. ([\#8004](https://github.com/matrix-org/synapse/issues/8004)) - Add an admin API `GET /_synapse/admin/v1/event_reports` to read entries of table `event_reports`. Contributed by @dklimpel. ([\#8217](https://github.com/matrix-org/synapse/issues/8217)) - Consolidate the SSO error template across all configuration. ([\#8248](https://github.com/matrix-org/synapse/issues/8248), [\#8405](https://github.com/matrix-org/synapse/issues/8405)) - Add a configuration option to specify a whitelist of domains that a user can be redirected to after validating their email or phone number. ([\#8275](https://github.com/matrix-org/synapse/issues/8275), [\#8417](https://github.com/matrix-org/synapse/issues/8417)) - Add experimental support for sharding event persister. ([\#8294](https://github.com/matrix-org/synapse/issues/8294), [\#8387](https://github.com/matrix-org/synapse/issues/8387), [\#8396](https://github.com/matrix-org/synapse/issues/8396), [\#8419](https://github.com/matrix-org/synapse/issues/8419)) - Add the room topic and avatar to the room details admin API. ([\#8305](https://github.com/matrix-org/synapse/issues/8305)) - Add an admin API for querying rooms where a user is a member. Contributed by @dklimpel. ([\#8306](https://github.com/matrix-org/synapse/issues/8306)) - Add `uk.half-shot.msc2778.login.application_service` login type to allow appservices to login. ([\#8320](https://github.com/matrix-org/synapse/issues/8320)) - Add a configuration option that allows existing users to log in with OpenID Connect. Contributed by @BBBSnowball and @OmmyZhang. ([\#8345](https://github.com/matrix-org/synapse/issues/8345)) - Add prometheus metrics for replication requests. ([\#8406](https://github.com/matrix-org/synapse/issues/8406)) - Support passing additional single sign-on parameters to the client. ([\#8413](https://github.com/matrix-org/synapse/issues/8413)) - Add experimental reporting of metrics on expensive rooms for state-resolution. ([\#8420](https://github.com/matrix-org/synapse/issues/8420)) - Add experimental prometheus metric to track numbers of "large" rooms for state resolutiom. ([\#8425](https://github.com/matrix-org/synapse/issues/8425)) - Add prometheus metrics to track federation delays. ([\#8430](https://github.com/matrix-org/synapse/issues/8430)) Bugfixes -------- - Fix a bug in the media repository where remote thumbnails with the same size but different crop methods would overwrite each other. Contributed by @deepbluev7. ([\#7124](https://github.com/matrix-org/synapse/issues/7124)) - Fix inconsistent handling of non-existent push rules, and stop tracking the `enabled` state of removed push rules. ([\#7796](https://github.com/matrix-org/synapse/issues/7796)) - Fix a longstanding bug when storing a media file with an empty `upload_name`. ([\#7905](https://github.com/matrix-org/synapse/issues/7905)) - Fix messages not being sent over federation until an event is sent into the same room. ([\#8230](https://github.com/matrix-org/synapse/issues/8230), [\#8247](https://github.com/matrix-org/synapse/issues/8247), [\#8258](https://github.com/matrix-org/synapse/issues/8258), [\#8272](https://github.com/matrix-org/synapse/issues/8272), [\#8322](https://github.com/matrix-org/synapse/issues/8322)) - Fix a longstanding bug where files that could not be thumbnailed would result in an Internal Server Error. ([\#8236](https://github.com/matrix-org/synapse/issues/8236), [\#8435](https://github.com/matrix-org/synapse/issues/8435)) - Upgrade minimum version of `canonicaljson` to version 1.4.0, to fix an unicode encoding issue. ([\#8262](https://github.com/matrix-org/synapse/issues/8262)) - Fix longstanding bug which could lead to incomplete database upgrades on SQLite. ([\#8265](https://github.com/matrix-org/synapse/issues/8265)) - Fix stack overflow when stderr is redirected to the logging system, and the logging system encounters an error. ([\#8268](https://github.com/matrix-org/synapse/issues/8268)) - Fix a bug which cause the logging system to report errors, if `DEBUG` was enabled and no `context` filter was applied. ([\#8278](https://github.com/matrix-org/synapse/issues/8278)) - Fix edge case where push could get delayed for a user until a later event was pushed. ([\#8287](https://github.com/matrix-org/synapse/issues/8287)) - Fix fetching malformed events from remote servers. ([\#8324](https://github.com/matrix-org/synapse/issues/8324)) - Fix `UnboundLocalError` from occurring when appservices send a malformed register request. ([\#8329](https://github.com/matrix-org/synapse/issues/8329)) - Don't send push notifications to expired user accounts. ([\#8353](https://github.com/matrix-org/synapse/issues/8353)) - Fix a regression in v1.19.0 with reactivating users through the admin API. ([\#8362](https://github.com/matrix-org/synapse/issues/8362)) - Fix a bug where during device registration the length of the device name wasn't limited. ([\#8364](https://github.com/matrix-org/synapse/issues/8364)) - Include `guest_access` in the fields that are checked for null bytes when updating `room_stats_state`. Broke in v1.7.2. ([\#8373](https://github.com/matrix-org/synapse/issues/8373)) - Fix theoretical race condition where events are not sent down `/sync` if the synchrotron worker is restarted without restarting other workers. ([\#8374](https://github.com/matrix-org/synapse/issues/8374)) - Fix a bug which could cause errors in rooms with malformed membership events, on servers using sqlite. ([\#8385](https://github.com/matrix-org/synapse/issues/8385)) - Fix "Re-starting finished log context" warning when receiving an event we already had over federation. ([\#8398](https://github.com/matrix-org/synapse/issues/8398)) - Fix incorrect handling of timeouts on outgoing HTTP requests. ([\#8400](https://github.com/matrix-org/synapse/issues/8400)) - Fix a regression in v1.20.0 in the `synapse_port_db` script regarding the `ui_auth_sessions_ips` table. ([\#8410](https://github.com/matrix-org/synapse/issues/8410)) - Remove unnecessary 3PID registration check when resetting password via an email address. Bug introduced in v0.34.0rc2. ([\#8414](https://github.com/matrix-org/synapse/issues/8414)) Improved Documentation ---------------------- - Add `/_synapse/client` to the reverse proxy documentation. ([\#8227](https://github.com/matrix-org/synapse/issues/8227)) - Add note to the reverse proxy settings documentation about disabling Apache's mod_security2. Contributed by Julian Fietkau (@jfietkau). ([\#8375](https://github.com/matrix-org/synapse/issues/8375)) - Improve description of `server_name` config option in `homserver.yaml`. ([\#8415](https://github.com/matrix-org/synapse/issues/8415)) Deprecations and Removals ------------------------- - Drop support for `prometheus_client` older than 0.4.0. ([\#8426](https://github.com/matrix-org/synapse/issues/8426)) Internal Changes ---------------- - Fix tests on distros which disable TLSv1.0. Contributed by @danc86. ([\#8208](https://github.com/matrix-org/synapse/issues/8208)) - Simplify the distributor code to avoid unnecessary work. ([\#8216](https://github.com/matrix-org/synapse/issues/8216)) - Remove the `populate_stats_process_rooms_2` background job and restore functionality to `populate_stats_process_rooms`. ([\#8243](https://github.com/matrix-org/synapse/issues/8243)) - Clean up type hints for `PaginationConfig`. ([\#8250](https://github.com/matrix-org/synapse/issues/8250), [\#8282](https://github.com/matrix-org/synapse/issues/8282)) - Track the latest event for every destination and room for catch-up after federation outage. ([\#8256](https://github.com/matrix-org/synapse/issues/8256)) - Fix non-user visible bug in implementation of `MultiWriterIdGenerator.get_current_token_for_writer`. ([\#8257](https://github.com/matrix-org/synapse/issues/8257)) - Switch to the JSON implementation from the standard library. ([\#8259](https://github.com/matrix-org/synapse/issues/8259)) - Add type hints to `synapse.util.async_helpers`. ([\#8260](https://github.com/matrix-org/synapse/issues/8260)) - Simplify tests that mock asynchronous functions. ([\#8261](https://github.com/matrix-org/synapse/issues/8261)) - Add type hints to `StreamToken` and `RoomStreamToken` classes. ([\#8279](https://github.com/matrix-org/synapse/issues/8279)) - Change `StreamToken.room_key` to be a `RoomStreamToken` instance. ([\#8281](https://github.com/matrix-org/synapse/issues/8281)) - Refactor notifier code to correctly use the max event stream position. ([\#8288](https://github.com/matrix-org/synapse/issues/8288)) - Use slotted classes where possible. ([\#8296](https://github.com/matrix-org/synapse/issues/8296)) - Support testing the local Synapse checkout against the [Complement homeserver test suite](https://github.com/matrix-org/complement/). ([\#8317](https://github.com/matrix-org/synapse/issues/8317)) - Update outdated usages of `metaclass` to python 3 syntax. ([\#8326](https://github.com/matrix-org/synapse/issues/8326)) - Move lint-related dependencies to package-extra field, update CONTRIBUTING.md to utilise this. ([\#8330](https://github.com/matrix-org/synapse/issues/8330), [\#8377](https://github.com/matrix-org/synapse/issues/8377)) - Use the `admin_patterns` helper in additional locations. ([\#8331](https://github.com/matrix-org/synapse/issues/8331)) - Fix test logging to allow braces in log output. ([\#8335](https://github.com/matrix-org/synapse/issues/8335)) - Remove `__future__` imports related to Python 2 compatibility. ([\#8337](https://github.com/matrix-org/synapse/issues/8337)) - Simplify `super()` calls to Python 3 syntax. ([\#8344](https://github.com/matrix-org/synapse/issues/8344)) - Fix bad merge from `release-v1.20.0` branch to `develop`. ([\#8354](https://github.com/matrix-org/synapse/issues/8354)) - Factor out a `_send_dummy_event_for_room` method. ([\#8370](https://github.com/matrix-org/synapse/issues/8370)) - Improve logging of state resolution. ([\#8371](https://github.com/matrix-org/synapse/issues/8371)) - Add type annotations to `SimpleHttpClient`. ([\#8372](https://github.com/matrix-org/synapse/issues/8372)) - Refactor ID generators to use `async with` syntax. ([\#8383](https://github.com/matrix-org/synapse/issues/8383)) - Add `EventStreamPosition` type. ([\#8388](https://github.com/matrix-org/synapse/issues/8388)) - Create a mechanism for marking tests "logcontext clean". ([\#8399](https://github.com/matrix-org/synapse/issues/8399)) - A pair of tiny cleanups in the federation request code. ([\#8401](https://github.com/matrix-org/synapse/issues/8401)) - Add checks on startup that PostgreSQL sequences are consistent with their associated tables. ([\#8402](https://github.com/matrix-org/synapse/issues/8402)) - Do not include appservice users when calculating the total MAU for a server. ([\#8404](https://github.com/matrix-org/synapse/issues/8404)) - Typing fixes for `synapse.handlers.federation`. ([\#8422](https://github.com/matrix-org/synapse/issues/8422)) - Various refactors to simplify stream token handling. ([\#8423](https://github.com/matrix-org/synapse/issues/8423)) - Make stream token serializing/deserializing async. ([\#8427](https://github.com/matrix-org/synapse/issues/8427)) Synapse 1.20.1 (2020-09-24) =========================== Bugfixes -------- - Fix a bug introduced in v1.20.0 which caused the `synapse_port_db` script to fail. ([\#8386](https://github.com/matrix-org/synapse/issues/8386)) - Fix a bug introduced in v1.20.0 which caused variables to be incorrectly escaped in Jinja2 templates. ([\#8394](https://github.com/matrix-org/synapse/issues/8394)) Synapse 1.20.0 (2020-09-22) =========================== No significant changes since v1.20.0rc5. Removal warning --------------- Historically, the [Synapse Admin API](https://github.com/matrix-org/synapse/tree/master/docs) has been accessible under the `/_matrix/client/api/v1/admin`, `/_matrix/client/unstable/admin`, `/_matrix/client/r0/admin` and `/_synapse/admin` prefixes. In a future release, we will be dropping support for accessing Synapse's Admin API using the `/_matrix/client/*` prefixes. From that point, the Admin API will only be accessible under `/_synapse/admin`. This makes it easier for homeserver admins to lock down external access to the Admin API endpoints. Synapse 1.20.0rc5 (2020-09-18) ============================== In addition to the below, Synapse 1.20.0rc5 also includes the bug fix that was included in 1.19.3. Features -------- - Add flags to the `/versions` endpoint for whether new rooms default to using E2EE. ([\#8343](https://github.com/matrix-org/synapse/issues/8343)) Bugfixes -------- - Fix rate limiting of federation `/send` requests. ([\#8342](https://github.com/matrix-org/synapse/issues/8342)) - Fix a longstanding bug where back pagination over federation could get stuck if it failed to handle a received event. ([\#8349](https://github.com/matrix-org/synapse/issues/8349)) Internal Changes ---------------- - Blacklist [MSC2753](https://github.com/matrix-org/matrix-doc/pull/2753) SyTests until it is implemented. ([\#8285](https://github.com/matrix-org/synapse/issues/8285)) Synapse 1.19.3 (2020-09-18) =========================== Bugfixes -------- - Partially mitigate bug where newly joined servers couldn't get past events in a room when there is a malformed event. ([\#8350](https://github.com/matrix-org/synapse/issues/8350)) Synapse 1.20.0rc4 (2020-09-16) ============================== Synapse 1.20.0rc4 is identical to 1.20.0rc3, with the addition of the security fix that was included in 1.19.2. Synapse 1.19.2 (2020-09-16) =========================== Due to the issue below server admins are encouraged to upgrade as soon as possible. Bugfixes -------- - Fix joining rooms over federation that include malformed events. ([\#8324](https://github.com/matrix-org/synapse/issues/8324)) Synapse 1.20.0rc3 (2020-09-11) ============================== Bugfixes -------- - Fix a bug introduced in v1.20.0rc1 where the wrong exception was raised when invalid JSON data is encountered. ([\#8291](https://github.com/matrix-org/synapse/issues/8291)) Synapse 1.20.0rc2 (2020-09-09) ============================== Bugfixes -------- - Fix a bug introduced in v1.20.0rc1 causing some features related to notifications to misbehave following the implementation of unread counts. ([\#8280](https://github.com/matrix-org/synapse/issues/8280)) Synapse 1.20.0rc1 (2020-09-08) ============================== Removal warning --------------- Some older clients used a [disallowed character](https://matrix.org/docs/spec/client_server/r0.6.1#post-matrix-client-r0-register-email-requesttoken) (`:`) in the `client_secret` parameter of various endpoints. The incorrect behaviour was allowed for backwards compatibility, but is now being removed from Synapse as most users have updated their client. Further context can be found at [\#6766](https://github.com/matrix-org/synapse/issues/6766). Features -------- - Add an endpoint to query your shared rooms with another user as an implementation of [MSC2666](https://github.com/matrix-org/matrix-doc/pull/2666). ([\#7785](https://github.com/matrix-org/synapse/issues/7785)) - Iteratively encode JSON to avoid blocking the reactor. ([\#8013](https://github.com/matrix-org/synapse/issues/8013), [\#8116](https://github.com/matrix-org/synapse/issues/8116)) - Add support for shadow-banning users (ignoring any message send requests). ([\#8034](https://github.com/matrix-org/synapse/issues/8034), [\#8092](https://github.com/matrix-org/synapse/issues/8092), [\#8095](https://github.com/matrix-org/synapse/issues/8095), [\#8142](https://github.com/matrix-org/synapse/issues/8142), [\#8152](https://github.com/matrix-org/synapse/issues/8152), [\#8157](https://github.com/matrix-org/synapse/issues/8157), [\#8158](https://github.com/matrix-org/synapse/issues/8158), [\#8176](https://github.com/matrix-org/synapse/issues/8176)) - Use the default template file when its equivalent is not found in a custom template directory. ([\#8037](https://github.com/matrix-org/synapse/issues/8037), [\#8107](https://github.com/matrix-org/synapse/issues/8107), [\#8252](https://github.com/matrix-org/synapse/issues/8252)) - Add unread messages count to sync responses, as specified in [MSC2654](https://github.com/matrix-org/matrix-doc/pull/2654). ([\#8059](https://github.com/matrix-org/synapse/issues/8059), [\#8254](https://github.com/matrix-org/synapse/issues/8254), [\#8270](https://github.com/matrix-org/synapse/issues/8270), [\#8274](https://github.com/matrix-org/synapse/issues/8274)) - Optimise `/federation/v1/user/devices/` API by only returning devices with encryption keys. ([\#8198](https://github.com/matrix-org/synapse/issues/8198)) Bugfixes -------- - Fix a memory leak by limiting the length of time that messages will be queued for a remote server that has been unreachable. ([\#7864](https://github.com/matrix-org/synapse/issues/7864)) - Fix `Re-starting finished log context PUT-nnnn` warning when event persistence failed. ([\#8081](https://github.com/matrix-org/synapse/issues/8081)) - Synapse now correctly enforces the valid characters in the `client_secret` parameter used in various endpoints. ([\#8101](https://github.com/matrix-org/synapse/issues/8101)) - Fix a bug introduced in v1.7.2 impacting message retention policies that would allow federated homeservers to dictate a retention period that's lower than the configured minimum allowed duration in the configuration file. ([\#8104](https://github.com/matrix-org/synapse/issues/8104)) - Fix a long-standing bug where invalid JSON would be accepted by Synapse. ([\#8106](https://github.com/matrix-org/synapse/issues/8106)) - Fix a bug introduced in Synapse v1.12.0 which could cause `/sync` requests to fail with a 404 if you had a very old outstanding room invite. ([\#8110](https://github.com/matrix-org/synapse/issues/8110)) - Return a proper error code when the rooms of an invalid group are requested. ([\#8129](https://github.com/matrix-org/synapse/issues/8129)) - Fix a bug which could cause a leaked postgres connection if synapse was set to daemonize. ([\#8131](https://github.com/matrix-org/synapse/issues/8131)) - Clarify the error code if a user tries to register with a numeric ID. This bug was introduced in v1.15.0. ([\#8135](https://github.com/matrix-org/synapse/issues/8135)) - Fix a bug where appservices with ratelimiting disabled would still be ratelimited when joining rooms. This bug was introduced in v1.19.0. ([\#8139](https://github.com/matrix-org/synapse/issues/8139)) - Fix logging in via OpenID Connect with a provider that uses integer user IDs. ([\#8190](https://github.com/matrix-org/synapse/issues/8190)) - Fix a longstanding bug where user directory updates could break when unexpected profile data was included in events. ([\#8223](https://github.com/matrix-org/synapse/issues/8223)) - Fix a longstanding bug where stats updates could break when unexpected profile data was included in events. ([\#8226](https://github.com/matrix-org/synapse/issues/8226)) - Fix slow start times for large servers by removing a table scan of the `users` table from startup code. ([\#8271](https://github.com/matrix-org/synapse/issues/8271)) Updates to the Docker image --------------------------- - Fix builds of the Docker image on non-x86 platforms. ([\#8144](https://github.com/matrix-org/synapse/issues/8144)) - Added curl for healthcheck support and readme updates for the change. Contributed by @maquis196. ([\#8147](https://github.com/matrix-org/synapse/issues/8147)) Improved Documentation ---------------------- - Link to matrix-synapse-rest-password-provider in the password provider documentation. ([\#8111](https://github.com/matrix-org/synapse/issues/8111)) - Updated documentation to note that Synapse does not follow `HTTP 308` redirects due to an upstream library not supporting them. Contributed by Ryan Cole. ([\#8120](https://github.com/matrix-org/synapse/issues/8120)) - Explain better what GDPR-erased means when deactivating a user. ([\#8189](https://github.com/matrix-org/synapse/issues/8189)) Internal Changes ---------------- - Add filter `name` to the `/users` admin API, which filters by user ID or displayname. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7377](https://github.com/matrix-org/synapse/issues/7377), [\#8163](https://github.com/matrix-org/synapse/issues/8163)) - Reduce run times of some unit tests by advancing the reactor a fewer number of times. ([\#7757](https://github.com/matrix-org/synapse/issues/7757)) - Don't fail `/submit_token` requests on incorrect session ID if `request_token_inhibit_3pid_errors` is turned on. ([\#7991](https://github.com/matrix-org/synapse/issues/7991)) - Convert various parts of the codebase to async/await. ([\#8071](https://github.com/matrix-org/synapse/issues/8071), [\#8072](https://github.com/matrix-org/synapse/issues/8072), [\#8074](https://github.com/matrix-org/synapse/issues/8074), [\#8075](https://github.com/matrix-org/synapse/issues/8075), [\#8076](https://github.com/matrix-org/synapse/issues/8076), [\#8087](https://github.com/matrix-org/synapse/issues/8087), [\#8100](https://github.com/matrix-org/synapse/issues/8100), [\#8119](https://github.com/matrix-org/synapse/issues/8119), [\#8121](https://github.com/matrix-org/synapse/issues/8121), [\#8133](https://github.com/matrix-org/synapse/issues/8133), [\#8156](https://github.com/matrix-org/synapse/issues/8156), [\#8162](https://github.com/matrix-org/synapse/issues/8162), [\#8166](https://github.com/matrix-org/synapse/issues/8166), [\#8168](https://github.com/matrix-org/synapse/issues/8168), [\#8173](https://github.com/matrix-org/synapse/issues/8173), [\#8191](https://github.com/matrix-org/synapse/issues/8191), [\#8192](https://github.com/matrix-org/synapse/issues/8192), [\#8193](https://github.com/matrix-org/synapse/issues/8193), [\#8194](https://github.com/matrix-org/synapse/issues/8194), [\#8195](https://github.com/matrix-org/synapse/issues/8195), [\#8197](https://github.com/matrix-org/synapse/issues/8197), [\#8199](https://github.com/matrix-org/synapse/issues/8199), [\#8200](https://github.com/matrix-org/synapse/issues/8200), [\#8201](https://github.com/matrix-org/synapse/issues/8201), [\#8202](https://github.com/matrix-org/synapse/issues/8202), [\#8207](https://github.com/matrix-org/synapse/issues/8207), [\#8213](https://github.com/matrix-org/synapse/issues/8213), [\#8214](https://github.com/matrix-org/synapse/issues/8214)) - Remove some unused database functions. ([\#8085](https://github.com/matrix-org/synapse/issues/8085)) - Add type hints to various parts of the codebase. ([\#8090](https://github.com/matrix-org/synapse/issues/8090), [\#8127](https://github.com/matrix-org/synapse/issues/8127), [\#8187](https://github.com/matrix-org/synapse/issues/8187), [\#8241](https://github.com/matrix-org/synapse/issues/8241), [\#8140](https://github.com/matrix-org/synapse/issues/8140), [\#8183](https://github.com/matrix-org/synapse/issues/8183), [\#8232](https://github.com/matrix-org/synapse/issues/8232), [\#8235](https://github.com/matrix-org/synapse/issues/8235), [\#8237](https://github.com/matrix-org/synapse/issues/8237), [\#8244](https://github.com/matrix-org/synapse/issues/8244)) - Return the previous stream token if a non-member event is a duplicate. ([\#8093](https://github.com/matrix-org/synapse/issues/8093), [\#8112](https://github.com/matrix-org/synapse/issues/8112)) - Separate `get_current_token` into two since there are two different use cases for it. ([\#8113](https://github.com/matrix-org/synapse/issues/8113)) - Remove `ChainedIdGenerator`. ([\#8123](https://github.com/matrix-org/synapse/issues/8123)) - Reduce the amount of whitespace in JSON stored and sent in responses. ([\#8124](https://github.com/matrix-org/synapse/issues/8124)) - Update the test federation client to handle streaming responses. ([\#8130](https://github.com/matrix-org/synapse/issues/8130)) - Micro-optimisations to `get_auth_chain_ids`. ([\#8132](https://github.com/matrix-org/synapse/issues/8132)) - Refactor `StreamIdGenerator` and `MultiWriterIdGenerator` to have the same interface. ([\#8161](https://github.com/matrix-org/synapse/issues/8161)) - Add functions to `MultiWriterIdGen` used by events stream. ([\#8164](https://github.com/matrix-org/synapse/issues/8164), [\#8179](https://github.com/matrix-org/synapse/issues/8179)) - Fix tests that were broken due to the merge of 1.19.1. ([\#8167](https://github.com/matrix-org/synapse/issues/8167)) - Make `SlavedIdTracker.advance` have the same interface as `MultiWriterIDGenerator`. ([\#8171](https://github.com/matrix-org/synapse/issues/8171)) - Remove unused `is_guest` parameter from, and add safeguard to, `MessageHandler.get_room_data`. ([\#8174](https://github.com/matrix-org/synapse/issues/8174), [\#8181](https://github.com/matrix-org/synapse/issues/8181)) - Standardize the mypy configuration. ([\#8175](https://github.com/matrix-org/synapse/issues/8175)) - Refactor some of `LoginRestServlet`'s helper methods, and move them to `AuthHandler` for easier reuse. ([\#8182](https://github.com/matrix-org/synapse/issues/8182)) - Fix `wait_for_stream_position` to allow multiple waiters on same stream ID. ([\#8196](https://github.com/matrix-org/synapse/issues/8196)) - Make `MultiWriterIDGenerator` work for streams that use negative values. ([\#8203](https://github.com/matrix-org/synapse/issues/8203)) - Refactor queries for device keys and cross-signatures. ([\#8204](https://github.com/matrix-org/synapse/issues/8204), [\#8205](https://github.com/matrix-org/synapse/issues/8205), [\#8222](https://github.com/matrix-org/synapse/issues/8222), [\#8224](https://github.com/matrix-org/synapse/issues/8224), [\#8225](https://github.com/matrix-org/synapse/issues/8225), [\#8231](https://github.com/matrix-org/synapse/issues/8231), [\#8233](https://github.com/matrix-org/synapse/issues/8233), [\#8234](https://github.com/matrix-org/synapse/issues/8234)) - Fix type hints for functions decorated with `@cached`. ([\#8240](https://github.com/matrix-org/synapse/issues/8240)) - Remove obsolete `order` field from federation send queues. ([\#8245](https://github.com/matrix-org/synapse/issues/8245)) - Stop sub-classing from object. ([\#8249](https://github.com/matrix-org/synapse/issues/8249)) - Add more logging to debug slow startup. ([\#8264](https://github.com/matrix-org/synapse/issues/8264)) - Do not attempt to upgrade database schema on worker processes. ([\#8266](https://github.com/matrix-org/synapse/issues/8266), [\#8276](https://github.com/matrix-org/synapse/issues/8276)) Synapse 1.19.1 (2020-08-27) =========================== No significant changes. Synapse 1.19.1rc1 (2020-08-25) ============================== Bugfixes -------- - Fix a bug introduced in v1.19.0 where appservices with ratelimiting disabled would still be ratelimited when joining rooms. ([\#8139](https://github.com/matrix-org/synapse/issues/8139)) - Fix a bug introduced in v1.19.0 that would cause e.g. profile updates to fail due to incorrect application of rate limits on join requests. ([\#8153](https://github.com/matrix-org/synapse/issues/8153)) Synapse 1.19.0 (2020-08-17) =========================== No significant changes since 1.19.0rc1. Removal warning --------------- As outlined in the [previous release](https://github.com/matrix-org/synapse/releases/tag/v1.18.0), we are no longer publishing Docker images with the `-py3` tag suffix. On top of that, we have also removed the `latest-py3` tag. Please see [the announcement in the upgrade notes for 1.18.0](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1180). Synapse 1.19.0rc1 (2020-08-13) ============================== Features -------- - Add option to allow server admins to join rooms which fail complexity checks. Contributed by @lugino-emeritus. ([\#7902](https://github.com/matrix-org/synapse/issues/7902)) - Add an option to purge room or not with delete room admin endpoint (`POST /_synapse/admin/v1/rooms//delete`). Contributed by @dklimpel. ([\#7964](https://github.com/matrix-org/synapse/issues/7964)) - Add rate limiting to users joining rooms. ([\#8008](https://github.com/matrix-org/synapse/issues/8008)) - Add a `/health` endpoint to every configured HTTP listener that can be used as a health check endpoint by load balancers. ([\#8048](https://github.com/matrix-org/synapse/issues/8048)) - Allow login to be blocked based on the values of SAML attributes. ([\#8052](https://github.com/matrix-org/synapse/issues/8052)) - Allow guest access to the `GET /_matrix/client/r0/rooms/{room_id}/members` endpoint, according to MSC2689. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7314](https://github.com/matrix-org/synapse/issues/7314)) Bugfixes -------- - Fix a bug introduced in Synapse v1.7.2 which caused inaccurate membership counts in the room directory. ([\#7977](https://github.com/matrix-org/synapse/issues/7977)) - Fix a long standing bug: 'Duplicate key value violates unique constraint "event_relations_id"' when message retention is configured. ([\#7978](https://github.com/matrix-org/synapse/issues/7978)) - Fix "no create event in auth events" when trying to reject invitation after inviter leaves. Bug introduced in Synapse v1.10.0. ([\#7980](https://github.com/matrix-org/synapse/issues/7980)) - Fix various comments and minor discrepancies in server notices code. ([\#7996](https://github.com/matrix-org/synapse/issues/7996)) - Fix a long standing bug where HTTP HEAD requests resulted in a 400 error. ([\#7999](https://github.com/matrix-org/synapse/issues/7999)) - Fix a long-standing bug which caused two copies of some log lines to be written when synctl was used along with a MemoryHandler logger. ([\#8011](https://github.com/matrix-org/synapse/issues/8011), [\#8012](https://github.com/matrix-org/synapse/issues/8012)) Updates to the Docker image --------------------------- - We no longer publish Docker images with the `-py3` tag suffix, as [announced in the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1180). ([\#8056](https://github.com/matrix-org/synapse/issues/8056)) Improved Documentation ---------------------- - Document how to set up a client .well-known file and fix several pieces of outdated documentation. ([\#7899](https://github.com/matrix-org/synapse/issues/7899)) - Improve workers docs. ([\#7990](https://github.com/matrix-org/synapse/issues/7990), [\#8000](https://github.com/matrix-org/synapse/issues/8000)) - Fix typo in `docs/workers.md`. ([\#7992](https://github.com/matrix-org/synapse/issues/7992)) - Add documentation for how to undo a room shutdown. ([\#7998](https://github.com/matrix-org/synapse/issues/7998), [\#8010](https://github.com/matrix-org/synapse/issues/8010)) Internal Changes ---------------- - Reduce the amount of whitespace in JSON stored and sent in responses. Contributed by David Vo. ([\#7372](https://github.com/matrix-org/synapse/issues/7372)) - Switch to the JSON implementation from the standard library and bump the minimum version of the canonicaljson library to 1.2.0. ([\#7936](https://github.com/matrix-org/synapse/issues/7936), [\#7979](https://github.com/matrix-org/synapse/issues/7979)) - Convert various parts of the codebase to async/await. ([\#7947](https://github.com/matrix-org/synapse/issues/7947), [\#7948](https://github.com/matrix-org/synapse/issues/7948), [\#7949](https://github.com/matrix-org/synapse/issues/7949), [\#7951](https://github.com/matrix-org/synapse/issues/7951), [\#7963](https://github.com/matrix-org/synapse/issues/7963), [\#7973](https://github.com/matrix-org/synapse/issues/7973), [\#7975](https://github.com/matrix-org/synapse/issues/7975), [\#7976](https://github.com/matrix-org/synapse/issues/7976), [\#7981](https://github.com/matrix-org/synapse/issues/7981), [\#7987](https://github.com/matrix-org/synapse/issues/7987), [\#7989](https://github.com/matrix-org/synapse/issues/7989), [\#8003](https://github.com/matrix-org/synapse/issues/8003), [\#8014](https://github.com/matrix-org/synapse/issues/8014), [\#8016](https://github.com/matrix-org/synapse/issues/8016), [\#8027](https://github.com/matrix-org/synapse/issues/8027), [\#8031](https://github.com/matrix-org/synapse/issues/8031), [\#8032](https://github.com/matrix-org/synapse/issues/8032), [\#8035](https://github.com/matrix-org/synapse/issues/8035), [\#8042](https://github.com/matrix-org/synapse/issues/8042), [\#8044](https://github.com/matrix-org/synapse/issues/8044), [\#8045](https://github.com/matrix-org/synapse/issues/8045), [\#8061](https://github.com/matrix-org/synapse/issues/8061), [\#8062](https://github.com/matrix-org/synapse/issues/8062), [\#8063](https://github.com/matrix-org/synapse/issues/8063), [\#8066](https://github.com/matrix-org/synapse/issues/8066), [\#8069](https://github.com/matrix-org/synapse/issues/8069), [\#8070](https://github.com/matrix-org/synapse/issues/8070)) - Move some database-related log lines from the default logger to the database/transaction loggers. ([\#7952](https://github.com/matrix-org/synapse/issues/7952)) - Add a script to detect source code files using non-unix line terminators. ([\#7965](https://github.com/matrix-org/synapse/issues/7965), [\#7970](https://github.com/matrix-org/synapse/issues/7970)) - Log the SAML session ID during creation. ([\#7971](https://github.com/matrix-org/synapse/issues/7971)) - Implement new experimental push rules for some users. ([\#7997](https://github.com/matrix-org/synapse/issues/7997)) - Remove redundant and unreliable signature check for v1 Identity Service lookup responses. ([\#8001](https://github.com/matrix-org/synapse/issues/8001)) - Improve the performance of the register endpoint. ([\#8009](https://github.com/matrix-org/synapse/issues/8009)) - Reduce less useful output in the newsfragment CI step. Add a link to the changelog section of the contributing guide on error. ([\#8024](https://github.com/matrix-org/synapse/issues/8024)) - Rename storage layer objects to be more sensible. ([\#8033](https://github.com/matrix-org/synapse/issues/8033)) - Change the default log config to reduce disk I/O and storage for new servers. ([\#8040](https://github.com/matrix-org/synapse/issues/8040)) - Add an assertion on `prev_events` in `create_new_client_event`. ([\#8041](https://github.com/matrix-org/synapse/issues/8041)) - Add a comment to `ServerContextFactory` about the use of `SSLv23_METHOD`. ([\#8043](https://github.com/matrix-org/synapse/issues/8043)) - Log `OPTIONS` requests at `DEBUG` rather than `INFO` level to reduce amount logged at `INFO`. ([\#8049](https://github.com/matrix-org/synapse/issues/8049)) - Reduce amount of outbound request logging at `INFO` level. ([\#8050](https://github.com/matrix-org/synapse/issues/8050)) - It is no longer necessary to explicitly define `filters` in the logging configuration. (Continuing to do so is redundant but harmless.) ([\#8051](https://github.com/matrix-org/synapse/issues/8051)) - Add and improve type hints. ([\#8058](https://github.com/matrix-org/synapse/issues/8058), [\#8064](https://github.com/matrix-org/synapse/issues/8064), [\#8060](https://github.com/matrix-org/synapse/issues/8060), [\#8067](https://github.com/matrix-org/synapse/issues/8067)) Synapse 1.18.0 (2020-07-30) =========================== Deprecation Warnings -------------------- ### Docker Tags with `-py3` Suffix From 10th August 2020, we will no longer publish Docker images with the `-py3` tag suffix. The images tagged with the `-py3` suffix have been identical to the non-suffixed tags since release 0.99.0, and the suffix is obsolete. On 10th August, we will remove the `latest-py3` tag. Existing per-release tags (such as `v1.18.0-py3`) will not be removed, but no new `-py3` tags will be added. Scripts relying on the `-py3` suffix will need to be updated. ### TCP-based Replication When setting up worker processes, we now recommend the use of a Redis server for replication. The old direct TCP connection method is deprecated and will be removed in a future release. See [docs/workers.md](https://github.com/matrix-org/synapse/blob/release-v1.18.0/docs/workers.md) for more details. Improved Documentation ---------------------- - Update worker docs with latest enhancements. ([\#7969](https://github.com/matrix-org/synapse/issues/7969)) Synapse 1.18.0rc2 (2020-07-28) ============================== Bugfixes -------- - Fix an `AssertionError` exception introduced in v1.18.0rc1. ([\#7876](https://github.com/matrix-org/synapse/issues/7876)) - Fix experimental support for moving typing off master when worker is restarted, which is broken in v1.18.0rc1. ([\#7967](https://github.com/matrix-org/synapse/issues/7967)) Internal Changes ---------------- - Further optimise queueing of inbound replication commands. ([\#7876](https://github.com/matrix-org/synapse/issues/7876)) Synapse 1.18.0rc1 (2020-07-27) ============================== Features -------- - Include room states on invite events that are sent to application services. Contributed by @Sorunome. ([\#6455](https://github.com/matrix-org/synapse/issues/6455)) - Add delete room admin endpoint (`POST /_synapse/admin/v1/rooms//delete`). Contributed by @dklimpel. ([\#7613](https://github.com/matrix-org/synapse/issues/7613), [\#7953](https://github.com/matrix-org/synapse/issues/7953)) - Add experimental support for running multiple federation sender processes. ([\#7798](https://github.com/matrix-org/synapse/issues/7798)) - Add the option to validate the `iss` and `aud` claims for JWT logins. ([\#7827](https://github.com/matrix-org/synapse/issues/7827)) - Add support for handling registration requests across multiple client reader workers. ([\#7830](https://github.com/matrix-org/synapse/issues/7830)) - Add an admin API to list the users in a room. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7842](https://github.com/matrix-org/synapse/issues/7842)) - Allow email subjects to be customised through Synapse's configuration. ([\#7846](https://github.com/matrix-org/synapse/issues/7846)) - Add the ability to re-activate an account from the admin API. ([\#7847](https://github.com/matrix-org/synapse/issues/7847), [\#7908](https://github.com/matrix-org/synapse/issues/7908)) - Add experimental support for running multiple pusher workers. ([\#7855](https://github.com/matrix-org/synapse/issues/7855)) - Add experimental support for moving typing off master. ([\#7869](https://github.com/matrix-org/synapse/issues/7869), [\#7959](https://github.com/matrix-org/synapse/issues/7959)) - Report CPU metrics to prometheus for time spent processing replication commands. ([\#7879](https://github.com/matrix-org/synapse/issues/7879)) - Support oEmbed for media previews. ([\#7920](https://github.com/matrix-org/synapse/issues/7920)) - Abort federation requests where the client disconnects before the ratelimiter expires. ([\#7930](https://github.com/matrix-org/synapse/issues/7930)) - Cache responses to `/_matrix/federation/v1/state_ids` to reduce duplicated work. ([\#7931](https://github.com/matrix-org/synapse/issues/7931)) Bugfixes -------- - Fix detection of out of sync remote device lists when receiving events from remote users. ([\#7815](https://github.com/matrix-org/synapse/issues/7815)) - Fix bug where Synapse fails to process an incoming event over federation if the server is missing too much of the event's auth chain. ([\#7817](https://github.com/matrix-org/synapse/issues/7817)) - Fix a bug causing Synapse to misinterpret the value `off` for `encryption_enabled_by_default_for_room_type` in its configuration file(s) if that value isn't surrounded by quotes. This bug was introduced in v1.16.0. ([\#7822](https://github.com/matrix-org/synapse/issues/7822)) - Fix bug where we did not always pass in `app_name` or `server_name` to email templates, including e.g. for registration emails. ([\#7829](https://github.com/matrix-org/synapse/issues/7829)) - Errors which occur while using the non-standard JWT login now return the proper error: `403 Forbidden` with an error code of `M_FORBIDDEN`. ([\#7844](https://github.com/matrix-org/synapse/issues/7844)) - Fix "AttributeError: 'str' object has no attribute 'get'" error message when applying per-room message retention policies. The bug was introduced in Synapse 1.7.0. ([\#7850](https://github.com/matrix-org/synapse/issues/7850)) - Fix a bug introduced in Synapse 1.10.0 which could cause a "no create event in auth events" error during room creation. ([\#7854](https://github.com/matrix-org/synapse/issues/7854)) - Fix a bug which allowed empty rooms to be rejoined over federation. ([\#7859](https://github.com/matrix-org/synapse/issues/7859)) - Fix 'Unable to find a suitable guest user ID' error when using multiple client_reader workers. ([\#7866](https://github.com/matrix-org/synapse/issues/7866)) - Fix a long standing bug where the tracing of async functions with opentracing was broken. ([\#7872](https://github.com/matrix-org/synapse/issues/7872), [\#7961](https://github.com/matrix-org/synapse/issues/7961)) - Fix "TypeError in `synapse.notifier`" exceptions. ([\#7880](https://github.com/matrix-org/synapse/issues/7880)) - Fix deprecation warning due to invalid escape sequences. ([\#7895](https://github.com/matrix-org/synapse/issues/7895)) Updates to the Docker image --------------------------- - Base docker image on Debian Buster rather than Alpine Linux. Contributed by @maquis196. ([\#7839](https://github.com/matrix-org/synapse/issues/7839)) Improved Documentation ---------------------- - Provide instructions on using `register_new_matrix_user` via docker. ([\#7885](https://github.com/matrix-org/synapse/issues/7885)) - Change the sample config postgres user section to use `synapse_user` instead of `synapse` to align with the documentation. ([\#7889](https://github.com/matrix-org/synapse/issues/7889)) - Reorder database paragraphs to promote postgres over sqlite. ([\#7933](https://github.com/matrix-org/synapse/issues/7933)) - Update the dates of ACME v1's end of life in [`ACME.md`](https://github.com/matrix-org/synapse/blob/master/docs/ACME.md). ([\#7934](https://github.com/matrix-org/synapse/issues/7934)) Deprecations and Removals ------------------------- - Remove unused `synapse_replication_tcp_resource_invalidate_cache` prometheus metric. ([\#7878](https://github.com/matrix-org/synapse/issues/7878)) - Remove Ubuntu Eoan from the list of `.deb` packages that we build as it is now end-of-life. Contributed by @gary-kim. ([\#7888](https://github.com/matrix-org/synapse/issues/7888)) Internal Changes ---------------- - Switch parts of the codebase from `simplejson` to the standard library `json`. ([\#7802](https://github.com/matrix-org/synapse/issues/7802)) - Add type hints to the http server code and remove an unused parameter. ([\#7813](https://github.com/matrix-org/synapse/issues/7813)) - Add type hints to synapse.api.errors module. ([\#7820](https://github.com/matrix-org/synapse/issues/7820)) - Ensure that calls to `json.dumps` are compatible with the standard library json. ([\#7836](https://github.com/matrix-org/synapse/issues/7836)) - Remove redundant `retry_on_integrity_error` wrapper for event persistence code. ([\#7848](https://github.com/matrix-org/synapse/issues/7848)) - Consistently use `db_to_json` to convert from database values to JSON objects. ([\#7849](https://github.com/matrix-org/synapse/issues/7849)) - Convert various parts of the codebase to async/await. ([\#7851](https://github.com/matrix-org/synapse/issues/7851), [\#7860](https://github.com/matrix-org/synapse/issues/7860), [\#7868](https://github.com/matrix-org/synapse/issues/7868), [\#7871](https://github.com/matrix-org/synapse/issues/7871), [\#7873](https://github.com/matrix-org/synapse/issues/7873), [\#7874](https://github.com/matrix-org/synapse/issues/7874), [\#7884](https://github.com/matrix-org/synapse/issues/7884), [\#7912](https://github.com/matrix-org/synapse/issues/7912), [\#7935](https://github.com/matrix-org/synapse/issues/7935), [\#7939](https://github.com/matrix-org/synapse/issues/7939), [\#7942](https://github.com/matrix-org/synapse/issues/7942), [\#7944](https://github.com/matrix-org/synapse/issues/7944)) - Add support for handling registration requests across multiple client reader workers. ([\#7853](https://github.com/matrix-org/synapse/issues/7853)) - Small performance improvement in typing processing. ([\#7856](https://github.com/matrix-org/synapse/issues/7856)) - The default value of `filter_timeline_limit` was changed from -1 (no limit) to 100. ([\#7858](https://github.com/matrix-org/synapse/issues/7858)) - Optimise queueing of inbound replication commands. ([\#7861](https://github.com/matrix-org/synapse/issues/7861)) - Add some type annotations to `HomeServer` and `BaseHandler`. ([\#7870](https://github.com/matrix-org/synapse/issues/7870)) - Clean up `PreserveLoggingContext`. ([\#7877](https://github.com/matrix-org/synapse/issues/7877)) - Change "unknown room version" logging from 'error' to 'warning'. ([\#7881](https://github.com/matrix-org/synapse/issues/7881)) - Stop using `device_max_stream_id` table and just use `device_inbox.stream_id`. ([\#7882](https://github.com/matrix-org/synapse/issues/7882)) - Return an empty body for OPTIONS requests. ([\#7886](https://github.com/matrix-org/synapse/issues/7886)) - Fix typo in generated config file. Contributed by @ThiefMaster. ([\#7890](https://github.com/matrix-org/synapse/issues/7890)) - Import ABC from `collections.abc` for Python 3.10 compatibility. ([\#7892](https://github.com/matrix-org/synapse/issues/7892)) - Remove unused functions `time_function`, `trace_function`, `get_previous_frames` and `get_previous_frame` from `synapse.logging.utils` module. ([\#7897](https://github.com/matrix-org/synapse/issues/7897)) - Lint the `contrib/` directory in CI and linting scripts, add `synctl` to the linting script for consistency with CI. ([\#7914](https://github.com/matrix-org/synapse/issues/7914)) - Use Element CSS and logo in notification emails when app name is Element. ([\#7919](https://github.com/matrix-org/synapse/issues/7919)) - Optimisation to /sync handling: skip serializing the response if the client has already disconnected. ([\#7927](https://github.com/matrix-org/synapse/issues/7927)) - When a client disconnects, don't log it as 'Error processing request'. ([\#7928](https://github.com/matrix-org/synapse/issues/7928)) - Add debugging to `/sync` response generation (disabled by default). ([\#7929](https://github.com/matrix-org/synapse/issues/7929)) - Update comments that refer to Deferreds for async functions. ([\#7945](https://github.com/matrix-org/synapse/issues/7945)) - Simplify error handling in federation handler. ([\#7950](https://github.com/matrix-org/synapse/issues/7950)) Synapse 1.17.0 (2020-07-13) =========================== Synapse 1.17.0 is identical to 1.17.0rc1, with the addition of the fix that was included in 1.16.1. Synapse 1.16.1 (2020-07-10) =========================== In some distributions of Synapse 1.16.0, we incorrectly included a database migration which added a new, unused table. This release removes the redundant table. Bugfixes -------- - Drop table `local_rejections_stream` which was incorrectly added in Synapse 1.16.0. ([\#7816](https://github.com/matrix-org/synapse/issues/7816), [b1beb3ff5](https://github.com/matrix-org/synapse/commit/b1beb3ff5)) Synapse 1.17.0rc1 (2020-07-09) ============================== Bugfixes -------- - Fix inconsistent handling of upper and lower case in email addresses when used as identifiers for login, etc. Contributed by @dklimpel. ([\#7021](https://github.com/matrix-org/synapse/issues/7021)) - Fix "Tried to close a non-active scope!" error messages when opentracing is enabled. ([\#7732](https://github.com/matrix-org/synapse/issues/7732)) - Fix incorrect error message when database CTYPE was set incorrectly. ([\#7760](https://github.com/matrix-org/synapse/issues/7760)) - Fix to not ignore `set_tweak` actions in Push Rules that have no `value`, as permitted by the specification. ([\#7766](https://github.com/matrix-org/synapse/issues/7766)) - Fix synctl to handle empty config files correctly. Contributed by @kotovalexarian. ([\#7779](https://github.com/matrix-org/synapse/issues/7779)) - Fixes a long standing bug in worker mode where worker information was saved in the devices table instead of the original IP address and user agent. ([\#7797](https://github.com/matrix-org/synapse/issues/7797)) - Fix 'stuck invites' which happen when we are unable to reject a room invite received over federation. ([\#7804](https://github.com/matrix-org/synapse/issues/7804), [\#7809](https://github.com/matrix-org/synapse/issues/7809), [\#7810](https://github.com/matrix-org/synapse/issues/7810)) Updates to the Docker image --------------------------- - Include libwebp in the Docker file to properly handle webp image uploads. ([\#7791](https://github.com/matrix-org/synapse/issues/7791)) Improved Documentation ---------------------- - Improve the documentation of the non-standard JSON web token login type. ([\#7776](https://github.com/matrix-org/synapse/issues/7776)) - Update doc links for caddy. Contributed by Nicolai Søborg. ([\#7789](https://github.com/matrix-org/synapse/issues/7789)) Internal Changes ---------------- - Refactor getting replication updates from database. ([\#7740](https://github.com/matrix-org/synapse/issues/7740)) - Send push notifications with a high or low priority depending upon whether they may generate user-observable effects. ([\#7765](https://github.com/matrix-org/synapse/issues/7765)) - Use symbolic names for replication stream names. ([\#7768](https://github.com/matrix-org/synapse/issues/7768)) - Add early returns to `_check_for_soft_fail`. ([\#7769](https://github.com/matrix-org/synapse/issues/7769)) - Fix up `synapse.handlers.federation` to pass mypy. ([\#7770](https://github.com/matrix-org/synapse/issues/7770)) - Convert the appserver handler to async/await. ([\#7775](https://github.com/matrix-org/synapse/issues/7775)) - Allow to use higher versions of prometheus_client <0.9.0 which are expected to introduce no breaking changes. Contributed by Oliver Kurz. ([\#7780](https://github.com/matrix-org/synapse/issues/7780)) - Update linting scripts and codebase to be compatible with `isort` v5. ([\#7786](https://github.com/matrix-org/synapse/issues/7786)) - Stop populating unused table `local_invites`. ([\#7793](https://github.com/matrix-org/synapse/issues/7793)) - Ensure that strings (not bytes) are passed into JSON serialization. ([\#7799](https://github.com/matrix-org/synapse/issues/7799)) - Switch from simplejson to the standard library json. ([\#7800](https://github.com/matrix-org/synapse/issues/7800)) - Add `signing_key` property to `HomeServer` to save code duplication. ([\#7805](https://github.com/matrix-org/synapse/issues/7805)) - Improve stacktraces from exceptions in background processes. ([\#7808](https://github.com/matrix-org/synapse/issues/7808)) - Fix various spelling errors in comments and log lines. ([\#7811](https://github.com/matrix-org/synapse/issues/7811)) Synapse 1.16.0 (2020-07-08) =========================== No significant changes since 1.16.0rc2. Note that this release deprecates the `m.login.jwt` login method, renaming it to `org.matrix.login.jwt`, as `m.login.jwt` is not part of the Matrix spec. Otherwise the behaviour is identical. Synapse will accept both names for now, but this may change in a future release. Synapse 1.16.0rc2 (2020-07-02) ============================== Synapse 1.16.0rc2 includes the security fixes released with Synapse 1.15.2. Please see [below](#synapse-1152-2020-07-02) for more details. Improved Documentation ---------------------- - Update postgres image in example `docker-compose.yaml` to tag `12-alpine`. ([\#7696](https://github.com/matrix-org/synapse/issues/7696)) Internal Changes ---------------- - Add some metrics for inbound and outbound federation latencies: `synapse_federation_server_pdu_process_time` and `synapse_event_processing_lag_by_event`. ([\#7771](https://github.com/matrix-org/synapse/issues/7771)) Synapse 1.15.2 (2020-07-02) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- * A malicious homeserver could force Synapse to reset the state in a room to a small subset of the correct state. This affects all Synapse deployments which federate with untrusted servers. ([96e9afe6](https://github.com/matrix-org/synapse/commit/96e9afe62500310977dc3cbc99a8d16d3d2fa15c)) * HTML pages served via Synapse were vulnerable to clickjacking attacks. This predominantly affects homeservers with single-sign-on enabled, but all server administrators are encouraged to upgrade. ([ea26e9a9](https://github.com/matrix-org/synapse/commit/ea26e9a98b0541fc886a1cb826a38352b7599dbe)) This was reported by [Quentin Gliech](https://sandhose.fr/). Synapse 1.16.0rc1 (2020-07-01) ============================== Features -------- - Add an option to enable encryption by default for new rooms. ([\#7639](https://github.com/matrix-org/synapse/issues/7639)) - Add support for running multiple media repository workers. See [docs/workers.md](https://github.com/matrix-org/synapse/blob/release-v1.16.0/docs/workers.md) for instructions. ([\#7706](https://github.com/matrix-org/synapse/issues/7706)) - Media can now be marked as safe from quarantined. ([\#7718](https://github.com/matrix-org/synapse/issues/7718)) - Expand the configuration options for auto-join rooms. ([\#7763](https://github.com/matrix-org/synapse/issues/7763)) Bugfixes -------- - Remove `user_id` from the response to `GET /_matrix/client/r0/presence/{userId}/status` to match the specification. ([\#7606](https://github.com/matrix-org/synapse/issues/7606)) - In worker mode, ensure that replicated data has not already been received. ([\#7648](https://github.com/matrix-org/synapse/issues/7648)) - Fix intermittent exception during startup, introduced in Synapse 1.14.0. ([\#7663](https://github.com/matrix-org/synapse/issues/7663)) - Include a user-agent for federation and well-known requests. ([\#7677](https://github.com/matrix-org/synapse/issues/7677)) - Accept the proper field (`phone`) for the `m.id.phone` identifier type. The legacy field of `number` is still accepted as a fallback. Bug introduced in v0.20.0. ([\#7687](https://github.com/matrix-org/synapse/issues/7687)) - Fix "Starting db txn 'get_completed_ui_auth_stages' from sentinel context" warning. The bug was introduced in 1.13.0. ([\#7688](https://github.com/matrix-org/synapse/issues/7688)) - Compare the URI and method during user interactive authentication (instead of the URI twice). Bug introduced in 1.13.0. ([\#7689](https://github.com/matrix-org/synapse/issues/7689)) - Fix a long standing bug where the response to the `GET room_keys/version` endpoint had the incorrect type for the `etag` field. ([\#7691](https://github.com/matrix-org/synapse/issues/7691)) - Fix logged error during device resync in opentracing. Broke in v1.14.0. ([\#7698](https://github.com/matrix-org/synapse/issues/7698)) - Do not break push rule evaluation when receiving an event with a non-string body. This is a long-standing bug. ([\#7701](https://github.com/matrix-org/synapse/issues/7701)) - Fixs a long standing bug which resulted in an exception: "TypeError: argument of type 'ObservableDeferred' is not iterable". ([\#7708](https://github.com/matrix-org/synapse/issues/7708)) - The `synapse_port_db` script no longer fails when the `ui_auth_sessions` table is non-empty. This bug has existed since v1.13.0. ([\#7711](https://github.com/matrix-org/synapse/issues/7711)) - Synapse will now fetch media from the proper specified URL (using the r0 prefix instead of the unspecified v1). ([\#7714](https://github.com/matrix-org/synapse/issues/7714)) - Fix the tables ignored by `synapse_port_db` to be in sync the current database schema. ([\#7717](https://github.com/matrix-org/synapse/issues/7717)) - Fix missing `Content-Length` on HTTP responses from the metrics handler. ([\#7730](https://github.com/matrix-org/synapse/issues/7730)) - Fix large state resolutions from stalling Synapse for seconds at a time. ([\#7735](https://github.com/matrix-org/synapse/issues/7735), [\#7746](https://github.com/matrix-org/synapse/issues/7746)) Improved Documentation ---------------------- - Spelling correction in sample_config.yaml. ([\#7652](https://github.com/matrix-org/synapse/issues/7652)) - Added instructions for how to use Keycloak via OpenID Connect to authenticate with Synapse. ([\#7659](https://github.com/matrix-org/synapse/issues/7659)) - Corrected misspelling of PostgreSQL. ([\#7724](https://github.com/matrix-org/synapse/issues/7724)) Deprecations and Removals ------------------------- - Deprecate `m.login.jwt` login method in favour of `org.matrix.login.jwt`, as `m.login.jwt` is not part of the Matrix spec. ([\#7675](https://github.com/matrix-org/synapse/issues/7675)) Internal Changes ---------------- - Refactor getting replication updates from database. ([\#7636](https://github.com/matrix-org/synapse/issues/7636)) - Clean-up the login fallback code. ([\#7657](https://github.com/matrix-org/synapse/issues/7657)) - Increase the default SAML session expiry time to 15 minutes. ([\#7664](https://github.com/matrix-org/synapse/issues/7664)) - Convert the device message and pagination handlers to async/await. ([\#7678](https://github.com/matrix-org/synapse/issues/7678)) - Convert typing handler to async/await. ([\#7679](https://github.com/matrix-org/synapse/issues/7679)) - Require `parameterized` package version to be at least 0.7.0. ([\#7680](https://github.com/matrix-org/synapse/issues/7680)) - Refactor handling of `listeners` configuration settings. ([\#7681](https://github.com/matrix-org/synapse/issues/7681)) - Replace uses of `six.iterkeys`/`iteritems`/`itervalues` with `keys()`/`items()`/`values()`. ([\#7692](https://github.com/matrix-org/synapse/issues/7692)) - Add support for using `rust-python-jaeger-reporter` library to reduce jaeger tracing overhead. ([\#7697](https://github.com/matrix-org/synapse/issues/7697)) - Make Tox actions work on Debian 10. ([\#7703](https://github.com/matrix-org/synapse/issues/7703)) - Replace all remaining uses of `six` with native Python 3 equivalents. Contributed by @ilmari. ([\#7704](https://github.com/matrix-org/synapse/issues/7704)) - Fix broken link in sample config. ([\#7712](https://github.com/matrix-org/synapse/issues/7712)) - Speed up state res v2 across large state differences. ([\#7725](https://github.com/matrix-org/synapse/issues/7725)) - Convert directory handler to async/await. ([\#7727](https://github.com/matrix-org/synapse/issues/7727)) - Move `flake8` to the end of `scripts-dev/lint.sh` as it takes the longest and could cause the script to exit early. ([\#7738](https://github.com/matrix-org/synapse/issues/7738)) - Explain the "test" conditional requirement for dependencies is not all of the modules necessary to run the unit tests. ([\#7751](https://github.com/matrix-org/synapse/issues/7751)) - Add some metrics for inbound and outbound federation latencies: `synapse_federation_server_pdu_process_time` and `synapse_event_processing_lag_by_event`. ([\#7755](https://github.com/matrix-org/synapse/issues/7755)) Synapse 1.15.1 (2020-06-16) =========================== Bugfixes -------- - Fix a bug introduced in v1.15.0 that would crash Synapse on start when using certain password auth providers. ([\#7684](https://github.com/matrix-org/synapse/issues/7684)) - Fix a bug introduced in v1.15.0 which meant that some 3PID management endpoints were not accessible on the correct URL. ([\#7685](https://github.com/matrix-org/synapse/issues/7685)) Synapse 1.15.0 (2020-06-11) =========================== No significant changes. Synapse 1.15.0rc1 (2020-06-09) ============================== Features -------- - Advertise support for Client-Server API r0.6.0 and remove related unstable feature flags. ([\#6585](https://github.com/matrix-org/synapse/issues/6585)) - Add an option to disable autojoining rooms for guest accounts. ([\#6637](https://github.com/matrix-org/synapse/issues/6637)) - For SAML authentication, add the ability to pass email addresses to be added to new users' accounts via SAML attributes. Contributed by Christopher Cooper. ([\#7385](https://github.com/matrix-org/synapse/issues/7385)) - Add admin APIs to allow server admins to manage users' devices. Contributed by @dklimpel. ([\#7481](https://github.com/matrix-org/synapse/issues/7481)) - Add support for generating thumbnails for WebP images. Previously, users would see an empty box instead of preview image. Contributed by @WGH-. ([\#7586](https://github.com/matrix-org/synapse/issues/7586)) - Support the standardized `m.login.sso` user-interactive authentication flow. ([\#7630](https://github.com/matrix-org/synapse/issues/7630)) Bugfixes -------- - Allow new users to be registered via the admin API even if the monthly active user limit has been reached. Contributed by @dklimpel. ([\#7263](https://github.com/matrix-org/synapse/issues/7263)) - Fix email notifications not being enabled for new users when created via the Admin API. ([\#7267](https://github.com/matrix-org/synapse/issues/7267)) - Fix str placeholders in an instance of `PrepareDatabaseException`. Introduced in Synapse v1.8.0. ([\#7575](https://github.com/matrix-org/synapse/issues/7575)) - Fix a bug in automatic user creation during first time login with `m.login.jwt`. Regression in v1.6.0. Contributed by @olof. ([\#7585](https://github.com/matrix-org/synapse/issues/7585)) - Fix a bug causing the cross-signing keys to be ignored when resyncing a device list. ([\#7594](https://github.com/matrix-org/synapse/issues/7594)) - Fix metrics failing when there is a large number of active background processes. ([\#7597](https://github.com/matrix-org/synapse/issues/7597)) - Fix bug where returning rooms for a group would fail if it included a room that the server was not in. ([\#7599](https://github.com/matrix-org/synapse/issues/7599)) - Fix duplicate key violation when persisting read markers. ([\#7607](https://github.com/matrix-org/synapse/issues/7607)) - Prevent an entire iteration of the device list resync loop from failing if one server responds with a malformed result. ([\#7609](https://github.com/matrix-org/synapse/issues/7609)) - Fix exceptions when fetching events from a remote host fails. ([\#7622](https://github.com/matrix-org/synapse/issues/7622)) - Make `synctl restart` start synapse if it wasn't running. ([\#7624](https://github.com/matrix-org/synapse/issues/7624)) - Pass device information through to the login endpoint when using the login fallback. ([\#7629](https://github.com/matrix-org/synapse/issues/7629)) - Advertise the `m.login.token` login flow when OpenID Connect is enabled. ([\#7631](https://github.com/matrix-org/synapse/issues/7631)) - Fix bug in account data replication stream. ([\#7656](https://github.com/matrix-org/synapse/issues/7656)) Improved Documentation ---------------------- - Update the OpenBSD installation instructions. ([\#7587](https://github.com/matrix-org/synapse/issues/7587)) - Advertise Python 3.8 support in `setup.py`. ([\#7602](https://github.com/matrix-org/synapse/issues/7602)) - Add a link to `#synapse:matrix.org` in the troubleshooting section of the README. ([\#7603](https://github.com/matrix-org/synapse/issues/7603)) - Clarifications to the admin api documentation. ([\#7647](https://github.com/matrix-org/synapse/issues/7647)) Internal Changes ---------------- - Convert the identity handler to async/await. ([\#7561](https://github.com/matrix-org/synapse/issues/7561)) - Improve query performance for fetching state from a PostgreSQL database. Contributed by @ilmari. ([\#7567](https://github.com/matrix-org/synapse/issues/7567)) - Speed up processing of federation stream RDATA rows. ([\#7584](https://github.com/matrix-org/synapse/issues/7584)) - Add comment to systemd example to show postgresql dependency. ([\#7591](https://github.com/matrix-org/synapse/issues/7591)) - Refactor `Ratelimiter` to limit the amount of expensive config value accesses. ([\#7595](https://github.com/matrix-org/synapse/issues/7595)) - Convert groups handlers to async/await. ([\#7600](https://github.com/matrix-org/synapse/issues/7600)) - Clean up exception handling in `SAML2ResponseResource`. ([\#7614](https://github.com/matrix-org/synapse/issues/7614)) - Check that all asynchronous tasks succeed and general cleanup of `MonthlyActiveUsersTestCase` and `TestMauLimit`. ([\#7619](https://github.com/matrix-org/synapse/issues/7619)) - Convert `get_user_id_by_threepid` to async/await. ([\#7620](https://github.com/matrix-org/synapse/issues/7620)) - Switch to upstream `dh-virtualenv` rather than our fork for Debian package builds. ([\#7621](https://github.com/matrix-org/synapse/issues/7621)) - Update CI scripts to check the number in the newsfile fragment. ([\#7623](https://github.com/matrix-org/synapse/issues/7623)) - Check if the localpart of a Matrix ID is reserved for guest users earlier in the registration flow, as well as when responding to requests to `/register/available`. ([\#7625](https://github.com/matrix-org/synapse/issues/7625)) - Minor cleanups to OpenID Connect integration. ([\#7628](https://github.com/matrix-org/synapse/issues/7628)) - Attempt to fix flaky test: `PhoneHomeStatsTestCase.test_performance_100`. ([\#7634](https://github.com/matrix-org/synapse/issues/7634)) - Fix typos of `m.olm.curve25519-aes-sha2` and `m.megolm.v1.aes-sha2` in comments, test files. ([\#7637](https://github.com/matrix-org/synapse/issues/7637)) - Convert user directory, state deltas, and stats handlers to async/await. ([\#7640](https://github.com/matrix-org/synapse/issues/7640)) - Remove some unused constants. ([\#7644](https://github.com/matrix-org/synapse/issues/7644)) - Fix type information on `assert_*_is_admin` methods. ([\#7645](https://github.com/matrix-org/synapse/issues/7645)) - Convert registration handler to async/await. ([\#7649](https://github.com/matrix-org/synapse/issues/7649)) Synapse 1.14.0 (2020-05-28) =========================== No significant changes. Synapse 1.14.0rc2 (2020-05-27) ============================== Bugfixes -------- - Fix cache config to not apply cache factor to event cache. Regression in v1.14.0rc1. ([\#7578](https://github.com/matrix-org/synapse/issues/7578)) - Fix bug where `ReplicationStreamer` was not always started when replication was enabled. Bug introduced in v1.14.0rc1. ([\#7579](https://github.com/matrix-org/synapse/issues/7579)) - Fix specifying individual cache factors for caches with special characters in their name. Regression in v1.14.0rc1. ([\#7580](https://github.com/matrix-org/synapse/issues/7580)) Improved Documentation ---------------------- - Fix the OIDC `client_auth_method` value in the sample config. ([\#7581](https://github.com/matrix-org/synapse/issues/7581)) Synapse 1.14.0rc1 (2020-05-26) ============================== Features -------- - Synapse's cache factor can now be configured in `homeserver.yaml` by the `caches.global_factor` setting. Additionally, `caches.per_cache_factors` controls the cache factors for individual caches. ([\#6391](https://github.com/matrix-org/synapse/issues/6391)) - Add OpenID Connect login/registration support. Contributed by Quentin Gliech, on behalf of [les Connecteurs](https://connecteu.rs). ([\#7256](https://github.com/matrix-org/synapse/issues/7256), [\#7457](https://github.com/matrix-org/synapse/issues/7457)) - Add room details admin endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#7317](https://github.com/matrix-org/synapse/issues/7317)) - Allow for using more than one spam checker module at once. ([\#7435](https://github.com/matrix-org/synapse/issues/7435)) - Add additional authentication checks for `m.room.power_levels` event per [MSC2209](https://github.com/matrix-org/matrix-doc/pull/2209). ([\#7502](https://github.com/matrix-org/synapse/issues/7502)) - Implement room version 6 per [MSC2240](https://github.com/matrix-org/matrix-doc/pull/2240). ([\#7506](https://github.com/matrix-org/synapse/issues/7506)) - Add highly experimental option to move event persistence off master. ([\#7281](https://github.com/matrix-org/synapse/issues/7281), [\#7374](https://github.com/matrix-org/synapse/issues/7374), [\#7436](https://github.com/matrix-org/synapse/issues/7436), [\#7440](https://github.com/matrix-org/synapse/issues/7440), [\#7475](https://github.com/matrix-org/synapse/issues/7475), [\#7490](https://github.com/matrix-org/synapse/issues/7490), [\#7491](https://github.com/matrix-org/synapse/issues/7491), [\#7492](https://github.com/matrix-org/synapse/issues/7492), [\#7493](https://github.com/matrix-org/synapse/issues/7493), [\#7495](https://github.com/matrix-org/synapse/issues/7495), [\#7515](https://github.com/matrix-org/synapse/issues/7515), [\#7516](https://github.com/matrix-org/synapse/issues/7516), [\#7517](https://github.com/matrix-org/synapse/issues/7517), [\#7542](https://github.com/matrix-org/synapse/issues/7542)) Bugfixes -------- - Fix a bug where event updates might not be sent over replication to worker processes after the stream falls behind. ([\#7384](https://github.com/matrix-org/synapse/issues/7384)) - Allow expired user accounts to log out their device sessions. ([\#7443](https://github.com/matrix-org/synapse/issues/7443)) - Fix a bug that would cause Synapse not to resync out-of-sync device lists. ([\#7453](https://github.com/matrix-org/synapse/issues/7453)) - Prevent rooms with 0 members or with invalid version strings from breaking group queries. ([\#7465](https://github.com/matrix-org/synapse/issues/7465)) - Workaround for an upstream Twisted bug that caused Synapse to become unresponsive after startup. ([\#7473](https://github.com/matrix-org/synapse/issues/7473)) - Fix Redis reconnection logic that can result in missed updates over replication if master reconnects to Redis without restarting. ([\#7482](https://github.com/matrix-org/synapse/issues/7482)) - When sending `m.room.member` events, omit `displayname` and `avatar_url` if they aren't set instead of setting them to `null`. Contributed by Aaron Raimist. ([\#7497](https://github.com/matrix-org/synapse/issues/7497)) - Fix incorrect `method` label on `synapse_http_matrixfederationclient_{requests,responses}` prometheus metrics. ([\#7503](https://github.com/matrix-org/synapse/issues/7503)) - Ignore incoming presence events from other homeservers if presence is disabled locally. ([\#7508](https://github.com/matrix-org/synapse/issues/7508)) - Fix a long-standing bug that broke the update remote profile background process. ([\#7511](https://github.com/matrix-org/synapse/issues/7511)) - Hash passwords as early as possible during password reset. ([\#7538](https://github.com/matrix-org/synapse/issues/7538)) - Fix bug where a local user leaving a room could fail under rare circumstances. ([\#7548](https://github.com/matrix-org/synapse/issues/7548)) - Fix "Missing RelayState parameter" error when using user interactive authentication with SAML for some SAML providers. ([\#7552](https://github.com/matrix-org/synapse/issues/7552)) - Fix exception `'GenericWorkerReplicationHandler' object has no attribute 'send_federation_ack'`, introduced in v1.13.0. ([\#7564](https://github.com/matrix-org/synapse/issues/7564)) - `synctl` now warns if it was unable to stop Synapse and will not attempt to start Synapse if nothing was stopped. Contributed by Romain Bouyé. ([\#6598](https://github.com/matrix-org/synapse/issues/6598)) Updates to the Docker image --------------------------- - Update docker runtime image to Alpine v3.11. Contributed by @Starbix. ([\#7398](https://github.com/matrix-org/synapse/issues/7398)) Improved Documentation ---------------------- - Update information about mapping providers for SAML and OpenID. ([\#7458](https://github.com/matrix-org/synapse/issues/7458)) - Add additional reverse proxy example for Caddy v2. Contributed by Jeff Peeler. ([\#7463](https://github.com/matrix-org/synapse/issues/7463)) - Fix copy-paste error in `ServerNoticesConfig` docstring. Contributed by @ptman. ([\#7477](https://github.com/matrix-org/synapse/issues/7477)) - Improve the formatting of `reverse_proxy.md`. ([\#7514](https://github.com/matrix-org/synapse/issues/7514)) - Change the systemd worker service to check that the worker config file exists instead of silently failing. Contributed by David Vo. ([\#7528](https://github.com/matrix-org/synapse/issues/7528)) - Minor clarifications to the TURN docs. ([\#7533](https://github.com/matrix-org/synapse/issues/7533)) Internal Changes ---------------- - Add typing annotations in `synapse.federation`. ([\#7382](https://github.com/matrix-org/synapse/issues/7382)) - Convert the room handler to async/await. ([\#7396](https://github.com/matrix-org/synapse/issues/7396)) - Improve performance of `get_e2e_cross_signing_key`. ([\#7428](https://github.com/matrix-org/synapse/issues/7428)) - Improve performance of `mark_as_sent_devices_by_remote`. ([\#7429](https://github.com/matrix-org/synapse/issues/7429), [\#7562](https://github.com/matrix-org/synapse/issues/7562)) - Add type hints to the SAML handler. ([\#7445](https://github.com/matrix-org/synapse/issues/7445)) - Remove storage method `get_hosts_in_room` that is no longer called anywhere. ([\#7448](https://github.com/matrix-org/synapse/issues/7448)) - Fix some typos in the `notice_expiry` templates. ([\#7449](https://github.com/matrix-org/synapse/issues/7449)) - Convert the federation handler to async/await. ([\#7459](https://github.com/matrix-org/synapse/issues/7459)) - Convert the search handler to async/await. ([\#7460](https://github.com/matrix-org/synapse/issues/7460)) - Add type hints to `synapse.event_auth`. ([\#7505](https://github.com/matrix-org/synapse/issues/7505)) - Convert the room member handler to async/await. ([\#7507](https://github.com/matrix-org/synapse/issues/7507)) - Add type hints to room member handler. ([\#7513](https://github.com/matrix-org/synapse/issues/7513)) - Fix typing annotations in `tests.replication`. ([\#7518](https://github.com/matrix-org/synapse/issues/7518)) - Remove some redundant Python 2 support code. ([\#7519](https://github.com/matrix-org/synapse/issues/7519)) - All endpoints now respond with a 200 OK for `OPTIONS` requests. ([\#7534](https://github.com/matrix-org/synapse/issues/7534), [\#7560](https://github.com/matrix-org/synapse/issues/7560)) - Synapse now exports [detailed allocator statistics](https://doc.pypy.org/en/latest/gc_info.html#gc-get-stats) and basic GC timings as Prometheus metrics (`pypy_gc_time_seconds_total` and `pypy_memory_bytes`) when run under PyPy. Contributed by Ivan Shapovalov. ([\#7536](https://github.com/matrix-org/synapse/issues/7536)) - Remove Ubuntu Cosmic and Disco from the list of distributions which we provide `.deb`s for, due to end-of-life. ([\#7539](https://github.com/matrix-org/synapse/issues/7539)) - Make worker processes return a stubbed-out response to `GET /presence` requests. ([\#7545](https://github.com/matrix-org/synapse/issues/7545)) - Optimise some references to `hs.config`. ([\#7546](https://github.com/matrix-org/synapse/issues/7546)) - On upgrade room only send canonical alias once. ([\#7547](https://github.com/matrix-org/synapse/issues/7547)) - Fix some indentation inconsistencies in the sample config. ([\#7550](https://github.com/matrix-org/synapse/issues/7550)) - Include `synapse.http.site` in type checking. ([\#7553](https://github.com/matrix-org/synapse/issues/7553)) - Fix some test code to not mangle stacktraces, to make it easier to debug errors. ([\#7554](https://github.com/matrix-org/synapse/issues/7554)) - Refresh apt cache when building `dh_virtualenv` docker image. ([\#7555](https://github.com/matrix-org/synapse/issues/7555)) - Stop logging some expected HTTP request errors as exceptions. ([\#7556](https://github.com/matrix-org/synapse/issues/7556), [\#7563](https://github.com/matrix-org/synapse/issues/7563)) - Convert sending mail to async/await. ([\#7557](https://github.com/matrix-org/synapse/issues/7557)) - Simplify `reap_monthly_active_users`. ([\#7558](https://github.com/matrix-org/synapse/issues/7558)) Synapse 1.13.0 (2020-05-19) =========================== This release brings some potential changes necessary for certain configurations of Synapse: * If your Synapse is configured to use SSO and have a custom `sso_redirect_confirm_template_dir` configuration option set, you will need to duplicate the new `sso_auth_confirm.html`, `sso_auth_success.html` and `sso_account_deactivated.html` templates into that directory. * Synapse plugins using the `complete_sso_login` method of `synapse.module_api.ModuleApi` should instead switch to the async/await version, `complete_sso_login_async`, which includes additional checks. The former version is now deprecated. * A bug was introduced in Synapse 1.4.0 which could cause the room directory to be incomplete or empty if Synapse was upgraded directly from v1.2.1 or earlier, to versions between v1.4.0 and v1.12.x. Please review the [upgrade notes](docs/upgrade.md) for more details on these changes and for general upgrade guidance. Notice of change to the default `git` branch for Synapse -------------------------------------------------------- With the release of Synapse 1.13.0, the default `git` branch for Synapse has changed to `develop`, which is the development tip. This is more consistent with common practice and modern `git` usage. The `master` branch, which tracks the latest release, is still available. It is recommended that developers and distributors who have scripts which run builds using the default branch of Synapse should therefore consider pinning their scripts to `master`. Internal Changes ---------------- - Update the version of dh-virtualenv we use to build debs, and add focal to the list of target distributions. ([\#7526](https://github.com/matrix-org/synapse/issues/7526)) Synapse 1.13.0rc3 (2020-05-18) ============================== Bugfixes -------- - Hash passwords as early as possible during registration. ([\#7523](https://github.com/matrix-org/synapse/issues/7523)) Synapse 1.13.0rc2 (2020-05-14) ============================== Bugfixes -------- - Fix a long-standing bug which could cause messages not to be sent over federation, when state events with state keys matching user IDs (such as custom user statuses) were received. ([\#7376](https://github.com/matrix-org/synapse/issues/7376)) - Restore compatibility with non-compliant clients during the user interactive authentication process, fixing a problem introduced in v1.13.0rc1. ([\#7483](https://github.com/matrix-org/synapse/issues/7483)) Internal Changes ---------------- - Fix linting errors in new version of Flake8. ([\#7470](https://github.com/matrix-org/synapse/issues/7470)) Synapse 1.13.0rc1 (2020-05-11) ============================== Features -------- - Extend the `web_client_location` option to accept an absolute URL to use as a redirect. Adds a warning when running the web client on the same hostname as homeserver. Contributed by Martin Milata. ([\#7006](https://github.com/matrix-org/synapse/issues/7006)) - Set `Referrer-Policy` header to `no-referrer` on media downloads. ([\#7009](https://github.com/matrix-org/synapse/issues/7009)) - Add support for running replication over Redis when using workers. ([\#7040](https://github.com/matrix-org/synapse/issues/7040), [\#7325](https://github.com/matrix-org/synapse/issues/7325), [\#7352](https://github.com/matrix-org/synapse/issues/7352), [\#7401](https://github.com/matrix-org/synapse/issues/7401), [\#7427](https://github.com/matrix-org/synapse/issues/7427), [\#7439](https://github.com/matrix-org/synapse/issues/7439), [\#7446](https://github.com/matrix-org/synapse/issues/7446), [\#7450](https://github.com/matrix-org/synapse/issues/7450), [\#7454](https://github.com/matrix-org/synapse/issues/7454)) - Admin API `POST /_synapse/admin/v1/join/` to join users to a room like `auto_join_rooms` for creation of users. ([\#7051](https://github.com/matrix-org/synapse/issues/7051)) - Add options to prevent users from changing their profile or associated 3PIDs. ([\#7096](https://github.com/matrix-org/synapse/issues/7096)) - Support SSO in the user interactive authentication workflow. ([\#7102](https://github.com/matrix-org/synapse/issues/7102), [\#7186](https://github.com/matrix-org/synapse/issues/7186), [\#7279](https://github.com/matrix-org/synapse/issues/7279), [\#7343](https://github.com/matrix-org/synapse/issues/7343)) - Allow server admins to define and enforce a password policy ([MSC2000](https://github.com/matrix-org/matrix-doc/issues/2000)). ([\#7118](https://github.com/matrix-org/synapse/issues/7118)) - Improve the support for SSO authentication on the login fallback page. ([\#7152](https://github.com/matrix-org/synapse/issues/7152), [\#7235](https://github.com/matrix-org/synapse/issues/7235)) - Always whitelist the login fallback in the SSO configuration if `public_baseurl` is set. ([\#7153](https://github.com/matrix-org/synapse/issues/7153)) - Admin users are no longer required to be in a room to create an alias for it. ([\#7191](https://github.com/matrix-org/synapse/issues/7191)) - Require admin privileges to enable room encryption by default. This does not affect existing rooms. ([\#7230](https://github.com/matrix-org/synapse/issues/7230)) - Add a config option for specifying the value of the Accept-Language HTTP header when generating URL previews. ([\#7265](https://github.com/matrix-org/synapse/issues/7265)) - Allow `/requestToken` endpoints to hide the existence (or lack thereof) of 3PID associations on the homeserver. ([\#7315](https://github.com/matrix-org/synapse/issues/7315)) - Add a configuration setting to tweak the threshold for dummy events. ([\#7422](https://github.com/matrix-org/synapse/issues/7422)) Bugfixes -------- - Don't attempt to use an invalid sqlite config if no database configuration is provided. Contributed by @nekatak. ([\#6573](https://github.com/matrix-org/synapse/issues/6573)) - Fix single-sign on with CAS systems: pass the same service URL when requesting the CAS ticket and when calling the `proxyValidate` URL. Contributed by @Naugrimm. ([\#6634](https://github.com/matrix-org/synapse/issues/6634)) - Fix missing field `default` when fetching user-defined push rules. ([\#6639](https://github.com/matrix-org/synapse/issues/6639)) - Improve error responses when accessing remote public room lists. ([\#6899](https://github.com/matrix-org/synapse/issues/6899), [\#7368](https://github.com/matrix-org/synapse/issues/7368)) - Transfer alias mappings on room upgrade. ([\#6946](https://github.com/matrix-org/synapse/issues/6946)) - Ensure that a user interactive authentication session is tied to a single request. ([\#7068](https://github.com/matrix-org/synapse/issues/7068), [\#7455](https://github.com/matrix-org/synapse/issues/7455)) - Fix a bug in the federation API which could cause occasional "Failed to get PDU" errors. ([\#7089](https://github.com/matrix-org/synapse/issues/7089)) - Return the proper error (`M_BAD_ALIAS`) when a non-existent canonical alias is provided. ([\#7109](https://github.com/matrix-org/synapse/issues/7109)) - Fix a bug which meant that groups updates were not correctly replicated between workers. ([\#7117](https://github.com/matrix-org/synapse/issues/7117)) - Fix starting workers when federation sending not split out. ([\#7133](https://github.com/matrix-org/synapse/issues/7133)) - Ensure `is_verified` is a boolean in responses to `GET /_matrix/client/r0/room_keys/keys`. Also warn the user if they forgot the `version` query param. ([\#7150](https://github.com/matrix-org/synapse/issues/7150)) - Fix error page being shown when a custom SAML handler attempted to redirect when processing an auth response. ([\#7151](https://github.com/matrix-org/synapse/issues/7151)) - Avoid importing `sqlite3` when using the postgres backend. Contributed by David Vo. ([\#7155](https://github.com/matrix-org/synapse/issues/7155)) - Fix excessive CPU usage by `prune_old_outbound_device_pokes` job. ([\#7159](https://github.com/matrix-org/synapse/issues/7159)) - Fix a bug which could cause outbound federation traffic to stop working if a client uploaded an incorrect e2e device signature. ([\#7177](https://github.com/matrix-org/synapse/issues/7177)) - Fix a bug which could cause incorrect 'cyclic dependency' error. ([\#7178](https://github.com/matrix-org/synapse/issues/7178)) - Fix a bug that could cause a user to be invited to a server notices (aka System Alerts) room without any notice being sent. ([\#7199](https://github.com/matrix-org/synapse/issues/7199)) - Fix some worker-mode replication handling not being correctly recorded in CPU usage stats. ([\#7203](https://github.com/matrix-org/synapse/issues/7203)) - Do not allow a deactivated user to login via SSO. ([\#7240](https://github.com/matrix-org/synapse/issues/7240), [\#7259](https://github.com/matrix-org/synapse/issues/7259)) - Fix --help command-line argument. ([\#7249](https://github.com/matrix-org/synapse/issues/7249)) - Fix room publish permissions not being checked on room creation. ([\#7260](https://github.com/matrix-org/synapse/issues/7260)) - Reject unknown session IDs during user interactive authentication instead of silently creating a new session. ([\#7268](https://github.com/matrix-org/synapse/issues/7268)) - Fix a SQL query introduced in Synapse 1.12.0 which could cause large amounts of logging to the postgres slow-query log. ([\#7274](https://github.com/matrix-org/synapse/issues/7274)) - Persist user interactive authentication sessions across workers and Synapse restarts. ([\#7302](https://github.com/matrix-org/synapse/issues/7302)) - Fixed backwards compatibility logic of the first value of `trusted_third_party_id_servers` being used for `account_threepid_delegates.email`, which occurs when the former, deprecated option is set and the latter is not. ([\#7316](https://github.com/matrix-org/synapse/issues/7316)) - Fix a bug where event updates might not be sent over replication to worker processes after the stream falls behind. ([\#7337](https://github.com/matrix-org/synapse/issues/7337), [\#7358](https://github.com/matrix-org/synapse/issues/7358)) - Fix bad error handling that would cause Synapse to crash if it's provided with a YAML configuration file that's either empty or doesn't parse into a key-value map. ([\#7341](https://github.com/matrix-org/synapse/issues/7341)) - Fix incorrect metrics reporting for `renew_attestations` background task. ([\#7344](https://github.com/matrix-org/synapse/issues/7344)) - Prevent non-federating rooms from appearing in responses to federated `POST /publicRoom` requests when a filter was included. ([\#7367](https://github.com/matrix-org/synapse/issues/7367)) - Fix a bug which would cause the room directory to be incorrectly populated if Synapse was upgraded directly from v1.2.1 or earlier to v1.4.0 or later. Note that this fix does not apply retrospectively; see the [upgrade notes](docs/upgrade.md#upgrading-to-v1130) for more information. ([\#7387](https://github.com/matrix-org/synapse/issues/7387)) - Fix bug in `EventContext.deserialize`. ([\#7393](https://github.com/matrix-org/synapse/issues/7393)) Improved Documentation ---------------------- - Update Debian installation instructions to recommend installing the `virtualenv` package instead of `python3-virtualenv`. ([\#6892](https://github.com/matrix-org/synapse/issues/6892)) - Improve the documentation for database configuration. ([\#6988](https://github.com/matrix-org/synapse/issues/6988)) - Improve the documentation of application service configuration files. ([\#7091](https://github.com/matrix-org/synapse/issues/7091)) - Update pre-built package name for FreeBSD. ([\#7107](https://github.com/matrix-org/synapse/issues/7107)) - Update postgres docs with login troubleshooting information. ([\#7119](https://github.com/matrix-org/synapse/issues/7119)) - Clean up INSTALL.md a bit. ([\#7141](https://github.com/matrix-org/synapse/issues/7141)) - Add documentation for running a local CAS server for testing. ([\#7147](https://github.com/matrix-org/synapse/issues/7147)) - Improve README.md by being explicit about public IP recommendation for TURN relaying. ([\#7167](https://github.com/matrix-org/synapse/issues/7167)) - Fix a small typo in the `metrics_flags` config option. ([\#7171](https://github.com/matrix-org/synapse/issues/7171)) - Update the contributed documentation on managing synapse workers with systemd, and bring it into the core distribution. ([\#7234](https://github.com/matrix-org/synapse/issues/7234)) - Add documentation to the `password_providers` config option. Add known password provider implementations to docs. ([\#7238](https://github.com/matrix-org/synapse/issues/7238), [\#7248](https://github.com/matrix-org/synapse/issues/7248)) - Modify suggested nginx reverse proxy configuration to match Synapse's default file upload size. Contributed by @ProCycleDev. ([\#7251](https://github.com/matrix-org/synapse/issues/7251)) - Documentation of media_storage_providers options updated to avoid misunderstandings. Contributed by Tristan Lins. ([\#7272](https://github.com/matrix-org/synapse/issues/7272)) - Add documentation on monitoring workers with Prometheus. ([\#7357](https://github.com/matrix-org/synapse/issues/7357)) - Clarify endpoint usage in the users admin api documentation. ([\#7361](https://github.com/matrix-org/synapse/issues/7361)) Deprecations and Removals ------------------------- - Remove nonfunctional `captcha_bypass_secret` option from `homeserver.yaml`. ([\#7137](https://github.com/matrix-org/synapse/issues/7137)) Internal Changes ---------------- - Add benchmarks for LruCache. ([\#6446](https://github.com/matrix-org/synapse/issues/6446)) - Return total number of users and profile attributes in admin users endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#6881](https://github.com/matrix-org/synapse/issues/6881)) - Change device list streams to have one row per ID. ([\#7010](https://github.com/matrix-org/synapse/issues/7010)) - Remove concept of a non-limited stream. ([\#7011](https://github.com/matrix-org/synapse/issues/7011)) - Move catchup of replication streams logic to worker. ([\#7024](https://github.com/matrix-org/synapse/issues/7024), [\#7195](https://github.com/matrix-org/synapse/issues/7195), [\#7226](https://github.com/matrix-org/synapse/issues/7226), [\#7239](https://github.com/matrix-org/synapse/issues/7239), [\#7286](https://github.com/matrix-org/synapse/issues/7286), [\#7290](https://github.com/matrix-org/synapse/issues/7290), [\#7318](https://github.com/matrix-org/synapse/issues/7318), [\#7326](https://github.com/matrix-org/synapse/issues/7326), [\#7378](https://github.com/matrix-org/synapse/issues/7378), [\#7421](https://github.com/matrix-org/synapse/issues/7421)) - Convert some of synapse.rest.media to async/await. ([\#7110](https://github.com/matrix-org/synapse/issues/7110), [\#7184](https://github.com/matrix-org/synapse/issues/7184), [\#7241](https://github.com/matrix-org/synapse/issues/7241)) - De-duplicate / remove unused REST code for login and auth. ([\#7115](https://github.com/matrix-org/synapse/issues/7115)) - Convert `*StreamRow` classes to inner classes. ([\#7116](https://github.com/matrix-org/synapse/issues/7116)) - Clean up some LoggingContext code. ([\#7120](https://github.com/matrix-org/synapse/issues/7120), [\#7181](https://github.com/matrix-org/synapse/issues/7181), [\#7183](https://github.com/matrix-org/synapse/issues/7183), [\#7408](https://github.com/matrix-org/synapse/issues/7408), [\#7426](https://github.com/matrix-org/synapse/issues/7426)) - Add explicit `instance_id` for USER_SYNC commands and remove implicit `conn_id` usage. ([\#7128](https://github.com/matrix-org/synapse/issues/7128)) - Refactored the CAS authentication logic to a separate class. ([\#7136](https://github.com/matrix-org/synapse/issues/7136)) - Run replication streamers on workers. ([\#7146](https://github.com/matrix-org/synapse/issues/7146)) - Add tests for outbound device pokes. ([\#7157](https://github.com/matrix-org/synapse/issues/7157)) - Fix device list update stream ids going backward. ([\#7158](https://github.com/matrix-org/synapse/issues/7158)) - Use `stream.current_token()` and remove `stream_positions()`. ([\#7172](https://github.com/matrix-org/synapse/issues/7172)) - Move client command handling out of TCP protocol. ([\#7185](https://github.com/matrix-org/synapse/issues/7185)) - Move server command handling out of TCP protocol. ([\#7187](https://github.com/matrix-org/synapse/issues/7187)) - Fix consistency of HTTP status codes reported in log lines. ([\#7188](https://github.com/matrix-org/synapse/issues/7188)) - Only run one background database update at a time. ([\#7190](https://github.com/matrix-org/synapse/issues/7190)) - Remove sent outbound device list pokes from the database. ([\#7192](https://github.com/matrix-org/synapse/issues/7192)) - Add a background database update job to clear out duplicate `device_lists_outbound_pokes`. ([\#7193](https://github.com/matrix-org/synapse/issues/7193)) - Remove some extraneous debugging log lines. ([\#7207](https://github.com/matrix-org/synapse/issues/7207)) - Add explicit Python build tooling as dependencies for the snapcraft build. ([\#7213](https://github.com/matrix-org/synapse/issues/7213)) - Add typing information to federation server code. ([\#7219](https://github.com/matrix-org/synapse/issues/7219)) - Extend room admin api (`GET /_synapse/admin/v1/rooms`) with additional attributes. ([\#7225](https://github.com/matrix-org/synapse/issues/7225)) - Unblacklist '/upgrade creates a new room' sytest for workers. ([\#7228](https://github.com/matrix-org/synapse/issues/7228)) - Remove redundant checks on `daemonize` from synctl. ([\#7233](https://github.com/matrix-org/synapse/issues/7233)) - Upgrade jQuery to v3.4.1 on fallback login/registration pages. ([\#7236](https://github.com/matrix-org/synapse/issues/7236)) - Change log line that told user to implement onLogin/onRegister fallback js functions to a warning, instead of an info, so it's more visible. ([\#7237](https://github.com/matrix-org/synapse/issues/7237)) - Correct the parameters of a test fixture. Contributed by Isaiah Singletary. ([\#7243](https://github.com/matrix-org/synapse/issues/7243)) - Convert auth handler to async/await. ([\#7261](https://github.com/matrix-org/synapse/issues/7261)) - Add some unit tests for replication. ([\#7278](https://github.com/matrix-org/synapse/issues/7278)) - Improve typing annotations in `synapse.replication.tcp.streams.Stream`. ([\#7291](https://github.com/matrix-org/synapse/issues/7291)) - Reduce log verbosity of url cache cleanup tasks. ([\#7295](https://github.com/matrix-org/synapse/issues/7295)) - Fix sample SAML Service Provider configuration. Contributed by @frcl. ([\#7300](https://github.com/matrix-org/synapse/issues/7300)) - Fix StreamChangeCache to work with multiple entities changing on the same stream id. ([\#7303](https://github.com/matrix-org/synapse/issues/7303)) - Fix an incorrect import in IdentityHandler. ([\#7319](https://github.com/matrix-org/synapse/issues/7319)) - Reduce logging verbosity for successful federation requests. ([\#7321](https://github.com/matrix-org/synapse/issues/7321)) - Convert some federation handler code to async/await. ([\#7338](https://github.com/matrix-org/synapse/issues/7338)) - Fix collation for postgres for unit tests. ([\#7359](https://github.com/matrix-org/synapse/issues/7359)) - Convert RegistrationWorkerStore.is_server_admin and dependent code to async/await. ([\#7363](https://github.com/matrix-org/synapse/issues/7363)) - Add an `instance_name` to `RDATA` and `POSITION` replication commands. ([\#7364](https://github.com/matrix-org/synapse/issues/7364)) - Thread through instance name to replication client. ([\#7369](https://github.com/matrix-org/synapse/issues/7369)) - Convert synapse.server_notices to async/await. ([\#7394](https://github.com/matrix-org/synapse/issues/7394)) - Convert synapse.notifier to async/await. ([\#7395](https://github.com/matrix-org/synapse/issues/7395)) - Fix issues with the Python package manifest. ([\#7404](https://github.com/matrix-org/synapse/issues/7404)) - Prevent methods in `synapse.handlers.auth` from polling the homeserver config every request. ([\#7420](https://github.com/matrix-org/synapse/issues/7420)) - Speed up fetching device lists changes when handling `/sync` requests. ([\#7423](https://github.com/matrix-org/synapse/issues/7423)) - Run group attestation renewal in series rather than parallel for performance. ([\#7442](https://github.com/matrix-org/synapse/issues/7442)) Synapse 1.12.4 (2020-04-23) =========================== No significant changes. Synapse 1.12.4rc1 (2020-04-22) ============================== Features -------- - Always send users their own device updates. ([\#7160](https://github.com/matrix-org/synapse/issues/7160)) - Add support for handling GET requests for `account_data` on a worker. ([\#7311](https://github.com/matrix-org/synapse/issues/7311)) Bugfixes -------- - Fix a bug that prevented cross-signing with users on worker-mode synapses. ([\#7255](https://github.com/matrix-org/synapse/issues/7255)) - Do not treat display names as globs in push rules. ([\#7271](https://github.com/matrix-org/synapse/issues/7271)) - Fix a bug with cross-signing devices belonging to remote users who did not share a room with any user on the local homeserver. ([\#7289](https://github.com/matrix-org/synapse/issues/7289)) Synapse 1.12.3 (2020-04-03) =========================== - Remove the the pin to Pillow 7.0 which was introduced in Synapse 1.12.2, and correctly fix the issue with building the Debian packages. ([\#7212](https://github.com/matrix-org/synapse/issues/7212)) Synapse 1.12.2 (2020-04-02) =========================== This release works around [an issue](https://github.com/matrix-org/synapse/issues/7208) with building the debian packages. No other significant changes since 1.12.1. Synapse 1.12.1 (2020-04-02) =========================== No significant changes since 1.12.1rc1. Synapse 1.12.1rc1 (2020-03-31) ============================== Bugfixes -------- - Fix starting workers when federation sending not split out. ([\#7133](https://github.com/matrix-org/synapse/issues/7133)). Introduced in v1.12.0. - Avoid importing `sqlite3` when using the postgres backend. Contributed by David Vo. ([\#7155](https://github.com/matrix-org/synapse/issues/7155)). Introduced in v1.12.0rc1. - Fix a bug which could cause outbound federation traffic to stop working if a client uploaded an incorrect e2e device signature. ([\#7177](https://github.com/matrix-org/synapse/issues/7177)). Introduced in v1.11.0. Synapse 1.12.0 (2020-03-23) =========================== Debian packages and Docker images are rebuilt using the latest versions of dependency libraries, including Twisted 20.3.0. **Please see security advisory below**. Potential slow database update during upgrade --------------------------------------------- Synapse 1.12.0 includes a database update which is run as part of the upgrade, and which may take some time (several hours in the case of a large server). Synapse will not respond to HTTP requests while this update is taking place. For imformation on seeing if you are affected, and workaround if you are, see the [upgrade notes](docs/upgrade.md#upgrading-to-v1120). Security advisory ----------------- Synapse may be vulnerable to request-smuggling attacks when it is used with a reverse-proxy. The vulnerabilities are fixed in Twisted 20.3.0, and are described in [CVE-2020-10108](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10108) and [CVE-2020-10109](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10109). For a good introduction to this class of request-smuggling attacks, see https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn. We are not aware of these vulnerabilities being exploited in the wild, and do not believe that they are exploitable with current versions of any reverse proxies. Nevertheless, we recommend that all Synapse administrators ensure that they have the latest versions of the Twisted library to ensure that their installation remains secure. * Administrators using the [`matrix.org` Docker image](https://hub.docker.com/r/matrixdotorg/synapse/) or the [Debian/Ubuntu packages from `matrix.org`](https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages) should ensure that they have version 1.12.0 installed: these images include Twisted 20.3.0. * Administrators who have [installed Synapse from source](https://matrix-org.github.io/synapse/latest/setup/installation.html#installing-from-source) should upgrade Twisted within their virtualenv by running: ```sh /bin/pip install 'Twisted>=20.3.0' ``` * Administrators who have installed Synapse from distribution packages should consult the information from their distributions. The `matrix.org` Synapse instance was not vulnerable to these vulnerabilities. Advance notice of change to the default `git` branch for Synapse ---------------------------------------------------------------- Currently, the default `git` branch for Synapse is `master`, which tracks the latest release. After the release of Synapse 1.13.0, we intend to change this default to `develop`, which is the development tip. This is more consistent with common practice and modern `git` usage. Although we try to keep `develop` in a stable state, there may be occasions where regressions creep in. Developers and distributors who have scripts which run builds using the default branch of `Synapse` should therefore consider pinning their scripts to `master`. Synapse 1.12.0rc1 (2020-03-19) ============================== Features -------- - Changes related to room alias management ([MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432)): - Publishing/removing a room from the room directory now requires the user to have a power level capable of modifying the canonical alias, instead of the room aliases. ([\#6965](https://github.com/matrix-org/synapse/issues/6965)) - Validate the `alt_aliases` property of canonical alias events. ([\#6971](https://github.com/matrix-org/synapse/issues/6971)) - Users with a power level sufficient to modify the canonical alias of a room can now delete room aliases. ([\#6986](https://github.com/matrix-org/synapse/issues/6986)) - Implement updated authorization rules and redaction rules for aliases events, from [MSC2261](https://github.com/matrix-org/matrix-doc/pull/2261) and [MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432). ([\#7037](https://github.com/matrix-org/synapse/issues/7037)) - Stop sending m.room.aliases events during room creation and upgrade. ([\#6941](https://github.com/matrix-org/synapse/issues/6941)) - Synapse no longer uses room alias events to calculate room names for push notifications. ([\#6966](https://github.com/matrix-org/synapse/issues/6966)) - The room list endpoint no longer returns a list of aliases. ([\#6970](https://github.com/matrix-org/synapse/issues/6970)) - Remove special handling of aliases events from [MSC2260](https://github.com/matrix-org/matrix-doc/pull/2260) added in v1.10.0rc1. ([\#7034](https://github.com/matrix-org/synapse/issues/7034)) - Expose the `synctl`, `hash_password` and `generate_config` commands in the snapcraft package. Contributed by @devec0. ([\#6315](https://github.com/matrix-org/synapse/issues/6315)) - Check that server_name is correctly set before running database updates. ([\#6982](https://github.com/matrix-org/synapse/issues/6982)) - Break down monthly active users by `appservice_id` and emit via Prometheus. ([\#7030](https://github.com/matrix-org/synapse/issues/7030)) - Render a configurable and comprehensible error page if something goes wrong during the SAML2 authentication process. ([\#7058](https://github.com/matrix-org/synapse/issues/7058), [\#7067](https://github.com/matrix-org/synapse/issues/7067)) - Add an optional parameter to control whether other sessions are logged out when a user's password is modified. ([\#7085](https://github.com/matrix-org/synapse/issues/7085)) - Add prometheus metrics for the number of active pushers. ([\#7103](https://github.com/matrix-org/synapse/issues/7103), [\#7106](https://github.com/matrix-org/synapse/issues/7106)) - Improve performance when making HTTPS requests to sygnal, sydent, etc, by sharing the SSL context object between connections. ([\#7094](https://github.com/matrix-org/synapse/issues/7094)) Bugfixes -------- - When a user's profile is updated via the admin API, also generate a displayname/avatar update for that user in each room. ([\#6572](https://github.com/matrix-org/synapse/issues/6572)) - Fix a couple of bugs in email configuration handling. ([\#6962](https://github.com/matrix-org/synapse/issues/6962)) - Fix an issue affecting worker-based deployments where replication would stop working, necessitating a full restart, after joining a large room. ([\#6967](https://github.com/matrix-org/synapse/issues/6967)) - Fix `duplicate key` error which was logged when rejoining a room over federation. ([\#6968](https://github.com/matrix-org/synapse/issues/6968)) - Prevent user from setting 'deactivated' to anything other than a bool on the v2 PUT /users Admin API. ([\#6990](https://github.com/matrix-org/synapse/issues/6990)) - Fix py35-old CI by using native tox package. ([\#7018](https://github.com/matrix-org/synapse/issues/7018)) - Fix a bug causing `org.matrix.dummy_event` to be included in responses from `/sync`. ([\#7035](https://github.com/matrix-org/synapse/issues/7035)) - Fix a bug that renders UTF-8 text files incorrectly when loaded from media. Contributed by @TheStranjer. ([\#7044](https://github.com/matrix-org/synapse/issues/7044)) - Fix a bug that would cause Synapse to respond with an error about event visibility if a client tried to request the state of a room at a given token. ([\#7066](https://github.com/matrix-org/synapse/issues/7066)) - Repair a data-corruption issue which was introduced in Synapse 1.10, and fixed in Synapse 1.11, and which could cause `/sync` to return with 404 errors about missing events and unknown rooms. ([\#7070](https://github.com/matrix-org/synapse/issues/7070)) - Fix a bug causing account validity renewal emails to be sent even if the feature is turned off in some cases. ([\#7074](https://github.com/matrix-org/synapse/issues/7074)) Improved Documentation ---------------------- - Updated CentOS8 install instructions. Contributed by Richard Kellner. ([\#6925](https://github.com/matrix-org/synapse/issues/6925)) - Fix `POSTGRES_INITDB_ARGS` in the `contrib/docker/docker-compose.yml` example docker-compose configuration. ([\#6984](https://github.com/matrix-org/synapse/issues/6984)) - Change date in [INSTALL.md](./INSTALL.md#tls-certificates) for last date of getting TLS certificates to November 2019. ([\#7015](https://github.com/matrix-org/synapse/issues/7015)) - Document that the fallback auth endpoints must be routed to the same worker node as the register endpoints. ([\#7048](https://github.com/matrix-org/synapse/issues/7048)) Deprecations and Removals ------------------------- - Remove the unused query_auth federation endpoint per [MSC2451](https://github.com/matrix-org/matrix-doc/pull/2451). ([\#7026](https://github.com/matrix-org/synapse/issues/7026)) Internal Changes ---------------- - Add type hints to `logging/context.py`. ([\#6309](https://github.com/matrix-org/synapse/issues/6309)) - Add some clarifications to `README.md` in the database schema directory. ([\#6615](https://github.com/matrix-org/synapse/issues/6615)) - Refactoring work in preparation for changing the event redaction algorithm. ([\#6874](https://github.com/matrix-org/synapse/issues/6874), [\#6875](https://github.com/matrix-org/synapse/issues/6875), [\#6983](https://github.com/matrix-org/synapse/issues/6983), [\#7003](https://github.com/matrix-org/synapse/issues/7003)) - Improve performance of v2 state resolution for large rooms. ([\#6952](https://github.com/matrix-org/synapse/issues/6952), [\#7095](https://github.com/matrix-org/synapse/issues/7095)) - Reduce time spent doing GC, by freezing objects on startup. ([\#6953](https://github.com/matrix-org/synapse/issues/6953)) - Minor performance fixes to `get_auth_chain_ids`. ([\#6954](https://github.com/matrix-org/synapse/issues/6954)) - Don't record remote cross-signing keys in the `devices` table. ([\#6956](https://github.com/matrix-org/synapse/issues/6956)) - Use flake8-comprehensions to enforce good hygiene of list/set/dict comprehensions. ([\#6957](https://github.com/matrix-org/synapse/issues/6957)) - Merge worker apps together. ([\#6964](https://github.com/matrix-org/synapse/issues/6964), [\#7002](https://github.com/matrix-org/synapse/issues/7002), [\#7055](https://github.com/matrix-org/synapse/issues/7055), [\#7104](https://github.com/matrix-org/synapse/issues/7104)) - Remove redundant `store_room` call from `FederationHandler._process_received_pdu`. ([\#6979](https://github.com/matrix-org/synapse/issues/6979)) - Update warning for incorrect database collation/ctype to include link to documentation. ([\#6985](https://github.com/matrix-org/synapse/issues/6985)) - Add some type annotations to the database storage classes. ([\#6987](https://github.com/matrix-org/synapse/issues/6987)) - Port `synapse.handlers.presence` to async/await. ([\#6991](https://github.com/matrix-org/synapse/issues/6991), [\#7019](https://github.com/matrix-org/synapse/issues/7019)) - Add some type annotations to the federation base & client classes. ([\#6995](https://github.com/matrix-org/synapse/issues/6995)) - Port `synapse.rest.keys` to async/await. ([\#7020](https://github.com/matrix-org/synapse/issues/7020)) - Add a type check to `is_verified` when processing room keys. ([\#7045](https://github.com/matrix-org/synapse/issues/7045)) - Add type annotations and comments to the auth handler. ([\#7063](https://github.com/matrix-org/synapse/issues/7063)) Synapse 1.11.1 (2020-03-03) =========================== This release includes a security fix impacting installations using Single Sign-On (i.e. SAML2 or CAS) for authentication. Administrators of such installations are encouraged to upgrade as soon as possible. The release also includes fixes for a couple of other bugs. Bugfixes -------- - Add a confirmation step to the SSO login flow before redirecting users to the redirect URL. ([b2bd54a2](https://github.com/matrix-org/synapse/commit/b2bd54a2e31d9a248f73fadb184ae9b4cbdb49f9), [65c73cdf](https://github.com/matrix-org/synapse/commit/65c73cdfec1876a9fec2fd2c3a74923cd146fe0b), [a0178df1](https://github.com/matrix-org/synapse/commit/a0178df10422a76fd403b82d2b2a4ed28a9a9d1e)) - Fixed set a user as an admin with the admin API `PUT /_synapse/admin/v2/users/`. Contributed by @dklimpel. ([\#6910](https://github.com/matrix-org/synapse/issues/6910)) - Fix bug introduced in Synapse 1.11.0 which sometimes caused errors when joining rooms over federation, with `'coroutine' object has no attribute 'event_id'`. ([\#6996](https://github.com/matrix-org/synapse/issues/6996)) Synapse 1.11.0 (2020-02-21) =========================== Improved Documentation ---------------------- - Small grammatical fixes to the ACME v1 deprecation notice. ([\#6944](https://github.com/matrix-org/synapse/issues/6944)) Synapse 1.11.0rc1 (2020-02-19) ============================== Features -------- - Admin API to add or modify threepids of user accounts. ([\#6769](https://github.com/matrix-org/synapse/issues/6769)) - Limit the number of events that can be requested by the backfill federation API to 100. ([\#6864](https://github.com/matrix-org/synapse/issues/6864)) - Add ability to run some group APIs on workers. ([\#6866](https://github.com/matrix-org/synapse/issues/6866)) - Reject device display names over 100 characters in length to prevent abuse. ([\#6882](https://github.com/matrix-org/synapse/issues/6882)) - Add ability to route federation user device queries to workers. ([\#6873](https://github.com/matrix-org/synapse/issues/6873)) - The result of a user directory search can now be filtered via the spam checker. ([\#6888](https://github.com/matrix-org/synapse/issues/6888)) - Implement new `GET /_matrix/client/unstable/org.matrix.msc2432/rooms/{roomId}/aliases` endpoint as per [MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432). ([\#6939](https://github.com/matrix-org/synapse/issues/6939), [\#6948](https://github.com/matrix-org/synapse/issues/6948), [\#6949](https://github.com/matrix-org/synapse/issues/6949)) - Stop sending `m.room.alias` events wheng adding / removing aliases. Check `alt_aliases` in the latest `m.room.canonical_alias` event when deleting an alias. ([\#6904](https://github.com/matrix-org/synapse/issues/6904)) - Change the default power levels of invites, tombstones and server ACLs for new rooms. ([\#6834](https://github.com/matrix-org/synapse/issues/6834)) Bugfixes -------- - Fixed third party event rules function `on_create_room`'s return value being ignored. ([\#6781](https://github.com/matrix-org/synapse/issues/6781)) - Allow URL-encoded User IDs on `/_synapse/admin/v2/users/[/admin]` endpoints. Thanks to @NHAS for reporting. ([\#6825](https://github.com/matrix-org/synapse/issues/6825)) - Fix Synapse refusing to start if `federation_certificate_verification_whitelist` option is blank. ([\#6849](https://github.com/matrix-org/synapse/issues/6849)) - Fix errors from logging in the purge jobs related to the message retention policies support. ([\#6945](https://github.com/matrix-org/synapse/issues/6945)) - Return a 404 instead of 200 for querying information of a non-existent user through the admin API. ([\#6901](https://github.com/matrix-org/synapse/issues/6901)) Updates to the Docker image --------------------------- - The deprecated "generate-config-on-the-fly" mode is no longer supported. ([\#6918](https://github.com/matrix-org/synapse/issues/6918)) Improved Documentation ---------------------- - Add details of PR merge strategy to contributing docs. ([\#6846](https://github.com/matrix-org/synapse/issues/6846)) - Spell out that the last event sent to a room won't be deleted by a purge. ([\#6891](https://github.com/matrix-org/synapse/issues/6891)) - Update Synapse's documentation to warn about the deprecation of ACME v1. ([\#6905](https://github.com/matrix-org/synapse/issues/6905), [\#6907](https://github.com/matrix-org/synapse/issues/6907), [\#6909](https://github.com/matrix-org/synapse/issues/6909)) - Add documentation for the spam checker. ([\#6906](https://github.com/matrix-org/synapse/issues/6906)) - Fix worker docs to point `/publicised_groups` API correctly. ([\#6938](https://github.com/matrix-org/synapse/issues/6938)) - Clean up and update docs on setting up federation. ([\#6940](https://github.com/matrix-org/synapse/issues/6940)) - Add a warning about indentation to generated configuration files. ([\#6920](https://github.com/matrix-org/synapse/issues/6920)) - Databases created using the compose file in contrib/docker will now always have correct encoding and locale settings. Contributed by Fridtjof Mund. ([\#6921](https://github.com/matrix-org/synapse/issues/6921)) - Update pip install directions in readme to avoid error when using zsh. ([\#6855](https://github.com/matrix-org/synapse/issues/6855)) Deprecations and Removals ------------------------- - Remove `m.lazy_load_members` from `unstable_features` since lazy loading is in the stable Client-Server API version r0.5.0. ([\#6877](https://github.com/matrix-org/synapse/issues/6877)) Internal Changes ---------------- - Add type hints to `SyncHandler`. ([\#6821](https://github.com/matrix-org/synapse/issues/6821)) - Refactoring work in preparation for changing the event redaction algorithm. ([\#6823](https://github.com/matrix-org/synapse/issues/6823), [\#6827](https://github.com/matrix-org/synapse/issues/6827), [\#6854](https://github.com/matrix-org/synapse/issues/6854), [\#6856](https://github.com/matrix-org/synapse/issues/6856), [\#6857](https://github.com/matrix-org/synapse/issues/6857), [\#6858](https://github.com/matrix-org/synapse/issues/6858)) - Fix stacktraces when using `ObservableDeferred` and async/await. ([\#6836](https://github.com/matrix-org/synapse/issues/6836)) - Port much of `synapse.handlers.federation` to async/await. ([\#6837](https://github.com/matrix-org/synapse/issues/6837), [\#6840](https://github.com/matrix-org/synapse/issues/6840)) - Populate `rooms.room_version` database column at startup, rather than in a background update. ([\#6847](https://github.com/matrix-org/synapse/issues/6847)) - Reduce amount we log at `INFO` level. ([\#6833](https://github.com/matrix-org/synapse/issues/6833), [\#6862](https://github.com/matrix-org/synapse/issues/6862)) - Remove unused `get_room_stats_state` method. ([\#6869](https://github.com/matrix-org/synapse/issues/6869)) - Add typing to `synapse.federation.sender` and port to async/await. ([\#6871](https://github.com/matrix-org/synapse/issues/6871)) - Refactor `_EventInternalMetadata` object to improve type safety. ([\#6872](https://github.com/matrix-org/synapse/issues/6872)) - Add an additional entry to the SyTest blacklist for worker mode. ([\#6883](https://github.com/matrix-org/synapse/issues/6883)) - Fix the use of sed in the linting scripts when using BSD sed. ([\#6887](https://github.com/matrix-org/synapse/issues/6887)) - Add type hints to the spam checker module. ([\#6915](https://github.com/matrix-org/synapse/issues/6915)) - Convert the directory handler tests to use HomeserverTestCase. ([\#6919](https://github.com/matrix-org/synapse/issues/6919)) - Increase DB/CPU perf of `_is_server_still_joined` check. ([\#6936](https://github.com/matrix-org/synapse/issues/6936)) - Tiny optimisation for incoming HTTP request dispatch. ([\#6950](https://github.com/matrix-org/synapse/issues/6950)) Synapse 1.10.1 (2020-02-17) =========================== Bugfixes -------- - Fix a bug introduced in Synapse 1.10.0 which would cause room state to be cleared in the database if Synapse was upgraded direct from 1.2.1 or earlier to 1.10.0. ([\#6924](https://github.com/matrix-org/synapse/issues/6924)) Synapse 1.10.0 (2020-02-12) =========================== **WARNING to client developers**: As of this release Synapse validates `client_secret` parameters in the Client-Server API as per the spec. See [\#6766](https://github.com/matrix-org/synapse/issues/6766) for details. Updates to the Docker image --------------------------- - Update the docker images to Alpine Linux 3.11. ([\#6897](https://github.com/matrix-org/synapse/issues/6897)) Synapse 1.10.0rc5 (2020-02-11) ============================== Bugfixes -------- - Fix the filtering introduced in 1.10.0rc3 to also apply to the state blocks returned by `/sync`. ([\#6884](https://github.com/matrix-org/synapse/issues/6884)) Synapse 1.10.0rc4 (2020-02-11) ============================== This release candidate was built incorrectly and is superseded by 1.10.0rc5. Synapse 1.10.0rc3 (2020-02-10) ============================== Features -------- - Filter out `m.room.aliases` from the CS API to mitigate abuse while a better solution is specced. ([\#6878](https://github.com/matrix-org/synapse/issues/6878)) Internal Changes ---------------- - Fix continuous integration failures with old versions of `pip`, which were introduced by a release of the `zipp` library. ([\#6880](https://github.com/matrix-org/synapse/issues/6880)) Synapse 1.10.0rc2 (2020-02-06) ============================== Bugfixes -------- - Fix an issue with cross-signing where device signatures were not sent to remote servers. ([\#6844](https://github.com/matrix-org/synapse/issues/6844)) - Fix to the unknown remote device detection which was introduced in 1.10.rc1. ([\#6848](https://github.com/matrix-org/synapse/issues/6848)) Internal Changes ---------------- - Detect unexpected sender keys on remote encrypted events and resync device lists. ([\#6850](https://github.com/matrix-org/synapse/issues/6850)) Synapse 1.10.0rc1 (2020-01-31) ============================== Features -------- - Add experimental support for updated authorization rules for aliases events, from [MSC2260](https://github.com/matrix-org/matrix-doc/pull/2260). ([\#6787](https://github.com/matrix-org/synapse/issues/6787), [\#6790](https://github.com/matrix-org/synapse/issues/6790), [\#6794](https://github.com/matrix-org/synapse/issues/6794)) Bugfixes -------- - Warn if postgres database has a non-C locale, as that can cause issues when upgrading locales (e.g. due to upgrading OS). ([\#6734](https://github.com/matrix-org/synapse/issues/6734)) - Minor fixes to `PUT /_synapse/admin/v2/users` admin api. ([\#6761](https://github.com/matrix-org/synapse/issues/6761)) - Validate `client_secret` parameter using the regex provided by the Client-Server API, temporarily allowing `:` characters for older clients. The `:` character will be removed in a future release. ([\#6767](https://github.com/matrix-org/synapse/issues/6767)) - Fix persisting redaction events that have been redacted (or otherwise don't have a redacts key). ([\#6771](https://github.com/matrix-org/synapse/issues/6771)) - Fix outbound federation request metrics. ([\#6795](https://github.com/matrix-org/synapse/issues/6795)) - Fix bug where querying a remote user's device keys that weren't cached resulted in only returning a single device. ([\#6796](https://github.com/matrix-org/synapse/issues/6796)) - Fix race in federation sender worker that delayed sending of device updates. ([\#6799](https://github.com/matrix-org/synapse/issues/6799), [\#6800](https://github.com/matrix-org/synapse/issues/6800)) - Fix bug where Synapse didn't invalidate cache of remote users' devices when Synapse left a room. ([\#6801](https://github.com/matrix-org/synapse/issues/6801)) - Fix waking up other workers when remote server is detected to have come back online. ([\#6811](https://github.com/matrix-org/synapse/issues/6811)) Improved Documentation ---------------------- - Clarify documentation related to `user_dir` and `federation_reader` workers. ([\#6775](https://github.com/matrix-org/synapse/issues/6775)) Internal Changes ---------------- - Record room versions in the `rooms` table. ([\#6729](https://github.com/matrix-org/synapse/issues/6729), [\#6788](https://github.com/matrix-org/synapse/issues/6788), [\#6810](https://github.com/matrix-org/synapse/issues/6810)) - Propagate cache invalidates from workers to other workers. ([\#6748](https://github.com/matrix-org/synapse/issues/6748)) - Remove some unnecessary admin handler abstraction methods. ([\#6751](https://github.com/matrix-org/synapse/issues/6751)) - Add some debugging for media storage providers. ([\#6757](https://github.com/matrix-org/synapse/issues/6757)) - Detect unknown remote devices and mark cache as stale. ([\#6776](https://github.com/matrix-org/synapse/issues/6776), [\#6819](https://github.com/matrix-org/synapse/issues/6819)) - Attempt to resync remote users' devices when detected as stale. ([\#6786](https://github.com/matrix-org/synapse/issues/6786)) - Delete current state from the database when server leaves a room. ([\#6792](https://github.com/matrix-org/synapse/issues/6792)) - When a client asks for a remote user's device keys check if the local cache for that user has been marked as potentially stale. ([\#6797](https://github.com/matrix-org/synapse/issues/6797)) - Add background update to clean out left rooms from current state. ([\#6802](https://github.com/matrix-org/synapse/issues/6802), [\#6816](https://github.com/matrix-org/synapse/issues/6816)) - Refactoring work in preparation for changing the event redaction algorithm. ([\#6803](https://github.com/matrix-org/synapse/issues/6803), [\#6805](https://github.com/matrix-org/synapse/issues/6805), [\#6806](https://github.com/matrix-org/synapse/issues/6806), [\#6807](https://github.com/matrix-org/synapse/issues/6807), [\#6820](https://github.com/matrix-org/synapse/issues/6820)) Synapse 1.9.1 (2020-01-28) ========================== Bugfixes -------- - Fix bug where setting `mau_limit_reserved_threepids` config would cause Synapse to refuse to start. ([\#6793](https://github.com/matrix-org/synapse/issues/6793)) Synapse 1.9.0 (2020-01-23) ========================== **WARNING**: As of this release, Synapse no longer supports versions of SQLite before 3.11, and will refuse to start when configured to use an older version. Administrators are recommended to migrate their database to Postgres (see instructions [here](docs/postgres.md)). If your Synapse deployment uses workers, note that the reverse-proxy configurations for the `synapse.app.media_repository`, `synapse.app.federation_reader` and `synapse.app.event_creator` workers have changed, with the addition of a few paths (see the updated configurations [here](docs/workers.md#available-worker-applications)). Existing configurations will continue to work. Improved Documentation ---------------------- - Fix endpoint documentation for the List Rooms admin API. ([\#6770](https://github.com/matrix-org/synapse/issues/6770)) Synapse 1.9.0rc1 (2020-01-22) ============================= Features -------- - Allow admin to create or modify a user. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#5742](https://github.com/matrix-org/synapse/issues/5742)) - Add new quarantine media admin APIs to quarantine by media ID or by user who uploaded the media. ([\#6681](https://github.com/matrix-org/synapse/issues/6681), [\#6756](https://github.com/matrix-org/synapse/issues/6756)) - Add `org.matrix.e2e_cross_signing` to `unstable_features` in `/versions` as per [MSC1756](https://github.com/matrix-org/matrix-doc/pull/1756). ([\#6712](https://github.com/matrix-org/synapse/issues/6712)) - Add a new admin API to list and filter rooms on the server. ([\#6720](https://github.com/matrix-org/synapse/issues/6720)) Bugfixes -------- - Correctly proxy HTTP errors due to API calls to remote group servers. ([\#6654](https://github.com/matrix-org/synapse/issues/6654)) - Fix media repo admin APIs when using a media worker. ([\#6664](https://github.com/matrix-org/synapse/issues/6664)) - Fix "CRITICAL" errors being logged when a request is received for a uri containing non-ascii characters. ([\#6682](https://github.com/matrix-org/synapse/issues/6682)) - Fix a bug where we would assign a numeric user ID if somebody tried registering with an empty username. ([\#6690](https://github.com/matrix-org/synapse/issues/6690)) - Fix `purge_room` admin API. ([\#6711](https://github.com/matrix-org/synapse/issues/6711)) - Fix a bug causing Synapse to not always purge quiet rooms with a low `max_lifetime` in their message retention policies when running the automated purge jobs. ([\#6714](https://github.com/matrix-org/synapse/issues/6714)) - Fix the `synapse_port_db` not correctly running background updates. Thanks @tadzik for reporting. ([\#6718](https://github.com/matrix-org/synapse/issues/6718)) - Fix changing password via user admin API. ([\#6730](https://github.com/matrix-org/synapse/issues/6730)) - Fix `/events/:event_id` deprecated API. ([\#6731](https://github.com/matrix-org/synapse/issues/6731)) - Fix monthly active user limiting support for worker mode, fixes [#4639](https://github.com/matrix-org/synapse/issues/4639). ([\#6742](https://github.com/matrix-org/synapse/issues/6742)) - Fix bug when setting `account_validity` to an empty block in the config. Thanks to @Sorunome for reporting. ([\#6747](https://github.com/matrix-org/synapse/issues/6747)) - Fix `AttributeError: 'NoneType' object has no attribute 'get'` in `hash_password` when configuration has an empty `password_config`. Contributed by @ivilata. ([\#6753](https://github.com/matrix-org/synapse/issues/6753)) - Fix the `docker-compose.yaml` overriding the entire `/etc` folder of the container. Contributed by Fabian Meyer. ([\#6656](https://github.com/matrix-org/synapse/issues/6656)) Improved Documentation ---------------------- - Fix a typo in the configuration example for purge jobs in the sample configuration file. ([\#6621](https://github.com/matrix-org/synapse/issues/6621)) - Add complete documentation of the message retention policies support. ([\#6624](https://github.com/matrix-org/synapse/issues/6624), [\#6665](https://github.com/matrix-org/synapse/issues/6665)) - Add some helpful tips about changelog entries to the GitHub pull request template. ([\#6663](https://github.com/matrix-org/synapse/issues/6663)) - Clarify the `account_validity` and `email` sections of the sample configuration. ([\#6685](https://github.com/matrix-org/synapse/issues/6685)) - Add more endpoints to the documentation for Synapse workers. ([\#6698](https://github.com/matrix-org/synapse/issues/6698)) Deprecations and Removals ------------------------- - Synapse no longer supports versions of SQLite before 3.11, and will refuse to start when configured to use an older version. Administrators are recommended to migrate their database to Postgres (see instructions [here](docs/postgres.md)). ([\#6675](https://github.com/matrix-org/synapse/issues/6675)) Internal Changes ---------------- - Add `local_current_membership` table for tracking local user membership state in rooms. ([\#6655](https://github.com/matrix-org/synapse/issues/6655), [\#6728](https://github.com/matrix-org/synapse/issues/6728)) - Port `synapse.replication.tcp` to async/await. ([\#6666](https://github.com/matrix-org/synapse/issues/6666)) - Fixup `synapse.replication` to pass mypy checks. ([\#6667](https://github.com/matrix-org/synapse/issues/6667)) - Allow `additional_resources` to implement `IResource` directly. ([\#6686](https://github.com/matrix-org/synapse/issues/6686)) - Allow REST endpoint implementations to raise a `RedirectException`, which will redirect the user's browser to a given location. ([\#6687](https://github.com/matrix-org/synapse/issues/6687)) - Updates and extensions to the module API. ([\#6688](https://github.com/matrix-org/synapse/issues/6688)) - Updates to the SAML mapping provider API. ([\#6689](https://github.com/matrix-org/synapse/issues/6689), [\#6723](https://github.com/matrix-org/synapse/issues/6723)) - Remove redundant `RegistrationError` class. ([\#6691](https://github.com/matrix-org/synapse/issues/6691)) - Don't block processing of incoming EDUs behind processing PDUs in the same transaction. ([\#6697](https://github.com/matrix-org/synapse/issues/6697)) - Remove duplicate check for the `session` query parameter on the `/auth/xxx/fallback/web` Client-Server endpoint. ([\#6702](https://github.com/matrix-org/synapse/issues/6702)) - Attempt to retry sending a transaction when we detect a remote server has come back online, rather than waiting for a transaction to be triggered by new data. ([\#6706](https://github.com/matrix-org/synapse/issues/6706)) - Add `StateMap` type alias to simplify types. ([\#6715](https://github.com/matrix-org/synapse/issues/6715)) - Add a `DeltaState` to track changes to be made to current state during event persistence. ([\#6716](https://github.com/matrix-org/synapse/issues/6716)) - Add more logging around message retention policies support. ([\#6717](https://github.com/matrix-org/synapse/issues/6717)) - When processing a SAML response, log the assertions for easier configuration. ([\#6724](https://github.com/matrix-org/synapse/issues/6724)) - Fixup `synapse.rest` to pass mypy. ([\#6732](https://github.com/matrix-org/synapse/issues/6732), [\#6764](https://github.com/matrix-org/synapse/issues/6764)) - Fixup `synapse.api` to pass mypy. ([\#6733](https://github.com/matrix-org/synapse/issues/6733)) - Allow streaming cache 'invalidate all' to workers. ([\#6749](https://github.com/matrix-org/synapse/issues/6749)) - Remove unused CI docker compose files. ([\#6754](https://github.com/matrix-org/synapse/issues/6754)) Synapse 1.8.0 (2020-01-09) ========================== **WARNING**: As of this release Synapse will refuse to start if the `log_file` config option is specified. Support for the option was removed in v1.3.0. Bugfixes -------- - Fix `GET` request on `/_synapse/admin/v2/users` endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. ([\#6563](https://github.com/matrix-org/synapse/issues/6563)) - Fix incorrect signing of responses from the key server implementation. ([\#6657](https://github.com/matrix-org/synapse/issues/6657)) Synapse 1.8.0rc1 (2020-01-07) ============================= Features -------- - Add v2 APIs for the `send_join` and `send_leave` federation endpoints (as described in [MSC1802](https://github.com/matrix-org/matrix-doc/pull/1802)). ([\#6349](https://github.com/matrix-org/synapse/issues/6349)) - Add a develop script to generate full SQL schemas. ([\#6394](https://github.com/matrix-org/synapse/issues/6394)) - Add custom SAML username mapping functionality through an external provider plugin. ([\#6411](https://github.com/matrix-org/synapse/issues/6411)) - Automatically delete empty groups/communities. ([\#6453](https://github.com/matrix-org/synapse/issues/6453)) - Add option `limit_profile_requests_to_users_who_share_rooms` to prevent requirement of a local user sharing a room with another user to query their profile information. ([\#6523](https://github.com/matrix-org/synapse/issues/6523)) - Add an `export_signing_key` script to extract the public part of signing keys when rotating them. ([\#6546](https://github.com/matrix-org/synapse/issues/6546)) - Add experimental config option to specify multiple databases. ([\#6580](https://github.com/matrix-org/synapse/issues/6580)) - Raise an error if someone tries to use the `log_file` config option. ([\#6626](https://github.com/matrix-org/synapse/issues/6626)) Bugfixes -------- - Prevent redacted events from being returned during message search. ([\#6377](https://github.com/matrix-org/synapse/issues/6377), [\#6522](https://github.com/matrix-org/synapse/issues/6522)) - Prevent error on trying to search a upgraded room when the server is not in the predecessor room. ([\#6385](https://github.com/matrix-org/synapse/issues/6385)) - Improve performance of looking up cross-signing keys. ([\#6486](https://github.com/matrix-org/synapse/issues/6486)) - Fix race which occasionally caused deleted devices to reappear. ([\#6514](https://github.com/matrix-org/synapse/issues/6514)) - Fix missing row in `device_max_stream_id` that could cause unable to decrypt errors after server restart. ([\#6555](https://github.com/matrix-org/synapse/issues/6555)) - Fix a bug which meant that we did not send systemd notifications on startup if acme was enabled. ([\#6571](https://github.com/matrix-org/synapse/issues/6571)) - Fix exception when fetching the `matrix.org:ed25519:auto` key. ([\#6625](https://github.com/matrix-org/synapse/issues/6625)) - Fix bug where a moderator upgraded a room and became an admin in the new room. ([\#6633](https://github.com/matrix-org/synapse/issues/6633)) - Fix an error which was thrown by the `PresenceHandler` `_on_shutdown` handler. ([\#6640](https://github.com/matrix-org/synapse/issues/6640)) - Fix exceptions in the synchrotron worker log when events are rejected. ([\#6645](https://github.com/matrix-org/synapse/issues/6645)) - Ensure that upgraded rooms are removed from the directory. ([\#6648](https://github.com/matrix-org/synapse/issues/6648)) - Fix a bug causing Synapse not to fetch missing events when it believes it has every event in the room. ([\#6652](https://github.com/matrix-org/synapse/issues/6652)) Improved Documentation ---------------------- - Document the Room Shutdown Admin API. ([\#6541](https://github.com/matrix-org/synapse/issues/6541)) - Reword sections of [docs/federate.md](docs/federate.md) that explained delegation at time of Synapse 1.0 transition. ([\#6601](https://github.com/matrix-org/synapse/issues/6601)) - Added the section 'Configuration' in [docs/turn-howto.md](docs/turn-howto.md). ([\#6614](https://github.com/matrix-org/synapse/issues/6614)) Deprecations and Removals ------------------------- - Remove redundant code from event authorisation implementation. ([\#6502](https://github.com/matrix-org/synapse/issues/6502)) - Remove unused, undocumented `/_matrix/content` API. ([\#6628](https://github.com/matrix-org/synapse/issues/6628)) Internal Changes ---------------- - Add *experimental* support for multiple physical databases and split out state storage to separate data store. ([\#6245](https://github.com/matrix-org/synapse/issues/6245), [\#6510](https://github.com/matrix-org/synapse/issues/6510), [\#6511](https://github.com/matrix-org/synapse/issues/6511), [\#6513](https://github.com/matrix-org/synapse/issues/6513), [\#6564](https://github.com/matrix-org/synapse/issues/6564), [\#6565](https://github.com/matrix-org/synapse/issues/6565)) - Port sections of code base to async/await. ([\#6496](https://github.com/matrix-org/synapse/issues/6496), [\#6504](https://github.com/matrix-org/synapse/issues/6504), [\#6505](https://github.com/matrix-org/synapse/issues/6505), [\#6517](https://github.com/matrix-org/synapse/issues/6517), [\#6559](https://github.com/matrix-org/synapse/issues/6559), [\#6647](https://github.com/matrix-org/synapse/issues/6647), [\#6653](https://github.com/matrix-org/synapse/issues/6653)) - Remove `SnapshotCache` in favour of `ResponseCache`. ([\#6506](https://github.com/matrix-org/synapse/issues/6506)) - Silence mypy errors for files outside those specified. ([\#6512](https://github.com/matrix-org/synapse/issues/6512)) - Clean up some logging when handling incoming events over federation. ([\#6515](https://github.com/matrix-org/synapse/issues/6515)) - Test more folders against mypy. ([\#6534](https://github.com/matrix-org/synapse/issues/6534)) - Update `mypy` to new version. ([\#6537](https://github.com/matrix-org/synapse/issues/6537)) - Adjust the sytest blacklist for worker mode. ([\#6538](https://github.com/matrix-org/synapse/issues/6538)) - Remove unused `get_pagination_rows` methods from `EventSource` classes. ([\#6557](https://github.com/matrix-org/synapse/issues/6557)) - Clean up logs from the push notifier at startup. ([\#6558](https://github.com/matrix-org/synapse/issues/6558)) - Improve diagnostics on database upgrade failure. ([\#6570](https://github.com/matrix-org/synapse/issues/6570)) - Reduce the reconnect time when worker replication fails, to make it easier to catch up. ([\#6617](https://github.com/matrix-org/synapse/issues/6617)) - Simplify http handling by removing redundant `SynapseRequestFactory`. ([\#6619](https://github.com/matrix-org/synapse/issues/6619)) - Add a workaround for synapse raising exceptions when fetching the notary's own key from the notary. ([\#6620](https://github.com/matrix-org/synapse/issues/6620)) - Automate generation of the sample log config. ([\#6627](https://github.com/matrix-org/synapse/issues/6627)) - Simplify event creation code by removing redundant queries on the `event_reference_hashes` table. ([\#6629](https://github.com/matrix-org/synapse/issues/6629)) - Fix errors when `frozen_dicts` are enabled. ([\#6642](https://github.com/matrix-org/synapse/issues/6642)) **Changelogs for older versions can be found [here](CHANGES-2019.md).** synapse-1.100.0/docs/changelogs/CHANGES-2021.md000066400000000000000000006565311455622526000204000ustar00rootroot00000000000000 Synapse 1.49.2 (2021-12-21) =========================== This release fixes a regression introduced in Synapse 1.49.0 which could cause `/sync` requests to take significantly longer. This would particularly affect "initial" syncs for users participating in a large number of rooms, and in extreme cases, could make it impossible for such users to log in on a new client. **Note:** in line with our [deprecation policy](https://matrix-org.github.io/synapse/latest/deprecation_policy.html) for platform dependencies, this will be the last release to support Python 3.6 and PostgreSQL 9.6, both of which have now reached upstream end-of-life. Synapse will require Python 3.7+ and PostgreSQL 10+. **Note:** We will also stop producing packages for Ubuntu 18.04 (Bionic Beaver) after this release, as it uses Python 3.6. Bugfixes -------- - Fix a performance regression in `/sync` handling, introduced in 1.49.0. ([\#11583](https://github.com/matrix-org/synapse/issues/11583)) Internal Changes ---------------- - Work around a build problem on Debian Buster. ([\#11625](https://github.com/matrix-org/synapse/issues/11625)) Synapse 1.49.1 (2021-12-21) =========================== Not released due to problems building the debian packages. Synapse 1.49.0 (2021-12-14) =========================== No significant changes since version 1.49.0rc1. Support for Ubuntu 21.04 ends next month on the 20th of January --------------------------------------------------------------- For users of Ubuntu 21.04 (Hirsute Hippo), please be aware that [upstream support for this version of Ubuntu will end next month][Ubuntu2104EOL]. We will stop producing packages for Ubuntu 21.04 after upstream support ends. [Ubuntu2104EOL]: https://lists.ubuntu.com/archives/ubuntu-announce/2021-December/000275.html The wiki has been migrated to the documentation website ------------------------------------------------------- We've decided to move the existing, somewhat stagnant pages from the GitHub wiki to the [documentation website](https://matrix-org.github.io/synapse/latest/). This was done for two reasons. The first was to ensure that changes are checked by multiple authors before being committed (everyone makes mistakes!) and the second was visibility of the documentation. Not everyone knows that Synapse has some very useful information hidden away in its GitHub wiki pages. Bringing them to the documentation website should help with visibility, as well as keep all Synapse documentation in one, easily-searchable location. Note that contributions to the documentation website happen through [GitHub pull requests](https://github.com/matrix-org/synapse/pulls). Please visit [#synapse-dev:matrix.org](https://matrix.to/#/#synapse-dev:matrix.org) if you need help with the process! Synapse 1.49.0rc1 (2021-12-07) ============================== Features -------- - Add [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) experimental client and federation API endpoints to get the closest event to a given timestamp. ([\#9445](https://github.com/matrix-org/synapse/issues/9445)) - Include bundled relation aggregations during a limited `/sync` request and `/relations` request, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11284](https://github.com/matrix-org/synapse/issues/11284), [\#11478](https://github.com/matrix-org/synapse/issues/11478)) - Add plugin support for controlling database background updates. ([\#11306](https://github.com/matrix-org/synapse/issues/11306), [\#11475](https://github.com/matrix-org/synapse/issues/11475), [\#11479](https://github.com/matrix-org/synapse/issues/11479)) - Support the stable API endpoints for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946): the room `/hierarchy` endpoint. ([\#11329](https://github.com/matrix-org/synapse/issues/11329)) - Add admin API to get some information about federation status with remote servers. ([\#11407](https://github.com/matrix-org/synapse/issues/11407)) - Support expiry of refresh tokens and expiry of the overall session when refresh tokens are in use. ([\#11425](https://github.com/matrix-org/synapse/issues/11425)) - Stabilise support for [MSC2918](https://github.com/matrix-org/matrix-doc/blob/main/proposals/2918-refreshtokens.md#msc2918-refresh-tokens) refresh tokens as they have now been merged into the Matrix specification. ([\#11435](https://github.com/matrix-org/synapse/issues/11435), [\#11522](https://github.com/matrix-org/synapse/issues/11522)) - Update [MSC2918 refresh token](https://github.com/matrix-org/matrix-doc/blob/main/proposals/2918-refreshtokens.md#msc2918-refresh-tokens) support to confirm with the latest revision: accept the `refresh_tokens` parameter in the request body rather than in the URL parameters. ([\#11430](https://github.com/matrix-org/synapse/issues/11430)) - Support configuring the lifetime of non-refreshable access tokens separately to refreshable access tokens. ([\#11445](https://github.com/matrix-org/synapse/issues/11445)) - Expose `synapse_homeserver` and `synapse_worker` commands as entry points to run Synapse's main process and worker processes, respectively. Contributed by @Ma27. ([\#11449](https://github.com/matrix-org/synapse/issues/11449)) - `synctl stop` will now wait for Synapse to exit before returning. ([\#11459](https://github.com/matrix-org/synapse/issues/11459), [\#11490](https://github.com/matrix-org/synapse/issues/11490)) - Extend the "delete room" admin api to work correctly on rooms which have previously been partially deleted. ([\#11523](https://github.com/matrix-org/synapse/issues/11523)) - Add support for the `/_matrix/client/v3/login/sso/redirect/{idpId}` API from Matrix v1.1. This endpoint was overlooked when support for v3 endpoints was added in Synapse 1.48.0rc1. ([\#11451](https://github.com/matrix-org/synapse/issues/11451)) Bugfixes -------- - Fix using [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) batch sending in combination with event persistence workers. Contributed by @tulir at Beeper. ([\#11220](https://github.com/matrix-org/synapse/issues/11220)) - Fix a long-standing bug where all requests that read events from the database could get stuck as a result of losing the database connection, properly this time. Also fix a race condition introduced in the previous insufficient fix in Synapse 1.47.0. ([\#11376](https://github.com/matrix-org/synapse/issues/11376)) - The `/send_join` response now includes the stable `event` field instead of the unstable field from [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083). ([\#11413](https://github.com/matrix-org/synapse/issues/11413)) - Fix a bug introduced in Synapse 1.47.0 where `send_join` could fail due to an outdated `ijson` version. ([\#11439](https://github.com/matrix-org/synapse/issues/11439), [\#11441](https://github.com/matrix-org/synapse/issues/11441), [\#11460](https://github.com/matrix-org/synapse/issues/11460)) - Fix a bug introduced in Synapse 1.36.0 which could cause problems fetching event-signing keys from trusted key servers. ([\#11440](https://github.com/matrix-org/synapse/issues/11440)) - Fix a bug introduced in Synapse 1.47.1 where the media repository would fail to work if the media store path contained any symbolic links. ([\#11446](https://github.com/matrix-org/synapse/issues/11446)) - Fix an `LruCache` corruption bug, introduced in Synapse 1.38.0, that would cause certain requests to fail until the next Synapse restart. ([\#11454](https://github.com/matrix-org/synapse/issues/11454)) - Fix a long-standing bug where invites from ignored users were included in incremental syncs. ([\#11511](https://github.com/matrix-org/synapse/issues/11511)) - Fix a regression in Synapse 1.48.0 where presence workers would not clear their presence updates over replication on shutdown. ([\#11518](https://github.com/matrix-org/synapse/issues/11518)) - Fix a regression in Synapse 1.48.0 where the module API's `looping_background_call` method would spam errors to the logs when given a non-async function. ([\#11524](https://github.com/matrix-org/synapse/issues/11524)) Updates to the Docker image --------------------------- - Update `Dockerfile-workers` to healthcheck all workers in the container. ([\#11429](https://github.com/matrix-org/synapse/issues/11429)) Improved Documentation ---------------------- - Update the media repository documentation. ([\#11415](https://github.com/matrix-org/synapse/issues/11415)) - Update section about backward extremities in the room DAG concepts doc to correct the misconception about backward extremities indicating whether we have fetched an events' `prev_events`. ([\#11469](https://github.com/matrix-org/synapse/issues/11469)) Internal Changes ---------------- - Add `Final` annotation to string constants in `synapse.api.constants` so that they get typed as `Literal`s. ([\#11356](https://github.com/matrix-org/synapse/issues/11356)) - Add a check to ensure that users cannot start the Synapse master process when `worker_app` is set. ([\#11416](https://github.com/matrix-org/synapse/issues/11416)) - Add a note about postgres memory management and hugepages to postgres doc. ([\#11467](https://github.com/matrix-org/synapse/issues/11467)) - Add missing type hints to `synapse.config` module. ([\#11465](https://github.com/matrix-org/synapse/issues/11465)) - Add missing type hints to `synapse.federation`. ([\#11483](https://github.com/matrix-org/synapse/issues/11483)) - Add type annotations to `tests.storage.test_appservice`. ([\#11488](https://github.com/matrix-org/synapse/issues/11488), [\#11492](https://github.com/matrix-org/synapse/issues/11492)) - Add type annotations to some of the configuration surrounding refresh tokens. ([\#11428](https://github.com/matrix-org/synapse/issues/11428)) - Add type hints to `synapse/tests/rest/admin`. ([\#11501](https://github.com/matrix-org/synapse/issues/11501)) - Add type hints to storage classes. ([\#11411](https://github.com/matrix-org/synapse/issues/11411)) - Add wiki pages to documentation website. ([\#11402](https://github.com/matrix-org/synapse/issues/11402)) - Clean up `tests.storage.test_main` to remove use of legacy code. ([\#11493](https://github.com/matrix-org/synapse/issues/11493)) - Clean up `tests.test_visibility` to remove legacy code. ([\#11495](https://github.com/matrix-org/synapse/issues/11495)) - Convert status codes to `HTTPStatus` in `synapse.rest.admin`. ([\#11452](https://github.com/matrix-org/synapse/issues/11452), [\#11455](https://github.com/matrix-org/synapse/issues/11455)) - Extend the `scripts-dev/sign_json` script to support signing events. ([\#11486](https://github.com/matrix-org/synapse/issues/11486)) - Improve internal types in push code. ([\#11409](https://github.com/matrix-org/synapse/issues/11409)) - Improve type annotations in `synapse.module_api`. ([\#11029](https://github.com/matrix-org/synapse/issues/11029)) - Improve type hints for `LruCache`. ([\#11453](https://github.com/matrix-org/synapse/issues/11453)) - Preparation for database schema simplifications: disambiguate queries on `state_key`. ([\#11497](https://github.com/matrix-org/synapse/issues/11497)) - Refactor `backfilled` into specific behavior function arguments (`_persist_events_and_state_updates` and downstream calls). ([\#11417](https://github.com/matrix-org/synapse/issues/11417)) - Refactor `get_version_string` to fix-up types and duplicated code. ([\#11468](https://github.com/matrix-org/synapse/issues/11468)) - Refactor various parts of the `/sync` handler. ([\#11494](https://github.com/matrix-org/synapse/issues/11494), [\#11515](https://github.com/matrix-org/synapse/issues/11515)) - Remove unnecessary `json.dumps` from `tests.rest.admin`. ([\#11461](https://github.com/matrix-org/synapse/issues/11461)) - Save the OpenID Connect session ID on login. ([\#11482](https://github.com/matrix-org/synapse/issues/11482)) - Update and clean up recently ported documentation pages. ([\#11466](https://github.com/matrix-org/synapse/issues/11466)) Synapse 1.48.0 (2021-11-30) =========================== This release removes support for the long-deprecated `trust_identity_server_for_password_resets` configuration flag. This release also fixes some performance issues with some background database updates introduced in Synapse 1.47.0. No significant changes since 1.48.0rc1. Synapse 1.48.0rc1 (2021-11-25) ============================== Features -------- - Experimental support for the thread relation defined in [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11161](https://github.com/matrix-org/synapse/issues/11161)) - Support filtering by relation senders & types per [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11236](https://github.com/matrix-org/synapse/issues/11236)) - Add support for the `/_matrix/client/v3` and `/_matrix/media/v3` APIs from Matrix v1.1. ([\#11318](https://github.com/matrix-org/synapse/issues/11318), [\#11371](https://github.com/matrix-org/synapse/issues/11371)) - Support the stable version of [MSC2778](https://github.com/matrix-org/matrix-doc/pull/2778): the `m.login.application_service` login type. Contributed by @tulir. ([\#11335](https://github.com/matrix-org/synapse/issues/11335)) - Add a new version of delete room admin API `DELETE /_synapse/admin/v2/rooms/` to run it in the background. Contributed by @dklimpel. ([\#11223](https://github.com/matrix-org/synapse/issues/11223)) - Allow the admin [Delete Room API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api) to block a room without the need to join it. ([\#11228](https://github.com/matrix-org/synapse/issues/11228)) - Add an admin API to un-shadow-ban a user. ([\#11347](https://github.com/matrix-org/synapse/issues/11347)) - Add an admin API to run background database schema updates. ([\#11352](https://github.com/matrix-org/synapse/issues/11352)) - Add an admin API for blocking a room. ([\#11324](https://github.com/matrix-org/synapse/issues/11324)) - Update the JWT login type to support custom a `sub` claim. ([\#11361](https://github.com/matrix-org/synapse/issues/11361)) - Store and allow querying of arbitrary event relations. ([\#11391](https://github.com/matrix-org/synapse/issues/11391)) Bugfixes -------- - Fix a long-standing bug wherein display names or avatar URLs containing null bytes cause an internal server error when stored in the DB. ([\#11230](https://github.com/matrix-org/synapse/issues/11230)) - Prevent [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical state events from being pushed to an application service via `/transactions`. ([\#11265](https://github.com/matrix-org/synapse/issues/11265)) - Fix a long-standing bug where uploading extremely thin images (e.g. 1000x1) would fail. Contributed by @Neeeflix. ([\#11288](https://github.com/matrix-org/synapse/issues/11288)) - Fix a bug, introduced in Synapse 1.46.0, which caused the `check_3pid_auth` and `on_logged_out` callbacks in legacy password authentication provider modules to not be registered. Modules using the generic module interface were not affected. ([\#11340](https://github.com/matrix-org/synapse/issues/11340)) - Fix a bug introduced in 1.41.0 where space hierarchy responses would be incorrectly reused if multiple users were to make the same request at the same time. ([\#11355](https://github.com/matrix-org/synapse/issues/11355)) - Fix a bug introduced in 1.45.0 where the `read_templates` method of the module API would error. ([\#11377](https://github.com/matrix-org/synapse/issues/11377)) - Fix an issue introduced in 1.47.0 which prevented servers re-joining rooms they had previously left, if their signing keys were replaced. ([\#11379](https://github.com/matrix-org/synapse/issues/11379)) - Fix a bug introduced in 1.13.0 where creating and publishing a room could cause errors if `room_list_publication_rules` is configured. ([\#11392](https://github.com/matrix-org/synapse/issues/11392)) - Improve performance of various background database updates. ([\#11421](https://github.com/matrix-org/synapse/issues/11421), [\#11422](https://github.com/matrix-org/synapse/issues/11422)) Improved Documentation ---------------------- - Suggest users of the Debian packages add configuration to `/etc/matrix-synapse/conf.d/` to prevent, upon upgrade, being asked to choose between their configuration and the maintainer's. ([\#11281](https://github.com/matrix-org/synapse/issues/11281)) - Fix typos in the documentation for the `username_available` admin API. Contributed by Stanislav Motylkov. ([\#11286](https://github.com/matrix-org/synapse/issues/11286)) - Add Single Sign-On, SAML and CAS pages to the documentation. ([\#11298](https://github.com/matrix-org/synapse/issues/11298)) - Change the word 'Home server' as one word 'homeserver' in documentation. ([\#11320](https://github.com/matrix-org/synapse/issues/11320)) - Fix missing quotes for wildcard domains in `federation_certificate_verification_whitelist`. ([\#11381](https://github.com/matrix-org/synapse/issues/11381)) Deprecations and Removals ------------------------- - Remove deprecated `trust_identity_server_for_password_resets` configuration flag. ([\#11333](https://github.com/matrix-org/synapse/issues/11333), [\#11395](https://github.com/matrix-org/synapse/issues/11395)) Internal Changes ---------------- - Add type annotations to `synapse.metrics`. ([\#10847](https://github.com/matrix-org/synapse/issues/10847)) - Split out federated PDU retrieval function into a non-cached version. ([\#11242](https://github.com/matrix-org/synapse/issues/11242)) - Clean up code relating to to-device messages and sending ephemeral events to application services. ([\#11247](https://github.com/matrix-org/synapse/issues/11247)) - Fix a small typo in the error response when a relation type other than 'm.annotation' is passed to `GET /rooms/{room_id}/aggregations/{event_id}`. ([\#11278](https://github.com/matrix-org/synapse/issues/11278)) - Drop unused database tables `room_stats_historical` and `user_stats_historical`. ([\#11280](https://github.com/matrix-org/synapse/issues/11280)) - Require all files in synapse/ and tests/ to pass mypy unless specifically excluded. ([\#11282](https://github.com/matrix-org/synapse/issues/11282), [\#11285](https://github.com/matrix-org/synapse/issues/11285), [\#11359](https://github.com/matrix-org/synapse/issues/11359)) - Add missing type hints to `synapse.app`. ([\#11287](https://github.com/matrix-org/synapse/issues/11287)) - Remove unused parameters on `FederationEventHandler._check_event_auth`. ([\#11292](https://github.com/matrix-org/synapse/issues/11292)) - Add type hints to `synapse._scripts`. ([\#11297](https://github.com/matrix-org/synapse/issues/11297)) - Fix an issue which prevented the `remove_deleted_devices_from_device_inbox` background database schema update from running when updating from a recent Synapse version. ([\#11303](https://github.com/matrix-org/synapse/issues/11303)) - Add type hints to storage classes. ([\#11307](https://github.com/matrix-org/synapse/issues/11307), [\#11310](https://github.com/matrix-org/synapse/issues/11310), [\#11311](https://github.com/matrix-org/synapse/issues/11311), [\#11312](https://github.com/matrix-org/synapse/issues/11312), [\#11313](https://github.com/matrix-org/synapse/issues/11313), [\#11314](https://github.com/matrix-org/synapse/issues/11314), [\#11316](https://github.com/matrix-org/synapse/issues/11316), [\#11322](https://github.com/matrix-org/synapse/issues/11322), [\#11332](https://github.com/matrix-org/synapse/issues/11332), [\#11339](https://github.com/matrix-org/synapse/issues/11339), [\#11342](https://github.com/matrix-org/synapse/issues/11342)) - Add type hints to `synapse.util`. ([\#11321](https://github.com/matrix-org/synapse/issues/11321), [\#11328](https://github.com/matrix-org/synapse/issues/11328)) - Improve type annotations in Synapse's test suite. ([\#11323](https://github.com/matrix-org/synapse/issues/11323), [\#11330](https://github.com/matrix-org/synapse/issues/11330)) - Test that room alias deletion works as intended. ([\#11327](https://github.com/matrix-org/synapse/issues/11327)) - Add type annotations for some methods and properties in the module API. ([\#11341](https://github.com/matrix-org/synapse/issues/11341)) - Fix running `scripts-dev/complement.sh`, which was broken in v1.47.0rc1. ([\#11368](https://github.com/matrix-org/synapse/issues/11368)) - Rename internal functions for token generation to better reflect what they do. ([\#11369](https://github.com/matrix-org/synapse/issues/11369), [\#11370](https://github.com/matrix-org/synapse/issues/11370)) - Add type hints to configuration classes. ([\#11377](https://github.com/matrix-org/synapse/issues/11377)) - Publish a `develop` image to Docker Hub. ([\#11380](https://github.com/matrix-org/synapse/issues/11380)) - Keep fallback key marked as used if it's re-uploaded. ([\#11382](https://github.com/matrix-org/synapse/issues/11382)) - Use `auto_attribs` on the `attrs` class `RefreshTokenLookupResult`. ([\#11386](https://github.com/matrix-org/synapse/issues/11386)) - Rename unstable `access_token_lifetime` configuration option to `refreshable_access_token_lifetime` to make it clear it only concerns refreshable access tokens. ([\#11388](https://github.com/matrix-org/synapse/issues/11388)) - Do not run the broken MSC2716 tests when running `scripts-dev/complement.sh`. ([\#11389](https://github.com/matrix-org/synapse/issues/11389)) - Remove dead code from supporting ACME. ([\#11393](https://github.com/matrix-org/synapse/issues/11393)) - Refactor including the bundled relations when serializing an event. ([\#11408](https://github.com/matrix-org/synapse/issues/11408)) Synapse 1.47.1 (2021-11-23) =========================== This release fixes a security issue in the media store, affecting all prior releases of Synapse. Server administrators are encouraged to update Synapse as soon as possible. We are not aware of these vulnerabilities being exploited in the wild. Server administrators who are unable to update Synapse may use the workarounds described in the linked GitHub Security Advisory below. Security advisory ----------------- The following issue is fixed in 1.47.1. - **[GHSA-3hfw-x7gx-437c](https://github.com/matrix-org/synapse/security/advisories/GHSA-3hfw-x7gx-437c) / [CVE-2021-41281](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41281): Path traversal when downloading remote media.** Synapse instances with the media repository enabled can be tricked into downloading a file from a remote server into an arbitrary directory, potentially outside the media store directory. The last two directories and file name of the path are chosen randomly by Synapse and cannot be controlled by an attacker, which limits the impact. Homeservers with the media repository disabled are unaffected. Homeservers configured with a federation whitelist are also unaffected. Fixed by [91f2bd090](https://github.com/matrix-org/synapse/commit/91f2bd090). Synapse 1.47.0 (2021-11-17) =========================== No significant changes since 1.47.0rc3. Synapse 1.47.0rc3 (2021-11-16) ============================== Bugfixes -------- - Fix a bug introduced in 1.47.0rc1 which caused worker processes to not halt startup in the presence of outstanding database migrations. ([\#11346](https://github.com/matrix-org/synapse/issues/11346)) - Fix a bug introduced in 1.47.0rc1 which prevented the 'remove deleted devices from `device_inbox` column' background process from running when updating from a recent Synapse version. ([\#11303](https://github.com/matrix-org/synapse/issues/11303), [\#11353](https://github.com/matrix-org/synapse/issues/11353)) Synapse 1.47.0rc2 (2021-11-10) ============================== This fixes an issue with publishing the Debian packages for 1.47.0rc1. It is otherwise identical to 1.47.0rc1. Synapse 1.47.0rc1 (2021-11-09) ============================== Deprecations and Removals ------------------------- - The `user_may_create_room_with_invites` module callback is now deprecated. Please refer to the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1470) for more information. ([\#11206](https://github.com/matrix-org/synapse/issues/11206)) - Remove deprecated admin API to delete rooms (`POST /_synapse/admin/v1/rooms//delete`). ([\#11213](https://github.com/matrix-org/synapse/issues/11213)) Features -------- - Advertise support for Client-Server API r0.6.1. ([\#11097](https://github.com/matrix-org/synapse/issues/11097)) - Add search by room ID and room alias to the List Room admin API. ([\#11099](https://github.com/matrix-org/synapse/issues/11099)) - Add an `on_new_event` third-party rules callback to allow Synapse modules to act after an event has been sent into a room. ([\#11126](https://github.com/matrix-org/synapse/issues/11126)) - Add a module API method to update a user's membership in a room. ([\#11147](https://github.com/matrix-org/synapse/issues/11147)) - Add metrics for thread pool usage. ([\#11178](https://github.com/matrix-org/synapse/issues/11178)) - Support the stable room type field for [MSC3288](https://github.com/matrix-org/matrix-doc/pull/3288). ([\#11187](https://github.com/matrix-org/synapse/issues/11187)) - Add a module API method to retrieve the current state of a room. ([\#11204](https://github.com/matrix-org/synapse/issues/11204)) - Calculate a default value for `public_baseurl` based on `server_name`. ([\#11210](https://github.com/matrix-org/synapse/issues/11210)) - Add support for serving `/.well-known/matrix/server` files, to redirect federation traffic to port 443. ([\#11211](https://github.com/matrix-org/synapse/issues/11211)) - Add admin APIs to pause, start and check the status of background updates. ([\#11263](https://github.com/matrix-org/synapse/issues/11263)) Bugfixes -------- - Fix a long-standing bug which allowed hidden devices to receive to-device messages, resulting in unnecessary database bloat. ([\#10097](https://github.com/matrix-org/synapse/issues/10097)) - Fix a long-standing bug where messages in the `device_inbox` table for deleted devices would persist indefinitely. Contributed by @dklimpel and @JohannesKleine. ([\#10969](https://github.com/matrix-org/synapse/issues/10969), [\#11212](https://github.com/matrix-org/synapse/issues/11212)) - Do not accept events if a third-party rule `check_event_allowed` callback raises an exception. ([\#11033](https://github.com/matrix-org/synapse/issues/11033)) - Fix long-standing bug where verification requests could fail in certain cases if a federation whitelist was in place but did not include your own homeserver. ([\#11129](https://github.com/matrix-org/synapse/issues/11129)) - Allow an empty list of `state_events_at_start` to be sent when using the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint and the author of the historical messages is already part of the current room state at the given `?prev_event_id`. ([\#11188](https://github.com/matrix-org/synapse/issues/11188)) - Fix a bug introduced in Synapse 1.45.0 which prevented the `synapse_review_recent_signups` script from running. Contributed by @samuel-p. ([\#11191](https://github.com/matrix-org/synapse/issues/11191)) - Delete `to_device` messages for hidden devices that will never be read, reducing database size. ([\#11199](https://github.com/matrix-org/synapse/issues/11199)) - Fix a long-standing bug wherein a missing `Content-Type` header when downloading remote media would cause Synapse to throw an error. ([\#11200](https://github.com/matrix-org/synapse/issues/11200)) - Fix a long-standing bug which could result in serialization errors and potentially duplicate transaction data when sending ephemeral events to application services. Contributed by @Fizzadar at Beeper. ([\#11207](https://github.com/matrix-org/synapse/issues/11207)) - Fix a bug introduced in Synapse 1.35.0 which made it impossible to join rooms that return a `send_join` response containing floats. ([\#11217](https://github.com/matrix-org/synapse/issues/11217)) - Fix long-standing bug where cross signing keys were not included in the response to `/r0/keys/query` the first time a remote user was queried. ([\#11234](https://github.com/matrix-org/synapse/issues/11234)) - Fix a long-standing bug where all requests that read events from the database could get stuck as a result of losing the database connection. ([\#11240](https://github.com/matrix-org/synapse/issues/11240)) - Fix a bug preventing Synapse from being rolled back to an earlier version when using workers. ([\#11255](https://github.com/matrix-org/synapse/issues/11255), [\#11276](https://github.com/matrix-org/synapse/issues/11276)) - Fix a bug introduced in Synapse 1.37.1 which caused a remote event being processed by a worker to not get processed on restart if the worker was killed. ([\#11262](https://github.com/matrix-org/synapse/issues/11262)) - Only allow old Element/Riot Android clients to send read receipts without a request body. All other clients must include a request body as required by the specification. Contributed by @rogersheu. ([\#11157](https://github.com/matrix-org/synapse/issues/11157)) Updates to the Docker image --------------------------- - Avoid changing user ID when started as a non-root user, and no explicit `UID` is set. ([\#11209](https://github.com/matrix-org/synapse/issues/11209)) Improved Documentation ---------------------- - Improve example HAProxy config in the docs to properly handle HTTP `Host` headers with port information. This is required for federation over port 443 to work correctly. ([\#11128](https://github.com/matrix-org/synapse/issues/11128)) - Add documentation for using Authentik as an OpenID Connect Identity Provider. Contributed by @samip5. ([\#11151](https://github.com/matrix-org/synapse/issues/11151)) - Clarify lack of support for Windows. ([\#11198](https://github.com/matrix-org/synapse/issues/11198)) - Improve code formatting and fix a few typos in docs. Contributed by @sumnerevans at Beeper. ([\#11221](https://github.com/matrix-org/synapse/issues/11221)) - Add documentation for using LemonLDAP as an OpenID Connect Identity Provider. Contributed by @l00ptr. ([\#11257](https://github.com/matrix-org/synapse/issues/11257)) Internal Changes ---------------- - Add type annotations for the `log_function` decorator. ([\#10943](https://github.com/matrix-org/synapse/issues/10943)) - Add type hints to `synapse.events`. ([\#11098](https://github.com/matrix-org/synapse/issues/11098)) - Remove and document unnecessary `RoomStreamToken` checks in application service ephemeral event code. ([\#11137](https://github.com/matrix-org/synapse/issues/11137)) - Add type hints so that `synapse.http` passes `mypy` checks. ([\#11164](https://github.com/matrix-org/synapse/issues/11164)) - Update scripts to pass Shellcheck lints. ([\#11166](https://github.com/matrix-org/synapse/issues/11166)) - Add knock information in admin export. Contributed by Rafael Gonçalves. ([\#11171](https://github.com/matrix-org/synapse/issues/11171)) - Add tests to check that `ClientIpStore.get_last_client_ip_by_device` and `get_user_ip_and_agents` combine database and in-memory data correctly. ([\#11179](https://github.com/matrix-org/synapse/issues/11179)) - Refactor `Filter` to check different fields depending on the data type. ([\#11194](https://github.com/matrix-org/synapse/issues/11194)) - Improve type hints for the relations datastore. ([\#11205](https://github.com/matrix-org/synapse/issues/11205)) - Replace outdated links in the pull request checklist with links to the rendered documentation. ([\#11225](https://github.com/matrix-org/synapse/issues/11225)) - Fix a bug in unit test `test_block_room_and_not_purge`. ([\#11226](https://github.com/matrix-org/synapse/issues/11226)) - In `ObservableDeferred`, run observers in the order they were registered. ([\#11229](https://github.com/matrix-org/synapse/issues/11229)) - Minor speed up to start up times and getting updates for groups by adding missing index to `local_group_updates.stream_id`. ([\#11231](https://github.com/matrix-org/synapse/issues/11231)) - Add `twine` and `towncrier` as dev dependencies, as they're used by the release script. ([\#11233](https://github.com/matrix-org/synapse/issues/11233)) - Allow `stream_writers.typing` config to be a list of one worker. ([\#11237](https://github.com/matrix-org/synapse/issues/11237)) - Remove debugging statement in tests. ([\#11239](https://github.com/matrix-org/synapse/issues/11239)) - Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical messages backfilling in random order on remote homeservers. ([\#11244](https://github.com/matrix-org/synapse/issues/11244)) - Add an additional test for the `cachedList` method decorator. ([\#11246](https://github.com/matrix-org/synapse/issues/11246)) - Make minor correction to the type of `auth_checkers` callbacks. ([\#11253](https://github.com/matrix-org/synapse/issues/11253)) - Clean up trivial aspects of the Debian package build tooling. ([\#11269](https://github.com/matrix-org/synapse/issues/11269), [\#11273](https://github.com/matrix-org/synapse/issues/11273)) - Blacklist new SyTest that checks that key uploads are valid pending the validation being implemented in Synapse. ([\#11270](https://github.com/matrix-org/synapse/issues/11270)) Synapse 1.46.0 (2021-11-02) =========================== The cause of the [performance regression affecting Synapse 1.44](https://github.com/matrix-org/synapse/issues/11049) has been identified and fixed. ([\#11177](https://github.com/matrix-org/synapse/issues/11177)) Bugfixes -------- - Fix a bug introduced in v1.46.0rc1 where URL previews of some XML documents would fail. ([\#11196](https://github.com/matrix-org/synapse/issues/11196)) Synapse 1.46.0rc1 (2021-10-27) ============================== Features -------- - Add support for Ubuntu 21.10 "Impish Indri". ([\#11024](https://github.com/matrix-org/synapse/issues/11024)) - Port the Password Auth Providers module interface to the new generic interface. ([\#10548](https://github.com/matrix-org/synapse/issues/10548), [\#11180](https://github.com/matrix-org/synapse/issues/11180)) - Experimental support for the thread relation defined in [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11088](https://github.com/matrix-org/synapse/issues/11088), [\#11181](https://github.com/matrix-org/synapse/issues/11181), [\#11192](https://github.com/matrix-org/synapse/issues/11192)) - Users admin API can now also modify user type in addition to allowing it to be set on user creation. ([\#11174](https://github.com/matrix-org/synapse/issues/11174)) Bugfixes -------- - Newly-created public rooms are now only assigned an alias if the room's creation has not been blocked by permission settings. Contributed by @AndrewFerr. ([\#10930](https://github.com/matrix-org/synapse/issues/10930)) - Fix a long-standing bug which meant that events received over federation were sometimes incorrectly accepted into the room state. ([\#11001](https://github.com/matrix-org/synapse/issues/11001), [\#11009](https://github.com/matrix-org/synapse/issues/11009), [\#11012](https://github.com/matrix-org/synapse/issues/11012)) - Fix 500 error on `/messages` when the server accumulates more than 5 backwards extremities at a given depth for a room. ([\#11027](https://github.com/matrix-org/synapse/issues/11027)) - Fix a bug where setting a user's `external_id` via the admin API returns 500 and deletes user's existing external mappings if that external ID is already mapped. ([\#11051](https://github.com/matrix-org/synapse/issues/11051)) - Fix a long-standing bug where users excluded from the user directory were added into the directory if they belonged to a room which became public or private. ([\#11075](https://github.com/matrix-org/synapse/issues/11075)) - Fix a long-standing bug when attempting to preview URLs which are in the `windows-1252` character encoding. ([\#11077](https://github.com/matrix-org/synapse/issues/11077), [\#11089](https://github.com/matrix-org/synapse/issues/11089)) - Fix broken export-data admin command and add test script checking the command to CI. ([\#11078](https://github.com/matrix-org/synapse/issues/11078)) - Show an error when timestamp in seconds is provided to the `/purge_media_cache` Admin API. ([\#11101](https://github.com/matrix-org/synapse/issues/11101)) - Fix local users who left all their rooms being removed from the user directory, even if the `search_all_users` config option was enabled. ([\#11103](https://github.com/matrix-org/synapse/issues/11103)) - Fix a bug which caused the module API's `get_user_ip_and_agents` function to always fail on workers. `get_user_ip_and_agents` was introduced in 1.44.0 and did not function correctly on worker processes at the time. ([\#11112](https://github.com/matrix-org/synapse/issues/11112)) - Identity server connection is no longer ignoring `ip_range_whitelist`. ([\#11120](https://github.com/matrix-org/synapse/issues/11120)) - Fix a bug introduced in Synapse 1.45.0 breaking the configuration file parsing script. ([\#11145](https://github.com/matrix-org/synapse/issues/11145)) - Fix a performance regression introduced in 1.44.0 which could cause client requests to time out when making large numbers of outbound requests. ([\#11177](https://github.com/matrix-org/synapse/issues/11177), [\#11190](https://github.com/matrix-org/synapse/issues/11190)) - Resolve and share `state_groups` for all [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical events in batch. ([\#10975](https://github.com/matrix-org/synapse/issues/10975)) Improved Documentation ---------------------- - Fix broken links relating to module API deprecation in the upgrade notes. ([\#11069](https://github.com/matrix-org/synapse/issues/11069)) - Add more information about what happens when a user is deactivated. ([\#11083](https://github.com/matrix-org/synapse/issues/11083)) - Clarify the the sample log config can be copied from the documentation without issue. ([\#11092](https://github.com/matrix-org/synapse/issues/11092)) - Update the admin API documentation with an updated list of the characters allowed in registration tokens. ([\#11093](https://github.com/matrix-org/synapse/issues/11093)) - Document Synapse's behaviour when dealing with multiple modules registering the same callbacks and/or handlers for the same HTTP endpoints. ([\#11096](https://github.com/matrix-org/synapse/issues/11096)) - Fix instances of `[example]{.title-ref}` in the upgrade documentation as a result of prior RST to Markdown conversion. ([\#11118](https://github.com/matrix-org/synapse/issues/11118)) - Document the version of Synapse each module callback was introduced in. ([\#11132](https://github.com/matrix-org/synapse/issues/11132)) - Document the version of Synapse that introduced each module API method. ([\#11183](https://github.com/matrix-org/synapse/issues/11183)) Internal Changes ---------------- - Fix spurious warnings about losing the logging context on the `ReplicationCommandHandler` when losing the replication connection. ([\#10984](https://github.com/matrix-org/synapse/issues/10984)) - Include rejected status when we log events. ([\#11008](https://github.com/matrix-org/synapse/issues/11008)) - Add some extra logging to the event persistence code. ([\#11014](https://github.com/matrix-org/synapse/issues/11014)) - Rearrange the internal workings of the incremental user directory updates. ([\#11035](https://github.com/matrix-org/synapse/issues/11035)) - Fix a long-standing bug where users excluded from the directory could still be added to the `users_who_share_private_rooms` table after a regular user joins a private room. ([\#11143](https://github.com/matrix-org/synapse/issues/11143)) - Add and improve type hints. ([\#10972](https://github.com/matrix-org/synapse/issues/10972), [\#11055](https://github.com/matrix-org/synapse/issues/11055), [\#11066](https://github.com/matrix-org/synapse/issues/11066), [\#11076](https://github.com/matrix-org/synapse/issues/11076), [\#11095](https://github.com/matrix-org/synapse/issues/11095), [\#11109](https://github.com/matrix-org/synapse/issues/11109), [\#11121](https://github.com/matrix-org/synapse/issues/11121), [\#11146](https://github.com/matrix-org/synapse/issues/11146)) - Mark the Synapse package as containing type annotations and fix export declarations so that Synapse pluggable modules may be type checked against Synapse. ([\#11054](https://github.com/matrix-org/synapse/issues/11054)) - Remove dead code from `MediaFilePaths`. ([\#11056](https://github.com/matrix-org/synapse/issues/11056)) - Be more lenient when parsing oEmbed response versions. ([\#11065](https://github.com/matrix-org/synapse/issues/11065)) - Create a separate module for the retention configuration. ([\#11070](https://github.com/matrix-org/synapse/issues/11070)) - Clean up some of the federation event authentication code for clarity. ([\#11115](https://github.com/matrix-org/synapse/issues/11115), [\#11116](https://github.com/matrix-org/synapse/issues/11116), [\#11122](https://github.com/matrix-org/synapse/issues/11122)) - Add docstrings and comments to the application service ephemeral event sending code. ([\#11138](https://github.com/matrix-org/synapse/issues/11138)) - Update the `sign_json` script to support inline configuration of the signing key. ([\#11139](https://github.com/matrix-org/synapse/issues/11139)) - Fix broken link in the docker image README. ([\#11144](https://github.com/matrix-org/synapse/issues/11144)) - Always dump logs from unit tests during CI runs. ([\#11068](https://github.com/matrix-org/synapse/issues/11068)) - Add tests for `MediaFilePaths` class. ([\#11057](https://github.com/matrix-org/synapse/issues/11057)) - Simplify the user admin API tests. ([\#11048](https://github.com/matrix-org/synapse/issues/11048)) - Add a test for the workaround introduced in [\#11042](https://github.com/matrix-org/synapse/pull/11042) concerning the behaviour of third-party rule modules and `SynapseError`s. ([\#11071](https://github.com/matrix-org/synapse/issues/11071)) Synapse 1.45.1 (2021-10-20) =========================== Bugfixes -------- - Revert change to counting of deactivated users towards the monthly active users limit, introduced in 1.45.0rc1. ([\#11127](https://github.com/matrix-org/synapse/issues/11127)) Synapse 1.45.0 (2021-10-19) =========================== No functional changes since Synapse 1.45.0rc2. Known Issues ------------ - A suspected [performance regression](https://github.com/matrix-org/synapse/issues/11049) which was first reported after the release of 1.44.0 remains unresolved. We have not been able to identify a probable cause. Affected users report that setting up a federation sender worker appears to alleviate symptoms of the regression. Improved Documentation ---------------------- - Reword changelog to clarify concerns about a suspected performance regression in 1.44.0. ([\#11117](https://github.com/matrix-org/synapse/issues/11117)) Synapse 1.45.0rc2 (2021-10-14) ============================== This release candidate [fixes](https://github.com/matrix-org/synapse/issues/11053) a user directory [bug](https://github.com/matrix-org/synapse/issues/11025) present in 1.45.0rc1. Known Issues ------------ - A suspected [performance regression](https://github.com/matrix-org/synapse/issues/11049) which was first reported after the release of 1.44.0 remains unresolved. We have not been able to identify a probable cause. Affected users report that setting up a federation sender worker appears to alleviate symptoms of the regression. Bugfixes -------- - Fix a long-standing bug when using multiple event persister workers where events were not correctly sent down `/sync` due to a race. ([\#11045](https://github.com/matrix-org/synapse/issues/11045)) - Fix a bug introduced in Synapse 1.45.0rc1 where the user directory would stop updating if it processed an event from a user not in the `users` table. ([\#11053](https://github.com/matrix-org/synapse/issues/11053)) - Fix a bug introduced in Synapse 1.44.0 when logging errors during oEmbed processing. ([\#11061](https://github.com/matrix-org/synapse/issues/11061)) Internal Changes ---------------- - Add an 'approximate difference' method to `StateFilter`. ([\#10825](https://github.com/matrix-org/synapse/issues/10825)) - Fix inconsistent behavior of `get_last_client_by_ip` when reporting data that has not been stored in the database yet. ([\#10970](https://github.com/matrix-org/synapse/issues/10970)) - Fix a bug introduced in Synapse 1.21.0 that causes opentracing and Prometheus metrics for replication requests to be measured incorrectly. ([\#10996](https://github.com/matrix-org/synapse/issues/10996)) - Ensure that cache config tests do not share state. ([\#11036](https://github.com/matrix-org/synapse/issues/11036)) Synapse 1.45.0rc1 (2021-10-12) ============================== **Note:** Media storage providers module that read from Synapse's configuration need changes as of this version, see the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1450) for more information. Known Issues ------------ - We are investigating [a performance issue](https://github.com/matrix-org/synapse/issues/11049) which was reported after the release of 1.44.0. - We are aware of [a bug](https://github.com/matrix-org/synapse/issues/11025) with the user directory when using application services. A second release candidate is expected which will resolve this. Features -------- - Add [MSC3069](https://github.com/matrix-org/matrix-doc/pull/3069) support to `/account/whoami`. ([\#9655](https://github.com/matrix-org/synapse/issues/9655)) - Support autodiscovery of oEmbed previews. ([\#10822](https://github.com/matrix-org/synapse/issues/10822)) - Add a `user_may_send_3pid_invite` spam checker callback for modules to allow or deny 3PID invites. ([\#10894](https://github.com/matrix-org/synapse/issues/10894)) - Add a spam checker callback to allow or deny room joins. ([\#10910](https://github.com/matrix-org/synapse/issues/10910)) - Include an `update_synapse_database` script in the distribution. Contributed by @Fizzadar at Beeper. ([\#10954](https://github.com/matrix-org/synapse/issues/10954)) - Include exception information in JSON logging output. Contributed by @Fizzadar at Beeper. ([\#11028](https://github.com/matrix-org/synapse/issues/11028)) Bugfixes -------- - Fix a minor bug in the response to `/_matrix/client/r0/voip/turnServer`. Contributed by @lukaslihotzki. ([\#10922](https://github.com/matrix-org/synapse/issues/10922)) - Fix a bug where empty `yyyy-mm-dd/` directories would be left behind in the media store's `url_cache_thumbnails/` directory. ([\#10924](https://github.com/matrix-org/synapse/issues/10924)) - Fix a bug introduced in Synapse v1.40.0 where the signature checks for room version 8 and 9 could be applied to earlier room versions in some situations. ([\#10927](https://github.com/matrix-org/synapse/issues/10927)) - Fix a long-standing bug wherein deactivated users still count towards the monthly active users limit. ([\#10947](https://github.com/matrix-org/synapse/issues/10947)) - Fix a long-standing bug which meant that events received over federation were sometimes incorrectly accepted into the room state. ([\#10956](https://github.com/matrix-org/synapse/issues/10956)) - Fix a long-standing bug where rebuilding the user directory wouldn't exclude support and deactivated users. ([\#10960](https://github.com/matrix-org/synapse/issues/10960)) - Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint rejecting subsequent batches with unknown batch ID error in existing room versions from the room creator. ([\#10962](https://github.com/matrix-org/synapse/issues/10962)) - Fix a bug that could leak local users' per-room nicknames and avatars when the user directory is rebuilt. ([\#10981](https://github.com/matrix-org/synapse/issues/10981)) - Fix a long-standing bug where the remainder of a batch of user directory changes would be silently dropped if the server left a room early in the batch. ([\#10982](https://github.com/matrix-org/synapse/issues/10982)) - Correct a bugfix introduced in Synapse v1.44.0 that would catch the wrong error if a connection is lost before a response could be written to it. ([\#10995](https://github.com/matrix-org/synapse/issues/10995)) - Fix a long-standing bug where local users' per-room nicknames/avatars were visible to anyone who could see you in the user directory. ([\#11002](https://github.com/matrix-org/synapse/issues/11002)) - Fix a long-standing bug where a user's per-room nickname/avatar would overwrite their profile in the user directory when a room was made public. ([\#11003](https://github.com/matrix-org/synapse/issues/11003)) - Work around a regression, introduced in Synapse v1.39.0, that caused `SynapseError`s raised by the experimental third-party rules module callback `check_event_allowed` to be ignored. ([\#11042](https://github.com/matrix-org/synapse/issues/11042)) - Fix a bug in [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) insertion events in rooms that could cause cross-talk/conflicts between batches. ([\#10877](https://github.com/matrix-org/synapse/issues/10877)) Improved Documentation ---------------------- - Change wording ("reference homeserver") in Synapse repository documentation. Contributed by @maxkratz. ([\#10971](https://github.com/matrix-org/synapse/issues/10971)) - Fix a dead URL in development documentation (SAML) and change wording from "Riot" to "Element". Contributed by @maxkratz. ([\#10973](https://github.com/matrix-org/synapse/issues/10973)) - Add additional content to the Welcome and Overview page of the documentation. ([\#10990](https://github.com/matrix-org/synapse/issues/10990)) - Update links to MSCs in documentation. Contributed by @dklimpel. ([\#10991](https://github.com/matrix-org/synapse/issues/10991)) Internal Changes ---------------- - Improve type hinting in `synapse.util`. ([\#10888](https://github.com/matrix-org/synapse/issues/10888)) - Add further type hints to `synapse.storage.util`. ([\#10892](https://github.com/matrix-org/synapse/issues/10892)) - Fix type hints to be compatible with an upcoming change to Twisted. ([\#10895](https://github.com/matrix-org/synapse/issues/10895)) - Update utility code to handle C implementations of frozendict. ([\#10902](https://github.com/matrix-org/synapse/issues/10902)) - Drop old functionality which maintained database compatibility with Synapse versions before v1.31. ([\#10903](https://github.com/matrix-org/synapse/issues/10903)) - Clean-up configuration helper classes for the `ServerConfig` class. ([\#10915](https://github.com/matrix-org/synapse/issues/10915)) - Use direct references to config flags. ([\#10916](https://github.com/matrix-org/synapse/issues/10916), [\#10959](https://github.com/matrix-org/synapse/issues/10959), [\#10985](https://github.com/matrix-org/synapse/issues/10985)) - Clean up some of the federation event authentication code for clarity. ([\#10926](https://github.com/matrix-org/synapse/issues/10926), [\#10940](https://github.com/matrix-org/synapse/issues/10940), [\#10986](https://github.com/matrix-org/synapse/issues/10986), [\#10987](https://github.com/matrix-org/synapse/issues/10987), [\#10988](https://github.com/matrix-org/synapse/issues/10988), [\#11010](https://github.com/matrix-org/synapse/issues/11010), [\#11011](https://github.com/matrix-org/synapse/issues/11011)) - Refactor various parts of the codebase to use `RoomVersion` objects instead of room version identifier strings. ([\#10934](https://github.com/matrix-org/synapse/issues/10934)) - Refactor user directory tests in preparation for upcoming changes. ([\#10935](https://github.com/matrix-org/synapse/issues/10935)) - Include the event id in the logcontext when handling PDUs received over federation. ([\#10936](https://github.com/matrix-org/synapse/issues/10936)) - Fix logged errors in unit tests. ([\#10939](https://github.com/matrix-org/synapse/issues/10939)) - Fix a broken test to ensure that consent configuration works during registration. ([\#10945](https://github.com/matrix-org/synapse/issues/10945)) - Add type hints to filtering classes. ([\#10958](https://github.com/matrix-org/synapse/issues/10958)) - Add type-hint to `HomeserverTestcase.setup_test_homeserver`. ([\#10961](https://github.com/matrix-org/synapse/issues/10961)) - Fix the test utility function `create_room_as` so that `is_public=True` will explicitly set the `visibility` parameter of room creation requests to `public`. Contributed by @AndrewFerr. ([\#10963](https://github.com/matrix-org/synapse/issues/10963)) - Make the release script more robust and transparent. ([\#10966](https://github.com/matrix-org/synapse/issues/10966)) - Refactor [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` mega function into smaller handler functions. ([\#10974](https://github.com/matrix-org/synapse/issues/10974)) - Log stack traces when a missing opentracing span is detected. ([\#10983](https://github.com/matrix-org/synapse/issues/10983)) - Update GHA config to run tests against Python 3.10 and PostgreSQL 14. ([\#10992](https://github.com/matrix-org/synapse/issues/10992)) - Fix a long-standing bug where `ReadWriteLock`s could drop logging contexts on exit. ([\#10993](https://github.com/matrix-org/synapse/issues/10993)) - Add a `CODEOWNERS` file to automatically request reviews from the `@matrix-org/synapse-core` team on new pull requests. ([\#10994](https://github.com/matrix-org/synapse/issues/10994)) - Add further type hints to `synapse.state`. ([\#11004](https://github.com/matrix-org/synapse/issues/11004)) - Remove the deprecated `BaseHandler` object. ([\#11005](https://github.com/matrix-org/synapse/issues/11005)) - Bump mypy version for CI to 0.910, and pull in new type stubs for dependencies. ([\#11006](https://github.com/matrix-org/synapse/issues/11006)) - Fix CI to run the unit tests without optional deps. ([\#11017](https://github.com/matrix-org/synapse/issues/11017)) - Ensure that cache config tests do not share state. ([\#11019](https://github.com/matrix-org/synapse/issues/11019)) - Add additional type hints to `synapse.server_notices`. ([\#11021](https://github.com/matrix-org/synapse/issues/11021)) - Add additional type hints for `synapse.push`. ([\#11023](https://github.com/matrix-org/synapse/issues/11023)) - When installing the optional developer dependencies, also include the dependencies needed for type-checking and unit testing. ([\#11034](https://github.com/matrix-org/synapse/issues/11034)) - Remove unnecessary list comprehension from `synapse_port_db` to satisfy code style requirements. ([\#11043](https://github.com/matrix-org/synapse/issues/11043)) Synapse 1.44.0 (2021-10-05) =========================== No significant changes since 1.44.0rc3. Synapse 1.44.0rc3 (2021-10-04) ============================== Bugfixes -------- - Fix a bug introduced in Synapse v1.40.0 where changing a user's display name or avatar in a restricted room would cause an authentication error. ([\#10933](https://github.com/matrix-org/synapse/issues/10933)) - Fix `/admin/whois/{user_id}` endpoint, which was broken in v1.44.0rc1. ([\#10968](https://github.com/matrix-org/synapse/issues/10968)) Synapse 1.44.0rc2 (2021-09-30) ============================== Bugfixes -------- - Fix a bug introduced in v1.44.0rc1 which caused the experimental [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint to return a 500 error. ([\#10938](https://github.com/matrix-org/synapse/issues/10938)) - Fix a bug introduced in v1.44.0rc1 which prevented sending presence events to application services. ([\#10944](https://github.com/matrix-org/synapse/issues/10944)) Improved Documentation ---------------------- - Minor updates to the installation instructions. ([\#10919](https://github.com/matrix-org/synapse/issues/10919)) Synapse 1.44.0rc1 (2021-09-29) ============================== Features -------- - Only allow the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send?chunk_id=xxx` endpoint to connect to an already existing insertion event. ([\#10776](https://github.com/matrix-org/synapse/issues/10776)) - Improve oEmbed URL previews by processing the author name, photo, and video information. ([\#10814](https://github.com/matrix-org/synapse/issues/10814), [\#10819](https://github.com/matrix-org/synapse/issues/10819)) - Speed up responding with large JSON objects to requests. ([\#10868](https://github.com/matrix-org/synapse/issues/10868), [\#10905](https://github.com/matrix-org/synapse/issues/10905)) - Add a `user_may_create_room_with_invites` spam checker callback to allow modules to allow or deny a room creation request based on the invites and/or 3PID invites it includes. ([\#10898](https://github.com/matrix-org/synapse/issues/10898)) Bugfixes -------- - Fix a long-standing bug that caused an `AssertionError` when purging history in certain rooms. Contributed by @Kokokokoka. ([\#10690](https://github.com/matrix-org/synapse/issues/10690)) - Fix a long-standing bug which caused deactivated users that were later reactivated to be missing from the user directory. ([\#10782](https://github.com/matrix-org/synapse/issues/10782)) - Fix a long-standing bug that caused unbanning a user by sending a membership event to fail. Contributed by @aaronraimist. ([\#10807](https://github.com/matrix-org/synapse/issues/10807)) - Fix a long-standing bug where logging contexts would go missing when federation requests time out. ([\#10810](https://github.com/matrix-org/synapse/issues/10810)) - Fix a long-standing bug causing an error in the deprecated `/initialSync` endpoint when using the undocumented `from` and `to` parameters. ([\#10827](https://github.com/matrix-org/synapse/issues/10827)) - Fix a bug causing the `remove_stale_pushers` background job to repeatedly fail and log errors. This bug affected Synapse servers that had been upgraded from version 1.28 or older and are using SQLite. ([\#10843](https://github.com/matrix-org/synapse/issues/10843)) - Fix a long-standing bug in Unicode support of the room search admin API breaking search for rooms with non-ASCII characters. ([\#10859](https://github.com/matrix-org/synapse/issues/10859)) - Fix a bug introduced in Synapse 1.37.0 which caused `knock` membership events which we sent to remote servers to be incorrectly stored in the local database. ([\#10873](https://github.com/matrix-org/synapse/issues/10873)) - Fix invalidating one-time key count cache after claiming keys. The bug was introduced in Synapse v1.41.0. Contributed by Tulir at Beeper. ([\#10875](https://github.com/matrix-org/synapse/issues/10875)) - Fix a long-standing bug causing application service users to be subject to MAU blocking if the MAU limit had been reached, even if configured not to be blocked. ([\#10881](https://github.com/matrix-org/synapse/issues/10881)) - Fix a long-standing bug which could cause events pulled over federation to be incorrectly rejected. ([\#10907](https://github.com/matrix-org/synapse/issues/10907)) - Fix a long-standing bug causing URL cache files to be stored in storage providers. Server admins may safely delete the `url_cache/` and `url_cache_thumbnails/` directories from any configured storage providers to reclaim space. ([\#10911](https://github.com/matrix-org/synapse/issues/10911)) - Fix a long-standing bug leading to race conditions when creating media store and config directories. ([\#10913](https://github.com/matrix-org/synapse/issues/10913)) Improved Documentation ---------------------- - Fix some crashes in the Module API example code, by adding JSON encoding/decoding. ([\#10845](https://github.com/matrix-org/synapse/issues/10845)) - Add developer documentation about experimental configuration flags. ([\#10865](https://github.com/matrix-org/synapse/issues/10865)) - Properly remove deleted files from GitHub pages when generating the documentation. ([\#10869](https://github.com/matrix-org/synapse/issues/10869)) Internal Changes ---------------- - Fix GitHub Actions config so we can run sytest on synapse from parallel branches. ([\#10659](https://github.com/matrix-org/synapse/issues/10659)) - Split out [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) meta events to their own fields in the `/batch_send` response. ([\#10777](https://github.com/matrix-org/synapse/issues/10777)) - Add missing type hints to REST servlets. ([\#10785](https://github.com/matrix-org/synapse/issues/10785), [\#10817](https://github.com/matrix-org/synapse/issues/10817)) - Simplify the internal logic which maintains the user directory database tables. ([\#10796](https://github.com/matrix-org/synapse/issues/10796)) - Use direct references to config flags. ([\#10812](https://github.com/matrix-org/synapse/issues/10812), [\#10885](https://github.com/matrix-org/synapse/issues/10885), [\#10893](https://github.com/matrix-org/synapse/issues/10893), [\#10897](https://github.com/matrix-org/synapse/issues/10897)) - Specify the type of token in generic "Invalid token" error messages. ([\#10815](https://github.com/matrix-org/synapse/issues/10815)) - Make `StateFilter` frozen so it is hashable. ([\#10816](https://github.com/matrix-org/synapse/issues/10816)) - Fix a long-standing bug where an `m.room.message` event containing a null byte would cause an internal server error. ([\#10820](https://github.com/matrix-org/synapse/issues/10820)) - Add type hints to the state database. ([\#10823](https://github.com/matrix-org/synapse/issues/10823)) - Opt out of cache expiry for `get_users_who_share_room_with_user`, to hopefully improve `/sync` performance when you haven't synced recently. ([\#10826](https://github.com/matrix-org/synapse/issues/10826)) - Track cache eviction rates more finely in Prometheus's monitoring. ([\#10829](https://github.com/matrix-org/synapse/issues/10829)) - Add missing type hints to `synapse.handlers`. ([\#10831](https://github.com/matrix-org/synapse/issues/10831), [\#10856](https://github.com/matrix-org/synapse/issues/10856)) - Extend the Module API to let plug-ins check whether an ID is local and to access IP + User Agent data. ([\#10833](https://github.com/matrix-org/synapse/issues/10833)) - Factor out PNG image data to a constant to be used in several tests. ([\#10834](https://github.com/matrix-org/synapse/issues/10834)) - Add a test to ensure state events sent by modules get persisted correctly. ([\#10835](https://github.com/matrix-org/synapse/issues/10835)) - Rename [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) fields and event types from `chunk` to `batch` to match the `/batch_send` endpoint. ([\#10838](https://github.com/matrix-org/synapse/issues/10838)) - Rename [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` query parameter from `?prev_event` to more obvious usage with `?prev_event_id`. ([\#10839](https://github.com/matrix-org/synapse/issues/10839)) - Add type hints to `synapse.http.site`. ([\#10867](https://github.com/matrix-org/synapse/issues/10867)) - Include outlier status when we log V2 or V3 events. ([\#10879](https://github.com/matrix-org/synapse/issues/10879)) - Break down Grafana's cache expiry time series based on reason for eviction, c.f. [\#10829](https://github.com/matrix-org/synapse/issues/10829). ([\#10880](https://github.com/matrix-org/synapse/issues/10880)) - Clean up some of the federation event authentication code for clarity. ([\#10883](https://github.com/matrix-org/synapse/issues/10883), [\#10884](https://github.com/matrix-org/synapse/issues/10884), [\#10896](https://github.com/matrix-org/synapse/issues/10896), [\#10901](https://github.com/matrix-org/synapse/issues/10901)) - Allow the `.` and `~` characters when creating registration tokens as per the change to [MSC3231](https://github.com/matrix-org/matrix-doc/pull/3231). ([\#10887](https://github.com/matrix-org/synapse/issues/10887)) - Clean up some unnecessary parentheses in places around the codebase. ([\#10889](https://github.com/matrix-org/synapse/issues/10889)) - Improve type hinting in the user directory code. ([\#10891](https://github.com/matrix-org/synapse/issues/10891)) - Update development testing script `test_postgresql.sh` to use a supported Python version and make re-runs quicker. ([\#10906](https://github.com/matrix-org/synapse/issues/10906)) - Document and summarize changes in schema version `61` – `64`. ([\#10917](https://github.com/matrix-org/synapse/issues/10917)) - Update release script to sign the newly created git tags. ([\#10925](https://github.com/matrix-org/synapse/issues/10925)) - Fix Debian builds due to `dh-virtualenv` no longer being able to build their docs. ([\#10931](https://github.com/matrix-org/synapse/issues/10931)) Synapse 1.43.0 (2021-09-21) =========================== This release drops support for the deprecated, unstable API for [MSC2858 (Multiple SSO Identity Providers)](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2858-Multiple-SSO-Identity-Providers.md#unstable-prefix), as well as the undocumented `experimental.msc2858_enabled` config option. Client authors should update their clients to use the stable API, available since Synapse 1.30. The documentation has been updated with configuration for routing `/spaces`, `/hierarchy` and `/summary` to workers. See [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.43/docs/upgrade.md#upgrading-to-v1430) for more details. No significant changes since 1.43.0rc2. Synapse 1.43.0rc2 (2021-09-17) ============================== Bugfixes -------- - Added opentracing logging to help debug [\#9424](https://github.com/matrix-org/synapse/issues/9424). ([\#10828](https://github.com/matrix-org/synapse/issues/10828)) Synapse 1.43.0rc1 (2021-09-14) ============================== Features -------- - Allow room creators to send historical events specified by [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) in existing room versions. ([\#10566](https://github.com/matrix-org/synapse/issues/10566)) - Add config option to use non-default manhole password and keys. ([\#10643](https://github.com/matrix-org/synapse/issues/10643)) - Skip final GC at shutdown to improve restart performance. ([\#10712](https://github.com/matrix-org/synapse/issues/10712)) - Allow configuration of the oEmbed URLs used for URL previews. ([\#10714](https://github.com/matrix-org/synapse/issues/10714), [\#10759](https://github.com/matrix-org/synapse/issues/10759)) - Prefer [room version 9](https://github.com/matrix-org/matrix-doc/pull/3375) for restricted rooms per the [room version capabilities](https://github.com/matrix-org/matrix-doc/pull/3244) API. ([\#10772](https://github.com/matrix-org/synapse/issues/10772)) Bugfixes -------- - Fix a long-standing bug where room avatars were not included in email notifications. ([\#10658](https://github.com/matrix-org/synapse/issues/10658)) - Fix a bug where the ordering algorithm was skipping the `origin_server_ts` step in the spaces summary resulting in unstable room orderings. ([\#10730](https://github.com/matrix-org/synapse/issues/10730)) - Fix edge case when persisting events into a room where there are multiple events we previously hadn't calculated auth chains for (and hadn't marked as needing to be calculated). ([\#10743](https://github.com/matrix-org/synapse/issues/10743)) - Fix a bug which prevented calls to `/createRoom` that included the `room_alias_name` parameter from being handled by worker processes. ([\#10757](https://github.com/matrix-org/synapse/issues/10757)) - Fix a bug which prevented user registration via SSO to require consent tracking for SSO mapping providers that don't prompt for Matrix ID selection. Contributed by @AndrewFerr. ([\#10733](https://github.com/matrix-org/synapse/issues/10733)) - Only return the stripped state events for the `m.space.child` events in a room for the spaces summary from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10760](https://github.com/matrix-org/synapse/issues/10760)) - Properly handle room upgrades of spaces. ([\#10774](https://github.com/matrix-org/synapse/issues/10774)) - Fix a bug which generated invalid homeserver config when the `frontend_proxy` worker type was passed to the Synapse Worker-based Complement image. ([\#10783](https://github.com/matrix-org/synapse/issues/10783)) Improved Documentation ---------------------- - Minor fix to the `media_repository` developer documentation. Contributed by @cuttingedge1109. ([\#10556](https://github.com/matrix-org/synapse/issues/10556)) - Update the documentation to note that the `/spaces` and `/hierarchy` endpoints can be routed to workers. ([\#10648](https://github.com/matrix-org/synapse/issues/10648)) - Clarify admin API documentation on undoing room deletions. ([\#10735](https://github.com/matrix-org/synapse/issues/10735)) - Split up the modules documentation and add examples for module developers. ([\#10758](https://github.com/matrix-org/synapse/issues/10758)) - Correct 2 typographical errors in the [Log Contexts documentation](https://matrix-org.github.io/synapse/latest/log_contexts.html). ([\#10795](https://github.com/matrix-org/synapse/issues/10795)) - Fix a wording mistake in the sample configuration. Contributed by @bramvdnheuvel:nltrix.net. ([\#10804](https://github.com/matrix-org/synapse/issues/10804)) Deprecations and Removals ------------------------- - Remove the [unstable MSC2858 API](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2858-Multiple-SSO-Identity-Providers.md#unstable-prefix), including the undocumented `experimental.msc2858_enabled` config option. The unstable API has been deprecated since Synapse 1.35. Client authors should update their clients to use the stable API introduced in Synapse 1.30 if they have not already done so. ([\#10693](https://github.com/matrix-org/synapse/issues/10693)) Internal Changes ---------------- - Add OpenTracing logging to help debug stuck messages (as described by issue [#9424](https://github.com/matrix-org/synapse/issues/9424)). ([\#10704](https://github.com/matrix-org/synapse/issues/10704)) - Add type annotations to the `synapse.util` package. ([\#10601](https://github.com/matrix-org/synapse/issues/10601)) - Ensure `rooms.creator` field is always populated for easy lookup in [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) usage later. ([\#10697](https://github.com/matrix-org/synapse/issues/10697)) - Add missing type hints to REST servlets. ([\#10707](https://github.com/matrix-org/synapse/issues/10707), [\#10728](https://github.com/matrix-org/synapse/issues/10728), [\#10736](https://github.com/matrix-org/synapse/issues/10736)) - Do not include rooms with unknown room versions in the spaces summary results. ([\#10727](https://github.com/matrix-org/synapse/issues/10727)) - Additional error checking for the `preset` field when creating a room. ([\#10738](https://github.com/matrix-org/synapse/issues/10738)) - Clean up some of the federation event authentication code for clarity. ([\#10744](https://github.com/matrix-org/synapse/issues/10744), [\#10745](https://github.com/matrix-org/synapse/issues/10745), [\#10746](https://github.com/matrix-org/synapse/issues/10746), [\#10771](https://github.com/matrix-org/synapse/issues/10771), [\#10773](https://github.com/matrix-org/synapse/issues/10773), [\#10781](https://github.com/matrix-org/synapse/issues/10781)) - Add an index to `presence_stream` to hopefully speed up startups a little. ([\#10748](https://github.com/matrix-org/synapse/issues/10748)) - Refactor event size checking code to simplify searching the codebase for the origins of certain error strings that are occasionally emitted. ([\#10750](https://github.com/matrix-org/synapse/issues/10750)) - Move tests relating to rooms having encryption out of the user directory tests. ([\#10752](https://github.com/matrix-org/synapse/issues/10752)) - Use `attrs` internally for the URL preview code & update documentation. ([\#10753](https://github.com/matrix-org/synapse/issues/10753)) - Minor speed ups when joining large rooms over federation. ([\#10754](https://github.com/matrix-org/synapse/issues/10754), [\#10755](https://github.com/matrix-org/synapse/issues/10755), [\#10756](https://github.com/matrix-org/synapse/issues/10756), [\#10780](https://github.com/matrix-org/synapse/issues/10780), [\#10784](https://github.com/matrix-org/synapse/issues/10784)) - Add a constant for `m.federate`. ([\#10775](https://github.com/matrix-org/synapse/issues/10775)) - Add a script to update the Debian changelog in a Docker container for systems that are not Debian-based. ([\#10778](https://github.com/matrix-org/synapse/issues/10778)) - Change the format of authenticated users in logs when a user is being puppeted by and admin user. ([\#10779](https://github.com/matrix-org/synapse/issues/10779)) - Remove fixed and flakey tests from the Sytest blacklist. ([\#10788](https://github.com/matrix-org/synapse/issues/10788)) - Improve internal details of the user directory code. ([\#10789](https://github.com/matrix-org/synapse/issues/10789)) - Use direct references to config flags. ([\#10798](https://github.com/matrix-org/synapse/issues/10798)) - Ensure the Rust reporter passes type checking with jaeger-client 4.7's type annotations. ([\#10799](https://github.com/matrix-org/synapse/issues/10799)) Synapse 1.42.0 (2021-09-07) =========================== This version of Synapse removes deprecated room-management admin APIs, removes out-of-date email pushers, and improves error handling for fallback templates for user-interactive authentication. For more information on these points, server administrators are encouraged to read [the upgrade notes](docs/upgrade.md#upgrading-to-v1420). No significant changes since 1.42.0rc2. Synapse 1.42.0rc2 (2021-09-06) ============================== Features -------- - Support room version 9 from [MSC3375](https://github.com/matrix-org/matrix-doc/pull/3375). ([\#10747](https://github.com/matrix-org/synapse/issues/10747)) Internal Changes ---------------- - Print a warning when using one of the deprecated `template_dir` settings. ([\#10768](https://github.com/matrix-org/synapse/issues/10768)) Synapse 1.42.0rc1 (2021-09-01) ============================== Features -------- - Add support for [MSC3231](https://github.com/matrix-org/matrix-doc/pull/3231): Token authenticated registration. Users can be required to submit a token during registration to authenticate themselves. Contributed by Callum Brown. ([\#10142](https://github.com/matrix-org/synapse/issues/10142)) - Add support for [MSC3283](https://github.com/matrix-org/matrix-doc/pull/3283): Expose `enable_set_displayname` in capabilities. ([\#10452](https://github.com/matrix-org/synapse/issues/10452)) - Port the `PresenceRouter` module interface to the new generic interface. ([\#10524](https://github.com/matrix-org/synapse/issues/10524)) - Add pagination to the spaces summary based on updates to [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10613](https://github.com/matrix-org/synapse/issues/10613), [\#10725](https://github.com/matrix-org/synapse/issues/10725)) Bugfixes -------- - Validate new `m.room.power_levels` events. Contributed by @aaronraimist. ([\#10232](https://github.com/matrix-org/synapse/issues/10232)) - Display an error on User-Interactive Authentication fallback pages when authentication fails. Contributed by Callum Brown. ([\#10561](https://github.com/matrix-org/synapse/issues/10561)) - Remove pushers when deleting an e-mail address from an account. Pushers for old unlinked emails will also be deleted. ([\#10581](https://github.com/matrix-org/synapse/issues/10581), [\#10734](https://github.com/matrix-org/synapse/issues/10734)) - Reject Client-Server `/keys/query` requests which provide `device_ids` incorrectly. ([\#10593](https://github.com/matrix-org/synapse/issues/10593)) - Rooms with unsupported room versions are no longer returned via `/sync`. ([\#10644](https://github.com/matrix-org/synapse/issues/10644)) - Enforce the maximum length for per-room display names and avatar URLs. ([\#10654](https://github.com/matrix-org/synapse/issues/10654)) - Fix a bug which caused the `synapse_user_logins_total` Prometheus metric not to be correctly initialised on restart. ([\#10677](https://github.com/matrix-org/synapse/issues/10677)) - Improve `ServerNoticeServlet` to avoid duplicate requests and add unit tests. ([\#10679](https://github.com/matrix-org/synapse/issues/10679)) - Fix long-standing issue which caused an error when a thumbnail is requested and there are multiple thumbnails with the same quality rating. ([\#10684](https://github.com/matrix-org/synapse/issues/10684)) - Fix a regression introduced in v1.41.0 which affected the performance of concurrent fetches of large sets of events, in extreme cases causing the process to hang. ([\#10703](https://github.com/matrix-org/synapse/issues/10703)) - Fix a regression introduced in Synapse 1.41 which broke email transmission on Systems using older versions of the Twisted library. ([\#10713](https://github.com/matrix-org/synapse/issues/10713)) Improved Documentation ---------------------- - Add documentation on how to connect Django with Synapse using OpenID Connect and django-oauth-toolkit. Contributed by @HugoDelval. ([\#10192](https://github.com/matrix-org/synapse/issues/10192)) - Advertise https://matrix-org.github.io/synapse documentation in the `README` and `CONTRIBUTING` files. ([\#10595](https://github.com/matrix-org/synapse/issues/10595)) - Fix some of the titles not rendering in the OpenID Connect documentation. ([\#10639](https://github.com/matrix-org/synapse/issues/10639)) - Minor clarifications to the documentation for reverse proxies. ([\#10708](https://github.com/matrix-org/synapse/issues/10708)) - Remove table of contents from the top of installation and contributing documentation pages. ([\#10711](https://github.com/matrix-org/synapse/issues/10711)) Deprecations and Removals ------------------------- - Remove deprecated Shutdown Room and Purge Room Admin API. ([\#8830](https://github.com/matrix-org/synapse/issues/8830)) Internal Changes ---------------- - Improve type hints for the proxy agent and SRV resolver modules. Contributed by @dklimpel. ([\#10608](https://github.com/matrix-org/synapse/issues/10608)) - Clean up some of the federation event authentication code for clarity. ([\#10614](https://github.com/matrix-org/synapse/issues/10614), [\#10615](https://github.com/matrix-org/synapse/issues/10615), [\#10624](https://github.com/matrix-org/synapse/issues/10624), [\#10640](https://github.com/matrix-org/synapse/issues/10640)) - Add a comment asking developers to leave a reason when bumping the database schema version. ([\#10621](https://github.com/matrix-org/synapse/issues/10621)) - Remove not needed database updates in modify user admin API. ([\#10627](https://github.com/matrix-org/synapse/issues/10627)) - Convert room member storage tuples to `attrs` classes. ([\#10629](https://github.com/matrix-org/synapse/issues/10629), [\#10642](https://github.com/matrix-org/synapse/issues/10642)) - Use auto-attribs for the attrs classes used in sync. ([\#10630](https://github.com/matrix-org/synapse/issues/10630)) - Make `backfill` and `get_missing_events` use the same codepath. ([\#10645](https://github.com/matrix-org/synapse/issues/10645)) - Improve the performance of the `/hierarchy` API (from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946)) by caching responses received over federation. ([\#10647](https://github.com/matrix-org/synapse/issues/10647)) - Run a nightly CI build against Twisted trunk. ([\#10651](https://github.com/matrix-org/synapse/issues/10651), [\#10672](https://github.com/matrix-org/synapse/issues/10672)) - Do not print out stack traces for network errors when fetching data over federation. ([\#10662](https://github.com/matrix-org/synapse/issues/10662)) - Simplify tests for device admin rest API. ([\#10664](https://github.com/matrix-org/synapse/issues/10664)) - Add missing type hints to REST servlets. ([\#10665](https://github.com/matrix-org/synapse/issues/10665), [\#10666](https://github.com/matrix-org/synapse/issues/10666), [\#10674](https://github.com/matrix-org/synapse/issues/10674)) - Flatten the `tests.synapse.rests` package by moving the contents of `v1` and `v2_alpha` into the parent. ([\#10667](https://github.com/matrix-org/synapse/issues/10667)) - Update `complement.sh` to rebuild the base Docker image when run with workers. ([\#10686](https://github.com/matrix-org/synapse/issues/10686)) - Split the event-processing methods in `FederationHandler` into a separate `FederationEventHandler`. ([\#10692](https://github.com/matrix-org/synapse/issues/10692)) - Remove unused `compare_digest` function. ([\#10706](https://github.com/matrix-org/synapse/issues/10706)) Synapse 1.41.1 (2021-08-31) =========================== Due to the two security issues highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- The following issues are fixed in v1.41.1. - **[GHSA-3x4c-pq33-4w3q](https://github.com/matrix-org/synapse/security/advisories/GHSA-3x4c-pq33-4w3q) / [CVE-2021-39164](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-39164): Enumerating a private room's list of members and their display names.** If an unauthorized user both knows the Room ID of a private room *and* that room's history visibility is set to `shared`, then they may be able to enumerate the room's members, including their display names. The unauthorized user must be on the same homeserver as a user who is a member of the target room. Fixed by [52c7a51cf](https://github.com/matrix-org/synapse/commit/52c7a51cf). - **[GHSA-jj53-8fmw-f2w2](https://github.com/matrix-org/synapse/security/advisories/GHSA-jj53-8fmw-f2w2) / [CVE-2021-39163](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-39163): Disclosing a private room's name, avatar, topic, and number of members.** If an unauthorized user knows the Room ID of a private room, then its name, avatar, topic, and number of members may be disclosed through Group / Community features. The unauthorized user must be on the same homeserver as a user who is a member of the target room, and their homeserver must allow non-administrators to create groups (`enable_group_creation` in the Synapse configuration; off by default). Fixed by [cb35df940a](https://github.com/matrix-org/synapse/commit/cb35df940a), [\#10723](https://github.com/matrix-org/synapse/issues/10723). Bugfixes -------- - Fix a regression introduced in Synapse 1.41 which broke email transmission on systems using older versions of the Twisted library. ([\#10713](https://github.com/matrix-org/synapse/issues/10713)) Synapse 1.41.0 (2021-08-24) =========================== This release adds support for Debian 12 (Bookworm), but **removes support for Ubuntu 20.10 (Groovy Gorilla)**, which reached End of Life last month. Note that when using workers the `/_synapse/admin/v1/users/{userId}/media` must now be handled by media workers. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html) for more information. Features -------- - Enable room capabilities ([MSC3244](https://github.com/matrix-org/matrix-doc/pull/3244)) by default and set room version 8 as the preferred room version when creating restricted rooms. ([\#10571](https://github.com/matrix-org/synapse/issues/10571)) Synapse 1.41.0rc1 (2021-08-18) ============================== Features -------- - Add `get_userinfo_by_id` method to ModuleApi. ([\#9581](https://github.com/matrix-org/synapse/issues/9581)) - Initial local support for [MSC3266](https://github.com/matrix-org/synapse/pull/10394), Room Summary over the unstable `/rooms/{roomIdOrAlias}/summary` API. ([\#10394](https://github.com/matrix-org/synapse/issues/10394)) - Experimental support for [MSC3288](https://github.com/matrix-org/matrix-doc/pull/3288), sending `room_type` to the identity server for 3pid invites over the `/store-invite` API. ([\#10435](https://github.com/matrix-org/synapse/issues/10435)) - Add support for sending federation requests through a proxy. Contributed by @Bubu and @dklimpel. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html) for more information. ([\#10596](https://github.com/matrix-org/synapse/issues/10596)). ([\#10475](https://github.com/matrix-org/synapse/issues/10475)) - Add support for "marker" events which makes historical events discoverable for servers that already have all of the scrollback history (part of [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716)). ([\#10498](https://github.com/matrix-org/synapse/issues/10498)) - Add a configuration setting for the time a `/sync` response is cached for. ([\#10513](https://github.com/matrix-org/synapse/issues/10513)) - The default logging handler for new installations is now `PeriodicallyFlushingMemoryHandler`, a buffered logging handler which periodically flushes itself. ([\#10518](https://github.com/matrix-org/synapse/issues/10518)) - Add support for new redaction rules for historical events specified in [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716). ([\#10538](https://github.com/matrix-org/synapse/issues/10538)) - Add a setting to disable TLS when sending email. ([\#10546](https://github.com/matrix-org/synapse/issues/10546)) - Add pagination to the spaces summary based on updates to [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10549](https://github.com/matrix-org/synapse/issues/10549), [\#10560](https://github.com/matrix-org/synapse/issues/10560), [\#10569](https://github.com/matrix-org/synapse/issues/10569), [\#10574](https://github.com/matrix-org/synapse/issues/10574), [\#10575](https://github.com/matrix-org/synapse/issues/10575), [\#10579](https://github.com/matrix-org/synapse/issues/10579), [\#10583](https://github.com/matrix-org/synapse/issues/10583)) - Admin API to delete several media for a specific user. Contributed by @dklimpel. ([\#10558](https://github.com/matrix-org/synapse/issues/10558), [\#10628](https://github.com/matrix-org/synapse/issues/10628)) - Add support for routing `/createRoom` to workers. ([\#10564](https://github.com/matrix-org/synapse/issues/10564)) - Update the Synapse Grafana dashboard. ([\#10570](https://github.com/matrix-org/synapse/issues/10570)) - Add an admin API (`GET /_synapse/admin/username_available`) to check if a username is available (regardless of registration settings). ([\#10578](https://github.com/matrix-org/synapse/issues/10578)) - Allow editing a user's `external_ids` via the "Edit User" admin API. Contributed by @dklimpel. ([\#10598](https://github.com/matrix-org/synapse/issues/10598)) - The Synapse manhole no longer needs coroutines to be wrapped in `defer.ensureDeferred`. ([\#10602](https://github.com/matrix-org/synapse/issues/10602)) - Add option to allow modules to run periodic tasks on all instances, rather than just the one configured to run background tasks. ([\#10638](https://github.com/matrix-org/synapse/issues/10638)) Bugfixes -------- - Add some clarification to the sample config file. Contributed by @Kentokamoto. ([\#10129](https://github.com/matrix-org/synapse/issues/10129)) - Fix a long-standing bug where protocols which are not implemented by any appservices were incorrectly returned via `GET /_matrix/client/r0/thirdparty/protocols`. ([\#10532](https://github.com/matrix-org/synapse/issues/10532)) - Fix exceptions in logs when failing to get remote room list. ([\#10541](https://github.com/matrix-org/synapse/issues/10541)) - Fix longstanding bug which caused the user's presence "status message" to be reset when the user went offline. Contributed by @dklimpel. ([\#10550](https://github.com/matrix-org/synapse/issues/10550)) - Allow public rooms to be previewed in the spaces summary APIs from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10580](https://github.com/matrix-org/synapse/issues/10580)) - Fix a bug introduced in v1.37.1 where an error could occur in the asynchronous processing of PDUs when the queue was empty. ([\#10592](https://github.com/matrix-org/synapse/issues/10592)) - Fix errors on /sync when read receipt data is a string. Only affects homeservers with the experimental flag for [MSC2285](https://github.com/matrix-org/matrix-doc/pull/2285) enabled. Contributed by @SimonBrandner. ([\#10606](https://github.com/matrix-org/synapse/issues/10606)) - Additional validation for the spaces summary API to avoid errors like `ValueError: Stop argument for islice() must be None or an integer`. The missing validation has existed since v1.31.0. ([\#10611](https://github.com/matrix-org/synapse/issues/10611)) - Revert behaviour introduced in v1.38.0 that strips `org.matrix.msc2732.device_unused_fallback_key_types` from `/sync` when its value is empty. This field should instead always be present according to [MSC2732](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2732-olm-fallback-keys.md). ([\#10623](https://github.com/matrix-org/synapse/issues/10623)) Improved Documentation ---------------------- - Add documentation for configuring a forward proxy. ([\#10443](https://github.com/matrix-org/synapse/issues/10443)) - Updated the reverse proxy documentation to highlight the homserver configuration that is needed to make Synapse aware that is is intentionally reverse proxied. ([\#10551](https://github.com/matrix-org/synapse/issues/10551)) - Update CONTRIBUTING.md to fix index links and the instructions for SyTest in docker. ([\#10599](https://github.com/matrix-org/synapse/issues/10599)) Deprecations and Removals ------------------------- - No longer build `.deb` packages for Ubuntu 20.10 Groovy Gorilla, which has now EOLed. ([\#10588](https://github.com/matrix-org/synapse/issues/10588)) - The `template_dir` configuration settings in the `sso`, `account_validity` and `email` sections of the configuration file are now deprecated in favour of the global `templates.custom_template_directory` setting. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html) for more information. ([\#10596](https://github.com/matrix-org/synapse/issues/10596)) Internal Changes ---------------- - Improve event caching mechanism to avoid having multiple copies of an event in memory at a time. ([\#10119](https://github.com/matrix-org/synapse/issues/10119)) - Reduce errors in PostgreSQL logs due to concurrent serialization errors. ([\#10504](https://github.com/matrix-org/synapse/issues/10504)) - Include room ID in ignored EDU log messages. Contributed by @ilmari. ([\#10507](https://github.com/matrix-org/synapse/issues/10507)) - Add pagination to the spaces summary based on updates to [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#10527](https://github.com/matrix-org/synapse/issues/10527), [\#10530](https://github.com/matrix-org/synapse/issues/10530)) - Fix CI to not break when run against branches rather than pull requests. ([\#10529](https://github.com/matrix-org/synapse/issues/10529)) - Mark all events stemming from the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint as historical. ([\#10537](https://github.com/matrix-org/synapse/issues/10537)) - Clean up some of the federation event authentication code for clarity. ([\#10539](https://github.com/matrix-org/synapse/issues/10539), [\#10591](https://github.com/matrix-org/synapse/issues/10591)) - Convert `Transaction` and `Edu` objects to attrs. ([\#10542](https://github.com/matrix-org/synapse/issues/10542)) - Update `/batch_send` endpoint to only return `state_events` created by the `state_events_from_before` passed in. ([\#10552](https://github.com/matrix-org/synapse/issues/10552)) - Update contributing.md to warn against rebasing an open PR. ([\#10563](https://github.com/matrix-org/synapse/issues/10563)) - Remove the unused public rooms replication stream. ([\#10565](https://github.com/matrix-org/synapse/issues/10565)) - Clarify error message when failing to join a restricted room. ([\#10572](https://github.com/matrix-org/synapse/issues/10572)) - Remove references to BuildKite in favour of GitHub Actions. ([\#10573](https://github.com/matrix-org/synapse/issues/10573)) - Move `/batch_send` endpoint defined by [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) to the `/v2_alpha` directory. ([\#10576](https://github.com/matrix-org/synapse/issues/10576)) - Allow multiple custom directories in `read_templates`. ([\#10587](https://github.com/matrix-org/synapse/issues/10587)) - Re-organize the `synapse.federation.transport.server` module to create smaller files. ([\#10590](https://github.com/matrix-org/synapse/issues/10590)) - Flatten the `synapse.rest.client` package by moving the contents of `v1` and `v2_alpha` into the parent. ([\#10600](https://github.com/matrix-org/synapse/issues/10600)) - Build Debian packages for Debian 12 (Bookworm). ([\#10612](https://github.com/matrix-org/synapse/issues/10612)) - Fix up a couple of links to the database schema documentation. ([\#10620](https://github.com/matrix-org/synapse/issues/10620)) - Fix a broken link to the upgrade notes. ([\#10631](https://github.com/matrix-org/synapse/issues/10631)) Synapse 1.40.0 (2021-08-10) =========================== No significant changes. Synapse 1.40.0rc3 (2021-08-09) ============================== Features -------- - Support [MSC3289: room version 8](https://github.com/matrix-org/matrix-doc/pull/3289). ([\#10449](https://github.com/matrix-org/synapse/issues/10449)) Bugfixes -------- - Mark the experimental room version from [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) as unstable. ([\#10449](https://github.com/matrix-org/synapse/issues/10449)) Improved Documentation ---------------------- - Fix broken links in `upgrade.md`. Contributed by @dklimpel. ([\#10543](https://github.com/matrix-org/synapse/issues/10543)) Synapse 1.40.0rc2 (2021-08-04) ============================== Bugfixes -------- - Fix the `PeriodicallyFlushingMemoryHandler` inhibiting application shutdown because of its background thread. ([\#10517](https://github.com/matrix-org/synapse/issues/10517)) - Fix a bug introduced in Synapse v1.40.0rc1 that could cause Synapse to respond with an error when clients would update read receipts. ([\#10531](https://github.com/matrix-org/synapse/issues/10531)) Internal Changes ---------------- - Fix release script to open the correct URL for the release. ([\#10516](https://github.com/matrix-org/synapse/issues/10516)) Synapse 1.40.0rc1 (2021-08-03) ============================== Features -------- - Add support for [MSC2033](https://github.com/matrix-org/matrix-doc/pull/2033): `device_id` on `/account/whoami`. ([\#9918](https://github.com/matrix-org/synapse/issues/9918)) - Update support for [MSC2716 - Incrementally importing history into existing rooms](https://github.com/matrix-org/matrix-doc/pull/2716). ([\#10245](https://github.com/matrix-org/synapse/issues/10245), [\#10432](https://github.com/matrix-org/synapse/issues/10432), [\#10463](https://github.com/matrix-org/synapse/issues/10463)) - Update support for [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083) to consider changes in the MSC around which servers can issue join events. ([\#10254](https://github.com/matrix-org/synapse/issues/10254), [\#10447](https://github.com/matrix-org/synapse/issues/10447), [\#10489](https://github.com/matrix-org/synapse/issues/10489)) - Initial support for [MSC3244](https://github.com/matrix-org/matrix-doc/pull/3244), Room version capabilities over the /capabilities API. ([\#10283](https://github.com/matrix-org/synapse/issues/10283)) - Add a buffered logging handler which periodically flushes itself. ([\#10407](https://github.com/matrix-org/synapse/issues/10407), [\#10515](https://github.com/matrix-org/synapse/issues/10515)) - Add support for https connections to a proxy server. Contributed by @Bubu and @dklimpel. ([\#10411](https://github.com/matrix-org/synapse/issues/10411)) - Support for [MSC2285 (hidden read receipts)](https://github.com/matrix-org/matrix-doc/pull/2285). Contributed by @SimonBrandner. ([\#10413](https://github.com/matrix-org/synapse/issues/10413)) - Email notifications now state whether an invitation is to a room or a space. ([\#10426](https://github.com/matrix-org/synapse/issues/10426)) - Allow setting transaction limit for database connections. ([\#10440](https://github.com/matrix-org/synapse/issues/10440), [\#10511](https://github.com/matrix-org/synapse/issues/10511)) - Add `creation_ts` to "list users" admin API. ([\#10448](https://github.com/matrix-org/synapse/issues/10448)) Bugfixes -------- - Improve character set detection in URL previews by supporting underscores (in addition to hyphens). Contributed by @srividyut. ([\#10410](https://github.com/matrix-org/synapse/issues/10410)) - Fix events being incorrectly rejected over federation if they reference auth events that the server needed to fetch. ([\#10439](https://github.com/matrix-org/synapse/issues/10439)) - Fix `synapse_federation_server_oldest_inbound_pdu_in_staging` Prometheus metric to not report a max age of 51 years when the queue is empty. ([\#10455](https://github.com/matrix-org/synapse/issues/10455)) - Fix a bug which caused an explicit assignment of power-level 0 to a user to be misinterpreted in rare circumstances. ([\#10499](https://github.com/matrix-org/synapse/issues/10499)) Improved Documentation ---------------------- - Fix hierarchy of providers on the OpenID page. ([\#10445](https://github.com/matrix-org/synapse/issues/10445)) - Consolidate development documentation to `docs/development/`. ([\#10453](https://github.com/matrix-org/synapse/issues/10453)) - Add some developer docs to explain room DAG concepts like `outliers`, `state_groups`, `depth`, etc. ([\#10464](https://github.com/matrix-org/synapse/issues/10464)) - Document how to use Complement while developing a new Synapse feature. ([\#10483](https://github.com/matrix-org/synapse/issues/10483)) Internal Changes ---------------- - Prune inbound federation queues for a room if they get too large. ([\#10390](https://github.com/matrix-org/synapse/issues/10390)) - Add type hints to `synapse.federation.transport.client` module. ([\#10408](https://github.com/matrix-org/synapse/issues/10408)) - Remove shebang line from module files. ([\#10415](https://github.com/matrix-org/synapse/issues/10415)) - Drop backwards-compatibility code that was required to support Ubuntu Xenial. ([\#10429](https://github.com/matrix-org/synapse/issues/10429)) - Use a docker image cache for the prerequisites for the debian package build. ([\#10431](https://github.com/matrix-org/synapse/issues/10431)) - Improve servlet type hints. ([\#10437](https://github.com/matrix-org/synapse/issues/10437), [\#10438](https://github.com/matrix-org/synapse/issues/10438)) - Replace usage of `or_ignore` in `simple_insert` with `simple_upsert` usage, to stop spamming postgres logs with spurious ERROR messages. ([\#10442](https://github.com/matrix-org/synapse/issues/10442)) - Update the `tests-done` Github Actions status. ([\#10444](https://github.com/matrix-org/synapse/issues/10444), [\#10512](https://github.com/matrix-org/synapse/issues/10512)) - Update type annotations to work with forthcoming Twisted 21.7.0 release. ([\#10446](https://github.com/matrix-org/synapse/issues/10446), [\#10450](https://github.com/matrix-org/synapse/issues/10450)) - Cancel redundant GHA workflows when a new commit is pushed. ([\#10451](https://github.com/matrix-org/synapse/issues/10451)) - Mitigate media repo XSS attacks on IE11 via the non-standard X-Content-Security-Policy header. ([\#10468](https://github.com/matrix-org/synapse/issues/10468)) - Additional type hints in the state handler. ([\#10482](https://github.com/matrix-org/synapse/issues/10482)) - Update syntax used to run complement tests. ([\#10488](https://github.com/matrix-org/synapse/issues/10488)) - Fix up type annotations to work with Twisted 21.7. ([\#10490](https://github.com/matrix-org/synapse/issues/10490)) - Improve type annotations for `ObservableDeferred`. ([\#10491](https://github.com/matrix-org/synapse/issues/10491)) - Extend release script to also tag and create GitHub releases. ([\#10496](https://github.com/matrix-org/synapse/issues/10496)) - Fix a bug which caused production debian packages to be incorrectly marked as 'prerelease'. ([\#10500](https://github.com/matrix-org/synapse/issues/10500)) Synapse 1.39.0 (2021-07-29) =========================== No significant changes. Synapse 1.39.0rc3 (2021-07-28) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.38 which caused an exception at startup when SAML authentication was enabled. ([\#10477](https://github.com/matrix-org/synapse/issues/10477)) - Fix a long-standing bug where Synapse would not inform clients that a device had exhausted its one-time-key pool, potentially causing problems decrypting events. ([\#10485](https://github.com/matrix-org/synapse/issues/10485)) - Fix reporting old R30 stats as R30v2 stats. Introduced in v1.39.0rc1. ([\#10486](https://github.com/matrix-org/synapse/issues/10486)) Internal Changes ---------------- - Fix an error which prevented the Github Actions workflow to build the docker images from running. ([\#10461](https://github.com/matrix-org/synapse/issues/10461)) - Fix release script to correctly version debian changelog when doing RCs. ([\#10465](https://github.com/matrix-org/synapse/issues/10465)) Synapse 1.39.0rc2 (2021-07-22) ============================== This release also includes the changes in v1.38.1. Internal Changes ---------------- - Move docker image build to Github Actions. ([\#10416](https://github.com/matrix-org/synapse/issues/10416)) Synapse 1.38.1 (2021-07-22) =========================== Bugfixes -------- - Always include `device_one_time_keys_count` key in `/sync` response to work around a bug in Element Android that broke encryption for new devices. ([\#10457](https://github.com/matrix-org/synapse/issues/10457)) Synapse 1.39.0rc1 (2021-07-20) ============================== The Third-Party Event Rules module interface has been deprecated in favour of the generic module interface introduced in Synapse v1.37.0. Support for the old interface is planned to be removed in September 2021. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html#upgrading-to-v1390) for more information. Features -------- - Add the ability to override the account validity feature with a module. ([\#9884](https://github.com/matrix-org/synapse/issues/9884)) - The spaces summary API now returns any joinable rooms, not only rooms which are world-readable. ([\#10298](https://github.com/matrix-org/synapse/issues/10298), [\#10305](https://github.com/matrix-org/synapse/issues/10305)) - Add a new version of the R30 phone-home metric, which removes a false impression of retention given by the old R30 metric. ([\#10332](https://github.com/matrix-org/synapse/issues/10332), [\#10427](https://github.com/matrix-org/synapse/issues/10427)) - Allow providing credentials to `http_proxy`. ([\#10360](https://github.com/matrix-org/synapse/issues/10360)) Bugfixes -------- - Fix error while dropping locks on shutdown. Introduced in v1.38.0. ([\#10433](https://github.com/matrix-org/synapse/issues/10433)) - Add base starting insertion event when no chunk ID is specified in the historical batch send API. ([\#10250](https://github.com/matrix-org/synapse/issues/10250)) - Fix historical batch send endpoint (MSC2716) rejecting batches with messages from multiple senders. ([\#10276](https://github.com/matrix-org/synapse/issues/10276)) - Fix purging rooms that other homeservers are still sending events for. Contributed by @ilmari. ([\#10317](https://github.com/matrix-org/synapse/issues/10317)) - Fix errors during backfill caused by previously purged redaction events. Contributed by Andreas Rammhold (@andir). ([\#10343](https://github.com/matrix-org/synapse/issues/10343)) - Fix the user directory becoming broken (and noisy errors being logged) when knocking and room statistics are in use. ([\#10344](https://github.com/matrix-org/synapse/issues/10344)) - Fix newly added `synapse_federation_server_oldest_inbound_pdu_in_staging` prometheus metric to measure age rather than timestamp. ([\#10355](https://github.com/matrix-org/synapse/issues/10355)) - Fix PostgreSQL sometimes using table scans for queries against `state_groups_state` table, taking a long time and a large amount of IO. ([\#10359](https://github.com/matrix-org/synapse/issues/10359)) - Fix `make_room_admin` failing for users that have left a private room. ([\#10367](https://github.com/matrix-org/synapse/issues/10367)) - Fix a number of logged errors caused by remote servers being down. ([\#10400](https://github.com/matrix-org/synapse/issues/10400), [\#10414](https://github.com/matrix-org/synapse/issues/10414)) - Responses from `/make_{join,leave,knock}` no longer include signatures, which will turn out to be invalid after events are returned to `/send_{join,leave,knock}`. ([\#10404](https://github.com/matrix-org/synapse/issues/10404)) Improved Documentation ---------------------- - Updated installation dependencies for newer macOS versions and ARM Macs. Contributed by Luke Walsh. ([\#9971](https://github.com/matrix-org/synapse/issues/9971)) - Simplify structure of room admin API. ([\#10313](https://github.com/matrix-org/synapse/issues/10313)) - Refresh the logcontext dev documentation. ([\#10353](https://github.com/matrix-org/synapse/issues/10353)), ([\#10337](https://github.com/matrix-org/synapse/issues/10337)) - Add delegation example for caddy in the reverse proxy documentation. Contributed by @moritzdietz. ([\#10368](https://github.com/matrix-org/synapse/issues/10368)) - Fix and clarify some links in `docs` and `contrib`. ([\#10370](https://github.com/matrix-org/synapse/issues/10370)), ([\#10322](https://github.com/matrix-org/synapse/issues/10322)), ([\#10399](https://github.com/matrix-org/synapse/issues/10399)) - Make deprecation notice of the spam checker doc more obvious. ([\#10395](https://github.com/matrix-org/synapse/issues/10395)) - Add instructions on installing Debian packages for release candidates. ([\#10396](https://github.com/matrix-org/synapse/issues/10396)) Deprecations and Removals ------------------------- - Remove functionality associated with the unused `room_stats_historical` and `user_stats_historical` tables. Contributed by @xmunoz. ([\#9721](https://github.com/matrix-org/synapse/issues/9721)) - The third-party event rules module interface is deprecated in favour of the generic module interface introduced in Synapse v1.37.0. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html#upgrading-to-v1390) for more information. ([\#10386](https://github.com/matrix-org/synapse/issues/10386)) Internal Changes ---------------- - Convert `room_depth.min_depth` column to a `BIGINT`. ([\#10289](https://github.com/matrix-org/synapse/issues/10289)) - Add tests to characterise the current behaviour of R30 phone-home metrics. ([\#10315](https://github.com/matrix-org/synapse/issues/10315)) - Rebuild event context and auth when processing specific results from `ThirdPartyEventRules` modules. ([\#10316](https://github.com/matrix-org/synapse/issues/10316)) - Minor change to the code that populates `user_daily_visits`. ([\#10324](https://github.com/matrix-org/synapse/issues/10324)) - Re-enable Sytests that were disabled for the 1.37.1 release. ([\#10345](https://github.com/matrix-org/synapse/issues/10345), [\#10357](https://github.com/matrix-org/synapse/issues/10357)) - Run `pyupgrade` on the codebase. ([\#10347](https://github.com/matrix-org/synapse/issues/10347), [\#10348](https://github.com/matrix-org/synapse/issues/10348)) - Switch `application_services_txns.txn_id` database column to `BIGINT`. ([\#10349](https://github.com/matrix-org/synapse/issues/10349)) - Convert internal type variable syntax to reflect wider ecosystem use. ([\#10350](https://github.com/matrix-org/synapse/issues/10350), [\#10380](https://github.com/matrix-org/synapse/issues/10380), [\#10381](https://github.com/matrix-org/synapse/issues/10381), [\#10382](https://github.com/matrix-org/synapse/issues/10382), [\#10418](https://github.com/matrix-org/synapse/issues/10418)) - Make the Github Actions workflow configuration more efficient. ([\#10383](https://github.com/matrix-org/synapse/issues/10383)) - Add type hints to `get_{domain,localpart}_from_id`. ([\#10385](https://github.com/matrix-org/synapse/issues/10385)) - When building Debian packages for prerelease versions, set the Section accordingly. ([\#10391](https://github.com/matrix-org/synapse/issues/10391)) - Add type hints and comments to event auth code. ([\#10393](https://github.com/matrix-org/synapse/issues/10393)) - Stagger sending of presence update to remote servers, reducing CPU spikes caused by starting many connections to remote servers at once. ([\#10398](https://github.com/matrix-org/synapse/issues/10398)) - Remove unused `events_by_room` code (tech debt). ([\#10421](https://github.com/matrix-org/synapse/issues/10421)) - Add a github actions job which records success of other jobs. ([\#10430](https://github.com/matrix-org/synapse/issues/10430)) Synapse 1.38.0 (2021-07-13) =========================== This release includes a database schema update which could result in elevated disk usage. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1380) for more information. No significant changes since 1.38.0rc3. Synapse 1.38.0rc3 (2021-07-13) ============================== Internal Changes ---------------- - Build the Debian packages in CI. ([\#10247](https://github.com/matrix-org/synapse/issues/10247), [\#10379](https://github.com/matrix-org/synapse/issues/10379)) Synapse 1.38.0rc2 (2021-07-09) ============================== Bugfixes -------- - Fix bug where inbound federation in a room could be delayed due to not correctly dropping a lock. Introduced in v1.37.1. ([\#10336](https://github.com/matrix-org/synapse/issues/10336)) Improved Documentation ---------------------- - Update links to documentation in the sample config. Contributed by @dklimpel. ([\#10287](https://github.com/matrix-org/synapse/issues/10287)) - Fix broken links in [INSTALL.md](INSTALL.md). Contributed by @dklimpel. ([\#10331](https://github.com/matrix-org/synapse/issues/10331)) Synapse 1.38.0rc1 (2021-07-06) ============================== Features -------- - Implement refresh tokens as specified by [MSC2918](https://github.com/matrix-org/matrix-doc/pull/2918). ([\#9450](https://github.com/matrix-org/synapse/issues/9450)) - Add support for evicting cache entries based on last access time. ([\#10205](https://github.com/matrix-org/synapse/issues/10205)) - Omit empty fields from the `/sync` response. Contributed by @deepbluev7. ([\#10214](https://github.com/matrix-org/synapse/issues/10214)) - Improve validation on federation `send_{join,leave,knock}` endpoints. ([\#10225](https://github.com/matrix-org/synapse/issues/10225), [\#10243](https://github.com/matrix-org/synapse/issues/10243)) - Add SSO `external_ids` to the Query User Account admin API. ([\#10261](https://github.com/matrix-org/synapse/issues/10261)) - Mark events received over federation which fail a spam check as "soft-failed". ([\#10263](https://github.com/matrix-org/synapse/issues/10263)) - Add metrics for new inbound federation staging area. ([\#10284](https://github.com/matrix-org/synapse/issues/10284)) - Add script to print information about recently registered users. ([\#10290](https://github.com/matrix-org/synapse/issues/10290)) Bugfixes -------- - Fix a long-standing bug which meant that invite rejections and knocks were not sent out over federation in a timely manner. ([\#10223](https://github.com/matrix-org/synapse/issues/10223)) - Fix a bug introduced in v1.26.0 where only users who have set profile information could be deactivated with erasure enabled. ([\#10252](https://github.com/matrix-org/synapse/issues/10252)) - Fix a long-standing bug where Synapse would return errors after 231 events were handled by the server. ([\#10264](https://github.com/matrix-org/synapse/issues/10264), [\#10267](https://github.com/matrix-org/synapse/issues/10267), [\#10282](https://github.com/matrix-org/synapse/issues/10282), [\#10286](https://github.com/matrix-org/synapse/issues/10286), [\#10291](https://github.com/matrix-org/synapse/issues/10291), [\#10314](https://github.com/matrix-org/synapse/issues/10314), [\#10326](https://github.com/matrix-org/synapse/issues/10326)) - Fix the prometheus `synapse_federation_server_pdu_process_time` metric. Broke in v1.37.1. ([\#10279](https://github.com/matrix-org/synapse/issues/10279)) - Ensure that inbound events from federation that were being processed when Synapse was restarted get promptly processed on start up. ([\#10303](https://github.com/matrix-org/synapse/issues/10303)) Improved Documentation ---------------------- - Move the upgrade notes to [docs/upgrade.md](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md) and convert them to markdown. ([\#10166](https://github.com/matrix-org/synapse/issues/10166)) - Choose Welcome & Overview as the default page for synapse documentation website. ([\#10242](https://github.com/matrix-org/synapse/issues/10242)) - Adjust the URL in the README.rst file to point to irc.libera.chat. ([\#10258](https://github.com/matrix-org/synapse/issues/10258)) - Fix homeserver config option name in presence router documentation. ([\#10288](https://github.com/matrix-org/synapse/issues/10288)) - Fix link pointing at the wrong section in the modules documentation page. ([\#10302](https://github.com/matrix-org/synapse/issues/10302)) Internal Changes ---------------- - Drop `Origin` and `Accept` from the value of the `Access-Control-Allow-Headers` response header. ([\#10114](https://github.com/matrix-org/synapse/issues/10114)) - Add type hints to the federation servlets. ([\#10213](https://github.com/matrix-org/synapse/issues/10213)) - Improve the reliability of auto-joining remote rooms. ([\#10237](https://github.com/matrix-org/synapse/issues/10237)) - Update the release script to use the semver terminology and determine the release branch based on the next version. ([\#10239](https://github.com/matrix-org/synapse/issues/10239)) - Fix type hints for computing auth events. ([\#10253](https://github.com/matrix-org/synapse/issues/10253)) - Improve the performance of the spaces summary endpoint by only recursing into spaces (and not rooms in general). ([\#10256](https://github.com/matrix-org/synapse/issues/10256)) - Move event authentication methods from `Auth` to `EventAuthHandler`. ([\#10268](https://github.com/matrix-org/synapse/issues/10268)) - Re-enable a SyTest after it has been fixed. ([\#10292](https://github.com/matrix-org/synapse/issues/10292)) Synapse 1.37.1 (2021-06-30) =========================== This release resolves issues (such as [#9490](https://github.com/matrix-org/synapse/issues/9490)) where one busy room could cause head-of-line blocking, starving Synapse from processing events in other rooms, and causing all federated traffic to fall behind. Synapse 1.37.1 processes inbound federation traffic asynchronously, ensuring that one busy room won't impact others. Please upgrade to Synapse 1.37.1 as soon as possible, in order to increase resilience to other traffic spikes. No significant changes since v1.37.1rc1. Synapse 1.37.1rc1 (2021-06-29) ============================== Features -------- - Handle inbound events from federation asynchronously. ([\#10269](https://github.com/matrix-org/synapse/issues/10269), [\#10272](https://github.com/matrix-org/synapse/issues/10272)) Synapse 1.37.0 (2021-06-29) =========================== This release deprecates the current spam checker interface. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#deprecation-of-the-current-spam-checker-interface) for more information on how to update to the new generic module interface. This release also removes support for fetching and renewing TLS certificates using the ACME v1 protocol, which has been fully decommissioned by Let's Encrypt on June 1st 2021. Admins previously using this feature should use a [reverse proxy](https://matrix-org.github.io/synapse/develop/reverse_proxy.html) to handle TLS termination, or use an external ACME client (such as [certbot](https://certbot.eff.org/)) to retrieve a certificate and key and provide them to Synapse using the `tls_certificate_path` and `tls_private_key_path` configuration settings. Synapse 1.37.0rc1 (2021-06-24) ============================== Features -------- - Implement "room knocking" as per [MSC2403](https://github.com/matrix-org/matrix-doc/pull/2403). Contributed by @Sorunome and anoa. ([\#6739](https://github.com/matrix-org/synapse/issues/6739), [\#9359](https://github.com/matrix-org/synapse/issues/9359), [\#10167](https://github.com/matrix-org/synapse/issues/10167), [\#10212](https://github.com/matrix-org/synapse/issues/10212), [\#10227](https://github.com/matrix-org/synapse/issues/10227)) - Add experimental support for backfilling history into rooms ([MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716)). ([\#9247](https://github.com/matrix-org/synapse/issues/9247)) - Implement a generic interface for third-party plugin modules. ([\#10062](https://github.com/matrix-org/synapse/issues/10062), [\#10206](https://github.com/matrix-org/synapse/issues/10206)) - Implement config option `sso.update_profile_information` to sync SSO users' profile information with the identity provider each time they login. Currently only displayname is supported. ([\#10108](https://github.com/matrix-org/synapse/issues/10108)) - Ensure that errors during startup are written to the logs and the console. ([\#10191](https://github.com/matrix-org/synapse/issues/10191)) Bugfixes -------- - Fix a bug introduced in Synapse v1.25.0 that prevented the `ip_range_whitelist` configuration option from working for federation and identity servers. Contributed by @mikure. ([\#10115](https://github.com/matrix-org/synapse/issues/10115)) - Remove a broken import line in Synapse's `admin_cmd` worker. Broke in Synapse v1.33.0. ([\#10154](https://github.com/matrix-org/synapse/issues/10154)) - Fix a bug introduced in Synapse v1.21.0 which could cause `/sync` to return immediately with an empty response. ([\#10157](https://github.com/matrix-org/synapse/issues/10157), [\#10158](https://github.com/matrix-org/synapse/issues/10158)) - Fix a minor bug in the response to `/_matrix/client/r0/user/{user}/openid/request_token` causing `expires_in` to be a float instead of an integer. Contributed by @lukaslihotzki. ([\#10175](https://github.com/matrix-org/synapse/issues/10175)) - Always require users to re-authenticate for dangerous operations: deactivating an account, modifying an account password, and adding 3PIDs. ([\#10184](https://github.com/matrix-org/synapse/issues/10184)) - Fix a bug introduced in Synpase v1.7.2 where remote server count metrics collection would be incorrectly delayed on startup. Found by @heftig. ([\#10195](https://github.com/matrix-org/synapse/issues/10195)) - Fix a bug introduced in Synapse v1.35.1 where an `allow` key of a `m.room.join_rules` event could be applied for incorrect room versions and configurations. ([\#10208](https://github.com/matrix-org/synapse/issues/10208)) - Fix performance regression in responding to user key requests over federation. Introduced in Synapse v1.34.0rc1. ([\#10221](https://github.com/matrix-org/synapse/issues/10221)) Improved Documentation ---------------------- - Add a new guide to decoding request logs. ([\#8436](https://github.com/matrix-org/synapse/issues/8436)) - Mention in the sample homeserver config that you may need to configure max upload size in your reverse proxy. Contributed by @aaronraimist. ([\#10122](https://github.com/matrix-org/synapse/issues/10122)) - Fix broken links in documentation. ([\#10180](https://github.com/matrix-org/synapse/issues/10180)) - Deploy a snapshot of the documentation website upon each new Synapse release. ([\#10198](https://github.com/matrix-org/synapse/issues/10198)) Deprecations and Removals ------------------------- - The current spam checker interface is deprecated in favour of a new generic modules system. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#deprecation-of-the-current-spam-checker-interface) for more information on how to update to the new system. ([\#10062](https://github.com/matrix-org/synapse/issues/10062), [\#10210](https://github.com/matrix-org/synapse/issues/10210), [\#10238](https://github.com/matrix-org/synapse/issues/10238)) - Stop supporting the unstable spaces prefixes from MSC1772. ([\#10161](https://github.com/matrix-org/synapse/issues/10161)) - Remove Synapse's support for automatically fetching and renewing certificates using the ACME v1 protocol. This protocol has been fully turned off by Let's Encrypt for existing installations on June 1st 2021. Admins previously using this feature should use a [reverse proxy](https://matrix-org.github.io/synapse/develop/reverse_proxy.html) to handle TLS termination, or use an external ACME client (such as [certbot](https://certbot.eff.org/)) to retrieve a certificate and key and provide them to Synapse using the `tls_certificate_path` and `tls_private_key_path` configuration settings. ([\#10194](https://github.com/matrix-org/synapse/issues/10194)) Internal Changes ---------------- - Update the database schema versioning to support gradual migration away from legacy tables. ([\#9933](https://github.com/matrix-org/synapse/issues/9933)) - Add type hints to the federation servlets. ([\#10080](https://github.com/matrix-org/synapse/issues/10080)) - Improve OpenTracing for event persistence. ([\#10134](https://github.com/matrix-org/synapse/issues/10134), [\#10193](https://github.com/matrix-org/synapse/issues/10193)) - Clean up the interface for injecting OpenTracing over HTTP. ([\#10143](https://github.com/matrix-org/synapse/issues/10143)) - Limit the number of in-flight `/keys/query` requests from a single device. ([\#10144](https://github.com/matrix-org/synapse/issues/10144)) - Refactor EventPersistenceQueue. ([\#10145](https://github.com/matrix-org/synapse/issues/10145)) - Document `SYNAPSE_TEST_LOG_LEVEL` to see the logger output when running tests. ([\#10148](https://github.com/matrix-org/synapse/issues/10148)) - Update the Complement build tags in GitHub Actions to test currently experimental features. ([\#10155](https://github.com/matrix-org/synapse/issues/10155)) - Add a `synapse_federation_soft_failed_events_total` metric to track how often events are soft failed. ([\#10156](https://github.com/matrix-org/synapse/issues/10156)) - Fetch the corresponding complement branch when performing CI. ([\#10160](https://github.com/matrix-org/synapse/issues/10160)) - Add some developer documentation about boolean columns in database schemas. ([\#10164](https://github.com/matrix-org/synapse/issues/10164)) - Add extra logging fields to better debug where events are being soft failed. ([\#10168](https://github.com/matrix-org/synapse/issues/10168)) - Add debug logging for when we enter and exit `Measure` blocks. ([\#10183](https://github.com/matrix-org/synapse/issues/10183)) - Improve comments in structured logging code. ([\#10188](https://github.com/matrix-org/synapse/issues/10188)) - Update [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083) support with modifications from the MSC. ([\#10189](https://github.com/matrix-org/synapse/issues/10189)) - Remove redundant DNS lookup limiter. ([\#10190](https://github.com/matrix-org/synapse/issues/10190)) - Upgrade `black` linting tool to 21.6b0. ([\#10197](https://github.com/matrix-org/synapse/issues/10197)) - Expose OpenTracing trace id in response headers. ([\#10199](https://github.com/matrix-org/synapse/issues/10199)) Synapse 1.36.0 (2021-06-15) =========================== No significant changes. Synapse 1.36.0rc2 (2021-06-11) ============================== Bugfixes -------- - Fix a bug which caused presence updates to stop working some time after a restart, when using a presence writer worker. Broke in v1.33.0. ([\#10149](https://github.com/matrix-org/synapse/issues/10149)) - Fix a bug when using federation sender worker where it would send out more presence updates than necessary, leading to high resource usage. Broke in v1.33.0. ([\#10163](https://github.com/matrix-org/synapse/issues/10163)) - Fix a bug where Synapse could send the same presence update to a remote twice. ([\#10165](https://github.com/matrix-org/synapse/issues/10165)) Synapse 1.36.0rc1 (2021-06-08) ============================== Features -------- - Add new endpoint `/_matrix/client/r0/rooms/{roomId}/aliases` from Client-Server API r0.6.1 (previously [MSC2432](https://github.com/matrix-org/matrix-doc/pull/2432)). ([\#9224](https://github.com/matrix-org/synapse/issues/9224)) - Improve performance of incoming federation transactions in large rooms. ([\#9953](https://github.com/matrix-org/synapse/issues/9953), [\#9973](https://github.com/matrix-org/synapse/issues/9973)) - Rewrite logic around verifying JSON object and fetching server keys to be more performant and use less memory. ([\#10035](https://github.com/matrix-org/synapse/issues/10035)) - Add new admin APIs for unprotecting local media from quarantine. Contributed by @dklimpel. ([\#10040](https://github.com/matrix-org/synapse/issues/10040)) - Add new admin APIs to remove media by media ID from quarantine. Contributed by @dklimpel. ([\#10044](https://github.com/matrix-org/synapse/issues/10044)) - Make reason and score parameters optional for reporting content. Implements [MSC2414](https://github.com/matrix-org/matrix-doc/pull/2414). Contributed by Callum Brown. ([\#10077](https://github.com/matrix-org/synapse/issues/10077)) - Add support for routing more requests to workers. ([\#10084](https://github.com/matrix-org/synapse/issues/10084)) - Report OpenTracing spans for database activity. ([\#10113](https://github.com/matrix-org/synapse/issues/10113), [\#10136](https://github.com/matrix-org/synapse/issues/10136), [\#10141](https://github.com/matrix-org/synapse/issues/10141)) - Significantly reduce memory usage of joining large remote rooms. ([\#10117](https://github.com/matrix-org/synapse/issues/10117)) Bugfixes -------- - Fixed a bug causing replication requests to fail when receiving a lot of events via federation. ([\#10082](https://github.com/matrix-org/synapse/issues/10082)) - Fix a bug in the `force_tracing_for_users` option introduced in Synapse v1.35 which meant that the OpenTracing spans produced were missing most tags. ([\#10092](https://github.com/matrix-org/synapse/issues/10092)) - Fixed a bug that could cause Synapse to stop notifying application services. Contributed by Willem Mulder. ([\#10107](https://github.com/matrix-org/synapse/issues/10107)) - Fix bug where the server would attempt to fetch the same history in the room from a remote server multiple times in parallel. ([\#10116](https://github.com/matrix-org/synapse/issues/10116)) - Fix a bug introduced in Synapse 1.33.0 which caused replication requests to fail when receiving a lot of very large events via federation. ([\#10118](https://github.com/matrix-org/synapse/issues/10118)) - Fix bug when using workers where pagination requests failed if a remote server returned zero events from `/backfill`. Introduced in 1.35.0. ([\#10133](https://github.com/matrix-org/synapse/issues/10133)) Improved Documentation ---------------------- - Clarify security note regarding hosting Synapse on the same domain as other web applications. ([\#9221](https://github.com/matrix-org/synapse/issues/9221)) - Update CAPTCHA documentation to mention turning off the verify origin feature. Contributed by @aaronraimist. ([\#10046](https://github.com/matrix-org/synapse/issues/10046)) - Tweak wording of database recommendation in `INSTALL.md`. Contributed by @aaronraimist. ([\#10057](https://github.com/matrix-org/synapse/issues/10057)) - Add initial infrastructure for rendering Synapse documentation with mdbook. ([\#10086](https://github.com/matrix-org/synapse/issues/10086)) - Convert the remaining Admin API documentation files to markdown. ([\#10089](https://github.com/matrix-org/synapse/issues/10089)) - Make a link in docs use HTTPS. Contributed by @RhnSharma. ([\#10130](https://github.com/matrix-org/synapse/issues/10130)) - Fix broken link in Docker docs. ([\#10132](https://github.com/matrix-org/synapse/issues/10132)) Deprecations and Removals ------------------------- - Remove the experimental `spaces_enabled` flag. The spaces features are always available now. ([\#10063](https://github.com/matrix-org/synapse/issues/10063)) Internal Changes ---------------- - Tell CircleCI to build Docker images from `main` branch. ([\#9906](https://github.com/matrix-org/synapse/issues/9906)) - Simplify naming convention for release branches to only include the major and minor version numbers. ([\#10013](https://github.com/matrix-org/synapse/issues/10013)) - Add `parse_strings_from_args` for parsing an array from query parameters. ([\#10048](https://github.com/matrix-org/synapse/issues/10048), [\#10137](https://github.com/matrix-org/synapse/issues/10137)) - Remove some dead code regarding TLS certificate handling. ([\#10054](https://github.com/matrix-org/synapse/issues/10054)) - Remove redundant, unmaintained `convert_server_keys` script. ([\#10055](https://github.com/matrix-org/synapse/issues/10055)) - Improve the error message printed by synctl when synapse fails to start. ([\#10059](https://github.com/matrix-org/synapse/issues/10059)) - Fix GitHub Actions lint for newsfragments. ([\#10069](https://github.com/matrix-org/synapse/issues/10069)) - Update opentracing to inject the right context into the carrier. ([\#10074](https://github.com/matrix-org/synapse/issues/10074)) - Fix up `BatchingQueue` implementation. ([\#10078](https://github.com/matrix-org/synapse/issues/10078)) - Log method and path when dropping request due to size limit. ([\#10091](https://github.com/matrix-org/synapse/issues/10091)) - In Github Actions workflows, summarize the Sytest results in an easy-to-read format. ([\#10094](https://github.com/matrix-org/synapse/issues/10094)) - Make `/sync` do fewer state resolutions. ([\#10102](https://github.com/matrix-org/synapse/issues/10102)) - Add missing type hints to the admin API servlets. ([\#10105](https://github.com/matrix-org/synapse/issues/10105)) - Improve opentracing annotations for `Notifier`. ([\#10111](https://github.com/matrix-org/synapse/issues/10111)) - Enable Prometheus metrics for the jaeger client library. ([\#10112](https://github.com/matrix-org/synapse/issues/10112)) - Work to improve the responsiveness of `/sync` requests. ([\#10124](https://github.com/matrix-org/synapse/issues/10124)) - OpenTracing: use a consistent name for background processes. ([\#10135](https://github.com/matrix-org/synapse/issues/10135)) Synapse 1.35.1 (2021-06-03) =========================== Bugfixes -------- - Fix a bug introduced in v1.35.0 where invite-only rooms would be shown to all users in a space, regardless of if the user had access to it. ([\#10109](https://github.com/matrix-org/synapse/issues/10109)) Synapse 1.35.0 (2021-06-01) =========================== Note that [the tag](https://github.com/matrix-org/synapse/releases/tag/v1.35.0rc3) and [docker images](https://hub.docker.com/layers/matrixdotorg/synapse/v1.35.0rc3/images/sha256-34ccc87bd99a17e2cbc0902e678b5937d16bdc1991ead097eee6096481ecf2c4?context=explore) for `v1.35.0rc3` were incorrectly built. If you are experiencing issues with either, it is recommended to upgrade to the equivalent tag or docker image for the `v1.35.0` release. Deprecations and Removals ------------------------- - The core Synapse development team plan to drop support for the [unstable API of MSC2858](https://github.com/matrix-org/matrix-doc/blob/master/proposals/2858-Multiple-SSO-Identity-Providers.md#unstable-prefix), including the undocumented `experimental.msc2858_enabled` config option, in August 2021. Client authors should ensure that their clients are updated to use the stable API (which has been supported since Synapse 1.30) well before that time, to give their users time to upgrade. ([\#10101](https://github.com/matrix-org/synapse/issues/10101)) Bugfixes -------- - Fixed a bug causing replication requests to fail when receiving a lot of events via federation. Introduced in v1.33.0. ([\#10082](https://github.com/matrix-org/synapse/issues/10082)) - Fix HTTP response size limit to allow joining very large rooms over federation. Introduced in v1.33.0. ([\#10093](https://github.com/matrix-org/synapse/issues/10093)) Internal Changes ---------------- - Log method and path when dropping request due to size limit. ([\#10091](https://github.com/matrix-org/synapse/issues/10091)) Synapse 1.35.0rc2 (2021-05-27) ============================== Bugfixes -------- - Fix a bug introduced in v1.35.0rc1 when calling the spaces summary API via a GET request. ([\#10079](https://github.com/matrix-org/synapse/issues/10079)) Synapse 1.35.0rc1 (2021-05-25) ============================== Features -------- - Add experimental support to allow a user who could join a restricted room to view it in the spaces summary. ([\#9922](https://github.com/matrix-org/synapse/issues/9922), [\#10007](https://github.com/matrix-org/synapse/issues/10007), [\#10038](https://github.com/matrix-org/synapse/issues/10038)) - Reduce memory usage when joining very large rooms over federation. ([\#9958](https://github.com/matrix-org/synapse/issues/9958)) - Add a configuration option which allows enabling opentracing by user id. ([\#9978](https://github.com/matrix-org/synapse/issues/9978)) - Enable experimental support for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946) (spaces summary API) and [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083) (restricted join rules) by default. ([\#10011](https://github.com/matrix-org/synapse/issues/10011)) Bugfixes -------- - Fix a bug introduced in v1.26.0 which meant that `synapse_port_db` would not correctly initialise some postgres sequences, requiring manual updates afterwards. ([\#9991](https://github.com/matrix-org/synapse/issues/9991)) - Fix `synctl`'s `--no-daemonize` parameter to work correctly with worker processes. ([\#9995](https://github.com/matrix-org/synapse/issues/9995)) - Fix a validation bug introduced in v1.34.0 in the ordering of spaces in the space summary API. ([\#10002](https://github.com/matrix-org/synapse/issues/10002)) - Fixed deletion of new presence stream states from database. ([\#10014](https://github.com/matrix-org/synapse/issues/10014), [\#10033](https://github.com/matrix-org/synapse/issues/10033)) - Fixed a bug with very high resolution image uploads throwing internal server errors. ([\#10029](https://github.com/matrix-org/synapse/issues/10029)) Updates to the Docker image --------------------------- - Fix bug introduced in Synapse 1.33.0 which caused a `Permission denied: '/homeserver.log'` error when starting Synapse with the generated log configuration. Contributed by Sergio Miguéns Iglesias. ([\#10045](https://github.com/matrix-org/synapse/issues/10045)) Improved Documentation ---------------------- - Add hardened systemd files as proposed in [#9760](https://github.com/matrix-org/synapse/issues/9760) and added them to `contrib/`. Change the docs to reflect the presence of these files. ([\#9803](https://github.com/matrix-org/synapse/issues/9803)) - Clarify documentation around SSO mapping providers generating unique IDs and localparts. ([\#9980](https://github.com/matrix-org/synapse/issues/9980)) - Updates to the PostgreSQL documentation (`postgres.md`). ([\#9988](https://github.com/matrix-org/synapse/issues/9988), [\#9989](https://github.com/matrix-org/synapse/issues/9989)) - Fix broken link in user directory documentation. Contributed by @junquera. ([\#10016](https://github.com/matrix-org/synapse/issues/10016)) - Add missing room state entry to the table of contents of room admin API. ([\#10043](https://github.com/matrix-org/synapse/issues/10043)) Deprecations and Removals ------------------------- - Removed support for the deprecated `tls_fingerprints` configuration setting. Contributed by Jerin J Titus. ([\#9280](https://github.com/matrix-org/synapse/issues/9280)) Internal Changes ---------------- - Allow sending full presence to users via workers other than the one that called `ModuleApi.send_local_online_presence_to`. ([\#9823](https://github.com/matrix-org/synapse/issues/9823)) - Update comments in the space summary handler. ([\#9974](https://github.com/matrix-org/synapse/issues/9974)) - Minor enhancements to the `@cachedList` descriptor. ([\#9975](https://github.com/matrix-org/synapse/issues/9975)) - Split multipart email sending into a dedicated handler. ([\#9977](https://github.com/matrix-org/synapse/issues/9977)) - Run `black` on files in the `scripts` directory. ([\#9981](https://github.com/matrix-org/synapse/issues/9981)) - Add missing type hints to `synapse.util` module. ([\#9982](https://github.com/matrix-org/synapse/issues/9982)) - Simplify a few helper functions. ([\#9984](https://github.com/matrix-org/synapse/issues/9984), [\#9985](https://github.com/matrix-org/synapse/issues/9985), [\#9986](https://github.com/matrix-org/synapse/issues/9986)) - Remove unnecessary property from SQLBaseStore. ([\#9987](https://github.com/matrix-org/synapse/issues/9987)) - Remove `keylen` param on `LruCache`. ([\#9993](https://github.com/matrix-org/synapse/issues/9993)) - Update the Grafana dashboard in `contrib/`. ([\#10001](https://github.com/matrix-org/synapse/issues/10001)) - Add a batching queue implementation. ([\#10017](https://github.com/matrix-org/synapse/issues/10017)) - Reduce memory usage when verifying signatures on large numbers of events at once. ([\#10018](https://github.com/matrix-org/synapse/issues/10018)) - Properly invalidate caches for destination retry timings every (instead of expiring entries every 5 minutes). ([\#10036](https://github.com/matrix-org/synapse/issues/10036)) - Fix running complement tests with Synapse workers. ([\#10039](https://github.com/matrix-org/synapse/issues/10039)) - Fix typo in `get_state_ids_for_event` docstring where the return type was incorrect. ([\#10050](https://github.com/matrix-org/synapse/issues/10050)) Synapse 1.34.0 (2021-05-17) =========================== This release deprecates the `room_invite_state_types` configuration setting. See the [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.34.0/UPGRADE.rst#upgrading-to-v1340) for instructions on updating your configuration file to use the new `room_prejoin_state` setting. This release also deprecates the `POST /_synapse/admin/v1/rooms//delete` admin API route. Server administrators are encouraged to update their scripts to use the new `DELETE /_synapse/admin/v1/rooms/` route instead. No significant changes since v1.34.0rc1. Synapse 1.34.0rc1 (2021-05-12) ============================== Features -------- - Add experimental option to track memory usage of the caches. ([\#9881](https://github.com/matrix-org/synapse/issues/9881)) - Add support for `DELETE /_synapse/admin/v1/rooms/`. ([\#9889](https://github.com/matrix-org/synapse/issues/9889)) - Add limits to how often Synapse will GC, ensuring that large servers do not end up GC thrashing if `gc_thresholds` has not been correctly set. ([\#9902](https://github.com/matrix-org/synapse/issues/9902)) - Improve performance of sending events for worker-based deployments using Redis. ([\#9905](https://github.com/matrix-org/synapse/issues/9905), [\#9950](https://github.com/matrix-org/synapse/issues/9950), [\#9951](https://github.com/matrix-org/synapse/issues/9951)) - Improve performance after joining a large room when presence is enabled. ([\#9910](https://github.com/matrix-org/synapse/issues/9910), [\#9916](https://github.com/matrix-org/synapse/issues/9916)) - Support stable identifiers for [MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772) Spaces. `m.space.child` events will now be taken into account when populating the experimental spaces summary response. Please see [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.34.0/UPGRADE.rst#upgrading-to-v1340) if you have customised `room_invite_state_types` in your configuration. ([\#9915](https://github.com/matrix-org/synapse/issues/9915), [\#9966](https://github.com/matrix-org/synapse/issues/9966)) - Improve performance of backfilling in large rooms. ([\#9935](https://github.com/matrix-org/synapse/issues/9935)) - Add a config option to allow you to prevent device display names from being shared over federation. Contributed by @aaronraimist. ([\#9945](https://github.com/matrix-org/synapse/issues/9945)) - Update support for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946): Spaces Summary. ([\#9947](https://github.com/matrix-org/synapse/issues/9947), [\#9954](https://github.com/matrix-org/synapse/issues/9954)) Bugfixes -------- - Fix a bug introduced in v1.32.0 where the associated connection was improperly logged for SQL logging statements. ([\#9895](https://github.com/matrix-org/synapse/issues/9895)) - Correct the type hint for the `user_may_create_room_alias` method of spam checkers. It is provided a `RoomAlias`, not a `str`. ([\#9896](https://github.com/matrix-org/synapse/issues/9896)) - Fix bug where user directory could get out of sync if room visibility and membership changed in quick succession. ([\#9910](https://github.com/matrix-org/synapse/issues/9910)) - Include the `origin_server_ts` property in the experimental [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946) support to allow clients to properly sort rooms. ([\#9928](https://github.com/matrix-org/synapse/issues/9928)) - Fix bugs introduced in v1.23.0 which made the PostgreSQL port script fail when run with a newly-created SQLite database. ([\#9930](https://github.com/matrix-org/synapse/issues/9930)) - Fix a bug introduced in Synapse 1.29.0 which caused `m.room_key_request` to-device messages sent from one user to another to be dropped. ([\#9961](https://github.com/matrix-org/synapse/issues/9961), [\#9965](https://github.com/matrix-org/synapse/issues/9965)) - Fix a bug introduced in v1.27.0 preventing users and appservices exempt from ratelimiting from creating rooms with many invitees. ([\#9968](https://github.com/matrix-org/synapse/issues/9968)) Updates to the Docker image --------------------------- - Add `startup_delay` to docker healthcheck to reduce waiting time for coming online and update the documentation with extra options. Contributed by @Maquis196. ([\#9913](https://github.com/matrix-org/synapse/issues/9913)) Improved Documentation ---------------------- - Add `port` argument to the Postgres database sample config section. ([\#9911](https://github.com/matrix-org/synapse/issues/9911)) Deprecations and Removals ------------------------- - Mark as deprecated `POST /_synapse/admin/v1/rooms//delete`. ([\#9889](https://github.com/matrix-org/synapse/issues/9889)) Internal Changes ---------------- - Reduce the length of Synapse's access tokens. ([\#5588](https://github.com/matrix-org/synapse/issues/5588)) - Export jemalloc stats to Prometheus if it is being used. ([\#9882](https://github.com/matrix-org/synapse/issues/9882)) - Add type hints to presence handler. ([\#9885](https://github.com/matrix-org/synapse/issues/9885)) - Reduce memory usage of the LRU caches. ([\#9886](https://github.com/matrix-org/synapse/issues/9886)) - Add type hints to the `synapse.handlers` module. ([\#9896](https://github.com/matrix-org/synapse/issues/9896)) - Time response time for external cache requests. ([\#9904](https://github.com/matrix-org/synapse/issues/9904)) - Minor fixes to the `make_full_schema.sh` script. ([\#9931](https://github.com/matrix-org/synapse/issues/9931)) - Move database schema files into a common directory. ([\#9932](https://github.com/matrix-org/synapse/issues/9932)) - Add debug logging for lost/delayed to-device messages. ([\#9959](https://github.com/matrix-org/synapse/issues/9959)) Synapse 1.33.2 (2021-05-11) =========================== Due to the security issue highlighted below, server administrators are encouraged to update Synapse. We are not aware of these vulnerabilities being exploited in the wild. Security advisory ----------------- This release fixes a denial of service attack ([CVE-2021-29471](https://github.com/matrix-org/synapse/security/advisories/GHSA-x345-32rc-8h85)) against Synapse's push rules implementation. Server admins are encouraged to upgrade. Internal Changes ---------------- - Unpin attrs dependency. ([\#9946](https://github.com/matrix-org/synapse/issues/9946)) Synapse 1.33.1 (2021-05-06) =========================== Bugfixes -------- - Fix bug where `/sync` would break if using the latest version of `attrs` dependency, by pinning to a previous version. ([\#9937](https://github.com/matrix-org/synapse/issues/9937)) Synapse 1.33.0 (2021-05-05) =========================== Features -------- - Build Debian packages for Ubuntu 21.04 (Hirsute Hippo). ([\#9909](https://github.com/matrix-org/synapse/issues/9909)) Synapse 1.33.0rc2 (2021-04-29) ============================== Bugfixes -------- - Fix tight loop when handling presence replication when using workers. Introduced in v1.33.0rc1. ([\#9900](https://github.com/matrix-org/synapse/issues/9900)) Synapse 1.33.0rc1 (2021-04-28) ============================== Features -------- - Update experimental support for [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083): restricting room access via group membership. ([\#9800](https://github.com/matrix-org/synapse/issues/9800), [\#9814](https://github.com/matrix-org/synapse/issues/9814)) - Add experimental support for handling presence on a worker. ([\#9819](https://github.com/matrix-org/synapse/issues/9819), [\#9820](https://github.com/matrix-org/synapse/issues/9820), [\#9828](https://github.com/matrix-org/synapse/issues/9828), [\#9850](https://github.com/matrix-org/synapse/issues/9850)) - Return a new template when an user attempts to renew their account multiple times with the same token, stating that their account is set to expire. This replaces the invalid token template that would previously be shown in this case. This change concerns the optional account validity feature. ([\#9832](https://github.com/matrix-org/synapse/issues/9832)) Bugfixes -------- - Fixes the OIDC SSO flow when using a `public_baseurl` value including a non-root URL path. ([\#9726](https://github.com/matrix-org/synapse/issues/9726)) - Fix thumbnail generation for some sites with non-standard content types. Contributed by @rkfg. ([\#9788](https://github.com/matrix-org/synapse/issues/9788)) - Add some sanity checks to identity server passed to 3PID bind/unbind endpoints. ([\#9802](https://github.com/matrix-org/synapse/issues/9802)) - Limit the size of HTTP responses read over federation. ([\#9833](https://github.com/matrix-org/synapse/issues/9833)) - Fix a bug which could cause Synapse to get stuck in a loop of resyncing device lists. ([\#9867](https://github.com/matrix-org/synapse/issues/9867)) - Fix a long-standing bug where errors from federation did not propagate to the client. ([\#9868](https://github.com/matrix-org/synapse/issues/9868)) Improved Documentation ---------------------- - Add a note to the docker docs mentioning that we mirror upstream's supported Docker platforms. ([\#9801](https://github.com/matrix-org/synapse/issues/9801)) Internal Changes ---------------- - Add a dockerfile for running Synapse in worker-mode under Complement. ([\#9162](https://github.com/matrix-org/synapse/issues/9162)) - Apply `pyupgrade` across the codebase. ([\#9786](https://github.com/matrix-org/synapse/issues/9786)) - Move some replication processing out of `generic_worker`. ([\#9796](https://github.com/matrix-org/synapse/issues/9796)) - Replace `HomeServer.get_config()` with inline references. ([\#9815](https://github.com/matrix-org/synapse/issues/9815)) - Rename some handlers and config modules to not duplicate the top-level module. ([\#9816](https://github.com/matrix-org/synapse/issues/9816)) - Fix a long-standing bug which caused `max_upload_size` to not be correctly enforced. ([\#9817](https://github.com/matrix-org/synapse/issues/9817)) - Reduce CPU usage of the user directory by reusing existing calculated room membership. ([\#9821](https://github.com/matrix-org/synapse/issues/9821)) - Small speed up for joining large remote rooms. ([\#9825](https://github.com/matrix-org/synapse/issues/9825)) - Introduce flake8-bugbear to the test suite and fix some of its lint violations. ([\#9838](https://github.com/matrix-org/synapse/issues/9838)) - Only store the raw data in the in-memory caches, rather than objects that include references to e.g. the data stores. ([\#9845](https://github.com/matrix-org/synapse/issues/9845)) - Limit length of accepted email addresses. ([\#9855](https://github.com/matrix-org/synapse/issues/9855)) - Remove redundant `synapse.types.Collection` type definition. ([\#9856](https://github.com/matrix-org/synapse/issues/9856)) - Handle recently added rate limits correctly when using `--no-rate-limit` with the demo scripts. ([\#9858](https://github.com/matrix-org/synapse/issues/9858)) - Disable invite rate-limiting by default when running the unit tests. ([\#9871](https://github.com/matrix-org/synapse/issues/9871)) - Pass a reactor into `SynapseSite` to make testing easier. ([\#9874](https://github.com/matrix-org/synapse/issues/9874)) - Make `DomainSpecificString` an `attrs` class. ([\#9875](https://github.com/matrix-org/synapse/issues/9875)) - Add type hints to `synapse.api.auth` and `synapse.api.auth_blocking` modules. ([\#9876](https://github.com/matrix-org/synapse/issues/9876)) - Remove redundant `_PushHTTPChannel` test class. ([\#9878](https://github.com/matrix-org/synapse/issues/9878)) - Remove backwards-compatibility code for Python versions < 3.6. ([\#9879](https://github.com/matrix-org/synapse/issues/9879)) - Small performance improvement around handling new local presence updates. ([\#9887](https://github.com/matrix-org/synapse/issues/9887)) Synapse 1.32.2 (2021-04-22) =========================== This release includes a fix for a regression introduced in 1.32.0. Bugfixes -------- - Fix a regression in Synapse 1.32.0 and 1.32.1 which caused `LoggingContext` errors in plugins. ([\#9857](https://github.com/matrix-org/synapse/issues/9857)) Synapse 1.32.1 (2021-04-21) =========================== This release fixes [a regression](https://github.com/matrix-org/synapse/issues/9853) in Synapse 1.32.0 that caused connected Prometheus instances to become unstable. However, as this release is still subject to the `LoggingContext` change in 1.32.0, it is recommended to remain on or downgrade to 1.31.0. Bugfixes -------- - Fix a regression in Synapse 1.32.0 which caused Synapse to report large numbers of Prometheus time series, potentially overwhelming Prometheus instances. ([\#9854](https://github.com/matrix-org/synapse/issues/9854)) Synapse 1.32.0 (2021-04-20) =========================== **Note:** This release introduces [a regression](https://github.com/matrix-org/synapse/issues/9853) that can overwhelm connected Prometheus instances. This issue was not present in 1.32.0rc1. If affected, it is recommended to downgrade to 1.31.0 in the meantime, and follow [these instructions](https://github.com/matrix-org/synapse/pull/9854#issuecomment-823472183) to clean up any excess writeahead logs. **Note:** This release also mistakenly included a change that may affected Synapse modules that import `synapse.logging.context.LoggingContext`, such as [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider). This will be fixed in a later Synapse version. **Note:** This release requires Python 3.6+ and Postgres 9.6+ or SQLite 3.22+. This release removes the deprecated `GET /_synapse/admin/v1/users/` admin API. Please use the [v2 API](https://github.com/matrix-org/synapse/blob/develop/docs/admin_api/user_admin_api.rst#query-user-account) instead, which has improved capabilities. This release requires Application Services to use type `m.login.application_service` when registering users via the `/_matrix/client/r0/register` endpoint to comply with the spec. Please ensure your Application Services are up to date. If you are using the `packages.matrix.org` Debian repository for Synapse packages, note that we have recently updated the expiry date on the gpg signing key. If you see an error similar to `The following signatures were invalid: EXPKEYSIG F473DD4473365DE1`, you will need to get a fresh copy of the keys. You can do so with: ```sh sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg ``` Bugfixes -------- - Fix the log lines of nested logging contexts. Broke in 1.32.0rc1. ([\#9829](https://github.com/matrix-org/synapse/issues/9829)) Synapse 1.32.0rc1 (2021-04-13) ============================== Features -------- - Add a Synapse module for routing presence updates between users. ([\#9491](https://github.com/matrix-org/synapse/issues/9491)) - Add an admin API to manage ratelimit for a specific user. ([\#9648](https://github.com/matrix-org/synapse/issues/9648)) - Include request information in structured logging output. ([\#9654](https://github.com/matrix-org/synapse/issues/9654)) - Add `order_by` to the admin API `GET /_synapse/admin/v2/users`. Contributed by @dklimpel. ([\#9691](https://github.com/matrix-org/synapse/issues/9691)) - Replace the `room_invite_state_types` configuration setting with `room_prejoin_state`. ([\#9700](https://github.com/matrix-org/synapse/issues/9700)) - Add experimental support for [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083): restricting room access via group membership. ([\#9717](https://github.com/matrix-org/synapse/issues/9717), [\#9735](https://github.com/matrix-org/synapse/issues/9735)) - Update experimental support for Spaces: include `m.room.create` in the room state sent with room-invites. ([\#9710](https://github.com/matrix-org/synapse/issues/9710)) - Synapse now requires Python 3.6 or later. It also requires Postgres 9.6 or later or SQLite 3.22 or later. ([\#9766](https://github.com/matrix-org/synapse/issues/9766)) Bugfixes -------- - Prevent `synapse_forward_extremities` and `synapse_excess_extremity_events` Prometheus metrics from initially reporting zero-values after startup. ([\#8926](https://github.com/matrix-org/synapse/issues/8926)) - Fix recently added ratelimits to correctly honour the application service `rate_limited` flag. ([\#9711](https://github.com/matrix-org/synapse/issues/9711)) - Fix longstanding bug which caused `duplicate key value violates unique constraint "remote_media_cache_thumbnails_media_origin_media_id_thumbna_key"` errors. ([\#9725](https://github.com/matrix-org/synapse/issues/9725)) - Fix bug where sharded federation senders could get stuck repeatedly querying the DB in a loop, using lots of CPU. ([\#9770](https://github.com/matrix-org/synapse/issues/9770)) - Fix duplicate logging of exceptions thrown during federation transaction processing. ([\#9780](https://github.com/matrix-org/synapse/issues/9780)) Updates to the Docker image --------------------------- - Move opencontainers labels to the final Docker image such that users can inspect them. ([\#9765](https://github.com/matrix-org/synapse/issues/9765)) Improved Documentation ---------------------- - Make the `allowed_local_3pids` regex example in the sample config stricter. ([\#9719](https://github.com/matrix-org/synapse/issues/9719)) Deprecations and Removals ------------------------- - Remove old admin API `GET /_synapse/admin/v1/users/`. ([\#9401](https://github.com/matrix-org/synapse/issues/9401)) - Make `/_matrix/client/r0/register` expect a type of `m.login.application_service` when an Application Service registers a user, to align with [the relevant spec](https://spec.matrix.org/unstable/application-service-api/#server-admin-style-permissions). ([\#9548](https://github.com/matrix-org/synapse/issues/9548)) Internal Changes ---------------- - Replace deprecated `imp` module with successor `importlib`. Contributed by Cristina Muñoz. ([\#9718](https://github.com/matrix-org/synapse/issues/9718)) - Experiment with GitHub Actions for CI. ([\#9661](https://github.com/matrix-org/synapse/issues/9661)) - Introduce flake8-bugbear to the test suite and fix some of its lint violations. ([\#9682](https://github.com/matrix-org/synapse/issues/9682)) - Update `scripts-dev/complement.sh` to use a local checkout of Complement, allow running a subset of tests and have it use Synapse's Complement test blacklist. ([\#9685](https://github.com/matrix-org/synapse/issues/9685)) - Improve Jaeger tracing for `to_device` messages. ([\#9686](https://github.com/matrix-org/synapse/issues/9686)) - Add release helper script for automating part of the Synapse release process. ([\#9713](https://github.com/matrix-org/synapse/issues/9713)) - Add type hints to expiring cache. ([\#9730](https://github.com/matrix-org/synapse/issues/9730)) - Convert various testcases to `HomeserverTestCase`. ([\#9736](https://github.com/matrix-org/synapse/issues/9736)) - Start linting mypy with `no_implicit_optional`. ([\#9742](https://github.com/matrix-org/synapse/issues/9742)) - Add missing type hints to federation handler and server. ([\#9743](https://github.com/matrix-org/synapse/issues/9743)) - Check that a `ConfigError` is raised, rather than simply `Exception`, when appropriate in homeserver config file generation tests. ([\#9753](https://github.com/matrix-org/synapse/issues/9753)) - Fix incompatibility with `tox` 2.5. ([\#9769](https://github.com/matrix-org/synapse/issues/9769)) - Enable Complement tests for [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946): Spaces Summary API. ([\#9771](https://github.com/matrix-org/synapse/issues/9771)) - Use mock from the standard library instead of a separate package. ([\#9772](https://github.com/matrix-org/synapse/issues/9772)) - Update Black configuration to target Python 3.6. ([\#9781](https://github.com/matrix-org/synapse/issues/9781)) - Add option to skip unit tests when building Debian packages. ([\#9793](https://github.com/matrix-org/synapse/issues/9793)) Synapse 1.31.0 (2021-04-06) =========================== **Note:** As announced in v1.25.0, and in line with the deprecation policy for platform dependencies, this is the last release to support Python 3.5 and PostgreSQL 9.5. Future versions of Synapse will require Python 3.6+ and PostgreSQL 9.6+, as per our [deprecation policy](docs/deprecation_policy.md). This is also the last release that the Synapse team will be publishing packages for Debian Stretch and Ubuntu Xenial. Improved Documentation ---------------------- - Add a document describing the deprecation policy for platform dependencies. ([\#9723](https://github.com/matrix-org/synapse/issues/9723)) Internal Changes ---------------- - Revert using `dmypy run` in lint script. ([\#9720](https://github.com/matrix-org/synapse/issues/9720)) - Pin flake8-bugbear's version. ([\#9734](https://github.com/matrix-org/synapse/issues/9734)) Synapse 1.31.0rc1 (2021-03-30) ============================== Features -------- - Add support to OpenID Connect login for requiring attributes on the `userinfo` response. Contributed by Hubbe King. ([\#9609](https://github.com/matrix-org/synapse/issues/9609)) - Add initial experimental support for a "space summary" API. ([\#9643](https://github.com/matrix-org/synapse/issues/9643), [\#9652](https://github.com/matrix-org/synapse/issues/9652), [\#9653](https://github.com/matrix-org/synapse/issues/9653)) - Add support for the busy presence state as described in [MSC3026](https://github.com/matrix-org/matrix-doc/pull/3026). ([\#9644](https://github.com/matrix-org/synapse/issues/9644)) - Add support for credentials for proxy authentication in the `HTTPS_PROXY` environment variable. ([\#9657](https://github.com/matrix-org/synapse/issues/9657)) Bugfixes -------- - Fix a longstanding bug that could cause issues when editing a reply to a message. ([\#9585](https://github.com/matrix-org/synapse/issues/9585)) - Fix the `/capabilities` endpoint to return `m.change_password` as disabled if the local password database is not used for authentication. Contributed by @dklimpel. ([\#9588](https://github.com/matrix-org/synapse/issues/9588)) - Check if local passwords are enabled before setting them for the user. ([\#9636](https://github.com/matrix-org/synapse/issues/9636)) - Fix a bug where federation sending can stall due to `concurrent access` database exceptions when it falls behind. ([\#9639](https://github.com/matrix-org/synapse/issues/9639)) - Fix a bug introduced in Synapse 1.30.1 which meant the suggested `pip` incantation to install an updated `cryptography` was incorrect. ([\#9699](https://github.com/matrix-org/synapse/issues/9699)) Updates to the Docker image --------------------------- - Speed up Docker builds and make it nicer to test against Complement while developing (install all dependencies before copying the project). ([\#9610](https://github.com/matrix-org/synapse/issues/9610)) - Include [opencontainers labels](https://github.com/opencontainers/image-spec/blob/master/annotations.md#pre-defined-annotation-keys) in the Docker image. ([\#9612](https://github.com/matrix-org/synapse/issues/9612)) Improved Documentation ---------------------- - Clarify that `register_new_matrix_user` is present also when installed via non-pip package. ([\#9074](https://github.com/matrix-org/synapse/issues/9074)) - Update source install documentation to mention platform prerequisites before the source install steps. ([\#9667](https://github.com/matrix-org/synapse/issues/9667)) - Improve worker documentation for fallback/web auth endpoints. ([\#9679](https://github.com/matrix-org/synapse/issues/9679)) - Update the sample configuration for OIDC authentication. ([\#9695](https://github.com/matrix-org/synapse/issues/9695)) Internal Changes ---------------- - Preparatory steps for removing redundant `outlier` data from `event_json.internal_metadata` column. ([\#9411](https://github.com/matrix-org/synapse/issues/9411)) - Add type hints to the caching module. ([\#9442](https://github.com/matrix-org/synapse/issues/9442)) - Introduce flake8-bugbear to the test suite and fix some of its lint violations. ([\#9499](https://github.com/matrix-org/synapse/issues/9499), [\#9659](https://github.com/matrix-org/synapse/issues/9659)) - Add additional type hints to the Homeserver object. ([\#9631](https://github.com/matrix-org/synapse/issues/9631), [\#9638](https://github.com/matrix-org/synapse/issues/9638), [\#9675](https://github.com/matrix-org/synapse/issues/9675), [\#9681](https://github.com/matrix-org/synapse/issues/9681)) - Only save remote cross-signing and device keys if they're different from the current ones. ([\#9634](https://github.com/matrix-org/synapse/issues/9634)) - Rename storage function to fix spelling and not conflict with another function's name. ([\#9637](https://github.com/matrix-org/synapse/issues/9637)) - Improve performance of federation catch up by sending the latest events in the room to the remote, rather than just the last event sent by the local server. ([\#9640](https://github.com/matrix-org/synapse/issues/9640), [\#9664](https://github.com/matrix-org/synapse/issues/9664)) - In the `federation_client` commandline client, stop automatically adding the URL prefix, so that servlets on other prefixes can be tested. ([\#9645](https://github.com/matrix-org/synapse/issues/9645)) - In the `federation_client` commandline client, handle inline `signing_key`s in `homeserver.yaml`. ([\#9647](https://github.com/matrix-org/synapse/issues/9647)) - Fixed some antipattern issues to improve code quality. ([\#9649](https://github.com/matrix-org/synapse/issues/9649)) - Add a storage method for pulling all current user presence state from the database. ([\#9650](https://github.com/matrix-org/synapse/issues/9650)) - Import `HomeServer` from the proper module. ([\#9665](https://github.com/matrix-org/synapse/issues/9665)) - Increase default join ratelimiting burst rate. ([\#9674](https://github.com/matrix-org/synapse/issues/9674)) - Add type hints to third party event rules and visibility modules. ([\#9676](https://github.com/matrix-org/synapse/issues/9676)) - Bump mypy-zope to 0.2.13 to fix "Cannot determine consistent method resolution order (MRO)" errors when running mypy a second time. ([\#9678](https://github.com/matrix-org/synapse/issues/9678)) - Use interpreter from `$PATH` via `/usr/bin/env` instead of absolute paths in various scripts. ([\#9689](https://github.com/matrix-org/synapse/issues/9689)) - Make it possible to use `dmypy`. ([\#9692](https://github.com/matrix-org/synapse/issues/9692)) - Suppress "CryptographyDeprecationWarning: int_from_bytes is deprecated". ([\#9698](https://github.com/matrix-org/synapse/issues/9698)) - Use `dmypy run` in lint script for improved performance in type-checking while developing. ([\#9701](https://github.com/matrix-org/synapse/issues/9701)) - Fix undetected mypy error when using Python 3.6. ([\#9703](https://github.com/matrix-org/synapse/issues/9703)) - Fix type-checking CI on develop. ([\#9709](https://github.com/matrix-org/synapse/issues/9709)) Synapse 1.30.1 (2021-03-26) =========================== This release is identical to Synapse 1.30.0, with the exception of explicitly setting a minimum version of Python's Cryptography library to ensure that users of Synapse are protected from the recent [OpenSSL security advisories](https://mta.openssl.org/pipermail/openssl-announce/2021-March/000198.html), especially CVE-2021-3449. Note that Cryptography defaults to bundling its own statically linked copy of OpenSSL, which means that you may not be protected by your operating system's security updates. It's also worth noting that Cryptography no longer supports Python 3.5, so admins deploying to older environments may not be protected against this or future vulnerabilities. Synapse will be dropping support for Python 3.5 at the end of March. Updates to the Docker image --------------------------- - Ensure that the docker container has up to date versions of openssl. ([\#9697](https://github.com/matrix-org/synapse/issues/9697)) Internal Changes ---------------- - Enforce that `cryptography` dependency is up to date to ensure it has the most recent openssl patches. ([\#9697](https://github.com/matrix-org/synapse/issues/9697)) Synapse 1.30.0 (2021-03-22) =========================== Note that this release deprecates the ability for appservices to call `POST /_matrix/client/r0/register` without the body parameter `type`. Appservice developers should use a `type` value of `m.login.application_service` as per [the spec](https://matrix.org/docs/spec/application_service/r0.1.2#server-admin-style-permissions). In future releases, calling this endpoint with an access token - but without a `m.login.application_service` type - will fail. No significant changes. Synapse 1.30.0rc1 (2021-03-16) ============================== Features -------- - Add prometheus metrics for number of users successfully registering and logging in. ([\#9510](https://github.com/matrix-org/synapse/issues/9510), [\#9511](https://github.com/matrix-org/synapse/issues/9511), [\#9573](https://github.com/matrix-org/synapse/issues/9573)) - Add `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time` prometheus metrics, which monitor federation delays by reporting the timestamps of messages sent and received to a set of remote servers. ([\#9540](https://github.com/matrix-org/synapse/issues/9540)) - Add support for generating JSON Web Tokens dynamically for use as OIDC client secrets. ([\#9549](https://github.com/matrix-org/synapse/issues/9549)) - Optimise handling of incomplete room history for incoming federation. ([\#9601](https://github.com/matrix-org/synapse/issues/9601)) - Finalise support for allowing clients to pick an SSO Identity Provider ([MSC2858](https://github.com/matrix-org/matrix-doc/pull/2858)). ([\#9617](https://github.com/matrix-org/synapse/issues/9617)) - Tell spam checker modules about the SSO IdP a user registered through if one was used. ([\#9626](https://github.com/matrix-org/synapse/issues/9626)) Bugfixes -------- - Fix long-standing bug when generating thumbnails for some images with transparency: `TypeError: cannot unpack non-iterable int object`. ([\#9473](https://github.com/matrix-org/synapse/issues/9473)) - Purge chain cover indexes for events that were purged prior to Synapse v1.29.0. ([\#9542](https://github.com/matrix-org/synapse/issues/9542), [\#9583](https://github.com/matrix-org/synapse/issues/9583)) - Fix bug where federation requests were not correctly retried on 5xx responses. ([\#9567](https://github.com/matrix-org/synapse/issues/9567)) - Fix re-activating an account via the admin API when local passwords are disabled. ([\#9587](https://github.com/matrix-org/synapse/issues/9587)) - Fix a bug introduced in Synapse 1.20 which caused incoming federation transactions to stack up, causing slow recovery from outages. ([\#9597](https://github.com/matrix-org/synapse/issues/9597)) - Fix a bug introduced in v1.28.0 where the OpenID Connect callback endpoint could error with a `MacaroonInitException`. ([\#9620](https://github.com/matrix-org/synapse/issues/9620)) - Fix Internal Server Error on `GET /_synapse/client/saml2/authn_response` request. ([\#9623](https://github.com/matrix-org/synapse/issues/9623)) Updates to the Docker image --------------------------- - Make use of an improved malloc implementation (`jemalloc`) in the docker image. ([\#8553](https://github.com/matrix-org/synapse/issues/8553)) Improved Documentation ---------------------- - Add relayd entry to reverse proxy example configurations. ([\#9508](https://github.com/matrix-org/synapse/issues/9508)) - Improve the SAML2 upgrade notes for 1.27.0. ([\#9550](https://github.com/matrix-org/synapse/issues/9550)) - Link to the "List user's media" admin API from the media admin API docs. ([\#9571](https://github.com/matrix-org/synapse/issues/9571)) - Clarify the spam checker modules documentation example to mention that `parse_config` is a required method. ([\#9580](https://github.com/matrix-org/synapse/issues/9580)) - Clarify the sample configuration for `stats` settings. ([\#9604](https://github.com/matrix-org/synapse/issues/9604)) Deprecations and Removals ------------------------- - The `synapse_federation_last_sent_pdu_age` and `synapse_federation_last_received_pdu_age` prometheus metrics have been removed. They are replaced by `synapse_federation_last_sent_pdu_time` and `synapse_federation_last_received_pdu_time`. ([\#9540](https://github.com/matrix-org/synapse/issues/9540)) - Registering an Application Service user without using the `m.login.application_service` login type will be unsupported in an upcoming Synapse release. ([\#9559](https://github.com/matrix-org/synapse/issues/9559)) Internal Changes ---------------- - Add tests to ResponseCache. ([\#9458](https://github.com/matrix-org/synapse/issues/9458)) - Add type hints to purge room and server notice admin API. ([\#9520](https://github.com/matrix-org/synapse/issues/9520)) - Add extra logging to ObservableDeferred when callbacks throw exceptions. ([\#9523](https://github.com/matrix-org/synapse/issues/9523)) - Fix incorrect type hints. ([\#9528](https://github.com/matrix-org/synapse/issues/9528), [\#9543](https://github.com/matrix-org/synapse/issues/9543), [\#9591](https://github.com/matrix-org/synapse/issues/9591), [\#9608](https://github.com/matrix-org/synapse/issues/9608), [\#9618](https://github.com/matrix-org/synapse/issues/9618)) - Add an additional test for purging a room. ([\#9541](https://github.com/matrix-org/synapse/issues/9541)) - Add a `.git-blame-ignore-revs` file with the hashes of auto-formatting. ([\#9560](https://github.com/matrix-org/synapse/issues/9560)) - Increase the threshold before which outbound federation to a server goes into "catch up" mode, which is expensive for the remote server to handle. ([\#9561](https://github.com/matrix-org/synapse/issues/9561)) - Fix spurious errors reported by the `config-lint.sh` script. ([\#9562](https://github.com/matrix-org/synapse/issues/9562)) - Fix type hints and tests for BlacklistingAgentWrapper and BlacklistingReactorWrapper. ([\#9563](https://github.com/matrix-org/synapse/issues/9563)) - Do not have mypy ignore type hints from unpaddedbase64. ([\#9568](https://github.com/matrix-org/synapse/issues/9568)) - Improve efficiency of calculating the auth chain in large rooms. ([\#9576](https://github.com/matrix-org/synapse/issues/9576)) - Convert `synapse.types.Requester` to an `attrs` class. ([\#9586](https://github.com/matrix-org/synapse/issues/9586)) - Add logging for redis connection setup. ([\#9590](https://github.com/matrix-org/synapse/issues/9590)) - Improve logging when processing incoming transactions. ([\#9596](https://github.com/matrix-org/synapse/issues/9596)) - Remove unused `stats.retention` setting, and emit a warning if stats are disabled. ([\#9604](https://github.com/matrix-org/synapse/issues/9604)) - Prevent attempting to bundle aggregations for state events in /context APIs. ([\#9619](https://github.com/matrix-org/synapse/issues/9619)) Synapse 1.29.0 (2021-03-08) =========================== Note that synapse now expects an `X-Forwarded-Proto` header when used with a reverse proxy. Please see the [upgrade notes](docs/upgrade.md#upgrading-to-v1290) for more details on this change. No significant changes. Synapse 1.29.0rc1 (2021-03-04) ============================== Features -------- - Add rate limiters to cross-user key sharing requests. ([\#8957](https://github.com/matrix-org/synapse/issues/8957)) - Add `order_by` to the admin API `GET /_synapse/admin/v1/users//media`. Contributed by @dklimpel. ([\#8978](https://github.com/matrix-org/synapse/issues/8978)) - Add some configuration settings to make users' profile data more private. ([\#9203](https://github.com/matrix-org/synapse/issues/9203)) - The `no_proxy` and `NO_PROXY` environment variables are now respected in proxied HTTP clients with the lowercase form taking precedence if both are present. Additionally, the lowercase `https_proxy` environment variable is now respected in proxied HTTP clients on top of existing support for the uppercase `HTTPS_PROXY` form and takes precedence if both are present. Contributed by Timothy Leung. ([\#9372](https://github.com/matrix-org/synapse/issues/9372)) - Add a configuration option, `user_directory.prefer_local_users`, which when enabled will make it more likely for users on the same server as you to appear above other users. ([\#9383](https://github.com/matrix-org/synapse/issues/9383), [\#9385](https://github.com/matrix-org/synapse/issues/9385)) - Add support for regenerating thumbnails if they have been deleted but the original image is still stored. ([\#9438](https://github.com/matrix-org/synapse/issues/9438)) - Add support for `X-Forwarded-Proto` header when using a reverse proxy. ([\#9472](https://github.com/matrix-org/synapse/issues/9472), [\#9501](https://github.com/matrix-org/synapse/issues/9501), [\#9512](https://github.com/matrix-org/synapse/issues/9512), [\#9539](https://github.com/matrix-org/synapse/issues/9539)) Bugfixes -------- - Fix a bug where users' pushers were not all deleted when they deactivated their account. ([\#9285](https://github.com/matrix-org/synapse/issues/9285), [\#9516](https://github.com/matrix-org/synapse/issues/9516)) - Fix a bug where a lot of unnecessary presence updates were sent when joining a room. ([\#9402](https://github.com/matrix-org/synapse/issues/9402)) - Fix a bug that caused multiple calls to the experimental `shared_rooms` endpoint to return stale results. ([\#9416](https://github.com/matrix-org/synapse/issues/9416)) - Fix a bug in single sign-on which could cause a "No session cookie found" error. ([\#9436](https://github.com/matrix-org/synapse/issues/9436)) - Fix bug introduced in v1.27.0 where allowing a user to choose their own username when logging in via single sign-on did not work unless an `idp_icon` was defined. ([\#9440](https://github.com/matrix-org/synapse/issues/9440)) - Fix a bug introduced in v1.26.0 where some sequences were not properly configured when running `synapse_port_db`. ([\#9449](https://github.com/matrix-org/synapse/issues/9449)) - Fix deleting pushers when using sharded pushers. ([\#9465](https://github.com/matrix-org/synapse/issues/9465), [\#9466](https://github.com/matrix-org/synapse/issues/9466), [\#9479](https://github.com/matrix-org/synapse/issues/9479), [\#9536](https://github.com/matrix-org/synapse/issues/9536)) - Fix missing startup checks for the consistency of certain PostgreSQL sequences. ([\#9470](https://github.com/matrix-org/synapse/issues/9470)) - Fix a long-standing bug where the media repository could leak file descriptors while previewing media. ([\#9497](https://github.com/matrix-org/synapse/issues/9497)) - Properly purge the event chain cover index when purging history. ([\#9498](https://github.com/matrix-org/synapse/issues/9498)) - Fix missing chain cover index due to a schema delta not being applied correctly. Only affected servers that ran development versions. ([\#9503](https://github.com/matrix-org/synapse/issues/9503)) - Fix a bug introduced in v1.25.0 where `/_synapse/admin/join/` would fail when given a room alias. ([\#9506](https://github.com/matrix-org/synapse/issues/9506)) - Prevent presence background jobs from running when presence is disabled. ([\#9530](https://github.com/matrix-org/synapse/issues/9530)) - Fix rare edge case that caused a background update to fail if the server had rejected an event that had duplicate auth events. ([\#9537](https://github.com/matrix-org/synapse/issues/9537)) Improved Documentation ---------------------- - Update the example systemd config to propagate reloads to individual units. ([\#9463](https://github.com/matrix-org/synapse/issues/9463)) Internal Changes ---------------- - Add documentation and type hints to `parse_duration`. ([\#9432](https://github.com/matrix-org/synapse/issues/9432)) - Remove vestiges of `uploads_path` configuration setting. ([\#9462](https://github.com/matrix-org/synapse/issues/9462)) - Add a comment about systemd-python. ([\#9464](https://github.com/matrix-org/synapse/issues/9464)) - Test that we require validated email for email pushers. ([\#9496](https://github.com/matrix-org/synapse/issues/9496)) - Allow python to generate bytecode for synapse. ([\#9502](https://github.com/matrix-org/synapse/issues/9502)) - Fix incorrect type hints. ([\#9515](https://github.com/matrix-org/synapse/issues/9515), [\#9518](https://github.com/matrix-org/synapse/issues/9518)) - Add type hints to device and event report admin API. ([\#9519](https://github.com/matrix-org/synapse/issues/9519)) - Add type hints to user admin API. ([\#9521](https://github.com/matrix-org/synapse/issues/9521)) - Bump the versions of mypy and mypy-zope used for static type checking. ([\#9529](https://github.com/matrix-org/synapse/issues/9529)) Synapse 1.28.0 (2021-02-25) =========================== Note that this release drops support for ARMv7 in the official Docker images, due to repeated problems building for ARMv7 (and the associated maintenance burden this entails). This release also fixes the documentation included in v1.27.0 around the callback URI for SAML2 identity providers. If your server is configured to use single sign-on via a SAML2 IdP, you may need to make configuration changes. Please review the [upgrade notes](docs/upgrade.md) for more details on these changes. Internal Changes ---------------- - Revert change in v1.28.0rc1 to remove the deprecated SAML endpoint. ([\#9474](https://github.com/matrix-org/synapse/issues/9474)) Synapse 1.28.0rc1 (2021-02-19) ============================== Removal warning --------------- The v1 list accounts API is deprecated and will be removed in a future release. This API was undocumented and misleading. It can be replaced by the [v2 list accounts API](https://github.com/matrix-org/synapse/blob/release-v1.28.0/docs/admin_api/user_admin_api.rst#list-accounts), which has been available since Synapse 1.7.0 (2019-12-13). Please check if you're using any scripts which use the admin API and replace `GET /_synapse/admin/v1/users/` with `GET /_synapse/admin/v2/users`. Features -------- - New admin API to get the context of an event: `/_synapse/admin/rooms/{roomId}/context/{eventId}`. ([\#9150](https://github.com/matrix-org/synapse/issues/9150)) - Further improvements to the user experience of registration via single sign-on. ([\#9300](https://github.com/matrix-org/synapse/issues/9300), [\#9301](https://github.com/matrix-org/synapse/issues/9301)) - Add hook to spam checker modules that allow checking file uploads and remote downloads. ([\#9311](https://github.com/matrix-org/synapse/issues/9311)) - Add support for receiving OpenID Connect authentication responses via form `POST`s rather than `GET`s. ([\#9376](https://github.com/matrix-org/synapse/issues/9376)) - Add the shadow-banning status to the admin API for user info. ([\#9400](https://github.com/matrix-org/synapse/issues/9400)) Bugfixes -------- - Fix long-standing bug where sending email notifications would fail for rooms that the server had since left. ([\#9257](https://github.com/matrix-org/synapse/issues/9257)) - Fix bug introduced in Synapse 1.27.0rc1 which meant the "session expired" error page during SSO registration was badly formatted. ([\#9296](https://github.com/matrix-org/synapse/issues/9296)) - Assert a maximum length for some parameters for spec compliance. ([\#9321](https://github.com/matrix-org/synapse/issues/9321), [\#9393](https://github.com/matrix-org/synapse/issues/9393)) - Fix additional errors when previewing URLs: "AttributeError 'NoneType' object has no attribute 'xpath'" and "ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.". ([\#9333](https://github.com/matrix-org/synapse/issues/9333)) - Fix a bug causing Synapse to impose the wrong type constraints on fields when processing responses from appservices to `/_matrix/app/v1/thirdparty/user/{protocol}`. ([\#9361](https://github.com/matrix-org/synapse/issues/9361)) - Fix bug where Synapse would occasionally stop reconnecting to Redis after the connection was lost. ([\#9391](https://github.com/matrix-org/synapse/issues/9391)) - Fix a long-standing bug when upgrading a room: "TypeError: '>' not supported between instances of 'NoneType' and 'int'". ([\#9395](https://github.com/matrix-org/synapse/issues/9395)) - Reduce the amount of memory used when generating the URL preview of a file that is larger than the `max_spider_size`. ([\#9421](https://github.com/matrix-org/synapse/issues/9421)) - Fix a long-standing bug in the deduplication of old presence, resulting in no deduplication. ([\#9425](https://github.com/matrix-org/synapse/issues/9425)) - The `ui_auth.session_timeout` config option can now be specified in terms of number of seconds/minutes/etc/. Contributed by Rishabh Arya. ([\#9426](https://github.com/matrix-org/synapse/issues/9426)) - Fix a bug introduced in v1.27.0: "TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType." related to the user directory. ([\#9428](https://github.com/matrix-org/synapse/issues/9428)) Updates to the Docker image --------------------------- - Drop support for ARMv7 in Docker images. ([\#9433](https://github.com/matrix-org/synapse/issues/9433)) Improved Documentation ---------------------- - Reorganize CHANGELOG.md. ([\#9281](https://github.com/matrix-org/synapse/issues/9281)) - Add note to `auto_join_rooms` config option explaining existing rooms must be publicly joinable. ([\#9291](https://github.com/matrix-org/synapse/issues/9291)) - Correct name of Synapse's service file in TURN howto. ([\#9308](https://github.com/matrix-org/synapse/issues/9308)) - Fix the braces in the `oidc_providers` section of the sample config. ([\#9317](https://github.com/matrix-org/synapse/issues/9317)) - Update installation instructions on Fedora. ([\#9322](https://github.com/matrix-org/synapse/issues/9322)) - Add HTTP/2 support to the nginx example configuration. Contributed by David Vo. ([\#9390](https://github.com/matrix-org/synapse/issues/9390)) - Update docs for using Gitea as OpenID provider. ([\#9404](https://github.com/matrix-org/synapse/issues/9404)) - Document that pusher instances are shardable. ([\#9407](https://github.com/matrix-org/synapse/issues/9407)) - Fix erroneous documentation from v1.27.0 about updating the SAML2 callback URL. ([\#9434](https://github.com/matrix-org/synapse/issues/9434)) Deprecations and Removals ------------------------- - Deprecate old admin API `GET /_synapse/admin/v1/users/`. ([\#9429](https://github.com/matrix-org/synapse/issues/9429)) Internal Changes ---------------- - Fix 'object name reserved for internal use' errors with recent versions of SQLite. ([\#9003](https://github.com/matrix-org/synapse/issues/9003)) - Add experimental support for running Synapse with PyPy. ([\#9123](https://github.com/matrix-org/synapse/issues/9123)) - Deny access to additional IP addresses by default. ([\#9240](https://github.com/matrix-org/synapse/issues/9240)) - Update the `Cursor` type hints to better match PEP 249. ([\#9299](https://github.com/matrix-org/synapse/issues/9299)) - Add debug logging for SRV lookups. Contributed by @Bubu. ([\#9305](https://github.com/matrix-org/synapse/issues/9305)) - Improve logging for OIDC login flow. ([\#9307](https://github.com/matrix-org/synapse/issues/9307)) - Share the code for handling required attributes between the CAS and SAML handlers. ([\#9326](https://github.com/matrix-org/synapse/issues/9326)) - Clean up the code to load the metadata for OpenID Connect identity providers. ([\#9362](https://github.com/matrix-org/synapse/issues/9362)) - Convert tests to use `HomeserverTestCase`. ([\#9377](https://github.com/matrix-org/synapse/issues/9377), [\#9396](https://github.com/matrix-org/synapse/issues/9396)) - Update the version of black used to 20.8b1. ([\#9381](https://github.com/matrix-org/synapse/issues/9381)) - Allow OIDC config to override discovered values. ([\#9384](https://github.com/matrix-org/synapse/issues/9384)) - Remove some dead code from the acceptance of room invites path. ([\#9394](https://github.com/matrix-org/synapse/issues/9394)) - Clean up an unused method in the presence handler code. ([\#9408](https://github.com/matrix-org/synapse/issues/9408)) Synapse 1.27.0 (2021-02-16) =========================== Note that this release includes a change in Synapse to use Redis as a cache ─ as well as a pub/sub mechanism ─ if Redis support is enabled for workers. No action is needed by server administrators, and we do not expect resource usage of the Redis instance to change dramatically. This release also changes the callback URI for OpenID Connect (OIDC) and SAML2 identity providers. If your server is configured to use single sign-on via an OIDC/OAuth2 or SAML2 IdP, you may need to make configuration changes. Please review the [upgrade notes](docs/upgrade.md) for more details on these changes. This release also changes escaping of variables in the HTML templates for SSO or email notifications. If you have customised these templates, please review the [upgrade notes](docs/upgrade.md) for more details on these changes. Bugfixes -------- - Fix building Docker images for armv7. ([\#9405](https://github.com/matrix-org/synapse/issues/9405)) Synapse 1.27.0rc2 (2021-02-11) ============================== Features -------- - Further improvements to the user experience of registration via single sign-on. ([\#9297](https://github.com/matrix-org/synapse/issues/9297)) Bugfixes -------- - Fix ratelimiting introduced in v1.27.0rc1 for invites to respect the `ratelimit` flag on application services. ([\#9302](https://github.com/matrix-org/synapse/issues/9302)) - Do not automatically calculate `public_baseurl` since it can be wrong in some situations. Reverts behaviour introduced in v1.26.0. ([\#9313](https://github.com/matrix-org/synapse/issues/9313)) Improved Documentation ---------------------- - Clarify the sample configuration for changes made to the template loading code. ([\#9310](https://github.com/matrix-org/synapse/issues/9310)) Synapse 1.27.0rc1 (2021-02-02) ============================== Features -------- - Add an admin API for getting and deleting forward extremities for a room. ([\#9062](https://github.com/matrix-org/synapse/issues/9062)) - Add an admin API for retrieving the current room state of a room. ([\#9168](https://github.com/matrix-org/synapse/issues/9168)) - Add experimental support for allowing clients to pick an SSO Identity Provider ([MSC2858](https://github.com/matrix-org/matrix-doc/pull/2858)). ([\#9183](https://github.com/matrix-org/synapse/issues/9183), [\#9242](https://github.com/matrix-org/synapse/issues/9242)) - Add an admin API endpoint for shadow-banning users. ([\#9209](https://github.com/matrix-org/synapse/issues/9209)) - Add ratelimits to the 3PID `/requestToken` APIs. ([\#9238](https://github.com/matrix-org/synapse/issues/9238)) - Add support to the OpenID Connect integration for adding the user's email address. ([\#9245](https://github.com/matrix-org/synapse/issues/9245)) - Add ratelimits to invites in rooms and to specific users. ([\#9258](https://github.com/matrix-org/synapse/issues/9258)) - Improve the user experience of setting up an account via single-sign on. ([\#9262](https://github.com/matrix-org/synapse/issues/9262), [\#9272](https://github.com/matrix-org/synapse/issues/9272), [\#9275](https://github.com/matrix-org/synapse/issues/9275), [\#9276](https://github.com/matrix-org/synapse/issues/9276), [\#9277](https://github.com/matrix-org/synapse/issues/9277), [\#9286](https://github.com/matrix-org/synapse/issues/9286), [\#9287](https://github.com/matrix-org/synapse/issues/9287)) - Add phone home stats for encrypted messages. ([\#9283](https://github.com/matrix-org/synapse/issues/9283)) - Update the redirect URI for OIDC authentication. ([\#9288](https://github.com/matrix-org/synapse/issues/9288)) Bugfixes -------- - Fix spurious errors in logs when deleting a non-existent pusher. ([\#9121](https://github.com/matrix-org/synapse/issues/9121)) - Fix a long-standing bug where Synapse would return a 500 error when a thumbnail did not exist (and auto-generation of thumbnails was not enabled). ([\#9163](https://github.com/matrix-org/synapse/issues/9163)) - Fix a long-standing bug where an internal server error was raised when attempting to preview an HTML document in an unknown character encoding. ([\#9164](https://github.com/matrix-org/synapse/issues/9164)) - Fix a long-standing bug where invalid data could cause errors when calculating the presentable room name for push. ([\#9165](https://github.com/matrix-org/synapse/issues/9165)) - Fix bug where we sometimes didn't detect that Redis connections had died, causing workers to not see new data. ([\#9218](https://github.com/matrix-org/synapse/issues/9218)) - Fix a bug where `None` was passed to Synapse modules instead of an empty dictionary if an empty module `config` block was provided in the homeserver config. ([\#9229](https://github.com/matrix-org/synapse/issues/9229)) - Fix a bug in the `make_room_admin` admin API where it failed if the admin with the greatest power level was not in the room. Contributed by Pankaj Yadav. ([\#9235](https://github.com/matrix-org/synapse/issues/9235)) - Prevent password hashes from getting dropped if a client failed threepid validation during a User Interactive Auth stage. Removes a workaround for an ancient bug in Riot Web /joined_rooms` to work for both local and remote users. ([\#8948](https://github.com/matrix-org/synapse/issues/8948)) - Add experimental support for handling to-device messages on worker processes. ([\#9042](https://github.com/matrix-org/synapse/issues/9042), [\#9043](https://github.com/matrix-org/synapse/issues/9043), [\#9044](https://github.com/matrix-org/synapse/issues/9044), [\#9130](https://github.com/matrix-org/synapse/issues/9130)) - Add experimental support for handling `/keys/claim` and `/room_keys` APIs on worker processes. ([\#9068](https://github.com/matrix-org/synapse/issues/9068)) - Add experimental support for handling `/devices` API on worker processes. ([\#9092](https://github.com/matrix-org/synapse/issues/9092)) - Add experimental support for moving off receipts and account data persistence off master. ([\#9104](https://github.com/matrix-org/synapse/issues/9104), [\#9166](https://github.com/matrix-org/synapse/issues/9166)) Bugfixes -------- - Fix a long-standing issue where an internal server error would occur when requesting a profile over federation that did not include a display name / avatar URL. ([\#9023](https://github.com/matrix-org/synapse/issues/9023)) - Fix a long-standing bug where some caches could grow larger than configured. ([\#9028](https://github.com/matrix-org/synapse/issues/9028)) - Fix error handling during insertion of client IPs into the database. ([\#9051](https://github.com/matrix-org/synapse/issues/9051)) - Fix bug where we didn't correctly record CPU time spent in `on_new_event` block. ([\#9053](https://github.com/matrix-org/synapse/issues/9053)) - Fix a minor bug which could cause confusing error messages from invalid configurations. ([\#9054](https://github.com/matrix-org/synapse/issues/9054)) - Fix incorrect exit code when there is an error at startup. ([\#9059](https://github.com/matrix-org/synapse/issues/9059)) - Fix `JSONDecodeError` spamming the logs when sending transactions to remote servers. ([\#9070](https://github.com/matrix-org/synapse/issues/9070)) - Fix "Failed to send request" errors when a client provides an invalid room alias. ([\#9071](https://github.com/matrix-org/synapse/issues/9071)) - Fix bugs in federation catchup logic that caused outbound federation to be delayed for large servers after start up. Introduced in v1.8.0 and v1.21.0. ([\#9114](https://github.com/matrix-org/synapse/issues/9114), [\#9116](https://github.com/matrix-org/synapse/issues/9116)) - Fix corruption of `pushers` data when a postgres bouncer is used. ([\#9117](https://github.com/matrix-org/synapse/issues/9117)) - Fix minor bugs in handling the `clientRedirectUrl` parameter for SSO login. ([\#9128](https://github.com/matrix-org/synapse/issues/9128)) - Fix "Unhandled error in Deferred: BodyExceededMaxSize" errors when .well-known files that are too large. ([\#9108](https://github.com/matrix-org/synapse/issues/9108)) - Fix "UnboundLocalError: local variable 'length' referenced before assignment" errors when the response body exceeds the expected size. This bug was introduced in v1.25.0. ([\#9145](https://github.com/matrix-org/synapse/issues/9145)) - Fix a long-standing bug "ValueError: invalid literal for int() with base 10" when `/publicRooms` is requested with an invalid `server` parameter. ([\#9161](https://github.com/matrix-org/synapse/issues/9161)) Improved Documentation ---------------------- - Add some extra docs for getting Synapse running on macOS. ([\#8997](https://github.com/matrix-org/synapse/issues/8997)) - Correct a typo in the `systemd-with-workers` documentation. ([\#9035](https://github.com/matrix-org/synapse/issues/9035)) - Correct a typo in `INSTALL.md`. ([\#9040](https://github.com/matrix-org/synapse/issues/9040)) - Add missing `user_mapping_provider` configuration to the Keycloak OIDC example. Contributed by @chris-ruecker. ([\#9057](https://github.com/matrix-org/synapse/issues/9057)) - Quote `pip install` packages when extras are used to avoid shells interpreting bracket characters. ([\#9151](https://github.com/matrix-org/synapse/issues/9151)) Deprecations and Removals ------------------------- - Remove broken and unmaintained `demo/webserver.py` script. ([\#9039](https://github.com/matrix-org/synapse/issues/9039)) Internal Changes ---------------- - Improve efficiency of large state resolutions. ([\#8868](https://github.com/matrix-org/synapse/issues/8868), [\#9029](https://github.com/matrix-org/synapse/issues/9029), [\#9115](https://github.com/matrix-org/synapse/issues/9115), [\#9118](https://github.com/matrix-org/synapse/issues/9118), [\#9124](https://github.com/matrix-org/synapse/issues/9124)) - Various clean-ups to the structured logging and logging context code. ([\#8939](https://github.com/matrix-org/synapse/issues/8939)) - Ensure rejected events get added to some metadata tables. ([\#9016](https://github.com/matrix-org/synapse/issues/9016)) - Ignore date-rotated homeserver logs saved to disk. ([\#9018](https://github.com/matrix-org/synapse/issues/9018)) - Remove an unused column from `access_tokens` table. ([\#9025](https://github.com/matrix-org/synapse/issues/9025)) - Add a `-noextras` factor to `tox.ini`, to support running the tests with no optional dependencies. ([\#9030](https://github.com/matrix-org/synapse/issues/9030)) - Fix running unit tests when optional dependencies are not installed. ([\#9031](https://github.com/matrix-org/synapse/issues/9031)) - Allow bumping schema version when using split out state database. ([\#9033](https://github.com/matrix-org/synapse/issues/9033)) - Configure the linters to run on a consistent set of files. ([\#9038](https://github.com/matrix-org/synapse/issues/9038)) - Various cleanups to device inbox store. ([\#9041](https://github.com/matrix-org/synapse/issues/9041)) - Drop unused database tables. ([\#9055](https://github.com/matrix-org/synapse/issues/9055)) - Remove unused `SynapseService` class. ([\#9058](https://github.com/matrix-org/synapse/issues/9058)) - Remove unnecessary declarations in the tests for the admin API. ([\#9063](https://github.com/matrix-org/synapse/issues/9063)) - Remove `SynapseRequest.get_user_agent`. ([\#9069](https://github.com/matrix-org/synapse/issues/9069)) - Remove redundant `Homeserver.get_ip_from_request` method. ([\#9080](https://github.com/matrix-org/synapse/issues/9080)) - Add type hints to media repository. ([\#9093](https://github.com/matrix-org/synapse/issues/9093)) - Fix the wrong arguments being passed to `BlacklistingAgentWrapper` from `MatrixFederationAgent`. Contributed by Timothy Leung. ([\#9098](https://github.com/matrix-org/synapse/issues/9098)) - Reduce the scope of caught exceptions in `BlacklistingAgentWrapper`. ([\#9106](https://github.com/matrix-org/synapse/issues/9106)) - Improve `UsernamePickerTestCase`. ([\#9112](https://github.com/matrix-org/synapse/issues/9112)) - Remove dependency on `distutils`. ([\#9125](https://github.com/matrix-org/synapse/issues/9125)) - Enforce that replication HTTP clients are called with keyword arguments only. ([\#9144](https://github.com/matrix-org/synapse/issues/9144)) - Fix the Python 3.5 / old dependencies build in CI. ([\#9146](https://github.com/matrix-org/synapse/issues/9146)) - Replace the old `perspectives` option in the Synapse docker config file template with `trusted_key_servers`. ([\#9157](https://github.com/matrix-org/synapse/issues/9157)) Synapse 1.25.0 (2021-01-13) =========================== Ending Support for Python 3.5 and Postgres 9.5 ---------------------------------------------- With this release, the Synapse team is announcing a formal deprecation policy for our platform dependencies, like Python and PostgreSQL: All future releases of Synapse will follow the upstream end-of-life schedules. Which means: * This is the last release which guarantees support for Python 3.5. * We will end support for PostgreSQL 9.5 early next month. * We will end support for Python 3.6 and PostgreSQL 9.6 near the end of the year. Crucially, this means __we will not produce .deb packages for Debian 9 (Stretch) or Ubuntu 16.04 (Xenial)__ beyond the transition period described below. The website https://endoflife.date/ has convenient summaries of the support schedules for projects like [Python](https://endoflife.date/python) and [PostgreSQL](https://endoflife.date/postgresql). If you are unable to upgrade your environment to a supported version of Python or Postgres, we encourage you to consider using the [Synapse Docker images](https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks) instead. ### Transition Period We will make a good faith attempt to avoid breaking compatibility in all releases through the end of March 2021. However, critical security vulnerabilities in dependencies or other unanticipated circumstances may arise which necessitate breaking compatibility earlier. We intend to continue producing .deb packages for Debian 9 (Stretch) and Ubuntu 16.04 (Xenial) through the transition period. Removal warning --------------- The old [Purge Room API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api/purge_room.md) and [Shutdown Room API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api/shutdown_room.md) are deprecated and will be removed in a future release. They will be replaced by the [Delete Room API](https://github.com/matrix-org/synapse/tree/master/docs/admin_api/rooms.md#delete-room-api). `POST /_synapse/admin/v1/rooms//delete` replaces `POST /_synapse/admin/v1/purge_room` and `POST /_synapse/admin/v1/shutdown_room/`. Bugfixes -------- - Fix HTTP proxy support when using a proxy that is on a blacklisted IP. Introduced in v1.25.0rc1. Contributed by @Bubu. ([\#9084](https://github.com/matrix-org/synapse/issues/9084)) Synapse 1.25.0rc1 (2021-01-06) ============================== Features -------- - Add an admin API that lets server admins get power in rooms in which local users have power. ([\#8756](https://github.com/matrix-org/synapse/issues/8756)) - Add optional HTTP authentication to replication endpoints. ([\#8853](https://github.com/matrix-org/synapse/issues/8853)) - Improve the error messages printed as a result of configuration problems for extension modules. ([\#8874](https://github.com/matrix-org/synapse/issues/8874)) - Add the number of local devices to Room Details Admin API. Contributed by @dklimpel. ([\#8886](https://github.com/matrix-org/synapse/issues/8886)) - Add `X-Robots-Tag` header to stop web crawlers from indexing media. Contributed by Aaron Raimist. ([\#8887](https://github.com/matrix-org/synapse/issues/8887)) - Spam-checkers may now define their methods as `async`. ([\#8890](https://github.com/matrix-org/synapse/issues/8890)) - Add support for allowing users to pick their own user ID during a single-sign-on login. ([\#8897](https://github.com/matrix-org/synapse/issues/8897), [\#8900](https://github.com/matrix-org/synapse/issues/8900), [\#8911](https://github.com/matrix-org/synapse/issues/8911), [\#8938](https://github.com/matrix-org/synapse/issues/8938), [\#8941](https://github.com/matrix-org/synapse/issues/8941), [\#8942](https://github.com/matrix-org/synapse/issues/8942), [\#8951](https://github.com/matrix-org/synapse/issues/8951)) - Add an `email.invite_client_location` configuration option to send a web client location to the invite endpoint on the identity server which allows customisation of the email template. ([\#8930](https://github.com/matrix-org/synapse/issues/8930)) - The search term in the list room and list user Admin APIs is now treated as case-insensitive. ([\#8931](https://github.com/matrix-org/synapse/issues/8931)) - Apply an IP range blacklist to push and key revocation requests. ([\#8821](https://github.com/matrix-org/synapse/issues/8821), [\#8870](https://github.com/matrix-org/synapse/issues/8870), [\#8954](https://github.com/matrix-org/synapse/issues/8954)) - Add an option to allow re-use of user-interactive authentication sessions for a period of time. ([\#8970](https://github.com/matrix-org/synapse/issues/8970)) - Allow running the redact endpoint on workers. ([\#8994](https://github.com/matrix-org/synapse/issues/8994)) Bugfixes -------- - Fix bug where we might not correctly calculate the current state for rooms with multiple extremities. ([\#8827](https://github.com/matrix-org/synapse/issues/8827)) - Fix a long-standing bug in the register admin endpoint (`/_synapse/admin/v1/register`) when the `mac` field was not provided. The endpoint now properly returns a 400 error. Contributed by @edwargix. ([\#8837](https://github.com/matrix-org/synapse/issues/8837)) - Fix a long-standing bug on Synapse instances supporting Single-Sign-On, where users would be prompted to enter their password to confirm certain actions, even though they have not set a password. ([\#8858](https://github.com/matrix-org/synapse/issues/8858)) - Fix a longstanding bug where a 500 error would be returned if the `Content-Length` header was not provided to the upload media resource. ([\#8862](https://github.com/matrix-org/synapse/issues/8862)) - Add additional validation to pusher URLs to be compliant with the specification. ([\#8865](https://github.com/matrix-org/synapse/issues/8865)) - Fix the error code that is returned when a user tries to register on a homeserver on which new-user registration has been disabled. ([\#8867](https://github.com/matrix-org/synapse/issues/8867)) - Fix a bug where `PUT /_synapse/admin/v2/users/` failed to create a new user when `avatar_url` is specified. Bug introduced in Synapse v1.9.0. ([\#8872](https://github.com/matrix-org/synapse/issues/8872)) - Fix a 500 error when attempting to preview an empty HTML file. ([\#8883](https://github.com/matrix-org/synapse/issues/8883)) - Fix occasional deadlock when handling SIGHUP. ([\#8918](https://github.com/matrix-org/synapse/issues/8918)) - Fix login API to not ratelimit application services that have ratelimiting disabled. ([\#8920](https://github.com/matrix-org/synapse/issues/8920)) - Fix bug where we ratelimited auto joining of rooms on registration (using `auto_join_rooms` config). ([\#8921](https://github.com/matrix-org/synapse/issues/8921)) - Fix a bug where deactivated users appeared in the user directory when their profile information was updated. ([\#8933](https://github.com/matrix-org/synapse/issues/8933), [\#8964](https://github.com/matrix-org/synapse/issues/8964)) - Fix bug introduced in Synapse v1.24.0 which would cause an exception on startup if both `enabled` and `localdb_enabled` were set to `False` in the `password_config` setting of the configuration file. ([\#8937](https://github.com/matrix-org/synapse/issues/8937)) - Fix a bug where 500 errors would be returned if the `m.room_history_visibility` event had invalid content. ([\#8945](https://github.com/matrix-org/synapse/issues/8945)) - Fix a bug causing common English words to not be considered for a user directory search. ([\#8959](https://github.com/matrix-org/synapse/issues/8959)) - Fix bug where application services couldn't register new ghost users if the server had reached its MAU limit. ([\#8962](https://github.com/matrix-org/synapse/issues/8962)) - Fix a long-standing bug where a `m.image` event without a `url` would cause errors on push. ([\#8965](https://github.com/matrix-org/synapse/issues/8965)) - Fix a small bug in v2 state resolution algorithm, which could also cause performance issues for rooms with large numbers of power levels. ([\#8971](https://github.com/matrix-org/synapse/issues/8971)) - Add validation to the `sendToDevice` API to raise a missing parameters error instead of a 500 error. ([\#8975](https://github.com/matrix-org/synapse/issues/8975)) - Add validation of group IDs to raise a 400 error instead of a 500 error. ([\#8977](https://github.com/matrix-org/synapse/issues/8977)) Improved Documentation ---------------------- - Fix the "Event persist rate" section of the included grafana dashboard by adding missing prometheus rules. ([\#8802](https://github.com/matrix-org/synapse/issues/8802)) - Combine related media admin API docs. ([\#8839](https://github.com/matrix-org/synapse/issues/8839)) - Fix an error in the documentation for the SAML username mapping provider. ([\#8873](https://github.com/matrix-org/synapse/issues/8873)) - Clarify comments around template directories in `sample_config.yaml`. ([\#8891](https://github.com/matrix-org/synapse/issues/8891)) - Move instructions for database setup, adjusted heading levels and improved syntax highlighting in [INSTALL.md](../INSTALL.md). Contributed by @fossterer. ([\#8987](https://github.com/matrix-org/synapse/issues/8987)) - Update the example value of `group_creation_prefix` in the sample configuration. ([\#8992](https://github.com/matrix-org/synapse/issues/8992)) - Link the Synapse developer room to the development section in the docs. ([\#9002](https://github.com/matrix-org/synapse/issues/9002)) Deprecations and Removals ------------------------- - Deprecate Shutdown Room and Purge Room Admin APIs. ([\#8829](https://github.com/matrix-org/synapse/issues/8829)) Internal Changes ---------------- - Properly store the mapping of external ID to Matrix ID for CAS users. ([\#8856](https://github.com/matrix-org/synapse/issues/8856), [\#8958](https://github.com/matrix-org/synapse/issues/8958)) - Remove some unnecessary stubbing from unit tests. ([\#8861](https://github.com/matrix-org/synapse/issues/8861)) - Remove unused `FakeResponse` class from unit tests. ([\#8864](https://github.com/matrix-org/synapse/issues/8864)) - Pass `room_id` to `get_auth_chain_difference`. ([\#8879](https://github.com/matrix-org/synapse/issues/8879)) - Add type hints to push module. ([\#8880](https://github.com/matrix-org/synapse/issues/8880), [\#8882](https://github.com/matrix-org/synapse/issues/8882), [\#8901](https://github.com/matrix-org/synapse/issues/8901), [\#8940](https://github.com/matrix-org/synapse/issues/8940), [\#8943](https://github.com/matrix-org/synapse/issues/8943), [\#9020](https://github.com/matrix-org/synapse/issues/9020)) - Simplify logic for handling user-interactive-auth via single-sign-on servers. ([\#8881](https://github.com/matrix-org/synapse/issues/8881)) - Skip the SAML tests if the requirements (`pysaml2` and `xmlsec1`) aren't available. ([\#8905](https://github.com/matrix-org/synapse/issues/8905)) - Fix multiarch docker image builds. ([\#8906](https://github.com/matrix-org/synapse/issues/8906)) - Don't publish `latest` docker image until all archs are built. ([\#8909](https://github.com/matrix-org/synapse/issues/8909)) - Various clean-ups to the structured logging and logging context code. ([\#8916](https://github.com/matrix-org/synapse/issues/8916), [\#8935](https://github.com/matrix-org/synapse/issues/8935)) - Automatically drop stale forward-extremities under some specific conditions. ([\#8929](https://github.com/matrix-org/synapse/issues/8929)) - Refactor test utilities for injecting HTTP requests. ([\#8946](https://github.com/matrix-org/synapse/issues/8946)) - Add a maximum size of 50 kilobytes to .well-known lookups. ([\#8950](https://github.com/matrix-org/synapse/issues/8950)) - Fix bug in `generate_log_config` script which made it write empty files. ([\#8952](https://github.com/matrix-org/synapse/issues/8952)) - Clean up tox.ini file; disable coverage checking for non-test runs. ([\#8963](https://github.com/matrix-org/synapse/issues/8963)) - Add type hints to the admin and room list handlers. ([\#8973](https://github.com/matrix-org/synapse/issues/8973)) - Add type hints to the receipts and user directory handlers. ([\#8976](https://github.com/matrix-org/synapse/issues/8976)) - Drop the unused `local_invites` table. ([\#8979](https://github.com/matrix-org/synapse/issues/8979)) - Add type hints to the base storage code. ([\#8980](https://github.com/matrix-org/synapse/issues/8980)) - Support using PyJWT v2.0.0 in the test suite. ([\#8986](https://github.com/matrix-org/synapse/issues/8986)) - Fix `tests.federation.transport.RoomDirectoryFederationTests` and ensure it runs in CI. ([\#8998](https://github.com/matrix-org/synapse/issues/8998)) - Add type hints to the crypto module. ([\#8999](https://github.com/matrix-org/synapse/issues/8999)) **Changelogs for older versions can be found [here](CHANGES-2020.md).** synapse-1.100.0/docs/changelogs/CHANGES-2022.md000066400000000000000000010116461455622526000203720ustar00rootroot00000000000000 Synapse 1.74.0 (2022-12-20) =========================== Improved Documentation ---------------------- - Add release note and update documentation regarding optional ICU support in user search. ([\#14712](https://github.com/matrix-org/synapse/issues/14712)) Synapse 1.74.0rc1 (2022-12-13) ============================== Features -------- - Improve user search for international display names. ([\#14464](https://github.com/matrix-org/synapse/issues/14464)) - Stop using deprecated `keyIds` parameter when calling `/_matrix/key/v2/server`. ([\#14490](https://github.com/matrix-org/synapse/issues/14490), [\#14525](https://github.com/matrix-org/synapse/issues/14525)) - Add new `push.enabled` config option to allow opting out of push notification calculation. ([\#14551](https://github.com/matrix-org/synapse/issues/14551), [\#14619](https://github.com/matrix-org/synapse/issues/14619)) - Advertise support for Matrix 1.5 on `/_matrix/client/versions`. ([\#14576](https://github.com/matrix-org/synapse/issues/14576)) - Improve opentracing and logging for to-device message handling. ([\#14598](https://github.com/matrix-org/synapse/issues/14598)) - Allow selecting "prejoin" events by state keys in addition to event types. ([\#14642](https://github.com/matrix-org/synapse/issues/14642)) Bugfixes -------- - Fix a long-standing bug where a device list update might not be sent to clients in certain circumstances. ([\#14435](https://github.com/matrix-org/synapse/issues/14435), [\#14592](https://github.com/matrix-org/synapse/issues/14592), [\#14604](https://github.com/matrix-org/synapse/issues/14604)) - Suppress a spurious warning when `POST /rooms///`, `POST /join//` receive an empty HTTP request body. ([\#14600](https://github.com/matrix-org/synapse/issues/14600)) - Return spec-compliant JSON errors when unknown endpoints are requested. ([\#14620](https://github.com/matrix-org/synapse/issues/14620), [\#14621](https://github.com/matrix-org/synapse/issues/14621)) - Update html templates to load images over HTTPS. Contributed by @ashfame. ([\#14625](https://github.com/matrix-org/synapse/issues/14625)) - Fix a long-standing bug where the user directory would return 1 more row than requested. ([\#14631](https://github.com/matrix-org/synapse/issues/14631)) - Reject invalid read receipt requests with empty room or event IDs. Contributed by Nick @ Beeper (@fizzadar). ([\#14632](https://github.com/matrix-org/synapse/issues/14632)) - Fix a bug introduced in Synapse 1.67.0 where not specifying a config file or a server URL would lead to the `register_new_matrix_user` script failing. ([\#14637](https://github.com/matrix-org/synapse/issues/14637)) - Fix a long-standing bug where the user directory and room/user stats might be out of sync. ([\#14639](https://github.com/matrix-org/synapse/issues/14639), [\#14643](https://github.com/matrix-org/synapse/issues/14643)) - Fix a bug introduced in Synapse 1.72.0 where the background updates to add non-thread unique indexes on receipts would fail if they were previously interrupted. ([\#14650](https://github.com/matrix-org/synapse/issues/14650)) - Improve validation of field size limits in events. ([\#14664](https://github.com/matrix-org/synapse/issues/14664)) - Fix bugs introduced in Synapse 1.55.0 and 1.69.0 where application services would not be notified of events in the correct rooms, due to stale caches. ([\#14670](https://github.com/matrix-org/synapse/issues/14670)) Improved Documentation ---------------------- - Update worker settings for `pusher` and `federation_sender` functionality. ([\#14493](https://github.com/matrix-org/synapse/issues/14493)) - Add links to third party package repositories, and point to the bug which highlights Ubuntu's out-of-date packages. ([\#14517](https://github.com/matrix-org/synapse/issues/14517)) - Remove old, incorrect minimum postgres version note and replace with a link to the [Dependency Deprecation Policy](https://matrix-org.github.io/synapse/v1.73/deprecation_policy.html). ([\#14590](https://github.com/matrix-org/synapse/issues/14590)) - Add Single-Sign On setup instructions for Mastodon-based instances. ([\#14594](https://github.com/matrix-org/synapse/issues/14594)) - Change `turn_allow_guests` example value to lowercase `true`. ([\#14634](https://github.com/matrix-org/synapse/issues/14634)) Internal Changes ---------------- - Optimise push badge count calculations. Contributed by Nick @ Beeper (@fizzadar). ([\#14255](https://github.com/matrix-org/synapse/issues/14255)) - Faster remote room joins: stream the un-partial-stating of rooms over replication. ([\#14473](https://github.com/matrix-org/synapse/issues/14473), [\#14474](https://github.com/matrix-org/synapse/issues/14474)) - Share the `ClientRestResource` for both workers and the main process. ([\#14528](https://github.com/matrix-org/synapse/issues/14528)) - Add `--editable` flag to `complement.sh` which uses an editable install of Synapse for faster turn-around times whilst developing iteratively. ([\#14548](https://github.com/matrix-org/synapse/issues/14548)) - Faster joins: use servers list approximation to send read receipts when in partial state instead of waiting for the full state of the room. ([\#14549](https://github.com/matrix-org/synapse/issues/14549)) - Modernize unit tests configuration related to workers. ([\#14568](https://github.com/matrix-org/synapse/issues/14568)) - Bump jsonschema from 4.17.0 to 4.17.3. ([\#14591](https://github.com/matrix-org/synapse/issues/14591)) - Fix Rust lint CI. ([\#14602](https://github.com/matrix-org/synapse/issues/14602)) - Bump JasonEtco/create-an-issue from 2.5.0 to 2.8.1. ([\#14607](https://github.com/matrix-org/synapse/issues/14607)) - Alter some unit test environment parameters to decrease time spent running tests. ([\#14610](https://github.com/matrix-org/synapse/issues/14610)) - Switch to Go recommended installation method for `gotestfmt` template in CI. ([\#14611](https://github.com/matrix-org/synapse/issues/14611)) - Bump phonenumbers from 8.13.0 to 8.13.1. ([\#14612](https://github.com/matrix-org/synapse/issues/14612)) - Bump types-setuptools from 65.5.0.3 to 65.6.0.1. ([\#14613](https://github.com/matrix-org/synapse/issues/14613)) - Bump twine from 4.0.1 to 4.0.2. ([\#14614](https://github.com/matrix-org/synapse/issues/14614)) - Bump types-requests from 2.28.11.2 to 2.28.11.5. ([\#14615](https://github.com/matrix-org/synapse/issues/14615)) - Bump cryptography from 38.0.3 to 38.0.4. ([\#14616](https://github.com/matrix-org/synapse/issues/14616)) - Remove useless cargo install with apt from Dockerfile. ([\#14636](https://github.com/matrix-org/synapse/issues/14636)) - Bump certifi from 2021.10.8 to 2022.12.7. ([\#14645](https://github.com/matrix-org/synapse/issues/14645)) - Bump flake8-bugbear from 22.10.27 to 22.12.6. ([\#14656](https://github.com/matrix-org/synapse/issues/14656)) - Bump packaging from 21.3 to 22.0. ([\#14657](https://github.com/matrix-org/synapse/issues/14657)) - Bump types-pillow from 9.3.0.1 to 9.3.0.4. ([\#14658](https://github.com/matrix-org/synapse/issues/14658)) - Bump serde from 1.0.148 to 1.0.150. ([\#14659](https://github.com/matrix-org/synapse/issues/14659)) - Bump phonenumbers from 8.13.1 to 8.13.2. ([\#14660](https://github.com/matrix-org/synapse/issues/14660)) - Bump authlib from 1.1.0 to 1.2.0. ([\#14661](https://github.com/matrix-org/synapse/issues/14661)) - Move `StateFilter` to `synapse.types`. ([\#14668](https://github.com/matrix-org/synapse/issues/14668)) - Improve type hints. ([\#14597](https://github.com/matrix-org/synapse/issues/14597), [\#14646](https://github.com/matrix-org/synapse/issues/14646), [\#14671](https://github.com/matrix-org/synapse/issues/14671)) Synapse 1.73.0 (2022-12-06) =========================== Please note that legacy Prometheus metric names have been removed in this release; see [the upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.73/docs/upgrade.md#legacy-prometheus-metric-names-have-now-been-removed) for more details. No significant changes since 1.73.0rc2. Synapse 1.73.0rc2 (2022-12-01) ============================== Bugfixes -------- - Fix a regression in Synapse 1.73.0rc1 where Synapse's main process would stop responding to HTTP requests when a user with a large number of devices logs in. ([\#14582](https://github.com/matrix-org/synapse/issues/14582)) Synapse 1.73.0rc1 (2022-11-29) ============================== Features -------- - Speed-up `/messages` with `filter_events_for_client` optimizations. ([\#14527](https://github.com/matrix-org/synapse/issues/14527)) - Improve DB performance by reducing amount of data that gets read in `device_lists_changes_in_room`. ([\#14534](https://github.com/matrix-org/synapse/issues/14534)) - Add support for handling avatar in SSO OIDC login. Contributed by @ashfame. ([\#13917](https://github.com/matrix-org/synapse/issues/13917)) - Move MSC3030 `/timestamp_to_event` endpoints to stable `v1` location (`/_matrix/client/v1/rooms//timestamp_to_event?ts=&dir=`, `/_matrix/federation/v1/timestamp_to_event/?ts=&dir=`). ([\#14471](https://github.com/matrix-org/synapse/issues/14471)) - Reduce database load of [Client-Server endpoints](https://spec.matrix.org/v1.5/client-server-api/#aggregations) which return bundled aggregations. ([\#14491](https://github.com/matrix-org/synapse/issues/14491), [\#14508](https://github.com/matrix-org/synapse/issues/14508), [\#14510](https://github.com/matrix-org/synapse/issues/14510)) - Add unstable support for an Extensible Events room version (`org.matrix.msc1767.10`) via [MSC1767](https://github.com/matrix-org/matrix-spec-proposals/pull/1767), [MSC3931](https://github.com/matrix-org/matrix-spec-proposals/pull/3931), [MSC3932](https://github.com/matrix-org/matrix-spec-proposals/pull/3932), and [MSC3933](https://github.com/matrix-org/matrix-spec-proposals/pull/3933). ([\#14520](https://github.com/matrix-org/synapse/issues/14520), [\#14521](https://github.com/matrix-org/synapse/issues/14521), [\#14524](https://github.com/matrix-org/synapse/issues/14524)) - Prune user's old devices on login if they have too many. ([\#14038](https://github.com/matrix-org/synapse/issues/14038), [\#14580](https://github.com/matrix-org/synapse/issues/14580)) Bugfixes -------- - Fix a long-standing bug where paginating from the start of a room did not work. Contributed by @gnunicorn. ([\#14149](https://github.com/matrix-org/synapse/issues/14149)) - Fix a bug introduced in Synapse 1.58.0 where a user with presence state `org.matrix.msc3026.busy` would mistakenly be set to `online` when calling `/sync` or `/events` on a worker process. ([\#14393](https://github.com/matrix-org/synapse/issues/14393)) - Fix a bug introduced in Synapse 1.70.0 where a receipt's thread ID was not sent over federation. ([\#14466](https://github.com/matrix-org/synapse/issues/14466)) - Fix a long-standing bug where the [List media admin API](https://matrix-org.github.io/synapse/latest/admin_api/media_admin_api.html#list-all-media-in-a-room) would fail when processing an image with broken thumbnail information. ([\#14537](https://github.com/matrix-org/synapse/issues/14537)) - Fix a bug introduced in Synapse 1.67.0 where two logging context warnings would be logged on startup. ([\#14574](https://github.com/matrix-org/synapse/issues/14574)) - In application service transactions that include the experimental `org.matrix.msc3202.device_one_time_key_counts` key, include a duplicate key of `org.matrix.msc3202.device_one_time_keys_count` to match the name proposed by [MSC3202](https://github.com/matrix-org/matrix-spec-proposals/pull/3202). ([\#14565](https://github.com/matrix-org/synapse/issues/14565)) - Fix a bug introduced in Synapse 0.9 where Synapse would fail to fetch server keys whose IDs contain a forward slash. ([\#14490](https://github.com/matrix-org/synapse/issues/14490)) Improved Documentation ---------------------- - Fixed link to 'Synapse administration endpoints'. ([\#14499](https://github.com/matrix-org/synapse/issues/14499)) Deprecations and Removals ------------------------- - Remove legacy Prometheus metrics names. They were deprecated in Synapse v1.69.0 and disabled by default in Synapse v1.71.0. ([\#14538](https://github.com/matrix-org/synapse/issues/14538)) Internal Changes ---------------- - Improve type hinting throughout Synapse. ([\#14055](https://github.com/matrix-org/synapse/issues/14055), [\#14412](https://github.com/matrix-org/synapse/issues/14412), [\#14529](https://github.com/matrix-org/synapse/issues/14529), [\#14452](https://github.com/matrix-org/synapse/issues/14452)). - Remove old stream ID tracking code. Contributed by Nick @Beeper (@fizzadar). ([\#14376](https://github.com/matrix-org/synapse/issues/14376), [\#14468](https://github.com/matrix-org/synapse/issues/14468)) - Remove the `worker_main_http_uri` configuration setting. This is now handled via internal replication. ([\#14400](https://github.com/matrix-org/synapse/issues/14400), [\#14476](https://github.com/matrix-org/synapse/issues/14476)) - Refactor `federation_sender` and `pusher` configuration loading. ([\#14496](https://github.com/matrix-org/synapse/issues/14496)) ([\#14509](https://github.com/matrix-org/synapse/issues/14509), [\#14573](https://github.com/matrix-org/synapse/issues/14573)) - Faster joins: do not wait for full state when creating events to send. ([\#14403](https://github.com/matrix-org/synapse/issues/14403)) - Faster joins: filter out non local events when a room doesn't have its full state. ([\#14404](https://github.com/matrix-org/synapse/issues/14404)) - Faster joins: send events to initial list of servers if we don't have the full state yet. ([\#14408](https://github.com/matrix-org/synapse/issues/14408)) - Faster joins: use servers list approximation received during `send_join` (potentially updated with received membership events) in `assert_host_in_room`. ([\#14515](https://github.com/matrix-org/synapse/issues/14515)) - Fix type logic in TCP replication code that prevented correctly ignoring blank commands. ([\#14449](https://github.com/matrix-org/synapse/issues/14449)) - Remove option to skip locking of tables when performing emulated upserts, to avoid a class of bugs in future. ([\#14469](https://github.com/matrix-org/synapse/issues/14469)) - `scripts-dev/federation_client`: Fix routing on servers with `.well-known` files. ([\#14479](https://github.com/matrix-org/synapse/issues/14479)) - Reduce default third party invite rate limit to 216 invites per day. ([\#14487](https://github.com/matrix-org/synapse/issues/14487)) - Refactor conversion of device list changes in room to outbound pokes to track unconverted rows using a `(stream ID, room ID)` position instead of updating the `converted_to_destinations` flag on every row. ([\#14516](https://github.com/matrix-org/synapse/issues/14516)) - Add more prompts to the bug report form. ([\#14522](https://github.com/matrix-org/synapse/issues/14522)) - Extend editorconfig rules on indent and line length to `.pyi` files. ([\#14526](https://github.com/matrix-org/synapse/issues/14526)) - Run Rust CI when `Cargo.lock` changes. This is particularly useful for dependabot updates. ([\#14571](https://github.com/matrix-org/synapse/issues/14571)) - Fix a possible variable shadow in `create_new_client_event`. ([\#14575](https://github.com/matrix-org/synapse/issues/14575)) - Bump various dependencies in the `poetry.lock` file and in CI scripts. ([\#14557](https://github.com/matrix-org/synapse/issues/14557), [\#14559](https://github.com/matrix-org/synapse/issues/14559), [\#14560](https://github.com/matrix-org/synapse/issues/14560), [\#14500](https://github.com/matrix-org/synapse/issues/14500), [\#14501](https://github.com/matrix-org/synapse/issues/14501), [\#14502](https://github.com/matrix-org/synapse/issues/14502), [\#14503](https://github.com/matrix-org/synapse/issues/14503), [\#14504](https://github.com/matrix-org/synapse/issues/14504), [\#14505](https://github.com/matrix-org/synapse/issues/14505)). Synapse 1.72.0 (2022-11-22) =========================== Please note that Synapse now only supports PostgreSQL 11+, because PostgreSQL 10 has reached end-of-life, c.f. our [Deprecation Policy](https://github.com/matrix-org/synapse/blob/develop/docs/deprecation_policy.md). Bugfixes -------- - Update forgotten references to legacy metrics in the included Grafana dashboard. ([\#14477](https://github.com/matrix-org/synapse/issues/14477)) Synapse 1.72.0rc1 (2022-11-16) ============================== Features -------- - Add experimental support for [MSC3912](https://github.com/matrix-org/matrix-spec-proposals/pull/3912): Relation-based redactions. ([\#14260](https://github.com/matrix-org/synapse/issues/14260)) - Build Debian packages for Ubuntu 22.10 (Kinetic Kudu). ([\#14396](https://github.com/matrix-org/synapse/issues/14396)) - Add an [Admin API](https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html) endpoint for user lookup based on third-party ID (3PID). Contributed by @ashfame. ([\#14405](https://github.com/matrix-org/synapse/issues/14405)) - Faster joins: include heroes' membership events in the partial join response, for rooms without a name or canonical alias. ([\#14442](https://github.com/matrix-org/synapse/issues/14442)) Bugfixes -------- - Faster joins: do not block creation of or queries for room aliases during the resync. ([\#14292](https://github.com/matrix-org/synapse/issues/14292)) - Fix a bug introduced in Synapse 1.64.0rc1 which could cause log spam when fetching events from other homeservers. ([\#14347](https://github.com/matrix-org/synapse/issues/14347)) - Fix a bug introduced in 1.66 which would not send certain pushrules to clients. Contributed by Nico. ([\#14356](https://github.com/matrix-org/synapse/issues/14356)) - Fix a bug introduced in v1.71.0rc1 where the power level event was incorrectly created during initial room creation. ([\#14361](https://github.com/matrix-org/synapse/issues/14361)) - Fix the refresh token endpoint to be under /r0 and /v3 instead of /v1. Contributed by Tulir @ Beeper. ([\#14364](https://github.com/matrix-org/synapse/issues/14364)) - Fix a long-standing bug where Synapse would raise an error when encountering an unrecognised field in a `/sync` filter, instead of ignoring it for forward compatibility. ([\#14369](https://github.com/matrix-org/synapse/issues/14369)) - Fix a background database update, introduced in Synapse 1.64.0, which could cause poor database performance. ([\#14374](https://github.com/matrix-org/synapse/issues/14374)) - Fix PostgreSQL sometimes using table scans for queries against the `event_search` table, taking a long time and a large amount of IO. ([\#14409](https://github.com/matrix-org/synapse/issues/14409)) - Fix rendering of some HTML templates (including emails). Introduced in v1.71.0. ([\#14448](https://github.com/matrix-org/synapse/issues/14448)) - Fix a bug introduced in Synapse 1.70.0 where the background updates to add non-thread unique indexes on receipts could fail when upgrading from 1.67.0 or earlier. ([\#14453](https://github.com/matrix-org/synapse/issues/14453)) Updates to the Docker image --------------------------- - Add all Stream Writer worker types to `configure_workers_and_start.py`. ([\#14197](https://github.com/matrix-org/synapse/issues/14197)) - Remove references to legacy worker types in the multi-worker Dockerfile. ([\#14294](https://github.com/matrix-org/synapse/issues/14294)) Improved Documentation ---------------------- - Upload documentation PRs to Netlify. ([\#12947](https://github.com/matrix-org/synapse/issues/12947), [\#14370](https://github.com/matrix-org/synapse/issues/14370)) - Add additional TURN server configuration example based on [eturnal](https://github.com/processone/eturnal) and adjust general TURN server doc structure. ([\#14293](https://github.com/matrix-org/synapse/issues/14293)) - Add example on how to load balance /sync requests. Contributed by [aceArt](https://aceart.de). ([\#14297](https://github.com/matrix-org/synapse/issues/14297)) - Edit sample Nginx reverse proxy configuration to use HTTP/1.1. Contributed by Brad Jones. ([\#14414](https://github.com/matrix-org/synapse/issues/14414)) Deprecations and Removals ------------------------- - Remove support for PostgreSQL 10. ([\#14392](https://github.com/matrix-org/synapse/issues/14392), [\#14397](https://github.com/matrix-org/synapse/issues/14397)) Internal Changes ---------------- - Run unit tests against Python 3.11. ([\#13812](https://github.com/matrix-org/synapse/issues/13812)) - Add TLS support for generic worker endpoints. ([\#14128](https://github.com/matrix-org/synapse/issues/14128), [\#14455](https://github.com/matrix-org/synapse/issues/14455)) - Switch to a maintained action for installing Rust in CI. ([\#14313](https://github.com/matrix-org/synapse/issues/14313)) - Add override ability to `complement.sh` command line script to request certain types of workers. ([\#14324](https://github.com/matrix-org/synapse/issues/14324)) - Enabling testing of [MSC3874](https://github.com/matrix-org/matrix-spec-proposals/pull/3874) (filtering of `/messages` by relation type) in complement. ([\#14339](https://github.com/matrix-org/synapse/issues/14339)) - Concisely log a failure to resolve state due to missing `prev_events`. ([\#14346](https://github.com/matrix-org/synapse/issues/14346)) - Use a maintained Github action to install Rust. ([\#14351](https://github.com/matrix-org/synapse/issues/14351)) - Cleanup old worker datastore classes. Contributed by Nick @ Beeper (@fizzadar). ([\#14375](https://github.com/matrix-org/synapse/issues/14375)) - Test against PostgreSQL 15 in CI. ([\#14394](https://github.com/matrix-org/synapse/issues/14394)) - Remove unreachable code. ([\#14410](https://github.com/matrix-org/synapse/issues/14410)) - Clean-up event persistence code. ([\#14411](https://github.com/matrix-org/synapse/issues/14411)) - Update docstring to clarify that `get_partial_state_events_batch` does not just give you completely arbitrary partial-state events. ([\#14417](https://github.com/matrix-org/synapse/issues/14417)) - Fix mypy errors introduced by bumping the locked version of `attrs` and `gitpython`. ([\#14433](https://github.com/matrix-org/synapse/issues/14433)) - Make Dependabot only bump Rust deps in the lock file. ([\#14434](https://github.com/matrix-org/synapse/issues/14434)) - Fix an incorrect stub return type for `PushRuleEvaluator.run`. ([\#14451](https://github.com/matrix-org/synapse/issues/14451)) - Improve performance of `/context` in large rooms. ([\#14461](https://github.com/matrix-org/synapse/issues/14461)) Synapse 1.71.0 (2022-11-08) =========================== Please note that, as announced in the release notes for Synapse 1.69.0, legacy Prometheus metric names are now disabled by default. They will be removed altogether in Synapse 1.73.0. If not already done, server administrators should update their dashboards and alerting rules to avoid using the deprecated metric names. See the [upgrade notes](https://matrix-org.github.io/synapse/v1.71/upgrade.html#upgrading-to-v1710) for more details. **Note:** in line with our [deprecation policy](https://matrix-org.github.io/synapse/latest/deprecation_policy.html) for platform dependencies, this will be the last release to support PostgreSQL 10, which reaches upstream end-of-life on November 10th, 2022. Future releases of Synapse will require PostgreSQL 11+. No significant changes since 1.71.0rc2. Synapse 1.71.0rc2 (2022-11-04) ============================== Improved Documentation ---------------------- - Document the changes to monthly active user metrics due to deprecation of legacy Prometheus metric names. ([\#14358](https://github.com/matrix-org/synapse/issues/14358), [\#14360](https://github.com/matrix-org/synapse/issues/14360)) Deprecations and Removals ------------------------- - Disable legacy Prometheus metric names by default. They can still be re-enabled for now, but they will be removed altogether in Synapse 1.73.0. ([\#14353](https://github.com/matrix-org/synapse/issues/14353)) Internal Changes ---------------- - Run unit tests against Python 3.11. ([\#13812](https://github.com/matrix-org/synapse/issues/13812)) Synapse 1.71.0rc1 (2022-11-01) ============================== Features -------- - Support back-channel logouts from OpenID Connect providers. ([\#11414](https://github.com/matrix-org/synapse/issues/11414)) - Allow use of Postgres and SQLlite full-text search operators in search queries. ([\#11635](https://github.com/matrix-org/synapse/issues/11635), [\#14310](https://github.com/matrix-org/synapse/issues/14310), [\#14311](https://github.com/matrix-org/synapse/issues/14311)) - Implement [MSC3664](https://github.com/matrix-org/matrix-doc/pull/3664), Pushrules for relations. Contributed by Nico. ([\#11804](https://github.com/matrix-org/synapse/issues/11804)) - Improve aesthetics of HTML templates. Note that these changes do not retroactively apply to templates which have been [customised](https://matrix-org.github.io/synapse/latest/templates.html#templates) by server admins. ([\#13652](https://github.com/matrix-org/synapse/issues/13652)) - Enable write-ahead logging for SQLite installations. Contributed by [@asymmetric](https://github.com/asymmetric). ([\#13897](https://github.com/matrix-org/synapse/issues/13897)) - Show erasure status when [listing users](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#query-user-account) in the Admin API. ([\#14205](https://github.com/matrix-org/synapse/issues/14205)) - Provide a specific error code when a `/sync` request provides a filter which doesn't represent a JSON object. ([\#14262](https://github.com/matrix-org/synapse/issues/14262)) Bugfixes -------- - Fix a long-standing bug where the `update_synapse_database` script could not be run with multiple databases. Contributed by @thefinn93 @ Beeper. ([\#13422](https://github.com/matrix-org/synapse/issues/13422)) - Fix a bug which prevented setting an avatar on homeservers which have an explicit port in their `server_name` and have `max_avatar_size` and/or `allowed_avatar_mimetypes` configuration. Contributed by @ashfame. ([\#13927](https://github.com/matrix-org/synapse/issues/13927)) - Check appservice user interest against the local users instead of all users in the room to align with [MSC3905](https://github.com/matrix-org/matrix-spec-proposals/pull/3905). ([\#13958](https://github.com/matrix-org/synapse/issues/13958)) - Fix a long-standing bug where Synapse would accidentally include extra information in the response to [`PUT /_matrix/federation/v2/invite/{roomId}/{eventId}`](https://spec.matrix.org/v1.4/server-server-api/#put_matrixfederationv2inviteroomideventid). ([\#14064](https://github.com/matrix-org/synapse/issues/14064)) - Fix a bug introduced in Synapse 1.64.0 where presence updates could be missing from `/sync` responses. ([\#14243](https://github.com/matrix-org/synapse/issues/14243)) - Fix a bug introduced in Synapse 1.60.0 which caused an error to be logged when Synapse received a SIGHUP signal if debug logging was enabled. ([\#14258](https://github.com/matrix-org/synapse/issues/14258)) - Prevent history insertion ([MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716)) during an partial join ([MSC3706](https://github.com/matrix-org/matrix-spec-proposals/pull/3706)). ([\#14291](https://github.com/matrix-org/synapse/issues/14291)) - Fix a bug introduced in Synapse 1.34.0 where device names would be returned via a federation user key query request when `allow_device_name_lookup_over_federation` was set to `false`. ([\#14304](https://github.com/matrix-org/synapse/issues/14304)) - Fix a bug introduced in Synapse 0.34.0 where logs could include error spam when background processes are measured as taking a negative amount of time. ([\#14323](https://github.com/matrix-org/synapse/issues/14323)) - Fix a bug introduced in Synapse 1.70.0 where clients were unable to PUT new [dehydrated devices](https://github.com/matrix-org/matrix-spec-proposals/pull/2697). ([\#14336](https://github.com/matrix-org/synapse/issues/14336)) Improved Documentation ---------------------- - Explain how to disable the use of [`trusted_key_servers`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#trusted_key_servers). ([\#13999](https://github.com/matrix-org/synapse/issues/13999)) - Add workers settings to [configuration manual](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#individual-worker-configuration). ([\#14086](https://github.com/matrix-org/synapse/issues/14086)) - Correct the name of the config option [`encryption_enabled_by_default_for_room_type`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#encryption_enabled_by_default_for_room_type). ([\#14110](https://github.com/matrix-org/synapse/issues/14110)) - Update docstrings of `SynapseError` and `FederationError` to bettter describe what they are used for and the effects of using them are. ([\#14191](https://github.com/matrix-org/synapse/issues/14191)) Internal Changes ---------------- - Remove unused `@lru_cache` decorator. ([\#13595](https://github.com/matrix-org/synapse/issues/13595)) - Save login tokens in database and prevent login token reuse. ([\#13844](https://github.com/matrix-org/synapse/issues/13844)) - Refactor OIDC tests to better mimic an actual OIDC provider. ([\#13910](https://github.com/matrix-org/synapse/issues/13910)) - Fix type annotation causing import time error in the Complement forking launcher. ([\#14084](https://github.com/matrix-org/synapse/issues/14084)) - Refactor [MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030) `/timestamp_to_event` endpoint to loop over federation destinations with standard pattern and error handling. ([\#14096](https://github.com/matrix-org/synapse/issues/14096)) - Add initial power level event to batch of bulk persisted events when creating a new room. ([\#14228](https://github.com/matrix-org/synapse/issues/14228)) - Refactor `/key/` endpoints to use `RestServlet` classes. ([\#14229](https://github.com/matrix-org/synapse/issues/14229)) - Switch to using the `matrix-org/backend-meta` version of `triage-incoming` for new issues in CI. ([\#14230](https://github.com/matrix-org/synapse/issues/14230)) - Build wheels on macos 11, not 10.15. ([\#14249](https://github.com/matrix-org/synapse/issues/14249)) - Add debugging to help diagnose lost device list updates. ([\#14268](https://github.com/matrix-org/synapse/issues/14268)) - Add Rust cache to CI for `trial` runs. ([\#14287](https://github.com/matrix-org/synapse/issues/14287)) - Improve type hinting of `RawHeaders`. ([\#14303](https://github.com/matrix-org/synapse/issues/14303)) - Use Poetry 1.2.0 in the Twisted Trunk CI job. ([\#14305](https://github.com/matrix-org/synapse/issues/14305))

Dependency updates Runtime: - Bump anyhow from 1.0.65 to 1.0.66. ([\#14278](https://github.com/matrix-org/synapse/issues/14278)) - Bump jinja2 from 3.0.3 to 3.1.2. ([\#14271](https://github.com/matrix-org/synapse/issues/14271)) - Bump prometheus-client from 0.14.0 to 0.15.0. ([\#14274](https://github.com/matrix-org/synapse/issues/14274)) - Bump psycopg2 from 2.9.4 to 2.9.5. ([\#14331](https://github.com/matrix-org/synapse/issues/14331)) - Bump pysaml2 from 7.1.2 to 7.2.1. ([\#14270](https://github.com/matrix-org/synapse/issues/14270)) - Bump sentry-sdk from 1.5.11 to 1.10.1. ([\#14330](https://github.com/matrix-org/synapse/issues/14330)) - Bump serde from 1.0.145 to 1.0.147. ([\#14277](https://github.com/matrix-org/synapse/issues/14277)) - Bump serde_json from 1.0.86 to 1.0.87. ([\#14279](https://github.com/matrix-org/synapse/issues/14279)) Tooling and CI: - Bump black from 22.3.0 to 22.10.0. ([\#14328](https://github.com/matrix-org/synapse/issues/14328)) - Bump flake8-bugbear from 21.3.2 to 22.9.23. ([\#14042](https://github.com/matrix-org/synapse/issues/14042)) - Bump peaceiris/actions-gh-pages from 3.8.0 to 3.9.0. ([\#14276](https://github.com/matrix-org/synapse/issues/14276)) - Bump peaceiris/actions-mdbook from 1.1.14 to 1.2.0. ([\#14275](https://github.com/matrix-org/synapse/issues/14275)) - Bump setuptools-rust from 1.5.1 to 1.5.2. ([\#14273](https://github.com/matrix-org/synapse/issues/14273)) - Bump twine from 3.8.0 to 4.0.1. ([\#14332](https://github.com/matrix-org/synapse/issues/14332)) - Bump types-opentracing from 2.4.7 to 2.4.10. ([\#14133](https://github.com/matrix-org/synapse/issues/14133)) - Bump types-requests from 2.28.11 to 2.28.11.2. ([\#14272](https://github.com/matrix-org/synapse/issues/14272))
Synapse 1.70.1 (2022-10-28) =========================== This release fixes some regressions that were discovered in 1.70.0. [#14300](https://github.com/matrix-org/synapse/issues/14300) was previously reported to be a regression in 1.70.0 as well. However, we have since concluded that it was limited to the reporter and thus have not needed to include any fix for it in 1.70.1. Bugfixes -------- - Fix a bug introduced in Synapse 1.70.0rc1 where the access tokens sent to application services as headers were malformed. Application services which were obtaining access tokens from query parameters were not affected. ([\#14301](https://github.com/matrix-org/synapse/issues/14301)) - Fix room creation being rate limited too aggressively since Synapse v1.69.0. ([\#14314](https://github.com/matrix-org/synapse/issues/14314)) Synapse 1.70.0 (2022-10-26) =========================== No significant changes since 1.70.0rc2. Synapse 1.70.0rc2 (2022-10-25) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.70.0rc1 where the information returned from the `/threads` API could be stale when threaded events are redacted. ([\#14248](https://github.com/matrix-org/synapse/issues/14248)) - Fix a bug introduced in Synapse 1.70.0rc1 leading to broken outbound federation when using Python 3.7. ([\#14280](https://github.com/matrix-org/synapse/issues/14280)) - Fix a bug introduced in Synapse 1.70.0rc1 where edits to non-message events were aggregated by the homeserver. ([\#14283](https://github.com/matrix-org/synapse/issues/14283)) Internal Changes ---------------- - Build ABI3 wheels for CPython. ([\#14253](https://github.com/matrix-org/synapse/issues/14253)) - For the aarch64 architecture, only build wheels for CPython manylinux. ([\#14259](https://github.com/matrix-org/synapse/issues/14259)) Synapse 1.70.0rc1 (2022-10-19) ============================== Features -------- - Support for [MSC3856](https://github.com/matrix-org/matrix-spec-proposals/pull/3856): threads list API. ([\#13394](https://github.com/matrix-org/synapse/issues/13394), [\#14171](https://github.com/matrix-org/synapse/issues/14171), [\#14175](https://github.com/matrix-org/synapse/issues/14175)) - Support for thread-specific notifications & receipts ([MSC3771](https://github.com/matrix-org/matrix-spec-proposals/pull/3771) and [MSC3773](https://github.com/matrix-org/matrix-spec-proposals/pull/3773)). ([\#13776](https://github.com/matrix-org/synapse/issues/13776), [\#13824](https://github.com/matrix-org/synapse/issues/13824), [\#13877](https://github.com/matrix-org/synapse/issues/13877), [\#13878](https://github.com/matrix-org/synapse/issues/13878), [\#14050](https://github.com/matrix-org/synapse/issues/14050), [\#14140](https://github.com/matrix-org/synapse/issues/14140), [\#14159](https://github.com/matrix-org/synapse/issues/14159), [\#14163](https://github.com/matrix-org/synapse/issues/14163), [\#14174](https://github.com/matrix-org/synapse/issues/14174), [\#14222](https://github.com/matrix-org/synapse/issues/14222)) - Stop fetching missing `prev_events` after we already know their signature is invalid. ([\#13816](https://github.com/matrix-org/synapse/issues/13816)) - Send application service access tokens as a header (and query parameter). Implements [MSC2832](https://github.com/matrix-org/matrix-spec-proposals/pull/2832). ([\#13996](https://github.com/matrix-org/synapse/issues/13996)) - Ignore server ACL changes when generating pushes. Implements [MSC3786](https://github.com/matrix-org/matrix-spec-proposals/pull/3786). ([\#13997](https://github.com/matrix-org/synapse/issues/13997)) - Experimental support for redirecting to an implementation of a [MSC3886](https://github.com/matrix-org/matrix-spec-proposals/pull/3886) HTTP rendezvous service. ([\#14018](https://github.com/matrix-org/synapse/issues/14018)) - The `/relations` endpoint can now be used on workers. ([\#14028](https://github.com/matrix-org/synapse/issues/14028)) - Advertise support for Matrix 1.3 and 1.4 on `/_matrix/client/versions`. ([\#14032](https://github.com/matrix-org/synapse/issues/14032), [\#14184](https://github.com/matrix-org/synapse/issues/14184)) - Improve validation of request bodies for the [Device Management](https://spec.matrix.org/v1.4/client-server-api/#device-management) and [MSC2697 Device Dehyrdation](https://github.com/matrix-org/matrix-spec-proposals/pull/2697) client-server API endpoints. ([\#14054](https://github.com/matrix-org/synapse/issues/14054)) - Experimental support for [MSC3874](https://github.com/matrix-org/matrix-spec-proposals/pull/3874): Filtering threads from the `/messages` endpoint. ([\#14148](https://github.com/matrix-org/synapse/issues/14148)) - Improve the validation of the following PUT endpoints: [`/directory/room/{roomAlias}`](https://spec.matrix.org/v1.4/client-server-api/#put_matrixclientv3directoryroomroomalias), [`/directory/list/room/{roomId}`](https://spec.matrix.org/v1.4/client-server-api/#put_matrixclientv3directorylistroomroomid) and [`/directory/list/appservice/{networkId}/{roomId}`](https://spec.matrix.org/v1.4/application-service-api/#put_matrixclientv3directorylistappservicenetworkidroomid). ([\#14179](https://github.com/matrix-org/synapse/issues/14179)) - Build and publish binary wheels for `aarch64` platforms. ([\#14212](https://github.com/matrix-org/synapse/issues/14212)) Bugfixes -------- - Prevent device names from appearing in device list updates in some situations when `allow_device_name_lookup_over_federation` is `false`. (This is not comprehensive: see [\#13114](https://github.com/matrix-org/synapse/issues/13114).) ([\#10015](https://github.com/matrix-org/synapse/issues/10015)) - Fix a long-standing bug where redactions were not being sent over federation if we did not have the original event. ([\#13813](https://github.com/matrix-org/synapse/issues/13813)) - Fix a long-standing bug where edits of non-`m.room.message` events would not be correctly bundled or have their new content applied. ([\#14034](https://github.com/matrix-org/synapse/issues/14034)) - Fix a bug introduced in Synapse 1.53.0 when querying `/publicRooms` with both a `room_type` filter and a `third_party_instance_id`. ([\#14053](https://github.com/matrix-org/synapse/issues/14053)) - Fix a bug introduced in Synapse 1.35.0 where errors parsing a `/send_join` or `/state` response would produce excessive, low-quality Sentry events. ([\#14065](https://github.com/matrix-org/synapse/issues/14065)) - Fix a long-standing bug where Synapse would error on the optional 'invite_room_state' field not being provided to [`PUT /_matrix/federation/v2/invite/{roomId}/{eventId}`](https://spec.matrix.org/v1.4/server-server-api/#put_matrixfederationv2inviteroomideventid). ([\#14083](https://github.com/matrix-org/synapse/issues/14083)) - Fix a bug where invalid oEmbed fields would cause the entire response to be discarded. Introduced in Synapse 1.18.0. ([\#14089](https://github.com/matrix-org/synapse/issues/14089)) - Fix a bug introduced in Synapse 1.37.0 in which an incorrect key name was used for sending and receiving room metadata when knocking on a room. ([\#14102](https://github.com/matrix-org/synapse/issues/14102)) - Fix a bug introduced in v1.69.0rc1 where the joined hosts for a given event were not being properly cached. ([\#14125](https://github.com/matrix-org/synapse/issues/14125)) - Fix a bug introduced in Synapse 1.30.0 where purging and rejoining a room without restarting in-between would result in a broken room. ([\#14161](https://github.com/matrix-org/synapse/issues/14161), [\#14164](https://github.com/matrix-org/synapse/issues/14164)) - Fix [MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030) `/timestamp_to_event` endpoint returning potentially inaccurate closest events with `outliers` present. ([\#14215](https://github.com/matrix-org/synapse/issues/14215)) Updates to the Docker image --------------------------- - Update the version of frozendict in Docker images and Debian packages from 2.3.3 to 2.3.4, which may fix memory leak problems. ([\#13955](https://github.com/matrix-org/synapse/issues/13955)) - Use the `minimal` Rust profile when building Synapse. ([\#14141](https://github.com/matrix-org/synapse/issues/14141)) - Prevent a class of database sharding errors when using `Dockerfile-workers` to spawn multiple instances of the same worker. Contributed by Jason Little. ([\#14165](https://github.com/matrix-org/synapse/issues/14165)) - Set `LD_PRELOAD` to use jemalloc memory allocator in Dockerfile-workers. ([\#14182](https://github.com/matrix-org/synapse/issues/14182)) - Fix pre-startup logging being lost when using the `Dockerfile-workers` image. ([\#14195](https://github.com/matrix-org/synapse/issues/14195)) Improved Documentation ---------------------- - Add sample worker files for `pusher` and `federation_sender`. ([\#14077](https://github.com/matrix-org/synapse/issues/14077)) - Improve the listener example on the metrics documentation. ([\#14078](https://github.com/matrix-org/synapse/issues/14078)) - Expand Google OpenID Connect example config to map email attribute. Contributed by @ptman. ([\#14081](https://github.com/matrix-org/synapse/issues/14081)) - The changelog entry ending in a full stop or exclamation mark is not optional. ([\#14087](https://github.com/matrix-org/synapse/issues/14087)) - Fix links to jemalloc documentation, which were broken in [#13491](https://github.com/matrix-org/synapse/pull/14124). ([\#14093](https://github.com/matrix-org/synapse/issues/14093)) - Remove not needed `replication` listener in docker compose example. ([\#14107](https://github.com/matrix-org/synapse/issues/14107)) - Fix name of `alias_creation_rules` option in the config manual documentation. ([\#14124](https://github.com/matrix-org/synapse/issues/14124)) - Clarify comment on event contexts. ([\#14145](https://github.com/matrix-org/synapse/issues/14145)) - Fix dead link to the [Admin Registration API](https://matrix-org.github.io/synapse/latest/admin_api/register_api.html). ([\#14189](https://github.com/matrix-org/synapse/issues/14189)) Deprecations and Removals ------------------------- - Remove the experimental implementation of [MSC3772](https://github.com/matrix-org/matrix-spec-proposals/pull/3772). ([\#14094](https://github.com/matrix-org/synapse/issues/14094)) - Remove the unstable identifier for [MSC3715](https://github.com/matrix-org/matrix-doc/pull/3715). ([\#14106](https://github.com/matrix-org/synapse/issues/14106), [\#14146](https://github.com/matrix-org/synapse/issues/14146)) Internal Changes ---------------- - Optimise queries used to get a users rooms during sync. Contributed by Nick @ Beeper (@fizzadar). ([\#13991](https://github.com/matrix-org/synapse/issues/13991)) - Update authlib from 0.15.5 to 1.1.0. ([\#14006](https://github.com/matrix-org/synapse/issues/14006)) - Make `parse_server_name` consistent in handling invalid server names. ([\#14007](https://github.com/matrix-org/synapse/issues/14007)) - Don't repeatedly wake up the same users for batched events. ([\#14033](https://github.com/matrix-org/synapse/issues/14033)) - Complement test image: capture logs from nginx. ([\#14063](https://github.com/matrix-org/synapse/issues/14063)) - Don't create noisy Sentry events when a requester drops connection to the metrics server mid-request. ([\#14072](https://github.com/matrix-org/synapse/issues/14072)) - Run the integration test suites with the asyncio reactor enabled in CI. ([\#14092](https://github.com/matrix-org/synapse/issues/14092)) - Add debug logs to figure out why an event was filtered out of the client response. ([\#14095](https://github.com/matrix-org/synapse/issues/14095)) - Indicate what endpoint came back with a JSON response we were unable to parse. ([\#14097](https://github.com/matrix-org/synapse/issues/14097)) - Break up calls to fetch rooms for many users. Contributed by Nick @ Beeper (@fizzadar). ([\#14109](https://github.com/matrix-org/synapse/issues/14109)) - Faster joins: prioritise the server we joined by when restarting a partial join resync. ([\#14126](https://github.com/matrix-org/synapse/issues/14126)) - Cache Rust build cache when building docker images. ([\#14130](https://github.com/matrix-org/synapse/issues/14130)) - Enable dependabot for Rust dependencies. ([\#14132](https://github.com/matrix-org/synapse/issues/14132)) - Bump typing-extensions from 4.1.1 to 4.4.0. ([\#14134](https://github.com/matrix-org/synapse/issues/14134)) - Use the `minimal` Rust profile when building Synapse. ([\#14141](https://github.com/matrix-org/synapse/issues/14141)) - Remove unused configuration code. ([\#14142](https://github.com/matrix-org/synapse/issues/14142)) - Prepare for the [`gotestfmt` repository move](https://github.com/GoTestTools/gotestfmt/discussions/46). ([\#14144](https://github.com/matrix-org/synapse/issues/14144)) - Invalidate rooms for user caches on replicated event, fix sync cache race in synapse workers. Contributed by Nick @ Beeper (@fizzadar). ([\#14155](https://github.com/matrix-org/synapse/issues/14155)) - Enable url previews when testing with complement. ([\#14198](https://github.com/matrix-org/synapse/issues/14198)) - When authenticating batched events, check for auth events in batch as well as DB. ([\#14214](https://github.com/matrix-org/synapse/issues/14214)) - Update CI config to avoid GitHub Actions deprecation warnings. ([\#14216](https://github.com/matrix-org/synapse/issues/14216), [\#14224](https://github.com/matrix-org/synapse/issues/14224)) - Update dependency requirements to allow building with poetry-core 1.3.2. ([\#14217](https://github.com/matrix-org/synapse/issues/14217)) - Rename the `cache_memory` extra to `cache-memory`, for compatibility with poetry-core 1.3.0 and [PEP 685](https://peps.python.org/pep-0685/). From-source installations using this extra will need to install using the new name. ([\#14221](https://github.com/matrix-org/synapse/issues/14221)) - Specify dev-dependencies using lower bounds, to reduce the likelihood of a dependabot merge conflict. The lockfile continues to pin to specific versions. ([\#14227](https://github.com/matrix-org/synapse/issues/14227)) Synapse 1.69.0 (2022-10-17) =========================== Please note that legacy Prometheus metric names are now deprecated and will be removed in Synapse 1.73.0. Server administrators should update their dashboards and alerting rules to avoid using the deprecated metric names. See the [upgrade notes](https://matrix-org.github.io/synapse/v1.69/upgrade.html#upgrading-to-v1690) for more details. No significant changes since 1.69.0rc4. Synapse 1.69.0rc4 (2022-10-14) ============================== Bugfixes -------- - Fix poor performance of the `event_push_backfill_thread_id` background update, which was introduced in Synapse 1.68.0rc1. ([\#14172](https://github.com/matrix-org/synapse/issues/14172), [\#14181](https://github.com/matrix-org/synapse/issues/14181)) Updates to the Docker image --------------------------- - Fix docker build OOMing in CI for arm64 builds. ([\#14173](https://github.com/matrix-org/synapse/issues/14173)) Synapse 1.69.0rc3 (2022-10-12) ============================== Bugfixes -------- - Fix an issue with Docker images causing the Rust dependencies to not be pinned correctly. Introduced in v1.68.0 ([\#14129](https://github.com/matrix-org/synapse/issues/14129)) - Fix a bug introduced in Synapse 1.69.0rc1 which would cause registration replication requests to fail if the worker sending the request is not running Synapse 1.69. ([\#14135](https://github.com/matrix-org/synapse/issues/14135)) - Fix error in background update when rotating existing notifications. Introduced in v1.69.0rc2. ([\#14138](https://github.com/matrix-org/synapse/issues/14138)) Internal Changes ---------------- - Rename the `url_preview` extra to `url-preview`, for compatibility with poetry-core 1.3.0 and [PEP 685](https://peps.python.org/pep-0685/). From-source installations using this extra will need to install using the new name. ([\#14085](https://github.com/matrix-org/synapse/issues/14085)) Synapse 1.69.0rc2 (2022-10-06) ============================== Deprecations and Removals ------------------------- - Deprecate the `generate_short_term_login_token` method in favor of an async `create_login_token` method in the Module API. ([\#13842](https://github.com/matrix-org/synapse/issues/13842)) Internal Changes ---------------- - Ensure Synapse v1.69 works with upcoming database changes in v1.70. ([\#14045](https://github.com/matrix-org/synapse/issues/14045)) - Fix a bug introduced in Synapse v1.68.0 where messages could not be sent in rooms with non-integer `notifications` power level. ([\#14073](https://github.com/matrix-org/synapse/issues/14073)) - Temporarily pin build-system requirements to workaround an incompatibility with poetry-core 1.3.0. This will be reverted before the v1.69.0 release proper, see [\#14079](https://github.com/matrix-org/synapse/issues/14079). ([\#14080](https://github.com/matrix-org/synapse/issues/14080)) Synapse 1.69.0rc1 (2022-10-04) ============================== Features -------- - Allow application services to set the `origin_server_ts` of a state event by providing the query parameter `ts` in [`PUT /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}`](https://spec.matrix.org/v1.4/client-server-api/#put_matrixclientv3roomsroomidstateeventtypestatekey), per [MSC3316](https://github.com/matrix-org/matrix-doc/pull/3316). Contributed by @lukasdenk. ([\#11866](https://github.com/matrix-org/synapse/issues/11866)) - Allow server admins to require a manual approval process before new accounts can be used (using [MSC3866](https://github.com/matrix-org/matrix-spec-proposals/pull/3866)). ([\#13556](https://github.com/matrix-org/synapse/issues/13556)) - Exponentially backoff from backfilling the same event over and over. ([\#13635](https://github.com/matrix-org/synapse/issues/13635), [\#13936](https://github.com/matrix-org/synapse/issues/13936)) - Add cache invalidation across workers to module API. ([\#13667](https://github.com/matrix-org/synapse/issues/13667), [\#13947](https://github.com/matrix-org/synapse/issues/13947)) - Experimental implementation of [MSC3882](https://github.com/matrix-org/matrix-spec-proposals/pull/3882) to allow an existing device/session to generate a login token for use on a new device/session. ([\#13722](https://github.com/matrix-org/synapse/issues/13722), [\#13868](https://github.com/matrix-org/synapse/issues/13868)) - Experimental support for thread-specific receipts ([MSC3771](https://github.com/matrix-org/matrix-spec-proposals/pull/3771)). ([\#13782](https://github.com/matrix-org/synapse/issues/13782), [\#13893](https://github.com/matrix-org/synapse/issues/13893), [\#13932](https://github.com/matrix-org/synapse/issues/13932), [\#13937](https://github.com/matrix-org/synapse/issues/13937), [\#13939](https://github.com/matrix-org/synapse/issues/13939)) - Add experimental support for [MSC3881: Remotely toggle push notifications for another client](https://github.com/matrix-org/matrix-spec-proposals/pull/3881). ([\#13799](https://github.com/matrix-org/synapse/issues/13799), [\#13831](https://github.com/matrix-org/synapse/issues/13831), [\#13860](https://github.com/matrix-org/synapse/issues/13860)) - Keep track when an event pulled over federation fails its signature check so we can intelligently back-off in the future. ([\#13815](https://github.com/matrix-org/synapse/issues/13815)) - Improve validation for the unspecced, internal-only `_matrix/client/unstable/add_threepid/msisdn/submit_token` endpoint. ([\#13832](https://github.com/matrix-org/synapse/issues/13832)) - Faster remote room joins: record _when_ we first partial-join to a room. ([\#13892](https://github.com/matrix-org/synapse/issues/13892)) - Support a `dir` parameter on the `/relations` endpoint per [MSC3715](https://github.com/matrix-org/matrix-doc/pull/3715). ([\#13920](https://github.com/matrix-org/synapse/issues/13920)) - Ask mail servers receiving emails from Synapse to not send automatic replies (e.g. out-of-office responses). ([\#13957](https://github.com/matrix-org/synapse/issues/13957)) Bugfixes -------- - Send push notifications for invites received over federation. ([\#13719](https://github.com/matrix-org/synapse/issues/13719), [\#14014](https://github.com/matrix-org/synapse/issues/14014)) - Fix a long-standing bug where typing events would be accepted from remote servers not present in a room. Also fix a bug where incoming typing events would cause other incoming events to get stuck during a fast join. ([\#13830](https://github.com/matrix-org/synapse/issues/13830)) - Fix a bug introduced in Synapse v1.53.0 where the experimental implementation of [MSC3715](https://github.com/matrix-org/matrix-spec-proposals/pull/3715) would give incorrect results when paginating forward. ([\#13840](https://github.com/matrix-org/synapse/issues/13840)) - Fix access token leak to logs from proxy agent. ([\#13855](https://github.com/matrix-org/synapse/issues/13855)) - Fix `have_seen_event` cache not being invalidated after we persist an event which causes inefficiency effects like extra `/state` federation calls. ([\#13863](https://github.com/matrix-org/synapse/issues/13863)) - Faster room joins: Fix a bug introduced in 1.66.0 where an error would be logged when syncing after joining a room. ([\#13872](https://github.com/matrix-org/synapse/issues/13872)) - Fix a bug introduced in 1.66.0 where some required fields in the pushrules sent to clients were not present anymore. Contributed by Nico. ([\#13904](https://github.com/matrix-org/synapse/issues/13904)) - Fix packaging to include `Cargo.lock` in `sdist`. ([\#13909](https://github.com/matrix-org/synapse/issues/13909)) - Fix a long-standing bug where device updates could cause delays sending out to-device messages over federation. ([\#13922](https://github.com/matrix-org/synapse/issues/13922)) - Fix a bug introduced in v1.68.0 where Synapse would require `setuptools_rust` at runtime, even though the package is only required at build time. ([\#13952](https://github.com/matrix-org/synapse/issues/13952)) - Fix a long-standing bug where `POST /_matrix/client/v3/keys/query` requests could result in excessively large SQL queries. ([\#13956](https://github.com/matrix-org/synapse/issues/13956)) - Fix a performance regression in the `get_users_in_room` database query. Introduced in v1.67.0. ([\#13972](https://github.com/matrix-org/synapse/issues/13972)) - Fix a bug introduced in v1.68.0 bug where Rust extension wasn't built in `release` mode when using `poetry install`. ([\#14009](https://github.com/matrix-org/synapse/issues/14009)) - Do not return an unspecified `original_event` field when using the stable `/relations` endpoint. Introduced in Synapse v1.57.0. ([\#14025](https://github.com/matrix-org/synapse/issues/14025)) - Correctly handle a race with device lists when a remote user leaves during a partial join. ([\#13885](https://github.com/matrix-org/synapse/issues/13885)) - Correctly handle sending local device list updates to remote servers during a partial join. ([\#13934](https://github.com/matrix-org/synapse/issues/13934)) Improved Documentation ---------------------- - Add `worker_main_http_uri` for the worker generator bash script. ([\#13772](https://github.com/matrix-org/synapse/issues/13772)) - Update URL for the NixOS module for Synapse. ([\#13818](https://github.com/matrix-org/synapse/issues/13818)) - Fix a mistake in sso_mapping_providers.md: `map_user_attributes` is expected to return `display_name`, not `displayname`. ([\#13836](https://github.com/matrix-org/synapse/issues/13836)) - Fix a cross-link from the registration admin API to the `registration_shared_secret` configuration documentation. ([\#13870](https://github.com/matrix-org/synapse/issues/13870)) - Update the man page for the `hash_password` script to correct the default number of bcrypt rounds performed. ([\#13911](https://github.com/matrix-org/synapse/issues/13911), [\#13930](https://github.com/matrix-org/synapse/issues/13930)) - Emphasize the right reasons when to use `(room_id, event_id)` in a database schema. ([\#13915](https://github.com/matrix-org/synapse/issues/13915)) - Add instruction to contributing guide for running unit tests in parallel. Contributed by @ashfame. ([\#13928](https://github.com/matrix-org/synapse/issues/13928)) - Clarify that the `auto_join_rooms` config option can also be used with Space aliases. ([\#13931](https://github.com/matrix-org/synapse/issues/13931)) - Add some cross references to worker documentation. ([\#13974](https://github.com/matrix-org/synapse/issues/13974)) - Linkify urls in config documentation. ([\#14003](https://github.com/matrix-org/synapse/issues/14003)) Deprecations and Removals ------------------------- - Remove the `complete_sso_login` method from the Module API which was deprecated in Synapse 1.13.0. ([\#13843](https://github.com/matrix-org/synapse/issues/13843)) - Announce that legacy metric names are deprecated, will be turned off by default in Synapse v1.71.0 and removed altogether in Synapse v1.73.0. See the upgrade notes for more information. ([\#14024](https://github.com/matrix-org/synapse/issues/14024)) Internal Changes ---------------- - Speed up creation of DM rooms. ([\#13487](https://github.com/matrix-org/synapse/issues/13487), [\#13800](https://github.com/matrix-org/synapse/issues/13800)) - Port push rules to using Rust. ([\#13768](https://github.com/matrix-org/synapse/issues/13768), [\#13838](https://github.com/matrix-org/synapse/issues/13838), [\#13889](https://github.com/matrix-org/synapse/issues/13889)) - Optimise get rooms for user calls. Contributed by Nick @ Beeper (@fizzadar). ([\#13787](https://github.com/matrix-org/synapse/issues/13787)) - Update the script which makes full schema dumps. ([\#13792](https://github.com/matrix-org/synapse/issues/13792)) - Use shared methods for cache invalidation when persisting events, remove duplicate codepaths. Contributed by Nick @ Beeper (@fizzadar). ([\#13796](https://github.com/matrix-org/synapse/issues/13796)) - Improve the `synapse.api.auth.Auth` mock used in unit tests. ([\#13809](https://github.com/matrix-org/synapse/issues/13809)) - Faster Remote Room Joins: tell remote homeservers that we are unable to authorise them if they query a room which has partial state on our server. ([\#13823](https://github.com/matrix-org/synapse/issues/13823)) - Carry IdP Session IDs through user-mapping sessions. ([\#13839](https://github.com/matrix-org/synapse/issues/13839)) - Fix the release script not publishing binary wheels. ([\#13850](https://github.com/matrix-org/synapse/issues/13850)) - Raise issue if complement fails with latest deps. ([\#13859](https://github.com/matrix-org/synapse/issues/13859)) - Correct the comments in the complement dockerfile. ([\#13867](https://github.com/matrix-org/synapse/issues/13867)) - Create a new snapshot of the database schema. ([\#13873](https://github.com/matrix-org/synapse/issues/13873)) - Faster room joins: Send device list updates to most servers in rooms with partial state. ([\#13874](https://github.com/matrix-org/synapse/issues/13874), [\#14013](https://github.com/matrix-org/synapse/issues/14013)) - Add comments to the Prometheus recording rules to make it clear which set of rules you need for Grafana or Prometheus Console. ([\#13876](https://github.com/matrix-org/synapse/issues/13876)) - Only pull relevant backfill points from the database based on the current depth and limit (instead of all) every time we want to `/backfill`. ([\#13879](https://github.com/matrix-org/synapse/issues/13879)) - Faster room joins: Avoid waiting for full state when processing `/keys/changes` requests. ([\#13888](https://github.com/matrix-org/synapse/issues/13888)) - Improve backfill robustness by trying more servers when we get a `4xx` error back. ([\#13890](https://github.com/matrix-org/synapse/issues/13890)) - Fix mypy errors with canonicaljson 1.6.3. ([\#13905](https://github.com/matrix-org/synapse/issues/13905)) - Faster remote room joins: correctly handle remote device list updates during a partial join. ([\#13913](https://github.com/matrix-org/synapse/issues/13913)) - Complement image: propagate SIGTERM to all workers. ([\#13914](https://github.com/matrix-org/synapse/issues/13914)) - Update an innaccurate comment in Synapse's upsert database helper. ([\#13924](https://github.com/matrix-org/synapse/issues/13924)) - Update mypy (0.950 -> 0.981) and mypy-zope (0.3.7 -> 0.3.11). ([\#13925](https://github.com/matrix-org/synapse/issues/13925), [\#13993](https://github.com/matrix-org/synapse/issues/13993)) - Use dedicated `get_local_users_in_room(room_id)` function to find local users when calculating users to copy over during a room upgrade. ([\#13960](https://github.com/matrix-org/synapse/issues/13960)) - Refactor language in user directory `_track_user_joined_room` code to make it more clear that we use both local and remote users. ([\#13966](https://github.com/matrix-org/synapse/issues/13966)) - Revert catch-all exceptions being recorded as event pull attempt failures (only handle what we know about). ([\#13969](https://github.com/matrix-org/synapse/issues/13969)) - Speed up calculating push actions in large rooms. ([\#13973](https://github.com/matrix-org/synapse/issues/13973), [\#13992](https://github.com/matrix-org/synapse/issues/13992)) - Enable update notifications from Github's dependabot. ([\#13976](https://github.com/matrix-org/synapse/issues/13976)) - Prototype a workflow to automatically add changelogs to dependabot PRs. ([\#13998](https://github.com/matrix-org/synapse/issues/13998), [\#14011](https://github.com/matrix-org/synapse/issues/14011), [\#14017](https://github.com/matrix-org/synapse/issues/14017), [\#14021](https://github.com/matrix-org/synapse/issues/14021), [\#14027](https://github.com/matrix-org/synapse/issues/14027)) - Fix type annotations to be compatible with new annotations in development versions of twisted. ([\#14012](https://github.com/matrix-org/synapse/issues/14012)) - Clear out stale entries in `event_push_actions_staging` table. ([\#14020](https://github.com/matrix-org/synapse/issues/14020)) - Bump versions of GitHub actions. ([\#13978](https://github.com/matrix-org/synapse/issues/13978), [\#13979](https://github.com/matrix-org/synapse/issues/13979), [\#13980](https://github.com/matrix-org/synapse/issues/13980), [\#13982](https://github.com/matrix-org/synapse/issues/13982), [\#14015](https://github.com/matrix-org/synapse/issues/14015), [\#14019](https://github.com/matrix-org/synapse/issues/14019), [\#14022](https://github.com/matrix-org/synapse/issues/14022), [\#14023](https://github.com/matrix-org/synapse/issues/14023)) Synapse 1.68.0 (2022-09-27) =========================== Please note that Synapse will now refuse to start if configured to use a version of SQLite older than 3.27. In addition, please note that installing Synapse from a source checkout now requires a recent Rust compiler. Those using packages will not be affected. On most platforms, installing with `pip install matrix-synapse` will not be affected. See the [upgrade notes](https://matrix-org.github.io/synapse/v1.68/upgrade.html#upgrading-to-v1680). Bugfixes -------- - Fix packaging to include `Cargo.lock` in `sdist`. ([\#13909](https://github.com/matrix-org/synapse/issues/13909)) Synapse 1.68.0rc2 (2022-09-23) ============================== Bugfixes -------- - Fix building from packaged sdist. Broken in v1.68.0rc1. ([\#13866](https://github.com/matrix-org/synapse/issues/13866)) Internal Changes ---------------- - Fix the release script not publishing binary wheels. ([\#13850](https://github.com/matrix-org/synapse/issues/13850)) - Lower minimum supported rustc version to 1.58.1. ([\#13857](https://github.com/matrix-org/synapse/issues/13857)) - Lock Rust dependencies' versions. ([\#13858](https://github.com/matrix-org/synapse/issues/13858)) Synapse 1.68.0rc1 (2022-09-20) ============================== Features -------- - Keep track of when we fail to process a pulled event over federation so we can intelligently back off in the future. ([\#13589](https://github.com/matrix-org/synapse/issues/13589), [\#13814](https://github.com/matrix-org/synapse/issues/13814)) - Add an [admin API endpoint to fetch messages within a particular window of time](https://matrix-org.github.io/synapse/v1.68/admin_api/rooms.html#room-messages-api). ([\#13672](https://github.com/matrix-org/synapse/issues/13672)) - Add an [admin API endpoint to find a user based on their external ID in an auth provider](https://matrix-org.github.io/synapse/v1.68/admin_api/user_admin_api.html#find-a-user-based-on-their-id-in-an-auth-provider). ([\#13810](https://github.com/matrix-org/synapse/issues/13810)) - Cancel the processing of key query requests when they time out. ([\#13680](https://github.com/matrix-org/synapse/issues/13680)) - Improve validation of request bodies for the following client-server API endpoints: [`/account/3pid/msisdn/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidmsisdnrequesttoken), [`/org.matrix.msc3720/account_status`](https://github.com/matrix-org/matrix-spec-proposals/blob/babolivier/user_status/proposals/3720-account-status.md#post-_matrixclientv1account_status), [`/account/3pid/add`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidadd), [`/account/3pid/bind`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidbind), [`/account/3pid/delete`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3piddelete) and [`/account/3pid/unbind`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidunbind). ([\#13687](https://github.com/matrix-org/synapse/issues/13687), [\#13736](https://github.com/matrix-org/synapse/issues/13736)) - Document the timestamp when a user accepts the consent, if [consent tracking](https://matrix-org.github.io/synapse/latest/consent_tracking.html) is used. ([\#13741](https://github.com/matrix-org/synapse/issues/13741)) - Add a `listeners[x].request_id_header` configuration option to specify which request header to extract and use as the request ID in order to correlate requests from a reverse proxy. ([\#13801](https://github.com/matrix-org/synapse/issues/13801)) Bugfixes -------- - Fix a bug introduced in Synapse 1.41.0 where the `/hierarchy` API returned non-standard information (a `room_id` field under each entry in `children_state`). ([\#13506](https://github.com/matrix-org/synapse/issues/13506)) - Fix a long-standing bug where previously rejected events could end up in room state because they pass auth checks given the current state of the room. ([\#13723](https://github.com/matrix-org/synapse/issues/13723)) - Fix a long-standing bug where Synapse fails to start if a signing key file contains an empty line. ([\#13738](https://github.com/matrix-org/synapse/issues/13738)) - Fix a long-standing bug where Synapse would fail to handle malformed user IDs or room aliases gracefully in certain cases. ([\#13746](https://github.com/matrix-org/synapse/issues/13746)) - Fix a long-standing bug where device lists would remain cached when remote users left and rejoined the last room shared with the local homeserver. ([\#13749](https://github.com/matrix-org/synapse/issues/13749), [\#13826](https://github.com/matrix-org/synapse/issues/13826)) - Fix a long-standing bug that could cause stale caches in some rare cases on the first startup of Synapse with replication. ([\#13766](https://github.com/matrix-org/synapse/issues/13766)) - Fix a long-standing spec compliance bug where Synapse would accept a trailing slash on the end of `/get_missing_events` federation requests. ([\#13789](https://github.com/matrix-org/synapse/issues/13789)) - Delete associated data from `event_failed_pull_attempts`, `insertion_events`, `insertion_event_extremities`, `insertion_event_extremities`, `insertion_event_extremities` when purging the room. ([\#13825](https://github.com/matrix-org/synapse/issues/13825)) Improved Documentation ---------------------- - Note that `libpq` is required on ARM-based Macs. ([\#13480](https://github.com/matrix-org/synapse/issues/13480)) - Fix a mistake in the config manual introduced in Synapse 1.22.0: the `event_cache_size` _is_ scaled by `caches.global_factor`. ([\#13726](https://github.com/matrix-org/synapse/issues/13726)) - Fix a typo in the documentation for the login ratelimiting configuration. ([\#13727](https://github.com/matrix-org/synapse/issues/13727)) - Define Synapse's compatibility policy for SQLite versions. ([\#13728](https://github.com/matrix-org/synapse/issues/13728)) - Add docs for the common fix of deleting the `matrix_synapse.egg-info/` directory for fixing Python dependency problems. ([\#13785](https://github.com/matrix-org/synapse/issues/13785)) - Update request log format documentation to mention the format used when the authenticated user is controlling another user. ([\#13794](https://github.com/matrix-org/synapse/issues/13794)) Deprecations and Removals ------------------------- - Synapse will now refuse to start if configured to use SQLite < 3.27. ([\#13760](https://github.com/matrix-org/synapse/issues/13760)) - Don't include redundant `prev_state` in new events. Contributed by Denis Kariakin (@dakariakin). ([\#13791](https://github.com/matrix-org/synapse/issues/13791)) Internal Changes ---------------- - Add a stub Rust crate. ([\#12595](https://github.com/matrix-org/synapse/issues/12595), [\#13734](https://github.com/matrix-org/synapse/issues/13734), [\#13735](https://github.com/matrix-org/synapse/issues/13735), [\#13743](https://github.com/matrix-org/synapse/issues/13743), [\#13763](https://github.com/matrix-org/synapse/issues/13763), [\#13769](https://github.com/matrix-org/synapse/issues/13769), [\#13778](https://github.com/matrix-org/synapse/issues/13778)) - Bump the minimum dependency of `matrix_common` to 1.3.0 to make use of the `MXCUri` class. Use `MXCUri` to simplify media retention test code. ([\#13162](https://github.com/matrix-org/synapse/issues/13162)) - Add and populate the `event_stream_ordering` column on the `receipts` table for future optimisation of push action processing. Contributed by Nick @ Beeper (@fizzadar). ([\#13703](https://github.com/matrix-org/synapse/issues/13703)) - Rename the `EventFormatVersions` enum values so that they line up with room version numbers. ([\#13706](https://github.com/matrix-org/synapse/issues/13706)) - Update trial old deps CI to use Poetry 1.2.0. ([\#13707](https://github.com/matrix-org/synapse/issues/13707), [\#13725](https://github.com/matrix-org/synapse/issues/13725)) - Add experimental configuration option to allow disabling legacy Prometheus metric names. ([\#13714](https://github.com/matrix-org/synapse/issues/13714), [\#13717](https://github.com/matrix-org/synapse/issues/13717), [\#13718](https://github.com/matrix-org/synapse/issues/13718)) - Fix typechecking with latest types-jsonschema. ([\#13724](https://github.com/matrix-org/synapse/issues/13724)) - Strip number suffix from instance name to consolidate services that traces are spread over. ([\#13729](https://github.com/matrix-org/synapse/issues/13729)) - Instrument `get_metadata_for_events` for understandable traces in Jaeger. ([\#13730](https://github.com/matrix-org/synapse/issues/13730)) - Remove old queries to join room memberships to current state events. Contributed by Nick @ Beeper (@fizzadar). ([\#13745](https://github.com/matrix-org/synapse/issues/13745)) - Avoid raising an error due to malformed user IDs in `get_current_hosts_in_room`. Malformed user IDs cannot currently join a room, so this error would not be hit. ([\#13748](https://github.com/matrix-org/synapse/issues/13748)) - Update the docstrings for `get_users_in_room` and `get_current_hosts_in_room` to explain the impact of partial state. ([\#13750](https://github.com/matrix-org/synapse/issues/13750)) - Use an additional database query when persisting receipts. ([\#13752](https://github.com/matrix-org/synapse/issues/13752)) - Preparatory work for storing thread IDs for notifications and receipts. ([\#13753](https://github.com/matrix-org/synapse/issues/13753)) - Re-type hint some collections as read-only. ([\#13754](https://github.com/matrix-org/synapse/issues/13754)) - Remove unused Prometheus recording rules from `synapse-v2.rules` and add comments describing where the rest are used. ([\#13756](https://github.com/matrix-org/synapse/issues/13756)) - Add a check for editable installs if the Rust library needs rebuilding. ([\#13759](https://github.com/matrix-org/synapse/issues/13759)) - Tag traces with the instance name to be able to easily jump into the right logs and filter traces by instance. ([\#13761](https://github.com/matrix-org/synapse/issues/13761)) - Concurrently fetch room push actions when calculating badge counts. Contributed by Nick @ Beeper (@fizzadar). ([\#13765](https://github.com/matrix-org/synapse/issues/13765)) - Update the script which makes full schema dumps. ([\#13770](https://github.com/matrix-org/synapse/issues/13770)) - Deduplicate `is_server_notices_room`. ([\#13780](https://github.com/matrix-org/synapse/issues/13780)) - Simplify the dependency DAG in the tests workflow. ([\#13784](https://github.com/matrix-org/synapse/issues/13784)) - Remove an old, incorrect migration file. ([\#13788](https://github.com/matrix-org/synapse/issues/13788)) - Remove unused method in `synapse.api.auth.Auth`. ([\#13795](https://github.com/matrix-org/synapse/issues/13795)) - Fix a memory leak when running the unit tests. ([\#13798](https://github.com/matrix-org/synapse/issues/13798)) - Use partial indices on SQLite. ([\#13802](https://github.com/matrix-org/synapse/issues/13802)) - Check that portdb generates the same postgres schema as that in the source tree. ([\#13808](https://github.com/matrix-org/synapse/issues/13808)) - Fix Docker build when Rust .so has been built locally first. ([\#13811](https://github.com/matrix-org/synapse/issues/13811)) - Complement: Initialise the Postgres database directly inside the target image instead of the base Postgres image to fix building using Buildah. ([\#13819](https://github.com/matrix-org/synapse/issues/13819)) - Support providing an index predicate clause when doing upserts. ([\#13822](https://github.com/matrix-org/synapse/issues/13822)) - Minor speedups to linting in CI. ([\#13827](https://github.com/matrix-org/synapse/issues/13827)) Synapse 1.67.0 (2022-09-13) =========================== This release removes using the deprecated direct TCP replication configuration for workers. Server admins should use Redis instead. See the [upgrade notes](https://matrix-org.github.io/synapse/v1.67/upgrade.html#upgrading-to-v1670). The minimum version of `poetry` supported for managing source checkouts is now 1.2.0. **Notice:** from the next major release (1.68.0) installing Synapse from a source checkout will require a recent Rust compiler. Those using packages or `pip install matrix-synapse` will not be affected. See the [upgrade notes](https://matrix-org.github.io/synapse/v1.67/upgrade.html#upgrading-to-v1670). **Notice:** from the next major release (1.68.0), running Synapse with a SQLite database will require SQLite version 3.27.0 or higher. (The [current minimum version is SQLite 3.22.0](https://github.com/matrix-org/synapse/blob/release-v1.67/synapse/storage/engines/sqlite.py#L69-L78).) See [#12983](https://github.com/matrix-org/synapse/issues/12983) and the [upgrade notes](https://matrix-org.github.io/synapse/v1.67/upgrade.html#upgrading-to-v1670) for more details. No significant changes since 1.67.0rc1. Synapse 1.67.0rc1 (2022-09-06) ============================== Features -------- - Support setting the registration shared secret in a file, via a new `registration_shared_secret_path` configuration option. ([\#13614](https://github.com/matrix-org/synapse/issues/13614)) - Change the default startup behaviour so that any missing "additional" configuration files (signing key, etc) are generated automatically. ([\#13615](https://github.com/matrix-org/synapse/issues/13615)) - Improve performance of sending messages in rooms with thousands of local users. ([\#13634](https://github.com/matrix-org/synapse/issues/13634)) Bugfixes -------- - Fix a bug introduced in Synapse 1.13 where the [List Rooms admin API](https://matrix-org.github.io/synapse/develop/admin_api/rooms.html#list-room-api) would return integers instead of booleans for the `federatable` and `public` fields when using a Sqlite database. ([\#13509](https://github.com/matrix-org/synapse/issues/13509)) - Fix bug that user cannot `/forget` rooms after the last member has left the room. ([\#13546](https://github.com/matrix-org/synapse/issues/13546)) - Faster Room Joins: fix `/make_knock` blocking indefinitely when the room in question is a partial-stated room. ([\#13583](https://github.com/matrix-org/synapse/issues/13583)) - Fix loading the current stream position behind the actual position. ([\#13585](https://github.com/matrix-org/synapse/issues/13585)) - Fix a longstanding bug in `register_new_matrix_user` which meant it was always necessary to explicitly give a server URL. ([\#13616](https://github.com/matrix-org/synapse/issues/13616)) - Fix the running of [MSC1763](https://github.com/matrix-org/matrix-spec-proposals/pull/1763) retention purge_jobs in deployments with background jobs running on a worker by forcing them back onto the main worker. Contributed by Brad @ Beeper. ([\#13632](https://github.com/matrix-org/synapse/issues/13632)) - Fix a long-standing bug that downloaded media for URL previews was not deleted while database background updates were running. ([\#13657](https://github.com/matrix-org/synapse/issues/13657)) - Fix [MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030) `/timestamp_to_event` endpoint to return the correct next event when the events have the same timestamp. ([\#13658](https://github.com/matrix-org/synapse/issues/13658)) - Fix bug where we wedge media plugins if clients disconnect early. Introduced in v1.22.0. ([\#13660](https://github.com/matrix-org/synapse/issues/13660)) - Fix a long-standing bug which meant that keys for unwhitelisted servers were not returned by `/_matrix/key/v2/query`. ([\#13683](https://github.com/matrix-org/synapse/issues/13683)) - Fix a bug introduced in Synapse 1.20.0 that would cause the unstable unread counts from [MSC2654](https://github.com/matrix-org/matrix-spec-proposals/pull/2654) to be calculated even if the feature is disabled. ([\#13694](https://github.com/matrix-org/synapse/issues/13694)) Updates to the Docker image --------------------------- - Update docker image to use a stable version of poetry. ([\#13688](https://github.com/matrix-org/synapse/issues/13688)) Improved Documentation ---------------------- - Improve the description of the ["chain cover index"](https://matrix-org.github.io/synapse/latest/auth_chain_difference_algorithm.html) used internally by Synapse. ([\#13602](https://github.com/matrix-org/synapse/issues/13602)) - Document how ["monthly active users"](https://matrix-org.github.io/synapse/latest/usage/administration/monthly_active_users.html) is calculated and used. ([\#13617](https://github.com/matrix-org/synapse/issues/13617)) - Improve documentation around user registration. ([\#13640](https://github.com/matrix-org/synapse/issues/13640)) - Remove documentation of legacy `frontend_proxy` worker app. ([\#13645](https://github.com/matrix-org/synapse/issues/13645)) - Clarify documentation that HTTP replication traffic can be protected with a shared secret. ([\#13656](https://github.com/matrix-org/synapse/issues/13656)) - Remove unintentional colons from [config manual](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html) headers. ([\#13665](https://github.com/matrix-org/synapse/issues/13665)) - Update docs to make enabling metrics more clear. ([\#13678](https://github.com/matrix-org/synapse/issues/13678)) - Clarify `(room_id, event_id)` global uniqueness and how we should scope our database schemas. ([\#13701](https://github.com/matrix-org/synapse/issues/13701)) Deprecations and Removals ------------------------- - Drop support for calling `/_matrix/client/v3/rooms/{roomId}/invite` without an `id_access_token`, which was not permitted by the spec. Contributed by @Vetchu. ([\#13241](https://github.com/matrix-org/synapse/issues/13241)) - Remove redundant `_get_joined_users_from_context` cache. Contributed by Nick @ Beeper (@fizzadar). ([\#13569](https://github.com/matrix-org/synapse/issues/13569)) - Remove the ability to use direct TCP replication with workers. Direct TCP replication was deprecated in Synapse 1.18.0. Workers now require using Redis. ([\#13647](https://github.com/matrix-org/synapse/issues/13647)) - Remove support for unstable [private read receipts](https://github.com/matrix-org/matrix-spec-proposals/pull/2285). ([\#13653](https://github.com/matrix-org/synapse/issues/13653), [\#13692](https://github.com/matrix-org/synapse/issues/13692)) Internal Changes ---------------- - Extend the release script to wait for GitHub Actions to finish and to be usable as a guide for the whole process. ([\#13483](https://github.com/matrix-org/synapse/issues/13483)) - Add experimental configuration option to allow disabling legacy Prometheus metric names. ([\#13540](https://github.com/matrix-org/synapse/issues/13540)) - Cache user IDs instead of profiles to reduce cache memory usage. Contributed by Nick @ Beeper (@fizzadar). ([\#13573](https://github.com/matrix-org/synapse/issues/13573), [\#13600](https://github.com/matrix-org/synapse/issues/13600)) - Optimize how Synapse calculates domains to fetch from during backfill. ([\#13575](https://github.com/matrix-org/synapse/issues/13575)) - Comment about a better future where we can get the state diff between two events. ([\#13586](https://github.com/matrix-org/synapse/issues/13586)) - Instrument `_check_sigs_and_hash_and_fetch` to trace time spent in child concurrent calls for understandable traces in Jaeger. ([\#13588](https://github.com/matrix-org/synapse/issues/13588)) - Improve performance of `@cachedList`. ([\#13591](https://github.com/matrix-org/synapse/issues/13591)) - Minor speed up of fetching large numbers of push rules. ([\#13592](https://github.com/matrix-org/synapse/issues/13592)) - Optimise push action fetching queries. Contributed by Nick @ Beeper (@fizzadar). ([\#13597](https://github.com/matrix-org/synapse/issues/13597)) - Rename `event_map` to `unpersisted_events` when computing the auth differences. ([\#13603](https://github.com/matrix-org/synapse/issues/13603)) - Refactor `get_users_in_room(room_id)` mis-use with dedicated `get_current_hosts_in_room(room_id)` function. ([\#13605](https://github.com/matrix-org/synapse/issues/13605)) - Use dedicated `get_local_users_in_room(room_id)` function to find local users when calculating `join_authorised_via_users_server` of a `/make_join` request. ([\#13606](https://github.com/matrix-org/synapse/issues/13606)) - Refactor `get_users_in_room(room_id)` mis-use to lookup single local user with dedicated `check_local_user_in_room(...)` function. ([\#13608](https://github.com/matrix-org/synapse/issues/13608)) - Drop unused column `application_services_state.last_txn`. ([\#13627](https://github.com/matrix-org/synapse/issues/13627)) - Improve readability of Complement CI logs by printing failure results last. ([\#13639](https://github.com/matrix-org/synapse/issues/13639)) - Generalise the `@cancellable` annotation so it can be used on functions other than just servlet methods. ([\#13662](https://github.com/matrix-org/synapse/issues/13662)) - Introduce a `CommonUsageMetrics` class to share some usage metrics between the Prometheus exporter and the phone home stats. ([\#13671](https://github.com/matrix-org/synapse/issues/13671)) - Add some logging to help track down #13444. ([\#13679](https://github.com/matrix-org/synapse/issues/13679)) - Update poetry lock file for v1.2.0. ([\#13689](https://github.com/matrix-org/synapse/issues/13689)) - Add cache to `is_partial_state_room`. ([\#13693](https://github.com/matrix-org/synapse/issues/13693)) - Update the Grafana dashboard that is included with Synapse in the `contrib` directory. ([\#13697](https://github.com/matrix-org/synapse/issues/13697)) - Only run trial CI on all python versions on non-PRs. ([\#13698](https://github.com/matrix-org/synapse/issues/13698)) - Fix typechecking with latest types-jsonschema. ([\#13712](https://github.com/matrix-org/synapse/issues/13712)) - Reduce number of CI checks we run for PRs. ([\#13713](https://github.com/matrix-org/synapse/issues/13713)) Synapse 1.66.0 (2022-08-31) =========================== No significant changes since 1.66.0rc2. This release removes the ability for homeservers to delegate email ownership verification and password reset confirmation to identity servers. This removal was originally planned for Synapse 1.64, but was later deferred until now. See the [upgrade notes](https://matrix-org.github.io/synapse/v1.66/upgrade.html#upgrading-to-v1660) for more details. Deployments with multiple workers should note that the direct TCP replication configuration was deprecated in Synapse 1.18.0 and will be removed in Synapse v1.67.0. In particular, the TCP `replication` [listener](https://matrix-org.github.io/synapse/v1.66/usage/configuration/config_documentation.html#listeners) type (not to be confused with the `replication` resource on the `http` listener type) and the `worker_replication_port` config option will be removed . To migrate to Redis, add the [`redis` config](https://matrix-org.github.io/synapse/v1.66/workers.html#shared-configuration), then remove the TCP `replication` listener from config of the master and `worker_replication_port` from worker config. Note that a HTTP listener with a `replication` resource is still required. See the [worker documentation](https://matrix-org.github.io/synapse/v1.66/workers.html) for more details. Synapse 1.66.0rc2 (2022-08-30) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.66.0rc1 where the new rate limit metrics were misreported (`synapse_rate_limit_sleep_affected_hosts`, `synapse_rate_limit_reject_affected_hosts`). ([\#13649](https://github.com/matrix-org/synapse/issues/13649)) Synapse 1.66.0rc1 (2022-08-23) ============================== Features -------- - Improve validation of request bodies for the following client-server API endpoints: [`/account/password`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountpassword), [`/account/password/email/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountpasswordemailrequesttoken), [`/account/deactivate`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountdeactivate) and [`/account/3pid/email/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidemailrequesttoken). ([\#13188](https://github.com/matrix-org/synapse/issues/13188), [\#13563](https://github.com/matrix-org/synapse/issues/13563)) - Add forgotten status to [Room Details Admin API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#room-details-api). ([\#13503](https://github.com/matrix-org/synapse/issues/13503)) - Add an experimental implementation for [MSC3852 (Expose user agents on `Device`)](https://github.com/matrix-org/matrix-spec-proposals/pull/3852). ([\#13549](https://github.com/matrix-org/synapse/issues/13549)) - Add `org.matrix.msc2716v4` experimental room version with updated content fields. Part of [MSC2716 (Importing history)](https://github.com/matrix-org/matrix-spec-proposals/pull/2716). ([\#13551](https://github.com/matrix-org/synapse/issues/13551)) - Add support for compression to federation responses. ([\#13537](https://github.com/matrix-org/synapse/issues/13537)) - Improve performance of sending messages in rooms with thousands of local users. ([\#13522](https://github.com/matrix-org/synapse/issues/13522), [\#13547](https://github.com/matrix-org/synapse/issues/13547)) Bugfixes -------- - Faster room joins: make `/joined_members` block whilst the room is partial stated. ([\#13514](https://github.com/matrix-org/synapse/issues/13514)) - Fix a bug introduced in Synapse 1.21.0 where the [`/event_reports` Admin API](https://matrix-org.github.io/synapse/develop/admin_api/event_reports.html) could return a total count which was larger than the number of results you can actually query for. ([\#13525](https://github.com/matrix-org/synapse/issues/13525)) - Fix a bug introduced in Synapse 1.52.0 where sending server notices fails if `max_avatar_size` or `allowed_avatar_mimetypes` is set and not `system_mxid_avatar_url`. ([\#13566](https://github.com/matrix-org/synapse/issues/13566)) - Fix a bug where the `opentracing.force_tracing_for_users` config option would not apply to [`/sendToDevice`](https://spec.matrix.org/v1.3/client-server-api/#put_matrixclientv3sendtodeviceeventtypetxnid) and [`/keys/upload`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3keysupload) requests. ([\#13574](https://github.com/matrix-org/synapse/issues/13574)) Improved Documentation ---------------------- - Add `openssl` example for generating registration HMAC digest. ([\#13472](https://github.com/matrix-org/synapse/issues/13472)) - Tidy up Synapse's README. ([\#13491](https://github.com/matrix-org/synapse/issues/13491)) - Document that event purging related to the `redaction_retention_period` config option is executed only every 5 minutes. ([\#13492](https://github.com/matrix-org/synapse/issues/13492)) - Add a warning to retention documentation regarding the possibility of database corruption. ([\#13497](https://github.com/matrix-org/synapse/issues/13497)) - Document that the `DOCKER_BUILDKIT=1` flag is needed to build the docker image. ([\#13515](https://github.com/matrix-org/synapse/issues/13515)) - Add missing links in `user_consent` section of configuration manual. ([\#13536](https://github.com/matrix-org/synapse/issues/13536)) - Fix the doc and some warnings that were referring to the nonexistent `custom_templates_directory` setting (instead of `custom_template_directory`). ([\#13538](https://github.com/matrix-org/synapse/issues/13538)) Deprecations and Removals ------------------------- - Remove the ability for homeservers to delegate email ownership verification and password reset confirmation to identity servers. See [upgrade notes](https://matrix-org.github.io/synapse/v1.66/upgrade.html#upgrading-to-v1660) for more details. Internal Changes ---------------- ### Faster room joins - Update the rejected state of events during de-partial-stating. ([\#13459](https://github.com/matrix-org/synapse/issues/13459)) - Avoid blocking lazy-loading `/sync`s during partial joins due to remote memberships. Pull remote memberships from auth events instead of the room state. ([\#13477](https://github.com/matrix-org/synapse/issues/13477)) - Refuse to start when faster joins is enabled on a deployment with workers, since worker configurations are not currently supported. ([\#13531](https://github.com/matrix-org/synapse/issues/13531)) ### Metrics and tracing - Allow use of both `@trace` and `@tag_args` stacked on the same function. ([\#13453](https://github.com/matrix-org/synapse/issues/13453)) - Instrument the federation/backfill part of `/messages` for understandable traces in Jaeger. ([\#13489](https://github.com/matrix-org/synapse/issues/13489)) - Instrument `FederationStateIdsServlet` (`/state_ids`) for understandable traces in Jaeger. ([\#13499](https://github.com/matrix-org/synapse/issues/13499), [\#13554](https://github.com/matrix-org/synapse/issues/13554)) - Track HTTP response times over 10 seconds from `/messages` (`synapse_room_message_list_rest_servlet_response_time_seconds`). ([\#13533](https://github.com/matrix-org/synapse/issues/13533)) - Add metrics to track how the rate limiter is affecting requests (sleep/reject). ([\#13534](https://github.com/matrix-org/synapse/issues/13534), [\#13541](https://github.com/matrix-org/synapse/issues/13541)) - Add metrics to time how long it takes us to do backfill processing (`synapse_federation_backfill_processing_before_time_seconds`, `synapse_federation_backfill_processing_after_time_seconds`). ([\#13535](https://github.com/matrix-org/synapse/issues/13535), [\#13584](https://github.com/matrix-org/synapse/issues/13584)) - Add metrics to track rate limiter queue timing (`synapse_rate_limit_queue_wait_time_seconds`). ([\#13544](https://github.com/matrix-org/synapse/issues/13544)) - Update metrics to track `/messages` response time by room size. ([\#13545](https://github.com/matrix-org/synapse/issues/13545)) ### Everything else - Refactor methods in `synapse.api.auth.Auth` to use `Requester` objects everywhere instead of user IDs. ([\#13024](https://github.com/matrix-org/synapse/issues/13024)) - Clean-up tests for notifications. ([\#13471](https://github.com/matrix-org/synapse/issues/13471)) - Add some miscellaneous comments to document sync, especially around `compute_state_delta`. ([\#13474](https://github.com/matrix-org/synapse/issues/13474)) - Use literals in place of `HTTPStatus` constants in tests. ([\#13479](https://github.com/matrix-org/synapse/issues/13479), [\#13488](https://github.com/matrix-org/synapse/issues/13488)) - Add comments about how event push actions are rotated. ([\#13485](https://github.com/matrix-org/synapse/issues/13485)) - Modify HTML template content to better support mobile devices' screen sizes. ([\#13493](https://github.com/matrix-org/synapse/issues/13493)) - Add a linter script which will reject non-strict types in Pydantic models. ([\#13502](https://github.com/matrix-org/synapse/issues/13502)) - Reduce the number of tests using legacy TCP replication. ([\#13543](https://github.com/matrix-org/synapse/issues/13543)) - Allow specifying additional request fields when using the `HomeServerTestCase.login` helper method. ([\#13549](https://github.com/matrix-org/synapse/issues/13549)) - Make `HomeServerTestCase` load any configured homeserver modules automatically. ([\#13558](https://github.com/matrix-org/synapse/issues/13558)) Synapse 1.65.0 (2022-08-16) =========================== No significant changes since 1.65.0rc2. Synapse 1.65.0rc2 (2022-08-11) ============================== Internal Changes ---------------- - Revert 'Remove the unspecced `room_id` field in the `/hierarchy` response. ([\#13365](https://github.com/matrix-org/synapse/issues/13365))' to give more time for clients to update. ([\#13501](https://github.com/matrix-org/synapse/issues/13501)) Synapse 1.65.0rc1 (2022-08-09) ============================== Features -------- - Add support for stable prefixes for [MSC2285 (private read receipts)](https://github.com/matrix-org/matrix-spec-proposals/pull/2285). ([\#13273](https://github.com/matrix-org/synapse/issues/13273)) - Add new unstable error codes `ORG.MATRIX.MSC3848.ALREADY_JOINED`, `ORG.MATRIX.MSC3848.NOT_JOINED`, and `ORG.MATRIX.MSC3848.INSUFFICIENT_POWER` described in [MSC3848](https://github.com/matrix-org/matrix-spec-proposals/pull/3848). ([\#13343](https://github.com/matrix-org/synapse/issues/13343)) - Use stable prefixes for [MSC3827](https://github.com/matrix-org/matrix-spec-proposals/pull/3827). ([\#13370](https://github.com/matrix-org/synapse/issues/13370)) - Add a new module API method to translate a room alias into a room ID. ([\#13428](https://github.com/matrix-org/synapse/issues/13428)) - Add a new module API method to create a room. ([\#13429](https://github.com/matrix-org/synapse/issues/13429)) - Add remote join capability to the module API's `update_room_membership` method (in a backwards compatible manner). ([\#13441](https://github.com/matrix-org/synapse/issues/13441)) Bugfixes -------- - Update the version of the LDAP3 auth provider module included in the `matrixdotorg/synapse` DockerHub images and the Debian packages hosted on packages.matrix.org to 0.2.2. This version fixes a regression in the module. ([\#13470](https://github.com/matrix-org/synapse/issues/13470)) - Fix a bug introduced in Synapse 1.41.0 where the `/hierarchy` API returned non-standard information (a `room_id` field under each entry in `children_state`) (this was reverted in v1.65.0rc2, see changelog notes above). ([\#13365](https://github.com/matrix-org/synapse/issues/13365)) - Fix a bug introduced in Synapse 0.24.0 that would respond with the wrong error status code to `/joined_members` requests when the requester is not a current member of the room. Contributed by @andrewdoh. ([\#13374](https://github.com/matrix-org/synapse/issues/13374)) - Fix bug in handling of typing events for appservices. Contributed by Nick @ Beeper (@fizzadar). ([\#13392](https://github.com/matrix-org/synapse/issues/13392)) - Fix a bug introduced in Synapse 1.57.0 where rooms listed in `exclude_rooms_from_sync` in the configuration file would not be properly excluded from incremental syncs. ([\#13408](https://github.com/matrix-org/synapse/issues/13408)) - Fix a bug in the experimental faster-room-joins support which could cause it to get stuck in an infinite loop. ([\#13353](https://github.com/matrix-org/synapse/issues/13353)) - Faster room joins: fix a bug which caused rejected events to become un-rejected during state syncing. ([\#13413](https://github.com/matrix-org/synapse/issues/13413)) - Faster room joins: fix error when running out of servers to sync partial state with, so that Synapse raises the intended error instead. ([\#13432](https://github.com/matrix-org/synapse/issues/13432)) Updates to the Docker image --------------------------- - Make Docker images build on armv7 by installing cryptography dependencies in the 'requirements' stage. Contributed by Jasper Spaans. ([\#13372](https://github.com/matrix-org/synapse/issues/13372)) Improved Documentation ---------------------- - Update the 'registration tokens' page to acknowledge that the relevant MSC was merged into version 1.2 of the Matrix specification. Contributed by @moan0s. ([\#11897](https://github.com/matrix-org/synapse/issues/11897)) - Document which HTTP resources support gzip compression. ([\#13221](https://github.com/matrix-org/synapse/issues/13221)) - Add steps describing how to elevate an existing user to administrator by manipulating the database. ([\#13230](https://github.com/matrix-org/synapse/issues/13230)) - Fix wrong headline for `url_preview_accept_language` in documentation. ([\#13437](https://github.com/matrix-org/synapse/issues/13437)) - Remove redundant 'Contents' section from the Configuration Manual. Contributed by @dklimpel. ([\#13438](https://github.com/matrix-org/synapse/issues/13438)) - Update documentation for config setting `macaroon_secret_key`. ([\#13443](https://github.com/matrix-org/synapse/issues/13443)) - Update outdated information on `sso_mapping_providers` documentation. ([\#13449](https://github.com/matrix-org/synapse/issues/13449)) - Fix example code in module documentation of `password_auth_provider_callbacks`. ([\#13450](https://github.com/matrix-org/synapse/issues/13450)) - Make the configuration for the cache clearer. ([\#13481](https://github.com/matrix-org/synapse/issues/13481)) Internal Changes ---------------- - Extend the release script to automatically push a new SyTest branch, rather than having that be a manual process. ([\#12978](https://github.com/matrix-org/synapse/issues/12978)) - Make minor clarifications to the error messages given when we fail to join a room via any server. ([\#13160](https://github.com/matrix-org/synapse/issues/13160)) - Enable Complement CI tests in the 'latest deps' test run. ([\#13213](https://github.com/matrix-org/synapse/issues/13213)) - Fix long-standing bugged logic which was never hit in `get_pdu` asking every remote destination even after it finds an event. ([\#13346](https://github.com/matrix-org/synapse/issues/13346)) - Faster room joins: avoid blocking when pulling events with partially missing prev events. ([\#13355](https://github.com/matrix-org/synapse/issues/13355)) - Instrument `/messages` for understandable traces in Jaeger. ([\#13368](https://github.com/matrix-org/synapse/issues/13368)) - Remove an unused argument to `get_relations_for_event`. ([\#13383](https://github.com/matrix-org/synapse/issues/13383)) - Add a `merge-back` command to the release script, which automates merging the correct branches after a release. ([\#13393](https://github.com/matrix-org/synapse/issues/13393)) - Adding missing type hints to tests. ([\#13397](https://github.com/matrix-org/synapse/issues/13397)) - Faster Room Joins: don't leave a stuck room partial state flag if the join fails. ([\#13403](https://github.com/matrix-org/synapse/issues/13403)) - Refactor `_resolve_state_at_missing_prevs` to compute an `EventContext` instead. ([\#13404](https://github.com/matrix-org/synapse/issues/13404), [\#13431](https://github.com/matrix-org/synapse/issues/13431)) - Faster Room Joins: prevent Synapse from answering federated join requests for a room which it has not fully joined yet. ([\#13416](https://github.com/matrix-org/synapse/issues/13416)) - Re-enable running Complement tests against Synapse with workers. ([\#13420](https://github.com/matrix-org/synapse/issues/13420)) - Prevent unnecessary lookups to any external `get_event` cache. Contributed by Nick @ Beeper (@fizzadar). ([\#13435](https://github.com/matrix-org/synapse/issues/13435)) - Add some tracing to give more insight into local room joins. ([\#13439](https://github.com/matrix-org/synapse/issues/13439)) - Rename class `RateLimitConfig` to `RatelimitSettings` and `FederationRateLimitConfig` to `FederationRatelimitSettings`. ([\#13442](https://github.com/matrix-org/synapse/issues/13442)) - Add some comments about how event push actions are stored. ([\#13445](https://github.com/matrix-org/synapse/issues/13445), [\#13455](https://github.com/matrix-org/synapse/issues/13455)) - Improve rebuild speed for the "synapse-workers" docker image. ([\#13447](https://github.com/matrix-org/synapse/issues/13447)) - Fix `@tag_args` being off-by-one with the arguments when tagging a span (tracing). ([\#13452](https://github.com/matrix-org/synapse/issues/13452)) - Update type of `EventContext.rejected`. ([\#13460](https://github.com/matrix-org/synapse/issues/13460)) - Use literals in place of `HTTPStatus` constants in tests. ([\#13463](https://github.com/matrix-org/synapse/issues/13463), [\#13469](https://github.com/matrix-org/synapse/issues/13469)) - Correct a misnamed argument in state res v2 internals. ([\#13467](https://github.com/matrix-org/synapse/issues/13467)) Synapse 1.64.0 (2022-08-02) =========================== No significant changes since 1.64.0rc2. Deprecation Warning ------------------- Synapse 1.66.0 will remove the ability to delegate the tasks of verifying email address ownership, and password reset confirmation, to an identity server. If you require your homeserver to verify e-mail addresses or to support password resets via e-mail, please configure your homeserver with SMTP access so that it can send e-mails on its own behalf. [Consult the configuration documentation for more information.](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#email) Synapse 1.64.0rc2 (2022-07-29) ============================== This RC reintroduces support for `account_threepid_delegates.email`, which was removed in 1.64.0rc1. It remains deprecated and will be removed altogether in Synapse 1.66.0. ([\#13406](https://github.com/matrix-org/synapse/issues/13406)) Synapse 1.64.0rc1 (2022-07-26) ============================== This RC removed the ability to delegate the tasks of verifying email address ownership, and password reset confirmation, to an identity server. We have also stopped building `.deb` packages for Ubuntu 21.10 as it is no longer an active version of Ubuntu. Features -------- - Improve error messages when media thumbnails cannot be served. ([\#13038](https://github.com/matrix-org/synapse/issues/13038)) - Allow pagination from remote event after discovering it from [MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030) `/timestamp_to_event`. ([\#13205](https://github.com/matrix-org/synapse/issues/13205)) - Add a `room_type` field in the responses for the list room and room details admin APIs. Contributed by @andrewdoh. ([\#13208](https://github.com/matrix-org/synapse/issues/13208)) - Add support for room version 10. ([\#13220](https://github.com/matrix-org/synapse/issues/13220)) - Add per-room rate limiting for room joins. For each room, Synapse now monitors the rate of join events in that room, and throttles additional joins if that rate grows too large. ([\#13253](https://github.com/matrix-org/synapse/issues/13253), [\#13254](https://github.com/matrix-org/synapse/issues/13254), [\#13255](https://github.com/matrix-org/synapse/issues/13255), [\#13276](https://github.com/matrix-org/synapse/issues/13276)) - Support Implicit TLS (TLS without using a STARTTLS upgrade, typically on port 465) for sending emails, enabled by the new option `force_tls`. Contributed by Jan Schär. ([\#13317](https://github.com/matrix-org/synapse/issues/13317)) Bugfixes -------- - Fix a bug introduced in Synapse 1.15.0 where adding a user through the Synapse Admin API with a phone number would fail if the `enable_email_notifs` and `email_notifs_for_new_users` options were enabled. Contributed by @thomasweston12. ([\#13263](https://github.com/matrix-org/synapse/issues/13263)) - Fix a bug introduced in Synapse 1.40.0 where a user invited to a restricted room would be briefly unable to join. ([\#13270](https://github.com/matrix-org/synapse/issues/13270)) - Fix a long-standing bug where, in rare instances, Synapse could store the incorrect state for a room after a state resolution. ([\#13278](https://github.com/matrix-org/synapse/issues/13278)) - Fix a bug introduced in v1.18.0 where the `synapse_pushers` metric would overcount pushers when they are replaced. ([\#13296](https://github.com/matrix-org/synapse/issues/13296)) - Disable autocorrection and autocapitalisation on the username text field shown during registration when using SSO. ([\#13350](https://github.com/matrix-org/synapse/issues/13350)) - Update locked version of `frozendict` to 2.3.3, which has fixes for memory leaks affecting `/sync`. ([\#13284](https://github.com/matrix-org/synapse/issues/13284), [\#13352](https://github.com/matrix-org/synapse/issues/13352)) Improved Documentation ---------------------- - Provide an example of using the Admin API. Contributed by @jejo86. ([\#13231](https://github.com/matrix-org/synapse/issues/13231)) - Move the documentation for how URL previews work to the URL preview module. ([\#13233](https://github.com/matrix-org/synapse/issues/13233), [\#13261](https://github.com/matrix-org/synapse/issues/13261)) - Add another `contrib` script to help set up worker processes. Contributed by @villepeh. ([\#13271](https://github.com/matrix-org/synapse/issues/13271)) - Document that certain config options were added or changed in Synapse 1.62. Contributed by @behrmann. ([\#13314](https://github.com/matrix-org/synapse/issues/13314)) - Document the new `rc_invites.per_issuer` throttling option added in Synapse 1.63. ([\#13333](https://github.com/matrix-org/synapse/issues/13333)) - Mention that BuildKit is needed when building Docker images for tests. ([\#13338](https://github.com/matrix-org/synapse/issues/13338)) - Improve Caddy reverse proxy documentation. ([\#13344](https://github.com/matrix-org/synapse/issues/13344)) Deprecations and Removals ------------------------- - Drop tables that were formerly used for groups/communities. ([\#12967](https://github.com/matrix-org/synapse/issues/12967)) - Drop support for delegating email verification to an external server. ([\#13192](https://github.com/matrix-org/synapse/issues/13192)) - Drop support for calling `/_matrix/client/v3/account/3pid/bind` without an `id_access_token`, which was not permitted by the spec. Contributed by @Vetchu. ([\#13239](https://github.com/matrix-org/synapse/issues/13239)) - Stop building `.deb` packages for Ubuntu 21.10 (Impish Indri), which has reached end of life. ([\#13326](https://github.com/matrix-org/synapse/issues/13326)) Internal Changes ---------------- - Use lower transaction isolation level when purging rooms to avoid serialization errors. Contributed by Nick @ Beeper. ([\#12942](https://github.com/matrix-org/synapse/issues/12942)) - Remove code which incorrectly attempted to reconcile state with remote servers when processing incoming events. ([\#12943](https://github.com/matrix-org/synapse/issues/12943)) - Make the AS login method call `Auth.get_user_by_req` for checking the AS token. ([\#13094](https://github.com/matrix-org/synapse/issues/13094)) - Always use a version of canonicaljson that supports the C implementation of frozendict. ([\#13172](https://github.com/matrix-org/synapse/issues/13172)) - Add prometheus counters for ephemeral events and to device messages pushed to app services. Contributed by Brad @ Beeper. ([\#13175](https://github.com/matrix-org/synapse/issues/13175)) - Refactor receipts servlet logic to avoid duplicated code. ([\#13198](https://github.com/matrix-org/synapse/issues/13198)) - Preparation for database schema simplifications: populate `state_key` and `rejection_reason` for existing rows in the `events` table. ([\#13215](https://github.com/matrix-org/synapse/issues/13215)) - Remove unused database table `event_reference_hashes`. ([\#13218](https://github.com/matrix-org/synapse/issues/13218)) - Further reduce queries used sending events when creating new rooms. Contributed by Nick @ Beeper (@fizzadar). ([\#13224](https://github.com/matrix-org/synapse/issues/13224)) - Call the v2 identity service `/3pid/unbind` endpoint, rather than v1. Contributed by @Vetchu. ([\#13240](https://github.com/matrix-org/synapse/issues/13240)) - Use an asynchronous cache wrapper for the get event cache. Contributed by Nick @ Beeper (@fizzadar). ([\#13242](https://github.com/matrix-org/synapse/issues/13242), [\#13308](https://github.com/matrix-org/synapse/issues/13308)) - Optimise federation sender and appservice pusher event stream processing queries. Contributed by Nick @ Beeper (@fizzadar). ([\#13251](https://github.com/matrix-org/synapse/issues/13251)) - Log the stack when waiting for an entire room to be un-partial stated. ([\#13257](https://github.com/matrix-org/synapse/issues/13257)) - Fix spurious warning when fetching state after a missing prev event. ([\#13258](https://github.com/matrix-org/synapse/issues/13258)) - Clean-up tests for notifications. ([\#13260](https://github.com/matrix-org/synapse/issues/13260)) - Do not fail build if complement with workers fails. ([\#13266](https://github.com/matrix-org/synapse/issues/13266)) - Don't pull out state in `compute_event_context` for unconflicted state. ([\#13267](https://github.com/matrix-org/synapse/issues/13267), [\#13274](https://github.com/matrix-org/synapse/issues/13274)) - Reduce the rebuild time for the complement-synapse docker image. ([\#13279](https://github.com/matrix-org/synapse/issues/13279)) - Don't pull out the full state when creating an event. ([\#13281](https://github.com/matrix-org/synapse/issues/13281), [\#13307](https://github.com/matrix-org/synapse/issues/13307)) - Upgrade from Poetry 1.1.12 to 1.1.14, to fix bugs when locking packages. ([\#13285](https://github.com/matrix-org/synapse/issues/13285)) - Make `DictionaryCache` expire full entries if they haven't been queried in a while, even if specific keys have been queried recently. ([\#13292](https://github.com/matrix-org/synapse/issues/13292)) - Use `HTTPStatus` constants in place of literals in tests. ([\#13297](https://github.com/matrix-org/synapse/issues/13297)) - Improve performance of query `_get_subset_users_in_room_with_profiles`. ([\#13299](https://github.com/matrix-org/synapse/issues/13299)) - Up batch size of `bulk_get_push_rules` and `_get_joined_profiles_from_event_ids`. ([\#13300](https://github.com/matrix-org/synapse/issues/13300)) - Remove unnecessary `json.dumps` from tests. ([\#13303](https://github.com/matrix-org/synapse/issues/13303)) - Reduce memory usage of sending dummy events. ([\#13310](https://github.com/matrix-org/synapse/issues/13310)) - Prevent formatting changes of [#3679](https://github.com/matrix-org/synapse/pull/3679) from appearing in `git blame`. ([\#13311](https://github.com/matrix-org/synapse/issues/13311)) - Change `get_users_in_room` and `get_rooms_for_user` caches to enable pruning of old entries. ([\#13313](https://github.com/matrix-org/synapse/issues/13313)) - Validate federation destinations and log an error if a destination is invalid. ([\#13318](https://github.com/matrix-org/synapse/issues/13318)) - Fix `FederationClient.get_pdu()` returning events from the cache as `outliers` instead of original events we saw over federation. ([\#13320](https://github.com/matrix-org/synapse/issues/13320)) - Reduce memory usage of state caches. ([\#13323](https://github.com/matrix-org/synapse/issues/13323)) - Reduce the amount of state we store in the `state_cache`. ([\#13324](https://github.com/matrix-org/synapse/issues/13324)) - Add missing type hints to open tracing module. ([\#13328](https://github.com/matrix-org/synapse/issues/13328), [\#13345](https://github.com/matrix-org/synapse/issues/13345), [\#13362](https://github.com/matrix-org/synapse/issues/13362)) - Remove old base slaved store and de-duplicate cache ID generators. Contributed by Nick @ Beeper (@fizzadar). ([\#13329](https://github.com/matrix-org/synapse/issues/13329), [\#13349](https://github.com/matrix-org/synapse/issues/13349)) - When reporting metrics is enabled, use ~8x less data to describe DB transaction metrics. ([\#13342](https://github.com/matrix-org/synapse/issues/13342)) - Faster room joins: skip soft fail checks while Synapse only has partial room state, since the current membership of event senders may not be accurately known. ([\#13354](https://github.com/matrix-org/synapse/issues/13354)) Synapse 1.63.1 (2022-07-20) =========================== Bugfixes -------- - Fix a bug introduced in Synapse 1.63.0 where push actions were incorrectly calculated for appservice users. This caused performance issues on servers with large numbers of appservices. ([\#13332](https://github.com/matrix-org/synapse/issues/13332)) Synapse 1.63.0 (2022-07-19) =========================== Improved Documentation ---------------------- - Clarify that homeserver server names are included in the reported data when the `report_stats` config option is enabled. ([\#13321](https://github.com/matrix-org/synapse/issues/13321)) Synapse 1.63.0rc1 (2022-07-12) ============================== Features -------- - Add a rate limit for local users sending invites. ([\#13125](https://github.com/matrix-org/synapse/issues/13125)) - Implement [MSC3827](https://github.com/matrix-org/matrix-spec-proposals/pull/3827): Filtering of `/publicRooms` by room type. ([\#13031](https://github.com/matrix-org/synapse/issues/13031)) - Improve validation logic in the account data REST endpoints. ([\#13148](https://github.com/matrix-org/synapse/issues/13148)) Bugfixes -------- - Fix a long-standing bug where application services were not able to join remote federated rooms without a profile. ([\#13131](https://github.com/matrix-org/synapse/issues/13131)) - Fix a long-standing bug where `_get_state_map_for_room` might raise errors when third party event rules callbacks are present. ([\#13174](https://github.com/matrix-org/synapse/issues/13174)) - Fix a long-standing bug where the `synapse_port_db` script could fail to copy rows with negative row ids. ([\#13226](https://github.com/matrix-org/synapse/issues/13226)) - Fix a bug introduced in 1.54.0 where appservices would not receive room-less EDUs, like presence, when both [MSC2409](https://github.com/matrix-org/matrix-spec-proposals/pull/2409) and [MSC3202](https://github.com/matrix-org/matrix-spec-proposals/pull/3202) are enabled. ([\#13236](https://github.com/matrix-org/synapse/issues/13236)) - Fix a bug introduced in 1.62.0 where rows were not deleted from `event_push_actions` table on large servers. ([\#13194](https://github.com/matrix-org/synapse/issues/13194)) - Fix a bug introduced in 1.62.0 where notification counts would get stuck after a highlighted message. ([\#13223](https://github.com/matrix-org/synapse/issues/13223)) - Fix exception when using experimental [MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030) `/timestamp_to_event` endpoint to look for remote federated imported events before room creation. ([\#13197](https://github.com/matrix-org/synapse/issues/13197)) - Fix [MSC3202](https://github.com/matrix-org/matrix-spec-proposals/pull/3202)-enabled appservices not receiving to-device messages, preventing messages from being decrypted. ([\#13235](https://github.com/matrix-org/synapse/issues/13235)) Updates to the Docker image --------------------------- - Bump the version of `lxml` in matrix.org Docker images Debian packages from 4.8.0 to 4.9.1. ([\#13207](https://github.com/matrix-org/synapse/issues/13207)) Improved Documentation ---------------------- - Add an explanation of the `--report-stats` argument to the docs. ([\#13029](https://github.com/matrix-org/synapse/issues/13029)) - Add a helpful example bash script to the contrib directory for creating multiple worker configuration files of the same type. Contributed by @villepeh. ([\#13032](https://github.com/matrix-org/synapse/issues/13032)) - Add missing links to config options. ([\#13166](https://github.com/matrix-org/synapse/issues/13166)) - Add documentation for homeserver usage statistics collection. ([\#13086](https://github.com/matrix-org/synapse/issues/13086)) - Add documentation for the existing `databases` option in the homeserver configuration manual. ([\#13212](https://github.com/matrix-org/synapse/issues/13212)) - Clean up references to sample configuration and redirect users to the configuration manual instead. ([\#13077](https://github.com/matrix-org/synapse/issues/13077), [\#13139](https://github.com/matrix-org/synapse/issues/13139)) - Document how the Synapse team does reviews. ([\#13132](https://github.com/matrix-org/synapse/issues/13132)) - Fix wrong section header for `allow_public_rooms_over_federation` in the homeserver config documentation. ([\#13116](https://github.com/matrix-org/synapse/issues/13116)) Deprecations and Removals ------------------------- - Remove obsolete and for 8 years unused `RoomEventsStoreTestCase`. Contributed by @arkamar. ([\#13200](https://github.com/matrix-org/synapse/issues/13200)) Internal Changes ---------------- - Add type annotations to `synapse.logging`, `tests.server` and `tests.utils`. ([\#13028](https://github.com/matrix-org/synapse/issues/13028), [\#13103](https://github.com/matrix-org/synapse/issues/13103), [\#13159](https://github.com/matrix-org/synapse/issues/13159), [\#13136](https://github.com/matrix-org/synapse/issues/13136)) - Enforce type annotations for `tests.test_server`. ([\#13135](https://github.com/matrix-org/synapse/issues/13135)) - Support temporary experimental return values for spam checker module callbacks. ([\#13044](https://github.com/matrix-org/synapse/issues/13044)) - Add support to `complement.sh` for skipping the docker build. ([\#13143](https://github.com/matrix-org/synapse/issues/13143), [\#13158](https://github.com/matrix-org/synapse/issues/13158)) - Add support to `complement.sh` for setting the log level using the `SYNAPSE_TEST_LOG_LEVEL` environment variable. ([\#13152](https://github.com/matrix-org/synapse/issues/13152)) - Enable Complement testing in the 'Twisted Trunk' CI runs. ([\#13079](https://github.com/matrix-org/synapse/issues/13079), [\#13157](https://github.com/matrix-org/synapse/issues/13157)) - Improve startup times in Complement test runs against workers, particularly in CPU-constrained environments. ([\#13127](https://github.com/matrix-org/synapse/issues/13127)) - Update config used by Complement to allow device name lookup over federation. ([\#13167](https://github.com/matrix-org/synapse/issues/13167)) - Faster room joins: handle race between persisting an event and un-partial stating a room. ([\#13100](https://github.com/matrix-org/synapse/issues/13100)) - Faster room joins: fix race in recalculation of current room state. ([\#13151](https://github.com/matrix-org/synapse/issues/13151)) - Faster room joins: skip waiting for full state when processing incoming events over federation. ([\#13144](https://github.com/matrix-org/synapse/issues/13144)) - Raise a `DependencyError` on missing dependencies instead of a `ConfigError`. ([\#13113](https://github.com/matrix-org/synapse/issues/13113)) - Avoid stripping line breaks from SQL sent to the database. ([\#13129](https://github.com/matrix-org/synapse/issues/13129)) - Apply ratelimiting earlier in processing of `/send` requests. ([\#13134](https://github.com/matrix-org/synapse/issues/13134)) - Improve exception handling when processing events received over federation. ([\#13145](https://github.com/matrix-org/synapse/issues/13145)) - Check that `auto_vacuum` is disabled when porting a SQLite database to Postgres, as `VACUUM`s must not be performed between runs of the script. ([\#13195](https://github.com/matrix-org/synapse/issues/13195)) - Reduce DB usage of `/sync` when a large number of unread messages have recently been sent in a room. ([\#13119](https://github.com/matrix-org/synapse/issues/13119), [\#13153](https://github.com/matrix-org/synapse/issues/13153)) - Reduce memory consumption when processing incoming events in large rooms. ([\#13078](https://github.com/matrix-org/synapse/issues/13078), [\#13222](https://github.com/matrix-org/synapse/issues/13222)) - Reduce number of queries used to get profile information. Contributed by Nick @ Beeper (@fizzadar). ([\#13209](https://github.com/matrix-org/synapse/issues/13209)) - Reduce number of events queried during room creation. Contributed by Nick @ Beeper (@fizzadar). ([\#13210](https://github.com/matrix-org/synapse/issues/13210)) - More aggressively rotate push actions. ([\#13211](https://github.com/matrix-org/synapse/issues/13211)) - Add `max_line_length` setting for Python files to the `.editorconfig`. Contributed by @sumnerevans @ Beeper. ([\#13228](https://github.com/matrix-org/synapse/issues/13228)) Synapse 1.62.0 (2022-07-05) =========================== No significant changes since 1.62.0rc3. Authors of spam-checker plugins should consult the [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.62/docs/upgrade.md#upgrading-to-v1620) to learn about the enriched signatures for spam checker callbacks, which are supported with this release of Synapse. ## Security advisory The following issue is fixed in 1.62.0. * [GHSA-jhjh-776m-4765](https://github.com/matrix-org/synapse/security/advisories/GHSA-jhjh-776m-4765) / [CVE-2022-31152](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-31152) Synapse instances prior to 1.62.0 did not implement the Matrix [event authorization rules](https://spec.matrix.org/v1.3/rooms/v10/#authorization-rules) correctly. An attacker could craft events which would be accepted by Synapse but not a spec-conformant server, potentially causing divergence in the room state between servers. Homeservers with federation disabled via the [`federation_domain_whitelist`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_domain_whitelist) config option are unaffected. Administrators of homeservers with federation enabled are advised to upgrade to v1.62.0 or higher. Fixed by [#13087](https://github.com/matrix-org/synapse/pull/13087) and [#13088](https://github.com/matrix-org/synapse/pull/13088). Synapse 1.62.0rc3 (2022-07-04) ============================== Bugfixes -------- - Update the version of the [ldap3 plugin](https://github.com/matrix-org/matrix-synapse-ldap3/) included in the `matrixdotorg/synapse` DockerHub images and the Debian packages hosted on `packages.matrix.org` to 0.2.1. This fixes [a bug](https://github.com/matrix-org/matrix-synapse-ldap3/pull/163) with usernames containing uppercase characters. ([\#13156](https://github.com/matrix-org/synapse/issues/13156)) - Fix a bug introduced in Synapse 1.62.0rc1 affecting unread counts for users on small servers. ([\#13168](https://github.com/matrix-org/synapse/issues/13168)) Synapse 1.62.0rc2 (2022-07-01) ============================== Bugfixes -------- - Fix unread counts for users on large servers. Introduced in v1.62.0rc1. ([\#13140](https://github.com/matrix-org/synapse/issues/13140)) - Fix DB performance when deleting old push notifications. Introduced in v1.62.0rc1. ([\#13141](https://github.com/matrix-org/synapse/issues/13141)) Synapse 1.62.0rc1 (2022-06-28) ============================== Features -------- - Port the spam-checker API callbacks to a new, richer API. This is part of an ongoing change to let spam-checker modules inform users of the reason their event or operation is rejected. ([\#12857](https://github.com/matrix-org/synapse/issues/12857), [\#13047](https://github.com/matrix-org/synapse/issues/13047)) - Allow server admins to customise the response of the `/.well-known/matrix/client` endpoint. ([\#13035](https://github.com/matrix-org/synapse/issues/13035)) - Add metrics measuring the CPU and DB time spent in state resolution. ([\#13036](https://github.com/matrix-org/synapse/issues/13036)) - Speed up fetching of device list changes in `/sync` and `/keys/changes`. ([\#13045](https://github.com/matrix-org/synapse/issues/13045), [\#13098](https://github.com/matrix-org/synapse/issues/13098)) - Improve URL previews for sites which only provide Twitter Card metadata, e.g. LWN.net. ([\#13056](https://github.com/matrix-org/synapse/issues/13056)) Bugfixes -------- - Update [MSC3786](https://github.com/matrix-org/matrix-spec-proposals/pull/3786) implementation to check `state_key`. ([\#12939](https://github.com/matrix-org/synapse/issues/12939)) - Fix a bug introduced in Synapse 1.58 where Synapse would not report full version information when installed from a git checkout. This is a best-effort affair and not guaranteed to be stable. ([\#12973](https://github.com/matrix-org/synapse/issues/12973)) - Fix a bug introduced in Synapse 1.60 where Synapse would fail to start if the `sqlite3` module was not available. ([\#12979](https://github.com/matrix-org/synapse/issues/12979)) - Fix a bug where non-standard information was required when requesting the `/hierarchy` API over federation. Introduced in Synapse 1.41.0. ([\#12991](https://github.com/matrix-org/synapse/issues/12991)) - Fix a long-standing bug which meant that rate limiting was not restrictive enough in some cases. ([\#13018](https://github.com/matrix-org/synapse/issues/13018)) - Fix a bug introduced in Synapse 1.58 where profile requests for a malformed user ID would ccause an internal error. Synapse now returns 400 Bad Request in this situation. ([\#13041](https://github.com/matrix-org/synapse/issues/13041)) - Fix some inconsistencies in the event authentication code. ([\#13087](https://github.com/matrix-org/synapse/issues/13087), [\#13088](https://github.com/matrix-org/synapse/issues/13088)) - Fix a long-standing bug where room directory requests would cause an internal server error if given a malformed room alias. ([\#13106](https://github.com/matrix-org/synapse/issues/13106)) Improved Documentation ---------------------- - Add documentation for how to configure Synapse with Workers using Docker Compose. Includes example worker config and docker-compose.yaml. Contributed by @Thumbscrew. ([\#12737](https://github.com/matrix-org/synapse/issues/12737)) - Ensure the [Poetry cheat sheet](https://matrix-org.github.io/synapse/develop/development/dependencies.html) is available in the online documentation. ([\#13022](https://github.com/matrix-org/synapse/issues/13022)) - Mention removed community/group worker endpoints in upgrade.md. Contributed by @olmari. ([\#13023](https://github.com/matrix-org/synapse/issues/13023)) - Add instructions for running Complement with `gotestfmt`-formatted output locally. ([\#13073](https://github.com/matrix-org/synapse/issues/13073)) - Update OpenTracing docs to reference the configuration manual rather than the configuration file. ([\#13076](https://github.com/matrix-org/synapse/issues/13076)) - Update information on downstream Debian packages. ([\#13095](https://github.com/matrix-org/synapse/issues/13095)) - Remove documentation for the Delete Group Admin API which no longer exists. ([\#13112](https://github.com/matrix-org/synapse/issues/13112)) Deprecations and Removals ------------------------- - Remove the unspecced `DELETE /directory/list/room/{roomId}` endpoint, which hid rooms from the [public room directory](https://spec.matrix.org/v1.3/client-server-api/#listing-rooms). Instead, `PUT` to the same URL with a visibility of `"private"`. ([\#13123](https://github.com/matrix-org/synapse/issues/13123)) Internal Changes ---------------- - Add tests for cancellation of `GET /rooms/$room_id/members` and `GET /rooms/$room_id/state` requests. ([\#12674](https://github.com/matrix-org/synapse/issues/12674)) - Report login failures due to unknown third party identifiers in the same way as failures due to invalid passwords. This prevents an attacker from using the error response to determine if the identifier exists. Contributed by Daniel Aloni. ([\#12738](https://github.com/matrix-org/synapse/issues/12738)) - Merge the Complement testing Docker images into a single, multi-purpose image. ([\#12881](https://github.com/matrix-org/synapse/issues/12881), [\#13075](https://github.com/matrix-org/synapse/issues/13075)) - Simplify the database schema for `event_edges`. ([\#12893](https://github.com/matrix-org/synapse/issues/12893)) - Clean up the test code for client disconnection. ([\#12929](https://github.com/matrix-org/synapse/issues/12929)) - Remove code generating comments in configuration. ([\#12941](https://github.com/matrix-org/synapse/issues/12941)) - Add `Cross-Origin-Resource-Policy: cross-origin` header to content repository's thumbnail and download endpoints. ([\#12944](https://github.com/matrix-org/synapse/issues/12944)) - Replace noop background updates with `DELETE` delta. ([\#12954](https://github.com/matrix-org/synapse/issues/12954), [\#13050](https://github.com/matrix-org/synapse/issues/13050)) - Use lower isolation level when inserting read receipts to avoid serialization errors. Contributed by Nick @ Beeper. ([\#12957](https://github.com/matrix-org/synapse/issues/12957)) - Reduce the amount of state we pull from the DB. ([\#12963](https://github.com/matrix-org/synapse/issues/12963)) - Enable testing against PostgreSQL databases in Complement CI. ([\#12965](https://github.com/matrix-org/synapse/issues/12965), [\#13034](https://github.com/matrix-org/synapse/issues/13034)) - Fix an inaccurate comment. ([\#12969](https://github.com/matrix-org/synapse/issues/12969)) - Remove the `delete_device` method and always call `delete_devices`. ([\#12970](https://github.com/matrix-org/synapse/issues/12970)) - Use a GitHub form for issues rather than a hard-to-read, easy-to-ignore template. ([\#12982](https://github.com/matrix-org/synapse/issues/12982)) - Move [MSC3715](https://github.com/matrix-org/matrix-spec-proposals/pull/3715) behind an experimental config flag. ([\#12984](https://github.com/matrix-org/synapse/issues/12984)) - Add type hints to tests. ([\#12985](https://github.com/matrix-org/synapse/issues/12985), [\#13099](https://github.com/matrix-org/synapse/issues/13099)) - Refactor macaroon tokens generation and move the unsubscribe link in notification emails to `/_synapse/client/unsubscribe`. ([\#12986](https://github.com/matrix-org/synapse/issues/12986)) - Fix documentation for running complement tests. ([\#12990](https://github.com/matrix-org/synapse/issues/12990)) - Faster joins: add issue links to the TODO comments in the code. ([\#13004](https://github.com/matrix-org/synapse/issues/13004)) - Reduce DB usage of `/sync` when a large number of unread messages have recently been sent in a room. ([\#13005](https://github.com/matrix-org/synapse/issues/13005), [\#13096](https://github.com/matrix-org/synapse/issues/13096), [\#13118](https://github.com/matrix-org/synapse/issues/13118)) - Replaced usage of PyJWT with methods from Authlib in `org.matrix.login.jwt`. Contributed by Hannes Lerchl. ([\#13011](https://github.com/matrix-org/synapse/issues/13011)) - Modernize the `contrib/graph/` scripts. ([\#13013](https://github.com/matrix-org/synapse/issues/13013)) - Remove redundant `room_version` parameters from event auth functions. ([\#13017](https://github.com/matrix-org/synapse/issues/13017)) - Decouple `synapse.api.auth_blocking.AuthBlocking` from `synapse.api.auth.Auth`. ([\#13021](https://github.com/matrix-org/synapse/issues/13021)) - Add type annotations to `synapse.storage.databases.main.devices`. ([\#13025](https://github.com/matrix-org/synapse/issues/13025)) - Set default `sync_response_cache_duration` to two minutes. ([\#13042](https://github.com/matrix-org/synapse/issues/13042)) - Rename CI test runs. ([\#13046](https://github.com/matrix-org/synapse/issues/13046)) - Increase timeout of complement CI test runs. ([\#13048](https://github.com/matrix-org/synapse/issues/13048)) - Refactor entry points so that they all have a `main` function. ([\#13052](https://github.com/matrix-org/synapse/issues/13052)) - Refactor the Dockerfile-workers configuration script to use Jinja2 templates in Synapse workers' Supervisord blocks. ([\#13054](https://github.com/matrix-org/synapse/issues/13054)) - Add headers to individual options in config documentation to allow for linking. ([\#13055](https://github.com/matrix-org/synapse/issues/13055)) - Make Complement CI logs easier to read. ([\#13057](https://github.com/matrix-org/synapse/issues/13057), [\#13058](https://github.com/matrix-org/synapse/issues/13058), [\#13069](https://github.com/matrix-org/synapse/issues/13069)) - Don't instantiate modules with keyword arguments. ([\#13060](https://github.com/matrix-org/synapse/issues/13060)) - Fix type checking errors against Twisted trunk. ([\#13061](https://github.com/matrix-org/synapse/issues/13061)) - Allow MSC3030 `timestamp_to_event` calls from anyone on world-readable rooms. ([\#13062](https://github.com/matrix-org/synapse/issues/13062)) - Add a CI job to check that schema deltas are in the correct folder. ([\#13063](https://github.com/matrix-org/synapse/issues/13063)) - Avoid rechecking event auth rules which are independent of room state. ([\#13065](https://github.com/matrix-org/synapse/issues/13065)) - Reduce the duplication of code that invokes the rate limiter. ([\#13070](https://github.com/matrix-org/synapse/issues/13070)) - Add a Subject Alternative Name to the certificate generated for Complement tests. ([\#13071](https://github.com/matrix-org/synapse/issues/13071)) - Add more tests for room upgrades. ([\#13074](https://github.com/matrix-org/synapse/issues/13074)) - Pin dependencies maintained by matrix.org to [semantic version](https://semver.org/) bounds. ([\#13082](https://github.com/matrix-org/synapse/issues/13082)) - Correctly report prometheus DB stats for `get_earliest_token_for_stats`. ([\#13085](https://github.com/matrix-org/synapse/issues/13085)) - Fix a long-standing bug where a finished logging context would be re-started when Synapse failed to persist an event from federation. ([\#13089](https://github.com/matrix-org/synapse/issues/13089)) - Simplify the alias deletion logic as an application service. ([\#13093](https://github.com/matrix-org/synapse/issues/13093)) - Add type annotations to `tests.test_server`. ([\#13124](https://github.com/matrix-org/synapse/issues/13124)) Synapse 1.61.1 (2022-06-28) =========================== This patch release fixes a security issue regarding URL previews, affecting all prior versions of Synapse. Server administrators are encouraged to update Synapse as soon as possible. We are not aware of these vulnerabilities being exploited in the wild. Server administrators who are unable to update Synapse may use the workarounds described in the linked GitHub Security Advisory below. ## Security advisory The following issue is fixed in 1.61.1. * [GHSA-22p3-qrh9-cx32](https://github.com/matrix-org/synapse/security/advisories/GHSA-22p3-qrh9-cx32) / [CVE-2022-31052](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-31052) Synapse instances with the [`url_preview_enabled`](https://matrix-org.github.io/synapse/v1.61/usage/configuration/config_documentation.html#media-store) homeserver config option set to `true` are affected. URL previews of some web pages can lead to unbounded recursion, causing the request to either fail, or in some cases crash the running Synapse process. Requesting URL previews requires authentication. Nevertheless, it is possible to exploit this maliciously, either by malicious users on the homeserver, or by remote users sending URLs that a local user's client may automatically request a URL preview for. Homeservers with the `url_preview_enabled` configuration option set to `false` (the default) are unaffected. Instances with the `enable_media_repo` configuration option set to `false` are also unaffected, as this also disables URL preview functionality. Fixed by [fa1308061802ac7b7d20e954ba7372c5ac292333](https://github.com/matrix-org/synapse/commit/fa1308061802ac7b7d20e954ba7372c5ac292333). Synapse 1.61.0 (2022-06-14) =========================== This release removes support for the non-standard feature known both as 'groups' and as 'communities', which have been superseded by *Spaces*. See [the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1610) for more details. Improved Documentation ---------------------- - Mention removed community/group worker endpoints in [the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1610). Contributed by @olmari. ([\#13023](https://github.com/matrix-org/synapse/issues/13023)) Synapse 1.61.0rc1 (2022-06-07) ============================== Features -------- - Add new `media_retention` options to the homeserver config for routinely cleaning up non-recently accessed media. ([\#12732](https://github.com/matrix-org/synapse/issues/12732), [\#12972](https://github.com/matrix-org/synapse/issues/12972), [\#12977](https://github.com/matrix-org/synapse/issues/12977)) - Experimental support for [MSC3772](https://github.com/matrix-org/matrix-spec-proposals/pull/3772): Push rule for mutually related events. ([\#12740](https://github.com/matrix-org/synapse/issues/12740), [\#12859](https://github.com/matrix-org/synapse/issues/12859)) - Update to the `check_event_for_spam` module callback: Deprecate the current callback signature, replace it with a new signature that is both less ambiguous (replacing booleans with explicit allow/block) and more powerful (ability to return explicit error codes). ([\#12808](https://github.com/matrix-org/synapse/issues/12808)) - Add storage and module API methods to get monthly active users (and their corresponding appservices) within an optionally specified time range. ([\#12838](https://github.com/matrix-org/synapse/issues/12838), [\#12917](https://github.com/matrix-org/synapse/issues/12917)) - Support the new error code `ORG.MATRIX.MSC3823.USER_ACCOUNT_SUSPENDED` from [MSC3823](https://github.com/matrix-org/matrix-spec-proposals/pull/3823). ([\#12845](https://github.com/matrix-org/synapse/issues/12845), [\#12923](https://github.com/matrix-org/synapse/issues/12923)) - Add a configurable background job to delete stale devices. ([\#12855](https://github.com/matrix-org/synapse/issues/12855)) - Improve URL previews for pages with empty elements. ([\#12951](https://github.com/matrix-org/synapse/issues/12951)) - Allow updating a user's password using the admin API without logging out their devices. Contributed by @jcgruenhage. ([\#12952](https://github.com/matrix-org/synapse/issues/12952)) Bugfixes -------- - Always send an `access_token` in `/thirdparty/` requests to appservices, as required by the [Application Service API specification](https://spec.matrix.org/v1.1/application-service-api/#third-party-networks). ([\#12746](https://github.com/matrix-org/synapse/issues/12746)) - Implement [MSC3816](https://github.com/matrix-org/matrix-spec-proposals/pull/3816): sending the root event in a thread should count as having 'participated' in it. ([\#12766](https://github.com/matrix-org/synapse/issues/12766)) - Delete events from the `federation_inbound_events_staging` table when a room is purged through the admin API. ([\#12784](https://github.com/matrix-org/synapse/issues/12784)) - Fix a bug where we did not correctly handle invalid device list updates over federation. Contributed by Carl Bordum Hansen. ([\#12829](https://github.com/matrix-org/synapse/issues/12829)) - Fix a bug which allowed multiple async operations to access database locks concurrently. Contributed by @sumnerevans @ Beeper. ([\#12832](https://github.com/matrix-org/synapse/issues/12832)) - Fix an issue introduced in Synapse 0.34 where the `/notifications` endpoint would only return notifications if a user registered at least one pusher. Contributed by Famedly. ([\#12840](https://github.com/matrix-org/synapse/issues/12840)) - Fix a bug where servers using a Postgres database would fail to backfill from an insertion event when MSC2716 is enabled (`experimental_features.msc2716_enabled`). ([\#12843](https://github.com/matrix-org/synapse/issues/12843)) - Fix [MSC3787](https://github.com/matrix-org/matrix-spec-proposals/pull/3787) rooms being omitted from room directory, room summary and space hierarchy responses. ([\#12858](https://github.com/matrix-org/synapse/issues/12858)) - Fix a bug introduced in Synapse 1.54.0 which could sometimes cause exceptions when handling federated traffic. ([\#12877](https://github.com/matrix-org/synapse/issues/12877)) - Fix a bug introduced in Synapse 1.59.0 which caused room deletion to fail with a foreign key violation error. ([\#12889](https://github.com/matrix-org/synapse/issues/12889)) - Fix a long-standing bug which caused the `/messages` endpoint to return an incorrect `end` attribute when there were no more events. Contributed by @Vetchu. ([\#12903](https://github.com/matrix-org/synapse/issues/12903)) - Fix a bug introduced in Synapse 1.58.0 where `/sync` would fail if the most recent event in a room was a redaction of an event that has since been purged. ([\#12905](https://github.com/matrix-org/synapse/issues/12905)) - Fix a potential memory leak when generating thumbnails. ([\#12932](https://github.com/matrix-org/synapse/issues/12932)) - Fix a long-standing bug where a URL preview would break if the image failed to download. ([\#12950](https://github.com/matrix-org/synapse/issues/12950)) Improved Documentation ---------------------- - Fix typographical errors in documentation. ([\#12863](https://github.com/matrix-org/synapse/issues/12863)) - Fix documentation incorrectly stating the `sendToDevice` endpoint can be directed at generic workers. Contributed by Nick @ Beeper. ([\#12867](https://github.com/matrix-org/synapse/issues/12867)) Deprecations and Removals ------------------------- - Remove support for the non-standard groups/communities feature from Synapse. ([\#12553](https://github.com/matrix-org/synapse/issues/12553), [\#12558](https://github.com/matrix-org/synapse/issues/12558), [\#12563](https://github.com/matrix-org/synapse/issues/12563), [\#12895](https://github.com/matrix-org/synapse/issues/12895), [\#12897](https://github.com/matrix-org/synapse/issues/12897), [\#12899](https://github.com/matrix-org/synapse/issues/12899), [\#12900](https://github.com/matrix-org/synapse/issues/12900), [\#12936](https://github.com/matrix-org/synapse/issues/12936), [\#12966](https://github.com/matrix-org/synapse/issues/12966)) - Remove contributed `kick_users.py` script. This is broken under Python 3, and is not added to the environment when `pip install`ing Synapse. ([\#12908](https://github.com/matrix-org/synapse/issues/12908)) - Remove `contrib/jitsimeetbridge`. This was an unused experiment that hasn't been meaningfully changed since 2014. ([\#12909](https://github.com/matrix-org/synapse/issues/12909)) - Remove unused `contrib/experiements/cursesio.py` script, which fails to run under Python 3. ([\#12910](https://github.com/matrix-org/synapse/issues/12910)) - Remove unused `contrib/experiements/test_messaging.py` script. This fails to run on Python 3. ([\#12911](https://github.com/matrix-org/synapse/issues/12911)) Internal Changes ---------------- - Test Synapse against Complement with workers. ([\#12810](https://github.com/matrix-org/synapse/issues/12810), [\#12933](https://github.com/matrix-org/synapse/issues/12933)) - Reduce the amount of state we pull from the DB. ([\#12811](https://github.com/matrix-org/synapse/issues/12811), [\#12964](https://github.com/matrix-org/synapse/issues/12964)) - Try other homeservers when re-syncing state for rooms with partial state. ([\#12812](https://github.com/matrix-org/synapse/issues/12812)) - Resume state re-syncing for rooms with partial state after a Synapse restart. ([\#12813](https://github.com/matrix-org/synapse/issues/12813)) - Remove Mutual Rooms' ([MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666)) endpoint dependency on the User Directory. ([\#12836](https://github.com/matrix-org/synapse/issues/12836)) - Experimental: expand `check_event_for_spam` with ability to return additional fields. This enables spam-checker implementations to experiment with mechanisms to give users more information about why they are blocked and whether any action is needed from them to be unblocked. ([\#12846](https://github.com/matrix-org/synapse/issues/12846)) - Remove `dont_notify` from the `.m.rule.room.server_acl` rule. ([\#12849](https://github.com/matrix-org/synapse/issues/12849)) - Remove the unstable `/hierarchy` endpoint from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#12851](https://github.com/matrix-org/synapse/issues/12851)) - Pull out less state when handling gaps in room DAG. ([\#12852](https://github.com/matrix-org/synapse/issues/12852), [\#12904](https://github.com/matrix-org/synapse/issues/12904)) - Clean-up the push rules datastore. ([\#12856](https://github.com/matrix-org/synapse/issues/12856)) - Correct a type annotation in the URL preview source code. ([\#12860](https://github.com/matrix-org/synapse/issues/12860)) - Update `pyjwt` dependency to [2.4.0](https://github.com/jpadilla/pyjwt/releases/tag/2.4.0). ([\#12865](https://github.com/matrix-org/synapse/issues/12865)) - Enable the `/account/whoami` endpoint on synapse worker processes. Contributed by Nick @ Beeper. ([\#12866](https://github.com/matrix-org/synapse/issues/12866)) - Enable the `batch_send` endpoint on synapse worker processes. Contributed by Nick @ Beeper. ([\#12868](https://github.com/matrix-org/synapse/issues/12868)) - Don't generate empty AS transactions when the AS is flagged as down. Contributed by Nick @ Beeper. ([\#12869](https://github.com/matrix-org/synapse/issues/12869)) - Fix up the variable `state_store` naming. ([\#12871](https://github.com/matrix-org/synapse/issues/12871)) - Faster room joins: when querying the current state of the room, wait for state to be populated. ([\#12872](https://github.com/matrix-org/synapse/issues/12872)) - Avoid running queries which will never result in deletions. ([\#12879](https://github.com/matrix-org/synapse/issues/12879)) - Use constants for EDU types. ([\#12884](https://github.com/matrix-org/synapse/issues/12884)) - Reduce database load of `/sync` when presence is enabled. ([\#12885](https://github.com/matrix-org/synapse/issues/12885)) - Refactor `have_seen_events` to reduce memory consumed when processing federation traffic. ([\#12886](https://github.com/matrix-org/synapse/issues/12886)) - Refactor receipt linearization code. ([\#12888](https://github.com/matrix-org/synapse/issues/12888)) - Add type annotations to `synapse.logging.opentracing`. ([\#12894](https://github.com/matrix-org/synapse/issues/12894)) - Remove PyNaCl occurrences directly used in Synapse code. ([\#12902](https://github.com/matrix-org/synapse/issues/12902)) - Bump types-jsonschema from 4.4.1 to 4.4.6. ([\#12912](https://github.com/matrix-org/synapse/issues/12912)) - Rename storage classes. ([\#12913](https://github.com/matrix-org/synapse/issues/12913)) - Preparation for database schema simplifications: stop reading from `event_edges.room_id`. ([\#12914](https://github.com/matrix-org/synapse/issues/12914)) - Check if we are in a virtual environment before overriding the `PYTHONPATH` environment variable in the demo script. ([\#12916](https://github.com/matrix-org/synapse/issues/12916)) - Improve the logging when signature checks on events fail. ([\#12925](https://github.com/matrix-org/synapse/issues/12925)) Synapse 1.60.0 (2022-05-31) =========================== This release of Synapse adds a unique index to the `state_group_edges` table, in order to prevent accidentally introducing duplicate information (for example, because a database backup was restored multiple times). If your Synapse database already has duplicate rows in this table, this could fail with an error and require manual remediation. Additionally, the signature of the `check_event_for_spam` module callback has changed. The previous signature has been deprecated and remains working for now. Module authors should update their modules to use the new signature where possible. See [the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1600) for more details. Bugfixes -------- - Fix a bug introduced in Synapse 1.60.0rc1 that would break some imports from `synapse.module_api`. ([\#12918](https://github.com/matrix-org/synapse/issues/12918)) Synapse 1.60.0rc2 (2022-05-27) ============================== Features -------- - Add an option allowing users to use their password to reauthenticate for privileged actions even though password login is disabled. ([\#12883](https://github.com/matrix-org/synapse/issues/12883)) Bugfixes -------- - Explicitly close `ijson` coroutines once we are done with them, instead of leaving the garbage collector to close them. ([\#12875](https://github.com/matrix-org/synapse/issues/12875)) Internal Changes ---------------- - Improve URL previews by not including the content of media tags in the generated description. ([\#12887](https://github.com/matrix-org/synapse/issues/12887)) Synapse 1.60.0rc1 (2022-05-24) ============================== Features -------- - Measure the time taken in spam-checking callbacks and expose those measurements as metrics. ([\#12513](https://github.com/matrix-org/synapse/issues/12513)) - Add a `default_power_level_content_override` config option to set default room power levels per room preset. ([\#12618](https://github.com/matrix-org/synapse/issues/12618)) - Add support for [MSC3787: Allowing knocks to restricted rooms](https://github.com/matrix-org/matrix-spec-proposals/pull/3787). ([\#12623](https://github.com/matrix-org/synapse/issues/12623)) - Send `USER_IP` commands on a different Redis channel, in order to reduce traffic to workers that do not process these commands. ([\#12672](https://github.com/matrix-org/synapse/issues/12672), [\#12809](https://github.com/matrix-org/synapse/issues/12809)) - Synapse will now reload [cache config](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caching) when it receives a [SIGHUP](https://en.wikipedia.org/wiki/SIGHUP) signal. ([\#12673](https://github.com/matrix-org/synapse/issues/12673)) - Add a config options to allow for auto-tuning of caches. ([\#12701](https://github.com/matrix-org/synapse/issues/12701)) - Update [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716) implementation to process marker events from the current state to avoid markers being lost in timeline gaps for federated servers which would cause the imported history to be undiscovered. ([\#12718](https://github.com/matrix-org/synapse/issues/12718)) - Add a `drop_federated_event` callback to `SpamChecker` to disregard inbound federated events before they take up much processing power, in an emergency. ([\#12744](https://github.com/matrix-org/synapse/issues/12744)) - Implement [MSC3818: Copy room type on upgrade](https://github.com/matrix-org/matrix-spec-proposals/pull/3818). ([\#12786](https://github.com/matrix-org/synapse/issues/12786), [\#12792](https://github.com/matrix-org/synapse/issues/12792)) - Update to the `check_event_for_spam` module callback. Deprecate the current callback signature, replace it with a new signature that is both less ambiguous (replacing booleans with explicit allow/block) and more powerful (ability to return explicit error codes). ([\#12808](https://github.com/matrix-org/synapse/issues/12808)) Bugfixes -------- - Fix a bug introduced in Synapse 1.7.0 that would prevent events from being sent to clients if there's a retention policy in the room when the support for retention policies is disabled. ([\#12611](https://github.com/matrix-org/synapse/issues/12611)) - Fix a bug introduced in Synapse 1.57.0 where `/messages` would throw a 500 error when querying for a non-existent room. ([\#12683](https://github.com/matrix-org/synapse/issues/12683)) - Add a unique index to `state_group_edges` to prevent duplicates being accidentally introduced and the consequential impact to performance. ([\#12687](https://github.com/matrix-org/synapse/issues/12687)) - Fix a long-standing bug where an empty room would be created when a user with an insufficient power level tried to upgrade a room. ([\#12696](https://github.com/matrix-org/synapse/issues/12696)) - Fix a bug introduced in Synapse 1.30.0 where empty rooms could be automatically created if a monthly active users limit is set. ([\#12713](https://github.com/matrix-org/synapse/issues/12713)) - Fix push to dismiss notifications when read on another client. Contributed by @SpiritCroc @ Beeper. ([\#12721](https://github.com/matrix-org/synapse/issues/12721)) - Fix poor database performance when reading the cache invalidation stream for large servers with lots of workers. ([\#12747](https://github.com/matrix-org/synapse/issues/12747)) - Fix a long-standing bug where the user directory background process would fail to make forward progress if a user included a null codepoint in their display name or avatar. ([\#12762](https://github.com/matrix-org/synapse/issues/12762)) - Delete events from the `federation_inbound_events_staging` table when a room is purged through the admin API. ([\#12770](https://github.com/matrix-org/synapse/issues/12770)) - Give a meaningful error message when a client tries to create a room with an invalid alias localpart. ([\#12779](https://github.com/matrix-org/synapse/issues/12779)) - Fix a bug introduced in 1.43.0 where a file (`providers.json`) was never closed. Contributed by @arkamar. ([\#12794](https://github.com/matrix-org/synapse/issues/12794)) - Fix a long-standing bug where finished log contexts would be re-started when failing to contact remote homeservers. ([\#12803](https://github.com/matrix-org/synapse/issues/12803)) - Fix a bug, introduced in Synapse 1.21.0, that led to media thumbnails being unusable before the index has been added in the background. ([\#12823](https://github.com/matrix-org/synapse/issues/12823)) Updates to the Docker image --------------------------- - Fix the docker file after a dependency update. ([\#12853](https://github.com/matrix-org/synapse/issues/12853)) Improved Documentation ---------------------- - Fix a typo in the Media Admin API documentation. ([\#12715](https://github.com/matrix-org/synapse/issues/12715)) - Update the OpenID Connect example for Keycloak to be compatible with newer versions of Keycloak. Contributed by @nhh. ([\#12727](https://github.com/matrix-org/synapse/issues/12727)) - Fix typo in server listener documentation. ([\#12742](https://github.com/matrix-org/synapse/issues/12742)) - Link to the configuration manual from the welcome page of the documentation. ([\#12748](https://github.com/matrix-org/synapse/issues/12748)) - Fix typo in `run_background_tasks_on` option name in configuration manual documentation. ([\#12749](https://github.com/matrix-org/synapse/issues/12749)) - Add information regarding the `rc_invites` ratelimiting option to the configuration docs. ([\#12759](https://github.com/matrix-org/synapse/issues/12759)) - Add documentation for cancellation of request processing. ([\#12761](https://github.com/matrix-org/synapse/issues/12761)) - Recommend using docker to run tests against postgres. ([\#12765](https://github.com/matrix-org/synapse/issues/12765)) - Add missing user directory endpoint from the generic worker documentation. Contributed by @olmari. ([\#12773](https://github.com/matrix-org/synapse/issues/12773)) - Add additional info to documentation of config option `cache_autotuning`. ([\#12776](https://github.com/matrix-org/synapse/issues/12776)) - Update configuration manual documentation to document size-related suffixes. ([\#12777](https://github.com/matrix-org/synapse/issues/12777)) - Fix invalid YAML syntax in the example documentation for the `url_preview_accept_language` config option. ([\#12785](https://github.com/matrix-org/synapse/issues/12785)) Deprecations and Removals ------------------------- - Require a body in POST requests to `/rooms/{roomId}/receipt/{receiptType}/{eventId}`, as required by the [Matrix specification](https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3roomsroomidreceiptreceipttypeeventid). This breaks compatibility with Element Android 1.2.0 and earlier: users of those clients will be unable to send read receipts. ([\#12709](https://github.com/matrix-org/synapse/issues/12709)) Internal Changes ---------------- - Improve event caching mechanism to avoid having multiple copies of an event in memory at a time. ([\#10533](https://github.com/matrix-org/synapse/issues/10533)) - Preparation for faster-room-join work: return subsets of room state which we already have, immediately. ([\#12498](https://github.com/matrix-org/synapse/issues/12498)) - Add `@cancellable` decorator, for use on endpoint methods that can be cancelled when clients disconnect. ([\#12586](https://github.com/matrix-org/synapse/issues/12586), [\#12588](https://github.com/matrix-org/synapse/issues/12588), [\#12630](https://github.com/matrix-org/synapse/issues/12630), [\#12694](https://github.com/matrix-org/synapse/issues/12694), [\#12698](https://github.com/matrix-org/synapse/issues/12698), [\#12699](https://github.com/matrix-org/synapse/issues/12699), [\#12700](https://github.com/matrix-org/synapse/issues/12700), [\#12705](https://github.com/matrix-org/synapse/issues/12705)) - Enable cancellation of `GET /rooms/$room_id/members`, `GET /rooms/$room_id/state` and `GET /rooms/$room_id/state/$event_type/*` requests. ([\#12708](https://github.com/matrix-org/synapse/issues/12708)) - Improve documentation of the `synapse.push` module. ([\#12676](https://github.com/matrix-org/synapse/issues/12676)) - Refactor functions to on `PushRuleEvaluatorForEvent`. ([\#12677](https://github.com/matrix-org/synapse/issues/12677)) - Preparation for database schema simplifications: stop writing to `event_reference_hashes`. ([\#12679](https://github.com/matrix-org/synapse/issues/12679)) - Remove code which updates unused database column `application_services_state.last_txn`. ([\#12680](https://github.com/matrix-org/synapse/issues/12680)) - Refactor `EventContext` class. ([\#12689](https://github.com/matrix-org/synapse/issues/12689)) - Remove an unneeded class in the push code. ([\#12691](https://github.com/matrix-org/synapse/issues/12691)) - Consolidate parsing of relation information from events. ([\#12693](https://github.com/matrix-org/synapse/issues/12693)) - Convert namespace class `Codes` into a string enum. ([\#12703](https://github.com/matrix-org/synapse/issues/12703)) - Optimize private read receipt filtering. ([\#12711](https://github.com/matrix-org/synapse/issues/12711)) - Drop the logging level of status messages for the URL preview cache expiry job from INFO to DEBUG. ([\#12720](https://github.com/matrix-org/synapse/issues/12720)) - Downgrade some OIDC errors to warnings in the logs, to reduce the noise of Sentry reports. ([\#12723](https://github.com/matrix-org/synapse/issues/12723)) - Update configs used by Complement to allow more invites/3PID validations during tests. ([\#12731](https://github.com/matrix-org/synapse/issues/12731)) - Tweak the mypy plugin so that `@cached` can accept `on_invalidate=None`. ([\#12769](https://github.com/matrix-org/synapse/issues/12769)) - Move methods that call `add_push_rule` to the `PushRuleStore` class. ([\#12772](https://github.com/matrix-org/synapse/issues/12772)) - Make handling of federation Authorization header (more) compliant with RFC7230. ([\#12774](https://github.com/matrix-org/synapse/issues/12774)) - Refactor `resolve_state_groups_for_events` to not pull out full state when no state resolution happens. ([\#12775](https://github.com/matrix-org/synapse/issues/12775)) - Do not keep going if there are 5 back-to-back background update failures. ([\#12781](https://github.com/matrix-org/synapse/issues/12781)) - Fix federation when using the demo scripts. ([\#12783](https://github.com/matrix-org/synapse/issues/12783)) - The `hash_password` script now fails when it is called without specifying a config file. Contributed by @jae1911. ([\#12789](https://github.com/matrix-org/synapse/issues/12789)) - Improve and fix type hints. ([\#12567](https://github.com/matrix-org/synapse/issues/12567), [\#12477](https://github.com/matrix-org/synapse/issues/12477), [\#12717](https://github.com/matrix-org/synapse/issues/12717), [\#12753](https://github.com/matrix-org/synapse/issues/12753), [\#12695](https://github.com/matrix-org/synapse/issues/12695), [\#12734](https://github.com/matrix-org/synapse/issues/12734), [\#12716](https://github.com/matrix-org/synapse/issues/12716), [\#12726](https://github.com/matrix-org/synapse/issues/12726), [\#12790](https://github.com/matrix-org/synapse/issues/12790), [\#12833](https://github.com/matrix-org/synapse/issues/12833)) - Update EventContext `get_current_event_ids` and `get_prev_event_ids` to accept state filters and update calls where possible. ([\#12791](https://github.com/matrix-org/synapse/issues/12791)) - Remove Caddy from the Synapse workers image used in Complement. ([\#12818](https://github.com/matrix-org/synapse/issues/12818)) - Add Complement's shared registration secret to the Complement worker image. This fixes tests that depend on it. ([\#12819](https://github.com/matrix-org/synapse/issues/12819)) - Support registering Application Services when running with workers under Complement. ([\#12826](https://github.com/matrix-org/synapse/issues/12826)) - Disable 'faster room join' Complement tests when testing against Synapse with workers. ([\#12842](https://github.com/matrix-org/synapse/issues/12842)) Synapse 1.59.1 (2022-05-18) =========================== This release fixes a long-standing issue which could prevent Synapse's user directory for updating properly. Bugfixes ---------------- - Fix a long-standing bug where the user directory background process would fail to make forward progress if a user included a null codepoint in their display name or avatar. Contributed by Nick @ Beeper. ([\#12762](https://github.com/matrix-org/synapse/issues/12762)) Synapse 1.59.0 (2022-05-17) =========================== Synapse 1.59 makes several changes that server administrators should be aware of: - Device name lookup over federation is now disabled by default. ([\#12616](https://github.com/matrix-org/synapse/issues/12616)) - The `synapse.app.appservice` and `synapse.app.user_dir` worker application types are now deprecated. ([\#12452](https://github.com/matrix-org/synapse/issues/12452), [\#12654](https://github.com/matrix-org/synapse/issues/12654)) See [the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1590) for more details. Additionally, this release removes the non-standard `m.login.jwt` login type from Synapse. It can be replaced with `org.matrix.login.jwt` for identical behaviour. This is only used if `jwt_config.enabled` is set to `true` in the configuration. ([\#12597](https://github.com/matrix-org/synapse/issues/12597)) Bugfixes -------- - Fix DB performance regression introduced in Synapse 1.59.0rc2. ([\#12745](https://github.com/matrix-org/synapse/issues/12745)) Synapse 1.59.0rc2 (2022-05-16) ============================== Note: this release candidate includes a performance regression which can cause database disruption. Other release candidates in the v1.59.0 series are not affected, and a fix will be included in the v1.59.0 final release. Bugfixes -------- - Fix a bug introduced in Synapse 1.58.0 where `/sync` would fail if the most recent event in a room was rejected. ([\#12729](https://github.com/matrix-org/synapse/issues/12729)) Synapse 1.59.0rc1 (2022-05-10) ============================== Features -------- - Support [MSC3266](https://github.com/matrix-org/matrix-doc/pull/3266) room summaries over federation. ([\#11507](https://github.com/matrix-org/synapse/issues/11507)) - Implement [changes](https://github.com/matrix-org/matrix-spec-proposals/pull/2285/commits/4a77139249c2e830aec3c7d6bd5501a514d1cc27) to [MSC2285 (hidden read receipts)](https://github.com/matrix-org/matrix-spec-proposals/pull/2285). Contributed by @SimonBrandner. ([\#12168](https://github.com/matrix-org/synapse/issues/12168), [\#12635](https://github.com/matrix-org/synapse/issues/12635), [\#12636](https://github.com/matrix-org/synapse/issues/12636), [\#12670](https://github.com/matrix-org/synapse/issues/12670)) - Extend the [module API](https://github.com/matrix-org/synapse/blob/release-v1.59/synapse/module_api/__init__.py) to allow modules to change actions for existing push rules of local users. ([\#12406](https://github.com/matrix-org/synapse/issues/12406)) - Add the `notify_appservices_from_worker` configuration option (superseding `notify_appservices`) to allow a generic worker to be designated as the worker to send traffic to Application Services. ([\#12452](https://github.com/matrix-org/synapse/issues/12452)) - Add the `update_user_directory_from_worker` configuration option (superseding `update_user_directory`) to allow a generic worker to be designated as the worker to update the user directory. ([\#12654](https://github.com/matrix-org/synapse/issues/12654)) - Add new `enable_registration_token_3pid_bypass` configuration option to allow registrations via token as an alternative to verifying a 3pid. ([\#12526](https://github.com/matrix-org/synapse/issues/12526)) - Implement [MSC3786](https://github.com/matrix-org/matrix-spec-proposals/pull/3786): Add a default push rule to ignore `m.room.server_acl` events. ([\#12601](https://github.com/matrix-org/synapse/issues/12601)) - Add new `mau_appservice_trial_days` configuration option to specify a different trial period for users registered via an appservice. ([\#12619](https://github.com/matrix-org/synapse/issues/12619)) Bugfixes -------- - Fix a bug introduced in Synapse 1.48.0 where the latest thread reply provided failed to include the proper bundled aggregations. ([\#12273](https://github.com/matrix-org/synapse/issues/12273)) - Fix a bug introduced in Synapse 1.22.0 where attempting to send a large amount of read receipts to an application service all at once would result in duplicate content and abnormally high memory usage. Contributed by Brad & Nick @ Beeper. ([\#12544](https://github.com/matrix-org/synapse/issues/12544)) - Fix a bug introduced in Synapse 1.57.0 which could cause `Failed to calculate hosts in room` errors to be logged for outbound federation. ([\#12570](https://github.com/matrix-org/synapse/issues/12570)) - Fix a long-standing bug where status codes would almost always get logged as `200!`, irrespective of the actual status code, when clients disconnect before a request has finished processing. ([\#12580](https://github.com/matrix-org/synapse/issues/12580)) - Fix race when persisting an event and deleting a room that could lead to outbound federation breaking. ([\#12594](https://github.com/matrix-org/synapse/issues/12594)) - Fix a bug introduced in Synapse 1.53.0 where bundled aggregations for annotations/edits were incorrectly calculated. ([\#12633](https://github.com/matrix-org/synapse/issues/12633)) - Fix a long-standing bug where rooms containing power levels with string values could not be upgraded. ([\#12657](https://github.com/matrix-org/synapse/issues/12657)) - Prevent memory leak from reoccurring when presence is disabled. ([\#12656](https://github.com/matrix-org/synapse/issues/12656)) Updates to the Docker image --------------------------- - Explicitly opt-in to using [BuildKit-specific features](https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md) in the Dockerfile. This fixes issues with building images in some GitLab CI environments. ([\#12541](https://github.com/matrix-org/synapse/issues/12541)) - Update the "Build docker images" GitHub Actions workflow to use `docker/metadata-action` to generate docker image tags, instead of a custom shell script. Contributed by @henryclw. ([\#12573](https://github.com/matrix-org/synapse/issues/12573)) Improved Documentation ---------------------- - Update SQL statements and replace use of old table `user_stats_historical` in docs for Synapse Admins. ([\#12536](https://github.com/matrix-org/synapse/issues/12536)) - Add missing linebreak to `pipx` install instructions. ([\#12579](https://github.com/matrix-org/synapse/issues/12579)) - Add information about the TCP replication module to docs. ([\#12621](https://github.com/matrix-org/synapse/issues/12621)) - Fixes to the formatting of `README.rst`. ([\#12627](https://github.com/matrix-org/synapse/issues/12627)) - Fix docs on how to run specific Complement tests using the `complement.sh` test runner. ([\#12664](https://github.com/matrix-org/synapse/issues/12664)) Deprecations and Removals ------------------------- - Remove unstable identifiers from [MSC3069](https://github.com/matrix-org/matrix-doc/pull/3069). ([\#12596](https://github.com/matrix-org/synapse/issues/12596)) - Remove the unspecified `m.login.jwt` login type and the unstable `uk.half-shot.msc2778.login.application_service` from [MSC2778](https://github.com/matrix-org/matrix-doc/pull/2778). ([\#12597](https://github.com/matrix-org/synapse/issues/12597)) - Synapse now requires at least Python 3.7.1 (up from 3.7.0), for compatibility with the latest Twisted trunk. ([\#12613](https://github.com/matrix-org/synapse/issues/12613)) Internal Changes ---------------- - Use supervisord to supervise Postgres and Caddy in the Complement image to reduce restart time. ([\#12480](https://github.com/matrix-org/synapse/issues/12480)) - Immediately retry any requests that have backed off when a server comes back online. ([\#12500](https://github.com/matrix-org/synapse/issues/12500)) - Use `make_awaitable` instead of `defer.succeed` for return values of mocks in tests. ([\#12505](https://github.com/matrix-org/synapse/issues/12505)) - Consistently check if an object is a `frozendict`. ([\#12564](https://github.com/matrix-org/synapse/issues/12564)) - Protect module callbacks with read semantics against cancellation. ([\#12568](https://github.com/matrix-org/synapse/issues/12568)) - Improve comments and error messages around access tokens. ([\#12577](https://github.com/matrix-org/synapse/issues/12577)) - Improve docstrings for the receipts store. ([\#12581](https://github.com/matrix-org/synapse/issues/12581)) - Use constants for read-receipts in tests. ([\#12582](https://github.com/matrix-org/synapse/issues/12582)) - Log status code of cancelled requests as 499 and avoid logging stack traces for them. ([\#12587](https://github.com/matrix-org/synapse/issues/12587), [\#12663](https://github.com/matrix-org/synapse/issues/12663)) - Remove special-case for `twisted` logger from default log config. ([\#12589](https://github.com/matrix-org/synapse/issues/12589)) - Use `getClientAddress` instead of the deprecated `getClientIP`. ([\#12599](https://github.com/matrix-org/synapse/issues/12599)) - Add link to documentation in Grafana Dashboard. ([\#12602](https://github.com/matrix-org/synapse/issues/12602)) - Reduce log spam when running multiple event persisters. ([\#12610](https://github.com/matrix-org/synapse/issues/12610)) - Add extra debug logging to federation sender. ([\#12614](https://github.com/matrix-org/synapse/issues/12614)) - Prevent remote homeservers from requesting local user device names by default. ([\#12616](https://github.com/matrix-org/synapse/issues/12616)) - Add a consistency check on events which we read from the database. ([\#12620](https://github.com/matrix-org/synapse/issues/12620)) - Remove use of the `constantly` library and switch to enums for `EventRedactBehaviour`. Contributed by @andrewdoh. ([\#12624](https://github.com/matrix-org/synapse/issues/12624)) - Remove unused code related to receipts. ([\#12632](https://github.com/matrix-org/synapse/issues/12632)) - Minor improvements to the scripts for running Synapse in worker mode under Complement. ([\#12637](https://github.com/matrix-org/synapse/issues/12637)) - Move `pympler` back in to the `all` extras. ([\#12652](https://github.com/matrix-org/synapse/issues/12652)) - Fix spelling of `M_UNRECOGNIZED` in comments. ([\#12665](https://github.com/matrix-org/synapse/issues/12665)) - Release script: confirm the commit to be tagged before tagging. ([\#12556](https://github.com/matrix-org/synapse/issues/12556)) - Fix a typo in the announcement text generated by the Synapse release development script. ([\#12612](https://github.com/matrix-org/synapse/issues/12612)) ### Typechecking - Fix scripts-dev to pass typechecking. ([\#12356](https://github.com/matrix-org/synapse/issues/12356)) - Add some type hints to datastore. ([\#12485](https://github.com/matrix-org/synapse/issues/12485)) - Remove unused `# type: ignore`s. ([\#12531](https://github.com/matrix-org/synapse/issues/12531)) - Allow unused `# type: ignore` comments in bleeding edge CI jobs. ([\#12576](https://github.com/matrix-org/synapse/issues/12576)) - Remove redundant lines of config from `mypy.ini`. ([\#12608](https://github.com/matrix-org/synapse/issues/12608)) - Update to mypy 0.950. ([\#12650](https://github.com/matrix-org/synapse/issues/12650)) - Use `Concatenate` to better annotate `_do_execute`. ([\#12666](https://github.com/matrix-org/synapse/issues/12666)) - Use `ParamSpec` to refine type hints. ([\#12667](https://github.com/matrix-org/synapse/issues/12667)) - Fix mypy against latest pillow stubs. ([\#12671](https://github.com/matrix-org/synapse/issues/12671)) Synapse 1.58.1 (2022-05-05) =========================== This patch release includes a fix to the Debian packages, installing the `systemd` and `cache_memory` extra package groups, which were incorrectly omitted in v1.58.0. This primarily prevented Synapse from starting when the `systemd.journal.JournalHandler` log handler was configured. See [#12631](https://github.com/matrix-org/synapse/issues/12631) for further information. Otherwise, no significant changes since 1.58.0. Synapse 1.58.0 (2022-05-03) =========================== As of this release, the groups/communities feature in Synapse is now disabled by default. See [\#11584](https://github.com/matrix-org/synapse/issues/11584) for details. As mentioned in [the upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#upgrading-to-v1580), this feature will be removed in Synapse 1.61. No significant changes since 1.58.0rc2. Synapse 1.58.0rc2 (2022-04-26) ============================== This release candidate fixes bugs related to Synapse 1.58.0rc1's logic for handling device list updates. Bugfixes -------- - Fix a bug introduced in Synapse 1.58.0rc1 where the main process could consume excessive amounts of CPU and memory while handling sentry logging failures. ([\#12554](https://github.com/matrix-org/synapse/issues/12554)) - Fix a bug introduced in Synapse 1.58.0rc1 where opentracing contexts were not correctly sent to whitelisted remote servers with device lists updates. ([\#12555](https://github.com/matrix-org/synapse/issues/12555)) Internal Changes ---------------- - Reduce unnecessary work when handling remote device list updates. ([\#12557](https://github.com/matrix-org/synapse/issues/12557)) Synapse 1.58.0rc1 (2022-04-26) ============================== Features -------- - Implement [MSC3383](https://github.com/matrix-org/matrix-spec-proposals/pull/3383) for including the destination in server-to-server authentication headers. Contributed by @Bubu and @jcgruenhage for Famedly. ([\#11398](https://github.com/matrix-org/synapse/issues/11398)) - Docker images and Debian packages from matrix.org now contain a locked set of Python dependencies, greatly improving build reproducibility. ([Board](https://github.com/orgs/matrix-org/projects/54), [\#11537](https://github.com/matrix-org/synapse/issues/11537)) - Enable processing of device list updates asynchronously. ([\#12365](https://github.com/matrix-org/synapse/issues/12365), [\#12465](https://github.com/matrix-org/synapse/issues/12465)) - Implement [MSC2815](https://github.com/matrix-org/matrix-spec-proposals/pull/2815) to allow room moderators to view redacted event content. Contributed by @tulir @ Beeper. ([\#12427](https://github.com/matrix-org/synapse/issues/12427)) - Build Debian packages for Ubuntu 22.04 "Jammy Jellyfish". ([\#12543](https://github.com/matrix-org/synapse/issues/12543)) Bugfixes -------- - Prevent a sync request from removing a user's busy presence status. ([\#12213](https://github.com/matrix-org/synapse/issues/12213)) - Fix bug with incremental sync missing events when rejoining/backfilling. Contributed by Nick @ Beeper. ([\#12319](https://github.com/matrix-org/synapse/issues/12319)) - Fix a long-standing bug which incorrectly caused `GET /_matrix/client/v3/rooms/{roomId}/event/{eventId}` to return edited events rather than the original. ([\#12476](https://github.com/matrix-org/synapse/issues/12476)) - Fix a bug introduced in Synapse 1.27.0 where the admin API for [deleting forward extremities](https://github.com/matrix-org/synapse/blob/erikj/fix_delete_event_response_count/docs/admin_api/rooms.md#deleting-forward-extremities) would always return a count of 1, no matter how many extremities were deleted. ([\#12496](https://github.com/matrix-org/synapse/issues/12496)) - Fix a long-standing bug where the image thumbnails embedded into email notifications were broken. ([\#12510](https://github.com/matrix-org/synapse/issues/12510)) - Fix a bug in the implementation of [MSC3202](https://github.com/matrix-org/matrix-spec-proposals/pull/3202) where Synapse would use the field name `device_unused_fallback_keys`, rather than `device_unused_fallback_key_types`. ([\#12520](https://github.com/matrix-org/synapse/issues/12520)) - Fix a bug introduced in Synapse 0.99.3 which could cause Synapse to consume large amounts of RAM when back-paginating in a large room. ([\#12522](https://github.com/matrix-org/synapse/issues/12522)) Improved Documentation ---------------------- - Fix rendering of the documentation site when using the 'print' feature. ([\#12340](https://github.com/matrix-org/synapse/issues/12340)) - Add a manual documenting config file options. ([\#12368](https://github.com/matrix-org/synapse/issues/12368), [\#12527](https://github.com/matrix-org/synapse/issues/12527)) - Update documentation to reflect that both the `run_background_tasks_on` option and the options for moving stream writers off of the main process are no longer experimental. ([\#12451](https://github.com/matrix-org/synapse/issues/12451)) - Update worker documentation and replace old `federation_reader` with `generic_worker`. ([\#12457](https://github.com/matrix-org/synapse/issues/12457)) - Strongly recommend [Poetry](https://python-poetry.org/) for development. ([\#12475](https://github.com/matrix-org/synapse/issues/12475)) - Add some example configurations for workers and update architectural diagram. ([\#12492](https://github.com/matrix-org/synapse/issues/12492)) - Fix a broken link in `README.rst`. ([\#12495](https://github.com/matrix-org/synapse/issues/12495)) - Add HAProxy delegation example with CORS headers to docs. ([\#12501](https://github.com/matrix-org/synapse/issues/12501)) - Remove extraneous comma in User Admin API's device deletion section so that the example JSON is actually valid and works. Contributed by @olmari. ([\#12533](https://github.com/matrix-org/synapse/issues/12533)) Deprecations and Removals ------------------------- - The groups/communities feature in Synapse is now disabled by default. ([\#12344](https://github.com/matrix-org/synapse/issues/12344)) - Remove unstable identifiers from [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#12382](https://github.com/matrix-org/synapse/issues/12382)) Internal Changes ---------------- - Preparation for faster-room-join work: start a background process to resynchronise the room state after a room join. ([\#12394](https://github.com/matrix-org/synapse/issues/12394)) - Preparation for faster-room-join work: Implement a tracking mechanism to allow functions to wait for full room state to arrive. ([\#12399](https://github.com/matrix-org/synapse/issues/12399)) - Remove an unstable identifier from [MSC3083](https://github.com/matrix-org/matrix-doc/pull/3083). ([\#12395](https://github.com/matrix-org/synapse/issues/12395)) - Run CI in the locked [Poetry](https://python-poetry.org/) environment, and remove corresponding `tox` jobs. ([\#12425](https://github.com/matrix-org/synapse/issues/12425), [\#12434](https://github.com/matrix-org/synapse/issues/12434), [\#12438](https://github.com/matrix-org/synapse/issues/12438), [\#12441](https://github.com/matrix-org/synapse/issues/12441), [\#12449](https://github.com/matrix-org/synapse/issues/12449), [\#12478](https://github.com/matrix-org/synapse/issues/12478), [\#12514](https://github.com/matrix-org/synapse/issues/12514), [\#12472](https://github.com/matrix-org/synapse/issues/12472)) - Change Mutual Rooms' `unstable_features` flag to `uk.half-shot.msc2666.mutual_rooms` which matches the current iteration of [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666). ([\#12445](https://github.com/matrix-org/synapse/issues/12445)) - Fix typo in the release script help string. ([\#12450](https://github.com/matrix-org/synapse/issues/12450)) - Fix a minor typo in the Debian changelogs generated by the release script. ([\#12497](https://github.com/matrix-org/synapse/issues/12497)) - Reintroduce the list of targets to the linter script, to avoid linting unwanted local-only directories during development. ([\#12455](https://github.com/matrix-org/synapse/issues/12455)) - Limit length of `device_id` to less than 512 characters. ([\#12454](https://github.com/matrix-org/synapse/issues/12454)) - Dockerfile-workers: reduce the amount we install in the image. ([\#12464](https://github.com/matrix-org/synapse/issues/12464)) - Dockerfile-workers: give the master its own log config. ([\#12466](https://github.com/matrix-org/synapse/issues/12466)) - complement-synapse-workers: factor out separate entry point script. ([\#12467](https://github.com/matrix-org/synapse/issues/12467)) - Back out experimental implementation of [MSC2314](https://github.com/matrix-org/matrix-spec-proposals/pull/2314). ([\#12474](https://github.com/matrix-org/synapse/issues/12474)) - Fix grammatical error in federation error response when the room version of a room is unknown. ([\#12483](https://github.com/matrix-org/synapse/issues/12483)) - Remove unnecessary configuration overrides in tests. ([\#12511](https://github.com/matrix-org/synapse/issues/12511)) - Refactor the relations code for clarity. ([\#12519](https://github.com/matrix-org/synapse/issues/12519)) - Add type hints so `docker` and `stubs` directories pass `mypy --disallow-untyped-defs`. ([\#12528](https://github.com/matrix-org/synapse/issues/12528)) - Update `delay_cancellation` to accept any awaitable, rather than just `Deferred`s. ([\#12468](https://github.com/matrix-org/synapse/issues/12468)) - Handle cancellation in `EventsWorkerStore._get_events_from_cache_or_db`. ([\#12529](https://github.com/matrix-org/synapse/issues/12529)) Synapse 1.57.1 (2022-04-20) =========================== This is a patch release that only affects the Docker image. It is only of interest to administrators using [the LDAP module][LDAPModule] to authenticate their users. If you have already upgraded to Synapse 1.57.0 without problem, then you have no need to upgrade to this patch release. [LDAPModule]: https://github.com/matrix-org/matrix-synapse-ldap3 Updates to the Docker image --------------------------- - Include version 0.2.0 of the Synapse LDAP Auth Provider module in the Docker image. This matches the version that was present in the Docker image for Synapse 1.56.0. ([\#12512](https://github.com/matrix-org/synapse/issues/12512)) Synapse 1.57.0 (2022-04-19) =========================== This version includes a [change](https://github.com/matrix-org/synapse/pull/12209) to the way transaction IDs are managed for application services. If your deployment uses a dedicated worker for application service traffic, **it must be stopped** when the database is upgraded (which normally happens when the main process is upgraded), to ensure the change is made safely without any risk of reusing transaction IDs. See the [upgrade notes](https://github.com/matrix-org/synapse/blob/v1.57.0rc1/docs/upgrade.md#upgrading-to-v1570) for more details. No significant changes since 1.57.0rc1. Synapse 1.57.0rc1 (2022-04-12) ============================== Features -------- - Send device list changes to application services as specified by [MSC3202](https://github.com/matrix-org/matrix-spec-proposals/pull/3202), using unstable prefixes. The `msc3202_transaction_extensions` experimental homeserver config option must be enabled and `org.matrix.msc3202: true` must be present in the application service registration file for device list changes to be sent. The "left" field is currently always empty. ([\#11881](https://github.com/matrix-org/synapse/issues/11881)) - Optimise fetching large quantities of missing room state over federation. ([\#12040](https://github.com/matrix-org/synapse/issues/12040)) - Offload the `update_client_ip` background job from the main process to the background worker, when using Redis-based replication. ([\#12251](https://github.com/matrix-org/synapse/issues/12251)) - Move `update_client_ip` background job from the main process to the background worker. ([\#12252](https://github.com/matrix-org/synapse/issues/12252)) - Add a module callback to react to new 3PID (email address, phone number) associations. ([\#12302](https://github.com/matrix-org/synapse/issues/12302)) - Add a configuration option to remove a specific set of rooms from sync responses. ([\#12310](https://github.com/matrix-org/synapse/issues/12310)) - Add a module callback to react to account data changes. ([\#12327](https://github.com/matrix-org/synapse/issues/12327)) - Allow setting user admin status using the module API. Contributed by Famedly. ([\#12341](https://github.com/matrix-org/synapse/issues/12341)) - Reduce overhead of restarting synchrotrons. ([\#12367](https://github.com/matrix-org/synapse/issues/12367), [\#12372](https://github.com/matrix-org/synapse/issues/12372)) - Update `/messages` to use historic pagination tokens if no `from` query parameter is given. ([\#12370](https://github.com/matrix-org/synapse/issues/12370)) - Add a module API for reading and writing global account data. ([\#12391](https://github.com/matrix-org/synapse/issues/12391)) - Support the stable `v1` endpoint for `/relations`, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#12403](https://github.com/matrix-org/synapse/issues/12403)) - Include bundled aggregations in search results ([MSC3666](https://github.com/matrix-org/matrix-spec-proposals/pull/3666)). ([\#12436](https://github.com/matrix-org/synapse/issues/12436)) Bugfixes -------- - Fix a long-standing bug where updates to the server notices user profile (display name/avatar URL) in the configuration would not be applied to pre-existing rooms. Contributed by Jorge Florian. ([\#12115](https://github.com/matrix-org/synapse/issues/12115)) - Fix a long-standing bug where events from ignored users were still considered for bundled aggregations. ([\#12235](https://github.com/matrix-org/synapse/issues/12235), [\#12338](https://github.com/matrix-org/synapse/issues/12338)) - Fix non-member state events not resolving for historical events when used in [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716) `/batch_send` `state_events_at_start`. ([\#12329](https://github.com/matrix-org/synapse/issues/12329)) - Fix a long-standing bug affecting URL previews that would generate a 500 response instead of a 403 if the previewed URL includes a port that isn't allowed by the relevant blacklist. ([\#12333](https://github.com/matrix-org/synapse/issues/12333)) - Default to `private` room visibility rather than `public` when a client does not specify one, according to spec. ([\#12350](https://github.com/matrix-org/synapse/issues/12350)) - Fix a spec compliance issue where requests to the `/publicRooms` federation API would specify `limit` as a string. ([\#12364](https://github.com/matrix-org/synapse/issues/12364), [\#12410](https://github.com/matrix-org/synapse/issues/12410)) - Fix a bug introduced in Synapse 1.49.0 which caused the `synapse_event_persisted_position` metric to have invalid values. ([\#12390](https://github.com/matrix-org/synapse/issues/12390)) Updates to the Docker image --------------------------- - Bundle locked versions of dependencies into the Docker image. ([\#12385](https://github.com/matrix-org/synapse/issues/12385), [\#12439](https://github.com/matrix-org/synapse/issues/12439)) - Fix up healthcheck generation for workers docker image. ([\#12405](https://github.com/matrix-org/synapse/issues/12405)) Improved Documentation ---------------------- - Clarify documentation for running SyTest against Synapse, including use of Postgres and worker mode. ([\#12271](https://github.com/matrix-org/synapse/issues/12271)) - Document the behaviour of `LoggingTransaction.call_after` and `LoggingTransaction.call_on_exception` methods when transactions are retried. ([\#12315](https://github.com/matrix-org/synapse/issues/12315)) - Update dead links in `check-newsfragment.sh` to point to the correct documentation URL. ([\#12331](https://github.com/matrix-org/synapse/issues/12331)) - Upgrade the version of `mdbook` in CI to 0.4.17. ([\#12339](https://github.com/matrix-org/synapse/issues/12339)) - Updates to the Room DAG concepts development document to clarify that we mark events as outliers because we don't have any state for them. ([\#12345](https://github.com/matrix-org/synapse/issues/12345)) - Update the link to Redis pub/sub documentation in the workers documentation. ([\#12369](https://github.com/matrix-org/synapse/issues/12369)) - Remove documentation for converting a legacy structured logging configuration to the new format. ([\#12392](https://github.com/matrix-org/synapse/issues/12392)) Deprecations and Removals ------------------------- - Remove the unused and unstable `/aggregations` endpoint which was removed from [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#12293](https://github.com/matrix-org/synapse/issues/12293)) Internal Changes ---------------- - Remove lingering unstable references to MSC2403 (knocking). ([\#12165](https://github.com/matrix-org/synapse/issues/12165)) - Avoid trying to calculate the state at outlier events. ([\#12191](https://github.com/matrix-org/synapse/issues/12191), [\#12316](https://github.com/matrix-org/synapse/issues/12316), [\#12330](https://github.com/matrix-org/synapse/issues/12330), [\#12332](https://github.com/matrix-org/synapse/issues/12332), [\#12409](https://github.com/matrix-org/synapse/issues/12409)) - Omit sending "offline" presence updates to application services after they are initially configured. ([\#12193](https://github.com/matrix-org/synapse/issues/12193)) - Switch to using a sequence to generate AS transaction IDs. Contributed by Nick @ Beeper. If running synapse with a dedicated appservice worker, this MUST be stopped before upgrading the main process and database. ([\#12209](https://github.com/matrix-org/synapse/issues/12209)) - Add missing type hints for storage. ([\#12267](https://github.com/matrix-org/synapse/issues/12267)) - Add missing type definitions for scripts in docker folder. Contributed by Jorge Florian. ([\#12280](https://github.com/matrix-org/synapse/issues/12280)) - Move [MSC2654](https://github.com/matrix-org/matrix-doc/pull/2654) support behind an experimental configuration flag. ([\#12295](https://github.com/matrix-org/synapse/issues/12295)) - Update docstrings to explain how to decipher live and historic pagination tokens. ([\#12317](https://github.com/matrix-org/synapse/issues/12317)) - Add ground work for speeding up device list updates for users in large numbers of rooms. ([\#12321](https://github.com/matrix-org/synapse/issues/12321)) - Fix typechecker problems exposed by signedjson 1.1.2. ([\#12326](https://github.com/matrix-org/synapse/issues/12326)) - Remove the `tox` packaging job: it will be redundant once #11537 lands. ([\#12334](https://github.com/matrix-org/synapse/issues/12334)) - Ignore `.envrc` for `direnv` users. ([\#12335](https://github.com/matrix-org/synapse/issues/12335)) - Remove the (broadly unused, dev-only) dockerfile for pg tests. ([\#12336](https://github.com/matrix-org/synapse/issues/12336)) - Remove redundant `get_success` calls in test code. ([\#12346](https://github.com/matrix-org/synapse/issues/12346)) - Add type annotations for `tests/unittest.py`. ([\#12347](https://github.com/matrix-org/synapse/issues/12347)) - Move single-use methods out of `TestCase`. ([\#12348](https://github.com/matrix-org/synapse/issues/12348)) - Remove broken and unused development scripts. ([\#12349](https://github.com/matrix-org/synapse/issues/12349), [\#12351](https://github.com/matrix-org/synapse/issues/12351), [\#12355](https://github.com/matrix-org/synapse/issues/12355)) - Convert `Linearizer` tests from `inlineCallbacks` to async. ([\#12353](https://github.com/matrix-org/synapse/issues/12353)) - Update docstrings for `ReadWriteLock` tests. ([\#12354](https://github.com/matrix-org/synapse/issues/12354)) - Refactor `Linearizer`, convert methods to async and use an async context manager. ([\#12357](https://github.com/matrix-org/synapse/issues/12357)) - Fix a long-standing bug where `Linearizer`s could get stuck if a cancellation were to happen at the wrong time. ([\#12358](https://github.com/matrix-org/synapse/issues/12358)) - Make `StreamToken.from_string` and `RoomStreamToken.parse` propagate cancellations instead of replacing them with `SynapseError`s. ([\#12366](https://github.com/matrix-org/synapse/issues/12366)) - Add type hints to tests files. ([\#12371](https://github.com/matrix-org/synapse/issues/12371)) - Allow specifying the Postgres database's port when running unit tests with Postgres. ([\#12376](https://github.com/matrix-org/synapse/issues/12376)) - Remove temporary pin of signedjson<=1.1.1 that was added in Synapse 1.56.0. ([\#12379](https://github.com/matrix-org/synapse/issues/12379)) - Add opentracing spans to calls to external cache. ([\#12380](https://github.com/matrix-org/synapse/issues/12380)) - Lay groundwork for using `poetry` to manage Synapse's dependencies. ([\#12381](https://github.com/matrix-org/synapse/issues/12381), [\#12407](https://github.com/matrix-org/synapse/issues/12407), [\#12412](https://github.com/matrix-org/synapse/issues/12412), [\#12418](https://github.com/matrix-org/synapse/issues/12418)) - Make missing `importlib_metadata` dependency explicit. ([\#12384](https://github.com/matrix-org/synapse/issues/12384), [\#12400](https://github.com/matrix-org/synapse/issues/12400)) - Update type annotations for compatibility with prometheus_client 0.14. ([\#12389](https://github.com/matrix-org/synapse/issues/12389)) - Remove support for the unstable identifiers specified in [MSC3288](https://github.com/matrix-org/matrix-doc/pull/3288). ([\#12398](https://github.com/matrix-org/synapse/issues/12398)) - Add missing type hints to configuration classes. ([\#12402](https://github.com/matrix-org/synapse/issues/12402)) - Add files used to build the Docker image used for complement testing into the Synapse repository. ([\#12404](https://github.com/matrix-org/synapse/issues/12404)) - Do not include groups in the sync response when disabled. ([\#12408](https://github.com/matrix-org/synapse/issues/12408)) - Improve type hints related to HTTP query parameters. ([\#12415](https://github.com/matrix-org/synapse/issues/12415)) - Stop maintaining a list of lint targets. ([\#12420](https://github.com/matrix-org/synapse/issues/12420)) - Make `synapse._scripts` pass type checks. ([\#12421](https://github.com/matrix-org/synapse/issues/12421), [\#12422](https://github.com/matrix-org/synapse/issues/12422)) - Add some type hints to datastore. ([\#12423](https://github.com/matrix-org/synapse/issues/12423)) - Enable certificate checking during complement tests. ([\#12435](https://github.com/matrix-org/synapse/issues/12435)) - Explicitly specify the `tls` extra for Twisted dependency. ([\#12444](https://github.com/matrix-org/synapse/issues/12444)) Synapse 1.56.0 (2022-04-05) =========================== Synapse will now refuse to start up if open registration is enabled, in order to help mitigate abuse across the federation. If you would like to provide registration to anyone, consider adding [email](https://github.com/matrix-org/synapse/blob/8a519f8abc6de772167c2cca101d22ee2052fafc/docs/sample_config.yaml#L1285), [recaptcha](https://matrix-org.github.io/synapse/v1.56/CAPTCHA_SETUP.html) or [token-based](https://matrix-org.github.io/synapse/v1.56/usage/administration/admin_api/registration_tokens.html) verification in order to prevent automated registration from bad actors. This check can be disabled by setting the `enable_registration_without_verification` option in your homeserver configuration file to `true`. More details are available in the [upgrade notes](https://matrix-org.github.io/synapse/v1.56/upgrade.html#open-registration-without-verification-is-now-disabled-by-default). Synapse will additionally now refuse to start when using PostgreSQL with a non-`C` values for `COLLATE` and `CTYPE`, unless the config flag `allow_unsafe_locale`, found in the database section of the configuration file, is set to `true`. See the [upgrade notes](https://matrix-org.github.io/synapse/v1.56/upgrade#change-in-behaviour-for-postgresql-databases-with-unsafe-locale) for details. Internal Changes ---------------- - Bump the version of `black` for compatibility with the latest `click` release. ([\#12320](https://github.com/matrix-org/synapse/issues/12320)) Synapse 1.56.0rc1 (2022-03-29) ============================== Features -------- - Allow modules to store already existing 3PID associations. ([\#12195](https://github.com/matrix-org/synapse/issues/12195)) - Allow registering server administrators using the module API. Contributed by Famedly. ([\#12250](https://github.com/matrix-org/synapse/issues/12250)) Bugfixes -------- - Fix a long-standing bug which caused the `/_matrix/federation/v1/state` and `/_matrix/federation/v1/state_ids` endpoints to return incorrect or invalid data when called for an event which we have stored as an "outlier". ([\#12087](https://github.com/matrix-org/synapse/issues/12087)) - Fix a long-standing bug where events from ignored users would still be considered for relations. ([\#12227](https://github.com/matrix-org/synapse/issues/12227), [\#12232](https://github.com/matrix-org/synapse/issues/12232), [\#12285](https://github.com/matrix-org/synapse/issues/12285)) - Fix a bug introduced in Synapse 1.53.0 where an unnecessary query could be performed when fetching bundled aggregations for threads. ([\#12228](https://github.com/matrix-org/synapse/issues/12228)) - Fix a bug introduced in Synapse 1.52.0 where admins could not deactivate and GDPR-erase a user if Synapse was configured with limits on avatars. ([\#12261](https://github.com/matrix-org/synapse/issues/12261)) Improved Documentation ---------------------- - Fix the link to the module documentation in the legacy spam checker warning message. ([\#12231](https://github.com/matrix-org/synapse/issues/12231)) - Remove incorrect prefixes in the worker documentation for some endpoints. ([\#12243](https://github.com/matrix-org/synapse/issues/12243)) - Correct `check_username_for_spam` annotations and docs. ([\#12246](https://github.com/matrix-org/synapse/issues/12246)) - Correct Authentik OpenID typo, and add notes on troubleshooting. Contributed by @IronTooch. ([\#12275](https://github.com/matrix-org/synapse/issues/12275)) - HAProxy reverse proxy guide update to stop sending IPv4-mapped address to homeserver. Contributed by @villepeh. ([\#12279](https://github.com/matrix-org/synapse/issues/12279)) Internal Changes ---------------- - Rename `shared_rooms` to `mutual_rooms` ([MSC2666](https://github.com/matrix-org/matrix-doc/pull/2666)), as per proposal changes. ([\#12036](https://github.com/matrix-org/synapse/issues/12036)) - Remove check on `update_user_directory` for shared rooms handler ([MSC2666](https://github.com/matrix-org/matrix-doc/pull/2666)), and update/expand documentation. ([\#12038](https://github.com/matrix-org/synapse/issues/12038)) - Refactor `create_new_client_event` to use a new parameter, `state_event_ids`, which accurately describes the usage with [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) instead of abusing `auth_event_ids`. ([\#12083](https://github.com/matrix-org/synapse/issues/12083), [\#12304](https://github.com/matrix-org/synapse/issues/12304)) - Refuse to start if registration is enabled without email, captcha, or token-based verification unless the new config flag `enable_registration_without_verification` is set to `true`. ([\#12091](https://github.com/matrix-org/synapse/issues/12091), [\#12322](https://github.com/matrix-org/synapse/issues/12322)) - Add tests for database transaction callbacks. ([\#12198](https://github.com/matrix-org/synapse/issues/12198)) - Handle cancellation in `DatabasePool.runInteraction`. ([\#12199](https://github.com/matrix-org/synapse/issues/12199)) - Add missing type hints for cache storage. ([\#12216](https://github.com/matrix-org/synapse/issues/12216)) - Add missing type hints for storage. ([\#12248](https://github.com/matrix-org/synapse/issues/12248), [\#12255](https://github.com/matrix-org/synapse/issues/12255)) - Add type hints to tests files. ([\#12224](https://github.com/matrix-org/synapse/issues/12224), [\#12240](https://github.com/matrix-org/synapse/issues/12240), [\#12256](https://github.com/matrix-org/synapse/issues/12256)) - Use type stubs for `psycopg2`. ([\#12269](https://github.com/matrix-org/synapse/issues/12269)) - Improve type annotations for `execute_values`. ([\#12311](https://github.com/matrix-org/synapse/issues/12311)) - Clean-up logic around rebasing URLs for URL image previews. ([\#12219](https://github.com/matrix-org/synapse/issues/12219)) - Use the `ignored_users` table in additional places instead of re-parsing the account data. ([\#12225](https://github.com/matrix-org/synapse/issues/12225)) - Refactor the relations endpoints to add a `RelationsHandler`. ([\#12237](https://github.com/matrix-org/synapse/issues/12237)) - Generate announcement links in the release script. ([\#12242](https://github.com/matrix-org/synapse/issues/12242)) - Improve error message when dependencies check finds a broken installation. ([\#12244](https://github.com/matrix-org/synapse/issues/12244)) - Compress metrics HTTP resource when enabled. Contributed by Nick @ Beeper. ([\#12258](https://github.com/matrix-org/synapse/issues/12258)) - Refuse to start if the PostgreSQL database has a non-`C` locale, unless the config flag `allow_unsafe_db_locale` is set to true. ([\#12262](https://github.com/matrix-org/synapse/issues/12262), [\#12288](https://github.com/matrix-org/synapse/issues/12288)) - Optionally include account validity expiration information to experimental [MSC3720](https://github.com/matrix-org/matrix-doc/pull/3720) account status responses. ([\#12266](https://github.com/matrix-org/synapse/issues/12266)) - Add a new cache `_get_membership_from_event_id` to speed up push rule calculations in large rooms. ([\#12272](https://github.com/matrix-org/synapse/issues/12272)) - Re-enable Complement concurrency in CI. ([\#12283](https://github.com/matrix-org/synapse/issues/12283)) - Remove unused test utilities. ([\#12291](https://github.com/matrix-org/synapse/issues/12291)) - Enhance logging for inbound federation events. ([\#12301](https://github.com/matrix-org/synapse/issues/12301)) - Fix compatibility with the recently-released Jinja 3.1. ([\#12313](https://github.com/matrix-org/synapse/issues/12313)) - Avoid trying to calculate the state at outlier events. ([\#12314](https://github.com/matrix-org/synapse/issues/12314)) Synapse 1.55.2 (2022-03-24) =========================== This patch version reverts the earlier fixes from Synapse 1.55.1, which could cause problems in certain deployments, and instead adds a cap to the version of Jinja to be installed. Again, this is to fix an incompatibility with version 3.1.0 of the [Jinja](https://pypi.org/project/Jinja2/) library, and again, deployments of Synapse using the `matrixdotorg/synapse` Docker image or Debian packages from packages.matrix.org are not affected. Internal Changes ---------------- - Pin Jinja to <3.1.0, as Synapse fails to start with Jinja 3.1.0. ([\#12297](https://github.com/matrix-org/synapse/issues/12297)) - Revert changes from 1.55.1 as they caused problems with older versions of Jinja ([\#12296](https://github.com/matrix-org/synapse/issues/12296)) Synapse 1.55.1 (2022-03-24) =========================== This is a patch release that fixes an incompatibility with version 3.1.0 of the [Jinja](https://pypi.org/project/Jinja2/) library, released on March 24th, 2022. Deployments of Synapse using the `matrixdotorg/synapse` Docker image or Debian packages from packages.matrix.org are not affected. Internal Changes ---------------- - Remove uses of the long-deprecated `jinja2.Markup` which would prevent Synapse from starting with Jinja 3.1.0 or above installed. ([\#12289](https://github.com/matrix-org/synapse/issues/12289)) Synapse 1.55.0 (2022-03-22) =========================== This release removes a workaround introduced in Synapse 1.50.0 for Mjolnir compatibility. **This breaks compatibility with Mjolnir 1.3.1 and earlier. ([\#11700](https://github.com/matrix-org/synapse/issues/11700))**; Mjolnir users should upgrade Mjolnir before upgrading Synapse to this version. This release also moves the location of the `synctl` script; see the [upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#synctl-script-has-been-moved) for more details. Internal Changes ---------------- - Tweak copy for default Single Sign-On account details template to better adhere to mobile app store guidelines. ([\#12265](https://github.com/matrix-org/synapse/issues/12265), [\#12260](https://github.com/matrix-org/synapse/issues/12260)) Synapse 1.55.0rc1 (2022-03-15) ============================== Features -------- - Add third-party rules callbacks `check_can_shutdown_room` and `check_can_deactivate_user`. ([\#12028](https://github.com/matrix-org/synapse/issues/12028)) - Improve performance of logging in for large accounts. ([\#12132](https://github.com/matrix-org/synapse/issues/12132)) - Add experimental env var `SYNAPSE_ASYNC_IO_REACTOR` that causes Synapse to use the asyncio reactor for Twisted. ([\#12135](https://github.com/matrix-org/synapse/issues/12135)) - Support the stable identifiers from [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440): threads. ([\#12151](https://github.com/matrix-org/synapse/issues/12151)) - Add a new Jinja2 template filter to extract the local part of an email address. ([\#12212](https://github.com/matrix-org/synapse/issues/12212)) Bugfixes -------- - Use the proper serialization format for bundled thread aggregations. The bug has existed since Synapse 1.48.0. ([\#12090](https://github.com/matrix-org/synapse/issues/12090)) - Fix a long-standing bug when redacting events with relations. ([\#12113](https://github.com/matrix-org/synapse/issues/12113), [\#12121](https://github.com/matrix-org/synapse/issues/12121), [\#12130](https://github.com/matrix-org/synapse/issues/12130), [\#12189](https://github.com/matrix-org/synapse/issues/12189)) - Fix a bug introduced in Synapse 1.7.2 whereby background updates are never run with the default background batch size. ([\#12157](https://github.com/matrix-org/synapse/issues/12157)) - Fix a bug where non-standard information was returned from the `/hierarchy` API. Introduced in Synapse 1.41.0. ([\#12175](https://github.com/matrix-org/synapse/issues/12175)) - Fix a bug introduced in Synapse 1.54.0 that broke background updates on sqlite homeservers while search was disabled. ([\#12215](https://github.com/matrix-org/synapse/issues/12215)) - Fix a long-standing bug when a `filter` argument with `event_fields` which did not include the `unsigned` field could result in a 500 error on `/sync`. ([\#12234](https://github.com/matrix-org/synapse/issues/12234)) Improved Documentation ---------------------- - Fix complexity checking config example in [Resource Constrained Devices](https://matrix-org.github.io/synapse/v1.54/other/running_synapse_on_single_board_computers.html) docs page. ([\#11998](https://github.com/matrix-org/synapse/issues/11998)) - Improve documentation for demo scripts. ([\#12143](https://github.com/matrix-org/synapse/issues/12143)) - Updates to the Room DAG concepts development document. ([\#12179](https://github.com/matrix-org/synapse/issues/12179)) - Document that the `typing`, `to_device`, `account_data`, `receipts`, and `presence` stream writer can only be used on a single worker. ([\#12196](https://github.com/matrix-org/synapse/issues/12196)) - Document that contributors can sign off privately by email. ([\#12204](https://github.com/matrix-org/synapse/issues/12204)) Deprecations and Removals ------------------------- - **Remove workaround introduced in Synapse 1.50.0 for Mjolnir compatibility. Breaks compatibility with Mjolnir 1.3.1 and earlier. ([\#11700](https://github.com/matrix-org/synapse/issues/11700))** - **`synctl` has been moved into into `synapse._scripts` and is exposed as an entry point; see [upgrade notes](https://github.com/matrix-org/synapse/blob/develop/docs/upgrade.md#synctl-script-has-been-moved). ([\#12140](https://github.com/matrix-org/synapse/issues/12140)) - Remove backwards compatibility with pagination tokens from the `/relations` and `/aggregations` endpoints generated from Synapse < v1.52.0. ([\#12138](https://github.com/matrix-org/synapse/issues/12138)) - The groups/communities feature in Synapse has been deprecated. ([\#12200](https://github.com/matrix-org/synapse/issues/12200)) Internal Changes ---------------- - Simplify the `ApplicationService` class' set of public methods related to interest checking. ([\#11915](https://github.com/matrix-org/synapse/issues/11915)) - Add config settings for background update parameters. ([\#11980](https://github.com/matrix-org/synapse/issues/11980)) - Correct type hints for txredis. ([\#12042](https://github.com/matrix-org/synapse/issues/12042)) - Limit the size of `aggregation_key` on annotations. ([\#12101](https://github.com/matrix-org/synapse/issues/12101)) - Add type hints to tests files. ([\#12108](https://github.com/matrix-org/synapse/issues/12108), [\#12146](https://github.com/matrix-org/synapse/issues/12146), [\#12207](https://github.com/matrix-org/synapse/issues/12207), [\#12208](https://github.com/matrix-org/synapse/issues/12208)) - Move scripts to Synapse package and expose as setuptools entry points. ([\#12118](https://github.com/matrix-org/synapse/issues/12118)) - Add support for cancellation to `ReadWriteLock`. ([\#12120](https://github.com/matrix-org/synapse/issues/12120)) - Fix data validation to compare to lists, not sequences. ([\#12128](https://github.com/matrix-org/synapse/issues/12128)) - Fix CI not attaching source distributions and wheels to the GitHub releases. ([\#12131](https://github.com/matrix-org/synapse/issues/12131)) - Remove unused mocks from `test_typing`. ([\#12136](https://github.com/matrix-org/synapse/issues/12136)) - Give `scripts-dev` scripts suffixes for neater CI config. ([\#12137](https://github.com/matrix-org/synapse/issues/12137)) - Move the snapcraft configuration file to `contrib`. ([\#12142](https://github.com/matrix-org/synapse/issues/12142)) - Enable [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) Complement tests in CI. ([\#12144](https://github.com/matrix-org/synapse/issues/12144)) - Enable [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) Complement tests in CI. ([\#12145](https://github.com/matrix-org/synapse/issues/12145)) - Add test for `ObservableDeferred`'s cancellation behaviour. ([\#12149](https://github.com/matrix-org/synapse/issues/12149)) - Use `ParamSpec` in type hints for `synapse.logging.context`. ([\#12150](https://github.com/matrix-org/synapse/issues/12150)) - Prune unused jobs from `tox` config. ([\#12152](https://github.com/matrix-org/synapse/issues/12152)) - Move CI checks out of tox, to facilitate a move to using poetry. ([\#12153](https://github.com/matrix-org/synapse/issues/12153)) - Avoid generating state groups for local out-of-band leaves. ([\#12154](https://github.com/matrix-org/synapse/issues/12154)) - Avoid trying to calculate the state at outlier events. ([\#12155](https://github.com/matrix-org/synapse/issues/12155), [\#12173](https://github.com/matrix-org/synapse/issues/12173), [\#12202](https://github.com/matrix-org/synapse/issues/12202)) - Fix some type annotations. ([\#12156](https://github.com/matrix-org/synapse/issues/12156)) - Add type hints for `ObservableDeferred` attributes. ([\#12159](https://github.com/matrix-org/synapse/issues/12159)) - Use a prebuilt Action for the `tests-done` CI job. ([\#12161](https://github.com/matrix-org/synapse/issues/12161)) - Reduce number of DB queries made during processing of `/sync`. ([\#12163](https://github.com/matrix-org/synapse/issues/12163)) - Add `delay_cancellation` utility function, which behaves like `stop_cancellation` but waits until the original `Deferred` resolves before raising a `CancelledError`. ([\#12180](https://github.com/matrix-org/synapse/issues/12180)) - Retry HTTP replication failures, this should prevent 502's when restarting stateful workers (main, event persisters, stream writers). Contributed by Nick @ Beeper. ([\#12182](https://github.com/matrix-org/synapse/issues/12182)) - Add cancellation support to `@cached` and `@cachedList` decorators. ([\#12183](https://github.com/matrix-org/synapse/issues/12183)) - Remove unused variables. ([\#12187](https://github.com/matrix-org/synapse/issues/12187)) - Add combined test for HTTP pusher and push rule. Contributed by Nick @ Beeper. ([\#12188](https://github.com/matrix-org/synapse/issues/12188)) - Rename `HomeServer.get_tcp_replication` to `get_replication_command_handler`. ([\#12192](https://github.com/matrix-org/synapse/issues/12192)) - Remove some dead code. ([\#12197](https://github.com/matrix-org/synapse/issues/12197)) - Fix a misleading comment in the function `check_event_for_spam`. ([\#12203](https://github.com/matrix-org/synapse/issues/12203)) - Remove unnecessary `pass` statements. ([\#12206](https://github.com/matrix-org/synapse/issues/12206)) - Update the SSO username picker template to comply with SIWA guidelines. ([\#12210](https://github.com/matrix-org/synapse/issues/12210)) - Improve code documentation for the typing stream over replication. ([\#12211](https://github.com/matrix-org/synapse/issues/12211)) Synapse 1.54.0 (2022-03-08) =========================== Please note that this will be the last release of Synapse that is compatible with Mjolnir 1.3.1 and earlier. Administrators of servers which have the Mjolnir module installed are advised to upgrade Mjolnir to version 1.3.2 or later. Bugfixes -------- - Fix a bug introduced in Synapse 1.54.0rc1 preventing the new module callbacks introduced in this release from being registered by modules. ([\#12141](https://github.com/matrix-org/synapse/issues/12141)) - Fix a bug introduced in Synapse 1.54.0rc1 where runtime dependency version checks would mistakenly check development dependencies if they were present and would not accept pre-release versions of dependencies. ([\#12129](https://github.com/matrix-org/synapse/issues/12129), [\#12177](https://github.com/matrix-org/synapse/issues/12177)) Internal Changes ---------------- - Update release script to insert the previous version when writing "No significant changes" line in the changelog. ([\#12127](https://github.com/matrix-org/synapse/issues/12127)) - Relax the version guard for "packaging" added in [\#12088](https://github.com/matrix-org/synapse/issues/12088). ([\#12166](https://github.com/matrix-org/synapse/issues/12166)) Synapse 1.54.0rc1 (2022-03-02) ============================== Features -------- - Add support for [MSC3202](https://github.com/matrix-org/matrix-doc/pull/3202): sending one-time key counts and fallback key usage states to Application Services. ([\#11617](https://github.com/matrix-org/synapse/issues/11617)) - Improve the generated URL previews for some web pages. Contributed by @AndrewRyanChama. ([\#11985](https://github.com/matrix-org/synapse/issues/11985)) - Track cache invalidations in Prometheus metrics, as already happens for cache eviction based on size or time. ([\#12000](https://github.com/matrix-org/synapse/issues/12000)) - Implement experimental support for [MSC3720](https://github.com/matrix-org/matrix-doc/pull/3720) (account status endpoints). ([\#12001](https://github.com/matrix-org/synapse/issues/12001), [\#12067](https://github.com/matrix-org/synapse/issues/12067)) - Enable modules to set a custom display name when registering a user. ([\#12009](https://github.com/matrix-org/synapse/issues/12009)) - Advertise Matrix 1.1 and 1.2 support on `/_matrix/client/versions`. ([\#12020](https://github.com/matrix-org/synapse/issues/12020), ([\#12022](https://github.com/matrix-org/synapse/issues/12022)) - Support only the stable identifier for [MSC3069](https://github.com/matrix-org/matrix-doc/pull/3069)'s `is_guest` on `/_matrix/client/v3/account/whoami`. ([\#12021](https://github.com/matrix-org/synapse/issues/12021)) - Use room version 9 as the default room version (per [MSC3589](https://github.com/matrix-org/matrix-doc/pull/3589)). ([\#12058](https://github.com/matrix-org/synapse/issues/12058)) - Add module callbacks to react to user deactivation status changes (i.e. deactivations and reactivations) and profile updates. ([\#12062](https://github.com/matrix-org/synapse/issues/12062)) Bugfixes -------- - Fix a bug introduced in Synapse 1.48.0 where an edit of the latest event in a thread would not be properly applied to the thread summary. ([\#11992](https://github.com/matrix-org/synapse/issues/11992)) - Fix long-standing bug where the `get_rooms_for_user` cache was not correctly invalidated for remote users when the server left a room. ([\#11999](https://github.com/matrix-org/synapse/issues/11999)) - Fix a 500 error with Postgres when looking backwards with the [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) `/timestamp_to_event?dir=b` endpoint. ([\#12024](https://github.com/matrix-org/synapse/issues/12024)) - Properly fix a long-standing bug where wrong data could be inserted into the `event_search` table when using SQLite. This could block running `synapse_port_db` with an `argument of type 'int' is not iterable` error. This bug was partially fixed by a change in Synapse 1.44.0. ([\#12037](https://github.com/matrix-org/synapse/issues/12037)) - Fix slow performance of `/logout` in some cases where refresh tokens are in use. The slowness existed since the initial implementation of refresh tokens in version 1.38.0. ([\#12056](https://github.com/matrix-org/synapse/issues/12056)) - Fix a long-standing bug where Synapse would make additional failing requests over federation for missing data. ([\#12077](https://github.com/matrix-org/synapse/issues/12077)) - Fix occasional `Unhandled error in Deferred` error message. ([\#12089](https://github.com/matrix-org/synapse/issues/12089)) - Fix a bug introduced in Synapse 1.51.0 where incoming federation transactions containing at least one EDU would be dropped if debug logging was enabled for `synapse.8631_debug`. ([\#12098](https://github.com/matrix-org/synapse/issues/12098)) - Fix a long-standing bug which could cause push notifications to malfunction if `use_frozen_dicts` was set in the configuration. ([\#12100](https://github.com/matrix-org/synapse/issues/12100)) - Fix an extremely rare, long-standing bug in `ReadWriteLock` that would cause an error when a newly unblocked writer completes instantly. ([\#12105](https://github.com/matrix-org/synapse/issues/12105)) - Make a `POST` to `/rooms//receipt/m.read/` only trigger a push notification if the count of unread messages is different to the one in the last successfully sent push. This reduces server load and load on the receiving device. ([\#11835](https://github.com/matrix-org/synapse/issues/11835)) Updates to the Docker image --------------------------- - The Docker image no longer automatically creates a temporary volume at `/data`. This is not expected to affect normal usage. ([\#11997](https://github.com/matrix-org/synapse/issues/11997)) - Use Python 3.9 in Docker images by default. ([\#12112](https://github.com/matrix-org/synapse/issues/12112)) Improved Documentation ---------------------- - Document support for the `to_device`, `account_data`, `receipts`, and `presence` stream writers for workers. ([\#11599](https://github.com/matrix-org/synapse/issues/11599)) - Explain the meaning of spam checker callbacks' return values. ([\#12003](https://github.com/matrix-org/synapse/issues/12003)) - Clarify information about external Identity Provider IDs. ([\#12004](https://github.com/matrix-org/synapse/issues/12004)) Deprecations and Removals ------------------------- - Deprecate using `synctl` with the config option `synctl_cache_factor` and print a warning if a user still uses this option. ([\#11865](https://github.com/matrix-org/synapse/issues/11865)) - Remove support for the legacy structured logging configuration (please see the the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#legacy-structured-logging-configuration-removal) if you are using `structured: true` in the Synapse configuration). ([\#12008](https://github.com/matrix-org/synapse/issues/12008)) - Drop support for [MSC3283](https://github.com/matrix-org/matrix-doc/pull/3283) unstable flags now that the stable flags are supported. ([\#12018](https://github.com/matrix-org/synapse/issues/12018)) - Remove the unstable `/spaces` endpoint from [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946). ([\#12073](https://github.com/matrix-org/synapse/issues/12073)) Internal Changes ---------------- - Make the `get_room_version` method use `get_room_version_id` to benefit from caching. ([\#11808](https://github.com/matrix-org/synapse/issues/11808)) - Remove unnecessary condition on knock -> leave auth rule check. ([\#11900](https://github.com/matrix-org/synapse/issues/11900)) - Add tests for device list changes between local users. ([\#11972](https://github.com/matrix-org/synapse/issues/11972)) - Optimise calculating `device_list` changes in `/sync`. ([\#11974](https://github.com/matrix-org/synapse/issues/11974)) - Add missing type hints to storage classes. ([\#11984](https://github.com/matrix-org/synapse/issues/11984)) - Refactor the search code for improved readability. ([\#11991](https://github.com/matrix-org/synapse/issues/11991)) - Move common deduplication code down into `_auth_and_persist_outliers`. ([\#11994](https://github.com/matrix-org/synapse/issues/11994)) - Limit concurrent joins from applications services. ([\#11996](https://github.com/matrix-org/synapse/issues/11996)) - Preparation for faster-room-join work: when parsing the `send_join` response, get the `m.room.create` event from `state`, not `auth_chain`. ([\#12005](https://github.com/matrix-org/synapse/issues/12005), [\#12039](https://github.com/matrix-org/synapse/issues/12039)) - Preparation for faster-room-join work: parse MSC3706 fields in send_join response. ([\#12011](https://github.com/matrix-org/synapse/issues/12011)) - Preparation for faster-room-join work: persist information on which events and rooms have partial state to the database. ([\#12012](https://github.com/matrix-org/synapse/issues/12012)) - Preparation for faster-room-join work: Support for calling `/federation/v1/state` on a remote server. ([\#12013](https://github.com/matrix-org/synapse/issues/12013)) - Configure `tox` to use `venv` rather than `virtualenv`. ([\#12015](https://github.com/matrix-org/synapse/issues/12015)) - Fix bug in `StateFilter.return_expanded()` and add some tests. ([\#12016](https://github.com/matrix-org/synapse/issues/12016)) - Use Matrix v1.1 endpoints (`/_matrix/client/v3/auth/...`) in fallback auth HTML forms. ([\#12019](https://github.com/matrix-org/synapse/issues/12019)) - Update the `olddeps` CI job to use an old version of `markupsafe`. ([\#12025](https://github.com/matrix-org/synapse/issues/12025)) - Upgrade Mypy to version 0.931. ([\#12030](https://github.com/matrix-org/synapse/issues/12030)) - Remove legacy `HomeServer.get_datastore()`. ([\#12031](https://github.com/matrix-org/synapse/issues/12031), [\#12070](https://github.com/matrix-org/synapse/issues/12070)) - Minor typing fixes. ([\#12034](https://github.com/matrix-org/synapse/issues/12034), [\#12069](https://github.com/matrix-org/synapse/issues/12069)) - After joining a room, create a dedicated logcontext to process the queued events. ([\#12041](https://github.com/matrix-org/synapse/issues/12041)) - Tidy up GitHub Actions config which builds distributions for PyPI. ([\#12051](https://github.com/matrix-org/synapse/issues/12051)) - Move configuration out of `setup.cfg`. ([\#12052](https://github.com/matrix-org/synapse/issues/12052), [\#12059](https://github.com/matrix-org/synapse/issues/12059)) - Fix error message when a worker process fails to talk to another worker process. ([\#12060](https://github.com/matrix-org/synapse/issues/12060)) - Fix using the `complement.sh` script without specifying a directory or a branch. Contributed by Nico on behalf of Famedly. ([\#12063](https://github.com/matrix-org/synapse/issues/12063)) - Add type hints to `tests/rest/client`. ([\#12066](https://github.com/matrix-org/synapse/issues/12066), [\#12072](https://github.com/matrix-org/synapse/issues/12072), [\#12084](https://github.com/matrix-org/synapse/issues/12084), [\#12094](https://github.com/matrix-org/synapse/issues/12094)) - Add some logging to `/sync` to try and track down #11916. ([\#12068](https://github.com/matrix-org/synapse/issues/12068)) - Inspect application dependencies using `importlib.metadata` or its backport. ([\#12088](https://github.com/matrix-org/synapse/issues/12088)) - Use `assertEqual` instead of the deprecated `assertEquals` in test code. ([\#12092](https://github.com/matrix-org/synapse/issues/12092)) - Move experimental support for [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440) to `/versions`. ([\#12099](https://github.com/matrix-org/synapse/issues/12099)) - Add `stop_cancellation` utility function to stop `Deferred`s from being cancelled. ([\#12106](https://github.com/matrix-org/synapse/issues/12106)) - Improve exception handling for concurrent execution. ([\#12109](https://github.com/matrix-org/synapse/issues/12109)) - Advertise support for Python 3.10 in packaging files. ([\#12111](https://github.com/matrix-org/synapse/issues/12111)) - Move CI checks out of tox, to facilitate a move to using poetry. ([\#12119](https://github.com/matrix-org/synapse/issues/12119)) Synapse 1.53.0 (2022-02-22) =========================== No significant changes since 1.53.0rc1. Synapse 1.53.0rc1 (2022-02-15) ============================== Features -------- - Add experimental support for sending to-device messages to application services, as specified by [MSC2409](https://github.com/matrix-org/matrix-doc/pull/2409). ([\#11215](https://github.com/matrix-org/synapse/issues/11215), [\#11966](https://github.com/matrix-org/synapse/issues/11966)) - Add a background database update to purge account data for deactivated users. ([\#11655](https://github.com/matrix-org/synapse/issues/11655)) - Experimental support for [MSC3666](https://github.com/matrix-org/matrix-doc/pull/3666): including bundled aggregations in server side search results. ([\#11837](https://github.com/matrix-org/synapse/issues/11837)) - Enable cache time-based expiry by default. The `expiry_time` config flag has been superseded by `expire_caches` and `cache_entry_ttl`. ([\#11849](https://github.com/matrix-org/synapse/issues/11849)) - Add a callback to allow modules to allow or forbid a 3PID (email address, phone number) from being associated to a local account. ([\#11854](https://github.com/matrix-org/synapse/issues/11854)) - Stabilize support and remove unstable endpoints for [MSC3231](https://github.com/matrix-org/matrix-doc/pull/3231). Clients must switch to the stable identifier and endpoint. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#stablisation-of-msc3231) for more information. ([\#11867](https://github.com/matrix-org/synapse/issues/11867)) - Allow modules to retrieve the current instance's server name and worker name. ([\#11868](https://github.com/matrix-org/synapse/issues/11868)) - Use a dedicated configurable rate limiter for 3PID invites. ([\#11892](https://github.com/matrix-org/synapse/issues/11892)) - Support the stable API endpoint for [MSC3283](https://github.com/matrix-org/matrix-doc/pull/3283): new settings in `/capabilities` endpoint. ([\#11933](https://github.com/matrix-org/synapse/issues/11933), [\#11989](https://github.com/matrix-org/synapse/issues/11989)) - Support the `dir` parameter on the `/relations` endpoint, per [MSC3715](https://github.com/matrix-org/matrix-doc/pull/3715). ([\#11941](https://github.com/matrix-org/synapse/issues/11941)) - Experimental implementation of [MSC3706](https://github.com/matrix-org/matrix-doc/pull/3706): extensions to `/send_join` to support reduced response size. ([\#11967](https://github.com/matrix-org/synapse/issues/11967)) Bugfixes -------- - Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) historical messages backfilling in random order on remote homeservers. ([\#11114](https://github.com/matrix-org/synapse/issues/11114)) - Fix a bug introduced in Synapse 1.51.0 where incoming federation transactions containing at least one EDU would be dropped if debug logging was enabled for `synapse.8631_debug`. ([\#11890](https://github.com/matrix-org/synapse/issues/11890)) - Fix a long-standing bug where some unknown endpoints would return HTML error pages instead of JSON `M_UNRECOGNIZED` errors. ([\#11930](https://github.com/matrix-org/synapse/issues/11930)) - Implement an allow list of content types for which we will attempt to preview a URL. This prevents Synapse from making useless longer-lived connections to streaming media servers. ([\#11936](https://github.com/matrix-org/synapse/issues/11936)) - Fix a long-standing bug where pagination tokens from `/sync` and `/messages` could not be provided to the `/relations` API. ([\#11952](https://github.com/matrix-org/synapse/issues/11952)) - Require that modules register their callbacks using keyword arguments. ([\#11975](https://github.com/matrix-org/synapse/issues/11975)) - Fix a long-standing bug where `M_WRONG_ROOM_KEYS_VERSION` errors would not include the specced `current_version` field. ([\#11988](https://github.com/matrix-org/synapse/issues/11988)) Improved Documentation ---------------------- - Fix typo in User Admin API: unpind -> unbind. ([\#11859](https://github.com/matrix-org/synapse/issues/11859)) - Document images returned by the User List Media Admin API can include those generated by URL previews. ([\#11862](https://github.com/matrix-org/synapse/issues/11862)) - Remove outdated MSC1711 FAQ document. ([\#11907](https://github.com/matrix-org/synapse/issues/11907)) - Correct the structured logging configuration example. Contributed by Brad Jones. ([\#11946](https://github.com/matrix-org/synapse/issues/11946)) - Add information on the Synapse release cycle. ([\#11954](https://github.com/matrix-org/synapse/issues/11954)) - Fix broken link in the README to the admin API for password reset. ([\#11955](https://github.com/matrix-org/synapse/issues/11955)) Deprecations and Removals ------------------------- - Drop support for `webclient` listeners and configuring `web_client_location` to a non-HTTP(S) URL. Deprecated configurations are a configuration error. ([\#11895](https://github.com/matrix-org/synapse/issues/11895)) - Remove deprecated `user_may_create_room_with_invites` spam checker callback. See the [upgrade notes](https://matrix-org.github.io/synapse/latest/upgrade.html#removal-of-user_may_create_room_with_invites) for more information. ([\#11950](https://github.com/matrix-org/synapse/issues/11950)) - No longer build `.deb` packages for Ubuntu 21.04 Hirsute Hippo, which has now EOLed. ([\#11961](https://github.com/matrix-org/synapse/issues/11961)) Internal Changes ---------------- - Enhance user registration test helpers to make them more useful for tests involving application services and devices. ([\#11615](https://github.com/matrix-org/synapse/issues/11615), [\#11616](https://github.com/matrix-org/synapse/issues/11616)) - Improve performance when fetching bundled aggregations for multiple events. ([\#11660](https://github.com/matrix-org/synapse/issues/11660), [\#11752](https://github.com/matrix-org/synapse/issues/11752)) - Fix type errors introduced by new annotations in the Prometheus Client library. ([\#11832](https://github.com/matrix-org/synapse/issues/11832)) - Add missing type hints to replication code. ([\#11856](https://github.com/matrix-org/synapse/issues/11856), [\#11938](https://github.com/matrix-org/synapse/issues/11938)) - Ensure that `opentracing` scopes are activated and closed at the right time. ([\#11869](https://github.com/matrix-org/synapse/issues/11869)) - Improve opentracing for incoming federation requests. ([\#11870](https://github.com/matrix-org/synapse/issues/11870)) - Improve internal docstrings in `synapse.util.caches`. ([\#11876](https://github.com/matrix-org/synapse/issues/11876)) - Do not needlessly clear the `get_users_in_room` and `get_users_in_room_with_profiles` caches when any room state changes. ([\#11878](https://github.com/matrix-org/synapse/issues/11878)) - Convert `ApplicationServiceTestCase` to use `simple_async_mock`. ([\#11880](https://github.com/matrix-org/synapse/issues/11880)) - Remove experimental changes to the default push rules which were introduced in Synapse 1.19.0 but never enabled. ([\#11884](https://github.com/matrix-org/synapse/issues/11884)) - Disable coverage calculation for olddeps build. ([\#11888](https://github.com/matrix-org/synapse/issues/11888)) - Preparation to support sending device list updates to application services. ([\#11905](https://github.com/matrix-org/synapse/issues/11905)) - Add a test that checks users receive their own device list updates down `/sync`. ([\#11909](https://github.com/matrix-org/synapse/issues/11909)) - Run Complement tests sequentially. ([\#11910](https://github.com/matrix-org/synapse/issues/11910)) - Various refactors to the application service notifier code. ([\#11911](https://github.com/matrix-org/synapse/issues/11911), [\#11912](https://github.com/matrix-org/synapse/issues/11912)) - Tests: replace mocked `Authenticator` with the real thing. ([\#11913](https://github.com/matrix-org/synapse/issues/11913)) - Various refactors to the typing notifications code. ([\#11914](https://github.com/matrix-org/synapse/issues/11914)) - Use the proper type for the `Content-Length` header in the `UploadResource`. ([\#11927](https://github.com/matrix-org/synapse/issues/11927)) - Remove an unnecessary ignoring of type hints due to fixes in upstream packages. ([\#11939](https://github.com/matrix-org/synapse/issues/11939)) - Add missing type hints. ([\#11953](https://github.com/matrix-org/synapse/issues/11953)) - Fix an import cycle in `synapse.event_auth`. ([\#11965](https://github.com/matrix-org/synapse/issues/11965)) - Unpin `frozendict` but exclude the known bad version 2.1.2. ([\#11969](https://github.com/matrix-org/synapse/issues/11969)) - Prepare for rename of default Complement branch. ([\#11971](https://github.com/matrix-org/synapse/issues/11971)) - Fetch Synapse's version using a helper from `matrix-common`. ([\#11979](https://github.com/matrix-org/synapse/issues/11979)) Synapse 1.52.0 (2022-02-08) =========================== No significant changes since 1.52.0rc1. Note that [Twisted 22.1.0](https://github.com/twisted/twisted/releases/tag/twisted-22.1.0) has recently been released, which fixes a [security issue](https://github.com/twisted/twisted/security/advisories/GHSA-92x2-jw7w-xvvx) within the Twisted library. We do not believe Synapse is affected by this vulnerability, though we advise server administrators who installed Synapse via pip to upgrade Twisted with `pip install --upgrade Twisted treq` as a matter of good practice. The Docker image `matrixdotorg/synapse` and the Debian packages from `packages.matrix.org` are using the updated library. Synapse 1.52.0rc1 (2022-02-01) ============================== Features -------- - Remove account data (including client config, push rules and ignored users) upon user deactivation. ([\#11621](https://github.com/matrix-org/synapse/issues/11621), [\#11788](https://github.com/matrix-org/synapse/issues/11788), [\#11789](https://github.com/matrix-org/synapse/issues/11789)) - Add an admin API to reset connection timeouts for remote server. ([\#11639](https://github.com/matrix-org/synapse/issues/11639)) - Add an admin API to get a list of rooms that federate with a given remote homeserver. ([\#11658](https://github.com/matrix-org/synapse/issues/11658)) - Add a config flag to inhibit `M_USER_IN_USE` during registration. ([\#11743](https://github.com/matrix-org/synapse/issues/11743)) - Add a module callback to set username at registration. ([\#11790](https://github.com/matrix-org/synapse/issues/11790)) - Allow configuring a maximum file size as well as a list of allowed content types for avatars. ([\#11846](https://github.com/matrix-org/synapse/issues/11846)) Bugfixes -------- - Include the bundled aggregations in the `/sync` response, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11612](https://github.com/matrix-org/synapse/issues/11612)) - Fix a long-standing bug when previewing Reddit URLs which do not contain an image. ([\#11767](https://github.com/matrix-org/synapse/issues/11767)) - Fix a long-standing bug that media streams could cause long-lived connections when generating URL previews. ([\#11784](https://github.com/matrix-org/synapse/issues/11784)) - Include a `prev_content` field in state events sent to Application Services. Contributed by @totallynotvaishnav. ([\#11798](https://github.com/matrix-org/synapse/issues/11798)) - Fix a bug introduced in Synapse 0.33.3 causing requests to sometimes log strings such as `HTTPStatus.OK` instead of integer status codes. ([\#11827](https://github.com/matrix-org/synapse/issues/11827)) Improved Documentation ---------------------- - Update pypi installation docs to indicate that we now support Python 3.10. ([\#11820](https://github.com/matrix-org/synapse/issues/11820)) - Add missing steps to the contribution submission process in the documentation. Contributed by @sequentialread. ([\#11821](https://github.com/matrix-org/synapse/issues/11821)) - Remove not needed old table of contents in documentation. ([\#11860](https://github.com/matrix-org/synapse/issues/11860)) - Consolidate the `access_token` information at the top of each relevant page in the Admin API documentation. ([\#11861](https://github.com/matrix-org/synapse/issues/11861)) Deprecations and Removals ------------------------- - Drop support for Python 3.6, which is EOL. ([\#11683](https://github.com/matrix-org/synapse/issues/11683)) - Remove the `experimental_msc1849_support_enabled` flag as the features are now stable. ([\#11843](https://github.com/matrix-org/synapse/issues/11843)) Internal Changes ---------------- - Preparation for database schema simplifications: add `state_key` and `rejection_reason` columns to `events` table. ([\#11792](https://github.com/matrix-org/synapse/issues/11792)) - Add `FrozenEvent.get_state_key` and use it in a couple of places. ([\#11793](https://github.com/matrix-org/synapse/issues/11793)) - Preparation for database schema simplifications: stop reading from `event_reference_hashes`. ([\#11794](https://github.com/matrix-org/synapse/issues/11794)) - Drop unused table `public_room_list_stream`. ([\#11795](https://github.com/matrix-org/synapse/issues/11795)) - Preparation for reducing Postgres serialization errors: allow setting transaction isolation level. Contributed by Nick @ Beeper. ([\#11799](https://github.com/matrix-org/synapse/issues/11799), [\#11847](https://github.com/matrix-org/synapse/issues/11847)) - Docker: skip the initial amd64-only build and go straight to multiarch. ([\#11810](https://github.com/matrix-org/synapse/issues/11810)) - Run Complement on the Github Actions VM and not inside a Docker container. ([\#11811](https://github.com/matrix-org/synapse/issues/11811)) - Log module names at startup. ([\#11813](https://github.com/matrix-org/synapse/issues/11813)) - Improve type safety of bundled aggregations code. ([\#11815](https://github.com/matrix-org/synapse/issues/11815)) - Correct a type annotation in the event validation logic. ([\#11817](https://github.com/matrix-org/synapse/issues/11817), [\#11830](https://github.com/matrix-org/synapse/issues/11830)) - Minor updates and documentation for database schema delta files. ([\#11823](https://github.com/matrix-org/synapse/issues/11823)) - Workaround a type annotation problem in `prometheus_client` 0.13.0. ([\#11834](https://github.com/matrix-org/synapse/issues/11834)) - Minor performance improvement in room state lookup. ([\#11836](https://github.com/matrix-org/synapse/issues/11836)) - Fix some indentation inconsistencies in the sample config. ([\#11838](https://github.com/matrix-org/synapse/issues/11838)) - Add type hints to `tests/rest/admin`. ([\#11851](https://github.com/matrix-org/synapse/issues/11851)) Synapse 1.51.0 (2022-01-25) =========================== No significant changes since 1.51.0rc2. Synapse 1.51.0 deprecates `webclient` listeners and non-HTTP(S) `web_client_location`s. Support for these will be removed in Synapse 1.53.0, at which point Synapse will not be capable of directly serving a web client for Matrix. See the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1510). Synapse 1.51.0rc2 (2022-01-24) ============================== Bugfixes -------- - Fix a bug introduced in Synapse 1.40.0 that caused Synapse to fail to process incoming federation traffic after handling a large amount of events in a v1 room. ([\#11806](https://github.com/matrix-org/synapse/issues/11806)) Synapse 1.50.2 (2022-01-24) =========================== This release includes the same bugfix as Synapse 1.51.0rc2. Bugfixes -------- - Fix a bug introduced in Synapse 1.40.0 that caused Synapse to fail to process incoming federation traffic after handling a large amount of events in a v1 room. ([\#11806](https://github.com/matrix-org/synapse/issues/11806)) Synapse 1.51.0rc1 (2022-01-21) ============================== Features -------- - Add `track_puppeted_user_ips` config flag to record client IP addresses against puppeted users, and include the puppeted users in monthly active user counts. ([\#11561](https://github.com/matrix-org/synapse/issues/11561), [\#11749](https://github.com/matrix-org/synapse/issues/11749), [\#11757](https://github.com/matrix-org/synapse/issues/11757)) - Include whether the requesting user has participated in a thread when generating a summary for [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440). ([\#11577](https://github.com/matrix-org/synapse/issues/11577)) - Return an `M_FORBIDDEN` error code instead of `M_UNKNOWN` when a spam checker module prevents a user from creating a room. ([\#11672](https://github.com/matrix-org/synapse/issues/11672)) - Add a flag to the `synapse_review_recent_signups` script to ignore and filter appservice users. ([\#11675](https://github.com/matrix-org/synapse/issues/11675), [\#11770](https://github.com/matrix-org/synapse/issues/11770)) Bugfixes -------- - Fix a long-standing issue which could cause Synapse to incorrectly accept data in the unsigned field of events received over federation. ([\#11530](https://github.com/matrix-org/synapse/issues/11530)) - Fix a long-standing bug where Synapse wouldn't cache a response indicating that a remote user has no devices. ([\#11587](https://github.com/matrix-org/synapse/issues/11587)) - Fix an error that occurs whilst trying to get the federation status of a destination server that was working normally. This admin API was newly introduced in Synapse 1.49.0. ([\#11593](https://github.com/matrix-org/synapse/issues/11593)) - Fix bundled aggregations not being included in the `/sync` response, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11612](https://github.com/matrix-org/synapse/issues/11612), [\#11659](https://github.com/matrix-org/synapse/issues/11659), [\#11791](https://github.com/matrix-org/synapse/issues/11791)) - Fix the `/_matrix/client/v1/room/{roomId}/hierarchy` endpoint returning incorrect fields which have been present since Synapse 1.49.0. ([\#11667](https://github.com/matrix-org/synapse/issues/11667)) - Fix preview of some GIF URLs (like tenor.com). Contributed by Philippe Daouadi. ([\#11669](https://github.com/matrix-org/synapse/issues/11669)) - Fix a bug where only the first 50 rooms from a space were returned from the `/hierarchy` API. This has existed since the introduction of the API in Synapse 1.41.0. ([\#11695](https://github.com/matrix-org/synapse/issues/11695)) - Fix a bug introduced in Synapse 1.18.0 where password reset and address validation emails would not be sent if their subject was configured to use the 'app' template variable. Contributed by @br4nnigan. ([\#11710](https://github.com/matrix-org/synapse/issues/11710), [\#11745](https://github.com/matrix-org/synapse/issues/11745)) - Make the 'List Rooms' Admin API sort stable. Contributed by Daniël Sonck. ([\#11737](https://github.com/matrix-org/synapse/issues/11737)) - Fix a long-standing bug where space hierarchy over federation would only work correctly some of the time. ([\#11775](https://github.com/matrix-org/synapse/issues/11775)) - Fix a bug introduced in Synapse 1.46.0 that prevented `on_logged_out` module callbacks from being correctly awaited by Synapse. ([\#11786](https://github.com/matrix-org/synapse/issues/11786)) Improved Documentation ---------------------- - Warn against using a Let's Encrypt certificate for TLS/DTLS TURN server client connections, and suggest using ZeroSSL certificate instead. This works around client-side connectivity errors caused by WebRTC libraries that reject Let's Encrypt certificates. Contributed by @AndrewFerr. ([\#11686](https://github.com/matrix-org/synapse/issues/11686)) - Document the new `SYNAPSE_TEST_PERSIST_SQLITE_DB` environment variable in the contributing guide. ([\#11715](https://github.com/matrix-org/synapse/issues/11715)) - Document that the minimum supported PostgreSQL version is now 10. ([\#11725](https://github.com/matrix-org/synapse/issues/11725)) - Fix typo in demo docs: different. ([\#11735](https://github.com/matrix-org/synapse/issues/11735)) - Update room spec URL in config files. ([\#11739](https://github.com/matrix-org/synapse/issues/11739)) - Mention `python3-venv` and `libpq-dev` dependencies in the contribution guide. ([\#11740](https://github.com/matrix-org/synapse/issues/11740)) - Update documentation for configuring login with Facebook. ([\#11755](https://github.com/matrix-org/synapse/issues/11755)) - Update installation instructions to note that Python 3.6 is no longer supported. ([\#11781](https://github.com/matrix-org/synapse/issues/11781)) Deprecations and Removals ------------------------- - Remove the unstable `/send_relation` endpoint. ([\#11682](https://github.com/matrix-org/synapse/issues/11682)) - Remove `python_twisted_reactor_pending_calls` Prometheus metric. ([\#11724](https://github.com/matrix-org/synapse/issues/11724)) - Remove the `password_hash` field from the response dictionaries of the [Users Admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html). ([\#11576](https://github.com/matrix-org/synapse/issues/11576)) - **Deprecate support for `webclient` listeners and non-HTTP(S) `web_client_location` configuration. ([\#11774](https://github.com/matrix-org/synapse/issues/11774), [\#11783](https://github.com/matrix-org/synapse/issues/11783))** Internal Changes ---------------- - Run `pyupgrade --py37-plus --keep-percent-format` on Synapse. ([\#11685](https://github.com/matrix-org/synapse/issues/11685)) - Use buildkit's cache feature to speed up docker builds. ([\#11691](https://github.com/matrix-org/synapse/issues/11691)) - Use `auto_attribs` and native type hints for attrs classes. ([\#11692](https://github.com/matrix-org/synapse/issues/11692), [\#11768](https://github.com/matrix-org/synapse/issues/11768)) - Remove debug logging for #4422, which has been closed since Synapse 0.99. ([\#11693](https://github.com/matrix-org/synapse/issues/11693)) - Remove fallback code for Python 2. ([\#11699](https://github.com/matrix-org/synapse/issues/11699)) - Add a test for [an edge case](https://github.com/matrix-org/synapse/pull/11532#discussion_r769104461) in the `/sync` logic. ([\#11701](https://github.com/matrix-org/synapse/issues/11701)) - Add the option to write SQLite test dbs to disk when running tests. ([\#11702](https://github.com/matrix-org/synapse/issues/11702)) - Improve Complement test output for Gitub Actions. ([\#11707](https://github.com/matrix-org/synapse/issues/11707)) - Fix docstring on `add_account_data_for_user`. ([\#11716](https://github.com/matrix-org/synapse/issues/11716)) - Complement environment variable name change and update `.gitignore`. ([\#11718](https://github.com/matrix-org/synapse/issues/11718)) - Simplify calculation of Prometheus metrics for garbage collection. ([\#11723](https://github.com/matrix-org/synapse/issues/11723)) - Improve accuracy of `python_twisted_reactor_tick_time` Prometheus metric. ([\#11724](https://github.com/matrix-org/synapse/issues/11724), [\#11771](https://github.com/matrix-org/synapse/issues/11771)) - Minor efficiency improvements when inserting many values into the database. ([\#11742](https://github.com/matrix-org/synapse/issues/11742)) - Invite PR authors to give themselves credit in the changelog. ([\#11744](https://github.com/matrix-org/synapse/issues/11744)) - Add optional debugging to investigate [issue 8631](https://github.com/matrix-org/synapse/issues/8631). ([\#11760](https://github.com/matrix-org/synapse/issues/11760)) - Remove `log_function` utility function and its uses. ([\#11761](https://github.com/matrix-org/synapse/issues/11761)) - Add a unit test that checks both `client` and `webclient` resources will function when simultaneously enabled. ([\#11765](https://github.com/matrix-org/synapse/issues/11765)) - Allow overriding complement commit using `COMPLEMENT_REF`. ([\#11766](https://github.com/matrix-org/synapse/issues/11766)) - Add some comments and type annotations for `_update_outliers_txn`. ([\#11776](https://github.com/matrix-org/synapse/issues/11776)) Synapse 1.50.1 (2022-01-18) =========================== This release fixes a bug in Synapse 1.50.0 that could prevent clients from being able to connect to Synapse if the `webclient` resource was enabled. Further details are available in [this issue](https://github.com/matrix-org/synapse/issues/11763). Bugfixes -------- - Fix a bug introduced in Synapse 1.50.0rc1 that could cause Matrix clients to be unable to connect to Synapse instances with the `webclient` resource enabled. ([\#11764](https://github.com/matrix-org/synapse/issues/11764)) Synapse 1.50.0 (2022-01-18) =========================== **This release contains a critical bug that may prevent clients from being able to connect. As such, it is not recommended to upgrade to 1.50.0. Instead, please upgrade straight to to 1.50.1. Further details are available in [this issue](https://github.com/matrix-org/synapse/issues/11763).** Please note that we now only support Python 3.7+ and PostgreSQL 10+ (if applicable), because Python 3.6 and PostgreSQL 9.6 have reached end-of-life. No significant changes since 1.50.0rc2. Synapse 1.50.0rc2 (2022-01-14) ============================== This release candidate fixes a federation-breaking regression introduced in Synapse 1.50.0rc1. Bugfixes -------- - Fix a bug introduced in Synapse 1.0.0 whereby some device list updates would not be sent to remote homeservers if there were too many to send at once. ([\#11729](https://github.com/matrix-org/synapse/issues/11729)) - Fix a bug introduced in Synapse 1.50.0rc1 whereby outbound federation could fail because too many EDUs were produced for device updates. ([\#11730](https://github.com/matrix-org/synapse/issues/11730)) Improved Documentation ---------------------- - Document that now the minimum supported PostgreSQL version is 10. ([\#11725](https://github.com/matrix-org/synapse/issues/11725)) Internal Changes ---------------- - Fix a typechecker problem related to our (ab)use of `nacl.signing.SigningKey`s. ([\#11714](https://github.com/matrix-org/synapse/issues/11714)) Synapse 1.50.0rc1 (2022-01-05) ============================== Features -------- - Allow guests to send state events per [MSC3419](https://github.com/matrix-org/matrix-doc/pull/3419). ([\#11378](https://github.com/matrix-org/synapse/issues/11378)) - Add experimental support for part of [MSC3202](https://github.com/matrix-org/matrix-doc/pull/3202): allowing application services to masquerade as specific devices. ([\#11538](https://github.com/matrix-org/synapse/issues/11538)) - Add admin API to get users' account data. ([\#11664](https://github.com/matrix-org/synapse/issues/11664)) - Include the room topic in the stripped state included with invites and knocking. ([\#11666](https://github.com/matrix-org/synapse/issues/11666)) - Send and handle cross-signing messages using the stable prefix. ([\#10520](https://github.com/matrix-org/synapse/issues/10520)) - Support unprefixed versions of fallback key property names. ([\#11541](https://github.com/matrix-org/synapse/issues/11541)) Bugfixes -------- - Fix a long-standing bug where relations from other rooms could be included in the bundled aggregations of an event. ([\#11516](https://github.com/matrix-org/synapse/issues/11516)) - Fix a long-standing bug which could cause `AssertionError`s to be written to the log when Synapse was restarted after purging events from the database. ([\#11536](https://github.com/matrix-org/synapse/issues/11536), [\#11642](https://github.com/matrix-org/synapse/issues/11642)) - Fix a bug introduced in Synapse 1.17.0 where a pusher created for an email with capital letters would fail to be created. ([\#11547](https://github.com/matrix-org/synapse/issues/11547)) - Fix a long-standing bug where responses included bundled aggregations when they should not, per [MSC2675](https://github.com/matrix-org/matrix-doc/pull/2675). ([\#11592](https://github.com/matrix-org/synapse/issues/11592), [\#11623](https://github.com/matrix-org/synapse/issues/11623)) - Fix a long-standing bug that some unknown endpoints would return HTML error pages instead of JSON `M_UNRECOGNIZED` errors. ([\#11602](https://github.com/matrix-org/synapse/issues/11602)) - Fix a bug introduced in Synapse 1.19.3 which could sometimes cause `AssertionError`s when backfilling rooms over federation. ([\#11632](https://github.com/matrix-org/synapse/issues/11632)) Improved Documentation ---------------------- - Update Synapse install command for FreeBSD as the package is now prefixed with `py38`. Contributed by @itchychips. ([\#11267](https://github.com/matrix-org/synapse/issues/11267)) - Document the usage of refresh tokens. ([\#11427](https://github.com/matrix-org/synapse/issues/11427)) - Add details for how to configure a TURN server when behind a NAT. Contributed by @AndrewFerr. ([\#11553](https://github.com/matrix-org/synapse/issues/11553)) - Add references for using Postgres to the Docker documentation. ([\#11640](https://github.com/matrix-org/synapse/issues/11640)) - Fix the documentation link in newly-generated configuration files. ([\#11678](https://github.com/matrix-org/synapse/issues/11678)) - Correct the documentation for `nginx` to use a case-sensitive url pattern. Fixes an error introduced in v1.21.0. ([\#11680](https://github.com/matrix-org/synapse/issues/11680)) - Clarify SSO mapping provider documentation by writing `def` or `async def` before the names of methods, as appropriate. ([\#11681](https://github.com/matrix-org/synapse/issues/11681)) Deprecations and Removals ------------------------- - Replace `mock` package by its standard library version. ([\#11588](https://github.com/matrix-org/synapse/issues/11588)) - Drop support for Python 3.6 and Ubuntu 18.04. ([\#11633](https://github.com/matrix-org/synapse/issues/11633)) Internal Changes ---------------- - Allow specific, experimental events to be created without `prev_events`. Used by [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716). ([\#11243](https://github.com/matrix-org/synapse/issues/11243)) - A test helper (`wait_for_background_updates`) no longer depends on classes defining a `store` property. ([\#11331](https://github.com/matrix-org/synapse/issues/11331)) - Add type hints to `synapse.appservice`. ([\#11360](https://github.com/matrix-org/synapse/issues/11360)) - Add missing type hints to `synapse.config` module. ([\#11480](https://github.com/matrix-org/synapse/issues/11480)) - Add test to ensure we share the same `state_group` across the whole historical batch when using the [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint. ([\#11487](https://github.com/matrix-org/synapse/issues/11487)) - Refactor `tests.util.setup_test_homeserver` and `tests.server.setup_test_homeserver`. ([\#11503](https://github.com/matrix-org/synapse/issues/11503)) - Move `glob_to_regex` and `re_word_boundary` to `matrix-python-common`. ([\#11505](https://github.com/matrix-org/synapse/issues/11505), [\#11687](https://github.com/matrix-org/synapse/issues/11687)) - Use `HTTPStatus` constants in place of literals in `tests.rest.client.test_auth`. ([\#11520](https://github.com/matrix-org/synapse/issues/11520)) - Add a receipt types constant for `m.read`. ([\#11531](https://github.com/matrix-org/synapse/issues/11531)) - Clean up `synapse.rest.admin`. ([\#11535](https://github.com/matrix-org/synapse/issues/11535)) - Add missing `errcode` to `parse_string` and `parse_boolean`. ([\#11542](https://github.com/matrix-org/synapse/issues/11542)) - Use `HTTPStatus` constants in place of literals in `synapse.http`. ([\#11543](https://github.com/matrix-org/synapse/issues/11543)) - Add missing type hints to storage classes. ([\#11546](https://github.com/matrix-org/synapse/issues/11546), [\#11549](https://github.com/matrix-org/synapse/issues/11549), [\#11551](https://github.com/matrix-org/synapse/issues/11551), [\#11555](https://github.com/matrix-org/synapse/issues/11555), [\#11575](https://github.com/matrix-org/synapse/issues/11575), [\#11589](https://github.com/matrix-org/synapse/issues/11589), [\#11594](https://github.com/matrix-org/synapse/issues/11594), [\#11652](https://github.com/matrix-org/synapse/issues/11652), [\#11653](https://github.com/matrix-org/synapse/issues/11653), [\#11654](https://github.com/matrix-org/synapse/issues/11654), [\#11657](https://github.com/matrix-org/synapse/issues/11657)) - Fix an inaccurate and misleading comment in the `/sync` code. ([\#11550](https://github.com/matrix-org/synapse/issues/11550)) - Add missing type hints to `synapse.logging.context`. ([\#11556](https://github.com/matrix-org/synapse/issues/11556)) - Stop populating unused database column `state_events.prev_state`. ([\#11558](https://github.com/matrix-org/synapse/issues/11558)) - Minor efficiency improvements in event persistence. ([\#11560](https://github.com/matrix-org/synapse/issues/11560)) - Add some safety checks that storage functions are used correctly. ([\#11564](https://github.com/matrix-org/synapse/issues/11564), [\#11580](https://github.com/matrix-org/synapse/issues/11580)) - Make `get_device` return `None` if the device doesn't exist rather than raising an exception. ([\#11565](https://github.com/matrix-org/synapse/issues/11565)) - Split the HTML parsing code from the URL preview resource code. ([\#11566](https://github.com/matrix-org/synapse/issues/11566)) - Remove redundant `COALESCE()`s around `COUNT()`s in database queries. ([\#11570](https://github.com/matrix-org/synapse/issues/11570)) - Add missing type hints to `synapse.http`. ([\#11571](https://github.com/matrix-org/synapse/issues/11571)) - Add [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) and [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) to `/versions` -> `unstable_features` to detect server support. ([\#11582](https://github.com/matrix-org/synapse/issues/11582)) - Add type hints to `synapse/tests/rest/admin`. ([\#11590](https://github.com/matrix-org/synapse/issues/11590)) - Drop end-of-life Python 3.6 and Postgres 9.6 from CI. ([\#11595](https://github.com/matrix-org/synapse/issues/11595)) - Update black version and run it on all the files. ([\#11596](https://github.com/matrix-org/synapse/issues/11596)) - Add opentracing type stubs and fix associated mypy errors. ([\#11603](https://github.com/matrix-org/synapse/issues/11603), [\#11622](https://github.com/matrix-org/synapse/issues/11622)) - Improve OpenTracing support for requests which use a `ResponseCache`. ([\#11607](https://github.com/matrix-org/synapse/issues/11607)) - Improve OpenTracing support for incoming HTTP requests. ([\#11618](https://github.com/matrix-org/synapse/issues/11618)) - A number of improvements to opentracing support. ([\#11619](https://github.com/matrix-org/synapse/issues/11619)) - Refactor the way that the `outlier` flag is set on events received over federation. ([\#11634](https://github.com/matrix-org/synapse/issues/11634)) - Improve the error messages from `get_create_event_for_room`. ([\#11638](https://github.com/matrix-org/synapse/issues/11638)) - Remove redundant `get_current_events_token` method. ([\#11643](https://github.com/matrix-org/synapse/issues/11643)) - Convert `namedtuples` to `attrs`. ([\#11665](https://github.com/matrix-org/synapse/issues/11665), [\#11574](https://github.com/matrix-org/synapse/issues/11574)) - Update the `/capabilities` response to include whether support for [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440) is available. ([\#11690](https://github.com/matrix-org/synapse/issues/11690)) - Send the `Accept` header in HTTP requests made using `SimpleHttpClient.get_json`. ([\#11677](https://github.com/matrix-org/synapse/issues/11677)) - Work around Mjolnir compatibility issue by adding an import for `glob_to_regex` in `synapse.util`, where it moved from. ([\#11696](https://github.com/matrix-org/synapse/issues/11696)) **Changelogs for older versions can be found [here](CHANGES-2021.md).** synapse-1.100.0/docs/changelogs/CHANGES-pre-1.0.md000066400000000000000000007674351455622526000211040ustar00rootroot00000000000000Synapse 0.99.5.2 (2019-05-30) ============================= Bugfixes -------- - Fix bug where we leaked extremities when we soft failed events, leading to performance degradation. ([\#5274](https://github.com/matrix-org/synapse/issues/5274), [\#5278](https://github.com/matrix-org/synapse/issues/5278), [\#5291](https://github.com/matrix-org/synapse/issues/5291)) Synapse 0.99.5.1 (2019-05-22) ============================= 0.99.5.1 supersedes 0.99.5 due to malformed debian changelog - no functional changes. Synapse 0.99.5 (2019-05-22) =========================== No significant changes. Synapse 0.99.5rc1 (2019-05-21) ============================== Features -------- - Add ability to blacklist IP ranges for the federation client. ([\#5043](https://github.com/matrix-org/synapse/issues/5043)) - Ratelimiting configuration for clients sending messages and the federation server has been altered to match login ratelimiting. The old configuration names will continue working. Check the sample config for details of the new names. ([\#5181](https://github.com/matrix-org/synapse/issues/5181)) - Drop support for the undocumented /_matrix/client/v2_alpha API prefix. ([\#5190](https://github.com/matrix-org/synapse/issues/5190)) - Add an option to disable per-room profiles. ([\#5196](https://github.com/matrix-org/synapse/issues/5196)) - Stick an expiration date to any registered user missing one at startup if account validity is enabled. ([\#5204](https://github.com/matrix-org/synapse/issues/5204)) - Add experimental support for relations (aka reactions and edits). ([\#5209](https://github.com/matrix-org/synapse/issues/5209), [\#5211](https://github.com/matrix-org/synapse/issues/5211), [\#5203](https://github.com/matrix-org/synapse/issues/5203), [\#5212](https://github.com/matrix-org/synapse/issues/5212)) - Add a room version 4 which uses a new event ID format, as per [MSC2002](https://github.com/matrix-org/matrix-doc/pull/2002). ([\#5210](https://github.com/matrix-org/synapse/issues/5210), [\#5217](https://github.com/matrix-org/synapse/issues/5217)) Bugfixes -------- - Fix image orientation when generating thumbnails (needs pillow>=4.3.0). Contributed by Pau Rodriguez-Estivill. ([\#5039](https://github.com/matrix-org/synapse/issues/5039)) - Exclude soft-failed events from forward-extremity candidates: fixes "No forward extremities left!" error. ([\#5146](https://github.com/matrix-org/synapse/issues/5146)) - Re-order stages in registration flows such that msisdn and email verification are done last. ([\#5174](https://github.com/matrix-org/synapse/issues/5174)) - Fix 3pid guest invites. ([\#5177](https://github.com/matrix-org/synapse/issues/5177)) - Fix a bug where the register endpoint would fail with M_THREEPID_IN_USE instead of returning an account previously registered in the same session. ([\#5187](https://github.com/matrix-org/synapse/issues/5187)) - Prevent registration for user ids that are too long to fit into a state key. Contributed by Reid Anderson. ([\#5198](https://github.com/matrix-org/synapse/issues/5198)) - Fix incompatibility between ACME support and Python 3.5.2. ([\#5218](https://github.com/matrix-org/synapse/issues/5218)) - Fix error handling for rooms whose versions are unknown. ([\#5219](https://github.com/matrix-org/synapse/issues/5219)) Internal Changes ---------------- - Make /sync attempt to return device updates for both joined and invited users. Note that this doesn't currently work correctly due to other bugs. ([\#3484](https://github.com/matrix-org/synapse/issues/3484)) - Update tests to consistently be configured via the same code that is used when loading from configuration files. ([\#5171](https://github.com/matrix-org/synapse/issues/5171), [\#5185](https://github.com/matrix-org/synapse/issues/5185)) - Allow client event serialization to be async. ([\#5183](https://github.com/matrix-org/synapse/issues/5183)) - Expose DataStore._get_events as get_events_as_list. ([\#5184](https://github.com/matrix-org/synapse/issues/5184)) - Make generating SQL bounds for pagination generic. ([\#5191](https://github.com/matrix-org/synapse/issues/5191)) - Stop telling people to install the optional dependencies by default. ([\#5197](https://github.com/matrix-org/synapse/issues/5197)) Synapse 0.99.4 (2019-05-15) =========================== No significant changes. Synapse 0.99.4rc1 (2019-05-13) ============================== Features -------- - Add systemd-python to the optional dependencies to enable logging to the systemd journal. Install with `pip install matrix-synapse[systemd]`. ([\#4339](https://github.com/matrix-org/synapse/issues/4339)) - Add a default .m.rule.tombstone push rule. ([\#4867](https://github.com/matrix-org/synapse/issues/4867)) - Add ability for password provider modules to bind email addresses to users upon registration. ([\#4947](https://github.com/matrix-org/synapse/issues/4947)) - Implementation of [MSC1711](https://github.com/matrix-org/matrix-doc/pull/1711) including config options for requiring valid TLS certificates for federation traffic, the ability to disable TLS validation for specific domains, and the ability to specify your own list of CA certificates. ([\#4967](https://github.com/matrix-org/synapse/issues/4967)) - Remove presence list support as per MSC 1819. ([\#4989](https://github.com/matrix-org/synapse/issues/4989)) - Reduce CPU usage starting pushers during start up. ([\#4991](https://github.com/matrix-org/synapse/issues/4991)) - Add a delete group admin API. ([\#5002](https://github.com/matrix-org/synapse/issues/5002)) - Add config option to block users from looking up 3PIDs. ([\#5010](https://github.com/matrix-org/synapse/issues/5010)) - Add context to phonehome stats. ([\#5020](https://github.com/matrix-org/synapse/issues/5020)) - Configure the example systemd units to have a log identifier of `matrix-synapse` instead of the executable name, `python`. Contributed by Christoph Müller. ([\#5023](https://github.com/matrix-org/synapse/issues/5023)) - Add time-based account expiration. ([\#5027](https://github.com/matrix-org/synapse/issues/5027), [\#5047](https://github.com/matrix-org/synapse/issues/5047), [\#5073](https://github.com/matrix-org/synapse/issues/5073), [\#5116](https://github.com/matrix-org/synapse/issues/5116)) - Add support for handling `/versions`, `/voip` and `/push_rules` client endpoints to client_reader worker. ([\#5063](https://github.com/matrix-org/synapse/issues/5063), [\#5065](https://github.com/matrix-org/synapse/issues/5065), [\#5070](https://github.com/matrix-org/synapse/issues/5070)) - Add a configuration option to require authentication on /publicRooms and /profile endpoints. ([\#5083](https://github.com/matrix-org/synapse/issues/5083)) - Move admin APIs to `/_synapse/admin/v1`. (The old paths are retained for backwards-compatibility, for now). ([\#5119](https://github.com/matrix-org/synapse/issues/5119)) - Implement an admin API for sending server notices. Many thanks to @krombel who provided a foundation for this work. ([\#5121](https://github.com/matrix-org/synapse/issues/5121), [\#5142](https://github.com/matrix-org/synapse/issues/5142)) Bugfixes -------- - Avoid redundant URL encoding of redirect URL for SSO login in the fallback login page. Fixes a regression introduced in [#4220](https://github.com/matrix-org/synapse/pull/4220). Contributed by Marcel Fabian Krüger ("[zaugin](https://github.com/zauguin)"). ([\#4555](https://github.com/matrix-org/synapse/issues/4555)) - Fix bug where presence updates were sent to all servers in a room when a new server joined, rather than to just the new server. ([\#4942](https://github.com/matrix-org/synapse/issues/4942), [\#5103](https://github.com/matrix-org/synapse/issues/5103)) - Fix sync bug which made accepting invites unreliable in worker-mode synapses. ([\#4955](https://github.com/matrix-org/synapse/issues/4955), [\#4956](https://github.com/matrix-org/synapse/issues/4956)) - start.sh: Fix the --no-rate-limit option for messages and make it bypass rate limit on registration and login too. ([\#4981](https://github.com/matrix-org/synapse/issues/4981)) - Transfer related groups on room upgrade. ([\#4990](https://github.com/matrix-org/synapse/issues/4990)) - Prevent the ability to kick users from a room they aren't in. ([\#4999](https://github.com/matrix-org/synapse/issues/4999)) - Fix issue [\#4596](https://github.com/matrix-org/synapse/issues/4596) so synapse_port_db script works with --curses option on Python 3. Contributed by Anders Jensen-Waud . ([\#5003](https://github.com/matrix-org/synapse/issues/5003)) - Clients timing out/disappearing while downloading from the media repository will now no longer log a spurious "Producer was not unregistered" message. ([\#5009](https://github.com/matrix-org/synapse/issues/5009)) - Fix "cannot import name execute_batch" error with postgres. ([\#5032](https://github.com/matrix-org/synapse/issues/5032)) - Fix disappearing exceptions in manhole. ([\#5035](https://github.com/matrix-org/synapse/issues/5035)) - Workaround bug in twisted where attempting too many concurrent DNS requests could cause it to hang due to running out of file descriptors. ([\#5037](https://github.com/matrix-org/synapse/issues/5037)) - Make sure we're not registering the same 3pid twice on registration. ([\#5071](https://github.com/matrix-org/synapse/issues/5071)) - Don't crash on lack of expiry templates. ([\#5077](https://github.com/matrix-org/synapse/issues/5077)) - Fix the ratelimiting on third party invites. ([\#5104](https://github.com/matrix-org/synapse/issues/5104)) - Add some missing limitations to room alias creation. ([\#5124](https://github.com/matrix-org/synapse/issues/5124), [\#5128](https://github.com/matrix-org/synapse/issues/5128)) - Limit the number of EDUs in transactions to 100 as expected by synapse. Thanks to @superboum for this work! ([\#5138](https://github.com/matrix-org/synapse/issues/5138)) Internal Changes ---------------- - Add test to verify threepid auth check added in [\#4435](https://github.com/matrix-org/synapse/issues/4435). ([\#4474](https://github.com/matrix-org/synapse/issues/4474)) - Fix/improve some docstrings in the replication code. ([\#4949](https://github.com/matrix-org/synapse/issues/4949)) - Split synapse.replication.tcp.streams into smaller files. ([\#4953](https://github.com/matrix-org/synapse/issues/4953)) - Refactor replication row generation/parsing. ([\#4954](https://github.com/matrix-org/synapse/issues/4954)) - Run `black` to clean up formatting on `synapse/storage/roommember.py` and `synapse/storage/events.py`. ([\#4959](https://github.com/matrix-org/synapse/issues/4959)) - Remove log line for password via the admin API. ([\#4965](https://github.com/matrix-org/synapse/issues/4965)) - Fix typo in TLS filenames in docker/README.md. Also add the '-p' commandline option to the 'docker run' example. Contributed by Jurrie Overgoor. ([\#4968](https://github.com/matrix-org/synapse/issues/4968)) - Refactor room version definitions. ([\#4969](https://github.com/matrix-org/synapse/issues/4969)) - Reduce log level of .well-known/matrix/client responses. ([\#4972](https://github.com/matrix-org/synapse/issues/4972)) - Add `config.signing_key_path` that can be read by `synapse.config` utility. ([\#4974](https://github.com/matrix-org/synapse/issues/4974)) - Track which identity server is used when binding a threepid and use that for unbinding, as per MSC1915. ([\#4982](https://github.com/matrix-org/synapse/issues/4982)) - Rewrite KeyringTestCase as a HomeserverTestCase. ([\#4985](https://github.com/matrix-org/synapse/issues/4985)) - README updates: Corrected the default POSTGRES_USER. Added port forwarding hint in TLS section. ([\#4987](https://github.com/matrix-org/synapse/issues/4987)) - Remove a number of unused tables from the database schema. ([\#4992](https://github.com/matrix-org/synapse/issues/4992), [\#5028](https://github.com/matrix-org/synapse/issues/5028), [\#5033](https://github.com/matrix-org/synapse/issues/5033)) - Run `black` on the remainder of `synapse/storage/`. ([\#4996](https://github.com/matrix-org/synapse/issues/4996)) - Fix grammar in get_current_users_in_room and give it a docstring. ([\#4998](https://github.com/matrix-org/synapse/issues/4998)) - Clean up some code in the server-key Keyring. ([\#5001](https://github.com/matrix-org/synapse/issues/5001)) - Convert SYNAPSE_NO_TLS Docker variable to boolean for user friendliness. Contributed by Gabriel Eckerson. ([\#5005](https://github.com/matrix-org/synapse/issues/5005)) - Refactor synapse.storage._base._simple_select_list_paginate. ([\#5007](https://github.com/matrix-org/synapse/issues/5007)) - Store the notary server name correctly in server_keys_json. ([\#5024](https://github.com/matrix-org/synapse/issues/5024)) - Rewrite Datastore.get_server_verify_keys to reduce the number of database transactions. ([\#5030](https://github.com/matrix-org/synapse/issues/5030)) - Remove extraneous period from copyright headers. ([\#5046](https://github.com/matrix-org/synapse/issues/5046)) - Update documentation for where to get Synapse packages. ([\#5067](https://github.com/matrix-org/synapse/issues/5067)) - Add workarounds for pep-517 install errors. ([\#5098](https://github.com/matrix-org/synapse/issues/5098)) - Improve logging when event-signature checks fail. ([\#5100](https://github.com/matrix-org/synapse/issues/5100)) - Factor out an "assert_requester_is_admin" function. ([\#5120](https://github.com/matrix-org/synapse/issues/5120)) - Remove the requirement to authenticate for /admin/server_version. ([\#5122](https://github.com/matrix-org/synapse/issues/5122)) - Prevent an exception from being raised in a IResolutionReceiver and use a more generic error message for blacklisted URL previews. ([\#5155](https://github.com/matrix-org/synapse/issues/5155)) - Run `black` on the tests directory. ([\#5170](https://github.com/matrix-org/synapse/issues/5170)) - Fix CI after new release of isort. ([\#5179](https://github.com/matrix-org/synapse/issues/5179)) - Fix bogus imports in unit tests. ([\#5154](https://github.com/matrix-org/synapse/issues/5154)) Synapse 0.99.3.2 (2019-05-03) ============================= Internal Changes ---------------- - Ensure that we have `urllib3` <1.25, to resolve incompatibility with `requests`. ([\#5135](https://github.com/matrix-org/synapse/issues/5135)) Synapse 0.99.3.1 (2019-05-03) ============================= Security update --------------- This release includes two security fixes: - Switch to using a cryptographically-secure random number generator for token strings, ensuring they cannot be predicted by an attacker. Thanks to @opnsec for identifying and responsibly disclosing this issue! ([\#5133](https://github.com/matrix-org/synapse/issues/5133)) - Blacklist 0.0.0.0 and :: by default for URL previews. Thanks to @opnsec for identifying and responsibly disclosing this issue too! ([\#5134](https://github.com/matrix-org/synapse/issues/5134)) Synapse 0.99.3 (2019-04-01) =========================== No significant changes. Synapse 0.99.3rc1 (2019-03-27) ============================== Features -------- - The user directory has been rewritten to make it faster, with less chance of falling behind on a large server. ([\#4537](https://github.com/matrix-org/synapse/issues/4537), [\#4846](https://github.com/matrix-org/synapse/issues/4846), [\#4864](https://github.com/matrix-org/synapse/issues/4864), [\#4887](https://github.com/matrix-org/synapse/issues/4887), [\#4900](https://github.com/matrix-org/synapse/issues/4900), [\#4944](https://github.com/matrix-org/synapse/issues/4944)) - Add configurable rate limiting to the /register endpoint. ([\#4735](https://github.com/matrix-org/synapse/issues/4735), [\#4804](https://github.com/matrix-org/synapse/issues/4804)) - Move server key queries to federation reader. ([\#4757](https://github.com/matrix-org/synapse/issues/4757)) - Add support for /account/3pid REST endpoint to client_reader worker. ([\#4759](https://github.com/matrix-org/synapse/issues/4759)) - Add an endpoint to the admin API for querying the server version. Contributed by Joseph Weston. ([\#4772](https://github.com/matrix-org/synapse/issues/4772)) - Include a default configuration file in the 'docs' directory. ([\#4791](https://github.com/matrix-org/synapse/issues/4791), [\#4801](https://github.com/matrix-org/synapse/issues/4801)) - Synapse is now permissive about trailing slashes on some of its federation endpoints, allowing zero or more to be present. ([\#4793](https://github.com/matrix-org/synapse/issues/4793)) - Add support for /keys/query and /keys/changes REST endpoints to client_reader worker. ([\#4796](https://github.com/matrix-org/synapse/issues/4796)) - Add checks to incoming events over federation for events evading auth (aka "soft fail"). ([\#4814](https://github.com/matrix-org/synapse/issues/4814)) - Add configurable rate limiting to the /login endpoint. ([\#4821](https://github.com/matrix-org/synapse/issues/4821), [\#4865](https://github.com/matrix-org/synapse/issues/4865)) - Remove trailing slashes from certain outbound federation requests. Retry if receiving a 404. Context: [\#3622](https://github.com/matrix-org/synapse/issues/3622). ([\#4840](https://github.com/matrix-org/synapse/issues/4840)) - Allow passing --daemonize flags to workers in the same way as with master. ([\#4853](https://github.com/matrix-org/synapse/issues/4853)) - Batch up outgoing read-receipts to reduce federation traffic. ([\#4890](https://github.com/matrix-org/synapse/issues/4890), [\#4927](https://github.com/matrix-org/synapse/issues/4927)) - Add option to disable searching the user directory. ([\#4895](https://github.com/matrix-org/synapse/issues/4895)) - Add option to disable searching of local and remote public room lists. ([\#4896](https://github.com/matrix-org/synapse/issues/4896)) - Add ability for password providers to login/register a user via 3PID (email, phone). ([\#4931](https://github.com/matrix-org/synapse/issues/4931)) Bugfixes -------- - Fix a bug where media with spaces in the name would get a corrupted name. ([\#2090](https://github.com/matrix-org/synapse/issues/2090)) - Fix attempting to paginate in rooms where server cannot see any events, to avoid unnecessarily pulling in lots of redacted events. ([\#4699](https://github.com/matrix-org/synapse/issues/4699)) - 'event_id' is now a required parameter in federated state requests, as per the matrix spec. ([\#4740](https://github.com/matrix-org/synapse/issues/4740)) - Fix tightloop over connecting to replication server. ([\#4749](https://github.com/matrix-org/synapse/issues/4749)) - Fix parsing of Content-Disposition headers on remote media requests and URL previews. ([\#4763](https://github.com/matrix-org/synapse/issues/4763)) - Fix incorrect log about not persisting duplicate state event. ([\#4776](https://github.com/matrix-org/synapse/issues/4776)) - Fix v4v6 option in HAProxy example config. Contributed by Flakebi. ([\#4790](https://github.com/matrix-org/synapse/issues/4790)) - Handle batch updates in worker replication protocol. ([\#4792](https://github.com/matrix-org/synapse/issues/4792)) - Fix bug where we didn't correctly throttle sending of USER_IP commands over replication. ([\#4818](https://github.com/matrix-org/synapse/issues/4818)) - Fix potential race in handling missing updates in device list updates. ([\#4829](https://github.com/matrix-org/synapse/issues/4829)) - Fix bug where synapse expected an un-specced `prev_state` field on state events. ([\#4837](https://github.com/matrix-org/synapse/issues/4837)) - Transfer a user's notification settings (push rules) on room upgrade. ([\#4838](https://github.com/matrix-org/synapse/issues/4838)) - fix test_auto_create_auto_join_where_no_consent. ([\#4886](https://github.com/matrix-org/synapse/issues/4886)) - Fix a bug where hs_disabled_message was sometimes not correctly enforced. ([\#4888](https://github.com/matrix-org/synapse/issues/4888)) - Fix bug in shutdown room admin API where it would fail if a user in the room hadn't consented to the privacy policy. ([\#4904](https://github.com/matrix-org/synapse/issues/4904)) - Fix bug where blocked world-readable rooms were still peekable. ([\#4908](https://github.com/matrix-org/synapse/issues/4908)) Internal Changes ---------------- - Add a systemd setup that supports synapse workers. Contributed by Luca Corbatto. ([\#4662](https://github.com/matrix-org/synapse/issues/4662)) - Change from TravisCI to Buildkite for CI. ([\#4752](https://github.com/matrix-org/synapse/issues/4752)) - When presence is disabled don't send over replication. ([\#4757](https://github.com/matrix-org/synapse/issues/4757)) - Minor docstring fixes for MatrixFederationAgent. ([\#4765](https://github.com/matrix-org/synapse/issues/4765)) - Optimise EDU transmission for the federation_sender worker. ([\#4770](https://github.com/matrix-org/synapse/issues/4770)) - Update test_typing to use HomeserverTestCase. ([\#4771](https://github.com/matrix-org/synapse/issues/4771)) - Update URLs for riot.im icons and logos in the default notification templates. ([\#4779](https://github.com/matrix-org/synapse/issues/4779)) - Removed unnecessary $ from some federation endpoint path regexes. ([\#4794](https://github.com/matrix-org/synapse/issues/4794)) - Remove link to deleted title in README. ([\#4795](https://github.com/matrix-org/synapse/issues/4795)) - Clean up read-receipt handling. ([\#4797](https://github.com/matrix-org/synapse/issues/4797)) - Add some debug about processing read receipts. ([\#4798](https://github.com/matrix-org/synapse/issues/4798)) - Clean up some replication code. ([\#4799](https://github.com/matrix-org/synapse/issues/4799)) - Add some docstrings. ([\#4815](https://github.com/matrix-org/synapse/issues/4815)) - Add debug logger to try and track down [\#4422](https://github.com/matrix-org/synapse/issues/4422). ([\#4816](https://github.com/matrix-org/synapse/issues/4816)) - Make shutdown API send explanation message to room after users have been forced joined. ([\#4817](https://github.com/matrix-org/synapse/issues/4817)) - Update example_log_config.yaml. ([\#4820](https://github.com/matrix-org/synapse/issues/4820)) - Document the `generate` option for the docker image. ([\#4824](https://github.com/matrix-org/synapse/issues/4824)) - Fix check-newsfragment for debian-only changes. ([\#4825](https://github.com/matrix-org/synapse/issues/4825)) - Add some debug logging for device list updates to help with [\#4828](https://github.com/matrix-org/synapse/issues/4828). ([\#4828](https://github.com/matrix-org/synapse/issues/4828)) - Improve federation documentation, specifically .well-known support. Many thanks to @vaab. ([\#4832](https://github.com/matrix-org/synapse/issues/4832)) - Disable captcha registration by default in unit tests. ([\#4839](https://github.com/matrix-org/synapse/issues/4839)) - Add stuff back to the .gitignore. ([\#4843](https://github.com/matrix-org/synapse/issues/4843)) - Clarify what registration_shared_secret allows for. ([\#4844](https://github.com/matrix-org/synapse/issues/4844)) - Correctly log expected errors when fetching server keys. ([\#4847](https://github.com/matrix-org/synapse/issues/4847)) - Update install docs to explicitly state a full-chain (not just the top-level) TLS certificate must be provided to Synapse. This caused some people's Synapse ports to appear correct in a browser but still (rightfully so) upset the federation tester. ([\#4849](https://github.com/matrix-org/synapse/issues/4849)) - Move client read-receipt processing to federation sender worker. ([\#4852](https://github.com/matrix-org/synapse/issues/4852)) - Refactor federation TransactionQueue. ([\#4855](https://github.com/matrix-org/synapse/issues/4855)) - Comment out most options in the generated config. ([\#4863](https://github.com/matrix-org/synapse/issues/4863)) - Fix yaml library warnings by using safe_load. ([\#4869](https://github.com/matrix-org/synapse/issues/4869)) - Update Apache setup to remove location syntax. Thanks to @cwmke! ([\#4870](https://github.com/matrix-org/synapse/issues/4870)) - Reinstate test case that runs unit tests against oldest supported dependencies. ([\#4879](https://github.com/matrix-org/synapse/issues/4879)) - Update link to federation docs. ([\#4881](https://github.com/matrix-org/synapse/issues/4881)) - fix test_auto_create_auto_join_where_no_consent. ([\#4886](https://github.com/matrix-org/synapse/issues/4886)) - Use a regular HomeServerConfig object for unit tests rater than a Mock. ([\#4889](https://github.com/matrix-org/synapse/issues/4889)) - Add some notes about tuning postgres for larger deployments. ([\#4895](https://github.com/matrix-org/synapse/issues/4895)) - Add a config option for torture-testing worker replication. ([\#4902](https://github.com/matrix-org/synapse/issues/4902)) - Log requests which are simulated by the unit tests. ([\#4905](https://github.com/matrix-org/synapse/issues/4905)) - Allow newsfragments to end with exclamation marks. Exciting! ([\#4912](https://github.com/matrix-org/synapse/issues/4912)) - Refactor some more tests to use HomeserverTestCase. ([\#4913](https://github.com/matrix-org/synapse/issues/4913)) - Refactor out the state deltas portion of the user directory store and handler. ([\#4917](https://github.com/matrix-org/synapse/issues/4917)) - Fix nginx example in ACME doc. ([\#4923](https://github.com/matrix-org/synapse/issues/4923)) - Use an explicit dbname for postgres connections in the tests. ([\#4928](https://github.com/matrix-org/synapse/issues/4928)) - Fix `ClientReplicationStreamProtocol.__str__()`. ([\#4929](https://github.com/matrix-org/synapse/issues/4929)) Synapse 0.99.2 (2019-03-01) =========================== Features -------- - Added an HAProxy example in the reverse proxy documentation. Contributed by Benoît S. (“Benpro”). ([\#4541](https://github.com/matrix-org/synapse/issues/4541)) - Add basic optional sentry integration. ([\#4632](https://github.com/matrix-org/synapse/issues/4632), [\#4694](https://github.com/matrix-org/synapse/issues/4694)) - Transfer bans on room upgrade. ([\#4642](https://github.com/matrix-org/synapse/issues/4642)) - Add configurable room list publishing rules. ([\#4647](https://github.com/matrix-org/synapse/issues/4647)) - Support .well-known delegation when issuing certificates through ACME. ([\#4652](https://github.com/matrix-org/synapse/issues/4652)) - Allow registration and login to be handled by a worker instance. ([\#4666](https://github.com/matrix-org/synapse/issues/4666), [\#4670](https://github.com/matrix-org/synapse/issues/4670), [\#4682](https://github.com/matrix-org/synapse/issues/4682)) - Reduce the overhead of creating outbound federation connections over TLS by caching the TLS client options. ([\#4674](https://github.com/matrix-org/synapse/issues/4674)) - Add prometheus metrics for number of outgoing EDUs, by type. ([\#4695](https://github.com/matrix-org/synapse/issues/4695)) - Return correct error code when inviting a remote user to a room whose homeserver does not support the room version. ([\#4721](https://github.com/matrix-org/synapse/issues/4721)) - Prevent showing rooms to other servers that were set to not federate. ([\#4746](https://github.com/matrix-org/synapse/issues/4746)) Bugfixes -------- - Fix possible exception when paginating. ([\#4263](https://github.com/matrix-org/synapse/issues/4263)) - The dependency checker now correctly reports a version mismatch for optional dependencies, instead of reporting the dependency missing. ([\#4450](https://github.com/matrix-org/synapse/issues/4450)) - Set CORS headers on .well-known requests. ([\#4651](https://github.com/matrix-org/synapse/issues/4651)) - Fix kicking guest users on guest access revocation in worker mode. ([\#4667](https://github.com/matrix-org/synapse/issues/4667)) - Fix an issue in the database migration script where the `e2e_room_keys.is_verified` column wasn't considered as a boolean. ([\#4680](https://github.com/matrix-org/synapse/issues/4680)) - Fix TaskStopped exceptions in logs when outbound requests time out. ([\#4690](https://github.com/matrix-org/synapse/issues/4690)) - Fix ACME config for python 2. ([\#4717](https://github.com/matrix-org/synapse/issues/4717)) - Fix paginating over federation persisting incorrect state. ([\#4718](https://github.com/matrix-org/synapse/issues/4718)) Internal Changes ---------------- - Run `black` to reformat user directory code. ([\#4635](https://github.com/matrix-org/synapse/issues/4635)) - Reduce number of exceptions we log. ([\#4643](https://github.com/matrix-org/synapse/issues/4643), [\#4668](https://github.com/matrix-org/synapse/issues/4668)) - Introduce upsert batching functionality in the database layer. ([\#4644](https://github.com/matrix-org/synapse/issues/4644)) - Fix various spelling mistakes. ([\#4657](https://github.com/matrix-org/synapse/issues/4657)) - Cleanup request exception logging. ([\#4669](https://github.com/matrix-org/synapse/issues/4669), [\#4737](https://github.com/matrix-org/synapse/issues/4737), [\#4738](https://github.com/matrix-org/synapse/issues/4738)) - Improve replication performance by reducing cache invalidation traffic. ([\#4671](https://github.com/matrix-org/synapse/issues/4671), [\#4715](https://github.com/matrix-org/synapse/issues/4715), [\#4748](https://github.com/matrix-org/synapse/issues/4748)) - Test against Postgres 9.5 as well as 9.4. ([\#4676](https://github.com/matrix-org/synapse/issues/4676)) - Run unit tests against python 3.7. ([\#4677](https://github.com/matrix-org/synapse/issues/4677)) - Attempt to clarify installation instructions/config. ([\#4681](https://github.com/matrix-org/synapse/issues/4681)) - Clean up gitignores. ([\#4688](https://github.com/matrix-org/synapse/issues/4688)) - Minor tweaks to acme docs. ([\#4689](https://github.com/matrix-org/synapse/issues/4689)) - Improve the logging in the pusher process. ([\#4691](https://github.com/matrix-org/synapse/issues/4691)) - Better checks on newsfragments. ([\#4698](https://github.com/matrix-org/synapse/issues/4698), [\#4750](https://github.com/matrix-org/synapse/issues/4750)) - Avoid some redundant work when processing read receipts. ([\#4706](https://github.com/matrix-org/synapse/issues/4706)) - Run `push_receipts_to_remotes` as background job. ([\#4707](https://github.com/matrix-org/synapse/issues/4707)) - Add prometheus metrics for number of badge update pushes. ([\#4709](https://github.com/matrix-org/synapse/issues/4709)) - Reduce pusher logging on startup ([\#4716](https://github.com/matrix-org/synapse/issues/4716)) - Don't log exceptions when failing to fetch remote server keys. ([\#4722](https://github.com/matrix-org/synapse/issues/4722)) - Correctly proxy exception in frontend_proxy worker. ([\#4723](https://github.com/matrix-org/synapse/issues/4723)) - Add database version to phonehome stats. ([\#4753](https://github.com/matrix-org/synapse/issues/4753)) Synapse 0.99.1.1 (2019-02-14) ============================= Bugfixes -------- - Fix "TypeError: '>' not supported" when starting without an existing certificate. Fix a bug where an existing certificate would be reprovisoned every day. ([\#4648](https://github.com/matrix-org/synapse/issues/4648)) Synapse 0.99.1 (2019-02-14) =========================== Features -------- - Include m.room.encryption on invites by default ([\#3902](https://github.com/matrix-org/synapse/issues/3902)) - Federation OpenID listener resource can now be activated even if federation is disabled ([\#4420](https://github.com/matrix-org/synapse/issues/4420)) - Synapse's ACME support will now correctly reprovision a certificate that approaches its expiry while Synapse is running. ([\#4522](https://github.com/matrix-org/synapse/issues/4522)) - Add ability to update backup versions ([\#4580](https://github.com/matrix-org/synapse/issues/4580)) - Allow the "unavailable" presence status for /sync. This change makes Synapse compliant with r0.4.0 of the Client-Server specification. ([\#4592](https://github.com/matrix-org/synapse/issues/4592)) - There is no longer any need to specify `no_tls`: it is inferred from the absence of TLS listeners ([\#4613](https://github.com/matrix-org/synapse/issues/4613), [\#4615](https://github.com/matrix-org/synapse/issues/4615), [\#4617](https://github.com/matrix-org/synapse/issues/4617), [\#4636](https://github.com/matrix-org/synapse/issues/4636)) - The default configuration no longer requires TLS certificates. ([\#4614](https://github.com/matrix-org/synapse/issues/4614)) Bugfixes -------- - Copy over room federation ability on room upgrade. ([\#4530](https://github.com/matrix-org/synapse/issues/4530)) - Fix noisy "twisted.internet.task.TaskStopped" errors in logs ([\#4546](https://github.com/matrix-org/synapse/issues/4546)) - Synapse is now tolerant of the `tls_fingerprints` option being None or not specified. ([\#4589](https://github.com/matrix-org/synapse/issues/4589)) - Fix 'no unique or exclusion constraint' error ([\#4591](https://github.com/matrix-org/synapse/issues/4591)) - Transfer Server ACLs on room upgrade. ([\#4608](https://github.com/matrix-org/synapse/issues/4608)) - Fix failure to start when not TLS certificate was given even if TLS was disabled. ([\#4618](https://github.com/matrix-org/synapse/issues/4618)) - Fix self-signed cert notice from generate-config. ([\#4625](https://github.com/matrix-org/synapse/issues/4625)) - Fix performance of `user_ips` table deduplication background update ([\#4626](https://github.com/matrix-org/synapse/issues/4626), [\#4627](https://github.com/matrix-org/synapse/issues/4627)) Internal Changes ---------------- - Change the user directory state query to use a filtered call to the db instead of a generic one. ([\#4462](https://github.com/matrix-org/synapse/issues/4462)) - Reject federation transactions if they include more than 50 PDUs or 100 EDUs. ([\#4513](https://github.com/matrix-org/synapse/issues/4513)) - Reduce duplication of ``synapse.app`` code. ([\#4567](https://github.com/matrix-org/synapse/issues/4567)) - Fix docker upload job to push -py2 images. ([\#4576](https://github.com/matrix-org/synapse/issues/4576)) - Add port configuration information to ACME instructions. ([\#4578](https://github.com/matrix-org/synapse/issues/4578)) - Update MSC1711 FAQ to calrify .well-known usage ([\#4584](https://github.com/matrix-org/synapse/issues/4584)) - Clean up default listener configuration ([\#4586](https://github.com/matrix-org/synapse/issues/4586)) - Clarifications for reverse proxy docs ([\#4607](https://github.com/matrix-org/synapse/issues/4607)) - Move ClientTLSOptionsFactory init out of `refresh_certificates` ([\#4611](https://github.com/matrix-org/synapse/issues/4611)) - Fail cleanly if listener config lacks a 'port' ([\#4616](https://github.com/matrix-org/synapse/issues/4616)) - Remove redundant entries from docker config ([\#4619](https://github.com/matrix-org/synapse/issues/4619)) - README updates ([\#4621](https://github.com/matrix-org/synapse/issues/4621)) Synapse 0.99.0 (2019-02-05) =========================== Synapse v0.99.x is a precursor to the upcoming Synapse v1.0 release. It contains foundational changes to room architecture and the federation security model necessary to support the upcoming r0 release of the Server to Server API. Features -------- - Synapse's cipher string has been updated to require ECDH key exchange. Configuring and generating dh_params is no longer required, and they will be ignored. ([\#4229](https://github.com/matrix-org/synapse/issues/4229)) - Synapse can now automatically provision TLS certificates via ACME (the protocol used by CAs like Let's Encrypt). ([\#4384](https://github.com/matrix-org/synapse/issues/4384), [\#4492](https://github.com/matrix-org/synapse/issues/4492), [\#4525](https://github.com/matrix-org/synapse/issues/4525), [\#4572](https://github.com/matrix-org/synapse/issues/4572), [\#4564](https://github.com/matrix-org/synapse/issues/4564), [\#4566](https://github.com/matrix-org/synapse/issues/4566), [\#4547](https://github.com/matrix-org/synapse/issues/4547), [\#4557](https://github.com/matrix-org/synapse/issues/4557)) - Implement MSC1708 (.well-known routing for server-server federation) ([\#4408](https://github.com/matrix-org/synapse/issues/4408), [\#4409](https://github.com/matrix-org/synapse/issues/4409), [\#4426](https://github.com/matrix-org/synapse/issues/4426), [\#4427](https://github.com/matrix-org/synapse/issues/4427), [\#4428](https://github.com/matrix-org/synapse/issues/4428), [\#4464](https://github.com/matrix-org/synapse/issues/4464), [\#4468](https://github.com/matrix-org/synapse/issues/4468), [\#4487](https://github.com/matrix-org/synapse/issues/4487), [\#4488](https://github.com/matrix-org/synapse/issues/4488), [\#4489](https://github.com/matrix-org/synapse/issues/4489), [\#4497](https://github.com/matrix-org/synapse/issues/4497), [\#4511](https://github.com/matrix-org/synapse/issues/4511), [\#4516](https://github.com/matrix-org/synapse/issues/4516), [\#4520](https://github.com/matrix-org/synapse/issues/4520), [\#4521](https://github.com/matrix-org/synapse/issues/4521), [\#4539](https://github.com/matrix-org/synapse/issues/4539), [\#4542](https://github.com/matrix-org/synapse/issues/4542), [\#4544](https://github.com/matrix-org/synapse/issues/4544)) - Search now includes results from predecessor rooms after a room upgrade. ([\#4415](https://github.com/matrix-org/synapse/issues/4415)) - Config option to disable requesting MSISDN on registration. ([\#4423](https://github.com/matrix-org/synapse/issues/4423)) - Add a metric for tracking event stream position of the user directory. ([\#4445](https://github.com/matrix-org/synapse/issues/4445)) - Support exposing server capabilities in CS API (MSC1753, MSC1804) ([\#4472](https://github.com/matrix-org/synapse/issues/4472), [81b7e7eed](https://github.com/matrix-org/synapse/commit/81b7e7eed323f55d6550e7a270a9dc2c4c7b0fe0))) - Add support for room version 3 ([\#4483](https://github.com/matrix-org/synapse/issues/4483), [\#4499](https://github.com/matrix-org/synapse/issues/4499), [\#4515](https://github.com/matrix-org/synapse/issues/4515), [\#4523](https://github.com/matrix-org/synapse/issues/4523), [\#4535](https://github.com/matrix-org/synapse/issues/4535)) - Synapse will now reload TLS certificates from disk upon SIGHUP. ([\#4495](https://github.com/matrix-org/synapse/issues/4495), [\#4524](https://github.com/matrix-org/synapse/issues/4524)) - The matrixdotorg/synapse Docker images now use Python 3 by default. ([\#4558](https://github.com/matrix-org/synapse/issues/4558)) Bugfixes -------- - Prevent users with access tokens predating the introduction of device IDs from creating spurious entries in the user_ips table. ([\#4369](https://github.com/matrix-org/synapse/issues/4369)) - Fix typo in ALL_USER_TYPES definition to ensure type is a tuple ([\#4392](https://github.com/matrix-org/synapse/issues/4392)) - Fix high CPU usage due to remote devicelist updates ([\#4397](https://github.com/matrix-org/synapse/issues/4397)) - Fix potential bug where creating or joining a room could fail ([\#4404](https://github.com/matrix-org/synapse/issues/4404)) - Fix bug when rejecting remote invites ([\#4405](https://github.com/matrix-org/synapse/issues/4405), [\#4527](https://github.com/matrix-org/synapse/issues/4527)) - Fix incorrect logcontexts after a Deferred was cancelled ([\#4407](https://github.com/matrix-org/synapse/issues/4407)) - Ensure encrypted room state is persisted across room upgrades. ([\#4411](https://github.com/matrix-org/synapse/issues/4411)) - Copy over whether a room is a direct message and any associated room tags on room upgrade. ([\#4412](https://github.com/matrix-org/synapse/issues/4412)) - Fix None guard in calling config.server.is_threepid_reserved ([\#4435](https://github.com/matrix-org/synapse/issues/4435)) - Don't send IP addresses as SNI ([\#4452](https://github.com/matrix-org/synapse/issues/4452)) - Fix UnboundLocalError in post_urlencoded_get_json ([\#4460](https://github.com/matrix-org/synapse/issues/4460)) - Add a timeout to filtered room directory queries. ([\#4461](https://github.com/matrix-org/synapse/issues/4461)) - Workaround for login error when using both LDAP and internal authentication. ([\#4486](https://github.com/matrix-org/synapse/issues/4486)) - Fix a bug where setting a relative consent directory path would cause a crash. ([\#4512](https://github.com/matrix-org/synapse/issues/4512)) Deprecations and Removals ------------------------- - Synapse no longer generates self-signed TLS certificates when generating a configuration file. ([\#4509](https://github.com/matrix-org/synapse/issues/4509)) Improved Documentation ---------------------- - Update debian installation instructions ([\#4526](https://github.com/matrix-org/synapse/issues/4526)) Internal Changes ---------------- - Synapse will now take advantage of native UPSERT functionality in PostgreSQL 9.5+ and SQLite 3.24+. ([\#4306](https://github.com/matrix-org/synapse/issues/4306), [\#4459](https://github.com/matrix-org/synapse/issues/4459), [\#4466](https://github.com/matrix-org/synapse/issues/4466), [\#4471](https://github.com/matrix-org/synapse/issues/4471), [\#4477](https://github.com/matrix-org/synapse/issues/4477), [\#4505](https://github.com/matrix-org/synapse/issues/4505)) - Update README to use the new virtualenv everywhere ([\#4342](https://github.com/matrix-org/synapse/issues/4342)) - Add better logging for unexpected errors while sending transactions ([\#4368](https://github.com/matrix-org/synapse/issues/4368)) - Apply a unique index to the user_ips table, preventing duplicates. ([\#4370](https://github.com/matrix-org/synapse/issues/4370), [\#4432](https://github.com/matrix-org/synapse/issues/4432), [\#4434](https://github.com/matrix-org/synapse/issues/4434)) - Silence travis-ci build warnings by removing non-functional python3.6 ([\#4377](https://github.com/matrix-org/synapse/issues/4377)) - Fix a comment in the generated config file ([\#4387](https://github.com/matrix-org/synapse/issues/4387)) - Add ground work for implementing future federation API versions ([\#4390](https://github.com/matrix-org/synapse/issues/4390)) - Update dependencies on msgpack and pymacaroons to use the up-to-date packages. ([\#4399](https://github.com/matrix-org/synapse/issues/4399)) - Tweak codecov settings to make them less loud. ([\#4400](https://github.com/matrix-org/synapse/issues/4400)) - Implement server support for MSC1794 - Federation v2 Invite API ([\#4402](https://github.com/matrix-org/synapse/issues/4402)) - debian package: symlink to explicit python version ([\#4433](https://github.com/matrix-org/synapse/issues/4433)) - Add infrastructure to support different event formats ([\#4437](https://github.com/matrix-org/synapse/issues/4437), [\#4447](https://github.com/matrix-org/synapse/issues/4447), [\#4448](https://github.com/matrix-org/synapse/issues/4448), [\#4470](https://github.com/matrix-org/synapse/issues/4470), [\#4481](https://github.com/matrix-org/synapse/issues/4481), [\#4482](https://github.com/matrix-org/synapse/issues/4482), [\#4493](https://github.com/matrix-org/synapse/issues/4493), [\#4494](https://github.com/matrix-org/synapse/issues/4494), [\#4496](https://github.com/matrix-org/synapse/issues/4496), [\#4510](https://github.com/matrix-org/synapse/issues/4510), [\#4514](https://github.com/matrix-org/synapse/issues/4514)) - Generate the debian config during build ([\#4444](https://github.com/matrix-org/synapse/issues/4444)) - Clarify documentation for the `public_baseurl` config param ([\#4458](https://github.com/matrix-org/synapse/issues/4458), [\#4498](https://github.com/matrix-org/synapse/issues/4498)) - Fix quoting for allowed_local_3pids example config ([\#4476](https://github.com/matrix-org/synapse/issues/4476)) - Remove deprecated --process-dependency-links option from UPGRADE.rst ([\#4485](https://github.com/matrix-org/synapse/issues/4485)) - Make it possible to set the log level for tests via an environment variable ([\#4506](https://github.com/matrix-org/synapse/issues/4506)) - Reduce the log level of linearizer lock acquirement to DEBUG. ([\#4507](https://github.com/matrix-org/synapse/issues/4507)) - Fix code to comply with linting in PyFlakes 3.7.1. ([\#4519](https://github.com/matrix-org/synapse/issues/4519)) - Add some debug for membership syncing issues ([\#4538](https://github.com/matrix-org/synapse/issues/4538)) - Docker: only copy what we need to the build image ([\#4562](https://github.com/matrix-org/synapse/issues/4562)) Synapse 0.34.1.1 (2019-01-11) ============================= This release fixes CVE-2019-5885 and is recommended for all users of Synapse 0.34.1. This release is compatible with Python 2.7 and 3.5+. Python 3.7 is fully supported. Bugfixes -------- - Fix spontaneous logout on upgrade ([\#4374](https://github.com/matrix-org/synapse/issues/4374)) Synapse 0.34.1 (2019-01-09) =========================== Internal Changes ---------------- - Add better logging for unexpected errors while sending transactions ([\#4361](https://github.com/matrix-org/synapse/issues/4361), [\#4362](https://github.com/matrix-org/synapse/issues/4362)) Synapse 0.34.1rc1 (2019-01-08) ============================== Features -------- - Special-case a support user for use in verifying behaviour of a given server. The support user does not appear in user directory or monthly active user counts. ([\#4141](https://github.com/matrix-org/synapse/issues/4141), [\#4344](https://github.com/matrix-org/synapse/issues/4344)) - Support for serving .well-known files ([\#4262](https://github.com/matrix-org/synapse/issues/4262)) - Rework SAML2 authentication ([\#4265](https://github.com/matrix-org/synapse/issues/4265), [\#4267](https://github.com/matrix-org/synapse/issues/4267)) - SAML2 authentication: Initialise user display name from SAML2 data ([\#4272](https://github.com/matrix-org/synapse/issues/4272)) - Synapse can now have its conditional/extra dependencies installed by pip. This functionality can be used by using `pip install matrix-synapse[feature]`, where feature is a comma separated list with the possible values `email.enable_notifs`, `matrix-synapse-ldap3`, `postgres`, `resources.consent`, `saml2`, `url_preview`, and `test`. If you want to install all optional dependencies, you can use "all" instead. ([\#4298](https://github.com/matrix-org/synapse/issues/4298), [\#4325](https://github.com/matrix-org/synapse/issues/4325), [\#4327](https://github.com/matrix-org/synapse/issues/4327)) - Add routes for reading account data. ([\#4303](https://github.com/matrix-org/synapse/issues/4303)) - Add opt-in support for v2 rooms ([\#4307](https://github.com/matrix-org/synapse/issues/4307)) - Add a script to generate a clean config file ([\#4315](https://github.com/matrix-org/synapse/issues/4315)) - Return server data in /login response ([\#4319](https://github.com/matrix-org/synapse/issues/4319)) Bugfixes -------- - Fix contains_url check to be consistent with other instances in code-base and check that value is an instance of string. ([\#3405](https://github.com/matrix-org/synapse/issues/3405)) - Fix CAS login when username is not valid in an MXID ([\#4264](https://github.com/matrix-org/synapse/issues/4264)) - Send CORS headers for /media/config ([\#4279](https://github.com/matrix-org/synapse/issues/4279)) - Add 'sandbox' to CSP for media reprository ([\#4284](https://github.com/matrix-org/synapse/issues/4284)) - Make the new landing page prettier. ([\#4294](https://github.com/matrix-org/synapse/issues/4294)) - Fix deleting E2E room keys when using old SQLite versions. ([\#4295](https://github.com/matrix-org/synapse/issues/4295)) - The metric synapse_admin_mau:current previously did not update when config.mau_stats_only was set to True ([\#4305](https://github.com/matrix-org/synapse/issues/4305)) - Fixed per-room account data filters ([\#4309](https://github.com/matrix-org/synapse/issues/4309)) - Fix indentation in default config ([\#4313](https://github.com/matrix-org/synapse/issues/4313)) - Fix synapse:latest docker upload ([\#4316](https://github.com/matrix-org/synapse/issues/4316)) - Fix test_metric.py compatibility with prometheus_client 0.5. Contributed by Maarten de Vries . ([\#4317](https://github.com/matrix-org/synapse/issues/4317)) - Avoid packaging _trial_temp directory in -py3 debian packages ([\#4326](https://github.com/matrix-org/synapse/issues/4326)) - Check jinja version for consent resource ([\#4327](https://github.com/matrix-org/synapse/issues/4327)) - fix NPE in /messages by checking if all events were filtered out ([\#4330](https://github.com/matrix-org/synapse/issues/4330)) - Fix `python -m synapse.config` on Python 3. ([\#4356](https://github.com/matrix-org/synapse/issues/4356)) Deprecations and Removals ------------------------- - Remove the deprecated v1/register API on Python 2. It was never ported to Python 3. ([\#4334](https://github.com/matrix-org/synapse/issues/4334)) Internal Changes ---------------- - Getting URL previews of IP addresses no longer fails on Python 3. ([\#4215](https://github.com/matrix-org/synapse/issues/4215)) - drop undocumented dependency on dateutil ([\#4266](https://github.com/matrix-org/synapse/issues/4266)) - Update the example systemd config to use a virtualenv ([\#4273](https://github.com/matrix-org/synapse/issues/4273)) - Update link to kernel DCO guide ([\#4274](https://github.com/matrix-org/synapse/issues/4274)) - Make isort tox check print diff when it fails ([\#4283](https://github.com/matrix-org/synapse/issues/4283)) - Log room_id in Unknown room errors ([\#4297](https://github.com/matrix-org/synapse/issues/4297)) - Documentation improvements for coturn setup. Contributed by Krithin Sitaram. ([\#4333](https://github.com/matrix-org/synapse/issues/4333)) - Update pull request template to use absolute links ([\#4341](https://github.com/matrix-org/synapse/issues/4341)) - Update README to not lie about required restart when updating TLS certificates ([\#4343](https://github.com/matrix-org/synapse/issues/4343)) - Update debian packaging for compatibility with transitional package ([\#4349](https://github.com/matrix-org/synapse/issues/4349)) - Fix command hint to generate a config file when trying to start without a config file ([\#4353](https://github.com/matrix-org/synapse/issues/4353)) - Add better logging for unexpected errors while sending transactions ([\#4358](https://github.com/matrix-org/synapse/issues/4358)) Synapse 0.34.0 (2018-12-20) =========================== Synapse 0.34.0 is the first release to fully support Python 3. Synapse will now run on Python versions 3.5 or 3.6 (as well as 2.7). Support for Python 3.7 remains experimental. We recommend upgrading to Python 3, but make sure to read the [upgrade notes](docs/upgrade.md#upgrading-to-v0340) when doing so. Features -------- - Add 'sandbox' to CSP for media reprository ([\#4284](https://github.com/matrix-org/synapse/issues/4284)) - Make the new landing page prettier. ([\#4294](https://github.com/matrix-org/synapse/issues/4294)) - Fix deleting E2E room keys when using old SQLite versions. ([\#4295](https://github.com/matrix-org/synapse/issues/4295)) - Add a welcome page for the client API port. Credit to @krombel! ([\#4289](https://github.com/matrix-org/synapse/issues/4289)) - Remove Matrix console from the default distribution ([\#4290](https://github.com/matrix-org/synapse/issues/4290)) - Add option to track MAU stats (but not limit people) ([\#3830](https://github.com/matrix-org/synapse/issues/3830)) - Add an option to enable recording IPs for appservice users ([\#3831](https://github.com/matrix-org/synapse/issues/3831)) - Rename login type `m.login.cas` to `m.login.sso` ([\#4220](https://github.com/matrix-org/synapse/issues/4220)) - Add an option to disable search for homeservers that may not be interested in it. ([\#4230](https://github.com/matrix-org/synapse/issues/4230)) Bugfixes -------- - Pushrules can now again be made with non-ASCII rule IDs. ([\#4165](https://github.com/matrix-org/synapse/issues/4165)) - The media repository now no longer fails to decode UTF-8 filenames when downloading remote media. ([\#4176](https://github.com/matrix-org/synapse/issues/4176)) - URL previews now correctly decode non-UTF-8 text if the header contains a ` synapse ([\#3897](https://github.com/matrix-org/synapse/issues/3897)) - Increase the timeout when filling missing events in federation requests ([\#3903](https://github.com/matrix-org/synapse/issues/3903)) - Improve the logging when handling a federation transaction ([\#3904](https://github.com/matrix-org/synapse/issues/3904), [\#3966](https://github.com/matrix-org/synapse/issues/3966)) - Improve logging of outbound federation requests ([\#3906](https://github.com/matrix-org/synapse/issues/3906), [\#3909](https://github.com/matrix-org/synapse/issues/3909)) - Fix the docker image building on python 3 ([\#3911](https://github.com/matrix-org/synapse/issues/3911)) - Add a regression test for logging failed HTTP requests on Python 3. ([\#3912](https://github.com/matrix-org/synapse/issues/3912)) - Comments and interface cleanup for on_receive_pdu ([\#3924](https://github.com/matrix-org/synapse/issues/3924)) - Fix spurious exceptions when remote http client closes connection ([\#3925](https://github.com/matrix-org/synapse/issues/3925)) - Log exceptions thrown by background tasks ([\#3927](https://github.com/matrix-org/synapse/issues/3927)) - Add a cache to get_destination_retry_timings ([\#3933](https://github.com/matrix-org/synapse/issues/3933), [\#3991](https://github.com/matrix-org/synapse/issues/3991)) - Automate pushes to docker hub ([\#3946](https://github.com/matrix-org/synapse/issues/3946)) - Require attrs 16.0.0 or later ([\#3947](https://github.com/matrix-org/synapse/issues/3947)) - Fix incompatibility with python3 on alpine ([\#3948](https://github.com/matrix-org/synapse/issues/3948)) - Run the test suite on the oldest supported versions of our dependencies in CI. ([\#3952](https://github.com/matrix-org/synapse/issues/3952)) - CircleCI now only runs merged jobs on PRs, and commit jobs on develop, master, and release branches. ([\#3957](https://github.com/matrix-org/synapse/issues/3957)) - Fix docstrings and add tests for state store methods ([\#3958](https://github.com/matrix-org/synapse/issues/3958)) - fix docstring for FederationClient.get_state_for_room ([\#3963](https://github.com/matrix-org/synapse/issues/3963)) - Run notify_app_services as a bg process ([\#3965](https://github.com/matrix-org/synapse/issues/3965)) - Clarifications in FederationHandler ([\#3967](https://github.com/matrix-org/synapse/issues/3967)) - Further reduce the docker image size ([\#3972](https://github.com/matrix-org/synapse/issues/3972)) - Build py3 docker images for docker hub too ([\#3976](https://github.com/matrix-org/synapse/issues/3976)) - Updated the installation instructions to point to the matrix-synapse package on PyPI. ([\#3985](https://github.com/matrix-org/synapse/issues/3985)) - Disable USE_FROZEN_DICTS for unittests by default. ([\#3987](https://github.com/matrix-org/synapse/issues/3987)) - Remove unused Jenkins and development related files from the repo. ([\#3988](https://github.com/matrix-org/synapse/issues/3988)) - Improve stacktraces in certain exceptions in the logs ([\#3989](https://github.com/matrix-org/synapse/issues/3989)) Synapse 0.33.5.1 (2018-09-25) ============================= Internal Changes ---------------- - Fix incompatibility with older Twisted version in tests. Thanks @OlegGirko! ([\#3940](https://github.com/matrix-org/synapse/issues/3940)) Synapse 0.33.5 (2018-09-24) =========================== No significant changes. Synapse 0.33.5rc1 (2018-09-17) ============================== Features -------- - Python 3.5 and 3.6 support is now in beta. ([\#3576](https://github.com/matrix-org/synapse/issues/3576)) - Implement `event_format` filter param in `/sync` ([\#3790](https://github.com/matrix-org/synapse/issues/3790)) - Add synapse_admin_mau:registered_reserved_users metric to expose number of real reaserved users ([\#3846](https://github.com/matrix-org/synapse/issues/3846)) Bugfixes -------- - Remove connection ID for replication prometheus metrics, as it creates a large number of new series. ([\#3788](https://github.com/matrix-org/synapse/issues/3788)) - guest users should not be part of mau total ([\#3800](https://github.com/matrix-org/synapse/issues/3800)) - Bump dependency on pyopenssl 16.x, to avoid incompatibility with recent Twisted. ([\#3804](https://github.com/matrix-org/synapse/issues/3804)) - Fix existing room tags not coming down sync when joining a room ([\#3810](https://github.com/matrix-org/synapse/issues/3810)) - Fix jwt import check ([\#3824](https://github.com/matrix-org/synapse/issues/3824)) - fix VOIP crashes under Python 3 (issue [\#3821](https://github.com/matrix-org/synapse/issues/3821)). ([\#3835](https://github.com/matrix-org/synapse/issues/3835)) - Fix manhole so that it works with latest openssh clients ([\#3841](https://github.com/matrix-org/synapse/issues/3841)) - Fix outbound requests occasionally wedging, which can result in federation breaking between servers. ([\#3845](https://github.com/matrix-org/synapse/issues/3845)) - Show heroes if room name/canonical alias has been deleted ([\#3851](https://github.com/matrix-org/synapse/issues/3851)) - Fix handling of redacted events from federation ([\#3859](https://github.com/matrix-org/synapse/issues/3859)) - ([\#3874](https://github.com/matrix-org/synapse/issues/3874)) - Mitigate outbound federation randomly becoming wedged ([\#3875](https://github.com/matrix-org/synapse/issues/3875)) Internal Changes ---------------- - CircleCI tests now run on the potential merge of a PR. ([\#3704](https://github.com/matrix-org/synapse/issues/3704)) - http/ is now ported to Python 3. ([\#3771](https://github.com/matrix-org/synapse/issues/3771)) - Improve human readable error messages for threepid registration/account update ([\#3789](https://github.com/matrix-org/synapse/issues/3789)) - Make /sync slightly faster by avoiding needless copies ([\#3795](https://github.com/matrix-org/synapse/issues/3795)) - handlers/ is now ported to Python 3. ([\#3803](https://github.com/matrix-org/synapse/issues/3803)) - Limit the number of PDUs/EDUs per federation transaction ([\#3805](https://github.com/matrix-org/synapse/issues/3805)) - Only start postgres instance for postgres tests on Travis CI ([\#3806](https://github.com/matrix-org/synapse/issues/3806)) - tests/ is now ported to Python 3. ([\#3808](https://github.com/matrix-org/synapse/issues/3808)) - crypto/ is now ported to Python 3. ([\#3822](https://github.com/matrix-org/synapse/issues/3822)) - rest/ is now ported to Python 3. ([\#3823](https://github.com/matrix-org/synapse/issues/3823)) - add some logging for the keyring queue ([\#3826](https://github.com/matrix-org/synapse/issues/3826)) - speed up lazy loading by 2-3x ([\#3827](https://github.com/matrix-org/synapse/issues/3827)) - Improved Dockerfile to remove build requirements after building reducing the image size. ([\#3834](https://github.com/matrix-org/synapse/issues/3834)) - Disable lazy loading for incremental syncs for now ([\#3840](https://github.com/matrix-org/synapse/issues/3840)) - federation/ is now ported to Python 3. ([\#3847](https://github.com/matrix-org/synapse/issues/3847)) - Log when we retry outbound requests ([\#3853](https://github.com/matrix-org/synapse/issues/3853)) - Removed some excess logging messages. ([\#3855](https://github.com/matrix-org/synapse/issues/3855)) - Speed up purge history for rooms that have been previously purged ([\#3856](https://github.com/matrix-org/synapse/issues/3856)) - Refactor some HTTP timeout code. ([\#3857](https://github.com/matrix-org/synapse/issues/3857)) - Fix running merged builds on CircleCI ([\#3858](https://github.com/matrix-org/synapse/issues/3858)) - Fix typo in replication stream exception. ([\#3860](https://github.com/matrix-org/synapse/issues/3860)) - Add in flight real time metrics for Measure blocks ([\#3871](https://github.com/matrix-org/synapse/issues/3871)) - Disable buffering and automatic retrying in treq requests to prevent timeouts. ([\#3872](https://github.com/matrix-org/synapse/issues/3872)) - mention jemalloc in the README ([\#3877](https://github.com/matrix-org/synapse/issues/3877)) - Remove unmaintained "nuke-room-from-db.sh" script ([\#3888](https://github.com/matrix-org/synapse/issues/3888)) Synapse 0.33.4 (2018-09-07) =========================== Internal Changes ---------------- - Unignore synctl in .dockerignore to fix docker builds ([\#3802](https://github.com/matrix-org/synapse/issues/3802)) Synapse 0.33.4rc2 (2018-09-06) ============================== Pull in security fixes from v0.33.3.1 Synapse 0.33.3.1 (2018-09-06) ============================= SECURITY FIXES -------------- - Fix an issue where event signatures were not always correctly validated ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) - Fix an issue where server_acls could be circumvented for incoming events ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) Internal Changes ---------------- - Unignore synctl in .dockerignore to fix docker builds ([\#3802](https://github.com/matrix-org/synapse/issues/3802)) Synapse 0.33.4rc1 (2018-09-04) ============================== Features -------- - Support profile API endpoints on workers ([\#3659](https://github.com/matrix-org/synapse/issues/3659)) - Server notices for resource limit blocking ([\#3680](https://github.com/matrix-org/synapse/issues/3680)) - Allow guests to use /rooms/:roomId/event/:eventId ([\#3724](https://github.com/matrix-org/synapse/issues/3724)) - Add mau_trial_days config param, so that users only get counted as MAU after N days. ([\#3749](https://github.com/matrix-org/synapse/issues/3749)) - Require twisted 17.1 or later (fixes [#3741](https://github.com/matrix-org/synapse/issues/3741)). ([\#3751](https://github.com/matrix-org/synapse/issues/3751)) Bugfixes -------- - Fix error collecting prometheus metrics when run on dedicated thread due to threading concurrency issues ([\#3722](https://github.com/matrix-org/synapse/issues/3722)) - Fix bug where we resent "limit exceeded" server notices repeatedly ([\#3747](https://github.com/matrix-org/synapse/issues/3747)) - Fix bug where we broke sync when using limit_usage_by_mau but hadn't configured server notices ([\#3753](https://github.com/matrix-org/synapse/issues/3753)) - Fix 'federation_domain_whitelist' such that an empty list correctly blocks all outbound federation traffic ([\#3754](https://github.com/matrix-org/synapse/issues/3754)) - Fix tagging of server notice rooms ([\#3755](https://github.com/matrix-org/synapse/issues/3755), [\#3756](https://github.com/matrix-org/synapse/issues/3756)) - Fix 'admin_uri' config variable and error parameter to be 'admin_contact' to match the spec. ([\#3758](https://github.com/matrix-org/synapse/issues/3758)) - Don't return non-LL-member state in incremental sync state blocks ([\#3760](https://github.com/matrix-org/synapse/issues/3760)) - Fix bug in sending presence over federation ([\#3768](https://github.com/matrix-org/synapse/issues/3768)) - Fix bug where preserved threepid user comes to sign up and server is mau blocked ([\#3777](https://github.com/matrix-org/synapse/issues/3777)) Internal Changes ---------------- - Removed the link to the unmaintained matrix-synapse-auto-deploy project from the readme. ([\#3378](https://github.com/matrix-org/synapse/issues/3378)) - Refactor state module to support multiple room versions ([\#3673](https://github.com/matrix-org/synapse/issues/3673)) - The synapse.storage module has been ported to Python 3. ([\#3725](https://github.com/matrix-org/synapse/issues/3725)) - Split the state_group_cache into member and non-member state events (and so speed up LL /sync) ([\#3726](https://github.com/matrix-org/synapse/issues/3726)) - Log failure to authenticate remote servers as warnings (without stack traces) ([\#3727](https://github.com/matrix-org/synapse/issues/3727)) - The CONTRIBUTING guidelines have been updated to mention our use of Markdown and that .misc files have content. ([\#3730](https://github.com/matrix-org/synapse/issues/3730)) - Reference the need for an HTTP replication port when using the federation_reader worker ([\#3734](https://github.com/matrix-org/synapse/issues/3734)) - Fix minor spelling error in federation client documentation. ([\#3735](https://github.com/matrix-org/synapse/issues/3735)) - Remove redundant state resolution function ([\#3737](https://github.com/matrix-org/synapse/issues/3737)) - The test suite now passes on PostgreSQL. ([\#3740](https://github.com/matrix-org/synapse/issues/3740)) - Fix MAU cache invalidation due to missing yield ([\#3746](https://github.com/matrix-org/synapse/issues/3746)) - Make sure that we close db connections opened during init ([\#3764](https://github.com/matrix-org/synapse/issues/3764)) Synapse 0.33.3 (2018-08-22) =========================== Bugfixes -------- - Fix bug introduced in v0.33.3rc1 which made the ToS give a 500 error ([\#3732](https://github.com/matrix-org/synapse/issues/3732)) Synapse 0.33.3rc2 (2018-08-21) ============================== Bugfixes -------- - Fix bug in v0.33.3rc1 which caused infinite loops and OOMs ([\#3723](https://github.com/matrix-org/synapse/issues/3723)) Synapse 0.33.3rc1 (2018-08-21) ============================== Features -------- - Add support for the SNI extension to federation TLS connections. Thanks to @vojeroen! ([\#3439](https://github.com/matrix-org/synapse/issues/3439)) - Add /_media/r0/config ([\#3184](https://github.com/matrix-org/synapse/issues/3184)) - speed up /members API and add `at` and `membership` params as per MSC1227 ([\#3568](https://github.com/matrix-org/synapse/issues/3568)) - implement `summary` block in /sync response as per MSC688 ([\#3574](https://github.com/matrix-org/synapse/issues/3574)) - Add lazy-loading support to /messages as per MSC1227 ([\#3589](https://github.com/matrix-org/synapse/issues/3589)) - Add ability to limit number of monthly active users on the server ([\#3633](https://github.com/matrix-org/synapse/issues/3633)) - Support more federation endpoints on workers ([\#3653](https://github.com/matrix-org/synapse/issues/3653)) - Basic support for room versioning ([\#3654](https://github.com/matrix-org/synapse/issues/3654)) - Ability to disable client/server Synapse via conf toggle ([\#3655](https://github.com/matrix-org/synapse/issues/3655)) - Ability to whitelist specific threepids against monthly active user limiting ([\#3662](https://github.com/matrix-org/synapse/issues/3662)) - Add some metrics for the appservice and federation event sending loops ([\#3664](https://github.com/matrix-org/synapse/issues/3664)) - Where server is disabled, block ability for locked out users to read new messages ([\#3670](https://github.com/matrix-org/synapse/issues/3670)) - set admin uri via config, to be used in error messages where the user should contact the administrator ([\#3687](https://github.com/matrix-org/synapse/issues/3687)) - Synapse's presence functionality can now be disabled with the "use_presence" configuration option. ([\#3694](https://github.com/matrix-org/synapse/issues/3694)) - For resource limit blocked users, prevent writing into rooms ([\#3708](https://github.com/matrix-org/synapse/issues/3708)) Bugfixes -------- - Fix occasional glitches in the synapse_event_persisted_position metric ([\#3658](https://github.com/matrix-org/synapse/issues/3658)) - Fix bug on deleting 3pid when using identity servers that don't support unbind API ([\#3661](https://github.com/matrix-org/synapse/issues/3661)) - Make the tests pass on Twisted < 18.7.0 ([\#3676](https://github.com/matrix-org/synapse/issues/3676)) - Don’t ship recaptcha_ajax.js, use it directly from Google ([\#3677](https://github.com/matrix-org/synapse/issues/3677)) - Fixes test_reap_monthly_active_users so it passes under postgres ([\#3681](https://github.com/matrix-org/synapse/issues/3681)) - Fix mau blocking calculation bug on login ([\#3689](https://github.com/matrix-org/synapse/issues/3689)) - Fix missing yield in synapse.storage.monthly_active_users.initialise_reserved_users ([\#3692](https://github.com/matrix-org/synapse/issues/3692)) - Improve HTTP request logging to include all requests ([\#3700](https://github.com/matrix-org/synapse/issues/3700)) - Avoid timing out requests while we are streaming back the response ([\#3701](https://github.com/matrix-org/synapse/issues/3701)) - Support more federation endpoints on workers ([\#3705](https://github.com/matrix-org/synapse/issues/3705), [\#3713](https://github.com/matrix-org/synapse/issues/3713)) - Fix "Starting db txn 'get_all_updated_receipts' from sentinel context" warning ([\#3710](https://github.com/matrix-org/synapse/issues/3710)) - Fix bug where `state_cache` cache factor ignored environment variables ([\#3719](https://github.com/matrix-org/synapse/issues/3719)) Deprecations and Removals ------------------------- - The Shared-Secret registration method of the legacy v1/register REST endpoint has been removed. For a replacement, please see [the admin/register API documentation](https://github.com/matrix-org/synapse/blob/master/docs/admin_api/register_api.rst). ([\#3703](https://github.com/matrix-org/synapse/issues/3703)) Internal Changes ---------------- - The test suite now can run under PostgreSQL. ([\#3423](https://github.com/matrix-org/synapse/issues/3423)) - Refactor HTTP replication endpoints to reduce code duplication ([\#3632](https://github.com/matrix-org/synapse/issues/3632)) - Tests now correctly execute on Python 3. ([\#3647](https://github.com/matrix-org/synapse/issues/3647)) - Sytests can now be run inside a Docker container. ([\#3660](https://github.com/matrix-org/synapse/issues/3660)) - Port over enough to Python 3 to allow the sytests to start. ([\#3668](https://github.com/matrix-org/synapse/issues/3668)) - Update docker base image from alpine 3.7 to 3.8. ([\#3669](https://github.com/matrix-org/synapse/issues/3669)) - Rename synapse.util.async to synapse.util.async_helpers to mitigate async becoming a keyword on Python 3.7. ([\#3678](https://github.com/matrix-org/synapse/issues/3678)) - Synapse's tests are now formatted with the black autoformatter. ([\#3679](https://github.com/matrix-org/synapse/issues/3679)) - Implemented a new testing base class to reduce test boilerplate. ([\#3684](https://github.com/matrix-org/synapse/issues/3684)) - Rename MAU prometheus metrics ([\#3690](https://github.com/matrix-org/synapse/issues/3690)) - add new error type ResourceLimit ([\#3707](https://github.com/matrix-org/synapse/issues/3707)) - Logcontexts for replication command handlers ([\#3709](https://github.com/matrix-org/synapse/issues/3709)) - Update admin register API documentation to reference a real user ID. ([\#3712](https://github.com/matrix-org/synapse/issues/3712)) Synapse 0.33.2 (2018-08-09) =========================== No significant changes. Synapse 0.33.2rc1 (2018-08-07) ============================== Features -------- - add support for the lazy_loaded_members filter as per MSC1227 ([\#2970](https://github.com/matrix-org/synapse/issues/2970)) - add support for the include_redundant_members filter param as per MSC1227 ([\#3331](https://github.com/matrix-org/synapse/issues/3331)) - Add metrics to track resource usage by background processes ([\#3553](https://github.com/matrix-org/synapse/issues/3553), [\#3556](https://github.com/matrix-org/synapse/issues/3556), [\#3604](https://github.com/matrix-org/synapse/issues/3604), [\#3610](https://github.com/matrix-org/synapse/issues/3610)) - Add `code` label to `synapse_http_server_response_time_seconds` prometheus metric ([\#3554](https://github.com/matrix-org/synapse/issues/3554)) - Add support for client_reader to handle more APIs ([\#3555](https://github.com/matrix-org/synapse/issues/3555), [\#3597](https://github.com/matrix-org/synapse/issues/3597)) - make the /context API filter & lazy-load aware as per MSC1227 ([\#3567](https://github.com/matrix-org/synapse/issues/3567)) - Add ability to limit number of monthly active users on the server ([\#3630](https://github.com/matrix-org/synapse/issues/3630)) - When we fail to join a room over federation, pass the error code back to the client. ([\#3639](https://github.com/matrix-org/synapse/issues/3639)) - Add a new /admin/register API for non-interactively creating users. ([\#3415](https://github.com/matrix-org/synapse/issues/3415)) Bugfixes -------- - Make /directory/list API return 404 for room not found instead of 400. Thanks to @fuzzmz! ([\#3620](https://github.com/matrix-org/synapse/issues/3620)) - Default inviter_display_name to mxid for email invites ([\#3391](https://github.com/matrix-org/synapse/issues/3391)) - Don't generate TURN credentials if no TURN config options are set ([\#3514](https://github.com/matrix-org/synapse/issues/3514)) - Correctly announce deleted devices over federation ([\#3520](https://github.com/matrix-org/synapse/issues/3520)) - Catch failures saving metrics captured by Measure, and instead log the faulty metrics information for further analysis. ([\#3548](https://github.com/matrix-org/synapse/issues/3548)) - Unicode passwords are now normalised before hashing, preventing the instance where two different devices or browsers might send a different UTF-8 sequence for the password. ([\#3569](https://github.com/matrix-org/synapse/issues/3569)) - Fix potential stack overflow and deadlock under heavy load ([\#3570](https://github.com/matrix-org/synapse/issues/3570)) - Respond with M_NOT_FOUND when profiles are not found locally or over federation. Fixes [\#3585](https://github.com/matrix-org/synapse/issues/3585). ([\#3585](https://github.com/matrix-org/synapse/issues/3585)) - Fix failure to persist events over federation under load ([\#3601](https://github.com/matrix-org/synapse/issues/3601)) - Fix updating of cached remote profiles ([\#3605](https://github.com/matrix-org/synapse/issues/3605)) - Fix 'tuple index out of range' error ([\#3607](https://github.com/matrix-org/synapse/issues/3607)) - Only import secrets when available (fix for py < 3.6) ([\#3626](https://github.com/matrix-org/synapse/issues/3626)) Internal Changes ---------------- - Remove redundant checks on who_forgot_in_room ([\#3350](https://github.com/matrix-org/synapse/issues/3350)) - Remove unnecessary event re-signing hacks ([\#3367](https://github.com/matrix-org/synapse/issues/3367)) - Rewrite cache list decorator ([\#3384](https://github.com/matrix-org/synapse/issues/3384)) - Move v1-only REST APIs into their own module. ([\#3460](https://github.com/matrix-org/synapse/issues/3460)) - Replace more instances of Python 2-only iteritems and itervalues uses. ([\#3562](https://github.com/matrix-org/synapse/issues/3562)) - Refactor EventContext to accept state during init ([\#3577](https://github.com/matrix-org/synapse/issues/3577)) - Improve Dockerfile and docker-compose instructions ([\#3543](https://github.com/matrix-org/synapse/issues/3543)) - Release notes are now in the Markdown format. ([\#3552](https://github.com/matrix-org/synapse/issues/3552)) - add config for pep8 ([\#3559](https://github.com/matrix-org/synapse/issues/3559)) - Merge Linearizer and Limiter ([\#3571](https://github.com/matrix-org/synapse/issues/3571), [\#3572](https://github.com/matrix-org/synapse/issues/3572)) - Lazily load state on master process when using workers to reduce DB consumption ([\#3579](https://github.com/matrix-org/synapse/issues/3579), [\#3581](https://github.com/matrix-org/synapse/issues/3581), [\#3582](https://github.com/matrix-org/synapse/issues/3582), [\#3584](https://github.com/matrix-org/synapse/issues/3584)) - Fixes and optimisations for resolve_state_groups ([\#3586](https://github.com/matrix-org/synapse/issues/3586)) - Improve logging for exceptions when handling PDUs ([\#3587](https://github.com/matrix-org/synapse/issues/3587)) - Add some measure blocks to persist_events ([\#3590](https://github.com/matrix-org/synapse/issues/3590)) - Fix some random logcontext leaks. ([\#3591](https://github.com/matrix-org/synapse/issues/3591), [\#3606](https://github.com/matrix-org/synapse/issues/3606)) - Speed up calculating state deltas in persist_event loop ([\#3592](https://github.com/matrix-org/synapse/issues/3592)) - Attempt to reduce amount of state pulled out of DB during persist_events ([\#3595](https://github.com/matrix-org/synapse/issues/3595)) - Fix a documentation typo in on_make_leave_request ([\#3609](https://github.com/matrix-org/synapse/issues/3609)) - Make EventStore inherit from EventFederationStore ([\#3612](https://github.com/matrix-org/synapse/issues/3612)) - Remove some redundant joins on event_edges.room_id ([\#3613](https://github.com/matrix-org/synapse/issues/3613)) - Stop populating events.content ([\#3614](https://github.com/matrix-org/synapse/issues/3614)) - Update the /send_leave path registration to use event_id rather than a transaction ID. ([\#3616](https://github.com/matrix-org/synapse/issues/3616)) - Refactor FederationHandler to move DB writes into separate functions ([\#3621](https://github.com/matrix-org/synapse/issues/3621)) - Remove unused field "pdu_failures" from transactions. ([\#3628](https://github.com/matrix-org/synapse/issues/3628)) - rename replication_layer to federation_client ([\#3634](https://github.com/matrix-org/synapse/issues/3634)) - Factor out exception handling in federation_client ([\#3638](https://github.com/matrix-org/synapse/issues/3638)) - Refactor location of docker build script. ([\#3644](https://github.com/matrix-org/synapse/issues/3644)) - Update CONTRIBUTING to mention newsfragments. ([\#3645](https://github.com/matrix-org/synapse/issues/3645)) Synapse 0.33.1 (2018-08-02) =========================== SECURITY FIXES -------------- - Fix a potential issue where servers could request events for rooms they have not joined. ([\#3641](https://github.com/matrix-org/synapse/issues/3641)) - Fix a potential issue where users could see events in private rooms before they joined. ([\#3642](https://github.com/matrix-org/synapse/issues/3642)) Synapse 0.33.0 (2018-07-19) =========================== Bugfixes -------- - Disable a noisy warning about logcontexts. ([\#3561](https://github.com/matrix-org/synapse/issues/3561)) Synapse 0.33.0rc1 (2018-07-18) ============================== Features -------- - Enforce the specified API for `report_event`. ([\#3316](https://github.com/matrix-org/synapse/issues/3316)) - Include CPU time from database threads in request/block metrics. ([\#3496](https://github.com/matrix-org/synapse/issues/3496), [\#3501](https://github.com/matrix-org/synapse/issues/3501)) - Add CPU metrics for `_fetch_event_list`. ([\#3497](https://github.com/matrix-org/synapse/issues/3497)) - Optimisation to make handling incoming federation requests more efficient. ([\#3541](https://github.com/matrix-org/synapse/issues/3541)) Bugfixes -------- - Fix a significant performance regression in /sync. ([\#3505](https://github.com/matrix-org/synapse/issues/3505), [\#3521](https://github.com/matrix-org/synapse/issues/3521), [\#3530](https://github.com/matrix-org/synapse/issues/3530), [\#3544](https://github.com/matrix-org/synapse/issues/3544)) - Use more portable syntax in our use of the attrs package, widening the supported versions. ([\#3498](https://github.com/matrix-org/synapse/issues/3498)) - Fix queued federation requests being processed in the wrong order. ([\#3533](https://github.com/matrix-org/synapse/issues/3533)) - Ensure that erasure requests are correctly honoured for publicly accessible rooms when accessed over federation. ([\#3546](https://github.com/matrix-org/synapse/issues/3546)) Misc ---- - Refactoring to improve testability. ([\#3351](https://github.com/matrix-org/synapse/issues/3351), [\#3499](https://github.com/matrix-org/synapse/issues/3499)) - Use `isort` to sort imports. ([\#3463](https://github.com/matrix-org/synapse/issues/3463), [\#3464](https://github.com/matrix-org/synapse/issues/3464), [\#3540](https://github.com/matrix-org/synapse/issues/3540)) - Use parse and asserts from http.servlet. ([\#3534](https://github.com/matrix-org/synapse/issues/3534), [\#3535](https://github.com/matrix-org/synapse/issues/3535)). Synapse 0.32.2 (2018-07-07) =========================== Bugfixes -------- - Amend the Python dependencies to depend on attrs from PyPI, not attr ([\#3492](https://github.com/matrix-org/synapse/issues/3492)) Synapse 0.32.1 (2018-07-06) =========================== Bugfixes -------- - Add explicit dependency on netaddr ([\#3488](https://github.com/matrix-org/synapse/issues/3488)) Changes in synapse v0.32.0 (2018-07-06) ======================================= No changes since 0.32.0rc1 Synapse 0.32.0rc1 (2018-07-05) ============================== Features -------- - Add blacklist & whitelist of servers allowed to send events to a room via `m.room.server_acl` event. - Cache factor override system for specific caches ([\#3334](https://github.com/matrix-org/synapse/issues/3334)) - Add metrics to track appservice transactions ([\#3344](https://github.com/matrix-org/synapse/issues/3344)) - Try to log more helpful info when a sig verification fails ([\#3372](https://github.com/matrix-org/synapse/issues/3372)) - Synapse now uses the best performing JSON encoder/decoder according to your runtime (simplejson on CPython, stdlib json on PyPy). ([\#3462](https://github.com/matrix-org/synapse/issues/3462)) - Add optional `ip_range_whitelist` param to AS registration files to lock AS IP access ([\#3465](https://github.com/matrix-org/synapse/issues/3465)) - Reject invalid server names in federation requests ([\#3480](https://github.com/matrix-org/synapse/issues/3480)) - Reject invalid server names in homeserver.yaml ([\#3483](https://github.com/matrix-org/synapse/issues/3483)) Bugfixes -------- - Strip `access_token` from outgoing requests ([\#3327](https://github.com/matrix-org/synapse/issues/3327)) - Redact AS tokens in logs ([\#3349](https://github.com/matrix-org/synapse/issues/3349)) - Fix federation backfill from SQLite servers ([\#3355](https://github.com/matrix-org/synapse/issues/3355)) - Fix event-purge-by-ts admin API ([\#3363](https://github.com/matrix-org/synapse/issues/3363)) - Fix event filtering in `get_missing_events` handler ([\#3371](https://github.com/matrix-org/synapse/issues/3371)) - Synapse is now stricter regarding accepting events which it cannot retrieve the `prev_events` for. ([\#3456](https://github.com/matrix-org/synapse/issues/3456)) - Fix bug where synapse would explode when receiving unicode in HTTP User-Agent header ([\#3470](https://github.com/matrix-org/synapse/issues/3470)) - Invalidate cache on correct thread to avoid race ([\#3473](https://github.com/matrix-org/synapse/issues/3473)) Improved Documentation ---------------------- - `doc/postgres.rst`: fix display of the last command block. Thanks to @ArchangeGabriel! ([\#3340](https://github.com/matrix-org/synapse/issues/3340)) Deprecations and Removals ------------------------- - Remove `was_forgotten_at` ([\#3324](https://github.com/matrix-org/synapse/issues/3324)) Misc ---- - [\#3332](https://github.com/matrix-org/synapse/issues/3332), [\#3341](https://github.com/matrix-org/synapse/issues/3341), [\#3347](https://github.com/matrix-org/synapse/issues/3347), [\#3348](https://github.com/matrix-org/synapse/issues/3348), [\#3356](https://github.com/matrix-org/synapse/issues/3356), [\#3385](https://github.com/matrix-org/synapse/issues/3385), [\#3446](https://github.com/matrix-org/synapse/issues/3446), [\#3447](https://github.com/matrix-org/synapse/issues/3447), [\#3467](https://github.com/matrix-org/synapse/issues/3467), [\#3474](https://github.com/matrix-org/synapse/issues/3474) Changes in synapse v0.31.2 (2018-06-14) ======================================= SECURITY UPDATE: Prevent unauthorised users from setting state events in a room when there is no `m.room.power_levels` event in force in the room. ([\#3397](https://github.com/matrix-org/synapse/issues/3397)) Discussion around the Matrix Spec change proposal for this change can be followed at . Changes in synapse v0.31.1 (2018-06-08) ======================================= v0.31.1 fixes a security bug in the `get_missing_events` federation API where event visibility rules were not applied correctly. We are not aware of it being actively exploited but please upgrade asap. Bug Fixes: - Fix event filtering in `get_missing_events` handler. ([\#3371](https://github.com/matrix-org/synapse/issues/3371)) Changes in synapse v0.31.0 (2018-06-06) ======================================= Most notable change from v0.30.0 is to switch to the python prometheus library to improve system stats reporting. WARNING: this changes a number of prometheus metrics in a backwards-incompatible manner. For more details, see [docs/metrics-howto.rst](docs/metrics-howto.rst#removal-of-deprecated-metrics--time-based-counters-becoming-histograms-in-0310). Bug Fixes: - Fix metric documentation tables. ([\#3341](https://github.com/matrix-org/synapse/issues/3341)) - Fix LaterGauge error handling (694968f) - Fix replication metrics (b7e7fd2) Changes in synapse v0.31.0-rc1 (2018-06-04) =========================================== Features: - Switch to the Python Prometheus library. ([\#3256](https://github.com/matrix-org/synapse/issues/3256), [\#3274](https://github.com/matrix-org/synapse/issues/3274)) - Let users leave the server notice room after joining. ([\#3287](https://github.com/matrix-org/synapse/issues/3287)) Changes: - daily user type phone home stats. ([\#3264](https://github.com/matrix-org/synapse/issues/3264)) - Use `iter*` methods for `_filter_events_for_server`. ([\#3267](https://github.com/matrix-org/synapse/issues/3267)) - Docs on consent bits. ([\#3268](https://github.com/matrix-org/synapse/issues/3268)) - Remove users from user directory on deactivate. ([\#3277](https://github.com/matrix-org/synapse/issues/3277)) - Avoid sending consent notice to guest users. ([\#3288](https://github.com/matrix-org/synapse/issues/3288)) - disable CPUMetrics if no /proc/self/stat. ([\#3299](https://github.com/matrix-org/synapse/issues/3299)) - Consistently use six's iteritems and wrap lazy keys/values in list() if they're not meant to be lazy. ([\#3307](https://github.com/matrix-org/synapse/issues/3307)) - Add private IPv6 addresses to example config for url preview blacklist. Thanks to @thegcat! ([\#3317](https://github.com/matrix-org/synapse/issues/3317)) - Reduce stuck read-receipts: ignore depth when updating. ([\#3318](https://github.com/matrix-org/synapse/issues/3318)) - Put python's logs into Trial when running unit tests. ([\#3319](https://github.com/matrix-org/synapse/issues/3319)) Changes, python 3 migration: - Replace some more comparisons with six. Thanks to @NotAFile! ([\#3243](https://github.com/matrix-org/synapse/issues/3243)) - replace some iteritems with six. Thanks to @NotAFile! ([\#3244](https://github.com/matrix-org/synapse/issues/3244)) - Add `batch_iter` to utils. Thanks to @NotAFile! ([\#3245](https://github.com/matrix-org/synapse/issues/3245)) - use repr, not str. Thanks to @NotAFile! ([\#3246](https://github.com/matrix-org/synapse/issues/3246)) - Misc Python3 fixes. Thanks to @NotAFile! ([\#3247](https://github.com/matrix-org/synapse/issues/3247)) - Py3 `storage/_base.py`. Thanks to @NotAFile! ([\#3278](https://github.com/matrix-org/synapse/issues/3278)) - more six iteritems. Thanks to @NotAFile! ([\#3279](https://github.com/matrix-org/synapse/issues/3279)) - More Misc. py3 fixes. Thanks to @NotAFile! ([\#3280](https://github.com/matrix-org/synapse/issues/3280)) - remaining isintance fixes. Thanks to @NotAFile! ([\#3281](https://github.com/matrix-org/synapse/issues/3281)) - py3-ize state.py. Thanks to @NotAFile! ([\#3283](https://github.com/matrix-org/synapse/issues/3283)) - extend tox testing for py3 to avoid regressions. Thanks to @krombel! ([\#3302](https://github.com/matrix-org/synapse/issues/3302)) - use memoryview in py3. Thanks to @NotAFile! ([\#3303](https://github.com/matrix-org/synapse/issues/3303)) Bugs: - Fix federation backfill bugs. ([\#3261](https://github.com/matrix-org/synapse/issues/3261)) - federation: fix LaterGauge usage. Thanks to @intelfx! ([\#3328](https://github.com/matrix-org/synapse/issues/3328)) Changes in synapse v0.30.0 (2018-05-24) ======================================= "Server Notices" are a new feature introduced in Synapse 0.30. They provide a channel whereby server administrators can send messages to users on the server. They are used as part of communication of the server policies (see `docs/consent_tracking.md`), however the intention is that they may also find a use for features such as "Message of the day". This feature is specific to Synapse, but uses standard Matrix communication mechanisms, so should work with any Matrix client. For more details see `docs/server_notices.md` Further Server Notices/Consent Tracking Support: - Allow overriding the `server_notices` user's avatar. ([\#3273](https://github.com/matrix-org/synapse/issues/3273)) - Use the localpart in the consent uri. ([\#3272](https://github.com/matrix-org/synapse/issues/3272)) - Support for putting `%(consent_uri)s` in messages. ([\#3271](https://github.com/matrix-org/synapse/issues/3271)) - Block attempts to send server notices to remote users. ([\#3270](https://github.com/matrix-org/synapse/issues/3270)) - Docs on consent bits. ([\#3268](https://github.com/matrix-org/synapse/issues/3268)) Changes in synapse v0.30.0-rc1 (2018-05-23) =========================================== Server Notices/Consent Tracking Support: - ConsentResource to gather policy consent from users. ([\#3213](https://github.com/matrix-org/synapse/issues/3213)) - Move RoomCreationHandler out of synapse.handlers.Handlers. ([\#3225](https://github.com/matrix-org/synapse/issues/3225)) - Infrastructure for a server notices room. ([\#3232](https://github.com/matrix-org/synapse/issues/3232)) - Send users a server notice about consent. ([\#3236](https://github.com/matrix-org/synapse/issues/3236)) - Reject attempts to send event before privacy consent is given. ([\#3257](https://github.com/matrix-org/synapse/issues/3257)) - Add a `has_consented` template var to consent forms. ([\#3262](https://github.com/matrix-org/synapse/issues/3262)) - Fix dependency on jinja2. ([\#3263](https://github.com/matrix-org/synapse/issues/3263)) Features: - Cohort analytics. ([\#3163](https://github.com/matrix-org/synapse/issues/3163), [\#3241](https://github.com/matrix-org/synapse/issues/3241), [\#3251](https://github.com/matrix-org/synapse/issues/3251)) - Add lxml to docker image for web previews. Thanks to @ptman! ([\#3239](https://github.com/matrix-org/synapse/issues/3239)) - Add in flight request metrics. ([\#3252](https://github.com/matrix-org/synapse/issues/3252)) Changes: - Remove unused `update_external_syncs`. ([\#3233](https://github.com/matrix-org/synapse/issues/3233)) - Use stream rather depth ordering for push actions. ([\#3212](https://github.com/matrix-org/synapse/issues/3212)) - Make `purge_history` operate on tokens. ([\#3221](https://github.com/matrix-org/synapse/issues/3221)) - Don't support limitless pagination. ([\#3265](https://github.com/matrix-org/synapse/issues/3265)) Bug Fixes: - Fix logcontext resource usage tracking. ([\#3258](https://github.com/matrix-org/synapse/issues/3258)) - Fix error in handling receipts. ([\#3235](https://github.com/matrix-org/synapse/issues/3235)) - Stop the transaction cache caching failures. ([\#3255](https://github.com/matrix-org/synapse/issues/3255)) Changes in synapse v0.29.1 (2018-05-17) ======================================= Changes: - Update docker documentation. ([\#3222](https://github.com/matrix-org/synapse/issues/3222)) Changes in synapse v0.29.0 (2018-05-16) ======================================= Not changes since v0.29.0-rc1 Changes in synapse v0.29.0-rc1 (2018-05-14) =========================================== Notable changes, a docker file for running Synapse (Thanks to @kaiyou!) and a closed spec bug in the Client Server API. Additionally further prep for Python 3 migration. Potentially breaking change: - Make Client-Server API return 401 for invalid token. ([\#3161](https://github.com/matrix-org/synapse/issues/3161)) This changes the Client-server spec to return a 401 error code instead of 403 when the access token is unrecognised. This is the behaviour required by the specification, but some clients may be relying on the old, incorrect behaviour. Thanks to @NotAFile for fixing this. Features: - Add a Dockerfile for synapse. Thanks to @kaiyou! ([\#2846](https://github.com/matrix-org/synapse/issues/2846)) Changes - General: - nuke-room-from-db.sh: added postgresql option and help. Thanks to @rubo77! ([\#2337](https://github.com/matrix-org/synapse/issues/2337)) - Part user from rooms on account deactivate. ([\#3201](https://github.com/matrix-org/synapse/issues/3201)) - Make "unexpected logging context" into warnings. ([\#3007](https://github.com/matrix-org/synapse/issues/3007)) - Set Server header in SynapseRequest. ([\#3208](https://github.com/matrix-org/synapse/issues/3208)) - remove duplicates from groups tables. ([\#3129](https://github.com/matrix-org/synapse/issues/3129)) - Improve exception handling for background processes. ([\#3138](https://github.com/matrix-org/synapse/issues/3138)) - Add missing consumeErrors to improve exception handling. ([\#3139](https://github.com/matrix-org/synapse/issues/3139)) - reraise exceptions more carefully. ([\#3142](https://github.com/matrix-org/synapse/issues/3142)) - Remove redundant call to `preserve_fn`. ([\#3143](https://github.com/matrix-org/synapse/issues/3143)) - Trap exceptions thrown within `run_in_background`. ([\#3144](https://github.com/matrix-org/synapse/issues/3144)) Changes - Refactors: - Refactor /context to reuse pagination storage functions. ([\#3193](https://github.com/matrix-org/synapse/issues/3193)) - Refactor recent events func to use pagination func. ([\#3195](https://github.com/matrix-org/synapse/issues/3195)) - Refactor pagination DB API to return concrete type. ([\#3196](https://github.com/matrix-org/synapse/issues/3196)) - Refactor `get_recent_events_for_room` return type. ([\#3198](https://github.com/matrix-org/synapse/issues/3198)) - Refactor sync APIs to reuse pagination API. ([\#3199](https://github.com/matrix-org/synapse/issues/3199)) - Remove unused code path from member change DB func. ([\#3200](https://github.com/matrix-org/synapse/issues/3200)) - Refactor request handling wrappers. ([\#3203](https://github.com/matrix-org/synapse/issues/3203)) - `transaction_id`, destination defined twice. Thanks to @damir-manapov! ([\#3209](https://github.com/matrix-org/synapse/issues/3209)) - Refactor event storage to prepare for changes in state calculations. ([\#3141](https://github.com/matrix-org/synapse/issues/3141)) - Set Server header in SynapseRequest. ([\#3208](https://github.com/matrix-org/synapse/issues/3208)) - Use deferred.addTimeout instead of `time_bound_deferred`. ([\#3127](https://github.com/matrix-org/synapse/issues/3127), [\#3178](https://github.com/matrix-org/synapse/issues/3178)) - Use `run_in_background` in preference to `preserve_fn`. ([\#3140](https://github.com/matrix-org/synapse/issues/3140)) Changes - Python 3 migration: - Construct HMAC as bytes on py3. Thanks to @NotAFile! ([\#3156](https://github.com/matrix-org/synapse/issues/3156)) - run config tests on py3. Thanks to @NotAFile! ([\#3159](https://github.com/matrix-org/synapse/issues/3159)) - Open certificate files as bytes. Thanks to @NotAFile! ([\#3084](https://github.com/matrix-org/synapse/issues/3084)) - Open config file in non-bytes mode. Thanks to @NotAFile! ([\#3085](https://github.com/matrix-org/synapse/issues/3085)) - Make event properties raise AttributeError instead. Thanks to @NotAFile! ([\#3102](https://github.com/matrix-org/synapse/issues/3102)) - Use six.moves.urlparse. Thanks to @NotAFile! ([\#3108](https://github.com/matrix-org/synapse/issues/3108)) - Add py3 tests to tox with folders that work. Thanks to @NotAFile! ([\#3145](https://github.com/matrix-org/synapse/issues/3145)) - Don't yield in list comprehensions. Thanks to @NotAFile! ([\#3150](https://github.com/matrix-org/synapse/issues/3150)) - Move more xrange to six. Thanks to @NotAFile! ([\#3151](https://github.com/matrix-org/synapse/issues/3151)) - make imports local. Thanks to @NotAFile! ([\#3152](https://github.com/matrix-org/synapse/issues/3152)) - move httplib import to six. Thanks to @NotAFile! ([\#3153](https://github.com/matrix-org/synapse/issues/3153)) - Replace stringIO imports with six. Thanks to @NotAFile! ([\#3154](https://github.com/matrix-org/synapse/issues/3154), [\#3168](https://github.com/matrix-org/synapse/issues/3168)) - more bytes strings. Thanks to @NotAFile! ([\#3155](https://github.com/matrix-org/synapse/issues/3155)) Bug Fixes: - synapse fails to start under Twisted >= 18.4. ([\#3157](https://github.com/matrix-org/synapse/issues/3157)) - Fix a class of logcontext leaks. ([\#3170](https://github.com/matrix-org/synapse/issues/3170)) - Fix a couple of logcontext leaks in unit tests. ([\#3172](https://github.com/matrix-org/synapse/issues/3172)) - Fix logcontext leak in media repo. ([\#3174](https://github.com/matrix-org/synapse/issues/3174)) - Escape label values in prometheus metrics. ([\#3175](https://github.com/matrix-org/synapse/issues/3175), [\#3186](https://github.com/matrix-org/synapse/issues/3186)) - Fix "Unhandled Error" logs with Twisted 18.4. Thanks to @Half-Shot! ([\#3182](https://github.com/matrix-org/synapse/issues/3182)) - Fix logcontext leaks in rate limiter. ([\#3183](https://github.com/matrix-org/synapse/issues/3183)) - notifications: Convert `next_token` to string according to the spec. Thanks to @mujx! ([\#3190](https://github.com/matrix-org/synapse/issues/3190)) - nuke-room-from-db.sh: fix deletion from search table. Thanks to @rubo77! ([\#3194](https://github.com/matrix-org/synapse/issues/3194)) - add guard for None on `purge_history` api. Thanks to @krombel! ([\#3160](https://github.com/matrix-org/synapse/issues/3160)) Changes in synapse v0.28.1 (2018-05-01) ======================================= SECURITY UPDATE - Clamp the allowed values of event depth received over federation to be `[0, 2^63 - 1]`. This mitigates an attack where malicious events injected with `depth = 2^63 - 1` render rooms unusable. Depth is used to determine the cosmetic ordering of events within a room, and so the ordering of events in such a room will default to using `stream_ordering` rather than `depth` (topological ordering). This is a temporary solution to mitigate abuse in the wild, whilst a long term solution is being implemented to improve how the depth parameter is used. Full details at - Pin Twisted to <18.4 until we stop using the private `_OpenSSLECCurve` API. Changes in synapse v0.28.0 (2018-04-26) ======================================= Bug Fixes: - Fix quarantine media admin API and search reindex. ([\#3130](https://github.com/matrix-org/synapse/issues/3130)) - Fix media admin APIs. ([\#3134](https://github.com/matrix-org/synapse/issues/3134)) Changes in synapse v0.28.0-rc1 (2018-04-24) =========================================== Minor performance improvement to federation sending and bug fixes. (Note: This release does not include the delta state resolution implementation discussed in matrix live) Features: - Add metrics for event processing lag. ([\#3090](https://github.com/matrix-org/synapse/issues/3090)) - Add metrics for ResponseCache. ([\#3092](https://github.com/matrix-org/synapse/issues/3092)) Changes: - Synapse on PyPy. Thanks to @Valodim! ([\#2760](https://github.com/matrix-org/synapse/issues/2760)) - move handling of `auto_join_rooms` to RegisterHandler. Thanks to @krombel! ([\#2996](https://github.com/matrix-org/synapse/issues/2996)) - Improve handling of SRV records for federation connections. Thanks to @silkeh! ([\#3016](https://github.com/matrix-org/synapse/issues/3016)) - Document the behaviour of ResponseCache. ([\#3059](https://github.com/matrix-org/synapse/issues/3059)) - Preparation for py3. Thanks to @NotAFile! ([\#3061](https://github.com/matrix-org/synapse/issues/3061), [\#3073](https://github.com/matrix-org/synapse/issues/3073), [\#3074](https://github.com/matrix-org/synapse/issues/3074), [\#3075](https://github.com/matrix-org/synapse/issues/3075), [\#3103](https://github.com/matrix-org/synapse/issues/3103), [\#3104](https://github.com/matrix-org/synapse/issues/3104), [\#3106](https://github.com/matrix-org/synapse/issues/3106), [\#3107](https://github.com/matrix-org/synapse/issues/3107), [\#3109](https://github.com/matrix-org/synapse/issues/3109), [\#3110](https://github.com/matrix-org/synapse/issues/3110)) - update prometheus dashboard to use new metric names. Thanks to @krombel! ([\#3069](https://github.com/matrix-org/synapse/issues/3069)) - use python3-compatible prints. Thanks to @NotAFile! ([\#3074](https://github.com/matrix-org/synapse/issues/3074)) - Send federation events concurrently. ([\#3078](https://github.com/matrix-org/synapse/issues/3078)) - Limit concurrent event sends for a room. ([\#3079](https://github.com/matrix-org/synapse/issues/3079)) - Improve R30 stat definition. ([\#3086](https://github.com/matrix-org/synapse/issues/3086)) - Send events to ASes concurrently. ([\#3088](https://github.com/matrix-org/synapse/issues/3088)) - Refactor ResponseCache usage. ([\#3093](https://github.com/matrix-org/synapse/issues/3093)) - Clarify that SRV may not point to a CNAME. Thanks to @silkeh! ([\#3100](https://github.com/matrix-org/synapse/issues/3100)) - Use str(e) instead of e.message. Thanks to @NotAFile! ([\#3103](https://github.com/matrix-org/synapse/issues/3103)) - Use six.itervalues in some places. Thanks to @NotAFile! ([\#3106](https://github.com/matrix-org/synapse/issues/3106)) - Refactor `store.have_events`. ([\#3117](https://github.com/matrix-org/synapse/issues/3117)) Bug Fixes: - Return 401 for invalid `access_token` on logout. Thanks to @dklug! ([\#2938](https://github.com/matrix-org/synapse/issues/2938)) - Return a 404 rather than a 500 on rejoining empty rooms. ([\#3080](https://github.com/matrix-org/synapse/issues/3080)) - fix `federation_domain_whitelist`. ([\#3099](https://github.com/matrix-org/synapse/issues/3099)) - Avoid creating events with huge numbers of `prev_events`. ([\#3113](https://github.com/matrix-org/synapse/issues/3113)) - Reject events which have lots of `prev_events`. ([\#3118](https://github.com/matrix-org/synapse/issues/3118)) Changes in synapse v0.27.4 (2018-04-13) ======================================= Changes: - Update canonicaljson dependency. ([\#3095](https://github.com/matrix-org/synapse/issues/3095)) Changes in synapse v0.27.3 (2018-04-11) ====================================== Bug fixes: - URL quote path segments over federation. ([\#3082](https://github.com/matrix-org/synapse/issues/3082)) Changes in synapse v0.27.3-rc2 (2018-04-09) =========================================== v0.27.3-rc1 used a stale version of the develop branch so the changelog overstates the functionality. v0.27.3-rc2 is up to date, rc1 should be ignored. Changes in synapse v0.27.3-rc1 (2018-04-09) =========================================== Notable changes include API support for joinability of groups. Also new metrics and phone home stats. Phone home stats include better visibility of system usage so we can tweak synpase to work better for all users rather than our own experience with matrix.org. Also, recording "r30" stat which is the measure we use to track overall growth of the Matrix ecosystem. It is defined as:- Counts the number of native 30 day retained users, defined as: - Users who have created their accounts more than 30 days - Where last seen at most 30 days ago - Where account creation and `last_seen` are > 30 days Features: - Add joinability for groups. ([\#3045](https://github.com/matrix-org/synapse/issues/3045)) - Implement group join API. ([\#3046](https://github.com/matrix-org/synapse/issues/3046)) - Add counter metrics for calculating state delta. ([\#3033](https://github.com/matrix-org/synapse/issues/3033)) - R30 stats. ([\#3041](https://github.com/matrix-org/synapse/issues/3041)) - Measure time it takes to calculate state group ID. ([\#3043](https://github.com/matrix-org/synapse/issues/3043)) - Add basic performance statistics to phone home. ([\#3044](https://github.com/matrix-org/synapse/issues/3044)) - Add response size metrics. ([\#3071](https://github.com/matrix-org/synapse/issues/3071)) - phone home cache size configurations. ([\#3063](https://github.com/matrix-org/synapse/issues/3063)) Changes: - Add a blurb explaining the main synapse worker. Thanks to @turt2live! ([\#2886](https://github.com/matrix-org/synapse/issues/2886)) - Replace old style error catching with `as` keyword. Thanks to @NotAFile! ([\#3000](https://github.com/matrix-org/synapse/issues/3000)) - Use `.iter*` to avoid copies in StateHandler. ([\#3006](https://github.com/matrix-org/synapse/issues/3006)) - Linearize calls to `_generate_user_id`. ([\#3029](https://github.com/matrix-org/synapse/issues/3029)) - Remove last usage of ujson. ([\#3030](https://github.com/matrix-org/synapse/issues/3030)) - Use simplejson throughout. ([\#3048](https://github.com/matrix-org/synapse/issues/3048)) - Use static JSONEncoders. ([\#3049](https://github.com/matrix-org/synapse/issues/3049)) - Remove uses of events.content. ([\#3060](https://github.com/matrix-org/synapse/issues/3060)) - Improve database cache performance. ([\#3068](https://github.com/matrix-org/synapse/issues/3068)) Bug fixes: - Add `room_id` to the response of rooms/{roomId}/join. Thanks to @jplatte! ([\#2986](https://github.com/matrix-org/synapse/issues/2986)) - Fix replication after switch to simplejson. ([\#3015](https://github.com/matrix-org/synapse/issues/3015)) - 404 correctly on missing paths via NoResource. ([\#3022](https://github.com/matrix-org/synapse/issues/3022)) - Fix error when claiming e2e keys from offline servers. ([\#3034](https://github.com/matrix-org/synapse/issues/3034)) - fix `tests/storage/test_user_directory.py`. ([\#3042](https://github.com/matrix-org/synapse/issues/3042)) - use `PUT` instead of `POST` for federating `groups`/`m.join_policy`. Thanks to @krombel! ([\#3070](https://github.com/matrix-org/synapse/issues/3070)) - postgres port script: fix `state_groups_pkey` error. ([\#3072](https://github.com/matrix-org/synapse/issues/3072)) Changes in synapse v0.27.2 (2018-03-26) ======================================= Bug fixes: - Fix bug which broke TCP replication between workers. ([\#3015](https://github.com/matrix-org/synapse/issues/3015)) Changes in synapse v0.27.1 (2018-03-26) ======================================= Meta release as v0.27.0 temporarily pointed to the wrong commit Changes in synapse v0.27.0 (2018-03-26) ======================================= No changes since v0.27.0-rc2 Changes in synapse v0.27.0-rc2 (2018-03-19) =========================================== Pulls in v0.26.1 Bug fixes: - Fix bug introduced in v0.27.0-rc1 that causes much increased memory usage in state cache. ([\#3005](https://github.com/matrix-org/synapse/issues/3005)) Changes in synapse v0.26.1 (2018-03-15) ======================================= Bug fixes: - Fix bug where an invalid event caused server to stop functioning correctly, due to parsing and serializing bugs in ujson library. ([\#3008](https://github.com/matrix-org/synapse/issues/3008)) Changes in synapse v0.27.0-rc1 (2018-03-14) =========================================== The common case for running Synapse is not to run separate workers, but for those that do, be aware that synctl no longer starts the main synapse when using `-a` option with workers. A new worker file should be added with `worker_app: synapse.app.homeserver`. This release also begins the process of renaming a number of the metrics reported to prometheus. See [docs/metrics-howto.rst](docs/metrics-howto.rst#block-and-response-metrics-renamed-for-0-27-0). Note that the v0.28.0 release will remove the deprecated metric names. Features: - Add ability for ASes to override message send time. ([\#2754](https://github.com/matrix-org/synapse/issues/2754)) - Add support for custom storage providers for media repository. ([\#2867](https://github.com/matrix-org/synapse/issues/2867), [\#2777](https://github.com/matrix-org/synapse/issues/2777), [\#2783](https://github.com/matrix-org/synapse/issues/2783), [\#2789](https://github.com/matrix-org/synapse/issues/2789), [\#2791](https://github.com/matrix-org/synapse/issues/2791), [\#2804](https://github.com/matrix-org/synapse/issues/2804), [\#2812](https://github.com/matrix-org/synapse/issues/2812), [\#2814](https://github.com/matrix-org/synapse/issues/2814), [\#2857](https://github.com/matrix-org/synapse/issues/2857), [\#2868](https://github.com/matrix-org/synapse/issues/2868), [\#2767](https://github.com/matrix-org/synapse/issues/2767)) - Add purge API features, see [docs/admin_api/purge_history_api.rst](docs/admin_api/purge_history_api.rst) for full details. ([\#2858](https://github.com/matrix-org/synapse/issues/2858), [\#2867](https://github.com/matrix-org/synapse/issues/2867), [\#2882](https://github.com/matrix-org/synapse/issues/2882), [\#2946](https://github.com/matrix-org/synapse/issues/2946), [\#2962](https://github.com/matrix-org/synapse/issues/2962), [\#2943](https://github.com/matrix-org/synapse/issues/2943)) - Add support for whitelisting 3PIDs that users can register. ([\#2813](https://github.com/matrix-org/synapse/issues/2813)) - Add `/room/{id}/event/{id}` API. ([\#2766](https://github.com/matrix-org/synapse/issues/2766)) - Add an admin API to get all the media in a room. Thanks to @turt2live! ([\#2818](https://github.com/matrix-org/synapse/issues/2818)) - Add `federation_domain_whitelist` option. ([\#2820](https://github.com/matrix-org/synapse/issues/2820), [\#2821](https://github.com/matrix-org/synapse/issues/2821)) Changes: - Continue to factor out processing from main process and into worker processes. See updated [docs/workers.rst](docs/workers.rst) ([\#2892](https://github.com/matrix-org/synapse/issues/2892), [\#2893](https://github.com/matrix-org/synapse/issues/2893), [\#2894](https://github.com/matrix-org/synapse/issues/2894), [\#2896](https://github.com/matrix-org/synapse/issues/2896), [\#2897](https://github.com/matrix-org/synapse/issues/2897), [\#2898](https://github.com/matrix-org/synapse/issues/2898), [\#2899](https://github.com/matrix-org/synapse/issues/2899), [\#2900](https://github.com/matrix-org/synapse/issues/2900), [\#2901](https://github.com/matrix-org/synapse/issues/2901), [\#2902](https://github.com/matrix-org/synapse/issues/2902), [\#2903](https://github.com/matrix-org/synapse/issues/2903), [\#2904](https://github.com/matrix-org/synapse/issues/2904), [\#2913](https://github.com/matrix-org/synapse/issues/2913), [\#2920](https://github.com/matrix-org/synapse/issues/2920), [\#2921](https://github.com/matrix-org/synapse/issues/2921), [\#2922](https://github.com/matrix-org/synapse/issues/2922), [\#2923](https://github.com/matrix-org/synapse/issues/2923), [\#2924](https://github.com/matrix-org/synapse/issues/2924), [\#2925](https://github.com/matrix-org/synapse/issues/2925), [\#2926](https://github.com/matrix-org/synapse/issues/2926), [\#2947](https://github.com/matrix-org/synapse/issues/2947), [\#2847](https://github.com/matrix-org/synapse/issues/2847), [\#2854](https://github.com/matrix-org/synapse/issues/2854), [\#2872](https://github.com/matrix-org/synapse/issues/2872), [\#2873](https://github.com/matrix-org/synapse/issues/2873), [\#2874](https://github.com/matrix-org/synapse/issues/2874), [\#2928](https://github.com/matrix-org/synapse/issues/2928), [\#2929](https://github.com/matrix-org/synapse/issues/2929), [\#2934](https://github.com/matrix-org/synapse/issues/2934), [\#2856](https://github.com/matrix-org/synapse/issues/2856), [\#2976](https://github.com/matrix-org/synapse/issues/2976), [\#2977](https://github.com/matrix-org/synapse/issues/2977), [\#2978](https://github.com/matrix-org/synapse/issues/2978), [\#2979](https://github.com/matrix-org/synapse/issues/2979), [\#2980](https://github.com/matrix-org/synapse/issues/2980), [\#2981](https://github.com/matrix-org/synapse/issues/2981), [\#2982](https://github.com/matrix-org/synapse/issues/2982), [\#2983](https://github.com/matrix-org/synapse/issues/2983), [\#2984](https://github.com/matrix-org/synapse/issues/2984), [\#2987](https://github.com/matrix-org/synapse/issues/2987), [\#2988](https://github.com/matrix-org/synapse/issues/2988), [\#2989](https://github.com/matrix-org/synapse/issues/2989), [\#2991](https://github.com/matrix-org/synapse/issues/2991), [\#2992](https://github.com/matrix-org/synapse/issues/2992), [\#2993](https://github.com/matrix-org/synapse/issues/2993), [\#2995](https://github.com/matrix-org/synapse/issues/2995), [\#2784](https://github.com/matrix-org/synapse/issues/2784)) - Ensure state cache is used when persisting events. ([\#2864](https://github.com/matrix-org/synapse/issues/2864), [\#2871](https://github.com/matrix-org/synapse/issues/2871), [\#2802](https://github.com/matrix-org/synapse/issues/2802), [\#2835](https://github.com/matrix-org/synapse/issues/2835), [\#2836](https://github.com/matrix-org/synapse/issues/2836), [\#2841](https://github.com/matrix-org/synapse/issues/2841), [\#2842](https://github.com/matrix-org/synapse/issues/2842), [\#2849](https://github.com/matrix-org/synapse/issues/2849)) - Change the default config to bind on both IPv4 and IPv6 on all platforms. Thanks to @silkeh! ([\#2435](https://github.com/matrix-org/synapse/issues/2435)) - No longer require a specific version of saml2. Thanks to @okurz! ([\#2695](https://github.com/matrix-org/synapse/issues/2695)) - Remove `verbosity`/`log_file` from generated config. ([\#2755](https://github.com/matrix-org/synapse/issues/2755)) - Add and improve metrics and logging. ([\#2770](https://github.com/matrix-org/synapse/issues/2770), [\#2778](https://github.com/matrix-org/synapse/issues/2778), [\#2785](https://github.com/matrix-org/synapse/issues/2785), [\#2786](https://github.com/matrix-org/synapse/issues/2786), [\#2787](https://github.com/matrix-org/synapse/issues/2787), [\#2793](https://github.com/matrix-org/synapse/issues/2793), [\#2794](https://github.com/matrix-org/synapse/issues/2794), [\#2795](https://github.com/matrix-org/synapse/issues/2795), [\#2809](https://github.com/matrix-org/synapse/issues/2809), [\#2810](https://github.com/matrix-org/synapse/issues/2810), [\#2833](https://github.com/matrix-org/synapse/issues/2833), [\#2834](https://github.com/matrix-org/synapse/issues/2834), [\#2844](https://github.com/matrix-org/synapse/issues/2844), [\#2965](https://github.com/matrix-org/synapse/issues/2965), [\#2927](https://github.com/matrix-org/synapse/issues/2927), [\#2975](https://github.com/matrix-org/synapse/issues/2975), [\#2790](https://github.com/matrix-org/synapse/issues/2790), [\#2796](https://github.com/matrix-org/synapse/issues/2796), [\#2838](https://github.com/matrix-org/synapse/issues/2838)) - When using synctl with workers, Don't start the main synapse automatically. ([\#2774](https://github.com/matrix-org/synapse/issues/2774)) - Minor performance improvements. ([\#2773](https://github.com/matrix-org/synapse/issues/2773), [\#2792](https://github.com/matrix-org/synapse/issues/2792)) - Use a connection pool for non-federation outbound connections. ([\#2817](https://github.com/matrix-org/synapse/issues/2817)) - Make it possible to run unit tests against postgres. ([\#2829](https://github.com/matrix-org/synapse/issues/2829)) - Update pynacl dependency to 1.2.1 or higher. Thanks to @bachp! ([\#2888](https://github.com/matrix-org/synapse/issues/2888)) - Remove ability for AS users to call /events and /sync. ([\#2948](https://github.com/matrix-org/synapse/issues/2948)) - Use bcrypt.checkpw. Thanks to @krombel! ([\#2949](https://github.com/matrix-org/synapse/issues/2949)) Bug fixes: - Fix broken `ldap_config` config option. Thanks to @seckrv! ([\#2683](https://github.com/matrix-org/synapse/issues/2683)) - Fix error message when user is not allowed to unban. Thanks to @turt2live! ([\#2761](https://github.com/matrix-org/synapse/issues/2761)) - Fix publicised groups GET API (singular) over federation. ([\#2772](https://github.com/matrix-org/synapse/issues/2772)) - Fix user directory when using `user_directory_search_all_users` config option. ([\#2803](https://github.com/matrix-org/synapse/issues/2803), [\#2831](https://github.com/matrix-org/synapse/issues/2831)) - Fix error on `/publicRooms` when no rooms exist. ([\#2827](https://github.com/matrix-org/synapse/issues/2827)) - Fix bug in `quarantine_media`. ([\#2837](https://github.com/matrix-org/synapse/issues/2837)) - Fix `url_previews` when no `Content-Type` is returned from URL. ([\#2845](https://github.com/matrix-org/synapse/issues/2845)) - Fix rare race in sync API when joining room. ([\#2944](https://github.com/matrix-org/synapse/issues/2944)) - Fix slow event search, switch back from GIST to GIN indexes. ([\#2769](https://github.com/matrix-org/synapse/issues/2769), [\#2848](https://github.com/matrix-org/synapse/issues/2848)) Changes in synapse v0.26.0 (2018-01-05) ======================================= No changes since v0.26.0-rc1 Changes in synapse v0.26.0-rc1 (2017-12-13) =========================================== Features: - Add ability for ASes to publicise groups for their users. ([\#2686](https://github.com/matrix-org/synapse/issues/2686)) - Add all local users to the `user_directory` and optionally search them. ([\#2723](https://github.com/matrix-org/synapse/issues/2723)) - Add support for custom login types for validating users. ([\#2729](https://github.com/matrix-org/synapse/issues/2729)) Changes: - Update example Prometheus config to new format. Thanks to @krombel! ([\#2648](https://github.com/matrix-org/synapse/issues/2648)) - Rename `redact_content` option to `include_content` in Push API. ([\#2650](https://github.com/matrix-org/synapse/issues/2650)) - Declare support for r0.3.0. ([\#2677](https://github.com/matrix-org/synapse/issues/2677)) - Improve upserts. ([\#2684](https://github.com/matrix-org/synapse/issues/2684), [\#2688](https://github.com/matrix-org/synapse/issues/2688), [\#2689](https://github.com/matrix-org/synapse/issues/2689), [\#2713](https://github.com/matrix-org/synapse/issues/2713)) - Improve documentation of workers. ([\#2700](https://github.com/matrix-org/synapse/issues/2700)) - Improve tracebacks on exceptions. ([\#2705](https://github.com/matrix-org/synapse/issues/2705)) - Allow guest access to group APIs for reading. ([\#2715](https://github.com/matrix-org/synapse/issues/2715)) - Support for posting content in `federation_client` script. ([\#2716](https://github.com/matrix-org/synapse/issues/2716)) - Delete devices and pushers on logouts etc. ([\#2722](https://github.com/matrix-org/synapse/issues/2722)) Bug fixes: - Fix database port script. ([\#2673](https://github.com/matrix-org/synapse/issues/2673)) - Fix internal server error on login with `ldap_auth_provider`. Thanks to @jkolo! ([\#2678](https://github.com/matrix-org/synapse/issues/2678)) - Fix error on sqlite 3.7. ([\#2697](https://github.com/matrix-org/synapse/issues/2697)) - Fix `OPTIONS` on `preview_url`. ([\#2707](https://github.com/matrix-org/synapse/issues/2707)) - Fix error handling on dns lookup. ([\#2711](https://github.com/matrix-org/synapse/issues/2711)) - Fix wrong avatars when inviting multiple users when creating room. ([\#2717](https://github.com/matrix-org/synapse/issues/2717)) - Fix 500 when joining matrix-dev. ([\#2719](https://github.com/matrix-org/synapse/issues/2719)) Changes in synapse v0.25.1 (2017-11-17) ======================================= Bug fixes: - Fix login with LDAP and other password provider modules. Thanks to @jkolo! ([\#2678](https://github.com/matrix-org/synapse/issues/2678)) Changes in synapse v0.25.0 (2017-11-15) ======================================= Bug fixes: - Fix port script. ([\#2673](https://github.com/matrix-org/synapse/issues/2673)) Changes in synapse v0.25.0-rc1 (2017-11-14) =========================================== Features: - Add `is_public` to groups table to allow for private groups. ([\#2582](https://github.com/matrix-org/synapse/issues/2582)) - Add a route for determining who you are. Thanks to @turt2live! ([\#2668](https://github.com/matrix-org/synapse/issues/2668)) - Add more features to the password providers ([\#2608](https://github.com/matrix-org/synapse/issues/2608), [\#2610](https://github.com/matrix-org/synapse/issues/2610), [\#2620](https://github.com/matrix-org/synapse/issues/2620), [\#2622](https://github.com/matrix-org/synapse/issues/2622), [\#2623](https://github.com/matrix-org/synapse/issues/2623), [\#2624](https://github.com/matrix-org/synapse/issues/2624), [\#2626](https://github.com/matrix-org/synapse/issues/2626), [\#2628](https://github.com/matrix-org/synapse/issues/2628), [\#2629](https://github.com/matrix-org/synapse/issues/2629)) - Add a hook for custom rest endpoints. ([\#2627](https://github.com/matrix-org/synapse/issues/2627)) - Add API to update group room visibility. ([\#2651](https://github.com/matrix-org/synapse/issues/2651)) Changes: - Ignore `` tags when generating URL preview descriptions. Thanks to @maximevaillancourt! ([\#2576](https://github.com/matrix-org/synapse/issues/2576)) - Register some /unstable endpoints in /r0 as well. Thanks to @krombel! ([\#2579](https://github.com/matrix-org/synapse/issues/2579)) - Support /keys/upload on /r0 as well as /unstable. ([\#2585](https://github.com/matrix-org/synapse/issues/2585)) - Front-end proxy: pass through auth header. ([\#2586](https://github.com/matrix-org/synapse/issues/2586)) - Allow ASes to deactivate their own users. ([\#2589](https://github.com/matrix-org/synapse/issues/2589)) - Remove refresh tokens. ([\#2613](https://github.com/matrix-org/synapse/issues/2613)) - Automatically set default displayname on register. ([\#2617](https://github.com/matrix-org/synapse/issues/2617)) - Log login requests. ([\#2618](https://github.com/matrix-org/synapse/issues/2618)) - Always return `is_public` in the `/groups/:group_id/rooms` API. ([\#2630](https://github.com/matrix-org/synapse/issues/2630)) - Avoid no-op media deletes. Thanks to @spantaleev! ([\#2637](https://github.com/matrix-org/synapse/issues/2637)) - Fix various embarrassing typos around `user_directory` and add some doc. ([\#2643](https://github.com/matrix-org/synapse/issues/2643)) - Return whether a user is an admin within a group. ([\#2647](https://github.com/matrix-org/synapse/issues/2647)) - Namespace visibility options for groups. ([\#2657](https://github.com/matrix-org/synapse/issues/2657)) - Downcase UserIDs on registration. ([\#2662](https://github.com/matrix-org/synapse/issues/2662)) - Cache failures when fetching URL previews. ([\#2669](https://github.com/matrix-org/synapse/issues/2669)) Bug fixes: - Fix port script. ([\#2577](https://github.com/matrix-org/synapse/issues/2577)) - Fix error when running synapse with no logfile. ([\#2581](https://github.com/matrix-org/synapse/issues/2581)) - Fix UI auth when deleting devices. ([\#2591](https://github.com/matrix-org/synapse/issues/2591)) - Fix typo when checking if user is invited to group. ([\#2599](https://github.com/matrix-org/synapse/issues/2599)) - Fix the port script to drop NUL values in all tables. ([\#2611](https://github.com/matrix-org/synapse/issues/2611)) - Fix appservices being backlogged and not receiving new events due to a bug in `notify_interested_services`. Thanks to @xyzz! ([\#2631](https://github.com/matrix-org/synapse/issues/2631)) - Fix updating rooms avatar/display name when modified by admin. Thanks to @farialima! ([\#2636](https://github.com/matrix-org/synapse/issues/2636)) - Fix bug in state group storage. ([\#2649](https://github.com/matrix-org/synapse/issues/2649)) - Fix 500 on invalid utf-8 in request. ([\#2663](https://github.com/matrix-org/synapse/issues/2663)) Changes in synapse v0.24.1 (2017-10-24) ======================================= Bug fixes: - Fix updating group profiles over federation. ([\#2567](https://github.com/matrix-org/synapse/issues/2567)) Changes in synapse v0.24.0 (2017-10-23) ======================================= No changes since v0.24.0-rc1 Changes in synapse v0.24.0-rc1 (2017-10-19) =========================================== Features: - Add Group Server ([\#2352](https://github.com/matrix-org/synapse/issues/2352), [\#2363](https://github.com/matrix-org/synapse/issues/2363), [\#2374](https://github.com/matrix-org/synapse/issues/2374), [\#2377](https://github.com/matrix-org/synapse/issues/2377), [\#2378](https://github.com/matrix-org/synapse/issues/2378), [\#2382](https://github.com/matrix-org/synapse/issues/2382), [\#2410](https://github.com/matrix-org/synapse/issues/2410), [\#2426](https://github.com/matrix-org/synapse/issues/2426), [\#2430](https://github.com/matrix-org/synapse/issues/2430), [\#2454](https://github.com/matrix-org/synapse/issues/2454), [\#2471](https://github.com/matrix-org/synapse/issues/2471), [\#2472](https://github.com/matrix-org/synapse/issues/2472), [\#2544](https://github.com/matrix-org/synapse/issues/2544)) - Add support for channel notifications. ([\#2501](https://github.com/matrix-org/synapse/issues/2501)) - Add basic implementation of backup media store. ([\#2538](https://github.com/matrix-org/synapse/issues/2538)) - Add config option to auto-join new users to rooms. ([\#2545](https://github.com/matrix-org/synapse/issues/2545)) Changes: - Make the spam checker a module. ([\#2474](https://github.com/matrix-org/synapse/issues/2474)) - Delete expired url cache data. ([\#2478](https://github.com/matrix-org/synapse/issues/2478)) - Ignore incoming events for rooms that we have left. ([\#2490](https://github.com/matrix-org/synapse/issues/2490)) - Allow spam checker to reject invites too. ([\#2492](https://github.com/matrix-org/synapse/issues/2492)) - Add room creation checks to spam checker. ([\#2495](https://github.com/matrix-org/synapse/issues/2495)) - Spam checking: add the invitee to `user_may_invite`. ([\#2502](https://github.com/matrix-org/synapse/issues/2502)) - Process events from federation for different rooms in parallel. ([\#2520](https://github.com/matrix-org/synapse/issues/2520)) - Allow error strings from spam checker. ([\#2531](https://github.com/matrix-org/synapse/issues/2531)) - Improve error handling for missing files in config. ([\#2551](https://github.com/matrix-org/synapse/issues/2551)) Bug fixes: - Fix handling SERVFAILs when doing AAAA lookups for federation. ([\#2477](https://github.com/matrix-org/synapse/issues/2477)) - Fix incompatibility with newer versions of ujson. Thanks to @jeremycline! ([\#2483](https://github.com/matrix-org/synapse/issues/2483)) - Fix notification keywords that start/end with non-word chars. ([\#2500](https://github.com/matrix-org/synapse/issues/2500)) - Fix stack overflow and logcontexts from linearizer. ([\#2532](https://github.com/matrix-org/synapse/issues/2532)) - Fix 500 error when fields missing from `power_levels` event. ([\#2552](https://github.com/matrix-org/synapse/issues/2552)) - Fix 500 error when we get an error handling a PDU. ([\#2553](https://github.com/matrix-org/synapse/issues/2553)) Changes in synapse v0.23.1 (2017-10-02) ======================================= Changes: - Make `affinity` package optional, as it is not supported on some platforms Changes in synapse v0.23.0 (2017-10-02) ======================================= No changes since v0.23.0-rc2 Changes in synapse v0.23.0-rc2 (2017-09-26) =========================================== Bug fixes: - Fix regression in performance of syncs. ([\#2470](https://github.com/matrix-org/synapse/issues/2470)) Changes in synapse v0.23.0-rc1 (2017-09-25) =========================================== Features: - Add a frontend proxy worker. ([\#2344](https://github.com/matrix-org/synapse/issues/2344)) - Add support for `event_id_only` push format. ([\#2450](https://github.com/matrix-org/synapse/issues/2450)) - Add a PoC for filtering spammy events. ([\#2456](https://github.com/matrix-org/synapse/issues/2456)) - Add a config option to block all room invites. ([\#2457](https://github.com/matrix-org/synapse/issues/2457)) Changes: - Use bcrypt module instead of py-bcrypt. Thanks to @kyrias! ([\#2288](https://github.com/matrix-org/synapse/issues/2288)) - Improve performance of generating push notifications. ([\#2343](https://github.com/matrix-org/synapse/issues/2343), [\#2357](https://github.com/matrix-org/synapse/issues/2357), [\#2365](https://github.com/matrix-org/synapse/issues/2365), [\#2366](https://github.com/matrix-org/synapse/issues/2366), [\#2371](https://github.com/matrix-org/synapse/issues/2371)) - Improve DB performance for device list handling in sync. ([\#2362](https://github.com/matrix-org/synapse/issues/2362)) - Include a sample prometheus config. ([\#2416](https://github.com/matrix-org/synapse/issues/2416)) - Document known to work postgres version. Thanks to @ptman! ([\#2433](https://github.com/matrix-org/synapse/issues/2433)) Bug fixes: - Fix caching error in the push evaluator. ([\#2332](https://github.com/matrix-org/synapse/issues/2332)) - Fix bug where pusherpool didn't start and broke some rooms. ([\#2342](https://github.com/matrix-org/synapse/issues/2342)) - Fix port script for user directory tables. ([\#2375](https://github.com/matrix-org/synapse/issues/2375)) - Fix device lists notifications when user rejoins a room. ([\#2443](https://github.com/matrix-org/synapse/issues/2443), [\#2449](https://github.com/matrix-org/synapse/issues/2449)) - Fix sync to always send down current state events in timeline. ([\#2451](https://github.com/matrix-org/synapse/issues/2451)) - Fix bug where guest users were incorrectly kicked. ([\#2453](https://github.com/matrix-org/synapse/issues/2453)) - Fix bug talking to IPv6 only servers using SRV records. ([\#2462](https://github.com/matrix-org/synapse/issues/2462)) Changes in synapse v0.22.1 (2017-07-06) ======================================= Bug fixes: - Fix bug where pusher pool didn't start and caused issues when interacting with some rooms. ([\#2342](https://github.com/matrix-org/synapse/issues/2342)) Changes in synapse v0.22.0 (2017-07-06) ======================================= No changes since v0.22.0-rc2 Changes in synapse v0.22.0-rc2 (2017-07-04) =========================================== Changes: - Improve performance of storing user IPs. ([\#2307](https://github.com/matrix-org/synapse/issues/2307), [\#2308](https://github.com/matrix-org/synapse/issues/2308)) - Slightly improve performance of verifying access tokens. ([\#2320](https://github.com/matrix-org/synapse/issues/2320)) - Slightly improve performance of event persistence. ([\#2321](https://github.com/matrix-org/synapse/issues/2321)) - Increase default cache factor size from 0.1 to 0.5. ([\#2330](https://github.com/matrix-org/synapse/issues/2330)) Bug fixes: - Fix bug with storing registration sessions that caused frequent CPU churn. ([\#2319](https://github.com/matrix-org/synapse/issues/2319)) Changes in synapse v0.22.0-rc1 (2017-06-26) =========================================== Features: - Add a user directory API ([\#2252](https://github.com/matrix-org/synapse/issues/2252), and many more) - Add shutdown room API to remove room from local server. ([\#2291](https://github.com/matrix-org/synapse/issues/2291)) - Add API to quarantine media. ([\#2292](https://github.com/matrix-org/synapse/issues/2292)) - Add new config option to not send event contents to push servers. Thanks to @cjdelisle! ([\#2301](https://github.com/matrix-org/synapse/issues/2301)) Changes: - Various performance fixes. ([\#2177](https://github.com/matrix-org/synapse/issues/2177), [\#2233](https://github.com/matrix-org/synapse/issues/2233), [\#2230](https://github.com/matrix-org/synapse/issues/2230), [\#2238](https://github.com/matrix-org/synapse/issues/2238), [\#2248](https://github.com/matrix-org/synapse/issues/2248), [\#2256](https://github.com/matrix-org/synapse/issues/2256), [\#2274](https://github.com/matrix-org/synapse/issues/2274)) - Deduplicate sync filters. Thanks to @krombel! ([\#2219](https://github.com/matrix-org/synapse/issues/2219)) - Correct a typo in UPGRADE.rst. Thanks to @aaronraimist! ([\#2231](https://github.com/matrix-org/synapse/issues/2231)) - Add count of one time keys to sync stream. ([\#2237](https://github.com/matrix-org/synapse/issues/2237)) - Only store `event_auth` for state events. ([\#2247](https://github.com/matrix-org/synapse/issues/2247)) - Store URL cache preview downloads separately. ([\#2299](https://github.com/matrix-org/synapse/issues/2299)) Bug fixes: - Fix users not getting notifications when AS listened to that `user_id`. Thanks to @slipeer! ([\#2216](https://github.com/matrix-org/synapse/issues/2216)) - Fix users without push set up not getting notifications after joining rooms. ([\#2236](https://github.com/matrix-org/synapse/issues/2236)) - Fix preview url API to trim long descriptions. ([\#2243](https://github.com/matrix-org/synapse/issues/2243)) - Fix bug where we used cached but unpersisted state group as prev group, resulting in broken state of restart. ([\#2263](https://github.com/matrix-org/synapse/issues/2263)) - Fix removing of pushers when using workers. ([\#2267](https://github.com/matrix-org/synapse/issues/2267)) - Fix CORS headers to allow Authorization header. Thanks to @krombel! ([\#2285](https://github.com/matrix-org/synapse/issues/2285)) Changes in synapse v0.21.1 (2017-06-15) ======================================= Bug fixes: - Fix bug in anonymous usage statistic reporting. ([\#2281](https://github.com/matrix-org/synapse/issues/2281)) Changes in synapse v0.21.0 (2017-05-18) ======================================= No changes since v0.21.0-rc3 Changes in synapse v0.21.0-rc3 (2017-05-17) =========================================== Features: - Add per user rate-limiting overrides. ([\#2208](https://github.com/matrix-org/synapse/issues/2208)) - Add config option to limit maximum number of events requested by `/sync` and `/messages`. Thanks to @psaavedra! ([\#2221](https://github.com/matrix-org/synapse/issues/2221)) Changes: - Various small performance fixes. ([\#2201](https://github.com/matrix-org/synapse/issues/2201), [\#2202](https://github.com/matrix-org/synapse/issues/2202), [\#2224](https://github.com/matrix-org/synapse/issues/2224), [\#2226](https://github.com/matrix-org/synapse/issues/2226), [\#2227](https://github.com/matrix-org/synapse/issues/2227), [\#2228](https://github.com/matrix-org/synapse/issues/2228), [\#2229](https://github.com/matrix-org/synapse/issues/2229)) - Update username availability checker API. ([\#2209](https://github.com/matrix-org/synapse/issues/2209), [\#2213](https://github.com/matrix-org/synapse/issues/2213)) - When purging, Don't de-delta state groups we're about to delete. ([\#2214](https://github.com/matrix-org/synapse/issues/2214)) - Documentation to check synapse version. Thanks to @hamber-dick! ([\#2215](https://github.com/matrix-org/synapse/issues/2215)) - Add an index to `event_search` to speed up purge history API. ([\#2218](https://github.com/matrix-org/synapse/issues/2218)) Bug fixes: - Fix API to allow clients to upload one-time-keys with new sigs. ([\#2206](https://github.com/matrix-org/synapse/issues/2206)) Changes in synapse v0.21.0-rc2 (2017-05-08) =========================================== Changes: - Always mark remotes as up if we receive a signed request from them. ([\#2190](https://github.com/matrix-org/synapse/issues/2190)) Bug fixes: - Fix bug where users got pushed for rooms they had muted. ([\#2200](https://github.com/matrix-org/synapse/issues/2200)) Changes in synapse v0.21.0-rc1 (2017-05-08) =========================================== Features: - Add username availability checker API. ([\#2183](https://github.com/matrix-org/synapse/issues/2183)) - Add read marker API. ([\#2120](https://github.com/matrix-org/synapse/issues/2120)) Changes: - Enable guest access for the 3pl/3pid APIs. ([\#1986](https://github.com/matrix-org/synapse/issues/1986)) - Add setting to support TURN for guests. ([\#2011](https://github.com/matrix-org/synapse/issues/2011)) - Various performance improvements. ([\#2075](https://github.com/matrix-org/synapse/issues/2075), [\#2076](https://github.com/matrix-org/synapse/issues/2076), [\#2080](https://github.com/matrix-org/synapse/issues/2080), [\#2083](https://github.com/matrix-org/synapse/issues/2083), [\#2108](https://github.com/matrix-org/synapse/issues/2108), [\#2158](https://github.com/matrix-org/synapse/issues/2158), [\#2176](https://github.com/matrix-org/synapse/issues/2176), [\#2185](https://github.com/matrix-org/synapse/issues/2185)) - Make synctl a bit more user friendly. ([\#2078](https://github.com/matrix-org/synapse/issues/2078), [\#2127](https://github.com/matrix-org/synapse/issues/2127)) Thanks @APwhitehat! - Replace HTTP replication with TCP replication. ([\#2082](https://github.com/matrix-org/synapse/issues/2082), [\#2097](https://github.com/matrix-org/synapse/issues/2097), [\#2098](https://github.com/matrix-org/synapse/issues/2098), [\#2099](https://github.com/matrix-org/synapse/issues/2099), [\#2103](https://github.com/matrix-org/synapse/issues/2103), [\#2014](https://github.com/matrix-org/synapse/issues/2014), [\#2016](https://github.com/matrix-org/synapse/issues/2016), [\#2115](https://github.com/matrix-org/synapse/issues/2115), [\#2116](https://github.com/matrix-org/synapse/issues/2116), [\#2117](https://github.com/matrix-org/synapse/issues/2117)) - Support authenticated SMTP. Thanks @DanielDent! ([\#2102](https://github.com/matrix-org/synapse/issues/2102)) - Add a counter metric for successfully-sent transactions. ([\#2121](https://github.com/matrix-org/synapse/issues/2121)) - Propagate errors sensibly from proxied IS requests. ([\#2147](https://github.com/matrix-org/synapse/issues/2147)) - Add more granular event send metrics. ([\#2178](https://github.com/matrix-org/synapse/issues/2178)) Bug fixes: - Fix nuke-room script to work with current schema. Thanks @zuckschwerdt! ([\#1927](https://github.com/matrix-org/synapse/issues/1927)) - Fix db port script to not assume postgres tables are in the public schema. Thanks @jerrykan! ([\#2024](https://github.com/matrix-org/synapse/issues/2024)) - Fix getting latest device IP for user with no devices. ([\#2118](https://github.com/matrix-org/synapse/issues/2118)) - Fix rejection of invites to unreachable servers. ([\#2145](https://github.com/matrix-org/synapse/issues/2145)) - Fix code for reporting old verify keys in synapse. ([\#2156](https://github.com/matrix-org/synapse/issues/2156)) - Fix invite state to always include all events. ([\#2163](https://github.com/matrix-org/synapse/issues/2163)) - Fix bug where synapse would always fetch state for any missing event. ([\#2170](https://github.com/matrix-org/synapse/issues/2170)) - Fix a leak with timed out HTTP connections. ([\#2180](https://github.com/matrix-org/synapse/issues/2180)) - Fix bug where we didn't time out HTTP requests to ASes. ([\#2192](https://github.com/matrix-org/synapse/issues/2192)) Docs: - Clarify doc for SQLite to PostgreSQL port. Thanks @benhylau! ([\#1961](https://github.com/matrix-org/synapse/issues/1961)) - Fix typo in synctl help. Thanks @HarHarLinks! ([\#2107](https://github.com/matrix-org/synapse/issues/2107)) - `web_client_location` documentation fix. Thanks @matthewjwolff! ([\#2131](https://github.com/matrix-org/synapse/issues/2131)) - Update README.rst with FreeBSD changes. Thanks @feld! ([\#2132](https://github.com/matrix-org/synapse/issues/2132)) - Clarify setting up metrics. Thanks @encks! ([\#2149](https://github.com/matrix-org/synapse/issues/2149)) Changes in synapse v0.20.0 (2017-04-11) ======================================= Bug fixes: - Fix joining rooms over federation where not all servers in the room saw the new server had joined. ([\#2094](https://github.com/matrix-org/synapse/issues/2094)) Changes in synapse v0.20.0-rc1 (2017-03-30) =========================================== Features: - Add `delete_devices` API. ([\#1993](https://github.com/matrix-org/synapse/issues/1993)) - Add phone number registration/login support. ([\#1994](https://github.com/matrix-org/synapse/issues/1994), [\#2055](https://github.com/matrix-org/synapse/issues/2055)) Changes: - Use JSONSchema for validation of filters. Thanks @pik! ([\#1783](https://github.com/matrix-org/synapse/issues/1783)) - Reread log config on SIGHUP. ([\#1982](https://github.com/matrix-org/synapse/issues/1982)) - Speed up public room list. ([\#1989](https://github.com/matrix-org/synapse/issues/1989)) - Add helpful texts to logger config options. ([\#1990](https://github.com/matrix-org/synapse/issues/1990)) - Minor `/sync` performance improvements. ([\#2002](https://github.com/matrix-org/synapse/issues/2002), [\#2013](https://github.com/matrix-org/synapse/issues/2013), [\#2022](https://github.com/matrix-org/synapse/issues/2022)) - Add some debug to help diagnose weird federation issue. ([\#2035](https://github.com/matrix-org/synapse/issues/2035)) - Correctly limit retries for all federation requests. ([\#2050](https://github.com/matrix-org/synapse/issues/2050), [\#2061](https://github.com/matrix-org/synapse/issues/2061)) - Don't lock table when persisting new one time keys. ([\#2053](https://github.com/matrix-org/synapse/issues/2053)) - Reduce some CPU work on DB threads. ([\#2054](https://github.com/matrix-org/synapse/issues/2054)) - Cache hosts in room. ([\#2060](https://github.com/matrix-org/synapse/issues/2060)) - Batch sending of device list pokes. ([\#2063](https://github.com/matrix-org/synapse/issues/2063)) - Speed up persist event path in certain edge cases. ([\#2070](https://github.com/matrix-org/synapse/issues/2070)) Bug fixes: - Fix bug where `current_state_events` renamed to `current_state_ids`. ([\#1849](https://github.com/matrix-org/synapse/issues/1849)) - Fix routing loop when fetching remote media. ([\#1992](https://github.com/matrix-org/synapse/issues/1992)) - Fix `current_state_events` table to not lie. ([\#1996](https://github.com/matrix-org/synapse/issues/1996)) - Fix CAS login to handle PartialDownloadError. ([\#1997](https://github.com/matrix-org/synapse/issues/1997)) - Fix assertion to stop transaction queue getting wedged. ([\#2010](https://github.com/matrix-org/synapse/issues/2010)) - Fix presence to fallback to `last_active_ts` if it beats the last sync time. Thanks @Half-Shot! ([\#2014](https://github.com/matrix-org/synapse/issues/2014)) - Fix bug when federation received a PDU while a room join is in progress. ([\#2016](https://github.com/matrix-org/synapse/issues/2016)) - Fix resetting state on rejected events. ([\#2025](https://github.com/matrix-org/synapse/issues/2025)) - Fix installation issues in readme. Thanks @ricco386. ([\#2037](https://github.com/matrix-org/synapse/issues/2037)) - Fix caching of remote servers' signature keys. ([\#2042](https://github.com/matrix-org/synapse/issues/2042)) - Fix some leaking log context. ([\#2048](https://github.com/matrix-org/synapse/issues/2048), [\#2049](https://github.com/matrix-org/synapse/issues/2049), [\#2057](https://github.com/matrix-org/synapse/issues/2057), [\#2058](https://github.com/matrix-org/synapse/issues/2058)) - Fix rejection of invites not reaching sync. ([\#2056](https://github.com/matrix-org/synapse/issues/2056)) Changes in synapse v0.19.3 (2017-03-20) ======================================= No changes since v0.19.3-rc2 Changes in synapse v0.19.3-rc2 (2017-03-13) =========================================== Bug fixes: - Fix bug in handling of incoming device list updates over federation. Changes in synapse v0.19.3-rc1 (2017-03-08) =========================================== Features: - Add some administration functionalities. Thanks to morteza-araby! ([\#1784](https://github.com/matrix-org/synapse/issues/1784)) Changes: - Reduce database table sizes. ([\#1873](https://github.com/matrix-org/synapse/issues/1873), [\#1916](https://github.com/matrix-org/synapse/issues/1916), [\#1923](https://github.com/matrix-org/synapse/issues/1923), [\#1963](https://github.com/matrix-org/synapse/issues/1963)) - Update contrib/ to not use syutil. Thanks to andrewshadura! ([\#1907](https://github.com/matrix-org/synapse/issues/1907)) - Don't fetch current state when sending an event in common case. ([\#1955](https://github.com/matrix-org/synapse/issues/1955)) Bug fixes: - Fix synapse_port_db failure. Thanks to Pneumaticat! ([\#1904](https://github.com/matrix-org/synapse/issues/1904)) - Fix caching to not cache error responses. ([\#1913](https://github.com/matrix-org/synapse/issues/1913)) - Fix APIs to make kick & ban reasons work. ([\#1917](https://github.com/matrix-org/synapse/issues/1917)) - Fix bugs in the /keys/changes api. ([\#1921](https://github.com/matrix-org/synapse/issues/1921)) - Fix bug where users couldn't forget rooms they were banned from. ([\#1922](https://github.com/matrix-org/synapse/issues/1922)) - Fix issue with long language values in pushers API. ([\#1925](https://github.com/matrix-org/synapse/issues/1925)) - Fix a race in transaction queue. ([\#1930](https://github.com/matrix-org/synapse/issues/1930)) - Fix dynamic thumbnailing to preserve aspect ratio. Thanks to jkolo! ([\#1945](https://github.com/matrix-org/synapse/issues/1945)) - Fix device list update to not constantly resync. ([\#1964](https://github.com/matrix-org/synapse/issues/1964)) - Fix potential for huge memory usage when getting device that have changed. ([\#1969](https://github.com/matrix-org/synapse/issues/1969)) Changes in synapse v0.19.2 (2017-02-20) ======================================= - Fix bug with event visibility check in /context/ API. Thanks to Tokodomo for pointing it out! ([\#1929](https://github.com/matrix-org/synapse/issues/1929)) Changes in synapse v0.19.1 (2017-02-09) ======================================= - Fix bug where state was incorrectly reset in a room when synapse received an event over federation that did not pass auth checks. ([\#1892](https://github.com/matrix-org/synapse/issues/1892)) Changes in synapse v0.19.0 (2017-02-04) ======================================= No changes since RC 4. Changes in synapse v0.19.0-rc4 (2017-02-02) =========================================== - Bump cache sizes for common membership queries. ([\#1879](https://github.com/matrix-org/synapse/issues/1879)) Changes in synapse v0.19.0-rc3 (2017-02-02) =========================================== - Fix email push in pusher worker. ([\#1875](https://github.com/matrix-org/synapse/issues/1875)) - Make `presence.get_new_events` a bit faster. ([\#1876](https://github.com/matrix-org/synapse/issues/1876)) - Make /keys/changes a bit more performant. ([\#1877](https://github.com/matrix-org/synapse/issues/1877)) Changes in synapse v0.19.0-rc2 (2017-02-02) =========================================== - Include newly joined users in /keys/changes API. ([\#1872](https://github.com/matrix-org/synapse/issues/1872)) Changes in synapse v0.19.0-rc1 (2017-02-02) =========================================== Features: - Add support for specifying multiple bind addresses. Thanks to @kyrias! ([\#1709](https://github.com/matrix-org/synapse/issues/1709), [\#1712](https://github.com/matrix-org/synapse/issues/1712), [\#1795](https://github.com/matrix-org/synapse/issues/1795), [\#1835](https://github.com/matrix-org/synapse/issues/1835)) - Add /account/3pid/delete endpoint. ([\#1714](https://github.com/matrix-org/synapse/issues/1714)) - Add config option to configure the Riot URL used in notification emails. Thanks to @aperezdc! ([\#1811](https://github.com/matrix-org/synapse/issues/1811)) - Add username and password config options for turn server. Thanks to @xsteadfastx! ([\#1832](https://github.com/matrix-org/synapse/issues/1832)) - Implement device lists updates over federation. ([\#1857](https://github.com/matrix-org/synapse/issues/1857), [\#1861](https://github.com/matrix-org/synapse/issues/1861), [\#1864](https://github.com/matrix-org/synapse/issues/1864)) - Implement /keys/changes. ([\#1869](https://github.com/matrix-org/synapse/issues/1869), [\#1872](https://github.com/matrix-org/synapse/issues/1872)) Changes: - Improve IPv6 support. Thanks to @kyrias and @glyph! ([\#1696](https://github.com/matrix-org/synapse/issues/1696)) - Log which files we saved attachments to in the `media_repository`. ([\#1791](https://github.com/matrix-org/synapse/issues/1791)) - Linearize updates to membership via PUT /state/ to better handle multiple joins. ([\#1787](https://github.com/matrix-org/synapse/issues/1787)) - Limit number of entries to prefill from cache on startup. ([\#1792](https://github.com/matrix-org/synapse/issues/1792)) - Remove `full_twisted_stacktraces` option. ([\#1802](https://github.com/matrix-org/synapse/issues/1802)) - Measure size of some caches by sum of the size of cached values. ([\#1815](https://github.com/matrix-org/synapse/issues/1815)) - Measure metrics of `string_cache`. ([\#1821](https://github.com/matrix-org/synapse/issues/1821)) - Reduce logging verbosity. ([\#1822](https://github.com/matrix-org/synapse/issues/1822), [\#1823](https://github.com/matrix-org/synapse/issues/1823), [\#1824](https://github.com/matrix-org/synapse/issues/1824)) - Don't clobber a displayname or `avatar_url` if provided by an m.room.member event. ([\#1852](https://github.com/matrix-org/synapse/issues/1852)) - Better handle 401/404 response for federation /send/. ([\#1866](https://github.com/matrix-org/synapse/issues/1866), [\#1871](https://github.com/matrix-org/synapse/issues/1871)) Fixes: - Fix ability to change password to a non-ascii one. ([\#1711](https://github.com/matrix-org/synapse/issues/1711)) - Fix push getting stuck due to looking at the wrong view of state. ([\#1820](https://github.com/matrix-org/synapse/issues/1820)) - Fix email address comparison to be case insensitive. ([\#1827](https://github.com/matrix-org/synapse/issues/1827)) - Fix occasional inconsistencies of room membership. ([\#1836](https://github.com/matrix-org/synapse/issues/1836), [\#1840](https://github.com/matrix-org/synapse/issues/1840)) Performance: - Don't block messages sending on bumping presence. ([\#1789](https://github.com/matrix-org/synapse/issues/1789)) - Change `device_inbox` stream index to include user. ([\#1793](https://github.com/matrix-org/synapse/issues/1793)) - Optimise state resolution. ([\#1818](https://github.com/matrix-org/synapse/issues/1818)) - Use DB cache of joined users for presence. ([\#1862](https://github.com/matrix-org/synapse/issues/1862)) - Add an index to make membership queries faster. ([\#1867](https://github.com/matrix-org/synapse/issues/1867)) Changes in synapse v0.18.7 (2017-01-09) ======================================= No changes from v0.18.7-rc2 Changes in synapse v0.18.7-rc2 (2017-01-07) =========================================== Bug fixes: - Fix error in rc1's discarding invalid inbound traffic logic that was incorrectly discarding missing events Changes in synapse v0.18.7-rc1 (2017-01-06) =========================================== Bug fixes: - Fix error in [\#1764](https://github.com/matrix-org/synapse/issues/1764) to actually fix the nightmare [\#1753](https://github.com/matrix-org/synapse/issues/1753) bug. - Improve deadlock logging further - Discard inbound federation traffic from invalid domains, to immunise against [\#1753](https://github.com/matrix-org/synapse/issues/1753). Changes in synapse v0.18.6 (2017-01-06) ======================================= Bug fixes: - Fix bug when checking if a guest user is allowed to join a room. Thanks to Patrik Oldsberg for diagnosing and the fix! ([\#1772](https://github.com/matrix-org/synapse/issues/1772)) Changes in synapse v0.18.6-rc3 (2017-01-05) =========================================== Bug fixes: - Fix bug where we failed to send ban events to the banned server. ([\#1758](https://github.com/matrix-org/synapse/issues/1758)) - Fix bug where we sent event that didn't originate on this server to other servers. ([\#1764](https://github.com/matrix-org/synapse/issues/1764)) - Fix bug where processing an event from a remote server took a long time because we were making long HTTP requests. ([\#1765](https://github.com/matrix-org/synapse/issues/1765), [\#1744](https://github.com/matrix-org/synapse/issues/1744)) Changes: - Improve logging for debugging deadlocks. ([\#1766](https://github.com/matrix-org/synapse/issues/1766), [\#1767](https://github.com/matrix-org/synapse/issues/1767)) Changes in synapse v0.18.6-rc2 (2016-12-30) =========================================== Bug fixes: - Fix memory leak in twisted by initialising logging correctly. ([\#1731](https://github.com/matrix-org/synapse/issues/1731)) - Fix bug where fetching missing events took an unacceptable amount of time in large rooms. ([\#1734](https://github.com/matrix-org/synapse/issues/1734)) Changes in synapse v0.18.6-rc1 (2016-12-29) =========================================== Bug fixes: - Make sure that outbound connections are closed. ([\#1725](https://github.com/matrix-org/synapse/issues/1725)) Changes in synapse v0.18.5 (2016-12-16) ======================================= Bug fixes: - Fix federation /backfill returning events it shouldn't. ([\#1700](https://github.com/matrix-org/synapse/issues/1700)) - Fix crash in url preview. ([\#1701](https://github.com/matrix-org/synapse/issues/1701)) Changes in synapse v0.18.5-rc3 (2016-12-13) =========================================== Features: - Add support for E2E for guests. ([\#1653](https://github.com/matrix-org/synapse/issues/1653)) - Add new API appservice specific public room list. ([\#1676](https://github.com/matrix-org/synapse/issues/1676)) - Add new room membership APIs. ([\#1680](https://github.com/matrix-org/synapse/issues/1680)) Changes: - Enable guest access for private rooms by default. ([\#653](https://github.com/matrix-org/synapse/issues/653)) - Limit the number of events that can be created on a given room concurrently. ([\#1620](https://github.com/matrix-org/synapse/issues/1620)) - Log the args that we have on UI auth completion. ([\#1649](https://github.com/matrix-org/synapse/issues/1649)) - Stop generating `refresh_tokens`. ([\#1654](https://github.com/matrix-org/synapse/issues/1654)) - Stop putting a time caveat on access tokens. ([\#1656](https://github.com/matrix-org/synapse/issues/1656)) - Remove unspecced GET endpoints for e2e keys. ([\#1694](https://github.com/matrix-org/synapse/issues/1694)) Bug fixes: - Fix handling of 500 and 429's over federation. ([\#1650](https://github.com/matrix-org/synapse/issues/1650)) - Fix Content-Type header parsing. ([\#1660](https://github.com/matrix-org/synapse/issues/1660)) - Fix error when previewing sites that include unicode, thanks to kyrias. ([\#1664](https://github.com/matrix-org/synapse/issues/1664)) - Fix some cases where we drop read receipts. ([\#1678](https://github.com/matrix-org/synapse/issues/1678)) - Fix bug where calls to `/sync` didn't correctly timeout. ([\#1683](https://github.com/matrix-org/synapse/issues/1683)) - Fix bug where E2E key query would fail if a single remote host failed. ([\#1686](https://github.com/matrix-org/synapse/issues/1686)) Changes in synapse v0.18.5-rc2 (2016-11-24) =========================================== Bug fixes: - Don't send old events over federation, fixes bug in -rc1. Changes in synapse v0.18.5-rc1 (2016-11-24) =========================================== Features: - Implement `event_fields` in filters. ([\#1638](https://github.com/matrix-org/synapse/issues/1638)) Changes: - Use external ldap auth package. ([\#1628](https://github.com/matrix-org/synapse/issues/1628)) - Split out federation transaction sending to a worker. ([\#1635](https://github.com/matrix-org/synapse/issues/1635)) - Fail with a coherent error message if /sync?filter= is invalid. ([\#1636](https://github.com/matrix-org/synapse/issues/1636)) - More efficient notif count queries. ([\#1644](https://github.com/matrix-org/synapse/issues/1644)) Changes in synapse v0.18.4 (2016-11-22) ======================================= Bug fixes: - Add workaround for buggy clients that the fail to register. ([\#1632](https://github.com/matrix-org/synapse/issues/1632)) Changes in synapse v0.18.4-rc1 (2016-11-14) =========================================== Changes: - Various database efficiency improvements. ([\#1188](https://github.com/matrix-org/synapse/issues/1188), [\#1192](https://github.com/matrix-org/synapse/issues/1192)) - Update default config to blacklist more internal IPs, thanks to Euan Kemp. ([\#1198](https://github.com/matrix-org/synapse/issues/1198)) - Allow specifying duration in minutes in config, thanks to Daniel Dent. ([\#1625](https://github.com/matrix-org/synapse/issues/1625)) Bug fixes: - Fix media repo to set CORs headers on responses. ([\#1190](https://github.com/matrix-org/synapse/issues/1190)) - Fix registration to not error on non-ascii passwords. ([\#1191](https://github.com/matrix-org/synapse/issues/1191)) - Fix create event code to limit the number of `prev_events`. ([\#1615](https://github.com/matrix-org/synapse/issues/1615)) - Fix bug in transaction ID deduplication. ([\#1624](https://github.com/matrix-org/synapse/issues/1624)) Changes in synapse v0.18.3 (2016-11-08) ======================================= SECURITY UPDATE Explicitly require authentication when using LDAP3. This is the default on versions of `ldap3` above 1.0, but some distributions will package an older version. If you are using LDAP3 login and have a version of `ldap3` older than 1.0 it is **CRITICAL to upgrade**. Changes in synapse v0.18.2 (2016-11-01) ======================================= No changes since v0.18.2-rc5 Changes in synapse v0.18.2-rc5 (2016-10-28) =========================================== Bug fixes: - Fix prometheus process metrics in worker processes. ([\#1184](https://github.com/matrix-org/synapse/issues/1184)) Changes in synapse v0.18.2-rc4 (2016-10-27) =========================================== Bug fixes: - Fix `user_threepids` schema delta, which in some instances prevented startup after upgrade. ([\#1183](https://github.com/matrix-org/synapse/issues/1183)) Changes in synapse v0.18.2-rc3 (2016-10-27) =========================================== Changes: - Allow clients to supply access tokens as headers. ([\#1098](https://github.com/matrix-org/synapse/issues/1098)) - Clarify error codes for GET /filter/, thanks to Alexander Maznev. ([\#1164](https://github.com/matrix-org/synapse/issues/1164)) - Make password reset email field case insensitive. ([\#1170](https://github.com/matrix-org/synapse/issues/1170)) - Reduce redundant database work in email pusher. ([\#1174](https://github.com/matrix-org/synapse/issues/1174)) - Allow configurable rate limiting per AS. ([\#1175](https://github.com/matrix-org/synapse/issues/1175)) - Check whether to ratelimit sooner to avoid work. ([\#1176](https://github.com/matrix-org/synapse/issues/1176)) - Standardise prometheus metrics. ([\#1177](https://github.com/matrix-org/synapse/issues/1177)) Bug fixes: - Fix incredibly slow back pagination query. ([\#1178](https://github.com/matrix-org/synapse/issues/1178)) - Fix infinite typing bug. ([\#1179](https://github.com/matrix-org/synapse/issues/1179)) Changes in synapse v0.18.2-rc2 (2016-10-25) =========================================== (This release did not include the changes advertised and was identical to RC1) Changes in synapse v0.18.2-rc1 (2016-10-17) =========================================== Changes: - Remove redundant `event_auth` index. ([\#1113](https://github.com/matrix-org/synapse/issues/1113)) - Reduce DB hits for replication. ([\#1141](https://github.com/matrix-org/synapse/issues/1141)) - Implement pluggable password auth. ([\#1155](https://github.com/matrix-org/synapse/issues/1155)) - Remove rate limiting from app service senders and fix `get_or_create_user` requester, thanks to Patrik Oldsberg. ([\#1157](https://github.com/matrix-org/synapse/issues/1157)) - window.postmessage for Interactive Auth fallback. ([\#1159](https://github.com/matrix-org/synapse/issues/1159)) - Use sys.executable instead of hardcoded python, thanks to Pedro Larroy. ([\#1162](https://github.com/matrix-org/synapse/issues/1162)) - Add config option for adding additional TLS fingerprints. ([\#1167](https://github.com/matrix-org/synapse/issues/1167)) - User-interactive auth on delete device. ([\#1168](https://github.com/matrix-org/synapse/issues/1168)) Bug fixes: - Fix not being allowed to set your own `state_key`, thanks to Patrik Oldsberg. ([\#1150](https://github.com/matrix-org/synapse/issues/1150)) - Fix interactive auth to return 401 from for incorrect password. ([\#1160](https://github.com/matrix-org/synapse/issues/1160), [\#1166](https://github.com/matrix-org/synapse/issues/1166)) - Fix email push notifs being dropped. ([\#1169](https://github.com/matrix-org/synapse/issues/1169)) Changes in synapse v0.18.1 (2016-10-05) ======================================= No changes since v0.18.1-rc1 Changes in synapse v0.18.1-rc1 (2016-09-30) =========================================== Features: - Add `total_room_count_estimate` to `/publicRooms`. ([\#1133](https://github.com/matrix-org/synapse/issues/1133)) Changes: - Time out typing over federation. ([\#1140](https://github.com/matrix-org/synapse/issues/1140)) - Restructure LDAP authentication. ([\#1153](https://github.com/matrix-org/synapse/issues/1153)) Bug fixes: - Fix 3pid invites when server is already in the room. ([\#1136](https://github.com/matrix-org/synapse/issues/1136)) - Fix upgrading with SQLite taking lots of CPU for a few days after upgrade. ([\#1144](https://github.com/matrix-org/synapse/issues/1144)) - Fix upgrading from very old database versions. ([\#1145](https://github.com/matrix-org/synapse/issues/1145)) - Fix port script to work with recently added tables. ([\#1146](https://github.com/matrix-org/synapse/issues/1146)) Changes in synapse v0.18.0 (2016-09-19) ======================================= The release includes major changes to the state storage database schemas, which significantly reduce database size. Synapse will attempt to upgrade the current data in the background. Servers with large SQLite database may experience degradation of performance while this upgrade is in progress, therefore you may want to consider migrating to using Postgres before upgrading very large SQLite databases Changes: - Make public room search case insensitive. ([\#1127](https://github.com/matrix-org/synapse/issues/1127)) Bug fixes: - Fix and clean up publicRooms pagination. ([\#1129](https://github.com/matrix-org/synapse/issues/1129)) Changes in synapse v0.18.0-rc1 (2016-09-16) =========================================== Features: - Add `only=highlight` on `/notifications`. ([\#1081](https://github.com/matrix-org/synapse/issues/1081)) - Add server param to /publicRooms. ([\#1082](https://github.com/matrix-org/synapse/issues/1082)) - Allow clients to ask for the whole of a single state event. ([\#1094](https://github.com/matrix-org/synapse/issues/1094)) - Add `is_direct` param to /createRoom. ([\#1108](https://github.com/matrix-org/synapse/issues/1108)) - Add pagination support to publicRooms. ([\#1121](https://github.com/matrix-org/synapse/issues/1121)) - Add very basic filter API to /publicRooms. ([\#1126](https://github.com/matrix-org/synapse/issues/1126)) - Add basic direct to device messaging support for E2E. ([\#1074](https://github.com/matrix-org/synapse/issues/1074), [\#1084](https://github.com/matrix-org/synapse/issues/1084), [\#1104](https://github.com/matrix-org/synapse/issues/1104), [\#1111](https://github.com/matrix-org/synapse/issues/1111)) Changes: - Move to storing `state_groups_state` as deltas, greatly reducing DB size. ([\#1065](https://github.com/matrix-org/synapse/issues/1065)) - Reduce amount of state pulled out of the DB during common requests. ([\#1069](https://github.com/matrix-org/synapse/issues/1069)) - Allow PDF to be rendered from media repo. ([\#1071](https://github.com/matrix-org/synapse/issues/1071)) - Reindex `state_groups_state` after pruning. ([\#1085](https://github.com/matrix-org/synapse/issues/1085)) - Clobber EDUs in send queue. ([\#1095](https://github.com/matrix-org/synapse/issues/1095)) - Conform better to the CAS protocol specification. ([\#1100](https://github.com/matrix-org/synapse/issues/1100)) - Limit how often we ask for keys from dead servers. ([\#1114](https://github.com/matrix-org/synapse/issues/1114)) Bug fixes: - Fix /notifications API when used with `from` param. ([\#1080](https://github.com/matrix-org/synapse/issues/1080)) - Fix backfill when cannot find an event. ([\#1107](https://github.com/matrix-org/synapse/issues/1107)) Changes in synapse v0.17.3 (2016-09-09) ======================================= This release fixes a major bug that stopped servers from handling rooms with over 1000 members. Changes in synapse v0.17.2 (2016-09-08) ======================================= This release contains security bug fixes. Please upgrade. No changes since v0.17.2-rc1 Changes in synapse v0.17.2-rc1 (2016-09-05) =========================================== Features: - Start adding store-and-forward direct-to-device messaging. ([\#1046](https://github.com/matrix-org/synapse/issues/1046), [\#1050](https://github.com/matrix-org/synapse/issues/1050), [\#1062](https://github.com/matrix-org/synapse/issues/1062), [\#1066](https://github.com/matrix-org/synapse/issues/1066)) Changes: - Avoid pulling the full state of a room out so often. ([\#1047](https://github.com/matrix-org/synapse/issues/1047), [\#1049](https://github.com/matrix-org/synapse/issues/1049), [\#1063](https://github.com/matrix-org/synapse/issues/1063), [\#1068](https://github.com/matrix-org/synapse/issues/1068)) - Don't notify for online to online presence transitions. ([\#1054](https://github.com/matrix-org/synapse/issues/1054)) - Occasionally persist unpersisted presence updates. ([\#1055](https://github.com/matrix-org/synapse/issues/1055)) - Allow application services to have an optional `url`. ([\#1056](https://github.com/matrix-org/synapse/issues/1056)) - Clean up old sent transactions from DB. ([\#1059](https://github.com/matrix-org/synapse/issues/1059)) Bug fixes: - Fix None check in backfill. ([\#1043](https://github.com/matrix-org/synapse/issues/1043)) - Fix membership changes to be idempotent. ([\#1067](https://github.com/matrix-org/synapse/issues/1067)) - Fix bug in `get_pdu` where it would sometimes return events with incorrect signature Changes in synapse v0.17.1 (2016-08-24) ======================================= Changes: - Delete old `received_transactions` rows. ([\#1038](https://github.com/matrix-org/synapse/issues/1038)) - Pass through user-supplied content in `/join/$room_id`. ([\#1039](https://github.com/matrix-org/synapse/issues/1039)) Bug fixes: - Fix bug with backfill. ([\#1040](https://github.com/matrix-org/synapse/issues/1040)) Changes in synapse v0.17.1-rc1 (2016-08-22) =========================================== Features: - Add notification API. ([\#1028](https://github.com/matrix-org/synapse/issues/1028)) Changes: - Don't print stack traces when failing to get remote keys. ([\#996](https://github.com/matrix-org/synapse/issues/996)) - Various federation /event/ perf improvements. ([\#998](https://github.com/matrix-org/synapse/issues/998)) - Only process one local membership event per room at a time. ([\#1005](https://github.com/matrix-org/synapse/issues/1005)) - Move default display name push rule. ([\#1011](https://github.com/matrix-org/synapse/issues/1011), [\#1023](https://github.com/matrix-org/synapse/issues/1023)) - Fix up preview URL API. Add tests. ([\#1015](https://github.com/matrix-org/synapse/issues/1015)) - Set `Content-Security-Policy` on media repo. ([\#1021](https://github.com/matrix-org/synapse/issues/1021)) - Make `notify_interested_services` faster. ([\#1022](https://github.com/matrix-org/synapse/issues/1022)) - Add usage stats to prometheus monitoring. ([\#1037](https://github.com/matrix-org/synapse/issues/1037)) Bug fixes: - Fix token login. ([\#993](https://github.com/matrix-org/synapse/issues/993)) - Fix CAS login. ([\#994](https://github.com/matrix-org/synapse/issues/994), [\#995](https://github.com/matrix-org/synapse/issues/995)) - Fix /sync to not clobber `status_msg`. ([\#997](https://github.com/matrix-org/synapse/issues/997)) - Fix redacted state events to include `prev_content`. ([\#1003](https://github.com/matrix-org/synapse/issues/1003)) - Fix some bugs in the auth/ldap handler. ([\#1007](https://github.com/matrix-org/synapse/issues/1007)) - Fix backfill request to limit URI length, so that remotes Don't reject the requests due to path length limits. ([\#1012](https://github.com/matrix-org/synapse/issues/1012)) - Fix AS push code to not send duplicate events. ([\#1025](https://github.com/matrix-org/synapse/issues/1025)) Changes in synapse v0.17.0 (2016-08-08) ======================================= This release contains significant security bug fixes regarding authenticating events received over federation. PLEASE UPGRADE. This release changes the LDAP configuration format in a backwards incompatible way, see [\#843](https://github.com/matrix-org/synapse/issues/843) for details. Changes: - Add federation /version API. ([\#990](https://github.com/matrix-org/synapse/issues/990)) - Make psutil dependency optional. ([\#992](https://github.com/matrix-org/synapse/issues/992)) Bug fixes: - Fix URL preview API to exclude HTML comments in description. ([\#988](https://github.com/matrix-org/synapse/issues/988)) - Fix error handling of remote joins. ([\#991](https://github.com/matrix-org/synapse/issues/991)) Changes in synapse v0.17.0-rc4 (2016-08-05) =========================================== Changes: - Change the way we summarize URLs when previewing. ([\#973](https://github.com/matrix-org/synapse/issues/973)) - Add new `/state_ids/` federation API. ([\#979](https://github.com/matrix-org/synapse/issues/979)) - Speed up processing of `/state/` response. ([\#986](https://github.com/matrix-org/synapse/issues/986)) Bug fixes: - Fix event persistence when event has already been partially persisted. ([\#975](https://github.com/matrix-org/synapse/issues/975), [\#983](https://github.com/matrix-org/synapse/issues/983), [\#985](https://github.com/matrix-org/synapse/issues/985)) - Fix port script to also copy across backfilled events. ([\#982](https://github.com/matrix-org/synapse/issues/982)) Changes in synapse v0.17.0-rc3 (2016-08-02) =========================================== Changes: - Forbid non-ASes from registering users whose names begin with `_`. ([\#958](https://github.com/matrix-org/synapse/issues/958)) - Add some basic admin API docs. ([\#963](https://github.com/matrix-org/synapse/issues/963)) Bug fixes: - Send the correct host header when fetching keys. ([\#941](https://github.com/matrix-org/synapse/issues/941)) - Fix joining a room that has missing auth events. ([\#964](https://github.com/matrix-org/synapse/issues/964)) - Fix various push bugs. ([\#966](https://github.com/matrix-org/synapse/issues/966), [\#970](https://github.com/matrix-org/synapse/issues/970)) - Fix adding emails on registration. ([\#968](https://github.com/matrix-org/synapse/issues/968)) Changes in synapse v0.17.0-rc2 (2016-08-02) =========================================== (This release did not include the changes advertised and was identical to RC1) Changes in synapse v0.17.0-rc1 (2016-07-28) =========================================== This release changes the LDAP configuration format in a backwards incompatible way, see [\#843](https://github.com/matrix-org/synapse/issues/843) for details. Features: - Add `purge_media_cache` admin API. ([\#902](https://github.com/matrix-org/synapse/issues/902)) - Add deactivate account admin API. ([\#903](https://github.com/matrix-org/synapse/issues/903)) - Add optional pepper to password hashing by KentShikama. ([\#907](https://github.com/matrix-org/synapse/issues/907), [\#910](https://github.com/matrix-org/synapse/issues/910)) - Add an admin option to shared secret registration (breaks backwards compat). ([\#909](https://github.com/matrix-org/synapse/issues/909)) - Add purge local room history API. ([\#911](https://github.com/matrix-org/synapse/issues/911), [\#923](https://github.com/matrix-org/synapse/issues/923), [\#924](https://github.com/matrix-org/synapse/issues/924)) - Add requestToken endpoints. ([\#915](https://github.com/matrix-org/synapse/issues/915)) - Add an /account/deactivate endpoint. ([\#921](https://github.com/matrix-org/synapse/issues/921)) - Add filter param to /messages. Add `contains_url` to filter. ([\#922](https://github.com/matrix-org/synapse/issues/922)) - Add `device_id` support to /login. ([\#929](https://github.com/matrix-org/synapse/issues/929)) - Add `device_id` support to /v2/register flow. ([\#937](https://github.com/matrix-org/synapse/issues/937), [\#942](https://github.com/matrix-org/synapse/issues/942)) - Add GET /devices endpoint. ([\#939](https://github.com/matrix-org/synapse/issues/939), [\#944](https://github.com/matrix-org/synapse/issues/944)) - Add GET /device/{deviceId}. ([\#943](https://github.com/matrix-org/synapse/issues/943)) - Add update and delete APIs for devices. ([\#949](https://github.com/matrix-org/synapse/issues/949)) Changes: - Rewrite LDAP Authentication against ldap3. Contributed by mweinelt. ([\#843](https://github.com/matrix-org/synapse/issues/843)) - Linearize some federation endpoints based on `(origin, room_id)`. ([\#879](https://github.com/matrix-org/synapse/issues/879)) - Remove the legacy v0 content upload API. ([\#888](https://github.com/matrix-org/synapse/issues/888)) - Use similar naming we use in email notifs for push. ([\#894](https://github.com/matrix-org/synapse/issues/894)) - Optionally include password hash in createUser endpoint. Contributed by KentShikama. ([\#905](https://github.com/matrix-org/synapse/issues/905)) - Use a query that postgresql optimises better for `get_events_around`. ([\#906](https://github.com/matrix-org/synapse/issues/906)) - Fall back to '`username` if `user` is not given for appservice registration. Contributed by Half-Shot. ([\#927](https://github.com/matrix-org/synapse/issues/927)) - Add metrics for psutil derived memory usage. ([\#936](https://github.com/matrix-org/synapse/issues/936)) - Record `device_id` in `client_ips`. ([\#938](https://github.com/matrix-org/synapse/issues/938)) - Send the correct host header when fetching keys. ([\#941](https://github.com/matrix-org/synapse/issues/941)) - Log the hostname the reCAPTCHA was completed on. ([\#946](https://github.com/matrix-org/synapse/issues/946)) - Make the device id on e2e key upload optional. ([\#956](https://github.com/matrix-org/synapse/issues/956)) - Add r0.2.0 to the "supported versions" list. ([\#960](https://github.com/matrix-org/synapse/issues/960)) - Don't include name of room for invites in push. ([\#961](https://github.com/matrix-org/synapse/issues/961)) Bug fixes: - Fix substitution failure in mail template. ([\#887](https://github.com/matrix-org/synapse/issues/887)) - Put most recent 20 messages in email notif. ([\#892](https://github.com/matrix-org/synapse/issues/892)) - Ensure that the guest user is in the database when upgrading accounts. ([\#914](https://github.com/matrix-org/synapse/issues/914)) - Fix various edge cases in auth handling. ([\#919](https://github.com/matrix-org/synapse/issues/919)) - Fix 500 ISE when sending alias event without a `state_key`. ([\#925](https://github.com/matrix-org/synapse/issues/925)) - Fix bug where we stored rejections in the `state_group`, persist all rejections. ([\#948](https://github.com/matrix-org/synapse/issues/948)) - Fix lack of check of if the user is banned when handling 3pid invites. ([\#952](https://github.com/matrix-org/synapse/issues/952)) - Fix a couple of bugs in the transaction and keyring code. ([\#954](https://github.com/matrix-org/synapse/issues/954), [\#955](https://github.com/matrix-org/synapse/issues/955)) Changes in synapse v0.16.1-r1 (2016-07-08) ========================================== THIS IS A CRITICAL SECURITY UPDATE. This fixes a bug which allowed users' accounts to be accessed by unauthorised users. Changes in synapse v0.16.1 (2016-06-20) ======================================= Bug fixes: - Fix assorted bugs in `/preview_url`. ([\#872](https://github.com/matrix-org/synapse/issues/872)) - Fix TypeError when setting unicode passwords. ([\#873](https://github.com/matrix-org/synapse/issues/873)) Performance improvements: - Turn `use_frozen_events` off by default. ([\#877](https://github.com/matrix-org/synapse/issues/877)) - Disable responding with canonical json for federation. ([\#878](https://github.com/matrix-org/synapse/issues/878)) Changes in synapse v0.16.1-rc1 (2016-06-15) =========================================== Features: None Changes: - Log requester for `/publicRoom` endpoints when possible. ([\#856](https://github.com/matrix-org/synapse/issues/856)) - 502 on `/thumbnail` when can't connect to remote server. ([\#862](https://github.com/matrix-org/synapse/issues/862)) - Linearize fetching of gaps on incoming events. ([\#871](https://github.com/matrix-org/synapse/issues/871)) Bugs fixes: - Fix bug where rooms where marked as published by default. ([\#857](https://github.com/matrix-org/synapse/issues/857)) - Fix bug where joining room with an event with invalid sender. ([\#868](https://github.com/matrix-org/synapse/issues/868)) - Fix bug where backfilled events were sent down sync streams. ([\#869](https://github.com/matrix-org/synapse/issues/869)) - Fix bug where outgoing connections could wedge indefinitely, causing push notifications to be unreliable. ([\#870](https://github.com/matrix-org/synapse/issues/870)) Performance improvements: - Improve `/publicRooms` performance. ([\#859](https://github.com/matrix-org/synapse/issues/859)) Changes in synapse v0.16.0 (2016-06-09) ======================================= NB: As of v0.14 all AS config files must have an ID field. Bug fixes: - Don't make rooms published by default. ([\#857](https://github.com/matrix-org/synapse/issues/857)) Changes in synapse v0.16.0-rc2 (2016-06-08) =========================================== Features: - Add configuration option for tuning GC via `gc.set_threshold`. ([\#849](https://github.com/matrix-org/synapse/issues/849)) Changes: - Record metrics about GC. ([\#771](https://github.com/matrix-org/synapse/issues/771), [\#847](https://github.com/matrix-org/synapse/issues/847), [\#852](https://github.com/matrix-org/synapse/issues/852)) - Add metric counter for number of persisted events. ([\#841](https://github.com/matrix-org/synapse/issues/841)) Bug fixes: - Fix `From` header in email notifications. ([\#843](https://github.com/matrix-org/synapse/issues/843)) - Fix presence where timeouts were not being fired for the first 8h after restarts. ([\#842](https://github.com/matrix-org/synapse/issues/842)) - Fix bug where synapse sent malformed transactions to AS's when retrying transactions (Commits 310197b, 8437906) Performance improvements: - Remove event fetching from DB threads. ([\#835](https://github.com/matrix-org/synapse/issues/835)) - Change the way we cache events. ([\#836](https://github.com/matrix-org/synapse/issues/836)) - Add events to cache when we persist them. ([\#840](https://github.com/matrix-org/synapse/issues/840)) Changes in synapse v0.16.0-rc1 (2016-06-03) =========================================== Version 0.15 was not released. See v0.15.0-rc1 below for additional changes. Features: - Add email notifications for missed messages. ([\#759](https://github.com/matrix-org/synapse/issues/759), [\#786](https://github.com/matrix-org/synapse/issues/786), [\#799](https://github.com/matrix-org/synapse/issues/799), [\#810](https://github.com/matrix-org/synapse/issues/810), [\#815](https://github.com/matrix-org/synapse/issues/815), [\#821](https://github.com/matrix-org/synapse/issues/821)) - Add a `url_preview_ip_range_whitelist` config param. ([\#760](https://github.com/matrix-org/synapse/issues/760)) - Add /report endpoint. ([\#762](https://github.com/matrix-org/synapse/issues/762)) - Add basic ignore user API. ([\#763](https://github.com/matrix-org/synapse/issues/763)) - Add an openidish mechanism for proving that you own a given `user_id`. ([\#765](https://github.com/matrix-org/synapse/issues/765)) - Allow clients to specify a `server_name` to avoid "No known servers". ([\#794](https://github.com/matrix-org/synapse/issues/794)) - Add `secondary_directory_servers` option to fetch room list from other servers. ([\#808](https://github.com/matrix-org/synapse/issues/808), [\#813](https://github.com/matrix-org/synapse/issues/813)) Changes: - Report per request metrics for all of the things using `request_handler`. ([\#756](https://github.com/matrix-org/synapse/issues/756)) - Correctly handle `NULL` password hashes from the database. ([\#775](https://github.com/matrix-org/synapse/issues/775)) - Allow receipts for events we haven't seen in the db. ([\#784](https://github.com/matrix-org/synapse/issues/784)) - Make synctl read a cache factor from config file. ([\#785](https://github.com/matrix-org/synapse/issues/785)) - Increment badge count per missed convo, not per msg. ([\#793](https://github.com/matrix-org/synapse/issues/793)) - Special case `m.room.third_party_invite` event auth to match invites. ([\#814](https://github.com/matrix-org/synapse/issues/814)) Bug fixes: - Fix typo in `event_auth` servlet path. ([\#757](https://github.com/matrix-org/synapse/issues/757)) - Fix password reset. ([\#758](https://github.com/matrix-org/synapse/issues/758)) Performance improvements: - Reduce database inserts when sending transactions. ([\#767](https://github.com/matrix-org/synapse/issues/767)) - Queue events by room for persistence. ([\#768](https://github.com/matrix-org/synapse/issues/768)) - Add cache to `get_user_by_id`. ([\#772](https://github.com/matrix-org/synapse/issues/772)) - Add and use `get_domain_from_id`. ([\#773](https://github.com/matrix-org/synapse/issues/773)) - Use tree cache for `get_linearized_receipts_for_room`. ([\#779](https://github.com/matrix-org/synapse/issues/779)) - Remove unused indices. ([\#782](https://github.com/matrix-org/synapse/issues/782)) - Add caches to `bulk_get_push_rules*`. ([\#804](https://github.com/matrix-org/synapse/issues/804)) - Cache `get_event_reference_hashes`. ([\#806](https://github.com/matrix-org/synapse/issues/806)) - Add `get_users_with_read_receipts_in_room` cache. ([\#809](https://github.com/matrix-org/synapse/issues/809)) - Use state to calculate `get_users_in_room`. ([\#811](https://github.com/matrix-org/synapse/issues/811)) - Load push rules in storage layer so that they get cached. ([\#825](https://github.com/matrix-org/synapse/issues/825)) - Make `get_joined_hosts_for_room` use `get_users_in_room`. ([\#828](https://github.com/matrix-org/synapse/issues/828)) - Poke notifier on next reactor tick. ([\#829](https://github.com/matrix-org/synapse/issues/829)) - Change CacheMetrics to be quicker. ([\#830](https://github.com/matrix-org/synapse/issues/830)) Changes in synapse v0.15.0-rc1 (2016-04-26) =========================================== Features: - Add login support for Javascript Web Tokens, thanks to Niklas Riekenbrauck. ([\#671](https://github.com/matrix-org/synapse/issues/671), [\#687](https://github.com/matrix-org/synapse/issues/687)) - Add URL previewing support. ([\#688](https://github.com/matrix-org/synapse/issues/688)) - Add login support for LDAP, thanks to Christoph Witzany. ([\#701](https://github.com/matrix-org/synapse/issues/701)) - Add GET endpoint for pushers. ([\#716](https://github.com/matrix-org/synapse/issues/716)) Changes: - Never notify for member events. ([\#667](https://github.com/matrix-org/synapse/issues/667)) - Deduplicate identical `/sync` requests. ([\#668](https://github.com/matrix-org/synapse/issues/668)) - Require user to have left room to forget room. ([\#673](https://github.com/matrix-org/synapse/issues/673)) - Use DNS cache if within TTL. ([\#677](https://github.com/matrix-org/synapse/issues/677)) - Let users see their own leave events. ([\#699](https://github.com/matrix-org/synapse/issues/699)) - Deduplicate membership changes. ([\#700](https://github.com/matrix-org/synapse/issues/700)) - Increase performance of pusher code. ([\#705](https://github.com/matrix-org/synapse/issues/705)) - Respond with error status 504 if failed to talk to remote server. ([\#731](https://github.com/matrix-org/synapse/issues/731)) - Increase search performance on postgres. ([\#745](https://github.com/matrix-org/synapse/issues/745)) Bug fixes: - Fix bug where disabling all notifications still resulted in push. ([\#678](https://github.com/matrix-org/synapse/issues/678)) - Fix bug where users couldn't reject remote invites if remote refused. ([\#691](https://github.com/matrix-org/synapse/issues/691)) - Fix bug where synapse attempted to backfill from itself. ([\#693](https://github.com/matrix-org/synapse/issues/693)) - Fix bug where profile information was not correctly added when joining remote rooms. ([\#703](https://github.com/matrix-org/synapse/issues/703)) - Fix bug where register API required incorrect key name for AS registration. ([\#727](https://github.com/matrix-org/synapse/issues/727)) Changes in synapse v0.14.0 (2016-03-30) ======================================= No changes from v0.14.0-rc2 Changes in synapse v0.14.0-rc2 (2016-03-23) =========================================== Features: - Add published room list API. ([\#657](https://github.com/matrix-org/synapse/issues/657)) Changes: - Change various caches to consume less memory. ([\#656](https://github.com/matrix-org/synapse/issues/656), [\#658](https://github.com/matrix-org/synapse/issues/658), [\#660](https://github.com/matrix-org/synapse/issues/660), [\#662](https://github.com/matrix-org/synapse/issues/662), [\#663](https://github.com/matrix-org/synapse/issues/663), [\#665](https://github.com/matrix-org/synapse/issues/665)) - Allow rooms to be published without requiring an alias. ([\#664](https://github.com/matrix-org/synapse/issues/664)) - Intern common strings in caches to reduce memory footprint. ([\#666](https://github.com/matrix-org/synapse/issues/666)) Bug fixes: - Fix reject invites over federation. ([\#646](https://github.com/matrix-org/synapse/issues/646)) - Fix bug where registration was not idempotent. ([\#649](https://github.com/matrix-org/synapse/issues/649)) - Update aliases event after deleting aliases. ([\#652](https://github.com/matrix-org/synapse/issues/652)) - Fix unread notification count, which was sometimes wrong. ([\#661](https://github.com/matrix-org/synapse/issues/661)) Changes in synapse v0.14.0-rc1 (2016-03-14) =========================================== Features: - Add `event_id` to response to state event PUT. ([\#581](https://github.com/matrix-org/synapse/issues/581)) - Allow guest users access to messages in rooms they have joined. ([\#587](https://github.com/matrix-org/synapse/issues/587)) - Add config for what state is included in a room invite. ([\#598](https://github.com/matrix-org/synapse/issues/598)) - Send the inviter's member event in room invite state. ([\#607](https://github.com/matrix-org/synapse/issues/607)) - Add error codes for malformed/bad JSON in /login. ([\#608](https://github.com/matrix-org/synapse/issues/608)) - Add support for changing the actions for default rules. ([\#609](https://github.com/matrix-org/synapse/issues/609)) - Add environment variable `SYNAPSE_CACHE_FACTOR`, default it to 0.1. ([\#612](https://github.com/matrix-org/synapse/issues/612)) - Add ability for alias creators to delete aliases. ([\#614](https://github.com/matrix-org/synapse/issues/614)) - Add profile information to invites. ([\#624](https://github.com/matrix-org/synapse/issues/624)) Changes: - Enforce `user_id` exclusivity for AS registrations. ([\#572](https://github.com/matrix-org/synapse/issues/572)) - Make adding push rules idempotent. ([\#587](https://github.com/matrix-org/synapse/issues/587)) - Improve presence performance. ([\#582](https://github.com/matrix-org/synapse/issues/582), [\#586](https://github.com/matrix-org/synapse/issues/586)) - Change presence semantics for `last_active_ago`. ([\#582](https://github.com/matrix-org/synapse/issues/582), [\#586](https://github.com/matrix-org/synapse/issues/586)) - Don't allow `m.room.create` to be changed. ([\#596](https://github.com/matrix-org/synapse/issues/596)) - Add 800x600 to default list of valid thumbnail sizes. ([\#616](https://github.com/matrix-org/synapse/issues/616)) - Always include kicks and bans in full /sync. ([\#625](https://github.com/matrix-org/synapse/issues/625)) - Send history visibility on boundary changes. ([\#626](https://github.com/matrix-org/synapse/issues/626)) - Register endpoint now returns a `refresh_token`. ([\#637](https://github.com/matrix-org/synapse/issues/637)) Bug fixes: - Fix bug where we returned incorrect state in /sync. ([\#573](https://github.com/matrix-org/synapse/issues/573)) - Always return a JSON object from push rule API. ([\#606](https://github.com/matrix-org/synapse/issues/606)) - Fix bug where registering without a user id sometimes failed. ([\#610](https://github.com/matrix-org/synapse/issues/610)) - Report size of ExpiringCache in cache size metrics. ([\#611](https://github.com/matrix-org/synapse/issues/611)) - Fix rejection of invites to empty rooms. ([\#615](https://github.com/matrix-org/synapse/issues/615)) - Fix usage of `bcrypt` to not use `checkpw`. ([\#619](https://github.com/matrix-org/synapse/issues/619)) - Pin `pysaml2` dependency. ([\#634](https://github.com/matrix-org/synapse/issues/634)) - Fix bug in `/sync` where timeline order was incorrect for backfilled events. ([\#635](https://github.com/matrix-org/synapse/issues/635)) Changes in synapse v0.13.3 (2016-02-11) ======================================= - Fix bug where `/sync` would occasionally return events in the wrong room. Changes in synapse v0.13.2 (2016-02-11) ======================================= - Fix bug where `/events` would fail to skip some events if there had been more events than the limit specified since the last request. ([\#570](https://github.com/matrix-org/synapse/issues/570)) Changes in synapse v0.13.1 (2016-02-10) ======================================= - Bump matrix-angular-sdk (matrix web console) dependency to 0.6.8 to pull in the fix for SYWEB-361 so that the default client can display HTML messages again(!) Changes in synapse v0.13.0 (2016-02-10) ======================================= This version includes an upgrade of the schema, specifically adding an index to the `events` table. This may cause synapse to pause for several minutes the first time it is started after the upgrade. Changes: - Improve general performance. ([\#540](https://github.com/matrix-org/synapse/issues/540), [\#543](https://github.com/matrix-org/synapse/issues/543). [\#544](https://github.com/matrix-org/synapse/issues/544), [\#54](https://github.com/matrix-org/synapse/issues/54), [\#549](https://github.com/matrix-org/synapse/issues/549), [\#567](https://github.com/matrix-org/synapse/issues/567)) - Change guest user ids to be incrementing integers. ([\#550](https://github.com/matrix-org/synapse/issues/550)) - Improve performance of public room list API. ([\#552](https://github.com/matrix-org/synapse/issues/552)) - Change profile API to omit keys rather than return null. ([\#557](https://github.com/matrix-org/synapse/issues/557)) - Add `/media/r0` endpoint prefix, which is equivalent to `/media/v1/`. ([\#595](https://github.com/matrix-org/synapse/issues/595)) Bug fixes: - Fix bug with upgrading guest accounts where it would fail if you opened the registration email on a different device. ([\#547](https://github.com/matrix-org/synapse/issues/547)) - Fix bug where unread count could be wrong. ([\#568](https://github.com/matrix-org/synapse/issues/568)) Changes in synapse v0.12.1-rc1 (2016-01-29) =========================================== Features: - Add unread notification counts in `/sync`. ([\#456](https://github.com/matrix-org/synapse/issues/456)) - Add support for inviting 3pids in `/createRoom`. ([\#460](https://github.com/matrix-org/synapse/issues/460)) - Add ability for guest accounts to upgrade. ([\#462](https://github.com/matrix-org/synapse/issues/462)) - Add `/versions` API. ([\#468](https://github.com/matrix-org/synapse/issues/468)) - Add `event` to `/context` API. ([\#492](https://github.com/matrix-org/synapse/issues/492)) - Add specific error code for invalid user names in `/register`. ([\#499](https://github.com/matrix-org/synapse/issues/499)) - Add support for push badge counts. ([\#507](https://github.com/matrix-org/synapse/issues/507)) - Add support for non-guest users to peek in rooms using `/events`. ([\#510](https://github.com/matrix-org/synapse/issues/510)) Changes: - Change `/sync` so that guest users only get rooms they've joined. ([\#469](https://github.com/matrix-org/synapse/issues/469)) - Change to require unbanning before other membership changes. ([\#501](https://github.com/matrix-org/synapse/issues/501)) - Change default push rules to notify for all messages. ([\#486](https://github.com/matrix-org/synapse/issues/486)) - Change default push rules to not notify on membership changes. ([\#514](https://github.com/matrix-org/synapse/issues/514)) - Change default push rules in one to one rooms to only notify for events that are messages. ([\#529](https://github.com/matrix-org/synapse/issues/529)) - Change `/sync` to reject requests with a `from` query param. ([\#512](https://github.com/matrix-org/synapse/issues/512)) - Change server manhole to use SSH rather than telnet. ([\#473](https://github.com/matrix-org/synapse/issues/473)) - Change server to require AS users to be registered before use. ([\#487](https://github.com/matrix-org/synapse/issues/487)) - Change server not to start when ASes are invalidly configured. ([\#494](https://github.com/matrix-org/synapse/issues/494)) - Change server to require ID and `as_token` to be unique for AS's. ([\#496](https://github.com/matrix-org/synapse/issues/496)) - Change maximum pagination limit to 1000. ([\#497](https://github.com/matrix-org/synapse/issues/497)) Bug fixes: - Fix bug where `/sync` didn't return when something under the leave key changed. ([\#461](https://github.com/matrix-org/synapse/issues/461)) - Fix bug where we returned smaller rather than larger than requested thumbnails when `method=crop`. ([\#464](https://github.com/matrix-org/synapse/issues/464)) - Fix thumbnails API to only return cropped thumbnails when asking for a cropped thumbnail. ([\#475](https://github.com/matrix-org/synapse/issues/475)) - Fix bug where we occasionally still logged access tokens. ([\#477](https://github.com/matrix-org/synapse/issues/477)) - Fix bug where `/events` would always return immediately for guest users. ([\#480](https://github.com/matrix-org/synapse/issues/480)) - Fix bug where `/sync` unexpectedly returned old left rooms. ([\#481](https://github.com/matrix-org/synapse/issues/481)) - Fix enabling and disabling push rules. ([\#498](https://github.com/matrix-org/synapse/issues/498)) - Fix bug where `/register` returned 500 when given unicode username. ([\#513](https://github.com/matrix-org/synapse/issues/513)) Changes in synapse v0.12.0 (2016-01-04) ======================================= - Expose `/login` under `r0`. ([\#459](https://github.com/matrix-org/synapse/issues/459)) Changes in synapse v0.12.0-rc3 (2015-12-23) =========================================== - Allow guest accounts access to `/sync`. ([\#455](https://github.com/matrix-org/synapse/issues/455)) - Allow filters to include/exclude rooms at the room level rather than just from the components of the sync for each room. ([\#454](https://github.com/matrix-org/synapse/issues/454)) - Include urls for room avatars in the response to `/publicRooms`. ([\#453](https://github.com/matrix-org/synapse/issues/453)) - Don't set a identicon as the avatar for a user when they register. ([\#450](https://github.com/matrix-org/synapse/issues/450)) - Add a `display_name` to third-party invites. ([\#449](https://github.com/matrix-org/synapse/issues/449)) - Send more information to the identity server for third-party invites so that it can send richer messages to the invitee. ([\#446](https://github.com/matrix-org/synapse/issues/446)) - Cache the responses to `/initialSync` for 5 minutes. If a client retries a request to `/initialSync` before the a response was computed to the first request then the same response is used for both requests. ([\#457](https://github.com/matrix-org/synapse/issues/457)) - Fix a bug where synapse would always request the signing keys of remote servers even when the key was cached locally. ([\#452](https://github.com/matrix-org/synapse/issues/452)) - Fix 500 when pagination search results. ([\#447](https://github.com/matrix-org/synapse/issues/447)) - Fix a bug where synapse was leaking raw email address in third-party invites. ([\#448](https://github.com/matrix-org/synapse/issues/448)) Changes in synapse v0.12.0-rc2 (2015-12-14) =========================================== - Add caches for whether rooms have been forgotten by a user. ([\#434](https://github.com/matrix-org/synapse/issues/434)) - Remove instructions to use `--process-dependency-link` since all of the dependencies of synapse are on PyPI. ([\#436](https://github.com/matrix-org/synapse/issues/436)) - Parallelise the processing of `/sync` requests. ([\#437](https://github.com/matrix-org/synapse/issues/437)) - Fix race updating presence in `/events`. ([\#444](https://github.com/matrix-org/synapse/issues/444)) - Fix bug back-populating search results. ([\#441](https://github.com/matrix-org/synapse/issues/441)) - Fix bug calculating state in `/sync` requests. ([\#442](https://github.com/matrix-org/synapse/issues/442)) Changes in synapse v0.12.0-rc1 (2015-12-10) =========================================== - Host the client APIs released as r0 by on paths prefixed by `/_matrix/client/r0`. ([\#430](https://github.com/matrix-org/synapse/issues/430), [\#415](https://github.com/matrix-org/synapse/issues/415), [\#400](https://github.com/matrix-org/synapse/issues/400)) - Updates the client APIs to match r0 of the matrix specification. - All APIs return events in the new event format, old APIs also include the fields needed to parse the event using the old format for compatibility. ([\#402](https://github.com/matrix-org/synapse/issues/402)) - Search results are now given as a JSON array rather than a JSON object. ([\#405](https://github.com/matrix-org/synapse/issues/405)) - Miscellaneous changes to search. ([\#403](https://github.com/matrix-org/synapse/issues/403), [\#406](https://github.com/matrix-org/synapse/issues/406), [\#412](https://github.com/matrix-org/synapse/issues/412)) - Filter JSON objects may now be passed as query parameters to `/sync`. ([\#431](https://github.com/matrix-org/synapse/issues/431)) - Fix implementation of `/admin/whois`. ([\#418](https://github.com/matrix-org/synapse/issues/418)) - Only include the rooms that user has left in `/sync` if the client requests them in the filter. ([\#423](https://github.com/matrix-org/synapse/issues/423)) - Don't push for `m.room.message` by default. ([\#411](https://github.com/matrix-org/synapse/issues/411)) - Add API for setting per account user data. ([\#392](https://github.com/matrix-org/synapse/issues/392)) - Allow users to forget rooms. ([\#385](https://github.com/matrix-org/synapse/issues/385)) - Performance improvements and monitoring: - Add per-request counters for CPU time spent on the main python thread. ([\#421](https://github.com/matrix-org/synapse/issues/421), [\#420](https://github.com/matrix-org/synapse/issues/420)) - Add per-request counters for time spent in the database. ([\#429](https://github.com/matrix-org/synapse/issues/429)) - Make state updates in the C+S API idempotent. ([\#416](https://github.com/matrix-org/synapse/issues/416)) - Only fire `user_joined_room` if the user has actually joined. ([\#410](https://github.com/matrix-org/synapse/issues/410)) - Reuse a single http client, rather than creating new ones. ([\#413](https://github.com/matrix-org/synapse/issues/413)) - Fixed a bug upgrading from older versions of synapse on postgresql. ([\#417](https://github.com/matrix-org/synapse/issues/417)) Changes in synapse v0.11.1 (2015-11-20) ======================================= - Add extra options to search API. ([\#394](https://github.com/matrix-org/synapse/issues/394)) - Fix bug where we did not correctly cap federation retry timers. This meant it could take several hours for servers to start talking to resurrected servers, even when they were receiving traffic from them. ([\#393](https://github.com/matrix-org/synapse/issues/393)) - Don't advertise login token flow unless CAS is enabled. This caused issues where some clients would always use the fallback API if they did not recognize all login flows. ([\#391](https://github.com/matrix-org/synapse/issues/391)) - Change /v2 sync API to rename `private_user_data` to `account_data`. ([\#386](https://github.com/matrix-org/synapse/issues/386)) - Change /v2 sync API to remove the `event_map` and rename keys in `rooms` object. ([\#389](https://github.com/matrix-org/synapse/issues/389)) Changes in synapse v0.11.0-r2 (2015-11-19) ========================================== - Fix bug in database port script. ([\#387](https://github.com/matrix-org/synapse/issues/387)) Changes in synapse v0.11.0-r1 (2015-11-18) ========================================== - Retry and fail federation requests more aggressively for requests that block client side requests. ([\#384](https://github.com/matrix-org/synapse/issues/384)) Changes in synapse v0.11.0 (2015-11-17) ======================================= - Change CAS login API. ([\#349](https://github.com/matrix-org/synapse/issues/349)) Changes in synapse v0.11.0-rc2 (2015-11-13) =========================================== - Various changes to /sync API response format. ([\#373](https://github.com/matrix-org/synapse/issues/373)) - Fix regression when setting display name in newly joined room over federation. ([\#368](https://github.com/matrix-org/synapse/issues/368)) - Fix problem where /search was slow when using SQLite. ([\#366](https://github.com/matrix-org/synapse/issues/366)) Changes in synapse v0.11.0-rc1 (2015-11-11) =========================================== - Add Search API. ([\#307](https://github.com/matrix-org/synapse/issues/307), [\#324](https://github.com/matrix-org/synapse/issues/324), [\#327](https://github.com/matrix-org/synapse/issues/327), [\#336](https://github.com/matrix-org/synapse/issues/336), [\#350](https://github.com/matrix-org/synapse/issues/350), [\#359](https://github.com/matrix-org/synapse/issues/359)) - Add `archived` state to v2 /sync API. ([\#316](https://github.com/matrix-org/synapse/issues/316)) - Add ability to reject invites. ([\#317](https://github.com/matrix-org/synapse/issues/317)) - Add config option to disable password login. ([\#322](https://github.com/matrix-org/synapse/issues/322)) - Add the login fallback API. ([\#330](https://github.com/matrix-org/synapse/issues/330)) - Add room context API. ([\#334](https://github.com/matrix-org/synapse/issues/334)) - Add room tagging support. ([\#335](https://github.com/matrix-org/synapse/issues/335)) - Update v2 /sync API to match spec. ([\#305](https://github.com/matrix-org/synapse/issues/305), [\#316](https://github.com/matrix-org/synapse/issues/316), [\#321](https://github.com/matrix-org/synapse/issues/321), [\#332](https://github.com/matrix-org/synapse/issues/332), [\#337](https://github.com/matrix-org/synapse/issues/337), [\#341](https://github.com/matrix-org/synapse/issues/341)) - Change retry schedule for application services. ([\#320](https://github.com/matrix-org/synapse/issues/320)) - Change retry schedule for remote servers. ([\#340](https://github.com/matrix-org/synapse/issues/340)) - Fix bug where we hosted static content in the incorrect place. ([\#329](https://github.com/matrix-org/synapse/issues/329)) - Fix bug where we didn't increment retry interval for remote servers. ([\#343](https://github.com/matrix-org/synapse/issues/343)) Changes in synapse v0.10.1-rc1 (2015-10-15) =========================================== - Add support for CAS, thanks to Steven Hammerton. ([\#295](https://github.com/matrix-org/synapse/issues/295), [\#296](https://github.com/matrix-org/synapse/issues/296)) - Add support for using macaroons for `access_token`. ([\#256](https://github.com/matrix-org/synapse/issues/256), [\#229](https://github.com/matrix-org/synapse/issues/229)) - Add support for `m.room.canonical_alias`. ([\#287](https://github.com/matrix-org/synapse/issues/287)) - Add support for viewing the history of rooms that they have left. ([\#276](https://github.com/matrix-org/synapse/issues/276), [\#294](https://github.com/matrix-org/synapse/issues/294)) - Add support for refresh tokens. ([\#240](https://github.com/matrix-org/synapse/issues/240)) - Add flag on creation which disables federation of the room. ([\#279](https://github.com/matrix-org/synapse/issues/279)) - Add some room state to invites. ([\#275](https://github.com/matrix-org/synapse/issues/275)) - Atomically persist events when joining a room over federation. ([\#283](https://github.com/matrix-org/synapse/issues/283)) - Change default history visibility for private rooms. ([\#271](https://github.com/matrix-org/synapse/issues/271)) - Allow users to redact their own sent events. ([\#262](https://github.com/matrix-org/synapse/issues/262)) - Use tox for tests. ([\#247](https://github.com/matrix-org/synapse/issues/247)) - Split up syutil into separate libraries. ([\#243](https://github.com/matrix-org/synapse/issues/243)) Changes in synapse v0.10.0-r2 (2015-09-16) ========================================== - Fix bug where we always fetched remote server signing keys instead of using ones in our cache. - Fix adding threepids to an existing account. - Fix bug with invinting over federation where remote server was already in the room. ([\#281](https://github.com/matrix-org/synapse/issues/281), SYN-392) Changes in synapse v0.10.0-r1 (2015-09-08) ========================================== - Fix bug with python packaging Changes in synapse v0.10.0 (2015-09-03) ======================================= No change from release candidate. Changes in synapse v0.10.0-rc6 (2015-09-02) =========================================== - Remove some of the old database upgrade scripts. - Fix database port script to work with newly created sqlite databases. Changes in synapse v0.10.0-rc5 (2015-08-27) =========================================== - Fix bug that broke downloading files with ascii filenames across federation. Changes in synapse v0.10.0-rc4 (2015-08-27) =========================================== - Allow UTF-8 filenames for upload. ([\#259](https://github.com/matrix-org/synapse/issues/259)) Changes in synapse v0.10.0-rc3 (2015-08-25) =========================================== - Add `--keys-directory` config option to specify where files such as certs and signing keys should be stored in, when using `--generate-config` or `--generate-keys`. ([\#250](https://github.com/matrix-org/synapse/issues/250)) - Allow `--config-path` to specify a directory, causing synapse to use all `*.yaml` files in the directory as config files. ([\#249](https://github.com/matrix-org/synapse/issues/249)) - Add `web_client_location` config option to specify static files to be hosted by synapse under `/_matrix/client`. ([\#245](https://github.com/matrix-org/synapse/issues/245)) - Add helper utility to synapse to read and parse the config files and extract the value of a given key. For example: $ python -m synapse.config read server_name -c homeserver.yaml localhost . ([\#246](https://github.com/matrix-org/synapse/issues/246)) Changes in synapse v0.10.0-rc2 (2015-08-24) =========================================== - Fix bug where we incorrectly populated the `event_forward_extremities` table, resulting in problems joining large remote rooms (e.g. `#matrix:matrix.org`) - Reduce the number of times we wake up pushers by not listening for presence or typing events, reducing the CPU cost of each pusher. Changes in synapse v0.10.0-rc1 (2015-08-21) =========================================== Also see v0.9.4-rc1 changelog, which has been amalgamated into this release. General: - Upgrade to Twisted 15. ([\#173](https://github.com/matrix-org/synapse/issues/173)) - Add support for serving and fetching encryption keys over federation. ([\#208](https://github.com/matrix-org/synapse/issues/208)) - Add support for logging in with email address. ([\#234](https://github.com/matrix-org/synapse/issues/234)) - Add support for new `m.room.canonical_alias` event. ([\#233](https://github.com/matrix-org/synapse/issues/233)) - Change synapse to treat user IDs case insensitively during registration and login. (If two users already exist with case insensitive matching user ids, synapse will continue to require them to specify their user ids exactly.) - Error if a user tries to register with an email already in use. ([\#211](https://github.com/matrix-org/synapse/issues/211)) - Add extra and improve existing caches. ([\#212](https://github.com/matrix-org/synapse/issues/212), [\#219](https://github.com/matrix-org/synapse/issues/219), [\#226](https://github.com/matrix-org/synapse/issues/226), [\#228](https://github.com/matrix-org/synapse/issues/228)) - Batch various storage request. ([\#226](https://github.com/matrix-org/synapse/issues/226), [\#228](https://github.com/matrix-org/synapse/issues/228)) - Fix bug where we didn't correctly log the entity that triggered the request if the request came in via an application service. ([\#230](https://github.com/matrix-org/synapse/issues/230)) - Fix bug where we needlessly regenerated the full list of rooms an AS is interested in. ([\#232](https://github.com/matrix-org/synapse/issues/232)) - Add support for AS's to use `v2_alpha` registration API. ([\#210](https://github.com/matrix-org/synapse/issues/210)) Configuration: - Add `--generate-keys` that will generate any missing cert and key files in the configuration files. This is equivalent to running `--generate-config` on an existing configuration file. ([\#220](https://github.com/matrix-org/synapse/issues/220)) - `--generate-config` now no longer requires a `--server-name` parameter when used on existing configuration files. ([\#220](https://github.com/matrix-org/synapse/issues/220)) - Add `--print-pidfile` flag that controls the printing of the pid to stdout of the demonised process. ([\#213](https://github.com/matrix-org/synapse/issues/213)) Media Repository: - Fix bug where we picked a lower resolution image than requested. ([\#205](https://github.com/matrix-org/synapse/issues/205)) - Add support for specifying if a the media repository should dynamically thumbnail images or not. ([\#206](https://github.com/matrix-org/synapse/issues/206)) Metrics: - Add statistics from the reactor to the metrics API. ([\#224](https://github.com/matrix-org/synapse/issues/224), [\#225](https://github.com/matrix-org/synapse/issues/225)) Demo Homeservers: - Fix starting the demo homeservers without rate-limiting enabled. ([\#182](https://github.com/matrix-org/synapse/issues/182)) - Fix enabling registration on demo homeservers. ([\#223](https://github.com/matrix-org/synapse/issues/223)) Changes in synapse v0.9.4-rc1 (2015-07-21) ========================================== General: - Add basic implementation of receipts. (SPEC-99) - Add support for configuration presets in room creation API. ([\#203](https://github.com/matrix-org/synapse/issues/203)) - Add auth event that limits the visibility of history for new users. (SPEC-134) - Add SAML2 login/registration support. Thanks Muthu Subramanian! ([\#201](https://github.com/matrix-org/synapse/issues/201)) - Add client side key management APIs for end to end encryption. ([\#198](https://github.com/matrix-org/synapse/issues/198)) - Change power level semantics so that you cannot kick, ban or change power levels of users that have equal or greater power level than you. (SYN-192) - Improve performance by bulk inserting events where possible. ([\#193](https://github.com/matrix-org/synapse/issues/193)) - Improve performance by bulk verifying signatures where possible. ([\#194](https://github.com/matrix-org/synapse/issues/194)) Configuration: - Add support for including TLS certificate chains. Media Repository: - Add Content-Disposition headers to content repository responses. (SYN-150) Changes in synapse v0.9.3 (2015-07-01) ====================================== No changes from v0.9.3 Release Candidate 1. Changes in synapse v0.9.3-rc1 (2015-06-23) ========================================== General: - Fix a memory leak in the notifier. (SYN-412) - Improve performance of room initial sync. (SYN-418) - General improvements to logging. - Remove `access_token` query params from `INFO` level logging. Configuration: - Add support for specifying and configuring multiple listeners. (SYN-389) Application services: - Fix bug where synapse failed to send user queries to application services. Changes in synapse v0.9.2-r2 (2015-06-15) ========================================= Fix packaging so that schema delta python files get included in the package. Changes in synapse v0.9.2 (2015-06-12) ====================================== General: - Use ultrajson for json (de)serialisation when a canonical encoding is not required. Ultrajson is significantly faster than simplejson in certain circumstances. - Use connection pools for outgoing HTTP connections. - Process thumbnails on separate threads. Configuration: - Add option, `gzip_responses`, to disable HTTP response compression. Federation: - Improve resilience of backfill by ensuring we fetch any missing auth events. - Improve performance of backfill and joining remote rooms by removing unnecessary computations. This included handling events we'd previously handled as well as attempting to compute the current state for outliers. Changes in synapse v0.9.1 (2015-05-26) ====================================== General: - Add support for backfilling when a client paginates. This allows servers to request history for a room from remote servers when a client tries to paginate history the server does not have - SYN-36 - Fix bug where you couldn't disable non-default pushrules - SYN-378 - Fix `register_new_user` script - SYN-359 - Improve performance of fetching events from the database, this improves both initialSync and sending of events. - Improve performance of event streams, allowing synapse to handle more simultaneous connected clients. Federation: - Fix bug with existing backfill implementation where it returned the wrong selection of events in some circumstances. - Improve performance of joining remote rooms. Configuration: - Add support for changing the bind host of the metrics listener via the `metrics_bind_host` option. Changes in synapse v0.9.0-r5 (2015-05-21) ========================================= - Add more database caches to reduce amount of work done for each pusher. This radically reduces CPU usage when multiple pushers are set up in the same room. Changes in synapse v0.9.0 (2015-05-07) ====================================== General: - Add support for using a PostgreSQL database instead of SQLite. See [docs/postgres.rst](docs/postgres.rst) for details. - Add password change and reset APIs. See [Registration](https://github.com/matrix-org/matrix-doc/blob/master/specification/10_client_server_api.rst#registration) in the spec. - Fix memory leak due to not releasing stale notifiers - SYN-339. - Fix race in caches that occasionally caused some presence updates to be dropped - SYN-369. - Check server name has not changed on restart. - Add a sample systemd unit file and a logger configuration in contrib/systemd. Contributed Ivan Shapovalov. Federation: - Add key distribution mechanisms for fetching public keys of unavailable remote homeservers. See [Retrieving Server Keys](https://github.com/matrix-org/matrix-doc/blob/6f2698/specification/30_server_server_api.rst#retrieving-server-keys) in the spec. Configuration: - Add support for multiple config files. - Add support for dictionaries in config files. - Remove support for specifying config options on the command line, except for: - `--daemonize` - Daemonize the homeserver. - `--manhole` - Turn on the twisted telnet manhole service on the given port. - `--database-path` - The path to a sqlite database to use. - `--verbose` - The verbosity level. - `--log-file` - File to log to. - `--log-config` - Python logging config file. - `--enable-registration` - Enable registration for new users. Application services: - Reliably retry sending of events from Synapse to application services, as per [Application Services](https://github.com/matrix-org/matrix-doc/blob/0c6bd9/specification/25_application_service_api.rst#home-server---application-service-api) spec. - Application services can no longer register via the `/register` API, instead their configuration should be saved to a file and listed in the synapse `app_service_config_files` config option. The AS configuration file has the same format as the old `/register` request. See [docs/application_services.rst](docs/application_services.rst) for more information. Changes in synapse v0.8.1 (2015-03-18) ====================================== - Disable registration by default. New users can be added using the command `register_new_matrix_user` or by enabling registration in the config. - Add metrics to synapse. To enable metrics use config options `enable_metrics` and `metrics_port`. - Fix bug where banning only kicked the user. Changes in synapse v0.8.0 (2015-03-06) ====================================== General: - Add support for registration fallback. This is a page hosted on the server which allows a user to register for an account, regardless of what client they are using (e.g. mobile devices). - Added new default push rules and made them configurable by clients: - Suppress all notice messages. - Notify when invited to a new room. - Notify for messages that Don't match any rule. - Notify on incoming call. Federation: - Added per host server side rate-limiting of incoming federation requests. - Added a `/get_missing_events/` API to federation to reduce number of `/events/` requests. Configuration: - Added configuration option to disable registration: `disable_registration`. - Added configuration option to change soft limit of number of open file descriptors: `soft_file_limit`. - Make `tls_private_key_path` optional when running with `no_tls`. Application services: - Application services can now poll on the CS API `/events` for their events, by providing their application service `access_token`. - Added exclusive namespace support to application services API. Changes in synapse v0.7.1 (2015-02-19) ====================================== - Initial alpha implementation of parts of the Application Services API. Including: - AS Registration / Unregistration - User Query API - Room Alias Query API - Push transport for receiving events. - User/Alias namespace admin control - Add cache when fetching events from remote servers to stop repeatedly fetching events with bad signatures. - Respect the per remote server retry scheme when fetching both events and server keys to reduce the number of times we send requests to dead servers. - Inform remote servers when the local server fails to handle a received event. - Turn off python bytecode generation due to problems experienced when upgrading from previous versions. Changes in synapse v0.7.0 (2015-02-12) ====================================== - Add initial implementation of the query auth federation API, allowing servers to agree on whether an event should be allowed or rejected. - Persist events we have rejected from federation, fixing the bug where servers would keep requesting the same events. - Various federation performance improvements, including: - Add in memory caches on queries such as: > - Computing the state of a room at a point in time, used for authorization on federation requests. > - Fetching events from the database. > - User's room membership, used for authorizing presence updates. - Upgraded JSON library to improve parsing and serialisation speeds. - Add default avatars to new user accounts using pydenticon library. - Correctly time out federation requests. - Retry federation requests against different servers. - Add support for push and push rules. - Add alpha versions of proposed new CSv2 APIs, including `/sync` API. Changes in synapse 0.6.1 (2015-01-07) ===================================== - Major optimizations to improve performance of initial sync and event sending in large rooms (by up to 10x) - Media repository now includes a Content-Length header on media downloads. - Improve quality of thumbnails by changing resizing algorithm. Changes in synapse 0.6.0 (2014-12-16) ===================================== - Add new API for media upload and download that supports thumbnailing. - Replicate media uploads over multiple homeservers so media is always served to clients from their local homeserver. This obsoletes the `--content-addr` parameter and confusion over accessing content directly from remote homeservers. - Implement exponential backoff when retrying federation requests when sending to remote homeservers which are offline. - Implement typing notifications. - Fix bugs where we sent events with invalid signatures due to bugs where we incorrectly persisted events. - Improve performance of database queries involving retrieving events. Changes in synapse 0.5.4a (2014-12-13) ====================================== - Fix bug while generating the error message when a file path specified in the config doesn't exist. Changes in synapse 0.5.4 (2014-12-03) ===================================== - Fix presence bug where some rooms did not display presence updates for remote users. - Do not log SQL timing log lines when started with `-v` - Fix potential memory leak. Changes in synapse 0.5.3c (2014-12-02) ====================================== - Change the default value for the `content_addr` option to use the HTTP listener, as by default the HTTPS listener will be using a self-signed certificate. Changes in synapse 0.5.3 (2014-11-27) ===================================== - Fix bug that caused joining a remote room to fail if a single event was not signed correctly. - Fix bug which caused servers to continuously try and fetch events from other servers. Changes in synapse 0.5.2 (2014-11-26) ===================================== Fix major bug that caused rooms to disappear from peoples initial sync. Changes in synapse 0.5.1 (2014-11-26) ===================================== See UPGRADES.rst for specific instructions on how to upgrade. - Fix bug where we served up an Event that did not match its signatures. - Fix regression where we no longer correctly handled the case where a homeserver receives an event for a room it doesn't recognise (but is in.) Changes in synapse 0.5.0 (2014-11-19) ===================================== This release includes changes to the federation protocol and client-server API that is not backwards compatible. This release also changes the internal database schemas and so requires servers to drop their current history. See UPGRADES.rst for details. Homeserver: - Add authentication and authorization to the federation protocol. Events are now signed by their originating homeservers. - Implement the new authorization model for rooms. - Split out web client into a separate repository: matrix-angular-sdk. - Change the structure of PDUs. - Fix bug where user could not join rooms via an alias containing 4-byte UTF-8 characters. - Merge concept of PDUs and Events internally. - Improve logging by adding request ids to log lines. - Implement a very basic room initial sync API. - Implement the new invite/join federation APIs. Webclient: - The webclient has been moved to a separate repository. Changes in synapse 0.4.2 (2014-10-31) ===================================== Homeserver: - Fix bugs where we did not notify users of correct presence updates. - Fix bug where we did not handle sub second event stream timeouts. Webclient: - Add ability to click on messages to see JSON. - Add ability to redact messages. - Add ability to view and edit all room state JSON. - Handle incoming redactions. - Improve feedback on errors. - Fix bugs in mobile CSS. - Fix bugs with desktop notifications. Changes in synapse 0.4.1 (2014-10-17) ===================================== Webclient: - Fix bug with display of timestamps. Changes in synpase 0.4.0 (2014-10-17) ===================================== This release includes changes to the federation protocol and client-server API that is not backwards compatible. The Matrix specification has been moved to a separate git repository: You will also need an updated syutil and config. See UPGRADES.rst. Homeserver: - Sign federation transactions to assert strong identity over federation. - Rename timestamp keys in PDUs and events from `ts` and `hsob_ts` to `origin_server_ts`. Changes in synapse 0.3.4 (2014-09-25) ===================================== This version adds support for using a TURN server. See docs/turn-howto.rst on how to set one up. Homeserver: - Add support for redaction of messages. - Fix bug where inviting a user on a remote homeserver could take up to 20-30s. - Implement a get current room state API. - Add support specifying and retrieving turn server configuration. Webclient: - Add button to send messages to users from the home page. - Add support for using TURN for VoIP calls. - Show display name change messages. - Fix bug where the client didn't get the state of a newly joined room until after it has been refreshed. - Fix bugs with tab complete. - Fix bug where holding down the down arrow caused chrome to chew 100% CPU. - Fix bug where desktop notifications occasionally used "Undefined" as the display name. - Fix more places where we sometimes saw room IDs incorrectly. - Fix bug which caused lag when entering text in the text box. Changes in synapse 0.3.3 (2014-09-22) ===================================== Homeserver: - Fix bug where you continued to get events for rooms you had left. Webclient: - Add support for video calls with basic UI. - Fix bug where one to one chats were named after your display name rather than the other person's. - Fix bug which caused lag when typing in the textarea. - Refuse to run on browsers we know won't work. - Trigger pagination when joining new rooms. - Fix bug where we sometimes didn't display invitations in recents. - Automatically join room when accepting a VoIP call. - Disable outgoing and reject incoming calls on browsers we Don't support VoIP in. - Don't display desktop notifications for messages in the room you are non-idle and speaking in. Changes in synapse 0.3.2 (2014-09-18) ===================================== Webclient: - Fix bug where an empty "bing words" list in old accounts didn't send notifications when it should have done. Changes in synapse 0.3.1 (2014-09-18) ===================================== This is a release to hotfix v0.3.0 to fix two regressions. Webclient: - Fix a regression where we sometimes displayed duplicate events. - Fix a regression where we didn't immediately remove rooms you were banned in from the recents list. Changes in synapse 0.3.0 (2014-09-18) ===================================== See UPGRADE for information about changes to the client server API, including breaking backwards compatibility with VoIP calls and registration API. Homeserver: - When a user changes their displayname or avatar the server will now update all their join states to reflect this. - The server now adds `age` key to events to indicate how old they are. This is clock independent, so at no point does any server or webclient have to assume their clock is in sync with everyone else. - Fix bug where we didn't correctly pull in missing PDUs. - Fix bug where `prev_content` key wasn't always returned. - Add support for password resets. Webclient: - Improve page content loading. - Join/parts now trigger desktop notifications. - Always show room aliases in the UI if one is present. - No longer show user-count in the recents side panel. - Add up & down arrow support to the text box for message sending to step through your sent history. - Don't display notifications for our own messages. - Emotes are now formatted correctly in desktop notifications. - The recents list now differentiates between public & private rooms. - Fix bug where when switching between rooms the pagination flickered before the view jumped to the bottom of the screen. - Add bing word support. Registration API: - The registration API has been overhauled to function like the login API. In practice, this means registration requests must now include the following: `type`:`m.login.password`. See UPGRADE for more information on this. - The `user_id` key has been renamed to `user` to better match the login API. - There is an additional login type: `m.login.email.identity`. - The command client and web client have been updated to reflect these changes. Changes in synapse 0.2.3 (2014-09-12) ===================================== Homeserver: - Fix bug where we stopped sending events to remote homeservers if a user from that homeserver left, even if there were some still in the room. - Fix bugs in the state conflict resolution where it was incorrectly rejecting events. Webclient: - Display room names and topics. - Allow setting/editing of room names and topics. - Display information about rooms on the main page. - Handle ban and kick events in real time. - VoIP UI and reliability improvements. - Add glare support for VoIP. - Improvements to initial startup speed. - Don't display duplicate join events. - Local echo of messages. - Differentiate sending and sent of local echo. - Various minor bug fixes. Changes in synapse 0.2.2 (2014-09-06) ===================================== Homeserver: - When the server returns state events it now also includes the previous content. - Add support for inviting people when creating a new room. - Make the homeserver inform the room via m.room.aliases when a new alias is added for a room. - Validate `m.room.power_level` events. Webclient: - Add support for captchas on registration. - Handle m.room.aliases events. - Asynchronously send messages and show a local echo. - Inform the UI when a message failed to send. - Only autoscroll on receiving a new message if the user was already at the bottom of the screen. - Add support for ban/kick reasons. Changes in synapse 0.2.1 (2014-09-03) ===================================== Homeserver: - Added support for signing up with a third party id. - Add synctl scripts. - Added rate limiting. - Add option to change the external address the content repo uses. - Presence bug fixes. Webclient: - Added support for signing up with a third party id. - Added support for banning and kicking users. - Added support for displaying and setting ops. - Added support for room names. - Fix bugs with room membership event display. Changes in synapse 0.2.0 (2014-09-02) ===================================== This update changes many configuration options, updates the database schema and mandates SSL for server-server connections. Homeserver: - Require SSL for server-server connections. - Add SSL listener for client-server connections. - Add ability to use config files. - Add support for kicking/banning and power levels. - Allow setting of room names and topics on creation. - Change presence to include last seen time of the user. - Change url path prefix to `/_matrix/...` - Bug fixes to presence. Webclient: - Reskin the CSS for registration and login. - Various improvements to rooms CSS. - Support changes in client-server API. - Bug fixes to VOIP UI. - Various bug fixes to handling of changes to room member list. Changes in synapse 0.1.2 (2014-08-29) ===================================== Webclient: - Add basic call state UI for VoIP calls. Changes in synapse 0.1.1 (2014-08-29) ===================================== Homeserver: - Fix bug that caused the event stream to not notify some clients about changes. Changes in synapse 0.1.0 (2014-08-29) ===================================== Presence has been re-enabled in this release. Homeserver: - Update client to server API, including: - Use a more consistent url scheme. - Provide more useful information in the initial sync api. - Change the presence handling to be much more efficient. - Change the presence server to server API to not require explicit polling of all users who share a room with a user. - Fix races in the event streaming logic. Webclient: - Update to use new client to server API. - Add basic VOIP support. - Add idle timers that change your status to away. - Add recent rooms column when viewing a room. - Various network efficiency improvements. - Add basic mobile browser support. - Add a settings page. Changes in synapse 0.0.1 (2014-08-22) ===================================== Presence has been disabled in this release due to a bug that caused the homeserver to spam other remote homeservers. Homeserver: - Completely change the database schema to support generic event types. - Improve presence reliability. - Improve reliability of joining remote rooms. - Fix bug where room join events were duplicated. - Improve initial sync API to return more information to the client. - Stop generating fake messages for room membership events. Webclient: - Add tab completion of names. - Add ability to upload and send images. - Add profile pages. - Improve CSS layout of room. - Disambiguate identical display names. - Don't get remote users display names and avatars individually. - Use the new initial sync API to reduce number of round trips to the homeserver. - Change url scheme to use room aliases instead of room ids where known. - Increase longpoll timeout. Changes in synapse 0.0.0 (2014-08-13) ===================================== - Initial alpha release synapse-1.100.0/docs/changelogs/README.md000066400000000000000000000000671455622526000176660ustar00rootroot00000000000000This directory contains changelogs for previous years. synapse-1.100.0/docs/code_style.md000066400000000000000000000105101455622526000167430ustar00rootroot00000000000000# Code Style ## Formatting tools The Synapse codebase uses a number of code formatting tools in order to quickly and automatically check for formatting (and sometimes logical) errors in code. The necessary tools are: - [black](https://black.readthedocs.io/en/stable/), a source code formatter; - [isort](https://pycqa.github.io/isort/), which organises each file's imports; - [ruff](https://github.com/charliermarsh/ruff), which can spot common errors; and - [mypy](https://mypy.readthedocs.io/en/stable/), a type checker. See [the contributing guide](development/contributing_guide.md#run-the-linters) for instructions on how to install the above tools and run the linters. It's worth noting that modern IDEs and text editors can run these tools automatically on save. It may be worth looking into whether this functionality is supported in your editor for a more convenient development workflow. It is not, however, recommended to run `mypy` on save as it takes a while and can be very resource intensive. ## General rules - **Naming**: - Use `CamelCase` for class and type names - Use underscores for `function_names` and `variable_names`. - **Docstrings**: should follow the [google code style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings). See the [examples](http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html) in the sphinx documentation. - **Imports**: - Imports should be sorted by `isort` as described above. - Prefer to import classes and functions rather than packages or modules. Example: ```python from synapse.types import UserID ... user_id = UserID(local, server) ``` is preferred over: ```python from synapse import types ... user_id = types.UserID(local, server) ``` (or any other variant). This goes against the advice in the Google style guide, but it means that errors in the name are caught early (at import time). - Avoid wildcard imports (`from synapse.types import *`) and relative imports (`from .types import UserID`). ## Configuration code and documentation format When adding a configuration option to the code, if several settings are grouped into a single dict, ensure that your code correctly handles the top-level option being set to `None` (as it will be if no sub-options are enabled). The [configuration manual](usage/configuration/config_documentation.md) acts as a reference to Synapse's configuration options for server administrators. Remember that many readers will be unfamiliar with YAML and server administration in general, so it is important that when you add a configuration option the documentation be as easy to understand as possible, which includes following a consistent format. Some guidelines follow: - Each option should be listed in the config manual with the following format: - The name of the option, prefixed by `###`. - A comment which describes the default behaviour (i.e. what happens if the setting is omitted), as well as what the effect will be if the setting is changed. - An example setting, using backticks to define the code block For boolean (on/off) options, convention is that this example should be the *opposite* to the default. For other options, the example should give some non-default value which is likely to be useful to the reader. - There should be a horizontal rule between each option, which can be achieved by adding `---` before and after the option. - `true` and `false` are spelt thus (as opposed to `True`, etc.) Example: --- ### `modules` Use the `module` sub-option to add a module under `modules` to extend functionality. The `module` setting then has a sub-option, `config`, which can be used to define some configuration for the `module`. Defaults to none. Example configuration: ```yaml modules: - module: my_super_module.MySuperClass config: do_thing: true - module: my_other_super_module.SomeClass config: {} ``` --- Note that the sample configuration is generated from the synapse code and is maintained by a script, `scripts-dev/generate_sample_config.sh`. Making sure that the output from this script matches the desired format is left as an exercise for the reader! synapse-1.100.0/docs/consent_tracking.md000066400000000000000000000162401455622526000201520ustar00rootroot00000000000000Support in Synapse for tracking agreement to server terms and conditions ======================================================================== Synapse 0.30 introduces support for tracking whether users have agreed to the terms and conditions set by the administrator of a server - and blocking access to the server until they have. There are several parts to this functionality; each requires some specific configuration in `homeserver.yaml` to be enabled. Note that various parts of the configuration and this document refer to the "privacy policy": agreement with a privacy policy is one particular use of this feature, but of course administrators can specify other terms and conditions unrelated to "privacy" per se. Collecting policy agreement from a user --------------------------------------- Synapse can be configured to serve the user a simple policy form with an "accept" button. Clicking "Accept" records the user's acceptance in the database and shows a success page. To enable this, first create templates for the policy and success pages. These should be stored on the local filesystem. These templates use the [Jinja2](http://jinja.pocoo.org) templating language, and [docs/privacy_policy_templates](https://github.com/element-hq/synapse/tree/develop/docs/privacy_policy_templates/) gives examples of the sort of thing that can be done. Note that the templates must be stored under a name giving the language of the template - currently this must always be `en` (for "English"); internationalisation support is intended for the future. The template for the policy itself should be versioned and named according to the version: for example `1.0.html`. The version of the policy which the user has agreed to is stored in the database. Once the templates are in place, make the following changes to `homeserver.yaml`: 1. Add a `user_consent` section, which should look like: ```yaml user_consent: template_dir: privacy_policy_templates version: 1.0 ``` `template_dir` points to the directory containing the policy templates. `version` defines the version of the policy which will be served to the user. In the example above, Synapse will serve `privacy_policy_templates/en/1.0.html`. 2. Add a `form_secret` setting at the top level: ```yaml form_secret: "" ``` This should be set to an arbitrary secret string (try `pwgen -y 30` to generate suitable secrets). More on what this is used for below. 3. Add `consent` wherever the `client` resource is currently enabled in the `listeners` configuration. For example: ```yaml listeners: - port: 8008 resources: - names: - client - consent ``` Finally, ensure that `jinja2` is installed. If you are using a virtualenv, this should be a matter of `pip install Jinja2`. On debian, try `apt-get install python-jinja2`. Once this is complete, and the server has been restarted, try visiting `https:///_matrix/consent`. If correctly configured, this should give an error "Missing string query parameter 'u'". It is now possible to manually construct URIs where users can give their consent. ### Enabling consent tracking at registration 1. Add the following to your configuration: ```yaml user_consent: require_at_registration: true policy_name: "Privacy Policy" # or whatever you'd like to call the policy ``` 2. In your consent templates, make use of the `public_version` variable to see if an unauthenticated user is viewing the page. This is typically wrapped around the form that would be used to actually agree to the document: ```html {% if not public_version %}
{% endif %} ``` 3. Restart Synapse to apply the changes. Visiting `https:///_matrix/consent` should now give you a view of the privacy document. This is what users will be able to see when registering for accounts. ### Constructing the consent URI It may be useful to manually construct the "consent URI" for a given user - for instance, in order to send them an email asking them to consent. To do this, take the base `https:///_matrix/consent` URL and add the following query parameters: * `u`: the user id of the user. This can either be a full MXID (`@user:server.com`) or just the localpart (`user`). * `h`: hex-encoded HMAC-SHA256 of `u` using the `form_secret` as a key. It is possible to calculate this on the commandline with something like: ```bash echo -n '' | openssl sha256 -hmac '' ``` This should result in a URI which looks something like: `https:///_matrix/consent?u=&h=68a152465a4d...`. Note that not providing a `u` parameter will be interpreted as wanting to view the document from an unauthenticated perspective, such as prior to registration. Therefore, the `h` parameter is not required in this scenario. To enable this behaviour, set `require_at_registration` to `true` in your `user_consent` config. Sending users a server notice asking them to agree to the policy ---------------------------------------------------------------- It is possible to configure Synapse to send a [server notice](server_notices.md) to anybody who has not yet agreed to the current version of the policy. To do so: * ensure that the consent resource is configured, as in the previous section * ensure that server notices are configured, as in [the server notice documentation](server_notices.md). * Add `server_notice_content` under `user_consent` in `homeserver.yaml`. For example: ```yaml user_consent: server_notice_content: msgtype: m.text body: >- Please give your consent to the privacy policy at %(consent_uri)s. ``` Synapse automatically replaces the placeholder `%(consent_uri)s` with the consent uri for that user. * ensure that `public_baseurl` is set in `homeserver.yaml`, and gives the base URI that clients use to connect to the server. (It is used to construct `consent_uri` in the server notice.) Blocking users from using the server until they agree to the policy ------------------------------------------------------------------- Synapse can be configured to block any attempts to join rooms or send messages until the user has given their agreement to the policy. (Joining the server notices room is exempted from this). To enable this, add `block_events_error` under `user_consent`. For example: ```yaml user_consent: block_events_error: >- You can't send any messages until you consent to the privacy policy at %(consent_uri)s. ``` Synapse automatically replaces the placeholder `%(consent_uri)s` with the consent uri for that user. ensure that `public_baseurl` is set in `homeserver.yaml`, and gives the base URI that clients use to connect to the server. (It is used to construct `consent_uri` in the error.) synapse-1.100.0/docs/delegate.md000066400000000000000000000115771455622526000164010ustar00rootroot00000000000000# Delegation of incoming federation traffic In the following documentation, we use the term `server_name` to refer to that setting in your homeserver configuration file. It appears at the ends of user ids, and tells other homeservers where they can find your server. By default, other homeservers will expect to be able to reach yours via your `server_name`, on port 8448. For example, if you set your `server_name` to `example.com` (so that your user names look like `@user:example.com`), other servers will try to connect to yours at `https://example.com:8448/`. Delegation is a Matrix feature allowing a homeserver admin to retain a `server_name` of `example.com` so that user IDs, room aliases, etc continue to look like `*:example.com`, whilst having federation traffic routed to a different server and/or port (e.g. `synapse.example.com:443`). ## .well-known delegation To use this method, you need to be able to configure the server at `https://` to serve a file at `https:///.well-known/matrix/server`. There are two ways to do this, shown below. Note that the `.well-known` file is hosted on the default port for `https` (port 443). ### External server For maximum flexibility, you need to configure an external server such as nginx, Apache or HAProxy to serve the `https:///.well-known/matrix/server` file. Setting up such a server is out of the scope of this documentation, but note that it is often possible to configure your [reverse proxy](reverse_proxy.md) for this. The URL `https:///.well-known/matrix/server` should be configured return a JSON structure containing the key `m.server` like this: ```json { "m.server": "[:]" } ``` In our example (where we want federation traffic to be routed to `https://synapse.example.com`, on port 443), this would mean that `https://example.com/.well-known/matrix/server` should return: ```json { "m.server": "synapse.example.com:443" } ``` Note, specifying a port is optional. If no port is specified, then it defaults to 8448. ### Serving a `.well-known/matrix/server` file with Synapse If you are able to set up your domain so that `https://` is routed to Synapse (i.e., the only change needed is to direct federation traffic to port 443 instead of port 8448), then it is possible to configure Synapse to serve a suitable `.well-known/matrix/server` file. To do so, add the following to your `homeserver.yaml` file: ```yaml serve_server_wellknown: true ``` **Note**: this *only* works if `https://` is routed to Synapse, so is generally not suitable if Synapse is hosted at a subdomain such as `https://synapse.example.com`. ## SRV DNS record delegation It is also possible to do delegation using a SRV DNS record. However, that is generally not recommended, as it can be difficult to configure the TLS certificates correctly in this case, and it offers little advantage over `.well-known` delegation. Please keep in mind that server delegation is a function of server-server communication, and as such using SRV DNS records will not cover use cases involving client-server comms. This means setting global client settings (such as a Jitsi endpoint, or disabling creating new rooms as encrypted by default, etc) will still require that you serve a file from the `https:///.well-known/` endpoints defined in the spec! If you are considering using SRV DNS delegation to avoid serving files from this endpoint, consider the impact that you will not be able to change those client-based default values globally, and will be relegated to the featureset of the configuration of each individual client. However, if you really need it, you can find some documentation on what such a record should look like and how Synapse will use it in [the Matrix specification](https://matrix.org/docs/spec/server_server/latest#resolving-server-names). ## Delegation FAQ ### When do I need delegation? If your homeserver's APIs are accessible on the default federation port (8448) and the domain your `server_name` points to, you do not need any delegation. For instance, if you registered `example.com` and pointed its DNS A record at a fresh server, you could install Synapse on that host, giving it a `server_name` of `example.com`, and once a reverse proxy has been set up to proxy all requests sent to the port `8448` and serve TLS certificates for `example.com`, you wouldn't need any delegation set up. **However**, if your homeserver's APIs aren't accessible on port 8448 and on the domain `server_name` points to, you will need to let other servers know how to find it using delegation. ### Should I use a reverse proxy for federation traffic? Generally, using a reverse proxy for both the federation and client traffic is a good idea, since it saves handling TLS traffic in Synapse. See [the reverse proxy documentation](reverse_proxy.md) for information on setting up a reverse proxy. synapse-1.100.0/docs/deprecation_policy.md000066400000000000000000000047721455622526000205020ustar00rootroot00000000000000Deprecation Policy for Platform Dependencies ============================================ Synapse has a number of platform dependencies, including Python, Rust, PostgreSQL and SQLite. This document outlines the policy towards which versions we support, and when we drop support for versions in the future. Policy ------ Synapse follows the upstream support life cycles for Python and PostgreSQL, i.e. when a version reaches End of Life Synapse will withdraw support for that version in future releases. Details on the upstream support life cycles for Python and PostgreSQL are documented at [https://endoflife.date/python](https://endoflife.date/python) and [https://endoflife.date/postgresql](https://endoflife.date/postgresql). A Rust compiler is required to build Synapse from source. For any given release the minimum required version may be bumped up to a recent Rust version, and so people building from source should ensure they can fetch recent versions of Rust (e.g. by using [rustup](https://rustup.rs/)). The oldest supported version of SQLite is the version [provided](https://packages.debian.org/bullseye/libsqlite3-0) by [Debian oldstable](https://wiki.debian.org/DebianOldStable). Context ------- It is important for system admins to have a clear understanding of the platform requirements of Synapse and its deprecation policies so that they can effectively plan upgrading their infrastructure ahead of time. This is especially important in contexts where upgrading the infrastructure requires auditing and approval from a security team, or where otherwise upgrading is a long process. By following the upstream support life cycles Synapse can ensure that its dependencies continue to get security patches, while not requiring system admins to constantly update their platform dependencies to the latest versions. For Rust, the situation is a bit different given that a) the Rust foundation does not generally support older Rust versions, and b) the library ecosystem generally bump their minimum support Rust versions frequently. In general, the Synapse team will try to avoid updating the dependency on Rust to the absolute latest version, but introducing a formal policy is hard given the constraints of the ecosystem. On a similar note, SQLite does not generally have a concept of "supported release"; bugfixes are published for the latest minor release only. We chose to track Debian's oldstable as this is relatively conservative, predictably updated and is consistent with the `.deb` packages released by Matrix.org.synapse-1.100.0/docs/development/000077500000000000000000000000001455622526000166145ustar00rootroot00000000000000synapse-1.100.0/docs/development/cas.md000066400000000000000000000040371455622526000177100ustar00rootroot00000000000000# How to test CAS as a developer without a server The [django-mama-cas](https://github.com/jbittel/django-mama-cas) project is an easy to run CAS implementation built on top of Django. ## Prerequisites 1. Create a new virtualenv: `python3 -m venv ` 2. Activate your virtualenv: `source /path/to/your/virtualenv/bin/activate` 3. Install Django and django-mama-cas: ```sh python -m pip install "django<3" "django-mama-cas==2.4.0" ``` 4. Create a Django project in the current directory: ```sh django-admin startproject cas_test . ``` 5. Follow the [install directions](https://django-mama-cas.readthedocs.io/en/latest/installation.html#configuring) for django-mama-cas 6. Setup the SQLite database: `python manage.py migrate` 7. Create a user: ```sh python manage.py createsuperuser ``` 1. Use whatever you want as the username and password. 2. Leave the other fields blank. 8. Use the built-in Django test server to serve the CAS endpoints on port 8000: ```sh python manage.py runserver ``` You should now have a Django project configured to serve CAS authentication with a single user created. ## Configure Synapse (and Element) to use CAS 1. Modify your `homeserver.yaml` to enable CAS and point it to your locally running Django test server: ```yaml cas_config: enabled: true server_url: "http://localhost:8000" service_url: "http://localhost:8081" #displayname_attribute: name #required_attributes: # name: value ``` 2. Restart Synapse. Note that the above configuration assumes the homeserver is running on port 8081 and that the CAS server is on port 8000, both on localhost. ## Testing the configuration Then in Element: 1. Visit the login page with a Element pointing at your homeserver. 2. Click the Single Sign-On button. 3. Login using the credentials created with `createsuperuser`. 4. You should be logged in. If you want to repeat this process you'll need to manually logout first: 1. http://localhost:8000/admin/ 2. Click "logout" in the top right. synapse-1.100.0/docs/development/contributing_guide.md000066400000000000000000000564661455622526000230430ustar00rootroot00000000000000# Contributing This document aims to get you started with contributing to Synapse! # 1. Who can contribute to Synapse? Everyone is welcome to contribute code to [Synapse](https://github.com/element-hq/synapse), provided that they are willing to license their contributions to Element under a [Contributor License Agreement](https://cla-assistant.io/element-hq/synapse) (CLA). This ensures that their contribution will be made available under an OSI-approved open-source license, currently Affero General Public License v3 (AGPLv3). Please see the [Element blog post](https://element.io/blog/synapse-now-lives-at-github-com-element-hq-synapse/) for the full rationale. # 2. What do I need? If you are running Windows, the Windows Subsystem for Linux (WSL) is strongly recommended for development. More information about WSL can be found at . Running Synapse natively on Windows is not officially supported. The code of Synapse is written in Python 3. To do pretty much anything, you'll need [a recent version of Python 3](https://www.python.org/downloads/). Your Python also needs support for [virtual environments](https://docs.python.org/3/library/venv.html). This is usually built-in, but some Linux distributions like Debian and Ubuntu split it out into its own package. Running `sudo apt install python3-venv` should be enough. A recent version of the Rust compiler is needed to build the native modules. The easiest way of installing the latest version is to use [rustup](https://rustup.rs/). Synapse can connect to PostgreSQL via the [psycopg2](https://pypi.org/project/psycopg2/) Python library. Building this library from source requires access to PostgreSQL's C header files. On Debian or Ubuntu Linux, these can be installed with `sudo apt install libpq-dev`. Synapse has an optional, improved user search with better Unicode support. For that you need the development package of `libicu`. On Debian or Ubuntu Linux, this can be installed with `sudo apt install libicu-dev`. The source code of Synapse is hosted on GitHub. You will also need [a recent version of git](https://github.com/git-guides/install-git). For some tests, you will need [a recent version of Docker](https://docs.docker.com/get-docker/). # 3. Get the source. The preferred and easiest way to contribute changes is to fork the relevant project on GitHub, and then [create a pull request]( https://help.github.com/articles/using-pull-requests/) to ask us to pull your changes into our repo. Please base your changes on the `develop` branch. ```sh git clone git@github.com:YOUR_GITHUB_USER_NAME/synapse.git git checkout develop ``` If you need help getting started with git, this is beyond the scope of the document, but you can find many good git tutorials on the web. # 4. Install the dependencies Before installing the Python dependencies, make sure you have installed a recent version of Rust (see the "What do I need?" section above). The easiest way of installing the latest version is to use [rustup](https://rustup.rs/). Synapse uses the [poetry](https://python-poetry.org/) project to manage its dependencies and development environment. Once you have installed Python 3 and added the source, you should install `poetry`. Of their installation methods, we recommend [installing `poetry` using `pipx`](https://python-poetry.org/docs/#installing-with-pipx), ```shell pip install --user pipx pipx install poetry==1.5.1 # Problems with Poetry 1.6, see https://github.com/matrix-org/synapse/issues/16147 ``` but see poetry's [installation instructions](https://python-poetry.org/docs/#installation) for other installation methods. Developing Synapse requires Poetry version 1.3.2 or later. Next, open a terminal and install dependencies as follows: ```sh cd path/where/you/have/cloned/the/repository poetry install --extras all ``` This will install the runtime and developer dependencies for the project. Be sure to check that the `poetry install` step completed cleanly. ## Running Synapse via poetry To start a local instance of Synapse in the locked poetry environment, create a config file: ```sh cp docs/sample_config.yaml homeserver.yaml cp docs/sample_log_config.yaml log_config.yaml ``` Now edit `homeserver.yaml`, things you might want to change include: - Set a `server_name` - Adjusting paths to be correct for your system like the `log_config` to point to the log config you just copied - Using a [PostgreSQL database instead of SQLite](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#database) - Adding a [`registration_shared_secret`](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_shared_secret) so you can use [`register_new_matrix_user` command](https://element-hq.github.io/synapse/latest/setup/installation.html#registering-a-user). And then run Synapse with the following command: ```sh poetry run python -m synapse.app.homeserver -c homeserver.yaml ``` If you get an error like the following: ``` importlib.metadata.PackageNotFoundError: matrix-synapse ``` this probably indicates that the `poetry install` step did not complete cleanly - go back and resolve any issues and re-run until successful. # 5. Get in touch. Join our developer community on Matrix: [#synapse-dev:matrix.org](https://matrix.to/#/#synapse-dev:matrix.org)! # 6. Pick an issue. Fix your favorite problem or perhaps find a [Good First Issue](https://github.com/element-hq/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22) to work on. # 7. Turn coffee into code and documentation! There is a growing amount of documentation located in the [`docs`](https://github.com/element-hq/synapse/tree/develop/docs) directory, with a rendered version [available online](https://element-hq.github.io/synapse). This documentation is intended primarily for sysadmins running their own Synapse instance, as well as developers interacting externally with Synapse. [`docs/development`](https://github.com/element-hq/synapse/tree/develop/docs/development) exists primarily to house documentation for Synapse developers. [`docs/admin_api`](https://github.com/element-hq/synapse/tree/develop/docs/admin_api) houses documentation regarding Synapse's Admin API, which is used mostly by sysadmins and external service developers. Synapse's code style is documented [here](../code_style.md). Please follow it, including the conventions for [configuration options and documentation](../code_style.md#configuration-code-and-documentation-format). We welcome improvements and additions to our documentation itself! When writing new pages, please [build `docs` to a book](https://github.com/element-hq/synapse/tree/develop/docs#adding-to-the-documentation) to check that your contributions render correctly. The docs are written in [GitHub-Flavoured Markdown](https://guides.github.com/features/mastering-markdown/). When changes are made to any Rust code then you must call either `poetry install` or `maturin develop` (if installed) to rebuild the Rust code. Using [`maturin`](https://github.com/PyO3/maturin) is quicker than `poetry install`, so is recommended when making frequent changes to the Rust code. # 8. Test, test, test! While you're developing and before submitting a patch, you'll want to test your code. ## Run the linters. The linters look at your code and do two things: - ensure that your code follows the coding style adopted by the project; - catch a number of errors in your code. The linter takes no time at all to run as soon as you've [downloaded the dependencies](#4-install-the-dependencies). ```sh poetry run ./scripts-dev/lint.sh ``` Note that this script *will modify your files* to fix styling errors. Make sure that you have saved all your files. If you wish to restrict the linters to only the files changed since the last commit (much faster!), you can instead run: ```sh poetry run ./scripts-dev/lint.sh -d ``` Or if you know exactly which files you wish to lint, you can instead run: ```sh poetry run ./scripts-dev/lint.sh path/to/file1.py path/to/file2.py path/to/folder ``` ## Run the unit tests (Twisted trial). The unit tests run parts of Synapse, including your changes, to see if anything was broken. They are slower than the linters but will typically catch more errors. ```sh poetry run trial tests ``` You can run unit tests in parallel by specifying `-jX` argument to `trial` where `X` is the number of parallel runners you want. To use 4 cpu cores, you would run them like: ```sh poetry run trial -j4 tests ``` If you wish to only run *some* unit tests, you may specify another module instead of `tests` - or a test class or a method: ```sh poetry run trial tests.rest.admin.test_room tests.handlers.test_admin.ExfiltrateData.test_invite ``` If your tests fail, you may wish to look at the logs (the default log level is `ERROR`): ```sh less _trial_temp/test.log ``` To increase the log level for the tests, set `SYNAPSE_TEST_LOG_LEVEL`: ```sh SYNAPSE_TEST_LOG_LEVEL=DEBUG poetry run trial tests ``` By default, tests will use an in-memory SQLite database for test data. For additional help with debugging, one can use an on-disk SQLite database file instead, in order to review database state during and after running tests. This can be done by setting the `SYNAPSE_TEST_PERSIST_SQLITE_DB` environment variable. Doing so will cause the database state to be stored in a file named `test.db` under the trial process' working directory. Typically, this ends up being `_trial_temp/test.db`. For example: ```sh SYNAPSE_TEST_PERSIST_SQLITE_DB=1 poetry run trial tests ``` The database file can then be inspected with: ```sh sqlite3 _trial_temp/test.db ``` Note that the database file is cleared at the beginning of each test run. Thus it will always only contain the data generated by the *last run test*. Though generally when debugging, one is only running a single test anyway. ### Running tests under PostgreSQL Invoking `trial` as above will use an in-memory SQLite database. This is great for quick development and testing. However, we recommend using a PostgreSQL database in production (and indeed, we have some code paths specific to each database). This means that we need to run our unit tests against PostgreSQL too. Our CI does this automatically for pull requests and release candidates, but it's sometimes useful to reproduce this locally. #### Using Docker The easiest way to do so is to run Postgres via a docker container. In one terminal: ```shell docker run --rm -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_USER=postgres -e POSTGRES_DB=postgres -p 5432:5432 postgres:14 ``` If you see an error like ``` docker: Error response from daemon: driver failed programming external connectivity on endpoint nice_ride (b57bbe2e251b70015518d00c9981e8cb8346b5c785250341a6c53e3c899875f1): Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use. ``` then something is already bound to port 5432. You're probably already running postgres locally. Once you have a postgres server running, invoke `trial` in a second terminal: ```shell SYNAPSE_POSTGRES=1 SYNAPSE_POSTGRES_HOST=127.0.0.1 SYNAPSE_POSTGRES_USER=postgres SYNAPSE_POSTGRES_PASSWORD=mysecretpassword poetry run trial tests ```` #### Using an existing Postgres installation If you have postgres already installed on your system, you can run `trial` with the following environment variables matching your configuration: - `SYNAPSE_POSTGRES` to anything nonempty - `SYNAPSE_POSTGRES_HOST` (optional if it's the default: UNIX socket) - `SYNAPSE_POSTGRES_PORT` (optional if it's the default: 5432) - `SYNAPSE_POSTGRES_USER` (optional if using a UNIX socket) - `SYNAPSE_POSTGRES_PASSWORD` (optional if using a UNIX socket) For example: ```shell export SYNAPSE_POSTGRES=1 export SYNAPSE_POSTGRES_HOST=localhost export SYNAPSE_POSTGRES_USER=postgres export SYNAPSE_POSTGRES_PASSWORD=mydevenvpassword trial ``` You don't need to specify the host, user, port or password if your Postgres server is set to authenticate you over the UNIX socket (i.e. if the `psql` command works without further arguments). Your Postgres account needs to be able to create databases; see the postgres docs for [`ALTER ROLE`](https://www.postgresql.org/docs/current/sql-alterrole.html). ## Run the integration tests ([Sytest](https://github.com/matrix-org/sytest)). The integration tests are a more comprehensive suite of tests. They run a full version of Synapse, including your changes, to check if anything was broken. They are slower than the unit tests but will typically catch more errors. The following command will let you run the integration test with the most common configuration: ```sh $ docker run --rm -it -v /path/where/you/have/cloned/the/repository\:/src:ro -v /path/to/where/you/want/logs\:/logs matrixdotorg/sytest-synapse:focal ``` (Note that the paths must be full paths! You could also write `$(realpath relative/path)` if needed.) This configuration should generally cover your needs. - To run with Postgres, supply the `-e POSTGRES=1 -e MULTI_POSTGRES=1` environment flags. - To run with Synapse in worker mode, supply the `-e WORKERS=1 -e REDIS=1` environment flags (in addition to the Postgres flags). For more details about other configurations, see the [Docker-specific documentation in the SyTest repo](https://github.com/vector-im/sytest/blob/develop/docker/README.md). ## Run the integration tests ([Complement](https://github.com/matrix-org/complement)). [Complement](https://github.com/matrix-org/complement) is a suite of black box tests that can be run on any homeserver implementation. It can also be thought of as end-to-end (e2e) tests. It's often nice to develop on Synapse and write Complement tests at the same time. Here is how to run your local Synapse checkout against your local Complement checkout. (checkout [`complement`](https://github.com/matrix-org/complement) alongside your `synapse` checkout) ```sh COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh ``` To run a specific test file, you can pass the test name at the end of the command. The name passed comes from the naming structure in your Complement tests. If you're unsure of the name, you can do a full run and copy it from the test output: ```sh COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh -run TestImportHistoricalMessages ``` To run a specific test, you can specify the whole name structure: ```sh COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh -run TestImportHistoricalMessages/parallel/Historical_events_resolve_in_the_correct_order ``` The above will run a monolithic (single-process) Synapse with SQLite as the database. For other configurations, try: - Passing `POSTGRES=1` as an environment variable to use the Postgres database instead. - Passing `WORKERS=1` as an environment variable to use a workerised setup instead. This option implies the use of Postgres. - If setting `WORKERS=1`, optionally set `WORKER_TYPES=` to declare which worker types you wish to test. A simple comma-delimited string containing the worker types defined from the `WORKERS_CONFIG` template in [here](https://github.com/element-hq/synapse/blob/develop/docker/configure_workers_and_start.py#L54). A safe example would be `WORKER_TYPES="federation_inbound, federation_sender, synchrotron"`. See the [worker documentation](../workers.md) for additional information on workers. - Passing `ASYNCIO_REACTOR=1` as an environment variable to use the Twisted asyncio reactor instead of the default one. - Passing `PODMAN=1` will use the [podman](https://podman.io/) container runtime, instead of docker. - Passing `UNIX_SOCKETS=1` will utilise Unix socket functionality for Synapse, Redis, and Postgres(when applicable). To increase the log level for the tests, set `SYNAPSE_TEST_LOG_LEVEL`, e.g: ```sh SYNAPSE_TEST_LOG_LEVEL=DEBUG COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh -run TestImportHistoricalMessages ``` ### Prettier formatting with `gotestfmt` If you want to format the output of the tests the same way as it looks in CI, install [gotestfmt](https://github.com/GoTestTools/gotestfmt). You can then use this incantation to format the tests appropriately: ```sh COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh -json | gotestfmt -hide successful-tests ``` (Remove `-hide successful-tests` if you don't want to hide successful tests.) ### Access database for homeserver after Complement test runs. If you're curious what the database looks like after you run some tests, here are some steps to get you going in Synapse: 1. In your Complement test comment out `defer deployment.Destroy(t)` and replace with `defer time.Sleep(2 * time.Hour)` to keep the homeserver running after the tests complete 1. Start the Complement tests 1. Find the name of the container, `docker ps -f name=complement_` (this will filter for just the Compelement related Docker containers) 1. Access the container replacing the name with what you found in the previous step: `docker exec -it complement_1_hs_with_application_service.hs1_2 /bin/bash` 1. Install sqlite (database driver), `apt-get update && apt-get install -y sqlite3` 1. Then run `sqlite3` and open the database `.open /conf/homeserver.db` (this db path comes from the Synapse homeserver.yaml) # 9. Submit your patch. Once you're happy with your patch, it's time to prepare a Pull Request. To prepare a Pull Request, please: 1. verify that [all the tests pass](#test-test-test), including the coding style; 2. [sign off](#sign-off) your contribution; 3. `git push` your commit to your fork of Synapse; 4. on GitHub, [create the Pull Request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request); 5. add a [changelog entry](#changelog) and push it to your Pull Request; 6. that's it for now, a non-draft pull request will automatically request review from the team; 7. if you need to update your PR, please avoid rebasing and just add new commits to your branch. ## Changelog All changes, even minor ones, need a corresponding changelog / newsfragment entry. These are managed by [Towncrier](https://github.com/twisted/towncrier). To create a changelog entry, make a new file in the `changelog.d` directory named in the format of `PRnumber.type`. The type can be one of the following: * `feature` * `bugfix` * `docker` (for updates to the Docker image) * `doc` (for updates to the documentation) * `removal` (also used for deprecations) * `misc` (for internal-only changes) This file will become part of our [changelog]( https://github.com/element-hq/synapse/blob/master/CHANGES.md) at the next release, so the content of the file should be a short description of your change in the same style as the rest of the changelog. The file can contain Markdown formatting, and must end with a full stop (.) or an exclamation mark (!) for consistency. Adding credits to the changelog is encouraged, we value your contributions and would like to have you shouted out in the release notes! For example, a fix in PR #1234 would have its changelog entry in `changelog.d/1234.bugfix`, and contain content like: > The security levels of Florbs are now validated when received > via the `/federation/florb` endpoint. Contributed by Jane Matrix. If there are multiple pull requests involved in a single bugfix/feature/etc, then the content for each `changelog.d` file should be the same. Towncrier will merge the matching files together into a single changelog entry when we come to release. ### How do I know what to call the changelog file before I create the PR? Obviously, you don't know if you should call your newsfile `1234.bugfix` or `5678.bugfix` until you create the PR, which leads to a chicken-and-egg problem. There are two options for solving this: 1. Open the PR without a changelog file, see what number you got, and *then* add the changelog file to your branch, or: 1. Look at the [list of all issues/PRs](https://github.com/element-hq/synapse/issues?q=), add one to the highest number you see, and quickly open the PR before somebody else claims your number. [This script](https://github.com/richvdh/scripts/blob/master/next_github_number.sh) might be helpful if you find yourself doing this a lot. Sorry, we know it's a bit fiddly, but it's *really* helpful for us when we come to put together a release! ### Debian changelog Changes which affect the debian packaging files (in `debian`) are an exception to the rule that all changes require a `changelog.d` file. In this case, you will need to add an entry to the debian changelog for the next release. For this, run the following command: ``` dch ``` This will make up a new version number (if there isn't already an unreleased version in flight), and open an editor where you can add a new changelog entry. (Our release process will ensure that the version number and maintainer name is corrected for the release.) If your change affects both the debian packaging *and* files outside the debian directory, you will need both a regular newsfragment *and* an entry in the debian changelog. (Though typically such changes should be submitted as two separate pull requests.) ## Sign off After you make a PR a comment from @CLAassistant will appear asking you to sign the [CLA](https://cla-assistant.io/element-hq/synapse). This will link a page to allow you to confirm that you have read and agreed to the CLA by signing in with GitHub. Alternatively, you can sign off before opening a PR by going to . We accept contributions under a legally identifiable name, such as your name on government documentation or common-law names (names claimed by legitimate usage or repute). Unfortunately, we cannot accept anonymous contributions at this time. # 10. Turn feedback into better code. Once the Pull Request is opened, you will see a few things: 1. our automated CI (Continuous Integration) pipeline will run (again) the linters, the unit tests, the integration tests and more; 2. one or more of the developers will take a look at your Pull Request and offer feedback. From this point, you should: 1. Look at the results of the CI pipeline. - If there is any error, fix the error. 2. If a developer has requested changes, make these changes and let us know if it is ready for a developer to review again. - A pull request is a conversation, if you disagree with the suggestions, please respond and discuss it. 3. Create a new commit with the changes. - Please do NOT overwrite the history. New commits make the reviewer's life easier. - Push this commits to your Pull Request. 4. Back to 1. 5. Once the pull request is ready for review again please re-request review from whichever developer did your initial review (or leave a comment in the pull request that you believe all required changes have been done). Once both the CI and the developers are happy, the patch will be merged into Synapse and released shortly! # 11. Find a new issue. By now, you know the drill! # Notes for maintainers on merging PRs etc There are some notes for those with commit access to the project on how we manage git [here](git.md). # Conclusion That's it! Matrix is a very open and collaborative project as you might expect given our obsession with open communication. If we're going to successfully matrix together all the fragmented communication technologies out there we are reliant on contributions and collaboration from the community to do so. So please get involved - and we hope you have as much fun hacking on Matrix as we do! synapse-1.100.0/docs/development/database_schema.md000066400000000000000000000423351455622526000222310ustar00rootroot00000000000000# Synapse database schema files Synapse's database schema is stored in the `synapse.storage.schema` module. ## Logical databases Synapse supports splitting its datastore across multiple physical databases (which can be useful for large installations), and the schema files are therefore split according to the logical database they apply to. At the time of writing, the following "logical" databases are supported: * `state` - used to store Matrix room state (more specifically, `state_groups`, their relationships and contents). * `main` - stores everything else. Additionally, the `common` directory contains schema files for tables which must be present on *all* physical databases. ## Synapse schema versions Synapse manages its database schema via "schema versions". These are mainly used to help avoid confusion if the Synapse codebase is rolled back after the database is updated. They work as follows: * The Synapse codebase defines a constant `synapse.storage.schema.SCHEMA_VERSION` which represents the expectations made about the database by that version. For example, as of Synapse v1.36, this is `59`. * The database stores a "compatibility version" in `schema_compat_version.compat_version` which defines the `SCHEMA_VERSION` of the oldest version of Synapse which will work with the database. On startup, if `compat_version` is found to be newer than `SCHEMA_VERSION`, Synapse will refuse to start. Synapse automatically updates this field from `synapse.storage.schema.SCHEMA_COMPAT_VERSION`. * Whenever a backwards-incompatible change is made to the database format (normally via a `delta` file), `synapse.storage.schema.SCHEMA_COMPAT_VERSION` is also updated so that administrators can not accidentally roll back to a too-old version of Synapse. Generally, the goal is to maintain compatibility with at least one or two previous releases of Synapse, so any substantial change tends to require multiple releases and a bit of forward-planning to get right. As a worked example: we want to remove the `room_stats_historical` table. Here is how it might pan out. 1. Replace any code that *reads* from `room_stats_historical` with alternative implementations, but keep writing to it in case of rollback to an earlier version. Also, increase `synapse.storage.schema.SCHEMA_VERSION`. In this instance, there is no existing code which reads from `room_stats_historical`, so our starting point is: v1.36.0: `SCHEMA_VERSION=59`, `SCHEMA_COMPAT_VERSION=59` 2. Next (say in Synapse v1.37.0): remove the code that *writes* to `room_stats_historical`, but don’t yet remove the table in case of rollback to v1.36.0. Again, we increase `synapse.storage.schema.SCHEMA_VERSION`, but because we have not broken compatibility with v1.36, we do not yet update `SCHEMA_COMPAT_VERSION`. We now have: v1.37.0: `SCHEMA_VERSION=60`, `SCHEMA_COMPAT_VERSION=59`. 3. Later (say in Synapse v1.38.0): we can remove the table altogether. This will break compatibility with v1.36.0, so we must update `SCHEMA_COMPAT_VERSION` accordingly. There is no need to update `synapse.storage.schema.SCHEMA_VERSION`, since there is no change to the Synapse codebase here. So we end up with: v1.38.0: `SCHEMA_VERSION=60`, `SCHEMA_COMPAT_VERSION=60`. If in doubt about whether to update `SCHEMA_VERSION` or not, it is generally best to lean towards doing so. ## Full schema dumps In the `full_schemas` directories, only the most recently-numbered snapshot is used (`54` at the time of writing). Older snapshots (eg, `16`) are present for historical reference only. ### Building full schema dumps If you want to recreate these schemas, they need to be made from a database that has had all background updates run. To do so, use `scripts-dev/make_full_schema.sh`. This will produce new `full.sql.postgres` and `full.sql.sqlite` files. Ensure postgres is installed, then run: ```sh ./scripts-dev/make_full_schema.sh -p postgres_username -o output_dir/ ``` NB at the time of writing, this script predates the split into separate `state`/`main` databases so will require updates to handle that correctly. ## Delta files Delta files define the steps required to upgrade the database from an earlier version. They can be written as either a file containing a series of SQL statements, or a Python module. Synapse remembers which delta files it has applied to a database (they are stored in the `applied_schema_deltas` table) and will not re-apply them (even if a given file is subsequently updated). Delta files should be placed in a directory named `synapse/storage/schema//delta//`. They are applied in alphanumeric order, so by convention the first two characters of the filename should be an integer such as `01`, to put the file in the right order. ### SQL delta files These should be named `*.sql`, or — for changes which should only be applied for a given database engine — `*.sql.posgres` or `*.sql.sqlite`. For example, a delta which adds a new column to the `foo` table might be called `01add_bar_to_foo.sql`. Note that our SQL parser is a bit simple - it understands comments (`--` and `/*...*/`), but complex statements which require a `;` in the middle of them (such as `CREATE TRIGGER`) are beyond it and you'll have to use a Python delta file. ### Python delta files For more flexibility, a delta file can take the form of a python module. These should be named `*.py`. Note that database-engine-specific modules are not supported here – instead you can write `if isinstance(database_engine, PostgresEngine)` or similar. A Python delta module should define either or both of the following functions: ```python import synapse.config.homeserver import synapse.storage.engines import synapse.storage.types def run_create( cur: synapse.storage.types.Cursor, database_engine: synapse.storage.engines.BaseDatabaseEngine, ) -> None: """Called whenever an existing or new database is to be upgraded""" ... def run_upgrade( cur: synapse.storage.types.Cursor, database_engine: synapse.storage.engines.BaseDatabaseEngine, config: synapse.config.homeserver.HomeServerConfig, ) -> None: """Called whenever an existing database is to be upgraded.""" ... ``` ## Background updates It is sometimes appropriate to perform database migrations as part of a background process (instead of blocking Synapse until the migration is done). In particular, this is useful for migrating data when adding new columns or tables. Pending background updates stored in the `background_updates` table and are denoted by a unique name, the current status (stored in JSON), and some dependency information: * Whether the update requires a previous update to be complete. * A rough ordering for which to complete updates. A new background updates needs to be added to the `background_updates` table: ```sql INSERT INTO background_updates (ordering, update_name, depends_on, progress_json) VALUES (7706, 'my_background_update', 'a_previous_background_update' '{}'); ``` And then needs an associated handler in the appropriate datastore: ```python self.db_pool.updates.register_background_update_handler( "my_background_update", update_handler=self._my_background_update, ) ``` There are a few types of updates that can be performed, see the `BackgroundUpdater`: * `register_background_update_handler`: A generic handler for custom SQL * `register_background_index_update`: Create an index in the background * `register_background_validate_constraint`: Validate a constraint in the background (PostgreSQL-only) * `register_background_validate_constraint_and_delete_rows`: Similar to `register_background_validate_constraint`, but deletes rows which don't fit the constraint. For `register_background_update_handler`, the generic handler must track progress and then finalize the background update: ```python async def _my_background_update(self, progress: JsonDict, batch_size: int) -> int: def _do_something(txn: LoggingTransaction) -> int: ... self.db_pool.updates._background_update_progress_txn( txn, "my_background_update", {"last_processed": last_processed} ) return last_processed - prev_last_processed num_processed = await self.db_pool.runInteraction("_do_something", _do_something) await self.db_pool.updates._end_background_update("my_background_update") return num_processed ``` Synapse will attempt to rate-limit how often background updates are run via the given batch-size and the returned number of processed entries (and how long the function took to run). See [background update controller callbacks](../modules/background_update_controller_callbacks.md). ## Boolean columns Boolean columns require special treatment, since SQLite treats booleans the same as integers. Any new boolean column must be added to the `BOOLEAN_COLUMNS` list in `synapse/_scripts/synapse_port_db.py`. This tells the port script to cast the integer value from SQLite to a boolean before writing the value to the postgres database. ## `event_id` global uniqueness `event_id`'s can be considered globally unique although there has been a lot of debate on this topic in places like [MSC2779](https://github.com/matrix-org/matrix-spec-proposals/issues/2779) and [MSC2848](https://github.com/matrix-org/matrix-spec-proposals/pull/2848) which has no resolution yet (as of 2022-09-01). There are several places in Synapse and even in the Matrix APIs like [`GET /_matrix/federation/v1/event/{eventId}`](https://spec.matrix.org/v1.1/server-server-api/#get_matrixfederationv1eventeventid) where we assume that event IDs are globally unique. When scoping `event_id` in a database schema, it is often nice to accompany it with `room_id` (`PRIMARY KEY (room_id, event_id)` and a `FOREIGN KEY(room_id) REFERENCES rooms(room_id)`) which makes flexible lookups easy. For example it makes it very easy to find and clean up everything in a room when it needs to be purged (no need to use sub-`select` query or join from the `events` table). A note on collisions: In room versions `1` and `2` it's possible to end up with two events with the same `event_id` (in the same or different rooms). After room version `3`, that can only happen with a hash collision, which we basically hope will never happen (SHA256 has a massive big key space). ## Worked examples of gradual migrations Some migrations need to be performed gradually. A prime example of this is anything which would need to do a large table scan — including adding columns, indices or `NOT NULL` constraints to non-empty tables — such a migration should be done as a background update where possible, at least on Postgres. We can afford to be more relaxed about SQLite databases since they are usually used on smaller deployments and SQLite does not support the same concurrent DDL operations as Postgres. We also typically insist on having at least one Synapse version's worth of backwards compatibility, so that administrators can roll back Synapse if an upgrade did not go smoothly. This sometimes results in having to plan a migration across multiple versions of Synapse. This section includes an example and may include more in the future. ### Transforming a column into another one, with `NOT NULL` constraints This example illustrates how you would introduce a new column, write data into it based on data from an old column and then drop the old column. We are aiming for semantic equivalence to: ```sql ALTER TABLE mytable ADD COLUMN new_column INTEGER; UPDATE mytable SET new_column = old_column * 100; ALTER TABLE mytable ALTER COLUMN new_column ADD CONSTRAINT NOT NULL; ALTER TABLE mytable DROP COLUMN old_column; ``` #### Synapse version `N` ```python SCHEMA_VERSION = S SCHEMA_COMPAT_VERSION = ... # unimportant at this stage ``` **Invariants:** 1. `old_column` is read by Synapse and written to by Synapse. #### Synapse version `N + 1` ```python SCHEMA_VERSION = S + 1 SCHEMA_COMPAT_VERSION = ... # unimportant at this stage ``` **Changes:** 1. ```sql ALTER TABLE mytable ADD COLUMN new_column INTEGER; ``` **Invariants:** 1. `old_column` is read by Synapse and written to by Synapse. 2. `new_column` is written to by Synapse. **Notes:** 1. `new_column` can't have a `NOT NULL NOT VALID` constraint yet, because the previous Synapse version did not write to the new column (since we haven't bumped the `SCHEMA_COMPAT_VERSION` yet, we still need to be compatible with the previous version). #### Synapse version `N + 2` ```python SCHEMA_VERSION = S + 2 SCHEMA_COMPAT_VERSION = S + 1 # this signals that we can't roll back to a time before new_column existed ``` **Changes:** 1. On Postgres, add a `NOT VALID` constraint to ensure new rows are compliant. *SQLite does not have such a construct, but it would be unnecessary anyway since there is no way to concurrently perform this migration on SQLite.* ```sql ALTER TABLE mytable ADD CONSTRAINT CHECK new_column_not_null (new_column IS NOT NULL) NOT VALID; ``` 2. Start a background update to perform migration: it should gradually run e.g. ```sql UPDATE mytable SET new_column = old_column * 100 WHERE 0 < mytable_id AND mytable_id <= 5; ``` This background update is technically pointless on SQLite, but you must schedule it anyway so that the `portdb` script to migrate to Postgres still works. 3. Upon completion of the background update, you should run `VALIDATE CONSTRAINT` on Postgres to turn the `NOT VALID` constraint into a valid one. ```sql ALTER TABLE mytable VALIDATE CONSTRAINT new_column_not_null; ``` This will take some time but does **NOT** hold an exclusive lock over the table. **Invariants:** 1. `old_column` is read by Synapse and written to by Synapse. 2. `new_column` is written to by Synapse and new rows always have a non-`NULL` value in this field. **Notes:** 1. If you wish, you can convert the `CHECK (new_column IS NOT NULL)` to a `NOT NULL` constraint free of charge in Postgres by adding the `NOT NULL` constraint and then dropping the `CHECK` constraint, because Postgres can statically verify that the `NOT NULL` constraint is implied by the `CHECK` constraint without performing a table scan. 2. It might be tempting to make version `N + 2` redundant by moving the background update to `N + 1` and delaying adding the `NOT NULL` constraint to `N + 3`, but that would mean the constraint would always be validated in the foreground in `N + 3`. Whereas if the `N + 2` step is kept, the migration in `N + 3` would be fast in the happy case. #### Synapse version `N + 3` ```python SCHEMA_VERSION = S + 3 SCHEMA_COMPAT_VERSION = S + 1 # we can't roll back to a time before new_column existed ``` **Changes:** 1. (Postgres) Update the table to populate values of `new_column` in case the background update had not completed. Additionally, `VALIDATE CONSTRAINT` to make the check fully valid. ```sql -- you ideally want an index on `new_column` or e.g. `(new_column) WHERE new_column IS NULL` first, or perhaps you can find a way to skip this if the `NOT NULL` constraint has already been validated. UPDATE mytable SET new_column = old_column * 100 WHERE new_column IS NULL; -- this is a no-op if it already ran as part of the background update ALTER TABLE mytable VALIDATE CONSTRAINT new_column_not_null; ``` 2. (SQLite) Recreate the table by precisely following [the 12-step procedure for SQLite table schema changes](https://www.sqlite.org/lang_altertable.html#otheralter). During this table rewrite, you should recreate `new_column` as `NOT NULL` and populate any outstanding `NULL` values at the same time. Unfortunately, you can't drop `old_column` yet because it must be present for compatibility with the Postgres schema, as needed by `portdb`. (Otherwise you could do this all in one go with SQLite!) **Invariants:** 1. `old_column` is written to by Synapse (but no longer read by Synapse!). 2. `new_column` is read by Synapse and written to by Synapse. Moreover, all rows have a non-`NULL` value in this field, as guaranteed by a schema constraint. **Notes:** 1. We can't drop `old_column` yet, or even stop writing to it, because that would break a rollback to the previous version of Synapse. 2. Application code can now rely on `new_column` being populated. The remaining steps are only motivated by the wish to clean-up old columns. #### Synapse version `N + 4` ```python SCHEMA_VERSION = S + 4 SCHEMA_COMPAT_VERSION = S + 3 # we can't roll back to a time before new_column was entirely non-NULL ``` **Invariants:** 1. `old_column` exists but is not written to or read from by Synapse. 2. `new_column` is read by Synapse and written to by Synapse. Moreover, all rows have a non-`NULL` value in this field, as guaranteed by a schema constraint. **Notes:** 1. We can't drop `old_column` yet because that would break a rollback to the previous version of Synapse. \ **TODO:** It may be possible to relax this and drop the column straight away as long as the previous version of Synapse detected a rollback occurred and stopped attempting to write to the column. This could possibly be done by checking whether the database's schema compatibility version was `S + 3`. #### Synapse version `N + 5` ```python SCHEMA_VERSION = S + 5 SCHEMA_COMPAT_VERSION = S + 4 # we can't roll back to a time before old_column was no longer being touched ``` **Changes:** 1. ```sql ALTER TABLE mytable DROP COLUMN old_column; ``` synapse-1.100.0/docs/development/demo.md000066400000000000000000000032751455622526000200710ustar00rootroot00000000000000# Synapse demo setup **DO NOT USE THESE DEMO SERVERS IN PRODUCTION** Requires you to have a [Synapse development environment setup](https://element-hq.github.io/synapse/develop/development/contributing_guide.html#4-install-the-dependencies). The demo setup allows running three federation Synapse servers, with server names `localhost:8480`, `localhost:8481`, and `localhost:8482`. You can access them via any Matrix client over HTTP at `localhost:8080`, `localhost:8081`, and `localhost:8082` or over HTTPS at `localhost:8480`, `localhost:8481`, and `localhost:8482`. To enable the servers to communicate, self-signed SSL certificates are generated and the servers are configured in a highly insecure way, including: * Not checking certificates over federation. * Not verifying keys. The servers are configured to store their data under `demo/8080`, `demo/8081`, and `demo/8082`. This includes configuration, logs, SQLite databases, and media. Note that when joining a public room on a different homeserver via "#foo:bar.net", then you are (in the current implementation) joining a room with room_id "foo". This means that it won't work if your homeserver already has a room with that name. ## Using the demo scripts There's three main scripts with straightforward purposes: * `start.sh` will start the Synapse servers, generating any missing configuration. * This accepts a single parameter `--no-rate-limit` to "disable" rate limits (they actually still exist, but are very high). * `stop.sh` will stop the Synapse servers. * `clean.sh` will delete the configuration, databases, log files, etc. To start a completely new set of servers, run: ```sh ./demo/stop.sh; ./demo/clean.sh && ./demo/start.sh ``` synapse-1.100.0/docs/development/dependencies.md000066400000000000000000000246171455622526000215760ustar00rootroot00000000000000# Managing dependencies with Poetry This is a quick cheat sheet for developers on how to use [`poetry`](https://python-poetry.org/). # Installing See the [contributing guide](contributing_guide.md#4-install-the-dependencies). Developers should use Poetry 1.3.2 or higher. If you encounter problems related to poetry, please [double-check your poetry version](#check-the-version-of-poetry-with-poetry---version). # Background Synapse uses a variety of third-party Python packages to function as a homeserver. Some of these are direct dependencies, listed in `pyproject.toml` under the `[tool.poetry.dependencies]` section. The rest are transitive dependencies (the things that our direct dependencies themselves depend on, and so on recursively.) We maintain a locked list of all our dependencies (transitive included) so that we can track exactly which version of each dependency appears in a given release. See [here](https://github.com/matrix-org/synapse/issues/11537#issue-1074469665) for discussion of why we wanted this for Synapse. We chose to use [`poetry`](https://python-poetry.org/) to manage this locked list; see [this comment](https://github.com/matrix-org/synapse/issues/11537#issuecomment-1015975819) for the reasoning. The locked dependencies get included in our "self-contained" releases: namely, our docker images and our debian packages. We also use the locked dependencies in development and our continuous integration. Separately, our "broad" dependencies—the version ranges specified in `pyproject.toml`—are included as metadata in our "sdists" and "wheels" [uploaded to PyPI](https://pypi.org/project/matrix-synapse). Installing from PyPI or from the Synapse source tree directly will _not_ use the locked dependencies; instead, they'll pull in the latest version of each package available at install time. ## Example dependency An example may help. We have a broad dependency on [`phonenumbers`](https://pypi.org/project/phonenumbers/), as declared in this snippet from pyproject.toml [as of Synapse 1.57]( https://github.com/matrix-org/synapse/blob/release-v1.57/pyproject.toml#L133 ): ```toml [tool.poetry.dependencies] # ... phonenumbers = ">=8.2.0" ``` In our lockfile this is [pinned]( https://github.com/matrix-org/synapse/blob/dfc7646504cef3e4ff396c36089e1c6f1b1634de/poetry.lock#L679-L685) to version 8.12.44, even though [newer versions are available](https://pypi.org/project/phonenumbers/#history). ```toml [[package]] name = "phonenumbers" version = "8.12.44" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." category = "main" optional = false python-versions = "*" ``` The lockfile also includes a [cryptographic checksum](https://github.com/matrix-org/synapse/blob/release-v1.57/poetry.lock#L2178-L2181) of the sdists and wheels provided for this version of `phonenumbers`. ```toml [metadata.files] # ... phonenumbers = [ {file = "phonenumbers-8.12.44-py2.py3-none-any.whl", hash = "sha256:cc1299cf37b309ecab6214297663ab86cb3d64ae37fd5b88e904fe7983a874a6"}, {file = "phonenumbers-8.12.44.tar.gz", hash = "sha256:26cfd0257d1704fe2f88caff2caabb70d16a877b1e65b6aae51f9fbbe10aa8ce"}, ] ``` We can see this pinned version inside the docker image for that release: ``` $ docker pull vectorim/synapse:v1.97.0 ... $ docker run --entrypoint pip vectorim/synapse:v1.97.0 show phonenumbers Name: phonenumbers Version: 8.12.44 Summary: Python version of Google's common library for parsing, formatting, storing and validating international phone numbers. Home-page: https://github.com/daviddrysdale/python-phonenumbers Author: David Drysdale Author-email: dmd@lurklurk.org License: Apache License 2.0 Location: /usr/local/lib/python3.9/site-packages Requires: Required-by: matrix-synapse ``` Whereas the wheel metadata just contains the broad dependencies: ``` $ cd /tmp $ wget https://files.pythonhosted.org/packages/ca/5e/d722d572cc5b3092402b783d6b7185901b444427633bd8a6b00ea0dd41b7/matrix_synapse-1.57.0rc1-py3-none-any.whl ... $ unzip -c matrix_synapse-1.57.0rc1-py3-none-any.whl matrix_synapse-1.57.0rc1.dist-info/METADATA | grep phonenumbers Requires-Dist: phonenumbers (>=8.2.0) ``` # Tooling recommendation: direnv [`direnv`](https://direnv.net/) is a tool for activating environments in your shell inside a given directory. Its support for poetry is unofficial (a community wiki recipe only), but works solidly in our experience. We thoroughly recommend it for daily use. To use it: 1. [Install `direnv`](https://direnv.net/docs/installation.html) - it's likely packaged for your system already. 2. Teach direnv about poetry. The [shell config here](https://github.com/direnv/direnv/wiki/Python#poetry) needs to be added to `~/.config/direnv/direnvrc` (or more generally `$XDG_CONFIG_HOME/direnv/direnvrc`). 3. Mark the synapse checkout as a poetry project: `echo layout poetry > .envrc`. 4. Convince yourself that you trust this `.envrc` configuration and project. Then formally confirm this to `direnv` by running `direnv allow`. Then whenever you navigate to the synapse checkout, you should be able to run e.g. `mypy` instead of `poetry run mypy`; `python` instead of `poetry run python`; and your shell commands will automatically run in the context of poetry's venv, without having to run `poetry shell` beforehand. # How do I... ## ...reset my venv to the locked environment? ```shell poetry install --all-extras --sync ``` ## ...delete everything and start over from scratch? ```shell # Stop the current virtualenv if active $ deactivate # Remove all of the files from the current environment. # Don't worry, even though it says "all", this will only # remove the Poetry virtualenvs for the current project. $ poetry env remove --all # Reactivate Poetry shell to create the virtualenv again $ poetry shell # Install everything again $ poetry install --extras all ``` ## ...run a command in the `poetry` virtualenv? Use `poetry run cmd args` when you need the python virtualenv context. To avoid typing `poetry run` all the time, you can run `poetry shell` to start a new shell in the poetry virtualenv context. Within `poetry shell`, `python`, `pip`, `mypy`, `trial`, etc. are all run inside the project virtualenv and isolated from the rest o the system. Roughly speaking, the translation from a traditional virtualenv is: - `env/bin/activate` -> `poetry shell`, and - `deactivate` -> close the terminal (Ctrl-D, `exit`, etc.) See also the direnv recommendation above, which makes `poetry run` and `poetry shell` unnecessary. ## ...inspect the `poetry` virtualenv? Some suggestions: ```shell # Current env only poetry env info # All envs: this allows you to have e.g. a poetry managed venv for Python 3.7, # and another for Python 3.10. poetry env list --full-path poetry run pip list ``` Note that `poetry show` describes the abstract *lock file* rather than your on-disk environment. With that said, `poetry show --tree` can sometimes be useful. ## ...add a new dependency? Either: - manually update `pyproject.toml`; then `poetry lock --no-update`; or else - `poetry add packagename`. See `poetry add --help`; note the `--dev`, `--extras` and `--optional` flags in particular. Include the updated `pyproject.toml` and `poetry.lock` files in your commit. ## ...remove a dependency? This is not done often and is untested, but ```shell poetry remove packagename ``` ought to do the trick. Alternatively, manually update `pyproject.toml` and `poetry lock --no-update`. Include the updated `pyproject.toml` and `poetry.lock` files in your commit. ## ...update the version range for an existing dependency? Best done by manually editing `pyproject.toml`, then `poetry lock --no-update`. Include the updated `pyproject.toml` and `poetry.lock` in your commit. ## ...update a dependency in the locked environment? Use ```shell poetry update packagename ``` to use the latest version of `packagename` in the locked environment, without affecting the broad dependencies listed in the wheel. There doesn't seem to be a way to do this whilst locking a _specific_ version of `packagename`. We can workaround this (crudely) as follows: ```shell poetry add packagename==1.2.3 # This should update pyproject.lock. # Now undo the changes to pyproject.toml. For example # git restore pyproject.toml # Get poetry to recompute the content-hash of pyproject.toml without changing # the locked package versions. poetry lock --no-update ``` Either way, include the updated `poetry.lock` file in your commit. ## ...export a `requirements.txt` file? ```shell poetry export --extras all ``` Be wary of bugs in `poetry export` and `pip install -r requirements.txt`. ## ...build a test wheel? I usually use ```shell poetry run pip install build && poetry run python -m build ``` because [`build`](https://github.com/pypa/build) is a standardish tool which doesn't require poetry. (It's what we use in CI too). However, you could try `poetry build` too. ## ...handle a Dependabot pull request? Synapse uses Dependabot to keep the `poetry.lock` and `Cargo.lock` file up-to-date with the latest releases of our dependencies. The changelog check is omitted for Dependabot PRs; the release script will include them in the changelog. When reviewing a dependabot PR, ensure that: * the lockfile changes look reasonable; * the upstream changelog file (linked in the description) doesn't include any breaking changes; * continuous integration passes. In particular, any updates to the type hints (usually packages which start with `types-`) should be safe to merge if linting passes. # Troubleshooting ## Check the version of poetry with `poetry --version`. The minimum version of poetry supported by Synapse is 1.3.2. It can also be useful to check the version of `poetry-core` in use. If you've installed `poetry` with `pipx`, try `pipx runpip poetry list | grep poetry-core`. ## Clear caches: `poetry cache clear --all pypi`. Poetry caches a bunch of information about packages that isn't readily available from PyPI. (This is what makes poetry seem slow when doing the first `poetry install`.) Try `poetry cache list` and `poetry cache clear --all ` to see if that fixes things. ## Remove outdated egg-info Delete the `matrix_synapse.egg-info/` directory from the root of your Synapse install. This stores some cached information about dependencies and often conflicts with letting Poetry do the right thing. ## Try `--verbose` or `--dry-run` arguments. Sometimes useful to see what poetry's internal logic is. synapse-1.100.0/docs/development/experimental_features.md000066400000000000000000000036331455622526000235360ustar00rootroot00000000000000# Implementing experimental features in Synapse It can be desirable to implement "experimental" features which are disabled by default and must be explicitly enabled via the Synapse configuration. This is applicable for features which: * Are unstable in the Matrix spec (e.g. those defined by an MSC that has not yet been merged). * Developers are not confident in their use by general Synapse administrators/users (e.g. a feature is incomplete, buggy, performs poorly, or needs further testing). Note that this only really applies to features which are expected to be desirable to a broad audience. The [module infrastructure](../modules/index.md) should instead be investigated for non-standard features. Guarding experimental features behind configuration flags should help with some of the following scenarios: * Ensure that clients do not assume that unstable features exist (failing gracefully if they do not). * Unstable features do not become de-facto standards and can be removed aggressively (since only those who have opted-in will be affected). * Ease finding the implementation of unstable features in Synapse (for future removal or stabilization). * Ease testing a feature (or removal of feature) due to enabling/disabling without code changes. It also becomes possible to ask for wider testing, if desired. Experimental configuration flags should be disabled by default (requiring Synapse administrators to explicitly opt-in), although there are situations where it makes sense (from a product point-of-view) to enable features by default. This is expected and not an issue. It is not a requirement for experimental features to be behind a configuration flag, but one should be used if unsure. New experimental configuration flags should be added under the `experimental` configuration key (see the `synapse.config.experimental` file) and either explain (briefly) what is being enabled, or include the MSC number. synapse-1.100.0/docs/development/git.md000066400000000000000000000157371455622526000177360ustar00rootroot00000000000000Some notes on how we use git ============================ On keeping the commit history clean ----------------------------------- In an ideal world, our git commit history would be a linear progression of commits each of which contains a single change building on what came before. Here, by way of an arbitrary example, is the top of `git log --graph b2dba0607`: clean git graph Note how the commit comment explains clearly what is changing and why. Also note the *absence* of merge commits, as well as the absence of commits called things like (to pick a few culprits): [“pep8”](https://github.com/element-hq/synapse/commit/84691da6c), [“fix broken test”](https://github.com/element-hq/synapse/commit/474810d9d), [“oops”](https://github.com/element-hq/synapse/commit/c9d72e457), [“typo”](https://github.com/element-hq/synapse/commit/836358823), or [“Who's the president?”](https://github.com/element-hq/synapse/commit/707374d5d). There are a number of reasons why keeping a clean commit history is a good thing: * From time to time, after a change lands, it turns out to be necessary to revert it, or to backport it to a release branch. Those operations are *much* easier when the change is contained in a single commit. * Similarly, it's much easier to answer questions like “is the fix for `/publicRooms` on the release branch?” if that change consists of a single commit. * Likewise: “what has changed on this branch in the last week?” is much clearer without merges and “pep8” commits everywhere. * Sometimes we need to figure out where a bug got introduced, or some behaviour changed. One way of doing that is with `git bisect`: pick an arbitrary commit between the known good point and the known bad point, and see how the code behaves. However, that strategy fails if the commit you chose is the middle of someone's epic branch in which they broke the world before putting it back together again. One counterargument is that it is sometimes useful to see how a PR evolved as it went through review cycles. This is true, but that information is always available via the GitHub UI (or via the little-known [refs/pull namespace](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally)). Of course, in reality, things are more complicated than that. We have release branches as well as `develop` and `master`, and we deliberately merge changes between them. Bugs often slip through and have to be fixed later. That's all fine: this not a cast-iron rule which must be obeyed, but an ideal to aim towards. Merges, squashes, rebases: wtf? ------------------------------- Ok, so that's what we'd like to achieve. How do we achieve it? The TL;DR is: when you come to merge a pull request, you *probably* want to “squash and merge”: ![squash and merge](img/git/squash.png). (This applies whether you are merging your own PR, or that of another contributor.) “Squash and merge”[1](#f1) takes all of the changes in the PR, and bundles them into a single commit. GitHub gives you the opportunity to edit the commit message before you confirm, and normally you should do so, because the default will be useless (again: `* woops typo` is not a useful thing to keep in the historical record). The main problem with this approach comes when you have a series of pull requests which build on top of one another: as soon as you squash-merge the first PR, you'll end up with a stack of conflicts to resolve in all of the others. In general, it's best to avoid this situation in the first place by trying not to have multiple related PRs in flight at the same time. Still, sometimes that's not possible and doing a regular merge is the lesser evil. Another occasion in which a regular merge makes more sense is a PR where you've deliberately created a series of commits each of which makes sense in its own right. For example: [a PR which gradually propagates a refactoring operation through the codebase](https://github.com/matrix-org/synapse/pull/6837), or [a PR which is the culmination of several other PRs](https://github.com/matrix-org/synapse/pull/5987). In this case the ability to figure out when a particular change/bug was introduced could be very useful. Ultimately: **this is not a hard-and-fast-rule**. If in doubt, ask yourself “do each of the commits I am about to merge make sense in their own right”, but remember that we're just doing our best to balance “keeping the commit history clean” with other factors. Git branching model ------------------- A [lot](https://nvie.com/posts/a-successful-git-branching-model/) [of](http://scottchacon.com/2011/08/31/github-flow.html) [words](https://www.endoflineblog.com/gitflow-considered-harmful) have been written in the past about git branching models (no really, [a lot](https://martinfowler.com/articles/branching-patterns.html)). I tend to think the whole thing is overblown. Fundamentally, it's not that complicated. Here's how we do it. Let's start with a picture: ![branching model](img/git/branches.jpg) It looks complicated, but it's really not. There's one basic rule: *anyone* is free to merge from *any* more-stable branch to *any* less-stable branch at *any* time[2](#f2). (The principle behind this is that if a change is good enough for the more-stable branch, then it's also good enough go put in a less-stable branch.) Meanwhile, merging (or squashing, as per the above) from a less-stable to a more-stable branch is a deliberate action in which you want to publish a change or a set of changes to (some subset of) the world: for example, this happens when a PR is landed, or as part of our release process. So, what counts as a more- or less-stable branch? A little reflection will show that our active branches are ordered thus, from more-stable to less-stable: * `master` (tracks our last release). * `release-vX.Y` (the branch where we prepare the next release)[3](#f3). * PR branches which are targeting the release. * `develop` (our "mainline" branch containing our bleeding-edge). * regular PR branches. The corollary is: if you have a bugfix that needs to land in both `release-vX.Y` *and* `develop`, then you should base your PR on `release-vX.Y`, get it merged there, and then merge from `release-vX.Y` to `develop`. (If a fix lands in `develop` and we later need it in a release-branch, we can of course cherry-pick it, but landing it in the release branch first helps reduce the chance of annoying conflicts.) --- [1]: “Squash and merge” is GitHub's term for this operation. Given that there is no merge involved, I'm not convinced it's the most intuitive name. [^](#a1) [2]: Well, anyone with commit access.[^](#a2) [3]: Very, very occasionally (I think this has happened once in the history of Synapse), we've had two releases in flight at once. Obviously, `release-v1.2` is more-stable than `release-v1.3`. [^](#a3) synapse-1.100.0/docs/development/img/000077500000000000000000000000001455622526000173705ustar00rootroot00000000000000synapse-1.100.0/docs/development/img/git/000077500000000000000000000000001455622526000201535ustar00rootroot00000000000000synapse-1.100.0/docs/development/img/git/branches.jpg000066400000000000000000002150441455622526000224500ustar00rootroot00000000000000JFIF*ExifII*1Google     -"Y !1AQ"aq2#BR$3brsCSc%4TdtD5E;1!AQ2Raq"3rB#b$4C ?03I%f0i(X* HDs?EFc8?3^c^yAQ5VGAk;=t9&gm޺e7uUj;?@+`coq˵Oxn;)-{D:|=(MMN_\$ JSh)KٟH_Xt^:dfK-k$:==6jwɧ __fEX" #g=.jji(&6kOgj]CutJJѧԠKO5ygI_4ۉiP1Q`JS/>sVmOuj?>lLCO4qeG!WJ .OGOϪߨW?n%` 37D}kTT~tJ dc&NY՟z?P"Z>%)\.}AGG+ f%,(TDܿ',]wΛ uy/G1dmYǐ0Xq0%K!EWH9g/6:?_9k,8ǐL\r(s_;ڥ O?LM Q9jh5M>C7nu}\YR,9 FsUҗPd ]7/5fR4aժe A1 6;0z̘F5\޲Rq10c.}j eC51y212o\MNIuL m2f"^c%Jz`Z.P92ZNrI2Xho?j'e3/>2Ǐwq 697,3[ ϩc[OG&R?ǬY3Eh|ۛ>qq2r5^e-nU٤xi&R@D36( M k"f8h # dCQbP(ê5(f e`&gBsJL(IY3U D P Y2a0)ZQ R3%ǶMsEB @IZ9f`-0%I̠`$J&5"&P0r#Xcf-Ŷ YLL42k"X GYDHķ( цLp."ddR·LqV>LNLW-';ӳұmZT. VTBnJL%2Ut"Sh1JB5_(!"-JäVd/0 0Yb<` b4@L6l˰ܕVDJ壀VWNO|ޘc82A uUݵvSFN@ъ vVfs)/8lL;wzhgɾGW6_gQ~B>ڋmdE}p1>ǹoUӫӮj o m{9cs\_Z1:p>_.qox|Y}OGNcoFN8ȧeRk;jm_F >C HܬsǤ?~ݨIٔ]7=)vMNA[nGy:5NMiwV{Rgvs83_yZv?e#Qvs#xT<1"u+=~OWK 4 8[}m@A#}gGfnzNKtޙnq/G+i~t 9Ar9eխ2]߰cOwzSVэm5>O]{9~.f ʬp%co庹}fzꗈg_RO_gߤӭ/WzhZ&=WwtoVI]zu[C(>X>σr@U-n`0X%C_5D+$`FLVP#(^':X G@@F% eil ǘ1 J:Rba(!$,\ L\q8DO3z,Q&9I(%#.FeɌ ЍZY\ KaX D( vH1oJz .<秺FcJg9O'_>?0 o:mΙf"9- WmV5bЫz9qeaidz2yN573Ϭtn侻wr5n=U28>|[ zql\*]\b tϬ K:l;2:iY.t>]@䜒NID|@5T_ҵjbz#amoۺW:?s7kMIJwt|f<皀Yb|;;CKZ++5: ]QqpKwJ88_4711=7ilg1ݏs sݫVéM*VTwg*E9@}1>g"|뻪h4NX@jY7c%kvخ[k xݱ='9-ڟ#ݭԦGVu!כV؆򟣩g'qG8v<[4ӿƍw>YihbtHH]"`qokNq?Fj:שfU͠# ϯ+2g_n闖ی׻Ovt޾V{Yܯv_ih)JRA֥U{6 zyϒSٽ4mpVQ>ґ?WF=kF>$-Zn|ꚮut |4&'?w}=ڽ'ub.?aY .}nwetVVmê#=zҴikRJWZEBFsT =$vVJ)bjTѱdyyOemN4i$1>3Nm^ĻzmSWYܞ@F#:OOWfj;NU-jna xgvVOZ*SRP VRPWJ1;Ff3ߛ;shۺf;>O]5ku"Q 8< uE4j4bpC)$ Pȟ8?&뵻;HASݟ}nK^ƒG8%r<9ohծh\Y=idő{7[5omy6)hDˣ uܥwxܤ MQ,t#U{8[ {{|έ*,^99E̵֕;s~1mzο5y;aJi+݊}W+:I:nuw۬k齫*iUUCl`#,q091$ͣϧu.^mon:wӊNW\~yO@!dy>w`tNt;D'JȞrVnv2jt.}m[5maQ#8fAB Nsek ˓03P؞C&k_ mji>YI m$WGGU,N]]nvNoKaH;[XyDTˉqs< GYݎ.NtU3׺I%,Ǟ8ndު:w{YnMmߛVʔCg>ZS'5bs^BWKnRS{%3^33<-$rO<9qgŚK13EuB$(,<(p;+TvQE)ݺh5RHAr 50V"Lʿkٕe£?w:]@ 2.ViG98\=>g3zg&179IM~Ljz'l΅Mx!j]Q²?ʯhjHRse8u*SNrO۸T5vXj-mW9e`T<6g+t]5j@0nq{zYO61;O^if?|j_rէM݋Zw'}hn.,ܛv7.@>|^;Yj4K+uC٨13轷]63_uT*v @sap1^F4.}P_= S" `-|o5Oڿ4kzk:}FMCERωcbs&&nsֽ\86RF32v{sUؚ{0Wimɱ*Ӕ[ϳY g?絵~oتjU ׄd$u;@f{ofӋN>d;~r7Ob}p?8篗^j;G+ۤvư75J-r#,dߋtݫm>=VF:E33_ܓתݲgWIwj#'8ju|u"Ս%wU>9|Jc3{!-V_C}w 8njէ2N:OkN%{Pe:NKٚWke(q,EUy$1:^x 6-M,:dc V,$ tK&ATn4q I [` ш)a&#.B~I8kp0H{տ狮 'x(*D@¨K,01 lNk~mThfRJ+K=mk!:vzZ` gd&r%>wt,k{_ӏ 9Z)mk9g{ն;>4z+ηTvٛc,W;^'oikՉ>ǻ_g&4|=캻/ QMF*fxVEOOӮ0'׾FׯgvŬf#Sb3+أ9=I/#A|36@j{GUk$itF _d]I>f{s%m='ڦZՋ{䳥urSyx oZS4\ϧnPk}L9 sL*5C).uAj56Vr798?HiQ+a~O^iK.s.$_sN,/ݗ%=u5Naj+MĮG'D;'HQN:Zm,9l2HOeWwt-ihTkU6>e$}}gaVrA6[j0R!TbJ3N֍qF,ms:e:nՠ &RWD`Q0H:CS5Lc_3Q(Ր=o E O!(s@JkcbYA310-Lr*p2%k $K",3Ij&Eb5Y&i\`GDR6%rXBP2#0Hj Xmrg|y)T>|R@U\,!(Ec62fȀ0̨ LЉ*c@S@P#I3@k4Y ܘOj(Bɗ2HD + L!0Ȉ,"&I&@`D VQQ =Ncdm @V"0(BʌX4bJbj:19tW|'{<{z;|[lX B"%1"pFq`EX4@N K @D"0Dz)B*ǘ0eDmG6Ei JB !24YK%# Fd& YyJfL*fV R%f%l E<ĬA `E`5 X\x5 Dz=@AL=%) M2̦hL͠^$".(3!|QX*@k9zzD twK^|]01>ȘF Dx@ $0c"DôSq<{"q;msEֶ8uzY.ZW>v57^ϢWnDTzK16B;.'wfc<H09~O_0:OsKZ%uSKfŬFsbݝmfL(SH5wrd)Rd [G9 }*A{e+*qzqIk T5l}Z6TZmax;~޻X:iGmT`حJK>3ܗcF3c5vuk_kCә}UtӥUPss;QX[rp7'=8϶r5ie@OVgcrT$&+g|?1gi53 8dc2w7wj5gt֣ pH=wv-Sf_i+MpzmDQzg\x8ݭ\@>H .J/h>9(r݀? |fp<7;0|lgWBWFkcuT쭄e >p1xӘl$Q@L%Be4>`al<,GW.(1g3} ep9:'R^O[[>}+*QN=a19?(qb0-hĉY"Peb,p54S%D00Lm4)DfH25L9"is"PCF 51%*XFD$:qK4 |;໮cԃ<>'fm ^#94u~uӽm_*7MfMot~#5g q=]JRzkoV;,'n(cU@ xO}~IJ-uli;zgskP'֙[,#'y_/ON i!t}C1`w`)s! @ Ad@IO9bJ@{c1 0!D,="uaz߷LxODF&Q (@88PXG"@/5lDa)C40afʼnF "P0#+%]0ebspĭ I*?uVp~ ^Y}OOFɔ[`RhF1 T{d+0$2A@18=\֋Gڍ;w'VsҷOD|Q뚫 te@JB&0b`P3DQIQ*P JDbX`l4j*!E T2SI1ElLjC 1 2ĭ,4!de P Xj%ǜb qX ,y j Th0sq0520 dx̶I߽>>~HuN孏_mi';4@y#Haԣt=Upr: uǰF9sQQ>qfjR(ꚚH}[AOPf_Z `N;ۦݱnGu 걝€@*AAc!G`P)X0$:凌 eD&29"X] \Fd@F0$1fIfmMuLl{c"8 w׀3pO;=Kj*Vb}M<mNgc̀#>¡f@A JcXE!LD+2Lp(@0`<5)aꬿh#_ ?AOTMV 0"U`D%fh&xHrH"JJe$#DHJ+eLx Va&V`2cUZB2CB90%bʄbJF!@(!O2@L`JY2#= pN?ۡvӘ[k[Gl'02I>X(hboԒ/ %[*xyu>PVDtm8vUzOf>&&35q4Տ'$DLHҊO.c $0@l'u;pרXd25 <mRNÓX9'X&1_XS7-zyb|;qn5>u/t/ɈƲL  pd8ȁ8 p cI٤X8?Jc q'5N2Q8Vi&ΙIDn1q*@J)LLyHAcC0<Q0P0*H#K BI1TɍL ADG(z@ ʋg @̂ec2#TB1" 퇰QyT䓎yr̤ls4xwTW`Y C`I:{)w]\Ew$n<0@ M5]GS5n[bx<{6O $~82fPBF>ȠX2 u!fP]FXWdo;T0tB:s*kin@1_ą9SauѽAU]vط$ pfPmB.«T$e#"YN/@^3C5"S*=E""&J8܁9sJt~[<pz=A:>FOzU7g1d^cձqL@e>Yn8cF)PB0aOY`"1fEsǯei`q;,Zrs8sUri4&H`eIYPL  9@@Vc"`h\"e$2(,q41z9m\UՉ6J WH3u "-ZD!f5cJd4PiDI(@E ^b0P,BV &d*0h1'{6<+XkrιvҫUYmDd#WgRe6*K-O sx~jυ5m,X *&`0#1C$J4@[,#0)g X#f͊eK ΁r7yWEZT{D`Q]:֠ZN9Vf0,KSj>㟨NNn=*#Ȳ_x5),|s/:&E=6/smVb#VeWqJ.ŶKu^s틨>_5?X*tP+ViG@1c,OGgkWšZK*u]#0d+Gm]U>]|~3N4WS"/}5#$-+ eL9+[s_-u`/S>z=FGq&GG}Vocc8 j6'?=_X.;~n{f`b>']M%v,XZي@ dخ'ejXrQ2p18ۯmMu+e*)+*|:;5-@=_{E.UYOsy:u@5O d=L{Y^L\(z$>_ ΃mr@\3vn;+ k9>~S_xk^is1tp܃v3vdx8RgdO}gS,`G(!(#PfV ,D%ȗ+^N=f*9&p&Q_s%̣ Ʀ1X1a4"HQ.dF  X @@rLk&@ t f eCF5"aeW#2@0 S+A#XqGNc9I  ,myUc߷w>C>61zmVB: "hKJ5csrOv`pOwxʰSd`@P{On*RP]pv ֧%Cm`vؖ'SOlXNLml5)ƹӪ|p <i :49;%Ɇ%A j$ D^  u-p{Rn~|yWt=H`]2[¥c &iSj͗(PU5ӑ/V<33öe#dұz}][YA'g<:ͪ }q-Jݲpʼn\LxկDs2~3""ª<|'[g{G,r~..ųs1ӒΊ8͖0>Os%YvmPWR U`㒈$qYXfz mZ[zNATYt%޼>xL=wN׽'OS:Nvcf%[ىXV8`AS+L`fwm,xsc}ƽ? ԥX31CWPrfiFݷ}"ԽR5U]@si b85Е3 zUJVOS=w15\ne+DX3K"qh4o`bET87XuyG=d7txCQ,gciZ$Km( 3M઺VXXTR7Yk0@%)Or L# e](='Y0V(R56k2Jo >Av7nv݅j]]5{ۖC*XLjNUNWd,K,TG]g ޤ;WP^v9,'AhY[m` ;bmaT1z q+T:Սb!<[b )Fޣ9͠[)}7"X6ʈ$`)fGiߢ3dcO!2 ߩk@|C1, UϹhsiqZs3v3|{G#{>D*eGYʿ)N^Y}kRwOK*PJ .pNW=ӸIg*r hIzϛƏ|}->Z"8Oa ,h#0F P1 @F0(đV ?^~8ݐ?w'O'#2XeIF@b j T_91`kA%Q S4HI:2T68p=9w׽DwX9*̿kgu'cq)2;=ghUV %`r~§fF z'7QY+a[>>NZzgǻT4:3PIAlݍ9kXR3c8$Fgc-.jNObX.WQQbck Fp3;kj.!eѪ"׮71'$yۏ@_'i$gv խr GB{C -(fWB[@4܀7|M6aGs q)hݱZ$bp$yI*V  |D/aVjkh?[fՏJ9#8t$U>3{[=3'Qە f@o]s>H`FARc#)SM?3=Nx.ۦ&x'>X2^Xu+Qpx j 3c"0`z٠5߹Rx\tQX=7nlz'n1P<#)X +I?9h%Y[:epF}kp@-#n}gf p{CcJd \M#Yi;"M^>ȝtW\_8GʳXK7)csmU/[dZzЩ64Xl_ip8ﶯ]Vk\m@o3=9Cev{{v?h<>y7/}>hkƣbVp8$@Ki\YiDrjrc؂!cӗ_ϻ9KCgwHӦQ`5 _#5I] ;/5[}5J6]z&sg;3xi^ulrz=DXx_ ~;QWU Msն>jZuC9vZ4?gէP6= r8f>zZzngm8'w@chynv6xuoe@vRswm݇ۢi[YH}IbT 356yf<׏?|s4uAS}U ;Mwtd?_GScgYv}#Q(e _șheY'Q[WwsMDuIڷO!@Ȳ)"ӌcn[pj+?3cv%"1?C9~=r~߾>i'T| d/7x@{aٝMY鮲z{˜5gyShU֍ZcڱG_/ZAg?aZs6>[vO1fz16Qe"q_Yh<0Ѹ/\=ygl 4^6X}83٘D.1 (*S3"8{/x~)&o rGz z])]P=M.g8j`uޱ}=J9B.9u9}}Vİ0!$AF:&f:8ϦʑgToq{f?ڝֵHjRnc\13<љڻ^}Doҿy8NVziYm8؁~hXT{L'?EBWh?~=>ɾu##O_eGst߳6GjJ?G&rǶň11=>0Q`JY( PkSfk3z<8#'! {Q҆(+U=G̨H934|U'ik|&Bj.֩fFwѽ lPp}aTWq1IĢ6x{(ǵcN3a~p:sH`˒cGɋ!)F,@{ f"p71=1>@zA!;Ա#in =n}UͬOy*/ f‹3ɝ~Vkq}`GȬZc+d ;|D4:K)kkZĶʻUV*,Z9Oa8NݪU6Pa>%?ebvup6jxjX<)N{ګ?_EDǮ;7rxsriNxbdtu( :ַiػǭFaXXu6zv9 b[@K3cѯ /Au&@Ps"?ovFæ=Rh8'r'SZ+`lQ# Xevg _ѷiF}g@#Q as̸&d -P EgH~08ݗNX`ٚk>63Drkifs2fE1^??9=g m^b֊fe&;MRP 2% JW x¦D3@14B BCeUYUԱϬ_5*V4.j+QǞ>WzhOA3լj ڋxY*F>>=dsY(mWN![8m١ϩ/"׷iWc}>ekS TFP*`ăIo X ª!\44ZdBVZ 1H110f`5Ƿxa6bA $zJG F:XEܣQT{ uw%c}]c/UvC, %^7bitk0RcAbs=d:Np9gn1c3٨~qlu'Iى(Js"&+8( L`ĂMY1fBB`2Lgd#5ѿiȜ^i_}؜&LMs1nlj6<pXkV.qbW]Kf#93anfqg;Uk t4멺$Tw)r'vzXVF*σvT7wG|׫꼳ko]ğ/\yHʚƮ#o.<2E\0\r45~>S)k!ێ1W'GlqkԞ=֛j_@ROn~6j9YvX;VH`,F}X "x^SkeToʭp BWU*dub F|`aSUZ*Z~Kykvy=zմ9LYI ='])z.^sZwywֽ,(XBmfر8o䞀N;ًSt51Wۨ,o߫C˞{oz8yRy 1Ar91n|_~O#<1z8SV}&?Wx7g^5Sp<-h'@ȝEGe>𬬯69N= DYkOWcǙiuP3-fjFUn$ goϒ&'xBw'3f;l Xg*@fdyv6Vhf = T?Ej9?=օ5*Q]AEp?{º95u[̈>1B}l+/'tRѮb P@-F"DAb )*8ݖ}?mlvS/{n|70,l㻧Mrx㧗VO|9>_T*ёzO۝rgIK j2SQzr5mu W: zN'bo]aZ>W~A\^=;4i)fJ5FmygdMEUد^v@Tq;^Z\1Jݬ v]Y(dnv//v_sr<;4i}!!EwkY)F23{էJ\gӧ,yq7&givEv0-B;c J![&}5ukZ$1b7/ggFj^XZڱ6py -;=R4JԺ Z&1AZWn-OGnϨ=G|gmuw7jl`>W=ϗfG64WWe6G}sۅtu϶8%R7l]y c[u}*G{_9WS55-++zᑀL܍gOJ%aK EH4r۳O wmN2 ")q/h JzU. ;xmfqq;Qʺp~K=tVkofSo^dwN;[:bPH "mG-qwDzϏMjL=uKJkխֶ#T-i0$nV{_i{SjZޫ{8-DfBWRP>/K %A 2%0d  )h zĢRP@j%+,@ښV SŮ+`Xv [8p3u5gny6k{0 8Uw[CljZf:SKo y8ٓ>;fQeɫJn{AaY*3-7y.J^ inŲ4-`2g+uvSrsT =IO}64nWJVnmd9k[TY-|*q9̹Qfu5H3,x8rg7{&`;C)>Ev=}5aUQQW π8 %UJ@GxJB@LQTD(up}>b2qm7+Sw vN'3 psv7b*Ofc\6VvԆIE4j Hc y&yF]ٴfLcmj|x䟉SJЁ%DYh2jE1358➳zl!CcuApOoVW˔>%B(Ȅ%3-`PL`A`8dJL+@u:JKg>s~&rN&8 h eBh H`)@D bcq25̫Q31)V0!\@ndXy1*؍]ç >DuU;Ӣ]jU ;ēG=_㉿E^{wT>t}Ovz&Hcic~I+aB8e ?=U},oq F}>uv_V7\~?|Mڤc}c95]{u&xxkv-tfpEc= Xd6I3t7sbiy$`M(u`ܫ)#s eI@BD]|NgR>w+=s8[X:m7Q/ʄ]^h-NH#'91ڥ؅A3I'9׉Z:aWJۊM۔Mxִ]u>[\S]W]JAVۗ@7)bTsPT 8tf#i4@ HHnT[*ԐGtsHv@# .᝭FGB3_ +NƱbFeJ&nL\_Sڵ@%efʩtP{،zNLg>_N-ݰ@n8_ ??J}g07푤kP_E}d`gKAck'!vրI2s|3 IO2=oN8q랐Pb ɈuXp  $Q+n,%Tf̗MDC" 9y~ }Qs<C?IuGΦϝU'Qe'°Sϧ_zK6{*#xVY}ο7V4-mUȟ[pe$nٳ {R52} ^/^l}xQm>,kGpUjcgϻb0U%o}MR<xMZfƉ=f: v f' IgR Hnq} y>u#K4OmRz 0»+Ŭw}yqnWڂT8:DNvÀg =+:gx9"|˳Nغj᭪שo5-0 ZV| %t$* d-s*( 8A>ǒDft GH046#>%&T܏f[9J"e? 4j+$~Rxd1-t:sǜAqm0EX5U $($Uh c"tݡUeb>POOA>o>{|,8x y0V$`21I, &LK*1E c᝽<[x|vU6li(h0 oa\0,PBP%@F̙aF0 JH0(kPcf yZxь;m7h_ńCs@w,RH4Gp)8k{:[9_Cm>Tԃ4 y-G{4ڗ]͸? cZ{- a5cVk?fFG8#F#pAtvL5I?Zuu: ΪA\qC|'GݏnXCW4YS_bl+ ʥ pD3N|$w[~pPj-ZȮPc0zce|Dy3U5#+ځ-1BqH=g1LQ]gܯFeb}][M[߉Ȧ~sSw=ϳm9>uI[{W35>} | ӑ69$w`^j竴K.F$,|eĥ#2AMY8D` zZ8]Aݩc:H&|$z>֪`҇!_j]Ei8 "fT #=qW#p+Gfq=]xV6Xp3ʠ;_h0iU3M$ՏR`gFlRsM)鼁1'Q=Htb <@IbA Ct:@ #"@2Yz~<@YHц},deb+B0 Ϙ"q2d\F$1bj򁒲,gio"XS2[Wbn*# 換W5Zfݟ_[=ے 3Xw 1itzt*ѬV>ܖprI;BtVV/(Kbx%[ZjMwS}Zi:;Z`/q3ݾOI]mCE#޲s^p3<459ɱssש:F=i{SYQ^Q^y$7?{#ZeFD57,A͏Y)$YF<ňFD$S<|a+ cQI&`3(-Zsγfh 2! 0Rhg<8%@`ʒDpXѶ"e[ZG% y@31,!b+ }5Zo೮ >9cgajD@0dff*-^=(/)KTXZ(@uP5d>qY|s-t+C۝K zGX¾3wlR>BϨu<l :06XL1dXNс1!cӝ='KVVsp<0nC;A:u [x+e}2񖙠x0/|dDr%%Lo>kæƪ.5][8Z#rͥA]w35cŞnSVmF V}=".pDO' Q Ngp7'u4`X}Ә"Ic)L~p d[@3m$F-x:@gb#R@L4B)bfZh..U>uj@TGY(~ 04%c3YXd4Q3&4?2  c50b `V`rZhPdC< V0 =ГӘ؞%@GVٜ5hhDGfyBNbs4 Oݫ!u_O|>Hʞ A=7,͆D0*I1:EP4X4 c/>B1̂0bsJZ(-24hVdZ+L2 !0e!e\d î;=XUd3~:i%'f@g,* EB#+D!# &*f`Z.H}+QZ=ʲ>;M}!Tc,*p $9"uџuđxYxQzmVN *}Ǒ7&٘ ̪̜)y%EXc1Ӷ,kcNH]8.O|!׉ʀP2j!`Z!d -˟=nE|&FeffLDCR (qFO)D~2Fˡ O2Z3Q<-(Vf1Z2ds xiˬ(0Td_aC= ;$W:dSn[.y$G3 ,4 S=BXL{( 2IpE% % 2hѤ S&A[:dqNc*yYh95"9&dP"iS(Ik3EJ#1ȫ% *Ʃ),HE,̐e3 |UR1ΗMOwN9>\ %nRC9h X4 #-VTDyjQڞ0K?]`cewSֳvBm}M<]XeJm{BC3'>O> ZkMzu#$Z >Y67I@6 )m =:Pet7F6 vVw-LņX[9AܵT"]}ָ*{X0FDk\m>-q5A|e)9p&"A %I(bPL|I=:@C~io3 ;GNfAQCfsų3jI$% Ww֠:'>rc@u?&u|UYVQ4I 07KIPraM:I y/r,GVbGuغtЮd212q'"s_k* =w7|,y{= KGʻ,Mruw:,K +kZ AE 2I| @>ĸ s@9J45i R@0 QHnb&G>daP-է?a9 *<[G)gD5 b(*QNaZ#b0(Fd34^btf`V2bq w"0xg#(,KfL[acT='ʾPot{6J`g?џTC>.9XF1\onB`ݱ3~ϯ\kYbfG_V cd J"Q{&52 cTd e@k/Sm}G|Ntmuds7: aVtR].(ԾJtYkQp'~*Vk,Tiyi| m7eW(m0Jp#=csU:Gg-8k8;񓎡8:?*W[藴o+*TGu$MU d"{kϘpے*;z*;?IR+͖X=wI'{NZſ6,VVY$~d#UPzڿ_mrMjSbQhX<ǘ<~{7nӎ7w;~|<}~׵vV-}Vpjk3t[F+cv'mڽMigXm˃Z/mg8#EG_{ss?wEiSk͏?cuu;9]4bm{oEE|5X9k3(ǘ lUb2XZB|'y}cq:=Wt [b+69="N*WEy -8RتXrBH'8[|.rsTJ3f{v .kpLtIQ$XpGP `VX fc5 1f%*29B`Wʯ?|?f%3(?12aL G2J- @Lm `^Y @R2fyE2DyT1 a!L1@yc,cn"eD,f \ il5WgjW5a}IWH#ru\s>?|{Q$.q7TN=:9gkx9XG_B~Z)c(,y@ lj(A2ĵ"Q\R"V%ȼJHdƧ*ʏy΃U]SfM,/]wا4-ƖQIwlw[Iv[ 5:JV Rݻ{ؠ'ԇjov5@!F0A>g=jw,O]k.V ©c-H7&~K]KӋOhgU]&l *e<5+AakaX߲gp ~=]ee{F{eך j\=ğI.thև*6تnhO=tZR ,fc9aZg#$6deK]W8u;LJ`>i tN;Heo6P] JTW?h3U`nPw) rGIA[Y G]AǸ {,-ɓ]J-?}nyŔ$g 591Hh IpY&+̈́50-c3$ow@>\`?I4AcPh@ `j Y cFZdV1 ZKXZGEiB"Bb@2gj Fq$ jBYkkmӡϲ*y5č GgVQvjҧ@?'){[mUprC] 7y!@D swNL X L@c14E*8B`M9w3X-ݓ[` N^#bPcý3G/]5!9{` )>O)c,3>AS*@*TU`N}jOj0i|׀?d!buEy+[Ӝ6=,v.٩tjrȓ_Y`jc't3-#=`p"J$u"QӘ<|yv=~S8c$qNEboLLy8VD DQ0IX 2dSLj #h*ıOɒI 4`1L<@#0( K#0P@thtOyw,F7doRJ yP3Q>|ˈGbsz"[8ٝ?}Ϳ~_Щ2-,>30$ a,YL(Y@I`I +2A6h)V`2Z3%|`umǦQGu?'g:i.+tѨ.0bs(<3Ѫ6]bUZg`>%fzJVu݂gƪXPΜJ),0=Dm{?/匡3,<")eH(@tDIXIEt[4PXmbn&'0:>VV3ڝK78Չ:>w/@}*8d6vUƣQ1VMkTϫC^Km- j,s֝"5gc{٭u8psp)s+PxDfiY2Q "e%0Q5̹ҌƮLȫS4Y4?^%s( LJ̙,@`Y05F#F< B)[#ϔDv9J5\1b1Nt+_P|=JƚssM^9+ZNP+Ԩf5?73u*୊!(uՁA9NT?sC} fuֹ_NI`=N@}?67n3mvMW`]bF@c tjGTvSpǻ<;d_Yufmwg-B~(͙CЙJmH'#=d`n 'ԫc.Jjab!<匈b1bVb(eJEqG!۟O?wĿD2Yl<ʁXH8 K Q$%E0cr bq{ciӦE`TgbF1Z^?e>^svgW]}EpXگs(݀'ҳKjyNѣ*}jM4{!D:$!C MGD^2T'< Wa䞣9NgߕڿveZ ^ί Lեͧʆ.1reW$Ͽ:JJߨT6n`8ԙv*guZ]hQUQinakW[ aJ {-;M_0+)kEW2bkUmÑrg6prV_m*SJ VԳb>)3-g4Π-Ҡj"T`={/ӥji !` ,* ;n_1.n >7> X Xds52lM^N`Vdw0ɘȁqB&, 0 "F%~.ċ1 ad,K$y*AEQfjҦjɁ@Ʋe,:L9cR}o~FFAhCDD&ᔥE3R9< }g{o'査vw^Sth\*҅@ҩapN(Oj-jתԽԥZ06YKf}:jAj{Ԁfӎ(1Ug~'?Cjz5lO"_Igwt<+ڶX3MȦ:uN Yuc/ 촭>wku4=iԚnV_3Gg^3mY$ ղ׏Sz}vYiKkn tꄎSU3U36L~q e *D3` 3(4Zݸ}[n]s%X30%a+Œ( 2H@q4 ̠&j҃@F3> h^&i*@D! 3F$@`F3X0(Jyd2D`@o0Gˏzmo. 疝v|Jŕߎܶ,OڭJ=[#~w%E>W+ꓱYTWGƥY}Vb(VRFrVa+q[$UVmwJhʅ'n ndg(I DkĥYi)^HZ < ELr ><"jY̑@LfJ&HV@0J%5 Y1) )L&4$^Z*{ >H R7v-nۭ4REUϵcqu\U+ʥM=g5DwuۻwYo֟ ׫}M UC;Юڽ,NVKԵՏlO;DioGl ct AYJřhtLs>}:}"@G u\A Lb2j %h*<}_FFĉ4%B4YP3@A P5dz1:CX0P34? ^U*Cbb~qs~3知}ݿΝff`K~oJHQK c1@aE3 ,O`^W%ҷèyA̲fMF*K@#ЊG3g:m7O3gIVe!&9YiFG 8pL{f#uXGI>AܯmuS ̡ 뛲/GTr?hgu*yJ.OZٴپ?ʑ;ƀEʋW?r=]XQ֠X?jOae~V}`D3jPg; J1\q\q9A83>邷!o| vSUE]@ ͕E#?';G5u'}f&1d6$@1ȏ0+2? UfFwF W*#(4#4Ġa  xWHbg_tmjbH]u˼-P³C+ 2z2B$ukCsZ*g#GI3س-VNͧ6Rm_^Tk>i])ܪWGVרsbiiKVi+kǘ݆ !LyJȘ0$Bf^=ӘЈ1ĩ8LL{Z>耀ĴYh/1-j" `S4D!`@ 45I1ڣ0fn4E?8kv8 maAIR'ʾPփ6Tv7Nrss =*@h?f擆c"L4 D?|dдy@hjbC( )P&fy/)vŘm?elg%LnL7A>} s8ݔ?CO4ONA+@4"JdF@d+3rc C0+Ƌ(Ā% ŘV%1"#vm6,Ϫ~a)LamP_v(R-*=B|Ar[LzY?ۢsl}3\TthUg mn}?~WǗmWeSn WaȬG[`s:|Lʷrx)W_PF[IxF<#):{і5MTS5S:_V?XWϩOE3]mSov@l0'ɫmDNI`aixD Q2Lp0,FfA3@ ź `u]1< i'q@2@ip;D7B>+C坈똁$ Y Aă4E`S3FD #xXf0$4a@b"#`#(H${z@p2#2fTcZ! +d8ȥ0Aڻ!RÕ q|=gӖ|wmU꼵<>eL]IO]k[1x G7lX\~36'{ r v[Ao#5w T R1Sf|gZ桗֯jr~ҏ^&.צӶQ1[}kPVG @y2a`2cV0:x5C?zNN8Ǔx B8οUSRDU9C+5dḞ.GYPɔ`X(J C0 <Ƣ P2"X ҖZ ` #JɁhd c&@hT (XBJ<]FyCs>IS|z0*õSMʰ^yy\+j E\+6ݘA+.N:v>e~%>83S/?d:Z &j`"-DP@řQL V|HX4jgSGki:]Oo&~?dnL i$)-d(܊0) JZk< =}߄ildhWٲj5-ib44!@3~4Tvj+V޵BpOY;[{qE5o5 ; dzhٔ..ZFl\)k+ſSn9m56 t/O|f%]]9: wձϿs#'dSSb/$>Ռ9f$pغ[if֘u;,Ȳ[v<sզh! <4X10 d @ň JQX\ K1bSJ^dJ2s'tR O@t!or@a[B &j#?>C߬ ߂JT >OQ>I0:@\Aϧ~cOk,wHx2FD~r//EXD @EJBPE04Q23-Lw`R3/:QbpX0;n}+I$y@i J1 )DȥXL1n,9j`Ìdx=9lid}30cS\t@lj(q3-d©Ldiĝс+l ^y4&!4ČJ R &/1 K> Zd \`PIC@{{RH^f+NnbG]MlAxQۍ>Wo"l`"{c UцXV0Ǩ36x3)]joh]GźکU{y`cIhtzt eZ;po[jTv]I(-bviB}.mM*܈@O\|1mbIW&Tșshfi4 `}s&EDDe+H"jw:SzˀptYp)Lf3U3 2sX&dM9Ƅ ,"Z&cZ7O tj9+,*|WUٜvUq+t`*"|zV:=dTg?/~{35~W "+( wŘ9J- ^dS&'J5̔Xc? o7{T3ۭ#zwMǙ.ܟ+3A n04)ƭ$Ɂ`s%L}`s4dL@2XxL{3Q/tX2ebhgY04cLh"`0Y905T(@LDq%2F 7H `kL`THC2 `hlI"C:ٳhhعΣvF κE:~պ2ҕgZд@LjfY(Ԙ$`4`ȕ@ɒY.LܘɊh51< Ctg1fNBsʏ2syNeF"rӬ̙jaa r%fB@Z`l>W}K]aʹ\GP} g{ծϵF'(B>g{{to.gsW}ښTXiދp7mYEwkvX3kniߦxWCp>!Fg$fy|UZinZcQǵ]e(҆ۻ;ٕ}Iv֒Z(Ɲi.0w<8zK+ EkQcv~*)WcKũZطA3Іh`1 +1!, R 2K@4Ƞљ /ti11hLȔ iM@r df% 0c`O:@m'd&K)M=6`V )2,S(5vk`~VU׮$g}]3@(1`WCuꟘg&ywb/&I0 )i0iJf`XMҦf" ̆O!4fJ@`/kf}I\/i#ŧc;;GH3enI@MQhbpQ} yA%Cm Q5@ ; xKG矪@Ab&&1nj%#QY@Vefg8$-ZB`RffA XJpq) -&`MADʙJ&u "-1 By*vʕT3u&3; ̋ՂYzfٔ+4R]Q qyVO }PESX-erFyB_n@ۖi]rV\emkY>vHa?ɟgMvצ@4EK(:a``xc>|c$f3L6hP4F-DbV  L`Q"̰(I?d +BF39J` |&@/3!^fq1L  H&=܈ {s!o J"IޓV%V6q(uϔw/ή,2mMP#1}K>y!1f8hLf@ 'Sg$Ni@g'ᤑ`!{"2f[( +tYcx㩈(y48Ry4QS2@- R(H"0d sf#P@4BaT&fJet 2e((%)$)̡E0T Vcǔ0eF5i JYB=bS3&@>Ɉ0:.:`ණB]*cYR{<|;X[1Ukmډ\s1g%z,./q']edR3SV8K 醖^ `ޡᏨ ` !fJ4q6S8ld ɏ| Ȕ P15 f̈QxL ^3I@x鑑t`a12 SR!j@cJHf>7a^U*+`x"}y~_Wys vn*2zc9d& ۿ/ 8Nb(kd D 1%2 f1GfaӋ~m8ߧO=W`"", M DhF,fyE%h X9 ǜ 1\ "50,(_3IV4k)+3*G ҡ9 432e$  j(LZRȍZ4L24TrA4ty&yenWFrp$:.i+QN6.եw@BxYwyُ45f5g-.@F! AgpBUR΁(WLMUL2sS֪8}s&5IMAkĝ$s:}w4U6ֽm(xmyIݩi.(U;*رHe}zv5ۨ}U.|MNlgKmk(Yv ~~:3ZALy1`fr.3Ry3R\DG`.w@H@* %  tقOWrJPsFT{|q'??Ewݑ=߻fHh򇘳F'GAr8I?)6rO\xuӎ|o~?GD<ʼng p+qtaSꁦ`Fc(J27J#"C0#Q &"`L po8rU"G4fK9:C& *1`QxVs3iU)& #%DCz>5f,@( S/*4(n%2WbeT#̀#oQǺiK2 z򀁰 0* 3C$Y@L҄5dXJc@8Z(42-bc4Ad7 L&9GQ0~g#ʖ?X}Ny>szgI856@{spOwdOA+FǑ sXlL#!Zn#("(LXYșl).<žզHJVfFc.2hsLYL,>"q fI3V#bZ=ёl`HI39+s>##[o0p>ϧP| l0@qǰ9Ov}Ko ,ۿ*a( 7mG#9uٕ_'ޣtڢF]}Y_`urTĐ=:[Ѹ23yk 0/1'07K% L531-, s d-'|a4Ya`yd'(L &4J:)-GLa Lb&1H*-+&"#/AUG^|?SY HqOOw#ðm]Ă9]q~v4AO!+iEh%̅2ұ9?GgViP>0j?~@źi O%&?[(L_R1+vd]pkmb˦OAavk\yq3>@.\2#`uo+lO| Dm2MJŕP{ۜJ4=?]?-)X@~?|v5~3-x Ӡf 'k.Srsz|q`eB}iKn2|#~t<&I?dJ@+IRPpeǔf8}nR"SJ AdL#pPs'nB8C3Q2Qɘe/\ĒzFp2CJu/3S?( b&Idv`D{k@id`eS2Z@u8y5{x{kR]{'7gK>j> ?`vM)jd6ä.eE &[#@L "52sđdD@Qh-L1򁰁i| 4"~zY7su]o*J3-}@3mhj5%38ͯGqWGn|#ߧm>'nm͜wC큁3:xxYhLuѷZ8n_NpXy`0:!}#K^?s9䮓gS; /n:jTw3DGI@VX8#aO@)D]&>Dԍs;X wWHW>kiovc'(LOM[Z==<ٯ9Cn?5>"^zIGݏvj;oZҮi@?;MM+3#~iNnQ}SXV{F2^iG;,OcP>3Re@s0b{wp5wޓ0sU|өj޺jB.q.Ts4P!N }MD^jխR0/Ճ5 v;PaQ_?GD?agSaIӿvwzg$w}_VgnQ3u~(9"ȼsS#5L~T=]Ͻ}N ڑ$~ugP~>?|;׎־cDdTZC2R$$t>ΟghV~ИL5b$ti@JI>@3#5XMTHXx60&B42I& `K, U3 9 xbLq{IsUaǿAtU\M5I*@ >fvW}>*i|P2Tl hg:܍s 04&13`Zf(L8`L U>JSA(eLY̏O% @&T k #(418 f50Oh|DVpnqcc89-EgfӪ`(F8n| ƍ?Mطk;$1~4N4K`qGu^I FVR2HYfzfu3ŌL@ 's*d– 0:rg),d9"V$nAϯqɆ4+K&PI04Nf=G)@c̘9LbI1O9ڐݡ9JtJx8Է;d{睤|iW2>̟jg]p*Z٥e('.Z! "&!-GQ30~~ybs.r} 0c@ǙQ,C2a4S2Lj(Lf@2G@b<:>hJht)nH#<FwԮOy3m:#Z>R>ޣXҔKYdHfeyq0h En{Nt&b/!1R~9&XIB_x <}fV.eH&0& cĝ4UH )W:i kPlc?;Yu 7rYng=>3)5ڍn-`ql{?+C;:/g{sTo1'ߑ0! "l~8N??t56EhMAyǬJ4 O{]cGWL"a/R>}طʯr@KTjo>k ^Q8';22Yx ɷ5j&s9nKtu|k,} ?{?P칟gS@)Jol |fi;/)Xlr\9yϻtvQ*[⠲&SFë /y(hjuxe6DU>#3rϳmnnmC%g|<پ}kTϋo(M/b[TjhV\(ឿ2'Gjt+8Ω,յkj*mv;%q=M5_y5U¨JChef#X|qW*nҪ0wocc0+Qq؛I9so_i׌Yy~W{&mCvT.@pHX-f~snwQ󫴶WXM6]4"X_OY9]{ǵ䏳WK Uvt:co#p{w \qϗ3v-֪ B\tᶦ:j̗T$\sV-Ğ^.mփ yiѺxu8gO]7|ڳ,Ƭf`Y .\d%003$JR!JS1S NCRb 1~^?~v*#mWw##nϖJi׬HO3UiWP҄γ,+ÙY @cBаC 4!bV: 7J&hL, f1$Lj5h2Jؚ "@i04#tO?6'A$c:t88{ N #eLcSԭb/%LՖ<@b+9e QCA )Ɍ`k+30eBs(|$hPbh \!Y*e.NB f\0) ZFY>_􆬊ۜA+9>vk=8@$ ֿ$xĂ~C-aXQY!4/w끈;,owӵz F-e75;ubO=gWʻ>M]گ<`8 {J?f#]=Z5]y|/{pvU4jd& di=[ix[s=jv0:="Y}<Ѧ{y};OWRzZ|-Pk\D옉+k1EyZ᭺˙i!Oa`r8OI*j)ٺL AϮN=93f83N2˙z,M3;Cc?H])Y㧵XS9}5vs^tzxOYk]Ulx |zսV[s=\Y3*3mC2J,Ƀ ޕ4QV-$Q+35iSźF oQtngZw#=?мwOꑽ%,Ʀ2q+wIdAL)A-Ds<\ǾJ?Q| ؀ot0˙̃JK l s"9 ĩ`2c( rAtMUh!Lj`o=͈GlsIqίlkRQ+d . 8=%_jGkUk^v/Ó񦰇Quzvt +q t$/l-l e9޸< l޻ݤ_p'L!~M=b˭ִBFHsSf#đ ުOx{Gϕ|SGo+e*-XY!lL 3/8#A7_|6qϮ|^()=,_rxON /`}ʥF;Vͣ;pga}ceQ-_>ǼM pӻk٫ҩG/iTGqxϊwzͅy | vrFN ̹ l6=}_ (N0 TNNGLys<=歼KYRy`Ay5)3>{|Oښn?v}}dow<+v+SO1N/g?EN;g7{+S*ۺ`q5 NΊ¤oEc =R=mcٓF}fv5m+1۸/ ڽ*;<{x%Z27 ;ُ黱ݝmZr*ԵaKsoW\#w=x'dPRPp=zr&Zn=ןjib3c{Em:z걪}(@rwɋ >;g{Gw^BЁӨ>rs;nƝM=<}bq'=Z=6:P Lr7}.^z,L2FXA")(?B}LVVaZ1\{)q ih#)*cS3ZX$)fhb)K~#W保]~G KlQf:oQkrx ɁF~>;9#i23L &h@dVaK7E <@DLA eAe h!ZG1#0X, F[}kX2>_YbA1 [Ǭ&lyP~Χ\R@}N:Qju[tLȌ a &,h'Ȱ@x}]|hl Bd(73-7' `ק#@ s$iaW, ^g&KUZzIfnG0!"j2&-E)U{*Jk|埳ZŅ0. 9cc}3w|QO `z9ϛij~ݗGDS?B8ݣmm[dHt"G}[Z̳J9ǿV@:xm7d}A&s32۝\b;2I=}y2^빯t }p3P?l+ĕV F 1u7V}ȉ2C3~j|A?m@ ^%Q232s126$Vp >f;y3Dh (F-L3EEY,JYn/}2Cz ?f8p 흥S[5T{%[1&t_k?;ty}kp)/0ݵIN#>ޭ]LM9r7tͬ'#geUkc<# zfymڝ3_bk5&C/]M!O?s\?w}k=ﮣ<7l餶3s{ ; 2V}8Wsj˴a˵`9A?\ݛzrg~ jAGQV4ȼǔa1A5^hA R2ee{$gSQbZI1't7@(8J.#2ӔR0F?}9SƋB=4zaS\maQ@e^ +Ě)As1&p` 1d&<c bK}Ljf0$JYh"c0h :5S|fjҔBejjG_O)!e 2MdDJfcf""XcY- !D30-17CR%eLD*g3stO}Λ>.,ydϣa}brv;A}~={SB.Qw|{D.fyi?@Gs=Îm1=SUT(¨zŴc7ϡ]ڇӖXOX0Va Dnk^]ZkP~qe!o]2;^ĂFXr~I4rNGͻ?iǻPt)$g{غs^NzjU |[IDFOH(`V%Sd2, `X+(@y#ta3!& i!((@b $DN`lg[M kUf'_O5Zl#/;%3&>xЈ@, #X3&yh3F=Y$JQ8H:`Rd͔LrJ2A5Yfj#1Ѭ1<BytD8T2Mg0~QĒnlS4xcF=f?imftif3۷\.ݗNܘJ@ ,Ɔ@ [Ġ${`dyf EIac 4 ǘ, L Q3G!3Y3 =#)aa0caT69 Ȥc~`}>LF ̍IZ f`eIk8Zkh,cYY35Zsm~4d^nqK @7v4}1+|ȡ)HlƘ E> '11xIIEm=&Uf1 aS[#xjvm%yYO}^L*!Ǯ׮G7b嘖 KS " `lP2 < ,ICQ.HȠ`b#8`Z$OH~ ^Zb4qf%VcaSŘ eO|8Y u5M)Lq;%Kۦi)1( Ef^e*b,)~ZeJ%cS(@33@ Ayh"0:X,l$EV$` NtP1Ɍ$T38VPÙn|H&};cy`j;o`8Q>)aߟP2FȔbVL[x$}^tUn0NY荳EV:Y_fC8R6X+|x}{V~f~CI@"Z>dGRzzuie;ͥ4 i~7msio\ώvFoei{:iS췴 1H|k:Tkk&OIAْXi1,\vegEOެY!BmiZT ª)$N_w;iu VMwX0 Av ͸ۏN:#gmcD]Ug{ߨ5j=V9@KV3Y8#щHg|RPµ5lC`-كϯ@P wQnRPUG,͐LWpʐGOӵ5u6[.EO =qbVOx{^+е9"ݸ9"r{ SZVvYYё鎦ARgGKW}n.BղܧR}<g]{kfFAp #i`N0sЂfX"̬^ @:y?k?sOm>x. \<|vTyuγZRVexIEy3eZgJ̬Z)g`^X3t)c+/` ǘ y|= I `hؒ߿1 PyḺ'?1IX\6D3 'Lu2sYr'_] 4Mv'ap4`F1?b}AV}D2 bH- h*B4h$.,d$h1 *t"ʐ#H1 ĥGF a1 @M^ FcS:F 1AȁϐK/-J/2n}*+cԻ`<277O1y.izsZ[ruLg򳗌v٥ ~lJSi=ґgvQvU#KE=wp8YiOoy:+CeG8Q٣]ctz;lOi^mMHjòߎUF[俳t(V ,Qu~ws= 2TfCax_L+^:uuѥԲh4 Cgu9==ջ~HeԋN1;)#?q׉kѩf>rlt) *%%TPs=ؖ)k굺 EeM# Ε(,eZ`wZu45,u%kvBp{0 e=a']=}=4<4:z=S+"92$T`q@*|s2<ŝB+7{m ٓq>3Ati-ƷUmF_W;C99*2PbX@ݧ]O=}3w{'ڈqr>\]);GdiYyYI5Qjd+M@c^dk a( ChR%cf`ňbDŘ[r~f<+B0x!N}NSP߃NrS8z>q>f1WvI5ǏX22*kHeafBPiylffɕ\3VUVEn\E` `D 1ź@00,14 &2eDH =CE1(e4ZT#L`jX3)jdX~{H}'&9 І='} W!DMVh_M`;dnqL2q`oX'Uݻԯֶ 2$#]TI5\ھzgyϔ+ FkFuCj-ΉaT{O, 5UؽQVUjorqߤb`6JuR[љrYU2 [#r:,nRFr W"3j4ݛ7gдYjuJgX!FPGzvlUf^ϭ٬6=z˫ 6ԗd7fB1HQԑ ~q>(CC'r})wͯeڻivM=PNѧWMj:ڋ{5njB\d31v⛆P̙B^XF CTRڍPExtikZR䠶*22{ 4=|N<|i<=FejW.R!wm_k˦ᒽIBwiI]BUbF> ;ϝjS,n5gWfjןkj8}BFu c@(pwr$it:ۨz8T56V:{0k(,suY%ey" XyJ#+04(80Ie<2EOkw'jT)~r]yٳn|㡝eKtNs[i6mSNF7Yc3>nC#UHJR+"@V^'x Y4/Rs^A `uh,%XFK33;(Lׁ+1 TMfEN0K $ pxCO t{@=;t-;\> %;I, ګOzP wۛrFXN_LlCeF+r3Fq_ RpIRG+y%4:Zl`\ܣ'=Z?kj[5=I5=y'*0YM〣trlIh8kG:~6Jg*s%IYqXȈJ &1`.TDi +Q&Zlō`q$~GṱhUYp)VI\/234`"yAzdp+2yQ " 6 4cUohZ?}oNq@%b,J h0@Csh!Zh`I!ePf\4eLK P1f&s5": V& RhD1S-(z mF\t(Lb2@m3f(1N{ef@ X Gjp1bXP"  bc(40DM*ISP RM>mz=^OZ 7.NN4D:թz-GM.ޯ'(gIvx1i}W@0j'0&uӻtj})kZOFx?k8>_L#Ijy?_.wT-{"6,4ꚢ:`-^GnK0̫`9IҨΠxC~Ptj<,n>1z]Zu/R8ud 899j|c^jv= q/o"zS<`lWi}0z)n\9O^jQq)>_8 `H~Щ|_iJ }х‚ī"AP [?G13}z) P>ə 8Y[zK@ Lu=Zrw!1[r|k>CiʼcܿLDTZFGkP}p,-7h7pHc,h Oڵ1ʨlu?mNUq]urCulcw- [ӭVzp>k(䆛VgPkG>c aU^9NjZPi%s4/|٧2pR'%2VoEȜ4~@#ĺI 6=8d̬[f74eĵ)(>2̘458+)S,fvNPA&1%&44_I-f#9GO i5ƵCzYӈm"1@Χ{C+synapse-1.100.0/docs/development/img/git/clean.png000066400000000000000000003303701455622526000217510ustar00rootroot00000000000000PNG  IHDRrfVbKGD pHYs  tIME 6ǙiTXtCommentCreated with GIMPd.e IDATxwtUlI@BI!P"Azw)RHDAQD"b(PB,# @h$B =#$&&}>x멷M/\=-֐ M"mʎ_$!iE<4;}]n̊1vn^%[Kc֊9S~: !MR*g5yd2ؘU*fKjĴm*KiRԱe~?3ձBv%}OJRWUQNe*c}jm:ev6VY{wM)lGUJj͆5jIUgQQ6-Mݮ$eCY^C|(~9qoK{).:jRnT:,gՙ_/WeU7StIPU?w>ҋ)9;vvGƒjo$Ƽ^<: Ow :k!%wֽ/OeN#ɕ^ő8s;?#_2WsF8Ȑ~io \VEt>s϶͕/1XgC&Юe2jIflps:}_8IC_5-S]ǎS-= 2 ix&r `oQGW5<]8XʚHX’7X6w1rk_ %{nR`͌&PY\: Pͳ`$POm3wIV-c׃ay6vv}db;ٓ3%E~B[+1sv=^mKh 53O8;O9Kg?sX !;ڌ(yc?Dfv_ڰJG\ۅ\*3`2נ=}1Uw`<|jY6rO!;fg[)1Vh3\Mw6yW{sd\i*kJR!ԭZgk4'2/p~S_} ߬wQ[Hx3'^%њll/cXHߍc#*p}K0s?J|vx z0)6Im SoҖmN>LjI' krWZFE=ۿـ{$;M!Q1x=w2둷iiq?mee%!g S4ŵ5i). NΦn ei2p:]ZX6I;}/CP)3o/RY8x1:cSSm.tG44Sm&nSAJgR7BxMՍsh4 ,kYzy kF8a_WLwy}| M@wkveOO8X%vfgyB!Ez$(z#v6 ʶv|/Mg[ȑq`OJF+Tzn;@z.Q,&/G鍌~Pe1\>-v1\Gf1nZ27!Lc剏c ^~q8&a3f!vOD2﫜99lzU"<BDBk;=?\'~ח, |T*, k| e:4IU{fnyʇ eҲf"k݇:_!"f .|Nxv`ˋ;?3LqyAo f- p،!}pO*,֏Ši#,uy;3 Fcg4&7_;?˪ڗI Aj]xsVR׏fBiWo%{Ft)zڸOWO f֩wbEUG Mz=rD~*;?ͣo|kj0hfx{G AL FA1{.{ޔÑof=y|d3flo$Φm;6agr;ۢ#qm\)Lǿ|LkxE ?;ׁIt h(+Syܪӆ gSUzf !aӹ~jy5r4Ay6TqKSn$&'(ƱE3wV6ԭX'ɿ,-¾u%$=BڢYm3m<+-#Tʵl),(e軭n>U'g/]_1|ro'wE*>:Hߙ ԼAv+Mf l9NsSʒ|?Py(+=]zv6򈡫|\8YDz66MXaj̔9(e#j ٷcZXl1?ǹ z28!5gmؕ+;Vԥ6zh%m* ]Cz\Oxᡶ4,+5suלPDŽ٧1'2wB܏i=0VᇛG `Ϋau+d&Gtϑ`f=jT6݃R!>V9t.J<vϕTI09{?&ҞYGҸxN`;K0e?W,66oi,j 9{O<]3owpklY?7a[ޏң!2W;ZLpTM!9r<׾hwnw#VR$k;~e > Yu_Bʵ -7K[m\]r>W,@' ʱp5Sė` oe &,aRTiW]5i9s/&ajE`Uv_669XHSOKٜ&J)lIZz}ko,b‡\;6-{1E{9pԔD& glVqJA]pEмi9q%3H _&AFmƀ Ns͇ '_Fh69Ja9<֝fpʪP{x1XV +V;D4`ݜF4o SzP5wf=Ԓ.\-٘9;:І|/W*4_.Kq#c1}ocz3wgwC( 1[BQX懼Mt0>N䱏han 7=_Γ̦g ~)8^k5Q \ÁASʡrݎf %o:W27~Bٺ8[OR8VG0hn:pϙ?KruT O59l{>Ӣc S؞fΜًXM'`$߬Mк+WT7* ntFC=?7fj ?iT|Wt|F{ǻKlqpݬa/KuL r٧ Ma,Θ)>ܘ&Dp*Yٮ9e>M WkKFb#uhe4QRj8szdgnD턉4 zL!*mHc޹>25D{kSV$43'up*fx7UpW<<+h'K*fWO 4Gb}$Fy<bl\;g 4LRYNn` |eVgsNzqۯ4)BZSؗzFc?웿n Xv)8 ZZ2|W=rQ&Z?o2P9xVc=nD0,u<Ÿi p3z'>:lQkXot#Kvly.5rz#Sg='#Fcw~! -wn=u~N-S'.zF=B!L37co}a| ,N'YFc(Ð,톦!k~~wڝB4:į.|Nxv`ˋ;-@Gb4Ln })*}[Dxf !aӹ)0>:t~zt7fI ,c8]>]w3,)#!ަ#1c4mjL@ko_ˉ|stcvr _SPɼ^=~Ǒ <6پ-n=B:ծcL9R6rư};ll),(e軭0*q9O=%1_fq ʇ<}m{w͙Tv+Mf l9NsJyMG[bNm!`ԉ[f[ΒF܊~R\QZ܃R!>V09 IDATլC՘D_!39+v[Hz-,^obV_N^ A46W[Nr6Ė!{t̸74دJB!m޸\_~~/^xwD-[E>s8qĹd,ظ[@G c vF7Vy~R\/ƺwwmej/g 7僇z;ZGW413{a|B.\HS֮]yͭ c򵱤f^d9W%g:ԍj~QO!dWTe+G`9jK T(ˍ?R/7l8`q Jeo5Wm`\meSOcj[lT>ͽj>KI)^}U{#yk} 뿜ݓT)/fP.U#})oM]zUfO|a7bzԋ9OL_iS!(>M)ucOJĄ8OYuX0-s?]?+Bq; m2d[;~$B!WɷB+B!ĝFVhB!$B!B :8 g&B!wbB+B!$B!BHB+B!$B!BZ!B!$B!BZ!B!$B! !B! B!%DSJ) B!S B!V!B"ULlv#JEOj<#:;6pﳐd<75Gb; YkחWny>>Ʃ}A,0ɤvY|&(ؼ'Ssې|D_9w~d|7r?#eU ƣ3ig1"c3m{m6<] lb-'"۴K.(eUv?]?T*KK-oܼ}m6]ʍ~wPŵ,U[=¼茛qm+|8s7r"eBkEj:c͗О=@5r,IՈzCX2>os~ϺZY`3C. H) K9cU(P* ^i@F~'tz#ccA? ']#|b__CYz\] +qk&ұV9}"o #>|=5]0`f\ 664iLnw~U'-SxPywd]Ѕgnyʇ e |&_ 'euͭWp)gT#+H\7M1\ /WHD`\4Sm&nqhۅߤ~xzd0vhQZ7Cgao74DWX?aV#A;Wdq N3bXr6|ܙZPbUzO@'T3v?s>ؒܞ /O>¢Gւ,\1V^xٱ(d;oߞ!$l:^>*a}j cu?DŽnվ gSUl~Й ۠OƧ.ۙ1U]0ny{/9e-QF>7nfVG>jQ!*i_ؐr^St탫Aà)IT~G AL FA潜WnNs-DH&Jv C*ժnCuxZ+} Uhh;?;ʖ k\R*֫mKLus+ڿ:fxi@5j~5P(uף۲.ݯVD,;e%kpZڴeTkTm|U WʑUK;URzչr9^$lVRcoŞ|qz1s_bf=޿4Ne6ۅj`js*-+UnjMmq)jI??5|mfu<;[uV_}bqW^?89UꨂT"W5?֟^=@-_!;5\Yfu1핖r*N[mI_pϫ=U龵Rol^ݓS:UBޘ(޼J *ڽS]J6Mj/Q6"`'NO']uZT~u/Zf:U=tZXU쮪ƈ5j?goSIug:M%nxF5.kPhU$u~NRI .S QR_90RN .Up*~,[81ݪY}X@@Vg3vk_ ?їFepuH[IH~Bt.EqiΠQͩX ]:7x@ξ`UƫRkFޖUI'fZ3yƋL:[Ns*m;"-tz9xqYGGm㬰2nFjWU \)$*=\Z0dT3|+p9Fý|(ȇ .#Fd[cYG؝Y, `kHRdAQ[o9\jZ6k27jVhx O?5ksHe &,aRTiW][TEŀAb]>+k]puɝ6F7{V9"&ki7{jz%#] Kٜ]gKaKO/W꩕x\#Ն[g:ƺxhш# O8[Jg,uo <(Qܵ՞#2sW񔺖͟N+\ꜛww~pZǝgfpnGq1"Q{0ܿ{>`xB[Z)nMg``ʸ{VӠ.o":9dDeBk^xfTۜ~H:Ғ3+,,i'Yٷ\%uI4638X PYd<(F(>4,ݺ*OgHv8 ƭht`)_lO$v\ؿP5QۋɗexN\fgK94)+|˫4f<%]R6B=R!{'_˙1kb^=[jl@?d2ubw7봇IcV4| Akcmo^ƒ/r} Yϟ4g]̍.o-dB4ؚz.Xz%Oztl~֦aKYJo帅i$r~{o`B:{r&\hX&j93γH"ojΌ0חsiBg-+аeCƴl`$N-\gP7Ncu+7/q̎|q.aqݺf:ՐPn0T}bEjT}+.-%S^,%O87FhgV)YI|#U 4 nsIpBGb9ƛ_PIa|cE2ݖ҉KP4i|07vDw]=-kƦ5$k޼@-^ߺҴ_[21->yܘ&Dp*j`, p8;7=_Γ̦g |_ :?LؕK_%ª|6C7;sÛSf/jcY4;v3{o&bh]ʕB`h6lĭ%wQy>P1,m6S!&Zf uK"Ʒeyg+ \LS+ySƩ}y[l9ˬL!˗1_ Qrd_!Җ1p⳵mndVa T{;~ڜ6}-]%J\Z!ZrM_A|^˹y=qNi? BIhB!("B!9 :8 gf!B;0B!BZ!B!$B!BZ!B! B! !B! B! !BIhB!V!B)A!BܩdV!BHB+B!mЪSy&i6 L>ـ{$y4w4W8mSؗW~:75[e[e]mBIhML5ߖ/RYrҔuƦd+ l6OO*K3b]-eљ3\mJ/V'ЊB<)QS`!BHB[ZĭHZpsNW~jv`̳* ?ItĿ`fNAAGx qI_4->L_}Gq(2{ymZ%̣OaN!u#1axvCL? *=3RCA0U+x{It h@3fVGKЅg~/J6 g B0;e #>|=5]0N錳[>Ќ0YV8Ogc\]ϩ8kg㙺~5؎Hzؔ|kgg>Lfm[*'NYZ3OEGBN3TUݖ6> (3llI_pq*-Z12jJQJUjPoRiR J)eT lWqNeߍU [-7l4tWjdjQrQV'Qk8f9jD'G)eUfuV!O2NZO _Y h Յqj*䥝*'o~JEezުj8a*2uڠEJUTפՃգ2iKLus+ڿ:fq}[e]T_oTY߭s6ζ!=BY}|ڪa*乭*;?Q [NE exw9 M[Q|zsz9ٷ*+,9FUqۧWڹ64Lyg%Zpݹk Bx7e: !$h>xwvGx9d-e7Br$biƨzvj4,Vŵ)kjn4hڝ isqiɾ57k-1F9tKؽxG:tbVztXv P|+{cL;[`iy[xF?!DY:8 eiq<V38p1}N!ۼD6oxhWgB!who'iP6!m$B!p@Z!B!4B+B!$B!Hhl<4F!B܁ B! !B! B! !BIhB!V!BIhB!V!BHB+B!$B!BM)$ B!N%+B!BZ!B!$)sh<۴~ֵlz/Y͑,z])2?b+ƥm0>oɔ_Y+3{z;׺X=U؆Tbs6$m8ەY1'iqt "v=mr) h}X|]4l'OHql6;IBټ-⒍xםL>OcS9HFϗ^Ǭ]v|Ԏd뵷" iT6lt/IHĻxZz?Xs;H.Kzޏk7>r(Z4yAfYT.˖MkHJp&}f\]L7q66]yn \Sz+q7&`̹>r>.B!6^+au/RK\P8h}F{RxsSZ'lpټ5}7Pc^uM腻ݤ`/{kM j͟_wcˎ7J'|gDc;Z>IH ۯXm(x9Q8YFCOPǾƶmSS%X_z8]_hO{N3a9C:ϒt?IcSwRuԜk,g? y$uiOQ+q;&Ơ8sB1;5 IDATu&SٰHrx?&ۉi u0hp\ l )<=AS]]~_Smˁ/I> S"nMм]~XcF쫅dqFʶL.t,I= ܇2ZZ~_Z /uoHN7(_ڳ{.lـuA%mlzwbzM;p`g$ia!xپg9aVoSUgⴡ(^4}-<ldƖ qR Өэr iznД]!#>z Ti3]SNr& {WbnM`Wp3́xy4h f;cSn,ؿ)݉9)N\'ǵzLoHoB& Pk[W!kt?[U{uF2?Z ;︪7ν.pY,7j Dq@-Ʌf٠a,eN~Q iCLe{ _/_>9S? &g-3d=ĬjtXNF Fjd%K᧊C,LڤOA6f[1T0 0O͏gN˼wp{%l3rwMܥ5K=$N6d FFP@֡Hܖ{^NްqzΆFc~SV<"V XǮPG38um 7I'Ύ' /B9D<[eLl]&yG}²RxUb~&b[1mbay,<)aqyp Gtۻ%k/jfhPLX@aGvF*t)]fRR­#ϱ)l8y0λ|x1$7p,]%P벐yܭ5=~Z }4z<l#umne`d<Õϐv}^"Ν7@ Q8~,4rdh2ڼLOLd6TZ#gpJFʵL %)ᗣOTg"  `v\|:M'!ϡa ١6}F D D<</-ԋ\~'|ФM1Vrl2 0d~}qߌGFeAhllN@`Hdrr4$g} YwOQSj6cؚRв0 t C# e㎡Vk04lhb){QDG Z>g6+|K/el7gsGDad:3FXbrH\|f!8GRe# ^aϒaSCI֫ЙTah?"습Ҡ3 cq5WžTgv[o"#;[fdx~<ѧ1~/ hsu \'ѤҘDt&$tz T07A%KRl$>E":^qVF"naq!0aaa|aa႖aaaeaa.haaوqF_w^ЍE=jm%<1&F?;AN/l<20ٶO:636~ 0V҂S3}a/ϗgYA@7ܮĸr 2 \17\<'Os >dIwPQa07}4RctUMͅ-,Р'fbzxlV|0 X={;~MC6sF }e:Aec>@LD6Wૂ1|.|}ixq=od̲3na_/h owcڤθ#iŷJ=j[\GlzH80lSV (=}??ţ\$E63.ɣ-е#иM3~@o0iRgw̢ >T|f}am7$D5zdfù ;[X@dPX9ûxp,S;F;C&P}&sGCKeĝ^ĺf,M?Ӿ ߚְa0v0>2vֆJ[Xx$\w)wF `||< ԛ0Թ ƿ*ϩZ\X6G;ƇQhFrE#LK(v q}3>ExcM)௩ "~ G`SVb:1uL{A0cSr>;m /[jU)m1ldﺣa 4qӦ= Yk돞c]a7b~ŵ쉀3wty X36·HspTN*_WRcA]g#O؉f&?}/9%H5{nà+Hs m#xג _<{)X ޘ9(t,={0|m9[z7VBy\MXWw .hfءP:t23pc,-M BҎKЦX捈E?`byzy2hoq2~qnnx a͡=žuA Xx6LTX3{ j<:Hw_v($sYii"XuXs`>}_FoGs WW`8gO<(JEbSj>3Hq㙗iLgLAF3SNoôC~d(;mK_A]06?>GR27˦:5FnC~v4(16u+JKg"ĦPݳBJk[0]4^H¨ѲGR6vN 0}Z'8 4&`d.KތܡRڢ^EHJIѕQc3zO{ѹ}˓=m'kFk6ڙ5xvx 5Ѵ{翍 n,D|ұ)I*)y뎭BOźu26V&ClǫnQaXљv0,-]~L؏ZyBFrn ޮP9w MGwHW}CY= 7 Zʊöc;2' xlE]=V,,U.TR JTǨ=]2N9{B@8S8!2*ru܋k2<4r %7#ӌ E&O23D*0LBQ#z߇8rT#(&| 3!HzpA& A&<C"8๨ÈuG\Qs)D4Ye=ؔOS qI5>R^+ߥyYӊ^H.29r9C&3`]?!h<nx,lZ]_e Rݽ[e}BKnÞ\2W;'cW5d%bڃ^Z@eGjR*\7>K#?-݌ج°b{hM]VތW㡦'/zc+q2ڢ?`hT}d'Q=qV9fE .:4m9`d.t: 37ŝ<}&u{q$K 7~77'-v?xd͕zɩX܎k.ê@1+ g49#?¤V|1bSjHMI-!%"rFxt. ߩX?l1HwSv?~_-,LH$H_՗Qgw#1kGgj@'06nۃ!=D$o !N=P<;ȸh7|J=D P|y(`NyTWx~x,9 🈏##<·e`Gn/Vd l)'Gt\Imd o8YETTE$bk肆Gn@0dܣw1(uԷz v(5V C]i-L`Č}%S&l?Dn^ hpc |0b^\d o"~9u ٙGcX3H)+#)|©>YM!SOHMIm[mtB~fK {٬;2zNCl_mf"YK(er3bSZ̑-(};{!t{S%x _Dp10 Sx-0 0 T70 0 -0 0 Tf#>Ӕ:aamkp PŻF}2.s= #f }7%A( }WxǩTv+ʂr==:~/Ş Մ-|tZb @P4´3{@i揉𔗴 =It JZ 1sd7oG#~ {($fOތ>Ћhʘ'0 <-? \;^eWon<.5?'AwqXK *5Pi'X9zo1*WXG{YWvb[3u0oL܃b1"c_pڌ#;1 a[$! o|v9ZXepM_|Tbyˋ}P[ާBLs1pZ,&?ǫߞ1)6|>sw]@59/Oԧv1ϲ"ڮ20 0OA[7-VmUq|آ +gxw/.#$ðMiX PCd RVCH6J8OhR5|cՅvu/uV3]_63AZM O[w?)x&uF}K,C&JE>5tmLL WF/O 1qx&mNè{۱>нcO݅\i=[5ň68L.k0EPs=Of \bN5>E] 0 <ɂCFpryJ "RA17>+pې5j#|[t8y{Xux#1dfgX2[zpR.bD*ԡ7b~ŵ쉀3Wv'3/'1tk0hgfN=+`yӰd3߸uiYϬfUܬ'Ǿs/WQ]e9ghuRb%. $#zAhn ۇ;:=,ˡOUЊi\/b*_ad`Ptmf$ = 5c۹CE~ sېY{;OY*2,ڇ&!;N[mdXJV1.)TEA~oc=8m?cҙxl9 "㓡V+R{Dؕ*oMk,Z5cO`x[o3)8%#ej~(2D)BtQ-.}L>MZl./ 0 d Z½u.q>qBdU =dxe*H?ݢpP/`}UQ}PZJ! dzC5jY/QVuA9aƛc63"<CPRHCV{vd}g7 nc9D2\ݹ7M@hzw+Fꂅ%gk,Ǫ{dmN'ާip*3=y69aȡ_%ybTԧvb5  c(k8M)T0 0(hIx:2P+l`x|8ꇪ: lHMJE^o A0sYѕ]V=F wd슻DX{i{;E/9g۰mq~()q=[H0av$ 3V.2@N1X %߫d3qpZ7Y?9~X&ݟL.XVa1O֜ &w2hcX{lx%>>"6ʘ'0  AJǒ+2+w/B07[t~g(+z? 9&)tاXʘ'0 Ø@f#v=vNT-ԛ0c5]ހTaableaa5ݡeaaߡeaaeaa*QRlt_\>aa-0 0 pA0 0 0\2 0 0  0 0  0 0 -0 0 pA0 0 0\2 0 0\2 0 0  0 0 ק IDATX 0 0Lu2 0 0\2 0 0L(h)i6b/@^n,BOS˲|Uͯm>I ]UU"cM^1RV|'ՖCdYڼ>Nk<in]].>iU- 6z1VI/,0fPa2~ ò1 & 0 SKߗc{AxP|KA͑+]Xv"Qbyˋ}P[4ue'ū_-;ycfܼc0\چb H?!#we +O6c:Sn)GOUu,Os ~o5 o.HOfӀdciCзX˽7ML-HP4jHOi1RF5R& }V} F񚒓1ޮ`[8@@95z34&AӪ;];j B&Ɠ."wh4њF+Suf.qcAsɕNԨTp 7ނdȪ \˗}4YL׊@uj:Y`Z bwQD :Ov]x: V5;=7H1vT3NR聶 t{yR@&đhͭGAO-P&NBmFӎT0ڣ#ͩΫG(Y_azu&]ЗFӎ\"CF4 nJ ޠ\u]:Zut%?O_vCCRp=z4*lMkԦmOOfP43u{2] ;HkB1O_ޥuetEq=06F /ӔR?ܠE=jш0 CDTg, ^QZ\:!6`,7cr;woRRp 1.𲑗VMʱwۈ]AY$xe;OYӠ7D<)g.h3#陷1¨Ѳ%!u' o6lFhX[X+CBDd;"fJ]D U} # H|RcL,H嫤I

!Ag"v]x ][qב{ ۖnh\ы61& $ '5]; a+r^ ;-"/rDzu 6%ܿ>ÄۑD,[Joowz:`3Ⱦ{Kģ~МQ?˸1ġ@t~FaŦ:V] ?7R)R\Li/yLw)|aEt!QlQ#CO!ϼK_{H!Rª7C3K^J$.SLv{>.F=ղRR&id_9`M~B"2N%O; J$2Q^F9a RX֙g_ Ab4yJ) IOK6NzdtF=ޡf\)f#1&Nj~*ɼd?h@Zn(w 4N; ۆRb v ΗZ8 .Ӟn;ڝo8 [H9{EaX=]Z؃ZsԼma"*,f#v=vNcy0P)b"JTBd/n-B0L)V0 S umUyJ|60Zaa~ 0 0 -0 0 Tf#X1 0 0L5,haa Zaa႖aaaeaaeaa.haa Zaa႖aa႖aaaeaaDŽ@Dj`aa+|aa႖aaaDAKI}r ʆn,BOS[,7_w~,OZgA*w ?>Me ކ| 0⟚dD 􆃅 V)h: H)@d[ó|s.&`}v[`A@7ܮ~}JE|.u*~OK 6z1V]z._e6a9{葿5OQ?u-@5 ]0󝕸wa2Ґݰ%VSn)GOUc!4Ytxf 규 D{3>"YҖQi?N 64nj0ylvۗ)xDJ5p%K7=|{4/^i`goA1uPKDzJyz4A2 oHo+r" y(^Fl (#Fo&T4ڭ;M?5v&g"%Q>%8Zִ&[n4%#՝Gjvx4zvO5w 5| ЙtJ/I8O1J'jm*m`eoA2dwS_>,kEAuj:YPۊ bJAiv]x: V5;=7#f^1&NZ*xs\R|JaXmnzD3+oKʟSw@7lR|v[i=>H2ȵrJ3hW\.ۡbk88S@Y1_YP;h]CbSM [8:߽Nț`Xwl]}}*֭Ɛ2O> ]"K@E\fLn-BRJ .JovfhTFX ڔ#),1$.vѽA@{lǫnQaaQ㙥rod23Ő 7ABln/GevJTҝ9๨ÈuG\a53I+L,,l)`, *g(w<42AZ`:heAQ] F.e W3^Xl+ߗaH_o؄Q V\WJĂ I\`n^ѧX;9R|Os*SYGxT^vKŠaL= g|6 +<[ !e$Z{˱H 떈>^Jݏ5??Y8b=.Gs ҿNGa憳S+A3ɑaRg+\CY@eGjR*Yj,ٟ܌}XX9.)ss2v]CNV"V=K#?-݌иmRcL,IȑOjN6bo{<d",[x?vC5O ŷZXѮ\}$T1]i~&rP_`,Nњ/OtO깇V AaC͞w]h4 mmk4)ƼHV뱴\v}BHHHs@e-I{}pLDCޣآF9%x]:oW_N"`hNoD_mڲb.}GGVgȾa9-\ՙDI-Y":g=ղRR&id_9`=| жigABɗRtlG{e)AgJgF`~ҥS(=Y*Qwhu/WHb#g2JubsR3N-Jִ&gWz}tɗ¤h4¥yXSVK&ҮHOWv%ǀ-OUQ~;Tl /ZoRQm(cj~ʭ@lVc*qf#v=vN:޻e"fr'LX?ބS>V퍕#z|0 SMƚ;#})S { Ӄ+fzˋd2Xv4|,0 S0lI.fv7 v:3 0 0LՄo1 0 0\2 0 0L(h)i6b/@n5vXޓbͯOJO2|_sIF@o8X`o%cI/O<}q[]rHɹ)[ȟEv.-_Ȫ}v[GA@7ܮ~i|.ʓOs sGp4'˓WeU\qm7}4Rr0\2 De!aK4U aa5鱑\AYc3dE݇e6ae_+RQM޺:b+;[X@dPX9ûxIgOz\2 ]: {ش_o E63.͐xӧ;fxhyh=t@H_x?gkCTP,<}#=äIQ2&xd;q]"f?QIF)?PWvu{%l ⟚_QS\ +Ax@xיxMs}B{"ڢ㛱H7HIIZF/V9Mqrs.]ә=@҆эC5SGɡP.b#z9@tkW`[JHҨHy2rX#ZK^+k#}JΟRm+*Gqx.0bfFQ,|)#fܓ!#* z hԚc'D_E΀{`MƓJa ear Ͻ$ ;o!U<QnQa 1^>3WR<*ve&33trO\gR3ѧD <=/ʙLŃxl-axȤYf<'G&zKEƓי%5O纊EB#U%ZW)- @S ZP8Y&uYf~*[=RRWdpwNƮkJĊ_Mj CMf)6}][qב{ ۖnhՅSCzh 7u A0sY)Ǖvum̃OLgRYy[GS@&ro/8 ߩX?l1|Ixt.u+&"R֪c^WOႋ Mk>+C/\VtGS©>YM!@y+2Ww[t`#Wbc&@?%6+qd\cx{>~-XOG^]2#lSl. |'^񁣳޺<K>y]ethpy^~>|M>>ja0d~2V!KNδeAәyJNRSeuFY^X߯.\>ݦ׋H+ETgArlĺq"*#H|=!6 63Ӭ%2yW1N+#VDs]hlucZWgƓw1(uԷ2/W^T=%F{ Ћa)>V퍕#zGa aˋd2Xv4|,0U2 0 0Lu/aa.haaJ41 ?;AN/=ߞ"~F1*Ui.%4Ɉ  Ycaт:#oi4;#iAp Զ IDATIavSO7tVA_=wG- pvnP6s႖ae!aK4Uwj2 /?+ X6v\2 ma+ lTѣ]e6tzi@otwڼyh=t0 =6= (aZ9ϟ |6TJZ #E܉3;F;C&P-܈@#dxcf(԰A XuAoxQo 'mJʾVh0Թ ƿ*ϩ9L,!h*Oe3eHL>v/u o p$ pzY8|]l`W; BW~ƌ!f) 39\ 5CM9l#sM(-Hs B^wG!s0gd y,5MwHNiLHPoۿPX4iU͹@#gʦ8o+/6c ˎuhHU7c" 4y(-8xr9tijJ։3g.Qԣk1Gv"R5q*m݈|9DZ33N6P·<H./N>I#:?ɹaF-e`Ptmf$ =V%' c0ƇxFULJHRtlgk"5y'qt3tlc 5Ѵ{翍 n3H;X%ovP)mQ"$NԹXcH?\<ѣ{ d]OUh.bXmdXt&Y}oL~ lfHm+ c6OXpۚ ME2)9*CJ{|ʖs3G=Q,~B&9[WFu1dl LϔΌğ\0 _rK)k:E5~L%WF~ U^E΃8@psQ37ꨏbK6#3vnQa 1^>JŨW8(- 2?"a.Sgq; *Eyl$նKՙQ'kd8Ѩ5"rS"*_":3'әQ;TZIux}S?KBq1j N m_ؤpIOjc.ZaG+hoP?ႋ ۶e ߵXwmfm @L Z]X/aګ8:ikzȏ0._2 #,{!tfn8;:IRe0v*Tz&"\ǣ Vhna>+C>ve.UgRյw 9YX;q~;Kg"7c;jYLvxg?`Z n a>d8DLq9~#KP}am7 Z (`?;³|Xv8 AUnMpϣ+>pt[`'mСYkmz^yt-|̪;H%,Z̡gD °pU2? Okd%H'Fy+2Ww[t`#:K2c&@?fc)q€_yapLS|b4e37txwđqnV 4uf&rRVy“":3C$Abaa-0 0 pA0 0 0\2 0 0  0 0  0 0 -0 0 pA0 0 0\2 0 0\2 0 0  0 0 X 0 0Lu2 0 0\2 0 0 !{b4ÓPpywo߆=_"U] ':o%ÊWBic-40S⡿7`+,zʪA^U^MmkE @7WS~t]SLe WJX ?%y2%܇͝G@F䫿+g٤f9V},ͻi{bUd8^{!O#1:{rntWpʞ0Z.pᄑ߸x1{= H$ɣJhs7-~TDgI|fĥozQL2dǮtmQ(7pt23kL_􏓜"cFpG?;=]g̬KyM}n7gPX=nV&61?Kgӑu\=kMft+Ojo_Fq{.cY2cd<9א:$])T,V)KMسw3qTo$[6,#SB <1}pvԡ(PEwɵLp>#Gw@o 63_U՜ܕpߋ=I!cgNUGUw@\ۃ43lq[Ή\@k#8әF A&m8;@UDMw5hԽ$.G(ey? J%s2J" >NzTkUiAsO\=`ѷj63'O3h7&aSRF359T[D"<ʄ ڭ$Ӈt;wR_Oٰx:T)ٶ)ati?s~a!?fR o;9GD[c.'~wG4ekat=Gґ]j+pvmKAscRvD+l<]Kzu(*6SP1\&#ue 1'΢C3Q?Ɉ?);7LEϷruk/ƧPl)Zm$0~n]KESf2yΕq,dr 9 j[\ɞZp貂T:7/e9;I :lT}taZX6ǵJB[}f3MXH#ci[4~ڣ\3gjr:Z壿V"H$177/&͔wt+`iOW !w%C`J%å/5WB_/r{5\pu!R~ C ɂoRns)\0~;P^[TvoN8EHF&0B*vͼx&W24LLMN )e+yuWӴq?؃|^ 4Zæ<аn;l[ܠOΪ'xW9UuأBlݾ[*-adHG7I @wjOK:渶lҸӓU_0~%7&+̬4J$Z֐~>gn:,-(ZE1qjeV\qBrzOgy{"'MIkfVM)H5toE xvY4WM=)@?g/m'18¿fz-8$NZͅc;7z6HtWTm9\|1d'3=_#ϒ\/ɩ{ƪ(:5Ff싍!eCxp,չ$ sHCK?1aA'>9mU!e;`X2˕ߛ_gjrZJ$Q?4 ʉ{zƣ9/xyI[Ews\>̴$nٳuvx㞺s$!>f>x%g.PTtQUIOg*`ceaYfe*r]O)/} '(,ĥc)S82{= . (>Q0_dF6Qսxx7'I~QgeT;c8W`ANuU~Apd`̉ā4pPc"=m[񀕪⾥h ֚B3>9ՒOK~ŷj6+äqSf4{تڧUTo%D(Whm NKU7[tдNb2?SsѴzsXs+OMt{Skl4A,ؘA*Tf{RZ4Oh=uncSm)_&bWPW?(;ַeLm;h$5Szwf,ZW?\:v=EMwM}\ƱrJGA}p95x" bV`Qךymo80+E66xwߢ)Tq<'ܪLv_8xd?WM!,.nI[k! @# w- }>];*1aF6ǵ],ߪg +=Öien]]:LMNV1DHPv3_"H$D"yJ$D"HdB+H$D"ȄV"H$D" D"H$uB+'~:٦Qu ɂk J7vDƮ)(=ON;ͣVąt ˖‡n}_'ːŢ^ ܇e{(bZ} 0rxrc19/ \~}ƀ((ꌋmY^:Mç?'Knǭtxc 8_,֦1`C/ؙɔ>%))ǔ_Q0&"(Ǡ4`׊oB Q}Řע}uɮ ݂'JxH$ɿ?5Y3$ r]89KÇqauw@Qtkk"i=Y֑ƴo$y8V+#2V)~Srk١71 `eϻo|\yy +8R^cǼ&6}B'W|UDOlMg~usĕL ?7;C<ĹSiKjz}krJ3J:94F"Z[Y.D\vp.Yޠ6˦LdȚ<(ėSv6WPM1?d>P\ 8_~f4s+Nqqχ>C|ir^4v~Ƭ Bbwx6q{hRv>N`PnӔ<ǟoI\LckLJ D<7>uӌT) ~4R>'Դbp'oСwoĜqzvg>ȉg?WE@\΂: 43mI⼯Cq78d(?OSILF ~OI梥|F{VM[cWMxfł w84[^1!.%Zg`] }G'<([5R tR\+2!:x43ۧҦE qKoXG2شeH]ʨ?Nud`2}$(:Q qdEv/ޕdh0n. iݸ &">/MhEǖtjǚ W̙]Rq>#Pt88T G׽$k]06:jRYvr3gF;qˆ R,IUm捓3Uf"AՉscR-vd:hbgYŅ}}O;Zў^js M?ƦI=傽&cIMtk1c3V4 YfuZ~xoZLI($/e}DŽ|2|;yG5UF,`bs61 m%jN_>n'; ng|-􊂮xb7Jer㜳TJƮj*b1?}(S2z%yt?1?sfts+P*+&DIrBhiK)OZZN{ eZ?-fЈ&< bIik2t7/E1K3?Ͷ\]eysz8) ?ߏvpТDFW`PVxVF%*VJLf@[=VoN|uLjȄֺ|/#5γ Ɲ+.yf2K(F /{q;KZ W]*N8qSSE}t9vfp$ k<eN6D˦DŁ24q.?qTB⃰mEM㵅LN&E0m0[3K4 f-wc'ْt3+Whˆa8yٴr4:MXwwWh÷7`l)eMzzъ~=p5iI޾x%9g Rr/P~FHi1 D IDATAޗ=VMbײN=K ɯ kƅ#d 5iP0bŗW4rk4;)n<5cw/O}9Cj<~Z?ѭ0__a|,bPrޖO}α<ݨr󎊏Z-hhZhhLL* huưt$o7=/!<Ąڦpv4.$!&TĻa6F#+#KvݵuHR|9VI4<Γ}5?ZY7LZUS"~ޙN^5o L#3x1޵¡JstCƽ/$la( -`֎tӶ3{[[y)@hM.S\_ӻq~QWE:V<$7?P,Ms(NP,gr8>9U|ZO[vbm:-P?ɕ v]ɆߺHn. V;]}tbɊ~/_u˯$4ނ *9`Ɲ m>*bC ~cs\4 ?Ee!Ȅ 2ٲ&:SҊFg:o"<6tO[-;>&r=][Cvz~4pu@ݵ{і/R\C>ӋY&N}5ř>h 6evv-pTWejx+)N`joM=47f)Yg,\/|l?'PFS'CEdaM&0Q޵ Dfk?nz *xu`06ik cWjO5ߪik쪶/OƼJS`Mb&Ѷ;+~p Df^}dzL,~ Nވ0ix-joQw:5}鵮._Mm+'U:=Ӥדg`rVlŒ< Jv -}α8S=uu3S|qKyt|CaHGWˇ<׶:sI((?\i~,NSHu#0/tQTs%ou|-?Wak Y@ؙ(H$D"y {Fՠ;$t,bhxiyog(ws+B ſx cв(DEj:D{̍ffG"zFᥩhSF|E.dpG~ĊA[.p2tXȵ+}TϮw3*R#hL7<-8tz C|IR-S}Т=mg3mHÐS"H$G(:'f[MdP\PotÇqauw@QnɵM Oj4ofr 9 Mܴ,HA?Y2}u!gT;ֈk:?g˭I^A W2\FњJNxdqҭ3]|[S&i"nLVw^Q9D^̋VFdD56[9G|j5h4}ЦPA-vsL6eqGJ\I/lgѱ m?{/m{E"H$ЖUN6||!L^O`ɓxh nslda/OC"N|KyսiiȍY/qpdzl?7?Qt_ s-;ڑGÉ$q/9~_;dۿq{&s1SqÇ;y{&ck ɤyV] ~OI3rԁ'>ޅޖКIά_g5yq}; 08{[TŋD"HdB{dX"MzR{M&ƒ~ vEuxcydL'$pV\vr3o]Rq>XEǖtjǚ WoN4 B?XoϠ]06:v9S K{]Pd޺h$tVT3V!0> N ?ӭztŊW{++` Oܲfꏢ "2;%' + {g/Ѡ'bMĵ_^݅C˲Z"B[- xK(T[59M&>Bo"G9GxQϔTj)&6g "PwK7@8gk=QkSGjD"X"n#'+-׏I<^d,Y'iD"H$ȴU"H$DZD"H$䟆\H$D"ȄV"H$D"y,Z?ɖH$D"ZD"H$D&D"H$Lh%D"H$J$D"HdB+H$D"ȄV"H$D" D"H$D"ZD"H$Lh%D"H$J$D"H$E!$D"H$T D"H$D&D"H$cЊDN>'NAQyri;7C`I cg\5+X5& c^NAhлШe3]=8+M{8r>Xor =^|}NIPy rC Eӡ4|sb.݊뢳kxKm< :4G-/WM&wN.fH$2}sz""tt?"8Y>i2fG3m#džbK[k<{ d\Aߌ)< e1Q߾oCx>t-=s@uI]۶Ww3 E< OȍffG"zFᥩ~6iL9,cXhdZԣ'=_L"&3Z{ƽܚܸ_ɀrmFk*9;4IT:S8n,HjYyR:o {(mH Fvo&-q!4K|{[WR"'W|h[ wjt~-ݽ;=Y֑hoŕL ?7;-VMܴڴ`6o.bx3TKwHU|-1r\ߵ՝i*2[g癟`ZZLXck; Ycǹ.,\sߵZӖhJ 9g*Uj:cՠ3.B/8OJ(R]ŮqSft0?Vw27YS\o&+s8y^mˑlx:%.3{C=.81Wh[{FNĮ|49j.捉bAۉ>ZD"qC,xL1ڋjDnj1rw1'T\Bwq>-2rD̄f«BnP&@l}hSՋO7 !̷E[Df/#* Z-nq"ѷnO1}%N>Zk8\$}P1qkL*k,GG| ”PVh8]Tͨrhrc &ep\͙PH^3L)V V,vo 3m\l nɿȁȈbͶ,傢qgl^;65nPd1/0z>Q{i(Cw0صӍ3T9t/BQlWNw;Eqxm;.2q}Q/ „0g3s+?aoWܪV|\rB_oNS."ƣtJqVqA1tA~B]-?؎xqOqVLLՂFVEƄ(n<5cw/O}9C!, Ɇh48P&fe!=L OyR-϶{Oz| EJhp o@Vt3 TѰ)?_EC ?8K0ךx;ƨsde1wɮ;W vz~!Գ?ܗ> `;3I0+G;C^nS}JstCƽ/$r{G5.blmCHٵ6`ߋEגK;{27elLu3f8۾`ħ搗y1mva$.g.TEez70bwn(kH$6-kbک#>%Rkkt&cnN^#ݗ^Ք~x(X.CIzw?d`O^O^]q+~ږJ E,RhI, Lņs7Sƒa ZJmaGգVϏF}n[sꠠyohm"P匶x12^)2ntz)/3U?uMC#y `F.3̟CSESz"Yj\๷Zwd |Mz`Cx3>SQ/=k1gh?ńS/ *6ٞE{X ޽`Z_g߄c\щM:S%5-n= ,ˢ6.5S=ǒEnk薴۶cĵ-ljE{cDJP]^k|41oڏy0e1K:`„~3ʻVᙈL:e͒NOU\~zH$k`qLk\?W2gag=YӉ$c398}HطhFYl@k%&>%bB]LK0K~S"Fx !p~\R&GCȗ) <4T;g4W*cV"H$D"ݮJ$D"H$2H$D"HVO&tM0D"H$`B+H$D"ȄV"H$D" D"H$D"ZD"H$Lh%D"H$J$D"H$2H$D"HdB+H$D" D"H$D"ZD"H$!4D"H$䟊\H$D"ȄV"H$D" 9oƒbz d1O0w< IUOs<9y 6uH$>ź3b8K2NVE7<͓5 +g٤f9V},ͻ~=97O+hgQ8Ŕzm%ٺSjq9'^ݒj16PlV릮=|s5칏H$ɣKhs7-~TDgI|f 9uڟNa@ر==5AS;໒fs>q{Z#S(,ȱU##ݟ銋VYo8e$ecgP噾议P~ZG&,V4=@WťozQL2dǮtmQUɥi/{g,u4Y~Vbfg6߿4 8k'jMu7>MZL}̺5>%D(ZCy25ZV/ce2J}1`o3i*DpϏq=Y?3MѡdVAa8)$&jeW2v:%s1a(K#hq JyQУwpkBNzTk]\f\֯s",c!Ж访Sp@.wg@zu(FP>G7~_J$dXSE>5{`*,M̠z9;LW.U*Ez&ٻ8eKjfkʾlٰL}5fR#z;#|F&z.mZ>4jj5iáQd⬨Ȣj ꮚyŴ?͈-PMJTb 7p0&I8tuJOD"H]B{c2buC:mw vlX<rlB΀Tu9sROefoo I#w.՘p0dw-8tYPm*߽g"l.D-6|i~MB^a7v$]u $Y}hs&5*@߁F]#XɁ|yBo')ArsrR\o7q3c*GZ8pkNQ|*Wib|šl 2"9>H: cV r %Y3gk4\]OR);]0y̗H^RvD+l<]Kzuʨ]f)3<8X}V29sUdf|Zjv4ы40fpi[E׭=5H%&&dNziE2J$&|1 m)vt+ViM8xgbJ%å/WB_ĭ庩3h1~ 'WNUp6dRP`2 9M_)Q$gt{DK$t Jm;X,Ne- 4 %ߍ߀ t'eSoF4%g[疋rl\kv Yn4I3]!~U?l WzfTk{BpơC?>ד=ԢjV]Rfk4r@jkL%,mG:zs\H[ũVC4A<+~}PYљN-ɢf|j38q1f$ljv6&!־ Ш^L-vU!y-}PRӂ$DZCk>\ï/,-(ZE1qjeV\fNMѠbci搘߇~֝S18¿fz-R6jBߊhhzRQOpbNWE:nS-:66hơG($l"Uܜ+8m;؋i8=֖TTv̗T|T^MLnKĺbN"gzG%9dݼ,c¬+voڦN.; %S\ af4 Sj.o)߹/ې?vs:H$pTj߇ TNy\ν%C攻I1&9nq}/ ӣ3D5Lg v[8Ws0q@ r8ܜo):(oR-^N&$QXtK6S (n8^ ]$p9npRc"=m[ݱBiYNbƱ{qXVݜ'Ek!C" g.*}%hkx㞺s$!>ljej>RL?rS}Lq!cRF\N,1#5T(;{Lhͬ_c|˰JazkmOI$Qڌr}ݫDof1iĬ d~ʣi)`5s8W2㝟 ⧔h4+X1g+ 8bf jn^Uη T^_mdkx3-ޫM{ .^9+2!m&r,l ~\5 Z ozKrKYμʲ4~xNU[oF@S׬qRUPgKNlO*BT wd!iQM,^tma:f T%[ 6fmeqeꂩMUT|J=;ַeLm;h$6mcF<1Z(Rk͉<٬ *ثĄTtW35ag2 ­ u[KT]iq1*>sD"<!̗H$D"H?o%D"H$2H$D"HdB+H$D"ȄV"H$D:h?l(Q:dqŅt ˖ʬΕx>@S H$ׄ6v!|x/pz{14;Z!ޙEUsgUDD@QĽ\%-, ׯZU_iԲ,Y[VjFᮨ,j* ̜1w0{>\9{O\$-m@d/Ez?Äoy{/r|16D"< F6 g6\i3Iw{}{ l { <5_ҮN(Wws ~Vjs\,;sg%hT'gOjt|{)HYH'= U=8}w uWͷOC( **sϲzhM]wv1kϜ ԎSH{jPtՙzȢڞoޛ4&R3WUo~̉KbZ}dZ‘-pwRyQ6M5iIMt0|w&ps@Q4蜼s+iKXG>O8A+#)>_2/K, 7%/l%gtwYiL2J$KhM\޼Ė kOj᫾\7gE"ɏ;f3y!Ex k-BώrLol&`y}*LfǕLLaT[@[ߵd[lOO篮a4 #z1c;z¢]S,+4Sl`8|+I jjy8\xԴџRb}\^{sI "3m%=ŐЖg%tїFiP0by*) F!Z-hhZhhLL`DnHĭ=q&iTN_;y%3 2 xwxvߗX}02K$OhonF8oK$ ǦR(vd*yDүF9fܶ2iFH,Df9FͨaD_{hmς]҄.߱qdU|orF냩)܋0&Fqk,JE<%>Zq3yŸ,14ڑeʚ0risc=pG6'YV8aiSdgsWɗu8>ˡW"H$|BƯQ;ڡ=~hkt66fqq#jt2PB6 xh{)\ً u(k{2q+M C{m>O*/bN}FG:ݟp97E/qMUOeKi=c]J.8"ِS1uh-H[&3e?5(0gYRoa>ɢ m;zC^#WIKcͦ襾!%ieo; ǰ'pQuCV>~*bz%o Aн >^>z|CVTե]<U&>猢ӊ | !.L#!H$DR mqɉVV t'V'|ƗAN O0tA҈w[S1rdJ-y,LWªåLM%>-KY}hP/ @5((L-l)Å(۩6:4ɶStG *jͶp}Ыny\\} fsG}*7W2S=[qeNS+WrJ$DZ]w8U,|/;QJK瓩RZ}xZ:uŦ͉jKӹ(9?! :d94ͨxX>ԙe"r3bp=)٘LYKodng/՘}k0/~;X0`yiW.#g?i7:nS=[ٌj*V4H$A%FjbE`8ۏ}_Epx֞K37 SNuI,ꄢmqջ۰s(x9KKjY\LppYO(rfqlQ!\pҎbob$L7f8FOIS0{d6:oN[=) 4G#O=T¬YiYZн?f8Or8{}s<ȰMμ;AE}U.L]2m{(h=\Q,i<yaH<5`'99&P\(CՠhjtTR&Z{:UR)gD" m~ZGx]89#k#a"VZe])=+N~@WxrRRGԣZ$]8רBR 5r.|7}Ycܢ`$lGhX{@L#vw,X츒)O> ~YtG@WY&Y7$]&َp4tTOg7*5£Ū~9첇jpl?/R 8T|EvL9?uvub[aS(WlS\i)H$?[O ۦ;zgoO%9.go41~`LJ6 1K "3m%=i-kT}%TeU Q3`,gDnZ0_5g7yf8Cx޸МMv atb' p)UYǙ ×3s^bDgHlMbIMg=箟cMLD}[yviƌ\vl8P)m-xcO$QeneUX4C^Yua=ڳo?$b~*Zű!ӎmӲ,)H$C n>Հ h?+<~ [+{,L+fq|j.M!LחET3Q4֍ڲ 5$JS?q-XEIW%L ]q-,ԏ盗t2MXÑL2SYIWmJzO`8Ip'ph,Иმr6f,$k+P1Z~ʡSi|BmD>8V橾p޵cTkϮrE tZ<5FȉzZT:%D"yhZaM4ЃYd\(D|v p9f.chGZ1)kNpPt@3Pf(Grr r:4hN#+Y'{X*ު-7m`wC ǦR(vy[cV[-m\v:4YWٿn+֢BߪșCF}ɷJg胃֨ש @{[r?;U;#@;o~+.Ay9ڳ`c6+9%D">-TY"("{QQE,mw+5\Ȯ|"^kDWSX#(~~O :E( I{/"Yt#^QNeDw E9o#; W!aʨ-À !roԫ,Fn"kZ {9LTtv +Nܳf1?":E::sG$e{@ Dwc"GN.*vD^B*Be"VUάbgDw z'%-)IYS89{w.q܄|X|}TirVz/WrJ$DbZӈ[[*WV$J3 IDAT.o9ίyWiD"H$;ȴU"H$DHShV"H$D"yԐ+D"H$J$D"H$EB+Ncsl2qD"H$G1H$D"HdB+H$D"ȄV"H$D" D"H$D&D"H$Lh%D"H$J$D"H$2H$D"ȄV"H$D" D"H$DRB(B! H$D"yT+D"H$J$D"H$EB+Ncsl2LZEVruLm>x JH$[0q~~7?aU9{{IvD"y8G#G4Q߂LU*bٴv(Y/6dKlu F {`絼91#j8܊$dM)=DׯBXFfq (J<>˘䘷Xg>;ʼn/ҺZ9\6s]o3g/i @I1X\9 yph2!u^cA_9ׁKOd"m-wetG *z Å(۩6:4mBY~ƌsOgǕP/H$ tpMk[֚#g ;9;LOh>ZQ>şB՝\YD *bflgbGF oL?1<GiX<-669t%đy }wY|^x8K|!YR^m⒑_T-rbztt0WuY4e;~KŻۺ A\^J&chҮ?oDZm[+$BHg`|  s;~Ƥ\xnHbp=)٘LYK_8=/ףߧ=~)=D" uodp&nş6tw!c"{v{{kj!^h]ldhv҃\(WgHIrt$=k5(L+awKbiW'EG o?怢h9y> V=ؔh5 ݖr#_mqջ۰s,֞Y9M$~NPL cyʷ }W'2ɢj3\\?AeqrF7N*N֤݄=|OnFѹh 3^mBh䃶AOX"}h*4ԇ&i'9b"MԝV&Ft";f `LHOKL%6dVM,=n,V\y r6mB௯⤸q~sںPyt4[6q}>ƀg*K.x=k4(z=ՙwu#]wQ2$ݑrE8'P]l?nD" )7o$e;Bb.|7}Yc]SGO篮a4E78 ,jvβb O9M a8y._sݔƊB'?jS"[ jl7Ik[l؇ό:$1H]˯] s)ȭ=]cm&[Ix:v._kyu~vWgw c3*Í#۔@Ph^psFuwDW?#E%w9W_}n !%W7?㝜#84HoE|-I4ϧ&KZuv]_yTfS/*2?JŀJh cAQd,[όK7ryn8ҷ2^:wـɷ'0lmi.5nTj9{(gUD"Z5)Do8ApriIFDmrr^FV5δv.C;4owڅ?ƵKIԪY9mw] JMA}_w4Kr{r߈~yG d9{9cVUF`yMHTRz0&'@4n\2z,xތkUAXxb:M<2܇o tEwOX[} #'!IкT\-B@PgCDOL`Jy'J"5Y݆ׅDߴvҼ_yTfS/ R&#ޫ)w}N^wfH%+i7o:f،y~#z]?ǚ.'4~)&9Dw~~D" sv^byOw'^ᗨ_H˟0Qkvej5=B<g*PS4Y]IdLZga*PL{V\6W'0]_BYSՂFVEƄd,%qrb֚\}IOXYdNj@U|VY:W4p?61?Z@g򥻫ƤKX%EqIg"}7{pv[Jex,Jy4_qJUo.^g:kp8?ksձ=ܸ%,ՋE$} ܔ1;dmJzO`8Ip'phl[7j:6d[{\Z9J$Z n4/=MگQͩd%quW]YQVj輨~c"at'ΟV% \݌>zf6E΅N^'_n'ۚϡ['Sht H?2e nP2cRtu= b.q?pQ3j謭W{`V>OL6IWߏl@*k}VH?fN[qG\ςΑ~ol1#B&D`ٿȺ}؟vR|K5Y aȐ>}&~/9_Tc7hۂd͋|)>=o04*SJz޽1ūq3JQlhmRYt`5і6.;Xu_UkQE!hB,wn@}X 9)i/2hS[D"ȄV4~A˗Z[#8GZP<^pr}w&jY1 \ZXՌf.zyFЇ9~[5hIcV9퓥h)hn[P^!v'{biی7K;4p+O^sXA[}y}X47czpMnޝ^x]uye`ޛ=~˱lNJCoVNEBAjN.~/V/c:nrz R lN+&1{|_EQ _P;M5+"RZ+X6#-?o5|@\ ꘸?AD"GPD4ǖ13$BV4_U"+JK9g>"}Lի+'D"ZD"H$ľV"H$D"yԐD"H$J$D"H$EB+Ncsl2yD"H$G1H$D"HdB+H$D"ȄV"H$D" D"H$D&D"H$Lh%D"H$J$D"H$2H$D"ȄV"H$D" D"H$DRB(B! H$D"yT+D"H$J$D"H$EB+Ncsl2L&9׃7qykn5[u>*՞:*(VQsRn6Vӯ4uAT}a+9$R:fJf~Gmy̎"?0.1>Ԙ.SzEω_5Jrr6JNҨQ˾~ˍW㆑#(XMa3Hg3 ڐ/ v< 1Dǘw>d!u Nb@,C}ǐDZP}jޖH$2HdKńDzP `cl~FQUH{jPtՙksR3{d6:oN+'RiFnCUG45y}AEԤ%5+uX-C`$A~EѠs"8|?G֒@kg#vuAxj.]P&׊3,&R3WUo~̉K{cfER*x/UO~SKjۨf lJeGkƑZ #6V'lR^,,6቉$,:m- l܆7W*6Ʋ{XUuXtd,n59Ns RK<rX3}?1]+UYl)DewEi*,%ZgZC~v;El*|Y!R0%/ʉ6n2 Vb׈/j?]ê+nW6{22Fd [ۻCⷱ5D;+ ~\!Q.ȴ<z ֋2\VXOH?#ZCIY-.fSf^t5v}S|\uYVyy}f_.Ҩ:!'1RwF6k=+fQŔRC{Ydds?5}O3X/DO[HKM:֞Mahew8-LVZ #vbZ.jw)I|O ]wX,y>D~sj_i~˖-Woo6>]$أ6æn ̿k1CCv]c\R̾?DcG}>.<}q+>p'ڞ+,9{9cVUF`yMHr^FVTS̮ z{A򎅶iJ 'Uv1x+4Ȩ؆:^J1:K֎M? ^4ևvsxٵTƻs_GyX`ՙO);soƠU)uڄu*)wUW5&yK袷d3)6YүǑb_|J#^[4mgZG|>LTqOKRdhb)XcaxwKZyQD6N?{O.ZgnV,9Ҝzf"[BY'rl/]"J7g!;ox*ȑk MӌYšsD-QCWvQ559uhxf  a‹h5ɍS͎\!$#˙;],^}fsL"zl+9}4E YC;LYs؀Р9dўT2ab][ЀYR_+,3~(xx=Ņ!MhBNj+//V:{ <;z1&}|UoIhЂ=6ݷWsLhK줠{SQN$qGd<vj?eKQI z|<ފ54MDղc(v3߭ DӯPzlEfj}w[Gsr: =ӸQeW5U9iQjt^&N8ѷA|:=WGu3'QU'^{GZPYևA(8uOIPSy0N nU y/ƖwKA?Ռf.z)G6]>p^"97E/qMȵ_,DDDV)F$wO džZy| 1T|BR 4ǖ1ʵO:-5H$%RĊ.>]C#6Ƀ#cwk>xLfKL}EɧxLf%I x2<<.)zsJ"H$D"y8 6D"H$J$D"H$EB+Ncsl2LB<[ꨠ(zZ:GiE-˿G,3U9NW"yT}*&FGѮJ'7TŖi]߻/rrml spj=hYY/6d?>!)>;^!Ph48Ѱ v^xzH|4xb;I-tfȔ8[0T%xJ(9ZDB0--EQׅ6_οy$ǼE8;NqۛYX"ål aC?g6s񢟶Ԛ%̕ K//P翻 &R5J?|tٿfe\.)ȄV"`"e{2\7gE"ɏ睖eN?˵ ů7$];͕i=qp=a$v^H`Q| {8Va2;dbCuռJO.<@jZ {`ϰsƉ}8L#(kj.|7}Yc}RmJ (4 Gx]89c^@y#-֞f7s՚֊r9q|UGQvϹJsNp W.q?}x''r 0w})_|og(o!ɒC }VbݢwWm-cޗ}^-\BQEMux1b\2M%gSPR]-Ϋn~S4wЖ Jyj۬׉6ջ.}Ճ@0>zq#-.ǡ97ٛQ@,G--jk2hx%~\iVN0ˇMA}_w4KrU3%ޯ7#;Z#{P&.3a98?D`Ws0gi-ٱu`־epFc(}OǸv) ĘOroshbpջmG8cAr^oDPߏArr^FV5hF4qPplʬrfRsXpҒzrhFֻO Cj;uLǹ Z0.=Y_=3ٿ3W((]dɿ1(m]HMY_RyتrR4㻪>XLEfuӽ)|DuЖTBsyJ'*gΜ1hUU!Z4ZZ-Zh4&LS@ q Loپ+Y::_2b O"_$`ʞ8 SalO<}-Wi"P4-aO ň1_{e裿EJ4K?wT}GCG,ɢ]q~ǧr$"t} ]岭:b۞7mI5pؗEz)QE Z Q;/;ƓkK/Yr,ctߋ dM-3UPc%R ߤ3>=8;w-%EY\2qDϫVs,As⃥{bM,/hmvTR|%Uztr且tWdu*6&^9dB yQD6N?{OXfŢ+{3!ͩpouϛtGF<OȵD& k,u.p"v>r;٢j\iFH,Df9Fͨ]0YGBb0G>ZMrTaOsL"z«6nFN=ma~FȑߝJF.>`ʊ8vs7訖sh@,y)XtPkϡAsYɢ=d\U\^;{7#R0&J~ Ae ܶݍfqޘ ǦR(vdb\ZF7ey2s= ~8GFIY < g"ebEJ+&K2i߮YRTr4',cůS-^CbW6w\-Hڻ>]-[=L%Ж8"mwl۩:Z@\_Bg' Ĝ6 u"3X̫]Kzn33Qu:ݿ1\O㞭LO^V9;vQ,mg.J.1^^|4-^CY^;ߓ=1-VkܑSi ﱋ=G y Fdn :P[PYևA(8uOgf4s\/ؠZ{ʃtjwO[ܬ8ߑی7K;4p+O^sѐƯQ;ڡ=~QJ[#4RA,n1,-f0dLXj>X >_Z5:m/t9 TuW,~So<<(8:ehe +^G?t;]`yL+88!y1dN, Jˁ[vbb_rI]D` >#=o8G'M`#CYR&|'}dsop rvZ|đ=?*#~d D"H$D&I$D"H$2H$D"HVdR_ *g#!^h][#h{p kI[8DB:=mơ&3ETto5>bq}?pSM&|<q @>y&]lY)6?wnAYwC1V⮭{VԨ\_ 7O Todp&nş67пG=Oy*m]bY\߾bYf?)Sams ̢[USjIFo+#tqWmj:(ŞoeBp Z˫P\;cIp|WdEº-Ss`BN1EsV_ɅHMKaϻwcW'B}nJcEϊDDe!5T[l؇ό:tOUG̊.6$כqqJ=(K=RZ6u"a dYTM̱Ӵz7hBgJߡx.1]J®i<+0w,tZ*VbPƍ45¶=ٛ}t{ov"Č1b"F{VUTТtTUQjbAD GXId{$u#Juz>y3p%焔O2q FŹL3FlspԈg FT1ūuGkt#[ͺ<>}sN?5[\ʏ>'euft̹Q+.ؼ>q6fE/k0ldyX S +W&1`d@i+!ww :?`T^{ ?xӁi{tlIwfLgFƭ J|Is}YHTh6>Rq+ˍbSF!q{,̱U:XylZǂ|/2xd#J0Y#25O|$ c0K{w+tNTL73lE|v*mrɬY櫋fwHmn#l^^=:Y{1r19<)F37A5*6)(V3ݰlti7ɝ٪R>ʯ>:ńɜHzFNj߃vj 'ýez.q><= hr *_;‘xf\Y!ǻfzO?"!?N/p+>|enǞ|FPj dҘ-i=ܫSEjb0;. ΍Ak.-pI5'i w01`#tNG9as+Zcy.+ӺE Zq)H !")ga7S5v!Zst"f֯͏e\MDpҽ˦>ZƱh%=AE4 w'r_}BjI5Rr~ܝ@ʕ,\wf%xjvAZg|7?_I\T4P>oT|#l @rb$W)t4ߕ@JN_GR`Y1Vn3aojj9`_[1\?Ɨo.[\;ħق>z1+xQ{w{w%];2m$Gsh?<-8"kµ:XZ{1xsVNlL~xÍpgMY 4HhJ6>f6CjΛ^Ϯ0;Ir|Y7۸5LQ=7?'aF*8) g/zK s+\VvsxQo,bhTh3 ۀq`NWq8_OdUJ}5̨OMvhV87wNNxŝħY,\wTo>MĨx4M_ڧ^]DW{KC+[D0Yu=+QTkNWNhf [3_g`0|9~ӣjivEKuQĬp]G*^fG-HMǠ%-UGc ֱ}cNU.cSOacS:zW-IJ;m+w+J~˓X?#7ogٯm9ymZ7c/yO,N!;?yMls磢8j{ǗHLU.M͓g)4ZmЊ(E5|xbByG]!/ B!OB! !BX$jt&E^K}E.w}J]lvB>S23l_æii#ߕ*^EŃ>cGb Gסqw <&O]3<|ڡ(]t_|-uJYO!Va-}IgH9~Y}ȁxn3 _x.ߦlبsǛt!u%UU{_`s3mGͩQ"'N{1,ス6W.iǷr&? ᔃ)k5 ]mXZ{bV~ϗe*Ծ@M!rgiS8nTcl/#?ŷ#.q؍.3Wܟ48p٘rюZq b-ܠ !&W#h`? Iȕpm0z5Wzwʾ#ez9s?|g(WPVv~rbHڟ 붘$.4TȉϛfȎ?%b86ZGb崋XKhemM]fodRa)i&c1URJq j_1+lߗ>Sgf2oF^$$Ďs过O~X}W+.ZS1='W17FDr3 \#YW4U|qUMx]U乓1e%ח6py{:l=W,L]O!$= >MdWyDEGs8Xf VIWm:3x:hF珥{0ŰreF MUwY/J&q=lY_@5e,^5dC=ZZYv4Ɛ2 w(J̧u)l7g^swΡ4p%'c?JT}H0F\g<FG?FwSezE0<:P29ş5Ic&*)''̫wqqvޱ9Fz֮'BǛm۹\2j֟"l@wVUE ˞Sspox?"!?NcW+ZAGףGNgl ޲~(wy7>OЦ=,ޔ&+,(f֖iz1Fb27&'h8\-vJv$uSTKX55'i m͘\J%=.(:7̶m$1+B! c֯͏e\7oyz^_OWOeirȨLϡ8b689ZmϏV N-3L|ٛß$QS kiS-X4c 3$cw5=t#]ɼW߇;q[|/!uhOul7;+Y"o9Rk(țo#:;[X;_?upczv5YSVbm<2*S;.Y.s! 7?'aF*8) w;0ҿ-V5[&;nAjB=u-|a p<^]DW{KC+[D |߈fUszG4WI|Ǧqtr%Ky~Z=~ˇZ86i$ IDATwfn}|nC񒾼u7?sUҾP\:}6l%KFz#CܱG}Ntt4]O!GK5j:'8 ߂684e?+B!!i-]- !B< !BZ!B! B!EBFM'lRB!ILhB!V!BIhB!V!BHB+B!$B!BHB+B!$B!BZ!B!$B!!QTUU% B!I%3B!BZ!B!$}I8g<Ǵ~@BELq]y_t+yſ,!eB!8֘B/fSp<-Ӽ=sZr))ꏊAY2X>~O&1b ;C-giK;iYWOʞٱ}=3Q<%JZ8</M}:eZo\+ć]H[42a&p|T έQ=?dpL >MiK#vgFE2}>6pq}zFrt+.]ㅙJC)]ChM9yL}iϡ?8OeϯٹݞюVO6euQmV}tu7!!x=Hc>?.o~j/PyNы]{ZZKfv3]qQrj~0fhUOBG:ћ ګz] ٴUϭLt3`Pl1[n$N^ix8CJx6HGw,xx!I^sgDlNJ:/O(yle1LXs=ŚmO'n4螝]F{L $lJ^)D~ߘ&} \*Q*=^VDDc.ΥZɻ"SOQmy@;vw`\4Ƶ{*lQJ΅ ŻC'O^ku)|^ N45`R|pVfۭT`]w (b޵|>]@[CsZ'.kѤWTӈmQMewNU,> FRy;Qѫ'o%E!yBMTҟnr~S?A9Jְw&J􈢽W&Ďӣb.lhr,^DllUȈ6ظh 4[+n9̻ i_UpkeodWP=Ӳ\1b xʿ04x)D!T.$n> `zU{u/x kLʑ\8&bz}ik8?g)*?M'8KgNbn_`F5vU.e_O5-\ ,{L$%jM.c)eh.ӮxШf۴A `:zC uaOh&3JT)q#Sb\T\ }]߅ohz~J=rgef~4.;6P[SBGЦC~f3嫒0YZ~.)92LJҏ*`Pb^Dq {8yvbf9yDF)BOW2iؾiEK8`oH2Cq}&0%j]Gv~4iEs뛰|UvisH4i!CSjTk{VL}3d֤B[IױQF.ejUu{N躧YQOSh$[VvUV-MCgW>h<Z˴1*ѬQ-G412"G5HLk*zj㟥cDT ?Tw\77ciHvQ51@InQTB!xȃB!BZ!B!$B!BZ!B:Un6)Fы7ગ{<g8w AO飢kB5Sck׌/O>H&> [F'cQΟm3YR~ N̦zwO*9d֏O<WD}qw&Ky\t`ʖ1}?B!%lبsǛt-BF)!Mhg7׍vL׊{{ꮟo|C H_? 7 Ʋ=b]TM!rV/jp`~>u{&'Ҧjqܨ=6j:{taܸVTvEgSfʵqpڇ4C%3OrDc~c#qЎKy}bm&nd:xaס11,!QY}ǜLӧn9po0o"̘>>2sjL"̂tq|UK·ڸ95JW u/׀e\0| `_vтxZ xFgiu_xpRuI¡/KvBs^LF|֓#>bѶrB%f.mBtz]\5'w9FN|4:9d7P1='W17FDr$nBT̙_!?f`R-C-:!DL&OD}ޑO<5Ol2JM= x/K~2;z:ΪXoF[zԄj'!)2ܜ<<>RwJAu-떦DV|s<+f@%k/5w9" 3p&j&f4+ZOBȰdbڦ|uw(ܗb^tnp9r:ŏN ԟ9=9%Z5lxşB!6Uٸ8M;c؜ # |1`]*оS$^я+T{Q,"gbFk</@İ@R3ɿ!nO+nIlzcO<5)YSYo3y7yԢKdԖ4}ϟ|PZU+س#ߤ__ҧ?,c֯͏e\7q<\Gb\HNOYgXoOAsjzGړy9!]-xЖơ/tvCڔ>:`m{x)w%+gw#إg8[Elh:*AB!6Cܱ٥wVև.Ͽ4d 7}|V![Z0w~z(,í/m|(^җf]p.幇VA2[ x=zu]t/|rll|&qwЀK{#Mu_gIj=D&b`OCL6n a FD_@uנËyoRCR?ܟmC(wOZ}t‘6X}(&߱z I k?jb7w1rq*m8*Af<.Jnfy1᷊f<̪Y\v:=`[Ӈ<ߦS.B!W hi [xF&c /y=͗1dԆzc_xz`&O]3;,Q2UnKTz%Ur^ǦeAcڮOzZ^!./XE=BG}ȁxn3 _xķ*5*r)OyljT)›NaoWЅ"L -;''3Co;:C.pFƤsQJ[*jf8ԭ]3RXZS2ld IѳbGUm[2) c^VZvxjY.z !*P N7go6&u7|T֋ %n:kd̀΅AkcYE"y3[?Or89` D$㷏_:wWI[\]g|sV Eiq(eqԞn`$g7׍vL׊{{ ,ٚѯ~%&gL_@g.׊ʮlj^Og<ϬY#i^.ѳU%d} x*s5зn JeHF Fla3p>:Q➽t"W:>19ZYm׊V=]Ϣv9g~=x [O!_OhZ\U乓1L=ɼ͊{x2njNbYr LCU)6W^$$ų#W換ñG>cJĞ;ÁTg8EzzĄwOsi.ˑޢ`R.4o_@'JT8s?C g!&WwsB/bO,GVodi-`R Үa=d^"P J:‰һL_lgEJŞ%K^ޫ}1O|Cͬ`>OKiz"fZE=B!sJxNE=wJhJq W L2l$:7)3^=)cN\bX ImWSzeO%"2G"*0g+]NYa3Qeq.ӌbѯj<iGӱa$4eF9&`ijTFTIbFk<Uiǘ?UG.eCVkeЦ%o8?&Gx n}zgweULׯ%2dF8g,z0>&6$¶J%bۀQ&+,.֖)BVkn즺np9嫪O}NEuTUM[pkJZA-pDFN4~P;ynLELV} g+|V6 IDAṮTP`EEF5ULꮌ9'ky5*ӬڻjPZ}7jdref=^GEѩ^j ?nV]3v=iimB!eUZ hiۧ{32> #gfxٷTglbT9=m4c&#jb؎ΛG7ֶӣLJ\tC)|z |.OyYt_| 5Ԋ4/}UJX܋߲6hȞjQcbw6ċ02O؝mcp*MېߗӍ.=;n/0Zts 'vZ\H?V::|%P95Wu޹<|B}>s'W1gS)Shvy%p,IasL5V1 !SB^B `!9b$0|9,T= )/3+'34b1#*0];u0XbnQn~dn%:;<\fawF<),Xݒ}WXyiyk)% q:$l MJ)`[.=Q޴~ 5۪0iimbi//g׶%sΙ5J8Rg0?*ppӹ0hm,Kۣ(ߴ,AQ٣ Ƶ-:1} &")E$^g͙ڎ DCX{X(ؖn̠^u;7Ղ{(y [EX>pN[b5<3q~4Ş'ls7ĥXyAcv&]hB蘐P2v@RJpX'D|q҄u =p3mGͩQ"'N{1, #?ŷ#.q؍\톝^bİB#q})]+ʱo q\ULlۅ{Ϫ\[{őN##mdTvzn~}g1nLTsNSlpquB)SyfI*%p)ߌ*p-!1䄮~; 9fD! 흤Z5J;MԞ+# "q|?&\4?"?7bu[Uszch`jM)3˩3S?jJ^y5 \?nN?3p&j&f4+ZOB웎by%eϯZNL\\8YW4U|q1I w~ftۓ%K[zȻ3w'\-S3(w˖5]uSw% yOK@4[Co\Ug?l SCf\!rJ:WûLAC&c1URJ&k/5w9" s?1S\sr`4˦/C0Q'YAk8ng51VnԈuK ,&I_H39ƛ6ĥr{\u!͇ҽd:s7oU7`V)&2B3^]gy7"su? 4׶}y*&?.я+T{Q,"g[?Kڷ{ċaXgƿOǜSGƞY&qsƫ<9UЙJg^swΡ4p%+`tVLbȜ$SsL(ظ5aVOY=~}uy~Z7K]hǓGL\[RU6^R=&dԮxcv_?z;s(3Ъ/"oF-f<5.3F0 zNJtɰѱl )wR])W͛rUR^xLza3Qeq.ӌ\)YSYo3y7yBm!ӨXhcS#օ:.=cVFn.oW^"K6h.乪Lbwl^lVm*&גHZBS2#6ɣ9Գz\j yyw*Z::w~Xw_ضD]C 0q2vFڭK(+\uX*YvRcܔ޳&UdÞxR/ajP0qthǢK8aqiS)/ \yg %a0'ȸV=hCGԥb|Xq)WI%PM3bmכ7]|}*5fD` ̧mJQ2w|ʘOwH. ۛyƟԋ;~iudݻq%w~/֊Z2 xC;N߹ [ɒ^ŭ/m|(^җf]p.| J`W;T?ܟmC(wO%UOo̫TٞX>ũfO$`G-HMǠ%UV(J~:)WTA2[ zKf.ϥI,̔8E?X=}uQ­66{T=Hi΋TJyey|=>ߚov-J/W2t|׃Jz'zTܨY7c}qk 6GV[Ա260£KoHDWg(vu9u!gwmPΟP*)ǰlZ<%;֧[?{/ 7"fxwd.LuRĨrzEƉu~Х K;o?{ZL_fd}GW2((:6.4;s961I5qlẁ#bkۀQ&@%.}:Uw>=fzU- jEǗL*%p,Eo{\@nd[11;iAXS,Sqz6 r!$}("UUQU%tztTU%T=LUM#pX 5/櫴Xw g7.>1X&lc tK*7IgH9~]932"&SK`v Aa6F*@݊)x_L2S#HvZov] (H`ł("QQo$6P4xMLnhPcnŘ`4H."Jb vP쀰;E@vfe~>syy)`/J` V`[!xq]NAW >6k].QwGf0un@h 5-r~605E!"95!C1kV<ۇ4WY"goփ8.]cdEǷu#b * 8ve鈛nJĕQYa\f S-ۊoiNFftpEEG%v"iވ Gh;kŏEB(x% * sDW~o+|?DǠ]')tL(Vt#׬quRW gh @fp+<Q'o`EeO yI?<(se<,u~sw9ʖ=0>N{L[IHk; ٟ7> ,ÄiP#T9ua]a .u]s(Rzb\^ Fҧq g-Ɨ,l`=q+Mxkn$nKBQՄ}+Yz h/9LjMpXeR@MhcRQK 3{H+f}`v/3\4Cv5^ X dI!K/xۋnDmT~Ul 8VfB#r8m[2(-b㮆ӜgEg ]/Pfmbdf[oeA> NJnDZϽpj}= bO1AQj}Aq5/ GNs*n}|"W9Iqn_wN`/4r~ xg~ WqW,]2 G 0G b ׸8Уd7س. Ґ6끺Uo9qwphҐ<#YF^e7 7~w{Mñ1-1u\Wv0)Y[0,Tp'q^S1y'c;B IZyϙ@n!Z⅒.Dmhry5sc O2p-#Ǿh_FhofWǡSѧRXv1$SRFV^h Wox;ݮw ycptvʬ%OC^\gAY9KxW>5 [829$&bGE %aĶ'uA%@uE?Birš.G*=1A?W$1g1$dž]'] [v+oPr9}>Vt9ߤBk/Ճ.-r' ?x\٣o *GTo(A[tv`(Cߐ7AV0>U*(+m g`*գa# ]Iʔ()m+nUHoӤK/t> P|#7d|GӸyCÚͲZ!XXjq9ܯ{V1i_58z>n݅, W I@cبi ;1 0+.}W\ _O.a+8I"BFЧ1bv0L] 6֦(ϿIke08k{#i33}\#NVExc+C|X"Ǖ@<0 ڿܘp!m~۴@saapT-ߏ63>>;棴<2vp3$~􅍝ui$V, KC6 _,tEp{w}:Un[kfA<)gDo 2D&->Ep1Aq0y Y"f!a5X?e_ZnCaZo0K {8A^[cd4x@Ķ+/>4݇=,|{wOcBjq]aqP9jcbi3aF'6~y|fu N.Bf{6,m Xh kv?6YqzA: hX7`t3g?՗Y -AANǦ[Nچk߅AE2AAQ  xz Zvrv/E1}a(X) l']KkjhO%S_ji:Fi۲,ď򆵉[[ &:WDm-)Qڮnm> cy:|sg ÓhSo*+þ9M>Կmkh٥myr|z}"V~وw  4(  AMe7'ܬ5^Es1fh;]$x\*=]K7 ;}lBh/SW; l e;4oĆ]ss4u~^Y"goփ8nTKA-Tr8榉GVfsv)8 unHX12jGթ,Tp:2 ¦qk,,[:ŬYAVBfoD|B_Dd1acdE[e5 Ĵh:+ ]HBsA4 엁qH)wh79v5;Zf|ձEfaEYRt[2-Y6N.%dm_f;.ocSFBǪ̫ozS1;vlG,^8ً+gi/}͂}0o{%s6KoSH>>=!-=xŭ3XǞYF'qXlisvXcD?ttEPg{5 zՃ R}W༆]Cbf7- xj:&W-5~% ƑK3,>XaUeY.RsmPa43+7dѴVhˏ 9މDjJd!y vFLG4dk@V^h Wox;ݮw yc,{Tf-}~ niL:I$ۏ$@>o`kr]όe Z#b!õ8~Z~PJV\EIEl[w SB0)ʯoRf :XU(2(>df, S\pSWRs'>/koSxQbGӸSq6X 0:3H㼆]6Fr8:ąC}lV_K̓B+/~'~(ߏՉG*x:#UAFgxyXV{ȀOL__Fb⡰4  . s=.fenBW$ o pקӣmMb|+0 aaQP|k 6W#l] >3d+'pciL~&,Z0S2H9%L|c1@+p^CxLML Ӛm Q@ 0.<(GB>/dQb'h (j*\A+a(GDmWLivY&U|=PjbrPYqUd5Ά3Sge6xc__/MKguAT>t+CѦ<.g`ۢCA Q߱ S;xMqAp@S.9?O٢w`sƖaVGVfsv)8NncdE[Q4V̸pkng1Fuj òB=Vu)H)VEVaq]=WuǕ٣/ڵtðs0б& @7biGi>֥YNFv %>(:)w)r cxB%U;אXa"y(f 2vxF ء1~&{N;L?i )[n#nbOY+k|0D ucLw<!TX~NJëozS1J6XEٍwð5,ghՁڑÊγ%z+d16i[w YieO,ad+cyRjަefmc˫&c?Jgr^߇X9c_tgK^c"vq ֱbKH#aeA,!ߗ w{Z2'IZls]Jڸv\Ʀxf wcX+kC|7's xq֋p>q^m>(A{}ׇ1YY76v}+kkPZy+`,=rF 4؇]{1-,wV"ҟaP^cSBnՋ.<ǮfG Ԍgs4xAhZ+,{Tf-}~ nˏXKޘ:[=|fQV^h Wox;ݮw „ak/͑4^t'Ov0ltO8µF̢eH%vP~yD;!jpesHL,ة0 9τ$c;BY(SJKǘ1 薃FtAf$"&5֏oFj@i+~(S=gPV%Tʊr}KA90x*[kJk |#Wr@&\.rddf, S\p7mTOz0 DMpWxCzj[q?]/t Ba͇kqfEcDbL0k5%&[КaqPyKgʛv?y َ'pl/lK#bPX&¹|D)3rJa ̔y&R~ %dhi 8,[Lt IA}>p6a|2Ib+{I-Vq} Oḿ+FO?@KNx"!n쇒fW'ԟxҋTۊW^ďa%baYA,cucL4x\֥;lZ*5"$igÂ^E4uԛ1 /Y:Mn&|ʟ! kv?6YqaJ@v /!m~|5ЊA. xH3Tg ^P1[9c譾TƃTDm    BKAAPAKAAe'aWR}aז#Ļg} Ua+ʞ٪b *kܪo$/_ɁTw|#,ď򆵉(5yDS,h93Kߤ!z+Qڮnm> nLݥؽ>Eo*+þ9Iyr|z}"Ѣdk$l2$ Z )GBwAY(Xi߮#/9!޶Pe^V.~aVWZa9 cp5vLh]c[l'pknïHtii+`>/RRo 7b0Sp\bdҟDԉ,ƨN`cqXQXd9ZⴻUӰRO2=|`7'ܬ}LFoݵy.xm\pɾ$d[AEP̚k%d&!m+_Dl+aֵDDt 9#PS떃A% 2?d WWj68FIM VB8Ve^}e|ЛԌ1=>Ʈa%|,tLMvݩg~ϬiYβuFv)y&k2qy5%ܭ2lk,F-Yq!V^^B;w` z[1d%l">.u&Ԧ׳1҃X]:u치eiDrkeyػ=-Kt+hӌ]tݸx79 [ry1}eۣݘhU|.f3|yɏ7Ux6o"Zu`v,)-s KUqy+`,=rfw}l[W2oN[ LHcEFbby.4 ŦnZ}<8El6,E/R&A41 -ǞhYKtW\ ȱ/m,ZQ&#%k ft×dv6kDr4 :Ǵ@XquЋ1t=`gDݱ8^.#HNǤw"ѹmB~}fu[sYMV2``[x`p4HC8$j[C,|ݡjmXFuԵ}P(6RA3zP۫py Щ])}$wdaN-bRsPqoH1bK 7XR6 2N -_2uY-\C#J܃6d}ׂc:mS ɠk<c5xA%VxuMpzS}O9"opϗm+p-*2NNe AW^g8Vm$E׆YcA R}AIǯoo}lz '}$*h@.ZakS_OߤB]5vh2c`V).]:dRf&pƼ/~'~(ߏՉGП ,,8wzҙ64aǤK/t> P|#7dlt]v?~'n~Bvh"O.韇5eO 9@b\xe}F ]Iʔ()m+nUǗְq#Ɗ-qP:rgHm>(ƐOܗ7* DkE?}'>ID^^h#7p$*hT aqPËYMb|+n|7 aaO+v):a[}1-{=_?.٭53 s_"H7"IV/xbˈp" %O$)O>Ep1Aq0y"\6 _,tEp{w}:Uڤ3梃+·O^'Ok}YG̺US].h|?f4+|ImSB/"C 0?a8cEjư_cA4|Tw mN^}·w2oDcUgEH }wφhX+R^sw -A! N ~z LS~X*Oi&]d[ B*Vh  A AAAA( Zvrv/EΎ,ď򆵉L3g ?[rxԧagK[Q㳿'%߭m٪b ""`AS^w( ct_U8Ɵ)}[VsN3R7aMia(GDmW7yMؗL 饡q ;ف(hsQ>5W~S1gMy8\X)E5G>GDAij\KA-Tr8=/+^0wtv"I(H)W<,ƨN`cqXQhObdƅ]ss4ucdE[ b6v"iވM-r~605E!"9(ʬ0~s.32uXuYa̤>ylK~?0q+Ԇ]Зt.8N1wy Z ?{sXiwf ?ATIm1hAF"鈛ne[W gh @fp+1=rT 'OqJwVGKKsX)}^{,3>!B@j܊q jiVݧ`]v(&_e_@bty3y!Z8GaU /X5Ngg}9x Aozz SWxhf?gVZgc:buus1>ܲg6U~T`[ر{9ld/CƳA^ԲˮS'٦ XDl֎V\t%Ee.;XaɅ,ad+>[6gAa54 {$"qNyB2h/}͂}0o{%sQ=gS6o"_巻˻J}IFR"]=ڍy]͎m,g:q#? y7D&#%k ft×dv6k(c;\h (&+ c0} -<0bz8e![cdho>Ws>h %{)t GpxL t}oLMOhֻ? '^[HNGJA_Fuԋj$c;BY a<= owN!/|L,gЋmOb8,BW L]fd^8dk`=8;_w@9ص BONėmTwǶr!!2>&tER'x>w:ٖоt: +.ܧ#2Q b9 vh2c`V).] SB0)ʯoR#PCTb DAAA4N袗     EAN.®(n_ӦC0xT~ֱi][N}lԀPW}O .?&ǟ:E{#+9p .o Ч6*ƌO (hEX?Qd' 4,EIfD콣EHyէ}Cee7ݠ8)Mկ/SA<5-AēABt_]A4V= 2+ߜLq5^͊vw֝Eq{cTVPY8,(/$3Wo0Ru3Lm1hƎvq߾c7'ܬ[gǩ9;V^aj7F SjRq?pjѱSėNDr S]W gh @fp+|2fpZ<"1B$$ÔBdgh3d>?^ )0YC /cdN3RZqy+`,=r@=M۰ȟW.E/RA*up5 zjmlvccWji#: Aozz>' BwN#غ;Nj7f~fzV} ,>XaU/ 85Y6N.%dm_f;.ocSF@}kEfaEYRt[OfvLM1?ӑ~2̾eiXǁ4V|elߜ,X)@s}ЕYӲK˂?g%zZ~Y{ΒԮO!Ml5!v~>ӓ9J`<#1trhry5Ze{:Be q2;7c_ۈY /bX:R~4 :Ǵ@Xq*?m8b;腓Bo-?CڣOw +GjIDs %8=m$y,{Tf-}~ nTO BI%~]~d?t+a"L9Zyy'\\wB)䍢φk@L1>1=2Ґq6bERXK2xlT01D>y;DMuL{;5F׍McI/Lf-"II @VwWB8* ʁ30VZTbYcha O,{)Ql7k,@|1C?#u 푃]M/Dd0hƩcdaN-bRsPqoH1F8 dZ_eG}4}udr!!2د94yˆmֽ5EÐq3f%aSY8tQ?yX :eClH_m3OԪOa i$h ,,8wJ!{*ON]fvh2c`V).] ހ6MB*7ұzCfAă{°~Q<~7N|Ɛʤ Ba͇kqf# KVS7P3qIA?[V_2aXq: 0}u]s7~W2*J/b--mFR纊>#0N"bܨtP+-qP:rk:`L9O)䟢[~ қH> ze jAD)3Hu(p\dqL@$@o2&]~8,܀6enBW$ o pקS6qx\֥鹮mN^}·wmkvk L9Ȝg"Rr0AY"f!a?&qaqP9'n?at ؟&¹|{KS\OlcQԾ3T2V gi_=pI ;?HX<"#1I/|205s GCIAgkX_MỵS?E}פ \_[W~qʞ ;sٰz5--$@+3 ~"5wzQh kv?6Yq ;_ڈ,H%$\b|q*f)JӋfd2:R\|M,Qof?>z/A421  hbAAA-AAA4\]KQ?`(Xeז#O6%LϸuDiZ~F,g5|F1MO%jsgS"刨j2']|?n>l7?eV|`bsxZd-+`KyC̬|_Uګ3ŰoOLRo6 n"2ɮ=vst^vZm 96|tX£[,Nh ^{zLzc1]*h h}p7a͏1*Utǒ4_F*ˈsrP}1vm ^sI tr{_(ۏ7U^ʜov~6p9cռ}: afG4,thv:{ A1]~th6X6 DK*vΐa>.ASPKA-Tr8榕W߳:]aYFawv"iވ Gh;k+WzVEVaq*_Qcd;85D<:]Z-O w}4G~NJ+L6]՟nt[oa/SgȌ?P硘5+JLC&=f{tKюhWT\/g=Z?e!h&gڎB?ߟ7> ,ÄiPFμ67}1+9%X2޵ qU="(/+VϥEP)O=[U@(<3k}Wb LlvȻHU0<{En6w:6\ᅎ+g y#3D=1- 5E h{w5<,>] ?3GPPb֗.ˏjULhÜwcĦ ~xU:Nw7Zƣ͜3xp=slN/A( D9Q~/>*P$ɠ _ip^n?֫,{|Bzov/3\4\ttA˼+ӅI #{_}k\cl{couCiH+58do{-໷7˓uO,q EבNm#8c33FgB2{4:cZrFGTT>>r{1!qe<\:- *K_8Rcl?ZZ`PpGܼ -i8a<:Ҿ70j~W;²?&E&ǞhYKt1d T]EP~y?sYU5ݺY~ɩN$:PV̧0뇗B/#ie3ظ=S}%aĶ'uABduE?20`+eu?zUy>cN?Bgu ɱapW1|GNm A~8{NFhs)O]N7M=gė#je,4)໚4d:.0hl <= owN!/|9K #A hk ?]pSe/ jCx\Y=n5xrfTBHr 'ԙXWUeaN-bRsPqoH1ƐA՟T]1,O?,Q)p!&jflL`aŹp_C/mtAH8l T# VܼobhpX. 2I2Ib+{өrZ0S2H9%L|c!0dQb'h (j*,e*@ \AzLB2 (\ZJna%baYDEᇈHLRa*Wj9>~wWQUW{j(|k`"Kb03ڟkF;ۃܶ=~S!K.sGH0/ q K ް#0X-k;ÿ.ĊC (9K #P6cmc<hp;sٰzJR05kEk4  B ~z LS~X*O  T[%h0EIp07! ATAADSv'  e'aWR   AAA-AAAPAKAATAATAAAAA-AAAPAKAAPAKAATAAD=1  h -AAA-AAA4\]KQ7AIv"9?5FY k̆ŝ:!޳{yug6FKq*B]Ua+ȬijZ6jz 3ŰoØ7-ǧ'b-JF¦1ivY&_Y]Mot4m]}Cee7gr,Fz#uc%I|:'APA[Hoj0Pli?+Ŷص&?c?% rM2\>>Jo|+gMeAMV̸pkn{cTVPY8,(_-ۉrG$ !W5vLh]}c;WJq~4e+E;&#/9!޶Pe^&7[oa8:3y.xm\}6vYNFlv)Cmĭ+E,[:ŬYAVBfۻ(waSHp1(Z*Vjǎ-ƩL2JS1=er\nt@H;J Q0a Xub둱4柂ҹ+7cd\'h)]E֗5;On,V֊]_NG|} [W6ѦD8Md,Nj(H 砉=D6?#ܾk:lWuGV8)׼W-e۴b~)5`3Ŀ-zQ)1$Ydۧ>R!!;V0J8v]hť3Eǀ"]gl+\'}+p-FoH,[q+%k<8k0;*ԟzc3E='6n&Tp_"Y1{_(ȿ EDSfdsFMwsC:1 g!q@g^,lA{S,)ZHZSm/vLV]m q';&+G}>(*m_];B2TQdΜx"7VYkE! 3yc-qmT8劽- 08?㱘6w-ȼy>"i:"pn3+KFOxЪ1>MxhGܺvz%⑐ np85H]m"X. {GZ \Aj8MDE\AQғ>3zޡ F)I0/&8XC|/Z+͏D6-@c~󓐕sӊ ;Eډ_en: O/OL(Ĕݰc(џ֭y|lkD|4.CG0-nڽqSVI'bѹҥ_VAK򓉥ƽ:S+9 :LċAMO{U󓈗X]B.ƔJʿ3B@/ Bno0M-_ |ݶڒĜ@h + Ĕ-f.Y O#  I_%ڒ?"i`SX,c9RcFJD΀{a' bC:o"{&)pO~l =|7!D,vđIDAT:LAoײxE~&׊] p$5Z[*)TR-uU8-~9X;{rp6 ,-ፏm-B/1X,>]!?&C".qS&!2=coY((!6KKسnrM-M撎 W+_m9f֩uc[uqCkcg'[7|M녍/3mE_x*-ұMpx2n<<NbTD؁BQkXLqZy@3_ ZcTd^WEzga_ ϪL,Mkr`6|&sPp3Z}=kmO"na0;ہke"7b,$}T>QH ;vg+D .ƉBKKAOٛTݜ X̏3RY'eR(&fo\S.Nz/q׬̬۪Ex/(8#d9A`/Y&4~y DAhu>=@eE~ۂ礷0_44r:cPOhLWu,8kvX7F՟Kse[11Ʊjd3\`~mz^Y-E-mD+4};OITHF ~u"Fj N/muj V"2Om莉G{cuH/qQtBKDDDDTXՉVE#.t :VL\_U$9}&~(:`9/۟% 'w?׊LDD}A[?#vLsL٫m>Er@o{\u˜|&w(ZVr'"bAKDTOo ϫ3;H̝mݡ; 0q |=TÜv.Bak+ ||OL¦ ۸هcLfp8y Xgַa;X>9-}L%!­?Xn3XE}\$شzeT s0(^ ŪJϑ4柂Κq}I Iy\gq?x砵v?EÅOѻ֚jjcqRYy?9/;s;D4V>lr6Tq~ƻ>(ޡÎK:b2w9o, W`<٤%ϝ~͸Kӈ.,\E'6n&WDXbLQAlh'<"<+}bZcoIȾ)Ok+|BCvaXq(KgEs劽- 0L,i<~=k1WDbI `T1S[Xl[B\ !khRPK̜X3Q/fxUWBX$|^K%&_^-BGn#G63Ahڜk亭]uҷǙZ)RfT뺰VLntE/2Wgľ+{c\ADTg<6ғ>3zޡ F)IYٰ#Ѥvĭk7Pr, #ZX \0|'芩GJ_i2#XL,6r9TAmvW|ۿ8S姶|~p0"__JiiYxnlyoؾ#ºCeҟpD=nK4kz˴YkrAdТQܼ4vM7? Y97Ϛ_+yXhͼM[K񈖈xɁU^{ ШnU*( u\7Qc4V`,ڋSz9T=EC:o"{&)pO?f`Y>=G8 ;JFa\3ڔIuT;sZu*P]rQ(p/v4섡RZfǢT*JJ(P``=KD,hΣ†k߫۰. .aϺ]v6)4`[$U 蝅ӷJ*. ┉~l6K7|Y~=ੴbjϬEwb! Cm@3Xذ%'p[5_[bhmd&/uo8ȗwCD,hӏgf?oG1!85.xh]<V){~<PHlE?fNl+f#C8Vzu9XXEވpsQKPD!EW;9@㇞gq@tYӳ TVCEبBlݦgҌX-E-mD+4};U㒃G9e49_?eK/[x/(8#d9A`/GVjm6ITxKE#~NC?ЋDDDDTU:%""""oxBKDDDD,hDA+Ң|A""""- Z"""""DDDDD,h- Z"""""DDDDD,h- Z""""" !+ Z"""":QЊhą@&$HP%"""+h<5$I~أ-6[ު??{&"0.A-_Rvu@#=Ur|Y7_,w82&XQB!`5kbE8; `"!!h,꾫pU/ǟah&(JĖ=VEܺ3O~&nztSqb zH}\$ش|Ɂ82JԒind 0 b 4:+SPvi@V|x7FdsL] pᰕ1hm VأxYPRbÁ4ƭl aѺWҶ4 INLE'a L}wDDDĂ.+\4y7ʮ8`藷CIa^X?C>3vOUDVIe#y.bsf4^x:4u)){P#?EIx/; 8.RKF;u¹X;/PMbtSVDDDĂxɁF \O°g~Ĩu ܰ,9] pGAZF.HѾG+(23ʒd\7#%~vAo:A߫47m$JMVr3D """bApqnbp ʯ˽4$' 9RV>)[!Mڝ@Ak!k3_FK Yk)XUYk\\L8k - O i.w7&Lg8}<!?&C"S?`6.xj$DF}lq-Ȗш"y;"  G!f.ًBbׇFm xMb֗4EîA墚m"noP[ YH89%|wLV{XVO]~<PHlEKA QW3"ڗ_j,}~o6?cmdP~O LTT0K50fb`6"""e+"-s"x$x1&,[^tBKDDDDTXՉVE#.t DDDDTO?+XrIENDB`synapse-1.100.0/docs/development/img/git/squash.png000066400000000000000000000717431455622526000222010ustar00rootroot00000000000000PNG  IHDR!bKGD pHYs  tIME " =tiTXtCommentCreated with GIMPd.e IDATx\TU ?TFq3-(sS%nX~45mC7tR*b+֪}$T"* Ġp@@05y{y{[R7 `!@ B@ DA B@ DA B@ DA B@ DA B@ DA B@ DA B@bDϢA-5niwɇFN_EC {fQTwKOk$R1:  $'13Ց/M4@BG.`I' LAp+{iӧv5 tݙ={ AD,%t$XH@ )>$ XKZ@QQh1S0 )v7`ހA\M  l$ $,ۥ F3 HL)f 6$!A" ܜ(ĨJp &0 v&fR 1SnZ Xd^m\mLsq nnE TAL@o`hQR3;}Ɗ깒rO22b t>a;|NS 3=~~*FNW)+]|_~| n/Ȁq_P@v,Bb?3-] qޞO&y055r?&|03vhE/sV_%eu>c3o"g/(+ȺٷNߪ›wyg 7^,:yruwK6gg4~0TfR *5׺/!`9qe%i<k}񰨡jm օF37|L7x2~1#"t=u%Υ?5@XGOd9K3(";F.Av֢*nN<0[1_כ󊴔:Q-./*,A]e%?s|7.!Ng1]4J(QLmMYfiBy+0+MM0Ov}>yiN=nOO{P]˓yl !T*ZJX`f_o߷l;jS~=EZC9-LÏ28I1IO^rO?N,4-*\n*t  &G>ǮxaLm'J\Eݟde˙x81S⺙!>`FYЃBRN}́I,C2|.=.ݱRavs{j UMWP3F%d7_׷!s50$Re0+< boRvNs< 25dSu>Ae !JkW+RJA֐RTPo(~Ŀ{ !,}_pd`'_獊ǏFh'5Y"lr^8t煇>fXoțs?Č=y0ȏyձ;[Г|SW$*}k'oO Sk>iVC=e^я*s;~mceWrt:Q4̚ipii*t]Z|G> PɽH*]Z7{t K>]pY=iIIHo{,9ePU O|RBWK[ފ/ayvSeŲ 9VΖz ses ߫lJsZO ]p*[IFW *\"ϷW K11puarFhl<)7]ӨJb^)l9i_Yjmy ocY1Iqk XvX=NfOXww`7#:<_8c8/ҏh qnΌ䣔G<±8D!/ eYEECh/GZ؝@Z84K2/U cK~#zRNg;pn!o+#@P@g;5ý#I7{ ]JL:165|ŵSkqx8I4PUY:1\f‡uwrGl-ǛUùKf,f$O ÝZ.(XN(IɆm.L㾶94o mc԰Oօ/}uYޝosE5si͞JstN6 w3ut⪫ +9x\хea 0ɉzq|vlir,.𥌳'5>~+f ƫʺ1k0OWdqlae8LlC&SWL#`;+Gcܖrzdr,uY^Nn߈Y9BAN}% }3Y|W)PdaHJnJJտu@g ّiNz=.Kq5Prq{t˾_ #z13w{% @эTEchSC0(Syo<\$tօDfo˗,s. H$%vb߉R+|=-.o{ _3cYJ;SʭЫξ.|9b>*b!vs m>"3g266,G,x(Ȋo8ȞƙϒJQή] @օU3똑|z m>ՍN8̞S1K'x'Pz{5e t#nc>{Ԕ1$uvŁ>eKnc?wC9˱-R9N`b6PR/kf~;{ pdDg]1{ EK<;;Oc?vrrveZLž>Pys ^@vfsS7Oϓiky!=synl~2 % Nd/]ԁEw |>S[|ˤ|}m)RrU+fœo1R-cC>瓞s̭, n~xH('?X柣^aЯ)h$Eueh"@ 5Z'ShbS3=ۋ,@pBGm$f BA" "b& mt&AzAzɢJjxcY@ xm{Biܒ&dA ܗ`y OjMdt@ozWJǏOmW@ /÷8J` ^,$FLH$Q, z Je%}ŕ$ Ξ-  ,,,XX`¶-m}q?Ң;λwS%Gyj9/?y&(B}ҽKf^z7f.Fhu|,]iw ,ct2/\B'GSstV-^ͷocҪLV.XʪrtpA&m+x`^I*{WT~[ҋ3w]!~竭Y6n,R5,.{$/VДaM?-O?L)iYO'4x{al,T釩pxIHڸ褮MAIȘHzbfQqb+RsL ('0m/$fsJA"0ظ|.G.Qqq$b?LCιzD@)h2ITm|dF C$&XritlٚO%Y0TEH=qV֍Qӈ,(b#|:_K֢4JϗyQ*mE p/ Ej2h4:߳8o\DT!S~0U9%<-26XO~A9@BJ ۘ3c[SJ sC_#{X^ș"u67z8C*l[8t(_C-wCթ(zϔ][|,imy5VPSDs92È88zdx/S&w2?FQhoFo@Ȍ ./7^-7k@pO^=ᬚbD]nkq@Loc2ٵzfRNgl< `w1洞ޥ8&I%2g_)=}!'ss:gn ]zM']>LH &I^obƐi,Z}3AhrL&*65 Q IDATђ~"Z^h߰8ʌsMi>ߜR]LN cx!T:ܽ( 9YgdNpV;<@OzvEsb';2r(]U8ĩZ=~6c&1n'[W7mϼ37솻 #iI_3.cZXχ^ W8O) E1^Rqdyw|ZKzOGߧSmxȔ9;Z/Wc#Q 䥡^.f~]*9ac "j*_6&⥡8*9Y^RXO\L8!=9s04nLElS+IKasQO>k,B yhd^ z1=o%ẶŽ:2{TyI}tPIVzR'*rT̩X?uB9u3{dHbH`IőϫG@=UY} ( T5}c4ƞǦ=EpQ 2VA @ f @  Vɧ5k zWNJ%> gplz,${^^tI\E]GR#@ Q@ OPQIG5M%@+_]0iҺTLbڅzb_e­漚"=^xP&ưH{7 Ұ71wz!c>oMekJRՍ]_yKRͅ-{B,+OܢXMGNjsou{n5keJD{elUew#.3Y3n_UO):tSgd0)Pmk'#d"d_"<:CՃk(ɹaa.-(_tBn!u{8 zROjRad5e*e"*؉H8Fo]%J4Xj\gpw~c&iW׊#ħTS8^ub=1$ Ñ $/XFf\#zrq eD.Wwq*h BM~o9 =G5c+N\ ݘZ9[L֭K%K8}m5ݶkY9$!6zV&dl~)3F{^HCVqB@.gGG/0j"9"M&keʛZĘJ6~6 c_gq4]9IQPl L u%t* JJU+$/"1vғ6˾O,"- 4Ƒt+X.ەJE L7txOfa<۳/8}baܛJTܛ$,}idoنW &~*Ěk o4;R+E? T4M{aܛL{m"2K*~ Ҵ-3mO^!:~ k$66͗U`,c|r42jrNfQBߛ1T^IZIotqR6mPu[tO|ip~Tɮu[<ĥ"G4jH̐'j^FOa'd<"G{Epg */&/>9Ug {3<C4ƠXS#So lxzr&WتÌ<ȼ醻 Ur_'dF0 ]OpIw2`Վ"04:ɨX_YOFD>ua6 uEo:#sv :ݍ|VFMAS78fK(P9MN\=5OS p-H}DC|{@F׼b-dzPTaa}Ct=C!U3Rx'/WB(䐣'*Qc^9,U9gVevAZ 0̐1%)X'ƘTxGS8ZŭY?z8|;EpgEZ]=}z{bɢ?ߋWS8&Ncc6vRZ xS^.yi ,#dY'SIHI'2~: VNSOFʉO`TA9eT I mp<,V.N&  Չ7V,C`[ݼZ{t",M%>crNdhk[yuiDNfWd[kp"*mֵҭgWjkuv5+]+dwz%AvEHSNIK=q菏&FC]VS9KA0;_<̮{nk2)uz@ox†#2i%:Ebveo,f7X~vkk'[p+U<:fT]li!iSP#u,r`¤a<,oHPx4%)v\l1lCpMey9^2II }ol`S'aכIZ'O2>#ō b:atۈT3ɻ#ݍ\۵^wvZbL֝A3k[q2v Ŕv;b%sedt2ܣ+Yo:(&^ʽ}er6^d'\WSX!yp$1rdSё(7~Blq<0'7/=y#keDMo0)=$&Fi4Xb|zm`wpًŔ*icׁGOt'Ħ6?g{AfևGzT^:RW)}M lkU0-j!tݵFJ$椂̞Nèɔ1Ճwg}rV=Zyݟ] 4i?ۦo+['q\y^ IM:w[59G1 D@ (Aka/:'Nuyjj:|N@ $yU^| [i~hov4,E ASwr$%%e5y:p7n m^?T2eg(Bf#Ϸ]%lN̏}]na>3N0cV,?YiO6v2Y QHzBO"?'N4m?.-xXʚ͙("!Gv yCƠpaWZ% Qpi0!y>ùR3' T&'Yģ@EZ;<apS:_zOi`8!2PYp8#r;'&[6Ӡ&_Ԇ*Ρao("2Pq]Z=VmZ-CLe?cBi_9[^ї79 =&`k?_&`~) T-{4˂}utRfXk*ٕ=؇p_/pIo+TR7h#'/7C͠IFh8S0o:xʹl*jGyUHMwk]u{=YI AB|S8uQ<=:d ,Bs+ZL՚G3'q&-")˘._S2Qt$@ *gxxF O_i1[qoFOWػfk;P'uu {dn*mw9SOTwm $fT^+PbycZU'2NգQTy\~3c:*m>HUEf0]Wy/:Z`k3ϵ̶L)X-c=B҂0Ke|r5u: :0bbE\Y6lJp%6K>$IHb b8)3ѧmpƉQSX9#.QD N´Ŭ\. \gkE7I$,Hȼ;=[ng'mal!@l>Wh=[%&'6Ub|R;+5D-tcoDx^g +TRWO Q<8Eb n@,! @  ! @  ! @  ! @  ! @ }tx*Qk@pB~AwIm 'GQkմ3*XH,KjRme24.A>׉Bv@p?׋nNblsĚ@ (@@ (@@ (@@ ~#\rT_ףRG.jM )¡r^^{PShQ/B-.`@oc0,W@ opwuk7G$ZRWK z :gL"N@pɒNf3Z\S H-;aaae',-;!Z"v۰Lc݆ _M>Bl.D{Uh P1{gb~@*RiC&> 6,,hz=ɭ[^a#.f 3Ys禳lH{q !Xg bLqg J4 s?qPʉ]عk7)aE%'B\@pDV(c[ɺFAx%X[Pr ?UX.>5yy:3Axlʇ|4f朜G`Ԧ_li|e:Tqt1) F_:''@A~u-901|nhmw4! [ o?x"IfBj87OQ&5&dkyen@W (cL5mLFR@r)xL|A@)"dz7(D# ʏ4."#I3.WLb-7rɜ̰r8D T7o|ONrQ ]2Ya'SyU4>5Pjxzo ;;()C&W;hm`-1 {;N y]X$jh@y4)TI S2?8:ϗ汖r! }5Sh& MrI]W_??ß ǧ2SJgu/٧k$YQ0K/7Y }lj(ɛz4S|A& ?w6FcmZ!7H<"[Ӻmcmu-黵yh?5>[bv ;w;vm&m֡5^3iYGܜmW^28c&+w;uY>XQǩLM] px(( jzch?jr/J:((^%>Ab SE5dmcE|3^h)< kh??w'uAy x?X{3;J8ݎg@=3GN)) IDATu"cfSl/G|'$X)v#d9rp~hk.cܱVRbȨ"˓%"+ uWx!xPʑ"\eCfSo@nak9Y$JcOSyׅV . fkW0/`b g<<3;H}Q |{{:>e||E 'Dj.5-_U҄TUn6Ć hUhP"R ̈́8!"H@e0$<̀kљ9g{Z?\K^fǏFp n]hag;Y;U3g ܐ [~2;)!oʂWBaV?Ol`c|G` 7bxl9'2XiY헿c=}>|epU9J +]>/j_{z)>/鵯17k.":ʷVn&7sߕ&ࠬߐh<vekMҺ0 k nDd2yif\.\(+ #30=iL.ȫW YXm(AwFq];8آ AI]:m[8&?ΎRϔP G'0@(aBԢY? 1wpߔX(q#8m*G7w-ǿCN980SUE ,8lVrƐf5k;A Lrj"&wS҄$+_y&C$°vׄ!~S'ʠr8g#&Ec[іvlRW8ҭӎQ/cپ=MthcZ pºD^N&T44BaJ2DXUL J,SɠR2% G}E!3m8(?be<(щ1>.*; 1 LP}Tyϯdd,r bPu !hessX3ӗkn9Z}hpWb3ǻkX_QlvT-4itb[~N ] @&TN[DWQp(^oUmyX@Y~!'f>F@NY<~#)q~u5gGM Q俎5,j!/kc{&'csLa Ybtt>dU$5f2pPb02fܲ7/ŤhԕR{EMkI$+%RZmۜCoБ@+*ւ)$'- Pi^r21ֶukvQ5l!tq ͩe/YY%T]IT_ص sS,l=GWdĠYPo0:[Fnj3"?63i\ p--^b͌+` m$x Kc7I:ly.Z[PR<Kce%LmWڠ؅k˭%UyJaWFr.S%[ɭ1nA)#QVyٙ(~=hM+wkg(+obj\5;EӜi$sN_0Z잺8/b@S$Gh41jϧ5c=2-񉤥#քCGZk檻J+]pߒD̜T/Hjl uU]Sax23`DŎg\ C.v&f_֚ھym%t äsfawkkۍb;pe2SRYb2p%?`HP6z/88丯cd~4Bg S@ӒBFsD@+^4LZ!״9xyZAr5])+H.*${M `GFt^vpL>4Z!kyஔd̞S.ME '#%TLz ٭/.Js}m1baAQ3^OU={̊Wyjr!%$/r\kd׌gfMkA?K[ʌ nWWm[^}(fW};jѳ`2ZYiVҞՄg^jl`K7e&)-9Axk公ބ:.m4qGKb:U it0!>ECOl%וoѻuM.?.h/|Ѧ.|CMGt]D)q}ӡ6Zk^?u}Gu]׿n>oJy`ޏ;̷]]W?Vm^MDަڿ6_뺮w|GV^I}Fhmա^?hso/<>ҟKZr;ln~R/{~KzAKR.WR/eA/:=0OVփgf]??O_gWl_͸X_} =st˷eD]w[]MuevRY~fm/|Ѧ9uǗ__~աw_KKӿ.ܜ1k1Avył쮱84ЧH3Bpx-v#{jRz`\[YSCU*CyR!0h˓Wx ˁniTFGL'Sf=|Obɬik.h3TN9ӊgsr؛ġ Gkyt 8<ڮ}zf굁GZ/)J6]3i Osuł-ǜh5Z([ }ZjMI~<ζM֜^.NW{=Q-Օ'"325.y³`ADAAADAAQADAAADAAQADAAADAA[R[mb5A'j \#AADAAQADAAADAAQADAAADAAQAF,m-DzqӠ0/Jby$}ZI*W܂U`_}6=Pi 313a|ట`VJm B/As4KŒ.PU@W4f -" 105f<|pMpBcKbqߙ]U좢Q>$;j3hy/I)Kvfy͝(a.fiF},p9ݣ1fΒ$A"WQʸ)Ҭ͜Wxn>~g' QL7<9XT@b[.ZF3`>/}m+r>pw^!>ߋ}yI;ccfq=ᬕ=;w'K)T~2sbU:k,$CNL9yi۩/a#Lۛ(|;D%܏Ή )T}/S.>1"'gUg!8/sGċ7@ٱI)9۩)Hz2~.ɋgWbEuZM!/~Ȟgx`餾s?Xhq/{>b_M0$a6XjǶsF; ff'D3%anVN0uQ̟X켓O2 m̅2iOgGx/a1IMOĬj>3t3 *ǩ*>Esf/Q&)ݝ[ufC| A)c睬 ~ҕ1LJnI̼` jUK1ըq9TF3L19Nـ:QŤbGF?+v<|Dc:9\ =Es7ihԙf>8§50>sx(ҷ,MFR8awdwqgv 40\j9>l!( c Lua08ҺA_La_"/.g@L1pki3xꗵf KcKb:jXL9lg(b n3.&.4hvT `jܷ$pyll2L+=BEqN:,-&7{9îx ifF"&J8K QhOy-S{߬G7w,fh$Gc2ȕ)׉ؘ%| bD#iǡDAݥXm{ViY` BiNҗxfʩʽ}Δ%~>LM#}L7ܙDVrLLB:8ħ-WsjkD!(|F;|oɇߊ27UWΗ*&Μ];Wl`{YxO /Y*C۱@ʅ)2S,]gż]11aerM,\pg&3]9˧-*;f:c &Lb`h)g[~ Vc@|$A=r0&&pKu;"p"oI 1d&bj`9{y8=9Hd 4 LO&+^,!2SADAAADAAQAnY}XHAD)==NQЁtG,&-zXv>h|6l/>o~;I 8ϲaPOeX|ݍ1}wl`[x1>ZKeewU2zIgsX.lbϷe귛(Z[=oyO˹־(gϵ:z_ybE_7/\ /mn»4/ 𯻺=>oie=oGHp#:ʷVn&7s'2^i 9㯝aW/_I!ua(A@m֖ul5L&/rL 7Cp,.~G1Qy }pE1_11.C{#t΂xܬBnIN_ #8ήlq: ]Li.}&gr,(L Upt28l@SZ0+'8Fq8E3c=ZgQE|)&3`6zqJ[JN2L4Fqm-[DLn)" UIVjM +Ida-*늼2> lgQm1GpCU,vv~ mCCԢeN5&rj44Sy r`t5''fY$A,g#eJ&~Cfl pZMUQ"yLQz@[K;c|2 kg9\T5NBVv>*ؼW2ւL[1g(^:\9KV^_`>y-¾v4+1Wx`;[T.c4Ii { Uь¸4 ̢Qpȁr(^oUmyX@Y~!'f>F@NY<~#)q~u5gGM Q俎5,j!/kc%#IDAT{&'csLa Ybtt>dU$5f2pPb02fܲ7/ŤhԕR{EMkI$+%RZmۜCoБ@+*ւ)$'- Pi^r21ֶukvQ5l!tq ͩe/YY%T]ͭ]ۛ0gsCS]GWPB08;AB2:gcc4k7_DP4fVr.`1aKg1^2DRslk f1.iW=965gC/I)a̞Qh j5fjfoD sqw_}͌͵rg>L|b`F*&ZWjC#ׁ >GT,4]˔Y?L®3`!,-D+ ^ʫu}E;5y%z Wy ~%ǰ&NkttaMxO'Ȋ5h:.3a~@zdGƃ^uСx,UJ^!<2c~q?Y.=JΌ}=ө$mfAk1 Jx;vF QVʕ(5`ݜ4X*Fql\w?e4z/9fpf jZZZ ŚWjI1^un)M\ow u1US%Ȯ aax4 Qoө=2;,7kJsWrO]\J[c"}r/(S0G3SQ {јÛW PVԸk|3w49ӬIh)i a|+S,*h՜"i-=B[W#>#-ïO$-e&lĹ)UwVb̓5`%,9JU-^:~@ʫ\=˕;l7;q1& ջح~9vR^p*j\PƌNg1֎ QoCid;>CXTMzd)\kYb2p%6pUP6z/88丯cd~4Bg S@ӒBFsD@+^4LZ!״9xyZhArٵSW\TH@9E 3 xhɇ= R=|Q9۹[Tx2ROăGx9g1(x&82t91aEd?Q 1&@(ݙ ^p(L)yz./a]g_cs9hhR H[<* 6q SCv:^-4;/lb0.< ;CG{8w ܊;Α|$ ( \7vԛ7" Xv?Gި16__௮il">AZ c'^qp3EDAˑ]Qd|;MىVT!tOH4oۇ??*O?I(ǼH[l_l{C51#8wu,?|3`ܟ_4cFc ;IМ_La |$p3Ό_SOc~S_ޢ_N?K~3Olb6sc>LJwP+r%)%7ϩ9;__*&(c, | 3;^K &jC윻o6N$Is7, CÀx;F7 3>F;fL{ 8lhga];E/{(nЮA08..莖+ (vno.? ׭#jM.ceg9{|mE䔞^|t+unQ>7߻h:NୣGЉ㬝K Mgt᥍Q03|ru rOvP:-bX8FcSvjj\ <3D6Yy;& >Xx?ĶVw^f ; 1Y=ťrc]j;Zhf3EG\o dA24^­O>@c7Gg,=ȍn=|ݭkwuu_~9 _ _mv:Сg>ls:d>'KizP_A7>ҿu]8[z׾3rWQu'Mm׺!u‡w՟OFyǡ<}E;ti3~LWқQ_GWC7Uƾ+^8r⥏\u}z]VkJiyCo]A8#_[[~=T}4d.g|ܦ/eQ/irU'KЋN,' n=oJF/iv'-xץCW?qQ/|ҙOU]uok0[6n~6Ѯ;JC_]Y]E~IޥurFxвcmǔhv1DpnG= QJ=0b~L zo|ZDmYkv4ЪjP BjΆ_4\m 9Nnٟɔ> = Qo.&F fMF+VgK蜡x gF1!/&_;oW}$p9}ۖ/x(q_g:{NߺAK~˚DSiQ5D|פ5{t֍ \\7e%}>0/&Kx)7[[1z g1Mt˫o.˃V @Xq3l<Q͌&\պlG(wsT wōDikZZ:o`hPRG4_< Az5T}xnƤY]{n;D?va:' <&·̀>Nʾ3vc٣(yYfi F |3QzwRonI0S{g g \G}{xA5Aʣ,OO/YkwGCe! " E#Q7aJ state` mapping), which is *very* space inefficient when state doesn't change, we instead assign each different set of state a "state group" and then have mappings of `event_id -> state_group` and `state_group -> state`. ### Stage group edges TODO: `state_group_edges` is a further optimization... notes from @Azrenbeth, https://pastebin.com/seUGVGeT synapse-1.100.0/docs/development/saml.md000066400000000000000000000034571455622526000201030ustar00rootroot00000000000000# How to test SAML as a developer without a server https://fujifish.github.io/samling/samling.html (https://github.com/fujifish/samling) is a great resource for being able to tinker with the SAML options within Synapse without needing to deploy and configure a complicated software stack. To make Synapse (and therefore Element) use it: 1. Use the samling.html URL above or deploy your own and visit the IdP Metadata tab. 2. Copy the XML to your clipboard. 3. On your Synapse server, create a new file `samling.xml` next to your `homeserver.yaml` with the XML from step 2 as the contents. 4. Edit your `homeserver.yaml` to include: ```yaml saml2_config: sp_config: allow_unknown_attributes: true # Works around a bug with AVA Hashes: https://github.com/IdentityPython/pysaml2/issues/388 metadata: local: ["samling.xml"] ``` 5. Ensure that your `homeserver.yaml` has a setting for `public_baseurl`: ```yaml public_baseurl: http://localhost:8080/ ``` 6. Run `apt-get install xmlsec1` and `pip install --upgrade --force 'pysaml2>=4.5.0'` to ensure the dependencies are installed and ready to go. 7. Restart Synapse. Then in Element: 1. Visit the login page and point Element towards your homeserver using the `public_baseurl` above. 2. Click the Single Sign-On button. 3. On the samling page, enter a Name Identifier and add a SAML Attribute for `uid=your_localpart`. The response must also be signed. 4. Click "Next". 5. Click "Post Response" (change nothing). 6. You should be logged in. If you try and repeat this process, you may be automatically logged in using the information you gave previously. To fix this, open your developer console (`F12` or `Ctrl+Shift+I`) while on the samling page and clear the site data. In Chrome, this will be a button on the Application tab. synapse-1.100.0/docs/development/synapse_architecture/000077500000000000000000000000001455622526000230405ustar00rootroot00000000000000synapse-1.100.0/docs/development/synapse_architecture/cancellation.md000066400000000000000000000254331455622526000260250ustar00rootroot00000000000000# Cancellation Sometimes, requests take a long time to service and clients disconnect before Synapse produces a response. To avoid wasting resources, Synapse can cancel request processing for select endpoints marked with the `@cancellable` decorator. Synapse makes use of Twisted's `Deferred.cancel()` feature to make cancellation work. The `@cancellable` decorator does nothing by itself and merely acts as a flag, signalling to developers and other code alike that a method can be cancelled. ## Enabling cancellation for an endpoint 1. Check that the endpoint method, and any `async` functions in its call tree handle cancellation correctly. See [Handling cancellation correctly](#handling-cancellation-correctly) for a list of things to look out for. 2. Add the `@cancellable` decorator to the `on_GET/POST/PUT/DELETE` method. It's not recommended to make non-`GET` methods cancellable, since cancellation midway through some database updates is less likely to be handled correctly. ## Mechanics There are two stages to cancellation: downward propagation of a `cancel()` call, followed by upwards propagation of a `CancelledError` out of a blocked `await`. Both Twisted and asyncio have a cancellation mechanism. | | Method | Exception | Exception inherits from | |---------------|---------------------|-----------------------------------------|-------------------------| | Twisted | `Deferred.cancel()` | `twisted.internet.defer.CancelledError` | `Exception` (!) | | asyncio | `Task.cancel()` | `asyncio.CancelledError` | `BaseException` | ### Deferred.cancel() When Synapse starts handling a request, it runs the async method responsible for handling it using `defer.ensureDeferred`, which returns a `Deferred`. For example: ```python def do_something() -> Deferred[None]: ... @cancellable async def on_GET() -> Tuple[int, JsonDict]: d = make_deferred_yieldable(do_something()) await d return 200, {} request = defer.ensureDeferred(on_GET()) ``` When a client disconnects early, Synapse checks for the presence of the `@cancellable` decorator on `on_GET`. Since `on_GET` is cancellable, `Deferred.cancel()` is called on the `Deferred` from `defer.ensureDeferred`, ie. `request`. Twisted knows which `Deferred` `request` is waiting on and passes the `cancel()` call on to `d`. The `Deferred` being waited on, `d`, may have its own handling for `cancel()` and pass the call on to other `Deferred`s. Eventually, a `Deferred` handles the `cancel()` call by resolving itself with a `CancelledError`. ### CancelledError The `CancelledError` gets raised out of the `await` and bubbles up, as per normal Python exception handling. ## Handling cancellation correctly In general, when writing code that might be subject to cancellation, two things must be considered: * The effect of `CancelledError`s raised out of `await`s. * The effect of `Deferred`s being `cancel()`ed. Examples of code that handles cancellation incorrectly include: * `try-except` blocks which swallow `CancelledError`s. * Code that shares the same `Deferred`, which may be cancelled, between multiple requests. * Code that starts some processing that's exempt from cancellation, but uses a logging context from cancellable code. The logging context will be finished upon cancellation, while the uncancelled processing is still using it. Some common patterns are listed below in more detail. ### `async` function calls Most functions in Synapse are relatively straightforward from a cancellation standpoint: they don't do anything with `Deferred`s and purely call and `await` other `async` functions. An `async` function handles cancellation correctly if its own code handles cancellation correctly and all the async function it calls handle cancellation correctly. For example: ```python async def do_two_things() -> None: check_something() await do_something() await do_something_else() ``` `do_two_things` handles cancellation correctly if `do_something` and `do_something_else` handle cancellation correctly. That is, when checking whether a function handles cancellation correctly, its implementation and all its `async` function calls need to be checked, recursively. As `check_something` is not `async`, it does not need to be checked. ### CancelledErrors Because Twisted's `CancelledError`s are `Exception`s, it's easy to accidentally catch and suppress them. Care must be taken to ensure that `CancelledError`s are allowed to propagate upwards.
**Bad**: ```python try: await do_something() except Exception: # `CancelledError` gets swallowed here. logger.info(...) ``` **Good**: ```python try: await do_something() except CancelledError: raise except Exception: logger.info(...) ```
**OK**: ```python try: check_something() # A `CancelledError` won't ever be raised here. except Exception: logger.info(...) ``` **Good**: ```python try: await do_something() except ValueError: logger.info(...) ```
#### defer.gatherResults `defer.gatherResults` produces a `Deferred` which: * broadcasts `cancel()` calls to every `Deferred` being waited on. * wraps the first exception it sees in a `FirstError`. Together, this means that `CancelledError`s will be wrapped in a `FirstError` unless unwrapped. Such `FirstError`s are liable to be swallowed, so they must be unwrapped.
**Bad**: ```python async def do_something() -> None: await make_deferred_yieldable( defer.gatherResults([...], consumeErrors=True) ) try: await do_something() except CancelledError: raise except Exception: # `FirstError(CancelledError)` gets swallowed here. logger.info(...) ``` **Good**: ```python async def do_something() -> None: await make_deferred_yieldable( defer.gatherResults([...], consumeErrors=True) ).addErrback(unwrapFirstError) try: await do_something() except CancelledError: raise except Exception: logger.info(...) ```
### Creation of `Deferred`s If a function creates a `Deferred`, the effect of cancelling it must be considered. `Deferred`s that get shared are likely to have unintended behaviour when cancelled.
**Bad**: ```python cache: Dict[str, Deferred[None]] = {} def wait_for_room(room_id: str) -> Deferred[None]: deferred = cache.get(room_id) if deferred is None: deferred = Deferred() cache[room_id] = deferred # `deferred` can have multiple waiters. # All of them will observe a `CancelledError` # if any one of them is cancelled. return make_deferred_yieldable(deferred) # Request 1 await wait_for_room("!aAAaaAaaaAAAaAaAA:matrix.org") # Request 2 await wait_for_room("!aAAaaAaaaAAAaAaAA:matrix.org") ``` **Good**: ```python cache: Dict[str, Deferred[None]] = {} def wait_for_room(room_id: str) -> Deferred[None]: deferred = cache.get(room_id) if deferred is None: deferred = Deferred() cache[room_id] = deferred # `deferred` will never be cancelled now. # A `CancelledError` will still come out of # the `await`. # `delay_cancellation` may also be used. return make_deferred_yieldable(stop_cancellation(deferred)) # Request 1 await wait_for_room("!aAAaaAaaaAAAaAaAA:matrix.org") # Request 2 await wait_for_room("!aAAaaAaaaAAAaAaAA:matrix.org") ```
**Good**: ```python cache: Dict[str, List[Deferred[None]]] = {} def wait_for_room(room_id: str) -> Deferred[None]: if room_id not in cache: cache[room_id] = [] # Each request gets its own `Deferred` to wait on. deferred = Deferred() cache[room_id]].append(deferred) return make_deferred_yieldable(deferred) # Request 1 await wait_for_room("!aAAaaAaaaAAAaAaAA:matrix.org") # Request 2 await wait_for_room("!aAAaaAaaaAAAaAaAA:matrix.org") ```
### Uncancelled processing Some `async` functions may kick off some `async` processing which is intentionally protected from cancellation, by `stop_cancellation` or other means. If the `async` processing inherits the logcontext of the request which initiated it, care must be taken to ensure that the logcontext is not finished before the `async` processing completes.
**Bad**: ```python cache: Optional[ObservableDeferred[None]] = None async def do_something_else( to_resolve: Deferred[None] ) -> None: await ... logger.info("done!") to_resolve.callback(None) async def do_something() -> None: if not cache: to_resolve = Deferred() cache = ObservableDeferred(to_resolve) # `do_something_else` will never be cancelled and # can outlive the `request-1` logging context. run_in_background(do_something_else, to_resolve) await make_deferred_yieldable(cache.observe()) with LoggingContext("request-1"): await do_something() ``` **Good**: ```python cache: Optional[ObservableDeferred[None]] = None async def do_something_else( to_resolve: Deferred[None] ) -> None: await ... logger.info("done!") to_resolve.callback(None) async def do_something() -> None: if not cache: to_resolve = Deferred() cache = ObservableDeferred(to_resolve) run_in_background(do_something_else, to_resolve) # We'll wait until `do_something_else` is # done before raising a `CancelledError`. await make_deferred_yieldable( delay_cancellation(cache.observe()) ) else: await make_deferred_yieldable(cache.observe()) with LoggingContext("request-1"): await do_something() ```
**OK**: ```python cache: Optional[ObservableDeferred[None]] = None async def do_something_else( to_resolve: Deferred[None] ) -> None: await ... logger.info("done!") to_resolve.callback(None) async def do_something() -> None: if not cache: to_resolve = Deferred() cache = ObservableDeferred(to_resolve) # `do_something_else` will get its own independent # logging context. `request-1` will not count any # metrics from `do_something_else`. run_as_background_process( "do_something_else", do_something_else, to_resolve, ) await make_deferred_yieldable(cache.observe()) with LoggingContext("request-1"): await do_something() ```
synapse-1.100.0/docs/development/synapse_architecture/faster_joins.md000066400000000000000000000431261455622526000260560ustar00rootroot00000000000000# How do faster joins work? This is a work-in-progress set of notes with two goals: - act as a reference, explaining how Synapse implements faster joins; and - record the rationale behind our choices. See also [MSC3902](https://github.com/matrix-org/matrix-spec-proposals/pull/3902). The key idea is described by [MSC3706](https://github.com/matrix-org/matrix-spec-proposals/pull/3706). This allows servers to request a lightweight response to the federation `/send_join` endpoint. This is called a **faster join**, also known as a **partial join**. In these notes we'll usually use the word "partial" as it matches the database schema. ## Overview: processing events in a partially-joined room The response to a partial join consists of - the requested join event `J`, - a list of the servers in the room (according to the state before `J`), - a subset of the state of the room before `J`, - the full auth chain of that state subset. Synapse marks the room as partially joined by adding a row to the database table `partial_state_rooms`. It also marks the join event `J` as "partially stated", meaning that we have neither received nor computed the full state before/after `J`. This is done by adding a row to `partial_state_events`.

DB schema ``` matrix=> \d partial_state_events Table "matrix.partial_state_events" Column │ Type │ Collation │ Nullable │ Default ══════════╪══════╪═══════════╪══════════╪═════════ room_id │ text │ │ not null │ event_id │ text │ │ not null │ matrix=> \d partial_state_rooms Table "matrix.partial_state_rooms" Column │ Type │ Collation │ Nullable │ Default ════════════════════════╪════════╪═══════════╪══════════╪═════════ room_id │ text │ │ not null │ device_lists_stream_id │ bigint │ │ not null │ 0 join_event_id │ text │ │ │ joined_via │ text │ │ │ matrix=> \d partial_state_rooms_servers Table "matrix.partial_state_rooms_servers" Column │ Type │ Collation │ Nullable │ Default ═════════════╪══════╪═══════════╪══════════╪═════════ room_id │ text │ │ not null │ server_name │ text │ │ not null │ ``` Indices, foreign-keys and check constraints are omitted for brevity.
While partially joined to a room, Synapse receives events `E` from remote homeservers as normal, and can create events at the request of its local users. However, we run into trouble when we enforce the [checks on an event]. > 1. Is a valid event, otherwise it is dropped. For an event to be valid, it must contain a room_id, and it must comply with the event format of that > room version. > 2. Passes signature checks, otherwise it is dropped. > 3. Passes hash checks, otherwise it is redacted before being processed further. > 4. Passes authorization rules based on the event’s auth events, otherwise it > is rejected. > 5. **Passes authorization rules based on the state before the event, otherwise > it is rejected.** > 6. **Passes authorization rules based on the current state of the room, > otherwise it is “soft failed”.** [checks on an event]: https://spec.matrix.org/v1.5/server-server-api/#checks-performed-on-receipt-of-a-pdu We can enforce checks 1--4 without any problems. But we cannot enforce checks 5 or 6 with complete certainty, since Synapse does not know the full state before `E`, nor that of the room. ### Partial state Instead, we make a best-effort approximation. While the room is considered partially joined, Synapse tracks the "partial state" before events. This works in a similar way as regular state: - The partial state before `J` is that given to us by the partial join response. - The partial state before an event `E` is the resolution of the partial states after each of `E`'s `prev_event`s. - If `E` is rejected or a message event, the partial state after `E` is the partial state before `E`. - Otherwise, the partial state after `E` is the partial state before `E`, plus `E` itself. More concisely, partial state propagates just like full state; the only difference is that we "seed" it with an incomplete initial state. Synapse records that we have only calculated partial state for this event with a row in `partial_state_events`. While the room remains partially stated, check 5 on incoming events to that room becomes: > 5. Passes authorization rules based on **the resolution between the partial > state before `E` and `E`'s auth events.** If the event fails to pass > authorization rules, it is rejected. Additionally, check 6 is deleted: no soft-failures are enforced. While partially joined, the current partial state of the room is defined as the resolution across the partial states after all forward extremities in the room. _Remark._ Events with partial state are _not_ considered [outliers](../room-dag-concepts.md#outliers). ### Approximation error Using partial state means the auth checks can fail in a few different ways[^2]. [^2]: Is this exhaustive? - We may erroneously accept an incoming event in check 5 based on partial state when it would have been rejected based on full state, or vice versa. - This means that an event could erroneously be added to the current partial state of the room when it would not be present in the full state of the room, or vice versa. - Additionally, we may have skipped soft-failing an event that would have been soft-failed based on full state. (Note that the discrepancies described in the last two bullets are user-visible.) This means that we have to be very careful when we want to lookup pieces of room state in a partially-joined room. Our approximation of the state may be incorrect or missing. But we can make some educated guesses. If - our partial state is likely to be correct, or - the consequences of our partial state being incorrect are minor, then we proceed as normal, and let the resync process fix up any mistakes (see below). When is our partial state likely to be correct? - It's more accurate the closer we are to the partial join event. (So we should ideally complete the resync as soon as possible.) - Non-member events: we will have received them as part of the partial join response, if they were part of the room state at that point. We may incorrectly accept or reject updates to that state (at first because we lack remote membership information; later because of compounding errors), so these can become incorrect over time. - Local members' memberships: we are the only ones who can create join and knock events for our users. We can't be completely confident in the correctness of bans, invites and kicks from other homeservers, but the resync process should correct any mistakes. - Remote members' memberships: we did not receive these in the /send_join response, so we have essentially no idea if these are correct or not. In short, we deem it acceptable to trust the partial state for non-membership and local membership events. For remote membership events, we wait for the resync to complete, at which point we have the full state of the room and can proceed as normal. ### Fixing the approximation with a resync The partial-state approximation is only a temporary affair. In the background, synapse beings a "resync" process. This is a continuous loop, starting at the partial join event and proceeding downwards through the event graph. For each `E` seen in the room since partial join, Synapse will fetch - the event ids in the state of the room before `E`, via [`/state_ids`](https://spec.matrix.org/v1.5/server-server-api/#get_matrixfederationv1state_idsroomid); - the event ids in the full auth chain of `E`, included in the `/state_ids` response; and - any events from the previous two bullets that Synapse hasn't persisted, via [`/state](https://spec.matrix.org/v1.5/server-server-api/#get_matrixfederationv1stateroomid). This means Synapse has (or can compute) the full state before `E`, which allows Synapse to properly authorise or reject `E`. At this point ,the event is considered to have "full state" rather than "partial state". We record this by removing `E` from the `partial_state_events` table. \[**TODO:** Does Synapse persist a new state group for the full state before `E`, or do we alter the (partial-)state group in-place? Are state groups ever marked as partially-stated? \] This scheme means it is possible for us to have accepted and sent an event to clients, only to reject it during the resync. From a client's perspective, the effect is similar to a retroactive state change due to state resolution---i.e. a "state reset".[^3] [^3]: Clients should refresh caches to detect such a change. Rumour has it that sliding sync will fix this. When all events since the join `J` have been fully-stated, the room resync process is complete. We record this by removing the room from `partial_state_rooms`. ## Faster joins on workers For the time being, the resync process happens on the master worker. A new replication stream `un_partial_stated_room` is added. Whenever a resync completes and a partial-state room becomes fully stated, a new message is sent into that stream containing the room ID. ## Notes on specific cases > **NB.** The notes below are rough. Some of them are hidden under `
` disclosures because they have yet to be implemented in mainline Synapse. ### Creating events during a partial join When sending out messages during a partial join, we assume our partial state is accurate and proceed as normal. For this to have any hope of succeeding at all, our partial state must contain an entry for each of the (type, state key) pairs [specified by the auth rules](https://spec.matrix.org/v1.3/rooms/v10/#authorization-rules): - `m.room.create` - `m.room.join_rules` - `m.room.power_levels` - `m.room.third_party_invite` - `m.room.member` The first four of these should be present in the state before `J` that is given to us in the partial join response; only membership events are omitted. In order for us to consider the user joined, we must have their membership event. That means the only possible omission is the target's membership in an invite, kick or ban. The worst possibility is that we locally invite someone who is banned according to the full state, because we lack their ban in our current partial state. The rest of the federation---at least, those who are fully joined---should correctly enforce the [membership transition constraints]( https://spec.matrix.org/v1.3/client-server-api/#room-membership ). So any the erroneous invite should be ignored by fully-joined homeservers and resolved by the resync for partially-joined homeservers. In more generality, there are two problems we're worrying about here: - We might create an event that is valid under our partial state, only to later find out that is actually invalid according to the full state. - Or: we might refuse to create an event that is invalid under our partial state, even though it would be perfectly valid under the full state. However we expect such problems to be unlikely in practise, because - We trust that the room has sensible power levels, e.g. that bad actors with high power levels are demoted before their ban. - We trust that the resident server provides us up-to-date power levels, join rules, etc. - State changes in rooms are relatively infrequent, and the resync period is relatively quick. #### Sending out the event over federation **TODO:** needs prose fleshing out. Normally: send out in a fed txn to all HSes in the room. We only know that some HSes were in the room at some point. Wat do. Send it out to the list of servers from the first join. **TODO** what do we do here if we have full state? If the prev event was created by us, we can risk sending it to the wrong HS. (Motivation: privacy concern of the content. Not such a big deal for a public room or an encrypted room. But non-encrypted invite-only...) But don't want to send out sensitive data in other HS's events in this way. Suppose we discover after resync that we shouldn't have sent out one our events (not a prev_event) to a target HS. Not much we can do. What about if we didn't send them an event but shouldn't've? E.g. what if someone joined from a new HS shortly after you did? We wouldn't talk to them. Could imagine sending out the "Missed" events after the resync but... painful to work out what they should have seen if they joined/left. Instead, just send them the latest event (if they're still in the room after resync) and let them backfill.(?) - Don't do this currently. - If anyone who has received our messages sends a message to a HS we missed, they can backfill our messages - Gap: rooms which are infrequently used and take a long time to resync. ### Joining after a partial join **NB.** Not yet implemented.
**TODO:** needs prose fleshing out. Liase with Matthieu. Explain why /send_join (Rich was surprised we didn't just create it locally. Answer: to try and avoid a join which then gets rejected after resync.) We don't know for sure that any join we create would be accepted. E.g. the joined user might have been banned; the join rules might have changed in a way that we didn't realise... some way in which the partial state was mistaken. Instead, do another partial make-join/send-join handshake to confirm that the join works. - Probably going to get a bunch of duplicate state events and auth events.... but the point of partial joins is that these should be small. Many are already persisted = good. - What if the second send_join response includes a different list of reisdent HSes? Could ignore it. - Could even have a special flag that says "just make me a join", i.e. don't bother giving me state or servers in room. Deffo want the auth chain tho. - SQ: wrt device lists it's a lot safer to ignore it!!!!! - What if the state at the second join is inconsistent with what we have? Ignore it?
### Leaving (and kicks and bans) after a partial join **NB.** Not yet implemented.
When you're fully joined to a room, to have `U` leave a room their homeserver needs to - create a new leave event for `U` which will be accepted by other homeservers, and - send that event `U` out to the homeservers in the federation. When is a leave event accepted? See [v10 auth rules](https://spec.matrix.org/v1.5/rooms/v10/#authorization-rules): > 4. If type is m.room.member: [...] > > 5. If membership is leave: > > 1. If the sender matches state_key, allow if and only if that user’s current membership state is invite, join, or knock. > 2. [...] I think this means that (well-formed!) self-leaves are governed entirely by 4.5.1. This means that if we correctly calculate state which says that `U` is invited, joined or knocked and include it in the leave's auth events, our event is accepted by checks 4 and 5 on incoming events. > 4. Passes authorization rules based on the event’s auth events, otherwise > it is rejected. > 5. Passes authorization rules based on the state before the event, otherwise > it is rejected. The only way to fail check 6 is if the receiving server's current state of the room says that `U` is banned, has left, or has no membership event. But this is fine: the receiving server already thinks that `U` isn't in the room. > 6. Passes authorization rules based on the current state of the room, > otherwise it is “soft failed”. For the second point (publishing the leave event), the best thing we can do is to is publish to all HSes we know to be currently in the room. If they miss that event, they might send us traffic in the room that we don't care about. This is a problem with leaving after a "full" join; we don't seek to fix this with partial joins. (With that said: there's nothing machine-readable in the /send response. I don't think we can deduce "destination has left the room" from a failure to /send an event into that room?) #### Can we still do this during a partial join? We can create leave events and can choose what gets included in our auth events, so we can be sure that we pass check 4 on incoming events. For check 5, we might have an incorrect view of the state before an event. The only way we might erroneously think a leave is valid is if - the partial state before the leave has `U` joined, invited or knocked, but - the full state before the leave has `U` banned, left or not present, in which case the leave doesn't make anything worse: other HSes already consider us as not in the room, and will continue to do so after seeing the leave. The remaining obstacle is then: can we safely broadcast the leave event? We may miss servers or incorrectly think that a server is in the room. Or the destination server may be offline and miss the transaction containing our leave event.This should self-heal when they see an event whose `prev_events` descends from our leave. Another option we considered was to use federation `/send_leave` to ask a fully-joined server to send out the event on our behalf. But that introduces complexity without much benefit. Besides, as Rich put it, > sending out leaves is pretty best-effort currently so this is probably good enough as-is. #### Cleanup after the last leave **TODO**: what cleanup is necessary? Is it all just nice-to-have to save unused work?
synapse-1.100.0/docs/development/synapse_architecture/streams.md000066400000000000000000000227421455622526000250470ustar00rootroot00000000000000## Streams Synapse has a concept of "streams", which are roughly described in [`id_generators.py`]( https://github.com/element-hq/synapse/blob/develop/synapse/storage/util/id_generators.py ). Generally speaking, streams are a series of notifications that something in Synapse's database has changed that the application might need to respond to. For example: - The events stream reports new events (PDUs) that Synapse creates, or that Synapse accepts from another homeserver. - The account data stream reports changes to users' [account data](https://spec.matrix.org/v1.7/client-server-api/#client-config). - The to-device stream reports when a device has a new [to-device message](https://spec.matrix.org/v1.7/client-server-api/#send-to-device-messaging). See [`synapse.replication.tcp.streams`]( https://github.com/element-hq/synapse/blob/develop/synapse/replication/tcp/streams/__init__.py ) for the full list of streams. It is very helpful to understand the streams mechanism when working on any part of Synapse that needs to respond to changes—especially if those changes are made by different workers. To that end, let's describe streams formally, paraphrasing from the docstring of [`AbstractStreamIdGenerator`]( https://github.com/element-hq/synapse/blob/a719b703d9bd0dade2565ddcad0e2f3a7a9d4c37/synapse/storage/util/id_generators.py#L96 ). ### Definition A stream is an append-only log `T1, T2, ..., Tn, ...` of facts[^1] which grows over time. Only "writers" can add facts to a stream, and there may be multiple writers. Each fact has an ID, called its "stream ID". Readers should only process facts in ascending stream ID order. Roughly speaking, each stream is backed by a database table. It should have a `stream_id` (or similar) bigint column holding stream IDs, plus additional columns as necessary to describe the fact. Typically, a fact is expressed with a single row in its backing table.[^2] Within a stream, no two facts may have the same stream_id. > _Aside_. Some additional notes on streams' backing tables. > > 1. Rich would like to [ditch the backing tables](https://github.com/matrix-org/synapse/issues/13456). > 2. The backing tables may have other uses. > For example, the events table serves backs the events stream, and is read when processing new events. > But old rows are read from the table all the time, whenever Synapse needs to lookup some facts about an event. > 3. Rich suspects that sometimes the stream is backed by multiple tables, so the stream proper is the union of those tables. Stream writers can "reserve" a stream ID, and then later mark it as having being completed. Stream writers need to track the completion of each stream fact. In the happy case, completion means a fact has been written to the stream table. But unhappy cases (e.g. transaction rollback due to an error) also count as completion. Once completed, the rows written with that stream ID are fixed, and no new rows will be inserted with that ID. ### Current stream ID For any given stream reader (including writers themselves), we may define a per-writer current stream ID: > A current stream ID _for a writer W_ is the largest stream ID such that > all transactions added by W with equal or smaller ID have completed. Similarly, there is a "linear" notion of current stream ID: > A "linear" current stream ID is the largest stream ID such that > all facts (added by any writer) with equal or smaller ID have completed. Because different stream readers A and B learn about new facts at different times, A and B may disagree about current stream IDs. Put differently: we should think of stream readers as being independent of each other, proceeding through a stream of facts at different rates. The above definition does not give a unique current stream ID, in fact there can be a range of current stream IDs. Synapse uses both the minimum and maximum IDs for different purposes. Most often the maximum is used, as its generally beneficial for workers to advance their IDs as soon as possible. However, the minimum is used in situations where e.g. another worker is going to wait until the stream advances past a position. **NB.** For both senses of "current", that if a writer opens a transaction that never completes, the current stream ID will never advance beyond that writer's last written stream ID. For single-writer streams, the per-writer current ID and the linear current ID are the same. Both senses of current ID are monotonic, but they may "skip" or jump over IDs because facts complete out of order. _Example_. Consider a single-writer stream which is initially at ID 1. | Action | Current stream ID | Notes | |------------|-------------------|-------------------------------------------------| | | 1 | | | Reserve 2 | 1 | | | Reserve 3 | 1 | | | Complete 3 | 1 | current ID unchanged, waiting for 2 to complete | | Complete 2 | 3 | current ID jumps from 1 -> 3 | | Reserve 4 | 3 | | | Reserve 5 | 3 | | | Reserve 6 | 3 | | | Complete 5 | 3 | | | Complete 4 | 5 | current ID jumps 3->5, even though 6 is pending | | Complete 6 | 6 | | ### Multi-writer streams There are two ways to view a multi-writer stream. 1. Treat it as a collection of distinct single-writer streams, one for each writer. 2. Treat it as a single stream. The single stream (option 2) is conceptually simpler, and easier to represent (a single stream id). However, it requires each reader to know about the entire set of writers, to ensures that readers don't erroneously advance their current stream position too early and miss a fact from an unknown writer. In contrast, multiple parallel streams (option 1) are more complex, requiring more state to represent (map from writer to stream id). The payoff for doing so is that readers can "peek" ahead to facts that completed on one writer no matter the state of the others, reducing latency. Note that a multi-writer stream can be viewed in both ways. For example, the events stream is treated as multiple single-writer streams (option 1) by the sync handler, so that events are sent to clients as soon as possible. But the background process that works through events treats them as a single linear stream. Another useful example is the cache invalidation stream. The facts this stream holds are instructions to "you should now invalidate these cache entries". We only ever treat this as a multiple single-writer streams as there is no important ordering between cache invalidations. (Invalidations are self-contained facts; and the invalidations commute/are idempotent). ### Writing to streams Writers need to track: - track their current position (i.e. its own per-writer stream ID). - their facts currently awaiting completion. At startup, - the current position of that writer can be found by querying the database (which suggests that facts need to be written to the database atomically, in a transaction); and - there are no facts awaiting completion. To reserve a stream ID, call [`nextval`](https://www.postgresql.org/docs/current/functions-sequence.html) on the appropriate postgres sequence. To write a fact to the stream: insert the appropriate rows to the appropriate backing table. To complete a fact, first remove it from your map of facts currently awaiting completion. Then, if no earlier fact is awaiting completion, the writer can advance its current position in that stream. Upon doing so it should emit an `RDATA` message[^3], once for every fact between the old and the new stream ID. ### Subscribing to streams Readers need to track the current position of every writer. At startup, they can find this by contacting each writer with a `REPLICATE` message, requesting that all writers reply describing their current position in their streams. Writers reply with a `POSITION` message. To learn about new facts, readers should listen for `RDATA` messages and process them to respond to the new fact. The `RDATA` itself is not a self-contained representation of the fact; readers will have to query the stream tables for the full details. Readers must also advance their record of the writer's current position for that stream. # Summary In a nutshell: we have an append-only log with a "buffer/scratchpad" at the end where we have to wait for the sequence to be linear and contiguous. --- [^1]: we use the word _fact_ here for two reasons. Firstly, the word "event" is already heavily overloaded (PDUs, EDUs, account data, ...) and we don't need to make that worse. Secondly, "fact" emphasises that the things we append to a stream cannot change after the fact. [^2]: A fact might be expressed with 0 rows, e.g. if we opened a transaction to persist an event, but failed and rolled the transaction back before marking the fact as completed. In principle a fact might be expressed with 2 or more rows; if so, each of those rows should share the fact's stream ID. [^3]: This communication used to happen directly with the writers [over TCP](../../tcp_replication.md); nowadays it's done via Redis's Pubsub. synapse-1.100.0/docs/favicon.png000066400000000000000000000173441455622526000164360ustar00rootroot00000000000000PNG  IHDR niCCPicc(uKBQjR!QCHEDc"!fբׯ@r4 QK_CAAkAADK@_K=*(Qr9y99`bl!Rb'5SF#;zPKgL l=Sng#e]OPZ&(5Ć]:8Z( :+SZ\9I0!F2%o_g] 8KNӟښ[p~R{p ÏzH6$L{6 ogП[]ifZD7c߽߶g_N pHYsG.IDATx^ EUm25+-R.(ddZ- H HinX'[4(h*05h?÷̜sf~{s9>g@ @ @ @ @ @ @ @ @ @ @ @ @ X 1sS%/鎒>u$]*\I,8Iw;Fpsk$}D%EŒ|5?<:2V^+tIqn$8X;T_= Y<7_i5l ϚR|S#@_~ֿi^{T؋wʴoS}|Nv N'Ip4F86 =6ӄ9>m\stilwI\@FB)x4T\x}np}I9r ӕ.>P$`=gv2Dp 1A ^Bϐ1Z uLctYر$\zX@Y#p`,<>W@|X@Y#p[~1ޝIkP<`|@`ƉZԣ`xm~AFbăoY LnW5xz4 G*A@cB +xL8r ^=%~%V,D`,+Lk9Ca!ňZ﫥 56ho1A$1]+x- {0aV r0[ 5&xV#58*Xu7L-ڣf]^( b3(E`N_ gKbHC,#x }f QAd0|#0vo xA6'J"^!iTa(s4pߛ{;ђ|. كVZ̳:uP0A2NWy0Z"g|( ln R7ZZ"@P !.p0Y$KB,0&?W|^ov]ۗꊬu'9yB *W$ixOeY q)*:<8D01%$!Nlʹ?׭ti+k@Tt@>K[yQxDaEZUwmpV9VSAvv6OE~T)7*l/J, Q䳴Ś/éO\D8y{Z'K{4O >]~gtGl,_I >lZ[TuRr!n<=IKPbڬt*3Z]Xh#߻}$şӘmb%G0VNC\zbv5 hhL +gV)o5\yc|wV]Q|T[͋O]4_|sGgJia 95%ٍ @C~ϝx4Eg|;\L!o̓:dP. 􋥆8;EfIBGߠ)xPLywC+BK)=qr7zTmFD;[2`r}'*CZ]me'"onQCqQdU^:ڀ J*l}HVaϩN (DZ~ųjeh=>(C&mm(2{ R}?p%vR[w䢃?Paze~Z3$!˟%*Ee3N</tzfmf9[Dں~ŀ2U[6։^1XohgAK]IJ5YU[>VIsK}_a@3KݥL<:Ӷg*E{09<7ܶ|h#1*D}*-p],{J(|B yޮjÕvɗS!aPiOT8sh.C!2M 3+7ז5Wns[J!v?j)bv@>w+,\ؤf3W܇3_G8Y0gq(,(ߪV9mx㡹VSzc*]buzP3;7c OdJuT۽eX-.ݪf^%,:pE(EwY޽GJ o{7tϒsnN݄XARW'UtR%5-ǍJCkF)!IMFzn8Y0Ξ >q'Z#cN[>OCSϤ:c͖r7eh^#W =na 9CöJ/}bzFLWXSK6xiN:Rʺ T}fpM[G2.[Ȁ."4k˔t m]5HKy6snK][M9̷8ZۙτXfQtdY1@[{+AڶXlZ}f$x=2Xɋ4}̃}x1rI=ҲB^>򸭾].|[&VzydȨM!ߡJy>ǃiW=EhkhvTRF|zw*onr*>Sz&LJ~(:s.Py T‚Ct?g۷ )準AK۵MDp;NFkJi|c)hl?E43O4ϣzȓ3lZo"shSGԷ%< RF(ZUm֦]1JJ:G+Ɓg))ixS}DGߕ'`/Z}#N'S3P#acتʗIA=j524r 4/r[ rf).)>_ ț:+|4=~|e.n,ط[HkQ2 kY=t۰CM}~. S=.bne[kn)YK>?Arh݂Vu"sua4Gg9S/r4)*YڗsRgdߗWCO 5dl ۖZSK.zH][s#jSԏ.S\dy_껽_٘g(|ʥܛdNT0- L%Y3& R5BLr ;bQ'쁆[,X3⃂'Y5ۚmEV9էTֶǩ^S+iW,Gκfsd T=3 ySvƊS3;ϼ_oe7t@Co*㖠lô[\X=RW,5\k\uwDi29Z>2lKu"\dyk1 yP=`^p[yx0}5Vcȅ u8xTmp6nʗo#RAx73Lj~VQLGD*S\6Q#즌7C+xNVԪi%rO=,=h[pU2՜ $`7M2P΂y9Y͟34jdWkr[e!w=wݔW -ZayhVu9cSNakx:YsqT/uji:O!.c-7E ٮ7-v;XA "ƤvG׎?Ԝ~--7[Vo`3nE^Cop <h\#eٮ}  I#bM5[/ =!g}]ϑiiof8tn6~`U)V 4g(-}pCr?bL&ϭ3gI#uwb &@ft &SPG}Ff5s- Bz;ܚ %fHeRz]S%+ֱ1Tm *~歃 yg`b@`.njxN59,-^ڣ>۔]C=@jmBaJ0ĹLݠ8{^wSJ]9*G9s7K D&x갭Q4})S$Td^55gh=C %ǚ{Q4ǝP~$vBEHV+W1]V'o&|u0pg: حSljxs[l99 8&S߱] %1 ծPEd9hԬrm0v@hA@ vg=ly·m\>!b!f81 {< ejV(Lc0y߯rL D.c&>w@ j^l<;) G'πAISp`vySFk+!p{Y_X=pBIȺBq}sHL@Jq_i'zK *- FymSQxԜe.P O?W߈^lu}eVG&{+o=&A[HBq=2Qᣒ#@@˃\ <)7O ɴ#ۢPhIXcT`Eg'de(w<ŬL0B+Ǟƅ#pp+A=RkܓU{ݢ+TSW[c+[ew(~Y@ȣ]a)ҹ]+\mcsO>@F@jʱ.Y7x*afcn 1(b).Ghq" Z8|ԣ鋻xMj4z}DS' FL%Ƅk6gI%A~"!ik$x'$ʡf%VÜW@j[w`>tQ`,xa޿{$: C#ID[4%`znPg@ӿ image/svg+xml synapse-1.100.0/docs/federate.md000066400000000000000000000071351455622526000164010ustar00rootroot00000000000000Setting up federation ===================== Federation is the process by which users on different servers can participate in the same room. For this to work, those other servers must be able to contact yours to send messages. The `server_name` configured in the Synapse configuration file (often `homeserver.yaml`) defines how resources (users, rooms, etc.) will be identified (eg: `@user:example.com`, `#room:example.com`). By default, it is also the domain that other servers will use to try to reach your server (via port 8448). This is easy to set up and will work provided you set the `server_name` to match your machine's public DNS hostname. For this default configuration to work, you will need to listen for TLS connections on port 8448. The preferred way to do that is by using a reverse proxy: see [the reverse proxy documentation](reverse_proxy.md) for instructions on how to correctly set one up. In some cases you might not want to run Synapse on the machine that has the `server_name` as its public DNS hostname, or you might want federation traffic to use a different port than 8448. For example, you might want to have your user names look like `@user:example.com`, but you want to run Synapse on `synapse.example.com` on port 443. This can be done using delegation, which allows an admin to control where federation traffic should be sent. See [the delegation documentation](delegate.md) for instructions on how to set this up. Once federation has been configured, you should be able to join a room over federation. A good place to start is `#synapse:matrix.org` - a room for Synapse admins. ## Troubleshooting You can use the [federation tester](https://matrix.org/federationtester) to check if your homeserver is configured correctly. Alternatively try the [JSON API used by the federation tester](https://matrix.org/federationtester/api/report?server_name=DOMAIN). Note that you'll have to modify this URL to replace `DOMAIN` with your `server_name`. Hitting the API directly provides extra detail. The typical failure mode for federation is that when the server tries to join a room, it is rejected with "401: Unauthorized". Generally this means that other servers in the room could not access yours. (Joining a room over federation is a complicated dance which requires connections in both directions). Another common problem is that people on other servers can't join rooms that you invite them to. This can be caused by an incorrectly-configured reverse proxy: see [the reverse proxy documentation](reverse_proxy.md) for instructions on how to correctly configure a reverse proxy. ### Known issues **HTTP `308 Permanent Redirect` redirects are not followed**: Due to missing features in the HTTP library used by Synapse, 308 redirects are currently not followed by federating servers, which can cause `M_UNKNOWN` or `401 Unauthorized` errors. This may affect users who are redirecting apex-to-www (e.g. `example.com` -> `www.example.com`), and especially users of the Kubernetes *Nginx Ingress* module, which uses 308 redirect codes by default. For those Kubernetes users, [this Stackoverflow post](https://stackoverflow.com/a/52617528/5096871) might be helpful. For other users, switching to a `301 Moved Permanently` code may be an option. 308 redirect codes will be supported properly in a future release of Synapse. ## Running a demo federation of Synapses If you want to get up and running quickly with a trio of homeservers in a private federation, there is a script in the `demo` directory. This is mainly useful just for development purposes. See [demo scripts](https://element-hq.github.io/synapse/develop/development/demo.html). synapse-1.100.0/docs/jwt.md000066400000000000000000000074041455622526000154250ustar00rootroot00000000000000# JWT Login Type Synapse comes with a non-standard login type to support [JSON Web Tokens](https://en.wikipedia.org/wiki/JSON_Web_Token). In general the documentation for [the login endpoint](https://matrix.org/docs/spec/client_server/r0.6.1#login) is still valid (and the mechanism works similarly to the [token based login](https://matrix.org/docs/spec/client_server/r0.6.1#token-based)). To log in using a JSON Web Token, clients should submit a `/login` request as follows: ```json { "type": "org.matrix.login.jwt", "token": "" } ``` The `token` field should include the JSON web token with the following claims: * A claim that encodes the local part of the user ID is required. By default, the `sub` (subject) claim is used, or a custom claim can be set in the configuration file. * The expiration time (`exp`), not before time (`nbf`), and issued at (`iat`) claims are optional, but validated if present. * The issuer (`iss`) claim is optional, but required and validated if configured. * The audience (`aud`) claim is optional, but required and validated if configured. Providing the audience claim when not configured will cause validation to fail. In the case that the token is not valid, the homeserver must respond with `403 Forbidden` and an error code of `M_FORBIDDEN`. As with other login types, there are additional fields (e.g. `device_id` and `initial_device_display_name`) which can be included in the above request. ## Preparing Synapse The JSON Web Token integration in Synapse uses the [`Authlib`](https://docs.authlib.org/en/latest/index.html) library, which must be installed as follows: * The relevant libraries are included in the Docker images and Debian packages provided by `matrix.org` so no further action is needed. * If you installed Synapse into a virtualenv, run `/path/to/env/bin/pip install synapse[jwt]` to install the necessary dependencies. * For other installation mechanisms, see the documentation provided by the maintainer. To enable the JSON web token integration, you should then add a `jwt_config` option to your configuration file. See the [configuration manual](usage/configuration/config_documentation.md#jwt_config) for some sample settings. ## How to test JWT as a developer Although JSON Web Tokens are typically generated from an external server, the example below uses a locally generated JWT. 1. Configure Synapse with JWT logins, note that this example uses a pre-shared secret and an algorithm of HS256: ```yaml jwt_config: enabled: true secret: "my-secret-token" algorithm: "HS256" ``` 2. Generate a JSON web token: You can use the following short Python snippet to generate a JWT protected by an HMAC. Take care that the `secret` and the algorithm given in the `header` match the entries from `jwt_config` above. ```python from authlib.jose import jwt header = {"alg": "HS256"} payload = {"sub": "user1", "aud": ["audience"]} secret = "my-secret-token" result = jwt.encode(header, payload, secret) print(result.decode("ascii")) ``` 3. Query for the login types and ensure `org.matrix.login.jwt` is there: ```bash curl http://localhost:8080/_matrix/client/r0/login ``` 4. Login used the generated JSON web token from above: ```bash $ curl http://localhost:8082/_matrix/client/r0/login -X POST \ --data '{"type":"org.matrix.login.jwt","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.Ag71GT8v01UO3w80aqRPTeuVPBIBZkYhNTJJ-_-zQIc"}' { "access_token": "", "device_id": "ACBDEFGHI", "home_server": "localhost:8080", "user_id": "@test-user:localhost:8480" } ``` You should now be able to use the returned access token to query the client API. synapse-1.100.0/docs/log_contexts.md000066400000000000000000000325121455622526000173270ustar00rootroot00000000000000# Log Contexts To help track the processing of individual requests, synapse uses a '`log context`' to track which request it is handling at any given moment. This is done via a thread-local variable; a `logging.Filter` is then used to fish the information back out of the thread-local variable and add it to each log record. Logcontexts are also used for CPU and database accounting, so that we can track which requests were responsible for high CPU use or database activity. The `synapse.logging.context` module provides facilities for managing the current log context (as well as providing the `LoggingContextFilter` class). Asynchronous functions make the whole thing complicated, so this document describes how it all works, and how to write code which follows the rules. In this document, "awaitable" refers to any object which can be `await`ed. In the context of Synapse, that normally means either a coroutine or a Twisted [`Deferred`](https://twistedmatrix.com/documents/current/api/twisted.internet.defer.Deferred.html). ## Logcontexts without asynchronous code In the absence of any asynchronous voodoo, things are simple enough. As with any code of this nature, the rule is that our function should leave things as it found them: ```python from synapse.logging import context # omitted from future snippets def handle_request(request_id): request_context = context.LoggingContext() calling_context = context.set_current_context(request_context) try: request_context.request = request_id do_request_handling() logger.debug("finished") finally: context.set_current_context(calling_context) def do_request_handling(): logger.debug("phew") # this will be logged against request_id ``` LoggingContext implements the context management methods, so the above can be written much more succinctly as: ```python def handle_request(request_id): with context.LoggingContext() as request_context: request_context.request = request_id do_request_handling() logger.debug("finished") def do_request_handling(): logger.debug("phew") ``` ## Using logcontexts with awaitables Awaitables break the linear flow of code so that there is no longer a single entry point where we should set the logcontext and a single exit point where we should remove it. Consider the example above, where `do_request_handling` needs to do some blocking operation, and returns an awaitable: ```python async def handle_request(request_id): with context.LoggingContext() as request_context: request_context.request = request_id await do_request_handling() logger.debug("finished") ``` In the above flow: - The logcontext is set - `do_request_handling` is called, and returns an awaitable - `handle_request` awaits the awaitable - Execution of `handle_request` is suspended So we have stopped processing the request (and will probably go on to start processing the next), without clearing the logcontext. To circumvent this problem, synapse code assumes that, wherever you have an awaitable, you will want to `await` it. To that end, wherever functions return awaitables, we adopt the following conventions: **Rules for functions returning awaitables:** > - If the awaitable is already complete, the function returns with the > same logcontext it started with. > - If the awaitable is incomplete, the function clears the logcontext > before returning; when the awaitable completes, it restores the > logcontext before running any callbacks. That sounds complicated, but actually it means a lot of code (including the example above) "just works". There are two cases: - If `do_request_handling` returns a completed awaitable, then the logcontext will still be in place. In this case, execution will continue immediately after the `await`; the "finished" line will be logged against the right context, and the `with` block restores the original context before we return to the caller. - If the returned awaitable is incomplete, `do_request_handling` clears the logcontext before returning. The logcontext is therefore clear when `handle_request` `await`s the awaitable. Once `do_request_handling`'s awaitable completes, it will reinstate the logcontext, before running the second half of `handle_request`, so again the "finished" line will be logged against the right context, and the `with` block restores the original context. As an aside, it's worth noting that `handle_request` follows our rules - though that only matters if the caller has its own logcontext which it cares about. The following sections describe pitfalls and helpful patterns when implementing these rules. Always await your awaitables ---------------------------- Whenever you get an awaitable back from a function, you should `await` on it as soon as possible. Do not pass go; do not do any logging; do not call any other functions. ```python async def fun(): logger.debug("starting") await do_some_stuff() # just like this coro = more_stuff() result = await coro # also fine, of course return result ``` Provided this pattern is followed all the way back up to the callchain to where the logcontext was set, this will make things work out ok: provided `do_some_stuff` and `more_stuff` follow the rules above, then so will `fun`. It's all too easy to forget to `await`: for instance if we forgot that `do_some_stuff` returned an awaitable, we might plough on regardless. This leads to a mess; it will probably work itself out eventually, but not before a load of stuff has been logged against the wrong context. (Normally, other things will break, more obviously, if you forget to `await`, so this tends not to be a major problem in practice.) Of course sometimes you need to do something a bit fancier with your awaitable - not all code follows the linear A-then-B-then-C pattern. Notes on implementing more complex patterns are in later sections. ## Where you create a new awaitable, make it follow the rules Most of the time, an awaitable comes from another synapse function. Sometimes, though, we need to make up a new awaitable, or we get an awaitable back from external code. We need to make it follow our rules. The easy way to do it is by using `context.make_deferred_yieldable`. Suppose we want to implement `sleep`, which returns a deferred which will run its callbacks after a given number of seconds. That might look like: ```python # not a logcontext-rules-compliant function def get_sleep_deferred(seconds): d = defer.Deferred() reactor.callLater(seconds, d.callback, None) return d ``` That doesn't follow the rules, but we can fix it by calling it through `context.make_deferred_yieldable`: ```python async def sleep(seconds): return await context.make_deferred_yieldable(get_sleep_deferred(seconds)) ``` ## Fire-and-forget Sometimes you want to fire off a chain of execution, but not wait for its result. That might look a bit like this: ```python async def do_request_handling(): await foreground_operation() # *don't* do this background_operation() logger.debug("Request handling complete") async def background_operation(): await first_background_step() logger.debug("Completed first step") await second_background_step() logger.debug("Completed second step") ``` The above code does a couple of steps in the background after `do_request_handling` has finished. The log lines are still logged against the `request_context` logcontext, which may or may not be desirable. There are two big problems with the above, however. The first problem is that, if `background_operation` returns an incomplete awaitable, it will expect its caller to `await` immediately, so will have cleared the logcontext. In this example, that means that 'Request handling complete' will be logged without any context. The second problem, which is potentially even worse, is that when the awaitable returned by `background_operation` completes, it will restore the original logcontext. There is nothing waiting on that awaitable, so the logcontext will leak into the reactor and possibly get attached to some arbitrary future operation. There are two potential solutions to this. One option is to surround the call to `background_operation` with a `PreserveLoggingContext` call. That will reset the logcontext before starting `background_operation` (so the context restored when the deferred completes will be the empty logcontext), and will restore the current logcontext before continuing the foreground process: ```python async def do_request_handling(): await foreground_operation() # start background_operation off in the empty logcontext, to # avoid leaking the current context into the reactor. with PreserveLoggingContext(): background_operation() # this will now be logged against the request context logger.debug("Request handling complete") ``` Obviously that option means that the operations done in `background_operation` would be not be logged against a logcontext (though that might be fixed by setting a different logcontext via a `with LoggingContext(...)` in `background_operation`). The second option is to use `context.run_in_background`, which wraps a function so that it doesn't reset the logcontext even when it returns an incomplete awaitable, and adds a callback to the returned awaitable to reset the logcontext. In other words, it turns a function that follows the Synapse rules about logcontexts and awaitables into one which behaves more like an external function --- the opposite operation to that described in the previous section. It can be used like this: ```python async def do_request_handling(): await foreground_operation() context.run_in_background(background_operation) # this will now be logged against the request context logger.debug("Request handling complete") ``` ## Passing synapse deferreds into third-party functions A typical example of this is where we want to collect together two or more awaitables via `defer.gatherResults`: ```python a1 = operation1() a2 = operation2() a3 = defer.gatherResults([a1, a2]) ``` This is really a variation of the fire-and-forget problem above, in that we are firing off `a1` and `a2` without awaiting on them. The difference is that we now have third-party code attached to their callbacks. Anyway either technique given in the [Fire-and-forget](#fire-and-forget) section will work. Of course, the new awaitable returned by `gather` needs to be wrapped in order to make it follow the logcontext rules before we can yield it, as described in [Where you create a new awaitable, make it follow the rules](#where-you-create-a-new-awaitable-make-it-follow-the-rules). So, option one: reset the logcontext before starting the operations to be gathered: ```python async def do_request_handling(): with PreserveLoggingContext(): a1 = operation1() a2 = operation2() result = await defer.gatherResults([a1, a2]) ``` In this case particularly, though, option two, of using `context.run_in_background` almost certainly makes more sense, so that `operation1` and `operation2` are both logged against the original logcontext. This looks like: ```python async def do_request_handling(): a1 = context.run_in_background(operation1) a2 = context.run_in_background(operation2) result = await make_deferred_yieldable(defer.gatherResults([a1, a2])) ``` ## A note on garbage-collection of awaitable chains It turns out that our logcontext rules do not play nicely with awaitable chains which get orphaned and garbage-collected. Imagine we have some code that looks like this: ```python listener_queue = [] def on_something_interesting(): for d in listener_queue: d.callback("foo") async def await_something_interesting(): new_awaitable = defer.Deferred() listener_queue.append(new_awaitable) with PreserveLoggingContext(): await new_awaitable ``` Obviously, the idea here is that we have a bunch of things which are waiting for an event. (It's just an example of the problem here, but a relatively common one.) Now let's imagine two further things happen. First of all, whatever was waiting for the interesting thing goes away. (Perhaps the request times out, or something *even more* interesting happens.) Secondly, let's suppose that we decide that the interesting thing is never going to happen, and we reset the listener queue: ```python def reset_listener_queue(): listener_queue.clear() ``` So, both ends of the awaitable chain have now dropped their references, and the awaitable chain is now orphaned, and will be garbage-collected at some point. Note that `await_something_interesting` is a coroutine, which Python implements as a generator function. When Python garbage-collects generator functions, it gives them a chance to clean up by making the `await` (or `yield`) raise a `GeneratorExit` exception. In our case, that means that the `__exit__` handler of `PreserveLoggingContext` will carefully restore the request context, but there is now nothing waiting for its return, so the request context is never cleared. To reiterate, this problem only arises when *both* ends of a awaitable chain are dropped. Dropping the the reference to an awaitable you're supposed to be awaiting is bad practice, so this doesn't actually happen too much. Unfortunately, when it does happen, it will lead to leaked logcontexts which are incredibly hard to track down. synapse-1.100.0/docs/manhole.md000066400000000000000000000062561455622526000162500ustar00rootroot00000000000000Using the synapse manhole ========================= The "manhole" allows server administrators to access a Python shell on a running Synapse installation. This is a very powerful mechanism for administration and debugging. **_Security Warning_** Note that this will give administrative access to synapse to **all users** with shell access to the server. It should therefore **not** be enabled in environments where untrusted users have shell access. ## Configuring the manhole To enable it, first add the `manhole` listener configuration in your `homeserver.yaml`. You can find information on how to do that in the [configuration manual](usage/configuration/config_documentation.md#manhole_settings). The configuration is slightly different if you're using docker. #### Docker config If you are using Docker, set `bind_addresses` to `['0.0.0.0']` as shown: ```yaml listeners: - port: 9000 bind_addresses: ['0.0.0.0'] type: manhole ``` When using `docker run` to start the server, you will then need to change the command to the following to include the `manhole` port forwarding. The `-p 127.0.0.1:9000:9000` below is important: it ensures that access to the `manhole` is only possible for local users. ```bash docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ -p 127.0.0.1:9000:9000 \ vectorim/synapse:latest ``` #### Native config If you are not using docker, set `bind_addresses` to `['::1', '127.0.0.1']` as shown. The `bind_addresses` in the example below is important: it ensures that access to the `manhole` is only possible for local users). ```yaml listeners: - port: 9000 bind_addresses: ['::1', '127.0.0.1'] type: manhole ``` ### Security settings The following config options are available: - `username` - The username for the manhole (defaults to `matrix`) - `password` - The password for the manhole (defaults to `rabbithole`) - `ssh_priv_key` - The path to a private SSH key (defaults to a hardcoded value) - `ssh_pub_key` - The path to a public SSH key (defaults to a hardcoded value) For example: ```yaml manhole_settings: username: manhole password: mypassword ssh_priv_key: "/home/synapse/manhole_keys/id_rsa" ssh_pub_key: "/home/synapse/manhole_keys/id_rsa.pub" ``` ## Accessing synapse manhole Then restart synapse, and point an ssh client at port 9000 on localhost, using the username and password configured in `homeserver.yaml` - with the default configuration, this would be: ```bash ssh -p9000 matrix@localhost ``` Then enter the password when prompted (the default is `rabbithole`). This gives a Python REPL in which `hs` gives access to the `synapse.server.HomeServer` object - which in turn gives access to many other parts of the process. Note that, prior to Synapse 1.41, any call which returns a coroutine will need to be wrapped in `ensureDeferred`. As a simple example, retrieving an event from the database: ```pycon >>> from twisted.internet import defer >>> defer.ensureDeferred(hs.get_datastores().main.get_event('$1416420717069yeQaw:matrix.org')) > ``` synapse-1.100.0/docs/media_repository.md000066400000000000000000000055501455622526000201770ustar00rootroot00000000000000# Media Repository *Synapse implementation-specific details for the media repository* The media repository * stores avatars, attachments and their thumbnails for media uploaded by local users. * caches avatars, attachments and their thumbnails for media uploaded by remote users. * caches resources and thumbnails used for URL previews. All media in Matrix can be identified by a unique [MXC URI](https://spec.matrix.org/latest/client-server-api/#matrix-content-mxc-uris), consisting of a server name and media ID: ``` mxc:/// ``` ## Local Media Synapse generates 24 character media IDs for content uploaded by local users. These media IDs consist of upper and lowercase letters and are case-sensitive. Other homeserver implementations may generate media IDs differently. Local media is recorded in the `local_media_repository` table, which includes metadata such as MIME types, upload times and file sizes. Note that this table is shared by the URL cache, which has a different media ID scheme. ### Paths A file with media ID `aabbcccccccccccccccccccc` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` local_content/aa/bb/cccccccccccccccccccc local_thumbnails/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale ``` ## Remote Media When media from a remote homeserver is requested from Synapse, it is assigned a local `filesystem_id`, with the same format as locally-generated media IDs, as described above. A record of remote media is stored in the `remote_media_cache` table, which can be used to map remote MXC URIs (server names and media IDs) to local `filesystem_id`s. ### Paths A file from `matrix.org` with `filesystem_id` `aabbcccccccccccccccccccc` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` remote_content/matrix.org/aa/bb/cccccccccccccccccccc remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg-scale ``` Older thumbnails may omit the thumbnailing method: ``` remote_thumbnail/matrix.org/aa/bb/cccccccccccccccccccc/128-96-image-jpeg ``` Note that `remote_thumbnail/` does not have an `s`. ## URL Previews When generating previews for URLs, Synapse may download and cache various resources, including images. These resources are assigned temporary media IDs of the form `yyyy-mm-dd_aaaaaaaaaaaaaaaa`, where `yyyy-mm-dd` is the current date and `aaaaaaaaaaaaaaaa` is a random sequence of 16 case-sensitive letters. The metadata for these cached resources is stored in the `local_media_repository` and `local_media_repository_url_cache` tables. Resources for URL previews are deleted after a few days. ### Paths The file with media ID `yyyy-mm-dd_aaaaaaaaaaaaaaaa` and its `128x96` `image/jpeg` thumbnail, created by scaling, would be stored at: ``` url_cache/yyyy-mm-dd/aaaaaaaaaaaaaaaa url_cache_thumbnails/yyyy-mm-dd/aaaaaaaaaaaaaaaa/128-96-image-jpeg-scale ``` synapse-1.100.0/docs/message_retention_policies.md000066400000000000000000000203551455622526000222230ustar00rootroot00000000000000# Message retention policies Synapse admins can enable support for message retention policies on their homeserver. Message retention policies exist at a room level, follow the semantics described in [MSC1763](https://github.com/matrix-org/matrix-doc/blob/matthew/msc1763/proposals/1763-configurable-retention-periods.md), and allow server and room admins to configure how long messages should be kept in a homeserver's database before being purged from it. **Please note that, as this feature isn't part of the Matrix specification yet, this implementation is to be considered as experimental.** A message retention policy is mainly defined by its `max_lifetime` parameter, which defines how long a message can be kept around after it was sent to the room. If a room doesn't have a message retention policy, and there's no default one for a given server, then no message sent in that room is ever purged on that server. MSC1763 also specifies semantics for a `min_lifetime` parameter which defines the amount of time after which an event _can_ get purged (after it was sent to the room), but Synapse doesn't currently support it beyond registering it. Both `max_lifetime` and `min_lifetime` are optional parameters. Note that message retention policies don't apply to state events. Once an event reaches its expiry date (defined as the time it was sent plus the value for `max_lifetime` in the room), two things happen: * Synapse stops serving the event to clients via any endpoint. * The message gets picked up by the next purge job (see the "Purge jobs" section) and is removed from Synapse's database. Since purge jobs don't run continuously, this means that an event might stay in a server's database for longer than the value for `max_lifetime` in the room would allow, though hidden from clients. Similarly, if a server (with support for message retention policies enabled) receives from another server an event that should have been purged according to its room's policy, then the receiving server will process and store that event until it's picked up by the next purge job, though it will always hide it from clients. Synapse requires at least one message in each room, so it will never delete the last message in a room. It will, however, hide it from clients. ## Server configuration Support for this feature can be enabled and configured by adding a the `retention` in the Synapse configuration file (see [configuration manual](usage/configuration/config_documentation.md#retention)). To enable support for message retention policies, set the setting `enabled` in this section to `true`. ### Default policy A default message retention policy is a policy defined in Synapse's configuration that is used by Synapse for every room that doesn't have a message retention policy configured in its state. This allows server admins to ensure that messages are never kept indefinitely in a server's database. A default policy can be defined as such, by adding the `retention` option in the configuration file and adding these sub-options: ```yaml default_policy: min_lifetime: 1d max_lifetime: 1y ``` Here, `min_lifetime` and `max_lifetime` have the same meaning and level of support as previously described. They can be expressed either as a duration (using the units `s` (seconds), `m` (minutes), `h` (hours), `d` (days), `w` (weeks) and `y` (years)) or as a number of milliseconds. ### Purge jobs Purge jobs are the jobs that Synapse runs in the background to purge expired events from the database. They are only run if support for message retention policies is enabled in the server's configuration. If no configuration for purge jobs is configured by the server admin, Synapse will use a default configuration, which is described here in the [configuration manual](usage/configuration/config_documentation.md#retention). Some server admins might want a finer control on when events are removed depending on an event's room's policy. This can be done by setting the `purge_jobs` sub-section in the `retention` section of the configuration file. An example of such configuration could be: ```yaml purge_jobs: - longest_max_lifetime: 3d interval: 12h - shortest_max_lifetime: 3d longest_max_lifetime: 1w interval: 1d - shortest_max_lifetime: 1w interval: 2d ``` In this example, we define three jobs: * one that runs twice a day (every 12 hours) and purges events in rooms which policy's `max_lifetime` is lower or equal to 3 days. * one that runs once a day and purges events in rooms which policy's `max_lifetime` is between 3 days and a week. * one that runs once every 2 days and purges events in rooms which policy's `max_lifetime` is greater than a week. Note that this example is tailored to show different configurations and features slightly more jobs than it's probably necessary (in practice, a server admin would probably consider it better to replace the two last jobs with one that runs once a day and handles rooms which policy's `max_lifetime` is greater than 3 days). Keep in mind, when configuring these jobs, that a purge job can become quite heavy on the server if it targets many rooms, therefore prefer having jobs with a low interval that target a limited set of rooms. Also make sure to include a job with no minimum and one with no maximum to make sure your configuration handles every policy. As previously mentioned in this documentation, while a purge job that runs e.g. every day means that an expired event might stay in the database for up to a day after its expiry, Synapse hides expired events from clients as soon as they expire, so the event is not visible to local users between its expiry date and the moment it gets purged from the server's database. ### Lifetime limits Server admins can set limits on the values of `max_lifetime` to use when purging old events in a room. These limits can be defined under the `retention` option in the configuration file: ```yaml allowed_lifetime_min: 1d allowed_lifetime_max: 1y ``` The limits are considered when running purge jobs. If necessary, the effective value of `max_lifetime` will be brought between `allowed_lifetime_min` and `allowed_lifetime_max` (inclusive). This means that, if the value of `max_lifetime` defined in the room's state is lower than `allowed_lifetime_min`, the value of `allowed_lifetime_min` will be used instead. Likewise, if the value of `max_lifetime` is higher than `allowed_lifetime_max`, the value of `allowed_lifetime_max` will be used instead. In the example above, we ensure Synapse never deletes events that are less than one day old, and that it always deletes events that are over a year old. If a default policy is set, and its `max_lifetime` value is lower than `allowed_lifetime_min` or higher than `allowed_lifetime_max`, the same process applies. Both parameters are optional; if one is omitted Synapse won't use it to adjust the effective value of `max_lifetime`. Like other settings in this section, these parameters can be expressed either as a duration or as a number of milliseconds. ## Room configuration To configure a room's message retention policy, a room's admin or moderator needs to send a state event in that room with the type `m.room.retention` and the following content: ```json { "max_lifetime": ... } ``` In this event's content, the `max_lifetime` parameter has the same meaning as previously described, and needs to be expressed in milliseconds. The event's content can also include a `min_lifetime` parameter, which has the same meaning and limited support as previously described. Note that over every server in the room, only the ones with support for message retention policies will actually remove expired events. This support is currently not enabled by default in Synapse. ## Note on reclaiming disk space While purge jobs actually delete data from the database, the disk space used by the database might not decrease immediately on the database's host. However, even though the database engine won't free up the disk space, it will start writing new data into where the purged data was. If you want to reclaim the freed disk space anyway and return it to the operating system, the server admin needs to run `VACUUM FULL;` (or `VACUUM;` for SQLite databases) on Synapse's database (see the related [PostgreSQL documentation](https://www.postgresql.org/docs/current/sql-vacuum.html)). synapse-1.100.0/docs/metrics-howto.md000066400000000000000000000466231455622526000174330ustar00rootroot00000000000000# How to monitor Synapse metrics using Prometheus 1. Install Prometheus: Follow instructions at 1. Enable Synapse metrics: In `homeserver.yaml`, make sure `enable_metrics` is set to `True`. 1. Enable the `/_synapse/metrics` Synapse endpoint that Prometheus uses to collect data: There are two methods of enabling the metrics endpoint in Synapse. The first serves the metrics as a part of the usual web server and can be enabled by adding the `metrics` resource to the existing listener as such as in this example: ```yaml listeners: - port: 8008 tls: false type: http x_forwarded: true bind_addresses: ['::1', '127.0.0.1'] resources: # added "metrics" in this line - names: [client, federation, metrics] compress: false ``` This provides a simple way of adding metrics to your Synapse installation, and serves under `/_synapse/metrics`. If you do not wish your metrics be publicly exposed, you will need to either filter it out at your load balancer, or use the second method. The second method runs the metrics server on a different port, in a different thread to Synapse. This can make it more resilient to heavy load meaning metrics cannot be retrieved, and can be exposed to just internal networks easier. The served metrics are available over HTTP only, and will be available at `/_synapse/metrics`. Add a new listener to homeserver.yaml as in this example: ```yaml listeners: - port: 8008 tls: false type: http x_forwarded: true bind_addresses: ['::1', '127.0.0.1'] resources: - names: [client, federation] compress: false # beginning of the new metrics listener - port: 9000 type: metrics bind_addresses: ['::1', '127.0.0.1'] ``` 1. Restart Synapse. 1. Add a Prometheus target for Synapse. It needs to set the `metrics_path` to a non-default value (under `scrape_configs`): ```yaml - job_name: "synapse" scrape_interval: 15s metrics_path: "/_synapse/metrics" static_configs: - targets: ["my.server.here:port"] ``` where `my.server.here` is the IP address of Synapse, and `port` is the listener port configured with the `metrics` resource. If your prometheus is older than 1.5.2, you will need to replace `static_configs` in the above with `target_groups`. 1. Restart Prometheus. 1. Consider using the [grafana dashboard](https://github.com/element-hq/synapse/tree/master/contrib/grafana/) and required [recording rules](https://github.com/element-hq/synapse/tree/master/contrib/prometheus/) ## Monitoring workers To monitor a Synapse installation using [workers](workers.md), every worker needs to be monitored independently, in addition to the main homeserver process. This is because workers don't send their metrics to the main homeserver process, but expose them directly (if they are configured to do so). To allow collecting metrics from a worker, you need to add a `metrics` listener to its configuration, by adding the following under `worker_listeners`: ```yaml - type: metrics bind_address: '' port: 9101 ``` The `bind_address` and `port` parameters should be set so that the resulting listener can be reached by prometheus, and they don't clash with an existing worker. With this example, the worker's metrics would then be available on `http://127.0.0.1:9101`. Example Prometheus target for Synapse with workers: ```yaml - job_name: "synapse" scrape_interval: 15s metrics_path: "/_synapse/metrics" static_configs: - targets: ["my.server.here:port"] labels: instance: "my.server" job: "master" index: 1 - targets: ["my.workerserver.here:port"] labels: instance: "my.server" job: "generic_worker" index: 1 - targets: ["my.workerserver.here:port"] labels: instance: "my.server" job: "generic_worker" index: 2 - targets: ["my.workerserver.here:port"] labels: instance: "my.server" job: "media_repository" index: 1 ``` Labels (`instance`, `job`, `index`) can be defined as anything. The labels are used to group graphs in grafana. ## Renaming of metrics & deprecation of old names in 1.2 Synapse 1.2 updates the Prometheus metrics to match the naming convention of the upstream `prometheus_client`. The old names are considered deprecated and will be removed in a future version of Synapse. **The old names will be disabled by default in Synapse v1.71.0 and removed altogether in Synapse v1.73.0.** | New Name | Old Name | | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | python_gc_objects_collected_total | python_gc_objects_collected | | python_gc_objects_uncollectable_total | python_gc_objects_uncollectable | | python_gc_collections_total | python_gc_collections | | process_cpu_seconds_total | process_cpu_seconds | | synapse_federation_client_sent_transactions_total | synapse_federation_client_sent_transactions | | synapse_federation_client_events_processed_total | synapse_federation_client_events_processed | | synapse_event_processing_loop_count_total | synapse_event_processing_loop_count | | synapse_event_processing_loop_room_count_total | synapse_event_processing_loop_room_count | | synapse_util_caches_cache_hits | synapse_util_caches_cache:hits | | synapse_util_caches_cache_size | synapse_util_caches_cache:size | | synapse_util_caches_cache_evicted_size | synapse_util_caches_cache:evicted_size | | synapse_util_caches_cache | synapse_util_caches_cache:total | | synapse_util_caches_response_cache_size | synapse_util_caches_response_cache:size | | synapse_util_caches_response_cache_hits | synapse_util_caches_response_cache:hits | | synapse_util_caches_response_cache_evicted_size | synapse_util_caches_response_cache:evicted_size | | synapse_util_metrics_block_count_total | synapse_util_metrics_block_count | | synapse_util_metrics_block_time_seconds_total | synapse_util_metrics_block_time_seconds | | synapse_util_metrics_block_ru_utime_seconds_total | synapse_util_metrics_block_ru_utime_seconds | | synapse_util_metrics_block_ru_stime_seconds_total | synapse_util_metrics_block_ru_stime_seconds | | synapse_util_metrics_block_db_txn_count_total | synapse_util_metrics_block_db_txn_count | | synapse_util_metrics_block_db_txn_duration_seconds_total | synapse_util_metrics_block_db_txn_duration_seconds | | synapse_util_metrics_block_db_sched_duration_seconds_total | synapse_util_metrics_block_db_sched_duration_seconds | | synapse_background_process_start_count_total | synapse_background_process_start_count | | synapse_background_process_ru_utime_seconds_total | synapse_background_process_ru_utime_seconds | | synapse_background_process_ru_stime_seconds_total | synapse_background_process_ru_stime_seconds | | synapse_background_process_db_txn_count_total | synapse_background_process_db_txn_count | | synapse_background_process_db_txn_duration_seconds_total | synapse_background_process_db_txn_duration_seconds | | synapse_background_process_db_sched_duration_seconds_total | synapse_background_process_db_sched_duration_seconds | | synapse_storage_events_persisted_events_total | synapse_storage_events_persisted_events | | synapse_storage_events_persisted_events_sep_total | synapse_storage_events_persisted_events_sep | | synapse_storage_events_state_delta_total | synapse_storage_events_state_delta | | synapse_storage_events_state_delta_single_event_total | synapse_storage_events_state_delta_single_event | | synapse_storage_events_state_delta_reuse_delta_total | synapse_storage_events_state_delta_reuse_delta | | synapse_federation_server_received_pdus_total | synapse_federation_server_received_pdus | | synapse_federation_server_received_edus_total | synapse_federation_server_received_edus | | synapse_handler_presence_notified_presence_total | synapse_handler_presence_notified_presence | | synapse_handler_presence_federation_presence_out_total | synapse_handler_presence_federation_presence_out | | synapse_handler_presence_presence_updates_total | synapse_handler_presence_presence_updates | | synapse_handler_presence_timers_fired_total | synapse_handler_presence_timers_fired | | synapse_handler_presence_federation_presence_total | synapse_handler_presence_federation_presence | | synapse_handler_presence_bump_active_time_total | synapse_handler_presence_bump_active_time | | synapse_federation_client_sent_edus_total | synapse_federation_client_sent_edus | | synapse_federation_client_sent_pdu_destinations_count_total | synapse_federation_client_sent_pdu_destinations:count | | synapse_federation_client_sent_pdu_destinations_total | synapse_federation_client_sent_pdu_destinations:total | | synapse_handlers_appservice_events_processed_total | synapse_handlers_appservice_events_processed | | synapse_notifier_notified_events_total | synapse_notifier_notified_events | | synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter_total | synapse_push_bulk_push_rule_evaluator_push_rules_invalidation_counter | | synapse_push_bulk_push_rule_evaluator_push_rules_state_size_counter_total | synapse_push_bulk_push_rule_evaluator_push_rules_state_size_counter | | synapse_http_httppusher_http_pushes_processed_total | synapse_http_httppusher_http_pushes_processed | | synapse_http_httppusher_http_pushes_failed_total | synapse_http_httppusher_http_pushes_failed | | synapse_http_httppusher_badge_updates_processed_total | synapse_http_httppusher_badge_updates_processed | | synapse_http_httppusher_badge_updates_failed_total | synapse_http_httppusher_badge_updates_failed | | synapse_admin_mau_current | synapse_admin_mau:current | | synapse_admin_mau_max | synapse_admin_mau:max | | synapse_admin_mau_registered_reserved_users | synapse_admin_mau:registered_reserved_users | Removal of deprecated metrics & time based counters becoming histograms in 0.31.0 --------------------------------------------------------------------------------- The duplicated metrics deprecated in Synapse 0.27.0 have been removed. All time duration-based metrics have been changed to be seconds. This affects: | msec -> sec metrics | | -------------------------------------- | | python_gc_time | | python_twisted_reactor_tick_time | | synapse_storage_query_time | | synapse_storage_schedule_time | | synapse_storage_transaction_time | Several metrics have been changed to be histograms, which sort entries into buckets and allow better analysis. The following metrics are now histograms: | Altered metrics | | ------------------------------------------------ | | python_gc_time | | python_twisted_reactor_pending_calls | | python_twisted_reactor_tick_time | | synapse_http_server_response_time_seconds | | synapse_storage_query_time | | synapse_storage_schedule_time | | synapse_storage_transaction_time | Block and response metrics renamed for 0.27.0 --------------------------------------------- Synapse 0.27.0 begins the process of rationalising the duplicate `*:count` metrics reported for the resource tracking for code blocks and HTTP requests. At the same time, the corresponding `*:total` metrics are being renamed, as the `:total` suffix no longer makes sense in the absence of a corresponding `:count` metric. To enable a graceful migration path, this release just adds new names for the metrics being renamed. A future release will remove the old ones. The following table shows the new metrics, and the old metrics which they are replacing. | New name | Old name | | ------------------------------------------------------------- | ---------------------------------------------------------- | | synapse_util_metrics_block_count | synapse_util_metrics_block_timer:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_ru_utime:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_ru_stime:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_db_txn_count:count | | synapse_util_metrics_block_count | synapse_util_metrics_block_db_txn_duration:count | | synapse_util_metrics_block_time_seconds | synapse_util_metrics_block_timer:total | | synapse_util_metrics_block_ru_utime_seconds | synapse_util_metrics_block_ru_utime:total | | synapse_util_metrics_block_ru_stime_seconds | synapse_util_metrics_block_ru_stime:total | | synapse_util_metrics_block_db_txn_count | synapse_util_metrics_block_db_txn_count:total | | synapse_util_metrics_block_db_txn_duration_seconds | synapse_util_metrics_block_db_txn_duration:total | | synapse_http_server_response_count | synapse_http_server_requests | | synapse_http_server_response_count | synapse_http_server_response_time:count | | synapse_http_server_response_count | synapse_http_server_response_ru_utime:count | | synapse_http_server_response_count | synapse_http_server_response_ru_stime:count | | synapse_http_server_response_count | synapse_http_server_response_db_txn_count:count | | synapse_http_server_response_count | synapse_http_server_response_db_txn_duration:count | | synapse_http_server_response_time_seconds | synapse_http_server_response_time:total | | synapse_http_server_response_ru_utime_seconds | synapse_http_server_response_ru_utime:total | | synapse_http_server_response_ru_stime_seconds | synapse_http_server_response_ru_stime:total | | synapse_http_server_response_db_txn_count | synapse_http_server_response_db_txn_count:total | | synapse_http_server_response_db_txn_duration_seconds | synapse_http_server_response_db_txn_duration:total | Standard Metric Names --------------------- As of synapse version 0.18.2, the format of the process-wide metrics has been changed to fit prometheus standard naming conventions. Additionally the units have been changed to seconds, from milliseconds. | New name | Old name | | ---------------------------------------- | --------------------------------- | | process_cpu_user_seconds_total | process_resource_utime / 1000 | | process_cpu_system_seconds_total | process_resource_stime / 1000 | | process_open_fds (no \'type\' label) | process_fds | The python-specific counts of garbage collector performance have been renamed. | New name | Old name | | -------------------------------- | -------------------------- | | python_gc_time | reactor_gc_time | | python_gc_unreachable_total | reactor_gc_unreachable | | python_gc_counts | reactor_gc_counts | The twisted-specific reactor metrics have been renamed. | New name | Old name | | -------------------------------------- | ----------------------- | | python_twisted_reactor_pending_calls | reactor_pending_calls | | python_twisted_reactor_tick_time | reactor_tick_time | synapse-1.100.0/docs/modules/000077500000000000000000000000001455622526000157425ustar00rootroot00000000000000synapse-1.100.0/docs/modules/account_data_callbacks.md000066400000000000000000000064021455622526000227120ustar00rootroot00000000000000# Account data callbacks Account data callbacks allow module developers to react to changes of the account data of local users. Account data callbacks can be registered using the module API's `register_account_data_callbacks` method. ## Callbacks The available account data callbacks are: ### `on_account_data_updated` _First introduced in Synapse v1.57.0_ ```python async def on_account_data_updated( user_id: str, room_id: Optional[str], account_data_type: str, content: "synapse.module_api.JsonDict", ) -> None: ``` Called after user's account data has been updated. The module is given the Matrix ID of the user whose account data is changing, the room ID the data is associated with, the type associated with the change, as well as the new content. If the account data is not associated with a specific room, then the room ID is `None`. This callback is triggered when new account data is added or when the data associated with a given type (and optionally room) changes. This includes deletion, since in Matrix, deleting account data consists of replacing the data associated with a given type (and optionally room) with an empty dictionary (`{}`). Note that this doesn't trigger when changing the tags associated with a room, as these are processed separately by Synapse. If multiple modules implement this callback, Synapse runs them all in order. ## Example The example below is a module that implements the `on_account_data_updated` callback, and sends an event to an audit room when a user changes their account data. ```python import json import attr from typing import Any, Dict, Optional from synapse.module_api import JsonDict, ModuleApi from synapse.module_api.errors import ConfigError @attr.s(auto_attribs=True) class CustomAccountDataConfig: audit_room: str sender: str class CustomAccountDataModule: def __init__(self, config: CustomAccountDataConfig, api: ModuleApi): self.api = api self.config = config self.api.register_account_data_callbacks( on_account_data_updated=self.log_new_account_data, ) @staticmethod def parse_config(config: Dict[str, Any]) -> CustomAccountDataConfig: def check_in_config(param: str): if param not in config: raise ConfigError(f"'{param}' is required") check_in_config("audit_room") check_in_config("sender") return CustomAccountDataConfig( audit_room=config["audit_room"], sender=config["sender"], ) async def log_new_account_data( self, user_id: str, room_id: Optional[str], account_data_type: str, content: JsonDict, ) -> None: content_raw = json.dumps(content) msg_content = f"{user_id} has changed their account data for type {account_data_type} to: {content_raw}" if room_id is not None: msg_content += f" (in room {room_id})" await self.api.create_and_send_event_into_room( { "room_id": self.config.audit_room, "sender": self.config.sender, "type": "m.room.message", "content": { "msgtype": "m.text", "body": msg_content } } ) ``` synapse-1.100.0/docs/modules/account_validity_callbacks.md000066400000000000000000000042201455622526000236220ustar00rootroot00000000000000# Account validity callbacks Account validity callbacks allow module developers to add extra steps to verify the validity on an account, i.e. see if a user can be granted access to their account on the Synapse instance. Account validity callbacks can be registered using the module API's `register_account_validity_callbacks` method. The available account validity callbacks are: ### `is_user_expired` _First introduced in Synapse v1.39.0_ ```python async def is_user_expired(user: str) -> Optional[bool] ``` Called when processing any authenticated request (except for logout requests). The module can return a `bool` to indicate whether the user has expired and should be locked out of their account, or `None` if the module wasn't able to figure it out. The user is represented by their Matrix user ID (e.g. `@alice:example.com`). If the module returns `True`, the current request will be denied with the error code `ORG_MATRIX_EXPIRED_ACCOUNT` and the HTTP status code 403. Note that this doesn't invalidate the user's access token. If multiple modules implement this callback, they will be considered in order. If a callback returns `None`, Synapse falls through to the next one. The value of the first callback that does not return `None` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `on_user_registration` _First introduced in Synapse v1.39.0_ ```python async def on_user_registration(user: str) -> None ``` Called after successfully registering a user, in case the module needs to perform extra operations to keep track of them. (e.g. add them to a database table). The user is represented by their Matrix user ID. If multiple modules implement this callback, Synapse runs them all in order. ### `on_user_login` _First introduced in Synapse v1.98.0_ ```python async def on_user_login(user_id: str, auth_provider_type: str, auth_provider_id: str) -> None ``` Called after successfully login or registration of a user for cases when module needs to perform extra operations after auth. represented by their Matrix user ID. If multiple modules implement this callback, Synapse runs them all in order. synapse-1.100.0/docs/modules/add_extra_fields_to_client_events_unsigned.md000066400000000000000000000016661455622526000270760ustar00rootroot00000000000000# Add extra fields to client events unsigned section callbacks _First introduced in Synapse v1.96.0_ This callback allows modules to add extra fields to the unsigned section of events when they get sent down to clients. These get called *every* time an event is to be sent to clients, so care should be taken to ensure with respect to performance. ### API To register the callback, use `register_add_extra_fields_to_unsigned_client_event_callbacks` on the `ModuleApi`. The callback should be of the form ```python async def add_field_to_unsigned( event: EventBase, ) -> JsonDict: ``` where the extra fields to add to the event's unsigned section is returned. (Modules must not attempt to modify the `event` directly). This cannot be used to alter the "core" fields in the unsigned section emitted by Synapse itself. If multiple such callbacks try to add the same field to an event's unsigned section, the last-registered callback wins. synapse-1.100.0/docs/modules/background_update_controller_callbacks.md000066400000000000000000000060611455622526000262120ustar00rootroot00000000000000# Background update controller callbacks Background update controller callbacks allow module developers to control (e.g. rate-limit) how database background updates are run. A database background update is an operation Synapse runs on its database in the background after it starts. It's usually used to run database operations that would take too long if they were run at the same time as schema updates (which are run on startup) and delay Synapse's startup too much: populating a table with a big amount of data, adding an index on a big table, deleting superfluous data, etc. Background update controller callbacks can be registered using the module API's `register_background_update_controller_callbacks` method. Only the first module (in order of appearance in Synapse's configuration file) calling this method can register background update controller callbacks, subsequent calls are ignored. The available background update controller callbacks are: ### `on_update` _First introduced in Synapse v1.49.0_ ```python def on_update(update_name: str, database_name: str, one_shot: bool) -> AsyncContextManager[int] ``` Called when about to do an iteration of a background update. The module is given the name of the update, the name of the database, and a flag to indicate whether the background update will happen in one go and may take a long time (e.g. creating indices). If this last argument is set to `False`, the update will be run in batches. The module must return an async context manager. It will be entered before Synapse runs a background update; this should return the desired duration of the iteration, in milliseconds. The context manager will be exited when the iteration completes. Note that the duration returned by the context manager is a target, and an iteration may take substantially longer or shorter. If the `one_shot` flag is set to `True`, the duration returned is ignored. __Note__: Unlike most module callbacks in Synapse, this one is _synchronous_. This is because asynchronous operations are expected to be run by the async context manager. This callback is required when registering any other background update controller callback. ### `default_batch_size` _First introduced in Synapse v1.49.0_ ```python async def default_batch_size(update_name: str, database_name: str) -> int ``` Called before the first iteration of a background update, with the name of the update and of the database. The module must return the number of elements to process in this first iteration. If this callback is not defined, Synapse will use a default value of 100. ### `min_batch_size` _First introduced in Synapse v1.49.0_ ```python async def min_batch_size(update_name: str, database_name: str) -> int ``` Called before running a new batch for a background update, with the name of the update and of the database. The module must return an integer representing the minimum number of elements to process in this iteration. This number must be at least 1, and is used to ensure that progress is always made. If this callback is not defined, Synapse will use a default value of 100. synapse-1.100.0/docs/modules/index.md000066400000000000000000000040521455622526000173740ustar00rootroot00000000000000# Modules Synapse supports extending its functionality by configuring external modules. **Note**: When using third-party modules, you effectively allow someone else to run custom code on your Synapse homeserver. Server admins are encouraged to verify the provenance of the modules they use on their homeserver and make sure the modules aren't running malicious code on their instance. ## Using modules To use a module on Synapse, add it to the `modules` section of the configuration file: ```yaml modules: - module: my_super_module.MySuperClass config: do_thing: true - module: my_other_super_module.SomeClass config: {} ``` Each module is defined by a path to a Python class as well as a configuration. This information for a given module should be available in the module's own documentation. ## Using multiple modules The order in which modules are listed in this section is important. When processing an action that can be handled by several modules, Synapse will always prioritise the module that appears first (i.e. is the highest in the list). This means: * If several modules register the same callback, the callback registered by the module that appears first is used. * If several modules try to register a handler for the same HTTP path, only the handler registered by the module that appears first is used. Handlers registered by the other module(s) are ignored and Synapse will log a warning message about them. Note that Synapse doesn't allow multiple modules implementing authentication checkers via the password auth provider feature for the same login type with different fields. If this happens, Synapse will refuse to start. ## Current status We are currently in the process of migrating module interfaces to this system. While some interfaces might be compatible with it, others still require configuring modules in another part of Synapse's configuration file. Currently, only the following pre-existing interfaces are compatible with this new system: * spam checker * third-party rules * presence router * password auth providers synapse-1.100.0/docs/modules/password_auth_provider_callbacks.md000066400000000000000000000267321455622526000250720ustar00rootroot00000000000000# Password auth provider callbacks Password auth providers offer a way for server administrators to integrate their Synapse installation with an external authentication system. The callbacks can be registered by using the Module API's `register_password_auth_provider_callbacks` method. ## Callbacks ### `auth_checkers` _First introduced in Synapse v1.46.0_ ```python auth_checkers: Dict[Tuple[str, Tuple[str, ...]], Callable] ``` A dict mapping from tuples of a login type identifier (such as `m.login.password`) and a tuple of field names (such as `("password", "secret_thing")`) to authentication checking callbacks, which should be of the following form: ```python async def check_auth( user: str, login_type: str, login_dict: "synapse.module_api.JsonDict", ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]] ] ] ``` The login type and field names should be provided by the user in the request to the `/login` API. [The Matrix specification](https://matrix.org/docs/spec/client_server/latest#authentication-types) defines some types, however user defined ones are also allowed. The callback is passed the `user` field provided by the client (which might not be in `@username:server` form), the login type, and a dictionary of login secrets passed by the client. If the authentication is successful, the module must return the user's Matrix ID (e.g. `@alice:example.com`) and optionally a callback to be called with the response to the `/login` request. If the module doesn't wish to return a callback, it must return `None` instead. If the authentication is unsuccessful, the module must return `None`. Note that the user is not automatically registered, the `register_user(..)` method of the [module API](writing_a_module.html) can be used to lazily create users. If multiple modules register an auth checker for the same login type but with different fields, Synapse will refuse to start. If multiple modules register an auth checker for the same login type with the same fields, then the callbacks will be executed in order, until one returns a Matrix User ID (and optionally a callback). In that case, the return value of that callback will be accepted and subsequent callbacks will not be fired. If every callback returns `None`, then the authentication fails. ### `check_3pid_auth` _First introduced in Synapse v1.46.0_ ```python async def check_3pid_auth( medium: str, address: str, password: str, ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]] ] ] ``` Called when a user attempts to register or log in with a third party identifier, such as email. It is passed the medium (eg. `email`), an address (eg. `jdoe@example.com`) and the user's password. If the authentication is successful, the module must return the user's Matrix ID (e.g. `@alice:example.com`) and optionally a callback to be called with the response to the `/login` request. If the module doesn't wish to return a callback, it must return None instead. If the authentication is unsuccessful, the module must return `None`. If multiple modules implement this callback, they will be considered in order. If a callback returns `None`, Synapse falls through to the next one. The value of the first callback that does not return `None` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. If every callback returns `None`, the authentication is denied. ### `on_logged_out` _First introduced in Synapse v1.46.0_ ```python async def on_logged_out( user_id: str, device_id: Optional[str], access_token: str ) -> None ``` Called during a logout request for a user. It is passed the qualified user ID, the ID of the deactivated device (if any: access tokens are occasionally created without an associated device ID), and the (now deactivated) access token. Deleting the related pushers is done after calling `on_logged_out`, so you can rely on them to still be present. If multiple modules implement this callback, Synapse runs them all in order. ### `get_username_for_registration` _First introduced in Synapse v1.52.0_ ```python async def get_username_for_registration( uia_results: Dict[str, Any], params: Dict[str, Any], ) -> Optional[str] ``` Called when registering a new user. The module can return a username to set for the user being registered by returning it as a string, or `None` if it doesn't wish to force a username for this user. If a username is returned, it will be used as the local part of a user's full Matrix ID (e.g. it's `alice` in `@alice:example.com`). This callback is called once [User-Interactive Authentication](https://spec.matrix.org/latest/client-server-api/#user-interactive-authentication-api) has been completed by the user. It is not called when registering a user via SSO. It is passed two dictionaries, which include the information that the user has provided during the registration process. The first dictionary contains the results of the [User-Interactive Authentication](https://spec.matrix.org/latest/client-server-api/#user-interactive-authentication-api) flow followed by the user. Its keys are the identifiers of every step involved in the flow, associated with either a boolean value indicating whether the step was correctly completed, or additional information (e.g. email address, phone number...). A list of most existing identifiers can be found in the [Matrix specification](https://spec.matrix.org/v1.1/client-server-api/#authentication-types). Here's an example featuring all currently supported keys: ```python { "m.login.dummy": True, # Dummy authentication "m.login.terms": True, # User has accepted the terms of service for the homeserver "m.login.recaptcha": True, # User has completed the recaptcha challenge "m.login.email.identity": { # User has provided and verified an email address "medium": "email", "address": "alice@example.com", "validated_at": 1642701357084, }, "m.login.msisdn": { # User has provided and verified a phone number "medium": "msisdn", "address": "33123456789", "validated_at": 1642701357084, }, "m.login.registration_token": "sometoken", # User has registered through a registration token } ``` The second dictionary contains the parameters provided by the user's client in the request to `/_matrix/client/v3/register`. See the [Matrix specification](https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3register) for a complete list of these parameters. If the module cannot, or does not wish to, generate a username for this user, it must return `None`. If multiple modules implement this callback, they will be considered in order. If a callback returns `None`, Synapse falls through to the next one. The value of the first callback that does not return `None` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. If every callback returns `None`, the username provided by the user is used, if any (otherwise one is automatically generated). ### `get_displayname_for_registration` _First introduced in Synapse v1.54.0_ ```python async def get_displayname_for_registration( uia_results: Dict[str, Any], params: Dict[str, Any], ) -> Optional[str] ``` Called when registering a new user. The module can return a display name to set for the user being registered by returning it as a string, or `None` if it doesn't wish to force a display name for this user. This callback is called once [User-Interactive Authentication](https://spec.matrix.org/latest/client-server-api/#user-interactive-authentication-api) has been completed by the user. It is not called when registering a user via SSO. It is passed two dictionaries, which include the information that the user has provided during the registration process. These dictionaries are identical to the ones passed to [`get_username_for_registration`](#get_username_for_registration), so refer to the documentation of this callback for more information about them. If multiple modules implement this callback, they will be considered in order. If a callback returns `None`, Synapse falls through to the next one. The value of the first callback that does not return `None` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. If every callback returns `None`, the username will be used (e.g. `alice` if the user being registered is `@alice:example.com`). ## `is_3pid_allowed` _First introduced in Synapse v1.53.0_ ```python async def is_3pid_allowed(self, medium: str, address: str, registration: bool) -> bool ``` Called when attempting to bind a third-party identifier (i.e. an email address or a phone number). The module is given the medium of the third-party identifier (which is `email` if the identifier is an email address, or `msisdn` if the identifier is a phone number) and its address, as well as a boolean indicating whether the attempt to bind is happening as part of registering a new user. The module must return a boolean indicating whether the identifier can be allowed to be bound to an account on the local homeserver. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ## Example The example module below implements authentication checkers for two different login types: - `my.login.type` - Expects a `my_field` field to be sent to `/login` - Is checked by the method: `self.check_my_login` - `m.login.password` (defined in [the spec](https://matrix.org/docs/spec/client_server/latest#password-based)) - Expects a `password` field to be sent to `/login` - Is checked by the method: `self.check_pass` ```python from typing import Awaitable, Callable, Optional, Tuple import synapse from synapse import module_api class MyAuthProvider: def __init__(self, config: dict, api: module_api): self.api = api self.credentials = { "bob": "building", "@scoop:matrix.org": "digging", } api.register_password_auth_provider_callbacks( auth_checkers={ ("my.login_type", ("my_field",)): self.check_my_login, ("m.login.password", ("password",)): self.check_pass, }, ) async def check_my_login( self, username: str, login_type: str, login_dict: "synapse.module_api.JsonDict", ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]], ] ]: if login_type != "my.login_type": return None if self.credentials.get(username) == login_dict.get("my_field"): return (self.api.get_qualified_user_id(username), None) async def check_pass( self, username: str, login_type: str, login_dict: "synapse.module_api.JsonDict", ) -> Optional[ Tuple[ str, Optional[Callable[["synapse.module_api.LoginResponse"], Awaitable[None]]], ] ]: if login_type != "m.login.password": return None if self.credentials.get(username) == login_dict.get("password"): return (self.api.get_qualified_user_id(username), None) ``` synapse-1.100.0/docs/modules/porting_legacy_module.md000066400000000000000000000021531455622526000226400ustar00rootroot00000000000000# Porting an existing module that uses the old interface In order to port a module that uses Synapse's old module interface, its author needs to: * ensure the module's callbacks are all asynchronous. * register their callbacks using one or more of the `register_[...]_callbacks` methods from the `ModuleApi` class in the module's `__init__` method (see [this section](writing_a_module.html#registering-a-callback) for more info). Additionally, if the module is packaged with an additional web resource, the module should register this resource in its `__init__` method using the `register_web_resource` method from the `ModuleApi` class (see [this section](writing_a_module.html#registering-a-web-resource) for more info). There is no longer a `get_db_schema_files` callback provided for password auth provider modules. Any changes to the database should now be made by the module using the module API class. The module's author should also update any example in the module's configuration to only use the new `modules` section in Synapse's configuration file (see [this section](index.html#using-modules) for more info). synapse-1.100.0/docs/modules/presence_router_callbacks.md000066400000000000000000000103431455622526000234700ustar00rootroot00000000000000# Presence router callbacks Presence router callbacks allow module developers to define additional users which receive presence updates from local users. The additional users can be local or remote. For example, it could be used to direct all of `@alice:example.com` (a local user)'s presence updates to `@bob:matrix.org` (a remote user), even though they don't share a room. (Note that those presence updates might not make it to `@bob:matrix.org`'s client unless a similar presence router is running on that homeserver.) Presence router callbacks can be registered using the module API's `register_presence_router_callbacks` method. ## Callbacks The available presence router callbacks are: ### `get_users_for_states` _First introduced in Synapse v1.42.0_ ```python async def get_users_for_states( state_updates: Iterable["synapse.api.UserPresenceState"], ) -> Dict[str, Set["synapse.api.UserPresenceState"]] ``` **Requires** `get_interested_users` to also be registered Called when processing updates to the presence state of one or more users. This callback can be used to instruct the server to forward that presence state to specific users. The module must return a dictionary that maps from Matrix user IDs (which can be local or remote) to the `UserPresenceState` changes that they should be forwarded. Synapse will then attempt to send the specified presence updates to each user when possible. If multiple modules implement this callback, Synapse merges all the dictionaries returned by the callbacks. If multiple callbacks return a dictionary containing the same key, Synapse concatenates the sets associated with this key from each dictionary. ### `get_interested_users` _First introduced in Synapse v1.42.0_ ```python async def get_interested_users( user_id: str ) -> Union[Set[str], "synapse.module_api.PRESENCE_ALL_USERS"] ``` **Requires** `get_users_for_states` to also be registered Called when determining which users someone should be able to see the presence state of. This callback should return complementary results to `get_users_for_state` or the presence information may not be properly forwarded. The callback is given the Matrix user ID for a local user that is requesting presence data and should return the Matrix user IDs of the users whose presence state they are allowed to query. The returned users can be local or remote. Alternatively the callback can return `synapse.module_api.PRESENCE_ALL_USERS` to indicate that the user should receive updates from all known users. If multiple modules implement this callback, they will be considered in order. Synapse calls each callback one by one, and use a concatenation of all the `set`s returned by the callbacks. If one callback returns `synapse.module_api.PRESENCE_ALL_USERS`, Synapse uses this value instead. If this happens, Synapse does not call any of the subsequent implementations of this callback. ## Example The example below is a module that implements both presence router callbacks, and ensures that `@alice:example.org` receives all presence updates from `@bob:example.com` and `@charlie:somewhere.org`, regardless of whether Alice shares a room with any of them. ```python from typing import Dict, Iterable, Set, Union from synapse.module_api import ModuleApi class CustomPresenceRouter: def __init__(self, config: dict, api: ModuleApi): self.api = api self.api.register_presence_router_callbacks( get_users_for_states=self.get_users_for_states, get_interested_users=self.get_interested_users, ) async def get_users_for_states( self, state_updates: Iterable["synapse.api.UserPresenceState"], ) -> Dict[str, Set["synapse.api.UserPresenceState"]]: res = {} for update in state_updates: if ( update.user_id == "@bob:example.com" or update.user_id == "@charlie:somewhere.org" ): res.setdefault("@alice:example.com", set()).add(update) return res async def get_interested_users( self, user_id: str, ) -> Union[Set[str], "synapse.module_api.PRESENCE_ALL_USERS"]: if user_id == "@alice:example.com": return {"@bob:example.com", "@charlie:somewhere.org"} return set() ``` synapse-1.100.0/docs/modules/spam_checker_callbacks.md000066400000000000000000000454321455622526000227170ustar00rootroot00000000000000# Spam checker callbacks Spam checker callbacks allow module developers to implement spam mitigation actions for Synapse instances. Spam checker callbacks can be registered using the module API's `register_spam_checker_callbacks` method. ## Callbacks The available spam checker callbacks are: ### `check_event_for_spam` _First introduced in Synapse v1.37.0_ _Changed in Synapse v1.60.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean or a string is now deprecated._ ```python async def check_event_for_spam(event: "synapse.module_api.EventBase") -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", str, bool] ``` Called when receiving an event from a client or via federation. The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) a non-`Codes` `str` to reject the operation and specify an error message. Note that clients typically will not localize the error message to the user's preferred locale. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_join_room` _First introduced in Synapse v1.37.0_ _Changed in Synapse v1.61.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean is now deprecated._ ```python async def user_may_join_room(user: str, room: str, is_invited: bool) -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", bool] ``` Called when a user is trying to join a room. The user is represented by their Matrix user ID (e.g. `@alice:example.com`) and the room is represented by its Matrix ID (e.g. `!room:example.com`). The module is also given a boolean to indicate whether the user currently has a pending invite in the room. This callback isn't called if the join is performed by a server administrator, or in the context of a room creation. The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_invite` _First introduced in Synapse v1.37.0_ _Changed in Synapse v1.62.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean is now deprecated._ ```python async def user_may_invite(inviter: str, invitee: str, room_id: str) -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", bool] ``` Called when processing an invitation. Both inviter and invitee are represented by their Matrix user ID (e.g. `@alice:example.com`). The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_send_3pid_invite` _First introduced in Synapse v1.45.0_ _Changed in Synapse v1.62.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean is now deprecated._ ```python async def user_may_send_3pid_invite( inviter: str, medium: str, address: str, room_id: str, ) -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", bool] ``` Called when processing an invitation using a third-party identifier (also called a 3PID, e.g. an email address or a phone number). The inviter is represented by their Matrix user ID (e.g. `@alice:example.com`), and the invitee is represented by its medium (e.g. "email") and its address (e.g. `alice@example.com`). See [the Matrix specification](https://matrix.org/docs/spec/appendices#pid-types) for more information regarding third-party identifiers. For example, a call to this callback to send an invitation to the email address `alice@example.com` would look like this: ```python await user_may_send_3pid_invite( "@bob:example.com", # The inviter's user ID "email", # The medium of the 3PID to invite "alice@example.com", # The address of the 3PID to invite "!some_room:example.com", # The ID of the room to send the invite into ) ``` **Note**: If the third-party identifier is already associated with a matrix user ID, [`user_may_invite`](#user_may_invite) will be used instead. The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_create_room` _First introduced in Synapse v1.37.0_ _Changed in Synapse v1.62.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean is now deprecated._ ```python async def user_may_create_room(user_id: str) -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", bool] ``` Called when processing a room creation request. The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_create_room_alias` _First introduced in Synapse v1.37.0_ _Changed in Synapse v1.62.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean is now deprecated._ ```python async def user_may_create_room_alias(user_id: str, room_alias: "synapse.module_api.RoomAlias") -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", bool] ``` Called when trying to associate an alias with an existing room. The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `user_may_publish_room` _First introduced in Synapse v1.37.0_ _Changed in Synapse v1.62.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean is now deprecated._ ```python async def user_may_publish_room(user_id: str, room_id: str) -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", bool] ``` Called when trying to publish a room to the homeserver's public rooms directory. The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_username_for_spam` _First introduced in Synapse v1.37.0_ ```python async def check_username_for_spam(user_profile: synapse.module_api.UserProfile) -> bool ``` Called when computing search results in the user directory. The module must return a `bool` indicating whether the given user should be excluded from user directory searches. Return `True` to indicate that the user is spammy and exclude them from search results; otherwise return `False`. The profile is represented as a dictionary with the following keys: * `user_id: str`. The Matrix ID for this user. * `display_name: Optional[str]`. The user's display name, or `None` if this user has not set a display name. * `avatar_url: Optional[str]`. The `mxc://` URL to the user's avatar, or `None` if this user has not set an avatar. The module is given a copy of the original dictionary, so modifying it from within the module cannot modify a user's profile when included in user directory search results. If multiple modules implement this callback, they will be considered in order. If a callback returns `False`, Synapse falls through to the next one. The value of the first callback that does not return `False` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_registration_for_spam` _First introduced in Synapse v1.37.0_ ```python async def check_registration_for_spam( email_threepid: Optional[dict], username: Optional[str], request_info: Collection[Tuple[str, str]], auth_provider_id: Optional[str] = None, ) -> "synapse.spam_checker_api.RegistrationBehaviour" ``` Called when registering a new user. The module must return a `RegistrationBehaviour` indicating whether the registration can go through or must be denied, or whether the user may be allowed to register but will be shadow banned. The arguments passed to this callback are: * `email_threepid`: The email address used for registering, if any. * `username`: The username the user would like to register. Can be `None`, meaning that Synapse will generate one later. * `request_info`: A collection of tuples, which first item is a user agent, and which second item is an IP address. These user agents and IP addresses are the ones that were used during the registration process. * `auth_provider_id`: The identifier of the SSO authentication provider, if any. If multiple modules implement this callback, they will be considered in order. If a callback returns `RegistrationBehaviour.ALLOW`, Synapse falls through to the next one. The value of the first callback that does not return `RegistrationBehaviour.ALLOW` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_media_file_for_spam` _First introduced in Synapse v1.37.0_ _Changed in Synapse v1.62.0: `synapse.module_api.NOT_SPAM` and `synapse.module_api.errors.Codes` can be returned by this callback. Returning a boolean is now deprecated._ ```python async def check_media_file_for_spam( file_wrapper: "synapse.media.media_storage.ReadableFileWrapper", file_info: "synapse.media._base.FileInfo", ) -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes", bool] ``` Called when storing a local or remote file. The callback must return one of: - `synapse.module_api.NOT_SPAM`, to allow the operation. Other callbacks may still decide to reject it. - `synapse.module_api.errors.Codes` to reject the operation with an error code. In case of doubt, `synapse.module_api.errors.Codes.FORBIDDEN` is a good error code. - (deprecated) `False`, which is the same as returning `synapse.module_api.NOT_SPAM`. - (deprecated) `True`, which is the same as returning `synapse.module_api.errors.Codes.FORBIDDEN`. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `should_drop_federated_event` _First introduced in Synapse v1.60.0_ ```python async def should_drop_federated_event(event: "synapse.events.EventBase") -> bool ``` Called when checking whether a remote server can federate an event with us. **Returning `True` from this function will silently drop a federated event and split-brain our view of a room's DAG, and thus you shouldn't use this callback unless you know what you are doing.** If multiple modules implement this callback, they will be considered in order. If a callback returns `False`, Synapse falls through to the next one. The value of the first callback that does not return `False` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_login_for_spam` _First introduced in Synapse v1.87.0_ ```python async def check_login_for_spam( user_id: str, device_id: Optional[str], initial_display_name: Optional[str], request_info: Collection[Tuple[Optional[str], str]], auth_provider_id: Optional[str] = None, ) -> Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes"] ``` Called when a user logs in. The arguments passed to this callback are: * `user_id`: The user ID the user is logging in with * `device_id`: The device ID the user is re-logging into. * `initial_display_name`: The device display name, if any. * `request_info`: A collection of tuples, which first item is a user agent, and which second item is an IP address. These user agents and IP addresses are the ones that were used during the login process. * `auth_provider_id`: The identifier of the SSO authentication provider, if any. If multiple modules implement this callback, they will be considered in order. If a callback returns `synapse.module_api.NOT_SPAM`, Synapse falls through to the next one. The value of the first callback that does not return `synapse.module_api.NOT_SPAM` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. *Note:* This will not be called when a user registers. ## Example The example below is a module that implements the spam checker callback `check_event_for_spam` to deny any message sent by users whose Matrix user IDs are mentioned in a configured list, and registers a web resource to the path `/_synapse/client/list_spam_checker/is_evil` that returns a JSON object indicating whether the provided user appears in that list. ```python import json from typing import Union from twisted.web.resource import Resource from twisted.web.server import Request from synapse.module_api import ModuleApi class IsUserEvilResource(Resource): def __init__(self, config): super(IsUserEvilResource, self).__init__() self.evil_users = config.get("evil_users") or [] def render_GET(self, request: Request): user = request.args.get(b"user")[0].decode() request.setHeader(b"Content-Type", b"application/json") return json.dumps({"evil": user in self.evil_users}).encode() class ListSpamChecker: def __init__(self, config: dict, api: ModuleApi): self.api = api self.evil_users = config.get("evil_users") or [] self.api.register_spam_checker_callbacks( check_event_for_spam=self.check_event_for_spam, ) self.api.register_web_resource( path="/_synapse/client/list_spam_checker/is_evil", resource=IsUserEvilResource(config), ) async def check_event_for_spam(self, event: "synapse.events.EventBase") -> Union[Literal["NOT_SPAM"], Codes]: if event.sender in self.evil_users: return Codes.FORBIDDEN else: return synapse.module_api.NOT_SPAM ``` synapse-1.100.0/docs/modules/third_party_rules_callbacks.md000066400000000000000000000342401455622526000240310ustar00rootroot00000000000000# Third party rules callbacks Third party rules callbacks allow module developers to add extra checks to verify the validity of incoming events. Third party event rules callbacks can be registered using the module API's `register_third_party_rules_callbacks` method. ## Callbacks The available third party rules callbacks are: ### `check_event_allowed` _First introduced in Synapse v1.39.0_ ```python async def check_event_allowed( event: "synapse.events.EventBase", state_events: "synapse.types.StateMap", ) -> Tuple[bool, Optional[dict]] ``` ** This callback is very experimental and can and will break without notice. Module developers are encouraged to implement `check_event_for_spam` from the spam checker category instead. ** Called when processing any incoming event, with the event and a `StateMap` representing the current state of the room the event is being sent into. A `StateMap` is a dictionary that maps tuples containing an event type and a state key to the corresponding state event. For example retrieving the room's `m.room.create` event from the `state_events` argument would look like this: `state_events.get(("m.room.create", ""))`. The module must return a boolean indicating whether the event can be allowed. Note that this callback function processes incoming events coming via federation traffic (on top of client traffic). This means denying an event might cause the local copy of the room's history to diverge from that of remote servers. This may cause federation issues in the room. It is strongly recommended to only deny events using this callback function if the sender is a local user, or in a private federation in which all servers are using the same module, with the same configuration. If the boolean returned by the module is `True`, it may also tell Synapse to replace the event with new data by returning the new event's data as a dictionary. In order to do that, it is recommended the module calls `event.get_dict()` to get the current event as a dictionary, and modify the returned dictionary accordingly. If `check_event_allowed` raises an exception, the module is assumed to have failed. The event will not be accepted but is not treated as explicitly rejected, either. An HTTP request causing the module check will likely result in a 500 Internal Server Error. When the boolean returned by the module is `False`, the event is rejected. (Module developers should not use exceptions for rejection.) Note that replacing the event only works for events sent by local users, not for events received over federation. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `on_create_room` _First introduced in Synapse v1.39.0_ ```python async def on_create_room( requester: "synapse.types.Requester", request_content: dict, is_requester_admin: bool, ) -> None ``` Called when processing a room creation request, with the `Requester` object for the user performing the request, a dictionary representing the room creation request's JSON body (see [the spec](https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-createroom) for a list of possible parameters), and a boolean indicating whether the user performing the request is a server admin. Modules can modify the `request_content` (by e.g. adding events to its `initial_state`), or deny the room's creation by raising a `module_api.errors.SynapseError`. If multiple modules implement this callback, they will be considered in order. If a callback returns without raising an exception, Synapse falls through to the next one. The room creation will be forbidden as soon as one of the callbacks raises an exception. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_threepid_can_be_invited` _First introduced in Synapse v1.39.0_ ```python async def check_threepid_can_be_invited( medium: str, address: str, state_events: "synapse.types.StateMap", ) -> bool: ``` Called when processing an invite via a third-party identifier (i.e. email or phone number). The module must return a boolean indicating whether the invite can go through. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_visibility_can_be_modified` _First introduced in Synapse v1.39.0_ ```python async def check_visibility_can_be_modified( room_id: str, state_events: "synapse.types.StateMap", new_visibility: str, ) -> bool: ``` Called when changing the visibility of a room in the local public room directory. The visibility is a string that's either "public" or "private". The module must return a boolean indicating whether the change can go through. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `on_new_event` _First introduced in Synapse v1.47.0_ ```python async def on_new_event( event: "synapse.events.EventBase", state_events: "synapse.types.StateMap", ) -> None: ``` Called after sending an event into a room. The module is passed the event, as well as the state of the room _after_ the event. This means that if the event is a state event, it will be included in this state. Note that this callback is called when the event has already been processed and stored into the room, which means this callback cannot be used to deny persisting the event. To deny an incoming event, see [`check_event_for_spam`](spam_checker_callbacks.md#check_event_for_spam) instead. For any given event, this callback will be called on every worker process, even if that worker will not end up acting on that event. This callback will not be called for events that are marked as rejected. If multiple modules implement this callback, Synapse runs them all in order. ### `check_can_shutdown_room` _First introduced in Synapse v1.55.0_ ```python async def check_can_shutdown_room( user_id: str, room_id: str, ) -> bool: ``` Called when an admin user requests the shutdown of a room. The module must return a boolean indicating whether the shutdown can go through. If the callback returns `False`, the shutdown will not proceed and the caller will see a `M_FORBIDDEN` error. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `check_can_deactivate_user` _First introduced in Synapse v1.55.0_ ```python async def check_can_deactivate_user( user_id: str, by_admin: bool, ) -> bool: ``` Called when the deactivation of a user is requested. User deactivation can be performed by an admin or the user themselves, so developers are encouraged to check the requester when implementing this callback. The module must return a boolean indicating whether the deactivation can go through. If the callback returns `False`, the deactivation will not proceed and the caller will see a `M_FORBIDDEN` error. The module is passed two parameters, `user_id` which is the ID of the user being deactivated, and `by_admin` which is `True` if the request is made by a serve admin, and `False` otherwise. If multiple modules implement this callback, they will be considered in order. If a callback returns `True`, Synapse falls through to the next one. The value of the first callback that does not return `True` will be used. If this happens, Synapse will not call any of the subsequent implementations of this callback. ### `on_profile_update` _First introduced in Synapse v1.54.0_ ```python async def on_profile_update( user_id: str, new_profile: "synapse.module_api.ProfileInfo", by_admin: bool, deactivation: bool, ) -> None: ``` Called after updating a local user's profile. The update can be triggered either by the user themselves or a server admin. The update can also be triggered by a user being deactivated (in which case their display name is set to an empty string (`""`) and the avatar URL is set to `None`). The module is passed the Matrix ID of the user whose profile has been updated, their new profile, as well as a `by_admin` boolean that is `True` if the update was triggered by a server admin (and `False` otherwise), and a `deactivated` boolean that is `True` if the update is a result of the user being deactivated. Note that the `by_admin` boolean is also `True` if the profile change happens as a result of the user logging in through Single Sign-On, or if a server admin updates their own profile. Per-room profile changes do not trigger this callback to be called. Synapse administrators wishing this callback to be called on every profile change are encouraged to disable per-room profiles globally using the `allow_per_room_profiles` configuration setting in Synapse's configuration file. This callback is not called when registering a user, even when setting it through the [`get_displayname_for_registration`](https://element-hq.github.io/synapse/latest/modules/password_auth_provider_callbacks.html#get_displayname_for_registration) module callback. If multiple modules implement this callback, Synapse runs them all in order. ### `on_user_deactivation_status_changed` _First introduced in Synapse v1.54.0_ ```python async def on_user_deactivation_status_changed( user_id: str, deactivated: bool, by_admin: bool ) -> None: ``` Called after deactivating a local user, or reactivating them through the admin API. The deactivation can be triggered either by the user themselves or a server admin. The module is passed the Matrix ID of the user whose status is changed, as well as a `deactivated` boolean that is `True` if the user is being deactivated and `False` if they're being reactivated, and a `by_admin` boolean that is `True` if the deactivation was triggered by a server admin (and `False` otherwise). This latter `by_admin` boolean is always `True` if the user is being reactivated, as this operation can only be performed through the admin API. If multiple modules implement this callback, Synapse runs them all in order. ### `on_threepid_bind` _First introduced in Synapse v1.56.0_ ** This callback is deprecated in favour of the `on_add_user_third_party_identifier` callback, which features the same functionality. The only difference is in name. ** ```python async def on_threepid_bind(user_id: str, medium: str, address: str) -> None: ``` Called after creating an association between a local user and a third-party identifier (email address, phone number). The module is given the Matrix ID of the user the association is for, as well as the medium (`email` or `msisdn`) and address of the third-party identifier. Note that this callback is _not_ called after a successful association on an _identity server_. If multiple modules implement this callback, Synapse runs them all in order. ### `on_add_user_third_party_identifier` _First introduced in Synapse v1.79.0_ ```python async def on_add_user_third_party_identifier(user_id: str, medium: str, address: str) -> None: ``` Called after successfully creating an association between a user and a third-party identifier (email address, phone number). The module is given the Matrix ID of the user the association is for, as well as the medium (`email` or `msisdn`) and address of the third-party identifier (i.e. an email address). Note that this callback is _not_ called if a user attempts to bind their third-party identifier to an identity server (via a call to [`POST /_matrix/client/v3/account/3pid/bind`](https://spec.matrix.org/v1.5/client-server-api/#post_matrixclientv3account3pidbind)). If multiple modules implement this callback, Synapse runs them all in order. ### `on_remove_user_third_party_identifier` _First introduced in Synapse v1.79.0_ ```python async def on_remove_user_third_party_identifier(user_id: str, medium: str, address: str) -> None: ``` Called after successfully removing an association between a user and a third-party identifier (email address, phone number). The module is given the Matrix ID of the user the association is for, as well as the medium (`email` or `msisdn`) and address of the third-party identifier (i.e. an email address). Note that this callback is _not_ called if a user attempts to unbind their third-party identifier from an identity server (via a call to [`POST /_matrix/client/v3/account/3pid/unbind`](https://spec.matrix.org/v1.5/client-server-api/#post_matrixclientv3account3pidunbind)). If multiple modules implement this callback, Synapse runs them all in order. ## Example The example below is a module that implements the third-party rules callback `check_event_allowed` to censor incoming messages as dictated by a third-party service. ```python from typing import Optional, Tuple from synapse.module_api import ModuleApi _DEFAULT_CENSOR_ENDPOINT = "https://my-internal-service.local/censor-event" class EventCensorer: def __init__(self, config: dict, api: ModuleApi): self.api = api self._endpoint = config.get("endpoint", _DEFAULT_CENSOR_ENDPOINT) self.api.register_third_party_rules_callbacks( check_event_allowed=self.check_event_allowed, ) async def check_event_allowed( self, event: "synapse.events.EventBase", state_events: "synapse.types.StateMap", ) -> Tuple[bool, Optional[dict]]: event_dict = event.get_dict() new_event_content = await self.api.http_client.post_json_get_json( uri=self._endpoint, post_json=event_dict, ) event_dict["content"] = new_event_content return event_dict ``` synapse-1.100.0/docs/modules/writing_a_module.md000066400000000000000000000147141455622526000216230ustar00rootroot00000000000000# Writing a module A module is a Python class that uses Synapse's module API to interact with the homeserver. It can register callbacks that Synapse will call on specific operations, as well as web resources to attach to Synapse's web server. When instantiated, a module is given its parsed configuration as well as an instance of the `synapse.module_api.ModuleApi` class. The configuration is a dictionary, and is either the output of the module's `parse_config` static method (see below), or the configuration associated with the module in Synapse's configuration file. See the documentation for the `ModuleApi` class [here](https://github.com/element-hq/synapse/blob/master/synapse/module_api/__init__.py). ## When Synapse runs with several modules configured If Synapse is running with other modules configured, the order each module appears in within the `modules` section of the Synapse configuration file might restrict what it can or cannot register. See [this section](index.html#using-multiple-modules) for more information. On top of the rules listed in the link above, if a callback returns a value that should cause the current operation to fail (e.g. if a callback checking an event returns with a value that should cause the event to be denied), Synapse will fail the operation and ignore any subsequent callbacks that should have been run after this one. The documentation for each callback mentions how Synapse behaves when multiple modules implement it. ## Handling the module's configuration A module can implement the following static method: ```python @staticmethod def parse_config(config: dict) -> Any ``` This method is given a dictionary resulting from parsing the YAML configuration for the module. It may modify it (for example by parsing durations expressed as strings (e.g. "5d") into milliseconds, etc.), and return the modified dictionary. It may also verify that the configuration is correct, and raise an instance of `synapse.module_api.errors.ConfigError` if not. ## Registering a web resource Modules can register web resources onto Synapse's web server using the following module API method: ```python def ModuleApi.register_web_resource(path: str, resource: IResource) -> None ``` The path is the full absolute path to register the resource at. For example, if you register a resource for the path `/_synapse/client/my_super_module/say_hello`, Synapse will serve it at `http(s)://[HS_URL]/_synapse/client/my_super_module/say_hello`. Note that Synapse does not allow registering resources for several sub-paths in the `/_matrix` namespace (such as anything under `/_matrix/client` for example). It is strongly recommended that modules register their web resources under the `/_synapse/client` namespace. The provided resource is a Python class that implements Twisted's [IResource](https://docs.twistedmatrix.com/en/stable/api/twisted.web.resource.IResource.html) interface (such as [Resource](https://docs.twistedmatrix.com/en/stable/api/twisted.web.resource.Resource.html)). Only one resource can be registered for a given path. If several modules attempt to register a resource for the same path, the module that appears first in Synapse's configuration file takes priority. Modules **must** register their web resources in their `__init__` method. ## Registering a callback Modules can use Synapse's module API to register callbacks. Callbacks are functions that Synapse will call when performing specific actions. Callbacks must be asynchronous (unless specified otherwise), and are split in categories. A single module may implement callbacks from multiple categories, and is under no obligation to implement all callbacks from the categories it registers callbacks for. Modules can register callbacks using one of the module API's `register_[...]_callbacks` methods. The callback functions are passed to these methods as keyword arguments, with the callback name as the argument name and the function as its value. A `register_[...]_callbacks` method exists for each category. Callbacks for each category can be found on their respective page of the [Synapse documentation website](https://element-hq.github.io/synapse). ## Caching _Added in Synapse 1.74.0._ Modules can leverage Synapse's caching tools to manage their own cached functions. This can be helpful for modules that need to repeatedly request the same data from the database or a remote service. Functions that need to be wrapped with a cache need to be decorated with a `@cached()` decorator (which can be imported from `synapse.module_api`) and registered with the [`ModuleApi.register_cached_function`](https://github.com/matrix-org/synapse/blob/release-v1.77/synapse/module_api/__init__.py#L888) API when initialising the module. If the module needs to invalidate an entry in a cache, it needs to use the [`ModuleApi.invalidate_cache`](https://github.com/matrix-org/synapse/blob/release-v1.77/synapse/module_api/__init__.py#L904) API, with the function to invalidate the cache of and the key(s) of the entry to invalidate. Below is an example of a simple module using a cached function: ```python from typing import Any from synapse.module_api import cached, ModuleApi class MyModule: def __init__(self, config: Any, api: ModuleApi): self.api = api # Register the cached function so Synapse knows how to correctly invalidate # entries for it. self.api.register_cached_function(self.get_user_from_id) @cached() async def get_department_for_user(self, user_id: str) -> str: """A function with a cache.""" # Request a department from an external service. return await self.http_client.get_json( "https://int.example.com/users", {"user_id": user_id) )["department"] async def do_something_with_users(self) -> None: """Calls the cached function and then invalidates an entry in its cache.""" user_id = "@alice:example.com" # Get the user. Since get_department_for_user is wrapped with a cache, # the return value for this user_id will be cached. department = await self.get_department_for_user(user_id) # Do something with `department`... # Let's say something has changed with our user, and the entry we have for # them in the cache is out of date, so we want to invalidate it. await self.api.invalidate_cache(self.get_department_for_user, (user_id,)) ``` See the [`cached` docstring](https://github.com/matrix-org/synapse/blob/release-v1.77/synapse/module_api/__init__.py#L190) for more details. synapse-1.100.0/docs/openid.md000066400000000000000000000656241455622526000161070ustar00rootroot00000000000000# Configuring Synapse to authenticate against an OpenID Connect provider Synapse can be configured to use an OpenID Connect Provider (OP) for authentication, instead of its own local password database. Any OP should work with Synapse, as long as it supports the authorization code flow. There are a few options for that: - start a local OP. Synapse has been tested with [Hydra][hydra] and [Dex][dex-idp]. Note that for an OP to work, it should be served under a secure (HTTPS) origin. A certificate signed with a self-signed, locally trusted CA should work. In that case, start Synapse with a `SSL_CERT_FILE` environment variable set to the path of the CA. - set up a SaaS OP, like [Google][google-idp], [Auth0][auth0] or [Okta][okta]. Synapse has been tested with Auth0 and Google. It may also be possible to use other OAuth2 providers which provide the [authorization code grant type](https://tools.ietf.org/html/rfc6749#section-4.1), such as [Github][github-idp]. [google-idp]: https://developers.google.com/identity/protocols/oauth2/openid-connect [auth0]: https://auth0.com/ [authentik]: https://goauthentik.io/ [lemonldap]: https://lemonldap-ng.org/ [okta]: https://www.okta.com/ [dex-idp]: https://github.com/dexidp/dex [keycloak-idp]: https://www.keycloak.org/docs/latest/server_admin/#sso-protocols [hydra]: https://www.ory.sh/docs/hydra/ [github-idp]: https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps ## Preparing Synapse The OpenID integration in Synapse uses the [`authlib`](https://pypi.org/project/Authlib/) library, which must be installed as follows: * The relevant libraries are included in the Docker images and Debian packages provided by `matrix.org` so no further action is needed. * If you installed Synapse into a virtualenv, run `/path/to/env/bin/pip install matrix-synapse[oidc]` to install the necessary dependencies. * For other installation mechanisms, see the documentation provided by the maintainer. To enable the OpenID integration, you should then add a section to the `oidc_providers` setting in your configuration file. See the [configuration manual](usage/configuration/config_documentation.md#oidc_providers) for some sample settings, as well as the text below for example configurations for specific providers. ## OIDC Back-Channel Logout Synapse supports receiving [OpenID Connect Back-Channel Logout](https://openid.net/specs/openid-connect-backchannel-1_0.html) notifications. This lets the OpenID Connect Provider notify Synapse when a user logs out, so that Synapse can end that user session. This feature can be enabled by setting the `backchannel_logout_enabled` property to `true` in the provider configuration, and setting the following URL as destination for Back-Channel Logout notifications in your OpenID Connect Provider: `[synapse public baseurl]/_synapse/client/oidc/backchannel_logout` ## Sample configs Here are a few configs for providers that should work with Synapse. ### Microsoft Azure Active Directory Azure AD can act as an OpenID Connect Provider. Register a new application under *App registrations* in the Azure AD management console. The RedirectURI for your application should point to your matrix server: `[synapse public baseurl]/_synapse/client/oidc/callback` Go to *Certificates & secrets* and register a new client secret. Make note of your Directory (tenant) ID as it will be used in the Azure links. Edit your Synapse config file and change the `oidc_config` section: ```yaml oidc_providers: - idp_id: microsoft idp_name: Microsoft issuer: "https://login.microsoftonline.com//v2.0" client_id: "" client_secret: "" scopes: ["openid", "profile"] authorization_endpoint: "https://login.microsoftonline.com//oauth2/v2.0/authorize" token_endpoint: "https://login.microsoftonline.com//oauth2/v2.0/token" userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo" user_mapping_provider: config: localpart_template: "{{ user.preferred_username.split('@')[0] }}" display_name_template: "{{ user.name }}" ``` ### Apple Configuring "Sign in with Apple" (SiWA) requires an Apple Developer account. You will need to create a new "Services ID" for SiWA, and create and download a private key with "SiWA" enabled. As well as the private key file, you will need: * Client ID: the "identifier" you gave the "Services ID" * Team ID: a 10-character ID associated with your developer account. * Key ID: the 10-character identifier for the key. [Apple's developer documentation](https://help.apple.com/developer-account/?lang=en#/dev77c875b7e) has more information on setting up SiWA. The synapse config will look like this: ```yaml - idp_id: apple idp_name: Apple issuer: "https://appleid.apple.com" client_id: "your-client-id" # Set to the "identifier" for your "ServicesID" client_auth_method: "client_secret_post" client_secret_jwt_key: key_file: "/path/to/AuthKey_KEYIDCODE.p8" # point to your key file jwt_header: alg: ES256 kid: "KEYIDCODE" # Set to the 10-char Key ID jwt_payload: iss: TEAMIDCODE # Set to the 10-char Team ID scopes: ["name", "email", "openid"] authorization_endpoint: https://appleid.apple.com/auth/authorize?response_mode=form_post user_mapping_provider: config: email_template: "{{ user.email }}" ``` ### Auth0 [Auth0][auth0] is a hosted SaaS IdP solution. 1. Create a regular web application for Synapse 2. Set the Allowed Callback URLs to `[synapse public baseurl]/_synapse/client/oidc/callback` 3. Add a rule with any name to add the `preferred_username` claim. (See https://auth0.com/docs/customize/rules/create-rules for more information on how to create rules.)
Code sample ```js function addPersistenceAttribute(user, context, callback) { user.user_metadata = user.user_metadata || {}; user.user_metadata.preferred_username = user.user_metadata.preferred_username || user.user_id; context.idToken.preferred_username = user.user_metadata.preferred_username; auth0.users.updateUserMetadata(user.user_id, user.user_metadata) .then(function(){ callback(null, user, context); }) .catch(function(err){ callback(err); }); } ```
Synapse config: ```yaml oidc_providers: - idp_id: auth0 idp_name: Auth0 issuer: "https://your-tier.eu.auth0.com/" # TO BE FILLED client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED scopes: ["openid", "profile"] user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" ``` ### Authentik [Authentik][authentik] is an open-source IdP solution. 1. Create a provider in Authentik, with type OAuth2/OpenID. 2. The parameters are: - Client Type: Confidential - JWT Algorithm: RS256 - Scopes: OpenID, Email and Profile - RSA Key: Select any available key - Redirect URIs: `[synapse public baseurl]/_synapse/client/oidc/callback` 3. Create an application for synapse in Authentik and link it to the provider. 4. Note the slug of your application, Client ID and Client Secret. Note: RSA keys must be used for signing for Authentik, ECC keys do not work. Synapse config: ```yaml oidc_providers: - idp_id: authentik idp_name: authentik discover: true issuer: "https://your.authentik.example.org/application/o/your-app-slug/" # TO BE FILLED: domain and slug client_id: "your client id" # TO BE FILLED client_secret: "your client secret" # TO BE FILLED scopes: - "openid" - "profile" - "email" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.preferred_username|capitalize }}" # TO BE FILLED: If your users have names in Authentik and you want those in Synapse, this should be replaced with user.name|capitalize. ``` ### Dex [Dex][dex-idp] is a simple, open-source OpenID Connect Provider. Although it is designed to help building a full-blown provider with an external database, it can be configured with static passwords in a config file. Follow the [Getting Started guide](https://dexidp.io/docs/getting-started/) to install Dex. Edit `examples/config-dev.yaml` config file from the Dex repo to add a client: ```yaml staticClients: - id: synapse secret: secret redirectURIs: - '[synapse public baseurl]/_synapse/client/oidc/callback' name: 'Synapse' ``` Run with `dex serve examples/config-dev.yaml`. Synapse config: ```yaml oidc_providers: - idp_id: dex idp_name: "My Dex server" skip_verification: true # This is needed as Dex is served on an insecure endpoint issuer: "http://127.0.0.1:5556/dex" client_id: "synapse" client_secret: "secret" scopes: ["openid", "profile"] user_mapping_provider: config: localpart_template: "{{ user.name }}" display_name_template: "{{ user.name|capitalize }}" ``` ### Django OAuth Toolkit [django-oauth-toolkit](https://github.com/jazzband/django-oauth-toolkit) is a Django application providing out of the box all the endpoints, data and logic needed to add OAuth2 capabilities to your Django projects. It supports [OpenID Connect too](https://django-oauth-toolkit.readthedocs.io/en/latest/oidc.html). Configuration on Django's side: 1. Add an application: `https://example.com/admin/oauth2_provider/application/add/` and choose parameters like this: * `Redirect uris`: `https://synapse.example.com/_synapse/client/oidc/callback` * `Client type`: `Confidential` * `Authorization grant type`: `Authorization code` * `Algorithm`: `HMAC with SHA-2 256` 2. You can [customize the claims](https://django-oauth-toolkit.readthedocs.io/en/latest/oidc.html#customizing-the-oidc-responses) Django gives to synapse (optional):
Code sample ```python class CustomOAuth2Validator(OAuth2Validator): def get_additional_claims(self, request): return { "sub": request.user.email, "email": request.user.email, "first_name": request.user.first_name, "last_name": request.user.last_name, } ```
Your synapse config is then: ```yaml oidc_providers: - idp_id: django_example idp_name: "Django Example" issuer: "https://example.com/o/" client_id: "your-client-id" # CHANGE ME client_secret: "your-client-secret" # CHANGE ME scopes: ["openid"] user_profile_method: "userinfo_endpoint" # needed because oauth-toolkit does not include user information in the authorization response user_mapping_provider: config: localpart_template: "{{ user.email.split('@')[0] }}" display_name_template: "{{ user.first_name }} {{ user.last_name }}" email_template: "{{ user.email }}" ``` ### Facebook 0. You will need a Facebook developer account. You can register for one [here](https://developers.facebook.com/async/registration/). 1. On the [apps](https://developers.facebook.com/apps/) page of the developer console, "Create App", and choose "Build Connected Experiences". 2. Once the app is created, add "Facebook Login" and choose "Web". You don't need to go through the whole form here. 3. In the left-hand menu, open "Products"/"Facebook Login"/"Settings". * Add `[synapse public baseurl]/_synapse/client/oidc/callback` as an OAuth Redirect URL. 4. In the left-hand menu, open "Settings/Basic". Here you can copy the "App ID" and "App Secret" for use below. Synapse config: ```yaml - idp_id: facebook idp_name: Facebook idp_brand: "facebook" # optional: styling hint for clients discover: false issuer: "https://www.facebook.com" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED scopes: ["openid", "email"] authorization_endpoint: "https://facebook.com/dialog/oauth" token_endpoint: "https://graph.facebook.com/v9.0/oauth/access_token" jwks_uri: "https://www.facebook.com/.well-known/oauth/openid/jwks/" user_mapping_provider: config: display_name_template: "{{ user.name }}" email_template: "{{ user.email }}" ``` Relevant documents: * [Manually Build a Login Flow](https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow) * [Using Facebook's Graph API](https://developers.facebook.com/docs/graph-api/using-graph-api/) * [Reference to the User endpoint](https://developers.facebook.com/docs/graph-api/reference/user) Facebook do have an [OIDC discovery endpoint](https://www.facebook.com/.well-known/openid-configuration), but it has a `response_types_supported` which excludes "code" (which we rely on, and is even mentioned in their [documentation](https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#login)), so we have to disable discovery and configure the URIs manually. ### GitHub [GitHub][github-idp] is a bit special as it is not an OpenID Connect compliant provider, but just a regular OAuth2 provider. The [`/user` API endpoint](https://developer.github.com/v3/users/#get-the-authenticated-user) can be used to retrieve information on the authenticated user. As the Synapse login mechanism needs an attribute to uniquely identify users, and that endpoint does not return a `sub` property, an alternative `subject_claim` has to be set. 1. Create a new OAuth application: [https://github.com/settings/applications/new](https://github.com/settings/applications/new). 2. Set the callback URL to `[synapse public baseurl]/_synapse/client/oidc/callback`. Synapse config: ```yaml oidc_providers: - idp_id: github idp_name: Github idp_brand: "github" # optional: styling hint for clients discover: false issuer: "https://github.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED authorization_endpoint: "https://github.com/login/oauth/authorize" token_endpoint: "https://github.com/login/oauth/access_token" userinfo_endpoint: "https://api.github.com/user" scopes: ["read:user"] user_mapping_provider: config: subject_claim: "id" localpart_template: "{{ user.login }}" display_name_template: "{{ user.name }}" ``` ### GitLab 1. Create a [new application](https://gitlab.com/profile/applications). 2. Add the `read_user` and `openid` scopes. 3. Add this Callback URL: `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: gitlab idp_name: Gitlab idp_brand: "gitlab" # optional: styling hint for clients issuer: "https://gitlab.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED client_auth_method: "client_secret_post" scopes: ["openid", "read_user"] user_profile_method: "userinfo_endpoint" user_mapping_provider: config: localpart_template: '{{ user.nickname }}' display_name_template: '{{ user.name }}' ``` ### Gitea Gitea is, like Github, not an OpenID provider, but just an OAuth2 provider. The [`/user` API endpoint](https://try.gitea.io/api/swagger#/user/userGetCurrent) can be used to retrieve information on the authenticated user. As the Synapse login mechanism needs an attribute to uniquely identify users, and that endpoint does not return a `sub` property, an alternative `subject_claim` has to be set. 1. Create a new application. 2. Add this Callback URL: `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: gitea idp_name: Gitea discover: false issuer: "https://your-gitea.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED client_auth_method: client_secret_post scopes: [] # Gitea doesn't support Scopes authorization_endpoint: "https://your-gitea.com/login/oauth/authorize" token_endpoint: "https://your-gitea.com/login/oauth/access_token" userinfo_endpoint: "https://your-gitea.com/api/v1/user" user_mapping_provider: config: subject_claim: "id" localpart_template: "{{ user.login }}" display_name_template: "{{ user.full_name }}" ``` ### Google [Google][google-idp] is an OpenID certified authentication and authorisation provider. 1. Set up a project in the Google API Console (see [documentation](https://developers.google.com/identity/protocols/oauth2/openid-connect#appsetup)). 3. Add an "OAuth Client ID" for a Web Application under "Credentials". 4. Copy the Client ID and Client Secret, and add the following to your synapse config: ```yaml oidc_providers: - idp_id: google idp_name: Google idp_brand: "google" # optional: styling hint for clients issuer: "https://accounts.google.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED scopes: ["openid", "profile", "email"] # email is optional, read below user_mapping_provider: config: localpart_template: "{{ user.given_name|lower }}" display_name_template: "{{ user.name }}" email_template: "{{ user.email }}" # needs "email" in scopes above ``` 4. Back in the Google console, add this Authorized redirect URI: `[synapse public baseurl]/_synapse/client/oidc/callback`. ### Keycloak [Keycloak][keycloak-idp] is an opensource IdP maintained by Red Hat. Keycloak supports OIDC Back-Channel Logout, which sends logout notification to Synapse, so that Synapse users get logged out when they log out from Keycloak. This can be optionally enabled by setting `backchannel_logout_enabled` to `true` in the Synapse configuration, and by setting the "Backchannel Logout URL" in Keycloak. Follow the [Getting Started Guide](https://www.keycloak.org/guides) to install Keycloak and set up a realm. 1. Click `Clients` in the sidebar and click `Create` 2. Fill in the fields as below: | Field | Value | |-----------|-----------| | Client ID | `synapse` | | Client Protocol | `openid-connect` | 3. Click `Save` 4. Fill in the fields as below: | Field | Value | |-----------|-----------| | Client ID | `synapse` | | Enabled | `On` | | Client Protocol | `openid-connect` | | Access Type | `confidential` | | Valid Redirect URIs | `[synapse public baseurl]/_synapse/client/oidc/callback` | | Backchannel Logout URL (optional) | `[synapse public baseurl]/_synapse/client/oidc/backchannel_logout` | | Backchannel Logout Session Required (optional) | `On` | 5. Click `Save` 6. On the Credentials tab, update the fields: | Field | Value | |-------|-------| | Client Authenticator | `Client ID and Secret` | 7. Click `Regenerate Secret` 8. Copy Secret ```yaml oidc_providers: - idp_id: keycloak idp_name: "My KeyCloak server" issuer: "https://127.0.0.1:8443/realms/{realm_name}" client_id: "synapse" client_secret: "copy secret generated from above" scopes: ["openid", "profile"] user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" backchannel_logout_enabled: true # Optional ``` ### LemonLDAP [LemonLDAP::NG][lemonldap] is an open-source IdP solution. 1. Create an OpenID Connect Relying Parties in LemonLDAP::NG 2. The parameters are: - Client ID under the basic menu of the new Relying Parties (`Options > Basic > Client ID`) - Client secret (`Options > Basic > Client secret`) - JWT Algorithm: RS256 within the security menu of the new Relying Parties (`Options > Security > ID Token signature algorithm` and `Options > Security > Access Token signature algorithm`) - Scopes: OpenID, Email and Profile - Allowed redirection addresses for login (`Options > Basic > Allowed redirection addresses for login` ) : `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: lemonldap idp_name: lemonldap discover: true issuer: "https://auth.example.org/" # TO BE FILLED: replace with your domain client_id: "your client id" # TO BE FILLED client_secret: "your client secret" # TO BE FILLED scopes: - "openid" - "profile" - "email" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}}" # TO BE FILLED: If your users have names in LemonLDAP::NG and you want those in Synapse, this should be replaced with user.name|capitalize or any valid filter. display_name_template: "{{ user.preferred_username|capitalize }}" ``` ### Mastodon [Mastodon](https://docs.joinmastodon.org/) instances provide an [OAuth API](https://docs.joinmastodon.org/spec/oauth/), allowing those instances to be used as a single sign-on provider for Synapse. The first step is to register Synapse as an application with your Mastodon instance, using the [Create an application API](https://docs.joinmastodon.org/methods/apps/#create) (see also [here](https://docs.joinmastodon.org/client/token/)). There are several ways to do this, but in the example below we are using CURL. This example assumes that: * the Mastodon instance website URL is `https://your.mastodon.instance.url`, and * Synapse will be registered as an app named `my_synapse_app`. Send the following request, substituting the value of `synapse_public_baseurl` from your Synapse installation. ```sh curl -d "client_name=my_synapse_app&redirect_uris=https://[synapse_public_baseurl]/_synapse/client/oidc/callback" -X POST https://your.mastodon.instance.url/api/v1/apps ``` You should receive a response similar to the following. Make sure to save it. ```json {"client_id":"someclientid_123","client_secret":"someclientsecret_123","id":"12345","name":"my_synapse_app","redirect_uri":"https://[synapse_public_baseurl]/_synapse/client/oidc/callback","website":null,"vapid_key":"somerandomvapidkey_123"} ``` As the Synapse login mechanism needs an attribute to uniquely identify users, and Mastodon's endpoint does not return a `sub` property, an alternative `subject_template` has to be set. Your Synapse configuration should include the following: ```yaml oidc_providers: - idp_id: my_mastodon idp_name: "Mastodon Instance Example" discover: false issuer: "https://your.mastodon.instance.url/@admin" client_id: "someclientid_123" client_secret: "someclientsecret_123" authorization_endpoint: "https://your.mastodon.instance.url/oauth/authorize" token_endpoint: "https://your.mastodon.instance.url/oauth/token" userinfo_endpoint: "https://your.mastodon.instance.url/api/v1/accounts/verify_credentials" scopes: ["read"] user_mapping_provider: config: subject_template: "{{ user.id }}" localpart_template: "{{ user.username }}" display_name_template: "{{ user.display_name }}" ``` Note that the fields `client_id` and `client_secret` are taken from the CURL response above. ### Shibboleth with OIDC Plugin [Shibboleth](https://www.shibboleth.net/) is an open Standard IdP solution widely used by Universities. 1. Shibboleth needs the [OIDC Plugin](https://shibboleth.atlassian.net/wiki/spaces/IDPPLUGINS/pages/1376878976/OIDC+OP) installed and working correctly. 2. Create a new config on the IdP Side, ensure that the `client_id` and `client_secret` are randomly generated data. ```json { "client_id": "SOME-CLIENT-ID", "client_secret": "SOME-SUPER-SECRET-SECRET", "response_types": ["code"], "grant_types": ["authorization_code"], "scope": "openid profile email", "redirect_uris": ["https://[synapse public baseurl]/_synapse/client/oidc/callback"] } ``` Synapse config: ```yaml oidc_providers: # Shibboleth IDP # - idp_id: shibboleth idp_name: "Shibboleth Login" discover: true issuer: "https://YOUR-IDP-URL.TLD" client_id: "YOUR_CLIENT_ID" client_secret: "YOUR-CLIENT-SECRECT-FROM-YOUR-IDP" scopes: ["openid", "profile", "email"] allow_existing_users: true user_profile_method: "userinfo_endpoint" user_mapping_provider: config: subject_claim: "sub" localpart_template: "{{ user.sub.split('@')[0] }}" display_name_template: "{{ user.name }}" email_template: "{{ user.email }}" ``` ### Twitch 1. Setup a developer account on [Twitch](https://dev.twitch.tv/) 2. Obtain the OAuth 2.0 credentials by [creating an app](https://dev.twitch.tv/console/apps/) 3. Add this OAuth Redirect URL: `[synapse public baseurl]/_synapse/client/oidc/callback` Synapse config: ```yaml oidc_providers: - idp_id: twitch idp_name: Twitch issuer: "https://id.twitch.tv/oauth2/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED client_auth_method: "client_secret_post" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" ``` ### Twitter *Using Twitter as an identity provider requires using Synapse 1.75.0 or later.* 1. Setup a developer account on [Twitter](https://developer.twitter.com/en/portal/dashboard) 2. Create a project & app. 3. Enable user authentication and under "Type of App" choose "Web App, Automated App or Bot". 4. Under "App info" set the callback URL to `[synapse public baseurl]/_synapse/client/oidc/callback`. 5. Obtain the OAuth 2.0 credentials under the "Keys and tokens" tab, copy the "OAuth 2.0 Client ID and Client Secret" Synapse config: ```yaml oidc_providers: - idp_id: twitter idp_name: Twitter idp_brand: "twitter" # optional: styling hint for clients discover: false # Twitter is not OpenID compliant. issuer: "https://twitter.com/" client_id: "your-client-id" # TO BE FILLED client_secret: "your-client-secret" # TO BE FILLED pkce_method: "always" # offline.access providers refresh tokens, tweet.read and users.read needed for userinfo request. scopes: ["offline.access", "tweet.read", "users.read"] authorization_endpoint: https://twitter.com/i/oauth2/authorize token_endpoint: https://api.twitter.com/2/oauth2/token userinfo_endpoint: https://api.twitter.com/2/users/me?user.fields=profile_image_url user_mapping_provider: config: subject_template: "{{ user.data.id }}" localpart_template: "{{ user.data.username }}" display_name_template: "{{ user.data.name }}" picture_template: "{{ user.data.profile_image_url }}" ``` ### XWiki Install [OpenID Connect Provider](https://extensions.xwiki.org/xwiki/bin/view/Extension/OpenID%20Connect/OpenID%20Connect%20Provider/) extension in your [XWiki](https://www.xwiki.org) instance. Synapse config: ```yaml oidc_providers: - idp_id: xwiki idp_name: "XWiki" issuer: "https://myxwikihost/xwiki/oidc/" client_id: "your-client-id" # TO BE FILLED client_auth_method: none scopes: ["openid", "profile"] user_profile_method: "userinfo_endpoint" user_mapping_provider: config: localpart_template: "{{ user.preferred_username }}" display_name_template: "{{ user.name }}" ``` synapse-1.100.0/docs/opentracing.md000066400000000000000000000076621455622526000171400ustar00rootroot00000000000000# OpenTracing ## Background OpenTracing is a semi-standard being adopted by a number of distributed tracing platforms. It is a common api for facilitating vendor-agnostic tracing instrumentation. That is, we can use the OpenTracing api and select one of a number of tracer implementations to do the heavy lifting in the background. Our current selected implementation is Jaeger. OpenTracing is a tool which gives an insight into the causal relationship of work done in and between servers. The servers each track events and report them to a centralised server - in Synapse's case: Jaeger. The basic unit used to represent events is the span. The span roughly represents a single piece of work that was done and the time at which it occurred. A span can have child spans, meaning that the work of the child had to be completed for the parent span to complete, or it can have follow-on spans which represent work that is undertaken as a result of the parent but is not depended on by the parent to in order to finish. Since this is undertaken in a distributed environment a request to another server, such as an RPC or a simple GET, can be considered a span (a unit or work) for the local server. This causal link is what OpenTracing aims to capture and visualise. In order to do this metadata about the local server's span, i.e the 'span context', needs to be included with the request to the remote. It is up to the remote server to decide what it does with the spans it creates. This is called the sampling policy and it can be configured through Jaeger's settings. For OpenTracing concepts see . For more information about Jaeger's implementation see ## Setting up OpenTracing To receive OpenTracing spans, start up a Jaeger server. This can be done using docker like so: ```sh docker run -d --name jaeger \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ jaegertracing/all-in-one:1 ``` By default, Synapse will publish traces to Jaeger on localhost. If Jaeger is hosted elsewhere, point Synapse to the correct host by setting `opentracing.jaeger_config.local_agent.reporting_host` [in the Synapse configuration](usage/configuration/config_documentation.md#opentracing-1) or by setting the `JAEGER_AGENT_HOST` environment variable to the desired address. Latest documentation is probably at https://www.jaegertracing.io/docs/latest/getting-started. ## Enable OpenTracing in Synapse OpenTracing is not enabled by default. It must be enabled in the homeserver config by adding the `opentracing` option to your config file. You can find documentation about how to do this in the [config manual under the header 'Opentracing'](usage/configuration/config_documentation.md#opentracing). See below for an example Opentracing configuration: ```yaml opentracing: enabled: true homeserver_whitelist: - "mytrustedhomeserver.org" - "*.myotherhomeservers.com" ``` ## Homeserver whitelisting The homeserver whitelist is configured using regular expressions. A list of regular expressions can be given and their union will be compared when propagating any spans contexts to another homeserver. Though it's mostly safe to send and receive span contexts to and from untrusted users since span contexts are usually opaque ids it can lead to two problems, namely: - If the span context is marked as sampled by the sending homeserver the receiver will sample it. Therefore two homeservers with wildly different sampling policies could incur higher sampling counts than intended. - Sending servers can attach arbitrary data to spans, known as 'baggage'. For safety this has been disabled in Synapse but that doesn't prevent another server sending you baggage which will be logged to OpenTracing's logs. ## Configuring Jaeger Sampling strategies can be set as in this document: . synapse-1.100.0/docs/other/000077500000000000000000000000001455622526000154135ustar00rootroot00000000000000synapse-1.100.0/docs/other/running_synapse_on_single_board_computers.md000066400000000000000000000136731455622526000264760ustar00rootroot00000000000000## Summary of performance impact of running on resource constrained devices such as SBCs I've been running my homeserver on a cubietruck at home now for some time and am often replying to statements like "you need loads of ram to join large rooms" with "it works fine for me". I thought it might be useful to curate a summary of the issues you're likely to run into to help as a scaling-down guide, maybe highlight these for development work or end up as documentation. It seems that once you get up to about 4x1.5GHz arm64 4GiB these issues are no longer a problem. - **Platform**: 2x1GHz armhf 2GiB ram [Single-board computers](https://wiki.debian.org/CheapServerBoxHardware), SSD, postgres. ### Presence This is the main reason people have a poor matrix experience on resource constrained homeservers. Element web will frequently be saying the server is offline while the python process will be pegged at 100% cpu. This feature is used to tell when other users are active (have a client app in the foreground) and therefore more likely to respond, but requires a lot of network activity to maintain even when nobody is talking in a room. ![Screenshot_2020-10-01_19-29-46](https://user-images.githubusercontent.com/71895/94848963-a47a3580-041c-11eb-8b6e-acb772b4259e.png) While synapse does have some performance issues with presence [#3971](https://github.com/matrix-org/synapse/issues/3971), the fundamental problem is that this is an easy feature to implement for a centralised service at nearly no overhead, but federation makes it combinatorial [#8055](https://github.com/matrix-org/synapse/issues/8055). There is also a client-side config option which disables the UI and idle tracking [enable_presence_by_hs_url] to blacklist the largest instances but I didn't notice much difference, so I recommend disabling the feature entirely at the server level as well. [enable_presence_by_hs_url]: https://github.com/vector-im/element-web/blob/v1.7.8/config.sample.json#L45 ### Joining Joining a "large", federated room will initially fail with the below message in Element web, but waiting a while (10-60mins) and trying again will succeed without any issue. What counts as "large" is not message history, user count, connections to homeservers or even a simple count of the state events, it is instead how long the state resolution algorithm takes. However, each of those numbers are reasonable proxies, so we can use them as estimates since user count is one of the few things you see before joining. ![Screenshot_2020-10-02_17-15-06](https://user-images.githubusercontent.com/71895/94945781-18771500-04d3-11eb-8419-83c2da73a341.png) This is [#1211](https://github.com/matrix-org/synapse/issues/1211) and will also hopefully be mitigated by peeking [matrix-org/matrix-doc#2753](https://github.com/matrix-org/matrix-doc/pull/2753) so at least you don't need to wait for a join to complete before finding out if it's the kind of room you want. Note that you should first disable presence, otherwise it'll just make the situation worse [#3120](https://github.com/matrix-org/synapse/issues/3120). There is a lot of database interaction too, so make sure you've [migrated your data](../postgres.md) from the default sqlite to postgresql. Personally, I recommend patience - once the initial join is complete there's rarely any issues with actually interacting with the room, but if you like you can just block "large" rooms entirely. ### Sessions Anything that requires modifying the device list [#7721](https://github.com/matrix-org/synapse/issues/7721) will take a while to propagate, again taking the client "Offline" until it's complete. This includes signing in and out, editing the public name and verifying e2ee. The main mitigation I recommend is to keep long-running sessions open e.g. by using Firefox SSB "Use this site in App mode" or Chromium PWA "Install Element". ### Recommended configuration Put the below in a new file at /etc/matrix-synapse/conf.d/sbc.yaml to override the defaults in homeserver.yaml. ``` # Disable presence tracking, which is currently fairly resource intensive # More info: https://github.com/matrix-org/synapse/issues/9478 use_presence: false # Set a small complexity limit, preventing users from joining large rooms # which may be resource-intensive to remain a part of. # # Note that this will not prevent users from joining smaller rooms that # eventually become complex. limit_remote_rooms: enabled: true complexity: 3.0 # Database configuration database: # Use postgres for the best performance name: psycopg2 args: user: matrix-synapse # Generate a long, secure password using a password manager password: hunter2 database: matrix-synapse host: localhost ``` Currently the complexity is measured by [current_state_events / 500](https://github.com/matrix-org/synapse/blob/v1.20.1/synapse/storage/databases/main/events_worker.py#L986). You can find join times and your most complex rooms like this: ``` admin@homeserver:~$ zgrep '/client/r0/join/' /var/log/matrix-synapse/homeserver.log* | awk '{print $18, $25}' | sort --human-numeric-sort 29.922sec/-0.002sec /_matrix/client/r0/join/%23debian-fasttrack%3Apoddery.com 182.088sec/0.003sec /_matrix/client/r0/join/%23decentralizedweb-general%3Amatrix.org 911.625sec/-570.847sec /_matrix/client/r0/join/%23synapse%3Amatrix.org admin@homeserver:~$ sudo --user postgres psql matrix-synapse --command 'select canonical_alias, joined_members, current_state_events from room_stats_state natural join room_stats_current where canonical_alias is not null order by current_state_events desc fetch first 5 rows only' canonical_alias | joined_members | current_state_events -------------------------------+----------------+---------------------- #_oftc_#debian:matrix.org | 871 | 52355 #matrix:matrix.org | 6379 | 10684 #irc:matrix.org | 461 | 3751 #decentralizedweb-general:matrix.org | 997 | 1509 #whatsapp:maunium.net | 554 | 854 ```synapse-1.100.0/docs/password_auth_providers.md000066400000000000000000000122241455622526000215750ustar00rootroot00000000000000

This page of the Synapse documentation is now deprecated. For up to date documentation on setting up or writing a password auth provider module, please see this page.

# Password auth provider modules Password auth providers offer a way for server administrators to integrate their Synapse installation with an existing authentication system. A password auth provider is a Python class which is dynamically loaded into Synapse, and provides a number of methods by which it can integrate with the authentication system. This document serves as a reference for those looking to implement their own password auth providers. Additionally, here is a list of known password auth provider module implementations: * [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3/) * [matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) * [matrix-synapse-rest-password-provider](https://github.com/ma1uta/matrix-synapse-rest-password-provider) ## Required methods Password auth provider classes must provide the following methods: * `parse_config(config)` This method is passed the `config` object for this module from the homeserver configuration file. It should perform any appropriate sanity checks on the provided configuration, and return an object which is then passed into `__init__`. This method should have the `@staticmethod` decoration. * `__init__(self, config, account_handler)` The constructor is passed the config object returned by `parse_config`, and a `synapse.module_api.ModuleApi` object which allows the password provider to check if accounts exist and/or create new ones. ## Optional methods Password auth provider classes may optionally provide the following methods: * `get_db_schema_files(self)` This method, if implemented, should return an Iterable of `(name, stream)` pairs of database schema files. Each file is applied in turn at initialisation, and a record is then made in the database so that it is not re-applied on the next start. * `get_supported_login_types(self)` This method, if implemented, should return a `dict` mapping from a login type identifier (such as `m.login.password`) to an iterable giving the fields which must be provided by the user in the submission to [the `/login` API](https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-login). These fields are passed in the `login_dict` dictionary to `check_auth`. For example, if a password auth provider wants to implement a custom login type of `com.example.custom_login`, where the client is expected to pass the fields `secret1` and `secret2`, the provider should implement this method and return the following dict: ```python {"com.example.custom_login": ("secret1", "secret2")} ``` * `check_auth(self, username, login_type, login_dict)` This method does the real work. If implemented, it will be called for each login attempt where the login type matches one of the keys returned by `get_supported_login_types`. It is passed the (possibly unqualified) `user` field provided by the client, the login type, and a dictionary of login secrets passed by the client. The method should return an `Awaitable` object, which resolves to the canonical `@localpart:domain` user ID if authentication is successful, and `None` if not. Alternatively, the `Awaitable` can resolve to a `(str, func)` tuple, in which case the second field is a callback which will be called with the result from the `/login` call (including `access_token`, `device_id`, etc.) * `check_3pid_auth(self, medium, address, password)` This method, if implemented, is called when a user attempts to register or log in with a third party identifier, such as email. It is passed the medium (ex. "email"), an address (ex. "") and the user's password. The method should return an `Awaitable` object, which resolves to a `str` containing the user's (canonical) User id if authentication was successful, and `None` if not. As with `check_auth`, the `Awaitable` may alternatively resolve to a `(user_id, callback)` tuple. * `check_password(self, user_id, password)` This method provides a simpler interface than `get_supported_login_types` and `check_auth` for password auth providers that just want to provide a mechanism for validating `m.login.password` logins. If implemented, it will be called to check logins with an `m.login.password` login type. It is passed a qualified `@localpart:domain` user id, and the password provided by the user. The method should return an `Awaitable` object, which resolves to `True` if authentication is successful, and `False` if not. * `on_logged_out(self, user_id, device_id, access_token)` This method, if implemented, is called when a user logs out. It is passed the qualified user ID, the ID of the deactivated device (if any: access tokens are occasionally created without an associated device ID), and the (now deactivated) access token. It may return an `Awaitable` object; the logout request will wait for the `Awaitable` to complete, but the result is ignored. synapse-1.100.0/docs/postgres.md000066400000000000000000000222251455622526000164650ustar00rootroot00000000000000# Using Postgres The minimum supported version of PostgreSQL is determined by the [Dependency Deprecation Policy](deprecation_policy.md). ## Install postgres client libraries Synapse will require the python postgres client library in order to connect to a postgres database. - If you are using the [matrix.org debian/ubuntu packages](setup/installation.md#matrixorg-packages), the necessary python library will already be installed, but you will need to ensure the low-level postgres library is installed, which you can do with `apt install libpq5`. - For other pre-built packages, please consult the documentation from the relevant package. - If you installed synapse [in a virtualenv](setup/installation.md#installing-as-a-python-module-from-pypi), you can install the library with: ~/synapse/env/bin/pip install "matrix-synapse[postgres]" (substituting the path to your virtualenv for `~/synapse/env`, if you used a different path). You will require the postgres development files. These are in the `libpq-dev` package on Debian-derived distributions. ## Set up database Assuming your PostgreSQL database user is called `postgres`, first authenticate as the database user with: ```sh su - postgres # Or, if your system uses sudo to get administrative rights sudo -u postgres bash ``` Then, create a postgres user and a database with: ```sh # this will prompt for a password for the new user createuser --pwprompt synapse_user createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse ``` The above will create a user called `synapse_user`, and a database called `synapse`. Note that the PostgreSQL database *must* have the correct encoding set (as shown above), otherwise it will not be able to store UTF8 strings. You may need to enable password authentication so `synapse_user` can connect to the database. See . ## Synapse config When you are ready to start using PostgreSQL, edit the `database` section in your config file to match the following lines: ```yaml database: name: psycopg2 args: user: password: dbname: host: cp_min: 5 cp_max: 10 ``` All key, values in `args` are passed to the `psycopg2.connect(..)` function, except keys beginning with `cp_`, which are consumed by the twisted adbapi connection pool. See the [libpq documentation](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) for a list of options which can be passed. You should consider tuning the `args.keepalives_*` options if there is any danger of the connection between your homeserver and database dropping, otherwise Synapse may block for an extended period while it waits for a response from the database server. Example values might be: ```yaml database: args: # ... as above # seconds of inactivity after which TCP should send a keepalive message to the server keepalives_idle: 10 # the number of seconds after which a TCP keepalive message that is not # acknowledged by the server should be retransmitted keepalives_interval: 10 # the number of TCP keepalives that can be lost before the client's connection # to the server is considered dead keepalives_count: 3 ``` ## Tuning Postgres The default settings should be fine for most deployments. For larger scale deployments tuning some of the settings is recommended, details of which can be found at . In particular, we've found tuning the following values helpful for performance: - `shared_buffers` - `effective_cache_size` - `work_mem` - `maintenance_work_mem` - `autovacuum_work_mem` Note that the appropriate values for those fields depend on the amount of free memory the database host has available. Additionally, admins of large deployments might want to consider using huge pages to help manage memory, especially when using large values of `shared_buffers`. You can read more about that [here](https://www.postgresql.org/docs/10/kernel-resources.html#LINUX-HUGE-PAGES). ## Porting from SQLite ### Overview The script `synapse_port_db` allows porting an existing synapse server backed by SQLite to using PostgreSQL. This is done in as a two phase process: 1. Copy the existing SQLite database to a separate location and run the port script against that offline database. 2. Shut down the server. Rerun the port script to port any data that has come in since taking the first snapshot. Restart server against the PostgreSQL database. The port script is designed to be run repeatedly against newer snapshots of the SQLite database file. This makes it safe to repeat step 1 if there was a delay between taking the previous snapshot and being ready to do step 2. It is safe to at any time kill the port script and restart it. However, under no circumstances should the SQLite database be `VACUUM`ed between multiple runs of the script. Doing so can lead to an inconsistent copy of your database into Postgres. To avoid accidental error, the script will check that SQLite's `auto_vacuum` mechanism is disabled, but the script is not able to protect against a manual `VACUUM` operation performed either by the administrator or by any automated task that the administrator may have configured. Note that the database may take up significantly more (25% - 100% more) space on disk after porting to Postgres. ### Using the port script Firstly, shut down the currently running synapse server and copy its database file (typically `homeserver.db`) to another location. Once the copy is complete, restart synapse. For instance: ```sh synctl stop cp homeserver.db homeserver.db.snapshot synctl start ``` Copy the old config file into a new config file: ```sh cp homeserver.yaml homeserver-postgres.yaml ``` Edit the database section as described in the section *Synapse config* above and with the SQLite snapshot located at `homeserver.db.snapshot` simply run: ```sh synapse_port_db --sqlite-database homeserver.db.snapshot \ --postgres-config homeserver-postgres.yaml ``` The flag `--curses` displays a coloured curses progress UI. If the script took a long time to complete, or time has otherwise passed since the original snapshot was taken, repeat the previous steps with a newer snapshot. To complete the conversion shut down the synapse server and run the port script one last time, e.g. if the SQLite database is at `homeserver.db` run: ```sh synapse_port_db --sqlite-database homeserver.db \ --postgres-config homeserver-postgres.yaml ``` Once that has completed, change the synapse config to point at the PostgreSQL database configuration file `homeserver-postgres.yaml`: ```sh synctl stop mv homeserver.yaml homeserver-old-sqlite.yaml mv homeserver-postgres.yaml homeserver.yaml synctl start ``` Synapse should now be running against PostgreSQL. ## Troubleshooting ### Alternative auth methods If you get an error along the lines of `FATAL: Ident authentication failed for user "synapse_user"`, you may need to use an authentication method other than `ident`: * If the `synapse_user` user has a password, add the password to the `database:` section of `homeserver.yaml`. Then add the following to `pg_hba.conf`: ``` host synapse synapse_user ::1/128 md5 # or `scram-sha-256` instead of `md5` if you use that ``` * If the `synapse_user` user does not have a password, then a password doesn't have to be added to `homeserver.yaml`. But the following does need to be added to `pg_hba.conf`: ``` host synapse synapse_user ::1/128 trust ``` Note that line order matters in `pg_hba.conf`, so make sure that if you do add a new line, it is inserted before: ``` host all all ::1/128 ident ``` ### Fixing incorrect `COLLATE` or `CTYPE` Synapse will refuse to set up a new database if it has the wrong values of `COLLATE` and `CTYPE` set. Synapse will also refuse to start an existing database with incorrect values of `COLLATE` and `CTYPE` unless the config flag `allow_unsafe_locale`, found in the `database` section of the config, is set to true. Using different locales can cause issues if the locale library is updated from underneath the database, or if a different version of the locale is used on any replicas. If you have a database with an unsafe locale, the safest way to fix the issue is to dump the database and recreate it with the correct locale parameter (as shown above). It is also possible to change the parameters on a live database and run a `REINDEX` on the entire database, however extreme care must be taken to avoid database corruption. Note that the above may fail with an error about duplicate rows if corruption has already occurred, and such duplicate rows will need to be manually removed. ### Fixing inconsistent sequences error Synapse uses Postgres sequences to generate IDs for various tables. A sequence and associated table can get out of sync if, for example, Synapse has been downgraded and then upgraded again. To fix the issue shut down Synapse (including any and all workers) and run the SQL command included in the error message. Once done Synapse should start successfully. synapse-1.100.0/docs/presence_router_module.md000066400000000000000000000221151455622526000213660ustar00rootroot00000000000000

This page of the Synapse documentation is now deprecated. For up to date documentation on setting up or writing a presence router module, please see this page.

# Presence Router Module Synapse supports configuring a module that can specify additional users (local or remote) to should receive certain presence updates from local users. Note that routing presence via Application Service transactions is not currently supported. The presence routing module is implemented as a Python class, which will be imported by the running Synapse. ## Python Presence Router Class The Python class is instantiated with two objects: * A configuration object of some type (see below). * An instance of `synapse.module_api.ModuleApi`. It then implements methods related to presence routing. Note that one method of `ModuleApi` that may be useful is: ```python async def ModuleApi.send_local_online_presence_to(users: Iterable[str]) -> None ``` which can be given a list of local or remote MXIDs to broadcast known, online user presence to (for those users that the receiving user is considered interested in). It does not include state for users who are currently offline, and it can only be called on workers that support sending federation. Additionally, this method must only be called from the process that has been configured to write to the the [presence stream](workers.md#stream-writers). By default, this is the main process, but another worker can be configured to do so. ### Module structure Below is a list of possible methods that can be implemented, and whether they are required. #### `parse_config` ```python def parse_config(config_dict: dict) -> Any ``` **Required.** A static method that is passed a dictionary of config options, and should return a validated config object. This method is described further in [Configuration](#configuration). #### `get_users_for_states` ```python async def get_users_for_states( self, state_updates: Iterable[UserPresenceState], ) -> Dict[str, Set[UserPresenceState]]: ``` **Required.** An asynchronous method that is passed an iterable of user presence state. This method can determine whether a given presence update should be sent to certain users. It does this by returning a dictionary with keys representing local or remote Matrix User IDs, and values being a python set of `synapse.handlers.presence.UserPresenceState` instances. Synapse will then attempt to send the specified presence updates to each user when possible. #### `get_interested_users` ```python async def get_interested_users(self, user_id: str) -> Union[Set[str], str] ``` **Required.** An asynchronous method that is passed a single Matrix User ID. This method is expected to return the users that the passed in user may be interested in the presence of. Returned users may be local or remote. The presence routed as a result of what this method returns is sent in addition to the updates already sent between users that share a room together. Presence updates are deduplicated. This method should return a python set of Matrix User IDs, or the object `synapse.events.presence_router.PresenceRouter.ALL_USERS` to indicate that the passed user should receive presence information for *all* known users. For clarity, if the user `@alice:example.org` is passed to this method, and the Set `{"@bob:example.com", "@charlie:somewhere.org"}` is returned, this signifies that Alice should receive presence updates sent by Bob and Charlie, regardless of whether these users share a room. ### Example Below is an example implementation of a presence router class. ```python from typing import Dict, Iterable, Set, Union from synapse.events.presence_router import PresenceRouter from synapse.handlers.presence import UserPresenceState from synapse.module_api import ModuleApi class PresenceRouterConfig: def __init__(self): # Config options with their defaults # A list of users to always send all user presence updates to self.always_send_to_users = [] # type: List[str] # A list of users to ignore presence updates for. Does not affect # shared-room presence relationships self.blacklisted_users = [] # type: List[str] class ExamplePresenceRouter: """An example implementation of synapse.presence_router.PresenceRouter. Supports routing all presence to a configured set of users, or a subset of presence from certain users to members of certain rooms. Args: config: A configuration object. module_api: An instance of Synapse's ModuleApi. """ def __init__(self, config: PresenceRouterConfig, module_api: ModuleApi): self._config = config self._module_api = module_api @staticmethod def parse_config(config_dict: dict) -> PresenceRouterConfig: """Parse a configuration dictionary from the homeserver config, do some validation and return a typed PresenceRouterConfig. Args: config_dict: The configuration dictionary. Returns: A validated config object. """ # Initialise a typed config object config = PresenceRouterConfig() always_send_to_users = config_dict.get("always_send_to_users") blacklisted_users = config_dict.get("blacklisted_users") # Do some validation of config options... otherwise raise a # synapse.config.ConfigError. config.always_send_to_users = always_send_to_users config.blacklisted_users = blacklisted_users return config async def get_users_for_states( self, state_updates: Iterable[UserPresenceState], ) -> Dict[str, Set[UserPresenceState]]: """Given an iterable of user presence updates, determine where each one needs to go. Returned results will not affect presence updates that are sent between users who share a room. Args: state_updates: An iterable of user presence state updates. Returns: A dictionary of user_id -> set of UserPresenceState that the user should receive. """ destination_users = {} # type: Dict[str, Set[UserPresenceState] # Ignore any updates for blacklisted users desired_updates = set() for update in state_updates: if update.state_key not in self._config.blacklisted_users: desired_updates.add(update) # Send all presence updates to specific users for user_id in self._config.always_send_to_users: destination_users[user_id] = desired_updates return destination_users async def get_interested_users( self, user_id: str, ) -> Union[Set[str], PresenceRouter.ALL_USERS]: """ Retrieve a list of users that `user_id` is interested in receiving the presence of. This will be in addition to those they share a room with. Optionally, the object PresenceRouter.ALL_USERS can be returned to indicate that this user should receive all incoming local and remote presence updates. Note that this method will only be called for local users. Args: user_id: A user requesting presence updates. Returns: A set of user IDs to return additional presence updates for, or PresenceRouter.ALL_USERS to return presence updates for all other users. """ if user_id in self._config.always_send_to_users: return PresenceRouter.ALL_USERS return set() ``` #### A note on `get_users_for_states` and `get_interested_users` Both of these methods are effectively two different sides of the same coin. The logic regarding which users should receive updates for other users should be the same between them. `get_users_for_states` is called when presence updates come in from either federation or local users, and is used to either direct local presence to remote users, or to wake up the sync streams of local users to collect remote presence. In contrast, `get_interested_users` is used to determine the users that presence should be fetched for when a local user is syncing. This presence is then retrieved, before being fed through `get_users_for_states` once again, with only the syncing user's routing information pulled from the resulting dictionary. Their routing logic should thus line up, else you may run into unintended behaviour. ## Configuration Once you've crafted your module and installed it into the same Python environment as Synapse, amend your homeserver config file with the following. ```yaml presence: enabled: true presence_router: module: my_module.ExamplePresenceRouter config: # Any configuration options for your module. The below is an example. # of setting options for ExamplePresenceRouter. always_send_to_users: ["@presence_gobbler:example.org"] blacklisted_users: - "@alice:example.com" - "@bob:example.com" ... ``` The contents of `config` will be passed as a Python dictionary to the static `parse_config` method of your class. The object returned by this method will then be passed to the `__init__` method of your module as `config`. synapse-1.100.0/docs/privacy_policy_templates/000077500000000000000000000000001455622526000214045ustar00rootroot00000000000000synapse-1.100.0/docs/privacy_policy_templates/en/000077500000000000000000000000001455622526000220065ustar00rootroot00000000000000synapse-1.100.0/docs/privacy_policy_templates/en/1.0.html000066400000000000000000000013241455622526000231720ustar00rootroot00000000000000 Matrix.org Privacy policy {% if has_consented %}

Your base already belong to us.

{% else %}

All your base are belong to us.

{% if not public_version %}
{% endif %} {% endif %} synapse-1.100.0/docs/privacy_policy_templates/en/success.html000066400000000000000000000002321455622526000243410ustar00rootroot00000000000000 Matrix.org Privacy policy

Sweet.

synapse-1.100.0/docs/replication.md000066400000000000000000000030041455622526000171220ustar00rootroot00000000000000# Replication Architecture ## Motivation We'd like to be able to split some of the work that synapse does into multiple python processes. In theory multiple synapse processes could share a single postgresql database and we\'d scale up by running more synapse processes. However much of synapse assumes that only one process is interacting with the database, both for assigning unique identifiers when inserting into tables, notifying components about new updates, and for invalidating its caches. So running multiple copies of the current code isn't an option. One way to run multiple processes would be to have a single writer process and multiple reader processes connected to the same database. In order to do this we'd need a way for the reader process to invalidate its in-memory caches when an update happens on the writer. One way to do this is for the writer to present an append-only log of updates which the readers can consume to invalidate their caches and to push updates to listening clients or pushers. Synapse already stores much of its data as an append-only log so that it can correctly respond to `/sync` requests so the amount of code changes needed to expose the append-only log to the readers should be fairly minimal. ## Architecture ### The Replication Protocol See [the TCP replication documentation](tcp_replication.md). ### The TCP Replication Module Information about how the tcp replication module is structured, including how the classes interact, can be found in `synapse/replication/tcp/__init__.py` synapse-1.100.0/docs/reverse_proxy.md000066400000000000000000000232571455622526000175410ustar00rootroot00000000000000# Using a reverse proxy with Synapse It is recommended to put a reverse proxy such as [nginx](https://nginx.org/en/docs/http/ngx_http_proxy_module.html), [Apache](https://httpd.apache.org/docs/current/mod/mod_proxy_http.html), [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy), [HAProxy](https://www.haproxy.org/) or [relayd](https://man.openbsd.org/relayd.8) in front of Synapse. One advantage of doing so is that it means that you can expose the default https port (443) to Matrix clients without needing to run Synapse with root privileges. You should configure your reverse proxy to forward requests to `/_matrix` or `/_synapse/client` to Synapse, and have it set the `X-Forwarded-For` and `X-Forwarded-Proto` request headers. You should remember that Matrix clients and other Matrix servers do not necessarily need to connect to your server via the same server name or port. Indeed, clients will use port 443 by default, whereas servers default to port 8448. Where these are different, we refer to the 'client port' and the 'federation port'. See [the Matrix specification](https://matrix.org/docs/spec/server_server/latest#resolving-server-names) for more details of the algorithm used for federation connections, and [Delegation](delegate.md) for instructions on setting up delegation. **NOTE**: Your reverse proxy must not `canonicalise` or `normalise` the requested URI in any way (for example, by decoding `%xx` escapes). Beware that Apache *will* canonicalise URIs unless you specify `nocanon`. Let's assume that we expect clients to connect to our server at `https://matrix.example.com`, and other servers to connect at `https://example.com:8448`. The following sections detail the configuration of the reverse proxy and the homeserver. ## Homeserver Configuration The HTTP configuration will need to be updated for Synapse to correctly record client IP addresses and generate redirect URLs while behind a reverse proxy. In `homeserver.yaml` set `x_forwarded: true` in the port 8008 section and consider setting `bind_addresses: ['127.0.0.1']` so that the server only listens to traffic on localhost. (Do not change `bind_addresses` to `127.0.0.1` when using a containerized Synapse, as that will prevent it from responding to proxied traffic.) Optionally, you can also set [`request_id_header`](./usage/configuration/config_documentation.md#listeners) so that the server extracts and re-uses the same request ID format that the reverse proxy is using. ## Reverse-proxy configuration examples **NOTE**: You only need one of these. ### nginx ```nginx server { listen 443 ssl; listen [::]:443 ssl; # For the federation port listen 8448 ssl default_server; listen [::]:8448 ssl default_server; server_name matrix.example.com; location ~ ^(/_matrix|/_synapse/client) { # note: do not add a path (even a single /) after the port in `proxy_pass`, # otherwise nginx will canonicalise the URI and cause signature verification # errors. proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; # Nginx by default only allows file uploads up to 1M in size # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml client_max_body_size 50M; # Synapse responses may be chunked, which is an HTTP/1.1 feature. proxy_http_version 1.1; } } ``` ### Caddy v2 ``` matrix.example.com { reverse_proxy /_matrix/* localhost:8008 reverse_proxy /_synapse/client/* localhost:8008 } example.com:8448 { reverse_proxy /_matrix/* localhost:8008 } ``` [Delegation](delegate.md) example: ``` example.com { header /.well-known/matrix/* Content-Type application/json header /.well-known/matrix/* Access-Control-Allow-Origin * respond /.well-known/matrix/server `{"m.server": "matrix.example.com:443"}` respond /.well-known/matrix/client `{"m.homeserver":{"base_url":"https://matrix.example.com"},"m.identity_server":{"base_url":"https://identity.example.com"}}` } matrix.example.com { reverse_proxy /_matrix/* localhost:8008 reverse_proxy /_synapse/client/* localhost:8008 } ``` ### Apache ```apache SSLEngine on ServerName matrix.example.com RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} AllowEncodedSlashes NoDecode ProxyPreserveHost on ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix ProxyPass /_synapse/client http://127.0.0.1:8008/_synapse/client nocanon ProxyPassReverse /_synapse/client http://127.0.0.1:8008/_synapse/client SSLEngine on ServerName example.com RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} AllowEncodedSlashes NoDecode ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix ``` **NOTE**: ensure the `nocanon` options are included. **NOTE 2**: It appears that Synapse is currently incompatible with the ModSecurity module for Apache (`mod_security2`). If you need it enabled for other services on your web server, you can disable it for Synapse's two VirtualHosts by including the following lines before each of the two `` above: ```apache SecRuleEngine off ``` **NOTE 3**: Missing `ProxyPreserveHost on` can lead to a redirect loop. ### HAProxy ``` frontend https bind *:443,[::]:443 ssl crt /etc/ssl/haproxy/ strict-sni alpn h2,http/1.1 http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Proto http if !{ ssl_fc } http-request set-header X-Forwarded-For %[src] # Matrix client traffic acl matrix-host hdr(host) -i matrix.example.com matrix.example.com:443 acl matrix-path path_beg /_matrix acl matrix-path path_beg /_synapse/client use_backend matrix if matrix-host matrix-path frontend matrix-federation bind *:8448,[::]:8448 ssl crt /etc/ssl/haproxy/synapse.pem alpn h2,http/1.1 http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Proto http if !{ ssl_fc } http-request set-header X-Forwarded-For %[src] default_backend matrix backend matrix server matrix 127.0.0.1:8008 ``` Example configuration, if using a UNIX socket. The configuration lines regarding the frontends do not need to be modified. ``` backend matrix server matrix unix@/run/synapse/main_public.sock ``` [Delegation](delegate.md) example: ``` frontend https acl matrix-well-known-client-path path /.well-known/matrix/client acl matrix-well-known-server-path path /.well-known/matrix/server use_backend matrix-well-known-client if matrix-well-known-client-path use_backend matrix-well-known-server if matrix-well-known-server-path backend matrix-well-known-client http-after-response set-header Access-Control-Allow-Origin "*" http-after-response set-header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" http-after-response set-header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization" http-request return status 200 content-type application/json string '{"m.homeserver":{"base_url":"https://matrix.example.com"},"m.identity_server":{"base_url":"https://identity.example.com"}}' backend matrix-well-known-server http-after-response set-header Access-Control-Allow-Origin "*" http-after-response set-header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" http-after-response set-header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization" http-request return status 200 content-type application/json string '{"m.server":"matrix.example.com:443"}' ``` ### Relayd ``` table { 127.0.0.1 } table { 127.0.0.1 } http protocol "https" { tls { no tlsv1.0, ciphers "HIGH" } tls keypair "example.com" match header set "X-Forwarded-For" value "$REMOTE_ADDR" match header set "X-Forwarded-Proto" value "https" # set CORS header for .well-known/matrix/server, .well-known/matrix/client # httpd does not support setting headers, so do it here match request path "/.well-known/matrix/*" tag "matrix-cors" match response tagged "matrix-cors" header set "Access-Control-Allow-Origin" value "*" pass quick path "/_matrix/*" forward to pass quick path "/_synapse/client/*" forward to # pass on non-matrix traffic to webserver pass forward to } relay "https_traffic" { listen on egress port 443 tls protocol "https" forward to port 8008 check tcp forward to port 8080 check tcp } http protocol "matrix" { tls { no tlsv1.0, ciphers "HIGH" } tls keypair "example.com" block pass quick path "/_matrix/*" forward to pass quick path "/_synapse/client/*" forward to } relay "matrix_federation" { listen on egress port 8448 tls protocol "matrix" forward to port 8008 check tcp } ``` ## Health check endpoint Synapse exposes a health check endpoint for use by reverse proxies. Each configured HTTP listener has a `/health` endpoint which always returns 200 OK (and doesn't get logged). ## Synapse administration endpoints Endpoints for administering your Synapse instance are placed under `/_synapse/admin`. These require authentication through an access token of an admin user. However as access to these endpoints grants the caller a lot of power, we do not recommend exposing them to the public internet without good reason. synapse-1.100.0/docs/room_and_user_statistics.md000066400000000000000000000012251455622526000217220ustar00rootroot00000000000000Room and User Statistics ======================== Synapse maintains room and user statistics in various tables. These can be used for administrative purposes but are also used when generating the public room directory. # Synapse Developer Documentation ## High-Level Concepts ### Definitions * **subject**: Something we are tracking stats about – currently a room or user. * **current row**: An entry for a subject in the appropriate current statistics table. Each subject can have only one. ### Overview Stats correspond to the present values. Current rows contain the most up-to-date statistics for a room. Each subject can only have one entry. synapse-1.100.0/docs/sample_config.yaml000066400000000000000000000032751455622526000177730ustar00rootroot00000000000000# This file is maintained as an up-to-date snapshot of the default # homeserver.yaml configuration generated by Synapse. You can find a # complete accounting of possible configuration options at # https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html # # It is *not* intended to be copied and used as the basis for a real # homeserver.yaml. Instead, if you are starting from scratch, please generate # a fresh config using Synapse by following the instructions in # https://element-hq.github.io/synapse/latest/setup/installation.html. # ################################################################################ # Configuration file for Synapse. # # This is a YAML file: see [1] for a quick introduction. Note in particular # that *indentation is important*: all the elements of a list or dictionary # should have the same indentation. # # [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html # # For more information on how to configure Synapse, including a complete accounting of # each option, go to docs/usage/configuration/config_documentation.md or # https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html server_name: "SERVERNAME" pid_file: DATADIR/homeserver.pid listeners: - port: 8008 tls: false type: http x_forwarded: true bind_addresses: ['::1', '127.0.0.1'] resources: - names: [client, federation] compress: false database: name: sqlite3 args: database: DATADIR/homeserver.db log_config: "CONFDIR/SERVERNAME.log.config" media_store_path: DATADIR/media_store signing_key_path: "CONFDIR/SERVERNAME.signing.key" trusted_key_servers: - server_name: "matrix.org" synapse-1.100.0/docs/sample_log_config.yaml000066400000000000000000000052541455622526000206330ustar00rootroot00000000000000# Log configuration for Synapse. # # This is a YAML file containing a standard Python logging configuration # dictionary. See [1] for details on the valid settings. # # Synapse also supports structured logging for machine readable logs which can # be ingested by ELK stacks. See [2] for details. # # [1]: https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema # [2]: https://element-hq.github.io/synapse/latest/structured_logging.html version: 1 formatters: precise: format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' handlers: file: class: logging.handlers.TimedRotatingFileHandler formatter: precise filename: /var/log/matrix-synapse/homeserver.log when: midnight backupCount: 3 # Does not include the current log file. encoding: utf8 # Default to buffering writes to log file for efficiency. # WARNING/ERROR logs will still be flushed immediately, but there will be a # delay (of up to `period` seconds, or until the buffer is full with # `capacity` messages) before INFO/DEBUG logs get written. buffer: class: synapse.logging.handlers.PeriodicallyFlushingMemoryHandler target: file # The capacity is the maximum number of log lines that are buffered # before being written to disk. Increasing this will lead to better # performance, at the expensive of it taking longer for log lines to # be written to disk. # This parameter is required. capacity: 10 # Logs with a level at or above the flush level will cause the buffer to # be flushed immediately. # Default value: 40 (ERROR) # Other values: 50 (CRITICAL), 30 (WARNING), 20 (INFO), 10 (DEBUG) flushLevel: 30 # Flush immediately for WARNING logs and higher # The period of time, in seconds, between forced flushes. # Messages will not be delayed for longer than this time. # Default value: 5 seconds period: 5 # A handler that writes logs to stderr. Unused by default, but can be used # instead of "buffer" and "file" in the logger handlers. console: class: logging.StreamHandler formatter: precise loggers: synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO root: level: INFO # Write logs to the `buffer` handler, which will buffer them together in memory, # then write them to a file. # # Replace "buffer" with "console" to log to stderr instead. # handlers: [buffer] disable_existing_loggers: false synapse-1.100.0/docs/server_notices.md000066400000000000000000000052531455622526000176530ustar00rootroot00000000000000# Server Notices 'Server Notices' are a new feature introduced in Synapse 0.30. They provide a channel whereby server administrators can send messages to users on the server. They are used as part of communication of the server polices (see [Consent Tracking](consent_tracking.md)), however the intention is that they may also find a use for features such as "Message of the day". This is a feature specific to Synapse, but it uses standard Matrix communication mechanisms, so should work with any Matrix client. ## User experience When the user is first sent a server notice, they will get an invitation to a room (typically called 'Server Notices', though this is configurable in `homeserver.yaml`). They will be **unable to reject** this invitation - attempts to do so will receive an error. Once they accept the invitation, they will see the notice message in the room history; it will appear to have come from the 'server notices user' (see below). The user is prevented from sending any messages in this room by the power levels. Having joined the room, the user can leave the room if they want. Subsequent server notices will then cause a new room to be created. ## Synapse configuration Server notices come from a specific user id on the server. Server administrators are free to choose the user id - something like `server` is suggested, meaning the notices will come from `@server:`. Once the Server Notices user is configured, that user id becomes a special, privileged user, so administrators should ensure that **it is not already allocated**. In order to support server notices, it is necessary to add some configuration to the `homeserver.yaml` file. In particular, you should add a `server_notices` section, which should look like this: ```yaml server_notices: system_mxid_localpart: server system_mxid_display_name: "Server Notices" system_mxid_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ" room_name: "Server Notices" room_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ" room_topic: "Room used by your server admin to notice you of important information" auto_join: true ``` The only compulsory setting is `system_mxid_localpart`, which defines the user id of the Server Notices user, as above. `room_name` defines the name of the room which will be created, `room_avatar_url` its avatar and `room_topic` its topic. `system_mxid_display_name` and `system_mxid_avatar_url` can be used to set the displayname and avatar of the Server Notices user. `auto_join` will autojoin users to the notices room instead of sending an invite. ## Sending notices To send server notices to users you can use the [admin_api](admin_api/server_notices.md). synapse-1.100.0/docs/setup/000077500000000000000000000000001455622526000154325ustar00rootroot00000000000000synapse-1.100.0/docs/setup/forward_proxy.md000066400000000000000000000053131455622526000206630ustar00rootroot00000000000000# Using a forward proxy with Synapse You can use Synapse with a forward or outbound proxy. An example of when this is necessary is in corporate environments behind a DMZ (demilitarized zone). Synapse supports routing outbound HTTP(S) requests via a proxy. Only HTTP(S) proxy is supported, not SOCKS proxy or anything else. ## Configure The `http_proxy`, `https_proxy`, `no_proxy` environment variables are used to specify proxy settings. The environment variable is not case sensitive. - `http_proxy`: Proxy server to use for HTTP requests. - `https_proxy`: Proxy server to use for HTTPS requests. - `no_proxy`: Comma-separated list of hosts, IP addresses, or IP ranges in CIDR format which should not use the proxy. Synapse will directly connect to these hosts. The `http_proxy` and `https_proxy` environment variables have the form: `[scheme://][:@][:]` - Supported schemes are `http://` and `https://`. The default scheme is `http://` for compatibility reasons; it is recommended to set a scheme. If scheme is set to `https://` the connection uses TLS between Synapse and the proxy. **NOTE**: Synapse validates the certificates. If the certificate is not valid, then the connection is dropped. - Default port if not given is `1080`. - Username and password are optional and will be used to authenticate against the proxy. **Examples** - HTTP_PROXY=http://USERNAME:PASSWORD@10.0.1.1:8080/ - HTTPS_PROXY=http://USERNAME:PASSWORD@proxy.example.com:8080/ - NO_PROXY=master.hostname.example.com,10.1.0.0/16,172.30.0.0/16 **NOTE**: Synapse does not apply the IP blacklist to connections through the proxy (since the DNS resolution is done by the proxy). It is expected that the proxy or firewall will apply blacklisting of IP addresses. ## Connection types The proxy will be **used** for: - push - url previews - phone-home stats - recaptcha validation - CAS auth validation - OpenID Connect - Outbound federation - Federation (checking public key revocation) - Fetching public keys of other servers - Downloading remote media It will **not be used** for: - Application Services - Identity servers - In worker configurations - connections between workers - connections from workers to Redis ## Troubleshooting If a proxy server is used with TLS (HTTPS) and no connections are established, it is most likely due to the proxy's certificates. To test this, the validation in Synapse can be deactivated. **NOTE**: This has an impact on security and is for testing purposes only! To deactivate the certificate validation, the following setting must be added to your [homserver.yaml](../usage/configuration/homeserver_sample_config.md). ```yaml use_insecure_ssl_client_just_for_testing_do_not_use: true ``` synapse-1.100.0/docs/setup/installation.md000066400000000000000000000505361455622526000204660ustar00rootroot00000000000000# Installation Instructions ## Choosing your server name It is important to choose the name for your server before you install Synapse, because it cannot be changed later. The server name determines the "domain" part of user-ids for users on your server: these will all be of the format `@user:my.domain.name`. It also determines how other matrix servers will reach yours for federation. For a test configuration, set this to the hostname of your server. For a more production-ready setup, you will probably want to specify your domain (`example.com`) rather than a matrix-specific hostname here (in the same way that your email address is probably `user@example.com` rather than `user@email.example.com`) - but doing so may require more advanced setup: see [Setting up Federation](../federate.md). ## Installing Synapse ### Prebuilt packages Prebuilt packages are available for a number of platforms. These are recommended for most users. #### Docker images and Ansible playbooks There is an official synapse image available at or at [`ghcr.io/element-hq/synapse`](https://ghcr.io/element-hq/synapse) which can be used with the docker-compose file available at [contrib/docker](https://github.com/element-hq/synapse/tree/develop/contrib/docker). Further information on this including configuration options is available in the README on hub.docker.com. Alternatively, Andreas Peters (previously Silvio Fricke) has contributed a Dockerfile to automate a synapse server in a single Docker image, at Slavi Pantaleev has created an Ansible playbook, which installs the official Docker image of Matrix Synapse along with many other Matrix-related services (Postgres database, Element, coturn, ma1sd, SSL support, etc.). For more details, see #### Debian/Ubuntu ##### Matrix.org packages Matrix.org provides Debian/Ubuntu packages of Synapse, for the amd64 architecture via . To install the latest release: TODO UPDATE ALL THIS ```sh sudo apt install -y lsb-release wget apt-transport-https sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list sudo apt update sudo apt install matrix-synapse-py3 ``` Packages are also published for release candidates. To enable the prerelease channel, add `prerelease` to the `sources.list` line. For example: ```sh sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main prerelease" | sudo tee /etc/apt/sources.list.d/matrix-org.list sudo apt update sudo apt install matrix-synapse-py3 ``` The fingerprint of the repository signing key (as shown by `gpg /usr/share/keyrings/matrix-org-archive-keyring.gpg`) is `AAF9AE843A7584B5A3E4CD2BCF45A512DE2DA058`. When installing with Debian packages, you might prefer to place files in `/etc/matrix-synapse/conf.d/` to override your configuration without editing the main configuration file at `/etc/matrix-synapse/homeserver.yaml`. By doing that, you won't be asked if you want to replace your configuration file when you upgrade the Debian package to a later version. ##### Downstream Debian packages Andrej Shadura maintains a [`matrix-synapse`](https://packages.debian.org/sid/matrix-synapse) package in the Debian repositories. For `bookworm` and `sid`, it can be installed simply with: ```sh sudo apt install matrix-synapse ``` Synapse is also available in `bullseye-backports`. Please see the [Debian documentation](https://backports.debian.org/Instructions/) for information on how to use backports. `matrix-synapse` is no longer maintained for `buster` and older. ##### Downstream Ubuntu packages We do not recommend using the packages in the default Ubuntu repository at this time, as they are [old and suffer from known security vulnerabilities]( https://bugs.launchpad.net/ubuntu/+source/matrix-synapse/+bug/1848709 ). The latest version of Synapse can be installed from [our repository](#matrixorg-packages). #### Fedora Synapse is in the Fedora repositories as [`matrix-synapse`](https://src.fedoraproject.org/rpms/matrix-synapse): ```sh sudo dnf install matrix-synapse ``` Additionally, Oleg Girko provides Fedora RPMs at #### OpenSUSE Synapse is in the OpenSUSE repositories as [`matrix-synapse`](https://software.opensuse.org/package/matrix-synapse): ```sh sudo zypper install matrix-synapse ``` #### SUSE Linux Enterprise Server Unofficial package are built for SLES 15 in the openSUSE:Backports:SLE-15 repository at #### ArchLinux The quickest way to get up and running with ArchLinux is probably with the package provided by ArchLinux , which should pull in most of the necessary dependencies. pip may be outdated (6.0.7-1 and needs to be upgraded to 6.0.8-1 ): ```sh sudo pip install --upgrade pip ``` If you encounter an error with lib bcrypt causing an Wrong ELF Class: ELFCLASS32 (x64 Systems), you may need to reinstall py-bcrypt to correctly compile it under the right architecture. (This should not be needed if installing under virtualenv): ```sh sudo pip uninstall py-bcrypt sudo pip install py-bcrypt ``` #### Alpine Linux 6543 maintains [Synapse packages for Alpine Linux](https://pkgs.alpinelinux.org/packages?name=synapse&branch=edge) in the community repository. Install with: ```sh sudo apk add synapse ``` #### Void Linux Synapse can be found in the void repositories as ['synapse'](https://github.com/void-linux/void-packages/tree/master/srcpkgs/synapse): ```sh xbps-install -Su xbps-install -S synapse ``` #### FreeBSD Synapse can be installed via FreeBSD Ports or Packages contributed by Brendan Molloy from: - Ports: `cd /usr/ports/net-im/py-matrix-synapse && make install clean` - Packages: `pkg install py38-matrix-synapse` #### OpenBSD As of OpenBSD 6.7 Synapse is available as a pre-compiled binary. The filesystem underlying the homeserver directory (defaults to `/var/synapse`) has to be mounted with `wxallowed` (cf. `mount(8)`), so creating a separate filesystem and mounting it to `/var/synapse` should be taken into consideration. Installing Synapse: ```sh doas pkg_add synapse ``` #### NixOS Robin Lambertz has packaged Synapse for NixOS at: ### Installing as a Python module from PyPI It's also possible to install Synapse as a Python module from PyPI. When following this route please make sure that the [Platform-specific prerequisites](#platform-specific-prerequisites) are already installed. System requirements: - POSIX-compliant system (tested on Linux & OS X) - Python 3.8 or later, up to Python 3.11. - At least 1GB of free RAM if you want to join large public rooms like #matrix:matrix.org If building on an uncommon architecture for which pre-built wheels are unavailable, you will need to have a recent Rust compiler installed. The easiest way of installing the latest version is to use [rustup](https://rustup.rs/). To install the Synapse homeserver run: ```sh mkdir -p ~/synapse virtualenv -p python3 ~/synapse/env source ~/synapse/env/bin/activate pip install --upgrade pip pip install --upgrade setuptools pip install matrix-synapse ``` This will download Synapse from [PyPI](https://pypi.org/project/matrix-synapse) and install it, along with the python libraries it uses, into a virtual environment under `~/synapse/env`. Feel free to pick a different directory if you prefer. This Synapse installation can then be later upgraded by using pip again with the update flag: ```sh source ~/synapse/env/bin/activate pip install -U matrix-synapse ``` Before you can start Synapse, you will need to generate a configuration file. To do this, run (in your virtualenv, as before): ```sh cd ~/synapse python -m synapse.app.homeserver \ --server-name my.domain.name \ --config-path homeserver.yaml \ --generate-config \ --report-stats=[yes|no] ``` ... substituting an appropriate value for `--server-name` and choosing whether or not to report usage statistics (hostname, Synapse version, uptime, total users, etc.) to the developers via the `--report-stats` argument. This command will generate you a config file that you can then customise, but it will also generate a set of keys for you. These keys will allow your homeserver to identify itself to other homeserver, so don't lose or delete them. It would be wise to back them up somewhere safe. (If, for whatever reason, you do need to change your homeserver's keys, you may find that other homeserver have the old key cached. If you update the signing key, you should change the name of the key in the `.signing.key` file (the second word) to something different. See the [spec](https://matrix.org/docs/spec/server_server/latest.html#retrieving-server-keys) for more information on key management). To actually run your new homeserver, pick a working directory for Synapse to run (e.g. `~/synapse`), and: ```sh cd ~/synapse source env/bin/activate synctl start ``` #### Platform-specific prerequisites Synapse is written in Python but some of the libraries it uses are written in C. So before we can install Synapse itself we need a working C compiler and the header files for Python C extensions. ##### Debian/Ubuntu/Raspbian Installing prerequisites on Ubuntu or Debian: ```sh sudo apt install build-essential python3-dev libffi-dev \ python3-pip python3-setuptools sqlite3 \ libssl-dev virtualenv libjpeg-dev libxslt1-dev libicu-dev ``` ##### ArchLinux Installing prerequisites on ArchLinux: ```sh sudo pacman -S base-devel python python-pip \ python-setuptools python-virtualenv sqlite3 icu ``` ##### CentOS/Fedora Installing prerequisites on CentOS or Fedora Linux: ```sh sudo dnf install libtiff-devel libjpeg-devel libzip-devel freetype-devel \ libwebp-devel libxml2-devel libxslt-devel libpq-devel \ python3-virtualenv libffi-devel openssl-devel python3-devel \ libicu-devel sudo dnf groupinstall "Development Tools" ``` ##### macOS Installing prerequisites on macOS: You may need to install the latest Xcode developer tools: ```sh xcode-select --install ``` Some extra dependencies may be needed. You can use Homebrew (https://brew.sh) for them. You may need to install icu, and make the icu binaries and libraries accessible. Please follow [the official instructions of PyICU](https://pypi.org/project/PyICU/) to do so. On ARM-based Macs you may also need to install libjpeg and libpq: ```sh brew install jpeg libpq ``` On macOS Catalina (10.15) you may need to explicitly install OpenSSL via brew and inform `pip` about it so that `psycopg2` builds: ```sh brew install openssl@1.1 export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include" ``` ##### OpenSUSE Installing prerequisites on openSUSE: ```sh sudo zypper in -t pattern devel_basis sudo zypper in python-pip python-setuptools sqlite3 python-virtualenv \ python-devel libffi-devel libopenssl-devel libjpeg62-devel \ libicu-devel ``` ##### OpenBSD A port of Synapse is available under `net/synapse`. The filesystem underlying the homeserver directory (defaults to `/var/synapse`) has to be mounted with `wxallowed` (cf. `mount(8)`), so creating a separate filesystem and mounting it to `/var/synapse` should be taken into consideration. To be able to build Synapse's dependency on python the `WRKOBJDIR` (cf. `bsd.port.mk(5)`) for building python, too, needs to be on a filesystem mounted with `wxallowed` (cf. `mount(8)`). Creating a `WRKOBJDIR` for building python under `/usr/local` (which on a default OpenBSD installation is mounted with `wxallowed`): ```sh doas mkdir /usr/local/pobj_wxallowed ``` Assuming `PORTS_PRIVSEP=Yes` (cf. `bsd.port.mk(5)`) and `SUDO=doas` are configured in `/etc/mk.conf`: ```sh doas chown _pbuild:_pbuild /usr/local/pobj_wxallowed ``` Setting the `WRKOBJDIR` for building python: ```sh echo WRKOBJDIR_lang/python/3.7=/usr/local/pobj_wxallowed \\nWRKOBJDIR_lang/python/2.7=/usr/local/pobj_wxallowed >> /etc/mk.conf ``` Building Synapse: ```sh cd /usr/ports/net/synapse make install ``` ##### Windows Running Synapse natively on Windows is not officially supported. If you wish to run or develop Synapse on Windows, the Windows Subsystem for Linux provides a Linux environment which is capable of using the Debian, Fedora, or source installation methods. More information about WSL can be found at for Windows 10/11 and for Windows Server. ## Setting up Synapse Once you have installed synapse as above, you will need to configure it. ### Using PostgreSQL By default Synapse uses an [SQLite](https://sqlite.org/) database and in doing so trades performance for convenience. Almost all installations should opt to use [PostgreSQL](https://www.postgresql.org) instead. Advantages include: - significant performance improvements due to the superior threading and caching model, smarter query optimiser - allowing the DB to be run on separate hardware For information on how to install and use PostgreSQL in Synapse, please see [Using Postgres](../postgres.md) SQLite is only acceptable for testing purposes. SQLite should not be used in a production server. Synapse will perform poorly when using SQLite, especially when participating in large rooms. ### TLS certificates The default configuration exposes a single HTTP port on the local interface: `http://localhost:8008`. It is suitable for local testing, but for any practical use, you will need Synapse's APIs to be served over HTTPS. The recommended way to do so is to set up a reverse proxy on port `8448`. You can find documentation on doing so in [the reverse proxy documentation](../reverse_proxy.md). Alternatively, you can configure Synapse to expose an HTTPS port. To do so, you will need to edit `homeserver.yaml`, as follows: - First, under the `listeners` option, add the configuration for the TLS-enabled listener like so: ```yaml listeners: - port: 8448 type: http tls: true resources: - names: [client, federation] ``` - You will also need to add the options `tls_certificate_path` and `tls_private_key_path`. to your configuration file. You will need to manage provisioning of these certificates yourself. - You can find more information about these options as well as how to configure synapse in the [configuration manual](../usage/configuration/config_documentation.md). If you are using your own certificate, be sure to use a `.pem` file that includes the full certificate chain including any intermediate certificates (for instance, if using certbot, use `fullchain.pem` as your certificate, not `cert.pem`). For a more detailed guide to configuring your server for federation, see [Federation](../federate.md). ### Client Well-Known URI Setting up the client Well-Known URI is optional but if you set it up, it will allow users to enter their full username (e.g. `@user:`) into clients which support well-known lookup to automatically configure the homeserver and identity server URLs. This is useful so that users don't have to memorize or think about the actual homeserver URL you are using. The URL `https:///.well-known/matrix/client` should return JSON in the following format. ```json { "m.homeserver": { "base_url": "https://" } } ``` It can optionally contain identity server information as well. ```json { "m.homeserver": { "base_url": "https://" }, "m.identity_server": { "base_url": "https://" } } ``` To work in browser based clients, the file must be served with the appropriate Cross-Origin Resource Sharing (CORS) headers. A recommended value would be `Access-Control-Allow-Origin: *` which would allow all browser based clients to view it. In nginx this would be something like: ```nginx location /.well-known/matrix/client { return 200 '{"m.homeserver": {"base_url": "https://"}}'; default_type application/json; add_header Access-Control-Allow-Origin *; } ``` You should also ensure the `public_baseurl` option in `homeserver.yaml` is set correctly. `public_baseurl` should be set to the URL that clients will use to connect to your server. This is the same URL you put for the `m.homeserver` `base_url` above. ```yaml public_baseurl: "https://" ``` ### Email It is desirable for Synapse to have the capability to send email. This allows Synapse to send password reset emails, send verifications when an email address is added to a user's account, and send email notifications to users when they receive new messages. To configure an SMTP server for Synapse, modify the configuration section headed `email`, and be sure to have at least the `smtp_host`, `smtp_port` and `notif_from` fields filled out. You may also need to set `smtp_user`, `smtp_pass`, and `require_transport_security`. If email is not configured, password reset, registration and notifications via email will be disabled. ### Registering a user One way to create a new user is to do so from a client like [Element](https://element.io/). This requires registration to be enabled via the [`enable_registration`](../usage/configuration/config_documentation.md#enable_registration) setting. Alternatively, you can create new users from the command line. This can be done as follows: 1. If synapse was installed via pip, activate the virtualenv as follows (if Synapse was installed via a prebuilt package, `register_new_matrix_user` should already be on the search path): ```sh cd ~/synapse source env/bin/activate synctl start # if not already running ``` 2. Run the following command: ```sh register_new_matrix_user -c homeserver.yaml ``` This will prompt you to add details for the new user, and will then connect to the running Synapse to create the new user. For example: ``` New user localpart: erikj Password: Confirm password: Make admin [no]: Success! ``` This process uses a setting [`registration_shared_secret`](../usage/configuration/config_documentation.md#registration_shared_secret), which is shared between Synapse itself and the `register_new_matrix_user` script. It doesn't matter what it is (a random value is generated by `--generate-config`), but it should be kept secret, as anyone with knowledge of it can register users, including admin accounts, on your server even if `enable_registration` is `false`. ### Setting up a TURN server For reliable VoIP calls to be routed via this homeserver, you MUST configure a TURN server. See [TURN setup](../turn-howto.md) for details. ### URL previews Synapse includes support for previewing URLs, which is disabled by default. To turn it on you must enable the `url_preview_enabled: True` config parameter and explicitly specify the IP ranges that Synapse is not allowed to spider for previewing in the `url_preview_ip_range_blacklist` configuration parameter. This is critical from a security perspective to stop arbitrary Matrix users spidering 'internal' URLs on your network. At the very least we recommend that your loopback and RFC1918 IP addresses are blacklisted. This also requires the optional `lxml` python dependency to be installed. This in turn requires the `libxml2` library to be available - on Debian/Ubuntu this means `apt-get install libxml2-dev`, or equivalent for your OS. ### Troubleshooting Installation `pip` seems to leak *lots* of memory during installation. For instance, a Linux host with 512MB of RAM may run out of memory whilst installing Twisted. If this happens, you will have to individually install the dependencies which are failing, e.g.: ```sh pip install twisted ``` If you have any other problems, feel free to ask in [#synapse:matrix.org](https://matrix.to/#/#synapse:matrix.org). synapse-1.100.0/docs/setup/turn/000077500000000000000000000000001455622526000164225ustar00rootroot00000000000000synapse-1.100.0/docs/setup/turn/coturn.md000066400000000000000000000147251455622526000202670ustar00rootroot00000000000000# coturn TURN server The following sections describe how to install [coturn]() (which implements the TURN REST API). ## `coturn` setup ### Initial installation The TURN daemon `coturn` is available from a variety of sources such as native package managers, or installation from source. #### Debian and Ubuntu based distributions Just install the debian package: ```sh sudo apt install coturn ``` This will install and start a systemd service called `coturn`. #### Source installation 1. Download the [latest release](https://github.com/coturn/coturn/releases/latest) from github. Unpack it and `cd` into the directory. 1. Configure it: ```sh ./configure ``` You may need to install `libevent2`: if so, you should do so in the way recommended by your operating system. You can ignore warnings about lack of database support: a database is unnecessary for this purpose. 1. Build and install it: ```sh make sudo make install ``` ### Configuration 1. Create or edit the config file in `/etc/turnserver.conf`. The relevant lines, with example values, are: ``` use-auth-secret static-auth-secret=[your secret key here] realm=turn.myserver.org ``` See `turnserver.conf` for explanations of the options. One way to generate the `static-auth-secret` is with `pwgen`: ```sh pwgen -s 64 1 ``` A `realm` must be specified, but its value is somewhat arbitrary. (It is sent to clients as part of the authentication flow.) It is conventional to set it to be your server name. 1. You will most likely want to configure `coturn` to write logs somewhere. The easiest way is normally to send them to the syslog: ```sh syslog ``` (in which case, the logs will be available via `journalctl -u coturn` on a systemd system). Alternatively, `coturn` can be configured to write to a logfile - check the example config file supplied with `coturn`. 1. Consider your security settings. TURN lets users request a relay which will connect to arbitrary IP addresses and ports. The following configuration is suggested as a minimum starting point: ``` # VoIP traffic is all UDP. There is no reason to let users connect to arbitrary TCP endpoints via the relay. no-tcp-relay # don't let the relay ever try to connect to private IP address ranges within your network (if any) # given the turn server is likely behind your firewall, remember to include any privileged public IPs too. denied-peer-ip=10.0.0.0-10.255.255.255 denied-peer-ip=192.168.0.0-192.168.255.255 denied-peer-ip=172.16.0.0-172.31.255.255 # recommended additional local peers to block, to mitigate external access to internal services. # https://www.rtcsec.com/article/slack-webrtc-turn-compromise-and-bug-bounty/#how-to-fix-an-open-turn-relay-to-address-this-vulnerability no-multicast-peers denied-peer-ip=0.0.0.0-0.255.255.255 denied-peer-ip=100.64.0.0-100.127.255.255 denied-peer-ip=127.0.0.0-127.255.255.255 denied-peer-ip=169.254.0.0-169.254.255.255 denied-peer-ip=192.0.0.0-192.0.0.255 denied-peer-ip=192.0.2.0-192.0.2.255 denied-peer-ip=192.88.99.0-192.88.99.255 denied-peer-ip=198.18.0.0-198.19.255.255 denied-peer-ip=198.51.100.0-198.51.100.255 denied-peer-ip=203.0.113.0-203.0.113.255 denied-peer-ip=240.0.0.0-255.255.255.255 # special case the turn server itself so that client->TURN->TURN->client flows work # this should be one of the turn server's listening IPs allowed-peer-ip=10.0.0.1 # consider whether you want to limit the quota of relayed streams per user (or total) to avoid risk of DoS. user-quota=12 # 4 streams per video call, so 12 streams = 3 simultaneous relayed calls per user. total-quota=1200 ``` 1. Also consider supporting TLS/DTLS. To do this, add the following settings to `turnserver.conf`: ``` # TLS certificates, including intermediate certs. # For Let's Encrypt certificates, use `fullchain.pem` here. cert=/path/to/fullchain.pem # TLS private key file pkey=/path/to/privkey.pem # Ensure the configuration lines that disable TLS/DTLS are commented-out or removed #no-tls #no-dtls ``` In this case, replace the `turn:` schemes in the `turn_uris` settings below with `turns:`. We recommend that you only try to set up TLS/DTLS once you have set up a basic installation and got it working. NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will not work with any Matrix client that uses Chromium's WebRTC library. This currently includes Element Android & iOS; for more details, see their [respective](https://github.com/vector-im/element-android/issues/1533) [issues](https://github.com/vector-im/element-ios/issues/2712) as well as the underlying [WebRTC issue](https://bugs.chromium.org/p/webrtc/issues/detail?id=11710). Consider using a ZeroSSL certificate for your TURN server as a working alternative. 1. Ensure your firewall allows traffic into the TURN server on the ports you've configured it to listen on (By default: 3478 and 5349 for TURN traffic (remember to allow both TCP and UDP traffic), and ports 49152-65535 for the UDP relay.) 1. If your TURN server is behind NAT, the NAT gateway must have an external, publicly-reachable IP address. You must configure `coturn` to advertise that address to connecting clients: ``` external-ip=EXTERNAL_NAT_IPv4_ADDRESS ``` You may optionally limit the TURN server to listen only on the local address that is mapped by NAT to the external address: ``` listening-ip=INTERNAL_TURNSERVER_IPv4_ADDRESS ``` If your NAT gateway is reachable over both IPv4 and IPv6, you may configure `coturn` to advertise each available address: ``` external-ip=EXTERNAL_NAT_IPv4_ADDRESS external-ip=EXTERNAL_NAT_IPv6_ADDRESS ``` When advertising an external IPv6 address, ensure that the firewall and network settings of the system running your TURN server are configured to accept IPv6 traffic, and that the TURN server is listening on the local IPv6 address that is mapped by NAT to the external IPv6 address. 1. (Re)start the turn server: * If you used the Debian package (or have set up a systemd unit yourself): ```sh sudo systemctl restart coturn ``` * If you built from source: ```sh /usr/local/bin/turnserver -o ``` synapse-1.100.0/docs/setup/turn/eturnal.md000066400000000000000000000161401455622526000204200ustar00rootroot00000000000000# eturnal TURN server The following sections describe how to install [eturnal]() (which implements the TURN REST API). ## `eturnal` setup ### Initial installation The `eturnal` TURN server implementation is available from a variety of sources such as native package managers, binary packages, installation from source or [container image](https://eturnal.net/documentation/code/docker.html). They are all described [here](https://github.com/processone/eturnal#installation). Quick-Test instructions in a [Linux Shell](https://github.com/processone/eturnal/blob/master/QUICK-TEST.md) or with [Docker](https://github.com/processone/eturnal/blob/master/docker-k8s/QUICK-TEST.md) are available as well. ### Configuration After installation, `eturnal` usually ships a [default configuration file](https://github.com/processone/eturnal/blob/master/config/eturnal.yml) here: `/etc/eturnal.yml` (and, if not found there, there is a backup file here: `/opt/eturnal/etc/eturnal.yml`). It uses the (indentation-sensitive!) [YAML](https://en.wikipedia.org/wiki/YAML) format. The file contains further explanations. Here are some hints how to configure eturnal on your [host machine](https://github.com/processone/eturnal#configuration) or when using e.g. [Docker](https://eturnal.net/documentation/code/docker.html). You may also further deep dive into the [reference documentation](https://eturnal.net/documentation/). `eturnal` runs out of the box with the default configuration. To enable TURN and to integrate it with your homeserver, some aspects in `eturnal`'s default configuration file must be edited: 1. Homeserver's [`turn_shared_secret`](../../usage/configuration/config_documentation.md#turn_shared_secret) and eturnal's shared `secret` for authentication Both need to have the same value. Uncomment and adjust this line in `eturnal`'s configuration file: ```yaml secret: "long-and-cryptic" # Shared secret, CHANGE THIS. ``` One way to generate a `secret` is with `pwgen`: ```sh pwgen -s 64 1 ``` 1. Public IP address If your TURN server is behind NAT, the NAT gateway must have an external, publicly-reachable IP address. `eturnal` tries to autodetect the public IP address, however, it may also be configured by uncommenting and adjusting this line, so `eturnal` advertises that address to connecting clients: ```yaml relay_ipv4_addr: "203.0.113.4" # The server's public IPv4 address. ``` If your NAT gateway is reachable over both IPv4 and IPv6, you may configure `eturnal` to advertise each available address: ```yaml relay_ipv4_addr: "203.0.113.4" # The server's public IPv4 address. relay_ipv6_addr: "2001:db8::4" # The server's public IPv6 address (optional). ``` When advertising an external IPv6 address, ensure that the firewall and network settings of the system running your TURN server are configured to accept IPv6 traffic, and that the TURN server is listening on the local IPv6 address that is mapped by NAT to the external IPv6 address. 1. Logging If `eturnal` was started by systemd, log files are written into the `/var/log/eturnal` directory by default. In order to log to the [journal](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) instead, the `log_dir` option can be set to `stdout` in the configuration file. 1. Security considerations Consider your security settings. TURN lets users request a relay which will connect to arbitrary IP addresses and ports. The following configuration is suggested as a minimum starting point, [see also the official documentation](https://eturnal.net/documentation/#blacklist): ```yaml ## Reject TURN relaying from/to the following addresses/networks: blacklist: # This is the default blacklist. - "127.0.0.0/8" # IPv4 loopback. - "::1" # IPv6 loopback. - recommended # Expands to a number of networks recommended to be # blocked, but includes private networks. Those # would have to be 'whitelist'ed if eturnal serves # local clients/peers within such networks. ``` To whitelist IP addresses or specific (private) networks, you need to **add** a whitelist part into the configuration file, e.g.: ```yaml whitelist: - "192.168.0.0/16" - "203.0.113.113" - "2001:db8::/64" ``` The more specific, the better. 1. TURNS (TURN via TLS/DTLS) Also consider supporting TLS/DTLS. To do this, adjust the following settings in the `eturnal.yml` configuration file (TLS parts should not be commented anymore): ```yaml listen: - ip: "::" port: 3478 transport: udp - ip: "::" port: 3478 transport: tcp - ip: "::" port: 5349 transport: tls ## TLS certificate/key files (must be readable by 'eturnal' user!): tls_crt_file: /etc/eturnal/tls/crt.pem tls_key_file: /etc/eturnal/tls/key.pem ``` In this case, replace the `turn:` schemes in homeserver's `turn_uris` settings with `turns:`. More is described [here](../../usage/configuration/config_documentation.md#turn_uris). We recommend that you only try to set up TLS/DTLS once you have set up a basic installation and got it working. NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will not work with any Matrix client that uses Chromium's WebRTC library. This currently includes Element Android & iOS; for more details, see their [respective](https://github.com/vector-im/element-android/issues/1533) [issues](https://github.com/vector-im/element-ios/issues/2712) as well as the underlying [WebRTC issue](https://bugs.chromium.org/p/webrtc/issues/detail?id=11710). Consider using a ZeroSSL certificate for your TURN server as a working alternative. 1. Firewall Ensure your firewall allows traffic into the TURN server on the ports you've configured it to listen on (By default: 3478 and 5349 for TURN traffic (remember to allow both TCP and UDP traffic), and ports 49152-65535 for the UDP relay.) 1. Reload/ restarting `eturnal` Changes in the configuration file require `eturnal` to reload/ restart, this can be achieved by: ```sh eturnalctl reload ``` `eturnal` performs a configuration check before actually reloading/ restarting and provides hints, if something is not correctly configured. ### eturnalctl opterations script `eturnal` offers a handy [operations script](https://eturnal.net/documentation/#Operation) which can be called e.g. to check, whether the service is up, to restart the service, to query how many active sessions exist, to change logging behaviour and so on. Hint: If `eturnalctl` is not part of your `$PATH`, consider either sym-linking it (e.g. ´ln -s /opt/eturnal/bin/eturnalctl /usr/local/bin/eturnalctl´) or call it from the default `eturnal` directory directly: e.g. `/opt/eturnal/bin/eturnalctl info` synapse-1.100.0/docs/spam_checker.md000066400000000000000000000072211455622526000172420ustar00rootroot00000000000000

This page of the Synapse documentation is now deprecated. For up to date documentation on setting up or writing a spam checker module, please see this page.

# Handling spam in Synapse Synapse has support to customize spam checking behavior. It can plug into a variety of events and affect how they are presented to users on your homeserver. The spam checking behavior is implemented as a Python class, which must be able to be imported by the running Synapse. ## Python spam checker class The Python class is instantiated with two objects: * Any configuration (see below). * An instance of `synapse.module_api.ModuleApi`. It then implements methods which return a boolean to alter behavior in Synapse. All the methods must be defined. There's a generic method for checking every event (`check_event_for_spam`), as well as some specific methods: * `user_may_invite` * `user_may_create_room` * `user_may_create_room_alias` * `user_may_publish_room` * `check_username_for_spam` * `check_registration_for_spam` * `check_media_file_for_spam` The details of each of these methods (as well as their inputs and outputs) are documented in the `synapse.events.spamcheck.SpamChecker` class. The `ModuleApi` class provides a way for the custom spam checker class to call back into the homeserver internals. Additionally, a `parse_config` method is mandatory and receives the plugin config dictionary. After parsing, It must return an object which will be passed to `__init__` later. ### Example ```python from synapse.spam_checker_api import RegistrationBehaviour class ExampleSpamChecker: def __init__(self, config, api): self.config = config self.api = api @staticmethod def parse_config(config): return config async def check_event_for_spam(self, foo): return False # allow all events async def user_may_invite(self, inviter_userid, invitee_userid, room_id): return True # allow all invites async def user_may_create_room(self, userid): return True # allow all room creations async def user_may_create_room_alias(self, userid, room_alias): return True # allow all room aliases async def user_may_publish_room(self, userid, room_id): return True # allow publishing of all rooms async def check_username_for_spam(self, user_profile): return False # allow all usernames async def check_registration_for_spam( self, email_threepid, username, request_info, auth_provider_id, ): return RegistrationBehaviour.ALLOW # allow all registrations async def check_media_file_for_spam(self, file_wrapper, file_info): return False # allow all media ``` ## Configuration Modify the `spam_checker` section of your `homeserver.yaml` in the following manner: Create a list entry with the keys `module` and `config`. * `module` should point to the fully qualified Python class that implements your custom logic, e.g. `my_module.ExampleSpamChecker`. * `config` is a dictionary that gets passed to the spam checker class. ### Example This section might look like: ```yaml spam_checker: - module: my_module.ExampleSpamChecker config: # Enable or disable a specific option in ExampleSpamChecker. my_custom_option: true ``` More spam checkers can be added in tandem by appending more items to the list. An action is blocked when at least one of the configured spam checkers flags it. ## Examples The [Mjolnir](https://github.com/matrix-org/mjolnir) project is a full fledged example using the Synapse spam checking API, including a bot for dynamic configuration. synapse-1.100.0/docs/sso_mapping_providers.md000066400000000000000000000270041455622526000212330ustar00rootroot00000000000000# SSO Mapping Providers A mapping provider is a Python class (loaded via a Python module) that works out how to map attributes of a SSO response to Matrix-specific user attributes. Details such as user ID localpart, displayname, and even avatar URLs are all things that can be mapped from talking to a SSO service. As an example, a SSO service may return the email address "john.smith@example.com" for a user, whereas Synapse will need to figure out how to turn that into a displayname when creating a Matrix user for this individual. It may choose `John Smith`, or `Smith, John [Example.com]` or any number of variations. As each Synapse configuration may want something different, this is where SAML mapping providers come into play. SSO mapping providers are currently supported for OpenID and SAML SSO configurations. Please see the details below for how to implement your own. It is up to the mapping provider whether the user should be assigned a predefined Matrix ID based on the SSO attributes, or if the user should be allowed to choose their own username. In the first case - where users are automatically allocated a Matrix ID - it is the responsibility of the mapping provider to normalise the SSO attributes and map them to a valid Matrix ID. The [specification for Matrix IDs](https://spec.matrix.org/latest/appendices/#user-identifiers) has some information about what is considered valid. If the mapping provider does not assign a Matrix ID, then Synapse will automatically serve an HTML page allowing the user to pick their own username. External mapping providers are provided to Synapse in the form of an external Python module. You can retrieve this module from [PyPI](https://pypi.org) or elsewhere, but it must be importable via Synapse (e.g. it must be in the same virtualenv as Synapse). The Synapse config is then modified to point to the mapping provider (and optionally provide additional configuration for it). ## OpenID Mapping Providers The OpenID mapping provider can be customized by editing the [`oidc_providers.user_mapping_provider.module`](usage/configuration/config_documentation.md#oidc_providers) config option. `oidc_providers.user_mapping_provider.config` allows you to provide custom configuration options to the module. Check with the module's documentation for what options it provides (if any). The options listed by default are for the user mapping provider built in to Synapse. If using a custom module, you should comment these options out and use those specified by the module instead. ### Building a Custom OpenID Mapping Provider A custom mapping provider must specify the following methods: * `def __init__(self, parsed_config)` - Arguments: - `parsed_config` - A configuration object that is the return value of the `parse_config` method. You should set any configuration options needed by the module here. * `def parse_config(config)` - This method should have the `@staticmethod` decoration. - Arguments: - `config` - A `dict` representing the parsed content of the `oidc_providers.user_mapping_provider.config` homeserver config option. Runs on homeserver startup. Providers should extract and validate any option values they need here. - Whatever is returned will be passed back to the user mapping provider module's `__init__` method during construction. * `def get_remote_user_id(self, userinfo)` - Arguments: - `userinfo` - A `authlib.oidc.core.claims.UserInfo` object to extract user information from. - This method must return a string, which is the unique, immutable identifier for the user. Commonly the `sub` claim of the response. * `async def map_user_attributes(self, userinfo, token, failures)` - This method must be async. - Arguments: - `userinfo` - An [`authlib.oidc.core.claims.UserInfo`](https://docs.authlib.org/en/latest/specs/oidc.html#authlib.oidc.core.UserInfo) object to extract user information from. - `token` - A dictionary which includes information necessary to make further requests to the OpenID provider. - `failures` - An `int` that represents the amount of times the returned mxid localpart mapping has failed. This should be used to create a deduplicated mxid localpart which should be returned instead. For example, if this method returns `john.doe` as the value of `localpart` in the returned dict, and that is already taken on the homeserver, this method will be called again with the same parameters but with failures=1. The method should then return a different `localpart` value, such as `john.doe1`. - Returns a dictionary with two keys: - `localpart`: A string, used to generate the Matrix ID. If this is `None`, the user is prompted to pick their own username. This is only used during a user's first login. Once a localpart has been associated with a remote user ID (see `get_remote_user_id`) it cannot be updated. - `confirm_localpart`: A boolean. If set to `True`, when a `localpart` string is returned from this method, Synapse will prompt the user to either accept this localpart or pick their own username. Otherwise this option has no effect. If omitted, defaults to `False`. - `display_name`: An optional string, the display name for the user. - `emails`: A list of strings, the email address(es) to associate with this user. If omitted, defaults to an empty list. * `async def get_extra_attributes(self, userinfo, token)` - This method must be async. - Arguments: - `userinfo` - A `authlib.oidc.core.claims.UserInfo` object to extract user information from. - `token` - A dictionary which includes information necessary to make further requests to the OpenID provider. - Returns a dictionary that is suitable to be serialized to JSON. This will be returned as part of the response during a successful login. Note that care should be taken to not overwrite any of the parameters usually returned as part of the [login response](https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3login). ### Default OpenID Mapping Provider Synapse has a built-in OpenID mapping provider if a custom provider isn't specified in the config. It is located at [`synapse.handlers.oidc.JinjaOidcMappingProvider`](https://github.com/element-hq/synapse/blob/develop/synapse/handlers/oidc.py). ## SAML Mapping Providers The SAML mapping provider can be customized by editing the [`saml2_config.user_mapping_provider.module`](usage/configuration/config_documentation.md#saml2_config) config option. `saml2_config.user_mapping_provider.config` allows you to provide custom configuration options to the module. Check with the module's documentation for what options it provides (if any). The options listed by default are for the user mapping provider built in to Synapse. If using a custom module, you should comment these options out and use those specified by the module instead. ### Building a Custom SAML Mapping Provider A custom mapping provider must specify the following methods: * `def __init__(self, parsed_config, module_api)` - Arguments: - `parsed_config` - A configuration object that is the return value of the `parse_config` method. You should set any configuration options needed by the module here. - `module_api` - a `synapse.module_api.ModuleApi` object which provides the stable API available for extension modules. * `def parse_config(config)` - **This method should have the `@staticmethod` decoration.** - Arguments: - `config` - A `dict` representing the parsed content of the `saml_config.user_mapping_provider.config` homeserver config option. Runs on homeserver startup. Providers should extract and validate any option values they need here. - Whatever is returned will be passed back to the user mapping provider module's `__init__` method during construction. * `def get_saml_attributes(config)` - **This method should have the `@staticmethod` decoration.** - Arguments: - `config` - A object resulting from a call to `parse_config`. - Returns a tuple of two sets. The first set equates to the SAML auth response attributes that are required for the module to function, whereas the second set consists of those attributes which can be used if available, but are not necessary. * `def get_remote_user_id(self, saml_response, client_redirect_url)` - Arguments: - `saml_response` - A `saml2.response.AuthnResponse` object to extract user information from. - `client_redirect_url` - A string, the URL that the client will be redirected to. - This method must return a string, which is the unique, immutable identifier for the user. Commonly the `uid` claim of the response. * `def saml_response_to_user_attributes(self, saml_response, failures, client_redirect_url)` - Arguments: - `saml_response` - A `saml2.response.AuthnResponse` object to extract user information from. - `failures` - An `int` that represents the amount of times the returned mxid localpart mapping has failed. This should be used to create a deduplicated mxid localpart which should be returned instead. For example, if this method returns `john.doe` as the value of `mxid_localpart` in the returned dict, and that is already taken on the homeserver, this method will be called again with the same parameters but with failures=1. The method should then return a different `mxid_localpart` value, such as `john.doe1`. - `client_redirect_url` - A string, the URL that the client will be redirected to. - This method must return a dictionary, which will then be used by Synapse to build a new user. The following keys are allowed: * `mxid_localpart` - A string, the mxid localpart of the new user. If this is `None`, the user is prompted to pick their own username. This is only used during a user's first login. Once a localpart has been associated with a remote user ID (see `get_remote_user_id`) it cannot be updated. * `displayname` - The displayname of the new user. If not provided, will default to the value of `mxid_localpart`. * `emails` - A list of emails for the new user. If not provided, will default to an empty list. Alternatively it can raise a `synapse.api.errors.RedirectException` to redirect the user to another page. This is useful to prompt the user for additional information, e.g. if you want them to provide their own username. It is the responsibility of the mapping provider to either redirect back to `client_redirect_url` (including any additional information) or to complete registration using methods from the `ModuleApi`. ### Default SAML Mapping Provider Synapse has a built-in SAML mapping provider if a custom provider isn't specified in the config. It is located at [`synapse.handlers.saml.DefaultSamlMappingProvider`](https://github.com/element-hq/synapse/blob/develop/synapse/handlers/saml.py). synapse-1.100.0/docs/structured_logging.md000066400000000000000000000047151455622526000205350ustar00rootroot00000000000000# Structured Logging A structured logging system can be useful when your logs are destined for a machine to parse and process. By maintaining its machine-readable characteristics, it enables more efficient searching and aggregations when consumed by software such as the [ELK stack](https://opensource.com/article/18/9/open-source-log-aggregation-tools). Synapse's structured logging system is configured via the file that Synapse's `log_config` config option points to. The file should include a formatter which uses the `synapse.logging.TerseJsonFormatter` class included with Synapse and a handler which uses the above formatter. There is also a `synapse.logging.JsonFormatter` option which does not include a timestamp in the resulting JSON. This is useful if the log ingester adds its own timestamp. A structured logging configuration looks similar to the following: ```yaml version: 1 formatters: structured: class: synapse.logging.TerseJsonFormatter handlers: file: class: logging.handlers.TimedRotatingFileHandler formatter: structured filename: /path/to/my/logs/homeserver.log when: midnight backupCount: 3 # Does not include the current log file. encoding: utf8 loggers: synapse: level: INFO handlers: [remote] synapse.storage.SQL: level: WARNING ``` The above logging config will set Synapse as 'INFO' logging level by default, with the SQL layer at 'WARNING', and will log to a file, stored as JSON. It is also possible to configure Synapse to log to a remote endpoint by using the `synapse.logging.RemoteHandler` class included with Synapse. It takes the following arguments: - `host`: Hostname or IP address of the log aggregator. - `port`: Numerical port to contact on the host. - `maximum_buffer`: (Optional, defaults to 1000) The maximum buffer size to allow. A remote structured logging configuration looks similar to the following: ```yaml version: 1 formatters: structured: class: synapse.logging.TerseJsonFormatter handlers: remote: class: synapse.logging.RemoteHandler formatter: structured host: 10.1.2.3 port: 9999 loggers: synapse: level: INFO handlers: [remote] synapse.storage.SQL: level: WARNING ``` The above logging config will set Synapse as 'INFO' logging level by default, with the SQL layer at 'WARNING', and will log JSON formatted messages to a remote endpoint at 10.1.2.3:9999. synapse-1.100.0/docs/synctl_workers.md000066400000000000000000000021531455622526000177050ustar00rootroot00000000000000### Using synctl with workers If you want to use `synctl` to manage your synapse processes, you will need to create an an additional configuration file for the main synapse process. That configuration should look like this: ```yaml worker_app: synapse.app.homeserver ``` Additionally, each worker app must be configured with the name of a "pid file", to which it will write its process ID when it starts. For example, for a synchrotron, you might write: ```yaml worker_pid_file: /home/matrix/synapse/worker1.pid ``` Finally, to actually run your worker-based synapse, you must pass synctl the `-a` commandline option to tell it to operate on all the worker configurations found in the given directory, e.g.: ```sh synctl -a $CONFIG/workers start ``` Currently one should always restart all workers when restarting or upgrading synapse, unless you explicitly know it's safe not to. For instance, restarting synapse without restarting all the synchrotrons may result in broken typing notifications. To manipulate a specific worker, you pass the -w option to synctl: ```sh synctl -w $CONFIG/workers/worker1.yaml restart ``` synapse-1.100.0/docs/systemd-with-workers/000077500000000000000000000000001455622526000204255ustar00rootroot00000000000000synapse-1.100.0/docs/systemd-with-workers/README.md000066400000000000000000000102201455622526000216770ustar00rootroot00000000000000# Setting up Synapse with Workers and Systemd This is a setup for managing synapse with systemd, including support for managing workers. It provides a `matrix-synapse` service for the master, as well as a `matrix-synapse-worker@` service template for any workers you require. Additionally, to group the required services, it sets up a `matrix-synapse.target`. See the folder [system](https://github.com/element-hq/synapse/tree/develop/docs/systemd-with-workers/system/) for the systemd unit files. The folder [workers](https://github.com/element-hq/synapse/tree/develop/docs/systemd-with-workers/workers/) contains an example configuration for the `generic_worker` worker. ## Synapse configuration files See [the worker documentation](../workers.md) for information on how to set up the configuration files and reverse-proxy correctly. Below is a sample `generic_worker` worker configuration file. ```yaml {{#include workers/generic_worker.yaml}} ``` Systemd manages daemonization itself, so ensure that none of the configuration files set either `daemonize` or `worker_daemonize`. The config files of all workers are expected to be located in `/etc/matrix-synapse/workers`. If you want to use a different location, edit the provided `*.service` files accordingly. There is no need for a separate configuration file for the master process. ## Set up 1. Adjust synapse configuration files as above. 1. Copy the `*.service` and `*.target` files in [system](https://github.com/element-hq/synapse/tree/develop/docs/systemd-with-workers/system/) to `/etc/systemd/system`. 1. Run `systemctl daemon-reload` to tell systemd to load the new unit files. 1. Run `systemctl enable matrix-synapse.service`. This will configure the synapse master process to be started as part of the `matrix-synapse.target` target. 1. For each worker process to be enabled, run `systemctl enable matrix-synapse-worker@.service`. For each ``, there should be a corresponding configuration file. `/etc/matrix-synapse/workers/.yaml`. 1. Start all the synapse processes with `systemctl start matrix-synapse.target`. 1. Tell systemd to start synapse on boot with `systemctl enable matrix-synapse.target`. ## Usage Once the services are correctly set up, you can use the following commands to manage your synapse installation: ```sh # Restart Synapse master and all workers systemctl restart matrix-synapse.target # Stop Synapse and all workers systemctl stop matrix-synapse.target # Restart the master alone systemctl start matrix-synapse.service # Restart a specific worker (eg. generic_worker); the master is # unaffected by this. systemctl restart matrix-synapse-worker@generic_worker.service # Add a new worker (assuming all configs are set up already) systemctl enable matrix-synapse-worker@federation_writer.service systemctl restart matrix-synapse.target ``` ## Hardening **Optional:** If further hardening is desired, the file `override-hardened.conf` may be copied from [contrib/systemd/override-hardened.conf](https://github.com/element-hq/synapse/tree/develop/contrib/systemd/) in this repository to the location `/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf` (the directory may have to be created). It enables certain sandboxing features in systemd to further secure the synapse service. You may read the comments to understand what the override file is doing. The same file will need to be copied to `/etc/systemd/system/matrix-synapse-worker@.service.d/override-hardened-worker.conf` (this directory may also have to be created) in order to apply the same hardening options to any worker processes. Once these files have been copied to their appropriate locations, simply reload systemd's manager config files and restart all Synapse services to apply the hardening options. They will automatically be applied at every restart as long as the override files are present at the specified locations. ```sh systemctl daemon-reload # Restart services systemctl restart matrix-synapse.target ``` In order to see their effect, you may run `systemd-analyze security matrix-synapse.service` before and after applying the hardening options to see the changes being applied at a glance. synapse-1.100.0/docs/systemd-with-workers/system/000077500000000000000000000000001455622526000217515ustar00rootroot00000000000000synapse-1.100.0/docs/systemd-with-workers/system/matrix-synapse-worker@.service000066400000000000000000000015671455622526000277370ustar00rootroot00000000000000[Unit] Description=Synapse %i AssertPathExists=/etc/matrix-synapse/workers/%i.yaml # This service should be restarted when the synapse target is restarted. PartOf=matrix-synapse.target ReloadPropagatedFrom=matrix-synapse.target # if this is started at the same time as the main, let the main process start # first, to initialise the database schema. After=matrix-synapse.service [Service] Type=notify NotifyAccess=main User=matrix-synapse WorkingDirectory=/var/lib/matrix-synapse EnvironmentFile=-/etc/default/matrix-synapse ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.generic_worker --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --config-path=/etc/matrix-synapse/workers/%i.yaml ExecReload=/bin/kill -HUP $MAINPID Restart=always RestartSec=3 SyslogIdentifier=matrix-synapse-%i [Install] WantedBy=matrix-synapse.target synapse-1.100.0/docs/systemd-with-workers/system/matrix-synapse.service000066400000000000000000000014551455622526000263240ustar00rootroot00000000000000[Unit] Description=Synapse master # This service should be restarted when the synapse target is restarted. PartOf=matrix-synapse.target ReloadPropagatedFrom=matrix-synapse.target [Service] Type=notify NotifyAccess=main User=matrix-synapse WorkingDirectory=/var/lib/matrix-synapse EnvironmentFile=-/etc/default/matrix-synapse ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-keys ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ ExecReload=/bin/kill -HUP $MAINPID Restart=always RestartSec=3 SyslogIdentifier=matrix-synapse [Install] WantedBy=matrix-synapse.target synapse-1.100.0/docs/systemd-with-workers/system/matrix-synapse.target000066400000000000000000000001441455622526000261440ustar00rootroot00000000000000[Unit] Description=Synapse parent target After=network.target [Install] WantedBy=multi-user.target synapse-1.100.0/docs/systemd-with-workers/workers/000077500000000000000000000000001455622526000221215ustar00rootroot00000000000000synapse-1.100.0/docs/systemd-with-workers/workers/background_worker.yaml000066400000000000000000000002111455622526000265070ustar00rootroot00000000000000worker_app: synapse.app.generic_worker worker_name: background_worker worker_log_config: /etc/matrix-synapse/background-worker-log.yaml synapse-1.100.0/docs/systemd-with-workers/workers/event_persister.yaml000066400000000000000000000010401455622526000262210ustar00rootroot00000000000000worker_app: synapse.app.generic_worker worker_name: event_persister1 worker_listeners: - type: http port: 8034 resources: - names: [replication] # Enable listener if this stream writer handles endpoints for the `typing` or # `to_device` streams. Uses a different port to the `replication` listener to # avoid exposing the `replication` listener publicly. # #- type: http # port: 8035 # x_forwarded: true # resources: # - names: [client] worker_log_config: /etc/matrix-synapse/event-persister-log.yaml synapse-1.100.0/docs/systemd-with-workers/workers/federation_sender.yaml000066400000000000000000000002151455622526000264630ustar00rootroot00000000000000worker_app: synapse.app.federation_sender worker_name: federation_sender1 worker_log_config: /etc/matrix-synapse/federation-sender-log.yaml synapse-1.100.0/docs/systemd-with-workers/workers/generic_worker.yaml000066400000000000000000000003761455622526000260200ustar00rootroot00000000000000worker_app: synapse.app.generic_worker worker_name: generic_worker1 worker_listeners: - type: http port: 8083 x_forwarded: true resources: - names: [client, federation] worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml synapse-1.100.0/docs/systemd-with-workers/workers/media_worker.yaml000066400000000000000000000003561455622526000254610ustar00rootroot00000000000000worker_app: synapse.app.media_repository worker_name: media_worker worker_listeners: - type: http port: 8085 x_forwarded: true resources: - names: [media] worker_log_config: /etc/matrix-synapse/media-worker-log.yaml synapse-1.100.0/docs/systemd-with-workers/workers/pusher_worker.yaml000066400000000000000000000001721455622526000257040ustar00rootroot00000000000000worker_app: synapse.app.pusher worker_name: pusher_worker1 worker_log_config: /etc/matrix-synapse/pusher-worker-log.yaml synapse-1.100.0/docs/tcp_replication.md000066400000000000000000000226161455622526000200020ustar00rootroot00000000000000# TCP Replication ## Motivation Previously the workers used an HTTP long poll mechanism to get updates from the master, which had the problem of causing a lot of duplicate work on the server. This TCP protocol replaces those APIs with the aim of increased efficiency. ## Overview The protocol is based on fire and forget, line based commands. An example flow would be (where '>' indicates master to worker and '<' worker to master flows): > SERVER example.com < REPLICATE > POSITION events master 53 53 > RDATA events master 54 ["$foo1:bar.com", ...] > RDATA events master 55 ["$foo4:bar.com", ...] The example shows the server accepting a new connection and sending its identity with the `SERVER` command, followed by the client server to respond with the position of all streams. The server then periodically sends `RDATA` commands which have the format `RDATA `, where the format of `` is defined by the individual streams. The `` is the name of the Synapse process that generated the data (usually "master"). We expect an RDATA for every row in the DB. Error reporting happens by either the client or server sending an ERROR command, and usually the connection will be closed. Since the protocol is a simple line based, its possible to manually connect to the server using a tool like netcat. A few things should be noted when manually using the protocol: - The federation stream is only available if federation sending has been disabled on the main process. - The server will only time connections out that have sent a `PING` command. If a ping is sent then the connection will be closed if no further commands are received within 15s. Both the client and server protocol implementations will send an initial PING on connection and ensure at least one command every 5s is sent (not necessarily `PING`). - `RDATA` commands *usually* include a numeric token, however if the stream has multiple rows to replicate per token the server will send multiple `RDATA` commands, with all but the last having a token of `batch`. See the documentation on `commands.RdataCommand` for further details. ## Architecture The basic structure of the protocol is line based, where the initial word of each line specifies the command. The rest of the line is parsed based on the command. For example, the RDATA command is defined as: RDATA (Note that may contains spaces, but cannot contain newlines.) Blank lines are ignored. ### Keep alives Both sides are expected to send at least one command every 5s or so, and should send a `PING` command if necessary. If either side do not receive a command within e.g. 15s then the connection should be closed. Because the server may be connected to manually using e.g. netcat, the timeouts aren't enabled until an initial `PING` command is seen. Both the client and server implementations below send a `PING` command immediately on connection to ensure the timeouts are enabled. This ensures that both sides can quickly realize if the tcp connection has gone and handle the situation appropriately. ### Start up When a new connection is made, the server: - Sends a `SERVER` command, which includes the identity of the server, allowing the client to detect if its connected to the expected server - Sends a `PING` command as above, to enable the client to time out connections promptly. The client: - Sends a `NAME` command, allowing the server to associate a human friendly name with the connection. This is optional. - Sends a `PING` as above - Sends a `REPLICATE` to get the current position of all streams. - On receipt of a `SERVER` command, checks that the server name matches the expected server name. ### Error handling If either side detects an error it can send an `ERROR` command and close the connection. If the client side loses the connection to the server it should reconnect, following the steps above. ### Congestion If the server sends messages faster than the client can consume them the server will first buffer a (fairly large) number of commands and then disconnect the client. This ensures that we don't queue up an unbounded number of commands in memory and gives us a potential opportunity to squawk loudly. When/if the client recovers it can reconnect to the server and ask for missed messages. ### Reliability In general the replication stream should be considered an unreliable transport since e.g. commands are not resent if the connection disappears. The exception to that are the replication streams, i.e. RDATA commands, since these include tokens which can be used to restart the stream on connection errors. The client should keep track of the token in the last RDATA command received for each stream so that on reconnection it can start streaming from the correct place. Note: not all RDATA have valid tokens due to batching. See `RdataCommand` for more details. ### Example An example interaction is shown below. Each line is prefixed with '>' or '<' to indicate which side is sending, these are *not* included on the wire: * connection established * > SERVER localhost:8823 > PING 1490197665618 < NAME synapse.app.appservice < PING 1490197665618 < REPLICATE > POSITION events master 1 1 > POSITION backfill master 1 1 > POSITION caches master 1 1 > RDATA caches master 2 ["get_user_by_id",["@01register-user:localhost:8823"],1490197670513] > RDATA events master 14 ["$149019767112vOHxz:localhost:8823", "!AFDCvgApUmpdfVjIXm:localhost:8823","m.room.guest_access","",null] < PING 1490197675618 > ERROR server stopping * connection closed by server * The `POSITION` command sent by the server is used to set the clients position without needing to send data with the `RDATA` command. An example of a batched set of `RDATA` is: > RDATA caches master batch ["get_user_by_id",["@test:localhost:8823"],1490197670513] > RDATA caches master batch ["get_user_by_id",["@test2:localhost:8823"],1490197670513] > RDATA caches master batch ["get_user_by_id",["@test3:localhost:8823"],1490197670513] > RDATA caches master 54 ["get_user_by_id",["@test4:localhost:8823"],1490197670513] In this case the client shouldn't advance their caches token until it sees the the last `RDATA`. ### List of commands The list of valid commands, with which side can send it: server (S) or client (C): #### SERVER (S) Sent at the start to identify which server the client is talking to #### RDATA (S) A single update in a stream #### POSITION (S) On receipt of a POSITION command clients should check if they have missed any updates, and if so then fetch them out of band. Sent in response to a REPLICATE command (but can happen at any time). The POSITION command includes the source of the stream. Currently all streams are written by a single process (usually "master"). If fetching missing updates via HTTP API, rather than via the DB, then processes should make the request to the appropriate process. Two positions are included, the "new" position and the last position sent respectively. This allows servers to tell instances that the positions have advanced but no data has been written, without clients needlessly checking to see if they have missed any updates. Instances will only fetch stuff if there is a gap between their current position and the given last position. #### ERROR (S, C) There was an error #### PING (S, C) Sent periodically to ensure the connection is still alive #### NAME (C) Sent at the start by client to inform the server who they are #### REPLICATE (C) Asks the server for the current position of all streams. #### USER_SYNC (C) A user has started or stopped syncing on this process. #### CLEAR_USER_SYNC (C) The server should clear all associated user sync data from the worker. This is used when a worker is shutting down. #### FEDERATION_ACK (C) Acknowledge receipt of some federation data ### REMOTE_SERVER_UP (S, C) Inform other processes that a remote server may have come back online. See `synapse/replication/tcp/commands.py` for a detailed description and the format of each command. ### Cache Invalidation Stream The cache invalidation stream is used to inform workers when they need to invalidate any of their caches in the data store. This is done by streaming all cache invalidations done on master down to the workers, assuming that any caches on the workers also exist on the master. Each individual cache invalidation results in a row being sent down replication, which includes the cache name (the name of the function) and they key to invalidate. For example: > RDATA caches master 550953771 ["get_user_by_id", ["@bob:example.com"], 1550574873251] Alternatively, an entire cache can be invalidated by sending down a `null` instead of the key. For example: > RDATA caches master 550953772 ["get_user_by_id", null, 1550574873252] However, there are times when a number of caches need to be invalidated at the same time with the same key. To reduce traffic we batch those invalidations into a single poke by defining a special cache name that workers understand to mean to expand to invalidate the correct caches. Currently the special cache names are declared in `synapse/storage/_base.py` and are: 1. `cs_cache_fake` ─ invalidates caches that depend on the current state synapse-1.100.0/docs/templates.md000066400000000000000000000327541455622526000166250ustar00rootroot00000000000000# Templates Synapse uses parametrised templates to generate the content of emails it sends and webpages it shows to users. By default, Synapse will use the templates listed [here](https://github.com/element-hq/synapse/tree/master/synapse/res/templates). Server admins can configure an additional directory for Synapse to look for templates in, allowing them to specify custom templates: ```yaml templates: custom_template_directory: /path/to/custom/templates/ ``` If this setting is not set, or the files named below are not found within the directory, default templates from within the Synapse package will be used. Templates that are given variables when being rendered are rendered using [Jinja 2](https://jinja.palletsprojects.com/en/2.11.x/). Templates rendered by Jinja 2 can also access two functions on top of the functions already available as part of Jinja 2: ```python format_ts(value: int, format: str) -> str ``` Formats a timestamp in milliseconds. Example: `reason.last_sent_ts|format_ts("%c")` ```python mxc_to_http(value: str, width: int, height: int, resize_method: str = "crop") -> str ``` Turns a `mxc://` URL for media content into an HTTP(S) one using the homeserver's `public_baseurl` configuration setting as the URL's base. Example: `message.sender_avatar_url|mxc_to_http(32,32)` ```python localpart_from_email(address: str) -> str ``` Returns the local part of an email address (e.g. `alice` in `alice@example.com`). Example: `user.email_address|localpart_from_email` ## Email templates Below are the templates Synapse will look for when generating the content of an email: * `notif_mail.html` and `notif_mail.txt`: The contents of email notifications of missed events. When rendering, this template is given the following variables: * `user_display_name`: the display name for the user receiving the notification * `unsubscribe_link`: the link users can click to unsubscribe from email notifications * `summary_text`: a summary of the notification(s). The text used can be customised by configuring the various settings in the `email.subjects` section of the configuration file. * `rooms`: a list of rooms containing events to include in the email. Each element is an object with the following attributes: * `title`: a human-readable name for the room * `hash`: a hash of the ID of the room * `invite`: a boolean, which is `True` if the room is an invite the user hasn't accepted yet, `False` otherwise * `notifs`: a list of events, or an empty list if `invite` is `True`. Each element is an object with the following attributes: * `link`: a `matrix.to` link to the event * `ts`: the time in milliseconds at which the event was received * `messages`: a list of messages containing one message before the event, the message in the event, and one message after the event. Each element is an object with the following attributes: * `event_type`: the type of the event * `is_historical`: a boolean, which is `False` if the message is the one that triggered the notification, `True` otherwise * `id`: the ID of the event * `ts`: the time in milliseconds at which the event was sent * `sender_name`: the display name for the event's sender * `sender_avatar_url`: the avatar URL (as a `mxc://` URL) for the event's sender * `sender_hash`: a hash of the user ID of the sender * `msgtype`: the type of the message * `body_text_html`: html representation of the message * `body_text_plain`: plaintext representation of the message * `image_url`: mxc url of an image, when "msgtype" is "m.image" * `link`: a `matrix.to` link to the room * `avator_url`: url to the room's avator * `reason`: information on the event that triggered the email to be sent. It's an object with the following attributes: * `room_id`: the ID of the room the event was sent in * `room_name`: a human-readable name for the room the event was sent in * `now`: the current time in milliseconds * `received_at`: the time in milliseconds at which the event was received * `delay_before_mail_ms`: the amount of time in milliseconds Synapse always waits before ever emailing about a notification (to give the user a chance to respond to other push or notice the window) * `last_sent_ts`: the time in milliseconds at which a notification was last sent for an event in this room * `throttle_ms`: the minimum amount of time in milliseconds between two notifications can be sent for this room * `password_reset.html` and `password_reset.txt`: The contents of password reset emails sent by the homeserver. When rendering, these templates are given a `link` variable which contains the link the user must click in order to reset their password. * `registration.html` and `registration.txt`: The contents of address verification emails sent during registration. When rendering, these templates are given a `link` variable which contains the link the user must click in order to validate their email address. * `add_threepid.html` and `add_threepid.txt`: The contents of address verification emails sent when an address is added to a Matrix account. When rendering, these templates are given a `link` variable which contains the link the user must click in order to validate their email address. ## HTML page templates for registration and password reset Below are the templates Synapse will look for when generating pages related to registration and password reset: * `password_reset_confirmation.html`: An HTML page that a user will see when they follow the link in the password reset email. The user will be asked to confirm the action before their password is reset. When rendering, this template is given the following variables: * `sid`: the session ID for the password reset * `token`: the token for the password reset * `client_secret`: the client secret for the password reset * `password_reset_success.html` and `password_reset_failure.html`: HTML pages for success and failure that a user will see when they confirm the password reset flow using the page above. When rendering, `password_reset_success.html` is given no variable, and `password_reset_failure.html` is given a `failure_reason`, which contains the reason for the password reset failure. * `registration_success.html` and `registration_failure.html`: HTML pages for success and failure that a user will see when they follow the link in an address verification email sent during registration. When rendering, `registration_success.html` is given no variable, and `registration_failure.html` is given a `failure_reason`, which contains the reason for the registration failure. * `add_threepid_success.html` and `add_threepid_failure.html`: HTML pages for success and failure that a user will see when they follow the link in an address verification email sent when an address is added to a Matrix account. When rendering, `add_threepid_success.html` is given no variable, and `add_threepid_failure.html` is given a `failure_reason`, which contains the reason for the registration failure. ## HTML page templates for Single Sign-On (SSO) Below are the templates Synapse will look for when generating pages related to SSO: * `sso_login_idp_picker.html`: HTML page to prompt the user to choose an Identity Provider during login. This is only used if multiple SSO Identity Providers are configured. When rendering, this template is given the following variables: * `redirect_url`: the URL that the user will be redirected to after login. * `server_name`: the homeserver's name. * `providers`: a list of available Identity Providers. Each element is an object with the following attributes: * `idp_id`: unique identifier for the IdP * `idp_name`: user-facing name for the IdP * `idp_icon`: if specified in the IdP config, an MXC URI for an icon for the IdP * `idp_brand`: if specified in the IdP config, a textual identifier for the brand of the IdP The rendered HTML page should contain a form which submits its results back as a GET request, with the following query parameters: * `redirectUrl`: the client redirect URI (ie, the `redirect_url` passed to the template) * `idp`: the 'idp_id' of the chosen IDP. * `sso_auth_account_details.html`: HTML page to prompt new users to enter a userid and confirm other details. This is only shown if the SSO implementation (with any `user_mapping_provider`) does not return a localpart. When rendering, this template is given the following variables: * `server_name`: the homeserver's name. * `idp`: details of the SSO Identity Provider that the user logged in with: an object with the following attributes: * `idp_id`: unique identifier for the IdP * `idp_name`: user-facing name for the IdP * `idp_icon`: if specified in the IdP config, an MXC URI for an icon for the IdP * `idp_brand`: if specified in the IdP config, a textual identifier for the brand of the IdP * `user_attributes`: an object containing details about the user that we received from the IdP. May have the following attributes: * `display_name`: the user's display name * `emails`: a list of email addresses * `localpart`: the local part of the Matrix user ID to register, if `localpart_template` is set in the mapping provider configuration (empty string if not) The template should render a form which submits the following fields: * `username`: the localpart of the user's chosen user id * `sso_new_user_consent.html`: HTML page allowing the user to consent to the server's terms and conditions. This is only shown for new users, and only if `user_consent.require_at_registration` is set. When rendering, this template is given the following variables: * `server_name`: the homeserver's name. * `user_id`: the user's matrix proposed ID. * `user_profile.display_name`: the user's proposed display name, if any. * consent_version: the version of the terms that the user will be shown * `terms_url`: a link to the page showing the terms. The template should render a form which submits the following fields: * `accepted_version`: the version of the terms accepted by the user (ie, 'consent_version' from the input variables). * `sso_redirect_confirm.html`: HTML page for a confirmation step before redirecting back to the client with the login token. When rendering, this template is given the following variables: * `redirect_url`: the URL the user is about to be redirected to. * `display_url`: the same as `redirect_url`, but with the query parameters stripped. The intention is to have a human-readable URL to show to users, not to use it as the final address to redirect to. * `server_name`: the homeserver's name. * `new_user`: a boolean indicating whether this is the user's first time logging in. * `user_id`: the user's matrix ID. * `user_profile.avatar_url`: an MXC URI for the user's avatar, if any. `None` if the user has not set an avatar. * `user_profile.display_name`: the user's display name. `None` if the user has not set a display name. * `sso_auth_confirm.html`: HTML page which notifies the user that they are authenticating to confirm an operation on their account during the user interactive authentication process. When rendering, this template is given the following variables: * `redirect_url`: the URL the user is about to be redirected to. * `description`: the operation which the user is being asked to confirm * `idp`: details of the Identity Provider that we will use to confirm the user's identity: an object with the following attributes: * `idp_id`: unique identifier for the IdP * `idp_name`: user-facing name for the IdP * `idp_icon`: if specified in the IdP config, an MXC URI for an icon for the IdP * `idp_brand`: if specified in the IdP config, a textual identifier for the brand of the IdP * `sso_auth_success.html`: HTML page shown after a successful user interactive authentication session. Note that this page must include the JavaScript which notifies of a successful authentication (see https://matrix.org/docs/spec/client_server/r0.6.0#fallback). This template has no additional variables. * `sso_auth_bad_user.html`: HTML page shown after a user-interactive authentication session which does not map correctly onto the expected user. When rendering, this template is given the following variables: * `server_name`: the homeserver's name. * `user_id_to_verify`: the MXID of the user that we are trying to validate. * `sso_account_deactivated.html`: HTML page shown during single sign-on if a deactivated user (according to Synapse's database) attempts to login. This template has no additional variables. * `sso_error.html`: HTML page to display to users if something goes wrong during the OpenID Connect authentication process. When rendering, this template is given two variables: * `error`: the technical name of the error * `error_description`: a human-readable message for the error synapse-1.100.0/docs/turn-howto.md000066400000000000000000000146001455622526000167430ustar00rootroot00000000000000# Overview This document explains how to enable VoIP relaying on your homeserver with TURN. The synapse Matrix homeserver supports integration with TURN server via the [TURN server REST API](). This allows the homeserver to generate credentials that are valid for use on the TURN server through the use of a secret shared between the homeserver and the TURN server. This documentation provides two TURN server configuration examples: * [coturn](setup/turn/coturn.md) * [eturnal](setup/turn/eturnal.md) ## Requirements For TURN relaying to work, the TURN service must be hosted on a server/endpoint with a public IP. Hosting TURN behind NAT requires port forwarding and for the NAT gateway to have a public IP. However, even with appropriate configuration, NAT is known to cause issues and to often not work. Afterwards, the homeserver needs some further configuration. ## Synapse setup Your homeserver configuration file needs the following extra keys: 1. [`turn_uris`](usage/configuration/config_documentation.md#turn_uris) 2. [`turn_shared_secret`](usage/configuration/config_documentation.md#turn_shared_secret) 3. [`turn_user_lifetime`](usage/configuration/config_documentation.md#turn_user_lifetime) 4. [`turn_allow_guests`](usage/configuration/config_documentation.md#turn_allow_guests) As an example, here is the relevant section of the config file for `matrix.org`. The `turn_uris` are appropriate for TURN servers listening on the default ports, with no TLS. turn_uris: [ "turn:turn.matrix.org?transport=udp", "turn:turn.matrix.org?transport=tcp" ] turn_shared_secret: "n0t4ctuAllymatr1Xd0TorgSshar3d5ecret4obvIousreAsons" turn_user_lifetime: 86400000 turn_allow_guests: true After updating the homeserver configuration, you must restart synapse: * If you use synctl: ```sh # Depending on how Synapse is installed, synctl may already be on # your PATH. If not, you may need to activate a virtual environment. synctl restart ``` * If you use systemd: ```sh systemctl restart matrix-synapse.service ``` ... and then reload any clients (or wait an hour for them to refresh their settings). ## Troubleshooting The normal symptoms of a misconfigured TURN server are that calls between devices on different networks ring, but get stuck at "call connecting". Unfortunately, troubleshooting this can be tricky. Here are a few things to try: * Check that you have opened your firewall to allow TCP and UDP traffic to the TURN ports (normally 3478 and 5349). * Check that you have opened your firewall to allow UDP traffic to the UDP relay ports (49152-65535 by default). * Try disabling TLS/DTLS listeners and enable only its (unencrypted) TCP/UDP listeners. (This will only leave signaling traffic unencrypted; voice & video WebRTC traffic is always encrypted.) * Some WebRTC implementations (notably, that of Google Chrome) appear to get confused by TURN servers which are reachable over IPv6 (this appears to be an unexpected side-effect of its handling of multiple IP addresses as defined by [`draft-ietf-rtcweb-ip-handling`](https://tools.ietf.org/html/draft-ietf-rtcweb-ip-handling-12)). Try removing any AAAA records for your TURN server, so that it is only reachable over IPv4. * If your TURN server is behind NAT: * double-check that your NAT gateway is correctly forwarding all TURN ports (normally 3478 & 5349 for TCP & UDP TURN traffic, and 49152-65535 for the UDP relay) to the NAT-internal address of your TURN server. If advertising both IPv4 and IPv6 external addresses via the `external-ip` option, ensure that the NAT is forwarding both IPv4 and IPv6 traffic to the IPv4 and IPv6 internal addresses of your TURN server. When in doubt, remove AAAA records for your TURN server and specify only an IPv4 address as your `external-ip`. * ensure that your TURN server uses the NAT gateway as its default route. * Enable more verbose logging, in `coturn` via the `verbose` setting: ``` verbose ``` or with `eturnal` with the shell command `eturnalctl loglevel debug` or in the configuration file (the service needs to [reload](https://eturnal.net/documentation/#Operation) for it to become effective): ```yaml ## Logging configuration: log_level: debug ``` ... and then see if there are any clues in its logs. * If you are using a browser-based client under Chrome, check `chrome://webrtc-internals/` for insights into the internals of the negotiation. On Firefox, check the "Connection Log" on `about:webrtc`. (Understanding the output is beyond the scope of this document!) * You can test your Matrix homeserver TURN setup with . Note that this test is not fully reliable yet, so don't be discouraged if the test fails. [Here](https://github.com/matrix-org/voip-tester) is the github repo of the source of the tester, where you can file bug reports. * There is a WebRTC test tool at . To use it, you will need a username/password for your TURN server. You can either: * look for the `GET /_matrix/client/r0/voip/turnServer` request made by a matrix client to your homeserver in your browser's network inspector. In the response you should see `username` and `password`. Or: * Use the following shell commands for `coturn`: ```sh secret=staticAuthSecretHere u=$((`date +%s` + 3600)):test p=$(echo -n $u | openssl dgst -hmac $secret -sha1 -binary | base64) echo -e "username: $u\npassword: $p" ``` or for `eturnal` ```sh eturnalctl credentials ``` * Or (**coturn only**): Temporarily configure `coturn` to accept a static username/password. To do this, comment out `use-auth-secret` and `static-auth-secret` and add the following: ``` lt-cred-mech user=username:password ``` **Note**: these settings will not take effect unless `use-auth-secret` and `static-auth-secret` are disabled. Restart coturn after changing the configuration file. Remember to restore the original settings to go back to testing with Matrix clients! If the TURN server is working correctly, you should see at least one `relay` entry in the results. synapse-1.100.0/docs/upgrade.md000066400000000000000000003001531455622526000162450ustar00rootroot00000000000000# Upgrading Synapse Before upgrading check if any special steps are required to upgrade from the version you currently have installed to the current version of Synapse. The extra instructions that may be required are listed later in this document. - Check that your versions of Python and PostgreSQL are still supported. Synapse follows upstream lifecycles for [Python](https://endoflife.date/python) and [PostgreSQL](https://endoflife.date/postgresql), and removes support for versions which are no longer maintained. The website also offers convenient summaries. - If Synapse was installed using [prebuilt packages](setup/installation.md#prebuilt-packages), you will need to follow the normal process for upgrading those packages. - If Synapse was installed using pip then upgrade to the latest version by running: ```bash pip install --upgrade matrix-synapse ``` - If Synapse was installed from source, then: 1. Obtain the latest version of the source code. Git users can run `git pull` to do this. 2. If you're running Synapse in a virtualenv, make sure to activate it before upgrading. For example, if Synapse is installed in a virtualenv in `~/synapse/env` then run: ```bash source ~/synapse/env/bin/activate pip install --upgrade . ``` Include any relevant extras between square brackets, e.g. `pip install --upgrade ".[postgres,oidc]"`. 3. If you're using `poetry` to manage a Synapse installation, run: ```bash poetry install ``` Include any relevant extras with `--extras`, e.g. `poetry install --extras postgres --extras oidc`. It's probably easiest to run `poetry install --extras all`. 4. Restart Synapse: ```bash synctl restart ``` To check whether your update was successful, you can check the running server version with: ```bash # you may need to replace 'localhost:8008' if synapse is not configured # to listen on port 8008. curl http://localhost:8008/_synapse/admin/v1/server_version ``` ## Rolling back to older versions Rolling back to previous releases can be difficult, due to database schema changes between releases. Where we have been able to test the rollback process, this will be noted below. In general, you will need to undo any changes made during the upgrade process, for example: - pip: ```bash source env/bin/activate # replace `1.3.0` accordingly: pip install matrix-synapse==1.3.0 ``` - Debian: ```bash # replace `1.3.0` and `stretch` accordingly: wget https://packages.matrix.org/debian/pool/main/m/matrix-synapse-py3/matrix-synapse-py3_1.3.0+stretch1_amd64.deb dpkg -i matrix-synapse-py3_1.3.0+stretch1_amd64.deb ``` Generally Synapse database schemas are compatible across multiple versions, once a version of Synapse is deployed you may not be able to rollback automatically. The following table gives the version ranges and the earliest version they can be rolled back to. E.g. Synapse versions v1.58.0 through v1.61.1 can be rolled back safely to v1.57.0, but starting with v1.62.0 it is only safe to rollback to v1.61.0. # Upgrading to v1.100.0 ## Minimum supported Rust version The minimum supported Rust version has been increased from v1.61.0 to v1.65.0. Users building from source will need to ensure their `rustc` version is up to date. # Upgrading to v1.93.0 ## Minimum supported Rust version The minimum supported Rust version has been increased from v1.60.0 to v1.61.0. Users building from source will need to ensure their `rustc` version is up to date. # Upgrading to v1.90.0 ## App service query parameter authorization is now a configuration option Synapse v1.81.0 deprecated application service authorization via query parameters as this is considered insecure - and from Synapse v1.71.0 forwards the application service token has also been sent via [the `Authorization` header](https://spec.matrix.org/v1.6/application-service-api/#authorization)], making the insecure query parameter authorization redundant. Since removing the ability to continue to use query parameters could break backwards compatibility it has now been put behind a configuration option, `use_appservice_legacy_authorization`. This option defaults to false, but can be activated by adding ```yaml use_appservice_legacy_authorization: true ``` to your configuration. # Upgrading to v1.89.0 ## Removal of unspecced `user` property for `/register` Application services can no longer call `/register` with a `user` property to create new users. The standard `username` property should be used instead. See the [Application Service specification](https://spec.matrix.org/v1.7/application-service-api/#server-admin-style-permissions) for more information. # Upgrading to v1.88.0 ## Minimum supported Python version The minimum supported Python version has been increased from v3.7 to v3.8. You will need Python 3.8 to run Synapse v1.88.0 (due out July 18th, 2023). If you use current versions of the Matrix.org-distributed Debian packages or Docker images, no action is required. ## Removal of `worker_replication_*` settings As mentioned previously in [Upgrading to v1.84.0](#upgrading-to-v1840), the following deprecated settings are being removed in this release of Synapse: * [`worker_replication_host`](https://element-hq.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_host) * [`worker_replication_http_port`](https://element-hq.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_http_port) * [`worker_replication_http_tls`](https://element-hq.github.io/synapse/v1.86/usage/configuration/config_documentation.html#worker_replication_http_tls) Please ensure that you have migrated to using `main` on your shared configuration's `instance_map` (or create one if necessary). This is required if you have ***any*** workers at all; administrators of single-process (monolith) installations don't need to do anything. For an illustrative example, please see [Upgrading to v1.84.0](#upgrading-to-v1840) below. # Upgrading to v1.86.0 ## Minimum supported Rust version The minimum supported Rust version has been increased from v1.58.1 to v1.60.0. Users building from source will need to ensure their `rustc` version is up to date. # Upgrading to v1.85.0 ## Application service registration with "user" property deprecation Application services should ensure they call the `/register` endpoint with a `username` property. The legacy `user` property is considered deprecated and should no longer be included. A future version of Synapse (v1.88.0 or later) will remove support for legacy application service login. # Upgrading to v1.84.0 ## Deprecation of `worker_replication_*` configuration settings When using workers, * `worker_replication_host` * `worker_replication_http_port` * `worker_replication_http_tls` should now be removed from individual worker YAML configurations and the main process should instead be added to the `instance_map` in the shared YAML configuration, using the name `main`. The old `worker_replication_*` settings are now considered deprecated and are expected to be removed in Synapse v1.88.0. ### Example change #### Before: Shared YAML ```yaml instance_map: generic_worker1: host: localhost port: 5678 tls: false ``` Worker YAML ```yaml worker_app: synapse.app.generic_worker worker_name: generic_worker1 worker_replication_host: localhost worker_replication_http_port: 3456 worker_replication_http_tls: false worker_listeners: - type: http port: 1234 resources: - names: [client, federation] - type: http port: 5678 resources: - names: [replication] worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml ``` #### After: Shared YAML ```yaml instance_map: main: host: localhost port: 3456 tls: false generic_worker1: host: localhost port: 5678 tls: false ``` Worker YAML ```yaml worker_app: synapse.app.generic_worker worker_name: generic_worker1 worker_listeners: - type: http port: 1234 resources: - names: [client, federation] - type: http port: 5678 resources: - names: [replication] worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml ``` Notes: * `tls` is optional but mirrors the functionality of `worker_replication_http_tls` # Upgrading to v1.81.0 ## Application service path & authentication deprecations Synapse now attempts the versioned appservice paths before falling back to the [legacy paths](https://spec.matrix.org/v1.6/application-service-api/#legacy-routes). Usage of the legacy routes should be considered deprecated. Additionally, Synapse has supported sending the application service access token via [the `Authorization` header](https://spec.matrix.org/v1.6/application-service-api/#authorization) since v1.70.0. For backwards compatibility it is *also* sent as the `access_token` query parameter. This is insecure and should be considered deprecated. A future version of Synapse (v1.88.0 or later) will remove support for legacy application service routes and query parameter authorization. # Upgrading to v1.80.0 ## Reporting events error code change Before this update, the [`POST /_matrix/client/v3/rooms/{roomId}/report/{eventId}`](https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3roomsroomidreporteventid) endpoint would return a `403` if a user attempted to report an event that they did not have access to. This endpoint will now return a `404` in this case instead. Clients that implement event reporting should check that their error handling code will handle this change. # Upgrading to v1.79.0 ## The `on_threepid_bind` module callback method has been deprecated Synapse v1.79.0 deprecates the [`on_threepid_bind`](modules/third_party_rules_callbacks.md#on_threepid_bind) "third-party rules" Synapse module callback method in favour of a new module method, [`on_add_user_third_party_identifier`](modules/third_party_rules_callbacks.md#on_add_user_third_party_identifier). `on_threepid_bind` will be removed in a future version of Synapse. You should check whether any Synapse modules in use in your deployment are making use of `on_threepid_bind`, and update them where possible. The arguments and functionality of the new method are the same. The justification behind the name change is that the old method's name, `on_threepid_bind`, was misleading. A user is considered to "bind" their third-party ID to their Matrix ID only if they do so via an [identity server](https://spec.matrix.org/latest/identity-service-api/) (so that users on other homeservers may find them). But this method was not called in that case - it was only called when a user added a third-party identifier on the local homeserver. Module developers may also be interested in the related [`on_remove_user_third_party_identifier`](modules/third_party_rules_callbacks.md#on_remove_user_third_party_identifier) module callback method that was also added in Synapse v1.79.0. This new method is called when a user removes a third-party identifier from their account. # Upgrading to v1.78.0 ## Deprecate the `/_synapse/admin/v1/media//delete` admin API Synapse 1.78.0 replaces the `/_synapse/admin/v1/media//delete` admin API with an identical endpoint at `/_synapse/admin/v1/media/delete`. Please update your tooling to use the new endpoint. The deprecated version will be removed in a future release. # Upgrading to v1.76.0 ## Faster joins are enabled by default When joining a room for the first time, Synapse 1.76.0 will request a partial join from the other server by default. Previously, server admins had to opt-in to this using an experimental config flag. Server admins can opt out of this feature for the time being by setting ```yaml experimental: faster_joins: false ``` in their server config. ## Changes to the account data replication streams Synapse has changed the format of the account data and devices replication streams (between workers). This is a forwards- and backwards-incompatible change: v1.75 workers cannot process account data replicated by v1.76 workers, and vice versa. Once all workers are upgraded to v1.76 (or downgraded to v1.75), account data and device replication will resume as normal. ## Minimum version of Poetry is now 1.3.2 The minimum supported version of Poetry is now 1.3.2 (previously 1.2.0, [since Synapse 1.67](#upgrading-to-v1670)). If you have used `poetry install` to install Synapse from a source checkout, you should upgrade poetry: see its [installation instructions](https://python-poetry.org/docs/#installation). For all other installation methods, no acction is required. # Upgrading to v1.74.0 ## Unicode support in user search This version introduces optional support for an [improved user search dealing with Unicode characters](https://github.com/matrix-org/synapse/pull/14464). If you want to take advantage of this feature you need to install PyICU, the ICU native dependency and its development headers so that PyICU can build since no prebuilt wheels are available. You can follow [the PyICU documentation](https://pypi.org/project/PyICU/) to do so, and then do `pip install matrix-synapse[user-search]` for a PyPI install. Docker images and Debian packages need nothing specific as they already include or specify ICU as an explicit dependency. ## User directory rebuild Synapse 1.74 queues a background update [to rebuild the user directory](https://github.com/matrix-org/synapse/pull/14643), in order to fix missing or erroneous entries. When this update begins, the user directory will be cleared out and rebuilt from scratch. User directory lookups will be incomplete until the rebuild completes. Admins can monitor the rebuild's progress by using the [Background update Admin API](usage/administration/admin_api/background_updates.md#status). # Upgrading to v1.73.0 ## Legacy Prometheus metric names have now been removed Synapse v1.69.0 included the deprecation of legacy Prometheus metric names and offered an option to disable them. Synapse v1.71.0 disabled legacy Prometheus metric names by default. This version, v1.73.0, removes those legacy Prometheus metric names entirely. This also means that the `enable_legacy_metrics` configuration option has been removed; it will no longer be possible to re-enable the legacy metric names. If you use metrics and have not yet updated your Grafana dashboard(s), Prometheus console(s) or alerting rule(s), please consider doing so when upgrading to this version. Note that the included Grafana dashboard was updated in v1.72.0 to correct some metric names which were missed when legacy metrics were disabled by default. See [v1.69.0: Deprecation of legacy Prometheus metric names](#deprecation-of-legacy-prometheus-metric-names) for more context. # Upgrading to v1.72.0 ## Dropping support for PostgreSQL 10 In line with our [deprecation policy](deprecation_policy.md), we've dropped support for PostgreSQL 10, as it is no longer supported upstream. This release of Synapse requires PostgreSQL 11+. # Upgrading to v1.71.0 ## Removal of the `generate_short_term_login_token` module API method As announced with the release of [Synapse 1.69.0](#deprecation-of-the-generate_short_term_login_token-module-api-method), the deprecated `generate_short_term_login_token` module method has been removed. Modules relying on it can instead use the `create_login_token` method. ## Changes to the events received by application services (interest) To align with spec (changed in [MSC3905](https://github.com/matrix-org/matrix-spec-proposals/pull/3905)), Synapse now only considers local users to be interesting. In other words, the `users` namespace regex is only be applied against local users of the homeserver. Please note, this probably doesn't affect the expected behavior of your application service, since an interesting local user in a room still means all messages in the room (from local or remote users) will still be considered interesting. And matching a room with the `rooms` or `aliases` namespace regex will still consider all events sent in the room to be interesting to the application service. If one of your application service's `users` regex was intending to match a remote user, this will no longer match as you expect. The behavioral mismatch between matching all local users and some remote users is why the spec was changed/clarified and this caveat is no longer supported. ## Legacy Prometheus metric names are now disabled by default Synapse v1.71.0 disables legacy Prometheus metric names by default. For administrators that still rely on them and have not yet had chance to update their uses of the metrics, it's still possible to specify `enable_legacy_metrics: true` in the configuration to re-enable them temporarily. Synapse v1.73.0 will **remove legacy metric names altogether** and at that point, it will no longer be possible to re-enable them. If you do not use metrics or you have already updated your Grafana dashboard(s), Prometheus console(s) and alerting rule(s), there is no action needed. See [v1.69.0: Deprecation of legacy Prometheus metric names](#deprecation-of-legacy-prometheus-metric-names). # Upgrading to v1.69.0 ## Changes to the receipts replication streams Synapse now includes information indicating if a receipt applies to a thread when replicating it to other workers. This is a forwards- and backwards-incompatible change: v1.68 and workers cannot process receipts replicated by v1.69 workers, and vice versa. Once all workers are upgraded to v1.69 (or downgraded to v1.68), receipts replication will resume as normal. ## Deprecation of legacy Prometheus metric names In current versions of Synapse, some Prometheus metrics are emitted under two different names, with one of the names being older but non-compliant with OpenMetrics and Prometheus conventions and one of the names being newer but compliant. Synapse v1.71.0 will turn the old metric names off *by default*. For administrators that still rely on them and have not had chance to update their uses of the metrics, it's possible to specify `enable_legacy_metrics: true` in the configuration to re-enable them temporarily. Synapse v1.73.0 will **remove legacy metric names altogether** and it will no longer be possible to re-enable them. The Grafana dashboard, Prometheus recording rules and Prometheus Consoles included in the `contrib` directory in the Synapse repository have been updated to no longer rely on the legacy names. These can be used on a current version of Synapse because current versions of Synapse emit both old and new names. You may need to update your alerting rules or any other rules that depend on the names of Prometheus metrics. If you want to test your changes before legacy names are disabled by default, you may specify `enable_legacy_metrics: false` in your homeserver configuration. A list of affected metrics is available on the [Metrics How-to page](https://element-hq.github.io/synapse/v1.69/metrics-howto.html?highlight=metrics%20deprecated#renaming-of-metrics--deprecation-of-old-names-in-12). ## Deprecation of the `generate_short_term_login_token` module API method The following method of the module API has been deprecated, and is scheduled to be remove in v1.71.0: ```python def generate_short_term_login_token( self, user_id: str, duration_in_ms: int = (2 * 60 * 1000), auth_provider_id: str = "", auth_provider_session_id: Optional[str] = None, ) -> str: ... ``` It has been replaced by an asynchronous equivalent: ```python async def create_login_token( self, user_id: str, duration_in_ms: int = (2 * 60 * 1000), auth_provider_id: Optional[str] = None, auth_provider_session_id: Optional[str] = None, ) -> str: ... ``` Synapse will log a warning when a module uses the deprecated method, to help administrators find modules using it. # Upgrading to v1.68.0 Two changes announced in the upgrade notes for v1.67.0 have now landed in v1.68.0. ## SQLite version requirement Synapse now requires a SQLite version of 3.27.0 or higher if SQLite is configured as Synapse's database. Installations using - Docker images [from `matrixdotorg`](https://hub.docker.com/r/matrixdotorg/synapse), - Debian packages [from Matrix.org](https://packages.matrix.org/), or - a PostgreSQL database are not affected. ## Rust requirement when building from source. Building from a source checkout of Synapse now requires a recent Rust compiler (currently Rust 1.58.1, but see also the [Platform Dependency Policy](https://element-hq.github.io/synapse/latest/deprecation_policy.html)). Installations using - Docker images [from `matrixdotorg`](https://hub.docker.com/r/matrixdotorg/synapse), - Debian packages [from Matrix.org](https://packages.matrix.org/), or - PyPI wheels via `pip install matrix-synapse` (on supported platforms and architectures) will not be affected. # Upgrading to v1.67.0 ## Direct TCP replication is no longer supported: migrate to Redis Redis support was added in v1.13.0 with it becoming the recommended method in v1.18.0. It replaced the old direct TCP connections (which was deprecated as of v1.18.0) to the main process. With Redis, rather than all the workers connecting to the main process, all the workers and the main process connect to Redis, which relays replication commands between processes. This can give a significant CPU saving on the main process and is a prerequisite for upcoming performance improvements. To migrate to Redis add the [`redis` config](./workers.md#shared-configuration), and remove the TCP `replication` listener from config of the master and `worker_replication_port` from worker config. Note that a HTTP listener with a `replication` resource is still required. ## Minimum version of Poetry is now v1.2.0 The minimum supported version of poetry is now 1.2. This should only affect those installing from a source checkout. ## Rust requirement in the next release From the next major release (v1.68.0) installing Synapse from a source checkout will require a recent Rust compiler. Those using packages or `pip install matrix-synapse` will not be affected. The simplest way of installing Rust is via [rustup.rs](https://rustup.rs/) ## SQLite version requirement in the next release From the next major release (v1.68.0) Synapse will require SQLite 3.27.0 or higher. Synapse v1.67.0 will be the last major release supporting SQLite versions 3.22 to 3.26. Those using Docker images or Debian packages from Matrix.org will not be affected. If you have installed from source, you should check the version of SQLite used by Python with: ```shell python -c "import sqlite3; print(sqlite3.sqlite_version)" ``` If this is too old, refer to your distribution for advice on upgrading. # Upgrading to v1.66.0 ## Delegation of email validation no longer supported As of this version, Synapse no longer allows the tasks of verifying email address ownership, and password reset confirmation, to be delegated to an identity server. This removal was previously planned for Synapse 1.64.0, but was [delayed](https://github.com/matrix-org/synapse/issues/13421) until now to give homeserver administrators more notice of the change. To continue to allow users to add email addresses to their homeserver accounts, and perform password resets, make sure that Synapse is configured with a working email server in the [`email` configuration section](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#email) (including, at a minimum, a `notif_from` setting.) Specifying an `email` setting under `account_threepid_delegates` will now cause an error at startup. # Upgrading to v1.64.0 ## Deprecation of the ability to delegate e-mail verification to identity servers Synapse v1.66.0 will remove the ability to delegate the tasks of verifying email address ownership, and password reset confirmation, to an identity server. If you require your homeserver to verify e-mail addresses or to support password resets via e-mail, please configure your homeserver with SMTP access so that it can send e-mails on its own behalf. [Consult the configuration documentation for more information.](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#email) The option that will be removed is `account_threepid_delegates.email`. ## Changes to the event replication streams Synapse now includes a flag indicating if an event is an outlier when replicating it to other workers. This is a forwards- and backwards-incompatible change: v1.63 and workers cannot process events replicated by v1.64 workers, and vice versa. Once all workers are upgraded to v1.64 (or downgraded to v1.63), event replication will resume as normal. ## frozendict release [frozendict 2.3.3](https://github.com/Marco-Sulla/python-frozendict/releases/tag/v2.3.3) has recently been released, which fixes a memory leak that occurs during `/sync` requests. We advise server administrators who installed Synapse via pip to upgrade frozendict with `pip install --upgrade frozendict`. The Docker image `matrixdotorg/synapse` and the Debian packages from `packages.matrix.org` already include the updated library. # Upgrading to v1.62.0 ## New signatures for spam checker callbacks As a followup to changes in v1.60.0, the following spam-checker callbacks have changed signature: - `user_may_join_room` - `user_may_invite` - `user_may_send_3pid_invite` - `user_may_create_room` - `user_may_create_room_alias` - `user_may_publish_room` - `check_media_file_for_spam` For each of these methods, the previous callback signature has been deprecated. Whereas callbacks used to return `bool`, they should now return `Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes"]`. For instance, if your module implements `user_may_join_room` as follows: ```python async def user_may_join_room(self, user_id: str, room_id: str, is_invited: bool) if ...: # Request is spam return False # Request is not spam return True ``` you should rewrite it as follows: ```python async def user_may_join_room(self, user_id: str, room_id: str, is_invited: bool) if ...: # Request is spam, mark it as forbidden (you may use some more precise error # code if it is useful). return synapse.module_api.errors.Codes.FORBIDDEN # Request is not spam, mark it as such. return synapse.module_api.NOT_SPAM ``` # Upgrading to v1.61.0 ## Removal of deprecated community/groups This release of Synapse will remove deprecated community/groups from codebase. ### Worker endpoints For those who have deployed workers, following worker endpoints will no longer exist and they can be removed from the reverse proxy configuration: - `^/_matrix/federation/v1/get_groups_publicised$` - `^/_matrix/client/(r0|v3|unstable)/joined_groups$` - `^/_matrix/client/(r0|v3|unstable)/publicised_groups$` - `^/_matrix/client/(r0|v3|unstable)/publicised_groups/` - `^/_matrix/federation/v1/groups/` - `^/_matrix/client/(r0|v3|unstable)/groups/` # Upgrading to v1.60.0 ## Adding a new unique index to `state_group_edges` could fail if your database is corrupted This release of Synapse will add a unique index to the `state_group_edges` table, in order to prevent accidentally introducing duplicate information (for example, because a database backup was restored multiple times). Duplicate rows being present in this table could cause drastic performance problems; see [issue 11779](https://github.com/matrix-org/synapse/issues/11779) for more details. If your Synapse database already has had duplicate rows introduced into this table, this could fail, with either of these errors: **On Postgres:** ``` synapse.storage.background_updates - 623 - INFO - background_updates-0 - Adding index state_group_edges_unique_idx to state_group_edges synapse.storage.background_updates - 282 - ERROR - background_updates-0 - Error doing update ... psycopg2.errors.UniqueViolation: could not create unique index "state_group_edges_unique_idx" DETAIL: Key (state_group, prev_state_group)=(2, 1) is duplicated. ``` (The numbers may be different.) **On SQLite:** ``` synapse.storage.background_updates - 623 - INFO - background_updates-0 - Adding index state_group_edges_unique_idx to state_group_edges synapse.storage.background_updates - 282 - ERROR - background_updates-0 - Error doing update ... sqlite3.IntegrityError: UNIQUE constraint failed: state_group_edges.state_group, state_group_edges.prev_state_group ```
Expand this section for steps to resolve this problem ### On Postgres Connect to your database with `psql`. ```sql BEGIN; DELETE FROM state_group_edges WHERE (ctid, state_group, prev_state_group) IN ( SELECT row_id, state_group, prev_state_group FROM ( SELECT ctid AS row_id, MIN(ctid) OVER (PARTITION BY state_group, prev_state_group) AS min_row_id, state_group, prev_state_group FROM state_group_edges ) AS t1 WHERE row_id <> min_row_id ); COMMIT; ``` ### On SQLite At the command-line, use `sqlite3 path/to/your-homeserver-database.db`: ```sql BEGIN; DELETE FROM state_group_edges WHERE (rowid, state_group, prev_state_group) IN ( SELECT row_id, state_group, prev_state_group FROM ( SELECT rowid AS row_id, MIN(rowid) OVER (PARTITION BY state_group, prev_state_group) AS min_row_id, state_group, prev_state_group FROM state_group_edges ) WHERE row_id <> min_row_id ); COMMIT; ``` ### For more details [This comment on issue 11779](https://github.com/matrix-org/synapse/issues/11779#issuecomment-1131545970) has queries that can be used to check a database for this problem in advance.
## New signature for the spam checker callback `check_event_for_spam` The previous signature has been deprecated. Whereas `check_event_for_spam` callbacks used to return `Union[str, bool]`, they should now return `Union["synapse.module_api.NOT_SPAM", "synapse.module_api.errors.Codes"]`. This is part of an ongoing refactoring of the SpamChecker API to make it less ambiguous and more powerful. If your module implements `check_event_for_spam` as follows: ```python async def check_event_for_spam(event): if ...: # Event is spam return True # Event is not spam return False ``` you should rewrite it as follows: ```python async def check_event_for_spam(event): if ...: # Event is spam, mark it as forbidden (you may use some more precise error # code if it is useful). return synapse.module_api.errors.Codes.FORBIDDEN # Event is not spam, mark it as such. return synapse.module_api.NOT_SPAM ``` # Upgrading to v1.59.0 ## Device name lookup over federation has been disabled by default The names of user devices are no longer visible to users on other homeservers by default. Device IDs are unaffected, as these are necessary to facilitate end-to-end encryption. To re-enable this functionality, set the [`allow_device_name_lookup_over_federation`](https://element-hq.github.io/synapse/v1.59/usage/configuration/config_documentation.html#federation) homeserver config option to `true`. ## Deprecation of the `synapse.app.appservice` and `synapse.app.user_dir` worker application types The `synapse.app.appservice` worker application type allowed you to configure a single worker to use to notify application services of new events, as long as this functionality was disabled on the main process with `notify_appservices: False`. Further, the `synapse.app.user_dir` worker application type allowed you to configure a single worker to be responsible for updating the user directory, as long as this was disabled on the main process with `update_user_directory: False`. To unify Synapse's worker types, the `synapse.app.appservice` worker application type and the `notify_appservices` configuration option have been deprecated. The `synapse.app.user_dir` worker application type and `update_user_directory` configuration option have also been deprecated. To get the same functionality as was provided by the deprecated options, it's now recommended that the `synapse.app.generic_worker` worker application type is used and that the `notify_appservices_from_worker` and/or `update_user_directory_from_worker` options are set to the name of a worker. For the time being, the old options can be used alongside the new options to make it easier to transition between the two configurations, however please note that: - the options must not contradict each other (otherwise Synapse won't start); and - the `notify_appservices` and `update_user_directory` options will be removed in a future release of Synapse. Please see the [*Notifying Application Services*][v1_59_notify_ases_from] and [*Updating the User Directory*][v1_59_update_user_dir] sections of the worker documentation for more information. [v1_59_notify_ases_from]: workers.md#notifying-application-services [v1_59_update_user_dir]: workers.md#updating-the-user-directory # Upgrading to v1.58.0 ## Groups/communities feature has been disabled by default The non-standard groups/communities feature in Synapse has been disabled by default and will be removed in Synapse v1.61.0. # Upgrading to v1.57.0 ## Changes to database schema for application services Synapse v1.57.0 includes a [change](https://github.com/matrix-org/synapse/pull/12209) to the way transaction IDs are managed for application services. If your deployment uses a dedicated worker for application service traffic, **it must be stopped** when the database is upgraded (which normally happens when the main process is upgraded), to ensure the change is made safely without any risk of reusing transaction IDs. Deployments which do not use separate worker processes can be upgraded as normal. Similarly, deployments where no application services are in use can be upgraded as normal.
Recovering from an incorrect upgrade If the database schema is upgraded *without* stopping the worker responsible for AS traffic, then the following error may be given when attempting to start a Synapse worker or master process: ``` ********************************************************************************** Error during initialisation: Postgres sequence 'application_services_txn_id_seq' is inconsistent with associated table 'application_services_txns'. This can happen if Synapse has been downgraded and then upgraded again, or due to a bad migration. To fix this error, shut down Synapse (including any and all workers) and run the following SQL: SELECT setval('application_services_txn_id_seq', ( SELECT GREATEST(MAX(txn_id), 0) FROM application_services_txns )); See docs/postgres.md for more information. There may be more information in the logs. ********************************************************************************** ``` This error may also be seen if Synapse is *downgraded* to an earlier version, and then upgraded again to v1.57.0 or later. In either case: 1. Ensure that the worker responsible for AS traffic is stopped. 2. Run the SQL command given in the error message via `psql`. Synapse should then start correctly.
# Upgrading to v1.56.0 ## Open registration without verification is now disabled by default Synapse will refuse to start if registration is enabled without email, captcha, or token-based verification unless the new config flag `enable_registration_without_verification` is set to "true". ## Groups/communities feature has been deprecated The non-standard groups/communities feature in Synapse has been deprecated and will be disabled by default in Synapse v1.58.0. You can test disabling it by adding the following to your homeserver configuration: ```yaml experimental_features: groups_enabled: false ``` ## Change in behaviour for PostgreSQL databases with unsafe locale Synapse now refuses to start when using PostgreSQL with non-`C` values for `COLLATE` and `CTYPE` unless the config flag `allow_unsafe_locale`, found in the database section of the configuration file, is set to `true`. See the [PostgreSQL documentation](https://element-hq.github.io/synapse/latest/postgres.html#fixing-incorrect-collate-or-ctype) for more information and instructions on how to fix a database with incorrect values. # Upgrading to v1.55.0 ## `synctl` script has been moved The `synctl` script [has been made](https://github.com/matrix-org/synapse/pull/12140) an [entry point](https://packaging.python.org/en/latest/specifications/entry-points/) and no longer exists at the root of Synapse's source tree. If you wish to use `synctl` to manage your homeserver, you should invoke `synctl` directly, e.g. `synctl start` instead of `./synctl start` or `/path/to/synctl start`. You will need to ensure `synctl` is on your `PATH`. - This is automatically the case when using [Debian packages](https://packages.matrix.org/debian/) or [docker images](https://hub.docker.com/r/matrixdotorg/synapse) provided by Matrix.org. - When installing from a wheel, sdist, or PyPI, a `synctl` executable is added to your Python installation's `bin`. This should be on your `PATH` automatically, though you might need to activate a virtual environment depending on how you installed Synapse. ## Compatibility dropped for Mjolnir 1.3.1 and earlier Synapse v1.55.0 drops support for Mjolnir 1.3.1 and earlier. If you use the Mjolnir module to moderate your homeserver, please upgrade Mjolnir to version 1.3.2 or later before upgrading Synapse. # Upgrading to v1.54.0 ## Legacy structured logging configuration removal This release removes support for the `structured: true` logging configuration which was deprecated in Synapse v1.23.0. If your logging configuration contains `structured: true` then it should be modified based on the [structured logging documentation](https://element-hq.github.io/synapse/v1.56/structured_logging.html#upgrading-from-legacy-structured-logging-configuration). # Upgrading to v1.53.0 ## Dropping support for `webclient` listeners and non-HTTP(S) `web_client_location` Per the deprecation notice in Synapse v1.51.0, listeners of type `webclient` are no longer supported and configuring them is a now a configuration error. Configuring a non-HTTP(S) `web_client_location` configuration is is now a configuration error. Since the `webclient` listener is no longer supported, this setting only applies to the root path `/` of Synapse's web server and no longer the `/_matrix/client/` path. ## Stablisation of MSC3231 The unstable validity-check endpoint for the [Registration Tokens](https://spec.matrix.org/v1.2/client-server-api/#get_matrixclientv1registermloginregistration_tokenvalidity) feature has been stabilised and moved from: `/_matrix/client/unstable/org.matrix.msc3231/register/org.matrix.msc3231.login.registration_token/validity` to: `/_matrix/client/v1/register/m.login.registration_token/validity` Please update any relevant reverse proxy or firewall configurations appropriately. ## Time-based cache expiry is now enabled by default Formerly, entries in the cache were not evicted regardless of whether they were accessed after storing. This behavior has now changed. By default entries in the cache are now evicted after 30m of not being accessed. To change the default behavior, go to the `caches` section of the config and change the `expire_caches` and `cache_entry_ttl` flags as necessary. Please note that these flags replace the `expiry_time` flag in the config. The `expiry_time` flag will still continue to work, but it has been deprecated and will be removed in the future. ## Deprecation of `capability` `org.matrix.msc3283.*` The `capabilities` of MSC3283 from the REST API `/_matrix/client/r0/capabilities` becomes stable. The old `capabilities` - `org.matrix.msc3283.set_displayname`, - `org.matrix.msc3283.set_avatar_url` and - `org.matrix.msc3283.3pid_changes` are deprecated and scheduled to be removed in Synapse v1.54.0. The new `capabilities` - `m.set_displayname`, - `m.set_avatar_url` and - `m.3pid_changes` are now active by default. ## Removal of `user_may_create_room_with_invites` As announced with the release of [Synapse 1.47.0](#deprecation-of-the-user_may_create_room_with_invites-module-callback), the deprecated `user_may_create_room_with_invites` module callback has been removed. Modules relying on it can instead implement [`user_may_invite`](https://element-hq.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite) and use the [`get_room_state`](https://github.com/element-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876) module API to infer whether the invite is happening while creating a room (see [this function](https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89) as an example). Alternately, modules can also implement [`on_create_room`](https://element-hq.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room). # Upgrading to v1.52.0 ## Twisted security release Note that [Twisted 22.1.0](https://github.com/twisted/twisted/releases/tag/twisted-22.1.0) has recently been released, which fixes a [security issue](https://github.com/twisted/twisted/security/advisories/GHSA-92x2-jw7w-xvvx) within the Twisted library. We do not believe Synapse is affected by this vulnerability, though we advise server administrators who installed Synapse via pip to upgrade Twisted with `pip install --upgrade Twisted treq` as a matter of good practice. The Docker image `matrixdotorg/synapse` and the Debian packages from `packages.matrix.org` are using the updated library. # Upgrading to v1.51.0 ## Deprecation of `webclient` listeners and non-HTTP(S) `web_client_location` Listeners of type `webclient` are deprecated and scheduled to be removed in Synapse v1.53.0. Similarly, a non-HTTP(S) `web_client_location` configuration is deprecated and will become a configuration error in Synapse v1.53.0. # Upgrading to v1.50.0 ## Dropping support for old Python and Postgres versions In line with our [deprecation policy](deprecation_policy.md), we've dropped support for Python 3.6 and PostgreSQL 9.6, as they are no longer supported upstream. This release of Synapse requires Python 3.7+ and PostgreSQL 10+. # Upgrading to v1.47.0 ## Removal of old Room Admin API The following admin APIs were deprecated in [Synapse 1.34](https://github.com/matrix-org/synapse/blob/v1.34.0/CHANGES.md#deprecations-and-removals) (released on 2021-05-17) and have now been removed: - `POST /_synapse/admin/v1//delete` Any scripts still using the above APIs should be converted to use the [Delete Room API](https://element-hq.github.io/synapse/latest/admin_api/rooms.html#delete-room-api). ## Deprecation of the `user_may_create_room_with_invites` module callback The `user_may_create_room_with_invites` is deprecated and will be removed in a future version of Synapse. Modules implementing this callback can instead implement [`user_may_invite`](https://element-hq.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite) and use the [`get_room_state`](https://github.com/element-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876) module API method to infer whether the invite is happening in the context of creating a room. We plan to remove this callback in January 2022. # Upgrading to v1.45.0 ## Changes required to media storage provider modules when reading from the Synapse configuration object Media storage provider modules that read from the Synapse configuration object (i.e. that read the value of `hs.config.[...]`) now need to specify the configuration section they're reading from. This means that if a module reads the value of e.g. `hs.config.media_store_path`, it needs to replace it with `hs.config.media.media_store_path`. # Upgrading to v1.44.0 ## The URL preview cache is no longer mirrored to storage providers The `url_cache/` and `url_cache_thumbnails/` directories in the media store are no longer mirrored to storage providers. These two directories can be safely deleted from any configured storage providers to reclaim space. # Upgrading to v1.43.0 ## The spaces summary APIs can now be handled by workers The [available worker applications documentation](https://element-hq.github.io/synapse/latest/workers.html#available-worker-applications) has been updated to reflect that calls to the `/spaces`, `/hierarchy`, and `/summary` endpoints can now be routed to workers for both client API and federation requests. # Upgrading to v1.42.0 ## Removal of old Room Admin API The following admin APIs were deprecated in [Synapse 1.25](https://github.com/matrix-org/synapse/blob/v1.25.0/CHANGES.md#removal-warning) (released on 2021-01-13) and have now been removed: - `POST /_synapse/admin/v1/purge_room` - `POST /_synapse/admin/v1/shutdown_room/` Any scripts still using the above APIs should be converted to use the [Delete Room API](https://element-hq.github.io/synapse/latest/admin_api/rooms.html#delete-room-api). ## User-interactive authentication fallback templates can now display errors This may affect you if you make use of custom HTML templates for the [reCAPTCHA (`synapse/res/templates/recaptcha.html`)](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates/recaptcha.html) or [terms (`synapse/res/templates/terms.html`)](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates/terms.html) fallback pages. The template is now provided an `error` variable if the authentication process failed. See the default templates linked above for an example. ## Removal of out-of-date email pushers Users will stop receiving message updates via email for addresses that were once, but not still, linked to their account. # Upgrading to v1.41.0 ## Add support for routing outbound HTTP requests via a proxy for federation Since Synapse 1.6.0 (2019-11-26) you can set a proxy for outbound HTTP requests via http_proxy/https_proxy environment variables. This proxy was set for: - push - url previews - phone-home stats - recaptcha validation - CAS auth validation - OpenID Connect - Federation (checking public key revocation) In this version we have added support for outbound requests for: - Outbound federation - Downloading remote media - Fetching public keys of other servers These requests use the same proxy configuration. If you have a proxy configuration we recommend to verify the configuration. It may be necessary to adjust the `no_proxy` environment variable. See [using a forward proxy with Synapse documentation](setup/forward_proxy.md) for details. ## Deprecation of `template_dir` The `template_dir` settings in the `sso`, `account_validity` and `email` sections of the configuration file are now deprecated. Server admins should use the new `templates.custom_template_directory` setting in the configuration file and use one single custom template directory for all aforementioned features. Template file names remain unchanged. See [the related documentation](https://element-hq.github.io/synapse/latest/templates.html) for more information and examples. We plan to remove support for these settings in October 2021. ## `/_synapse/admin/v1/users/{userId}/media` must be handled by media workers The [media repository worker documentation](https://element-hq.github.io/synapse/latest/workers.html#synapseappmedia_repository) has been updated to reflect that calls to `/_synapse/admin/v1/users/{userId}/media` must now be handled by media repository workers. This is due to the new `DELETE` method of this endpoint modifying the media store. # Upgrading to v1.39.0 ## Deprecation of the current third-party rules module interface The current third-party rules module interface is deprecated in favour of the new generic modules system introduced in Synapse v1.37.0. Authors of third-party rules modules can refer to [this documentation](modules/porting_legacy_module.md) to update their modules. Synapse administrators can refer to [this documentation](modules/index.md) to update their configuration once the modules they are using have been updated. We plan to remove support for the current third-party rules interface in September 2021. # Upgrading to v1.38.0 ## Re-indexing of `events` table on Postgres databases This release includes a database schema update which requires re-indexing one of the larger tables in the database, `events`. This could result in increased disk I/O for several hours or days after upgrading while the migration completes. Furthermore, because we have to keep the old indexes until the new indexes are ready, it could result in a significant, temporary, increase in disk space. To get a rough idea of the disk space required, check the current size of one of the indexes. For example, from a `psql` shell, run the following sql: ```sql SELECT pg_size_pretty(pg_relation_size('events_order_room')); ``` We need to rebuild **four** indexes, so you will need to multiply this result by four to give an estimate of the disk space required. For example, on one particular server: ``` synapse=# select pg_size_pretty(pg_relation_size('events_order_room')); pg_size_pretty ---------------- 288 MB (1 row) ``` On this server, it would be wise to ensure that at least 1152MB are free. The additional disk space will be freed once the migration completes. SQLite databases are unaffected by this change. # Upgrading to v1.37.0 ## Deprecation of the current spam checker interface The current spam checker interface is deprecated in favour of a new generic modules system. Authors of spam checker modules can refer to [this documentation](modules/porting_legacy_module.md to update their modules. Synapse administrators can refer to [this documentation](modules/index.md) to update their configuration once the modules they are using have been updated. We plan to remove support for the current spam checker interface in August 2021. More module interfaces will be ported over to this new generic system in future versions of Synapse. # Upgrading to v1.34.0 ## `room_invite_state_types` configuration setting The `room_invite_state_types` configuration setting has been deprecated and replaced with `room_prejoin_state`. See the [sample configuration file](https://github.com/matrix-org/synapse/blob/v1.34.0/docs/sample_config.yaml#L1515). If you have set `room_invite_state_types` to the default value you should simply remove it from your configuration file. The default value used to be: ```yaml room_invite_state_types: - "m.room.join_rules" - "m.room.canonical_alias" - "m.room.avatar" - "m.room.encryption" - "m.room.name" ``` If you have customised this value, you should remove `room_invite_state_types` and configure `room_prejoin_state` instead. # Upgrading to v1.33.0 ## Account Validity HTML templates can now display a user's expiration date This may affect you if you have enabled the account validity feature, and have made use of a custom HTML template specified by the `account_validity.template_dir` or `account_validity.account_renewed_html_path` Synapse config options. The template can now accept an `expiration_ts` variable, which represents the unix timestamp in milliseconds for the future date of which their account has been renewed until. See the [default template](https://github.com/matrix-org/synapse/blob/release-v1.33.0/synapse/res/templates/account_renewed.html) for an example of usage. ALso note that a new HTML template, `account_previously_renewed.html`, has been added. This is is shown to users when they attempt to renew their account with a valid renewal token that has already been used before. The default template contents can been found [here](https://github.com/matrix-org/synapse/blob/release-v1.33.0/synapse/res/templates/account_previously_renewed.html), and can also accept an `expiration_ts` variable. This template replaces the error message users would previously see upon attempting to use a valid renewal token more than once. # Upgrading to v1.32.0 ## Regression causing connected Prometheus instances to become overwhelmed This release introduces [a regression](https://github.com/matrix-org/synapse/issues/9853) that can overwhelm connected Prometheus instances. This issue is not present in Synapse v1.32.0rc1. If you have been affected, please downgrade to 1.31.0. You then may need to remove excess writeahead logs in order for Prometheus to recover. Instructions for doing so are provided [here](https://github.com/matrix-org/synapse/pull/9854#issuecomment-823472183). ## Dropping support for old Python, Postgres and SQLite versions In line with our [deprecation policy](deprecation_policy.md), we've dropped support for Python 3.5 and PostgreSQL 9.5, as they are no longer supported upstream. This release of Synapse requires Python 3.6+ and PostgreSQL 9.6+ or SQLite 3.22+. ## Removal of old List Accounts Admin API The deprecated v1 "list accounts" admin API (`GET /_synapse/admin/v1/users/`) has been removed in this version. The [v2 list accounts API](admin_api/user_admin_api.md#list-accounts) has been available since Synapse 1.7.0 (2019-12-13), and is accessible under `GET /_synapse/admin/v2/users`. The deprecation of the old endpoint was announced with Synapse 1.28.0 (released on 2021-02-25). ## Application Services must use type `m.login.application_service` when registering users In compliance with the [Application Service spec](https://matrix.org/docs/spec/application_service/r0.1.2#server-admin-style-permissions), Application Services are now required to use the `m.login.application_service` type when registering users via the `/_matrix/client/r0/register` endpoint. This behaviour was deprecated in Synapse v1.30.0. Please ensure your Application Services are up to date. # Upgrading to v1.29.0 ## Requirement for X-Forwarded-Proto header When using Synapse with a reverse proxy (in particular, when using the `x_forwarded` option on an HTTP listener), Synapse now expects to receive an `X-Forwarded-Proto` header on incoming HTTP requests. If it is not set, Synapse will log a warning on each received request. To avoid the warning, administrators using a reverse proxy should ensure that the reverse proxy sets `X-Forwarded-Proto` header to `https` or `http` to indicate the protocol used by the client. Synapse also requires the `Host` header to be preserved. See the [reverse proxy documentation](reverse_proxy.md), where the example configurations have been updated to show how to set these headers. (Users of [Caddy](https://caddyserver.com/) are unaffected, since we believe it sets `X-Forwarded-Proto` by default.) # Upgrading to v1.27.0 ## Changes to callback URI for OAuth2 / OpenID Connect and SAML2 This version changes the URI used for callbacks from OAuth2 and SAML2 identity providers: - If your server is configured for single sign-on via an OpenID Connect or OAuth2 identity provider, you will need to add `[synapse public baseurl]/_synapse/client/oidc/callback` to the list of permitted "redirect URIs" at the identity provider. See the [OpenID docs](openid.md) for more information on setting up OpenID Connect. - If your server is configured for single sign-on via a SAML2 identity provider, you will need to add `[synapse public baseurl]/_synapse/client/saml2/authn_response` as a permitted "ACS location" (also known as "allowed callback URLs") at the identity provider. The "Issuer" in the "AuthnRequest" to the SAML2 identity provider is also updated to `[synapse public baseurl]/_synapse/client/saml2/metadata.xml`. If your SAML2 identity provider uses this property to validate or otherwise identify Synapse, its configuration will need to be updated to use the new URL. Alternatively you could create a new, separate "EntityDescriptor" in your SAML2 identity provider with the new URLs and leave the URLs in the existing "EntityDescriptor" as they were. ## Changes to HTML templates The HTML templates for SSO and email notifications now have [Jinja2's autoescape](https://jinja.palletsprojects.com/en/2.11.x/api/#autoescaping) enabled for files ending in `.html`, `.htm`, and `.xml`. If you have customised these templates and see issues when viewing them you might need to update them. It is expected that most configurations will need no changes. If you have customised the templates *names* for these templates, it is recommended to verify they end in `.html` to ensure autoescape is enabled. The above applies to the following templates: - `add_threepid.html` - `add_threepid_failure.html` - `add_threepid_success.html` - `notice_expiry.html` - `notice_expiry.html` - `notif_mail.html` (which, by default, includes `room.html` and `notif.html`) - `password_reset.html` - `password_reset_confirmation.html` - `password_reset_failure.html` - `password_reset_success.html` - `registration.html` - `registration_failure.html` - `registration_success.html` - `sso_account_deactivated.html` - `sso_auth_bad_user.html` - `sso_auth_confirm.html` - `sso_auth_success.html` - `sso_error.html` - `sso_login_idp_picker.html` - `sso_redirect_confirm.html` # Upgrading to v1.26.0 ## Rolling back to v1.25.0 after a failed upgrade v1.26.0 includes a lot of large changes. If something problematic occurs, you may want to roll-back to a previous version of Synapse. Because v1.26.0 also includes a new database schema version, reverting that version is also required alongside the generic rollback instructions mentioned above. In short, to roll back to v1.25.0 you need to: 1. Stop the server 2. Decrease the schema version in the database: ```sql UPDATE schema_version SET version = 58; ``` 3. Delete the ignored users & chain cover data: ```sql DROP TABLE IF EXISTS ignored_users; UPDATE rooms SET has_auth_chain_index = false; ``` For PostgreSQL run: ```sql TRUNCATE event_auth_chain_links; TRUNCATE event_auth_chains; ``` For SQLite run: ```sql DELETE FROM event_auth_chain_links; DELETE FROM event_auth_chains; ``` 4. Mark the deltas as not run (so they will re-run on upgrade). ```sql DELETE FROM applied_schema_deltas WHERE version = 59 AND file = "59/01ignored_user.py"; DELETE FROM applied_schema_deltas WHERE version = 59 AND file = "59/06chain_cover_index.sql"; ``` 5. Downgrade Synapse by following the instructions for your installation method in the "Rolling back to older versions" section above. # Upgrading to v1.25.0 ## Last release supporting Python 3.5 This is the last release of Synapse which guarantees support with Python 3.5, which passed its upstream End of Life date several months ago. We will attempt to maintain support through March 2021, but without guarantees. In the future, Synapse will follow upstream schedules for ending support of older versions of Python and PostgreSQL. Please upgrade to at least Python 3.6 and PostgreSQL 9.6 as soon as possible. ## Blacklisting IP ranges Synapse v1.25.0 includes new settings, `ip_range_blacklist` and `ip_range_whitelist`, for controlling outgoing requests from Synapse for federation, identity servers, push, and for checking key validity for third-party invite events. The previous setting, `federation_ip_range_blacklist`, is deprecated. The new `ip_range_blacklist` defaults to private IP ranges if it is not defined. If you have never customised `federation_ip_range_blacklist` it is recommended that you remove that setting. If you have customised `federation_ip_range_blacklist` you should update the setting name to `ip_range_blacklist`. If you have a custom push server that is reached via private IP space you may need to customise `ip_range_blacklist` or `ip_range_whitelist`. # Upgrading to v1.24.0 ## Custom OpenID Connect mapping provider breaking change This release allows the OpenID Connect mapping provider to perform normalisation of the localpart of the Matrix ID. This allows for the mapping provider to specify different algorithms, instead of the [default way](). If your Synapse configuration uses a custom mapping provider (`oidc_config.user_mapping_provider.module` is specified and not equal to `synapse.handlers.oidc_handler.JinjaOidcMappingProvider`) then you *must* ensure that `map_user_attributes` of the mapping provider performs some normalisation of the `localpart` returned. To match previous behaviour you can use the `map_username_to_mxid_localpart` function provided by Synapse. An example is shown below: ```python from synapse.types import map_username_to_mxid_localpart class MyMappingProvider: def map_user_attributes(self, userinfo, token): # ... your custom logic ... sso_user_id = ... localpart = map_username_to_mxid_localpart(sso_user_id) return {"localpart": localpart} ``` ## Removal historical Synapse Admin API Historically, the Synapse Admin API has been accessible under: - `/_matrix/client/api/v1/admin` - `/_matrix/client/unstable/admin` - `/_matrix/client/r0/admin` - `/_synapse/admin/v1` The endpoints with `/_matrix/client/*` prefixes have been removed as of v1.24.0. The Admin API is now only accessible under: - `/_synapse/admin/v1` The only exception is the `/admin/whois` endpoint, which is [also available via the client-server API](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-admin-whois-userid). The deprecation of the old endpoints was announced with Synapse 1.20.0 (released on 2020-09-22) and makes it easier for homeserver admins to lock down external access to the Admin API endpoints. # Upgrading to v1.23.0 ## Structured logging configuration breaking changes This release deprecates use of the `structured: true` logging configuration for structured logging. If your logging configuration contains `structured: true` then it should be modified based on the [structured logging documentation](https://element-hq.github.io/synapse/v1.56/structured_logging.html#upgrading-from-legacy-structured-logging-configuration). The `structured` and `drains` logging options are now deprecated and should be replaced by standard logging configuration of `handlers` and `formatters`. A future will release of Synapse will make using `structured: true` an error. # Upgrading to v1.22.0 ## ThirdPartyEventRules breaking changes This release introduces a backwards-incompatible change to modules making use of `ThirdPartyEventRules` in Synapse. If you make use of a module defined under the `third_party_event_rules` config option, please make sure it is updated to handle the below change: The `http_client` argument is no longer passed to modules as they are initialised. Instead, modules are expected to make use of the `http_client` property on the `ModuleApi` class. Modules are now passed a `module_api` argument during initialisation, which is an instance of `ModuleApi`. `ModuleApi` instances have a `http_client` property which acts the same as the `http_client` argument previously passed to `ThirdPartyEventRules` modules. # Upgrading to v1.21.0 ## Forwarding `/_synapse/client` through your reverse proxy The [reverse proxy documentation](reverse_proxy.md) has been updated to include reverse proxy directives for `/_synapse/client/*` endpoints. As the user password reset flow now uses endpoints under this prefix, **you must update your reverse proxy configurations for user password reset to work**. Additionally, note that the [Synapse worker documentation](workers.md) has been updated to : state that the `/_synapse/client/password_reset/email/submit_token` endpoint can be handled by all workers. If you make use of Synapse's worker feature, please update your reverse proxy configuration to reflect this change. ## New HTML templates A new HTML template, [password_reset_confirmation.html](https://github.com/element-hq/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html), has been added to the `synapse/res/templates` directory. If you are using a custom template directory, you may want to copy the template over and modify it. Note that as of v1.20.0, templates do not need to be included in custom template directories for Synapse to start. The default templates will be used if a custom template cannot be found. This page will appear to the user after clicking a password reset link that has been emailed to them. To complete password reset, the page must include a way to make a `POST` request to `/_synapse/client/password_reset/{medium}/submit_token` with the query parameters from the original link, presented as a URL-encoded form. See the file itself for more details. ## Updated Single Sign-on HTML Templates The `saml_error.html` template was removed from Synapse and replaced with the `sso_error.html` template. If your Synapse is configured to use SAML and a custom `sso_redirect_confirm_template_dir` configuration then any customisations of the `saml_error.html` template will need to be merged into the `sso_error.html` template. These templates are similar, but the parameters are slightly different: - The `msg` parameter should be renamed to `error_description`. - There is no longer a `code` parameter for the response code. - A string `error` parameter is available that includes a short hint of why a user is seeing the error page. # Upgrading to v1.18.0 ## Docker `-py3` suffix will be removed in future versions From 10th August 2020, we will no longer publish Docker images with the `-py3` tag suffix. The images tagged with the `-py3` suffix have been identical to the non-suffixed tags since release 0.99.0, and the suffix is obsolete. On 10th August, we will remove the `latest-py3` tag. Existing per-release tags (such as `v1.18.0-py3` will not be removed, but no new `-py3` tags will be added. Scripts relying on the `-py3` suffix will need to be updated. ## Redis replication is now recommended in lieu of TCP replication When setting up worker processes, we now recommend the use of a Redis server for replication. **The old direct TCP connection method is deprecated and will be removed in a future release.** See the [worker documentation](https://element-hq.github.io/synapse/v1.66/workers.html) for more details. # Upgrading to v1.14.0 This version includes a database update which is run as part of the upgrade, and which may take a couple of minutes in the case of a large server. Synapse will not respond to HTTP requests while this update is taking place. # Upgrading to v1.13.0 ## Incorrect database migration in old synapse versions A bug was introduced in Synapse 1.4.0 which could cause the room directory to be incomplete or empty if Synapse was upgraded directly from v1.2.1 or earlier, to versions between v1.4.0 and v1.12.x. This will *not* be a problem for Synapse installations which were: : - created at v1.4.0 or later, - upgraded via v1.3.x, or - upgraded straight from v1.2.1 or earlier to v1.13.0 or later. If completeness of the room directory is a concern, installations which are affected can be repaired as follows: 1. Run the following sql from a `psql` or `sqlite3` console: ```sql INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES ('populate_stats_process_rooms', '{}', 'current_state_events_membership'); INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES ('populate_stats_process_users', '{}', 'populate_stats_process_rooms'); ``` 2. Restart synapse. ## New Single Sign-on HTML Templates New templates (`sso_auth_confirm.html`, `sso_auth_success.html`, and `sso_account_deactivated.html`) were added to Synapse. If your Synapse is configured to use SSO and a custom `sso_redirect_confirm_template_dir` configuration then these templates will need to be copied from [`synapse/res/templates`](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates) into that directory. ## Synapse SSO Plugins Method Deprecation Plugins using the `complete_sso_login` method of `synapse.module_api.ModuleApi` should update to using the async/await version `complete_sso_login_async` which includes additional checks. The non-async version is considered deprecated. ## Rolling back to v1.12.4 after a failed upgrade v1.13.0 includes a lot of large changes. If something problematic occurs, you may want to roll-back to a previous version of Synapse. Because v1.13.0 also includes a new database schema version, reverting that version is also required alongside the generic rollback instructions mentioned above. In short, to roll back to v1.12.4 you need to: 1. Stop the server 2. Decrease the schema version in the database: ```sql UPDATE schema_version SET version = 57; ``` 3. Downgrade Synapse by following the instructions for your installation method in the "Rolling back to older versions" section above. # Upgrading to v1.12.0 This version includes a database update which is run as part of the upgrade, and which may take some time (several hours in the case of a large server). Synapse will not respond to HTTP requests while this update is taking place. This is only likely to be a problem in the case of a server which is participating in many rooms. 0. As with all upgrades, it is recommended that you have a recent backup of your database which can be used for recovery in the event of any problems. 1. As an initial check to see if you will be affected, you can try running the following query from the `psql` or `sqlite3` console. It is safe to run it while Synapse is still running. ```sql SELECT MAX(q.v) FROM ( SELECT ( SELECT ej.json AS v FROM state_events se INNER JOIN event_json ej USING (event_id) WHERE se.room_id=rooms.room_id AND se.type='m.room.create' AND se.state_key='' LIMIT 1 ) FROM rooms WHERE rooms.room_version IS NULL ) q; ``` This query will take about the same amount of time as the upgrade process: ie, if it takes 5 minutes, then it is likely that Synapse will be unresponsive for 5 minutes during the upgrade. If you consider an outage of this duration to be acceptable, no further action is necessary and you can simply start Synapse 1.12.0. If you would prefer to reduce the downtime, continue with the steps below. 2. The easiest workaround for this issue is to manually create a new index before upgrading. On PostgreSQL, his can be done as follows: ```sql CREATE INDEX CONCURRENTLY tmp_upgrade_1_12_0_index ON state_events(room_id) WHERE type = 'm.room.create'; ``` The above query may take some time, but is also safe to run while Synapse is running. We assume that no SQLite users have databases large enough to be affected. If you *are* affected, you can run a similar query, omitting the `CONCURRENTLY` keyword. Note however that this operation may in itself cause Synapse to stop running for some time. Synapse admins are reminded that [SQLite is not recommended for use outside a test environment](postgres.md). 3. Once the index has been created, the `SELECT` query in step 1 above should complete quickly. It is therefore safe to upgrade to Synapse 1.12.0. 4. Once Synapse 1.12.0 has successfully started and is responding to HTTP requests, the temporary index can be removed: ```sql DROP INDEX tmp_upgrade_1_12_0_index; ``` # Upgrading to v1.10.0 Synapse will now log a warning on start up if used with a PostgreSQL database that has a non-recommended locale set. See [Postgres](postgres.md) for details. # Upgrading to v1.8.0 Specifying a `log_file` config option will now cause Synapse to refuse to start, and should be replaced by with the `log_config` option. Support for the `log_file` option was removed in v1.3.0 and has since had no effect. # Upgrading to v1.7.0 In an attempt to configure Synapse in a privacy preserving way, the default behaviours of `allow_public_rooms_without_auth` and `allow_public_rooms_over_federation` have been inverted. This means that by default, only authenticated users querying the Client/Server API will be able to query the room directory, and relatedly that the server will not share room directory information with other servers over federation. If your installation does not explicitly set these settings one way or the other and you want either setting to be `true` then it will necessary to update your homeserver configuration file accordingly. For more details on the surrounding context see our [explainer](https://matrix.org/blog/2019/11/09/avoiding-unwelcome-visitors-on-private-matrix-servers). # Upgrading to v1.5.0 This release includes a database migration which may take several minutes to complete if there are a large number (more than a million or so) of entries in the `devices` table. This is only likely to a be a problem on very large installations. # Upgrading to v1.4.0 ## New custom templates If you have configured a custom template directory with the `email.template_dir` option, be aware that there are new templates regarding registration and threepid management (see below) that must be included. - `registration.html` and `registration.txt` - `registration_success.html` and `registration_failure.html` - `add_threepid.html` and `add_threepid.txt` - `add_threepid_failure.html` and `add_threepid_success.html` Synapse will expect these files to exist inside the configured template directory, and **will fail to start** if they are absent. To view the default templates, see [synapse/res/templates](https://github.com/element-hq/synapse/tree/master/synapse/res/templates). ## 3pid verification changes **Note: As of this release, users will be unable to add phone numbers or email addresses to their accounts, without changes to the Synapse configuration. This includes adding an email address during registration.** It is possible for a user to associate an email address or phone number with their account, for a number of reasons: - for use when logging in, as an alternative to the user id. - in the case of email, as an alternative contact to help with account recovery. - in the case of email, to receive notifications of missed messages. Before an email address or phone number can be added to a user's account, or before such an address is used to carry out a password-reset, Synapse must confirm the operation with the owner of the email address or phone number. It does this by sending an email or text giving the user a link or token to confirm receipt. This process is known as '3pid verification'. ('3pid', or 'threepid', stands for third-party identifier, and we use it to refer to external identifiers such as email addresses and phone numbers.) Previous versions of Synapse delegated the task of 3pid verification to an identity server by default. In most cases this server is `vector.im` or `matrix.org`. In Synapse 1.4.0, for security and privacy reasons, the homeserver will no longer delegate this task to an identity server by default. Instead, the server administrator will need to explicitly decide how they would like the verification messages to be sent. In the medium term, the `vector.im` and `matrix.org` identity servers will disable support for delegated 3pid verification entirely. However, in order to ease the transition, they will retain the capability for a limited period. Delegated email verification will be disabled on Monday 2nd December 2019 (giving roughly 2 months notice). Disabling delegated SMS verification will follow some time after that once SMS verification support lands in Synapse. Once delegated 3pid verification support has been disabled in the `vector.im` and `matrix.org` identity servers, all Synapse versions that depend on those instances will be unable to verify email and phone numbers through them. There are no imminent plans to remove delegated 3pid verification from Sydent generally. (Sydent is the identity server project that backs the `vector.im` and `matrix.org` instances). ### Email Following upgrade, to continue verifying email (e.g. as part of the registration process), admins can either:- - Configure Synapse to use an email server. - Run or choose an identity server which allows delegated email verification and delegate to it. #### Configure SMTP in Synapse To configure an SMTP server for Synapse, modify the configuration section headed `email`, and be sure to have at least the `smtp_host, smtp_port` and `notif_from` fields filled out. You may also need to set `smtp_user`, `smtp_pass`, and `require_transport_security`. See the [sample configuration file](usage/configuration/homeserver_sample_config.md) for more details on these settings. #### Delegate email to an identity server Some admins will wish to continue using email verification as part of the registration process, but will not immediately have an appropriate SMTP server at hand. To this end, we will continue to support email verification delegation via the `vector.im` and `matrix.org` identity servers for two months. Support for delegated email verification will be disabled on Monday 2nd December. The `account_threepid_delegates` dictionary defines whether the homeserver should delegate an external server (typically an [identity server](https://matrix.org/docs/spec/identity_service/r0.2.1)) to handle sending confirmation messages via email and SMS. So to delegate email verification, in `homeserver.yaml`, set `account_threepid_delegates.email` to the base URL of an identity server. For example: ```yaml account_threepid_delegates: email: https://example.com # Delegate email sending to example.com ``` Note that `account_threepid_delegates.email` replaces the deprecated `email.trust_identity_server_for_password_resets`: if `email.trust_identity_server_for_password_resets` is set to `true`, and `account_threepid_delegates.email` is not set, then the first entry in `trusted_third_party_id_servers` will be used as the `account_threepid_delegate` for email. This is to ensure compatibility with existing Synapse installs that set up external server handling for these tasks before v1.4.0. If `email.trust_identity_server_for_password_resets` is `true` and no trusted identity server domains are configured, Synapse will report an error and refuse to start. If `email.trust_identity_server_for_password_resets` is `false` or absent and no `email` delegate is configured in `account_threepid_delegates`, then Synapse will send email verification messages itself, using the configured SMTP server (see above). that type. ### Phone numbers Synapse does not support phone-number verification itself, so the only way to maintain the ability for users to add phone numbers to their accounts will be by continuing to delegate phone number verification to the `matrix.org` and `vector.im` identity servers (or another identity server that supports SMS sending). The `account_threepid_delegates` dictionary defines whether the homeserver should delegate an external server (typically an [identity server](https://matrix.org/docs/spec/identity_service/r0.2.1)) to handle sending confirmation messages via email and SMS. So to delegate phone number verification, in `homeserver.yaml`, set `account_threepid_delegates.msisdn` to the base URL of an identity server. For example: ```yaml account_threepid_delegates: msisdn: https://example.com # Delegate sms sending to example.com ``` The `matrix.org` and `vector.im` identity servers will continue to support delegated phone number verification via SMS until such time as it is possible for admins to configure their servers to perform phone number verification directly. More details will follow in a future release. ## Rolling back to v1.3.1 If you encounter problems with v1.4.0, it should be possible to roll back to v1.3.1, subject to the following: - The 'room statistics' engine was heavily reworked in this release (see [#5971](https://github.com/matrix-org/synapse/pull/5971)), including significant changes to the database schema, which are not easily reverted. This will cause the room statistics engine to stop updating when you downgrade. The room statistics are essentially unused in v1.3.1 (in future versions of Synapse, they will be used to populate the room directory), so there should be no loss of functionality. However, the statistics engine will write errors to the logs, which can be avoided by setting the following in `homeserver.yaml`: ```yaml stats: enabled: false ``` Don't forget to re-enable it when you upgrade again, in preparation for its use in the room directory! # Upgrading to v1.2.0 Some counter metrics have been renamed, with the old names deprecated. See [the metrics documentation](metrics-howto.md#renaming-of-metrics--deprecation-of-old-names-in-12) for details. # Upgrading to v1.1.0 Synapse v1.1.0 removes support for older Python and PostgreSQL versions, as outlined in [our deprecation notice](https://matrix.org/blog/2019/04/08/synapse-deprecating-postgres-9-4-and-python-2-x). ## Minimum Python Version Synapse v1.1.0 has a minimum Python requirement of Python 3.5. Python 3.6 or Python 3.7 are recommended as they have improved internal string handling, significantly reducing memory usage. If you use current versions of the Matrix.org-distributed Debian packages or Docker images, action is not required. If you install Synapse in a Python virtual environment, please see "Upgrading to v0.34.0" for notes on setting up a new virtualenv under Python 3. ## Minimum PostgreSQL Version If using PostgreSQL under Synapse, you will need to use PostgreSQL 9.5 or above. Please see the [PostgreSQL documentation](https://www.postgresql.org/docs/11/upgrading.html) for more details on upgrading your database. # Upgrading to v1.0 ## Validation of TLS certificates Synapse v1.0 is the first release to enforce validation of TLS certificates for the federation API. It is therefore essential that your certificates are correctly configured. Note, v1.0 installations will also no longer be able to federate with servers that have not correctly configured their certificates. In rare cases, it may be desirable to disable certificate checking: for example, it might be essential to be able to federate with a given legacy server in a closed federation. This can be done in one of two ways:- - Configure the global switch `federation_verify_certificates` to `false`. - Configure a whitelist of server domains to trust via `federation_certificate_verification_whitelist`. See the [sample configuration file](usage/configuration/homeserver_sample_config.md) for more details on these settings. ## Email When a user requests a password reset, Synapse will send an email to the user to confirm the request. Previous versions of Synapse delegated the job of sending this email to an identity server. If the identity server was somehow malicious or became compromised, it would be theoretically possible to hijack an account through this means. Therefore, by default, Synapse v1.0 will send the confirmation email itself. If Synapse is not configured with an SMTP server, password reset via email will be disabled. To configure an SMTP server for Synapse, modify the configuration section headed `email`, and be sure to have at least the `smtp_host`, `smtp_port` and `notif_from` fields filled out. You may also need to set `smtp_user`, `smtp_pass`, and `require_transport_security`. If you are absolutely certain that you wish to continue using an identity server for password resets, set `trust_identity_server_for_password_resets` to `true`. See the [sample configuration file](usage/configuration/homeserver_sample_config.md) for more details on these settings. ## New email templates Some new templates have been added to the default template directory for the purpose of the homeserver sending its own password reset emails. If you have configured a custom `template_dir` in your Synapse config, these files will need to be added. `password_reset.html` and `password_reset.txt` are HTML and plain text templates respectively that contain the contents of what will be emailed to the user upon attempting to reset their password via email. `password_reset_success.html` and `password_reset_failure.html` are HTML files that the content of which (assuming no redirect URL is set) will be shown to the user after they attempt to click the link in the email sent to them. # Upgrading to v0.99.0 Please be aware that, before Synapse v1.0 is released around March 2019, you will need to replace any self-signed certificates with those verified by a root CA. Information on how to do so can be found at the ACME docs. # Upgrading to v0.34.0 1. This release is the first to fully support Python 3. Synapse will now run on Python versions 3.5, or 3.6 (as well as 2.7). We recommend switching to Python 3, as it has been shown to give performance improvements. For users who have installed Synapse into a virtualenv, we recommend doing this by creating a new virtualenv. For example: ```sh virtualenv -p python3 ~/synapse/env3 source ~/synapse/env3/bin/activate pip install matrix-synapse ``` You can then start synapse as normal, having activated the new virtualenv: ```sh cd ~/synapse source env3/bin/activate synctl start ``` Users who have installed from distribution packages should see the relevant package documentation. See below for notes on Debian packages. - When upgrading to Python 3, you **must** make sure that your log files are configured as UTF-8, by adding `encoding: utf8` to the `RotatingFileHandler` configuration (if you have one) in your `.log.config` file. For example, if your `log.config` file contains: ```yaml handlers: file: class: logging.handlers.RotatingFileHandler formatter: precise filename: homeserver.log maxBytes: 104857600 backupCount: 10 filters: [context] console: class: logging.StreamHandler formatter: precise filters: [context] ``` Then you should update this to be: ```yaml handlers: file: class: logging.handlers.RotatingFileHandler formatter: precise filename: homeserver.log maxBytes: 104857600 backupCount: 10 filters: [context] encoding: utf8 console: class: logging.StreamHandler formatter: precise filters: [context] ``` There is no need to revert this change if downgrading to Python 2. We are also making available Debian packages which will run Synapse on Python 3. You can switch to these packages with `apt-get install matrix-synapse-py3`, however, please read [debian/NEWS](https://github.com/matrix-org/synapse/blob/release-v0.34.0/debian/NEWS) before doing so. The existing `matrix-synapse` packages will continue to use Python 2 for the time being. 2. This release removes the `riot.im` from the default list of trusted identity servers. If `riot.im` is in your homeserver's list of `trusted_third_party_id_servers`, you should remove it. It was added in case a hypothetical future identity server was put there. If you don't remove it, users may be unable to deactivate their accounts. 3. This release no longer installs the (unmaintained) Matrix Console web client as part of the default installation. It is possible to re-enable it by installing it separately and setting the `web_client_location` config option, but please consider switching to another client. # Upgrading to v0.33.7 This release removes the example email notification templates from `res/templates` (they are now internal to the python package). This should only affect you if you (a) deploy your Synapse instance from a git checkout or a github snapshot URL, and (b) have email notifications enabled. If you have email notifications enabled, you should ensure that `email.template_dir` is either configured to point at a directory where you have installed customised templates, or leave it unset to use the default templates. # Upgrading to v0.27.3 This release expands the anonymous usage stats sent if the opt-in `report_stats` configuration is set to `true`. We now capture RSS memory and cpu use at a very coarse level. This requires administrators to install the optional `psutil` python module. We would appreciate it if you could assist by ensuring this module is available and `report_stats` is enabled. This will let us see if performance changes to synapse are having an impact to the general community. # Upgrading to v0.15.0 If you want to use the new URL previewing API (`/_matrix/media/r0/preview_url`) then you have to explicitly enable it in the config and update your dependencies dependencies. See README.rst for details. # Upgrading to v0.11.0 This release includes the option to send anonymous usage stats to matrix.org, and requires that administrators explicitly opt in or out by setting the `report_stats` option to either `true` or `false`. We would really appreciate it if you could help our project out by reporting anonymized usage statistics from your homeserver. Only very basic aggregate data (e.g. number of users) will be reported, but it helps us to track the growth of the Matrix community, and helps us to make Matrix a success, as well as to convince other networks that they should peer with us. # Upgrading to v0.9.0 Application services have had a breaking API change in this version. They can no longer register themselves with a home server using the AS HTTP API. This decision was made because a compromised application service with free reign to register any regex in effect grants full read/write access to the home server if a regex of `.*` is used. An attack where a compromised AS re-registers itself with `.*` was deemed too big of a security risk to ignore, and so the ability to register with the HS remotely has been removed. It has been replaced by specifying a list of application service registrations in `homeserver.yaml`: ```yaml app_service_config_files: ["registration-01.yaml", "registration-02.yaml"] ``` Where `registration-01.yaml` looks like: ```yaml url: # e.g. "https://my.application.service.com" as_token: hs_token: sender_localpart: # This is a new field which denotes the user_id localpart when using the AS token namespaces: users: - exclusive: regex: # e.g. "@prefix_.*" aliases: - exclusive: regex: rooms: - exclusive: regex: ``` # Upgrading to v0.8.0 Servers which use captchas will need to add their public key to: static/client/register/register_config.js window.matrixRegistrationConfig = { recaptcha_public_key: "YOUR_PUBLIC_KEY" }; This is required in order to support registration fallback (typically used on mobile devices). # Upgrading to v0.7.0 New dependencies are: - pydenticon - simplejson - syutil - matrix-angular-sdk To pull in these dependencies in a virtual env, run: python synapse/python_dependencies.py | xargs -n 1 pip install # Upgrading to v0.6.0 To pull in new dependencies, run: python setup.py develop --user This update includes a change to the database schema. To upgrade you first need to upgrade the database by running: python scripts/upgrade_db_to_v0.6.0.py Where `` is the location of the database, `` is the server name as specified in the synapse configuration, and `` is the location of the signing key as specified in the synapse configuration. This may take some time to complete. Failures of signatures and content hashes can safely be ignored. # Upgrading to v0.5.1 Depending on precisely when you installed v0.5.0 you may have ended up with a stale release of the reference matrix webclient installed as a python module. To uninstall it and ensure you are depending on the latest module, please run: $ pip uninstall syweb # Upgrading to v0.5.0 The webclient has been split out into a separate repository/package in this release. Before you restart your homeserver you will need to pull in the webclient package by running: python setup.py develop --user This release completely changes the database schema and so requires upgrading it before starting the new version of the homeserver. The script "database-prepare-for-0.5.0.sh" should be used to upgrade the database. This will save all user information, such as logins and profiles, but will otherwise purge the database. This includes messages, which rooms the home server was a member of and room alias mappings. If you would like to keep your history, please take a copy of your database file and ask for help in #matrix:matrix.org. The upgrade process is, unfortunately, non trivial and requires human intervention to resolve any resulting conflicts during the upgrade process. Before running the command the homeserver should be first completely shutdown. To run it, simply specify the location of the database, e.g.: > ./scripts/database-prepare-for-0.5.0.sh "homeserver.db" Once this has successfully completed it will be safe to restart the homeserver. You may notice that the homeserver takes a few seconds longer to restart than usual as it reinitializes the database. On startup of the new version, users can either rejoin remote rooms using room aliases or by being reinvited. Alternatively, if any other homeserver sends a message to a room that the homeserver was previously in the local HS will automatically rejoin the room. # Upgrading to v0.4.0 This release needs an updated syutil version. Run: python setup.py develop You will also need to upgrade your configuration as the signing key format has changed. Run: python -m synapse.app.homeserver --config-path --generate-config # Upgrading to v0.3.0 This registration API now closely matches the login API. This introduces a bit more backwards and forwards between the HS and the client, but this improves the overall flexibility of the API. You can now GET on /register to retrieve a list of valid registration flows. Upon choosing one, they are submitted in the same way as login, e.g: { type: m.login.password, user: foo, password: bar } The default HS supports 2 flows, with and without Identity Server email authentication. Enabling captcha on the HS will add in an extra step to all flows: `m.login.recaptcha` which must be completed before you can transition to the next stage. There is a new login type: `m.login.email.identity` which contains the `threepidCreds` key which were previously sent in the original register request. For more information on this, see the specification. ## Web Client The VoIP specification has changed between v0.2.0 and v0.3.0. Users should refresh any browser tabs to get the latest web client code. Users on v0.2.0 of the web client will not be able to call those on v0.3.0 and vice versa. # Upgrading to v0.2.0 The home server now requires setting up of SSL config before it can run. To automatically generate default config use: $ python synapse/app/homeserver.py \ --server-name machine.my.domain.name \ --bind-port 8448 \ --config-path homeserver.config \ --generate-config This config can be edited if desired, for example to specify a different SSL certificate to use. Once done you can run the home server using: $ python synapse/app/homeserver.py --config-path homeserver.config See the README.rst for more information. Also note that some config options have been renamed, including: - "host" to "server-name" - "database" to "database-path" - "port" to "bind-port" and "unsecure-port" # Upgrading to v0.0.1 This release completely changes the database schema and so requires upgrading it before starting the new version of the homeserver. The script "database-prepare-for-0.0.1.sh" should be used to upgrade the database. This will save all user information, such as logins and profiles, but will otherwise purge the database. This includes messages, which rooms the home server was a member of and room alias mappings. Before running the command the homeserver should be first completely shutdown. To run it, simply specify the location of the database, e.g.: > ./scripts/database-prepare-for-0.0.1.sh "homeserver.db" Once this has successfully completed it will be safe to restart the homeserver. You may notice that the homeserver takes a few seconds longer to restart than usual as it reinitializes the database. On startup of the new version, users can either rejoin remote rooms using room aliases or by being reinvited. Alternatively, if any other homeserver sends a message to a room that the homeserver was previously in the local HS will automatically rejoin the room. synapse-1.100.0/docs/usage/000077500000000000000000000000001455622526000153765ustar00rootroot00000000000000synapse-1.100.0/docs/usage/administration/000077500000000000000000000000001455622526000204235ustar00rootroot00000000000000synapse-1.100.0/docs/usage/administration/README.md000066400000000000000000000004261455622526000217040ustar00rootroot00000000000000# Administration This section contains information on managing your Synapse homeserver. This includes: * Managing users, rooms and media via the Admin API. * Setting up metrics and monitoring to give you insight into your homeserver's health. * Configuring structured logging.synapse-1.100.0/docs/usage/administration/admin_api/000077500000000000000000000000001455622526000223445ustar00rootroot00000000000000synapse-1.100.0/docs/usage/administration/admin_api/README.md000066400000000000000000000046011455622526000236240ustar00rootroot00000000000000# The Admin API ## Authenticate as a server admin Many of the API calls in the admin api will require an `access_token` for a server admin. (Note that a server admin is distinct from a room admin.) An existing user can be marked as a server admin by updating the database directly. Check your [database settings](../../configuration/config_documentation.md#database) in the configuration file, connect to the correct database using either `psql [database name]` (if using PostgreSQL) or `sqlite3 path/to/your/database.db` (if using SQLite) and elevate the user `@foo:bar.com` to administrator. ```sql UPDATE users SET admin = 1 WHERE name = '@foo:bar.com'; ``` A new server admin user can also be created using the `register_new_matrix_user` command. This is a script that is distributed as part of synapse. It is possibly already on your `$PATH` depending on how Synapse was installed. Finding your user's `access_token` is client-dependent, but will usually be shown in the client's settings. ## Making an Admin API request For security reasons, we [recommend](../../../reverse_proxy.md#synapse-administration-endpoints) that the Admin API (`/_synapse/admin/...`) should be hidden from public view using a reverse proxy. This means you should typically query the Admin API from a terminal on the machine which runs Synapse. Once you have your `access_token`, you will need to authenticate each request to an Admin API endpoint by providing the token as either a query parameter or a request header. To add it as a request header in cURL: ```sh curl --header "Authorization: Bearer " ``` For example, suppose we want to [query the account](../../../admin_api/user_admin_api.md#query-user-account) of the user `@foo:bar.com`. We need an admin access token (e.g. `syt_AjfVef2_L33JNpafeif_0feKJfeaf0CQpoZk`), and we need to know which port Synapse's [`client` listener](../../configuration/config_documentation.md#listeners) is listening on (e.g. `8008`). Then we can use the following command to request the account information from the Admin API. ```sh curl --header "Authorization: Bearer syt_AjfVef2_L33JNpafeif_0feKJfeaf0CQpoZk" -X GET http://127.0.0.1:8008/_synapse/admin/v2/users/@foo:bar.com ``` For more details on access tokens in Matrix, please refer to the complete [matrix spec documentation](https://matrix.org/docs/spec/client_server/r0.6.1#using-access-tokens). synapse-1.100.0/docs/usage/administration/admin_api/background_updates.md000066400000000000000000000046441455622526000265420ustar00rootroot00000000000000# Background Updates API This API allows a server administrator to manage the background updates being run against the database. ## Status This API gets the current status of the background updates. The API is: ``` GET /_synapse/admin/v1/background_updates/status ``` Returning: ```json { "enabled": true, "current_updates": { "": { "name": "", "total_item_count": 50, "total_duration_ms": 10000.0, "average_items_per_ms": 2.2, }, } } ``` `enabled` whether the background updates are enabled or disabled. `db_name` the database name (usually Synapse is configured with a single database named 'master'). For each update: `name` the name of the update. `total_item_count` total number of "items" processed (the meaning of 'items' depends on the update in question). `total_duration_ms` how long the background process has been running, not including time spent sleeping. `average_items_per_ms` how many items are processed per millisecond based on an exponential average. ## Enabled This API allow pausing background updates. Background updates should *not* be paused for significant periods of time, as this can affect the performance of Synapse. *Note*: This won't persist over restarts. *Note*: This won't cancel any update query that is currently running. This is usually fine since most queries are short lived, except for `CREATE INDEX` background updates which won't be cancelled once started. The API is: ``` POST /_synapse/admin/v1/background_updates/enabled ``` with the following body: ```json { "enabled": false } ``` `enabled` sets whether the background updates are enabled or disabled. The API returns the `enabled` param. ```json { "enabled": false } ``` There is also a `GET` version which returns the `enabled` state. ## Run This API schedules a specific background update to run. The job starts immediately after calling the API. The API is: ``` POST /_synapse/admin/v1/background_updates/start_job ``` with the following body: ```json { "job_name": "populate_stats_process_rooms" } ``` The following JSON body parameters are available: - `job_name` - A string which job to run. Valid values are: - `populate_stats_process_rooms` - Recalculate the stats for all rooms. - `regenerate_directory` - Recalculate the [user directory](../../../user_directory.md) if it is stale or out of sync. synapse-1.100.0/docs/usage/administration/admin_api/federation.md000066400000000000000000000157671455622526000250260ustar00rootroot00000000000000# Federation API This API allows a server administrator to manage Synapse's federation with other homeservers. Note: This API is new, experimental and "subject to change". ## List of destinations This API gets the current destination retry timing info for all remote servers. The list contains all the servers with which the server federates, regardless of whether an error occurred or not. If an error occurs, it may take up to 20 minutes for the error to be displayed here, as a complete retry must have failed. The API is: A standard request with no filtering: ``` GET /_synapse/admin/v1/federation/destinations ``` A response body like the following is returned: ```json { "destinations":[ { "destination": "matrix.org", "retry_last_ts": 1557332397936, "retry_interval": 3000000, "failure_ts": 1557329397936, "last_successful_stream_ordering": null } ], "total": 1 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more destinations to paginate through. **Parameters** The following query parameters are available: - `from` - Offset in the returned list. Defaults to `0`. - `limit` - Maximum amount of destinations to return. Defaults to `100`. - `order_by` - The method in which to sort the returned list of destinations. Valid values are: - `destination` - Destinations are ordered alphabetically by remote server name. This is the default. - `retry_last_ts` - Destinations are ordered by time of last retry attempt in ms. - `retry_interval` - Destinations are ordered by how long until next retry in ms. - `failure_ts` - Destinations are ordered by when the server started failing in ms. - `last_successful_stream_ordering` - Destinations are ordered by the stream ordering of the most recent successfully-sent PDU. - `dir` - Direction of room order. Either `f` for forwards or `b` for backwards. Setting this value to `b` will reverse the above sort order. Defaults to `f`. *Caution:* The database only has an index on the column `destination`. This means that if a different sort order is used, this can cause a large load on the database, especially for large environments. **Response** The following fields are returned in the JSON response body: - `destinations` - An array of objects, each containing information about a destination. Destination objects contain the following fields: - `destination` - string - Name of the remote server to federate. - `retry_last_ts` - integer - The last time Synapse tried and failed to reach the remote server, in ms. This is `0` if the last attempt to communicate with the remote server was successful. - `retry_interval` - integer - How long since the last time Synapse tried to reach the remote server before trying again, in ms. This is `0` if no further retrying occurring. - `failure_ts` - nullable integer - The first time Synapse tried and failed to reach the remote server, in ms. This is `null` if communication with the remote server has never failed. - `last_successful_stream_ordering` - nullable integer - The stream ordering of the most recent successfully-sent [PDU](../understanding_synapse_through_grafana_graphs.md#federation) to this destination, or `null` if this information has not been tracked yet. - `next_token`: string representing a positive integer - Indication for pagination. See above. - `total` - integer - Total number of destinations. ## Destination Details API This API gets the retry timing info for a specific remote server. The API is: ``` GET /_synapse/admin/v1/federation/destinations/ ``` A response body like the following is returned: ```json { "destination": "matrix.org", "retry_last_ts": 1557332397936, "retry_interval": 3000000, "failure_ts": 1557329397936, "last_successful_stream_ordering": null } ``` **Parameters** The following parameters should be set in the URL: - `destination` - Name of the remote server. **Response** The response fields are the same like in the `destinations` array in [List of destinations](#list-of-destinations) response. ## Destination rooms This API gets the rooms that federate with a specific remote server. The API is: ``` GET /_synapse/admin/v1/federation/destinations//rooms ``` A response body like the following is returned: ```json { "rooms":[ { "room_id": "!OGEhHVWSdvArJzumhm:matrix.org", "stream_ordering": 8326 }, { "room_id": "!xYvNcQPhnkrdUmYczI:matrix.org", "stream_ordering": 93534 } ], "total": 2 } ``` To paginate, check for `next_token` and if present, call the endpoint again with `from` set to the value of `next_token`. This will return a new page. If the endpoint does not return a `next_token` then there are no more destinations to paginate through. **Parameters** The following parameters should be set in the URL: - `destination` - Name of the remote server. The following query parameters are available: - `from` - Offset in the returned list. Defaults to `0`. - `limit` - Maximum amount of destinations to return. Defaults to `100`. - `dir` - Direction of room order by `room_id`. Either `f` for forwards or `b` for backwards. Defaults to `f`. **Response** The following fields are returned in the JSON response body: - `rooms` - An array of objects, each containing information about a room. Room objects contain the following fields: - `room_id` - string - The ID of the room. - `stream_ordering` - integer - The stream ordering of the most recent successfully-sent [PDU](../understanding_synapse_through_grafana_graphs.md#federation) to this destination in this room. - `next_token`: string representing a positive integer - Indication for pagination. See above. - `total` - integer - Total number of destinations. ## Reset connection timeout Synapse makes federation requests to other homeservers. If a federation request fails, Synapse will mark the destination homeserver as offline, preventing any future requests to that server for a "cooldown" period. This period grows over time if the server continues to fail its responses ([exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff)). Admins can cancel the cooldown period with this API. This API resets the retry timing for a specific remote server and tries to connect to the remote server again. It does not wait for the next `retry_interval`. The connection must have previously run into an error and `retry_last_ts` ([Destination Details API](#destination-details-api)) must not be equal to `0`. The connection attempt is carried out in the background and can take a while even if the API already returns the http status 200. The API is: ``` POST /_synapse/admin/v1/federation/destinations//reset_connection {} ``` **Parameters** The following parameters should be set in the URL: - `destination` - Name of the remote server. synapse-1.100.0/docs/usage/administration/admin_api/registration_tokens.md000066400000000000000000000164221455622526000267700ustar00rootroot00000000000000# Registration Tokens **Note:** This API is disabled when MSC3861 is enabled. [See #15582](https://github.com/matrix-org/synapse/pull/15582) This API allows you to manage tokens which can be used to authenticate registration requests, as proposed in [MSC3231](https://github.com/matrix-org/matrix-doc/blob/main/proposals/3231-token-authenticated-registration.md) and stabilised in version 1.2 of the Matrix specification. To use it, you will need to enable the `registration_requires_token` config option, and authenticate by providing an `access_token` for a server admin: see [Admin API](../admin_api/). ## Registration token objects Most endpoints make use of JSON objects that contain details about tokens. These objects have the following fields: - `token`: The token which can be used to authenticate registration. - `uses_allowed`: The number of times the token can be used to complete a registration before it becomes invalid. - `pending`: The number of pending uses the token has. When someone uses the token to authenticate themselves, the pending counter is incremented so that the token is not used more than the permitted number of times. When the person completes registration the pending counter is decremented, and the completed counter is incremented. - `completed`: The number of times the token has been used to successfully complete a registration. - `expiry_time`: The latest time the token is valid. Given as the number of milliseconds since 1970-01-01 00:00:00 UTC (the start of the Unix epoch). To convert this into a human-readable form you can remove the milliseconds and use the `date` command. For example, `date -d '@1625394937'`. ## List all tokens Lists all tokens and details about them. If the request is successful, the top level JSON object will have a `registration_tokens` key which is an array of registration token objects. ``` GET /_synapse/admin/v1/registration_tokens ``` Optional query parameters: - `valid`: `true` or `false`. If `true`, only valid tokens are returned. If `false`, only tokens that have expired or have had all uses exhausted are returned. If omitted, all tokens are returned regardless of validity. Example: ``` GET /_synapse/admin/v1/registration_tokens ``` ``` 200 OK { "registration_tokens": [ { "token": "abcd", "uses_allowed": 3, "pending": 0, "completed": 1, "expiry_time": null }, { "token": "pqrs", "uses_allowed": 2, "pending": 1, "completed": 1, "expiry_time": null }, { "token": "wxyz", "uses_allowed": null, "pending": 0, "completed": 9, "expiry_time": 1625394937000 // 2021-07-04 10:35:37 UTC } ] } ``` Example using the `valid` query parameter: ``` GET /_synapse/admin/v1/registration_tokens?valid=false ``` ``` 200 OK { "registration_tokens": [ { "token": "pqrs", "uses_allowed": 2, "pending": 1, "completed": 1, "expiry_time": null }, { "token": "wxyz", "uses_allowed": null, "pending": 0, "completed": 9, "expiry_time": 1625394937000 // 2021-07-04 10:35:37 UTC } ] } ``` ## Get one token Get details about a single token. If the request is successful, the response body will be a registration token object. ``` GET /_synapse/admin/v1/registration_tokens/ ``` Path parameters: - `token`: The registration token to return details of. Example: ``` GET /_synapse/admin/v1/registration_tokens/abcd ``` ``` 200 OK { "token": "abcd", "uses_allowed": 3, "pending": 0, "completed": 1, "expiry_time": null } ``` ## Create token Create a new registration token. If the request is successful, the newly created token will be returned as a registration token object in the response body. ``` POST /_synapse/admin/v1/registration_tokens/new ``` The request body must be a JSON object and can contain the following fields: - `token`: The registration token. A string of no more than 64 characters that consists only of characters matched by the regex `[A-Za-z0-9._~-]`. Default: randomly generated. - `uses_allowed`: The integer number of times the token can be used to complete a registration before it becomes invalid. Default: `null` (unlimited uses). - `expiry_time`: The latest time the token is valid. Given as the number of milliseconds since 1970-01-01 00:00:00 UTC (the start of the Unix epoch). You could use, for example, `date '+%s000' -d 'tomorrow'`. Default: `null` (token does not expire). - `length`: The length of the token randomly generated if `token` is not specified. Must be between 1 and 64 inclusive. Default: `16`. If a field is omitted the default is used. Example using defaults: ``` POST /_synapse/admin/v1/registration_tokens/new {} ``` ``` 200 OK { "token": "0M-9jbkf2t_Tgiw1", "uses_allowed": null, "pending": 0, "completed": 0, "expiry_time": null } ``` Example specifying some fields: ``` POST /_synapse/admin/v1/registration_tokens/new { "token": "defg", "uses_allowed": 1 } ``` ``` 200 OK { "token": "defg", "uses_allowed": 1, "pending": 0, "completed": 0, "expiry_time": null } ``` ## Update token Update the number of allowed uses or expiry time of a token. If the request is successful, the updated token will be returned as a registration token object in the response body. ``` PUT /_synapse/admin/v1/registration_tokens/ ``` Path parameters: - `token`: The registration token to update. The request body must be a JSON object and can contain the following fields: - `uses_allowed`: The integer number of times the token can be used to complete a registration before it becomes invalid. By setting `uses_allowed` to `0` the token can be easily made invalid without deleting it. If `null` the token will have an unlimited number of uses. - `expiry_time`: The latest time the token is valid. Given as the number of milliseconds since 1970-01-01 00:00:00 UTC (the start of the Unix epoch). If `null` the token will not expire. If a field is omitted its value is not modified. Example: ``` PUT /_synapse/admin/v1/registration_tokens/defg { "expiry_time": 4781243146000 // 2121-07-06 11:05:46 UTC } ``` ``` 200 OK { "token": "defg", "uses_allowed": 1, "pending": 0, "completed": 0, "expiry_time": 4781243146000 } ``` ## Delete token Delete a registration token. If the request is successful, the response body will be an empty JSON object. ``` DELETE /_synapse/admin/v1/registration_tokens/ ``` Path parameters: - `token`: The registration token to delete. Example: ``` DELETE /_synapse/admin/v1/registration_tokens/wxyz ``` ``` 200 OK {} ``` ## Errors If a request fails a "standard error response" will be returned as defined in the [Matrix Client-Server API specification](https://matrix.org/docs/spec/client_server/r0.6.1#api-standards). For example, if the token specified in a path parameter does not exist a `404 Not Found` error will be returned. ``` GET /_synapse/admin/v1/registration_tokens/1234 ``` ``` 404 Not Found { "errcode": "M_NOT_FOUND", "error": "No such registration token: 1234" } ``` synapse-1.100.0/docs/usage/administration/admin_faq.md000066400000000000000000000270411455622526000226700ustar00rootroot00000000000000## Admin FAQ How do I become a server admin? --- If your server already has an admin account you should use the [User Admin API](../../admin_api/user_admin_api.md#change-whether-a-user-is-a-server-administrator-or-not) to promote other accounts to become admins. If you don't have any admin accounts yet you won't be able to use the admin API, so you'll have to edit the database manually. Manually editing the database is generally not recommended so once you have an admin account: use the admin APIs to make further changes. ```sql UPDATE users SET admin = 1 WHERE name = '@foo:bar.com'; ``` What servers are my server talking to? --- Run this sql query on your db: ```sql SELECT * FROM destinations; ``` What servers are currently participating in this room? --- Run this sql query on your db: ```sql SELECT DISTINCT split_part(state_key, ':', 2) FROM current_state_events WHERE room_id = '!cURbafjkfsMDVwdRDQ:matrix.org' AND membership = 'join'; ``` What users are registered on my server? --- ```sql SELECT NAME from users; ``` How can I export user data? --- Synapse includes a Python command to export data for a specific user. It takes the homeserver configuration file and the full Matrix ID of the user to export: ```console python -m synapse.app.admin_cmd -c export-data --output-directory ``` If you uses [Poetry](../../development/dependencies.md#managing-dependencies-with-poetry) to run Synapse: ```console poetry run python -m synapse.app.admin_cmd -c export-data --output-directory ``` The directory to store the export data in can be customised with the `--output-directory` parameter; ensure that the provided directory is empty. If this parameter is not provided, Synapse defaults to creating a temporary directory (which starts with "synapse-exfiltrate") in `/tmp`, `/var/tmp`, or `/usr/tmp`, in that order. The exported data has the following layout: ``` output-directory ├───rooms │ └─── │ ├───events │ ├───state │ ├───invite_state │ └───knock_state ├───user_data │ ├───account_data │ │ ├───global │ │ └─── │ ├───connections │ ├───devices │ └───profile └───media_ids └─── ``` The `media_ids` folder contains only the metadata of the media uploaded by the user. It does not contain the media itself. Furthermore, only the `media_ids` that Synapse manages itself are exported. If another media repository (e.g. [matrix-media-repo](https://github.com/turt2live/matrix-media-repo)) is used, the data must be exported separately. With the `media_ids` the media files can be downloaded. Media that have been sent in encrypted rooms are only retrieved in encrypted form. The following script can help with download the media files: ```bash #!/usr/bin/env bash # Parameters # # source_directory: Directory which contains the export with the media_ids. # target_directory: Directory into which all files are to be downloaded. # repository_url: Address of the media repository resp. media worker. # serverName: Name of the server (`server_name` from homeserver.yaml). # # Example: # ./download_media.sh /tmp/export_data/media_ids/ /tmp/export_data/media_files/ http://localhost:8008 matrix.example.com source_directory=$1 target_directory=$2 repository_url=$3 serverName=$4 mkdir -p $target_directory for file in $source_directory/*; do filename=$(basename ${file}) url=$repository_url/_matrix/media/v3/download/$serverName/$filename echo "Downloading $filename - $url" if ! wget -o /dev/null -P $target_directory $url; then echo "Could not download $filename" fi done ``` Manually resetting passwords --- Users can reset their password through their client. Alternatively, a server admin can reset a user's password using the [admin API](../../admin_api/user_admin_api.md#reset-password). I have a problem with my server. Can I just delete my database and start again? --- Deleting your database is unlikely to make anything better. It's easy to make the mistake of thinking that you can start again from a clean slate by dropping your database, but things don't work like that in a federated network: lots of other servers have information about your server. For example: other servers might think that you are in a room, your server will think that you are not, and you'll probably be unable to interact with that room in a sensible way ever again. In general, there are better solutions to any problem than dropping the database. Come and seek help in https://matrix.to/#/#synapse:matrix.org. There are two exceptions when it might be sensible to delete your database and start again: * You have *never* joined any rooms which are federated with other servers. For instance, a local deployment which the outside world can't talk to. * You are changing the `server_name` in the homeserver configuration. In effect this makes your server a completely new one from the point of view of the network, so in this case it makes sense to start with a clean database. (In both cases you probably also want to clear out the media_store.) I've stuffed up access to my room, how can I delete it to free up the alias? --- Using the following curl command: ```console curl -H 'Authorization: Bearer ' -X DELETE https://matrix.org/_matrix/client/r0/directory/room/ ``` `` - can be obtained in riot by looking in the riot settings, down the bottom is: Access Token:\ `` - the room alias, eg. #my_room:matrix.org this possibly needs to be URL encoded also, for example %23my_room%3Amatrix.org How can I find the lines corresponding to a given HTTP request in my homeserver log? --- Synapse tags each log line according to the HTTP request it is processing. When it finishes processing each request, it logs a line containing the words `Processed request: `. For example: ``` 2019-02-14 22:35:08,196 - synapse.access.http.8008 - 302 - INFO - GET-37 - ::1 - 8008 - {@richvdh:localhost} Processed request: 0.173sec/0.001sec (0.002sec, 0.000sec) (0.027sec/0.026sec/2) 687B 200 "GET /_matrix/client/r0/sync HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" [0 dbevts]" ``` Here we can see that the request has been tagged with `GET-37`. (The tag depends on the method of the HTTP request, so might start with `GET-`, `PUT-`, `POST-`, `OPTIONS-` or `DELETE-`.) So to find all lines corresponding to this request, we can do: ```console grep 'GET-37' homeserver.log ``` If you want to paste that output into a github issue or matrix room, please remember to surround it with triple-backticks (```) to make it legible (see [quoting code](https://help.github.com/en/articles/basic-writing-and-formatting-syntax#quoting-code)). What do all those fields in the 'Processed' line mean? --- See [Request log format](request_log.md). What are the biggest rooms on my server? --- ```sql SELECT s.canonical_alias, g.room_id, count(*) AS num_rows FROM state_groups_state AS g, room_stats_state AS s WHERE g.room_id = s.room_id GROUP BY s.canonical_alias, g.room_id ORDER BY num_rows desc LIMIT 10; ``` You can also use the [List Room API](../../admin_api/rooms.md#list-room-api) and `order_by` `state_events`. People can't accept room invitations from me --- The typical failure mode here is that you send an invitation to someone to join a room or direct chat, but when they go to accept it, they get an error (typically along the lines of "Invalid signature"). They might see something like the following in their logs: 2019-09-11 19:32:04,271 - synapse.federation.transport.server - 288 - WARNING - GET-11752 - authenticate_request failed: 401: Invalid signature for server with key ed25519:a_EqML: Unable to verify signature for This is normally caused by a misconfiguration in your reverse-proxy. See [the reverse proxy docs](../../reverse_proxy.md) and double-check that your settings are correct. Help!! Synapse is slow and eats all my RAM/CPU! --- First, ensure you are running the latest version of Synapse, using Python 3 with a [PostgreSQL database](../../postgres.md). Synapse's architecture is quite RAM hungry currently - we deliberately cache a lot of recent room data and metadata in RAM in order to speed up common requests. We'll improve this in the future, but for now the easiest way to either reduce the RAM usage (at the risk of slowing things down) is to set the almost-undocumented ``SYNAPSE_CACHE_FACTOR`` environment variable. The default is 0.5, which can be decreased to reduce RAM usage in memory constrained environments, or increased if performance starts to degrade. However, degraded performance due to a low cache factor, common on machines with slow disks, often leads to explosions in memory use due backlogged requests. In this case, reducing the cache factor will make things worse. Instead, try increasing it drastically. 2.0 is a good starting value. Using [libjemalloc](https://jemalloc.net) can also yield a significant improvement in overall memory use, and especially in terms of giving back RAM to the OS. To use it, the library must simply be put in the LD_PRELOAD environment variable when launching Synapse. On Debian, this can be done by installing the `libjemalloc1` package and adding this line to `/etc/default/matrix-synapse`: LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 This made a significant difference on Python 2.7 - it's unclear how much of an improvement it provides on Python 3.x. If you're encountering high CPU use by the Synapse process itself, you may be affected by a bug with presence tracking that leads to a massive excess of outgoing federation requests (see [discussion](https://github.com/matrix-org/synapse/issues/3971)). If metrics indicate that your server is also issuing far more outgoing federation requests than can be accounted for by your users' activity, this is a likely cause. The misbehavior can be worked around by disabling presence in the Synapse config file: [see here](../configuration/config_documentation.md#presence). Running out of File Handles --- If Synapse runs out of file handles, it typically fails badly - live-locking at 100% CPU, and/or failing to accept new TCP connections (blocking the connecting client). Matrix currently can legitimately use a lot of file handles, thanks to busy rooms like `#matrix:matrix.org` containing hundreds of participating servers. The first time a server talks in a room it will try to connect simultaneously to all participating servers, which could exhaust the available file descriptors between DNS queries & HTTPS sockets, especially if DNS is slow to respond. (We need to improve the routing algorithm used to be better than full mesh, but as of March 2019 this hasn't happened yet). If you hit this failure mode, we recommend increasing the maximum number of open file handles to be at least 4096 (assuming a default of 1024 or 256). This is typically done by editing ``/etc/security/limits.conf`` Separately, Synapse may leak file handles if inbound HTTP requests get stuck during processing - e.g. blocked behind a lock or talking to a remote server etc. This is best diagnosed by matching up the 'Received request' and 'Processed request' log lines and looking for any 'Processed request' lines which take more than a few seconds to execute. Please let us know at [`#synapse:matrix.org`](https://matrix.to/#/#synapse-dev:matrix.org) if you see this failure mode so we can help debug it, however. synapse-1.100.0/docs/usage/administration/database_maintenance_tools.md000066400000000000000000000022351455622526000262750ustar00rootroot00000000000000_This [blog post by Jackson Chen](https://jacksonchen666.com/posts/2022-12-03/14-33-00/) (Dec 2022) explains how to use many of the tools listed on this page. There is also an [earlier blog by Victor Berger](https://levans.fr/shrink-synapse-database.html) (June 2020), though this may be outdated in places._ # List of useful tools and scripts for maintenance Synapse database: ## [Purge Remote Media API](../../admin_api/media_admin_api.md#purge-remote-media-api) The purge remote media API allows server admins to purge old cached remote media. ## [Purge Local Media API](../../admin_api/media_admin_api.md#delete-local-media) This API deletes the *local* media from the disk of your own server. ## [Purge History API](../../admin_api/purge_history_api.md) The purge history API allows server admins to purge historic events from their database, reclaiming disk space. ## [synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state) Tool for compressing (deduplicating) `state_groups_state` table. ## [SQL for analyzing Synapse PostgreSQL database stats](useful_sql_for_admins.md) Some easy SQL that reports useful stats about your Synapse database. synapse-1.100.0/docs/usage/administration/monitoring/000077500000000000000000000000001455622526000226105ustar00rootroot00000000000000synapse-1.100.0/docs/usage/administration/monitoring/reporting_homeserver_usage_statistics.md000066400000000000000000000317521455622526000330500ustar00rootroot00000000000000# Reporting Homeserver Usage Statistics When generating your Synapse configuration file, you are asked whether you would like to report usage statistics to Matrix.org. These statistics provide the foundation a glimpse into the number of Synapse homeservers participating in the network, as well as statistics such as the number of rooms being created and messages being sent. This feature is sometimes affectionately called "phone home" stats. Reporting [is optional](../../configuration/config_documentation.md#report_stats) and the reporting endpoint [can be configured](../../configuration/config_documentation.md#report_stats_endpoint), in case you would like to instead report statistics from a set of homeservers to your own infrastructure. This documentation aims to define the statistics available and the homeserver configuration options that exist to tweak it. ## Available Statistics The following statistics are sent to the configured reporting endpoint: | Statistic Name | Type | Description | |----------------------------|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `homeserver` | string | The homeserver's server name. | | `memory_rss` | int | The memory usage of the process (in kilobytes on Unix-based systems, bytes on MacOS). | | `cpu_average` | int | CPU time in % of a single core (not % of all cores). | | `server_context` | string | An arbitrary string used to group statistics from a set of homeservers. | | `timestamp` | int | The current time, represented as the number of seconds since the epoch. | | `uptime_seconds` | int | The number of seconds since the homeserver was last started. | | `python_version` | string | The Python version number in use (e.g "3.7.1"). Taken from `sys.version_info`. | | `total_users` | int | The number of registered users on the homeserver. | | `total_nonbridged_users` | int | The number of users, excluding those created by an Application Service. | | `daily_user_type_native` | int | The number of native users created in the last 24 hours. | | `daily_user_type_guest` | int | The number of guest users created in the last 24 hours. | | `daily_user_type_bridged` | int | The number of users created by Application Services in the last 24 hours. | | `total_room_count` | int | The total number of rooms present on the homeserver. | | `daily_active_users` | int | The number of unique users[^1] that have used the homeserver in the last 24 hours. | | `monthly_active_users` | int | The number of unique users[^1] that have used the homeserver in the last 30 days. | | `daily_active_rooms` | int | The number of rooms that have had a (state) event with the type `m.room.message` sent in them in the last 24 hours. | | `daily_active_e2ee_rooms` | int | The number of rooms that have had a (state) event with the type `m.room.encrypted` sent in them in the last 24 hours. | | `daily_messages` | int | The number of (state) events with the type `m.room.message` seen in the last 24 hours. | | `daily_e2ee_messages` | int | The number of (state) events with the type `m.room.encrypted` seen in the last 24 hours. | | `daily_sent_messages` | int | The number of (state) events sent by a local user with the type `m.room.message` seen in the last 24 hours. | | `daily_sent_e2ee_messages` | int | The number of (state) events sent by a local user with the type `m.room.encrypted` seen in the last 24 hours. | | `r30v2_users_all` | int | The number of 30 day retained users, with a revised algorithm. Defined as users that appear more than once in the past 60 days, and have more than 30 days between the most and least recent appearances in the past 60 days. Includes clients that do not fit into the below r30 client types. | | `r30v2_users_android` | int | The number of 30 day retained users, as defined above. Filtered only to clients with ("riot" or "element") and "android" (case-insensitive) in the user agent string. | | `r30v2_users_ios` | int | The number of 30 day retained users, as defined above. Filtered only to clients with ("riot" or "element") and "ios" (case-insensitive) in the user agent string. | | `r30v2_users_electron` | int | The number of 30 day retained users, as defined above. Filtered only to clients with ("riot" or "element") and "electron" (case-insensitive) in the user agent string. | | `r30v2_users_web` | int | The number of 30 day retained users, as defined above. Filtered only to clients with "mozilla" or "gecko" (case-insensitive) in the user agent string. | | `cache_factor` | int | The configured [`global factor`](../../configuration/config_documentation.md#caching) value for caching. | | `event_cache_size` | int | The configured [`event_cache_size`](../../configuration/config_documentation.md#caching) value for caching. | | `database_engine` | string | The database engine that is in use. Either "psycopg2" meaning PostgreSQL is in use, or "sqlite3" for SQLite3. | | `database_server_version` | string | The version of the database server. Examples being "10.10" for PostgreSQL server version 10.0, and "3.38.5" for SQLite 3.38.5 installed on the system. | | `log_level` | string | The log level in use. Examples are "INFO", "WARNING", "ERROR", "DEBUG", etc. | [^1]: Native matrix users and guests are always counted. If the [`track_puppeted_user_ips`](../../configuration/config_documentation.md#track_puppeted_user_ips) option is set to `true`, "puppeted" users (users that an Application Service have performed [an action on behalf of](https://spec.matrix.org/v1.3/application-service-api/#identity-assertion)) will also be counted. Note that an Application Service can "puppet" any user in their [user namespace](https://spec.matrix.org/v1.3/application-service-api/#registration), not only users that the Application Service has created. If this happens, the Application Service will additionally be counted as a user (irrespective of `track_puppeted_user_ips`). ## Using a Custom Statistics Collection Server If statistics reporting is enabled, the endpoint that Synapse sends metrics to is configured by the [`report_stats_endpoint`](../../configuration/config_documentation.md#report_stats_endpoint) config option. By default, statistics are sent to Matrix.org. If you would like to set up your own statistics collection server and send metrics there, you may consider using one of the following known implementations: * [Matrix.org's Panopticon](https://github.com/matrix-org/panopticon) * [Famedly's Barad-dûr](https://gitlab.com/famedly/infra/services/barad-dur) * [Synapse Usage Exporter](https://github.com/loelkes/synapse-usage-exporter) for Prometheus synapse-1.100.0/docs/usage/administration/monthly_active_users.md000066400000000000000000000111021455622526000252060ustar00rootroot00000000000000# Monthly Active Users Synapse can be configured to record the number of monthly active users (also referred to as MAU) on a given homeserver. For clarity's sake, MAU only tracks local users. Please note that the metrics recorded by the [Homeserver Usage Stats](../../usage/administration/monitoring/reporting_homeserver_usage_statistics.md) are calculated differently. The `monthly_active_users` from the usage stats does not take into account any of the rules below, and counts any users who have made a request to the homeserver in the last 30 days. See the [configuration manual](../../usage/configuration/config_documentation.md#limit_usage_by_mau) for details on how to configure MAU. ## Calculating active users Individual user activity is measured in active days. If a user performs an action, the exact time of that action is then recorded. When calculating the MAU figure, any users with a recorded action in the last 30 days are considered part of the cohort. Days are measured as a rolling window from the current system time to 30 days ago. So for example, if Synapse were to calculate the active users on the 15th July at 13:25, it would include any activity from 15th June 13:25 onwards. A user is **never** considered active if they are either: - Part of the trial day cohort (described below) - Owned by an application service. - Note: This **only** covers users that are part of an application service `namespaces.users` registration. The namespace must also be marked as `exclusive`. Otherwise, any request to Synapse will mark the user as active. Please note that registration will not mark a user as active *unless* they register with a 3pid that is included in the config field `mau_limits_reserved_threepids`. The Prometheus metric for MAU is refreshed every 5 minutes. Once an hour, Synapse checks to see if any users are inactive (with only activity timestamps later than 30 days). These users are removed from the active users cohort. If they then become active, they are immediately restored to the cohort. It is important to note that **deactivated** users are not immediately removed from the pool of active users, but as these users won't perform actions they will eventually be removed from the cohort. ### Trial days If the config option `mau_trial_days` is set, a user must have been active this many days **after** registration to be active. A user is in the trial period if their registration timestamp (also known as the `creation_ts`) is less than `mau_trial_days` old. As an example, if `mau_trial_days` is set to `3` and a user is active **after** 3 days (72 hours from registration time) then they will be counted as active. The `mau_appservice_trial_days` config further extends this rule by applying different durations depending on the `appservice_id` of the user. Users registered by an application service will be recorded with an `appservice_id` matching the `id` key in the registration file for that service. ## Limiting usage of the homeserver when the maximum MAU is reached If both config options `limit_usage_by_mau` and `max_mau_value` is set, and the current MAU value exceeds the maximum value, the homeserver will begin to block some actions. Individual users matching **any** of the below criteria never have their actions blocked: - Considered part of the cohort of MAU users. - Considered part of the trial period. - Registered as a `support` user. - Application service users if `track_appservice_user_ips` is NOT set. Please not that server admins are **not** exempt from blocking. The following actions are blocked when the MAU limit is exceeded: - Logging in - Sending events - Creating rooms - Syncing Registration is also blocked for all new signups *unless* the user is registering with a threepid included in the `mau_limits_reserved_threepids` config value. When a request is blocked, the response will have the `errcode` `M_RESOURCE_LIMIT_EXCEEDED`. ## Metrics Synapse records several different prometheus metrics for MAU. `synapse_admin_mau_current` records the current MAU figure for native (non-application-service) users. `synapse_admin_mau_max` records the maximum MAU as dictated by the `max_mau_value` config value. `synapse_admin_mau_current_mau_by_service` records the current MAU including application service users. The label `app_service` can be used to filter by a specific service ID. This *also* includes non-application-service users under `app_service=native` . `synapse_admin_mau_registered_reserved_users` records the number of users specified in `mau_limits_reserved_threepids` which have registered accounts on the homeserver. synapse-1.100.0/docs/usage/administration/request_log.md000066400000000000000000000062131455622526000233000ustar00rootroot00000000000000# Request log format HTTP request logs are written by synapse (see [`synapse/http/site.py`](https://github.com/element-hq/synapse/tree/develop/synapse/http/site.py) for details). See the following for how to decode the dense data available from the default logging configuration. ``` 2020-10-01 12:00:00,000 - synapse.access.http.8008 - 311 - INFO - PUT-1000- 192.168.0.1 - 8008 - {another-matrix-server.com} Processed request: 0.100sec/-0.000sec (0.000sec, 0.000sec) (0.001sec/0.090sec/3) 11B !200 "PUT /_matrix/federation/v1/send/1600000000000 HTTP/1.1" "Synapse/1.20.1" [0 dbevts] -AAAAAAAAAAAAAAAAAAAAA- -BBBBBBBBBBBBBBBBBBBBBB- -C- -DD- -EEEEEE- -FFFFFFFFF- -GG- -HHHHHHHHHHHHHHHHHHHHHHH- -IIIIII- -JJJJJJJ- -KKKKKK-, -LLLLLL- -MMMMMMM- -NNNNNN- O -P- -QQ- -RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR- -SSSSSSSSSSSS- -TTTTTT- ``` | Part | Explanation | | ----- | ------------ | | AAAA | Timestamp request was logged (not received) | | BBBB | Logger name (`synapse.access.(http\|https).`, where 'tag' is defined in the [`listeners`](../configuration/config_documentation.md#listeners) config section, normally the port) | | CCCC | Line number in code | | DDDD | Log Level | | EEEE | Request Identifier (This identifier is shared by related log lines)| | FFFF | Source IP (Or X-Forwarded-For if enabled) | | GGGG | Server Port | | HHHH | Federated Server or Local User making request (blank if unauthenticated or not supplied).
If this is of the form `@aaa:example.com|@bbb:example.com`, then that means that `@aaa:example.com` is authenticated but they are controlling `@bbb:example.com`, e.g. if `aaa` is controlling `bbb` [via the admin API](https://element-hq.github.io/synapse/latest/admin_api/user_admin_api.html#login-as-a-user). | | IIII | Total Time to process the request | | JJJJ | Time to send response over network once generated (this may be negative if the socket is closed before the response is generated)| | KKKK | Userland CPU time | | LLLL | System CPU time | | MMMM | Total time waiting for a free DB connection from the pool across all parallel DB work from this request | | NNNN | Total time waiting for response to DB queries across all parallel DB work from this request | | OOOO | Count of DB transactions performed | | PPPP | Response body size | | QQQQ | Response status code
Suffixed with `!` if the socket was closed before the response was generated.
A `499!` status code indicates that Synapse also cancelled request processing after the socket was closed.
| | RRRR | Request | | SSSS | User-agent | | TTTT | Events fetched from DB to service this request (note that this does not include events fetched from the cache) | MMMM / NNNN can be greater than IIII if there are multiple slow database queries running in parallel. Some actions can result in multiple identical http requests, which will return the same data, but only the first request will report time/transactions in `KKKK`/`LLLL`/`MMMM`/`NNNN`/`OOOO` - the others will be awaiting the first query to return a response and will simultaneously return with the first request, but with very small processing times. synapse-1.100.0/docs/usage/administration/state_groups.md000066400000000000000000000045371455622526000234750ustar00rootroot00000000000000# How do State Groups work? As a general rule, I encourage people who want to understand the deepest darkest secrets of the database schema to drop by #synapse-dev:matrix.org and ask questions. However, one question that comes up frequently is that of how "state groups" work, and why the `state_groups_state` table gets so big, so here's an attempt to answer that question. We need to be able to relatively quickly calculate the state of a room at any point in that room's history. In other words, we need to know the state of the room at each event in that room. This is done as follows: A sequence of events where the state is the same are grouped together into a `state_group`; the mapping is recorded in `event_to_state_groups`. (Technically speaking, since a state event usually changes the state in the room, we are recording the state of the room *after* the given event id: which is to say, to a handwavey simplification, the first event in a state group is normally a state event, and others in the same state group are normally non-state-events.) `state_groups` records, for each state group, the id of the room that we're looking at, and also the id of the first event in that group. (I'm not sure if that event id is used much in practice.) Now, if we stored all the room state for each `state_group`, that would be a huge amount of data. Instead, for each state group, we normally store the difference between the state in that group and some other state group, and only occasionally (every 100 state changes or so) record the full state. So, most state groups have an entry in `state_group_edges` (don't ask me why it's not a column in `state_groups`) which records the previous state group in the room, and `state_groups_state` records the differences in state since that previous state group. A full state group just records the event id for each piece of state in the room at that point. ## Known bugs with state groups There are various reasons that we can end up creating many more state groups than we need: see https://github.com/matrix-org/synapse/issues/3364 for more details. ## Compression tool There is a tool at https://github.com/matrix-org/rust-synapse-compress-state which can compress the `state_groups_state` on a room by-room basis (essentially, it reduces the number of "full" state groups). This can result in dramatic reductions of the storage used.synapse-1.100.0/docs/usage/administration/understanding_synapse_through_grafana_graphs.md000066400000000000000000000144241455622526000321440ustar00rootroot00000000000000## Understanding Synapse through Grafana graphs It is possible to monitor much of the internal state of Synapse using [Prometheus](https://prometheus.io) metrics and [Grafana](https://grafana.com/). A guide for configuring Synapse to provide metrics is available [here](../../metrics-howto.md) and information on setting up Grafana is [here](https://github.com/element-hq/synapse/tree/master/contrib/grafana). In this setup, Prometheus will periodically scrape the information Synapse provides and store a record of it over time. Grafana is then used as an interface to query and present this information through a series of pretty graphs. Once you have grafana set up, and assuming you're using [our grafana dashboard template](https://github.com/element-hq/synapse/blob/master/contrib/grafana/synapse.json), look for the following graphs when debugging a slow/overloaded Synapse: ## Message Event Send Time ![image](https://user-images.githubusercontent.com/1342360/82239409-a1c8e900-9930-11ea-8081-e4614e0c63f4.png) This, along with the CPU and Memory graphs, is a good way to check the general health of your Synapse instance. It represents how long it takes for a user on your homeserver to send a message. ## Transaction Count and Transaction Duration ![image](https://user-images.githubusercontent.com/1342360/82239985-8d392080-9931-11ea-80d0-843ab2f22e1e.png) ![image](https://user-images.githubusercontent.com/1342360/82240050-ab068580-9931-11ea-98f1-f94671cbac9a.png) These graphs show the database transactions that are occurring the most frequently, as well as those are that are taking the most amount of time to execute. ![image](https://user-images.githubusercontent.com/1342360/82240192-e86b1300-9931-11ea-9aac-3e2c9bfa6fdc.png) In the first graph, we can see obvious spikes corresponding to lots of `get_user_by_id` transactions. This would be useful information to figure out which part of the Synapse codebase is potentially creating a heavy load on the system. However, be sure to cross-reference this with Transaction Duration, which states that `get_users_by_id` is actually a very quick database transaction and isn't causing as much load as others, like `persist_events`: ![image](https://user-images.githubusercontent.com/1342360/82240467-62030100-9932-11ea-8db9-917f2d977fe1.png) Still, it's probably worth investigating why we're getting users from the database that often, and whether it's possible to reduce the amount of queries we make by adjusting our cache factor(s). The `persist_events` transaction is responsible for saving new room events to the Synapse database, so can often show a high transaction duration. ## Federation The charts in the "Federation" section show information about incoming and outgoing federation requests. Federation data can be divided into two basic types: - PDU (Persistent Data Unit) - room events: messages, state events (join/leave), etc. These are permanently stored in the database. - EDU (Ephemeral Data Unit) - other data, which need not be stored permanently, such as read receipts, typing notifications. The "Outgoing EDUs by type" chart shows the EDUs within outgoing federation requests by type: `m.device_list_update`, `m.direct_to_device`, `m.presence`, `m.receipt`, `m.typing`. If you see a large number of `m.presence` EDUs and are having trouble with too much CPU load, you can disable `presence` in the Synapse config. See also [#3971](https://github.com/matrix-org/synapse/issues/3971). ## Caches ![image](https://user-images.githubusercontent.com/1342360/82240572-8b239180-9932-11ea-96ff-6b5f0e57ebe5.png) ![image](https://user-images.githubusercontent.com/1342360/82240666-b8703f80-9932-11ea-86af-9f663988d8da.png) This is quite a useful graph. It shows how many times Synapse attempts to retrieve a piece of data from a cache which the cache did not contain, thus resulting in a call to the database. We can see here that the `_get_joined_profile_from_event_id` cache is being requested a lot, and often the data we're after is not cached. Cross-referencing this with the Eviction Rate graph, which shows that entries are being evicted from `_get_joined_profile_from_event_id` quite often: ![image](https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png) we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available [here](https://github.com/element-hq/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642) (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage. ## Forward Extremities ![image](https://user-images.githubusercontent.com/1342360/82241440-13566680-9934-11ea-8b88-ba468db937ed.png) Forward extremities are the leaf events at the end of a DAG in a room, aka events that have no children. The more that exist in a room, the more [state resolution](https://spec.matrix.org/v1.1/server-server-api/#room-state-resolution) that Synapse needs to perform (hint: it's an expensive operation). While Synapse has code to prevent too many of these existing at one time in a room, bugs can sometimes make them crop up again. If a room has >10 forward extremities, it's worth checking which room is the culprit and potentially removing them using the SQL queries mentioned in [#1760](https://github.com/matrix-org/synapse/issues/1760). ## Garbage Collection ![image](https://user-images.githubusercontent.com/1342360/82241911-da6ac180-9934-11ea-9a0d-a311fe22acd0.png) Large spikes in garbage collection times (bigger than shown here, I'm talking in the multiple seconds range), can cause lots of problems in Synapse performance. It's more an indicator of problems, and a symptom of other problems though, so check other graphs for what might be causing it. ## Final Thoughts If you're still having performance problems with your Synapse instance and you've tried everything you can, it may just be a lack of system resources. Consider adding more CPU and RAM, and make use of [worker mode](../../workers.md) to make use of multiple CPU cores / multiple machines for your homeserver. synapse-1.100.0/docs/usage/administration/useful_sql_for_admins.md000066400000000000000000000140441455622526000253330ustar00rootroot00000000000000## Some useful SQL queries for Synapse Admins ## Size of full matrix db ```sql SELECT pg_size_pretty( pg_database_size( 'matrix' ) ); ``` ### Result example: ``` pg_size_pretty ---------------- 6420 MB (1 row) ``` ## Show top 20 larger tables by row count ```sql SELECT relname, n_live_tup AS "rows" FROM pg_stat_user_tables ORDER BY n_live_tup DESC LIMIT 20; ``` This query is quick, but may be very approximate, for exact number of rows use: ```sql SELECT COUNT(*) FROM ; ``` ### Result example: ``` state_groups_state - 161687170 event_auth - 8584785 event_edges - 6995633 event_json - 6585916 event_reference_hashes - 6580990 events - 6578879 received_transactions - 5713989 event_to_state_groups - 4873377 stream_ordering_to_exterm - 4136285 current_state_delta_stream - 3770972 event_search - 3670521 state_events - 2845082 room_memberships - 2785854 cache_invalidation_stream - 2448218 state_groups - 1255467 state_group_edges - 1229849 current_state_events - 1222905 users_in_public_rooms - 364059 device_lists_stream - 326903 user_directory_search - 316433 ``` ## Show top 20 larger tables by storage size ```sql SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(c.oid)) AS "total_size" FROM pg_class c LEFT JOIN pg_namespace n ON (n.oid = c.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND c.relkind <> 'i' AND nspname !~ '^pg_toast' ORDER BY pg_total_relation_size(c.oid) DESC LIMIT 20; ``` ### Result example: ``` public.state_groups_state - 27 GB public.event_json - 9855 MB public.events - 3675 MB public.event_edges - 3404 MB public.received_transactions - 2745 MB public.event_reference_hashes - 1864 MB public.event_auth - 1775 MB public.stream_ordering_to_exterm - 1663 MB public.event_search - 1370 MB public.room_memberships - 1050 MB public.event_to_state_groups - 948 MB public.current_state_delta_stream - 711 MB public.state_events - 611 MB public.presence_stream - 530 MB public.current_state_events - 525 MB public.cache_invalidation_stream - 466 MB public.receipts_linearized - 279 MB public.state_groups - 160 MB public.device_lists_remote_cache - 124 MB public.state_group_edges - 122 MB ``` ## Show top 20 larger rooms by state events count You get the same information when you use the [admin API](../../admin_api/rooms.md#list-room-api) and set parameter `order_by=state_events`. ```sql SELECT r.name, s.room_id, s.current_state_events FROM room_stats_current s LEFT JOIN room_stats_state r USING (room_id) ORDER BY current_state_events DESC LIMIT 20; ``` and by state_group_events count: ```sql SELECT rss.name, s.room_id, COUNT(s.room_id) FROM state_groups_state s LEFT JOIN room_stats_state rss USING (room_id) GROUP BY s.room_id, rss.name ORDER BY COUNT(s.room_id) DESC LIMIT 20; ``` plus same, but with join removed for performance reasons: ```sql SELECT s.room_id, COUNT(s.room_id) FROM state_groups_state s GROUP BY s.room_id ORDER BY COUNT(s.room_id) DESC LIMIT 20; ``` ## Show top 20 rooms by new events count in last 1 day: ```sql SELECT e.room_id, r.name, COUNT(e.event_id) cnt FROM events e LEFT JOIN room_stats_state r USING (room_id) WHERE e.origin_server_ts >= DATE_PART('epoch', NOW() - INTERVAL '1 day') * 1000 GROUP BY e.room_id, r.name ORDER BY cnt DESC LIMIT 20; ``` ## Show top 20 users on homeserver by sent events (messages) at last month: Caution. This query does not use any indexes, can be slow and create load on the database. ```sql SELECT COUNT(*), sender FROM events WHERE (type = 'm.room.encrypted' OR type = 'm.room.message') AND origin_server_ts >= DATE_PART('epoch', NOW() - INTERVAL '1 month') * 1000 GROUP BY sender ORDER BY COUNT(*) DESC LIMIT 20; ``` ## Show last 100 messages from needed user, with room names: ```sql SELECT e.room_id, r.name, e.event_id, e.type, e.content, j.json FROM events e LEFT JOIN event_json j USING (room_id) LEFT JOIN room_stats_state r USING (room_id) WHERE sender = '@LOGIN:example.com' AND e.type = 'm.room.message' ORDER BY stream_ordering DESC LIMIT 100; ``` ## Show rooms with names, sorted by events in this rooms **Sort and order with bash** ```bash echo "SELECT event_json.room_id, room_stats_state.name FROM event_json, room_stats_state \ WHERE room_stats_state.room_id = event_json.room_id" | psql -d synapse -h localhost -U synapse_user -t \ | sort | uniq -c | sort -n ``` Documentation for `psql` command line parameters: https://www.postgresql.org/docs/current/app-psql.html **Sort and order with SQL** ```sql SELECT COUNT(*), event_json.room_id, room_stats_state.name FROM event_json, room_stats_state WHERE room_stats_state.room_id = event_json.room_id GROUP BY event_json.room_id, room_stats_state.name ORDER BY COUNT(*) DESC LIMIT 50; ``` ### Result example: ``` 9459 !FPUfgzXYWTKgIrwKxW:matrix.org | This Week in Matrix 9459 !FPUfgzXYWTKgIrwKxW:matrix.org | This Week in Matrix (TWIM) 17799 !iDIOImbmXxwNngznsa:matrix.org | Linux in Russian 18739 !GnEEPYXUhoaHbkFBNX:matrix.org | Riot Android 23373 !QtykxKocfZaZOUrTwp:matrix.org | Matrix HQ 39504 !gTQfWzbYncrtNrvEkB:matrix.org | ru.[matrix] 43601 !iNmaIQExDMeqdITdHH:matrix.org | Riot 43601 !iNmaIQExDMeqdITdHH:matrix.org | Riot Web/Desktop ``` ## Lookup room state info by list of room_id You get the same information when you use the [admin API](../../admin_api/rooms.md#room-details-api). ```sql SELECT rss.room_id, rss.name, rss.canonical_alias, rss.topic, rss.encryption, rsc.joined_members, rsc.local_users_in_room, rss.join_rules FROM room_stats_state rss LEFT JOIN room_stats_current rsc USING (room_id) WHERE room_id IN ( '!OGEhHVWSdvArJzumhm:matrix.org', '!YTvKGNlinIzlkMTVRl:matrix.org' ); ``` ## Show users and devices that have not been online for a while ```sql SELECT user_id, device_id, user_agent, TO_TIMESTAMP(last_seen / 1000) AS "last_seen" FROM devices WHERE last_seen < DATE_PART('epoch', NOW() - INTERVAL '3 month') * 1000; ``` synapse-1.100.0/docs/usage/configuration/000077500000000000000000000000001455622526000202455ustar00rootroot00000000000000synapse-1.100.0/docs/usage/configuration/README.md000066400000000000000000000003471455622526000215300ustar00rootroot00000000000000# Configuration This section contains information on tweaking Synapse via the various options in the configuration file. A configuration file should have been generated when you [installed Synapse](../../setup/installation.html). synapse-1.100.0/docs/usage/configuration/config_documentation.md000066400000000000000000004700171455622526000247760ustar00rootroot00000000000000# Configuring Synapse This is intended as a guide to the Synapse configuration. The behavior of a Synapse instance can be modified through the many configuration settings documented here — each config option is explained, including what the default is, how to change the default and what sort of behaviour the setting governs. Also included is an example configuration for each setting. If you don't want to spend a lot of time thinking about options, the config as generated sets sensible defaults for all values. Do note however that the database defaults to SQLite, which is not recommended for production usage. You can read more on this subject [here](../../setup/installation.md#using-postgresql). ## Config Conventions Configuration options that take a time period can be set using a number followed by a letter. Letters have the following meanings: * `s` = second * `m` = minute * `h` = hour * `d` = day * `w` = week * `y` = year For example, setting `redaction_retention_period: 5m` would remove redacted messages from the database after 5 minutes, rather than 5 months. In addition, configuration options referring to size use the following suffixes: * `K` = KiB, or 1024 bytes * `M` = MiB, or 1,048,576 bytes * `G` = GiB, or 1,073,741,824 bytes * `T` = TiB, or 1,099,511,627,776 bytes For example, setting `max_avatar_size: 10M` means that Synapse will not accept files larger than 10,485,760 bytes for a user avatar. ## Config Validation The configuration file can be validated with the following command: ```bash python -m synapse.config read -c ``` To validate the entire file, omit `read `: ```bash python -m synapse.config -c ``` To see how to set other options, check the help reference: ```bash python -m synapse.config --help ``` ### YAML The configuration file is a [YAML](https://yaml.org/) file, which means that certain syntax rules apply if you want your config file to be read properly. A few helpful things to know: * `#` before any option in the config will comment out that setting and either a default (if available) will be applied or Synapse will ignore the setting. Thus, in example #1 below, the setting will be read and applied, but in example #2 the setting will not be read and a default will be applied. Example #1: ```yaml pid_file: DATADIR/homeserver.pid ``` Example #2: ```yaml #pid_file: DATADIR/homeserver.pid ``` * Indentation matters! The indentation before a setting will determine whether a given setting is read as part of another setting, or considered on its own. Thus, in example #1, the `enabled` setting is read as a sub-option of the `presence` setting, and will be properly applied. However, the lack of indentation before the `enabled` setting in example #2 means that when reading the config, Synapse will consider both `presence` and `enabled` as different settings. In this case, `presence` has no value, and thus a default applied, and `enabled` is an option that Synapse doesn't recognize and thus ignores. Example #1: ```yaml presence: enabled: false ``` Example #2: ```yaml presence: enabled: false ``` In this manual, all top-level settings (ones with no indentation) are identified at the beginning of their section (i.e. "### `example_setting`") and the sub-options, if any, are identified and listed in the body of the section. In addition, each setting has an example of its usage, with the proper indentation shown. ## Modules Server admins can expand Synapse's functionality with external modules. See [here](../../modules/index.md) for more documentation on how to configure or create custom modules for Synapse. --- ### `modules` Use the `module` sub-option to add modules under this option to extend functionality. The `module` setting then has a sub-option, `config`, which can be used to define some configuration for the `module`. Defaults to none. Example configuration: ```yaml modules: - module: my_super_module.MySuperClass config: do_thing: true - module: my_other_super_module.SomeClass config: {} ``` --- ## Server Define your homeserver name and other base options. --- ### `server_name` This sets the public-facing domain of the server. The `server_name` name will appear at the end of usernames and room addresses created on your server. For example if the `server_name` was example.com, usernames on your server would be in the format `@user:example.com` In most cases you should avoid using a matrix specific subdomain such as matrix.example.com or synapse.example.com as the `server_name` for the same reasons you wouldn't use user@email.example.com as your email address. See [here](../../delegate.md) for information on how to host Synapse on a subdomain while preserving a clean `server_name`. The `server_name` cannot be changed later so it is important to configure this correctly before you start Synapse. It should be all lowercase and may contain an explicit port. There is no default for this option. Example configuration #1: ```yaml server_name: matrix.org ``` Example configuration #2: ```yaml server_name: localhost:8080 ``` --- ### `pid_file` When running Synapse as a daemon, the file to store the pid in. Defaults to none. Example configuration: ```yaml pid_file: DATADIR/homeserver.pid ``` --- ### `web_client_location` The absolute URL to the web client which `/` will redirect to. Defaults to none. Example configuration: ```yaml web_client_location: https://riot.example.com/ ``` --- ### `public_baseurl` The public-facing base URL that clients use to access this Homeserver (not including _matrix/...). This is the same URL a user might enter into the 'Custom Homeserver URL' field on their client. If you use Synapse with a reverse proxy, this should be the URL to reach Synapse via the proxy. Otherwise, it should be the URL to reach Synapse's client HTTP listener (see ['listeners'](#listeners) below). Defaults to `https:///`. Example configuration: ```yaml public_baseurl: https://example.com/ ``` --- ### `serve_server_wellknown` By default, other servers will try to reach our server on port 8448, which can be inconvenient in some environments. Provided `https:///` on port 443 is routed to Synapse, this option configures Synapse to serve a file at `https:///.well-known/matrix/server`. This will tell other servers to send traffic to port 443 instead. This option currently defaults to false. See [Delegation of incoming federation traffic](../../delegate.md) for more information. Example configuration: ```yaml serve_server_wellknown: true ``` --- ### `extra_well_known_client_content ` This option allows server runners to add arbitrary key-value pairs to the [client-facing `.well-known` response](https://spec.matrix.org/latest/client-server-api/#well-known-uri). Note that the `public_baseurl` config option must be provided for Synapse to serve a response to `/.well-known/matrix/client` at all. If this option is provided, it parses the given yaml to json and serves it on `/.well-known/matrix/client` endpoint alongside the standard properties. *Added in Synapse 1.62.0.* Example configuration: ```yaml extra_well_known_client_content : option1: value1 option2: value2 ``` --- ### `soft_file_limit` Set the soft limit on the number of file descriptors synapse can use. Zero is used to indicate synapse should set the soft limit to the hard limit. Defaults to 0. Example configuration: ```yaml soft_file_limit: 3 ``` --- ### `presence` Presence tracking allows users to see the state (e.g online/offline) of other local and remote users. Set the `enabled` sub-option to false to disable presence tracking on this homeserver. Defaults to true. This option replaces the previous top-level 'use_presence' option. Example configuration: ```yaml presence: enabled: false ``` `enabled` can also be set to a special value of "untracked" which ignores updates received via clients and federation, while still accepting updates from the [module API](../../modules/index.md). *The "untracked" option was added in Synapse 1.96.0.* --- ### `require_auth_for_profile_requests` Whether to require authentication to retrieve profile data (avatars, display names) of other users through the client API. Defaults to false. Note that profile data is also available via the federation API, unless `allow_profile_lookup_over_federation` is set to false. Example configuration: ```yaml require_auth_for_profile_requests: true ``` --- ### `limit_profile_requests_to_users_who_share_rooms` Use this option to require a user to share a room with another user in order to retrieve their profile information. Only checked on Client-Server requests. Profile requests from other servers should be checked by the requesting server. Defaults to false. Example configuration: ```yaml limit_profile_requests_to_users_who_share_rooms: true ``` --- ### `include_profile_data_on_invite` Use this option to prevent a user's profile data from being retrieved and displayed in a room until they have joined it. By default, a user's profile data is included in an invite event, regardless of the values of the above two settings, and whether or not the users share a server. Defaults to true. Example configuration: ```yaml include_profile_data_on_invite: false ``` --- ### `allow_public_rooms_without_auth` If set to true, removes the need for authentication to access the server's public rooms directory through the client API, meaning that anyone can query the room directory. Defaults to false. Example configuration: ```yaml allow_public_rooms_without_auth: true ``` --- ### `allow_public_rooms_over_federation` If set to true, allows any other homeserver to fetch the server's public rooms directory via federation. Defaults to false. Example configuration: ```yaml allow_public_rooms_over_federation: true ``` --- ### `default_room_version` The default room version for newly created rooms on this server. Known room versions are listed [here](https://spec.matrix.org/latest/rooms/#complete-list-of-room-versions) For example, for room version 1, `default_room_version` should be set to "1". Currently defaults to ["10"](https://spec.matrix.org/v1.5/rooms/v10/). _Changed in Synapse 1.76:_ the default version room version was increased from [9](https://spec.matrix.org/v1.5/rooms/v9/) to [10](https://spec.matrix.org/v1.5/rooms/v10/). Example configuration: ```yaml default_room_version: "8" ``` --- ### `gc_thresholds` The garbage collection threshold parameters to pass to `gc.set_threshold`, if defined. Defaults to none. Example configuration: ```yaml gc_thresholds: [700, 10, 10] ``` --- ### `gc_min_interval` The minimum time in seconds between each GC for a generation, regardless of the GC thresholds. This ensures that we don't do GC too frequently. A value of `[1s, 10s, 30s]` indicates that a second must pass between consecutive generation 0 GCs, etc. Defaults to `[1s, 10s, 30s]`. Example configuration: ```yaml gc_min_interval: [0.5s, 30s, 1m] ``` --- ### `filter_timeline_limit` Set the limit on the returned events in the timeline in the get and sync operations. Defaults to 100. A value of -1 means no upper limit. Example configuration: ```yaml filter_timeline_limit: 5000 ``` --- ### `block_non_admin_invites` Whether room invites to users on this server should be blocked (except those sent by local server admins). Defaults to false. Example configuration: ```yaml block_non_admin_invites: true ``` --- ### `enable_search` If set to false, new messages will not be indexed for searching and users will receive errors when searching for messages. Defaults to true. Example configuration: ```yaml enable_search: false ``` --- ### `ip_range_blacklist` This option prevents outgoing requests from being sent to the specified blacklisted IP address CIDR ranges. If this option is not specified then it defaults to private IP address ranges (see the example below). The blacklist applies to the outbound requests for federation, identity servers, push servers, and for checking key validity for third-party invite events. (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly listed here, since they correspond to unroutable addresses.) This option replaces `federation_ip_range_blacklist` in Synapse v1.25.0. Note: The value is ignored when an HTTP proxy is in use. Example configuration: ```yaml ip_range_blacklist: - '127.0.0.0/8' - '10.0.0.0/8' - '172.16.0.0/12' - '192.168.0.0/16' - '100.64.0.0/10' - '192.0.0.0/24' - '169.254.0.0/16' - '192.88.99.0/24' - '198.18.0.0/15' - '192.0.2.0/24' - '198.51.100.0/24' - '203.0.113.0/24' - '224.0.0.0/4' - '::1/128' - 'fe80::/10' - 'fc00::/7' - '2001:db8::/32' - 'ff00::/8' - 'fec0::/10' ``` --- ### `ip_range_whitelist` List of IP address CIDR ranges that should be allowed for federation, identity servers, push servers, and for checking key validity for third-party invite events. This is useful for specifying exceptions to wide-ranging blacklisted target IP ranges - e.g. for communication with a push server only visible in your network. This whitelist overrides `ip_range_blacklist` and defaults to an empty list. Example configuration: ```yaml ip_range_whitelist: - '192.168.1.1' ``` --- ### `listeners` List of ports that Synapse should listen on, their purpose and their configuration. Sub-options for each listener include: * `port`: the TCP port to bind to. * `tag`: An alias for the port in the logger name. If set the tag is logged instead of the port. Default to `None`, is optional and only valid for listener with `type: http`. See the docs [request log format](../administration/request_log.md). * `bind_addresses`: a list of local addresses to listen on. The default is 'all local interfaces'. * `type`: the type of listener. Normally `http`, but other valid options are: * `manhole`: (see the docs [here](../../manhole.md)), * `metrics`: (see the docs [here](../../metrics-howto.md)), * `tls`: set to true to enable TLS for this listener. Will use the TLS key/cert specified in tls_private_key_path / tls_certificate_path. * `x_forwarded`: Only valid for an 'http' listener. Set to true to use the X-Forwarded-For header as the client IP. Useful when Synapse is behind a [reverse-proxy](../../reverse_proxy.md). * `request_id_header`: The header extracted from each incoming request that is used as the basis for the request ID. The request ID is used in [logs](../administration/request_log.md#request-log-format) and tracing to correlate and match up requests. When unset, Synapse will automatically generate sequential request IDs. This option is useful when Synapse is behind a [reverse-proxy](../../reverse_proxy.md). _Added in Synapse 1.68.0._ * `resources`: Only valid for an 'http' listener. A list of resources to host on this port. Sub-options for each resource are: * `names`: a list of names of HTTP resources. See below for a list of valid resource names. * `compress`: set to true to enable gzip compression on HTTP bodies for this resource. This is currently only supported with the `client`, `consent`, `metrics` and `federation` resources. * `additional_resources`: Only valid for an 'http' listener. A map of additional endpoints which should be loaded via dynamic modules. Unix socket support (_Added in Synapse 1.89.0_): * `path`: A path and filename for a Unix socket. Make sure it is located in a directory with read and write permissions, and that it already exists (the directory will not be created). Defaults to `None`. * **Note**: The use of both `path` and `port` options for the same `listener` is not compatible. * The `x_forwarded` option defaults to true when using Unix sockets and can be omitted. * Other options that would not make sense to use with a UNIX socket, such as `bind_addresses` and `tls` will be ignored and can be removed. * `mode`: The file permissions to set on the UNIX socket. Defaults to `666` * **Note:** Must be set as `type: http` (does not support `metrics` and `manhole`). Also make sure that `metrics` is not included in `resources` -> `names` Valid resource names are: * `client`: the client-server API (/_matrix/client), and the synapse admin API (/_synapse/admin). Also implies `media` and `static`. * `consent`: user consent forms (/_matrix/consent). See [here](../../consent_tracking.md) for more. * `federation`: the server-server API (/_matrix/federation). Also implies `media`, `keys`, `openid` * `keys`: the key discovery API (/_matrix/key). * `media`: the media API (/_matrix/media). * `metrics`: the metrics interface. See [here](../../metrics-howto.md). (Not compatible with Unix sockets) * `openid`: OpenID authentication. See [here](../../openid.md). * `replication`: the HTTP replication API (/_synapse/replication). See [here](../../workers.md). * `static`: static resources under synapse/static (/_matrix/static). (Mostly useful for 'fallback authentication'.) * `health`: the [health check endpoint](../../reverse_proxy.md#health-check-endpoint). This endpoint is by default active for all other resources and does not have to be activated separately. This is only useful if you want to use the health endpoint explicitly on a dedicated port or for [workers](../../workers.md) and containers without listener e.g. [application services](../../workers.md#notifying-application-services). Example configuration #1: ```yaml listeners: # TLS-enabled listener: for when matrix traffic is sent directly to synapse. # # (Note that you will also need to give Synapse a TLS key and certificate: see the TLS section # below.) # - port: 8448 type: http tls: true resources: - names: [client, federation] ``` Example configuration #2: ```yaml listeners: # Insecure HTTP listener: for when matrix traffic passes through a reverse proxy # that unwraps TLS. # # If you plan to use a reverse proxy, please see # https://element-hq.github.io/synapse/latest/reverse_proxy.html. # - port: 8008 tls: false type: http x_forwarded: true bind_addresses: ['::1', '127.0.0.1'] resources: - names: [client, federation] compress: false # example additional_resources: additional_resources: "/_matrix/my/custom/endpoint": module: my_module.CustomRequestHandler config: {} # Turn on the twisted ssh manhole service on localhost on the given # port. - port: 9000 bind_addresses: ['::1', '127.0.0.1'] type: manhole ``` Example configuration #3: ```yaml listeners: # Unix socket listener: Ideal for Synapse deployments behind a reverse proxy, offering # lightweight interprocess communication without TCP/IP overhead, avoid port # conflicts, and providing enhanced security through system file permissions. # # Note that x_forwarded will default to true, when using a UNIX socket. Please see # https://element-hq.github.io/synapse/latest/reverse_proxy.html. # - path: /run/synapse/main_public.sock type: http resources: - names: [client, federation] ``` --- ### `manhole_settings` Connection settings for the manhole. You can find more information on the manhole [here](../../manhole.md). Manhole sub-options include: * `username` : the username for the manhole. This defaults to 'matrix'. * `password`: The password for the manhole. This defaults to 'rabbithole'. * `ssh_priv_key_path` and `ssh_pub_key_path`: The private and public SSH key pair used to encrypt the manhole traffic. If these are left unset, then hardcoded and non-secret keys are used, which could allow traffic to be intercepted if sent over a public network. Example configuration: ```yaml manhole_settings: username: manhole password: mypassword ssh_priv_key_path: CONFDIR/id_rsa ssh_pub_key_path: CONFDIR/id_rsa.pub ``` --- ### `dummy_events_threshold` Forward extremities can build up in a room due to networking delays between homeservers. Once this happens in a large room, calculation of the state of that room can become quite expensive. To mitigate this, once the number of forward extremities reaches a given threshold, Synapse will send an `org.matrix.dummy_event` event, which will reduce the forward extremities in the room. This setting defines the threshold (i.e. number of forward extremities in the room) at which dummy events are sent. The default value is 10. Example configuration: ```yaml dummy_events_threshold: 5 ``` --- ### `delete_stale_devices_after` An optional duration. If set, Synapse will run a daily background task to log out and delete any device that hasn't been accessed for more than the specified amount of time. Defaults to no duration, which means devices are never pruned. **Note:** This task will always run on the main process, regardless of the value of `run_background_tasks_on`. This is due to workers currently not having the ability to delete devices. Example configuration: ```yaml delete_stale_devices_after: 1y ``` --- ### `email` Configuration for sending emails from Synapse. Server admins can configure custom templates for email content. See [here](../../templates.md) for more information. This setting has the following sub-options: * `smtp_host`: The hostname of the outgoing SMTP server to use. Defaults to 'localhost'. * `smtp_port`: The port on the mail server for outgoing SMTP. Defaults to 465 if `force_tls` is true, else 25. _Changed in Synapse 1.64.0:_ the default port is now aware of `force_tls`. * `smtp_user` and `smtp_pass`: Username/password for authentication to the SMTP server. By default, no authentication is attempted. * `force_tls`: By default, Synapse connects over plain text and then optionally upgrades to TLS via STARTTLS. If this option is set to true, TLS is used from the start (Implicit TLS), and the option `require_transport_security` is ignored. It is recommended to enable this if supported by your mail server. _New in Synapse 1.64.0._ * `require_transport_security`: Set to true to require TLS transport security for SMTP. By default, Synapse will connect over plain text, and will then switch to TLS via STARTTLS *if the SMTP server supports it*. If this option is set, Synapse will refuse to connect unless the server supports STARTTLS. * `enable_tls`: By default, if the server supports TLS, it will be used, and the server must present a certificate that is valid for 'smtp_host'. If this option is set to false, TLS will not be used. * `notif_from`: defines the "From" address to use when sending emails. It must be set if email sending is enabled. The placeholder '%(app)s' will be replaced by the application name, which is normally set in `app_name`, but may be overridden by the Matrix client application. Note that the placeholder must be written '%(app)s', including the trailing 's'. * `app_name`: `app_name` defines the default value for '%(app)s' in `notif_from` and email subjects. It defaults to 'Matrix'. * `enable_notifs`: Set to true to enable sending emails for messages that the user has missed. Disabled by default. * `notif_for_new_users`: Set to false to disable automatic subscription to email notifications for new users. Enabled by default. * `notif_delay_before_mail`: The time to wait before emailing about a notification. This gives the user a chance to view the message via push or an open client. Defaults to 10 minutes. _New in Synapse 1.99.0._ * `client_base_url`: Custom URL for client links within the email notifications. By default links will be based on "https://matrix.to". (This setting used to be called `riot_base_url`; the old name is still supported for backwards-compatibility but is now deprecated.) * `validation_token_lifetime`: Configures the time that a validation email will expire after sending. Defaults to 1h. * `invite_client_location`: The web client location to direct users to during an invite. This is passed to the identity server as the `org.matrix.web_client_location` key. Defaults to unset, giving no guidance to the identity server. * `subjects`: Subjects to use when sending emails from Synapse. The placeholder '%(app)s' will be replaced with the value of the `app_name` setting, or by a value dictated by the Matrix client application. In addition, each subject can use the following placeholders: '%(person)s', which will be replaced by the displayname of the user(s) that sent the message(s), e.g. "Alice and Bob", and '%(room)s', which will be replaced by the name of the room the message(s) have been sent to, e.g. "My super room". In addition, emails related to account administration will can use the '%(server_name)s' placeholder, which will be replaced by the value of the `server_name` setting in your Synapse configuration. Here is a list of subjects for notification emails that can be set: * `message_from_person_in_room`: Subject to use to notify about one message from one or more user(s) in a room which has a name. Defaults to "[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room..." * `message_from_person`: Subject to use to notify about one message from one or more user(s) in a room which doesn't have a name. Defaults to "[%(app)s] You have a message on %(app)s from %(person)s..." * `messages_from_person`: Subject to use to notify about multiple messages from one or more users in a room which doesn't have a name. Defaults to "[%(app)s] You have messages on %(app)s from %(person)s..." * `messages_in_room`: Subject to use to notify about multiple messages in a room which has a name. Defaults to "[%(app)s] You have messages on %(app)s in the %(room)s room..." * `messages_in_room_and_others`: Subject to use to notify about multiple messages in multiple rooms. Defaults to "[%(app)s] You have messages on %(app)s in the %(room)s room and others..." * `messages_from_person_and_others`: Subject to use to notify about multiple messages from multiple persons in multiple rooms. This is similar to the setting above except it's used when the room in which the notification was triggered has no name. Defaults to "[%(app)s] You have messages on %(app)s from %(person)s and others..." * `invite_from_person_to_room`: Subject to use to notify about an invite to a room which has a name. Defaults to "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s..." * `invite_from_person`: Subject to use to notify about an invite to a room which doesn't have a name. Defaults to "[%(app)s] %(person)s has invited you to chat on %(app)s..." * `password_reset`: Subject to use when sending a password reset email. Defaults to "[%(server_name)s] Password reset" * `email_validation`: Subject to use when sending a verification email to assert an address's ownership. Defaults to "[%(server_name)s] Validate your email" Example configuration: ```yaml email: smtp_host: mail.server smtp_port: 587 smtp_user: "exampleusername" smtp_pass: "examplepassword" force_tls: true require_transport_security: true enable_tls: false notif_from: "Your Friendly %(app)s homeserver " app_name: my_branded_matrix_server enable_notifs: true notif_for_new_users: false client_base_url: "http://localhost/riot" validation_token_lifetime: 15m invite_client_location: https://app.element.io subjects: message_from_person_in_room: "[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room..." message_from_person: "[%(app)s] You have a message on %(app)s from %(person)s..." messages_from_person: "[%(app)s] You have messages on %(app)s from %(person)s..." messages_in_room: "[%(app)s] You have messages on %(app)s in the %(room)s room..." messages_in_room_and_others: "[%(app)s] You have messages on %(app)s in the %(room)s room and others..." messages_from_person_and_others: "[%(app)s] You have messages on %(app)s from %(person)s and others..." invite_from_person_to_room: "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s..." invite_from_person: "[%(app)s] %(person)s has invited you to chat on %(app)s..." password_reset: "[%(server_name)s] Password reset" email_validation: "[%(server_name)s] Validate your email" ``` ## Homeserver blocking Useful options for Synapse admins. --- ### `admin_contact` How to reach the server admin, used in `ResourceLimitError`. Defaults to none. Example configuration: ```yaml admin_contact: 'mailto:admin@server.com' ``` --- ### `hs_disabled` and `hs_disabled_message` Blocks users from connecting to the homeserver and provides a human-readable reason why the connection was blocked. Defaults to false. Example configuration: ```yaml hs_disabled: true hs_disabled_message: 'Reason for why the HS is blocked' ``` --- ### `limit_usage_by_mau` This option disables/enables monthly active user blocking. Used in cases where the admin or server owner wants to limit to the number of monthly active users. When enabled and a limit is reached the server returns a `ResourceLimitError` with error type `Codes.RESOURCE_LIMIT_EXCEEDED`. Defaults to false. If this is enabled, a value for `max_mau_value` must also be set. See [Monthly Active Users](../administration/monthly_active_users.md) for details on how to configure MAU. Example configuration: ```yaml limit_usage_by_mau: true ``` --- ### `max_mau_value` This option sets the hard limit of monthly active users above which the server will start blocking user actions if `limit_usage_by_mau` is enabled. Defaults to 0. Example configuration: ```yaml max_mau_value: 50 ``` --- ### `mau_trial_days` The option `mau_trial_days` is a means to add a grace period for active users. It means that users must be active for the specified number of days before they can be considered active and guards against the case where lots of users sign up in a short space of time never to return after their initial session. Defaults to 0. Example configuration: ```yaml mau_trial_days: 5 ``` --- ### `mau_appservice_trial_days` The option `mau_appservice_trial_days` is similar to `mau_trial_days`, but applies a different trial number if the user was registered by an appservice. A value of 0 means no trial days are applied. Appservices not listed in this dictionary use the value of `mau_trial_days` instead. Example configuration: ```yaml mau_appservice_trial_days: my_appservice_id: 3 another_appservice_id: 6 ``` --- ### `mau_limit_alerting` The option `mau_limit_alerting` is a means of limiting client-side alerting should the mau limit be reached. This is useful for small instances where the admin has 5 mau seats (say) for 5 specific people and no interest increasing the mau limit further. Defaults to true, which means that alerting is enabled. Example configuration: ```yaml mau_limit_alerting: false ``` --- ### `mau_stats_only` If enabled, the metrics for the number of monthly active users will be populated, however no one will be limited based on these numbers. If `limit_usage_by_mau` is true, this is implied to be true. Defaults to false. Example configuration: ```yaml mau_stats_only: true ``` --- ### `mau_limit_reserved_threepids` Sometimes the server admin will want to ensure certain accounts are never blocked by mau checking. These accounts are specified by this option. Defaults to none. Add accounts by specifying the `medium` and `address` of the reserved threepid (3rd party identifier). Example configuration: ```yaml mau_limit_reserved_threepids: - medium: 'email' address: 'reserved_user@example.com' ``` --- ### `server_context` This option is used by phonehome stats to group together related servers. Defaults to none. Example configuration: ```yaml server_context: context ``` --- ### `limit_remote_rooms` When this option is enabled, the room "complexity" will be checked before a user joins a new remote room. If it is above the complexity limit, the server will disallow joining, or will instantly leave. This is useful for homeservers that are resource-constrained. Options for this setting include: * `enabled`: whether this check is enabled. Defaults to false. * `complexity`: the limit above which rooms cannot be joined. The default is 1.0. * `complexity_error`: override the error which is returned when the room is too complex with a custom message. * `admins_can_join`: allow server admins to join complex rooms. Default is false. Room complexity is an arbitrary measure based on factors such as the number of users in the room. Example configuration: ```yaml limit_remote_rooms: enabled: true complexity: 0.5 complexity_error: "I can't let you do that, Dave." admins_can_join: true ``` --- ### `require_membership_for_aliases` Whether to require a user to be in the room to add an alias to it. Defaults to true. Example configuration: ```yaml require_membership_for_aliases: false ``` --- ### `allow_per_room_profiles` Whether to allow per-room membership profiles through the sending of membership events with profile information that differs from the target's global profile. Defaults to true. Example configuration: ```yaml allow_per_room_profiles: false ``` --- ### `max_avatar_size` The largest permissible file size in bytes for a user avatar. Defaults to no restriction. Use M for MB and K for KB. Note that user avatar changes will not work if this is set without using Synapse's media repository. Example configuration: ```yaml max_avatar_size: 10M ``` --- ### `allowed_avatar_mimetypes` The MIME types allowed for user avatars. Defaults to no restriction. Note that user avatar changes will not work if this is set without using Synapse's media repository. Example configuration: ```yaml allowed_avatar_mimetypes: ["image/png", "image/jpeg", "image/gif"] ``` --- ### `redaction_retention_period` How long to keep redacted events in unredacted form in the database. After this period redacted events get replaced with their redacted form in the DB. Synapse will check whether the rentention period has concluded for redacted events every 5 minutes. Thus, even if this option is set to `0`, Synapse may still take up to 5 minutes to purge redacted events from the database. Defaults to `7d`. Set to `null` to disable. Example configuration: ```yaml redaction_retention_period: 28d ``` --- ### `forgotten_room_retention_period` How long to keep locally forgotten rooms before purging them from the DB. Defaults to `null`, meaning it's disabled. Example configuration: ```yaml forgotten_room_retention_period: 28d ``` --- ### `user_ips_max_age` How long to track users' last seen time and IPs in the database. Defaults to `28d`. Set to `null` to disable clearing out of old rows. Example configuration: ```yaml user_ips_max_age: 14d ``` --- ### `request_token_inhibit_3pid_errors` Inhibits the `/requestToken` endpoints from returning an error that might leak information about whether an e-mail address is in use or not on this homeserver. Defaults to false. Note that for some endpoints the error situation is the e-mail already being used, and for others the error is entering the e-mail being unused. If this option is enabled, instead of returning an error, these endpoints will act as if no error happened and return a fake session ID ('sid') to clients. Example configuration: ```yaml request_token_inhibit_3pid_errors: true ``` --- ### `next_link_domain_whitelist` A list of domains that the domain portion of `next_link` parameters must match. This parameter is optionally provided by clients while requesting validation of an email or phone number, and maps to a link that users will be automatically redirected to after validation succeeds. Clients can make use this parameter to aid the validation process. The whitelist is applied whether the homeserver or an identity server is handling validation. The default value is no whitelist functionality; all domains are allowed. Setting this value to an empty list will instead disallow all domains. Example configuration: ```yaml next_link_domain_whitelist: ["matrix.org"] ``` --- ### `templates` and `custom_template_directory` These options define templates to use when generating email or HTML page contents. The `custom_template_directory` determines which directory Synapse will try to find template files in to use to generate email or HTML page contents. If not set, or a file is not found within the template directory, a default template from within the Synapse package will be used. See [here](../../templates.md) for more information about using custom templates. Example configuration: ```yaml templates: custom_template_directory: /path/to/custom/templates/ ``` --- ### `retention` This option and the associated options determine message retention policy at the server level. Room admins and mods can define a retention period for their rooms using the `m.room.retention` state event, and server admins can cap this period by setting the `allowed_lifetime_min` and `allowed_lifetime_max` config options. If this feature is enabled, Synapse will regularly look for and purge events which are older than the room's maximum retention period. Synapse will also filter events received over federation so that events that should have been purged are ignored and not stored again. The message retention policies feature is disabled by default. You can read more about this feature [here](../../message_retention_policies.md). This setting has the following sub-options: * `default_policy`: Default retention policy. If set, Synapse will apply it to rooms that lack the 'm.room.retention' state event. This option is further specified by the `min_lifetime` and `max_lifetime` sub-options associated with it. Note that the value of `min_lifetime` doesn't matter much because Synapse doesn't take it into account yet. * `allowed_lifetime_min` and `allowed_lifetime_max`: Retention policy limits. If set, and the state of a room contains a `m.room.retention` event in its state which contains a `min_lifetime` or a `max_lifetime` that's out of these bounds, Synapse will cap the room's policy to these limits when running purge jobs. * `purge_jobs` and the associated `shortest_max_lifetime` and `longest_max_lifetime` sub-options: Server admins can define the settings of the background jobs purging the events whose lifetime has expired under the `purge_jobs` section. If no configuration is provided for this option, a single job will be set up to delete expired events in every room daily. Each job's configuration defines which range of message lifetimes the job takes care of. For example, if `shortest_max_lifetime` is '2d' and `longest_max_lifetime` is '3d', the job will handle purging expired events in rooms whose state defines a `max_lifetime` that's both higher than 2 days, and lower than or equal to 3 days. Both the minimum and the maximum value of a range are optional, e.g. a job with no `shortest_max_lifetime` and a `longest_max_lifetime` of '3d' will handle every room with a retention policy whose `max_lifetime` is lower than or equal to three days. The rationale for this per-job configuration is that some rooms might have a retention policy with a low `max_lifetime`, where history needs to be purged of outdated messages on a more frequent basis than for the rest of the rooms (e.g. every 12h), but not want that purge to be performed by a job that's iterating over every room it knows, which could be heavy on the server. If any purge job is configured, it is strongly recommended to have at least a single job with neither `shortest_max_lifetime` nor `longest_max_lifetime` set, or one job without `shortest_max_lifetime` and one job without `longest_max_lifetime` set. Otherwise some rooms might be ignored, even if `allowed_lifetime_min` and `allowed_lifetime_max` are set, because capping a room's policy to these values is done after the policies are retrieved from Synapse's database (which is done using the range specified in a purge job's configuration). Example configuration: ```yaml retention: enabled: true default_policy: min_lifetime: 1d max_lifetime: 1y allowed_lifetime_min: 1d allowed_lifetime_max: 1y purge_jobs: - longest_max_lifetime: 3d interval: 12h - shortest_max_lifetime: 3d interval: 1d ``` --- ## TLS Options related to TLS. --- ### `tls_certificate_path` This option specifies a PEM-encoded X509 certificate for TLS. This certificate, as of Synapse 1.0, will need to be a valid and verifiable certificate, signed by a recognised Certificate Authority. Defaults to none. Be sure to use a `.pem` file that includes the full certificate chain including any intermediate certificates (for instance, if using certbot, use `fullchain.pem` as your certificate, not `cert.pem`). Example configuration: ```yaml tls_certificate_path: "CONFDIR/SERVERNAME.tls.crt" ``` --- ### `tls_private_key_path` PEM-encoded private key for TLS. Defaults to none. Example configuration: ```yaml tls_private_key_path: "CONFDIR/SERVERNAME.tls.key" ``` --- ### `federation_verify_certificates` Whether to verify TLS server certificates for outbound federation requests. Defaults to true. To disable certificate verification, set the option to false. Example configuration: ```yaml federation_verify_certificates: false ``` --- ### `federation_client_minimum_tls_version` The minimum TLS version that will be used for outbound federation requests. Defaults to `"1"`. Configurable to `"1"`, `"1.1"`, `"1.2"`, or `"1.3"`. Note that setting this value higher than `"1.2"` will prevent federation to most of the public Matrix network: only configure it to `"1.3"` if you have an entirely private federation setup and you can ensure TLS 1.3 support. Example configuration: ```yaml federation_client_minimum_tls_version: "1.2" ``` --- ### `federation_certificate_verification_whitelist` Skip federation certificate verification on a given whitelist of domains. This setting should only be used in very specific cases, such as federation over Tor hidden services and similar. For private networks of homeservers, you likely want to use a private CA instead. Only effective if `federation_verify_certificates` is `true`. Example configuration: ```yaml federation_certificate_verification_whitelist: - lon.example.com - "*.domain.com" - "*.onion" ``` --- ### `federation_custom_ca_list` List of custom certificate authorities for federation traffic. This setting should only normally be used within a private network of homeservers. Note that this list will replace those that are provided by your operating environment. Certificates must be in PEM format. Example configuration: ```yaml federation_custom_ca_list: - myCA1.pem - myCA2.pem - myCA3.pem ``` --- ## Federation Options related to federation. --- ### `federation_domain_whitelist` Restrict federation to the given whitelist of domains. N.B. we recommend also firewalling your federation listener to limit inbound federation traffic as early as possible, rather than relying purely on this application-layer restriction. If not specified, the default is to whitelist everything. Note: this does not stop a server from joining rooms that servers not on the whitelist are in. As such, this option is really only useful to establish a "private federation", where a group of servers all whitelist each other and have the same whitelist. Example configuration: ```yaml federation_domain_whitelist: - lon.example.com - nyc.example.com - syd.example.com ``` --- ### `federation_metrics_domains` Report prometheus metrics on the age of PDUs being sent to and received from the given domains. This can be used to give an idea of "delay" on inbound and outbound federation, though be aware that any delay can be due to problems at either end or with the intermediate network. By default, no domains are monitored in this way. Example configuration: ```yaml federation_metrics_domains: - matrix.org - example.com ``` --- ### `allow_profile_lookup_over_federation` Set to false to disable profile lookup over federation. By default, the Federation API allows other homeservers to obtain profile data of any user on this homeserver. Example configuration: ```yaml allow_profile_lookup_over_federation: false ``` --- ### `allow_device_name_lookup_over_federation` Set this option to true to allow device display name lookup over federation. By default, the Federation API prevents other homeservers from obtaining the display names of any user devices on this homeserver. Example configuration: ```yaml allow_device_name_lookup_over_federation: true ``` --- ### `federation` The federation section defines some sub-options related to federation. The following options are related to configuring timeout and retry logic for one request, independently of the others. Short retry algorithm is used when something or someone will wait for the request to have an answer, while long retry is used for requests that happen in the background, like sending a federation transaction. * `client_timeout`: timeout for the federation requests. Default to 60s. * `max_short_retry_delay`: maximum delay to be used for the short retry algo. Default to 2s. * `max_long_retry_delay`: maximum delay to be used for the short retry algo. Default to 60s. * `max_short_retries`: maximum number of retries for the short retry algo. Default to 3 attempts. * `max_long_retries`: maximum number of retries for the long retry algo. Default to 10 attempts. The following options control the retry logic when communicating with a specific homeserver destination. Unlike the previous configuration options, these values apply across all requests for a given destination and the state of the backoff is stored in the database. * `destination_min_retry_interval`: the initial backoff, after the first request fails. Defaults to 10m. * `destination_retry_multiplier`: how much we multiply the backoff by after each subsequent fail. Defaults to 2. * `destination_max_retry_interval`: a cap on the backoff. Defaults to a week. Example configuration: ```yaml federation: client_timeout: 180s max_short_retry_delay: 7s max_long_retry_delay: 100s max_short_retries: 5 max_long_retries: 20 destination_min_retry_interval: 30s destination_retry_multiplier: 5 destination_max_retry_interval: 12h ``` --- ## Caching Options related to caching. --- ### `event_cache_size` The number of events to cache in memory. Defaults to 10K. Like other caches, this is affected by `caches.global_factor` (see below). Note that this option is not part of the `caches` section. Example configuration: ```yaml event_cache_size: 15K ``` --- ### `caches` and associated values A cache 'factor' is a multiplier that can be applied to each of Synapse's caches in order to increase or decrease the maximum number of entries that can be stored. `caches` can be configured through the following sub-options: * `global_factor`: Controls the global cache factor, which is the default cache factor for all caches if a specific factor for that cache is not otherwise set. This can also be set by the `SYNAPSE_CACHE_FACTOR` environment variable. Setting by environment variable takes priority over setting through the config file. Defaults to 0.5, which will halve the size of all caches. * `per_cache_factors`: A dictionary of cache name to cache factor for that individual cache. Overrides the global cache factor for a given cache. These can also be set through environment variables comprised of `SYNAPSE_CACHE_FACTOR_` + the name of the cache in capital letters and underscores. Setting by environment variable takes priority over setting through the config file. Ex. `SYNAPSE_CACHE_FACTOR_GET_USERS_WHO_SHARE_ROOM_WITH_USER=2.0` Some caches have '*' and other characters that are not alphanumeric or underscores. These caches can be named with or without the special characters stripped. For example, to specify the cache factor for `*stateGroupCache*` via an environment variable would be `SYNAPSE_CACHE_FACTOR_STATEGROUPCACHE=2.0`. * `expire_caches`: Controls whether cache entries are evicted after a specified time period. Defaults to true. Set to false to disable this feature. Note that never expiring caches may result in excessive memory usage. * `cache_entry_ttl`: If `expire_caches` is enabled, this flag controls how long an entry can be in a cache without having been accessed before being evicted. Defaults to 30m. * `sync_response_cache_duration`: Controls how long the results of a /sync request are cached for after a successful response is returned. A higher duration can help clients with intermittent connections, at the cost of higher memory usage. A value of zero means that sync responses are not cached. Defaults to 2m. *Changed in Synapse 1.62.0*: The default was changed from 0 to 2m. * `cache_autotuning` and its sub-options `max_cache_memory_usage`, `target_cache_memory_usage`, and `min_cache_ttl` work in conjunction with each other to maintain a balance between cache memory usage and cache entry availability. You must be using [jemalloc](../administration/admin_faq.md#help-synapse-is-slow-and-eats-all-my-ramcpu) to utilize this option, and all three of the options must be specified for this feature to work. This option defaults to off, enable it by providing values for the sub-options listed below. Please note that the feature will not work and may cause unstable behavior (such as excessive emptying of caches or exceptions) if all of the values are not provided. Please see the [Config Conventions](#config-conventions) for information on how to specify memory size and cache expiry durations. * `max_cache_memory_usage` sets a ceiling on how much memory the cache can use before caches begin to be continuously evicted. They will continue to be evicted until the memory usage drops below the `target_memory_usage`, set in the setting below, or until the `min_cache_ttl` is hit. There is no default value for this option. * `target_cache_memory_usage` sets a rough target for the desired memory usage of the caches. There is no default value for this option. * `min_cache_ttl` sets a limit under which newer cache entries are not evicted and is only applied when caches are actively being evicted/`max_cache_memory_usage` has been exceeded. This is to protect hot caches from being emptied while Synapse is evicting due to memory. There is no default value for this option. Example configuration: ```yaml event_cache_size: 15K caches: global_factor: 1.0 per_cache_factors: get_users_who_share_room_with_user: 2.0 sync_response_cache_duration: 2m cache_autotuning: max_cache_memory_usage: 1024M target_cache_memory_usage: 758M min_cache_ttl: 5m ``` ### Reloading cache factors The cache factors (i.e. `caches.global_factor` and `caches.per_cache_factors`) may be reloaded at any time by sending a [`SIGHUP`](https://en.wikipedia.org/wiki/SIGHUP) signal to Synapse using e.g. ```commandline kill -HUP [PID_OF_SYNAPSE_PROCESS] ``` If you are running multiple workers, you must individually update the worker config file and send this signal to each worker process. If you're using the [example systemd service](https://github.com/element-hq/synapse/blob/develop/contrib/systemd/matrix-synapse.service) file in Synapse's `contrib` directory, you can send a `SIGHUP` signal by using `systemctl reload matrix-synapse`. --- ## Database Config options related to database settings. --- ### `database` The `database` setting defines the database that synapse uses to store all of its data. Associated sub-options: * `name`: this option specifies the database engine to use: either `sqlite3` (for SQLite) or `psycopg2` (for PostgreSQL). If no name is specified Synapse will default to SQLite. * `txn_limit` gives the maximum number of transactions to run per connection before reconnecting. Defaults to 0, which means no limit. * `allow_unsafe_locale` is an option specific to Postgres. Under the default behavior, Synapse will refuse to start if the postgres db is set to a non-C locale. You can override this behavior (which is *not* recommended) by setting `allow_unsafe_locale` to true. Note that doing so may corrupt your database. You can find more information [here](../../postgres.md#fixing-incorrect-collate-or-ctype) and [here](https://wiki.postgresql.org/wiki/Locale_data_changes). * `args` gives options which are passed through to the database engine, except for options starting with `cp_`, which are used to configure the Twisted connection pool. For a reference to valid arguments, see: * for [sqlite](https://docs.python.org/3/library/sqlite3.html#sqlite3.connect) * for [postgres](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) * for [the connection pool](https://docs.twistedmatrix.com/en/stable/api/twisted.enterprise.adbapi.ConnectionPool.html#__init__) For more information on using Synapse with Postgres, see [here](../../postgres.md). Example SQLite configuration: ```yaml database: name: sqlite3 args: database: /path/to/homeserver.db ``` Example Postgres configuration: ```yaml database: name: psycopg2 txn_limit: 10000 args: user: synapse_user password: secretpassword dbname: synapse host: localhost port: 5432 cp_min: 5 cp_max: 10 ``` --- ### `databases` The `databases` option allows specifying a mapping between certain database tables and database host details, spreading the load of a single Synapse instance across multiple database backends. This is often referred to as "database sharding". This option is only supported for PostgreSQL database backends. **Important note:** This is a supported option, but is not currently used in production by the Matrix.org Foundation. Proceed with caution and always make backups. `databases` is a dictionary of arbitrarily-named database entries. Each entry is equivalent to the value of the `database` homeserver config option (see above), with the addition of a `data_stores` key. `data_stores` is an array of strings that specifies the data store(s) (a defined label for a set of tables) that should be stored on the associated database backend entry. The currently defined values for `data_stores` are: * `"state"`: Database that relates to state groups will be stored in this database. Specifically, that means the following tables: * `state_groups` * `state_group_edges` * `state_groups_state` And the following sequences: * `state_groups_seq_id` * `"main"`: All other database tables and sequences. All databases will end up with additional tables used for tracking database schema migrations and any pending background updates. Synapse will create these automatically on startup when checking for and/or performing database schema migrations. To migrate an existing database configuration (e.g. all tables on a single database) to a different configuration (e.g. the "main" data store on one database, and "state" on another), do the following: 1. Take a backup of your existing database. Things can and do go wrong and database corruption is no joke! 2. Ensure all pending database migrations have been applied and background updates have run. The simplest way to do this is to use the `update_synapse_database` script supplied with your Synapse installation. ```sh update_synapse_database --database-config homeserver.yaml --run-background-updates ``` 3. Copy over the necessary tables and sequences from one database to the other. Tables relating to database migrations, schemas, schema versions and background updates should **not** be copied. As an example, say that you'd like to split out the "state" data store from an existing database which currently contains all data stores. Simply copy the tables and sequences defined above for the "state" datastore from the existing database to the secondary database. As noted above, additional tables will be created in the secondary database when Synapse is started. 4. Modify/create the `databases` option in your `homeserver.yaml` to match the desired database configuration. 5. Start Synapse. Check that it starts up successfully and that things generally seem to be working. 6. Drop the old tables that were copied in step 3. Only one of the options `database` or `databases` may be specified in your config, but not both. Example configuration: ```yaml databases: basement_box: name: psycopg2 txn_limit: 10000 data_stores: ["main"] args: user: synapse_user password: secretpassword dbname: synapse_main host: localhost port: 5432 cp_min: 5 cp_max: 10 my_other_database: name: psycopg2 txn_limit: 10000 data_stores: ["state"] args: user: synapse_user password: secretpassword dbname: synapse_state host: localhost port: 5432 cp_min: 5 cp_max: 10 ``` --- ## Logging Config options related to logging. --- ### `log_config` This option specifies a yaml python logging config file as described [here](https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema). Example configuration: ```yaml log_config: "CONFDIR/SERVERNAME.log.config" ``` --- ## Ratelimiting Options related to ratelimiting in Synapse. Each ratelimiting configuration is made of two parameters: - `per_second`: number of requests a client can send per second. - `burst_count`: number of requests a client can send before being throttled. --- ### `rc_message` Ratelimiting settings for client messaging. This is a ratelimiting option for messages that ratelimits sending based on the account the client is using. It defaults to: `per_second: 0.2`, `burst_count: 10`. Example configuration: ```yaml rc_message: per_second: 0.5 burst_count: 15 ``` --- ### `rc_registration` This option ratelimits registration requests based on the client's IP address. It defaults to `per_second: 0.17`, `burst_count: 3`. Example configuration: ```yaml rc_registration: per_second: 0.15 burst_count: 2 ``` --- ### `rc_registration_token_validity` This option checks the validity of registration tokens that ratelimits requests based on the client's IP address. Defaults to `per_second: 0.1`, `burst_count: 5`. Example configuration: ```yaml rc_registration_token_validity: per_second: 0.3 burst_count: 6 ``` --- ### `rc_login` This option specifies several limits for login: * `address` ratelimits login requests based on the client's IP address. Defaults to `per_second: 0.003`, `burst_count: 5`. * `account` ratelimits login requests based on the account the client is attempting to log into. Defaults to `per_second: 0.003`, `burst_count: 5`. * `failed_attempts` ratelimits login requests based on the account the client is attempting to log into, based on the amount of failed login attempts for this account. Defaults to `per_second: 0.17`, `burst_count: 3`. Example configuration: ```yaml rc_login: address: per_second: 0.15 burst_count: 5 account: per_second: 0.18 burst_count: 4 failed_attempts: per_second: 0.19 burst_count: 7 ``` --- ### `rc_admin_redaction` This option sets ratelimiting redactions by room admins. If this is not explicitly set then it uses the same ratelimiting as per `rc_message`. This is useful to allow room admins to deal with abuse quickly. Example configuration: ```yaml rc_admin_redaction: per_second: 1 burst_count: 50 ``` --- ### `rc_joins` This option allows for ratelimiting number of rooms a user can join. This setting has the following sub-options: * `local`: ratelimits when users are joining rooms the server is already in. Defaults to `per_second: 0.1`, `burst_count: 10`. * `remote`: ratelimits when users are trying to join rooms not on the server (which can be more computationally expensive than restricting locally). Defaults to `per_second: 0.01`, `burst_count: 10` Example configuration: ```yaml rc_joins: local: per_second: 0.2 burst_count: 15 remote: per_second: 0.03 burst_count: 12 ``` --- ### `rc_joins_per_room` This option allows admins to ratelimit joins to a room based on the number of recent joins (local or remote) to that room. It is intended to mitigate mass-join spam waves which target multiple homeservers. By default, one join is permitted to a room every second, with an accumulating buffer of up to ten instantaneous joins. Example configuration (default values): ```yaml rc_joins_per_room: per_second: 1 burst_count: 10 ``` _Added in Synapse 1.64.0._ --- ### `rc_3pid_validation` This option ratelimits how often a user or IP can attempt to validate a 3PID. Defaults to `per_second: 0.003`, `burst_count: 5`. Example configuration: ```yaml rc_3pid_validation: per_second: 0.003 burst_count: 5 ``` --- ### `rc_invites` This option sets ratelimiting how often invites can be sent in a room or to a specific user. `per_room` defaults to `per_second: 0.3`, `burst_count: 10` and `per_user` defaults to `per_second: 0.003`, `burst_count: 5`. Client requests that invite user(s) when [creating a room](https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3createroom) will count against the `rc_invites.per_room` limit, whereas client requests to [invite a single user to a room](https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3roomsroomidinvite) will count against both the `rc_invites.per_user` and `rc_invites.per_room` limits. Federation requests to invite a user will count against the `rc_invites.per_user` limit only, as Synapse presumes ratelimiting by room will be done by the sending server. The `rc_invites.per_user` limit applies to the *receiver* of the invite, rather than the sender, meaning that a `rc_invite.per_user.burst_count` of 5 mandates that a single user cannot *receive* more than a burst of 5 invites at a time. In contrast, the `rc_invites.per_issuer` limit applies to the *issuer* of the invite, meaning that a `rc_invite.per_issuer.burst_count` of 5 mandates that single user cannot *send* more than a burst of 5 invites at a time. _Changed in version 1.63:_ added the `per_issuer` limit. Example configuration: ```yaml rc_invites: per_room: per_second: 0.5 burst_count: 5 per_user: per_second: 0.004 burst_count: 3 per_issuer: per_second: 0.5 burst_count: 5 ``` --- ### `rc_third_party_invite` This option ratelimits 3PID invites (i.e. invites sent to a third-party ID such as an email address or a phone number) based on the account that's sending the invite. Defaults to `per_second: 0.2`, `burst_count: 10`. Example configuration: ```yaml rc_third_party_invite: per_second: 0.2 burst_count: 10 ``` --- ### `rc_media_create` This option ratelimits creation of MXC URIs via the `/_matrix/media/v1/create` endpoint based on the account that's creating the media. Defaults to `per_second: 10`, `burst_count: 50`. Example configuration: ```yaml rc_media_create: per_second: 10 burst_count: 50 ``` --- ### `rc_federation` Defines limits on federation requests. The `rc_federation` configuration has the following sub-options: * `window_size`: window size in milliseconds. Defaults to 1000. * `sleep_limit`: number of federation requests from a single server in a window before the server will delay processing the request. Defaults to 10. * `sleep_delay`: duration in milliseconds to delay processing events from remote servers by if they go over the sleep limit. Defaults to 500. * `reject_limit`: maximum number of concurrent federation requests allowed from a single server. Defaults to 50. * `concurrent`: number of federation requests to concurrently process from a single server. Defaults to 3. Example configuration: ```yaml rc_federation: window_size: 750 sleep_limit: 15 sleep_delay: 400 reject_limit: 40 concurrent: 5 ``` --- ### `federation_rr_transactions_per_room_per_second` Sets outgoing federation transaction frequency for sending read-receipts, per-room. If we end up trying to send out more read-receipts, they will get buffered up into fewer transactions. Defaults to 50. Example configuration: ```yaml federation_rr_transactions_per_room_per_second: 40 ``` --- ## Media Store Config options related to Synapse's media store. --- ### `enable_media_repo` Enable the media store service in the Synapse master. Defaults to true. Set to false if you are using a separate media store worker. Example configuration: ```yaml enable_media_repo: false ``` --- ### `media_store_path` Directory where uploaded images and attachments are stored. Example configuration: ```yaml media_store_path: "DATADIR/media_store" ``` --- ### `max_pending_media_uploads` How many *pending media uploads* can a given user have? A pending media upload is a created MXC URI that (a) is not expired (the `unused_expires_at` timestamp has not passed) and (b) the media has not yet been uploaded for. Defaults to 5. Example configuration: ```yaml max_pending_media_uploads: 5 ``` --- ### `unused_expiration_time` How long to wait in milliseconds before expiring created media IDs. Defaults to "24h" Example configuration: ```yaml unused_expiration_time: "1h" ``` --- ### `media_storage_providers` Media storage providers allow media to be stored in different locations. Defaults to none. Associated sub-options are: * `module`: type of resource, e.g. `file_system`. * `store_local`: whether to store newly uploaded local files * `store_remote`: whether to store newly downloaded local files * `store_synchronous`: whether to wait for successful storage for local uploads * `config`: sets a path to the resource through the `directory` option Example configuration: ```yaml media_storage_providers: - module: file_system store_local: false store_remote: false store_synchronous: false config: directory: /mnt/some/other/directory ``` --- ### `max_upload_size` The largest allowed upload size in bytes. If you are using a reverse proxy you may also need to set this value in your reverse proxy's config. Defaults to 50M. Notably Nginx has a small max body size by default. See [here](../../reverse_proxy.md) for more on using a reverse proxy with Synapse. Example configuration: ```yaml max_upload_size: 60M ``` --- ### `max_image_pixels` Maximum number of pixels that will be thumbnailed. Defaults to 32M. Example configuration: ```yaml max_image_pixels: 35M ``` --- ### `prevent_media_downloads_from` A list of domains to never download media from. Media from these domains that is already downloaded will not be deleted, but will be inaccessible to users. This option does not affect admin APIs trying to download/operate on media. This will not prevent the listed domains from accessing media themselves. It simply prevents users on this server from downloading media originating from the listed servers. This will have no effect on media originating from the local server. This only affects media downloaded from other Matrix servers, to block domains from URL previews see [`url_preview_url_blacklist`](#url_preview_url_blacklist). Defaults to an empty list (nothing blocked). Example configuration: ```yaml prevent_media_downloads_from: - evil.example.org - evil2.example.org ``` --- ### `dynamic_thumbnails` Whether to generate new thumbnails on the fly to precisely match the resolution requested by the client. If true then whenever a new resolution is requested by the client the server will generate a new thumbnail. If false the server will pick a thumbnail from a precalculated list. Defaults to false. Example configuration: ```yaml dynamic_thumbnails: true ``` --- ### `thumbnail_sizes` List of thumbnails to precalculate when an image is uploaded. Associated sub-options are: * `width` * `height` * `method`: i.e. `crop`, `scale`, etc. Example configuration: ```yaml thumbnail_sizes: - width: 32 height: 32 method: crop - width: 96 height: 96 method: crop - width: 320 height: 240 method: scale - width: 640 height: 480 method: scale - width: 800 height: 600 method: scale ``` --- ### `media_retention` Controls whether local media and entries in the remote media cache (media that is downloaded from other homeservers) should be removed under certain conditions, typically for the purpose of saving space. Purging media files will be the carried out by the media worker (that is, the worker that has the `enable_media_repo` homeserver config option set to 'true'). This may be the main process. The `media_retention.local_media_lifetime` and `media_retention.remote_media_lifetime` config options control whether media will be purged if it has not been accessed in a given amount of time. Note that media is 'accessed' when loaded in a room in a client, or otherwise downloaded by a local or remote user. If the media has never been accessed, the media's creation time is used instead. Both thumbnails and the original media will be removed. If either of these options are unset, then media of that type will not be purged. Local or cached remote media that has been [quarantined](../../admin_api/media_admin_api.md#quarantining-media-in-a-room) will not be deleted. Similarly, local media that has been marked as [protected from quarantine](../../admin_api/media_admin_api.md#protecting-media-from-being-quarantined) will not be deleted. Example configuration: ```yaml media_retention: local_media_lifetime: 90d remote_media_lifetime: 14d ``` --- ### `url_preview_enabled` This setting determines whether the preview URL API is enabled. It is disabled by default. Set to true to enable. If enabled you must specify a `url_preview_ip_range_blacklist` blacklist. Example configuration: ```yaml url_preview_enabled: true ``` --- ### `url_preview_ip_range_blacklist` List of IP address CIDR ranges that the URL preview spider is denied from accessing. There are no defaults: you must explicitly specify a list for URL previewing to work. You should specify any internal services in your network that you do not want synapse to try to connect to, otherwise anyone in any Matrix room could cause your synapse to issue arbitrary GET requests to your internal services, causing serious security issues. (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly listed here, since they correspond to unroutable addresses.) This must be specified if `url_preview_enabled` is set. It is recommended that you use the following example list as a starting point. Note: The value is ignored when an HTTP proxy is in use. Example configuration: ```yaml url_preview_ip_range_blacklist: - '127.0.0.0/8' - '10.0.0.0/8' - '172.16.0.0/12' - '192.168.0.0/16' - '100.64.0.0/10' - '192.0.0.0/24' - '169.254.0.0/16' - '192.88.99.0/24' - '198.18.0.0/15' - '192.0.2.0/24' - '198.51.100.0/24' - '203.0.113.0/24' - '224.0.0.0/4' - '::1/128' - 'fe80::/10' - 'fc00::/7' - '2001:db8::/32' - 'ff00::/8' - 'fec0::/10' ``` --- ### `url_preview_ip_range_whitelist` This option sets a list of IP address CIDR ranges that the URL preview spider is allowed to access even if they are specified in `url_preview_ip_range_blacklist`. This is useful for specifying exceptions to wide-ranging blacklisted target IP ranges - e.g. for enabling URL previews for a specific private website only visible in your network. Defaults to none. Example configuration: ```yaml url_preview_ip_range_whitelist: - '192.168.1.1' ``` --- ### `url_preview_url_blacklist` Optional list of URL matches that the URL preview spider is denied from accessing. You should use `url_preview_ip_range_blacklist` in preference to this, otherwise someone could define a public DNS entry that points to a private IP address and circumvent the blacklist. This is more useful if you know there is an entire shape of URL that you know that will never want synapse to try to spider. Each list entry is a dictionary of url component attributes as returned by urlparse.urlsplit as applied to the absolute form of the URL. See [here](https://docs.python.org/2/library/urlparse.html#urlparse.urlsplit) for more information. Some examples are: * `username` * `netloc` * `scheme` * `path` The values of the dictionary are treated as a filename match pattern applied to that component of URLs, unless they start with a ^ in which case they are treated as a regular expression match. If all the specified component matches for a given list item succeed, the URL is blacklisted. Example configuration: ```yaml url_preview_url_blacklist: # blacklist any URL with a username in its URI - username: '*' # blacklist all *.google.com URLs - netloc: 'google.com' - netloc: '*.google.com' # blacklist all plain HTTP URLs - scheme: 'http' # blacklist http(s)://www.acme.com/foo - netloc: 'www.acme.com' path: '/foo' # blacklist any URL with a literal IPv4 address - netloc: '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' ``` --- ### `max_spider_size` The largest allowed URL preview spidering size in bytes. Defaults to 10M. Example configuration: ```yaml max_spider_size: 8M ``` --- ### `url_preview_accept_language` A list of values for the Accept-Language HTTP header used when downloading webpages during URL preview generation. This allows Synapse to specify the preferred languages that URL previews should be in when communicating with remote servers. Each value is a IETF language tag; a 2-3 letter identifier for a language, optionally followed by subtags separated by '-', specifying a country or region variant. Multiple values can be provided, and a weight can be added to each by using quality value syntax (;q=). '*' translates to any language. Defaults to "en". Example configuration: ```yaml url_preview_accept_language: - 'en-UK' - 'en-US;q=0.9' - 'fr;q=0.8' - '*;q=0.7' ``` --- ### `oembed` oEmbed allows for easier embedding content from a website. It can be used for generating URLs previews of services which support it. A default list of oEmbed providers is included with Synapse. Set `disable_default_providers` to true to disable using these default oEmbed URLs. Use `additional_providers` to specify additional files with oEmbed configuration (each should be in the form of providers.json). By default this list is empty. Example configuration: ```yaml oembed: disable_default_providers: true additional_providers: - oembed/my_providers.json ``` --- ## Captcha See [here](../../CAPTCHA_SETUP.md) for full details on setting up captcha. --- ### `recaptcha_public_key` This homeserver's ReCAPTCHA public key. Must be specified if [`enable_registration_captcha`](#enable_registration_captcha) is enabled. Example configuration: ```yaml recaptcha_public_key: "YOUR_PUBLIC_KEY" ``` --- ### `recaptcha_private_key` This homeserver's ReCAPTCHA private key. Must be specified if [`enable_registration_captcha`](#enable_registration_captcha) is enabled. Example configuration: ```yaml recaptcha_private_key: "YOUR_PRIVATE_KEY" ``` --- ### `enable_registration_captcha` Set to `true` to require users to complete a CAPTCHA test when registering an account. Requires a valid ReCaptcha public/private key. Defaults to `false`. Note that [`enable_registration`](#enable_registration) must also be set to allow account registration. Example configuration: ```yaml enable_registration_captcha: true ``` --- ### `recaptcha_siteverify_api` The API endpoint to use for verifying `m.login.recaptcha` responses. Defaults to `https://www.recaptcha.net/recaptcha/api/siteverify`. Example configuration: ```yaml recaptcha_siteverify_api: "https://my.recaptcha.site" ``` --- ## TURN Options related to adding a TURN server to Synapse. --- ### `turn_uris` The public URIs of the TURN server to give to clients. Example configuration: ```yaml turn_uris: [turn:example.org] ``` --- ### `turn_shared_secret` The shared secret used to compute passwords for the TURN server. Example configuration: ```yaml turn_shared_secret: "YOUR_SHARED_SECRET" ``` --- ### `turn_username` and `turn_password` The Username and password if the TURN server needs them and does not use a token. Example configuration: ```yaml turn_username: "TURNSERVER_USERNAME" turn_password: "TURNSERVER_PASSWORD" ``` --- ### `turn_user_lifetime` How long generated TURN credentials last. Defaults to 1h. Example configuration: ```yaml turn_user_lifetime: 2h ``` --- ### `turn_allow_guests` Whether guests should be allowed to use the TURN server. This defaults to true, otherwise VoIP will be unreliable for guests. However, it does introduce a slight security risk as it allows users to connect to arbitrary endpoints without having first signed up for a valid account (e.g. by passing a CAPTCHA). Example configuration: ```yaml turn_allow_guests: false ``` --- ## Registration ## Registration can be rate-limited using the parameters in the [Ratelimiting](#ratelimiting) section of this manual. --- ### `enable_registration` Enable registration for new users. Defaults to `false`. It is highly recommended that if you enable registration, you set one or more or the following options, to avoid abuse of your server by "bots": * [`enable_registration_captcha`](#enable_registration_captcha) * [`registrations_require_3pid`](#registrations_require_3pid) * [`registration_requires_token`](#registration_requires_token) (In order to enable registration without any verification, you must also set [`enable_registration_without_verification`](#enable_registration_without_verification).) Note that even if this setting is disabled, new accounts can still be created via the admin API if [`registration_shared_secret`](#registration_shared_secret) is set. Example configuration: ```yaml enable_registration: true ``` --- ### `enable_registration_without_verification` Enable registration without email or captcha verification. Note: this option is *not* recommended, as registration without verification is a known vector for spam and abuse. Defaults to `false`. Has no effect unless [`enable_registration`](#enable_registration) is also enabled. Example configuration: ```yaml enable_registration_without_verification: true ``` --- ### `registrations_require_3pid` If this is set, users must provide all of the specified types of 3PID when registering an account. Note that [`enable_registration`](#enable_registration) must also be set to allow account registration. Example configuration: ```yaml registrations_require_3pid: - email - msisdn ``` --- ### `disable_msisdn_registration` Explicitly disable asking for MSISDNs from the registration flow (overrides `registrations_require_3pid` if MSISDNs are set as required). Example configuration: ```yaml disable_msisdn_registration: true ``` --- ### `allowed_local_3pids` Mandate that users are only allowed to associate certain formats of 3PIDs with accounts on this server, as specified by the `medium` and `pattern` sub-options. Example configuration: ```yaml allowed_local_3pids: - medium: email pattern: '^[^@]+@matrix\.org$' - medium: email pattern: '^[^@]+@vector\.im$' - medium: msisdn pattern: '\+44' ``` --- ### `enable_3pid_lookup` Enable 3PIDs lookup requests to identity servers from this server. Defaults to true. Example configuration: ```yaml enable_3pid_lookup: false ``` --- ### `registration_requires_token` Require users to submit a token during registration. Tokens can be managed using the admin [API](../administration/admin_api/registration_tokens.md). Disabling this option will not delete any tokens previously generated. Defaults to `false`. Set to `true` to enable. Note that [`enable_registration`](#enable_registration) must also be set to allow account registration. Example configuration: ```yaml registration_requires_token: true ``` --- ### `registration_shared_secret` If set, allows registration of standard or admin accounts by anyone who has the shared secret, even if [`enable_registration`](#enable_registration) is not set. This is primarily intended for use with the `register_new_matrix_user` script (see [Registering a user](../../setup/installation.md#registering-a-user)); however, the interface is [documented](../../admin_api/register_api.html). See also [`registration_shared_secret_path`](#registration_shared_secret_path). Example configuration: ```yaml registration_shared_secret: ``` --- ### `registration_shared_secret_path` An alternative to [`registration_shared_secret`](#registration_shared_secret): allows the shared secret to be specified in an external file. The file should be a plain text file, containing only the shared secret. If this file does not exist, Synapse will create a new shared secret on startup and store it in this file. Example configuration: ```yaml registration_shared_secret_path: /path/to/secrets/file ``` _Added in Synapse 1.67.0._ --- ### `bcrypt_rounds` Set the number of bcrypt rounds used to generate password hash. Larger numbers increase the work factor needed to generate the hash. The default number is 12 (which equates to 2^12 rounds). N.B. that increasing this will exponentially increase the time required to register or login - e.g. 24 => 2^24 rounds which will take >20 mins. Example configuration: ```yaml bcrypt_rounds: 14 ``` --- ### `allow_guest_access` Allows users to register as guests without a password/email/etc, and participate in rooms hosted on this server which have been made accessible to anonymous users. Defaults to false. Example configuration: ```yaml allow_guest_access: true ``` --- ### `default_identity_server` The identity server which we suggest that clients should use when users log in on this server. (By default, no suggestion is made, so it is left up to the client. This setting is ignored unless `public_baseurl` is also explicitly set.) Example configuration: ```yaml default_identity_server: https://matrix.org ``` --- ### `account_threepid_delegates` Delegate verification of phone numbers to an identity server. When a user wishes to add a phone number to their account, we need to verify that they actually own that phone number, which requires sending them a text message (SMS). Currently Synapse does not support sending those texts itself and instead delegates the task to an identity server. The base URI for the identity server to be used is specified by the `account_threepid_delegates.msisdn` option. If this is left unspecified, Synapse will not allow users to add phone numbers to their account. (Servers handling the these requests must answer the `/requestToken` endpoints defined by the Matrix Identity Service API [specification](https://matrix.org/docs/spec/identity_service/latest).) *Deprecated in Synapse 1.64.0*: The `email` option is deprecated. *Removed in Synapse 1.66.0*: The `email` option has been removed. If present, Synapse will report a configuration error on startup. Example configuration: ```yaml account_threepid_delegates: msisdn: http://localhost:8090 # Delegate SMS sending to this local process ``` --- ### `enable_set_displayname` Whether users are allowed to change their displayname after it has been initially set. Useful when provisioning users based on the contents of a third-party directory. Does not apply to server administrators. Defaults to true. Example configuration: ```yaml enable_set_displayname: false ``` --- ### `enable_set_avatar_url` Whether users are allowed to change their avatar after it has been initially set. Useful when provisioning users based on the contents of a third-party directory. Does not apply to server administrators. Defaults to true. Example configuration: ```yaml enable_set_avatar_url: false ``` --- ### `enable_3pid_changes` Whether users can change the third-party IDs associated with their accounts (email address and msisdn). Defaults to true. Example configuration: ```yaml enable_3pid_changes: false ``` --- ### `auto_join_rooms` Users who register on this homeserver will automatically be joined to the rooms listed under this option. By default, any room aliases included in this list will be created as a publicly joinable room when the first user registers for the homeserver. If the room already exists, make certain it is a publicly joinable room, i.e. the join rule of the room must be set to 'public'. You can find more options relating to auto-joining rooms below. As Spaces are just rooms under the hood, Space aliases may also be used. Example configuration: ```yaml auto_join_rooms: - "#exampleroom:example.com" - "#anotherexampleroom:example.com" ``` --- ### `autocreate_auto_join_rooms` Where `auto_join_rooms` are specified, setting this flag ensures that the rooms exist by creating them when the first user on the homeserver registers. This option will not create Spaces. By default the auto-created rooms are publicly joinable from any federated server. Use the `autocreate_auto_join_rooms_federated` and `autocreate_auto_join_room_preset` settings to customise this behaviour. Setting to false means that if the rooms are not manually created, users cannot be auto-joined since they do not exist. Defaults to true. Example configuration: ```yaml autocreate_auto_join_rooms: false ``` --- ### `autocreate_auto_join_rooms_federated` Whether the rooms listed in `auto_join_rooms` that are auto-created are available via federation. Only has an effect if `autocreate_auto_join_rooms` is true. Note that whether a room is federated cannot be modified after creation. Defaults to true: the room will be joinable from other servers. Set to false to prevent users from other homeservers from joining these rooms. Example configuration: ```yaml autocreate_auto_join_rooms_federated: false ``` --- ### `autocreate_auto_join_room_preset` The room preset to use when auto-creating one of `auto_join_rooms`. Only has an effect if `autocreate_auto_join_rooms` is true. Possible values for this option are: * "public_chat": the room is joinable by anyone, including federated servers if `autocreate_auto_join_rooms_federated` is true (the default). * "private_chat": an invitation is required to join these rooms. * "trusted_private_chat": an invitation is required to join this room and the invitee is assigned a power level of 100 upon joining the room. If a value of "private_chat" or "trusted_private_chat" is used then `auto_join_mxid_localpart` must also be configured. Defaults to "public_chat". Example configuration: ```yaml autocreate_auto_join_room_preset: private_chat ``` --- ### `auto_join_mxid_localpart` The local part of the user id which is used to create `auto_join_rooms` if `autocreate_auto_join_rooms` is true. If this is not provided then the initial user account that registers will be used to create the rooms. The user id is also used to invite new users to any auto-join rooms which are set to invite-only. It *must* be configured if `autocreate_auto_join_room_preset` is set to "private_chat" or "trusted_private_chat". Note that this must be specified in order for new users to be correctly invited to any auto-join rooms which have been set to invite-only (either at the time of creation or subsequently). Note that, if the room already exists, this user must be joined and have the appropriate permissions to invite new members. Example configuration: ```yaml auto_join_mxid_localpart: system ``` --- ### `auto_join_rooms_for_guests` When `auto_join_rooms` is specified, setting this flag to false prevents guest accounts from being automatically joined to the rooms. Defaults to true. Example configuration: ```yaml auto_join_rooms_for_guests: false ``` --- ### `inhibit_user_in_use_error` Whether to inhibit errors raised when registering a new account if the user ID already exists. If turned on, requests to `/register/available` will always show a user ID as available, and Synapse won't raise an error when starting a registration with a user ID that already exists. However, Synapse will still raise an error if the registration completes and the username conflicts. Defaults to false. Example configuration: ```yaml inhibit_user_in_use_error: true ``` --- ## User session management --- ### `session_lifetime` Time that a user's session remains valid for, after they log in. Note that this is not currently compatible with guest logins. Note also that this is calculated at login time: changes are not applied retrospectively to users who have already logged in. By default, this is infinite. Example configuration: ```yaml session_lifetime: 24h ``` --- ### `refresh_access_token_lifetime` Time that an access token remains valid for, if the session is using refresh tokens. For more information about refresh tokens, please see the [manual](user_authentication/refresh_tokens.md). Note that this only applies to clients which advertise support for refresh tokens. Note also that this is calculated at login time and refresh time: changes are not applied to existing sessions until they are refreshed. By default, this is 5 minutes. Example configuration: ```yaml refreshable_access_token_lifetime: 10m ``` --- ### `refresh_token_lifetime` Time that a refresh token remains valid for (provided that it is not exchanged for another one first). This option can be used to automatically log-out inactive sessions. Please see the manual for more information. Note also that this is calculated at login time and refresh time: changes are not applied to existing sessions until they are refreshed. By default, this is infinite. Example configuration: ```yaml refresh_token_lifetime: 24h ``` --- ### `nonrefreshable_access_token_lifetime` Time that an access token remains valid for, if the session is NOT using refresh tokens. Please note that not all clients support refresh tokens, so setting this to a short value may be inconvenient for some users who will then be logged out frequently. Note also that this is calculated at login time: changes are not applied retrospectively to existing sessions for users that have already logged in. By default, this is infinite. Example configuration: ```yaml nonrefreshable_access_token_lifetime: 24h ``` --- ### `ui_auth` The amount of time to allow a user-interactive authentication session to be active. This defaults to 0, meaning the user is queried for their credentials before every action, but this can be overridden to allow a single validation to be re-used. This weakens the protections afforded by the user-interactive authentication process, by allowing for multiple (and potentially different) operations to use the same validation session. This is ignored for potentially "dangerous" operations (including deactivating an account, modifying an account password, adding a 3PID, and minting additional login tokens). Use the `session_timeout` sub-option here to change the time allowed for credential validation. Example configuration: ```yaml ui_auth: session_timeout: "15s" ``` --- ### `login_via_existing_session` Matrix supports the ability of an existing session to mint a login token for another client. Synapse disables this by default as it has security ramifications -- a malicious client could use the mechanism to spawn more than one session. The duration of time the generated token is valid for can be configured with the `token_timeout` sub-option. User-interactive authentication is required when this is enabled unless the `require_ui_auth` sub-option is set to `False`. Example configuration: ```yaml login_via_existing_session: enabled: true require_ui_auth: false token_timeout: "5m" ``` --- ## Metrics Config options related to metrics. --- ### `enable_metrics` Set to true to enable collection and rendering of performance metrics. Defaults to false. Example configuration: ```yaml enable_metrics: true ``` --- ### `sentry` Use this option to enable sentry integration. Provide the DSN assigned to you by sentry with the `dsn` setting. An optional `environment` field can be used to specify an environment. This allows for log maintenance based on different environments, ensuring better organization and analysis.. NOTE: While attempts are made to ensure that the logs don't contain any sensitive information, this cannot be guaranteed. By enabling this option the sentry server may therefore receive sensitive information, and it in turn may then disseminate sensitive information through insecure notification channels if so configured. Example configuration: ```yaml sentry: environment: "production" dsn: "..." ``` --- ### `metrics_flags` Flags to enable Prometheus metrics which are not suitable to be enabled by default, either for performance reasons or limited use. Currently the only option is `known_servers`, which publishes `synapse_federation_known_servers`, a gauge of the number of servers this homeserver knows about, including itself. May cause performance problems on large homeservers. Example configuration: ```yaml metrics_flags: known_servers: true ``` --- ### `report_stats` Whether or not to report homeserver usage statistics. This is originally set when generating the config. Set this option to true or false to change the current behavior. See [Reporting Homeserver Usage Statistics](../administration/monitoring/reporting_homeserver_usage_statistics.md) for information on what data is reported. Statistics will be reported 5 minutes after Synapse starts, and then every 3 hours after that. Example configuration: ```yaml report_stats: true ``` --- ### `report_stats_endpoint` The endpoint to report homeserver usage statistics to. Defaults to https://matrix.org/report-usage-stats/push Example configuration: ```yaml report_stats_endpoint: https://example.com/report-usage-stats/push ``` --- ## API Configuration Config settings related to the client/server API --- ### `room_prejoin_state` This setting controls the state that is shared with users upon receiving an invite to a room, or in reply to a knock on a room. By default, the following state events are shared with users: - `m.room.join_rules` - `m.room.canonical_alias` - `m.room.avatar` - `m.room.encryption` - `m.room.name` - `m.room.create` - `m.room.topic` To change the default behavior, use the following sub-options: * `disable_default_event_types`: boolean. Set to `true` to disable the above defaults. If this is enabled, only the event types listed in `additional_event_types` are shared. Defaults to `false`. * `additional_event_types`: A list of additional state events to include in the events to be shared. By default, this list is empty (so only the default event types are shared). Each entry in this list should be either a single string or a list of two strings. * A standalone string `t` represents all events with type `t` (i.e. with no restrictions on state keys). * A pair of strings `[t, s]` represents a single event with type `t` and state key `s`. The same type can appear in two entries with different state keys: in this situation, both state keys are included in prejoin state. Example configuration: ```yaml room_prejoin_state: disable_default_event_types: false additional_event_types: # Share all events of type `org.example.custom.event.typeA` - org.example.custom.event.typeA # Share only events of type `org.example.custom.event.typeB` whose # state_key is "foo" - ["org.example.custom.event.typeB", "foo"] # Share only events of type `org.example.custom.event.typeC` whose # state_key is "bar" or "baz" - ["org.example.custom.event.typeC", "bar"] - ["org.example.custom.event.typeC", "baz"] ``` *Changed in Synapse 1.74:* admins can filter the events in prejoin state based on their state key. --- ### `track_puppeted_user_ips` We record the IP address of clients used to access the API for various reasons, including displaying it to the user in the "Where you're signed in" dialog. By default, when puppeting another user via the admin API, the client IP address is recorded against the user who created the access token (ie, the admin user), and *not* the puppeted user. Set this option to true to also record the IP address against the puppeted user. (This also means that the puppeted user will count as an "active" user for the purpose of monthly active user tracking - see `limit_usage_by_mau` etc above.) Example configuration: ```yaml track_puppeted_user_ips: true ``` --- ### `app_service_config_files` A list of application service config files to use. Example configuration: ```yaml app_service_config_files: - app_service_1.yaml - app_service_2.yaml ``` --- ### `track_appservice_user_ips` Defaults to false. Set to true to enable tracking of application service IP addresses. Implicitly enables MAU tracking for application service users. Example configuration: ```yaml track_appservice_user_ips: true ``` --- ### `use_appservice_legacy_authorization` Whether to send the application service access tokens via the `access_token` query parameter per older versions of the Matrix specification. Defaults to false. Set to true to enable sending access tokens via a query parameter. **Enabling this option is considered insecure and is not recommended. ** Example configuration: ```yaml use_appservice_legacy_authorization: true ``` --- ### `macaroon_secret_key` A secret which is used to sign - access token for guest users, - short-term login token used during SSO logins (OIDC or SAML2) and - token used for unsubscribing from email notifications. If none is specified, the `registration_shared_secret` is used, if one is given; otherwise, a secret key is derived from the signing key. Example configuration: ```yaml macaroon_secret_key: ``` --- ### `form_secret` A secret which is used to calculate HMACs for form values, to stop falsification of values. Must be specified for the User Consent forms to work. Example configuration: ```yaml form_secret: ``` --- ## Signing Keys Config options relating to signing keys --- ### `signing_key_path` Path to the signing key to sign events and federation requests with. *New in Synapse 1.67*: If this file does not exist, Synapse will create a new signing key on startup and store it in this file. Example configuration: ```yaml signing_key_path: "CONFDIR/SERVERNAME.signing.key" ``` --- ### `old_signing_keys` The keys that the server used to sign messages with but won't use to sign new messages. For each key, `key` should be the base64-encoded public key, and `expired_ts`should be the time (in milliseconds since the unix epoch) that it was last used. It is possible to build an entry from an old `signing.key` file using the `export_signing_key` script which is provided with synapse. Example configuration: ```yaml old_signing_keys: "ed25519:id": { key: "base64string", expired_ts: 123456789123 } ``` --- ### `key_refresh_interval` How long key response published by this server is valid for. Used to set the `valid_until_ts` in `/key/v2` APIs. Determines how quickly servers will query to check which keys are still valid. Defaults to 1d. Example configuration: ```yaml key_refresh_interval: 2d ``` --- ### `trusted_key_servers` The trusted servers to download signing keys from. When we need to fetch a signing key, each server is tried in parallel. Normally, the connection to the key server is validated via TLS certificates. Additional security can be provided by configuring a `verify key`, which will make synapse check that the response is signed by that key. This setting supersedes an older setting named `perspectives`. The old format is still supported for backwards-compatibility, but it is deprecated. `trusted_key_servers` defaults to matrix.org, but using it will generate a warning on start-up. To suppress this warning, set `suppress_key_server_warning` to true. If the use of a trusted key server has to be deactivated, e.g. in a private federation or for privacy reasons, this can be realised by setting an empty array (`trusted_key_servers: []`). Then Synapse will request the keys directly from the server that owns the keys. If Synapse does not get keys directly from the server, the events of this server will be rejected. Options for each entry in the list include: * `server_name`: the name of the server. Required. * `verify_keys`: an optional map from key id to base64-encoded public key. If specified, we will check that the response is signed by at least one of the given keys. * `accept_keys_insecurely`: a boolean. Normally, if `verify_keys` is unset, and `federation_verify_certificates` is not `true`, synapse will refuse to start, because this would allow anyone who can spoof DNS responses to masquerade as the trusted key server. If you know what you are doing and are sure that your network environment provides a secure connection to the key server, you can set this to `true` to override this behaviour. Example configuration #1: ```yaml trusted_key_servers: - server_name: "my_trusted_server.example.com" verify_keys: "ed25519:auto": "abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr" - server_name: "my_other_trusted_server.example.com" ``` Example configuration #2: ```yaml trusted_key_servers: - server_name: "matrix.org" ``` --- ### `suppress_key_server_warning` Set the following to true to disable the warning that is emitted when the `trusted_key_servers` include 'matrix.org'. See above. Example configuration: ```yaml suppress_key_server_warning: true ``` --- ### `key_server_signing_keys_path` The signing keys to use when acting as a trusted key server. If not specified defaults to the server signing key. Can contain multiple keys, one per line. Example configuration: ```yaml key_server_signing_keys_path: "key_server_signing_keys.key" ``` --- ## Single sign-on integration The following settings can be used to make Synapse use a single sign-on provider for authentication, instead of its internal password database. You will probably also want to set the following options to `false` to disable the regular login/registration flows: * [`enable_registration`](#enable_registration) * [`password_config.enabled`](#password_config) --- ### `saml2_config` Enable SAML2 for registration and login. Uses pysaml2. To learn more about pysaml and to find a full list options for configuring pysaml, read the docs [here](https://pysaml2.readthedocs.io/en/latest/). At least one of `sp_config` or `config_path` must be set in this section to enable SAML login. You can either put your entire pysaml config inline using the `sp_config` option, or you can specify a path to a psyaml config file with the sub-option `config_path`. This setting has the following sub-options: * `idp_name`: A user-facing name for this identity provider, which is used to offer the user a choice of login mechanisms. * `idp_icon`: An optional icon for this identity provider, which is presented by clients and Synapse's own IdP picker page. If given, must be an MXC URI of the format `mxc:///`. (An easy way to obtain such an MXC URI is to upload an image to an (unencrypted) room and then copy the "url" from the source of the event.) * `idp_brand`: An optional brand for this identity provider, allowing clients to style the login flow according to the identity provider in question. See the [spec](https://spec.matrix.org/latest/) for possible options here. * `sp_config`: the configuration for the pysaml2 Service Provider. See pysaml2 docs for format of config. Default values will be used for the `entityid` and `service` settings, so it is not normally necessary to specify them unless you need to override them. Here are a few useful sub-options for configuring pysaml: * `metadata`: Point this to the IdP's metadata. You must provide either a local file via the `local` attribute or (preferably) a URL via the `remote` attribute. * `accepted_time_diff: 3`: Allowed clock difference in seconds between the homeserver and IdP. Defaults to 0. * `service`: By default, the user has to go to our login page first. If you'd like to allow IdP-initiated login, set `allow_unsolicited` to true under `sp` in the `service` section. * `config_path`: specify a separate pysaml2 configuration file thusly: `config_path: "CONFDIR/sp_conf.py"` * `saml_session_lifetime`: The lifetime of a SAML session. This defines how long a user has to complete the authentication process, if `allow_unsolicited` is unset. The default is 15 minutes. * `user_mapping_provider`: Using this option, an external module can be provided as a custom solution to mapping attributes returned from a saml provider onto a matrix user. The `user_mapping_provider` has the following attributes: * `module`: The custom module's class. * `config`: Custom configuration values for the module. Use the values provided in the example if you are using the built-in user_mapping_provider, or provide your own config values for a custom class if you are using one. This section will be passed as a Python dictionary to the module's `parse_config` method. The built-in provider takes the following two options: * `mxid_source_attribute`: The SAML attribute (after mapping via the attribute maps) to use to derive the Matrix ID from. It is 'uid' by default. Note: This used to be configured by the `saml2_config.mxid_source_attribute option`. If that is still defined, its value will be used instead. * `mxid_mapping`: The mapping system to use for mapping the saml attribute onto a matrix ID. Options include: `hexencode` (which maps unpermitted characters to '=xx') and `dotreplace` (which replaces unpermitted characters with '.'). The default is `hexencode`. Note: This used to be configured by the `saml2_config.mxid_mapping option`. If that is still defined, its value will be used instead. * `grandfathered_mxid_source_attribute`: In previous versions of synapse, the mapping from SAML attribute to MXID was always calculated dynamically rather than stored in a table. For backwards- compatibility, we will look for `user_ids` matching such a pattern before creating a new account. This setting controls the SAML attribute which will be used for this backwards-compatibility lookup. Typically it should be 'uid', but if the attribute maps are changed, it may be necessary to change it. The default is 'uid'. * `attribute_requirements`: It is possible to configure Synapse to only allow logins if SAML attributes match particular values. The requirements can be listed under `attribute_requirements` as shown in the example. All of the listed attributes must match for the login to be permitted. * `idp_entityid`: If the metadata XML contains multiple IdP entities then the `idp_entityid` option must be set to the entity to redirect users to. Most deployments only have a single IdP entity and so should omit this option. Once SAML support is enabled, a metadata file will be exposed at `https://:/_synapse/client/saml2/metadata.xml`, which you may be able to use to configure your SAML IdP with. Alternatively, you can manually configure the IdP to use an ACS location of `https://:/_synapse/client/saml2/authn_response`. Example configuration: ```yaml saml2_config: sp_config: metadata: local: ["saml2/idp.xml"] remote: - url: https://our_idp/metadata.xml accepted_time_diff: 3 service: sp: allow_unsolicited: true # The examples below are just used to generate our metadata xml, and you # may well not need them, depending on your setup. Alternatively you # may need a whole lot more detail - see the pysaml2 docs! description: ["My awesome SP", "en"] name: ["Test SP", "en"] ui_info: display_name: - lang: en text: "Display Name is the descriptive name of your service." description: - lang: en text: "Description should be a short paragraph explaining the purpose of the service." information_url: - lang: en text: "https://example.com/terms-of-service" privacy_statement_url: - lang: en text: "https://example.com/privacy-policy" keywords: - lang: en text: ["Matrix", "Element"] logo: - lang: en text: "https://example.com/logo.svg" width: "200" height: "80" organization: name: Example com display_name: - ["Example co", "en"] url: "http://example.com" contact_person: - given_name: Bob sur_name: "the Sysadmin" email_address": ["admin@example.com"] contact_type": technical saml_session_lifetime: 5m user_mapping_provider: # Below options are intended for the built-in provider, they should be # changed if using a custom module. config: mxid_source_attribute: displayName mxid_mapping: dotreplace grandfathered_mxid_source_attribute: upn attribute_requirements: - attribute: userGroup value: "staff" - attribute: department value: "sales" idp_entityid: 'https://our_idp/entityid' ``` --- ### `oidc_providers` List of OpenID Connect (OIDC) / OAuth 2.0 identity providers, for registration and login. See [here](../../openid.md) for information on how to configure these options. For backwards compatibility, it is also possible to configure a single OIDC provider via an `oidc_config` setting. This is now deprecated and admins are advised to migrate to the `oidc_providers` format. (When doing that migration, use `oidc` for the `idp_id` to ensure that existing users continue to be recognised.) Options for each entry include: * `idp_id`: a unique identifier for this identity provider. Used internally by Synapse; should be a single word such as 'github'. Note that, if this is changed, users authenticating via that provider will no longer be recognised as the same user! (Use "oidc" here if you are migrating from an old `oidc_config` configuration.) * `idp_name`: A user-facing name for this identity provider, which is used to offer the user a choice of login mechanisms. * `idp_icon`: An optional icon for this identity provider, which is presented by clients and Synapse's own IdP picker page. If given, must be an MXC URI of the format `mxc:///`. (An easy way to obtain such an MXC URI is to upload an image to an (unencrypted) room and then copy the "url" from the source of the event.) * `idp_brand`: An optional brand for this identity provider, allowing clients to style the login flow according to the identity provider in question. See the [spec](https://spec.matrix.org/latest/) for possible options here. * `discover`: set to false to disable the use of the OIDC discovery mechanism to discover endpoints. Defaults to true. * `issuer`: Required. The OIDC issuer. Used to validate tokens and (if discovery is enabled) to discover the provider's endpoints. * `client_id`: Required. oauth2 client id to use. * `client_secret`: oauth2 client secret to use. May be omitted if `client_secret_jwt_key` is given, or if `client_auth_method` is 'none'. Must be omitted if `client_secret_path` is specified. * `client_secret_path`: path to the oauth2 client secret to use. With that it's not necessary to leak secrets into the config file itself. Mutually exclusive with `client_secret`. Can be omitted if `client_secret_jwt_key` is specified. *Added in Synapse 1.91.0.* * `client_secret_jwt_key`: Alternative to client_secret: details of a key used to create a JSON Web Token to be used as an OAuth2 client secret. If given, must be a dictionary with the following properties: * `key`: a pem-encoded signing key. Must be a suitable key for the algorithm specified. Required unless `key_file` is given. * `key_file`: the path to file containing a pem-encoded signing key file. Required unless `key` is given. * `jwt_header`: a dictionary giving properties to include in the JWT header. Must include the key `alg`, giving the algorithm used to sign the JWT, such as "ES256", using the JWA identifiers in RFC7518. * `jwt_payload`: an optional dictionary giving properties to include in the JWT payload. Normally this should include an `iss` key. * `client_auth_method`: auth method to use when exchanging the token. Valid values are `client_secret_basic` (default), `client_secret_post` and `none`. * `pkce_method`: Whether to use proof key for code exchange when requesting and exchanging the token. Valid values are: `auto`, `always`, or `never`. Defaults to `auto`, which uses PKCE if supported during metadata discovery. Set to `always` to force enable PKCE or `never` to force disable PKCE. * `scopes`: list of scopes to request. This should normally include the "openid" scope. Defaults to `["openid"]`. * `authorization_endpoint`: the oauth2 authorization endpoint. Required if provider discovery is disabled. * `token_endpoint`: the oauth2 token endpoint. Required if provider discovery is disabled. * `userinfo_endpoint`: the OIDC userinfo endpoint. Required if discovery is disabled and the 'openid' scope is not requested. * `jwks_uri`: URI where to fetch the JWKS. Required if discovery is disabled and the 'openid' scope is used. * `skip_verification`: set to 'true' to skip metadata verification. Use this if you are connecting to a provider that is not OpenID Connect compliant. Defaults to false. Avoid this in production. * `user_profile_method`: Whether to fetch the user profile from the userinfo endpoint, or to rely on the data returned in the id_token from the `token_endpoint`. Valid values are: `auto` or `userinfo_endpoint`. Defaults to `auto`, which uses the userinfo endpoint if `openid` is not included in `scopes`. Set to `userinfo_endpoint` to always use the userinfo endpoint. * `allow_existing_users`: set to true to allow a user logging in via OIDC to match a pre-existing account instead of failing. This could be used if switching from password logins to OIDC. Defaults to false. * `enable_registration`: set to 'false' to disable automatic registration of new users. This allows the OIDC SSO flow to be limited to sign in only, rather than automatically registering users that have a valid SSO login but do not have a pre-registered account. Defaults to true. * `user_mapping_provider`: Configuration for how attributes returned from a OIDC provider are mapped onto a matrix user. This setting has the following sub-properties: * `module`: The class name of a custom mapping module. Default is `synapse.handlers.oidc.JinjaOidcMappingProvider`. See [OpenID Mapping Providers](../../sso_mapping_providers.md#openid-mapping-providers) for information on implementing a custom mapping provider. * `config`: Configuration for the mapping provider module. This section will be passed as a Python dictionary to the user mapping provider module's `parse_config` method. For the default provider, the following settings are available: * `subject_template`: Jinja2 template for a unique identifier for the user. Defaults to `{{ user.sub }}`, which OpenID Connect compliant providers should provide. This replaces and overrides `subject_claim`. * `subject_claim`: name of the claim containing a unique identifier for the user. Defaults to 'sub', which OpenID Connect compliant providers should provide. *Deprecated in Synapse v1.75.0.* * `picture_template`: Jinja2 template for an url for the user's profile picture. Defaults to `{{ user.picture }}`, which OpenID Connect compliant providers should provide and has to refer to a direct image file such as PNG, JPEG, or GIF image file. This replaces and overrides `picture_claim`. Currently only supported in monolithic (single-process) server configurations where the media repository runs within the Synapse process. * `picture_claim`: name of the claim containing an url for the user's profile picture. Defaults to 'picture', which OpenID Connect compliant providers should provide and has to refer to a direct image file such as PNG, JPEG, or GIF image file. Currently only supported in monolithic (single-process) server configurations where the media repository runs within the Synapse process. *Deprecated in Synapse v1.75.0.* * `localpart_template`: Jinja2 template for the localpart of the MXID. If this is not set, the user will be prompted to choose their own username (see the documentation for the `sso_auth_account_details.html` template). This template can use the `localpart_from_email` filter. * `confirm_localpart`: Whether to prompt the user to validate (or change) the generated localpart (see the documentation for the 'sso_auth_account_details.html' template), instead of registering the account right away. * `display_name_template`: Jinja2 template for the display name to set on first login. If unset, no displayname will be set. * `email_template`: Jinja2 template for the email address of the user. If unset, no email address will be added to the account. * `extra_attributes`: a map of Jinja2 templates for extra attributes to send back to the client during login. Note that these are non-standard and clients will ignore them without modifications. When rendering, the Jinja2 templates are given a 'user' variable, which is set to the claims returned by the UserInfo Endpoint and/or in the ID Token. * `backchannel_logout_enabled`: set to `true` to process OIDC Back-Channel Logout notifications. Those notifications are expected to be received on `/_synapse/client/oidc/backchannel_logout`. Defaults to `false`. * `backchannel_logout_ignore_sub`: by default, the OIDC Back-Channel Logout feature checks that the `sub` claim matches the subject claim received during login. This check can be disabled by setting this to `true`. Defaults to `false`. You might want to disable this if the `subject_claim` returned by the mapping provider is not `sub`. It is possible to configure Synapse to only allow logins if certain attributes match particular values in the OIDC userinfo. The requirements can be listed under `attribute_requirements` as shown here: ```yaml attribute_requirements: - attribute: family_name value: "Stephensson" - attribute: groups value: "admin" ``` All of the listed attributes must match for the login to be permitted. Additional attributes can be added to userinfo by expanding the `scopes` section of the OIDC config to retrieve additional information from the OIDC provider. If the OIDC claim is a list, then the attribute must match any value in the list. Otherwise, it must exactly match the value of the claim. Using the example above, the `family_name` claim MUST be "Stephensson", but the `groups` claim MUST contain "admin". Example configuration: ```yaml oidc_providers: # Generic example # - idp_id: my_idp idp_name: "My OpenID provider" idp_icon: "mxc://example.com/mediaid" discover: false issuer: "https://accounts.example.com/" client_id: "provided-by-your-issuer" client_secret: "provided-by-your-issuer" client_auth_method: client_secret_post scopes: ["openid", "profile"] authorization_endpoint: "https://accounts.example.com/oauth2/auth" token_endpoint: "https://accounts.example.com/oauth2/token" userinfo_endpoint: "https://accounts.example.com/userinfo" jwks_uri: "https://accounts.example.com/.well-known/jwks.json" skip_verification: true enable_registration: true user_mapping_provider: config: subject_claim: "id" localpart_template: "{{ user.login }}" display_name_template: "{{ user.name }}" email_template: "{{ user.email }}" attribute_requirements: - attribute: userGroup value: "synapseUsers" ``` --- ### `cas_config` Enable Central Authentication Service (CAS) for registration and login. Has the following sub-options: * `enabled`: Set this to true to enable authorization against a CAS server. Defaults to false. * `idp_name`: A user-facing name for this identity provider, which is used to offer the user a choice of login mechanisms. * `idp_icon`: An optional icon for this identity provider, which is presented by clients and Synapse's own IdP picker page. If given, must be an MXC URI of the format `mxc:///`. (An easy way to obtain such an MXC URI is to upload an image to an (unencrypted) room and then copy the "url" from the source of the event.) * `idp_brand`: An optional brand for this identity provider, allowing clients to style the login flow according to the identity provider in question. See the [spec](https://spec.matrix.org/latest/) for possible options here. * `server_url`: The URL of the CAS authorization endpoint. * `protocol_version`: The CAS protocol version, defaults to none (version 3 is required if you want to use "required_attributes"). * `displayname_attribute`: The attribute of the CAS response to use as the display name. If no name is given here, no displayname will be set. * `required_attributes`: It is possible to configure Synapse to only allow logins if CAS attributes match particular values. All of the keys given below must exist and the values must match the given value. Alternately if the given value is `None` then any value is allowed (the attribute just must exist). All of the listed attributes must match for the login to be permitted. * `enable_registration`: set to 'false' to disable automatic registration of new users. This allows the CAS SSO flow to be limited to sign in only, rather than automatically registering users that have a valid SSO login but do not have a pre-registered account. Defaults to true. *Added in Synapse 1.93.0.* Example configuration: ```yaml cas_config: enabled: true server_url: "https://cas-server.com" protocol_version: 3 displayname_attribute: name required_attributes: userGroup: "staff" department: None enable_registration: true ``` --- ### `sso` Additional settings to use with single-sign on systems such as OpenID Connect, SAML2 and CAS. Server admins can configure custom templates for pages related to SSO. See [here](../../templates.md) for more information. Options include: * `client_whitelist`: A list of client URLs which are whitelisted so that the user does not have to confirm giving access to their account to the URL. Any client whose URL starts with an entry in the following list will not be subject to an additional confirmation step after the SSO login is completed. WARNING: An entry such as "https://my.client" is insecure, because it will also match "https://my.client.evil.site", exposing your users to phishing attacks from evil.site. To avoid this, include a slash after the hostname: "https://my.client/". The login fallback page (used by clients that don't natively support the required login flows) is whitelisted in addition to any URLs in this list. By default, this list contains only the login fallback page. * `update_profile_information`: Use this setting to keep a user's profile fields in sync with information from the identity provider. Currently only syncing the displayname is supported. Fields are checked on every SSO login, and are updated if necessary. Note that enabling this option will override user profile information, regardless of whether users have opted-out of syncing that information when first signing in. Defaults to false. Example configuration: ```yaml sso: client_whitelist: - https://riot.im/develop - https://my.custom.client/ update_profile_information: true ``` --- ### `jwt_config` JSON web token integration. The following settings can be used to make Synapse JSON web tokens for authentication, instead of its internal password database. Each JSON Web Token needs to contain a "sub" (subject) claim, which is used as the localpart of the mxid. Additionally, the expiration time ("exp"), not before time ("nbf"), and issued at ("iat") claims are validated if present. Note that this is a non-standard login type and client support is expected to be non-existent. See [here](../../jwt.md) for more. Additional sub-options for this setting include: * `enabled`: Set to true to enable authorization using JSON web tokens. Defaults to false. * `secret`: This is either the private shared secret or the public key used to decode the contents of the JSON web token. Required if `enabled` is set to true. * `algorithm`: The algorithm used to sign (or HMAC) the JSON web token. Supported algorithms are listed [here (section JWS)](https://docs.authlib.org/en/latest/specs/rfc7518.html). Required if `enabled` is set to true. * `subject_claim`: Name of the claim containing a unique identifier for the user. Optional, defaults to `sub`. * `issuer`: The issuer to validate the "iss" claim against. Optional. If provided the "iss" claim will be required and validated for all JSON web tokens. * `audiences`: A list of audiences to validate the "aud" claim against. Optional. If provided the "aud" claim will be required and validated for all JSON web tokens. Note that if the "aud" claim is included in a JSON web token then validation will fail without configuring audiences. Example configuration: ```yaml jwt_config: enabled: true secret: "provided-by-your-issuer" algorithm: "provided-by-your-issuer" subject_claim: "name_of_claim" issuer: "provided-by-your-issuer" audiences: - "provided-by-your-issuer" ``` --- ### `password_config` Use this setting to enable password-based logins. This setting has the following sub-options: * `enabled`: Defaults to true. Set to false to disable password authentication. Set to `only_for_reauth` to allow users with existing passwords to use them to reauthenticate (not log in), whilst preventing new users from setting passwords. * `localdb_enabled`: Set to false to disable authentication against the local password database. This is ignored if `enabled` is false, and is only useful if you have other `password_providers`. Defaults to true. * `pepper`: Set the value here to a secret random string for extra security. DO NOT CHANGE THIS AFTER INITIAL SETUP! * `policy`: Define and enforce a password policy, such as minimum lengths for passwords, etc. Each parameter is optional. This is an implementation of MSC2000. Parameters are as follows: * `enabled`: Defaults to false. Set to true to enable. * `minimum_length`: Minimum accepted length for a password. Defaults to 0. * `require_digit`: Whether a password must contain at least one digit. Defaults to false. * `require_symbol`: Whether a password must contain at least one symbol. A symbol is any character that's not a number or a letter. Defaults to false. * `require_lowercase`: Whether a password must contain at least one lowercase letter. Defaults to false. * `require_uppercase`: Whether a password must contain at least one uppercase letter. Defaults to false. Example configuration: ```yaml password_config: enabled: false localdb_enabled: false pepper: "EVEN_MORE_SECRET" policy: enabled: true minimum_length: 15 require_digit: true require_symbol: true require_lowercase: true require_uppercase: true ``` --- ## Push Configuration settings related to push notifications --- ### `push` This setting defines options for push notifications. This option has a number of sub-options. They are as follows: * `enabled`: Enables or disables push notification calculation. Note, disabling this will also stop unread counts being calculated for rooms. This mode of operation is intended for homeservers which may only have bots or appservice users connected, or are otherwise not interested in push/unread counters. This is enabled by default. * `include_content`: Clients requesting push notifications can either have the body of the message sent in the notification poke along with other details like the sender, or just the event ID and room ID (`event_id_only`). If clients choose the to have the body sent, this option controls whether the notification request includes the content of the event (other details like the sender are still included). If `event_id_only` is enabled, it has no effect. For modern android devices the notification content will still appear because it is loaded by the app. iPhone, however will send a notification saying only that a message arrived and who it came from. Defaults to true. Set to false to only include the event ID and room ID in push notification payloads. * `group_unread_count_by_room: false`: When a push notification is received, an unread count is also sent. This number can either be calculated as the number of unread messages for the user, or the number of *rooms* the user has unread messages in. Defaults to true, meaning push clients will see the number of rooms with unread messages in them. Set to false to instead send the number of unread messages. * `jitter_delay`: Delays push notifications by a random amount up to the given duration. Useful for mitigating timing attacks. Optional, defaults to no delay. _Added in Synapse 1.84.0._ Example configuration: ```yaml push: enabled: true include_content: false group_unread_count_by_room: false jitter_delay: "10s" ``` --- ## Rooms Config options relating to rooms. --- ### `encryption_enabled_by_default_for_room_type` Controls whether locally-created rooms should be end-to-end encrypted by default. Possible options are "all", "invite", and "off". They are defined as: * "all": any locally-created room * "invite": any room created with the `private_chat` or `trusted_private_chat` room creation presets * "off": this option will take no effect The default value is "off". Note that this option will only affect rooms created after it is set. It will also not affect rooms created by other servers. Example configuration: ```yaml encryption_enabled_by_default_for_room_type: invite ``` --- ### `user_directory` This setting defines options related to the user directory. This option has the following sub-options: * `enabled`: Defines whether users can search the user directory. If false then empty responses are returned to all queries. Defaults to true. * `search_all_users`: Defines whether to search all users visible to your HS at the time the search is performed. If set to true, will return all users who share a room with the user from the homeserver. If false, search results will only contain users visible in public rooms and users sharing a room with the requester. Defaults to false. NB. If you set this to true, and the last time the user_directory search indexes were (re)built was before Synapse 1.44, you'll have to rebuild the indexes in order to search through all known users. These indexes are built the first time Synapse starts; admins can manually trigger a rebuild via the API following the instructions [for running background updates](../administration/admin_api/background_updates.md#run), set to true to return search results containing all known users, even if that user does not share a room with the requester. * `prefer_local_users`: Defines whether to prefer local users in search query results. If set to true, local users are more likely to appear above remote users when searching the user directory. Defaults to false. * `show_locked_users`: Defines whether to show locked users in search query results. Defaults to false. Example configuration: ```yaml user_directory: enabled: false search_all_users: true prefer_local_users: true show_locked_users: true ``` --- ### `user_consent` For detailed instructions on user consent configuration, see [here](../../consent_tracking.md). Parts of this section are required if enabling the `consent` resource under [`listeners`](#listeners), in particular `template_dir` and `version`. * `template_dir`: gives the location of the templates for the HTML forms. This directory should contain one subdirectory per language (eg, `en`, `fr`), and each language directory should contain the policy document (named as .html) and a success page (success.html). * `version`: specifies the 'current' version of the policy document. It defines the version to be served by the consent resource if there is no 'v' parameter. * `server_notice_content`: if enabled, will send a user a "Server Notice" asking them to consent to the privacy policy. The [`server_notices` section](#server_notices) must also be configured for this to work. Notices will *not* be sent to guest users unless `send_server_notice_to_guests` is set to true. * `block_events_error`, if set, will block any attempts to send events until the user consents to the privacy policy. The value of the setting is used as the text of the error. * `require_at_registration`, if enabled, will add a step to the registration process, similar to how captcha works. Users will be required to accept the policy before their account is created. * `policy_name` is the display name of the policy users will see when registering for an account. Has no effect unless `require_at_registration` is enabled. Defaults to "Privacy Policy". Example configuration: ```yaml user_consent: template_dir: res/templates/privacy version: 1.0 server_notice_content: msgtype: m.text body: >- To continue using this homeserver you must review and agree to the terms and conditions at %(consent_uri)s send_server_notice_to_guests: true block_events_error: >- To continue using this homeserver you must review and agree to the terms and conditions at %(consent_uri)s require_at_registration: false policy_name: Privacy Policy ``` --- ### `stats` Settings for local room and user statistics collection. See [here](../../room_and_user_statistics.md) for more. * `enabled`: Set to false to disable room and user statistics. Note that doing so may cause certain features (such as the room directory) not to work correctly. Defaults to true. Example configuration: ```yaml stats: enabled: false ``` --- ### `server_notices` Use this setting to enable a room which can be used to send notices from the server to users. It is a special room which users cannot leave; notices in the room come from a special "notices" user id. If you use this setting, you *must* define the `system_mxid_localpart` sub-setting, which defines the id of the user which will be used to send the notices. Sub-options for this setting include: * `system_mxid_display_name`: set the display name of the "notices" user * `system_mxid_avatar_url`: set the avatar for the "notices" user * `room_name`: set the room name of the server notices room * `room_avatar_url`: optional string. The room avatar to use for server notice rooms. If set to the empty string `""`, notice rooms will not be given an avatar. Defaults to the empty string. _Added in Synapse 1.99.0._ * `room_topic`: optional string. The topic to use for server notice rooms. If set to the empty string `""`, notice rooms will not be given a topic. Defaults to the empty string. _Added in Synapse 1.99.0._ * `auto_join`: boolean. If true, the user will be automatically joined to the room instead of being invited. Defaults to false. _Added in Synapse 1.98.0._ Note that the name, topic and avatar of existing server notice rooms will only be updated when a new notice event is sent. Example configuration: ```yaml server_notices: system_mxid_localpart: notices system_mxid_display_name: "Server Notices" system_mxid_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ" room_name: "Server Notices" room_avatar_url: "mxc://example.com/oumMVlgDnLYFaPVkExemNVVZ" room_topic: "Room used by your server admin to notice you of important information" auto_join: true ``` --- ### `enable_room_list_search` Set to false to disable searching the public room list. When disabled blocks searching local and remote room lists for local and remote users by always returning an empty list for all queries. Defaults to true. Example configuration: ```yaml enable_room_list_search: false ``` --- ### `alias_creation_rules` The `alias_creation_rules` option allows server admins to prevent unwanted alias creation on this server. This setting is an optional list of 0 or more rules. By default, no list is provided, meaning that all alias creations are permitted. Otherwise, requests to create aliases are matched against each rule in order. The first rule that matches decides if the request is allowed or denied. If no rule matches, the request is denied. In particular, this means that configuring an empty list of rules will deny every alias creation request. Each rule is a YAML object containing four fields, each of which is an optional string: * `user_id`: a glob pattern that matches against the creator of the alias. * `alias`: a glob pattern that matches against the alias being created. * `room_id`: a glob pattern that matches against the room ID the alias is being pointed at. * `action`: either `allow` or `deny`. What to do with the request if the rule matches. Defaults to `allow`. Each of the glob patterns is optional, defaulting to `*` ("match anything"). Note that the patterns match against fully qualified IDs, e.g. against `@alice:example.com`, `#room:example.com` and `!abcdefghijk:example.com` instead of `alice`, `room` and `abcedgghijk`. Example configuration: ```yaml # No rule list specified. All alias creations are allowed. # This is the default behaviour. alias_creation_rules: ``` ```yaml # A list of one rule which allows everything. # This has the same effect as the previous example. alias_creation_rules: - "action": "allow" ``` ```yaml # An empty list of rules. All alias creations are denied. alias_creation_rules: [] ``` ```yaml # A list of one rule which denies everything. # This has the same effect as the previous example. alias_creation_rules: - "action": "deny" ``` ```yaml # Prevent a specific user from creating aliases. # Allow other users to create any alias alias_creation_rules: - user_id: "@bad_user:example.com" action: deny - action: allow ``` ```yaml # Prevent aliases being created which point to a specific room. alias_creation_rules: - room_id: "!forbiddenRoom:example.com" action: deny - action: allow ``` --- ### `room_list_publication_rules` The `room_list_publication_rules` option allows server admins to prevent unwanted entries from being published in the public room list. The format of this option is the same as that for [`alias_creation_rules`](#alias_creation_rules): an optional list of 0 or more rules. By default, no list is provided, meaning that all rooms may be published to the room list. Otherwise, requests to publish a room are matched against each rule in order. The first rule that matches decides if the request is allowed or denied. If no rule matches, the request is denied. In particular, this means that configuring an empty list of rules will deny every alias creation request. Requests to create a public (public as in published to the room directory) room which violates the configured rules will result in the room being created but not published to the room directory. Each rule is a YAML object containing four fields, each of which is an optional string: * `user_id`: a glob pattern that matches against the user publishing the room. * `alias`: a glob pattern that matches against one of published room's aliases. - If the room has no aliases, the alias match fails unless `alias` is unspecified or `*`. - If the room has exactly one alias, the alias match succeeds if the `alias` pattern matches that alias. - If the room has two or more aliases, the alias match succeeds if the pattern matches at least one of the aliases. * `room_id`: a glob pattern that matches against the room ID of the room being published. * `action`: either `allow` or `deny`. What to do with the request if the rule matches. Defaults to `allow`. Each of the glob patterns is optional, defaulting to `*` ("match anything"). Note that the patterns match against fully qualified IDs, e.g. against `@alice:example.com`, `#room:example.com` and `!abcdefghijk:example.com` instead of `alice`, `room` and `abcedgghijk`. Example configuration: ```yaml # No rule list specified. Anyone may publish any room to the public list. # This is the default behaviour. room_list_publication_rules: ``` ```yaml # A list of one rule which allows everything. # This has the same effect as the previous example. room_list_publication_rules: - "action": "allow" ``` ```yaml # An empty list of rules. No-one may publish to the room list. room_list_publication_rules: [] ``` ```yaml # A list of one rule which denies everything. # This has the same effect as the previous example. room_list_publication_rules: - "action": "deny" ``` ```yaml # Prevent a specific user from publishing rooms. # Allow other users to publish anything. room_list_publication_rules: - user_id: "@bad_user:example.com" action: deny - action: allow ``` ```yaml # Prevent publication of a specific room. room_list_publication_rules: - room_id: "!forbiddenRoom:example.com" action: deny - action: allow ``` ```yaml # Prevent publication of rooms with at least one alias containing the word "potato". room_list_publication_rules: - alias: "#*potato*:example.com" action: deny - action: allow ``` --- ### `default_power_level_content_override` The `default_power_level_content_override` option controls the default power levels for rooms. Useful if you know that your users need special permissions in rooms that they create (e.g. to send particular types of state events without needing an elevated power level). This takes the same shape as the `power_level_content_override` parameter in the /createRoom API, but is applied before that parameter. Note that each key provided inside a preset (for example `events` in the example below) will overwrite all existing defaults inside that key. So in the example below, newly-created private_chat rooms will have no rules for any event types except `com.example.foo`. Example configuration: ```yaml default_power_level_content_override: private_chat: { "events": { "com.example.foo" : 0 } } trusted_private_chat: null public_chat: null ``` --- ### `forget_rooms_on_leave` Set to true to automatically forget rooms for users when they leave them, either normally or via a kick or ban. Defaults to false. Example configuration: ```yaml forget_rooms_on_leave: false ``` --- ### `exclude_rooms_from_sync` A list of rooms to exclude from sync responses. This is useful for server administrators wishing to group users into a room without these users being able to see it from their client. By default, no room is excluded. Example configuration: ```yaml exclude_rooms_from_sync: - !foo:example.com ``` --- ## Opentracing Configuration options related to Opentracing support. --- ### `opentracing` These settings enable and configure opentracing, which implements distributed tracing. This allows you to observe the causal chains of events across servers including requests, key lookups etc., across any server running synapse or any other services which support opentracing (specifically those implemented with Jaeger). Sub-options include: * `enabled`: whether tracing is enabled. Set to true to enable. Disabled by default. * `homeserver_whitelist`: The list of homeservers we wish to send and receive span contexts and span baggage. See [here](../../opentracing.md) for more. This is a list of regexes which are matched against the `server_name` of the homeserver. By default, it is empty, so no servers are matched. * `force_tracing_for_users`: # A list of the matrix IDs of users whose requests will always be traced, even if the tracing system would otherwise drop the traces due to probabilistic sampling. By default, the list is empty. * `jaeger_config`: Jaeger can be configured to sample traces at different rates. All configuration options provided by Jaeger can be set here. Jaeger's configuration is mostly related to trace sampling which is documented [here](https://www.jaegertracing.io/docs/latest/sampling/). Example configuration: ```yaml opentracing: enabled: true homeserver_whitelist: - ".*" force_tracing_for_users: - "@user1:server_name" - "@user2:server_name" jaeger_config: sampler: type: const param: 1 logging: false ``` --- ## Coordinating workers Configuration options related to workers which belong in the main config file (usually called `homeserver.yaml`). A Synapse deployment can scale horizontally by running multiple Synapse processes called _workers_. Incoming requests are distributed between workers to handle higher loads. Some workers are privileged and can accept requests from other workers. As a result, the worker configuration is divided into two parts. 1. The first part (in this section of the manual) defines which shardable tasks are delegated to privileged workers. This allows unprivileged workers to make requests to a privileged worker to act on their behalf. 1. [The second part](#individual-worker-configuration) controls the behaviour of individual workers in isolation. For guidance on setting up workers, see the [worker documentation](../../workers.md). --- ### `worker_replication_secret` A shared secret used by the replication APIs on the main process to authenticate HTTP requests from workers. The default, this value is omitted (equivalently `null`), which means that traffic between the workers and the main process is not authenticated. Example configuration: ```yaml worker_replication_secret: "secret_secret" ``` --- ### `start_pushers` Unnecessary to set if using [`pusher_instances`](#pusher_instances) with [`generic_workers`](../../workers.md#synapseappgeneric_worker). Controls sending of push notifications on the main process. Set to `false` if using a [pusher worker](../../workers.md#synapseapppusher). Defaults to `true`. Example configuration: ```yaml start_pushers: false ``` --- ### `pusher_instances` It is possible to scale the processes that handle sending push notifications to [sygnal](https://github.com/matrix-org/sygnal) and email by running a [`generic_worker`](../../workers.md#synapseappgeneric_worker) and adding it's [`worker_name`](#worker_name) to a `pusher_instances` map. Doing so will remove handling of this function from the main process. Multiple workers can be added to this map, in which case the work is balanced across them. Ensure the main process and all pusher workers are restarted after changing this option. Example configuration for a single worker: ```yaml pusher_instances: - pusher_worker1 ``` And for multiple workers: ```yaml pusher_instances: - pusher_worker1 - pusher_worker2 ``` --- ### `send_federation` Unnecessary to set if using [`federation_sender_instances`](#federation_sender_instances) with [`generic_workers`](../../workers.md#synapseappgeneric_worker). Controls sending of outbound federation transactions on the main process. Set to `false` if using a [federation sender worker](../../workers.md#synapseappfederation_sender). Defaults to `true`. Example configuration: ```yaml send_federation: false ``` --- ### `federation_sender_instances` It is possible to scale the processes that handle sending outbound federation requests by running a [`generic_worker`](../../workers.md#synapseappgeneric_worker) and adding it's [`worker_name`](#worker_name) to a `federation_sender_instances` map. Doing so will remove handling of this function from the main process. Multiple workers can be added to this map, in which case the work is balanced across them. This configuration setting must be shared between all workers handling federation sending, and if changed all federation sender workers must be stopped at the same time and then started, to ensure that all instances are running with the same config (otherwise events may be dropped). Example configuration for a single worker: ```yaml federation_sender_instances: - federation_sender1 ``` And for multiple workers: ```yaml federation_sender_instances: - federation_sender1 - federation_sender2 ``` --- ### `instance_map` When using workers this should be a map from [`worker_name`](#worker_name) to the HTTP replication listener of the worker, if configured, and to the main process. Each worker declared under [`stream_writers`](../../workers.md#stream-writers) and [`outbound_federation_restricted_to`](#outbound_federation_restricted_to) needs a HTTP replication listener, and that listener should be included in the `instance_map`. The main process also needs an entry on the `instance_map`, and it should be listed under `main` **if even one other worker exists**. Ensure the port matches with what is declared inside the `listener` block for a `replication` listener. Example configuration: ```yaml instance_map: main: host: localhost port: 8030 worker1: host: localhost port: 8034 ``` Example configuration(#2, for UNIX sockets): ```yaml instance_map: main: path: /run/synapse/main_replication.sock worker1: path: /run/synapse/worker1_replication.sock ``` --- ### `stream_writers` Experimental: When using workers you can define which workers should handle writing to streams such as event persistence and typing notifications. Any worker specified here must also be in the [`instance_map`](#instance_map). See the list of available streams in the [worker documentation](../../workers.md#stream-writers). Example configuration: ```yaml stream_writers: events: worker1 typing: worker1 ``` --- ### `outbound_federation_restricted_to` When using workers, you can restrict outbound federation traffic to only go through a specific subset of workers. Any worker specified here must also be in the [`instance_map`](#instance_map). [`worker_replication_secret`](#worker_replication_secret) must also be configured to authorize inter-worker communication. ```yaml outbound_federation_restricted_to: - federation_sender1 - federation_sender2 ``` Also see the [worker documentation](../../workers.md#restrict-outbound-federation-traffic-to-a-specific-set-of-workers) for more info. _Added in Synapse 1.89.0._ --- ### `run_background_tasks_on` The [worker](../../workers.md#background-tasks) that is used to run background tasks (e.g. cleaning up expired data). If not provided this defaults to the main process. Example configuration: ```yaml run_background_tasks_on: worker1 ``` --- ### `update_user_directory_from_worker` The [worker](../../workers.md#updating-the-user-directory) that is used to update the user directory. If not provided this defaults to the main process. Example configuration: ```yaml update_user_directory_from_worker: worker1 ``` _Added in Synapse 1.59.0._ --- ### `notify_appservices_from_worker` The [worker](../../workers.md#notifying-application-services) that is used to send output traffic to Application Services. If not provided this defaults to the main process. Example configuration: ```yaml notify_appservices_from_worker: worker1 ``` _Added in Synapse 1.59.0._ --- ### `media_instance_running_background_jobs` The [worker](../../workers.md#synapseappmedia_repository) that is used to run background tasks for media repository. If running multiple media repositories you must configure a single instance to run the background tasks. If not provided this defaults to the main process or your single `media_repository` worker. Example configuration: ```yaml media_instance_running_background_jobs: worker1 ``` _Added in Synapse 1.16.0._ --- ### `redis` Configuration for Redis when using workers. This *must* be enabled when using workers. This setting has the following sub-options: * `enabled`: whether to use Redis support. Defaults to false. * `host` and `port`: Optional host and port to use to connect to redis. Defaults to localhost and 6379 * `path`: The full path to a local Unix socket file. **If this is used, `host` and `port` are ignored.** Defaults to `/tmp/redis.sock' * `password`: Optional password if configured on the Redis instance. * `dbid`: Optional redis dbid if needs to connect to specific redis logical db. * `use_tls`: Whether to use tls connection. Defaults to false. * `certificate_file`: Optional path to the certificate file * `private_key_file`: Optional path to the private key file * `ca_file`: Optional path to the CA certificate file. Use this one or: * `ca_path`: Optional path to the folder containing the CA certificate file _Added in Synapse 1.78.0._ _Changed in Synapse 1.84.0: Added use\_tls, certificate\_file, private\_key\_file, ca\_file and ca\_path attributes_ _Changed in Synapse 1.85.0: Added path option to use a local Unix socket_ Example configuration: ```yaml redis: enabled: true host: localhost port: 6379 password: dbid: #use_tls: True #certificate_file: #private_key_file: #ca_file: ``` --- ## Individual worker configuration These options configure an individual worker, in its worker configuration file. They should be not be provided when configuring the main process. Note also the configuration above for [coordinating a cluster of workers](#coordinating-workers). For guidance on setting up workers, see the [worker documentation](../../workers.md). --- ### `worker_app` The type of worker. The currently available worker applications are listed in [worker documentation](../../workers.md#available-worker-applications). The most common worker is the [`synapse.app.generic_worker`](../../workers.md#synapseappgeneric_worker). Example configuration: ```yaml worker_app: synapse.app.generic_worker ``` --- ### `worker_name` A unique name for the worker. The worker needs a name to be addressed in further parameters and identification in log files. We strongly recommend giving each worker a unique `worker_name`. Example configuration: ```yaml worker_name: generic_worker1 ``` --- ### `worker_listeners` A worker can handle HTTP requests. To do so, a `worker_listeners` option must be declared, in the same way as the [`listeners` option](#listeners) in the shared config. Workers declared in [`stream_writers`](#stream_writers) and [`instance_map`](#instance_map) will need to include a `replication` listener here, in order to accept internal HTTP requests from other workers. Example configuration: ```yaml worker_listeners: - type: http port: 8083 resources: - names: [client, federation] ``` Example configuration(#2, using UNIX sockets with a `replication` listener): ```yaml worker_listeners: - type: http path: /run/synapse/worker_replication.sock resources: - names: [replication] - type: http path: /run/synapse/worker_public.sock resources: - names: [client, federation] ``` --- ### `worker_manhole` A worker may have a listener for [`manhole`](../../manhole.md). It allows server administrators to access a Python shell on the worker. Example configuration: ```yaml worker_manhole: 9000 ``` This is a short form for: ```yaml worker_listeners: - port: 9000 bind_addresses: ['127.0.0.1'] type: manhole ``` It needs also an additional [`manhole_settings`](#manhole_settings) configuration. --- ### `worker_daemonize` Specifies whether the worker should be started as a daemon process. If Synapse is being managed by [systemd](../../systemd-with-workers/), this option must be omitted or set to `false`. Defaults to `false`. Example configuration: ```yaml worker_daemonize: true ``` --- ### `worker_pid_file` When running a worker as a daemon, we need a place to store the [PID](https://en.wikipedia.org/wiki/Process_identifier) of the worker. This option defines the location of that "pid file". This option is required if `worker_daemonize` is `true` and ignored otherwise. It has no default. See also the [`pid_file` option](#pid_file) option for the main Synapse process. Example configuration: ```yaml worker_pid_file: DATADIR/generic_worker1.pid ``` --- ### `worker_log_config` This option specifies a yaml python logging config file as described [here](https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema). See also the [`log_config` option](#log_config) option for the main Synapse process. Example configuration: ```yaml worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml ``` --- ## Background Updates Configuration settings related to background updates. --- ### `background_updates` Background updates are database updates that are run in the background in batches. The duration, minimum batch size, default batch size, whether to sleep between batches and if so, how long to sleep can all be configured. This is helpful to speed up or slow down the updates. This setting has the following sub-options: * `background_update_duration_ms`: How long in milliseconds to run a batch of background updates for. Defaults to 100. Set a different time to change the default. * `sleep_enabled`: Whether to sleep between updates. Defaults to true. Set to false to change the default. * `sleep_duration_ms`: If sleeping between updates, how long in milliseconds to sleep for. Defaults to 1000. Set a duration to change the default. * `min_batch_size`: Minimum size a batch of background updates can be. Must be greater than 0. Defaults to 1. Set a size to change the default. * `default_batch_size`: The batch size to use for the first iteration of a new background update. The default is 100. Set a size to change the default. Example configuration: ```yaml background_updates: background_update_duration_ms: 500 sleep_enabled: false sleep_duration_ms: 300 min_batch_size: 10 default_batch_size: 50 ``` synapse-1.100.0/docs/usage/configuration/homeserver_sample_config.md000066400000000000000000000013131455622526000256320ustar00rootroot00000000000000# Homeserver Sample Configuration File Below is a sample homeserver configuration file. The homeserver configuration file can be tweaked to change the behaviour of your homeserver. A restart of the server is generally required to apply any changes made to this file. Note that the contents below are *not* intended to be copied and used as the basis for a real homeserver.yaml. Instead, if you are starting from scratch, please generate a fresh config using Synapse by following the instructions in [Installation](../../setup/installation.md). Documentation for all configuration options can be found in the [Configuration Manual](./config_documentation.md). ```yaml {{#include ../../sample_config.yaml}} ``` synapse-1.100.0/docs/usage/configuration/logging_sample_config.md000066400000000000000000000015361455622526000251100ustar00rootroot00000000000000# Logging Sample Configuration File Below is a sample logging configuration file. This file can be tweaked to control how your homeserver will output logs. The value of the `log_config` option in your homeserver config should be the path to this file. To apply changes made to this file, send Synapse a SIGHUP signal (or, if using `systemd`, run `systemctl reload` on the Synapse service). Note that a default logging configuration (shown below) is created automatically alongside the homeserver config when following the [installation instructions](../../setup/installation.md). It should be named `.log.config` by default. Hint: If you're looking for a guide on what each of the fields in the "Processed request" log lines mean, see [Request log format](../administration/request_log.md). ```yaml {{#include ../../sample_log_config.yaml}} ``` synapse-1.100.0/docs/usage/configuration/user_authentication/000077500000000000000000000000001455622526000243225ustar00rootroot00000000000000synapse-1.100.0/docs/usage/configuration/user_authentication/README.md000066400000000000000000000010241455622526000255760ustar00rootroot00000000000000# User Authentication Synapse supports multiple methods of authenticating users, either out-of-the-box or through custom pluggable authentication modules. Included in Synapse is support for authenticating users via: * A username and password. * An email address and password. * Single Sign-On through the SAML, Open ID Connect or CAS protocols. * JSON Web Tokens. * An administrator's shared secret. Synapse can additionally be extended to support custom authentication schemes through optional "password auth provider" modules.synapse-1.100.0/docs/usage/configuration/user_authentication/refresh_tokens.md000066400000000000000000000155201455622526000276700ustar00rootroot00000000000000# Refresh Tokens Synapse supports refresh tokens since version 1.49 (some earlier versions had support for an earlier, experimental draft of [MSC2918] which is not compatible). [MSC2918]: https://github.com/matrix-org/matrix-doc/blob/main/proposals/2918-refreshtokens.md#msc2918-refresh-tokens ## Background and motivation Synapse users' sessions are identified by **access tokens**; access tokens are issued to users on login. Each session gets a unique access token which identifies it; the access token must be kept secret as it grants access to the user's account. Traditionally, these access tokens were eternally valid (at least until the user explicitly chose to log out). In some cases, it may be desirable for these access tokens to expire so that the potential damage caused by leaking an access token is reduced. On the other hand, forcing a user to re-authenticate (log in again) often might be too much of an inconvenience. **Refresh tokens** are a mechanism to avoid some of this inconvenience whilst still getting most of the benefits of short access token lifetimes. Refresh tokens are also a concept present in OAuth 2 — further reading is available [here](https://datatracker.ietf.org/doc/html/rfc6749#section-1.5). When refresh tokens are in use, both an access token and a refresh token will be issued to users on login. The access token will expire after a predetermined amount of time, but otherwise works in the same way as before. When the access token is close to expiring (or has expired), the user's client should present the homeserver (Synapse) with the refresh token. The homeserver will then generate a new access token and refresh token for the user and return them. The old refresh token is invalidated and can not be used again*. Finally, refresh tokens also make it possible for sessions to be logged out if they are inactive for too long, before the session naturally ends; see the configuration guide below. *To prevent issues if clients lose connection half-way through refreshing a token, the refresh token is only invalidated once the new access token has been used at least once. For all intents and purposes, the above simplification is sufficient. ## Caveats There are some caveats: * If a third party gets both your access token and refresh token, they will be able to continue to enjoy access to your session. * This is still an improvement because you (the user) will notice when *your* session expires and you're not able to use your refresh token. That would be a giveaway that someone else has compromised your session. You would be able to log in again and terminate that session. Previously (with long-lived access tokens), a third party that has your access token could go undetected for a very long time. * Clients need to implement support for refresh tokens in order for them to be a useful mechanism. * It is up to homeserver administrators if they want to issue long-lived access tokens to clients not implementing refresh tokens. * For compatibility, it is likely that they should, at least until client support is widespread. * Users with clients that support refresh tokens will still benefit from the added security; it's not possible to downgrade a session to using long-lived access tokens so this effectively gives users the choice. * In a closed environment where all users use known clients, this may not be an issue as the homeserver administrator can know if the clients have refresh token support. In that case, the non-refreshable access token lifetime may be set to a short duration so that a similar level of security is provided. ## Configuration Guide The following configuration options, in the `registration` section, are related: * `session_lifetime`: maximum length of a session, even if it's refreshed. In other words, the client must log in again after this time period. In most cases, this can be unset (infinite) or set to a long time (years or months). * `refreshable_access_token_lifetime`: lifetime of access tokens that are created by clients supporting refresh tokens. This should be short; a good value might be 5 minutes (`5m`). * `nonrefreshable_access_token_lifetime`: lifetime of access tokens that are created by clients which don't support refresh tokens. Make this short if you want to effectively force use of refresh tokens. Make this long if you don't want to inconvenience users of clients which don't support refresh tokens (by forcing them to frequently re-authenticate using login credentials). * `refresh_token_lifetime`: lifetime of refresh tokens. In other words, the client must refresh within this time period to maintain its session. Unless you want to log inactive sessions out, it is often fine to use a long value here or even leave it unset (infinite). Beware that making it too short will inconvenience clients that do not connect very often, including mobile clients and clients of infrequent users (by making it more difficult for them to refresh in time, which may force them to need to re-authenticate using login credentials). **Note:** All four options above only apply when tokens are created (by logging in or refreshing). Changes to these settings do not apply retroactively. ### Using refresh token expiry to log out inactive sessions If you'd like to force sessions to be logged out upon inactivity, you can enable refreshable access token expiry and refresh token expiry. This works because a client must refresh at least once within a period of `refresh_token_lifetime` in order to maintain valid credentials to access the account. (It's suggested that `refresh_token_lifetime` should be longer than `refreshable_access_token_lifetime` and this section assumes that to be the case for simplicity.) Note: this will only affect sessions using refresh tokens. You may wish to set a short `nonrefreshable_access_token_lifetime` to prevent this being bypassed by clients that do not support refresh tokens. #### Choosing values that guarantee permitting some inactivity It may be desirable to permit some short periods of inactivity, for example to accommodate brief outages in client connectivity. The following model aims to provide guidance for choosing `refresh_token_lifetime` and `refreshable_access_token_lifetime` to satisfy requirements of the form: 1. inactivity longer than `L` **MUST** cause the session to be logged out; and 2. inactivity shorter than `S` **MUST NOT** cause the session to be logged out. This model makes the weakest assumption that all active clients will refresh as needed to maintain an active access token, but no sooner. *In reality, clients may refresh more often than this model assumes, but the above requirements will still hold.* To satisfy the above model, * `refresh_token_lifetime` should be set to `L`; and * `refreshable_access_token_lifetime` should be set to `L - S`. synapse-1.100.0/docs/usage/configuration/user_authentication/single_sign_on/000077500000000000000000000000001455622526000273175ustar00rootroot00000000000000synapse-1.100.0/docs/usage/configuration/user_authentication/single_sign_on/README.md000066400000000000000000000003171455622526000305770ustar00rootroot00000000000000# Single Sign-On Synapse supports single sign-on through the SAML, Open ID Connect or CAS protocols. LDAP and other login methods are supported through first and third-party password auth provider modules.synapse-1.100.0/docs/usage/configuration/user_authentication/single_sign_on/cas.md000066400000000000000000000005711455622526000304120ustar00rootroot00000000000000# CAS Synapse supports authenticating users via the [Central Authentication Service protocol](https://en.wikipedia.org/wiki/Central_Authentication_Service) (CAS) natively. Please see the [cas_config](../../../configuration/config_documentation.md#cas_config) and [sso](../../../configuration/config_documentation.md#sso) sections of the configuration manual for more details.synapse-1.100.0/docs/usage/configuration/user_authentication/single_sign_on/saml.md000066400000000000000000000005221455622526000305740ustar00rootroot00000000000000# SAML Synapse supports authenticating users via the [Security Assertion Markup Language](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language) (SAML) protocol natively. Please see the `saml2_config` and `sso` sections of the [Synapse configuration file](../../../configuration/homeserver_sample_config.md) for more details.synapse-1.100.0/docs/user_directory.md000066400000000000000000000146361455622526000176700ustar00rootroot00000000000000# User Directory API Implementation The user directory is maintained based on users that are 'visible' to the homeserver - i.e. ones which are local to the server and ones which any local user shares a room with. The directory info is stored in various tables, which can sometimes get out of sync (although this is considered a bug). If this happens, for now the solution to fix it is to use the [admin API](usage/administration/admin_api/background_updates.md#run) and execute the job `regenerate_directory`. This should then start a background task to flush the current tables and regenerate the directory. Depending on the size of your homeserver (number of users and rooms) this can take a while. ## Data model There are five relevant tables that collectively form the "user directory". Three of them track a list of all known users. The last two (collectively called the "search tables") track which users are visible to each other. From all of these tables we exclude three types of local user: - support users - appservice users - deactivated users A description of each table follows: * `user_directory`. This contains the user ID, display name and avatar of each user. - Because there is only one directory entry per user, it is important that it only contain publicly visible information. Otherwise, this will leak the nickname or avatar used in a private room. - Indexed on rooms. Indexed on users. * `user_directory_search`. To be joined to `user_directory`. It contains an extra column that enables full text search based on user IDs and display names. Different schemas for SQLite and Postgres are used. - Indexed on the full text search data. Indexed on users. * `user_directory_stream_pos`. When the initial background update to populate the directory is complete, we record a stream position here. This indicates that synapse should now listen for room changes and incrementally update the directory where necessary. (See [stream positions](development/synapse_architecture/streams.html).) * `users_in_public_rooms`. Contains associations between users and the public rooms they're in. Used to determine which users are in public rooms and should be publicly visible in the directory. Both local and remote users are tracked. * `users_who_share_private_rooms`. Rows are triples `(L, M, room id)` where `L` is a local user and `M` is a local or remote user. `L` and `M` should be different, but this isn't enforced by a constraint. Note that if two local users share a room then there will be two entries: `(user1, user2, !room_id)` and `(user2, user1, !room_id)`. ## Configuration options The exact way user search works can be tweaked via some server-level [configuration options](usage/configuration/config_documentation.md#user_directory). The information is not repeated here, but the options are mentioned below. ## Search algorithm If `search_all_users` is `false`, then results are limited to users who: 1. Are found in the `users_in_public_rooms` table, or 2. Are found in the `users_who_share_private_rooms` where `L` is the requesting user and `M` is the search result. Otherwise, if `search_all_users` is `true`, no such limits are placed and all users known to the server (matching the search query) will be returned. By default, locked users are not returned. If `show_locked_users` is `true` then no filtering on the locked status of a user is done. The user provided search term is lowercased and normalized using [NFKC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normalization), this treats the string as case-insensitive, canonicalizes different forms of the same text, and maps some "roughly equivalent" characters together. The search term is then split into words: * If [ICU](https://en.wikipedia.org/wiki/International_Components_for_Unicode) is available, then the system's [default locale](https://unicode-org.github.io/icu/userguide/locale/#default-locales) will be used to break the search term into words. (See the [installation instructions](setup/installation.md) for how to install ICU.) * If unavailable, then runs of ASCII characters, numbers, underscores, and hyphens are considered words. The queries for PostgreSQL and SQLite are detailed below, by their overall goal is to find matching users, preferring users who are "real" (e.g. not bots, not deactivated). It is assumed that real users will have an display name and avatar set. ### PostgreSQL The above words are then transformed into two queries: 1. "exact" which matches the parsed words exactly (using [`to_tsquery`](https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES)); 2. "prefix" which matches the parsed words as prefixes (using `to_tsquery`). Results are composed of all rows in the `user_directory_search` table whose information matches one (or both) of these queries. Results are ordered by calculating a weighted score for each result, higher scores are returned first: * 4x if a user ID exists. * 1.2x if the user has a display name set. * 1.2x if the user has an avatar set. * 0x-3x by the full text search results using the [`ts_rank_cd` function](https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-RANKING) against the "exact" search query; this has four variables with the following weightings: * `D`: 0.1 for the user ID's domain * `C`: 0.1 for unused * `B`: 0.9 for the user's display name (or an empty string if it is not set) * `A`: 0.1 for the user ID's localpart * 0x-1x by the full text search results using the `ts_rank_cd` function against the "prefix" search query. (Using the same weightings as above.) * If `prefer_local_users` is `true`, then 2x if the user is local to the homeserver. Note that `ts_rank_cd` returns a weight between 0 and 1. The initial weighting of all results is 1. ### SQLite Results are composed of all rows in the `user_directory_search` whose information matches the query. Results are ordered by the following information, with each subsequent column used as a tiebreaker, for each result: 1. By the [`rank`](https://www.sqlite.org/windowfunctions.html#built_in_window_functions) of the full text search results using the [`matchinfo` function](https://www.sqlite.org/fts3.html#matchinfo). Higher ranks are returned first. 2. If `prefer_local_users` is `true`, then users local to the homeserver are returned first. 3. Users with a display name set are returned first. 4. Users with an avatar set are returned first. synapse-1.100.0/docs/website_files/000077500000000000000000000000001455622526000171165ustar00rootroot00000000000000synapse-1.100.0/docs/website_files/README.md000066400000000000000000000036701455622526000204030ustar00rootroot00000000000000# Documentation Website Files and Assets This directory contains extra files for modifying the look and functionality of [mdbook](https://github.com/rust-lang/mdBook), the documentation software that's used to generate Synapse's documentation website. The configuration options in the `output.html` section of [book.toml](../../book.toml) point to additional JS/CSS in this directory that are added on each page load. In addition, the `theme` directory contains files that overwrite their counterparts in each of the default themes included with mdbook. Currently we use these files to generate a floating Table of Contents panel. The code for which was partially taken from [JorelAli/mdBook-pagetoc](https://github.com/JorelAli/mdBook-pagetoc/) before being modified such that it scrolls with the content of the page. This is handled by the `table-of-contents.js/css` files. The table of contents panel only appears on pages that have more than one header, as well as only appearing on desktop-sized monitors. We remove the navigation arrows which typically appear on the left and right side of the screen on desktop as they interfere with the table of contents. This is handled by the `remove-nav-buttons.css` file. Finally, we also stylise the chapter titles in the left sidebar by indenting them slightly so that they are more visually distinguishable from the section headers (the bold titles). This is done through the `indent-section-headers.css` file. In addition to these modifications, we have added a version picker to the documentation. Users can switch between documentations for different versions of Synapse. This functionality was implemented through the `version-picker.js` and `version-picker.css` files. More information can be found in mdbook's official documentation for [injecting page JS/CSS](https://rust-lang.github.io/mdBook/format/config.html) and [customising the default themes](https://rust-lang.github.io/mdBook/format/theme/index.html).synapse-1.100.0/docs/website_files/indent-section-headers.css000066400000000000000000000002411455622526000241610ustar00rootroot00000000000000/* * Indents each chapter title in the left sidebar so that they aren't * at the same level as the section headers. */ .chapter-item { margin-left: 1em; }synapse-1.100.0/docs/website_files/remove-nav-buttons.css000066400000000000000000000003741455622526000234070ustar00rootroot00000000000000/* Remove the prev, next chapter buttons as they interfere with the * table of contents. * Note that the table of contents only appears on desktop, thus we * only remove the desktop (wide) chapter buttons. */ .nav-wide-wrapper { display: none }synapse-1.100.0/docs/website_files/table-of-contents.css000066400000000000000000000021361455622526000231560ustar00rootroot00000000000000:root { --pagetoc-width: 250px; } @media only screen and (max-width:1439px) { .sidetoc { display: none; } } @media only screen and (min-width:1440px) { main { position: relative; margin-left: 100px !important; margin-right: var(--pagetoc-width) !important; } .sidetoc { margin-left: auto; margin-right: auto; left: calc(100% + (var(--content-max-width))/4 - 140px); position: absolute; text-align: right; } .pagetoc { position: fixed; width: var(--pagetoc-width); overflow: auto; right: 20px; height: calc(100% - var(--menu-bar-height)); } .pagetoc a { color: var(--fg) !important; display: block; padding: 5px 15px 5px 10px; text-align: left; text-decoration: none; } .pagetoc a:hover, .pagetoc a.active { background: var(--sidebar-bg) !important; color: var(--sidebar-fg) !important; } .pagetoc .active { background: var(--sidebar-bg); color: var(--sidebar-fg); } } synapse-1.100.0/docs/website_files/table-of-contents.js000066400000000000000000000107241455622526000230040ustar00rootroot00000000000000const getPageToc = () => document.getElementsByClassName('pagetoc')[0]; const pageToc = getPageToc(); const pageTocChildren = [...pageToc.children]; const headers = [...document.getElementsByClassName('header')]; // Select highlighted item in ToC when clicking an item pageTocChildren.forEach(child => { child.addEventHandler('click', () => { pageTocChildren.forEach(child => { child.classList.remove('active'); }); child.classList.add('active'); }); }); /** * Test whether a node is in the viewport */ function isInViewport(node) { const rect = node.getBoundingClientRect(); return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth); } /** * Set a new ToC entry. * Clear any previously highlighted ToC items, set the new one, * and adjust the ToC scroll position. */ function setTocEntry() { let activeEntry; const pageTocChildren = [...getPageToc().children]; // Calculate which header is the current one at the top of screen headers.forEach(header => { if (window.pageYOffset >= header.offsetTop) { activeEntry = header; } }); // Update selected item in ToC when scrolling pageTocChildren.forEach(child => { if (activeEntry.href.localeCompare(child.href) === 0) { child.classList.add('active'); } else { child.classList.remove('active'); } }); let tocEntryForLocation = document.querySelector(`nav a[href="${activeEntry.href}"]`); if (tocEntryForLocation) { const headingForLocation = document.querySelector(activeEntry.hash); if (headingForLocation && isInViewport(headingForLocation)) { // Update ToC scroll const nav = getPageToc(); const content = document.querySelector('html'); if (content.scrollTop !== 0) { nav.scrollTo({ top: tocEntryForLocation.offsetTop - 100, left: 0, behavior: 'smooth', }); } else { nav.scrollTop = 0; } } } } /** * Populate sidebar on load */ window.addEventListener('load', () => { // Prevent rendering the table of contents of the "print book" page, as it // will end up being rendered into the output (in a broken-looking way) // Get the name of the current page (i.e. 'print.html') const pageNameExtension = window.location.pathname.split('/').pop(); // Split off the extension (as '.../print' is also a valid page name), which // should result in 'print' const pageName = pageNameExtension.split('.')[0]; if (pageName === "print") { // Don't render the table of contents on this page return; } // Only create table of contents if there is more than one header on the page if (headers.length <= 1) { return; } // Create an entry in the page table of contents for each header in the document headers.forEach((header, index) => { const link = document.createElement('a'); // Indent shows hierarchy let indent = '0px'; switch (header.parentElement.tagName) { case 'H1': indent = '5px'; break; case 'H2': indent = '20px'; break; case 'H3': indent = '30px'; break; case 'H4': indent = '40px'; break; case 'H5': indent = '50px'; break; case 'H6': indent = '60px'; break; default: break; } let tocEntry; if (index == 0) { // Create a bolded title for the first element tocEntry = document.createElement("strong"); tocEntry.innerHTML = header.text; } else { // All other elements are non-bold tocEntry = document.createTextNode(header.text); } link.appendChild(tocEntry); link.style.paddingLeft = indent; link.href = header.href; pageToc.appendChild(link); }); setTocEntry.call(); }); // Handle active headers on scroll, if there is more than one header on the page if (headers.length > 1) { window.addEventListener('scroll', setTocEntry); } synapse-1.100.0/docs/website_files/theme/000077500000000000000000000000001455622526000202205ustar00rootroot00000000000000synapse-1.100.0/docs/website_files/theme/index.hbs000066400000000000000000000361071455622526000220340ustar00rootroot00000000000000 {{ title }} {{#if is_print }} {{/if}} {{#if base_url}} {{/if}} {{> head}} {{#if favicon_svg}} {{/if}} {{#if favicon_png}} {{/if}} {{#if print_enable}} {{/if}} {{#if copy_fonts}} {{/if}} {{#each additional_css}} {{/each}} {{#if mathjax_support}} {{/if}}
{{> header}} {{#if search_enabled}} {{/if}}
{{{ content }}}
{{#if livereload}} {{/if}} {{#if google_analytics}} {{/if}} {{#if playground_line_numbers}} {{/if}} {{#if playground_copyable}} {{/if}} {{#if playground_js}} {{/if}} {{#if search_js}} {{/if}} {{#each additional_js}} {{/each}} {{#if is_print}} {{#if mathjax_support}} {{else}} {{/if}} {{/if}} synapse-1.100.0/docs/website_files/version-picker.css000066400000000000000000000035561455622526000226010ustar00rootroot00000000000000.version-picker { display: flex; align-items: center; } .version-picker .dropdown { width: 130px; max-height: 29px; margin-left: 10px; display: inline-block; border-radius: 4px; border: 1px solid var(--theme-popup-border); position: relative; font-size: 13px; color: var(--fg); height: 100%; text-align: left; } .version-picker .dropdown .select { cursor: pointer; display: block; padding: 5px 2px 5px 15px; } .version-picker .dropdown .select > i { font-size: 10px; color: var(--fg); cursor: pointer; float: right; line-height: 20px !important; } .version-picker .dropdown:hover { border: 1px solid var(--theme-popup-border); } .version-picker .dropdown:active { background-color: var(--theme-popup-bg); } .version-picker .dropdown.active:hover, .version-picker .dropdown.active { border: 1px solid var(--theme-popup-border); border-radius: 2px 2px 0 0; background-color: var(--theme-popup-bg); } .version-picker .dropdown.active .select > i { transform: rotate(-180deg); } .version-picker .dropdown .dropdown-menu { position: absolute; background-color: var(--theme-popup-bg); width: 100%; left: -1px; right: 1px; margin-top: 1px; border: 1px solid var(--theme-popup-border); border-radius: 0 0 4px 4px; overflow: hidden; display: none; max-height: 300px; overflow-y: auto; z-index: 9; } .version-picker .dropdown .dropdown-menu li { font-size: 12px; padding: 6px 20px; cursor: pointer; } .version-picker .dropdown .dropdown-menu { padding: 0; list-style: none; } .version-picker .dropdown .dropdown-menu li:hover { background-color: var(--theme-hover); } .version-picker .dropdown .dropdown-menu li.active::before { display: inline-block; content: "✓"; margin-inline-start: -14px; width: 14px; }synapse-1.100.0/docs/website_files/version-picker.js000066400000000000000000000111411455622526000224120ustar00rootroot00000000000000 const dropdown = document.querySelector('.version-picker .dropdown'); const dropdownMenu = dropdown.querySelector('.dropdown-menu'); fetchVersions(dropdown, dropdownMenu).then(() => { initializeVersionDropdown(dropdown, dropdownMenu); }); /** * Initialize the dropdown functionality for version selection. * * @param {Element} dropdown - The dropdown element. * @param {Element} dropdownMenu - The dropdown menu element. */ function initializeVersionDropdown(dropdown, dropdownMenu) { // Toggle the dropdown menu on click dropdown.addEventListener('click', function () { this.setAttribute('tabindex', 1); this.classList.toggle('active'); dropdownMenu.style.display = (dropdownMenu.style.display === 'block') ? 'none' : 'block'; }); // Remove the 'active' class and hide the dropdown menu on focusout dropdown.addEventListener('focusout', function () { this.classList.remove('active'); dropdownMenu.style.display = 'none'; }); // Handle item selection within the dropdown menu const dropdownMenuItems = dropdownMenu.querySelectorAll('li'); dropdownMenuItems.forEach(function (item) { item.addEventListener('click', function () { dropdownMenuItems.forEach(function (item) { item.classList.remove('active'); }); this.classList.add('active'); dropdown.querySelector('span').textContent = this.textContent; dropdown.querySelector('input').value = this.getAttribute('id'); window.location.href = changeVersion(window.location.href, this.textContent); }); }); }; /** * This function fetches the available versions from a GitHub repository * and inserts them into the version picker. * * @param {Element} dropdown - The dropdown element. * @param {Element} dropdownMenu - The dropdown menu element. * @returns {Promise>} A promise that resolves with an array of available versions. */ function fetchVersions(dropdown, dropdownMenu) { return new Promise((resolve, reject) => { window.addEventListener("load", () => { fetch("https://api.github.com/repos/matrix-org/synapse/git/trees/gh-pages", { cache: "force-cache", }).then(res => res.json() ).then(resObject => { const excluded = ['dev-docs', 'v1.91.0', 'v1.80.0', 'v1.69.0']; const tree = resObject.tree.filter(item => item.type === "tree" && !excluded.includes(item.path)); const versions = tree.map(item => item.path).sort(sortVersions); // Create a list of
  • items for versions versions.forEach((version) => { const li = document.createElement("li"); li.textContent = version; li.id = version; if (window.SYNAPSE_VERSION === version) { li.classList.add('active'); dropdown.querySelector('span').textContent = version; dropdown.querySelector('input').value = version; } dropdownMenu.appendChild(li); }); resolve(versions); }).catch(ex => { console.error("Failed to fetch version data", ex); reject(ex); }) }); }); } /** * Custom sorting function to sort an array of version strings. * * @param {string} a - The first version string to compare. * @param {string} b - The second version string to compare. * @returns {number} - A negative number if a should come before b, a positive number if b should come before a, or 0 if they are equal. */ function sortVersions(a, b) { // Put 'develop' and 'latest' at the top if (a === 'develop' || a === 'latest') return -1; if (b === 'develop' || b === 'latest') return 1; const versionA = (a.match(/v\d+(\.\d+)+/) || [])[0]; const versionB = (b.match(/v\d+(\.\d+)+/) || [])[0]; return versionB.localeCompare(versionA); } /** * Change the version in a URL path. * * @param {string} url - The original URL to be modified. * @param {string} newVersion - The new version to replace the existing version in the URL. * @returns {string} The updated URL with the new version. */ function changeVersion(url, newVersion) { const parsedURL = new URL(url); const pathSegments = parsedURL.pathname.split('/'); // Modify the version pathSegments[2] = newVersion; // Reconstruct the URL parsedURL.pathname = pathSegments.join('/'); return parsedURL.href; }synapse-1.100.0/docs/website_files/version.js000066400000000000000000000000431455622526000211360ustar00rootroot00000000000000window.SYNAPSE_VERSION = "latest"; synapse-1.100.0/docs/welcome_and_overview.md000066400000000000000000000056071455622526000210270ustar00rootroot00000000000000# Introduction Welcome to the documentation repository for Synapse, a [Matrix](https://matrix.org) homeserver implementation developed by Element. ## Installing and using Synapse This documentation covers topics for **installation**, **configuration** and **maintenance** of your Synapse process: * Learn how to [install](setup/installation.md) and [configure](usage/configuration/config_documentation.md) your own instance, perhaps with [Single Sign-On](usage/configuration/user_authentication/index.html). * See how to [upgrade](upgrade.md) between Synapse versions. * Administer your instance using the [Admin API](usage/administration/admin_api/index.html), installing [pluggable modules](modules/index.html), or by accessing the [manhole](manhole.md). * Learn how to [read log lines](usage/administration/request_log.md), configure [logging](usage/configuration/logging_sample_config.md) or set up [structured logging](structured_logging.md). * Scale Synapse through additional [worker processes](workers.md). * Set up [monitoring and metrics](metrics-howto.md) to keep an eye on your Synapse instance's performance. ## Developing on Synapse Contributions are welcome! Synapse is primarily written in [Python](https://python.org). As a developer, you may be interested in the following documentation: * Read the [Contributing Guide](development/contributing_guide.md). It is meant to walk new contributors through the process of developing and submitting a change to the Synapse codebase (which is [hosted on GitHub](https://github.com/element-hq/synapse)). * Set up your [development environment](development/contributing_guide.md#2-what-do-i-need), then learn how to [lint](development/contributing_guide.md#run-the-linters) and [test](development/contributing_guide.md#8-test-test-test) your code. * Look at [the issue tracker](https://github.com/element-hq/synapse/issues) for bugs to fix or features to add. If you're new, it may be best to start with those labeled [good first issue](https://github.com/element-hq/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). * Understand [how Synapse is built](development/internal_documentation/index.html), how to [migrate database schemas](development/database_schema.md), learn about [federation](federate.md) and how to [set up a local federation](federate.md#running-a-demo-federation-of-synapses) for development. * We like to keep our `git` history clean. [Learn](development/git.md) how to do so! * And finally, contribute to this documentation! The source for which is [located here](https://github.com/element-hq/synapse/tree/develop/docs). ## Reporting a security vulnerability If you've found a security issue in Synapse or any other Matrix.org Foundation project, please report it to us in accordance with our [Security Disclosure Policy](https://www.matrix.org/security-disclosure-policy/). Thank you! synapse-1.100.0/docs/workers.md000066400000000000000000001002741455622526000163140ustar00rootroot00000000000000# Scaling synapse via workers For small instances it is recommended to run Synapse in the default monolith mode. For larger instances where performance is a concern it can be helpful to split out functionality into multiple separate python processes. These processes are called 'workers', and are (eventually) intended to scale horizontally independently. Synapse's worker support is under active development and subject to change as we attempt to rapidly scale ever larger Synapse instances. However we are documenting it here to help admins needing a highly scalable Synapse instance similar to the one running `matrix.org`. All processes continue to share the same database instance, and as such, workers only work with PostgreSQL-based Synapse deployments. SQLite should only be used for demo purposes and any admin considering workers should already be running PostgreSQL. See also [Matrix.org blog post](https://matrix.org/blog/2020/11/03/how-we-fixed-synapses-scalability) for a higher level overview. ## Main process/worker communication The processes communicate with each other via a Synapse-specific protocol called 'replication' (analogous to MySQL- or Postgres-style database replication) which feeds streams of newly written data between processes so they can be kept in sync with the database state. When configured to do so, Synapse uses a [Redis pub/sub channel](https://redis.io/docs/manual/pubsub/) to send the replication stream between all configured Synapse processes. Additionally, processes may make HTTP requests to each other, primarily for operations which need to wait for a reply ─ such as sending an event. All the workers and the main process connect to Redis, which relays replication commands between processes. If Redis support is enabled Synapse will use it as a shared cache, as well as a pub/sub mechanism. See the [Architectural diagram](#architectural-diagram) section at the end for a visualisation of what this looks like. ## Setting up workers A Redis server is required to manage the communication between the processes. The Redis server should be installed following the normal procedure for your distribution (e.g. `apt install redis-server` on Debian). It is safe to use an existing Redis deployment if you have one. Once installed, check that Redis is running and accessible from the host running Synapse, for example by executing `echo PING | nc -q1 localhost 6379` and seeing a response of `+PONG`. The appropriate dependencies must also be installed for Synapse. If using a virtualenv, these can be installed with: ```sh pip install "matrix-synapse[redis]" ``` Note that these dependencies are included when synapse is installed with `pip install matrix-synapse[all]`. They are also included in the debian packages from `packages.matrix.org` and in the docker images at https://hub.docker.com/r/ectorim/synapse/. To make effective use of the workers, you will need to configure an HTTP reverse-proxy such as nginx or haproxy, which will direct incoming requests to the correct worker, or to the main synapse instance. See [the reverse proxy documentation](reverse_proxy.md) for information on setting up a reverse proxy. When using workers, each worker process has its own configuration file which contains settings specific to that worker, such as the HTTP listener that it provides (if any), logging configuration, etc. Normally, the worker processes are configured to read from a shared configuration file as well as the worker-specific configuration files. This makes it easier to keep common configuration settings synchronised across all the processes. The main process is somewhat special in this respect: it does not normally need its own configuration file and can take all of its configuration from the shared configuration file. ### Shared configuration Normally, only a few changes are needed to make an existing configuration file suitable for use with workers: * First, you need to enable an ["HTTP replication listener"](usage/configuration/config_documentation.md#listeners) for the main process * Secondly, you need to enable [redis-based replication](usage/configuration/config_documentation.md#redis) * You will need to add an [`instance_map`](usage/configuration/config_documentation.md#instance_map) with the `main` process defined, as well as the relevant connection information from it's HTTP `replication` listener (defined in step 1 above). * Note that the `host` defined is the address the worker needs to look for the `main` process at, not necessarily the same address that is bound to. * If you are using Unix sockets for the `replication` resource, make sure to use a `path` to the socket file instead of a `port`. * Optionally, a [shared secret](usage/configuration/config_documentation.md#worker_replication_secret) can be used to authenticate HTTP traffic between workers. For example: ```yaml # extend the existing `listeners` section. This defines the ports that the # main process will listen on. listeners: # The HTTP replication port - port: 9093 bind_address: '127.0.0.1' type: http resources: - names: [replication] # Add a random shared secret to authenticate traffic. worker_replication_secret: "" redis: enabled: true instance_map: main: host: 'localhost' port: 9093 ``` See the [configuration manual](usage/configuration/config_documentation.md) for the full documentation of each option. Under **no circumstances** should the replication listener be exposed to the public internet; replication traffic is: * always unencrypted * unauthenticated, unless [`worker_replication_secret`](usage/configuration/config_documentation.md#worker_replication_secret) is configured ### Worker configuration In the config file for each worker, you must specify: * The type of worker ([`worker_app`](usage/configuration/config_documentation.md#worker_app)). The currently available worker applications are listed [below](#available-worker-applications). * A unique name for the worker ([`worker_name`](usage/configuration/config_documentation.md#worker_name)). * If handling HTTP requests, a [`worker_listeners`](usage/configuration/config_documentation.md#worker_listeners) option with an `http` listener. * **Synapse 1.72 and older:** if handling the `^/_matrix/client/v3/keys/upload` endpoint, the HTTP URI for the main process (`worker_main_http_uri`). This config option is no longer required and is ignored when running Synapse 1.73 and newer. For example: ```yaml {{#include systemd-with-workers/workers/generic_worker.yaml}} ``` ...is a full configuration for a generic worker instance, which will expose a plain HTTP endpoint on port 8083 separately serving various endpoints, e.g. `/sync`, which are listed below. Obviously you should configure your reverse-proxy to route the relevant endpoints to the worker (`localhost:8083` in the above example). ### Running Synapse with workers Finally, you need to start your worker processes. This can be done with either `synctl` or your distribution's preferred service manager such as `systemd`. We recommend the use of `systemd` where available: for information on setting up `systemd` to start synapse workers, see [Systemd with Workers](systemd-with-workers/). To use `synctl`, see [Using synctl with Workers](synctl_workers.md). ## Start Synapse with Poetry The following applies to Synapse installations that have been installed from source using `poetry`. You can start the main Synapse process with Poetry by running the following command: ```console poetry run synapse_homeserver --config-file [your homeserver.yaml] ``` For worker setups, you can run the following command ```console poetry run synapse_worker --config-file [your homeserver.yaml] --config-file [your worker.yaml] ``` ## Available worker applications ### `synapse.app.generic_worker` This worker can handle API requests matching the following regular expressions. These endpoints can be routed to any worker. If a worker is set up to handle a stream then, for maximum efficiency, additional endpoints should be routed to that worker: refer to the [stream writers](#stream-writers) section below for further information. # Sync requests ^/_matrix/client/(r0|v3)/sync$ ^/_matrix/client/(api/v1|r0|v3)/events$ ^/_matrix/client/(api/v1|r0|v3)/initialSync$ ^/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$ # Federation requests ^/_matrix/federation/v1/event/ ^/_matrix/federation/v1/state/ ^/_matrix/federation/v1/state_ids/ ^/_matrix/federation/v1/backfill/ ^/_matrix/federation/v1/get_missing_events/ ^/_matrix/federation/v1/publicRooms ^/_matrix/federation/v1/query/ ^/_matrix/federation/v1/make_join/ ^/_matrix/federation/v1/make_leave/ ^/_matrix/federation/(v1|v2)/send_join/ ^/_matrix/federation/(v1|v2)/send_leave/ ^/_matrix/federation/(v1|v2)/invite/ ^/_matrix/federation/v1/event_auth/ ^/_matrix/federation/v1/timestamp_to_event/ ^/_matrix/federation/v1/exchange_third_party_invite/ ^/_matrix/federation/v1/user/devices/ ^/_matrix/key/v2/query ^/_matrix/federation/v1/hierarchy/ # Inbound federation transaction request ^/_matrix/federation/v1/send/ # Client API requests ^/_matrix/client/(api/v1|r0|v3|unstable)/createRoom$ ^/_matrix/client/(api/v1|r0|v3|unstable)/publicRooms$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/joined_members$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/context/.*$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/members$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state$ ^/_matrix/client/v1/rooms/.*/hierarchy$ ^/_matrix/client/(v1|unstable)/rooms/.*/relations/ ^/_matrix/client/v1/rooms/.*/threads$ ^/_matrix/client/unstable/im.nheko.summary/rooms/.*/summary$ ^/_matrix/client/(r0|v3|unstable)/account/3pid$ ^/_matrix/client/(r0|v3|unstable)/account/whoami$ ^/_matrix/client/(r0|v3|unstable)/devices$ ^/_matrix/client/versions$ ^/_matrix/client/(api/v1|r0|v3|unstable)/voip/turnServer$ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/event/ ^/_matrix/client/(api/v1|r0|v3|unstable)/joined_rooms$ ^/_matrix/client/v1/rooms/.*/timestamp_to_event$ ^/_matrix/client/(api/v1|r0|v3|unstable/.*)/rooms/.*/aliases ^/_matrix/client/(api/v1|r0|v3|unstable)/search$ ^/_matrix/client/(r0|v3|unstable)/user/.*/filter(/|$) ^/_matrix/client/(api/v1|r0|v3|unstable)/directory/room/.*$ ^/_matrix/client/(r0|v3|unstable)/capabilities$ ^/_matrix/client/(r0|v3|unstable)/notifications$ # Encryption requests ^/_matrix/client/(r0|v3|unstable)/keys/query$ ^/_matrix/client/(r0|v3|unstable)/keys/changes$ ^/_matrix/client/(r0|v3|unstable)/keys/claim$ ^/_matrix/client/(r0|v3|unstable)/room_keys/ ^/_matrix/client/(r0|v3|unstable)/keys/upload/ # Registration/login requests ^/_matrix/client/(api/v1|r0|v3|unstable)/login$ ^/_matrix/client/(r0|v3|unstable)/register$ ^/_matrix/client/(r0|v3|unstable)/register/available$ ^/_matrix/client/v1/register/m.login.registration_token/validity$ ^/_matrix/client/(r0|v3|unstable)/password_policy$ # Event sending requests ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/redact ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/send ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state/ ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick)$ ^/_matrix/client/(api/v1|r0|v3|unstable)/join/ ^/_matrix/client/(api/v1|r0|v3|unstable)/knock/ ^/_matrix/client/(api/v1|r0|v3|unstable)/profile/ # Account data requests ^/_matrix/client/(r0|v3|unstable)/.*/tags ^/_matrix/client/(r0|v3|unstable)/.*/account_data # Receipts requests ^/_matrix/client/(r0|v3|unstable)/rooms/.*/receipt ^/_matrix/client/(r0|v3|unstable)/rooms/.*/read_markers # Presence requests ^/_matrix/client/(api/v1|r0|v3|unstable)/presence/ # User directory search requests ^/_matrix/client/(r0|v3|unstable)/user_directory/search$ Additionally, the following REST endpoints can be handled for GET requests: ^/_matrix/client/(api/v1|r0|v3|unstable)/pushrules/ Pagination requests can also be handled, but all requests for a given room must be routed to the same instance. Additionally, care must be taken to ensure that the purge history admin API is not used while pagination requests for the room are in flight: ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/messages$ Additionally, the following endpoints should be included if Synapse is configured to use SSO (you only need to include the ones for whichever SSO provider you're using): # for all SSO providers ^/_matrix/client/(api/v1|r0|v3|unstable)/login/sso/redirect ^/_synapse/client/pick_idp$ ^/_synapse/client/pick_username ^/_synapse/client/new_user_consent$ ^/_synapse/client/sso_register$ # OpenID Connect requests. ^/_synapse/client/oidc/callback$ # SAML requests. ^/_synapse/client/saml2/authn_response$ # CAS requests. ^/_matrix/client/(api/v1|r0|v3|unstable)/login/cas/ticket$ Ensure that all SSO logins go to a single process. For multiple workers not handling the SSO endpoints properly, see [#7530](https://github.com/matrix-org/synapse/issues/7530) and [#9427](https://github.com/matrix-org/synapse/issues/9427). Note that a [HTTP listener](usage/configuration/config_documentation.md#listeners) with `client` and `federation` `resources` must be configured in the [`worker_listeners`](usage/configuration/config_documentation.md#worker_listeners) option in the worker config. #### Load balancing It is possible to run multiple instances of this worker app, with incoming requests being load-balanced between them by the reverse-proxy. However, different endpoints have different characteristics and so admins may wish to run multiple groups of workers handling different endpoints so that load balancing can be done in different ways. For `/sync` and `/initialSync` requests it will be more efficient if all requests from a particular user are routed to a single instance. This can be done in reverse proxy by extracting username part from the users access token. Admins may additionally wish to separate out `/sync` requests that have a `since` query parameter from those that don't (and `/initialSync`), as requests that don't are known as "initial sync" that happens when a user logs in on a new device and can be *very* resource intensive, so isolating these requests will stop them from interfering with other users ongoing syncs. Example `nginx` configuration snippet that handles the cases above. This is just an example and probably requires some changes according to your particular setup: ```nginx # Choose sync worker based on the existence of "since" query parameter map $arg_since $sync { default synapse_sync; '' synapse_initial_sync; } # Extract username from access token passed as URL parameter map $arg_access_token $accesstoken_from_urlparam { # Defaults to just passing back the whole accesstoken default $arg_access_token; # Try to extract username part from accesstoken URL parameter "~syt_(?.*?)_.*" $username; } # Extract username from access token passed as authorization header map $http_authorization $mxid_localpart { # Defaults to just passing back the whole accesstoken default $http_authorization; # Try to extract username part from accesstoken header "~Bearer syt_(?.*?)_.*" $username; # if no authorization-header exist, try mapper for URL parameter "access_token" "" $accesstoken_from_urlparam; } upstream synapse_initial_sync { # Use the username mapper result for hash key hash $mxid_localpart consistent; server 127.0.0.1:8016; server 127.0.0.1:8036; } upstream synapse_sync { # Use the username mapper result for hash key hash $mxid_localpart consistent; server 127.0.0.1:8013; server 127.0.0.1:8037; server 127.0.0.1:8038; server 127.0.0.1:8039; } # Sync initial/normal location ~ ^/_matrix/client/(r0|v3)/sync$ { proxy_pass http://$sync; } # Normal sync location ~ ^/_matrix/client/(api/v1|r0|v3)/events$ { proxy_pass http://synapse_sync; } # Initial_sync location ~ ^/_matrix/client/(api/v1|r0|v3)/initialSync$ { proxy_pass http://synapse_initial_sync; } location ~ ^/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$ { proxy_pass http://synapse_initial_sync; } ``` Federation and client requests can be balanced via simple round robin. The inbound federation transaction request `^/_matrix/federation/v1/send/` should be balanced by source IP so that transactions from the same remote server go to the same process. Registration/login requests can be handled separately purely to help ensure that unexpected load doesn't affect new logins and sign ups. Finally, event sending requests can be balanced by the room ID in the URI (or the full URI, or even just round robin), the room ID is the path component after `/rooms/`. If there is a large bridge connected that is sending or may send lots of events, then a dedicated set of workers can be provisioned to limit the effects of bursts of events from that bridge on events sent by normal users. #### Stream writers Additionally, the writing of specific streams (such as events) can be moved off of the main process to a particular worker. To enable this, the worker must have: * An [HTTP `replication` listener](usage/configuration/config_documentation.md#listeners) configured, * Have a [`worker_name`](usage/configuration/config_documentation.md#worker_name) and be listed in the [`instance_map`](usage/configuration/config_documentation.md#instance_map) config. * Have the main process declared on the [`instance_map`](usage/configuration/config_documentation.md#instance_map) as well. Note: The same worker can handle multiple streams, but unless otherwise documented, each stream can only have a single writer. For example, to move event persistence off to a dedicated worker, the shared configuration would include: ```yaml instance_map: main: host: localhost port: 8030 event_persister1: host: localhost port: 8034 stream_writers: events: event_persister1 ``` An example for a stream writer instance: ```yaml {{#include systemd-with-workers/workers/event_persister.yaml}} ``` Some of the streams have associated endpoints which, for maximum efficiency, should be routed to the workers handling that stream. See below for the currently supported streams and the endpoints associated with them: ##### The `events` stream The `events` stream experimentally supports having multiple writer workers, where load is sharded between them by room ID. Each writer is called an _event persister_. They are responsible for - receiving new events, - linking them to those already in the room [DAG](development/room-dag-concepts.md), - persisting them to the DB, and finally - updating the events stream. Because load is sharded in this way, you *must* restart all worker instances when adding or removing event persisters. An `event_persister` should not be mistaken for an `event_creator`. An `event_creator` listens for requests from clients to create new events and does so. It will then pass those events over HTTP replication to any configured event persisters (or the main process if none are configured). Note that `event_creator`s and `event_persister`s are implemented using the same [`synapse.app.generic_worker`](#synapseappgeneric_worker). An example [`stream_writers`](usage/configuration/config_documentation.md#stream_writers) configuration with multiple writers: ```yaml stream_writers: events: - event_persister1 - event_persister2 ``` ##### The `typing` stream The following endpoints should be routed directly to the worker configured as the stream writer for the `typing` stream: ^/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/typing ##### The `to_device` stream The following endpoints should be routed directly to the worker configured as the stream writer for the `to_device` stream: ^/_matrix/client/(r0|v3|unstable)/sendToDevice/ ##### The `account_data` stream The following endpoints should be routed directly to the worker configured as the stream writer for the `account_data` stream: ^/_matrix/client/(r0|v3|unstable)/.*/tags ^/_matrix/client/(r0|v3|unstable)/.*/account_data ##### The `receipts` stream The following endpoints should be routed directly to the worker configured as the stream writer for the `receipts` stream: ^/_matrix/client/(r0|v3|unstable)/rooms/.*/receipt ^/_matrix/client/(r0|v3|unstable)/rooms/.*/read_markers ##### The `presence` stream The following endpoints should be routed directly to the worker configured as the stream writer for the `presence` stream: ^/_matrix/client/(api/v1|r0|v3|unstable)/presence/ #### Restrict outbound federation traffic to a specific set of workers The [`outbound_federation_restricted_to`](usage/configuration/config_documentation.md#outbound_federation_restricted_to) configuration is useful to make sure outbound federation traffic only goes through a specified subset of workers. This allows you to set more strict access controls (like a firewall) for all workers and only allow the `federation_sender`'s to contact the outside world. ```yaml instance_map: main: host: localhost port: 8030 federation_sender1: host: localhost port: 8034 outbound_federation_restricted_to: - federation_sender1 worker_replication_secret: "secret_secret" ``` #### Background tasks There is also support for moving background tasks to a separate worker. Background tasks are run periodically or started via replication. Exactly which tasks are configured to run depends on your Synapse configuration (e.g. if stats is enabled). This worker doesn't handle any REST endpoints itself. To enable this, the worker must have a unique [`worker_name`](usage/configuration/config_documentation.md#worker_name) and can be configured to run background tasks. For example, to move background tasks to a dedicated worker, the shared configuration would include: ```yaml run_background_tasks_on: background_worker ``` You might also wish to investigate the [`update_user_directory_from_worker`](#updating-the-user-directory) and [`media_instance_running_background_jobs`](#synapseappmedia_repository) settings. An example for a dedicated background worker instance: ```yaml {{#include systemd-with-workers/workers/background_worker.yaml}} ``` #### Updating the User Directory You can designate one generic worker to update the user directory. Specify its name in the [shared configuration](usage/configuration/config_documentation.md#update_user_directory_from_worker) as follows: ```yaml update_user_directory_from_worker: worker_name ``` This work cannot be load-balanced; please ensure the main process is restarted after setting this option in the shared configuration! User directory updates allow REST endpoints matching the following regular expressions to work: ^/_matrix/client/(r0|v3|unstable)/user_directory/search$ The above endpoints can be routed to any worker, though you may choose to route it to the chosen user directory worker. This style of configuration supersedes the legacy `synapse.app.user_dir` worker application type. #### Notifying Application Services You can designate one generic worker to send output traffic to Application Services. Doesn't handle any REST endpoints itself, but you should specify its name in the [shared configuration](usage/configuration/config_documentation.md#notify_appservices_from_worker) as follows: ```yaml notify_appservices_from_worker: worker_name ``` This work cannot be load-balanced; please ensure the main process is restarted after setting this option in the shared configuration! This style of configuration supersedes the legacy `synapse.app.appservice` worker application type. #### Push Notifications You can designate generic worker to sending push notifications to a [push gateway](https://spec.matrix.org/v1.5/push-gateway-api/) such as [sygnal](https://github.com/vector-im/sygnal) and email. This will stop the main process sending push notifications. The workers responsible for sending push notifications can be defined using the [`pusher_instances`](usage/configuration/config_documentation.md#pusher_instances) option. For example: ```yaml pusher_instances: - pusher_worker1 - pusher_worker2 ``` Multiple workers can be added to this map, in which case the work is balanced across them. Ensure the main process and all pusher workers are restarted after changing this option. These workers don't need to accept incoming HTTP requests to send push notifications, so no additional reverse proxy configuration is required for pusher workers. This style of configuration supersedes the legacy `synapse.app.pusher` worker application type. ### `synapse.app.pusher` It is likely this option will be deprecated in the future and is not recommended for new installations. Instead, [use `synapse.app.generic_worker` with the `pusher_instances`](#push-notifications). Handles sending push notifications to sygnal and email. Doesn't handle any REST endpoints itself, but you should set [`start_pushers: false`](usage/configuration/config_documentation.md#start_pushers) in the shared configuration file to stop the main synapse sending push notifications. To run multiple instances at once the [`pusher_instances`](usage/configuration/config_documentation.md#pusher_instances) option should list all pusher instances by their [`worker_name`](usage/configuration/config_documentation.md#worker_name), e.g.: ```yaml start_pushers: false pusher_instances: - pusher_worker1 - pusher_worker2 ``` An example for a pusher instance: ```yaml {{#include systemd-with-workers/workers/pusher_worker.yaml}} ``` ### `synapse.app.appservice` **Deprecated as of Synapse v1.59.** [Use `synapse.app.generic_worker` with the `notify_appservices_from_worker` option instead.](#notifying-application-services) Handles sending output traffic to Application Services. Doesn't handle any REST endpoints itself, but you should set `notify_appservices: False` in the shared configuration file to stop the main synapse sending appservice notifications. Note this worker cannot be load-balanced: only one instance should be active. ### `synapse.app.federation_sender` It is likely this option will be deprecated in the future and not recommended for new installations. Instead, [use `synapse.app.generic_worker` with the `federation_sender_instances`](usage/configuration/config_documentation.md#federation_sender_instances). Handles sending federation traffic to other servers. Doesn't handle any REST endpoints itself, but you should set [`send_federation: false`](usage/configuration/config_documentation.md#send_federation) in the shared configuration file to stop the main synapse sending this traffic. If running multiple federation senders then you must list each instance in the [`federation_sender_instances`](usage/configuration/config_documentation.md#federation_sender_instances) option by their [`worker_name`](usage/configuration/config_documentation.md#worker_name). All instances must be stopped and started when adding or removing instances. For example: ```yaml send_federation: false federation_sender_instances: - federation_sender1 - federation_sender2 ``` An example for a federation sender instance: ```yaml {{#include systemd-with-workers/workers/federation_sender.yaml}} ``` ### `synapse.app.media_repository` Handles the media repository. It can handle all endpoints starting with: /_matrix/media/ ... and the following regular expressions matching media-specific administration APIs: ^/_synapse/admin/v1/purge_media_cache$ ^/_synapse/admin/v1/room/.*/media.*$ ^/_synapse/admin/v1/user/.*/media.*$ ^/_synapse/admin/v1/media/.*$ ^/_synapse/admin/v1/quarantine_media/.*$ ^/_synapse/admin/v1/users/.*/media$ You should also set [`enable_media_repo: False`](usage/configuration/config_documentation.md#enable_media_repo) in the shared configuration file to stop the main synapse running background jobs related to managing the media repository. Note that doing so will prevent the main process from being able to handle the above endpoints. In the `media_repository` worker configuration file, configure the [HTTP listener](usage/configuration/config_documentation.md#listeners) to expose the `media` resource. For example: ```yaml {{#include systemd-with-workers/workers/media_worker.yaml}} ``` Note that if running multiple media repositories they must be on the same server and you must specify a single instance to run the background tasks in the [shared configuration](usage/configuration/config_documentation.md#media_instance_running_background_jobs), e.g.: ```yaml media_instance_running_background_jobs: "media-repository-1" ``` Note that if a reverse proxy is used , then `/_matrix/media/` must be routed for both inbound client and federation requests (if they are handled separately). ### `synapse.app.user_dir` **Deprecated as of Synapse v1.59.** [Use `synapse.app.generic_worker` with the `update_user_directory_from_worker` option instead.](#updating-the-user-directory) Handles searches in the user directory. It can handle REST endpoints matching the following regular expressions: ^/_matrix/client/(r0|v3|unstable)/user_directory/search$ When using this worker you must also set `update_user_directory: false` in the shared configuration file to stop the main synapse running background jobs related to updating the user directory. Above endpoint is not *required* to be routed to this worker. By default, `update_user_directory` is set to `true`, which means the main process will handle updates. All workers configured with `client` can handle the above endpoint as long as either this worker or the main process are configured to handle it, and are online. If `update_user_directory` is set to `false`, and this worker is not running, the above endpoint may give outdated results. ### Historical apps The following used to be separate worker application types, but are now equivalent to `synapse.app.generic_worker`: * `synapse.app.client_reader` * `synapse.app.event_creator` * `synapse.app.federation_reader` * `synapse.app.federation_sender` * `synapse.app.frontend_proxy` * `synapse.app.pusher` * `synapse.app.synchrotron` ## Migration from old config A main change that has occurred is the merging of worker apps into `synapse.app.generic_worker`. This change is backwards compatible and so no changes to the config are required. To migrate apps to use `synapse.app.generic_worker` simply update the `worker_app` option in the worker configs, and where worker are started (e.g. in systemd service files, but not required for synctl). ## Architectural diagram The following shows an example setup using Redis and a reverse proxy: ``` Clients & Federation | v +-----------+ | | | Reverse | | Proxy | | | +-----------+ | | | | | | HTTP requests +-------------------+ | +-----------+ | +---+ | | | | v v v +--------------+ +--------------+ +--------------+ +--------------+ | Main | | Generic | | Generic | | Event | | Process | | Worker 1 | | Worker 2 | | Persister | +--------------+ +--------------+ +--------------+ +--------------+ ^ ^ | ^ | | ^ | | ^ ^ | | | | | | | | | | | | | | | | HTTP | | | | | | | +----------+<--|---|---------+<--|---|---------+ | | | | +-------------|-->+-------------+ | | | | | | | | | v v v v ====================================================================== Redis pub/sub channel ``` synapse-1.100.0/flake.lock000066400000000000000000000206121455622526000152770ustar00rootroot00000000000000{ "nodes": { "devenv": { "inputs": { "flake-compat": "flake-compat", "nix": "nix", "nixpkgs": "nixpkgs", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { "lastModified": 1688058187, "narHash": "sha256-ipDcc7qrucpJ0+0eYNlwnE+ISTcq4m03qW+CWUshRXI=", "owner": "cachix", "repo": "devenv", "rev": "c8778e3dc30eb9043e218aaa3861d42d4992de77", "type": "github" }, "original": { "owner": "cachix", "ref": "v0.6.3", "repo": "devenv", "type": "github" } }, "flake-compat": { "flake": false, "locked": { "lastModified": 1673956053, "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, "flake-utils": { "inputs": { "systems": "systems" }, "locked": { "lastModified": 1685518550, "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "flake-utils_2": { "inputs": { "systems": "systems_2" }, "locked": { "lastModified": 1681202837, "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "owner": "numtide", "repo": "flake-utils", "rev": "cfacdce06f30d2b68473a46042957675eebb3401", "type": "github" }, "original": { "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "gitignore": { "inputs": { "nixpkgs": [ "devenv", "pre-commit-hooks", "nixpkgs" ] }, "locked": { "lastModified": 1660459072, "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", "owner": "hercules-ci", "repo": "gitignore.nix", "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { "owner": "hercules-ci", "repo": "gitignore.nix", "type": "github" } }, "lowdown-src": { "flake": false, "locked": { "lastModified": 1633514407, "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { "owner": "kristapsdz", "repo": "lowdown", "type": "github" } }, "nix": { "inputs": { "lowdown-src": "lowdown-src", "nixpkgs": [ "devenv", "nixpkgs" ], "nixpkgs-regression": "nixpkgs-regression" }, "locked": { "lastModified": 1676545802, "narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=", "owner": "domenkozar", "repo": "nix", "rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f", "type": "github" }, "original": { "owner": "domenkozar", "ref": "relaxed-flakes", "repo": "nix", "type": "github" } }, "nixpkgs": { "locked": { "lastModified": 1678875422, "narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=", "owner": "NixOS", "repo": "nixpkgs", "rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459", "type": "github" }, "original": { "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-regression": { "locked": { "lastModified": 1643052045, "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", "repo": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, "nixpkgs-stable": { "locked": { "lastModified": 1685801374, "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", "owner": "NixOS", "repo": "nixpkgs", "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { "owner": "NixOS", "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_2": { "locked": { "lastModified": 1690535733, "narHash": "sha256-WgjUPscQOw3cB8yySDGlyzo6cZNihnRzUwE9kadv/5I=", "owner": "NixOS", "repo": "nixpkgs", "rev": "8cacc05fbfffeaab910e8c2c9e2a7c6b32ce881a", "type": "github" }, "original": { "owner": "NixOS", "ref": "master", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_3": { "locked": { "lastModified": 1681358109, "narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=", "owner": "NixOS", "repo": "nixpkgs", "rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9", "type": "github" }, "original": { "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "pre-commit-hooks": { "inputs": { "flake-compat": [ "devenv", "flake-compat" ], "flake-utils": "flake-utils", "gitignore": "gitignore", "nixpkgs": [ "devenv", "nixpkgs" ], "nixpkgs-stable": "nixpkgs-stable" }, "locked": { "lastModified": 1688056373, "narHash": "sha256-2+SDlNRTKsgo3LBRiMUcoEUb6sDViRNQhzJquZ4koOI=", "owner": "cachix", "repo": "pre-commit-hooks.nix", "rev": "5843cf069272d92b60c3ed9e55b7a8989c01d4c7", "type": "github" }, "original": { "owner": "cachix", "repo": "pre-commit-hooks.nix", "type": "github" } }, "root": { "inputs": { "devenv": "devenv", "nixpkgs": "nixpkgs_2", "rust-overlay": "rust-overlay", "systems": "systems_3" } }, "rust-overlay": { "inputs": { "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1693966243, "narHash": "sha256-a2CA1aMIPE67JWSVIGoGtD3EGlFdK9+OlJQs0FOWCKY=", "owner": "oxalica", "repo": "rust-overlay", "rev": "a8b4bb4cbb744baaabc3e69099f352f99164e2c1", "type": "github" }, "original": { "owner": "oxalica", "repo": "rust-overlay", "type": "github" } }, "systems": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", "repo": "default", "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", "repo": "default", "type": "github" } }, "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", "repo": "default", "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", "repo": "default", "type": "github" } }, "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", "repo": "default", "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", "repo": "default", "type": "github" } } }, "root": "root", "version": 7 } synapse-1.100.0/flake.nix000066400000000000000000000277531455622526000151620ustar00rootroot00000000000000# A Nix flake that sets up a complete Synapse development environment. Dependencies # for the SyTest (https://github.com/matrix-org/sytest) and Complement # (https://github.com/matrix-org/complement) Matrix homeserver test suites are also # installed automatically. # # You must have already installed Nix (https://nixos.org) on your system to use this. # Nix can be installed on Linux or MacOS; NixOS is not required. Windows is not # directly supported, but Nix can be installed inside of WSL2 or even Docker # containers. Please refer to https://nixos.org/download for details. # # You must also enable support for flakes in Nix. See the following for how to # do so permanently: https://nixos.wiki/wiki/Flakes#Enable_flakes # # Be warned: you'll need over 3.75 GB of free space to download all the dependencies. # # Usage: # # With Nix installed, navigate to the directory containing this flake and run # `nix develop --impure`. The `--impure` is necessary in order to store state # locally from "services", such as PostgreSQL and Redis. # # You should now be dropped into a new shell with all programs and dependencies # availabile to you! # # You can start up pre-configured local Synapse, PostgreSQL and Redis instances by # running: `devenv up`. To stop them, use Ctrl-C. # # All state (the venv, postgres and redis data and config) are stored in # .devenv/state. Deleting a file from here and then re-entering the shell # will recreate these files from scratch. # # You can exit the development shell by typing `exit`, or using Ctrl-D. # # If you would like this development environment to activate automatically # upon entering this directory in your terminal, first install `direnv` # (https://direnv.net/). Then run `echo 'use flake . --impure' >> .envrc` at # the root of the Synapse repo. Finally, run `direnv allow .` to allow the # contents of '.envrc' to run every time you enter this directory. Voilà! { inputs = { # Use the master/unstable branch of nixpkgs. Used to fetch the latest # available versions of packages. nixpkgs.url = "github:NixOS/nixpkgs/master"; # Output a development shell for x86_64/aarch64 Linux/Darwin (MacOS). systems.url = "github:nix-systems/default"; # A development environment manager built on Nix. See https://devenv.sh. devenv.url = "github:cachix/devenv/v0.6.3"; # Rust toolchain. rust-overlay.url = "github:oxalica/rust-overlay"; }; outputs = { self, nixpkgs, devenv, systems, rust-overlay, ... } @ inputs: let forEachSystem = nixpkgs.lib.genAttrs (import systems); in { devShells = forEachSystem (system: let overlays = [ (import rust-overlay) ]; pkgs = import nixpkgs { inherit system overlays; }; in { # Everything is configured via devenv - a Nix module for creating declarative # developer environments. See https://devenv.sh/reference/options/ for a list # of all possible options. default = devenv.lib.mkShell { inherit inputs pkgs; modules = [ { # Make use of the Starship command prompt when this development environment # is manually activated (via `nix develop --impure`). # See https://starship.rs/ for details on the prompt itself. starship.enable = true; # Configure packages to install. # Search for package names at https://search.nixos.org/packages?channel=unstable packages = with pkgs; [ # The rust toolchain and related tools. # This will install the "default" profile of rust components. # https://rust-lang.github.io/rustup/concepts/profiles.html # # NOTE: We currently need to set the Rust version unnecessarily high # in order to work around https://github.com/matrix-org/synapse/issues/15939 (rust-bin.stable."1.71.1".default.override { # Additionally install the "rust-src" extension to allow diving into the # Rust source code in an IDE (rust-analyzer will also make use of it). extensions = [ "rust-src" ]; }) # The rust-analyzer language server implementation. rust-analyzer # GCC includes a linker; needed for building `ruff` gcc # Needed for building `ruff` gnumake # Native dependencies for running Synapse. icu libffi libjpeg libpqxx libwebp libxml2 libxslt sqlite # Native dependencies for unit tests (SyTest also requires OpenSSL). openssl xmlsec # Native dependencies for running Complement. olm # For building the Synapse documentation website. mdbook # For releasing Synapse debian-devscripts # (`dch` for manipulating the Debian changelog) libnotify # (the release script uses `notify-send` to tell you when CI jobs are done) ]; # Install Python and manage a virtualenv with Poetry. languages.python.enable = true; languages.python.poetry.enable = true; # Automatically activate the poetry virtualenv upon entering the shell. languages.python.poetry.activate.enable = true; # Install all extra Python dependencies; this is needed to run the unit # tests and utilitise all Synapse features. languages.python.poetry.install.arguments = ["--extras all"]; # Install the 'matrix-synapse' package from the local checkout. languages.python.poetry.install.installRootPackage = true; # This is a work-around for NixOS systems. NixOS is special in # that you can have multiple versions of packages installed at # once, including your libc linker! # # Some binaries built for Linux expect those to be in a certain # filepath, but that is not the case on NixOS. In that case, we # force compiling those binaries locally instead. env.POETRY_INSTALLER_NO_BINARY = "ruff"; # Install dependencies for the additional programming languages # involved with Synapse development. # # * Golang is needed to run the Complement test suite. # * Perl is needed to run the SyTest test suite. # * Rust is used for developing and running Synapse. # It is installed manually with `packages` above. languages.go.enable = true; languages.perl.enable = true; # Postgres is needed to run Synapse with postgres support and # to run certain unit tests that require postgres. services.postgres.enable = true; # On the first invocation of `devenv up`, create a database for # Synapse to store data in. services.postgres.initdbArgs = ["--locale=C" "--encoding=UTF8"]; services.postgres.initialDatabases = [ { name = "synapse"; } ]; # Create a postgres user called 'synapse_user' which has ownership # over the 'synapse' database. services.postgres.initialScript = '' CREATE USER synapse_user; ALTER DATABASE synapse OWNER TO synapse_user; ''; # Redis is needed in order to run Synapse in worker mode. services.redis.enable = true; # Configure and start Synapse. Before starting Synapse, this shell code: # * generates a default homeserver.yaml config file if one does not exist, and # * ensures a directory containing two additional homeserver config files exists; # one to configure using the development environment's PostgreSQL as the # database backend and another for enabling Redis support. process.before = '' python -m synapse.app.homeserver -c homeserver.yaml --generate-config --server-name=synapse.dev --report-stats=no mkdir -p homeserver-config-overrides.d cat > homeserver-config-overrides.d/database.yaml << EOF ## Do not edit this file. This file is generated by flake.nix database: name: psycopg2 args: user: synapse_user database: synapse host: $PGHOST cp_min: 5 cp_max: 10 EOF cat > homeserver-config-overrides.d/redis.yaml << EOF ## Do not edit this file. This file is generated by flake.nix redis: enabled: true EOF ''; # Start synapse when `devenv up` is run. processes.synapse.exec = "poetry run python -m synapse.app.homeserver -c homeserver.yaml -c homeserver-config-overrides.d"; # Define the perl modules we require to run SyTest. # # This list was compiled by cross-referencing https://metacpan.org/ # with the modules defined in './cpanfile' and then finding the # corresponding Nix packages on https://search.nixos.org/packages. # # This was done until `./install-deps.pl --dryrun` produced no output. env.PERL5LIB = "${with pkgs.perl536Packages; makePerlPath [ DBI ClassMethodModifiers CryptEd25519 DataDump DBDPg DigestHMAC DigestSHA1 EmailAddressXS EmailMIME EmailSimple # required by Email::Mime EmailMessageID # required by Email::Mime EmailMIMEContentType # required by Email::Mime TextUnidecode # required by Email::Mime ModuleRuntime # required by Email::Mime EmailMIMEEncodings # required by Email::Mime FilePath FileSlurper Future GetoptLong HTTPMessage IOAsync IOAsyncSSL IOSocketSSL NetSSLeay JSON ListUtilsBy ScalarListUtils ModulePluggable NetAsyncHTTP MetricsAny # required by Net::Async::HTTP NetAsyncHTTPServer StructDumb URI YAMLLibYAML ]}"; # Clear the LD_LIBRARY_PATH environment variable on shell init. # # By default, devenv will set LD_LIBRARY_PATH to point to .devenv/profile/lib. This causes # issues when we include `gcc` as a dependency to build C libraries, as the version of glibc # that the development environment's cc compiler uses may differ from that of the system. # # When LD_LIBRARY_PATH is set, system tools will attempt to use the development environment's # libraries. Which, when built against a different glibc version lead, to "version 'GLIBC_X.YY' # not found" errors. enterShell = '' unset LD_LIBRARY_PATH ''; } ]; }; }); }; } synapse-1.100.0/mypy.ini000066400000000000000000000052431455622526000150450ustar00rootroot00000000000000[mypy] namespace_packages = True plugins = pydantic.mypy, mypy_zope:plugin, scripts-dev/mypy_synapse_plugin.py follow_imports = normal show_error_codes = True show_traceback = True mypy_path = stubs warn_unreachable = True local_partial_types = True no_implicit_optional = True # Strict checks, see mypy --help warn_unused_configs = True # disallow_any_generics = True disallow_subclassing_any = True # disallow_untyped_calls = True disallow_untyped_defs = True disallow_incomplete_defs = True # check_untyped_defs = True # disallow_untyped_decorators = True warn_redundant_casts = True warn_unused_ignores = True # warn_return_any = True # no_implicit_reexport = True strict_equality = True # Run mypy type checking with the minimum supported Python version to catch new usage # that isn't backwards-compatible (types, overloads, etc). python_version = 3.8 files = docker/, scripts-dev/, synapse/, synmark/, tests/, build_rust.py [mypy-synapse.metrics._reactor_metrics] # This module pokes at the internals of OS-specific classes, to appease mypy # on different systems we add additional ignores. warn_unused_ignores = False [mypy-synapse.util.caches.treecache] disallow_untyped_defs = False disallow_incomplete_defs = False [mypy-synapse.util.manhole] # This module imports something from Twisted which has a bad annotation in Twisted trunk, # but is unannotated in Twisted's latest release. We want to type-ignore the problem # in the twisted trunk job, even though it has no effect on normal mypy runs. warn_unused_ignores = False ;; Dependencies without annotations ;; Before ignoring a module, check to see if type stubs are available. ;; The `typeshed` project maintains stubs here: ;; https://github.com/python/typeshed/tree/master/stubs ;; and for each package `foo` there's a corresponding `types-foo` package on PyPI, ;; which we can pull in as a dev dependency by adding to `pyproject.toml`'s ;; `[tool.poetry.dev-dependencies]` list. # https://github.com/lepture/authlib/issues/460 [mypy-authlib.*] ignore_missing_imports = True [mypy-ijson.*] ignore_missing_imports = True # https://github.com/msgpack/msgpack-python/issues/448 [mypy-msgpack] ignore_missing_imports = True # https://github.com/wolever/parameterized/issues/143 [mypy-parameterized.*] ignore_missing_imports = True [mypy-pymacaroons.*] ignore_missing_imports = True [mypy-pympler.*] ignore_missing_imports = True [mypy-pyperf.*] ignore_missing_imports = True [mypy-rust_python_jaeger_reporter.*] ignore_missing_imports = True [mypy-saml2.*] ignore_missing_imports = True [mypy-srvlookup.*] ignore_missing_imports = True # https://github.com/twisted/treq/pull/366 [mypy-treq.*] ignore_missing_imports = True synapse-1.100.0/poetry.lock000066400000000000000000007676511455622526000155640ustar00rootroot00000000000000# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" optional = false python-versions = ">=3.6" files = [ {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, ] [[package]] name = "annotated-types" version = "0.5.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.7" files = [ {file = "annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"}, {file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, ] [package.dependencies] typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} [[package]] name = "astroid" version = "2.15.0" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.7.2" files = [ {file = "astroid-2.15.0-py3-none-any.whl", hash = "sha256:e3e4d0ffc2d15d954065579689c36aac57a339a4679a679579af6401db4d3fdb"}, {file = "astroid-2.15.0.tar.gz", hash = "sha256:525f126d5dc1b8b0b6ee398b33159105615d92dc4a17f2cd064125d57f6186fa"}, ] [package.dependencies] lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} wrapt = [ {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] [[package]] name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] dev = ["attrs[docs,tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "authlib" version = "1.3.0" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." optional = true python-versions = ">=3.8" files = [ {file = "Authlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:9637e4de1fb498310a56900b3e2043a206b03cb11c05422014b0302cbc814be3"}, {file = "Authlib-1.3.0.tar.gz", hash = "sha256:959ea62a5b7b5123c5059758296122b57cd2585ae2ed1c0622c21b371ffdae06"}, ] [package.dependencies] cryptography = "*" [[package]] name = "automat" version = "22.10.0" description = "Self-service finite-state machines for the programmer on the go." optional = false python-versions = "*" files = [ {file = "Automat-22.10.0-py2.py3-none-any.whl", hash = "sha256:c3164f8742b9dc440f3682482d32aaff7bb53f71740dd018533f9de286b64180"}, {file = "Automat-22.10.0.tar.gz", hash = "sha256:e56beb84edad19dcc11d30e8d9b895f75deeb5ef5e96b84a467066b3b84bb04e"}, ] [package.dependencies] attrs = ">=19.2.0" six = "*" [package.extras] visualize = ["Twisted (>=16.1.1)", "graphviz (>0.5.1)"] [[package]] name = "babel" version = "2.12.1" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, ] [package.dependencies] pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} [[package]] name = "bcrypt" version = "4.0.1" description = "Modern password hashing for your software and your servers" optional = false python-versions = ">=3.6" files = [ {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, ] [package.extras] tests = ["pytest (>=3.2.1,!=3.3.0)"] typecheck = ["mypy"] [[package]] name = "beautifulsoup4" version = "4.12.0" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" files = [ {file = "beautifulsoup4-4.12.0-py3-none-any.whl", hash = "sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591"}, {file = "beautifulsoup4-4.12.0.tar.gz", hash = "sha256:c5fceeaec29d09c84970e47c65f2f0efe57872f7cff494c9691a26ec0ff13234"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] html5lib = ["html5lib"] lxml = ["lxml"] [[package]] name = "black" version = "23.10.1" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ {file = "black-23.10.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:ec3f8e6234c4e46ff9e16d9ae96f4ef69fa328bb4ad08198c8cee45bb1f08c69"}, {file = "black-23.10.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:1b917a2aa020ca600483a7b340c165970b26e9029067f019e3755b56e8dd5916"}, {file = "black-23.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c74de4c77b849e6359c6f01987e94873c707098322b91490d24296f66d067dc"}, {file = "black-23.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:7b4d10b0f016616a0d93d24a448100adf1699712fb7a4efd0e2c32bbb219b173"}, {file = "black-23.10.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b15b75fc53a2fbcac8a87d3e20f69874d161beef13954747e053bca7a1ce53a0"}, {file = "black-23.10.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:e293e4c2f4a992b980032bbd62df07c1bcff82d6964d6c9496f2cd726e246ace"}, {file = "black-23.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d56124b7a61d092cb52cce34182a5280e160e6aff3137172a68c2c2c4b76bcb"}, {file = "black-23.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:3f157a8945a7b2d424da3335f7ace89c14a3b0625e6593d21139c2d8214d55ce"}, {file = "black-23.10.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:cfcce6f0a384d0da692119f2d72d79ed07c7159879d0bb1bb32d2e443382bf3a"}, {file = "black-23.10.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:33d40f5b06be80c1bbce17b173cda17994fbad096ce60eb22054da021bf933d1"}, {file = "black-23.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:840015166dbdfbc47992871325799fd2dc0dcf9395e401ada6d88fe11498abad"}, {file = "black-23.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:037e9b4664cafda5f025a1728c50a9e9aedb99a759c89f760bd83730e76ba884"}, {file = "black-23.10.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:7cb5936e686e782fddb1c73f8aa6f459e1ad38a6a7b0e54b403f1f05a1507ee9"}, {file = "black-23.10.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:7670242e90dc129c539e9ca17665e39a146a761e681805c54fbd86015c7c84f7"}, {file = "black-23.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ed45ac9a613fb52dad3b61c8dea2ec9510bf3108d4db88422bacc7d1ba1243d"}, {file = "black-23.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:6d23d7822140e3fef190734216cefb262521789367fbdc0b3f22af6744058982"}, {file = "black-23.10.1-py3-none-any.whl", hash = "sha256:d431e6739f727bb2e0495df64a6c7a5310758e87505f5f8cde9ff6c0f2d7e4fe"}, {file = "black-23.10.1.tar.gz", hash = "sha256:1f8ce316753428ff68749c65a5f7844631aa18c8679dfd3ca9dc1a289979c258"}, ] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bleach" version = "6.1.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false python-versions = ">=3.8" files = [ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, ] [package.dependencies] six = ">=1.9.0" webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "canonicaljson" version = "2.0.0" description = "Canonical JSON" optional = false python-versions = ">=3.7" files = [ {file = "canonicaljson-2.0.0-py3-none-any.whl", hash = "sha256:c38a315de3b5a0532f1ec1f9153cd3d716abfc565a558d00a4835428a34fca5b"}, {file = "canonicaljson-2.0.0.tar.gz", hash = "sha256:e2fdaef1d7fadc5d9cb59bd3d0d41b064ddda697809ac4325dced721d12f113f"}, ] [[package]] name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = "*" files = [ {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, ] [package.dependencies] pycparser = "*" [[package]] name = "charset-normalizer" version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, ] [[package]] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] name = "commonmark" version = "0.9.1" description = "Python parser for the CommonMark Markdown spec" optional = false python-versions = "*" files = [ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, ] [package.extras] test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "constantly" version = "15.1.0" description = "Symbolic constants in Python" optional = false python-versions = "*" files = [ {file = "constantly-15.1.0-py2.py3-none-any.whl", hash = "sha256:dd2fa9d6b1a51a83f0d7dd76293d734046aa176e384bf6e33b7e44880eb37c5d"}, {file = "constantly-15.1.0.tar.gz", hash = "sha256:586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"}, ] [[package]] name = "cryptography" version = "41.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, ] [package.dependencies] cffi = ">=1.12" [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] nox = ["nox"] pep8test = ["black", "check-sdist", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] [[package]] name = "deprecated" version = "1.2.13" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bump2version (<1)", "configparser (<5)", "importlib-metadata (<3)", "importlib-resources (<4)", "sphinx (<2)", "sphinxcontrib-websupport (<2)", "tox", "zipp (<2)"] [[package]] name = "docutils" version = "0.19" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.7" files = [ {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, ] [[package]] name = "elementpath" version = "4.1.5" description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" optional = true python-versions = ">=3.7" files = [ {file = "elementpath-4.1.5-py3-none-any.whl", hash = "sha256:2ac1a2fb31eb22bbbf817f8cf6752f844513216263f0e3892c8e79782fe4bb55"}, {file = "elementpath-4.1.5.tar.gz", hash = "sha256:c2d6dc524b29ef751ecfc416b0627668119d8812441c555d7471da41d4bacb8d"}, ] [package.extras] dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] [[package]] name = "furo" version = "2023.9.10" description = "A clean customisable Sphinx documentation theme." optional = false python-versions = ">=3.8" files = [ {file = "furo-2023.9.10-py3-none-any.whl", hash = "sha256:513092538537dc5c596691da06e3c370714ec99bc438680edc1debffb73e5bfc"}, {file = "furo-2023.9.10.tar.gz", hash = "sha256:5707530a476d2a63b8cad83b4f961f3739a69f4b058bcf38a03a39fa537195b2"}, ] [package.dependencies] beautifulsoup4 = "*" pygments = ">=2.7" sphinx = ">=6.0,<8.0" sphinx-basic-ng = "*" [[package]] name = "gitdb" version = "4.0.10" description = "Git Object Database" optional = false python-versions = ">=3.7" files = [ {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, ] [package.dependencies] smmap = ">=3.0.1,<6" [[package]] name = "gitpython" version = "3.1.40" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" [package.extras] test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] [[package]] name = "hiredis" version = "2.2.3" description = "Python wrapper for hiredis" optional = true python-versions = ">=3.7" files = [ {file = "hiredis-2.2.3-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:9a1a80a8fa767f2fdc3870316a54b84fe9fc09fa6ab6a2686783de6a228a4604"}, {file = "hiredis-2.2.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3f006c28c885deb99b670a5a66f367a175ab8955b0374029bad7111f5357dcd4"}, {file = "hiredis-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffaf841546905d90ff189de7397aa56413b1ce5e54547f17a98f0ebf3a3b0a3b"}, {file = "hiredis-2.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cadb0ac7ba3babfd804e425946bec9717b320564a1390f163a54af9365a720a"}, {file = "hiredis-2.2.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33bc4721632ef9708fa44e5df0066053fccc8e65410a2c48573192517a533b48"}, {file = "hiredis-2.2.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:227c5b4bcb60f89008c275d596e4a7b6625a6b3c827b8a66ae582eace7051f71"}, {file = "hiredis-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61995eb826009d99ed8590747bc0da683a5f4fbb4faa8788166bf3810845cd5c"}, {file = "hiredis-2.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f969edc851efe23010e0f53a64269f2629a9364135e9ec81c842e8b2277d0c1"}, {file = "hiredis-2.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27e560eefb57914d742a837f1da98d3b29cb22eff013c8023b7cf52ae6e051d"}, {file = "hiredis-2.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3759f4789ae1913b7df278dfc9e8749205b7a106f888cd2903d19461e24a7697"}, {file = "hiredis-2.2.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c6cb613148422c523945cdb8b6bed617856f2602fd8750e33773ede2616e55d5"}, {file = "hiredis-2.2.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:1d274d5c511dfc03f83f997d3238eaa9b6ee3f982640979f509373cced891e98"}, {file = "hiredis-2.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3b7fe075e91b9d9cff40eba4fb6a8eff74964d3979a39be9a9ef58b1b4cb3604"}, {file = "hiredis-2.2.3-cp310-cp310-win32.whl", hash = "sha256:77924b0d32fd1f493d3df15d9609ddf9d94c31a364022a6bf6b525ce9da75bea"}, {file = "hiredis-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:dcb0569dd5bfe6004658cd0f229efa699a3169dcb4f77bd72e188adda302063d"}, {file = "hiredis-2.2.3-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:d115790f18daa99b5c11a506e48923b630ef712e9e4b40482af942c3d40638b8"}, {file = "hiredis-2.2.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c3b8be557e08b234774925622e196f0ee36fe4eab66cd19df934d3efd8f3743"}, {file = "hiredis-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3f5446068197b35a11ccc697720c41879c8657e2e761aaa8311783aac84cef20"}, {file = "hiredis-2.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa17a3b22b3726d54d7af20394f65d4a1735a842a4e0f557dc67a90f6965c4bc"}, {file = "hiredis-2.2.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7df645b6b7800e8b748c217fbd6a4ca8361bcb9a1ae6206cc02377833ec8a1aa"}, {file = "hiredis-2.2.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2fb9300959a0048138791f3d68359d61a788574ec9556bddf1fec07f2dbc5320"}, {file = "hiredis-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d7e459fe7313925f395148d36d9b7f4f8dac65be06e45d7af356b187cef65fc"}, {file = "hiredis-2.2.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8eceffca3941775b646cd585cd19b275d382de43cc3327d22f7c75d7b003d481"}, {file = "hiredis-2.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b17baf702c6e5b4bb66e1281a3efbb1d749c9d06cdb92b665ad81e03118f78fc"}, {file = "hiredis-2.2.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e43e2b5acaad09cf48c032f7e4926392bb3a3f01854416cf6d82ebff94d5467"}, {file = "hiredis-2.2.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:a7205497d7276a81fe92951a29616ef96562ed2f91a02066f72b6f93cb34b40e"}, {file = "hiredis-2.2.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:126623b03c31cb6ac3e0d138feb6fcc36dd43dd34fc7da7b7a0c38b5d75bc896"}, {file = "hiredis-2.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:071c5814b850574036506a8118034f97c3cbf2fe9947ff45a27b07a48da56240"}, {file = "hiredis-2.2.3-cp311-cp311-win32.whl", hash = "sha256:d1be9e30e675f5bc1cb534633324578f6f0944a1bcffe53242cf632f554f83b6"}, {file = "hiredis-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9a7c987e161e3c58f992c63b7e26fea7fe0777f3b975799d23d65bbb8cb5899"}, {file = "hiredis-2.2.3-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:f2dcb8389fa3d453927b1299f46bdb38473c293c8269d5c777d33ea0e526b610"}, {file = "hiredis-2.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2df98f5e071320c7d84e8bd07c0542acdd0a7519307fc31774d60e4b842ec4f"}, {file = "hiredis-2.2.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61a72e4a523cdfc521762137559c08dfa360a3caef63620be58c699d1717dac1"}, {file = "hiredis-2.2.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9b9e5bde7030cae83aa900b5bd660decc65afd2db8c400f3c568c815a47ca2a"}, {file = "hiredis-2.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd2614f17e261f72efc2f19f5e5ff2ee19e2296570c0dcf33409e22be30710de"}, {file = "hiredis-2.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46525fbd84523cac75af5bf524bc74aaac848beaf31b142d2df8a787d9b4bbc4"}, {file = "hiredis-2.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d1a4ce40ba11da9382c14da31f4f9e88c18f7d294f523decd0fadfb81f51ad18"}, {file = "hiredis-2.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cda592405bbd29d53942e0389dc3fa77b49c362640210d7e94a10c14a677d4d"}, {file = "hiredis-2.2.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:5e6674a017629284ef373b50496d9fb1a89b85a20a7fa100ecd109484ec748e5"}, {file = "hiredis-2.2.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:e62ec131816c6120eff40dffe43424e140264a15fa4ab88c301bd6a595913af3"}, {file = "hiredis-2.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:17e938d9d3ee92e1adbff361706f1c36cc60eeb3e3eeca7a3a353eae344f4c91"}, {file = "hiredis-2.2.3-cp37-cp37m-win32.whl", hash = "sha256:95d2305fd2a7b179cacb48b10f618872fc565c175f9f62b854e8d1acac3e8a9e"}, {file = "hiredis-2.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8f9dbe12f011a9b784f58faecc171d22465bb532c310bd588d769ba79a59ef5a"}, {file = "hiredis-2.2.3-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:5a4bcef114fc071d5f52c386c47f35aae0a5b43673197b9288a15b584da8fa3a"}, {file = "hiredis-2.2.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:232d0a70519865741ba56e1dfefd160a580ae78c30a1517bad47b3cf95a3bc7d"}, {file = "hiredis-2.2.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9076ce8429785c85f824650735791738de7143f61f43ae9ed83e163c0ca0fa44"}, {file = "hiredis-2.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec58fb7c2062f835595c12f0f02dcda76d0eb0831423cc191d1e18c9276648de"}, {file = "hiredis-2.2.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f2b34a6444b8f9c1e9f84bd2c639388e5d14f128afd14a869dfb3d9af893aa2"}, {file = "hiredis-2.2.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:818dfd310aa1020a13cd08ee48e116dd8c3bb2e23b8161f8ac4df587dd5093d7"}, {file = "hiredis-2.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d9ea6c8d4cbdeee2e0d43379ce2881e4af0454b00570677c59f33f2531cd38"}, {file = "hiredis-2.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1eadbcd3de55ac42310ff82550d3302cb4efcd4e17d76646a17b6e7004bb42b"}, {file = "hiredis-2.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:477c34c4489666dc73cb5e89dafe2617c3e13da1298917f73d55aac4696bd793"}, {file = "hiredis-2.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:14824e457e4f5cda685c3345d125da13949bcf3bb1c88eb5d248c8d2c3dee08f"}, {file = "hiredis-2.2.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9cd32326dfa6ce87edf754153b0105aca64486bebe93b9600ccff74fa0b224df"}, {file = "hiredis-2.2.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:51341e70b467004dcbec3a6ce8c478d2d6241e0f6b01e4c56764afd5022e1e9d"}, {file = "hiredis-2.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2443659c76b226267e2a04dbbb21bc2a3f91aa53bdc0c22964632753ae43a247"}, {file = "hiredis-2.2.3-cp38-cp38-win32.whl", hash = "sha256:4e3e3e31423f888d396b1fc1f936936e52af868ac1ec17dd15e3eeba9dd4de24"}, {file = "hiredis-2.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:20f509e3a1a20d6e5f5794fc37ceb21f70f409101fcfe7a8bde783894d51b369"}, {file = "hiredis-2.2.3-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:d20891e3f33803b26d54c77fd5745878497091e33f4bbbdd454cf6e71aee8890"}, {file = "hiredis-2.2.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:50171f985e17970f87d5a29e16603d1e5b03bdbf5c2691a37e6c912942a6b657"}, {file = "hiredis-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9944a2cac25ffe049a7e89f306e11b900640837d1ef38d9be0eaa4a4e2b73a52"}, {file = "hiredis-2.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a5c8019ff94988d56eb49b15de76fe83f6b42536d76edeb6565dbf7fe14b973"}, {file = "hiredis-2.2.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a286ded34eb16501002e3713b3130c987366eee2ba0d58c33c72f27778e31676"}, {file = "hiredis-2.2.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b3e974ad15eb32b1f537730dea70b93a4c3db7b026de3ad2b59da49c6f7454d"}, {file = "hiredis-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08415ea74c1c29b9d6a4ca3dd0e810dc1af343c1d1d442e15ba133b11ab5be6a"}, {file = "hiredis-2.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e17d04ea58ab8cf3f2dc52e875db16077c6357846006780086fff3189fb199d"}, {file = "hiredis-2.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6ccdcb635dae85b006592f78e32d97f4bc7541cb27829d505f9c7fefcef48298"}, {file = "hiredis-2.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69536b821dd1bc78058a6e7541743f8d82bf2d981b91280b14c4daa6cdc7faba"}, {file = "hiredis-2.2.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:3753df5f873d473f055e1f8837bfad0bd3b277c86f3c9bf058c58f14204cd901"}, {file = "hiredis-2.2.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6f88cafe46612b6fa68e6dea49e25bebf160598bba00101caa51cc8c1f18d597"}, {file = "hiredis-2.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33ee3ea5cad3a8cb339352cd230b411eb437a2e75d7736c4899acab32056ccdb"}, {file = "hiredis-2.2.3-cp39-cp39-win32.whl", hash = "sha256:b4f3d06dc16671b88a13ae85d8ca92534c0b637d59e49f0558d040a691246422"}, {file = "hiredis-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4f674e309cd055ee7a48304ceb8cf43265d859faf4d7d01d270ce45e976ae9d3"}, {file = "hiredis-2.2.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8f280ab4e043b089777b43b4227bdc2035f88da5072ab36588e0ccf77d45d058"}, {file = "hiredis-2.2.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15c2a551f3b8a26f7940d6ee10b837810201754b8d7e6f6b1391655370882c5a"}, {file = "hiredis-2.2.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c4e3c258eafaab21b174b17270a0cc093718d61cdbde8c03f85ec4bf835343"}, {file = "hiredis-2.2.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc36a9dded458d4e37492fe3e619c6c83caae794d26ad925adbce61d592f8428"}, {file = "hiredis-2.2.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:4ed68a3b1ccb4313d2a42546fd7e7439ad4745918a48b6c9bcaa61e1e3e42634"}, {file = "hiredis-2.2.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3bf4b5bae472630c229518e4a814b1b68f10a3d9b00aeaec45f1a330f03a0251"}, {file = "hiredis-2.2.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33a94d264e6e12a79d9bb8af333b01dc286b9f39c99072ab5fef94ce1f018e17"}, {file = "hiredis-2.2.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fa6811a618653164f918b891a0fa07052bd71a799defa5c44d167cac5557b26"}, {file = "hiredis-2.2.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af33f370be90b48bbaf0dab32decbdcc522b1fa95d109020a963282086518a8e"}, {file = "hiredis-2.2.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b9953d87418ac228f508d93898ab572775e4d3b0eeb886a1a7734553bcdaf291"}, {file = "hiredis-2.2.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5e7bb4dd524f50b71c20ef5a12bd61da9b463f8894b18a06130942fe31509881"}, {file = "hiredis-2.2.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89a258424158eb8b3ed9f65548d68998da334ef155d09488c5637723eb1cd697"}, {file = "hiredis-2.2.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f4a65276f6ecdebe75f2a53f578fbc40e8d2860658420d5e0611c56bbf5054c"}, {file = "hiredis-2.2.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:334f2738700b20faa04a0d813366fb16ed17287430a6b50584161d5ad31ca6d7"}, {file = "hiredis-2.2.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d194decd9608f11c777946f596f31d5aacad13972a0a87829ae1e6f2d26c1885"}, {file = "hiredis-2.2.3.tar.gz", hash = "sha256:e75163773a309e56a9b58165cf5a50e0f84b755f6ff863b2c01a38918fe92daa"}, ] [[package]] name = "hyperlink" version = "21.0.0" description = "A featureful, immutable, and correct URL for Python." optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "hyperlink-21.0.0-py2.py3-none-any.whl", hash = "sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4"}, {file = "hyperlink-21.0.0.tar.gz", hash = "sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b"}, ] [package.dependencies] idna = ">=2.5" [[package]] name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] name = "ijson" version = "3.2.3" description = "Iterative JSON parser with standard Python iterator interfaces" optional = false python-versions = "*" files = [ {file = "ijson-3.2.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0a4ae076bf97b0430e4e16c9cb635a6b773904aec45ed8dcbc9b17211b8569ba"}, {file = "ijson-3.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cfced0a6ec85916eb8c8e22415b7267ae118eaff2a860c42d2cc1261711d0d31"}, {file = "ijson-3.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0b9d1141cfd1e6d6643aa0b4876730d0d28371815ce846d2e4e84a2d4f471cf3"}, {file = "ijson-3.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e0a27db6454edd6013d40a956d008361aac5bff375a9c04ab11fc8c214250b5"}, {file = "ijson-3.2.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c0d526ccb335c3c13063c273637d8611f32970603dfb182177b232d01f14c23"}, {file = "ijson-3.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:545a30b3659df2a3481593d30d60491d1594bc8005f99600e1bba647bb44cbb5"}, {file = "ijson-3.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9680e37a10fedb3eab24a4a7e749d8a73f26f1a4c901430e7aa81b5da15f7307"}, {file = "ijson-3.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2a80c0bb1053055d1599e44dc1396f713e8b3407000e6390add72d49633ff3bb"}, {file = "ijson-3.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f05ed49f434ce396ddcf99e9fd98245328e99f991283850c309f5e3182211a79"}, {file = "ijson-3.2.3-cp310-cp310-win32.whl", hash = "sha256:b4eb2304573c9fdf448d3fa4a4fdcb727b93002b5c5c56c14a5ffbbc39f64ae4"}, {file = "ijson-3.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:923131f5153c70936e8bd2dd9dcfcff43c67a3d1c789e9c96724747423c173eb"}, {file = "ijson-3.2.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:904f77dd3d87736ff668884fe5197a184748eb0c3e302ded61706501d0327465"}, {file = "ijson-3.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0974444c1f416e19de1e9f567a4560890095e71e81623c509feff642114c1e53"}, {file = "ijson-3.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c1a4b8eb69b6d7b4e94170aa991efad75ba156b05f0de2a6cd84f991def12ff9"}, {file = "ijson-3.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d052417fd7ce2221114f8d3b58f05a83c1a2b6b99cafe0b86ac9ed5e2fc889df"}, {file = "ijson-3.2.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b8064a85ec1b0beda7dd028e887f7112670d574db606f68006c72dd0bb0e0e2"}, {file = "ijson-3.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaac293853f1342a8d2a45ac1f723c860f700860e7743fb97f7b76356df883a8"}, {file = "ijson-3.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6c32c18a934c1dc8917455b0ce478fd7a26c50c364bd52c5a4fb0fc6bb516af7"}, {file = "ijson-3.2.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:713a919e0220ac44dab12b5fed74f9130f3480e55e90f9d80f58de129ea24f83"}, {file = "ijson-3.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4a3a6a2fbbe7550ffe52d151cf76065e6b89cfb3e9d0463e49a7e322a25d0426"}, {file = "ijson-3.2.3-cp311-cp311-win32.whl", hash = "sha256:6a4db2f7fb9acfb855c9ae1aae602e4648dd1f88804a0d5cfb78c3639bcf156c"}, {file = "ijson-3.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:ccd6be56335cbb845f3d3021b1766299c056c70c4c9165fb2fbe2d62258bae3f"}, {file = "ijson-3.2.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:055b71bbc37af5c3c5861afe789e15211d2d3d06ac51ee5a647adf4def19c0ea"}, {file = "ijson-3.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c075a547de32f265a5dd139ab2035900fef6653951628862e5cdce0d101af557"}, {file = "ijson-3.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:457f8a5fc559478ac6b06b6d37ebacb4811f8c5156e997f0d87d708b0d8ab2ae"}, {file = "ijson-3.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9788f0c915351f41f0e69ec2618b81ebfcf9f13d9d67c6d404c7f5afda3e4afb"}, {file = "ijson-3.2.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa234ab7a6a33ed51494d9d2197fb96296f9217ecae57f5551a55589091e7853"}, {file = "ijson-3.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd0dc5da4f9dc6d12ab6e8e0c57d8b41d3c8f9ceed31a99dae7b2baf9ea769a"}, {file = "ijson-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c6beb80df19713e39e68dc5c337b5c76d36ccf69c30b79034634e5e4c14d6904"}, {file = "ijson-3.2.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a2973ce57afb142d96f35a14e9cfec08308ef178a2c76b8b5e1e98f3960438bf"}, {file = "ijson-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:105c314fd624e81ed20f925271ec506523b8dd236589ab6c0208b8707d652a0e"}, {file = "ijson-3.2.3-cp312-cp312-win32.whl", hash = "sha256:ac44781de5e901ce8339352bb5594fcb3b94ced315a34dbe840b4cff3450e23b"}, {file = "ijson-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:0567e8c833825b119e74e10a7c29761dc65fcd155f5d4cb10f9d3b8916ef9912"}, {file = "ijson-3.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:eeb286639649fb6bed37997a5e30eefcacddac79476d24128348ec890b2a0ccb"}, {file = "ijson-3.2.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:396338a655fb9af4ac59dd09c189885b51fa0eefc84d35408662031023c110d1"}, {file = "ijson-3.2.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e0243d166d11a2a47c17c7e885debf3b19ed136be2af1f5d1c34212850236ac"}, {file = "ijson-3.2.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85afdb3f3a5d0011584d4fa8e6dccc5936be51c27e84cd2882fe904ca3bd04c5"}, {file = "ijson-3.2.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4fc35d569eff3afa76bfecf533f818ecb9390105be257f3f83c03204661ace70"}, {file = "ijson-3.2.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:455d7d3b7a6aacfb8ab1ebcaf697eedf5be66e044eac32508fccdc633d995f0e"}, {file = "ijson-3.2.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:c63f3d57dbbac56cead05b12b81e8e1e259f14ce7f233a8cbe7fa0996733b628"}, {file = "ijson-3.2.3-cp36-cp36m-win32.whl", hash = "sha256:a4d7fe3629de3ecb088bff6dfe25f77be3e8261ed53d5e244717e266f8544305"}, {file = "ijson-3.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:96190d59f015b5a2af388a98446e411f58ecc6a93934e036daa75f75d02386a0"}, {file = "ijson-3.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:35194e0b8a2bda12b4096e2e792efa5d4801a0abb950c48ade351d479cd22ba5"}, {file = "ijson-3.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1053fb5f0b010ee76ca515e6af36b50d26c1728ad46be12f1f147a835341083"}, {file = "ijson-3.2.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:211124cff9d9d139dd0dfced356f1472860352c055d2481459038b8205d7d742"}, {file = "ijson-3.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92dc4d48e9f6a271292d6079e9fcdce33c83d1acf11e6e12696fb05c5889fe74"}, {file = "ijson-3.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3dcc33ee56f92a77f48776014ddb47af67c33dda361e84371153c4f1ed4434e1"}, {file = "ijson-3.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:98c6799925a5d1988da4cd68879b8eeab52c6e029acc45e03abb7921a4715c4b"}, {file = "ijson-3.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4252e48c95cd8ceefc2caade310559ab61c37d82dfa045928ed05328eb5b5f65"}, {file = "ijson-3.2.3-cp37-cp37m-win32.whl", hash = "sha256:644f4f03349ff2731fd515afd1c91b9e439e90c9f8c28292251834154edbffca"}, {file = "ijson-3.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:ba33c764afa9ecef62801ba7ac0319268a7526f50f7601370d9f8f04e77fc02b"}, {file = "ijson-3.2.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4b2ec8c2a3f1742cbd5f36b65e192028e541b5fd8c7fd97c1fc0ca6c427c704a"}, {file = "ijson-3.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7dc357da4b4ebd8903e77dbcc3ce0555ee29ebe0747c3c7f56adda423df8ec89"}, {file = "ijson-3.2.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bcc51c84bb220ac330122468fe526a7777faa6464e3b04c15b476761beea424f"}, {file = "ijson-3.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8d54b624629f9903005c58d9321a036c72f5c212701bbb93d1a520ecd15e370"}, {file = "ijson-3.2.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6ea7c7e3ec44742e867c72fd750c6a1e35b112f88a917615332c4476e718d40"}, {file = "ijson-3.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:916acdc5e504f8b66c3e287ada5d4b39a3275fc1f2013c4b05d1ab9933671a6c"}, {file = "ijson-3.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81815b4184b85ce124bfc4c446d5f5e5e643fc119771c5916f035220ada29974"}, {file = "ijson-3.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b49fd5fe1cd9c1c8caf6c59f82b08117dd6bea2ec45b641594e25948f48f4169"}, {file = "ijson-3.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:86b3c91fdcb8ffb30556c9669930f02b7642de58ca2987845b04f0d7fe46d9a8"}, {file = "ijson-3.2.3-cp38-cp38-win32.whl", hash = "sha256:a729b0c8fb935481afe3cf7e0dadd0da3a69cc7f145dbab8502e2f1e01d85a7c"}, {file = "ijson-3.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:d34e049992d8a46922f96483e96b32ac4c9cffd01a5c33a928e70a283710cd58"}, {file = "ijson-3.2.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9c2a12dcdb6fa28f333bf10b3a0f80ec70bc45280d8435be7e19696fab2bc706"}, {file = "ijson-3.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1844c5b57da21466f255a0aeddf89049e730d7f3dfc4d750f0e65c36e6a61a7c"}, {file = "ijson-3.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2ec3e5ff2515f1c40ef6a94983158e172f004cd643b9e4b5302017139b6c96e4"}, {file = "ijson-3.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46bafb1b9959872a1f946f8dd9c6f1a30a970fc05b7bfae8579da3f1f988e598"}, {file = "ijson-3.2.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab4db9fee0138b60e31b3c02fff8a4c28d7b152040553b6a91b60354aebd4b02"}, {file = "ijson-3.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4bc87e69d1997c6a55fff5ee2af878720801ff6ab1fb3b7f94adda050651e37"}, {file = "ijson-3.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e9fd906f0c38e9f0bfd5365e1bed98d649f506721f76bb1a9baa5d7374f26f19"}, {file = "ijson-3.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e84d27d1acb60d9102728d06b9650e5b7e5cb0631bd6e3dfadba8fb6a80d6c2f"}, {file = "ijson-3.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2cc04fc0a22bb945cd179f614845c8b5106c0b3939ee0d84ce67c7a61ac1a936"}, {file = "ijson-3.2.3-cp39-cp39-win32.whl", hash = "sha256:e641814793a037175f7ec1b717ebb68f26d89d82cfd66f36e588f32d7e488d5f"}, {file = "ijson-3.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:6bd3e7e91d031f1e8cea7ce53f704ab74e61e505e8072467e092172422728b22"}, {file = "ijson-3.2.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:06f9707da06a19b01013f8c65bf67db523662a9b4a4ff027e946e66c261f17f0"}, {file = "ijson-3.2.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be8495f7c13fa1f622a2c6b64e79ac63965b89caf664cc4e701c335c652d15f2"}, {file = "ijson-3.2.3-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7596b42f38c3dcf9d434dddd50f46aeb28e96f891444c2b4b1266304a19a2c09"}, {file = "ijson-3.2.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbac4e9609a1086bbad075beb2ceec486a3b138604e12d2059a33ce2cba93051"}, {file = "ijson-3.2.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:db2d6341f9cb538253e7fe23311d59252f124f47165221d3c06a7ed667ecd595"}, {file = "ijson-3.2.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fa8b98be298efbb2588f883f9953113d8a0023ab39abe77fe734b71b46b1220a"}, {file = "ijson-3.2.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:674e585361c702fad050ab4c153fd168dc30f5980ef42b64400bc84d194e662d"}, {file = "ijson-3.2.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd12e42b9cb9c0166559a3ffa276b4f9fc9d5b4c304e5a13668642d34b48b634"}, {file = "ijson-3.2.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d31e0d771d82def80cd4663a66de277c3b44ba82cd48f630526b52f74663c639"}, {file = "ijson-3.2.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ce4c70c23521179d6da842bb9bc2e36bb9fad1e0187e35423ff0f282890c9ca"}, {file = "ijson-3.2.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39f551a6fbeed4433c85269c7c8778e2aaea2501d7ebcb65b38f556030642c17"}, {file = "ijson-3.2.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b14d322fec0de7af16f3ef920bf282f0dd747200b69e0b9628117f381b7775b"}, {file = "ijson-3.2.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7851a341429b12d4527ca507097c959659baf5106c7074d15c17c387719ffbcd"}, {file = "ijson-3.2.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db3bf1b42191b5cc9b6441552fdcb3b583594cb6b19e90d1578b7cbcf80d0fae"}, {file = "ijson-3.2.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6f662dc44362a53af3084d3765bb01cd7b4734d1f484a6095cad4cb0cbfe5374"}, {file = "ijson-3.2.3.tar.gz", hash = "sha256:10294e9bf89cb713da05bc4790bdff616610432db561964827074898e174f917"}, ] [[package]] name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] [[package]] name = "immutabledict" version = "4.1.0" description = "Immutable wrapper around dictionaries (a fork of frozendict)" optional = false python-versions = ">=3.8,<4.0" files = [ {file = "immutabledict-4.1.0-py3-none-any.whl", hash = "sha256:c176e99aa90aedb81716ad35218bb2055d049b549626db4523dbe011cf2f32ac"}, {file = "immutabledict-4.1.0.tar.gz", hash = "sha256:93d100ccd2cd09a1fd3f136b9328c6e59529ba341de8bb499437f6819159fe8a"}, ] [[package]] name = "importlib-metadata" version = "6.7.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.7" files = [ {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" optional = false python-versions = ">=3.7" files = [ {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "incremental" version = "22.10.0" description = "\"A small library that versions your Python projects.\"" optional = false python-versions = "*" files = [ {file = "incremental-22.10.0-py2.py3-none-any.whl", hash = "sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51"}, {file = "incremental-22.10.0.tar.gz", hash = "sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0"}, ] [package.extras] mypy = ["click (>=6.0)", "mypy (==0.812)", "twisted (>=16.4.0)"] scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] [[package]] name = "isort" version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" files = [ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, ] [package.extras] colors = ["colorama (>=0.4.6)"] [[package]] name = "jaeger-client" version = "4.8.0" description = "Jaeger Python OpenTracing Tracer implementation" optional = true python-versions = ">=3.7" files = [ {file = "jaeger-client-4.8.0.tar.gz", hash = "sha256:3157836edab8e2c209bd2d6ae61113db36f7ee399e66b1dcbb715d87ab49bfe0"}, ] [package.dependencies] opentracing = ">=2.1,<3.0" threadloop = ">=1,<2" thrift = "*" tornado = ">=4.3" [package.extras] tests = ["codecov", "coverage", "flake8", "flake8-quotes", "flake8-typing-imports", "mock", "mypy", "opentracing_instrumentation (>=3,<4)", "prometheus_client (==0.11.0)", "pycurl", "pytest", "pytest-benchmark[histogram]", "pytest-cov", "pytest-localserver", "pytest-timeout", "pytest-tornado", "tchannel (==2.1.0)"] [[package]] name = "jaraco-classes" version = "3.2.3" description = "Utility functions for Python class constructs" optional = false python-versions = ">=3.7" files = [ {file = "jaraco.classes-3.2.3-py3-none-any.whl", hash = "sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158"}, {file = "jaraco.classes-3.2.3.tar.gz", hash = "sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a"}, ] [package.dependencies] more-itertools = "*" [package.extras] docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "jeepney" version = "0.8.0" description = "Low-level, pure Python DBus protocol wrapper." optional = false python-versions = ">=3.7" files = [ {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, ] [package.extras] test = ["async-timeout", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] trio = ["async_generator", "trio"] [[package]] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] [package.dependencies] MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" version = "4.20.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"}, {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"}, ] [package.dependencies] attrs = ">=22.2.0" importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} jsonschema-specifications = ">=2023.03.6" pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rpds-py = ">=0.7.1" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] name = "jsonschema-specifications" version = "2023.6.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ {file = "jsonschema_specifications-2023.6.1-py3-none-any.whl", hash = "sha256:3d2b82663aff01815f744bb5c7887e2121a63399b49b104a3c96145474d091d7"}, {file = "jsonschema_specifications-2023.6.1.tar.gz", hash = "sha256:ca1c4dd059a9e7b34101cf5b3ab7ff1d18b139f35950d598d629837ef66e8f28"}, ] [package.dependencies] importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} referencing = ">=0.28.0" [[package]] name = "keyring" version = "23.13.1" description = "Store and access your passwords safely." optional = false python-versions = ">=3.7" files = [ {file = "keyring-23.13.1-py3-none-any.whl", hash = "sha256:771ed2a91909389ed6148631de678f82ddc73737d85a927f382a8a1b157898cd"}, {file = "keyring-23.13.1.tar.gz", hash = "sha256:ba2e15a9b35e21908d0aaf4e0a47acc52d6ae33444df0da2b49d41a46ef6d678"}, ] [package.dependencies] importlib-metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} importlib-resources = {version = "*", markers = "python_version < \"3.9\""} "jaraco.classes" = "*" jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} [package.extras] completion = ["shtab"] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "lazy-object-proxy" version = "1.9.0" description = "A fast and thorough lazy object proxy." optional = false python-versions = ">=3.7" files = [ {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, ] [[package]] name = "ldap3" version = "2.9.1" description = "A strictly RFC 4510 conforming LDAP V3 pure Python client library" optional = true python-versions = "*" files = [ {file = "ldap3-2.9.1-py2.py3-none-any.whl", hash = "sha256:5869596fc4948797020d3f03b7939da938778a0f9e2009f7a072ccf92b8e8d70"}, {file = "ldap3-2.9.1.tar.gz", hash = "sha256:f3e7fc4718e3f09dda568b57100095e0ce58633bcabbed8667ce3f8fbaa4229f"}, ] [package.dependencies] pyasn1 = ">=0.4.6" [[package]] name = "lxml" version = "5.1.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = true python-versions = ">=3.6" files = [ {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"}, {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"}, {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"}, {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"}, {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"}, {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"}, {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"}, {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"}, {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"}, {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"}, {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"}, {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"}, {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"}, {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"}, {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"}, {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"}, {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"}, {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"}, {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"}, {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"}, {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"}, {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"}, {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"}, {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"}, {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"}, {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"}, {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"}, {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"}, {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"}, {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"}, {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"}, {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"}, {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"}, {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"}, {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"}, {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"}, {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"}, {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"}, {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"}, {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"}, {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"}, {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"}, {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"}, {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"}, {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"}, {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"}, {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"}, {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"}, {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"}, {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"}, {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"}, {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"}, {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"}, {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"}, {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"}, {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"}, {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"}, {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"}, {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"}, {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"}, {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"}, {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"}, {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"}, {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"}, {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"}, {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"}, {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"}, {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"}, {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"}, {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"}, {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"}, {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"}, {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"}, {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"}, {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"}, {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"}, {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"}, {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] source = ["Cython (>=3.0.7)"] [[package]] name = "lxml-stubs" version = "0.4.0" description = "Type annotations for the lxml package" optional = false python-versions = "*" files = [ {file = "lxml-stubs-0.4.0.tar.gz", hash = "sha256:184877b42127256abc2b932ba8bd0ab5ea80bd0b0fee618d16daa40e0b71abee"}, {file = "lxml_stubs-0.4.0-py3-none-any.whl", hash = "sha256:3b381e9e82397c64ea3cc4d6f79d1255d015f7b114806d4826218805c10ec003"}, ] [package.extras] test = ["coverage[toml] (==5.2)", "pytest (>=6.0.0)", "pytest-mypy-plugins (==1.9.3)"] [[package]] name = "markdown-it-py" version = "2.2.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.7" files = [ {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, ] [package.dependencies] mdurl = ">=0.1,<1.0" [package.extras] benchmarking = ["psutil", "pytest", "pytest-benchmark"] code-style = ["pre-commit (>=3.0,<4.0)"] compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] linkify = ["linkify-it-py (>=1,<3)"] plugins = ["mdit-py-plugins"] profiling = ["gprof2dot"] rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, ] [[package]] name = "matrix-common" version = "1.3.0" description = "Common utilities for Synapse, Sydent and Sygnal" optional = false python-versions = ">=3.7" files = [ {file = "matrix_common-1.3.0-py3-none-any.whl", hash = "sha256:524e2785b9b03be4d15f3a8a6b857c5b6af68791ffb1b9918f0ad299abc4db20"}, {file = "matrix_common-1.3.0.tar.gz", hash = "sha256:62e121cccd9f243417b57ec37a76dc44aeb198a7a5c67afd6b8275992ff2abd1"}, ] [package.dependencies] attrs = "*" [package.extras] dev = ["aiounittest", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "isort (==5.9.3)", "mypy (==0.910)", "tox", "twine (==4.0.1)", "twisted"] test = ["aiounittest", "tox", "twisted"] [[package]] name = "matrix-synapse-ldap3" version = "0.3.0" description = "An LDAP3 auth provider for Synapse" optional = true python-versions = ">=3.7" files = [ {file = "matrix-synapse-ldap3-0.3.0.tar.gz", hash = "sha256:8bb6517173164d4b9cc44f49de411d8cebdb2e705d5dd1ea1f38733c4a009e1d"}, {file = "matrix_synapse_ldap3-0.3.0-py3-none-any.whl", hash = "sha256:8b4d701f8702551e98cc1d8c20dbed532de5613584c08d0df22de376ba99159d"}, ] [package.dependencies] ldap3 = ">=2.8" service-identity = "*" Twisted = ">=15.1.0" [package.extras] dev = ["black (==22.3.0)", "flake8 (==4.0.1)", "isort (==5.9.3)", "ldaptor", "matrix-synapse", "mypy (==0.910)", "tox", "types-setuptools"] [[package]] name = "mdit-py-plugins" version = "0.3.5" description = "Collection of plugins for markdown-it-py" optional = false python-versions = ">=3.7" files = [ {file = "mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a"}, {file = "mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e"}, ] [package.dependencies] markdown-it-py = ">=1.0.0,<3.0.0" [package.extras] code-style = ["pre-commit"] rtd = ["attrs", "myst-parser (>=0.16.1,<0.17.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] [[package]] name = "more-itertools" version = "9.1.0" description = "More routines for operating on iterables, beyond itertools" optional = false python-versions = ">=3.7" files = [ {file = "more-itertools-9.1.0.tar.gz", hash = "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d"}, {file = "more_itertools-9.1.0-py3-none-any.whl", hash = "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3"}, ] [[package]] name = "msgpack" version = "1.0.7" description = "MessagePack serializer" optional = false python-versions = ">=3.8" files = [ {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862"}, {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329"}, {file = "msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b"}, {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6"}, {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee"}, {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d"}, {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d"}, {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1"}, {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681"}, {file = "msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9"}, {file = "msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415"}, {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84"}, {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93"}, {file = "msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8"}, {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46"}, {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b"}, {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e"}, {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002"}, {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c"}, {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e"}, {file = "msgpack-1.0.7-cp311-cp311-win32.whl", hash = "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1"}, {file = "msgpack-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82"}, {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b"}, {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4"}, {file = "msgpack-1.0.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee"}, {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5"}, {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672"}, {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075"}, {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba"}, {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c"}, {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5"}, {file = "msgpack-1.0.7-cp312-cp312-win32.whl", hash = "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9"}, {file = "msgpack-1.0.7-cp312-cp312-win_amd64.whl", hash = "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf"}, {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95"}, {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0"}, {file = "msgpack-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7"}, {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d"}, {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524"}, {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc"}, {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc"}, {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf"}, {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c"}, {file = "msgpack-1.0.7-cp38-cp38-win32.whl", hash = "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2"}, {file = "msgpack-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c"}, {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f"}, {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81"}, {file = "msgpack-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc"}, {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d"}, {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7"}, {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61"}, {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819"}, {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd"}, {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f"}, {file = "msgpack-1.0.7-cp39-cp39-win32.whl", hash = "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad"}, {file = "msgpack-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3"}, {file = "msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87"}, ] [[package]] name = "mypy" version = "1.5.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ {file = "mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"}, {file = "mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"}, {file = "mypy-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12"}, {file = "mypy-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d"}, {file = "mypy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25"}, {file = "mypy-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4"}, {file = "mypy-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4"}, {file = "mypy-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243"}, {file = "mypy-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275"}, {file = "mypy-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315"}, {file = "mypy-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb"}, {file = "mypy-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373"}, {file = "mypy-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161"}, {file = "mypy-1.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a"}, {file = "mypy-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1"}, {file = "mypy-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65"}, {file = "mypy-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160"}, {file = "mypy-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2"}, {file = "mypy-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb"}, {file = "mypy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"}, {file = "mypy-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a"}, {file = "mypy-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14"}, {file = "mypy-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb"}, {file = "mypy-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693"}, {file = "mypy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770"}, {file = "mypy-1.5.1-py3-none-any.whl", hash = "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5"}, {file = "mypy-1.5.1.tar.gz", hash = "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92"}, ] [package.dependencies] mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = ">=4.1.0" [package.extras] dmypy = ["psutil (>=4.0)"] install-types = ["pip"] reports = ["lxml"] [[package]] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] [[package]] name = "mypy-zope" version = "1.0.1" description = "Plugin for mypy to support zope interfaces" optional = false python-versions = "*" files = [ {file = "mypy-zope-1.0.1.tar.gz", hash = "sha256:003953896629d762d7f497135171ad549df42a8ac63c1521a230832dd6f7fc25"}, {file = "mypy_zope-1.0.1-py3-none-any.whl", hash = "sha256:ffa291a7af9f5904ce9f0e56de44323a4476e28aaf0d68361b62b1b0e997d0b8"}, ] [package.dependencies] mypy = ">=1.0.0,<1.6.0" "zope.interface" = "*" "zope.schema" = "*" [package.extras] test = ["lxml", "pytest (>=4.6)", "pytest-cov"] [[package]] name = "myst-parser" version = "1.0.0" description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," optional = false python-versions = ">=3.7" files = [ {file = "myst-parser-1.0.0.tar.gz", hash = "sha256:502845659313099542bd38a2ae62f01360e7dd4b1310f025dd014dfc0439cdae"}, {file = "myst_parser-1.0.0-py3-none-any.whl", hash = "sha256:69fb40a586c6fa68995e6521ac0a525793935db7e724ca9bac1d33be51be9a4c"}, ] [package.dependencies] docutils = ">=0.15,<0.20" jinja2 = "*" markdown-it-py = ">=1.0.0,<3.0.0" mdit-py-plugins = ">=0.3.4,<0.4.0" pyyaml = "*" sphinx = ">=5,<7" [package.extras] code-style = ["pre-commit (>=3.0,<4.0)"] linkify = ["linkify-it-py (>=1.0,<2.0)"] rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.2,<0.5.0)", "sphinx-book-theme (==1.0.0rc2)", "sphinx-copybutton", "sphinx-design2", "sphinx-pyscript", "sphinx-tippy (>=0.3.1)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.7.5,<0.8.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"] testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"] [[package]] name = "netaddr" version = "0.9.0" description = "A network address manipulation library for Python" optional = false python-versions = "*" files = [ {file = "netaddr-0.9.0-py3-none-any.whl", hash = "sha256:5148b1055679d2a1ec070c521b7db82137887fabd6d7e37f5199b44f775c3bb1"}, {file = "netaddr-0.9.0.tar.gz", hash = "sha256:7b46fa9b1a2d71fd5de9e4a3784ef339700a53a08c8040f08baf5f1194da0128"}, ] [[package]] name = "opentracing" version = "2.4.0" description = "OpenTracing API for Python. See documentation at http://opentracing.io" optional = true python-versions = "*" files = [ {file = "opentracing-2.4.0.tar.gz", hash = "sha256:a173117e6ef580d55874734d1fa7ecb6f3655160b8b8974a2a1e98e5ec9c840d"}, ] [package.extras] tests = ["Sphinx", "doubles", "flake8", "flake8-quotes", "gevent", "mock", "pytest", "pytest-cov", "pytest-mock", "six (>=1.10.0,<2.0)", "sphinx_rtd_theme", "tornado"] [[package]] name = "packaging" version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "parameterized" version = "0.9.0" description = "Parameterized testing with any Python test framework" optional = false python-versions = ">=3.7" files = [ {file = "parameterized-0.9.0-py2.py3-none-any.whl", hash = "sha256:4e0758e3d41bea3bbd05ec14fc2c24736723f243b28d702081aef438c9372b1b"}, {file = "parameterized-0.9.0.tar.gz", hash = "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1"}, ] [package.extras] dev = ["jinja2"] [[package]] name = "pathspec" version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.7" files = [ {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] [[package]] name = "phonenumbers" version = "8.13.26" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." optional = false python-versions = "*" files = [ {file = "phonenumbers-8.13.26-py2.py3-none-any.whl", hash = "sha256:b2308c9c5750b8f10dd30d94547afd66bce60ac5e93aff227f95740557f32752"}, {file = "phonenumbers-8.13.26.tar.gz", hash = "sha256:937d70aeceb317f5831dfec28de855a60260ef4a9d551964bec8e7a7d0cf81cd"}, ] [[package]] name = "pillow" version = "10.2.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] typing = ["typing-extensions"] xmp = ["defusedxml"] [[package]] name = "pkginfo" version = "1.9.6" description = "Query metadata from sdists / bdists / installed packages." optional = false python-versions = ">=3.6" files = [ {file = "pkginfo-1.9.6-py3-none-any.whl", hash = "sha256:4b7a555a6d5a22169fcc9cf7bfd78d296b0361adad412a346c1226849af5e546"}, {file = "pkginfo-1.9.6.tar.gz", hash = "sha256:8fd5896e8718a4372f0ea9cc9d96f6417c9b986e23a4d116dda26b62cc29d046"}, ] [package.extras] testing = ["pytest", "pytest-cov"] [[package]] name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." optional = false python-versions = ">=3.6" files = [ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, ] [[package]] name = "platformdirs" version = "3.1.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ {file = "platformdirs-3.1.1-py3-none-any.whl", hash = "sha256:e5986afb596e4bb5bde29a79ac9061aa955b94fca2399b7aaac4090860920dd8"}, {file = "platformdirs-3.1.1.tar.gz", hash = "sha256:024996549ee88ec1a9aa99ff7f8fc819bb59e2c3477b410d90a16d32d6e707aa"}, ] [package.extras] docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "prometheus-client" version = "0.19.0" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" files = [ {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"}, {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"}, ] [package.extras] twisted = ["twisted"] [[package]] name = "psycopg2" version = "2.9.9" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = true python-versions = ">=3.7" files = [ {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, ] [[package]] name = "psycopg2cffi" version = "2.9.0" description = ".. image:: https://travis-ci.org/chtd/psycopg2cffi.svg?branch=master" optional = true python-versions = "*" files = [ {file = "psycopg2cffi-2.9.0.tar.gz", hash = "sha256:7e272edcd837de3a1d12b62185eb85c45a19feda9e62fa1b120c54f9e8d35c52"}, ] [package.dependencies] cffi = ">=1.0" six = "*" [[package]] name = "psycopg2cffi-compat" version = "1.1" description = "A Simple library to enable psycopg2 compatability" optional = true python-versions = "*" files = [ {file = "psycopg2cffi-compat-1.1.tar.gz", hash = "sha256:d25e921748475522b33d13420aad5c2831c743227dc1f1f2585e0fdb5c914e05"}, ] [package.dependencies] psycopg2 = "*" [[package]] name = "pyasn1" version = "0.5.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, ] [[package]] name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"}, {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"}, ] [package.dependencies] pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pycparser" version = "2.21" description = "C parser in Python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] [[package]] name = "pydantic" version = "2.5.3" description = "Data validation using Python type hints" optional = false python-versions = ">=3.7" files = [ {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, ] [package.dependencies] annotated-types = ">=0.4.0" pydantic-core = "2.14.6" typing-extensions = ">=4.6.1" [package.extras] email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" version = "2.14.6" description = "" optional = false python-versions = ">=3.7" files = [ {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, ] [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygithub" version = "2.1.1" description = "Use the full Github API v3" optional = false python-versions = ">=3.7" files = [ {file = "PyGithub-2.1.1-py3-none-any.whl", hash = "sha256:4b528d5d6f35e991ea5fd3f942f58748f24938805cb7fcf24486546637917337"}, {file = "PyGithub-2.1.1.tar.gz", hash = "sha256:ecf12c2809c44147bce63b047b3d2e9dac8a41b63e90fcb263c703f64936b97c"}, ] [package.dependencies] Deprecated = "*" pyjwt = {version = ">=2.4.0", extras = ["crypto"]} pynacl = ">=1.4.0" python-dateutil = "*" requests = ">=2.14.0" typing-extensions = ">=4.0.0" urllib3 = ">=1.26.0" [[package]] name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" files = [ {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, ] [package.extras] plugins = ["importlib-metadata"] [[package]] name = "pyicu" version = "2.12" description = "Python extension wrapping the ICU C++ API" optional = true python-versions = "*" files = [ {file = "PyICU-2.12.tar.gz", hash = "sha256:bd7ab5efa93ad692e6daa29cd249364e521218329221726a113ca3cb281c8611"}, ] [[package]] name = "pyjwt" version = "2.6.0" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.7" files = [ {file = "PyJWT-2.6.0-py3-none-any.whl", hash = "sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14"}, {file = "PyJWT-2.6.0.tar.gz", hash = "sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd"}, ] [package.dependencies] cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""} [package.extras] crypto = ["cryptography (>=3.4.0)"] dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pymacaroons" version = "0.13.0" description = "Macaroon library for Python" optional = false python-versions = "*" files = [ {file = "pymacaroons-0.13.0-py2.py3-none-any.whl", hash = "sha256:3e14dff6a262fdbf1a15e769ce635a8aea72e6f8f91e408f9a97166c53b91907"}, {file = "pymacaroons-0.13.0.tar.gz", hash = "sha256:1e6bba42a5f66c245adf38a5a4006a99dcc06a0703786ea636098667d42903b8"}, ] [package.dependencies] PyNaCl = ">=1.1.2,<2.0" six = ">=1.8.0" [[package]] name = "pympler" version = "1.0.1" description = "A development tool to measure, monitor and analyze the memory behavior of Python objects." optional = true python-versions = ">=3.6" files = [ {file = "Pympler-1.0.1-py3-none-any.whl", hash = "sha256:d260dda9ae781e1eab6ea15bacb84015849833ba5555f141d2d9b7b7473b307d"}, {file = "Pympler-1.0.1.tar.gz", hash = "sha256:993f1a3599ca3f4fcd7160c7545ad06310c9e12f70174ae7ae8d4e25f6c5d3fa"}, ] [[package]] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" optional = false python-versions = ">=3.6" files = [ {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, ] [package.dependencies] cffi = ">=1.4.1" [package.extras] docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyopenssl" version = "23.3.0" description = "Python wrapper module around the OpenSSL library" optional = false python-versions = ">=3.7" files = [ {file = "pyOpenSSL-23.3.0-py3-none-any.whl", hash = "sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2"}, {file = "pyOpenSSL-23.3.0.tar.gz", hash = "sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12"}, ] [package.dependencies] cryptography = ">=41.0.5,<42" [package.extras] docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] name = "pysaml2" version = "7.3.1" description = "Python implementation of SAML Version 2 Standard" optional = true python-versions = ">=3.6.2,<4.0.0" files = [ {file = "pysaml2-7.3.1-py3-none-any.whl", hash = "sha256:2cc66e7a371d3f5ff9601f0ed93b5276cca816fce82bb38447d5a0651f2f5193"}, {file = "pysaml2-7.3.1.tar.gz", hash = "sha256:eab22d187c6dd7707c58b5bb1688f9b8e816427667fc99d77f54399e15cd0a0a"}, ] [package.dependencies] cryptography = ">=3.1" defusedxml = "*" importlib-resources = {version = "*", markers = "python_version < \"3.9\""} pyopenssl = "*" python-dateutil = "*" pytz = "*" requests = ">=2,<3" xmlschema = ">=1.2.1" [package.extras] s2repoze = ["paste", "repoze.who", "zope.interface"] [[package]] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] [package.dependencies] six = ">=1.5" [[package]] name = "pytz" version = "2022.7.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, ] [[package]] name = "pywin32-ctypes" version = "0.2.0" description = "" optional = false python-versions = "*" files = [ {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, ] [[package]] name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] [[package]] name = "readme-renderer" version = "37.3" description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" optional = false python-versions = ">=3.7" files = [ {file = "readme_renderer-37.3-py3-none-any.whl", hash = "sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343"}, {file = "readme_renderer-37.3.tar.gz", hash = "sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273"}, ] [package.dependencies] bleach = ">=2.1.0" docutils = ">=0.13.1" Pygments = ">=2.5.1" [package.extras] md = ["cmarkgfm (>=0.8.0)"] [[package]] name = "referencing" version = "0.29.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ {file = "referencing-0.29.1-py3-none-any.whl", hash = "sha256:d3c8f323ee1480095da44d55917cfb8278d73d6b4d5f677e3e40eb21314ac67f"}, {file = "referencing-0.29.1.tar.gz", hash = "sha256:90cb53782d550ba28d2166ef3f55731f38397def8832baac5d45235f1995e35e"}, ] [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" [[package]] name = "requests" version = "2.31.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.7" files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, ] [package.dependencies] requests = ">=2.0.1,<3.0.0" [[package]] name = "rfc3986" version = "2.0.0" description = "Validating URI References per RFC 3986" optional = false python-versions = ">=3.7" files = [ {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"}, {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"}, ] [package.extras] idna2008 = ["idna"] [[package]] name = "rich" version = "13.3.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ {file = "rich-13.3.2-py3-none-any.whl", hash = "sha256:a104f37270bf677148d8acb07d33be1569eeee87e2d1beb286a4e9113caf6f2f"}, {file = "rich-13.3.2.tar.gz", hash = "sha256:91954fe80cfb7985727a467ca98a7618e5dd15178cc2da10f553b36a93859001"}, ] [package.dependencies] markdown-it-py = ">=2.2.0,<3.0.0" pygments = ">=2.13.0,<3.0.0" typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" version = "0.8.10" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ {file = "rpds_py-0.8.10-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:93d06cccae15b3836247319eee7b6f1fdcd6c10dabb4e6d350d27bd0bdca2711"}, {file = "rpds_py-0.8.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3816a890a6a9e9f1de250afa12ca71c9a7a62f2b715a29af6aaee3aea112c181"}, {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7c6304b894546b5a6bdc0fe15761fa53fe87d28527a7142dae8de3c663853e1"}, {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad3bfb44c8840fb4be719dc58e229f435e227fbfbe133dc33f34981ff622a8f8"}, {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14f1c356712f66653b777ecd8819804781b23dbbac4eade4366b94944c9e78ad"}, {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82bb361cae4d0a627006dadd69dc2f36b7ad5dc1367af9d02e296ec565248b5b"}, {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2e3c4f2a8e3da47f850d7ea0d7d56720f0f091d66add889056098c4b2fd576c"}, {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15a90d0ac11b4499171067ae40a220d1ca3cb685ec0acc356d8f3800e07e4cb8"}, {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:70bb9c8004b97b4ef7ae56a2aa56dfaa74734a0987c78e7e85f00004ab9bf2d0"}, {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d64f9f88d5203274a002b54442cafc9c7a1abff2a238f3e767b70aadf919b451"}, {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ccbbd276642788c4376fbe8d4e6c50f0fb4972ce09ecb051509062915891cbf0"}, {file = "rpds_py-0.8.10-cp310-none-win32.whl", hash = "sha256:fafc0049add8043ad07ab5382ee80d80ed7e3699847f26c9a5cf4d3714d96a84"}, {file = "rpds_py-0.8.10-cp310-none-win_amd64.whl", hash = "sha256:915031002c86a5add7c6fd4beb601b2415e8a1c956590a5f91d825858e92fe6e"}, {file = "rpds_py-0.8.10-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:84eb541a44f7a18f07a6bfc48b95240739e93defe1fdfb4f2a295f37837945d7"}, {file = "rpds_py-0.8.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f59996d0550894affaad8743e97b9b9c98f638b221fac12909210ec3d9294786"}, {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9adb5664b78fcfcd830000416c8cc69853ef43cb084d645b3f1f0296edd9bae"}, {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f96f3f98fbff7af29e9edf9a6584f3c1382e7788783d07ba3721790625caa43e"}, {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:376b8de737401050bd12810003d207e824380be58810c031f10ec563ff6aef3d"}, {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d1c2bc319428d50b3e0fa6b673ab8cc7fa2755a92898db3a594cbc4eeb6d1f7"}, {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73a1e48430f418f0ac3dfd87860e4cc0d33ad6c0f589099a298cb53724db1169"}, {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134ec8f14ca7dbc6d9ae34dac632cdd60939fe3734b5d287a69683c037c51acb"}, {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4b519bac7c09444dd85280fd60f28c6dde4389c88dddf4279ba9b630aca3bbbe"}, {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9cd57981d9fab04fc74438d82460f057a2419974d69a96b06a440822d693b3c0"}, {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:69d089c026f6a8b9d64a06ff67dc3be196707b699d7f6ca930c25f00cf5e30d8"}, {file = "rpds_py-0.8.10-cp311-none-win32.whl", hash = "sha256:220bdcad2d2936f674650d304e20ac480a3ce88a40fe56cd084b5780f1d104d9"}, {file = "rpds_py-0.8.10-cp311-none-win_amd64.whl", hash = "sha256:6c6a0225b8501d881b32ebf3f5807a08ad3685b5eb5f0a6bfffd3a6e039b2055"}, {file = "rpds_py-0.8.10-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e3d0cd3dff0e7638a7b5390f3a53057c4e347f4ef122ee84ed93fc2fb7ea4aa2"}, {file = "rpds_py-0.8.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d77dff3a5aa5eedcc3da0ebd10ff8e4969bc9541aa3333a8d41715b429e99f47"}, {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41c89a366eae49ad9e65ed443a8f94aee762931a1e3723749d72aeac80f5ef2f"}, {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3793c21494bad1373da517001d0849eea322e9a049a0e4789e50d8d1329df8e7"}, {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:805a5f3f05d186c5d50de2e26f765ba7896d0cc1ac5b14ffc36fae36df5d2f10"}, {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b01b39ad5411563031ea3977bbbc7324d82b088e802339e6296f082f78f6115c"}, {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f1e860be21f3e83011116a65e7310486300e08d9a3028e73e8d13bb6c77292"}, {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a13c8e56c46474cd5958d525ce6a9996727a83d9335684e41f5192c83deb6c58"}, {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:93d99f957a300d7a4ced41615c45aeb0343bb8f067c42b770b505de67a132346"}, {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:148b0b38d719c0760e31ce9285a9872972bdd7774969a4154f40c980e5beaca7"}, {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3cc5e5b5514796f45f03a568981971b12a3570f3de2e76114f7dc18d4b60a3c4"}, {file = "rpds_py-0.8.10-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:e8e24b210a4deb5a7744971f8f77393005bae7f873568e37dfd9effe808be7f7"}, {file = "rpds_py-0.8.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b41941583adce4242af003d2a8337b066ba6148ca435f295f31ac6d9e4ea2722"}, {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c490204e16bca4f835dba8467869fe7295cdeaa096e4c5a7af97f3454a97991"}, {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee45cd1d84beed6cbebc839fd85c2e70a3a1325c8cfd16b62c96e2ffb565eca"}, {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a8ca409f1252e1220bf09c57290b76cae2f14723746215a1e0506472ebd7bdf"}, {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96b293c0498c70162effb13100624c5863797d99df75f2f647438bd10cbf73e4"}, {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4627520a02fccbd324b33c7a83e5d7906ec746e1083a9ac93c41ac7d15548c7"}, {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e39d7ab0c18ac99955b36cd19f43926450baba21e3250f053e0704d6ffd76873"}, {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ba9f1d1ebe4b63801977cec7401f2d41e888128ae40b5441270d43140efcad52"}, {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:802f42200d8caf7f25bbb2a6464cbd83e69d600151b7e3b49f49a47fa56b0a38"}, {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d19db6ba816e7f59fc806c690918da80a7d186f00247048cd833acdab9b4847b"}, {file = "rpds_py-0.8.10-cp38-none-win32.whl", hash = "sha256:7947e6e2c2ad68b1c12ee797d15e5f8d0db36331200b0346871492784083b0c6"}, {file = "rpds_py-0.8.10-cp38-none-win_amd64.whl", hash = "sha256:fa326b3505d5784436d9433b7980171ab2375535d93dd63fbcd20af2b5ca1bb6"}, {file = "rpds_py-0.8.10-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7b38a9ac96eeb6613e7f312cd0014de64c3f07000e8bf0004ad6ec153bac46f8"}, {file = "rpds_py-0.8.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c4d42e83ddbf3445e6514f0aff96dca511421ed0392d9977d3990d9f1ba6753c"}, {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b21575031478609db6dbd1f0465e739fe0e7f424a8e7e87610a6c7f68b4eb16"}, {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:574868858a7ff6011192c023a5289158ed20e3f3b94b54f97210a773f2f22921"}, {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae40f4a70a1f40939d66ecbaf8e7edc144fded190c4a45898a8cfe19d8fc85ea"}, {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37f7ee4dc86db7af3bac6d2a2cedbecb8e57ce4ed081f6464510e537589f8b1e"}, {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:695f642a3a5dbd4ad2ffbbacf784716ecd87f1b7a460843b9ddf965ccaeafff4"}, {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f43ab4cb04bde6109eb2555528a64dfd8a265cc6a9920a67dcbde13ef53a46c8"}, {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a11ab0d97be374efd04f640c04fe5c2d3dabc6dfb998954ea946ee3aec97056d"}, {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:92cf5b3ee60eef41f41e1a2cabca466846fb22f37fc580ffbcb934d1bcab225a"}, {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ceaac0c603bf5ac2f505a78b2dcab78d3e6b706be6596c8364b64cc613d208d2"}, {file = "rpds_py-0.8.10-cp39-none-win32.whl", hash = "sha256:dd4f16e57c12c0ae17606c53d1b57d8d1c8792efe3f065a37cb3341340599d49"}, {file = "rpds_py-0.8.10-cp39-none-win_amd64.whl", hash = "sha256:c03a435d26c3999c2a8642cecad5d1c4d10c961817536af52035f6f4ee2f5dd0"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0da53292edafecba5e1d8c1218f99babf2ed0bf1c791d83c0ab5c29b57223068"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7d20a8ed227683401cc508e7be58cba90cc97f784ea8b039c8cd01111e6043e0"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97cab733d303252f7c2f7052bf021a3469d764fc2b65e6dbef5af3cbf89d4892"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c398fda6df361a30935ab4c4bccb7f7a3daef2964ca237f607c90e9f3fdf66f"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2eb4b08c45f8f8d8254cdbfacd3fc5d6b415d64487fb30d7380b0d0569837bf1"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7dfb1cbb895810fa2b892b68153c17716c6abaa22c7dc2b2f6dcf3364932a1c"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89c92b74e8bf6f53a6f4995fd52f4bd510c12f103ee62c99e22bc9e05d45583c"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9c0683cb35a9b5881b41bc01d5568ffc667910d9dbc632a1fba4e7d59e98773"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0eeb2731708207d0fe2619afe6c4dc8cb9798f7de052da891de5f19c0006c315"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:7495010b658ec5b52835f21d8c8b1a7e52e194c50f095d4223c0b96c3da704b1"}, {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c72ebc22e70e04126158c46ba56b85372bc4d54d00d296be060b0db1671638a4"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2cd3045e7f6375dda64ed7db1c5136826facb0159ea982f77d9cf6125025bd34"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2418cf17d653d24ffb8b75e81f9f60b7ba1b009a23298a433a4720b2a0a17017"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a2edf8173ac0c7a19da21bc68818be1321998528b5e3f748d6ee90c0ba2a1fd"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f29b8c55fd3a2bc48e485e37c4e2df3317f43b5cc6c4b6631c33726f52ffbb3"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a7d20c1cf8d7b3960c5072c265ec47b3f72a0c608a9a6ee0103189b4f28d531"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:521fc8861a86ae54359edf53a15a05fabc10593cea7b3357574132f8427a5e5a"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5c191713e98e7c28800233f039a32a42c1a4f9a001a8a0f2448b07391881036"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:083df0fafe199371206111583c686c985dddaf95ab3ee8e7b24f1fda54515d09"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ed41f3f49507936a6fe7003985ea2574daccfef999775525d79eb67344e23767"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:2614c2732bf45de5c7f9e9e54e18bc78693fa2f635ae58d2895b7965e470378c"}, {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c60528671d9d467009a6ec284582179f6b88651e83367d0ab54cb739021cd7de"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ee744fca8d1ea822480a2a4e7c5f2e1950745477143668f0b523769426060f29"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a38b9f526d0d6cbdaa37808c400e3d9f9473ac4ff64d33d9163fd05d243dbd9b"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60e0e86e870350e03b3e25f9b1dd2c6cc72d2b5f24e070249418320a6f9097b7"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f53f55a8852f0e49b0fc76f2412045d6ad9d5772251dea8f55ea45021616e7d5"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c493365d3fad241d52f096e4995475a60a80f4eba4d3ff89b713bc65c2ca9615"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:300eb606e6b94a7a26f11c8cc8ee59e295c6649bd927f91e1dbd37a4c89430b6"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a665f6f1a87614d1c3039baf44109094926dedf785e346d8b0a728e9cabd27a"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:927d784648211447201d4c6f1babddb7971abad922b32257ab74de2f2750fad0"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c200b30dd573afa83847bed7e3041aa36a8145221bf0cfdfaa62d974d720805c"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:08166467258fd0240a1256fce272f689f2360227ee41c72aeea103e9e4f63d2b"}, {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:996cc95830de9bc22b183661d95559ec6b3cd900ad7bc9154c4cbf5be0c9b734"}, {file = "rpds_py-0.8.10.tar.gz", hash = "sha256:13e643ce8ad502a0263397362fb887594b49cf84bf518d6038c16f235f2bcea4"}, ] [[package]] name = "ruff" version = "0.1.14" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ {file = "ruff-0.1.14-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:96f76536df9b26622755c12ed8680f159817be2f725c17ed9305b472a757cdbb"}, {file = "ruff-0.1.14-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ab3f71f64498c7241123bb5a768544cf42821d2a537f894b22457a543d3ca7a9"}, {file = "ruff-0.1.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7060156ecc572b8f984fd20fd8b0fcb692dd5d837b7606e968334ab7ff0090ab"}, {file = "ruff-0.1.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a53d8e35313d7b67eb3db15a66c08434809107659226a90dcd7acb2afa55faea"}, {file = "ruff-0.1.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bea9be712b8f5b4ebed40e1949379cfb2a7d907f42921cf9ab3aae07e6fba9eb"}, {file = "ruff-0.1.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2270504d629a0b064247983cbc495bed277f372fb9eaba41e5cf51f7ba705a6a"}, {file = "ruff-0.1.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80258bb3b8909b1700610dfabef7876423eed1bc930fe177c71c414921898efa"}, {file = "ruff-0.1.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:653230dd00aaf449eb5ff25d10a6e03bc3006813e2cb99799e568f55482e5cae"}, {file = "ruff-0.1.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b3acc6c4e6928459ba9eb7459dd4f0c4bf266a053c863d72a44c33246bfdbf"}, {file = "ruff-0.1.14-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6b3dadc9522d0eccc060699a9816e8127b27addbb4697fc0c08611e4e6aeb8b5"}, {file = "ruff-0.1.14-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1c8eca1a47b4150dc0fbec7fe68fc91c695aed798532a18dbb1424e61e9b721f"}, {file = "ruff-0.1.14-py3-none-musllinux_1_2_i686.whl", hash = "sha256:62ce2ae46303ee896fc6811f63d6dabf8d9c389da0f3e3f2bce8bc7f15ef5488"}, {file = "ruff-0.1.14-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b2027dde79d217b211d725fc833e8965dc90a16d0d3213f1298f97465956661b"}, {file = "ruff-0.1.14-py3-none-win32.whl", hash = "sha256:722bafc299145575a63bbd6b5069cb643eaa62546a5b6398f82b3e4403329cab"}, {file = "ruff-0.1.14-py3-none-win_amd64.whl", hash = "sha256:e3d241aa61f92b0805a7082bd89a9990826448e4d0398f0e2bc8f05c75c63d99"}, {file = "ruff-0.1.14-py3-none-win_arm64.whl", hash = "sha256:269302b31ade4cde6cf6f9dd58ea593773a37ed3f7b97e793c8594b262466b67"}, {file = "ruff-0.1.14.tar.gz", hash = "sha256:ad3f8088b2dfd884820289a06ab718cde7d38b94972212cc4ba90d5fbc9955f3"}, ] [[package]] name = "secretstorage" version = "3.3.3" description = "Python bindings to FreeDesktop.org Secret Service API" optional = false python-versions = ">=3.6" files = [ {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"}, {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, ] [package.dependencies] cryptography = ">=2.0" jeepney = ">=0.6" [[package]] name = "semantic-version" version = "2.10.0" description = "A library implementing the 'SemVer' scheme." optional = false python-versions = ">=2.7" files = [ {file = "semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177"}, {file = "semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c"}, ] [package.extras] dev = ["Django (>=1.11)", "check-manifest", "colorama (<=0.4.1)", "coverage", "flake8", "nose2", "readme-renderer (<25.0)", "tox", "wheel", "zest.releaser[recommended]"] doc = ["Sphinx", "sphinx-rtd-theme"] [[package]] name = "sentry-sdk" version = "1.39.1" description = "Python client for Sentry (https://sentry.io)" optional = true python-versions = "*" files = [ {file = "sentry-sdk-1.39.1.tar.gz", hash = "sha256:320a55cdf9da9097a0bead239c35b7e61f53660ef9878861824fd6d9b2eaf3b5"}, {file = "sentry_sdk-1.39.1-py2.py3-none-any.whl", hash = "sha256:81b5b9ffdd1a374e9eb0c053b5d2012155db9cbe76393a8585677b753bd5fdc1"}, ] [package.dependencies] certifi = "*" urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} [package.extras] aiohttp = ["aiohttp (>=3.5)"] arq = ["arq (>=0.23)"] asyncpg = ["asyncpg (>=0.23)"] beam = ["apache-beam (>=2.12)"] bottle = ["bottle (>=0.12.13)"] celery = ["celery (>=3)"] chalice = ["chalice (>=1.16.0)"] clickhouse-driver = ["clickhouse-driver (>=0.2.0)"] django = ["django (>=1.8)"] falcon = ["falcon (>=1.4)"] fastapi = ["fastapi (>=0.79.0)"] flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] grpcio = ["grpcio (>=1.21.1)"] httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] loguru = ["loguru (>=0.5)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] pure-eval = ["asttokens", "executing", "pure-eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] rq = ["rq (>=0.6)"] sanic = ["sanic (>=0.8)"] sqlalchemy = ["sqlalchemy (>=1.2)"] starlette = ["starlette (>=0.19.1)"] starlite = ["starlite (>=1.48)"] tornado = ["tornado (>=5)"] [[package]] name = "service-identity" version = "24.1.0" description = "Service identity verification for pyOpenSSL & cryptography." optional = false python-versions = ">=3.8" files = [ {file = "service_identity-24.1.0-py3-none-any.whl", hash = "sha256:a28caf8130c8a5c1c7a6f5293faaf239bbfb7751e4862436920ee6f2616f568a"}, {file = "service_identity-24.1.0.tar.gz", hash = "sha256:6829c9d62fb832c2e1c435629b0a8c476e1929881f28bee4d20bc24161009221"}, ] [package.dependencies] attrs = ">=19.1.0" cryptography = "*" pyasn1 = "*" pyasn1-modules = "*" [package.extras] dev = ["pyopenssl", "service-identity[idna,mypy,tests]"] docs = ["furo", "myst-parser", "pyopenssl", "sphinx", "sphinx-notfound-page"] idna = ["idna"] mypy = ["idna", "mypy", "types-pyopenssl"] tests = ["coverage[toml] (>=5.0.2)", "pytest"] [[package]] name = "setuptools" version = "67.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.7" files = [ {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "setuptools-rust" version = "1.8.1" description = "Setuptools Rust extension plugin" optional = false python-versions = ">=3.8" files = [ {file = "setuptools-rust-1.8.1.tar.gz", hash = "sha256:94b1dd5d5308b3138d5b933c3a2b55e6d6927d1a22632e509fcea9ddd0f7e486"}, {file = "setuptools_rust-1.8.1-py3-none-any.whl", hash = "sha256:b5324493949ccd6aa0c03890c5f6b5f02de4512e3ac1697d02e9a6c02b18aa8e"}, ] [package.dependencies] semantic-version = ">=2.8.2,<3" setuptools = ">=62.4" tomli = {version = ">=1.2.1", markers = "python_version < \"3.11\""} [[package]] name = "signedjson" version = "1.1.4" description = "Sign JSON with Ed25519 signatures" optional = false python-versions = "*" files = [ {file = "signedjson-1.1.4-py3-none-any.whl", hash = "sha256:45569ec54241c65d2403fe3faf7169be5322547706a231e884ca2b427f23d228"}, {file = "signedjson-1.1.4.tar.gz", hash = "sha256:cd91c56af53f169ef032c62e9c4a3292dc158866933318d0592e3462db3d6492"}, ] [package.dependencies] canonicaljson = ">=1.0.0" pynacl = ">=0.3.0" unpaddedbase64 = ">=1.0.1" [package.extras] dev = ["typing-extensions (>=3.5)"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] [[package]] name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" optional = false python-versions = ">=3.6" files = [ {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, ] [[package]] name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." optional = false python-versions = "*" files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] [[package]] name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" optional = false python-versions = "*" files = [ {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, ] [[package]] name = "soupsieve" version = "2.4" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.7" files = [ {file = "soupsieve-2.4-py3-none-any.whl", hash = "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955"}, {file = "soupsieve-2.4.tar.gz", hash = "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a"}, ] [[package]] name = "sphinx" version = "6.2.1" description = "Python documentation generator" optional = false python-versions = ">=3.8" files = [ {file = "Sphinx-6.2.1.tar.gz", hash = "sha256:6d56a34697bb749ffa0152feafc4b19836c755d90a7c59b72bc7dfd371b9cc6b"}, {file = "sphinx-6.2.1-py3-none-any.whl", hash = "sha256:97787ff1fa3256a3eef9eda523a63dbf299f7b47e053cfcf684a1c2a8380c912"}, ] [package.dependencies] alabaster = ">=0.7,<0.8" babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} docutils = ">=0.18.1,<0.20" imagesize = ">=1.3" importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" packaging = ">=21.0" Pygments = ">=2.13" requests = ">=2.25.0" snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" sphinxcontrib-jsmath = "*" sphinxcontrib-qthelp = "*" sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] [[package]] name = "sphinx-autodoc2" version = "0.5.0" description = "Analyse a python project and create documentation for it." optional = false python-versions = ">=3.8" files = [ {file = "sphinx_autodoc2-0.5.0-py3-none-any.whl", hash = "sha256:e867013b1512f9d6d7e6f6799f8b537d6884462acd118ef361f3f619a60b5c9e"}, {file = "sphinx_autodoc2-0.5.0.tar.gz", hash = "sha256:7d76044aa81d6af74447080182b6868c7eb066874edc835e8ddf810735b6565a"}, ] [package.dependencies] astroid = ">=2.7,<4" tomli = {version = "*", markers = "python_version < \"3.11\""} typing-extensions = "*" [package.extras] cli = ["typer[all]"] docs = ["furo", "myst-parser", "sphinx (>=4.0.0)"] sphinx = ["sphinx (>=4.0.0)"] testing = ["pytest", "pytest-cov", "pytest-regressions", "sphinx (>=4.0.0,<7)"] [[package]] name = "sphinx-basic-ng" version = "1.0.0b1" description = "A modern skeleton for Sphinx themes." optional = false python-versions = ">=3.7" files = [ {file = "sphinx_basic_ng-1.0.0b1-py3-none-any.whl", hash = "sha256:ade597a3029c7865b24ad0eda88318766bcc2f9f4cef60df7e28126fde94db2a"}, {file = "sphinx_basic_ng-1.0.0b1.tar.gz", hash = "sha256:89374bd3ccd9452a301786781e28c8718e99960f2d4f411845ea75fc7bb5a9b0"}, ] [package.dependencies] sphinx = ">=4.0" [package.extras] docs = ["furo", "ipython", "myst-parser", "sphinx-copybutton", "sphinx-inline-tabs"] [[package]] name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.8" files = [ {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.8" files = [ {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, ] [package.extras] test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "systemd-python" version = "235" description = "Python interface for libsystemd" optional = true python-versions = "*" files = [ {file = "systemd-python-235.tar.gz", hash = "sha256:4e57f39797fd5d9e2d22b8806a252d7c0106c936039d1e71c8c6b8008e695c0a"}, ] [[package]] name = "threadloop" version = "1.0.2" description = "Tornado IOLoop Backed Concurrent Futures" optional = true python-versions = "*" files = [ {file = "threadloop-1.0.2-py2-none-any.whl", hash = "sha256:5c90dbefab6ffbdba26afb4829d2a9df8275d13ac7dc58dccb0e279992679599"}, {file = "threadloop-1.0.2.tar.gz", hash = "sha256:8b180aac31013de13c2ad5c834819771992d350267bddb854613ae77ef571944"}, ] [package.dependencies] tornado = "*" [[package]] name = "thrift" version = "0.16.0" description = "Python bindings for the Apache Thrift RPC system" optional = true python-versions = "*" files = [ {file = "thrift-0.16.0.tar.gz", hash = "sha256:2b5b6488fcded21f9d312aa23c9ff6a0195d0f6ae26ddbd5ad9e3e25dfc14408"}, ] [package.dependencies] six = ">=1.7.2" [package.extras] all = ["tornado (>=4.0)", "twisted"] tornado = ["tornado (>=4.0)"] twisted = ["twisted"] [[package]] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.7" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] [[package]] name = "tornado" version = "6.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = true python-versions = ">= 3.7" files = [ {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"}, {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"}, {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"}, {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"}, {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"}, {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"}, {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"}, {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"}, {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"}, {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"}, {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"}, ] [[package]] name = "towncrier" version = "23.11.0" description = "Building newsfiles for your project." optional = false python-versions = ">=3.8" files = [ {file = "towncrier-23.11.0-py3-none-any.whl", hash = "sha256:2e519ca619426d189e3c98c99558fe8be50c9ced13ea1fc20a4a353a95d2ded7"}, {file = "towncrier-23.11.0.tar.gz", hash = "sha256:13937c247e3f8ae20ac44d895cf5f96a60ad46cfdcc1671759530d7837d9ee5d"}, ] [package.dependencies] click = "*" importlib-resources = {version = ">=5", markers = "python_version < \"3.10\""} incremental = "*" jinja2 = "*" tomli = {version = "*", markers = "python_version < \"3.11\""} [package.extras] dev = ["furo", "packaging", "sphinx (>=5)", "twisted"] [[package]] name = "treq" version = "23.11.0" description = "High-level Twisted HTTP Client API" optional = false python-versions = ">=3.6" files = [ {file = "treq-23.11.0-py3-none-any.whl", hash = "sha256:f494c2218d61cab2cabbee37cd6606d3eea9d16cf14190323095c95d22c467e9"}, {file = "treq-23.11.0.tar.gz", hash = "sha256:0914ff929fd1632ce16797235260f8bc19d20ff7c459c1deabd65b8c68cbeac5"}, ] [package.dependencies] attrs = "*" hyperlink = ">=21.0.0" incremental = "*" requests = ">=2.1.0" Twisted = {version = ">=22.10.0", extras = ["tls"]} [package.extras] dev = ["httpbin (==0.7.0)", "pep8", "pyflakes", "werkzeug (==2.0.3)"] docs = ["sphinx (<7.0.0)"] [[package]] name = "twine" version = "4.0.2" description = "Collection of utilities for publishing packages on PyPI" optional = false python-versions = ">=3.7" files = [ {file = "twine-4.0.2-py3-none-any.whl", hash = "sha256:929bc3c280033347a00f847236564d1c52a3e61b1ac2516c97c48f3ceab756d8"}, {file = "twine-4.0.2.tar.gz", hash = "sha256:9e102ef5fdd5a20661eb88fad46338806c3bd32cf1db729603fe3697b1bc83c8"}, ] [package.dependencies] importlib-metadata = ">=3.6" keyring = ">=15.1" pkginfo = ">=1.8.1" readme-renderer = ">=35.0" requests = ">=2.20" requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" rfc3986 = ">=1.4.0" rich = ">=12.0.0" urllib3 = ">=1.26.0" [[package]] name = "twisted" version = "23.10.0" description = "An asynchronous networking framework written in Python" optional = false python-versions = ">=3.8.0" files = [ {file = "twisted-23.10.0-py3-none-any.whl", hash = "sha256:4ae8bce12999a35f7fe6443e7f1893e6fe09588c8d2bed9c35cdce8ff2d5b444"}, {file = "twisted-23.10.0.tar.gz", hash = "sha256:987847a0790a2c597197613686e2784fd54167df3a55d0fb17c8412305d76ce5"}, ] [package.dependencies] attrs = ">=21.3.0" automat = ">=0.8.0" constantly = ">=15.1" hyperlink = ">=17.1.1" idna = {version = ">=2.4", optional = true, markers = "extra == \"tls\""} incremental = ">=22.10.0" pyopenssl = {version = ">=21.0.0", optional = true, markers = "extra == \"tls\""} service-identity = {version = ">=18.1.0", optional = true, markers = "extra == \"tls\""} twisted-iocpsupport = {version = ">=1.0.2,<2", markers = "platform_system == \"Windows\""} typing-extensions = ">=4.2.0" zope-interface = ">=5" [package.extras] all-non-platform = ["twisted[conch,http2,serial,test,tls]", "twisted[conch,http2,serial,test,tls]"] conch = ["appdirs (>=1.4.0)", "bcrypt (>=3.1.3)", "cryptography (>=3.3)"] dev = ["coverage (>=6b1,<7)", "pyflakes (>=2.2,<3.0)", "python-subunit (>=1.4,<2.0)", "twisted[dev-release]", "twistedchecker (>=0.7,<1.0)"] dev-release = ["pydoctor (>=23.9.0,<23.10.0)", "pydoctor (>=23.9.0,<23.10.0)", "sphinx (>=6,<7)", "sphinx (>=6,<7)", "sphinx-rtd-theme (>=1.3,<2.0)", "sphinx-rtd-theme (>=1.3,<2.0)", "towncrier (>=23.6,<24.0)", "towncrier (>=23.6,<24.0)"] gtk-platform = ["pygobject", "pygobject", "twisted[all-non-platform]", "twisted[all-non-platform]"] http2 = ["h2 (>=3.0,<5.0)", "priority (>=1.1.0,<2.0)"] macos-platform = ["pyobjc-core", "pyobjc-core", "pyobjc-framework-cfnetwork", "pyobjc-framework-cfnetwork", "pyobjc-framework-cocoa", "pyobjc-framework-cocoa", "twisted[all-non-platform]", "twisted[all-non-platform]"] mypy = ["mypy (>=1.5.1,<1.6.0)", "mypy-zope (>=1.0.1,<1.1.0)", "twisted[all-non-platform,dev]", "types-pyopenssl", "types-setuptools"] osx-platform = ["twisted[macos-platform]", "twisted[macos-platform]"] serial = ["pyserial (>=3.0)", "pywin32 (!=226)"] test = ["cython-test-exception-raiser (>=1.0.2,<2)", "hypothesis (>=6.56)", "pyhamcrest (>=2)"] tls = ["idna (>=2.4)", "pyopenssl (>=21.0.0)", "service-identity (>=18.1.0)"] windows-platform = ["pywin32 (!=226)", "pywin32 (!=226)", "twisted[all-non-platform]", "twisted[all-non-platform]"] [[package]] name = "twisted-iocpsupport" version = "1.0.2" description = "An extension for use in the twisted I/O Completion Ports reactor." optional = false python-versions = "*" files = [ {file = "twisted-iocpsupport-1.0.2.tar.gz", hash = "sha256:72068b206ee809c9c596b57b5287259ea41ddb4774d86725b19f35bf56aa32a9"}, {file = "twisted_iocpsupport-1.0.2-cp310-cp310-win32.whl", hash = "sha256:985c06a33f5c0dae92c71a036d1ea63872ee86a21dd9b01e1f287486f15524b4"}, {file = "twisted_iocpsupport-1.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:81b3abe3527b367da0220482820cb12a16c661672b7bcfcde328902890d63323"}, {file = "twisted_iocpsupport-1.0.2-cp36-cp36m-win32.whl", hash = "sha256:9dbb8823b49f06d4de52721b47de4d3b3026064ef4788ce62b1a21c57c3fff6f"}, {file = "twisted_iocpsupport-1.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:b9fed67cf0f951573f06d560ac2f10f2a4bbdc6697770113a2fc396ea2cb2565"}, {file = "twisted_iocpsupport-1.0.2-cp37-cp37m-win32.whl", hash = "sha256:b76b4eed9b27fd63ddb0877efdd2d15835fdcb6baa745cb85b66e5d016ac2878"}, {file = "twisted_iocpsupport-1.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:851b3735ca7e8102e661872390e3bce88f8901bece95c25a0c8bb9ecb8a23d32"}, {file = "twisted_iocpsupport-1.0.2-cp38-cp38-win32.whl", hash = "sha256:bf4133139d77fc706d8f572e6b7d82871d82ec7ef25d685c2351bdacfb701415"}, {file = "twisted_iocpsupport-1.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:306becd6e22ab6e8e4f36b6bdafd9c92e867c98a5ce517b27fdd27760ee7ae41"}, {file = "twisted_iocpsupport-1.0.2-cp39-cp39-win32.whl", hash = "sha256:3c61742cb0bc6c1ac117a7e5f422c129832f0c295af49e01d8a6066df8cfc04d"}, {file = "twisted_iocpsupport-1.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:b435857b9efcbfc12f8c326ef0383f26416272260455bbca2cd8d8eca470c546"}, {file = "twisted_iocpsupport-1.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:7d972cfa8439bdcb35a7be78b7ef86d73b34b808c74be56dfa785c8a93b851bf"}, ] [[package]] name = "txredisapi" version = "1.4.10" description = "non-blocking redis client for python" optional = true python-versions = "*" files = [ {file = "txredisapi-1.4.10-py3-none-any.whl", hash = "sha256:0a6ea77f27f8cf092f907654f08302a97b48fa35f24e0ad99dfb74115f018161"}, {file = "txredisapi-1.4.10.tar.gz", hash = "sha256:7609a6af6ff4619a3189c0adfb86aeda789afba69eb59fc1e19ac0199e725395"}, ] [package.dependencies] six = "*" twisted = "*" [[package]] name = "types-bleach" version = "6.1.0.1" description = "Typing stubs for bleach" optional = false python-versions = ">=3.7" files = [ {file = "types-bleach-6.1.0.1.tar.gz", hash = "sha256:1e43c437e734a90efe4f40ebfe831057599568d3b275939ffbd6094848a18a27"}, {file = "types_bleach-6.1.0.1-py3-none-any.whl", hash = "sha256:f83f80e0709f13d809a9c79b958a1089df9b99e68059287beb196e38967e4ddf"}, ] [[package]] name = "types-commonmark" version = "0.9.2.20240106" description = "Typing stubs for commonmark" optional = false python-versions = ">=3.8" files = [ {file = "types-commonmark-0.9.2.20240106.tar.gz", hash = "sha256:52a062b71766d6ab258fca2d8e19fb0853796e25ca9afa9d0f67a1e42c93479f"}, {file = "types_commonmark-0.9.2.20240106-py3-none-any.whl", hash = "sha256:606d9de1e3a96cab0b1c0b6cccf4df099116148d1d864d115fde2e27ad6877c3"}, ] [[package]] name = "types-jsonschema" version = "4.21.0.20240118" description = "Typing stubs for jsonschema" optional = false python-versions = ">=3.8" files = [ {file = "types-jsonschema-4.21.0.20240118.tar.gz", hash = "sha256:31aae1b5adc0176c1155c2d4f58348b22d92ae64315e9cc83bd6902168839232"}, {file = "types_jsonschema-4.21.0.20240118-py3-none-any.whl", hash = "sha256:77a4ac36b0be4f24274d5b9bf0b66208ee771c05f80e34c4641de7d63e8a872d"}, ] [package.dependencies] referencing = "*" [[package]] name = "types-netaddr" version = "0.10.0.20240106" description = "Typing stubs for netaddr" optional = false python-versions = ">=3.8" files = [ {file = "types-netaddr-0.10.0.20240106.tar.gz", hash = "sha256:7cc6c16bc76f57faf4a042184f748a05e9642b189caf7fe7e36c07cb87c057b3"}, {file = "types_netaddr-0.10.0.20240106-py3-none-any.whl", hash = "sha256:0acd8116293b06abe66484cf033c2d597f039326c28e3df83b8abd5709f6c65d"}, ] [[package]] name = "types-opentracing" version = "2.4.10.6" description = "Typing stubs for opentracing" optional = false python-versions = "*" files = [ {file = "types-opentracing-2.4.10.6.tar.gz", hash = "sha256:87a1bdfce9de5e555e30497663583b9b9c3bb494d029ef9806aa1f137c19e744"}, {file = "types_opentracing-2.4.10.6-py3-none-any.whl", hash = "sha256:25914c834db033a4a38fc322df0b5e5e14503b0ac97f78304ae180d721555e97"}, ] [[package]] name = "types-pillow" version = "10.1.0.2" description = "Typing stubs for Pillow" optional = false python-versions = ">=3.7" files = [ {file = "types-Pillow-10.1.0.2.tar.gz", hash = "sha256:525c1c5ee67b0ac1721c40d2bc618226ef2123c347e527e14e05b920721a13b9"}, {file = "types_Pillow-10.1.0.2-py3-none-any.whl", hash = "sha256:131078ffa547bf9a201d39ffcdc65633e108148085f4f1b07d4647fcfec6e923"}, ] [[package]] name = "types-psycopg2" version = "2.9.21.16" description = "Typing stubs for psycopg2" optional = false python-versions = ">=3.7" files = [ {file = "types-psycopg2-2.9.21.16.tar.gz", hash = "sha256:44a3ae748173bb637cff31654d6bd12de9ad0c7ad73afe737df6152830ed82ed"}, {file = "types_psycopg2-2.9.21.16-py3-none-any.whl", hash = "sha256:e2f24b651239ccfda320ab3457099af035cf37962c36c9fa26a4dc65991aebed"}, ] [[package]] name = "types-pyopenssl" version = "23.3.0.0" description = "Typing stubs for pyOpenSSL" optional = false python-versions = ">=3.7" files = [ {file = "types-pyOpenSSL-23.3.0.0.tar.gz", hash = "sha256:5ffb077fe70b699c88d5caab999ae80e192fe28bf6cda7989b7e79b1e4e2dcd3"}, {file = "types_pyOpenSSL-23.3.0.0-py3-none-any.whl", hash = "sha256:00171433653265843b7469ddb9f3c86d698668064cc33ef10537822156130ebf"}, ] [package.dependencies] cryptography = ">=35.0.0" [[package]] name = "types-pyyaml" version = "6.0.12.12" description = "Typing stubs for PyYAML" optional = false python-versions = "*" files = [ {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"}, {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"}, ] [[package]] name = "types-requests" version = "2.31.0.10" description = "Typing stubs for requests" optional = false python-versions = ">=3.7" files = [ {file = "types-requests-2.31.0.10.tar.gz", hash = "sha256:dc5852a76f1eaf60eafa81a2e50aefa3d1f015c34cf0cba130930866b1b22a92"}, {file = "types_requests-2.31.0.10-py3-none-any.whl", hash = "sha256:b32b9a86beffa876c0c3ac99a4cd3b8b51e973fb8e3bd4e0a6bb32c7efad80fc"}, ] [package.dependencies] urllib3 = ">=2" [[package]] name = "types-setuptools" version = "69.0.0.0" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.7" files = [ {file = "types-setuptools-69.0.0.0.tar.gz", hash = "sha256:b0a06219f628c6527b2f8ce770a4f47550e00d3e8c3ad83e2dc31bc6e6eda95d"}, {file = "types_setuptools-69.0.0.0-py3-none-any.whl", hash = "sha256:8c86195bae2ad81e6dea900a570fe9d64a59dbce2b11cc63c046b03246ea77bf"}, ] [[package]] name = "typing-extensions" version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "unpaddedbase64" version = "2.1.0" description = "Encode and decode Base64 without \"=\" padding" optional = false python-versions = ">=3.6,<4.0" files = [ {file = "unpaddedbase64-2.1.0-py3-none-any.whl", hash = "sha256:485eff129c30175d2cd6f0cd8d2310dff51e666f7f36175f738d75dfdbd0b1c6"}, {file = "unpaddedbase64-2.1.0.tar.gz", hash = "sha256:7273c60c089de39d90f5d6d4a7883a79e319dc9d9b1c8924a7fab96178a5f005"}, ] [[package]] name = "urllib3" version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" files = [ {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" optional = false python-versions = "*" files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] [[package]] name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, ] [[package]] name = "xmlschema" version = "2.4.0" description = "An XML Schema validator and decoder" optional = true python-versions = ">=3.7" files = [ {file = "xmlschema-2.4.0-py3-none-any.whl", hash = "sha256:dc87be0caaa61f42649899189aab2fd8e0d567f2cf548433ba7b79278d231a4a"}, {file = "xmlschema-2.4.0.tar.gz", hash = "sha256:d74cd0c10866ac609e1ef94a5a69b018ad16e39077bc6393408b40c6babee793"}, ] [package.dependencies] elementpath = ">=4.1.5,<5.0.0" [package.extras] codegen = ["elementpath (>=4.1.5,<5.0.0)", "jinja2"] dev = ["Sphinx", "coverage", "elementpath (>=4.1.5,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] [[package]] name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.7" files = [ {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "zope-event" version = "4.6" description = "Very basic event publishing system" optional = false python-versions = "*" files = [ {file = "zope.event-4.6-py2.py3-none-any.whl", hash = "sha256:73d9e3ef750cca14816a9c322c7250b0d7c9dbc337df5d1b807ff8d3d0b9e97c"}, {file = "zope.event-4.6.tar.gz", hash = "sha256:81d98813046fc86cc4136e3698fee628a3282f9c320db18658c21749235fce80"}, ] [package.dependencies] setuptools = "*" [package.extras] docs = ["Sphinx"] test = ["zope.testrunner"] [[package]] name = "zope-interface" version = "6.0" description = "Interfaces for Python" optional = false python-versions = ">=3.7" files = [ {file = "zope.interface-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990"}, {file = "zope.interface-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d"}, {file = "zope.interface-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85"}, {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995"}, {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f"}, {file = "zope.interface-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410"}, {file = "zope.interface-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28"}, {file = "zope.interface-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52"}, {file = "zope.interface-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30"}, {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464"}, {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518"}, {file = "zope.interface-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb"}, {file = "zope.interface-6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788"}, {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca"}, {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a"}, {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc"}, {file = "zope.interface-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373"}, {file = "zope.interface-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f"}, {file = "zope.interface-6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8"}, {file = "zope.interface-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58"}, {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446"}, {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f"}, {file = "zope.interface-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8"}, {file = "zope.interface-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2"}, {file = "zope.interface-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c"}, {file = "zope.interface-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5"}, {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8"}, {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2"}, {file = "zope.interface-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5"}, {file = "zope.interface-6.0.tar.gz", hash = "sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d"}, ] [package.dependencies] setuptools = "*" [package.extras] docs = ["Sphinx", "repoze.sphinx.autointerface"] test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [[package]] name = "zope-schema" version = "7.0.1" description = "zope.interface extension for defining data schemas" optional = false python-versions = ">=3.7" files = [ {file = "zope.schema-7.0.1-py3-none-any.whl", hash = "sha256:cf006c678793b00e0075ad54d55281c8785ea21e5bc1f5ec0584787719c2aab2"}, {file = "zope.schema-7.0.1.tar.gz", hash = "sha256:ead4dbcb03354d4e410c9a3b904451eb44d90254751b1cbdedf4a61aede9fbb9"}, ] [package.dependencies] setuptools = "*" "zope.event" = "*" "zope.interface" = ">=5.0.0" [package.extras] docs = ["Sphinx", "repoze.sphinx.autointerface"] test = ["zope.i18nmessageid", "zope.testing", "zope.testrunner"] [extras] all = ["Pympler", "authlib", "hiredis", "jaeger-client", "lxml", "matrix-synapse-ldap3", "opentracing", "psycopg2", "psycopg2cffi", "psycopg2cffi-compat", "pyicu", "pysaml2", "sentry-sdk", "txredisapi"] cache-memory = ["Pympler"] jwt = ["authlib"] matrix-synapse-ldap3 = ["matrix-synapse-ldap3"] oidc = ["authlib"] opentracing = ["jaeger-client", "opentracing"] postgres = ["psycopg2", "psycopg2cffi", "psycopg2cffi-compat"] redis = ["hiredis", "txredisapi"] saml2 = ["pysaml2"] sentry = ["sentry-sdk"] systemd = ["systemd-python"] test = ["idna", "parameterized"] url-preview = ["lxml"] user-search = ["pyicu"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" content-hash = "053bda662e95c273f4eda41d7ece8de0e404783ac66d54cdbedc396e196fb63a" synapse-1.100.0/pylint.cfg000066400000000000000000000207361455622526000153520ustar00rootroot00000000000000[MASTER] # Specify a configuration file. #rcfile= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook= # Profiled execution. profile=no # Add files or directories to the blacklist. They should be base names, not # paths. ignore=CVS # Pickle collected data for later comparisons. persistent=yes # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= [MESSAGES CONTROL] # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time. See also the "--disable" option for examples. #enable= # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifiers separated by comma (,) or put this # option multiple times (only on the command line, not in the configuration # file where it should appear only once).You can also use "--disable=all" to # disable everything first and then reenable specific checks. For example, if # you want to run only the similarities checker, you can use "--disable=all # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" disable=missing-docstring [REPORTS] # Set the output format. Available formats are text, parseable, colorized, msvs # (visual studio) and html. You can also give a reporter class, eg # mypackage.mymodule.MyReporterClass. output-format=text # Put messages in a separate file for each module / package specified on the # command line instead of printing them on stdout. Reports (if any) will be # written in a file name "pylint_global.[txt|html]". files-output=no # Tells whether to display a full report or only the messages reports=yes # Python expression which should return a note less than 10 (10 is the highest # note). You have access to the variables errors warning, statement which # respectively contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (RP0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Add a comment according to your evaluation note. This is used by the global # evaluation report (RP0004). comment=no # Template used to display messages. This is a python new-style format string # used to format the message information. See doc for all details #msg-template= [TYPECHECK] # Tells whether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # List of classes names for which member attributes should not be checked # (useful for classes with attributes dynamically set). ignored-classes=SQLObject # When zope mode is activated, add a predefined set of Zope acquired attributes # to generated-members. zope=no # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E0201 when accessed. Python regular # expressions are accepted. generated-members=REQUEST,acl_users,aq_parent [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME,XXX,TODO [SIMILARITIES] # Minimum lines number of a similarity. min-similarity-lines=4 # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # Ignore imports when computing similarities. ignore-imports=no [VARIABLES] # Tells whether we should check for unused import in __init__ files. init-import=no # A regular expression matching the beginning of the name of dummy variables # (i.e. not used). dummy-variables-rgx=_$|dummy # List of additional names supposed to be defined in builtins. Remember that # you should avoid to define new builtins when possible. additional-builtins= [BASIC] # Required attributes for module, separated by a comma required-attributes= # List of builtins function names that should not be used, separated by a comma bad-functions=map,filter,apply,input # Regular expression which should only match correct module names module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ # Regular expression which should only match correct module level names const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ # Regular expression which should only match correct class names class-rgx=[A-Z_][a-zA-Z0-9]+$ # Regular expression which should only match correct function names function-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct method names method-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct instance attribute names attr-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct argument names argument-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct variable names variable-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct attribute names in class # bodies class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ # Regular expression which should only match correct list comprehension / # generator expression variable names inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ # Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_ # Bad variable names which should always be refused, separated by a comma bad-names=foo,bar,baz,toto,tutu,tata # Regular expression which should only match function or class names that do # not require a docstring. no-docstring-rgx=__.*__ # Minimum line length for functions/classes that require docstrings, shorter # ones are exempt. docstring-min-length=-1 [FORMAT] # Maximum number of characters on a single line. max-line-length=80 # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ # Allow the body of an if to be on the same line as the test if there is no # else. single-line-if-stmt=no # List of optional constructs for which whitespace checking is disabled no-space-check=trailing-comma,dict-separator # Maximum number of lines in a module max-module-lines=1000 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' [DESIGN] # Maximum number of arguments for function / method max-args=5 # Argument names that match this expression will be ignored. Default to name # with leading underscore ignored-argument-names=_.* # Maximum number of locals for function / method body max-locals=15 # Maximum number of return / yield for function / method body max-returns=6 # Maximum number of branch for function / method body max-branches=12 # Maximum number of statements in function / method body max-statements=50 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Minimum number of public methods for a class (see R0903). min-public-methods=2 # Maximum number of public methods for a class (see R0904). max-public-methods=20 [IMPORTS] # Deprecated modules which should not be used, separated by a comma deprecated-modules=regsub,TERMIOS,Bastion,rexec # Create a graph of every (i.e. internal and external) dependencies in the # given file (report RP0402 must not be disabled) import-graph= # Create a graph of external dependencies in the given file (report RP0402 must # not be disabled) ext-import-graph= # Create a graph of internal dependencies in the given file (report RP0402 must # not be disabled) int-import-graph= [CLASSES] # List of interface methods to ignore, separated by a comma. This is used for # instance to not check methods defines in Zope's Interface base class. ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__,__new__,setUp # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls # List of valid names for the first argument in a metaclass class method. valid-metaclass-classmethod-first-arg=mcs [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "Exception" overgeneral-exceptions=Exception synapse-1.100.0/pyproject.toml000066400000000000000000000366171455622526000162730ustar00rootroot00000000000000[tool.towncrier] package = "synapse" filename = "CHANGES.md" directory = "changelog.d" issue_format = "[\\#{issue}](https://github.com/element-hq/synapse/issues/{issue})" [[tool.towncrier.type]] directory = "feature" name = "Features" showcontent = true [[tool.towncrier.type]] directory = "bugfix" name = "Bugfixes" showcontent = true [[tool.towncrier.type]] directory = "docker" name = "Updates to the Docker image" showcontent = true [[tool.towncrier.type]] directory = "doc" name = "Improved Documentation" showcontent = true [[tool.towncrier.type]] directory = "removal" name = "Deprecations and Removals" showcontent = true [[tool.towncrier.type]] directory = "misc" name = "Internal Changes" showcontent = true [tool.black] target-version = ['py38', 'py39', 'py310', 'py311'] # black ignores everything in .gitignore by default, see # https://black.readthedocs.io/en/stable/usage_and_configuration/file_collection_and_discovery.html#gitignore # Use `extend-exclude` if you want to exclude something in addition to this. [tool.ruff] line-length = 88 # See https://beta.ruff.rs/docs/rules/#error-e # for error codes. The ones we ignore are: # E501: Line too long (black enforces this for us) # E731: do not assign a lambda expression, use a def # # flake8-bugbear compatible checks. Its error codes are described at # https://beta.ruff.rs/docs/rules/#flake8-bugbear-b # B023: Functions defined inside a loop must not use variables redefined in the loop ignore = [ "B023", "E501", "E731", ] select = [ # pycodestyle "E", "W", # pyflakes "F", # flake8-bugbear "B0", # flake8-comprehensions "C4", # flake8-2020 "YTT", # flake8-slots "SLOT", # flake8-debugger "T10", # flake8-pie "PIE", # flake8-executable "EXE", ] [tool.isort] line_length = 88 sections = ["FUTURE", "STDLIB", "THIRDPARTY", "TWISTED", "FIRSTPARTY", "TESTS", "LOCALFOLDER"] default_section = "THIRDPARTY" known_first_party = ["synapse"] known_tests = ["tests"] known_twisted = ["twisted", "OpenSSL"] multi_line_output = 3 include_trailing_comma = true combine_as_imports = true skip_gitignore = true [tool.maturin] manifest-path = "rust/Cargo.toml" module-name = "synapse.synapse_rust" [tool.poetry] name = "matrix-synapse" version = "1.100.0" description = "Homeserver for the Matrix decentralised comms protocol" authors = ["Matrix.org Team and Contributors "] license = "AGPL-3.0-or-later" readme = "README.rst" repository = "https://github.com/element-hq/synapse" packages = [ { include = "synapse" }, ] classifiers = [ "Development Status :: 5 - Production/Stable", "Topic :: Communications :: Chat", ] include = [ { path = "AUTHORS.rst", format = "sdist" }, { path = "book.toml", format = "sdist" }, { path = "changelog.d", format = "sdist" }, { path = "CHANGES.md", format = "sdist" }, { path = "CONTRIBUTING.md", format = "sdist" }, { path = "demo", format = "sdist" }, { path = "docs", format = "sdist" }, { path = "INSTALL.md", format = "sdist" }, { path = "mypy.ini", format = "sdist" }, { path = "scripts-dev", format = "sdist" }, { path = "synmark", format="sdist" }, { path = "sytest-blacklist", format = "sdist" }, { path = "tests", format = "sdist" }, { path = "UPGRADE.rst", format = "sdist" }, { path = "Cargo.toml", format = "sdist" }, { path = "Cargo.lock", format = "sdist" }, { path = "rust/Cargo.toml", format = "sdist" }, { path = "rust/build.rs", format = "sdist" }, { path = "rust/src/**", format = "sdist" }, ] exclude = [ { path = "synapse/*.so", format = "sdist"} ] [tool.poetry.build] script = "build_rust.py" generate-setup-file = true [tool.poetry.scripts] synapse_homeserver = "synapse.app.homeserver:main" synapse_worker = "synapse.app.generic_worker:main" synctl = "synapse._scripts.synctl:main" export_signing_key = "synapse._scripts.export_signing_key:main" generate_config = "synapse._scripts.generate_config:main" generate_log_config = "synapse._scripts.generate_log_config:main" generate_signing_key = "synapse._scripts.generate_signing_key:main" hash_password = "synapse._scripts.hash_password:main" register_new_matrix_user = "synapse._scripts.register_new_matrix_user:main" synapse_port_db = "synapse._scripts.synapse_port_db:main" synapse_review_recent_signups = "synapse._scripts.review_recent_signups:main" update_synapse_database = "synapse._scripts.update_synapse_database:main" [tool.poetry.dependencies] python = "^3.8.0" # Mandatory Dependencies # ---------------------- # we use the TYPE_CHECKER.redefine method added in jsonschema 3.0.0 jsonschema = ">=3.0.0" # We choose 2.0 as a lower bound: the most recent backwards incompatible release. # It seems generally available, judging by https://pkgs.org/search/?q=immutabledict immutabledict = ">=2.0" # We require 2.1.0 or higher for type hints. Previous guard was >= 1.1.0 unpaddedbase64 = ">=2.1.0" # We require 2.0.0 for immutabledict support. canonicaljson = "^2.0.0" # we use the type definitions added in signedjson 1.1. signedjson = "^1.1.0" # validating SSL certs for IP addresses requires service_identity 18.1. service-identity = ">=18.1.0" # Twisted 18.9 introduces some logger improvements that the structured # logger utilises Twisted = {extras = ["tls"], version = ">=18.9.0"} treq = ">=15.1" # Twisted has required pyopenssl 16.0 since about Twisted 16.6. pyOpenSSL = ">=16.0.0" PyYAML = ">=3.13" pyasn1 = ">=0.1.9" pyasn1-modules = ">=0.0.7" bcrypt = ">=3.1.7" # 10.0.1 minimum is mandatory here because of libwebp CVE-2023-4863. # Packagers that already took care of libwebp can lower that down to 5.4.0. Pillow = ">=10.0.1" # We use SortedDict.peekitem(), which was added in sortedcontainers 1.5.2. sortedcontainers = ">=1.5.2" pymacaroons = ">=0.13.0" msgpack = ">=0.5.2" phonenumbers = ">=8.2.0" # we use GaugeHistogramMetric, which was added in prom-client 0.4.0. prometheus-client = ">=0.4.0" # we use `order`, which arrived in attrs 19.2.0. # Note: 21.1.0 broke `/sync`, see https://github.com/matrix-org/synapse/issues/9936 attrs = ">=19.2.0,!=21.1.0" netaddr = ">=0.7.18" # Jinja 2.x is incompatible with MarkupSafe>=2.1. To ensure that admins do not # end up with a broken installation, with recent MarkupSafe but old Jinja, we # add a lower bound to the Jinja2 dependency. Jinja2 = ">=3.0" bleach = ">=1.4.3" # We use `ParamSpec` and `Concatenate`, which were added in `typing-extensions` 3.10.0.0. # Additionally we need https://github.com/python/typing/pull/817 to allow types to be # generic over ParamSpecs. typing-extensions = ">=3.10.0.1" # We enforce that we have a `cryptography` version that bundles an `openssl` # with the latest security patches. cryptography = ">=3.4.7" # ijson 3.1.4 fixes a bug with "." in property names ijson = ">=3.1.4" matrix-common = "^1.3.0" # We need packaging.verison.Version(...).major added in 20.0. packaging = ">=20.0" # We support pydantic v1 and pydantic v2 via the pydantic.v1 compat module. # See https://github.com/matrix-org/synapse/issues/15858 pydantic = ">=1.7.4, <3" # This is for building the rust components during "poetry install", which # currently ignores the `build-system.requires` directive (c.f. # https://github.com/python-poetry/poetry/issues/6154). Both `pip install` and # `poetry build` do the right thing without this explicit dependency. # # This isn't really a dev-dependency, as `poetry install --no-dev` will fail, # but the alternative is to add it to the main list of deps where it isn't # needed. setuptools_rust = ">=1.3" # Optional Dependencies # --------------------- matrix-synapse-ldap3 = { version = ">=0.1", optional = true } psycopg2 = { version = ">=2.8", markers = "platform_python_implementation != 'PyPy'", optional = true } psycopg2cffi = { version = ">=2.8", markers = "platform_python_implementation == 'PyPy'", optional = true } psycopg2cffi-compat = { version = "==1.1", markers = "platform_python_implementation == 'PyPy'", optional = true } pysaml2 = { version = ">=4.5.0", optional = true } authlib = { version = ">=0.15.1", optional = true } # systemd-python is necessary for logging to the systemd journal via # `systemd.journal.JournalHandler`, as is documented in # `contrib/systemd/log_config.yaml`. # Note: systemd-python 231 appears to have been yanked from pypi systemd-python = { version = ">=231", optional = true } lxml = { version = ">=4.2.0", optional = true } sentry-sdk = { version = ">=0.7.2", optional = true } opentracing = { version = ">=2.2.0", optional = true } jaeger-client = { version = ">=4.0.0", optional = true } txredisapi = { version = ">=1.4.7", optional = true } hiredis = { version = "*", optional = true } Pympler = { version = "*", optional = true } parameterized = { version = ">=0.7.4", optional = true } idna = { version = ">=2.5", optional = true } pyicu = { version = ">=2.10.2", optional = true } [tool.poetry.extras] # NB: Packages that should be part of `pip install matrix-synapse[all]` need to be specified # twice: once here, and once in the `all` extra. matrix-synapse-ldap3 = ["matrix-synapse-ldap3"] postgres = ["psycopg2", "psycopg2cffi", "psycopg2cffi-compat"] saml2 = ["pysaml2"] oidc = ["authlib"] # systemd-python is necessary for logging to the systemd journal via # `systemd.journal.JournalHandler`, as is documented in # `contrib/systemd/log_config.yaml`. systemd = ["systemd-python"] url-preview = ["lxml"] sentry = ["sentry-sdk"] opentracing = ["jaeger-client", "opentracing"] jwt = ["authlib"] # hiredis is not a *strict* dependency, but it makes things much faster. # (if it is not installed, we fall back to slow code.) redis = ["txredisapi", "hiredis"] # Required to use experimental `caches.track_memory_usage` config option. cache-memory = ["pympler"] test = ["parameterized", "idna"] # Allows for better search for international characters in the user directory. This # requires libicu's development headers installed on the system (e.g. libicu-dev on # Debian-based distributions). user-search = ["pyicu"] # The duplication here is awful. I hate hate hate hate hate it. However, for now I want # to ensure you can still `pip install matrix-synapse[all]` like today. Two motivations: # 1) for new installations, I want instructions in existing documentation and tutorials # out there to still work. # 2) I don't want to hard-code a list of extras into CI if I can help it. The ideal # solution here would be something like https://github.com/python-poetry/poetry/issues/3413 # Poetry 1.2's dependency groups might make this easier. But I'm not trying that out # until there's a stable release of 1.2. # # NB: the strings in this list must be *package* names, not extra names. # Some of our extra names _are_ package names, which can lead to great confusion. all = [ # matrix-synapse-ldap3 "matrix-synapse-ldap3", # postgres "psycopg2", "psycopg2cffi", "psycopg2cffi-compat", # saml2 "pysaml2", # oidc and jwt "authlib", # url-preview "lxml", # sentry "sentry-sdk", # opentracing "jaeger-client", "opentracing", # redis "txredisapi", "hiredis", # cache-memory "pympler", # improved user search "pyicu", # omitted: # - test: it's useful to have this separate from dev deps in the olddeps job # - systemd: this is a system-based requirement ] [tool.poetry.dev-dependencies] # We pin development dependencies in poetry.lock so that our tests don't start # failing on new releases. Keeping lower bounds loose here means that dependabot # can bump versions without having to update the content-hash in the lockfile. # This helps prevents merge conflicts when running a batch of dependabot updates. isort = ">=5.10.1" black = ">=22.7.0" ruff = "0.1.14" # Type checking only works with the pydantic.v1 compat module from pydantic v2 pydantic = "^2" # Typechecking lxml-stubs = ">=0.4.0" mypy = "*" mypy-zope = "*" types-bleach = ">=4.1.0" types-commonmark = ">=0.9.2" types-jsonschema = ">=3.2.0" types-netaddr = ">=0.8.0.6" types-opentracing = ">=2.4.2" types-Pillow = ">=8.3.4" types-psycopg2 = ">=2.9.9" types-pyOpenSSL = ">=20.0.7" types-PyYAML = ">=5.4.10" types-requests = ">=2.26.0" types-setuptools = ">=57.4.0" # Dependencies which are exclusively required by unit test code. This is # NOT a list of all modules that are necessary to run the unit tests. # Tests assume that all optional dependencies are installed. # parameterized<0.7.4 can create classes with names that would normally be invalid # identifiers. trial really does not like this when running with multiple workers. parameterized = ">=0.7.4" idna = ">=2.5" # The following are used by the release script click = ">=8.1.3" # GitPython was == 3.1.14; bumped to 3.1.20, the first release with type hints. GitPython = ">=3.1.20" commonmark = ">=0.9.1" pygithub = ">=1.55" # The following are executed as commands by the release script. twine = "*" # Towncrier min version comes from https://github.com/matrix-org/synapse/pull/3425. Rationale unclear. towncrier = ">=18.6.0rc1" # Used for checking the Poetry lockfile tomli = ">=1.2.3" # Dependencies for building the development documentation [tool.poetry.group.dev-docs] optional = true [tool.poetry.group.dev-docs.dependencies] sphinx = {version = "^6.1", python = "^3.8"} sphinx-autodoc2 = {version = ">=0.4.2,<0.6.0", python = "^3.8"} myst-parser = {version = "^1.0.0", python = "^3.8"} furo = ">=2022.12.7,<2024.0.0" [build-system] # The upper bounds here are defensive, intended to prevent situations like # https://github.com/matrix-org/synapse/issues/13849 and # https://github.com/matrix-org/synapse/issues/14079 where we see buildtime or # runtime errors caused by build system changes. # We are happy to raise these upper bounds upon request, # provided we check that it's safe to do so (i.e. that CI passes). requires = ["poetry-core>=1.1.0,<=1.8.1", "setuptools_rust>=1.3,<=1.8.1"] build-backend = "poetry.core.masonry.api" [tool.cibuildwheel] # Skip unsupported platforms (by us or by Rust). # See https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip for the list of build targets. # We skip: # - CPython 3.6 and 3.7: EOLed # - PyPy 3.7: we only support Python 3.8+ # - musllinux i686: excluded to reduce number of wheels we build. # c.f. https://github.com/matrix-org/synapse/pull/12595#discussion_r963107677 # - PyPy on Aarch64 and musllinux on aarch64: too slow to build. # c.f. https://github.com/matrix-org/synapse/pull/14259 skip = "cp36* cp37* pp37* *-musllinux_i686 pp*aarch64 *-musllinux_aarch64" # We need a rust compiler before-all = "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y --profile minimal" environment= { PATH = "$PATH:$HOME/.cargo/bin" } # For some reason if we don't manually clean the build directory we # can end up polluting the next build with a .so that is for the wrong # Python version. before-build = "rm -rf {project}/build" build-frontend = "build" test-command = "python -c 'from synapse.synapse_rust import sum_as_string; print(sum_as_string(1, 2))'" [tool.cibuildwheel.linux] # Wrap the repair command to correctly rename the built cpython wheels as ABI3. repair-wheel-command = "./.ci/scripts/auditwheel_wrapper.py -w {dest_dir} {wheel}" [tool.cibuildwheel.macos] # Wrap the repair command to correctly rename the built cpython wheels as ABI3. repair-wheel-command = "./.ci/scripts/auditwheel_wrapper.py --require-archs {delocate_archs} -w {dest_dir} {wheel}" synapse-1.100.0/rust/000077500000000000000000000000001455622526000143375ustar00rootroot00000000000000synapse-1.100.0/rust/Cargo.toml000066400000000000000000000020721455622526000162700ustar00rootroot00000000000000[package] # We name the package `synapse` so that things like logging have the right # logging target. name = "synapse" # dummy version. See pyproject.toml for the Synapse's version number. version = "0.1.0" edition = "2021" rust-version = "1.65.0" [lib] name = "synapse" # We generate a `cdylib` for Python and a standard `lib` for running # tests/benchmarks. crate-type = ["lib", "cdylib"] # This is deprecated, see tool.maturin in pyproject.toml. # It is left here for compatibilty with maturin < 0.15. [package.metadata.maturin] # This is where we tell maturin where to place the built library. name = "synapse.synapse_rust" [dependencies] anyhow = "1.0.63" lazy_static = "1.4.0" log = "0.4.17" pyo3 = { version = "0.20.0", features = [ "macros", "anyhow", "abi3", "abi3-py38", ] } pyo3-log = "0.9.0" pythonize = "0.20.0" regex = "1.6.0" serde = { version = "1.0.144", features = ["derive"] } serde_json = "1.0.85" [features] extension-module = ["pyo3/extension-module"] default = ["extension-module"] [build-dependencies] blake2 = "0.10.4" hex = "0.4.3" synapse-1.100.0/rust/benches/000077500000000000000000000000001455622526000157465ustar00rootroot00000000000000synapse-1.100.0/rust/benches/evaluator.rs000066400000000000000000000125111455622526000203160ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright 2022 The Matrix.org Foundation C.I.C. * Copyright (C) 2023 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ #![feature(test)] use std::borrow::Cow; use synapse::push::{ evaluator::PushRuleEvaluator, Condition, EventMatchCondition, FilteredPushRules, JsonValue, PushRules, SimpleJsonValue, }; use test::Bencher; extern crate test; #[bench] fn bench_match_exact(b: &mut Bencher) { let flattened_keys = [ ( "type".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("m.text"))), ), ( "room_id".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("!room:server"))), ), ( "content.body".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("test message"))), ), ] .into_iter() .collect(); let eval = PushRuleEvaluator::py_new( flattened_keys, false, 10, Some(0), Default::default(), Default::default(), true, vec![], false, ) .unwrap(); let condition = Condition::Known(synapse::push::KnownCondition::EventMatch( EventMatchCondition { key: "room_id".into(), pattern: "!room:server".into(), }, )); let matched = eval.match_condition(&condition, None, None).unwrap(); assert!(matched, "Didn't match"); b.iter(|| eval.match_condition(&condition, None, None).unwrap()); } #[bench] fn bench_match_word(b: &mut Bencher) { let flattened_keys = [ ( "type".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("m.text"))), ), ( "room_id".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("!room:server"))), ), ( "content.body".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("test message"))), ), ] .into_iter() .collect(); let eval = PushRuleEvaluator::py_new( flattened_keys, false, 10, Some(0), Default::default(), Default::default(), true, vec![], false, ) .unwrap(); let condition = Condition::Known(synapse::push::KnownCondition::EventMatch( EventMatchCondition { key: "content.body".into(), pattern: "test".into(), }, )); let matched = eval.match_condition(&condition, None, None).unwrap(); assert!(matched, "Didn't match"); b.iter(|| eval.match_condition(&condition, None, None).unwrap()); } #[bench] fn bench_match_word_miss(b: &mut Bencher) { let flattened_keys = [ ( "type".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("m.text"))), ), ( "room_id".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("!room:server"))), ), ( "content.body".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("test message"))), ), ] .into_iter() .collect(); let eval = PushRuleEvaluator::py_new( flattened_keys, false, 10, Some(0), Default::default(), Default::default(), true, vec![], false, ) .unwrap(); let condition = Condition::Known(synapse::push::KnownCondition::EventMatch( EventMatchCondition { key: "content.body".into(), pattern: "foobar".into(), }, )); let matched = eval.match_condition(&condition, None, None).unwrap(); assert!(!matched, "Didn't match"); b.iter(|| eval.match_condition(&condition, None, None).unwrap()); } #[bench] fn bench_eval_message(b: &mut Bencher) { let flattened_keys = [ ( "type".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("m.text"))), ), ( "room_id".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("!room:server"))), ), ( "content.body".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("test message"))), ), ] .into_iter() .collect(); let eval = PushRuleEvaluator::py_new( flattened_keys, false, 10, Some(0), Default::default(), Default::default(), true, vec![], false, ) .unwrap(); let rules = FilteredPushRules::py_new( PushRules::new(Vec::new()), Default::default(), false, false, false, false, ); b.iter(|| eval.run(&rules, Some("bob"), Some("person"))); } synapse-1.100.0/rust/benches/glob.rs000066400000000000000000000024641455622526000172450ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright 2022 The Matrix.org Foundation C.I.C. * Copyright (C) 2023 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ #![feature(test)] use synapse::push::utils::{glob_to_regex, GlobMatchType}; use test::Bencher; extern crate test; #[bench] fn bench_whole(b: &mut Bencher) { b.iter(|| glob_to_regex("test", GlobMatchType::Whole)); } #[bench] fn bench_word(b: &mut Bencher) { b.iter(|| glob_to_regex("test", GlobMatchType::Word)); } #[bench] fn bench_whole_wildcard_run(b: &mut Bencher) { b.iter(|| glob_to_regex("test***??*?*?foo", GlobMatchType::Whole)); } #[bench] fn bench_word_wildcard_run(b: &mut Bencher) { b.iter(|| glob_to_regex("test***??*?*?foo", GlobMatchType::Whole)); } synapse-1.100.0/rust/build.rs000066400000000000000000000024241455622526000160060ustar00rootroot00000000000000//! This build script calculates the hash of all files in the `src/` //! directory and adds it as an environment variable during build time. //! //! This is used so that the python code can detect when the built native module //! does not match the source in-tree, helping to detect the case where the //! source has been updated but the library hasn't been rebuilt. use std::path::PathBuf; use blake2::{Blake2b512, Digest}; fn main() -> Result<(), std::io::Error> { let mut dirs = vec![PathBuf::from("src")]; let mut paths = Vec::new(); while let Some(path) = dirs.pop() { let mut entries = std::fs::read_dir(path)? .map(|res| res.map(|e| e.path())) .collect::, std::io::Error>>()?; entries.sort(); for entry in entries { if entry.is_dir() { dirs.push(entry); } else { paths.push(entry.to_str().expect("valid rust paths").to_string()); } } } paths.sort(); let mut hasher = Blake2b512::new(); for path in paths { let bytes = std::fs::read(path)?; hasher.update(bytes); } let hex_digest = hex::encode(hasher.finalize()); println!("cargo:rustc-env=SYNAPSE_RUST_DIGEST={hex_digest}"); Ok(()) } synapse-1.100.0/rust/src/000077500000000000000000000000001455622526000151265ustar00rootroot00000000000000synapse-1.100.0/rust/src/acl/000077500000000000000000000000001455622526000156655ustar00rootroot00000000000000synapse-1.100.0/rust/src/acl/mod.rs000066400000000000000000000060751455622526000170220ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright 2023 The Matrix.org Foundation C.I.C. * Copyright (C) 2023 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ //! An implementation of Matrix server ACL rules. use std::net::Ipv4Addr; use std::str::FromStr; use anyhow::Error; use pyo3::prelude::*; use regex::Regex; use crate::push::utils::{glob_to_regex, GlobMatchType}; /// Called when registering modules with python. pub fn register_module(py: Python<'_>, m: &PyModule) -> PyResult<()> { let child_module = PyModule::new(py, "acl")?; child_module.add_class::()?; m.add_submodule(child_module)?; // We need to manually add the module to sys.modules to make `from // synapse.synapse_rust import acl` work. py.import("sys")? .getattr("modules")? .set_item("synapse.synapse_rust.acl", child_module)?; Ok(()) } #[derive(Debug, Clone)] #[pyclass(frozen)] pub struct ServerAclEvaluator { allow_ip_literals: bool, allow: Vec, deny: Vec, } #[pymethods] impl ServerAclEvaluator { #[new] pub fn py_new( allow_ip_literals: bool, allow: Vec<&str>, deny: Vec<&str>, ) -> Result { let allow = allow .iter() .map(|s| glob_to_regex(s, GlobMatchType::Whole)) .collect::>()?; let deny = deny .iter() .map(|s| glob_to_regex(s, GlobMatchType::Whole)) .collect::>()?; Ok(ServerAclEvaluator { allow_ip_literals, allow, deny, }) } pub fn server_matches_acl_event(&self, server_name: &str) -> bool { // first of all, check if literal IPs are blocked, and if so, whether the // server name is a literal IP if !self.allow_ip_literals { // check for ipv6 literals. These start with '['. if server_name.starts_with('[') { return false; } // check for ipv4 literals. We can just lift the routine from std::net. if Ipv4Addr::from_str(server_name).is_ok() { return false; } } // next, check the deny list if self.deny.iter().any(|e| e.is_match(server_name)) { return false; } // then the allow list. if self.allow.iter().any(|e| e.is_match(server_name)) { return true; } // everything else should be rejected. false } } synapse-1.100.0/rust/src/events/000077500000000000000000000000001455622526000164325ustar00rootroot00000000000000synapse-1.100.0/rust/src/events/internal_metadata.rs000066400000000000000000000342241455622526000224610ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright (C) 2024 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ //! Implements the internal metadata class attached to events. //! //! The internal metadata is a bit like a `TypedDict`, in that it is stored as a //! JSON dict in the DB. Most events have zero, or only a few, of these keys //! set. Therefore, since we care more about memory size than performance here, //! we store these fields in a mapping. //! //! We want to store (most) of the fields as Rust objects, so we implement the //! mapping by using a vec of enums. This is less efficient than using //! attributes, but for small number of keys is actually faster than using a //! hash or btree map. use std::{num::NonZeroI64, ops::Deref}; use anyhow::Context; use log::warn; use pyo3::{ exceptions::PyAttributeError, pyclass, pymethods, types::{PyDict, PyString}, IntoPy, PyAny, PyObject, PyResult, Python, }; /// Definitions of the various fields of the internal metadata. #[derive(Clone)] enum EventInternalMetadataData { OutOfBandMembership(bool), SendOnBehalfOf(Box), RecheckRedaction(bool), SoftFailed(bool), ProactivelySend(bool), Redacted(bool), TxnId(Box), TokenId(i64), DeviceId(Box), } impl EventInternalMetadataData { /// Convert the field to its name and python object. fn to_python_pair<'a>(&self, py: Python<'a>) -> (&'a PyString, PyObject) { match self { EventInternalMetadataData::OutOfBandMembership(o) => { (pyo3::intern!(py, "out_of_band_membership"), o.into_py(py)) } EventInternalMetadataData::SendOnBehalfOf(o) => { (pyo3::intern!(py, "send_on_behalf_of"), o.into_py(py)) } EventInternalMetadataData::RecheckRedaction(o) => { (pyo3::intern!(py, "recheck_redaction"), o.into_py(py)) } EventInternalMetadataData::SoftFailed(o) => { (pyo3::intern!(py, "soft_failed"), o.into_py(py)) } EventInternalMetadataData::ProactivelySend(o) => { (pyo3::intern!(py, "proactively_send"), o.into_py(py)) } EventInternalMetadataData::Redacted(o) => { (pyo3::intern!(py, "redacted"), o.into_py(py)) } EventInternalMetadataData::TxnId(o) => (pyo3::intern!(py, "txn_id"), o.into_py(py)), EventInternalMetadataData::TokenId(o) => (pyo3::intern!(py, "token_id"), o.into_py(py)), EventInternalMetadataData::DeviceId(o) => { (pyo3::intern!(py, "device_id"), o.into_py(py)) } } } /// Converts from python key/values to the field. /// /// Returns `None` if the key is a valid but unrecognized string. fn from_python_pair(key: &PyAny, value: &PyAny) -> PyResult> { let key_str: &str = key.extract()?; let e = match key_str { "out_of_band_membership" => EventInternalMetadataData::OutOfBandMembership( value .extract() .with_context(|| format!("'{key_str}' has invalid type"))?, ), "send_on_behalf_of" => EventInternalMetadataData::SendOnBehalfOf( value .extract() .map(String::into_boxed_str) .with_context(|| format!("'{key_str}' has invalid type"))?, ), "recheck_redaction" => EventInternalMetadataData::RecheckRedaction( value .extract() .with_context(|| format!("'{key_str}' has invalid type"))?, ), "soft_failed" => EventInternalMetadataData::SoftFailed( value .extract() .with_context(|| format!("'{key_str}' has invalid type"))?, ), "proactively_send" => EventInternalMetadataData::ProactivelySend( value .extract() .with_context(|| format!("'{key_str}' has invalid type"))?, ), "redacted" => EventInternalMetadataData::Redacted( value .extract() .with_context(|| format!("'{key_str}' has invalid type"))?, ), "txn_id" => EventInternalMetadataData::TxnId( value .extract() .map(String::into_boxed_str) .with_context(|| format!("'{key_str}' has invalid type"))?, ), "token_id" => EventInternalMetadataData::TokenId( value .extract() .with_context(|| format!("'{key_str}' has invalid type"))?, ), "device_id" => EventInternalMetadataData::DeviceId( value .extract() .map(String::into_boxed_str) .with_context(|| format!("'{key_str}' has invalid type"))?, ), _ => return Ok(None), }; Ok(Some(e)) } } /// Helper macro to find the given field in internal metadata, returning None if /// not found. macro_rules! get_property_opt { ($self:expr, $name:ident) => { $self.data.iter().find_map(|entry| { if let EventInternalMetadataData::$name(data) = entry { Some(data) } else { None } }) }; } /// Helper macro to find the given field in internal metadata, raising an /// attribute error if not found. macro_rules! get_property { ($self:expr, $name:ident) => { get_property_opt!($self, $name).ok_or_else(|| { PyAttributeError::new_err(format!( "'EventInternalMetadata' has no attribute '{}'", stringify!($name), )) }) }; } /// Helper macro to set the give field. macro_rules! set_property { ($self:expr, $name:ident, $obj:expr) => { for entry in &mut $self.data { if let EventInternalMetadataData::$name(data) = entry { *data = $obj; return; } } $self.data.push(EventInternalMetadataData::$name($obj)) }; } #[pyclass] #[derive(Clone)] pub struct EventInternalMetadata { /// The fields of internal metadata. This functions as a mapping. data: Vec, /// The stream ordering of this event. None, until it has been persisted. #[pyo3(get, set)] stream_ordering: Option, /// whether this event is an outlier (ie, whether we have the state at that /// point in the DAG) #[pyo3(get, set)] outlier: bool, } #[pymethods] impl EventInternalMetadata { #[new] fn new(dict: &PyDict) -> PyResult { let mut data = Vec::with_capacity(dict.len()); for (key, value) in dict.iter() { match EventInternalMetadataData::from_python_pair(key, value) { Ok(Some(entry)) => data.push(entry), Ok(None) => {} Err(err) => { warn!("Ignoring internal metadata field '{key}', as failed to convert to Rust due to {err}") } } } data.shrink_to_fit(); Ok(EventInternalMetadata { data, stream_ordering: None, outlier: false, }) } fn copy(&self) -> Self { self.clone() } fn get_dict(&self, py: Python<'_>) -> PyResult { let dict = PyDict::new(py); for entry in &self.data { let (key, value) = entry.to_python_pair(py); dict.set_item(key, value)?; } Ok(dict.into()) } fn is_outlier(&self) -> bool { self.outlier } /// Whether this event is an out-of-band membership. /// /// OOB memberships are a special case of outlier events: they are /// membership events for federated rooms that we aren't full members of. /// Examples include invites received over federation, and rejections for /// such invites. /// /// The concept of an OOB membership is needed because these events need to /// be processed as if they're new regular events (e.g. updating membership /// state in the database, relaying to clients via /sync, etc) despite being /// outliers. /// /// See also /// https://element-hq.github.io/synapse/develop/development/room-dag-concepts.html#out-of-band-membership-events. /// /// (Added in synapse 0.99.0, so may be unreliable for events received /// before that) fn is_out_of_band_membership(&self) -> bool { get_property_opt!(self, OutOfBandMembership) .copied() .unwrap_or(false) } /// Whether this server should send the event on behalf of another server. /// This is used by the federation "send_join" API to forward the initial /// join event for a server in the room. /// /// returns a str with the name of the server this event is sent on behalf /// of. fn get_send_on_behalf_of(&self) -> Option<&str> { let s = get_property_opt!(self, SendOnBehalfOf); s.map(|a| a.deref()) } /// Whether the redaction event needs to be rechecked when fetching /// from the database. /// /// Starting in room v3 redaction events are accepted up front, and later /// checked to see if the redacter and redactee's domains match. /// /// If the sender of the redaction event is allowed to redact any event /// due to auth rules, then this will always return false. fn need_to_check_redaction(&self) -> bool { get_property_opt!(self, RecheckRedaction) .copied() .unwrap_or(false) } /// Whether the event has been soft failed. /// /// Soft failed events should be handled as usual, except: /// 1. They should not go down sync or event streams, or generally sent to /// clients. /// 2. They should not be added to the forward extremities (and therefore /// not to current state). fn is_soft_failed(&self) -> bool { get_property_opt!(self, SoftFailed) .copied() .unwrap_or(false) } /// Whether the event, if ours, should be sent to other clients and servers. /// /// This is used for sending dummy events internally. Servers and clients /// can still explicitly fetch the event. fn should_proactively_send(&self) -> bool { get_property_opt!(self, ProactivelySend) .copied() .unwrap_or(true) } /// Whether the event has been redacted. /// /// This is used for efficiently checking whether an event has been marked /// as redacted without needing to make another database call. fn is_redacted(&self) -> bool { get_property_opt!(self, Redacted).copied().unwrap_or(false) } /// Whether this event can trigger a push notification fn is_notifiable(&self) -> bool { !self.outlier || self.is_out_of_band_membership() } // ** The following are the getters and setters of the various properties ** #[getter] fn get_out_of_band_membership(&self) -> PyResult { let bool = get_property!(self, OutOfBandMembership)?; Ok(*bool) } #[setter] fn set_out_of_band_membership(&mut self, obj: bool) { set_property!(self, OutOfBandMembership, obj); } #[getter(send_on_behalf_of)] fn getter_send_on_behalf_of(&self) -> PyResult<&str> { let s = get_property!(self, SendOnBehalfOf)?; Ok(s) } #[setter] fn set_send_on_behalf_of(&mut self, obj: String) { set_property!(self, SendOnBehalfOf, obj.into_boxed_str()); } #[getter] fn get_recheck_redaction(&self) -> PyResult { let bool = get_property!(self, RecheckRedaction)?; Ok(*bool) } #[setter] fn set_recheck_redaction(&mut self, obj: bool) { set_property!(self, RecheckRedaction, obj); } #[getter] fn get_soft_failed(&self) -> PyResult { let bool = get_property!(self, SoftFailed)?; Ok(*bool) } #[setter] fn set_soft_failed(&mut self, obj: bool) { set_property!(self, SoftFailed, obj); } #[getter] fn get_proactively_send(&self) -> PyResult { let bool = get_property!(self, ProactivelySend)?; Ok(*bool) } #[setter] fn set_proactively_send(&mut self, obj: bool) { set_property!(self, ProactivelySend, obj); } #[getter] fn get_redacted(&self) -> PyResult { let bool = get_property!(self, Redacted)?; Ok(*bool) } #[setter] fn set_redacted(&mut self, obj: bool) { set_property!(self, Redacted, obj); } /// The transaction ID, if it was set when the event was created. #[getter] fn get_txn_id(&self) -> PyResult<&str> { let s = get_property!(self, TxnId)?; Ok(s) } #[setter] fn set_txn_id(&mut self, obj: String) { set_property!(self, TxnId, obj.into_boxed_str()); } /// The access token ID of the user who sent this event, if any. #[getter] fn get_token_id(&self) -> PyResult { let r = get_property!(self, TokenId)?; Ok(*r) } #[setter] fn set_token_id(&mut self, obj: i64) { set_property!(self, TokenId, obj); } /// The device ID of the user who sent this event, if any. #[getter] fn get_device_id(&self) -> PyResult<&str> { let s = get_property!(self, DeviceId)?; Ok(s) } #[setter] fn set_device_id(&mut self, obj: String) { set_property!(self, DeviceId, obj.into_boxed_str()); } } synapse-1.100.0/rust/src/events/mod.rs000066400000000000000000000024741455622526000175660ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright (C) 2024 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ //! Classes for representing Events. use pyo3::{types::PyModule, PyResult, Python}; mod internal_metadata; /// Called when registering modules with python. pub fn register_module(py: Python<'_>, m: &PyModule) -> PyResult<()> { let child_module = PyModule::new(py, "events")?; child_module.add_class::()?; m.add_submodule(child_module)?; // We need to manually add the module to sys.modules to make `from // synapse.synapse_rust import events` work. py.import("sys")? .getattr("modules")? .set_item("synapse.synapse_rust.events", child_module)?; Ok(()) } synapse-1.100.0/rust/src/lib.rs000066400000000000000000000023601455622526000162430ustar00rootroot00000000000000use lazy_static::lazy_static; use pyo3::prelude::*; use pyo3_log::ResetHandle; pub mod acl; pub mod events; pub mod push; lazy_static! { static ref LOGGING_HANDLE: ResetHandle = pyo3_log::init(); } /// Returns the hash of all the rust source files at the time it was compiled. /// /// Used by python to detect if the rust library is outdated. #[pyfunction] fn get_rust_file_digest() -> &'static str { env!("SYNAPSE_RUST_DIGEST") } /// Formats the sum of two numbers as string. #[pyfunction] #[pyo3(text_signature = "(a, b, /)")] fn sum_as_string(a: usize, b: usize) -> PyResult { Ok((a + b).to_string()) } /// Reset the cached logging configuration of pyo3-log to pick up any changes /// in the Python logging configuration. /// #[pyfunction] fn reset_logging_config() { LOGGING_HANDLE.reset(); } /// The entry point for defining the Python module. #[pymodule] fn synapse_rust(py: Python<'_>, m: &PyModule) -> PyResult<()> { m.add_function(wrap_pyfunction!(sum_as_string, m)?)?; m.add_function(wrap_pyfunction!(get_rust_file_digest, m)?)?; m.add_function(wrap_pyfunction!(reset_logging_config, m)?)?; acl::register_module(py, m)?; push::register_module(py, m)?; events::register_module(py, m)?; Ok(()) } synapse-1.100.0/rust/src/push/000077500000000000000000000000001455622526000161055ustar00rootroot00000000000000synapse-1.100.0/rust/src/push/base_rules.rs000066400000000000000000000713151455622526000206060ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright 2022, 2023 The Matrix.org Foundation C.I.C. * Copyright (C) 2023 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ //! Contains the definitions of the "base" push rules. use std::borrow::Cow; use std::collections::HashMap; use lazy_static::lazy_static; use serde_json::Value; use super::KnownCondition; use crate::push::RelatedEventMatchTypeCondition; use crate::push::SetTweak; use crate::push::TweakValue; use crate::push::{Action, EventPropertyIsCondition, SimpleJsonValue}; use crate::push::{Condition, EventMatchTypeCondition}; use crate::push::{EventMatchCondition, EventMatchPatternType}; use crate::push::{EventPropertyIsTypeCondition, PushRule}; const HIGHLIGHT_ACTION: Action = Action::SetTweak(SetTweak { set_tweak: Cow::Borrowed("highlight"), value: None, other_keys: Value::Null, }); const HIGHLIGHT_FALSE_ACTION: Action = Action::SetTweak(SetTweak { set_tweak: Cow::Borrowed("highlight"), value: Some(TweakValue::Other(Value::Bool(false))), other_keys: Value::Null, }); const SOUND_ACTION: Action = Action::SetTweak(SetTweak { set_tweak: Cow::Borrowed("sound"), value: Some(TweakValue::String(Cow::Borrowed("default"))), other_keys: Value::Null, }); const RING_ACTION: Action = Action::SetTweak(SetTweak { set_tweak: Cow::Borrowed("sound"), value: Some(TweakValue::String(Cow::Borrowed("ring"))), other_keys: Value::Null, }); pub const BASE_PREPEND_OVERRIDE_RULES: &[PushRule] = &[PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.master"), priority_class: 5, conditions: Cow::Borrowed(&[]), actions: Cow::Borrowed(&[]), default: true, default_enabled: false, }]; pub const BASE_APPEND_OVERRIDE_RULES: &[PushRule] = &[ PushRule { rule_id: Cow::Borrowed("global/override/.org.matrix.msc4028.encrypted_event"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.encrypted"), }, ))]), actions: Cow::Borrowed(&[Action::Notify]), default: true, default_enabled: false, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.suppress_notices"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("content.msgtype"), pattern: Cow::Borrowed("m.notice"), }, ))]), actions: Cow::Borrowed(&[]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.invite_for_me"), priority_class: 5, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.member"), })), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("content.membership"), pattern: Cow::Borrowed("invite"), })), Condition::Known(KnownCondition::EventMatchType(EventMatchTypeCondition { key: Cow::Borrowed("state_key"), pattern_type: Cow::Borrowed(&EventMatchPatternType::UserId), })), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION, SOUND_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.member_event"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.member"), }, ))]), actions: Cow::Borrowed(&[]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.im.nheko.msc3664.reply"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::RelatedEventMatchType( RelatedEventMatchTypeCondition { key: Cow::Borrowed("sender"), pattern_type: Cow::Borrowed(&EventMatchPatternType::UserId), rel_type: Cow::Borrowed("m.in_reply_to"), include_fallbacks: None, }, ))]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_ACTION, SOUND_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.is_user_mention"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known( KnownCondition::ExactEventPropertyContainsType(EventPropertyIsTypeCondition { key: Cow::Borrowed(r"content.m\.mentions.user_ids"), value_type: Cow::Borrowed(&EventMatchPatternType::UserId), }), )]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_ACTION, SOUND_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.contains_display_name"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::ContainsDisplayName)]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_ACTION, SOUND_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.is_room_mention"), priority_class: 5, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventPropertyIs(EventPropertyIsCondition { key: Cow::Borrowed(r"content.m\.mentions.room"), value: Cow::Owned(SimpleJsonValue::Bool(true)), })), Condition::Known(KnownCondition::SenderNotificationPermission { key: Cow::Borrowed("room"), }), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.roomnotif"), priority_class: 5, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::SenderNotificationPermission { key: Cow::Borrowed("room"), }), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("content.body"), pattern: Cow::Borrowed("@room"), })), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.tombstone"), priority_class: 5, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.tombstone"), })), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("state_key"), pattern: Cow::Borrowed(""), })), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.reaction"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.reaction"), }, ))]), actions: Cow::Borrowed(&[]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.room.server_acl"), priority_class: 5, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.server_acl"), })), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("state_key"), pattern: Cow::Borrowed(""), })), ]), actions: Cow::Borrowed(&[]), default: true, default_enabled: true, }, // We don't want to notify on edits *unless* the edit directly mentions a // user, which is handled above. PushRule { rule_id: Cow::Borrowed("global/override/.m.rule.suppress_edits"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventPropertyIs( EventPropertyIsCondition { key: Cow::Borrowed(r"content.m\.relates_to.rel_type"), value: Cow::Owned(SimpleJsonValue::Str(Cow::Borrowed("m.replace"))), }, ))]), actions: Cow::Borrowed(&[]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/override/.org.matrix.msc3930.rule.poll_response"), priority_class: 5, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("org.matrix.msc3381.poll.response"), }, ))]), actions: Cow::Borrowed(&[]), default: true, default_enabled: true, }, ]; pub const BASE_APPEND_CONTENT_RULES: &[PushRule] = &[PushRule { rule_id: Cow::Borrowed("global/content/.m.rule.contains_user_name"), priority_class: 4, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatchType( EventMatchTypeCondition { key: Cow::Borrowed("content.body"), pattern_type: Cow::Borrowed(&EventMatchPatternType::UserLocalpart), }, ))]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_ACTION, SOUND_ACTION]), default: true, default_enabled: true, }]; pub const BASE_APPEND_UNDERRIDE_RULES: &[PushRule] = &[ PushRule { rule_id: Cow::Borrowed("global/underride/.m.rule.call"), priority_class: 1, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.call.invite"), }, ))]), actions: Cow::Borrowed(&[Action::Notify, RING_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.m.rule.room_one_to_one"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.message"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.m.rule.encrypted_room_one_to_one"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.encrypted"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed( "global/underride/.org.matrix.msc3933.rule.extensible.encrypted_room_one_to_one", ), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("org.matrix.msc1767.encrypted"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed( "global/underride/.org.matrix.msc3933.rule.extensible.message.room_one_to_one", ), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("org.matrix.msc1767.message"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed( "global/underride/.org.matrix.msc3933.rule.extensible.file.room_one_to_one", ), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("org.matrix.msc1767.file"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed( "global/underride/.org.matrix.msc3933.rule.extensible.image.room_one_to_one", ), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("org.matrix.msc1767.image"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed( "global/underride/.org.matrix.msc3933.rule.extensible.video.room_one_to_one", ), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("org.matrix.msc1767.video"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed( "global/underride/.org.matrix.msc3933.rule.extensible.audio.room_one_to_one", ), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("org.matrix.msc1767.audio"), })), Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.m.rule.message"), priority_class: 1, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.message"), }, ))]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.m.rule.encrypted"), priority_class: 1, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("m.room.encrypted"), }, ))]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc1767.rule.extensible.encrypted"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("m.encrypted"), })), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc1767.rule.extensible.message"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("m.message"), })), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc1767.rule.extensible.file"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("m.file"), })), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc1767.rule.extensible.image"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("m.image"), })), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc1767.rule.extensible.video"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("m.video"), })), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc1767.rule.extensible.audio"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), // MSC3933: Type changed from template rule - see MSC. pattern: Cow::Borrowed("m.audio"), })), // MSC3933: Add condition on top of template rule - see MSC. Condition::Known(KnownCondition::RoomVersionSupports { // RoomVersionFeatures::ExtensibleEvents.as_str(), ideally feature: Cow::Borrowed("org.matrix.msc3932.extensible_events"), }), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.im.vector.jitsi"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("im.vector.modular.widgets"), })), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("content.type"), pattern: Cow::Borrowed("jitsi"), })), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("state_key"), pattern: Cow::Borrowed("*"), })), ]), actions: Cow::Borrowed(&[Action::Notify, HIGHLIGHT_FALSE_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc3930.rule.poll_start_one_to_one"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("org.matrix.msc3381.poll.start"), })), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc3930.rule.poll_start"), priority_class: 1, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("org.matrix.msc3381.poll.start"), }, ))]), actions: Cow::Borrowed(&[Action::Notify]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc3930.rule.poll_end_one_to_one"), priority_class: 1, conditions: Cow::Borrowed(&[ Condition::Known(KnownCondition::RoomMemberCount { is: Some(Cow::Borrowed("2")), }), Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("org.matrix.msc3381.poll.end"), })), ]), actions: Cow::Borrowed(&[Action::Notify, SOUND_ACTION]), default: true, default_enabled: true, }, PushRule { rule_id: Cow::Borrowed("global/underride/.org.matrix.msc3930.rule.poll_end"), priority_class: 1, conditions: Cow::Borrowed(&[Condition::Known(KnownCondition::EventMatch( EventMatchCondition { key: Cow::Borrowed("type"), pattern: Cow::Borrowed("org.matrix.msc3381.poll.end"), }, ))]), actions: Cow::Borrowed(&[Action::Notify]), default: true, default_enabled: true, }, ]; lazy_static! { pub static ref BASE_RULES_BY_ID: HashMap<&'static str, &'static PushRule> = BASE_PREPEND_OVERRIDE_RULES .iter() .chain(BASE_APPEND_OVERRIDE_RULES.iter()) .chain(BASE_APPEND_CONTENT_RULES.iter()) .chain(BASE_APPEND_UNDERRIDE_RULES.iter()) .map(|rule| { (&*rule.rule_id, rule) }) .collect(); } synapse-1.100.0/rust/src/push/evaluator.rs000066400000000000000000000505541455622526000204660ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright 2022 The Matrix.org Foundation C.I.C. * Copyright (C) 2023 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ use std::borrow::Cow; use std::collections::BTreeMap; use anyhow::{Context, Error}; use lazy_static::lazy_static; use log::warn; use pyo3::prelude::*; use regex::Regex; use super::{ utils::{get_glob_matcher, get_localpart_from_id, GlobMatchType}, Action, Condition, EventPropertyIsCondition, FilteredPushRules, KnownCondition, SimpleJsonValue, }; use crate::push::{EventMatchPatternType, JsonValue}; lazy_static! { /// Used to parse the `is` clause in the room member count condition. static ref INEQUALITY_EXPR: Regex = Regex::new(r"^([=<>]*)([0-9]+)$").expect("valid regex"); /// Used to determine which MSC3931 room version feature flags are actually known to /// the push evaluator. static ref KNOWN_RVER_FLAGS: Vec = vec![ RoomVersionFeatures::ExtensibleEvents.as_str().to_string(), ]; /// The "safe" rule IDs which are not affected by MSC3932's behaviour (room versions which /// declare Extensible Events support ultimately *disable* push rules which do not declare /// *any* MSC3931 room_version_supports condition). static ref SAFE_EXTENSIBLE_EVENTS_RULE_IDS: Vec = vec![ "global/override/.m.rule.master".to_string(), "global/override/.m.rule.roomnotif".to_string(), "global/content/.m.rule.contains_user_name".to_string(), ]; } enum RoomVersionFeatures { ExtensibleEvents, } impl RoomVersionFeatures { fn as_str(&self) -> &'static str { match self { RoomVersionFeatures::ExtensibleEvents => "org.matrix.msc3932.extensible_events", } } } /// Allows running a set of push rules against a particular event. #[pyclass] pub struct PushRuleEvaluator { /// A mapping of "flattened" keys to simple JSON values in the event, e.g. /// includes things like "type" and "content.msgtype". flattened_keys: BTreeMap, /// The "content.body", if any. body: String, /// True if the event has a m.mentions property. (Note that this is a separate /// flag instead of checking flattened_keys since the m.mentions property /// might be an empty map and not appear in flattened_keys. has_mentions: bool, /// The number of users in the room. room_member_count: u64, /// The `notifications` section of the current power levels in the room. notification_power_levels: BTreeMap, /// The power level of the sender of the event, or None if event is an /// outlier. sender_power_level: Option, /// The related events, indexed by relation type. Flattened in the same manner as /// `flattened_keys`. related_events_flattened: BTreeMap>, /// If msc3664, push rules for related events, is enabled. related_event_match_enabled: bool, /// If MSC3931 is applicable, the feature flags for the room version. room_version_feature_flags: Vec, /// If MSC3931 (room version feature flags) is enabled. Usually controlled by the same /// flag as MSC1767 (extensible events core). msc3931_enabled: bool, } #[pymethods] impl PushRuleEvaluator { /// Create a new `PushRuleEvaluator`. See struct docstring for details. #[allow(clippy::too_many_arguments)] #[new] #[pyo3(signature = ( flattened_keys, has_mentions, room_member_count, sender_power_level, notification_power_levels, related_events_flattened, related_event_match_enabled, room_version_feature_flags, msc3931_enabled, ))] pub fn py_new( flattened_keys: BTreeMap, has_mentions: bool, room_member_count: u64, sender_power_level: Option, notification_power_levels: BTreeMap, related_events_flattened: BTreeMap>, related_event_match_enabled: bool, room_version_feature_flags: Vec, msc3931_enabled: bool, ) -> Result { let body = match flattened_keys.get("content.body") { Some(JsonValue::Value(SimpleJsonValue::Str(s))) => s.clone().into_owned(), _ => String::new(), }; Ok(PushRuleEvaluator { flattened_keys, body, has_mentions, room_member_count, notification_power_levels, sender_power_level, related_events_flattened, related_event_match_enabled, room_version_feature_flags, msc3931_enabled, }) } /// Run the evaluator with the given push rules, for the given user ID and /// display name of the user. /// /// Passing in None will skip evaluating rules matching user ID and display /// name. /// /// Returns the set of actions, if any, that match (filtering out any /// `dont_notify` and `coalesce` actions). pub fn run( &self, push_rules: &FilteredPushRules, user_id: Option<&str>, display_name: Option<&str>, ) -> Vec { 'outer: for (push_rule, enabled) in push_rules.iter() { if !enabled { continue; } let rule_id = &push_rule.rule_id().to_string(); // For backwards-compatibility the legacy mention rules are disabled // if the event contains the 'm.mentions' property. if self.has_mentions && (rule_id == "global/override/.m.rule.contains_display_name" || rule_id == "global/content/.m.rule.contains_user_name" || rule_id == "global/override/.m.rule.roomnotif") { continue; } let extev_flag = &RoomVersionFeatures::ExtensibleEvents.as_str().to_string(); let supports_extensible_events = self.room_version_feature_flags.contains(extev_flag); let safe_from_rver_condition = SAFE_EXTENSIBLE_EVENTS_RULE_IDS.contains(rule_id); let mut has_rver_condition = false; for condition in push_rule.conditions.iter() { has_rver_condition |= matches!( condition, // per MSC3932, we just need *any* room version condition to match Condition::Known(KnownCondition::RoomVersionSupports { feature: _ }), ); match self.match_condition(condition, user_id, display_name) { Ok(true) => {} Ok(false) => continue 'outer, Err(err) => { warn!("Condition match failed {err}"); continue 'outer; } } } // MSC3932: Disable push rules in extensible event-supporting room versions if they // don't describe *any* MSC3931 room version condition, unless the rule is on the // safe list. if !has_rver_condition && !safe_from_rver_condition && supports_extensible_events { continue; } let actions = push_rule .actions .iter() // Filter out "dont_notify" and "coalesce" actions, as we don't store them // (since they result in no action by the pushers). .filter(|a| **a != Action::DontNotify && **a != Action::Coalesce) .cloned() .collect(); return actions; } Vec::new() } /// Check if the given condition matches. fn matches( &self, condition: Condition, user_id: Option<&str>, display_name: Option<&str>, ) -> bool { match self.match_condition(&condition, user_id, display_name) { Ok(true) => true, Ok(false) => false, Err(err) => { warn!("Condition match failed {err}"); false } } } } impl PushRuleEvaluator { /// Match a given `Condition` for a push rule. pub fn match_condition( &self, condition: &Condition, user_id: Option<&str>, display_name: Option<&str>, ) -> Result { let known_condition = match condition { Condition::Known(known) => known, Condition::Unknown(_) => { return Ok(false); } }; let result = match known_condition { KnownCondition::EventMatch(event_match) => self.match_event_match( &self.flattened_keys, &event_match.key, &event_match.pattern, )?, KnownCondition::EventMatchType(event_match) => { // The `pattern_type` can either be "user_id" or "user_localpart", // either way if we don't have a `user_id` then the condition can't // match. let user_id = if let Some(user_id) = user_id { user_id } else { return Ok(false); }; let pattern = match &*event_match.pattern_type { EventMatchPatternType::UserId => user_id, EventMatchPatternType::UserLocalpart => get_localpart_from_id(user_id)?, }; self.match_event_match(&self.flattened_keys, &event_match.key, pattern)? } KnownCondition::EventPropertyIs(event_property_is) => { self.match_event_property_is(event_property_is)? } KnownCondition::RelatedEventMatch(event_match) => self.match_related_event_match( &event_match.rel_type.clone(), event_match.include_fallbacks, event_match.key.clone(), event_match.pattern.clone(), )?, KnownCondition::RelatedEventMatchType(event_match) => { // The `pattern_type` can either be "user_id" or "user_localpart", // either way if we don't have a `user_id` then the condition can't // match. let user_id = if let Some(user_id) = user_id { user_id } else { return Ok(false); }; let pattern = match &*event_match.pattern_type { EventMatchPatternType::UserId => user_id, EventMatchPatternType::UserLocalpart => get_localpart_from_id(user_id)?, }; self.match_related_event_match( &event_match.rel_type.clone(), event_match.include_fallbacks, Some(event_match.key.clone()), Some(Cow::Borrowed(pattern)), )? } KnownCondition::EventPropertyContains(event_property_is) => self .match_event_property_contains( event_property_is.key.clone(), event_property_is.value.clone(), )?, KnownCondition::ExactEventPropertyContainsType(exact_event_match) => { // The `pattern_type` can either be "user_id" or "user_localpart", // either way if we don't have a `user_id` then the condition can't // match. let user_id = if let Some(user_id) = user_id { user_id } else { return Ok(false); }; let pattern = match &*exact_event_match.value_type { EventMatchPatternType::UserId => user_id.to_owned(), EventMatchPatternType::UserLocalpart => { get_localpart_from_id(user_id)?.to_owned() } }; self.match_event_property_contains( exact_event_match.key.clone(), Cow::Borrowed(&SimpleJsonValue::Str(Cow::Owned(pattern))), )? } KnownCondition::ContainsDisplayName => { if let Some(dn) = display_name { if !dn.is_empty() { get_glob_matcher(dn, GlobMatchType::Word)?.is_match(&self.body)? } else { // We specifically ignore empty display names, as otherwise // they would always match. false } } else { false } } KnownCondition::RoomMemberCount { is } => { if let Some(is) = is { self.match_member_count(is)? } else { false } } KnownCondition::SenderNotificationPermission { key } => { if let Some(sender_power_level) = &self.sender_power_level { let required_level = self .notification_power_levels .get(key.as_ref()) .copied() .unwrap_or(50); *sender_power_level >= required_level } else { false } } KnownCondition::RoomVersionSupports { feature } => { if !self.msc3931_enabled { false } else { let flag = feature.to_string(); KNOWN_RVER_FLAGS.contains(&flag) && self.room_version_feature_flags.contains(&flag) } } }; Ok(result) } /// Evaluates a `event_match` condition. fn match_event_match( &self, flattened_event: &BTreeMap, key: &str, pattern: &str, ) -> Result { let haystack = if let Some(JsonValue::Value(SimpleJsonValue::Str(haystack))) = flattened_event.get(key) { haystack } else { return Ok(false); }; // For the content.body we match against "words", but for everything // else we match against the entire value. let match_type = if key == "content.body" { GlobMatchType::Word } else { GlobMatchType::Whole }; let mut compiled_pattern = get_glob_matcher(pattern, match_type)?; compiled_pattern.is_match(haystack) } /// Evaluates a `event_property_is` condition. fn match_event_property_is( &self, event_property_is: &EventPropertyIsCondition, ) -> Result { let value = &event_property_is.value; let haystack = if let Some(JsonValue::Value(haystack)) = self.flattened_keys.get(&*event_property_is.key) { haystack } else { return Ok(false); }; Ok(haystack == &**value) } /// Evaluates a `related_event_match` condition. (MSC3664) fn match_related_event_match( &self, rel_type: &str, include_fallbacks: Option, key: Option>, pattern: Option>, ) -> Result { // First check if related event matching is enabled... if !self.related_event_match_enabled { return Ok(false); } // get the related event, fail if there is none. let event = if let Some(event) = self.related_events_flattened.get(rel_type) { event } else { return Ok(false); }; // If we are not matching fallbacks, don't match if our special key indicating this is a // fallback relation is not present. if !include_fallbacks.unwrap_or(false) && event.contains_key("im.vector.is_falling_back") { return Ok(false); } match (key, pattern) { // if we have no key, accept the event as matching. (None, _) => Ok(true), // There was a key, so we *must* have a pattern to go with it. (Some(_), None) => Ok(false), // If there is a key & pattern, check if they're in the flattened event (given by rel_type). (Some(key), Some(pattern)) => self.match_event_match(event, &key, &pattern), } } /// Evaluates a `event_property_contains` condition. fn match_event_property_contains( &self, key: Cow, value: Cow, ) -> Result { let haystack = if let Some(JsonValue::Array(haystack)) = self.flattened_keys.get(&*key) { haystack } else { return Ok(false); }; Ok(haystack.contains(&value)) } /// Match the member count against an 'is' condition /// The `is` condition can be things like '>2', '==3' or even just '4'. fn match_member_count(&self, is: &str) -> Result { let captures = INEQUALITY_EXPR.captures(is).context("bad 'is' clause")?; let ineq = captures.get(1).map_or("==", |m| m.as_str()); let rhs: u64 = captures .get(2) .context("missing number")? .as_str() .parse()?; let matches = match ineq { "" | "==" => self.room_member_count == rhs, "<" => self.room_member_count < rhs, ">" => self.room_member_count > rhs, ">=" => self.room_member_count >= rhs, "<=" => self.room_member_count <= rhs, _ => false, }; Ok(matches) } } #[test] fn push_rule_evaluator() { let mut flattened_keys = BTreeMap::new(); flattened_keys.insert( "content.body".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("foo bar bob hello"))), ); let evaluator = PushRuleEvaluator::py_new( flattened_keys, false, 10, Some(0), BTreeMap::new(), BTreeMap::new(), true, vec![], true, ) .unwrap(); let result = evaluator.run(&FilteredPushRules::default(), None, Some("bob")); assert_eq!(result.len(), 3); } #[test] fn test_requires_room_version_supports_condition() { use std::borrow::Cow; use crate::push::{PushRule, PushRules}; let mut flattened_keys = BTreeMap::new(); flattened_keys.insert( "content.body".to_string(), JsonValue::Value(SimpleJsonValue::Str(Cow::Borrowed("foo bar bob hello"))), ); let flags = vec![RoomVersionFeatures::ExtensibleEvents.as_str().to_string()]; let evaluator = PushRuleEvaluator::py_new( flattened_keys, false, 10, Some(0), BTreeMap::new(), BTreeMap::new(), false, flags, true, ) .unwrap(); // first test: are the master and contains_user_name rules excluded from the "requires room // version condition" check? let mut result = evaluator.run( &FilteredPushRules::default(), Some("@bob:example.org"), None, ); assert_eq!(result.len(), 3); // second test: if an appropriate push rule is in play, does it get handled? let custom_rule = PushRule { rule_id: Cow::from("global/underride/.org.example.extensible"), priority_class: 1, // underride conditions: Cow::from(vec![Condition::Known( KnownCondition::RoomVersionSupports { feature: Cow::from(RoomVersionFeatures::ExtensibleEvents.as_str().to_string()), }, )]), actions: Cow::from(vec![Action::Notify]), default: false, default_enabled: true, }; let rules = PushRules::new(vec![custom_rule]); result = evaluator.run( &FilteredPushRules::py_new(rules, BTreeMap::new(), true, false, true, false), None, None, ); assert_eq!(result.len(), 1); } synapse-1.100.0/rust/src/push/mod.rs000066400000000000000000000633431455622526000172430ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright 2022 The Matrix.org Foundation C.I.C. * Copyright (C) 2023 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ //! An implementation of Matrix push rules. //! //! The `Cow<_>` type is used extensively within this module to allow creating //! the base rules as constants (in Rust constants can't require explicit //! allocation atm). //! //! --- //! //! Push rules is the system used to determine which events trigger a push (and a //! bump in notification counts). //! //! This consists of a list of "push rules" for each user, where a push rule is a //! pair of "conditions" and "actions". When a user receives an event Synapse //! iterates over the list of push rules until it finds one where all the conditions //! match the event, at which point "actions" describe the outcome (e.g. notify, //! highlight, etc). //! //! Push rules are split up into 5 different "kinds" (aka "priority classes"), which //! are run in order: //! 1. Override — highest priority rules, e.g. always ignore notices //! 2. Content — content specific rules, e.g. @ notifications //! 3. Room — per room rules, e.g. enable/disable notifications for all messages //! in a room //! 4. Sender — per sender rules, e.g. never notify for messages from a given //! user //! 5. Underride — the lowest priority "default" rules, e.g. notify for every //! message. //! //! The set of "base rules" are the list of rules that every user has by default. A //! user can modify their copy of the push rules in one of three ways: //! 1. Adding a new push rule of a certain kind //! 2. Changing the actions of a base rule //! 3. Enabling/disabling a base rule. //! //! The base rules are split into whether they come before or after a particular //! kind, so the order of push rule evaluation would be: base rules for before //! "override" kind, user defined "override" rules, base rules after "override" //! kind, etc, etc. use std::borrow::Cow; use std::collections::{BTreeMap, HashMap, HashSet}; use anyhow::{Context, Error}; use log::warn; use pyo3::exceptions::PyTypeError; use pyo3::prelude::*; use pyo3::types::{PyBool, PyList, PyLong, PyString}; use pythonize::{depythonize, pythonize}; use serde::de::Error as _; use serde::{Deserialize, Serialize}; use serde_json::Value; use self::evaluator::PushRuleEvaluator; mod base_rules; pub mod evaluator; pub mod utils; /// Called when registering modules with python. pub fn register_module(py: Python<'_>, m: &PyModule) -> PyResult<()> { let child_module = PyModule::new(py, "push")?; child_module.add_class::()?; child_module.add_class::()?; child_module.add_class::()?; child_module.add_class::()?; child_module.add_function(wrap_pyfunction!(get_base_rule_ids, m)?)?; m.add_submodule(child_module)?; // We need to manually add the module to sys.modules to make `from // synapse.synapse_rust import push` work. py.import("sys")? .getattr("modules")? .set_item("synapse.synapse_rust.push", child_module)?; Ok(()) } #[pyfunction] fn get_base_rule_ids() -> HashSet<&'static str> { base_rules::BASE_RULES_BY_ID.keys().copied().collect() } /// A single push rule for a user. #[derive(Debug, Clone)] #[pyclass(frozen)] pub struct PushRule { /// A unique ID for this rule pub rule_id: Cow<'static, str>, /// The "kind" of push rule this is (see `PRIORITY_CLASS_MAP` in Python) #[pyo3(get)] pub priority_class: i32, /// The conditions that must all match for actions to be applied pub conditions: Cow<'static, [Condition]>, /// The actions to apply if all conditions are met pub actions: Cow<'static, [Action]>, /// Whether this is a base rule #[pyo3(get)] pub default: bool, /// Whether this is enabled by default #[pyo3(get)] pub default_enabled: bool, } #[pymethods] impl PushRule { #[staticmethod] pub fn from_db( rule_id: String, priority_class: i32, conditions: &str, actions: &str, ) -> Result { let conditions = serde_json::from_str(conditions).context("parsing conditions")?; let actions = serde_json::from_str(actions).context("parsing actions")?; Ok(PushRule { rule_id: Cow::Owned(rule_id), priority_class, conditions, actions, default: false, default_enabled: true, }) } #[getter] fn rule_id(&self) -> &str { &self.rule_id } #[getter] fn actions(&self) -> Vec { self.actions.clone().into_owned() } #[getter] fn conditions(&self) -> Vec { self.conditions.clone().into_owned() } fn __repr__(&self) -> String { format!( "", self.rule_id, self.conditions, self.actions ) } } /// The "action" Synapse should perform for a matching push rule. #[derive(Debug, Clone, PartialEq, Eq)] pub enum Action { Notify, SetTweak(SetTweak), // Legacy actions that should be understood, but are equivalent to no-ops. DontNotify, Coalesce, // An unrecognized custom action. Unknown(Value), } impl IntoPy for Action { fn into_py(self, py: Python<'_>) -> PyObject { // When we pass the `Action` struct to Python we want it to be converted // to a dict. We use `pythonize`, which converts the struct using the // `serde` serialization. pythonize(py, &self).expect("valid action") } } /// The body of a `SetTweak` push action. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct SetTweak { set_tweak: Cow<'static, str>, #[serde(skip_serializing_if = "Option::is_none")] value: Option, // This picks up any other fields that may have been added by clients. // These get added when we convert the `Action` to a python object. #[serde(flatten)] other_keys: Value, } /// The value of a `set_tweak`. /// /// We need this (rather than using `TweakValue` directly) so that we can use /// `&'static str` in the value when defining the constant base rules. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(untagged)] pub enum TweakValue { String(Cow<'static, str>), Other(Value), } impl Serialize for Action { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { match self { Action::DontNotify => serializer.serialize_str("dont_notify"), Action::Notify => serializer.serialize_str("notify"), Action::Coalesce => serializer.serialize_str("coalesce"), Action::SetTweak(tweak) => tweak.serialize(serializer), Action::Unknown(value) => value.serialize(serializer), } } } /// Simple helper class for deserializing Action from JSON. #[derive(Deserialize)] #[serde(untagged)] enum ActionDeserializeHelper { Str(String), SetTweak(SetTweak), Unknown(Value), } impl<'de> Deserialize<'de> for Action { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let helper: ActionDeserializeHelper = Deserialize::deserialize(deserializer)?; match helper { ActionDeserializeHelper::Str(s) => match &*s { "dont_notify" => Ok(Action::DontNotify), "notify" => Ok(Action::Notify), "coalesce" => Ok(Action::Coalesce), _ => Err(D::Error::custom("unrecognized action")), }, ActionDeserializeHelper::SetTweak(set_tweak) => Ok(Action::SetTweak(set_tweak)), ActionDeserializeHelper::Unknown(value) => Ok(Action::Unknown(value)), } } } /// A simple JSON values (string, int, boolean, or null). #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(untagged)] pub enum SimpleJsonValue { Str(Cow<'static, str>), Int(i64), Bool(bool), Null, } impl<'source> FromPyObject<'source> for SimpleJsonValue { fn extract(ob: &'source PyAny) -> PyResult { if let Ok(s) = ::try_from(ob) { Ok(SimpleJsonValue::Str(Cow::Owned(s.to_string()))) // A bool *is* an int, ensure we try bool first. } else if let Ok(b) = ::try_from(ob) { Ok(SimpleJsonValue::Bool(b.extract()?)) } else if let Ok(i) = ::try_from(ob) { Ok(SimpleJsonValue::Int(i.extract()?)) } else if ob.is_none() { Ok(SimpleJsonValue::Null) } else { Err(PyTypeError::new_err(format!( "Can't convert from {} to SimpleJsonValue", ob.get_type().name()? ))) } } } /// A JSON values (list, string, int, boolean, or null). #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(untagged)] pub enum JsonValue { Array(Vec), Value(SimpleJsonValue), } impl<'source> FromPyObject<'source> for JsonValue { fn extract(ob: &'source PyAny) -> PyResult { if let Ok(l) = ::try_from(ob) { match l.iter().map(SimpleJsonValue::extract).collect() { Ok(a) => Ok(JsonValue::Array(a)), Err(e) => Err(PyTypeError::new_err(format!( "Can't convert to JsonValue::Array: {e}" ))), } } else if let Ok(v) = SimpleJsonValue::extract(ob) { Ok(JsonValue::Value(v)) } else { Err(PyTypeError::new_err(format!( "Can't convert from {} to JsonValue", ob.get_type().name()? ))) } } } /// A condition used in push rules to match against an event. /// /// We need this split as `serde` doesn't give us the ability to have a /// "catchall" variant in tagged enums. #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(untagged)] pub enum Condition { /// A recognized condition that we can match against Known(KnownCondition), /// An unrecognized condition that we ignore. Unknown(Value), } /// The set of "known" conditions that we can handle. #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "snake_case")] #[serde(tag = "kind")] pub enum KnownCondition { EventMatch(EventMatchCondition), // Identical to event_match but gives predefined patterns. Cannot be added by users. #[serde(skip_deserializing, rename = "event_match")] EventMatchType(EventMatchTypeCondition), EventPropertyIs(EventPropertyIsCondition), #[serde(rename = "im.nheko.msc3664.related_event_match")] RelatedEventMatch(RelatedEventMatchCondition), // Identical to related_event_match but gives predefined patterns. Cannot be added by users. #[serde(skip_deserializing, rename = "im.nheko.msc3664.related_event_match")] RelatedEventMatchType(RelatedEventMatchTypeCondition), EventPropertyContains(EventPropertyIsCondition), // Identical to exact_event_property_contains but gives predefined patterns. Cannot be added by users. #[serde(skip_deserializing, rename = "event_property_contains")] ExactEventPropertyContainsType(EventPropertyIsTypeCondition), ContainsDisplayName, RoomMemberCount { #[serde(skip_serializing_if = "Option::is_none")] is: Option>, }, SenderNotificationPermission { key: Cow<'static, str>, }, #[serde(rename = "org.matrix.msc3931.room_version_supports")] RoomVersionSupports { feature: Cow<'static, str>, }, } impl IntoPy for Condition { fn into_py(self, py: Python<'_>) -> PyObject { pythonize(py, &self).expect("valid condition") } } impl<'source> FromPyObject<'source> for Condition { fn extract(ob: &'source PyAny) -> PyResult { Ok(depythonize(ob)?) } } /// The body of a [`Condition::EventMatch`] with a pattern. #[derive(Serialize, Deserialize, Debug, Clone)] pub struct EventMatchCondition { pub key: Cow<'static, str>, pub pattern: Cow<'static, str>, } #[derive(Serialize, Debug, Clone)] #[serde(rename_all = "snake_case")] pub enum EventMatchPatternType { UserId, UserLocalpart, } /// The body of a [`Condition::EventMatch`] that uses user_id or user_localpart as a pattern. #[derive(Serialize, Debug, Clone)] pub struct EventMatchTypeCondition { pub key: Cow<'static, str>, // During serialization, the pattern_type property gets replaced with a // pattern property of the correct value in synapse.push.clientformat.format_push_rules_for_user. pub pattern_type: Cow<'static, EventMatchPatternType>, } /// The body of a [`Condition::EventPropertyIs`] #[derive(Serialize, Deserialize, Debug, Clone)] pub struct EventPropertyIsCondition { pub key: Cow<'static, str>, pub value: Cow<'static, SimpleJsonValue>, } /// The body of a [`Condition::EventPropertyIs`] that uses user_id or user_localpart as a pattern. #[derive(Serialize, Debug, Clone)] pub struct EventPropertyIsTypeCondition { pub key: Cow<'static, str>, // During serialization, the pattern_type property gets replaced with a // pattern property of the correct value in synapse.push.clientformat.format_push_rules_for_user. pub value_type: Cow<'static, EventMatchPatternType>, } /// The body of a [`Condition::RelatedEventMatch`] #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RelatedEventMatchCondition { #[serde(skip_serializing_if = "Option::is_none")] pub key: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub pattern: Option>, pub rel_type: Cow<'static, str>, #[serde(skip_serializing_if = "Option::is_none")] pub include_fallbacks: Option, } /// The body of a [`Condition::RelatedEventMatch`] that uses user_id or user_localpart as a pattern. #[derive(Serialize, Debug, Clone)] pub struct RelatedEventMatchTypeCondition { // This is only used if pattern_type exists (and thus key must exist), so is // a bit simpler than RelatedEventMatchCondition. pub key: Cow<'static, str>, pub pattern_type: Cow<'static, EventMatchPatternType>, pub rel_type: Cow<'static, str>, #[serde(skip_serializing_if = "Option::is_none")] pub include_fallbacks: Option, } /// The collection of push rules for a user. #[derive(Debug, Clone, Default)] #[pyclass(frozen)] pub struct PushRules { /// Custom push rules that override a base rule. overridden_base_rules: HashMap, PushRule>, /// Custom rules that come between the prepend/append override base rules. override_rules: Vec, /// Custom rules that come before the base content rules. content: Vec, /// Custom rules that come before the base room rules. room: Vec, /// Custom rules that come before the base sender rules. sender: Vec, /// Custom rules that come before the base underride rules. underride: Vec, } #[pymethods] impl PushRules { #[new] pub fn new(rules: Vec) -> PushRules { let mut push_rules: PushRules = Default::default(); for rule in rules { if let Some(&o) = base_rules::BASE_RULES_BY_ID.get(&*rule.rule_id) { push_rules.overridden_base_rules.insert( rule.rule_id.clone(), PushRule { actions: rule.actions.clone(), ..o.clone() }, ); continue; } match rule.priority_class { 5 => push_rules.override_rules.push(rule), 4 => push_rules.content.push(rule), 3 => push_rules.room.push(rule), 2 => push_rules.sender.push(rule), 1 => push_rules.underride.push(rule), _ => { warn!( "Unrecognized priority class for rule {}: {}", rule.rule_id, rule.priority_class ); } } } push_rules } /// Returns the list of all rules, including base rules, in the order they /// should be executed in. fn rules(&self) -> Vec { self.iter().cloned().collect() } } impl PushRules { /// Iterates over all the rules, including base rules, in the order they /// should be executed in. pub fn iter(&self) -> impl Iterator { base_rules::BASE_PREPEND_OVERRIDE_RULES .iter() .chain(self.override_rules.iter()) .chain(base_rules::BASE_APPEND_OVERRIDE_RULES.iter()) .chain(self.content.iter()) .chain(base_rules::BASE_APPEND_CONTENT_RULES.iter()) .chain(self.room.iter()) .chain(self.sender.iter()) .chain(self.underride.iter()) .chain(base_rules::BASE_APPEND_UNDERRIDE_RULES.iter()) .map(|rule| { self.overridden_base_rules .get(&*rule.rule_id) .unwrap_or(rule) }) } } /// A wrapper around `PushRules` that checks the enabled state of rules and /// filters out disabled experimental rules. #[derive(Debug, Clone, Default)] #[pyclass(frozen)] pub struct FilteredPushRules { push_rules: PushRules, enabled_map: BTreeMap, msc1767_enabled: bool, msc3381_polls_enabled: bool, msc3664_enabled: bool, msc4028_push_encrypted_events: bool, } #[pymethods] impl FilteredPushRules { #[new] pub fn py_new( push_rules: PushRules, enabled_map: BTreeMap, msc1767_enabled: bool, msc3381_polls_enabled: bool, msc3664_enabled: bool, msc4028_push_encrypted_events: bool, ) -> Self { Self { push_rules, enabled_map, msc1767_enabled, msc3381_polls_enabled, msc3664_enabled, msc4028_push_encrypted_events, } } /// Returns the list of all rules and their enabled state, including base /// rules, in the order they should be executed in. fn rules(&self) -> Vec<(PushRule, bool)> { self.iter().map(|(r, e)| (r.clone(), e)).collect() } } impl FilteredPushRules { /// Iterates over all the rules and their enabled state, including base /// rules, in the order they should be executed in. fn iter(&self) -> impl Iterator { self.push_rules .iter() .filter(|rule| { // Ignore disabled experimental push rules if !self.msc1767_enabled && (rule.rule_id.contains("org.matrix.msc1767") || rule.rule_id.contains("org.matrix.msc3933")) { return false; } if !self.msc3664_enabled && rule.rule_id == "global/override/.im.nheko.msc3664.reply" { return false; } if !self.msc3381_polls_enabled && rule.rule_id.contains("org.matrix.msc3930") { return false; } if !self.msc4028_push_encrypted_events && rule.rule_id == "global/override/.org.matrix.msc4028.encrypted_event" { return false; } true }) .map(|r| { let enabled = *self .enabled_map .get(&*r.rule_id) .unwrap_or(&r.default_enabled); (r, enabled) }) } } #[test] fn test_serialize_condition() { let condition = Condition::Known(KnownCondition::EventMatch(EventMatchCondition { key: "content.body".into(), pattern: "coffee".into(), })); let json = serde_json::to_string(&condition).unwrap(); assert_eq!( json, r#"{"kind":"event_match","key":"content.body","pattern":"coffee"}"# ) } #[test] fn test_deserialize_condition() { let json = r#"{"kind":"event_match","key":"content.body","pattern":"coffee"}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!( condition, Condition::Known(KnownCondition::EventMatch(_)) )); } #[test] fn test_serialize_event_match_condition_with_pattern_type() { let condition = Condition::Known(KnownCondition::EventMatchType(EventMatchTypeCondition { key: "content.body".into(), pattern_type: Cow::Owned(EventMatchPatternType::UserId), })); let json = serde_json::to_string(&condition).unwrap(); assert_eq!( json, r#"{"kind":"event_match","key":"content.body","pattern_type":"user_id"}"# ) } #[test] fn test_cannot_deserialize_event_match_condition_with_pattern_type() { let json = r#"{"kind":"event_match","key":"content.body","pattern_type":"user_id"}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!(condition, Condition::Unknown(_))); } #[test] fn test_deserialize_unstable_msc3664_condition() { let json = r#"{"kind":"im.nheko.msc3664.related_event_match","key":"content.body","pattern":"coffee","rel_type":"m.in_reply_to"}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!( condition, Condition::Known(KnownCondition::RelatedEventMatch(_)) )); } #[test] fn test_serialize_unstable_msc3664_condition_with_pattern_type() { let condition = Condition::Known(KnownCondition::RelatedEventMatchType( RelatedEventMatchTypeCondition { key: "content.body".into(), pattern_type: Cow::Owned(EventMatchPatternType::UserId), rel_type: "m.in_reply_to".into(), include_fallbacks: Some(true), }, )); let json = serde_json::to_string(&condition).unwrap(); assert_eq!( json, r#"{"kind":"im.nheko.msc3664.related_event_match","key":"content.body","pattern_type":"user_id","rel_type":"m.in_reply_to","include_fallbacks":true}"# ) } #[test] fn test_cannot_deserialize_unstable_msc3664_condition_with_pattern_type() { let json = r#"{"kind":"im.nheko.msc3664.related_event_match","key":"content.body","pattern_type":"user_id","rel_type":"m.in_reply_to"}"#; let condition: Condition = serde_json::from_str(json).unwrap(); // Since pattern is optional on RelatedEventMatch it deserializes it to that // instead of RelatedEventMatchType. assert!(matches!( condition, Condition::Known(KnownCondition::RelatedEventMatch(_)) )); } #[test] fn test_deserialize_unstable_msc3931_condition() { let json = r#"{"kind":"org.matrix.msc3931.room_version_supports","feature":"org.example.feature"}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!( condition, Condition::Known(KnownCondition::RoomVersionSupports { feature: _ }) )); } #[test] fn test_deserialize_event_property_is_condition() { // A string condition should work. let json = r#"{"kind":"event_property_is","key":"content.value","value":"foo"}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!( condition, Condition::Known(KnownCondition::EventPropertyIs(_)) )); // A boolean condition should work. let json = r#"{"kind":"event_property_is","key":"content.value","value":true}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!( condition, Condition::Known(KnownCondition::EventPropertyIs(_)) )); // An integer condition should work. let json = r#"{"kind":"event_property_is","key":"content.value","value":1}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!( condition, Condition::Known(KnownCondition::EventPropertyIs(_)) )); // A null condition should work let json = r#"{"kind":"event_property_is","key":"content.value","value":null}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!( condition, Condition::Known(KnownCondition::EventPropertyIs(_)) )); } #[test] fn test_deserialize_custom_condition() { let json = r#"{"kind":"custom_tag"}"#; let condition: Condition = serde_json::from_str(json).unwrap(); assert!(matches!(condition, Condition::Unknown(_))); let new_json = serde_json::to_string(&condition).unwrap(); assert_eq!(json, new_json); } #[test] fn test_deserialize_action() { let _: Action = serde_json::from_str(r#""notify""#).unwrap(); let _: Action = serde_json::from_str(r#""dont_notify""#).unwrap(); let _: Action = serde_json::from_str(r#""coalesce""#).unwrap(); let _: Action = serde_json::from_str(r#"{"set_tweak": "highlight"}"#).unwrap(); } #[test] fn test_custom_action() { let json = r#"{"some_custom":"action_fields"}"#; let action: Action = serde_json::from_str(json).unwrap(); assert!(matches!(action, Action::Unknown(_))); let new_json = serde_json::to_string(&action).unwrap(); assert_eq!(json, new_json); } synapse-1.100.0/rust/src/push/utils.rs000066400000000000000000000167641455622526000176310ustar00rootroot00000000000000/* * This file is licensed under the Affero General Public License (AGPL) version 3. * * Copyright 2022 The Matrix.org Foundation C.I.C. * Copyright (C) 2023 New Vector, Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the GNU Affero General Public License for more details: * . * * Originally licensed under the Apache License, Version 2.0: * . * * [This file includes modifications made by New Vector Limited] * */ use anyhow::bail; use anyhow::Context; use anyhow::Error; use lazy_static::lazy_static; use regex; use regex::Regex; use regex::RegexBuilder; lazy_static! { /// Matches runs of non-wildcard characters followed by wildcard characters. static ref WILDCARD_RUN: Regex = Regex::new(r"([^\?\*]*)([\?\*]*)").expect("valid regex"); } /// Extract the localpart from a Matrix style ID pub(crate) fn get_localpart_from_id(id: &str) -> Result<&str, Error> { let (localpart, _) = id .split_once(':') .with_context(|| format!("ID does not contain colon: {id}"))?; // We need to strip off the first character, which is the ID type. if localpart.is_empty() { bail!("Invalid ID {id}"); } Ok(&localpart[1..]) } /// Used by `glob_to_regex` to specify what to match the regex against. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum GlobMatchType { /// The generated regex will match against the entire input. Whole, /// The generated regex will match against words. Word, } /// Convert a "glob" style expression to a regex, anchoring either to the entire /// input or to individual words. pub fn glob_to_regex(glob: &str, match_type: GlobMatchType) -> Result { let mut chunks = Vec::new(); // Patterns with wildcards must be simplified to avoid performance cliffs // - The glob `?**?**?` is equivalent to the glob `???*` // - The glob `???*` is equivalent to the regex `.{3,}` for captures in WILDCARD_RUN.captures_iter(glob) { if let Some(chunk) = captures.get(1) { chunks.push(regex::escape(chunk.as_str())); } if let Some(wildcards) = captures.get(2) { if wildcards.as_str() == "" { continue; } let question_marks = wildcards.as_str().chars().filter(|c| *c == '?').count(); if wildcards.as_str().contains('*') { chunks.push(format!(".{{{question_marks},}}")); } else { chunks.push(format!(".{{{question_marks}}}")); } } } let joined = chunks.join(""); let regex_str = match match_type { GlobMatchType::Whole => format!(r"\A{joined}\z"), // `^|\W` and `\W|$` handle the case where `pattern` starts or ends with a non-word // character. GlobMatchType::Word => format!(r"(?:^|\b|\W){joined}(?:\b|\W|$)"), }; Ok(RegexBuilder::new(®ex_str) .case_insensitive(true) .build()?) } /// Compiles the glob into a `Matcher`. pub fn get_glob_matcher(glob: &str, match_type: GlobMatchType) -> Result { // There are a number of shortcuts we can make if the glob doesn't contain a // wild card. let matcher = if glob.contains(['*', '?']) { let regex = glob_to_regex(glob, match_type)?; Matcher::Regex(regex) } else if match_type == GlobMatchType::Whole { // If there aren't any wildcards and we're matching the whole thing, // then we simply can do a case-insensitive string match. Matcher::Whole(glob.to_lowercase()) } else { // Otherwise, if we're matching against words then can first check // if the haystack contains the glob at all. Matcher::Word { word: glob.to_lowercase(), regex: None, } }; Ok(matcher) } /// Matches against a glob pub enum Matcher { /// Plain regex matching. Regex(Regex), /// Case-insensitive equality. Whole(String), /// Word matching. `regex` is a cache of calling [`glob_to_regex`] on word. Word { word: String, regex: Option }, } impl Matcher { /// Checks if the glob matches the given haystack. pub fn is_match(&mut self, haystack: &str) -> Result { // We want to to do case-insensitive matching, so we convert to // lowercase first. let haystack = haystack.to_lowercase(); match self { Matcher::Regex(regex) => Ok(regex.is_match(&haystack)), Matcher::Whole(whole) => Ok(whole == &haystack), Matcher::Word { word, regex } => { // If we're looking for a literal word, then we first check if // the haystack contains the word as a substring. if !haystack.contains(&*word) { return Ok(false); } // If it does contain the word as a substring, then we need to // check if it is an actual word by testing it against the regex. let regex = if let Some(regex) = regex { regex } else { let compiled_regex = glob_to_regex(word, GlobMatchType::Word)?; regex.insert(compiled_regex) }; Ok(regex.is_match(&haystack)) } } } } #[test] fn test_get_domain_from_id() { get_localpart_from_id("").unwrap_err(); get_localpart_from_id(":").unwrap_err(); get_localpart_from_id(":asd").unwrap_err(); get_localpart_from_id("::as::asad").unwrap_err(); assert_eq!(get_localpart_from_id("@test:foo").unwrap(), "test"); assert_eq!(get_localpart_from_id("@:").unwrap(), ""); assert_eq!(get_localpart_from_id("@test:foo:907").unwrap(), "test"); } #[test] fn tset_glob() -> Result<(), Error> { assert_eq!( glob_to_regex("simple", GlobMatchType::Whole)?.as_str(), r"\Asimple\z" ); assert_eq!( glob_to_regex("simple*", GlobMatchType::Whole)?.as_str(), r"\Asimple.{0,}\z" ); assert_eq!( glob_to_regex("simple?", GlobMatchType::Whole)?.as_str(), r"\Asimple.{1}\z" ); assert_eq!( glob_to_regex("simple?*?*", GlobMatchType::Whole)?.as_str(), r"\Asimple.{2,}\z" ); assert_eq!( glob_to_regex("simple???", GlobMatchType::Whole)?.as_str(), r"\Asimple.{3}\z" ); assert_eq!( glob_to_regex("escape.", GlobMatchType::Whole)?.as_str(), r"\Aescape\.\z" ); assert!(glob_to_regex("simple", GlobMatchType::Whole)?.is_match("simple")); assert!(!glob_to_regex("simple", GlobMatchType::Whole)?.is_match("simples")); assert!(glob_to_regex("simple*", GlobMatchType::Whole)?.is_match("simples")); assert!(glob_to_regex("simple?", GlobMatchType::Whole)?.is_match("simples")); assert!(glob_to_regex("simple*", GlobMatchType::Whole)?.is_match("simple")); assert!(glob_to_regex("simple", GlobMatchType::Word)?.is_match("some simple.")); assert!(glob_to_regex("simple", GlobMatchType::Word)?.is_match("simple")); assert!(!glob_to_regex("simple", GlobMatchType::Word)?.is_match("simples")); assert!(glob_to_regex("@user:foo", GlobMatchType::Word)?.is_match("Some @user:foo test")); assert!(glob_to_regex("@user:foo", GlobMatchType::Word)?.is_match("@user:foo")); Ok(()) } synapse-1.100.0/scripts-dev/000077500000000000000000000000001455622526000156055ustar00rootroot00000000000000synapse-1.100.0/scripts-dev/build_debian_packages.py000077500000000000000000000165301455622526000224260ustar00rootroot00000000000000#!/usr/bin/env python3 # Build the Debian packages using Docker images. # # This script builds the Docker images and then executes them sequentially, each # one building a Debian package for the targeted operating system. It is # designed to be a "single command" to produce all the images. # # By default, builds for all known distributions, but a list of distributions # can be passed on the commandline for debugging. import argparse import json import os import signal import subprocess import sys import threading from concurrent.futures import ThreadPoolExecutor from types import FrameType from typing import Collection, Optional, Sequence, Set # These are expanded inside the dockerfile to be a fully qualified image name. # e.g. docker.io/library/debian:bullseye # # If an EOL is forced by a Python version and we're dropping support for it, make sure # to remove references to the distibution across Synapse (search for "bullseye" for # example) DISTS = ( "debian:bullseye", # (EOL ~2024-07) (our EOL forced by Python 3.9 is 2025-10-05) "debian:bookworm", # (EOL not specified yet) (our EOL forced by Python 3.11 is 2027-10-24) "debian:sid", # (EOL not specified yet) (our EOL forced by Python 3.11 is 2027-10-24) "ubuntu:focal", # 20.04 LTS (EOL 2025-04) (our EOL forced by Python 3.8 is 2024-10-14) "ubuntu:jammy", # 22.04 LTS (EOL 2027-04) (our EOL forced by Python 3.10 is 2026-10-04) "ubuntu:lunar", # 23.04 (EOL 2024-01) (our EOL forced by Python 3.11 is 2027-10-24) "ubuntu:mantic", # 23.10 (EOL 2024-07) (our EOL forced by Python 3.11 is 2027-10-24) "debian:trixie", # (EOL not specified yet) ) DESC = """\ Builds .debs for synapse, using a Docker image for the build environment. By default, builds for all known distributions, but a list of distributions can be passed on the commandline for debugging. """ projdir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) class Builder: def __init__( self, redirect_stdout: bool = False, docker_build_args: Optional[Sequence[str]] = None, ): self.redirect_stdout = redirect_stdout self._docker_build_args = tuple(docker_build_args or ()) self.active_containers: Set[str] = set() self._lock = threading.Lock() self._failed = False def run_build(self, dist: str, skip_tests: bool = False) -> None: """Build deb for a single distribution""" if self._failed: print("not building %s due to earlier failure" % (dist,)) raise Exception("failed") try: self._inner_build(dist, skip_tests) except Exception as e: print("build of %s failed: %s" % (dist, e), file=sys.stderr) self._failed = True raise def _inner_build(self, dist: str, skip_tests: bool = False) -> None: tag = dist.split(":", 1)[1] # Make the dir where the debs will live. # # Note that we deliberately put this outside the source tree, otherwise # we tend to get source packages which are full of debs. (We could hack # around that with more magic in the build_debian.sh script, but that # doesn't solve the problem for natively-run dpkg-buildpakage). debsdir = os.path.join(projdir, "../debs") os.makedirs(debsdir, exist_ok=True) if self.redirect_stdout: logfile = os.path.join(debsdir, "%s.buildlog" % (tag,)) print("building %s: directing output to %s" % (dist, logfile)) stdout = open(logfile, "w") else: stdout = None # first build a docker image for the build environment build_args = ( ( "docker", "build", "--tag", "dh-venv-builder:" + tag, "--build-arg", "distro=" + dist, "-f", "docker/Dockerfile-dhvirtualenv", ) + self._docker_build_args + ("docker",) ) subprocess.check_call( build_args, stdout=stdout, stderr=subprocess.STDOUT, cwd=projdir, ) container_name = "synapse_build_" + tag with self._lock: self.active_containers.add(container_name) # then run the build itself subprocess.check_call( [ "docker", "run", "--rm", "--name", container_name, "--volume=" + projdir + ":/synapse/source:ro", "--volume=" + debsdir + ":/debs", "-e", "TARGET_USERID=%i" % (os.getuid(),), "-e", "TARGET_GROUPID=%i" % (os.getgid(),), "-e", "DEB_BUILD_OPTIONS=%s" % ("nocheck" if skip_tests else ""), "dh-venv-builder:" + tag, ], stdout=stdout, stderr=subprocess.STDOUT, ) with self._lock: self.active_containers.remove(container_name) if stdout is not None: stdout.close() print("Completed build of %s" % (dist,)) def kill_containers(self) -> None: with self._lock: active = list(self.active_containers) for c in active: print("killing container %s" % (c,)) subprocess.run( [ "docker", "kill", c, ], stdout=subprocess.DEVNULL, ) with self._lock: self.active_containers.remove(c) def run_builds( builder: Builder, dists: Collection[str], jobs: int = 1, skip_tests: bool = False ) -> None: def sig(signum: int, _frame: Optional[FrameType]) -> None: print("Caught SIGINT") builder.kill_containers() signal.signal(signal.SIGINT, sig) with ThreadPoolExecutor(max_workers=jobs) as e: res = e.map(lambda dist: builder.run_build(dist, skip_tests), dists) # make sure we consume the iterable so that exceptions are raised. for _ in res: pass if __name__ == "__main__": parser = argparse.ArgumentParser( description=DESC, ) parser.add_argument( "-j", "--jobs", type=int, default=1, help="specify the number of builds to run in parallel", ) parser.add_argument( "--no-check", action="store_true", help="skip running tests after building", ) parser.add_argument( "--docker-build-arg", action="append", help="specify an argument to pass to docker build", ) parser.add_argument( "--show-dists-json", action="store_true", help="instead of building the packages, just list the dists to build for, as a json array", ) parser.add_argument( "dist", nargs="*", default=DISTS, help="a list of distributions to build for. Default: %(default)s", ) args = parser.parse_args() if args.show_dists_json: print(json.dumps(DISTS)) else: builder = Builder( redirect_stdout=(args.jobs > 1), docker_build_args=args.docker_build_arg ) run_builds( builder, dists=args.dist, jobs=args.jobs, skip_tests=args.no_check, ) synapse-1.100.0/scripts-dev/check-newsfragment.sh000077500000000000000000000044201455622526000217170ustar00rootroot00000000000000#!/usr/bin/env bash # # A script which checks that an appropriate news file has been added on this # branch. echo -e "+++ \033[32mChecking newsfragment\033[m" set -e # make sure that origin/develop is up to date git remote set-branches --add origin develop git fetch -q origin develop pr="$PULL_REQUEST_NUMBER" # if there are changes in the debian directory, check that the debian changelog # has been updated if ! git diff --quiet FETCH_HEAD... -- debian; then if git diff --quiet FETCH_HEAD... -- debian/changelog; then echo "Updates to debian directory, but no update to the changelog." >&2 echo "!! Please see the contributing guide for help writing your changelog entry:" >&2 echo "https://element-hq.github.io/synapse/latest/development/contributing_guide.html#debian-changelog" >&2 exit 1 fi fi # if there are changes *outside* the debian directory, check that the # newsfragments have been updated. if ! git diff --name-only FETCH_HEAD... | grep -qv '^debian/'; then exit 0 fi # Print a link to the contributing guide if the user makes a mistake CONTRIBUTING_GUIDE_TEXT="!! Please see the contributing guide for help writing your changelog entry: https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog" # If check-newsfragment returns a non-zero exit code, print the contributing guide and exit python -m towncrier.check --compare-with=origin/develop || (echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 && exit 1) echo echo "--------------------------" echo matched=0 for f in $(git diff --diff-filter=d --name-only FETCH_HEAD... -- changelog.d); do # check that any added newsfiles on this branch end with a full stop. lastchar=$(tr -d '\n' < "$f" | tail -c 1) if [ "$lastchar" != '.' ] && [ "$lastchar" != '!' ]; then echo -e "\e[31mERROR: newsfragment $f does not end with a '.' or '!'\e[39m" >&2 echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 exit 1 fi # see if this newsfile corresponds to the right PR [[ -n "$pr" && "$f" == changelog.d/"$pr".* ]] && matched=1 done if [[ -n "$pr" && "$matched" -eq 0 ]]; then echo -e "\e[31mERROR: Did not find a news fragment with the right number: expected changelog.d/$pr.*.\e[39m" >&2 echo -e "$CONTRIBUTING_GUIDE_TEXT" >&2 exit 1 fi synapse-1.100.0/scripts-dev/check_line_terminators.sh000077500000000000000000000017611455622526000226640ustar00rootroot00000000000000#!/bin/bash ## ## This file is licensed under the Affero General Public License (AGPL) version 3. ## ## Copyright (C) 2023 New Vector, Ltd ## ## This program is free software: you can redistribute it and/or modify ## it under the terms of the GNU Affero General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## See the GNU Affero General Public License for more details: ## . ## ## Originally licensed under the Apache License, Version 2.0: ## . ## ## [This file includes modifications made by New Vector Limited] ## ## # cd to the root of the repository cd "$(dirname "$0")/.." || exit # Find and print files with non-unix line terminators if find . -path './.git/*' -prune -o -type f -print0 | xargs -0 grep -I -l $'\r$'; then echo -e '\e[31mERROR: found files with CRLF line endings. See above.\e[39m' exit 1 fi synapse-1.100.0/scripts-dev/check_locked_deps_have_sdists.py000077500000000000000000000036651455622526000242010ustar00rootroot00000000000000#! /usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from pathlib import Path from typing import Dict, List import tomli def main() -> None: lockfile_path = Path(__file__).parent.parent.joinpath("poetry.lock") with open(lockfile_path, "rb") as lockfile: lockfile_content = tomli.load(lockfile) # Poetry 1.3+ lockfile format: # There's a `files` inline table in each [[package]] packages_to_assets: Dict[str, List[Dict[str, str]]] = { package["name"]: package["files"] for package in lockfile_content["package"] } success = True for package_name, assets in packages_to_assets.items(): has_sdist = any(asset["file"].endswith(".tar.gz") for asset in assets) if not has_sdist: success = False print( f"Locked package {package_name!r} does not have a source distribution!", file=sys.stderr, ) if not success: print( "\nThere were some problems with the Poetry lockfile (poetry.lock).", file=sys.stderr, ) sys.exit(1) print( f"Poetry lockfile OK. {len(packages_to_assets)} locked packages checked.", file=sys.stderr, ) if __name__ == "__main__": main() synapse-1.100.0/scripts-dev/check_pydantic_models.py000077500000000000000000000405201455622526000224760ustar00rootroot00000000000000#! /usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ A script which enforces that Synapse always uses strict types when defining a Pydantic model. Pydantic does not yet offer a strict mode, but it is planned for pydantic v2. See https://github.com/pydantic/pydantic/issues/1098 https://pydantic-docs.helpmanual.io/blog/pydantic-v2/#strict-mode until then, this script is a best effort to stop us from introducing type coersion bugs (like the infamous stringy power levels fixed in room version 10). """ import argparse import contextlib import functools import importlib import logging import os import pkgutil import sys import textwrap import traceback import unittest.mock from contextlib import contextmanager from typing import ( TYPE_CHECKING, Any, Callable, Dict, Generator, List, Set, Type, TypeVar, ) from parameterized import parameterized from synapse._pydantic_compat import HAS_PYDANTIC_V2 if TYPE_CHECKING or HAS_PYDANTIC_V2: from pydantic.v1 import ( BaseModel as PydanticBaseModel, conbytes, confloat, conint, constr, ) from pydantic.v1.typing import get_args else: from pydantic import ( BaseModel as PydanticBaseModel, conbytes, confloat, conint, constr, ) from pydantic.typing import get_args from typing_extensions import ParamSpec logger = logging.getLogger(__name__) CONSTRAINED_TYPE_FACTORIES_WITH_STRICT_FLAG: List[Callable] = [ constr, conbytes, conint, confloat, ] TYPES_THAT_PYDANTIC_WILL_COERCE_TO = [ str, bytes, int, float, bool, ] P = ParamSpec("P") R = TypeVar("R") class ModelCheckerException(Exception): """Dummy exception. Allows us to detect unwanted types during a module import.""" class MissingStrictInConstrainedTypeException(ModelCheckerException): factory_name: str def __init__(self, factory_name: str): self.factory_name = factory_name class FieldHasUnwantedTypeException(ModelCheckerException): message: str def __init__(self, message: str): self.message = message def make_wrapper(factory: Callable[P, R]) -> Callable[P, R]: """We patch `constr` and friends with wrappers that enforce strict=True.""" @functools.wraps(factory) def wrapper(*args: P.args, **kwargs: P.kwargs) -> R: if "strict" not in kwargs: raise MissingStrictInConstrainedTypeException(factory.__name__) if not kwargs["strict"]: raise MissingStrictInConstrainedTypeException(factory.__name__) return factory(*args, **kwargs) return wrapper def field_type_unwanted(type_: Any) -> bool: """Very rough attempt to detect if a type is unwanted as a Pydantic annotation. At present, we exclude types which will coerce, or any generic type involving types which will coerce.""" logger.debug("Is %s unwanted?") if type_ in TYPES_THAT_PYDANTIC_WILL_COERCE_TO: logger.debug("yes") return True logger.debug("Maybe. Subargs are %s", get_args(type_)) rv = any(field_type_unwanted(t) for t in get_args(type_)) logger.debug("Conclusion: %s %s unwanted", type_, "is" if rv else "is not") return rv class PatchedBaseModel(PydanticBaseModel): """A patched version of BaseModel that inspects fields after models are defined. We complain loudly if we see an unwanted type. Beware: ModelField.type_ is presumably private; this is likely to be very brittle. """ @classmethod def __init_subclass__(cls: Type[PydanticBaseModel], **kwargs: object): for field in cls.__fields__.values(): # Note that field.type_ and field.outer_type are computed based on the # annotation type, see pydantic.fields.ModelField._type_analysis if field_type_unwanted(field.outer_type_): # TODO: this only reports the first bad field. Can we find all bad ones # and report them all? raise FieldHasUnwantedTypeException( f"{cls.__module__}.{cls.__qualname__} has field '{field.name}' " f"with unwanted type `{field.outer_type_}`" ) @contextmanager def monkeypatch_pydantic() -> Generator[None, None, None]: """Patch pydantic with our snooping versions of BaseModel and the con* functions. If the snooping functions see something they don't like, they'll raise a ModelCheckingException instance. """ with contextlib.ExitStack() as patches: # Most Synapse code ought to import the patched objects directly from # `pydantic`. But we also patch their containing modules `pydantic.main` and # `pydantic.types` for completeness. patch_basemodel1 = unittest.mock.patch( "pydantic.BaseModel", new=PatchedBaseModel ) patch_basemodel2 = unittest.mock.patch( "pydantic.main.BaseModel", new=PatchedBaseModel ) patches.enter_context(patch_basemodel1) patches.enter_context(patch_basemodel2) for factory in CONSTRAINED_TYPE_FACTORIES_WITH_STRICT_FLAG: wrapper: Callable = make_wrapper(factory) patch1 = unittest.mock.patch(f"pydantic.{factory.__name__}", new=wrapper) patch2 = unittest.mock.patch( f"pydantic.types.{factory.__name__}", new=wrapper ) patches.enter_context(patch1) patches.enter_context(patch2) yield def format_model_checker_exception(e: ModelCheckerException) -> str: """Work out which line of code caused e. Format the line in a human-friendly way.""" # TODO. FieldHasUnwantedTypeException gives better error messages. Can we ditch the # patches of constr() etc, and instead inspect fields to look for ConstrainedStr # with strict=False? There is some difficulty with the inheritance hierarchy # because StrictStr < ConstrainedStr < str. if isinstance(e, FieldHasUnwantedTypeException): return e.message elif isinstance(e, MissingStrictInConstrainedTypeException): frame_summary = traceback.extract_tb(e.__traceback__)[-2] return ( f"Missing `strict=True` from {e.factory_name}() call \n" + traceback.format_list([frame_summary])[0].lstrip() ) else: raise ValueError(f"Unknown exception {e}") from e def lint() -> int: """Try to import all of Synapse and see if we spot any Pydantic type coercions. Print any problems, then return a status code suitable for sys.exit.""" failures = do_lint() if failures: print(f"Found {len(failures)} problem(s)") for failure in sorted(failures): print(failure) return os.EX_DATAERR if failures else os.EX_OK def do_lint() -> Set[str]: """Try to import all of Synapse and see if we spot any Pydantic type coercions.""" failures = set() with monkeypatch_pydantic(): logger.debug("Importing synapse") try: # TODO: make "synapse" an argument so we can target this script at # a subpackage module = importlib.import_module("synapse") except ModelCheckerException as e: logger.warning("Bad annotation found when importing synapse") failures.add(format_model_checker_exception(e)) return failures try: logger.debug("Fetching subpackages") module_infos = list( pkgutil.walk_packages(module.__path__, f"{module.__name__}.") ) except ModelCheckerException as e: logger.warning("Bad annotation found when looking for modules to import") failures.add(format_model_checker_exception(e)) return failures for module_info in module_infos: logger.debug("Importing %s", module_info.name) try: importlib.import_module(module_info.name) except ModelCheckerException as e: logger.warning( f"Bad annotation found when importing {module_info.name}" ) failures.add(format_model_checker_exception(e)) return failures def run_test_snippet(source: str) -> None: """Exec a snippet of source code in an isolated environment.""" # To emulate `source` being called at the top level of the module, # the globals and locals we provide apparently have to be the same mapping. # # > Remember that at the module level, globals and locals are the same dictionary. # > If exec gets two separate objects as globals and locals, the code will be # > executed as if it were embedded in a class definition. globals_: Dict[str, object] locals_: Dict[str, object] globals_ = locals_ = {} exec(textwrap.dedent(source), globals_, locals_) class TestConstrainedTypesPatch(unittest.TestCase): def test_expression_without_strict_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1 import constr except ImportError: from pydantic import constr constr() """ ) def test_called_as_module_attribute_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ import pydantic pydantic.constr() """ ) def test_wildcard_import_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1 import * except ImportError: from pydantic import * constr() """ ) def test_alternative_import_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1.types import constr except ImportError: from pydantic.types import constr constr() """ ) def test_alternative_import_attribute_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1 import types as pydantic_types except ImportError: from pydantic import types as pydantic_types pydantic_types.constr() """ ) def test_kwarg_but_no_strict_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1 import constr except ImportError: from pydantic import constr constr(min_length=10) """ ) def test_kwarg_strict_False_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1 import constr except ImportError: from pydantic import constr constr(strict=False) """ ) def test_kwarg_strict_True_doesnt_raise(self) -> None: with monkeypatch_pydantic(): run_test_snippet( """ try: from pydantic.v1 import constr except ImportError: from pydantic import constr constr(strict=True) """ ) def test_annotation_without_strict_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1 import constr except ImportError: from pydantic import constr x: constr() """ ) def test_field_annotation_without_strict_raises(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1 import BaseModel, conint except ImportError: from pydantic import BaseModel, conint class C: x: conint() """ ) class TestFieldTypeInspection(unittest.TestCase): @parameterized.expand( [ ("str",), ("bytes"), ("int",), ("float",), ("bool"), ("Optional[str]",), ("Union[None, str]",), ("List[str]",), ("List[List[str]]",), ("Dict[StrictStr, str]",), ("Dict[str, StrictStr]",), ("TypedDict('D', x=int)",), ] ) def test_field_holding_unwanted_type_raises(self, annotation: str) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( f""" from typing import * try: from pydantic.v1 import * except ImportError: from pydantic import * class C(BaseModel): f: {annotation} """ ) @parameterized.expand( [ ("StrictStr",), ("StrictBytes"), ("StrictInt",), ("StrictFloat",), ("StrictBool"), ("constr(strict=True, min_length=10)",), ("Optional[StrictStr]",), ("Union[None, StrictStr]",), ("List[StrictStr]",), ("List[List[StrictStr]]",), ("Dict[StrictStr, StrictStr]",), ("TypedDict('D', x=StrictInt)",), ] ) def test_field_holding_accepted_type_doesnt_raise(self, annotation: str) -> None: with monkeypatch_pydantic(): run_test_snippet( f""" from typing import * try: from pydantic.v1 import * except ImportError: from pydantic import * class C(BaseModel): f: {annotation} """ ) def test_field_holding_str_raises_with_alternative_import(self) -> None: with monkeypatch_pydantic(), self.assertRaises(ModelCheckerException): run_test_snippet( """ try: from pydantic.v1.main import BaseModel except ImportError: from pydantic.main import BaseModel class C(BaseModel): f: str """ ) parser = argparse.ArgumentParser() parser.add_argument("mode", choices=["lint", "test"], default="lint", nargs="?") parser.add_argument("-v", "--verbose", action="store_true") if __name__ == "__main__": args = parser.parse_args(sys.argv[1:]) logging.basicConfig( format="%(asctime)s %(name)s:%(lineno)d %(levelname)s %(message)s", level=logging.DEBUG if args.verbose else logging.INFO, ) # suppress logs we don't care about logging.getLogger("xmlschema").setLevel(logging.WARNING) if args.mode == "lint": sys.exit(lint()) elif args.mode == "test": unittest.main(argv=sys.argv[:1]) synapse-1.100.0/scripts-dev/check_schema_delta.py000077500000000000000000000066021455622526000217340ustar00rootroot00000000000000#!/usr/bin/env python3 # Check that no schema deltas have been added to the wrong version. import re from typing import Any, Dict, List import click import git SCHEMA_FILE_REGEX = re.compile(r"^synapse/storage/schema/(.*)/delta/(.*)/(.*)$") @click.command() @click.option( "--force-colors", is_flag=True, flag_value=True, default=None, help="Always output ANSI colours", ) def main(force_colors: bool) -> None: click.secho( "+++ Checking schema deltas are in the right folder", fg="green", bold=True, color=force_colors, ) click.secho("Updating repo...") repo = git.Repo() repo.remote().fetch() click.secho("Getting current schema version...") r = repo.git.show("origin/develop:synapse/storage/schema/__init__.py") locals: Dict[str, Any] = {} exec(r, locals) current_schema_version = locals["SCHEMA_VERSION"] diffs: List[git.Diff] = repo.remote().refs.develop.commit.diff(None) # Get the schema version of the local file to check against current schema on develop with open("synapse/storage/schema/__init__.py") as file: local_schema = file.read() new_locals: Dict[str, Any] = {} exec(local_schema, new_locals) local_schema_version = new_locals["SCHEMA_VERSION"] if local_schema_version != current_schema_version: # local schema version must be +/-1 the current schema version on develop if abs(local_schema_version - current_schema_version) != 1: click.secho( "The proposed schema version has diverged more than one version from develop, please fix!", fg="red", bold=True, color=force_colors, ) click.get_current_context().exit(1) # right, we've changed the schema version within the allowable tolerance so # let's now use the local version as the canonical version current_schema_version = local_schema_version click.secho(f"Current schema version: {current_schema_version}") seen_deltas = False bad_files = [] for diff in diffs: if not diff.new_file or diff.b_path is None: continue match = SCHEMA_FILE_REGEX.match(diff.b_path) if not match: continue seen_deltas = True _, delta_version, _ = match.groups() if delta_version != str(current_schema_version): bad_files.append(diff.b_path) if not seen_deltas: click.secho( "No deltas found.", fg="green", bold=True, color=force_colors, ) return if not bad_files: click.secho( f"All deltas are in the correct folder: {current_schema_version}!", fg="green", bold=True, color=force_colors, ) return bad_files.sort() click.secho( "Found deltas in the wrong folder!", fg="red", bold=True, color=force_colors, ) for f in bad_files: click.secho( f"\t{f}", fg="red", bold=True, color=force_colors, ) click.secho() click.secho( f"Please move these files to delta/{current_schema_version}/", fg="red", bold=True, color=force_colors, ) click.get_current_context().exit(1) if __name__ == "__main__": main() synapse-1.100.0/scripts-dev/complement.sh000077500000000000000000000246531455622526000203210ustar00rootroot00000000000000#!/usr/bin/env bash # This script is designed for developers who want to test their code # against Complement. # # It makes a Synapse image which represents the current checkout, # builds a synapse-complement image on top, then runs tests with it. # # By default the script will fetch the latest Complement main branch and # run tests with that. This can be overridden to use a custom Complement # checkout by setting the COMPLEMENT_DIR environment variable to the # filepath of a local Complement checkout or by setting the COMPLEMENT_REF # environment variable to pull a different branch or commit. # # To use the 'podman' command instead 'docker', set the PODMAN environment # variable. Example: # # PODMAN=1 ./complement.sh # # By default Synapse is run in monolith mode. This can be overridden by # setting the WORKERS environment variable. # # You can optionally give a "-f" argument (for "fast") before any to skip # rebuilding the docker images, if you just want to rerun the tests. # # Remaining commandline arguments are passed through to `go test`. For example, # you can supply a regular expression of test method names via the "-run" # argument: # # ./complement.sh -run "TestOutboundFederation(Profile|Send)" # # Specifying TEST_ONLY_SKIP_DEP_HASH_VERIFICATION=1 will cause `poetry export` # to not emit any hashes when building the Docker image. This then means that # you can use 'unverifiable' sources such as git repositories as dependencies. # Exit if a line returns a non-zero exit code set -e # Helper to emit annotations that collapse portions of the log in GitHub Actions echo_if_github() { if [[ -n "$GITHUB_WORKFLOW" ]]; then echo $* fi } # Helper to print out the usage instructions usage() { cat >&2 <... Run the complement test suite on Synapse. -f, --fast Skip rebuilding the docker images, and just use the most recent 'complement-synapse:latest' image. Conflicts with --build-only. --build-only Only build the Docker images. Don't actually run Complement. Conflicts with -f/--fast. -e, --editable Use an editable build of Synapse, rebuilding the image if necessary. This is suitable for use in development where a fast turn-around time is important. Not suitable for use in CI in case the editable environment is impure. --rebuild-editable Force a rebuild of the editable build of Synapse. This is occasionally useful if the built-in rebuild detection with --editable fails, e.g. when changing configure_workers_and_start.py. For help on arguments to 'go test', run 'go help testflag'. EOF } # parse our arguments skip_docker_build="" skip_complement_run="" while [ $# -ge 1 ]; do arg=$1 case "$arg" in "-h") usage exit 1 ;; "-f"|"--fast") skip_docker_build=1 ;; "--build-only") skip_complement_run=1 ;; "-e"|"--editable") use_editable_synapse=1 ;; "--rebuild-editable") rebuild_editable_synapse=1 ;; *) # unknown arg: presumably an argument to gotest. break the loop. break esac shift done # enable buildkit for the docker builds export DOCKER_BUILDKIT=1 # Determine whether to use the docker or podman container runtime. if [ -n "$PODMAN" ]; then export CONTAINER_RUNTIME=podman export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock export BUILDAH_FORMAT=docker export COMPLEMENT_HOSTNAME_RUNNING_COMPLEMENT=host.containers.internal else export CONTAINER_RUNTIME=docker fi # Change to the repository root cd "$(dirname $0)/.." # Check for a user-specified Complement checkout if [[ -z "$COMPLEMENT_DIR" ]]; then COMPLEMENT_REF=${COMPLEMENT_REF:-main} echo "COMPLEMENT_DIR not set. Fetching Complement checkout from ${COMPLEMENT_REF}..." wget -Nq https://github.com/matrix-org/complement/archive/${COMPLEMENT_REF}.tar.gz tar -xzf ${COMPLEMENT_REF}.tar.gz COMPLEMENT_DIR=complement-${COMPLEMENT_REF} echo "Checkout available at 'complement-${COMPLEMENT_REF}'" fi if [ -n "$use_editable_synapse" ]; then if [[ -e synapse/synapse_rust.abi3.so ]]; then # In an editable install, back up the host's compiled Rust module to prevent # inconvenience; the container will overwrite the module with its own copy. mv -n synapse/synapse_rust.abi3.so synapse/synapse_rust.abi3.so~host # And restore it on exit: synapse_pkg=`realpath synapse` trap "mv -f '$synapse_pkg/synapse_rust.abi3.so~host' '$synapse_pkg/synapse_rust.abi3.so'" EXIT fi editable_mount="$(realpath .):/editable-src:z" if [ -n "$rebuild_editable_synapse" ]; then unset skip_docker_build elif $CONTAINER_RUNTIME inspect complement-synapse-editable &>/dev/null; then # complement-synapse-editable already exists: see if we can still use it: # - The Rust module must still be importable; it will fail to import if the Rust source has changed. # - The Poetry lock file must be the same (otherwise we assume dependencies have changed) # First set up the module in the right place for an editable installation. $CONTAINER_RUNTIME run --rm -v $editable_mount --entrypoint 'cp' complement-synapse-editable -- /synapse_rust.abi3.so.bak /editable-src/synapse/synapse_rust.abi3.so if ($CONTAINER_RUNTIME run --rm -v $editable_mount --entrypoint 'python' complement-synapse-editable -c 'import synapse.synapse_rust' \ && $CONTAINER_RUNTIME run --rm -v $editable_mount --entrypoint 'diff' complement-synapse-editable --brief /editable-src/poetry.lock /poetry.lock.bak); then skip_docker_build=1 else echo "Editable Synapse image is stale. Will rebuild." unset skip_docker_build fi fi fi if [ -z "$skip_docker_build" ]; then if [ -n "$use_editable_synapse" ]; then # Build a special image designed for use in development with editable # installs. $CONTAINER_RUNTIME build -t synapse-editable \ -f "docker/editable.Dockerfile" . $CONTAINER_RUNTIME build -t synapse-workers-editable \ --build-arg FROM=synapse-editable \ -f "docker/Dockerfile-workers" . $CONTAINER_RUNTIME build -t complement-synapse-editable \ --build-arg FROM=synapse-workers-editable \ -f "docker/complement/Dockerfile" "docker/complement" # Prepare the Rust module $CONTAINER_RUNTIME run --rm -v $editable_mount --entrypoint 'cp' complement-synapse-editable -- /synapse_rust.abi3.so.bak /editable-src/synapse/synapse_rust.abi3.so else # Build the base Synapse image from the local checkout echo_if_github "::group::Build Docker image: matrixdotorg/synapse" $CONTAINER_RUNTIME build -t matrixdotorg/synapse \ --build-arg TEST_ONLY_SKIP_DEP_HASH_VERIFICATION \ --build-arg TEST_ONLY_IGNORE_POETRY_LOCKFILE \ -f "docker/Dockerfile" . echo_if_github "::endgroup::" # Build the workers docker image (from the base Synapse image we just built). echo_if_github "::group::Build Docker image: matrixdotorg/synapse-workers" $CONTAINER_RUNTIME build -t matrixdotorg/synapse-workers -f "docker/Dockerfile-workers" . echo_if_github "::endgroup::" # Build the unified Complement image (from the worker Synapse image we just built). echo_if_github "::group::Build Docker image: complement/Dockerfile" $CONTAINER_RUNTIME build -t complement-synapse \ -f "docker/complement/Dockerfile" "docker/complement" echo_if_github "::endgroup::" fi fi if [ -n "$skip_complement_run" ]; then echo "Skipping Complement run as requested." exit fi export COMPLEMENT_BASE_IMAGE=complement-synapse if [ -n "$use_editable_synapse" ]; then export COMPLEMENT_BASE_IMAGE=complement-synapse-editable export COMPLEMENT_HOST_MOUNTS="$editable_mount" fi extra_test_args=() test_packages="./tests/csapi ./tests ./tests/msc3874 ./tests/msc3890 ./tests/msc3391 ./tests/msc3930 ./tests/msc3902" # Enable dirty runs, so tests will reuse the same container where possible. # This significantly speeds up tests, but increases the possibility of test pollution. export COMPLEMENT_ENABLE_DIRTY_RUNS=1 # All environment variables starting with PASS_ will be shared. # (The prefix is stripped off before reaching the container.) export COMPLEMENT_SHARE_ENV_PREFIX=PASS_ # It takes longer than 10m to run the whole suite. extra_test_args+=("-timeout=60m") if [[ -n "$WORKERS" ]]; then # Use workers. export PASS_SYNAPSE_COMPLEMENT_USE_WORKERS=true # Pass through the workers defined. If none, it will be an empty string export PASS_SYNAPSE_WORKER_TYPES="$WORKER_TYPES" # Workers can only use Postgres as a database. export PASS_SYNAPSE_COMPLEMENT_DATABASE=postgres # And provide some more configuration to complement. # It can take quite a while to spin up a worker-mode Synapse for the first # time (the main problem is that we start 14 python processes for each test, # and complement likes to do two of them in parallel). export COMPLEMENT_SPAWN_HS_TIMEOUT_SECS=120 else export PASS_SYNAPSE_COMPLEMENT_USE_WORKERS= if [[ -n "$POSTGRES" ]]; then export PASS_SYNAPSE_COMPLEMENT_DATABASE=postgres else export PASS_SYNAPSE_COMPLEMENT_DATABASE=sqlite fi fi if [[ -n "$ASYNCIO_REACTOR" ]]; then # Enable the Twisted asyncio reactor export PASS_SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR=true fi if [[ -n "$UNIX_SOCKETS" ]]; then # Enable full on Unix socket mode for Synapse, Redis and Postgresql export PASS_SYNAPSE_USE_UNIX_SOCKET=1 fi if [[ -n "$SYNAPSE_TEST_LOG_LEVEL" ]]; then # Set the log level to what is desired export PASS_SYNAPSE_LOG_LEVEL="$SYNAPSE_TEST_LOG_LEVEL" # Allow logging sensitive things (currently SQL queries & parameters). # (This won't have any effect if we're not logging at DEBUG level overall.) # Since this is just a test suite, this is fine and won't reveal anyone's # personal information export PASS_SYNAPSE_LOG_SENSITIVE=1 fi # Log a few more useful things for a developer attempting to debug something # particularly tricky. export PASS_SYNAPSE_LOG_TESTING=1 # Run the tests! echo "Images built; running complement with ${extra_test_args[@]} $@ $test_packages" cd "$COMPLEMENT_DIR" go test -v -tags "synapse_blacklist" -count=1 "${extra_test_args[@]}" "$@" $test_packages synapse-1.100.0/scripts-dev/config-lint.sh000077500000000000000000000010321455622526000203510ustar00rootroot00000000000000#!/usr/bin/env bash # Find linting errors in Synapse's default config file. # Exits with 0 if there are no problems, or another code otherwise. # cd to the root of the repository cd "$(dirname "$0")/.." || exit # Restore backup of sample config upon script exit trap "mv docs/sample_config.yaml.bak docs/sample_config.yaml" EXIT # Fix non-lowercase true/false values sed -i.bak -E "s/: +True/: true/g; s/: +False/: false/g;" docs/sample_config.yaml # Check if anything changed diff docs/sample_config.yaml docs/sample_config.yaml.bak synapse-1.100.0/scripts-dev/database-save.sh000077500000000000000000000005521455622526000206460ustar00rootroot00000000000000#!/bin/sh # This script will write a dump file of local user state if you want to splat # your entire server database and start again but preserve the identity of # local users and their access tokens. # # To restore it, use # # $ sqlite3 homeserver.db < table-save.sql sqlite3 "$1" <<'EOF' >table-save.sql .dump users .dump access_tokens .dump profiles EOF synapse-1.100.0/scripts-dev/docker_update_debian_changelog.sh000077500000000000000000000054401455622526000242710ustar00rootroot00000000000000#!/bin/bash -e ## ## This file is licensed under the Affero General Public License (AGPL) version 3. ## ## Copyright (C) 2023 New Vector, Ltd ## ## This program is free software: you can redistribute it and/or modify ## it under the terms of the GNU Affero General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## See the GNU Affero General Public License for more details: ## . ## ## Originally licensed under the Apache License, Version 2.0: ## . ## ## [This file includes modifications made by New Vector Limited] ## ## # This script is meant to be used inside a Docker container to run the `dch` incantations # needed to release Synapse. This is useful on systems like macOS where such scripts are # not easily accessible. # # Running it (when if the current working directory is the root of the Synapse checkout): # docker run --rm -v $PWD:/synapse ubuntu:latest /synapse/scripts-dev/docker_update_debian_changelog.sh VERSION # # The image can be replaced by any other Debian-based image (as long as the `devscripts` # package exists in the default repository). # `VERSION` is the version of Synapse being released without the leading "v" (e.g. 1.42.0). # Check if a version was provided. if [ "$#" -ne 1 ]; then echo "Usage: update_debian_changelog.sh VERSION" echo "VERSION is the version of Synapse being released in the form 1.42.0 (without the leading \"v\")" exit 1 fi # Check that apt-get is available on the system. if ! which apt-get > /dev/null 2>&1; then echo "\"apt-get\" isn't available on this system. This script needs to be run in a Docker container using a Debian-based image." exit 1 fi # Check if devscripts is available in the default repos for this distro. # Update the apt package list cache. # We need to do this before we can search the apt cache or install devscripts. apt-get update || exit 1 if ! apt-cache search devscripts | grep -E "^devscripts \-" > /dev/null; then echo "The package \"devscripts\" needs to exist in the default repositories for this distribution." exit 1 fi # We set -x here rather than in the shebang so that if we need to exit early because no # version was provided, the message doesn't get drowned in useless output. set -x # Make the root of the Synapse checkout the current working directory. cd /synapse # Install devscripts (which provides dch). We need to make the Debian frontend # noninteractive because installing devscripts otherwise asks for the machine's location. DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts # Update the Debian changelog. ver=${1} dch -M -v "$(sed -Ee 's/(rc|a|b|c)/~\1/' <<<"$ver")" "New synapse release $ver." dch -M -r -D stable "" synapse-1.100.0/scripts-dev/dump_macaroon.py000077500000000000000000000010241455622526000210030ustar00rootroot00000000000000#!/usr/bin/env python import sys import pymacaroons if len(sys.argv) == 1: sys.stderr.write("usage: %s macaroon [key]\n" % (sys.argv[0],)) sys.exit(1) macaroon_string = sys.argv[1] key = sys.argv[2] if len(sys.argv) > 2 else None macaroon = pymacaroons.Macaroon.deserialize(macaroon_string) print(macaroon.inspect()) print("") verifier = pymacaroons.Verifier() verifier.satisfy_general(lambda c: True) try: verifier.verify(macaroon, key) print("Signature is correct") except Exception as e: print(str(e)) synapse-1.100.0/scripts-dev/federation_client.py000077500000000000000000000273561455622526000216550ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ Script for signing and sending federation requests. Some tips on doing the join dance with this: room_id=... user_id=... # make_join federation_client.py "/_matrix/federation/v1/make_join/$room_id/$user_id?ver=5" > make_join.json # sign jq -M .event make_join.json | sign_json --sign-event-room-version=$(jq -r .room_version make_join.json) -o signed-join.json # send_join federation_client.py -X PUT "/_matrix/federation/v2/send_join/$room_id/x" --body $( send_join.json """ import argparse import base64 import json import sys from typing import Any, Dict, Optional, Tuple from urllib import parse as urlparse import requests import signedjson.key import signedjson.types import srvlookup import yaml from requests import PreparedRequest, Response from requests.adapters import HTTPAdapter from urllib3 import HTTPConnectionPool # uncomment the following to enable debug logging of http requests # from http.client import HTTPConnection # HTTPConnection.debuglevel = 1 def encode_base64(input_bytes: bytes) -> str: """Encode bytes as a base64 string without any padding.""" input_len = len(input_bytes) output_len = 4 * ((input_len + 2) // 3) + (input_len + 2) % 3 - 2 output_bytes = base64.b64encode(input_bytes) output_string = output_bytes[:output_len].decode("ascii") return output_string def encode_canonical_json(value: object) -> bytes: return json.dumps( value, # Encode code-points outside of ASCII as UTF-8 rather than \u escapes ensure_ascii=False, # Remove unecessary white space. separators=(",", ":"), # Sort the keys of dictionaries. sort_keys=True, # Encode the resulting unicode as UTF-8 bytes. ).encode("UTF-8") def sign_json( json_object: Any, signing_key: signedjson.types.SigningKey, signing_name: str ) -> Any: signatures = json_object.pop("signatures", {}) unsigned = json_object.pop("unsigned", None) signed = signing_key.sign(encode_canonical_json(json_object)) signature_base64 = encode_base64(signed.signature) key_id = "%s:%s" % (signing_key.alg, signing_key.version) signatures.setdefault(signing_name, {})[key_id] = signature_base64 json_object["signatures"] = signatures if unsigned is not None: json_object["unsigned"] = unsigned return json_object def request( method: Optional[str], origin_name: str, origin_key: signedjson.types.SigningKey, destination: str, path: str, content: Optional[str], verify_tls: bool, ) -> requests.Response: if method is None: if content is None: method = "GET" else: method = "POST" json_to_sign = { "method": method, "uri": path, "origin": origin_name, "destination": destination, } if content is not None: json_to_sign["content"] = json.loads(content) signed_json = sign_json(json_to_sign, origin_key, origin_name) authorization_headers = [] for key, sig in signed_json["signatures"][origin_name].items(): header = 'X-Matrix origin=%s,key="%s",sig="%s",destination="%s"' % ( origin_name, key, sig, destination, ) authorization_headers.append(header) print("Authorization: %s" % header, file=sys.stderr) dest = "matrix-federation://%s%s" % (destination, path) print("Requesting %s" % dest, file=sys.stderr) s = requests.Session() s.mount("matrix-federation://", MatrixConnectionAdapter()) headers: Dict[str, str] = { "Authorization": authorization_headers[0], } if method == "POST": headers["Content-Type"] = "application/json" return s.request( method=method, url=dest, headers=headers, verify=verify_tls, data=content, stream=True, ) def main() -> None: parser = argparse.ArgumentParser( description="Signs and sends a federation request to a matrix homeserver" ) parser.add_argument( "-N", "--server-name", help="Name to give as the local homeserver. If unspecified, will be " "read from the config file.", ) parser.add_argument( "-k", "--signing-key-path", help="Path to the file containing the private ed25519 key to sign the " "request with.", ) parser.add_argument( "-c", "--config", default="homeserver.yaml", help="Path to server config file. Ignored if --server-name and " "--signing-key-path are both given.", ) parser.add_argument( "-d", "--destination", default="matrix.org", help="name of the remote homeserver. We will do SRV lookups and " "connect appropriately.", ) parser.add_argument( "-X", "--method", help="HTTP method to use for the request. Defaults to GET if --body is" "unspecified, POST if it is.", ) parser.add_argument("--body", help="Data to send as the body of the HTTP request") parser.add_argument( "--insecure", action="store_true", help="Disable TLS certificate verification", ) parser.add_argument( "path", help="request path, including the '/_matrix/federation/...' prefix." ) args = parser.parse_args() args.signing_key = None if args.signing_key_path: with open(args.signing_key_path) as f: args.signing_key = f.readline() if not args.server_name or not args.signing_key: read_args_from_config(args) assert isinstance(args.signing_key, str) algorithm, version, key_base64 = args.signing_key.split() key = signedjson.key.decode_signing_key_base64(algorithm, version, key_base64) result = request( args.method, args.server_name, key, args.destination, args.path, content=args.body, verify_tls=not args.insecure, ) sys.stderr.write("Status Code: %d\n" % (result.status_code,)) for chunk in result.iter_content(): # we write raw utf8 to stdout. sys.stdout.buffer.write(chunk) print("") def read_args_from_config(args: argparse.Namespace) -> None: with open(args.config) as fh: config = yaml.safe_load(fh) if not args.server_name: args.server_name = config["server_name"] if not args.signing_key: if "signing_key" in config: args.signing_key = config["signing_key"] else: with open(config["signing_key_path"]) as f: args.signing_key = f.readline() class MatrixConnectionAdapter(HTTPAdapter): def send( self, request: PreparedRequest, *args: Any, **kwargs: Any, ) -> Response: # overrides the send() method in the base class. # We need to look for .well-known redirects before passing the request up to # HTTPAdapter.send(). assert isinstance(request.url, str) parsed = urlparse.urlsplit(request.url) server_name = parsed.netloc well_known = self._get_well_known(parsed.netloc) if well_known: server_name = well_known # replace the scheme in the uri with https, so that cert verification is done # also replace the hostname if we got a .well-known result request.url = urlparse.urlunsplit( ("https", server_name, parsed.path, parsed.query, parsed.fragment) ) # at this point we also add the host header (otherwise urllib will add one # based on the `host` from the connection returned by `get_connection`, # which will be wrong if there is an SRV record). request.headers["Host"] = server_name return super().send(request, *args, **kwargs) def get_connection( self, url: str, proxies: Optional[Dict[str, str]] = None ) -> HTTPConnectionPool: # overrides the get_connection() method in the base class parsed = urlparse.urlsplit(url) (host, port, ssl_server_name) = self._lookup(parsed.netloc) print( f"Connecting to {host}:{port} with SNI {ssl_server_name}", file=sys.stderr ) return self.poolmanager.connection_from_host( host, port=port, scheme="https", pool_kwargs={"server_hostname": ssl_server_name}, ) @staticmethod def _lookup(server_name: str) -> Tuple[str, int, str]: """ Do an SRV lookup on a server name and return the host:port to connect to Given the server_name (after any .well-known lookup), return the host, port and the ssl server name """ if server_name[-1] == "]": # ipv6 literal (with no port) return server_name, 8448, server_name if ":" in server_name: # explicit port out = server_name.rsplit(":", 1) try: port = int(out[1]) except ValueError: raise ValueError("Invalid host:port '%s'" % (server_name,)) return out[0], port, out[0] # Look up SRV for Matrix 1.8 `matrix-fed` service first try: srv = srvlookup.lookup("matrix-fed", "tcp", server_name)[0] print( f"SRV lookup on _matrix-fed._tcp.{server_name} gave {srv}", file=sys.stderr, ) return srv.host, srv.port, server_name except Exception: pass # Fall back to deprecated `matrix` service try: srv = srvlookup.lookup("matrix", "tcp", server_name)[0] print( f"SRV lookup on _matrix._tcp.{server_name} gave {srv}", file=sys.stderr, ) return srv.host, srv.port, server_name except Exception: # Fall even further back to just port 8448 return server_name, 8448, server_name @staticmethod def _get_well_known(server_name: str) -> Optional[str]: if ":" in server_name: # explicit port, or ipv6 literal. Either way, no .well-known return None # TODO: check for ipv4 literals uri = f"https://{server_name}/.well-known/matrix/server" print(f"fetching {uri}", file=sys.stderr) try: resp = requests.get(uri) if resp.status_code != 200: print("%s gave %i" % (uri, resp.status_code), file=sys.stderr) return None parsed_well_known = resp.json() if not isinstance(parsed_well_known, dict): raise Exception("not a dict") if "m.server" not in parsed_well_known: raise Exception("Missing key 'm.server'") new_name = parsed_well_known["m.server"] print("well-known lookup gave %s" % (new_name,), file=sys.stderr) return new_name except Exception as e: print("Invalid response from %s: %s" % (uri, e), file=sys.stderr) return None if __name__ == "__main__": main() synapse-1.100.0/scripts-dev/generate_sample_config.sh000077500000000000000000000020311455622526000226200ustar00rootroot00000000000000#!/usr/bin/env bash # # Update/check the docs/sample_config.yaml set -e cd "$(dirname "$0")/.." SAMPLE_CONFIG="docs/sample_config.yaml" SAMPLE_LOG_CONFIG="docs/sample_log_config.yaml" check() { diff -u "$SAMPLE_LOG_CONFIG" <(synapse/_scripts/generate_log_config.py) >/dev/null || return 1 } if [ "$1" == "--check" ]; then diff -u "$SAMPLE_CONFIG" <(synapse/_scripts/generate_config.py --header-file docs/.sample_config_header.yaml) >/dev/null || { echo -e "\e[1m\e[31m$SAMPLE_CONFIG is not up-to-date. Regenerate it with \`scripts-dev/generate_sample_config.sh\`.\e[0m" >&2 exit 1 } diff -u "$SAMPLE_LOG_CONFIG" <(synapse/_scripts/generate_log_config.py) >/dev/null || { echo -e "\e[1m\e[31m$SAMPLE_LOG_CONFIG is not up-to-date. Regenerate it with \`scripts-dev/generate_sample_config.sh\`.\e[0m" >&2 exit 1 } else synapse/_scripts/generate_config.py --header-file docs/.sample_config_header.yaml -o "$SAMPLE_CONFIG" synapse/_scripts/generate_log_config.py -o "$SAMPLE_LOG_CONFIG" fi synapse-1.100.0/scripts-dev/lint.sh000077500000000000000000000100621455622526000171110ustar00rootroot00000000000000#!/usr/bin/env bash # # Runs linting scripts over the local Synapse checkout # black - opinionated code formatter # ruff - lints and finds mistakes set -e usage() { echo echo "Usage: $0 [-h] [-d] [paths...]" echo echo "-d" echo " Lint files that have changed since the last git commit." echo echo " If paths are provided and this option is set, both provided paths and those" echo " that have changed since the last commit will be linted." echo echo " If no paths are provided and this option is not set, all files will be linted." echo echo " Note that paths with a file extension that is not '.py' will be excluded." echo "-h" echo " Display this help text." } USING_DIFF=0 files=() while getopts ":dh" opt; do case $opt in d) USING_DIFF=1 ;; h) usage exit ;; \?) echo "ERROR: Invalid option: -$OPTARG" >&2 usage exit ;; esac done # Strip any options from the command line arguments now that # we've finished processing them shift "$((OPTIND-1))" if [ $USING_DIFF -eq 1 ]; then # Check both staged and non-staged changes for path in $(git diff HEAD --name-only); do filename=$(basename "$path") file_extension="${filename##*.}" # If an extension is present, and it's something other than 'py', # then ignore this file if [[ -n ${file_extension+x} && $file_extension != "py" ]]; then continue fi # Append this path to our list of files to lint files+=("$path") done fi # Append any remaining arguments as files to lint files+=("$@") if [[ $USING_DIFF -eq 1 ]]; then # If we were asked to lint changed files, and no paths were found as a result... if [ ${#files[@]} -eq 0 ]; then # Then print and exit echo "No files found to lint." exit 0 fi else # If we were not asked to lint changed files, and no paths were found as a result, # then lint everything! if [[ -z ${files+x} ]]; then # CI runs each linter on the entire checkout, e.g. `black .`. So don't # rely on this list to *find* lint targets if that misses a file; instead; # use it to exclude files from linters when this can't be done by config. # # To check which files the linters examine, use: # black --verbose . 2>&1 | \grep -v ignored # isort --show-files . # flake8 --verbose . # This isn't a great option # mypy has explicit config in mypy.ini; there is also mypy --verbose files=( "synapse" "docker" "tests" "scripts-dev" "contrib" "synmark" "stubs" ".ci" "dev-docs" ) fi fi echo "Linting these paths: ${files[*]}" echo # Print out the commands being run set -x # Ensure the sort order of imports. isort "${files[@]}" # Ensure Python code conforms to an opinionated style. python3 -m black "${files[@]}" # Ensure the sample configuration file conforms to style checks. ./scripts-dev/config-lint.sh # Catch any common programming mistakes in Python code. # --quiet suppresses the update check. ruff --quiet --fix "${files[@]}" # Catch any common programming mistakes in Rust code. # # --bins, --examples, --lib, --tests combined explicitly disable checking # the benchmarks, which can fail due to `#![feature]` macros not being # allowed on the stable rust toolchain (rustc error E0554). # # --allow-staged and --allow-dirty suppress clippy raising errors # for uncommitted files. Only needed when using --fix. # # -D warnings disables the "warnings" lint. # # Using --fix has a tendency to cause subsequent runs of clippy to recompile # rust code, which can slow down this script. Thus we run clippy without --fix # first which is quick, and then re-run it with --fix if an error was found. if ! cargo-clippy --bins --examples --lib --tests -- -D warnings > /dev/null 2>&1; then cargo-clippy \ --bins --examples --lib --tests --allow-staged --allow-dirty --fix -- -D warnings fi # Ensure the formatting of Rust code. cargo-fmt # Ensure all Pydantic models use strict types. ./scripts-dev/check_pydantic_models.py lint # Ensure type hints are correct. mypy synapse-1.100.0/scripts-dev/make_full_schema.sh000077500000000000000000000262641455622526000214350ustar00rootroot00000000000000#!/usr/bin/env bash # # This script generates SQL files for creating a brand new Synapse DB with the latest # schema, on both SQLite3 and Postgres. export PGHOST="localhost" POSTGRES_MAIN_DB_NAME="synapse_full_schema_main.$$" POSTGRES_COMMON_DB_NAME="synapse_full_schema_common.$$" POSTGRES_STATE_DB_NAME="synapse_full_schema_state.$$" REQUIRED_DEPS=("matrix-synapse" "psycopg2") usage() { echo echo "Usage: $0 -p -o [-c] [-n ] [-h]" echo echo "-p " echo " Username to connect to local postgres instance. The password will be requested" echo " during script execution." echo "-c" echo " CI mode. Prints every command that the script runs." echo "-o " echo " Directory to output full schema files to. You probably want to use" echo " '-o synapse/storage/schema'" echo "-n " echo " Schema number for the new snapshot. Used to set the location of files within " echo " the output directory, mimicking that of synapse/storage/schemas." echo " Defaults to 9999." echo "-h" echo " Display this help text." echo "" echo "" echo "You probably want to invoke this with something like" echo " docker run --rm -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_DB=synapse -p 5432:5432 postgres:11-alpine" echo " echo postgres | scripts-dev/make_full_schema.sh -p postgres -n MY_SCHEMA_NUMBER -o synapse/storage/schema" echo "" echo " NB: make sure to run this against the *oldest* supported version of postgres," echo " or else pg_dump might output non-backwards-compatible syntax." } SCHEMA_NUMBER="9999" while getopts "p:co:hn:" opt; do case $opt in p) export PGUSER=$OPTARG ;; c) # Print all commands that are being executed set -x ;; o) command -v realpath > /dev/null || (echo "The -o flag requires the 'realpath' binary to be installed" && exit 1) OUTPUT_DIR="$(realpath "$OPTARG")" ;; h) usage exit ;; n) SCHEMA_NUMBER="$OPTARG" ;; \?) echo "ERROR: Invalid option: -$OPTARG" >&2 usage exit ;; esac done # Check that required dependencies are installed unsatisfied_requirements=() for dep in "${REQUIRED_DEPS[@]}"; do pip show "$dep" --quiet || unsatisfied_requirements+=("$dep") done if [ ${#unsatisfied_requirements} -ne 0 ]; then echo "Please install the following python packages: ${unsatisfied_requirements[*]}" exit 1 fi if [ -z "$PGUSER" ]; then echo "No postgres username supplied" usage exit 1 fi if [ -z "$OUTPUT_DIR" ]; then echo "No output directory supplied" usage exit 1 fi # Create the output directory if it doesn't exist mkdir -p "$OUTPUT_DIR" read -rsp "Postgres password for '$PGUSER': " PGPASSWORD echo "" export PGPASSWORD # Exit immediately if a command fails set -e # cd to root of the synapse directory cd "$(dirname "$0")/.." # Create temporary SQLite and Postgres homeserver db configs and key file TMPDIR=$(mktemp -d) KEY_FILE=$TMPDIR/test.signing.key # default Synapse signing key path SQLITE_CONFIG=$TMPDIR/sqlite.conf SQLITE_MAIN_DB=$TMPDIR/main.db SQLITE_STATE_DB=$TMPDIR/state.db SQLITE_COMMON_DB=$TMPDIR/common.db POSTGRES_CONFIG=$TMPDIR/postgres.conf # Ensure these files are delete on script exit cleanup() { echo "Cleaning up temporary sqlite database and config files..." rm -r "$TMPDIR" echo "Cleaning up temporary Postgres database..." dropdb --if-exists "$POSTGRES_COMMON_DB_NAME" dropdb --if-exists "$POSTGRES_MAIN_DB_NAME" dropdb --if-exists "$POSTGRES_STATE_DB_NAME" } trap 'cleanup' EXIT cat > "$SQLITE_CONFIG" < "$POSTGRES_CONFIG" < "$OUTPUT_DIR/common/full_schemas/$SCHEMA_NUMBER/full.sql.sqlite" sqlite3 "$SQLITE_COMMON_DB" ".dump --data-only --nosys" >> "$OUTPUT_DIR/common/full_schemas/$SCHEMA_NUMBER/full.sql.sqlite" sqlite3 "$SQLITE_MAIN_DB" ".schema" > "$OUTPUT_DIR/main/full_schemas/$SCHEMA_NUMBER/full.sql.sqlite" sqlite3 "$SQLITE_MAIN_DB" ".dump --data-only --nosys" >> "$OUTPUT_DIR/main/full_schemas/$SCHEMA_NUMBER/full.sql.sqlite" sqlite3 "$SQLITE_STATE_DB" ".schema" > "$OUTPUT_DIR/state/full_schemas/$SCHEMA_NUMBER/full.sql.sqlite" sqlite3 "$SQLITE_STATE_DB" ".dump --data-only --nosys" >> "$OUTPUT_DIR/state/full_schemas/$SCHEMA_NUMBER/full.sql.sqlite" cleanup_pg_schema() { # Cleanup as follows: # - Remove empty lines. pg_dump likes to output a lot of these. # - Remove comment-only lines. pg_dump also likes to output a lot of these to visually # separate tables etc. # - Remove "public." prefix --- the schema name. # - Remove "SET" commands. Last time I ran this, the output commands were # SET statement_timeout = 0; # SET lock_timeout = 0; # SET idle_in_transaction_session_timeout = 0; # SET client_encoding = 'UTF8'; # SET standard_conforming_strings = on; # SET check_function_bodies = false; # SET xmloption = content; # SET client_min_messages = warning; # SET row_security = off; # SET default_table_access_method = heap; # - Very carefully remove specific SELECT statements. We CANNOT blanket remove all # SELECT statements because some of those have side-effects which we do want in the # schema. Last time I ran this, the only SELECTS were # SELECT pg_catalog.set_config('search_path', '', false); # and # SELECT pg_catalog.setval(text, bigint, bool); # We do want to remove the former, but the latter is important. If the last argument # is `true` or omitted, this marks the given integer as having been consumed and # will NOT appear as the nextval. sed -e '/^$/d' \ -e '/^--/d' \ -e 's/public\.//g' \ -e '/^SET /d' \ -e '/^SELECT pg_catalog.set_config/d' } echo "Dumping Postgres schema..." pg_dump --format=plain --schema-only --no-tablespaces --no-acl --no-owner "$POSTGRES_COMMON_DB_NAME" | cleanup_pg_schema > "$OUTPUT_DIR/common/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" pg_dump --format=plain --data-only --inserts --no-tablespaces --no-acl --no-owner "$POSTGRES_COMMON_DB_NAME" | cleanup_pg_schema >> "$OUTPUT_DIR/common/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" pg_dump --format=plain --schema-only --no-tablespaces --no-acl --no-owner "$POSTGRES_MAIN_DB_NAME" | cleanup_pg_schema > "$OUTPUT_DIR/main/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" pg_dump --format=plain --data-only --inserts --no-tablespaces --no-acl --no-owner "$POSTGRES_MAIN_DB_NAME" | cleanup_pg_schema >> "$OUTPUT_DIR/main/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" pg_dump --format=plain --schema-only --no-tablespaces --no-acl --no-owner "$POSTGRES_STATE_DB_NAME" | cleanup_pg_schema > "$OUTPUT_DIR/state/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" pg_dump --format=plain --data-only --inserts --no-tablespaces --no-acl --no-owner "$POSTGRES_STATE_DB_NAME" | cleanup_pg_schema >> "$OUTPUT_DIR/state/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" if [[ "$OUTPUT_DIR" == *synapse/storage/schema ]]; then echo "Updating contrib/datagrip symlinks..." ln -sf "../../synapse/storage/schema/common/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" "contrib/datagrip/common.sql" ln -sf "../../synapse/storage/schema/main/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" "contrib/datagrip/main.sql" ln -sf "../../synapse/storage/schema/state/full_schemas/$SCHEMA_NUMBER/full.sql.postgres" "contrib/datagrip/state.sql" else echo "Not updating contrib/datagrip symlinks (unknown output directory)" fi echo "Done! Files dumped to: $OUTPUT_DIR" synapse-1.100.0/scripts-dev/mypy_synapse_plugin.py000066400000000000000000000306701455622526000223030ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """This is a mypy plugin for Synpase to deal with some of the funky typing that can crop up, e.g the cache descriptors. """ from typing import Callable, Optional, Tuple, Type, Union import mypy.types from mypy.erasetype import remove_instance_last_known_values from mypy.errorcodes import ErrorCode from mypy.nodes import ARG_NAMED_OPT, TempNode, Var from mypy.plugin import FunctionSigContext, MethodSigContext, Plugin from mypy.typeops import bind_self from mypy.types import ( AnyType, CallableType, Instance, NoneType, TupleType, TypeAliasType, UninhabitedType, UnionType, ) class SynapsePlugin(Plugin): def get_method_signature_hook( self, fullname: str ) -> Optional[Callable[[MethodSigContext], CallableType]]: if fullname.startswith( ( "synapse.util.caches.descriptors.CachedFunction.__call__", "synapse.util.caches.descriptors._LruCachedFunction.__call__", ) ): return cached_function_method_signature if fullname in ( "synapse.util.caches.descriptors._CachedFunctionDescriptor.__call__", "synapse.util.caches.descriptors._CachedListFunctionDescriptor.__call__", ): return check_is_cacheable_wrapper return None def _get_true_return_type(signature: CallableType) -> mypy.types.Type: """ Get the "final" return type of a callable which might return an Awaitable/Deferred. """ if isinstance(signature.ret_type, Instance): # If a coroutine, unwrap the coroutine's return type. if signature.ret_type.type.fullname == "typing.Coroutine": return signature.ret_type.args[2] # If an awaitable, unwrap the awaitable's final value. elif signature.ret_type.type.fullname == "typing.Awaitable": return signature.ret_type.args[0] # If a Deferred, unwrap the Deferred's final value. elif signature.ret_type.type.fullname == "twisted.internet.defer.Deferred": return signature.ret_type.args[0] # Otherwise, return the raw value of the function. return signature.ret_type def cached_function_method_signature(ctx: MethodSigContext) -> CallableType: """Fixes the `CachedFunction.__call__` signature to be correct. It already has *almost* the correct signature, except: 1. the `self` argument needs to be marked as "bound"; 2. any `cache_context` argument should be removed; 3. an optional keyword argument `on_invalidated` should be added. 4. Wrap the return type to always be a Deferred. """ # 1. Mark this as a bound function signature. signature: CallableType = bind_self(ctx.default_signature) # 2. Remove any "cache_context" args. # # Note: We should be only doing this if `cache_context=True` is set, but if # it isn't then the code will raise an exception when its called anyway, so # it's not the end of the world. context_arg_index = None for idx, name in enumerate(signature.arg_names): if name == "cache_context": context_arg_index = idx break arg_types = list(signature.arg_types) arg_names = list(signature.arg_names) arg_kinds = list(signature.arg_kinds) if context_arg_index: arg_types.pop(context_arg_index) arg_names.pop(context_arg_index) arg_kinds.pop(context_arg_index) # 3. Add an optional "on_invalidate" argument. # # This is a either # - a callable which accepts no input and returns nothing, or # - None. calltyp = UnionType( [ NoneType(), CallableType( arg_types=[], arg_kinds=[], arg_names=[], ret_type=NoneType(), fallback=ctx.api.named_generic_type("builtins.function", []), ), ] ) arg_types.append(calltyp) arg_names.append("on_invalidate") arg_kinds.append(ARG_NAMED_OPT) # Arg is an optional kwarg. # 4. Ensure the return type is a Deferred. ret_arg = _get_true_return_type(signature) # This should be able to use ctx.api.named_generic_type, but that doesn't seem # to find the correct symbol for anything more than 1 module deep. # # modules is not part of CheckerPluginInterface. The following is a combination # of TypeChecker.named_generic_type and TypeChecker.lookup_typeinfo. sym = ctx.api.modules["twisted.internet.defer"].names.get("Deferred") # type: ignore[attr-defined] ret_type = Instance(sym.node, [remove_instance_last_known_values(ret_arg)]) signature = signature.copy_modified( arg_types=arg_types, arg_names=arg_names, arg_kinds=arg_kinds, ret_type=ret_type, ) return signature def check_is_cacheable_wrapper(ctx: MethodSigContext) -> CallableType: """Asserts that the signature of a method returns a value which can be cached. Makes no changes to the provided method signature. """ # The true signature, this isn't being modified so this is what will be returned. signature: CallableType = ctx.default_signature if not isinstance(ctx.args[0][0], TempNode): ctx.api.note("Cached function is not a TempNode?!", ctx.context) # type: ignore[attr-defined] return signature orig_sig = ctx.args[0][0].type if not isinstance(orig_sig, CallableType): ctx.api.fail("Cached 'function' is not a callable", ctx.context) return signature check_is_cacheable(orig_sig, ctx) return signature def check_is_cacheable( signature: CallableType, ctx: Union[MethodSigContext, FunctionSigContext], ) -> None: """ Check if a callable returns a type which can be cached. Args: signature: The callable to check. ctx: The signature context, used for error reporting. """ # Unwrap the true return type from the cached function. return_type = _get_true_return_type(signature) verbose = ctx.api.options.verbosity >= 1 # TODO Technically a cachedList only needs immutable values, but forcing them # to return Mapping instead of Dict is fine. ok, note = is_cacheable(return_type, signature, verbose) if ok: message = f"function {signature.name} is @cached, returning {return_type}" else: message = f"function {signature.name} is @cached, but has mutable return value {return_type}" if note: message += f" ({note})" message = message.replace("builtins.", "").replace("typing.", "") if ok and note: ctx.api.note(message, ctx.context) # type: ignore[attr-defined] elif not ok: ctx.api.fail(message, ctx.context, code=AT_CACHED_MUTABLE_RETURN) # Immutable simple values. IMMUTABLE_VALUE_TYPES = { "builtins.bool", "builtins.int", "builtins.float", "builtins.str", "builtins.bytes", } # Types defined in Synapse which are known to be immutable. IMMUTABLE_CUSTOM_TYPES = { "synapse.synapse_rust.acl.ServerAclEvaluator", "synapse.synapse_rust.push.FilteredPushRules", # This is technically not immutable, but close enough. "signedjson.types.VerifyKey", } # Immutable containers only if the values are also immutable. IMMUTABLE_CONTAINER_TYPES_REQUIRING_IMMUTABLE_ELEMENTS = { "builtins.frozenset", "builtins.tuple", "typing.AbstractSet", "typing.Sequence", "immutabledict.immutabledict", } MUTABLE_CONTAINER_TYPES = { "builtins.set", "builtins.list", "builtins.dict", } AT_CACHED_MUTABLE_RETURN = ErrorCode( "synapse-@cached-mutable", "@cached() should have an immutable return type", "General", ) def is_cacheable( rt: mypy.types.Type, signature: CallableType, verbose: bool ) -> Tuple[bool, Optional[str]]: """ Check if a particular type is cachable. A type is cachable if it is immutable; for complex types this recurses to check each type parameter. Returns: a 2-tuple (cacheable, message). - cachable: False means the type is definitely not cacheable; true means anything else. - Optional message. """ # This should probably be done via a TypeVisitor. Apologies to the reader! if isinstance(rt, AnyType): return True, ("may be mutable" if verbose else None) elif isinstance(rt, Instance): if ( rt.type.fullname in IMMUTABLE_VALUE_TYPES or rt.type.fullname in IMMUTABLE_CUSTOM_TYPES ): # "Simple" types are generally immutable. return True, None elif rt.type.fullname == "typing.Mapping": # Generally mapping keys are immutable, but they only *have* to be # hashable, which doesn't imply immutability. E.g. Mapping[K, V] # is cachable iff K and V are cachable. return is_cacheable(rt.args[0], signature, verbose) and is_cacheable( rt.args[1], signature, verbose ) elif rt.type.fullname in IMMUTABLE_CONTAINER_TYPES_REQUIRING_IMMUTABLE_ELEMENTS: # E.g. Collection[T] is cachable iff T is cachable. return is_cacheable(rt.args[0], signature, verbose) elif rt.type.fullname in MUTABLE_CONTAINER_TYPES: # Mutable containers are mutable regardless of their underlying type. return False, None elif "attrs" in rt.type.metadata: # attrs classes are only cachable iff it is frozen (immutable itself) # and all attributes are cachable. frozen = rt.type.metadata["attrs"]["frozen"] if frozen: for attribute in rt.type.metadata["attrs"]["attributes"]: attribute_name = attribute["name"] symbol_node = rt.type.names[attribute_name].node assert isinstance(symbol_node, Var) assert symbol_node.type is not None ok, note = is_cacheable(symbol_node.type, signature, verbose) if not ok: return False, f"non-frozen attrs property: {attribute_name}" # All attributes were frozen. return True, None else: return False, "non-frozen attrs class" else: # Ensure we fail for unknown types, these generally means that the # above code is not complete. return ( False, f"Don't know how to handle {rt.type.fullname} return type instance", ) elif isinstance(rt, NoneType): # None is cachable. return True, None elif isinstance(rt, (TupleType, UnionType)): # Tuples and unions are cachable iff all their items are cachable. for item in rt.items: ok, note = is_cacheable(item, signature, verbose) if not ok: return False, note # This discards notes but that's probably fine return True, None elif isinstance(rt, TypeAliasType): # For a type alias, check if the underlying real type is cachable. return is_cacheable(mypy.types.get_proper_type(rt), signature, verbose) elif isinstance(rt, UninhabitedType) and rt.is_noreturn: # There is no return value, just consider it cachable. This is only used # in tests. return True, None else: # Ensure we fail for unknown types, these generally means that the # above code is not complete. return False, f"Don't know how to handle {type(rt).__qualname__} return type" def plugin(version: str) -> Type[SynapsePlugin]: # This is the entry point of the plugin, and lets us deal with the fact # that the mypy plugin interface is *not* stable by looking at the version # string. # # However, since we pin the version of mypy Synapse uses in CI, we don't # really care. return SynapsePlugin synapse-1.100.0/scripts-dev/next_github_number.sh000077500000000000000000000004641455622526000220400ustar00rootroot00000000000000#!/usr/bin/env bash set -e # Fetch the current GitHub issue number, add one to it -- presto! The likely # next PR number. CURRENT_NUMBER=$(curl -s "https://api.github.com/repos/element-hq/synapse/issues?state=all&per_page=1" | jq -r ".[0].number") CURRENT_NUMBER=$((CURRENT_NUMBER+1)) echo $CURRENT_NUMBER synapse-1.100.0/scripts-dev/release.py000077500000000000000000000743711455622526000176160ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """An interactive script for doing a release. See `cli()` below. """ import glob import json import os import re import subprocess import sys import time import urllib.request from os import path from tempfile import TemporaryDirectory from typing import Any, List, Match, Optional, Union import attr import click import commonmark import git from click.exceptions import ClickException from git import GitCommandError, Repo from github import Github from packaging import version def run_until_successful( command: str, *args: Any, **kwargs: Any ) -> subprocess.CompletedProcess: while True: completed_process = subprocess.run(command, *args, **kwargs) exit_code = completed_process.returncode if exit_code == 0: # successful, so nothing more to do here. return completed_process print(f"The command {command!r} failed with exit code {exit_code}.") print("Please try to correct the failure and then re-run.") click.confirm("Try again?", abort=True) @click.group() def cli() -> None: """An interactive script to walk through the parts of creating a release. Requirements: - The dev dependencies be installed, which can be done via: pip install -e .[dev] - A checkout of the sytest repository at ../sytest Then to use: ./scripts-dev/release.py prepare # ... ask others to look at the changelog ... ./scripts-dev/release.py tag # wait for assets to build, either manually or with: ./scripts-dev/release.py wait-for-actions ./scripts-dev/release.py publish ./scripts-dev/release.py upload ./scripts-dev/release.py merge-back # Optional: generate some nice links for the announcement ./scripts-dev/release.py announce Alternatively, `./scripts-dev/release.py full` will do all the above as well as guiding you through the manual steps. If the env var GH_TOKEN (or GITHUB_TOKEN) is set, or passed into the `tag`/`publish` command, then a new draft release will be created/published. """ @cli.command() def prepare() -> None: _prepare() def _prepare() -> None: """Do the initial stages of creating a release, including creating release branch, updating changelog and pushing to GitHub. """ # Make sure we're in a git repo. synapse_repo = get_repo_and_check_clean_checkout() sytest_repo = get_repo_and_check_clean_checkout("../sytest", "sytest") click.secho("Updating Synapse and Sytest git repos...") synapse_repo.remote().fetch() sytest_repo.remote().fetch() # Get the current version and AST from root Synapse module. current_version = get_package_version() # Figure out what sort of release we're doing and calcuate the new version. rc = click.confirm("RC", default=True) if current_version.pre: # If the current version is an RC we don't need to bump any of the # version numbers (other than the RC number). if rc: new_version = "{}.{}.{}rc{}".format( current_version.major, current_version.minor, current_version.micro, current_version.pre[1] + 1, ) else: new_version = "{}.{}.{}".format( current_version.major, current_version.minor, current_version.micro, ) else: # If this is a new release cycle then we need to know if it's a minor # or a patch version bump. release_type = click.prompt( "Release type", type=click.Choice(("minor", "patch")), show_choices=True, default="minor", ) if release_type == "minor": if rc: new_version = "{}.{}.{}rc1".format( current_version.major, current_version.minor + 1, 0, ) else: new_version = "{}.{}.{}".format( current_version.major, current_version.minor + 1, 0, ) else: if rc: new_version = "{}.{}.{}rc1".format( current_version.major, current_version.minor, current_version.micro + 1, ) else: new_version = "{}.{}.{}".format( current_version.major, current_version.minor, current_version.micro + 1, ) # Confirm the calculated version is OK. if not click.confirm(f"Create new version: {new_version}?", default=True): click.get_current_context().abort() # Switch to the release branch. parsed_new_version = version.parse(new_version) # We assume for debian changelogs that we only do RCs or full releases. assert not parsed_new_version.is_devrelease assert not parsed_new_version.is_postrelease release_branch_name = get_release_branch_name(parsed_new_version) release_branch = find_ref(synapse_repo, release_branch_name) if release_branch: if release_branch.is_remote(): # If the release branch only exists on the remote we check it out # locally. synapse_repo.git.checkout(release_branch_name) else: # If a branch doesn't exist we create one. We ask which one branch it # should be based off, defaulting to sensible values depending on the # release type. if current_version.is_prerelease: default = release_branch_name elif release_type == "minor": default = "develop" else: default = "master" branch_name = click.prompt( "Which branch should the release be based on?", default=default ) for repo_name, repo in {"synapse": synapse_repo, "sytest": sytest_repo}.items(): base_branch = find_ref(repo, branch_name) if not base_branch: print(f"Could not find base branch {branch_name} for {repo_name}!") click.get_current_context().abort() # Check out the base branch and ensure it's up to date repo.head.set_reference( base_branch, f"check out the base branch for {repo_name}" ) repo.head.reset(index=True, working_tree=True) if not base_branch.is_remote(): update_branch(repo) # Create the new release branch repo.create_head(release_branch_name, commit=base_branch) # Special-case SyTest: we don't actually prepare any files so we may # as well push it now (and only when we create a release branch; # not on subsequent RCs or full releases). if click.confirm("Push new SyTest branch?", default=True): sytest_repo.git.push("-u", sytest_repo.remote().name, release_branch_name) # Switch to the release branch and ensure it's up to date. synapse_repo.git.checkout(release_branch_name) update_branch(synapse_repo) # Update the version specified in pyproject.toml. subprocess.check_output(["poetry", "version", new_version]) # Generate changelogs. generate_and_write_changelog(synapse_repo, current_version, new_version) # Generate debian changelogs if parsed_new_version.pre is not None: # If this is an RC then we need to coerce the version string to match # Debian norms, e.g. 1.39.0rc2 gets converted to 1.39.0~rc2. base_ver = parsed_new_version.base_version pre_type, pre_num = parsed_new_version.pre debian_version = f"{base_ver}~{pre_type}{pre_num}" else: debian_version = new_version if sys.platform == "darwin": run_until_successful( f"docker run --rm -v .:/synapse ubuntu:latest /synapse/scripts-dev/docker_update_debian_changelog.sh {new_version}", shell=True, ) else: run_until_successful( f'dch -M -v {debian_version} "New Synapse release {new_version}."', shell=True, ) run_until_successful('dch -M -r -D stable ""', shell=True) # Show the user the changes and ask if they want to edit the change log. synapse_repo.git.add("-u") subprocess.run("git diff --cached", shell=True) if click.confirm("Edit changelog?", default=False): click.edit(filename="CHANGES.md") # Commit the changes. synapse_repo.git.add("-u") synapse_repo.git.commit("-m", new_version) # We give the option to bail here in case the user wants to make sure things # are OK before pushing. if not click.confirm("Push branch to github?", default=True): print("") print("Run when ready to push:") print("") print( f"\tgit push -u {synapse_repo.remote().name} {synapse_repo.active_branch.name}" ) print("") sys.exit(0) # Otherwise, push and open the changelog in the browser. synapse_repo.git.push( "-u", synapse_repo.remote().name, synapse_repo.active_branch.name ) print("Opening the changelog in your browser...") print("Please ask #synapse-dev to give it a check.") click.launch( f"https://github.com/element-hq/synapse/blob/{synapse_repo.active_branch.name}/CHANGES.md" ) @cli.command() @click.option("--gh-token", envvar=["GH_TOKEN", "GITHUB_TOKEN"]) def tag(gh_token: Optional[str]) -> None: _tag(gh_token) def _tag(gh_token: Optional[str]) -> None: """Tags the release and generates a draft GitHub release""" # Make sure we're in a git repo. repo = get_repo_and_check_clean_checkout() click.secho("Updating git repo...") repo.remote().fetch() # Find out the version and tag name. current_version = get_package_version() tag_name = f"v{current_version}" # Check we haven't released this version. if tag_name in repo.tags: raise click.ClickException(f"Tag {tag_name} already exists!\n") # Check we're on the right release branch release_branch = get_release_branch_name(current_version) if repo.active_branch.name != release_branch: click.echo( f"Need to be on the release branch ({release_branch}) before tagging. " f"Currently on ({repo.active_branch.name})." ) click.get_current_context().abort() # Get the appropriate changelogs and tag. changes = get_changes_for_version(current_version) click.echo_via_pager(changes) if click.confirm("Edit text?", default=False): edited_changes = click.edit(changes, require_save=False) # This assert is for mypy's benefit. click's docs are a little unclear, but # when `require_save=False`, not saving the temp file in the editor returns # the original string. assert edited_changes is not None changes = edited_changes repo.create_tag(tag_name, message=changes, sign=True) if not click.confirm("Push tag to GitHub?", default=True): print("") print("Run when ready to push:") print("") print(f"\tgit push {repo.remote().name} tag {current_version}") print("") return repo.git.push(repo.remote().name, "tag", tag_name) # If no token was given, we bail here if not gh_token: print("Launching the GitHub release page in your browser.") print("Please correct the title and create a draft.") if current_version.is_prerelease: print("As this is an RC, remember to mark it as a pre-release!") print("(by the way, this step can be automated by passing --gh-token,") print("or one of the GH_TOKEN or GITHUB_TOKEN env vars.)") click.launch(f"https://github.com/element-hq/synapse/releases/edit/{tag_name}") print("Once done, you need to wait for the release assets to build.") if click.confirm("Launch the release assets actions page?", default=True): click.launch( f"https://github.com/element-hq/synapse/actions?query=branch%3A{tag_name}" ) return # Create a new draft release gh = Github(gh_token) gh_repo = gh.get_repo("element-hq/synapse") release = gh_repo.create_git_release( tag=tag_name, name=tag_name, message=changes, draft=True, prerelease=current_version.is_prerelease, ) # Open the release and the actions where we are building the assets. print("Launching the release page and the actions page.") click.launch(release.html_url) click.launch( f"https://github.com/element-hq/synapse/actions?query=branch%3A{tag_name}" ) click.echo("Wait for release assets to be built") @cli.command() @click.option("--gh-token", envvar=["GH_TOKEN", "GITHUB_TOKEN"], required=True) def publish(gh_token: str) -> None: _publish(gh_token) def _publish(gh_token: str) -> None: """Publish release on GitHub.""" # Make sure we're in a git repo. get_repo_and_check_clean_checkout() current_version = get_package_version() tag_name = f"v{current_version}" if not click.confirm(f"Publish release {tag_name} on GitHub?", default=True): return # Publish the draft release gh = Github(gh_token) gh_repo = gh.get_repo("element-hq/synapse") for release in gh_repo.get_releases(): if release.title == tag_name: break else: raise ClickException(f"Failed to find GitHub release for {tag_name}") assert release.title == tag_name if not release.draft: click.echo("Release already published.") return release = release.update_release( name=release.title, message=release.body, tag_name=release.tag_name, prerelease=release.prerelease, draft=False, ) @cli.command() @click.option("--gh-token", envvar=["GH_TOKEN", "GITHUB_TOKEN"], required=False) def upload(gh_token: Optional[str]) -> None: _upload(gh_token) def _upload(gh_token: Optional[str]) -> None: """Upload release to pypi.""" current_version = get_package_version() tag_name = f"v{current_version}" # Check we have the right tag checked out. repo = get_repo_and_check_clean_checkout() tag = repo.tag(f"refs/tags/{tag_name}") if repo.head.commit != tag.commit: click.echo(f"Tag {tag_name} ({tag.commit}) is not currently checked out!") click.get_current_context().abort() # Query all the assets corresponding to this release. gh = Github(gh_token) gh_repo = gh.get_repo("element-hq/synapse") gh_release = gh_repo.get_release(tag_name) all_assets = set(gh_release.get_assets()) # Only accept the wheels and sdist. # Notably: we don't care about debs.tar.xz. asset_names_and_urls = sorted( (asset.name, asset.browser_download_url) for asset in all_assets if asset.name.endswith((".whl", ".tar.gz")) ) # Print out what we've determined. print("Found relevant assets:") for asset_name, _ in asset_names_and_urls: print(f" - {asset_name}") ignored_asset_names = sorted( {asset.name for asset in all_assets} - {asset_name for asset_name, _ in asset_names_and_urls} ) print("\nIgnoring irrelevant assets:") for asset_name in ignored_asset_names: print(f" - {asset_name}") with TemporaryDirectory(prefix=f"synapse_upload_{tag_name}_") as tmpdir: for name, asset_download_url in asset_names_and_urls: filename = path.join(tmpdir, name) click.echo(f"Downloading {name} into {filename}") urllib.request.urlretrieve(asset_download_url, filename=filename) if click.confirm("Upload to PyPI?", default=True): subprocess.run("twine upload *", shell=True, cwd=tmpdir) click.echo( f"Done! Remember to merge the tag {tag_name} into the appropriate branches" ) def _merge_into(repo: Repo, source: str, target: str) -> None: """ Merges branch `source` into branch `target`. Pulls both before merging and pushes the result. """ # Update our branches and switch to the target branch for branch in [source, target]: click.echo(f"Switching to {branch} and pulling...") repo.heads[branch].checkout() # Pull so we're up to date repo.remote().pull() assert repo.active_branch.name == target try: # TODO This seemed easier than using GitPython directly click.echo(f"Merging {source}...") repo.git.merge(source) except GitCommandError as exc: # If a merge conflict occurs, give some context and try to # make it easy to abort if necessary. click.echo(exc) if not click.confirm( f"Likely merge conflict whilst merging ({source} → {target}). " f"Have you resolved it?" ): repo.git.merge("--abort") return # Push result. click.echo("Pushing...") repo.remote().push() @cli.command() @click.option("--gh-token", envvar=["GH_TOKEN", "GITHUB_TOKEN"], required=False) def wait_for_actions(gh_token: Optional[str]) -> None: _wait_for_actions(gh_token) def _wait_for_actions(gh_token: Optional[str]) -> None: # Find out the version and tag name. current_version = get_package_version() tag_name = f"v{current_version}" # Authentication is optional on this endpoint, # but use a token if we have one to reduce the chance of being rate-limited. url = f"https://api.github.com/repos/element-hq/synapse/actions/runs?branch={tag_name}" headers = {"Accept": "application/vnd.github+json"} if gh_token is not None: headers["authorization"] = f"token {gh_token}" req = urllib.request.Request(url, headers=headers) time.sleep(10 * 60) while True: time.sleep(5 * 60) response = urllib.request.urlopen(req) resp = json.loads(response.read()) if len(resp["workflow_runs"]) == 0: continue if all( workflow["status"] != "in_progress" for workflow in resp["workflow_runs"] ): success = ( workflow["status"] == "completed" for workflow in resp["workflow_runs"] ) if success: _notify("Workflows successful. You can now continue the release.") else: _notify("Workflows failed.") click.confirm("Continue anyway?", abort=True) break def _notify(message: str) -> None: # Send a bell character. Most terminals will play a sound or show a notification # for this. click.echo(f"\a{message}") app_name = "Synapse Release Script" # Try and run notify-send, but don't raise an Exception if this fails # (This is best-effort) if sys.platform == "darwin": # See https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW224 subprocess.run( f"""osascript -e 'display notification "{message}" with title "{app_name}"'""", shell=True, ) else: subprocess.run( [ "notify-send", "--app-name", app_name, "--expire-time", "3600000", message, ] ) @cli.command() def merge_back() -> None: _merge_back() def _merge_back() -> None: """Merge the release branch back into the appropriate branches. All branches will be automatically pulled from the remote and the results will be pushed to the remote.""" synapse_repo = get_repo_and_check_clean_checkout() branch_name = synapse_repo.active_branch.name if not branch_name.startswith("release-v"): raise RuntimeError("Not on a release branch. This does not seem sensible.") # Pull so we're up to date synapse_repo.remote().pull() current_version = get_package_version() if current_version.is_prerelease: # Release candidate if click.confirm(f"Merge {branch_name} → develop?", default=True): _merge_into(synapse_repo, branch_name, "develop") else: # Full release sytest_repo = get_repo_and_check_clean_checkout("../sytest", "sytest") if click.confirm(f"Merge {branch_name} → master?", default=True): _merge_into(synapse_repo, branch_name, "master") if click.confirm("Merge master → develop?", default=True): _merge_into(synapse_repo, "master", "develop") if click.confirm(f"On SyTest, merge {branch_name} → master?", default=True): _merge_into(sytest_repo, branch_name, "master") if click.confirm("On SyTest, merge master → develop?", default=True): _merge_into(sytest_repo, "master", "develop") @cli.command() def announce() -> None: _announce() def _announce() -> None: """Generate markdown to announce the release.""" current_version = get_package_version() tag_name = f"v{current_version}" click.echo( f""" Hi everyone. Synapse {current_version} has just been released. [notes](https://github.com/element-hq/synapse/releases/tag/{tag_name}) | \ [docker](https://hub.docker.com/r/vectorim/synapse/tags?name={tag_name}) | \ [debs](https://packages.matrix.org/debian/) | \ [pypi](https://pypi.org/project/matrix-synapse/{current_version}/)""" ) if "rc" in tag_name: click.echo( """ Announce the RC in - #homeowners:matrix.org (Synapse Announcements) - #synapse-dev:matrix.org""" ) else: click.echo( """ Announce the release in - #homeowners:matrix.org (Synapse Announcements), bumping the version in the topic - #synapse:matrix.org (Synapse Admins), bumping the version in the topic - #synapse-dev:matrix.org - #synapse-package-maintainers:matrix.org Ask the designated people to do the blog and tweets.""" ) @cli.command() @click.option("--gh-token", envvar=["GH_TOKEN", "GITHUB_TOKEN"], required=True) def full(gh_token: str) -> None: click.echo("1. If this is a security release, read the security wiki page.") click.echo("2. Check for any release blockers before proceeding.") click.echo(" https://github.com/element-hq/synapse/labels/X-Release-Blocker") click.echo( "3. Check for any other special release notes, including announcements to add to the changelog or special deployment instructions." ) click.echo(" See the 'Synapse Maintainer Report'.") click.confirm("Ready?", abort=True) click.echo("\n*** prepare ***") _prepare() click.echo("Deploy to matrix.org and ensure that it hasn't fallen over.") click.echo("Remember to silence the alerts to prevent alert spam.") click.confirm("Deployed?", abort=True) click.echo("\n*** tag ***") _tag(gh_token) click.echo("\n*** wait for actions ***") _wait_for_actions(gh_token) click.echo("\n*** publish ***") _publish(gh_token) click.echo("\n*** upload ***") _upload(gh_token) click.echo("\n*** merge back ***") _merge_back() click.echo("\nUpdate the Debian repository") click.confirm("Started updating Debian repository?", abort=True) click.echo("\nWait for all release methods to be ready.") # Docker should be ready because it was done by the workflows earlier # PyPI should be ready because we just ran upload(). # TODO Automatically poll until the Debs have made it to packages.matrix.org click.confirm("Debs ready?", abort=True) click.echo("\n*** announce ***") _announce() def get_package_version() -> version.Version: version_string = subprocess.check_output(["poetry", "version", "--short"]).decode( "utf-8" ) return version.Version(version_string) def get_release_branch_name(version_number: version.Version) -> str: return f"release-v{version_number.major}.{version_number.minor}" def get_repo_and_check_clean_checkout( path: str = ".", name: str = "synapse" ) -> git.Repo: """Get the project repo and check it's not got any uncommitted changes.""" try: repo = git.Repo(path=path) except git.InvalidGitRepositoryError: raise click.ClickException( f"{path} is not a git repository (expecting a {name} repository)." ) if repo.is_dirty(): raise click.ClickException(f"Uncommitted changes exist in {path}.") return repo def find_ref(repo: git.Repo, ref_name: str) -> Optional[git.HEAD]: """Find the branch/ref, looking first locally then in the remote.""" if ref_name in repo.references: return repo.references[ref_name] elif ref_name in repo.remote().refs: return repo.remote().refs[ref_name] else: return None def update_branch(repo: git.Repo) -> None: """Ensure branch is up to date if it has a remote""" tracking_branch = repo.active_branch.tracking_branch() if tracking_branch: repo.git.merge(tracking_branch.name) def get_changes_for_version(wanted_version: version.Version) -> str: """Get the changelogs for the given version. If an RC then will only get the changelog for that RC version, otherwise if its a full release will get the changelog for the release and all its RCs. """ with open("CHANGES.md") as f: changes = f.read() # First we parse the changelog so that we can split it into sections based # on the release headings. ast = commonmark.Parser().parse(changes) @attr.s(auto_attribs=True) class VersionSection: title: str # These are 0-based. start_line: int end_line: Optional[int] = None # Is none if its the last entry headings: List[VersionSection] = [] for node, _ in ast.walker(): # We look for all text nodes that are in a level 1 heading. if node.t != "text": continue if node.parent.t != "heading" or node.parent.level != 1: continue # If we have a previous heading then we update its `end_line`. if headings: headings[-1].end_line = node.parent.sourcepos[0][0] - 1 headings.append(VersionSection(node.literal, node.parent.sourcepos[0][0] - 1)) changes_by_line = changes.split("\n") version_changelog = [] # The lines we want to include in the changelog # Go through each section and find any that match the requested version. regex = re.compile(r"^Synapse v?(\S+)") for section in headings: groups = regex.match(section.title) if not groups: continue heading_version = version.parse(groups.group(1)) heading_base_version = version.parse(heading_version.base_version) # Check if heading version matches the requested version, or if its an # RC of the requested version. if wanted_version not in (heading_version, heading_base_version): continue version_changelog.extend(changes_by_line[section.start_line : section.end_line]) return "\n".join(version_changelog) def generate_and_write_changelog( repo: Repo, current_version: version.Version, new_version: str ) -> None: # We do this by getting a draft so that we can edit it before writing to the # changelog. result = run_until_successful( f"python3 -m towncrier build --draft --version {new_version}", shell=True, capture_output=True, ) new_changes = result.stdout.decode("utf-8") new_changes = new_changes.replace( "No significant changes.", f"No significant changes since {current_version}." ) new_changes += build_dependabot_changelog( repo, current_version, ) # Prepend changes to changelog with open("CHANGES.md", "r+") as f: existing_content = f.read() f.seek(0, 0) f.write(new_changes) f.write("\n") f.write(existing_content) # Remove all the news fragments for filename in glob.iglob("changelog.d/*.*"): os.remove(filename) def build_dependabot_changelog(repo: Repo, current_version: version.Version) -> str: """Summarise dependabot commits between `current_version` and `release_branch`. Returns an empty string if there have been no such commits; otherwise outputs a third-level markdown header followed by an unordered list.""" last_release_commit = repo.tag("v" + str(current_version)).commit rev_spec = f"{last_release_commit.hexsha}.." commits = list(git.objects.Commit.iter_items(repo, rev_spec)) messages = [] for commit in reversed(commits): if commit.author.name == "dependabot[bot]": message: Union[str, bytes] = commit.message if isinstance(message, bytes): message = message.decode("utf-8") messages.append(message.split("\n", maxsplit=1)[0]) if not messages: print(f"No dependabot commits in range {rev_spec}", file=sys.stderr) return "" messages.sort() def replacer(match: Match[str]) -> str: desc = match.group(1) number = match.group(2) return f"* {desc}. ([\\#{number}](https://github.com/element-hq/synapse/issues/{number}))" for i, message in enumerate(messages): messages[i] = re.sub(r"(.*) \(#(\d+)\)$", replacer, message) messages.insert(0, "### Updates to locked dependencies\n") # Add an extra blank line to the bottom of the section messages.append("") return "\n".join(messages) @cli.command() @click.argument("since") def test_dependabot_changelog(since: str) -> None: """Test building the dependabot changelog. Summarises all dependabot commits between the SINCE tag and the current git HEAD.""" print(build_dependabot_changelog(git.Repo("."), version.Version(since))) if __name__ == "__main__": cli() synapse-1.100.0/scripts-dev/schema_versions.py000077500000000000000000000152701455622526000213570ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2023 The Matrix.org Foundation C.I.C. # Copyright 2023 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """A script to calculate which versions of Synapse have backwards-compatible database schemas. It creates a Markdown table of Synapse versions and the earliest compatible version. It is compatible with the mdbook protocol for preprocessors (see https://rust-lang.github.io/mdBook/for_developers/preprocessors.html#implementing-a-preprocessor-with-a-different-language): Exit 0 to denote support for all renderers: ./scripts-dev/schema_versions.py supports Parse a JSON list from stdin and add the table to the proper documetnation page: ./scripts-dev/schema_versions.py Additionally, the script supports dumping the table to stdout for debugging: ./scripts-dev/schema_versions.py dump """ import io import json import sys from collections import defaultdict from typing import Any, Dict, Iterator, Optional, Tuple import git from packaging import version # The schema version has moved around over the years. SCHEMA_VERSION_FILES = ( "synapse/storage/schema/__init__.py", "synapse/storage/prepare_database.py", "synapse/storage/__init__.py", "synapse/app/homeserver.py", ) # Skip versions of Synapse < v1.0, they're old and essentially not # compatible with today's federation. OLDEST_SHOWN_VERSION = version.parse("v1.0") def get_schema_versions(tag: git.Tag) -> Tuple[Optional[int], Optional[int]]: """Get the schema and schema compat versions for a tag.""" schema_version = None schema_compat_version = None for file in SCHEMA_VERSION_FILES: try: schema_file = tag.commit.tree / file except KeyError: continue # We (usually) can't execute the code since it might have unknown imports. if file != "synapse/storage/schema/__init__.py": with io.BytesIO(schema_file.data_stream.read()) as f: for line in f.readlines(): if line.startswith(b"SCHEMA_VERSION"): schema_version = int(line.split()[2]) # Bail early. break else: # SCHEMA_COMPAT_VERSION is sometimes across multiple lines, the easist # thing to do is exec the code. Luckily it has only ever existed in # a file which imports nothing else from Synapse. locals: Dict[str, Any] = {} exec(schema_file.data_stream.read().decode("utf-8"), {}, locals) schema_version = locals["SCHEMA_VERSION"] schema_compat_version = locals.get("SCHEMA_COMPAT_VERSION") return schema_version, schema_compat_version def get_tags(repo: git.Repo) -> Iterator[git.Tag]: """Return an iterator of tags sorted by version.""" tags = [] for tag in repo.tags: # All "real" Synapse tags are of the form vX.Y.Z. if not tag.name.startswith("v"): continue # There's a weird tag from the initial react UI. if tag.name == "v0.1": continue try: tag_version = version.parse(tag.name) except version.InvalidVersion: # Skip invalid versions. continue # Skip pre- and post-release versions. if tag_version.is_prerelease or tag_version.is_postrelease or tag_version.local: continue # Skip old versions. if tag_version < OLDEST_SHOWN_VERSION: continue tags.append((tag_version, tag)) # Sort based on the version number (not lexically). return (tag for _, tag in sorted(tags, key=lambda t: t[0])) def calculate_version_chart() -> str: repo = git.Repo(path=".") # Map of schema version -> Synapse versions which are at that schema version. schema_versions = defaultdict(list) # Map of schema version -> Synapse versions which are compatible with that # schema version. schema_compat_versions = defaultdict(list) # Find ranges of versions which are compatible with a schema version. # # There are two modes of operation: # # 1. Pre-schema_compat_version (i.e. schema_compat_version of None), then # Synapse is compatible up/downgrading to a version with # schema_version >= its current version. # # 2. Post-schema_compat_version (i.e. schema_compat_version is *not* None), # then Synapse is compatible up/downgrading to a version with # schema version >= schema_compat_version. # # This is more generous and avoids versions that cannot be rolled back. # # See https://github.com/matrix-org/synapse/pull/9933 which was included in v1.37.0. for tag in get_tags(repo): schema_version, schema_compat_version = get_schema_versions(tag) # If a schema compat version is given, prefer that over the schema version. schema_versions[schema_version].append(tag.name) schema_compat_versions[schema_compat_version or schema_version].append(tag.name) # Generate a table which maps the latest Synapse version compatible with each # schema version. result = f"| {'Versions': ^19} | Compatible version |\n" result += f"|{'-' * (19 + 2)}|{'-' * (18 + 2)}|\n" for schema_version, synapse_versions in schema_compat_versions.items(): result += f"| {synapse_versions[0] + ' – ' + synapse_versions[-1]: ^19} | {schema_versions[schema_version][0]: ^18} |\n" return result if __name__ == "__main__": if len(sys.argv) == 3 and sys.argv[1] == "supports": # We don't care about the renderer which is being used, which is the second argument. sys.exit(0) elif len(sys.argv) == 2 and sys.argv[1] == "dump": print(calculate_version_chart()) else: # Expect JSON data on stdin. context, book = json.load(sys.stdin) for section in book["sections"]: if "Chapter" in section and section["Chapter"]["path"] == "upgrade.md": section["Chapter"]["content"] = section["Chapter"]["content"].replace( "", calculate_version_chart() ) # Print the result back out to stdout. print(json.dumps(book)) synapse-1.100.0/scripts-dev/sign_json.py000077500000000000000000000121531455622526000201550ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import json import sys from json import JSONDecodeError import yaml from signedjson.key import read_signing_keys from signedjson.sign import sign_json from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.crypto.event_signing import add_hashes_and_signatures from synapse.util import json_encoder def main() -> None: parser = argparse.ArgumentParser( description="""Adds a signature to a JSON object. Example usage: $ scripts-dev/sign_json.py -N test -k localhost.signing.key "{}" {"signatures":{"test":{"ed25519:a_ZnZh":"LmPnml6iM0iR..."}}} """, formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument( "-N", "--server-name", help="Name to give as the local homeserver. If unspecified, will be " "read from the config file.", ) parser.add_argument( "-k", "--signing-key-path", help="Path to the file containing the private ed25519 key to sign the " "request with.", ) parser.add_argument( "-K", "--signing-key", help="The private ed25519 key to sign the request with.", ) parser.add_argument( "-c", "--config", default="homeserver.yaml", help=( "Path to synapse config file, from which the server name and/or signing " "key path will be read. Ignored if --server-name and --signing-key(-path) " "are both given." ), ) parser.add_argument( "--sign-event-room-version", type=str, help=( "Sign the JSON as an event for the given room version, rather than raw JSON. " "This means that we will add a 'hashes' object, and redact the event before " "signing." ), ) input_args = parser.add_mutually_exclusive_group() input_args.add_argument("input_data", nargs="?", help="Raw JSON to be signed.") input_args.add_argument( "-i", "--input", type=argparse.FileType("r"), default=sys.stdin, help=( "A file from which to read the JSON to be signed. If neither --input nor " "input_data are given, JSON will be read from stdin." ), ) parser.add_argument( "-o", "--output", type=argparse.FileType("w"), default=sys.stdout, help="Where to write the signed JSON. Defaults to stdout.", ) args = parser.parse_args() if not args.server_name or not (args.signing_key_path or args.signing_key): read_args_from_config(args) if args.signing_key: keys = read_signing_keys([args.signing_key]) else: with open(args.signing_key_path) as f: keys = read_signing_keys(f) json_to_sign = args.input_data if json_to_sign is None: json_to_sign = args.input.read() try: obj = json.loads(json_to_sign) except JSONDecodeError as e: print("Unable to parse input as JSON: %s" % e, file=sys.stderr) sys.exit(1) if not isinstance(obj, dict): print("Input json was not an object", file=sys.stderr) sys.exit(1) if args.sign_event_room_version: room_version = KNOWN_ROOM_VERSIONS.get(args.sign_event_room_version) if not room_version: print( f"Unknown room version {args.sign_event_room_version}", file=sys.stderr ) sys.exit(1) add_hashes_and_signatures(room_version, obj, args.server_name, keys[0]) else: sign_json(obj, args.server_name, keys[0]) for c in json_encoder.iterencode(obj): args.output.write(c) args.output.write("\n") def read_args_from_config(args: argparse.Namespace) -> None: with open(args.config) as fh: config = yaml.safe_load(fh) if not args.server_name: args.server_name = config["server_name"] if not args.signing_key_path and not args.signing_key: if "signing_key" in config: args.signing_key = config["signing_key"] elif "signing_key_path" in config: args.signing_key_path = config["signing_key_path"] else: print( "A signing key must be given on the commandline or in the config file.", file=sys.stderr, ) sys.exit(1) if __name__ == "__main__": main() synapse-1.100.0/stubs/000077500000000000000000000000001455622526000145025ustar00rootroot00000000000000synapse-1.100.0/stubs/icu.pyi000066400000000000000000000017001455622526000160030ustar00rootroot00000000000000# Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright 2022 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Stub for PyICU. from __future__ import annotations class Locale: @staticmethod def getDefault() -> Locale: ... class BreakIterator: @staticmethod def createWordInstance(locale: Locale) -> BreakIterator: ... def setText(self, text: str) -> None: ... def nextBoundary(self) -> int: ... synapse-1.100.0/stubs/sortedcontainers/000077500000000000000000000000001455622526000200705ustar00rootroot00000000000000synapse-1.100.0/stubs/sortedcontainers/__init__.pyi000066400000000000000000000005631455622526000223560ustar00rootroot00000000000000from .sorteddict import SortedDict, SortedItemsView, SortedKeysView, SortedValuesView from .sortedlist import SortedKeyList, SortedList, SortedListWithKey from .sortedset import SortedSet __all__ = [ "SortedDict", "SortedKeysView", "SortedItemsView", "SortedValuesView", "SortedKeyList", "SortedList", "SortedListWithKey", "SortedSet", ] synapse-1.100.0/stubs/sortedcontainers/sorteddict.pyi000066400000000000000000000122451455622526000227630ustar00rootroot00000000000000# stub for SortedDict. This is a lightly edited copy of # https://github.com/grantjenks/python-sortedcontainers/blob/eea42df1f7bad2792e8da77335ff888f04b9e5ae/sortedcontainers/sorteddict.pyi # (from https://github.com/grantjenks/python-sortedcontainers/pull/107) from __future__ import annotations from typing import ( Any, Callable, Dict, Hashable, ItemsView, Iterable, Iterator, KeysView, List, Mapping, Optional, Sequence, Tuple, Type, TypeVar, Union, ValuesView, overload, ) _T = TypeVar("_T") _S = TypeVar("_S") _T_h = TypeVar("_T_h", bound=Hashable) _KT = TypeVar("_KT", bound=Hashable) # Key type. _VT = TypeVar("_VT") # Value type. _KT_co = TypeVar("_KT_co", covariant=True, bound=Hashable) _VT_co = TypeVar("_VT_co", covariant=True) _SD = TypeVar("_SD", bound=SortedDict) _Key = Callable[[_T], Any] class SortedDict(Dict[_KT, _VT]): @overload def __init__(self, **kwargs: _VT) -> None: ... @overload def __init__(self, __map: Mapping[_KT, _VT], **kwargs: _VT) -> None: ... @overload def __init__( self, __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT ) -> None: ... @overload def __init__(self, __key: _Key[_KT], **kwargs: _VT) -> None: ... @overload def __init__( self, __key: _Key[_KT], __map: Mapping[_KT, _VT], **kwargs: _VT ) -> None: ... @overload def __init__( self, __key: _Key[_KT], __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT ) -> None: ... @property def key(self) -> Optional[_Key[_KT]]: ... @property def iloc(self) -> SortedKeysView[_KT]: ... def clear(self) -> None: ... def __delitem__(self, key: _KT) -> None: ... def __iter__(self) -> Iterator[_KT]: ... def __reversed__(self) -> Iterator[_KT]: ... def __setitem__(self, key: _KT, value: _VT) -> None: ... def _setitem(self, key: _KT, value: _VT) -> None: ... def copy(self: _SD) -> _SD: ... def __copy__(self: _SD) -> _SD: ... @classmethod @overload def fromkeys( cls, seq: Iterable[_T_h], value: None = ... ) -> SortedDict[_T_h, None]: ... @classmethod @overload def fromkeys(cls, seq: Iterable[_T_h], value: _S) -> SortedDict[_T_h, _S]: ... # As of Python 3.10, `dict_{keys,items,values}` have an extra `mapping` attribute and so # `Sorted{Keys,Items,Values}View` are no longer compatible with them. # See https://github.com/python/typeshed/issues/6837 def keys(self) -> SortedKeysView[_KT]: ... # type: ignore[override] def items(self) -> SortedItemsView[_KT, _VT]: ... # type: ignore[override] def values(self) -> SortedValuesView[_VT]: ... # type: ignore[override] @overload def pop(self, key: _KT) -> _VT: ... @overload def pop(self, key: _KT, default: _T = ...) -> Union[_VT, _T]: ... def popitem(self, index: int = ...) -> Tuple[_KT, _VT]: ... def peekitem(self, index: int = ...) -> Tuple[_KT, _VT]: ... def setdefault(self, key: _KT, default: Optional[_VT] = ...) -> _VT: ... # Mypy now reports the first overload as an error, because typeshed widened the type # of `__map` to its internal `_typeshed.SupportsKeysAndGetItem` type in # https://github.com/python/typeshed/pull/6653 # Since sorteddicts don't change the signature of `update` from that of `dict`, we # let the stubs for `update` inherit from the stubs for `dict`. (I suspect we could # do the same for many othe methods.) We leave the stubs commented to better track # how this file has evolved from the original stubs. # @overload # def update(self, __map: Mapping[_KT, _VT], **kwargs: _VT) -> None: ... # @overload # def update(self, __iterable: Iterable[Tuple[_KT, _VT]], **kwargs: _VT) -> None: ... # @overload # def update(self, **kwargs: _VT) -> None: ... def __reduce__( self, ) -> Tuple[ Type[SortedDict[_KT, _VT]], Tuple[Callable[[_KT], Any], List[Tuple[_KT, _VT]]], ]: ... def __repr__(self) -> str: ... def _check(self) -> None: ... def islice( self, start: Optional[int] = ..., stop: Optional[int] = ..., reverse: bool = ..., ) -> Iterator[_KT]: ... def bisect_left(self, value: _KT) -> int: ... def bisect_right(self, value: _KT) -> int: ... class SortedKeysView(KeysView[_KT_co], Sequence[_KT_co]): @overload def __getitem__(self, index: int) -> _KT_co: ... @overload def __getitem__(self, index: slice) -> List[_KT_co]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... class SortedItemsView(ItemsView[_KT_co, _VT_co], Sequence[Tuple[_KT_co, _VT_co]]): def __iter__(self) -> Iterator[Tuple[_KT_co, _VT_co]]: ... @overload def __getitem__(self, index: int) -> Tuple[_KT_co, _VT_co]: ... @overload def __getitem__(self, index: slice) -> List[Tuple[_KT_co, _VT_co]]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... class SortedValuesView(ValuesView[_VT_co], Sequence[_VT_co]): @overload def __getitem__(self, index: int) -> _VT_co: ... @overload def __getitem__(self, index: slice) -> List[_VT_co]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... synapse-1.100.0/stubs/sortedcontainers/sortedlist.pyi000066400000000000000000000155371455622526000230220ustar00rootroot00000000000000# stub for SortedList. This is an exact copy of # https://github.com/grantjenks/python-sortedcontainers/blob/a419ffbd2b1c935b09f11f0971696e537fd0c510/sortedcontainers/sortedlist.pyi # (from https://github.com/grantjenks/python-sortedcontainers/pull/107) from __future__ import annotations from typing import ( Any, Callable, Iterable, Iterator, List, MutableSequence, Optional, Sequence, Tuple, Type, TypeVar, Union, overload, ) _T = TypeVar("_T") _SL = TypeVar("_SL", bound=SortedList) _SKL = TypeVar("_SKL", bound=SortedKeyList) _Key = Callable[[_T], Any] _Repr = Callable[[], str] def recursive_repr(fillvalue: str = ...) -> Callable[[_Repr], _Repr]: ... class SortedList(MutableSequence[_T]): DEFAULT_LOAD_FACTOR: int = ... def __init__( self, iterable: Optional[Iterable[_T]] = ..., key: Optional[_Key[_T]] = ..., ): ... # NB: currently mypy does not honour return type, see mypy #3307 @overload def __new__(cls: Type[_SL], iterable: None, key: None) -> _SL: ... @overload def __new__(cls: Type[_SL], iterable: None, key: _Key[_T]) -> SortedKeyList[_T]: ... @overload def __new__(cls: Type[_SL], iterable: Iterable[_T], key: None) -> _SL: ... @overload def __new__(cls, iterable: Iterable[_T], key: _Key[_T]) -> SortedKeyList[_T]: ... @property def key(self) -> Optional[Callable[[_T], Any]]: ... def _reset(self, load: int) -> None: ... def clear(self) -> None: ... def _clear(self) -> None: ... def add(self, value: _T) -> None: ... def _expand(self, pos: int) -> None: ... def update(self, iterable: Iterable[_T]) -> None: ... def _update(self, iterable: Iterable[_T]) -> None: ... def discard(self, value: _T) -> None: ... def remove(self, value: _T) -> None: ... def _delete(self, pos: int, idx: int) -> None: ... def _loc(self, pos: int, idx: int) -> int: ... def _pos(self, idx: int) -> int: ... def _build_index(self) -> None: ... def __contains__(self, value: Any) -> bool: ... def __delitem__(self, index: Union[int, slice]) -> None: ... @overload def __getitem__(self, index: int) -> _T: ... @overload def __getitem__(self, index: slice) -> List[_T]: ... @overload def _getitem(self, index: int) -> _T: ... @overload def _getitem(self, index: slice) -> List[_T]: ... @overload def __setitem__(self, index: int, value: _T) -> None: ... @overload def __setitem__(self, index: slice, value: Iterable[_T]) -> None: ... def __iter__(self) -> Iterator[_T]: ... def __reversed__(self) -> Iterator[_T]: ... def __len__(self) -> int: ... def reverse(self) -> None: ... def islice( self, start: Optional[int] = ..., stop: Optional[int] = ..., reverse: bool = ..., ) -> Iterator[_T]: ... def _islice( self, min_pos: int, min_idx: int, max_pos: int, max_idx: int, reverse: bool, ) -> Iterator[_T]: ... def irange( self, minimum: Optional[int] = ..., maximum: Optional[int] = ..., inclusive: Tuple[bool, bool] = ..., reverse: bool = ..., ) -> Iterator[_T]: ... def bisect_left(self, value: _T) -> int: ... def bisect_right(self, value: _T) -> int: ... def bisect(self, value: _T) -> int: ... def _bisect_right(self, value: _T) -> int: ... def count(self, value: _T) -> int: ... def copy(self: _SL) -> _SL: ... def __copy__(self: _SL) -> _SL: ... def append(self, value: _T) -> None: ... def extend(self, values: Iterable[_T]) -> None: ... def insert(self, index: int, value: _T) -> None: ... def pop(self, index: int = ...) -> _T: ... def index( self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ... ) -> int: ... def __add__(self: _SL, other: Iterable[_T]) -> _SL: ... def __radd__(self: _SL, other: Iterable[_T]) -> _SL: ... def __iadd__(self: _SL, other: Iterable[_T]) -> _SL: ... def __mul__(self: _SL, num: int) -> _SL: ... def __rmul__(self: _SL, num: int) -> _SL: ... def __imul__(self: _SL, num: int) -> _SL: ... def __eq__(self, other: Any) -> bool: ... def __ne__(self, other: Any) -> bool: ... def __lt__(self, other: Sequence[_T]) -> bool: ... def __gt__(self, other: Sequence[_T]) -> bool: ... def __le__(self, other: Sequence[_T]) -> bool: ... def __ge__(self, other: Sequence[_T]) -> bool: ... def __repr__(self) -> str: ... def _check(self) -> None: ... class SortedKeyList(SortedList[_T]): def __init__( self, iterable: Optional[Iterable[_T]] = ..., key: _Key[_T] = ... ) -> None: ... def __new__( cls, iterable: Optional[Iterable[_T]] = ..., key: _Key[_T] = ... ) -> SortedKeyList[_T]: ... @property def key(self) -> Callable[[_T], Any]: ... def clear(self) -> None: ... def _clear(self) -> None: ... def add(self, value: _T) -> None: ... def _expand(self, pos: int) -> None: ... def update(self, iterable: Iterable[_T]) -> None: ... def _update(self, iterable: Iterable[_T]) -> None: ... # NB: Must be T to be safely passed to self.func, yet base class imposes Any def __contains__(self, value: _T) -> bool: ... # type: ignore def discard(self, value: _T) -> None: ... def remove(self, value: _T) -> None: ... def _delete(self, pos: int, idx: int) -> None: ... def irange( self, minimum: Optional[int] = ..., maximum: Optional[int] = ..., inclusive: Tuple[bool, bool] = ..., reverse: bool = ..., ) -> Iterator[_T]: ... def irange_key( self, min_key: Optional[Any] = ..., max_key: Optional[Any] = ..., inclusive: Tuple[bool, bool] = ..., reserve: bool = ..., ) -> Iterator[_T]: ... def bisect_left(self, value: _T) -> int: ... def bisect_right(self, value: _T) -> int: ... def bisect(self, value: _T) -> int: ... def bisect_key_left(self, key: Any) -> int: ... def _bisect_key_left(self, key: Any) -> int: ... def bisect_key_right(self, key: Any) -> int: ... def _bisect_key_right(self, key: Any) -> int: ... def bisect_key(self, key: Any) -> int: ... def count(self, value: _T) -> int: ... def copy(self: _SKL) -> _SKL: ... def __copy__(self: _SKL) -> _SKL: ... def index( self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ... ) -> int: ... def __add__(self: _SKL, other: Iterable[_T]) -> _SKL: ... def __radd__(self: _SKL, other: Iterable[_T]) -> _SKL: ... def __iadd__(self: _SKL, other: Iterable[_T]) -> _SKL: ... def __mul__(self: _SKL, num: int) -> _SKL: ... def __rmul__(self: _SKL, num: int) -> _SKL: ... def __imul__(self: _SKL, num: int) -> _SKL: ... def __repr__(self) -> str: ... def _check(self) -> None: ... SortedListWithKey = SortedKeyList synapse-1.100.0/stubs/sortedcontainers/sortedset.pyi000066400000000000000000000110241455622526000226250ustar00rootroot00000000000000# stub for SortedSet. This is a lightly edited copy of # https://github.com/grantjenks/python-sortedcontainers/blob/d0a225d7fd0fb4c54532b8798af3cbeebf97e2d5/sortedcontainers/sortedset.pyi # (from https://github.com/grantjenks/python-sortedcontainers/pull/107) from __future__ import annotations from typing import ( Any, Callable, Hashable, Iterable, Iterator, List, MutableSet, Optional, Sequence, Set, Tuple, Type, TypeVar, Union, overload, ) # --- Global _T = TypeVar("_T", bound=Hashable) _S = TypeVar("_S", bound=Hashable) _SS = TypeVar("_SS", bound=SortedSet) _Key = Callable[[_T], Any] class SortedSet(MutableSet[_T], Sequence[_T]): def __init__( self, iterable: Optional[Iterable[_T]] = ..., key: Optional[_Key[_T]] = ..., ) -> None: ... @classmethod def _fromset( cls, values: Set[_T], key: Optional[_Key[_T]] = ... ) -> SortedSet[_T]: ... @property def key(self) -> Optional[_Key[_T]]: ... def __contains__(self, value: Any) -> bool: ... @overload def __getitem__(self, index: int) -> _T: ... @overload def __getitem__(self, index: slice) -> List[_T]: ... def __delitem__(self, index: Union[int, slice]) -> None: ... def __eq__(self, other: Any) -> bool: ... def __ne__(self, other: Any) -> bool: ... def __lt__(self, other: Iterable[_T]) -> bool: ... def __gt__(self, other: Iterable[_T]) -> bool: ... def __le__(self, other: Iterable[_T]) -> bool: ... def __ge__(self, other: Iterable[_T]) -> bool: ... def __len__(self) -> int: ... def __iter__(self) -> Iterator[_T]: ... def __reversed__(self) -> Iterator[_T]: ... def add(self, value: _T) -> None: ... def _add(self, value: _T) -> None: ... def clear(self) -> None: ... def copy(self: _SS) -> _SS: ... def __copy__(self: _SS) -> _SS: ... def count(self, value: _T) -> int: ... def discard(self, value: _T) -> None: ... def _discard(self, value: _T) -> None: ... def pop(self, index: int = ...) -> _T: ... def remove(self, value: _T) -> None: ... def difference(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __sub__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def difference_update( self, *iterables: Iterable[_S] ) -> SortedSet[Union[_T, _S]]: ... def __isub__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def intersection(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __and__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __rand__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def intersection_update( self, *iterables: Iterable[_S] ) -> SortedSet[Union[_T, _S]]: ... def __iand__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def symmetric_difference(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __xor__(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __rxor__(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def symmetric_difference_update( self, other: Iterable[_S] ) -> SortedSet[Union[_T, _S]]: ... def __ixor__(self, other: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def union(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __or__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __ror__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def update(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __ior__(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def _update(self, *iterables: Iterable[_S]) -> SortedSet[Union[_T, _S]]: ... def __reduce__( self, ) -> Tuple[Type[SortedSet[_T]], Set[_T], Callable[[_T], Any]]: ... def __repr__(self) -> str: ... def _check(self) -> None: ... def bisect_left(self, value: _T) -> int: ... def bisect_right(self, value: _T) -> int: ... def islice( self, start: Optional[int] = ..., stop: Optional[int] = ..., reverse: bool = ..., ) -> Iterator[_T]: ... def irange( self, minimum: Optional[_T] = ..., maximum: Optional[_T] = ..., inclusive: Tuple[bool, bool] = ..., reverse: bool = ..., ) -> Iterator[_T]: ... def index( self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ... ) -> int: ... def _reset(self, load: int) -> None: ... synapse-1.100.0/stubs/txredisapi.pyi000066400000000000000000000063141455622526000174050ustar00rootroot00000000000000# Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains *incomplete* type hints for txredisapi. """ from typing import Any, List, Optional, Type, Union from twisted.internet import protocol from twisted.internet.defer import Deferred from twisted.internet.interfaces import IAddress from twisted.python.failure import Failure class RedisProtocol(protocol.Protocol): def publish(self, channel: str, message: bytes) -> "Deferred[None]": ... def ping(self) -> "Deferred[None]": ... def set( self, key: str, value: Any, expire: Optional[int] = None, pexpire: Optional[int] = None, only_if_not_exists: bool = False, only_if_exists: bool = False, ) -> "Deferred[None]": ... def get(self, key: str) -> "Deferred[Any]": ... class SubscriberProtocol(RedisProtocol): def __init__(self, *args: object, **kwargs: object): ... password: Optional[str] def subscribe(self, channels: Union[str, List[str]]) -> "Deferred[None]": ... def connectionMade(self) -> None: ... # type-ignore: twisted.internet.protocol.Protocol provides a default argument for # `reason`. txredisapi's LineReceiver Protocol doesn't. But that's fine: it's what's # actually specified in twisted.internet.interfaces.IProtocol. def connectionLost(self, reason: Failure) -> None: ... # type: ignore[override] def lazyConnection( host: str = ..., port: int = ..., dbid: Optional[int] = ..., reconnect: bool = ..., charset: str = ..., password: Optional[str] = ..., connectTimeout: Optional[int] = ..., replyTimeout: Optional[int] = ..., convertNumbers: bool = ..., ) -> RedisProtocol: ... # ConnectionHandler doesn't actually inherit from RedisProtocol, but it proxies # most methods to it via ConnectionHandler.__getattr__. class ConnectionHandler(RedisProtocol): def disconnect(self) -> "Deferred[None]": ... def __repr__(self) -> str: ... class UnixConnectionHandler(ConnectionHandler): ... class RedisFactory(protocol.ReconnectingClientFactory): continueTrying: bool handler: ConnectionHandler pool: List[RedisProtocol] replyTimeout: Optional[int] def __init__( self, uuid: str, dbid: Optional[int], poolsize: int, isLazy: bool = False, handler: Type = ConnectionHandler, charset: str = "utf-8", password: Optional[str] = None, replyTimeout: Optional[int] = None, convertNumbers: Optional[int] = True, ): ... def buildProtocol(self, addr: IAddress) -> RedisProtocol: ... class SubscriberFactory(RedisFactory): def __init__(self) -> None: ... synapse-1.100.0/synapse/000077500000000000000000000000001455622526000150245ustar00rootroot00000000000000synapse-1.100.0/synapse/__init__.py000066400000000000000000000064541455622526000171460ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ This is an implementation of a Matrix homeserver. """ import os import sys from typing import Any, Dict from PIL import ImageFile from synapse.util.rust import check_rust_lib_up_to_date from synapse.util.stringutils import strtobool # Allow truncated JPEG images to be thumbnailed. ImageFile.LOAD_TRUNCATED_IMAGES = True # Check that we're not running on an unsupported Python version. # # Note that we use an (unneeded) variable here so that pyupgrade doesn't nuke the # if-statement completely. py_version = sys.version_info if py_version < (3, 8): print("Synapse requires Python 3.8 or above.") sys.exit(1) # Allow using the asyncio reactor via env var. if strtobool(os.environ.get("SYNAPSE_ASYNC_IO_REACTOR", "0")): from incremental import Version import twisted # We need a bugfix that is included in Twisted 21.2.0: # https://twistedmatrix.com/trac/ticket/9787 if twisted.version < Version("Twisted", 21, 2, 0): print("Using asyncio reactor requires Twisted>=21.2.0") sys.exit(1) import asyncio from twisted.internet import asyncioreactor asyncioreactor.install(asyncio.get_event_loop()) # Twisted and canonicaljson will fail to import when this file is executed to # get the __version__ during a fresh install. That's OK and subsequent calls to # actually start Synapse will import these libraries fine. try: from twisted.internet import protocol from twisted.internet.protocol import Factory from twisted.names.dns import DNSDatagramProtocol protocol.Factory.noisy = False Factory.noisy = False DNSDatagramProtocol.noisy = False except ImportError: pass # Teach canonicaljson how to serialise immutabledicts. try: from canonicaljson import register_preserialisation_callback from immutabledict import immutabledict def _immutabledict_cb(d: immutabledict) -> Dict[str, Any]: try: return d._dict except Exception: # Paranoia: fall back to a `dict()` call, in case a future version of # immutabledict removes `_dict` from the implementation. return dict(d) register_preserialisation_callback(immutabledict, _immutabledict_cb) except ImportError: pass import synapse.util # noqa: E402 __version__ = synapse.util.SYNAPSE_VERSION if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)): # We import here so that we don't have to install a bunch of deps when # running the packaging tox test. from synapse.util.patch_inline_callbacks import do_patch do_patch() check_rust_lib_up_to_date() synapse-1.100.0/synapse/_pydantic_compat.py000066400000000000000000000020031455622526000207060ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 Maxwell G # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from packaging.version import Version try: from pydantic import __version__ as pydantic_version except ImportError: import importlib.metadata pydantic_version = importlib.metadata.version("pydantic") HAS_PYDANTIC_V2: bool = Version(pydantic_version).major == 2 __all__ = ("HAS_PYDANTIC_V2",) synapse-1.100.0/synapse/_scripts/000077500000000000000000000000001455622526000166525ustar00rootroot00000000000000synapse-1.100.0/synapse/_scripts/__init__.py000066400000000000000000000000001455622526000207510ustar00rootroot00000000000000synapse-1.100.0/synapse/_scripts/export_signing_key.py000077500000000000000000000054171455622526000231450ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import sys import time from typing import NoReturn, Optional from signedjson.key import encode_verify_key_base64, get_verify_key, read_signing_keys from signedjson.types import VerifyKey def exit(status: int = 0, message: Optional[str] = None) -> NoReturn: if message: print(message, file=sys.stderr) sys.exit(status) def format_plain(public_key: VerifyKey) -> None: print( "%s:%s %s" % ( public_key.alg, public_key.version, encode_verify_key_base64(public_key), ) ) def format_for_config(public_key: VerifyKey, expiry_ts: int) -> None: print( ' "%s:%s": { key: "%s", expired_ts: %i }' % ( public_key.alg, public_key.version, encode_verify_key_base64(public_key), expiry_ts, ) ) def main() -> None: parser = argparse.ArgumentParser() parser.add_argument( "key_file", nargs="+", type=argparse.FileType("r"), help="The key file to read", ) parser.add_argument( "-x", action="store_true", dest="for_config", help="format the output for inclusion in the old_signing_keys config setting", ) parser.add_argument( "--expiry-ts", type=int, default=int(time.time() * 1000) + 6 * 3600000, help=( "The expiry time to use for -x, in milliseconds since 1970. The default " "is (now+6h)." ), ) args = parser.parse_args() formatter = ( (lambda k: format_for_config(k, args.expiry_ts)) if args.for_config else format_plain ) for file in args.key_file: try: res = read_signing_keys(file) except Exception as e: exit( status=1, message="Error reading key from file %s: %s %s" % (file.name, type(e), e), ) for key in res: formatter(get_verify_key(key)) if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/generate_config.py000077500000000000000000000044401455622526000223500ustar00rootroot00000000000000#!/usr/bin/env python3 import argparse import shutil import sys from synapse.config.homeserver import HomeServerConfig def main() -> None: parser = argparse.ArgumentParser() parser.add_argument( "--config-dir", default="CONFDIR", help="The path where the config files are kept. Used to create filenames for " "things like the log config and the signing key. Default: %(default)s", ) parser.add_argument( "--data-dir", default="DATADIR", help="The path where the data files are kept. Used to create filenames for " "things like the database and media store. Default: %(default)s", ) parser.add_argument( "--server-name", default="SERVERNAME", help="The server name. Used to initialise the server_name config param, but also " "used in the names of some of the config files. Default: %(default)s", ) parser.add_argument( "--report-stats", action="store", help="Whether the generated config reports homeserver usage statistics", choices=["yes", "no"], ) parser.add_argument( "--generate-secrets", action="store_true", help="Enable generation of new secrets for things like the macaroon_secret_key." "By default, these parameters will be left unset.", ) parser.add_argument( "-o", "--output-file", type=argparse.FileType("w"), default=sys.stdout, help="File to write the configuration to. Default: stdout", ) parser.add_argument( "--header-file", type=argparse.FileType("r"), help="File from which to read a header, which will be printed before the " "generated config.", ) args = parser.parse_args() report_stats = args.report_stats if report_stats is not None: report_stats = report_stats == "yes" conf = HomeServerConfig().generate_config( config_dir_path=args.config_dir, data_dir_path=args.data_dir, server_name=args.server_name, generate_secrets=args.generate_secrets, report_stats=report_stats, ) if args.header_file: shutil.copyfileobj(args.header_file, args.output_file) args.output_file.write(conf) if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/generate_log_config.py000077500000000000000000000026631455622526000232160ustar00rootroot00000000000000#!/usr/bin/env python3 # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import sys from synapse.config.logger import DEFAULT_LOG_CONFIG def main() -> None: parser = argparse.ArgumentParser() parser.add_argument( "-o", "--output-file", type=argparse.FileType("w"), default=sys.stdout, help="File to write the configuration to. Default: stdout", ) parser.add_argument( "-f", "--log-file", type=str, default="/var/log/matrix-synapse/homeserver.log", help="name of the log file", ) args = parser.parse_args() out = args.output_file out.write(DEFAULT_LOG_CONFIG.substitute(log_file=args.log_file)) out.flush() if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/generate_signing_key.py000077500000000000000000000030051455622526000234050ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import os import sys from signedjson.key import generate_signing_key, write_signing_keys from synapse.util.stringutils import random_string def main() -> None: parser = argparse.ArgumentParser() parser.add_argument( "-o", "--output_file", type=str, default="-", help="Where to write the output to", ) args = parser.parse_args() key_id = "a_" + random_string(4) key = (generate_signing_key(key_id),) if args.output_file == "-": write_signing_keys(sys.stdout, key) else: with open( args.output_file, "w", opener=lambda p, f: os.open(p, f, mode=0o640) ) as signing_key_file: write_signing_keys(signing_key_file, key) if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/generate_workers_map.py000077500000000000000000000231161455622526000234350ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022-2023 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import logging import re from collections import defaultdict from dataclasses import dataclass from typing import Dict, Iterable, Optional, Pattern, Set, Tuple import yaml from synapse.config.homeserver import HomeServerConfig from synapse.federation.transport.server import ( TransportLayerServer, register_servlets as register_federation_servlets, ) from synapse.http.server import HttpServer, ServletCallback from synapse.rest import ClientRestResource from synapse.rest.key.v2 import RemoteKey from synapse.server import HomeServer from synapse.storage import DataStore logger = logging.getLogger("generate_workers_map") class MockHomeserver(HomeServer): DATASTORE_CLASS = DataStore # type: ignore def __init__(self, config: HomeServerConfig, worker_app: Optional[str]) -> None: super().__init__(config.server.server_name, config=config) self.config.worker.worker_app = worker_app GROUP_PATTERN = re.compile(r"\(\?P<[^>]+?>(.+?)\)") @dataclass class EndpointDescription: """ Describes an endpoint and how it should be routed. """ # The servlet class that handles this endpoint servlet_class: object # The category of this endpoint. Is read from the `CATEGORY` constant in the servlet # class. category: Optional[str] # TODO: # - does it need to be routed based on a stream writer config? # - does it benefit from any optimised, but optional, routing? # - what 'opinionated synapse worker class' (event_creator, synchrotron, etc) does # it go in? class EnumerationResource(HttpServer): """ Accepts servlet registrations for the purposes of building up a description of all endpoints. """ def __init__(self, is_worker: bool) -> None: self.registrations: Dict[Tuple[str, str], EndpointDescription] = {} self._is_worker = is_worker def register_paths( self, method: str, path_patterns: Iterable[Pattern], callback: ServletCallback, servlet_classname: str, ) -> None: # federation servlet callbacks are wrapped, so unwrap them. callback = getattr(callback, "__wrapped__", callback) # fish out the servlet class servlet_class = callback.__self__.__class__ # type: ignore if self._is_worker and method in getattr( servlet_class, "WORKERS_DENIED_METHODS", () ): # This endpoint would cause an error if called on a worker, so pretend it # was never registered! return sd = EndpointDescription( servlet_class=servlet_class, category=getattr(servlet_class, "CATEGORY", None), ) for pat in path_patterns: self.registrations[(method, pat.pattern)] = sd def get_registered_paths_for_hs( hs: HomeServer, ) -> Dict[Tuple[str, str], EndpointDescription]: """ Given a homeserver, get all registered endpoints and their descriptions. """ enumerator = EnumerationResource(is_worker=hs.config.worker.worker_app is not None) ClientRestResource.register_servlets(enumerator, hs) federation_server = TransportLayerServer(hs) # we can't use `federation_server.register_servlets` but this line does the # same thing, only it uses this enumerator register_federation_servlets( federation_server.hs, resource=enumerator, ratelimiter=federation_server.ratelimiter, authenticator=federation_server.authenticator, servlet_groups=federation_server.servlet_groups, ) # the key server endpoints are separate again RemoteKey(hs).register(enumerator) return enumerator.registrations def get_registered_paths_for_default( worker_app: Optional[str], base_config: HomeServerConfig ) -> Dict[Tuple[str, str], EndpointDescription]: """ Given the name of a worker application and a base homeserver configuration, returns: Dict from (method, path) to EndpointDescription TODO Don't require passing in a config """ hs = MockHomeserver(base_config, worker_app) # TODO We only do this to avoid an error, but don't need the database etc hs.setup() return get_registered_paths_for_hs(hs) def elide_http_methods_if_unconflicting( registrations: Dict[Tuple[str, str], EndpointDescription], all_possible_registrations: Dict[Tuple[str, str], EndpointDescription], ) -> Dict[Tuple[str, str], EndpointDescription]: """ Elides HTTP methods (by replacing them with `*`) if all possible registered methods can be handled by the worker whose registration map is `registrations`. i.e. the only endpoints left with methods (other than `*`) should be the ones where the worker can't handle all possible methods for that path. """ def paths_to_methods_dict( methods_and_paths: Iterable[Tuple[str, str]] ) -> Dict[str, Set[str]]: """ Given (method, path) pairs, produces a dict from path to set of methods available at that path. """ result: Dict[str, Set[str]] = {} for method, path in methods_and_paths: result.setdefault(path, set()).add(method) return result all_possible_reg_methods = paths_to_methods_dict(all_possible_registrations) reg_methods = paths_to_methods_dict(registrations) output = {} for path, handleable_methods in reg_methods.items(): if handleable_methods == all_possible_reg_methods[path]: any_method = next(iter(handleable_methods)) # TODO This assumes that all methods have the same servlet. # I suppose that's possibly dubious? output[("*", path)] = registrations[(any_method, path)] else: for method in handleable_methods: output[(method, path)] = registrations[(method, path)] return output def simplify_path_regexes( registrations: Dict[Tuple[str, str], EndpointDescription] ) -> Dict[Tuple[str, str], EndpointDescription]: """ Simplify all the path regexes for the dict of endpoint descriptions, so that we don't use the Python-specific regex extensions (and also to remove needlessly specific detail). """ def simplify_path_regex(path: str) -> str: """ Given a regex pattern, replaces all named capturing groups (e.g. `(?Pxyz)`) with a simpler version available in more common regex dialects (e.g. `.*`). """ # TODO it's hard to choose between these two; # `.*` is a vague simplification # return GROUP_PATTERN.sub(r"\1", path) return GROUP_PATTERN.sub(r".*", path) return {(m, simplify_path_regex(p)): v for (m, p), v in registrations.items()} def main() -> None: parser = argparse.ArgumentParser( description=( "Updates a synapse database to the latest schema and optionally runs background updates" " on it." ) ) parser.add_argument("-v", action="store_true") parser.add_argument( "--config-path", type=argparse.FileType("r"), required=True, help="Synapse configuration file", ) args = parser.parse_args() # TODO # logging.basicConfig(**logging_config) # Load, process and sanity-check the config. hs_config = yaml.safe_load(args.config_path) config = HomeServerConfig() config.parse_config_dict(hs_config, "", "") master_paths = get_registered_paths_for_default(None, config) worker_paths = get_registered_paths_for_default( "synapse.app.generic_worker", config ) all_paths = {**master_paths, **worker_paths} elided_worker_paths = elide_http_methods_if_unconflicting(worker_paths, all_paths) elide_http_methods_if_unconflicting(master_paths, all_paths) # TODO SSO endpoints (pick_idp etc) NOT REGISTERED BY THIS SCRIPT categories_to_methods_and_paths: Dict[ Optional[str], Dict[Tuple[str, str], EndpointDescription] ] = defaultdict(dict) for (method, path), desc in elided_worker_paths.items(): categories_to_methods_and_paths[desc.category][method, path] = desc for category, contents in categories_to_methods_and_paths.items(): print_category(category, contents) def print_category( category_name: Optional[str], elided_worker_paths: Dict[Tuple[str, str], EndpointDescription], ) -> None: """ Prints out a category, in documentation page style. Example: ``` # Category name /path/xyz GET /path/abc ``` """ if category_name: print(f"# {category_name}") else: print("# (Uncategorised requests)") for ln in sorted( p for m, p in simplify_path_regexes(elided_worker_paths) if m == "*" ): print(ln) print() for ln in sorted( f"{m:6} {p}" for m, p in simplify_path_regexes(elided_worker_paths) if m != "*" ): print(ln) print() if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/hash_password.py000077500000000000000000000040341455622526000220750ustar00rootroot00000000000000#!/usr/bin/env python import argparse import getpass import sys import unicodedata import bcrypt import yaml def prompt_for_pass() -> str: password = getpass.getpass("Password: ") if not password: raise Exception("Password cannot be blank.") confirm_password = getpass.getpass("Confirm password: ") if password != confirm_password: raise Exception("Passwords do not match.") return password def main() -> None: bcrypt_rounds = 12 password_pepper = "" parser = argparse.ArgumentParser( description=( "Calculate the hash of a new password, so that passwords can be reset" ) ) parser.add_argument( "-p", "--password", default=None, help="New password for user. Will prompt if omitted.", ) parser.add_argument( "-c", "--config", type=argparse.FileType("r"), help=( "Path to server config file. " "Used to read in bcrypt_rounds and password_pepper." ), required=True, ) args = parser.parse_args() config = yaml.safe_load(args.config) bcrypt_rounds = config.get("bcrypt_rounds", bcrypt_rounds) password_config = config.get("password_config", None) or {} password_pepper = password_config.get("pepper", password_pepper) password = args.password if not password: password = prompt_for_pass() # On Python 2, make sure we decode it to Unicode before we normalise it if isinstance(password, bytes): try: password = password.decode(sys.stdin.encoding) except UnicodeDecodeError: print( "ERROR! Your password is not decodable using your terminal encoding (%s)." % (sys.stdin.encoding,) ) pw = unicodedata.normalize("NFKC", password) hashed = bcrypt.hashpw( pw.encode("utf8") + password_pepper.encode("utf8"), bcrypt.gensalt(bcrypt_rounds), ).decode("ascii") print(hashed) if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/move_remote_media_to_new_store.py000077500000000000000000000073041455622526000255020ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ Moves a list of remote media from one media store to another. The input should be a list of media files to be moved, one per line. Each line should be formatted:: | This can be extracted from postgres with:: psql --tuples-only -A -c "select media_origin, filesystem_id from matrix.remote_media_cache where ..." To use, pipe the above into:: PYTHON_PATH=. synapse/_scripts/move_remote_media_to_new_store.py """ import argparse import logging import os import shutil import sys from synapse.media.filepath import MediaFilePaths logger = logging.getLogger() def main(src_repo: str, dest_repo: str) -> None: src_paths = MediaFilePaths(src_repo) dest_paths = MediaFilePaths(dest_repo) for line in sys.stdin: line = line.strip() parts = line.split("|") if len(parts) != 2: print("Unable to parse input line %s" % line, file=sys.stderr) sys.exit(1) move_media(parts[0], parts[1], src_paths, dest_paths) def move_media( origin_server: str, file_id: str, src_paths: MediaFilePaths, dest_paths: MediaFilePaths, ) -> None: """Move the given file, and any thumbnails, to the dest repo Args: origin_server: file_id: src_paths: dest_paths: """ logger.info("%s/%s", origin_server, file_id) # check that the original exists original_file = src_paths.remote_media_filepath(origin_server, file_id) if not os.path.exists(original_file): logger.warning( "Original for %s/%s (%s) does not exist", origin_server, file_id, original_file, ) else: mkdir_and_move( original_file, dest_paths.remote_media_filepath(origin_server, file_id) ) # now look for thumbnails original_thumb_dir = src_paths.remote_media_thumbnail_dir(origin_server, file_id) if not os.path.exists(original_thumb_dir): return mkdir_and_move( original_thumb_dir, dest_paths.remote_media_thumbnail_dir(origin_server, file_id), ) def mkdir_and_move(original_file: str, dest_file: str) -> None: dirname = os.path.dirname(dest_file) if not os.path.exists(dirname): logger.debug("mkdir %s", dirname) os.makedirs(dirname) logger.debug("mv %s %s", original_file, dest_file) shutil.move(original_file, dest_file) if __name__ == "__main__": parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter ) parser.add_argument("-v", action="store_true", help="enable debug logging") parser.add_argument("src_repo", help="Path to source content repo") parser.add_argument("dest_repo", help="Path to source content repo") args = parser.parse_args() logging.basicConfig( level=logging.DEBUG if args.v else logging.INFO, format="%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s", ) main(args.src_repo, args.dest_repo) synapse-1.100.0/synapse/_scripts/register_new_matrix_user.py000066400000000000000000000217611455622526000243520ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021-22 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import getpass import hashlib import hmac import logging import sys from typing import Any, Callable, Dict, Optional import requests import yaml _CONFLICTING_SHARED_SECRET_OPTS_ERROR = """\ Conflicting options 'registration_shared_secret' and 'registration_shared_secret_path' are both defined in config file. """ _NO_SHARED_SECRET_OPTS_ERROR = """\ No 'registration_shared_secret' or 'registration_shared_secret_path' defined in config. """ _DEFAULT_SERVER_URL = "http://localhost:8008" def request_registration( user: str, password: str, server_location: str, shared_secret: str, admin: bool = False, user_type: Optional[str] = None, _print: Callable[[str], None] = print, exit: Callable[[int], None] = sys.exit, ) -> None: url = "%s/_synapse/admin/v1/register" % (server_location.rstrip("/"),) # Get the nonce r = requests.get(url) if r.status_code != 200: _print("ERROR! Received %d %s" % (r.status_code, r.reason)) if 400 <= r.status_code < 500: try: _print(r.json()["error"]) except Exception: pass return exit(1) nonce = r.json()["nonce"] mac = hmac.new(key=shared_secret.encode("utf8"), digestmod=hashlib.sha1) mac.update(nonce.encode("utf8")) mac.update(b"\x00") mac.update(user.encode("utf8")) mac.update(b"\x00") mac.update(password.encode("utf8")) mac.update(b"\x00") mac.update(b"admin" if admin else b"notadmin") if user_type: mac.update(b"\x00") mac.update(user_type.encode("utf8")) hex_mac = mac.hexdigest() data = { "nonce": nonce, "username": user, "password": password, "mac": hex_mac, "admin": admin, "user_type": user_type, } _print("Sending registration request...") r = requests.post(url, json=data) if r.status_code != 200: _print("ERROR! Received %d %s" % (r.status_code, r.reason)) if 400 <= r.status_code < 500: try: _print(r.json()["error"]) except Exception: pass return exit(1) _print("Success!") def register_new_user( user: str, password: str, server_location: str, shared_secret: str, admin: Optional[bool], user_type: Optional[str], ) -> None: if not user: try: default_user: Optional[str] = getpass.getuser() except Exception: default_user = None if default_user: user = input("New user localpart [%s]: " % (default_user,)) if not user: user = default_user else: user = input("New user localpart: ") if not user: print("Invalid user name") sys.exit(1) if not password: password = getpass.getpass("Password: ") if not password: print("Password cannot be blank.") sys.exit(1) confirm_password = getpass.getpass("Confirm password: ") if password != confirm_password: print("Passwords do not match") sys.exit(1) if admin is None: admin_inp = input("Make admin [no]: ") if admin_inp in ("y", "yes", "true"): admin = True else: admin = False request_registration( user, password, server_location, shared_secret, bool(admin), user_type ) def main() -> None: logging.captureWarnings(True) parser = argparse.ArgumentParser( description="Used to register new users with a given homeserver when" " registration has been disabled. The homeserver must be" " configured with the 'registration_shared_secret' option" " set." ) parser.add_argument( "-u", "--user", default=None, help="Local part of the new user. Will prompt if omitted.", ) parser.add_argument( "-p", "--password", default=None, help="New password for user. Will prompt if omitted.", ) parser.add_argument( "-t", "--user_type", default=None, help="User type as specified in synapse.api.constants.UserTypes", ) admin_group = parser.add_mutually_exclusive_group() admin_group.add_argument( "-a", "--admin", action="store_true", help=( "Register new user as an admin. " "Will prompt if --no-admin is not set either." ), ) admin_group.add_argument( "--no-admin", action="store_true", help=( "Register new user as a regular user. " "Will prompt if --admin is not set either." ), ) group = parser.add_mutually_exclusive_group(required=True) group.add_argument( "-c", "--config", type=argparse.FileType("r"), help="Path to server config file. Used to read in shared secret.", ) group.add_argument( "-k", "--shared-secret", help="Shared secret as defined in server config file." ) parser.add_argument( "server_url", nargs="?", help="URL to use to talk to the homeserver. By default, tries to find a " "suitable URL from the configuration file. Otherwise, defaults to " f"'{_DEFAULT_SERVER_URL}'.", ) args = parser.parse_args() config: Optional[Dict[str, Any]] = None if "config" in args and args.config: config = yaml.safe_load(args.config) if args.shared_secret: secret = args.shared_secret else: # argparse should check that we have either config or shared secret assert config is not None secret = config.get("registration_shared_secret") secret_file = config.get("registration_shared_secret_path") if secret_file: if secret: print(_CONFLICTING_SHARED_SECRET_OPTS_ERROR, file=sys.stderr) sys.exit(1) secret = _read_file(secret_file, "registration_shared_secret_path").strip() if not secret: print(_NO_SHARED_SECRET_OPTS_ERROR, file=sys.stderr) sys.exit(1) if args.server_url: server_url = args.server_url elif config is not None: server_url = _find_client_listener(config) if not server_url: server_url = _DEFAULT_SERVER_URL print( "Unable to find a suitable HTTP listener in the configuration file. " f"Trying {server_url} as a last resort.", file=sys.stderr, ) else: server_url = _DEFAULT_SERVER_URL print( f"No server url or configuration file given. Defaulting to {server_url}.", file=sys.stderr, ) admin = None if args.admin or args.no_admin: admin = args.admin register_new_user( args.user, args.password, server_url, secret, admin, args.user_type ) def _read_file(file_path: Any, config_path: str) -> str: """Check the given file exists, and read it into a string If it does not, exit with an error indicating the problem Args: file_path: the file to be read config_path: where in the configuration file_path came from, so that a useful error can be emitted if it does not exist. Returns: content of the file. """ if not isinstance(file_path, str): print(f"{config_path} setting is not a string", file=sys.stderr) sys.exit(1) try: with open(file_path) as file_stream: return file_stream.read() except OSError as e: print(f"Error accessing file {file_path}: {e}", file=sys.stderr) sys.exit(1) def _find_client_listener(config: Dict[str, Any]) -> Optional[str]: # try to find a listener in the config. Returns a host:port pair for listener in config.get("listeners", []): if listener.get("type") != "http" or listener.get("tls", False): continue if not any( name == "client" for resource in listener.get("resources", []) for name in resource.get("names", []) ): continue # TODO: consider bind_addresses return f"http://localhost:{listener['port']}" # no suitable listeners? return None if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/review_recent_signups.py000066400000000000000000000136251455622526000236440ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import sys import time from datetime import datetime from typing import List import attr from synapse.config._base import ( Config, RootConfig, find_config_files, read_config_files, ) from synapse.config.database import DatabaseConfig from synapse.storage.database import DatabasePool, LoggingTransaction, make_conn from synapse.storage.engines import create_engine class ReviewConfig(RootConfig): "A config class that just pulls out the database config" config_classes = [DatabaseConfig] @attr.s(auto_attribs=True) class UserInfo: user_id: str creation_ts: int emails: List[str] = attr.Factory(list) private_rooms: List[str] = attr.Factory(list) public_rooms: List[str] = attr.Factory(list) ips: List[str] = attr.Factory(list) def get_recent_users( txn: LoggingTransaction, since_ms: int, exclude_app_service: bool ) -> List[UserInfo]: """Fetches recently registered users and some info on them.""" sql = """ SELECT name, creation_ts FROM users WHERE ? <= creation_ts AND deactivated = 0 """ if exclude_app_service: sql += " AND appservice_id IS NULL" txn.execute(sql, (since_ms / 1000,)) user_infos = [UserInfo(user_id, creation_ts) for user_id, creation_ts in txn] for user_info in user_infos: user_info.emails = DatabasePool.simple_select_onecol_txn( txn, table="user_threepids", keyvalues={"user_id": user_info.user_id, "medium": "email"}, retcol="address", ) sql = """ SELECT room_id, canonical_alias, name, join_rules FROM local_current_membership INNER JOIN room_stats_state USING (room_id) WHERE user_id = ? AND membership = 'join' """ txn.execute(sql, (user_info.user_id,)) for room_id, canonical_alias, name, join_rules in txn: if join_rules == "public": user_info.public_rooms.append(canonical_alias or name or room_id) else: user_info.private_rooms.append(canonical_alias or name or room_id) user_info.ips = DatabasePool.simple_select_onecol_txn( txn, table="user_ips", keyvalues={"user_id": user_info.user_id}, retcol="ip", ) return user_infos def main() -> None: parser = argparse.ArgumentParser() parser.add_argument( "-c", "--config-path", action="append", metavar="CONFIG_FILE", help="The config files for Synapse.", required=True, ) parser.add_argument( "-s", "--since", metavar="duration", help="Specify how far back to review user registrations for, defaults to 7d (i.e. 7 days).", default="7d", ) parser.add_argument( "-e", "--exclude-emails", action="store_true", help="Exclude users that have validated email addresses.", ) parser.add_argument( "-u", "--only-users", action="store_true", help="Only print user IDs that match.", ) parser.add_argument( "-a", "--exclude-app-service", help="Exclude appservice users.", action="store_true", ) config = ReviewConfig() config_args = parser.parse_args(sys.argv[1:]) config_files = find_config_files(search_paths=config_args.config_path) config_dict = read_config_files(config_files) config.parse_config_dict(config_dict, "", "") since_ms = time.time() * 1000 - Config.parse_duration(config_args.since) exclude_users_with_email = config_args.exclude_emails exclude_users_with_appservice = config_args.exclude_app_service include_context = not config_args.only_users for database_config in config.database.databases: if "main" in database_config.databases: break engine = create_engine(database_config.config) with make_conn(database_config, engine, "review_recent_signups") as db_conn: # This generates a type of Cursor, not LoggingTransaction. user_infos = get_recent_users(db_conn.cursor(), since_ms, exclude_users_with_appservice) # type: ignore[arg-type] for user_info in user_infos: if exclude_users_with_email and user_info.emails: continue if include_context: print_public_rooms = "" if user_info.public_rooms: print_public_rooms = "(" + ", ".join(user_info.public_rooms[:3]) if len(user_info.public_rooms) > 3: print_public_rooms += ", ..." print_public_rooms += ")" print("# Created:", datetime.fromtimestamp(user_info.creation_ts)) print("# Email:", ", ".join(user_info.emails) or "None") print("# IPs:", ", ".join(user_info.ips)) print( "# Number joined public rooms:", len(user_info.public_rooms), print_public_rooms, ) print("# Number joined private rooms:", len(user_info.private_rooms)) print("#") print(user_info.user_id) if include_context: print() if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/synapse_port_db.py000077500000000000000000001430701455622526000224270ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import curses import logging import os import sys import time import traceback from types import TracebackType from typing import ( Any, Awaitable, Callable, Dict, Generator, Iterable, List, NoReturn, Optional, Set, Tuple, Type, TypeVar, cast, ) import yaml from typing_extensions import TypedDict from twisted.internet import defer, reactor as reactor_ from synapse.config.database import DatabaseConnectionConfig from synapse.config.homeserver import HomeServerConfig from synapse.logging.context import ( LoggingContext, make_deferred_yieldable, run_in_background, ) from synapse.notifier import ReplicationNotifier from synapse.storage.database import DatabasePool, LoggingTransaction, make_conn from synapse.storage.databases.main import FilteringWorkerStore, PushRuleStore from synapse.storage.databases.main.account_data import AccountDataWorkerStore from synapse.storage.databases.main.client_ips import ClientIpBackgroundUpdateStore from synapse.storage.databases.main.deviceinbox import DeviceInboxBackgroundUpdateStore from synapse.storage.databases.main.devices import DeviceBackgroundUpdateStore from synapse.storage.databases.main.e2e_room_keys import EndToEndRoomKeyBackgroundStore from synapse.storage.databases.main.end_to_end_keys import EndToEndKeyBackgroundStore from synapse.storage.databases.main.event_federation import EventFederationWorkerStore from synapse.storage.databases.main.event_push_actions import EventPushActionsStore from synapse.storage.databases.main.events_bg_updates import ( EventsBackgroundUpdatesStore, ) from synapse.storage.databases.main.media_repository import ( MediaRepositoryBackgroundUpdateStore, ) from synapse.storage.databases.main.presence import PresenceBackgroundUpdateStore from synapse.storage.databases.main.profile import ProfileWorkerStore from synapse.storage.databases.main.pusher import ( PusherBackgroundUpdatesStore, PusherWorkerStore, ) from synapse.storage.databases.main.receipts import ReceiptsBackgroundUpdateStore from synapse.storage.databases.main.registration import ( RegistrationBackgroundUpdateStore, find_max_generated_user_id_localpart, ) from synapse.storage.databases.main.relations import RelationsWorkerStore from synapse.storage.databases.main.room import RoomBackgroundUpdateStore from synapse.storage.databases.main.roommember import RoomMemberBackgroundUpdateStore from synapse.storage.databases.main.search import SearchBackgroundUpdateStore from synapse.storage.databases.main.state import MainStateBackgroundUpdateStore from synapse.storage.databases.main.stats import StatsStore from synapse.storage.databases.main.user_directory import ( UserDirectoryBackgroundUpdateStore, ) from synapse.storage.databases.state.bg_updates import StateBackgroundUpdateStore from synapse.storage.engines import create_engine from synapse.storage.prepare_database import prepare_database from synapse.types import ISynapseReactor from synapse.util import SYNAPSE_VERSION, Clock # Cast safety: Twisted does some naughty magic which replaces the # twisted.internet.reactor module with a Reactor instance at runtime. reactor = cast(ISynapseReactor, reactor_) logger = logging.getLogger("synapse_port_db") # SQLite doesn't have a dedicated boolean type (it stores True/False as 1/0). This means # portdb will read sqlite bools as integers, then try to insert them into postgres # boolean columns---which fails. Lacking some Python-parseable metaschema, we must # specify which integer columns should be inserted as booleans into postgres. BOOLEAN_COLUMNS = { "access_tokens": ["used"], "account_validity": ["email_sent"], "device_lists_changes_in_room": ["converted_to_destinations"], "device_lists_outbound_pokes": ["sent"], "devices": ["hidden"], "e2e_fallback_keys_json": ["used"], "e2e_room_keys": ["is_verified"], "event_edges": ["is_state"], "events": ["processed", "outlier", "contains_url"], "local_media_repository": ["safe_from_quarantine"], "presence_list": ["accepted"], "presence_stream": ["currently_active"], "public_room_list_stream": ["visibility"], "pushers": ["enabled"], "redactions": ["have_censored"], "room_stats_state": ["is_federatable"], "rooms": ["is_public", "has_auth_chain_index"], "users": ["shadow_banned", "approved", "locked"], "un_partial_stated_event_stream": ["rejection_status_changed"], "users_who_share_rooms": ["share_private"], "per_user_experimental_features": ["enabled"], } # These tables are never deleted from in normal operation [*], so we can resume porting # over rows from a previous attempt rather than starting from scratch. # # [*]: We do delete from many of these tables when purging a room, and # presumably when purging old events. So we might e.g. # # 1. Run portdb and port half of some table. # 2. Stop portdb. # 3. Purge something, deleting some of the rows we've ported over. # 4. Restart portdb. The rows deleted from sqlite are still present in postgres. # # But this isn't the end of the world: we should be able to repeat the purge # on the postgres DB when porting completes. APPEND_ONLY_TABLES = [ "cache_invalidation_stream_by_instance", "event_auth", "event_edges", "event_json", "event_reference_hashes", "event_search", "event_to_state_groups", "events", "ex_outlier_stream", "local_media_repository", "local_media_repository_thumbnails", "presence_stream", "public_room_list_stream", "push_rules_stream", "received_transactions", "redactions", "rejections", "remote_media_cache", "remote_media_cache_thumbnails", "room_memberships", "room_names", "rooms", "sent_transactions", "state_events", "state_group_edges", "state_groups", "state_groups_state", "stream_ordering_to_exterm", "topics", "transaction_id_to_pdu", "un_partial_stated_event_stream", "users", ] IGNORED_TABLES = { # We don't port these tables, as they're a faff and we can regenerate # them anyway. "user_directory", "user_directory_search", "user_directory_search_content", "user_directory_search_docsize", "user_directory_search_segdir", "user_directory_search_segments", "user_directory_search_stat", "user_directory_search_pos", "users_who_share_private_rooms", "users_in_public_rooms", # UI auth sessions have foreign keys so additional care needs to be taken, # the sessions are transient anyway, so ignore them. "ui_auth_sessions", "ui_auth_sessions_credentials", "ui_auth_sessions_ips", # Ignore the worker locks table, as a) there shouldn't be any acquired locks # after porting, and b) the circular foreign key constraints make it hard to # port. "worker_read_write_locks_mode", "worker_read_write_locks", } # Error returned by the run function. Used at the top-level part of the script to # handle errors and return codes. end_error: Optional[str] = None # The exec_info for the error, if any. If error is defined but not exec_info the script # will show only the error message without the stacktrace, if exec_info is defined but # not the error then the script will show nothing outside of what's printed in the run # function. If both are defined, the script will print both the error and the stacktrace. end_error_exec_info: Optional[ Tuple[Type[BaseException], BaseException, TracebackType] ] = None R = TypeVar("R") class Store( EventPushActionsStore, ClientIpBackgroundUpdateStore, DeviceInboxBackgroundUpdateStore, DeviceBackgroundUpdateStore, EventsBackgroundUpdatesStore, MediaRepositoryBackgroundUpdateStore, RegistrationBackgroundUpdateStore, RoomBackgroundUpdateStore, RoomMemberBackgroundUpdateStore, SearchBackgroundUpdateStore, StateBackgroundUpdateStore, MainStateBackgroundUpdateStore, UserDirectoryBackgroundUpdateStore, EndToEndKeyBackgroundStore, EndToEndRoomKeyBackgroundStore, StatsStore, AccountDataWorkerStore, FilteringWorkerStore, ProfileWorkerStore, PushRuleStore, PusherWorkerStore, PusherBackgroundUpdatesStore, PresenceBackgroundUpdateStore, ReceiptsBackgroundUpdateStore, RelationsWorkerStore, EventFederationWorkerStore, ): def execute(self, f: Callable[..., R], *args: Any, **kwargs: Any) -> Awaitable[R]: return self.db_pool.runInteraction(f.__name__, f, *args, **kwargs) def execute_sql(self, sql: str, *args: object) -> Awaitable[List[Tuple]]: def r(txn: LoggingTransaction) -> List[Tuple]: txn.execute(sql, args) return txn.fetchall() return self.db_pool.runInteraction("execute_sql", r) def insert_many_txn( self, txn: LoggingTransaction, table: str, headers: List[str], rows: List[Tuple] ) -> None: sql = "INSERT INTO %s (%s) VALUES (%s)" % ( table, ", ".join(k for k in headers), ", ".join("%s" for _ in headers), ) try: txn.executemany(sql, rows) except Exception: logger.exception("Failed to insert: %s", table) raise # Note: the parent method is an `async def`. def set_room_is_public(self, room_id: str, is_public: bool) -> NoReturn: raise Exception( "Attempt to set room_is_public during port_db: database not empty?" ) class MockHomeserver: def __init__(self, config: HomeServerConfig): self.clock = Clock(reactor) self.config = config self.hostname = config.server.server_name self.version_string = SYNAPSE_VERSION def get_clock(self) -> Clock: return self.clock def get_reactor(self) -> ISynapseReactor: return reactor def get_instance_name(self) -> str: return "master" def should_send_federation(self) -> bool: return False def get_replication_notifier(self) -> ReplicationNotifier: return ReplicationNotifier() class Porter: def __init__( self, sqlite_config: Dict[str, Any], progress: "Progress", batch_size: int, hs_config: HomeServerConfig, ): self.sqlite_config = sqlite_config self.progress = progress self.batch_size = batch_size self.hs_config = hs_config async def setup_table(self, table: str) -> Tuple[str, int, int, int, int]: if table in APPEND_ONLY_TABLES: # It's safe to just carry on inserting. row = await self.postgres_store.db_pool.simple_select_one( table="port_from_sqlite3", keyvalues={"table_name": table}, retcols=("forward_rowid", "backward_rowid"), allow_none=True, ) total_to_port = None if row is None: if table == "sent_transactions": ( forward_chunk, already_ported, total_to_port, ) = await self._setup_sent_transactions() backward_chunk = 0 else: await self.postgres_store.db_pool.simple_insert( table="port_from_sqlite3", values={ "table_name": table, "forward_rowid": 1, "backward_rowid": 0, }, ) forward_chunk = 1 backward_chunk = 0 already_ported = 0 else: forward_chunk, backward_chunk = row if total_to_port is None: already_ported, total_to_port = await self._get_total_count_to_port( table, forward_chunk, backward_chunk ) else: def delete_all(txn: LoggingTransaction) -> None: txn.execute( "DELETE FROM port_from_sqlite3 WHERE table_name = %s", (table,) ) txn.execute("TRUNCATE %s CASCADE" % (table,)) await self.postgres_store.execute(delete_all) await self.postgres_store.db_pool.simple_insert( table="port_from_sqlite3", values={"table_name": table, "forward_rowid": 1, "backward_rowid": 0}, ) forward_chunk = 1 backward_chunk = 0 already_ported, total_to_port = await self._get_total_count_to_port( table, forward_chunk, backward_chunk ) return table, already_ported, total_to_port, forward_chunk, backward_chunk async def get_table_constraints(self) -> Dict[str, Set[str]]: """Returns a map of tables that have foreign key constraints to tables they depend on.""" def _get_constraints(txn: LoggingTransaction) -> Dict[str, Set[str]]: # We can pull the information about foreign key constraints out from # the postgres schema tables. sql = """ SELECT DISTINCT tc.table_name, ccu.table_name AS foreign_table_name FROM information_schema.table_constraints AS tc INNER JOIN information_schema.constraint_column_usage AS ccu USING (table_schema, constraint_name) WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name != ccu.table_name; """ txn.execute(sql) results: Dict[str, Set[str]] = {} for table, foreign_table in txn: results.setdefault(table, set()).add(foreign_table) return results return await self.postgres_store.db_pool.runInteraction( "get_table_constraints", _get_constraints ) async def handle_table( self, table: str, postgres_size: int, table_size: int, forward_chunk: int, backward_chunk: int, ) -> None: logger.info( "Table %s: %i/%i (rows %i-%i) already ported", table, postgres_size, table_size, backward_chunk + 1, forward_chunk - 1, ) if not table_size: return self.progress.add_table(table, postgres_size, table_size) if table == "event_search": await self.handle_search_table( postgres_size, table_size, forward_chunk, backward_chunk ) return if table in IGNORED_TABLES: self.progress.update(table, table_size) # Mark table as done return if table == "user_directory_stream_pos": # We need to make sure there is a single row, `(X, null), as that is # what synapse expects to be there. await self.postgres_store.db_pool.simple_insert( table=table, values={"stream_id": None} ) self.progress.update(table, table_size) # Mark table as done return # We sweep over rowids in two directions: one forwards (rowids 1, 2, 3, ...) # and another backwards (rowids 0, -1, -2, ...). forward_select = ( "SELECT rowid, * FROM %s WHERE rowid >= ? ORDER BY rowid LIMIT ?" % (table,) ) backward_select = ( "SELECT rowid, * FROM %s WHERE rowid <= ? ORDER BY rowid DESC LIMIT ?" % (table,) ) do_forward = [True] do_backward = [True] while True: def r( txn: LoggingTransaction, ) -> Tuple[Optional[List[str]], List[Tuple], List[Tuple]]: forward_rows = [] backward_rows = [] if do_forward[0]: txn.execute(forward_select, (forward_chunk, self.batch_size)) forward_rows = txn.fetchall() if not forward_rows: do_forward[0] = False if do_backward[0]: txn.execute(backward_select, (backward_chunk, self.batch_size)) backward_rows = txn.fetchall() if not backward_rows: do_backward[0] = False if forward_rows or backward_rows: assert txn.description is not None headers: Optional[List[str]] = [ column[0] for column in txn.description ] else: headers = None return headers, forward_rows, backward_rows headers, frows, brows = await self.sqlite_store.db_pool.runInteraction( "select", r ) if frows or brows: assert headers is not None if frows: forward_chunk = max(row[0] for row in frows) + 1 if brows: backward_chunk = min(row[0] for row in brows) - 1 rows = frows + brows rows = self._convert_rows(table, headers, rows) def insert(txn: LoggingTransaction) -> None: assert headers is not None self.postgres_store.insert_many_txn(txn, table, headers[1:], rows) self.postgres_store.db_pool.simple_update_one_txn( txn, table="port_from_sqlite3", keyvalues={"table_name": table}, updatevalues={ "forward_rowid": forward_chunk, "backward_rowid": backward_chunk, }, ) await self.postgres_store.execute(insert) postgres_size += len(rows) self.progress.update(table, postgres_size) else: return async def handle_search_table( self, postgres_size: int, table_size: int, forward_chunk: int, backward_chunk: int, ) -> None: select = ( "SELECT es.rowid, es.*, e.origin_server_ts, e.stream_ordering" " FROM event_search as es" " INNER JOIN events AS e USING (event_id, room_id)" " WHERE es.rowid >= ?" " ORDER BY es.rowid LIMIT ?" ) while True: def r(txn: LoggingTransaction) -> Tuple[List[str], List[Tuple]]: txn.execute(select, (forward_chunk, self.batch_size)) rows = txn.fetchall() assert txn.description is not None headers = [column[0] for column in txn.description] return headers, rows headers, rows = await self.sqlite_store.db_pool.runInteraction("select", r) if rows: forward_chunk = rows[-1][0] + 1 # We have to treat event_search differently since it has a # different structure in the two different databases. def insert(txn: LoggingTransaction) -> None: sql = ( "INSERT INTO event_search (event_id, room_id, key," " sender, vector, origin_server_ts, stream_ordering)" " VALUES (?,?,?,?,to_tsvector('english', ?),?,?)" ) rows_dict = [] for row in rows: d = dict(zip(headers, row)) if "\0" in d["value"]: logger.warning("dropping search row %s", d) else: rows_dict.append(d) txn.executemany( sql, [ ( row["event_id"], row["room_id"], row["key"], row["sender"], row["value"], row["origin_server_ts"], row["stream_ordering"], ) for row in rows_dict ], ) self.postgres_store.db_pool.simple_update_one_txn( txn, table="port_from_sqlite3", keyvalues={"table_name": "event_search"}, updatevalues={ "forward_rowid": forward_chunk, "backward_rowid": backward_chunk, }, ) await self.postgres_store.execute(insert) postgres_size += len(rows) self.progress.update("event_search", postgres_size) else: return def build_db_store( self, db_config: DatabaseConnectionConfig, allow_outdated_version: bool = False, ) -> Store: """Builds and returns a database store using the provided configuration. Args: db_config: The database configuration allow_outdated_version: True to suppress errors about the database server version being too old to run a complete synapse Returns: The built Store object. """ self.progress.set_state("Preparing %s" % db_config.config["name"]) engine = create_engine(db_config.config) hs = MockHomeserver(self.hs_config) with make_conn(db_config, engine, "portdb") as db_conn: engine.check_database( db_conn, allow_outdated_version=allow_outdated_version ) prepare_database(db_conn, engine, config=self.hs_config) # Type safety: ignore that we're using Mock homeservers here. store = Store(DatabasePool(hs, db_config, engine), db_conn, hs) # type: ignore[arg-type] db_conn.commit() return store async def run_background_updates_on_postgres(self) -> None: # Manually apply all background updates on the PostgreSQL database. postgres_ready = ( await self.postgres_store.db_pool.updates.has_completed_background_updates() ) if not postgres_ready: # Only say that we're running background updates when there are background # updates to run. self.progress.set_state("Running background updates on PostgreSQL") while not postgres_ready: await self.postgres_store.db_pool.updates.do_next_background_update(True) postgres_ready = await ( self.postgres_store.db_pool.updates.has_completed_background_updates() ) @staticmethod def _is_sqlite_autovacuum_enabled(txn: LoggingTransaction) -> bool: """ Returns true if auto_vacuum is enabled in SQLite. https://www.sqlite.org/pragma.html#pragma_auto_vacuum Vacuuming changes the rowids on rows in the database. Auto-vacuuming is therefore dangerous when used in conjunction with this script. Note that the auto_vacuum setting can't be changed without performing a VACUUM after trying to change the pragma. """ txn.execute("PRAGMA auto_vacuum") row = txn.fetchone() assert row is not None, "`PRAGMA auto_vacuum` did not give a row." (autovacuum_setting,) = row # 0 means off. 1 means full. 2 means incremental. return autovacuum_setting != 0 async def run(self) -> None: """Ports the SQLite database to a PostgreSQL database. When a fatal error is met, its message is assigned to the global "end_error" variable. When this error comes with a stacktrace, its exec_info is assigned to the global "end_error_exec_info" variable. """ global end_error try: # we allow people to port away from outdated versions of sqlite. self.sqlite_store = self.build_db_store( DatabaseConnectionConfig("master-sqlite", self.sqlite_config), allow_outdated_version=True, ) # For safety, ensure auto_vacuums are disabled. if await self.sqlite_store.db_pool.runInteraction( "is_sqlite_autovacuum_enabled", self._is_sqlite_autovacuum_enabled ): end_error = ( "auto_vacuum is enabled in the SQLite database." " (This is not the default configuration.)\n" " This script relies on rowids being consistent and must not" " be used if the database could be vacuumed between re-runs.\n" " To disable auto_vacuum, you need to stop Synapse and run the following SQL:\n" " PRAGMA auto_vacuum=off;\n" " VACUUM;" ) return # Check if all background updates are done, abort if not. updates_complete = ( await self.sqlite_store.db_pool.updates.has_completed_background_updates() ) if not updates_complete: end_error = ( "Pending background updates exist in the SQLite3 database." " Please start Synapse again and wait until every update has finished" " before running this script.\n" ) return self.postgres_store = self.build_db_store( self.hs_config.database.get_single_database() ) await self.run_background_updates_on_postgres() self.progress.set_state("Creating port tables") def create_port_table(txn: LoggingTransaction) -> None: txn.execute( "CREATE TABLE IF NOT EXISTS port_from_sqlite3 (" " table_name varchar(100) NOT NULL UNIQUE," " forward_rowid bigint NOT NULL," " backward_rowid bigint NOT NULL" ")" ) # The old port script created a table with just a "rowid" column. # We want people to be able to rerun this script from an old port # so that they can pick up any missing events that were not # ported across. def alter_table(txn: LoggingTransaction) -> None: txn.execute( "ALTER TABLE IF EXISTS port_from_sqlite3" " RENAME rowid TO forward_rowid" ) txn.execute( "ALTER TABLE IF EXISTS port_from_sqlite3" " ADD backward_rowid bigint NOT NULL DEFAULT 0" ) try: await self.postgres_store.db_pool.runInteraction( "alter_table", alter_table ) except Exception: # On Error Resume Next pass await self.postgres_store.db_pool.runInteraction( "create_port_table", create_port_table ) # Step 2. Set up sequences # # We do this before porting the tables so that even if we fail half # way through the postgres DB always have sequences that are greater # than their respective tables. If we don't then creating the # `DataStore` object will fail due to the inconsistency. self.progress.set_state("Setting up sequence generators") await self._setup_state_group_id_seq() await self._setup_user_id_seq() await self._setup_events_stream_seqs() await self._setup_sequence( "un_partial_stated_event_stream_sequence", ("un_partial_stated_event_stream",), ) await self._setup_sequence( "device_inbox_sequence", ("device_inbox", "device_federation_outbox") ) await self._setup_sequence( "account_data_sequence", ("room_account_data", "room_tags_revisions", "account_data"), ) await self._setup_sequence("receipts_sequence", ("receipts_linearized",)) await self._setup_sequence("presence_stream_sequence", ("presence_stream",)) await self._setup_auth_chain_sequence() await self._setup_sequence( "application_services_txn_id_seq", ("application_services_txns",), "txn_id", ) # Step 3. Get tables. self.progress.set_state("Fetching tables") sqlite_tables = await self.sqlite_store.db_pool.simple_select_onecol( table="sqlite_master", keyvalues={"type": "table"}, retcol="name" ) postgres_tables = await self.postgres_store.db_pool.simple_select_onecol( table="information_schema.tables", keyvalues={}, retcol="distinct table_name", ) tables = set(sqlite_tables) & set(postgres_tables) logger.info("Found %d tables", len(tables)) # Step 4. Figure out what still needs copying self.progress.set_state("Checking on port progress") setup_res = await make_deferred_yieldable( defer.gatherResults( [ run_in_background(self.setup_table, table) for table in tables if table not in ["schema_version", "applied_schema_deltas"] and not table.startswith("sqlite_") ], consumeErrors=True, ) ) # Map from table name to args passed to `handle_table`, i.e. a tuple # of: `postgres_size`, `table_size`, `forward_chunk`, `backward_chunk`. tables_to_port_info_map = { r[0]: r[1:] for r in setup_res if r[0] not in IGNORED_TABLES } # Step 5. Do the copying. # # This is slightly convoluted as we need to ensure tables are ported # in the correct order due to foreign key constraints. self.progress.set_state("Copying to postgres") constraints = await self.get_table_constraints() tables_ported = set() # type: Set[str] while tables_to_port_info_map: # Pulls out all tables that are still to be ported and which # only depend on tables that are already ported (if any). tables_to_port = [ table for table in tables_to_port_info_map if not constraints.get(table, set()) - tables_ported ] await make_deferred_yieldable( defer.gatherResults( [ run_in_background( self.handle_table, table, *tables_to_port_info_map.pop(table), ) for table in tables_to_port ], consumeErrors=True, ) ) tables_ported.update(tables_to_port) self.progress.done() except Exception as e: global end_error_exec_info end_error = str(e) # Type safety: we're in an exception handler, so the exc_info() tuple # will not be (None, None, None). end_error_exec_info = sys.exc_info() # type: ignore[assignment] logger.exception("") finally: reactor.stop() def _convert_rows( self, table: str, headers: List[str], rows: List[Tuple] ) -> List[Tuple]: bool_col_names = BOOLEAN_COLUMNS.get(table, []) bool_cols = [i for i, h in enumerate(headers) if h in bool_col_names] class BadValueException(Exception): pass def conv(j: int, col: object) -> object: if j in bool_cols: return bool(col) if isinstance(col, bytes): return bytearray(col) elif isinstance(col, str) and "\0" in col: logger.warning( "DROPPING ROW: NUL value in table %s col %s: %r", table, headers[j], col, ) raise BadValueException() return col outrows = [] for row in rows: try: outrows.append( tuple(conv(j, col) for j, col in enumerate(row) if j > 0) ) except BadValueException: pass return outrows async def _setup_sent_transactions(self) -> Tuple[int, int, int]: # Only save things from the last day yesterday = int(time.time() * 1000) - 86400000 # And save the max transaction id from each destination select = ( "SELECT rowid, * FROM sent_transactions WHERE rowid IN (" "SELECT max(rowid) FROM sent_transactions" " GROUP BY destination" ")" ) def r(txn: LoggingTransaction) -> Tuple[List[str], List[Tuple]]: txn.execute(select) rows = txn.fetchall() assert txn.description is not None headers = [column[0] for column in txn.description] ts_ind = headers.index("ts") return headers, [r for r in rows if r[ts_ind] < yesterday] headers, rows = await self.sqlite_store.db_pool.runInteraction("select", r) rows = self._convert_rows("sent_transactions", headers, rows) inserted_rows = len(rows) if inserted_rows: max_inserted_rowid = max(r[0] for r in rows) def insert(txn: LoggingTransaction) -> None: self.postgres_store.insert_many_txn( txn, "sent_transactions", headers[1:], rows ) await self.postgres_store.execute(insert) else: max_inserted_rowid = 0 def get_start_id(txn: LoggingTransaction) -> int: txn.execute( "SELECT rowid FROM sent_transactions WHERE ts >= ?" " ORDER BY rowid ASC LIMIT 1", (yesterday,), ) rows = txn.fetchall() if rows: return rows[0][0] else: return 1 next_chunk = await self.sqlite_store.execute(get_start_id) next_chunk = max(max_inserted_rowid + 1, next_chunk) await self.postgres_store.db_pool.simple_insert( table="port_from_sqlite3", values={ "table_name": "sent_transactions", "forward_rowid": next_chunk, "backward_rowid": 0, }, ) def get_sent_table_size(txn: LoggingTransaction) -> int: txn.execute( "SELECT count(*) FROM sent_transactions" " WHERE ts >= ?", (yesterday,) ) result = txn.fetchone() assert result is not None return int(result[0]) remaining_count = await self.sqlite_store.execute(get_sent_table_size) total_count = remaining_count + inserted_rows return next_chunk, inserted_rows, total_count async def _get_remaining_count_to_port( self, table: str, forward_chunk: int, backward_chunk: int ) -> int: frows = cast( List[Tuple[int]], await self.sqlite_store.execute_sql( "SELECT count(*) FROM %s WHERE rowid >= ?" % (table,), forward_chunk ), ) brows = cast( List[Tuple[int]], await self.sqlite_store.execute_sql( "SELECT count(*) FROM %s WHERE rowid <= ?" % (table,), backward_chunk ), ) return frows[0][0] + brows[0][0] async def _get_already_ported_count(self, table: str) -> int: rows = await self.postgres_store.execute_sql( "SELECT count(*) FROM %s" % (table,) ) return rows[0][0] async def _get_total_count_to_port( self, table: str, forward_chunk: int, backward_chunk: int ) -> Tuple[int, int]: remaining, done = await make_deferred_yieldable( defer.gatherResults( [ run_in_background( self._get_remaining_count_to_port, table, forward_chunk, backward_chunk, ), run_in_background(self._get_already_ported_count, table), ], ) ) remaining = int(remaining) if remaining else 0 done = int(done) if done else 0 return done, remaining + done async def _setup_state_group_id_seq(self) -> None: curr_id: Optional[ int ] = await self.sqlite_store.db_pool.simple_select_one_onecol( table="state_groups", keyvalues={}, retcol="MAX(id)", allow_none=True ) if not curr_id: return def r(txn: LoggingTransaction) -> None: assert curr_id is not None next_id = curr_id + 1 txn.execute("ALTER SEQUENCE state_group_id_seq RESTART WITH %s", (next_id,)) await self.postgres_store.db_pool.runInteraction("setup_state_group_id_seq", r) async def _setup_user_id_seq(self) -> None: curr_id = await self.sqlite_store.db_pool.runInteraction( "setup_user_id_seq", find_max_generated_user_id_localpart ) def r(txn: LoggingTransaction) -> None: next_id = curr_id + 1 txn.execute("ALTER SEQUENCE user_id_seq RESTART WITH %s", (next_id,)) await self.postgres_store.db_pool.runInteraction("setup_user_id_seq", r) async def _setup_events_stream_seqs(self) -> None: """Set the event stream sequences to the correct values.""" # We get called before we've ported the events table, so we need to # fetch the current positions from the SQLite store. curr_forward_id = await self.sqlite_store.db_pool.simple_select_one_onecol( table="events", keyvalues={}, retcol="MAX(stream_ordering)", allow_none=True ) curr_backward_id = await self.sqlite_store.db_pool.simple_select_one_onecol( table="events", keyvalues={}, retcol="MAX(-MIN(stream_ordering), 1)", allow_none=True, ) def _setup_events_stream_seqs_set_pos(txn: LoggingTransaction) -> None: if curr_forward_id: txn.execute( "ALTER SEQUENCE events_stream_seq RESTART WITH %s", (curr_forward_id + 1,), ) if curr_backward_id: txn.execute( "ALTER SEQUENCE events_backfill_stream_seq RESTART WITH %s", (curr_backward_id + 1,), ) await self.postgres_store.db_pool.runInteraction( "_setup_events_stream_seqs", _setup_events_stream_seqs_set_pos, ) async def _setup_sequence( self, sequence_name: str, stream_id_tables: Iterable[str], column_name: str = "stream_id", ) -> None: """Set a sequence to the correct value.""" current_stream_ids = [] for stream_id_table in stream_id_tables: max_stream_id = cast( int, await self.sqlite_store.db_pool.simple_select_one_onecol( table=stream_id_table, keyvalues={}, retcol=f"COALESCE(MAX({column_name}), 1)", allow_none=True, ), ) current_stream_ids.append(max_stream_id) next_id = max(current_stream_ids) + 1 def r(txn: LoggingTransaction) -> None: sql = "ALTER SEQUENCE %s RESTART WITH" % (sequence_name,) txn.execute(sql + " %s", (next_id,)) await self.postgres_store.db_pool.runInteraction( "_setup_%s" % (sequence_name,), r ) async def _setup_auth_chain_sequence(self) -> None: curr_chain_id: Optional[ int ] = await self.sqlite_store.db_pool.simple_select_one_onecol( table="event_auth_chains", keyvalues={}, retcol="MAX(chain_id)", allow_none=True, ) def r(txn: LoggingTransaction) -> None: # Presumably there is at least one row in event_auth_chains. assert curr_chain_id is not None txn.execute( "ALTER SEQUENCE event_auth_chain_id RESTART WITH %s", (curr_chain_id + 1,), ) if curr_chain_id is not None: await self.postgres_store.db_pool.runInteraction( "_setup_event_auth_chain_id", r, ) ############################################## # The following is simply UI stuff ############################################## class TableProgress(TypedDict): start: int num_done: int total: int perc: int class Progress: """Used to report progress of the port""" def __init__(self) -> None: self.tables: Dict[str, TableProgress] = {} self.start_time = int(time.time()) def add_table(self, table: str, cur: int, size: int) -> None: self.tables[table] = { "start": cur, "num_done": cur, "total": size, "perc": int(cur * 100 / size), } def update(self, table: str, num_done: int) -> None: data = self.tables[table] data["num_done"] = num_done data["perc"] = int(num_done * 100 / data["total"]) def done(self) -> None: pass def set_state(self, state: str) -> None: pass class CursesProgress(Progress): """Reports progress to a curses window""" def __init__(self, stdscr: "curses.window"): self.stdscr = stdscr curses.use_default_colors() curses.curs_set(0) curses.init_pair(1, curses.COLOR_RED, -1) curses.init_pair(2, curses.COLOR_GREEN, -1) self.last_update = 0.0 self.finished = False self.total_processed = 0 self.total_remaining = 0 super().__init__() def update(self, table: str, num_done: int) -> None: super().update(table, num_done) self.total_processed = 0 self.total_remaining = 0 for data in self.tables.values(): self.total_processed += data["num_done"] - data["start"] self.total_remaining += data["total"] - data["num_done"] self.render() def render(self, force: bool = False) -> None: now = time.time() if not force and now - self.last_update < 0.2: # reactor.callLater(1, self.render) return self.stdscr.clear() rows, cols = self.stdscr.getmaxyx() duration = int(now) - int(self.start_time) minutes, seconds = divmod(duration, 60) duration_str = "%02dm %02ds" % (minutes, seconds) if self.finished: status = "Time spent: %s (Done!)" % (duration_str,) else: if self.total_processed > 0: left = float(self.total_remaining) / self.total_processed est_remaining = (int(now) - self.start_time) * left est_remaining_str = "%02dm %02ds remaining" % divmod(est_remaining, 60) else: est_remaining_str = "Unknown" status = "Time spent: %s (est. remaining: %s)" % ( duration_str, est_remaining_str, ) self.stdscr.addstr(0, 0, status, curses.A_BOLD) max_len = max(len(t) for t in self.tables.keys()) left_margin = 5 middle_space = 1 items = sorted(self.tables.items(), key=lambda i: (i[1]["perc"], i[0])) for i, (table, data) in enumerate(items): if i + 2 >= rows: break perc = data["perc"] color = curses.color_pair(2) if perc == 100 else curses.color_pair(1) self.stdscr.addstr( i + 2, left_margin + max_len - len(table), table, curses.A_BOLD | color ) size = 20 progress = "[%s%s]" % ( "#" * int(perc * size / 100), " " * (size - int(perc * size / 100)), ) self.stdscr.addstr( i + 2, left_margin + max_len + middle_space, "%s %3d%% (%d/%d)" % (progress, perc, data["num_done"], data["total"]), ) if self.finished: self.stdscr.addstr(rows - 1, 0, "Press any key to exit...") self.stdscr.refresh() self.last_update = time.time() def done(self) -> None: self.finished = True self.render(True) self.stdscr.getch() def set_state(self, state: str) -> None: self.stdscr.clear() self.stdscr.addstr(0, 0, state + "...", curses.A_BOLD) self.stdscr.refresh() class TerminalProgress(Progress): """Just prints progress to the terminal""" def update(self, table: str, num_done: int) -> None: super().update(table, num_done) data = self.tables[table] print( "%s: %d%% (%d/%d)" % (table, data["perc"], data["num_done"], data["total"]) ) def set_state(self, state: str) -> None: print(state + "...") ############################################## ############################################## def main() -> None: parser = argparse.ArgumentParser( description="A script to port an existing synapse SQLite database to" " a new PostgreSQL database." ) parser.add_argument("-v", action="store_true") parser.add_argument( "--sqlite-database", required=True, help="The snapshot of the SQLite database file. This must not be" " currently used by a running synapse server", ) parser.add_argument( "--postgres-config", type=argparse.FileType("r"), required=True, help="The database config file for the PostgreSQL database", ) parser.add_argument( "--curses", action="store_true", help="display a curses based progress UI" ) parser.add_argument( "--batch-size", type=int, default=1000, help="The number of rows to select from the SQLite table each" " iteration [default=1000]", ) args = parser.parse_args() logging.basicConfig( level=logging.DEBUG if args.v else logging.INFO, format="%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s", filename="port-synapse.log" if args.curses else None, ) if not os.path.isfile(args.sqlite_database): sys.stderr.write( "The sqlite database you specified does not exist, please check that you have the" "correct path." ) sys.exit(1) sqlite_config = { "name": "sqlite3", "args": { "database": args.sqlite_database, "cp_min": 1, "cp_max": 1, "check_same_thread": False, }, } hs_config = yaml.safe_load(args.postgres_config) if "database" not in hs_config: sys.stderr.write("The configuration file must have a 'database' section.\n") sys.exit(4) postgres_config = hs_config["database"] if "name" not in postgres_config: sys.stderr.write("Malformed database config: no 'name'\n") sys.exit(2) if postgres_config["name"] != "psycopg2": sys.stderr.write("Database must use the 'psycopg2' connector.\n") sys.exit(3) # Don't run the background tasks that get started by the data stores. hs_config["run_background_tasks_on"] = "some_other_process" config = HomeServerConfig() config.parse_config_dict(hs_config, "", "") def start(stdscr: Optional["curses.window"] = None) -> None: progress: Progress if stdscr: progress = CursesProgress(stdscr) else: progress = TerminalProgress() porter = Porter( sqlite_config=sqlite_config, progress=progress, batch_size=args.batch_size, hs_config=config, ) @defer.inlineCallbacks def run() -> Generator["defer.Deferred[Any]", Any, None]: with LoggingContext("synapse_port_db_run"): yield defer.ensureDeferred(porter.run()) reactor.callWhenRunning(run) reactor.run() if args.curses: curses.wrapper(start) else: start() if end_error: if end_error_exec_info: exc_type, exc_value, exc_traceback = end_error_exec_info traceback.print_exception(exc_type, exc_value, exc_traceback) sys.stderr.write(end_error) sys.exit(5) if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/synctl.py000077500000000000000000000272661455622526000205600ustar00rootroot00000000000000#!/usr/bin/env python # # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import collections import errno import glob import os import os.path import signal import subprocess import sys import time from typing import Iterable, NoReturn, Optional, TextIO import yaml from synapse.config import find_config_files MAIN_PROCESS = "synapse.app.homeserver" GREEN = "\x1b[1;32m" YELLOW = "\x1b[1;33m" RED = "\x1b[1;31m" NORMAL = "\x1b[m" SYNCTL_CACHE_FACTOR_WARNING = """\ Setting 'synctl_cache_factor' in the config is deprecated. Instead, please do one of the following: - Either set the environment variable 'SYNAPSE_CACHE_FACTOR' - or set 'caches.global_factor' in the homeserver config. --------------------------------------------------------------------------------""" def pid_running(pid: int) -> bool: try: os.kill(pid, 0) except OSError as err: if err.errno == errno.EPERM: pass # process exists else: return False # When running in a container, orphan processes may not get reaped and their # PIDs may remain valid. Try to work around the issue. try: with open(f"/proc/{pid}/status") as status_file: if "zombie" in status_file.read(): return False except Exception: # This isn't Linux or `/proc/` is unavailable. # Assume that the process is still running. pass return True def write(message: str, colour: str = NORMAL, stream: TextIO = sys.stdout) -> None: # Lets check if we're writing to a TTY before colouring should_colour = False try: should_colour = stream.isatty() except AttributeError: # Just in case `isatty` isn't defined on everything. The python # docs are incredibly vague. pass if not should_colour: stream.write(message + "\n") else: stream.write(colour + message + NORMAL + "\n") def abort(message: str, colour: str = RED, stream: TextIO = sys.stderr) -> NoReturn: write(message, colour, stream) sys.exit(1) def start(pidfile: str, app: str, config_files: Iterable[str], daemonize: bool) -> bool: """Attempts to start a synapse main or worker process. Args: pidfile: the pidfile we expect the process to create app: the python module to run config_files: config files to pass to synapse daemonize: if True, will include a --daemonize argument to synapse Returns: True if the process started successfully or was already running False if there was an error starting the process """ if os.path.exists(pidfile) and pid_running(int(open(pidfile).read())): print(app + " already running") return True args = [sys.executable, "-m", app] for c in config_files: args += ["-c", c] if daemonize: args.append("--daemonize") try: subprocess.check_call(args) write("started %s(%s)" % (app, ",".join(config_files)), colour=GREEN) return True except subprocess.CalledProcessError as e: err = "%s(%s) failed to start (exit code: %d). Check the Synapse logfile" % ( app, ",".join(config_files), e.returncode, ) if daemonize: err += ", or run synctl with --no-daemonize" err += "." write(err, colour=RED, stream=sys.stderr) return False def stop(pidfile: str, app: str) -> Optional[int]: """Attempts to kill a synapse worker from the pidfile. Args: pidfile: path to file containing worker's pid app: name of the worker's appservice Returns: process id, or None if the process was not running """ if os.path.exists(pidfile): pid = int(open(pidfile).read()) try: os.kill(pid, signal.SIGTERM) write("stopped %s" % (app,), colour=GREEN) return pid except OSError as err: if err.errno == errno.ESRCH: write("%s not running" % (app,), colour=YELLOW) elif err.errno == errno.EPERM: abort("Cannot stop %s: Operation not permitted" % (app,)) else: abort("Cannot stop %s: Unknown error" % (app,)) else: write( "No running worker of %s found (from %s)\nThe process might be managed by another controller (e.g. systemd)" % (app, pidfile), colour=YELLOW, ) return None Worker = collections.namedtuple( "Worker", ["app", "configfile", "pidfile", "cache_factor", "cache_factors"] ) def main() -> None: parser = argparse.ArgumentParser() parser.add_argument( "action", choices=["start", "stop", "restart"], help="whether to start, stop or restart the synapse", ) parser.add_argument( "configfile", nargs="?", default="homeserver.yaml", help="the homeserver config file. Defaults to homeserver.yaml. May also be" " a directory with *.yaml files", ) parser.add_argument( "-w", "--worker", metavar="WORKERCONFIG", help="start or stop a single worker" ) parser.add_argument( "-a", "--all-processes", metavar="WORKERCONFIGDIR", help="start or stop all the workers in the given directory" " and the main synapse process", ) parser.add_argument( "--no-daemonize", action="store_false", dest="daemonize", help="Run synapse in the foreground for debugging. " "Will work only if the daemonize option is not set in the config.", ) options = parser.parse_args() if options.worker and options.all_processes: write('Cannot use "--worker" with "--all-processes"', stream=sys.stderr) sys.exit(1) if not options.daemonize and options.all_processes: write('Cannot use "--no-daemonize" with "--all-processes"', stream=sys.stderr) sys.exit(1) configfile = options.configfile if not os.path.exists(configfile): write( f"Config file {configfile} does not exist.\n" f"To generate a config file, run:\n" f" {sys.executable} -m {MAIN_PROCESS}" f" -c {configfile} --generate-config" f" --server-name= --report-stats=\n", stream=sys.stderr, ) sys.exit(1) config_files = find_config_files([configfile]) config = {} for config_file in config_files: with open(config_file) as file_stream: yaml_config = yaml.safe_load(file_stream) if yaml_config is not None: config.update(yaml_config) pidfile = config["pid_file"] cache_factor = config.get("synctl_cache_factor") start_stop_synapse = True if cache_factor: write(SYNCTL_CACHE_FACTOR_WARNING) os.environ["SYNAPSE_CACHE_FACTOR"] = str(cache_factor) cache_factors = config.get("synctl_cache_factors", {}) for cache_name, factor in cache_factors.items(): os.environ["SYNAPSE_CACHE_FACTOR_" + cache_name.upper()] = str(factor) worker_configfiles = [] if options.worker: start_stop_synapse = False worker_configfile = options.worker if not os.path.exists(worker_configfile): write( "No worker config found at %r" % (worker_configfile,), stream=sys.stderr ) sys.exit(1) worker_configfiles.append(worker_configfile) if options.all_processes: # To start the main synapse with -a you need to add a worker file # with worker_app == "synapse.app.homeserver" start_stop_synapse = False worker_configdir = options.all_processes if not os.path.isdir(worker_configdir): write( "No worker config directory found at %r" % (worker_configdir,), stream=sys.stderr, ) sys.exit(1) worker_configfiles.extend( sorted(glob.glob(os.path.join(worker_configdir, "*.yaml"))) ) workers = [] for worker_configfile in worker_configfiles: with open(worker_configfile) as stream: worker_config = yaml.safe_load(stream) worker_app = worker_config["worker_app"] if worker_app == "synapse.app.homeserver": # We need to special case all of this to pick up options that may # be set in the main config file or in this worker config file. worker_pidfile = worker_config.get("pid_file") or pidfile worker_cache_factor = ( worker_config.get("synctl_cache_factor") or cache_factor ) worker_cache_factors = ( worker_config.get("synctl_cache_factors") or cache_factors ) # The master process doesn't support using worker_* config. for key in worker_config: if key == "worker_app": # But we allow worker_app continue assert not key.startswith( "worker_" ), "Main process cannot use worker_* config" else: worker_pidfile = worker_config["worker_pid_file"] worker_cache_factor = worker_config.get("synctl_cache_factor") worker_cache_factors = worker_config.get("synctl_cache_factors", {}) workers.append( Worker( worker_app, worker_configfile, worker_pidfile, worker_cache_factor, worker_cache_factors, ) ) action = options.action if action == "stop" or action == "restart": running_pids = [] for worker in workers: pid = stop(worker.pidfile, worker.app) if pid is not None: running_pids.append(pid) if start_stop_synapse: pid = stop(pidfile, MAIN_PROCESS) if pid is not None: running_pids.append(pid) if len(running_pids) > 0: write("Waiting for processes to exit...") for running_pid in running_pids: while pid_running(running_pid): time.sleep(0.2) write("All processes exited") if action == "start" or action == "restart": error = False if start_stop_synapse: if not start(pidfile, MAIN_PROCESS, (configfile,), options.daemonize): error = True for worker in workers: env = os.environ.copy() if worker.cache_factor: os.environ["SYNAPSE_CACHE_FACTOR"] = str(worker.cache_factor) for cache_name, factor in worker.cache_factors.items(): os.environ["SYNAPSE_CACHE_FACTOR_" + cache_name.upper()] = str(factor) if not start( worker.pidfile, worker.app, (configfile, worker.configfile), options.daemonize, ): error = True # Reset env back to the original os.environ.clear() os.environ.update(env) if error: exit(1) if __name__ == "__main__": main() synapse-1.100.0/synapse/_scripts/update_synapse_database.py000066400000000000000000000073241455622526000241020ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import logging from typing import cast import yaml from twisted.internet import defer, reactor as reactor_ from synapse.config.homeserver import HomeServerConfig from synapse.metrics.background_process_metrics import run_as_background_process from synapse.server import HomeServer from synapse.storage import DataStore from synapse.types import ISynapseReactor from synapse.util import SYNAPSE_VERSION # Cast safety: Twisted does some naughty magic which replaces the # twisted.internet.reactor module with a Reactor instance at runtime. reactor = cast(ISynapseReactor, reactor_) logger = logging.getLogger("update_database") class MockHomeserver(HomeServer): DATASTORE_CLASS = DataStore # type: ignore [assignment] def __init__(self, config: HomeServerConfig): super().__init__( hostname=config.server.server_name, config=config, reactor=reactor, version_string=f"Synapse/{SYNAPSE_VERSION}", ) def run_background_updates(hs: HomeServer) -> None: main = hs.get_datastores().main state = hs.get_datastores().state async def run_background_updates() -> None: await main.db_pool.updates.run_background_updates(sleep=False) if state: await state.db_pool.updates.run_background_updates(sleep=False) # Stop the reactor to exit the script once every background update is run. reactor.stop() def run() -> None: # Apply all background updates on the database. defer.ensureDeferred( run_as_background_process("background_updates", run_background_updates) ) reactor.callWhenRunning(run) reactor.run() def main() -> None: parser = argparse.ArgumentParser( description=( "Updates a synapse database to the latest schema and optionally runs background updates" " on it." ) ) parser.add_argument("-v", action="store_true") parser.add_argument( "--database-config", type=argparse.FileType("r"), required=True, help="Synapse configuration file, giving the details of the database to be updated", ) parser.add_argument( "--run-background-updates", action="store_true", required=False, help="run background updates after upgrading the database schema", ) args = parser.parse_args() logging.basicConfig( level=logging.DEBUG if args.v else logging.INFO, format="%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s", ) # Load, process and sanity-check the config. hs_config = yaml.safe_load(args.database_config) config = HomeServerConfig() config.parse_config_dict(hs_config, "", "") # Instantiate and initialise the homeserver object. hs = MockHomeserver(config) # Setup instantiates the store within the homeserver object and updates the # DB. hs.setup() if args.run_background_updates: run_background_updates(hs) if __name__ == "__main__": main() synapse-1.100.0/synapse/api/000077500000000000000000000000001455622526000155755ustar00rootroot00000000000000synapse-1.100.0/synapse/api/__init__.py000066400000000000000000000013061455622526000177060ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # synapse-1.100.0/synapse/api/auth/000077500000000000000000000000001455622526000165365ustar00rootroot00000000000000synapse-1.100.0/synapse/api/auth/__init__.py000066400000000000000000000140371455622526000206540ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Optional, Tuple from typing_extensions import Protocol from twisted.web.server import Request from synapse.appservice import ApplicationService from synapse.http.site import SynapseRequest from synapse.types import Requester # guests always get this device id. GUEST_DEVICE_ID = "guest_device" class Auth(Protocol): """The interface that an auth provider must implement.""" async def check_user_in_room( self, room_id: str, requester: Requester, allow_departed_users: bool = False, ) -> Tuple[str, Optional[str]]: """Check if the user is in the room, or was at some point. Args: room_id: The room to check. user_id: The user to check. current_state: Optional map of the current state of the room. If provided then that map is used to check whether they are a member of the room. Otherwise the current membership is loaded from the database. allow_departed_users: if True, accept users that were previously members but have now departed. Raises: AuthError if the user is/was not in the room. Returns: The current membership of the user in the room and the membership event ID of the user. """ async def get_user_by_req( self, request: SynapseRequest, allow_guest: bool = False, allow_expired: bool = False, allow_locked: bool = False, ) -> Requester: """Get a registered user's ID. Args: request: An HTTP request with an access_token query parameter. allow_guest: If False, will raise an AuthError if the user making the request is a guest. allow_expired: If True, allow the request through even if the account is expired, or session token lifetime has ended. Note that /login will deliver access tokens regardless of expiration. Returns: Resolves to the requester Raises: InvalidClientCredentialsError if no user by that token exists or the token is invalid. AuthError if access is denied for the user in the access token """ async def validate_appservice_can_control_user_id( self, app_service: ApplicationService, user_id: str ) -> None: """Validates that the app service is allowed to control the given user. Args: app_service: The app service that controls the user user_id: The author MXID that the app service is controlling Raises: AuthError: If the application service is not allowed to control the user (user namespace regex does not match, wrong homeserver, etc) or if the user has not been registered yet. """ async def get_user_by_access_token( self, token: str, allow_expired: bool = False, ) -> Requester: """Validate access token and get user_id from it Args: token: The access token to get the user by allow_expired: If False, raises an InvalidClientTokenError if the token is expired Raises: InvalidClientTokenError if a user by that token exists, but the token is expired InvalidClientCredentialsError if no user by that token exists or the token is invalid """ async def is_server_admin(self, requester: Requester) -> bool: """Check if the given user is a local server admin. Args: requester: user to check Returns: True if the user is an admin """ async def check_can_change_room_list( self, room_id: str, requester: Requester ) -> bool: """Determine whether the user is allowed to edit the room's entry in the published room list. Args: room_id user """ @staticmethod def has_access_token(request: Request) -> bool: """Checks if the request has an access_token. Returns: False if no access_token was given, True otherwise. """ @staticmethod def get_access_token_from_request(request: Request) -> str: """Extracts the access_token from the request. Args: request: The http request. Returns: The access_token Raises: MissingClientTokenError: If there isn't a single access_token in the request """ async def check_user_in_room_or_world_readable( self, room_id: str, requester: Requester, allow_departed_users: bool = False ) -> Tuple[str, Optional[str]]: """Checks that the user is or was in the room or the room is world readable. If it isn't then an exception is raised. Args: room_id: room to check user_id: user to check allow_departed_users: if True, accept users that were previously members but have now departed Returns: Resolves to the current membership of the user in the room and the membership event ID of the user. If the user is not in the room and never has been, then `(Membership.JOIN, None)` is returned. """ synapse-1.100.0/synapse/api/auth/base.py000066400000000000000000000364171455622526000200350ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Optional, Tuple from netaddr import IPAddress from twisted.web.server import Request from synapse import event_auth from synapse.api.constants import EventTypes, HistoryVisibility, Membership from synapse.api.errors import ( AuthError, Codes, MissingClientTokenError, UnstableSpecAuthError, ) from synapse.appservice import ApplicationService from synapse.http import get_request_user_agent from synapse.http.site import SynapseRequest from synapse.logging.opentracing import trace from synapse.types import Requester, create_requester from synapse.util.cancellation import cancellable if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class BaseAuth: """Common base class for all auth implementations.""" def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._track_appservice_user_ips = hs.config.appservice.track_appservice_user_ips self._track_puppeted_user_ips = hs.config.api.track_puppeted_user_ips async def check_user_in_room( self, room_id: str, requester: Requester, allow_departed_users: bool = False, ) -> Tuple[str, Optional[str]]: """Check if the user is in the room, or was at some point. Args: room_id: The room to check. requester: The user making the request, according to the access token. current_state: Optional map of the current state of the room. If provided then that map is used to check whether they are a member of the room. Otherwise the current membership is loaded from the database. allow_departed_users: if True, accept users that were previously members but have now departed. Raises: AuthError if the user is/was not in the room. Returns: The current membership of the user in the room and the membership event ID of the user. """ user_id = requester.user.to_string() ( membership, member_event_id, ) = await self.store.get_local_current_membership_for_user_in_room( user_id=user_id, room_id=room_id, ) if membership: if membership == Membership.JOIN: return membership, member_event_id # XXX this looks totally bogus. Why do we not allow users who have been banned, # or those who were members previously and have been re-invited? if allow_departed_users and membership == Membership.LEAVE: forgot = await self.store.did_forget(user_id, room_id) if not forgot: return membership, member_event_id raise UnstableSpecAuthError( 403, "User %s not in room %s" % (user_id, room_id), errcode=Codes.NOT_JOINED, ) @trace async def check_user_in_room_or_world_readable( self, room_id: str, requester: Requester, allow_departed_users: bool = False ) -> Tuple[str, Optional[str]]: """Checks that the user is or was in the room or the room is world readable. If it isn't then an exception is raised. Args: room_id: room to check user_id: user to check allow_departed_users: if True, accept users that were previously members but have now departed Returns: Resolves to the current membership of the user in the room and the membership event ID of the user. If the user is not in the room and never has been, then `(Membership.JOIN, None)` is returned. """ try: # check_user_in_room will return the most recent membership # event for the user if: # * The user is a non-guest user, and was ever in the room # * The user is a guest user, and has joined the room # else it will throw. return await self.check_user_in_room( room_id, requester, allow_departed_users=allow_departed_users ) except AuthError: visibility = await self._storage_controllers.state.get_current_state_event( room_id, EventTypes.RoomHistoryVisibility, "" ) if ( visibility and visibility.content.get("history_visibility") == HistoryVisibility.WORLD_READABLE ): return Membership.JOIN, None raise AuthError( 403, "User %r not in room %s, and room previews are disabled" % (requester.user, room_id), ) async def validate_appservice_can_control_user_id( self, app_service: ApplicationService, user_id: str ) -> None: """Validates that the app service is allowed to control the given user. Args: app_service: The app service that controls the user user_id: The author MXID that the app service is controlling Raises: AuthError: If the application service is not allowed to control the user (user namespace regex does not match, wrong homeserver, etc) or if the user has not been registered yet. """ # It's ok if the app service is trying to use the sender from their registration if app_service.sender == user_id: pass # Check to make sure the app service is allowed to control the user elif not app_service.is_interested_in_user(user_id): raise AuthError( 403, "Application service cannot masquerade as this user (%s)." % user_id, ) # Check to make sure the user is already registered on the homeserver elif not (await self.store.get_user_by_id(user_id)): raise AuthError( 403, "Application service has not registered this user (%s)" % user_id ) async def is_server_admin(self, requester: Requester) -> bool: """Check if the given user is a local server admin. Args: requester: user to check Returns: True if the user is an admin """ raise NotImplementedError() async def check_can_change_room_list( self, room_id: str, requester: Requester ) -> bool: """Determine whether the user is allowed to edit the room's entry in the published room list. Args: room_id user """ is_admin = await self.is_server_admin(requester) if is_admin: return True await self.check_user_in_room(room_id, requester) # We currently require the user is a "moderator" in the room. We do this # by checking if they would (theoretically) be able to change the # m.room.canonical_alias events power_level_event = ( await self._storage_controllers.state.get_current_state_event( room_id, EventTypes.PowerLevels, "" ) ) auth_events = {} if power_level_event: auth_events[(EventTypes.PowerLevels, "")] = power_level_event send_level = event_auth.get_send_level( EventTypes.CanonicalAlias, "", power_level_event ) user_level = event_auth.get_user_power_level( requester.user.to_string(), auth_events ) return user_level >= send_level @staticmethod def has_access_token(request: Request) -> bool: """Checks if the request has an access_token. Returns: False if no access_token was given, True otherwise. """ # This will always be set by the time Twisted calls us. assert request.args is not None query_params = request.args.get(b"access_token") auth_headers = request.requestHeaders.getRawHeaders(b"Authorization") return bool(query_params) or bool(auth_headers) @staticmethod def get_access_token_from_request(request: Request) -> str: """Extracts the access_token from the request. Args: request: The http request. Returns: The access_token Raises: MissingClientTokenError: If there isn't a single access_token in the request """ # This will always be set by the time Twisted calls us. assert request.args is not None auth_headers = request.requestHeaders.getRawHeaders(b"Authorization") query_params = request.args.get(b"access_token") if auth_headers: # Try the get the access_token from a "Authorization: Bearer" # header if query_params is not None: raise MissingClientTokenError( "Mixing Authorization headers and access_token query parameters." ) if len(auth_headers) > 1: raise MissingClientTokenError("Too many Authorization headers.") parts = auth_headers[0].split(b" ") if parts[0] == b"Bearer" and len(parts) == 2: return parts[1].decode("ascii") else: raise MissingClientTokenError("Invalid Authorization header.") else: # Try to get the access_token from the query params. if not query_params: raise MissingClientTokenError() return query_params[0].decode("ascii") @cancellable async def get_appservice_user( self, request: Request, access_token: str ) -> Optional[Requester]: """ Given a request, reads the request parameters to determine: - whether it's an application service that's making this request - what user the application service should be treated as controlling (the user_id URI parameter allows an application service to masquerade any applicable user in its namespace) - what device the application service should be treated as controlling (the device_id[^1] URI parameter allows an application service to masquerade as any device that exists for the relevant user) [^1] Unstable and provided by MSC3202. Must use `org.matrix.msc3202.device_id` in place of `device_id` for now. Returns: the application service `Requester` of that request Postconditions: - The `app_service` field in the returned `Requester` is set - The `user_id` field in the returned `Requester` is either the application service sender or the controlled user set by the `user_id` URI parameter - The returned application service is permitted to control the returned user ID. - The returned device ID, if present, has been checked to be a valid device ID for the returned user ID. """ DEVICE_ID_ARG_NAME = b"org.matrix.msc3202.device_id" app_service = self.store.get_app_service_by_token(access_token) if app_service is None: return None if app_service.ip_range_whitelist: ip_address = IPAddress(request.getClientAddress().host) if ip_address not in app_service.ip_range_whitelist: return None # This will always be set by the time Twisted calls us. assert request.args is not None if b"user_id" in request.args: effective_user_id = request.args[b"user_id"][0].decode("utf8") await self.validate_appservice_can_control_user_id( app_service, effective_user_id ) else: effective_user_id = app_service.sender effective_device_id: Optional[str] = None if ( self.hs.config.experimental.msc3202_device_masquerading_enabled and DEVICE_ID_ARG_NAME in request.args ): effective_device_id = request.args[DEVICE_ID_ARG_NAME][0].decode("utf8") # We only just set this so it can't be None! assert effective_device_id is not None device_opt = await self.store.get_device( effective_user_id, effective_device_id ) if device_opt is None: # For now, use 400 M_EXCLUSIVE if the device doesn't exist. # This is an open thread of discussion on MSC3202 as of 2021-12-09. raise AuthError( 400, f"Application service trying to use a device that doesn't exist ('{effective_device_id}' for {effective_user_id})", Codes.EXCLUSIVE, ) return create_requester( effective_user_id, app_service=app_service, device_id=effective_device_id ) async def _record_request( self, request: SynapseRequest, requester: Requester ) -> None: """Record that this request was made. This updates the client_ips and monthly_active_user tables. """ ip_addr = request.get_client_ip_if_available() if ip_addr and (not requester.app_service or self._track_appservice_user_ips): user_agent = get_request_user_agent(request) access_token = self.get_access_token_from_request(request) # XXX(quenting): I'm 95% confident that we could skip setting the # device_id to "dummy-device" for appservices, and that the only impact # would be some rows which whould not deduplicate in the 'user_ips' # table during the transition recorded_device_id = ( "dummy-device" if requester.device_id is None and requester.app_service is not None else requester.device_id ) await self.store.insert_client_ip( user_id=requester.authenticated_entity, access_token=access_token, ip=ip_addr, user_agent=user_agent, device_id=recorded_device_id, ) # Track also the puppeted user client IP if enabled and the user is puppeting if ( requester.user.to_string() != requester.authenticated_entity and self._track_puppeted_user_ips ): await self.store.insert_client_ip( user_id=requester.user.to_string(), access_token=access_token, ip=ip_addr, user_agent=user_agent, device_id=requester.device_id, ) synapse-1.100.0/synapse/api/auth/internal.py000066400000000000000000000244611455622526000207330ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING import pymacaroons from synapse.api.errors import ( AuthError, Codes, InvalidClientTokenError, MissingClientTokenError, ) from synapse.http.site import SynapseRequest from synapse.logging.opentracing import active_span, force_tracing, start_active_span from synapse.types import Requester, create_requester from synapse.util.cancellation import cancellable from . import GUEST_DEVICE_ID from .base import BaseAuth if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class InternalAuth(BaseAuth): """ This class contains functions for authenticating users of our client-server API. """ def __init__(self, hs: "HomeServer"): super().__init__(hs) self.clock = hs.get_clock() self._account_validity_handler = hs.get_account_validity_handler() self._macaroon_generator = hs.get_macaroon_generator() self._force_tracing_for_users = hs.config.tracing.force_tracing_for_users @cancellable async def get_user_by_req( self, request: SynapseRequest, allow_guest: bool = False, allow_expired: bool = False, allow_locked: bool = False, ) -> Requester: """Get a registered user's ID. Args: request: An HTTP request with an access_token query parameter. allow_guest: If False, will raise an AuthError if the user making the request is a guest. allow_expired: If True, allow the request through even if the account is expired, or session token lifetime has ended. Note that /login will deliver access tokens regardless of expiration. Returns: Resolves to the requester Raises: InvalidClientCredentialsError if no user by that token exists or the token is invalid. AuthError if access is denied for the user in the access token """ parent_span = active_span() with start_active_span("get_user_by_req"): requester = await self._wrapped_get_user_by_req( request, allow_guest, allow_expired, allow_locked ) if parent_span: if requester.authenticated_entity in self._force_tracing_for_users: # request tracing is enabled for this user, so we need to force it # tracing on for the parent span (which will be the servlet span). # # It's too late for the get_user_by_req span to inherit the setting, # so we also force it on for that. force_tracing() force_tracing(parent_span) parent_span.set_tag( "authenticated_entity", requester.authenticated_entity ) parent_span.set_tag("user_id", requester.user.to_string()) if requester.device_id is not None: parent_span.set_tag("device_id", requester.device_id) if requester.app_service is not None: parent_span.set_tag("appservice_id", requester.app_service.id) return requester @cancellable async def _wrapped_get_user_by_req( self, request: SynapseRequest, allow_guest: bool, allow_expired: bool, allow_locked: bool, ) -> Requester: """Helper for get_user_by_req Once get_user_by_req has set up the opentracing span, this does the actual work. """ try: access_token = self.get_access_token_from_request(request) # First check if it could be a request from an appservice requester = await self.get_appservice_user(request, access_token) if not requester: # If not, it should be from a regular user requester = await self.get_user_by_access_token( access_token, allow_expired=allow_expired ) # Deny the request if the user account is locked. if not allow_locked and await self.store.get_user_locked_status( requester.user.to_string() ): raise AuthError( 401, "User account has been locked", errcode=Codes.USER_LOCKED, additional_fields={"soft_logout": True}, ) # Deny the request if the user account has expired. # This check is only done for regular users, not appservice ones. if not allow_expired: if await self._account_validity_handler.is_user_expired( requester.user.to_string() ): # Raise the error if either an account validity module has determined # the account has expired, or the legacy account validity # implementation is enabled and determined the account has expired raise AuthError( 403, "User account has expired", errcode=Codes.EXPIRED_ACCOUNT, ) await self._record_request(request, requester) if requester.is_guest and not allow_guest: raise AuthError( 403, "Guest access not allowed", errcode=Codes.GUEST_ACCESS_FORBIDDEN, ) request.requester = requester return requester except KeyError: raise MissingClientTokenError() async def get_user_by_access_token( self, token: str, allow_expired: bool = False, ) -> Requester: """Validate access token and get user_id from it Args: token: The access token to get the user by allow_expired: If False, raises an InvalidClientTokenError if the token is expired Raises: InvalidClientTokenError if a user by that token exists, but the token is expired InvalidClientCredentialsError if no user by that token exists or the token is invalid """ # First look in the database to see if the access token is present # as an opaque token. user_info = await self.store.get_user_by_access_token(token) if user_info: valid_until_ms = user_info.valid_until_ms if ( not allow_expired and valid_until_ms is not None and valid_until_ms < self.clock.time_msec() ): # there was a valid access token, but it has expired. # soft-logout the user. raise InvalidClientTokenError( msg="Access token has expired", soft_logout=True ) # Mark the token as used. This is used to invalidate old refresh # tokens after some time. await self.store.mark_access_token_as_used(user_info.token_id) requester = create_requester( user_id=user_info.user_id, access_token_id=user_info.token_id, is_guest=user_info.is_guest, shadow_banned=user_info.shadow_banned, device_id=user_info.device_id, authenticated_entity=user_info.token_owner, ) return requester # If the token isn't found in the database, then it could still be a # macaroon for a guest, so we check that here. try: user_id = self._macaroon_generator.verify_guest_token(token) # Guest access tokens are not stored in the database (there can # only be one access token per guest, anyway). # # In order to prevent guest access tokens being used as regular # user access tokens (and hence getting around the invalidation # process), we look up the user id and check that it is indeed # a guest user. # # It would of course be much easier to store guest access # tokens in the database as well, but that would break existing # guest tokens. stored_user = await self.store.get_user_by_id(user_id) if not stored_user: raise InvalidClientTokenError("Unknown user_id %s" % user_id) if not stored_user.is_guest: raise InvalidClientTokenError( "Guest access token used for regular user" ) return create_requester( user_id=user_id, is_guest=True, # all guests get the same device id device_id=GUEST_DEVICE_ID, authenticated_entity=user_id, ) except ( pymacaroons.exceptions.MacaroonException, TypeError, ValueError, ) as e: logger.warning( "Invalid access token in auth: %s %s.", type(e), e, ) raise InvalidClientTokenError("Invalid access token passed.") async def is_server_admin(self, requester: Requester) -> bool: """Check if the given user is a local server admin. Args: requester: The user making the request, according to the access token. Returns: True if the user is an admin """ return await self.store.is_server_admin(requester.user) synapse-1.100.0/synapse/api/auth/msc3861_delegated.py000066400000000000000000000356641455622526000222300ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional from urllib.parse import urlencode from authlib.oauth2 import ClientAuth from authlib.oauth2.auth import encode_client_secret_basic, encode_client_secret_post from authlib.oauth2.rfc7523 import ClientSecretJWT, PrivateKeyJWT, private_key_jwt_sign from authlib.oauth2.rfc7662 import IntrospectionToken from authlib.oidc.discovery import OpenIDProviderMetadata, get_well_known_url from prometheus_client import Histogram from twisted.web.client import readBody from twisted.web.http_headers import Headers from synapse.api.auth.base import BaseAuth from synapse.api.errors import ( AuthError, HttpResponseException, InvalidClientTokenError, OAuthInsufficientScopeError, StoreError, SynapseError, ) from synapse.http.site import SynapseRequest from synapse.logging.context import make_deferred_yieldable from synapse.types import Requester, UserID, create_requester from synapse.util import json_decoder from synapse.util.caches.cached_call import RetryOnExceptionCachedCall if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) introspection_response_timer = Histogram( "synapse_api_auth_delegated_introspection_response", "Time taken to get a response for an introspection request", ["code"], ) # Scope as defined by MSC2967 # https://github.com/matrix-org/matrix-spec-proposals/pull/2967 SCOPE_MATRIX_API = "urn:matrix:org.matrix.msc2967.client:api:*" SCOPE_MATRIX_GUEST = "urn:matrix:org.matrix.msc2967.client:api:guest" SCOPE_MATRIX_DEVICE_PREFIX = "urn:matrix:org.matrix.msc2967.client:device:" # Scope which allows access to the Synapse admin API SCOPE_SYNAPSE_ADMIN = "urn:synapse:admin:*" def scope_to_list(scope: str) -> List[str]: """Convert a scope string to a list of scope tokens""" return scope.strip().split(" ") class PrivateKeyJWTWithKid(PrivateKeyJWT): # type: ignore[misc] """An implementation of the private_key_jwt client auth method that includes a kid header. This is needed because some providers (Keycloak) require the kid header to figure out which key to use to verify the signature. """ def sign(self, auth: Any, token_endpoint: str) -> bytes: return private_key_jwt_sign( auth.client_secret, client_id=auth.client_id, token_endpoint=token_endpoint, claims=self.claims, header={"kid": auth.client_secret["kid"]}, ) class MSC3861DelegatedAuth(BaseAuth): AUTH_METHODS = { "client_secret_post": encode_client_secret_post, "client_secret_basic": encode_client_secret_basic, "client_secret_jwt": ClientSecretJWT(), "private_key_jwt": PrivateKeyJWTWithKid(), } EXTERNAL_ID_PROVIDER = "oauth-delegated" def __init__(self, hs: "HomeServer"): super().__init__(hs) self._config = hs.config.experimental.msc3861 auth_method = MSC3861DelegatedAuth.AUTH_METHODS.get( self._config.client_auth_method.value, None ) # Those assertions are already checked when parsing the config assert self._config.enabled, "OAuth delegation is not enabled" assert self._config.issuer, "No issuer provided" assert self._config.client_id, "No client_id provided" assert auth_method is not None, "Invalid client_auth_method provided" self._clock = hs.get_clock() self._http_client = hs.get_proxied_http_client() self._hostname = hs.hostname self._admin_token = self._config.admin_token self._issuer_metadata = RetryOnExceptionCachedCall(self._load_metadata) if isinstance(auth_method, PrivateKeyJWTWithKid): # Use the JWK as the client secret when using the private_key_jwt method assert self._config.jwk, "No JWK provided" self._client_auth = ClientAuth( self._config.client_id, self._config.jwk, auth_method ) else: # Else use the client secret assert self._config.client_secret, "No client_secret provided" self._client_auth = ClientAuth( self._config.client_id, self._config.client_secret, auth_method ) async def _load_metadata(self) -> OpenIDProviderMetadata: if self._config.issuer_metadata is not None: return OpenIDProviderMetadata(**self._config.issuer_metadata) url = get_well_known_url(self._config.issuer, external=True) response = await self._http_client.get_json(url) metadata = OpenIDProviderMetadata(**response) # metadata.validate_introspection_endpoint() return metadata async def _introspect_token(self, token: str) -> IntrospectionToken: """ Send a token to the introspection endpoint and returns the introspection response Parameters: token: The token to introspect Raises: HttpResponseException: If the introspection endpoint returns a non-2xx response ValueError: If the introspection endpoint returns an invalid JSON response JSONDecodeError: If the introspection endpoint returns a non-JSON response Exception: If the HTTP request fails Returns: The introspection response """ metadata = await self._issuer_metadata.get() introspection_endpoint = metadata.get("introspection_endpoint") raw_headers: Dict[str, str] = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": str(self._http_client.user_agent, "utf-8"), "Accept": "application/json", } args = {"token": token, "token_type_hint": "access_token"} body = urlencode(args, True) # Fill the body/headers with credentials uri, raw_headers, body = self._client_auth.prepare( method="POST", uri=introspection_endpoint, headers=raw_headers, body=body ) headers = Headers({k: [v] for (k, v) in raw_headers.items()}) # Do the actual request # We're not using the SimpleHttpClient util methods as we don't want to # check the HTTP status code, and we do the body encoding ourselves. start_time = self._clock.time() try: response = await self._http_client.request( method="POST", uri=uri, data=body.encode("utf-8"), headers=headers, ) resp_body = await make_deferred_yieldable(readBody(response)) except Exception: end_time = self._clock.time() introspection_response_timer.labels("ERR").observe(end_time - start_time) raise end_time = self._clock.time() introspection_response_timer.labels(response.code).observe( end_time - start_time ) if response.code < 200 or response.code >= 300: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), resp_body, ) resp = json_decoder.decode(resp_body.decode("utf-8")) if not isinstance(resp, dict): raise ValueError( "The introspection endpoint returned an invalid JSON response." ) return IntrospectionToken(**resp) async def is_server_admin(self, requester: Requester) -> bool: return "urn:synapse:admin:*" in requester.scope async def get_user_by_req( self, request: SynapseRequest, allow_guest: bool = False, allow_expired: bool = False, allow_locked: bool = False, ) -> Requester: access_token = self.get_access_token_from_request(request) requester = await self.get_appservice_user(request, access_token) if not requester: # TODO: we probably want to assert the allow_guest inside this call # so that we don't provision the user if they don't have enough permission: requester = await self.get_user_by_access_token(access_token, allow_expired) # Do not record requests from MAS using the virtual `__oidc_admin` user. if access_token != self._admin_token: await self._record_request(request, requester) if not allow_guest and requester.is_guest: raise OAuthInsufficientScopeError([SCOPE_MATRIX_API]) request.requester = requester return requester async def get_user_by_access_token( self, token: str, allow_expired: bool = False, ) -> Requester: if self._admin_token is not None and token == self._admin_token: # XXX: This is a temporary solution so that the admin API can be called by # the OIDC provider. This will be removed once we have OIDC client # credentials grant support in matrix-authentication-service. logging.info("Admin toked used") # XXX: that user doesn't exist and won't be provisioned. # This is mostly fine for admin calls, but we should also think about doing # requesters without a user_id. admin_user = UserID("__oidc_admin", self._hostname) return create_requester( user_id=admin_user, scope=["urn:synapse:admin:*"], ) try: introspection_result = await self._introspect_token(token) except Exception: logger.exception("Failed to introspect token") raise SynapseError(503, "Unable to introspect the access token") logger.info(f"Introspection result: {introspection_result!r}") # TODO: introspection verification should be more extensive, especially: # - verify the audience if not introspection_result.get("active"): raise InvalidClientTokenError("Token is not active") # Let's look at the scope scope: List[str] = scope_to_list(introspection_result.get("scope", "")) # Determine type of user based on presence of particular scopes has_user_scope = SCOPE_MATRIX_API in scope has_guest_scope = SCOPE_MATRIX_GUEST in scope if not has_user_scope and not has_guest_scope: raise InvalidClientTokenError("No scope in token granting user rights") # Match via the sub claim sub: Optional[str] = introspection_result.get("sub") if sub is None: raise InvalidClientTokenError( "Invalid sub claim in the introspection result" ) user_id_str = await self.store.get_user_by_external_id( MSC3861DelegatedAuth.EXTERNAL_ID_PROVIDER, sub ) if user_id_str is None: # If we could not find a user via the external_id, it either does not exist, # or the external_id was never recorded # TODO: claim mapping should be configurable username: Optional[str] = introspection_result.get("username") if username is None or not isinstance(username, str): raise AuthError( 500, "Invalid username claim in the introspection result", ) user_id = UserID(username, self._hostname) # First try to find a user from the username claim user_info = await self.store.get_user_by_id(user_id=user_id.to_string()) if user_info is None: # If the user does not exist, we should create it on the fly # TODO: we could use SCIM to provision users ahead of time and listen # for SCIM SET events if those ever become standard: # https://datatracker.ietf.org/doc/html/draft-hunt-scim-notify-00 # TODO: claim mapping should be configurable # If present, use the name claim as the displayname name: Optional[str] = introspection_result.get("name") await self.store.register_user( user_id=user_id.to_string(), create_profile_with_displayname=name ) # And record the sub as external_id await self.store.record_user_external_id( MSC3861DelegatedAuth.EXTERNAL_ID_PROVIDER, sub, user_id.to_string() ) else: user_id = UserID.from_string(user_id_str) # Find device_ids in scope # We only allow a single device_id in the scope, so we find them all in the # scope list, and raise if there are more than one. The OIDC server should be # the one enforcing valid scopes, so we raise a 500 if we find an invalid scope. device_ids = [ tok[len(SCOPE_MATRIX_DEVICE_PREFIX) :] for tok in scope if tok.startswith(SCOPE_MATRIX_DEVICE_PREFIX) ] if len(device_ids) > 1: raise AuthError( 500, "Multiple device IDs in scope", ) device_id = device_ids[0] if device_ids else None if device_id is not None: # Sanity check the device_id if len(device_id) > 255 or len(device_id) < 1: raise AuthError( 500, "Invalid device ID in scope", ) # Create the device on the fly if it does not exist try: await self.store.get_device( user_id=user_id.to_string(), device_id=device_id ) except StoreError: await self.store.store_device( user_id=user_id.to_string(), device_id=device_id, initial_device_display_name="OIDC-native client", ) # TODO: there is a few things missing in the requester here, which still need # to be figured out, like: # - impersonation, with the `authenticated_entity`, which is used for # rate-limiting, MAU limits, etc. # - shadow-banning, with the `shadow_banned` flag # - a proper solution for appservices, which still needs to be figured out in # the context of MSC3861 return create_requester( user_id=user_id, device_id=device_id, scope=scope, is_guest=(has_guest_scope and not has_user_scope), ) synapse-1.100.0/synapse/api/auth_blocking.py000066400000000000000000000137031455622526000207640ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Optional from synapse.api.constants import LimitBlockingTypes, UserTypes from synapse.api.errors import Codes, ResourceLimitError from synapse.config.server import is_threepid_reserved from synapse.types import Requester if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AuthBlocking: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self._hs_disabled = hs.config.server.hs_disabled self._hs_disabled_message = hs.config.server.hs_disabled_message self._admin_contact = hs.config.server.admin_contact self._max_mau_value = hs.config.server.max_mau_value self._limit_usage_by_mau = hs.config.server.limit_usage_by_mau self._mau_limits_reserved_threepids = ( hs.config.server.mau_limits_reserved_threepids ) self._is_mine_server_name = hs.is_mine_server_name self._track_appservice_user_ips = hs.config.appservice.track_appservice_user_ips async def check_auth_blocking( self, user_id: Optional[str] = None, threepid: Optional[dict] = None, user_type: Optional[str] = None, requester: Optional[Requester] = None, ) -> None: """Checks if the user should be rejected for some external reason, such as monthly active user limiting or global disable flag Args: user_id: If present, checks for presence against existing MAU cohort threepid: If present, checks for presence against configured reserved threepid. Used in cases where the user is trying register with a MAU blocked server, normally they would be rejected but their threepid is on the reserved list. user_id and threepid should never be set at the same time. user_type: If present, is used to decide whether to check against certain blocking reasons like MAU. requester: If present, and the authenticated entity is a user, checks for presence against existing MAU cohort. Passing in both a `user_id` and `requester` is an error. """ if requester and user_id: raise Exception( "Passed in both 'user_id' and 'requester' to 'check_auth_blocking'" ) if requester: if requester.authenticated_entity.startswith("@"): user_id = requester.authenticated_entity elif self._is_mine_server_name(requester.authenticated_entity): # We never block the server from doing actions on behalf of # users. return if requester.app_service and not self._track_appservice_user_ips: # If we're authenticated as an appservice then we only block # auth if `track_appservice_user_ips` is set, as that option # implicitly means that application services are part of MAU # limits. return # Never fail an auth check for the server notices users or support user # This can be a problem where event creation is prohibited due to blocking if user_id is not None: if user_id == self._server_notices_mxid: return if await self.store.is_support_user(user_id): return if self._hs_disabled: raise ResourceLimitError( 403, self._hs_disabled_message, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, admin_contact=self._admin_contact, limit_type=LimitBlockingTypes.HS_DISABLED, ) if self._limit_usage_by_mau is True: assert not (user_id and threepid) # If the user is already part of the MAU cohort or a trial user if user_id: timestamp = await self.store.user_last_seen_monthly_active(user_id) if timestamp: return is_trial = await self.store.is_trial_user(user_id) if is_trial: return elif threepid: # If the user does not exist yet, but is signing up with a # reserved threepid then pass auth check if is_threepid_reserved(self._mau_limits_reserved_threepids, threepid): return elif user_type == UserTypes.SUPPORT: # If the user does not exist yet and is of type "support", # allow registration. Support users are excluded from MAU checks. return # Else if there is no room in the MAU bucket, bail current_mau = await self.store.get_monthly_active_count() if current_mau >= self._max_mau_value: raise ResourceLimitError( 403, "Monthly Active User Limit Exceeded", admin_contact=self._admin_contact, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, limit_type=LimitBlockingTypes.MONTHLY_ACTIVE_USER, ) synapse-1.100.0/synapse/api/constants.py000066400000000000000000000203151455622526000201640ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2017 Vector Creations Ltd # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """Contains constants from the specification.""" import enum from typing import Final # the max size of a (canonical-json-encoded) event MAX_PDU_SIZE = 65536 # the "depth" field on events is limited to 2**63 - 1 MAX_DEPTH = 2**63 - 1 # the maximum length for a room alias is 255 characters MAX_ALIAS_LENGTH = 255 # the maximum length for a user id is 255 characters MAX_USERID_LENGTH = 255 # Constant value used for the pseudo-thread which is the main timeline. MAIN_TIMELINE: Final = "main" class Membership: """Represents the membership states of a user in a room.""" INVITE: Final = "invite" JOIN: Final = "join" KNOCK: Final = "knock" LEAVE: Final = "leave" BAN: Final = "ban" LIST: Final = (INVITE, JOIN, KNOCK, LEAVE, BAN) class PresenceState: """Represents the presence state of a user.""" OFFLINE: Final = "offline" UNAVAILABLE: Final = "unavailable" ONLINE: Final = "online" BUSY: Final = "org.matrix.msc3026.busy" class JoinRules: PUBLIC: Final = "public" KNOCK: Final = "knock" INVITE: Final = "invite" PRIVATE: Final = "private" # As defined for MSC3083. RESTRICTED: Final = "restricted" # As defined for MSC3787. KNOCK_RESTRICTED: Final = "knock_restricted" class RestrictedJoinRuleTypes: """Understood types for the allow rules in restricted join rules.""" ROOM_MEMBERSHIP: Final = "m.room_membership" class LoginType: PASSWORD: Final = "m.login.password" EMAIL_IDENTITY: Final = "m.login.email.identity" MSISDN: Final = "m.login.msisdn" RECAPTCHA: Final = "m.login.recaptcha" TERMS: Final = "m.login.terms" SSO: Final = "m.login.sso" DUMMY: Final = "m.login.dummy" REGISTRATION_TOKEN: Final = "m.login.registration_token" # This is used in the `type` parameter for /register when called by # an appservice to register a new user. APP_SERVICE_REGISTRATION_TYPE: Final = "m.login.application_service" class EventTypes: Member: Final = "m.room.member" Create: Final = "m.room.create" Tombstone: Final = "m.room.tombstone" JoinRules: Final = "m.room.join_rules" PowerLevels: Final = "m.room.power_levels" Aliases: Final = "m.room.aliases" Redaction: Final = "m.room.redaction" ThirdPartyInvite: Final = "m.room.third_party_invite" RoomHistoryVisibility: Final = "m.room.history_visibility" CanonicalAlias: Final = "m.room.canonical_alias" Encrypted: Final = "m.room.encrypted" RoomAvatar: Final = "m.room.avatar" RoomEncryption: Final = "m.room.encryption" GuestAccess: Final = "m.room.guest_access" # These are used for validation Message: Final = "m.room.message" Topic: Final = "m.room.topic" Name: Final = "m.room.name" ServerACL: Final = "m.room.server_acl" Pinned: Final = "m.room.pinned_events" Retention: Final = "m.room.retention" Dummy: Final = "org.matrix.dummy_event" SpaceChild: Final = "m.space.child" SpaceParent: Final = "m.space.parent" Reaction: Final = "m.reaction" class ToDeviceEventTypes: RoomKeyRequest: Final = "m.room_key_request" class DeviceKeyAlgorithms: """Spec'd algorithms for the generation of per-device keys""" ED25519: Final = "ed25519" CURVE25519: Final = "curve25519" SIGNED_CURVE25519: Final = "signed_curve25519" class EduTypes: PRESENCE: Final = "m.presence" TYPING: Final = "m.typing" RECEIPT: Final = "m.receipt" DEVICE_LIST_UPDATE: Final = "m.device_list_update" SIGNING_KEY_UPDATE: Final = "m.signing_key_update" UNSTABLE_SIGNING_KEY_UPDATE: Final = "org.matrix.signing_key_update" DIRECT_TO_DEVICE: Final = "m.direct_to_device" class RejectedReason: AUTH_ERROR: Final = "auth_error" OVERSIZED_EVENT: Final = "oversized_event" class RoomCreationPreset: PRIVATE_CHAT: Final = "private_chat" PUBLIC_CHAT: Final = "public_chat" TRUSTED_PRIVATE_CHAT: Final = "trusted_private_chat" class ThirdPartyEntityKind: USER: Final = "user" LOCATION: Final = "location" ServerNoticeMsgType: Final = "m.server_notice" ServerNoticeLimitReached: Final = "m.server_notice.usage_limit_reached" class UserTypes: """Allows for user type specific behaviour. With the benefit of hindsight 'admin' and 'guest' users should also be UserTypes. Normal users are type None """ SUPPORT: Final = "support" BOT: Final = "bot" ALL_USER_TYPES: Final = (SUPPORT, BOT) class RelationTypes: """The types of relations known to this server.""" ANNOTATION: Final = "m.annotation" REPLACE: Final = "m.replace" REFERENCE: Final = "m.reference" THREAD: Final = "m.thread" class LimitBlockingTypes: """Reasons that a server may be blocked""" MONTHLY_ACTIVE_USER: Final = "monthly_active_user" HS_DISABLED: Final = "hs_disabled" class EventContentFields: """Fields found in events' content, regardless of type.""" # Labels for the event, cf https://github.com/matrix-org/matrix-doc/pull/2326 LABELS: Final = "org.matrix.labels" # Timestamp to delete the event after # cf https://github.com/matrix-org/matrix-doc/pull/2228 SELF_DESTRUCT_AFTER: Final = "org.matrix.self_destruct_after" # cf https://github.com/matrix-org/matrix-doc/pull/1772 ROOM_TYPE: Final = "type" # Whether a room can federate. FEDERATE: Final = "m.federate" # The creator of the room, as used in `m.room.create` events. # # This is deprecated in MSC2175. ROOM_CREATOR: Final = "creator" # Used in m.room.guest_access events. GUEST_ACCESS: Final = "guest_access" # The authorising user for joining a restricted room. AUTHORISING_USER: Final = "join_authorised_via_users_server" # Use for mentioning users. MENTIONS: Final = "m.mentions" # an unspecced field added to to-device messages to identify them uniquely-ish TO_DEVICE_MSGID: Final = "org.matrix.msgid" class RoomTypes: """Understood values of the room_type field of m.room.create events.""" SPACE: Final = "m.space" class RoomEncryptionAlgorithms: MEGOLM_V1_AES_SHA2: Final = "m.megolm.v1.aes-sha2" DEFAULT: Final = MEGOLM_V1_AES_SHA2 class AccountDataTypes: DIRECT: Final = "m.direct" IGNORED_USER_LIST: Final = "m.ignored_user_list" TAG: Final = "m.tag" PUSH_RULES: Final = "m.push_rules" class HistoryVisibility: INVITED: Final = "invited" JOINED: Final = "joined" SHARED: Final = "shared" WORLD_READABLE: Final = "world_readable" class GuestAccess: CAN_JOIN: Final = "can_join" # anything that is not "can_join" is considered "forbidden", but for completeness: FORBIDDEN: Final = "forbidden" class ReceiptTypes: READ: Final = "m.read" READ_PRIVATE: Final = "m.read.private" FULLY_READ: Final = "m.fully_read" class PublicRoomsFilterFields: """Fields in the search filter for `/publicRooms` that we understand. As defined in https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3publicrooms """ GENERIC_SEARCH_TERM: Final = "generic_search_term" ROOM_TYPES: Final = "room_types" class ApprovalNoticeMedium: """Identifier for the medium this server will use to serve notice of approval for a specific user's registration. As defined in https://github.com/matrix-org/matrix-spec-proposals/blob/babolivier/m_not_approved/proposals/3866-user-not-approved-error.md """ NONE = "org.matrix.msc3866.none" EMAIL = "org.matrix.msc3866.email" class Direction(enum.Enum): BACKWARDS = "b" FORWARDS = "f" synapse-1.100.0/synapse/api/errors.py000066400000000000000000000676461455622526000175060ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """Contains exceptions and error codes.""" import logging import math import typing from enum import Enum from http import HTTPStatus from typing import Any, Dict, List, Optional, Union from twisted.web import http from synapse.util import json_decoder if typing.TYPE_CHECKING: from synapse.config.homeserver import HomeServerConfig from synapse.types import JsonDict, StrCollection logger = logging.getLogger(__name__) class Codes(str, Enum): """ All known error codes, as an enum of strings. """ UNRECOGNIZED = "M_UNRECOGNIZED" UNAUTHORIZED = "M_UNAUTHORIZED" FORBIDDEN = "M_FORBIDDEN" BAD_JSON = "M_BAD_JSON" NOT_JSON = "M_NOT_JSON" USER_IN_USE = "M_USER_IN_USE" ROOM_IN_USE = "M_ROOM_IN_USE" BAD_PAGINATION = "M_BAD_PAGINATION" BAD_STATE = "M_BAD_STATE" UNKNOWN = "M_UNKNOWN" NOT_FOUND = "M_NOT_FOUND" MISSING_TOKEN = "M_MISSING_TOKEN" UNKNOWN_TOKEN = "M_UNKNOWN_TOKEN" GUEST_ACCESS_FORBIDDEN = "M_GUEST_ACCESS_FORBIDDEN" LIMIT_EXCEEDED = "M_LIMIT_EXCEEDED" CAPTCHA_NEEDED = "M_CAPTCHA_NEEDED" CAPTCHA_INVALID = "M_CAPTCHA_INVALID" MISSING_PARAM = "M_MISSING_PARAM" INVALID_PARAM = "M_INVALID_PARAM" TOO_LARGE = "M_TOO_LARGE" EXCLUSIVE = "M_EXCLUSIVE" THREEPID_AUTH_FAILED = "M_THREEPID_AUTH_FAILED" THREEPID_IN_USE = "M_THREEPID_IN_USE" THREEPID_NOT_FOUND = "M_THREEPID_NOT_FOUND" THREEPID_DENIED = "M_THREEPID_DENIED" INVALID_USERNAME = "M_INVALID_USERNAME" SERVER_NOT_TRUSTED = "M_SERVER_NOT_TRUSTED" CONSENT_NOT_GIVEN = "M_CONSENT_NOT_GIVEN" CANNOT_LEAVE_SERVER_NOTICE_ROOM = "M_CANNOT_LEAVE_SERVER_NOTICE_ROOM" RESOURCE_LIMIT_EXCEEDED = "M_RESOURCE_LIMIT_EXCEEDED" UNSUPPORTED_ROOM_VERSION = "M_UNSUPPORTED_ROOM_VERSION" INCOMPATIBLE_ROOM_VERSION = "M_INCOMPATIBLE_ROOM_VERSION" WRONG_ROOM_KEYS_VERSION = "M_WRONG_ROOM_KEYS_VERSION" EXPIRED_ACCOUNT = "ORG_MATRIX_EXPIRED_ACCOUNT" PASSWORD_TOO_SHORT = "M_PASSWORD_TOO_SHORT" PASSWORD_NO_DIGIT = "M_PASSWORD_NO_DIGIT" PASSWORD_NO_UPPERCASE = "M_PASSWORD_NO_UPPERCASE" PASSWORD_NO_LOWERCASE = "M_PASSWORD_NO_LOWERCASE" PASSWORD_NO_SYMBOL = "M_PASSWORD_NO_SYMBOL" PASSWORD_IN_DICTIONARY = "M_PASSWORD_IN_DICTIONARY" WEAK_PASSWORD = "M_WEAK_PASSWORD" INVALID_SIGNATURE = "M_INVALID_SIGNATURE" USER_DEACTIVATED = "M_USER_DEACTIVATED" # USER_LOCKED = "M_USER_LOCKED" USER_LOCKED = "ORG_MATRIX_MSC3939_USER_LOCKED" NOT_YET_UPLOADED = "M_NOT_YET_UPLOADED" CANNOT_OVERWRITE_MEDIA = "M_CANNOT_OVERWRITE_MEDIA" # Part of MSC3848 # https://github.com/matrix-org/matrix-spec-proposals/pull/3848 ALREADY_JOINED = "ORG.MATRIX.MSC3848.ALREADY_JOINED" NOT_JOINED = "ORG.MATRIX.MSC3848.NOT_JOINED" INSUFFICIENT_POWER = "ORG.MATRIX.MSC3848.INSUFFICIENT_POWER" # The account has been suspended on the server. # By opposition to `USER_DEACTIVATED`, this is a reversible measure # that can possibly be appealed and reverted. # Part of MSC3823. USER_ACCOUNT_SUSPENDED = "ORG.MATRIX.MSC3823.USER_ACCOUNT_SUSPENDED" BAD_ALIAS = "M_BAD_ALIAS" # For restricted join rules. UNABLE_AUTHORISE_JOIN = "M_UNABLE_TO_AUTHORISE_JOIN" UNABLE_TO_GRANT_JOIN = "M_UNABLE_TO_GRANT_JOIN" UNREDACTED_CONTENT_DELETED = "FI.MAU.MSC2815_UNREDACTED_CONTENT_DELETED" # Returned for federation requests where we can't process a request as we # can't ensure the sending server is in a room which is partial-stated on # our side. # Part of MSC3895. UNABLE_DUE_TO_PARTIAL_STATE = "ORG.MATRIX.MSC3895_UNABLE_DUE_TO_PARTIAL_STATE" USER_AWAITING_APPROVAL = "ORG.MATRIX.MSC3866_USER_AWAITING_APPROVAL" AS_PING_URL_NOT_SET = "M_URL_NOT_SET" AS_PING_BAD_STATUS = "M_BAD_STATUS" AS_PING_CONNECTION_TIMEOUT = "M_CONNECTION_TIMEOUT" AS_PING_CONNECTION_FAILED = "M_CONNECTION_FAILED" # Attempt to send a second annotation with the same event type & annotation key # MSC2677 DUPLICATE_ANNOTATION = "M_DUPLICATE_ANNOTATION" class CodeMessageException(RuntimeError): """An exception with integer code, a message string attributes and optional headers. Attributes: code: HTTP error code msg: string describing the error headers: optional response headers to send """ def __init__( self, code: Union[int, HTTPStatus], msg: str, headers: Optional[Dict[str, str]] = None, ): super().__init__("%d: %s" % (code, msg)) # Some calls to this method pass instances of http.HTTPStatus for `code`. # While HTTPStatus is a subclass of int, it has magic __str__ methods # which emit `HTTPStatus.FORBIDDEN` when converted to a str, instead of `403`. # This causes inconsistency in our log lines. # # To eliminate this behaviour, we convert them to their integer equivalents here. self.code = int(code) self.msg = msg self.headers = headers class RedirectException(CodeMessageException): """A pseudo-error indicating that we want to redirect the client to a different location Attributes: cookies: a list of set-cookies values to add to the response. For example: b"sessionId=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT" """ def __init__(self, location: bytes, http_code: int = http.FOUND): """ Args: location: the URI to redirect to http_code: the HTTP response code """ msg = "Redirect to %s" % (location.decode("utf-8"),) super().__init__(code=http_code, msg=msg) self.location = location self.cookies: List[bytes] = [] class SynapseError(CodeMessageException): """A base exception type for matrix errors which have an errcode and error message (as well as an HTTP status code). These often bubble all the way up to the client API response so the error code and status often reach the client directly as defined here. If the error doesn't make sense to present to a client, then it probably shouldn't be a `SynapseError`. For example, if we contact another homeserver over federation, we shouldn't automatically ferry response errors back to the client on our end (a 500 from a remote server does not make sense to a client when our server did not experience a 500). Attributes: errcode: Matrix error code e.g 'M_FORBIDDEN' """ def __init__( self, code: int, msg: str, errcode: str = Codes.UNKNOWN, additional_fields: Optional[Dict] = None, headers: Optional[Dict[str, str]] = None, ): """Constructs a synapse error. Args: code: The integer error code (an HTTP response code) msg: The human-readable error message. errcode: The matrix error code e.g 'M_FORBIDDEN' """ super().__init__(code, msg, headers) self.errcode = errcode if additional_fields is None: self._additional_fields: Dict = {} else: self._additional_fields = dict(additional_fields) def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": return cs_error(self.msg, self.errcode, **self._additional_fields) @property def debug_context(self) -> Optional[str]: """Override this to add debugging context that shouldn't be sent to clients.""" return None class InvalidAPICallError(SynapseError): """You called an existing API endpoint, but fed that endpoint invalid or incomplete data.""" def __init__(self, msg: str): super().__init__(HTTPStatus.BAD_REQUEST, msg, Codes.BAD_JSON) class InvalidProxyCredentialsError(SynapseError): """Error raised when the proxy credentials are invalid.""" def __init__(self, msg: str, errcode: str = Codes.UNKNOWN): super().__init__(401, msg, errcode) class ProxiedRequestError(SynapseError): """An error from a general matrix endpoint, eg. from a proxied Matrix API call. Attributes: errcode: Matrix error code e.g 'M_FORBIDDEN' """ def __init__( self, code: int, msg: str, errcode: str = Codes.UNKNOWN, additional_fields: Optional[Dict] = None, ): super().__init__(code, msg, errcode, additional_fields) class ConsentNotGivenError(SynapseError): """The error returned to the client when the user has not consented to the privacy policy. """ def __init__(self, msg: str, consent_uri: str): """Constructs a ConsentNotGivenError Args: msg: The human-readable error message consent_url: The URL where the user can give their consent """ super().__init__( code=HTTPStatus.FORBIDDEN, msg=msg, errcode=Codes.CONSENT_NOT_GIVEN ) self._consent_uri = consent_uri def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": return cs_error(self.msg, self.errcode, consent_uri=self._consent_uri) class UserDeactivatedError(SynapseError): """The error returned to the client when the user attempted to access an authenticated endpoint, but the account has been deactivated. """ def __init__(self, msg: str): """Constructs a UserDeactivatedError Args: msg: The human-readable error message """ super().__init__( code=HTTPStatus.FORBIDDEN, msg=msg, errcode=Codes.USER_DEACTIVATED ) class FederationDeniedError(SynapseError): """An error raised when the server tries to federate with a server which is not on its federation whitelist. Attributes: destination: The destination which has been denied """ def __init__(self, destination: Optional[str]): """Raised by federation client or server to indicate that we are are deliberately not attempting to contact a given server because it is not on our federation whitelist. Args: destination: the domain in question """ self.destination = destination super().__init__( code=403, msg="Federation denied with %s." % (self.destination,), errcode=Codes.FORBIDDEN, ) class InteractiveAuthIncompleteError(Exception): """An error raised when UI auth is not yet complete (This indicates we should return a 401 with 'result' as the body) Attributes: session_id: The ID of the ongoing interactive auth session. result: the server response to the request, which should be passed back to the client """ def __init__(self, session_id: str, result: "JsonDict"): super().__init__("Interactive auth not yet complete") self.session_id = session_id self.result = result class UnrecognizedRequestError(SynapseError): """An error indicating we don't understand the request you're trying to make""" def __init__(self, msg: str = "Unrecognized request", code: int = 400): super().__init__(code, msg, Codes.UNRECOGNIZED) class NotFoundError(SynapseError): """An error indicating we can't find the thing you asked for""" def __init__(self, msg: str = "Not found", errcode: str = Codes.NOT_FOUND): super().__init__(404, msg, errcode=errcode) class AuthError(SynapseError): """An error raised when there was a problem authorising an event, and at various other poorly-defined times. """ def __init__( self, code: int, msg: str, errcode: str = Codes.FORBIDDEN, additional_fields: Optional[dict] = None, ): super().__init__(code, msg, errcode, additional_fields) class OAuthInsufficientScopeError(SynapseError): """An error raised when the caller does not have sufficient scope to perform the requested action""" def __init__( self, required_scopes: List[str], ): headers = { "WWW-Authenticate": 'Bearer error="insufficient_scope", scope="%s"' % (" ".join(required_scopes)) } super().__init__(401, "Insufficient scope", Codes.FORBIDDEN, None, headers) class UnstableSpecAuthError(AuthError): """An error raised when a new error code is being proposed to replace a previous one. This error will return a "org.matrix.unstable.errcode" property with the new error code, with the previous error code still being defined in the "errcode" property. This error will include `org.matrix.msc3848.unstable.errcode` in the C-S error body. """ def __init__( self, code: int, msg: str, errcode: str, previous_errcode: str = Codes.FORBIDDEN, additional_fields: Optional[dict] = None, ): self.previous_errcode = previous_errcode super().__init__(code, msg, errcode, additional_fields) def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": fields = {} if config is not None and config.experimental.msc3848_enabled: fields["org.matrix.msc3848.unstable.errcode"] = self.errcode return cs_error( self.msg, self.previous_errcode, **fields, **self._additional_fields, ) class InvalidClientCredentialsError(SynapseError): """An error raised when there was a problem with the authorisation credentials in a client request. https://matrix.org/docs/spec/client_server/r0.5.0#using-access-tokens: When credentials are required but missing or invalid, the HTTP call will return with a status of 401 and the error code, M_MISSING_TOKEN or M_UNKNOWN_TOKEN respectively. """ def __init__(self, msg: str, errcode: str): super().__init__(code=401, msg=msg, errcode=errcode) class MissingClientTokenError(InvalidClientCredentialsError): """Raised when we couldn't find the access token in a request""" def __init__(self, msg: str = "Missing access token"): super().__init__(msg=msg, errcode="M_MISSING_TOKEN") class InvalidClientTokenError(InvalidClientCredentialsError): """Raised when we didn't understand the access token in a request""" def __init__( self, msg: str = "Unrecognised access token", soft_logout: bool = False ): super().__init__(msg=msg, errcode="M_UNKNOWN_TOKEN") self._soft_logout = soft_logout def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": d = super().error_dict(config) d["soft_logout"] = self._soft_logout return d class ResourceLimitError(SynapseError): """ Any error raised when there is a problem with resource usage. For instance, the monthly active user limit for the server has been exceeded """ def __init__( self, code: int, msg: str, errcode: str = Codes.RESOURCE_LIMIT_EXCEEDED, admin_contact: Optional[str] = None, limit_type: Optional[str] = None, ): self.admin_contact = admin_contact self.limit_type = limit_type super().__init__(code, msg, errcode=errcode) def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": return cs_error( self.msg, self.errcode, admin_contact=self.admin_contact, limit_type=self.limit_type, ) class EventSizeError(SynapseError): """An error raised when an event is too big.""" def __init__(self, msg: str, unpersistable: bool): """ unpersistable: if True, the PDU must not be persisted, not even as a rejected PDU when received over federation. This is notably true when the entire PDU exceeds the size limit for a PDU, (as opposed to an individual key's size limit being exceeded). """ super().__init__(413, msg, Codes.TOO_LARGE) self.unpersistable = unpersistable class LoginError(SynapseError): """An error raised when there was a problem logging in.""" class StoreError(SynapseError): """An error raised when there was a problem storing some data.""" class InvalidCaptchaError(SynapseError): def __init__( self, code: int = 400, msg: str = "Invalid captcha.", error_url: Optional[str] = None, errcode: str = Codes.CAPTCHA_INVALID, ): super().__init__(code, msg, errcode) self.error_url = error_url def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": return cs_error(self.msg, self.errcode, error_url=self.error_url) class LimitExceededError(SynapseError): """A client has sent too many requests and is being throttled.""" include_retry_after_header = False def __init__( self, limiter_name: str, code: int = 429, retry_after_ms: Optional[int] = None, errcode: str = Codes.LIMIT_EXCEEDED, ): headers = ( {"Retry-After": str(math.ceil(retry_after_ms / 1000))} if self.include_retry_after_header and retry_after_ms is not None else None ) super().__init__(code, "Too Many Requests", errcode, headers=headers) self.retry_after_ms = retry_after_ms self.limiter_name = limiter_name def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": return cs_error(self.msg, self.errcode, retry_after_ms=self.retry_after_ms) @property def debug_context(self) -> Optional[str]: return self.limiter_name class RoomKeysVersionError(SynapseError): """A client has tried to upload to a non-current version of the room_keys store""" def __init__(self, current_version: str): """ Args: current_version: the current version of the store they should have used """ super().__init__(403, "Wrong room_keys version", Codes.WRONG_ROOM_KEYS_VERSION) self.current_version = current_version def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": return cs_error(self.msg, self.errcode, current_version=self.current_version) class UnsupportedRoomVersionError(SynapseError): """The client's request to create a room used a room version that the server does not support.""" def __init__(self, msg: str = "Homeserver does not support this room version"): super().__init__( code=400, msg=msg, errcode=Codes.UNSUPPORTED_ROOM_VERSION, ) class ThreepidValidationError(SynapseError): """An error raised when there was a problem authorising an event.""" def __init__(self, msg: str, errcode: str = Codes.FORBIDDEN): super().__init__(400, msg, errcode) class IncompatibleRoomVersionError(SynapseError): """A server is trying to join a room whose version it does not support. Unlike UnsupportedRoomVersionError, it is specific to the case of the make_join failing. """ def __init__(self, room_version: str): super().__init__( code=400, msg="Your homeserver does not support the features required to " "interact with this room", errcode=Codes.INCOMPATIBLE_ROOM_VERSION, ) self._room_version = room_version def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": return cs_error(self.msg, self.errcode, room_version=self._room_version) class PasswordRefusedError(SynapseError): """A password has been refused, either during password reset/change or registration.""" def __init__( self, msg: str = "This password doesn't comply with the server's policy", errcode: str = Codes.WEAK_PASSWORD, ): super().__init__( code=400, msg=msg, errcode=errcode, ) class RequestSendFailed(RuntimeError): """Sending a HTTP request over federation failed due to not being able to talk to the remote server for some reason. This exception is used to differentiate "expected" errors that arise due to networking (e.g. DNS failures, connection timeouts etc), versus unexpected errors (like programming errors). """ def __init__(self, inner_exception: BaseException, can_retry: bool): super().__init__( "Failed to send request: %s: %s" % (type(inner_exception).__name__, inner_exception) ) self.inner_exception = inner_exception self.can_retry = can_retry class UnredactedContentDeletedError(SynapseError): def __init__(self, content_keep_ms: Optional[int] = None): super().__init__( 404, "The content for that event has already been erased from the database", errcode=Codes.UNREDACTED_CONTENT_DELETED, ) self.content_keep_ms = content_keep_ms def error_dict(self, config: Optional["HomeServerConfig"]) -> "JsonDict": extra = {} if self.content_keep_ms is not None: extra = {"fi.mau.msc2815.content_keep_ms": self.content_keep_ms} return cs_error(self.msg, self.errcode, **extra) class NotApprovedError(SynapseError): def __init__( self, msg: str, approval_notice_medium: str, ): super().__init__( code=403, msg=msg, errcode=Codes.USER_AWAITING_APPROVAL, additional_fields={"approval_notice_medium": approval_notice_medium}, ) def cs_error(msg: str, code: str = Codes.UNKNOWN, **kwargs: Any) -> "JsonDict": """Utility method for constructing an error response for client-server interactions. Args: msg: The error message. code: The error code. kwargs: Additional keys to add to the response. Returns: A dict representing the error response JSON. """ err = {"error": msg, "errcode": code} for key, value in kwargs.items(): err[key] = value return err class FederationError(RuntimeError): """ Raised when we process an erroneous PDU. There are two kinds of scenarios where this exception can be raised: 1. We may pull an invalid PDU from a remote homeserver (e.g. during backfill). We raise this exception to signal an error to the rest of the application. 2. We may be pushed an invalid PDU as part of a `/send` transaction from a remote homeserver. We raise so that we can respond to the transaction and include the error string in the "PDU Processing Result". The message which will likely be ignored by the remote homeserver and is not machine parse-able since it's just a string. TODO: In the future, we should split these usage scenarios into their own error types. FATAL: The remote server could not interpret the source event. (e.g., it was missing a required field) ERROR: The remote server interpreted the event, but it failed some other check (e.g. auth) WARN: The remote server accepted the event, but believes some part of it is wrong (e.g., it referred to an invalid event) """ def __init__( self, level: str, code: int, reason: str, affected: str, source: Optional[str] = None, ): if level not in ["FATAL", "ERROR", "WARN"]: raise ValueError("Level is not valid: %s" % (level,)) self.level = level self.code = code self.reason = reason self.affected = affected self.source = source msg = "%s %s: %s" % (level, code, reason) super().__init__(msg) def get_dict(self) -> "JsonDict": return { "level": self.level, "code": self.code, "reason": self.reason, "affected": self.affected, "source": self.source if self.source else self.affected, } class FederationPullAttemptBackoffError(RuntimeError): """ Raised to indicate that we are are deliberately not attempting to pull the given event over federation because we've already done so recently and are backing off. Attributes: event_id: The event_id which we are refusing to pull message: A custom error message that gives more context retry_after_ms: The remaining backoff interval, in milliseconds """ def __init__( self, event_ids: "StrCollection", message: Optional[str], retry_after_ms: int ): event_ids = list(event_ids) if message: error_message = message else: error_message = ( f"Not attempting to pull event_ids={event_ids} because we already " "tried to pull them recently (backing off)." ) super().__init__(error_message) self.event_ids = event_ids self.retry_after_ms = retry_after_ms class HttpResponseException(CodeMessageException): """ Represents an HTTP-level failure of an outbound request Attributes: response: body of response """ def __init__(self, code: int, msg: str, response: bytes): """ Args: code: HTTP status code msg: reason phrase from HTTP response status line response: body of response """ super().__init__(code, msg) self.response = response def to_synapse_error(self) -> SynapseError: """Make a SynapseError based on an HTTPResponseException This is useful when a proxied request has failed, and we need to decide how to map the failure onto a matrix error to send back to the client. An attempt is made to parse the body of the http response as a matrix error. If that succeeds, the errcode and error message from the body are used as the errcode and error message in the new synapse error. Otherwise, the errcode is set to M_UNKNOWN, and the error message is set to the reason code from the HTTP response. Returns: The error converted to a SynapseError. """ # try to parse the body as json, to get better errcode/msg, but # default to M_UNKNOWN with the HTTP status as the error text try: j = json_decoder.decode(self.response.decode("utf-8")) except ValueError: j = {} if not isinstance(j, dict): j = {} errcode = j.pop("errcode", Codes.UNKNOWN) errmsg = j.pop("error", self.msg) return ProxiedRequestError(self.code, errmsg, errcode, j) class ShadowBanError(Exception): """ Raised when a shadow-banned user attempts to perform an action. This should be caught and a proper "fake" success response sent to the user. """ class ModuleFailedException(Exception): """ Raised when a module API callback fails, for example because it raised an exception. """ class PartialStateConflictError(SynapseError): """An internal error raised when attempting to persist an event with partial state after the room containing the event has been un-partial stated. This error should be handled by recomputing the event context and trying again. This error has an HTTP status code so that it can be transported over replication. It should not be exposed to clients. """ @staticmethod def message() -> str: return "Cannot persist partial state event in un-partial stated room" def __init__(self) -> None: super().__init__( HTTPStatus.CONFLICT, msg=PartialStateConflictError.message(), errcode=Codes.UNKNOWN, ) synapse-1.100.0/synapse/api/filtering.py000066400000000000000000000471311455622526000201400ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019-2021 The Matrix.org Foundation C.I.C. # Copyright 2017 Vector Creations Ltd # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import json from typing import ( TYPE_CHECKING, Awaitable, Callable, Collection, Dict, Iterable, List, Mapping, Optional, Set, TypeVar, Union, ) import jsonschema from jsonschema import FormatChecker from synapse.api.constants import EduTypes, EventContentFields from synapse.api.errors import SynapseError from synapse.api.presence import UserPresenceState from synapse.events import EventBase, relation_from_event from synapse.types import JsonDict, JsonMapping, RoomID, UserID if TYPE_CHECKING: from synapse.server import HomeServer FILTER_SCHEMA = { "additionalProperties": True, # Allow new fields for forward compatibility "type": "object", "properties": { "limit": {"type": "number"}, "senders": {"$ref": "#/definitions/user_id_array"}, "not_senders": {"$ref": "#/definitions/user_id_array"}, # TODO: We don't limit event type values but we probably should... # check types are valid event types "types": {"type": "array", "items": {"type": "string"}}, "not_types": {"type": "array", "items": {"type": "string"}}, # MSC3874, filtering /messages. "org.matrix.msc3874.rel_types": {"type": "array", "items": {"type": "string"}}, "org.matrix.msc3874.not_rel_types": { "type": "array", "items": {"type": "string"}, }, }, } ROOM_FILTER_SCHEMA = { "additionalProperties": True, # Allow new fields for forward compatibility "type": "object", "properties": { "not_rooms": {"$ref": "#/definitions/room_id_array"}, "rooms": {"$ref": "#/definitions/room_id_array"}, "ephemeral": {"$ref": "#/definitions/room_event_filter"}, "include_leave": {"type": "boolean"}, "state": {"$ref": "#/definitions/room_event_filter"}, "timeline": {"$ref": "#/definitions/room_event_filter"}, "account_data": {"$ref": "#/definitions/room_event_filter"}, }, } ROOM_EVENT_FILTER_SCHEMA = { "additionalProperties": True, # Allow new fields for forward compatibility "type": "object", "properties": { "limit": {"type": "number"}, "senders": {"$ref": "#/definitions/user_id_array"}, "not_senders": {"$ref": "#/definitions/user_id_array"}, "types": {"type": "array", "items": {"type": "string"}}, "not_types": {"type": "array", "items": {"type": "string"}}, "rooms": {"$ref": "#/definitions/room_id_array"}, "not_rooms": {"$ref": "#/definitions/room_id_array"}, "contains_url": {"type": "boolean"}, "lazy_load_members": {"type": "boolean"}, "include_redundant_members": {"type": "boolean"}, "unread_thread_notifications": {"type": "boolean"}, "org.matrix.msc3773.unread_thread_notifications": {"type": "boolean"}, # Include or exclude events with the provided labels. # cf https://github.com/matrix-org/matrix-doc/pull/2326 "org.matrix.labels": {"type": "array", "items": {"type": "string"}}, "org.matrix.not_labels": {"type": "array", "items": {"type": "string"}}, # MSC3440, filtering by event relations. "related_by_senders": {"type": "array", "items": {"type": "string"}}, "related_by_rel_types": {"type": "array", "items": {"type": "string"}}, }, } USER_ID_ARRAY_SCHEMA = { "type": "array", "items": {"type": "string", "format": "matrix_user_id"}, } ROOM_ID_ARRAY_SCHEMA = { "type": "array", "items": {"type": "string", "format": "matrix_room_id"}, } USER_FILTER_SCHEMA = { "$schema": "http://json-schema.org/draft-04/schema#", "description": "schema for a Sync filter", "type": "object", "definitions": { "room_id_array": ROOM_ID_ARRAY_SCHEMA, "user_id_array": USER_ID_ARRAY_SCHEMA, "filter": FILTER_SCHEMA, "room_filter": ROOM_FILTER_SCHEMA, "room_event_filter": ROOM_EVENT_FILTER_SCHEMA, }, "properties": { "presence": {"$ref": "#/definitions/filter"}, "account_data": {"$ref": "#/definitions/filter"}, "room": {"$ref": "#/definitions/room_filter"}, "event_format": {"type": "string", "enum": ["client", "federation"]}, "event_fields": {"type": "array", "items": {"type": "string"}}, }, "additionalProperties": True, # Allow new fields for forward compatibility } @FormatChecker.cls_checks("matrix_room_id") def matrix_room_id_validator(room_id: object) -> bool: return isinstance(room_id, str) and RoomID.is_valid(room_id) @FormatChecker.cls_checks("matrix_user_id") def matrix_user_id_validator(user_id: object) -> bool: return isinstance(user_id, str) and UserID.is_valid(user_id) class Filtering: def __init__(self, hs: "HomeServer"): self._hs = hs self.store = hs.get_datastores().main self.DEFAULT_FILTER_COLLECTION = FilterCollection(hs, {}) async def get_user_filter( self, user_id: UserID, filter_id: Union[int, str] ) -> "FilterCollection": result = await self.store.get_user_filter(user_id, filter_id) return FilterCollection(self._hs, result) def add_user_filter(self, user_id: UserID, user_filter: JsonDict) -> Awaitable[int]: self.check_valid_filter(user_filter) return self.store.add_user_filter(user_id, user_filter) # TODO(paul): surely we should probably add a delete_user_filter or # replace_user_filter at some point? There's no REST API specified for # them however def check_valid_filter(self, user_filter_json: JsonDict) -> None: """Check if the provided filter is valid. This inspects all definitions contained within the filter. Args: user_filter_json: The filter Raises: SynapseError: If the filter is not valid. """ # NB: Filters are the complete json blobs. "Definitions" are an # individual top-level key e.g. public_user_data. Filters are made of # many definitions. try: jsonschema.validate( user_filter_json, USER_FILTER_SCHEMA, format_checker=FormatChecker() ) except jsonschema.ValidationError as e: raise SynapseError(400, str(e)) # Filters work across events, presence EDUs, and account data. FilterEvent = TypeVar("FilterEvent", EventBase, UserPresenceState, JsonDict) class FilterCollection: def __init__(self, hs: "HomeServer", filter_json: JsonMapping): self._filter_json = filter_json room_filter_json = self._filter_json.get("room", {}) self._room_filter = Filter( hs, {k: v for k, v in room_filter_json.items() if k in ("rooms", "not_rooms")}, ) self._room_timeline_filter = Filter(hs, room_filter_json.get("timeline", {})) self._room_state_filter = Filter(hs, room_filter_json.get("state", {})) self._room_ephemeral_filter = Filter(hs, room_filter_json.get("ephemeral", {})) self._room_account_data_filter = Filter( hs, room_filter_json.get("account_data", {}) ) self._presence_filter = Filter(hs, filter_json.get("presence", {})) self._global_account_data_filter = Filter( hs, filter_json.get("account_data", {}) ) self.include_leave = filter_json.get("room", {}).get("include_leave", False) self.event_fields = filter_json.get("event_fields", []) self.event_format = filter_json.get("event_format", "client") def __repr__(self) -> str: return "" % (json.dumps(self._filter_json),) def get_filter_json(self) -> JsonMapping: return self._filter_json def timeline_limit(self) -> int: return self._room_timeline_filter.limit def presence_limit(self) -> int: return self._presence_filter.limit def ephemeral_limit(self) -> int: return self._room_ephemeral_filter.limit def lazy_load_members(self) -> bool: return self._room_state_filter.lazy_load_members def include_redundant_members(self) -> bool: return self._room_state_filter.include_redundant_members def unread_thread_notifications(self) -> bool: return self._room_timeline_filter.unread_thread_notifications async def filter_presence( self, presence_states: Iterable[UserPresenceState] ) -> List[UserPresenceState]: return await self._presence_filter.filter(presence_states) async def filter_global_account_data( self, events: Iterable[JsonDict] ) -> List[JsonDict]: return await self._global_account_data_filter.filter(events) async def filter_room_state(self, events: Iterable[EventBase]) -> List[EventBase]: return await self._room_state_filter.filter( await self._room_filter.filter(events) ) async def filter_room_timeline( self, events: Iterable[EventBase] ) -> List[EventBase]: return await self._room_timeline_filter.filter( await self._room_filter.filter(events) ) async def filter_room_ephemeral(self, events: Iterable[JsonDict]) -> List[JsonDict]: return await self._room_ephemeral_filter.filter( await self._room_filter.filter(events) ) async def filter_room_account_data( self, events: Iterable[JsonDict] ) -> List[JsonDict]: return await self._room_account_data_filter.filter( await self._room_filter.filter(events) ) def blocks_all_rooms(self) -> bool: return self._room_filter.filters_all_rooms() def blocks_all_presence(self) -> bool: return ( self._presence_filter.filters_all_types() or self._presence_filter.filters_all_senders() ) def blocks_all_global_account_data(self) -> bool: """True if all global acount data will be filtered out.""" return ( self._global_account_data_filter.filters_all_types() or self._global_account_data_filter.filters_all_senders() ) def blocks_all_room_ephemeral(self) -> bool: return ( self._room_ephemeral_filter.filters_all_types() or self._room_ephemeral_filter.filters_all_senders() or self._room_ephemeral_filter.filters_all_rooms() ) def blocks_all_room_account_data(self) -> bool: return ( self._room_account_data_filter.filters_all_types() or self._room_account_data_filter.filters_all_senders() or self._room_account_data_filter.filters_all_rooms() ) def blocks_all_room_timeline(self) -> bool: return ( self._room_timeline_filter.filters_all_types() or self._room_timeline_filter.filters_all_senders() or self._room_timeline_filter.filters_all_rooms() ) class Filter: def __init__(self, hs: "HomeServer", filter_json: JsonMapping): self._hs = hs self._store = hs.get_datastores().main self.filter_json = filter_json self.limit = filter_json.get("limit", 10) self.lazy_load_members = filter_json.get("lazy_load_members", False) self.include_redundant_members = filter_json.get( "include_redundant_members", False ) self.unread_thread_notifications: bool = filter_json.get( "unread_thread_notifications", False ) if ( not self.unread_thread_notifications and hs.config.experimental.msc3773_enabled ): self.unread_thread_notifications = filter_json.get( "org.matrix.msc3773.unread_thread_notifications", False ) self.types = filter_json.get("types", None) self.not_types = filter_json.get("not_types", []) self.rooms = filter_json.get("rooms", None) self.not_rooms = filter_json.get("not_rooms", []) self.senders = filter_json.get("senders", None) self.not_senders = filter_json.get("not_senders", []) self.contains_url = filter_json.get("contains_url", None) self.labels = filter_json.get("org.matrix.labels", None) self.not_labels = filter_json.get("org.matrix.not_labels", []) self.related_by_senders = filter_json.get("related_by_senders", None) self.related_by_rel_types = filter_json.get("related_by_rel_types", None) # For compatibility with _check_fields. self.rel_types = None self.not_rel_types = [] if hs.config.experimental.msc3874_enabled: self.rel_types = filter_json.get("org.matrix.msc3874.rel_types", None) self.not_rel_types = filter_json.get("org.matrix.msc3874.not_rel_types", []) def filters_all_types(self) -> bool: return self.types == [] or "*" in self.not_types def filters_all_senders(self) -> bool: return self.senders == [] or "*" in self.not_senders def filters_all_rooms(self) -> bool: return self.rooms == [] or "*" in self.not_rooms def _check(self, event: FilterEvent) -> bool: """Checks whether the filter matches the given event. Args: event: The event, account data, or presence to check against this filter. Returns: True if the event matches the filter. """ # We usually get the full "events" as dictionaries coming through, # except for presence which actually gets passed around as its own type. if isinstance(event, UserPresenceState): user_id = event.user_id field_matchers = { "senders": lambda v: user_id == v, "types": lambda v: EduTypes.PRESENCE == v, } return self._check_fields(field_matchers) else: content = event.get("content") # Content is assumed to be a mapping below, so ensure it is. This should # always be true for events, but account_data has been allowed to # have non-dict content. if not isinstance(content, Mapping): content = {} sender = event.get("sender", None) if not sender: # Presence events had their 'sender' in content.user_id, but are # now handled above. We don't know if anything else uses this # form. TODO: Check this and probably remove it. sender = content.get("user_id") room_id = event.get("room_id", None) ev_type = event.get("type", None) # check if there is a string url field in the content for filtering purposes labels = content.get(EventContentFields.LABELS, []) # Check if the event has a relation. rel_type = None if isinstance(event, EventBase): relation = relation_from_event(event) if relation: rel_type = relation.rel_type field_matchers = { "rooms": lambda v: room_id == v, "senders": lambda v: sender == v, "types": lambda v: _matches_wildcard(ev_type, v), "labels": lambda v: v in labels, "rel_types": lambda v: rel_type == v, } result = self._check_fields(field_matchers) if not result: return result contains_url_filter = self.contains_url if contains_url_filter is not None: contains_url = isinstance(content.get("url"), str) if contains_url_filter != contains_url: return False return True def _check_fields(self, field_matchers: Dict[str, Callable[[str], bool]]) -> bool: """Checks whether the filter matches the given event fields. Args: field_matchers: A map of attribute name to callable to use for checking particular fields. The attribute name and an inverse (not_) must exist on the Filter. The callable should return true if the event's value matches the filter's value. Returns: True if the event fields match """ for name, match_func in field_matchers.items(): # If the event matches one of the disallowed values, reject it. not_name = "not_%s" % (name,) disallowed_values = getattr(self, not_name) if any(map(match_func, disallowed_values)): return False # Otherwise if the event does not match at least one of the allowed # values, reject it. allowed_values = getattr(self, name) if allowed_values is not None: if not any(map(match_func, allowed_values)): return False # Otherwise, accept it. return True def filter_rooms(self, room_ids: Iterable[str]) -> Set[str]: """Apply the 'rooms' filter to a given list of rooms. Args: room_ids: A list of room_ids. Returns: A list of room_ids that match the filter """ room_ids = set(room_ids) disallowed_rooms = set(self.not_rooms) room_ids -= disallowed_rooms allowed_rooms = self.rooms if allowed_rooms is not None: room_ids &= set(allowed_rooms) return room_ids async def _check_event_relations( self, events: Collection[FilterEvent] ) -> List[FilterEvent]: # The event IDs to check, mypy doesn't understand the isinstance check. event_ids = [event.event_id for event in events if isinstance(event, EventBase)] # type: ignore[attr-defined] event_ids_to_keep = set( await self._store.events_have_relations( event_ids, self.related_by_senders, self.related_by_rel_types ) ) return [ event for event in events if not isinstance(event, EventBase) or event.event_id in event_ids_to_keep ] async def filter(self, events: Iterable[FilterEvent]) -> List[FilterEvent]: result = [event for event in events if self._check(event)] if self.related_by_senders or self.related_by_rel_types: return await self._check_event_relations(result) return result def with_room_ids(self, room_ids: Iterable[str]) -> "Filter": """Returns a new filter with the given room IDs appended. Args: room_ids: The room_ids to add Returns: filter: A new filter including the given rooms and the old filter's rooms. """ newFilter = Filter(self._hs, self.filter_json) newFilter.rooms += room_ids return newFilter def _matches_wildcard(actual_value: Optional[str], filter_value: str) -> bool: if filter_value.endswith("*") and isinstance(actual_value, str): type_prefix = filter_value[:-1] return actual_value.startswith(type_prefix) else: return actual_value == filter_value synapse-1.100.0/synapse/api/presence.py000066400000000000000000000062011455622526000177520ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, Optional import attr from synapse.api.constants import PresenceState from synapse.types import JsonDict @attr.s(slots=True, auto_attribs=True) class UserDevicePresenceState: """ Represents the current presence state of a user's device. user_id: The user ID. device_id: The user's device ID. state: The presence state, see PresenceState. last_active_ts: Time in msec that the device last interacted with server. last_sync_ts: Time in msec that the device last *completed* a sync (or event stream). """ user_id: str device_id: Optional[str] state: str last_active_ts: int last_sync_ts: int @classmethod def default( cls, user_id: str, device_id: Optional[str] ) -> "UserDevicePresenceState": """Returns a default presence state.""" return cls( user_id=user_id, device_id=device_id, state=PresenceState.OFFLINE, last_active_ts=0, last_sync_ts=0, ) @attr.s(slots=True, frozen=True, auto_attribs=True) class UserPresenceState: """Represents the current presence state of the user. user_id: The user ID. state: The presence state, see PresenceState. last_active_ts: Time in msec that the user last interacted with server. last_federation_update_ts: Time in msec since either a) we sent a presence update to other servers or b) we received a presence update, depending on if is a local user or not. last_user_sync_ts: Time in msec that the user last *completed* a sync (or event stream). status_msg: User set status message. currently_active: True if the user is currently syncing. """ user_id: str state: str last_active_ts: int last_federation_update_ts: int last_user_sync_ts: int status_msg: Optional[str] currently_active: bool def as_dict(self) -> JsonDict: return attr.asdict(self) def copy_and_replace(self, **kwargs: Any) -> "UserPresenceState": return attr.evolve(self, **kwargs) @classmethod def default(cls, user_id: str) -> "UserPresenceState": """Returns a default presence state.""" return cls( user_id=user_id, state=PresenceState.OFFLINE, last_active_ts=0, last_federation_update_ts=0, last_user_sync_ts=0, status_msg=None, currently_active=False, ) synapse-1.100.0/synapse/api/ratelimiting.py000066400000000000000000000423271455622526000206470ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from collections import OrderedDict from typing import Hashable, Optional, Tuple from synapse.api.errors import LimitExceededError from synapse.config.ratelimiting import RatelimitSettings from synapse.storage.databases.main import DataStore from synapse.types import Requester from synapse.util import Clock class Ratelimiter: """ Ratelimit actions marked by arbitrary keys. (Note that the source code speaks of "actions" and "burst_count" rather than "tokens" and a "bucket_size".) This is a "leaky bucket as a meter". For each key to be tracked there is a bucket containing some number 0 <= T <= `burst_count` of tokens corresponding to previously permitted requests for that key. Each bucket starts empty, and gradually leaks tokens at a rate of `rate_hz`. Upon an incoming request, we must determine: - the key that this request falls under (which bucket to inspect), and - the cost C of this request in tokens. Then, if there is room in the bucket for C tokens (T + C <= `burst_count`), the request is permitted and `cost` tokens are added to the bucket. Otherwise, the request is denied, and the bucket continues to hold T tokens. This means that the limiter enforces an average request frequency of `rate_hz`, while accumulating a buffer of up to `burst_count` requests which can be consumed instantaneously. The tricky bit is the leaking. We do not want to have a periodic process which leaks every bucket! Instead, we track - the time point when the bucket was last completely empty, and - how many tokens have added to the bucket permitted since then. Then for each incoming request, we can calculate how many tokens have leaked since this time point, and use that to decide if we should accept or reject the request. Args: store: The datastore providing get_ratelimit_for_user. clock: A homeserver clock, for retrieving the current time cfg: The ratelimit configuration for this rate limiter including the allowed rate and burst count. """ def __init__( self, store: DataStore, clock: Clock, cfg: RatelimitSettings, ): self.clock = clock self.rate_hz = cfg.per_second self.burst_count = cfg.burst_count self.store = store self._limiter_name = cfg.key # An ordered dictionary representing the token buckets tracked by this rate # limiter. Each entry maps a key of arbitrary type to a tuple representing: # * The number of tokens currently in the bucket, # * The time point when the bucket was last completely empty, and # * The rate_hz (leak rate) of this particular bucket. self.actions: OrderedDict[Hashable, Tuple[float, float, float]] = OrderedDict() def _get_key( self, requester: Optional[Requester], key: Optional[Hashable] ) -> Hashable: """Use the requester's MXID as a fallback key if no key is provided.""" if key is None: if not requester: raise ValueError("Must supply at least one of `requester` or `key`") key = requester.user.to_string() return key def _get_action_counts( self, key: Hashable, time_now_s: float ) -> Tuple[float, float, float]: """Retrieve the action counts, with a fallback representing an empty bucket.""" return self.actions.get(key, (0.0, time_now_s, 0.0)) async def can_do_action( self, requester: Optional[Requester], key: Optional[Hashable] = None, rate_hz: Optional[float] = None, burst_count: Optional[int] = None, update: bool = True, n_actions: int = 1, _time_now_s: Optional[float] = None, ) -> Tuple[bool, float]: """Can the entity (e.g. user or IP address) perform the action? Checks if the user has ratelimiting disabled in the database by looking for null/zero values in the `ratelimit_override` table. (Non-zero values aren't honoured, as they're specific to the event sending ratelimiter, rather than all ratelimiters) Args: requester: The requester that is doing the action, if any. Used to check if the user has ratelimits disabled in the database. key: An arbitrary key used to classify an action. Defaults to the requester's user ID. rate_hz: The long term number of actions that can be performed in a second. Overrides the value set during instantiation if set. burst_count: How many actions that can be performed before being limited. Overrides the value set during instantiation if set. update: Whether to count this check as performing the action n_actions: The number of times the user wants to do this action. If the user cannot do all of the actions, the user's action count is not incremented at all. _time_now_s: The current time. Optional, defaults to the current time according to self.clock. Only used by tests. Returns: A tuple containing: * A bool indicating if they can perform the action now * The reactor timestamp for when the action can be performed next. -1 if rate_hz is less than or equal to zero """ key = self._get_key(requester, key) if requester: # Disable rate limiting of users belonging to any AS that is configured # not to be rate limited in its registration file (rate_limited: true|false). if requester.app_service and not requester.app_service.is_rate_limited(): return True, -1.0 # Check if ratelimiting has been disabled for the user. # # Note that we don't use the returned rate/burst count, as the table # is specifically for the event sending ratelimiter. Instead, we # only use it to (somewhat cheekily) infer whether the user should # be subject to any rate limiting or not. override = await self.store.get_ratelimit_for_user( requester.authenticated_entity ) if override and not override.messages_per_second: return True, -1.0 # Override default values if set time_now_s = _time_now_s if _time_now_s is not None else self.clock.time() rate_hz = rate_hz if rate_hz is not None else self.rate_hz burst_count = burst_count if burst_count is not None else self.burst_count # Remove any expired entries self._prune_message_counts(time_now_s) # Check if there is an existing count entry for this key action_count, time_start, _ = self._get_action_counts(key, time_now_s) # Check whether performing another action is allowed time_delta = time_now_s - time_start performed_count = action_count - time_delta * rate_hz if performed_count < 0: performed_count = 0 # Reset the start time and forgive all actions action_count = 0 time_start = time_now_s # This check would be easier read as performed_count + n_actions > burst_count, # but performed_count might be a very precise float (with lots of numbers # following the point) in which case Python might round it up when adding it to # n_actions. Writing it this way ensures it doesn't happen. if performed_count > burst_count - n_actions: # Deny, we have exceeded our burst count allowed = False else: # We haven't reached our limit yet allowed = True action_count = action_count + n_actions if update: self.actions[key] = (action_count, time_start, rate_hz) if rate_hz > 0: # Find out when the count of existing actions expires time_allowed = time_start + (action_count - burst_count + 1) / rate_hz # Don't give back a time in the past if time_allowed < time_now_s: time_allowed = time_now_s else: # XXX: Why is this -1? This seems to only be used in # self.ratelimit. I guess so that clients get a time in the past and don't # feel afraid to try again immediately time_allowed = -1 return allowed, time_allowed def record_action( self, requester: Optional[Requester], key: Optional[Hashable] = None, n_actions: int = 1, _time_now_s: Optional[float] = None, ) -> None: """Record that an action(s) took place, even if they violate the rate limit. This is useful for tracking the frequency of events that happen across federation which we still want to impose local rate limits on. For instance, if we are alice.com monitoring a particular room, we cannot prevent bob.com from joining users to that room. However, we can track the number of recent joins in the room and refuse to serve new joins ourselves if there have been too many in the room across both homeservers. Args: requester: The requester that is doing the action, if any. key: An arbitrary key used to classify an action. Defaults to the requester's user ID. n_actions: The number of times the user wants to do this action. If the user cannot do all of the actions, the user's action count is not incremented at all. _time_now_s: The current time. Optional, defaults to the current time according to self.clock. Only used by tests. """ key = self._get_key(requester, key) time_now_s = _time_now_s if _time_now_s is not None else self.clock.time() action_count, time_start, rate_hz = self._get_action_counts(key, time_now_s) self.actions[key] = (action_count + n_actions, time_start, rate_hz) def _prune_message_counts(self, time_now_s: float) -> None: """Remove message count entries that have not exceeded their defined rate_hz limit Args: time_now_s: The current time """ # We create a copy of the key list here as the dictionary is modified during # the loop for key in list(self.actions.keys()): action_count, time_start, rate_hz = self.actions[key] # Rate limit = "seconds since we started limiting this action" * rate_hz # If this limit has not been exceeded, wipe our record of this action time_delta = time_now_s - time_start if action_count - time_delta * rate_hz > 0: continue else: del self.actions[key] async def ratelimit( self, requester: Optional[Requester], key: Optional[Hashable] = None, rate_hz: Optional[float] = None, burst_count: Optional[int] = None, update: bool = True, n_actions: int = 1, _time_now_s: Optional[float] = None, ) -> None: """Checks if an action can be performed. If not, raises a LimitExceededError Checks if the user has ratelimiting disabled in the database by looking for null/zero values in the `ratelimit_override` table. (Non-zero values aren't honoured, as they're specific to the event sending ratelimiter, rather than all ratelimiters) Args: requester: The requester that is doing the action, if any. Used to check for if the user has ratelimits disabled. key: An arbitrary key used to classify an action. Defaults to the requester's user ID. rate_hz: The long term number of actions that can be performed in a second. Overrides the value set during instantiation if set. burst_count: How many actions that can be performed before being limited. Overrides the value set during instantiation if set. update: Whether to count this check as performing the action n_actions: The number of times the user wants to do this action. If the user cannot do all of the actions, the user's action count is not incremented at all. _time_now_s: The current time. Optional, defaults to the current time according to self.clock. Only used by tests. Raises: LimitExceededError: If an action could not be performed, along with the time in milliseconds until the action can be performed again """ time_now_s = _time_now_s if _time_now_s is not None else self.clock.time() allowed, time_allowed = await self.can_do_action( requester, key, rate_hz=rate_hz, burst_count=burst_count, update=update, n_actions=n_actions, _time_now_s=time_now_s, ) if not allowed: raise LimitExceededError( limiter_name=self._limiter_name, retry_after_ms=int(1000 * (time_allowed - time_now_s)), ) class RequestRatelimiter: def __init__( self, store: DataStore, clock: Clock, rc_message: RatelimitSettings, rc_admin_redaction: Optional[RatelimitSettings], ): self.store = store self.clock = clock # The rate_hz and burst_count are overridden on a per-user basis self.request_ratelimiter = Ratelimiter( store=self.store, clock=self.clock, cfg=RatelimitSettings(key=rc_message.key, per_second=0, burst_count=0), ) self._rc_message = rc_message # Check whether ratelimiting room admin message redaction is enabled # by the presence of rate limits in the config if rc_admin_redaction: self.admin_redaction_ratelimiter: Optional[Ratelimiter] = Ratelimiter( store=self.store, clock=self.clock, cfg=rc_admin_redaction, ) else: self.admin_redaction_ratelimiter = None async def ratelimit( self, requester: Requester, update: bool = True, is_admin_redaction: bool = False, n_actions: int = 1, ) -> None: """Ratelimits requests. Args: requester update: Whether to record that a request is being processed. Set to False when doing multiple checks for one request (e.g. to check up front if we would reject the request), and set to True for the last call for a given request. is_admin_redaction: Whether this is a room admin/moderator redacting an event. If so then we may apply different ratelimits depending on config. n_actions: Multiplier for the number of actions to apply to the rate limiter at once. Raises: LimitExceededError if the request should be ratelimited """ user_id = requester.user.to_string() # The AS user itself is never rate limited. app_service = self.store.get_app_service_by_user_id(user_id) if app_service is not None: return # do not ratelimit app service senders messages_per_second = self._rc_message.per_second burst_count = self._rc_message.burst_count # Check if there is a per user override in the DB. override = await self.store.get_ratelimit_for_user(user_id) if override: # If overridden with a null Hz then ratelimiting has been entirely # disabled for the user if not override.messages_per_second: return messages_per_second = override.messages_per_second burst_count = override.burst_count if is_admin_redaction and self.admin_redaction_ratelimiter: # If we have separate config for admin redactions, use a separate # ratelimiter as to not have user_ids clash await self.admin_redaction_ratelimiter.ratelimit( requester, update=update, n_actions=n_actions ) else: # Override rate and burst count per-user await self.request_ratelimiter.ratelimit( requester, rate_hz=messages_per_second, burst_count=burst_count, update=update, n_actions=n_actions, ) synapse-1.100.0/synapse/api/room_versions.py000066400000000000000000000320701455622526000210550ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Callable, Dict, Optional, Tuple import attr class EventFormatVersions: """This is an internal enum for tracking the version of the event format, independently of the room version. To reduce confusion, the event format versions are named after the room versions that they were used or introduced in. The concept of an 'event format version' is specific to Synapse (the specification does not mention this term.) """ ROOM_V1_V2 = 1 # $id:server event id format: used for room v1 and v2 ROOM_V3 = 2 # MSC1659-style $hash event id format: used for room v3 ROOM_V4_PLUS = 3 # MSC1884-style $hash format: introduced for room v4 KNOWN_EVENT_FORMAT_VERSIONS = { EventFormatVersions.ROOM_V1_V2, EventFormatVersions.ROOM_V3, EventFormatVersions.ROOM_V4_PLUS, } class StateResolutionVersions: """Enum to identify the state resolution algorithms""" V1 = 1 # room v1 state res V2 = 2 # MSC1442 state res: room v2 and later class RoomDisposition: STABLE = "stable" UNSTABLE = "unstable" class PushRuleRoomFlag: """Enum for listing possible MSC3931 room version feature flags, for push rules""" # MSC3932: Room version supports MSC1767 Extensible Events. EXTENSIBLE_EVENTS = "org.matrix.msc3932.extensible_events" @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomVersion: """An object which describes the unique attributes of a room version.""" identifier: str # the identifier for this version disposition: str # one of the RoomDispositions event_format: int # one of the EventFormatVersions state_res: int # one of the StateResolutionVersions enforce_key_validity: bool # Before MSC2432, m.room.aliases had special auth rules and redaction rules special_case_aliases_auth: bool # Strictly enforce canonicaljson, do not allow: # * Integers outside the range of [-2 ^ 53 + 1, 2 ^ 53 - 1] # * Floats # * NaN, Infinity, -Infinity strict_canonicaljson: bool # MSC2209: Check 'notifications' key while verifying # m.room.power_levels auth rules. limit_notifications_power_levels: bool # No longer include the creator in m.room.create events. implicit_room_creator: bool # Apply updated redaction rules algorithm from room version 11. updated_redaction_rules: bool # Support the 'restricted' join rule. restricted_join_rule: bool # Support for the proper redaction rules for the restricted join rule. This requires # restricted_join_rule to be enabled. restricted_join_rule_fix: bool # Support the 'knock' join rule. knock_join_rule: bool # MSC3389: Protect relation information from redaction. msc3389_relation_redactions: bool # Support the 'knock_restricted' join rule. knock_restricted_join_rule: bool # Enforce integer power levels enforce_int_power_levels: bool # MSC3931: Adds a push rule condition for "room version feature flags", making # some push rules room version dependent. Note that adding a flag to this list # is not enough to mark it "supported": the push rule evaluator also needs to # support the flag. Unknown flags are ignored by the evaluator, making conditions # fail if used. msc3931_push_features: Tuple[str, ...] # values from PushRuleRoomFlag class RoomVersions: V1 = RoomVersion( "1", RoomDisposition.STABLE, EventFormatVersions.ROOM_V1_V2, StateResolutionVersions.V1, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=False, restricted_join_rule_fix=False, knock_join_rule=False, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V2 = RoomVersion( "2", RoomDisposition.STABLE, EventFormatVersions.ROOM_V1_V2, StateResolutionVersions.V2, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=False, restricted_join_rule_fix=False, knock_join_rule=False, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V3 = RoomVersion( "3", RoomDisposition.STABLE, EventFormatVersions.ROOM_V3, StateResolutionVersions.V2, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=False, restricted_join_rule_fix=False, knock_join_rule=False, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V4 = RoomVersion( "4", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=False, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=False, restricted_join_rule_fix=False, knock_join_rule=False, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V5 = RoomVersion( "5", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=False, restricted_join_rule_fix=False, knock_join_rule=False, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V6 = RoomVersion( "6", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=False, restricted_join_rule_fix=False, knock_join_rule=False, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V7 = RoomVersion( "7", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=False, restricted_join_rule_fix=False, knock_join_rule=True, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V8 = RoomVersion( "8", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=True, restricted_join_rule_fix=False, knock_join_rule=True, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V9 = RoomVersion( "9", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=True, restricted_join_rule_fix=True, knock_join_rule=True, msc3389_relation_redactions=False, knock_restricted_join_rule=False, enforce_int_power_levels=False, msc3931_push_features=(), ) V10 = RoomVersion( "10", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=True, restricted_join_rule_fix=True, knock_join_rule=True, msc3389_relation_redactions=False, knock_restricted_join_rule=True, enforce_int_power_levels=True, msc3931_push_features=(), ) MSC1767v10 = RoomVersion( # MSC1767 (Extensible Events) based on room version "10" "org.matrix.msc1767.10", RoomDisposition.UNSTABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, implicit_room_creator=False, updated_redaction_rules=False, restricted_join_rule=True, restricted_join_rule_fix=True, knock_join_rule=True, msc3389_relation_redactions=False, knock_restricted_join_rule=True, enforce_int_power_levels=True, msc3931_push_features=(PushRuleRoomFlag.EXTENSIBLE_EVENTS,), ) V11 = RoomVersion( "11", RoomDisposition.STABLE, EventFormatVersions.ROOM_V4_PLUS, StateResolutionVersions.V2, enforce_key_validity=True, special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, implicit_room_creator=True, # Used by MSC3820 updated_redaction_rules=True, # Used by MSC3820 restricted_join_rule=True, restricted_join_rule_fix=True, knock_join_rule=True, msc3389_relation_redactions=False, knock_restricted_join_rule=True, enforce_int_power_levels=True, msc3931_push_features=(), ) KNOWN_ROOM_VERSIONS: Dict[str, RoomVersion] = { v.identifier: v for v in ( RoomVersions.V1, RoomVersions.V2, RoomVersions.V3, RoomVersions.V4, RoomVersions.V5, RoomVersions.V6, RoomVersions.V7, RoomVersions.V8, RoomVersions.V9, RoomVersions.V10, RoomVersions.V11, ) } @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomVersionCapability: """An object which describes the unique attributes of a room version.""" identifier: str # the identifier for this capability preferred_version: Optional[RoomVersion] support_check_lambda: Callable[[RoomVersion], bool] MSC3244_CAPABILITIES = { cap.identifier: { "preferred": cap.preferred_version.identifier if cap.preferred_version is not None else None, "support": [ v.identifier for v in KNOWN_ROOM_VERSIONS.values() if cap.support_check_lambda(v) ], } for cap in ( RoomVersionCapability( "knock", RoomVersions.V7, lambda room_version: room_version.knock_join_rule, ), RoomVersionCapability( "restricted", RoomVersions.V9, lambda room_version: room_version.restricted_join_rule, ), ) } synapse-1.100.0/synapse/api/urls.py000066400000000000000000000044501455622526000171370ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """Contains the URL paths to prefix various aspects of the server with. """ import hmac from hashlib import sha256 from urllib.parse import urlencode from synapse.config import ConfigError from synapse.config.homeserver import HomeServerConfig SYNAPSE_CLIENT_API_PREFIX = "/_synapse/client" CLIENT_API_PREFIX = "/_matrix/client" FEDERATION_PREFIX = "/_matrix/federation" FEDERATION_V1_PREFIX = FEDERATION_PREFIX + "/v1" FEDERATION_V2_PREFIX = FEDERATION_PREFIX + "/v2" FEDERATION_UNSTABLE_PREFIX = FEDERATION_PREFIX + "/unstable" STATIC_PREFIX = "/_matrix/static" SERVER_KEY_PREFIX = "/_matrix/key" MEDIA_R0_PREFIX = "/_matrix/media/r0" MEDIA_V3_PREFIX = "/_matrix/media/v3" LEGACY_MEDIA_PREFIX = "/_matrix/media/v1" class ConsentURIBuilder: def __init__(self, hs_config: HomeServerConfig): if hs_config.key.form_secret is None: raise ConfigError("form_secret not set in config") self._hmac_secret = hs_config.key.form_secret.encode("utf-8") self._public_baseurl = hs_config.server.public_baseurl def build_user_consent_uri(self, user_id: str) -> str: """Build a URI which we can give to the user to do their privacy policy consent Args: user_id: mxid or username of user Returns The URI where the user can do consent """ mac = hmac.new( key=self._hmac_secret, msg=user_id.encode("ascii"), digestmod=sha256 ).hexdigest() consent_uri = "%s_matrix/consent?%s" % ( self._public_baseurl, urlencode({"u": user_id, "h": mac}), ) return consent_uri synapse-1.100.0/synapse/app/000077500000000000000000000000001455622526000156045ustar00rootroot00000000000000synapse-1.100.0/synapse/app/__init__.py000066400000000000000000000036211455622526000177170ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import sys from typing import Container from synapse.util import check_dependencies logger = logging.getLogger(__name__) try: check_dependencies.check_requirements() except check_dependencies.DependencyException as e: sys.stderr.writelines( e.message # noqa: B306, DependencyException.message is a property ) sys.exit(1) def check_bind_error( e: Exception, address: str, bind_addresses: Container[str] ) -> None: """ This method checks an exception occurred while binding on 0.0.0.0. If :: is specified in the bind addresses a warning is shown. The exception is still raised otherwise. Binding on both 0.0.0.0 and :: causes an exception on Linux and macOS because :: binds on both IPv4 and IPv6 (as per RFC 3493). When binding on 0.0.0.0 after :: this can safely be ignored. Args: e: Exception that was caught. address: Address on which binding was attempted. bind_addresses: Addresses on which the service listens. """ if address == "0.0.0.0" and "::" in bind_addresses: logger.warning( "Failed to listen on 0.0.0.0, continuing because listening on [::]" ) else: raise e synapse-1.100.0/synapse/app/_base.py000066400000000000000000000641271455622526000172410ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019-2021 The Matrix.org Foundation C.I.C # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import atexit import gc import logging import os import signal import socket import sys import traceback import warnings from textwrap import indent from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, List, NoReturn, Optional, Tuple, cast, ) from cryptography.utils import CryptographyDeprecationWarning from typing_extensions import ParamSpec import twisted from twisted.internet import defer, error, reactor as _reactor from twisted.internet.interfaces import ( IOpenSSLContextFactory, IReactorSSL, IReactorTCP, IReactorUNIX, ) from twisted.internet.protocol import ServerFactory from twisted.internet.tcp import Port from twisted.logger import LoggingFile, LogLevel from twisted.protocols.tls import TLSMemoryBIOFactory from twisted.python.threadpool import ThreadPool from twisted.web.resource import Resource import synapse.util.caches from synapse.api.constants import MAX_PDU_SIZE from synapse.app import check_bind_error from synapse.app.phone_stats_home import start_phone_stats_home from synapse.config import ConfigError from synapse.config._base import format_config_error from synapse.config.homeserver import HomeServerConfig from synapse.config.server import ListenerConfig, ManholeConfig, TCPListenerConfig from synapse.crypto import context_factory from synapse.events.presence_router import load_legacy_presence_router from synapse.handlers.auth import load_legacy_password_auth_providers from synapse.http.site import SynapseSite from synapse.logging.context import PreserveLoggingContext from synapse.logging.opentracing import init_tracer from synapse.metrics import install_gc_manager, register_threadpool from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.metrics.jemalloc import setup_jemalloc_stats from synapse.module_api.callbacks.spamchecker_callbacks import load_legacy_spam_checkers from synapse.module_api.callbacks.third_party_event_rules_callbacks import ( load_legacy_third_party_event_rules, ) from synapse.types import ISynapseReactor, StrCollection from synapse.util import SYNAPSE_VERSION from synapse.util.caches.lrucache import setup_expire_lru_cache_entries from synapse.util.daemonize import daemonize_process from synapse.util.gai_resolver import GAIResolver from synapse.util.rlimit import change_resource_limit if TYPE_CHECKING: from synapse.server import HomeServer # Twisted injects the global reactor to make it easier to import, this confuses # mypy which thinks it is a module. Tell it that it a more proper type. reactor = cast(ISynapseReactor, _reactor) logger = logging.getLogger(__name__) # list of tuples of function, args list, kwargs dict _sighup_callbacks: List[ Tuple[Callable[..., None], Tuple[object, ...], Dict[str, object]] ] = [] P = ParamSpec("P") def register_sighup(func: Callable[P, None], *args: P.args, **kwargs: P.kwargs) -> None: """ Register a function to be called when a SIGHUP occurs. Args: func: Function to be called when sent a SIGHUP signal. *args, **kwargs: args and kwargs to be passed to the target function. """ _sighup_callbacks.append((func, args, kwargs)) def start_worker_reactor( appname: str, config: HomeServerConfig, # Use a lambda to avoid binding to a given reactor at import time. # (needed when synapse.app.complement_fork_starter is being used) run_command: Callable[[], None] = lambda: reactor.run(), ) -> None: """Run the reactor in the main process Daemonizes if necessary, and then configures some resources, before starting the reactor. Pulls configuration from the 'worker' settings in 'config'. Args: appname: application name which will be sent to syslog config: config object run_command: callable that actually runs the reactor """ logger = logging.getLogger(config.worker.worker_app) start_reactor( appname, soft_file_limit=config.server.soft_file_limit, gc_thresholds=config.server.gc_thresholds, pid_file=config.worker.worker_pid_file, daemonize=config.worker.worker_daemonize, print_pidfile=config.server.print_pidfile, logger=logger, run_command=run_command, ) def start_reactor( appname: str, soft_file_limit: int, gc_thresholds: Optional[Tuple[int, int, int]], pid_file: Optional[str], daemonize: bool, print_pidfile: bool, logger: logging.Logger, # Use a lambda to avoid binding to a given reactor at import time. # (needed when synapse.app.complement_fork_starter is being used) run_command: Callable[[], None] = lambda: reactor.run(), ) -> None: """Run the reactor in the main process Daemonizes if necessary, and then configures some resources, before starting the reactor Args: appname: application name which will be sent to syslog soft_file_limit: gc_thresholds: pid_file: name of pid file to write to if daemonize is True daemonize: true to run the reactor in a background process print_pidfile: whether to print the pid file, if daemonize is True logger: logger instance to pass to Daemonize run_command: callable that actually runs the reactor """ def run() -> None: logger.info("Running") setup_jemalloc_stats() change_resource_limit(soft_file_limit) if gc_thresholds: gc.set_threshold(*gc_thresholds) install_gc_manager() run_command() # make sure that we run the reactor with the sentinel log context, # otherwise other PreserveLoggingContext instances will get confused # and complain when they see the logcontext arbitrarily swapping # between the sentinel and `run` logcontexts. # # We also need to drop the logcontext before forking if we're daemonizing, # otherwise the cputime metrics get confused about the per-thread resource usage # appearing to go backwards. with PreserveLoggingContext(): if daemonize: assert pid_file is not None if print_pidfile: print(pid_file) daemonize_process(pid_file, logger) run() def quit_with_error(error_string: str) -> NoReturn: message_lines = error_string.split("\n") line_length = min(max(len(line) for line in message_lines), 80) + 2 sys.stderr.write("*" * line_length + "\n") for line in message_lines: sys.stderr.write(" %s\n" % (line.rstrip(),)) sys.stderr.write("*" * line_length + "\n") sys.exit(1) def handle_startup_exception(e: Exception) -> NoReturn: # Exceptions that occur between setting up the logging and forking or starting # the reactor are written to the logs, followed by a summary to stderr. logger.exception("Exception during startup") error_string = "".join(traceback.format_exception(type(e), e, e.__traceback__)) indented_error_string = indent(error_string, " ") quit_with_error( f"Error during initialisation:\n{indented_error_string}\nThere may be more information in the logs." ) def redirect_stdio_to_logs() -> None: streams = [("stdout", LogLevel.info), ("stderr", LogLevel.error)] for stream, level in streams: oldStream = getattr(sys, stream) loggingFile = LoggingFile( logger=twisted.logger.Logger(namespace=stream), level=level, encoding=getattr(oldStream, "encoding", None), ) setattr(sys, stream, loggingFile) print("Redirected stdout/stderr to logs") def register_start( cb: Callable[P, Awaitable], *args: P.args, **kwargs: P.kwargs ) -> None: """Register a callback with the reactor, to be called once it is running This can be used to initialise parts of the system which require an asynchronous setup. Any exception raised by the callback will be printed and logged, and the process will exit. """ async def wrapper() -> None: try: await cb(*args, **kwargs) except Exception: # previously, we used Failure().printTraceback() here, in the hope that # would give better tracebacks than traceback.print_exc(). However, that # doesn't handle chained exceptions (with a __cause__ or __context__) well, # and I *think* the need for Failure() is reduced now that we mostly use # async/await. # Write the exception to both the logs *and* the unredirected stderr, # because people tend to get confused if it only goes to one or the other. # # One problem with this is that if people are using a logging config that # logs to the console (as is common eg under docker), they will get two # copies of the exception. We could maybe try to detect that, but it's # probably a cost we can bear. logger.fatal("Error during startup", exc_info=True) print("Error during startup:", file=sys.__stderr__) traceback.print_exc(file=sys.__stderr__) # it's no use calling sys.exit here, since that just raises a SystemExit # exception which is then caught by the reactor, and everything carries # on as normal. os._exit(1) reactor.callWhenRunning(lambda: defer.ensureDeferred(wrapper())) def listen_metrics(bind_addresses: StrCollection, port: int) -> None: """ Start Prometheus metrics server. """ from prometheus_client import start_http_server as start_http_server_prometheus from synapse.metrics import RegistryProxy for host in bind_addresses: logger.info("Starting metrics listener on %s:%d", host, port) _set_prometheus_client_use_created_metrics(False) start_http_server_prometheus(port, addr=host, registry=RegistryProxy) def _set_prometheus_client_use_created_metrics(new_value: bool) -> None: """ Sets whether prometheus_client should expose `_created`-suffixed metrics for all gauges, histograms and summaries. There is no programmatic way to disable this without poking at internals; the proper way is to use an environment variable which prometheus_client loads at import time. The motivation for disabling these `_created` metrics is that they're a waste of space as they're not useful but they take up space in Prometheus. """ import prometheus_client.metrics if hasattr(prometheus_client.metrics, "_use_created"): prometheus_client.metrics._use_created = new_value else: logger.error( "Can't disable `_created` metrics in prometheus_client (brittle hack broken?)" ) def listen_manhole( bind_addresses: StrCollection, port: int, manhole_settings: ManholeConfig, manhole_globals: dict, ) -> None: # twisted.conch.manhole 21.1.0 uses "int_from_bytes", which produces a confusing # warning. It's fixed by https://github.com/twisted/twisted/pull/1522), so # suppress the warning for now. warnings.filterwarnings( action="ignore", category=CryptographyDeprecationWarning, message="int_from_bytes is deprecated", ) from synapse.util.manhole import manhole listen_tcp( bind_addresses, port, manhole(settings=manhole_settings, globals=manhole_globals), ) def listen_tcp( bind_addresses: StrCollection, port: int, factory: ServerFactory, reactor: IReactorTCP = reactor, backlog: int = 50, ) -> List[Port]: """ Create a TCP socket for a port and several addresses Returns: list of twisted.internet.tcp.Port listening for TCP connections """ r = [] for address in bind_addresses: try: r.append(reactor.listenTCP(port, factory, backlog, address)) except error.CannotListenError as e: check_bind_error(e, address, bind_addresses) # IReactorTCP returns an object implementing IListeningPort from listenTCP, # but we know it will be a Port instance. return r # type: ignore[return-value] def listen_unix( path: str, mode: int, factory: ServerFactory, reactor: IReactorUNIX = reactor, backlog: int = 50, ) -> List[Port]: """ Create a UNIX socket for a given path and 'mode' permission Returns: list of twisted.internet.tcp.Port listening for TCP connections """ wantPID = True return [ # IReactorUNIX returns an object implementing IListeningPort from listenUNIX, # but we know it will be a Port instance. cast(Port, reactor.listenUNIX(path, factory, backlog, mode, wantPID)) ] def listen_http( hs: "HomeServer", listener_config: ListenerConfig, root_resource: Resource, version_string: str, max_request_body_size: int, context_factory: Optional[IOpenSSLContextFactory], reactor: ISynapseReactor = reactor, ) -> List[Port]: assert listener_config.http_options is not None site_tag = listener_config.get_site_tag() site = SynapseSite( "synapse.access.%s.%s" % ("https" if listener_config.is_tls() else "http", site_tag), site_tag, listener_config, root_resource, version_string, max_request_body_size=max_request_body_size, reactor=reactor, hs=hs, ) if isinstance(listener_config, TCPListenerConfig): if listener_config.is_tls(): # refresh_certificate should have been called before this. assert context_factory is not None ports = listen_ssl( listener_config.bind_addresses, listener_config.port, site, context_factory, reactor=reactor, ) logger.info( "Synapse now listening on TCP port %d (TLS)", listener_config.port ) else: ports = listen_tcp( listener_config.bind_addresses, listener_config.port, site, reactor=reactor, ) logger.info("Synapse now listening on TCP port %d", listener_config.port) else: ports = listen_unix( listener_config.path, listener_config.mode, site, reactor=reactor ) # getHost() returns a UNIXAddress which contains an instance variable of 'name' # encoded as a byte string. Decode as utf-8 so pretty. logger.info( "Synapse now listening on Unix Socket at: " f"{ports[0].getHost().name.decode('utf-8')}" ) return ports def listen_ssl( bind_addresses: StrCollection, port: int, factory: ServerFactory, context_factory: IOpenSSLContextFactory, reactor: IReactorSSL = reactor, backlog: int = 50, ) -> List[Port]: """ Create an TLS-over-TCP socket for a port and several addresses Returns: list of twisted.internet.tcp.Port listening for TLS connections """ r = [] for address in bind_addresses: try: r.append( reactor.listenSSL(port, factory, context_factory, backlog, address) ) except error.CannotListenError as e: check_bind_error(e, address, bind_addresses) # IReactorSSL incorrectly declares that an int is returned from listenSSL, # it actually returns an object implementing IListeningPort, but we know it # will be a Port instance. return r # type: ignore[return-value] def refresh_certificate(hs: "HomeServer") -> None: """ Refresh the TLS certificates that Synapse is using by re-reading them from disk and updating the TLS context factories to use them. """ if not hs.config.server.has_tls_listener(): return hs.config.tls.read_certificate_from_disk() hs.tls_server_context_factory = context_factory.ServerContextFactory(hs.config) if hs._listening_services: logger.info("Updating context factories...") for i in hs._listening_services: # When you listenSSL, it doesn't make an SSL port but a TCP one with # a TLS wrapping factory around the factory you actually want to get # requests. This factory attribute is public but missing from # Twisted's documentation. if isinstance(i.factory, TLSMemoryBIOFactory): addr = i.getHost() logger.info( "Replacing TLS context factory on [%s]:%i", addr.host, addr.port ) # We want to replace TLS factories with a new one, with the new # TLS configuration. We do this by reaching in and pulling out # the wrappedFactory, and then re-wrapping it. i.factory = TLSMemoryBIOFactory( hs.tls_server_context_factory, False, i.factory.wrappedFactory ) logger.info("Context factories updated.") async def start(hs: "HomeServer") -> None: """ Start a Synapse server or worker. Should be called once the reactor is running. Will start the main HTTP listeners and do some other startup tasks, and then notify systemd. Args: hs: homeserver instance """ reactor = hs.get_reactor() # We want to use a separate thread pool for the resolver so that large # numbers of DNS requests don't starve out other users of the threadpool. resolver_threadpool = ThreadPool(name="gai_resolver") resolver_threadpool.start() reactor.addSystemEventTrigger("during", "shutdown", resolver_threadpool.stop) reactor.installNameResolver( GAIResolver(reactor, getThreadPool=lambda: resolver_threadpool) ) # Register the threadpools with our metrics. register_threadpool("default", reactor.getThreadPool()) register_threadpool("gai_resolver", resolver_threadpool) # Set up the SIGHUP machinery. if hasattr(signal, "SIGHUP"): @wrap_as_background_process("sighup") async def handle_sighup(*args: Any, **kwargs: Any) -> None: # Tell systemd our state, if we're using it. This will silently fail if # we're not using systemd. sdnotify(b"RELOADING=1") for i, args, kwargs in _sighup_callbacks: i(*args, **kwargs) sdnotify(b"READY=1") # We defer running the sighup handlers until next reactor tick. This # is so that we're in a sane state, e.g. flushing the logs may fail # if the sighup happens in the middle of writing a log entry. def run_sighup(*args: Any, **kwargs: Any) -> None: # `callFromThread` should be "signal safe" as well as thread # safe. reactor.callFromThread(handle_sighup, *args, **kwargs) signal.signal(signal.SIGHUP, run_sighup) register_sighup(refresh_certificate, hs) register_sighup(reload_cache_config, hs.config) # Apply the cache config. hs.config.caches.resize_all_caches() # Load the certificate from disk. refresh_certificate(hs) # Start the tracer init_tracer(hs) # noqa # Instantiate the modules so they can register their web resources to the module API # before we start the listeners. module_api = hs.get_module_api() for module, config in hs.config.modules.loaded_modules: m = module(config, module_api) logger.info("Loaded module %s", m) load_legacy_spam_checkers(hs) load_legacy_third_party_event_rules(hs) load_legacy_presence_router(hs) load_legacy_password_auth_providers(hs) # If we've configured an expiry time for caches, start the background job now. setup_expire_lru_cache_entries(hs) # It is now safe to start your Synapse. hs.start_listening() hs.get_datastores().main.db_pool.start_profiling() hs.get_pusherpool().start() # Log when we start the shut down process. hs.get_reactor().addSystemEventTrigger( "before", "shutdown", logger.info, "Shutting down..." ) setup_sentry(hs) setup_sdnotify(hs) # If background tasks are running on the main process or this is the worker in # charge of them, start collecting the phone home stats and shared usage metrics. if hs.config.worker.run_background_tasks: await hs.get_common_usage_metrics_manager().setup() start_phone_stats_home(hs) # We now freeze all allocated objects in the hopes that (almost) # everything currently allocated are things that will be used for the # rest of time. Doing so means less work each GC (hopefully). # # PyPy does not (yet?) implement gc.freeze() if hasattr(gc, "freeze"): gc.collect() gc.freeze() # Speed up shutdowns by freezing all allocated objects. This moves everything # into the permanent generation and excludes them from the final GC. atexit.register(gc.freeze) def reload_cache_config(config: HomeServerConfig) -> None: """Reload cache config from disk and immediately apply it.resize caches accordingly. If the config is invalid, a `ConfigError` is logged and no changes are made. Otherwise, this: - replaces the `caches` section on the given `config` object, - resizes all caches according to the new cache factors, and Note that the following cache config keys are read, but not applied: - event_cache_size: used to set a max_size and _original_max_size on EventsWorkerStore._get_event_cache when it is created. We'd have to update the _original_max_size (and maybe - sync_response_cache_duration: would have to update the timeout_sec attribute on HomeServer -> SyncHandler -> ResponseCache. - track_memory_usage. This affects synapse.util.caches.TRACK_MEMORY_USAGE which influences Synapse's self-reported metrics. Also, the HTTPConnectionPool in SimpleHTTPClient sets its maxPersistentPerHost parameter based on the global_factor. This won't be applied on a config reload. """ try: previous_cache_config = config.reload_config_section("caches") except ConfigError as e: logger.warning("Failed to reload cache config") for f in format_config_error(e): logger.warning(f) else: logger.debug( "New cache config. Was:\n %s\nNow:\n %s", previous_cache_config.__dict__, config.caches.__dict__, ) synapse.util.caches.TRACK_MEMORY_USAGE = config.caches.track_memory_usage config.caches.resize_all_caches() def setup_sentry(hs: "HomeServer") -> None: """Enable sentry integration, if enabled in configuration""" if not hs.config.metrics.sentry_enabled: return import sentry_sdk sentry_sdk.init( dsn=hs.config.metrics.sentry_dsn, release=SYNAPSE_VERSION, environment=hs.config.metrics.sentry_environment, ) # We set some default tags that give some context to this instance with sentry_sdk.configure_scope() as scope: scope.set_tag("matrix_server_name", hs.config.server.server_name) app = ( hs.config.worker.worker_app if hs.config.worker.worker_app else "synapse.app.homeserver" ) name = hs.get_instance_name() scope.set_tag("worker_app", app) scope.set_tag("worker_name", name) def setup_sdnotify(hs: "HomeServer") -> None: """Adds process state hooks to tell systemd what we are up to.""" # Tell systemd our state, if we're using it. This will silently fail if # we're not using systemd. sdnotify(b"READY=1\nMAINPID=%i" % (os.getpid(),)) hs.get_reactor().addSystemEventTrigger( "before", "shutdown", sdnotify, b"STOPPING=1" ) sdnotify_sockaddr = os.getenv("NOTIFY_SOCKET") def sdnotify(state: bytes) -> None: """ Send a notification to systemd, if the NOTIFY_SOCKET env var is set. This function is based on the sdnotify python package, but since it's only a few lines of code, it's easier to duplicate it here than to add a dependency on a package which many OSes don't include as a matter of principle. Args: state: notification to send """ if not isinstance(state, bytes): raise TypeError("sdnotify should be called with a bytes") if not sdnotify_sockaddr: return addr = sdnotify_sockaddr if addr[0] == "@": addr = "\0" + addr[1:] try: with socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) as sock: sock.connect(addr) sock.sendall(state) except Exception as e: # this is a bit surprising, since we don't expect to have a NOTIFY_SOCKET # unless systemd is expecting us to notify it. logger.warning("Unable to send notification to systemd: %s", e) def max_request_body_size(config: HomeServerConfig) -> int: """Get a suitable maximum size for incoming HTTP requests""" # Other than media uploads, the biggest request we expect to see is a fully-loaded # /federation/v1/send request. # # The main thing in such a request is up to 50 PDUs, and up to 100 EDUs. PDUs are # limited to 65536 bytes (possibly slightly more if the sender didn't use canonical # json encoding); there is no specced limit to EDUs (see # https://github.com/matrix-org/matrix-doc/issues/3121). # # in short, we somewhat arbitrarily limit requests to 200 * 64K (about 12.5M) # max_request_size = 200 * MAX_PDU_SIZE # if we have a media repo enabled, we may need to allow larger uploads than that if config.media.can_load_media_repo: max_request_size = max(max_request_size, config.media.max_upload_size) return max_request_size synapse-1.100.0/synapse/app/admin_cmd.py000066400000000000000000000304431455622526000200750ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import json import logging import os import sys import tempfile from typing import List, Mapping, Optional, Sequence from twisted.internet import defer, task import synapse from synapse.app import _base from synapse.config._base import ConfigError from synapse.config.homeserver import HomeServerConfig from synapse.config.logger import setup_logging from synapse.events import EventBase from synapse.handlers.admin import ExfiltrationWriter from synapse.server import HomeServer from synapse.storage.database import DatabasePool, LoggingDatabaseConnection from synapse.storage.databases.main.account_data import AccountDataWorkerStore from synapse.storage.databases.main.appservice import ( ApplicationServiceTransactionWorkerStore, ApplicationServiceWorkerStore, ) from synapse.storage.databases.main.client_ips import ClientIpWorkerStore from synapse.storage.databases.main.deviceinbox import DeviceInboxWorkerStore from synapse.storage.databases.main.devices import DeviceWorkerStore from synapse.storage.databases.main.event_federation import EventFederationWorkerStore from synapse.storage.databases.main.event_push_actions import ( EventPushActionsWorkerStore, ) from synapse.storage.databases.main.events_worker import EventsWorkerStore from synapse.storage.databases.main.filtering import FilteringWorkerStore from synapse.storage.databases.main.media_repository import MediaRepositoryStore from synapse.storage.databases.main.profile import ProfileWorkerStore from synapse.storage.databases.main.push_rule import PushRulesWorkerStore from synapse.storage.databases.main.receipts import ReceiptsWorkerStore from synapse.storage.databases.main.registration import RegistrationWorkerStore from synapse.storage.databases.main.relations import RelationsWorkerStore from synapse.storage.databases.main.room import RoomWorkerStore from synapse.storage.databases.main.roommember import RoomMemberWorkerStore from synapse.storage.databases.main.signatures import SignatureWorkerStore from synapse.storage.databases.main.state import StateGroupWorkerStore from synapse.storage.databases.main.stream import StreamWorkerStore from synapse.storage.databases.main.tags import TagsWorkerStore from synapse.storage.databases.main.user_erasure_store import UserErasureWorkerStore from synapse.types import JsonMapping, StateMap from synapse.util import SYNAPSE_VERSION from synapse.util.logcontext import LoggingContext logger = logging.getLogger("synapse.app.admin_cmd") class AdminCmdStore( FilteringWorkerStore, ClientIpWorkerStore, DeviceWorkerStore, TagsWorkerStore, DeviceInboxWorkerStore, AccountDataWorkerStore, PushRulesWorkerStore, ApplicationServiceTransactionWorkerStore, ApplicationServiceWorkerStore, RoomMemberWorkerStore, RelationsWorkerStore, EventFederationWorkerStore, EventPushActionsWorkerStore, StateGroupWorkerStore, SignatureWorkerStore, UserErasureWorkerStore, ReceiptsWorkerStore, StreamWorkerStore, EventsWorkerStore, RegistrationWorkerStore, RoomWorkerStore, ProfileWorkerStore, MediaRepositoryStore, ): def __init__( self, database: DatabasePool, db_conn: LoggingDatabaseConnection, hs: "HomeServer", ): super().__init__(database, db_conn, hs) # Annoyingly `filter_events_for_client` assumes that this exists. We # should refactor it to take a `Clock` directly. self.clock = hs.get_clock() class AdminCmdServer(HomeServer): DATASTORE_CLASS = AdminCmdStore # type: ignore async def export_data_command(hs: HomeServer, args: argparse.Namespace) -> None: """Export data for a user.""" user_id = args.user_id directory = args.output_directory res = await hs.get_admin_handler().export_user_data( user_id, FileExfiltrationWriter(user_id, directory=directory) ) print(res) class FileExfiltrationWriter(ExfiltrationWriter): """An ExfiltrationWriter that writes the users data to a directory. Returns the directory location on completion. Note: This writes to disk on the main reactor thread. Args: user_id: The user whose data is being exfiltrated. directory: The directory to write the data to, if None then will write to a temporary directory. """ def __init__(self, user_id: str, directory: Optional[str] = None): self.user_id = user_id if directory: self.base_directory = directory else: self.base_directory = tempfile.mkdtemp( prefix="synapse-exfiltrate__%s__" % (user_id,) ) os.makedirs(self.base_directory, exist_ok=True) if list(os.listdir(self.base_directory)): raise Exception("Directory must be empty") def write_events(self, room_id: str, events: List[EventBase]) -> None: room_directory = os.path.join(self.base_directory, "rooms", room_id) os.makedirs(room_directory, exist_ok=True) events_file = os.path.join(room_directory, "events") with open(events_file, "a") as f: for event in events: json.dump(event.get_pdu_json(), fp=f) def write_state( self, room_id: str, event_id: str, state: StateMap[EventBase] ) -> None: room_directory = os.path.join(self.base_directory, "rooms", room_id) state_directory = os.path.join(room_directory, "state") os.makedirs(state_directory, exist_ok=True) event_file = os.path.join(state_directory, event_id) with open(event_file, "a") as f: for event in state.values(): json.dump(event.get_pdu_json(), fp=f) def write_invite( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: self.write_events(room_id, [event]) # We write the invite state somewhere else as they aren't full events # and are only a subset of the state at the event. room_directory = os.path.join(self.base_directory, "rooms", room_id) os.makedirs(room_directory, exist_ok=True) invite_state = os.path.join(room_directory, "invite_state") with open(invite_state, "a") as f: for event in state.values(): json.dump(event, fp=f) def write_knock( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: self.write_events(room_id, [event]) # We write the knock state somewhere else as they aren't full events # and are only a subset of the state at the event. room_directory = os.path.join(self.base_directory, "rooms", room_id) os.makedirs(room_directory, exist_ok=True) knock_state = os.path.join(room_directory, "knock_state") with open(knock_state, "a") as f: for event in state.values(): json.dump(event, fp=f) def write_profile(self, profile: JsonMapping) -> None: user_directory = os.path.join(self.base_directory, "user_data") os.makedirs(user_directory, exist_ok=True) profile_file = os.path.join(user_directory, "profile") with open(profile_file, "a") as f: json.dump(profile, fp=f) def write_devices(self, devices: Sequence[JsonMapping]) -> None: user_directory = os.path.join(self.base_directory, "user_data") os.makedirs(user_directory, exist_ok=True) device_file = os.path.join(user_directory, "devices") for device in devices: with open(device_file, "a") as f: json.dump(device, fp=f) def write_connections(self, connections: Sequence[JsonMapping]) -> None: user_directory = os.path.join(self.base_directory, "user_data") os.makedirs(user_directory, exist_ok=True) connection_file = os.path.join(user_directory, "connections") for connection in connections: with open(connection_file, "a") as f: json.dump(connection, fp=f) def write_account_data( self, file_name: str, account_data: Mapping[str, JsonMapping] ) -> None: account_data_directory = os.path.join( self.base_directory, "user_data", "account_data" ) os.makedirs(account_data_directory, exist_ok=True) account_data_file = os.path.join(account_data_directory, file_name) with open(account_data_file, "a") as f: json.dump(account_data, fp=f) def write_media_id(self, media_id: str, media_metadata: JsonMapping) -> None: file_directory = os.path.join(self.base_directory, "media_ids") os.makedirs(file_directory, exist_ok=True) media_id_file = os.path.join(file_directory, media_id) with open(media_id_file, "w") as f: json.dump(media_metadata, fp=f) def finished(self) -> str: return self.base_directory def start(config_options: List[str]) -> None: parser = argparse.ArgumentParser(description="Synapse Admin Command") HomeServerConfig.add_arguments_to_parser(parser) subparser = parser.add_subparsers( title="Admin Commands", required=True, dest="command", metavar="", help="The admin command to perform.", ) export_data_parser = subparser.add_parser( "export-data", help="Export all data for a user" ) export_data_parser.add_argument("user_id", help="User to extra data from") export_data_parser.add_argument( "--output-directory", action="store", metavar="DIRECTORY", required=False, help="The directory to store the exported data in. Must be empty. Defaults" " to creating a temp directory.", ) export_data_parser.set_defaults(func=export_data_command) try: config, args = HomeServerConfig.load_config_with_parser(parser, config_options) except ConfigError as e: sys.stderr.write("\n" + str(e) + "\n") sys.exit(1) if config.worker.worker_app is not None: assert config.worker.worker_app == "synapse.app.admin_cmd" # Update the config with some basic overrides so that don't have to specify # a full worker config. config.worker.worker_app = "synapse.app.admin_cmd" if not config.worker.worker_daemonize and not config.worker.worker_log_config: # Since we're meant to be run as a "command" let's not redirect stdio # unless we've actually set log config. config.logging.no_redirect_stdio = True # Explicitly disable background processes config.worker.should_update_user_directory = False config.worker.run_background_tasks = False config.worker.start_pushers = False config.worker.pusher_shard_config.instances = [] config.worker.send_federation = False config.worker.federation_shard_config.instances = [] synapse.events.USE_FROZEN_DICTS = config.server.use_frozen_dicts ss = AdminCmdServer( config.server.server_name, config=config, version_string=f"Synapse/{SYNAPSE_VERSION}", ) setup_logging(ss, config, use_worker_options=True) ss.setup() # We use task.react as the basic run command as it correctly handles tearing # down the reactor when the deferreds resolve and setting the return value. # We also make sure that `_base.start` gets run before we actually run the # command. async def run() -> None: with LoggingContext("command"): await _base.start(ss) await args.func(ss, args) _base.start_worker_reactor( "synapse-admin-cmd", config, run_command=lambda: task.react(lambda _reactor: defer.ensureDeferred(run())), ) if __name__ == "__main__": with LoggingContext("main"): start(sys.argv[1:]) synapse-1.100.0/synapse/app/appservice.py000066400000000000000000000016511455622526000203220ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/client_reader.py000066400000000000000000000016511455622526000207610ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/complement_fork_starter.py000066400000000000000000000161701455622526000231130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import importlib import itertools import multiprocessing import os import signal import sys from types import FrameType from typing import Any, Callable, Dict, List, Optional from twisted.internet.main import installReactor # a list of the original signal handlers, before we installed our custom ones. # We restore these in our child processes. _original_signal_handlers: Dict[int, Any] = {} class ProxiedReactor: """ Twisted tracks the 'installed' reactor as a global variable. (Actually, it does some module trickery, but the effect is similar.) The default EpollReactor is buggy if it's created before a process is forked, then used in the child. See https://twistedmatrix.com/trac/ticket/4759#comment:17. However, importing certain Twisted modules will automatically create and install a reactor if one hasn't already been installed. It's not normally possible to re-install a reactor. Given the goal of launching workers with fork() to only import the code once, this presents a conflict. Our work around is to 'install' this ProxiedReactor which prevents Twisted from creating and installing one, but which lets us replace the actual reactor in use later on. """ def __init__(self) -> None: self.___reactor_target: Any = None def _install_real_reactor(self, new_reactor: Any) -> None: """ Install a real reactor for this ProxiedReactor to forward lookups onto. This method is specific to our ProxiedReactor and should not clash with any names used on an actual Twisted reactor. """ self.___reactor_target = new_reactor def __getattr__(self, attr_name: str) -> Any: return getattr(self.___reactor_target, attr_name) def _worker_entrypoint( func: Callable[[], None], proxy_reactor: ProxiedReactor, args: List[str] ) -> None: """ Entrypoint for a forked worker process. We just need to set up the command-line arguments, create our real reactor and then kick off the worker's main() function. """ from synapse.util.stringutils import strtobool sys.argv = args # reset the custom signal handlers that we installed, so that the children start # from a clean slate. for sig, handler in _original_signal_handlers.items(): signal.signal(sig, handler) # Install the asyncio reactor if the # SYNAPSE_COMPLEMENT_FORKING_LAUNCHER_ASYNC_IO_REACTOR is set to 1. The # SYNAPSE_ASYNC_IO_REACTOR variable would be used, but then causes # synapse/__init__.py to also try to install an asyncio reactor. if strtobool( os.environ.get("SYNAPSE_COMPLEMENT_FORKING_LAUNCHER_ASYNC_IO_REACTOR", "0") ): import asyncio from twisted.internet.asyncioreactor import AsyncioSelectorReactor reactor = AsyncioSelectorReactor(asyncio.get_event_loop()) proxy_reactor._install_real_reactor(reactor) else: from twisted.internet.epollreactor import EPollReactor proxy_reactor._install_real_reactor(EPollReactor()) func() def main() -> None: """ Entrypoint for the forking launcher. """ parser = argparse.ArgumentParser() parser.add_argument("db_config", help="Path to database config file") parser.add_argument( "args", nargs="...", help="Argument groups separated by `--`. " "The first argument of each group is a Synapse app name. " "Subsequent arguments are passed through.", ) ns = parser.parse_args() # Split up the subsequent arguments into each workers' arguments; # `--` is our delimiter of choice. args_by_worker: List[List[str]] = [ list(args) for cond, args in itertools.groupby(ns.args, lambda ele: ele != "--") if cond and args ] # Prevent Twisted from installing a shared reactor that all the workers will # inherit when we fork(), by installing our own beforehand. proxy_reactor = ProxiedReactor() installReactor(proxy_reactor) # Import the entrypoints for all the workers. worker_functions = [] for worker_args in args_by_worker: worker_module = importlib.import_module(worker_args[0]) worker_functions.append(worker_module.main) # We need to prepare the database first as otherwise all the workers will # try to create a schema version table and some will crash out. from synapse._scripts import update_synapse_database update_proc = multiprocessing.Process( target=_worker_entrypoint, args=( update_synapse_database.main, proxy_reactor, [ "update_synapse_database", "--database-config", ns.db_config, "--run-background-updates", ], ), ) print("===== PREPARING DATABASE =====", file=sys.stderr) update_proc.start() update_proc.join() print("===== PREPARED DATABASE =====", file=sys.stderr) processes: List[multiprocessing.Process] = [] # Install signal handlers to propagate signals to all our children, so that they # shut down cleanly. This also inhibits our own exit, but that's good: we want to # wait until the children have exited. def handle_signal(signum: int, frame: Optional[FrameType]) -> None: print( f"complement_fork_starter: Caught signal {signum}. Stopping children.", file=sys.stderr, ) for p in processes: if p.pid: os.kill(p.pid, signum) for sig in (signal.SIGINT, signal.SIGTERM): _original_signal_handlers[sig] = signal.signal(sig, handle_signal) # At this point, we've imported all the main entrypoints for all the workers. # Now we basically just fork() out to create the workers we need. # Because we're using fork(), all the workers get a clone of this launcher's # memory space and don't need to repeat the work of loading the code! # Instead of using fork() directly, we use the multiprocessing library, # which uses fork() on Unix platforms. for func, worker_args in zip(worker_functions, args_by_worker): process = multiprocessing.Process( target=_worker_entrypoint, args=(func, proxy_reactor, worker_args) ) process.start() processes.append(process) # Be a good parent and wait for our children to die before exiting. for process in processes: process.join() if __name__ == "__main__": main() synapse-1.100.0/synapse/app/event_creator.py000066400000000000000000000016111455622526000210150ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/federation_reader.py000066400000000000000000000016511455622526000216230ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/federation_sender.py000066400000000000000000000016511455622526000216410ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/frontend_proxy.py000066400000000000000000000016511455622526000212410ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/generic_worker.py000066400000000000000000000324511455622526000211700ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import sys from typing import Dict, List from twisted.web.resource import Resource import synapse import synapse.events from synapse.api.urls import ( CLIENT_API_PREFIX, FEDERATION_PREFIX, LEGACY_MEDIA_PREFIX, MEDIA_R0_PREFIX, MEDIA_V3_PREFIX, SERVER_KEY_PREFIX, ) from synapse.app import _base from synapse.app._base import ( handle_startup_exception, max_request_body_size, redirect_stdio_to_logs, register_start, ) from synapse.config._base import ConfigError from synapse.config.homeserver import HomeServerConfig from synapse.config.logger import setup_logging from synapse.config.server import ListenerConfig, TCPListenerConfig from synapse.federation.transport.server import TransportLayerServer from synapse.http.server import JsonResource, OptionsResource from synapse.logging.context import LoggingContext from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource from synapse.rest import ClientRestResource from synapse.rest.admin import register_servlets_for_media_repo from synapse.rest.health import HealthResource from synapse.rest.key.v2 import KeyResource from synapse.rest.synapse.client import build_synapse_client_resource_tree from synapse.rest.well_known import well_known_resource from synapse.server import HomeServer from synapse.storage.databases.main.account_data import AccountDataWorkerStore from synapse.storage.databases.main.appservice import ( ApplicationServiceTransactionWorkerStore, ApplicationServiceWorkerStore, ) from synapse.storage.databases.main.censor_events import CensorEventsStore from synapse.storage.databases.main.client_ips import ClientIpWorkerStore from synapse.storage.databases.main.deviceinbox import DeviceInboxWorkerStore from synapse.storage.databases.main.devices import DeviceWorkerStore from synapse.storage.databases.main.directory import DirectoryWorkerStore from synapse.storage.databases.main.e2e_room_keys import EndToEndRoomKeyStore from synapse.storage.databases.main.event_federation import EventFederationWorkerStore from synapse.storage.databases.main.event_push_actions import ( EventPushActionsWorkerStore, ) from synapse.storage.databases.main.events_worker import EventsWorkerStore from synapse.storage.databases.main.filtering import FilteringWorkerStore from synapse.storage.databases.main.keys import KeyStore from synapse.storage.databases.main.lock import LockStore from synapse.storage.databases.main.media_repository import MediaRepositoryStore from synapse.storage.databases.main.metrics import ServerMetricsStore from synapse.storage.databases.main.monthly_active_users import ( MonthlyActiveUsersWorkerStore, ) from synapse.storage.databases.main.presence import PresenceStore from synapse.storage.databases.main.profile import ProfileWorkerStore from synapse.storage.databases.main.purge_events import PurgeEventsStore from synapse.storage.databases.main.push_rule import PushRulesWorkerStore from synapse.storage.databases.main.pusher import PusherWorkerStore from synapse.storage.databases.main.receipts import ReceiptsWorkerStore from synapse.storage.databases.main.registration import RegistrationWorkerStore from synapse.storage.databases.main.relations import RelationsWorkerStore from synapse.storage.databases.main.room import RoomWorkerStore from synapse.storage.databases.main.roommember import RoomMemberWorkerStore from synapse.storage.databases.main.search import SearchStore from synapse.storage.databases.main.session import SessionStore from synapse.storage.databases.main.signatures import SignatureWorkerStore from synapse.storage.databases.main.state import StateGroupWorkerStore from synapse.storage.databases.main.stats import StatsStore from synapse.storage.databases.main.stream import StreamWorkerStore from synapse.storage.databases.main.tags import TagsWorkerStore from synapse.storage.databases.main.task_scheduler import TaskSchedulerWorkerStore from synapse.storage.databases.main.transactions import TransactionWorkerStore from synapse.storage.databases.main.ui_auth import UIAuthWorkerStore from synapse.storage.databases.main.user_directory import UserDirectoryStore from synapse.storage.databases.main.user_erasure_store import UserErasureWorkerStore from synapse.util import SYNAPSE_VERSION from synapse.util.httpresourcetree import create_resource_tree logger = logging.getLogger("synapse.app.generic_worker") class GenericWorkerStore( # FIXME(https://github.com/matrix-org/synapse/issues/3714): We need to add # UserDirectoryStore as we write directly rather than going via the correct worker. UserDirectoryStore, StatsStore, UIAuthWorkerStore, EndToEndRoomKeyStore, PresenceStore, DeviceInboxWorkerStore, DeviceWorkerStore, TagsWorkerStore, AccountDataWorkerStore, CensorEventsStore, ClientIpWorkerStore, # KeyStore isn't really safe to use from a worker, but for now we do so and hope that # the races it creates aren't too bad. KeyStore, RoomWorkerStore, DirectoryWorkerStore, PushRulesWorkerStore, ApplicationServiceTransactionWorkerStore, ApplicationServiceWorkerStore, ProfileWorkerStore, FilteringWorkerStore, MonthlyActiveUsersWorkerStore, MediaRepositoryStore, ServerMetricsStore, PusherWorkerStore, RoomMemberWorkerStore, RelationsWorkerStore, EventFederationWorkerStore, EventPushActionsWorkerStore, PurgeEventsStore, StateGroupWorkerStore, SignatureWorkerStore, UserErasureWorkerStore, ReceiptsWorkerStore, StreamWorkerStore, EventsWorkerStore, RegistrationWorkerStore, SearchStore, TransactionWorkerStore, LockStore, SessionStore, TaskSchedulerWorkerStore, ): # Properties that multiple storage classes define. Tell mypy what the # expected type is. server_name: str config: HomeServerConfig class GenericWorkerServer(HomeServer): DATASTORE_CLASS = GenericWorkerStore # type: ignore def _listen_http(self, listener_config: ListenerConfig) -> None: assert listener_config.http_options is not None # We always include a health resource. resources: Dict[str, Resource] = {"/health": HealthResource()} for res in listener_config.http_options.resources: for name in res.names: if name == "metrics": resources[METRICS_PREFIX] = MetricsResource(RegistryProxy) elif name == "client": resource: Resource = ClientRestResource(self) resources[CLIENT_API_PREFIX] = resource resources.update(build_synapse_client_resource_tree(self)) resources["/.well-known"] = well_known_resource(self) elif name == "federation": resources[FEDERATION_PREFIX] = TransportLayerServer(self) elif name == "media": if self.config.media.can_load_media_repo: media_repo = self.get_media_repository_resource() # We need to serve the admin servlets for media on the # worker. admin_resource = JsonResource(self, canonical_json=False) register_servlets_for_media_repo(self, admin_resource) resources.update( { MEDIA_R0_PREFIX: media_repo, MEDIA_V3_PREFIX: media_repo, LEGACY_MEDIA_PREFIX: media_repo, "/_synapse/admin": admin_resource, } ) else: logger.warning( "A 'media' listener is configured but the media" " repository is disabled. Ignoring." ) elif name == "health": # Skip loading, health resource is always included continue if name == "openid" and "federation" not in res.names: # Only load the openid resource separately if federation resource # is not specified since federation resource includes openid # resource. resources[FEDERATION_PREFIX] = TransportLayerServer( self, servlet_groups=["openid"] ) if name in ["keys", "federation"]: resources[SERVER_KEY_PREFIX] = KeyResource(self) if name == "replication": resources[REPLICATION_PREFIX] = ReplicationRestResource(self) # Attach additional resources registered by modules. resources.update(self._module_web_resources) self._module_web_resources_consumed = True root_resource = create_resource_tree(resources, OptionsResource()) _base.listen_http( self, listener_config, root_resource, self.version_string, max_request_body_size(self.config), self.tls_server_context_factory, reactor=self.get_reactor(), ) def start_listening(self) -> None: for listener in self.config.worker.worker_listeners: if listener.type == "http": self._listen_http(listener) elif listener.type == "manhole": if isinstance(listener, TCPListenerConfig): _base.listen_manhole( listener.bind_addresses, listener.port, manhole_settings=self.config.server.manhole_settings, manhole_globals={"hs": self}, ) else: raise ConfigError( "Can not using a unix socket for manhole at this time." ) elif listener.type == "metrics": if not self.config.metrics.enable_metrics: logger.warning( "Metrics listener configured, but " "enable_metrics is not True!" ) else: if isinstance(listener, TCPListenerConfig): _base.listen_metrics( listener.bind_addresses, listener.port, ) else: raise ConfigError( "Can not use a unix socket for metrics at this time." ) else: logger.warning("Unsupported listener type: %s", listener.type) self.get_replication_command_handler().start_replication(self) def start(config_options: List[str]) -> None: try: config = HomeServerConfig.load_config("Synapse worker", config_options) except ConfigError as e: sys.stderr.write("\n" + str(e) + "\n") sys.exit(1) # For backwards compatibility let any of the old app names. assert config.worker.worker_app in ( "synapse.app.appservice", "synapse.app.client_reader", "synapse.app.event_creator", "synapse.app.federation_reader", "synapse.app.federation_sender", "synapse.app.frontend_proxy", "synapse.app.generic_worker", "synapse.app.media_repository", "synapse.app.pusher", "synapse.app.synchrotron", "synapse.app.user_dir", ) synapse.events.USE_FROZEN_DICTS = config.server.use_frozen_dicts synapse.util.caches.TRACK_MEMORY_USAGE = config.caches.track_memory_usage if config.server.gc_seconds: synapse.metrics.MIN_TIME_BETWEEN_GCS = config.server.gc_seconds hs = GenericWorkerServer( config.server.server_name, config=config, version_string=f"Synapse/{SYNAPSE_VERSION}", ) setup_logging(hs, config, use_worker_options=True) try: hs.setup() # Ensure the replication streamer is always started in case we write to any # streams. Will no-op if no streams can be written to by this worker. hs.get_replication_streamer() except Exception as e: handle_startup_exception(e) register_start(_base.start, hs) # redirect stdio to the logs, if configured. if not hs.config.logging.no_redirect_stdio: redirect_stdio_to_logs() _base.start_worker_reactor("synapse-generic-worker", config) def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/homeserver.py000066400000000000000000000351101455622526000203350ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import os import sys from typing import Dict, Iterable, List from twisted.internet.tcp import Port from twisted.web.resource import EncodingResourceWrapper, Resource from twisted.web.server import GzipEncoderFactory import synapse import synapse.config.logger from synapse import events from synapse.api.urls import ( CLIENT_API_PREFIX, FEDERATION_PREFIX, LEGACY_MEDIA_PREFIX, MEDIA_R0_PREFIX, MEDIA_V3_PREFIX, SERVER_KEY_PREFIX, STATIC_PREFIX, ) from synapse.app import _base from synapse.app._base import ( handle_startup_exception, listen_http, max_request_body_size, redirect_stdio_to_logs, register_start, ) from synapse.config._base import ConfigError, format_config_error from synapse.config.homeserver import HomeServerConfig from synapse.config.server import ListenerConfig, TCPListenerConfig from synapse.federation.transport.server import TransportLayerServer from synapse.http.additional_resource import AdditionalResource from synapse.http.server import ( OptionsResource, RootOptionsRedirectResource, StaticResource, ) from synapse.logging.context import LoggingContext from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource from synapse.rest import ClientRestResource from synapse.rest.admin import AdminRestResource from synapse.rest.health import HealthResource from synapse.rest.key.v2 import KeyResource from synapse.rest.synapse.client import build_synapse_client_resource_tree from synapse.rest.well_known import well_known_resource from synapse.server import HomeServer from synapse.storage import DataStore from synapse.util.check_dependencies import VERSION, check_requirements from synapse.util.httpresourcetree import create_resource_tree from synapse.util.module_loader import load_module logger = logging.getLogger("synapse.app.homeserver") def gz_wrap(r: Resource) -> Resource: return EncodingResourceWrapper(r, [GzipEncoderFactory()]) class SynapseHomeServer(HomeServer): DATASTORE_CLASS = DataStore # type: ignore def _listener_http( self, config: HomeServerConfig, listener_config: ListenerConfig, ) -> Iterable[Port]: # Must exist since this is an HTTP listener. assert listener_config.http_options is not None site_tag = listener_config.get_site_tag() # We always include a health resource. resources: Dict[str, Resource] = {"/health": HealthResource()} for res in listener_config.http_options.resources: for name in res.names: if name == "openid" and "federation" in res.names: # Skip loading openid resource if federation is defined # since federation resource will include openid continue if name == "health": # Skip loading, health resource is always included continue resources.update(self._configure_named_resource(name, res.compress)) additional_resources = listener_config.http_options.additional_resources logger.debug("Configuring additional resources: %r", additional_resources) module_api = self.get_module_api() for path, resmodule in additional_resources.items(): handler_cls, config = load_module( resmodule, ("listeners", site_tag, "additional_resources", "<%s>" % (path,)), ) handler = handler_cls(config, module_api) if isinstance(handler, Resource): resource = handler elif hasattr(handler, "handle_request"): resource = AdditionalResource(self, handler.handle_request) else: raise ConfigError( "additional_resource %s does not implement a known interface" % (resmodule["module"],) ) resources[path] = resource # Attach additional resources registered by modules. resources.update(self._module_web_resources) self._module_web_resources_consumed = True # Try to find something useful to serve at '/': # # 1. Redirect to the web client if it is an HTTP(S) URL. # 2. Redirect to the static "Synapse is running" page. # 3. Do not redirect and use a blank resource. if self.config.server.web_client_location: root_resource: Resource = RootOptionsRedirectResource( self.config.server.web_client_location ) elif STATIC_PREFIX in resources: root_resource = RootOptionsRedirectResource(STATIC_PREFIX) else: root_resource = OptionsResource() ports = listen_http( self, listener_config, create_resource_tree(resources, root_resource), self.version_string, max_request_body_size(self.config), self.tls_server_context_factory, reactor=self.get_reactor(), ) return ports def _configure_named_resource( self, name: str, compress: bool = False ) -> Dict[str, Resource]: """Build a resource map for a named resource Args: name: named resource: one of "client", "federation", etc compress: whether to enable gzip compression for this resource Returns: map from path to HTTP resource """ resources: Dict[str, Resource] = {} if name == "client": client_resource: Resource = ClientRestResource(self) if compress: client_resource = gz_wrap(client_resource) resources.update( { CLIENT_API_PREFIX: client_resource, "/.well-known": well_known_resource(self), "/_synapse/admin": AdminRestResource(self), **build_synapse_client_resource_tree(self), } ) if self.config.email.can_verify_email: from synapse.rest.synapse.client.password_reset import ( PasswordResetSubmitTokenResource, ) resources[ "/_synapse/client/password_reset/email/submit_token" ] = PasswordResetSubmitTokenResource(self) if name == "consent": from synapse.rest.consent.consent_resource import ConsentResource consent_resource: Resource = ConsentResource(self) if compress: consent_resource = gz_wrap(consent_resource) resources["/_matrix/consent"] = consent_resource if name == "federation": federation_resource: Resource = TransportLayerServer(self) if compress: federation_resource = gz_wrap(federation_resource) resources[FEDERATION_PREFIX] = federation_resource if name == "openid": resources[FEDERATION_PREFIX] = TransportLayerServer( self, servlet_groups=["openid"] ) if name in ["static", "client"]: resources[STATIC_PREFIX] = StaticResource( os.path.join(os.path.dirname(synapse.__file__), "static") ) if name in ["media", "federation", "client"]: if self.config.server.enable_media_repo: media_repo = self.get_media_repository_resource() resources.update( { MEDIA_R0_PREFIX: media_repo, MEDIA_V3_PREFIX: media_repo, LEGACY_MEDIA_PREFIX: media_repo, } ) elif name == "media": raise ConfigError( "'media' resource conflicts with enable_media_repo=False" ) if name in ["keys", "federation"]: resources[SERVER_KEY_PREFIX] = KeyResource(self) if name == "metrics" and self.config.metrics.enable_metrics: metrics_resource: Resource = MetricsResource(RegistryProxy) if compress: metrics_resource = gz_wrap(metrics_resource) resources[METRICS_PREFIX] = metrics_resource if name == "replication": resources[REPLICATION_PREFIX] = ReplicationRestResource(self) return resources def start_listening(self) -> None: if self.config.redis.redis_enabled: # If redis is enabled we connect via the replication command handler # in the same way as the workers (since we're effectively a client # rather than a server). self.get_replication_command_handler().start_replication(self) for listener in self.config.server.listeners: if listener.type == "http": self._listening_services.extend( self._listener_http(self.config, listener) ) elif listener.type == "manhole": if isinstance(listener, TCPListenerConfig): _base.listen_manhole( listener.bind_addresses, listener.port, manhole_settings=self.config.server.manhole_settings, manhole_globals={"hs": self}, ) else: raise ConfigError( "Can not use a unix socket for manhole at this time." ) elif listener.type == "metrics": if not self.config.metrics.enable_metrics: logger.warning( "Metrics listener configured, but " "enable_metrics is not True!" ) else: if isinstance(listener, TCPListenerConfig): _base.listen_metrics( listener.bind_addresses, listener.port, ) else: raise ConfigError( "Can not use a unix socket for metrics at this time." ) else: # this shouldn't happen, as the listener type should have been checked # during parsing logger.warning("Unrecognized listener type: %s", listener.type) def setup(config_options: List[str]) -> SynapseHomeServer: """ Args: config_options_options: The options passed to Synapse. Usually `sys.argv[1:]`. Returns: A homeserver instance. """ try: config = HomeServerConfig.load_or_generate_config( "Synapse Homeserver", config_options ) except ConfigError as e: sys.stderr.write("\n") for f in format_config_error(e): sys.stderr.write(f) sys.stderr.write("\n") sys.exit(1) if not config: # If a config isn't returned, and an exception isn't raised, we're just # generating config files and shouldn't try to continue. sys.exit(0) if config.worker.worker_app: raise ConfigError( "You have specified `worker_app` in the config but are attempting to start a non-worker " "instance. Please use `python -m synapse.app.generic_worker` instead (or remove the option if this is the main process)." ) sys.exit(1) events.USE_FROZEN_DICTS = config.server.use_frozen_dicts synapse.util.caches.TRACK_MEMORY_USAGE = config.caches.track_memory_usage if config.server.gc_seconds: synapse.metrics.MIN_TIME_BETWEEN_GCS = config.server.gc_seconds if ( config.registration.enable_registration and not config.registration.enable_registration_without_verification ): if ( not config.captcha.enable_registration_captcha and not config.registration.registrations_require_3pid and not config.registration.registration_requires_token ): raise ConfigError( "You have enabled open registration without any verification. This is a known vector for " "spam and abuse. If you would like to allow public registration, please consider adding email, " "captcha, or token-based verification. Otherwise this check can be removed by setting the " "`enable_registration_without_verification` config option to `true`." ) hs = SynapseHomeServer( config.server.server_name, config=config, version_string=f"Synapse/{VERSION}", ) synapse.config.logger.setup_logging(hs, config, use_worker_options=False) logger.info("Setting up server") try: hs.setup() except Exception as e: handle_startup_exception(e) async def start() -> None: # Load the OIDC provider metadatas, if OIDC is enabled. if hs.config.oidc.oidc_enabled: oidc = hs.get_oidc_handler() # Loading the provider metadata also ensures the provider config is valid. await oidc.load_metadata() await _base.start(hs) hs.get_datastores().main.db_pool.updates.start_doing_background_updates() register_start(start) return hs def run(hs: HomeServer) -> None: _base.start_reactor( "synapse-homeserver", soft_file_limit=hs.config.server.soft_file_limit, gc_thresholds=hs.config.server.gc_thresholds, pid_file=hs.config.server.pid_file, daemonize=hs.config.server.daemonize, print_pidfile=hs.config.server.print_pidfile, logger=logger, ) def main() -> None: with LoggingContext("main"): # check base requirements check_requirements() hs = setup(sys.argv[1:]) # redirect stdio to the logs, if configured. if not hs.config.logging.no_redirect_stdio: redirect_stdio_to_logs() run(hs) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/media_repository.py000066400000000000000000000016511455622526000215370ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/phone_stats_home.py000066400000000000000000000206571455622526000215270ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import math import resource import sys from typing import TYPE_CHECKING, List, Mapping, Sized, Tuple from prometheus_client import Gauge from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger("synapse.app.homeserver") # Contains the list of processes we will be monitoring # currently either 0 or 1 _stats_process: List[Tuple[int, "resource.struct_rusage"]] = [] # Gauges to expose monthly active user control metrics current_mau_gauge = Gauge("synapse_admin_mau_current", "Current MAU") current_mau_by_service_gauge = Gauge( "synapse_admin_mau_current_mau_by_service", "Current MAU by service", ["app_service"], ) max_mau_gauge = Gauge("synapse_admin_mau_max", "MAU Limit") registered_reserved_users_mau_gauge = Gauge( "synapse_admin_mau_registered_reserved_users", "Registered users with reserved threepids", ) @wrap_as_background_process("phone_stats_home") async def phone_stats_home( hs: "HomeServer", stats: JsonDict, stats_process: List[Tuple[int, "resource.struct_rusage"]] = _stats_process, ) -> None: """Collect usage statistics and send them to the configured endpoint. Args: hs: the HomeServer object to use for gathering usage data. stats: the dict in which to store the statistics sent to the configured endpoint. Mostly used in tests to figure out the data that is supposed to be sent. stats_process: statistics about resource usage of the process. """ logger.info("Gathering stats for reporting") now = int(hs.get_clock().time()) # Ensure the homeserver has started. assert hs.start_time is not None uptime = int(now - hs.start_time) if uptime < 0: uptime = 0 # # Performance statistics. Keep this early in the function to maintain reliability of `test_performance_100` test. # old = stats_process[0] new = (now, resource.getrusage(resource.RUSAGE_SELF)) stats_process[0] = new # Get RSS in bytes stats["memory_rss"] = new[1].ru_maxrss # Get CPU time in % of a single core, not % of all cores used_cpu_time = (new[1].ru_utime + new[1].ru_stime) - ( old[1].ru_utime + old[1].ru_stime ) if used_cpu_time == 0 or new[0] == old[0]: stats["cpu_average"] = 0 else: stats["cpu_average"] = math.floor(used_cpu_time / (new[0] - old[0]) * 100) # # General statistics # store = hs.get_datastores().main common_metrics = await hs.get_common_usage_metrics_manager().get_metrics() stats["homeserver"] = hs.config.server.server_name stats["server_context"] = hs.config.server.server_context stats["timestamp"] = now stats["uptime_seconds"] = uptime version = sys.version_info stats["python_version"] = "{}.{}.{}".format( version.major, version.minor, version.micro ) stats["total_users"] = await store.count_all_users() total_nonbridged_users = await store.count_nonbridged_users() stats["total_nonbridged_users"] = total_nonbridged_users daily_user_type_results = await store.count_daily_user_type() for name, count in daily_user_type_results.items(): stats["daily_user_type_" + name] = count room_count = await store.get_room_count() stats["total_room_count"] = room_count stats["daily_active_users"] = common_metrics.daily_active_users stats["monthly_active_users"] = await store.count_monthly_users() daily_active_e2ee_rooms = await store.count_daily_active_e2ee_rooms() stats["daily_active_e2ee_rooms"] = daily_active_e2ee_rooms stats["daily_e2ee_messages"] = await store.count_daily_e2ee_messages() daily_sent_e2ee_messages = await store.count_daily_sent_e2ee_messages() stats["daily_sent_e2ee_messages"] = daily_sent_e2ee_messages stats["daily_active_rooms"] = await store.count_daily_active_rooms() stats["daily_messages"] = await store.count_daily_messages() daily_sent_messages = await store.count_daily_sent_messages() stats["daily_sent_messages"] = daily_sent_messages r30v2_results = await store.count_r30v2_users() for name, count in r30v2_results.items(): stats["r30v2_users_" + name] = count stats["cache_factor"] = hs.config.caches.global_factor stats["event_cache_size"] = hs.config.caches.event_cache_size # # Database version # # This only reports info about the *main* database. stats["database_engine"] = store.db_pool.engine.module.__name__ stats["database_server_version"] = store.db_pool.engine.server_version # # Logging configuration # synapse_logger = logging.getLogger("synapse") log_level = synapse_logger.getEffectiveLevel() stats["log_level"] = logging.getLevelName(log_level) logger.info( "Reporting stats to %s: %s" % (hs.config.metrics.report_stats_endpoint, stats) ) try: await hs.get_proxied_http_client().put_json( hs.config.metrics.report_stats_endpoint, stats ) except Exception as e: logger.warning("Error reporting stats: %s", e) def start_phone_stats_home(hs: "HomeServer") -> None: """ Start the background tasks which report phone home stats. """ clock = hs.get_clock() stats: JsonDict = {} def performance_stats_init() -> None: _stats_process.clear() _stats_process.append( (int(hs.get_clock().time()), resource.getrusage(resource.RUSAGE_SELF)) ) # Rather than update on per session basis, batch up the requests. # If you increase the loop period, the accuracy of user_daily_visits # table will decrease clock.looping_call( hs.get_datastores().main.generate_user_daily_visits, 5 * 60 * 1000 ) # monthly active user limiting functionality clock.looping_call( hs.get_datastores().main.reap_monthly_active_users, 1000 * 60 * 60 ) hs.get_datastores().main.reap_monthly_active_users() @wrap_as_background_process("generate_monthly_active_users") async def generate_monthly_active_users() -> None: current_mau_count = 0 current_mau_count_by_service: Mapping[str, int] = {} reserved_users: Sized = () store = hs.get_datastores().main if hs.config.server.limit_usage_by_mau or hs.config.server.mau_stats_only: current_mau_count = await store.get_monthly_active_count() current_mau_count_by_service = ( await store.get_monthly_active_count_by_service() ) reserved_users = await store.get_registered_reserved_users() current_mau_gauge.set(float(current_mau_count)) for app_service, count in current_mau_count_by_service.items(): current_mau_by_service_gauge.labels(app_service).set(float(count)) registered_reserved_users_mau_gauge.set(float(len(reserved_users))) max_mau_gauge.set(float(hs.config.server.max_mau_value)) if hs.config.server.limit_usage_by_mau or hs.config.server.mau_stats_only: generate_monthly_active_users() clock.looping_call(generate_monthly_active_users, 5 * 60 * 1000) # End of monthly active user settings if hs.config.metrics.report_stats: logger.info("Scheduling stats reporting for 3 hour intervals") clock.looping_call(phone_stats_home, 3 * 60 * 60 * 1000, hs, stats) # We need to defer this init for the cases that we daemonize # otherwise the process ID we get is that of the non-daemon process clock.call_later(0, performance_stats_init) # We wait 5 minutes to send the first set of stats as the server can # be quite busy the first few minutes clock.call_later(5 * 60, phone_stats_home, hs, stats) synapse-1.100.0/synapse/app/pusher.py000066400000000000000000000016511455622526000174670ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/synchrotron.py000066400000000000000000000016511455622526000205510ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/app/user_dir.py000066400000000000000000000016571455622526000200030ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2017 Vector Creations Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from synapse.app.generic_worker import start from synapse.util.logcontext import LoggingContext def main() -> None: with LoggingContext("main"): start(sys.argv[1:]) if __name__ == "__main__": main() synapse-1.100.0/synapse/appservice/000077500000000000000000000000001455622526000171655ustar00rootroot00000000000000synapse-1.100.0/synapse/appservice/__init__.py000066400000000000000000000361771455622526000213140ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import re from enum import Enum from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Pattern, Sequence import attr from netaddr import IPSet from synapse.api.constants import EventTypes from synapse.events import EventBase from synapse.types import DeviceListUpdates, JsonDict, JsonMapping, UserID from synapse.util.caches.descriptors import _CacheContext, cached if TYPE_CHECKING: from synapse.appservice.api import ApplicationServiceApi from synapse.storage.databases.main import DataStore logger = logging.getLogger(__name__) # Type for the `device_one_time_keys_count` field in an appservice transaction # user ID -> {device ID -> {algorithm -> count}} TransactionOneTimeKeysCount = Dict[str, Dict[str, Dict[str, int]]] # Type for the `device_unused_fallback_key_types` field in an appservice transaction # user ID -> {device ID -> [algorithm]} TransactionUnusedFallbackKeys = Dict[str, Dict[str, List[str]]] class ApplicationServiceState(Enum): DOWN = "down" UP = "up" @attr.s(slots=True, frozen=True, auto_attribs=True) class Namespace: exclusive: bool regex: Pattern[str] class ApplicationService: """Defines an application service. This definition is mostly what is provided to the /register AS API. Provides methods to check if this service is "interested" in events. """ NS_USERS = "users" NS_ALIASES = "aliases" NS_ROOMS = "rooms" # The ordering here is important as it is used to map database values (which # are stored as ints representing the position in this list) to namespace # values. NS_LIST = [NS_USERS, NS_ALIASES, NS_ROOMS] def __init__( self, token: str, id: str, sender: str, url: Optional[str] = None, namespaces: Optional[JsonDict] = None, hs_token: Optional[str] = None, protocols: Optional[Iterable[str]] = None, rate_limited: bool = True, ip_range_whitelist: Optional[IPSet] = None, supports_ephemeral: bool = False, msc3202_transaction_extensions: bool = False, ): self.token = token self.url = ( url.rstrip("/") if isinstance(url, str) else None ) # url must not end with a slash self.hs_token = hs_token # The full Matrix ID for this application service's sender. self.sender = sender self.namespaces = self._check_namespaces(namespaces) self.id = id self.ip_range_whitelist = ip_range_whitelist self.supports_ephemeral = supports_ephemeral self.msc3202_transaction_extensions = msc3202_transaction_extensions if "|" in self.id: raise Exception("application service ID cannot contain '|' character") # .protocols is a publicly visible field if protocols: self.protocols = set(protocols) else: self.protocols = set() self.rate_limited = rate_limited def _check_namespaces( self, namespaces: Optional[JsonDict] ) -> Dict[str, List[Namespace]]: # Sanity check that it is of the form: # { # users: [ {regex: "[A-z]+.*", exclusive: true}, ...], # aliases: [ {regex: "[A-z]+.*", exclusive: true}, ...], # rooms: [ {regex: "[A-z]+.*", exclusive: true}, ...], # } if namespaces is None: namespaces = {} result: Dict[str, List[Namespace]] = {} for ns in ApplicationService.NS_LIST: result[ns] = [] if ns not in namespaces: continue if not isinstance(namespaces[ns], list): raise ValueError("Bad namespace value for '%s'" % ns) for regex_obj in namespaces[ns]: if not isinstance(regex_obj, dict): raise ValueError("Expected dict regex for ns '%s'" % ns) exclusive = regex_obj.get("exclusive") if not isinstance(exclusive, bool): raise ValueError("Expected bool for 'exclusive' in ns '%s'" % ns) regex = regex_obj.get("regex") if not isinstance(regex, str): raise ValueError("Expected string for 'regex' in ns '%s'" % ns) # Pre-compile regex. result[ns].append(Namespace(exclusive, re.compile(regex))) return result def _matches_regex( self, namespace_key: str, test_string: str ) -> Optional[Namespace]: for namespace in self.namespaces[namespace_key]: if namespace.regex.match(test_string): return namespace return None def _is_exclusive(self, namespace_key: str, test_string: str) -> bool: namespace = self._matches_regex(namespace_key, test_string) if namespace: return namespace.exclusive return False @cached(num_args=1, cache_context=True) async def _matches_user_in_member_list( self, room_id: str, store: "DataStore", cache_context: _CacheContext, ) -> bool: """Check if this service is interested a room based upon its membership Args: room_id: The room to check. store: The datastore to query. Returns: True if this service would like to know about this room. """ # We can use `get_local_users_in_room(...)` here because an application service # can only be interested in local users of the server it's on (ignore any remote # users that might match the user namespace regex). # # In the future, we can consider re-using # `store.get_app_service_users_in_room` which is very similar to this # function but has a slightly worse performance than this because we # have an early escape-hatch if we find a single user that the # appservice is interested in. The juice would be worth the squeeze if # `store.get_app_service_users_in_room` was used in more places besides # an experimental MSC. But for now we can avoid doing more work and # barely using it later. local_user_ids = await store.get_local_users_in_room( room_id, on_invalidate=cache_context.invalidate ) # check joined member events for user_id in local_user_ids: if self.is_interested_in_user(user_id): return True return False def is_interested_in_user( self, user_id: str, ) -> bool: """ Returns whether the application is interested in a given user ID. The appservice is considered to be interested in a user if either: the user ID is in the appservice's user namespace, or if the user is the appservice's configured sender_localpart. Args: user_id: The ID of the user to check. Returns: True if the application service is interested in the user, False if not. """ return ( # User is the appservice's configured sender_localpart user user_id == self.sender # User is in the appservice's user namespace or self.is_user_in_namespace(user_id) ) @cached(num_args=1, cache_context=True) async def is_interested_in_room( self, room_id: str, store: "DataStore", cache_context: _CacheContext, ) -> bool: """ Returns whether the application service is interested in a given room ID. The appservice is considered to be interested in the room if either: the ID or one of the aliases of the room is in the appservice's room ID or alias namespace respectively, or if one of the members of the room fall into the appservice's user namespace. Args: room_id: The ID of the room to check. store: The homeserver's datastore class. Returns: True if the application service is interested in the room, False if not. """ # Check if we have interest in this room ID if self.is_room_id_in_namespace(room_id): return True # likewise with the room's aliases (if it has any) alias_list = await store.get_aliases_for_room( room_id, on_invalidate=cache_context.invalidate ) for alias in alias_list: if self.is_room_alias_in_namespace(alias): return True # And finally, perform an expensive check on whether any of the # users in the room match the appservice's user namespace return await self._matches_user_in_member_list( room_id, store, on_invalidate=cache_context.invalidate ) @cached(num_args=1, cache_context=True) async def is_interested_in_event( self, event_id: str, event: EventBase, store: "DataStore", cache_context: _CacheContext, ) -> bool: """Check if this service is interested in this event. Args: event_id: The ID of the event to check. This is purely used for simplifying the caching of calls to this method. event: The event to check. store: The datastore to query. Returns: True if this service would like to know about this event, otherwise False. """ # Check if we're interested in this event's sender by namespace (or if they're the # sender_localpart user) if self.is_interested_in_user(event.sender): return True # additionally, if this is a membership event, perform the same checks on # the user it references if event.type == EventTypes.Member and self.is_interested_in_user( event.state_key ): return True # This will check the datastore, so should be run last if await self.is_interested_in_room( event.room_id, store, on_invalidate=cache_context.invalidate ): return True return False @cached(num_args=1, cache_context=True) async def is_interested_in_presence( self, user_id: UserID, store: "DataStore", cache_context: _CacheContext ) -> bool: """Check if this service is interested a user's presence Args: user_id: The user to check. store: The datastore to query. Returns: True if this service would like to know about presence for this user. """ # Find all the rooms the sender is in if self.is_interested_in_user(user_id.to_string()): return True room_ids = await store.get_rooms_for_user( user_id.to_string(), on_invalidate=cache_context.invalidate ) # Then find out if the appservice is interested in any of those rooms for room_id in room_ids: if await self.is_interested_in_room( room_id, store, on_invalidate=cache_context.invalidate ): return True return False def is_user_in_namespace(self, user_id: str) -> bool: return bool(self._matches_regex(ApplicationService.NS_USERS, user_id)) def is_room_alias_in_namespace(self, alias: str) -> bool: return bool(self._matches_regex(ApplicationService.NS_ALIASES, alias)) def is_room_id_in_namespace(self, room_id: str) -> bool: return bool(self._matches_regex(ApplicationService.NS_ROOMS, room_id)) def is_exclusive_user(self, user_id: str) -> bool: return ( self._is_exclusive(ApplicationService.NS_USERS, user_id) or user_id == self.sender ) def is_interested_in_protocol(self, protocol: str) -> bool: return protocol in self.protocols def is_exclusive_alias(self, alias: str) -> bool: return self._is_exclusive(ApplicationService.NS_ALIASES, alias) def is_exclusive_room(self, room_id: str) -> bool: return self._is_exclusive(ApplicationService.NS_ROOMS, room_id) def get_exclusive_user_regexes(self) -> List[Pattern[str]]: """Get the list of regexes used to determine if a user is exclusively registered by the AS """ return [ namespace.regex for namespace in self.namespaces[ApplicationService.NS_USERS] if namespace.exclusive ] def is_rate_limited(self) -> bool: return self.rate_limited def __str__(self) -> str: # copy dictionary and redact token fields so they don't get logged dict_copy = self.__dict__.copy() dict_copy["token"] = "" dict_copy["hs_token"] = "" return "ApplicationService: %s" % (dict_copy,) class AppServiceTransaction: """Represents an application service transaction.""" def __init__( self, service: ApplicationService, id: int, events: Sequence[EventBase], ephemeral: List[JsonMapping], to_device_messages: List[JsonMapping], one_time_keys_count: TransactionOneTimeKeysCount, unused_fallback_keys: TransactionUnusedFallbackKeys, device_list_summary: DeviceListUpdates, ): self.service = service self.id = id self.events = events self.ephemeral = ephemeral self.to_device_messages = to_device_messages self.one_time_keys_count = one_time_keys_count self.unused_fallback_keys = unused_fallback_keys self.device_list_summary = device_list_summary async def send(self, as_api: "ApplicationServiceApi") -> bool: """Sends this transaction using the provided AS API interface. Args: as_api: The API to use to send. Returns: True if the transaction was sent. """ return await as_api.push_bulk( service=self.service, events=self.events, ephemeral=self.ephemeral, to_device_messages=self.to_device_messages, one_time_keys_count=self.one_time_keys_count, unused_fallback_keys=self.unused_fallback_keys, device_list_summary=self.device_list_summary, txn_id=self.id, ) async def complete(self, store: "DataStore") -> None: """Completes this transaction as successful. Marks this transaction ID on the application service and removes the transaction contents from the database. Args: store: The database store to operate on. """ await store.complete_appservice_txn(service=self.service, txn_id=self.id) synapse-1.100.0/synapse/appservice/api.py000066400000000000000000000471531455622526000203220ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import urllib.parse from typing import ( TYPE_CHECKING, Dict, Iterable, List, Mapping, Optional, Sequence, Tuple, TypeVar, Union, ) from prometheus_client import Counter from typing_extensions import ParamSpec, TypeGuard from synapse.api.constants import EventTypes, Membership, ThirdPartyEntityKind from synapse.api.errors import CodeMessageException, HttpResponseException from synapse.appservice import ( ApplicationService, TransactionOneTimeKeysCount, TransactionUnusedFallbackKeys, ) from synapse.events import EventBase from synapse.events.utils import SerializeEventConfig, serialize_event from synapse.http.client import SimpleHttpClient, is_unknown_endpoint from synapse.logging import opentracing from synapse.types import DeviceListUpdates, JsonDict, JsonMapping, ThirdPartyInstanceID from synapse.util.caches.response_cache import ResponseCache if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) sent_transactions_counter = Counter( "synapse_appservice_api_sent_transactions", "Number of /transactions/ requests sent", ["service"], ) failed_transactions_counter = Counter( "synapse_appservice_api_failed_transactions", "Number of /transactions/ requests that failed to send", ["service"], ) sent_events_counter = Counter( "synapse_appservice_api_sent_events", "Number of events sent to the AS", ["service"] ) sent_ephemeral_counter = Counter( "synapse_appservice_api_sent_ephemeral", "Number of ephemeral events sent to the AS", ["service"], ) sent_todevice_counter = Counter( "synapse_appservice_api_sent_todevice", "Number of todevice messages sent to the AS", ["service"], ) HOUR_IN_MS = 60 * 60 * 1000 APP_SERVICE_PREFIX = "/_matrix/app/v1" P = ParamSpec("P") R = TypeVar("R") def _is_valid_3pe_metadata(info: JsonDict) -> bool: if "instances" not in info: return False if not isinstance(info["instances"], list): return False return True def _is_valid_3pe_result(r: object, field: str) -> TypeGuard[JsonDict]: if not isinstance(r, dict): return False for k in (field, "protocol"): if k not in r: return False if not isinstance(r[k], str): return False if "fields" not in r: return False fields = r["fields"] if not isinstance(fields, dict): return False return True class ApplicationServiceApi(SimpleHttpClient): """This class manages HS -> AS communications, including querying and pushing. """ def __init__(self, hs: "HomeServer"): super().__init__(hs) self.clock = hs.get_clock() self.config = hs.config.appservice self.protocol_meta_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "as_protocol_meta", timeout_ms=HOUR_IN_MS ) def _get_headers(self, service: "ApplicationService") -> Dict[bytes, List[bytes]]: """This makes sure we have always the auth header and opentracing headers set.""" # This is also ensured before in the functions. However this is needed to please # the typechecks. assert service.hs_token is not None headers = {b"Authorization": [b"Bearer " + service.hs_token.encode("ascii")]} opentracing.inject_header_dict(headers, check_destination=False) return headers async def query_user(self, service: "ApplicationService", user_id: str) -> bool: if service.url is None: return False # This is required by the configuration. assert service.hs_token is not None try: args = None if self.config.use_appservice_legacy_authorization: args = {"access_token": service.hs_token} response = await self.get_json( f"{service.url}{APP_SERVICE_PREFIX}/users/{urllib.parse.quote(user_id)}", args, headers=self._get_headers(service), ) if response is not None: # just an empty json object return True except CodeMessageException as e: if e.code == 404: return False logger.warning("query_user to %s received %s", service.url, e.code) except Exception as ex: logger.warning("query_user to %s threw exception %s", service.url, ex) return False async def query_alias(self, service: "ApplicationService", alias: str) -> bool: if service.url is None: return False # This is required by the configuration. assert service.hs_token is not None try: args = None if self.config.use_appservice_legacy_authorization: args = {"access_token": service.hs_token} response = await self.get_json( f"{service.url}{APP_SERVICE_PREFIX}/rooms/{urllib.parse.quote(alias)}", args, headers=self._get_headers(service), ) if response is not None: # just an empty json object return True except CodeMessageException as e: logger.warning("query_alias to %s received %s", service.url, e.code) if e.code == 404: return False except Exception as ex: logger.warning("query_alias to %s threw exception %s", service.url, ex) return False async def query_3pe( self, service: "ApplicationService", kind: str, protocol: str, fields: Dict[bytes, List[bytes]], ) -> List[JsonDict]: if kind == ThirdPartyEntityKind.USER: required_field = "userid" elif kind == ThirdPartyEntityKind.LOCATION: required_field = "alias" else: raise ValueError("Unrecognised 'kind' argument %r to query_3pe()", kind) if service.url is None: return [] # This is required by the configuration. assert service.hs_token is not None try: args: Mapping[bytes, Union[List[bytes], str]] = fields if self.config.use_appservice_legacy_authorization: args = { **fields, b"access_token": service.hs_token, } response = await self.get_json( f"{service.url}{APP_SERVICE_PREFIX}/thirdparty/{kind}/{urllib.parse.quote(protocol)}", args=args, headers=self._get_headers(service), ) if not isinstance(response, list): logger.warning( "query_3pe to %s returned an invalid response %r", service.url, response, ) return [] ret = [] for r in response: if _is_valid_3pe_result(r, field=required_field): ret.append(r) else: logger.warning( "query_3pe to %s returned an invalid result %r", service.url, r ) return ret except Exception as ex: logger.warning("query_3pe to %s threw exception %s", service.url, ex) return [] async def get_3pe_protocol( self, service: "ApplicationService", protocol: str ) -> Optional[JsonDict]: if service.url is None: return {} async def _get() -> Optional[JsonDict]: # This is required by the configuration. assert service.hs_token is not None try: args = None if self.config.use_appservice_legacy_authorization: args = {"access_token": service.hs_token} info = await self.get_json( f"{service.url}{APP_SERVICE_PREFIX}/thirdparty/protocol/{urllib.parse.quote(protocol)}", args, headers=self._get_headers(service), ) if not _is_valid_3pe_metadata(info): logger.warning( "query_3pe_protocol to %s did not return a valid result", service.url, ) return None for instance in info.get("instances", []): network_id = instance.get("network_id", None) if network_id is not None: instance["instance_id"] = ThirdPartyInstanceID( service.id, network_id ).to_string() return info except Exception as ex: logger.warning( "query_3pe_protocol to %s threw exception %s", service.url, ex ) return None key = (service.id, protocol) return await self.protocol_meta_cache.wrap(key, _get) async def ping(self, service: "ApplicationService", txn_id: Optional[str]) -> None: # The caller should check that url is set assert service.url is not None, "ping called without URL being set" # This is required by the configuration. assert service.hs_token is not None await self.post_json_get_json( uri=f"{service.url}{APP_SERVICE_PREFIX}/ping", post_json={"transaction_id": txn_id}, headers=self._get_headers(service), ) async def push_bulk( self, service: "ApplicationService", events: Sequence[EventBase], ephemeral: List[JsonMapping], to_device_messages: List[JsonMapping], one_time_keys_count: TransactionOneTimeKeysCount, unused_fallback_keys: TransactionUnusedFallbackKeys, device_list_summary: DeviceListUpdates, txn_id: Optional[int] = None, ) -> bool: """ Push data to an application service. Args: service: The application service to send to. events: The persistent events to send. ephemeral: The ephemeral events to send. to_device_messages: The to-device messages to send. txn_id: An unique ID to assign to this transaction. Application services should deduplicate transactions received with identitical IDs. Returns: True if the task succeeded, False if it failed. """ if service.url is None: return True # This is required by the configuration. assert service.hs_token is not None serialized_events = self._serialize(service, events) if txn_id is None: logger.warning( "push_bulk: Missing txn ID sending events to %s", service.url ) txn_id = 0 # Never send ephemeral events to appservices that do not support it body: JsonDict = {"events": serialized_events} if service.supports_ephemeral: body.update( { # TODO: Update to stable prefixes once MSC2409 completes FCP merge. "de.sorunome.msc2409.ephemeral": ephemeral, "de.sorunome.msc2409.to_device": to_device_messages, } ) # TODO: Update to stable prefixes once MSC3202 completes FCP merge if service.msc3202_transaction_extensions: if one_time_keys_count: body[ "org.matrix.msc3202.device_one_time_key_counts" ] = one_time_keys_count body[ "org.matrix.msc3202.device_one_time_keys_count" ] = one_time_keys_count if unused_fallback_keys: body[ "org.matrix.msc3202.device_unused_fallback_key_types" ] = unused_fallback_keys if device_list_summary: body["org.matrix.msc3202.device_lists"] = { "changed": list(device_list_summary.changed), "left": list(device_list_summary.left), } try: args = None if self.config.use_appservice_legacy_authorization: args = {"access_token": service.hs_token} await self.put_json( f"{service.url}{APP_SERVICE_PREFIX}/transactions/{urllib.parse.quote(str(txn_id))}", json_body=body, args=args, headers=self._get_headers(service), ) if logger.isEnabledFor(logging.DEBUG): logger.debug( "push_bulk to %s succeeded! events=%s", service.url, [event.get("event_id") for event in events], ) sent_transactions_counter.labels(service.id).inc() sent_events_counter.labels(service.id).inc(len(serialized_events)) sent_ephemeral_counter.labels(service.id).inc(len(ephemeral)) sent_todevice_counter.labels(service.id).inc(len(to_device_messages)) return True except CodeMessageException as e: logger.warning( "push_bulk to %s received code=%s msg=%s", service.url, e.code, e.msg, exc_info=logger.isEnabledFor(logging.DEBUG), ) except Exception as ex: logger.warning( "push_bulk to %s threw exception(%s) %s args=%s", service.url, type(ex).__name__, ex, ex.args, exc_info=logger.isEnabledFor(logging.DEBUG), ) failed_transactions_counter.labels(service.id).inc() return False async def claim_client_keys( self, service: "ApplicationService", query: List[Tuple[str, str, str, int]] ) -> Tuple[ Dict[str, Dict[str, Dict[str, JsonDict]]], List[Tuple[str, str, str, int]] ]: """Claim one time keys from an application service. Note that any error (including a timeout) is treated as the application service having no information. Args: service: The application service to query. query: An iterable of tuples of (user ID, device ID, algorithm). Returns: A tuple of: A map of user ID -> a map device ID -> a map of key ID -> JSON dict. A copy of the input which has not been fulfilled because the appservice doesn't support this endpoint or has not returned data for that tuple. """ if service.url is None: return {}, query # This is required by the configuration. assert service.hs_token is not None # Create the expected payload shape. body: Dict[str, Dict[str, List[str]]] = {} for user_id, device, algorithm, count in query: body.setdefault(user_id, {}).setdefault(device, []).extend( [algorithm] * count ) uri = f"{service.url}/_matrix/app/unstable/org.matrix.msc3983/keys/claim" try: response = await self.post_json_get_json( uri, body, headers=self._get_headers(service), ) except HttpResponseException as e: # The appservice doesn't support this endpoint. if is_unknown_endpoint(e): return {}, query logger.warning("claim_keys to %s received %s", uri, e.code) return {}, query except Exception as ex: logger.warning("claim_keys to %s threw exception %s", uri, ex) return {}, query # Check if the appservice fulfilled all of the queried user/device/algorithms # or if some are still missing. # # TODO This places a lot of faith in the response shape being correct. missing = [] for user_id, device, algorithm, count in query: # Count the number of keys in the response for this algorithm by # checking which key IDs start with the algorithm. This uses that # True == 1 in Python to generate a count. response_count = sum( key_id.startswith(f"{algorithm}:") for key_id in response.get(user_id, {}).get(device, {}) ) count -= response_count # If the appservice responds with fewer keys than requested, then # consider the request unfulfilled. if count > 0: missing.append((user_id, device, algorithm, count)) return response, missing async def query_keys( self, service: "ApplicationService", query: Dict[str, List[str]] ) -> Dict[str, Dict[str, Dict[str, JsonDict]]]: """Query the application service for keys. Note that any error (including a timeout) is treated as the application service having no information. Args: service: The application service to query. query: An iterable of tuples of (user ID, device ID, algorithm). Returns: A map of device_keys/master_keys/self_signing_keys/user_signing_keys: device_keys is a map of user ID -> a map device ID -> device info. """ if service.url is None: return {} # This is required by the configuration. assert service.hs_token is not None uri = f"{service.url}/_matrix/app/unstable/org.matrix.msc3984/keys/query" try: response = await self.post_json_get_json( uri, query, headers=self._get_headers(service), ) except HttpResponseException as e: # The appservice doesn't support this endpoint. if is_unknown_endpoint(e): return {} logger.warning("query_keys to %s received %s", uri, e.code) return {} except Exception as ex: logger.warning("query_keys to %s threw exception %s", uri, ex) return {} return response def _serialize( self, service: "ApplicationService", events: Iterable[EventBase] ) -> List[JsonDict]: time_now = self.clock.time_msec() return [ serialize_event( e, time_now, config=SerializeEventConfig( as_client_event=True, # If this is an invite or a knock membership event, and we're interested # in this user, then include any stripped state alongside the event. include_stripped_room_state=( e.type == EventTypes.Member and ( e.membership == Membership.INVITE or e.membership == Membership.KNOCK ) and service.is_interested_in_user(e.state_key) ), ), ) for e in events ] synapse-1.100.0/synapse/appservice/scheduler.py000066400000000000000000000514531455622526000215250ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ This module controls the reliability for application service transactions. The nominal flow through this module looks like: __________ 1---ASa[e]-->| Service |--> Queue ASa[f] 2----ASb[e]->| Queuer | 3--ASa[f]--->|__________|-----------+ ASa[e], ASb[e] V -````````- +------------+ |````````|<--StoreTxn-|Transaction | |Database| | Controller |---> SEND TO AS `--------` +------------+ What happens on SEND TO AS depends on the state of the Application Service: - If the AS is marked as DOWN, do nothing. - If the AS is marked as UP, send the transaction. * SUCCESS : Increment where the AS is up to txn-wise and nuke the txn contents from the db. * FAILURE : Marked AS as DOWN and start Recoverer. Recoverer attempts to recover ASes who have died. The flow for this looks like: ,--------------------- backoff++ --------------. V | START ---> Wait exp ------> Get oldest txn ID from ----> FAILURE backoff DB and try to send it ^ |___________ Mark AS as | V UP & quit +---------- YES SUCCESS | | | NO <--- Have more txns? <------ Mark txn success & nuke <-+ from db; incr AS pos. Reset backoff. This is all tied together by the AppServiceScheduler which DIs the required components. """ import logging from typing import ( TYPE_CHECKING, Awaitable, Callable, Collection, Dict, Iterable, List, Optional, Sequence, Set, Tuple, ) from synapse.appservice import ( ApplicationService, ApplicationServiceState, TransactionOneTimeKeysCount, TransactionUnusedFallbackKeys, ) from synapse.appservice.api import ApplicationServiceApi from synapse.events import EventBase from synapse.logging.context import run_in_background from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.databases.main import DataStore from synapse.types import DeviceListUpdates, JsonMapping from synapse.util import Clock if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Maximum number of events to provide in an AS transaction. MAX_PERSISTENT_EVENTS_PER_TRANSACTION = 100 # Maximum number of ephemeral events to provide in an AS transaction. MAX_EPHEMERAL_EVENTS_PER_TRANSACTION = 100 # Maximum number of to-device messages to provide in an AS transaction. MAX_TO_DEVICE_MESSAGES_PER_TRANSACTION = 100 class ApplicationServiceScheduler: """Public facing API for this module. Does the required DI to tie the components together. This also serves as the "event_pool", which in this case is a simple array. """ def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.store = hs.get_datastores().main self.as_api = hs.get_application_service_api() self.txn_ctrl = _TransactionController(self.clock, self.store, self.as_api) self.queuer = _ServiceQueuer(self.txn_ctrl, self.clock, hs) async def start(self) -> None: logger.info("Starting appservice scheduler") # check for any DOWN ASes and start recoverers for them. services = await self.store.get_appservices_by_state( ApplicationServiceState.DOWN ) for service in services: self.txn_ctrl.start_recoverer(service) def enqueue_for_appservice( self, appservice: ApplicationService, events: Optional[Collection[EventBase]] = None, ephemeral: Optional[Collection[JsonMapping]] = None, to_device_messages: Optional[Collection[JsonMapping]] = None, device_list_summary: Optional[DeviceListUpdates] = None, ) -> None: """ Enqueue some data to be sent off to an application service. Args: appservice: The application service to create and send a transaction to. events: The persistent room events to send. ephemeral: The ephemeral events to send. to_device_messages: The to-device messages to send. These differ from normal to-device messages sent to clients, as they have 'to_device_id' and 'to_user_id' fields. device_list_summary: A summary of users that the application service either needs to refresh the device lists of, or those that the application service need no longer track the device lists of. """ # We purposefully allow this method to run with empty events/ephemeral # collections, so that callers do not need to check iterable size themselves. if ( not events and not ephemeral and not to_device_messages and not device_list_summary ): return if events: self.queuer.queued_events.setdefault(appservice.id, []).extend(events) if ephemeral: self.queuer.queued_ephemeral.setdefault(appservice.id, []).extend(ephemeral) if to_device_messages: self.queuer.queued_to_device_messages.setdefault(appservice.id, []).extend( to_device_messages ) if device_list_summary: self.queuer.queued_device_list_summaries.setdefault( appservice.id, [] ).append(device_list_summary) # Kick off a new application service transaction self.queuer.start_background_request(appservice) class _ServiceQueuer: """Queue of events waiting to be sent to appservices. Groups events into transactions per-appservice, and sends them on to the TransactionController. Makes sure that we only have one transaction in flight per appservice at a given time. """ def __init__( self, txn_ctrl: "_TransactionController", clock: Clock, hs: "HomeServer" ): # dict of {service_id: [events]} self.queued_events: Dict[str, List[EventBase]] = {} # dict of {service_id: [events]} self.queued_ephemeral: Dict[str, List[JsonMapping]] = {} # dict of {service_id: [to_device_message_json]} self.queued_to_device_messages: Dict[str, List[JsonMapping]] = {} # dict of {service_id: [device_list_summary]} self.queued_device_list_summaries: Dict[str, List[DeviceListUpdates]] = {} # the appservices which currently have a transaction in flight self.requests_in_flight: Set[str] = set() self.txn_ctrl = txn_ctrl self.clock = clock self._msc3202_transaction_extensions_enabled: bool = ( hs.config.experimental.msc3202_transaction_extensions ) self._store = hs.get_datastores().main def start_background_request(self, service: ApplicationService) -> None: # start a sender for this appservice if we don't already have one if service.id in self.requests_in_flight: return run_as_background_process("as-sender", self._send_request, service) async def _send_request(self, service: ApplicationService) -> None: # sanity-check: we shouldn't get here if this service already has a sender # running. assert service.id not in self.requests_in_flight self.requests_in_flight.add(service.id) try: while True: all_events = self.queued_events.get(service.id, []) events = all_events[:MAX_PERSISTENT_EVENTS_PER_TRANSACTION] del all_events[:MAX_PERSISTENT_EVENTS_PER_TRANSACTION] all_events_ephemeral = self.queued_ephemeral.get(service.id, []) ephemeral = all_events_ephemeral[:MAX_EPHEMERAL_EVENTS_PER_TRANSACTION] del all_events_ephemeral[:MAX_EPHEMERAL_EVENTS_PER_TRANSACTION] all_to_device_messages = self.queued_to_device_messages.get( service.id, [] ) to_device_messages_to_send = all_to_device_messages[ :MAX_TO_DEVICE_MESSAGES_PER_TRANSACTION ] del all_to_device_messages[:MAX_TO_DEVICE_MESSAGES_PER_TRANSACTION] # Consolidate any pending device list summaries into a single, up-to-date # summary. # Note: this code assumes that in a single DeviceListUpdates, a user will # never be in both "changed" and "left" sets. device_list_summary = DeviceListUpdates() for summary in self.queued_device_list_summaries.get(service.id, []): # For every user in the incoming "changed" set: # * Remove them from the existing "left" set if necessary # (as we need to start tracking them again) # * Add them to the existing "changed" set if necessary. device_list_summary.left.difference_update(summary.changed) device_list_summary.changed.update(summary.changed) # For every user in the incoming "left" set: # * Remove them from the existing "changed" set if necessary # (we no longer need to track them) # * Add them to the existing "left" set if necessary. device_list_summary.changed.difference_update(summary.left) device_list_summary.left.update(summary.left) self.queued_device_list_summaries.clear() if ( not events and not ephemeral and not to_device_messages_to_send # DeviceListUpdates is True if either the 'changed' or 'left' sets have # at least one entry, otherwise False and not device_list_summary ): return one_time_keys_count: Optional[TransactionOneTimeKeysCount] = None unused_fallback_keys: Optional[TransactionUnusedFallbackKeys] = None if ( self._msc3202_transaction_extensions_enabled and service.msc3202_transaction_extensions ): # Compute the one-time key counts and fallback key usage states # for the users which are mentioned in this transaction, # as well as the appservice's sender. ( one_time_keys_count, unused_fallback_keys, ) = await self._compute_msc3202_otk_counts_and_fallback_keys( service, events, ephemeral, to_device_messages_to_send ) try: await self.txn_ctrl.send( service, events, ephemeral, to_device_messages_to_send, one_time_keys_count, unused_fallback_keys, device_list_summary, ) except Exception: logger.exception("AS request failed") finally: self.requests_in_flight.discard(service.id) async def _compute_msc3202_otk_counts_and_fallback_keys( self, service: ApplicationService, events: Iterable[EventBase], ephemerals: Iterable[JsonMapping], to_device_messages: Iterable[JsonMapping], ) -> Tuple[TransactionOneTimeKeysCount, TransactionUnusedFallbackKeys]: """ Given a list of the events, ephemeral messages and to-device messages, - first computes a list of application services users that may have interesting updates to the one-time key counts or fallback key usage. - then computes one-time key counts and fallback key usages for those users. Given a list of application service users that are interesting, compute one-time key counts and fallback key usages for the users. """ # Set of 'interesting' users who may have updates users: Set[str] = set() # The sender is always included users.add(service.sender) # All AS users that would receive the PDUs or EDUs sent to these rooms # are classed as 'interesting'. rooms_of_interesting_users: Set[str] = set() # PDUs rooms_of_interesting_users.update(event.room_id for event in events) # EDUs rooms_of_interesting_users.update( ephemeral["room_id"] for ephemeral in ephemerals if ephemeral.get("room_id") is not None ) # Look up the AS users in those rooms for room_id in rooms_of_interesting_users: users.update( await self._store.get_app_service_users_in_room(room_id, service) ) # Add recipients of to-device messages. users.update( device_message["to_user_id"] for device_message in to_device_messages ) # Compute and return the counts / fallback key usage states otk_counts = await self._store.count_bulk_e2e_one_time_keys_for_as(users) unused_fbks = await self._store.get_e2e_bulk_unused_fallback_key_types(users) return otk_counts, unused_fbks class _TransactionController: """Transaction manager. Builds AppServiceTransactions and runs their lifecycle. Also starts a Recoverer if a transaction fails. (Note we have only have one of these in the homeserver.) """ def __init__(self, clock: Clock, store: DataStore, as_api: ApplicationServiceApi): self.clock = clock self.store = store self.as_api = as_api # map from service id to recoverer instance self.recoverers: Dict[str, "_Recoverer"] = {} # for UTs self.RECOVERER_CLASS = _Recoverer async def send( self, service: ApplicationService, events: Sequence[EventBase], ephemeral: Optional[List[JsonMapping]] = None, to_device_messages: Optional[List[JsonMapping]] = None, one_time_keys_count: Optional[TransactionOneTimeKeysCount] = None, unused_fallback_keys: Optional[TransactionUnusedFallbackKeys] = None, device_list_summary: Optional[DeviceListUpdates] = None, ) -> None: """ Create a transaction with the given data and send to the provided application service. Args: service: The application service to send the transaction to. events: The persistent events to include in the transaction. ephemeral: The ephemeral events to include in the transaction. to_device_messages: The to-device messages to include in the transaction. one_time_keys_count: Counts of remaining one-time keys for relevant appservice devices in the transaction. unused_fallback_keys: Lists of unused fallback keys for relevant appservice devices in the transaction. device_list_summary: The device list summary to include in the transaction. """ try: service_is_up = await self._is_service_up(service) # Don't create empty txns when in recovery mode (ephemeral events are dropped) if not service_is_up and not events: return txn = await self.store.create_appservice_txn( service=service, events=events, ephemeral=ephemeral or [], to_device_messages=to_device_messages or [], one_time_keys_count=one_time_keys_count or {}, unused_fallback_keys=unused_fallback_keys or {}, device_list_summary=device_list_summary or DeviceListUpdates(), ) if service_is_up: sent = await txn.send(self.as_api) if sent: await txn.complete(self.store) else: run_in_background(self._on_txn_fail, service) except Exception: logger.exception("Error creating appservice transaction") run_in_background(self._on_txn_fail, service) async def on_recovered(self, recoverer: "_Recoverer") -> None: logger.info( "Successfully recovered application service AS ID %s", recoverer.service.id ) self.recoverers.pop(recoverer.service.id) logger.info("Remaining active recoverers: %s", len(self.recoverers)) await self.store.set_appservice_state( recoverer.service, ApplicationServiceState.UP ) async def _on_txn_fail(self, service: ApplicationService) -> None: try: await self.store.set_appservice_state(service, ApplicationServiceState.DOWN) self.start_recoverer(service) except Exception: logger.exception("Error starting AS recoverer") def start_recoverer(self, service: ApplicationService) -> None: """Start a Recoverer for the given service Args: service: """ logger.info("Starting recoverer for AS ID %s", service.id) assert service.id not in self.recoverers recoverer = self.RECOVERER_CLASS( self.clock, self.store, self.as_api, service, self.on_recovered ) self.recoverers[service.id] = recoverer recoverer.recover() logger.info("Now %i active recoverers", len(self.recoverers)) async def _is_service_up(self, service: ApplicationService) -> bool: state = await self.store.get_appservice_state(service) return state == ApplicationServiceState.UP or state is None class _Recoverer: """Manages retries and backoff for a DOWN appservice. We have one of these for each appservice which is currently considered DOWN. Args: clock (synapse.util.Clock): store (synapse.storage.DataStore): as_api (synapse.appservice.api.ApplicationServiceApi): service (synapse.appservice.ApplicationService): the service we are managing callback (callable[_Recoverer]): called once the service recovers. """ def __init__( self, clock: Clock, store: DataStore, as_api: ApplicationServiceApi, service: ApplicationService, callback: Callable[["_Recoverer"], Awaitable[None]], ): self.clock = clock self.store = store self.as_api = as_api self.service = service self.callback = callback self.backoff_counter = 1 def recover(self) -> None: delay = 2**self.backoff_counter logger.info("Scheduling retries on %s in %fs", self.service.id, delay) self.clock.call_later( delay, run_as_background_process, "as-recoverer", self.retry ) def _backoff(self) -> None: # cap the backoff to be around 8.5min => (2^9) = 512 secs if self.backoff_counter < 9: self.backoff_counter += 1 self.recover() async def retry(self) -> None: logger.info("Starting retries on %s", self.service.id) try: while True: txn = await self.store.get_oldest_unsent_txn(self.service) if not txn: # nothing left: we're done! await self.callback(self) return logger.info( "Retrying transaction %s for AS ID %s", txn.id, txn.service.id ) sent = await txn.send(self.as_api) if not sent: break await txn.complete(self.store) # reset the backoff counter and then process the next transaction self.backoff_counter = 1 except Exception: logger.exception("Unexpected error running retries") # we didn't manage to send all of the transactions before we got an error of # some flavour: reschedule the next retry. self._backoff() synapse-1.100.0/synapse/config/000077500000000000000000000000001455622526000162715ustar00rootroot00000000000000synapse-1.100.0/synapse/config/__init__.py000066400000000000000000000016601455622526000204050ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from ._base import ConfigError, find_config_files # export ConfigError and find_config_files if somebody does # import * # this is largely a fudge to stop PEP8 moaning about the import __all__ = ["ConfigError", "find_config_files"] synapse-1.100.0/synapse/config/__main__.py000066400000000000000000000037001455622526000203630ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import sys from typing import List from synapse.config._base import ConfigError from synapse.config.homeserver import HomeServerConfig def main(args: List[str]) -> None: action = args[1] if len(args) > 1 and args[1] == "read" else None # If we're reading a key in the config file, then `args[1]` will be `read` and `args[2]` # will be the key to read. # We'll want to rework this code if we want to support more actions than just `read`. load_config_args = args[3:] if action else args[1:] try: config = HomeServerConfig.load_config("", load_config_args) except ConfigError as e: sys.stderr.write("\n" + str(e) + "\n") sys.exit(1) print("Config parses OK!") if action == "read": key = args[2] key_parts = key.split(".") value = config try: while len(key_parts): value = getattr(value, key_parts[0]) key_parts.pop(0) print(f"\n{key}: {value}") except AttributeError: print( f"\nNo '{key}' key could be found in the provided configuration file." ) sys.exit(1) if __name__ == "__main__": main(sys.argv) synapse-1.100.0/synapse/config/_base.py000066400000000000000000001073061455622526000177230ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import errno import logging import os import re from collections import OrderedDict from enum import Enum, auto from hashlib import sha256 from textwrap import dedent from typing import ( Any, ClassVar, Dict, Iterable, Iterator, List, MutableMapping, Optional, Tuple, Type, TypeVar, Union, ) import attr import jinja2 import pkg_resources import yaml from synapse.types import StrSequence from synapse.util.templates import _create_mxc_to_http_filter, _format_ts_filter logger = logging.getLogger(__name__) class ConfigError(Exception): """Represents a problem parsing the configuration Args: msg: A textual description of the error. path: Where appropriate, an indication of where in the configuration the problem lies. """ def __init__(self, msg: str, path: Optional[StrSequence] = None): self.msg = msg self.path = path def format_config_error(e: ConfigError) -> Iterator[str]: """ Formats a config error neatly The idea is to format the immediate error, plus the "causes" of those errors, hopefully in a way that makes sense to the user. For example: Error in configuration at 'oidc_config.user_mapping_provider.config.display_name_template': Failed to parse config for module 'JinjaOidcMappingProvider': invalid jinja template: unexpected end of template, expected 'end of print statement'. Args: e: the error to be formatted Returns: An iterator which yields string fragments to be formatted """ yield "Error in configuration" if e.path: yield " at '%s'" % (".".join(e.path),) yield ":\n %s" % (e.msg,) parent_e = e.__cause__ indent = 1 while parent_e: indent += 1 yield ":\n%s%s" % (" " * indent, str(parent_e)) parent_e = parent_e.__cause__ # We split these messages out to allow packages to override with package # specific instructions. MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS = """\ Please opt in or out of reporting homeserver usage statistics, by setting the `report_stats` key in your config file to either True or False. """ MISSING_REPORT_STATS_SPIEL = """\ We would really appreciate it if you could help our project out by reporting homeserver usage statistics from your homeserver. Your homeserver's server name, along with very basic aggregate data (e.g. number of users) will be reported. But it helps us to track the growth of the Matrix community, and helps us to make Matrix a success, as well as to convince other networks that they should peer with us. Thank you. """ MISSING_SERVER_NAME = """\ Missing mandatory `server_name` config option. """ CONFIG_FILE_HEADER = """\ # Configuration file for Synapse. # # This is a YAML file: see [1] for a quick introduction. Note in particular # that *indentation is important*: all the elements of a list or dictionary # should have the same indentation. # # [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html # # For more information on how to configure Synapse, including a complete accounting of # each option, go to docs/usage/configuration/config_documentation.md or # https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html """ def path_exists(file_path: str) -> bool: """Check if a file exists Unlike os.path.exists, this throws an exception if there is an error checking if the file exists (for example, if there is a perms error on the parent dir). Returns: True if the file exists; False if not. """ try: os.stat(file_path) return True except OSError as e: if e.errno != errno.ENOENT: raise e return False class Config: """ A configuration section, containing configuration keys and values. Attributes: section: The section title of this config object, such as "tls" or "logger". This is used to refer to it on the root logger (for example, `config.tls.some_option`). Must be defined in subclasses. """ section: ClassVar[str] def __init__(self, root_config: "RootConfig" = None): self.root = root_config # Get the path to the default Synapse template directory self.default_template_dir = pkg_resources.resource_filename( "synapse", "res/templates" ) @staticmethod def parse_size(value: Union[str, int]) -> int: """Interpret `value` as a number of bytes. If an integer is provided it is treated as bytes and is unchanged. String byte sizes can have a suffix of 'K', `M`, `G` or `T`, representing kibibytes, mebibytes, gibibytes and tebibytes respectively. No suffix is understood as a plain byte count. Raises: TypeError, if given something other than an integer or a string ValueError: if given a string not of the form described above. """ if type(value) is int: # noqa: E721 return value elif isinstance(value, str): sizes = {"K": 1024, "M": 1024 * 1024, "G": 1024**3, "T": 1024**4} size = 1 suffix = value[-1] if suffix in sizes: value = value[:-1] size = sizes[suffix] return int(value) * size else: raise TypeError(f"Bad byte size {value!r}") @staticmethod def parse_duration(value: Union[str, int]) -> int: """Convert a duration as a string or integer to a number of milliseconds. If an integer is provided it is treated as milliseconds and is unchanged. String durations can have a suffix of 's', 'm', 'h', 'd', 'w', or 'y'. No suffix is treated as milliseconds. Args: value: The duration to parse. Returns: The number of milliseconds in the duration. Raises: TypeError, if given something other than an integer or a string ValueError: if given a string not of the form described above. """ if type(value) is int: # noqa: E721 return value elif isinstance(value, str): second = 1000 minute = 60 * second hour = 60 * minute day = 24 * hour week = 7 * day year = 365 * day sizes = { "s": second, "m": minute, "h": hour, "d": day, "w": week, "y": year, } size = 1 suffix = value[-1] if suffix in sizes: value = value[:-1] size = sizes[suffix] return int(value) * size else: raise TypeError(f"Bad duration {value!r}") @staticmethod def abspath(file_path: str) -> str: return os.path.abspath(file_path) if file_path else file_path @classmethod def path_exists(cls, file_path: str) -> bool: return path_exists(file_path) @classmethod def check_file(cls, file_path: Optional[str], config_name: str) -> str: if file_path is None: raise ConfigError("Missing config for %s." % (config_name,)) try: os.stat(file_path) except OSError as e: raise ConfigError( "Error accessing file '%s' (config for %s): %s" % (file_path, config_name, e.strerror) ) return cls.abspath(file_path) @classmethod def ensure_directory(cls, dir_path: str) -> str: dir_path = cls.abspath(dir_path) os.makedirs(dir_path, exist_ok=True) if not os.path.isdir(dir_path): raise ConfigError("%s is not a directory" % (dir_path,)) return dir_path @classmethod def read_file(cls, file_path: Any, config_name: str) -> str: """Deprecated: call read_file directly""" return read_file(file_path, (config_name,)) def read_template(self, filename: str) -> jinja2.Template: """Load a template file from disk. This function will attempt to load the given template from the default Synapse template directory. Files read are treated as Jinja templates. The templates is not rendered yet and has autoescape enabled. Args: filename: A template filename to read. Raises: ConfigError: if the file's path is incorrect or otherwise cannot be read. Returns: A jinja2 template. """ return self.read_templates([filename])[0] def read_templates( self, filenames: List[str], custom_template_directories: Optional[Iterable[str]] = None, ) -> List[jinja2.Template]: """Load a list of template files from disk using the given variables. This function will attempt to load the given templates from the default Synapse template directory. If `custom_template_directories` is supplied, any directory in this list is tried (in the order they appear in the list) before trying Synapse's default directory. Files read are treated as Jinja templates. The templates are not rendered yet and have autoescape enabled. Args: filenames: A list of template filenames to read. custom_template_directories: A list of directory to try to look for the templates before using the default Synapse template directory instead. Raises: ConfigError: if the file's path is incorrect or otherwise cannot be read. Returns: A list of jinja2 templates. """ search_directories = [] # The loader will first look in the custom template directories (if specified) # for the given filename. If it doesn't find it, it will use the default # template dir instead. if custom_template_directories is not None: for custom_template_directory in custom_template_directories: # Check that the given template directory exists if not self.path_exists(custom_template_directory): raise ConfigError( "Configured template directory does not exist: %s" % (custom_template_directory,) ) # Search the custom template directory as well search_directories.append(custom_template_directory) # Append the default directory at the end of the list so Jinja can fallback on it # if a template is missing from any custom directory. search_directories.append(self.default_template_dir) # TODO: switch to synapse.util.templates.build_jinja_env loader = jinja2.FileSystemLoader(search_directories) env = jinja2.Environment( loader=loader, autoescape=jinja2.select_autoescape(), ) # Update the environment with our custom filters env.filters.update( { "format_ts": _format_ts_filter, "mxc_to_http": _create_mxc_to_http_filter( self.root.server.public_baseurl ), } ) # Load the templates return [env.get_template(filename) for filename in filenames] TRootConfig = TypeVar("TRootConfig", bound="RootConfig") class RootConfig: """ Holder of an application's configuration. What configuration this object holds is defined by `config_classes`, a list of Config classes that will be instantiated and given the contents of a configuration file to read. They can then be accessed on this class by their section name, defined in the Config or dynamically set to be the name of the class, lower-cased and with "Config" removed. """ config_classes: List[Type[Config]] = [] def __init__(self, config_files: StrSequence = ()): # Capture absolute paths here, so we can reload config after we daemonize. self.config_files = [os.path.abspath(path) for path in config_files] for config_class in self.config_classes: if config_class.section is None: raise ValueError("%r requires a section name" % (config_class,)) try: conf = config_class(self) except Exception as e: raise Exception("Failed making %s: %r" % (config_class.section, e)) setattr(self, config_class.section, conf) def invoke_all( self, func_name: str, *args: Any, **kwargs: Any ) -> MutableMapping[str, Any]: """ Invoke a function on all instantiated config objects this RootConfig is configured to use. Args: func_name: Name of function to invoke *args **kwargs Returns: ordered dictionary of config section name and the result of the function from it. """ res = OrderedDict() for config_class in self.config_classes: config = getattr(self, config_class.section) if hasattr(config, func_name): res[config_class.section] = getattr(config, func_name)(*args, **kwargs) return res @classmethod def invoke_all_static(cls, func_name: str, *args: Any, **kwargs: any) -> None: """ Invoke a static function on config objects this RootConfig is configured to use. Args: func_name: Name of function to invoke *args **kwargs Returns: ordered dictionary of config section name and the result of the function from it. """ for config in cls.config_classes: if hasattr(config, func_name): getattr(config, func_name)(*args, **kwargs) def generate_config( self, config_dir_path: str, data_dir_path: str, server_name: str, generate_secrets: bool = False, report_stats: Optional[bool] = None, open_private_ports: bool = False, listeners: Optional[List[dict]] = None, tls_certificate_path: Optional[str] = None, tls_private_key_path: Optional[str] = None, ) -> str: """ Build a default configuration file This is used when the user explicitly asks us to generate a config file (eg with --generate-config). Args: config_dir_path: The path where the config files are kept. Used to create filenames for things like the log config and the signing key. data_dir_path: The path where the data files are kept. Used to create filenames for things like the database and media store. server_name: The server name. Used to initialise the server_name config param, but also used in the names of some of the config files. generate_secrets: True if we should generate new secrets for things like the macaroon_secret_key. If False, these parameters will be left unset. report_stats: Initial setting for the report_stats setting. If None, report_stats will be left unset. open_private_ports: True to leave private ports (such as the non-TLS HTTP listener) open to the internet. listeners: A list of descriptions of the listeners synapse should start with each of which specifies a port (int), a list of resources (list(str)), tls (bool) and type (str). For example: [{ "port": 8448, "resources": [{"names": ["federation"]}], "tls": True, "type": "http", }, { "port": 443, "resources": [{"names": ["client"]}], "tls": False, "type": "http", }], tls_certificate_path: The path to the tls certificate. tls_private_key_path: The path to the tls private key. Returns: The yaml config file """ conf = CONFIG_FILE_HEADER + "\n".join( dedent(conf) for conf in self.invoke_all( "generate_config_section", config_dir_path=config_dir_path, data_dir_path=data_dir_path, server_name=server_name, generate_secrets=generate_secrets, report_stats=report_stats, open_private_ports=open_private_ports, listeners=listeners, tls_certificate_path=tls_certificate_path, tls_private_key_path=tls_private_key_path, ).values() ) conf = re.sub("\n{2,}", "\n", conf) return conf @classmethod def load_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> TRootConfig: """Parse the commandline and config files Doesn't support config-file-generation: used by the worker apps. Returns: Config object. """ config_parser = argparse.ArgumentParser(description=description) cls.add_arguments_to_parser(config_parser) obj, _ = cls.load_config_with_parser(config_parser, argv) return obj @classmethod def add_arguments_to_parser(cls, config_parser: argparse.ArgumentParser) -> None: """Adds all the config flags to an ArgumentParser. Doesn't support config-file-generation: used by the worker apps. Used for workers where we want to add extra flags/subcommands. Args: config_parser: App description """ config_parser.add_argument( "-c", "--config-path", action="append", metavar="CONFIG_FILE", help="Specify config file. Can be given multiple times and" " may specify directories containing *.yaml files.", ) config_parser.add_argument( "--keys-directory", metavar="DIRECTORY", help="Where files such as certs and signing keys are stored when" " their location is not given explicitly in the config." " Defaults to the directory containing the last config file", ) cls.invoke_all_static("add_arguments", config_parser) @classmethod def load_config_with_parser( cls: Type[TRootConfig], parser: argparse.ArgumentParser, argv: List[str] ) -> Tuple[TRootConfig, argparse.Namespace]: """Parse the commandline and config files with the given parser Doesn't support config-file-generation: used by the worker apps. Used for workers where we want to add extra flags/subcommands. Args: parser argv Returns: Returns the parsed config object and the parsed argparse.Namespace object from parser.parse_args(..)` """ config_args = parser.parse_args(argv) config_files = find_config_files(search_paths=config_args.config_path) obj = cls(config_files) if not config_files: parser.error("Must supply a config file.") if config_args.keys_directory: config_dir_path = config_args.keys_directory else: config_dir_path = os.path.dirname(config_files[-1]) config_dir_path = os.path.abspath(config_dir_path) data_dir_path = os.getcwd() config_dict = read_config_files(config_files) obj.parse_config_dict( config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path ) obj.invoke_all("read_arguments", config_args) return obj, config_args @classmethod def load_or_generate_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> Optional[TRootConfig]: """Parse the commandline and config files Supports generation of config files, so is used for the main homeserver app. Returns: Config object, or None if --generate-config or --generate-keys was set """ parser = argparse.ArgumentParser(description=description) parser.add_argument( "-c", "--config-path", action="append", metavar="CONFIG_FILE", help="Specify config file. Can be given multiple times and" " may specify directories containing *.yaml files.", ) # we nest the mutually-exclusive group inside another group so that the help # text shows them in their own group. generate_mode_group = parser.add_argument_group( "Config generation mode", ) generate_mode_exclusive = generate_mode_group.add_mutually_exclusive_group() generate_mode_exclusive.add_argument( # hidden option to make the type and default work "--generate-mode", help=argparse.SUPPRESS, type=_ConfigGenerateMode, default=_ConfigGenerateMode.GENERATE_MISSING_AND_RUN, ) generate_mode_exclusive.add_argument( "--generate-config", help="Generate a config file, then exit.", action="store_const", const=_ConfigGenerateMode.GENERATE_EVERYTHING_AND_EXIT, dest="generate_mode", ) generate_mode_exclusive.add_argument( "--generate-missing-configs", "--generate-keys", help="Generate any missing additional config files, then exit.", action="store_const", const=_ConfigGenerateMode.GENERATE_MISSING_AND_EXIT, dest="generate_mode", ) generate_mode_exclusive.add_argument( "--generate-missing-and-run", help="Generate any missing additional config files, then run. This is the " "default behaviour.", action="store_const", const=_ConfigGenerateMode.GENERATE_MISSING_AND_RUN, dest="generate_mode", ) generate_group = parser.add_argument_group("Details for --generate-config") generate_group.add_argument( "-H", "--server-name", help="The server name to generate a config file for." ) generate_group.add_argument( "--report-stats", action="store", help="Whether the generated config reports homeserver usage statistics.", choices=["yes", "no"], ) generate_group.add_argument( "--config-directory", "--keys-directory", metavar="DIRECTORY", help=( "Specify where additional config files such as signing keys and log" " config should be stored. Defaults to the same directory as the last" " config file." ), ) generate_group.add_argument( "--data-directory", metavar="DIRECTORY", help=( "Specify where data such as the media store and database file should be" " stored. Defaults to the current working directory." ), ) generate_group.add_argument( "--open-private-ports", action="store_true", help=( "Leave private ports (such as the non-TLS HTTP listener) open to the" " internet. Do not use this unless you know what you are doing." ), ) cls.invoke_all_static("add_arguments", parser) config_args = parser.parse_args(argv) config_files = find_config_files(search_paths=config_args.config_path) if not config_files: parser.error( "Must supply a config file.\nA config file can be automatically" ' generated using "--generate-config -H SERVER_NAME' ' -c CONFIG-FILE"' ) if config_args.config_directory: config_dir_path = config_args.config_directory else: config_dir_path = os.path.dirname(config_files[-1]) config_dir_path = os.path.abspath(config_dir_path) data_dir_path = os.getcwd() obj = cls(config_files) if ( config_args.generate_mode == _ConfigGenerateMode.GENERATE_EVERYTHING_AND_EXIT ): if config_args.report_stats is None: parser.error( "Please specify either --report-stats=yes or --report-stats=no\n\n" + MISSING_REPORT_STATS_SPIEL ) (config_path,) = config_files if not path_exists(config_path): print("Generating config file %s" % (config_path,)) if config_args.data_directory: data_dir_path = config_args.data_directory else: data_dir_path = os.getcwd() data_dir_path = os.path.abspath(data_dir_path) server_name = config_args.server_name if not server_name: raise ConfigError( "Must specify a server_name to a generate config for." " Pass -H server.name." ) config_str = obj.generate_config( config_dir_path=config_dir_path, data_dir_path=data_dir_path, server_name=server_name, report_stats=(config_args.report_stats == "yes"), generate_secrets=True, open_private_ports=config_args.open_private_ports, ) os.makedirs(config_dir_path, exist_ok=True) with open(config_path, "w") as config_file: config_file.write(config_str) config_file.write("\n\n# vim:ft=yaml") config_dict = yaml.safe_load(config_str) obj.generate_missing_files(config_dict, config_dir_path) print( ( "A config file has been generated in %r for server name" " %r. Please review this file and customise it" " to your needs." ) % (config_path, server_name) ) return else: print( ( "Config file %r already exists. Generating any missing config" " files." ) % (config_path,) ) config_dict = read_config_files(config_files) obj.generate_missing_files(config_dict, config_dir_path) if config_args.generate_mode in ( _ConfigGenerateMode.GENERATE_EVERYTHING_AND_EXIT, _ConfigGenerateMode.GENERATE_MISSING_AND_EXIT, ): return None obj.parse_config_dict( config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path ) obj.invoke_all("read_arguments", config_args) return obj def parse_config_dict( self, config_dict: Dict[str, Any], config_dir_path: str, data_dir_path: str ) -> None: """Read the information from the config dict into this Config object. Args: config_dict: Configuration data, as read from the yaml config_dir_path: The path where the config files are kept. Used to create filenames for things like the log config and the signing key. data_dir_path: The path where the data files are kept. Used to create filenames for things like the database and media store. """ self.invoke_all( "read_config", config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path, ) def generate_missing_files( self, config_dict: Dict[str, Any], config_dir_path: str ) -> None: self.invoke_all("generate_files", config_dict, config_dir_path) def reload_config_section(self, section_name: str) -> Config: """Reconstruct the given config section, leaving all others unchanged. This works in three steps: 1. Create a new instance of the relevant `Config` subclass. 2. Call `read_config` on that instance to parse the new config. 3. Replace the existing config instance with the new one. :raises ValueError: if the given `section` does not exist. :raises ConfigError: for any other problems reloading config. :returns: the previous config object, which no longer has a reference to this RootConfig. """ existing_config: Optional[Config] = getattr(self, section_name, None) if existing_config is None: raise ValueError(f"Unknown config section '{section_name}'") logger.info("Reloading config section '%s'", section_name) new_config_data = read_config_files(self.config_files) new_config = type(existing_config)(self) new_config.read_config(new_config_data) setattr(self, section_name, new_config) existing_config.root = None return existing_config def read_config_files(config_files: Iterable[str]) -> Dict[str, Any]: """Read the config files into a dict Args: config_files: A list of the config files to read Returns: The configuration dictionary. """ specified_config = {} for config_file in config_files: with open(config_file) as file_stream: yaml_config = yaml.safe_load(file_stream) if not isinstance(yaml_config, dict): err = "File %r is empty or doesn't parse into a key-value map. IGNORING." print(err % (config_file,)) continue specified_config.update(yaml_config) if "server_name" not in specified_config: raise ConfigError(MISSING_SERVER_NAME) if "report_stats" not in specified_config: raise ConfigError( MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS + "\n" + MISSING_REPORT_STATS_SPIEL ) return specified_config def find_config_files(search_paths: List[str]) -> List[str]: """Finds config files using a list of search paths. If a path is a file then that file path is added to the list. If a search path is a directory then all the "*.yaml" files in that directory are added to the list in sorted order. Args: search_paths: A list of paths to search. Returns: A list of file paths. """ config_files = [] if search_paths: for config_path in search_paths: if os.path.isdir(config_path): # We accept specifying directories as config paths, we search # inside that directory for all files matching *.yaml, and then # we apply them in *sorted* order. files = [] for entry in os.listdir(config_path): entry_path = os.path.join(config_path, entry) if not os.path.isfile(entry_path): err = "Found subdirectory in config directory: %r. IGNORING." print(err % (entry_path,)) continue if not entry.endswith(".yaml"): err = ( "Found file in config directory that does not end in " "'.yaml': %r. IGNORING." ) print(err % (entry_path,)) continue files.append(entry_path) config_files.extend(sorted(files)) else: config_files.append(config_path) return config_files @attr.s(auto_attribs=True) class ShardedWorkerHandlingConfig: """Algorithm for choosing which instance is responsible for handling some sharded work. For example, the federation senders use this to determine which instances handles sending stuff to a given destination (which is used as the `key` below). """ instances: List[str] def should_handle(self, instance_name: str, key: str) -> bool: """Whether this instance is responsible for handling the given key.""" # If no instances are defined we assume some other worker is handling # this. if not self.instances: return False return self._get_instance(key) == instance_name def _get_instance(self, key: str) -> str: """Get the instance responsible for handling the given key. Note: For federation sending and pushers the config for which instance is sending is known only to the sender instance, so we don't expose this method by default. """ if not self.instances: raise Exception("Unknown worker") if len(self.instances) == 1: return self.instances[0] # We shard by taking the hash, modulo it by the number of instances and # then checking whether this instance matches the instance at that # index. # # (Technically this introduces some bias and is not entirely uniform, # but since the hash is so large the bias is ridiculously small). dest_hash = sha256(key.encode("utf8")).digest() dest_int = int.from_bytes(dest_hash, byteorder="little") remainder = dest_int % (len(self.instances)) return self.instances[remainder] @attr.s class RoutableShardedWorkerHandlingConfig(ShardedWorkerHandlingConfig): """A version of `ShardedWorkerHandlingConfig` that is used for config options where all instances know which instances are responsible for the sharded work. """ def __attrs_post_init__(self): # We require that `self.instances` is non-empty. if not self.instances: raise Exception("Got empty list of instances for shard config") def get_instance(self, key: str) -> str: """Get the instance responsible for handling the given key.""" return self._get_instance(key) def read_file(file_path: Any, config_path: Iterable[str]) -> str: """Check the given file exists, and read it into a string If it does not, emit an error indicating the problem Args: file_path: the file to be read config_path: where in the configuration file_path came from, so that a useful error can be emitted if it does not exist. Returns: content of the file. Raises: ConfigError if there is a problem reading the file. """ if not isinstance(file_path, str): raise ConfigError("%r is not a string", config_path) try: os.stat(file_path) with open(file_path) as file_stream: return file_stream.read() except OSError as e: raise ConfigError("Error accessing file %r" % (file_path,), config_path) from e class _ConfigGenerateMode(Enum): GENERATE_MISSING_AND_RUN = auto() GENERATE_MISSING_AND_EXIT = auto() GENERATE_EVERYTHING_AND_EXIT = auto() __all__ = [ "Config", "RootConfig", "ShardedWorkerHandlingConfig", "RoutableShardedWorkerHandlingConfig", "read_file", ] synapse-1.100.0/synapse/config/_base.pyi000066400000000000000000000140501455622526000200650ustar00rootroot00000000000000import argparse from typing import ( Any, Collection, Dict, Iterable, Iterator, List, Literal, MutableMapping, Optional, Tuple, Type, TypeVar, Union, overload, ) import jinja2 from synapse.config import ( # noqa: F401 account_validity, api, appservice, auth, background_updates, cache, captcha, cas, consent, database, emailconfig, experimental, federation, jwt, key, logger, metrics, modules, oembed, oidc, password_auth_providers, push, ratelimiting, redis, registration, repository, retention, room, room_directory, saml2, server, server_notices, spam_checker, sso, stats, third_party_event_rules, tls, tracer, user_directory, voip, workers, ) from synapse.types import StrSequence class ConfigError(Exception): def __init__(self, msg: str, path: Optional[StrSequence] = None): self.msg = msg self.path = path def format_config_error(e: ConfigError) -> Iterator[str]: ... MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS: str MISSING_REPORT_STATS_SPIEL: str MISSING_SERVER_NAME: str def path_exists(file_path: str) -> bool: ... TRootConfig = TypeVar("TRootConfig", bound="RootConfig") class RootConfig: server: server.ServerConfig experimental: experimental.ExperimentalConfig tls: tls.TlsConfig database: database.DatabaseConfig logging: logger.LoggingConfig ratelimiting: ratelimiting.RatelimitConfig media: repository.ContentRepositoryConfig oembed: oembed.OembedConfig captcha: captcha.CaptchaConfig voip: voip.VoipConfig registration: registration.RegistrationConfig account_validity: account_validity.AccountValidityConfig metrics: metrics.MetricsConfig api: api.ApiConfig appservice: appservice.AppServiceConfig key: key.KeyConfig saml2: saml2.SAML2Config cas: cas.CasConfig sso: sso.SSOConfig oidc: oidc.OIDCConfig jwt: jwt.JWTConfig auth: auth.AuthConfig email: emailconfig.EmailConfig worker: workers.WorkerConfig authproviders: password_auth_providers.PasswordAuthProviderConfig push: push.PushConfig spamchecker: spam_checker.SpamCheckerConfig room: room.RoomConfig userdirectory: user_directory.UserDirectoryConfig consent: consent.ConsentConfig stats: stats.StatsConfig servernotices: server_notices.ServerNoticesConfig roomdirectory: room_directory.RoomDirectoryConfig thirdpartyrules: third_party_event_rules.ThirdPartyRulesConfig tracing: tracer.TracerConfig redis: redis.RedisConfig modules: modules.ModulesConfig caches: cache.CacheConfig federation: federation.FederationConfig retention: retention.RetentionConfig background_updates: background_updates.BackgroundUpdateConfig config_classes: List[Type["Config"]] = ... config_files: List[str] def __init__(self, config_files: Collection[str] = ...) -> None: ... def invoke_all( self, func_name: str, *args: Any, **kwargs: Any ) -> MutableMapping[str, Any]: ... @classmethod def invoke_all_static(cls, func_name: str, *args: Any, **kwargs: Any) -> None: ... def parse_config_dict( self, config_dict: Dict[str, Any], config_dir_path: str, data_dir_path: str ) -> None: ... def generate_config( self, config_dir_path: str, data_dir_path: str, server_name: str, generate_secrets: bool = ..., report_stats: Optional[bool] = ..., open_private_ports: bool = ..., listeners: Optional[Any] = ..., tls_certificate_path: Optional[str] = ..., tls_private_key_path: Optional[str] = ..., ) -> str: ... @classmethod def load_or_generate_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> Optional[TRootConfig]: ... @classmethod def load_config( cls: Type[TRootConfig], description: str, argv: List[str] ) -> TRootConfig: ... @classmethod def add_arguments_to_parser( cls, config_parser: argparse.ArgumentParser ) -> None: ... @classmethod def load_config_with_parser( cls: Type[TRootConfig], parser: argparse.ArgumentParser, argv: List[str] ) -> Tuple[TRootConfig, argparse.Namespace]: ... def generate_missing_files( self, config_dict: dict, config_dir_path: str ) -> None: ... @overload def reload_config_section( self, section_name: Literal["caches"] ) -> cache.CacheConfig: ... @overload def reload_config_section(self, section_name: str) -> "Config": ... class Config: root: RootConfig default_template_dir: str def __init__(self, root_config: Optional[RootConfig] = ...) -> None: ... @staticmethod def parse_size(value: Union[str, int]) -> int: ... @staticmethod def parse_duration(value: Union[str, int]) -> int: ... @staticmethod def abspath(file_path: Optional[str]) -> str: ... @classmethod def path_exists(cls, file_path: str) -> bool: ... @classmethod def check_file(cls, file_path: str, config_name: str) -> str: ... @classmethod def ensure_directory(cls, dir_path: str) -> str: ... @classmethod def read_file(cls, file_path: str, config_name: str) -> str: ... def read_template(self, filenames: str) -> jinja2.Template: ... def read_templates( self, filenames: List[str], custom_template_directories: Optional[Iterable[str]] = None, ) -> List[jinja2.Template]: ... def read_config_files(config_files: Iterable[str]) -> Dict[str, Any]: ... def find_config_files(search_paths: List[str]) -> List[str]: ... class ShardedWorkerHandlingConfig: instances: List[str] def __init__(self, instances: List[str]) -> None: ... def should_handle(self, instance_name: str, key: str) -> bool: ... # noqa: F811 class RoutableShardedWorkerHandlingConfig(ShardedWorkerHandlingConfig): def get_instance(self, key: str) -> str: ... # noqa: F811 def read_file(file_path: Any, config_path: Iterable[str]) -> str: ... synapse-1.100.0/synapse/config/_util.py000066400000000000000000000065571455622526000177740ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar import jsonschema from synapse._pydantic_compat import HAS_PYDANTIC_V2 if TYPE_CHECKING or HAS_PYDANTIC_V2: from pydantic.v1 import BaseModel, ValidationError, parse_obj_as else: from pydantic import BaseModel, ValidationError, parse_obj_as from synapse.config._base import ConfigError from synapse.types import JsonDict, StrSequence def validate_config( json_schema: JsonDict, config: Any, config_path: StrSequence ) -> None: """Validates a config setting against a JsonSchema definition This can be used to validate a section of the config file against a schema definition. If the validation fails, a ConfigError is raised with a textual description of the problem. Args: json_schema: the schema to validate against config: the configuration value to be validated config_path: the path within the config file. This will be used as a basis for the error message. Raises: ConfigError, if validation fails. """ try: jsonschema.validate(config, json_schema) except jsonschema.ValidationError as e: raise json_error_to_config_error(e, config_path) def json_error_to_config_error( e: jsonschema.ValidationError, config_path: StrSequence ) -> ConfigError: """Converts a json validation error to a user-readable ConfigError Args: e: the exception to be converted config_path: the path within the config file. This will be used as a basis for the error message. Returns: a ConfigError """ # copy `config_path` before modifying it. path = list(config_path) for p in list(e.absolute_path): if isinstance(p, int): path.append("" % p) else: path.append(str(p)) return ConfigError(e.message, path) Model = TypeVar("Model", bound=BaseModel) def parse_and_validate_mapping( config: Any, model_type: Type[Model], ) -> Dict[str, Model]: """Parse `config` as a mapping from strings to a given `Model` type. Args: config: The configuration data to check model_type: The BaseModel to validate and parse against. Returns: Fully validated and parsed Dict[str, Model]. Raises: ConfigError, if given improper input. """ try: # type-ignore: mypy doesn't like constructing `Dict[str, model_type]` because # `model_type` is a runtime variable. Pydantic is fine with this. instances = parse_obj_as(Dict[str, model_type], config) # type: ignore[valid-type] except ValidationError as e: raise ConfigError(str(e)) from e return instances synapse-1.100.0/synapse/config/account_validity.py000066400000000000000000000110231455622526000222010ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any from synapse.config._base import Config, ConfigError from synapse.types import JsonDict logger = logging.getLogger(__name__) LEGACY_TEMPLATE_DIR_WARNING = """ This server's configuration file is using the deprecated 'template_dir' setting in the 'account_validity' section. Support for this setting has been deprecated and will be removed in a future version of Synapse. Server admins should instead use the new 'custom_template_directory' setting documented here: https://element-hq.github.io/synapse/latest/templates.html ---------------------------------------------------------------------------------------""" class AccountValidityConfig(Config): section = "account_validity" def read_config(self, config: JsonDict, **kwargs: Any) -> None: """Parses the old account validity config. The config format looks like this: account_validity: enabled: true period: 6w renew_at: 1w renew_email_subject: "Renew your %(app)s account" template_dir: "res/templates" account_renewed_html_path: "account_renewed.html" invalid_token_html_path: "invalid_token.html" We expect admins to use modules for this feature (which is why it doesn't appear in the sample config file), but we want to keep support for it around for a bit for backwards compatibility. """ account_validity_config = config.get("account_validity") or {} self.account_validity_enabled = account_validity_config.get("enabled", False) self.account_validity_renew_by_email_enabled = ( "renew_at" in account_validity_config ) if self.account_validity_enabled: if "period" in account_validity_config: self.account_validity_period = self.parse_duration( account_validity_config["period"] ) else: raise ConfigError("'period' is required when using account validity") if "renew_at" in account_validity_config: self.account_validity_renew_at = self.parse_duration( account_validity_config["renew_at"] ) if "renew_email_subject" in account_validity_config: self.account_validity_renew_email_subject = account_validity_config[ "renew_email_subject" ] else: self.account_validity_renew_email_subject = "Renew your %(app)s account" self.account_validity_startup_job_max_delta = ( self.account_validity_period * 10.0 / 100.0 ) # Load account validity templates. account_validity_template_dir = account_validity_config.get("template_dir") if account_validity_template_dir is not None: logger.warning(LEGACY_TEMPLATE_DIR_WARNING) account_renewed_template_filename = account_validity_config.get( "account_renewed_html_path", "account_renewed.html" ) invalid_token_template_filename = account_validity_config.get( "invalid_token_html_path", "invalid_token.html" ) # Read and store template content custom_template_directories = ( self.root.server.custom_template_directory, account_validity_template_dir, ) ( self.account_validity_account_renewed_template, self.account_validity_account_previously_renewed_template, self.account_validity_invalid_token_template, ) = self.read_templates( [ account_renewed_template_filename, "account_previously_renewed.html", invalid_token_template_filename, ], (td for td in custom_template_directories if td), ) synapse-1.100.0/synapse/config/api.py000066400000000000000000000114571455622526000174240ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any, Iterable, Optional, Tuple from synapse.api.constants import EventTypes from synapse.config._base import Config, ConfigError from synapse.config._util import validate_config from synapse.types import JsonDict from synapse.types.state import StateFilter logger = logging.getLogger(__name__) class ApiConfig(Config): section = "api" room_prejoin_state: StateFilter track_puppetted_users_ips: bool def read_config(self, config: JsonDict, **kwargs: Any) -> None: validate_config(_MAIN_SCHEMA, config, ()) self.room_prejoin_state = StateFilter.from_types( self._get_prejoin_state_entries(config) ) self.track_puppeted_user_ips = config.get("track_puppeted_user_ips", False) def _get_prejoin_state_entries( self, config: JsonDict ) -> Iterable[Tuple[str, Optional[str]]]: """Get the event types and state keys to include in the prejoin state.""" room_prejoin_state_config = config.get("room_prejoin_state") or {} # backwards-compatibility support for room_invite_state_types if "room_invite_state_types" in config: # if both "room_invite_state_types" and "room_prejoin_state" are set, then # we don't really know what to do. if room_prejoin_state_config: raise ConfigError( "Can't specify both 'room_invite_state_types' and 'room_prejoin_state' " "in config" ) logger.warning(_ROOM_INVITE_STATE_TYPES_WARNING) for event_type in config["room_invite_state_types"]: yield event_type, None return if not room_prejoin_state_config.get("disable_default_event_types"): yield from _DEFAULT_PREJOIN_STATE_TYPES_AND_STATE_KEYS for entry in room_prejoin_state_config.get("additional_event_types", []): if isinstance(entry, str): yield entry, None else: yield entry _ROOM_INVITE_STATE_TYPES_WARNING = """\ WARNING: The 'room_invite_state_types' configuration setting is now deprecated, and replaced with 'room_prejoin_state'. New features may not work correctly unless 'room_invite_state_types' is removed. See the config documentation at https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#room_prejoin_state for details of 'room_prejoin_state'. -------------------------------------------------------------------------------- """ _DEFAULT_PREJOIN_STATE_TYPES_AND_STATE_KEYS = [ (EventTypes.JoinRules, ""), (EventTypes.CanonicalAlias, ""), (EventTypes.RoomAvatar, ""), (EventTypes.RoomEncryption, ""), (EventTypes.Name, ""), # Per MSC1772. (EventTypes.Create, ""), # Per MSC3173. (EventTypes.Topic, ""), ] # room_prejoin_state can either be None (as it is in the default config), or # an object containing other config settings _ROOM_PREJOIN_STATE_CONFIG_SCHEMA = { "oneOf": [ { "type": "object", "properties": { "disable_default_event_types": {"type": "boolean"}, "additional_event_types": { "type": "array", "items": { "oneOf": [ {"type": "string"}, { "type": "array", "items": {"type": "string"}, "minItems": 2, "maxItems": 2, }, ], }, }, }, }, {"type": "null"}, ] } # the legacy room_invite_state_types setting _ROOM_INVITE_STATE_TYPES_SCHEMA = {"type": "array", "items": {"type": "string"}} _MAIN_SCHEMA = { "type": "object", "properties": { "room_prejoin_state": _ROOM_PREJOIN_STATE_CONFIG_SCHEMA, "room_invite_state_types": _ROOM_INVITE_STATE_TYPES_SCHEMA, "track_puppeted_user_ips": { "type": "boolean", }, }, } synapse-1.100.0/synapse/config/appservice.py000066400000000000000000000170031455622526000210050ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any, Dict, List from urllib import parse as urlparse import yaml from netaddr import IPSet from synapse.appservice import ApplicationService from synapse.types import JsonDict, UserID from ._base import Config, ConfigError logger = logging.getLogger(__name__) class AppServiceConfig(Config): section = "appservice" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.app_service_config_files = config.get("app_service_config_files", []) if not isinstance(self.app_service_config_files, list) or not all( isinstance(x, str) for x in self.app_service_config_files ): raise ConfigError( "Expected '%s' to be a list of AS config files:" % (self.app_service_config_files), ("app_service_config_files",), ) self.track_appservice_user_ips = config.get("track_appservice_user_ips", False) self.use_appservice_legacy_authorization = config.get( "use_appservice_legacy_authorization", False ) if self.use_appservice_legacy_authorization: logger.warning( "The use of appservice legacy authorization via query params is deprecated" " and should be considered insecure." ) def load_appservices( hostname: str, config_files: List[str] ) -> List[ApplicationService]: """Returns a list of Application Services from the config files.""" # Dicts of value -> filename seen_as_tokens: Dict[str, str] = {} seen_ids: Dict[str, str] = {} appservices = [] for config_file in config_files: try: with open(config_file) as f: appservice = _load_appservice(hostname, yaml.safe_load(f), config_file) if appservice.id in seen_ids: raise ConfigError( "Cannot reuse ID across application services: " "%s (files: %s, %s)" % (appservice.id, config_file, seen_ids[appservice.id]) ) seen_ids[appservice.id] = config_file if appservice.token in seen_as_tokens: raise ConfigError( "Cannot reuse as_token across application services: " "%s (files: %s, %s)" % ( appservice.token, config_file, seen_as_tokens[appservice.token], ) ) seen_as_tokens[appservice.token] = config_file logger.info("Loaded application service: %s", appservice) appservices.append(appservice) except Exception as e: logger.error("Failed to load appservice from '%s'", config_file) logger.exception(e) raise return appservices def _load_appservice( hostname: str, as_info: JsonDict, config_filename: str ) -> ApplicationService: required_string_fields = ["id", "as_token", "hs_token", "sender_localpart"] for field in required_string_fields: if not isinstance(as_info.get(field), str): raise KeyError( "Required string field: '%s' (%s)" % (field, config_filename) ) # 'url' must either be a string or explicitly null, not missing # to avoid accidentally turning off push for ASes. if not isinstance(as_info.get("url"), str) and as_info.get("url", "") is not None: raise KeyError( "Required string field or explicit null: 'url' (%s)" % (config_filename,) ) localpart = as_info["sender_localpart"] if urlparse.quote(localpart) != localpart: raise ValueError("sender_localpart needs characters which are not URL encoded.") user = UserID(localpart, hostname) user_id = user.to_string() # Rate limiting for users of this AS is on by default (excludes sender) rate_limited = as_info.get("rate_limited") if not isinstance(rate_limited, bool): rate_limited = True # namespace checks if not isinstance(as_info.get("namespaces"), dict): raise KeyError("Requires 'namespaces' object.") for ns in ApplicationService.NS_LIST: # specific namespaces are optional if ns in as_info["namespaces"]: # expect a list of dicts with exclusive and regex keys for regex_obj in as_info["namespaces"][ns]: if not isinstance(regex_obj, dict): raise ValueError( "Expected namespace entry in %s to be an object, but got %s", ns, regex_obj, ) if not isinstance(regex_obj.get("regex"), str): raise ValueError("Missing/bad type 'regex' key in %s", regex_obj) if not isinstance(regex_obj.get("exclusive"), bool): raise ValueError( "Missing/bad type 'exclusive' key in %s", regex_obj ) # protocols check protocols = as_info.get("protocols") if protocols: if not isinstance(protocols, list): raise KeyError("Optional 'protocols' must be a list if present.") for p in protocols: if not isinstance(p, str): raise KeyError("Bad value for 'protocols' item") if as_info["url"] is None: logger.info( "(%s) Explicitly empty 'url' provided. This application service" " will not receive events or queries.", config_filename, ) ip_range_whitelist = None if as_info.get("ip_range_whitelist"): ip_range_whitelist = IPSet(as_info.get("ip_range_whitelist")) supports_ephemeral = as_info.get("de.sorunome.msc2409.push_ephemeral", False) # Opt-in flag for the MSC3202-specific transactional behaviour. # When enabled, appservice transactions contain the following information: # - device One-Time Key counts # - device unused fallback key usage states # - device list changes msc3202_transaction_extensions = as_info.get("org.matrix.msc3202", False) if not isinstance(msc3202_transaction_extensions, bool): raise ValueError( "The `org.matrix.msc3202` option should be true or false if specified." ) return ApplicationService( token=as_info["as_token"], url=as_info["url"], namespaces=as_info["namespaces"], hs_token=as_info["hs_token"], sender=user_id, id=as_info["id"], protocols=protocols, rate_limited=rate_limited, ip_range_whitelist=ip_range_whitelist, supports_ephemeral=supports_ephemeral, msc3202_transaction_extensions=msc3202_transaction_extensions, ) synapse-1.100.0/synapse/config/auth.py000066400000000000000000000055521455622526000176130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from ._base import Config class AuthConfig(Config): """Password and login configuration""" section = "auth" def read_config(self, config: JsonDict, **kwargs: Any) -> None: password_config = config.get("password_config", {}) if password_config is None: password_config = {} # The default value of password_config.enabled is True, unless msc3861 is enabled. msc3861_enabled = ( (config.get("experimental_features") or {}) .get("msc3861", {}) .get("enabled", False) ) passwords_enabled = password_config.get("enabled", not msc3861_enabled) # 'only_for_reauth' allows users who have previously set a password to use it, # even though passwords would otherwise be disabled. passwords_for_reauth_only = passwords_enabled == "only_for_reauth" self.password_enabled_for_login = ( passwords_enabled and not passwords_for_reauth_only ) self.password_enabled_for_reauth = ( passwords_for_reauth_only or passwords_enabled ) self.password_localdb_enabled = password_config.get("localdb_enabled", True) self.password_pepper = password_config.get("pepper", "") # Password policy self.password_policy = password_config.get("policy") or {} self.password_policy_enabled = self.password_policy.get("enabled", False) # User-interactive authentication ui_auth = config.get("ui_auth") or {} self.ui_auth_session_timeout = self.parse_duration( ui_auth.get("session_timeout", 0) ) # Logging in with an existing session. login_via_existing = config.get("login_via_existing_session", {}) self.login_via_existing_enabled = login_via_existing.get("enabled", False) self.login_via_existing_require_ui_auth = login_via_existing.get( "require_ui_auth", True ) self.login_via_existing_token_timeout = self.parse_duration( login_via_existing.get("token_timeout", "5m") ) synapse-1.100.0/synapse/config/background_updates.py000066400000000000000000000026431455622526000225140ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from ._base import Config class BackgroundUpdateConfig(Config): section = "background_updates" def read_config(self, config: JsonDict, **kwargs: Any) -> None: bg_update_config = config.get("background_updates") or {} self.update_duration_ms = bg_update_config.get( "background_update_duration_ms", 100 ) self.sleep_enabled = bg_update_config.get("sleep_enabled", True) self.sleep_duration_ms = bg_update_config.get("sleep_duration_ms", 1000) self.min_batch_size = bg_update_config.get("min_batch_size", 1) self.default_batch_size = bg_update_config.get("default_batch_size", 100) synapse-1.100.0/synapse/config/cache.py000066400000000000000000000204231455622526000177070ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019-2021 Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import os import re import threading from typing import Any, Callable, Dict, Mapping, Optional import attr from synapse.types import JsonDict from synapse.util.check_dependencies import check_requirements from ._base import Config, ConfigError logger = logging.getLogger(__name__) # The prefix for all cache factor-related environment variables _CACHE_PREFIX = "SYNAPSE_CACHE_FACTOR" # Map from canonicalised cache name to cache. _CACHES: Dict[str, Callable[[float], None]] = {} # a lock on the contents of _CACHES _CACHES_LOCK = threading.Lock() _DEFAULT_FACTOR_SIZE = 0.5 _DEFAULT_EVENT_CACHE_SIZE = "10K" @attr.s(slots=True, auto_attribs=True) class CacheProperties: # The default factor size for all caches default_factor_size: float = float( os.environ.get(_CACHE_PREFIX, _DEFAULT_FACTOR_SIZE) ) resize_all_caches_func: Optional[Callable[[], None]] = None properties = CacheProperties() def _canonicalise_cache_name(cache_name: str) -> str: """Gets the canonical form of the cache name. Since we specify cache names in config and environment variables we need to ignore case and special characters. For example, some caches have asterisks in their name to denote that they're not attached to a particular database function, and these asterisks need to be stripped out """ cache_name = re.sub(r"[^A-Za-z_1-9]", "", cache_name) return cache_name.lower() def add_resizable_cache( cache_name: str, cache_resize_callback: Callable[[float], None] ) -> None: """Register a cache whose size can dynamically change Args: cache_name: A reference to the cache cache_resize_callback: A callback function that will run whenever the cache needs to be resized """ # Some caches have '*' in them which we strip out. cache_name = _canonicalise_cache_name(cache_name) # sometimes caches are initialised from background threads, so we need to make # sure we don't conflict with another thread running a resize operation with _CACHES_LOCK: _CACHES[cache_name] = cache_resize_callback # Ensure all loaded caches are sized appropriately # # This method should only run once the config has been read, # as it uses values read from it if properties.resize_all_caches_func: properties.resize_all_caches_func() class CacheConfig(Config): section = "caches" _environ: Mapping[str, str] = os.environ event_cache_size: int cache_factors: Dict[str, float] global_factor: float track_memory_usage: bool expiry_time_msec: Optional[int] sync_response_cache_duration: int @staticmethod def reset() -> None: """Resets the caches to their defaults. Used for tests.""" properties.default_factor_size = float( os.environ.get(_CACHE_PREFIX, _DEFAULT_FACTOR_SIZE) ) properties.resize_all_caches_func = None with _CACHES_LOCK: _CACHES.clear() def read_config(self, config: JsonDict, **kwargs: Any) -> None: """Populate this config object with values from `config`. This method does NOT resize existing or future caches: use `resize_all_caches`. We use two separate methods so that we can reject bad config before applying it. """ self.event_cache_size = self.parse_size( config.get("event_cache_size", _DEFAULT_EVENT_CACHE_SIZE) ) self.cache_factors = {} cache_config = config.get("caches") or {} self.global_factor = cache_config.get("global_factor", _DEFAULT_FACTOR_SIZE) if type(self.global_factor) not in (int, float): raise ConfigError("caches.global_factor must be a number.") # Load cache factors from the config individual_factors = cache_config.get("per_cache_factors") or {} if not isinstance(individual_factors, dict): raise ConfigError("caches.per_cache_factors must be a dictionary") # Canonicalise the cache names *before* updating with the environment # variables. individual_factors = { _canonicalise_cache_name(key): val for key, val in individual_factors.items() } # Override factors from environment if necessary individual_factors.update( { _canonicalise_cache_name(key[len(_CACHE_PREFIX) + 1 :]): float(val) for key, val in self._environ.items() if key.startswith(_CACHE_PREFIX + "_") } ) for cache, factor in individual_factors.items(): if type(factor) not in (int, float): raise ConfigError( "caches.per_cache_factors.%s must be a number" % (cache,) ) self.cache_factors[cache] = factor self.track_memory_usage = cache_config.get("track_memory_usage", False) if self.track_memory_usage: check_requirements("cache-memory") expire_caches = cache_config.get("expire_caches", True) cache_entry_ttl = cache_config.get("cache_entry_ttl", "30m") if expire_caches: self.expiry_time_msec = self.parse_duration(cache_entry_ttl) else: self.expiry_time_msec = None # Backwards compatibility support for the now-removed "expiry_time" config flag. expiry_time = cache_config.get("expiry_time") if expiry_time and expire_caches: logger.warning( "You have set two incompatible options, expiry_time and expire_caches. Please only use the " "expire_caches and cache_entry_ttl options and delete the expiry_time option as it is " "deprecated." ) if expiry_time: logger.warning( "Expiry_time is a deprecated option, please use the expire_caches and cache_entry_ttl options " "instead." ) self.expiry_time_msec = self.parse_duration(expiry_time) self.cache_autotuning = cache_config.get("cache_autotuning") if self.cache_autotuning: max_memory_usage = self.cache_autotuning.get("max_cache_memory_usage") self.cache_autotuning["max_cache_memory_usage"] = self.parse_size( max_memory_usage ) target_mem_size = self.cache_autotuning.get("target_cache_memory_usage") self.cache_autotuning["target_cache_memory_usage"] = self.parse_size( target_mem_size ) min_cache_ttl = self.cache_autotuning.get("min_cache_ttl") self.cache_autotuning["min_cache_ttl"] = self.parse_duration(min_cache_ttl) self.sync_response_cache_duration = self.parse_duration( cache_config.get("sync_response_cache_duration", "2m") ) def resize_all_caches(self) -> None: """Ensure all cache sizes are up-to-date. For each cache, run the mapped callback function with either a specific cache factor or the default, global one. """ # Set the global factor size, so that new caches are appropriately sized. properties.default_factor_size = self.global_factor # Store this function so that it can be called from other classes without # needing an instance of CacheConfig properties.resize_all_caches_func = self.resize_all_caches # block other threads from modifying _CACHES while we iterate it. with _CACHES_LOCK: for cache_name, callback in _CACHES.items(): new_factor = self.cache_factors.get(cache_name, self.global_factor) callback(new_factor) synapse-1.100.0/synapse/config/captcha.py000066400000000000000000000035701455622526000202530ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from ._base import Config, ConfigError class CaptchaConfig(Config): section = "captcha" def read_config(self, config: JsonDict, **kwargs: Any) -> None: recaptcha_private_key = config.get("recaptcha_private_key") if recaptcha_private_key is not None and not isinstance( recaptcha_private_key, str ): raise ConfigError("recaptcha_private_key must be a string.") self.recaptcha_private_key = recaptcha_private_key recaptcha_public_key = config.get("recaptcha_public_key") if recaptcha_public_key is not None and not isinstance( recaptcha_public_key, str ): raise ConfigError("recaptcha_public_key must be a string.") self.recaptcha_public_key = recaptcha_public_key self.enable_registration_captcha = config.get( "enable_registration_captcha", False ) self.recaptcha_siteverify_api = config.get( "recaptcha_siteverify_api", "https://www.recaptcha.net/recaptcha/api/siteverify", ) self.recaptcha_template = self.read_template("recaptcha.html") synapse-1.100.0/synapse/config/cas.py000066400000000000000000000065771455622526000174300ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, List from synapse.config.sso import SsoAttributeRequirement from synapse.types import JsonDict from ._base import Config, ConfigError from ._util import validate_config class CasConfig(Config): """Cas Configuration cas_server_url: URL of CAS server """ section = "cas" def read_config(self, config: JsonDict, **kwargs: Any) -> None: cas_config = config.get("cas_config", None) self.cas_enabled = cas_config and cas_config.get("enabled", True) if self.cas_enabled: self.cas_server_url = cas_config["server_url"] # TODO Update this to a _synapse URL. public_baseurl = self.root.server.public_baseurl self.cas_service_url = public_baseurl + "_matrix/client/r0/login/cas/ticket" self.cas_protocol_version = cas_config.get("protocol_version") if ( self.cas_protocol_version is not None and self.cas_protocol_version not in [1, 2, 3] ): raise ConfigError( "Unsupported CAS protocol version %s (only versions 1, 2, 3 are supported)" % (self.cas_protocol_version,), ("cas_config", "protocol_version"), ) self.cas_displayname_attribute = cas_config.get("displayname_attribute") required_attributes = cas_config.get("required_attributes") or {} self.cas_required_attributes = _parsed_required_attributes_def( required_attributes ) self.cas_enable_registration = cas_config.get("enable_registration", True) self.idp_name = cas_config.get("idp_name", "CAS") self.idp_icon = cas_config.get("idp_icon") self.idp_brand = cas_config.get("idp_brand") else: self.cas_server_url = None self.cas_service_url = None self.cas_protocol_version = None self.cas_displayname_attribute = None self.cas_required_attributes = [] self.cas_enable_registration = False # CAS uses a legacy required attributes mapping, not the one provided by # SsoAttributeRequirement. REQUIRED_ATTRIBUTES_SCHEMA = { "type": "object", "additionalProperties": {"anyOf": [{"type": "string"}, {"type": "null"}]}, } def _parsed_required_attributes_def( required_attributes: Any, ) -> List[SsoAttributeRequirement]: validate_config( REQUIRED_ATTRIBUTES_SCHEMA, required_attributes, config_path=("cas_config", "required_attributes"), ) return [SsoAttributeRequirement(k, v) for k, v in required_attributes.items()] synapse-1.100.0/synapse/config/consent.py000066400000000000000000000051551455622526000203220ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from os import path from typing import Any, Optional from synapse.config import ConfigError from synapse.types import JsonDict from ._base import Config class ConsentConfig(Config): section = "consent" def __init__(self, *args: Any): super().__init__(*args) self.user_consent_version: Optional[str] = None self.user_consent_template_dir: Optional[str] = None self.user_consent_server_notice_content: Optional[JsonDict] = None self.user_consent_server_notice_to_guests = False self.block_events_without_consent_error: Optional[str] = None self.user_consent_at_registration = False self.user_consent_policy_name = "Privacy Policy" def read_config(self, config: JsonDict, **kwargs: Any) -> None: consent_config = config.get("user_consent") self.terms_template = self.read_template("terms.html") if consent_config is None: return self.user_consent_version = str(consent_config["version"]) self.user_consent_template_dir = self.abspath(consent_config["template_dir"]) if not isinstance(self.user_consent_template_dir, str) or not path.isdir( self.user_consent_template_dir ): raise ConfigError( "Could not find template directory '%s'" % (self.user_consent_template_dir,) ) self.user_consent_server_notice_content = consent_config.get( "server_notice_content" ) self.block_events_without_consent_error = consent_config.get( "block_events_error" ) self.user_consent_server_notice_to_guests = bool( consent_config.get("send_server_notice_to_guests", False) ) self.user_consent_at_registration = bool( consent_config.get("require_at_registration", False) ) self.user_consent_policy_name = consent_config.get( "policy_name", "Privacy Policy" ) synapse-1.100.0/synapse/config/database.py000066400000000000000000000146771455622526000204260ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import logging import os from typing import Any, List from synapse.config._base import Config, ConfigError from synapse.types import JsonDict logger = logging.getLogger(__name__) NON_SQLITE_DATABASE_PATH_WARNING = """\ Ignoring 'database_path' setting: not using a sqlite3 database. -------------------------------------------------------------------------------- """ DEFAULT_CONFIG = """\ database: name: sqlite3 args: database: %(database_path)s """ class DatabaseConnectionConfig: """Contains the connection config for a particular database. Args: name: A label for the database, used for logging. db_config: The config for a particular database, as per `database` section of main config. Has three fields: `name` for database module name, `args` for the args to give to the database connector, and optional `data_stores` that is a list of stores to provision on this database (defaulting to all). """ def __init__(self, name: str, db_config: dict): db_engine = db_config.get("name", "sqlite3") if db_engine not in ("sqlite3", "psycopg2"): raise ConfigError("Unsupported database type %r" % (db_engine,)) if db_engine == "sqlite3": db_config.setdefault("args", {}).update( {"cp_min": 1, "cp_max": 1, "check_same_thread": False} ) data_stores = db_config.get("data_stores") if data_stores is None: data_stores = ["main", "state"] self.name = name self.config = db_config # The `data_stores` config is actually talking about `databases` (we # changed the name). self.databases = data_stores class DatabaseConfig(Config): section = "database" def __init__(self, *args: Any): super().__init__(*args) self.databases: List[DatabaseConnectionConfig] = [] def read_config(self, config: JsonDict, **kwargs: Any) -> None: # We *experimentally* support specifying multiple databases via the # `databases` key. This is a map from a label to database config in the # same format as the `database` config option, plus an extra # `data_stores` key to specify which data store goes where. For example: # # databases: # master: # name: psycopg2 # data_stores: ["main"] # args: {} # state: # name: psycopg2 # data_stores: ["state"] # args: {} multi_database_config = config.get("databases") database_config = config.get("database") database_path = config.get("database_path") if multi_database_config and database_config: raise ConfigError("Can't specify both 'database' and 'databases' in config") if multi_database_config: if database_path: raise ConfigError("Can't specify 'database_path' with 'databases'") self.databases = [ DatabaseConnectionConfig(name, db_conf) for name, db_conf in multi_database_config.items() ] if database_config: self.databases = [DatabaseConnectionConfig("master", database_config)] if database_path: if self.databases and self.databases[0].name != "sqlite3": logger.warning(NON_SQLITE_DATABASE_PATH_WARNING) return database_config = {"name": "sqlite3", "args": {}} self.databases = [DatabaseConnectionConfig("master", database_config)] self.set_databasepath(database_path) def generate_config_section(self, data_dir_path: str, **kwargs: Any) -> str: return DEFAULT_CONFIG % { "database_path": os.path.join(data_dir_path, "homeserver.db") } def read_arguments(self, args: argparse.Namespace) -> None: """ Cases for the cli input: - If no databases are configured and no database_path is set, raise. - No databases and only database_path available ==> sqlite3 db. - If there are multiple databases and a database_path raise an error. - If the database set in the config file is sqlite then overwrite with the command line argument. """ if args.database_path is None: if not self.databases: raise ConfigError("No database config provided") return if len(self.databases) == 0: database_config = {"name": "sqlite3", "args": {}} self.databases = [DatabaseConnectionConfig("master", database_config)] self.set_databasepath(args.database_path) return if self.get_single_database().name == "sqlite3": self.set_databasepath(args.database_path) else: logger.warning(NON_SQLITE_DATABASE_PATH_WARNING) def set_databasepath(self, database_path: str) -> None: if database_path != ":memory:": database_path = self.abspath(database_path) self.databases[0].config["args"]["database"] = database_path @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: db_group = parser.add_argument_group("database") db_group.add_argument( "-d", "--database-path", metavar="SQLITE_DATABASE_PATH", help="The path to a sqlite database to use.", ) def get_single_database(self) -> DatabaseConnectionConfig: """Returns the database if there is only one, useful for e.g. tests""" if not self.databases: raise Exception("More than one database exists") return self.databases[0] synapse-1.100.0/synapse/config/emailconfig.py000066400000000000000000000355531455622526000211330ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2015-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # # This file can't be called email.py because if it is, we cannot: import email.utils import logging import os from typing import Any import attr from synapse.types import JsonDict from ._base import Config, ConfigError logger = logging.getLogger(__name__) MISSING_PASSWORD_RESET_CONFIG_ERROR = """\ Password reset emails are enabled on this homeserver due to a partial 'email' block. However, the following required keys are missing: %s """ DEFAULT_SUBJECTS = { "message_from_person_in_room": "[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room...", "message_from_person": "[%(app)s] You have a message on %(app)s from %(person)s...", "messages_from_person": "[%(app)s] You have messages on %(app)s from %(person)s...", "messages_in_room": "[%(app)s] You have messages on %(app)s in the %(room)s room...", "messages_in_room_and_others": "[%(app)s] You have messages on %(app)s in the %(room)s room and others...", "messages_from_person_and_others": "[%(app)s] You have messages on %(app)s from %(person)s and others...", "invite_from_person": "[%(app)s] %(person)s has invited you to chat on %(app)s...", "invite_from_person_to_room": "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s...", "invite_from_person_to_space": "[%(app)s] %(person)s has invited you to join the %(space)s space on %(app)s...", "password_reset": "[%(server_name)s] Password reset", "email_validation": "[%(server_name)s] Validate your email", } LEGACY_TEMPLATE_DIR_WARNING = """ This server's configuration file is using the deprecated 'template_dir' setting in the 'email' section. Support for this setting has been deprecated and will be removed in a future version of Synapse. Server admins should instead use the new 'custom_template_directory' setting documented here: https://element-hq.github.io/synapse/latest/templates.html ---------------------------------------------------------------------------------------""" @attr.s(slots=True, frozen=True, auto_attribs=True) class EmailSubjectConfig: message_from_person_in_room: str message_from_person: str messages_from_person: str messages_in_room: str messages_in_room_and_others: str messages_from_person_and_others: str invite_from_person: str invite_from_person_to_room: str invite_from_person_to_space: str password_reset: str email_validation: str class EmailConfig(Config): section = "email" def read_config(self, config: JsonDict, **kwargs: Any) -> None: # TODO: We should separate better the email configuration from the notification # and account validity config. self.email_enable_notifs = False email_config = config.get("email") if email_config is None: email_config = {} self.force_tls = email_config.get("force_tls", False) self.email_smtp_host = email_config.get("smtp_host", "localhost") self.email_smtp_port = email_config.get( "smtp_port", 465 if self.force_tls else 25 ) self.email_smtp_user = email_config.get("smtp_user", None) self.email_smtp_pass = email_config.get("smtp_pass", None) self.require_transport_security = email_config.get( "require_transport_security", False ) self.enable_smtp_tls = email_config.get("enable_tls", True) if self.force_tls and not self.enable_smtp_tls: raise ConfigError("email.force_tls requires email.enable_tls to be true") if self.require_transport_security and not self.enable_smtp_tls: raise ConfigError( "email.require_transport_security requires email.enable_tls to be true" ) if "app_name" in email_config: self.email_app_name = email_config["app_name"] else: self.email_app_name = "Matrix" # TODO: Rename notif_from to something more generic, or have a separate # from for password resets, message notifications, etc? # Currently the email section is a bit bogged down with settings for # multiple functions. Would be good to split it out into separate # sections and only put the common ones under email: self.email_notif_from = email_config.get("notif_from", None) if self.email_notif_from is not None: # make sure it's valid parsed = email.utils.parseaddr(self.email_notif_from) if parsed[1] == "": raise RuntimeError("Invalid notif_from address") # A user-configurable template directory template_dir = email_config.get("template_dir") if template_dir is not None: logger.warning(LEGACY_TEMPLATE_DIR_WARNING) if isinstance(template_dir, str): # We need an absolute path, because we change directory after starting (and # we don't yet know what auxiliary templates like mail.css we will need). template_dir = os.path.abspath(template_dir) elif template_dir is not None: # If template_dir is something other than a str or None, warn the user raise ConfigError("Config option email.template_dir must be type str") self.email_enable_notifs = email_config.get("enable_notifs", False) if config.get("trust_identity_server_for_password_resets"): raise ConfigError( 'The config option "trust_identity_server_for_password_resets" ' "is no longer supported. Please remove it from the config file." ) # If we have email config settings, assume that we can verify ownership of # email addresses. self.can_verify_email = email_config != {} # Get lifetime of a validation token in milliseconds self.email_validation_token_lifetime = self.parse_duration( email_config.get("validation_token_lifetime", "1h") ) if self.can_verify_email: missing = [] if not self.email_notif_from: missing.append("email.notif_from") if missing: raise ConfigError( MISSING_PASSWORD_RESET_CONFIG_ERROR % (", ".join(missing),) ) # These email templates have placeholders in them, and thus must be # parsed using a templating engine during a request password_reset_template_html = email_config.get( "password_reset_template_html", "password_reset.html" ) password_reset_template_text = email_config.get( "password_reset_template_text", "password_reset.txt" ) registration_template_html = email_config.get( "registration_template_html", "registration.html" ) registration_template_text = email_config.get( "registration_template_text", "registration.txt" ) add_threepid_template_html = email_config.get( "add_threepid_template_html", "add_threepid.html" ) add_threepid_template_text = email_config.get( "add_threepid_template_text", "add_threepid.txt" ) password_reset_template_failure_html = email_config.get( "password_reset_template_failure_html", "password_reset_failure.html" ) registration_template_failure_html = email_config.get( "registration_template_failure_html", "registration_failure.html" ) add_threepid_template_failure_html = email_config.get( "add_threepid_template_failure_html", "add_threepid_failure.html" ) # These templates do not support any placeholder variables, so we # will read them from disk once during setup password_reset_template_success_html = email_config.get( "password_reset_template_success_html", "password_reset_success.html" ) registration_template_success_html = email_config.get( "registration_template_success_html", "registration_success.html" ) add_threepid_template_success_html = email_config.get( "add_threepid_template_success_html", "add_threepid_success.html" ) # Read all templates from disk ( self.email_password_reset_template_html, self.email_password_reset_template_text, self.email_registration_template_html, self.email_registration_template_text, self.email_add_threepid_template_html, self.email_add_threepid_template_text, self.email_password_reset_template_confirmation_html, self.email_password_reset_template_failure_html, self.email_registration_template_failure_html, self.email_add_threepid_template_failure_html, password_reset_template_success_html_template, registration_template_success_html_template, add_threepid_template_success_html_template, ) = self.read_templates( [ password_reset_template_html, password_reset_template_text, registration_template_html, registration_template_text, add_threepid_template_html, add_threepid_template_text, "password_reset_confirmation.html", password_reset_template_failure_html, registration_template_failure_html, add_threepid_template_failure_html, password_reset_template_success_html, registration_template_success_html, add_threepid_template_success_html, ], ( td for td in ( self.root.server.custom_template_directory, template_dir, ) if td ), # Filter out template_dir if not provided ) # Render templates that do not contain any placeholders self.email_password_reset_template_success_html_content = ( password_reset_template_success_html_template.render() ) self.email_registration_template_success_html_content = ( registration_template_success_html_template.render() ) self.email_add_threepid_template_success_html_content = ( add_threepid_template_success_html_template.render() ) if self.email_enable_notifs: missing = [] if not self.email_notif_from: missing.append("email.notif_from") if missing: raise ConfigError( "email.enable_notifs is True but required keys are missing: %s" % (", ".join(missing),) ) notif_template_html = email_config.get( "notif_template_html", "notif_mail.html" ) notif_template_text = email_config.get( "notif_template_text", "notif_mail.txt" ) ( self.email_notif_template_html, self.email_notif_template_text, ) = self.read_templates( [notif_template_html, notif_template_text], ( td for td in ( self.root.server.custom_template_directory, template_dir, ) if td ), # Filter out template_dir if not provided ) self.email_notif_for_new_users = email_config.get( "notif_for_new_users", True ) self.email_riot_base_url = email_config.get( "client_base_url", email_config.get("riot_base_url", None) ) # The amount of time we always wait before ever emailing about a notification # (to give the user a chance to respond to other push or notice the window) self.notif_delay_before_mail_ms = Config.parse_duration( email_config.get("notif_delay_before_mail", "10m") ) if self.root.account_validity.account_validity_renew_by_email_enabled: expiry_template_html = email_config.get( "expiry_template_html", "notice_expiry.html" ) expiry_template_text = email_config.get( "expiry_template_text", "notice_expiry.txt" ) ( self.account_validity_template_html, self.account_validity_template_text, ) = self.read_templates( [expiry_template_html, expiry_template_text], ( td for td in ( self.root.server.custom_template_directory, template_dir, ) if td ), # Filter out template_dir if not provided ) subjects_config = email_config.get("subjects", {}) subjects = {} for key, default in DEFAULT_SUBJECTS.items(): subjects[key] = subjects_config.get(key, default) self.email_subjects = EmailSubjectConfig(**subjects) # The invite client location should be a HTTP(S) URL or None. self.invite_client_location = email_config.get("invite_client_location") or None if self.invite_client_location: if not isinstance(self.invite_client_location, str): raise ConfigError( "Config option email.invite_client_location must be type str" ) if not ( self.invite_client_location.startswith("http://") or self.invite_client_location.startswith("https://") ): raise ConfigError( "Config option email.invite_client_location must be a http or https URL", path=("email", "invite_client_location"), ) synapse-1.100.0/synapse/config/experimental.py000066400000000000000000000410731455622526000213450ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import enum from typing import TYPE_CHECKING, Any, Optional import attr import attr.validators from synapse.api.errors import LimitExceededError from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersions from synapse.config import ConfigError from synapse.config._base import Config, RootConfig from synapse.types import JsonDict # Determine whether authlib is installed. try: import authlib # noqa: F401 HAS_AUTHLIB = True except ImportError: HAS_AUTHLIB = False if TYPE_CHECKING: # Only import this if we're type checking, as it might not be installed at runtime. from authlib.jose.rfc7517 import JsonWebKey class ClientAuthMethod(enum.Enum): """List of supported client auth methods.""" CLIENT_SECRET_POST = "client_secret_post" CLIENT_SECRET_BASIC = "client_secret_basic" CLIENT_SECRET_JWT = "client_secret_jwt" PRIVATE_KEY_JWT = "private_key_jwt" def _parse_jwks(jwks: Optional[JsonDict]) -> Optional["JsonWebKey"]: """A helper function to parse a JWK dict into a JsonWebKey.""" if jwks is None: return None from authlib.jose.rfc7517 import JsonWebKey return JsonWebKey.import_key(jwks) @attr.s(slots=True, frozen=True) class MSC3861: """Configuration for MSC3861: Matrix architecture change to delegate authentication via OIDC""" enabled: bool = attr.ib(default=False, validator=attr.validators.instance_of(bool)) """Whether to enable MSC3861 auth delegation.""" @enabled.validator def _check_enabled(self, attribute: attr.Attribute, value: bool) -> None: # Only allow enabling MSC3861 if authlib is installed if value and not HAS_AUTHLIB: raise ConfigError( "MSC3861 is enabled but authlib is not installed. " "Please install authlib to use MSC3861.", ("experimental", "msc3861", "enabled"), ) issuer: str = attr.ib(default="", validator=attr.validators.instance_of(str)) """The URL of the OIDC Provider.""" issuer_metadata: Optional[JsonDict] = attr.ib(default=None) """The issuer metadata to use, otherwise discovered from /.well-known/openid-configuration as per MSC2965.""" client_id: str = attr.ib( default="", validator=attr.validators.instance_of(str), ) """The client ID to use when calling the introspection endpoint.""" client_auth_method: ClientAuthMethod = attr.ib( default=ClientAuthMethod.CLIENT_SECRET_POST, converter=ClientAuthMethod ) """The auth method used when calling the introspection endpoint.""" client_secret: Optional[str] = attr.ib( default=None, validator=attr.validators.optional(attr.validators.instance_of(str)), ) """ The client secret to use when calling the introspection endpoint, when using any of the client_secret_* client auth methods. """ jwk: Optional["JsonWebKey"] = attr.ib(default=None, converter=_parse_jwks) """ The JWKS to use when calling the introspection endpoint, when using the private_key_jwt client auth method. """ @client_auth_method.validator def _check_client_auth_method( self, attribute: attr.Attribute, value: ClientAuthMethod ) -> None: # Check that the right client credentials are provided for the client auth method. if not self.enabled: return if value == ClientAuthMethod.PRIVATE_KEY_JWT and self.jwk is None: raise ConfigError( "A JWKS must be provided when using the private_key_jwt client auth method", ("experimental", "msc3861", "client_auth_method"), ) if ( value in ( ClientAuthMethod.CLIENT_SECRET_POST, ClientAuthMethod.CLIENT_SECRET_BASIC, ClientAuthMethod.CLIENT_SECRET_JWT, ) and self.client_secret is None ): raise ConfigError( f"A client secret must be provided when using the {value} client auth method", ("experimental", "msc3861", "client_auth_method"), ) account_management_url: Optional[str] = attr.ib( default=None, validator=attr.validators.optional(attr.validators.instance_of(str)), ) """The URL of the My Account page on the OIDC Provider as per MSC2965.""" admin_token: Optional[str] = attr.ib( default=None, validator=attr.validators.optional(attr.validators.instance_of(str)), ) """ A token that should be considered as an admin token. This is used by the OIDC provider, to make admin calls to Synapse. """ def check_config_conflicts(self, root: RootConfig) -> None: """Checks for any configuration conflicts with other parts of Synapse. Raises: ConfigError: If there are any configuration conflicts. """ if not self.enabled: return if ( root.auth.password_enabled_for_reauth or root.auth.password_enabled_for_login ): raise ConfigError( "Password auth cannot be enabled when OAuth delegation is enabled", ("password_config", "enabled"), ) if root.registration.enable_registration: raise ConfigError( "Registration cannot be enabled when OAuth delegation is enabled", ("enable_registration",), ) # We only need to test the user consent version, as if it must be set if the user_consent section was present in the config if root.consent.user_consent_version is not None: raise ConfigError( "User consent cannot be enabled when OAuth delegation is enabled", ("user_consent",), ) if ( root.oidc.oidc_enabled or root.saml2.saml2_enabled or root.cas.cas_enabled or root.jwt.jwt_enabled ): raise ConfigError("SSO cannot be enabled when OAuth delegation is enabled") if bool(root.authproviders.password_providers): raise ConfigError( "Password auth providers cannot be enabled when OAuth delegation is enabled" ) if root.captcha.enable_registration_captcha: raise ConfigError( "CAPTCHA cannot be enabled when OAuth delegation is enabled", ("captcha", "enable_registration_captcha"), ) if root.auth.login_via_existing_enabled: raise ConfigError( "Login via existing session cannot be enabled when OAuth delegation is enabled", ("login_via_existing_session", "enabled"), ) if root.registration.refresh_token_lifetime: raise ConfigError( "refresh_token_lifetime cannot be set when OAuth delegation is enabled", ("refresh_token_lifetime",), ) if root.registration.nonrefreshable_access_token_lifetime: raise ConfigError( "nonrefreshable_access_token_lifetime cannot be set when OAuth delegation is enabled", ("nonrefreshable_access_token_lifetime",), ) if root.registration.session_lifetime: raise ConfigError( "session_lifetime cannot be set when OAuth delegation is enabled", ("session_lifetime",), ) if root.registration.enable_3pid_changes: raise ConfigError( "enable_3pid_changes cannot be enabled when OAuth delegation is enabled", ("enable_3pid_changes",), ) @attr.s(auto_attribs=True, frozen=True, slots=True) class MSC3866Config: """Configuration for MSC3866 (mandating approval for new users)""" # Whether the base support for the approval process is enabled. This includes the # ability for administrators to check and update the approval of users, even if no # approval is currently required. enabled: bool = False # Whether to require that new users are approved by an admin before their account # can be used. Note that this setting is ignored if 'enabled' is false. require_approval_for_new_accounts: bool = False class ExperimentalConfig(Config): """Config section for enabling experimental features""" section = "experimental" def read_config(self, config: JsonDict, **kwargs: Any) -> None: experimental = config.get("experimental_features") or {} # MSC3026 (busy presence state) self.msc3026_enabled: bool = experimental.get("msc3026_enabled", False) # MSC2697 (device dehydration) # Enabled by default since this option was added after adding the feature. # It is not recommended that both MSC2697 and MSC3814 both be enabled at # once. self.msc2697_enabled: bool = experimental.get("msc2697_enabled", True) # MSC3814 (dehydrated devices with SSSS) # This is an alternative method to achieve the same goals as MSC2697. # It is not recommended that both MSC2697 and MSC3814 both be enabled at # once. self.msc3814_enabled: bool = experimental.get("msc3814_enabled", False) if self.msc2697_enabled and self.msc3814_enabled: raise ConfigError( "MSC2697 and MSC3814 should not both be enabled.", ( "experimental_features", "msc3814_enabled", ), ) # MSC3244 (room version capabilities) self.msc3244_enabled: bool = experimental.get("msc3244_enabled", True) # MSC3266 (room summary api) self.msc3266_enabled: bool = experimental.get("msc3266_enabled", False) # MSC2409 (this setting only relates to optionally sending to-device messages). # Presence, typing and read receipt EDUs are already sent to application services that # have opted in to receive them. If enabled, this adds to-device messages to that list. self.msc2409_to_device_messages_enabled: bool = experimental.get( "msc2409_to_device_messages_enabled", False ) # The portion of MSC3202 which is related to device masquerading. self.msc3202_device_masquerading_enabled: bool = experimental.get( "msc3202_device_masquerading", False ) # The portion of MSC3202 related to transaction extensions: # sending device list changes, one-time key counts and fallback key # usage to application services. self.msc3202_transaction_extensions: bool = experimental.get( "msc3202_transaction_extensions", False ) # MSC3983: Proxying OTK claim requests to exclusive ASes. self.msc3983_appservice_otk_claims: bool = experimental.get( "msc3983_appservice_otk_claims", False ) # MSC3984: Proxying key queries to exclusive ASes. self.msc3984_appservice_key_query: bool = experimental.get( "msc3984_appservice_key_query", False ) # MSC3720 (Account status endpoint) self.msc3720_enabled: bool = experimental.get("msc3720_enabled", False) # MSC2654: Unread counts # # Note that enabling this will result in an incorrect unread count for # previously calculated push actions. self.msc2654_enabled: bool = experimental.get("msc2654_enabled", False) # MSC2815 (allow room moderators to view redacted event content) self.msc2815_enabled: bool = experimental.get("msc2815_enabled", False) # MSC3391: Removing account data. self.msc3391_enabled = experimental.get("msc3391_enabled", False) # MSC3773: Thread notifications self.msc3773_enabled: bool = experimental.get("msc3773_enabled", False) # MSC3664: Pushrules to match on related events self.msc3664_enabled: bool = experimental.get("msc3664_enabled", False) # MSC3848: Introduce errcodes for specific event sending failures self.msc3848_enabled: bool = experimental.get("msc3848_enabled", False) # MSC3852: Expose last seen user agent field on /_matrix/client/v3/devices. self.msc3852_enabled: bool = experimental.get("msc3852_enabled", False) # MSC3866: M_USER_AWAITING_APPROVAL error code raw_msc3866_config = experimental.get("msc3866", {}) self.msc3866 = MSC3866Config(**raw_msc3866_config) # MSC3881: Remotely toggle push notifications for another client self.msc3881_enabled: bool = experimental.get("msc3881_enabled", False) # MSC3874: Filtering /messages with rel_types / not_rel_types. self.msc3874_enabled: bool = experimental.get("msc3874_enabled", False) # MSC3886: Simple client rendezvous capability self.msc3886_endpoint: Optional[str] = experimental.get( "msc3886_endpoint", None ) # MSC3890: Remotely silence local notifications # Note: This option requires "experimental_features.msc3391_enabled" to be # set to "true", in order to communicate account data deletions to clients. self.msc3890_enabled: bool = experimental.get("msc3890_enabled", False) if self.msc3890_enabled and not self.msc3391_enabled: raise ConfigError( "Option 'experimental_features.msc3391' must be set to 'true' to " "enable 'experimental_features.msc3890'. MSC3391 functionality is " "required to communicate account data deletions to clients." ) # MSC3381: Polls. # In practice, supporting polls in Synapse only requires an implementation of # MSC3930: Push rules for MSC3391 polls; which is what this option enables. self.msc3381_polls_enabled: bool = experimental.get( "msc3381_polls_enabled", False ) # MSC3912: Relation-based redactions. self.msc3912_enabled: bool = experimental.get("msc3912_enabled", False) # MSC1767 and friends: Extensible Events self.msc1767_enabled: bool = experimental.get("msc1767_enabled", False) if self.msc1767_enabled: # Enable room version (and thus applicable push rules from MSC3931/3932) version_id = RoomVersions.MSC1767v10.identifier KNOWN_ROOM_VERSIONS[version_id] = RoomVersions.MSC1767v10 # MSC3391: Removing account data. self.msc3391_enabled = experimental.get("msc3391_enabled", False) # MSC3967: Do not require UIA when first uploading cross signing keys self.msc3967_enabled = experimental.get("msc3967_enabled", False) # MSC3981: Recurse relations self.msc3981_recurse_relations = experimental.get( "msc3981_recurse_relations", False ) # MSC3861: Matrix architecture change to delegate authentication via OIDC try: self.msc3861 = MSC3861(**experimental.get("msc3861", {})) except ValueError as exc: raise ConfigError( "Invalid MSC3861 configuration", ("experimental", "msc3861") ) from exc # Check that none of the other config options conflict with MSC3861 when enabled self.msc3861.check_config_conflicts(self.root) # MSC4010: Do not allow setting m.push_rules account data. self.msc4010_push_rules_account_data = experimental.get( "msc4010_push_rules_account_data", False ) # MSC4041: Use HTTP header Retry-After to enable library-assisted retry handling # # This is a bit hacky, but the most reasonable way to *alway* include the # headers. LimitExceededError.include_retry_after_header = experimental.get( "msc4041_enabled", False ) self.msc4028_push_encrypted_events = experimental.get( "msc4028_push_encrypted_events", False ) self.msc4069_profile_inhibit_propagation = experimental.get( "msc4069_profile_inhibit_propagation", False ) synapse-1.100.0/synapse/config/federation.py000066400000000000000000000072721455622526000207730ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, Optional from synapse.config._base import Config from synapse.config._util import validate_config from synapse.types import JsonDict class FederationConfig(Config): section = "federation" def read_config(self, config: JsonDict, **kwargs: Any) -> None: federation_config = config.setdefault("federation", {}) # FIXME: federation_domain_whitelist needs sytests self.federation_domain_whitelist: Optional[dict] = None federation_domain_whitelist = config.get("federation_domain_whitelist", None) if federation_domain_whitelist is not None: # turn the whitelist into a hash for speed of lookup self.federation_domain_whitelist = {} for domain in federation_domain_whitelist: self.federation_domain_whitelist[domain] = True federation_metrics_domains = config.get("federation_metrics_domains") or [] validate_config( _METRICS_FOR_DOMAINS_SCHEMA, federation_metrics_domains, ("federation_metrics_domains",), ) self.federation_metrics_domains = set(federation_metrics_domains) self.allow_profile_lookup_over_federation = config.get( "allow_profile_lookup_over_federation", True ) self.allow_device_name_lookup_over_federation = config.get( "allow_device_name_lookup_over_federation", False ) # Allow for the configuration of timeout, max request retries # and min/max retry delays in the matrix federation client. self.client_timeout_ms = Config.parse_duration( federation_config.get("client_timeout", "60s") ) self.max_long_retry_delay_ms = Config.parse_duration( federation_config.get("max_long_retry_delay", "60s") ) self.max_short_retry_delay_ms = Config.parse_duration( federation_config.get("max_short_retry_delay", "2s") ) self.max_long_retries = federation_config.get("max_long_retries", 10) self.max_short_retries = federation_config.get("max_short_retries", 3) # Allow for the configuration of the backoff algorithm used # when trying to reach an unavailable destination. # Unlike previous configuration those values applies across # multiple requests and the state of the backoff is stored on DB. self.destination_min_retry_interval_ms = Config.parse_duration( federation_config.get("destination_min_retry_interval", "10m") ) self.destination_retry_multiplier = federation_config.get( "destination_retry_multiplier", 2 ) self.destination_max_retry_interval_ms = min( Config.parse_duration( federation_config.get("destination_max_retry_interval", "7d") ), # Set a hard-limit to not overflow the database column. 2**62, ) _METRICS_FOR_DOMAINS_SCHEMA = {"type": "array", "items": {"type": "string"}} synapse-1.100.0/synapse/config/homeserver.py000066400000000000000000000064041455622526000210260ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from ._base import RootConfig from .account_validity import AccountValidityConfig from .api import ApiConfig from .appservice import AppServiceConfig from .auth import AuthConfig from .background_updates import BackgroundUpdateConfig from .cache import CacheConfig from .captcha import CaptchaConfig from .cas import CasConfig from .consent import ConsentConfig from .database import DatabaseConfig from .emailconfig import EmailConfig from .experimental import ExperimentalConfig from .federation import FederationConfig from .jwt import JWTConfig from .key import KeyConfig from .logger import LoggingConfig from .metrics import MetricsConfig from .modules import ModulesConfig from .oembed import OembedConfig from .oidc import OIDCConfig from .password_auth_providers import PasswordAuthProviderConfig from .push import PushConfig from .ratelimiting import RatelimitConfig from .redis import RedisConfig from .registration import RegistrationConfig from .repository import ContentRepositoryConfig from .retention import RetentionConfig from .room import RoomConfig from .room_directory import RoomDirectoryConfig from .saml2 import SAML2Config from .server import ServerConfig from .server_notices import ServerNoticesConfig from .spam_checker import SpamCheckerConfig from .sso import SSOConfig from .stats import StatsConfig from .third_party_event_rules import ThirdPartyRulesConfig from .tls import TlsConfig from .tracer import TracerConfig from .user_directory import UserDirectoryConfig from .voip import VoipConfig from .workers import WorkerConfig class HomeServerConfig(RootConfig): config_classes = [ ModulesConfig, ServerConfig, RetentionConfig, TlsConfig, FederationConfig, CacheConfig, DatabaseConfig, LoggingConfig, RatelimitConfig, ContentRepositoryConfig, OembedConfig, CaptchaConfig, VoipConfig, RegistrationConfig, AccountValidityConfig, MetricsConfig, ApiConfig, AppServiceConfig, KeyConfig, SAML2Config, OIDCConfig, CasConfig, SSOConfig, JWTConfig, AuthConfig, EmailConfig, PasswordAuthProviderConfig, PushConfig, SpamCheckerConfig, RoomConfig, UserDirectoryConfig, ConsentConfig, StatsConfig, ServerNoticesConfig, RoomDirectoryConfig, ThirdPartyRulesConfig, TracerConfig, WorkerConfig, RedisConfig, ExperimentalConfig, BackgroundUpdateConfig, ] synapse-1.100.0/synapse/config/jwt.py000066400000000000000000000034371455622526000174560ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015 Niklas Riekenbrauck # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from synapse.util.check_dependencies import check_requirements from ._base import Config class JWTConfig(Config): section = "jwt" def read_config(self, config: JsonDict, **kwargs: Any) -> None: jwt_config = config.get("jwt_config", None) if jwt_config: self.jwt_enabled = jwt_config.get("enabled", False) self.jwt_secret = jwt_config["secret"] self.jwt_algorithm = jwt_config["algorithm"] self.jwt_subject_claim = jwt_config.get("subject_claim", "sub") # The issuer and audiences are optional, if provided, it is asserted # that the claims exist on the JWT. self.jwt_issuer = jwt_config.get("issuer") self.jwt_audiences = jwt_config.get("audiences") check_requirements("jwt") else: self.jwt_enabled = False self.jwt_secret = None self.jwt_algorithm = None self.jwt_subject_claim = None self.jwt_issuer = None self.jwt_audiences = None synapse-1.100.0/synapse/config/key.py000066400000000000000000000355561455622526000174510ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import hashlib import logging import os from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Optional import attr import jsonschema from signedjson.key import ( NACL_ED25519, SigningKey, VerifyKey, decode_signing_key_base64, decode_verify_key_bytes, generate_signing_key, is_signing_algorithm_supported, read_signing_keys, write_signing_keys, ) from unpaddedbase64 import decode_base64 from synapse.types import JsonDict from synapse.util.stringutils import random_string, random_string_with_symbols from ._base import Config, ConfigError if TYPE_CHECKING: from signedjson.key import VerifyKeyWithExpiry INSECURE_NOTARY_ERROR = """\ Your server is configured to accept key server responses without signature validation or TLS certificate validation. This is likely to be very insecure. If you are *sure* you want to do this, set 'accept_keys_insecurely' on the keyserver configuration.""" RELYING_ON_MATRIX_KEY_ERROR = """\ Your server is configured to accept key server responses without TLS certificate validation, and which are only signed by the old (possibly compromised) matrix.org signing key 'ed25519:auto'. This likely isn't what you want to do, and you should enable 'federation_verify_certificates' in your configuration. If you are *sure* you want to do this, set 'accept_keys_insecurely' on the trusted_key_server configuration.""" TRUSTED_KEY_SERVER_NOT_CONFIGURED_WARN = """\ Synapse requires that a list of trusted key servers are specified in order to provide signing keys for other servers in the federation. This homeserver does not have a trusted key server configured in homeserver.yaml and will fall back to the default of 'matrix.org'. Trusted key servers should be long-lived and stable which makes matrix.org a good choice for many admins, but some admins may wish to choose another. To suppress this warning, the admin should set 'trusted_key_servers' in homeserver.yaml to their desired key server and 'suppress_key_server_warning' to 'true'. In a future release the software-defined default will be removed entirely and the trusted key server will be defined exclusively by the value of 'trusted_key_servers'. --------------------------------------------------------------------------------""" TRUSTED_KEY_SERVER_CONFIGURED_AS_M_ORG_WARN = """\ This server is configured to use 'matrix.org' as its trusted key server via the 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key server since it is long-lived, stable and trusted. However, some admins may wish to use another server for this purpose. To suppress this warning and continue using 'matrix.org', admins should set 'suppress_key_server_warning' to 'true' in homeserver.yaml. --------------------------------------------------------------------------------""" logger = logging.getLogger(__name__) @attr.s(slots=True, auto_attribs=True) class TrustedKeyServer: # name of the server. server_name: str # map from key id to key object, or None to disable signature verification. verify_keys: Optional[Dict[str, VerifyKey]] = None class KeyConfig(Config): section = "key" def read_config( self, config: JsonDict, config_dir_path: str, **kwargs: Any ) -> None: # the signing key can be specified inline or in a separate file if "signing_key" in config: self.signing_key = read_signing_keys([config["signing_key"]]) else: assert config_dir_path is not None signing_key_path = config.get("signing_key_path") if signing_key_path is None: signing_key_path = os.path.join( config_dir_path, config["server_name"] + ".signing.key" ) self.signing_key = self.read_signing_keys(signing_key_path, "signing_key") self.old_signing_keys = self.read_old_signing_keys( config.get("old_signing_keys") ) self.key_refresh_interval = self.parse_duration( config.get("key_refresh_interval", "1d") ) suppress_key_server_warning = config.get("suppress_key_server_warning", False) key_server_signing_keys_path = config.get("key_server_signing_keys_path") if key_server_signing_keys_path: self.key_server_signing_keys = self.read_signing_keys( key_server_signing_keys_path, "key_server_signing_keys_path" ) else: self.key_server_signing_keys = list(self.signing_key) # if neither trusted_key_servers nor perspectives are given, use the default. if "perspectives" not in config and "trusted_key_servers" not in config: logger.warning(TRUSTED_KEY_SERVER_NOT_CONFIGURED_WARN) key_servers = [{"server_name": "matrix.org"}] else: key_servers = config.get("trusted_key_servers", []) if not isinstance(key_servers, list): raise ConfigError( "trusted_key_servers, if given, must be a list, not a %s" % (type(key_servers).__name__,) ) # merge the 'perspectives' config into the 'trusted_key_servers' config. key_servers.extend(_perspectives_to_key_servers(config)) if not suppress_key_server_warning and "matrix.org" in ( s["server_name"] for s in key_servers ): logger.warning(TRUSTED_KEY_SERVER_CONFIGURED_AS_M_ORG_WARN) # list of TrustedKeyServer objects self.key_servers = list( _parse_key_servers( key_servers, self.root.tls.federation_verify_certificates ) ) macaroon_secret_key: Optional[str] = config.get( "macaroon_secret_key", self.root.registration.registration_shared_secret ) if not macaroon_secret_key: # Unfortunately, there are people out there that don't have this # set. Lets just be "nice" and derive one from their secret key. logger.warning("Config is missing macaroon_secret_key") seed = bytes(self.signing_key[0]) self.macaroon_secret_key = hashlib.sha256(seed).digest() else: self.macaroon_secret_key = macaroon_secret_key.encode("utf-8") # a secret which is used to calculate HMACs for form values, to stop # falsification of values self.form_secret = config.get("form_secret", None) def generate_config_section( self, config_dir_path: str, server_name: str, generate_secrets: bool = False, **kwargs: Any, ) -> str: base_key_name = os.path.join(config_dir_path, server_name) macaroon_secret_key = "" form_secret = "" if generate_secrets: macaroon_secret_key = 'macaroon_secret_key: "%s"' % ( random_string_with_symbols(50), ) form_secret = 'form_secret: "%s"' % random_string_with_symbols(50) return ( """\ %(macaroon_secret_key)s %(form_secret)s signing_key_path: "%(base_key_name)s.signing.key" trusted_key_servers: - server_name: "matrix.org" """ % locals() ) def read_signing_keys(self, signing_key_path: str, name: str) -> List[SigningKey]: """Read the signing keys in the given path. Args: signing_key_path name: Associated config key name Returns: The signing keys read from the given path. """ signing_keys = self.read_file(signing_key_path, name) try: loaded_signing_keys = read_signing_keys( [ signing_key_line for signing_key_line in signing_keys.splitlines(keepends=False) if signing_key_line.strip() ] ) if not loaded_signing_keys: raise ConfigError(f"No signing keys in file {signing_key_path}") return loaded_signing_keys except Exception as e: raise ConfigError("Error reading %s: %s" % (name, str(e))) def read_old_signing_keys( self, old_signing_keys: Optional[JsonDict] ) -> Dict[str, "VerifyKeyWithExpiry"]: if old_signing_keys is None: return {} keys = {} for key_id, key_data in old_signing_keys.items(): if is_signing_algorithm_supported(key_id): key_base64 = key_data["key"] key_bytes = decode_base64(key_base64) verify_key: "VerifyKeyWithExpiry" = decode_verify_key_bytes(key_id, key_bytes) # type: ignore[assignment] verify_key.expired = key_data["expired_ts"] keys[key_id] = verify_key else: raise ConfigError( "Unsupported signing algorithm for old key: %r" % (key_id,) ) return keys def generate_files(self, config: Dict[str, Any], config_dir_path: str) -> None: if "signing_key" in config: return signing_key_path = config.get("signing_key_path") if signing_key_path is None: signing_key_path = os.path.join( config_dir_path, config["server_name"] + ".signing.key" ) if not self.path_exists(signing_key_path): print("Generating signing key file %s" % (signing_key_path,)) with open( signing_key_path, "w", opener=lambda p, f: os.open(p, f, mode=0o640) ) as signing_key_file: key_id = "a_" + random_string(4) write_signing_keys(signing_key_file, (generate_signing_key(key_id),)) else: signing_keys = self.read_file(signing_key_path, "signing_key") if len(signing_keys.split("\n")[0].split()) == 1: # handle keys in the old format. key_id = "a_" + random_string(4) key = decode_signing_key_base64( NACL_ED25519, key_id, signing_keys.split("\n")[0] ) with open( signing_key_path, "w", opener=lambda p, f: os.open(p, f, mode=0o640) ) as signing_key_file: write_signing_keys(signing_key_file, (key,)) def _perspectives_to_key_servers(config: JsonDict) -> Iterator[JsonDict]: """Convert old-style 'perspectives' configs into new-style 'trusted_key_servers' Returns an iterable of entries to add to trusted_key_servers. """ # 'perspectives' looks like: # # { # "servers": { # "matrix.org": { # "verify_keys": { # "ed25519:auto": { # "key": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw" # } # } # } # } # } # # 'trusted_keys' looks like: # # [ # { # "server_name": "matrix.org", # "verify_keys": { # "ed25519:auto": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw", # } # } # ] perspectives_servers = config.get("perspectives", {}).get("servers", {}) for server_name, server_opts in perspectives_servers.items(): trusted_key_server_entry = {"server_name": server_name} verify_keys = server_opts.get("verify_keys") if verify_keys is not None: trusted_key_server_entry["verify_keys"] = { key_id: key_data["key"] for key_id, key_data in verify_keys.items() } yield trusted_key_server_entry TRUSTED_KEY_SERVERS_SCHEMA = { "$schema": "http://json-schema.org/draft-04/schema#", "description": "schema for the trusted_key_servers setting", "type": "array", "items": { "type": "object", "properties": { "server_name": {"type": "string"}, "verify_keys": { "type": "object", # each key must be a base64 string "additionalProperties": {"type": "string"}, }, }, "required": ["server_name"], }, } def _parse_key_servers( key_servers: List[Any], federation_verify_certificates: bool ) -> Iterator[TrustedKeyServer]: try: jsonschema.validate(key_servers, TRUSTED_KEY_SERVERS_SCHEMA) except jsonschema.ValidationError as e: raise ConfigError( "Unable to parse 'trusted_key_servers': {}".format( e.message # noqa: B306, jsonschema.ValidationError.message is a valid attribute ) ) for server in key_servers: server_name = server["server_name"] result = TrustedKeyServer(server_name=server_name) verify_keys: Optional[Dict[str, str]] = server.get("verify_keys") if verify_keys is not None: result.verify_keys = {} for key_id, key_base64 in verify_keys.items(): if not is_signing_algorithm_supported(key_id): raise ConfigError( "Unsupported signing algorithm on key %s for server %s in " "trusted_key_servers" % (key_id, server_name) ) try: key_bytes = decode_base64(key_base64) verify_key = decode_verify_key_bytes(key_id, key_bytes) except Exception as e: raise ConfigError( "Unable to parse key %s for server %s in " "trusted_key_servers: %s" % (key_id, server_name, e) ) result.verify_keys[key_id] = verify_key if not federation_verify_certificates and not server.get( "accept_keys_insecurely" ): _assert_keyserver_has_verify_keys(result) yield result def _assert_keyserver_has_verify_keys(trusted_key_server: TrustedKeyServer) -> None: if not trusted_key_server.verify_keys: raise ConfigError(INSECURE_NOTARY_ERROR) # also check that they are not blindly checking the old matrix.org key if trusted_key_server.server_name == "matrix.org" and any( key_id == "ed25519:auto" for key_id in trusted_key_server.verify_keys ): raise ConfigError(RELYING_ON_MATRIX_KEY_ERROR) synapse-1.100.0/synapse/config/logger.py000066400000000000000000000276341455622526000201360ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import logging import logging.config import os import sys import threading from string import Template from typing import TYPE_CHECKING, Any, Dict, Optional import yaml from zope.interface import implementer from twisted.logger import ( ILogObserver, LogBeginner, STDLibLogObserver, eventAsText, globalLogBeginner, ) from synapse.logging.context import LoggingContextFilter from synapse.logging.filter import MetadataFilter from synapse.synapse_rust import reset_logging_config from synapse.types import JsonDict from ..util import SYNAPSE_VERSION from ._base import Config, ConfigError if TYPE_CHECKING: from synapse.config.homeserver import HomeServerConfig from synapse.server import HomeServer DEFAULT_LOG_CONFIG = Template( """\ # Log configuration for Synapse. # # This is a YAML file containing a standard Python logging configuration # dictionary. See [1] for details on the valid settings. # # Synapse also supports structured logging for machine readable logs which can # be ingested by ELK stacks. See [2] for details. # # [1]: https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema # [2]: https://element-hq.github.io/synapse/latest/structured_logging.html version: 1 formatters: precise: format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - \ %(request)s - %(message)s' handlers: file: class: logging.handlers.TimedRotatingFileHandler formatter: precise filename: ${log_file} when: midnight backupCount: 3 # Does not include the current log file. encoding: utf8 # Default to buffering writes to log file for efficiency. # WARNING/ERROR logs will still be flushed immediately, but there will be a # delay (of up to `period` seconds, or until the buffer is full with # `capacity` messages) before INFO/DEBUG logs get written. buffer: class: synapse.logging.handlers.PeriodicallyFlushingMemoryHandler target: file # The capacity is the maximum number of log lines that are buffered # before being written to disk. Increasing this will lead to better # performance, at the expensive of it taking longer for log lines to # be written to disk. # This parameter is required. capacity: 10 # Logs with a level at or above the flush level will cause the buffer to # be flushed immediately. # Default value: 40 (ERROR) # Other values: 50 (CRITICAL), 30 (WARNING), 20 (INFO), 10 (DEBUG) flushLevel: 30 # Flush immediately for WARNING logs and higher # The period of time, in seconds, between forced flushes. # Messages will not be delayed for longer than this time. # Default value: 5 seconds period: 5 # A handler that writes logs to stderr. Unused by default, but can be used # instead of "buffer" and "file" in the logger handlers. console: class: logging.StreamHandler formatter: precise loggers: synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO root: level: INFO # Write logs to the `buffer` handler, which will buffer them together in memory, # then write them to a file. # # Replace "buffer" with "console" to log to stderr instead. # handlers: [buffer] disable_existing_loggers: false """ ) LOG_FILE_ERROR = """\ Support for the log_file configuration option and --log-file command-line option was removed in Synapse 1.3.0. You should instead set up a separate log configuration file. """ STRUCTURED_ERROR = """\ Support for the structured configuration option was removed in Synapse 1.54.0. You should instead use the standard logging configuration. See https://element-hq.github.io/synapse/v1.54/structured_logging.html """ class LoggingConfig(Config): section = "logging" def read_config(self, config: JsonDict, **kwargs: Any) -> None: if config.get("log_file"): raise ConfigError(LOG_FILE_ERROR) self.log_config = self.abspath(config.get("log_config")) self.no_redirect_stdio = config.get("no_redirect_stdio", False) def generate_config_section( self, config_dir_path: str, server_name: str, **kwargs: Any ) -> str: log_config = os.path.join(config_dir_path, server_name + ".log.config") return ( """\ log_config: "%(log_config)s" """ % locals() ) def read_arguments(self, args: argparse.Namespace) -> None: if args.no_redirect_stdio is not None: self.no_redirect_stdio = args.no_redirect_stdio if args.log_file is not None: raise ConfigError(LOG_FILE_ERROR) @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: logging_group = parser.add_argument_group("logging") logging_group.add_argument( "-n", "--no-redirect-stdio", action="store_true", default=None, help="Do not redirect stdout/stderr to the log", ) logging_group.add_argument( "-f", "--log-file", dest="log_file", help=argparse.SUPPRESS, ) def generate_files(self, config: Dict[str, Any], config_dir_path: str) -> None: log_config = config.get("log_config") if log_config and not os.path.exists(log_config): log_file = self.abspath("homeserver.log") print( "Generating log config file %s which will log to %s" % (log_config, log_file) ) with open(log_config, "w") as log_config_file: log_config_file.write(DEFAULT_LOG_CONFIG.substitute(log_file=log_file)) def _setup_stdlib_logging( config: "HomeServerConfig", log_config_path: Optional[str], logBeginner: LogBeginner ) -> None: """ Set up Python standard library logging. """ # We add a log record factory that runs all messages through the # LoggingContextFilter so that we get the context *at the time we log* # rather than when we write to a handler. This can be done in config using # filter options, but care must when using e.g. MemoryHandler to buffer # writes. log_context_filter = LoggingContextFilter() log_metadata_filter = MetadataFilter({"server_name": config.server.server_name}) old_factory = logging.getLogRecordFactory() def factory(*args: Any, **kwargs: Any) -> logging.LogRecord: record = old_factory(*args, **kwargs) log_context_filter.filter(record) log_metadata_filter.filter(record) return record logging.setLogRecordFactory(factory) # Configure the logger with the initial configuration. if log_config_path is None: log_format = ( "%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s" " - %(message)s" ) logger = logging.getLogger("") logger.setLevel(logging.INFO) logging.getLogger("synapse.storage.SQL").setLevel(logging.INFO) formatter = logging.Formatter(log_format) handler = logging.StreamHandler() handler.setFormatter(formatter) logger.addHandler(handler) else: # Load the logging configuration. _load_logging_config(log_config_path) # Route Twisted's native logging through to the standard library logging # system. observer = STDLibLogObserver() threadlocal = threading.local() @implementer(ILogObserver) def _log(event: dict) -> None: if "log_text" in event: if event["log_text"].startswith("DNSDatagramProtocol starting on "): return if event["log_text"].startswith("(UDP Port "): return if event["log_text"].startswith("Timing out client"): return # this is a workaround to make sure we don't get stack overflows when the # logging system raises an error which is written to stderr which is redirected # to the logging system, etc. if getattr(threadlocal, "active", False): # write the text of the event, if any, to the *real* stderr (which may # be redirected to /dev/null, but there's not much we can do) try: event_text = eventAsText(event) print("logging during logging: %s" % event_text, file=sys.__stderr__) except Exception: # gah. pass return try: threadlocal.active = True return observer(event) finally: threadlocal.active = False logBeginner.beginLoggingTo([_log], redirectStandardIO=False) def _load_logging_config(log_config_path: str) -> None: """ Configure logging from a log config path. """ with open(log_config_path, "rb") as f: log_config = yaml.safe_load(f.read()) if not log_config: logging.warning("Loaded a blank logging config?") # If the old structured logging configuration is being used, raise an error. if "structured" in log_config and log_config.get("structured"): raise ConfigError(STRUCTURED_ERROR) logging.config.dictConfig(log_config) # Blow away the pyo3-log cache so that it reloads the configuration. reset_logging_config() def _reload_logging_config(log_config_path: Optional[str]) -> None: """ Reload the log configuration from the file and apply it. """ # If no log config path was given, it cannot be reloaded. if log_config_path is None: return _load_logging_config(log_config_path) logging.info("Reloaded log config from %s due to SIGHUP", log_config_path) def setup_logging( hs: "HomeServer", config: "HomeServerConfig", use_worker_options: bool = False, logBeginner: LogBeginner = globalLogBeginner, ) -> None: """ Set up the logging subsystem. Args: config: configuration data use_worker_options: True to use the 'worker_log_config' option instead of 'log_config'. logBeginner: The Twisted logBeginner to use. """ from twisted.internet import reactor log_config_path = ( config.worker.worker_log_config if use_worker_options else config.logging.log_config ) # Perform one-time logging configuration. _setup_stdlib_logging(config, log_config_path, logBeginner=logBeginner) # Add a SIGHUP handler to reload the logging configuration, if one is available. from synapse.app import _base as appbase appbase.register_sighup(_reload_logging_config, log_config_path) # Log immediately so we can grep backwards. logging.warning("***** STARTING SERVER *****") logging.warning( "Server %s version %s", sys.argv[0], SYNAPSE_VERSION, ) logging.warning("Copyright (c) 2023 New Vector, Inc") logging.warning( "Licensed under the AGPL 3.0 license. Website: https://github.com/element-hq/synapse" ) logging.info("Server hostname: %s", config.server.server_name) logging.info("Instance name: %s", hs.get_instance_name()) logging.info("Twisted reactor: %s", type(reactor).__name__) synapse-1.100.0/synapse/config/metrics.py000066400000000000000000000053141455622526000203140ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, Optional import attr from synapse.types import JsonDict from synapse.util.check_dependencies import check_requirements from ._base import Config, ConfigError @attr.s class MetricsFlags: known_servers: bool = attr.ib( default=False, validator=attr.validators.instance_of(bool) ) @classmethod def all_off(cls) -> "MetricsFlags": """ Instantiate the flags with all options set to off. """ return cls(**{x.name: False for x in attr.fields(cls)}) class MetricsConfig(Config): section = "metrics" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.enable_metrics = config.get("enable_metrics", False) self.report_stats = config.get("report_stats", None) self.report_stats_endpoint = config.get( "report_stats_endpoint", "https://matrix.org/report-usage-stats/push" ) self.metrics_port = config.get("metrics_port") self.metrics_bind_host = config.get("metrics_bind_host", "127.0.0.1") if self.enable_metrics: _metrics_config = config.get("metrics_flags") or {} self.metrics_flags = MetricsFlags(**_metrics_config) else: self.metrics_flags = MetricsFlags.all_off() self.sentry_enabled = "sentry" in config if self.sentry_enabled: check_requirements("sentry") self.sentry_dsn = config["sentry"].get("dsn") self.sentry_environment = config["sentry"].get("environment") if not self.sentry_dsn: raise ConfigError( "sentry.dsn field is required when sentry integration is enabled" ) def generate_config_section( self, report_stats: Optional[bool] = None, **kwargs: Any ) -> str: if report_stats is not None: res = "report_stats: %s\n" % ("true" if report_stats else "false") else: res = "\n" return res synapse-1.100.0/synapse/config/modules.py000066400000000000000000000026431455622526000203200ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, Dict, List, Tuple from synapse.config._base import Config, ConfigError from synapse.types import JsonDict from synapse.util.module_loader import load_module class ModulesConfig(Config): section = "modules" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.loaded_modules: List[Tuple[Any, Dict]] = [] configured_modules = config.get("modules") or [] for i, module in enumerate(configured_modules): config_path = ("modules", "" % i) if not isinstance(module, dict): raise ConfigError("expected a mapping", config_path) self.loaded_modules.append(load_module(module, config_path)) synapse-1.100.0/synapse/config/oembed.py000066400000000000000000000143411455622526000201010ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import json import re from typing import Any, Dict, Iterable, List, Optional, Pattern from urllib import parse as urlparse import attr import pkg_resources from synapse.types import JsonDict, StrSequence from ._base import Config, ConfigError from ._util import validate_config @attr.s(slots=True, frozen=True, auto_attribs=True) class OEmbedEndpointConfig: # The API endpoint to fetch. api_endpoint: str # The patterns to match. url_patterns: List[Pattern[str]] # The supported formats. formats: Optional[List[str]] class OembedConfig(Config): """oEmbed Configuration""" section = "oembed" def read_config(self, config: JsonDict, **kwargs: Any) -> None: oembed_config: Dict[str, Any] = config.get("oembed") or {} # A list of patterns which will be used. self.oembed_patterns: List[OEmbedEndpointConfig] = list( self._parse_and_validate_providers(oembed_config) ) def _parse_and_validate_providers( self, oembed_config: dict ) -> Iterable[OEmbedEndpointConfig]: """Extract and parse the oEmbed providers from the given JSON file. Returns a generator which yields the OidcProviderConfig objects """ # Whether to use the packaged providers.json file. if not oembed_config.get("disable_default_providers") or False: with pkg_resources.resource_stream("synapse", "res/providers.json") as s: providers = json.load(s) yield from self._parse_and_validate_provider( providers, config_path=("oembed",) ) # The JSON files which includes additional provider information. for i, file in enumerate(oembed_config.get("additional_providers") or []): # TODO Error checking. with open(file) as f: providers = json.load(f) yield from self._parse_and_validate_provider( providers, config_path=( "oembed", "additional_providers", f"", ), ) def _parse_and_validate_provider( self, providers: List[JsonDict], config_path: StrSequence ) -> Iterable[OEmbedEndpointConfig]: # Ensure it is the proper form. validate_config( _OEMBED_PROVIDER_SCHEMA, providers, config_path=config_path, ) # Parse it and yield each result. for provider in providers: # Each provider might have multiple API endpoints, each which # might have multiple patterns to match. for endpoint in provider["endpoints"]: api_endpoint = endpoint["url"] # The API endpoint must be an HTTP(S) URL. results = urlparse.urlparse(api_endpoint) if results.scheme not in {"http", "https"}: raise ConfigError( f"Unsupported oEmbed scheme ({results.scheme}) for endpoint {api_endpoint}", config_path, ) patterns = [ self._glob_to_pattern(glob, config_path) for glob in endpoint["schemes"] ] yield OEmbedEndpointConfig( api_endpoint, patterns, endpoint.get("formats") ) def _glob_to_pattern(self, glob: str, config_path: StrSequence) -> Pattern: """ Convert the glob into a sane regular expression to match against. The rules followed will be slightly different for the domain portion vs. the rest. 1. The scheme must be one of HTTP / HTTPS (and have no globs). 2. The domain can have globs, but we limit it to characters that can reasonably be a domain part. TODO: This does not attempt to handle Unicode domain names. TODO: The domain should not allow wildcard TLDs. 3. Other parts allow a glob to be any one, or more, characters. """ results = urlparse.urlparse(glob) # The scheme must be HTTP(S) (and cannot contain wildcards). if results.scheme not in {"http", "https"}: raise ConfigError( f"Unsupported oEmbed scheme ({results.scheme}) for pattern: {glob}", config_path, ) pattern = urlparse.urlunparse( [ results.scheme, re.escape(results.netloc).replace("\\*", "[a-zA-Z0-9_-]+"), ] + [re.escape(part).replace("\\*", ".+") for part in results[2:]] ) return re.compile(pattern) _OEMBED_PROVIDER_SCHEMA = { "type": "array", "items": { "type": "object", "properties": { "provider_name": {"type": "string"}, "provider_url": {"type": "string"}, "endpoints": { "type": "array", "items": { "type": "object", "properties": { "schemes": { "type": "array", "items": {"type": "string"}, }, "url": {"type": "string"}, "formats": {"type": "array", "items": {"type": "string"}}, "discovery": {"type": "boolean"}, }, "required": ["schemes", "url"], }, }, }, "required": ["provider_name", "provider_url", "endpoints"], }, } synapse-1.100.0/synapse/config/oidc.py000066400000000000000000000413471455622526000175720ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # Copyright 2020 Quentin Gliech # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from collections import Counter from typing import Any, Collection, Iterable, List, Mapping, Optional, Tuple, Type import attr from synapse.config._util import validate_config from synapse.config.sso import SsoAttributeRequirement from synapse.types import JsonDict from synapse.util.module_loader import load_module from synapse.util.stringutils import parse_and_validate_mxc_uri from ..util.check_dependencies import check_requirements from ._base import Config, ConfigError, read_file DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.oidc.JinjaOidcMappingProvider" # The module that JinjaOidcMappingProvider is in was renamed, we want to # transparently handle both the same. LEGACY_USER_MAPPING_PROVIDER = "synapse.handlers.oidc_handler.JinjaOidcMappingProvider" class OIDCConfig(Config): section = "oidc" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.oidc_providers = tuple(_parse_oidc_provider_configs(config)) if not self.oidc_providers: return check_requirements("oidc") # check we don't have any duplicate idp_ids now. (The SSO handler will also # check for duplicates when the REST listeners get registered, but that happens # after synapse has forked so doesn't give nice errors.) c = Counter([i.idp_id for i in self.oidc_providers]) for idp_id, count in c.items(): if count > 1: raise ConfigError( "Multiple OIDC providers have the idp_id %r." % idp_id ) public_baseurl = self.root.server.public_baseurl self.oidc_callback_url = public_baseurl + "_synapse/client/oidc/callback" @property def oidc_enabled(self) -> bool: # OIDC is enabled if we have a provider return bool(self.oidc_providers) # jsonschema definition of the configuration settings for an oidc identity provider OIDC_PROVIDER_CONFIG_SCHEMA = { "type": "object", "required": ["issuer", "client_id"], "properties": { "idp_id": { "type": "string", "minLength": 1, # MSC2858 allows a maxlen of 255, but we prefix with "oidc-" "maxLength": 250, "pattern": "^[A-Za-z0-9._~-]+$", }, "idp_name": {"type": "string"}, "idp_icon": {"type": "string"}, "idp_brand": { "type": "string", "minLength": 1, "maxLength": 255, "pattern": "^[a-z][a-z0-9_.-]*$", }, "discover": {"type": "boolean"}, "issuer": {"type": "string"}, "client_id": {"type": "string"}, "client_secret": {"type": "string"}, "client_secret_jwt_key": { "type": "object", "required": ["jwt_header"], "oneOf": [ {"required": ["key"]}, {"required": ["key_file"]}, ], "properties": { "key": {"type": "string"}, "key_file": {"type": "string"}, "jwt_header": { "type": "object", "required": ["alg"], "properties": { "alg": {"type": "string"}, }, "additionalProperties": {"type": "string"}, }, "jwt_payload": { "type": "object", "additionalProperties": {"type": "string"}, }, }, }, "client_auth_method": { "type": "string", # the following list is the same as the keys of # authlib.oauth2.auth.ClientAuth.DEFAULT_AUTH_METHODS. We inline it # to avoid importing authlib here. "enum": ["client_secret_basic", "client_secret_post", "none"], }, "pkce_method": {"type": "string", "enum": ["auto", "always", "never"]}, "scopes": {"type": "array", "items": {"type": "string"}}, "authorization_endpoint": {"type": "string"}, "token_endpoint": {"type": "string"}, "userinfo_endpoint": {"type": "string"}, "jwks_uri": {"type": "string"}, "skip_verification": {"type": "boolean"}, "backchannel_logout_enabled": {"type": "boolean"}, "backchannel_logout_ignore_sub": {"type": "boolean"}, "user_profile_method": { "type": "string", "enum": ["auto", "userinfo_endpoint"], }, "allow_existing_users": {"type": "boolean"}, "user_mapping_provider": {"type": ["object", "null"]}, "attribute_requirements": { "type": "array", "items": SsoAttributeRequirement.JSON_SCHEMA, }, "enable_registration": {"type": "boolean"}, }, } # the same as OIDC_PROVIDER_CONFIG_SCHEMA, but with compulsory idp_id and idp_name OIDC_PROVIDER_CONFIG_WITH_ID_SCHEMA = { "allOf": [OIDC_PROVIDER_CONFIG_SCHEMA, {"required": ["idp_id", "idp_name"]}] } # the `oidc_providers` list can either be None (as it is in the default config), or # a list of provider configs, each of which requires an explicit ID and name. OIDC_PROVIDER_LIST_SCHEMA = { "oneOf": [ {"type": "null"}, {"type": "array", "items": OIDC_PROVIDER_CONFIG_WITH_ID_SCHEMA}, ] } # the `oidc_config` setting can either be None (which it used to be in the default # config), or an object. If an object, it is ignored unless it has an "enabled: True" # property. # # It's *possible* to represent this with jsonschema, but the resultant errors aren't # particularly clear, so we just check for either an object or a null here, and do # additional checks in the code. OIDC_CONFIG_SCHEMA = {"oneOf": [{"type": "null"}, {"type": "object"}]} # the top-level schema can contain an "oidc_config" and/or an "oidc_providers". MAIN_CONFIG_SCHEMA = { "type": "object", "properties": { "oidc_config": OIDC_CONFIG_SCHEMA, "oidc_providers": OIDC_PROVIDER_LIST_SCHEMA, }, } def _parse_oidc_provider_configs(config: JsonDict) -> Iterable["OidcProviderConfig"]: """extract and parse the OIDC provider configs from the config dict The configuration may contain either a single `oidc_config` object with an `enabled: True` property, or a list of provider configurations under `oidc_providers`, *or both*. Returns a generator which yields the OidcProviderConfig objects """ validate_config(MAIN_CONFIG_SCHEMA, config, ()) for i, p in enumerate(config.get("oidc_providers") or []): yield _parse_oidc_config_dict(p, ("oidc_providers", "" % (i,))) # for backwards-compatibility, it is also possible to provide a single "oidc_config" # object with an "enabled: True" property. oidc_config = config.get("oidc_config") if oidc_config and oidc_config.get("enabled", False): # MAIN_CONFIG_SCHEMA checks that `oidc_config` is an object, but not that # it matches OIDC_PROVIDER_CONFIG_SCHEMA (see the comments on OIDC_CONFIG_SCHEMA # above), so now we need to validate it. validate_config(OIDC_PROVIDER_CONFIG_SCHEMA, oidc_config, ("oidc_config",)) yield _parse_oidc_config_dict(oidc_config, ("oidc_config",)) def _parse_oidc_config_dict( oidc_config: JsonDict, config_path: Tuple[str, ...] ) -> "OidcProviderConfig": """Take the configuration dict and parse it into an OidcProviderConfig Raises: ConfigError if the configuration is malformed. """ ump_config = oidc_config.get("user_mapping_provider", {}) ump_config.setdefault("module", DEFAULT_USER_MAPPING_PROVIDER) if ump_config.get("module") == LEGACY_USER_MAPPING_PROVIDER: ump_config["module"] = DEFAULT_USER_MAPPING_PROVIDER ump_config.setdefault("config", {}) ( user_mapping_provider_class, user_mapping_provider_config, ) = load_module(ump_config, config_path + ("user_mapping_provider",)) # Ensure loaded user mapping module has defined all necessary methods required_methods = [ "get_remote_user_id", "map_user_attributes", ] missing_methods = [ method for method in required_methods if not hasattr(user_mapping_provider_class, method) ] if missing_methods: raise ConfigError( "Class %s is missing required " "methods: %s" % ( user_mapping_provider_class, ", ".join(missing_methods), ), config_path + ("user_mapping_provider", "module"), ) idp_id = oidc_config.get("idp_id", "oidc") # prefix the given IDP with a prefix specific to the SSO mechanism, to avoid # clashes with other mechs (such as SAML, CAS). # # We allow "oidc" as an exception so that people migrating from old-style # "oidc_config" format (which has long used "oidc" as its idp_id) can migrate to # a new-style "oidc_providers" entry without changing the idp_id for their provider # (and thereby invalidating their user_external_ids data). if idp_id != "oidc": idp_id = "oidc-" + idp_id # MSC2858 also specifies that the idp_icon must be a valid MXC uri idp_icon = oidc_config.get("idp_icon") if idp_icon is not None: try: parse_and_validate_mxc_uri(idp_icon) except ValueError as e: raise ConfigError( "idp_icon must be a valid MXC URI", config_path + ("idp_icon",) ) from e client_secret_jwt_key_config = oidc_config.get("client_secret_jwt_key") client_secret_jwt_key: Optional[OidcProviderClientSecretJwtKey] = None if client_secret_jwt_key_config is not None: keyfile = client_secret_jwt_key_config.get("key_file") if keyfile: key = read_file(keyfile, config_path + ("client_secret_jwt_key",)) else: key = client_secret_jwt_key_config["key"] client_secret_jwt_key = OidcProviderClientSecretJwtKey( key=key, jwt_header=client_secret_jwt_key_config["jwt_header"], jwt_payload=client_secret_jwt_key_config.get("jwt_payload", {}), ) # parse attribute_requirements from config (list of dicts) into a list of SsoAttributeRequirement attribute_requirements = [ SsoAttributeRequirement(**x) for x in oidc_config.get("attribute_requirements", []) ] # Read from either `client_secret_path` or `client_secret`. If both exist, error. client_secret = oidc_config.get("client_secret") client_secret_path = oidc_config.get("client_secret_path") if client_secret_path is not None: if client_secret is None: client_secret = read_file( client_secret_path, config_path + ("client_secret_path",) ).rstrip("\n") else: raise ConfigError( "Cannot specify both client_secret and client_secret_path", config_path + ("client_secret",), ) # If no client secret is specified then the auth method must be None client_auth_method = oidc_config.get("client_auth_method") if client_secret is None and client_secret_jwt_key is None: if client_auth_method is None: client_auth_method = "none" elif client_auth_method != "none": raise ConfigError( "No 'client_secret' is set in OIDC config, and 'client_auth_method' is not set to 'none'" ) if client_auth_method is None: client_auth_method = "client_secret_basic" return OidcProviderConfig( idp_id=idp_id, idp_name=oidc_config.get("idp_name", "OIDC"), idp_icon=idp_icon, idp_brand=oidc_config.get("idp_brand"), discover=oidc_config.get("discover", True), issuer=oidc_config["issuer"], client_id=oidc_config["client_id"], client_secret=client_secret, client_secret_jwt_key=client_secret_jwt_key, client_auth_method=client_auth_method, pkce_method=oidc_config.get("pkce_method", "auto"), scopes=oidc_config.get("scopes", ["openid"]), authorization_endpoint=oidc_config.get("authorization_endpoint"), token_endpoint=oidc_config.get("token_endpoint"), userinfo_endpoint=oidc_config.get("userinfo_endpoint"), jwks_uri=oidc_config.get("jwks_uri"), backchannel_logout_enabled=oidc_config.get("backchannel_logout_enabled", False), backchannel_logout_ignore_sub=oidc_config.get( "backchannel_logout_ignore_sub", False ), skip_verification=oidc_config.get("skip_verification", False), user_profile_method=oidc_config.get("user_profile_method", "auto"), allow_existing_users=oidc_config.get("allow_existing_users", False), user_mapping_provider_class=user_mapping_provider_class, user_mapping_provider_config=user_mapping_provider_config, attribute_requirements=attribute_requirements, enable_registration=oidc_config.get("enable_registration", True), ) @attr.s(slots=True, frozen=True, auto_attribs=True) class OidcProviderClientSecretJwtKey: # a pem-encoded signing key key: str # properties to include in the JWT header jwt_header: Mapping[str, str] # properties to include in the JWT payload. jwt_payload: Mapping[str, str] @attr.s(slots=True, frozen=True, auto_attribs=True) class OidcProviderConfig: # a unique identifier for this identity provider. Used in the 'user_external_ids' # table, as well as the query/path parameter used in the login protocol. idp_id: str # user-facing name for this identity provider. idp_name: str # Optional MXC URI for icon for this IdP. idp_icon: Optional[str] # Optional brand identifier for this IdP. idp_brand: Optional[str] # whether the OIDC discovery mechanism is used to discover endpoints discover: bool # the OIDC issuer. Used to validate tokens and (if discovery is enabled) to # discover the provider's endpoints. issuer: str # oauth2 client id to use client_id: str # oauth2 client secret to use. if `None`, use client_secret_jwt_key to generate # a secret. client_secret: Optional[str] # key to use to construct a JWT to use as a client secret. May be `None` if # `client_secret` is set. client_secret_jwt_key: Optional[OidcProviderClientSecretJwtKey] # auth method to use when exchanging the token. # Valid values are 'client_secret_basic', 'client_secret_post' and # 'none'. client_auth_method: str # Whether to enable PKCE when exchanging the authorization & token. # Valid values are 'auto', 'always', and 'never'. pkce_method: str # list of scopes to request scopes: Collection[str] # the oauth2 authorization endpoint. Required if discovery is disabled. authorization_endpoint: Optional[str] # the oauth2 token endpoint. Required if discovery is disabled. token_endpoint: Optional[str] # the OIDC userinfo endpoint. Required if discovery is disabled and the # "openid" scope is not requested. userinfo_endpoint: Optional[str] # URI where to fetch the JWKS. Required if discovery is disabled and the # "openid" scope is used. jwks_uri: Optional[str] # Whether Synapse should react to backchannel logouts backchannel_logout_enabled: bool # Whether Synapse should ignore the `sub` claim in backchannel logouts or not. backchannel_logout_ignore_sub: bool # Whether to skip metadata verification skip_verification: bool # Whether to fetch the user profile from the userinfo endpoint. Valid # values are: "auto" or "userinfo_endpoint". user_profile_method: str # whether to allow a user logging in via OIDC to match a pre-existing account # instead of failing allow_existing_users: bool # the class of the user mapping provider user_mapping_provider_class: Type # the config of the user mapping provider user_mapping_provider_config: Any # required attributes to require in userinfo to allow login/registration attribute_requirements: List[SsoAttributeRequirement] # Whether automatic registrations are enabled in the ODIC flow. Defaults to True enable_registration: bool synapse-1.100.0/synapse/config/password_auth_providers.py000066400000000000000000000056071455622526000236330ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 Openmarket # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, List, Tuple, Type from synapse.types import JsonDict from synapse.util.module_loader import load_module from ._base import Config LDAP_PROVIDER = "ldap_auth_provider.LdapAuthProvider" class PasswordAuthProviderConfig(Config): section = "authproviders" def read_config(self, config: JsonDict, **kwargs: Any) -> None: """Parses the old password auth providers config. The config format looks like this: password_providers: # Example config for an LDAP auth provider - module: "ldap_auth_provider.LdapAuthProvider" config: enabled: true uri: "ldap://ldap.example.com:389" start_tls: true base: "ou=users,dc=example,dc=com" attributes: uid: "cn" mail: "email" name: "givenName" #bind_dn: #bind_password: #filter: "(objectClass=posixAccount)" We expect admins to use modules for this feature (which is why it doesn't appear in the sample config file), but we want to keep support for it around for a bit for backwards compatibility. """ self.password_providers: List[Tuple[Type, Any]] = [] providers = [] # We want to be backwards compatible with the old `ldap_config` # param. ldap_config = config.get("ldap_config", {}) if ldap_config.get("enabled", False): providers.append({"module": LDAP_PROVIDER, "config": ldap_config}) providers.extend(config.get("password_providers") or []) for i, provider in enumerate(providers): mod_name = provider["module"] # This is for backwards compat when the ldap auth provider resided # in this package. if mod_name == "synapse.util.ldap_auth_provider.LdapAuthProvider": mod_name = LDAP_PROVIDER (provider_class, provider_config) = load_module( {"module": mod_name, "config": provider["config"]}, ("password_providers", "" % i), ) self.password_providers.append((provider_class, provider_config)) synapse-1.100.0/synapse/config/push.py000066400000000000000000000046211455622526000176250ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from ._base import Config class PushConfig(Config): section = "push" def read_config(self, config: JsonDict, **kwargs: Any) -> None: push_config = config.get("push") or {} self.push_include_content = push_config.get("include_content", True) self.enable_push = push_config.get("enabled", True) self.push_group_unread_count_by_room = push_config.get( "group_unread_count_by_room", True ) # There was a a 'redact_content' setting but mistakenly read from the # 'email'section'. Check for the flag in the 'push' section, and log, # but do not honour it to avoid nasty surprises when people upgrade. if push_config.get("redact_content") is not None: print( "The push.redact_content content option has never worked. " "Please set push.include_content if you want this behaviour" ) # Now check for the one in the 'email' section and honour it, # with a warning. email_push_config = config.get("email") or {} redact_content = email_push_config.get("redact_content") if redact_content is not None: print( "The 'email.redact_content' option is deprecated: " "please set push.include_content instead" ) self.push_include_content = not redact_content # Whether to apply a random delay to outbound push. self.push_jitter_delay_ms = None push_jitter_delay = push_config.get("jitter_delay", None) if push_jitter_delay: self.push_jitter_delay_ms = self.parse_duration(push_jitter_delay) synapse-1.100.0/synapse/config/ratelimiting.py000066400000000000000000000166141455622526000213430ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, Dict, Optional, cast import attr from synapse.types import JsonDict from ._base import Config @attr.s(slots=True, frozen=True, auto_attribs=True) class RatelimitSettings: key: str per_second: float burst_count: int @classmethod def parse( cls, config: Dict[str, Any], key: str, defaults: Optional[Dict[str, float]] = None, ) -> "RatelimitSettings": """Parse config[key] as a new-style rate limiter config. The key may refer to a nested dictionary using a full stop (.) to separate each nested key. For example, use the key "a.b.c" to parse the following: a: b: c: per_second: 10 burst_count: 200 If this lookup fails, we'll fallback to the defaults. """ defaults = defaults or {"per_second": 0.17, "burst_count": 3.0} rl_config = config for part in key.split("."): rl_config = rl_config.get(part, {}) # By this point we should have hit the rate limiter parameters. # We don't actually check this though! rl_config = cast(Dict[str, float], rl_config) return cls( key=key, per_second=rl_config.get("per_second", defaults["per_second"]), burst_count=int(rl_config.get("burst_count", defaults["burst_count"])), ) @attr.s(auto_attribs=True) class FederationRatelimitSettings: window_size: int = 1000 sleep_limit: int = 10 sleep_delay: int = 500 reject_limit: int = 50 concurrent: int = 3 class RatelimitConfig(Config): section = "ratelimiting" def read_config(self, config: JsonDict, **kwargs: Any) -> None: # Load the new-style messages config if it exists. Otherwise fall back # to the old method. if "rc_message" in config: self.rc_message = RatelimitSettings.parse( config, "rc_message", defaults={"per_second": 0.2, "burst_count": 10.0} ) else: self.rc_message = RatelimitSettings( key="rc_messages", per_second=config.get("rc_messages_per_second", 0.2), burst_count=config.get("rc_message_burst_count", 10.0), ) # Load the new-style federation config, if it exists. Otherwise, fall # back to the old method. if "rc_federation" in config: self.rc_federation = FederationRatelimitSettings(**config["rc_federation"]) else: self.rc_federation = FederationRatelimitSettings( **{ k: v for k, v in { "window_size": config.get("federation_rc_window_size"), "sleep_limit": config.get("federation_rc_sleep_limit"), "sleep_delay": config.get("federation_rc_sleep_delay"), "reject_limit": config.get("federation_rc_reject_limit"), "concurrent": config.get("federation_rc_concurrent"), }.items() if v is not None } ) self.rc_registration = RatelimitSettings.parse(config, "rc_registration", {}) self.rc_registration_token_validity = RatelimitSettings.parse( config, "rc_registration_token_validity", defaults={"per_second": 0.1, "burst_count": 5}, ) # It is reasonable to login with a bunch of devices at once (i.e. when # setting up an account), but it is *not* valid to continually be # logging into new devices. self.rc_login_address = RatelimitSettings.parse( config, "rc_login.address", defaults={"per_second": 0.003, "burst_count": 5}, ) self.rc_login_account = RatelimitSettings.parse( config, "rc_login.account", defaults={"per_second": 0.003, "burst_count": 5}, ) self.rc_login_failed_attempts = RatelimitSettings.parse( config, "rc_login.failed_attempts", {}, ) self.federation_rr_transactions_per_room_per_second = config.get( "federation_rr_transactions_per_room_per_second", 50 ) self.rc_admin_redaction = None if "rc_admin_redaction" in config: self.rc_admin_redaction = RatelimitSettings.parse( config, "rc_admin_redaction", {} ) self.rc_joins_local = RatelimitSettings.parse( config, "rc_joins.local", defaults={"per_second": 0.1, "burst_count": 10}, ) self.rc_joins_remote = RatelimitSettings.parse( config, "rc_joins.remote", defaults={"per_second": 0.01, "burst_count": 10}, ) # Track the rate of joins to a given room. If there are too many, temporarily # prevent local joins and remote joins via this server. self.rc_joins_per_room = RatelimitSettings.parse( config, "rc_joins_per_room", defaults={"per_second": 1, "burst_count": 10}, ) # Ratelimit cross-user key requests: # * For local requests this is keyed by the sending device. # * For requests received over federation this is keyed by the origin. # # Note that this isn't exposed in the configuration as it is obscure. self.rc_key_requests = RatelimitSettings.parse( config, "rc_key_requests", defaults={"per_second": 20, "burst_count": 100}, ) self.rc_3pid_validation = RatelimitSettings.parse( config, "rc_3pid_validation", defaults={"per_second": 0.003, "burst_count": 5}, ) self.rc_invites_per_room = RatelimitSettings.parse( config, "rc_invites.per_room", defaults={"per_second": 0.3, "burst_count": 10}, ) self.rc_invites_per_user = RatelimitSettings.parse( config, "rc_invites.per_user", defaults={"per_second": 0.003, "burst_count": 5}, ) self.rc_invites_per_issuer = RatelimitSettings.parse( config, "rc_invites.per_issuer", defaults={"per_second": 0.3, "burst_count": 10}, ) self.rc_third_party_invite = RatelimitSettings.parse( config, "rc_third_party_invite", defaults={"per_second": 0.0025, "burst_count": 5}, ) # Ratelimit create media requests: self.rc_media_create = RatelimitSettings.parse( config, "rc_media_create", defaults={"per_second": 10, "burst_count": 50}, ) synapse-1.100.0/synapse/config/redis.py000066400000000000000000000034711455622526000177560ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.config._base import Config from synapse.types import JsonDict from synapse.util.check_dependencies import check_requirements class RedisConfig(Config): section = "redis" def read_config(self, config: JsonDict, **kwargs: Any) -> None: redis_config = config.get("redis") or {} self.redis_enabled = redis_config.get("enabled", False) if not self.redis_enabled: return check_requirements("redis") self.redis_host = redis_config.get("host", "localhost") self.redis_port = redis_config.get("port", 6379) self.redis_path = redis_config.get("path", None) self.redis_dbid = redis_config.get("dbid", None) self.redis_password = redis_config.get("password") self.redis_use_tls = redis_config.get("use_tls", False) self.redis_certificate = redis_config.get("certificate_file", None) self.redis_private_key = redis_config.get("private_key_file", None) self.redis_ca_file = redis_config.get("ca_file", None) self.redis_ca_path = redis_config.get("ca_path", None) synapse-1.100.0/synapse/config/registration.py000066400000000000000000000302171455622526000213600ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse from typing import Any, Dict, Optional from synapse.api.constants import RoomCreationPreset from synapse.config._base import Config, ConfigError, read_file from synapse.types import JsonDict, RoomAlias, UserID from synapse.util.stringutils import random_string_with_symbols, strtobool NO_EMAIL_DELEGATE_ERROR = """\ Delegation of email verification to an identity server is no longer supported. To continue to allow users to add email addresses to their accounts, and use them for password resets, configure Synapse with an SMTP server via the `email` setting, and remove `account_threepid_delegates.email`. """ CONFLICTING_SHARED_SECRET_OPTS_ERROR = """\ You have configured both `registration_shared_secret` and `registration_shared_secret_path`. These are mutually incompatible. """ class RegistrationConfig(Config): section = "registration" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.enable_registration = strtobool( str(config.get("enable_registration", False)) ) if "disable_registration" in config: self.enable_registration = not strtobool( str(config["disable_registration"]) ) self.enable_registration_without_verification = strtobool( str(config.get("enable_registration_without_verification", False)) ) self.registrations_require_3pid = config.get("registrations_require_3pid", []) self.allowed_local_3pids = config.get("allowed_local_3pids", []) self.enable_3pid_lookup = config.get("enable_3pid_lookup", True) self.registration_requires_token = config.get( "registration_requires_token", False ) self.enable_registration_token_3pid_bypass = config.get( "enable_registration_token_3pid_bypass", False ) # read the shared secret, either inline or from an external file self.registration_shared_secret = config.get("registration_shared_secret") registration_shared_secret_path = config.get("registration_shared_secret_path") if registration_shared_secret_path: if self.registration_shared_secret: raise ConfigError(CONFLICTING_SHARED_SECRET_OPTS_ERROR) self.registration_shared_secret = read_file( registration_shared_secret_path, ("registration_shared_secret_path",) ).strip() self.bcrypt_rounds = config.get("bcrypt_rounds", 12) account_threepid_delegates = config.get("account_threepid_delegates") or {} if "email" in account_threepid_delegates: raise ConfigError(NO_EMAIL_DELEGATE_ERROR) self.account_threepid_delegate_msisdn = account_threepid_delegates.get("msisdn") self.default_identity_server = config.get("default_identity_server") self.allow_guest_access = config.get("allow_guest_access", False) if config.get("invite_3pid_guest", False): raise ConfigError("invite_3pid_guest is no longer supported") self.auto_join_rooms = config.get("auto_join_rooms", []) for room_alias in self.auto_join_rooms: if not RoomAlias.is_valid(room_alias): raise ConfigError("Invalid auto_join_rooms entry %s" % (room_alias,)) # Options for creating auto-join rooms if they do not exist yet. self.autocreate_auto_join_rooms = config.get("autocreate_auto_join_rooms", True) self.autocreate_auto_join_rooms_federated = config.get( "autocreate_auto_join_rooms_federated", True ) self.autocreate_auto_join_room_preset = ( config.get("autocreate_auto_join_room_preset") or RoomCreationPreset.PUBLIC_CHAT ) self.auto_join_room_requires_invite = self.autocreate_auto_join_room_preset in { RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, } # Pull the creator/inviter from the configuration, this gets used to # send invites for invite-only rooms. mxid_localpart = config.get("auto_join_mxid_localpart") self.auto_join_user_id = None if mxid_localpart: # Convert the localpart to a full mxid. self.auto_join_user_id = UserID( mxid_localpart, self.root.server.server_name ).to_string() if self.autocreate_auto_join_rooms: # Ensure the preset is a known value. if self.autocreate_auto_join_room_preset not in { RoomCreationPreset.PUBLIC_CHAT, RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, }: raise ConfigError("Invalid value for autocreate_auto_join_room_preset") # If the preset requires invitations to be sent, ensure there's a # configured user to send them from. if self.auto_join_room_requires_invite: if not mxid_localpart: raise ConfigError( "The configuration option `auto_join_mxid_localpart` is required if " "`autocreate_auto_join_room_preset` is set to private_chat or trusted_private_chat, such that " "Synapse knows who to send invitations from. Please " "configure `auto_join_mxid_localpart`." ) self.auto_join_rooms_for_guests = config.get("auto_join_rooms_for_guests", True) self.enable_set_displayname = config.get("enable_set_displayname", True) self.enable_set_avatar_url = config.get("enable_set_avatar_url", True) # The default value of enable_3pid_changes is True, unless msc3861 is enabled. msc3861_enabled = ( (config.get("experimental_features") or {}) .get("msc3861", {}) .get("enabled", False) ) self.enable_3pid_changes = config.get( "enable_3pid_changes", not msc3861_enabled ) self.disable_msisdn_registration = config.get( "disable_msisdn_registration", False ) session_lifetime = config.get("session_lifetime") if session_lifetime is not None: session_lifetime = self.parse_duration(session_lifetime) self.session_lifetime = session_lifetime # The `refreshable_access_token_lifetime` applies for tokens that can be renewed # using a refresh token, as per MSC2918. # If it is `None`, the refresh token mechanism is disabled. refreshable_access_token_lifetime = config.get( "refreshable_access_token_lifetime", "5m", ) if refreshable_access_token_lifetime is not None: refreshable_access_token_lifetime = self.parse_duration( refreshable_access_token_lifetime ) self.refreshable_access_token_lifetime: Optional[ int ] = refreshable_access_token_lifetime if ( self.session_lifetime is not None and "refreshable_access_token_lifetime" in config ): if self.session_lifetime < self.refreshable_access_token_lifetime: raise ConfigError( "Both `session_lifetime` and `refreshable_access_token_lifetime` " "configuration options have been set, but `refreshable_access_token_lifetime` " " exceeds `session_lifetime`!" ) # The `nonrefreshable_access_token_lifetime` applies for tokens that can NOT be # refreshed using a refresh token. # If it is None, then these tokens last for the entire length of the session, # which is infinite by default. # The intention behind this configuration option is to help with requiring # all clients to use refresh tokens, if the homeserver administrator requires. nonrefreshable_access_token_lifetime = config.get( "nonrefreshable_access_token_lifetime", None, ) if nonrefreshable_access_token_lifetime is not None: nonrefreshable_access_token_lifetime = self.parse_duration( nonrefreshable_access_token_lifetime ) self.nonrefreshable_access_token_lifetime = nonrefreshable_access_token_lifetime if ( self.session_lifetime is not None and self.nonrefreshable_access_token_lifetime is not None ): if self.session_lifetime < self.nonrefreshable_access_token_lifetime: raise ConfigError( "Both `session_lifetime` and `nonrefreshable_access_token_lifetime` " "configuration options have been set, but `nonrefreshable_access_token_lifetime` " " exceeds `session_lifetime`!" ) refresh_token_lifetime = config.get("refresh_token_lifetime") if refresh_token_lifetime is not None: refresh_token_lifetime = self.parse_duration(refresh_token_lifetime) self.refresh_token_lifetime: Optional[int] = refresh_token_lifetime if ( self.session_lifetime is not None and self.refresh_token_lifetime is not None ): if self.session_lifetime < self.refresh_token_lifetime: raise ConfigError( "Both `session_lifetime` and `refresh_token_lifetime` " "configuration options have been set, but `refresh_token_lifetime` " " exceeds `session_lifetime`!" ) # The fallback template used for authenticating using a registration token self.registration_token_template = self.read_template("registration_token.html") # The success template used during fallback auth. self.fallback_success_template = self.read_template("auth_success.html") self.inhibit_user_in_use_error = config.get("inhibit_user_in_use_error", False) def generate_config_section( self, generate_secrets: bool = False, **kwargs: Any ) -> str: if generate_secrets: registration_shared_secret = 'registration_shared_secret: "%s"' % ( random_string_with_symbols(50), ) return registration_shared_secret else: return "" def generate_files(self, config: Dict[str, Any], config_dir_path: str) -> None: # if 'registration_shared_secret_path' is specified, and the target file # does not exist, generate it. registration_shared_secret_path = config.get("registration_shared_secret_path") if registration_shared_secret_path and not self.path_exists( registration_shared_secret_path ): print( "Generating registration shared secret file " + registration_shared_secret_path ) secret = random_string_with_symbols(50) with open(registration_shared_secret_path, "w") as f: f.write(f"{secret}\n") @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: reg_group = parser.add_argument_group("registration") reg_group.add_argument( "--enable-registration", action="store_true", default=None, help="Enable registration for new users.", ) def read_arguments(self, args: argparse.Namespace) -> None: if args.enable_registration is not None: self.enable_registration = strtobool(str(args.enable_registration)) synapse-1.100.0/synapse/config/repository.py000066400000000000000000000246731455622526000210760ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014, 2015 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import os from typing import Any, Dict, List, Tuple from urllib.request import getproxies_environment # type: ignore import attr from synapse.config.server import generate_ip_set from synapse.types import JsonDict from synapse.util.check_dependencies import check_requirements from synapse.util.module_loader import load_module from ._base import Config, ConfigError logger = logging.getLogger(__name__) DEFAULT_THUMBNAIL_SIZES = [ {"width": 32, "height": 32, "method": "crop"}, {"width": 96, "height": 96, "method": "crop"}, {"width": 320, "height": 240, "method": "scale"}, {"width": 640, "height": 480, "method": "scale"}, {"width": 800, "height": 600, "method": "scale"}, ] THUMBNAIL_SIZE_YAML = """\ # - width: %(width)i # height: %(height)i # method: %(method)s """ # A map from the given media type to the type of thumbnail we should generate # for it. THUMBNAIL_SUPPORTED_MEDIA_FORMAT_MAP = { "image/jpeg": "jpeg", "image/jpg": "jpeg", "image/webp": "jpeg", # Thumbnails can only be jpeg or png. We choose png thumbnails for gif # because it can have transparency. "image/gif": "png", "image/png": "png", } HTTP_PROXY_SET_WARNING = """\ The Synapse config url_preview_ip_range_blacklist will be ignored as an HTTP(s) proxy is configured.""" @attr.s(frozen=True, slots=True, auto_attribs=True) class ThumbnailRequirement: width: int height: int method: str media_type: str @attr.s(frozen=True, slots=True, auto_attribs=True) class MediaStorageProviderConfig: store_local: bool # Whether to store newly uploaded local files store_remote: bool # Whether to store newly downloaded remote files store_synchronous: bool # Whether to wait for successful storage for local uploads def parse_thumbnail_requirements( thumbnail_sizes: List[JsonDict], ) -> Dict[str, Tuple[ThumbnailRequirement, ...]]: """Takes a list of dictionaries with "width", "height", and "method" keys and creates a map from image media types to the thumbnail size, thumbnailing method, and thumbnail media type to precalculate Args: thumbnail_sizes: List of dicts with "width", "height", and "method" keys Returns: Dictionary mapping from media type string to list of ThumbnailRequirement. """ requirements: Dict[str, List[ThumbnailRequirement]] = {} for size in thumbnail_sizes: width = size["width"] height = size["height"] method = size["method"] for format, thumbnail_format in THUMBNAIL_SUPPORTED_MEDIA_FORMAT_MAP.items(): requirement = requirements.setdefault(format, []) if thumbnail_format == "jpeg": requirement.append( ThumbnailRequirement(width, height, method, "image/jpeg") ) elif thumbnail_format == "png": requirement.append( ThumbnailRequirement(width, height, method, "image/png") ) else: raise Exception( "Unknown thumbnail mapping from %s to %s. This is a Synapse problem, please report!" % (format, thumbnail_format) ) return { media_type: tuple(thumbnails) for media_type, thumbnails in requirements.items() } class ContentRepositoryConfig(Config): section = "media" def read_config(self, config: JsonDict, **kwargs: Any) -> None: # Only enable the media repo if either the media repo is enabled or the # current worker app is the media repo. if ( self.root.server.enable_media_repo is False and config.get("worker_app") != "synapse.app.media_repository" ): self.can_load_media_repo = False return else: self.can_load_media_repo = True # Whether this instance should be the one to run the background jobs to # e.g clean up old URL previews. self.media_instance_running_background_jobs = config.get( "media_instance_running_background_jobs", ) self.max_upload_size = self.parse_size(config.get("max_upload_size", "50M")) self.max_image_pixels = self.parse_size(config.get("max_image_pixels", "32M")) self.max_spider_size = self.parse_size(config.get("max_spider_size", "10M")) self.prevent_media_downloads_from = config.get( "prevent_media_downloads_from", [] ) self.unused_expiration_time = self.parse_duration( config.get("unused_expiration_time", "24h") ) self.max_pending_media_uploads = config.get("max_pending_media_uploads", 5) self.media_store_path = self.ensure_directory( config.get("media_store_path", "media_store") ) backup_media_store_path = config.get("backup_media_store_path") synchronous_backup_media_store = config.get( "synchronous_backup_media_store", False ) storage_providers = config.get("media_storage_providers", []) if backup_media_store_path: if storage_providers: raise ConfigError( "Cannot use both 'backup_media_store_path' and 'storage_providers'" ) storage_providers = [ { "module": "file_system", "store_local": True, "store_synchronous": synchronous_backup_media_store, "store_remote": True, "config": {"directory": backup_media_store_path}, } ] # This is a list of config that can be used to create the storage # providers. The entries are tuples of (Class, class_config, # MediaStorageProviderConfig), where Class is the class of the provider, # the class_config the config to pass to it, and # MediaStorageProviderConfig are options for StorageProviderWrapper. # # We don't create the storage providers here as not all workers need # them to be started. self.media_storage_providers: List[tuple] = [] for i, provider_config in enumerate(storage_providers): # We special case the module "file_system" so as not to need to # expose FileStorageProviderBackend if ( provider_config["module"] == "file_system" or provider_config["module"] == "synapse.rest.media.v1.storage_provider" ): provider_config[ "module" ] = "synapse.media.storage_provider.FileStorageProviderBackend" provider_class, parsed_config = load_module( provider_config, ("media_storage_providers", "" % i) ) wrapper_config = MediaStorageProviderConfig( provider_config.get("store_local", False), provider_config.get("store_remote", False), provider_config.get("store_synchronous", False), ) self.media_storage_providers.append( (provider_class, parsed_config, wrapper_config) ) self.dynamic_thumbnails = config.get("dynamic_thumbnails", False) self.thumbnail_requirements = parse_thumbnail_requirements( config.get("thumbnail_sizes", DEFAULT_THUMBNAIL_SIZES) ) self.url_preview_enabled = config.get("url_preview_enabled", False) if self.url_preview_enabled: check_requirements("url-preview") proxy_env = getproxies_environment() if "url_preview_ip_range_blacklist" not in config: if "http" not in proxy_env or "https" not in proxy_env: raise ConfigError( "For security, you must specify an explicit target IP address " "blacklist in url_preview_ip_range_blacklist for url previewing " "to work" ) else: if "http" in proxy_env or "https" in proxy_env: logger.warning("".join(HTTP_PROXY_SET_WARNING)) # we always block '0.0.0.0' and '::', which are supposed to be # unroutable addresses. self.url_preview_ip_range_blocklist = generate_ip_set( config["url_preview_ip_range_blacklist"], ["0.0.0.0", "::"], config_path=("url_preview_ip_range_blacklist",), ) self.url_preview_ip_range_allowlist = generate_ip_set( config.get("url_preview_ip_range_whitelist", ()), config_path=("url_preview_ip_range_whitelist",), ) self.url_preview_url_blocklist = config.get("url_preview_url_blacklist", ()) self.url_preview_accept_language = config.get( "url_preview_accept_language" ) or ["en"] media_retention = config.get("media_retention") or {} self.media_retention_local_media_lifetime_ms = None local_media_lifetime = media_retention.get("local_media_lifetime") if local_media_lifetime is not None: self.media_retention_local_media_lifetime_ms = self.parse_duration( local_media_lifetime ) self.media_retention_remote_media_lifetime_ms = None remote_media_lifetime = media_retention.get("remote_media_lifetime") if remote_media_lifetime is not None: self.media_retention_remote_media_lifetime_ms = self.parse_duration( remote_media_lifetime ) def generate_config_section(self, data_dir_path: str, **kwargs: Any) -> str: assert data_dir_path is not None media_store = os.path.join(data_dir_path, "media_store") return f"media_store_path: {media_store}" synapse-1.100.0/synapse/config/retention.py000066400000000000000000000135541455622526000206620ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any, List, Optional import attr from synapse.config._base import Config, ConfigError from synapse.types import JsonDict logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, auto_attribs=True) class RetentionPurgeJob: """Object describing the configuration of the manhole""" interval: int shortest_max_lifetime: Optional[int] longest_max_lifetime: Optional[int] class RetentionConfig(Config): section = "retention" def read_config(self, config: JsonDict, **kwargs: Any) -> None: retention_config = config.get("retention") if retention_config is None: retention_config = {} self.retention_enabled = retention_config.get("enabled", False) retention_default_policy = retention_config.get("default_policy") if retention_default_policy is not None: self.retention_default_min_lifetime = retention_default_policy.get( "min_lifetime" ) if self.retention_default_min_lifetime is not None: self.retention_default_min_lifetime = self.parse_duration( self.retention_default_min_lifetime ) self.retention_default_max_lifetime = retention_default_policy.get( "max_lifetime" ) if self.retention_default_max_lifetime is not None: self.retention_default_max_lifetime = self.parse_duration( self.retention_default_max_lifetime ) if ( self.retention_default_min_lifetime is not None and self.retention_default_max_lifetime is not None and ( self.retention_default_min_lifetime > self.retention_default_max_lifetime ) ): raise ConfigError( "The default retention policy's 'min_lifetime' can not be greater" " than its 'max_lifetime'" ) else: self.retention_default_min_lifetime = None self.retention_default_max_lifetime = None if self.retention_enabled: logger.info( "Message retention policies support enabled with the following default" " policy: min_lifetime = %s ; max_lifetime = %s", self.retention_default_min_lifetime, self.retention_default_max_lifetime, ) self.retention_allowed_lifetime_min = retention_config.get( "allowed_lifetime_min" ) if self.retention_allowed_lifetime_min is not None: self.retention_allowed_lifetime_min = self.parse_duration( self.retention_allowed_lifetime_min ) self.retention_allowed_lifetime_max = retention_config.get( "allowed_lifetime_max" ) if self.retention_allowed_lifetime_max is not None: self.retention_allowed_lifetime_max = self.parse_duration( self.retention_allowed_lifetime_max ) if ( self.retention_allowed_lifetime_min is not None and self.retention_allowed_lifetime_max is not None and self.retention_allowed_lifetime_min > self.retention_allowed_lifetime_max ): raise ConfigError( "Invalid retention policy limits: 'allowed_lifetime_min' can not be" " greater than 'allowed_lifetime_max'" ) self.retention_purge_jobs: List[RetentionPurgeJob] = [] for purge_job_config in retention_config.get("purge_jobs", []): interval_config = purge_job_config.get("interval") if interval_config is None: raise ConfigError( "A retention policy's purge jobs configuration must have the" " 'interval' key set." ) interval = self.parse_duration(interval_config) shortest_max_lifetime = purge_job_config.get("shortest_max_lifetime") if shortest_max_lifetime is not None: shortest_max_lifetime = self.parse_duration(shortest_max_lifetime) longest_max_lifetime = purge_job_config.get("longest_max_lifetime") if longest_max_lifetime is not None: longest_max_lifetime = self.parse_duration(longest_max_lifetime) if ( shortest_max_lifetime is not None and longest_max_lifetime is not None and shortest_max_lifetime > longest_max_lifetime ): raise ConfigError( "A retention policy's purge jobs configuration's" " 'shortest_max_lifetime' value can not be greater than its" " 'longest_max_lifetime' value." ) self.retention_purge_jobs.append( RetentionPurgeJob(interval, shortest_max_lifetime, longest_max_lifetime) ) if not self.retention_purge_jobs: self.retention_purge_jobs = [ RetentionPurgeJob(self.parse_duration("1d"), None, None) ] synapse-1.100.0/synapse/config/room.py000066400000000000000000000064121455622526000176220ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any from synapse.api.constants import RoomCreationPreset from synapse.types import JsonDict from ._base import Config, ConfigError logger = logging.Logger(__name__) class RoomDefaultEncryptionTypes: """Possible values for the encryption_enabled_by_default_for_room_type config option""" ALL = "all" INVITE = "invite" OFF = "off" class RoomConfig(Config): section = "room" def read_config(self, config: JsonDict, **kwargs: Any) -> None: # Whether new, locally-created rooms should have encryption enabled encryption_for_room_type = config.get( "encryption_enabled_by_default_for_room_type", RoomDefaultEncryptionTypes.OFF, ) if encryption_for_room_type == RoomDefaultEncryptionTypes.ALL: self.encryption_enabled_by_default_for_room_presets = [ RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, RoomCreationPreset.PUBLIC_CHAT, ] elif encryption_for_room_type == RoomDefaultEncryptionTypes.INVITE: self.encryption_enabled_by_default_for_room_presets = [ RoomCreationPreset.PRIVATE_CHAT, RoomCreationPreset.TRUSTED_PRIVATE_CHAT, ] elif ( encryption_for_room_type == RoomDefaultEncryptionTypes.OFF or encryption_for_room_type is False ): # PyYAML translates "off" into False if it's unquoted, so we also need to # check for encryption_for_room_type being False. self.encryption_enabled_by_default_for_room_presets = [] else: raise ConfigError( "Invalid value for encryption_enabled_by_default_for_room_type" ) self.default_power_level_content_override = config.get( "default_power_level_content_override", None, ) if self.default_power_level_content_override is not None: for preset in self.default_power_level_content_override: if preset not in vars(RoomCreationPreset).values(): raise ConfigError( "Unrecognised room preset %s in default_power_level_content_override" % preset ) # We validate the actual overrides when we try to apply them. # When enabled, users will forget rooms when they leave them, either via a # leave, kick or ban. self.forget_on_leave = config.get("forget_rooms_on_leave", False) synapse-1.100.0/synapse/config/room_directory.py000066400000000000000000000127071455622526000217120ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, Collection from matrix_common.regex import glob_to_regex from synapse.types import JsonDict from ._base import Config, ConfigError class RoomDirectoryConfig(Config): section = "roomdirectory" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.enable_room_list_search = config.get("enable_room_list_search", True) alias_creation_rules = config.get("alias_creation_rules") if alias_creation_rules is not None: self._alias_creation_rules = [ _RoomDirectoryRule("alias_creation_rules", rule) for rule in alias_creation_rules ] else: self._alias_creation_rules = [ _RoomDirectoryRule("alias_creation_rules", {"action": "allow"}) ] room_list_publication_rules = config.get("room_list_publication_rules") if room_list_publication_rules is not None: self._room_list_publication_rules = [ _RoomDirectoryRule("room_list_publication_rules", rule) for rule in room_list_publication_rules ] else: self._room_list_publication_rules = [ _RoomDirectoryRule("room_list_publication_rules", {"action": "allow"}) ] def is_alias_creation_allowed(self, user_id: str, room_id: str, alias: str) -> bool: """Checks if the given user is allowed to create the given alias Args: user_id: The user to check. room_id: The room ID for the alias. alias: The alias being created. Returns: True if user is allowed to create the alias """ for rule in self._alias_creation_rules: if rule.matches(user_id, room_id, [alias]): return rule.action == "allow" return False def is_publishing_room_allowed( self, user_id: str, room_id: str, aliases: Collection[str] ) -> bool: """Checks if the given user is allowed to publish the room Args: user_id: The user ID publishing the room. room_id: The room being published. aliases: any local aliases associated with the room Returns: True if user can publish room """ for rule in self._room_list_publication_rules: if rule.matches(user_id, room_id, aliases): return rule.action == "allow" return False class _RoomDirectoryRule: """Helper class to test whether a room directory action is allowed, like creating an alias or publishing a room. """ def __init__(self, option_name: str, rule: JsonDict): """ Args: option_name: Name of the config option this rule belongs to rule: The rule as specified in the config """ action = rule["action"] user_id = rule.get("user_id", "*") room_id = rule.get("room_id", "*") alias = rule.get("alias", "*") if action in ("allow", "deny"): self.action = action else: raise ConfigError( "%s rules can only have action of 'allow' or 'deny'" % (option_name,) ) self._alias_matches_all = alias == "*" try: self._user_id_regex = glob_to_regex(user_id) self._alias_regex = glob_to_regex(alias) self._room_id_regex = glob_to_regex(room_id) except Exception as e: raise ConfigError("Failed to parse glob into regex") from e def matches(self, user_id: str, room_id: str, aliases: Collection[str]) -> bool: """Tests if this rule matches the given user_id, room_id and aliases. Args: user_id: The user ID to check. room_id: The room ID to check. aliases: The associated aliases to the room. Will be a single element for testing alias creation, and can be empty for testing room publishing. Returns: True if the rule matches. """ # Note: The regexes are anchored at both ends if not self._user_id_regex.match(user_id): return False if not self._room_id_regex.match(room_id): return False # We only have alias checks left, so we can short circuit if the alias # rule matches everything. if self._alias_matches_all: return True # If we are not given any aliases then this rule only matches if the # alias glob matches all aliases, which we checked above. if not aliases: return False # Otherwise, we just need one alias to match for alias in aliases: if self._alias_regex.match(alias): return True return False synapse-1.100.0/synapse/config/saml2.py000066400000000000000000000221431455622526000176630ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any, List, Set from synapse.config.sso import SsoAttributeRequirement from synapse.types import JsonDict from synapse.util.check_dependencies import check_requirements from synapse.util.module_loader import load_module, load_python_module from ._base import Config, ConfigError from ._util import validate_config logger = logging.getLogger(__name__) DEFAULT_USER_MAPPING_PROVIDER = "synapse.handlers.saml.DefaultSamlMappingProvider" # The module that DefaultSamlMappingProvider is in was renamed, we want to # transparently handle both the same. LEGACY_USER_MAPPING_PROVIDER = ( "synapse.handlers.saml_handler.DefaultSamlMappingProvider" ) def _dict_merge(merge_dict: dict, into_dict: dict) -> None: """Do a deep merge of two dicts Recursively merges `merge_dict` into `into_dict`: * For keys where both `merge_dict` and `into_dict` have a dict value, the values are recursively merged * For all other keys, the values in `into_dict` (if any) are overwritten with the value from `merge_dict`. Args: merge_dict: dict to merge into_dict: target dict to be modified """ for k, v in merge_dict.items(): if k not in into_dict: into_dict[k] = v continue current_val = into_dict[k] if isinstance(v, dict) and isinstance(current_val, dict): _dict_merge(v, current_val) continue # otherwise we just overwrite into_dict[k] = v class SAML2Config(Config): section = "saml2" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.saml2_enabled = False saml2_config = config.get("saml2_config") if not saml2_config or not saml2_config.get("enabled", True): return if not saml2_config.get("sp_config") and not saml2_config.get("config_path"): return check_requirements("saml2") self.saml2_enabled = True attribute_requirements = saml2_config.get("attribute_requirements") or [] self.attribute_requirements = _parse_attribute_requirements_def( attribute_requirements ) self.saml2_grandfathered_mxid_source_attribute = saml2_config.get( "grandfathered_mxid_source_attribute", "uid" ) # refers to a SAML IdP entity ID self.saml2_idp_entityid = saml2_config.get("idp_entityid", None) # IdP properties for Matrix clients self.idp_name = saml2_config.get("idp_name", "SAML") self.idp_icon = saml2_config.get("idp_icon") self.idp_brand = saml2_config.get("idp_brand") # user_mapping_provider may be None if the key is present but has no value ump_dict = saml2_config.get("user_mapping_provider") or {} # Use the default user mapping provider if not set ump_dict.setdefault("module", DEFAULT_USER_MAPPING_PROVIDER) if ump_dict.get("module") == LEGACY_USER_MAPPING_PROVIDER: ump_dict["module"] = DEFAULT_USER_MAPPING_PROVIDER # Ensure a config is present ump_dict["config"] = ump_dict.get("config") or {} if ump_dict["module"] == DEFAULT_USER_MAPPING_PROVIDER: # Load deprecated options for use by the default module old_mxid_source_attribute = saml2_config.get("mxid_source_attribute") if old_mxid_source_attribute: logger.warning( "The config option saml2_config.mxid_source_attribute is deprecated. " "Please use saml2_config.user_mapping_provider.config" ".mxid_source_attribute instead." ) ump_dict["config"]["mxid_source_attribute"] = old_mxid_source_attribute old_mxid_mapping = saml2_config.get("mxid_mapping") if old_mxid_mapping: logger.warning( "The config option saml2_config.mxid_mapping is deprecated. Please " "use saml2_config.user_mapping_provider.config.mxid_mapping instead." ) ump_dict["config"]["mxid_mapping"] = old_mxid_mapping # Retrieve an instance of the module's class # Pass the config dictionary to the module for processing ( self.saml2_user_mapping_provider_class, self.saml2_user_mapping_provider_config, ) = load_module(ump_dict, ("saml2_config", "user_mapping_provider")) # Ensure loaded user mapping module has defined all necessary methods # Note parse_config() is already checked during the call to load_module required_methods = [ "get_saml_attributes", "saml_response_to_user_attributes", "get_remote_user_id", ] missing_methods = [ method for method in required_methods if not hasattr(self.saml2_user_mapping_provider_class, method) ] if missing_methods: raise ConfigError( "Class specified by saml2_config." "user_mapping_provider.module is missing required " "methods: %s" % (", ".join(missing_methods),) ) # Get the desired saml auth response attributes from the module saml2_config_dict = self._default_saml_config_dict( *self.saml2_user_mapping_provider_class.get_saml_attributes( self.saml2_user_mapping_provider_config ) ) _dict_merge( merge_dict=saml2_config.get("sp_config", {}), into_dict=saml2_config_dict ) config_path = saml2_config.get("config_path", None) if config_path is not None: mod = load_python_module(config_path) config_dict_from_file = getattr(mod, "CONFIG", None) if config_dict_from_file is None: raise ConfigError( "Config path specified by saml2_config.config_path does not " "have a CONFIG property." ) _dict_merge(merge_dict=config_dict_from_file, into_dict=saml2_config_dict) import saml2.config self.saml2_sp_config = saml2.config.SPConfig() self.saml2_sp_config.load(saml2_config_dict) # session lifetime: in milliseconds self.saml2_session_lifetime = self.parse_duration( saml2_config.get("saml_session_lifetime", "15m") ) def _default_saml_config_dict( self, required_attributes: Set[str], optional_attributes: Set[str] ) -> JsonDict: """Generate a configuration dictionary with required and optional attributes that will be needed to process new user registration Args: required_attributes: SAML auth response attributes that are necessary to function optional_attributes: SAML auth response attributes that can be used to add additional information to Synapse user accounts, but are not required Returns: A SAML configuration dictionary """ import saml2 if self.saml2_grandfathered_mxid_source_attribute: optional_attributes.add(self.saml2_grandfathered_mxid_source_attribute) optional_attributes -= required_attributes public_baseurl = self.root.server.public_baseurl metadata_url = public_baseurl + "_synapse/client/saml2/metadata.xml" response_url = public_baseurl + "_synapse/client/saml2/authn_response" return { "entityid": metadata_url, "service": { "sp": { "endpoints": { "assertion_consumer_service": [ (response_url, saml2.BINDING_HTTP_POST) ] }, "required_attributes": list(required_attributes), "optional_attributes": list(optional_attributes), # "name_id_format": saml2.saml.NAMEID_FORMAT_PERSISTENT, } }, } ATTRIBUTE_REQUIREMENTS_SCHEMA = { "type": "array", "items": SsoAttributeRequirement.JSON_SCHEMA, } def _parse_attribute_requirements_def( attribute_requirements: Any, ) -> List[SsoAttributeRequirement]: validate_config( ATTRIBUTE_REQUIREMENTS_SCHEMA, attribute_requirements, config_path=("saml2_config", "attribute_requirements"), ) return [SsoAttributeRequirement(**x) for x in attribute_requirements] synapse-1.100.0/synapse/config/server.py000066400000000000000000001146541455622526000201640ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import itertools import logging import os.path import urllib.parse from textwrap import indent from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union import attr import yaml from netaddr import AddrFormatError, IPNetwork, IPSet from twisted.conch.ssh.keys import Key from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.types import JsonDict, StrSequence from synapse.util.module_loader import load_module from synapse.util.stringutils import parse_and_validate_server_name from ._base import Config, ConfigError from ._util import validate_config logger = logging.Logger(__name__) DIRECT_TCP_ERROR = """ Using direct TCP replication for workers is no longer supported. Please see https://element-hq.github.io/synapse/latest/upgrade.html#direct-tcp-replication-is-no-longer-supported-migrate-to-redis """ # by default, we attempt to listen on both '::' *and* '0.0.0.0' because some OSes # (Windows, macOS, other BSD/Linux where net.ipv6.bindv6only is set) will only listen # on IPv6 when '::' is set. # # We later check for errors when binding to 0.0.0.0 and ignore them if :: is also in # in the list. DEFAULT_BIND_ADDRESSES = ["::", "0.0.0.0"] def _6to4(network: IPNetwork) -> IPNetwork: """Convert an IPv4 network into a 6to4 IPv6 network per RFC 3056.""" # 6to4 networks consist of: # * 2002 as the first 16 bits # * The first IPv4 address in the network hex-encoded as the next 32 bits # * The new prefix length needs to include the bits from the 2002 prefix. hex_network = hex(network.first)[2:] hex_network = ("0" * (8 - len(hex_network))) + hex_network return IPNetwork( "2002:%s:%s::/%d" % ( hex_network[:4], hex_network[4:], 16 + network.prefixlen, ) ) def generate_ip_set( ip_addresses: Optional[Iterable[str]], extra_addresses: Optional[Iterable[str]] = None, config_path: Optional[StrSequence] = None, ) -> IPSet: """ Generate an IPSet from a list of IP addresses or CIDRs. Additionally, for each IPv4 network in the list of IP addresses, also includes the corresponding IPv6 networks. This includes: * IPv4-Compatible IPv6 Address (see RFC 4291, section 2.5.5.1) * IPv4-Mapped IPv6 Address (see RFC 4291, section 2.5.5.2) * 6to4 Address (see RFC 3056, section 2) Args: ip_addresses: An iterable of IP addresses or CIDRs. extra_addresses: An iterable of IP addresses or CIDRs. config_path: The path in the configuration for error messages. Returns: A new IP set. """ result = IPSet() for ip in itertools.chain(ip_addresses or (), extra_addresses or ()): try: network = IPNetwork(ip) except AddrFormatError as e: raise ConfigError( "Invalid IP range provided: %s." % (ip,), config_path ) from e result.add(network) # It is possible that these already exist in the set, but that's OK. if ":" not in str(network): result.add(IPNetwork(network).ipv6(ipv4_compatible=True)) result.add(IPNetwork(network).ipv6(ipv4_compatible=False)) result.add(_6to4(network)) return result # IP ranges that are considered private / unroutable / don't make sense. DEFAULT_IP_RANGE_BLOCKLIST = [ # Localhost "127.0.0.0/8", # Private networks. "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", # Carrier grade NAT. "100.64.0.0/10", # Address registry. "192.0.0.0/24", # Link-local networks. "169.254.0.0/16", # Formerly used for 6to4 relay. "192.88.99.0/24", # Testing networks. "198.18.0.0/15", "192.0.2.0/24", "198.51.100.0/24", "203.0.113.0/24", # Multicast. "224.0.0.0/4", # Localhost "::1/128", # Link-local addresses. "fe80::/10", # Unique local addresses. "fc00::/7", # Testing networks. "2001:db8::/32", # Multicast. "ff00::/8", # Site-local addresses "fec0::/10", ] DEFAULT_ROOM_VERSION = "10" ROOM_COMPLEXITY_TOO_GREAT = ( "Your homeserver is unable to join rooms this large or complex. " "Please speak to your server administrator, or upgrade your instance " "to join this room." ) METRICS_PORT_WARNING = """\ The metrics_port configuration option is deprecated in Synapse 0.31 in favour of a listener. Please see https://element-hq.github.io/synapse/latest/metrics-howto.html on how to configure the new listener. --------------------------------------------------------------------------------""" KNOWN_LISTENER_TYPES = { "http", "metrics", "manhole", } KNOWN_RESOURCES = { "client", "consent", "federation", "health", "keys", "media", "metrics", "openid", "replication", "static", } @attr.s(frozen=True) class HttpResourceConfig: names: List[str] = attr.ib( factory=list, validator=attr.validators.deep_iterable(attr.validators.in_(KNOWN_RESOURCES)), ) compress: bool = attr.ib( default=False, validator=attr.validators.optional(attr.validators.instance_of(bool)), # type: ignore[arg-type] ) @attr.s(slots=True, frozen=True, auto_attribs=True) class HttpListenerConfig: """Object describing the http-specific parts of the config of a listener""" x_forwarded: bool = False resources: List[HttpResourceConfig] = attr.Factory(list) additional_resources: Dict[str, dict] = attr.Factory(dict) tag: Optional[str] = None request_id_header: Optional[str] = None # If true, the listener will return CORS response headers compatible with MSC3886: # https://github.com/matrix-org/matrix-spec-proposals/pull/3886 experimental_cors_msc3886: bool = False @attr.s(slots=True, frozen=True, auto_attribs=True) class TCPListenerConfig: """Object describing the configuration of a single TCP listener.""" port: int = attr.ib(validator=attr.validators.instance_of(int)) bind_addresses: List[str] = attr.ib(validator=attr.validators.instance_of(List)) type: str = attr.ib(validator=attr.validators.in_(KNOWN_LISTENER_TYPES)) tls: bool = False # http_options is only populated if type=http http_options: Optional[HttpListenerConfig] = None def get_site_tag(self) -> str: """Retrieves http_options.tag if it exists, otherwise the port number.""" if self.http_options and self.http_options.tag is not None: return self.http_options.tag else: return str(self.port) def is_tls(self) -> bool: return self.tls @attr.s(slots=True, frozen=True, auto_attribs=True) class UnixListenerConfig: """Object describing the configuration of a single Unix socket listener.""" # Note: unix sockets can not be tls encrypted, so HAVE to be behind a tls-handling # reverse proxy path: str = attr.ib() # A default(0o666) for this is set in parse_listener_def() below mode: int type: str = attr.ib(validator=attr.validators.in_(KNOWN_LISTENER_TYPES)) # http_options is only populated if type=http http_options: Optional[HttpListenerConfig] = None def get_site_tag(self) -> str: return "unix" def is_tls(self) -> bool: """Unix sockets can't have TLS""" return False ListenerConfig = Union[TCPListenerConfig, UnixListenerConfig] @attr.s(slots=True, frozen=True, auto_attribs=True) class ManholeConfig: """Object describing the configuration of the manhole""" username: str = attr.ib(validator=attr.validators.instance_of(str)) password: str = attr.ib(validator=attr.validators.instance_of(str)) priv_key: Optional[Key] pub_key: Optional[Key] @attr.s(frozen=True) class LimitRemoteRoomsConfig: enabled: bool = attr.ib(validator=attr.validators.instance_of(bool), default=False) complexity: Union[float, int] = attr.ib( validator=attr.validators.instance_of((float, int)), # noqa default=1.0, ) complexity_error: str = attr.ib( validator=attr.validators.instance_of(str), default=ROOM_COMPLEXITY_TOO_GREAT, ) admins_can_join: bool = attr.ib( validator=attr.validators.instance_of(bool), default=False ) class ServerConfig(Config): section = "server" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.server_name = config["server_name"] self.server_context = config.get("server_context", None) try: parse_and_validate_server_name(self.server_name) except ValueError as e: raise ConfigError(str(e)) self.pid_file = self.abspath(config.get("pid_file")) self.soft_file_limit = config.get("soft_file_limit", 0) self.daemonize = bool(config.get("daemonize")) self.print_pidfile = bool(config.get("print_pidfile")) self.user_agent_suffix = config.get("user_agent_suffix") self.use_frozen_dicts = config.get("use_frozen_dicts", False) self.serve_server_wellknown = config.get("serve_server_wellknown", False) # Whether we should serve a "client well-known": # (a) at .well-known/matrix/client on our client HTTP listener # (b) in the response to /login # # ... which together help ensure that clients use our public_baseurl instead of # whatever they were told by the user. # # For the sake of backwards compatibility with existing installations, this is # True if public_baseurl is specified explicitly, and otherwise False. (The # reasoning here is that we have no way of knowing that the default # public_baseurl is actually correct for existing installations - many things # will not work correctly, but that's (probably?) better than sending clients # to a completely broken URL. self.serve_client_wellknown = False public_baseurl = config.get("public_baseurl") if public_baseurl is None: public_baseurl = f"https://{self.server_name}/" logger.info("Using default public_baseurl %s", public_baseurl) else: self.serve_client_wellknown = True if public_baseurl[-1] != "/": public_baseurl += "/" self.public_baseurl = public_baseurl # check that public_baseurl is valid try: splits = urllib.parse.urlsplit(self.public_baseurl) except Exception as e: raise ConfigError(f"Unable to parse URL: {e}", ("public_baseurl",)) if splits.scheme not in ("https", "http"): raise ConfigError( f"Invalid scheme '{splits.scheme}': only https and http are supported" ) if splits.query or splits.fragment: raise ConfigError( "public_baseurl cannot contain query parameters or a #-fragment" ) self.extra_well_known_client_content = config.get( "extra_well_known_client_content", {} ) if not isinstance(self.extra_well_known_client_content, dict): raise ConfigError( "extra_well_known_content must be a dictionary of key-value pairs" ) if "m.homeserver" in self.extra_well_known_client_content: raise ConfigError( "m.homeserver is not supported in extra_well_known_content, " "use public_baseurl in base config instead." ) if "m.identity_server" in self.extra_well_known_client_content: raise ConfigError( "m.identity_server is not supported in extra_well_known_content, " "use default_identity_server in base config instead." ) # Whether to enable user presence. presence_config = config.get("presence") or {} presence_enabled = presence_config.get("enabled") if presence_enabled is None: presence_enabled = config.get("use_presence", True) # Whether presence is enabled *at all*. self.presence_enabled = bool(presence_enabled) # Whether to internally track presence, requires that presence is enabled, self.track_presence = self.presence_enabled and presence_enabled != "untracked" # Custom presence router module # This is the legacy way of configuring it (the config should now be put in the modules section) self.presence_router_module_class = None self.presence_router_config = None presence_router_config = presence_config.get("presence_router") if presence_router_config: ( self.presence_router_module_class, self.presence_router_config, ) = load_module(presence_router_config, ("presence", "presence_router")) # whether to enable the media repository endpoints. This should be set # to false if the media repository is running as a separate endpoint; # doing so ensures that we will not run cache cleanup jobs on the # master, potentially causing inconsistency. self.enable_media_repo = config.get("enable_media_repo", True) # Whether to require authentication to retrieve profile data (avatars, # display names) of other users through the client API. self.require_auth_for_profile_requests = config.get( "require_auth_for_profile_requests", False ) # Whether to require sharing a room with a user to retrieve their # profile data self.limit_profile_requests_to_users_who_share_rooms = config.get( "limit_profile_requests_to_users_who_share_rooms", False, ) # Whether to retrieve and display profile data for a user when they # are invited to a room self.include_profile_data_on_invite = config.get( "include_profile_data_on_invite", True ) if "restrict_public_rooms_to_local_users" in config and ( "allow_public_rooms_without_auth" in config or "allow_public_rooms_over_federation" in config ): raise ConfigError( "Can't use 'restrict_public_rooms_to_local_users' if" " 'allow_public_rooms_without_auth' and/or" " 'allow_public_rooms_over_federation' is set." ) # Check if the legacy "restrict_public_rooms_to_local_users" flag is set. This # flag is now obsolete but we need to check it for backward-compatibility. if config.get("restrict_public_rooms_to_local_users", False): self.allow_public_rooms_without_auth = False self.allow_public_rooms_over_federation = False else: # If set to 'true', removes the need for authentication to access the server's # public rooms directory through the client API, meaning that anyone can # query the room directory. Defaults to 'false'. self.allow_public_rooms_without_auth = config.get( "allow_public_rooms_without_auth", False ) # If set to 'true', allows any other homeserver to fetch the server's public # rooms directory via federation. Defaults to 'false'. self.allow_public_rooms_over_federation = config.get( "allow_public_rooms_over_federation", False ) default_room_version = config.get("default_room_version", DEFAULT_ROOM_VERSION) # Ensure room version is a str default_room_version = str(default_room_version) if default_room_version not in KNOWN_ROOM_VERSIONS: raise ConfigError( "Unknown default_room_version: %s, known room versions: %s" % (default_room_version, list(KNOWN_ROOM_VERSIONS.keys())) ) # Get the actual room version object rather than just the identifier self.default_room_version = KNOWN_ROOM_VERSIONS[default_room_version] # whether to enable search. If disabled, new entries will not be inserted # into the search tables and they will not be indexed. Users will receive # errors when attempting to search for messages. self.enable_search = config.get("enable_search", True) self.filter_timeline_limit = config.get("filter_timeline_limit", 100) # Whether we should block invites sent to users on this server # (other than those sent by local server admins) self.block_non_admin_invites = config.get("block_non_admin_invites", False) # Options to control access by tracking MAU self.limit_usage_by_mau = config.get("limit_usage_by_mau", False) self.max_mau_value = 0 if self.limit_usage_by_mau: self.max_mau_value = config.get("max_mau_value", 0) self.mau_stats_only = config.get("mau_stats_only", False) self.mau_limits_reserved_threepids = config.get( "mau_limit_reserved_threepids", [] ) self.mau_trial_days = config.get("mau_trial_days", 0) self.mau_appservice_trial_days = config.get("mau_appservice_trial_days", {}) self.mau_limit_alerting = config.get("mau_limit_alerting", True) # How long to keep redacted events in the database in unredacted form # before redacting them. redaction_retention_period = config.get("redaction_retention_period", "7d") if redaction_retention_period is not None: self.redaction_retention_period: Optional[int] = self.parse_duration( redaction_retention_period ) else: self.redaction_retention_period = None # How long to keep locally forgotten rooms before purging them from the DB. forgotten_room_retention_period = config.get( "forgotten_room_retention_period", None ) if forgotten_room_retention_period is not None: self.forgotten_room_retention_period: Optional[int] = self.parse_duration( forgotten_room_retention_period ) else: self.forgotten_room_retention_period = None # How long to keep entries in the `users_ips` table. user_ips_max_age = config.get("user_ips_max_age", "28d") if user_ips_max_age is not None: self.user_ips_max_age: Optional[int] = self.parse_duration(user_ips_max_age) else: self.user_ips_max_age = None # Options to disable HS self.hs_disabled = config.get("hs_disabled", False) self.hs_disabled_message = config.get("hs_disabled_message", "") # Admin uri to direct users at should their instance become blocked # due to resource constraints self.admin_contact = config.get("admin_contact", None) ip_range_blocklist = config.get( "ip_range_blacklist", DEFAULT_IP_RANGE_BLOCKLIST ) # Attempt to create an IPSet from the given ranges # Always block 0.0.0.0, :: self.ip_range_blocklist = generate_ip_set( ip_range_blocklist, ["0.0.0.0", "::"], config_path=("ip_range_blacklist",) ) self.ip_range_allowlist = generate_ip_set( config.get("ip_range_whitelist", ()), config_path=("ip_range_whitelist",) ) # The federation_ip_range_blacklist is used for backwards-compatibility # and only applies to federation and identity servers. if "federation_ip_range_blacklist" in config: # Always block 0.0.0.0, :: self.federation_ip_range_blocklist = generate_ip_set( config["federation_ip_range_blacklist"], ["0.0.0.0", "::"], config_path=("federation_ip_range_blacklist",), ) # 'federation_ip_range_whitelist' was never a supported configuration option. self.federation_ip_range_allowlist = None else: # No backwards-compatiblity requrired, as federation_ip_range_blacklist # is not given. Default to ip_range_blacklist and ip_range_whitelist. self.federation_ip_range_blocklist = self.ip_range_blocklist self.federation_ip_range_allowlist = self.ip_range_allowlist # (undocumented) option for torturing the worker-mode replication a bit, # for testing. The value defines the number of milliseconds to pause before # sending out any replication updates. self.replication_torture_level = config.get("replication_torture_level") # Whether to require a user to be in the room to add an alias to it. # Defaults to True. self.require_membership_for_aliases = config.get( "require_membership_for_aliases", True ) # Whether to allow per-room membership profiles through the send of membership # events with profile information that differ from the target's global profile. self.allow_per_room_profiles = config.get("allow_per_room_profiles", True) # The maximum size an avatar can have, in bytes. self.max_avatar_size = config.get("max_avatar_size") if self.max_avatar_size is not None: self.max_avatar_size = self.parse_size(self.max_avatar_size) # The MIME types allowed for an avatar. self.allowed_avatar_mimetypes = config.get("allowed_avatar_mimetypes") if self.allowed_avatar_mimetypes and not isinstance( self.allowed_avatar_mimetypes, list, ): raise ConfigError("allowed_avatar_mimetypes must be a list") listeners = config.get("listeners", []) if not isinstance(listeners, list): raise ConfigError("Expected a list", ("listeners",)) self.listeners = [parse_listener_def(i, x) for i, x in enumerate(listeners)] # no_tls is not really supported anymore, but let's grandfather it in here. if config.get("no_tls", False): l2 = [] for listener in self.listeners: if isinstance(listener, TCPListenerConfig) and listener.tls: # Use isinstance() as the assertion this *has* a listener.port logger.info( "Ignoring TLS-enabled listener on port %i due to no_tls", listener.port, ) else: l2.append(listener) self.listeners = l2 self.web_client_location = config.get("web_client_location", None) # Non-HTTP(S) web client location is not supported. if self.web_client_location and not ( self.web_client_location.startswith("http://") or self.web_client_location.startswith("https://") ): raise ConfigError("web_client_location must point to a HTTP(S) URL.") self.gc_thresholds = read_gc_thresholds(config.get("gc_thresholds", None)) self.gc_seconds = self.read_gc_intervals(config.get("gc_min_interval", None)) self.limit_remote_rooms = LimitRemoteRoomsConfig( **(config.get("limit_remote_rooms") or {}) ) bind_port = config.get("bind_port") if bind_port: if config.get("no_tls", False): raise ConfigError("no_tls is incompatible with bind_port") self.listeners = [] bind_host = config.get("bind_host", "") gzip_responses = config.get("gzip_responses", True) http_options = HttpListenerConfig( resources=[ HttpResourceConfig(names=["client"], compress=gzip_responses), HttpResourceConfig(names=["federation"]), ], ) self.listeners.append( TCPListenerConfig( port=bind_port, bind_addresses=[bind_host], tls=True, type="http", http_options=http_options, ) ) unsecure_port = config.get("unsecure_port", bind_port - 400) if unsecure_port: self.listeners.append( TCPListenerConfig( port=unsecure_port, bind_addresses=[bind_host], tls=False, type="http", http_options=http_options, ) ) manhole = config.get("manhole") if manhole: self.listeners.append( TCPListenerConfig( port=manhole, bind_addresses=["127.0.0.1"], type="manhole", ) ) manhole_settings = config.get("manhole_settings") or {} validate_config( _MANHOLE_SETTINGS_SCHEMA, manhole_settings, ("manhole_settings",) ) manhole_username = manhole_settings.get("username", "matrix") manhole_password = manhole_settings.get("password", "rabbithole") manhole_priv_key_path = manhole_settings.get("ssh_priv_key_path") manhole_pub_key_path = manhole_settings.get("ssh_pub_key_path") manhole_priv_key = None if manhole_priv_key_path is not None: try: manhole_priv_key = Key.fromFile(manhole_priv_key_path) except Exception as e: raise ConfigError( f"Failed to read manhole private key file {manhole_priv_key_path}" ) from e manhole_pub_key = None if manhole_pub_key_path is not None: try: manhole_pub_key = Key.fromFile(manhole_pub_key_path) except Exception as e: raise ConfigError( f"Failed to read manhole public key file {manhole_pub_key_path}" ) from e self.manhole_settings = ManholeConfig( username=manhole_username, password=manhole_password, priv_key=manhole_priv_key, pub_key=manhole_pub_key, ) metrics_port = config.get("metrics_port") if metrics_port: logger.warning(METRICS_PORT_WARNING) self.listeners.append( TCPListenerConfig( port=metrics_port, bind_addresses=[config.get("metrics_bind_host", "127.0.0.1")], type="http", http_options=HttpListenerConfig( resources=[HttpResourceConfig(names=["metrics"])] ), ) ) self.cleanup_extremities_with_dummy_events = config.get( "cleanup_extremities_with_dummy_events", True ) # The number of forward extremities in a room needed to send a dummy event. self.dummy_events_threshold = config.get("dummy_events_threshold", 10) self.enable_ephemeral_messages = config.get("enable_ephemeral_messages", False) # Inhibits the /requestToken endpoints from returning an error that might leak # information about whether an e-mail address is in use or not on this # homeserver, and instead return a 200 with a fake sid if this kind of error is # met, without sending anything. # This is a compromise between sending an email, which could be a spam vector, # and letting the client know which email address is bound to an account and # which one isn't. self.request_token_inhibit_3pid_errors = config.get( "request_token_inhibit_3pid_errors", False, ) # Whitelist of domain names that given next_link parameters must have next_link_domain_whitelist: Optional[List[str]] = config.get( "next_link_domain_whitelist" ) self.next_link_domain_whitelist: Optional[Set[str]] = None if next_link_domain_whitelist is not None: if not isinstance(next_link_domain_whitelist, list): raise ConfigError("'next_link_domain_whitelist' must be a list") # Turn the list into a set to improve lookup speed. self.next_link_domain_whitelist = set(next_link_domain_whitelist) templates_config = config.get("templates") or {} if not isinstance(templates_config, dict): raise ConfigError("The 'templates' section must be a dictionary") self.custom_template_directory: Optional[str] = templates_config.get( "custom_template_directory" ) if self.custom_template_directory is not None and not isinstance( self.custom_template_directory, str ): raise ConfigError("'custom_template_directory' must be a string") self.use_account_validity_in_account_status: bool = ( config.get("use_account_validity_in_account_status") or False ) self.rooms_to_exclude_from_sync: List[str] = ( config.get("exclude_rooms_from_sync") or [] ) delete_stale_devices_after: Optional[str] = ( config.get("delete_stale_devices_after") or None ) if delete_stale_devices_after is not None: self.delete_stale_devices_after: Optional[int] = self.parse_duration( delete_stale_devices_after ) else: self.delete_stale_devices_after = None def has_tls_listener(self) -> bool: return any(listener.is_tls() for listener in self.listeners) def generate_config_section( self, config_dir_path: str, data_dir_path: str, server_name: str, open_private_ports: bool, listeners: Optional[List[dict]], **kwargs: Any, ) -> str: _, bind_port = parse_and_validate_server_name(server_name) if bind_port is not None: unsecure_port = bind_port - 400 else: bind_port = 8448 unsecure_port = 8008 pid_file = os.path.join(data_dir_path, "homeserver.pid") secure_listeners = [] unsecure_listeners = [] private_addresses = ["::1", "127.0.0.1"] if listeners: for listener in listeners: if listener["tls"]: secure_listeners.append(listener) else: # If we don't want open ports we need to bind the listeners # to some address other than 0.0.0.0. Here we chose to use # localhost. # If the addresses are already bound we won't overwrite them # however. if not open_private_ports: listener.setdefault("bind_addresses", private_addresses) unsecure_listeners.append(listener) secure_http_bindings = indent( yaml.dump(secure_listeners), " " * 10 ).lstrip() unsecure_http_bindings = indent( yaml.dump(unsecure_listeners), " " * 10 ).lstrip() if not unsecure_listeners: unsecure_http_bindings = ( """- port: %(unsecure_port)s tls: false type: http x_forwarded: true""" % locals() ) if not open_private_ports: unsecure_http_bindings += ( "\n bind_addresses: ['::1', '127.0.0.1']" ) unsecure_http_bindings += """ resources: - names: [client, federation] compress: false""" if listeners: unsecure_http_bindings = "" if not secure_listeners: secure_http_bindings = "" return ( """\ server_name: "%(server_name)s" pid_file: %(pid_file)s listeners: %(secure_http_bindings)s %(unsecure_http_bindings)s """ % locals() ) def read_arguments(self, args: argparse.Namespace) -> None: if args.manhole is not None: self.manhole = args.manhole if args.daemonize is not None: self.daemonize = args.daemonize if args.print_pidfile is not None: self.print_pidfile = args.print_pidfile @staticmethod def add_arguments(parser: argparse.ArgumentParser) -> None: server_group = parser.add_argument_group("server") server_group.add_argument( "-D", "--daemonize", action="store_true", default=None, help="Daemonize the homeserver", ) server_group.add_argument( "--print-pidfile", action="store_true", default=None, help="Print the path to the pidfile just before daemonizing", ) server_group.add_argument( "--manhole", metavar="PORT", dest="manhole", type=int, help="Turn on the twisted telnet manhole service on the given port.", ) def read_gc_intervals(self, durations: Any) -> Optional[Tuple[float, float, float]]: """Reads the three durations for the GC min interval option, returning seconds.""" if durations is None: return None try: if len(durations) != 3: raise ValueError() return ( self.parse_duration(durations[0]) / 1000, self.parse_duration(durations[1]) / 1000, self.parse_duration(durations[2]) / 1000, ) except Exception: raise ConfigError( "Value of `gc_min_interval` must be a list of three durations if set" ) def is_threepid_reserved( reserved_threepids: List[JsonDict], threepid: JsonDict ) -> bool: """Check the threepid against the reserved threepid config Args: reserved_threepids: List of reserved threepids threepid: The threepid to test for Returns: Is the threepid undertest reserved_user """ for tp in reserved_threepids: if threepid["medium"] == tp["medium"] and threepid["address"] == tp["address"]: return True return False def read_gc_thresholds( thresholds: Optional[List[Any]], ) -> Optional[Tuple[int, int, int]]: """Reads the three integer thresholds for garbage collection. Ensures that the thresholds are integers if thresholds are supplied. """ if thresholds is None: return None try: assert len(thresholds) == 3 return int(thresholds[0]), int(thresholds[1]), int(thresholds[2]) except Exception: raise ConfigError( "Value of `gc_threshold` must be a list of three integers if set" ) def parse_listener_def(num: int, listener: Any) -> ListenerConfig: """parse a listener config from the config file""" if not isinstance(listener, dict): raise ConfigError("Expected a dictionary", ("listeners", str(num))) listener_type = listener["type"] # Raise a helpful error if direct TCP replication is still configured. if listener_type == "replication": raise ConfigError(DIRECT_TCP_ERROR, ("listeners", str(num), "type")) port = listener.get("port") socket_path = listener.get("path") # Either a port or a path should be declared at a minimum. Using both would be bad. if port is not None and not isinstance(port, int): raise ConfigError("Listener configuration is lacking a valid 'port' option") if socket_path is not None and not isinstance(socket_path, str): raise ConfigError("Listener configuration is lacking a valid 'path' option") if port and socket_path: raise ConfigError( "Can not have both a UNIX socket and an IP/port declared for the same " "resource!" ) if port is None and socket_path is None: raise ConfigError( "Must have either a UNIX socket or an IP/port declared for a given " "resource!" ) tls = listener.get("tls", False) http_config = None if listener_type == "http": try: resources = [ HttpResourceConfig(**res) for res in listener.get("resources", []) ] except ValueError as e: raise ConfigError("Unknown listener resource") from e # For a unix socket, default x_forwarded to True, as this is the only way of # getting a client IP. # Note: a reverse proxy is required anyway, as there is no way of exposing a # unix socket to the internet. http_config = HttpListenerConfig( x_forwarded=listener.get("x_forwarded", (True if socket_path else False)), resources=resources, additional_resources=listener.get("additional_resources", {}), tag=listener.get("tag"), request_id_header=listener.get("request_id_header"), experimental_cors_msc3886=listener.get("experimental_cors_msc3886", False), ) if socket_path: # TODO: Add in path validation, like if the directory exists and is writable? # Set a default for the permission, in case it's left out socket_mode = listener.get("mode", 0o666) return UnixListenerConfig(socket_path, socket_mode, listener_type, http_config) else: assert port is not None bind_addresses = listener.get("bind_addresses", []) bind_address = listener.get("bind_address") # if bind_address was specified, add it to the list of addresses if bind_address: bind_addresses.append(bind_address) # if we still have an empty list of addresses, use the default list if not bind_addresses: if listener_type == "metrics": # the metrics listener doesn't support IPv6 bind_addresses.append("0.0.0.0") else: bind_addresses.extend(DEFAULT_BIND_ADDRESSES) return TCPListenerConfig(port, bind_addresses, listener_type, tls, http_config) _MANHOLE_SETTINGS_SCHEMA = { "type": "object", "properties": { "username": {"type": "string"}, "password": {"type": "string"}, "ssh_priv_key_path": {"type": "string"}, "ssh_pub_key_path": {"type": "string"}, }, } synapse-1.100.0/synapse/config/server_notices.py000066400000000000000000000061611455622526000217010ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, Optional from synapse.types import JsonDict, UserID from ._base import Config class ServerNoticesConfig(Config): """Configuration for the server notices room. Attributes: server_notices_mxid (str|None): The MXID to use for server notices. None if server notices are not enabled. server_notices_mxid_display_name (str|None): The display name to use for the server notices user. None if server notices are not enabled. server_notices_mxid_avatar_url (str|None): The MXC URL for the avatar of the server notices user. None if server notices are not enabled. server_notices_room_name (str|None): The name to use for the server notices room. None if server notices are not enabled. server_notices_room_avatar_url (str|None): The avatar URL to use for the server notices room. None if server notices are not enabled. server_notices_room_topic (str|None): The topic to use for the server notices room. None if server notices are not enabled. """ section = "servernotices" def __init__(self, *args: Any): super().__init__(*args) self.server_notices_mxid: Optional[str] = None self.server_notices_mxid_display_name: Optional[str] = None self.server_notices_mxid_avatar_url: Optional[str] = None self.server_notices_room_name: Optional[str] = None self.server_notices_room_avatar_url: Optional[str] = None self.server_notices_room_topic: Optional[str] = None self.server_notices_auto_join: bool = False def read_config(self, config: JsonDict, **kwargs: Any) -> None: c = config.get("server_notices") if c is None: return mxid_localpart = c["system_mxid_localpart"] self.server_notices_mxid = UserID( mxid_localpart, self.root.server.server_name ).to_string() self.server_notices_mxid_display_name = c.get("system_mxid_display_name", None) self.server_notices_mxid_avatar_url = c.get("system_mxid_avatar_url", None) # todo: i18n self.server_notices_room_name = c.get("room_name", "Server Notices") self.server_notices_room_avatar_url = c.get("room_avatar_url", None) self.server_notices_room_topic = c.get("room_topic", None) self.server_notices_auto_join = c.get("auto_join", False) synapse-1.100.0/synapse/config/spam_checker.py000066400000000000000000000051701455622526000212720ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any, Dict, List, Tuple from synapse.config import ConfigError from synapse.types import JsonDict from synapse.util.module_loader import load_module from ._base import Config logger = logging.getLogger(__name__) LEGACY_SPAM_CHECKER_WARNING = """ This server is using a spam checker module that is implementing the deprecated spam checker interface. Please check with the module's maintainer to see if a new version supporting Synapse's generic modules system is available. For more information, please see https://element-hq.github.io/synapse/latest/modules/index.html ---------------------------------------------------------------------------------------""" class SpamCheckerConfig(Config): section = "spamchecker" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.spam_checkers: List[Tuple[Any, Dict]] = [] spam_checkers = config.get("spam_checker") or [] if isinstance(spam_checkers, dict): # The spam_checker config option used to only support one # spam checker, and thus was simply a dictionary with module # and config keys. Support this old behaviour by checking # to see if the option resolves to a dictionary self.spam_checkers.append(load_module(spam_checkers, ("spam_checker",))) elif isinstance(spam_checkers, list): for i, spam_checker in enumerate(spam_checkers): config_path = ("spam_checker", "" % i) if not isinstance(spam_checker, dict): raise ConfigError("expected a mapping", config_path) self.spam_checkers.append(load_module(spam_checker, config_path)) else: raise ConfigError("spam_checker syntax is incorrect") # If this configuration is being used in any way, warn the admin that it is going # away soon. if self.spam_checkers: logger.warning(LEGACY_SPAM_CHECKER_WARNING) synapse-1.100.0/synapse/config/sso.py000066400000000000000000000101041455622526000174430ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any, Dict, Optional import attr from synapse.types import JsonDict from ._base import Config logger = logging.getLogger(__name__) LEGACY_TEMPLATE_DIR_WARNING = """ This server's configuration file is using the deprecated 'template_dir' setting in the 'sso' section. Support for this setting has been deprecated and will be removed in a future version of Synapse. Server admins should instead use the new 'custom_template_directory' setting documented here: https://element-hq.github.io/synapse/latest/templates.html ---------------------------------------------------------------------------------------""" @attr.s(frozen=True, auto_attribs=True) class SsoAttributeRequirement: """Object describing a single requirement for SSO attributes.""" attribute: str # If a value is not given, than the attribute must simply exist. value: Optional[str] JSON_SCHEMA = { "type": "object", "properties": {"attribute": {"type": "string"}, "value": {"type": "string"}}, "required": ["attribute", "value"], } class SSOConfig(Config): """SSO Configuration""" section = "sso" def read_config(self, config: JsonDict, **kwargs: Any) -> None: sso_config: Dict[str, Any] = config.get("sso") or {} # The sso-specific template_dir self.sso_template_dir = sso_config.get("template_dir") if self.sso_template_dir is not None: logger.warning(LEGACY_TEMPLATE_DIR_WARNING) # Read templates from disk custom_template_directories = ( self.root.server.custom_template_directory, self.sso_template_dir, ) ( self.sso_login_idp_picker_template, self.sso_redirect_confirm_template, self.sso_auth_confirm_template, self.sso_error_template, sso_account_deactivated_template, sso_auth_success_template, self.sso_auth_bad_user_template, ) = self.read_templates( [ "sso_login_idp_picker.html", "sso_redirect_confirm.html", "sso_auth_confirm.html", "sso_error.html", "sso_account_deactivated.html", "sso_auth_success.html", "sso_auth_bad_user.html", ], (td for td in custom_template_directories if td), ) # These templates have no placeholders, so render them here self.sso_account_deactivated_template = ( sso_account_deactivated_template.render() ) self.sso_auth_success_template = sso_auth_success_template.render() self.sso_client_whitelist = sso_config.get("client_whitelist") or [] self.sso_update_profile_information = ( sso_config.get("update_profile_information") or False ) # Attempt to also whitelist the server's login fallback, since that fallback sets # the redirect URL to itself (so it can process the login token then return # gracefully to the client). This would make it pointless to ask the user for # confirmation, since the URL the confirmation page would be showing wouldn't be # the client's. login_fallback_url = ( self.root.server.public_baseurl + "_matrix/static/client/login" ) self.sso_client_whitelist.append(login_fallback_url) synapse-1.100.0/synapse/config/stats.py000066400000000000000000000033221455622526000200010ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any from synapse.types import JsonDict from ._base import Config ROOM_STATS_DISABLED_WARN = """\ WARNING: room/user statistics have been disabled via the stats.enabled configuration setting. This means that certain features (such as the room directory) will not operate correctly. Future versions of Synapse may ignore this setting. To fix this warning, remove the stats.enabled setting from your configuration file. --------------------------------------------------------------------------------""" logger = logging.getLogger(__name__) class StatsConfig(Config): """Stats Configuration Configuration for the behaviour of synapse's stats engine """ section = "stats" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.stats_enabled = True stats_config = config.get("stats", None) if stats_config: self.stats_enabled = stats_config.get("enabled", self.stats_enabled) if not self.stats_enabled: logger.warning(ROOM_STATS_DISABLED_WARN) synapse-1.100.0/synapse/config/third_party_event_rules.py000066400000000000000000000023631455622526000236130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from synapse.util.module_loader import load_module from ._base import Config class ThirdPartyRulesConfig(Config): section = "thirdpartyrules" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.third_party_event_rules = None provider = config.get("third_party_event_rules", None) if provider is not None: self.third_party_event_rules = load_module( provider, ("third_party_event_rules",) ) synapse-1.100.0/synapse/config/tls.py000066400000000000000000000166441455622526000174600ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Any, List, Optional, Pattern from matrix_common.regex import glob_to_regex from OpenSSL import SSL, crypto from twisted.internet._sslverify import Certificate, trustRootFromCertificates from synapse.config._base import Config, ConfigError from synapse.types import JsonDict logger = logging.getLogger(__name__) class TlsConfig(Config): section = "tls" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.tls_certificate_file = self.abspath(config.get("tls_certificate_path")) self.tls_private_key_file = self.abspath(config.get("tls_private_key_path")) if self.root.server.has_tls_listener(): if not self.tls_certificate_file: raise ConfigError( "tls_certificate_path must be specified if TLS-enabled listeners are " "configured." ) if not self.tls_private_key_file: raise ConfigError( "tls_private_key_path must be specified if TLS-enabled listeners are " "configured." ) # Whether to verify certificates on outbound federation traffic self.federation_verify_certificates = config.get( "federation_verify_certificates", True ) # Minimum TLS version to use for outbound federation traffic self.federation_client_minimum_tls_version = str( config.get("federation_client_minimum_tls_version", 1) ) if self.federation_client_minimum_tls_version not in ["1", "1.1", "1.2", "1.3"]: raise ConfigError( "federation_client_minimum_tls_version must be one of: 1, 1.1, 1.2, 1.3" ) # Prevent people shooting themselves in the foot here by setting it to # the biggest number blindly if self.federation_client_minimum_tls_version == "1.3": if getattr(SSL, "OP_NO_TLSv1_3", None) is None: raise ConfigError( "federation_client_minimum_tls_version cannot be 1.3, " "your OpenSSL does not support it" ) # Whitelist of domains to not verify certificates for fed_whitelist_entries = config.get( "federation_certificate_verification_whitelist", [] ) if fed_whitelist_entries is None: fed_whitelist_entries = [] # Support globs (*) in whitelist values self.federation_certificate_verification_whitelist: List[Pattern] = [] for entry in fed_whitelist_entries: try: entry_regex = glob_to_regex(entry.encode("ascii").decode("ascii")) except UnicodeEncodeError: raise ConfigError( "IDNA domain names are not allowed in the " "federation_certificate_verification_whitelist: %s" % (entry,) ) # Convert globs to regex self.federation_certificate_verification_whitelist.append(entry_regex) # List of custom certificate authorities for federation traffic validation custom_ca_list = config.get("federation_custom_ca_list", None) # Read in and parse custom CA certificates self.federation_ca_trust_root = None if custom_ca_list is not None: if len(custom_ca_list) == 0: # A trustroot cannot be generated without any CA certificates. # Raise an error if this option has been specified without any # corresponding certificates. raise ConfigError( "federation_custom_ca_list specified without " "any certificate files" ) certs = [] for ca_file in custom_ca_list: logger.debug("Reading custom CA certificate file: %s", ca_file) content = self.read_file(ca_file, "federation_custom_ca_list") # Parse the CA certificates try: cert_base = Certificate.loadPEM(content) certs.append(cert_base) except Exception as e: raise ConfigError( "Error parsing custom CA certificate file %s: %s" % (ca_file, e) ) self.federation_ca_trust_root = trustRootFromCertificates(certs) # This config option applies to non-federation HTTP clients # (e.g. for talking to recaptcha, identity servers, and such) # It should never be used in production, and is intended for # use only when running tests. self.use_insecure_ssl_client_just_for_testing_do_not_use = config.get( "use_insecure_ssl_client_just_for_testing_do_not_use" ) self.tls_certificate: Optional[crypto.X509] = None self.tls_private_key: Optional[crypto.PKey] = None def read_certificate_from_disk(self) -> None: """ Read the certificates and private key from disk. """ self.tls_private_key = self.read_tls_private_key() self.tls_certificate = self.read_tls_certificate() def generate_config_section( self, tls_certificate_path: Optional[str], tls_private_key_path: Optional[str], **kwargs: Any, ) -> str: """If the TLS paths are not specified the default will be certs in the config directory""" if bool(tls_certificate_path) != bool(tls_private_key_path): raise ConfigError( "Please specify both a cert path and a key path or neither." ) if tls_certificate_path and tls_private_key_path: return f"""\ tls_certificate_path: {tls_certificate_path} tls_private_key_path: {tls_private_key_path} """ else: return "" def read_tls_certificate(self) -> crypto.X509: """Reads the TLS certificate from the configured file, and returns it Returns: The certificate """ cert_path = self.tls_certificate_file logger.info("Loading TLS certificate from %s", cert_path) cert_pem = self.read_file(cert_path, "tls_certificate_path") cert = crypto.load_certificate(crypto.FILETYPE_PEM, cert_pem.encode()) return cert def read_tls_private_key(self) -> crypto.PKey: """Reads the TLS private key from the configured file, and returns it Returns: The private key """ private_key_path = self.tls_private_key_file logger.info("Loading TLS key from %s", private_key_path) private_key_pem = self.read_file(private_key_path, "tls_private_key_path") return crypto.load_privatekey(crypto.FILETYPE_PEM, private_key_pem) synapse-1.100.0/synapse/config/tracer.py000066400000000000000000000046301455622526000201260ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C.d # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any, List, Set from synapse.types import JsonDict from synapse.util.check_dependencies import check_requirements from ._base import Config, ConfigError class TracerConfig(Config): section = "tracing" def read_config(self, config: JsonDict, **kwargs: Any) -> None: opentracing_config = config.get("opentracing") if opentracing_config is None: opentracing_config = {} self.opentracer_enabled = opentracing_config.get("enabled", False) self.jaeger_config = opentracing_config.get( "jaeger_config", {"sampler": {"type": "const", "param": 1}, "logging": False}, ) self.force_tracing_for_users: Set[str] = set() if not self.opentracer_enabled: return check_requirements("opentracing") # The tracer is enabled so sanitize the config self.opentracer_whitelist: List[str] = opentracing_config.get( "homeserver_whitelist", [] ) if not isinstance(self.opentracer_whitelist, list): raise ConfigError("Tracer homeserver_whitelist config is malformed") force_tracing_for_users = opentracing_config.get("force_tracing_for_users", []) if not isinstance(force_tracing_for_users, list): raise ConfigError( "Expected a list", ("opentracing", "force_tracing_for_users") ) for i, u in enumerate(force_tracing_for_users): if not isinstance(u, str): raise ConfigError( "Expected a string", ("opentracing", "force_tracing_for_users", f"index {i}"), ) self.force_tracing_for_users.add(u) synapse-1.100.0/synapse/config/user_directory.py000066400000000000000000000027351455622526000217140ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from ._base import Config class UserDirectoryConfig(Config): """User Directory Configuration Configuration for the behaviour of the /user_directory API """ section = "userdirectory" def read_config(self, config: JsonDict, **kwargs: Any) -> None: user_directory_config = config.get("user_directory") or {} self.user_directory_search_enabled = user_directory_config.get("enabled", True) self.user_directory_search_all_users = user_directory_config.get( "search_all_users", False ) self.user_directory_search_prefer_local_users = user_directory_config.get( "prefer_local_users", False ) self.show_locked_users = user_directory_config.get("show_locked_users", False) synapse-1.100.0/synapse/config/voip.py000066400000000000000000000024701455622526000176230ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Any from synapse.types import JsonDict from ._base import Config class VoipConfig(Config): section = "voip" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.turn_uris = config.get("turn_uris", []) self.turn_shared_secret = config.get("turn_shared_secret") self.turn_username = config.get("turn_username") self.turn_password = config.get("turn_password") self.turn_user_lifetime = self.parse_duration( config.get("turn_user_lifetime", "1h") ) self.turn_allow_guests = config.get("turn_allow_guests", True) synapse-1.100.0/synapse/config/workers.py000066400000000000000000000574301455622526000203500ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import argparse import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union import attr from synapse._pydantic_compat import HAS_PYDANTIC_V2 if TYPE_CHECKING or HAS_PYDANTIC_V2: from pydantic.v1 import BaseModel, Extra, StrictBool, StrictInt, StrictStr else: from pydantic import BaseModel, Extra, StrictBool, StrictInt, StrictStr from synapse.config._base import ( Config, ConfigError, RoutableShardedWorkerHandlingConfig, ShardedWorkerHandlingConfig, ) from synapse.config._util import parse_and_validate_mapping from synapse.config.server import ( DIRECT_TCP_ERROR, TCPListenerConfig, parse_listener_def, ) from synapse.types import JsonDict _DEPRECATED_WORKER_DUTY_OPTION_USED = """ The '%s' configuration option is deprecated and will be removed in a future Synapse version. Please use ``%s: name_of_worker`` instead. """ _MISSING_MAIN_PROCESS_INSTANCE_MAP_DATA = """ Missing data for a worker to connect to main process. Please include '%s' in the `instance_map` declared in your shared yaml configuration as defined in configuration documentation here: `https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#instance_map` """ WORKER_REPLICATION_SETTING_DEPRECATED_MESSAGE = """ '%s' is no longer a supported worker setting, please place '%s' onto your shared configuration under `main` inside the `instance_map`. See workers documentation here: `https://element-hq.github.io/synapse/latest/workers.html#worker-configuration` """ # This allows for a handy knob when it's time to change from 'master' to # something with less 'history' MAIN_PROCESS_INSTANCE_NAME = "master" # Use this to adjust what the main process is known as in the yaml instance_map MAIN_PROCESS_INSTANCE_MAP_NAME = "main" logger = logging.getLogger(__name__) def _instance_to_list_converter(obj: Union[str, List[str]]) -> List[str]: """Helper for allowing parsing a string or list of strings to a config option expecting a list of strings. """ if isinstance(obj, str): return [obj] return obj class ConfigModel(BaseModel): """A custom version of Pydantic's BaseModel which - ignores unknown fields and - does not allow fields to be overwritten after construction, but otherwise uses Pydantic's default behaviour. For now, ignore unknown fields. In the future, we could change this so that unknown config values cause a ValidationError, provided the error messages are meaningful to server operators. Subclassing in this way is recommended by https://pydantic-docs.helpmanual.io/usage/model_config/#change-behaviour-globally """ class Config: # By default, ignore fields that we don't recognise. extra = Extra.ignore # By default, don't allow fields to be reassigned after parsing. allow_mutation = False class InstanceTcpLocationConfig(ConfigModel): """The host and port to talk to an instance via HTTP replication.""" host: StrictStr port: StrictInt tls: StrictBool = False def scheme(self) -> str: """Hardcode a retrievable scheme based on self.tls""" return "https" if self.tls else "http" def netloc(self) -> str: """Nicely format the network location data""" return f"{self.host}:{self.port}" class InstanceUnixLocationConfig(ConfigModel): """The socket file to talk to an instance via HTTP replication.""" path: StrictStr def scheme(self) -> str: """Hardcode a retrievable scheme""" return "unix" def netloc(self) -> str: """Nicely format the address location data""" return f"{self.path}" InstanceLocationConfig = Union[InstanceTcpLocationConfig, InstanceUnixLocationConfig] @attr.s class WriterLocations: """Specifies the instances that write various streams. Attributes: events: The instances that write to the event and backfill streams. typing: The instances that write to the typing stream. Currently can only be a single instance. to_device: The instances that write to the to_device stream. Currently can only be a single instance. account_data: The instances that write to the account data streams. Currently can only be a single instance. receipts: The instances that write to the receipts stream. Currently can only be a single instance. presence: The instances that write to the presence stream. Currently can only be a single instance. """ events: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) typing: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) to_device: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) account_data: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) receipts: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) presence: List[str] = attr.ib( default=["master"], converter=_instance_to_list_converter, ) @attr.s(auto_attribs=True) class OutboundFederationRestrictedTo: """Whether we limit outbound federation to a certain set of instances. Attributes: instances: optional list of instances that can make outbound federation requests. If None then all instances can make federation requests. locations: list of instance locations to connect to proxy via. """ instances: Optional[List[str]] locations: List[InstanceLocationConfig] = attr.Factory(list) def __contains__(self, instance: str) -> bool: # It feels a bit dirty to return `True` if `instances` is `None`, but it makes # sense in downstream usage in the sense that if # `outbound_federation_restricted_to` is not configured, then any instance can # talk to federation (no restrictions so always return `True`). return self.instances is None or instance in self.instances class WorkerConfig(Config): """The workers are processes run separately to the main synapse process. They have their own pid_file and listener configuration. They use the replication_url to talk to the main synapse process.""" section = "worker" def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.worker_app = config.get("worker_app") # Canonicalise worker_app so that master always has None if self.worker_app == "synapse.app.homeserver": self.worker_app = None self.worker_listeners = [ parse_listener_def(i, x) for i, x in enumerate(config.get("worker_listeners", [])) ] self.worker_daemonize = bool(config.get("worker_daemonize")) self.worker_pid_file = config.get("worker_pid_file") worker_log_config = config.get("worker_log_config") if worker_log_config is not None and not isinstance(worker_log_config, str): raise ConfigError("worker_log_config must be a string") self.worker_log_config = worker_log_config # The port on the main synapse for TCP replication if "worker_replication_port" in config: raise ConfigError(DIRECT_TCP_ERROR, ("worker_replication_port",)) # The shared secret used for authentication when connecting to the main synapse. self.worker_replication_secret = config.get("worker_replication_secret", None) self.worker_name = config.get("worker_name", self.worker_app) self.instance_name = self.worker_name or MAIN_PROCESS_INSTANCE_NAME # FIXME: Remove this check after a suitable amount of time. self.worker_main_http_uri = config.get("worker_main_http_uri", None) if self.worker_main_http_uri is not None: logger.warning( "The config option worker_main_http_uri is unused since Synapse 1.73. " "It can be safely removed from your configuration." ) # This option is really only here to support `--manhole` command line # argument. manhole = config.get("worker_manhole") if manhole: self.worker_listeners.append( TCPListenerConfig( port=manhole, bind_addresses=["127.0.0.1"], type="manhole", ) ) federation_sender_instances = self._worker_names_performing_this_duty( config, "send_federation", "synapse.app.federation_sender", "federation_sender_instances", ) self.send_federation = self.instance_name in federation_sender_instances self.federation_shard_config = ShardedWorkerHandlingConfig( federation_sender_instances ) # A map from instance name to host/port of their HTTP replication endpoint. # Check if the main process is declared. The main process itself doesn't need # this data as it would never have to talk to itself. instance_map: Dict[str, Any] = config.get("instance_map", {}) if self.instance_name is not MAIN_PROCESS_INSTANCE_NAME: # TODO: The next 3 condition blocks can be deleted after some time has # passed and we're ready to stop checking for these settings. # The host used to connect to the main synapse main_host = config.get("worker_replication_host", None) if main_host: raise ConfigError( WORKER_REPLICATION_SETTING_DEPRECATED_MESSAGE % ("worker_replication_host", main_host) ) # The port on the main synapse for HTTP replication endpoint main_port = config.get("worker_replication_http_port") if main_port: raise ConfigError( WORKER_REPLICATION_SETTING_DEPRECATED_MESSAGE % ("worker_replication_http_port", main_port) ) # The tls mode on the main synapse for HTTP replication endpoint. # For backward compatibility this defaults to False. main_tls = config.get("worker_replication_http_tls", False) if main_tls: raise ConfigError( WORKER_REPLICATION_SETTING_DEPRECATED_MESSAGE % ("worker_replication_http_tls", main_tls) ) # For now, accept 'main' in the instance_map, but the replication system # expects 'master', force that into being until it's changed later. if MAIN_PROCESS_INSTANCE_MAP_NAME in instance_map: instance_map[MAIN_PROCESS_INSTANCE_NAME] = instance_map[ MAIN_PROCESS_INSTANCE_MAP_NAME ] del instance_map[MAIN_PROCESS_INSTANCE_MAP_NAME] else: # If we've gotten here, it means that the main process is not on the # instance_map. raise ConfigError( _MISSING_MAIN_PROCESS_INSTANCE_MAP_DATA % MAIN_PROCESS_INSTANCE_MAP_NAME ) # type-ignore: the expression `Union[A, B]` is not a Type[Union[A, B]] currently self.instance_map: Dict[ str, InstanceLocationConfig ] = parse_and_validate_mapping( instance_map, InstanceLocationConfig # type: ignore[arg-type] ) # Map from type of streams to source, c.f. WriterLocations. writers = config.get("stream_writers") or {} self.writers = WriterLocations(**writers) # Check that the configured writers for events and typing also appears in # `instance_map`. for stream in ( "events", "typing", "to_device", "account_data", "receipts", "presence", ): instances = _instance_to_list_converter(getattr(self.writers, stream)) for instance in instances: if instance != "master" and instance not in self.instance_map: raise ConfigError( "Instance %r is configured to write %s but does not appear in `instance_map` config." % (instance, stream) ) if len(self.writers.typing) != 1: raise ConfigError( "Must only specify one instance to handle `typing` messages." ) if len(self.writers.to_device) != 1: raise ConfigError( "Must only specify one instance to handle `to_device` messages." ) if len(self.writers.account_data) != 1: raise ConfigError( "Must only specify one instance to handle `account_data` messages." ) if len(self.writers.receipts) == 0: raise ConfigError( "Must specify at least one instance to handle `receipts` messages." ) if len(self.writers.events) == 0: raise ConfigError("Must specify at least one instance to handle `events`.") if len(self.writers.presence) != 1: raise ConfigError( "Must only specify one instance to handle `presence` messages." ) self.events_shard_config = RoutableShardedWorkerHandlingConfig( self.writers.events ) # Handle sharded push pusher_instances = self._worker_names_performing_this_duty( config, "start_pushers", "synapse.app.pusher", "pusher_instances", ) self.start_pushers = self.instance_name in pusher_instances self.pusher_shard_config = ShardedWorkerHandlingConfig(pusher_instances) # Whether this worker should run background tasks or not. # # As a note for developers, the background tasks guarded by this should # be able to run on only a single instance (meaning that they don't # depend on any in-memory state of a particular worker). # # No effort is made to ensure only a single instance of these tasks is # running. background_tasks_instance = config.get("run_background_tasks_on") or "master" self.run_background_tasks = ( self.worker_name is None and background_tasks_instance == "master" ) or self.worker_name == background_tasks_instance self.should_notify_appservices = self._should_this_worker_perform_duty( config, legacy_master_option_name="notify_appservices", legacy_worker_app_name="synapse.app.appservice", new_option_name="notify_appservices_from_worker", ) self.should_update_user_directory = self._should_this_worker_perform_duty( config, legacy_master_option_name="update_user_directory", legacy_worker_app_name="synapse.app.user_dir", new_option_name="update_user_directory_from_worker", ) outbound_federation_restricted_to = config.get( "outbound_federation_restricted_to", None ) self.outbound_federation_restricted_to = OutboundFederationRestrictedTo( outbound_federation_restricted_to ) if outbound_federation_restricted_to: if not self.worker_replication_secret: raise ConfigError( "`worker_replication_secret` must be configured when using `outbound_federation_restricted_to`." ) for instance in outbound_federation_restricted_to: if instance not in self.instance_map: raise ConfigError( "Instance %r is configured in 'outbound_federation_restricted_to' but does not appear in `instance_map` config." % (instance,) ) self.outbound_federation_restricted_to.locations.append( self.instance_map[instance] ) def _should_this_worker_perform_duty( self, config: Dict[str, Any], legacy_master_option_name: str, legacy_worker_app_name: str, new_option_name: str, ) -> bool: """ Figures out whether this worker should perform a certain duty. This function is temporary and is only to deal with the complexity of allowing old, transitional and new configurations all at once. Contradictions between the legacy and new part of a transitional configuration will lead to a ConfigError. Parameters: config: The config dictionary legacy_master_option_name: The name of a legacy option, whose value is boolean, specifying whether it's the master that should handle a certain duty. e.g. "notify_appservices" legacy_worker_app_name: The name of a legacy Synapse worker application that would traditionally perform this duty. e.g. "synapse.app.appservice" new_option_name: The name of the new option, whose value is the name of a designated worker to perform the duty. e.g. "notify_appservices_from_worker" """ # None means 'unspecified'; True means 'run here' and False means # 'don't run here'. new_option_should_run_here = None if new_option_name in config: designated_worker = config[new_option_name] or "master" new_option_should_run_here = ( designated_worker == "master" and self.worker_name is None ) or designated_worker == self.worker_name legacy_option_should_run_here = None if legacy_master_option_name in config: run_on_master = bool(config[legacy_master_option_name]) legacy_option_should_run_here = ( self.worker_name is None and run_on_master ) or (self.worker_app == legacy_worker_app_name and not run_on_master) # Suggest using the new option instead. logger.warning( _DEPRECATED_WORKER_DUTY_OPTION_USED, legacy_master_option_name, new_option_name, ) if self.worker_app == legacy_worker_app_name and config.get( legacy_master_option_name, True ): # As an extra bit of complication, we need to check that the # specialised worker is only used if the legacy config says the # master isn't performing the duties. raise ConfigError( f"Cannot use deprecated worker app type '{legacy_worker_app_name}' whilst deprecated option '{legacy_master_option_name}' is not set to false.\n" f"Consider setting `worker_app: synapse.app.generic_worker` and using the '{new_option_name}' option instead.\n" f"The '{new_option_name}' option replaces '{legacy_master_option_name}'." ) if new_option_should_run_here is None and legacy_option_should_run_here is None: # Neither option specified; the fallback behaviour is to run on the main process return self.worker_name is None if ( new_option_should_run_here is not None and legacy_option_should_run_here is not None ): # Both options specified; ensure they match! if new_option_should_run_here != legacy_option_should_run_here: update_worker_type = ( " and set worker_app: synapse.app.generic_worker" if self.worker_app == legacy_worker_app_name else "" ) # If the values conflict, we suggest the admin removes the legacy option # for simplicity. raise ConfigError( f"Conflicting configuration options: {legacy_master_option_name} (legacy), {new_option_name} (new).\n" f"Suggestion: remove {legacy_master_option_name}{update_worker_type}.\n" ) # We've already validated that these aren't conflicting; now just see if # either is True. # (By this point, these are either the same value or only one is not None.) return bool(new_option_should_run_here or legacy_option_should_run_here) def _worker_names_performing_this_duty( self, config: Dict[str, Any], legacy_option_name: str, legacy_app_name: str, modern_instance_list_name: str, ) -> List[str]: """ Retrieves the names of the workers handling a given duty, by either legacy option or instance list. There are two ways of configuring which instances handle a given duty, e.g. for configuring pushers: 1. The old way where "start_pushers" is set to false and running a `synapse.app.pusher'` worker app. 2. Specifying the workers sending federation in `pusher_instances`. Args: config: settings read from yaml. legacy_option_name: the old way of enabling options. e.g. 'start_pushers' legacy_app_name: The historical app name. e.g. 'synapse.app.pusher' modern_instance_list_name: the string name of the new instance_list. e.g. 'pusher_instances' Returns: A list of worker instance names handling the given duty. """ legacy_option = config.get(legacy_option_name, True) worker_instances = config.get(modern_instance_list_name) if worker_instances is None: # Default to an empty list, which means "another, unknown, worker is # responsible for it". worker_instances = [] # If no worker instances are set we check if the legacy option # is set, which means use the main process. if legacy_option: worker_instances = ["master"] if self.worker_app == legacy_app_name: if legacy_option: # If we're using `legacy_app_name`, and not using # `modern_instance_list_name`, then we should have # explicitly set `legacy_option_name` to false. raise ConfigError( f"The '{legacy_option_name}' config option must be disabled in " "the main synapse process before they can be run in a separate " "worker.\n" f"Please add `{legacy_option_name}: false` to the main config.\n", ) worker_instances = [self.worker_name] return worker_instances def read_arguments(self, args: argparse.Namespace) -> None: # We support a bunch of command line arguments that override options in # the config. A lot of these options have a worker_* prefix when running # on workers so we also have to override them when command line options # are specified. if args.daemonize is not None: self.worker_daemonize = args.daemonize if args.manhole is not None: self.worker_manhole = args.worker_manhole synapse-1.100.0/synapse/crypto/000077500000000000000000000000001455622526000163445ustar00rootroot00000000000000synapse-1.100.0/synapse/crypto/__init__.py000066400000000000000000000013061455622526000204550ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # synapse-1.100.0/synapse/crypto/context_factory.py000066400000000000000000000250271455622526000221370ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from service_identity import VerificationError from service_identity.pyopenssl import verify_hostname, verify_ip_address from zope.interface import implementer from OpenSSL import SSL, crypto from twisted.internet._sslverify import _defaultCurveName from twisted.internet.abstract import isIPAddress, isIPv6Address from twisted.internet.interfaces import IOpenSSLClientConnectionCreator from twisted.internet.ssl import ( CertificateOptions, ContextFactory, TLSVersion, platformTrust, ) from twisted.protocols.tls import TLSMemoryBIOProtocol from twisted.python.failure import Failure from twisted.web.iweb import IPolicyForHTTPS from synapse.config.homeserver import HomeServerConfig logger = logging.getLogger(__name__) _TLS_VERSION_MAP = { "1": TLSVersion.TLSv1_0, "1.1": TLSVersion.TLSv1_1, "1.2": TLSVersion.TLSv1_2, "1.3": TLSVersion.TLSv1_3, } class ServerContextFactory(ContextFactory): """Factory for PyOpenSSL SSL contexts that are used to handle incoming connections. TODO: replace this with an implementation of IOpenSSLServerConnectionCreator, per https://github.com/matrix-org/synapse/issues/1691 """ def __init__(self, config: HomeServerConfig): # TODO: once pyOpenSSL exposes TLS_METHOD and SSL_CTX_set_min_proto_version, # switch to those (see https://github.com/pyca/cryptography/issues/5379). # # note that, despite the confusing name, SSLv23_METHOD does *not* enforce SSLv2 # or v3, but is a synonym for TLS_METHOD, which allows the client and server # to negotiate an appropriate version of TLS constrained by the version options # set with context.set_options. # self._context = SSL.Context(SSL.SSLv23_METHOD) self.configure_context(self._context, config) @staticmethod def configure_context(context: SSL.Context, config: HomeServerConfig) -> None: try: _ecCurve = crypto.get_elliptic_curve(_defaultCurveName) context.set_tmp_ecdh(_ecCurve) except Exception: logger.exception("Failed to enable elliptic curve for TLS") context.set_options( SSL.OP_NO_SSLv2 | SSL.OP_NO_SSLv3 | SSL.OP_NO_TLSv1 | SSL.OP_NO_TLSv1_1 ) context.use_certificate_chain_file(config.tls.tls_certificate_file) assert config.tls.tls_private_key is not None context.use_privatekey(config.tls.tls_private_key) # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ context.set_cipher_list( b"ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES256:ECDH+AES128:!aNULL:!SHA1:!AESCCM" ) def getContext(self) -> SSL.Context: return self._context @implementer(IPolicyForHTTPS) class FederationPolicyForHTTPS: """Factory for Twisted SSLClientConnectionCreators that are used to make connections to remote servers for federation. Uses one of two OpenSSL context objects for all connections, depending on whether we should do SSL certificate verification. get_options decides whether we should do SSL certificate verification and constructs an SSLClientConnectionCreator factory accordingly. """ def __init__(self, config: HomeServerConfig): self._config = config # Check if we're using a custom list of a CA certificates trust_root = config.tls.federation_ca_trust_root if trust_root is None: # Use CA root certs provided by OpenSSL trust_root = platformTrust() # "insecurelyLowerMinimumTo" is the argument that will go lower than # Twisted's default, which is why it is marked as "insecure" (since # Twisted's defaults are reasonably secure). But, since Twisted is # moving to TLS 1.2 by default, we want to respect the config option if # it is set to 1.0 (which the alternate option, raiseMinimumTo, will not # let us do). minTLS = _TLS_VERSION_MAP[config.tls.federation_client_minimum_tls_version] _verify_ssl = CertificateOptions( trustRoot=trust_root, insecurelyLowerMinimumTo=minTLS ) self._verify_ssl_context = _verify_ssl.getContext() self._verify_ssl_context.set_info_callback(_context_info_cb) _no_verify_ssl = CertificateOptions(insecurelyLowerMinimumTo=minTLS) self._no_verify_ssl_context = _no_verify_ssl.getContext() self._no_verify_ssl_context.set_info_callback(_context_info_cb) self._should_verify = self._config.tls.federation_verify_certificates self._federation_certificate_verification_whitelist = ( self._config.tls.federation_certificate_verification_whitelist ) def get_options(self, host: bytes) -> IOpenSSLClientConnectionCreator: # IPolicyForHTTPS.get_options takes bytes, but we want to compare # against the str whitelist. The hostnames in the whitelist are already # IDNA-encoded like the hosts will be here. ascii_host = host.decode("ascii") # Check if certificate verification has been enabled should_verify = self._should_verify # Check if we've disabled certificate verification for this host if self._should_verify: for regex in self._federation_certificate_verification_whitelist: if regex.match(ascii_host): should_verify = False break ssl_context = ( self._verify_ssl_context if should_verify else self._no_verify_ssl_context ) return SSLClientConnectionCreator(host, ssl_context, should_verify) def creatorForNetloc( self, hostname: bytes, port: int ) -> IOpenSSLClientConnectionCreator: """Implements the IPolicyForHTTPS interface so that this can be passed directly to agents. """ return self.get_options(hostname) @implementer(IPolicyForHTTPS) class RegularPolicyForHTTPS: """Factory for Twisted SSLClientConnectionCreators that are used to make connections to remote servers, for other than federation. Always uses the same OpenSSL context object, which uses the default OpenSSL CA trust root. """ def __init__(self) -> None: trust_root = platformTrust() self._ssl_context = CertificateOptions(trustRoot=trust_root).getContext() self._ssl_context.set_info_callback(_context_info_cb) def creatorForNetloc( self, hostname: bytes, port: int ) -> IOpenSSLClientConnectionCreator: return SSLClientConnectionCreator(hostname, self._ssl_context, True) def _context_info_cb(ssl_connection: SSL.Connection, where: int, ret: int) -> None: """The 'information callback' for our openssl context objects. Note: Once this is set as the info callback on a Context object, the Context should only be used with the SSLClientConnectionCreator. """ # we assume that the app_data on the connection object has been set to # a TLSMemoryBIOProtocol object. (This is done by SSLClientConnectionCreator) tls_protocol = ssl_connection.get_app_data() try: # ... we further assume that SSLClientConnectionCreator has set the # '_synapse_tls_verifier' attribute to a ConnectionVerifier object. tls_protocol._synapse_tls_verifier.verify_context_info_cb(ssl_connection, where) except BaseException: # taken from the twisted implementation logger.exception("Error during info_callback") f = Failure() tls_protocol.failVerification(f) @implementer(IOpenSSLClientConnectionCreator) class SSLClientConnectionCreator: """Creates openssl connection objects for client connections. Replaces twisted.internet.ssl.ClientTLSOptions """ def __init__(self, hostname: bytes, ctx: SSL.Context, verify_certs: bool): self._ctx = ctx self._verifier = ConnectionVerifier(hostname, verify_certs) def clientConnectionForTLS( self, tls_protocol: TLSMemoryBIOProtocol ) -> SSL.Connection: context = self._ctx connection = SSL.Connection(context, None) # as per twisted.internet.ssl.ClientTLSOptions, we set the application # data to our TLSMemoryBIOProtocol... connection.set_app_data(tls_protocol) # ... and we also gut-wrench a '_synapse_tls_verifier' attribute into the # tls_protocol so that the SSL context's info callback has something to # call to do the cert verification. tls_protocol._synapse_tls_verifier = self._verifier # type: ignore[attr-defined] return connection class ConnectionVerifier: """Set the SNI, and do cert verification This is a thing which is attached to the TLSMemoryBIOProtocol, and is called by the ssl context's info callback. """ # This code is based on twisted.internet.ssl.ClientTLSOptions. def __init__(self, hostname: bytes, verify_certs: bool): self._verify_certs = verify_certs _decoded = hostname.decode("ascii") if isIPAddress(_decoded) or isIPv6Address(_decoded): self._is_ip_address = True else: self._is_ip_address = False self._hostnameBytes = hostname self._hostnameASCII = self._hostnameBytes.decode("ascii") def verify_context_info_cb( self, ssl_connection: SSL.Connection, where: int ) -> None: if where & SSL.SSL_CB_HANDSHAKE_START and not self._is_ip_address: ssl_connection.set_tlsext_host_name(self._hostnameBytes) if where & SSL.SSL_CB_HANDSHAKE_DONE and self._verify_certs: try: if self._is_ip_address: verify_ip_address(ssl_connection, self._hostnameASCII) else: verify_hostname(ssl_connection, self._hostnameASCII) except VerificationError: f = Failure() tls_protocol = ssl_connection.get_app_data() tls_protocol.failVerification(f) synapse-1.100.0/synapse/crypto/event_signing.py000066400000000000000000000142701455622526000215610ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import collections.abc import hashlib import logging from typing import Any, Callable, Dict, Tuple from canonicaljson import encode_canonical_json from signedjson.sign import sign_json from signedjson.types import SigningKey from unpaddedbase64 import decode_base64, encode_base64 from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import RoomVersion from synapse.events import EventBase from synapse.events.utils import prune_event, prune_event_dict from synapse.logging.opentracing import trace from synapse.types import JsonDict logger = logging.getLogger(__name__) Hasher = Callable[[bytes], "hashlib._Hash"] @trace def check_event_content_hash( event: EventBase, hash_algorithm: Hasher = hashlib.sha256 ) -> bool: """Check whether the hash for this PDU matches the contents""" name, expected_hash = compute_content_hash(event.get_pdu_json(), hash_algorithm) logger.debug( "Verifying content hash on %s (expecting: %s)", event.event_id, encode_base64(expected_hash), ) # some malformed events lack a 'hashes'. Protect against it being missing # or a weird type by basically treating it the same as an unhashed event. hashes = event.get("hashes") # nb it might be a immutabledict or a dict if not isinstance(hashes, collections.abc.Mapping): raise SynapseError( 400, "Malformed 'hashes': %s" % (type(hashes),), Codes.UNAUTHORIZED ) if name not in hashes: raise SynapseError( 400, "Algorithm %s not in hashes %s" % (name, list(hashes)), Codes.UNAUTHORIZED, ) message_hash_base64 = hashes[name] try: message_hash_bytes = decode_base64(message_hash_base64) except Exception: raise SynapseError( 400, "Invalid base64: %s" % (message_hash_base64,), Codes.UNAUTHORIZED ) return message_hash_bytes == expected_hash def compute_content_hash( event_dict: Dict[str, Any], hash_algorithm: Hasher ) -> Tuple[str, bytes]: """Compute the content hash of an event, which is the hash of the unredacted event. Args: event_dict: The unredacted event as a dict hash_algorithm: A hasher from `hashlib`, e.g. hashlib.sha256, to use to hash the event Returns: A tuple of the name of hash and the hash as raw bytes. """ event_dict = dict(event_dict) event_dict.pop("age_ts", None) event_dict.pop("unsigned", None) event_dict.pop("signatures", None) event_dict.pop("hashes", None) event_dict.pop("outlier", None) event_dict.pop("destinations", None) event_json_bytes = encode_canonical_json(event_dict) hashed = hash_algorithm(event_json_bytes) return hashed.name, hashed.digest() def compute_event_reference_hash( event: EventBase, hash_algorithm: Hasher = hashlib.sha256 ) -> Tuple[str, bytes]: """Computes the event reference hash. This is the hash of the redacted event. Args: event hash_algorithm: A hasher from `hashlib`, e.g. hashlib.sha256, to use to hash the event Returns: A tuple of the name of hash and the hash as raw bytes. """ tmp_event = prune_event(event) event_dict = tmp_event.get_pdu_json() event_dict.pop("signatures", None) event_dict.pop("age_ts", None) event_dict.pop("unsigned", None) event_json_bytes = encode_canonical_json(event_dict) hashed = hash_algorithm(event_json_bytes) return hashed.name, hashed.digest() def compute_event_signature( room_version: RoomVersion, event_dict: JsonDict, signature_name: str, signing_key: SigningKey, ) -> Dict[str, Dict[str, str]]: """Compute the signature of the event for the given name and key. Args: room_version: the version of the room that this event is in. (the room version determines the redaction algorithm and hence the json to be signed) event_dict: The event as a dict signature_name: The name of the entity signing the event (typically the server's hostname). signing_key: The key to sign with Returns: a dictionary in the same format of an event's signatures field. """ redact_json = prune_event_dict(room_version, event_dict) redact_json.pop("age_ts", None) redact_json.pop("unsigned", None) if logger.isEnabledFor(logging.DEBUG): logger.debug("Signing event: %s", encode_canonical_json(redact_json)) redact_json = sign_json(redact_json, signature_name, signing_key) if logger.isEnabledFor(logging.DEBUG): logger.debug("Signed event: %s", encode_canonical_json(redact_json)) return redact_json["signatures"] def add_hashes_and_signatures( room_version: RoomVersion, event_dict: JsonDict, signature_name: str, signing_key: SigningKey, ) -> None: """Add content hash and sign the event Args: room_version: the version of the room this event is in event_dict: The event to add hashes to and sign signature_name: The name of the entity signing the event (typically the server's hostname). signing_key: The key to sign with """ name, digest = compute_content_hash(event_dict, hash_algorithm=hashlib.sha256) event_dict.setdefault("hashes", {})[name] = encode_base64(digest) event_dict["signatures"] = compute_event_signature( room_version, event_dict, signature_name=signature_name, signing_key=signing_key ) synapse-1.100.0/synapse/crypto/keyring.py000066400000000000000000001014661455622526000203760ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import logging from typing import TYPE_CHECKING, Callable, Dict, Iterable, List, Optional, Tuple import attr from signedjson.key import ( decode_verify_key_bytes, encode_verify_key_base64, get_verify_key, is_signing_algorithm_supported, ) from signedjson.sign import SignatureVerifyException, signature_ids, verify_signed_json from signedjson.types import VerifyKey from unpaddedbase64 import decode_base64 from twisted.internet import defer from synapse.api.errors import ( Codes, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.config.key import TrustedKeyServer from synapse.events import EventBase from synapse.events.utils import prune_event_dict from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.storage.keys import FetchKeyResult from synapse.types import JsonDict from synapse.util import unwrapFirstError from synapse.util.async_helpers import yieldable_gather_results from synapse.util.batching_queue import BatchingQueue from synapse.util.retryutils import NotRetryingDestination if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, cmp=False, auto_attribs=True) class VerifyJsonRequest: """ A request to verify a JSON object. Attributes: server_name: The name of the server to verify against. get_json_object: A callback to fetch the JSON object to verify. A callback is used to allow deferring the creation of the JSON object to verify until needed, e.g. for events we can defer creating the redacted copy. This reduces the memory usage when there are large numbers of in flight requests. minimum_valid_until_ts: time at which we require the signing key to be valid. (0 implies we don't care) key_ids: The set of key_ids to that could be used to verify the JSON object """ server_name: str get_json_object: Callable[[], JsonDict] minimum_valid_until_ts: int key_ids: List[str] @staticmethod def from_json_object( server_name: str, json_object: JsonDict, minimum_valid_until_ms: int, ) -> "VerifyJsonRequest": """Create a VerifyJsonRequest to verify all signatures on a signed JSON object for the given server. """ key_ids = signature_ids(json_object, server_name) return VerifyJsonRequest( server_name, lambda: json_object, minimum_valid_until_ms, key_ids=key_ids, ) @staticmethod def from_event( server_name: str, event: EventBase, minimum_valid_until_ms: int, ) -> "VerifyJsonRequest": """Create a VerifyJsonRequest to verify all signatures on an event object for the given server. """ key_ids = list(event.signatures.get(server_name, [])) return VerifyJsonRequest( server_name, # We defer creating the redacted json object, as it uses a lot more # memory than the Event object itself. lambda: prune_event_dict(event.room_version, event.get_pdu_json()), minimum_valid_until_ms, key_ids=key_ids, ) class KeyLookupError(ValueError): pass @attr.s(slots=True, frozen=True, auto_attribs=True) class _FetchKeyRequest: """A request for keys for a given server. We will continue to try and fetch until we have all the keys listed under `key_ids` (with an appropriate `valid_until_ts` property) or we run out of places to fetch keys from. Attributes: server_name: The name of the server that owns the keys. minimum_valid_until_ts: The timestamp which the keys must be valid until. key_ids: The IDs of the keys to attempt to fetch """ server_name: str minimum_valid_until_ts: int key_ids: List[str] class Keyring: """Handles verifying signed JSON objects and fetching the keys needed to do so. """ def __init__( self, hs: "HomeServer", key_fetchers: "Optional[Iterable[KeyFetcher]]" = None ): if key_fetchers is None: # Always fetch keys from the database. mutable_key_fetchers: List[KeyFetcher] = [StoreKeyFetcher(hs)] # Fetch keys from configured trusted key servers, if any exist. key_servers = hs.config.key.key_servers if key_servers: mutable_key_fetchers.append(PerspectivesKeyFetcher(hs)) # Finally, fetch keys from the origin server directly. mutable_key_fetchers.append(ServerKeyFetcher(hs)) self._key_fetchers: Iterable[KeyFetcher] = tuple(mutable_key_fetchers) else: self._key_fetchers = key_fetchers self._fetch_keys_queue: BatchingQueue[ _FetchKeyRequest, Dict[str, Dict[str, FetchKeyResult]] ] = BatchingQueue( "keyring_server", clock=hs.get_clock(), # The method called to fetch each key process_batch_callback=self._inner_fetch_key_requests, ) self._is_mine_server_name = hs.is_mine_server_name # build a FetchKeyResult for each of our own keys, to shortcircuit the # fetcher. self._local_verify_keys: Dict[str, FetchKeyResult] = {} for key_id, key in hs.config.key.old_signing_keys.items(): self._local_verify_keys[key_id] = FetchKeyResult( verify_key=key, valid_until_ts=key.expired ) vk = get_verify_key(hs.signing_key) self._local_verify_keys[f"{vk.alg}:{vk.version}"] = FetchKeyResult( verify_key=vk, valid_until_ts=2**63, # fake future timestamp ) async def verify_json_for_server( self, server_name: str, json_object: JsonDict, validity_time: int, ) -> None: """Verify that a JSON object has been signed by a given server Completes if the the object was correctly signed, otherwise raises. Args: server_name: name of the server which must have signed this object json_object: object to be checked validity_time: timestamp at which we require the signing key to be valid. (0 implies we don't care) """ request = VerifyJsonRequest.from_json_object( server_name, json_object, validity_time, ) return await self.process_request(request) def verify_json_objects_for_server( self, server_and_json: Iterable[Tuple[str, dict, int]] ) -> List["defer.Deferred[None]"]: """Bulk verifies signatures of json objects, bulk fetching keys as necessary. Args: server_and_json: Iterable of (server_name, json_object, validity_time) tuples. validity_time is a timestamp at which the signing key must be valid. Returns: For each input triplet, a deferred indicating success or failure to verify each json object's signature for the given server_name. The deferreds run their callbacks in the sentinel logcontext. """ return [ run_in_background( self.process_request, VerifyJsonRequest.from_json_object( server_name, json_object, validity_time, ), ) for server_name, json_object, validity_time in server_and_json ] async def verify_event_for_server( self, server_name: str, event: EventBase, validity_time: int, ) -> None: await self.process_request( VerifyJsonRequest.from_event( server_name, event, validity_time, ) ) async def process_request(self, verify_request: VerifyJsonRequest) -> None: """Processes the `VerifyJsonRequest`. Raises if the object is not signed by the server, the signatures don't match or we failed to fetch the necessary keys. """ if not verify_request.key_ids: raise SynapseError( 400, f"Not signed by {verify_request.server_name}", Codes.UNAUTHORIZED, ) found_keys: Dict[str, FetchKeyResult] = {} # If we are the originating server, short-circuit the key-fetch for any keys # we already have if self._is_mine_server_name(verify_request.server_name): for key_id in verify_request.key_ids: if key_id in self._local_verify_keys: found_keys[key_id] = self._local_verify_keys[key_id] key_ids_to_find = set(verify_request.key_ids) - found_keys.keys() if key_ids_to_find: # Add the keys we need to verify to the queue for retrieval. We queue # up requests for the same server so we don't end up with many in flight # requests for the same keys. key_request = _FetchKeyRequest( server_name=verify_request.server_name, minimum_valid_until_ts=verify_request.minimum_valid_until_ts, key_ids=list(key_ids_to_find), ) found_keys_by_server = await self._fetch_keys_queue.add_to_queue( key_request, key=verify_request.server_name ) # Since we batch up requests the returned set of keys may contain keys # from other servers, so we pull out only the ones we care about. found_keys.update(found_keys_by_server.get(verify_request.server_name, {})) # Verify each signature we got valid keys for, raising if we can't # verify any of them. verified = False for key_id in verify_request.key_ids: key_result = found_keys.get(key_id) if not key_result: continue if key_result.valid_until_ts < verify_request.minimum_valid_until_ts: continue await self._process_json(key_result.verify_key, verify_request) verified = True if not verified: raise SynapseError( 401, f"Failed to find any key to satisfy: {key_request}", Codes.UNAUTHORIZED, ) async def _process_json( self, verify_key: VerifyKey, verify_request: VerifyJsonRequest ) -> None: """Processes the `VerifyJsonRequest`. Raises if the signature can't be verified. """ try: verify_signed_json( verify_request.get_json_object(), verify_request.server_name, verify_key, ) except SignatureVerifyException as e: logger.debug( "Error verifying signature for %s:%s:%s with key %s: %s", verify_request.server_name, verify_key.alg, verify_key.version, encode_verify_key_base64(verify_key), str(e), ) raise SynapseError( 401, "Invalid signature for server %s with key %s:%s: %s" % ( verify_request.server_name, verify_key.alg, verify_key.version, str(e), ), Codes.UNAUTHORIZED, ) async def _inner_fetch_key_requests( self, requests: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: """Processing function for the queue of `_FetchKeyRequest`. Takes a list of key fetch requests, de-duplicates them and then carries out each request by invoking self._inner_fetch_key_request. Args: requests: A list of requests for homeserver verify keys. Returns: {server name: {key id: fetch key result}} """ logger.debug("Starting fetch for %s", requests) # First we need to deduplicate requests for the same key. We do this by # taking the *maximum* requested `minimum_valid_until_ts` for each pair # of server name/key ID. server_to_key_to_ts: Dict[str, Dict[str, int]] = {} for request in requests: by_server = server_to_key_to_ts.setdefault(request.server_name, {}) for key_id in request.key_ids: existing_ts = by_server.get(key_id, 0) by_server[key_id] = max(request.minimum_valid_until_ts, existing_ts) deduped_requests = [ _FetchKeyRequest(server_name, minimum_valid_ts, [key_id]) for server_name, by_server in server_to_key_to_ts.items() for key_id, minimum_valid_ts in by_server.items() ] logger.debug("Deduplicated key requests to %s", deduped_requests) # For each key we call `_inner_verify_request` which will handle # fetching each key. Note these shouldn't throw if we fail to contact # other servers etc. results_per_request = await yieldable_gather_results( self._inner_fetch_key_request, deduped_requests, ) # We now convert the returned list of results into a map from server # name to key ID to FetchKeyResult, to return. to_return: Dict[str, Dict[str, FetchKeyResult]] = {} for request, results in zip(deduped_requests, results_per_request): to_return_by_server = to_return.setdefault(request.server_name, {}) for key_id, key_result in results.items(): existing = to_return_by_server.get(key_id) if not existing or existing.valid_until_ts < key_result.valid_until_ts: to_return_by_server[key_id] = key_result return to_return async def _inner_fetch_key_request( self, verify_request: _FetchKeyRequest ) -> Dict[str, FetchKeyResult]: """Attempt to fetch the given key by calling each key fetcher one by one. If a key is found, check whether its `valid_until_ts` attribute satisfies the `minimum_valid_until_ts` attribute of the `verify_request`. If it does, we refrain from asking subsequent fetchers for that key. Even if the above check fails, we still return the found key - the caller may still find the invalid key result useful. In this case, we continue to ask subsequent fetchers for the invalid key, in case they return a valid result for it. This can happen when fetching a stale key result from the database, before querying the origin server for an up-to-date result. Args: verify_request: The request for a verify key. Can include multiple key IDs. Returns: A map of {key_id: the key fetch result}. """ logger.debug("Starting fetch for %s", verify_request) found_keys: Dict[str, FetchKeyResult] = {} missing_key_ids = set(verify_request.key_ids) for fetcher in self._key_fetchers: if not missing_key_ids: break logger.debug("Getting keys from %s for %s", fetcher, verify_request) keys = await fetcher.get_keys( verify_request.server_name, list(missing_key_ids), verify_request.minimum_valid_until_ts, ) for key_id, key in keys.items(): if not key: continue # If we already have a result for the given key ID, we keep the # one with the highest `valid_until_ts`. existing_key = found_keys.get(key_id) if existing_key and existing_key.valid_until_ts > key.valid_until_ts: continue # Check if this key's expiry timestamp is valid for the verify request. if key.valid_until_ts >= verify_request.minimum_valid_until_ts: # Stop looking for this key from subsequent fetchers. missing_key_ids.discard(key_id) # We always store the returned key even if it doesn't meet the # `minimum_valid_until_ts` requirement, as some verification # requests may still be able to be satisfied by it. found_keys[key_id] = key return found_keys class KeyFetcher(metaclass=abc.ABCMeta): def __init__(self, hs: "HomeServer"): self._queue = BatchingQueue( self.__class__.__name__, hs.get_clock(), self._fetch_keys ) async def get_keys( self, server_name: str, key_ids: List[str], minimum_valid_until_ts: int ) -> Dict[str, FetchKeyResult]: results = await self._queue.add_to_queue( _FetchKeyRequest( server_name=server_name, key_ids=key_ids, minimum_valid_until_ts=minimum_valid_until_ts, ) ) return results.get(server_name, {}) @abc.abstractmethod async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: pass class StoreKeyFetcher(KeyFetcher): """KeyFetcher impl which fetches keys from our data store""" def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastores().main async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: key_ids_to_fetch = ( (queue_value.server_name, key_id) for queue_value in keys_to_fetch for key_id in queue_value.key_ids ) res = await self.store.get_server_keys_json(key_ids_to_fetch) keys: Dict[str, Dict[str, FetchKeyResult]] = {} for (server_name, key_id), key in res.items(): keys.setdefault(server_name, {})[key_id] = key return keys class BaseV2KeyFetcher(KeyFetcher): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastores().main async def process_v2_response( self, from_server: str, response_json: JsonDict, time_added_ms: int ) -> Dict[str, FetchKeyResult]: """Parse a 'Server Keys' structure from the result of a /key request This is used to parse either the entirety of the response from GET /_matrix/key/v2/server, or a single entry from the list returned by POST /_matrix/key/v2/query. Checks that each signature in the response that claims to come from the origin server is valid, and that there is at least one such signature. Stores the json in server_keys_json so that it can be used for future responses to /_matrix/key/v2/query. Args: from_server: the name of the server producing this result: either the origin server for a /_matrix/key/v2/server request, or the notary for a /_matrix/key/v2/query. response_json: the json-decoded Server Keys response object time_added_ms: the timestamp to record in server_keys_json Returns: Map from key_id to result object """ ts_valid_until_ms = response_json["valid_until_ts"] # start by extracting the keys from the response, since they may be required # to validate the signature on the response. verify_keys = {} for key_id, key_data in response_json["verify_keys"].items(): if is_signing_algorithm_supported(key_id): key_base64 = key_data["key"] key_bytes = decode_base64(key_base64) verify_key = decode_verify_key_bytes(key_id, key_bytes) verify_keys[key_id] = FetchKeyResult( verify_key=verify_key, valid_until_ts=ts_valid_until_ms ) server_name = response_json["server_name"] verified = False for key_id in response_json["signatures"].get(server_name, {}): key = verify_keys.get(key_id) if not key: # the key may not be present in verify_keys if: # * we got the key from the notary server, and: # * the key belongs to the notary server, and: # * the notary server is using a different key to sign notary # responses. continue verify_signed_json(response_json, server_name, key.verify_key) verified = True break if not verified: raise KeyLookupError( "Key response for %s is not signed by the origin server" % (server_name,) ) for key_id, key_data in response_json["old_verify_keys"].items(): if is_signing_algorithm_supported(key_id): key_base64 = key_data["key"] key_bytes = decode_base64(key_base64) verify_key = decode_verify_key_bytes(key_id, key_bytes) verify_keys[key_id] = FetchKeyResult( verify_key=verify_key, valid_until_ts=key_data["expired_ts"] ) await self.store.store_server_keys_response( server_name=server_name, from_server=from_server, ts_added_ms=time_added_ms, verify_keys=verify_keys, response_json=response_json, ) return verify_keys class PerspectivesKeyFetcher(BaseV2KeyFetcher): """KeyFetcher impl which fetches keys from the "perspectives" servers""" def __init__(self, hs: "HomeServer"): super().__init__(hs) self.clock = hs.get_clock() self.client = hs.get_federation_http_client() self.key_servers = hs.config.key.key_servers async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: """see KeyFetcher._fetch_keys""" async def get_key(key_server: TrustedKeyServer) -> Dict: try: return await self.get_server_verify_key_v2_indirect( keys_to_fetch, key_server ) except KeyLookupError as e: logger.warning( "Key lookup failed from %r: %s", key_server.server_name, e ) except Exception as e: logger.exception( "Unable to get key from %r: %s %s", key_server.server_name, type(e).__name__, str(e), ) return {} results = await make_deferred_yieldable( defer.gatherResults( [run_in_background(get_key, server) for server in self.key_servers], consumeErrors=True, ).addErrback(unwrapFirstError) ) union_of_keys: Dict[str, Dict[str, FetchKeyResult]] = {} for result in results: for server_name, keys in result.items(): union_of_keys.setdefault(server_name, {}).update(keys) return union_of_keys async def get_server_verify_key_v2_indirect( self, keys_to_fetch: List[_FetchKeyRequest], key_server: TrustedKeyServer ) -> Dict[str, Dict[str, FetchKeyResult]]: """ Args: keys_to_fetch: the keys to be fetched. key_server: notary server to query for the keys Returns: Map from server_name -> key_id -> FetchKeyResult Raises: KeyLookupError if there was an error processing the entire response from the server """ perspective_name = key_server.server_name logger.info( "Requesting keys %s from notary server %s", keys_to_fetch, perspective_name, ) request: JsonDict = {} for queue_value in keys_to_fetch: # there may be multiple requests for each server, so we have to merge # them intelligently. request_for_server = { key_id: { "minimum_valid_until_ts": queue_value.minimum_valid_until_ts, } for key_id in queue_value.key_ids } request.setdefault(queue_value.server_name, {}).update(request_for_server) logger.debug("Request to notary server %s: %s", perspective_name, request) try: query_response = await self.client.post_json( destination=perspective_name, path="/_matrix/key/v2/query", data={"server_keys": request}, ) except (NotRetryingDestination, RequestSendFailed) as e: # these both have str() representations which we can't really improve upon raise KeyLookupError(str(e)) except HttpResponseException as e: raise KeyLookupError("Remote server returned an error: %s" % (e,)) logger.debug( "Response from notary server %s: %s", perspective_name, query_response ) keys: Dict[str, Dict[str, FetchKeyResult]] = {} added_keys: Dict[Tuple[str, str], FetchKeyResult] = {} time_now_ms = self.clock.time_msec() assert isinstance(query_response, dict) for response in query_response["server_keys"]: # do this first, so that we can give useful errors thereafter server_name = response.get("server_name") if not isinstance(server_name, str): raise KeyLookupError( "Malformed response from key notary server %s: invalid server_name" % (perspective_name,) ) try: self._validate_perspectives_response(key_server, response) processed_response = await self.process_v2_response( perspective_name, response, time_added_ms=time_now_ms ) except KeyLookupError as e: logger.warning( "Error processing response from key notary server %s for origin " "server %s: %s", perspective_name, server_name, e, ) # we continue to process the rest of the response continue for key_id, key in processed_response.items(): dict_key = (server_name, key_id) if dict_key in added_keys: already_present_key = added_keys[dict_key] logger.warning( "Duplicate server keys for %s (%s) from perspective %s (%r, %r)", server_name, key_id, perspective_name, already_present_key, key, ) if already_present_key.valid_until_ts > key.valid_until_ts: # Favour the entry with the largest valid_until_ts, # as `old_verify_keys` are also collected from this # response. continue added_keys[dict_key] = key keys.setdefault(server_name, {}).update(processed_response) return keys def _validate_perspectives_response( self, key_server: TrustedKeyServer, response: JsonDict ) -> None: """Optionally check the signature on the result of a /key/query request Args: key_server: the notary server that produced this result response: the json-decoded Server Keys response object """ perspective_name = key_server.server_name perspective_keys = key_server.verify_keys if perspective_keys is None: # signature checking is disabled on this server return if ( "signatures" not in response or perspective_name not in response["signatures"] ): raise KeyLookupError("Response not signed by the notary server") verified = False for key_id in response["signatures"][perspective_name]: if key_id in perspective_keys: verify_signed_json(response, perspective_name, perspective_keys[key_id]) verified = True if not verified: raise KeyLookupError( "Response not signed with a known key: signed with: %r, known keys: %r" % ( list(response["signatures"][perspective_name].keys()), list(perspective_keys.keys()), ) ) class ServerKeyFetcher(BaseV2KeyFetcher): """KeyFetcher impl which fetches keys from the origin servers""" def __init__(self, hs: "HomeServer"): super().__init__(hs) self.clock = hs.get_clock() self.client = hs.get_federation_http_client() async def get_keys( self, server_name: str, key_ids: List[str], minimum_valid_until_ts: int ) -> Dict[str, FetchKeyResult]: results = await self._queue.add_to_queue( _FetchKeyRequest( server_name=server_name, key_ids=key_ids, minimum_valid_until_ts=minimum_valid_until_ts, ), key=server_name, ) return results.get(server_name, {}) async def _fetch_keys( self, keys_to_fetch: List[_FetchKeyRequest] ) -> Dict[str, Dict[str, FetchKeyResult]]: """ Args: keys_to_fetch: the keys to be fetched. server_name -> key_ids Returns: Map from server_name -> key_id -> FetchKeyResult """ results = {} async def get_keys(key_to_fetch_item: _FetchKeyRequest) -> None: server_name = key_to_fetch_item.server_name try: keys = await self.get_server_verify_keys_v2_direct(server_name) results[server_name] = keys except KeyLookupError as e: logger.warning("Error looking up keys from %s: %s", server_name, e) except Exception: logger.exception("Error getting keys from %s", server_name) await yieldable_gather_results(get_keys, keys_to_fetch) return results async def get_server_verify_keys_v2_direct( self, server_name: str ) -> Dict[str, FetchKeyResult]: """ Args: server_name: Server to request keys from Returns: Map from key ID to lookup result Raises: KeyLookupError if there was a problem making the lookup """ time_now_ms = self.clock.time_msec() try: response = await self.client.get_json( destination=server_name, path="/_matrix/key/v2/server", ignore_backoff=True, # we only give the remote server 10s to respond. It should be an # easy request to handle, so if it doesn't reply within 10s, it's # probably not going to. # # Furthermore, when we are acting as a notary server, we cannot # wait all day for all of the origin servers, as the requesting # server will otherwise time out before we can respond. # # (Note that get_json may make 4 attempts, so this can still take # almost 45 seconds to fetch the headers, plus up to another 60s to # read the response). timeout=10000, ) except (NotRetryingDestination, RequestSendFailed) as e: # these both have str() representations which we can't really improve # upon raise KeyLookupError(str(e)) except HttpResponseException as e: raise KeyLookupError("Remote server returned an error: %s" % (e,)) assert isinstance(response, dict) if response["server_name"] != server_name: raise KeyLookupError( "Expected a response for server %r not %r" % (server_name, response["server_name"]) ) return await self.process_v2_response( from_server=server_name, response_json=response, time_added_ms=time_now_ms, ) synapse-1.100.0/synapse/event_auth.py000066400000000000000000001207741455622526000175530ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2014 - 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import collections.abc import logging import typing from typing import Any, Dict, Iterable, List, Mapping, Optional, Set, Tuple, Union from canonicaljson import encode_canonical_json from signedjson.key import decode_verify_key_bytes from signedjson.sign import SignatureVerifyException, verify_signed_json from typing_extensions import Protocol from unpaddedbase64 import decode_base64 from synapse.api.constants import ( MAX_PDU_SIZE, EventContentFields, EventTypes, JoinRules, Membership, ) from synapse.api.errors import ( AuthError, Codes, EventSizeError, SynapseError, UnstableSpecAuthError, ) from synapse.api.room_versions import ( KNOWN_ROOM_VERSIONS, EventFormatVersions, RoomVersion, RoomVersions, ) from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.types import ( MutableStateMap, StateMap, StrCollection, UserID, get_domain_from_id, ) if typing.TYPE_CHECKING: # conditional imports to avoid import cycle from synapse.events import EventBase from synapse.events.builder import EventBuilder logger = logging.getLogger(__name__) class _EventSourceStore(Protocol): async def get_events( self, event_ids: StrCollection, redact_behaviour: EventRedactBehaviour, get_prev_content: bool = False, allow_rejected: bool = False, ) -> Dict[str, "EventBase"]: ... def validate_event_for_room_version(event: "EventBase") -> None: """Ensure that the event complies with the limits, and has the right signatures NB: does not *validate* the signatures - it assumes that any signatures present have already been checked. NB: it does not check that the event satisfies the auth rules (that is done in check_auth_rules_for_event) - these tests are independent of the rest of the state in the room. NB: This is used to check events that have been received over federation. As such, it can only enforce the checks specified in the relevant room version, to avoid a split-brain situation where some servers accept such events, and others reject them. See also EventValidator, which contains extra checks which are applied only to locally-generated events. Args: event: the event to be checked Raises: SynapseError if there is a problem with the event """ _check_size_limits(event) if not hasattr(event, "room_id"): raise AuthError(500, "Event has no room_id: %s" % event) # check that the event has the correct signatures sender_domain = get_domain_from_id(event.sender) is_invite_via_3pid = ( event.type == EventTypes.Member and event.membership == Membership.INVITE and "third_party_invite" in event.content ) # Check the sender's domain has signed the event if not event.signatures.get(sender_domain): # We allow invites via 3pid to have a sender from a different # HS, as the sender must match the sender of the original # 3pid invite. This is checked further down with the # other dedicated membership checks. if not is_invite_via_3pid: raise AuthError(403, "Event not signed by sender's server") if event.format_version in (EventFormatVersions.ROOM_V1_V2,): # Only older room versions have event IDs to check. event_id_domain = get_domain_from_id(event.event_id) # Check the origin domain has signed the event if not event.signatures.get(event_id_domain): raise AuthError(403, "Event not signed by sending server") is_invite_via_allow_rule = ( event.room_version.restricted_join_rule and event.type == EventTypes.Member and event.membership == Membership.JOIN and EventContentFields.AUTHORISING_USER in event.content ) if is_invite_via_allow_rule: authoriser_domain = get_domain_from_id( event.content[EventContentFields.AUTHORISING_USER] ) if not event.signatures.get(authoriser_domain): raise AuthError(403, "Event not signed by authorising server") async def check_state_independent_auth_rules( store: _EventSourceStore, event: "EventBase", batched_auth_events: Optional[Mapping[str, "EventBase"]] = None, ) -> None: """Check that an event complies with auth rules that are independent of room state Runs through the first few auth rules, which are independent of room state. (Which means that we only need to them once for each received event) Args: store: the datastore; used to fetch the auth events for validation event: the event being checked. batched_auth_events: if the event being authed is part of a batch, any events from the same batch that may be necessary to auth the current event Raises: AuthError if the checks fail """ # Implementation of https://spec.matrix.org/v1.2/rooms/v9/#authorization-rules # 1. If type is m.room.create: if event.type == EventTypes.Create: _check_create(event) # 1.5 Otherwise, allow return # 2. Reject if event has auth_events that: ... if batched_auth_events: # Copy the batched auth events to avoid mutating them. auth_events = dict(batched_auth_events) needed_auth_event_ids = set(event.auth_event_ids()) - batched_auth_events.keys() if needed_auth_event_ids: auth_events.update( await store.get_events( needed_auth_event_ids, redact_behaviour=EventRedactBehaviour.as_is, allow_rejected=True, ) ) else: auth_events = await store.get_events( event.auth_event_ids(), redact_behaviour=EventRedactBehaviour.as_is, allow_rejected=True, ) room_id = event.room_id auth_dict: MutableStateMap[str] = {} expected_auth_types = auth_types_for_event(event.room_version, event) for auth_event_id in event.auth_event_ids(): auth_event = auth_events.get(auth_event_id) # we should have all the auth events by now, so if we do not, that suggests # a synapse programming error if auth_event is None: raise RuntimeError( f"Event {event.event_id} has unknown auth event {auth_event_id}" ) # We need to ensure that the auth events are actually for the same room, to # stop people from using powers they've been granted in other rooms for # example. if auth_event.room_id != room_id: raise AuthError( 403, "During auth for event %s in room %s, found event %s in the state " "which is in room %s" % (event.event_id, room_id, auth_event_id, auth_event.room_id), ) k = (auth_event.type, auth_event.state_key) # 2.1 ... have duplicate entries for a given type and state_key pair if k in auth_dict: raise AuthError( 403, f"Event {event.event_id} has duplicate auth_events for {k}: {auth_dict[k]} and {auth_event_id}", ) # 2.2 ... have entries whose type and state_key don’t match those specified by # the auth events selection algorithm described in the server # specification. if k not in expected_auth_types: raise AuthError( 403, f"Event {event.event_id} has unexpected auth_event for {k}: {auth_event_id}", ) # We also need to check that the auth event itself is not rejected. if auth_event.rejected_reason: raise AuthError( 403, "During auth for event %s: found rejected event %s in the state" % (event.event_id, auth_event.event_id), ) auth_dict[k] = auth_event_id # 3. If event does not have a m.room.create in its auth_events, reject. creation_event = auth_dict.get((EventTypes.Create, ""), None) if not creation_event: raise AuthError(403, "No create event in auth events") def check_state_dependent_auth_rules( event: "EventBase", auth_events: Iterable["EventBase"], ) -> None: """Check that an event complies with auth rules that depend on room state Runs through the parts of the auth rules that check an event against bits of room state. Note: - it's fine for use in state resolution, when we have already decided whether to accept the event or not, and are now trying to decide whether it should make it into the room state - when we're doing the initial event auth, it is only suitable in combination with a bunch of other tests (including, but not limited to, check_state_independent_auth_rules). Args: event: the event being checked. auth_events: the room state to check the events against. Raises: AuthError if the checks fail """ # there are no state-dependent auth rules for create events. if event.type == EventTypes.Create: logger.debug("Allowing! %s", event) return auth_dict = {(e.type, e.state_key): e for e in auth_events} # additional check for m.federate creating_domain = get_domain_from_id(event.room_id) originating_domain = get_domain_from_id(event.sender) if creating_domain != originating_domain: if not _can_federate(event, auth_dict): raise AuthError(403, "This room has been marked as unfederatable.") # 4. If type is m.room.aliases if ( event.type == EventTypes.Aliases and event.room_version.special_case_aliases_auth ): # 4a. If event has no state_key, reject if not event.is_state(): raise AuthError(403, "Alias event must be a state event") if not event.state_key: raise AuthError(403, "Alias event must have non-empty state_key") # 4b. If sender's domain doesn't matches [sic] state_key, reject sender_domain = get_domain_from_id(event.sender) if event.state_key != sender_domain: raise AuthError( 403, "Alias event's state_key does not match sender's domain" ) # 4c. Otherwise, allow. logger.debug("Allowing! %s", event) return # 5. If type is m.room.membership if event.type == EventTypes.Member: _is_membership_change_allowed(event.room_version, event, auth_dict) logger.debug("Allowing! %s", event) return _check_event_sender_in_room(event, auth_dict) # Special case to allow m.room.third_party_invite events wherever # a user is allowed to issue invites. Fixes # https://github.com/vector-im/vector-web/issues/1208 hopefully if event.type == EventTypes.ThirdPartyInvite: user_level = get_user_power_level(event.user_id, auth_dict) invite_level = get_named_level(auth_dict, "invite", 0) if user_level < invite_level: raise UnstableSpecAuthError( 403, "You don't have permission to invite users", errcode=Codes.INSUFFICIENT_POWER, ) else: logger.debug("Allowing! %s", event) return _can_send_event(event, auth_dict) if event.type == EventTypes.PowerLevels: _check_power_levels(event.room_version, event, auth_dict) if event.type == EventTypes.Redaction: check_redaction(event.room_version, event, auth_dict) logger.debug("Allowing! %s", event) # Set of room versions where Synapse did not apply event key size limits # in bytes, but rather in codepoints. # In these room versions, we are more lenient with event size validation. LENIENT_EVENT_BYTE_LIMITS_ROOM_VERSIONS = { RoomVersions.V1, RoomVersions.V2, RoomVersions.V3, RoomVersions.V4, RoomVersions.V5, RoomVersions.V6, RoomVersions.V7, RoomVersions.V8, RoomVersions.V9, RoomVersions.V10, RoomVersions.MSC1767v10, } def _check_size_limits(event: "EventBase") -> None: """ Checks the size limits in a PDU. The entire size limit of the PDU is checked first. Then the size of fields is checked, first in codepoints and then in bytes. The codepoint size limits are only for Synapse compatibility. Raises: EventSizeError: when a size limit has been violated. unpersistable=True if Synapse never would have accepted the event and the PDU must NOT be persisted. unpersistable=False if a prior version of Synapse would have accepted the event and so the PDU must be persisted as rejected to avoid breaking the room. """ # Whole PDU check if len(encode_canonical_json(event.get_pdu_json())) > MAX_PDU_SIZE: raise EventSizeError("event too large", unpersistable=True) # Codepoint size check: Synapse always enforced these limits, so apply # them strictly. if len(event.user_id) > 255: raise EventSizeError("'user_id' too large", unpersistable=True) if len(event.room_id) > 255: raise EventSizeError("'room_id' too large", unpersistable=True) if event.is_state() and len(event.state_key) > 255: raise EventSizeError("'state_key' too large", unpersistable=True) if len(event.type) > 255: raise EventSizeError("'type' too large", unpersistable=True) if len(event.event_id) > 255: raise EventSizeError("'event_id' too large", unpersistable=True) strict_byte_limits = ( event.room_version not in LENIENT_EVENT_BYTE_LIMITS_ROOM_VERSIONS ) # Byte size check: if these fail, then be lenient to avoid breaking rooms. if len(event.user_id.encode("utf-8")) > 255: raise EventSizeError("'user_id' too large", unpersistable=strict_byte_limits) if len(event.room_id.encode("utf-8")) > 255: raise EventSizeError("'room_id' too large", unpersistable=strict_byte_limits) if event.is_state() and len(event.state_key.encode("utf-8")) > 255: raise EventSizeError("'state_key' too large", unpersistable=strict_byte_limits) if len(event.type.encode("utf-8")) > 255: raise EventSizeError("'type' too large", unpersistable=strict_byte_limits) if len(event.event_id.encode("utf-8")) > 255: raise EventSizeError("'event_id' too large", unpersistable=strict_byte_limits) def _check_create(event: "EventBase") -> None: """Implementation of the auth rules for m.room.create events Args: event: The `m.room.create` event to be checked Raises: AuthError if the event does not pass the auth rules """ assert event.type == EventTypes.Create # 1.1 If it has any previous events, reject. if event.prev_event_ids(): raise AuthError(403, "Create event has prev events") # 1.2 If the domain of the room_id does not match the domain of the sender, # reject. sender_domain = get_domain_from_id(event.sender) room_id_domain = get_domain_from_id(event.room_id) if room_id_domain != sender_domain: raise AuthError(403, "Creation event's room_id domain does not match sender's") # 1.3 If content.room_version is present and is not a recognised version, reject room_version_prop = event.content.get("room_version", "1") if room_version_prop not in KNOWN_ROOM_VERSIONS: raise AuthError( 403, "room appears to have unsupported version %s" % (room_version_prop,), ) # 1.4 If content has no creator field, reject if the room version requires it. if ( not event.room_version.implicit_room_creator and EventContentFields.ROOM_CREATOR not in event.content ): raise AuthError(403, "Create event lacks a 'creator' property") def _can_federate(event: "EventBase", auth_events: StateMap["EventBase"]) -> bool: creation_event = auth_events.get((EventTypes.Create, "")) # There should always be a creation event, but if not don't federate. if not creation_event: return False return creation_event.content.get(EventContentFields.FEDERATE, True) is True def _is_membership_change_allowed( room_version: RoomVersion, event: "EventBase", auth_events: StateMap["EventBase"] ) -> None: """ Confirms that the event which changes membership is an allowed change. Args: room_version: The version of the room. event: The event to check. auth_events: The current auth events of the room. Raises: AuthError if the event is not allowed. """ membership = event.content["membership"] # Check if this is the room creator joining: if len(event.prev_event_ids()) == 1 and Membership.JOIN == membership: # Get room creation event: key = (EventTypes.Create, "") create = auth_events.get(key) if create and event.prev_event_ids()[0] == create.event_id: if room_version.implicit_room_creator: creator = create.sender else: creator = create.content[EventContentFields.ROOM_CREATOR] if creator == event.state_key: return target_user_id = event.state_key creating_domain = get_domain_from_id(event.room_id) target_domain = get_domain_from_id(target_user_id) if creating_domain != target_domain: if not _can_federate(event, auth_events): raise AuthError(403, "This room has been marked as unfederatable.") # get info about the caller key = (EventTypes.Member, event.user_id) caller = auth_events.get(key) caller_in_room = caller and caller.membership == Membership.JOIN caller_invited = caller and caller.membership == Membership.INVITE caller_knocked = ( caller and room_version.knock_join_rule and caller.membership == Membership.KNOCK ) # get info about the target key = (EventTypes.Member, target_user_id) target = auth_events.get(key) target_in_room = target and target.membership == Membership.JOIN target_banned = target and target.membership == Membership.BAN key = (EventTypes.JoinRules, "") join_rule_event = auth_events.get(key) if join_rule_event: join_rule = join_rule_event.content.get("join_rule", JoinRules.INVITE) else: join_rule = JoinRules.INVITE user_level = get_user_power_level(event.user_id, auth_events) target_level = get_user_power_level(target_user_id, auth_events) invite_level = get_named_level(auth_events, "invite", 0) ban_level = get_named_level(auth_events, "ban", 50) logger.debug( "_is_membership_change_allowed: %s", { "caller_in_room": caller_in_room, "caller_invited": caller_invited, "caller_knocked": caller_knocked, "target_banned": target_banned, "target_in_room": target_in_room, "membership": membership, "join_rule": join_rule, "target_user_id": target_user_id, "event.user_id": event.user_id, }, ) if Membership.INVITE == membership and "third_party_invite" in event.content: if not _verify_third_party_invite(event, auth_events): raise AuthError(403, "You are not invited to this room.") if target_banned: raise AuthError(403, "%s is banned from the room" % (target_user_id,)) return # Require the user to be in the room for membership changes other than join/knock. # Note that the room version check for knocking is done implicitly by `caller_knocked` # and the ability to set a membership of `knock` in the first place. if Membership.JOIN != membership and Membership.KNOCK != membership: # If the user has been invited or has knocked, they are allowed to change their # membership event to leave if ( (caller_invited or caller_knocked) and Membership.LEAVE == membership and target_user_id == event.user_id ): return if not caller_in_room: # caller isn't joined raise UnstableSpecAuthError( 403, "%s not in room %s." % (event.user_id, event.room_id), errcode=Codes.NOT_JOINED, ) if Membership.INVITE == membership: # TODO (erikj): We should probably handle this more intelligently # PRIVATE join rules. # Invites are valid iff caller is in the room and target isn't. if target_banned: raise AuthError(403, "%s is banned from the room" % (target_user_id,)) elif target_in_room: # the target is already in the room. raise UnstableSpecAuthError( 403, "%s is already in the room." % target_user_id, errcode=Codes.ALREADY_JOINED, ) else: if user_level < invite_level: raise UnstableSpecAuthError( 403, "You don't have permission to invite users", errcode=Codes.INSUFFICIENT_POWER, ) elif Membership.JOIN == membership: # Joins are valid iff caller == target and: # * They are not banned. # * They are accepting a previously sent invitation. # * They are already joined (it's a NOOP). # * The room is public. # * The room is restricted and the user meets the allows rules. if event.user_id != target_user_id: raise AuthError(403, "Cannot force another user to join.") elif target_banned: raise AuthError(403, "You are banned from this room") elif join_rule == JoinRules.PUBLIC: pass elif ( room_version.restricted_join_rule and join_rule == JoinRules.RESTRICTED ) or ( room_version.knock_restricted_join_rule and join_rule == JoinRules.KNOCK_RESTRICTED ): # This is the same as public, but the event must contain a reference # to the server who authorised the join. If the event does not contain # the proper content it is rejected. # # Note that if the caller is in the room or invited, then they do # not need to meet the allow rules. if not caller_in_room and not caller_invited: authorising_user = event.content.get( EventContentFields.AUTHORISING_USER ) if authorising_user is None: raise AuthError(403, "Join event is missing authorising user.") # The authorising user must be in the room. key = (EventTypes.Member, authorising_user) member_event = auth_events.get(key) _check_joined_room(member_event, authorising_user, event.room_id) authorising_user_level = get_user_power_level( authorising_user, auth_events ) if authorising_user_level < invite_level: raise AuthError(403, "Join event authorised by invalid server.") elif ( join_rule == JoinRules.INVITE or (room_version.knock_join_rule and join_rule == JoinRules.KNOCK) or ( room_version.knock_restricted_join_rule and join_rule == JoinRules.KNOCK_RESTRICTED ) ): if not caller_in_room and not caller_invited: raise AuthError(403, "You are not invited to this room.") else: # TODO (erikj): may_join list # TODO (erikj): private rooms raise AuthError(403, "You are not allowed to join this room") elif Membership.LEAVE == membership: # TODO (erikj): Implement kicks. if target_banned and user_level < ban_level: raise UnstableSpecAuthError( 403, "You cannot unban user %s." % (target_user_id,), errcode=Codes.INSUFFICIENT_POWER, ) elif target_user_id != event.user_id: kick_level = get_named_level(auth_events, "kick", 50) if user_level < kick_level or user_level <= target_level: raise UnstableSpecAuthError( 403, "You cannot kick user %s." % target_user_id, errcode=Codes.INSUFFICIENT_POWER, ) elif Membership.BAN == membership: if user_level < ban_level: raise UnstableSpecAuthError( 403, "You don't have permission to ban", errcode=Codes.INSUFFICIENT_POWER, ) elif user_level <= target_level: raise UnstableSpecAuthError( 403, "You don't have permission to ban this user", errcode=Codes.INSUFFICIENT_POWER, ) elif room_version.knock_join_rule and Membership.KNOCK == membership: if join_rule != JoinRules.KNOCK and ( not room_version.knock_restricted_join_rule or join_rule != JoinRules.KNOCK_RESTRICTED ): raise AuthError(403, "You don't have permission to knock") elif target_user_id != event.user_id: raise AuthError(403, "You cannot knock for other users") elif target_in_room: raise UnstableSpecAuthError( 403, "You cannot knock on a room you are already in", errcode=Codes.ALREADY_JOINED, ) elif caller_invited: raise AuthError(403, "You are already invited to this room") elif target_banned: raise AuthError(403, "You are banned from this room") else: raise AuthError(500, "Unknown membership %s" % membership) def _check_event_sender_in_room( event: "EventBase", auth_events: StateMap["EventBase"] ) -> None: key = (EventTypes.Member, event.user_id) member_event = auth_events.get(key) _check_joined_room(member_event, event.user_id, event.room_id) def _check_joined_room( member: Optional["EventBase"], user_id: str, room_id: str ) -> None: if not member or member.membership != Membership.JOIN: raise AuthError( 403, "User %s not in room %s (%s)" % (user_id, room_id, repr(member)) ) def get_send_level( etype: str, state_key: Optional[str], power_levels_event: Optional["EventBase"] ) -> int: """Get the power level required to send an event of a given type The federation spec [1] refers to this as "Required Power Level". https://matrix.org/docs/spec/server_server/unstable.html#definitions Args: etype: type of event state_key: state_key of state event, or None if it is not a state event. power_levels_event: power levels event in force at this point in the room Returns: power level required to send this event. """ if power_levels_event: power_levels_content = power_levels_event.content else: power_levels_content = {} # see if we have a custom level for this event type send_level = power_levels_content.get("events", {}).get(etype) # otherwise, fall back to the state_default/events_default. if send_level is None: if state_key is not None: send_level = power_levels_content.get("state_default", 50) else: send_level = power_levels_content.get("events_default", 0) return int(send_level) def _can_send_event(event: "EventBase", auth_events: StateMap["EventBase"]) -> bool: power_levels_event = get_power_level_event(auth_events) send_level = get_send_level(event.type, event.get("state_key"), power_levels_event) user_level = get_user_power_level(event.user_id, auth_events) if user_level < send_level: raise UnstableSpecAuthError( 403, "You don't have permission to post that to the room. " + "user_level (%d) < send_level (%d)" % (user_level, send_level), errcode=Codes.INSUFFICIENT_POWER, ) # Check state_key if hasattr(event, "state_key"): if event.state_key.startswith("@"): if event.state_key != event.user_id: raise AuthError(403, "You are not allowed to set others state") return True def check_redaction( room_version_obj: RoomVersion, event: "EventBase", auth_events: StateMap["EventBase"], ) -> bool: """Check whether the event sender is allowed to redact the target event. Returns: True if the sender is allowed to redact the target event if the target event was created by them. False if the sender is allowed to redact the target event with no further checks. Raises: AuthError if the event sender is definitely not allowed to redact the target event. """ user_level = get_user_power_level(event.user_id, auth_events) redact_level = get_named_level(auth_events, "redact", 50) if user_level >= redact_level: return False if room_version_obj.event_format == EventFormatVersions.ROOM_V1_V2: redacter_domain = get_domain_from_id(event.event_id) if not isinstance(event.redacts, str): return False redactee_domain = get_domain_from_id(event.redacts) if redacter_domain == redactee_domain: return True else: event.internal_metadata.recheck_redaction = True return True raise AuthError(403, "You don't have permission to redact events") def _check_power_levels( room_version_obj: RoomVersion, event: "EventBase", auth_events: StateMap["EventBase"], ) -> None: user_list = event.content.get("users", {}) # Validate users for k, v in user_list.items(): try: UserID.from_string(k) except Exception: raise SynapseError(400, "Not a valid user_id: %s" % (k,)) try: int(v) except Exception: raise SynapseError(400, "Not a valid power level: %s" % (v,)) # Reject events with stringy power levels if required by room version if ( event.type == EventTypes.PowerLevels and room_version_obj.enforce_int_power_levels ): for k, v in event.content.items(): if k in { "users_default", "events_default", "state_default", "ban", "redact", "kick", "invite", }: if type(v) is not int: # noqa: E721 raise SynapseError(400, f"{v!r} must be an integer.") if k in {"events", "notifications", "users"}: if not isinstance(v, collections.abc.Mapping) or not all( type(v) is int for v in v.values() # noqa: E721 ): raise SynapseError( 400, f"{v!r} must be a dict wherein all the values are integers.", ) key = (event.type, event.state_key) current_state = auth_events.get(key) if not current_state: return user_level = get_user_power_level(event.user_id, auth_events) # Check other levels: levels_to_check: List[Tuple[str, Optional[str]]] = [ ("users_default", None), ("events_default", None), ("state_default", None), ("ban", None), ("redact", None), ("kick", None), ("invite", None), ] old_list = current_state.content.get("users", {}) for user in set(list(old_list) + list(user_list)): levels_to_check.append((user, "users")) old_list = current_state.content.get("events", {}) new_list = event.content.get("events", {}) for ev_id in set(list(old_list) + list(new_list)): levels_to_check.append((ev_id, "events")) # MSC2209 specifies these checks should also be done for the "notifications" # key. if room_version_obj.limit_notifications_power_levels: old_list = current_state.content.get("notifications", {}) new_list = event.content.get("notifications", {}) for ev_id in set(list(old_list) + list(new_list)): levels_to_check.append((ev_id, "notifications")) old_state = current_state.content new_state = event.content for level_to_check, dir in levels_to_check: old_loc = old_state new_loc = new_state if dir: old_loc = old_loc.get(dir, {}) new_loc = new_loc.get(dir, {}) if level_to_check in old_loc: old_level: Optional[int] = int(old_loc[level_to_check]) else: old_level = None if level_to_check in new_loc: new_level: Optional[int] = int(new_loc[level_to_check]) else: new_level = None if new_level is not None and old_level is not None: if new_level == old_level: continue if dir == "users" and level_to_check != event.user_id: if old_level == user_level: raise AuthError( 403, "You don't have permission to remove ops level equal " "to your own", ) # Check if the old and new levels are greater than the user level # (if defined) old_level_too_big = old_level is not None and old_level > user_level new_level_too_big = new_level is not None and new_level > user_level if old_level_too_big or new_level_too_big: raise AuthError( 403, "You don't have permission to add ops level greater than your own" ) def get_power_level_event(auth_events: StateMap["EventBase"]) -> Optional["EventBase"]: return auth_events.get((EventTypes.PowerLevels, "")) def get_user_power_level(user_id: str, auth_events: StateMap["EventBase"]) -> int: """Get a user's power level Args: user_id: user's id to look up in power_levels auth_events: state in force at this point in the room (or rather, a subset of it including at least the create event and power levels event. Returns: the user's power level in this room. """ power_level_event = get_power_level_event(auth_events) if power_level_event: level = power_level_event.content.get("users", {}).get(user_id) if level is None: level = power_level_event.content.get("users_default", 0) if level is None: return 0 else: return int(level) else: # if there is no power levels event, the creator gets 100 and everyone # else gets 0. # some things which call this don't pass the create event: hack around # that. key = (EventTypes.Create, "") create_event = auth_events.get(key) if create_event is not None: if create_event.room_version.implicit_room_creator: creator = create_event.sender else: creator = create_event.content[EventContentFields.ROOM_CREATOR] if creator == user_id: return 100 return 0 def get_named_level(auth_events: StateMap["EventBase"], name: str, default: int) -> int: power_level_event = get_power_level_event(auth_events) if not power_level_event: return default level = power_level_event.content.get(name, None) if level is not None: return int(level) else: return default def _verify_third_party_invite( event: "EventBase", auth_events: StateMap["EventBase"] ) -> bool: """ Validates that the invite event is authorized by a previous third-party invite. Checks that the public key, and keyserver, match those in the third party invite, and that the invite event has a signature issued using that public key. Args: event: The m.room.member join event being validated. auth_events: All relevant previous context events which may be used for authorization decisions. Return: True if the event fulfills the expectations of a previous third party invite event. """ if "third_party_invite" not in event.content: return False third_party_invite = event.content["third_party_invite"] if not isinstance(third_party_invite, collections.abc.Mapping): return False if "signed" not in third_party_invite: return False signed = third_party_invite["signed"] if not isinstance(signed, collections.abc.Mapping): return False for key in {"mxid", "token", "signatures"}: if key not in signed: return False token = signed["token"] invite_event = auth_events.get((EventTypes.ThirdPartyInvite, token)) if not invite_event: return False if invite_event.sender != event.sender: return False if event.user_id != invite_event.user_id: return False if signed["mxid"] != event.state_key: return False for public_key_object in get_public_keys(invite_event): public_key = public_key_object["public_key"] try: for server, signature_block in signed["signatures"].items(): for key_name in signature_block.keys(): if not key_name.startswith("ed25519:"): continue verify_key = decode_verify_key_bytes( key_name, decode_base64(public_key) ) # verify_signed_json incorrectly states it wants a dict, it # just needs a mapping. verify_signed_json(signed, server, verify_key) # type: ignore[arg-type] # We got the public key from the invite, so we know that the # correct server signed the signed bundle. # The caller is responsible for checking that the signing # server has not revoked that public key. return True except (KeyError, SignatureVerifyException): continue return False def get_public_keys(invite_event: "EventBase") -> List[Dict[str, Any]]: public_keys = [] if "public_key" in invite_event.content: o = {"public_key": invite_event.content["public_key"]} if "key_validity_url" in invite_event.content: o["key_validity_url"] = invite_event.content["key_validity_url"] public_keys.append(o) public_keys.extend(invite_event.content.get("public_keys", [])) return public_keys def auth_types_for_event( room_version: RoomVersion, event: Union["EventBase", "EventBuilder"] ) -> Set[Tuple[str, str]]: """Given an event, return a list of (EventType, StateKey) that may be needed to auth the event. The returned list may be a superset of what would actually be required depending on the full state of the room. Used to limit the number of events to fetch from the database to actually auth the event. """ if event.type == EventTypes.Create: return set() auth_types = { (EventTypes.PowerLevels, ""), (EventTypes.Member, event.sender), (EventTypes.Create, ""), } if event.type == EventTypes.Member: membership = event.content["membership"] if membership in [Membership.JOIN, Membership.INVITE, Membership.KNOCK]: auth_types.add((EventTypes.JoinRules, "")) auth_types.add((EventTypes.Member, event.state_key)) if membership == Membership.INVITE: if "third_party_invite" in event.content: key = ( EventTypes.ThirdPartyInvite, event.content["third_party_invite"]["signed"]["token"], ) auth_types.add(key) if room_version.restricted_join_rule and membership == Membership.JOIN: if EventContentFields.AUTHORISING_USER in event.content: key = ( EventTypes.Member, event.content[EventContentFields.AUTHORISING_USER], ) auth_types.add(key) return auth_types synapse-1.100.0/synapse/events/000077500000000000000000000000001455622526000163305ustar00rootroot00000000000000synapse-1.100.0/synapse/events/__init__.py000066400000000000000000000436551455622526000204560ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import collections.abc import os from typing import ( TYPE_CHECKING, Any, Dict, Generic, Iterable, List, Optional, Tuple, Type, TypeVar, Union, overload, ) import attr from typing_extensions import Literal from unpaddedbase64 import encode_base64 from synapse.api.constants import RelationTypes from synapse.api.room_versions import EventFormatVersions, RoomVersion, RoomVersions from synapse.synapse_rust.events import EventInternalMetadata from synapse.types import JsonDict, StrCollection from synapse.util.caches import intern_dict from synapse.util.frozenutils import freeze from synapse.util.stringutils import strtobool if TYPE_CHECKING: from synapse.events.builder import EventBuilder # Whether we should use frozen_dict in FrozenEvent. Using frozen_dicts prevents # bugs where we accidentally share e.g. signature dicts. However, converting a # dict to frozen_dicts is expensive. # # NOTE: This is overridden by the configuration by the Synapse worker apps, but # for the sake of tests, it is set here while it cannot be configured on the # homeserver object itself. USE_FROZEN_DICTS = strtobool(os.environ.get("SYNAPSE_USE_FROZEN_DICTS", "0")) T = TypeVar("T") # DictProperty (and DefaultDictProperty) require the classes they're used with to # have a _dict property to pull properties from. # # TODO _DictPropertyInstance should not include EventBuilder but due to # https://github.com/python/mypy/issues/5570 it thinks the DictProperty and # DefaultDictProperty get applied to EventBuilder when it is in a Union with # EventBase. This is the least invasive hack to get mypy to comply. # # Note that DictProperty/DefaultDictProperty cannot actually be used with # EventBuilder as it lacks a _dict property. _DictPropertyInstance = Union["EventBase", "EventBuilder"] class DictProperty(Generic[T]): """An object property which delegates to the `_dict` within its parent object.""" __slots__ = ["key"] def __init__(self, key: str): self.key = key @overload def __get__( self, instance: Literal[None], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> "DictProperty": ... @overload def __get__( self, instance: _DictPropertyInstance, owner: Optional[Type[_DictPropertyInstance]] = None, ) -> T: ... def __get__( self, instance: Optional[_DictPropertyInstance], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> Union[T, "DictProperty"]: # if the property is accessed as a class property rather than an instance # property, return the property itself rather than the value if instance is None: return self try: assert isinstance(instance, EventBase) return instance._dict[self.key] except KeyError as e1: # We want this to look like a regular attribute error (mostly so that # hasattr() works correctly), so we convert the KeyError into an # AttributeError. # # To exclude the KeyError from the traceback, we explicitly # 'raise from e1.__context__' (which is better than 'raise from None', # because that would omit any *earlier* exceptions). # raise AttributeError( "'%s' has no '%s' property" % (type(instance), self.key) ) from e1.__context__ def __set__(self, instance: _DictPropertyInstance, v: T) -> None: assert isinstance(instance, EventBase) instance._dict[self.key] = v def __delete__(self, instance: _DictPropertyInstance) -> None: assert isinstance(instance, EventBase) try: del instance._dict[self.key] except KeyError as e1: raise AttributeError( "'%s' has no '%s' property" % (type(instance), self.key) ) from e1.__context__ class DefaultDictProperty(DictProperty, Generic[T]): """An extension of DictProperty which provides a default if the property is not present in the parent's _dict. Note that this means that hasattr() on the property always returns True. """ __slots__ = ["default"] def __init__(self, key: str, default: T): super().__init__(key) self.default = default @overload def __get__( self, instance: Literal[None], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> "DefaultDictProperty": ... @overload def __get__( self, instance: _DictPropertyInstance, owner: Optional[Type[_DictPropertyInstance]] = None, ) -> T: ... def __get__( self, instance: Optional[_DictPropertyInstance], owner: Optional[Type[_DictPropertyInstance]] = None, ) -> Union[T, "DefaultDictProperty"]: if instance is None: return self assert isinstance(instance, EventBase) return instance._dict.get(self.key, self.default) class EventBase(metaclass=abc.ABCMeta): @property @abc.abstractmethod def format_version(self) -> int: """The EventFormatVersion implemented by this event""" ... def __init__( self, event_dict: JsonDict, room_version: RoomVersion, signatures: Dict[str, Dict[str, str]], unsigned: JsonDict, internal_metadata_dict: JsonDict, rejected_reason: Optional[str], ): assert room_version.event_format == self.format_version self.room_version = room_version self.signatures = signatures self.unsigned = unsigned self.rejected_reason = rejected_reason self._dict = event_dict self.internal_metadata = EventInternalMetadata(internal_metadata_dict) depth: DictProperty[int] = DictProperty("depth") content: DictProperty[JsonDict] = DictProperty("content") hashes: DictProperty[Dict[str, str]] = DictProperty("hashes") origin: DictProperty[str] = DictProperty("origin") origin_server_ts: DictProperty[int] = DictProperty("origin_server_ts") room_id: DictProperty[str] = DictProperty("room_id") sender: DictProperty[str] = DictProperty("sender") # TODO state_key should be Optional[str]. This is generally asserted in Synapse # by calling is_state() first (which ensures it is not None), but it is hard (not possible?) # to properly annotate that calling is_state() asserts that state_key exists # and is non-None. It would be better to replace such direct references with # get_state_key() (and a check for None). state_key: DictProperty[str] = DictProperty("state_key") type: DictProperty[str] = DictProperty("type") user_id: DictProperty[str] = DictProperty("sender") @property def event_id(self) -> str: raise NotImplementedError() @property def membership(self) -> str: return self.content["membership"] @property def redacts(self) -> Optional[str]: """MSC2176 moved the redacts field into the content.""" if self.room_version.updated_redaction_rules: return self.content.get("redacts") return self.get("redacts") def is_state(self) -> bool: return self.get_state_key() is not None def get_state_key(self) -> Optional[str]: """Get the state key of this event, or None if it's not a state event""" return self._dict.get("state_key") def get_dict(self) -> JsonDict: d = dict(self._dict) d.update({"signatures": self.signatures, "unsigned": dict(self.unsigned)}) return d def get(self, key: str, default: Optional[Any] = None) -> Any: return self._dict.get(key, default) def get_internal_metadata_dict(self) -> JsonDict: return self.internal_metadata.get_dict() def get_pdu_json(self, time_now: Optional[int] = None) -> JsonDict: pdu_json = self.get_dict() if time_now is not None and "age_ts" in pdu_json["unsigned"]: age = time_now - pdu_json["unsigned"]["age_ts"] pdu_json.setdefault("unsigned", {})["age"] = int(age) del pdu_json["unsigned"]["age_ts"] # This may be a frozen event pdu_json["unsigned"].pop("redacted_because", None) return pdu_json def get_templated_pdu_json(self) -> JsonDict: """ Return a JSON object suitable for a templated event, as used in the make_{join,leave,knock} workflow. """ # By using _dict directly we don't pull in signatures/unsigned. template_json = dict(self._dict) # The hashes (similar to the signature) need to be recalculated by the # joining/leaving/knocking server after (potentially) modifying the # event. template_json.pop("hashes") return template_json def __getitem__(self, field: str) -> Optional[Any]: return self._dict[field] def __contains__(self, field: str) -> bool: return field in self._dict def items(self) -> List[Tuple[str, Optional[Any]]]: return list(self._dict.items()) def keys(self) -> Iterable[str]: return self._dict.keys() def prev_event_ids(self) -> List[str]: """Returns the list of prev event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's prev_events """ return [e for e, _ in self._dict["prev_events"]] def auth_event_ids(self) -> StrCollection: """Returns the list of auth event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's auth_events """ return [e for e, _ in self._dict["auth_events"]] def freeze(self) -> None: """'Freeze' the event dict, so it cannot be modified by accident""" # this will be a no-op if the event dict is already frozen. self._dict = freeze(self._dict) def __str__(self) -> str: return self.__repr__() def __repr__(self) -> str: rejection = f"REJECTED={self.rejected_reason}, " if self.rejected_reason else "" return ( f"<{self.__class__.__name__} " f"{rejection}" f"event_id={self.event_id}, " f"type={self.get('type')}, " f"state_key={self.get('state_key')}, " f"outlier={self.internal_metadata.is_outlier()}" ">" ) class FrozenEvent(EventBase): format_version = EventFormatVersions.ROOM_V1_V2 # All events of this type are V1 def __init__( self, event_dict: JsonDict, room_version: RoomVersion, internal_metadata_dict: Optional[JsonDict] = None, rejected_reason: Optional[str] = None, ): internal_metadata_dict = internal_metadata_dict or {} event_dict = dict(event_dict) # Signatures is a dict of dicts, and this is faster than doing a # copy.deepcopy signatures = { name: dict(sigs.items()) for name, sigs in event_dict.pop("signatures", {}).items() } unsigned = dict(event_dict.pop("unsigned", {})) # We intern these strings because they turn up a lot (especially when # caching). event_dict = intern_dict(event_dict) if USE_FROZEN_DICTS: frozen_dict = freeze(event_dict) else: frozen_dict = event_dict self._event_id = event_dict["event_id"] super().__init__( frozen_dict, room_version=room_version, signatures=signatures, unsigned=unsigned, internal_metadata_dict=internal_metadata_dict, rejected_reason=rejected_reason, ) @property def event_id(self) -> str: return self._event_id class FrozenEventV2(EventBase): format_version = EventFormatVersions.ROOM_V3 # All events of this type are V2 def __init__( self, event_dict: JsonDict, room_version: RoomVersion, internal_metadata_dict: Optional[JsonDict] = None, rejected_reason: Optional[str] = None, ): internal_metadata_dict = internal_metadata_dict or {} event_dict = dict(event_dict) # Signatures is a dict of dicts, and this is faster than doing a # copy.deepcopy signatures = { name: dict(sigs.items()) for name, sigs in event_dict.pop("signatures", {}).items() } assert "event_id" not in event_dict unsigned = dict(event_dict.pop("unsigned", {})) # We intern these strings because they turn up a lot (especially when # caching). event_dict = intern_dict(event_dict) if USE_FROZEN_DICTS: frozen_dict = freeze(event_dict) else: frozen_dict = event_dict self._event_id: Optional[str] = None super().__init__( frozen_dict, room_version=room_version, signatures=signatures, unsigned=unsigned, internal_metadata_dict=internal_metadata_dict, rejected_reason=rejected_reason, ) @property def event_id(self) -> str: # We have to import this here as otherwise we get an import loop which # is hard to break. from synapse.crypto.event_signing import compute_event_reference_hash if self._event_id: return self._event_id self._event_id = "$" + encode_base64(compute_event_reference_hash(self)[1]) return self._event_id def prev_event_ids(self) -> List[str]: """Returns the list of prev event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's prev_events """ return self._dict["prev_events"] def auth_event_ids(self) -> StrCollection: """Returns the list of auth event IDs. The order matches the order specified in the event, though there is no meaning to it. Returns: The list of event IDs of this event's auth_events """ return self._dict["auth_events"] class FrozenEventV3(FrozenEventV2): """FrozenEventV3, which differs from FrozenEventV2 only in the event_id format""" format_version = EventFormatVersions.ROOM_V4_PLUS # All events of this type are V3 @property def event_id(self) -> str: # We have to import this here as otherwise we get an import loop which # is hard to break. from synapse.crypto.event_signing import compute_event_reference_hash if self._event_id: return self._event_id self._event_id = "$" + encode_base64( compute_event_reference_hash(self)[1], urlsafe=True ) return self._event_id def _event_type_from_format_version( format_version: int, ) -> Type[Union[FrozenEvent, FrozenEventV2, FrozenEventV3]]: """Returns the python type to use to construct an Event object for the given event format version. Args: format_version: The event format version Returns: A type that can be initialized as per the initializer of `FrozenEvent` """ if format_version == EventFormatVersions.ROOM_V1_V2: return FrozenEvent elif format_version == EventFormatVersions.ROOM_V3: return FrozenEventV2 elif format_version == EventFormatVersions.ROOM_V4_PLUS: return FrozenEventV3 else: raise Exception("No event format %r" % (format_version,)) def make_event_from_dict( event_dict: JsonDict, room_version: RoomVersion = RoomVersions.V1, internal_metadata_dict: Optional[JsonDict] = None, rejected_reason: Optional[str] = None, ) -> EventBase: """Construct an EventBase from the given event dict""" event_type = _event_type_from_format_version(room_version.event_format) return event_type( event_dict, room_version, internal_metadata_dict or {}, rejected_reason ) @attr.s(slots=True, frozen=True, auto_attribs=True) class _EventRelation: # The target event of the relation. parent_id: str # The relation type. rel_type: str # The aggregation key. Will be None if the rel_type is not m.annotation or is # not a string. aggregation_key: Optional[str] def relation_from_event(event: EventBase) -> Optional[_EventRelation]: """ Attempt to parse relation information an event. Returns: The event relation information, if it is valid. None, otherwise. """ relation = event.content.get("m.relates_to") if not relation or not isinstance(relation, collections.abc.Mapping): # No relation information. return None # Relations must have a type and parent event ID. rel_type = relation.get("rel_type") if not isinstance(rel_type, str): return None parent_id = relation.get("event_id") if not isinstance(parent_id, str): return None # Annotations have a key field. aggregation_key = None if rel_type == RelationTypes.ANNOTATION: aggregation_key = relation.get("key") if not isinstance(aggregation_key, str): aggregation_key = None return _EventRelation(parent_id, rel_type, aggregation_key) synapse-1.100.0/synapse/events/builder.py000066400000000000000000000236001455622526000203310ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union import attr from signedjson.types import SigningKey from synapse.api.constants import MAX_DEPTH from synapse.api.room_versions import ( KNOWN_EVENT_FORMAT_VERSIONS, EventFormatVersions, RoomVersion, ) from synapse.crypto.event_signing import add_hashes_and_signatures from synapse.event_auth import auth_types_for_event from synapse.events import EventBase, make_event_from_dict from synapse.state import StateHandler from synapse.storage.databases.main import DataStore from synapse.synapse_rust.events import EventInternalMetadata from synapse.types import EventID, JsonDict, StrCollection from synapse.types.state import StateFilter from synapse.util import Clock from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.handlers.event_auth import EventAuthHandler from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, cmp=False, frozen=True, auto_attribs=True) class EventBuilder: """A format independent event builder used to build up the event content before signing the event. (Note that while objects of this class are frozen, the content/unsigned/internal_metadata fields are still mutable) Attributes: room_version: Version of the target room room_id type sender content unsigned internal_metadata _state _auth _store _clock _hostname: The hostname of the server creating the event _signing_key: The signing key to use to sign the event as the server """ _state: StateHandler _event_auth_handler: "EventAuthHandler" _store: DataStore _clock: Clock _hostname: str _signing_key: SigningKey room_version: RoomVersion room_id: str type: str sender: str content: JsonDict = attr.Factory(dict) unsigned: JsonDict = attr.Factory(dict) # These only exist on a subset of events, so they raise AttributeError if # someone tries to get them when they don't exist. _state_key: Optional[str] = None _redacts: Optional[str] = None _origin_server_ts: Optional[int] = None internal_metadata: EventInternalMetadata = attr.Factory( lambda: EventInternalMetadata({}) ) @property def state_key(self) -> str: if self._state_key is not None: return self._state_key raise AttributeError("state_key") def is_state(self) -> bool: return self._state_key is not None async def build( self, prev_event_ids: List[str], auth_event_ids: Optional[List[str]], depth: Optional[int] = None, ) -> EventBase: """Transform into a fully signed and hashed event Args: prev_event_ids: The event IDs to use as the prev events auth_event_ids: The event IDs to use as the auth events. Should normally be set to None, which will cause them to be calculated based on the room state at the prev_events. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. Returns: The signed and hashed event. """ if auth_event_ids is None: state_ids = await self._state.compute_state_after_events( self.room_id, prev_event_ids, state_filter=StateFilter.from_types( auth_types_for_event(self.room_version, self) ), await_full_state=False, ) auth_event_ids = self._event_auth_handler.compute_auth_events( self, state_ids ) format_version = self.room_version.event_format # The types of auth/prev events changes between event versions. prev_events: Union[StrCollection, List[Tuple[str, Dict[str, str]]]] auth_events: Union[List[str], List[Tuple[str, Dict[str, str]]]] if format_version == EventFormatVersions.ROOM_V1_V2: auth_events = await self._store.add_event_hashes(auth_event_ids) prev_events = await self._store.add_event_hashes(prev_event_ids) else: auth_events = auth_event_ids prev_events = prev_event_ids # Otherwise, progress the depth as normal if depth is None: ( _, most_recent_prev_event_depth, ) = await self._store.get_max_depth_of(prev_event_ids) depth = most_recent_prev_event_depth + 1 # we cap depth of generated events, to ensure that they are not # rejected by other servers (and so that they can be persisted in # the db) depth = min(depth, MAX_DEPTH) event_dict: Dict[str, Any] = { "auth_events": auth_events, "prev_events": prev_events, "type": self.type, "room_id": self.room_id, "sender": self.sender, "content": self.content, "unsigned": self.unsigned, "depth": depth, } if self.is_state(): event_dict["state_key"] = self._state_key # MSC2174 moves the redacts property to the content, it is invalid to # provide it as a top-level property. if self._redacts is not None and not self.room_version.updated_redaction_rules: event_dict["redacts"] = self._redacts if self._origin_server_ts is not None: event_dict["origin_server_ts"] = self._origin_server_ts return create_local_event_from_event_dict( clock=self._clock, hostname=self._hostname, signing_key=self._signing_key, room_version=self.room_version, event_dict=event_dict, internal_metadata_dict=self.internal_metadata.get_dict(), ) class EventBuilderFactory: def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.hostname = hs.hostname self.signing_key = hs.signing_key self.store = hs.get_datastores().main self.state = hs.get_state_handler() self._event_auth_handler = hs.get_event_auth_handler() def for_room_version( self, room_version: RoomVersion, key_values: dict ) -> EventBuilder: """Generate an event builder appropriate for the given room version Args: room_version: Version of the room that we're creating an event builder for key_values: Fields used as the basis of the new event Returns: EventBuilder """ return EventBuilder( store=self.store, state=self.state, event_auth_handler=self._event_auth_handler, clock=self.clock, hostname=self.hostname, signing_key=self.signing_key, room_version=room_version, type=key_values["type"], state_key=key_values.get("state_key"), room_id=key_values["room_id"], sender=key_values["sender"], content=key_values.get("content", {}), unsigned=key_values.get("unsigned", {}), redacts=key_values.get("redacts", None), origin_server_ts=key_values.get("origin_server_ts", None), ) def create_local_event_from_event_dict( clock: Clock, hostname: str, signing_key: SigningKey, room_version: RoomVersion, event_dict: JsonDict, internal_metadata_dict: Optional[JsonDict] = None, ) -> EventBase: """Takes a fully formed event dict, ensuring that fields like `origin` and `origin_server_ts` have correct values for a locally produced event, then signs and hashes it. """ format_version = room_version.event_format if format_version not in KNOWN_EVENT_FORMAT_VERSIONS: raise Exception("No event format defined for version %r" % (format_version,)) if internal_metadata_dict is None: internal_metadata_dict = {} time_now = int(clock.time_msec()) if format_version == EventFormatVersions.ROOM_V1_V2: event_dict["event_id"] = _create_event_id(clock, hostname) event_dict["origin"] = hostname event_dict.setdefault("origin_server_ts", time_now) event_dict.setdefault("unsigned", {}) age = event_dict["unsigned"].pop("age", 0) event_dict["unsigned"].setdefault("age_ts", time_now - age) event_dict.setdefault("signatures", {}) add_hashes_and_signatures(room_version, event_dict, hostname, signing_key) return make_event_from_dict( event_dict, room_version, internal_metadata_dict=internal_metadata_dict ) # A counter used when generating new event IDs _event_id_counter = 0 def _create_event_id(clock: Clock, hostname: str) -> str: """Create a new event ID Args: clock hostname: The server name for the event ID Returns: The new event ID """ global _event_id_counter i = str(_event_id_counter) _event_id_counter += 1 local_part = str(int(clock.time())) + i + random_string(5) e_id = EventID(local_part, hostname) return e_id.to_string() synapse-1.100.0/synapse/events/presence_router.py000066400000000000000000000216061455622526000221130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, List, Optional, Set, TypeVar, Union, ) from typing_extensions import ParamSpec from twisted.internet.defer import CancelledError from synapse.api.presence import UserPresenceState from synapse.util.async_helpers import delay_cancellation, maybe_awaitable if TYPE_CHECKING: from synapse.server import HomeServer GET_USERS_FOR_STATES_CALLBACK = Callable[ [Iterable[UserPresenceState]], Awaitable[Dict[str, Set[UserPresenceState]]] ] # This must either return a set of strings or the constant PresenceRouter.ALL_USERS. GET_INTERESTED_USERS_CALLBACK = Callable[[str], Awaitable[Union[Set[str], str]]] logger = logging.getLogger(__name__) P = ParamSpec("P") R = TypeVar("R") def load_legacy_presence_router(hs: "HomeServer") -> None: """Wrapper that loads a presence router module configured using the old configuration, and registers the hooks they implement. """ if hs.config.server.presence_router_module_class is None: return module = hs.config.server.presence_router_module_class config = hs.config.server.presence_router_config api = hs.get_module_api() presence_router = module(config=config, module_api=api) # The known hooks. If a module implements a method which name appears in this set, # we'll want to register it. presence_router_methods = { "get_users_for_states", "get_interested_users", } # All methods that the module provides should be async, but this wasn't enforced # in the old module system, so we wrap them if needed def async_wrapper( f: Optional[Callable[P, R]] ) -> Optional[Callable[P, Awaitable[R]]]: # f might be None if the callback isn't implemented by the module. In this # case we don't want to register a callback at all so we return None. if f is None: return None def run(*args: P.args, **kwargs: P.kwargs) -> Awaitable[R]: # Assertion required because mypy can't prove we won't change `f` # back to `None`. See # https://mypy.readthedocs.io/en/latest/common_issues.html#narrowing-and-inner-functions assert f is not None return maybe_awaitable(f(*args, **kwargs)) return run # Register the hooks through the module API. hooks: Dict[str, Optional[Callable[..., Any]]] = { hook: async_wrapper(getattr(presence_router, hook, None)) for hook in presence_router_methods } api.register_presence_router_callbacks(**hooks) class PresenceRouter: """ A module that the homeserver will call upon to help route user presence updates to additional destinations. """ ALL_USERS = "ALL" def __init__(self, hs: "HomeServer"): # Initially there are no callbacks self._get_users_for_states_callbacks: List[GET_USERS_FOR_STATES_CALLBACK] = [] self._get_interested_users_callbacks: List[GET_INTERESTED_USERS_CALLBACK] = [] def register_presence_router_callbacks( self, get_users_for_states: Optional[GET_USERS_FOR_STATES_CALLBACK] = None, get_interested_users: Optional[GET_INTERESTED_USERS_CALLBACK] = None, ) -> None: # PresenceRouter modules are required to implement both of these methods # or neither of them as they are assumed to act in a complementary manner paired_methods = [get_users_for_states, get_interested_users] if paired_methods.count(None) == 1: raise RuntimeError( "PresenceRouter modules must register neither or both of the paired callbacks: " "[get_users_for_states, get_interested_users]" ) # Append the methods provided to the lists of callbacks if get_users_for_states is not None: self._get_users_for_states_callbacks.append(get_users_for_states) if get_interested_users is not None: self._get_interested_users_callbacks.append(get_interested_users) async def get_users_for_states( self, state_updates: Iterable[UserPresenceState], ) -> Dict[str, Set[UserPresenceState]]: """ Given an iterable of user presence updates, determine where each one needs to go. Args: state_updates: An iterable of user presence state updates. Returns: A dictionary of user_id -> set of UserPresenceState, indicating which presence updates each user should receive. """ # Bail out early if we don't have any callbacks to run. if len(self._get_users_for_states_callbacks) == 0: # Don't include any extra destinations for presence updates return {} users_for_states: Dict[str, Set[UserPresenceState]] = {} # run all the callbacks for get_users_for_states and combine the results for callback in self._get_users_for_states_callbacks: try: # Note: result is an object here, because we don't trust modules to # return the types they're supposed to. result: object = await delay_cancellation(callback(state_updates)) except CancelledError: raise except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue if not isinstance(result, Dict): logger.warning( "Wrong type returned by module API callback %s: %s, expected Dict", callback, result, ) continue for key, new_entries in result.items(): if not isinstance(new_entries, Set): logger.warning( "Wrong type returned by module API callback %s: %s, expected Set", callback, new_entries, ) break users_for_states.setdefault(key, set()).update(new_entries) return users_for_states async def get_interested_users(self, user_id: str) -> Union[Set[str], str]: """ Retrieve a list of users that `user_id` is interested in receiving the presence of. This will be in addition to those they share a room with. Optionally, the object PresenceRouter.ALL_USERS can be returned to indicate that this user should receive all incoming local and remote presence updates. Note that this method will only be called for local users, but can return users that are local or remote. Args: user_id: A user requesting presence updates. Returns: A set of user IDs to return presence updates for, or ALL_USERS to return all known updates. """ # Bail out early if we don't have any callbacks to run. if len(self._get_interested_users_callbacks) == 0: # Don't report any additional interested users return set() interested_users = set() # run all the callbacks for get_interested_users and combine the results for callback in self._get_interested_users_callbacks: try: result = await delay_cancellation(callback(user_id)) except CancelledError: raise except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue # If one of the callbacks returns ALL_USERS then we can stop calling all # of the other callbacks, since the set of interested_users is already as # large as it can possibly be if result == PresenceRouter.ALL_USERS: return PresenceRouter.ALL_USERS if not isinstance(result, Set): logger.warning( "Wrong type returned by module API callback %s: %s, expected set", callback, result, ) continue # Add the new interested users to the set interested_users.update(result) return interested_users synapse-1.100.0/synapse/events/snapshot.py000066400000000000000000000524771455622526000205600ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Dict, List, Optional, Tuple import attr from immutabledict import immutabledict from synapse.appservice import ApplicationService from synapse.events import EventBase from synapse.logging.opentracing import tag_args, trace from synapse.types import JsonDict, StateMap if TYPE_CHECKING: from synapse.storage.controllers import StorageControllers from synapse.storage.databases import StateGroupDataStore from synapse.storage.databases.main import DataStore from synapse.types.state import StateFilter class UnpersistedEventContextBase(ABC): """ This is a base class for EventContext and UnpersistedEventContext, objects which hold information relevant to storing an associated event. Note that an UnpersistedEventContexts must be converted into an EventContext before it is suitable to send to the db with its associated event. Attributes: _storage: storage controllers for interfacing with the database app_service: If the associated event is being sent by a (local) application service, that app service. """ def __init__(self, storage_controller: "StorageControllers"): self._storage: "StorageControllers" = storage_controller self.app_service: Optional[ApplicationService] = None @abstractmethod async def persist( self, event: EventBase, ) -> "EventContext": """ A method to convert an UnpersistedEventContext to an EventContext, suitable for sending to the database with the associated event. """ @abstractmethod async def get_prev_state_ids( self, state_filter: Optional["StateFilter"] = None ) -> StateMap[str]: """ Gets the room state at the event (ie not including the event if the event is a state event). Args: state_filter: specifies the type of state event to fetch from DB, example: EventTypes.JoinRules """ @attr.s(slots=True, auto_attribs=True) class EventContext(UnpersistedEventContextBase): """ Holds information relevant to persisting an event Attributes: rejected: A rejection reason if the event was rejected, else None _state_group: The ID of the state group for this event. Note that state events are persisted with a state group which includes the new event, so this is effectively the state *after* the event in question. For a *rejected* state event, where the state of the rejected event is ignored, this state_group should never make it into the event_to_state_groups table. Indeed, inspecting this value for a rejected state event is almost certainly incorrect. For an outlier, where we don't have the state at the event, this will be None. Note that this is a private attribute: it should be accessed via the ``state_group`` property. state_group_before_event: The ID of the state group representing the state of the room before this event. If this is a non-state event, this will be the same as ``state_group``. If it's a state event, it will be the same as ``prev_group``. If ``state_group`` is None (ie, the event is an outlier), ``state_group_before_event`` will always also be ``None``. state_delta_due_to_event: If `state_group` and `state_group_before_event` are not None then this is the delta of the state between the two groups. state_group_deltas: If not empty, this is a dict collecting a mapping of the state difference between state groups. The keys are a tuple of two integers: the initial group and final state group. The corresponding value is a state map representing the state delta between these state groups. The dictionary is expected to have at most two entries with state groups of: 1. The state group before the event and after the event. 2. The state group preceding the state group before the event and the state group before the event. This information is collected and stored as part of an optimization for persisting events. partial_state: if True, we may be storing this event with a temporary, incomplete state. """ _storage: "StorageControllers" state_group_deltas: Dict[Tuple[int, int], StateMap[str]] rejected: Optional[str] = None _state_group: Optional[int] = None state_group_before_event: Optional[int] = None _state_delta_due_to_event: Optional[StateMap[str]] = None app_service: Optional[ApplicationService] = None partial_state: bool = False @staticmethod def with_state( storage: "StorageControllers", state_group: Optional[int], state_group_before_event: Optional[int], state_delta_due_to_event: Optional[StateMap[str]], partial_state: bool, state_group_deltas: Dict[Tuple[int, int], StateMap[str]], ) -> "EventContext": return EventContext( storage=storage, state_group=state_group, state_group_before_event=state_group_before_event, state_delta_due_to_event=state_delta_due_to_event, state_group_deltas=state_group_deltas, partial_state=partial_state, ) @staticmethod def for_outlier( storage: "StorageControllers", ) -> "EventContext": """Return an EventContext instance suitable for persisting an outlier event""" return EventContext(storage=storage, state_group_deltas={}) async def persist(self, event: EventBase) -> "EventContext": return self async def serialize(self, event: EventBase, store: "DataStore") -> JsonDict: """Converts self to a type that can be serialized as JSON, and then deserialized by `deserialize` Args: event: The event that this context relates to Returns: The serialized event. """ return { "state_group": self._state_group, "state_group_before_event": self.state_group_before_event, "rejected": self.rejected, "state_group_deltas": _encode_state_group_delta(self.state_group_deltas), "state_delta_due_to_event": _encode_state_dict( self._state_delta_due_to_event ), "app_service_id": self.app_service.id if self.app_service else None, "partial_state": self.partial_state, } @staticmethod def deserialize(storage: "StorageControllers", input: JsonDict) -> "EventContext": """Converts a dict that was produced by `serialize` back into a EventContext. Args: storage: Used to convert AS ID to AS object and fetch state. input: A dict produced by `serialize` Returns: The event context. """ context = EventContext( # We use the state_group and prev_state_id stuff to pull the # current_state_ids out of the DB and construct prev_state_ids. storage=storage, state_group=input["state_group"], state_group_before_event=input["state_group_before_event"], state_group_deltas=_decode_state_group_delta(input["state_group_deltas"]), state_delta_due_to_event=_decode_state_dict( input["state_delta_due_to_event"] ), rejected=input["rejected"], partial_state=input.get("partial_state", False), ) app_service_id = input["app_service_id"] if app_service_id: context.app_service = storage.main.get_app_service_by_id(app_service_id) return context @property def state_group(self) -> Optional[int]: """The ID of the state group for this event. Note that state events are persisted with a state group which includes the new event, so this is effectively the state *after* the event in question. For an outlier, where we don't have the state at the event, this will be None. It is an error to access this for a rejected event, since rejected state should not make it into the room state. Accessing this property will raise an exception if ``rejected`` is set. """ if self.rejected: raise RuntimeError("Attempt to access state_group of rejected event") return self._state_group @trace @tag_args async def get_current_state_ids( self, state_filter: Optional["StateFilter"] = None ) -> Optional[StateMap[str]]: """ Gets the room state map, including this event - ie, the state in ``state_group`` It is an error to access this for a rejected event, since rejected state should not make it into the room state. This method will raise an exception if ``rejected`` is set. Arg: state_filter: specifies the type of state event to fetch from DB, example: EventTypes.JoinRules Returns: Returns None if state_group is None, which happens when the associated event is an outlier. Maps a (type, state_key) to the event ID of the state event matching this tuple. """ if self.rejected: raise RuntimeError("Attempt to access state_ids of rejected event") assert self._state_delta_due_to_event is not None prev_state_ids = await self.get_prev_state_ids(state_filter) if self._state_delta_due_to_event: prev_state_ids = dict(prev_state_ids) prev_state_ids.update(self._state_delta_due_to_event) return prev_state_ids @trace @tag_args async def get_prev_state_ids( self, state_filter: Optional["StateFilter"] = None ) -> StateMap[str]: """ Gets the room state map, excluding this event. For a non-state event, this will be the same as get_current_state_ids(). Args: state_filter: specifies the type of state event to fetch from DB, example: EventTypes.JoinRules Returns: Returns {} if state_group is None, which happens when the associated event is an outlier. Maps a (type, state_key) to the event ID of the state event matching this tuple. """ assert self.state_group_before_event is not None return await self._storage.state.get_state_ids_for_group( self.state_group_before_event, state_filter ) @attr.s(slots=True, auto_attribs=True) class UnpersistedEventContext(UnpersistedEventContextBase): """ The event context holds information about the state groups for an event. It is important to remember that an event technically has two state groups: the state group before the event, and the state group after the event. If the event is not a state event, the state group will not change (ie the state group before the event will be the same as the state group after the event), but if it is a state event the state group before the event will differ from the state group after the event. This is a version of an EventContext before the new state group (if any) has been computed and stored. It contains information about the state before the event (which also may be the information after the event, if the event is not a state event). The UnpersistedEventContext must be converted into an EventContext by calling the method 'persist' on it before it is suitable to be sent to the DB for processing. state_group_after_event: The state group after the event. This will always be None until it is persisted. If the event is not a state event, this will be the same as state_group_before_event. state_group_before_event: The ID of the state group representing the state of the room before this event. state_delta_due_to_event: If the event is a state event, then this is the delta of the state between `state_group` and `state_group_before_event` prev_group_for_state_group_before_event: If it is known, ``state_group_before_event``'s previous state group. delta_ids_to_state_group_before_event: If ``prev_group_for_state_group_before_event`` is not None, the state delta between ``prev_group_for_state_group_before_event`` and ``state_group_before_event``. partial_state: Whether the event has partial state. state_map_before_event: A map of the state before the event, i.e. the state at `state_group_before_event` """ _storage: "StorageControllers" state_group_before_event: Optional[int] state_group_after_event: Optional[int] state_delta_due_to_event: Optional[StateMap[str]] prev_group_for_state_group_before_event: Optional[int] delta_ids_to_state_group_before_event: Optional[StateMap[str]] partial_state: bool state_map_before_event: Optional[StateMap[str]] = None @classmethod async def batch_persist_unpersisted_contexts( cls, events_and_context: List[Tuple[EventBase, "UnpersistedEventContextBase"]], room_id: str, last_known_state_group: int, datastore: "StateGroupDataStore", ) -> List[Tuple[EventBase, EventContext]]: """ Takes a list of events and their associated unpersisted contexts and persists the unpersisted contexts, returning a list of events and persisted contexts. Note that all the events must be in a linear chain (ie a <- b <- c). Args: events_and_context: A list of events and their unpersisted contexts room_id: the room_id for the events last_known_state_group: the last persisted state group datastore: a state datastore """ amended_events_and_context = await datastore.store_state_deltas_for_batched( events_and_context, room_id, last_known_state_group ) events_and_persisted_context = [] for event, unpersisted_context in amended_events_and_context: state_group_deltas = unpersisted_context._build_state_group_deltas() context = EventContext( storage=unpersisted_context._storage, state_group=unpersisted_context.state_group_after_event, state_group_before_event=unpersisted_context.state_group_before_event, state_delta_due_to_event=unpersisted_context.state_delta_due_to_event, partial_state=unpersisted_context.partial_state, state_group_deltas=state_group_deltas, ) events_and_persisted_context.append((event, context)) return events_and_persisted_context async def get_prev_state_ids( self, state_filter: Optional["StateFilter"] = None ) -> StateMap[str]: """ Gets the room state map, excluding this event. Args: state_filter: specifies the type of state event to fetch from DB Returns: Maps a (type, state_key) to the event ID of the state event matching this tuple. """ if self.state_map_before_event: return self.state_map_before_event assert self.state_group_before_event is not None return await self._storage.state.get_state_ids_for_group( self.state_group_before_event, state_filter ) async def persist(self, event: EventBase) -> EventContext: """ Creates a full `EventContext` for the event, persisting any referenced state that has not yet been persisted. Args: event: event that the EventContext is associated with. Returns: An EventContext suitable for sending to the database with the event for persisting """ assert self.partial_state is not None # If we have a full set of state for before the event but don't have a state # group for that state, we need to get one if self.state_group_before_event is None: assert self.state_map_before_event state_group_before_event = await self._storage.state.store_state_group( event.event_id, event.room_id, prev_group=self.prev_group_for_state_group_before_event, delta_ids=self.delta_ids_to_state_group_before_event, current_state_ids=self.state_map_before_event, ) self.state_group_before_event = state_group_before_event # if the event isn't a state event the state group doesn't change if not self.state_delta_due_to_event: self.state_group_after_event = self.state_group_before_event # otherwise if it is a state event we need to get a state group for it else: self.state_group_after_event = await self._storage.state.store_state_group( event.event_id, event.room_id, prev_group=self.state_group_before_event, delta_ids=self.state_delta_due_to_event, current_state_ids=None, ) state_group_deltas = self._build_state_group_deltas() return EventContext.with_state( storage=self._storage, state_group=self.state_group_after_event, state_group_before_event=self.state_group_before_event, state_delta_due_to_event=self.state_delta_due_to_event, state_group_deltas=state_group_deltas, partial_state=self.partial_state, ) def _build_state_group_deltas(self) -> Dict[Tuple[int, int], StateMap]: """ Collect deltas between the state groups associated with this context """ state_group_deltas = {} # if we know the state group before the event and after the event, add them and the # state delta between them to state_group_deltas if self.state_group_before_event and self.state_group_after_event: # if we have the state groups we should have the delta assert self.state_delta_due_to_event is not None state_group_deltas[ ( self.state_group_before_event, self.state_group_after_event, ) ] = self.state_delta_due_to_event # the state group before the event may also have a state group which precedes it, if # we have that and the state group before the event, add them and the state # delta between them to state_group_deltas if ( self.prev_group_for_state_group_before_event and self.state_group_before_event ): # if we have both state groups we should have the delta between them assert self.delta_ids_to_state_group_before_event is not None state_group_deltas[ ( self.prev_group_for_state_group_before_event, self.state_group_before_event, ) ] = self.delta_ids_to_state_group_before_event return state_group_deltas def _encode_state_group_delta( state_group_delta: Dict[Tuple[int, int], StateMap[str]] ) -> List[Tuple[int, int, Optional[List[Tuple[str, str, str]]]]]: if not state_group_delta: return [] state_group_delta_encoded = [] for key, value in state_group_delta.items(): state_group_delta_encoded.append((key[0], key[1], _encode_state_dict(value))) return state_group_delta_encoded def _decode_state_group_delta( input: List[Tuple[int, int, List[Tuple[str, str, str]]]] ) -> Dict[Tuple[int, int], StateMap[str]]: if not input: return {} state_group_deltas = {} for state_group_1, state_group_2, state_dict in input: state_map = _decode_state_dict(state_dict) assert state_map is not None state_group_deltas[(state_group_1, state_group_2)] = state_map return state_group_deltas def _encode_state_dict( state_dict: Optional[StateMap[str]], ) -> Optional[List[Tuple[str, str, str]]]: """Since dicts of (type, state_key) -> event_id cannot be serialized in JSON we need to convert them to a form that can. """ if state_dict is None: return None return [(etype, state_key, v) for (etype, state_key), v in state_dict.items()] def _decode_state_dict( input: Optional[List[Tuple[str, str, str]]] ) -> Optional[StateMap[str]]: """Decodes a state dict encoded using `_encode_state_dict` above""" if input is None: return None return immutabledict({(etype, state_key): v for etype, state_key, v in input}) synapse-1.100.0/synapse/events/utils.py000066400000000000000000000671721455622526000200570ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import collections.abc import re from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, List, Mapping, Match, MutableMapping, Optional, Union, ) import attr from canonicaljson import encode_canonical_json from synapse.api.constants import ( MAX_PDU_SIZE, EventContentFields, EventTypes, RelationTypes, ) from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import RoomVersion from synapse.types import JsonDict, Requester from . import EventBase if TYPE_CHECKING: from synapse.handlers.relations import BundledAggregations from synapse.server import HomeServer # Split strings on "." but not "\." (or "\\\."). SPLIT_FIELD_REGEX = re.compile(r"\\*\.") # Find escaped characters, e.g. those with a \ in front of them. ESCAPE_SEQUENCE_PATTERN = re.compile(r"\\(.)") CANONICALJSON_MAX_INT = (2**53) - 1 CANONICALJSON_MIN_INT = -CANONICALJSON_MAX_INT # Module API callback that allows adding fields to the unsigned section of # events that are sent to clients. ADD_EXTRA_FIELDS_TO_UNSIGNED_CLIENT_EVENT_CALLBACK = Callable[ [EventBase], Awaitable[JsonDict] ] def prune_event(event: EventBase) -> EventBase: """Returns a pruned version of the given event, which removes all keys we don't know about or think could potentially be dodgy. This is used when we "redact" an event. We want to remove all fields that the user has specified, but we do want to keep necessary information like type, state_key etc. """ pruned_event_dict = prune_event_dict(event.room_version, event.get_dict()) from . import make_event_from_dict pruned_event = make_event_from_dict( pruned_event_dict, event.room_version, event.internal_metadata.get_dict() ) # copy the internal fields pruned_event.internal_metadata.stream_ordering = ( event.internal_metadata.stream_ordering ) pruned_event.internal_metadata.outlier = event.internal_metadata.outlier # Mark the event as redacted pruned_event.internal_metadata.redacted = True return pruned_event def prune_event_dict(room_version: RoomVersion, event_dict: JsonDict) -> JsonDict: """Redacts the event_dict in the same way as `prune_event`, except it operates on dicts rather than event objects Returns: A copy of the pruned event dict """ allowed_keys = [ "event_id", "sender", "room_id", "hashes", "signatures", "content", "type", "state_key", "depth", "prev_events", "auth_events", "origin_server_ts", ] # Earlier room versions from had additional allowed keys. if not room_version.updated_redaction_rules: allowed_keys.extend(["prev_state", "membership", "origin"]) event_type = event_dict["type"] new_content = {} def add_fields(*fields: str) -> None: for field in fields: if field in event_dict["content"]: new_content[field] = event_dict["content"][field] if event_type == EventTypes.Member: add_fields("membership") if room_version.restricted_join_rule_fix: add_fields(EventContentFields.AUTHORISING_USER) if room_version.updated_redaction_rules: # Preserve the signed field under third_party_invite. third_party_invite = event_dict["content"].get("third_party_invite") if isinstance(third_party_invite, collections.abc.Mapping): new_content["third_party_invite"] = {} if "signed" in third_party_invite: new_content["third_party_invite"]["signed"] = third_party_invite[ "signed" ] elif event_type == EventTypes.Create: if room_version.updated_redaction_rules: # MSC2176 rules state that create events cannot have their `content` redacted. new_content = event_dict["content"] elif not room_version.implicit_room_creator: # Some room versions give meaning to `creator` add_fields("creator") elif event_type == EventTypes.JoinRules: add_fields("join_rule") if room_version.restricted_join_rule: add_fields("allow") elif event_type == EventTypes.PowerLevels: add_fields( "users", "users_default", "events", "events_default", "state_default", "ban", "kick", "redact", ) if room_version.updated_redaction_rules: add_fields("invite") elif event_type == EventTypes.Aliases and room_version.special_case_aliases_auth: add_fields("aliases") elif event_type == EventTypes.RoomHistoryVisibility: add_fields("history_visibility") elif event_type == EventTypes.Redaction and room_version.updated_redaction_rules: add_fields("redacts") # Protect the rel_type and event_id fields under the m.relates_to field. if room_version.msc3389_relation_redactions: relates_to = event_dict["content"].get("m.relates_to") if isinstance(relates_to, collections.abc.Mapping): new_relates_to = {} for field in ("rel_type", "event_id"): if field in relates_to: new_relates_to[field] = relates_to[field] # Only include a non-empty relates_to field. if new_relates_to: new_content["m.relates_to"] = new_relates_to allowed_fields = {k: v for k, v in event_dict.items() if k in allowed_keys} allowed_fields["content"] = new_content unsigned: JsonDict = {} allowed_fields["unsigned"] = unsigned event_unsigned = event_dict.get("unsigned", {}) if "age_ts" in event_unsigned: unsigned["age_ts"] = event_unsigned["age_ts"] if "replaces_state" in event_unsigned: unsigned["replaces_state"] = event_unsigned["replaces_state"] return allowed_fields def _copy_field(src: JsonDict, dst: JsonDict, field: List[str]) -> None: """Copy the field in 'src' to 'dst'. For example, if src={"foo":{"bar":5}} and dst={}, and field=["foo","bar"] then dst={"foo":{"bar":5}}. Args: src: The dict to read from. dst: The dict to modify. field: List of keys to drill down to in 'src'. """ if len(field) == 0: # this should be impossible return if len(field) == 1: # common case e.g. 'origin_server_ts' if field[0] in src: dst[field[0]] = src[field[0]] return # Else is a nested field e.g. 'content.body' # Pop the last field as that's the key to move across and we need the # parent dict in order to access the data. Drill down to the right dict. key_to_move = field.pop(-1) sub_dict = src for sub_field in field: # e.g. sub_field => "content" if sub_field in sub_dict and isinstance( sub_dict[sub_field], collections.abc.Mapping ): sub_dict = sub_dict[sub_field] else: return if key_to_move not in sub_dict: return # Insert the key into the output dictionary, creating nested objects # as required. We couldn't do this any earlier or else we'd need to delete # the empty objects if the key didn't exist. sub_out_dict = dst for sub_field in field: sub_out_dict = sub_out_dict.setdefault(sub_field, {}) sub_out_dict[key_to_move] = sub_dict[key_to_move] def _escape_slash(m: Match[str]) -> str: """ Replacement function; replace a backslash-backslash or backslash-dot with the second character. Leaves any other string alone. """ if m.group(1) in ("\\", "."): return m.group(1) return m.group(0) def _split_field(field: str) -> List[str]: """ Splits strings on unescaped dots and removes escaping. Args: field: A string representing a path to a field. Returns: A list of nested fields to traverse. """ # Convert the field and remove escaping: # # 1. "content.body.thing\.with\.dots" # 2. ["content", "body", "thing\.with\.dots"] # 3. ["content", "body", "thing.with.dots"] # Find all dots (and their preceding backslashes). If the dot is unescaped # then emit a new field part. result = [] prev_start = 0 for match in SPLIT_FIELD_REGEX.finditer(field): # If the match is an *even* number of characters than the dot was escaped. if len(match.group()) % 2 == 0: continue # Add a new part (up to the dot, exclusive) after escaping. result.append( ESCAPE_SEQUENCE_PATTERN.sub( _escape_slash, field[prev_start : match.end() - 1] ) ) prev_start = match.end() # Add any part of the field after the last unescaped dot. (Note that if the # character is a dot this correctly adds a blank string.) result.append(re.sub(r"\\(.)", _escape_slash, field[prev_start:])) return result def only_fields(dictionary: JsonDict, fields: List[str]) -> JsonDict: """Return a new dict with only the fields in 'dictionary' which are present in 'fields'. If there are no event fields specified then all fields are included. The entries may include '.' characters to indicate sub-fields. So ['content.body'] will include the 'body' field of the 'content' object. A literal '.' or '\' character in a field name may be escaped using a '\'. Args: dictionary: The dictionary to read from. fields: A list of fields to copy over. Only shallow refs are taken. Returns: A new dictionary with only the given fields. If fields was empty, the same dictionary is returned. """ if len(fields) == 0: return dictionary # for each field, convert it: # ["content.body.thing\.with\.dots"] => [["content", "body", "thing\.with\.dots"]] split_fields = [_split_field(f) for f in fields] output: JsonDict = {} for field_array in split_fields: _copy_field(dictionary, output, field_array) return output def format_event_raw(d: JsonDict) -> JsonDict: return d def format_event_for_client_v1(d: JsonDict) -> JsonDict: d = format_event_for_client_v2(d) sender = d.get("sender") if sender is not None: d["user_id"] = sender copy_keys = ( "age", "redacted_because", "replaces_state", "prev_content", "invite_room_state", "knock_room_state", ) for key in copy_keys: if key in d["unsigned"]: d[key] = d["unsigned"][key] return d def format_event_for_client_v2(d: JsonDict) -> JsonDict: drop_keys = ( "auth_events", "prev_events", "hashes", "signatures", "depth", "origin", "prev_state", ) for key in drop_keys: d.pop(key, None) return d def format_event_for_client_v2_without_room_id(d: JsonDict) -> JsonDict: d = format_event_for_client_v2(d) d.pop("room_id", None) return d @attr.s(slots=True, frozen=True, auto_attribs=True) class SerializeEventConfig: as_client_event: bool = True # Function to convert from federation format to client format event_format: Callable[[JsonDict], JsonDict] = format_event_for_client_v1 # The entity that requested the event. This is used to determine whether to include # the transaction_id in the unsigned section of the event. requester: Optional[Requester] = None # List of event fields to include. If empty, all fields will be returned. only_event_fields: Optional[List[str]] = None # Some events can have stripped room state stored in the `unsigned` field. # This is required for invite and knock functionality. If this option is # False, that state will be removed from the event before it is returned. # Otherwise, it will be kept. include_stripped_room_state: bool = False _DEFAULT_SERIALIZE_EVENT_CONFIG = SerializeEventConfig() def serialize_event( e: Union[JsonDict, EventBase], time_now_ms: int, *, config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG, ) -> JsonDict: """Serialize event for clients Args: e time_now_ms config: Event serialization config Returns: The serialized event dictionary. """ # FIXME(erikj): To handle the case of presence events and the like if not isinstance(e, EventBase): return e time_now_ms = int(time_now_ms) # Should this strip out None's? d = dict(e.get_dict().items()) d["event_id"] = e.event_id if "age_ts" in d["unsigned"]: d["unsigned"]["age"] = time_now_ms - d["unsigned"]["age_ts"] del d["unsigned"]["age_ts"] if "redacted_because" in e.unsigned: d["unsigned"]["redacted_because"] = serialize_event( e.unsigned["redacted_because"], time_now_ms, config=config, ) # If we have a txn_id saved in the internal_metadata, we should include it in the # unsigned section of the event if it was sent by the same session as the one # requesting the event. txn_id: Optional[str] = getattr(e.internal_metadata, "txn_id", None) if ( txn_id is not None and config.requester is not None and config.requester.user.to_string() == e.sender ): # Some events do not have the device ID stored in the internal metadata, # this includes old events as well as those created by appservice, guests, # or with tokens minted with the admin API. For those events, fallback # to using the access token instead. event_device_id: Optional[str] = getattr(e.internal_metadata, "device_id", None) if event_device_id is not None: if event_device_id == config.requester.device_id: d["unsigned"]["transaction_id"] = txn_id else: # Fallback behaviour: only include the transaction ID if the event # was sent from the same access token. # # For regular users, the access token ID can be used to determine this. # This includes access tokens minted with the admin API. # # For guests and appservice users, we can't check the access token ID # so assume it is the same session. event_token_id: Optional[int] = getattr( e.internal_metadata, "token_id", None ) if ( ( event_token_id is not None and config.requester.access_token_id is not None and event_token_id == config.requester.access_token_id ) or config.requester.is_guest or config.requester.app_service ): d["unsigned"]["transaction_id"] = txn_id # invite_room_state and knock_room_state are a list of stripped room state events # that are meant to provide metadata about a room to an invitee/knocker. They are # intended to only be included in specific circumstances, such as down sync, and # should not be included in any other case. if not config.include_stripped_room_state: d["unsigned"].pop("invite_room_state", None) d["unsigned"].pop("knock_room_state", None) if config.as_client_event: d = config.event_format(d) # If the event is a redaction, the field with the redacted event ID appears # in a different location depending on the room version. e.redacts handles # fetching from the proper location; copy it to the other location for forwards- # and backwards-compatibility with clients. if e.type == EventTypes.Redaction and e.redacts is not None: if e.room_version.updated_redaction_rules: d["redacts"] = e.redacts else: d["content"] = dict(d["content"]) d["content"]["redacts"] = e.redacts only_event_fields = config.only_event_fields if only_event_fields: if not isinstance(only_event_fields, list) or not all( isinstance(f, str) for f in only_event_fields ): raise TypeError("only_event_fields must be a list of strings") d = only_fields(d, only_event_fields) return d class EventClientSerializer: """Serializes events that are to be sent to clients. This is used for bundling extra information with any events to be sent to clients. """ def __init__(self, hs: "HomeServer") -> None: self._store = hs.get_datastores().main self._add_extra_fields_to_unsigned_client_event_callbacks: List[ ADD_EXTRA_FIELDS_TO_UNSIGNED_CLIENT_EVENT_CALLBACK ] = [] async def serialize_event( self, event: Union[JsonDict, EventBase], time_now: int, *, config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG, bundle_aggregations: Optional[Dict[str, "BundledAggregations"]] = None, ) -> JsonDict: """Serializes a single event. Args: event: The event being serialized. time_now: The current time in milliseconds config: Event serialization config bundle_aggregations: A map from event_id to the aggregations to be bundled into the event. Returns: The serialized event """ # To handle the case of presence events and the like if not isinstance(event, EventBase): return event serialized_event = serialize_event(event, time_now, config=config) new_unsigned = {} for callback in self._add_extra_fields_to_unsigned_client_event_callbacks: u = await callback(event) new_unsigned.update(u) if new_unsigned: # We do the `update` this way round so that modules can't clobber # existing fields. new_unsigned.update(serialized_event["unsigned"]) serialized_event["unsigned"] = new_unsigned # Check if there are any bundled aggregations to include with the event. if bundle_aggregations: if event.event_id in bundle_aggregations: await self._inject_bundled_aggregations( event, time_now, config, bundle_aggregations, serialized_event, ) return serialized_event async def _inject_bundled_aggregations( self, event: EventBase, time_now: int, config: SerializeEventConfig, bundled_aggregations: Dict[str, "BundledAggregations"], serialized_event: JsonDict, ) -> None: """Potentially injects bundled aggregations into the unsigned portion of the serialized event. Args: event: The event being serialized. time_now: The current time in milliseconds config: Event serialization config bundled_aggregations: Bundled aggregations to be injected. A map from event_id to aggregation data. Must contain at least an entry for `event`. While serializing the bundled aggregations this map may be searched again for additional events in a recursive manner. serialized_event: The serialized event which may be modified. """ # We have already checked that aggregations exist for this event. event_aggregations = bundled_aggregations[event.event_id] # The JSON dictionary to be added under the unsigned property of the event # being serialized. serialized_aggregations = {} if event_aggregations.references: serialized_aggregations[ RelationTypes.REFERENCE ] = event_aggregations.references if event_aggregations.replace: # Include information about it in the relations dict. # # Matrix spec v1.5 (https://spec.matrix.org/v1.5/client-server-api/#server-side-aggregation-of-mreplace-relationships) # said that we should only include the `event_id`, `origin_server_ts` and # `sender` of the edit; however MSC3925 proposes extending it to the whole # of the edit, which is what we do here. serialized_aggregations[RelationTypes.REPLACE] = await self.serialize_event( event_aggregations.replace, time_now, config=config, ) # Include any threaded replies to this event. if event_aggregations.thread: thread = event_aggregations.thread serialized_latest_event = await self.serialize_event( thread.latest_event, time_now, config=config, bundle_aggregations=bundled_aggregations, ) thread_summary = { "latest_event": serialized_latest_event, "count": thread.count, "current_user_participated": thread.current_user_participated, } serialized_aggregations[RelationTypes.THREAD] = thread_summary # Include the bundled aggregations in the event. if serialized_aggregations: # There is likely already an "unsigned" field, but a filter might # have stripped it off (via the event_fields option). The server is # allowed to return additional fields, so add it back. serialized_event.setdefault("unsigned", {}).setdefault( "m.relations", {} ).update(serialized_aggregations) async def serialize_events( self, events: Iterable[Union[JsonDict, EventBase]], time_now: int, *, config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG, bundle_aggregations: Optional[Dict[str, "BundledAggregations"]] = None, ) -> List[JsonDict]: """Serializes multiple events. Args: event time_now: The current time in milliseconds config: Event serialization config bundle_aggregations: Whether to include the bundled aggregations for this event. Only applies to non-state events. (State events never include bundled aggregations.) Returns: The list of serialized events """ return [ await self.serialize_event( event, time_now, config=config, bundle_aggregations=bundle_aggregations, ) for event in events ] def register_add_extra_fields_to_unsigned_client_event_callback( self, callback: ADD_EXTRA_FIELDS_TO_UNSIGNED_CLIENT_EVENT_CALLBACK ) -> None: """Register a callback that returns additions to the unsigned section of serialized events. """ self._add_extra_fields_to_unsigned_client_event_callbacks.append(callback) _PowerLevel = Union[str, int] PowerLevelsContent = Mapping[str, Union[_PowerLevel, Mapping[str, _PowerLevel]]] def copy_and_fixup_power_levels_contents( old_power_levels: PowerLevelsContent, ) -> Dict[str, Union[int, Dict[str, int]]]: """Copy the content of a power_levels event, unfreezing immutabledicts along the way. We accept as input power level values which are strings, provided they represent an integer, e.g. `"`100"` instead of 100. Such strings are converted to integers in the returned dictionary (hence "fixup" in the function name). Note that future room versions will outlaw such stringy power levels (see https://github.com/matrix-org/matrix-spec/issues/853). Raises: TypeError if the input does not look like a valid power levels event content """ if not isinstance(old_power_levels, collections.abc.Mapping): raise TypeError("Not a valid power-levels content: %r" % (old_power_levels,)) power_levels: Dict[str, Union[int, Dict[str, int]]] = {} for k, v in old_power_levels.items(): if isinstance(v, collections.abc.Mapping): h: Dict[str, int] = {} power_levels[k] = h for k1, v1 in v.items(): _copy_power_level_value_as_integer(v1, h, k1) else: _copy_power_level_value_as_integer(v, power_levels, k) return power_levels def _copy_power_level_value_as_integer( old_value: object, power_levels: MutableMapping[str, Any], key: str, ) -> None: """Set `power_levels[key]` to the integer represented by `old_value`. :raises TypeError: if `old_value` is neither an integer nor a base-10 string representation of an integer. """ if type(old_value) is int: # noqa: E721 power_levels[key] = old_value return if isinstance(old_value, str): try: parsed_value = int(old_value, base=10) except ValueError: # Fall through to the final TypeError. pass else: power_levels[key] = parsed_value return raise TypeError(f"Invalid power_levels value for {key}: {old_value}") def validate_canonicaljson(value: Any) -> None: """ Ensure that the JSON object is valid according to the rules of canonical JSON. See the appendix section 3.1: Canonical JSON. This rejects JSON that has: * An integer outside the range of [-2 ^ 53 + 1, 2 ^ 53 - 1] * Floats * NaN, Infinity, -Infinity """ if type(value) is int: # noqa: E721 if value < CANONICALJSON_MIN_INT or CANONICALJSON_MAX_INT < value: raise SynapseError(400, "JSON integer out of range", Codes.BAD_JSON) elif isinstance(value, float): # Note that Infinity, -Infinity, and NaN are also considered floats. raise SynapseError(400, "Bad JSON value: float", Codes.BAD_JSON) elif isinstance(value, collections.abc.Mapping): for v in value.values(): validate_canonicaljson(v) elif isinstance(value, (list, tuple)): for i in value: validate_canonicaljson(i) elif not isinstance(value, (bool, str)) and value is not None: # Other potential JSON values (bool, None, str) are safe. raise SynapseError(400, "Unknown JSON value", Codes.BAD_JSON) def maybe_upsert_event_field( event: EventBase, container: JsonDict, key: str, value: object ) -> bool: """Upsert an event field, but only if this doesn't make the event too large. Returns true iff the upsert took place. """ if key in container: old_value: object = container[key] container[key] = value # NB: here and below, we assume that passing a non-None `time_now` argument to # get_pdu_json doesn't increase the size of the encoded result. upsert_okay = len(encode_canonical_json(event.get_pdu_json())) <= MAX_PDU_SIZE if not upsert_okay: container[key] = old_value else: container[key] = value upsert_okay = len(encode_canonical_json(event.get_pdu_json())) <= MAX_PDU_SIZE if not upsert_okay: del container[key] return upsert_okay synapse-1.100.0/synapse/events/validator.py000066400000000000000000000261621455622526000206760ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import collections.abc from typing import TYPE_CHECKING, List, Type, Union, cast import jsonschema from synapse._pydantic_compat import HAS_PYDANTIC_V2 if TYPE_CHECKING or HAS_PYDANTIC_V2: from pydantic.v1 import Field, StrictBool, StrictStr else: from pydantic import Field, StrictBool, StrictStr from synapse.api.constants import ( MAX_ALIAS_LENGTH, EventContentFields, EventTypes, Membership, ) from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import EventFormatVersions from synapse.config.homeserver import HomeServerConfig from synapse.events import EventBase from synapse.events.builder import EventBuilder from synapse.events.utils import ( CANONICALJSON_MAX_INT, CANONICALJSON_MIN_INT, validate_canonicaljson, ) from synapse.http.servlet import validate_json_object from synapse.rest.models import RequestBodyModel from synapse.storage.controllers.state import server_acl_evaluator_from_event from synapse.types import EventID, JsonDict, RoomID, StrCollection, UserID class EventValidator: def validate_new(self, event: EventBase, config: HomeServerConfig) -> None: """Validates the event has roughly the right format Suitable for checking a locally-created event. It has stricter checks than is appropriate for an event received over federation (for which, see event_auth.validate_event_for_room_version) Args: event: The event to validate. config: The homeserver's configuration. """ self.validate_builder(event) if event.format_version == EventFormatVersions.ROOM_V1_V2: EventID.from_string(event.event_id) required = [ "auth_events", "content", "hashes", "origin", "prev_events", "sender", "type", ] for k in required: if k not in event: raise SynapseError(400, "Event does not have key %s" % (k,)) # Check that the following keys have string values event_strings = ["origin"] for s in event_strings: if not isinstance(getattr(event, s), str): raise SynapseError(400, "'%s' not a string type" % (s,)) # Depending on the room version, ensure the data is spec compliant JSON. if event.room_version.strict_canonicaljson: # Note that only the client controlled portion of the event is # checked, since we trust the portions of the event we created. validate_canonicaljson(event.content) if event.type == EventTypes.Aliases: if "aliases" in event.content: for alias in event.content["aliases"]: if len(alias) > MAX_ALIAS_LENGTH: raise SynapseError( 400, ( "Can't create aliases longer than" " %d characters" % (MAX_ALIAS_LENGTH,) ), Codes.INVALID_PARAM, ) elif event.type == EventTypes.Retention: self._validate_retention(event) elif event.type == EventTypes.ServerACL: server_acl_evaluator = server_acl_evaluator_from_event(event) if not server_acl_evaluator.server_matches_acl_event( config.server.server_name ): raise SynapseError( 400, "Can't create an ACL event that denies the local server" ) elif event.type == EventTypes.PowerLevels: try: jsonschema.validate( instance=event.content, schema=POWER_LEVELS_SCHEMA, cls=POWER_LEVELS_VALIDATOR, ) except jsonschema.ValidationError as e: if e.path: # example: "users_default": '0' is not of type 'integer' # cast safety: path entries can be integers, if we fail to validate # items in an array. However, the POWER_LEVELS_SCHEMA doesn't expect # to see any arrays. message = ( '"' + cast(str, e.path[-1]) + '": ' + e.message # noqa: B306 ) # jsonschema.ValidationError.message is a valid attribute else: # example: '0' is not of type 'integer' message = e.message # noqa: B306 # jsonschema.ValidationError.message is a valid attribute raise SynapseError( code=400, msg=message, errcode=Codes.BAD_JSON, ) # If the event contains a mentions key, validate it. if EventContentFields.MENTIONS in event.content: validate_json_object(event.content[EventContentFields.MENTIONS], Mentions) def _validate_retention(self, event: EventBase) -> None: """Checks that an event that defines the retention policy for a room respects the format enforced by the spec. Args: event: The event to validate. """ if not event.is_state(): raise SynapseError(code=400, msg="must be a state event") min_lifetime = event.content.get("min_lifetime") max_lifetime = event.content.get("max_lifetime") if min_lifetime is not None: if type(min_lifetime) is not int: # noqa: E721 raise SynapseError( code=400, msg="'min_lifetime' must be an integer", errcode=Codes.BAD_JSON, ) if max_lifetime is not None: if type(max_lifetime) is not int: # noqa: E721 raise SynapseError( code=400, msg="'max_lifetime' must be an integer", errcode=Codes.BAD_JSON, ) if ( min_lifetime is not None and max_lifetime is not None and min_lifetime > max_lifetime ): raise SynapseError( code=400, msg="'min_lifetime' can't be greater than 'max_lifetime", errcode=Codes.BAD_JSON, ) def validate_builder(self, event: Union[EventBase, EventBuilder]) -> None: """Validates that the builder/event has roughly the right format. Only checks values that we expect a proto event to have, rather than all the fields an event would have """ strings = ["room_id", "sender", "type"] if hasattr(event, "state_key"): strings.append("state_key") for s in strings: if not isinstance(getattr(event, s), str): raise SynapseError(400, "Not '%s' a string type" % (s,)) RoomID.from_string(event.room_id) UserID.from_string(event.sender) if event.type == EventTypes.Message: strings = ["body", "msgtype"] self._ensure_strings(event.content, strings) elif event.type == EventTypes.Topic: self._ensure_strings(event.content, ["topic"]) self._ensure_state_event(event) elif event.type == EventTypes.Name: self._ensure_strings(event.content, ["name"]) self._ensure_state_event(event) elif event.type == EventTypes.Member: if "membership" not in event.content: raise SynapseError(400, "Content has not membership key") if event.content["membership"] not in Membership.LIST: raise SynapseError(400, "Invalid membership key") self._ensure_state_event(event) elif event.type == EventTypes.Tombstone: if "replacement_room" not in event.content: raise SynapseError(400, "Content has no replacement_room key") if event.content["replacement_room"] == event.room_id: raise SynapseError( 400, "Tombstone cannot reference the room it was sent in" ) self._ensure_state_event(event) def _ensure_strings(self, d: JsonDict, keys: StrCollection) -> None: for s in keys: if s not in d: raise SynapseError(400, "'%s' not in content" % (s,)) if not isinstance(d[s], str): raise SynapseError(400, "'%s' not a string type" % (s,)) def _ensure_state_event(self, event: Union[EventBase, EventBuilder]) -> None: if not event.is_state(): raise SynapseError(400, "'%s' must be state events" % (event.type,)) POWER_LEVELS_SCHEMA = { "type": "object", "properties": { "ban": {"$ref": "#/definitions/int"}, "events": {"$ref": "#/definitions/objectOfInts"}, "events_default": {"$ref": "#/definitions/int"}, "invite": {"$ref": "#/definitions/int"}, "kick": {"$ref": "#/definitions/int"}, "notifications": {"$ref": "#/definitions/objectOfInts"}, "redact": {"$ref": "#/definitions/int"}, "state_default": {"$ref": "#/definitions/int"}, "users": {"$ref": "#/definitions/objectOfInts"}, "users_default": {"$ref": "#/definitions/int"}, }, "definitions": { "int": { "type": "integer", "minimum": CANONICALJSON_MIN_INT, "maximum": CANONICALJSON_MAX_INT, }, "objectOfInts": { "type": "object", "additionalProperties": {"$ref": "#/definitions/int"}, }, }, } class Mentions(RequestBodyModel): user_ids: List[StrictStr] = Field(default_factory=list) room: StrictBool = False # This could return something newer than Draft 7, but that's the current "latest" # validator. def _create_validator(schema: JsonDict) -> Type[jsonschema.Draft7Validator]: validator = jsonschema.validators.validator_for(schema) # by default jsonschema does not consider a immutabledict to be an object so # we need to use a custom type checker # https://python-jsonschema.readthedocs.io/en/stable/validate/?highlight=object#validating-with-additional-types type_checker = validator.TYPE_CHECKER.redefine( "object", lambda checker, thing: isinstance(thing, collections.abc.Mapping) ) return jsonschema.validators.extend(validator, type_checker=type_checker) POWER_LEVELS_VALIDATOR = _create_validator(POWER_LEVELS_SCHEMA) synapse-1.100.0/synapse/federation/000077500000000000000000000000001455622526000171445ustar00rootroot00000000000000synapse-1.100.0/synapse/federation/__init__.py000066400000000000000000000014101455622526000212510ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ This package includes all the federation specific logic. """ synapse-1.100.0/synapse/federation/federation_base.py000066400000000000000000000307001455622526000226300ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Awaitable, Callable, Optional from synapse.api.constants import MAX_DEPTH, EventContentFields, EventTypes, Membership from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import EventFormatVersions, RoomVersion from synapse.crypto.event_signing import check_event_content_hash from synapse.crypto.keyring import Keyring from synapse.events import EventBase, make_event_from_dict from synapse.events.utils import prune_event, validate_canonicaljson from synapse.http.servlet import assert_params_in_dict from synapse.logging.opentracing import log_kv, trace from synapse.types import JsonDict, get_domain_from_id if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class InvalidEventSignatureError(RuntimeError): """Raised when the signature on an event is invalid. The stringification of this exception is just the error message without reference to the event id. The event id is available as a property. """ def __init__(self, message: str, event_id: str): super().__init__(message) self.event_id = event_id class FederationBase: def __init__(self, hs: "HomeServer"): self.hs = hs self._is_mine_server_name = hs.is_mine_server_name self.keyring = hs.get_keyring() self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self.store = hs.get_datastores().main self._clock = hs.get_clock() self._storage_controllers = hs.get_storage_controllers() @trace async def _check_sigs_and_hash( self, room_version: RoomVersion, pdu: EventBase, record_failure_callback: Optional[ Callable[[EventBase, str], Awaitable[None]] ] = None, ) -> EventBase: """Checks that event is correctly signed by the sending server. Also checks the content hash, and redacts the event if there is a mismatch. Also runs the event through the spam checker; if it fails, redacts the event and flags it as soft-failed. Args: room_version: The room version of the PDU pdu: the event to be checked record_failure_callback: A callback to run whenever the given event fails signature or hash checks. This includes exceptions that would be normally be thrown/raised but also things like checking for event tampering where we just return the redacted event. Returns: * the original event if the checks pass * a redacted version of the event (if the signature matched but the hash did not). In this case a warning will be logged. Raises: InvalidEventSignatureError if the signature check failed. Nothing will be logged in this case. """ try: await _check_sigs_on_pdu(self.keyring, room_version, pdu) except InvalidEventSignatureError as exc: if record_failure_callback: await record_failure_callback(pdu, str(exc)) raise exc if not check_event_content_hash(pdu): # let's try to distinguish between failures because the event was # redacted (which are somewhat expected) vs actual ball-tampering # incidents. # # This is just a heuristic, so we just assume that if the keys are # about the same between the redacted and received events, then the # received event was probably a redacted copy (but we then use our # *actual* redacted copy to be on the safe side.) redacted_event = prune_event(pdu) if set(redacted_event.keys()) == set(pdu.keys()) and set( redacted_event.content.keys() ) == set(pdu.content.keys()): logger.debug( "Event %s seems to have been redacted; using our redacted copy", pdu.event_id, ) log_kv( { "message": "Event seems to have been redacted; using our redacted copy", "event_id": pdu.event_id, } ) else: logger.warning( "Event %s content has been tampered, redacting", pdu.event_id, ) log_kv( { "message": "Event content has been tampered, redacting", "event_id": pdu.event_id, } ) if record_failure_callback: await record_failure_callback( pdu, "Event content has been tampered with" ) return redacted_event spam_check = await self._spam_checker_module_callbacks.check_event_for_spam(pdu) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: logger.warning("Event contains spam, soft-failing %s", pdu.event_id) log_kv( { "message": "Event contains spam, redacting (to save disk space) " "as well as soft-failing (to stop using the event in prev_events)", "event_id": pdu.event_id, } ) # we redact (to save disk space) as well as soft-failing (to stop # using the event in prev_events). redacted_event = prune_event(pdu) redacted_event.internal_metadata.soft_failed = True return redacted_event return pdu @trace async def _check_sigs_on_pdu( keyring: Keyring, room_version: RoomVersion, pdu: EventBase ) -> None: """Check that the given events are correctly signed Args: keyring: keyring object to do the checks room_version: the room version of the PDUs pdus: the events to be checked Raises: InvalidEventSignatureError if the event wasn't correctly signed. """ # we want to check that the event is signed by: # # (a) the sender's server # # - except in the case of invites created from a 3pid invite, which are exempt # from this check, because the sender has to match that of the original 3pid # invite, but the event may come from a different HS, for reasons that I don't # entirely grok (why do the senders have to match? and if they do, why doesn't the # joining server ask the inviting server to do the switcheroo with # exchange_third_party_invite?). # # That's pretty awful, since redacting such an invite will render it invalid # (because it will then look like a regular invite without a valid signature), # and signatures are *supposed* to be valid whether or not an event has been # redacted. But this isn't the worst of the ways that 3pid invites are broken. # # (b) for V1 and V2 rooms, the server which created the event_id # # let's start by getting the domain for each pdu, and flattening the event back # to JSON. # First we check that the sender event is signed by the sender's domain # (except if its a 3pid invite, in which case it may be sent by any server) sender_domain = get_domain_from_id(pdu.sender) if not _is_invite_via_3pid(pdu): try: await keyring.verify_event_for_server( sender_domain, pdu, pdu.origin_server_ts if room_version.enforce_key_validity else 0, ) except Exception as e: raise InvalidEventSignatureError( f"unable to verify signature for sender domain {sender_domain}: {e}", pdu.event_id, ) from None # now let's look for events where the sender's domain is different to the # event id's domain (normally only the case for joins/leaves), and add additional # checks. Only do this if the room version has a concept of event ID domain # (ie, the room version uses old-style non-hash event IDs). if room_version.event_format == EventFormatVersions.ROOM_V1_V2: event_domain = get_domain_from_id(pdu.event_id) if event_domain != sender_domain: try: await keyring.verify_event_for_server( event_domain, pdu, pdu.origin_server_ts if room_version.enforce_key_validity else 0, ) except Exception as e: raise InvalidEventSignatureError( f"unable to verify signature for event domain {event_domain}: {e}", pdu.event_id, ) from None # If this is a join event for a restricted room it may have been authorised # via a different server from the sending server. Check those signatures. if ( room_version.restricted_join_rule and pdu.type == EventTypes.Member and pdu.membership == Membership.JOIN and EventContentFields.AUTHORISING_USER in pdu.content ): authorising_server = get_domain_from_id( pdu.content[EventContentFields.AUTHORISING_USER] ) try: await keyring.verify_event_for_server( authorising_server, pdu, pdu.origin_server_ts if room_version.enforce_key_validity else 0, ) except Exception as e: raise InvalidEventSignatureError( f"unable to verify signature for authorising serve {authorising_server}: {e}", pdu.event_id, ) from None def _is_invite_via_3pid(event: EventBase) -> bool: return ( event.type == EventTypes.Member and event.membership == Membership.INVITE and "third_party_invite" in event.content ) def event_from_pdu_json(pdu_json: JsonDict, room_version: RoomVersion) -> EventBase: """Construct an EventBase from an event json received over federation Args: pdu_json: pdu as received over federation room_version: The version of the room this event belongs to Raises: SynapseError: if the pdu is missing required fields or is otherwise not a valid matrix event """ # we could probably enforce a bunch of other fields here (room_id, sender, # origin, etc etc) assert_params_in_dict(pdu_json, ("type", "depth")) # Strip any unauthorized values from "unsigned" if they exist if "unsigned" in pdu_json: _strip_unsigned_values(pdu_json) depth = pdu_json["depth"] if type(depth) is not int: # noqa: E721 raise SynapseError(400, "Depth %r not an intger" % (depth,), Codes.BAD_JSON) if depth < 0: raise SynapseError(400, "Depth too small", Codes.BAD_JSON) elif depth > MAX_DEPTH: raise SynapseError(400, "Depth too large", Codes.BAD_JSON) # Validate that the JSON conforms to the specification. if room_version.strict_canonicaljson: validate_canonicaljson(pdu_json) event = make_event_from_dict(pdu_json, room_version) return event def _strip_unsigned_values(pdu_dict: JsonDict) -> None: """ Strip any unsigned values unless specifically allowed, as defined by the whitelist. pdu: the json dict to strip values from. Note that the dict is mutated by this function """ unsigned = pdu_dict["unsigned"] if not isinstance(unsigned, dict): pdu_dict["unsigned"] = {} if pdu_dict["type"] == "m.room.member": whitelist = ["knock_room_state", "invite_room_state", "age"] else: whitelist = ["age"] filtered_unsigned = {k: v for k, v in unsigned.items() if k in whitelist} pdu_dict["unsigned"] = filtered_unsigned synapse-1.100.0/synapse/federation/federation_client.py000066400000000000000000002172561455622526000232110ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 Sorunome # Copyright 2015-2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import copy import itertools import logging from typing import ( TYPE_CHECKING, AbstractSet, Awaitable, BinaryIO, Callable, Collection, Container, Dict, Iterable, List, Mapping, Optional, Sequence, Tuple, TypeVar, Union, ) import attr from prometheus_client import Counter from synapse.api.constants import Direction, EventContentFields, EventTypes, Membership from synapse.api.errors import ( CodeMessageException, Codes, FederationDeniedError, HttpResponseException, RequestSendFailed, SynapseError, UnsupportedRoomVersionError, ) from synapse.api.room_versions import ( KNOWN_ROOM_VERSIONS, EventFormatVersions, RoomVersion, RoomVersions, ) from synapse.events import EventBase, builder, make_event_from_dict from synapse.federation.federation_base import ( FederationBase, InvalidEventSignatureError, event_from_pdu_json, ) from synapse.federation.transport.client import SendJoinResponse from synapse.http.client import is_unknown_endpoint from synapse.http.types import QueryParams from synapse.logging.opentracing import SynapseTags, log_kv, set_tag, tag_args, trace from synapse.types import JsonDict, StrCollection, UserID, get_domain_from_id from synapse.util.async_helpers import concurrently_execute from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.retryutils import NotRetryingDestination if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) sent_queries_counter = Counter("synapse_federation_client_sent_queries", "", ["type"]) PDU_RETRY_TIME_MS = 1 * 60 * 1000 T = TypeVar("T") @attr.s(frozen=True, slots=True, auto_attribs=True) class PulledPduInfo: """ A result object that stores the PDU and info about it like which homeserver we pulled it from (`pull_origin`) """ pdu: EventBase # Which homeserver we pulled the PDU from pull_origin: str class InvalidResponseError(RuntimeError): """Helper for _try_destination_list: indicates that the server returned a response we couldn't parse """ @attr.s(slots=True, frozen=True, auto_attribs=True) class SendJoinResult: # The event to persist. event: EventBase # A string giving the server the event was sent to. origin: str state: List[EventBase] auth_chain: List[EventBase] # True if 'state' elides non-critical membership events partial_state: bool # If 'partial_state' is set, a set of the servers in the room (otherwise empty). # Always contains the server we joined off. servers_in_room: AbstractSet[str] class FederationClient(FederationBase): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.pdu_destination_tried: Dict[str, Dict[str, int]] = {} self._clock.looping_call(self._clear_tried_cache, 60 * 1000) self.state = hs.get_state_handler() self.transport_layer = hs.get_federation_transport_client() self.hostname = hs.hostname self.signing_key = hs.signing_key # Cache mapping `event_id` to a tuple of the event itself and the `pull_origin` # (which server we pulled the event from) self._get_pdu_cache: ExpiringCache[str, Tuple[EventBase, str]] = ExpiringCache( cache_name="get_pdu_cache", clock=self._clock, max_len=1000, expiry_ms=120 * 1000, reset_expiry_on_get=False, ) # A cache for fetching the room hierarchy over federation. # # Some stale data over federation is OK, but must be refreshed # periodically since the local server is in the room. # # It is a map of (room ID, suggested-only) -> the response of # get_room_hierarchy. self._get_room_hierarchy_cache: ExpiringCache[ Tuple[str, bool], Tuple[JsonDict, Sequence[JsonDict], Sequence[JsonDict], Sequence[str]], ] = ExpiringCache( cache_name="get_room_hierarchy_cache", clock=self._clock, max_len=1000, expiry_ms=5 * 60 * 1000, reset_expiry_on_get=False, ) def _clear_tried_cache(self) -> None: """Clear pdu_destination_tried cache""" now = self._clock.time_msec() old_dict = self.pdu_destination_tried self.pdu_destination_tried = {} for event_id, destination_dict in old_dict.items(): destination_dict = { dest: time for dest, time in destination_dict.items() if time + PDU_RETRY_TIME_MS > now } if destination_dict: self.pdu_destination_tried[event_id] = destination_dict async def make_query( self, destination: str, query_type: str, args: QueryParams, retry_on_dns_fail: bool = False, ignore_backoff: bool = False, ) -> JsonDict: """Sends a federation Query to a remote homeserver of the given type and arguments. Args: destination: Domain name of the remote homeserver query_type: Category of the query type; should match the handler name used in register_query_handler(). args: Mapping of strings to strings containing the details of the query request. ignore_backoff: true to ignore the historical backoff data and try the request anyway. Returns: The JSON object from the response """ sent_queries_counter.labels(query_type).inc() return await self.transport_layer.make_query( destination, query_type, args, retry_on_dns_fail=retry_on_dns_fail, ignore_backoff=ignore_backoff, ) async def query_client_keys( self, destination: str, content: JsonDict, timeout: int ) -> JsonDict: """Query device keys for a device hosted on a remote server. Args: destination: Domain name of the remote homeserver content: The query content. Returns: The JSON object from the response """ sent_queries_counter.labels("client_device_keys").inc() return await self.transport_layer.query_client_keys( destination, content, timeout ) async def query_user_devices( self, destination: str, user_id: str, timeout: int = 30000 ) -> JsonDict: """Query the device keys for a list of user ids hosted on a remote server. """ sent_queries_counter.labels("user_devices").inc() return await self.transport_layer.query_user_devices( destination, user_id, timeout ) async def claim_client_keys( self, user: UserID, destination: str, query: Dict[str, Dict[str, Dict[str, int]]], timeout: Optional[int], ) -> JsonDict: """Claims one-time keys for a device hosted on a remote server. Args: user: The user id of the requesting user destination: Domain name of the remote homeserver content: The query content. Returns: The JSON object from the response """ sent_queries_counter.labels("client_one_time_keys").inc() # Convert the query with counts into a stable and unstable query and check # if attempting to claim more than 1 OTK. content: Dict[str, Dict[str, str]] = {} unstable_content: Dict[str, Dict[str, List[str]]] = {} use_unstable = False for user_id, one_time_keys in query.items(): for device_id, algorithms in one_time_keys.items(): # If more than one algorithm is requested, attempt to use the unstable # endpoint. if sum(algorithms.values()) > 1: use_unstable = True if algorithms: # For the stable query, choose only the first algorithm. content.setdefault(user_id, {})[device_id] = next(iter(algorithms)) # For the unstable query, repeat each algorithm by count, then # splat those into chain to get a flattened list of all algorithms. # # Converts from {"algo1": 2, "algo2": 2} to ["algo1", "algo1", "algo2"]. unstable_content.setdefault(user_id, {})[device_id] = list( itertools.chain( *( itertools.repeat(algorithm, count) for algorithm, count in algorithms.items() ) ) ) if use_unstable: try: return await self.transport_layer.claim_client_keys_unstable( user, destination, unstable_content, timeout ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the v1 endpoint. Otherwise, consider it a legitimate error # and raise. if not is_unknown_endpoint(e): raise logger.debug( "Couldn't claim client keys with the unstable API, falling back to the v1 API" ) else: logger.debug("Skipping unstable claim client keys API") # TODO Potentially attempt multiple queries and combine the results? return await self.transport_layer.claim_client_keys( user, destination, content, timeout ) @trace @tag_args async def backfill( self, dest: str, room_id: str, limit: int, extremities: Collection[str] ) -> Optional[List[EventBase]]: """Requests some more historic PDUs for the given room from the given destination server. Args: dest: The remote homeserver to ask. room_id: The room_id to backfill. limit: The maximum number of events to return. extremities: our current backwards extremities, to backfill from Must be a Collection that is falsy when empty. (Iterable is not enough here!) """ logger.debug("backfill extrem=%s", extremities) # If there are no extremities then we've (probably) reached the start. if not extremities: return None transaction_data = await self.transport_layer.backfill( dest, room_id, extremities, limit ) logger.debug("backfill transaction_data=%r", transaction_data) if not isinstance(transaction_data, dict): raise InvalidResponseError("Backfill transaction_data is not a dict.") transaction_data_pdus = transaction_data.get("pdus") if not isinstance(transaction_data_pdus, list): raise InvalidResponseError("transaction_data.pdus is not a list.") room_version = await self.store.get_room_version(room_id) pdus = [event_from_pdu_json(p, room_version) for p in transaction_data_pdus] # Check signatures and hash of pdus, removing any from the list that fail checks pdus[:] = await self._check_sigs_and_hash_for_pulled_events_and_fetch( dest, pdus, room_version=room_version ) return pdus async def get_pdu_from_destination_raw( self, destination: str, event_id: str, room_version: RoomVersion, timeout: Optional[int] = None, ) -> Optional[EventBase]: """Requests the PDU with given origin and ID from the remote home server. Does not have any caching or rate limiting! Args: destination: Which homeserver to query event_id: event to fetch room_version: version of the room timeout: How long to try (in ms) each destination for before moving to the next destination. None indicates no timeout. Returns: A copy of the requested PDU that is safe to modify, or None if we were unable to find it. Raises: SynapseError, NotRetryingDestination, FederationDeniedError """ transaction_data = await self.transport_layer.get_event( destination, event_id, timeout=timeout ) logger.debug( "get_pdu_from_destination_raw: retrieved event id %s from %s: %r", event_id, destination, transaction_data, ) pdu_list: List[EventBase] = [ event_from_pdu_json(p, room_version) for p in transaction_data["pdus"] ] if pdu_list and pdu_list[0]: pdu = pdu_list[0] # Check signatures are correct. try: async def _record_failure_callback( event: EventBase, cause: str ) -> None: await self.store.record_event_failed_pull_attempt( event.room_id, event.event_id, cause ) signed_pdu = await self._check_sigs_and_hash( room_version, pdu, _record_failure_callback ) except InvalidEventSignatureError as e: errmsg = f"event id {pdu.event_id}: {e}" logger.warning("%s", errmsg) raise SynapseError(403, errmsg, Codes.FORBIDDEN) return signed_pdu return None @trace @tag_args async def get_pdu( self, destinations: Collection[str], event_id: str, room_version: RoomVersion, timeout: Optional[int] = None, ) -> Optional[PulledPduInfo]: """Requests the PDU with given origin and ID from the remote home servers. Will attempt to get the PDU from each destination in the list until one succeeds. Args: destinations: Which homeservers to query event_id: event to fetch room_version: version of the room timeout: How long to try (in ms) each destination for before moving to the next destination. None indicates no timeout. Returns: The requested PDU wrapped in `PulledPduInfo`, or None if we were unable to find it. """ logger.debug( "get_pdu(event_id=%s): from destinations=%s", event_id, destinations ) # TODO: Rate limit the number of times we try and get the same event. # We might need the same event multiple times in quick succession (before # it gets persisted to the database), so we cache the results of the lookup. # Note that this is separate to the regular get_event cache which caches # events once they have been persisted. get_pdu_cache_entry = self._get_pdu_cache.get(event_id) event = None pull_origin = None if get_pdu_cache_entry: event, pull_origin = get_pdu_cache_entry # If we don't see the event in the cache, go try to fetch it from the # provided remote federated destinations else: pdu_attempts = self.pdu_destination_tried.setdefault(event_id, {}) # TODO: We can probably refactor this to use `_try_destination_list` for destination in destinations: now = self._clock.time_msec() last_attempt = pdu_attempts.get(destination, 0) if last_attempt + PDU_RETRY_TIME_MS > now: logger.debug( "get_pdu(event_id=%s): skipping destination=%s because we tried it recently last_attempt=%s and we only check every %s (now=%s)", event_id, destination, last_attempt, PDU_RETRY_TIME_MS, now, ) continue try: event = await self.get_pdu_from_destination_raw( destination=destination, event_id=event_id, room_version=room_version, timeout=timeout, ) pull_origin = destination pdu_attempts[destination] = now if event: # Prime the cache self._get_pdu_cache[event.event_id] = (event, pull_origin) # Now that we have an event, we can break out of this # loop and stop asking other destinations. break except NotRetryingDestination as e: logger.info("get_pdu(event_id=%s): %s", event_id, e) continue except FederationDeniedError: logger.info( "get_pdu(event_id=%s): Not attempting to fetch PDU from %s because the homeserver is not on our federation whitelist", event_id, destination, ) continue except SynapseError as e: logger.info( "get_pdu(event_id=%s): Failed to get PDU from %s because %s", event_id, destination, e, ) continue except Exception as e: pdu_attempts[destination] = now logger.info( "get_pdu(event_id=%s): Failed to get PDU from %s because %s", event_id, destination, e, ) continue if not event or not pull_origin: return None # `event` now refers to an object stored in `get_pdu_cache`. Our # callers may need to modify the returned object (eg to set # `event.internal_metadata.outlier = true`), so we return a copy # rather than the original object. event_copy = make_event_from_dict( event.get_pdu_json(), event.room_version, ) return PulledPduInfo(event_copy, pull_origin) @trace @tag_args async def get_room_state_ids( self, destination: str, room_id: str, event_id: str ) -> Tuple[List[str], List[str]]: """Calls the /state_ids endpoint to fetch the state at a particular point in the room, and the auth events for the given event Returns: a tuple of (state event_ids, auth event_ids) Raises: InvalidResponseError: if fields in the response have the wrong type. """ result = await self.transport_layer.get_room_state_ids( destination, room_id, event_id=event_id ) state_event_ids = result["pdu_ids"] auth_event_ids = result.get("auth_chain_ids", []) set_tag( SynapseTags.RESULT_PREFIX + "state_event_ids", str(state_event_ids), ) set_tag( SynapseTags.RESULT_PREFIX + "state_event_ids.length", str(len(state_event_ids)), ) set_tag( SynapseTags.RESULT_PREFIX + "auth_event_ids", str(auth_event_ids), ) set_tag( SynapseTags.RESULT_PREFIX + "auth_event_ids.length", str(len(auth_event_ids)), ) if not isinstance(state_event_ids, list) or not isinstance( auth_event_ids, list ): raise InvalidResponseError("invalid response from /state_ids") return state_event_ids, auth_event_ids @trace @tag_args async def get_room_state( self, destination: str, room_id: str, event_id: str, room_version: RoomVersion, ) -> Tuple[List[EventBase], List[EventBase]]: """Calls the /state endpoint to fetch the state at a particular point in the room. Any invalid events (those with incorrect or unverifiable signatures or hashes) are filtered out from the response, and any duplicate events are removed. (Size limits and other event-format checks are *not* performed.) Note that the result is not ordered, so callers must be careful to process the events in an order that handles dependencies. Returns: a tuple of (state events, auth events) """ result = await self.transport_layer.get_room_state( room_version, destination, room_id, event_id, ) state_events = result.state auth_events = result.auth_events # we may as well filter out any duplicates from the response, to save # processing them multiple times. (In particular, events may be present in # `auth_events` as well as `state`, which is redundant). # # We don't rely on the sort order of the events, so we can just stick them # in a dict. state_event_map = {event.event_id: event for event in state_events} auth_event_map = { event.event_id: event for event in auth_events if event.event_id not in state_event_map } logger.info( "Processing from /state: %d state events, %d auth events", len(state_event_map), len(auth_event_map), ) valid_auth_events = await self._check_sigs_and_hash_for_pulled_events_and_fetch( destination, auth_event_map.values(), room_version ) valid_state_events = ( await self._check_sigs_and_hash_for_pulled_events_and_fetch( destination, state_event_map.values(), room_version ) ) return valid_state_events, valid_auth_events @trace async def _check_sigs_and_hash_for_pulled_events_and_fetch( self, origin: str, pdus: Collection[EventBase], room_version: RoomVersion, ) -> List[EventBase]: """ Checks the signatures and hashes of a list of pulled events we got from federation and records any signature failures as failed pull attempts. If a PDU fails its signature check then we check if we have it in the database, and if not then request it from the sender's server (if that is different from `origin`). If that still fails, the event is omitted from the returned list. If a PDU fails its content hash check then it is redacted. Also runs each event through the spam checker; if it fails, redacts the event and flags it as soft-failed. The given list of PDUs are not modified; instead the function returns a new list. Args: origin: The server that sent us these events pdus: The events to be checked room_version: the version of the room these events are in Returns: A list of PDUs that have valid signatures and hashes. """ set_tag( SynapseTags.RESULT_PREFIX + "pdus.length", str(len(pdus)), ) # We limit how many PDUs we check at once, as if we try to do hundreds # of thousands of PDUs at once we see large memory spikes. valid_pdus: List[EventBase] = [] async def _record_failure_callback(event: EventBase, cause: str) -> None: await self.store.record_event_failed_pull_attempt( event.room_id, event.event_id, cause ) async def _execute(pdu: EventBase) -> None: valid_pdu = await self._check_sigs_and_hash_and_fetch_one( pdu=pdu, origin=origin, room_version=room_version, record_failure_callback=_record_failure_callback, ) if valid_pdu: valid_pdus.append(valid_pdu) await concurrently_execute(_execute, pdus, 10000) return valid_pdus @trace @tag_args async def _check_sigs_and_hash_and_fetch_one( self, pdu: EventBase, origin: str, room_version: RoomVersion, record_failure_callback: Optional[ Callable[[EventBase, str], Awaitable[None]] ] = None, ) -> Optional[EventBase]: """Takes a PDU and checks its signatures and hashes. If the PDU fails its signature check then we check if we have it in the database; if not, we then request it from sender's server (if that is not the same as `origin`). If that still fails, we return None. If the PDU fails its content hash check, it is redacted. Also runs the event through the spam checker; if it fails, redacts the event and flags it as soft-failed. Args: origin pdu room_version record_failure_callback: A callback to run whenever the given event fails signature or hash checks. This includes exceptions that would be normally be thrown/raised but also things like checking for event tampering where we just return the redacted event. Returns: The PDU (possibly redacted) if it has valid signatures and hashes. None if no valid copy could be found. """ try: return await self._check_sigs_and_hash( room_version, pdu, record_failure_callback ) except InvalidEventSignatureError as e: logger.warning( "Signature on retrieved event %s was invalid (%s). " "Checking local store/origin server", pdu.event_id, e, ) log_kv( { "message": "Signature on retrieved event was invalid. " "Checking local store/origin server", "event_id": pdu.event_id, "InvalidEventSignatureError": e, } ) # Check local db. res = await self.store.get_event( pdu.event_id, allow_rejected=True, allow_none=True ) # If the PDU fails its signature check and we don't have it in our # database, we then request it from sender's server (if that is not the # same as `origin`). pdu_origin = get_domain_from_id(pdu.sender) if not res and pdu_origin != origin: try: pulled_pdu_info = await self.get_pdu( destinations=[pdu_origin], event_id=pdu.event_id, room_version=room_version, timeout=10000, ) if pulled_pdu_info is not None: res = pulled_pdu_info.pdu except SynapseError: pass if not res: logger.warning( "Failed to find copy of %s with valid signature", pdu.event_id ) return res async def get_event_auth( self, destination: str, room_id: str, event_id: str ) -> List[EventBase]: res = await self.transport_layer.get_event_auth(destination, room_id, event_id) room_version = await self.store.get_room_version(room_id) auth_chain = [event_from_pdu_json(p, room_version) for p in res["auth_chain"]] signed_auth = await self._check_sigs_and_hash_for_pulled_events_and_fetch( destination, auth_chain, room_version=room_version ) return signed_auth async def _try_destination_list( self, description: str, destinations: Iterable[str], callback: Callable[[str], Awaitable[T]], failover_errcodes: Optional[Container[str]] = None, failover_on_unknown_endpoint: bool = False, ) -> T: """Try an operation on a series of servers, until it succeeds Args: description: description of the operation we're doing, for logging destinations: list of server_names to try callback: Function to run for each server. Passed a single argument: the server_name to try. If the callback raises a CodeMessageException with a 300/400 code or an UnsupportedRoomVersionError, attempts to perform the operation stop immediately and the exception is reraised. Otherwise, if the callback raises an Exception the error is logged and the next server tried. Normally the stacktrace is logged but this is suppressed if the exception is an InvalidResponseError. failover_errcodes: Error codes (specific to this endpoint) which should cause a failover when received as part of an HTTP 400 error. failover_on_unknown_endpoint: if True, we will try other servers if it looks like a server doesn't support the endpoint. This is typically useful if the endpoint in question is new or experimental. Returns: The result of callback, if it succeeds Raises: SynapseError if the chosen remote server returns a 300/400 code, or no servers were reachable. """ if failover_errcodes is None: failover_errcodes = () if not destinations: # Give a bit of a clearer message if no servers were specified at all. raise SynapseError( 502, f"Failed to {description} via any server: No servers specified." ) for destination in destinations: # We don't want to ask our own server for information we don't have if self._is_mine_server_name(destination): continue try: return await callback(destination) except ( RequestSendFailed, InvalidResponseError, ) as e: logger.warning("Failed to %s via %s: %s", description, destination, e) # Skip to the next homeserver in the list to try. continue except NotRetryingDestination as e: logger.info("%s: %s", description, e) continue except FederationDeniedError: logger.info( "%s: Not attempting to %s from %s because the homeserver is not on our federation whitelist", description, description, destination, ) continue except UnsupportedRoomVersionError: raise except HttpResponseException as e: synapse_error = e.to_synapse_error() failover = False # Failover should occur: # # * On internal server errors. # * If the destination responds that it cannot complete the request. # * If the destination doesn't implemented the endpoint for some reason. if 500 <= e.code < 600: failover = True elif 400 <= e.code < 500 and synapse_error.errcode in failover_errcodes: failover = True elif failover_on_unknown_endpoint and is_unknown_endpoint( e, synapse_error ): failover = True if not failover: raise synapse_error from e logger.warning( "Failed to %s via %s: %i %s", description, destination, e.code, e.args[0], ) except Exception: logger.warning( "Failed to %s via %s", description, destination, exc_info=True ) raise SynapseError(502, f"Failed to {description} via any server") async def make_membership_event( self, destinations: Iterable[str], room_id: str, user_id: str, membership: str, content: dict, params: Optional[Mapping[str, Union[str, Iterable[str]]]], ) -> Tuple[str, EventBase, RoomVersion]: """ Creates an m.room.member event, with context, without participating in the room. Does so by asking one of the already participating servers to create an event with proper context. Returns a fully signed and hashed event. Note that this does not append any events to any graphs. Args: destinations: Candidate homeservers which are probably participating in the room. room_id: The room in which the event will happen. user_id: The user whose membership is being evented. membership: The "membership" property of the event. Must be one of "join" or "leave". content: Any additional data to put into the content field of the event. params: Query parameters to include in the request. Returns: `(origin, event, room_version)` where origin is the remote homeserver which generated the event, and room_version is the version of the room. Raises: UnsupportedRoomVersionError: if remote responds with a room version we don't understand. SynapseError: if the chosen remote server returns a 300/400 code, or no servers successfully handle the request. """ valid_memberships = {Membership.JOIN, Membership.LEAVE, Membership.KNOCK} if membership not in valid_memberships: raise RuntimeError( "make_membership_event called with membership='%s', must be one of %s" % (membership, ",".join(valid_memberships)) ) async def send_request(destination: str) -> Tuple[str, EventBase, RoomVersion]: ret = await self.transport_layer.make_membership_event( destination, room_id, user_id, membership, params ) # Note: If not supplied, the room version may be either v1 or v2, # however either way the event format version will be v1. room_version_id = ret.get("room_version", RoomVersions.V1.identifier) room_version = KNOWN_ROOM_VERSIONS.get(room_version_id) if not room_version: raise UnsupportedRoomVersionError() if not room_version.knock_join_rule and membership == Membership.KNOCK: raise SynapseError( 400, "This room version does not support knocking", errcode=Codes.FORBIDDEN, ) pdu_dict = ret.get("event", None) if not isinstance(pdu_dict, dict): raise InvalidResponseError("Bad 'event' field in response") logger.debug("Got response to make_%s: %s", membership, pdu_dict) pdu_dict["content"].update(content) # The protoevent received over the JSON wire may not have all # the required fields. Lets just gloss over that because # there's some we never care about ev = builder.create_local_event_from_event_dict( self._clock, self.hostname, self.signing_key, room_version=room_version, event_dict=pdu_dict, ) return destination, ev, room_version failover_errcodes = {Codes.NOT_FOUND} # MSC3083 defines additional error codes for room joins. Unfortunately # we do not yet know the room version, assume these will only be returned # by valid room versions. if membership == Membership.JOIN: failover_errcodes.add(Codes.UNABLE_AUTHORISE_JOIN) failover_errcodes.add(Codes.UNABLE_TO_GRANT_JOIN) return await self._try_destination_list( "make_" + membership, destinations, send_request, failover_errcodes=failover_errcodes, ) async def send_join( self, destinations: Iterable[str], pdu: EventBase, room_version: RoomVersion, partial_state: bool = True, ) -> SendJoinResult: """Sends a join event to one of a list of homeservers. Doing so will cause the remote server to add the event to the graph, and send the event out to the rest of the federation. Args: destinations: Candidate homeservers which are probably participating in the room. pdu: event to be sent room_version: the version of the room (according to the server that did the make_join) partial_state: whether to ask the remote server to omit membership state events from the response. If the remote server complies, `partial_state` in the send join result will be set. Defaults to `True`. Returns: The result of the send join request. Raises: SynapseError: if the chosen remote server returns a 300/400 code, or no servers successfully handle the request. """ async def send_request(destination: str) -> SendJoinResult: response = await self._do_send_join( room_version, destination, pdu, omit_members=partial_state ) # If an event was returned (and expected to be returned): # # * Ensure it has the same event ID (note that the event ID is a hash # of the event fields for versions which support MSC3083). # * Ensure the signatures are good. # # Otherwise, fallback to the provided event. if room_version.restricted_join_rule and response.event: event = response.event valid_pdu = await self._check_sigs_and_hash_and_fetch_one( pdu=event, origin=destination, room_version=room_version, ) if valid_pdu is None or event.event_id != pdu.event_id: raise InvalidResponseError("Returned an invalid join event") else: event = pdu state = response.state auth_chain = response.auth_events create_event = None for e in state: if (e.type, e.state_key) == (EventTypes.Create, ""): create_event = e break if create_event is None: # If the state doesn't have a create event then the room is # invalid, and it would fail auth checks anyway. raise InvalidResponseError("No create event in state") # the room version should be sane. create_room_version = create_event.content.get( "room_version", RoomVersions.V1.identifier ) if create_room_version != room_version.identifier: # either the server that fulfilled the make_join, or the server that is # handling the send_join, is lying. raise InvalidResponseError( "Unexpected room version %s in create event" % (create_room_version,) ) logger.info( "Processing from send_join %d events", len(state) + len(auth_chain) ) # We now go and check the signatures and hashes for the event. Note # that we limit how many events we process at a time to keep the # memory overhead from exploding. valid_pdus_map: Dict[str, EventBase] = {} async def _execute(pdu: EventBase) -> None: valid_pdu = await self._check_sigs_and_hash_and_fetch_one( pdu=pdu, origin=destination, room_version=room_version, ) if valid_pdu: valid_pdus_map[valid_pdu.event_id] = valid_pdu await concurrently_execute( _execute, itertools.chain(state, auth_chain), 10000 ) # NB: We *need* to copy to ensure that we don't have multiple # references being passed on, as that causes... issues. signed_state = [ copy.copy(valid_pdus_map[p.event_id]) for p in state if p.event_id in valid_pdus_map ] signed_auth = [ valid_pdus_map[p.event_id] for p in auth_chain if p.event_id in valid_pdus_map ] # NB: We *need* to copy to ensure that we don't have multiple # references being passed on, as that causes... issues. for s in signed_state: s.internal_metadata = s.internal_metadata.copy() # double-check that the auth chain doesn't include a different create event auth_chain_create_events = [ e.event_id for e in signed_auth if (e.type, e.state_key) == (EventTypes.Create, "") ] if auth_chain_create_events and auth_chain_create_events != [ create_event.event_id ]: raise InvalidResponseError( "Unexpected create event(s) in auth chain: %s" % (auth_chain_create_events,) ) servers_in_room = None if response.servers_in_room is not None: servers_in_room = set(response.servers_in_room) if response.members_omitted: if not servers_in_room: raise InvalidResponseError( "members_omitted was set, but no servers were listed in the room" ) if not partial_state: raise InvalidResponseError( "members_omitted was set, but we asked for full state" ) # `servers_in_room` is supposed to be a complete list. # Fix things up in case the remote homeserver is badly behaved. servers_in_room.add(destination) return SendJoinResult( event=event, state=signed_state, auth_chain=signed_auth, origin=destination, partial_state=response.members_omitted, servers_in_room=servers_in_room or frozenset(), ) # MSC3083 defines additional error codes for room joins. failover_errcodes = None if room_version.restricted_join_rule: failover_errcodes = ( Codes.UNABLE_AUTHORISE_JOIN, Codes.UNABLE_TO_GRANT_JOIN, ) # If the join is being authorised via allow rules, we need to send # the /send_join back to the same server that was originally used # with /make_join. if EventContentFields.AUTHORISING_USER in pdu.content: destinations = [ get_domain_from_id(pdu.content[EventContentFields.AUTHORISING_USER]) ] return await self._try_destination_list( "send_join", destinations, send_request, failover_errcodes=failover_errcodes ) async def _do_send_join( self, room_version: RoomVersion, destination: str, pdu: EventBase, omit_members: bool, ) -> SendJoinResponse: time_now = self._clock.time_msec() try: return await self.transport_layer.send_join_v2( room_version=room_version, destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), omit_members=omit_members, ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the v1 endpoint. Otherwise, consider it a legitimate error # and raise. if not is_unknown_endpoint(e): raise logger.debug("Couldn't send_join with the v2 API, falling back to the v1 API") return await self.transport_layer.send_join_v1( room_version=room_version, destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) async def send_invite( self, destination: str, room_id: str, event_id: str, pdu: EventBase, ) -> EventBase: room_version = await self.store.get_room_version(room_id) content = await self._do_send_invite(destination, pdu, room_version) pdu_dict = content["event"] logger.debug("Got response to send_invite: %s", pdu_dict) pdu = event_from_pdu_json(pdu_dict, room_version) # Check signatures are correct. try: pdu = await self._check_sigs_and_hash(room_version, pdu) except InvalidEventSignatureError as e: errmsg = f"event id {pdu.event_id}: {e}" logger.warning("%s", errmsg) raise SynapseError(403, errmsg, Codes.FORBIDDEN) # FIXME: We should handle signature failures more gracefully. return pdu async def _do_send_invite( self, destination: str, pdu: EventBase, room_version: RoomVersion ) -> JsonDict: """Actually sends the invite, first trying v2 API and falling back to v1 API if necessary. Returns: The event as a dict as returned by the remote server Raises: SynapseError: if the remote server returns an error or if the server only supports the v1 endpoint and a room version other than "1" or "2" is requested. """ time_now = self._clock.time_msec() try: return await self.transport_layer.send_invite_v2( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content={ "event": pdu.get_pdu_json(time_now), "room_version": room_version.identifier, "invite_room_state": pdu.unsigned.get("invite_room_state", []), }, ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the v1 endpoint if the room uses old-style event IDs. # Otherwise, consider it a legitimate error and raise. err = e.to_synapse_error() if is_unknown_endpoint(e, err): if room_version.event_format != EventFormatVersions.ROOM_V1_V2: raise SynapseError( 400, "User's homeserver does not support this room version", Codes.UNSUPPORTED_ROOM_VERSION, ) else: raise err # Didn't work, try v1 API. # Note the v1 API returns a tuple of `(200, content)` _, content = await self.transport_layer.send_invite_v1( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) return content async def send_leave(self, destinations: Iterable[str], pdu: EventBase) -> None: """Sends a leave event to one of a list of homeservers. Doing so will cause the remote server to add the event to the graph, and send the event out to the rest of the federation. This is mostly useful to reject received invites. Args: destinations: Candidate homeservers which are probably participating in the room. pdu: event to be sent Raises: SynapseError: if the chosen remote server returns a 300/400 code, or no servers successfully handle the request. """ async def send_request(destination: str) -> None: content = await self._do_send_leave(destination, pdu) logger.debug("Got content: %s", content) return await self._try_destination_list( "send_leave", destinations, send_request ) async def _do_send_leave(self, destination: str, pdu: EventBase) -> JsonDict: time_now = self._clock.time_msec() try: return await self.transport_layer.send_leave_v2( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the v1 endpoint. Otherwise, consider it a legitimate error # and raise. if not is_unknown_endpoint(e): raise logger.debug("Couldn't send_leave with the v2 API, falling back to the v1 API") resp = await self.transport_layer.send_leave_v1( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) # We expect the v1 API to respond with [200, content], so we only return the # content. return resp[1] async def send_knock(self, destinations: List[str], pdu: EventBase) -> JsonDict: """Attempts to send a knock event to a given list of servers. Iterates through the list until one attempt succeeds. Doing so will cause the remote server to add the event to the graph, and send the event out to the rest of the federation. Args: destinations: A list of candidate homeservers which are likely to be participating in the room. pdu: The event to be sent. Returns: The remote homeserver return some state from the room. The response dictionary is in the form: {"knock_room_state": [, ...]} The list of state events may be empty. Raises: SynapseError: If the chosen remote server returns a 3xx/4xx code. RuntimeError: If no servers were reachable. """ async def send_request(destination: str) -> JsonDict: return await self._do_send_knock(destination, pdu) return await self._try_destination_list( "send_knock", destinations, send_request ) async def _do_send_knock(self, destination: str, pdu: EventBase) -> JsonDict: """Send a knock event to a remote homeserver. Args: destination: The homeserver to send to. pdu: The event to send. Returns: The remote homeserver can optionally return some state from the room. The response dictionary is in the form: {"knock_room_state": [, ...]} The list of state events may be empty. """ time_now = self._clock.time_msec() return await self.transport_layer.send_knock_v1( destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now), ) async def get_public_rooms( self, remote_server: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[Dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Get the list of public rooms from a remote homeserver Args: remote_server: The name of the remote server limit: Maximum amount of rooms to return since_token: Used for result pagination search_filter: A filter dictionary to send the remote homeserver and filter the result set include_all_networks: Whether to include results from all third party instances third_party_instance_id: Whether to only include results from a specific third party instance Returns: The response from the remote server. Raises: HttpResponseException / RequestSendFailed: There was an exception returned from the remote server SynapseException: M_FORBIDDEN when the remote server has disallowed publicRoom requests over federation """ return await self.transport_layer.get_public_rooms( remote_server, limit, since_token, search_filter, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) async def get_missing_events( self, destination: str, room_id: str, earliest_events_ids: Iterable[str], latest_events: Iterable[EventBase], limit: int, min_depth: int, timeout: int, ) -> List[EventBase]: """Tries to fetch events we are missing. This is called when we receive an event without having received all of its ancestors. Args: destination room_id earliest_events_ids: List of event ids. Effectively the events we expected to receive, but haven't. `get_missing_events` should only return events that didn't happen before these. latest_events: List of events we have received that we don't have all previous events for. limit: Maximum number of events to return. min_depth: Minimum depth of events to return. timeout: Max time to wait in ms """ try: content = await self.transport_layer.get_missing_events( destination=destination, room_id=room_id, earliest_events=earliest_events_ids, latest_events=[e.event_id for e in latest_events], limit=limit, min_depth=min_depth, timeout=timeout, ) room_version = await self.store.get_room_version(room_id) events = [ event_from_pdu_json(e, room_version) for e in content.get("events", []) ] signed_events = await self._check_sigs_and_hash_for_pulled_events_and_fetch( destination, events, room_version=room_version ) except HttpResponseException as e: if not e.code == 400: raise # We are probably hitting an old server that doesn't support # get_missing_events signed_events = [] return signed_events async def forward_third_party_invite( self, destinations: Iterable[str], room_id: str, event_dict: JsonDict ) -> None: for destination in destinations: if self._is_mine_server_name(destination): continue try: await self.transport_layer.exchange_third_party_invite( destination=destination, room_id=room_id, event_dict=event_dict ) return except CodeMessageException: raise except Exception as e: logger.exception( "Failed to send_third_party_invite via %s: %s", destination, str(e) ) raise RuntimeError("Failed to send to any server.") async def get_room_complexity( self, destination: str, room_id: str ) -> Optional[JsonDict]: """ Fetch the complexity of a remote room from another server. Args: destination: The remote server room_id: The room ID to ask about. Returns: Dict contains the complexity metric versions, while None means we could not fetch the complexity. """ try: return await self.transport_layer.get_room_complexity( destination=destination, room_id=room_id ) except CodeMessageException as e: # We didn't manage to get it -- probably a 404. We are okay if other # servers don't give it to us. logger.debug( "Failed to fetch room complexity via %s for %s, got a %d", destination, room_id, e.code, ) except Exception: logger.exception( "Failed to fetch room complexity via %s for %s", destination, room_id ) # If we don't manage to find it, return None. It's not an error if a # server doesn't give it to us. return None async def get_room_hierarchy( self, destinations: Iterable[str], room_id: str, suggested_only: bool, ) -> Tuple[JsonDict, Sequence[JsonDict], Sequence[JsonDict], Sequence[str]]: """ Call other servers to get a hierarchy of the given room. Performs simple data validates and parsing of the response. Args: destinations: The remote servers. We will try them in turn, omitting any that have been blacklisted. room_id: ID of the space to be queried suggested_only: If true, ask the remote server to only return children with the "suggested" flag set Returns: A tuple of: The room as a JSON dictionary, without a "children_state" key. A list of `m.space.child` state events. A list of children rooms, as JSON dictionaries. A list of inaccessible children room IDs. Raises: SynapseError if we were unable to get a valid summary from any of the remote servers """ cached_result = self._get_room_hierarchy_cache.get((room_id, suggested_only)) if cached_result: return cached_result async def send_request( destination: str, ) -> Tuple[JsonDict, Sequence[JsonDict], Sequence[JsonDict], Sequence[str]]: try: res = await self.transport_layer.get_room_hierarchy( destination=destination, room_id=room_id, suggested_only=suggested_only, ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the unstable endpoint. Otherwise, consider it a # legitimate error and raise. if not is_unknown_endpoint(e): raise logger.debug( "Couldn't fetch room hierarchy with the v1 API, falling back to the unstable API" ) res = await self.transport_layer.get_room_hierarchy_unstable( destination=destination, room_id=room_id, suggested_only=suggested_only, ) room = res.get("room") if not isinstance(room, dict): raise InvalidResponseError("'room' must be a dict") if room.get("room_id") != room_id: raise InvalidResponseError("wrong room returned in hierarchy response") # Validate children_state of the room. children_state = room.pop("children_state", []) if not isinstance(children_state, list): raise InvalidResponseError("'room.children_state' must be a list") if any(not isinstance(e, dict) for e in children_state): raise InvalidResponseError("Invalid event in 'children_state' list") try: for child_state in children_state: _validate_hierarchy_event(child_state) except ValueError as e: raise InvalidResponseError(str(e)) # Validate the children rooms. children = res.get("children", []) if not isinstance(children, list): raise InvalidResponseError("'children' must be a list") if any(not isinstance(r, dict) for r in children): raise InvalidResponseError("Invalid room in 'children' list") # Validate the inaccessible children. inaccessible_children = res.get("inaccessible_children", []) if not isinstance(inaccessible_children, list): raise InvalidResponseError("'inaccessible_children' must be a list") if any(not isinstance(r, str) for r in inaccessible_children): raise InvalidResponseError( "Invalid room ID in 'inaccessible_children' list" ) return room, children_state, children, inaccessible_children result = await self._try_destination_list( "fetch room hierarchy", destinations, send_request, failover_on_unknown_endpoint=True, ) # Cache the result to avoid fetching data over federation every time. self._get_room_hierarchy_cache[(room_id, suggested_only)] = result return result async def timestamp_to_event( self, *, destinations: StrCollection, room_id: str, timestamp: int, direction: Direction, ) -> Optional["TimestampToEventResponse"]: """ Calls each remote federating server from `destinations` asking for their closest event to the given timestamp in the given direction until we get a response. Also validates the response to always return the expected keys or raises an error. Args: destinations: The domains of homeservers to try fetching from room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: indicates whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: A parsed TimestampToEventResponse including the closest event_id and origin_server_ts or None if no destination has a response. """ async def _timestamp_to_event_from_destination( destination: str, ) -> TimestampToEventResponse: return await self._timestamp_to_event_from_destination( destination, room_id, timestamp, direction ) try: # Loop through each homeserver candidate until we get a succesful response timestamp_to_event_response = await self._try_destination_list( "timestamp_to_event", destinations, # TODO: The requested timestamp may lie in a part of the # event graph that the remote server *also* didn't have, # in which case they will have returned another event # which may be nowhere near the requested timestamp. In # the future, we may need to reconcile that gap and ask # other homeservers, and/or extend `/timestamp_to_event` # to return events on *both* sides of the timestamp to # help reconcile the gap faster. _timestamp_to_event_from_destination, # Since this endpoint is new, we should try other servers before giving up. # We can safely remove this in a year (remove after 2023-11-16). failover_on_unknown_endpoint=True, ) return timestamp_to_event_response except SynapseError as e: logger.warn( "timestamp_to_event(room_id=%s, timestamp=%s, direction=%s): encountered error when trying to fetch from destinations: %s", room_id, timestamp, direction, e, ) return None async def _timestamp_to_event_from_destination( self, destination: str, room_id: str, timestamp: int, direction: Direction ) -> "TimestampToEventResponse": """ Calls a remote federating server at `destination` asking for their closest event to the given timestamp in the given direction. Also validates the response to always return the expected keys or raises an error. Args: destination: Domain name of the remote homeserver room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: indicates whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: A parsed TimestampToEventResponse including the closest event_id and origin_server_ts Raises: Various exceptions when the request fails InvalidResponseError when the response does not have the correct keys or wrong types """ remote_response = await self.transport_layer.timestamp_to_event( destination, room_id, timestamp, direction ) if not isinstance(remote_response, dict): raise InvalidResponseError( "Response must be a JSON dictionary but received %r" % remote_response ) try: return TimestampToEventResponse.from_json_dict(remote_response) except ValueError as e: raise InvalidResponseError(str(e)) async def get_account_status( self, destination: str, user_ids: List[str] ) -> Tuple[JsonDict, List[str]]: """Retrieves account statuses for a given list of users on a given remote homeserver. If the request fails for any reason, all user IDs for this destination are marked as failed. Args: destination: the destination to contact user_ids: the user ID(s) for which to request account status(es) Returns: The account statuses, as well as the list of user IDs for which it was not possible to retrieve a status. """ try: res = await self.transport_layer.get_account_status(destination, user_ids) except Exception: # If the query failed for any reason, mark all the users as failed. return {}, user_ids statuses = res.get("account_statuses", {}) failures = res.get("failures", []) if not isinstance(statuses, dict) or not isinstance(failures, list): # Make sure we're not feeding back malformed data back to the caller. logger.warning( "Destination %s responded with malformed data to account_status query", destination, ) return {}, user_ids for user_id in user_ids: # Any account whose status is missing is a user we failed to receive the # status of. if user_id not in statuses and user_id not in failures: failures.append(user_id) # Filter out any user ID that doesn't belong to the remote server that sent its # status (or failure). def filter_user_id(user_id: str) -> bool: try: return UserID.from_string(user_id).domain == destination except SynapseError: # If the user ID doesn't parse, ignore it. return False filtered_statuses = dict( # item is a (key, value) tuple, so item[0] is the user ID. filter(lambda item: filter_user_id(item[0]), statuses.items()) ) filtered_failures = list(filter(filter_user_id, failures)) return filtered_statuses, filtered_failures async def download_media( self, destination: str, media_id: str, output_stream: BinaryIO, max_size: int, max_timeout_ms: int, ) -> Tuple[int, Dict[bytes, List[bytes]]]: try: return await self.transport_layer.download_media_v3( destination, media_id, output_stream=output_stream, max_size=max_size, max_timeout_ms=max_timeout_ms, ) except HttpResponseException as e: # If an error is received that is due to an unrecognised endpoint, # fallback to the r0 endpoint. Otherwise, consider it a legitimate error # and raise. if not is_unknown_endpoint(e): raise logger.debug( "Couldn't download media %s/%s with the v3 API, falling back to the r0 API", destination, media_id, ) return await self.transport_layer.download_media_r0( destination, media_id, output_stream=output_stream, max_size=max_size, max_timeout_ms=max_timeout_ms, ) @attr.s(frozen=True, slots=True, auto_attribs=True) class TimestampToEventResponse: """Typed response dictionary for the federation /timestamp_to_event endpoint""" event_id: str origin_server_ts: int # the raw data, including the above keys data: JsonDict @classmethod def from_json_dict(cls, d: JsonDict) -> "TimestampToEventResponse": """Parsed response from the federation /timestamp_to_event endpoint Args: d: JSON object response to be parsed Raises: ValueError if d does not the correct keys or they are the wrong types """ event_id = d.get("event_id") if not isinstance(event_id, str): raise ValueError( "Invalid response: 'event_id' must be a str but received %r" % event_id ) origin_server_ts = d.get("origin_server_ts") if type(origin_server_ts) is not int: # noqa: E721 raise ValueError( "Invalid response: 'origin_server_ts' must be a int but received %r" % origin_server_ts ) return cls(event_id, origin_server_ts, d) def _validate_hierarchy_event(d: JsonDict) -> None: """Validate an event within the result of a /hierarchy request Args: d: json object to be parsed Raises: ValueError if d is not a valid event """ event_type = d.get("type") if not isinstance(event_type, str): raise ValueError("Invalid event: 'event_type' must be a str") state_key = d.get("state_key") if not isinstance(state_key, str): raise ValueError("Invalid event: 'state_key' must be a str") content = d.get("content") if not isinstance(content, dict): raise ValueError("Invalid event: 'content' must be a dict") via = content.get("via") if not isinstance(via, list): raise ValueError("Invalid event: 'via' must be a list") if any(not isinstance(v, str) for v in via): raise ValueError("Invalid event: 'via' must be a list of strings") synapse-1.100.0/synapse/federation/federation_server.py000066400000000000000000001647211455622526000232370ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019-2021 Matrix.org Federation C.I.C # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Collection, Dict, List, Mapping, Optional, Tuple, Union, ) from prometheus_client import Counter, Gauge, Histogram from twisted.python import failure from synapse.api.constants import ( Direction, EduTypes, EventContentFields, EventTypes, Membership, ) from synapse.api.errors import ( AuthError, Codes, FederationError, IncompatibleRoomVersionError, NotFoundError, PartialStateConflictError, SynapseError, UnsupportedRoomVersionError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.crypto.event_signing import compute_event_signature from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.federation.federation_base import ( FederationBase, InvalidEventSignatureError, event_from_pdu_json, ) from synapse.federation.persistence import TransactionActions from synapse.federation.units import Edu, Transaction from synapse.handlers.worker_lock import NEW_EVENT_DURING_PURGE_LOCK_NAME from synapse.http.servlet import assert_params_in_dict from synapse.logging.context import ( make_deferred_yieldable, nested_logging_context, run_in_background, ) from synapse.logging.opentracing import ( SynapseTags, log_kv, set_tag, start_active_span_from_edu, tag_args, trace, ) from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.replication.http.federation import ( ReplicationFederationSendEduRestServlet, ReplicationGetQueryRestServlet, ) from synapse.storage.databases.main.lock import Lock from synapse.storage.databases.main.roommember import extract_heroes_from_room_summary from synapse.storage.roommember import MemberSummary from synapse.types import JsonDict, StateMap, UserID, get_domain_from_id from synapse.util import unwrapFirstError from synapse.util.async_helpers import Linearizer, concurrently_execute, gather_results from synapse.util.caches.response_cache import ResponseCache from synapse.util.stringutils import parse_server_name if TYPE_CHECKING: from synapse.server import HomeServer # when processing incoming transactions, we try to handle multiple rooms in # parallel, up to this limit. TRANSACTION_CONCURRENCY_LIMIT = 10 logger = logging.getLogger(__name__) received_pdus_counter = Counter("synapse_federation_server_received_pdus", "") received_edus_counter = Counter("synapse_federation_server_received_edus", "") received_queries_counter = Counter( "synapse_federation_server_received_queries", "", ["type"] ) pdu_process_time = Histogram( "synapse_federation_server_pdu_process_time", "Time taken to process an event", ) last_pdu_ts_metric = Gauge( "synapse_federation_last_received_pdu_time", "The timestamp of the last PDU which was successfully received from the given domain", labelnames=("server_name",), ) # The name of the lock to use when process events in a room received over # federation. _INBOUND_EVENT_HANDLING_LOCK_NAME = "federation_inbound_pdu" class FederationServer(FederationBase): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.server_name = hs.hostname self.handler = hs.get_federation_handler() self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self._federation_event_handler = hs.get_federation_event_handler() self.state = hs.get_state_handler() self._event_auth_handler = hs.get_event_auth_handler() self._room_member_handler = hs.get_room_member_handler() self._e2e_keys_handler = hs.get_e2e_keys_handler() self._worker_lock_handler = hs.get_worker_locks_handler() self._state_storage_controller = hs.get_storage_controllers().state self.device_handler = hs.get_device_handler() # Ensure the following handlers are loaded since they register callbacks # with FederationHandlerRegistry. hs.get_directory_handler() self._server_linearizer = Linearizer("fed_server") # origins that we are currently processing a transaction from. # a dict from origin to txn id. self._active_transactions: Dict[str, str] = {} # We cache results for transaction with the same ID self._transaction_resp_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "fed_txn_handler", timeout_ms=30000 ) self.transaction_actions = TransactionActions(self.store) self.registry = hs.get_federation_registry() # We cache responses to state queries, as they take a while and often # come in waves. self._state_resp_cache: ResponseCache[ Tuple[str, Optional[str]] ] = ResponseCache(hs.get_clock(), "state_resp", timeout_ms=30000) self._state_ids_resp_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "state_ids_resp", timeout_ms=30000 ) self._federation_metrics_domains = ( hs.config.federation.federation_metrics_domains ) self._room_prejoin_state_types = hs.config.api.room_prejoin_state # Whether we have started handling old events in the staging area. self._started_handling_of_staged_events = False @wrap_as_background_process("_handle_old_staged_events") async def _handle_old_staged_events(self) -> None: """Handle old staged events by fetching all rooms that have staged events and start the processing of each of those rooms. """ # Get all the rooms IDs with staged events. room_ids = await self.store.get_all_rooms_with_staged_incoming_events() # We then shuffle them so that if there are multiple instances doing # this work they're less likely to collide. random.shuffle(room_ids) for room_id in room_ids: room_version = await self.store.get_room_version(room_id) # Try and acquire the processing lock for the room, if we get it start a # background process for handling the events in the room. lock = await self.store.try_acquire_lock( _INBOUND_EVENT_HANDLING_LOCK_NAME, room_id ) if lock: logger.info("Handling old staged inbound events in %s", room_id) self._process_incoming_pdus_in_room_inner( room_id, room_version, lock, ) # We pause a bit so that we don't start handling all rooms at once. await self._clock.sleep(random.uniform(0, 0.1)) async def on_backfill_request( self, origin: str, room_id: str, versions: List[str], limit: int ) -> Tuple[int, Dict[str, Any]]: async with self._server_linearizer.queue((origin, room_id)): origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) pdus = await self.handler.on_backfill_request( origin, room_id, versions, limit ) res = self._transaction_dict_from_pdus(pdus) return 200, res async def on_timestamp_to_event_request( self, origin: str, room_id: str, timestamp: int, direction: Direction ) -> Tuple[int, Dict[str, Any]]: """When we receive a federated `/timestamp_to_event` request, handle all of the logic for validating and fetching the event. Args: origin: The server we received the event from room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: indicates whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: Tuple indicating the response status code and dictionary response body including `event_id`. """ async with self._server_linearizer.queue((origin, room_id)): origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) # We only try to fetch data from the local database event_id = await self.store.get_event_id_for_timestamp( room_id, timestamp, direction ) if event_id: event = await self.store.get_event( event_id, allow_none=False, allow_rejected=False ) return 200, { "event_id": event_id, "origin_server_ts": event.origin_server_ts, } raise SynapseError( 404, "Unable to find event from %s in direction %s" % (timestamp, direction), errcode=Codes.NOT_FOUND, ) async def on_incoming_transaction( self, origin: str, transaction_id: str, destination: str, transaction_data: JsonDict, ) -> Tuple[int, JsonDict]: # If we receive a transaction we should make sure that kick off handling # any old events in the staging area. if not self._started_handling_of_staged_events: self._started_handling_of_staged_events = True self._handle_old_staged_events() # Start a periodic check for old staged events. This is to handle # the case where locks time out, e.g. if another process gets killed # without dropping its locks. self._clock.looping_call(self._handle_old_staged_events, 60 * 1000) # keep this as early as possible to make the calculated origin ts as # accurate as possible. request_time = self._clock.time_msec() transaction = Transaction( transaction_id=transaction_id, destination=destination, origin=origin, origin_server_ts=transaction_data.get("origin_server_ts"), # type: ignore[arg-type] pdus=transaction_data.get("pdus"), edus=transaction_data.get("edus"), ) if not transaction_id: raise Exception("Transaction missing transaction_id") logger.debug("[%s] Got transaction", transaction_id) # Reject malformed transactions early: reject if too many PDUs/EDUs if len(transaction.pdus) > 50 or len(transaction.edus) > 100: logger.info("Transaction PDU or EDU count too large. Returning 400") return 400, {} # we only process one transaction from each origin at a time. We need to do # this check here, rather than in _on_incoming_transaction_inner so that we # don't cache the rejection in _transaction_resp_cache (so that if the txn # arrives again later, we can process it). current_transaction = self._active_transactions.get(origin) if current_transaction and current_transaction != transaction_id: logger.warning( "Received another txn %s from %s while still processing %s", transaction_id, origin, current_transaction, ) return 429, { "errcode": Codes.UNKNOWN, "error": "Too many concurrent transactions", } # CRITICAL SECTION: we must now not await until we populate _active_transactions # in _on_incoming_transaction_inner. # We wrap in a ResponseCache so that we de-duplicate retried # transactions. return await self._transaction_resp_cache.wrap( (origin, transaction_id), self._on_incoming_transaction_inner, origin, transaction, request_time, ) async def _on_incoming_transaction_inner( self, origin: str, transaction: Transaction, request_time: int ) -> Tuple[int, Dict[str, Any]]: # CRITICAL SECTION: the first thing we must do (before awaiting) is # add an entry to _active_transactions. assert origin not in self._active_transactions self._active_transactions[origin] = transaction.transaction_id try: result = await self._handle_incoming_transaction( origin, transaction, request_time ) return result finally: del self._active_transactions[origin] async def _handle_incoming_transaction( self, origin: str, transaction: Transaction, request_time: int ) -> Tuple[int, Dict[str, Any]]: """Process an incoming transaction and return the HTTP response Args: origin: the server making the request transaction: incoming transaction request_time: timestamp that the HTTP request arrived at Returns: HTTP response code and body """ existing_response = await self.transaction_actions.have_responded( origin, transaction ) if existing_response: logger.debug( "[%s] We've already responded to this request", transaction.transaction_id, ) return existing_response logger.debug("[%s] Transaction is new", transaction.transaction_id) # We process PDUs and EDUs in parallel. This is important as we don't # want to block things like to device messages from reaching clients # behind the potentially expensive handling of PDUs. pdu_results, _ = await make_deferred_yieldable( gather_results( ( run_in_background( self._handle_pdus_in_txn, origin, transaction, request_time ), run_in_background(self._handle_edus_in_txn, origin, transaction), ), consumeErrors=True, ).addErrback(unwrapFirstError) ) response = {"pdus": pdu_results} logger.debug("Returning: %s", str(response)) await self.transaction_actions.set_response(origin, transaction, 200, response) return 200, response async def _handle_pdus_in_txn( self, origin: str, transaction: Transaction, request_time: int ) -> Dict[str, dict]: """Process the PDUs in a received transaction. Args: origin: the server making the request transaction: incoming transaction request_time: timestamp that the HTTP request arrived at Returns: A map from event ID of a processed PDU to any errors we should report back to the sending server. """ received_pdus_counter.inc(len(transaction.pdus)) origin_host, _ = parse_server_name(origin) pdus_by_room: Dict[str, List[EventBase]] = {} newest_pdu_ts = 0 for p in transaction.pdus: # FIXME (richardv): I don't think this works: # https://github.com/matrix-org/synapse/issues/8429 if "unsigned" in p: unsigned = p["unsigned"] if "age" in unsigned: p["age"] = unsigned["age"] if "age" in p: p["age_ts"] = request_time - int(p["age"]) del p["age"] # We try and pull out an event ID so that if later checks fail we # can log something sensible. We don't mandate an event ID here in # case future event formats get rid of the key. possible_event_id = p.get("event_id", "") # Now we get the room ID so that we can check that we know the # version of the room. room_id = p.get("room_id") if not room_id: logger.info( "Ignoring PDU as does not have a room_id. Event ID: %s", possible_event_id, ) continue try: room_version = await self.store.get_room_version(room_id) except NotFoundError: logger.info("Ignoring PDU for unknown room_id: %s", room_id) continue except UnsupportedRoomVersionError as e: # this can happen if support for a given room version is withdrawn, # so that we still get events for said room. logger.info("Ignoring PDU: %s", e) continue event = event_from_pdu_json(p, room_version) pdus_by_room.setdefault(room_id, []).append(event) if event.origin_server_ts > newest_pdu_ts: newest_pdu_ts = event.origin_server_ts pdu_results = {} # we can process different rooms in parallel (which is useful if they # require callouts to other servers to fetch missing events), but # impose a limit to avoid going too crazy with ram/cpu. async def process_pdus_for_room(room_id: str) -> None: with nested_logging_context(room_id): logger.debug("Processing PDUs for %s", room_id) try: await self.check_server_matches_acl(origin_host, room_id) except AuthError as e: logger.warning( "Ignoring PDUs for room %s from banned server", room_id ) for pdu in pdus_by_room[room_id]: event_id = pdu.event_id pdu_results[event_id] = e.error_dict(self.hs.config) return for pdu in pdus_by_room[room_id]: pdu_results[pdu.event_id] = await process_pdu(pdu) async def process_pdu(pdu: EventBase) -> JsonDict: """ Processes a pushed PDU sent to us via a `/send` transaction Returns: JsonDict representing a "PDU Processing Result" that will be bundled up with the other processed PDU's in the `/send` transaction and sent back to remote homeserver. """ event_id = pdu.event_id with nested_logging_context(event_id): try: await self._handle_received_pdu(origin, pdu) return {} except FederationError as e: logger.warning("Error handling PDU %s: %s", event_id, e) return {"error": str(e)} except Exception as e: f = failure.Failure() logger.error( "Failed to handle PDU %s", event_id, exc_info=(f.type, f.value, f.getTracebackObject()), ) return {"error": str(e)} await concurrently_execute( process_pdus_for_room, pdus_by_room.keys(), TRANSACTION_CONCURRENCY_LIMIT ) if newest_pdu_ts and origin in self._federation_metrics_domains: last_pdu_ts_metric.labels(server_name=origin).set(newest_pdu_ts / 1000) return pdu_results async def _handle_edus_in_txn(self, origin: str, transaction: Transaction) -> None: """Process the EDUs in a received transaction.""" async def _process_edu(edu_dict: JsonDict) -> None: received_edus_counter.inc() edu = Edu( origin=origin, destination=self.server_name, edu_type=edu_dict["edu_type"], content=edu_dict["content"], ) await self.registry.on_edu(edu.edu_type, origin, edu.content) await concurrently_execute( _process_edu, transaction.edus, TRANSACTION_CONCURRENCY_LIMIT, ) async def on_room_state_request( self, origin: str, room_id: str, event_id: str ) -> Tuple[int, JsonDict]: await self._event_auth_handler.assert_host_in_room(room_id, origin) origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) # we grab the linearizer to protect ourselves from servers which hammer # us. In theory we might already have the response to this query # in the cache so we could return it without waiting for the linearizer # - but that's non-trivial to get right, and anyway somewhat defeats # the point of the linearizer. async with self._server_linearizer.queue((origin, room_id)): resp = await self._state_resp_cache.wrap( (room_id, event_id), self._on_context_state_request_compute, room_id, event_id, ) return 200, resp @trace @tag_args async def on_state_ids_request( self, origin: str, room_id: str, event_id: str ) -> Tuple[int, JsonDict]: if not event_id: raise NotImplementedError("Specify an event") await self._event_auth_handler.assert_host_in_room(room_id, origin) origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) resp = await self._state_ids_resp_cache.wrap( (room_id, event_id), self._on_state_ids_request_compute, room_id, event_id, ) return 200, resp @trace @tag_args async def _on_state_ids_request_compute( self, room_id: str, event_id: str ) -> JsonDict: state_ids = await self.handler.get_state_ids_for_pdu(room_id, event_id) auth_chain_ids = await self.store.get_auth_chain_ids(room_id, state_ids) return {"pdu_ids": state_ids, "auth_chain_ids": list(auth_chain_ids)} async def _on_context_state_request_compute( self, room_id: str, event_id: str ) -> Dict[str, list]: pdus: Collection[EventBase] event_ids = await self.handler.get_state_ids_for_pdu(room_id, event_id) pdus = await self.store.get_events_as_list(event_ids) auth_chain = await self.store.get_auth_chain( room_id, [pdu.event_id for pdu in pdus] ) return { "pdus": [pdu.get_pdu_json() for pdu in pdus], "auth_chain": [pdu.get_pdu_json() for pdu in auth_chain], } async def on_pdu_request( self, origin: str, event_id: str ) -> Tuple[int, Union[JsonDict, str]]: pdu = await self.handler.get_persisted_pdu(origin, event_id) if pdu: return 200, self._transaction_dict_from_pdus([pdu]) else: return 404, "" async def on_query_request( self, query_type: str, args: Dict[str, str] ) -> Tuple[int, Dict[str, Any]]: received_queries_counter.labels(query_type).inc() resp = await self.registry.on_query(query_type, args) return 200, resp async def on_make_join_request( self, origin: str, room_id: str, user_id: str, supported_versions: List[str] ) -> Dict[str, Any]: origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) room_version = await self.store.get_room_version_id(room_id) if room_version not in supported_versions: logger.warning( "Room version %s not in %s", room_version, supported_versions ) raise IncompatibleRoomVersionError(room_version=room_version) # Refuse the request if that room has seen too many joins recently. # This is in addition to the HS-level rate limiting applied by # BaseFederationServlet. # type-ignore: mypy doesn't seem able to deduce the type of the limiter(!?) await self._room_member_handler._join_rate_per_room_limiter.ratelimit( # type: ignore[has-type] requester=None, key=room_id, update=False, ) pdu = await self.handler.on_make_join_request(origin, room_id, user_id) return {"event": pdu.get_templated_pdu_json(), "room_version": room_version} async def on_invite_request( self, origin: str, content: JsonDict, room_version_id: str ) -> Dict[str, Any]: room_version = KNOWN_ROOM_VERSIONS.get(room_version_id) if not room_version: raise SynapseError( 400, "Homeserver does not support this room version", Codes.UNSUPPORTED_ROOM_VERSION, ) pdu = event_from_pdu_json(content, room_version) origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, pdu.room_id) try: pdu = await self._check_sigs_and_hash(room_version, pdu) except InvalidEventSignatureError as e: errmsg = f"event id {pdu.event_id}: {e}" logger.warning("%s", errmsg) raise SynapseError(403, errmsg, Codes.FORBIDDEN) ret_pdu = await self.handler.on_invite_request(origin, pdu, room_version) time_now = self._clock.time_msec() return {"event": ret_pdu.get_pdu_json(time_now)} async def on_send_join_request( self, origin: str, content: JsonDict, room_id: str, caller_supports_partial_state: bool = False, ) -> Dict[str, Any]: set_tag( SynapseTags.SEND_JOIN_RESPONSE_IS_PARTIAL_STATE, caller_supports_partial_state, ) await self._room_member_handler._join_rate_per_room_limiter.ratelimit( # type: ignore[has-type] requester=None, key=room_id, update=False, ) event, context = await self._on_send_membership_event( origin, content, Membership.JOIN, room_id ) prev_state_ids = await context.get_prev_state_ids() state_event_ids: Collection[str] servers_in_room: Optional[Collection[str]] if caller_supports_partial_state: summary = await self.store.get_room_summary(room_id) state_event_ids = _get_event_ids_for_partial_state_join( event, prev_state_ids, summary ) servers_in_room = await self.state.get_hosts_in_room_at_events( room_id, event_ids=event.prev_event_ids() ) else: state_event_ids = prev_state_ids.values() servers_in_room = None auth_chain_event_ids = await self.store.get_auth_chain_ids( room_id, state_event_ids ) # if the caller has opted in, we can omit any auth_chain events which are # already in state_event_ids if caller_supports_partial_state: auth_chain_event_ids.difference_update(state_event_ids) auth_chain_events = await self.store.get_events_as_list(auth_chain_event_ids) state_events = await self.store.get_events_as_list(state_event_ids) # we try to do all the async stuff before this point, so that time_now is as # accurate as possible. time_now = self._clock.time_msec() event_json = event.get_pdu_json(time_now) resp = { "event": event_json, "state": [p.get_pdu_json(time_now) for p in state_events], "auth_chain": [p.get_pdu_json(time_now) for p in auth_chain_events], "members_omitted": caller_supports_partial_state, } if servers_in_room is not None: resp["servers_in_room"] = list(servers_in_room) return resp async def on_make_leave_request( self, origin: str, room_id: str, user_id: str ) -> Dict[str, Any]: origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) pdu = await self.handler.on_make_leave_request(origin, room_id, user_id) room_version = await self.store.get_room_version_id(room_id) return {"event": pdu.get_templated_pdu_json(), "room_version": room_version} async def on_send_leave_request( self, origin: str, content: JsonDict, room_id: str ) -> dict: logger.debug("on_send_leave_request: content: %s", content) await self._on_send_membership_event(origin, content, Membership.LEAVE, room_id) return {} async def on_make_knock_request( self, origin: str, room_id: str, user_id: str, supported_versions: List[str] ) -> JsonDict: """We've received a /make_knock/ request, so we create a partial knock event for the room and hand that back, along with the room version, to the knocking homeserver. We do *not* persist or process this event until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: The room to create the knock event in. user_id: The user to create the knock for. supported_versions: The room versions supported by the requesting server. Returns: The partial knock event. """ origin_host, _ = parse_server_name(origin) if await self.store.is_partial_state_room(room_id): # Before we do anything: check if the room is partial-stated. # Note that at the time this check was added, `on_make_knock_request` would # block due to https://github.com/matrix-org/synapse/issues/12997. raise SynapseError( 404, "Unable to handle /make_knock right now; this server is not fully joined.", errcode=Codes.NOT_FOUND, ) await self.check_server_matches_acl(origin_host, room_id) room_version = await self.store.get_room_version(room_id) # Check that this room version is supported by the remote homeserver if room_version.identifier not in supported_versions: logger.warning( "Room version %s not in %s", room_version.identifier, supported_versions ) raise IncompatibleRoomVersionError(room_version=room_version.identifier) # Check that this room supports knocking as defined by its room version if not room_version.knock_join_rule: raise SynapseError( 403, "This room version does not support knocking", errcode=Codes.FORBIDDEN, ) pdu = await self.handler.on_make_knock_request(origin, room_id, user_id) return { "event": pdu.get_templated_pdu_json(), "room_version": room_version.identifier, } async def on_send_knock_request( self, origin: str, content: JsonDict, room_id: str, ) -> Dict[str, List[JsonDict]]: """ We have received a knock event for a room. Verify and send the event into the room on the knocking homeserver's behalf. Then reply with some stripped state from the room for the knockee. Args: origin: The remote homeserver of the knocking user. content: The content of the request. room_id: The ID of the room to knock on. Returns: The stripped room state. """ _, context = await self._on_send_membership_event( origin, content, Membership.KNOCK, room_id ) # Retrieve stripped state events from the room and send them back to the remote # server. This will allow the remote server's clients to display information # related to the room while the knock request is pending. stripped_room_state = ( await self.store.get_stripped_room_state_from_event_context( context, self._room_prejoin_state_types ) ) return {"knock_room_state": stripped_room_state} async def _on_send_membership_event( self, origin: str, content: JsonDict, membership_type: str, room_id: str ) -> Tuple[EventBase, EventContext]: """Handle an on_send_{join,leave,knock} request Does some preliminary validation before passing the request on to the federation handler. Args: origin: The (authenticated) requesting server content: The body of the send_* request - a complete membership event membership_type: The expected membership type (join or leave, depending on the endpoint) room_id: The room_id from the request, to be validated against the room_id in the event Returns: The event and context of the event after inserting it into the room graph. Raises: SynapseError if there is a problem with the request, including things like the room_id not matching or the event not being authorized. """ assert_params_in_dict(content, ["room_id"]) if content["room_id"] != room_id: raise SynapseError( 400, "Room ID in body does not match that in request path", Codes.BAD_JSON, ) # Note that get_room_version throws if the room does not exist here. room_version = await self.store.get_room_version(room_id) if await self.store.is_partial_state_room(room_id): # If our server is still only partially joined, we can't give a complete # response to /send_join, /send_knock or /send_leave. # This is because we will not be able to provide the server list (for partial # joins) or the full state (for full joins). # Return a 404 as we would if we weren't in the room at all. logger.info( f"Rejecting /send_{membership_type} to %s because it's a partial state room", room_id, ) raise SynapseError( 404, f"Unable to handle /send_{membership_type} right now; this server is not fully joined.", errcode=Codes.NOT_FOUND, ) if membership_type == Membership.KNOCK and not room_version.knock_join_rule: raise SynapseError( 403, "This room version does not support knocking", errcode=Codes.FORBIDDEN, ) event = event_from_pdu_json(content, room_version) if event.type != EventTypes.Member or not event.is_state(): raise SynapseError(400, "Not an m.room.member event", Codes.BAD_JSON) if event.content.get("membership") != membership_type: raise SynapseError(400, "Not a %s event" % membership_type, Codes.BAD_JSON) origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, event.room_id) logger.debug("_on_send_membership_event: pdu sigs: %s", event.signatures) # Sign the event since we're vouching on behalf of the remote server that # the event is valid to be sent into the room. Currently this is only done # if the user is being joined via restricted join rules. if ( room_version.restricted_join_rule and event.membership == Membership.JOIN and EventContentFields.AUTHORISING_USER in event.content ): # We can only authorise our own users. authorising_server = get_domain_from_id( event.content[EventContentFields.AUTHORISING_USER] ) if not self._is_mine_server_name(authorising_server): raise SynapseError( 400, f"Cannot authorise membership event for {authorising_server}. We can only authorise requests from our own homeserver", ) event.signatures.update( compute_event_signature( room_version, event.get_pdu_json(), self.hs.hostname, self.hs.signing_key, ) ) try: event = await self._check_sigs_and_hash(room_version, event) except InvalidEventSignatureError as e: errmsg = f"event id {event.event_id}: {e}" logger.warning("%s", errmsg) raise SynapseError(403, errmsg, Codes.FORBIDDEN) try: return await self._federation_event_handler.on_send_membership_event( origin, event ) except PartialStateConflictError: # The room was un-partial stated while we were persisting the event. # Try once more, with full state this time. logger.info( "Room %s was un-partial stated during `on_send_membership_event`, trying again.", room_id, ) return await self._federation_event_handler.on_send_membership_event( origin, event ) async def on_event_auth( self, origin: str, room_id: str, event_id: str ) -> Tuple[int, Dict[str, Any]]: async with self._server_linearizer.queue((origin, room_id)): await self._event_auth_handler.assert_host_in_room(room_id, origin) origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) time_now = self._clock.time_msec() auth_pdus = await self.handler.on_event_auth(event_id) res = {"auth_chain": [a.get_pdu_json(time_now) for a in auth_pdus]} return 200, res async def on_query_client_keys( self, origin: str, content: Dict[str, str] ) -> Tuple[int, Dict[str, Any]]: return await self.on_query_request("client_keys", content) async def on_query_user_devices( self, origin: str, user_id: str ) -> Tuple[int, Dict[str, Any]]: keys = await self.device_handler.on_federation_query_user_devices(user_id) return 200, keys @trace async def on_claim_client_keys( self, query: List[Tuple[str, str, str, int]], always_include_fallback_keys: bool ) -> Dict[str, Any]: if any( not self.hs.is_mine(UserID.from_string(user_id)) for user_id, _, _, _ in query ): raise SynapseError(400, "User is not hosted on this homeserver") log_kv({"message": "Claiming one time keys.", "user, device pairs": query}) results = await self._e2e_keys_handler.claim_local_one_time_keys( query, always_include_fallback_keys=always_include_fallback_keys ) json_result: Dict[str, Dict[str, Dict[str, JsonDict]]] = {} for result in results: for user_id, device_keys in result.items(): for device_id, keys in device_keys.items(): for key_id, key in keys.items(): json_result.setdefault(user_id, {}).setdefault(device_id, {})[ key_id ] = key logger.info( "Claimed one-time-keys: %s", ",".join( ( "%s for %s:%s" % (key_id, user_id, device_id) for user_id, user_keys in json_result.items() for device_id, device_keys in user_keys.items() for key_id, _ in device_keys.items() ) ), ) return {"one_time_keys": json_result} async def on_get_missing_events( self, origin: str, room_id: str, earliest_events: List[str], latest_events: List[str], limit: int, ) -> Dict[str, list]: async with self._server_linearizer.queue((origin, room_id)): origin_host, _ = parse_server_name(origin) await self.check_server_matches_acl(origin_host, room_id) logger.debug( "on_get_missing_events: earliest_events: %r, latest_events: %r," " limit: %d", earliest_events, latest_events, limit, ) missing_events = await self.handler.on_get_missing_events( origin, room_id, earliest_events, latest_events, limit ) if len(missing_events) < 5: logger.debug( "Returning %d events: %r", len(missing_events), missing_events ) else: logger.debug("Returning %d events", len(missing_events)) time_now = self._clock.time_msec() return {"events": [ev.get_pdu_json(time_now) for ev in missing_events]} async def on_openid_userinfo(self, token: str) -> Optional[str]: ts_now_ms = self._clock.time_msec() return await self.store.get_user_id_for_open_id_token(token, ts_now_ms) def _transaction_dict_from_pdus(self, pdu_list: List[EventBase]) -> JsonDict: """Returns a new Transaction containing the given PDUs suitable for transmission. """ time_now = self._clock.time_msec() pdus = [p.get_pdu_json(time_now) for p in pdu_list] return Transaction( # Just need a dummy transaction ID and destination since it won't be used. transaction_id="", origin=self.server_name, pdus=pdus, origin_server_ts=int(time_now), destination="", ).get_dict() async def _handle_received_pdu(self, origin: str, pdu: EventBase) -> None: """Process a PDU received in a federation /send/ transaction. If the event is invalid, then this method throws a FederationError. (The error will then be logged and sent back to the sender (which probably won't do anything with it), and other events in the transaction will be processed as normal). It is likely that we'll then receive other events which refer to this rejected_event in their prev_events, etc. When that happens, we'll attempt to fetch the rejected event again, which will presumably fail, so those second-generation events will also get rejected. Eventually, we get to the point where there are more than 10 events between any new events and the original rejected event. Since we only try to backfill 10 events deep on received pdu, we then accept the new event, possibly introducing a discontinuity in the DAG, with new forward extremities, so normal service is approximately returned, until we try to backfill across the discontinuity. Args: origin: server which sent the pdu pdu: received pdu Raises: FederationError if the signatures / hash do not match, or if the event was unacceptable for any other reason (eg, too large, too many prev_events, couldn't find the prev_events) """ # We've already checked that we know the room version by this point room_version = await self.store.get_room_version(pdu.room_id) # Check signature. try: pdu = await self._check_sigs_and_hash(room_version, pdu) except InvalidEventSignatureError as e: logger.warning("event id %s: %s", pdu.event_id, e) raise FederationError("ERROR", 403, str(e), affected=pdu.event_id) if await self._spam_checker_module_callbacks.should_drop_federated_event(pdu): logger.warning( "Unstaged federated event contains spam, dropping %s", pdu.event_id ) return # Add the event to our staging area await self.store.insert_received_event_to_staging(origin, pdu) # Try and acquire the processing lock for the room, if we get it start a # background process for handling the events in the room. lock = await self.store.try_acquire_lock( _INBOUND_EVENT_HANDLING_LOCK_NAME, pdu.room_id ) if lock: self._process_incoming_pdus_in_room_inner( pdu.room_id, room_version, lock, origin, pdu ) async def _get_next_nonspam_staged_event_for_room( self, room_id: str, room_version: RoomVersion ) -> Optional[Tuple[str, EventBase]]: """Fetch the first non-spam event from staging queue. Args: room_id: the room to fetch the first non-spam event in. room_version: the version of the room. Returns: The first non-spam event in that room. """ while True: # We need to do this check outside the lock to avoid a race between # a new event being inserted by another instance and it attempting # to acquire the lock. next = await self.store.get_next_staged_event_for_room( room_id, room_version ) if next is None: return None origin, event = next if await self._spam_checker_module_callbacks.should_drop_federated_event( event ): logger.warning( "Staged federated event contains spam, dropping %s", event.event_id, ) continue return next @wrap_as_background_process("_process_incoming_pdus_in_room_inner") async def _process_incoming_pdus_in_room_inner( self, room_id: str, room_version: RoomVersion, lock: Lock, latest_origin: Optional[str] = None, latest_event: Optional[EventBase] = None, ) -> None: """Process events in the staging area for the given room. The latest_origin and latest_event args are the latest origin and event received (or None to simply pull the next event from the database). """ # The common path is for the event we just received be the only event in # the room, so instead of pulling the event out of the DB and parsing # the event we just pull out the next event ID and check if that matches. if latest_event is not None and latest_origin is not None: result = await self.store.get_next_staged_event_id_for_room(room_id) if result is None: latest_origin = None latest_event = None else: next_origin, next_event_id = result if ( next_origin != latest_origin or next_event_id != latest_event.event_id ): latest_origin = None latest_event = None if latest_origin is None or latest_event is None: next = await self.store.get_next_staged_event_for_room( room_id, room_version ) if not next: await lock.release() return origin, event = next else: origin = latest_origin event = latest_event # We loop round until there are no more events in the room in the # staging area, or we fail to get the lock (which means another process # has started processing). while True: async with lock: logger.info("handling received PDU in room %s: %s", room_id, event) try: with nested_logging_context(event.event_id): # We're taking out a lock within a lock, which could # lead to deadlocks if we're not careful. However, it is # safe on this occasion as we only ever take a write # lock when deleting a room, which we would never do # while holding the `_INBOUND_EVENT_HANDLING_LOCK_NAME` # lock. async with self._worker_lock_handler.acquire_read_write_lock( NEW_EVENT_DURING_PURGE_LOCK_NAME, room_id, write=False ): await self._federation_event_handler.on_receive_pdu( origin, event ) except FederationError as e: # XXX: Ideally we'd inform the remote we failed to process # the event, but we can't return an error in the transaction # response (as we've already responded). logger.warning("Error handling PDU %s: %s", event.event_id, e) except Exception: f = failure.Failure() logger.error( "Failed to handle PDU %s", event.event_id, exc_info=(f.type, f.value, f.getTracebackObject()), ) received_ts = await self.store.remove_received_event_from_staging( origin, event.event_id ) if received_ts is not None: pdu_process_time.observe( (self._clock.time_msec() - received_ts) / 1000 ) next = await self._get_next_nonspam_staged_event_for_room( room_id, room_version ) if not next: break origin, event = next # Prune the event queue if it's getting large. # # We do this *after* handling the first event as the common case is # that the queue is empty (/has the single event in), and so there's # no need to do this check. pruned = await self.store.prune_staged_events_in_room(room_id, room_version) if pruned: # If we have pruned the queue check we need to refetch the next # event to handle. next = await self.store.get_next_staged_event_for_room( room_id, room_version ) if not next: break origin, event = next new_lock = await self.store.try_acquire_lock( _INBOUND_EVENT_HANDLING_LOCK_NAME, room_id ) if not new_lock: return lock = new_lock async def exchange_third_party_invite( self, sender_user_id: str, target_user_id: str, room_id: str, signed: Dict ) -> None: await self.handler.exchange_third_party_invite( sender_user_id, target_user_id, room_id, signed ) async def on_exchange_third_party_invite_request(self, event_dict: Dict) -> None: await self.handler.on_exchange_third_party_invite_request(event_dict) async def check_server_matches_acl(self, server_name: str, room_id: str) -> None: """Check if the given server is allowed by the server ACLs in the room Args: server_name: name of server, *without any port part* room_id: ID of the room to check Raises: AuthError if the server does not match the ACL """ server_acl_evaluator = ( await self._storage_controllers.state.get_server_acl_for_room(room_id) ) if server_acl_evaluator and not server_acl_evaluator.server_matches_acl_event( server_name ): raise AuthError(code=403, msg="Server is banned from room") class FederationHandlerRegistry: """Allows classes to register themselves as handlers for a given EDU or query type for incoming federation traffic. """ def __init__(self, hs: "HomeServer"): self.config = hs.config self.clock = hs.get_clock() self._instance_name = hs.get_instance_name() # These are safe to load in monolith mode, but will explode if we try # and use them. However we have guards before we use them to ensure that # we don't route to ourselves, and in monolith mode that will always be # the case. self._get_query_client = ReplicationGetQueryRestServlet.make_client(hs) self._send_edu = ReplicationFederationSendEduRestServlet.make_client(hs) self.edu_handlers: Dict[str, Callable[[str, dict], Awaitable[None]]] = {} self.query_handlers: Dict[str, Callable[[dict], Awaitable[JsonDict]]] = {} # Map from type to instance names that we should route EDU handling to. # We randomly choose one instance from the list to route to for each new # EDU received. self._edu_type_to_instance: Dict[str, List[str]] = {} def register_edu_handler( self, edu_type: str, handler: Callable[[str, JsonDict], Awaitable[None]] ) -> None: """Sets the handler callable that will be used to handle an incoming federation EDU of the given type. Args: edu_type: The type of the incoming EDU to register handler for handler: A callable invoked on incoming EDU of the given type. The arguments are the origin server name and the EDU contents. """ if edu_type in self.edu_handlers: raise KeyError("Already have an EDU handler for %s" % (edu_type,)) logger.info("Registering federation EDU handler for %r", edu_type) self.edu_handlers[edu_type] = handler def register_query_handler( self, query_type: str, handler: Callable[[dict], Awaitable[JsonDict]] ) -> None: """Sets the handler callable that will be used to handle an incoming federation query of the given type. Args: query_type: Category name of the query, which should match the string used by make_query. handler: Invoked to handle incoming queries of this type. The return will be yielded on and the result used as the response to the query request. """ if query_type in self.query_handlers: raise KeyError("Already have a Query handler for %s" % (query_type,)) logger.info("Registering federation query handler for %r", query_type) self.query_handlers[query_type] = handler def register_instances_for_edu( self, edu_type: str, instance_names: List[str] ) -> None: """Register that the EDU handler is on multiple instances.""" self._edu_type_to_instance[edu_type] = instance_names async def on_edu(self, edu_type: str, origin: str, content: dict) -> None: if not self.config.server.track_presence and edu_type == EduTypes.PRESENCE: return # Check if we have a handler on this instance handler = self.edu_handlers.get(edu_type) if handler: with start_active_span_from_edu(content, "handle_edu"): try: await handler(origin, content) except SynapseError as e: logger.info("Failed to handle edu %r: %r", edu_type, e) except Exception: logger.exception("Failed to handle edu %r", edu_type) return # Check if we can route it somewhere else that isn't us instances = self._edu_type_to_instance.get(edu_type, ["master"]) if self._instance_name not in instances: # Pick an instance randomly so that we don't overload one. route_to = random.choice(instances) try: await self._send_edu( instance_name=route_to, edu_type=edu_type, origin=origin, content=content, ) except SynapseError as e: logger.info("Failed to handle edu %r: %r", edu_type, e) except Exception: logger.exception("Failed to handle edu %r", edu_type) return # Oh well, let's just log and move on. logger.warning("No handler registered for EDU type %s", edu_type) async def on_query(self, query_type: str, args: dict) -> JsonDict: handler = self.query_handlers.get(query_type) if handler: return await handler(args) # Check if we can route it somewhere else that isn't us if self._instance_name == "master": return await self._get_query_client(query_type=query_type, args=args) # Uh oh, no handler! Let's raise an exception so the request returns an # error. logger.warning("No handler registered for query type %s", query_type) raise NotFoundError("No handler for Query type '%s'" % (query_type,)) def _get_event_ids_for_partial_state_join( join_event: EventBase, prev_state_ids: StateMap[str], summary: Mapping[str, MemberSummary], ) -> Collection[str]: """Calculate state to be returned in a partial_state send_join Args: join_event: the join event being send_joined prev_state_ids: the event ids of the state before the join Returns: the event ids to be returned """ # return all non-member events state_event_ids = { event_id for (event_type, state_key), event_id in prev_state_ids.items() if event_type != EventTypes.Member } # we also need the current state of the current user (it's going to # be an auth event for the new join, so we may as well return it) current_membership_event_id = prev_state_ids.get( (EventTypes.Member, join_event.state_key) ) if current_membership_event_id is not None: state_event_ids.add(current_membership_event_id) name_id = prev_state_ids.get((EventTypes.Name, "")) canonical_alias_id = prev_state_ids.get((EventTypes.CanonicalAlias, "")) if not name_id and not canonical_alias_id: # Also include the hero members of the room (for DM rooms without a title). # To do this properly, we should select the correct subset of membership events # from `prev_state_ids`. Instead, we are lazier and use the (cached) # `get_room_summary` function, which is based on the current state of the room. # This introduces races; we choose to ignore them because a) they should be rare # and b) even if it's wrong, joining servers will get the full state eventually. heroes = extract_heroes_from_room_summary(summary, join_event.state_key) for hero in heroes: membership_event_id = prev_state_ids.get((EventTypes.Member, hero)) if membership_event_id: state_event_ids.add(membership_event_id) return state_event_ids synapse-1.100.0/synapse/federation/persistence.py000066400000000000000000000046401455622526000220460ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ This module contains all the persistence actions done by the federation package. These actions are mostly only used by the :py:mod:`.replication` module. """ import logging from typing import Optional, Tuple from synapse.federation.units import Transaction from synapse.storage.databases.main import DataStore from synapse.types import JsonDict logger = logging.getLogger(__name__) class TransactionActions: """Defines persistence actions that relate to handling Transactions.""" def __init__(self, datastore: DataStore): self.store = datastore async def have_responded( self, origin: str, transaction: Transaction ) -> Optional[Tuple[int, JsonDict]]: """Have we already responded to a transaction with the same id and origin? Returns: `None` if we have not previously responded to this transaction or a 2-tuple of `(int, dict)` representing the response code and response body. """ transaction_id = transaction.transaction_id if not transaction_id: raise RuntimeError("Cannot persist a transaction with no transaction_id") return await self.store.get_received_txn_response(transaction_id, origin) async def set_response( self, origin: str, transaction: Transaction, code: int, response: JsonDict ) -> None: """Persist how we responded to a transaction.""" transaction_id = transaction.transaction_id if not transaction_id: raise RuntimeError("Cannot persist a transaction with no transaction_id") await self.store.set_received_txn_response( transaction_id, origin, code, response ) synapse-1.100.0/synapse/federation/send_queue.py000066400000000000000000000416631455622526000216650ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """A federation sender that forwards things to be sent across replication to a worker process. It assumes there is a single worker process feeding off of it. Each row in the replication stream consists of a type and some json, where the types indicate whether they are presence, or edus, etc. Ephemeral or non-event data are queued up in-memory. When the worker requests updates since a particular point, all in-memory data since before that point is dropped. We also expire things in the queue after 5 minutes, to ensure that a dead worker doesn't cause the queues to grow limitlessly. Events are replicated via a separate events stream. """ import logging from typing import ( TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Sized, Tuple, Type, ) import attr from sortedcontainers import SortedDict from synapse.api.presence import UserPresenceState from synapse.federation.sender import AbstractFederationSender, FederationSender from synapse.metrics import LaterGauge from synapse.replication.tcp.streams.federation import FederationStream from synapse.types import JsonDict, ReadReceipt, RoomStreamToken, StrCollection from synapse.util.metrics import Measure from .units import Edu if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class FederationRemoteSendQueue(AbstractFederationSender): """A drop in replacement for FederationSender""" def __init__(self, hs: "HomeServer"): self.server_name = hs.hostname self.clock = hs.get_clock() self.notifier = hs.get_notifier() self.is_mine_id = hs.is_mine_id self.is_mine_server_name = hs.is_mine_server_name # We may have multiple federation sender instances, so we need to track # their positions separately. self._sender_instances = hs.config.worker.federation_shard_config.instances self._sender_positions: Dict[str, int] = {} # Pending presence map user_id -> UserPresenceState self.presence_map: Dict[str, UserPresenceState] = {} # Stores the destinations we need to explicitly send presence to about a # given user. # Stream position -> (user_id, destinations) self.presence_destinations: SortedDict[ int, Tuple[str, Iterable[str]] ] = SortedDict() # (destination, key) -> EDU self.keyed_edu: Dict[Tuple[str, tuple], Edu] = {} # stream position -> (destination, key) self.keyed_edu_changed: SortedDict[int, Tuple[str, tuple]] = SortedDict() self.edus: SortedDict[int, Edu] = SortedDict() # stream ID for the next entry into keyed_edu_changed/edus. self.pos = 1 # map from stream ID to the time that stream entry was generated, so that we # can clear out entries after a while self.pos_time: SortedDict[int, int] = SortedDict() # EVERYTHING IS SAD. In particular, python only makes new scopes when # we make a new function, so we need to make a new function so the inner # lambda binds to the queue rather than to the name of the queue which # changes. ARGH. def register(name: str, queue: Sized) -> None: LaterGauge( "synapse_federation_send_queue_%s_size" % (queue_name,), "", [], lambda: len(queue), ) for queue_name in [ "presence_map", "keyed_edu", "keyed_edu_changed", "edus", "pos_time", "presence_destinations", ]: register(queue_name, getattr(self, queue_name)) self.clock.looping_call(self._clear_queue, 30 * 1000) def _next_pos(self) -> int: pos = self.pos self.pos += 1 self.pos_time[self.clock.time_msec()] = pos return pos def _clear_queue(self) -> None: """Clear the queues for anything older than N minutes""" FIVE_MINUTES_AGO = 5 * 60 * 1000 now = self.clock.time_msec() keys = self.pos_time.keys() time = self.pos_time.bisect_left(now - FIVE_MINUTES_AGO) if not keys[:time]: return position_to_delete = max(keys[:time]) for key in keys[:time]: del self.pos_time[key] self._clear_queue_before_pos(position_to_delete) def _clear_queue_before_pos(self, position_to_delete: int) -> None: """Clear all the queues from before a given position""" with Measure(self.clock, "send_queue._clear"): # Delete things out of presence maps keys = self.presence_destinations.keys() i = self.presence_destinations.bisect_left(position_to_delete) for key in keys[:i]: del self.presence_destinations[key] user_ids = {user_id for user_id, _ in self.presence_destinations.values()} to_del = [ user_id for user_id in self.presence_map if user_id not in user_ids ] for user_id in to_del: del self.presence_map[user_id] # Delete things out of keyed edus keys = self.keyed_edu_changed.keys() i = self.keyed_edu_changed.bisect_left(position_to_delete) for key in keys[:i]: del self.keyed_edu_changed[key] live_keys = set() for edu_key in self.keyed_edu_changed.values(): live_keys.add(edu_key) keys_to_del = [ edu_key for edu_key in self.keyed_edu if edu_key not in live_keys ] for edu_key in keys_to_del: del self.keyed_edu[edu_key] # Delete things out of edu map keys = self.edus.keys() i = self.edus.bisect_left(position_to_delete) for key in keys[:i]: del self.edus[key] def notify_new_events(self, max_token: RoomStreamToken) -> None: """As per FederationSender""" # This should never get called. raise NotImplementedError() def build_and_send_edu( self, destination: str, edu_type: str, content: JsonDict, key: Optional[Hashable] = None, ) -> None: """As per FederationSender""" if self.is_mine_server_name(destination): logger.info("Not sending EDU to ourselves") return pos = self._next_pos() edu = Edu( origin=self.server_name, destination=destination, edu_type=edu_type, content=content, ) if key: assert isinstance(key, tuple) self.keyed_edu[(destination, key)] = edu self.keyed_edu_changed[pos] = (destination, key) else: self.edus[pos] = edu self.notifier.on_new_replication_data() async def send_read_receipt(self, receipt: ReadReceipt) -> None: """As per FederationSender Args: receipt: """ # nothing to do here: the replication listener will handle it. async def send_presence_to_destinations( self, states: Iterable[UserPresenceState], destinations: Iterable[str] ) -> None: """As per FederationSender Args: states destinations """ for state in states: pos = self._next_pos() self.presence_map.update({state.user_id: state for state in states}) self.presence_destinations[pos] = (state.user_id, destinations) self.notifier.on_new_replication_data() async def send_device_messages( self, destinations: StrCollection, immediate: bool = True ) -> None: """As per FederationSender""" # We don't need to replicate this as it gets sent down a different # stream. def wake_destination(self, server: str) -> None: pass def get_current_token(self) -> int: return self.pos - 1 def federation_ack(self, instance_name: str, token: int) -> None: if self._sender_instances: # If we have configured multiple federation sender instances we need # to track their positions separately, and only clear the queue up # to the token all instances have acked. self._sender_positions[instance_name] = token token = min(self._sender_positions.values()) self._clear_queue_before_pos(token) async def get_replication_rows( self, instance_name: str, from_token: int, to_token: int, target_row_count: int ) -> Tuple[List[Tuple[int, Tuple]], int, bool]: """Get rows to be sent over federation between the two tokens Args: instance_name: the name of the current process from_token: the previous stream token: the starting point for fetching the updates to_token: the new stream token: the point to get updates up to target_row_count: a target for the number of rows to be returned. Returns: a triplet `(updates, new_last_token, limited)`, where: * `updates` is a list of `(token, row)` entries. * `new_last_token` is the new position in stream. * `limited` is whether there are more updates to fetch. """ # TODO: Handle target_row_count. # To handle restarts where we wrap around if from_token > self.pos: from_token = -1 # list of tuple(int, BaseFederationRow), where the first is the position # of the federation stream. rows: List[Tuple[int, BaseFederationRow]] = [] # Fetch presence to send to destinations i = self.presence_destinations.bisect_right(from_token) j = self.presence_destinations.bisect_right(to_token) + 1 for pos, (user_id, dests) in self.presence_destinations.items()[i:j]: rows.append( ( pos, PresenceDestinationsRow( state=self.presence_map[user_id], destinations=list(dests) ), ) ) # Fetch changes keyed edus i = self.keyed_edu_changed.bisect_right(from_token) j = self.keyed_edu_changed.bisect_right(to_token) + 1 # We purposefully clobber based on the key here, python dict comprehensions # always use the last value, so this will correctly point to the last # stream position. keyed_edus = {v: k for k, v in self.keyed_edu_changed.items()[i:j]} for (destination, edu_key), pos in keyed_edus.items(): rows.append( ( pos, KeyedEduRow( key=edu_key, edu=self.keyed_edu[(destination, edu_key)] ), ) ) # Fetch changed edus i = self.edus.bisect_right(from_token) j = self.edus.bisect_right(to_token) + 1 edus = self.edus.items()[i:j] for pos, edu in edus: rows.append((pos, EduRow(edu))) # Sort rows based on pos rows.sort() return ( [(pos, (row.TypeId, row.to_data())) for pos, row in rows], to_token, False, ) class BaseFederationRow: """Base class for rows to be sent in the federation stream. Specifies how to identify, serialize and deserialize the different types. """ TypeId = "" # Unique string that ids the type. Must be overridden in sub classes. @staticmethod def from_data(data: JsonDict) -> "BaseFederationRow": """Parse the data from the federation stream into a row. Args: data: The value of ``data`` from FederationStreamRow.data, type depends on the type of stream """ raise NotImplementedError() def to_data(self) -> JsonDict: """Serialize this row to be sent over the federation stream. Returns: The value to be sent in FederationStreamRow.data. The type depends on the type of stream. """ raise NotImplementedError() def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: """Add this row to the appropriate field in the buffer ready for this to be sent over federation. We use a buffer so that we can batch up events that have come in at the same time and send them all at once. Args: buff (BufferedToSend) """ raise NotImplementedError() @attr.s(slots=True, frozen=True, auto_attribs=True) class PresenceDestinationsRow(BaseFederationRow): state: UserPresenceState destinations: List[str] TypeId = "pd" @staticmethod def from_data(data: JsonDict) -> "PresenceDestinationsRow": return PresenceDestinationsRow( state=UserPresenceState(**data["state"]), destinations=data["dests"] ) def to_data(self) -> JsonDict: return {"state": self.state.as_dict(), "dests": self.destinations} def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: buff.presence_destinations.append((self.state, self.destinations)) @attr.s(slots=True, frozen=True, auto_attribs=True) class KeyedEduRow(BaseFederationRow): """Streams EDUs that have an associated key that is ued to clobber. For example, typing EDUs clobber based on room_id. """ key: Tuple[str, ...] # the edu key passed to send_edu edu: Edu TypeId = "k" @staticmethod def from_data(data: JsonDict) -> "KeyedEduRow": return KeyedEduRow(key=tuple(data["key"]), edu=Edu(**data["edu"])) def to_data(self) -> JsonDict: return {"key": self.key, "edu": self.edu.get_internal_dict()} def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: buff.keyed_edus.setdefault(self.edu.destination, {})[self.key] = self.edu @attr.s(slots=True, frozen=True, auto_attribs=True) class EduRow(BaseFederationRow): """Streams EDUs that don't have keys. See KeyedEduRow""" edu: Edu TypeId = "e" @staticmethod def from_data(data: JsonDict) -> "EduRow": return EduRow(Edu(**data)) def to_data(self) -> JsonDict: return self.edu.get_internal_dict() def add_to_buffer(self, buff: "ParsedFederationStreamData") -> None: buff.edus.setdefault(self.edu.destination, []).append(self.edu) _rowtypes: Tuple[Type[BaseFederationRow], ...] = ( PresenceDestinationsRow, KeyedEduRow, EduRow, ) TypeToRow = {Row.TypeId: Row for Row in _rowtypes} @attr.s(slots=True, frozen=True, auto_attribs=True) class ParsedFederationStreamData: # list of tuples of UserPresenceState and destinations presence_destinations: List[Tuple[UserPresenceState, List[str]]] # dict of destination -> { key -> Edu } keyed_edus: Dict[str, Dict[Tuple[str, ...], Edu]] # dict of destination -> [Edu] edus: Dict[str, List[Edu]] async def process_rows_for_federation( transaction_queue: FederationSender, rows: List[FederationStream.FederationStreamRow], ) -> None: """Parse a list of rows from the federation stream and put them in the transaction queue ready for sending to the relevant homeservers. Args: transaction_queue rows """ # The federation stream contains a bunch of different types of # rows that need to be handled differently. We parse the rows, put # them into the appropriate collection and then send them off. buff = ParsedFederationStreamData( presence_destinations=[], keyed_edus={}, edus={}, ) # Parse the rows in the stream and add to the buffer for row in rows: if row.type not in TypeToRow: logger.error("Unrecognized federation row type %r", row.type) continue RowType = TypeToRow[row.type] parsed_row = RowType.from_data(row.data) parsed_row.add_to_buffer(buff) for state, destinations in buff.presence_destinations: await transaction_queue.send_presence_to_destinations( states=[state], destinations=destinations ) for edu_map in buff.keyed_edus.values(): for key, edu in edu_map.items(): transaction_queue.send_edu(edu, key) for edu_list in buff.edus.values(): for edu in edu_list: transaction_queue.send_edu(edu, None) synapse-1.100.0/synapse/federation/sender/000077500000000000000000000000001455622526000204245ustar00rootroot00000000000000synapse-1.100.0/synapse/federation/sender/__init__.py000066400000000000000000001213011455622526000225330ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ The Federation Sender is responsible for sending Persistent Data Units (PDUs) and Ephemeral Data Units (EDUs) to other homeservers using the `/send` Federation API. ## How do PDUs get sent? The Federation Sender is made aware of new PDUs due to `FederationSender.notify_new_events`. When the sender is notified about a newly-persisted PDU that originates from this homeserver and is not an out-of-band event, we pass the PDU to the `_PerDestinationQueue` for each remote homeserver that is in the room at that point in the DAG. ### Per-Destination Queues There is one `PerDestinationQueue` per 'destination' homeserver. The `PerDestinationQueue` maintains the following information about the destination: - whether the destination is currently in [catch-up mode (see below)](#catch-up-mode); - a queue of PDUs to be sent to the destination; and - a queue of EDUs to be sent to the destination (not considered in this section). Upon a new PDU being enqueued, `attempt_new_transaction` is called to start a new transaction if there is not already one in progress. ### Transactions and the Transaction Transmission Loop Each federation HTTP request to the `/send` endpoint is referred to as a 'transaction'. The body of the HTTP request contains a list of PDUs and EDUs to send to the destination. The *Transaction Transmission Loop* (`_transaction_transmission_loop`) is responsible for emptying the queued PDUs (and EDUs) from a `PerDestinationQueue` by sending them to the destination. There can only be one transaction in flight for a given destination at any time. (Other than preventing us from overloading the destination, this also makes it easier to reason about because we process events sequentially for each destination. This is useful for *Catch-Up Mode*, described later.) The loop continues so long as there is anything to send. At each iteration of the loop, we: - dequeue up to 50 PDUs (and up to 100 EDUs). - make the `/send` request to the destination homeserver with the dequeued PDUs and EDUs. - if successful, make note of the fact that we succeeded in transmitting PDUs up to the given `stream_ordering` of the latest PDU by - if unsuccessful, back off from the remote homeserver for some time. If we have been unsuccessful for too long (when the backoff interval grows to exceed 1 hour), the in-memory queues are emptied and we enter [*Catch-Up Mode*, described below](#catch-up-mode). ### Catch-Up Mode When the `PerDestinationQueue` has the catch-up flag set, the *Catch-Up Transmission Loop* (`_catch_up_transmission_loop`) is used in lieu of the regular `_transaction_transmission_loop`. (Only once the catch-up mode has been exited can the regular transaction transmission behaviour be resumed.) *Catch-Up Mode*, entered upon Synapse startup or once a homeserver has fallen behind due to connection problems, is responsible for sending PDUs that have been missed by the destination homeserver. (PDUs can be missed because the `PerDestinationQueue` is volatile — i.e. resets on startup — and it does not hold PDUs forever if `/send` requests to the destination fail.) The catch-up mechanism makes use of the `last_successful_stream_ordering` column in the `destinations` table (which gives the `stream_ordering` of the most recent successfully sent PDU) and the `stream_ordering` column in the `destination_rooms` table (which gives, for each room, the `stream_ordering` of the most recent PDU that needs to be sent to this destination). Each iteration of the loop pulls out 50 `destination_rooms` entries with the oldest `stream_ordering`s that are greater than the `last_successful_stream_ordering`. In other words, from the set of latest PDUs in each room to be sent to the destination, the 50 oldest such PDUs are pulled out. These PDUs could, in principle, now be directly sent to the destination. However, as an optimisation intended to prevent overloading destination homeservers, we instead attempt to send the latest forward extremities so long as the destination homeserver is still eligible to receive those. This reduces load on the destination **in aggregate** because all Synapse homeservers will behave according to this principle and therefore avoid sending lots of different PDUs at different points in the DAG to a recovering homeserver. *This optimisation is not currently valid in rooms which are partial-state on this homeserver, since we are unable to determine whether the destination homeserver is eligible to receive the latest forward extremities unless this homeserver sent those PDUs — in this case, we just send the latest PDUs originating from this server and skip this optimisation.* Whilst PDUs are sent through this mechanism, the position of `last_successful_stream_ordering` is advanced as normal. Once there are no longer any rooms containing outstanding PDUs to be sent to the destination *that are not already in the `PerDestinationQueue` because they arrived since Catch-Up Mode was enabled*, Catch-Up Mode is exited and we return to `_transaction_transmission_loop`. #### A note on failures and back-offs If a remote server is unreachable over federation, we back off from that server, with an exponentially-increasing retry interval. We automatically retry after the retry interval expires (roughly, the logic to do so being triggered every minute). If the backoff grows too large (> 1 hour), the in-memory queue is emptied (to prevent unbounded growth) and Catch-Up Mode is entered. It is worth noting that the back-off for a remote server is cleared once an inbound request from that remote server is received (see `notify_remote_server_up`). At this point, the transaction transmission loop is also started up, to proactively send missed PDUs and EDUs to the destination (i.e. you don't need to wait for a new PDU or EDU, destined for that destination, to be created in order to send out missed PDUs and EDUs). """ import abc import logging from collections import OrderedDict from typing import ( TYPE_CHECKING, Collection, Dict, Hashable, Iterable, List, Optional, Set, Tuple, ) import attr from prometheus_client import Counter from typing_extensions import Literal from twisted.internet import defer import synapse.metrics from synapse.api.presence import UserPresenceState from synapse.events import EventBase from synapse.federation.sender.per_destination_queue import ( CATCHUP_RETRY_INTERVAL, PerDestinationQueue, ) from synapse.federation.sender.transaction_manager import TransactionManager from synapse.federation.units import Edu from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.metrics import ( LaterGauge, event_processing_loop_counter, event_processing_loop_room_count, events_processed_counter, ) from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.types import JsonDict, ReadReceipt, RoomStreamToken, StrCollection from synapse.util import Clock from synapse.util.metrics import Measure from synapse.util.retryutils import filter_destinations_by_retry_limiter if TYPE_CHECKING: from synapse.events.presence_router import PresenceRouter from synapse.server import HomeServer logger = logging.getLogger(__name__) sent_pdus_destination_dist_count = Counter( "synapse_federation_client_sent_pdu_destinations_count", "Number of PDUs queued for sending to one or more destinations", ) sent_pdus_destination_dist_total = Counter( "synapse_federation_client_sent_pdu_destinations", "Total number of PDUs queued for sending across all destinations", ) # Time (in s) to wait before trying to wake up destinations that have # catch-up outstanding. This will also be the delay applied at startup # before trying the same. # Please note that rate limiting still applies, so while the loop is # executed every X seconds the destinations may not be wake up because # they are being rate limited following previous attempt failures. WAKEUP_RETRY_PERIOD_SEC = 60 # Time (in s) to wait in between waking up each destination, i.e. one destination # will be woken up every seconds until we have woken every destination # has outstanding catch-up. WAKEUP_INTERVAL_BETWEEN_DESTINATIONS_SEC = 5 class AbstractFederationSender(metaclass=abc.ABCMeta): @abc.abstractmethod def notify_new_events(self, max_token: RoomStreamToken) -> None: """This gets called when we have some new events we might want to send out to other servers. """ raise NotImplementedError() @abc.abstractmethod async def send_read_receipt(self, receipt: ReadReceipt) -> None: """Send a RR to any other servers in the room Args: receipt: receipt to be sent """ raise NotImplementedError() @abc.abstractmethod async def send_presence_to_destinations( self, states: Iterable[UserPresenceState], destinations: Iterable[str] ) -> None: """Send the given presence states to the given destinations. Args: destinations: """ raise NotImplementedError() @abc.abstractmethod def build_and_send_edu( self, destination: str, edu_type: str, content: JsonDict, key: Optional[Hashable] = None, ) -> None: """Construct an Edu object, and queue it for sending Args: destination: name of server to send to edu_type: type of EDU to send content: content of EDU key: clobbering key for this edu """ raise NotImplementedError() @abc.abstractmethod async def send_device_messages( self, destinations: StrCollection, immediate: bool = True ) -> None: """Tells the sender that a new device message is ready to be sent to the destinations. The `immediate` flag specifies whether the messages should be tried to be sent immediately, or whether it can be delayed for a short while (to aid performance). """ raise NotImplementedError() @abc.abstractmethod def wake_destination(self, destination: str) -> None: """Called when we want to retry sending transactions to a remote. This is mainly useful if the remote server has been down and we think it might have come back. """ raise NotImplementedError() @abc.abstractmethod def get_current_token(self) -> int: raise NotImplementedError() @abc.abstractmethod def federation_ack(self, instance_name: str, token: int) -> None: raise NotImplementedError() @abc.abstractmethod async def get_replication_rows( self, instance_name: str, from_token: int, to_token: int, target_row_count: int ) -> Tuple[List[Tuple[int, Tuple]], int, bool]: raise NotImplementedError() @attr.s class _DestinationWakeupQueue: """A queue of destinations that need to be woken up due to new updates. Staggers waking up of per destination queues to ensure that we don't attempt to start TLS connections with many hosts all at once, leading to pinned CPU. """ # The maximum duration in seconds between queuing up a destination and it # being woken up. _MAX_TIME_IN_QUEUE = 30.0 # The maximum duration in seconds between waking up consecutive destination # queues. _MAX_DELAY = 0.1 sender: "FederationSender" = attr.ib() clock: Clock = attr.ib() queue: "OrderedDict[str, Literal[None]]" = attr.ib(factory=OrderedDict) processing: bool = attr.ib(default=False) def add_to_queue(self, destination: str) -> None: """Add a destination to the queue to be woken up.""" self.queue[destination] = None if not self.processing: self._handle() @wrap_as_background_process("_DestinationWakeupQueue.handle") async def _handle(self) -> None: """Background process to drain the queue.""" if not self.queue: return assert not self.processing self.processing = True try: # We start with a delay that should drain the queue quickly enough that # we process all destinations in the queue in _MAX_TIME_IN_QUEUE # seconds. # # We also add an upper bound to the delay, to gracefully handle the # case where the queue only has a few entries in it. current_sleep_seconds = min( self._MAX_DELAY, self._MAX_TIME_IN_QUEUE / len(self.queue) ) while self.queue: destination, _ = self.queue.popitem(last=False) queue = self.sender._get_per_destination_queue(destination) if not queue._new_data_to_send: # The per destination queue has already been woken up. continue queue.attempt_new_transaction() await self.clock.sleep(current_sleep_seconds) if not self.queue: break # More destinations may have been added to the queue, so we may # need to reduce the delay to ensure everything gets processed # within _MAX_TIME_IN_QUEUE seconds. current_sleep_seconds = min( current_sleep_seconds, self._MAX_TIME_IN_QUEUE / len(self.queue) ) finally: self.processing = False class FederationSender(AbstractFederationSender): def __init__(self, hs: "HomeServer"): self.hs = hs self.server_name = hs.hostname self.store = hs.get_datastores().main self.state = hs.get_state_handler() self._storage_controllers = hs.get_storage_controllers() self.clock = hs.get_clock() self.is_mine_id = hs.is_mine_id self.is_mine_server_name = hs.is_mine_server_name self._presence_router: Optional["PresenceRouter"] = None self._transaction_manager = TransactionManager(hs) self._instance_name = hs.get_instance_name() self._federation_shard_config = hs.config.worker.federation_shard_config # map from destination to PerDestinationQueue self._per_destination_queues: Dict[str, PerDestinationQueue] = {} LaterGauge( "synapse_federation_transaction_queue_pending_destinations", "", [], lambda: sum( 1 for d in self._per_destination_queues.values() if d.transmission_loop_running ), ) LaterGauge( "synapse_federation_transaction_queue_pending_pdus", "", [], lambda: sum( d.pending_pdu_count() for d in self._per_destination_queues.values() ), ) LaterGauge( "synapse_federation_transaction_queue_pending_edus", "", [], lambda: sum( d.pending_edu_count() for d in self._per_destination_queues.values() ), ) self._is_processing = False self._last_poked_id = -1 # map from room_id to a set of PerDestinationQueues which we believe are # awaiting a call to flush_read_receipts_for_room. The presence of an entry # here for a given room means that we are rate-limiting RR flushes to that room, # and that there is a pending call to _flush_rrs_for_room in the system. self._queues_awaiting_rr_flush_by_room: Dict[str, Set[PerDestinationQueue]] = {} self._rr_txn_interval_per_room_ms = ( 1000.0 / hs.config.ratelimiting.federation_rr_transactions_per_room_per_second ) # Regularly wake up destinations that have outstanding PDUs to be caught up self.clock.looping_call( run_as_background_process, WAKEUP_RETRY_PERIOD_SEC * 1000.0, "wake_destinations_needing_catchup", self._wake_destinations_needing_catchup, ) self._external_cache = hs.get_external_cache() self._destination_wakeup_queue = _DestinationWakeupQueue(self, self.clock) def _get_per_destination_queue(self, destination: str) -> PerDestinationQueue: """Get or create a PerDestinationQueue for the given destination Args: destination: server_name of remote server """ queue = self._per_destination_queues.get(destination) if not queue: queue = PerDestinationQueue(self.hs, self._transaction_manager, destination) self._per_destination_queues[destination] = queue return queue def notify_new_events(self, max_token: RoomStreamToken) -> None: """This gets called when we have some new events we might want to send out to other servers. """ # We just use the minimum stream ordering and ignore the vector clock # component. This is safe to do as long as we *always* ignore the vector # clock components. current_id = max_token.stream self._last_poked_id = max(current_id, self._last_poked_id) if self._is_processing: return # fire off a processing loop in the background run_as_background_process( "process_event_queue_for_federation", self._process_event_queue_loop ) async def _process_event_queue_loop(self) -> None: try: self._is_processing = True while True: last_token = await self.store.get_federation_out_pos("events") ( next_token, event_to_received_ts, ) = await self.store.get_all_new_event_ids_stream( last_token, self._last_poked_id, limit=100 ) event_ids = event_to_received_ts.keys() event_entries = await self.store.get_unredacted_events_from_cache_or_db( event_ids ) logger.debug( "Handling %i -> %i: %i events to send (current id %i)", last_token, next_token, len(event_entries), self._last_poked_id, ) if not event_entries and next_token >= self._last_poked_id: logger.debug("All events processed") break async def handle_event(event: EventBase) -> None: # Only send events for this server. send_on_behalf_of = event.internal_metadata.get_send_on_behalf_of() is_mine = self.is_mine_id(event.sender) if not is_mine and send_on_behalf_of is None: logger.debug("Not sending remote-origin event %s", event) return # We also want to not send out-of-band membership events. # # OOB memberships are used in three (and a half) situations: # # (1) invite events which we have received over federation. Those # will have a `sender` on a different server, so will be # skipped by the "is_mine" test above anyway. # # (2) rejections of invites to federated rooms - either remotely # or locally generated. (Such rejections are normally # created via federation, in which case the remote server is # responsible for sending out the rejection. If that fails, # we'll create a leave event locally, but that's only really # for the benefit of the invited user - we don't have enough # information to send it out over federation). # # (2a) rescinded knocks. These are identical to rejected invites. # # (3) knock events which we have sent over federation. As with # invite rejections, the remote server should send them out to # the federation. # # So, in all the above cases, we want to ignore such events. # # OOB memberships are always(?) outliers anyway, so if we *don't* # ignore them, we'll get an exception further down when we try to # fetch the membership list for the room. # # Arguably, we could equivalently ignore all outliers here, since # in theory the only way for an outlier with a local `sender` to # exist is by being an OOB membership (via one of (2), (2a) or (3) # above). # if event.internal_metadata.is_out_of_band_membership(): logger.debug("Not sending OOB membership event %s", event) return # Finally, there are some other events that we should not send out # until someone asks for them. They are explicitly flagged as such # with `proactively_send: False`. if not event.internal_metadata.should_proactively_send(): logger.debug( "Not sending event with proactively_send=false: %s", event ) return destinations: Optional[Collection[str]] = None if not event.prev_event_ids(): # If there are no prev event IDs then the state is empty # and so no remote servers in the room destinations = set() if destinations is None: # During partial join we use the set of servers that we got # when beginning the join. It's still possible that we send # events to servers that left the room in the meantime, but # we consider that an acceptable risk since it is only our own # events that we leak and not other server's ones. partial_state_destinations = ( await self.store.get_partial_state_servers_at_join( event.room_id ) ) if partial_state_destinations is not None: destinations = partial_state_destinations if destinations is None: # We check the external cache for the destinations, which is # stored per state group. sg = await self._external_cache.get( "event_to_prev_state_group", event.event_id ) if sg: destinations = await self._external_cache.get( "get_joined_hosts", str(sg) ) if destinations is None: # Add logging to help track down https://github.com/matrix-org/synapse/issues/13444 logger.info( "Unexpectedly did not have cached destinations for %s / %s", sg, event.event_id, ) else: # Add logging to help track down https://github.com/matrix-org/synapse/issues/13444 logger.info( "Unexpectedly did not have cached prev group for %s", event.event_id, ) if destinations is None: try: # Get the state from before the event. # We need to make sure that this is the state from before # the event and not from after it. # Otherwise if the last member on a server in a room is # banned then it won't receive the event because it won't # be in the room after the ban. destinations = await self.state.get_hosts_in_room_at_events( event.room_id, event_ids=event.prev_event_ids() ) except Exception: logger.exception( "Failed to calculate hosts in room for event: %s", event.event_id, ) return sharded_destinations = { d for d in destinations if self._federation_shard_config.should_handle( self._instance_name, d ) } if send_on_behalf_of is not None: # If we are sending the event on behalf of another server # then it already has the event and there is no reason to # send the event to it. sharded_destinations.discard(send_on_behalf_of) logger.debug("Sending %s to %r", event, sharded_destinations) if sharded_destinations: await self._send_pdu(event, sharded_destinations) now = self.clock.time_msec() ts = event_to_received_ts[event.event_id] assert ts is not None synapse.metrics.event_processing_lag_by_event.labels( "federation_sender" ).observe((now - ts) / 1000) async def handle_room_events(events: List[EventBase]) -> None: logger.debug( "Handling %i events in room %s", len(events), events[0].room_id ) with Measure(self.clock, "handle_room_events"): for event in events: await handle_event(event) events_by_room: Dict[str, List[EventBase]] = {} for event_id in event_ids: # `event_entries` is unsorted, so we have to iterate over `event_ids` # to ensure the events are in the right order event_cache = event_entries.get(event_id) if event_cache: event = event_cache.event events_by_room.setdefault(event.room_id, []).append(event) await make_deferred_yieldable( defer.gatherResults( [ run_in_background(handle_room_events, evs) for evs in events_by_room.values() ], consumeErrors=True, ) ) logger.debug("Successfully handled up to %i", next_token) await self.store.update_federation_out_pos("events", next_token) if event_entries: now = self.clock.time_msec() ts = max(t for t in event_to_received_ts.values() if t) assert ts is not None synapse.metrics.event_processing_lag.labels( "federation_sender" ).set(now - ts) synapse.metrics.event_processing_last_ts.labels( "federation_sender" ).set(ts) events_processed_counter.inc(len(event_entries)) event_processing_loop_room_count.labels("federation_sender").inc( len(events_by_room) ) event_processing_loop_counter.labels("federation_sender").inc() synapse.metrics.event_processing_positions.labels( "federation_sender" ).set(next_token) finally: self._is_processing = False async def _send_pdu(self, pdu: EventBase, destinations: Iterable[str]) -> None: # We loop through all destinations to see whether we already have # a transaction in progress. If we do, stick it in the pending_pdus # table and we'll get back to it later. destinations = set(destinations) destinations.discard(self.server_name) logger.debug("Sending to: %s", str(destinations)) if not destinations: return sent_pdus_destination_dist_total.inc(len(destinations)) sent_pdus_destination_dist_count.inc() assert pdu.internal_metadata.stream_ordering # track the fact that we have a PDU for these destinations, # to allow us to perform catch-up later on if the remote is unreachable # for a while. await self.store.store_destination_rooms_entries( destinations, pdu.room_id, pdu.internal_metadata.stream_ordering, ) destinations = await filter_destinations_by_retry_limiter( destinations, clock=self.clock, store=self.store, retry_due_within_ms=CATCHUP_RETRY_INTERVAL, ) for destination in destinations: self._get_per_destination_queue(destination).send_pdu(pdu) async def send_read_receipt(self, receipt: ReadReceipt) -> None: """Send a RR to any other servers in the room Args: receipt: receipt to be sent """ # Some background on the rate-limiting going on here. # # It turns out that if we attempt to send out RRs as soon as we get them from # a client, then we end up trying to do several hundred Hz of federation # transactions. (The number of transactions scales as O(N^2) on the size of a # room, since in a large room we have both more RRs coming in, and more servers # to send them to.) # # This leads to a lot of CPU load, and we end up getting behind. The solution # currently adopted is as follows: # # The first receipt in a given room is sent out immediately, at time T0. Any # further receipts are, in theory, batched up for N seconds, where N is calculated # based on the number of servers in the room to achieve a transaction frequency # of around 50Hz. So, for example, if there were 100 servers in the room, then # N would be 100 / 50Hz = 2 seconds. # # Then, after T+N, we flush out any receipts that have accumulated, and restart # the timer to flush out more receipts at T+2N, etc. If no receipts accumulate, # we stop the cycle and go back to the start. # # However, in practice, it is often possible to flush out receipts earlier: in # particular, if we are sending a transaction to a given server anyway (for # example, because we have a PDU or a RR in another room to send), then we may # as well send out all of the pending RRs for that server. So it may be that # by the time we get to T+N, we don't actually have any RRs left to send out. # Nevertheless we continue to buffer up RRs for the room in question until we # reach the point that no RRs arrive between timer ticks. # # For even more background, see https://github.com/matrix-org/synapse/issues/4730. room_id = receipt.room_id # Work out which remote servers should be poked and poke them. domains_set = await self._storage_controllers.state.get_current_hosts_in_room_or_partial_state_approximation( room_id ) domains: StrCollection = [ d for d in domains_set if not self.is_mine_server_name(d) and self._federation_shard_config.should_handle(self._instance_name, d) ] domains = await filter_destinations_by_retry_limiter( domains, clock=self.clock, store=self.store, retry_due_within_ms=CATCHUP_RETRY_INTERVAL, ) if not domains: return queues_pending_flush = self._queues_awaiting_rr_flush_by_room.get(room_id) # if there is no flush yet scheduled, we will send out these receipts with # immediate flushes, and schedule the next flush for this room. if queues_pending_flush is not None: logger.debug("Queuing receipt for: %r", domains) else: logger.debug("Sending receipt to: %r", domains) self._schedule_rr_flush_for_room(room_id, len(domains)) for domain in domains: queue = self._get_per_destination_queue(domain) queue.queue_read_receipt(receipt) # if there is already a RR flush pending for this room, then make sure this # destination is registered for the flush if queues_pending_flush is not None: queues_pending_flush.add(queue) else: queue.flush_read_receipts_for_room(room_id) def _schedule_rr_flush_for_room(self, room_id: str, n_domains: int) -> None: # that is going to cause approximately len(domains) transactions, so now back # off for that multiplied by RR_TXN_INTERVAL_PER_ROOM backoff_ms = self._rr_txn_interval_per_room_ms * n_domains logger.debug("Scheduling RR flush in %s in %d ms", room_id, backoff_ms) self.clock.call_later(backoff_ms, self._flush_rrs_for_room, room_id) self._queues_awaiting_rr_flush_by_room[room_id] = set() def _flush_rrs_for_room(self, room_id: str) -> None: queues = self._queues_awaiting_rr_flush_by_room.pop(room_id) logger.debug("Flushing RRs in %s to %s", room_id, queues) if not queues: # no more RRs arrived for this room; we are done. return # schedule the next flush self._schedule_rr_flush_for_room(room_id, len(queues)) for queue in queues: queue.flush_read_receipts_for_room(room_id) async def send_presence_to_destinations( self, states: Iterable[UserPresenceState], destinations: Iterable[str] ) -> None: """Send the given presence states to the given destinations. destinations (list[str]) """ if not states or not self.hs.config.server.track_presence: # No-op if presence is disabled. return # Ensure we only send out presence states for local users. for state in states: assert self.is_mine_id(state.user_id) destinations = await filter_destinations_by_retry_limiter( [ d for d in destinations if self._federation_shard_config.should_handle(self._instance_name, d) ], clock=self.clock, store=self.store, retry_due_within_ms=CATCHUP_RETRY_INTERVAL, ) for destination in destinations: if self.is_mine_server_name(destination): continue self._get_per_destination_queue(destination).send_presence( states, start_loop=False ) self._destination_wakeup_queue.add_to_queue(destination) def build_and_send_edu( self, destination: str, edu_type: str, content: JsonDict, key: Optional[Hashable] = None, ) -> None: """Construct an Edu object, and queue it for sending Args: destination: name of server to send to edu_type: type of EDU to send content: content of EDU key: clobbering key for this edu """ if self.is_mine_server_name(destination): logger.info("Not sending EDU to ourselves") return if not self._federation_shard_config.should_handle( self._instance_name, destination ): return edu = Edu( origin=self.server_name, destination=destination, edu_type=edu_type, content=content, ) self.send_edu(edu, key) def send_edu(self, edu: Edu, key: Optional[Hashable]) -> None: """Queue an EDU for sending Args: edu: edu to send key: clobbering key for this edu """ if not self._federation_shard_config.should_handle( self._instance_name, edu.destination ): return queue = self._get_per_destination_queue(edu.destination) if key: queue.send_keyed_edu(edu, key) else: queue.send_edu(edu) async def send_device_messages( self, destinations: StrCollection, immediate: bool = True ) -> None: destinations = await filter_destinations_by_retry_limiter( [ destination for destination in destinations if self._federation_shard_config.should_handle( self._instance_name, destination ) and not self.is_mine_server_name(destination) ], clock=self.clock, store=self.store, retry_due_within_ms=CATCHUP_RETRY_INTERVAL, ) for destination in destinations: if immediate: self._get_per_destination_queue(destination).attempt_new_transaction() else: self._get_per_destination_queue(destination).mark_new_data() self._destination_wakeup_queue.add_to_queue(destination) def wake_destination(self, destination: str) -> None: """Called when we want to retry sending transactions to a remote. This is mainly useful if the remote server has been down and we think it might have come back. """ if self.is_mine_server_name(destination): logger.warning("Not waking up ourselves") return if not self._federation_shard_config.should_handle( self._instance_name, destination ): return self._get_per_destination_queue(destination).attempt_new_transaction() @staticmethod def get_current_token() -> int: # Dummy implementation for case where federation sender isn't offloaded # to a worker. return 0 def federation_ack(self, instance_name: str, token: int) -> None: # It is not expected that this gets called on FederationSender. raise NotImplementedError() @staticmethod async def get_replication_rows( instance_name: str, from_token: int, to_token: int, target_row_count: int ) -> Tuple[List[Tuple[int, Tuple]], int, bool]: # Dummy implementation for case where federation sender isn't offloaded # to a worker. return [], 0, False async def _wake_destinations_needing_catchup(self) -> None: """ Wakes up destinations that need catch-up and are not currently being backed off from. In order to reduce load spikes, adds a delay between each destination. """ last_processed: Optional[str] = None while True: destinations_to_wake = ( await self.store.get_catch_up_outstanding_destinations(last_processed) ) if not destinations_to_wake: # finished waking all destinations! break last_processed = destinations_to_wake[-1] destinations_to_wake = [ d for d in destinations_to_wake if self._federation_shard_config.should_handle(self._instance_name, d) ] for destination in destinations_to_wake: logger.info( "Destination %s has outstanding catch-up, waking up.", last_processed, ) self.wake_destination(destination) await self.clock.sleep(WAKEUP_INTERVAL_BETWEEN_DESTINATIONS_SEC) synapse-1.100.0/synapse/federation/sender/per_destination_queue.py000066400000000000000000001021201455622526000253650ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import datetime import logging from types import TracebackType from typing import TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Tuple, Type import attr from prometheus_client import Counter from synapse.api.constants import EduTypes from synapse.api.errors import ( FederationDeniedError, HttpResponseException, RequestSendFailed, ) from synapse.api.presence import UserPresenceState from synapse.events import EventBase from synapse.federation.units import Edu from synapse.handlers.presence import format_user_presence_state from synapse.logging import issue9533_logger from synapse.logging.opentracing import SynapseTags, set_tag from synapse.metrics import sent_transactions_counter from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import JsonDict, ReadReceipt from synapse.util.retryutils import NotRetryingDestination, get_retry_limiter from synapse.visibility import filter_events_for_server if TYPE_CHECKING: import synapse.server # This is defined in the Matrix spec and enforced by the receiver. MAX_EDUS_PER_TRANSACTION = 100 logger = logging.getLogger(__name__) sent_edus_counter = Counter( "synapse_federation_client_sent_edus", "Total number of EDUs successfully sent" ) sent_edus_by_type = Counter( "synapse_federation_client_sent_edus_by_type", "Number of sent EDUs successfully sent, by event type", ["type"], ) # If the retry interval is larger than this then we enter "catchup" mode CATCHUP_RETRY_INTERVAL = 60 * 60 * 1000 class PerDestinationQueue: """ Manages the per-destination transmission queues. Args: hs transaction_sender destination: the server_name of the destination that we are managing transmission for. """ def __init__( self, hs: "synapse.server.HomeServer", transaction_manager: "synapse.federation.sender.TransactionManager", destination: str, ): self._server_name = hs.hostname self._clock = hs.get_clock() self._storage_controllers = hs.get_storage_controllers() self._store = hs.get_datastores().main self._transaction_manager = transaction_manager self._instance_name = hs.get_instance_name() self._federation_shard_config = hs.config.worker.federation_shard_config self._state = hs.get_state_handler() self._should_send_on_this_instance = True if not self._federation_shard_config.should_handle( self._instance_name, destination ): # We don't raise an exception here to avoid taking out any other # processing. We have a guard in `attempt_new_transaction` that # ensure we don't start sending stuff. logger.error( "Create a per destination queue for %s on wrong worker", destination, ) self._should_send_on_this_instance = False self._destination = destination self.transmission_loop_running = False # Flag to signal to any running transmission loop that there is new data # queued up to be sent. self._new_data_to_send = False # True whilst we are sending events that the remote homeserver missed # because it was unreachable. We start in this state so we can perform # catch-up at startup. # New events will only be sent once this is finished, at which point # _catching_up is flipped to False. self._catching_up: bool = True # The stream_ordering of the most recent PDU that was discarded due to # being in catch-up mode. self._catchup_last_skipped: int = 0 # Cache of the last successfully-transmitted stream ordering for this # destination (we are the only updater so this is safe) self._last_successful_stream_ordering: Optional[int] = None # a queue of pending PDUs self._pending_pdus: List[EventBase] = [] # XXX this is never actually used: see # https://github.com/matrix-org/synapse/issues/7549 self._pending_edus: List[Edu] = [] # Pending EDUs by their "key". Keyed EDUs are EDUs that get clobbered # based on their key (e.g. typing events by room_id) # Map of (edu_type, key) -> Edu self._pending_edus_keyed: Dict[Tuple[str, Hashable], Edu] = {} # Map of user_id -> UserPresenceState of pending presence to be sent to this # destination self._pending_presence: Dict[str, UserPresenceState] = {} # List of room_id -> receipt_type -> user_id -> receipt_dict, # # Each receipt can only have a single receipt per # (room ID, receipt type, user ID, thread ID) tuple. self._pending_receipt_edus: List[Dict[str, Dict[str, Dict[str, dict]]]] = [] self._rrs_pending_flush = False # stream_id of last successfully sent to-device message. # NB: may be a long or an int. self._last_device_stream_id = 0 # stream_id of last successfully sent device list update. self._last_device_list_stream_id = 0 def __str__(self) -> str: return "PerDestinationQueue[%s]" % self._destination def pending_pdu_count(self) -> int: return len(self._pending_pdus) def pending_edu_count(self) -> int: return ( len(self._pending_edus) + len(self._pending_presence) + len(self._pending_edus_keyed) ) def send_pdu(self, pdu: EventBase) -> None: """Add a PDU to the queue, and start the transmission loop if necessary Args: pdu: pdu to send """ if not self._catching_up or self._last_successful_stream_ordering is None: # only enqueue the PDU if we are not catching up (False) or do not # yet know if we have anything to catch up (None) self._pending_pdus.append(pdu) else: assert pdu.internal_metadata.stream_ordering self._catchup_last_skipped = pdu.internal_metadata.stream_ordering self.attempt_new_transaction() def send_presence( self, states: Iterable[UserPresenceState], start_loop: bool = True ) -> None: """Add presence updates to the queue. Args: states: Presence updates to send start_loop: Whether to start the transmission loop if not already running. Args: states: presence to send """ self._pending_presence.update({state.user_id: state for state in states}) self._new_data_to_send = True if start_loop: self.attempt_new_transaction() def queue_read_receipt(self, receipt: ReadReceipt) -> None: """Add a RR to the list to be sent. Doesn't start the transmission loop yet (see flush_read_receipts_for_room) Args: receipt: receipt to be queued """ serialized_receipt: JsonDict = { "event_ids": receipt.event_ids, "data": receipt.data, } if receipt.thread_id is not None: serialized_receipt["data"]["thread_id"] = receipt.thread_id # Find which EDU to add this receipt to. There's three situations depending # on the (room ID, receipt type, user, thread ID) tuple: # # 1. If it fully matches, clobber the information. # 2. If it is missing, add the information. # 3. If the subset tuple of (room ID, receipt type, user) matches, check # the next EDU (or add a new EDU). for edu in self._pending_receipt_edus: receipt_content = edu.setdefault(receipt.room_id, {}).setdefault( receipt.receipt_type, {} ) # If this room ID, receipt type, user ID is not in this EDU, OR if # the full tuple matches, use the current EDU. if ( receipt.user_id not in receipt_content or receipt_content[receipt.user_id].get("thread_id") == receipt.thread_id ): receipt_content[receipt.user_id] = serialized_receipt break # If no matching EDU was found, create a new one. else: self._pending_receipt_edus.append( { receipt.room_id: { receipt.receipt_type: {receipt.user_id: serialized_receipt} } } ) def flush_read_receipts_for_room(self, room_id: str) -> None: # If there are any pending receipts for this room then force-flush them # in a new transaction. for edu in self._pending_receipt_edus: if room_id in edu: self._rrs_pending_flush = True self.attempt_new_transaction() # No use in checking remaining EDUs if the room was found. break def send_keyed_edu(self, edu: Edu, key: Hashable) -> None: self._pending_edus_keyed[(edu.edu_type, key)] = edu self.attempt_new_transaction() def send_edu(self, edu: Edu) -> None: self._pending_edus.append(edu) self.attempt_new_transaction() def mark_new_data(self) -> None: """Marks that the destination has new data to send, without starting a new transaction. If a transaction loop is already in progress then a new transaction will be attempted when the current one finishes. """ self._new_data_to_send = True def attempt_new_transaction(self) -> None: """Try to start a new transaction to this destination If there is already a transaction in progress to this destination, returns immediately. Otherwise kicks off the process of sending a transaction in the background. """ # Mark that we (may) have new things to send, so that any running # transmission loop will recheck whether there is stuff to send. self._new_data_to_send = True if self.transmission_loop_running: # XXX: this can get stuck on by a never-ending # request at which point pending_pdus just keeps growing. # we need application-layer timeouts of some flavour of these # requests logger.debug("TX [%s] Transaction already in progress", self._destination) return if not self._should_send_on_this_instance: # We don't raise an exception here to avoid taking out any other # processing. logger.error( "Trying to start a transaction to %s on wrong worker", self._destination ) return logger.debug("TX [%s] Starting transaction loop", self._destination) run_as_background_process( "federation_transaction_transmission_loop", self._transaction_transmission_loop, ) async def _transaction_transmission_loop(self) -> None: pending_pdus: List[EventBase] = [] try: self.transmission_loop_running = True # This will throw if we wouldn't retry. We do this here so we fail # quickly, but we will later check this again in the http client, # hence why we throw the result away. await get_retry_limiter(self._destination, self._clock, self._store) if self._catching_up: # we potentially need to catch-up first await self._catch_up_transmission_loop() if self._catching_up: # not caught up yet return pending_pdus = [] while True: self._new_data_to_send = False async with _TransactionQueueManager(self) as ( pending_pdus, pending_edus, ): if not pending_pdus and not pending_edus: logger.debug("TX [%s] Nothing to send", self._destination) # If we've gotten told about new things to send during # checking for things to send, we try looking again. # Otherwise new PDUs or EDUs might arrive in the meantime, # but not get sent because we hold the # `transmission_loop_running` flag. if self._new_data_to_send: continue else: return if pending_pdus: logger.debug( "TX [%s] len(pending_pdus_by_dest[dest]) = %d", self._destination, len(pending_pdus), ) await self._transaction_manager.send_new_transaction( self._destination, pending_pdus, pending_edus ) sent_transactions_counter.inc() sent_edus_counter.inc(len(pending_edus)) for edu in pending_edus: sent_edus_by_type.labels(edu.edu_type).inc() except NotRetryingDestination as e: logger.debug( "TX [%s] not ready for retry yet (next retry at %s) - " "dropping transaction for now", self._destination, datetime.datetime.fromtimestamp( (e.retry_last_ts + e.retry_interval) / 1000.0 ), ) if e.retry_interval > CATCHUP_RETRY_INTERVAL: # we won't retry for another hour! # (this suggests a significant outage) # We drop pending EDUs because otherwise they will # rack up indefinitely. # (Dropping PDUs is already performed by `_start_catching_up`.) # Note that: # - the EDUs that are being dropped here are those that we can # afford to drop (specifically, only typing notifications, # read receipts and presence updates are being dropped here) # - Other EDUs such as to_device messages are queued with a # different mechanism # - this is all volatile state that would be lost if the # federation sender restarted anyway # dropping read receipts is a bit sad but should be solved # through another mechanism, because this is all volatile! self._pending_edus = [] self._pending_edus_keyed = {} self._pending_presence = {} self._pending_receipt_edus = [] self._start_catching_up() except FederationDeniedError as e: logger.info(e) except HttpResponseException as e: logger.warning( "TX [%s] Received %d response to transaction: %s", self._destination, e.code, e, ) except RequestSendFailed as e: logger.warning( "TX [%s] Failed to send transaction: %s", self._destination, e ) for p in pending_pdus: logger.info( "Failed to send event %s to %s", p.event_id, self._destination ) except Exception: logger.exception("TX [%s] Failed to send transaction", self._destination) for p in pending_pdus: logger.info( "Failed to send event %s to %s", p.event_id, self._destination ) finally: # We want to be *very* sure we clear this after we stop processing self.transmission_loop_running = False async def _catch_up_transmission_loop(self) -> None: first_catch_up_check = self._last_successful_stream_ordering is None if first_catch_up_check: # first catchup so get last_successful_stream_ordering from database self._last_successful_stream_ordering = ( await self._store.get_destination_last_successful_stream_ordering( self._destination ) ) _tmp_last_successful_stream_ordering = self._last_successful_stream_ordering if _tmp_last_successful_stream_ordering is None: # if it's still None, then this means we don't have the information # in our database ­ we haven't successfully sent a PDU to this server # (at least since the introduction of the feature tracking # last_successful_stream_ordering). # Sadly, this means we can't do anything here as we don't know what # needs catching up — so catching up is futile; let's stop. self._catching_up = False return last_successful_stream_ordering: int = _tmp_last_successful_stream_ordering # get at most 50 catchup room/PDUs while True: event_ids = await self._store.get_catch_up_room_event_ids( self._destination, last_successful_stream_ordering ) if not event_ids: # No more events to catch up on, but we can't ignore the chance # of a race condition, so we check that no new events have been # skipped due to us being in catch-up mode if self._catchup_last_skipped > last_successful_stream_ordering: # another event has been skipped because we were in catch-up mode continue # we are done catching up! self._catching_up = False break if first_catch_up_check: # as this is our check for needing catch-up, we may have PDUs in # the queue from before we *knew* we had to do catch-up, so # clear those out now. self._start_catching_up() # fetch the relevant events from the event store # - redacted behaviour of REDACT is fine, since we only send metadata # of redacted events to the destination. # - don't need to worry about rejected events as we do not actively # forward received events over federation. catchup_pdus = await self._store.get_events_as_list(event_ids) if not catchup_pdus: raise AssertionError( "No events retrieved when we asked for %r. " "This should not happen." % event_ids ) logger.info( "Catching up destination %s with %d PDUs", self._destination, len(catchup_pdus), ) # We send transactions with events from one room only, as its likely # that the remote will have to do additional processing, which may # take some time. It's better to give it small amounts of work # rather than risk the request timing out and repeatedly being # retried, and not making any progress. # # Note: `catchup_pdus` will have exactly one PDU per room. for pdu in catchup_pdus: # The PDU from the DB will be the newest PDU in the room from # *this server* that we tried---but were unable---to send to the remote. # servers may have sent lots of events since then, and we want # to try and tell the remote only about the *latest* events in # the room. This is so that it doesn't get inundated by events # from various parts of the DAG, which all need to be processed. # # Note: this does mean that in large rooms a server coming back # online will get sent the same events from all the different # servers, but the remote will correctly deduplicate them and # handle it only once. # Step 1, fetch the current extremities extrems = await self._store.get_prev_events_for_room(pdu.room_id) if pdu.event_id in extrems: # If the event is in the extremities, then great! We can just # use that without having to do further checks. room_catchup_pdus = [pdu] elif await self._store.is_partial_state_room(pdu.room_id): # We can't be sure which events the destination should # see using only partial state. Avoid doing so, and just retry # sending our the newest PDU the remote is missing from us. room_catchup_pdus = [pdu] else: # If not, fetch the extremities and figure out which we can # send. extrem_events = await self._store.get_events_as_list(extrems) new_pdus = [] for p in extrem_events: # We pulled this from the DB, so it'll be non-null assert p.internal_metadata.stream_ordering # Filter out events that happened before the remote went # offline if ( p.internal_metadata.stream_ordering < last_successful_stream_ordering ): continue new_pdus.append(p) # Filter out events where the server is not in the room, # e.g. it may have left/been kicked. *Ideally* we'd pull # out the kick and send that, but it's a rare edge case # so we don't bother for now (the server that sent the # kick should send it out if its online). new_pdus = await filter_events_for_server( self._storage_controllers, self._destination, self._server_name, new_pdus, redact=False, filter_out_erased_senders=True, filter_out_remote_partial_state_events=True, ) # If we've filtered out all the extremities, fall back to # sending the original event. This should ensure that the # server gets at least some of missed events (especially if # the other sending servers are up). if new_pdus: room_catchup_pdus = new_pdus else: room_catchup_pdus = [pdu] logger.info( "Catching up rooms to %s: %r", self._destination, pdu.room_id ) await self._transaction_manager.send_new_transaction( self._destination, room_catchup_pdus, [] ) sent_transactions_counter.inc() # We pulled this from the DB, so it'll be non-null assert pdu.internal_metadata.stream_ordering # Note that we mark the last successful stream ordering as that # from the *original* PDU, rather than the PDU(s) we actually # send. This is because we use it to mark our position in the # queue of missed PDUs to process. last_successful_stream_ordering = pdu.internal_metadata.stream_ordering self._last_successful_stream_ordering = last_successful_stream_ordering await self._store.set_destination_last_successful_stream_ordering( self._destination, last_successful_stream_ordering ) def _get_receipt_edus(self, force_flush: bool, limit: int) -> Iterable[Edu]: if not self._pending_receipt_edus: return if not force_flush and not self._rrs_pending_flush: # not yet time for this lot return # Send at most limit EDUs for receipts. for content in self._pending_receipt_edus[:limit]: yield Edu( origin=self._server_name, destination=self._destination, edu_type=EduTypes.RECEIPT, content=content, ) self._pending_receipt_edus = self._pending_receipt_edus[limit:] # If there are still pending read-receipts, don't reset the pending flush # flag. if not self._pending_receipt_edus: self._rrs_pending_flush = False def _pop_pending_edus(self, limit: int) -> List[Edu]: pending_edus = self._pending_edus pending_edus, self._pending_edus = pending_edus[:limit], pending_edus[limit:] return pending_edus async def _get_device_update_edus(self, limit: int) -> Tuple[List[Edu], int]: last_device_list = self._last_device_list_stream_id # Retrieve list of new device updates to send to the destination now_stream_id, results = await self._store.get_device_updates_by_remote( self._destination, last_device_list, limit=limit ) edus = [ Edu( origin=self._server_name, destination=self._destination, edu_type=edu_type, content=content, ) for (edu_type, content) in results ] assert len(edus) <= limit, "get_device_updates_by_remote returned too many EDUs" return edus, now_stream_id async def _get_to_device_message_edus(self, limit: int) -> Tuple[List[Edu], int]: last_device_stream_id = self._last_device_stream_id to_device_stream_id = self._store.get_to_device_stream_token() contents, stream_id = await self._store.get_new_device_msgs_for_remote( self._destination, last_device_stream_id, to_device_stream_id, limit ) for content in contents: message_id = content.get("message_id") if not message_id: continue set_tag(SynapseTags.TO_DEVICE_EDU_ID, message_id) edus = [ Edu( origin=self._server_name, destination=self._destination, edu_type=EduTypes.DIRECT_TO_DEVICE, content=content, ) for content in contents ] if edus: issue9533_logger.debug( "Sending %i to-device messages to %s, up to stream id %i", len(edus), self._destination, stream_id, ) return edus, stream_id def _start_catching_up(self) -> None: """ Marks this destination as being in catch-up mode. This throws away the PDU queue. """ self._catching_up = True self._pending_pdus = [] @attr.s(slots=True, auto_attribs=True) class _TransactionQueueManager: """A helper async context manager for pulling stuff off the queues and tracking what was last successfully sent, etc. """ queue: PerDestinationQueue _device_stream_id: Optional[int] = None _device_list_id: Optional[int] = None _last_stream_ordering: Optional[int] = None _pdus: List[EventBase] = attr.Factory(list) async def __aenter__(self) -> Tuple[List[EventBase], List[Edu]]: # First we calculate the EDUs we want to send, if any. # There's a maximum number of EDUs that can be sent with a transaction, # generally device updates and to-device messages get priority, but we # want to ensure that there's room for some other EDUs as well. # # This is done by: # # * Add a presence EDU, if one exists. # * Add up-to a small limit of read receipt EDUs. # * Add to-device EDUs, but leave some space for device list updates. # * Add device list updates EDUs. # * If there's any remaining room, add other EDUs. pending_edus = [] # Add presence EDU. if self.queue._pending_presence: pending_edus.append( Edu( origin=self.queue._server_name, destination=self.queue._destination, edu_type=EduTypes.PRESENCE, content={ "push": [ format_user_presence_state( presence, self.queue._clock.time_msec() ) for presence in self.queue._pending_presence.values() ] }, ) ) self.queue._pending_presence = {} # Add read receipt EDUs. pending_edus.extend(self.queue._get_receipt_edus(force_flush=False, limit=5)) edu_limit = MAX_EDUS_PER_TRANSACTION - len(pending_edus) # Next, prioritize to-device messages so that existing encryption channels # work. We also keep a few slots spare (by reducing the limit) so that # we can still trickle out some device list updates. ( to_device_edus, device_stream_id, ) = await self.queue._get_to_device_message_edus(edu_limit - 10) if to_device_edus: self._device_stream_id = device_stream_id else: self.queue._last_device_stream_id = device_stream_id pending_edus.extend(to_device_edus) edu_limit -= len(to_device_edus) # Add device list update EDUs. device_update_edus, dev_list_id = await self.queue._get_device_update_edus( edu_limit ) if device_update_edus: self._device_list_id = dev_list_id else: self.queue._last_device_list_stream_id = dev_list_id pending_edus.extend(device_update_edus) edu_limit -= len(device_update_edus) # Finally add any other types of EDUs if there is room. other_edus = self.queue._pop_pending_edus(edu_limit) pending_edus.extend(other_edus) edu_limit -= len(other_edus) while edu_limit > 0 and self.queue._pending_edus_keyed: _, val = self.queue._pending_edus_keyed.popitem() pending_edus.append(val) edu_limit -= 1 # Now we look for any PDUs to send, by getting up to 50 PDUs from the # queue self._pdus = self.queue._pending_pdus[:50] if not self._pdus and not pending_edus: return [], [] # if we've decided to send a transaction anyway, and we have room, we # may as well send any pending RRs if edu_limit: pending_edus.extend( self.queue._get_receipt_edus(force_flush=True, limit=edu_limit) ) if self._pdus: self._last_stream_ordering = self._pdus[ -1 ].internal_metadata.stream_ordering assert self._last_stream_ordering return self._pdus, pending_edus async def __aexit__( self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], tb: Optional[TracebackType], ) -> None: if exc_type is not None: # Failed to send transaction, so we bail out. return # Successfully sent transactions, so we remove pending PDUs from the queue if self._pdus: self.queue._pending_pdus = self.queue._pending_pdus[len(self._pdus) :] # Succeeded to send the transaction so we record where we have sent up # to in the various streams if self._device_stream_id: await self.queue._store.delete_device_msgs_for_remote( self.queue._destination, self._device_stream_id ) self.queue._last_device_stream_id = self._device_stream_id # also mark the device updates as sent if self._device_list_id: logger.info( "Marking as sent %r %r", self.queue._destination, self._device_list_id ) await self.queue._store.mark_as_sent_devices_by_remote( self.queue._destination, self._device_list_id ) self.queue._last_device_list_stream_id = self._device_list_id if self._last_stream_ordering: # we sent some PDUs and it was successful, so update our # last_successful_stream_ordering in the destinations table. await self.queue._store.set_destination_last_successful_stream_ordering( self.queue._destination, self._last_stream_ordering ) synapse-1.100.0/synapse/federation/sender/transaction_manager.py000066400000000000000000000155451455622526000250270ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, List from prometheus_client import Gauge from synapse.api.constants import EduTypes from synapse.api.errors import HttpResponseException from synapse.events import EventBase from synapse.federation.persistence import TransactionActions from synapse.federation.units import Edu, Transaction from synapse.logging.opentracing import ( extract_text_map, set_tag, start_active_span_follows_from, tags, whitelisted_homeserver, ) from synapse.types import JsonDict from synapse.util import json_decoder from synapse.util.metrics import measure_func if TYPE_CHECKING: import synapse.server logger = logging.getLogger(__name__) issue_8631_logger = logging.getLogger("synapse.8631_debug") last_pdu_ts_metric = Gauge( "synapse_federation_last_sent_pdu_time", "The timestamp of the last PDU which was successfully sent to the given domain", labelnames=("server_name",), ) class TransactionManager: """Helper class which handles building and sending transactions shared between PerDestinationQueue objects """ def __init__(self, hs: "synapse.server.HomeServer"): self._server_name = hs.hostname self.clock = hs.get_clock() # nb must be called this for @measure_func self._store = hs.get_datastores().main self._transaction_actions = TransactionActions(self._store) self._transport_layer = hs.get_federation_transport_client() self._federation_metrics_domains = ( hs.config.federation.federation_metrics_domains ) # HACK to get unique tx id self._next_txn_id = int(self.clock.time_msec()) @measure_func("_send_new_transaction") async def send_new_transaction( self, destination: str, pdus: List[EventBase], edus: List[Edu], ) -> None: """ Args: destination: The destination to send to (e.g. 'example.org') pdus: In-order list of PDUs to send edus: List of EDUs to send """ # Make a transaction-sending opentracing span. This span follows on from # all the edus in that transaction. This needs to be done since there is # no active span here, so if the edus were not received by the remote the # span would have no causality and it would be forgotten. span_contexts = [] keep_destination = whitelisted_homeserver(destination) for edu in edus: context = edu.get_context() if context: span_contexts.append(extract_text_map(json_decoder.decode(context))) if keep_destination: edu.strip_context() with start_active_span_follows_from("send_transaction", span_contexts): logger.debug("TX [%s] _attempt_new_transaction", destination) txn_id = str(self._next_txn_id) logger.debug( "TX [%s] {%s} Attempting new transaction (pdus: %d, edus: %d)", destination, txn_id, len(pdus), len(edus), ) transaction = Transaction( origin_server_ts=int(self.clock.time_msec()), transaction_id=txn_id, origin=self._server_name, destination=destination, pdus=[p.get_pdu_json() for p in pdus], edus=[edu.get_dict() for edu in edus], ) self._next_txn_id += 1 logger.info( "TX [%s] {%s} Sending transaction [%s], (PDUs: %d, EDUs: %d)", destination, txn_id, transaction.transaction_id, len(pdus), len(edus), ) if issue_8631_logger.isEnabledFor(logging.DEBUG): DEVICE_UPDATE_EDUS = { EduTypes.DEVICE_LIST_UPDATE, EduTypes.SIGNING_KEY_UPDATE, } device_list_updates = [ edu.content for edu in edus if edu.edu_type in DEVICE_UPDATE_EDUS ] if device_list_updates: issue_8631_logger.debug( "about to send txn [%s] including device list updates: %s", transaction.transaction_id, device_list_updates, ) # Actually send the transaction # FIXME (erikj): This is a bit of a hack to make the Pdu age # keys work # FIXME (richardv): I also believe it no longer works. We (now?) store # "age_ts" in "unsigned" rather than at the top level. See # https://github.com/matrix-org/synapse/issues/8429. def json_data_cb() -> JsonDict: data = transaction.get_dict() now = int(self.clock.time_msec()) if "pdus" in data: for p in data["pdus"]: if "age_ts" in p: unsigned = p.setdefault("unsigned", {}) unsigned["age"] = now - int(p["age_ts"]) del p["age_ts"] return data try: response = await self._transport_layer.send_transaction( transaction, json_data_cb ) except HttpResponseException as e: code = e.code set_tag(tags.ERROR, True) logger.info("TX [%s] {%s} got %d response", destination, txn_id, code) raise logger.info("TX [%s] {%s} got 200 response", destination, txn_id) for e_id, r in response.get("pdus", {}).items(): if "error" in r: logger.warning( "TX [%s] {%s} Remote returned error for %s: %s", destination, txn_id, e_id, r, ) if pdus and destination in self._federation_metrics_domains: last_pdu = pdus[-1] last_pdu_ts_metric.labels(server_name=destination).set( last_pdu.origin_server_ts / 1000 ) synapse-1.100.0/synapse/federation/transport/000077500000000000000000000000001455622526000212005ustar00rootroot00000000000000synapse-1.100.0/synapse/federation/transport/__init__.py000066400000000000000000000020561455622526000233140ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """The transport layer is responsible for both sending transactions to remote homeservers and receiving a variety of requests from other homeservers. By default this is done over HTTPS (and all homeservers are required to support HTTPS), however individual pairings of servers may decide to communicate over a different (albeit still reliable) protocol. """ synapse-1.100.0/synapse/federation/transport/client.py000066400000000000000000001067541455622526000230450ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 Sorunome # Copyright 2014-2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import urllib from typing import ( TYPE_CHECKING, Any, BinaryIO, Callable, Collection, Dict, Generator, Iterable, List, Mapping, Optional, Tuple, Union, ) import attr import ijson from synapse.api.constants import Direction, Membership from synapse.api.errors import Codes, HttpResponseException, SynapseError from synapse.api.room_versions import RoomVersion from synapse.api.urls import ( FEDERATION_UNSTABLE_PREFIX, FEDERATION_V1_PREFIX, FEDERATION_V2_PREFIX, ) from synapse.events import EventBase, make_event_from_dict from synapse.federation.units import Transaction from synapse.http.matrixfederationclient import ByteParser, LegacyJsonSendParser from synapse.http.types import QueryParams from synapse.types import JsonDict, UserID from synapse.util import ExceptionBundle if TYPE_CHECKING: from synapse.app.homeserver import HomeServer logger = logging.getLogger(__name__) class TransportLayerClient: """Sends federation HTTP requests to other servers""" def __init__(self, hs: "HomeServer"): self.client = hs.get_federation_http_client() self._is_mine_server_name = hs.is_mine_server_name async def get_room_state_ids( self, destination: str, room_id: str, event_id: str ) -> JsonDict: """Requests the IDs of all state for a given room at the given event. Args: destination: The host name of the remote homeserver we want to get the state from. room_id: the room we want the state of event_id: The event we want the context at. Returns: Results in a dict received from the remote homeserver. """ logger.debug("get_room_state_ids dest=%s, room=%s", destination, room_id) path = _create_v1_path("/state_ids/%s", room_id) return await self.client.get_json( destination, path=path, args={"event_id": event_id}, try_trailing_slash_on_400=True, ) async def get_room_state( self, room_version: RoomVersion, destination: str, room_id: str, event_id: str ) -> "StateRequestResponse": """Requests the full state for a given room at the given event. Args: room_version: the version of the room (required to build the event objects) destination: The host name of the remote homeserver we want to get the state from. room_id: the room we want the state of event_id: The event we want the context at. Returns: Results in a dict received from the remote homeserver. """ path = _create_v1_path("/state/%s", room_id) return await self.client.get_json( destination, path=path, args={"event_id": event_id}, # This can take a looooooong time for large rooms. Give this a generous # timeout of 10 minutes to avoid the partial state resync timing out early # and trying a bunch of servers who haven't seen our join yet. timeout=600_000, parser=_StateParser(room_version), ) async def get_event( self, destination: str, event_id: str, timeout: Optional[int] = None ) -> JsonDict: """Requests the pdu with give id and origin from the given server. Args: destination: The host name of the remote homeserver we want to get the state from. event_id: The id of the event being requested. timeout: How long to try (in ms) the destination for before giving up. None indicates no timeout. Returns: Results in a dict received from the remote homeserver. """ logger.debug("get_pdu dest=%s, event_id=%s", destination, event_id) path = _create_v1_path("/event/%s", event_id) return await self.client.get_json( destination, path=path, timeout=timeout, try_trailing_slash_on_400=True ) async def backfill( self, destination: str, room_id: str, event_tuples: Collection[str], limit: int ) -> Optional[Union[JsonDict, list]]: """Requests `limit` previous PDUs in a given context before list of PDUs. Args: destination room_id event_tuples: Must be a Collection that is falsy when empty. (Iterable is not enough here!) limit Returns: Results in a dict received from the remote homeserver. """ logger.debug( "backfill dest=%s, room_id=%s, event_tuples=%r, limit=%s", destination, room_id, event_tuples, str(limit), ) if not event_tuples: # TODO: raise? return None path = _create_v1_path("/backfill/%s", room_id) args = {"v": event_tuples, "limit": [str(limit)]} return await self.client.get_json( destination, path=path, args=args, try_trailing_slash_on_400=True ) async def timestamp_to_event( self, destination: str, room_id: str, timestamp: int, direction: Direction ) -> Union[JsonDict, List]: """ Calls a remote federating server at `destination` asking for their closest event to the given timestamp in the given direction. Args: destination: Domain name of the remote homeserver room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: indicates whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: Response dict received from the remote homeserver. Raises: Various exceptions when the request fails """ path = _create_v1_path( "/timestamp_to_event/%s", room_id, ) args = {"ts": [str(timestamp)], "dir": [direction.value]} remote_response = await self.client.get_json( destination, path=path, args=args, try_trailing_slash_on_400=True ) return remote_response async def send_transaction( self, transaction: Transaction, json_data_callback: Optional[Callable[[], JsonDict]] = None, ) -> JsonDict: """Sends the given Transaction to its destination Args: transaction Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Fails with ``HTTPRequestException`` if we get an HTTP response code >= 300. Fails with ``NotRetryingDestination`` if we are not yet ready to retry this server. Fails with ``FederationDeniedError`` if this destination is not on our federation whitelist """ logger.debug( "send_data dest=%s, txid=%s", transaction.destination, transaction.transaction_id, ) if self._is_mine_server_name(transaction.destination): raise RuntimeError("Transport layer cannot send to itself!") # FIXME: This is only used by the tests. The actual json sent is # generated by the json_data_callback. json_data = transaction.get_dict() path = _create_v1_path("/send/%s", transaction.transaction_id) return await self.client.put_json( transaction.destination, path=path, data=json_data, json_data_callback=json_data_callback, long_retries=True, try_trailing_slash_on_400=True, # Sending a transaction should always succeed, if it doesn't # then something is wrong and we should backoff. backoff_on_all_error_codes=True, ) async def make_query( self, destination: str, query_type: str, args: QueryParams, retry_on_dns_fail: bool, ignore_backoff: bool = False, prefix: str = FEDERATION_V1_PREFIX, ) -> JsonDict: path = _create_path(prefix, "/query/%s", query_type) return await self.client.get_json( destination=destination, path=path, args=args, retry_on_dns_fail=retry_on_dns_fail, timeout=10000, ignore_backoff=ignore_backoff, ) async def make_membership_event( self, destination: str, room_id: str, user_id: str, membership: str, params: Optional[Mapping[str, Union[str, Iterable[str]]]], ) -> JsonDict: """Asks a remote server to build and sign us a membership event Note that this does not append any events to any graphs. Args: destination: address of remote homeserver room_id: room to join/leave user_id: user to be joined/left membership: one of join/leave params: Query parameters to include in the request. Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body (ie, the new event). Fails with ``HTTPRequestException`` if we get an HTTP response code >= 300. Fails with ``NotRetryingDestination`` if we are not yet ready to retry this server. Fails with ``FederationDeniedError`` if the remote destination is not in our federation whitelist """ valid_memberships = {Membership.JOIN, Membership.LEAVE, Membership.KNOCK} if membership not in valid_memberships: raise RuntimeError( "make_membership_event called with membership='%s', must be one of %s" % (membership, ",".join(valid_memberships)) ) path = _create_v1_path("/make_%s/%s/%s", membership, room_id, user_id) ignore_backoff = False retry_on_dns_fail = False if membership == Membership.LEAVE: # we particularly want to do our best to send leave events. The # problem is that if it fails, we won't retry it later, so if the # remote server was just having a momentary blip, the room will be # out of sync. ignore_backoff = True retry_on_dns_fail = True return await self.client.get_json( destination=destination, path=path, args=params, retry_on_dns_fail=retry_on_dns_fail, timeout=20000, ignore_backoff=ignore_backoff, ) async def send_join_v1( self, room_version: RoomVersion, destination: str, room_id: str, event_id: str, content: JsonDict, ) -> "SendJoinResponse": path = _create_v1_path("/send_join/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, parser=SendJoinParser(room_version, v1_api=True), ) async def send_join_v2( self, room_version: RoomVersion, destination: str, room_id: str, event_id: str, content: JsonDict, omit_members: bool, ) -> "SendJoinResponse": path = _create_v2_path("/send_join/%s/%s", room_id, event_id) query_params: Dict[str, str] = {} # lazy-load state on join query_params["omit_members"] = "true" if omit_members else "false" return await self.client.put_json( destination=destination, path=path, args=query_params, data=content, parser=SendJoinParser(room_version, v1_api=False), ) async def send_leave_v1( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> Tuple[int, JsonDict]: path = _create_v1_path("/send_leave/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, # we want to do our best to send this through. The problem is # that if it fails, we won't retry it later, so if the remote # server was just having a momentary blip, the room will be out of # sync. ignore_backoff=True, parser=LegacyJsonSendParser(), ) async def send_leave_v2( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> JsonDict: path = _create_v2_path("/send_leave/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, # we want to do our best to send this through. The problem is # that if it fails, we won't retry it later, so if the remote # server was just having a momentary blip, the room will be out of # sync. ignore_backoff=True, ) async def send_knock_v1( self, destination: str, room_id: str, event_id: str, content: JsonDict, ) -> JsonDict: """ Sends a signed knock membership event to a remote server. This is the second step for knocking after make_knock. Args: destination: The remote homeserver. room_id: The ID of the room to knock on. event_id: The ID of the knock membership event that we're sending. content: The knock membership event that we're sending. Note that this is not the `content` field of the membership event, but the entire signed membership event itself represented as a JSON dict. Returns: The remote homeserver can optionally return some state from the room. The response dictionary is in the form: {"knock_room_state": [, ...]} The list of state events may be empty. """ path = _create_v1_path("/send_knock/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content ) async def send_invite_v1( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> Tuple[int, JsonDict]: path = _create_v1_path("/invite/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, ignore_backoff=True, parser=LegacyJsonSendParser(), ) async def send_invite_v2( self, destination: str, room_id: str, event_id: str, content: JsonDict ) -> JsonDict: path = _create_v2_path("/invite/%s/%s", room_id, event_id) return await self.client.put_json( destination=destination, path=path, data=content, ignore_backoff=True ) async def get_public_rooms( self, remote_server: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[Dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Get the list of public rooms from a remote homeserver See synapse.federation.federation_client.FederationClient.get_public_rooms for more information. """ path = _create_v1_path("/publicRooms") if search_filter: # this uses MSC2197 (Search Filtering over Federation) data: Dict[str, Any] = {"include_all_networks": include_all_networks} if third_party_instance_id: data["third_party_instance_id"] = third_party_instance_id if limit: data["limit"] = limit if since_token: data["since"] = since_token data["filter"] = search_filter try: response = await self.client.post_json( destination=remote_server, path=path, data=data, ignore_backoff=True ) except HttpResponseException as e: if e.code == 403: raise SynapseError( 403, "You are not allowed to view the public rooms list of %s" % (remote_server,), errcode=Codes.FORBIDDEN, ) raise else: args: Dict[str, Union[str, Iterable[str]]] = { "include_all_networks": "true" if include_all_networks else "false" } if third_party_instance_id: args["third_party_instance_id"] = third_party_instance_id if limit: args["limit"] = str(limit) if since_token: args["since"] = since_token try: response = await self.client.get_json( destination=remote_server, path=path, args=args, ignore_backoff=True ) except HttpResponseException as e: if e.code == 403: raise SynapseError( 403, "You are not allowed to view the public rooms list of %s" % (remote_server,), errcode=Codes.FORBIDDEN, ) raise return response async def exchange_third_party_invite( self, destination: str, room_id: str, event_dict: JsonDict ) -> JsonDict: path = _create_v1_path("/exchange_third_party_invite/%s", room_id) return await self.client.put_json( destination=destination, path=path, data=event_dict ) async def get_event_auth( self, destination: str, room_id: str, event_id: str ) -> JsonDict: path = _create_v1_path("/event_auth/%s/%s", room_id, event_id) return await self.client.get_json(destination=destination, path=path) async def query_client_keys( self, destination: str, query_content: JsonDict, timeout: int ) -> JsonDict: """Query the device keys for a list of user ids hosted on a remote server. Request: { "device_keys": { "": [""] } } Response: { "device_keys": { "": { "": {...} } }, "master_key": { "": {...} } }, "self_signing_key": { "": {...} } } Args: destination: The server to query. query_content: The user ids to query. Returns: A dict containing device and cross-signing keys. """ path = _create_v1_path("/user/keys/query") return await self.client.post_json( destination=destination, path=path, data=query_content, timeout=timeout ) async def query_user_devices( self, destination: str, user_id: str, timeout: int ) -> JsonDict: """Query the devices for a user id hosted on a remote server. Response: { "stream_id": "...", "devices": [ { ... } ], "master_key": { "user_id": "", "usage": [...], "keys": {...}, "signatures": { "": {...} } }, "self_signing_key": { "user_id": "", "usage": [...], "keys": {...}, "signatures": { "": {...} } } } Args: destination: The server to query. query_content: The user ids to query. Returns: A dict containing device and cross-signing keys. """ path = _create_v1_path("/user/devices/%s", user_id) return await self.client.get_json( destination=destination, path=path, timeout=timeout ) async def claim_client_keys( self, user: UserID, destination: str, query_content: JsonDict, timeout: Optional[int], ) -> JsonDict: """Claim one-time keys for a list of devices hosted on a remote server. Request: { "one_time_keys": { "": { "": "" } } } Response: { "one_time_keys": { "": { "": { ":": } } } } Args: user: the user_id of the requesting user destination: The server to query. query_content: The user ids to query. Returns: A dict containing the one-time keys. """ path = _create_v1_path("/user/keys/claim") return await self.client.post_json( destination=destination, path=path, data={"one_time_keys": query_content}, timeout=timeout, ) async def claim_client_keys_unstable( self, user: UserID, destination: str, query_content: JsonDict, timeout: Optional[int], ) -> JsonDict: """Claim one-time keys for a list of devices hosted on a remote server. Request: { "one_time_keys": { "": { "": {"": } } } } Response: { "one_time_keys": { "": { "": { ":": } } } } Args: user: the user_id of the requesting user destination: The server to query. query_content: The user ids to query. Returns: A dict containing the one-time keys. """ path = _create_path(FEDERATION_UNSTABLE_PREFIX, "/user/keys/claim") return await self.client.post_json( destination=destination, path=path, data={"one_time_keys": query_content}, timeout=timeout, ) async def get_missing_events( self, destination: str, room_id: str, earliest_events: Iterable[str], latest_events: Iterable[str], limit: int, min_depth: int, timeout: int, ) -> JsonDict: path = _create_v1_path("/get_missing_events/%s", room_id) return await self.client.post_json( destination=destination, path=path, data={ "limit": int(limit), "min_depth": int(min_depth), "earliest_events": earliest_events, "latest_events": latest_events, }, timeout=timeout, ) async def get_room_complexity(self, destination: str, room_id: str) -> JsonDict: """ Args: destination: The remote server room_id: The room ID to ask about. """ path = _create_path(FEDERATION_UNSTABLE_PREFIX, "/rooms/%s/complexity", room_id) return await self.client.get_json(destination=destination, path=path) async def get_room_hierarchy( self, destination: str, room_id: str, suggested_only: bool ) -> JsonDict: """ Args: destination: The remote server room_id: The room ID to ask about. suggested_only: if True, only suggested rooms will be returned """ path = _create_v1_path("/hierarchy/%s", room_id) return await self.client.get_json( destination=destination, path=path, args={"suggested_only": "true" if suggested_only else "false"}, ) async def get_room_hierarchy_unstable( self, destination: str, room_id: str, suggested_only: bool ) -> JsonDict: """ Args: destination: The remote server room_id: The room ID to ask about. suggested_only: if True, only suggested rooms will be returned """ path = _create_path( FEDERATION_UNSTABLE_PREFIX, "/org.matrix.msc2946/hierarchy/%s", room_id ) return await self.client.get_json( destination=destination, path=path, args={"suggested_only": "true" if suggested_only else "false"}, ) async def get_account_status( self, destination: str, user_ids: List[str] ) -> JsonDict: """ Args: destination: The remote server. user_ids: The user ID(s) for which to request account status(es). """ path = _create_path( FEDERATION_UNSTABLE_PREFIX, "/org.matrix.msc3720/account_status" ) return await self.client.post_json( destination=destination, path=path, data={"user_ids": user_ids} ) async def download_media_r0( self, destination: str, media_id: str, output_stream: BinaryIO, max_size: int, max_timeout_ms: int, ) -> Tuple[int, Dict[bytes, List[bytes]]]: path = f"/_matrix/media/r0/download/{destination}/{media_id}" return await self.client.get_file( destination, path, output_stream=output_stream, max_size=max_size, args={ # tell the remote server to 404 if it doesn't # recognise the server_name, to make sure we don't # end up with a routing loop. "allow_remote": "false", "timeout_ms": str(max_timeout_ms), }, ) async def download_media_v3( self, destination: str, media_id: str, output_stream: BinaryIO, max_size: int, max_timeout_ms: int, ) -> Tuple[int, Dict[bytes, List[bytes]]]: path = f"/_matrix/media/v3/download/{destination}/{media_id}" return await self.client.get_file( destination, path, output_stream=output_stream, max_size=max_size, args={ # tell the remote server to 404 if it doesn't # recognise the server_name, to make sure we don't # end up with a routing loop. "allow_remote": "false", "timeout_ms": str(max_timeout_ms), # Matrix 1.7 allows for this to redirect to another URL, this should # just be ignored for an old homeserver, so always provide it. "allow_redirect": "true", }, follow_redirects=True, ) def _create_path(federation_prefix: str, path: str, *args: str) -> str: """ Ensures that all args are url encoded. """ return federation_prefix + path % tuple(urllib.parse.quote(arg, "") for arg in args) def _create_v1_path(path: str, *args: str) -> str: """Creates a path against V1 federation API from the path template and args. Ensures that all args are url encoded. Example: _create_v1_path("/event/%s", event_id) Args: path: String template for the path args: Args to insert into path. Each arg will be url encoded """ return _create_path(FEDERATION_V1_PREFIX, path, *args) def _create_v2_path(path: str, *args: str) -> str: """Creates a path against V2 federation API from the path template and args. Ensures that all args are url encoded. Example: _create_v2_path("/event/%s", event_id) Args: path: String template for the path args: Args to insert into path. Each arg will be url encoded """ return _create_path(FEDERATION_V2_PREFIX, path, *args) @attr.s(slots=True, auto_attribs=True) class SendJoinResponse: """The parsed response of a `/send_join` request.""" # The list of auth events from the /send_join response. auth_events: List[EventBase] # The list of state from the /send_join response. state: List[EventBase] # The raw join event from the /send_join response. event_dict: JsonDict # The parsed join event from the /send_join response. This will be None if # "event" is not included in the response. event: Optional[EventBase] = None # The room state is incomplete members_omitted: bool = False # List of servers in the room servers_in_room: Optional[List[str]] = None @attr.s(slots=True, auto_attribs=True) class StateRequestResponse: """The parsed response of a `/state` request.""" auth_events: List[EventBase] state: List[EventBase] @ijson.coroutine def _event_parser(event_dict: JsonDict) -> Generator[None, Tuple[str, Any], None]: """Helper function for use with `ijson.kvitems_coro` to parse key-value pairs to add them to a given dictionary. """ while True: key, value = yield event_dict[key] = value @ijson.coroutine def _event_list_parser( room_version: RoomVersion, events: List[EventBase] ) -> Generator[None, JsonDict, None]: """Helper function for use with `ijson.items_coro` to parse an array of events and add them to the given list. """ while True: obj = yield event = make_event_from_dict(obj, room_version) events.append(event) @ijson.coroutine def _members_omitted_parser(response: SendJoinResponse) -> Generator[None, Any, None]: """Helper function for use with `ijson.items_coro` Parses the members_omitted field in send_join responses """ while True: val = yield if not isinstance(val, bool): raise TypeError("members_omitted must be a boolean") response.members_omitted = val @ijson.coroutine def _servers_in_room_parser(response: SendJoinResponse) -> Generator[None, Any, None]: """Helper function for use with `ijson.items_coro` Parses the servers_in_room field in send_join responses """ while True: val = yield if not isinstance(val, list) or any(not isinstance(x, str) for x in val): raise TypeError("servers_in_room must be a list of strings") response.servers_in_room = val class SendJoinParser(ByteParser[SendJoinResponse]): """A parser for the response to `/send_join` requests. Args: room_version: The version of the room. v1_api: Whether the response is in the v1 format. """ CONTENT_TYPE = "application/json" # /send_join responses can be huge, so we override the size limit here. The response # is parsed in a streaming manner, which helps alleviate the issue of memory # usage a bit. MAX_RESPONSE_SIZE = 500 * 1024 * 1024 def __init__(self, room_version: RoomVersion, v1_api: bool): self._response = SendJoinResponse([], [], event_dict={}) self._room_version = room_version self._coros: List[Generator[None, bytes, None]] = [] # The V1 API has the shape of `[200, {...}]`, which we handle by # prefixing with `item.*`. prefix = "item." if v1_api else "" self._coros = [ ijson.items_coro( _event_list_parser(room_version, self._response.state), prefix + "state.item", use_float=True, ), ijson.items_coro( _event_list_parser(room_version, self._response.auth_events), prefix + "auth_chain.item", use_float=True, ), ijson.kvitems_coro( _event_parser(self._response.event_dict), prefix + "event", use_float=True, ), ] if not v1_api: self._coros.append( ijson.items_coro( _members_omitted_parser(self._response), "members_omitted", use_float="True", ) ) # Again, stable field name comes last self._coros.append( ijson.items_coro( _servers_in_room_parser(self._response), "servers_in_room", use_float="True", ) ) def write(self, data: bytes) -> int: for c in self._coros: c.send(data) return len(data) def finish(self) -> SendJoinResponse: _close_coros(self._coros) if self._response.event_dict: self._response.event = make_event_from_dict( self._response.event_dict, self._room_version ) return self._response class _StateParser(ByteParser[StateRequestResponse]): """A parser for the response to `/state` requests. Args: room_version: The version of the room. """ CONTENT_TYPE = "application/json" # As with /send_join, /state responses can be huge. MAX_RESPONSE_SIZE = 500 * 1024 * 1024 def __init__(self, room_version: RoomVersion): self._response = StateRequestResponse([], []) self._room_version = room_version self._coros: List[Generator[None, bytes, None]] = [ ijson.items_coro( _event_list_parser(room_version, self._response.state), "pdus.item", use_float=True, ), ijson.items_coro( _event_list_parser(room_version, self._response.auth_events), "auth_chain.item", use_float=True, ), ] def write(self, data: bytes) -> int: for c in self._coros: c.send(data) return len(data) def finish(self) -> StateRequestResponse: _close_coros(self._coros) return self._response def _close_coros(coros: Iterable[Generator[None, bytes, None]]) -> None: """Close each of the given coroutines. Always calls .close() on each coroutine, even if doing so raises an exception. Any exceptions raised are aggregated into an ExceptionBundle. :raises ExceptionBundle: if at least one coroutine fails to close. """ exceptions = [] for c in coros: try: c.close() except Exception as e: exceptions.append(e) if exceptions: # raise from the first exception so that the traceback has slightly more context raise ExceptionBundle( f"There were {len(exceptions)} errors closing coroutines", exceptions ) from exceptions[0] synapse-1.100.0/synapse/federation/transport/server/000077500000000000000000000000001455622526000225065ustar00rootroot00000000000000synapse-1.100.0/synapse/federation/transport/server/__init__.py000066400000000000000000000237111455622526000246230ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 Sorunome # Copyright 2014-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Tuple, Type from typing_extensions import Literal from synapse.api.errors import FederationDeniedError, SynapseError from synapse.federation.transport.server._base import ( Authenticator, BaseFederationServlet, ) from synapse.federation.transport.server.federation import ( FEDERATION_SERVLET_CLASSES, FederationAccountStatusServlet, FederationUnstableClientKeysClaimServlet, ) from synapse.http.server import HttpServer, JsonResource from synapse.http.servlet import ( parse_boolean_from_args, parse_integer_from_args, parse_string_from_args, ) from synapse.types import JsonDict, ThirdPartyInstanceID from synapse.util.ratelimitutils import FederationRateLimiter if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class TransportLayerServer(JsonResource): """Handles incoming federation HTTP requests""" def __init__(self, hs: "HomeServer", servlet_groups: Optional[List[str]] = None): """Initialize the TransportLayerServer Will by default register all servlets. For custom behaviour, pass in a list of servlet_groups to register. Args: hs: homeserver servlet_groups: List of servlet groups to register. Defaults to ``DEFAULT_SERVLET_GROUPS``. """ self.hs = hs self.clock = hs.get_clock() self.servlet_groups = servlet_groups super().__init__(hs, canonical_json=False) self.authenticator = Authenticator(hs) self.ratelimiter = hs.get_federation_ratelimiter() self.register_servlets() def register_servlets(self) -> None: register_servlets( self.hs, resource=self, ratelimiter=self.ratelimiter, authenticator=self.authenticator, servlet_groups=self.servlet_groups, ) class PublicRoomList(BaseFederationServlet): """ Fetch the public room list for this server. This API returns information in the same format as /publicRooms on the client API, but will only ever include local public rooms and hence is intended for consumption by other homeservers. GET /publicRooms HTTP/1.1 HTTP/1.1 200 OK Content-Type: application/json { "chunk": [ { "aliases": [ "#test:localhost" ], "guest_can_join": false, "name": "test room", "num_joined_members": 3, "room_id": "!whkydVegtvatLfXmPN:localhost", "world_readable": false } ], "end": "END", "start": "START" } """ PATH = "/publicRooms" CATEGORY = "Federation requests" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_room_list_handler() self.allow_access = hs.config.server.allow_public_rooms_over_federation async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: if not self.allow_access: raise FederationDeniedError(origin) limit = parse_integer_from_args(query, "limit", 0) since_token = parse_string_from_args(query, "since", None) include_all_networks = parse_boolean_from_args( query, "include_all_networks", default=False ) third_party_instance_id = parse_string_from_args( query, "third_party_instance_id", None ) if include_all_networks: network_tuple = None elif third_party_instance_id: network_tuple = ThirdPartyInstanceID.from_string(third_party_instance_id) else: network_tuple = ThirdPartyInstanceID(None, None) if limit == 0: # zero is a special value which corresponds to no limit. limit = None data = await self.handler.get_local_public_room_list( limit, since_token, network_tuple=network_tuple, from_federation_origin=origin, ) return 200, data async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: # This implements MSC2197 (Search Filtering over Federation) if not self.allow_access: raise FederationDeniedError(origin) limit: Optional[int] = int(content.get("limit", 100)) since_token = content.get("since", None) search_filter = content.get("filter", None) include_all_networks = content.get("include_all_networks", False) third_party_instance_id = content.get("third_party_instance_id", None) if include_all_networks: network_tuple = None if third_party_instance_id is not None: raise SynapseError( 400, "Can't use include_all_networks with an explicit network" ) elif third_party_instance_id is None: network_tuple = ThirdPartyInstanceID(None, None) else: network_tuple = ThirdPartyInstanceID.from_string(third_party_instance_id) if search_filter is None: logger.warning("Nonefilter") if limit == 0: # zero is a special value which corresponds to no limit. limit = None data = await self.handler.get_local_public_room_list( limit=limit, since_token=since_token, search_filter=search_filter, network_tuple=network_tuple, from_federation_origin=origin, ) return 200, data class OpenIdUserInfo(BaseFederationServlet): """ Exchange a bearer token for information about a user. The response format should be compatible with: http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse GET /openid/userinfo?access_token=ABDEFGH HTTP/1.1 HTTP/1.1 200 OK Content-Type: application/json { "sub": "@userpart:example.org", } """ PATH = "/openid/userinfo" CATEGORY = "Federation requests" REQUIRE_AUTH = False def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_federation_server() async def on_GET( self, origin: Optional[str], content: Literal[None], query: Dict[bytes, List[bytes]], ) -> Tuple[int, JsonDict]: token = parse_string_from_args(query, "access_token") if token is None: return ( 401, {"errcode": "M_MISSING_TOKEN", "error": "Access Token required"}, ) user_id = await self.handler.on_openid_userinfo(token) if user_id is None: return ( 401, { "errcode": "M_UNKNOWN_TOKEN", "error": "Access Token unknown or expired", }, ) return 200, {"sub": user_id} SERVLET_GROUPS: Dict[str, Iterable[Type[BaseFederationServlet]]] = { "federation": FEDERATION_SERVLET_CLASSES, "room_list": (PublicRoomList,), "openid": (OpenIdUserInfo,), } def register_servlets( hs: "HomeServer", resource: HttpServer, authenticator: Authenticator, ratelimiter: FederationRateLimiter, servlet_groups: Optional[Iterable[str]] = None, ) -> None: """Initialize and register servlet classes. Will by default register all servlets. For custom behaviour, pass in a list of servlet_groups to register. Args: hs: homeserver resource: resource class to register to authenticator: authenticator to use ratelimiter: ratelimiter to use servlet_groups: List of servlet groups to register. Defaults to ``DEFAULT_SERVLET_GROUPS``. """ if not servlet_groups: servlet_groups = SERVLET_GROUPS.keys() for servlet_group in servlet_groups: # Skip unknown servlet groups. if servlet_group not in SERVLET_GROUPS: raise RuntimeError( f"Attempting to register unknown federation servlet: '{servlet_group}'" ) for servletclass in SERVLET_GROUPS[servlet_group]: # Only allow the `/account_status` servlet if msc3720 is enabled if ( servletclass == FederationAccountStatusServlet and not hs.config.experimental.msc3720_enabled ): continue if ( servletclass == FederationUnstableClientKeysClaimServlet and not hs.config.experimental.msc3983_appservice_otk_claims ): continue servletclass( hs=hs, authenticator=authenticator, ratelimiter=ratelimiter, server_name=hs.hostname, ).register(resource) synapse-1.100.0/synapse/federation/transport/server/_base.py000066400000000000000000000351771455622526000241460ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import functools import logging import re import time from http import HTTPStatus from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Optional, Tuple, cast from synapse.api.errors import Codes, FederationDeniedError, SynapseError from synapse.api.urls import FEDERATION_V1_PREFIX from synapse.http.server import HttpServer, ServletCallback from synapse.http.servlet import parse_json_object_from_request from synapse.http.site import SynapseRequest from synapse.logging.context import run_in_background from synapse.logging.opentracing import ( active_span, set_tag, span_context_from_request, start_active_span, start_active_span_follows_from, whitelisted_homeserver, ) from synapse.types import JsonDict from synapse.util.cancellation import is_function_cancellable from synapse.util.ratelimitutils import FederationRateLimiter from synapse.util.stringutils import parse_and_validate_server_name if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AuthenticationError(SynapseError): """There was a problem authenticating the request""" class NoAuthenticationError(AuthenticationError): """The request had no authentication information""" class Authenticator: def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self.keyring = hs.get_keyring() self.server_name = hs.hostname self._is_mine_server_name = hs.is_mine_server_name self.store = hs.get_datastores().main self.federation_domain_whitelist = ( hs.config.federation.federation_domain_whitelist ) self.notifier = hs.get_notifier() self.replication_client = None if hs.config.worker.worker_app: self.replication_client = hs.get_replication_command_handler() # A method just so we can pass 'self' as the authenticator to the Servlets async def authenticate_request( self, request: SynapseRequest, content: Optional[JsonDict] ) -> str: now = self._clock.time_msec() json_request: JsonDict = { "method": request.method.decode("ascii"), "uri": request.uri.decode("ascii"), "destination": self.server_name, "signatures": {}, } if content is not None: json_request["content"] = content origin = None auth_headers = request.requestHeaders.getRawHeaders(b"Authorization") if not auth_headers: raise NoAuthenticationError( HTTPStatus.UNAUTHORIZED, "Missing Authorization headers", Codes.UNAUTHORIZED, ) for auth in auth_headers: if auth.startswith(b"X-Matrix"): (origin, key, sig, destination) = _parse_auth_header(auth) json_request["origin"] = origin json_request["signatures"].setdefault(origin, {})[key] = sig # if the origin_server sent a destination along it needs to match our own server_name if destination is not None and not self._is_mine_server_name( destination ): raise AuthenticationError( HTTPStatus.UNAUTHORIZED, "Destination mismatch in auth header", Codes.UNAUTHORIZED, ) if ( self.federation_domain_whitelist is not None and origin not in self.federation_domain_whitelist ): raise FederationDeniedError(origin) if origin is None or not json_request["signatures"]: raise NoAuthenticationError( HTTPStatus.UNAUTHORIZED, "Missing Authorization headers", Codes.UNAUTHORIZED, ) await self.keyring.verify_json_for_server( origin, json_request, now, ) logger.debug("Request from %s", origin) request.requester = origin # If we get a valid signed request from the other side, its probably # alive retry_timings = await self.store.get_destination_retry_timings(origin) if retry_timings and retry_timings.retry_last_ts: run_in_background(self.reset_retry_timings, origin) return origin async def reset_retry_timings(self, origin: str) -> None: try: logger.info("Marking origin %r as up", origin) await self.store.set_destination_retry_timings(origin, None, 0, 0) # Inform the relevant places that the remote server is back up. self.notifier.notify_remote_server_up(origin) if self.replication_client: # If we're on a worker we try and inform master about this. The # replication client doesn't hook into the notifier to avoid # infinite loops where we send a `REMOTE_SERVER_UP` command to # master, which then echoes it back to us which in turn pokes # the notifier. self.replication_client.send_remote_server_up(origin) except Exception: logger.exception("Error resetting retry timings on %s", origin) def _parse_auth_header(header_bytes: bytes) -> Tuple[str, str, str, Optional[str]]: """Parse an X-Matrix auth header Args: header_bytes: header value Returns: origin, key id, signature, destination. origin, key id, signature. Raises: AuthenticationError if the header could not be parsed """ try: header_str = header_bytes.decode("utf-8") params = re.split(" +", header_str)[1].split(",") param_dict: Dict[str, str] = { k.lower(): v for k, v in [param.split("=", maxsplit=1) for param in params] } def strip_quotes(value: str) -> str: if value.startswith('"'): return re.sub( "\\\\(.)", lambda matchobj: matchobj.group(1), value[1:-1] ) else: return value origin = strip_quotes(param_dict["origin"]) # ensure that the origin is a valid server name parse_and_validate_server_name(origin) key = strip_quotes(param_dict["key"]) sig = strip_quotes(param_dict["sig"]) # get the destination server_name from the auth header if it exists destination = param_dict.get("destination") if destination is not None: destination = strip_quotes(destination) else: destination = None return origin, key, sig, destination except Exception as e: logger.warning( "Error parsing auth header '%s': %s", header_bytes.decode("ascii", "replace"), e, ) raise AuthenticationError( HTTPStatus.BAD_REQUEST, "Malformed Authorization header", Codes.UNAUTHORIZED ) class BaseFederationServlet: """Abstract base class for federation servlet classes. The servlet object should have a PATH attribute which takes the form of a regexp to match against the request path (excluding the /federation/v1 prefix). The servlet should also implement one or more of on_GET, on_POST, on_PUT, to match the appropriate HTTP method. These methods must be *asynchronous* and have the signature: on_(self, origin, content, query, **kwargs) With arguments: origin (str|None): The authenticated server_name of the calling server, unless REQUIRE_AUTH is set to False and authentication failed. content (str|None): decoded json body of the request. None if the request was a GET. query (dict[bytes, list[bytes]]): Query params from the request. url-decoded (ie, '+' and '%xx' are decoded) but note that it is *not* utf8-decoded yet. **kwargs (dict[unicode, unicode]): the dict mapping keys to path components as specified in the path match regexp. Returns: Optional[Tuple[int, object]]: either (response code, response object) to return a JSON response, or None if the request has already been handled. Raises: SynapseError: to return an error code Exception: other exceptions will be caught, logged, and a 500 will be returned. """ PATH = "" # Overridden in subclasses, the regex to match against the path. REQUIRE_AUTH = True PREFIX = FEDERATION_V1_PREFIX # Allows specifying the API version RATELIMIT = True # Whether to rate limit requests or not def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): self.hs = hs self.authenticator = authenticator self.ratelimiter = ratelimiter self.server_name = server_name def _wrap(self, func: Callable[..., Awaitable[Tuple[int, Any]]]) -> ServletCallback: authenticator = self.authenticator ratelimiter = self.ratelimiter @functools.wraps(func) async def new_func( request: SynapseRequest, *args: Any, **kwargs: str ) -> Optional[Tuple[int, Any]]: """A callback which can be passed to HttpServer.RegisterPaths Args: request: *args: unused? **kwargs: the dict mapping keys to path components as specified in the path match regexp. Returns: (response code, response object) as returned by the callback method. None if the request has already been handled. """ content = None if request.method in [b"PUT", b"POST"]: # TODO: Handle other method types? other content types? content = parse_json_object_from_request(request) try: with start_active_span("authenticate_request"): origin: Optional[str] = await authenticator.authenticate_request( request, content ) except NoAuthenticationError: origin = None if self.REQUIRE_AUTH: logger.warning( "authenticate_request failed: missing authentication" ) raise except Exception as e: logger.warning("authenticate_request failed: %s", e) raise # update the active opentracing span with the authenticated entity set_tag("authenticated_entity", str(origin)) # if the origin is authenticated and whitelisted, use its span context # as the parent. context = None if origin and whitelisted_homeserver(origin): context = span_context_from_request(request) if context: servlet_span = active_span() # a scope which uses the origin's context as a parent processing_start_time = time.time() scope = start_active_span_follows_from( "incoming-federation-request", child_of=context, contexts=(servlet_span,), start_time=processing_start_time, ) else: # just use our context as a parent scope = start_active_span( "incoming-federation-request", ) try: with scope: if origin and self.RATELIMIT: with ratelimiter.ratelimit(origin) as d: await d if request._disconnected: logger.warning( "client disconnected before we started processing " "request" ) return None response = await func( origin, content, request.args, *args, **kwargs ) else: response = await func( origin, content, request.args, *args, **kwargs ) finally: # if we used the origin's context as the parent, add a new span using # the servlet span as a parent, so that we have a link if context: scope2 = start_active_span_follows_from( "process-federation_request", contexts=(scope.span,), start_time=processing_start_time, ) scope2.close() return response return cast(ServletCallback, new_func) def register(self, server: HttpServer) -> None: pattern = re.compile("^" + self.PREFIX + self.PATH + "$") for method in ("GET", "PUT", "POST"): code = getattr(self, "on_%s" % (method), None) if code is None: continue if is_function_cancellable(code): # The wrapper added by `self._wrap` will inherit the cancellable flag, # but the wrapper itself does not support cancellation yet. # Once resolved, the cancellation tests in # `tests/federation/transport/server/test__base.py` can be re-enabled. raise Exception( f"{self.__class__.__name__}.on_{method} has been marked as " "cancellable, but federation servlets do not support cancellation " "yet." ) server.register_paths( method, (pattern,), self._wrap(code), self.__class__.__name__, ) synapse-1.100.0/synapse/federation/transport/server/federation.py000066400000000000000000000631361455622526000252110ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from collections import Counter from typing import ( TYPE_CHECKING, Dict, List, Mapping, Optional, Sequence, Tuple, Type, Union, ) from typing_extensions import Literal from synapse.api.constants import Direction, EduTypes from synapse.api.errors import Codes, SynapseError from synapse.api.room_versions import RoomVersions from synapse.api.urls import FEDERATION_UNSTABLE_PREFIX, FEDERATION_V2_PREFIX from synapse.federation.transport.server._base import ( Authenticator, BaseFederationServlet, ) from synapse.http.servlet import ( parse_boolean_from_args, parse_integer_from_args, parse_string_from_args, parse_strings_from_args, ) from synapse.types import JsonDict from synapse.util import SYNAPSE_VERSION from synapse.util.ratelimitutils import FederationRateLimiter if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) issue_8631_logger = logging.getLogger("synapse.8631_debug") class BaseFederationServerServlet(BaseFederationServlet): """Abstract base class for federation servlet classes which provides a federation server handler. See BaseFederationServlet for more information. """ def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_federation_server() class FederationSendServlet(BaseFederationServerServlet): PATH = "/send/(?P[^/]*)/?" CATEGORY = "Inbound federation transaction request" # We ratelimit manually in the handler as we queue up the requests and we # don't want to fill up the ratelimiter with blocked requests. RATELIMIT = False # This is when someone is trying to send us a bunch of data. async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], transaction_id: str, ) -> Tuple[int, JsonDict]: """Called on PUT /send// Args: transaction_id: The transaction_id associated with this request. This is *not* None. Returns: Tuple of `(code, response)`, where `response` is a python dict to be converted into JSON that is used as the response body. """ # Parse the request try: transaction_data = content logger.debug("Decoded %s: %s", transaction_id, str(transaction_data)) logger.info( "Received txn %s from %s. (PDUs: %d, EDUs: %d)", transaction_id, origin, len(transaction_data.get("pdus", [])), len(transaction_data.get("edus", [])), ) if issue_8631_logger.isEnabledFor(logging.DEBUG): DEVICE_UPDATE_EDUS = [ EduTypes.DEVICE_LIST_UPDATE, EduTypes.SIGNING_KEY_UPDATE, ] device_list_updates = [ edu.get("content", {}) for edu in transaction_data.get("edus", []) if edu.get("edu_type") in DEVICE_UPDATE_EDUS ] if device_list_updates: issue_8631_logger.debug( "received transaction [%s] including device list updates: %s", transaction_id, device_list_updates, ) except Exception as e: logger.exception(e) return 400, {"error": "Invalid transaction"} code, response = await self.handler.on_incoming_transaction( origin, transaction_id, self.server_name, transaction_data ) return code, response class FederationEventServlet(BaseFederationServerServlet): PATH = "/event/(?P[^/]*)/?" CATEGORY = "Federation requests" # This is when someone asks for a data item for a given server data_id pair. async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], event_id: str, ) -> Tuple[int, Union[JsonDict, str]]: return await self.handler.on_pdu_request(origin, event_id) class FederationStateV1Servlet(BaseFederationServerServlet): PATH = "/state/(?P[^/]*)/?" CATEGORY = "Federation requests" # This is when someone asks for all data for a given room. async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_room_state_request( origin, room_id, parse_string_from_args(query, "event_id", None, required=True), ) class FederationStateIdsServlet(BaseFederationServerServlet): PATH = "/state_ids/(?P[^/]*)/?" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_state_ids_request( origin, room_id, parse_string_from_args(query, "event_id", None, required=True), ) class FederationBackfillServlet(BaseFederationServerServlet): PATH = "/backfill/(?P[^/]*)/?" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: versions = [x.decode("ascii") for x in query[b"v"]] limit = parse_integer_from_args(query, "limit", None) if not limit: return 400, {"error": "Did not include limit param"} return await self.handler.on_backfill_request(origin, room_id, versions, limit) class FederationTimestampLookupServlet(BaseFederationServerServlet): """ API endpoint to fetch the `event_id` of the closest event to the given timestamp (`ts` query parameter) in the given direction (`dir` query parameter). Useful for other homeservers when they're unable to find an event locally. `ts` is a timestamp in milliseconds where we will find the closest event in the given direction. `dir` can be `f` or `b` to indicate forwards and backwards in time from the given timestamp. GET /_matrix/federation/v1/timestamp_to_event/?ts=&dir= { "event_id": ... } """ PATH = "/timestamp_to_event/(?P[^/]*)/?" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: timestamp = parse_integer_from_args(query, "ts", required=True) direction_str = parse_string_from_args( query, "dir", allowed_values=["f", "b"], required=True ) direction = Direction(direction_str) return await self.handler.on_timestamp_to_event_request( origin, room_id, timestamp, direction ) class FederationQueryServlet(BaseFederationServerServlet): PATH = "/query/(?P[^/]*)" CATEGORY = "Federation requests" # This is when we receive a server-server Query async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], query_type: str, ) -> Tuple[int, JsonDict]: args = {k.decode("utf8"): v[0].decode("utf-8") for k, v in query.items()} args["origin"] = origin return await self.handler.on_query_request(query_type, args) class FederationMakeJoinServlet(BaseFederationServerServlet): PATH = "/make_join/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, user_id: str, ) -> Tuple[int, JsonDict]: """ Args: origin: The authenticated server_name of the calling server content: (GETs don't have bodies) query: Query params from the request. **kwargs: the dict mapping keys to path components as specified in the path match regexp. Returns: Tuple of (response code, response object) """ supported_versions = parse_strings_from_args(query, "ver", encoding="utf-8") if supported_versions is None: supported_versions = ["1"] result = await self.handler.on_make_join_request( origin, room_id, user_id, supported_versions=supported_versions ) return 200, result class FederationMakeLeaveServlet(BaseFederationServerServlet): PATH = "/make_leave/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, user_id: str, ) -> Tuple[int, JsonDict]: result = await self.handler.on_make_leave_request(origin, room_id, user_id) return 200, result class FederationV1SendLeaveServlet(BaseFederationServerServlet): PATH = "/send_leave/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, Tuple[int, JsonDict]]: result = await self.handler.on_send_leave_request(origin, content, room_id) return 200, (200, result) class FederationV2SendLeaveServlet(BaseFederationServerServlet): PATH = "/send_leave/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" PREFIX = FEDERATION_V2_PREFIX async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: result = await self.handler.on_send_leave_request(origin, content, room_id) return 200, result class FederationMakeKnockServlet(BaseFederationServerServlet): PATH = "/make_knock/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, user_id: str, ) -> Tuple[int, JsonDict]: # Retrieve the room versions the remote homeserver claims to support supported_versions = parse_strings_from_args( query, "ver", required=True, encoding="utf-8" ) result = await self.handler.on_make_knock_request( origin, room_id, user_id, supported_versions=supported_versions ) return 200, result class FederationV1SendKnockServlet(BaseFederationServerServlet): PATH = "/send_knock/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: result = await self.handler.on_send_knock_request(origin, content, room_id) return 200, result class FederationEventAuthServlet(BaseFederationServerServlet): PATH = "/event_auth/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_event_auth(origin, room_id, event_id) class FederationV1SendJoinServlet(BaseFederationServerServlet): PATH = "/send_join/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, Tuple[int, JsonDict]]: # TODO(paul): assert that event_id parsed from path actually # match those given in content result = await self.handler.on_send_join_request(origin, content, room_id) return 200, (200, result) class FederationV2SendJoinServlet(BaseFederationServerServlet): PATH = "/send_join/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" PREFIX = FEDERATION_V2_PREFIX async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: # TODO(paul): assert that event_id parsed from path actually # match those given in content partial_state = parse_boolean_from_args(query, "omit_members", default=False) result = await self.handler.on_send_join_request( origin, content, room_id, caller_supports_partial_state=partial_state ) return 200, result class FederationV1InviteServlet(BaseFederationServerServlet): PATH = "/invite/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, Tuple[int, JsonDict]]: # We don't get a room version, so we have to assume its EITHER v1 or # v2. This is "fine" as the only difference between V1 and V2 is the # state resolution algorithm, and we don't use that for processing # invites result = await self.handler.on_invite_request( origin, content, room_version_id=RoomVersions.V1.identifier ) # V1 federation API is defined to return a content of `[200, {...}]` # due to a historical bug. return 200, (200, result) class FederationV2InviteServlet(BaseFederationServerServlet): PATH = "/invite/(?P[^/]*)/(?P[^/]*)" CATEGORY = "Federation requests" PREFIX = FEDERATION_V2_PREFIX async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, event_id: str, ) -> Tuple[int, JsonDict]: # TODO(paul): assert that room_id/event_id parsed from path actually # match those given in content room_version = content["room_version"] event = content["event"] invite_room_state = content.get("invite_room_state", []) # Synapse expects invite_room_state to be in unsigned, as it is in v1 # API event.setdefault("unsigned", {})["invite_room_state"] = invite_room_state result = await self.handler.on_invite_request( origin, event, room_version_id=room_version ) # We only store invite_room_state for internal use, so remove it before # returning the event to the remote homeserver. result["event"].get("unsigned", {}).pop("invite_room_state", None) return 200, result class FederationThirdPartyInviteExchangeServlet(BaseFederationServerServlet): PATH = "/exchange_third_party_invite/(?P[^/]*)" CATEGORY = "Federation requests" async def on_PUT( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: await self.handler.on_exchange_third_party_invite_request(content) return 200, {} class FederationClientKeysQueryServlet(BaseFederationServerServlet): PATH = "/user/keys/query" CATEGORY = "Federation requests" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: return await self.handler.on_query_client_keys(origin, content) class FederationUserDevicesQueryServlet(BaseFederationServerServlet): PATH = "/user/devices/(?P[^/]*)" CATEGORY = "Federation requests" async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], user_id: str, ) -> Tuple[int, JsonDict]: return await self.handler.on_query_user_devices(origin, user_id) class FederationClientKeysClaimServlet(BaseFederationServerServlet): PATH = "/user/keys/claim" CATEGORY = "Federation requests" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: # Generate a count for each algorithm, which is hard-coded to 1. key_query: List[Tuple[str, str, str, int]] = [] for user_id, device_keys in content.get("one_time_keys", {}).items(): for device_id, algorithm in device_keys.items(): key_query.append((user_id, device_id, algorithm, 1)) response = await self.handler.on_claim_client_keys( key_query, always_include_fallback_keys=False ) return 200, response class FederationUnstableClientKeysClaimServlet(BaseFederationServerServlet): """ Identical to the stable endpoint (FederationClientKeysClaimServlet) except it allows for querying for multiple OTKs at once and always includes fallback keys in the response. """ PREFIX = FEDERATION_UNSTABLE_PREFIX PATH = "/user/keys/claim" CATEGORY = "Federation requests" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: # Generate a count for each algorithm. key_query: List[Tuple[str, str, str, int]] = [] for user_id, device_keys in content.get("one_time_keys", {}).items(): for device_id, algorithms in device_keys.items(): counts = Counter(algorithms) for algorithm, count in counts.items(): key_query.append((user_id, device_id, algorithm, count)) response = await self.handler.on_claim_client_keys( key_query, always_include_fallback_keys=True ) return 200, response class FederationGetMissingEventsServlet(BaseFederationServerServlet): PATH = "/get_missing_events/(?P[^/]*)" CATEGORY = "Federation requests" async def on_POST( self, origin: str, content: JsonDict, query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: limit = int(content.get("limit", 10)) earliest_events = content.get("earliest_events", []) latest_events = content.get("latest_events", []) result = await self.handler.on_get_missing_events( origin, room_id=room_id, earliest_events=earliest_events, latest_events=latest_events, limit=limit, ) return 200, result class On3pidBindServlet(BaseFederationServerServlet): PATH = "/3pid/onbind" CATEGORY = "Federation requests" REQUIRE_AUTH = False async def on_POST( self, origin: Optional[str], content: JsonDict, query: Dict[bytes, List[bytes]] ) -> Tuple[int, JsonDict]: if "invites" in content: last_exception = None for invite in content["invites"]: try: if "signed" not in invite or "token" not in invite["signed"]: message = ( "Rejecting received notification of third-" "party invite without signed: %s" % (invite,) ) logger.info(message) raise SynapseError(400, message) await self.handler.exchange_third_party_invite( invite["sender"], invite["mxid"], invite["room_id"], invite["signed"], ) except Exception as e: last_exception = e if last_exception: raise last_exception return 200, {} class FederationVersionServlet(BaseFederationServlet): PATH = "/version" CATEGORY = "Federation requests" REQUIRE_AUTH = False async def on_GET( self, origin: Optional[str], content: Literal[None], query: Dict[bytes, List[bytes]], ) -> Tuple[int, JsonDict]: return ( 200, { "server": { "name": "Synapse", "version": SYNAPSE_VERSION, } }, ) class FederationRoomHierarchyServlet(BaseFederationServlet): PATH = "/hierarchy/(?P[^/]*)" CATEGORY = "Federation requests" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self.handler = hs.get_room_summary_handler() async def on_GET( self, origin: str, content: Literal[None], query: Mapping[bytes, Sequence[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: suggested_only = parse_boolean_from_args(query, "suggested_only", default=False) return 200, await self.handler.get_federation_hierarchy( origin, room_id, suggested_only ) class RoomComplexityServlet(BaseFederationServlet): """ Indicates to other servers how complex (and therefore likely resource-intensive) a public room this server knows about is. """ PATH = "/rooms/(?P[^/]*)/complexity" PREFIX = FEDERATION_UNSTABLE_PREFIX CATEGORY = "Federation requests (unstable)" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self._store = self.hs.get_datastores().main async def on_GET( self, origin: str, content: Literal[None], query: Dict[bytes, List[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: is_public = await self._store.is_room_world_readable_or_publicly_joinable( room_id ) if not is_public: raise SynapseError(404, "Room not found", errcode=Codes.INVALID_PARAM) complexity = await self._store.get_room_complexity(room_id) return 200, complexity class FederationAccountStatusServlet(BaseFederationServerServlet): PATH = "/query/account_status" PREFIX = FEDERATION_UNSTABLE_PREFIX + "/org.matrix.msc3720" def __init__( self, hs: "HomeServer", authenticator: Authenticator, ratelimiter: FederationRateLimiter, server_name: str, ): super().__init__(hs, authenticator, ratelimiter, server_name) self._account_handler = hs.get_account_handler() async def on_POST( self, origin: str, content: JsonDict, query: Mapping[bytes, Sequence[bytes]], room_id: str, ) -> Tuple[int, JsonDict]: if "user_ids" not in content: raise SynapseError( 400, "Required parameter 'user_ids' is missing", Codes.MISSING_PARAM ) statuses, failures = await self._account_handler.get_account_statuses( content["user_ids"], allow_remote=False, ) return 200, {"account_statuses": statuses, "failures": failures} FEDERATION_SERVLET_CLASSES: Tuple[Type[BaseFederationServlet], ...] = ( FederationSendServlet, FederationEventServlet, FederationStateV1Servlet, FederationStateIdsServlet, FederationBackfillServlet, FederationTimestampLookupServlet, FederationQueryServlet, FederationMakeJoinServlet, FederationMakeLeaveServlet, FederationEventServlet, FederationV1SendJoinServlet, FederationV2SendJoinServlet, FederationV1SendLeaveServlet, FederationV2SendLeaveServlet, FederationV1InviteServlet, FederationV2InviteServlet, FederationGetMissingEventsServlet, FederationEventAuthServlet, FederationClientKeysQueryServlet, FederationUserDevicesQueryServlet, FederationClientKeysClaimServlet, FederationUnstableClientKeysClaimServlet, FederationThirdPartyInviteExchangeServlet, On3pidBindServlet, FederationVersionServlet, RoomComplexityServlet, FederationRoomHierarchyServlet, FederationV1SendKnockServlet, FederationMakeKnockServlet, FederationAccountStatusServlet, ) synapse-1.100.0/synapse/federation/units.py000066400000000000000000000060011455622526000206550ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ Defines the JSON structure of the protocol units used by the server to server protocol. """ import logging from typing import List, Optional import attr from synapse.types import JsonDict logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, auto_attribs=True) class Edu: """An Edu represents a piece of data sent from one homeserver to another. In comparison to Pdus, Edus are not persisted for a long time on disk, are not meaningful beyond a given pair of homeservers, and don't have an internal ID or previous references graph. """ edu_type: str content: dict origin: str destination: str def get_dict(self) -> JsonDict: return { "edu_type": self.edu_type, "content": self.content, } def get_internal_dict(self) -> JsonDict: return { "edu_type": self.edu_type, "content": self.content, "origin": self.origin, "destination": self.destination, } def get_context(self) -> str: return getattr(self, "content", {}).get("org.matrix.opentracing_context", "{}") def strip_context(self) -> None: getattr(self, "content", {})["org.matrix.opentracing_context"] = "{}" def _none_to_list(edus: Optional[List[JsonDict]]) -> List[JsonDict]: if edus is None: return [] return edus @attr.s(slots=True, frozen=True, auto_attribs=True) class Transaction: """A transaction is a list of Pdus and Edus to be sent to a remote home server with some extra metadata. Example transaction:: { "origin": "foo", "prev_ids": ["abc", "def"], "pdus": [ ... ], } """ # Required keys. transaction_id: str origin: str destination: str origin_server_ts: int pdus: List[JsonDict] = attr.ib(factory=list, converter=_none_to_list) edus: List[JsonDict] = attr.ib(factory=list, converter=_none_to_list) def get_dict(self) -> JsonDict: """A JSON-ready dictionary of valid keys which aren't internal.""" result = { "origin": self.origin, "origin_server_ts": self.origin_server_ts, "pdus": self.pdus, } if self.edus: result["edus"] = self.edus return result synapse-1.100.0/synapse/handlers/000077500000000000000000000000001455622526000166245ustar00rootroot00000000000000synapse-1.100.0/synapse/handlers/__init__.py000066400000000000000000000013061455622526000207350ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # synapse-1.100.0/synapse/handlers/account.py000066400000000000000000000125601455622526000206360ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import TYPE_CHECKING, Dict, List, Tuple from synapse.api.errors import Codes, SynapseError from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer class AccountHandler: def __init__(self, hs: "HomeServer"): self._main_store = hs.get_datastores().main self._is_mine = hs.is_mine self._federation_client = hs.get_federation_client() self._use_account_validity_in_account_status = ( hs.config.server.use_account_validity_in_account_status ) self._account_validity_handler = hs.get_account_validity_handler() async def get_account_statuses( self, user_ids: List[str], allow_remote: bool, ) -> Tuple[JsonDict, List[str]]: """Get account statuses for a list of user IDs. If one or more account(s) belong to remote homeservers, retrieve their status(es) over federation if allowed. Args: user_ids: The list of accounts to retrieve the status of. allow_remote: Whether to try to retrieve the status of remote accounts, if any. Returns: The account statuses as well as the list of users whose statuses could not be retrieved. Raises: SynapseError if a required parameter is missing or malformed, or if one of the accounts isn't local to this homeserver and allow_remote is False. """ statuses = {} failures = [] remote_users: List[UserID] = [] for raw_user_id in user_ids: try: user_id = UserID.from_string(raw_user_id) except SynapseError: raise SynapseError( 400, f"Not a valid Matrix user ID: {raw_user_id}", Codes.INVALID_PARAM, ) if self._is_mine(user_id): status = await self._get_local_account_status(user_id) statuses[user_id.to_string()] = status else: if not allow_remote: raise SynapseError( 400, f"Not a local user: {raw_user_id}", Codes.INVALID_PARAM, ) remote_users.append(user_id) if allow_remote and len(remote_users) > 0: remote_statuses, remote_failures = await self._get_remote_account_statuses( remote_users, ) statuses.update(remote_statuses) failures += remote_failures return statuses, failures async def _get_local_account_status(self, user_id: UserID) -> JsonDict: """Retrieve the status of a local account. Args: user_id: The account to retrieve the status of. Returns: The account's status. """ status = {"exists": False} userinfo = await self._main_store.get_user_by_id(user_id.to_string()) if userinfo is not None: status = { "exists": True, "deactivated": userinfo.is_deactivated, } if self._use_account_validity_in_account_status: status[ "org.matrix.expired" ] = await self._account_validity_handler.is_user_expired( user_id.to_string() ) return status async def _get_remote_account_statuses( self, remote_users: List[UserID] ) -> Tuple[JsonDict, List[str]]: """Send out federation requests to retrieve the statuses of remote accounts. Args: remote_users: The accounts to retrieve the statuses of. Returns: The statuses of the accounts, and a list of accounts for which no status could be retrieved. """ # Group remote users by destination, so we only send one request per remote # homeserver. by_destination: Dict[str, List[str]] = {} for user in remote_users: if user.domain not in by_destination: by_destination[user.domain] = [] by_destination[user.domain].append(user.to_string()) # Retrieve the statuses and failures for remote accounts. final_statuses: JsonDict = {} final_failures: List[str] = [] for destination, users in by_destination.items(): statuses, failures = await self._federation_client.get_account_status( destination, users, ) final_statuses.update(statuses) final_failures += failures return final_statuses, final_failures synapse-1.100.0/synapse/handlers/account_data.py000066400000000000000000000314511455622526000216270ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random from typing import TYPE_CHECKING, Awaitable, Callable, List, Optional, Tuple from synapse.api.constants import AccountDataTypes from synapse.replication.http.account_data import ( ReplicationAddRoomAccountDataRestServlet, ReplicationAddTagRestServlet, ReplicationAddUserAccountDataRestServlet, ReplicationRemoveRoomAccountDataRestServlet, ReplicationRemoveTagRestServlet, ReplicationRemoveUserAccountDataRestServlet, ) from synapse.streams import EventSource from synapse.types import JsonDict, StrCollection, StreamKeyType, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) ON_ACCOUNT_DATA_UPDATED_CALLBACK = Callable[ [str, Optional[str], str, JsonDict], Awaitable ] class AccountDataHandler: def __init__(self, hs: "HomeServer"): self._store = hs.get_datastores().main self._instance_name = hs.get_instance_name() self._notifier = hs.get_notifier() self._add_user_data_client = ( ReplicationAddUserAccountDataRestServlet.make_client(hs) ) self._remove_user_data_client = ( ReplicationRemoveUserAccountDataRestServlet.make_client(hs) ) self._add_room_data_client = ( ReplicationAddRoomAccountDataRestServlet.make_client(hs) ) self._remove_room_data_client = ( ReplicationRemoveRoomAccountDataRestServlet.make_client(hs) ) self._add_tag_client = ReplicationAddTagRestServlet.make_client(hs) self._remove_tag_client = ReplicationRemoveTagRestServlet.make_client(hs) self._account_data_writers = hs.config.worker.writers.account_data self._on_account_data_updated_callbacks: List[ ON_ACCOUNT_DATA_UPDATED_CALLBACK ] = [] def register_module_callbacks( self, on_account_data_updated: Optional[ON_ACCOUNT_DATA_UPDATED_CALLBACK] = None ) -> None: """Register callbacks from modules.""" if on_account_data_updated is not None: self._on_account_data_updated_callbacks.append(on_account_data_updated) async def _notify_modules( self, user_id: str, room_id: Optional[str], account_data_type: str, content: JsonDict, ) -> None: """Notifies modules about new account data changes. A change can be either a new account data type being added, or the content associated with a type being changed. Account data for a given type is removed by changing the associated content to an empty dictionary. Note that this is not called when the tags associated with a room change. Args: user_id: The user whose account data is changing. room_id: The ID of the room the account data change concerns, if any. account_data_type: The type of the account data. content: The content that is now associated with this type. """ for callback in self._on_account_data_updated_callbacks: try: await callback(user_id, room_id, account_data_type, content) except Exception as e: logger.exception("Failed to run module callback %s: %s", callback, e) async def add_account_data_to_room( self, user_id: str, room_id: str, account_data_type: str, content: JsonDict ) -> int: """Add some account_data to a room for a user. Args: user_id: The user to add a tag for. room_id: The room to add a tag for. account_data_type: The type of account_data to add. content: A json object to associate with the tag. Returns: The maximum stream ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.add_account_data_to_room( user_id, room_id, account_data_type, content ) self._notifier.on_new_event( StreamKeyType.ACCOUNT_DATA, max_stream_id, users=[user_id] ) await self._notify_modules(user_id, room_id, account_data_type, content) return max_stream_id else: response = await self._add_room_data_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, room_id=room_id, account_data_type=account_data_type, content=content, ) return response["max_stream_id"] async def remove_account_data_for_room( self, user_id: str, room_id: str, account_data_type: str ) -> Optional[int]: """ Deletes the room account data for the given user and account data type. "Deleting" account data merely means setting the content of the account data to an empty JSON object: {}. Args: user_id: The user ID to remove room account data for. room_id: The room ID to target. account_data_type: The account data type to remove. Returns: The maximum stream ID, or None if the room account data item did not exist. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.remove_account_data_for_room( user_id, room_id, account_data_type ) self._notifier.on_new_event( StreamKeyType.ACCOUNT_DATA, max_stream_id, users=[user_id] ) # Notify Synapse modules that the content of the type has changed to an # empty dictionary. await self._notify_modules(user_id, room_id, account_data_type, {}) return max_stream_id else: response = await self._remove_room_data_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, room_id=room_id, account_data_type=account_data_type, content={}, ) return response["max_stream_id"] async def add_account_data_for_user( self, user_id: str, account_data_type: str, content: JsonDict ) -> int: """Add some global account_data for a user. Args: user_id: The user to add some account data for. account_data_type: The type of account_data to add. content: The content json dictionary. Returns: The maximum stream ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.add_account_data_for_user( user_id, account_data_type, content ) self._notifier.on_new_event( StreamKeyType.ACCOUNT_DATA, max_stream_id, users=[user_id] ) await self._notify_modules(user_id, None, account_data_type, content) return max_stream_id else: response = await self._add_user_data_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, account_data_type=account_data_type, content=content, ) return response["max_stream_id"] async def remove_account_data_for_user( self, user_id: str, account_data_type: str ) -> Optional[int]: """Removes a piece of global account_data for a user. Args: user_id: The user to remove account data for. account_data_type: The type of account_data to remove. Returns: The maximum stream ID, or None if the room account data item did not exist. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.remove_account_data_for_user( user_id, account_data_type ) self._notifier.on_new_event( StreamKeyType.ACCOUNT_DATA, max_stream_id, users=[user_id] ) # Notify Synapse modules that the content of the type has changed to an # empty dictionary. await self._notify_modules(user_id, None, account_data_type, {}) return max_stream_id else: response = await self._remove_user_data_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, account_data_type=account_data_type, ) return response["max_stream_id"] async def add_tag_to_room( self, user_id: str, room_id: str, tag: str, content: JsonDict ) -> int: """Add a tag to a room for a user. Args: user_id: The user to add a tag for. room_id: The room to add a tag for. tag: The tag name to add. content: A json object to associate with the tag. Returns: The next account data ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.add_tag_to_room( user_id, room_id, tag, content ) self._notifier.on_new_event( StreamKeyType.ACCOUNT_DATA, max_stream_id, users=[user_id] ) return max_stream_id else: response = await self._add_tag_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, room_id=room_id, tag=tag, content=content, ) return response["max_stream_id"] async def remove_tag_from_room(self, user_id: str, room_id: str, tag: str) -> int: """Remove a tag from a room for a user. Returns: The next account data ID. """ if self._instance_name in self._account_data_writers: max_stream_id = await self._store.remove_tag_from_room( user_id, room_id, tag ) self._notifier.on_new_event( StreamKeyType.ACCOUNT_DATA, max_stream_id, users=[user_id] ) return max_stream_id else: response = await self._remove_tag_client( instance_name=random.choice(self._account_data_writers), user_id=user_id, room_id=room_id, tag=tag, ) return response["max_stream_id"] class AccountDataEventSource(EventSource[int, JsonDict]): def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main def get_current_key(self) -> int: return self.store.get_max_account_data_stream_id() async def get_new_events( self, user: UserID, from_key: int, limit: int, room_ids: StrCollection, is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[JsonDict], int]: user_id = user.to_string() last_stream_id = from_key current_stream_id = self.store.get_max_account_data_stream_id() results = [] tags = await self.store.get_updated_tags(user_id, last_stream_id) for room_id, room_tags in tags.items(): results.append( { "type": AccountDataTypes.TAG, "content": {"tags": room_tags}, "room_id": room_id, } ) account_data = await self.store.get_updated_global_account_data_for_user( user_id, last_stream_id ) room_account_data = await self.store.get_updated_room_account_data_for_user( user_id, last_stream_id ) for account_data_type, content in account_data.items(): results.append({"type": account_data_type, "content": content}) for room_id, account_data in room_account_data.items(): for account_data_type, content in account_data.items(): results.append( {"type": account_data_type, "content": content, "room_id": room_id} ) return results, current_stream_id synapse-1.100.0/synapse/handlers/account_validity.py000066400000000000000000000330031455622526000225360ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import email.mime.multipart import email.utils import logging from typing import TYPE_CHECKING, List, Optional, Tuple from synapse.api.errors import AuthError, StoreError, SynapseError from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.types import UserID from synapse.util import stringutils from synapse.util.async_helpers import delay_cancellation if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AccountValidityHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.config = hs.config self.store = hs.get_datastores().main self.send_email_handler = hs.get_send_email_handler() self.clock = hs.get_clock() self._app_name = hs.config.email.email_app_name self._module_api_callbacks = hs.get_module_api_callbacks().account_validity self._account_validity_enabled = ( hs.config.account_validity.account_validity_enabled ) self._account_validity_renew_by_email_enabled = ( hs.config.account_validity.account_validity_renew_by_email_enabled ) self._account_validity_period = None if self._account_validity_enabled: self._account_validity_period = ( hs.config.account_validity.account_validity_period ) if ( self._account_validity_enabled and self._account_validity_renew_by_email_enabled ): # Don't do email-specific configuration if renewal by email is disabled. self._template_html = hs.config.email.account_validity_template_html self._template_text = hs.config.email.account_validity_template_text self._renew_email_subject = ( hs.config.account_validity.account_validity_renew_email_subject ) # Check the renewal emails to send and send them every 30min. if hs.config.worker.run_background_tasks: self.clock.looping_call(self._send_renewal_emails, 30 * 60 * 1000) async def is_user_expired(self, user_id: str) -> bool: """Checks if a user has expired against third-party modules. Args: user_id: The user to check the expiry of. Returns: Whether the user has expired. """ for callback in self._module_api_callbacks.is_user_expired_callbacks: expired = await delay_cancellation(callback(user_id)) if expired is not None: return expired if self._account_validity_enabled: # If no module could determine whether the user has expired and the legacy # configuration is enabled, fall back to it. return await self.store.is_account_expired(user_id, self.clock.time_msec()) return False async def on_user_registration(self, user_id: str) -> None: """Tell third-party modules about a user's registration. Args: user_id: The ID of the newly registered user. """ for callback in self._module_api_callbacks.on_user_registration_callbacks: await callback(user_id) async def on_user_login( self, user_id: str, auth_provider_type: Optional[str], auth_provider_id: Optional[str], ) -> None: """Tell third-party modules about a user logins. Args: user_id: The mxID of the user. auth_provider_type: The type of login. auth_provider_id: The ID of the auth provider. """ for callback in self._module_api_callbacks.on_user_login_callbacks: await callback(user_id, auth_provider_type, auth_provider_id) @wrap_as_background_process("send_renewals") async def _send_renewal_emails(self) -> None: """Gets the list of users whose account is expiring in the amount of time configured in the ``renew_at`` parameter from the ``account_validity`` configuration, and sends renewal emails to all of these users as long as they have an email 3PID attached to their account. """ expiring_users = await self.store.get_users_expiring_soon() if expiring_users: for user_id, expiration_ts_ms in expiring_users: await self._send_renewal_email( user_id=user_id, expiration_ts=expiration_ts_ms ) async def send_renewal_email_to_user(self, user_id: str) -> None: """ Send a renewal email for a specific user. Args: user_id: The user ID to send a renewal email for. Raises: SynapseError if the user is not set to renew. """ # If a module supports sending a renewal email from here, do that, otherwise do # the legacy dance. if self._module_api_callbacks.on_legacy_send_mail_callback is not None: await self._module_api_callbacks.on_legacy_send_mail_callback(user_id) return if not self._account_validity_renew_by_email_enabled: raise AuthError( 403, "Account renewal via email is disabled on this server." ) expiration_ts = await self.store.get_expiration_ts_for_user(user_id) # If this user isn't set to be expired, raise an error. if expiration_ts is None: raise SynapseError(400, "User has no expiration time: %s" % (user_id,)) await self._send_renewal_email(user_id, expiration_ts) async def _send_renewal_email(self, user_id: str, expiration_ts: int) -> None: """Sends out a renewal email to every email address attached to the given user with a unique link allowing them to renew their account. Args: user_id: ID of the user to send email(s) to. expiration_ts: Timestamp in milliseconds for the expiration date of this user's account (used in the email templates). """ addresses = await self._get_email_addresses_for_user(user_id) # Stop right here if the user doesn't have at least one email address. # In this case, they will have to ask their server admin to renew their # account manually. # We don't need to do a specific check to make sure the account isn't # deactivated, as a deactivated account isn't supposed to have any # email address attached to it. if not addresses: return try: user_display_name = await self.store.get_profile_displayname( UserID.from_string(user_id) ) if user_display_name is None: user_display_name = user_id except StoreError: user_display_name = user_id renewal_token = await self._get_renewal_token(user_id) url = "%s_matrix/client/unstable/account_validity/renew?token=%s" % ( self.hs.config.server.public_baseurl, renewal_token, ) template_vars = { "display_name": user_display_name, "expiration_ts": expiration_ts, "url": url, } html_text = self._template_html.render(**template_vars) plain_text = self._template_text.render(**template_vars) for address in addresses: raw_to = email.utils.parseaddr(address)[1] await self.send_email_handler.send_email( email_address=raw_to, subject=self._renew_email_subject, app_name=self._app_name, html=html_text, text=plain_text, ) await self.store.set_renewal_mail_status(user_id=user_id, email_sent=True) async def _get_email_addresses_for_user(self, user_id: str) -> List[str]: """Retrieve the list of email addresses attached to a user's account. Args: user_id: ID of the user to lookup email addresses for. Returns: Email addresses for this account. """ threepids = await self.store.user_get_threepids(user_id) addresses = [] for threepid in threepids: if threepid.medium == "email": addresses.append(threepid.address) return addresses async def _get_renewal_token(self, user_id: str) -> str: """Generates a 32-byte long random string that will be inserted into the user's renewal email's unique link, then saves it into the database. Args: user_id: ID of the user to generate a string for. Returns: The generated string. Raises: StoreError(500): Couldn't generate a unique string after 5 attempts. """ attempts = 0 while attempts < 5: try: renewal_token = stringutils.random_string(32) await self.store.set_renewal_token_for_user(user_id, renewal_token) return renewal_token except StoreError: attempts += 1 raise StoreError(500, "Couldn't generate a unique string as refresh string.") async def renew_account(self, renewal_token: str) -> Tuple[bool, bool, int]: """Renews the account attached to a given renewal token by pushing back the expiration date by the current validity period in the server's configuration. If it turns out that the token is valid but has already been used, then the token is considered stale. A token is stale if the 'token_used_ts_ms' db column is non-null. This method exists to support handling the legacy account validity /renew endpoint. If a module implements the on_legacy_renew callback, then this process is delegated to the module instead. Args: renewal_token: Token sent with the renewal request. Returns: A tuple containing: * A bool representing whether the token is valid and unused. * A bool which is `True` if the token is valid, but stale. * An int representing the user's expiry timestamp as milliseconds since the epoch, or 0 if the token was invalid. """ # If a module supports triggering a renew from here, do that, otherwise do the # legacy dance. if self._module_api_callbacks.on_legacy_renew_callback is not None: return await self._module_api_callbacks.on_legacy_renew_callback( renewal_token ) try: ( user_id, current_expiration_ts, token_used_ts, ) = await self.store.get_user_from_renewal_token(renewal_token) except StoreError: return False, False, 0 # Check whether this token has already been used. if token_used_ts: logger.info( "User '%s' attempted to use previously used token '%s' to renew account", user_id, renewal_token, ) return False, True, current_expiration_ts logger.debug("Renewing an account for user %s", user_id) # Renew the account. Pass the renewal_token here so that it is not cleared. # We want to keep the token around in case the user attempts to renew their # account with the same token twice (clicking the email link twice). # # In that case, the token will be accepted, but the account's expiration ts # will remain unchanged. new_expiration_ts = await self.renew_account_for_user( user_id, renewal_token=renewal_token ) return True, False, new_expiration_ts async def renew_account_for_user( self, user_id: str, expiration_ts: Optional[int] = None, email_sent: bool = False, renewal_token: Optional[str] = None, ) -> int: """Renews the account attached to a given user by pushing back the expiration date by the current validity period in the server's configuration. Args: user_id: The ID of the user to renew. expiration_ts: New expiration date. Defaults to now + validity period. email_sent: Whether an email has been sent for this validity period. renewal_token: Token sent with the renewal request. The user's token will be cleared if this is None. Returns: New expiration date for this account, as a timestamp in milliseconds since epoch. """ now = self.clock.time_msec() if expiration_ts is None: assert self._account_validity_period is not None expiration_ts = now + self._account_validity_period await self.store.set_account_validity_for_user( user_id=user_id, expiration_ts=expiration_ts, email_sent=email_sent, renewal_token=renewal_token, token_used_ts=now, ) return expiration_ts synapse-1.100.0/synapse/handlers/admin.py000066400000000000000000000371741455622526000203020ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import logging from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, Sequence, Set import attr from synapse.api.constants import Direction, Membership from synapse.events import EventBase from synapse.types import JsonMapping, RoomStreamToken, StateMap, UserID, UserInfo from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class AdminHandler: def __init__(self, hs: "HomeServer"): self._store = hs.get_datastores().main self._device_handler = hs.get_device_handler() self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self._msc3866_enabled = hs.config.experimental.msc3866.enabled async def get_whois(self, user: UserID) -> JsonMapping: connections = [] sessions = await self._store.get_user_ip_and_agents(user) for session in sessions: connections.append( { "ip": session["ip"], "last_seen": session["last_seen"], "user_agent": session["user_agent"], } ) ret = { "user_id": user.to_string(), "devices": {"": {"sessions": [{"connections": connections}]}}, } return ret async def get_user(self, user: UserID) -> Optional[JsonMapping]: """Function to get user details""" user_info: Optional[UserInfo] = await self._store.get_user_by_id( user.to_string() ) if user_info is None: return None user_info_dict = { "name": user.to_string(), "admin": user_info.is_admin, "deactivated": user_info.is_deactivated, "locked": user_info.locked, "shadow_banned": user_info.is_shadow_banned, "creation_ts": user_info.creation_ts, "appservice_id": user_info.appservice_id, "consent_server_notice_sent": user_info.consent_server_notice_sent, "consent_version": user_info.consent_version, "consent_ts": user_info.consent_ts, "user_type": user_info.user_type, "is_guest": user_info.is_guest, } if self._msc3866_enabled: # Only include the approved flag if support for MSC3866 is enabled. user_info_dict["approved"] = user_info.approved # Add additional user metadata profile = await self._store.get_profileinfo(user) threepids = await self._store.user_get_threepids(user.to_string()) external_ids = [ ({"auth_provider": auth_provider, "external_id": external_id}) for auth_provider, external_id in await self._store.get_external_ids_by_user( user.to_string() ) ] user_info_dict["displayname"] = profile.display_name user_info_dict["avatar_url"] = profile.avatar_url user_info_dict["threepids"] = [attr.asdict(t) for t in threepids] user_info_dict["external_ids"] = external_ids user_info_dict["erased"] = await self._store.is_user_erased(user.to_string()) last_seen_ts = await self._store.get_last_seen_for_user_id(user.to_string()) user_info_dict["last_seen_ts"] = last_seen_ts return user_info_dict async def export_user_data(self, user_id: str, writer: "ExfiltrationWriter") -> Any: """Write all data we have on the user to the given writer. Args: user_id: The user ID to fetch data of. writer: The writer to write to. Returns: Resolves when all data for a user has been written. The returned value is that returned by `writer.finished()`. """ # Get all rooms the user is in or has been in rooms = await self._store.get_rooms_for_local_user_where_membership_is( user_id, membership_list=( Membership.JOIN, Membership.LEAVE, Membership.BAN, Membership.INVITE, Membership.KNOCK, ), ) # We only try and fetch events for rooms the user has been in. If # they've been e.g. invited to a room without joining then we handle # those separately. rooms_user_has_been_in = await self._store.get_rooms_user_has_been_in(user_id) for index, room in enumerate(rooms): room_id = room.room_id logger.info( "[%s] Handling room %s, %d/%d", user_id, room_id, index + 1, len(rooms) ) forgotten = await self._store.did_forget(user_id, room_id) if forgotten: logger.info("[%s] User forgot room %d, ignoring", user_id, room_id) continue if room_id not in rooms_user_has_been_in: # If we haven't been in the rooms then the filtering code below # won't return anything, so we need to handle these cases # explicitly. if room.membership == Membership.INVITE: event_id = room.event_id invite = await self._store.get_event(event_id, allow_none=True) if invite: invited_state = invite.unsigned["invite_room_state"] writer.write_invite(room_id, invite, invited_state) if room.membership == Membership.KNOCK: event_id = room.event_id knock = await self._store.get_event(event_id, allow_none=True) if knock: knock_state = knock.unsigned["knock_room_state"] writer.write_knock(room_id, knock, knock_state) continue # We only want to bother fetching events up to the last time they # were joined. We estimate that point by looking at the # stream_ordering of the last membership if it wasn't a join. if room.membership == Membership.JOIN: stream_ordering = self._store.get_room_max_stream_ordering() else: stream_ordering = room.stream_ordering from_key = RoomStreamToken(topological=0, stream=0) to_key = RoomStreamToken(stream=stream_ordering) # Events that we've processed in this room written_events: Set[str] = set() # We need to track gaps in the events stream so that we can then # write out the state at those events. We do this by keeping track # of events whose prev events we haven't seen. # Map from event ID to prev events that haven't been processed, # dict[str, set[str]]. event_to_unseen_prevs = {} # The reverse mapping to above, i.e. map from unseen event to events # that have the unseen event in their prev_events, i.e. the unseen # events "children". unseen_to_child_events: Dict[str, Set[str]] = {} # We fetch events in the room the user could see by fetching *all* # events that we have and then filtering, this isn't the most # efficient method perhaps but it does guarantee we get everything. while True: events, _ = await self._store.paginate_room_events( room_id, from_key, to_key, limit=100, direction=Direction.FORWARDS ) if not events: break last_event = events[-1] assert last_event.internal_metadata.stream_ordering from_key = RoomStreamToken( stream=last_event.internal_metadata.stream_ordering, topological=last_event.depth, ) events = await filter_events_for_client( self._storage_controllers, user_id, events ) writer.write_events(room_id, events) # Update the extremity tracking dicts for event in events: # Check if we have any prev events that haven't been # processed yet, and add those to the appropriate dicts. unseen_events = set(event.prev_event_ids()) - written_events if unseen_events: event_to_unseen_prevs[event.event_id] = unseen_events for unseen in unseen_events: unseen_to_child_events.setdefault(unseen, set()).add( event.event_id ) # Now check if this event is an unseen prev event, if so # then we remove this event from the appropriate dicts. for child_id in unseen_to_child_events.pop(event.event_id, []): event_to_unseen_prevs[child_id].discard(event.event_id) written_events.add(event.event_id) logger.info( "Written %d events in room %s", len(written_events), room_id ) # Extremities are the events who have at least one unseen prev event. extremities = ( event_id for event_id, unseen_prevs in event_to_unseen_prevs.items() if unseen_prevs ) for event_id in extremities: if not event_to_unseen_prevs[event_id]: continue state = await self._state_storage_controller.get_state_for_event( event_id ) writer.write_state(room_id, event_id, state) # Get the user profile profile = await self.get_user(UserID.from_string(user_id)) if profile is not None: writer.write_profile(profile) logger.info("[%s] Written profile", user_id) # Get all devices the user has devices = await self._device_handler.get_devices_by_user(user_id) writer.write_devices(devices) logger.info("[%s] Written %s devices", user_id, len(devices)) # Get all connections the user has connections = await self.get_whois(UserID.from_string(user_id)) writer.write_connections( connections["devices"][""]["sessions"][0]["connections"] ) logger.info("[%s] Written %s connections", user_id, len(connections)) # Get all account data the user has global and in rooms global_data = await self._store.get_global_account_data_for_user(user_id) by_room_data = await self._store.get_room_account_data_for_user(user_id) writer.write_account_data("global", global_data) for room_id in by_room_data: writer.write_account_data(room_id, by_room_data[room_id]) logger.info( "[%s] Written account data for %s rooms", user_id, len(by_room_data) ) # Get all media ids the user has limit = 100 start = 0 while True: media_ids, total = await self._store.get_local_media_by_user_paginate( start, limit, user_id ) for media in media_ids: writer.write_media_id(media.media_id, attr.asdict(media)) logger.info( "[%s] Written %d media_ids of %s", user_id, (start + len(media_ids)), total, ) if (start + limit) >= total: break start += limit return writer.finished() class ExfiltrationWriter(metaclass=abc.ABCMeta): """Interface used to specify how to write exported data.""" @abc.abstractmethod def write_events(self, room_id: str, events: List[EventBase]) -> None: """Write a batch of events for a room.""" raise NotImplementedError() @abc.abstractmethod def write_state( self, room_id: str, event_id: str, state: StateMap[EventBase] ) -> None: """Write the state at the given event in the room. This only gets called for backward extremities rather than for each event. """ raise NotImplementedError() @abc.abstractmethod def write_invite( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: """Write an invite for the room, with associated invite state. Args: room_id: The room ID the invite is for. event: The invite event. state: A subset of the state at the invite, with a subset of the event keys (type, state_key content and sender). """ raise NotImplementedError() @abc.abstractmethod def write_knock( self, room_id: str, event: EventBase, state: StateMap[EventBase] ) -> None: """Write a knock for the room, with associated knock state. Args: room_id: The room ID the knock is for. event: The knock event. state: A subset of the state at the knock, with a subset of the event keys (type, state_key content and sender). """ raise NotImplementedError() @abc.abstractmethod def write_profile(self, profile: JsonMapping) -> None: """Write the profile of a user. Args: profile: The user profile. """ raise NotImplementedError() @abc.abstractmethod def write_devices(self, devices: Sequence[JsonMapping]) -> None: """Write the devices of a user. Args: devices: The list of devices. """ raise NotImplementedError() @abc.abstractmethod def write_connections(self, connections: Sequence[JsonMapping]) -> None: """Write the connections of a user. Args: connections: The list of connections / sessions. """ raise NotImplementedError() @abc.abstractmethod def write_account_data( self, file_name: str, account_data: Mapping[str, JsonMapping] ) -> None: """Write the account data of a user. Args: file_name: file name to write data account_data: mapping of global or room account_data """ raise NotImplementedError() @abc.abstractmethod def write_media_id(self, media_id: str, media_metadata: JsonMapping) -> None: """Write the media's metadata of a user. Exports only the metadata, as this can be fetched from the database via read only. In order to access the files, a connection to the correct media repository would be required. Args: media_id: ID of the media. media_metadata: Metadata of one media file. """ @abc.abstractmethod def finished(self) -> Any: """Called when all data has successfully been exported and written. This functions return value is passed to the caller of `export_user_data`. """ raise NotImplementedError() synapse-1.100.0/synapse/handlers/appservice.py000066400000000000000000001151071455622526000213440ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import ( TYPE_CHECKING, Collection, Dict, Iterable, List, Mapping, Optional, Tuple, Union, ) from prometheus_client import Counter from twisted.internet import defer import synapse from synapse.api.constants import EduTypes, EventTypes from synapse.appservice import ApplicationService from synapse.events import EventBase from synapse.handlers.presence import format_user_presence_state from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.metrics import ( event_processing_loop_counter, event_processing_loop_room_count, ) from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.storage.databases.main.directory import RoomAliasMapping from synapse.types import ( DeviceListUpdates, JsonDict, JsonMapping, MultiWriterStreamToken, RoomAlias, RoomStreamToken, StreamKeyType, UserID, ) from synapse.util.async_helpers import Linearizer from synapse.util.metrics import Measure if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) events_processed_counter = Counter("synapse_handlers_appservice_events_processed", "") class ApplicationServicesHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.is_mine_id = hs.is_mine_id self.appservice_api = hs.get_application_service_api() self.scheduler = hs.get_application_service_scheduler() self.started_scheduler = False self.clock = hs.get_clock() self.notify_appservices = hs.config.worker.should_notify_appservices self.event_sources = hs.get_event_sources() self._msc2409_to_device_messages_enabled = ( hs.config.experimental.msc2409_to_device_messages_enabled ) self._msc3202_transaction_extensions_enabled = ( hs.config.experimental.msc3202_transaction_extensions ) self.current_max = 0 self.is_processing = False self._ephemeral_events_linearizer = Linearizer( name="appservice_ephemeral_events" ) def notify_interested_services(self, max_token: RoomStreamToken) -> None: """Notifies (pushes) all application services interested in this event. Pushing is done asynchronously, so this method won't block for any prolonged length of time. """ # We just use the minimum stream ordering and ignore the vector clock # component. This is safe to do as long as we *always* ignore the vector # clock components. current_id = max_token.stream services = self.store.get_app_services() if not services or not self.notify_appservices: return self.current_max = max(self.current_max, current_id) if self.is_processing: return # We only start a new background process if necessary rather than # optimistically (to cut down on overhead). self._notify_interested_services(max_token) @wrap_as_background_process("notify_interested_services") async def _notify_interested_services(self, max_token: RoomStreamToken) -> None: with Measure(self.clock, "notify_interested_services"): self.is_processing = True try: upper_bound = -1 while upper_bound < self.current_max: last_token = await self.store.get_appservice_last_pos() ( upper_bound, event_to_received_ts, ) = await self.store.get_all_new_event_ids_stream( last_token, self.current_max, limit=100 ) events = await self.store.get_events_as_list( event_to_received_ts.keys(), get_prev_content=True ) events_by_room: Dict[str, List[EventBase]] = {} for event in events: events_by_room.setdefault(event.room_id, []).append(event) async def handle_event(event: EventBase) -> None: # Gather interested services services = await self._get_services_for_event(event) if len(services) == 0: return # no services need notifying # Do we know this user exists? If not, poke the user # query API for all services which match that user regex. # This needs to block as these user queries need to be # made BEFORE pushing the event. await self._check_user_exists(event.sender) if event.type == EventTypes.Member: await self._check_user_exists(event.state_key) if not self.started_scheduler: async def start_scheduler() -> None: try: await self.scheduler.start() except Exception: logger.error("Application Services Failure") run_as_background_process("as_scheduler", start_scheduler) self.started_scheduler = True # Fork off pushes to these services for service in services: self.scheduler.enqueue_for_appservice( service, events=[event] ) now = self.clock.time_msec() ts = event_to_received_ts[event.event_id] assert ts is not None synapse.metrics.event_processing_lag_by_event.labels( "appservice_sender" ).observe((now - ts) / 1000) async def handle_room_events(events: Iterable[EventBase]) -> None: for event in events: await handle_event(event) await make_deferred_yieldable( defer.gatherResults( [ run_in_background(handle_room_events, evs) for evs in events_by_room.values() ], consumeErrors=True, ) ) await self.store.set_appservice_last_pos(upper_bound) synapse.metrics.event_processing_positions.labels( "appservice_sender" ).set(upper_bound) events_processed_counter.inc(len(events)) event_processing_loop_room_count.labels("appservice_sender").inc( len(events_by_room) ) event_processing_loop_counter.labels("appservice_sender").inc() if events: now = self.clock.time_msec() ts = event_to_received_ts[events[-1].event_id] assert ts is not None synapse.metrics.event_processing_lag.labels( "appservice_sender" ).set(now - ts) synapse.metrics.event_processing_last_ts.labels( "appservice_sender" ).set(ts) finally: self.is_processing = False def notify_interested_services_ephemeral( self, stream_key: StreamKeyType, new_token: Union[int, RoomStreamToken, MultiWriterStreamToken], users: Collection[Union[str, UserID]], ) -> None: """ This is called by the notifier in the background when an ephemeral event is handled by the homeserver. This will determine which appservices are interested in the event, and submit them. Args: stream_key: The stream the event came from. `stream_key` can be StreamKeyType.TYPING, StreamKeyType.RECEIPT, StreamKeyType.PRESENCE, StreamKeyType.TO_DEVICE or StreamKeyType.DEVICE_LIST. Any other value for `stream_key` will cause this function to return early. Ephemeral events will only be pushed to appservices that have opted into receiving them by setting `push_ephemeral` to true in their registration file. Note that while MSC2409 is experimental, this option is called `de.sorunome.msc2409.push_ephemeral`. Appservices will only receive ephemeral events that fall within their registered user and room namespaces. new_token: The stream token of the event. users: The users that should be informed of the new event, if any. """ if not self.notify_appservices: return # Notify appservices of updates in ephemeral event streams. # Only the following streams are currently supported. # FIXME: We should use constants for these values. if stream_key not in ( StreamKeyType.TYPING, StreamKeyType.RECEIPT, StreamKeyType.PRESENCE, StreamKeyType.TO_DEVICE, StreamKeyType.DEVICE_LIST, ): return # Ignore to-device messages if the feature flag is not enabled if ( stream_key == StreamKeyType.TO_DEVICE and not self._msc2409_to_device_messages_enabled ): return # Ignore device lists if the feature flag is not enabled if ( stream_key == StreamKeyType.DEVICE_LIST and not self._msc3202_transaction_extensions_enabled ): return # We know we're not a `RoomStreamToken` at this point. assert not isinstance(new_token, RoomStreamToken) # Check whether there are any appservices which have registered to receive # ephemeral events. # # Note that whether these events are actually relevant to these appservices # is decided later on. services = self.store.get_app_services() services = [ service for service in services # Different stream keys require different support booleans if ( stream_key in ( StreamKeyType.TYPING, StreamKeyType.RECEIPT, StreamKeyType.PRESENCE, StreamKeyType.TO_DEVICE, ) and service.supports_ephemeral ) or ( stream_key == StreamKeyType.DEVICE_LIST and service.msc3202_transaction_extensions ) ] if not services: # Bail out early if none of the target appservices have explicitly registered # to receive these ephemeral events. return # We only start a new background process if necessary rather than # optimistically (to cut down on overhead). self._notify_interested_services_ephemeral( services, stream_key, new_token, users ) @wrap_as_background_process("notify_interested_services_ephemeral") async def _notify_interested_services_ephemeral( self, services: List[ApplicationService], stream_key: StreamKeyType, new_token: Union[int, MultiWriterStreamToken], users: Collection[Union[str, UserID]], ) -> None: logger.debug("Checking interested services for %s", stream_key) with Measure(self.clock, "notify_interested_services_ephemeral"): for service in services: if stream_key == StreamKeyType.TYPING: # Note that we don't persist the token (via set_appservice_stream_type_pos) # for typing_key due to performance reasons and due to their highly # ephemeral nature. # # Instead we simply grab the latest typing updates in _handle_typing # and, if they apply to this application service, send it off. assert isinstance(new_token, int) events = await self._handle_typing(service, new_token) if events: self.scheduler.enqueue_for_appservice(service, ephemeral=events) continue # Since we read/update the stream position for this AS/stream async with self._ephemeral_events_linearizer.queue( (service.id, stream_key) ): if stream_key == StreamKeyType.RECEIPT: assert isinstance(new_token, MultiWriterStreamToken) # We store appservice tokens as integers, so we ignore # the `instance_map` components and instead simply # follow the base stream position. new_token = MultiWriterStreamToken(stream=new_token.stream) events = await self._handle_receipts(service, new_token) self.scheduler.enqueue_for_appservice(service, ephemeral=events) # Persist the latest handled stream token for this appservice await self.store.set_appservice_stream_type_pos( service, "read_receipt", new_token.stream ) elif stream_key == StreamKeyType.PRESENCE: assert isinstance(new_token, int) events = await self._handle_presence(service, users, new_token) self.scheduler.enqueue_for_appservice(service, ephemeral=events) # Persist the latest handled stream token for this appservice await self.store.set_appservice_stream_type_pos( service, "presence", new_token ) elif stream_key == StreamKeyType.TO_DEVICE: assert isinstance(new_token, int) # Retrieve a list of to-device message events, as well as the # maximum stream token of the messages we were able to retrieve. to_device_messages = await self._get_to_device_messages( service, new_token, users ) self.scheduler.enqueue_for_appservice( service, to_device_messages=to_device_messages ) # Persist the latest handled stream token for this appservice await self.store.set_appservice_stream_type_pos( service, "to_device", new_token ) elif stream_key == StreamKeyType.DEVICE_LIST: assert isinstance(new_token, int) device_list_summary = await self._get_device_list_summary( service, new_token ) if device_list_summary: self.scheduler.enqueue_for_appservice( service, device_list_summary=device_list_summary ) # Persist the latest handled stream token for this appservice await self.store.set_appservice_stream_type_pos( service, "device_list", new_token ) async def _handle_typing( self, service: ApplicationService, new_token: int ) -> List[JsonMapping]: """ Return the typing events since the given stream token that the given application service should receive. First fetch all typing events between the given typing stream token (non-inclusive) and the latest typing event stream token (inclusive). Then return only those typing events that the given application service may be interested in. Args: service: The application service to check for which events it should receive. new_token: A typing event stream token. Returns: A list of JSON dictionaries containing data derived from the typing events that should be sent to the given application service. """ typing_source = self.event_sources.sources.typing # Get the typing events from just before current typing, _ = await typing_source.get_new_events_as( service=service, # For performance reasons, we don't persist the previous # token in the DB and instead fetch the latest typing event # for appservices. # TODO: It'd likely be more efficient to simply fetch the # typing event with the given 'new_token' stream token and # check if the given service was interested, rather than # iterating over all typing events and only grabbing the # latest few. from_key=new_token - 1, ) return typing async def _handle_receipts( self, service: ApplicationService, new_token: MultiWriterStreamToken ) -> List[JsonMapping]: """ Return the latest read receipts that the given application service should receive. First fetch all read receipts between the last receipt stream token that this application service should have previously received (non-inclusive) and the latest read receipt stream token (inclusive). Then from that set, return only those read receipts that the given application service may be interested in. Args: service: The application service to check for which events it should receive. new_token: A receipts event stream token. Purely used to double-check that the from_token we pull from the database isn't greater than or equal to this token. Prevents accidentally duplicating work. Returns: A list of JSON dictionaries containing data derived from the read receipts that should be sent to the given application service. """ from_key = await self.store.get_type_stream_id_for_appservice( service, "read_receipt" ) if new_token is not None and new_token.stream <= from_key: logger.debug( "Rejecting token lower than or equal to stored: %s" % (new_token,) ) return [] from_token = MultiWriterStreamToken(stream=from_key) receipts_source = self.event_sources.sources.receipt receipts, _ = await receipts_source.get_new_events_as( service=service, from_key=from_token, to_key=new_token ) return receipts async def _handle_presence( self, service: ApplicationService, users: Collection[Union[str, UserID]], new_token: Optional[int], ) -> List[JsonMapping]: """ Return the latest presence updates that the given application service should receive. First, filter the given users list to those that the application service is interested in. Then retrieve the latest presence updates since the the last-known previously received presence stream token for the given application service. Return those presence updates. Args: service: The application service that ephemeral events are being sent to. users: The users that should receive the presence update. new_token: A presence update stream token. Purely used to double-check that the from_token we pull from the database isn't greater than or equal to this token. Prevents accidentally duplicating work. Returns: A list of json dictionaries containing data derived from the presence events that should be sent to the given application service. """ events: List[JsonMapping] = [] presence_source = self.event_sources.sources.presence from_key = await self.store.get_type_stream_id_for_appservice( service, "presence" ) if new_token is not None and new_token <= from_key: logger.debug( "Rejecting token lower than or equal to stored: %s" % (new_token,) ) return [] for user in users: if isinstance(user, str): user = UserID.from_string(user) interested = await service.is_interested_in_presence(user, self.store) if not interested: continue presence_events, _ = await presence_source.get_new_events( user=user, from_key=from_key, ) time_now = self.clock.time_msec() events.extend( { "type": EduTypes.PRESENCE, "sender": event.user_id, "content": format_user_presence_state( event, time_now, include_user_id=False ), } for event in presence_events ) return events async def _get_to_device_messages( self, service: ApplicationService, new_token: int, users: Collection[Union[str, UserID]], ) -> List[JsonDict]: """ Given an application service, determine which events it should receive from those between the last-recorded to-device message stream token for this appservice and the given stream token. Args: service: The application service to check for which events it should receive. new_token: The latest to-device event stream token. users: The users to be notified for the new to-device messages (ie, the recipients of the messages). Returns: A list of JSON dictionaries containing data derived from the to-device events that should be sent to the given application service. """ # Get the stream token that this application service has processed up until from_key = await self.store.get_type_stream_id_for_appservice( service, "to_device" ) # Filter out users that this appservice is not interested in users_appservice_is_interested_in: List[str] = [] for user in users: # FIXME: We should do this farther up the call stack. We currently repeat # this operation in _handle_presence. if isinstance(user, UserID): user = user.to_string() if service.is_interested_in_user(user): users_appservice_is_interested_in.append(user) if not users_appservice_is_interested_in: # Return early if the AS was not interested in any of these users return [] # Retrieve the to-device messages for each user recipient_device_to_messages = await self.store.get_messages_for_user_devices( users_appservice_is_interested_in, from_key, new_token, ) # According to MSC2409, we'll need to add 'to_user_id' and 'to_device_id' fields # to the event JSON so that the application service will know which user/device # combination this messages was intended for. # # So we mangle this dict into a flat list of to-device messages with the relevant # user ID and device ID embedded inside each message dict. message_payload: List[JsonDict] = [] for ( user_id, device_id, ), messages in recipient_device_to_messages.items(): for message_json in messages: message_payload.append( { "to_user_id": user_id, "to_device_id": device_id, **message_json, } ) return message_payload async def _get_device_list_summary( self, appservice: ApplicationService, new_key: int, ) -> DeviceListUpdates: """ Retrieve a list of users who have changed their device lists. Args: appservice: The application service to retrieve device list changes for. new_key: The stream key of the device list change that triggered this method call. Returns: A set of device list updates, comprised of users that the appservices needs to: * resync the device list of, and * stop tracking the device list of. """ # Fetch the last successfully processed device list update stream ID # for this appservice. from_key = await self.store.get_type_stream_id_for_appservice( appservice, "device_list" ) # Fetch the users who have modified their device list since then. users_with_changed_device_lists = await self.store.get_all_devices_changed( from_key, to_key=new_key ) # Filter out any users the application service is not interested in # # For each user who changed their device list, we want to check whether this # appservice would be interested in the change. filtered_users_with_changed_device_lists = { user_id for user_id in users_with_changed_device_lists if await self._is_appservice_interested_in_device_lists_of_user( appservice, user_id ) } # Create a summary of "changed" and "left" users. # TODO: Calculate "left" users. device_list_summary = DeviceListUpdates( changed=filtered_users_with_changed_device_lists ) return device_list_summary async def _is_appservice_interested_in_device_lists_of_user( self, appservice: ApplicationService, user_id: str, ) -> bool: """ Returns whether a given application service is interested in the device list updates of a given user. The application service is interested in the user's device list updates if any of the following are true: * The user is the appservice's sender localpart user. * The user is in the appservice's user namespace. * At least one member of one room that the user is a part of is in the appservice's user namespace. * The appservice is explicitly (via room ID or alias) interested in at least one room that the user is in. Args: appservice: The application service to gauge interest of. user_id: The ID of the user whose device list interest is in question. Returns: True if the application service is interested in the user's device lists, False otherwise. """ # This method checks against both the sender localpart user as well as if the # user is in the appservice's user namespace. if appservice.is_interested_in_user(user_id): return True # Determine whether any of the rooms the user is in justifies sending this # device list update to the application service. room_ids = await self.store.get_rooms_for_user(user_id) for room_id in room_ids: # This method covers checking room members for appservice interest as well as # room ID and alias checks. if await appservice.is_interested_in_room(room_id, self.store): return True return False async def query_user_exists(self, user_id: str) -> bool: """Check if any application service knows this user_id exists. Args: user_id: The user to query if they exist on any AS. Returns: True if this user exists on at least one application service. """ user_query_services = self._get_services_for_user(user_id=user_id) for user_service in user_query_services: is_known_user = await self.appservice_api.query_user(user_service, user_id) if is_known_user: return True return False async def query_room_alias_exists( self, room_alias: RoomAlias ) -> Optional[RoomAliasMapping]: """Check if an application service knows this room alias exists. Args: room_alias: The room alias to query. Returns: RoomAliasMapping or None if no association can be found. """ room_alias_str = room_alias.to_string() services = self.store.get_app_services() alias_query_services = [ s for s in services if (s.is_room_alias_in_namespace(room_alias_str)) ] for alias_service in alias_query_services: is_known_alias = await self.appservice_api.query_alias( alias_service, room_alias_str ) if is_known_alias: # the alias exists now so don't query more ASes. return await self.store.get_association_from_room_alias(room_alias) return None async def query_3pe( self, kind: str, protocol: str, fields: Dict[bytes, List[bytes]] ) -> List[JsonDict]: services = self._get_services_for_3pn(protocol) results = await make_deferred_yieldable( defer.DeferredList( [ run_in_background( self.appservice_api.query_3pe, service, kind, protocol, fields ) for service in services ], consumeErrors=True, ) ) ret = [] for success, result in results: if success: ret.extend(result) return ret async def get_3pe_protocols( self, only_protocol: Optional[str] = None ) -> Dict[str, JsonDict]: services = self.store.get_app_services() protocols: Dict[str, List[JsonDict]] = {} # Collect up all the individual protocol responses out of the ASes for s in services: for p in s.protocols: if only_protocol is not None and p != only_protocol: continue if p not in protocols: protocols[p] = [] info = await self.appservice_api.get_3pe_protocol(s, p) if info is not None: protocols[p].append(info) def _merge_instances(infos: List[JsonDict]) -> JsonDict: # Merge the 'instances' lists of multiple results, but just take # the other fields from the first as they ought to be identical # copy the result so as not to corrupt the cached one combined = dict(infos[0]) combined["instances"] = list(combined["instances"]) for info in infos[1:]: combined["instances"].extend(info["instances"]) return combined return { p: _merge_instances(protocols[p]) for p in protocols.keys() if protocols[p] } async def _get_services_for_event( self, event: EventBase ) -> List[ApplicationService]: """Retrieve a list of application services interested in this event. Args: event: The event to check. Returns: A list of services interested in this event based on the service regex. """ services = self.store.get_app_services() # we can't use a list comprehension here. Since python 3, list # comprehensions use a generator internally. This means you can't yield # inside of a list comprehension anymore. interested_list = [] for s in services: if await s.is_interested_in_event(event.event_id, event, self.store): interested_list.append(s) return interested_list def _get_services_for_user(self, user_id: str) -> List[ApplicationService]: services = self.store.get_app_services() return [s for s in services if (s.is_interested_in_user(user_id))] def _get_services_for_3pn(self, protocol: str) -> List[ApplicationService]: services = self.store.get_app_services() return [s for s in services if s.is_interested_in_protocol(protocol)] async def _is_unknown_user(self, user_id: str) -> bool: if not self.is_mine_id(user_id): # we don't know if they are unknown or not since it isn't one of our # users. We can't poke ASes. return False user_info = await self.store.get_user_by_id(user_id) if user_info: return False # user not found; could be the AS though, so check. services = self.store.get_app_services() service_list = [s for s in services if s.sender == user_id] return len(service_list) == 0 async def _check_user_exists(self, user_id: str) -> bool: unknown_user = await self._is_unknown_user(user_id) if unknown_user: return await self.query_user_exists(user_id) return True async def claim_e2e_one_time_keys( self, query: Iterable[Tuple[str, str, str, int]] ) -> Tuple[ Dict[str, Dict[str, Dict[str, JsonDict]]], List[Tuple[str, str, str, int]] ]: """Claim one time keys from application services. Users which are exclusively owned by an application service are sent a key claim request to check if the application service provides keys directly. Args: query: An iterable of tuples of (user ID, device ID, algorithm). Returns: A tuple of: A map of user ID -> a map device ID -> a map of key ID -> JSON. A copy of the input which has not been fulfilled (either because they are not appservice users or the appservice does not support providing OTKs). """ services = self.store.get_app_services() # Partition the users by appservice. query_by_appservice: Dict[str, List[Tuple[str, str, str, int]]] = {} missing = [] for user_id, device, algorithm, count in query: if not self.store.get_if_app_services_interested_in_user(user_id): missing.append((user_id, device, algorithm, count)) continue # Find the associated appservice. for service in services: if service.is_exclusive_user(user_id): query_by_appservice.setdefault(service.id, []).append( (user_id, device, algorithm, count) ) continue # Query each service in parallel. results = await make_deferred_yieldable( defer.DeferredList( [ run_in_background( self.appservice_api.claim_client_keys, # We know this must be an app service. self.store.get_app_service_by_id(service_id), # type: ignore[arg-type] service_query, ) for service_id, service_query in query_by_appservice.items() ], consumeErrors=True, ) ) # Patch together the results -- they are all independent (since they # require exclusive control over the users, which is the outermost key). claimed_keys: Dict[str, Dict[str, Dict[str, JsonDict]]] = {} for success, result in results: if success: claimed_keys.update(result[0]) missing.extend(result[1]) return claimed_keys, missing async def query_keys( self, query: Mapping[str, Optional[List[str]]] ) -> Dict[str, Dict[str, Dict[str, JsonDict]]]: """Query application services for device keys. Users which are exclusively owned by an application service are queried for keys to check if the application service provides keys directly. Args: query: map from user_id to a list of devices to query Returns: A map from user_id -> device_id -> device details """ services = self.store.get_app_services() # Partition the users by appservice. query_by_appservice: Dict[str, Dict[str, List[str]]] = {} for user_id, device_ids in query.items(): if not self.store.get_if_app_services_interested_in_user(user_id): continue # Find the associated appservice. for service in services: if service.is_exclusive_user(user_id): query_by_appservice.setdefault(service.id, {})[user_id] = ( device_ids or [] ) continue # Query each service in parallel. results = await make_deferred_yieldable( defer.DeferredList( [ run_in_background( self.appservice_api.query_keys, # We know this must be an app service. self.store.get_app_service_by_id(service_id), # type: ignore[arg-type] service_query, ) for service_id, service_query in query_by_appservice.items() ], consumeErrors=True, ) ) # Patch together the results -- they are all independent (since they # require exclusive control over the users). They get returned as a single # dictionary. key_queries: Dict[str, Dict[str, Dict[str, JsonDict]]] = {} for success, result in results: if success: key_queries.update(result) return key_queries synapse-1.100.0/synapse/handlers/auth.py000066400000000000000000002774521455622526000201600ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 - 2020 The Matrix.org Foundation C.I.C. # Copyright 2017 Vector Creations Ltd # Copyright 2014 - 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import time import unicodedata import urllib.parse from binascii import crc32 from http import HTTPStatus from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, List, Mapping, Optional, Tuple, Type, Union, cast, ) import attr import bcrypt import unpaddedbase64 from prometheus_client import Counter from twisted.internet.defer import CancelledError from twisted.web.server import Request from synapse.api.constants import LoginType from synapse.api.errors import ( AuthError, Codes, InteractiveAuthIncompleteError, LoginError, NotFoundError, StoreError, SynapseError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.handlers.ui_auth import ( INTERACTIVE_AUTH_CHECKERS, UIAuthSessionDataConstants, ) from synapse.handlers.ui_auth.checkers import UserInteractiveAuthChecker from synapse.http import get_request_user_agent from synapse.http.server import finish_request, respond_with_html from synapse.http.site import SynapseRequest from synapse.logging.context import defer_to_thread from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.databases.main.registration import ( LoginTokenExpired, LoginTokenLookupResult, LoginTokenReused, ) from synapse.types import JsonDict, Requester, UserID from synapse.util import stringutils as stringutils from synapse.util.async_helpers import delay_cancellation, maybe_awaitable from synapse.util.msisdn import phone_number_to_msisdn from synapse.util.stringutils import base62_encode from synapse.util.threepids import canonicalise_email if TYPE_CHECKING: from synapse.module_api import ModuleApi from synapse.rest.client.login import LoginResponse from synapse.server import HomeServer logger = logging.getLogger(__name__) INVALID_USERNAME_OR_PASSWORD = "Invalid username or password" invalid_login_token_counter = Counter( "synapse_user_login_invalid_login_tokens", "Counts the number of rejected m.login.token on /login", ["reason"], ) def convert_client_dict_legacy_fields_to_identifier( submission: JsonDict, ) -> Dict[str, str]: """ Convert a legacy-formatted login submission to an identifier dict. Legacy login submissions (used in both login and user-interactive authentication) provide user-identifying information at the top-level instead. These are now deprecated and replaced with identifiers: https://matrix.org/docs/spec/client_server/r0.6.1#identifier-types Args: submission: The client dict to convert Returns: The matching identifier dict Raises: SynapseError: If the format of the client dict is invalid """ identifier = submission.get("identifier", {}) # Generate an m.id.user identifier if "user" parameter is present user = submission.get("user") if user: identifier = {"type": "m.id.user", "user": user} # Generate an m.id.thirdparty identifier if "medium" and "address" parameters are present medium = submission.get("medium") address = submission.get("address") if medium and address: identifier = { "type": "m.id.thirdparty", "medium": medium, "address": address, } # We've converted valid, legacy login submissions to an identifier. If the # submission still doesn't have an identifier, it's invalid if not identifier: raise SynapseError(400, "Invalid login submission", Codes.INVALID_PARAM) # Ensure the identifier has a type if "type" not in identifier: raise SynapseError( 400, "'identifier' dict has no key 'type'", errcode=Codes.MISSING_PARAM, ) return identifier def login_id_phone_to_thirdparty(identifier: JsonDict) -> Dict[str, str]: """ Convert a phone login identifier type to a generic threepid identifier. Args: identifier: Login identifier dict of type 'm.id.phone' Returns: An equivalent m.id.thirdparty identifier dict """ if "country" not in identifier or ( # The specification requires a "phone" field, while Synapse used to require a "number" # field. Accept both for backwards compatibility. "phone" not in identifier and "number" not in identifier ): raise SynapseError( 400, "Invalid phone-type identifier", errcode=Codes.INVALID_PARAM ) # Accept both "phone" and "number" as valid keys in m.id.phone phone_number = identifier.get("phone", identifier["number"]) # Convert user-provided phone number to a consistent representation msisdn = phone_number_to_msisdn(identifier["country"], phone_number) return { "type": "m.id.thirdparty", "medium": "msisdn", "address": msisdn, } @attr.s(slots=True, auto_attribs=True) class SsoLoginExtraAttributes: """Data we track about SAML2 sessions""" # time the session was created, in milliseconds creation_time: int extra_attributes: JsonDict class AuthHandler: SESSION_EXPIRE_MS = 48 * 60 * 60 * 1000 def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.auth = hs.get_auth() self.auth_blocking = hs.get_auth_blocking() self.clock = hs.get_clock() self.checkers: Dict[str, UserInteractiveAuthChecker] = {} for auth_checker_class in INTERACTIVE_AUTH_CHECKERS: inst = auth_checker_class(hs) if inst.is_enabled(): self.checkers[inst.AUTH_TYPE] = inst self.bcrypt_rounds = hs.config.registration.bcrypt_rounds self.password_auth_provider = hs.get_password_auth_provider() self.hs = hs # FIXME better possibility to access registrationHandler later? self.macaroon_gen = hs.get_macaroon_generator() self._password_enabled_for_login = hs.config.auth.password_enabled_for_login self._password_enabled_for_reauth = hs.config.auth.password_enabled_for_reauth self._password_localdb_enabled = hs.config.auth.password_localdb_enabled self._third_party_rules = hs.get_module_api_callbacks().third_party_event_rules self._account_validity_handler = hs.get_account_validity_handler() # Ratelimiter for failed auth during UIA. Uses same ratelimit config # as per `rc_login.failed_attempts`. self._failed_uia_attempts_ratelimiter = Ratelimiter( store=self.store, clock=self.clock, cfg=self.hs.config.ratelimiting.rc_login_failed_attempts, ) # The number of seconds to keep a UI auth session active. self._ui_auth_session_timeout = hs.config.auth.ui_auth_session_timeout # Ratelimiter for failed /login attempts self._failed_login_attempts_ratelimiter = Ratelimiter( store=self.store, clock=hs.get_clock(), cfg=self.hs.config.ratelimiting.rc_login_failed_attempts, ) self._clock = self.hs.get_clock() # Expire old UI auth sessions after a period of time. if hs.config.worker.run_background_tasks: self._clock.looping_call( run_as_background_process, 5 * 60 * 1000, "expire_old_sessions", self._expire_old_sessions, ) # Load the SSO HTML templates. # The following template is shown to the user during a client login via SSO, # after the SSO completes and before redirecting them back to their client. # It notifies the user they are about to give access to their matrix account # to the client. self._sso_redirect_confirm_template = ( hs.config.sso.sso_redirect_confirm_template ) # The following template is shown during user interactive authentication # in the fallback auth scenario. It notifies the user that they are # authenticating for an operation to occur on their account. self._sso_auth_confirm_template = hs.config.sso.sso_auth_confirm_template # The following template is shown during the SSO authentication process if # the account is deactivated. self._sso_account_deactivated_template = ( hs.config.sso.sso_account_deactivated_template ) self._server_name = hs.config.server.server_name # cast to tuple for use with str.startswith self._whitelisted_sso_clients = tuple(hs.config.sso.sso_client_whitelist) # A mapping of user ID to extra attributes to include in the login # response. self._extra_attributes: Dict[str, SsoLoginExtraAttributes] = {} self.msc3861_oauth_delegation_enabled = hs.config.experimental.msc3861.enabled async def validate_user_via_ui_auth( self, requester: Requester, request: SynapseRequest, request_body: Dict[str, Any], description: str, can_skip_ui_auth: bool = False, ) -> Tuple[dict, Optional[str]]: """ Checks that the user is who they claim to be, via a UI auth. This is used for things like device deletion and password reset where the user already has a valid access token, but we want to double-check that it isn't stolen by re-authenticating them. Args: requester: The user making the request, according to the access token. request: The request sent by the client. request_body: The body of the request sent by the client description: A human readable string to be displayed to the user that describes the operation happening on their account. can_skip_ui_auth: True if the UI auth session timeout applies this action. Should be set to False for any "dangerous" actions (e.g. deactivating an account). Returns: A tuple of (params, session_id). 'params' contains the parameters for this request (which may have been given only in a previous call). 'session_id' is the ID of this session, either passed in by the client or assigned by this call. This is None if UI auth was skipped (by re-using a previous validation). Raises: InteractiveAuthIncompleteError if the client has not yet completed any of the permitted login flows AuthError if the client has completed a login flow, and it gives a different user to `requester` LimitExceededError if the ratelimiter's failed request count for this user is too high to proceed """ if self.msc3861_oauth_delegation_enabled: raise SynapseError( HTTPStatus.INTERNAL_SERVER_ERROR, "UIA shouldn't be used with MSC3861" ) if not requester.access_token_id: raise ValueError("Cannot validate a user without an access token") if can_skip_ui_auth and self._ui_auth_session_timeout: last_validated = await self.store.get_access_token_last_validated( requester.access_token_id ) if self.clock.time_msec() - last_validated < self._ui_auth_session_timeout: # Return the input parameters, minus the auth key, which matches # the logic in check_ui_auth. request_body.pop("auth", None) return request_body, None requester_user_id = requester.user.to_string() # Check if we should be ratelimited due to too many previous failed attempts await self._failed_uia_attempts_ratelimiter.ratelimit(requester, update=False) # build a list of supported flows supported_ui_auth_types = await self._get_available_ui_auth_types( requester.user ) flows = [[login_type] for login_type in supported_ui_auth_types] def get_new_session_data() -> JsonDict: return {UIAuthSessionDataConstants.REQUEST_USER_ID: requester_user_id} try: result, params, session_id = await self.check_ui_auth( flows, request, request_body, description, get_new_session_data, ) except LoginError: # Update the ratelimiter to say we failed (`can_do_action` doesn't raise). await self._failed_uia_attempts_ratelimiter.can_do_action( requester, ) raise # find the completed login type for login_type in supported_ui_auth_types: if login_type not in result: continue validated_user_id = result[login_type] break else: # this can't happen raise Exception("check_auth returned True but no successful login type") # check that the UI auth matched the access token if validated_user_id != requester_user_id: raise AuthError(403, "Invalid auth") # Note that the access token has been validated. await self.store.update_access_token_last_validated(requester.access_token_id) return params, session_id async def _get_available_ui_auth_types(self, user: UserID) -> Iterable[str]: """Get a list of the user-interactive authentication types this user can use.""" ui_auth_types = set() # if the HS supports password auth, and the user has a non-null password, we # support password auth if self._password_localdb_enabled and self._password_enabled_for_reauth: lookupres = await self._find_user_id_and_pwd_hash(user.to_string()) if lookupres: _, password_hash = lookupres if password_hash: ui_auth_types.add(LoginType.PASSWORD) # also allow auth from password providers for t in self.password_auth_provider.get_supported_login_types().keys(): if t == LoginType.PASSWORD and not self._password_enabled_for_reauth: continue ui_auth_types.add(t) # if sso is enabled, allow the user to log in via SSO iff they have a mapping # from sso to mxid. if await self.hs.get_sso_handler().get_identity_providers_for_user( user.to_string() ): ui_auth_types.add(LoginType.SSO) return ui_auth_types def get_enabled_auth_types(self) -> Iterable[str]: """Return the enabled user-interactive authentication types Returns the UI-Auth types which are supported by the homeserver's current config. """ return self.checkers.keys() async def check_ui_auth( self, flows: List[List[str]], request: SynapseRequest, clientdict: Dict[str, Any], description: str, get_new_session_data: Optional[Callable[[], JsonDict]] = None, ) -> Tuple[dict, dict, str]: """ Takes a dictionary sent by the client in the login / registration protocol and handles the User-Interactive Auth flow. If no auth flows have been completed successfully, raises an InteractiveAuthIncompleteError. To handle this, you can use synapse.rest.client._base.interactive_auth_handler as a decorator. Args: flows: A list of login flows. Each flow is an ordered list of strings representing auth-types. At least one full flow must be completed in order for auth to be successful. request: The request sent by the client. clientdict: The dictionary from the client root level, not the 'auth' key: this method prompts for auth if none is sent. description: A human readable string to be displayed to the user that describes the operation happening on their account. get_new_session_data: an optional callback which will be called when starting a new session. it should return data to be stored as part of the session. The keys of the returned data should be entries in UIAuthSessionDataConstants. Returns: A tuple of (creds, params, session_id). 'creds' contains the authenticated credentials of each stage. 'params' contains the parameters for this request (which may have been given only in a previous call). 'session_id' is the ID of this session, either passed in by the client or assigned by this call Raises: InteractiveAuthIncompleteError if the client has not yet completed all the stages in any of the permitted flows. """ sid: Optional[str] = None authdict = clientdict.pop("auth", {}) if "session" in authdict: sid = authdict["session"] # Convert the URI and method to strings. uri = request.uri.decode("utf-8") method = request.method.decode("utf-8") # If there's no session ID, create a new session. if not sid: new_session_data = get_new_session_data() if get_new_session_data else {} session = await self.store.create_ui_auth_session( clientdict, uri, method, description ) for k, v in new_session_data.items(): await self.set_session_data(session.session_id, k, v) else: try: session = await self.store.get_ui_auth_session(sid) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (sid,)) # If the client provides parameters, update what is persisted, # otherwise use whatever was last provided. # # This was designed to allow the client to omit the parameters # and just supply the session in subsequent calls so it split # auth between devices by just sharing the session, (eg. so you # could continue registration from your phone having clicked the # email auth link on there). It's probably too open to abuse # because it lets unauthenticated clients store arbitrary objects # on a homeserver. # # Revisit: Assuming the REST APIs do sensible validation, the data # isn't arbitrary. # # Note that the registration endpoint explicitly removes the # "initial_device_display_name" parameter if it is provided # without a "password" parameter. See the changes to # synapse.rest.client.register.RegisterRestServlet.on_POST # in commit 544722bad23fc31056b9240189c3cbbbf0ffd3f9. if not clientdict: clientdict = session.clientdict # Ensure that the queried operation does not vary between stages of # the UI authentication session. This is done by generating a stable # comparator and storing it during the initial query. Subsequent # queries ensure that this comparator has not changed. # # The comparator is based on the requested URI and HTTP method. The # client dict (minus the auth dict) should also be checked, but some # clients are not spec compliant, just warn for now if the client # dict changes. if (session.uri, session.method) != (uri, method): raise SynapseError( 403, "Requested operation has changed during the UI authentication session.", ) if session.clientdict != clientdict: logger.warning( "Requested operation has changed during the UI " "authentication session. A future version of Synapse " "will remove this capability." ) # For backwards compatibility, changes to the client dict are # persisted as clients modify them throughout their user interactive # authentication flow. await self.store.set_ui_auth_clientdict(sid, clientdict) user_agent = get_request_user_agent(request) clientip = request.getClientAddress().host await self.store.add_user_agent_ip_to_ui_auth_session( session.session_id, user_agent, clientip ) if not authdict: raise InteractiveAuthIncompleteError( session.session_id, self._auth_dict_for_flows(flows, session.session_id) ) # check auth type currently being presented errordict: Dict[str, Any] = {} if "type" in authdict: login_type: str = authdict["type"] try: result = await self._check_auth_dict(authdict, clientip) if result: await self.store.mark_ui_auth_stage_complete( session.session_id, login_type, result ) except LoginError as e: # this step failed. Merge the error dict into the response # so that the client can have another go. errordict = e.error_dict(self.hs.config) creds = await self.store.get_completed_ui_auth_stages(session.session_id) for f in flows: # If all the required credentials have been supplied, the user has # successfully completed the UI auth process! if len(set(f) - set(creds)) == 0: # it's very useful to know what args are stored, but this can # include the password in the case of registering, so only log # the keys (confusingly, clientdict may contain a password # param, creds is just what the user authed as for UI auth # and is not sensitive). logger.info( "Auth completed with creds: %r. Client dict has keys: %r", creds, list(clientdict), ) return creds, clientdict, session.session_id ret = self._auth_dict_for_flows(flows, session.session_id) ret["completed"] = list(creds) ret.update(errordict) raise InteractiveAuthIncompleteError(session.session_id, ret) async def add_oob_auth( self, stagetype: str, authdict: Dict[str, Any], clientip: str ) -> None: """ Adds the result of out-of-band authentication into an existing auth session. Currently used for adding the result of fallback auth. Raises: LoginError if the stagetype is unknown or the session is missing. LoginError is raised by check_auth if authentication fails. """ if stagetype not in self.checkers: raise LoginError( 400, f"Unknown UIA stage type: {stagetype}", Codes.INVALID_PARAM ) if "session" not in authdict: raise LoginError(400, "Missing session ID", Codes.MISSING_PARAM) # If authentication fails a LoginError is raised. Otherwise, store # the successful result. result = await self.checkers[stagetype].check_auth(authdict, clientip) await self.store.mark_ui_auth_stage_complete( authdict["session"], stagetype, result ) def get_session_id(self, clientdict: Dict[str, Any]) -> Optional[str]: """ Gets the session ID for a client given the client dictionary Args: clientdict: The dictionary sent by the client in the request Returns: The string session ID the client sent. If the client did not send a session ID, returns None. """ sid = None if clientdict and "auth" in clientdict: authdict = clientdict["auth"] if "session" in authdict: sid = authdict["session"] return sid async def set_session_data(self, session_id: str, key: str, value: Any) -> None: """ Store a key-value pair into the sessions data associated with this request. This data is stored server-side and cannot be modified by the client. Args: session_id: The ID of this session as returned from check_auth key: The key to store the data under. An entry from UIAuthSessionDataConstants. value: The data to store """ try: await self.store.set_ui_auth_session_data(session_id, key, value) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (session_id,)) async def get_session_data( self, session_id: str, key: str, default: Optional[Any] = None ) -> Any: """ Retrieve data stored with set_session_data Args: session_id: The ID of this session as returned from check_auth key: The key the data was stored under. An entry from UIAuthSessionDataConstants. default: Value to return if the key has not been set """ try: return await self.store.get_ui_auth_session_data(session_id, key, default) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (session_id,)) async def _expire_old_sessions(self) -> None: """ Invalidate any user interactive authentication sessions that have expired. """ now = self._clock.time_msec() expiration_time = now - self.SESSION_EXPIRE_MS await self.store.delete_old_ui_auth_sessions(expiration_time) async def _check_auth_dict( self, authdict: Dict[str, Any], clientip: str ) -> Union[Dict[str, Any], str]: """Attempt to validate the auth dict provided by a client Args: authdict: auth dict provided by the client clientip: IP address of the client Returns: Result of the stage verification. Raises: StoreError if there was a problem accessing the database SynapseError if there was a problem with the request LoginError if there was an authentication problem. """ login_type = authdict["type"] checker = self.checkers.get(login_type) if checker is not None: res = await checker.check_auth(authdict, clientip=clientip) return res # fall back to the v1 login flow canonical_id, _ = await self.validate_login(authdict, is_reauth=True) return canonical_id def _get_params_recaptcha(self) -> dict: return {"public_key": self.hs.config.captcha.recaptcha_public_key} def _get_params_terms(self) -> dict: return { "policies": { "privacy_policy": { "version": self.hs.config.consent.user_consent_version, "en": { "name": self.hs.config.consent.user_consent_policy_name, "url": "%s_matrix/consent?v=%s" % ( self.hs.config.server.public_baseurl, self.hs.config.consent.user_consent_version, ), }, } } } def _auth_dict_for_flows( self, flows: List[List[str]], session_id: str, ) -> Dict[str, Any]: public_flows = [] for f in flows: public_flows.append(f) get_params = { LoginType.RECAPTCHA: self._get_params_recaptcha, LoginType.TERMS: self._get_params_terms, } params: Dict[str, Any] = {} for f in public_flows: for stage in f: if stage in get_params and stage not in params: params[stage] = get_params[stage]() return { "session": session_id, "flows": [{"stages": f} for f in public_flows], "params": params, } async def refresh_token( self, refresh_token: str, access_token_valid_until_ms: Optional[int], refresh_token_valid_until_ms: Optional[int], ) -> Tuple[str, str, Optional[int]]: """ Consumes a refresh token and generate both a new access token and a new refresh token from it. The consumed refresh token is considered invalid after the first use of the new access token or the new refresh token. The lifetime of both the access token and refresh token will be capped so that they do not exceed the session's ultimate expiry time, if applicable. Args: refresh_token: The token to consume. access_token_valid_until_ms: The expiration timestamp of the new access token. None if the access token does not expire. refresh_token_valid_until_ms: The expiration timestamp of the new refresh token. None if the refresh token does not expire. Returns: A tuple containing: - the new access token - the new refresh token - the actual expiry time of the access token, which may be earlier than `access_token_valid_until_ms`. """ # Verify the token signature first before looking up the token if not self._verify_refresh_token(refresh_token): raise SynapseError( HTTPStatus.UNAUTHORIZED, "invalid refresh token", Codes.UNKNOWN_TOKEN ) existing_token = await self.store.lookup_refresh_token(refresh_token) if existing_token is None: raise SynapseError( HTTPStatus.UNAUTHORIZED, "refresh token does not exist", Codes.UNKNOWN_TOKEN, ) if ( existing_token.has_next_access_token_been_used or existing_token.has_next_refresh_token_been_refreshed ): raise SynapseError( HTTPStatus.FORBIDDEN, "refresh token isn't valid anymore", Codes.FORBIDDEN, ) now_ms = self._clock.time_msec() if existing_token.expiry_ts is not None and existing_token.expiry_ts < now_ms: raise SynapseError( HTTPStatus.FORBIDDEN, "The supplied refresh token has expired", Codes.FORBIDDEN, ) if existing_token.ultimate_session_expiry_ts is not None: # This session has a bounded lifetime, even across refreshes. if access_token_valid_until_ms is not None: access_token_valid_until_ms = min( access_token_valid_until_ms, existing_token.ultimate_session_expiry_ts, ) else: access_token_valid_until_ms = existing_token.ultimate_session_expiry_ts if refresh_token_valid_until_ms is not None: refresh_token_valid_until_ms = min( refresh_token_valid_until_ms, existing_token.ultimate_session_expiry_ts, ) else: refresh_token_valid_until_ms = existing_token.ultimate_session_expiry_ts if existing_token.ultimate_session_expiry_ts < now_ms: raise SynapseError( HTTPStatus.FORBIDDEN, "The session has expired and can no longer be refreshed", Codes.FORBIDDEN, ) ( new_refresh_token, new_refresh_token_id, ) = await self.create_refresh_token_for_user_id( user_id=existing_token.user_id, device_id=existing_token.device_id, expiry_ts=refresh_token_valid_until_ms, ultimate_session_expiry_ts=existing_token.ultimate_session_expiry_ts, ) access_token = await self.create_access_token_for_user_id( user_id=existing_token.user_id, device_id=existing_token.device_id, valid_until_ms=access_token_valid_until_ms, refresh_token_id=new_refresh_token_id, ) await self.store.replace_refresh_token( existing_token.token_id, new_refresh_token_id ) return access_token, new_refresh_token, access_token_valid_until_ms def _verify_refresh_token(self, token: str) -> bool: """ Verifies the shape of a refresh token. Args: token: The refresh token to verify Returns: Whether the token has the right shape """ parts = token.split("_", maxsplit=4) if len(parts) != 4: return False type, localpart, rand, crc = parts # Refresh tokens are prefixed by "syr_", let's check that if type != "syr": return False # Check the CRC base = f"{type}_{localpart}_{rand}" expected_crc = base62_encode(crc32(base.encode("ascii")), minwidth=6) if crc != expected_crc: return False return True async def create_login_token_for_user_id( self, user_id: str, duration_ms: int = (2 * 60 * 1000), auth_provider_id: Optional[str] = None, auth_provider_session_id: Optional[str] = None, ) -> str: login_token = self.generate_login_token() now = self._clock.time_msec() expiry_ts = now + duration_ms await self.store.add_login_token_to_user( user_id=user_id, token=login_token, expiry_ts=expiry_ts, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) return login_token async def create_refresh_token_for_user_id( self, user_id: str, device_id: str, expiry_ts: Optional[int], ultimate_session_expiry_ts: Optional[int], ) -> Tuple[str, int]: """ Creates a new refresh token for the user with the given user ID. Args: user_id: canonical user ID device_id: the device ID to associate with the token. expiry_ts (milliseconds since the epoch): Time after which the refresh token cannot be used. If None, the refresh token never expires until it has been used. ultimate_session_expiry_ts (milliseconds since the epoch): Time at which the session will end and can not be extended any further. If None, the session can be refreshed indefinitely. Returns: The newly created refresh token and its ID in the database """ refresh_token = self.generate_refresh_token(UserID.from_string(user_id)) refresh_token_id = await self.store.add_refresh_token_to_user( user_id=user_id, token=refresh_token, device_id=device_id, expiry_ts=expiry_ts, ultimate_session_expiry_ts=ultimate_session_expiry_ts, ) return refresh_token, refresh_token_id async def create_access_token_for_user_id( self, user_id: str, device_id: Optional[str], valid_until_ms: Optional[int], puppets_user_id: Optional[str] = None, is_appservice_ghost: bool = False, refresh_token_id: Optional[int] = None, ) -> str: """ Creates a new access token for the user with the given user ID. The user is assumed to have been authenticated by some other mechanism (e.g. CAS), and the user_id converted to the canonical case. The device will be recorded in the table if it is not there already. Args: user_id: canonical User ID device_id: the device ID to associate with the tokens. None to leave the tokens unassociated with a device (deprecated: we should always have a device ID) valid_until_ms: when the token is valid until. None for no expiry. is_appservice_ghost: Whether the user is an application ghost user refresh_token_id: the refresh token ID that will be associated with this access token. Returns: The access token for the user's session. Raises: StoreError if there was a problem storing the token. """ fmt_expiry = "" if valid_until_ms is not None: fmt_expiry = time.strftime( " until %Y-%m-%d %H:%M:%S", time.localtime(valid_until_ms / 1000.0) ) if puppets_user_id: logger.info( "Logging in user %s as %s%s", user_id, puppets_user_id, fmt_expiry ) target_user_id_obj = UserID.from_string(puppets_user_id) else: logger.info( "Logging in user %s on device %s%s", user_id, device_id, fmt_expiry ) target_user_id_obj = UserID.from_string(user_id) if ( not is_appservice_ghost or self.hs.config.appservice.track_appservice_user_ips ): await self.auth_blocking.check_auth_blocking(user_id) access_token = self.generate_access_token(target_user_id_obj) await self.store.add_access_token_to_user( user_id=user_id, token=access_token, device_id=device_id, valid_until_ms=valid_until_ms, puppets_user_id=puppets_user_id, refresh_token_id=refresh_token_id, ) # the device *should* have been registered before we got here; however, # it's possible we raced against a DELETE operation. The thing we # really don't want is active access_tokens without a record of the # device, so we double-check it here. if device_id is not None: if await self.store.get_device(user_id, device_id) is None: await self.store.delete_access_token(access_token) raise StoreError(400, "Login raced against device deletion") return access_token async def check_user_exists(self, user_id: str) -> Optional[str]: """ Checks to see if a user with the given id exists. Will check case insensitively, but return None if there are multiple inexact matches. Args: user_id: complete @user:id Returns: The canonical_user_id, or None if zero or multiple matches """ res = await self._find_user_id_and_pwd_hash(user_id) if res is not None: return res[0] return None async def is_user_approved(self, user_id: str) -> bool: """Checks if a user is approved and therefore can be allowed to log in. Args: user_id: the user to check the approval status of. Returns: A boolean that is True if the user is approved, False otherwise. """ return await self.store.is_user_approved(user_id) async def _find_user_id_and_pwd_hash( self, user_id: str ) -> Optional[Tuple[str, str]]: """Checks to see if a user with the given id exists. Will check case insensitively, but will return None if there are multiple inexact matches. Returns: A 2-tuple of `(canonical_user_id, password_hash)` or `None` if there is not exactly one match """ user_infos = await self.store.get_users_by_id_case_insensitive(user_id) result = None if not user_infos: logger.warning("Attempted to login as %s but they do not exist", user_id) elif len(user_infos) == 1: # a single match (possibly not exact) result = user_infos.popitem() elif user_id in user_infos: # multiple matches, but one is exact result = (user_id, user_infos[user_id]) else: # multiple matches, none of them exact logger.warning( "Attempted to login as %s but it matches more than one user " "inexactly: %r", user_id, user_infos.keys(), ) return result def can_change_password(self) -> bool: """Get whether users on this server are allowed to change or set a password. Both `config.auth.password_enabled` and `config.auth.password_localdb_enabled` must be true. Note that any account (even SSO accounts) are allowed to add passwords if the above is true. Returns: Whether users on this server are allowed to change or set a password """ return self._password_enabled_for_login and self._password_localdb_enabled def get_supported_login_types(self) -> Iterable[str]: """Get a the login types supported for the /login API By default this is just 'm.login.password' (unless password_enabled is False in the config file), but password auth providers can provide other login types. Returns: login types """ # Load any login types registered by modules # This is stored in the password_auth_provider so this doesn't trigger # any callbacks types = list(self.password_auth_provider.get_supported_login_types().keys()) # This list should include PASSWORD if (either _password_localdb_enabled is # true or if one of the modules registered it) AND _password_enabled is true # Also: # Some clients just pick the first type in the list. In this case, we want # them to use PASSWORD (rather than token or whatever), so we want to make sure # that comes first, where it's present. if LoginType.PASSWORD in types: types.remove(LoginType.PASSWORD) if self._password_enabled_for_login: types.insert(0, LoginType.PASSWORD) elif self._password_localdb_enabled and self._password_enabled_for_login: types.insert(0, LoginType.PASSWORD) return types async def validate_login( self, login_submission: Dict[str, Any], ratelimit: bool = False, is_reauth: bool = False, ) -> Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]: """Authenticates the user for the /login API Also used by the user-interactive auth flow to validate auth types which don't have an explicit UIA handler, including m.password.auth. Args: login_submission: the whole of the login submission (including 'type' and other relevant fields) ratelimit: whether to apply the failed_login_attempt ratelimiter is_reauth: whether this is part of a User-Interactive Authorisation flow to reauthenticate for a privileged action (rather than a new login) Returns: A tuple of the canonical user id, and optional callback to be called once the access token and device id are issued Raises: StoreError if there was a problem accessing the database SynapseError if there was a problem with the request LoginError if there was an authentication problem. """ login_type = login_submission.get("type") if not isinstance(login_type, str): raise SynapseError(400, "Bad parameter: type", Codes.INVALID_PARAM) # ideally, we wouldn't be checking the identifier unless we know we have a login # method which uses it (https://github.com/matrix-org/synapse/issues/8836) # # But the auth providers' check_auth interface requires a username, so in # practice we can only support login methods which we can map to a username # anyway. # special case to check for "password" for the check_password interface # for the auth providers password = login_submission.get("password") if login_type == LoginType.PASSWORD: if is_reauth: passwords_allowed_here = self._password_enabled_for_reauth else: passwords_allowed_here = self._password_enabled_for_login if not passwords_allowed_here: raise SynapseError(400, "Password login has been disabled.") if not isinstance(password, str): raise SynapseError(400, "Bad parameter: password", Codes.INVALID_PARAM) # map old-school login fields into new-school "identifier" fields. identifier_dict = convert_client_dict_legacy_fields_to_identifier( login_submission ) # convert phone type identifiers to generic threepids if identifier_dict["type"] == "m.id.phone": identifier_dict = login_id_phone_to_thirdparty(identifier_dict) # convert threepid identifiers to user IDs if identifier_dict["type"] == "m.id.thirdparty": address = identifier_dict.get("address") medium = identifier_dict.get("medium") if medium is None or address is None: raise SynapseError(400, "Invalid thirdparty identifier") # For emails, canonicalise the address. # We store all email addresses canonicalised in the DB. # (See add_threepid in synapse/handlers/auth.py) if medium == "email": try: address = canonicalise_email(address) except ValueError as e: raise SynapseError(400, str(e)) # We also apply account rate limiting using the 3PID as a key, as # otherwise using 3PID bypasses the ratelimiting based on user ID. if ratelimit: await self._failed_login_attempts_ratelimiter.ratelimit( None, (medium, address), update=False ) # Check for login providers that support 3pid login types if login_type == LoginType.PASSWORD: # we've already checked that there is a (valid) password field assert isinstance(password, str) ( canonical_user_id, callback_3pid, ) = await self.check_password_provider_3pid(medium, address, password) if canonical_user_id: # Authentication through password provider and 3pid succeeded return canonical_user_id, callback_3pid # No password providers were able to handle this 3pid # Check local store user_id = await self.hs.get_datastores().main.get_user_id_by_threepid( medium, address ) if not user_id: logger.warning( "unknown 3pid identifier medium %s, address %r", medium, address ) # We mark that we've failed to log in here, as # `check_password_provider_3pid` might have returned `None` due # to an incorrect password, rather than the account not # existing. # # If it returned None but the 3PID was bound then we won't hit # this code path, which is fine as then the per-user ratelimit # will kick in below. if ratelimit: await self._failed_login_attempts_ratelimiter.can_do_action( None, (medium, address) ) raise LoginError( 403, msg=INVALID_USERNAME_OR_PASSWORD, errcode=Codes.FORBIDDEN ) identifier_dict = {"type": "m.id.user", "user": user_id} # by this point, the identifier should be an m.id.user: if it's anything # else, we haven't understood it. if identifier_dict["type"] != "m.id.user": raise SynapseError(400, "Unknown login identifier type") username = identifier_dict.get("user") if not username: raise SynapseError(400, "User identifier is missing 'user' key") if username.startswith("@"): qualified_user_id = username else: qualified_user_id = UserID(username, self.hs.hostname).to_string() # Check if we've hit the failed ratelimit (but don't update it) if ratelimit: await self._failed_login_attempts_ratelimiter.ratelimit( None, qualified_user_id.lower(), update=False ) try: return await self._validate_userid_login(username, login_submission) except LoginError: # The user has failed to log in, so we need to update the rate # limiter. Using `can_do_action` avoids us raising a ratelimit # exception and masking the LoginError. The actual ratelimiting # should have happened above. if ratelimit: await self._failed_login_attempts_ratelimiter.can_do_action( None, qualified_user_id.lower() ) raise async def _validate_userid_login( self, username: str, login_submission: Dict[str, Any], ) -> Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]: """Helper for validate_login Handles login, once we've mapped 3pids onto userids Args: username: the username, from the identifier dict login_submission: the whole of the login submission (including 'type' and other relevant fields) Returns: A tuple of the canonical user id, and optional callback to be called once the access token and device id are issued Raises: StoreError if there was a problem accessing the database SynapseError if there was a problem with the request LoginError if there was an authentication problem. """ if username.startswith("@"): qualified_user_id = username else: qualified_user_id = UserID(username, self.hs.hostname).to_string() login_type = login_submission.get("type") # we already checked that we have a valid login type assert isinstance(login_type, str) known_login_type = False # Check if login_type matches a type registered by one of the modules # We don't need to remove LoginType.PASSWORD from the list if password login is # disabled, since if that were the case then by this point we know that the # login_type is not LoginType.PASSWORD supported_login_types = self.password_auth_provider.get_supported_login_types() # check if the login type being used is supported by a module if login_type in supported_login_types: # Make a note that this login type is supported by the server known_login_type = True # Get all the fields expected for this login types login_fields = supported_login_types[login_type] # go through the login submission and keep track of which required fields are # provided/not provided missing_fields = [] login_dict = {} for f in login_fields: if f not in login_submission: missing_fields.append(f) else: login_dict[f] = login_submission[f] # raise an error if any of the expected fields for that login type weren't provided if missing_fields: raise SynapseError( 400, "Missing parameters for login type %s: %s" % (login_type, missing_fields), ) # call all of the check_auth hooks for that login_type # it will return a result once the first success is found (or None otherwise) result = await self.password_auth_provider.check_auth( username, login_type, login_dict ) if result: return result # if no module managed to authenticate the user, then fallback to built in password based auth if login_type == LoginType.PASSWORD and self._password_localdb_enabled: known_login_type = True # we've already checked that there is a (valid) password field password = login_submission["password"] assert isinstance(password, str) canonical_user_id = await self._check_local_password( qualified_user_id, password ) if canonical_user_id: return canonical_user_id, None if not known_login_type: raise SynapseError(400, "Unknown login type %s" % login_type) # We raise a 403 here, but note that if we're doing user-interactive # login, it turns all LoginErrors into a 401 anyway. raise LoginError(403, msg=INVALID_USERNAME_OR_PASSWORD, errcode=Codes.FORBIDDEN) async def check_password_provider_3pid( self, medium: str, address: str, password: str ) -> Tuple[Optional[str], Optional[Callable[["LoginResponse"], Awaitable[None]]]]: """Check if a password provider is able to validate a thirdparty login Args: medium: The medium of the 3pid (ex. email). address: The address of the 3pid (ex. jdoe@example.com). password: The password of the user. Returns: A tuple of `(user_id, callback)`. If authentication is successful, `user_id`is the authenticated, canonical user ID. `callback` is then either a function to be later run after the server has completed login/registration, or `None`. If authentication was unsuccessful, `user_id` and `callback` are both `None`. """ # call all of the check_3pid_auth callbacks # Result will be from the first callback that returns something other than None # If all the callbacks return None, then result is also set to None result = await self.password_auth_provider.check_3pid_auth( medium, address, password ) if result: return result # if result is None then return (None, None) return None, None async def _check_local_password(self, user_id: str, password: str) -> Optional[str]: """Authenticate a user against the local password database. user_id is checked case insensitively, but will return None if there are multiple inexact matches. Args: user_id: complete @user:id password: the provided password Returns: The canonical_user_id, or None if unknown user/bad password """ lookupres = await self._find_user_id_and_pwd_hash(user_id) if not lookupres: return None (user_id, password_hash) = lookupres result = await self.validate_hash(password, password_hash) if not result: logger.warning("Failed password login for user %s", user_id) return None return user_id def generate_login_token(self) -> str: """Generates an opaque string, for use as an short-term login token""" # we use the following format for access tokens: # syl__ random_string = stringutils.random_string(20) base = f"syl_{random_string}" crc = base62_encode(crc32(base.encode("ascii")), minwidth=6) return f"{base}_{crc}" def generate_access_token(self, for_user: UserID) -> str: """Generates an opaque string, for use as an access token""" # we use the following format for access tokens: # syt___ b64local = unpaddedbase64.encode_base64(for_user.localpart.encode("utf-8")) random_string = stringutils.random_string(20) base = f"syt_{b64local}_{random_string}" crc = base62_encode(crc32(base.encode("ascii")), minwidth=6) return f"{base}_{crc}" def generate_refresh_token(self, for_user: UserID) -> str: """Generates an opaque string, for use as a refresh token""" # we use the following format for refresh tokens: # syr___ b64local = unpaddedbase64.encode_base64(for_user.localpart.encode("utf-8")) random_string = stringutils.random_string(20) base = f"syr_{b64local}_{random_string}" crc = base62_encode(crc32(base.encode("ascii")), minwidth=6) return f"{base}_{crc}" async def consume_login_token(self, login_token: str) -> LoginTokenLookupResult: try: return await self.store.consume_login_token(login_token) except LoginTokenExpired: invalid_login_token_counter.labels("expired").inc() except LoginTokenReused: invalid_login_token_counter.labels("reused").inc() except NotFoundError: invalid_login_token_counter.labels("not found").inc() raise AuthError(403, "Invalid login token", errcode=Codes.FORBIDDEN) async def delete_access_token(self, access_token: str) -> None: """Invalidate a single access token Args: access_token: access token to be deleted """ token = await self.store.get_user_by_access_token(access_token) if not token: # At this point, the token should already have been fetched once by # the caller, so this should not happen, unless of a race condition # between two delete requests raise SynapseError(HTTPStatus.UNAUTHORIZED, "Unrecognised access token") await self.store.delete_access_token(access_token) # see if any modules want to know about this await self.password_auth_provider.on_logged_out( user_id=token.user_id, device_id=token.device_id, access_token=access_token, ) # delete pushers associated with this access token # XXX(quenting): This is only needed until the 'set_device_id_for_pushers' # background update completes. if token.token_id is not None: await self.hs.get_pusherpool().remove_pushers_by_access_tokens( token.user_id, (token.token_id,) ) async def delete_access_tokens_for_user( self, user_id: str, except_token_id: Optional[int] = None, device_id: Optional[str] = None, ) -> None: """Invalidate access tokens belonging to a user Args: user_id: ID of user the tokens belong to except_token_id: access_token ID which should *not* be deleted device_id: ID of device the tokens are associated with. If None, tokens associated with any device (or no device) will be deleted """ tokens_and_devices = await self.store.user_delete_access_tokens( user_id, except_token_id=except_token_id, device_id=device_id ) # see if any modules want to know about this for token, _, device_id in tokens_and_devices: await self.password_auth_provider.on_logged_out( user_id=user_id, device_id=device_id, access_token=token ) # delete pushers associated with the access tokens # XXX(quenting): This is only needed until the 'set_device_id_for_pushers' # background update completes. await self.hs.get_pusherpool().remove_pushers_by_access_tokens( user_id, (token_id for _, token_id, _ in tokens_and_devices) ) async def add_threepid( self, user_id: str, medium: str, address: str, validated_at: int ) -> None: """ Adds an association between a user's Matrix ID and a third-party ID (email, phone number). Args: user_id: The ID of the user to associate. medium: The medium of the third-party ID (email, msisdn). address: The address of the third-party ID (i.e. an email address). validated_at: The timestamp in ms of when the validation that the user owns this third-party ID occurred. """ # check if medium has a valid value if medium not in ["email", "msisdn"]: raise SynapseError( code=400, msg=("'%s' is not a valid value for 'medium'" % (medium,)), errcode=Codes.INVALID_PARAM, ) # 'Canonicalise' email addresses down to lower case. # We've now moving towards the homeserver being the entity that # is responsible for validating threepids used for resetting passwords # on accounts, so in future Synapse will gain knowledge of specific # types (mediums) of threepid. For now, we still use the existing # infrastructure, but this is the start of synapse gaining knowledge # of specific types of threepid (and fixes the fact that checking # for the presence of an email address during password reset was # case sensitive). if medium == "email": address = canonicalise_email(address) await self.store.user_add_threepid( user_id, medium, address, validated_at, self.hs.get_clock().time_msec() ) # Inform Synapse modules that a 3PID association has been created. await self._third_party_rules.on_add_user_third_party_identifier( user_id, medium, address ) # Deprecated method for informing Synapse modules that a 3PID association # has successfully been created. await self._third_party_rules.on_threepid_bind(user_id, medium, address) async def delete_local_threepid( self, user_id: str, medium: str, address: str ) -> None: """Deletes an association between a third-party ID and a user ID from the local database. This method does not unbind the association from any identity servers. If `medium` is 'email' and a pusher is associated with this third-party ID, the pusher will also be deleted. Args: user_id: ID of user to remove the 3pid from. medium: The medium of the 3pid being removed: "email" or "msisdn". address: The 3pid address to remove. """ # 'Canonicalise' email addresses as per above if medium == "email": address = canonicalise_email(address) await self.store.user_delete_threepid(user_id, medium, address) # Inform Synapse modules that a 3PID association has been deleted. await self._third_party_rules.on_remove_user_third_party_identifier( user_id, medium, address ) if medium == "email": await self.store.delete_pusher_by_app_id_pushkey_user_id( app_id="m.email", pushkey=address, user_id=user_id ) async def hash(self, password: str) -> str: """Computes a secure hash of password. Args: password: Password to hash. Returns: Hashed password. """ def _do_hash() -> str: # Normalise the Unicode in the password pw = unicodedata.normalize("NFKC", password) return bcrypt.hashpw( pw.encode("utf8") + self.hs.config.auth.password_pepper.encode("utf8"), bcrypt.gensalt(self.bcrypt_rounds), ).decode("ascii") return await defer_to_thread(self.hs.get_reactor(), _do_hash) async def validate_hash( self, password: str, stored_hash: Union[bytes, str] ) -> bool: """Validates that self.hash(password) == stored_hash. Args: password: Password to hash. stored_hash: Expected hash value. Returns: Whether self.hash(password) == stored_hash. """ def _do_validate_hash(checked_hash: bytes) -> bool: # Normalise the Unicode in the password pw = unicodedata.normalize("NFKC", password) return bcrypt.checkpw( pw.encode("utf8") + self.hs.config.auth.password_pepper.encode("utf8"), checked_hash, ) if stored_hash: if not isinstance(stored_hash, bytes): stored_hash = stored_hash.encode("ascii") return await defer_to_thread( self.hs.get_reactor(), _do_validate_hash, stored_hash ) else: return False async def start_sso_ui_auth(self, request: SynapseRequest, session_id: str) -> str: """ Get the HTML for the SSO redirect confirmation page. Args: request: The incoming HTTP request session_id: The user interactive authentication session ID. Returns: The HTML to render. """ try: session = await self.store.get_ui_auth_session(session_id) except StoreError: raise SynapseError(400, "Unknown session ID: %s" % (session_id,)) user_id_to_verify: str = await self.get_session_data( session_id, UIAuthSessionDataConstants.REQUEST_USER_ID ) idps = await self.hs.get_sso_handler().get_identity_providers_for_user( user_id_to_verify ) if not idps: # we checked that the user had some remote identities before offering an SSO # flow, so either it's been deleted or the client has requested SSO despite # it not being offered. raise SynapseError(400, "User has no SSO identities") # for now, just pick one idp_id, sso_auth_provider = next(iter(idps.items())) if len(idps) > 0: logger.warning( "User %r has previously logged in with multiple SSO IdPs; arbitrarily " "picking %r", user_id_to_verify, idp_id, ) redirect_url = await sso_auth_provider.handle_redirect_request( request, None, session_id ) return self._sso_auth_confirm_template.render( description=session.description, redirect_url=redirect_url, idp=sso_auth_provider, ) async def complete_sso_login( self, registered_user_id: str, auth_provider_id: str, request: Request, client_redirect_url: str, extra_attributes: Optional[JsonDict] = None, new_user: bool = False, auth_provider_session_id: Optional[str] = None, ) -> None: """Having figured out a mxid for this user, complete the HTTP request Args: registered_user_id: The registered user ID to complete SSO login for. auth_provider_id: The id of the SSO Identity provider that was used for login. This will be stored in the login token for future tracking in prometheus metrics. request: The request to complete. client_redirect_url: The URL to which to redirect the user at the end of the process. extra_attributes: Extra attributes which will be passed to the client during successful login. Must be JSON serializable. new_user: True if we should use wording appropriate to a user who has just registered. auth_provider_session_id: The session ID from the SSO IdP received during login. """ # If the account has been deactivated, do not proceed with the login. # # This gets checked again when the token is submitted but this lets us # provide an HTML error page to the user (instead of issuing a token and # having it error later). deactivated = await self.store.get_user_deactivated_status(registered_user_id) if deactivated: respond_with_html(request, 403, self._sso_account_deactivated_template) return user_profile_data = await self.store.get_profileinfo( UserID.from_string(registered_user_id) ) # Store any extra attributes which will be passed in the login response. # Note that this is per-user so it may overwrite a previous value, this # is considered OK since the newest SSO attributes should be most valid. if extra_attributes: self._extra_attributes[registered_user_id] = SsoLoginExtraAttributes( self._clock.time_msec(), extra_attributes, ) # Create a login token login_token = await self.create_login_token_for_user_id( registered_user_id, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) # Append the login token to the original redirect URL (i.e. with its query # parameters kept intact) to build the URL to which the template needs to # redirect the users once they have clicked on the confirmation link. redirect_url = self.add_query_param_to_url( client_redirect_url, "loginToken", login_token ) # Run post-login module callback handlers await self._account_validity_handler.on_user_login( user_id=registered_user_id, auth_provider_type=LoginType.SSO, auth_provider_id=auth_provider_id, ) # if the client is whitelisted, we can redirect straight to it if client_redirect_url.startswith(self._whitelisted_sso_clients): request.redirect(redirect_url) finish_request(request) return # Otherwise, serve the redirect confirmation page. # Remove the query parameters from the redirect URL to get a shorter version of # it. This is only to display a human-readable URL in the template, but not the # URL we redirect users to. url_parts = urllib.parse.urlsplit(client_redirect_url) if url_parts.scheme == "https": # for an https uri, just show the netloc (ie, the hostname. Specifically, # the bit between "//" and "/"; this includes any potential # "username:password@" prefix.) display_url = url_parts.netloc else: # for other uris, strip the query-params (including the login token) and # fragment. display_url = urllib.parse.urlunsplit( (url_parts.scheme, url_parts.netloc, url_parts.path, "", "") ) html = self._sso_redirect_confirm_template.render( display_url=display_url, redirect_url=redirect_url, server_name=self._server_name, new_user=new_user, user_id=registered_user_id, user_profile=user_profile_data, ) respond_with_html(request, 200, html) async def _sso_login_callback(self, login_result: "LoginResponse") -> None: """ A login callback which might add additional attributes to the login response. Args: login_result: The data to be sent to the client. Includes the user ID and access token. """ # Expire attributes before processing. Note that there shouldn't be any # valid logins that still have extra attributes. self._expire_sso_extra_attributes() extra_attributes = self._extra_attributes.get(login_result["user_id"]) if extra_attributes: login_result_dict = cast(Dict[str, Any], login_result) login_result_dict.update(extra_attributes.extra_attributes) def _expire_sso_extra_attributes(self) -> None: """ Iterate through the mapping of user IDs to extra attributes and remove any that are no longer valid. """ # TODO This should match the amount of time the macaroon is valid for. LOGIN_TOKEN_EXPIRATION_TIME = 2 * 60 * 1000 expire_before = self._clock.time_msec() - LOGIN_TOKEN_EXPIRATION_TIME to_expire = set() for user_id, data in self._extra_attributes.items(): if data.creation_time < expire_before: to_expire.add(user_id) for user_id in to_expire: logger.debug("Expiring extra attributes for user %s", user_id) del self._extra_attributes[user_id] @staticmethod def add_query_param_to_url(url: str, param_name: str, param: Any) -> str: url_parts = list(urllib.parse.urlparse(url)) query = urllib.parse.parse_qsl(url_parts[4], keep_blank_values=True) query.append((param_name, param)) url_parts[4] = urllib.parse.urlencode(query) return urllib.parse.urlunparse(url_parts) def load_legacy_password_auth_providers(hs: "HomeServer") -> None: module_api = hs.get_module_api() for module, config in hs.config.authproviders.password_providers: load_single_legacy_password_auth_provider( module=module, config=config, api=module_api ) def load_single_legacy_password_auth_provider( module: Type, config: JsonDict, api: "ModuleApi", ) -> None: try: provider = module(config=config, account_handler=api) except Exception as e: logger.error("Error while initializing %r: %s", module, e) raise # All methods that the module provides should be async, but this wasn't enforced # in the old module system, so we wrap them if needed def async_wrapper(f: Optional[Callable]) -> Optional[Callable[..., Awaitable]]: # f might be None if the callback isn't implemented by the module. In this # case we don't want to register a callback at all so we return None. if f is None: return None # We need to wrap check_password because its old form would return a boolean # but we now want it to behave just like check_auth() and return the matrix id of # the user if authentication succeeded or None otherwise if f.__name__ == "check_password": async def wrapped_check_password( username: str, login_type: str, login_dict: JsonDict ) -> Optional[Tuple[str, Optional[Callable]]]: # We've already made sure f is not None above, but mypy doesn't do well # across function boundaries so we need to tell it f is definitely not # None. assert f is not None matrix_user_id = api.get_qualified_user_id(username) password = login_dict["password"] is_valid = await f(matrix_user_id, password) if is_valid: return matrix_user_id, None return None return wrapped_check_password # We need to wrap check_auth as in the old form it could return # just a str, but now it must return Optional[Tuple[str, Optional[Callable]] if f.__name__ == "check_auth": async def wrapped_check_auth( username: str, login_type: str, login_dict: JsonDict ) -> Optional[Tuple[str, Optional[Callable]]]: # We've already made sure f is not None above, but mypy doesn't do well # across function boundaries so we need to tell it f is definitely not # None. assert f is not None result = await f(username, login_type, login_dict) if isinstance(result, str): return result, None return result return wrapped_check_auth # We need to wrap check_3pid_auth as in the old form it could return # just a str, but now it must return Optional[Tuple[str, Optional[Callable]] if f.__name__ == "check_3pid_auth": async def wrapped_check_3pid_auth( medium: str, address: str, password: str ) -> Optional[Tuple[str, Optional[Callable]]]: # We've already made sure f is not None above, but mypy doesn't do well # across function boundaries so we need to tell it f is definitely not # None. assert f is not None result = await f(medium, address, password) if isinstance(result, str): return result, None return result return wrapped_check_3pid_auth def run(*args: Tuple, **kwargs: Dict) -> Awaitable: # mypy doesn't do well across function boundaries so we need to tell it # f is definitely not None. assert f is not None return maybe_awaitable(f(*args, **kwargs)) return run # If the module has these methods implemented, then we pull them out # and register them as hooks. check_3pid_auth_hook: Optional[CHECK_3PID_AUTH_CALLBACK] = async_wrapper( getattr(provider, "check_3pid_auth", None) ) on_logged_out_hook: Optional[ON_LOGGED_OUT_CALLBACK] = async_wrapper( getattr(provider, "on_logged_out", None) ) supported_login_types = {} # call get_supported_login_types and add that to the dict g = getattr(provider, "get_supported_login_types", None) if g is not None: # Note the old module style also called get_supported_login_types at loading time # and it is synchronous supported_login_types.update(g()) auth_checkers = {} # Legacy modules have a check_auth method which expects to be called with one of # the keys returned by get_supported_login_types. New style modules register a # dictionary of login_type->check_auth_method mappings check_auth = async_wrapper(getattr(provider, "check_auth", None)) if check_auth is not None: for login_type, fields in supported_login_types.items(): # need tuple(fields) since fields can be any Iterable type (so may not be hashable) auth_checkers[(login_type, tuple(fields))] = check_auth # if it has a "check_password" method then it should handle all auth checks # with login type of LoginType.PASSWORD check_password = async_wrapper(getattr(provider, "check_password", None)) if check_password is not None: # need to use a tuple here for ("password",) not a list since lists aren't hashable auth_checkers[(LoginType.PASSWORD, ("password",))] = check_password api.register_password_auth_provider_callbacks( check_3pid_auth=check_3pid_auth_hook, on_logged_out=on_logged_out_hook, auth_checkers=auth_checkers, ) CHECK_3PID_AUTH_CALLBACK = Callable[ [str, str, str], Awaitable[ Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]] ], ] ON_LOGGED_OUT_CALLBACK = Callable[[str, Optional[str], str], Awaitable] CHECK_AUTH_CALLBACK = Callable[ [str, str, JsonDict], Awaitable[ Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]] ], ] GET_USERNAME_FOR_REGISTRATION_CALLBACK = Callable[ [JsonDict, JsonDict], Awaitable[Optional[str]], ] GET_DISPLAYNAME_FOR_REGISTRATION_CALLBACK = Callable[ [JsonDict, JsonDict], Awaitable[Optional[str]], ] IS_3PID_ALLOWED_CALLBACK = Callable[[str, str, bool], Awaitable[bool]] class PasswordAuthProvider: """ A class that the AuthHandler calls when authenticating users It allows modules to provide alternative methods for authentication """ def __init__(self) -> None: # lists of callbacks self.check_3pid_auth_callbacks: List[CHECK_3PID_AUTH_CALLBACK] = [] self.on_logged_out_callbacks: List[ON_LOGGED_OUT_CALLBACK] = [] self.get_username_for_registration_callbacks: List[ GET_USERNAME_FOR_REGISTRATION_CALLBACK ] = [] self.get_displayname_for_registration_callbacks: List[ GET_DISPLAYNAME_FOR_REGISTRATION_CALLBACK ] = [] self.is_3pid_allowed_callbacks: List[IS_3PID_ALLOWED_CALLBACK] = [] # Mapping from login type to login parameters self._supported_login_types: Dict[str, Tuple[str, ...]] = {} # Mapping from login type to auth checker callbacks self.auth_checker_callbacks: Dict[str, List[CHECK_AUTH_CALLBACK]] = {} def register_password_auth_provider_callbacks( self, check_3pid_auth: Optional[CHECK_3PID_AUTH_CALLBACK] = None, on_logged_out: Optional[ON_LOGGED_OUT_CALLBACK] = None, is_3pid_allowed: Optional[IS_3PID_ALLOWED_CALLBACK] = None, auth_checkers: Optional[ Dict[Tuple[str, Tuple[str, ...]], CHECK_AUTH_CALLBACK] ] = None, get_username_for_registration: Optional[ GET_USERNAME_FOR_REGISTRATION_CALLBACK ] = None, get_displayname_for_registration: Optional[ GET_DISPLAYNAME_FOR_REGISTRATION_CALLBACK ] = None, ) -> None: # Register check_3pid_auth callback if check_3pid_auth is not None: self.check_3pid_auth_callbacks.append(check_3pid_auth) # register on_logged_out callback if on_logged_out is not None: self.on_logged_out_callbacks.append(on_logged_out) if auth_checkers is not None: # register a new supported login_type # Iterate through all of the types being registered for (login_type, fields), callback in auth_checkers.items(): # Note: fields may be empty here. This would allow a modules auth checker to # be called with just 'login_type' and no password or other secrets # Need to check that all the field names are strings or may get nasty errors later for f in fields: if not isinstance(f, str): raise RuntimeError( "A module tried to register support for login type: %s with parameters %s" " but all parameter names must be strings" % (login_type, fields) ) # 2 modules supporting the same login type must expect the same fields # e.g. 1 can't expect "pass" if the other expects "password" # so throw an exception if that happens if login_type not in self._supported_login_types.get(login_type, []): self._supported_login_types[login_type] = fields else: fields_currently_supported = self._supported_login_types.get( login_type ) if fields_currently_supported != fields: raise RuntimeError( "A module tried to register support for login type: %s with parameters %s" " but another module had already registered support for that type with parameters %s" % (login_type, fields, fields_currently_supported) ) # Add the new method to the list of auth_checker_callbacks for this login type self.auth_checker_callbacks.setdefault(login_type, []).append(callback) if get_username_for_registration is not None: self.get_username_for_registration_callbacks.append( get_username_for_registration, ) if get_displayname_for_registration is not None: self.get_displayname_for_registration_callbacks.append( get_displayname_for_registration, ) if is_3pid_allowed is not None: self.is_3pid_allowed_callbacks.append(is_3pid_allowed) def get_supported_login_types(self) -> Mapping[str, Iterable[str]]: """Get the login types supported by this password provider Returns a map from a login type identifier (such as m.login.password) to an iterable giving the fields which must be provided by the user in the submission to the /login API. """ return self._supported_login_types async def check_auth( self, username: str, login_type: str, login_dict: JsonDict ) -> Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]]: """Check if the user has presented valid login credentials Args: username: user id presented by the client. Either an MXID or an unqualified username. login_type: the login type being attempted - one of the types returned by get_supported_login_types() login_dict: the dictionary of login secrets passed by the client. Returns: (user_id, callback) where `user_id` is the fully-qualified mxid of the user, and `callback` is an optional callback which will be called with the result from the /login call (including access_token, device_id, etc.) """ # Go through all callbacks for the login type until one returns with a value # other than None (i.e. until a callback returns a success) for callback in self.auth_checker_callbacks[login_type]: try: result = await delay_cancellation( callback(username, login_type, login_dict) ) except CancelledError: raise except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue if result is not None: # Check that the callback returned a Tuple[str, Optional[Callable]] # "type: ignore[unreachable]" is used after some isinstance checks because mypy thinks # result is always the right type, but as it is 3rd party code it might not be if not isinstance(result, tuple) or len(result) != 2: logger.warning( "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # pull out the two parts of the tuple so we can do type checking str_result, callback_result = result # the 1st item in the tuple should be a str if not isinstance(str_result, str): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # the second should be Optional[Callable] if callback_result is not None: if not callable(callback_result): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # The result is a (str, Optional[callback]) tuple so return the successful result return result # If this point has been reached then none of the callbacks successfully authenticated # the user so return None return None async def check_3pid_auth( self, medium: str, address: str, password: str ) -> Optional[Tuple[str, Optional[Callable[["LoginResponse"], Awaitable[None]]]]]: # This function is able to return a deferred that either # resolves None, meaning authentication failure, or upon # success, to a str (which is the user_id) or a tuple of # (user_id, callback_func), where callback_func should be run # after we've finished everything else for callback in self.check_3pid_auth_callbacks: try: result = await delay_cancellation(callback(medium, address, password)) except CancelledError: raise except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue if result is not None: # Check that the callback returned a Tuple[str, Optional[Callable]] # "type: ignore[unreachable]" is used after some isinstance checks because mypy thinks # result is always the right type, but as it is 3rd party code it might not be if not isinstance(result, tuple) or len(result) != 2: logger.warning( "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # pull out the two parts of the tuple so we can do type checking str_result, callback_result = result # the 1st item in the tuple should be a str if not isinstance(str_result, str): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # the second should be Optional[Callable] if callback_result is not None: if not callable(callback_result): logger.warning( # type: ignore[unreachable] "Wrong type returned by module API callback %s: %s, expected" " Optional[Tuple[str, Optional[Callable]]]", callback, result, ) continue # The result is a (str, Optional[callback]) tuple so return the successful result return result # If this point has been reached then none of the callbacks successfully authenticated # the user so return None return None async def on_logged_out( self, user_id: str, device_id: Optional[str], access_token: str ) -> None: # call all of the on_logged_out callbacks for callback in self.on_logged_out_callbacks: try: await callback(user_id, device_id, access_token) except Exception as e: logger.warning("Failed to run module API callback %s: %s", callback, e) continue async def get_username_for_registration( self, uia_results: JsonDict, params: JsonDict, ) -> Optional[str]: """Defines the username to use when registering the user, using the credentials and parameters provided during the UIA flow. Stops at the first callback that returns a string. Args: uia_results: The credentials provided during the UIA flow. params: The parameters provided by the registration request. Returns: The localpart to use when registering this user, or None if no module returned a localpart. """ for callback in self.get_username_for_registration_callbacks: try: res = await delay_cancellation(callback(uia_results, params)) if isinstance(res, str): return res elif res is not None: # mypy complains that this line is unreachable because it assumes the # data returned by the module fits the expected type. We just want # to make sure this is the case. logger.warning( # type: ignore[unreachable] "Ignoring non-string value returned by" " get_username_for_registration callback %s: %s", callback, res, ) except CancelledError: raise except Exception as e: logger.error( "Module raised an exception in get_username_for_registration: %s", e, ) raise SynapseError(code=500, msg="Internal Server Error") return None async def get_displayname_for_registration( self, uia_results: JsonDict, params: JsonDict, ) -> Optional[str]: """Defines the display name to use when registering the user, using the credentials and parameters provided during the UIA flow. Stops at the first callback that returns a tuple containing at least one string. Args: uia_results: The credentials provided during the UIA flow. params: The parameters provided by the registration request. Returns: A tuple which first element is the display name, and the second is an MXC URL to the user's avatar. """ for callback in self.get_displayname_for_registration_callbacks: try: res = await delay_cancellation(callback(uia_results, params)) if isinstance(res, str): return res elif res is not None: # mypy complains that this line is unreachable because it assumes the # data returned by the module fits the expected type. We just want # to make sure this is the case. logger.warning( # type: ignore[unreachable] "Ignoring non-string value returned by" " get_displayname_for_registration callback %s: %s", callback, res, ) except CancelledError: raise except Exception as e: logger.error( "Module raised an exception in get_displayname_for_registration: %s", e, ) raise SynapseError(code=500, msg="Internal Server Error") return None async def is_3pid_allowed( self, medium: str, address: str, registration: bool, ) -> bool: """Check if the user can be allowed to bind a 3PID on this homeserver. Args: medium: The medium of the 3PID. address: The address of the 3PID. registration: Whether the 3PID is being bound when registering a new user. Returns: Whether the 3PID is allowed to be bound on this homeserver """ for callback in self.is_3pid_allowed_callbacks: try: res = await delay_cancellation(callback(medium, address, registration)) if res is False: return res elif not isinstance(res, bool): # mypy complains that this line is unreachable because it assumes the # data returned by the module fits the expected type. We just want # to make sure this is the case. logger.warning( # type: ignore[unreachable] "Ignoring non-string value returned by" " is_3pid_allowed callback %s: %s", callback, res, ) except CancelledError: raise except Exception as e: logger.error("Module raised an exception in is_3pid_allowed: %s", e) raise SynapseError(code=500, msg="Internal Server Error") return True synapse-1.100.0/synapse/handlers/cas.py000066400000000000000000000347731455622526000177620ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import urllib.parse from typing import TYPE_CHECKING, Dict, List, Optional from xml.etree import ElementTree as ET import attr from twisted.web.client import PartialDownloadError from synapse.api.errors import HttpResponseException from synapse.handlers.sso import MappingException, UserAttributes from synapse.http.site import SynapseRequest from synapse.types import UserID, map_username_to_mxid_localpart if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class CasError(Exception): """Used to catch errors when validating the CAS ticket.""" def __init__(self, error: str, error_description: Optional[str] = None): self.error = error self.error_description = error_description def __str__(self) -> str: if self.error_description: return f"{self.error}: {self.error_description}" return self.error @attr.s(slots=True, frozen=True, auto_attribs=True) class CasResponse: username: str attributes: Dict[str, List[Optional[str]]] class CasHandler: """ Utility class for to handle the response from a CAS SSO service. Args: hs """ def __init__(self, hs: "HomeServer"): self.hs = hs self._hostname = hs.hostname self._store = hs.get_datastores().main self._auth_handler = hs.get_auth_handler() self._registration_handler = hs.get_registration_handler() self._cas_server_url = hs.config.cas.cas_server_url self._cas_service_url = hs.config.cas.cas_service_url self._cas_protocol_version = hs.config.cas.cas_protocol_version self._cas_displayname_attribute = hs.config.cas.cas_displayname_attribute self._cas_required_attributes = hs.config.cas.cas_required_attributes self._cas_enable_registration = hs.config.cas.cas_enable_registration self._http_client = hs.get_proxied_http_client() # identifier for the external_ids table self.idp_id = "cas" # user-facing name of this auth provider self.idp_name = hs.config.cas.idp_name # MXC URI for icon for this auth provider self.idp_icon = hs.config.cas.idp_icon # optional brand identifier for this auth provider self.idp_brand = hs.config.cas.idp_brand self._sso_handler = hs.get_sso_handler() self._sso_handler.register_identity_provider(self) def _build_service_param(self, args: Dict[str, str]) -> str: """ Generates a value to use as the "service" parameter when redirecting or querying the CAS service. Args: args: Additional arguments to include in the final redirect URL. Returns: The URL to use as a "service" parameter. """ return "%s?%s" % ( self._cas_service_url, urllib.parse.urlencode(args), ) async def _validate_ticket( self, ticket: str, service_args: Dict[str, str] ) -> CasResponse: """ Validate a CAS ticket with the server, and return the parsed the response. Args: ticket: The CAS ticket from the client. service_args: Additional arguments to include in the service URL. Should be the same as those passed to `handle_redirect_request`. Raises: CasError: If there's an error parsing the CAS response. Returns: The parsed CAS response. """ if self._cas_protocol_version == 3: uri = self._cas_server_url + "/p3/proxyValidate" else: uri = self._cas_server_url + "/proxyValidate" args = { "ticket": ticket, "service": self._build_service_param(service_args), } try: body = await self._http_client.get_raw(uri, args) except PartialDownloadError as pde: # Twisted raises this error if the connection is closed, # even if that's being used old-http style to signal end-of-data # Assertion is for mypy's benefit. Error.response is Optional[bytes], # but a PartialDownloadError should always have a non-None response. assert pde.response is not None body = pde.response except HttpResponseException as e: description = ( 'Authorization server responded with a "{status}" error ' "while exchanging the authorization code." ).format(status=e.code) raise CasError("server_error", description) from e return self._parse_cas_response(body) def _parse_cas_response(self, cas_response_body: bytes) -> CasResponse: """ Retrieve the user and other parameters from the CAS response. Args: cas_response_body: The response from the CAS query. Raises: CasError: If there's an error parsing the CAS response. Returns: The parsed CAS response. """ # Ensure the response is valid. root = ET.fromstring(cas_response_body) if not root.tag.endswith("serviceResponse"): raise CasError( "missing_service_response", "root of CAS response is not serviceResponse", ) success = root[0].tag.endswith("authenticationSuccess") if not success: raise CasError("unsucessful_response", "Unsuccessful CAS response") # Iterate through the nodes and pull out the user and any extra attributes. user = None attributes: Dict[str, List[Optional[str]]] = {} for child in root[0]: if child.tag.endswith("user"): user = child.text if child.tag.endswith("attributes"): for attribute in child: # ElementTree library expands the namespace in # attribute tags to the full URL of the namespace. # We don't care about namespace here and it will always # be encased in curly braces, so we remove them. tag = attribute.tag if "}" in tag: tag = tag.split("}")[1] attributes.setdefault(tag, []).append(attribute.text) # Ensure a user was found. if user is None: raise CasError("no_user", "CAS response does not contain user") return CasResponse(user, attributes) async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Generates a URL for the CAS server where the client should be redirected. Args: request: the incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login (or None for UI Auth). ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: URL to redirect to """ if ui_auth_session_id: service_args = {"session": ui_auth_session_id} else: assert client_redirect_url service_args = {"redirectUrl": client_redirect_url.decode("utf8")} args = urllib.parse.urlencode( {"service": self._build_service_param(service_args)} ) return "%s/login?%s" % (self._cas_server_url, args) async def handle_ticket( self, request: SynapseRequest, ticket: str, client_redirect_url: Optional[str], session: Optional[str], ) -> None: """ Called once the user has successfully authenticated with the SSO. Validates a CAS ticket sent by the client and completes the auth process. If the user interactive authentication session is provided, marks the UI Auth session as complete, then returns an HTML page notifying the user they are done. Otherwise, this registers the user if necessary, and then returns a redirect (with a login token) to the client. Args: request: the incoming request from the browser. We'll respond to it with a redirect or an HTML page. ticket: The CAS ticket provided by the client. client_redirect_url: the redirectUrl parameter from the `/cas/ticket` HTTP request, if given. This should be the same as the redirectUrl from the original `/login/sso/redirect` request. session: The session parameter from the `/cas/ticket` HTTP request, if given. This should be the UI Auth session id. """ args = {} if client_redirect_url: args["redirectUrl"] = client_redirect_url if session: args["session"] = session try: cas_response = await self._validate_ticket(ticket, args) except CasError as e: logger.exception("Could not validate ticket") self._sso_handler.render_error(request, e.error, e.error_description, 401) return await self._handle_cas_response( request, cas_response, client_redirect_url, session ) async def _handle_cas_response( self, request: SynapseRequest, cas_response: CasResponse, client_redirect_url: Optional[str], session: Optional[str], ) -> None: """Handle a CAS response to a ticket request. Assumes that the response has been validated. Maps the user onto an MXID, registering them if necessary, and returns a response to the browser. Args: request: the incoming request from the browser. We'll respond to it with an HTML page or a redirect cas_response: The parsed CAS response. client_redirect_url: the redirectUrl parameter from the `/cas/ticket` HTTP request, if given. This should be the same as the redirectUrl from the original `/login/sso/redirect` request. session: The session parameter from the `/cas/ticket` HTTP request, if given. This should be the UI Auth session id. """ # first check if we're doing a UIA if session: return await self._sso_handler.complete_sso_ui_auth_request( self.idp_id, cas_response.username, session, request, ) # otherwise, we're handling a login request. # Ensure that the attributes of the logged in user meet the required # attributes. if not self._sso_handler.check_required_attributes( request, cas_response.attributes, self._cas_required_attributes ): return # Call the mapper to register/login the user # If this not a UI auth request than there must be a redirect URL. assert client_redirect_url is not None try: await self._complete_cas_login(cas_response, request, client_redirect_url) except MappingException as e: logger.exception("Could not map user") self._sso_handler.render_error(request, "mapping_error", str(e)) async def _complete_cas_login( self, cas_response: CasResponse, request: SynapseRequest, client_redirect_url: str, ) -> None: """ Given a CAS response, complete the login flow Retrieves the remote user ID, registers the user if necessary, and serves a redirect back to the client with a login-token. Args: cas_response: The parsed CAS response. request: The request to respond to client_redirect_url: The redirect URL passed in by the client. Raises: MappingException if there was a problem mapping the response to a user. RedirectException: some mapping providers may raise this if they need to redirect to an interstitial page. """ # Note that CAS does not support a mapping provider, so the logic is hard-coded. localpart = map_username_to_mxid_localpart(cas_response.username) async def cas_response_to_user_attributes(failures: int) -> UserAttributes: """ Map from CAS attributes to user attributes. """ # Due to the grandfathering logic matching any previously registered # mxids it isn't expected for there to be any failures. if failures: raise RuntimeError("CAS is not expected to de-duplicate Matrix IDs") # Arbitrarily use the first attribute found. display_name = cas_response.attributes.get( self._cas_displayname_attribute, [None] )[0] return UserAttributes(localpart=localpart, display_name=display_name) async def grandfather_existing_users() -> Optional[str]: # Since CAS did not always use the user_external_ids table, always # to attempt to map to existing users. user_id = UserID(localpart, self._hostname).to_string() logger.debug( "Looking for existing account based on mapped %s", user_id, ) users = await self._store.get_users_by_id_case_insensitive(user_id) if users: registered_user_id = list(users.keys())[0] logger.info("Grandfathering mapping to %s", registered_user_id) return registered_user_id return None await self._sso_handler.complete_sso_login_request( self.idp_id, cas_response.username, request, client_redirect_url, cas_response_to_user_attributes, grandfather_existing_users, registration_enabled=self._cas_enable_registration, ) synapse-1.100.0/synapse/handlers/deactivate_account.py000066400000000000000000000302001455622526000230160ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Optional from synapse.api.errors import SynapseError from synapse.handlers.device import DeviceHandler from synapse.metrics.background_process_metrics import run_as_background_process from synapse.types import Codes, Requester, UserID, create_requester if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DeactivateAccountHandler: """Handler which deals with deactivating user accounts.""" def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.hs = hs self._auth_handler = hs.get_auth_handler() self._device_handler = hs.get_device_handler() self._room_member_handler = hs.get_room_member_handler() self._identity_handler = hs.get_identity_handler() self._profile_handler = hs.get_profile_handler() self.user_directory_handler = hs.get_user_directory_handler() self._server_name = hs.hostname self._third_party_rules = hs.get_module_api_callbacks().third_party_event_rules # Flag that indicates whether the process to part users from rooms is running self._user_parter_running = False self._third_party_rules = hs.get_module_api_callbacks().third_party_event_rules # Start the user parter loop so it can resume parting users from rooms where # it left off (if it has work left to do). if hs.config.worker.run_background_tasks: hs.get_reactor().callWhenRunning(self._start_user_parting) self._account_validity_enabled = ( hs.config.account_validity.account_validity_enabled ) async def deactivate_account( self, user_id: str, erase_data: bool, requester: Requester, id_server: Optional[str] = None, by_admin: bool = False, ) -> bool: """Deactivate a user's account Args: user_id: ID of user to be deactivated erase_data: whether to GDPR-erase the user's data requester: The user attempting to make this change. id_server: Use the given identity server when unbinding any threepids. If None then will attempt to unbind using the identity server specified when binding (if known). by_admin: Whether this change was made by an administrator. Returns: True if identity server supports removing threepids, otherwise False. """ # This can only be called on the main process. assert isinstance(self._device_handler, DeviceHandler) # Check if this user can be deactivated if not await self._third_party_rules.check_can_deactivate_user( user_id, by_admin ): raise SynapseError( 403, "Deactivation of this user is forbidden", Codes.FORBIDDEN ) # FIXME: Theoretically there is a race here wherein user resets # password using threepid. # delete threepids first. We remove these from the IS so if this fails, # leave the user still active so they can try again. # Ideally we would prevent password resets and then do this in the # background thread. # This will be set to false if the identity server doesn't support # unbinding identity_server_supports_unbinding = True # Attempt to unbind any known bound threepids to this account from identity # server(s). bound_threepids = await self.store.user_get_bound_threepids(user_id) for medium, address in bound_threepids: try: result = await self._identity_handler.try_unbind_threepid( user_id, medium, address, id_server ) except Exception: # Do we want this to be a fatal error or should we carry on? logger.exception("Failed to remove threepid from ID server") raise SynapseError(400, "Failed to remove threepid from ID server") identity_server_supports_unbinding &= result # Remove any local threepid associations for this account. local_threepids = await self.store.user_get_threepids(user_id) for local_threepid in local_threepids: await self._auth_handler.delete_local_threepid( user_id, local_threepid.medium, local_threepid.address ) # delete any devices belonging to the user, which will also # delete corresponding access tokens. await self._device_handler.delete_all_devices_for_user(user_id) # then delete any remaining access tokens which weren't associated with # a device. await self._auth_handler.delete_access_tokens_for_user(user_id) await self.store.user_set_password_hash(user_id, None) # Most of the pushers will have been deleted when we logged out the # associated devices above, but we still need to delete pushers not # associated with devices, e.g. email pushers. await self.store.delete_all_pushers_for_user(user_id) # Add the user to a table of users pending deactivation (ie. # removal from all the rooms they're a member of) await self.store.add_user_pending_deactivation(user_id) # delete from user directory await self.user_directory_handler.handle_local_user_deactivated(user_id) # Mark the user as erased, if they asked for that if erase_data: user = UserID.from_string(user_id) # Remove avatar URL from this user await self._profile_handler.set_avatar_url( user, requester, "", by_admin, deactivation=True ) # Remove displayname from this user await self._profile_handler.set_displayname( user, requester, "", by_admin, deactivation=True ) logger.info("Marking %s as erased", user_id) await self.store.mark_user_erased(user_id) # Now start the process that goes through that list and # parts users from rooms (if it isn't already running) self._start_user_parting() # Reject all pending invites for the user, so that the user doesn't show up in the # "invited" section of rooms' members list. await self._reject_pending_invites_for_user(user_id) # Remove all information on the user from the account_validity table. if self._account_validity_enabled: await self.store.delete_account_validity_for_user(user_id) # Mark the user as deactivated. await self.store.set_user_deactivated_status(user_id, True) # Remove account data (including ignored users and push rules). await self.store.purge_account_data_for_user(user_id) # Delete any server-side backup keys await self.store.bulk_delete_backup_keys_and_versions_for_user(user_id) # Let modules know the user has been deactivated. await self._third_party_rules.on_user_deactivation_status_changed( user_id, True, by_admin, ) return identity_server_supports_unbinding async def _reject_pending_invites_for_user(self, user_id: str) -> None: """Reject pending invites addressed to a given user ID. Args: user_id: The user ID to reject pending invites for. """ user = UserID.from_string(user_id) pending_invites = await self.store.get_invited_rooms_for_local_user(user_id) for room in pending_invites: try: await self._room_member_handler.update_membership( create_requester(user, authenticated_entity=self._server_name), user, room.room_id, "leave", ratelimit=False, require_consent=False, ) logger.info( "Rejected invite for deactivated user %r in room %r", user_id, room.room_id, ) except Exception: logger.exception( "Failed to reject invite for user %r in room %r:" " ignoring and continuing", user_id, room.room_id, ) def _start_user_parting(self) -> None: """ Start the process that goes through the table of users pending deactivation, if it isn't already running. """ if not self._user_parter_running: run_as_background_process("user_parter_loop", self._user_parter_loop) async def _user_parter_loop(self) -> None: """Loop that parts deactivated users from rooms""" self._user_parter_running = True logger.info("Starting user parter") try: while True: user_id = await self.store.get_user_pending_deactivation() if user_id is None: break logger.info("User parter parting %r", user_id) await self._part_user(user_id) await self.store.del_user_pending_deactivation(user_id) logger.info("User parter finished parting %r", user_id) logger.info("User parter finished: stopping") finally: self._user_parter_running = False async def _part_user(self, user_id: str) -> None: """Causes the given user_id to leave all the rooms they're joined to""" user = UserID.from_string(user_id) rooms_for_user = await self.store.get_rooms_for_user(user_id) for room_id in rooms_for_user: logger.info("User parter parting %r from %r", user_id, room_id) try: await self._room_member_handler.update_membership( create_requester(user, authenticated_entity=self._server_name), user, room_id, "leave", ratelimit=False, require_consent=False, ) except Exception: logger.exception( "Failed to part user %r from room %r: ignoring and continuing", user_id, room_id, ) async def activate_account(self, user_id: str) -> None: """ Activate an account that was previously deactivated. This marks the user as active and not erased in the database, but does not attempt to rejoin rooms, re-add threepids, etc. If enabled, the user will be re-added to the user directory. The user will also need a password hash set to actually login. Args: user_id: ID of user to be re-activated """ user = UserID.from_string(user_id) # Ensure the user is not marked as erased. await self.store.mark_user_not_erased(user_id) # Mark the user as active. await self.store.set_user_deactivated_status(user_id, False) await self._third_party_rules.on_user_deactivation_status_changed( user_id, False, True ) # Add the user to the directory, if necessary. Note that # this must be done after the user is re-activated, because # deactivated users are excluded from the user directory. profile = await self.store.get_profileinfo(user) await self.user_directory_handler.handle_local_profile_change(user_id, profile) synapse-1.100.0/synapse/handlers/device.py000066400000000000000000001676721455622526000204600ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019,2020 The Matrix.org Foundation C.I.C. # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Mapping, Optional, Set, Tuple from synapse.api import errors from synapse.api.constants import EduTypes, EventTypes from synapse.api.errors import ( Codes, FederationDeniedError, HttpResponseException, InvalidAPICallError, RequestSendFailed, SynapseError, ) from synapse.logging.opentracing import log_kv, set_tag, trace from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.storage.databases.main.client_ips import DeviceLastConnectionInfo from synapse.types import ( JsonDict, JsonMapping, ScheduledTask, StrCollection, StreamKeyType, StreamToken, TaskStatus, UserID, get_domain_from_id, get_verify_key_from_cross_signing_key, ) from synapse.util import stringutils from synapse.util.async_helpers import Linearizer from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.cancellation import cancellable from synapse.util.metrics import measure_func from synapse.util.retryutils import ( NotRetryingDestination, filter_destinations_by_retry_limiter, ) if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) DELETE_DEVICE_MSGS_TASK_NAME = "delete_device_messages" MAX_DEVICE_DISPLAY_NAME_LEN = 100 DELETE_STALE_DEVICES_INTERVAL_MS = 24 * 60 * 60 * 1000 class DeviceWorkerHandler: device_list_updater: "DeviceListWorkerUpdater" def __init__(self, hs: "HomeServer"): self.clock = hs.get_clock() self.hs = hs self.store = hs.get_datastores().main self.notifier = hs.get_notifier() self.state = hs.get_state_handler() self._appservice_handler = hs.get_application_service_handler() self._state_storage = hs.get_storage_controllers().state self._auth_handler = hs.get_auth_handler() self._event_sources = hs.get_event_sources() self.server_name = hs.hostname self._msc3852_enabled = hs.config.experimental.msc3852_enabled self._query_appservices_for_keys = ( hs.config.experimental.msc3984_appservice_key_query ) self._task_scheduler = hs.get_task_scheduler() self.device_list_updater = DeviceListWorkerUpdater(hs) self._task_scheduler.register_action( self._delete_device_messages, DELETE_DEVICE_MSGS_TASK_NAME ) @trace async def get_devices_by_user(self, user_id: str) -> List[JsonDict]: """ Retrieve the given user's devices Args: user_id: The user ID to query for devices. Returns: info on each device """ set_tag("user_id", user_id) device_map = await self.store.get_devices_by_user(user_id) ips = await self.store.get_last_client_ip_by_device(user_id, device_id=None) devices = list(device_map.values()) for device in devices: _update_device_from_client_ips(device, ips) log_kv(device_map) return devices async def get_dehydrated_device( self, user_id: str ) -> Optional[Tuple[str, JsonDict]]: """Retrieve the information for a dehydrated device. Args: user_id: the user whose dehydrated device we are looking for Returns: a tuple whose first item is the device ID, and the second item is the dehydrated device information """ return await self.store.get_dehydrated_device(user_id) @trace async def get_device(self, user_id: str, device_id: str) -> JsonDict: """Retrieve the given device Args: user_id: The user to get the device from device_id: The device to fetch. Returns: info on the device Raises: errors.NotFoundError: if the device was not found """ device = await self.store.get_device(user_id, device_id) if device is None: raise errors.NotFoundError() ips = await self.store.get_last_client_ip_by_device(user_id, device_id) _update_device_from_client_ips(device, ips) set_tag("device", str(device)) set_tag("ips", str(ips)) return device @cancellable async def get_device_changes_in_shared_rooms( self, user_id: str, room_ids: StrCollection, from_token: StreamToken ) -> Set[str]: """Get the set of users whose devices have changed who share a room with the given user. """ changed_users = await self.store.get_device_list_changes_in_rooms( room_ids, from_token.device_list_key ) if changed_users is not None: # We also check if the given user has changed their device. If # they're in no rooms then the above query won't include them. changed = await self.store.get_users_whose_devices_changed( from_token.device_list_key, [user_id] ) changed_users.update(changed) return changed_users # If the DB returned None then the `from_token` is too old, so we fall # back on looking for device updates for all users. users_who_share_room = await self.store.get_users_who_share_room_with_user( user_id ) tracked_users = set(users_who_share_room) # Always tell the user about their own devices tracked_users.add(user_id) changed = await self.store.get_users_whose_devices_changed( from_token.device_list_key, tracked_users ) return changed @trace @measure_func("device.get_user_ids_changed") @cancellable async def get_user_ids_changed( self, user_id: str, from_token: StreamToken ) -> JsonDict: """Get list of users that have had the devices updated, or have newly joined a room, that `user_id` may be interested in. """ set_tag("user_id", user_id) set_tag("from_token", str(from_token)) now_room_key = self.store.get_room_max_token() room_ids = await self.store.get_rooms_for_user(user_id) changed = await self.get_device_changes_in_shared_rooms( user_id, room_ids, from_token ) # Then work out if any users have since joined rooms_changed = self.store.get_rooms_that_changed(room_ids, from_token.room_key) member_events = await self.store.get_membership_changes_for_user( user_id, from_token.room_key, now_room_key ) rooms_changed.update(event.room_id for event in member_events) stream_ordering = from_token.room_key.stream possibly_changed = set(changed) possibly_left = set() for room_id in rooms_changed: # Check if the forward extremities have changed. If not then we know # the current state won't have changed, and so we can skip this room. try: if not await self.store.have_room_forward_extremities_changed_since( room_id, stream_ordering ): continue except errors.StoreError: pass current_state_ids = await self._state_storage.get_current_state_ids( room_id, await_full_state=False ) # The user may have left the room # TODO: Check if they actually did or if we were just invited. if room_id not in room_ids: for etype, state_key in current_state_ids.keys(): if etype != EventTypes.Member: continue possibly_left.add(state_key) continue # Fetch the current state at the time. try: event_ids = await self.store.get_forward_extremities_for_room_at_stream_ordering( room_id, stream_ordering=stream_ordering ) except errors.StoreError: # we have purged the stream_ordering index since the stream # ordering: treat it the same as a new room event_ids = [] # special-case for an empty prev state: include all members # in the changed list if not event_ids: log_kv( {"event": "encountered empty previous state", "room_id": room_id} ) for etype, state_key in current_state_ids.keys(): if etype != EventTypes.Member: continue possibly_changed.add(state_key) continue current_member_id = current_state_ids.get((EventTypes.Member, user_id)) if not current_member_id: continue # mapping from event_id -> state_dict prev_state_ids = await self._state_storage.get_state_ids_for_events( event_ids, await_full_state=False, ) # Check if we've joined the room? If so we just blindly add all the users to # the "possibly changed" users. for state_dict in prev_state_ids.values(): member_event = state_dict.get((EventTypes.Member, user_id), None) if not member_event or member_event != current_member_id: for etype, state_key in current_state_ids.keys(): if etype != EventTypes.Member: continue possibly_changed.add(state_key) break # If there has been any change in membership, include them in the # possibly changed list. We'll check if they are joined below, # and we're not toooo worried about spuriously adding users. for key, event_id in current_state_ids.items(): etype, state_key = key if etype != EventTypes.Member: continue # check if this member has changed since any of the extremities # at the stream_ordering, and add them to the list if so. for state_dict in prev_state_ids.values(): prev_event_id = state_dict.get(key, None) if not prev_event_id or prev_event_id != event_id: if state_key != user_id: possibly_changed.add(state_key) break if possibly_changed or possibly_left: possibly_joined = possibly_changed possibly_left = possibly_changed | possibly_left # Double check if we still share rooms with the given user. users_rooms = await self.store.get_rooms_for_users(possibly_left) for changed_user_id, entries in users_rooms.items(): if any(rid in room_ids for rid in entries): possibly_left.discard(changed_user_id) else: possibly_joined.discard(changed_user_id) else: possibly_joined = set() possibly_left = set() result = {"changed": list(possibly_joined), "left": list(possibly_left)} log_kv(result) return result async def on_federation_query_user_devices(self, user_id: str) -> JsonDict: if not self.hs.is_mine(UserID.from_string(user_id)): raise SynapseError(400, "User is not hosted on this homeserver") stream_id, devices = await self.store.get_e2e_device_keys_for_federation_query( user_id ) master_key = await self.store.get_e2e_cross_signing_key(user_id, "master") self_signing_key = await self.store.get_e2e_cross_signing_key( user_id, "self_signing" ) # Check if the application services have any results. if self._query_appservices_for_keys: # Query the appservice for all devices for this user. query: Dict[str, Optional[List[str]]] = {user_id: None} # Query the appservices for any keys. appservice_results = await self._appservice_handler.query_keys(query) # Merge results, overriding anything from the database. appservice_devices = appservice_results.get("device_keys", {}).get( user_id, {} ) # Filter the database results to only those devices that the appservice has # *not* responded with. devices = [d for d in devices if d["device_id"] not in appservice_devices] # Append the appservice response by wrapping each result in another dictionary. devices.extend( {"device_id": device_id, "keys": device} for device_id, device in appservice_devices.items() ) # TODO Handle cross-signing keys. return { "user_id": user_id, "stream_id": stream_id, "devices": devices, "master_key": master_key, "self_signing_key": self_signing_key, } async def handle_room_un_partial_stated(self, room_id: str) -> None: """Handles sending appropriate device list updates in a room that has gone from partial to full state. """ # TODO(faster_joins): worker mode support # https://github.com/matrix-org/synapse/issues/12994 logger.error( "Trying handling device list state for partial join: not supported on workers." ) DEVICE_MSGS_DELETE_BATCH_LIMIT = 1000 DEVICE_MSGS_DELETE_SLEEP_MS = 100 async def _delete_device_messages( self, task: ScheduledTask, ) -> Tuple[TaskStatus, Optional[JsonMapping], Optional[str]]: """Scheduler task to delete device messages in batch of `DEVICE_MSGS_DELETE_BATCH_LIMIT`.""" assert task.params is not None user_id = task.params["user_id"] device_id = task.params["device_id"] up_to_stream_id = task.params["up_to_stream_id"] # Delete the messages in batches to avoid too much DB load. from_stream_id = None while True: from_stream_id, _ = await self.store.delete_messages_for_device_between( user_id=user_id, device_id=device_id, from_stream_id=from_stream_id, to_stream_id=up_to_stream_id, limit=DeviceHandler.DEVICE_MSGS_DELETE_BATCH_LIMIT, ) if from_stream_id is None: return TaskStatus.COMPLETE, None, None await self.clock.sleep(DeviceHandler.DEVICE_MSGS_DELETE_SLEEP_MS / 1000.0) class DeviceHandler(DeviceWorkerHandler): device_list_updater: "DeviceListUpdater" def __init__(self, hs: "HomeServer"): super().__init__(hs) self.federation_sender = hs.get_federation_sender() self._account_data_handler = hs.get_account_data_handler() self._storage_controllers = hs.get_storage_controllers() self.db_pool = hs.get_datastores().main.db_pool self.device_list_updater = DeviceListUpdater(hs, self) federation_registry = hs.get_federation_registry() federation_registry.register_edu_handler( EduTypes.DEVICE_LIST_UPDATE, self.device_list_updater.incoming_device_list_update, ) # Whether `_handle_new_device_update_async` is currently processing. self._handle_new_device_update_is_processing = False # If a new device update may have happened while the loop was # processing. self._handle_new_device_update_new_data = False # On start up check if there are any updates pending. hs.get_reactor().callWhenRunning(self._handle_new_device_update_async) self._delete_stale_devices_after = hs.config.server.delete_stale_devices_after # Ideally we would run this on a worker and condition this on the # "run_background_tasks_on" setting, but this would mean making the notification # of device list changes over federation work on workers, which is nontrivial. if self._delete_stale_devices_after is not None: self.clock.looping_call( run_as_background_process, DELETE_STALE_DEVICES_INTERVAL_MS, "delete_stale_devices", self._delete_stale_devices, ) def _check_device_name_length(self, name: Optional[str]) -> None: """ Checks whether a device name is longer than the maximum allowed length. Args: name: The name of the device. Raises: SynapseError: if the device name is too long. """ if name and len(name) > MAX_DEVICE_DISPLAY_NAME_LEN: raise SynapseError( 400, "Device display name is too long (max %i)" % (MAX_DEVICE_DISPLAY_NAME_LEN,), errcode=Codes.TOO_LARGE, ) async def check_device_registered( self, user_id: str, device_id: Optional[str], initial_device_display_name: Optional[str] = None, auth_provider_id: Optional[str] = None, auth_provider_session_id: Optional[str] = None, ) -> str: """ If the given device has not been registered, register it with the supplied display name. If no device_id is supplied, we make one up. Args: user_id: @user:id device_id: device id supplied by client initial_device_display_name: device display name from client auth_provider_id: The SSO IdP the user used, if any. auth_provider_session_id: The session ID (sid) got from the SSO IdP. Returns: device id (generated if none was supplied) """ self._check_device_name_length(initial_device_display_name) if device_id is not None: new_device = await self.store.store_device( user_id=user_id, device_id=device_id, initial_device_display_name=initial_device_display_name, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) if new_device: await self.notify_device_update(user_id, [device_id]) return device_id # if the device id is not specified, we'll autogen one, but loop a few # times in case of a clash. attempts = 0 while attempts < 5: new_device_id = stringutils.random_string(10).upper() new_device = await self.store.store_device( user_id=user_id, device_id=new_device_id, initial_device_display_name=initial_device_display_name, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) if new_device: await self.notify_device_update(user_id, [new_device_id]) return new_device_id attempts += 1 raise errors.StoreError(500, "Couldn't generate a device ID.") async def _delete_stale_devices(self) -> None: """Background task that deletes devices which haven't been accessed for more than a configured time period. """ # We should only be running this job if the config option is defined. assert self._delete_stale_devices_after is not None now_ms = self.clock.time_msec() since_ms = now_ms - self._delete_stale_devices_after devices = await self.store.get_local_devices_not_accessed_since(since_ms) for user_id, user_devices in devices.items(): await self.delete_devices(user_id, user_devices) @trace async def delete_all_devices_for_user( self, user_id: str, except_device_id: Optional[str] = None ) -> None: """Delete all of the user's devices Args: user_id: The user to remove all devices from except_device_id: optional device id which should not be deleted """ device_map = await self.store.get_devices_by_user(user_id) device_ids = list(device_map) if except_device_id is not None: device_ids = [d for d in device_ids if d != except_device_id] await self.delete_devices(user_id, device_ids) async def delete_devices(self, user_id: str, device_ids: List[str]) -> None: """Delete several devices Args: user_id: The user to delete devices from. device_ids: The list of device IDs to delete """ to_device_stream_id = self._event_sources.get_current_token().to_device_key try: await self.store.delete_devices(user_id, device_ids) except errors.StoreError as e: if e.code == 404: # no match set_tag("error", True) set_tag("reason", "User doesn't have that device id.") else: raise # Delete data specific to each device. Not optimised as it is not # considered as part of a critical path. for device_id in device_ids: await self._auth_handler.delete_access_tokens_for_user( user_id, device_id=device_id ) await self.store.delete_e2e_keys_by_device( user_id=user_id, device_id=device_id ) if self.hs.config.experimental.msc3890_enabled: # Remove any local notification settings for this device in accordance # with MSC3890. await self._account_data_handler.remove_account_data_for_user( user_id, f"org.matrix.msc3890.local_notification_settings.{device_id}", ) # Delete device messages asynchronously and in batches using the task scheduler # We specify an upper stream id to avoid deleting non delivered messages # if an user re-uses a device ID. await self._task_scheduler.schedule_task( DELETE_DEVICE_MSGS_TASK_NAME, resource_id=device_id, params={ "user_id": user_id, "device_id": device_id, "up_to_stream_id": to_device_stream_id, }, ) # Pushers are deleted after `delete_access_tokens_for_user` is called so that # modules using `on_logged_out` hook can use them if needed. await self.hs.get_pusherpool().remove_pushers_by_devices(user_id, device_ids) await self.notify_device_update(user_id, device_ids) async def update_device(self, user_id: str, device_id: str, content: dict) -> None: """Update the given device Args: user_id: The user to update devices of. device_id: The device to update. content: body of update request """ # Reject a new displayname which is too long. new_display_name = content.get("display_name") self._check_device_name_length(new_display_name) try: await self.store.update_device( user_id, device_id, new_display_name=new_display_name ) await self.notify_device_update(user_id, [device_id]) except errors.StoreError as e: if e.code == 404: raise errors.NotFoundError() else: raise @trace @measure_func("notify_device_update") async def notify_device_update( self, user_id: str, device_ids: StrCollection ) -> None: """Notify that a user's device(s) has changed. Pokes the notifier, and remote servers if the user is local. Args: user_id: The Matrix ID of the user who's device list has been updated. device_ids: The device IDs that have changed. """ if not device_ids: # No changes to notify about, so this is a no-op. return room_ids = await self.store.get_rooms_for_user(user_id) position = await self.store.add_device_change_to_streams( user_id, device_ids, room_ids=room_ids, ) if not position: # This should only happen if there are no updates, so we bail. return for device_id in device_ids: logger.debug( "Notifying about update %r/%r, ID: %r", user_id, device_id, position ) # specify the user ID too since the user should always get their own device list # updates, even if they aren't in any rooms. self.notifier.on_new_event( StreamKeyType.DEVICE_LIST, position, users={user_id}, rooms=room_ids ) # We may need to do some processing asynchronously for local user IDs. if self.hs.is_mine_id(user_id): self._handle_new_device_update_async() async def notify_user_signature_update( self, from_user_id: str, user_ids: List[str] ) -> None: """Notify a user that they have made new signatures of other users. Args: from_user_id: the user who made the signature user_ids: the users IDs that have new signatures """ position = await self.store.add_user_signature_change_to_streams( from_user_id, user_ids ) self.notifier.on_new_event( StreamKeyType.DEVICE_LIST, position, users=[from_user_id] ) async def store_dehydrated_device( self, user_id: str, device_id: Optional[str], device_data: JsonDict, initial_device_display_name: Optional[str] = None, keys_for_device: Optional[JsonDict] = None, ) -> str: """Store a dehydrated device for a user, optionally storing the keys associated with it as well. If the user had a previous dehydrated device, it is removed. Args: user_id: the user that we are storing the device for device_id: device id supplied by client device_data: the dehydrated device information initial_device_display_name: The display name to use for the device keys_for_device: keys for the dehydrated device Returns: device id of the dehydrated device """ device_id = await self.check_device_registered( user_id, device_id, initial_device_display_name, ) time_now = self.clock.time_msec() old_device_id = await self.store.store_dehydrated_device( user_id, device_id, device_data, time_now, keys_for_device ) if old_device_id is not None: await self.delete_devices(user_id, [old_device_id]) return device_id async def rehydrate_device( self, user_id: str, access_token: str, device_id: str ) -> dict: """Process a rehydration request from the user. Args: user_id: the user who is rehydrating the device access_token: the access token used for the request device_id: the ID of the device that will be rehydrated Returns: a dict containing {"success": True} """ success = await self.store.remove_dehydrated_device(user_id, device_id) if not success: raise errors.NotFoundError() # If the dehydrated device was successfully deleted (the device ID # matched the stored dehydrated device), then modify the access # token and refresh token to use the dehydrated device's ID and # copy the old device display name to the dehydrated device, # and destroy the old device ID old_device_id = await self.store.set_device_for_access_token( access_token, device_id ) await self.store.set_device_for_refresh_token(user_id, old_device_id, device_id) old_device = await self.store.get_device(user_id, old_device_id) if old_device is None: raise errors.NotFoundError() await self.store.update_device(user_id, device_id, old_device["display_name"]) # can't call self.delete_device because that will clobber the # access token so call the storage layer directly await self.store.delete_devices(user_id, [old_device_id]) await self.store.delete_e2e_keys_by_device( user_id=user_id, device_id=old_device_id ) # tell everyone that the old device is gone and that the dehydrated # device has a new display name await self.notify_device_update(user_id, [old_device_id, device_id]) return {"success": True} async def delete_dehydrated_device(self, user_id: str, device_id: str) -> None: """ Delete a stored dehydrated device. Args: user_id: the user_id to delete the device from device_id: id of the dehydrated device to delete """ success = await self.store.remove_dehydrated_device(user_id, device_id) if not success: raise errors.NotFoundError() await self.delete_devices(user_id, [device_id]) await self.store.delete_e2e_keys_by_device(user_id=user_id, device_id=device_id) @wrap_as_background_process("_handle_new_device_update_async") async def _handle_new_device_update_async(self) -> None: """Called when we have a new local device list update that we need to send out over federation. This happens in the background so as not to block the original request that generated the device update. """ if self._handle_new_device_update_is_processing: self._handle_new_device_update_new_data = True return self._handle_new_device_update_is_processing = True # The stream ID we processed previous iteration (if any), and the set of # hosts we've already poked about for this update. This is so that we # don't poke the same remote server about the same update repeatedly. current_stream_id = None hosts_already_sent_to: Set[str] = set() try: stream_id, room_id = await self.store.get_device_change_last_converted_pos() while True: self._handle_new_device_update_new_data = False max_stream_id = self.store.get_device_stream_token() rows = await self.store.get_uncoverted_outbound_room_pokes( stream_id, room_id ) if not rows: # If the DB returned nothing then there is nothing left to # do, *unless* a new device list update happened during the # DB query. # Advance `(stream_id, room_id)`. # `max_stream_id` comes from *before* the query for unconverted # rows, which means that any unconverted rows must have a larger # stream ID. if max_stream_id > stream_id: stream_id, room_id = max_stream_id, "" await self.store.set_device_change_last_converted_pos( stream_id, room_id ) else: assert max_stream_id == stream_id # Avoid moving `room_id` backwards. if self._handle_new_device_update_new_data: continue else: return for user_id, device_id, room_id, stream_id, opentracing_context in rows: hosts = set() # Ignore any users that aren't ours if self.hs.is_mine_id(user_id): hosts = set( await self._storage_controllers.state.get_current_hosts_in_room_or_partial_state_approximation( room_id ) ) hosts.discard(self.server_name) # For rooms with partial state, `hosts` is merely an # approximation. When we transition to a full state room, we # will have to send out device list updates to any servers we # missed. # Check if we've already sent this update to some hosts if current_stream_id == stream_id: hosts -= hosts_already_sent_to await self.store.add_device_list_outbound_pokes( user_id=user_id, device_id=device_id, room_id=room_id, hosts=hosts, context=opentracing_context, ) # Notify replication that we've updated the device list stream. self.notifier.notify_replication() if hosts: logger.info( "Sending device list update notif for %r to: %r", user_id, hosts, ) await self.federation_sender.send_device_messages( hosts, immediate=False ) # TODO: when called, this isn't in a logging context. # This leads to log spam, sentry event spam, and massive # memory usage. # See https://github.com/matrix-org/synapse/issues/12552. # log_kv( # {"message": "sent device update to host", "host": host} # ) if current_stream_id != stream_id: # Clear the set of hosts we've already sent to as we're # processing a new update. hosts_already_sent_to.clear() hosts_already_sent_to.update(hosts) current_stream_id = stream_id # Advance `(stream_id, room_id)`. _, _, room_id, stream_id, _ = rows[-1] await self.store.set_device_change_last_converted_pos( stream_id, room_id ) finally: self._handle_new_device_update_is_processing = False async def handle_room_un_partial_stated(self, room_id: str) -> None: """Handles sending appropriate device list updates in a room that has gone from partial to full state. """ # We defer to the device list updater to handle pending remote device # list updates. await self.device_list_updater.handle_room_un_partial_stated(room_id) # Replay local updates. ( join_event_id, device_lists_stream_id, ) = await self.store.get_join_event_id_and_device_lists_stream_id_for_partial_state( room_id ) # Get the local device list changes that have happened in the room since # we started joining. If there are no updates there's nothing left to do. changes = await self.store.get_device_list_changes_in_room( room_id, device_lists_stream_id ) local_changes = {(u, d) for u, d in changes if self.hs.is_mine_id(u)} if not local_changes: return # Note: We have persisted the full state at this point, we just haven't # cleared the `partial_room` flag. join_state_ids = await self._state_storage.get_state_ids_for_event( join_event_id, await_full_state=False ) current_state_ids = await self.store.get_partial_current_state_ids(room_id) # Now we need to work out all servers that might have been in the room # at any point during our join. # First we look for any membership states that have changed between the # initial join and now... all_keys = set(join_state_ids) all_keys.update(current_state_ids) potentially_changed_hosts = set() for etype, state_key in all_keys: if etype != EventTypes.Member: continue prev = join_state_ids.get((etype, state_key)) current = current_state_ids.get((etype, state_key)) if prev != current: potentially_changed_hosts.add(get_domain_from_id(state_key)) # ... then we add all the hosts that are currently joined to the room... current_hosts_in_room = await self.store.get_current_hosts_in_room(room_id) potentially_changed_hosts.update(current_hosts_in_room) # ... and finally we remove any hosts that we were told about, as we # will have sent device list updates to those hosts when they happened. known_hosts_at_join = await self.store.get_partial_state_servers_at_join( room_id ) assert known_hosts_at_join is not None potentially_changed_hosts.difference_update(known_hosts_at_join) potentially_changed_hosts.discard(self.server_name) if not potentially_changed_hosts: # Nothing to do. return logger.info( "Found %d changed hosts to send device list updates to", len(potentially_changed_hosts), ) for user_id, device_id in local_changes: await self.store.add_device_list_outbound_pokes( user_id=user_id, device_id=device_id, room_id=room_id, hosts=potentially_changed_hosts, context=None, ) # Notify things that device lists need to be sent out. self.notifier.notify_replication() await self.federation_sender.send_device_messages( potentially_changed_hosts, immediate=False ) def _update_device_from_client_ips( device: JsonDict, client_ips: Mapping[Tuple[str, str], DeviceLastConnectionInfo] ) -> None: ip = client_ips.get((device["user_id"], device["device_id"])) device.update( { "last_seen_user_agent": ip.user_agent if ip else None, "last_seen_ts": ip.last_seen if ip else None, "last_seen_ip": ip.ip if ip else None, } ) class DeviceListWorkerUpdater: "Handles incoming device list updates from federation and contacts the main process over replication" def __init__(self, hs: "HomeServer"): from synapse.replication.http.devices import ( ReplicationMultiUserDevicesResyncRestServlet, ) self._multi_user_device_resync_client = ( ReplicationMultiUserDevicesResyncRestServlet.make_client(hs) ) async def multi_user_device_resync( self, user_ids: List[str], mark_failed_as_stale: bool = True ) -> Dict[str, Optional[JsonMapping]]: """ Like `user_device_resync` but operates on multiple users **from the same origin** at once. Returns: Dict from User ID to the same Dict as `user_device_resync`. """ # mark_failed_as_stale is not sent. Ensure this doesn't break expectations. assert mark_failed_as_stale if not user_ids: # Shortcut empty requests return {} return await self._multi_user_device_resync_client(user_ids=user_ids) class DeviceListUpdater(DeviceListWorkerUpdater): "Handles incoming device list updates from federation and updates the DB" def __init__(self, hs: "HomeServer", device_handler: DeviceHandler): self.store = hs.get_datastores().main self.federation = hs.get_federation_client() self.clock = hs.get_clock() self.device_handler = device_handler self._notifier = hs.get_notifier() self._remote_edu_linearizer = Linearizer(name="remote_device_list") self._resync_linearizer = Linearizer(name="remote_device_resync") # user_id -> list of updates waiting to be handled. self._pending_updates: Dict[ str, List[Tuple[str, str, Iterable[str], JsonDict]] ] = {} # Recently seen stream ids. We don't bother keeping these in the DB, # but they're useful to have them about to reduce the number of spurious # resyncs. self._seen_updates: ExpiringCache[str, Set[str]] = ExpiringCache( cache_name="device_update_edu", clock=self.clock, max_len=10000, expiry_ms=30 * 60 * 1000, iterable=True, ) # Attempt to resync out of sync device lists every 30s. self._resync_retry_in_progress = False self.clock.looping_call( run_as_background_process, 30 * 1000, func=self._maybe_retry_device_resync, desc="_maybe_retry_device_resync", ) @trace async def incoming_device_list_update( self, origin: str, edu_content: JsonDict ) -> None: """Called on incoming device list update from federation. Responsible for parsing the EDU and adding to pending updates list. """ set_tag("origin", origin) set_tag("edu_content", str(edu_content)) user_id = edu_content.pop("user_id") device_id = edu_content.pop("device_id") stream_id = str(edu_content.pop("stream_id")) # They may come as ints prev_ids = edu_content.pop("prev_id", []) if not isinstance(prev_ids, list): raise SynapseError( 400, "Device list update had an invalid 'prev_ids' field" ) prev_ids = [str(p) for p in prev_ids] # They may come as ints if get_domain_from_id(user_id) != origin: # TODO: Raise? logger.warning( "Got device list update edu for %r/%r from %r", user_id, device_id, origin, ) set_tag("error", True) log_kv( { "message": "Got a device list update edu from a user and " "device which does not match the origin of the request.", "user_id": user_id, "device_id": device_id, } ) return # Check if we are partially joining any rooms. If so we need to store # all device list updates so that we can handle them correctly once we # know who is in the room. # TODO(faster_joins): this fetches and processes a bunch of data that we don't # use. Could be replaced by a tighter query e.g. # SELECT EXISTS(SELECT 1 FROM partial_state_rooms) partial_rooms = await self.store.get_partial_state_room_resync_info() if partial_rooms: await self.store.add_remote_device_list_to_pending( user_id, device_id, ) self._notifier.notify_replication() room_ids = await self.store.get_rooms_for_user(user_id) if not room_ids: # We don't share any rooms with this user. Ignore update, as we # probably won't get any further updates. set_tag("error", True) log_kv( { "message": "Got an update from a user for which " "we don't share any rooms", "other user_id": user_id, } ) logger.warning( "Got device list update edu for %r/%r, but don't share a room", user_id, device_id, ) return logger.debug("Received device list update for %r/%r", user_id, device_id) self._pending_updates.setdefault(user_id, []).append( (device_id, stream_id, prev_ids, edu_content) ) await self._handle_device_updates(user_id) @measure_func("_incoming_device_list_update") async def _handle_device_updates(self, user_id: str) -> None: "Actually handle pending updates." async with self._remote_edu_linearizer.queue(user_id): pending_updates = self._pending_updates.pop(user_id, []) if not pending_updates: # This can happen since we batch updates return for device_id, stream_id, prev_ids, _ in pending_updates: logger.debug( "Handling update %r/%r, ID: %r, prev: %r ", user_id, device_id, stream_id, prev_ids, ) # Given a list of updates we check if we need to resync. This # happens if we've missed updates. resync = await self._need_to_do_resync(user_id, pending_updates) if logger.isEnabledFor(logging.INFO): logger.info( "Received device list update for %s, requiring resync: %s. Devices: %s", user_id, resync, ", ".join(u[0] for u in pending_updates), ) if resync: # We mark as stale up front in case we get restarted. await self.store.mark_remote_users_device_caches_as_stale([user_id]) run_as_background_process( "_maybe_retry_device_resync", self.multi_user_device_resync, [user_id], False, ) else: # Simply update the single device, since we know that is the only # change (because of the single prev_id matching the current cache) for device_id, stream_id, _, content in pending_updates: await self.store.update_remote_device_list_cache_entry( user_id, device_id, content, stream_id ) await self.device_handler.notify_device_update( user_id, [device_id for device_id, _, _, _ in pending_updates] ) self._seen_updates.setdefault(user_id, set()).update( stream_id for _, stream_id, _, _ in pending_updates ) async def _need_to_do_resync( self, user_id: str, updates: Iterable[Tuple[str, str, Iterable[str], JsonDict]] ) -> bool: """Given a list of updates for a user figure out if we need to do a full resync, or whether we have enough data that we can just apply the delta. """ seen_updates: Set[str] = self._seen_updates.get(user_id, set()) extremity = await self.store.get_device_list_last_stream_id_for_remote(user_id) logger.debug("Current extremity for %r: %r", user_id, extremity) stream_id_in_updates = set() # stream_ids in updates list for _, stream_id, prev_ids, _ in updates: if not prev_ids: # We always do a resync if there are no previous IDs return True for prev_id in prev_ids: if prev_id == extremity: continue elif prev_id in seen_updates: continue elif prev_id in stream_id_in_updates: continue else: return True stream_id_in_updates.add(stream_id) return False @trace async def _maybe_retry_device_resync(self) -> None: """Retry to resync device lists that are out of sync, except if another retry is in progress. """ if self._resync_retry_in_progress: return try: # Prevent another call of this function to retry resyncing device lists so # we don't send too many requests. self._resync_retry_in_progress = True # Get all of the users that need resyncing. need_resync = await self.store.get_user_ids_requiring_device_list_resync() # Filter out users whose host is marked as "down" up front. hosts = await filter_destinations_by_retry_limiter( {get_domain_from_id(u) for u in need_resync}, self.clock, self.store ) hosts = set(hosts) # Iterate over the set of user IDs. for user_id in need_resync: if get_domain_from_id(user_id) not in hosts: continue try: # Try to resync the current user's devices list. result = (await self.multi_user_device_resync([user_id], False))[ user_id ] # user_device_resync only returns a result if it managed to # successfully resync and update the database. Updating the table # of users requiring resync isn't necessary here as # user_device_resync already does it (through # self.store.update_remote_device_list_cache). if result: logger.debug( "Successfully resynced the device list for %s", user_id, ) except Exception as e: # If there was an issue resyncing this user, e.g. if the remote # server sent a malformed result, just log the error instead of # aborting all the subsequent resyncs. logger.debug( "Could not resync the device list for %s: %s", user_id, e, ) finally: # Allow future calls to retry resyncinc out of sync device lists. self._resync_retry_in_progress = False async def multi_user_device_resync( self, user_ids: List[str], mark_failed_as_stale: bool = True ) -> Dict[str, Optional[JsonMapping]]: """ Like `user_device_resync` but operates on multiple users **from the same origin** at once. Returns: Dict from User ID to the same Dict as `user_device_resync`. """ if not user_ids: return {} origins = {UserID.from_string(user_id).domain for user_id in user_ids} if len(origins) != 1: raise InvalidAPICallError(f"Only one origin permitted, got {origins!r}") result = {} failed = set() # TODO(Perf): Actually batch these up for user_id in user_ids: async with self._resync_linearizer.queue(user_id): ( user_result, user_failed, ) = await self._user_device_resync_returning_failed(user_id) result[user_id] = user_result if user_failed: failed.add(user_id) if mark_failed_as_stale: await self.store.mark_remote_users_device_caches_as_stale(failed) return result async def _user_device_resync_returning_failed( self, user_id: str ) -> Tuple[Optional[JsonMapping], bool]: """Fetches all devices for a user and updates the device cache with them. Args: user_id: The user's id whose device_list will be updated. Returns: - A dict with device info as under the "devices" in the result of this request: https://matrix.org/docs/spec/server_server/r0.1.2#get-matrix-federation-v1-user-devices-userid None when we weren't able to fetch the device info for some reason, e.g. due to a connection problem. - True iff the resync failed and the device list should be marked as stale. """ # Check that we haven't gone and fetched the devices since we last # checked if we needed to resync these device lists. if await self.store.get_users_whose_devices_are_cached([user_id]): cached = await self.store.get_cached_devices_for_user(user_id) return cached, False logger.debug("Attempting to resync the device list for %s", user_id) log_kv({"message": "Doing resync to update device list."}) # Fetch all devices for the user. origin = get_domain_from_id(user_id) try: result = await self.federation.query_user_devices(origin, user_id) except NotRetryingDestination: return None, True except (RequestSendFailed, HttpResponseException) as e: logger.warning( "Failed to handle device list update for %s: %s", user_id, e, ) # We abort on exceptions rather than accepting the update # as otherwise synapse will 'forget' that its device list # is out of date. If we bail then we will retry the resync # next time we get a device list update for this user_id. # This makes it more likely that the device lists will # eventually become consistent. return None, True except FederationDeniedError as e: set_tag("error", True) log_kv({"reason": "FederationDeniedError"}) logger.info(e) return None, False except Exception as e: set_tag("error", True) log_kv( {"message": "Exception raised by federation request", "exception": e} ) logger.exception("Failed to handle device list update for %s", user_id) return None, True log_kv({"result": result}) stream_id = result["stream_id"] devices = result["devices"] # Get the master key and the self-signing key for this user if provided in the # response (None if not in the response). # The response will not contain the user signing key, as this key is only used by # its owner, thus it doesn't make sense to send it over federation. master_key = result.get("master_key") self_signing_key = result.get("self_signing_key") ignore_devices = False # If the remote server has more than ~1000 devices for this user # we assume that something is going horribly wrong (e.g. a bot # that logs in and creates a new device every time it tries to # send a message). Maintaining lots of devices per user in the # cache can cause serious performance issues as if this request # takes more than 60s to complete, internal replication from the # inbound federation worker to the synapse master may time out # causing the inbound federation to fail and causing the remote # server to retry, causing a DoS. So in this scenario we give # up on storing the total list of devices and only handle the # delta instead. if len(devices) > 1000: logger.warning( "Ignoring device list snapshot for %s as it has >1K devs (%d)", user_id, len(devices), ) devices = [] ignore_devices = True else: prev_stream_id = await self.store.get_device_list_last_stream_id_for_remote( user_id ) cached_devices = await self.store.get_cached_devices_for_user(user_id) # To ensure that a user with no devices is cached, we skip the resync only # if we have a stream_id from previously writing a cache entry. if prev_stream_id is not None and cached_devices == { d["device_id"]: d for d in devices }: logging.info( "Skipping device list resync for %s, as our cache matches already", user_id, ) devices = [] ignore_devices = True for device in devices: logger.debug( "Handling resync update %r/%r, ID: %r", user_id, device["device_id"], stream_id, ) if not ignore_devices: await self.store.update_remote_device_list_cache( user_id, devices, stream_id ) # mark the cache as valid, whether or not we actually processed any device # list updates. await self.store.mark_remote_user_device_cache_as_valid(user_id) device_ids = [device["device_id"] for device in devices] # Handle cross-signing keys. cross_signing_device_ids = await self.process_cross_signing_key_update( user_id, master_key, self_signing_key, ) device_ids = device_ids + cross_signing_device_ids if device_ids: await self.device_handler.notify_device_update(user_id, device_ids) # We clobber the seen updates since we've re-synced from a given # point. self._seen_updates[user_id] = {stream_id} return result, False async def process_cross_signing_key_update( self, user_id: str, master_key: Optional[JsonDict], self_signing_key: Optional[JsonDict], ) -> List[str]: """Process the given new master and self-signing key for the given remote user. Args: user_id: The ID of the user these keys are for. master_key: The dict of the cross-signing master key as returned by the remote server. self_signing_key: The dict of the cross-signing self-signing key as returned by the remote server. Return: The device IDs for the given keys. """ device_ids = [] current_keys_map = await self.store.get_e2e_cross_signing_keys_bulk([user_id]) current_keys = current_keys_map.get(user_id) or {} if master_key and master_key != current_keys.get("master"): await self.store.set_e2e_cross_signing_key(user_id, "master", master_key) _, verify_key = get_verify_key_from_cross_signing_key(master_key) # verify_key is a VerifyKey from signedjson, which uses # .version to denote the portion of the key ID after the # algorithm and colon, which is the device ID device_ids.append(verify_key.version) if self_signing_key and self_signing_key != current_keys.get("self_signing"): await self.store.set_e2e_cross_signing_key( user_id, "self_signing", self_signing_key ) _, verify_key = get_verify_key_from_cross_signing_key(self_signing_key) device_ids.append(verify_key.version) return device_ids async def handle_room_un_partial_stated(self, room_id: str) -> None: """Handles sending appropriate device list updates in a room that has gone from partial to full state. """ pending_updates = ( await self.store.get_pending_remote_device_list_updates_for_room(room_id) ) for user_id, device_id in pending_updates: logger.info( "Got pending device list update in room %s: %s / %s", room_id, user_id, device_id, ) position = await self.store.add_device_change_to_streams( user_id, [device_id], room_ids=[room_id], ) if not position: # This should only happen if there are no updates, which # shouldn't happen when we've passed in a non-empty set of # device IDs. continue self.device_handler.notifier.on_new_event( StreamKeyType.DEVICE_LIST, position, rooms=[room_id] ) synapse-1.100.0/synapse/handlers/devicemessage.py000066400000000000000000000361671455622526000220170ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from http import HTTPStatus from typing import TYPE_CHECKING, Any, Dict, Optional from synapse.api.constants import EduTypes, EventContentFields, ToDeviceEventTypes from synapse.api.errors import Codes, SynapseError from synapse.api.ratelimiting import Ratelimiter from synapse.logging.context import run_in_background from synapse.logging.opentracing import ( SynapseTags, get_active_span_text_map, log_kv, set_tag, ) from synapse.replication.http.devices import ( ReplicationMultiUserDevicesResyncRestServlet, ) from synapse.types import JsonDict, Requester, StreamKeyType, UserID, get_domain_from_id from synapse.util import json_encoder from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DeviceMessageHandler: def __init__(self, hs: "HomeServer"): """ Args: hs: server """ self.store = hs.get_datastores().main self.notifier = hs.get_notifier() self.is_mine = hs.is_mine if hs.config.experimental.msc3814_enabled: self.event_sources = hs.get_event_sources() self.device_handler = hs.get_device_handler() # We only need to poke the federation sender explicitly if its on the # same instance. Other federation sender instances will get notified by # `synapse.app.generic_worker.FederationSenderHandler` when it sees it # in the to-device replication stream. self.federation_sender = None if hs.should_send_federation(): self.federation_sender = hs.get_federation_sender() # If we can handle the to device EDUs we do so, otherwise we route them # to the appropriate worker. if hs.get_instance_name() in hs.config.worker.writers.to_device: hs.get_federation_registry().register_edu_handler( EduTypes.DIRECT_TO_DEVICE, self.on_direct_to_device_edu ) else: hs.get_federation_registry().register_instances_for_edu( EduTypes.DIRECT_TO_DEVICE, hs.config.worker.writers.to_device, ) # The handler to call when we think a user's device list might be out of # sync. We do all device list resyncing on the master instance, so if # we're on a worker we hit the device resync replication API. if hs.config.worker.worker_app is None: self._multi_user_device_resync = ( hs.get_device_handler().device_list_updater.multi_user_device_resync ) else: self._multi_user_device_resync = ( ReplicationMultiUserDevicesResyncRestServlet.make_client(hs) ) # a rate limiter for room key requests. The keys are # (sending_user_id, sending_device_id). self._ratelimiter = Ratelimiter( store=self.store, clock=hs.get_clock(), cfg=hs.config.ratelimiting.rc_key_requests, ) async def on_direct_to_device_edu(self, origin: str, content: JsonDict) -> None: """ Handle receiving to-device messages from remote homeservers. Args: origin: The remote homeserver. content: The JSON dictionary containing the to-device messages. """ local_messages = {} sender_user_id = content["sender"] if origin != get_domain_from_id(sender_user_id): logger.warning( "Dropping device message from %r with spoofed sender %r", origin, sender_user_id, ) message_type = content["type"] message_id = content["message_id"] for user_id, by_device in content["messages"].items(): # we use UserID.from_string to catch invalid user ids if not self.is_mine(UserID.from_string(user_id)): logger.warning("To-device message to non-local user %s", user_id) raise SynapseError(400, "Not a user here") if not by_device: continue # Ratelimit key requests by the sending user. if message_type == ToDeviceEventTypes.RoomKeyRequest: allowed, _ = await self._ratelimiter.can_do_action( None, (sender_user_id, None) ) if not allowed: logger.info( "Dropping room_key_request from %s to %s due to rate limit", sender_user_id, user_id, ) continue messages_by_device = { device_id: { "content": message_content, "type": message_type, "sender": sender_user_id, } for device_id, message_content in by_device.items() } local_messages[user_id] = messages_by_device await self._check_for_unknown_devices( message_type, sender_user_id, by_device ) # Add messages to the database. # Retrieve the stream id of the last-processed to-device message. last_stream_id = await self.store.add_messages_from_remote_to_device_inbox( origin, message_id, local_messages ) # Notify listeners that there are new to-device messages to process, # handing them the latest stream id. self.notifier.on_new_event( StreamKeyType.TO_DEVICE, last_stream_id, users=local_messages.keys() ) async def _check_for_unknown_devices( self, message_type: str, sender_user_id: str, by_device: Dict[str, Dict[str, Any]], ) -> None: """Checks inbound device messages for unknown remote devices, and if found marks the remote cache for the user as stale. """ if message_type != "m.room_key_request": return # Get the sending device IDs requesting_device_ids = set() for message_content in by_device.values(): device_id = message_content.get("requesting_device_id") requesting_device_ids.add(device_id) # Check if we are tracking the devices of the remote user. room_ids = await self.store.get_rooms_for_user(sender_user_id) if not room_ids: logger.info( "Received device message from remote device we don't" " share a room with: %s %s", sender_user_id, requesting_device_ids, ) return # If we are tracking check that we know about the sending # devices. cached_devices = await self.store.get_cached_devices_for_user(sender_user_id) unknown_devices = requesting_device_ids - set(cached_devices) if unknown_devices: logger.info( "Received device message from remote device not in our cache: %s %s", sender_user_id, unknown_devices, ) await self.store.mark_remote_users_device_caches_as_stale((sender_user_id,)) # Immediately attempt a resync in the background run_in_background(self._multi_user_device_resync, user_ids=[sender_user_id]) async def send_device_message( self, requester: Requester, message_type: str, messages: Dict[str, Dict[str, JsonDict]], ) -> None: """ Handle a request from a user to send to-device message(s). Args: requester: The user that is sending the to-device messages. message_type: The type of to-device messages that are being sent. messages: A dictionary containing recipients mapped to messages intended for them. """ sender_user_id = requester.user.to_string() set_tag(SynapseTags.TO_DEVICE_TYPE, message_type) set_tag(SynapseTags.TO_DEVICE_SENDER, sender_user_id) local_messages = {} remote_messages: Dict[str, Dict[str, Dict[str, JsonDict]]] = {} for user_id, by_device in messages.items(): # add an opentracing log entry for each message for device_id, message_content in by_device.items(): log_kv( { "event": "send_to_device_message", "user_id": user_id, "device_id": device_id, EventContentFields.TO_DEVICE_MSGID: message_content.get( EventContentFields.TO_DEVICE_MSGID ), } ) # Ratelimit local cross-user key requests by the sending device. if ( message_type == ToDeviceEventTypes.RoomKeyRequest and user_id != sender_user_id ): allowed, _ = await self._ratelimiter.can_do_action( requester, (sender_user_id, requester.device_id) ) if not allowed: log_kv({"message": f"dropping key requests to {user_id}"}) logger.info( "Dropping room_key_request from %s to %s due to rate limit", sender_user_id, user_id, ) continue # we use UserID.from_string to catch invalid user ids if self.is_mine(UserID.from_string(user_id)): messages_by_device = { device_id: { "content": message_content, "type": message_type, "sender": sender_user_id, } for device_id, message_content in by_device.items() } if messages_by_device: local_messages[user_id] = messages_by_device else: destination = get_domain_from_id(user_id) remote_messages.setdefault(destination, {})[user_id] = by_device context = get_active_span_text_map() remote_edu_contents = {} for destination, messages in remote_messages.items(): # The EDU contains a "message_id" property which is used for # idempotence. Make up a random one. message_id = random_string(16) log_kv({"destination": destination, "message_id": message_id}) remote_edu_contents[destination] = { "messages": messages, "sender": sender_user_id, "type": message_type, "message_id": message_id, "org.matrix.opentracing_context": json_encoder.encode(context), } # Add messages to the database. # Retrieve the stream id of the last-processed to-device message. last_stream_id = await self.store.add_messages_to_device_inbox( local_messages, remote_edu_contents ) # Notify listeners that there are new to-device messages to process, # handing them the latest stream id. self.notifier.on_new_event( StreamKeyType.TO_DEVICE, last_stream_id, users=local_messages.keys() ) if self.federation_sender: # Enqueue a new federation transaction to send the new # device messages to each remote destination. await self.federation_sender.send_device_messages(remote_messages.keys()) async def get_events_for_dehydrated_device( self, requester: Requester, device_id: str, since_token: Optional[str], limit: int, ) -> JsonDict: """Fetches up to `limit` events sent to `device_id` starting from `since_token` and returns the new since token. If there are no more messages, returns an empty array. Args: requester: the user requesting the messages device_id: ID of the dehydrated device since_token: stream id to start from when fetching messages limit: the number of messages to fetch Returns: A dict containing the to-device messages, as well as a token that the client can provide in the next call to fetch the next batch of messages """ user_id = requester.user.to_string() # only allow fetching messages for the dehydrated device id currently associated # with the user dehydrated_device = await self.device_handler.get_dehydrated_device(user_id) if dehydrated_device is None: raise SynapseError( HTTPStatus.FORBIDDEN, "No dehydrated device exists", Codes.FORBIDDEN, ) dehydrated_device_id, _ = dehydrated_device if device_id != dehydrated_device_id: raise SynapseError( HTTPStatus.FORBIDDEN, "You may only fetch messages for your dehydrated device", Codes.FORBIDDEN, ) since_stream_id = 0 if since_token: if not since_token.startswith("d"): raise SynapseError( HTTPStatus.BAD_REQUEST, "from parameter %r has an invalid format" % (since_token,), errcode=Codes.INVALID_PARAM, ) try: since_stream_id = int(since_token[1:]) except Exception: raise SynapseError( HTTPStatus.BAD_REQUEST, "from parameter %r has an invalid format" % (since_token,), errcode=Codes.INVALID_PARAM, ) to_token = self.event_sources.get_current_token().to_device_key messages, stream_id = await self.store.get_messages_for_device( user_id, device_id, since_stream_id, to_token, limit ) for message in messages: # Remove the message id before sending to client message_id = message.pop("message_id", None) if message_id: set_tag(SynapseTags.TO_DEVICE_EDU_ID, message_id) logger.debug( "Returning %d to-device messages between %d and %d (current token: %d) for " "dehydrated device %s, user_id %s", len(messages), since_stream_id, stream_id, to_token, device_id, user_id, ) return { "events": messages, "next_batch": f"d{stream_id}", } synapse-1.100.0/synapse/handlers/directory.py000066400000000000000000000503731455622526000212120ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import string from typing import TYPE_CHECKING, Iterable, List, Optional, Sequence from typing_extensions import Literal from synapse.api.constants import MAX_ALIAS_LENGTH, EventTypes from synapse.api.errors import ( AuthError, CodeMessageException, Codes, NotFoundError, RequestSendFailed, ShadowBanError, StoreError, SynapseError, ) from synapse.appservice import ApplicationService from synapse.module_api import NOT_SPAM from synapse.storage.databases.main.directory import RoomAliasMapping from synapse.types import JsonDict, Requester, RoomAlias if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class DirectoryHandler: def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.hs = hs self.state = hs.get_state_handler() self.appservice_handler = hs.get_application_service_handler() self.event_creation_handler = hs.get_event_creation_handler() self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.config = hs.config self.enable_room_list_search = hs.config.roomdirectory.enable_room_list_search self.require_membership = hs.config.server.require_membership_for_aliases self._third_party_event_rules = ( hs.get_module_api_callbacks().third_party_event_rules ) self.server_name = hs.hostname self.federation = hs.get_federation_client() hs.get_federation_registry().register_query_handler( "directory", self.on_directory_query ) self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker async def _create_association( self, room_alias: RoomAlias, room_id: str, servers: Optional[Iterable[str]] = None, creator: Optional[str] = None, ) -> None: # general association creation for both human users and app services for wchar in string.whitespace: if wchar in room_alias.localpart: raise SynapseError(400, "Invalid characters in room alias") if ":" in room_alias.localpart: raise SynapseError(400, "Invalid character in room alias localpart: ':'.") if not self.hs.is_mine(room_alias): raise SynapseError(400, "Room alias must be local") # TODO(erikj): Change this. # TODO(erikj): Add transactions. # TODO(erikj): Check if there is a current association. if not servers: servers = await self._storage_controllers.state.get_current_hosts_in_room_or_partial_state_approximation( room_id ) if not servers: raise SynapseError(400, "Failed to get server list") await self.store.create_room_alias_association( room_alias, room_id, servers, creator=creator ) async def create_association( self, requester: Requester, room_alias: RoomAlias, room_id: str, servers: Optional[List[str]] = None, check_membership: bool = True, ) -> None: """Attempt to create a new alias Args: requester room_alias room_id servers: Iterable of servers that others servers should try and join via check_membership: Whether to check if the user is in the room before the alias can be set (if the server's config requires it). """ user_id = requester.user.to_string() room_alias_str = room_alias.to_string() if len(room_alias_str) > MAX_ALIAS_LENGTH: raise SynapseError( 400, "Can't create aliases longer than %s characters" % MAX_ALIAS_LENGTH, Codes.INVALID_PARAM, ) service = requester.app_service if service: if not service.is_room_alias_in_namespace(room_alias_str): raise SynapseError( 400, "This application service has not reserved this kind of alias.", errcode=Codes.EXCLUSIVE, ) else: # Server admins are not subject to the same constraints as normal # users when creating an alias (e.g. being in the room). is_admin = await self.auth.is_server_admin(requester) if (self.require_membership and check_membership) and not is_admin: rooms_for_user = await self.store.get_rooms_for_user(user_id) if room_id not in rooms_for_user: raise AuthError( 403, "You must be in the room to create an alias for it" ) spam_check = ( await self._spam_checker_module_callbacks.user_may_create_room_alias( user_id, room_alias ) ) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: raise AuthError( 403, "This user is not permitted to create this alias", errcode=spam_check[0], additional_fields=spam_check[1], ) if not self.config.roomdirectory.is_alias_creation_allowed( user_id, room_id, room_alias_str ): # Let's just return a generic message, as there may be all sorts of # reasons why we said no. TODO: Allow configurable error messages # per alias creation rule? raise SynapseError(403, "Not allowed to create alias") can_create = self.can_modify_alias(room_alias, user_id=user_id) if not can_create: raise AuthError( 400, "This alias is reserved by an application service.", errcode=Codes.EXCLUSIVE, ) await self._create_association(room_alias, room_id, servers, creator=user_id) async def delete_association( self, requester: Requester, room_alias: RoomAlias ) -> str: """Remove an alias from the directory (this is only meant for human users; AS users should call delete_appservice_association) Args: requester room_alias Returns: room id that the alias used to point to Raises: NotFoundError: if the alias doesn't exist AuthError: if the user doesn't have perms to delete the alias (ie, the user is neither the creator of the alias, nor a server admin. SynapseError: if the alias belongs to an AS """ user_id = requester.user.to_string() try: can_delete = await self._user_can_delete_alias(room_alias, requester) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown room alias") raise if not can_delete: raise AuthError(403, "You don't have permission to delete the alias.") can_delete = self.can_modify_alias(room_alias, user_id=user_id) if not can_delete: raise SynapseError( 400, "This alias is reserved by an application service.", errcode=Codes.EXCLUSIVE, ) room_id = await self._delete_association(room_alias) if room_id is None: # It's possible someone else deleted the association after the # checks above, but before we did the deletion. raise NotFoundError("Unknown room alias") try: await self._update_canonical_alias(requester, user_id, room_id, room_alias) except ShadowBanError as e: logger.info("Failed to update alias events due to shadow-ban: %s", e) except AuthError as e: logger.info("Failed to update alias events: %s", e) return room_id async def delete_appservice_association( self, service: ApplicationService, room_alias: RoomAlias ) -> None: if not service.is_room_alias_in_namespace(room_alias.to_string()): raise SynapseError( 400, "This application service has not reserved this kind of alias", errcode=Codes.EXCLUSIVE, ) await self._delete_association(room_alias) async def _delete_association(self, room_alias: RoomAlias) -> Optional[str]: if not self.hs.is_mine(room_alias): raise SynapseError(400, "Room alias must be local") room_id = await self.store.delete_room_alias(room_alias) return room_id async def get_association(self, room_alias: RoomAlias) -> JsonDict: room_id = None if self.hs.is_mine(room_alias): result: Optional[ RoomAliasMapping ] = await self.get_association_from_room_alias(room_alias) if result: room_id = result.room_id servers = result.servers else: try: fed_result: Optional[JsonDict] = await self.federation.make_query( destination=room_alias.domain, query_type="directory", args={"room_alias": room_alias.to_string()}, retry_on_dns_fail=False, ignore_backoff=True, ) except RequestSendFailed: raise SynapseError(502, "Failed to fetch alias") except CodeMessageException as e: logging.warning( "Error retrieving alias %s -> %s %s", room_alias, e.code, e.msg ) if e.code == 404: fed_result = None else: raise SynapseError(502, "Failed to fetch alias") if fed_result and "room_id" in fed_result and "servers" in fed_result: room_id = fed_result["room_id"] servers = fed_result["servers"] if not room_id: raise SynapseError( 404, "Room alias %s not found" % (room_alias.to_string(),), Codes.NOT_FOUND, ) extra_servers = await self._storage_controllers.state.get_current_hosts_in_room_or_partial_state_approximation( room_id ) servers_set = set(extra_servers) | set(servers) # If this server is in the list of servers, return it first. if self.server_name in servers_set: servers = [self.server_name] + [ s for s in servers_set if s != self.server_name ] else: servers = list(servers_set) return {"room_id": room_id, "servers": servers} async def on_directory_query(self, args: JsonDict) -> JsonDict: room_alias = RoomAlias.from_string(args["room_alias"]) if not self.hs.is_mine(room_alias): raise SynapseError(400, "Room Alias is not hosted on this homeserver") result = await self.get_association_from_room_alias(room_alias) if result is not None: return {"room_id": result.room_id, "servers": result.servers} else: raise SynapseError( 404, "Room alias %r not found" % (room_alias.to_string(),), Codes.NOT_FOUND, ) async def _update_canonical_alias( self, requester: Requester, user_id: str, room_id: str, room_alias: RoomAlias ) -> None: """ Send an updated canonical alias event if the removed alias was set as the canonical alias or listed in the alt_aliases field. Raises: ShadowBanError if the requester has been shadow-banned. """ alias_event = await self._storage_controllers.state.get_current_state_event( room_id, EventTypes.CanonicalAlias, "" ) # There is no canonical alias, nothing to do. if not alias_event: return # Obtain a mutable version of the event content. content = dict(alias_event.content) send_update = False # Remove the alias property if it matches the removed alias. alias_str = room_alias.to_string() if alias_event.content.get("alias", "") == alias_str: send_update = True content.pop("alias", "") # Filter the alt_aliases property for the removed alias. Note that the # value is not modified if alt_aliases is of an unexpected form. alt_aliases = content.get("alt_aliases") if isinstance(alt_aliases, (list, tuple)) and alias_str in alt_aliases: send_update = True alt_aliases = [alias for alias in alt_aliases if alias != alias_str] if alt_aliases: content["alt_aliases"] = alt_aliases else: del content["alt_aliases"] if send_update: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.CanonicalAlias, "state_key": "", "room_id": room_id, "sender": user_id, "content": content, }, ratelimit=False, ) async def get_association_from_room_alias( self, room_alias: RoomAlias ) -> Optional[RoomAliasMapping]: result = await self.store.get_association_from_room_alias(room_alias) if not result: # Query AS to see if it exists as_handler = self.appservice_handler result = await as_handler.query_room_alias_exists(room_alias) return result def can_modify_alias(self, alias: RoomAlias, user_id: Optional[str] = None) -> bool: # Any application service "interested" in an alias they are regexing on # can modify the alias. # Users can only modify the alias if ALL the interested services have # non-exclusive locks on the alias (or there are no interested services) services = self.store.get_app_services() interested_services = [ s for s in services if s.is_room_alias_in_namespace(alias.to_string()) ] for service in interested_services: if user_id == service.sender: # this user IS the app service so they can do whatever they like return True elif service.is_exclusive_alias(alias.to_string()): # another service has an exclusive lock on this alias. return False # either no interested services, or no service with an exclusive lock return True async def _user_can_delete_alias( self, alias: RoomAlias, requester: Requester ) -> bool: """Determine whether a user can delete an alias. One of the following must be true: 1. The user created the alias. 2. The user is a server administrator. 3. The user has a power-level sufficient to send a canonical alias event for the current room. """ creator = await self.store.get_room_alias_creator(alias.to_string()) if creator == requester.user.to_string(): return True # Resolve the alias to the corresponding room. room_mapping = await self.get_association(alias) room_id = room_mapping["room_id"] if not room_id: return False return await self.auth.check_can_change_room_list(room_id, requester) async def edit_published_room_list( self, requester: Requester, room_id: str, visibility: Literal["public", "private"], ) -> None: """Edit the entry of the room in the published room list. requester room_id visibility: "public" or "private" """ user_id = requester.user.to_string() spam_check = await self._spam_checker_module_callbacks.user_may_publish_room( user_id, room_id ) if spam_check != NOT_SPAM: raise AuthError( 403, "This user is not permitted to publish rooms to the room list", errcode=spam_check[0], additional_fields=spam_check[1], ) if requester.is_guest: raise AuthError(403, "Guests cannot edit the published room list") if visibility == "public" and not self.enable_room_list_search: # The room list has been disabled. raise AuthError( 403, "This user is not permitted to publish rooms to the room list" ) room = await self.store.get_room(room_id) if room is None: raise SynapseError(400, "Unknown room") can_change_room_list = await self.auth.check_can_change_room_list( room_id, requester ) if not can_change_room_list: raise AuthError( 403, "This server requires you to be a moderator in the room to" " edit its room list entry", ) making_public = visibility == "public" if making_public: room_aliases = await self.store.get_aliases_for_room(room_id) canonical_alias = ( await self._storage_controllers.state.get_canonical_alias_for_room( room_id ) ) if canonical_alias: # Ensure we do not mutate room_aliases. room_aliases = list(room_aliases) + [canonical_alias] if not self.config.roomdirectory.is_publishing_room_allowed( user_id, room_id, room_aliases ): # Let's just return a generic message, as there may be all sorts of # reasons why we said no. TODO: Allow configurable error messages # per alias creation rule? raise SynapseError(403, "Not allowed to publish room") # Check if publishing is blocked by a third party module allowed_by_third_party_rules = ( await ( self._third_party_event_rules.check_visibility_can_be_modified( room_id, visibility ) ) ) if not allowed_by_third_party_rules: raise SynapseError(403, "Not allowed to publish room") await self.store.set_room_is_public(room_id, making_public) async def edit_published_appservice_room_list( self, appservice_id: str, network_id: str, room_id: str, visibility: Literal["public", "private"], ) -> None: """Add or remove a room from the appservice/network specific public room list. Args: appservice_id: ID of the appservice that owns the list network_id: The ID of the network the list is associated with room_id visibility: either "public" or "private" """ await self.store.set_room_is_public_appservice( room_id, appservice_id, network_id, visibility == "public" ) async def get_aliases_for_room( self, requester: Requester, room_id: str ) -> Sequence[str]: """ Get a list of the aliases that currently point to this room on this server """ # allow access to server admins and current members of the room is_admin = await self.auth.is_server_admin(requester) if not is_admin: await self.auth.check_user_in_room_or_world_readable(room_id, requester) return await self.store.get_aliases_for_room(room_id) synapse-1.100.0/synapse/handlers/e2e_keys.py000066400000000000000000002056761455622526000207240ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Mapping, Optional, Tuple import attr from canonicaljson import encode_canonical_json from signedjson.key import VerifyKey, decode_verify_key_bytes from signedjson.sign import SignatureVerifyException, verify_signed_json from unpaddedbase64 import decode_base64 from twisted.internet import defer from synapse.api.constants import EduTypes from synapse.api.errors import CodeMessageException, Codes, NotFoundError, SynapseError from synapse.handlers.device import DeviceHandler from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.logging.opentracing import log_kv, set_tag, tag_args, trace from synapse.types import ( JsonDict, JsonMapping, UserID, get_domain_from_id, get_verify_key_from_cross_signing_key, ) from synapse.util import json_decoder from synapse.util.async_helpers import Linearizer, concurrently_execute from synapse.util.cancellation import cancellable from synapse.util.retryutils import NotRetryingDestination if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class E2eKeysHandler: def __init__(self, hs: "HomeServer"): self.config = hs.config self.store = hs.get_datastores().main self.federation = hs.get_federation_client() self.device_handler = hs.get_device_handler() self._appservice_handler = hs.get_application_service_handler() self.is_mine = hs.is_mine self.clock = hs.get_clock() federation_registry = hs.get_federation_registry() is_master = hs.config.worker.worker_app is None if is_master: edu_updater = SigningKeyEduUpdater(hs) # Only register this edu handler on master as it requires writing # device updates to the db federation_registry.register_edu_handler( EduTypes.SIGNING_KEY_UPDATE, edu_updater.incoming_signing_key_update, ) # also handle the unstable version # FIXME: remove this when enough servers have upgraded federation_registry.register_edu_handler( EduTypes.UNSTABLE_SIGNING_KEY_UPDATE, edu_updater.incoming_signing_key_update, ) # doesn't really work as part of the generic query API, because the # query request requires an object POST, but we abuse the # "query handler" interface. federation_registry.register_query_handler( "client_keys", self.on_federation_query_client_keys ) # Limit the number of in-flight requests from a single device. self._query_devices_linearizer = Linearizer( name="query_devices", max_count=10, ) self._query_appservices_for_otks = ( hs.config.experimental.msc3983_appservice_otk_claims ) self._query_appservices_for_keys = ( hs.config.experimental.msc3984_appservice_key_query ) @trace @cancellable async def query_devices( self, query_body: JsonDict, timeout: int, from_user_id: str, from_device_id: Optional[str], ) -> JsonDict: """Handle a device key query from a client { "device_keys": { "": [""] } } -> { "device_keys": { "": { "": { ... } } } } Args: from_user_id: the user making the query. This is used when adding cross-signing signatures to limit what signatures users can see. from_device_id: the device making the query. This is used to limit the number of in-flight queries at a time. """ async with self._query_devices_linearizer.queue((from_user_id, from_device_id)): device_keys_query: Dict[str, List[str]] = query_body.get("device_keys", {}) # separate users by domain. # make a map from domain to user_id to device_ids local_query = {} remote_queries = {} for user_id, device_ids in device_keys_query.items(): # we use UserID.from_string to catch invalid user ids if self.is_mine(UserID.from_string(user_id)): local_query[user_id] = device_ids else: remote_queries[user_id] = device_ids set_tag("local_key_query", str(local_query)) set_tag("remote_key_query", str(remote_queries)) # First get local devices. # A map of destination -> failure response. failures: Dict[str, JsonDict] = {} results = {} if local_query: local_result = await self.query_local_devices(local_query) for user_id, keys in local_result.items(): if user_id in local_query: results[user_id] = keys # Get cached cross-signing keys cross_signing_keys = await self.get_cross_signing_keys_from_cache( device_keys_query, from_user_id ) # Now attempt to get any remote devices from our local cache. # A map of destination -> user ID -> device IDs. remote_queries_not_in_cache: Dict[str, Dict[str, Iterable[str]]] = {} if remote_queries: user_ids = set() user_and_device_ids: List[Tuple[str, str]] = [] for user_id, device_ids in remote_queries.items(): if device_ids: user_and_device_ids.extend( (user_id, device_id) for device_id in device_ids ) else: user_ids.add(user_id) ( user_ids_not_in_cache, remote_results, ) = await self.store.get_user_devices_from_cache( user_ids, user_and_device_ids ) # Check that the homeserver still shares a room with all cached users. # Note that this check may be slightly racy when a remote user leaves a # room after we have fetched their cached device list. In the worst case # we will do extra federation queries for devices that we had cached. cached_users = set(remote_results.keys()) valid_cached_users = ( await self.store.get_users_server_still_shares_room_with( remote_results.keys() ) ) invalid_cached_users = cached_users - valid_cached_users if invalid_cached_users: # Fix up results. If we get here, it means there was either a bug in # device list tracking, or we hit the race mentioned above. # TODO: In practice, this path is hit fairly often in existing # deployments when clients query the keys of departed remote # users. A background update to mark the appropriate device # lists as unsubscribed is needed. # https://github.com/matrix-org/synapse/issues/13651 # Note that this currently introduces a failure mode when clients # are trying to decrypt old messages from a remote user whose # homeserver is no longer available. We may want to consider falling # back to the cached data when we fail to retrieve a device list # over federation for such remote users. user_ids_not_in_cache.update(invalid_cached_users) for invalid_user_id in invalid_cached_users: remote_results.pop(invalid_user_id) for user_id, devices in remote_results.items(): user_devices = results.setdefault(user_id, {}) for device_id, device in devices.items(): keys = device.get("keys", None) device_display_name = device.get("device_display_name", None) if keys: result = dict(keys) unsigned = result.setdefault("unsigned", {}) if device_display_name: unsigned["device_display_name"] = device_display_name user_devices[device_id] = result # check for missing cross-signing keys. for user_id in remote_queries.keys(): cached_cross_master = user_id in cross_signing_keys["master_keys"] cached_cross_selfsigning = ( user_id in cross_signing_keys["self_signing_keys"] ) # check if we are missing only one of cross-signing master or # self-signing key, but the other one is cached. # as we need both, this will issue a federation request. # if we don't have any of the keys, either the user doesn't have # cross-signing set up, or the cached device list # is not (yet) updated. if cached_cross_master ^ cached_cross_selfsigning: user_ids_not_in_cache.add(user_id) # add those users to the list to fetch over federation. for user_id in user_ids_not_in_cache: domain = get_domain_from_id(user_id) r = remote_queries_not_in_cache.setdefault(domain, {}) r[user_id] = remote_queries[user_id] # Now fetch any devices that we don't have in our cache # TODO It might make sense to propagate cancellations into the # deferreds which are querying remote homeservers. logger.debug( "%d destinations to query devices for", len(remote_queries_not_in_cache) ) async def _query( destination_queries: Tuple[str, Dict[str, Iterable[str]]] ) -> None: destination, queries = destination_queries return await self._query_devices_for_destination( results, cross_signing_keys, failures, destination, queries, timeout, ) await concurrently_execute( _query, remote_queries_not_in_cache.items(), 10, delay_cancellation=True, ) return {"device_keys": results, "failures": failures, **cross_signing_keys} @trace async def _query_devices_for_destination( self, results: JsonDict, cross_signing_keys: JsonDict, failures: Dict[str, JsonDict], destination: str, destination_query: Dict[str, Iterable[str]], timeout: int, ) -> None: """This is called when we are querying the device list of a user on a remote homeserver and their device list is not in the device list cache. If we share a room with this user and we're not querying for specific user we will update the cache with their device list. Args: results: A map from user ID to their device keys, which gets updated with the newly fetched keys. cross_signing_keys: Map from user ID to their cross signing keys, which gets updated with the newly fetched keys. failures: Map of destinations to failures that have occurred while attempting to fetch keys. destination: The remote server to query destination_query: The query dict of devices to query the remote server for. timeout: The timeout for remote HTTP requests. """ # We first consider whether we wish to update the device list cache with # the users device list. We want to track a user's devices when the # authenticated user shares a room with the queried user and the query # has not specified a particular device. # If we update the cache for the queried user we remove them from further # queries. We use the more efficient batched query_client_keys for all # remaining users user_ids_updated = [] # Perform a user device resync for each user only once and only as long as: # - they have an empty device_list # - they are in some rooms that this server can see users_to_resync_devices = { user_id for (user_id, device_list) in destination_query.items() if (not device_list) and (await self.store.get_rooms_for_user(user_id)) } logger.debug( "%d users to resync devices for from destination %s", len(users_to_resync_devices), destination, ) try: user_resync_results = ( await self.device_handler.device_list_updater.multi_user_device_resync( list(users_to_resync_devices) ) ) for user_id in users_to_resync_devices: resync_results = user_resync_results[user_id] if resync_results is None: # TODO: It's weird that we'll store a failure against a # destination, yet continue processing users from that # destination. # We might want to consider changing this, but for now # I'm leaving it as I found it. failures[destination] = _exception_to_failure( ValueError(f"Device resync failed for {user_id!r}") ) continue # Add the device keys to the results. user_devices = resync_results["devices"] user_results = results.setdefault(user_id, {}) for device in user_devices: user_results[device["device_id"]] = device["keys"] user_ids_updated.append(user_id) # Add any cross signing keys to the results. master_key = resync_results.get("master_key") self_signing_key = resync_results.get("self_signing_key") if master_key: cross_signing_keys["master_keys"][user_id] = master_key if self_signing_key: cross_signing_keys["self_signing_keys"][user_id] = self_signing_key except Exception as e: failures[destination] = _exception_to_failure(e) if len(destination_query) == len(user_ids_updated): # We've updated all the users in the query and we do not need to # make any further remote calls. return # Remove all the users from the query which we have updated for user_id in user_ids_updated: destination_query.pop(user_id) try: remote_result = await self.federation.query_client_keys( destination, {"device_keys": destination_query}, timeout=timeout ) for user_id, keys in remote_result["device_keys"].items(): if user_id in destination_query: results[user_id] = keys if "master_keys" in remote_result: for user_id, key in remote_result["master_keys"].items(): if user_id in destination_query: cross_signing_keys["master_keys"][user_id] = key if "self_signing_keys" in remote_result: for user_id, key in remote_result["self_signing_keys"].items(): if user_id in destination_query: cross_signing_keys["self_signing_keys"][user_id] = key except Exception as e: failure = _exception_to_failure(e) failures[destination] = failure set_tag("error", True) set_tag("reason", str(failure)) return @cancellable async def get_cross_signing_keys_from_cache( self, query: Iterable[str], from_user_id: Optional[str] ) -> Dict[str, Dict[str, JsonMapping]]: """Get cross-signing keys for users from the database Args: query: an iterable of user IDs. A dict whose keys are user IDs satisfies this, so the query format used for query_devices can be used here. from_user_id: the user making the query. This is used when adding cross-signing signatures to limit what signatures users can see. Returns: A map from (master_keys|self_signing_keys|user_signing_keys) -> user_id -> key """ master_keys = {} self_signing_keys = {} user_signing_keys = {} user_ids = list(query) keys = await self.store.get_e2e_cross_signing_keys_bulk(user_ids, from_user_id) for user_id, user_info in keys.items(): if user_info is None: continue if "master" in user_info: master_keys[user_id] = user_info["master"] if "self_signing" in user_info: self_signing_keys[user_id] = user_info["self_signing"] # users can see other users' master and self-signing keys, but can # only see their own user-signing keys if from_user_id: from_user_key = keys.get(from_user_id) if from_user_key and "user_signing" in from_user_key: user_signing_keys[from_user_id] = from_user_key["user_signing"] return { "master_keys": master_keys, "self_signing_keys": self_signing_keys, "user_signing_keys": user_signing_keys, } @trace @cancellable async def query_local_devices( self, query: Mapping[str, Optional[List[str]]], include_displaynames: bool = True, ) -> Dict[str, Dict[str, dict]]: """Get E2E device keys for local users Args: query: map from user_id to a list of devices to query (None for all devices) include_displaynames: Whether to include device displaynames in the returned device details. Returns: A map from user_id -> device_id -> device details """ set_tag("local_query", str(query)) local_query: List[Tuple[str, Optional[str]]] = [] result_dict: Dict[str, Dict[str, dict]] = {} for user_id, device_ids in query.items(): # we use UserID.from_string to catch invalid user ids if not self.is_mine(UserID.from_string(user_id)): logger.warning("Request for keys for non-local user %s", user_id) log_kv( { "message": "Requested a local key for a user which" " was not local to the homeserver", "user_id": user_id, } ) set_tag("error", True) raise SynapseError(400, "Not a user here") if not device_ids: local_query.append((user_id, None)) else: for device_id in device_ids: local_query.append((user_id, device_id)) # make sure that each queried user appears in the result dict result_dict[user_id] = {} results = await self.store.get_e2e_device_keys_for_cs_api( local_query, include_displaynames ) # Check if the application services have any additional results. if self._query_appservices_for_keys: # Query the appservices for any keys. appservice_results = await self._appservice_handler.query_keys(query) # Merge results, overriding with what the appservice returned. for user_id, devices in appservice_results.get("device_keys", {}).items(): # Copy the appservice device info over the homeserver device info, but # don't completely overwrite it. results.setdefault(user_id, {}).update(devices) # TODO Handle cross-signing keys. # Build the result structure for user_id, device_keys in results.items(): for device_id, device_info in device_keys.items(): result_dict[user_id][device_id] = device_info log_kv(results) return result_dict async def on_federation_query_client_keys( self, query_body: Dict[str, Dict[str, Optional[List[str]]]] ) -> JsonDict: """Handle a device key query from a federated server: Handles the path: GET /_matrix/federation/v1/users/keys/query Args: query_body: The body of the query request. Should contain a key "device_keys" that map to a dictionary of user ID's -> list of device IDs. If the list of device IDs is empty, all devices of that user will be queried. Returns: A json dictionary containing the following: - device_keys: A dictionary containing the requested device information. - master_keys: An optional dictionary of user ID -> master cross-signing key info. - self_signing_key: An optional dictionary of user ID -> self-signing key info. """ device_keys_query: Dict[str, Optional[List[str]]] = query_body.get( "device_keys", {} ) if any( not self.is_mine(UserID.from_string(user_id)) for user_id in device_keys_query ): raise SynapseError(400, "User is not hosted on this homeserver") res = await self.query_local_devices( device_keys_query, include_displaynames=( self.config.federation.allow_device_name_lookup_over_federation ), ) # add in the cross-signing keys cross_signing_keys = await self.get_cross_signing_keys_from_cache( device_keys_query, None ) return {"device_keys": res, **cross_signing_keys} async def claim_local_one_time_keys( self, local_query: List[Tuple[str, str, str, int]], always_include_fallback_keys: bool, ) -> Iterable[Dict[str, Dict[str, Dict[str, JsonDict]]]]: """Claim one time keys for local users. 1. Attempt to claim OTKs from the database. 2. Ask application services if they provide OTKs. 3. Attempt to fetch fallback keys from the database. Args: local_query: An iterable of tuples of (user ID, device ID, algorithm). always_include_fallback_keys: True to always include fallback keys. Returns: An iterable of maps of user ID -> a map device ID -> a map of key ID -> JSON bytes. """ # Cap the number of OTKs that can be claimed at once to avoid abuse. local_query = [ (user_id, device_id, algorithm, min(count, 5)) for user_id, device_id, algorithm, count in local_query ] otk_results, not_found = await self.store.claim_e2e_one_time_keys(local_query) # If the application services have not provided any keys via the C-S # API, query it directly for one-time keys. if self._query_appservices_for_otks: # TODO Should this query for fallback keys of uploaded OTKs if # always_include_fallback_keys is True? The MSC is ambiguous. ( appservice_results, not_found, ) = await self._appservice_handler.claim_e2e_one_time_keys(not_found) else: appservice_results = {} # Calculate which user ID / device ID / algorithm tuples to get fallback # keys for. This can be either only missing results *or* all results # (which don't already have a fallback key). if always_include_fallback_keys: # Build the fallback query as any part of the original query where # the appservice didn't respond with a fallback key. fallback_query = [] # Iterate each item in the original query and search the results # from the appservice for that user ID / device ID. If it is found, # check if any of the keys match the requested algorithm & are a # fallback key. for user_id, device_id, algorithm, _count in local_query: # Check if the appservice responded for this query. as_result = appservice_results.get(user_id, {}).get(device_id, {}) found_otk = False for key_id, key_json in as_result.items(): if key_id.startswith(f"{algorithm}:"): # A OTK or fallback key was found for this query. found_otk = True # A fallback key was found for this query, no need to # query further. if key_json.get("fallback", False): break else: # No fallback key was found from appservices, query for it. # Only mark the fallback key as used if no OTK was found # (from either the database or appservices). mark_as_used = not found_otk and not any( key_id.startswith(f"{algorithm}:") for key_id in otk_results.get(user_id, {}) .get(device_id, {}) .keys() ) # Note that it doesn't make sense to request more than 1 fallback key # per (user_id, device_id, algorithm). fallback_query.append((user_id, device_id, algorithm, mark_as_used)) else: # All fallback keys get marked as used. fallback_query = [ # Note that it doesn't make sense to request more than 1 fallback key # per (user_id, device_id, algorithm). (user_id, device_id, algorithm, True) for user_id, device_id, algorithm, count in not_found ] # For each user that does not have a one-time keys available, see if # there is a fallback key. fallback_results = await self.store.claim_e2e_fallback_keys(fallback_query) # Return the results in order, each item from the input query should # only appear once in the combined list. return (otk_results, appservice_results, fallback_results) @trace async def claim_one_time_keys( self, query: Dict[str, Dict[str, Dict[str, int]]], user: UserID, timeout: Optional[int], always_include_fallback_keys: bool, ) -> JsonDict: """ Args: query: A chain of maps from (user_id, device_id, algorithm) to the requested number of keys to claim. user: The user who is claiming these keys. timeout: How long to wait for any federation key claim requests before giving up. always_include_fallback_keys: always include a fallback key for local users' devices, even if we managed to claim a one-time-key. Returns: a heterogeneous dict with two keys: one_time_keys: chain of maps user ID -> device ID -> key ID -> key. failures: map from remote destination to a JsonDict describing the error. """ local_query: List[Tuple[str, str, str, int]] = [] remote_queries: Dict[str, Dict[str, Dict[str, Dict[str, int]]]] = {} for user_id, one_time_keys in query.items(): # we use UserID.from_string to catch invalid user ids if self.is_mine(UserID.from_string(user_id)): for device_id, algorithms in one_time_keys.items(): for algorithm, count in algorithms.items(): local_query.append((user_id, device_id, algorithm, count)) else: domain = get_domain_from_id(user_id) remote_queries.setdefault(domain, {})[user_id] = one_time_keys set_tag("local_key_query", str(local_query)) set_tag("remote_key_query", str(remote_queries)) results = await self.claim_local_one_time_keys( local_query, always_include_fallback_keys ) # A map of user ID -> device ID -> key ID -> key. json_result: Dict[str, Dict[str, Dict[str, JsonDict]]] = {} for result in results: for user_id, device_keys in result.items(): for device_id, keys in device_keys.items(): for key_id, key in keys.items(): json_result.setdefault(user_id, {}).setdefault( device_id, {} ).update({key_id: key}) # Remote failures. failures: Dict[str, JsonDict] = {} @trace async def claim_client_keys(destination: str) -> None: set_tag("destination", destination) device_keys = remote_queries[destination] try: remote_result = await self.federation.claim_client_keys( user, destination, device_keys, timeout=timeout ) for user_id, keys in remote_result["one_time_keys"].items(): if user_id in device_keys: json_result[user_id] = keys except Exception as e: failure = _exception_to_failure(e) failures[destination] = failure set_tag("error", True) set_tag("reason", str(failure)) await make_deferred_yieldable( defer.gatherResults( [ run_in_background(claim_client_keys, destination) for destination in remote_queries ], consumeErrors=True, ) ) logger.info( "Claimed one-time-keys: %s", ",".join( ( "%s for %s:%s" % (key_id, user_id, device_id) for user_id, user_keys in json_result.items() for device_id, device_keys in user_keys.items() for key_id, _ in device_keys.items() ) ), ) log_kv({"one_time_keys": json_result, "failures": failures}) return {"one_time_keys": json_result, "failures": failures} @tag_args async def upload_keys_for_user( self, user_id: str, device_id: str, keys: JsonDict ) -> JsonDict: """ Args: user_id: user whose keys are being uploaded. device_id: device whose keys are being uploaded. keys: the body of a /keys/upload request. Returns a dictionary with one field: "one_time_keys": A mapping from algorithm to number of keys for that algorithm, including those previously persisted. """ # This can only be called from the main process. assert isinstance(self.device_handler, DeviceHandler) time_now = self.clock.time_msec() # TODO: Validate the JSON to make sure it has the right keys. device_keys = keys.get("device_keys", None) if device_keys: logger.info( "Updating device_keys for device %r for user %s at %d", device_id, user_id, time_now, ) log_kv( { "message": "Updating device_keys for user.", "user_id": user_id, "device_id": device_id, } ) # TODO: Sign the JSON with the server key changed = await self.store.set_e2e_device_keys( user_id, device_id, time_now, device_keys ) if changed: # Only notify about device updates *if* the keys actually changed await self.device_handler.notify_device_update(user_id, [device_id]) else: log_kv({"message": "Not updating device_keys for user", "user_id": user_id}) one_time_keys = keys.get("one_time_keys", None) if one_time_keys: log_kv( { "message": "Updating one_time_keys for device.", "user_id": user_id, "device_id": device_id, } ) await self._upload_one_time_keys_for_user( user_id, device_id, time_now, one_time_keys ) else: log_kv( {"message": "Did not update one_time_keys", "reason": "no keys given"} ) fallback_keys = keys.get("fallback_keys") or keys.get( "org.matrix.msc2732.fallback_keys" ) if fallback_keys and isinstance(fallback_keys, dict): log_kv( { "message": "Updating fallback_keys for device.", "user_id": user_id, "device_id": device_id, } ) await self.store.set_e2e_fallback_keys(user_id, device_id, fallback_keys) elif fallback_keys: log_kv({"message": "Did not update fallback_keys", "reason": "not a dict"}) else: log_kv( {"message": "Did not update fallback_keys", "reason": "no keys given"} ) # the device should have been registered already, but it may have been # deleted due to a race with a DELETE request. Or we may be using an # old access_token without an associated device_id. Either way, we # need to double-check the device is registered to avoid ending up with # keys without a corresponding device. await self.device_handler.check_device_registered(user_id, device_id) result = await self.store.count_e2e_one_time_keys(user_id, device_id) set_tag("one_time_key_counts", str(result)) return {"one_time_key_counts": result} async def _upload_one_time_keys_for_user( self, user_id: str, device_id: str, time_now: int, one_time_keys: JsonDict ) -> None: logger.info( "Adding one_time_keys %r for device %r for user %r at %d", one_time_keys.keys(), device_id, user_id, time_now, ) # make a list of (alg, id, key) tuples key_list = [] for key_id, key_obj in one_time_keys.items(): algorithm, key_id = key_id.split(":") key_list.append((algorithm, key_id, key_obj)) # First we check if we have already persisted any of the keys. existing_key_map = await self.store.get_e2e_one_time_keys( user_id, device_id, [k_id for _, k_id, _ in key_list] ) new_keys = [] # Keys that we need to insert. (alg, id, json) tuples. for algorithm, key_id, key in key_list: ex_json = existing_key_map.get((algorithm, key_id), None) if ex_json: if not _one_time_keys_match(ex_json, key): raise SynapseError( 400, ( "One time key %s:%s already exists. " "Old key: %s; new key: %r" ) % (algorithm, key_id, ex_json, key), ) else: new_keys.append( (algorithm, key_id, encode_canonical_json(key).decode("ascii")) ) log_kv({"message": "Inserting new one_time_keys.", "keys": new_keys}) await self.store.add_e2e_one_time_keys(user_id, device_id, time_now, new_keys) async def upload_signing_keys_for_user( self, user_id: str, keys: JsonDict ) -> JsonDict: """Upload signing keys for cross-signing Args: user_id: the user uploading the keys keys: the signing keys """ # This can only be called from the main process. assert isinstance(self.device_handler, DeviceHandler) # if a master key is uploaded, then check it. Otherwise, load the # stored master key, to check signatures on other keys if "master_key" in keys: master_key = keys["master_key"] _check_cross_signing_key(master_key, user_id, "master") else: master_key = await self.store.get_e2e_cross_signing_key(user_id, "master") # if there is no master key, then we can't do anything, because all the # other cross-signing keys need to be signed by the master key if not master_key: raise SynapseError(400, "No master key available", Codes.MISSING_PARAM) try: master_key_id, master_verify_key = get_verify_key_from_cross_signing_key( master_key ) except ValueError: if "master_key" in keys: # the invalid key came from the request raise SynapseError(400, "Invalid master key", Codes.INVALID_PARAM) else: # the invalid key came from the database logger.error("Invalid master key found for user %s", user_id) raise SynapseError(500, "Invalid master key") # for the other cross-signing keys, make sure that they have valid # signatures from the master key if "self_signing_key" in keys: self_signing_key = keys["self_signing_key"] _check_cross_signing_key( self_signing_key, user_id, "self_signing", master_verify_key ) if "user_signing_key" in keys: user_signing_key = keys["user_signing_key"] _check_cross_signing_key( user_signing_key, user_id, "user_signing", master_verify_key ) # if everything checks out, then store the keys and send notifications deviceids = [] if "master_key" in keys: await self.store.set_e2e_cross_signing_key(user_id, "master", master_key) deviceids.append(master_verify_key.version) if "self_signing_key" in keys: await self.store.set_e2e_cross_signing_key( user_id, "self_signing", self_signing_key ) try: deviceids.append( get_verify_key_from_cross_signing_key(self_signing_key)[1].version ) except ValueError: raise SynapseError(400, "Invalid self-signing key", Codes.INVALID_PARAM) if "user_signing_key" in keys: await self.store.set_e2e_cross_signing_key( user_id, "user_signing", user_signing_key ) # the signature stream matches the semantics that we want for # user-signing key updates: only the user themselves is notified of # their own user-signing key updates await self.device_handler.notify_user_signature_update(user_id, [user_id]) # master key and self-signing key updates match the semantics of device # list updates: all users who share an encrypted room are notified if len(deviceids): await self.device_handler.notify_device_update(user_id, deviceids) return {} async def upload_signatures_for_device_keys( self, user_id: str, signatures: JsonDict ) -> JsonDict: """Upload device signatures for cross-signing Args: user_id: the user uploading the signatures signatures: map of users to devices to signed keys. This is the submission from the user; an exception will be raised if it is malformed. Returns: The response to be sent back to the client. The response will have a "failures" key, which will be a dict mapping users to devices to errors for the signatures that failed. Raises: SynapseError: if the signatures dict is not valid. """ # This can only be called from the main process. assert isinstance(self.device_handler, DeviceHandler) failures = {} # signatures to be stored. Each item will be a SignatureListItem signature_list = [] # split between checking signatures for own user and signatures for # other users, since we verify them with different keys self_signatures = signatures.get(user_id, {}) other_signatures = {k: v for k, v in signatures.items() if k != user_id} self_signature_list, self_failures = await self._process_self_signatures( user_id, self_signatures ) signature_list.extend(self_signature_list) failures.update(self_failures) other_signature_list, other_failures = await self._process_other_signatures( user_id, other_signatures ) signature_list.extend(other_signature_list) failures.update(other_failures) # store the signature, and send the appropriate notifications for sync logger.debug("upload signature failures: %r", failures) await self.store.store_e2e_cross_signing_signatures(user_id, signature_list) self_device_ids = [item.target_device_id for item in self_signature_list] if self_device_ids: await self.device_handler.notify_device_update(user_id, self_device_ids) signed_users = [item.target_user_id for item in other_signature_list] if signed_users: await self.device_handler.notify_user_signature_update( user_id, signed_users ) return {"failures": failures} async def _process_self_signatures( self, user_id: str, signatures: JsonDict ) -> Tuple[List["SignatureListItem"], Dict[str, Dict[str, dict]]]: """Process uploaded signatures of the user's own keys. Signatures of the user's own keys from this API come in two forms: - signatures of the user's devices by the user's self-signing key, - signatures of the user's master key by the user's devices. Args: user_id: the user uploading the keys signatures (dict[string, dict]): map of devices to signed keys Returns: A tuple of a list of signatures to store, and a map of users to devices to failure reasons Raises: SynapseError: if the input is malformed """ signature_list: List["SignatureListItem"] = [] failures: Dict[str, Dict[str, JsonDict]] = {} if not signatures: return signature_list, failures if not isinstance(signatures, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) try: # get our self-signing key to verify the signatures ( _, self_signing_key_id, self_signing_verify_key, ) = await self._get_e2e_cross_signing_verify_key(user_id, "self_signing") # get our master key, since we may have received a signature of it. # We need to fetch it here so that we know what its key ID is, so # that we can check if a signature that was sent is a signature of # the master key or of a device ( master_key, _, master_verify_key, ) = await self._get_e2e_cross_signing_verify_key(user_id, "master") # fetch our stored devices. This is used to 1. verify # signatures on the master key, and 2. to compare with what # was sent if the device was signed devices = await self.store.get_e2e_device_keys_for_cs_api([(user_id, None)]) if user_id not in devices: raise NotFoundError("No device keys found") devices = devices[user_id] except SynapseError as e: failure = _exception_to_failure(e) failures[user_id] = {device: failure for device in signatures.keys()} return signature_list, failures for device_id, device in signatures.items(): # make sure submitted data is in the right form if not isinstance(device, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) try: if "signatures" not in device or user_id not in device["signatures"]: # no signature was sent raise SynapseError( 400, "Invalid signature", Codes.INVALID_SIGNATURE ) if device_id == master_verify_key.version: # The signature is of the master key. This needs to be # handled differently from signatures of normal devices. master_key_signature_list = self._check_master_key_signature( user_id, device_id, device, master_key, devices ) signature_list.extend(master_key_signature_list) continue # at this point, we have a device that should be signed # by the self-signing key if self_signing_key_id not in device["signatures"][user_id]: # no signature was sent raise SynapseError( 400, "Invalid signature", Codes.INVALID_SIGNATURE ) try: stored_device = devices[device_id] except KeyError: raise NotFoundError("Unknown device") if self_signing_key_id in stored_device.get("signatures", {}).get( user_id, {} ): # we already have a signature on this device, so we # can skip it, since it should be exactly the same continue _check_device_signature( user_id, self_signing_verify_key, device, stored_device ) signature = device["signatures"][user_id][self_signing_key_id] signature_list.append( SignatureListItem( self_signing_key_id, user_id, device_id, signature ) ) except SynapseError as e: failures.setdefault(user_id, {})[device_id] = _exception_to_failure(e) return signature_list, failures def _check_master_key_signature( self, user_id: str, master_key_id: str, signed_master_key: JsonDict, stored_master_key: JsonMapping, devices: Dict[str, Dict[str, JsonDict]], ) -> List["SignatureListItem"]: """Check signatures of a user's master key made by their devices. Args: user_id: the user whose master key is being checked master_key_id: the ID of the user's master key signed_master_key: the user's signed master key that was uploaded stored_master_key: our previously-stored copy of the user's master key devices: the user's devices Returns: A list of signatures to store Raises: SynapseError: if a signature is invalid """ # for each device that signed the master key, check the signature. master_key_signature_list = [] sigs = signed_master_key["signatures"] for signing_key_id, signature in sigs[user_id].items(): _, signing_device_id = signing_key_id.split(":", 1) if ( signing_device_id not in devices or signing_key_id not in devices[signing_device_id]["keys"] ): # signed by an unknown device, or the # device does not have the key raise SynapseError(400, "Invalid signature", Codes.INVALID_SIGNATURE) # get the key and check the signature pubkey = devices[signing_device_id]["keys"][signing_key_id] verify_key = decode_verify_key_bytes(signing_key_id, decode_base64(pubkey)) _check_device_signature( user_id, verify_key, signed_master_key, stored_master_key ) master_key_signature_list.append( SignatureListItem(signing_key_id, user_id, master_key_id, signature) ) return master_key_signature_list async def _process_other_signatures( self, user_id: str, signatures: Dict[str, dict] ) -> Tuple[List["SignatureListItem"], Dict[str, Dict[str, dict]]]: """Process uploaded signatures of other users' keys. These will be the target user's master keys, signed by the uploading user's user-signing key. Args: user_id: the user uploading the keys signatures: map of users to devices to signed keys Returns: A list of signatures to store, and a map of users to devices to failure reasons Raises: SynapseError: if the input is malformed """ signature_list: List["SignatureListItem"] = [] failures: Dict[str, Dict[str, JsonDict]] = {} if not signatures: return signature_list, failures try: # get our user-signing key to verify the signatures ( user_signing_key, user_signing_key_id, user_signing_verify_key, ) = await self._get_e2e_cross_signing_verify_key(user_id, "user_signing") except SynapseError as e: failure = _exception_to_failure(e) for user, devicemap in signatures.items(): failures[user] = {device_id: failure for device_id in devicemap.keys()} return signature_list, failures for target_user, devicemap in signatures.items(): # make sure submitted data is in the right form if not isinstance(devicemap, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) for device in devicemap.values(): if not isinstance(device, dict): raise SynapseError(400, "Invalid parameter", Codes.INVALID_PARAM) device_id = None try: # get the target user's master key, to make sure it matches # what was sent ( master_key, master_key_id, _, ) = await self._get_e2e_cross_signing_verify_key( target_user, "master", user_id ) # make sure that the target user's master key is the one that # was signed (and no others) device_id = master_key_id.split(":", 1)[1] if device_id not in devicemap: logger.debug( "upload signature: could not find signature for device %s", device_id, ) # set device to None so that the failure gets # marked on all the signatures device_id = None raise NotFoundError("Unknown device") key = devicemap[device_id] other_devices = [k for k in devicemap.keys() if k != device_id] if other_devices: # other devices were signed -- mark those as failures logger.debug("upload signature: too many devices specified") failure = _exception_to_failure(NotFoundError("Unknown device")) failures[target_user] = { device: failure for device in other_devices } if user_signing_key_id in master_key.get("signatures", {}).get( user_id, {} ): # we already have the signature, so we can skip it continue _check_device_signature( user_id, user_signing_verify_key, key, master_key ) signature = key["signatures"][user_id][user_signing_key_id] signature_list.append( SignatureListItem( user_signing_key_id, target_user, device_id, signature ) ) except SynapseError as e: failure = _exception_to_failure(e) if device_id is None: failures[target_user] = { device_id: failure for device_id in devicemap.keys() } else: failures.setdefault(target_user, {})[device_id] = failure return signature_list, failures async def _get_e2e_cross_signing_verify_key( self, user_id: str, key_type: str, from_user_id: Optional[str] = None ) -> Tuple[JsonMapping, str, VerifyKey]: """Fetch locally or remotely query for a cross-signing public key. First, attempt to fetch the cross-signing public key from storage. If that fails, query the keys from the homeserver they belong to and update our local copy. Args: user_id: the user whose key should be fetched key_type: the type of key to fetch from_user_id: the user that we are fetching the keys for. This affects what signatures are fetched. Returns: The raw key data, the key ID, and the signedjson verify key Raises: NotFoundError: if the key is not found SynapseError: if `user_id` is invalid """ user = UserID.from_string(user_id) key = await self.store.get_e2e_cross_signing_key( user_id, key_type, from_user_id ) if key: # We found a copy of this key in our database. Decode and return it key_id, verify_key = get_verify_key_from_cross_signing_key(key) return key, key_id, verify_key # If we couldn't find the key locally, and we're looking for keys of # another user then attempt to fetch the missing key from the remote # user's server. # # We may run into this in possible edge cases where a user tries to # cross-sign a remote user, but does not share any rooms with them yet. # Thus, we would not have their key list yet. We instead fetch the key, # store it and notify clients of new, associated device IDs. if self.is_mine(user) or key_type not in ["master", "self_signing"]: # Note that master and self_signing keys are the only cross-signing keys we # can request over federation raise NotFoundError("No %s key found for %s" % (key_type, user_id)) cross_signing_keys = await self._retrieve_cross_signing_keys_for_remote_user( user, key_type ) if cross_signing_keys is None: raise NotFoundError("No %s key found for %s" % (key_type, user_id)) return cross_signing_keys async def _retrieve_cross_signing_keys_for_remote_user( self, user: UserID, desired_key_type: str, ) -> Optional[Tuple[JsonMapping, str, VerifyKey]]: """Queries cross-signing keys for a remote user and saves them to the database Only the key specified by `key_type` will be returned, while all retrieved keys will be saved regardless Args: user: The user to query remote keys for desired_key_type: The type of key to receive. One of "master", "self_signing" Returns: A tuple of the retrieved key content, the key's ID and the matching VerifyKey. If the key cannot be retrieved, all values in the tuple will instead be None. """ # This can only be called from the main process. assert isinstance(self.device_handler, DeviceHandler) try: remote_result = await self.federation.query_user_devices( user.domain, user.to_string() ) except Exception as e: logger.warning( "Unable to query %s for cross-signing keys of user %s: %s %s", user.domain, user.to_string(), type(e), e, ) return None # Process each of the retrieved cross-signing keys desired_key_data = None retrieved_device_ids = [] for key_type in ["master", "self_signing"]: key_content = remote_result.get(key_type + "_key") if not key_content: continue # Ensure these keys belong to the correct user if "user_id" not in key_content: logger.warning( "Invalid %s key retrieved, missing user_id field: %s", key_type, key_content, ) continue if user.to_string() != key_content["user_id"]: logger.warning( "Found %s key of user %s when querying for keys of user %s", key_type, key_content["user_id"], user.to_string(), ) continue # Validate the key contents try: # verify_key is a VerifyKey from signedjson, which uses # .version to denote the portion of the key ID after the # algorithm and colon, which is the device ID key_id, verify_key = get_verify_key_from_cross_signing_key(key_content) except ValueError as e: logger.warning( "Invalid %s key retrieved: %s - %s %s", key_type, key_content, type(e), e, ) continue # Note down the device ID attached to this key retrieved_device_ids.append(verify_key.version) # If this is the desired key type, save it and its ID/VerifyKey if key_type == desired_key_type: desired_key_data = key_content, key_id, verify_key # At the same time, store this key in the db for subsequent queries await self.store.set_e2e_cross_signing_key( user.to_string(), key_type, key_content ) # Notify clients that new devices for this user have been discovered if retrieved_device_ids: # XXX is this necessary? await self.device_handler.notify_device_update( user.to_string(), retrieved_device_ids ) return desired_key_data async def check_cross_signing_setup(self, user_id: str) -> Tuple[bool, bool]: """Checks if the user has cross-signing set up Args: user_id: The user to check Returns: a 2-tuple of booleans - whether the user has cross-signing set up, and - whether the user's master cross-signing key may be replaced without UIA. """ ( exists, ts_replacable_without_uia_before, ) = await self.store.get_master_cross_signing_key_updatable_before(user_id) if ts_replacable_without_uia_before is None: return exists, False else: return exists, self.clock.time_msec() < ts_replacable_without_uia_before def _check_cross_signing_key( key: JsonDict, user_id: str, key_type: str, signing_key: Optional[VerifyKey] = None ) -> None: """Check a cross-signing key uploaded by a user. Performs some basic sanity checking, and ensures that it is signed, if a signature is required. Args: key: the key data to verify user_id: the user whose key is being checked key_type: the type of key that the key should be signing_key: the signing key that the key should be signed with. If omitted, signatures will not be checked. """ if ( key.get("user_id") != user_id or key_type not in key.get("usage", []) or len(key.get("keys", {})) != 1 ): raise SynapseError(400, ("Invalid %s key" % (key_type,)), Codes.INVALID_PARAM) if signing_key: try: verify_signed_json(key, user_id, signing_key) except SignatureVerifyException: raise SynapseError( 400, ("Invalid signature on %s key" % key_type), Codes.INVALID_SIGNATURE ) def _check_device_signature( user_id: str, verify_key: VerifyKey, signed_device: JsonDict, stored_device: JsonMapping, ) -> None: """Check that a signature on a device or cross-signing key is correct and matches the copy of the device/key that we have stored. Throws an exception if an error is detected. Args: user_id: the user ID whose signature is being checked verify_key: the key to verify the device with signed_device: the uploaded signed device data stored_device: our previously stored copy of the device Raises: SynapseError: if the signature was invalid or the sent device is not the same as the stored device """ # make sure that the device submitted matches what we have stored stripped_signed_device = { k: v for k, v in signed_device.items() if k not in ["signatures", "unsigned"] } stripped_stored_device = { k: v for k, v in stored_device.items() if k not in ["signatures", "unsigned"] } if stripped_signed_device != stripped_stored_device: logger.debug( "upload signatures: key does not match %s vs %s", signed_device, stored_device, ) raise SynapseError(400, "Key does not match") try: verify_signed_json(signed_device, user_id, verify_key) except SignatureVerifyException: logger.debug("invalid signature on key") raise SynapseError(400, "Invalid signature", Codes.INVALID_SIGNATURE) def _exception_to_failure(e: Exception) -> JsonDict: if isinstance(e, SynapseError): return {"status": e.code, "errcode": e.errcode, "message": str(e)} if isinstance(e, CodeMessageException): return {"status": e.code, "message": str(e)} if isinstance(e, NotRetryingDestination): return {"status": 503, "message": "Not ready for retry"} # include ConnectionRefused and other errors # # Note that some Exceptions (notably twisted's ResponseFailed etc) don't # give a string for e.message, which json then fails to serialize. return {"status": 503, "message": str(e)} def _one_time_keys_match(old_key_json: str, new_key: JsonDict) -> bool: old_key = json_decoder.decode(old_key_json) # if either is a string rather than an object, they must match exactly if not isinstance(old_key, dict) or not isinstance(new_key, dict): return old_key == new_key # otherwise, we strip off the 'signatures' if any, because it's legitimate # for different upload attempts to have different signatures. old_key.pop("signatures", None) new_key_copy = dict(new_key) new_key_copy.pop("signatures", None) return old_key == new_key_copy @attr.s(slots=True, auto_attribs=True) class SignatureListItem: """An item in the signature list as used by upload_signatures_for_device_keys.""" signing_key_id: str target_user_id: str target_device_id: str signature: JsonDict class SigningKeyEduUpdater: """Handles incoming signing key updates from federation and updates the DB""" def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.federation = hs.get_federation_client() self.clock = hs.get_clock() device_handler = hs.get_device_handler() assert isinstance(device_handler, DeviceHandler) self._device_handler = device_handler self._remote_edu_linearizer = Linearizer(name="remote_signing_key") # user_id -> list of updates waiting to be handled. self._pending_updates: Dict[str, List[Tuple[JsonDict, JsonDict]]] = {} async def incoming_signing_key_update( self, origin: str, edu_content: JsonDict ) -> None: """Called on incoming signing key update from federation. Responsible for parsing the EDU and adding to pending updates list. Args: origin: the server that sent the EDU edu_content: the contents of the EDU """ user_id = edu_content.pop("user_id") master_key = edu_content.pop("master_key", None) self_signing_key = edu_content.pop("self_signing_key", None) if get_domain_from_id(user_id) != origin: logger.warning("Got signing key update edu for %r from %r", user_id, origin) return room_ids = await self.store.get_rooms_for_user(user_id) if not room_ids: # We don't share any rooms with this user. Ignore update, as we # probably won't get any further updates. return self._pending_updates.setdefault(user_id, []).append( (master_key, self_signing_key) ) await self._handle_signing_key_updates(user_id) async def _handle_signing_key_updates(self, user_id: str) -> None: """Actually handle pending updates. Args: user_id: the user whose updates we are processing """ async with self._remote_edu_linearizer.queue(user_id): pending_updates = self._pending_updates.pop(user_id, []) if not pending_updates: # This can happen since we batch updates return device_ids: List[str] = [] logger.info("pending updates: %r", pending_updates) for master_key, self_signing_key in pending_updates: new_device_ids = await self._device_handler.device_list_updater.process_cross_signing_key_update( user_id, master_key, self_signing_key, ) device_ids = device_ids + new_device_ids await self._device_handler.notify_device_update(user_id, device_ids) synapse-1.100.0/synapse/handlers/e2e_room_keys.py000066400000000000000000000415331455622526000217460ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Dict, Optional, cast from typing_extensions import Literal from synapse.api.errors import ( Codes, NotFoundError, RoomKeysVersionError, StoreError, SynapseError, ) from synapse.logging.opentracing import log_kv, trace from synapse.storage.databases.main.e2e_room_keys import RoomKey from synapse.types import JsonDict from synapse.util.async_helpers import Linearizer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class E2eRoomKeysHandler: """ Implements an optional realtime backup mechanism for encrypted E2E megolm room keys. This gives a way for users to store and recover their megolm keys if they lose all their clients. It should also extend easily to future room key mechanisms. The actual payload of the encrypted keys is completely opaque to the handler. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main # Used to lock whenever a client is uploading key data. This prevents collisions # between clients trying to upload the details of a new session, given all # clients belonging to a user will receive and try to upload a new session at # roughly the same time. Also used to lock out uploads when the key is being # changed. self._upload_linearizer = Linearizer("upload_room_keys_lock") @trace async def get_room_keys( self, user_id: str, version: str, room_id: Optional[str] = None, session_id: Optional[str] = None, ) -> Dict[ Literal["rooms"], Dict[str, Dict[Literal["sessions"], Dict[str, RoomKey]]] ]: """Bulk get the E2E room keys for a given backup, optionally filtered to a given room, or a given session. See EndToEndRoomKeyStore.get_e2e_room_keys for full details. Args: user_id: the user whose keys we're getting version: the version ID of the backup we're getting keys from room_id: room ID to get keys for, for None to get keys for all rooms session_id: session ID to get keys for, for None to get keys for all sessions Raises: NotFoundError: if the backup version does not exist Returns: A dict giving the session_data and message metadata for these room keys. `{"rooms": {room_id: {"sessions": {session_id: room_key}}}}` """ # we deliberately take the lock to get keys so that changing the version # works atomically async with self._upload_linearizer.queue(user_id): # make sure the backup version exists try: await self.store.get_e2e_room_keys_version_info(user_id, version) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise results = await self.store.get_e2e_room_keys( user_id, version, room_id, session_id ) log_kv(cast(JsonDict, results)) return results @trace async def delete_room_keys( self, user_id: str, version: str, room_id: Optional[str] = None, session_id: Optional[str] = None, ) -> JsonDict: """Bulk delete the E2E room keys for a given backup, optionally filtered to a given room or a given session. See EndToEndRoomKeyStore.delete_e2e_room_keys for full details. Args: user_id: the user whose backup we're deleting version: the version ID of the backup we're deleting room_id: room ID to delete keys for, for None to delete keys for all rooms session_id: session ID to delete keys for, for None to delete keys for all sessions Raises: NotFoundError: if the backup version does not exist Returns: A dict containing the count and etag for the backup version """ # lock for consistency with uploading async with self._upload_linearizer.queue(user_id): # make sure the backup version exists try: version_info = await self.store.get_e2e_room_keys_version_info( user_id, version ) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise await self.store.delete_e2e_room_keys(user_id, version, room_id, session_id) version_etag = version_info["etag"] + 1 await self.store.update_e2e_room_keys_version( user_id, version, None, version_etag ) count = await self.store.count_e2e_room_keys(user_id, version) return {"etag": str(version_etag), "count": count} @trace async def upload_room_keys( self, user_id: str, version: str, room_keys: JsonDict ) -> JsonDict: """Bulk upload a list of room keys into a given backup version, asserting that the given version is the current backup version. room_keys are merged into the current backup as described in RoomKeysServlet.on_PUT(). Args: user_id: the user whose backup we're setting version: the version ID of the backup we're updating room_keys: a nested dict describing the room_keys we're setting: { "rooms": { "!abc:matrix.org": { "sessions": { "c0ff33": { "first_message_index": 1, "forwarded_count": 1, "is_verified": false, "session_data": "SSBBTSBBIEZJU0gK" } } } } } Returns: A dict containing the count and etag for the backup version Raises: NotFoundError: if there are no versions defined RoomKeysVersionError: if the uploaded version is not the current version """ # TODO: Validate the JSON to make sure it has the right keys. # XXX: perhaps we should use a finer grained lock here? async with self._upload_linearizer.queue(user_id): # Check that the version we're trying to upload is the current version try: version_info = await self.store.get_e2e_room_keys_version_info(user_id) except StoreError as e: if e.code == 404: raise NotFoundError("Version '%s' not found" % (version,)) else: raise if version_info["version"] != version: # Check that the version we're trying to upload actually exists try: version_info = await self.store.get_e2e_room_keys_version_info( user_id, version ) # if we get this far, the version must exist raise RoomKeysVersionError(current_version=version_info["version"]) except StoreError as e: if e.code == 404: raise NotFoundError("Version '%s' not found" % (version,)) else: raise # Fetch any existing room keys for the sessions that have been # submitted. Then compare them with the submitted keys. If the # key is new, insert it; if the key should be updated, then update # it; otherwise, drop it. existing_keys = await self.store.get_e2e_room_keys_multi( user_id, version, room_keys["rooms"] ) to_insert = [] # batch the inserts together changed = False # if anything has changed, we need to update the etag for room_id, room in room_keys["rooms"].items(): for session_id, room_key in room["sessions"].items(): if not isinstance(room_key["is_verified"], bool): msg = ( "is_verified must be a boolean in keys for session %s in" "room %s" % (session_id, room_id) ) raise SynapseError(400, msg, Codes.INVALID_PARAM) log_kv( { "message": "Trying to upload room key", "room_id": room_id, "session_id": session_id, "user_id": user_id, } ) current_room_key = existing_keys.get(room_id, {}).get(session_id) if current_room_key: if self._should_replace_room_key(current_room_key, room_key): log_kv({"message": "Replacing room key."}) # updates are done one at a time in the DB, so send # updates right away rather than batching them up, # like we do with the inserts await self.store.update_e2e_room_key( user_id, version, room_id, session_id, room_key ) changed = True else: log_kv({"message": "Not replacing room_key."}) else: log_kv( { "message": "Room key not found.", "room_id": room_id, "user_id": user_id, } ) log_kv({"message": "Replacing room key."}) to_insert.append((room_id, session_id, room_key)) changed = True if len(to_insert): await self.store.add_e2e_room_keys(user_id, version, to_insert) version_etag = version_info["etag"] if changed: version_etag = version_etag + 1 await self.store.update_e2e_room_keys_version( user_id, version, None, version_etag ) count = await self.store.count_e2e_room_keys(user_id, version) return {"etag": str(version_etag), "count": count} @staticmethod def _should_replace_room_key( current_room_key: Optional[RoomKey], room_key: RoomKey ) -> bool: """ Determine whether to replace a given current_room_key (if any) with a newly uploaded room_key backup Args: current_room_key: Optional, the current room_key dict if any room_key : The new room_key dict which may or may not be fit to replace the current_room_key Returns: True if current_room_key should be replaced by room_key in the backup """ if current_room_key: # spelt out with if/elifs rather than nested boolean expressions # purely for legibility. if room_key["is_verified"] and not current_room_key["is_verified"]: return True elif ( room_key["first_message_index"] < current_room_key["first_message_index"] ): return True elif room_key["forwarded_count"] < current_room_key["forwarded_count"]: return True else: return False return True @trace async def create_version(self, user_id: str, version_info: JsonDict) -> str: """Create a new backup version. This automatically becomes the new backup version for the user's keys; previous backups will no longer be writeable to. Args: user_id: the user whose backup version we're creating version_info: metadata about the new version being created { "algorithm": "m.megolm_backup.v1", "auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K" } Returns: The new version number. """ # TODO: Validate the JSON to make sure it has the right keys. # lock everyone out until we've switched version async with self._upload_linearizer.queue(user_id): new_version = await self.store.create_e2e_room_keys_version( user_id, version_info ) return new_version async def get_version_info( self, user_id: str, version: Optional[str] = None ) -> JsonDict: """Get the info about a given version of the user's backup Args: user_id: the user whose current backup version we're querying version: Optional; if None gives the most recent version otherwise a historical one. Raises: NotFoundError: if the requested backup version doesn't exist Returns: A info dict that gives the info about the new version. { "version": "1234", "algorithm": "m.megolm_backup.v1", "auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K" } """ async with self._upload_linearizer.queue(user_id): try: res = await self.store.get_e2e_room_keys_version_info(user_id, version) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise res["count"] = await self.store.count_e2e_room_keys(user_id, res["version"]) res["etag"] = str(res["etag"]) return res @trace async def delete_version(self, user_id: str, version: Optional[str] = None) -> None: """Deletes a given version of the user's e2e_room_keys backup Args: user_id: the user whose current backup version we're deleting version: Optional. the version ID of the backup version we're deleting If missing, we delete the current backup version info. Raises: NotFoundError: if this backup version doesn't exist """ async with self._upload_linearizer.queue(user_id): try: await self.store.delete_e2e_room_keys_version(user_id, version) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise @trace async def update_version( self, user_id: str, version: str, version_info: JsonDict ) -> JsonDict: """Update the info about a given version of the user's backup Args: user_id: the user whose current backup version we're updating version: the backup version we're updating version_info: the new information about the backup Raises: NotFoundError: if the requested backup version doesn't exist Returns: An empty dict. """ if "version" not in version_info: version_info["version"] = version elif version_info["version"] != version: raise SynapseError( 400, "Version in body does not match", Codes.INVALID_PARAM ) async with self._upload_linearizer.queue(user_id): try: old_info = await self.store.get_e2e_room_keys_version_info( user_id, version ) except StoreError as e: if e.code == 404: raise NotFoundError("Unknown backup version") else: raise if old_info["algorithm"] != version_info["algorithm"]: raise SynapseError(400, "Algorithm does not match", Codes.INVALID_PARAM) await self.store.update_e2e_room_keys_version( user_id, version, version_info ) return {} synapse-1.100.0/synapse/handlers/event_auth.py000066400000000000000000000337431455622526000213520ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, List, Mapping, Optional, Union from synapse import event_auth from synapse.api.constants import ( EventTypes, JoinRules, Membership, RestrictedJoinRuleTypes, ) from synapse.api.errors import AuthError, Codes, SynapseError from synapse.api.room_versions import RoomVersion from synapse.event_auth import ( check_state_dependent_auth_rules, check_state_independent_auth_rules, ) from synapse.events import EventBase from synapse.events.builder import EventBuilder from synapse.types import StateMap, StrCollection if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EventAuthHandler: """ This class contains methods for authenticating events added to room graphs. """ def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self._store = hs.get_datastores().main self._state_storage_controller = hs.get_storage_controllers().state self._server_name = hs.hostname self._is_mine_id = hs.is_mine_id async def check_auth_rules_from_context( self, event: EventBase, batched_auth_events: Optional[Mapping[str, EventBase]] = None, ) -> None: """Check an event passes the auth rules at its own auth events Args: event: event to be authed batched_auth_events: if the event being authed is part of a batch, any events from the same batch that may be necessary to auth the current event """ await check_state_independent_auth_rules( self._store, event, batched_auth_events ) auth_event_ids = event.auth_event_ids() if batched_auth_events: # Copy the batched auth events to avoid mutating them. auth_events_by_id = dict(batched_auth_events) needed_auth_event_ids = set(auth_event_ids) - set(batched_auth_events) if needed_auth_event_ids: auth_events_by_id.update( await self._store.get_events(needed_auth_event_ids) ) else: auth_events_by_id = await self._store.get_events(auth_event_ids) check_state_dependent_auth_rules(event, auth_events_by_id.values()) def compute_auth_events( self, event: Union[EventBase, EventBuilder], current_state_ids: StateMap[str], for_verification: bool = False, ) -> List[str]: """Given an event and current state return the list of event IDs used to auth an event. If `for_verification` is False then only return auth events that should be added to the event's `auth_events`. Returns: List of event IDs. """ if event.type == EventTypes.Create: return [] # Currently we ignore the `for_verification` flag even though there are # some situations where we can drop particular auth events when adding # to the event's `auth_events` (e.g. joins pointing to previous joins # when room is publicly joinable). Dropping event IDs has the # advantage that the auth chain for the room grows slower, but we use # the auth chain in state resolution v2 to order events, which means # care must be taken if dropping events to ensure that it doesn't # introduce undesirable "state reset" behaviour. # # All of which sounds a bit tricky so we don't bother for now. auth_ids = [] for etype, state_key in event_auth.auth_types_for_event( event.room_version, event ): auth_ev_id = current_state_ids.get((etype, state_key)) if auth_ev_id: auth_ids.append(auth_ev_id) return auth_ids async def get_user_which_could_invite( self, room_id: str, current_state_ids: StateMap[str] ) -> str: """ Searches the room state for a local user who has the power level necessary to invite other users. Args: room_id: The room ID under search. current_state_ids: The current state of the room. Returns: The MXID of the user which could issue an invite. Raises: SynapseError if no appropriate user is found. """ power_level_event_id = current_state_ids.get((EventTypes.PowerLevels, "")) invite_level = 0 users_default_level = 0 if power_level_event_id: power_level_event = await self._store.get_event(power_level_event_id) invite_level = power_level_event.content.get("invite", invite_level) users_default_level = power_level_event.content.get( "users_default", users_default_level ) users = power_level_event.content.get("users", {}) else: users = {} # Find the user with the highest power level (only interested in local # users). local_users_in_room = await self._store.get_local_users_in_room(room_id) chosen_user = max( local_users_in_room, key=lambda user: users.get(user, users_default_level), default=None, ) # Return the chosen if they can issue invites. user_power_level = users.get(chosen_user, users_default_level) if chosen_user and user_power_level >= invite_level: logger.debug( "Found a user who can issue invites %s with power level %d >= invite level %d", chosen_user, user_power_level, invite_level, ) return chosen_user # No user was found. raise SynapseError( 400, "Unable to find a user which could issue an invite", Codes.UNABLE_TO_GRANT_JOIN, ) async def is_host_in_room(self, room_id: str, host: str) -> bool: return await self._store.is_host_joined(room_id, host) async def assert_host_in_room( self, room_id: str, host: str, allow_partial_state_rooms: bool = False ) -> None: """ Asserts that the host is in the room, or raises an AuthError. If the room is partial-stated, we raise an AuthError with the UNABLE_DUE_TO_PARTIAL_STATE error code, unless `allow_partial_state_rooms` is true. If allow_partial_state_rooms is True and the room is partial-stated, this function may return an incorrect result as we are not able to fully track server membership in a room without full state. """ if await self._store.is_partial_state_room(room_id): if allow_partial_state_rooms: current_hosts = await self._state_storage_controller.get_current_hosts_in_room_or_partial_state_approximation( room_id ) if host not in current_hosts: raise AuthError(403, "Host not in room (partial-state approx).") else: raise AuthError( 403, "Unable to authorise you right now; room is partial-stated here.", errcode=Codes.UNABLE_DUE_TO_PARTIAL_STATE, ) else: if not await self.is_host_in_room(room_id, host): raise AuthError(403, "Host not in room.") async def check_restricted_join_rules( self, state_ids: StateMap[str], room_version: RoomVersion, user_id: str, prev_membership: Optional[str], ) -> None: """ Check whether a user can join a room without an invite due to restricted join rules. When joining a room with restricted joined rules (as defined in MSC3083), the membership of rooms must be checked during a room join. Args: state_ids: The state of the room as it currently is. room_version: The room version of the room being joined. user_id: The user joining the room. prev_membership: The current membership state for this user. `None` if the user has never joined the room (equivalent to "leave"). Raises: AuthError if the user cannot join the room. """ # If the member is invited or currently joined, then nothing to do. if prev_membership in (Membership.JOIN, Membership.INVITE): return # This is not a room with a restricted join rule, so we don't need to do the # restricted room specific checks. # # Note: We'll be applying the standard join rule checks later, which will # catch the cases of e.g. trying to join private rooms without an invite. if not await self.has_restricted_join_rules(state_ids, room_version): return # Get the rooms which allow access to this room and check if the user is # in any of them. allowed_rooms = await self.get_rooms_that_allow_join(state_ids) if not await self.is_user_in_rooms(allowed_rooms, user_id): # If this is a remote request, the user might be in an allowed room # that we do not know about. if not self._is_mine_id(user_id): for room_id in allowed_rooms: if not await self._store.is_host_joined(room_id, self._server_name): raise SynapseError( 400, f"Unable to check if {user_id} is in allowed rooms.", Codes.UNABLE_AUTHORISE_JOIN, ) raise AuthError( 403, "You do not belong to any of the required rooms/spaces to join this room.", ) async def has_restricted_join_rules( self, partial_state_ids: StateMap[str], room_version: RoomVersion ) -> bool: """ Return if the room has the proper join rules set for access via rooms. Args: state_ids: The state of the room as it currently is. May be full or partial state. room_version: The room version of the room to query. Returns: True if the proper room version and join rules are set for restricted access. """ # This only applies to room versions which support the new join rule. if not room_version.restricted_join_rule: return False # If there's no join rule, then it defaults to invite (so this doesn't apply). join_rules_event_id = partial_state_ids.get((EventTypes.JoinRules, ""), None) if not join_rules_event_id: return False # If the join rule is not restricted, this doesn't apply. join_rules_event = await self._store.get_event(join_rules_event_id) content_join_rule = join_rules_event.content.get("join_rule") if content_join_rule == JoinRules.RESTRICTED: return True # also check for MSC3787 behaviour if room_version.knock_restricted_join_rule: return content_join_rule == JoinRules.KNOCK_RESTRICTED return False async def get_rooms_that_allow_join( self, state_ids: StateMap[str] ) -> StrCollection: """ Generate a list of rooms in which membership allows access to a room. Args: state_ids: The current state of the room the user wishes to join Returns: A collection of room IDs. Membership in any of the rooms in the list grants the ability to join the target room. """ # If there's no join rule, then it defaults to invite (so this doesn't apply). join_rules_event_id = state_ids.get((EventTypes.JoinRules, ""), None) if not join_rules_event_id: return () # If the join rule is not restricted, this doesn't apply. join_rules_event = await self._store.get_event(join_rules_event_id) # If allowed is of the wrong form, then only allow invited users. allow_list = join_rules_event.content.get("allow", []) if not isinstance(allow_list, list): return () # Pull out the other room IDs, invalid data gets filtered. result = [] for allow in allow_list: if not isinstance(allow, dict): continue # If the type is unexpected, skip it. if allow.get("type") != RestrictedJoinRuleTypes.ROOM_MEMBERSHIP: continue room_id = allow.get("room_id") if not isinstance(room_id, str): continue result.append(room_id) return result async def is_user_in_rooms(self, room_ids: StrCollection, user_id: str) -> bool: """ Check whether a user is a member of any of the provided rooms. Args: room_ids: The rooms to check for membership. user_id: The user to check. Returns: True if the user is in any of the rooms, false otherwise. """ if not room_ids: return False # Get the list of joined rooms and see if there's an overlap. joined_rooms = await self._store.get_rooms_for_user(user_id) # Check each room and see if the user is in it. for room_id in room_ids: if room_id in joined_rooms: return True # The user was not in any of the rooms. return False synapse-1.100.0/synapse/handlers/events.py000066400000000000000000000156521455622526000205130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random from typing import TYPE_CHECKING, Iterable, List, Optional from synapse.api.constants import EduTypes, EventTypes, Membership, PresenceState from synapse.api.errors import AuthError, SynapseError from synapse.events import EventBase from synapse.events.utils import SerializeEventConfig from synapse.handlers.presence import format_user_presence_state from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.streams.config import PaginationConfig from synapse.types import JsonDict, Requester, UserID from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class EventStreamHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.clock = hs.get_clock() self.hs = hs self.notifier = hs.get_notifier() self.state = hs.get_state_handler() self._server_notices_sender = hs.get_server_notices_sender() self._event_serializer = hs.get_event_client_serializer() async def get_stream( self, requester: Requester, pagin_config: PaginationConfig, timeout: int = 0, as_client_event: bool = True, affect_presence: bool = True, room_id: Optional[str] = None, ) -> JsonDict: """Fetches the events stream for a given user.""" if room_id: blocked = await self.store.is_room_blocked(room_id) if blocked: raise SynapseError(403, "This room has been blocked on this server") # send any outstanding server notices to the user. await self._server_notices_sender.on_user_syncing(requester.user.to_string()) presence_handler = self.hs.get_presence_handler() context = await presence_handler.user_syncing( requester.user.to_string(), requester.device_id, affect_presence=affect_presence, presence_state=PresenceState.ONLINE, ) with context: if timeout: # If they've set a timeout set a minimum limit. timeout = max(timeout, 500) # Add some randomness to this value to try and mitigate against # thundering herds on restart. timeout = random.randint(int(timeout * 0.9), int(timeout * 1.1)) stream_result = await self.notifier.get_events_for( requester.user, pagin_config, timeout, is_guest=requester.is_guest, explicit_room_id=room_id, ) events = stream_result.events time_now = self.clock.time_msec() # When the user joins a new room, or another user joins a currently # joined room, we need to send down presence for those users. to_add: List[JsonDict] = [] for event in events: if not isinstance(event, EventBase): continue if event.type == EventTypes.Member: if event.membership != Membership.JOIN: continue # Send down presence. if event.state_key == requester.user.to_string(): # Send down presence for everyone in the room. users: Iterable[str] = await self.store.get_users_in_room( event.room_id ) else: users = [event.state_key] states = await presence_handler.get_states(users) to_add.extend( { "type": EduTypes.PRESENCE, "content": format_user_presence_state(state, time_now), } for state in states ) events.extend(to_add) chunks = await self._event_serializer.serialize_events( events, time_now, config=SerializeEventConfig( as_client_event=as_client_event, requester=requester ), ) chunk = { "chunk": chunks, "start": await stream_result.start_token.to_string(self.store), "end": await stream_result.end_token.to_string(self.store), } return chunk class EventHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() async def get_event( self, user: UserID, room_id: Optional[str], event_id: str, show_redacted: bool = False, ) -> Optional[EventBase]: """Retrieve a single specified event. Args: user: The local user requesting the event room_id: The expected room id. We'll return None if the event's room does not match. event_id: The event ID to obtain. show_redacted: Should the full content of redacted events be returned? Returns: An event, or None if there is no event matching this ID. Raises: AuthError: if the user does not have the rights to inspect this event. """ redact_behaviour = ( EventRedactBehaviour.as_is if show_redacted else EventRedactBehaviour.redact ) event = await self.store.get_event( event_id, check_room_id=room_id, redact_behaviour=redact_behaviour, allow_none=True, ) if not event: return None is_user_in_room = await self.store.check_local_user_in_room( user_id=user.to_string(), room_id=event.room_id ) # The user is peeking if they aren't in the room already is_peeking = not is_user_in_room filtered = await filter_events_for_client( self._storage_controllers, user.to_string(), [event], is_peeking=is_peeking ) if not filtered: raise AuthError(403, "You don't have permission to access that event.") return event synapse-1.100.0/synapse/handlers/federation.py000066400000000000000000002510041455622526000213200ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 Sorunome # Copyright 2014-2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """Contains handlers for federation events.""" import enum import itertools import logging from enum import Enum from http import HTTPStatus from typing import ( TYPE_CHECKING, AbstractSet, Dict, Iterable, List, Optional, Set, Tuple, Union, ) import attr from prometheus_client import Histogram from signedjson.key import decode_verify_key_bytes from signedjson.sign import verify_signed_json from unpaddedbase64 import decode_base64 from synapse import event_auth from synapse.api.constants import MAX_DEPTH, EventContentFields, EventTypes, Membership from synapse.api.errors import ( AuthError, CodeMessageException, Codes, FederationDeniedError, FederationError, FederationPullAttemptBackoffError, HttpResponseException, NotFoundError, PartialStateConflictError, RequestSendFailed, SynapseError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.crypto.event_signing import compute_event_signature from synapse.event_auth import validate_event_for_room_version from synapse.events import EventBase from synapse.events.snapshot import EventContext, UnpersistedEventContextBase from synapse.events.validator import EventValidator from synapse.federation.federation_client import InvalidResponseError from synapse.handlers.pagination import PURGE_PAGINATION_LOCK_NAME from synapse.http.servlet import assert_params_in_dict from synapse.logging.context import nested_logging_context from synapse.logging.opentracing import SynapseTags, set_tag, tag_args, trace from synapse.metrics.background_process_metrics import run_as_background_process from synapse.module_api import NOT_SPAM from synapse.replication.http.federation import ( ReplicationCleanRoomRestServlet, ReplicationStoreRoomOnOutlierMembershipRestServlet, ) from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.types import JsonDict, StrCollection, get_domain_from_id from synapse.types.state import StateFilter from synapse.util.async_helpers import Linearizer from synapse.util.retryutils import NotRetryingDestination from synapse.visibility import filter_events_for_server if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Added to debug performance and track progress on optimizations backfill_processing_before_timer = Histogram( "synapse_federation_backfill_processing_before_time_seconds", "sec", [], buckets=( 0.1, 0.5, 1.0, 2.5, 5.0, 7.5, 10.0, 15.0, 20.0, 30.0, 40.0, 60.0, 80.0, "+Inf", ), ) # TODO: We can refactor this away now that there is only one backfill point again class _BackfillPointType(Enum): # a regular backwards extremity (ie, an event which we don't yet have, but which # is referred to by other events in the DAG) BACKWARDS_EXTREMITY = enum.auto() @attr.s(slots=True, auto_attribs=True, frozen=True) class _BackfillPoint: """A potential point we might backfill from""" event_id: str depth: int type: _BackfillPointType class FederationHandler: """Handles general incoming federation requests Incoming events are *not* handled here, for which see FederationEventHandler. """ def __init__(self, hs: "HomeServer"): self.hs = hs self.clock = hs.get_clock() self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self.federation_client = hs.get_federation_client() self.state_handler = hs.get_state_handler() self.server_name = hs.hostname self.keyring = hs.get_keyring() self.is_mine_id = hs.is_mine_id self.is_mine_server_name = hs.is_mine_server_name self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self.event_creation_handler = hs.get_event_creation_handler() self.event_builder_factory = hs.get_event_builder_factory() self._event_auth_handler = hs.get_event_auth_handler() self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self.config = hs.config self.http_client = hs.get_proxied_blocklisted_http_client() self._replication = hs.get_replication_data_handler() self._federation_event_handler = hs.get_federation_event_handler() self._device_handler = hs.get_device_handler() self._bulk_push_rule_evaluator = hs.get_bulk_push_rule_evaluator() self._notifier = hs.get_notifier() self._worker_locks = hs.get_worker_locks_handler() self._clean_room_for_join_client = ReplicationCleanRoomRestServlet.make_client( hs ) if hs.config.worker.worker_app: self._maybe_store_room_on_outlier_membership = ( ReplicationStoreRoomOnOutlierMembershipRestServlet.make_client(hs) ) else: self._maybe_store_room_on_outlier_membership = ( self.store.maybe_store_room_on_outlier_membership ) self._room_backfill = Linearizer("room_backfill") self._third_party_event_rules = ( hs.get_module_api_callbacks().third_party_event_rules ) # Tracks running partial state syncs by room ID. # Partial state syncs currently only run on the main process, so it's okay to # track them in-memory for now. self._active_partial_state_syncs: Set[str] = set() # Tracks partial state syncs we may want to restart. # A dictionary mapping room IDs to (initial destination, other destinations) # tuples. self._partial_state_syncs_maybe_needing_restart: Dict[ str, Tuple[Optional[str], AbstractSet[str]] ] = {} # A lock guarding the partial state flag for rooms. # When the lock is held for a given room, no other concurrent code may # partial state or un-partial state the room. self._is_partial_state_room_linearizer = Linearizer( name="_is_partial_state_room_linearizer" ) # if this is the main process, fire off a background process to resume # any partial-state-resync operations which were in flight when we # were shut down. if not hs.config.worker.worker_app: run_as_background_process( "resume_sync_partial_state_room", self._resume_partial_state_room_sync ) @trace @tag_args async def maybe_backfill( self, room_id: str, current_depth: int, limit: int, record_time: bool = True ) -> bool: """Checks the database to see if we should backfill before paginating, and if so do. Args: room_id current_depth: The depth from which we're paginating from. This is used to decide if we should backfill and what extremities to use. limit: The number of events that the pagination request will return. This is used as part of the heuristic to decide if we should back paginate. record_time: Whether to record the time it takes to backfill. Returns: True if we actually tried to backfill something, otherwise False. """ # Starting the processing time here so we can include the room backfill # linearizer lock queue in the timing processing_start_time = self.clock.time_msec() if record_time else 0 async with self._room_backfill.queue(room_id): async with self._worker_locks.acquire_read_write_lock( PURGE_PAGINATION_LOCK_NAME, room_id, write=False ): return await self._maybe_backfill_inner( room_id, current_depth, limit, processing_start_time=processing_start_time, ) @trace @tag_args async def _maybe_backfill_inner( self, room_id: str, current_depth: int, limit: int, *, processing_start_time: Optional[int], ) -> bool: """ Checks whether the `current_depth` is at or approaching any backfill points in the room and if so, will backfill. We only care about checking backfill points that happened before the `current_depth` (meaning less than or equal to the `current_depth`). Args: room_id: The room to backfill in. current_depth: The depth to check at for any upcoming backfill points. limit: The max number of events to request from the remote federated server. processing_start_time: The time when `maybe_backfill` started processing. Only used for timing. If `None`, no timing observation will be made. Returns: True if we actually tried to backfill something, otherwise False. """ backwards_extremities = [ _BackfillPoint(event_id, depth, _BackfillPointType.BACKWARDS_EXTREMITY) for event_id, depth in await self.store.get_backfill_points_in_room( room_id=room_id, current_depth=current_depth, # We only need to end up with 5 extremities combined with the # insertion event extremities to make the `/backfill` request # but fetch an order of magnitude more to make sure there is # enough even after we filter them by whether visible in the # history. This isn't fool-proof as all backfill points within # our limit could be filtered out but seems like a good amount # to try with at least. limit=50, ) ] # we now have a list of potential places to backpaginate from. We prefer to # start with the most recent (ie, max depth), so let's sort the list. sorted_backfill_points: List[_BackfillPoint] = sorted( backwards_extremities, key=lambda e: -int(e.depth), ) logger.debug( "_maybe_backfill_inner: room_id: %s: current_depth: %s, limit: %s, " "backfill points (%d): %s", room_id, current_depth, limit, len(sorted_backfill_points), sorted_backfill_points, ) set_tag( SynapseTags.RESULT_PREFIX + "sorted_backfill_points", str(sorted_backfill_points), ) set_tag( SynapseTags.RESULT_PREFIX + "sorted_backfill_points.length", str(len(sorted_backfill_points)), ) # If we have no backfill points lower than the `current_depth` then either we # can a) bail or b) still attempt to backfill. We opt to try backfilling anyway # just in case we do get relevant events. This is good for eventual consistency # sake but we don't need to block the client for something that is just as # likely not to return anything relevant so we backfill in the background. The # only way, this could return something relevant is if we discover a new branch # of history that extends all the way back to where we are currently paginating # and it's within the 100 events that are returned from `/backfill`. if not sorted_backfill_points and current_depth != MAX_DEPTH: # Check that we actually have later backfill points, if not just return. have_later_backfill_points = await self.store.get_backfill_points_in_room( room_id=room_id, current_depth=MAX_DEPTH, limit=1, ) if not have_later_backfill_points: return False logger.debug( "_maybe_backfill_inner: all backfill points are *after* current depth. Trying again with later backfill points." ) run_as_background_process( "_maybe_backfill_inner_anyway_with_max_depth", self.maybe_backfill, room_id=room_id, # We use `MAX_DEPTH` so that we find all backfill points next # time (all events are below the `MAX_DEPTH`) current_depth=MAX_DEPTH, limit=limit, # We don't want to start another timing observation from this # nested recursive call. The top-most call can record the time # overall otherwise the smaller one will throw off the results. record_time=False, ) # We return `False` because we're backfilling in the background and there is # no new events immediately for the caller to know about yet. return False # Even after recursing with `MAX_DEPTH`, we didn't find any # backward extremities to backfill from. if not sorted_backfill_points: logger.debug( "_maybe_backfill_inner: Not backfilling as no backward extremeties found." ) return False # If we're approaching an extremity we trigger a backfill, otherwise we # no-op. # # We chose twice the limit here as then clients paginating backwards # will send pagination requests that trigger backfill at least twice # using the most recent extremity before it gets removed (see below). We # chose more than one times the limit in case of failure, but choosing a # much larger factor will result in triggering a backfill request much # earlier than necessary. max_depth_of_backfill_points = sorted_backfill_points[0].depth if current_depth - 2 * limit > max_depth_of_backfill_points: logger.debug( "Not backfilling as we don't need to. %d < %d - 2 * %d", max_depth_of_backfill_points, current_depth, limit, ) return False # For performance's sake, we only want to paginate from a particular extremity # if we can actually see the events we'll get. Otherwise, we'd just spend a lot # of resources to get redacted events. We check each extremity in turn and # ignore those which users on our server wouldn't be able to see. # # Additionally, we limit ourselves to backfilling from at most 5 extremities, # for two reasons: # # - The check which determines if we can see an extremity's events can be # expensive (we load the full state for the room at each of the backfill # points, or (worse) their successors) # - We want to avoid the server-server API request URI becoming too long. # # *Note*: the spec wants us to keep backfilling until we reach the start # of the room in case we are allowed to see some of the history. However, # in practice that causes more issues than its worth, as (a) it's # relatively rare for there to be any visible history and (b) even when # there is it's often sufficiently long ago that clients would stop # attempting to paginate before backfill reached the visible history. extremities_to_request: List[str] = [] for bp in sorted_backfill_points: if len(extremities_to_request) >= 5: break # For regular backwards extremities, we don't have the extremity events # themselves, so we need to actually check the events that reference them - # their "successor" events. # # TODO: Correctly handle the case where we are allowed to see the # successor event but not the backward extremity, e.g. in the case of # initial join of the server where we are allowed to see the join # event but not anything before it. This would require looking at the # state *before* the event, ignoring the special casing certain event # types have. event_ids_to_check = await self.store.get_successor_events(bp.event_id) events_to_check = await self.store.get_events_as_list( event_ids_to_check, redact_behaviour=EventRedactBehaviour.as_is, get_prev_content=False, ) # We unset `filter_out_erased_senders` as we might otherwise get false # positives from users having been erased. filtered_extremities = await filter_events_for_server( self._storage_controllers, self.server_name, self.server_name, events_to_check, redact=False, filter_out_erased_senders=False, filter_out_remote_partial_state_events=False, ) if filtered_extremities: extremities_to_request.append(bp.event_id) else: logger.debug( "_maybe_backfill_inner: skipping extremity %s as it would not be visible", bp, ) if not extremities_to_request: logger.debug( "_maybe_backfill_inner: found no extremities which would be visible" ) return False logger.debug( "_maybe_backfill_inner: extremities_to_request %s", extremities_to_request ) set_tag( SynapseTags.RESULT_PREFIX + "extremities_to_request", str(extremities_to_request), ) set_tag( SynapseTags.RESULT_PREFIX + "extremities_to_request.length", str(len(extremities_to_request)), ) # Now we need to decide which hosts to hit first. # First we try hosts that are already in the room. # TODO: HEURISTIC ALERT. likely_domains = ( await self._storage_controllers.state.get_current_hosts_in_room_ordered( room_id ) ) async def try_backfill(domains: StrCollection) -> bool: # TODO: Should we try multiple of these at a time? # Number of contacted remote homeservers that have denied our backfill # request with a 4xx code. denied_count = 0 # Maximum number of contacted remote homeservers that can deny our # backfill request with 4xx codes before we give up. max_denied_count = 5 for dom in domains: # We don't want to ask our own server for information we don't have if self.is_mine_server_name(dom): continue try: await self._federation_event_handler.backfill( dom, room_id, limit=100, extremities=extremities_to_request ) # If this succeeded then we probably already have the # appropriate stuff. # TODO: We can probably do something more intelligent here. return True except NotRetryingDestination as e: logger.info("_maybe_backfill_inner: %s", e) continue except FederationDeniedError: logger.info( "_maybe_backfill_inner: Not attempting to backfill from %s because the homeserver is not on our federation whitelist", dom, ) continue except (SynapseError, InvalidResponseError) as e: logger.info("Failed to backfill from %s because %s", dom, e) continue except HttpResponseException as e: if 400 <= e.code < 500: logger.warning( "Backfill denied from %s because %s [%d/%d]", dom, e, denied_count, max_denied_count, ) denied_count += 1 if denied_count >= max_denied_count: return False continue logger.info("Failed to backfill from %s because %s", dom, e) continue except CodeMessageException as e: if 400 <= e.code < 500: logger.warning( "Backfill denied from %s because %s [%d/%d]", dom, e, denied_count, max_denied_count, ) denied_count += 1 if denied_count >= max_denied_count: return False continue logger.info("Failed to backfill from %s because %s", dom, e) continue except RequestSendFailed as e: logger.info("Failed to get backfill from %s because %s", dom, e) continue except Exception as e: logger.exception("Failed to backfill from %s because %s", dom, e) continue return False # If we have the `processing_start_time`, then we can make an # observation. We wouldn't have the `processing_start_time` in the case # where `_maybe_backfill_inner` is recursively called to find any # backfill points regardless of `current_depth`. if processing_start_time is not None: processing_end_time = self.clock.time_msec() backfill_processing_before_timer.observe( (processing_end_time - processing_start_time) / 1000 ) success = await try_backfill(likely_domains) if success: return True # TODO: we could also try servers which were previously in the room, but # are no longer. return False async def send_invite(self, target_host: str, event: EventBase) -> EventBase: """Sends the invite to the remote server for signing. Invites must be signed by the invitee's server before distribution. """ try: pdu = await self.federation_client.send_invite( destination=target_host, room_id=event.room_id, event_id=event.event_id, pdu=event, ) except RequestSendFailed: raise SynapseError(502, f"Can't connect to server {target_host}") return pdu async def on_event_auth(self, event_id: str) -> List[EventBase]: event = await self.store.get_event(event_id) auth = await self.store.get_auth_chain( event.room_id, list(event.auth_event_ids()), include_given=True ) return list(auth) async def do_invite_join( self, target_hosts: Iterable[str], room_id: str, joinee: str, content: JsonDict ) -> Tuple[str, int]: """Attempts to join the `joinee` to the room `room_id` via the servers contained in `target_hosts`. This first triggers a /make_join/ request that returns a partial event that we can fill out and sign. This is then sent to the remote server via /send_join/ which responds with the state at that event and the auth_chains. We suspend processing of any received events from this room until we have finished processing the join. Args: target_hosts: List of servers to attempt to join the room with. room_id: The ID of the room to join. joinee: The User ID of the joining user. content: The event content to use for the join event. """ # TODO: We should be able to call this on workers, but the upgrading of # room stuff after join currently doesn't work on workers. # TODO: Before we relax this condition, we need to allow re-syncing of # partial room state to happen on workers. assert self.config.worker.worker_app is None logger.debug("Joining %s to %s", joinee, room_id) origin, event, room_version_obj = await self._make_and_verify_event( target_hosts, room_id, joinee, "join", content, params={"ver": KNOWN_ROOM_VERSIONS}, ) # This shouldn't happen, because the RoomMemberHandler has a # linearizer lock which only allows one operation per user per room # at a time - so this is just paranoia. assert room_id not in self._federation_event_handler.room_queues self._federation_event_handler.room_queues[room_id] = [] is_host_joined = await self.store.is_host_joined(room_id, self.server_name) if not is_host_joined: # We may have old forward extremities lying around if the homeserver left # the room completely in the past. Clear them out. # # Note that this check-then-clear is subject to races where # * the homeserver is in the room and stops being in the room just after # the check. We won't reset the forward extremities, but that's okay, # since they will be almost up to date. # * the homeserver is not in the room and starts being in the room just # after the check. This can't happen, since `RoomMemberHandler` has a # linearizer lock which prevents concurrent remote joins into the same # room. # In short, the races either have an acceptable outcome or should be # impossible. await self._clean_room_for_join(room_id) try: # Try the host we successfully got a response to /make_join/ # request first. host_list = list(target_hosts) try: host_list.remove(origin) host_list.insert(0, origin) except ValueError: pass async with self._is_partial_state_room_linearizer.queue(room_id): already_partial_state_room = await self.store.is_partial_state_room( room_id ) ret = await self.federation_client.send_join( host_list, event, room_version_obj, # Perform a full join when we are already in the room and it is a # full state room, since we are not allowed to persist a partial # state join event in a full state room. In the future, we could # optimize this by always performing a partial state join and # computing the state ourselves or retrieving it from the remote # homeserver if necessary. # # There's a race where we leave the room, then perform a full join # anyway. This should end up being fast anyway, since we would # already have the full room state and auth chain persisted. partial_state=not is_host_joined or already_partial_state_room, ) event = ret.event origin = ret.origin state = ret.state auth_chain = ret.auth_chain auth_chain.sort(key=lambda e: e.depth) logger.debug("do_invite_join auth_chain: %s", auth_chain) logger.debug("do_invite_join state: %s", state) logger.debug("do_invite_join event: %s", event) # if this is the first time we've joined this room, it's time to add # a row to `rooms` with the correct room version. If there's already a # row there, we should override it, since it may have been populated # based on an invite request which lied about the room version. # # federation_client.send_join has already checked that the room # version in the received create event is the same as room_version_obj, # so we can rely on it now. # await self.store.upsert_room_on_join( room_id=room_id, room_version=room_version_obj, state_events=state, ) if ret.partial_state and not already_partial_state_room: # Mark the room as having partial state. # The background process is responsible for unmarking this flag, # even if the join fails. # TODO(faster_joins): # We may want to reset the partial state info if it's from an # old, failed partial state join. # https://github.com/matrix-org/synapse/issues/13000 await self.store.store_partial_state_room( room_id=room_id, servers=ret.servers_in_room, device_lists_stream_id=self.store.get_device_stream_token(), joined_via=origin, ) try: max_stream_id = ( await self._federation_event_handler.process_remote_join( origin, room_id, auth_chain, state, event, room_version_obj, partial_state=ret.partial_state, ) ) except PartialStateConflictError: # This should be impossible, since we hold the lock on the room's # partial statedness. logger.error( "Room %s was un-partial stated while processing remote join.", room_id, ) raise else: # Record the join event id for future use (when we finish the full # join). We have to do this after persisting the event to keep # foreign key constraints intact. if ret.partial_state and not already_partial_state_room: # TODO(faster_joins): # We may want to reset the partial state info if it's from # an old, failed partial state join. # https://github.com/matrix-org/synapse/issues/13000 await self.store.write_partial_state_rooms_join_event_id( room_id, event.event_id ) finally: # Always kick off the background process that asynchronously fetches # state for the room. # If the join failed, the background process is responsible for # cleaning up — including unmarking the room as a partial state # room. if ret.partial_state: # Kick off the process of asynchronously fetching the state for # this room. self._start_partial_state_room_sync( initial_destination=origin, other_destinations=ret.servers_in_room, room_id=room_id, ) # We wait here until this instance has seen the events come down # replication (if we're using replication) as the below uses caches. await self._replication.wait_for_stream_position( self.config.worker.events_shard_config.get_instance(room_id), "events", max_stream_id, ) # Check whether this room is the result of an upgrade of a room we already know # about. If so, migrate over user information predecessor = await self.store.get_room_predecessor(room_id) if not predecessor or not isinstance(predecessor.get("room_id"), str): return event.event_id, max_stream_id old_room_id = predecessor["room_id"] logger.debug( "Found predecessor for %s during remote join: %s", room_id, old_room_id ) # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() await member_handler.transfer_room_state_on_room_upgrade( old_room_id, room_id ) logger.debug("Finished joining %s to %s", joinee, room_id) return event.event_id, max_stream_id finally: room_queue = self._federation_event_handler.room_queues[room_id] del self._federation_event_handler.room_queues[room_id] # we don't need to wait for the queued events to be processed - # it's just a best-effort thing at this point. We do want to do # them roughly in order, though, otherwise we'll end up making # lots of requests for missing prev_events which we do actually # have. Hence we fire off the background task, but don't wait for it. run_as_background_process( "handle_queued_pdus", self._handle_queued_pdus, room_queue ) async def do_knock( self, target_hosts: List[str], room_id: str, knockee: str, content: JsonDict, ) -> Tuple[str, int]: """Sends the knock to the remote server. This first triggers a make_knock request that returns a partial event that we can fill out and sign. This is then sent to the remote server via send_knock. Knock events must be signed by the knockee's server before distributing. Args: target_hosts: A list of hosts that we want to try knocking through. room_id: The ID of the room to knock on. knockee: The ID of the user who is knocking. content: The content of the knock event. Returns: A tuple of (event ID, stream ID). Raises: SynapseError: If the chosen remote server returns a 3xx/4xx code. RuntimeError: If no servers were reachable. """ logger.debug("Knocking on room %s on behalf of user %s", room_id, knockee) # Inform the remote server of the room versions we support supported_room_versions = list(KNOWN_ROOM_VERSIONS.keys()) # Ask the remote server to create a valid knock event for us. Once received, # we sign the event params: Dict[str, Iterable[str]] = {"ver": supported_room_versions} origin, event, event_format_version = await self._make_and_verify_event( target_hosts, room_id, knockee, Membership.KNOCK, content, params=params ) # Mark the knock as an outlier as we don't yet have the state at this point in # the DAG. event.internal_metadata.outlier = True # ... but tell /sync to send it to clients anyway. event.internal_metadata.out_of_band_membership = True # Record the room ID and its version so that we have a record of the room await self._maybe_store_room_on_outlier_membership( room_id=event.room_id, room_version=event_format_version ) # Initially try the host that we successfully called /make_knock on try: target_hosts.remove(origin) target_hosts.insert(0, origin) except ValueError: pass # Send the signed event back to the room, and potentially receive some # further information about the room in the form of partial state events knock_response = await self.federation_client.send_knock(target_hosts, event) # Store any stripped room state events in the "unsigned" key of the event. # This is a bit of a hack and is cribbing off of invites. Basically we # store the room state here and retrieve it again when this event appears # in the invitee's sync stream. It is stripped out for all other local users. stripped_room_state = knock_response.get("knock_room_state") if stripped_room_state is None: raise KeyError("Missing 'knock_room_state' field in send_knock response") event.unsigned["knock_room_state"] = stripped_room_state context = EventContext.for_outlier(self._storage_controllers) stream_id = await self._federation_event_handler.persist_events_and_notify( event.room_id, [(event, context)] ) return event.event_id, stream_id async def _handle_queued_pdus( self, room_queue: List[Tuple[EventBase, str]] ) -> None: """Process PDUs which got queued up while we were busy send_joining. Args: room_queue: list of PDUs to be processed and the servers that sent them """ for p, origin in room_queue: try: logger.info( "Processing queued PDU %s which was received while we were joining", p, ) with nested_logging_context(p.event_id): await self._federation_event_handler.on_receive_pdu(origin, p) except Exception as e: logger.warning( "Error handling queued PDU %s from %s: %s", p.event_id, origin, e ) async def on_make_join_request( self, origin: str, room_id: str, user_id: str ) -> EventBase: """We've received a /make_join/ request, so we create a partial join event for the room and return that. We do *not* persist or process it until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: Room to create join event in user_id: The user to create the join for """ if get_domain_from_id(user_id) != origin: logger.info( "Got /make_join request for user %r from different origin %s, ignoring", user_id, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) # checking the room version will check that we've actually heard of the room # (and return a 404 otherwise) room_version = await self.store.get_room_version(room_id) if await self.store.is_partial_state_room(room_id): # If our server is still only partially joined, we can't give a complete # response to /make_join, so return a 404 as we would if we weren't in the # room at all. # The main reason we can't respond properly is that we need to know about # the auth events for the join event that we would return. # We also should not bother entertaining the /make_join since we cannot # handle the /send_join. logger.info( "Rejecting /make_join to %s because it's a partial state room", room_id ) raise SynapseError( 404, "Unable to handle /make_join right now; this server is not fully joined.", errcode=Codes.NOT_FOUND, ) # now check that we are *still* in the room is_in_room = await self._event_auth_handler.is_host_in_room( room_id, self.server_name ) if not is_in_room: logger.info( "Got /make_join request for room %s we are no longer in", room_id, ) raise NotFoundError("Not an active room on this server") event_content = {"membership": Membership.JOIN} # If the current room is using restricted join rules, additional information # may need to be included in the event content in order to efficiently # validate the event. # # Note that this requires the /send_join request to come back to the # same server. prev_event_ids = None if room_version.restricted_join_rule: # Note that the room's state can change out from under us and render our # nice join rules-conformant event non-conformant by the time we build the # event. When this happens, our validation at the end fails and we respond # to the requesting server with a 403, which is misleading — it indicates # that the user is not allowed to join the room and the joining server # should not bother retrying via this homeserver or any others, when # in fact we've just messed up with building the event. # # To reduce the likelihood of this race, we capture the forward extremities # of the room (prev_event_ids) just before fetching the current state, and # hope that the state we fetch corresponds to the prev events we chose. prev_event_ids = await self.store.get_prev_events_for_room(room_id) state_ids = await self._state_storage_controller.get_current_state_ids( room_id ) if await self._event_auth_handler.has_restricted_join_rules( state_ids, room_version ): prev_member_event_id = state_ids.get((EventTypes.Member, user_id), None) # If the user is invited or joined to the room already, then # no additional info is needed. include_auth_user_id = True if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) include_auth_user_id = prev_member_event.membership not in ( Membership.JOIN, Membership.INVITE, ) if include_auth_user_id: event_content[ EventContentFields.AUTHORISING_USER ] = await self._event_auth_handler.get_user_which_could_invite( room_id, state_ids, ) builder = self.event_builder_factory.for_room_version( room_version, { "type": EventTypes.Member, "content": event_content, "room_id": room_id, "sender": user_id, "state_key": user_id, }, ) try: ( event, unpersisted_context, ) = await self.event_creation_handler.create_new_client_event( builder=builder, prev_event_ids=prev_event_ids, ) except SynapseError as e: logger.warning("Failed to create join to %s because %s", room_id, e) raise # Ensure the user can even join the room. await self._federation_event_handler.check_join_restrictions( unpersisted_context, event ) # The remote hasn't signed it yet, obviously. We'll do the full checks # when we get the event back in `on_send_join_request` await self._event_auth_handler.check_auth_rules_from_context(event) return event async def on_invite_request( self, origin: str, event: EventBase, room_version: RoomVersion ) -> EventBase: """We've got an invite event. Process and persist it. Sign it. Respond with the now signed event. """ if event.state_key is None: raise SynapseError(400, "The invite event did not have a state key") is_blocked = await self.store.is_room_blocked(event.room_id) if is_blocked: raise SynapseError(403, "This room has been blocked on this server") if self.hs.config.server.block_non_admin_invites: raise SynapseError(403, "This server does not accept room invites") spam_check = await self._spam_checker_module_callbacks.user_may_invite( event.sender, event.state_key, event.room_id ) if spam_check != NOT_SPAM: raise SynapseError( 403, "This user is not permitted to send invites to this server/user", errcode=spam_check[0], additional_fields=spam_check[1], ) membership = event.content.get("membership") if event.type != EventTypes.Member or membership != Membership.INVITE: raise SynapseError(400, "The event was not an m.room.member invite event") sender_domain = get_domain_from_id(event.sender) if sender_domain != origin: raise SynapseError( 400, "The invite event was not from the server sending it" ) if not self.is_mine_id(event.state_key): raise SynapseError(400, "The invite event must be for this server") # block any attempts to invite the server notices mxid if event.state_key == self._server_notices_mxid: raise SynapseError(HTTPStatus.FORBIDDEN, "Cannot invite this user") # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() # We don't rate limit based on room ID, as that should be done by # sending server. await member_handler.ratelimit_invite(None, None, event.state_key) # keep a record of the room version, if we don't yet know it. # (this may get overwritten if we later get a different room version in a # join dance). await self._maybe_store_room_on_outlier_membership( room_id=event.room_id, room_version=room_version ) event.internal_metadata.outlier = True event.internal_metadata.out_of_band_membership = True event.signatures.update( compute_event_signature( room_version, event.get_pdu_json(), self.hs.hostname, self.hs.signing_key, ) ) context = EventContext.for_outlier(self._storage_controllers) await self._bulk_push_rule_evaluator.action_for_events_by_user( [(event, context)] ) try: await self._federation_event_handler.persist_events_and_notify( event.room_id, [(event, context)] ) except Exception: await self.store.remove_push_actions_from_staging(event.event_id) raise return event async def do_remotely_reject_invite( self, target_hosts: Iterable[str], room_id: str, user_id: str, content: JsonDict ) -> Tuple[EventBase, int]: origin, event, room_version = await self._make_and_verify_event( target_hosts, room_id, user_id, "leave", content=content ) # Mark as outlier as we don't have any state for this event; we're not # even in the room. event.internal_metadata.outlier = True event.internal_metadata.out_of_band_membership = True # Try the host that we successfully called /make_leave/ on first for # the /send_leave/ request. host_list = list(target_hosts) try: host_list.remove(origin) host_list.insert(0, origin) except ValueError: pass await self.federation_client.send_leave(host_list, event) context = EventContext.for_outlier(self._storage_controllers) stream_id = await self._federation_event_handler.persist_events_and_notify( event.room_id, [(event, context)] ) return event, stream_id async def _make_and_verify_event( self, target_hosts: Iterable[str], room_id: str, user_id: str, membership: str, content: JsonDict, params: Optional[Dict[str, Union[str, Iterable[str]]]] = None, ) -> Tuple[str, EventBase, RoomVersion]: ( origin, event, room_version, ) = await self.federation_client.make_membership_event( target_hosts, room_id, user_id, membership, content, params=params ) logger.debug("Got response to make_%s: %s", membership, event) # We should assert some things. # FIXME: Do this in a nicer way assert event.type == EventTypes.Member assert event.user_id == user_id assert event.state_key == user_id assert event.room_id == room_id return origin, event, room_version async def on_make_leave_request( self, origin: str, room_id: str, user_id: str ) -> EventBase: """We've received a /make_leave/ request, so we create a partial leave event for the room and return that. We do *not* persist or process it until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: Room to create leave event in user_id: The user to create the leave for """ if get_domain_from_id(user_id) != origin: logger.info( "Got /make_leave request for user %r from different origin %s, ignoring", user_id, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) room_version_obj = await self.store.get_room_version(room_id) builder = self.event_builder_factory.for_room_version( room_version_obj, { "type": EventTypes.Member, "content": {"membership": Membership.LEAVE}, "room_id": room_id, "sender": user_id, "state_key": user_id, }, ) event, _ = await self.event_creation_handler.create_new_client_event( builder=builder ) try: # The remote hasn't signed it yet, obviously. We'll do the full checks # when we get the event back in `on_send_leave_request` await self._event_auth_handler.check_auth_rules_from_context(event) except AuthError as e: logger.warning("Failed to create new leave %r because %s", event, e) raise e return event async def on_make_knock_request( self, origin: str, room_id: str, user_id: str ) -> EventBase: """We've received a make_knock request, so we create a partial knock event for the room and return that. We do *not* persist or process it until the other server has signed it and sent it back. Args: origin: The (verified) server name of the requesting server. room_id: The room to create the knock event in. user_id: The user to create the knock for. Returns: The partial knock event. """ if get_domain_from_id(user_id) != origin: logger.info( "Get /make_knock request for user %r from different origin %s, ignoring", user_id, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) room_version_obj = await self.store.get_room_version(room_id) builder = self.event_builder_factory.for_room_version( room_version_obj, { "type": EventTypes.Member, "content": {"membership": Membership.KNOCK}, "room_id": room_id, "sender": user_id, "state_key": user_id, }, ) ( event, unpersisted_context, ) = await self.event_creation_handler.create_new_client_event(builder=builder) event_allowed, _ = await self._third_party_event_rules.check_event_allowed( event, unpersisted_context ) if not event_allowed: logger.warning("Creation of knock %s forbidden by third-party rules", event) raise SynapseError( 403, "This event is not allowed in this context", Codes.FORBIDDEN ) try: # The remote hasn't signed it yet, obviously. We'll do the full checks # when we get the event back in `on_send_knock_request` await self._event_auth_handler.check_auth_rules_from_context(event) except AuthError as e: logger.warning("Failed to create new knock %r because %s", event, e) raise e return event @trace @tag_args async def get_state_ids_for_pdu(self, room_id: str, event_id: str) -> List[str]: """Returns the state at the event. i.e. not including said event.""" event = await self.store.get_event(event_id, check_room_id=room_id) if event.internal_metadata.outlier: raise NotFoundError("State not known at event %s" % (event_id,)) state_groups = await self._state_storage_controller.get_state_groups_ids( room_id, [event_id] ) # get_state_groups_ids should return exactly one result assert len(state_groups) == 1 state_map = next(iter(state_groups.values())) state_key = event.get_state_key() if state_key is not None: # the event was not rejected (get_event raises a NotFoundError for rejected # events) so the state at the event should include the event itself. assert ( state_map.get((event.type, state_key)) == event.event_id ), "State at event did not include event itself" # ... but we need the state *before* that event if "replaces_state" in event.unsigned: prev_id = event.unsigned["replaces_state"] state_map[(event.type, state_key)] = prev_id else: del state_map[(event.type, state_key)] return list(state_map.values()) async def on_backfill_request( self, origin: str, room_id: str, pdu_list: List[str], limit: int ) -> List[EventBase]: # We allow partially joined rooms since in this case we are filtering out # non-local events in `filter_events_for_server`. await self._event_auth_handler.assert_host_in_room(room_id, origin, True) # Synapse asks for 100 events per backfill request. Do not allow more. limit = min(limit, 100) events = await self.store.get_backfill_events(room_id, pdu_list, limit) logger.debug( "on_backfill_request: backfill events=%s", [ "event_id=%s,depth=%d,body=%s,prevs=%s\n" % ( event.event_id, event.depth, event.content.get("body", event.type), event.prev_event_ids(), ) for event in events ], ) events = await filter_events_for_server( self._storage_controllers, origin, self.server_name, events, redact=True, filter_out_erased_senders=True, filter_out_remote_partial_state_events=True, ) return events async def get_persisted_pdu( self, origin: str, event_id: str ) -> Optional[EventBase]: """Get an event from the database for the given server. Args: origin: hostname of server which is requesting the event; we will check that the server is allowed to see it. event_id: id of the event being requested Returns: None if we know nothing about the event; otherwise the (possibly-redacted) event. Raises: AuthError if the server is not currently in the room """ event = await self.store.get_event( event_id, allow_none=True, allow_rejected=True ) if not event: return None await self._event_auth_handler.assert_host_in_room(event.room_id, origin) events = await filter_events_for_server( self._storage_controllers, origin, self.server_name, [event], redact=True, filter_out_erased_senders=True, filter_out_remote_partial_state_events=True, ) event = events[0] return event async def on_get_missing_events( self, origin: str, room_id: str, earliest_events: List[str], latest_events: List[str], limit: int, ) -> List[EventBase]: # We allow partially joined rooms since in this case we are filtering out # non-local events in `filter_events_for_server`. await self._event_auth_handler.assert_host_in_room(room_id, origin, True) # Only allow up to 20 events to be retrieved per request. limit = min(limit, 20) missing_events = await self.store.get_missing_events( room_id=room_id, earliest_events=earliest_events, latest_events=latest_events, limit=limit, ) missing_events = await filter_events_for_server( self._storage_controllers, origin, self.server_name, missing_events, redact=True, filter_out_erased_senders=True, filter_out_remote_partial_state_events=True, ) return missing_events async def exchange_third_party_invite( self, sender_user_id: str, target_user_id: str, room_id: str, signed: JsonDict ) -> None: third_party_invite = {"signed": signed} event_dict = { "type": EventTypes.Member, "content": { "membership": Membership.INVITE, "third_party_invite": third_party_invite, }, "room_id": room_id, "sender": sender_user_id, "state_key": target_user_id, } if await self._event_auth_handler.is_host_in_room(room_id, self.hs.hostname): room_version_obj = await self.store.get_room_version(room_id) builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) EventValidator().validate_builder(builder) # Try several times, it could fail with PartialStateConflictError # in send_membership_event, cf comment in except block. max_retries = 5 for i in range(max_retries): try: ( event, unpersisted_context, ) = await self.event_creation_handler.create_new_client_event( builder=builder ) ( event, unpersisted_context, ) = await self.add_display_name_to_third_party_invite( room_version_obj, event_dict, event, unpersisted_context ) context = await unpersisted_context.persist(event) EventValidator().validate_new(event, self.config) # We need to tell the transaction queue to send this out, even # though the sender isn't a local user. event.internal_metadata.send_on_behalf_of = self.hs.hostname try: validate_event_for_room_version(event) await self._event_auth_handler.check_auth_rules_from_context( event ) except AuthError as e: logger.warning( "Denying new third party invite %r because %s", event, e ) raise e await self._check_signature(event, context) # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() await member_handler.send_membership_event(None, event, context) break except PartialStateConflictError as e: # Persisting couldn't happen because the room got un-partial stated # in the meantime and context needs to be recomputed, so let's do so. if i == max_retries - 1: raise e else: destinations = {x.split(":", 1)[-1] for x in (sender_user_id, room_id)} try: await self.federation_client.forward_third_party_invite( destinations, room_id, event_dict ) except (RequestSendFailed, HttpResponseException): raise SynapseError(502, "Failed to forward third party invite") async def on_exchange_third_party_invite_request( self, event_dict: JsonDict ) -> None: """Handle an exchange_third_party_invite request from a remote server The remote server will call this when it wants to turn a 3pid invite into a normal m.room.member invite. Args: event_dict: Dictionary containing the event body. """ assert_params_in_dict(event_dict, ["room_id"]) room_version_obj = await self.store.get_room_version(event_dict["room_id"]) # NB: event_dict has a particular specced format we might need to fudge # if we change event formats too much. builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) # Try several times, it could fail with PartialStateConflictError # in send_membership_event, cf comment in except block. max_retries = 5 for i in range(max_retries): try: ( event, unpersisted_context, ) = await self.event_creation_handler.create_new_client_event( builder=builder ) ( event, unpersisted_context, ) = await self.add_display_name_to_third_party_invite( room_version_obj, event_dict, event, unpersisted_context ) context = await unpersisted_context.persist(event) try: validate_event_for_room_version(event) await self._event_auth_handler.check_auth_rules_from_context(event) except AuthError as e: logger.warning("Denying third party invite %r because %s", event, e) raise e await self._check_signature(event, context) # We need to tell the transaction queue to send this out, even # though the sender isn't a local user. event.internal_metadata.send_on_behalf_of = get_domain_from_id( event.sender ) # We retrieve the room member handler here as to not cause a cyclic dependency member_handler = self.hs.get_room_member_handler() await member_handler.send_membership_event(None, event, context) break except PartialStateConflictError as e: # Persisting couldn't happen because the room got un-partial stated # in the meantime and context needs to be recomputed, so let's do so. if i == max_retries - 1: raise e async def add_display_name_to_third_party_invite( self, room_version_obj: RoomVersion, event_dict: JsonDict, event: EventBase, context: UnpersistedEventContextBase, ) -> Tuple[EventBase, UnpersistedEventContextBase]: key = ( EventTypes.ThirdPartyInvite, event.content["third_party_invite"]["signed"]["token"], ) original_invite = None prev_state_ids = await context.get_prev_state_ids(StateFilter.from_types([key])) original_invite_id = prev_state_ids.get(key) if original_invite_id: original_invite = await self.store.get_event( original_invite_id, allow_none=True ) if original_invite: # If the m.room.third_party_invite event's content is empty, it means the # invite has been revoked. In this case, we don't have to raise an error here # because the auth check will fail on the invite (because it's not able to # fetch public keys from the m.room.third_party_invite event's content, which # is empty). display_name = original_invite.content.get("display_name") event_dict["content"]["third_party_invite"]["display_name"] = display_name else: logger.info( "Could not find invite event for third_party_invite: %r", event_dict ) # We don't discard here as this is not the appropriate place to do # auth checks. If we need the invite and don't have it then the # auth check code will explode appropriately. builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) EventValidator().validate_builder(builder) ( event, unpersisted_context, ) = await self.event_creation_handler.create_new_client_event(builder=builder) EventValidator().validate_new(event, self.config) return event, unpersisted_context async def _check_signature(self, event: EventBase, context: EventContext) -> None: """ Checks that the signature in the event is consistent with its invite. Args: event: The m.room.member event to check context: Raises: AuthError: if signature didn't match any keys, or key has been revoked, SynapseError: if a transient error meant a key couldn't be checked for revocation. """ signed = event.content["third_party_invite"]["signed"] token = signed["token"] prev_state_ids = await context.get_prev_state_ids( StateFilter.from_types([(EventTypes.ThirdPartyInvite, token)]) ) invite_event_id = prev_state_ids.get((EventTypes.ThirdPartyInvite, token)) invite_event = None if invite_event_id: invite_event = await self.store.get_event(invite_event_id, allow_none=True) if not invite_event: raise AuthError(403, "Could not find invite") logger.debug("Checking auth on event %r", event.content) last_exception: Optional[Exception] = None # for each public key in the 3pid invite event for public_key_object in event_auth.get_public_keys(invite_event): try: # for each sig on the third_party_invite block of the actual invite for server, signature_block in signed["signatures"].items(): for key_name in signature_block.keys(): if not key_name.startswith("ed25519:"): continue logger.debug( "Attempting to verify sig with key %s from %r " "against pubkey %r", key_name, server, public_key_object, ) try: public_key = public_key_object["public_key"] verify_key = decode_verify_key_bytes( key_name, decode_base64(public_key) ) verify_signed_json(signed, server, verify_key) logger.debug( "Successfully verified sig with key %s from %r " "against pubkey %r", key_name, server, public_key_object, ) except Exception: logger.info( "Failed to verify sig with key %s from %r " "against pubkey %r", key_name, server, public_key_object, ) raise try: if "key_validity_url" in public_key_object: await self._check_key_revocation( public_key, public_key_object["key_validity_url"] ) except Exception: logger.info( "Failed to query key_validity_url %s", public_key_object["key_validity_url"], ) raise return except Exception as e: last_exception = e if last_exception is None: # we can only get here if get_public_keys() returned an empty list # TODO: make this better raise RuntimeError("no public key in invite event") raise last_exception async def _check_key_revocation(self, public_key: str, url: str) -> None: """ Checks whether public_key has been revoked. Args: public_key: base-64 encoded public key. url: Key revocation URL. Raises: AuthError: if they key has been revoked. SynapseError: if a transient error meant a key couldn't be checked for revocation. """ try: response = await self.http_client.get_json(url, {"public_key": public_key}) except Exception: raise SynapseError(502, "Third party certificate could not be checked") if "valid" not in response or not response["valid"]: raise AuthError(403, "Third party certificate was invalid") async def _clean_room_for_join(self, room_id: str) -> None: """Called to clean up any data in DB for a given room, ready for the server to join the room. Args: room_id """ if self.config.worker.worker_app: await self._clean_room_for_join_client(room_id) else: await self.store.clean_room_for_join(room_id) async def get_room_complexity( self, remote_room_hosts: List[str], room_id: str ) -> Optional[dict]: """ Fetch the complexity of a remote room over federation. Args: remote_room_hosts: The remote servers to ask. room_id: The room ID to ask about. Returns: Dict contains the complexity metric versions, while None means we could not fetch the complexity. """ for host in remote_room_hosts: res = await self.federation_client.get_room_complexity(host, room_id) # We got a result, return it. if res: return res # We fell off the bottom, couldn't get the complexity from anyone. Oh # well. return None async def _resume_partial_state_room_sync(self) -> None: """Resumes resyncing of all partial-state rooms after a restart.""" assert not self.config.worker.worker_app partial_state_rooms = await self.store.get_partial_state_room_resync_info() for room_id, resync_info in partial_state_rooms.items(): self._start_partial_state_room_sync( initial_destination=resync_info.joined_via, other_destinations=resync_info.servers_in_room, room_id=room_id, ) def _start_partial_state_room_sync( self, initial_destination: Optional[str], other_destinations: AbstractSet[str], room_id: str, ) -> None: """Starts the background process to resync the state of a partial state room, if it is not already running. Args: initial_destination: the initial homeserver to pull the state from other_destinations: other homeservers to try to pull the state from, if `initial_destination` is unavailable room_id: room to be resynced """ async def _sync_partial_state_room_wrapper() -> None: if room_id in self._active_partial_state_syncs: # Another local user has joined the room while there is already a # partial state sync running. This implies that there is a new join # event to un-partial state. We might find ourselves in one of a few # scenarios: # 1. There is an existing partial state sync. The partial state sync # un-partial states the new join event before completing and all is # well. # 2. Before the latest join, the homeserver was no longer in the room # and there is an existing partial state sync from our previous # membership of the room. The partial state sync may have: # a) succeeded, but not yet terminated. The room will not be # un-partial stated again unless we restart the partial state # sync. # b) failed, because we were no longer in the room and remote # homeservers were refusing our requests, but not yet # terminated. After the latest join, remote homeservers may # start answering our requests again, so we should restart the # partial state sync. # In the cases where we would want to restart the partial state sync, # the room would have the partial state flag when the partial state sync # terminates. self._partial_state_syncs_maybe_needing_restart[room_id] = ( initial_destination, other_destinations, ) return self._active_partial_state_syncs.add(room_id) try: await self._sync_partial_state_room( initial_destination=initial_destination, other_destinations=other_destinations, room_id=room_id, ) finally: # Read the room's partial state flag while we still hold the claim to # being the active partial state sync (so that another partial state # sync can't come along and mess with it under us). # Normally, the partial state flag will be gone. If it isn't, then we # may find ourselves in scenario 2a or 2b as described in the comment # above, where we want to restart the partial state sync. is_still_partial_state_room = await self.store.is_partial_state_room( room_id ) self._active_partial_state_syncs.remove(room_id) if room_id in self._partial_state_syncs_maybe_needing_restart: ( restart_initial_destination, restart_other_destinations, ) = self._partial_state_syncs_maybe_needing_restart.pop(room_id) if is_still_partial_state_room: self._start_partial_state_room_sync( initial_destination=restart_initial_destination, other_destinations=restart_other_destinations, room_id=room_id, ) run_as_background_process( desc="sync_partial_state_room", func=_sync_partial_state_room_wrapper ) async def _sync_partial_state_room( self, initial_destination: Optional[str], other_destinations: AbstractSet[str], room_id: str, ) -> None: """Background process to resync the state of a partial-state room Args: initial_destination: the initial homeserver to pull the state from other_destinations: other homeservers to try to pull the state from, if `initial_destination` is unavailable room_id: room to be resynced """ # Assume that we run on the main process for now. # TODO(faster_joins,multiple workers) # When moving the sync to workers, we need to ensure that # * `_start_partial_state_room_sync` still prevents duplicate resyncs # * `_is_partial_state_room_linearizer` correctly guards partial state flags # for rooms between the workers doing remote joins and resync. assert not self.config.worker.worker_app # TODO(faster_joins): do we need to lock to avoid races? What happens if other # worker processes kick off a resync in parallel? Perhaps we should just elect # a single worker to do the resync. # https://github.com/matrix-org/synapse/issues/12994 # # TODO(faster_joins): what happens if we leave the room during a resync? if we # really leave, that might mean we have difficulty getting the room state over # federation. # https://github.com/matrix-org/synapse/issues/12802 # Make an infinite iterator of destinations to try. Once we find a working # destination, we'll stick with it until it flakes. destinations = _prioritise_destinations_for_partial_state_resync( initial_destination, other_destinations, room_id ) destination_iter = itertools.cycle(destinations) # `destination` is the current remote homeserver we're pulling from. destination = next(destination_iter) logger.info("Syncing state for room %s via %s", room_id, destination) # we work through the queue in order of increasing stream ordering. while True: batch = await self.store.get_partial_state_events_batch(room_id) if not batch: # all the events are updated, so we can update current state and # clear the lazy-loading flag. logger.info("Updating current state for %s", room_id) # TODO(faster_joins): notify workers in notify_room_un_partial_stated # https://github.com/matrix-org/synapse/issues/12994 # # NB: there's a potential race here. If room is purged just before we # call this, we _might_ end up inserting rows into current_state_events. # (The logic is hard to chase through.) We think this is fine, but if # not the HS admin should purge the room again. await self.state_handler.update_current_state(room_id) logger.info("Handling any pending device list updates") await self._device_handler.handle_room_un_partial_stated(room_id) async with self._is_partial_state_room_linearizer.queue(room_id): logger.info("Clearing partial-state flag for %s", room_id) new_stream_id = await self.store.clear_partial_state_room(room_id) if new_stream_id is not None: logger.info("State resync complete for %s", room_id) self._storage_controllers.state.notify_room_un_partial_stated( room_id ) await self._notifier.on_un_partial_stated_room( room_id, new_stream_id ) return # we raced against more events arriving with partial state. Go round # the loop again. We've already logged a warning, so no need for more. continue events = await self.store.get_events_as_list( batch, redact_behaviour=EventRedactBehaviour.as_is, allow_rejected=True, ) for event in events: for attempt in itertools.count(): # We try a new destination on every iteration. try: while True: try: await self._federation_event_handler.update_state_for_partial_state_event( destination, event ) break except FederationPullAttemptBackoffError as e: # We are in the backoff period for one of the event's # prev_events. Wait it out and try again after. logger.warning( "%s; waiting for %d ms...", e, e.retry_after_ms ) await self.clock.sleep(e.retry_after_ms / 1000) # Success, no need to try the rest of the destinations. break except FederationError as e: if attempt == len(destinations) - 1: # We have tried every remote server for this event. Give up. # TODO(faster_joins) giving up isn't the right thing to do # if there's a temporary network outage. retrying # indefinitely is also not the right thing to do if we can # reach all homeservers and they all claim they don't have # the state we want. # https://github.com/matrix-org/synapse/issues/13000 logger.error( "Failed to get state for %s at %s from %s because %s, " "giving up!", room_id, event, destination, e, ) # TODO: We should `record_event_failed_pull_attempt` here, # see https://github.com/matrix-org/synapse/issues/13700 raise # Try the next remote server. logger.info( "Failed to get state for %s at %s from %s because %s", room_id, event, destination, e, ) destination = next(destination_iter) logger.info( "Syncing state for room %s via %s instead", room_id, destination, ) def _prioritise_destinations_for_partial_state_resync( initial_destination: Optional[str], other_destinations: AbstractSet[str], room_id: str, ) -> StrCollection: """Work out the order in which we should ask servers to resync events. If an `initial_destination` is given, it takes top priority. Otherwise all servers are treated equally. :raises ValueError: if no destination is provided at all. """ if initial_destination is None and len(other_destinations) == 0: raise ValueError(f"Cannot resync state of {room_id}: no destinations provided") if initial_destination is None: return other_destinations # Move `initial_destination` to the front of the list. destinations = list(other_destinations) if initial_destination in destinations: destinations.remove(initial_destination) destinations = [initial_destination] + destinations return destinations synapse-1.100.0/synapse/handlers/federation_event.py000066400000000000000000002775241455622526000225400ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import collections import itertools import logging from http import HTTPStatus from typing import ( TYPE_CHECKING, Collection, Container, Dict, Iterable, List, Optional, Sequence, Set, Tuple, ) from prometheus_client import Counter, Histogram from synapse import event_auth from synapse.api.constants import ( EventContentFields, EventTypes, GuestAccess, Membership, RejectedReason, RoomEncryptionAlgorithms, ) from synapse.api.errors import ( AuthError, Codes, EventSizeError, FederationError, FederationPullAttemptBackoffError, HttpResponseException, PartialStateConflictError, RequestSendFailed, SynapseError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion, RoomVersions from synapse.event_auth import ( auth_types_for_event, check_state_dependent_auth_rules, check_state_independent_auth_rules, validate_event_for_room_version, ) from synapse.events import EventBase from synapse.events.snapshot import EventContext, UnpersistedEventContextBase from synapse.federation.federation_client import InvalidResponseError, PulledPduInfo from synapse.logging.context import nested_logging_context from synapse.logging.opentracing import ( SynapseTags, set_tag, start_active_span, tag_args, trace, ) from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.http.devices import ( ReplicationMultiUserDevicesResyncRestServlet, ) from synapse.replication.http.federation import ( ReplicationFederationSendEventsRestServlet, ) from synapse.state import StateResolutionStore from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.types import ( PersistedEventPosition, RoomStreamToken, StateMap, StrCollection, UserID, get_domain_from_id, ) from synapse.types.state import StateFilter from synapse.util.async_helpers import Linearizer, concurrently_execute from synapse.util.iterutils import batch_iter, partition, sorted_topologically from synapse.util.retryutils import NotRetryingDestination from synapse.util.stringutils import shortstr if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) soft_failed_event_counter = Counter( "synapse_federation_soft_failed_events_total", "Events received over federation that we marked as soft_failed", ) # Added to debug performance and track progress on optimizations backfill_processing_after_timer = Histogram( "synapse_federation_backfill_processing_after_time_seconds", "sec", [], buckets=( 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 7.5, 10.0, 15.0, 20.0, 25.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0, 120.0, 150.0, 180.0, "+Inf", ), ) class FederationEventHandler: """Handles events that originated from federation. Responsible for handing incoming events and passing them on to the rest of the homeserver (including auth and state conflict resolutions) """ def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self._store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self._state_handler = hs.get_state_handler() self._event_creation_handler = hs.get_event_creation_handler() self._event_auth_handler = hs.get_event_auth_handler() self._message_handler = hs.get_message_handler() self._bulk_push_rule_evaluator = hs.get_bulk_push_rule_evaluator() self._state_resolution_handler = hs.get_state_resolution_handler() # avoid a circular dependency by deferring execution here self._get_room_member_handler = hs.get_room_member_handler self._federation_client = hs.get_federation_client() self._third_party_event_rules = ( hs.get_module_api_callbacks().third_party_event_rules ) self._notifier = hs.get_notifier() self._is_mine_id = hs.is_mine_id self._is_mine_server_name = hs.is_mine_server_name self._server_name = hs.hostname self._instance_name = hs.get_instance_name() self._config = hs.config self._ephemeral_messages_enabled = hs.config.server.enable_ephemeral_messages self._send_events = ReplicationFederationSendEventsRestServlet.make_client(hs) if hs.config.worker.worker_app: self._multi_user_device_resync = ( ReplicationMultiUserDevicesResyncRestServlet.make_client(hs) ) else: self._device_list_updater = hs.get_device_handler().device_list_updater # When joining a room we need to queue any events for that room up. # For each room, a list of (pdu, origin) tuples. # TODO: replace this with something more elegant, probably based around the # federation event staging area. self.room_queues: Dict[str, List[Tuple[EventBase, str]]] = {} self._room_pdu_linearizer = Linearizer("fed_room_pdu") async def on_receive_pdu(self, origin: str, pdu: EventBase) -> None: """Process a PDU received via a federation /send/ transaction Args: origin: server which initiated the /send/ transaction. Will be used to fetch missing events or state. pdu: received PDU """ # We should never see any outliers here. assert not pdu.internal_metadata.outlier room_id = pdu.room_id event_id = pdu.event_id # We reprocess pdus when we have seen them only as outliers existing = await self._store.get_event( event_id, allow_none=True, allow_rejected=True ) # FIXME: Currently we fetch an event again when we already have it # if it has been marked as an outlier. if existing: if not existing.internal_metadata.is_outlier(): logger.info( "Ignoring received event %s which we have already seen", event_id ) return if pdu.internal_metadata.is_outlier(): logger.info( "Ignoring received outlier %s which we already have as an outlier", event_id, ) return logger.info("De-outliering event %s", event_id) # do some initial sanity-checking of the event. In particular, make # sure it doesn't have hundreds of prev_events or auth_events, which # could cause a huge state resolution or cascade of event fetches. try: self._sanity_check_event(pdu) except SynapseError as err: logger.warning("Received event failed sanity checks") raise FederationError("ERROR", err.code, err.msg, affected=pdu.event_id) # If we are currently in the process of joining this room, then we # queue up events for later processing. if room_id in self.room_queues: logger.info( "Queuing PDU from %s for now: join in progress", origin, ) self.room_queues[room_id].append((pdu, origin)) return # If we're not in the room just ditch the event entirely. This is # probably an old server that has come back and thinks we're still in # the room (or we've been rejoined to the room by a state reset). # # Note that if we were never in the room then we would have already # dropped the event, since we wouldn't know the room version. is_in_room = await self._event_auth_handler.is_host_in_room( room_id, self._server_name ) if not is_in_room: logger.info( "Ignoring PDU from %s as we're not in the room", origin, ) return None # Try to fetch any missing prev events to fill in gaps in the graph prevs = set(pdu.prev_event_ids()) seen = await self._store.have_events_in_timeline(prevs) missing_prevs = prevs - seen if missing_prevs: # We only backfill backwards to the min depth. min_depth = await self._store.get_min_depth(pdu.room_id) logger.debug("min_depth: %d", min_depth) if min_depth is not None and pdu.depth > min_depth: # If we're missing stuff, ensure we only fetch stuff one # at a time. logger.info( "Acquiring room lock to fetch %d missing prev_events: %s", len(missing_prevs), shortstr(missing_prevs), ) async with self._room_pdu_linearizer.queue(pdu.room_id): logger.info( "Acquired room lock to fetch %d missing prev_events", len(missing_prevs), ) try: await self._get_missing_events_for_pdu( origin, pdu, prevs, min_depth ) except Exception as e: raise Exception( "Error fetching missing prev_events for %s: %s" % (event_id, e) ) from e # Update the set of things we've seen after trying to # fetch the missing stuff seen = await self._store.have_events_in_timeline(prevs) missing_prevs = prevs - seen if not missing_prevs: logger.info("Found all missing prev_events") if missing_prevs: # since this event was pushed to us, it is possible for it to # become the only forward-extremity in the room, and we would then # trust its state to be the state for the whole room. This is very # bad. Further, if the event was pushed to us, there is no excuse # for us not to have all the prev_events. (XXX: apart from # min_depth?) # # We therefore reject any such events. logger.warning( "Rejecting: failed to fetch %d prev events: %s", len(missing_prevs), shortstr(missing_prevs), ) raise FederationError( "ERROR", 403, ( "Your server isn't divulging details about prev_events " "referenced in this event." ), affected=pdu.event_id, ) try: context = await self._state_handler.compute_event_context(pdu) await self._process_received_pdu(origin, pdu, context) except PartialStateConflictError: # The room was un-partial stated while we were processing the PDU. # Try once more, with full state this time. logger.info( "Room %s was un-partial stated while processing the PDU, trying again.", room_id, ) context = await self._state_handler.compute_event_context(pdu) await self._process_received_pdu(origin, pdu, context) async def on_send_membership_event( self, origin: str, event: EventBase ) -> Tuple[EventBase, EventContext]: """ We have received a join/leave/knock event for a room via send_join/leave/knock. Verify that event and send it into the room on the remote homeserver's behalf. This is quite similar to on_receive_pdu, with the following principal differences: * only membership events are permitted (and only events with sender==state_key -- ie, no kicks or bans) * *We* send out the event on behalf of the remote server. * We enforce the membership restrictions of restricted rooms. * Rejected events result in an exception rather than being stored. There are also other differences, however it is not clear if these are by design or omission. In particular, we do not attempt to backfill any missing prev_events. Args: origin: The homeserver of the remote (joining/invited/knocking) user. event: The member event that has been signed by the remote homeserver. Returns: The event and context of the event after inserting it into the room graph. Raises: RuntimeError if any prev_events are missing SynapseError if the event is not accepted into the room PartialStateConflictError if the room was un-partial stated in between computing the state at the event and persisting it. The caller should retry exactly once in this case. """ logger.debug( "on_send_membership_event: Got event: %s, signatures: %s", event.event_id, event.signatures, ) if get_domain_from_id(event.sender) != origin: logger.info( "Got send_membership request for user %r from different origin %s", event.sender, origin, ) raise SynapseError(403, "User not from origin", Codes.FORBIDDEN) if event.sender != event.state_key: raise SynapseError(400, "state_key and sender must match", Codes.BAD_JSON) assert not event.internal_metadata.outlier # Send this event on behalf of the other server. # # The remote server isn't a full participant in the room at this point, so # may not have an up-to-date list of the other homeservers participating in # the room, so we send it on their behalf. event.internal_metadata.send_on_behalf_of = origin context = await self._state_handler.compute_event_context(event) await self._check_event_auth(origin, event, context) if context.rejected: raise SynapseError( 403, f"{event.membership} event was rejected", Codes.FORBIDDEN ) # for joins, we need to check the restrictions of restricted rooms if event.membership == Membership.JOIN: await self.check_join_restrictions(context, event) # for knock events, we run the third-party event rules. It's not entirely clear # why we don't do this for other sorts of membership events. if event.membership == Membership.KNOCK: event_allowed, _ = await self._third_party_event_rules.check_event_allowed( event, context ) if not event_allowed: logger.info("Sending of knock %s forbidden by third-party rules", event) raise SynapseError( 403, "This event is not allowed in this context", Codes.FORBIDDEN ) # all looks good, we can persist the event. # First, precalculate the joined hosts so that the federation sender doesn't # need to. await self._event_creation_handler.cache_joined_hosts_for_events( [(event, context)] ) await self._check_for_soft_fail(event, context=context, origin=origin) await self._run_push_actions_and_persist_event(event, context) return event, context async def check_join_restrictions( self, context: UnpersistedEventContextBase, event: EventBase, ) -> None: """Check that restrictions in restricted join rules are matched Called when we receive a join event via send_join. Raises an auth error if the restrictions are not matched. """ prev_state_ids = await context.get_prev_state_ids() # Check if the user is already in the room or invited to the room. user_id = event.state_key prev_member_event_id = prev_state_ids.get((EventTypes.Member, user_id), None) prev_membership = None if prev_member_event_id: prev_member_event = await self._store.get_event(prev_member_event_id) prev_membership = prev_member_event.membership # Check if the member should be allowed access via membership in a space. await self._event_auth_handler.check_restricted_join_rules( prev_state_ids, event.room_version, user_id, prev_membership, ) @trace async def process_remote_join( self, origin: str, room_id: str, auth_events: List[EventBase], state: List[EventBase], event: EventBase, room_version: RoomVersion, partial_state: bool, ) -> int: """Persists the events returned by a send_join Checks the auth chain is valid (and passes auth checks) for the state and event. Then persists all of the events. Notifies about the persisted events where appropriate. Args: origin: Where the events came from room_id: auth_events state event room_version: The room version we expect this room to have, and will raise if it doesn't match the version in the create event. partial_state: True if the state omits non-critical membership events Returns: The stream ID after which all events have been persisted. Raises: SynapseError if the response is in some way invalid. PartialStateConflictError if the homeserver is already in the room and it has been un-partial stated. """ create_event = None for e in state: if (e.type, e.state_key) == (EventTypes.Create, ""): create_event = e break if create_event is None: # If the state doesn't have a create event then the room is # invalid, and it would fail auth checks anyway. raise SynapseError(400, "No create event in state") room_version_id = create_event.content.get( "room_version", RoomVersions.V1.identifier ) if room_version.identifier != room_version_id: raise SynapseError(400, "Room version mismatch") # persist the auth chain and state events. # # any invalid events here will be marked as rejected, and we'll carry on. # # any events whose auth events are missing (ie, not in the send_join response, # and not already in our db) will just be ignored. This is correct behaviour, # because the reason that auth_events are missing might be due to us being # unable to validate their signatures. The fact that we can't validate their # signatures right now doesn't mean that we will *never* be able to, so it # is premature to reject them. # await self._auth_and_persist_outliers( room_id, itertools.chain(auth_events, state) ) # and now persist the join event itself. logger.info( "Peristing join-via-remote %s (partial_state: %s)", event, partial_state ) with nested_logging_context(suffix=event.event_id): if partial_state: # When handling a second partial state join into a partial state room, # the returned state will exclude the membership from the first join. To # preserve prior memberships, we try to compute the partial state before # the event ourselves if we know about any of the prev events. # # When we don't know about any of the prev events, it's fine to just use # the returned state, since the new join will create a new forward # extremity, and leave the forward extremity containing our prior # memberships alone. prev_event_ids = set(event.prev_event_ids()) seen_event_ids = await self._store.have_events_in_timeline( prev_event_ids ) missing_event_ids = prev_event_ids - seen_event_ids state_maps_to_resolve: List[StateMap[str]] = [] # Fetch the state after the prev events that we know about. state_maps_to_resolve.extend( ( await self._state_storage_controller.get_state_groups_ids( room_id, seen_event_ids, await_full_state=False ) ).values() ) # When there are prev events we do not have the state for, we state # resolve with the state returned by the remote homeserver. if missing_event_ids or len(state_maps_to_resolve) == 0: state_maps_to_resolve.append( {(e.type, e.state_key): e.event_id for e in state} ) state_ids_before_event = ( await self._state_resolution_handler.resolve_events_with_store( event.room_id, room_version.identifier, state_maps_to_resolve, event_map=None, state_res_store=StateResolutionStore(self._store), ) ) else: state_ids_before_event = { (e.type, e.state_key): e.event_id for e in state } context = await self._state_handler.compute_event_context( event, state_ids_before_event=state_ids_before_event, partial_state=partial_state, ) await self._check_event_auth(origin, event, context) if context.rejected: raise SynapseError(403, "Join event was rejected") # the remote server is responsible for sending our join event to the rest # of the federation. Indeed, attempting to do so will result in problems # when we try to look up the state before the join (to get the server list) # and discover that we do not have it. event.internal_metadata.proactively_send = False stream_id_after_persist = await self.persist_events_and_notify( room_id, [(event, context)] ) return stream_id_after_persist async def update_state_for_partial_state_event( self, destination: str, event: EventBase ) -> None: """Recalculate the state at an event as part of a de-partial-stating process Args: destination: server to request full state from event: partial-state event to be de-partial-stated Raises: FederationPullAttemptBackoffError if we are are deliberately not attempting to pull the given event over federation because we've already done so recently and are backing off. FederationError if we fail to request state from the remote server. """ logger.info("Updating state for %s", event.event_id) with nested_logging_context(suffix=event.event_id): # if we have all the event's prev_events, then we can work out the # state based on their states. Otherwise, we request it from the destination # server. # # This is the same operation as we do when we receive a regular event # over federation. context = await self._compute_event_context_with_maybe_missing_prevs( destination, event ) if context.partial_state: # this can happen if some or all of the event's prev_events still have # partial state. We were careful to only pick events from the db without # partial-state prev events, so that implies that a prev event has # been persisted (with partial state) since we did the query. # # So, let's just ignore `event` for now; when we re-run the db query # we should instead get its partial-state prev event, which we will # de-partial-state, and then come back to event. logger.warning( "%s still has prev_events with partial state: can't de-partial-state it yet", event.event_id, ) return # since the state at this event has changed, we should now re-evaluate # whether it should have been rejected. We must already have all of the # auth events (from last time we went round this path), so there is no # need to pass the origin. await self._check_event_auth(None, event, context) await self._store.update_state_for_partial_state_event(event, context) self._state_storage_controller.notify_event_un_partial_stated( event.event_id ) # Notify that there's a new row in the un_partial_stated_events stream. self._notifier.notify_replication() @trace async def backfill( self, dest: str, room_id: str, limit: int, extremities: StrCollection ) -> None: """Trigger a backfill request to `dest` for the given `room_id` This will attempt to get more events from the remote. If the other side has no new events to offer, this will return an empty list. As the events are received, we check their signatures, and also do some sanity-checking on them. If any of the backfilled events are invalid, this method throws a SynapseError. We might also raise an InvalidResponseError if the response from the remote server is just bogus. TODO: make this more useful to distinguish failures of the remote server from invalid events (there is probably no point in trying to re-fetch invalid events from every other HS in the room.) """ if self._is_mine_server_name(dest): raise SynapseError(400, "Can't backfill from self.") events = await self._federation_client.backfill( dest, room_id, limit=limit, extremities=extremities ) if not events: return with backfill_processing_after_timer.time(): # if there are any events in the wrong room, the remote server is buggy and # should not be trusted. for ev in events: if ev.room_id != room_id: raise InvalidResponseError( f"Remote server {dest} returned event {ev.event_id} which is in " f"room {ev.room_id}, when we were backfilling in {room_id}" ) await self._process_pulled_events( dest, events, backfilled=True, ) @trace async def _get_missing_events_for_pdu( self, origin: str, pdu: EventBase, prevs: Set[str], min_depth: int ) -> None: """ Args: origin: Origin of the pdu. Will be called to get the missing events pdu: received pdu prevs: List of event ids which we are missing min_depth: Minimum depth of events to return. """ room_id = pdu.room_id event_id = pdu.event_id seen = await self._store.have_events_in_timeline(prevs) if not prevs - seen: return latest_frozen = await self._store.get_latest_event_ids_in_room(room_id) # We add the prev events that we have seen to the latest # list to ensure the remote server doesn't give them to us latest = seen | latest_frozen logger.info( "Requesting missing events between %s and %s", shortstr(latest), event_id, ) # XXX: we set timeout to 10s to help workaround # https://github.com/matrix-org/synapse/issues/1733. # The reason is to avoid holding the linearizer lock # whilst processing inbound /send transactions, causing # FDs to stack up and block other inbound transactions # which empirically can currently take up to 30 minutes. # # N.B. this explicitly disables retry attempts. # # N.B. this also increases our chances of falling back to # fetching fresh state for the room if the missing event # can't be found, which slightly reduces our security. # it may also increase our DAG extremity count for the room, # causing additional state resolution? See https://github.com/matrix-org/synapse/issues/1760. # However, fetching state doesn't hold the linearizer lock # apparently. # # see https://github.com/matrix-org/synapse/pull/1744 # # ---- # # Update richvdh 2018/09/18: There are a number of problems with timing this # request out aggressively on the client side: # # - it plays badly with the server-side rate-limiter, which starts tarpitting you # if you send too many requests at once, so you end up with the server carefully # working through the backlog of your requests, which you have already timed # out. # # - for this request in particular, we now (as of # https://github.com/matrix-org/synapse/pull/3456) reject any PDUs where the # server can't produce a plausible-looking set of prev_events - so we becone # much more likely to reject the event. # # - contrary to what it says above, we do *not* fall back to fetching fresh state # for the room if get_missing_events times out. Rather, we give up processing # the PDU whose prevs we are missing, which then makes it much more likely that # we'll end up back here for the *next* PDU in the list, which exacerbates the # problem. # # - the aggressive 10s timeout was introduced to deal with incoming federation # requests taking 8 hours to process. It's not entirely clear why that was going # on; certainly there were other issues causing traffic storms which are now # resolved, and I think in any case we may be more sensible about our locking # now. We're *certainly* more sensible about our logging. # # All that said: Let's try increasing the timeout to 60s and see what happens. try: missing_events = await self._federation_client.get_missing_events( origin, room_id, earliest_events_ids=list(latest), latest_events=[pdu], limit=10, min_depth=min_depth, timeout=60000, ) except (RequestSendFailed, HttpResponseException, NotRetryingDestination) as e: # We failed to get the missing events, but since we need to handle # the case of `get_missing_events` not returning the necessary # events anyway, it is safe to simply log the error and continue. logger.warning("Failed to get prev_events: %s", e) return logger.info("Got %d prev_events", len(missing_events)) await self._process_pulled_events(origin, missing_events, backfilled=False) @trace async def _process_pulled_events( self, origin: str, events: Collection[EventBase], backfilled: bool ) -> None: """Process a batch of events we have pulled from a remote server Pulls in any events required to auth the events, persists the received events, and notifies clients, if appropriate. Assumes the events have already had their signatures and hashes checked. Params: origin: The server we received these events from events: The received events. backfilled: True if this is part of a historical batch of events (inhibits notification to clients, and validation of device keys.) """ set_tag( SynapseTags.FUNC_ARG_PREFIX + "event_ids", str([event.event_id for event in events]), ) set_tag( SynapseTags.FUNC_ARG_PREFIX + "event_ids.length", str(len(events)), ) set_tag(SynapseTags.FUNC_ARG_PREFIX + "backfilled", str(backfilled)) logger.debug( "processing pulled backfilled=%s events=%s", backfilled, [ "event_id=%s,depth=%d,body=%s,prevs=%s\n" % ( event.event_id, event.depth, event.content.get("body", event.type), event.prev_event_ids(), ) for event in events ], ) # Check if we already any of these have these events. # Note: we currently make a lookup in the database directly here rather than # checking the event cache, due to: # https://github.com/matrix-org/synapse/issues/13476 existing_events_map = await self._store._get_events_from_db( [event.event_id for event in events] ) new_events: List[EventBase] = [] for event in events: event_id = event.event_id # If we've already seen this event ID... if event_id in existing_events_map: existing_event = existing_events_map[event_id] # ...and the event itself was not previously stored as an outlier... if not existing_event.event.internal_metadata.is_outlier(): # ...then there's no need to persist it. We have it already. logger.info( "_process_pulled_event: Ignoring received event %s which we " "have already seen", event.event_id, ) continue # While we have seen this event before, it was stored as an outlier. # We'll now persist it as a non-outlier. logger.info("De-outliering event %s", event_id) # Continue on with the events that are new to us. new_events.append(event) set_tag( SynapseTags.RESULT_PREFIX + "new_events.length", str(len(new_events)), ) @trace async def _process_new_pulled_events(new_events: Collection[EventBase]) -> None: # We want to sort these by depth so we process them and tell clients about # them in order. It's also more efficient to backfill this way (`depth` # ascending) because one backfill event is likely to be the `prev_event` of # the next event we're going to process. sorted_events = sorted(new_events, key=lambda x: x.depth) for ev in sorted_events: with nested_logging_context(ev.event_id): await self._process_pulled_event(origin, ev, backfilled=backfilled) # Check if we've already tried to process these events at some point in the # past. We aren't concerned with the expontntial backoff here, just whether it # has failed to be processed before. event_ids_with_failed_pull_attempts = ( await self._store.get_event_ids_with_failed_pull_attempts( [event.event_id for event in new_events] ) ) events_with_failed_pull_attempts, fresh_events = partition( new_events, lambda e: e.event_id in event_ids_with_failed_pull_attempts ) set_tag( SynapseTags.FUNC_ARG_PREFIX + "events_with_failed_pull_attempts", str(event_ids_with_failed_pull_attempts), ) set_tag( SynapseTags.RESULT_PREFIX + "events_with_failed_pull_attempts.length", str(len(events_with_failed_pull_attempts)), ) set_tag( SynapseTags.FUNC_ARG_PREFIX + "fresh_events", str([event.event_id for event in fresh_events]), ) set_tag( SynapseTags.RESULT_PREFIX + "fresh_events.length", str(len(fresh_events)), ) # Process previously failed backfill events in the background to not waste # time on something that is likely to fail again. if len(events_with_failed_pull_attempts) > 0: run_as_background_process( "_process_new_pulled_events_with_failed_pull_attempts", _process_new_pulled_events, events_with_failed_pull_attempts, ) # We can optimistically try to process and wait for the event to be fully # persisted if we've never tried before. if len(fresh_events) > 0: await _process_new_pulled_events(fresh_events) @trace @tag_args async def _process_pulled_event( self, origin: str, event: EventBase, backfilled: bool ) -> None: """Process a single event that we have pulled from a remote server Pulls in any events required to auth the event, persists the received event, and notifies clients, if appropriate. Assumes the event has already had its signatures and hashes checked. This is somewhat equivalent to on_receive_pdu, but applies somewhat different logic in the case that we are missing prev_events (in particular, it just requests the state at that point, rather than triggering a get_missing_events) - so is appropriate when we have pulled the event from a remote server, rather than having it pushed to us. Params: origin: The server we received this event from events: The received event backfilled: True if this is part of a historical batch of events (inhibits notification to clients, and validation of device keys.) """ logger.info("Processing pulled event %s", event) # This function should not be used to persist outliers (use something # else) because this does a bunch of operations that aren't necessary # (extra work; in particular, it makes sure we have all the prev_events # and resolves the state across those prev events). If you happen to run # into a situation where the event you're trying to process/backfill is # marked as an `outlier`, then you should update that spot to return an # `EventBase` copy that doesn't have `outlier` flag set. # # `EventBase` is used to represent both an event we have not yet # persisted, and one that we have persisted and now keep in the cache. # In an ideal world this method would only be called with the first type # of event, but it turns out that's not actually the case and for # example, you could get an event from cache that is marked as an # `outlier` (fix up that spot though). assert not event.internal_metadata.is_outlier(), ( "Outlier event passed to _process_pulled_event. " "To persist an event as a non-outlier, make sure to pass in a copy without `event.internal_metadata.outlier = true`." ) event_id = event.event_id try: self._sanity_check_event(event) except SynapseError as err: logger.warning("Event %s failed sanity check: %s", event_id, err) await self._store.record_event_failed_pull_attempt( event.room_id, event_id, str(err) ) return try: try: context = await self._compute_event_context_with_maybe_missing_prevs( origin, event ) await self._process_received_pdu( origin, event, context, backfilled=backfilled, ) except PartialStateConflictError: # The room was un-partial stated while we were processing the event. # Try once more, with full state this time. context = await self._compute_event_context_with_maybe_missing_prevs( origin, event ) # We ought to have full state now, barring some unlikely race where we left and # rejoned the room in the background. if context.partial_state: raise AssertionError( f"Event {event.event_id} still has a partial resolved state " f"after room {event.room_id} was un-partial stated" ) await self._process_received_pdu( origin, event, context, backfilled=backfilled, ) except FederationPullAttemptBackoffError as exc: # Log a warning about why we failed to process the event (the error message # for `FederationPullAttemptBackoffError` is pretty good) logger.warning("_process_pulled_event: %s", exc) # We do not record a failed pull attempt when we backoff fetching a missing # `prev_event` because not being able to fetch the `prev_events` just means # we won't be able to de-outlier the pulled event. But we can still use an # `outlier` in the state/auth chain for another event. So we shouldn't stop # a downstream event from trying to pull it. # # This avoids a cascade of backoff for all events in the DAG downstream from # one event backoff upstream. except FederationError as e: await self._store.record_event_failed_pull_attempt( event.room_id, event_id, str(e) ) if e.code == 403: logger.warning("Pulled event %s failed history check.", event_id) else: raise @trace async def _compute_event_context_with_maybe_missing_prevs( self, dest: str, event: EventBase ) -> EventContext: """Build an EventContext structure for a non-outlier event whose prev_events may be missing. This is used when we have pulled a batch of events from a remote server, and may not have all the prev_events. To build an EventContext, we need to calculate the state before the event. If we already have all the prev_events for `event`, we can simply use the state after the prev_events to calculate the state before `event`. Otherwise, the missing prevs become new backwards extremities, and we fall back to asking the remote server for the state after each missing `prev_event`, and resolving across them. That's ok provided we then resolve the state against other bits of the DAG before using it - in other words, that the received event `event` is not going to become the only forwards_extremity in the room (which will ensure that you can't just take over a room by sending an event, withholding its prev_events, and declaring yourself to be an admin in the subsequent state request). In other words: we should only call this method if `event` has been *pulled* as part of a batch of missing prev events, or similar. Params: dest: the remote server to ask for state at the missing prevs. Typically, this will be the server we got `event` from. event: an event to check for missing prevs. Returns: The event context. Raises: FederationPullAttemptBackoffError if we are are deliberately not attempting to pull one of the given event's `prev_event`s over federation because we've already done so recently and are backing off. FederationError if we fail to get the state from the remote server after any missing `prev_event`s. """ room_id = event.room_id event_id = event.event_id prevs = set(event.prev_event_ids()) seen = await self._store.have_events_in_timeline(prevs) missing_prevs = prevs - seen # If we've already recently attempted to pull this missing event, don't # try it again so soon. Since we have to fetch all of the prev_events, we can # bail early here if we find any to ignore. prevs_with_pull_backoff = ( await self._store.get_event_ids_to_not_pull_from_backoff( room_id, missing_prevs ) ) if len(prevs_with_pull_backoff) > 0: raise FederationPullAttemptBackoffError( event_ids=prevs_with_pull_backoff.keys(), message=( f"While computing context for event={event_id}, not attempting to " f"pull missing prev_events={list(prevs_with_pull_backoff.keys())} " "because we already tried to pull recently (backing off)." ), retry_after_ms=( max(prevs_with_pull_backoff.values()) - self._clock.time_msec() ), ) if not missing_prevs: return await self._state_handler.compute_event_context(event) logger.info( "Event %s is missing prev_events %s: calculating state for a " "backwards extremity", event_id, shortstr(missing_prevs), ) # Calculate the state after each of the previous events, and # resolve them to find the correct state at the current event. try: # Determine whether we may be about to retrieve partial state # Events may be un-partial stated right after we compute the partial state # flag, but that's okay, as long as the flag errs on the conservative side. partial_state_flags = await self._store.get_partial_state_events(seen) partial_state = any(partial_state_flags.values()) # state_maps is a list of mappings from (type, state_key) to event_id state_maps: List[StateMap[str]] = [] # Ask the remote server for the states we don't # know about for p in missing_prevs: logger.info("Requesting state after missing prev_event %s", p) with nested_logging_context(p): # note that if any of the missing prevs share missing state or # auth events, the requests to fetch those events are deduped # by the get_pdu_cache in federation_client. remote_state_map = ( await self._get_state_ids_after_missing_prev_event( dest, room_id, p ) ) state_maps.append(remote_state_map) # Get the state of the events we know about. We do this *after* # trying to fetch missing state over federation as that might fail # and then we can skip loading the local state. ours = await self._state_storage_controller.get_state_groups_ids( room_id, seen, await_full_state=False ) state_maps.extend(ours.values()) # we don't need this any more, let's delete it. del ours room_version = await self._store.get_room_version_id(room_id) state_map = await self._state_resolution_handler.resolve_events_with_store( room_id, room_version, state_maps, event_map={event_id: event}, state_res_store=StateResolutionStore(self._store), ) except Exception as e: logger.warning( "Error attempting to resolve state at missing prev_events: %s", e ) raise FederationError( "ERROR", 403, "We can't get valid state history.", affected=event_id, ) return await self._state_handler.compute_event_context( event, state_ids_before_event=state_map, partial_state=partial_state ) @trace @tag_args async def _get_state_ids_after_missing_prev_event( self, destination: str, room_id: str, event_id: str, ) -> StateMap[str]: """Requests all of the room state at a given event from a remote homeserver. Args: destination: The remote homeserver to query for the state. room_id: The id of the room we're interested in. event_id: The id of the event we want the state at. Returns: The event ids of the state *after* the given event. Raises: InvalidResponseError: if the remote homeserver's response contains fields of the wrong type. """ # It would be better if we could query the difference from our known # state to the given `event_id` so the sending server doesn't have to # send as much and we don't have to process as many events. For example # in a room like #matrix:matrix.org, we get 200k events (77k state_events, 122k # auth_events) from this call. # # Tracked by https://github.com/matrix-org/synapse/issues/13618 ( state_event_ids, auth_event_ids, ) = await self._federation_client.get_room_state_ids( destination, room_id, event_id=event_id ) logger.debug( "state_ids returned %i state events, %i auth events", len(state_event_ids), len(auth_event_ids), ) # Start by checking events we already have in the DB desired_events = set(state_event_ids) desired_events.add(event_id) logger.debug("Fetching %i events from cache/store", len(desired_events)) have_events = await self._store.have_seen_events(room_id, desired_events) missing_desired_event_ids = desired_events - have_events logger.debug( "We are missing %i events (got %i)", len(missing_desired_event_ids), len(have_events), ) # We probably won't need most of the auth events, so let's just check which # we have for now, rather than thrashing the event cache with them all # unnecessarily. # TODO: we probably won't actually need all of the auth events, since we # already have a bunch of the state events. It would be nice if the # federation api gave us a way of finding out which we actually need. missing_auth_event_ids = set(auth_event_ids) - have_events missing_auth_event_ids.difference_update( await self._store.have_seen_events(room_id, missing_auth_event_ids) ) logger.debug("We are also missing %i auth events", len(missing_auth_event_ids)) missing_event_ids = missing_desired_event_ids | missing_auth_event_ids set_tag( SynapseTags.RESULT_PREFIX + "missing_auth_event_ids", str(missing_auth_event_ids), ) set_tag( SynapseTags.RESULT_PREFIX + "missing_auth_event_ids.length", str(len(missing_auth_event_ids)), ) set_tag( SynapseTags.RESULT_PREFIX + "missing_desired_event_ids", str(missing_desired_event_ids), ) set_tag( SynapseTags.RESULT_PREFIX + "missing_desired_event_ids.length", str(len(missing_desired_event_ids)), ) # Making an individual request for each of 1000s of events has a lot of # overhead. On the other hand, we don't really want to fetch all of the events # if we already have most of them. # # As an arbitrary heuristic, if we are missing more than 10% of the events, then # we fetch the whole state. # # TODO: might it be better to have an API which lets us do an aggregate event # request if (len(missing_event_ids) * 10) >= len(auth_event_ids) + len(state_event_ids): logger.debug("Requesting complete state from remote") await self._get_state_and_persist(destination, room_id, event_id) else: logger.debug("Fetching %i events from remote", len(missing_event_ids)) await self._get_events_and_persist( destination=destination, room_id=room_id, event_ids=missing_event_ids ) # We now need to fill out the state map, which involves fetching the # type and state key for each event ID in the state. state_map = {} event_metadata = await self._store.get_metadata_for_events(state_event_ids) for state_event_id, metadata in event_metadata.items(): if metadata.room_id != room_id: # This is a bogus situation, but since we may only discover it a long time # after it happened, we try our best to carry on, by just omitting the # bad events from the returned state set. # # This can happen if a remote server claims that the state or # auth_events at an event in room A are actually events in room B logger.warning( "Remote server %s claims event %s in room %s is an auth/state " "event in room %s", destination, state_event_id, metadata.room_id, room_id, ) continue if metadata.state_key is None: logger.warning( "Remote server gave us non-state event in state: %s", state_event_id ) continue state_map[(metadata.event_type, metadata.state_key)] = state_event_id # if we couldn't get the prev event in question, that's a problem. remote_event = await self._store.get_event( event_id, allow_none=True, allow_rejected=True, redact_behaviour=EventRedactBehaviour.as_is, ) if not remote_event: raise Exception("Unable to get missing prev_event %s" % (event_id,)) # missing state at that event is a warning, not a blocker # XXX: this doesn't sound right? it means that we'll end up with incomplete # state. failed_to_fetch = desired_events - event_metadata.keys() # `event_id` could be missing from `event_metadata` because it's not necessarily # a state event. We've already checked that we've fetched it above. failed_to_fetch.discard(event_id) if failed_to_fetch: logger.warning( "Failed to fetch missing state events for %s %s", event_id, failed_to_fetch, ) set_tag( SynapseTags.RESULT_PREFIX + "failed_to_fetch", str(failed_to_fetch), ) set_tag( SynapseTags.RESULT_PREFIX + "failed_to_fetch.length", str(len(failed_to_fetch)), ) if remote_event.is_state() and remote_event.rejected_reason is None: state_map[ (remote_event.type, remote_event.state_key) ] = remote_event.event_id return state_map @trace @tag_args async def _get_state_and_persist( self, destination: str, room_id: str, event_id: str ) -> None: """Get the complete room state at a given event, and persist any new events as outliers""" room_version = await self._store.get_room_version(room_id) auth_events, state_events = await self._federation_client.get_room_state( destination, room_id, event_id=event_id, room_version=room_version ) logger.info("/state returned %i events", len(auth_events) + len(state_events)) await self._auth_and_persist_outliers( room_id, itertools.chain(auth_events, state_events) ) # we also need the event itself. if not await self._store.have_seen_event(room_id, event_id): await self._get_events_and_persist( destination=destination, room_id=room_id, event_ids=(event_id,) ) @trace async def _process_received_pdu( self, origin: str, event: EventBase, context: EventContext, backfilled: bool = False, ) -> None: """Called when we have a new non-outlier event. This is called when we have a new event to add to the room DAG. This can be due to: * events received directly via a /send request * events retrieved via get_missing_events after a /send request * events backfilled after a client request. It's not currently used for events received from incoming send_{join,knock,leave} requests (which go via on_send_membership_event), nor for joins created by a remote join dance (which go via process_remote_join). We need to do auth checks and put it through the StateHandler. Args: origin: server sending the event event: event to be persisted context: The `EventContext` to persist the event with. backfilled: True if this is part of a historical batch of events (inhibits notification to clients, and validation of device keys.) PartialStateConflictError: if the room was un-partial stated in between computing the state at the event and persisting it. The caller should recompute `context` and retry exactly once when this happens. """ logger.debug("Processing event: %s", event) assert not event.internal_metadata.outlier try: await self._check_event_auth(origin, event, context) except AuthError as e: # This happens only if we couldn't find the auth events. We'll already have # logged a warning, so now we just convert to a FederationError. raise FederationError("ERROR", e.code, e.msg, affected=event.event_id) if not backfilled and not context.rejected: # For new (non-backfilled and non-outlier) events we check if the event # passes auth based on the current state. If it doesn't then we # "soft-fail" the event. await self._check_for_soft_fail(event, context=context, origin=origin) await self._run_push_actions_and_persist_event(event, context, backfilled) if backfilled or context.rejected: return await self._maybe_kick_guest_users(event) # For encrypted messages we check that we know about the sending device, # if we don't then we mark the device cache for that user as stale. if event.type == EventTypes.Encrypted: device_id = event.content.get("device_id") sender_key = event.content.get("sender_key") cached_devices = await self._store.get_cached_devices_for_user(event.sender) resync = False # Whether we should resync device lists. device = None if device_id is not None: device = cached_devices.get(device_id) if device is None: logger.info( "Received event from remote device not in our cache: %s %s", event.sender, device_id, ) resync = True # We also check if the `sender_key` matches what we expect. if sender_key is not None: # Figure out what sender key we're expecting. If we know the # device and recognize the algorithm then we can work out the # exact key to expect. Otherwise check it matches any key we # have for that device. current_keys: Container[str] = [] if device: keys = device.get("keys", {}).get("keys", {}) if ( event.content.get("algorithm") == RoomEncryptionAlgorithms.MEGOLM_V1_AES_SHA2 ): # For this algorithm we expect a curve25519 key. key_name = "curve25519:%s" % (device_id,) current_keys = [keys.get(key_name)] else: # We don't know understand the algorithm, so we just # check it matches a key for the device. current_keys = keys.values() elif device_id: # We don't have any keys for the device ID. pass else: # The event didn't include a device ID, so we just look for # keys across all devices. current_keys = [ key for device in cached_devices.values() for key in device.get("keys", {}).get("keys", {}).values() ] # We now check that the sender key matches (one of) the expected # keys. if sender_key not in current_keys: logger.info( "Received event from remote device with unexpected sender key: %s %s: %s", event.sender, device_id or "", sender_key, ) resync = True if resync: run_as_background_process( "resync_device_due_to_pdu", self._resync_device, event.sender, ) async def _resync_device(self, sender: str) -> None: """We have detected that the device list for the given user may be out of sync, so we try and resync them. """ try: await self._store.mark_remote_users_device_caches_as_stale((sender,)) # Immediately attempt a resync in the background if self._config.worker.worker_app: await self._multi_user_device_resync(user_ids=[sender]) else: await self._device_list_updater.multi_user_device_resync( user_ids=[sender] ) except Exception: logger.exception("Failed to resync device for %s", sender) async def backfill_event_id( self, destinations: StrCollection, room_id: str, event_id: str ) -> PulledPduInfo: """Backfill a single event and persist it as a non-outlier which means we also pull in all of the state and auth events necessary for it. Args: destination: The homeserver to pull the given event_id from. room_id: The room where the event is from. event_id: The event ID to backfill. Raises: FederationError if we are unable to find the event from the destination """ logger.info("backfill_event_id: event_id=%s", event_id) room_version = await self._store.get_room_version(room_id) pulled_pdu_info = await self._federation_client.get_pdu( destinations, event_id, room_version, ) if not pulled_pdu_info: raise FederationError( "ERROR", 404, f"Unable to find event_id={event_id} from remote servers to backfill.", affected=event_id, ) # Persist the event we just fetched, including pulling all of the state # and auth events to de-outlier it. This also sets up the necessary # `state_groups` for the event. await self._process_pulled_events( pulled_pdu_info.pull_origin, [pulled_pdu_info.pdu], # Prevent notifications going to clients backfilled=True, ) return pulled_pdu_info @trace @tag_args async def _get_events_and_persist( self, destination: str, room_id: str, event_ids: StrCollection ) -> None: """Fetch the given events from a server, and persist them as outliers. This function *does not* recursively get missing auth events of the newly fetched events. Callers must include in the `event_ids` argument any missing events from the auth chain. Logs a warning if we can't find the given event. """ room_version = await self._store.get_room_version(room_id) events: List[EventBase] = [] async def get_event(event_id: str) -> None: with nested_logging_context(event_id): try: pulled_pdu_info = await self._federation_client.get_pdu( [destination], event_id, room_version, ) if pulled_pdu_info is None: logger.warning( "Server %s didn't return event %s", destination, event_id, ) return events.append(pulled_pdu_info.pdu) except Exception as e: logger.warning( "Error fetching missing state/auth event %s: %s %s", event_id, type(e), e, ) await concurrently_execute(get_event, event_ids, 5) logger.info("Fetched %i events of %i requested", len(events), len(event_ids)) await self._auth_and_persist_outliers(room_id, events) @trace async def _auth_and_persist_outliers( self, room_id: str, events: Iterable[EventBase] ) -> None: """Persist a batch of outlier events fetched from remote servers. We first sort the events to make sure that we process each event's auth_events before the event itself. We then mark the events as outliers, persist them to the database, and, where appropriate (eg, an invite), awake the notifier. Params: room_id: the room that the events are meant to be in (though this has not yet been checked) events: the events that have been fetched """ event_map = {event.event_id: event for event in events} event_ids = event_map.keys() set_tag( SynapseTags.FUNC_ARG_PREFIX + "event_ids", str(event_ids), ) set_tag( SynapseTags.FUNC_ARG_PREFIX + "event_ids.length", str(len(event_ids)), ) # filter out any events we have already seen. This might happen because # the events were eagerly pushed to us (eg, during a room join), or because # another thread has raced against us since we decided to request the event. # # This is just an optimisation, so it doesn't need to be watertight - the event # persister does another round of deduplication. seen_remotes = await self._store.have_seen_events(room_id, event_map.keys()) for s in seen_remotes: event_map.pop(s, None) # XXX: it might be possible to kick this process off in parallel with fetching # the events. # We need to persist an event's auth events before the event. auth_graph = { ev.event_id: [e_id for e_id in ev.auth_event_ids() if e_id in event_map] for ev in event_map.values() } sorted_auth_event_ids = sorted_topologically(event_map.keys(), auth_graph) sorted_auth_events = [event_map[e_id] for e_id in sorted_auth_event_ids] logger.info( "Persisting %i remaining outliers: %s", len(sorted_auth_events), shortstr(e.event_id for e in sorted_auth_events), ) # get all the auth events for all the events in this batch. By now, they should # have been persisted. auth_event_ids = { aid for event in sorted_auth_events for aid in event.auth_event_ids() } auth_map = { ev.event_id: ev for ev in sorted_auth_events if ev.event_id in auth_event_ids } missing_events = auth_event_ids.difference(auth_map) if missing_events: persisted_events = await self._store.get_events( missing_events, allow_rejected=True, redact_behaviour=EventRedactBehaviour.as_is, ) auth_map.update(persisted_events) events_and_contexts_to_persist: List[Tuple[EventBase, EventContext]] = [] async def prep(event: EventBase) -> None: with nested_logging_context(suffix=event.event_id): auth = [] for auth_event_id in event.auth_event_ids(): ae = auth_map.get(auth_event_id) if not ae: # the fact we can't find the auth event doesn't mean it doesn't # exist, which means it is premature to reject `event`. Instead we # just ignore it for now. logger.warning( "Dropping event %s, which relies on auth_event %s, which could not be found", event, auth_event_id, ) return auth.append(ae) # we're not bothering about room state, so flag the event as an outlier. event.internal_metadata.outlier = True context = EventContext.for_outlier(self._storage_controllers) try: validate_event_for_room_version(event) await check_state_independent_auth_rules( self._store, event, batched_auth_events=auth_map ) check_state_dependent_auth_rules(event, auth) except AuthError as e: logger.warning("Rejecting %r because %s", event, e) context.rejected = RejectedReason.AUTH_ERROR except EventSizeError as e: if e.unpersistable: # This event is completely unpersistable. raise e # Otherwise, we are somewhat lenient and just persist the event # as rejected, for moderate compatibility with older Synapse # versions. logger.warning("While validating received event %r: %s", event, e) context.rejected = RejectedReason.OVERSIZED_EVENT events_and_contexts_to_persist.append((event, context)) for event in sorted_auth_events: await prep(event) await self.persist_events_and_notify( room_id, events_and_contexts_to_persist, # Mark these events backfilled as they're historic events that will # eventually be backfilled. For example, missing events we fetch # during backfill should be marked as backfilled as well. backfilled=True, ) @trace async def _check_event_auth( self, origin: Optional[str], event: EventBase, context: EventContext ) -> None: """ Checks whether an event should be rejected (for failing auth checks). Args: origin: The host the event originates from. This is used to fetch any missing auth events. It can be set to None, but only if we are sure that we already have all the auth events. event: The event itself. context: The event context. Raises: AuthError if we were unable to find copies of the event's auth events. (Most other failures just cause us to set `context.rejected`.) """ # This method should only be used for non-outliers assert not event.internal_metadata.outlier # first of all, check that the event itself is valid. try: validate_event_for_room_version(event) except AuthError as e: logger.warning("While validating received event %r: %s", event, e) # TODO: use a different rejected reason here? context.rejected = RejectedReason.AUTH_ERROR return except EventSizeError as e: if e.unpersistable: # This event is completely unpersistable. raise e # Otherwise, we are somewhat lenient and just persist the event # as rejected, for moderate compatibility with older Synapse # versions. logger.warning("While validating received event %r: %s", event, e) context.rejected = RejectedReason.OVERSIZED_EVENT return # next, check that we have all of the event's auth events. # # Note that this can raise AuthError, which we want to propagate to the # caller rather than swallow with `context.rejected` (since we cannot be # certain that there is a permanent problem with the event). claimed_auth_events = await self._load_or_fetch_auth_events_for_event( origin, event ) set_tag( SynapseTags.RESULT_PREFIX + "claimed_auth_events", str([ev.event_id for ev in claimed_auth_events]), ) set_tag( SynapseTags.RESULT_PREFIX + "claimed_auth_events.length", str(len(claimed_auth_events)), ) # ... and check that the event passes auth at those auth events. # https://spec.matrix.org/v1.3/server-server-api/#checks-performed-on-receipt-of-a-pdu: # 4. Passes authorization rules based on the event’s auth events, # otherwise it is rejected. try: await check_state_independent_auth_rules(self._store, event) check_state_dependent_auth_rules(event, claimed_auth_events) except AuthError as e: logger.warning( "While checking auth of %r against auth_events: %s", event, e ) context.rejected = RejectedReason.AUTH_ERROR return # now check the auth rules pass against the room state before the event # https://spec.matrix.org/v1.3/server-server-api/#checks-performed-on-receipt-of-a-pdu: # 5. Passes authorization rules based on the state before the event, # otherwise it is rejected. # # ... however, if we only have partial state for the room, then there is a good # chance that we'll be missing some of the state needed to auth the new event. # So, we state-resolve the auth events that we are given against the state that # we know about, which ensures things like bans are applied. (Note that we'll # already have checked we have all the auth events, in # _load_or_fetch_auth_events_for_event above) if context.partial_state: room_version = await self._store.get_room_version_id(event.room_id) local_state_id_map = await context.get_prev_state_ids() claimed_auth_events_id_map = { (ev.type, ev.state_key): ev.event_id for ev in claimed_auth_events } state_for_auth_id_map = ( await self._state_resolution_handler.resolve_events_with_store( event.room_id, room_version, [local_state_id_map, claimed_auth_events_id_map], event_map=None, state_res_store=StateResolutionStore(self._store), ) ) else: event_types = event_auth.auth_types_for_event(event.room_version, event) state_for_auth_id_map = await context.get_prev_state_ids( StateFilter.from_types(event_types) ) calculated_auth_event_ids = self._event_auth_handler.compute_auth_events( event, state_for_auth_id_map, for_verification=True ) # if those are the same, we're done here. if collections.Counter(event.auth_event_ids()) == collections.Counter( calculated_auth_event_ids ): return # otherwise, re-run the auth checks based on what we calculated. calculated_auth_events = await self._store.get_events_as_list( calculated_auth_event_ids ) # log the differences claimed_auth_event_map = {(e.type, e.state_key): e for e in claimed_auth_events} calculated_auth_event_map = { (e.type, e.state_key): e for e in calculated_auth_events } logger.info( "event's auth_events are different to our calculated auth_events. " "Claimed but not calculated: %s. Calculated but not claimed: %s", [ ev for k, ev in claimed_auth_event_map.items() if k not in calculated_auth_event_map or calculated_auth_event_map[k].event_id != ev.event_id ], [ ev for k, ev in calculated_auth_event_map.items() if k not in claimed_auth_event_map or claimed_auth_event_map[k].event_id != ev.event_id ], ) try: check_state_dependent_auth_rules(event, calculated_auth_events) except AuthError as e: logger.warning( "While checking auth of %r against room state before the event: %s", event, e, ) context.rejected = RejectedReason.AUTH_ERROR @trace async def _maybe_kick_guest_users(self, event: EventBase) -> None: if event.type != EventTypes.GuestAccess: return guest_access = event.content.get(EventContentFields.GUEST_ACCESS) if guest_access == GuestAccess.CAN_JOIN: return current_state = await self._storage_controllers.state.get_current_state( event.room_id ) current_state_list = list(current_state.values()) await self._get_room_member_handler().kick_guest_users(current_state_list) async def _check_for_soft_fail( self, event: EventBase, context: EventContext, origin: str, ) -> None: """Checks if we should soft fail the event; if so, marks the event as such. Does nothing for events in rooms with partial state, since we may not have an accurate membership event for the sender in the current state. Args: event context: The `EventContext` which we are about to persist the event with. origin: The host the event originates from. """ if await self._store.is_partial_state_room(event.room_id): # We might not know the sender's membership in the current state, so don't # soft fail anything. Even if we do have a membership for the sender in the # current state, it may have been derived from state resolution between # partial and full state and may not be accurate. return extrem_ids = await self._store.get_latest_event_ids_in_room(event.room_id) prev_event_ids = set(event.prev_event_ids()) if extrem_ids == prev_event_ids: # If they're the same then the current state is the same as the # state at the event, so no point rechecking auth for soft fail. return room_version = await self._store.get_room_version_id(event.room_id) room_version_obj = KNOWN_ROOM_VERSIONS[room_version] # The event types we want to pull from the "current" state. auth_types = auth_types_for_event(room_version_obj, event) # Calculate the "current state". seen_event_ids = await self._store.have_events_in_timeline(prev_event_ids) has_missing_prevs = bool(prev_event_ids - seen_event_ids) if has_missing_prevs: # We don't have all the prev_events of this event, which means we have a # gap in the graph, and the new event is going to become a new backwards # extremity. # # In this case we want to be a little careful as we might have been # down for a while and have an incorrect view of the current state, # however we still want to do checks as gaps are easy to # maliciously manufacture. # # So we use a "current state" that is actually a state # resolution across the current forward extremities and the # given state at the event. This should correctly handle cases # like bans, especially with state res v2. state_sets_d = await self._state_storage_controller.get_state_groups_ids( event.room_id, extrem_ids ) state_sets: List[StateMap[str]] = list(state_sets_d.values()) state_ids = await context.get_prev_state_ids() state_sets.append(state_ids) current_state_ids = ( await self._state_resolution_handler.resolve_events_with_store( event.room_id, room_version, state_sets, event_map=None, state_res_store=StateResolutionStore(self._store), ) ) else: current_state_ids = ( await self._state_storage_controller.get_current_state_ids( event.room_id, StateFilter.from_types(auth_types) ) ) logger.debug( "Doing soft-fail check for %s: state %s", event.event_id, current_state_ids, ) # Now check if event pass auth against said current state current_state_ids_list = [ e for k, e in current_state_ids.items() if k in auth_types ] current_auth_events = await self._store.get_events_as_list( current_state_ids_list ) try: check_state_dependent_auth_rules(event, current_auth_events) except AuthError as e: logger.warning( "Soft-failing %r (from %s) because %s", event, e, origin, extra={ "room_id": event.room_id, "mxid": event.sender, "hs": origin, }, ) soft_failed_event_counter.inc() event.internal_metadata.soft_failed = True async def _load_or_fetch_auth_events_for_event( self, destination: Optional[str], event: EventBase ) -> Collection[EventBase]: """Fetch this event's auth_events, from database or remote Loads any of the auth_events that we already have from the database/cache. If there are any that are missing, calls /event_auth to get the complete auth chain for the event (and then attempts to load the auth_events again). If any of the auth_events cannot be found, raises an AuthError. This can happen for a number of reasons; eg: the events don't exist, or we were unable to talk to `destination`, or we couldn't validate the signature on the event (which in turn has multiple potential causes). Args: destination: where to send the /event_auth request. Typically the server that sent us `event` in the first place. If this is None, no attempt is made to load any missing auth events: rather, an AssertionError is raised if there are any missing events. event: the event whose auth_events we want Returns: all of the events listed in `event.auth_events_ids`, after deduplication Raises: AssertionError if some auth events were missing and no `destination` was supplied. AuthError if we were unable to fetch the auth_events for any reason. """ event_auth_event_ids = set(event.auth_event_ids()) event_auth_events = await self._store.get_events( event_auth_event_ids, allow_rejected=True ) missing_auth_event_ids = event_auth_event_ids.difference( event_auth_events.keys() ) if not missing_auth_event_ids: return event_auth_events.values() if destination is None: # this shouldn't happen: destination must be set unless we know we have already # persisted the auth events. raise AssertionError( "_load_or_fetch_auth_events_for_event() called with no destination for " "an event with missing auth_events" ) logger.info( "Event %s refers to unknown auth events %s: fetching auth chain", event, missing_auth_event_ids, ) try: await self._get_remote_auth_chain_for_event( destination, event.room_id, event.event_id ) except Exception as e: logger.warning("Failed to get auth chain for %s: %s", event, e) # in this case, it's very likely we still won't have all the auth # events - but we pick that up below. # try to fetch the auth events we missed list time. extra_auth_events = await self._store.get_events( missing_auth_event_ids, allow_rejected=True ) missing_auth_event_ids.difference_update(extra_auth_events.keys()) event_auth_events.update(extra_auth_events) if not missing_auth_event_ids: return event_auth_events.values() # we still don't have all the auth events. logger.warning( "Missing auth events for %s: %s", event, shortstr(missing_auth_event_ids), ) # the fact we can't find the auth event doesn't mean it doesn't # exist, which means it is premature to store `event` as rejected. # instead we raise an AuthError, which will make the caller ignore it. raise AuthError(code=HTTPStatus.FORBIDDEN, msg="Auth events could not be found") @trace @tag_args async def _get_remote_auth_chain_for_event( self, destination: str, room_id: str, event_id: str ) -> None: """If we are missing some of an event's auth events, attempt to request them Args: destination: where to fetch the auth tree from room_id: the room in which we are lacking auth events event_id: the event for which we are lacking auth events """ try: remote_events = await self._federation_client.get_event_auth( destination, room_id, event_id ) except RequestSendFailed as e1: # The other side isn't around or doesn't implement the # endpoint, so lets just bail out. logger.info("Failed to get event auth from remote: %s", e1) return logger.info("/event_auth returned %i events", len(remote_events)) # `event` may be returned, but we should not yet process it. remote_auth_events = (e for e in remote_events if e.event_id != event_id) await self._auth_and_persist_outliers(room_id, remote_auth_events) @trace async def _run_push_actions_and_persist_event( self, event: EventBase, context: EventContext, backfilled: bool = False ) -> None: """Run the push actions for a received event, and persist it. Args: event: The event itself. context: The event context. backfilled: True if the event was backfilled. PartialStateConflictError: if attempting to persist a partial state event in a room that has been un-partial stated. """ # this method should not be called on outliers (those code paths call # persist_events_and_notify directly.) assert not event.internal_metadata.outlier if not backfilled and not context.rejected: min_depth = await self._store.get_min_depth(event.room_id) if min_depth is None or min_depth > event.depth: # XXX richvdh 2021/10/07: I don't really understand what this # condition is doing. I think it's trying not to send pushes # for events that predate our join - but that's not really what # min_depth means, and anyway ancient events are a more general # problem. # # for now I'm just going to log about it. logger.info( "Skipping push actions for old event with depth %s < %s", event.depth, min_depth, ) else: await self._bulk_push_rule_evaluator.action_for_events_by_user( [(event, context)] ) try: await self.persist_events_and_notify( event.room_id, [(event, context)], backfilled=backfilled ) except Exception: await self._store.remove_push_actions_from_staging(event.event_id) raise async def persist_events_and_notify( self, room_id: str, event_and_contexts: Sequence[Tuple[EventBase, EventContext]], backfilled: bool = False, ) -> int: """Persists events and tells the notifier/pushers about them, if necessary. Args: room_id: The room ID of events being persisted. event_and_contexts: Sequence of events with their associated context that should be persisted. All events must belong to the same room. backfilled: Whether these events are a result of backfilling or not Returns: The stream ID after which all events have been persisted. Raises: PartialStateConflictError: if attempting to persist a partial state event in a room that has been un-partial stated. """ if not event_and_contexts: return self._store.get_room_max_stream_ordering() instance = self._config.worker.events_shard_config.get_instance(room_id) if instance != self._instance_name: # Limit the number of events sent over replication. We choose 200 # here as that is what we default to in `max_request_body_size(..)` result = {} try: for batch in batch_iter(event_and_contexts, 200): result = await self._send_events( instance_name=instance, store=self._store, room_id=room_id, event_and_contexts=batch, backfilled=backfilled, ) except SynapseError as e: if e.code == HTTPStatus.CONFLICT: raise PartialStateConflictError() raise return result["max_stream_id"] else: assert self._storage_controllers.persistence # Note that this returns the events that were persisted, which may not be # the same as were passed in if some were deduplicated due to transaction IDs. ( events, max_stream_token, ) = await self._storage_controllers.persistence.persist_events( event_and_contexts, backfilled=backfilled ) # After persistence we always need to notify replication there may # be new data. self._notifier.notify_replication() if self._ephemeral_messages_enabled: for event in events: # If there's an expiry timestamp on the event, schedule its expiry. self._message_handler.maybe_schedule_expiry(event) if not backfilled: # Never notify for backfilled events with start_active_span("notify_persisted_events"): set_tag( SynapseTags.RESULT_PREFIX + "event_ids", str([ev.event_id for ev in events]), ) set_tag( SynapseTags.RESULT_PREFIX + "event_ids.length", str(len(events)), ) for event in events: await self._notify_persisted_event(event, max_stream_token) return max_stream_token.stream async def _notify_persisted_event( self, event: EventBase, max_stream_token: RoomStreamToken ) -> None: """Checks to see if notifier/pushers should be notified about the event or not. Args: event: max_stream_token: The max_stream_id returned by persist_events """ extra_users = [] if event.type == EventTypes.Member: target_user_id = event.state_key # We notify for memberships if its an invite for one of our # users if event.internal_metadata.is_outlier(): if event.membership != Membership.INVITE: if not self._is_mine_id(target_user_id): return target_user = UserID.from_string(target_user_id) extra_users.append(target_user) elif event.internal_metadata.is_outlier(): return # the event has been persisted so it should have a stream ordering. assert event.internal_metadata.stream_ordering event_pos = PersistedEventPosition( self._instance_name, event.internal_metadata.stream_ordering ) await self._notifier.on_new_room_events( [(event, event_pos)], max_stream_token, extra_users=extra_users ) if event.type == EventTypes.Member and event.membership == Membership.JOIN: # TODO retrieve the previous state, and exclude join -> join transitions self._notifier.notify_user_joined_room(event.event_id, event.room_id) # If this is a server ACL event, clear the cache in the storage controller. if event.type == EventTypes.ServerACL: self._state_storage_controller.get_server_acl_for_room.invalidate( (event.room_id,) ) def _sanity_check_event(self, ev: EventBase) -> None: """ Do some early sanity checks of a received event In particular, checks it doesn't have an excessive number of prev_events or auth_events, which could cause a huge state resolution or cascade of event fetches. Args: ev: event to be checked Raises: SynapseError if the event does not pass muster """ if len(ev.prev_event_ids()) > 20: logger.warning( "Rejecting event %s which has %i prev_events", ev.event_id, len(ev.prev_event_ids()), ) raise SynapseError(HTTPStatus.BAD_REQUEST, "Too many prev_events") if len(ev.auth_event_ids()) > 10: logger.warning( "Rejecting event %s which has %i auth_events", ev.event_id, len(ev.auth_event_ids()), ) raise SynapseError(HTTPStatus.BAD_REQUEST, "Too many auth_events") synapse-1.100.0/synapse/handlers/identity.py000066400000000000000000000740541455622526000210410ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2017 Vector Creations Ltd # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """Utilities for interacting with Identity Servers""" import logging import urllib.parse from typing import TYPE_CHECKING, Awaitable, Callable, Dict, List, Optional, Tuple import attr from synapse.api.errors import ( CodeMessageException, Codes, HttpResponseException, SynapseError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.http import RequestTimedOutError from synapse.http.client import SimpleHttpClient from synapse.http.site import SynapseRequest from synapse.types import JsonDict, Requester from synapse.util import json_decoder from synapse.util.hash import sha256_and_url_safe_base64 from synapse.util.stringutils import ( assert_valid_client_secret, random_string, valid_id_server_location, ) if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) id_server_scheme = "https://" class IdentityHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main # An HTTP client for contacting trusted URLs. self.http_client = SimpleHttpClient(hs) # An HTTP client for contacting identity servers specified by clients. self._http_client = SimpleHttpClient( hs, ip_blocklist=hs.config.server.federation_ip_range_blocklist, ip_allowlist=hs.config.server.federation_ip_range_allowlist, ) self.federation_http_client = hs.get_federation_http_client() self.hs = hs self._web_client_location = hs.config.email.invite_client_location # Ratelimiters for `/requestToken` endpoints. self._3pid_validation_ratelimiter_ip = Ratelimiter( store=self.store, clock=hs.get_clock(), cfg=hs.config.ratelimiting.rc_3pid_validation, ) self._3pid_validation_ratelimiter_address = Ratelimiter( store=self.store, clock=hs.get_clock(), cfg=hs.config.ratelimiting.rc_3pid_validation, ) async def ratelimit_request_token_requests( self, request: SynapseRequest, medium: str, address: str, ) -> None: """Used to ratelimit requests to `/requestToken` by IP and address. Args: request: The associated request medium: The type of threepid, e.g. "msisdn" or "email" address: The actual threepid ID, e.g. the phone number or email address """ await self._3pid_validation_ratelimiter_ip.ratelimit( None, (medium, request.getClientAddress().host) ) await self._3pid_validation_ratelimiter_address.ratelimit( None, (medium, address) ) async def threepid_from_creds( self, id_server: str, creds: Dict[str, str] ) -> Optional[JsonDict]: """ Retrieve and validate a threepid identifier from a "credentials" dictionary against a given identity server Args: id_server: The identity server to validate 3PIDs against. Must be a complete URL including the protocol (http(s)://) creds: Dictionary containing the following keys: * client_secret|clientSecret: A unique secret str provided by the client * sid: The ID of the validation session Returns: A dictionary consisting of response params to the /getValidated3pid endpoint of the Identity Service API, or None if the threepid was not found """ client_secret = creds.get("client_secret") or creds.get("clientSecret") if not client_secret: raise SynapseError( 400, "Missing param client_secret in creds", errcode=Codes.MISSING_PARAM ) assert_valid_client_secret(client_secret) session_id = creds.get("sid") if not session_id: raise SynapseError( 400, "Missing param session_id in creds", errcode=Codes.MISSING_PARAM ) query_params = {"sid": session_id, "client_secret": client_secret} url = id_server + "/_matrix/identity/api/v1/3pid/getValidated3pid" try: data = await self.http_client.get_json(url, query_params) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except HttpResponseException as e: logger.info( "%s returned %i for threepid validation for: %s", id_server, e.code, creds, ) return None # Old versions of Sydent return a 200 http code even on a failed validation # check. Thus, in addition to the HttpResponseException check above (which # checks for non-200 errors), we need to make sure validation_session isn't # actually an error, identified by the absence of a "medium" key # See https://github.com/matrix-org/sydent/issues/215 for details if "medium" in data: return data logger.info("%s reported non-validated threepid: %s", id_server, creds) return None async def bind_threepid( self, client_secret: str, sid: str, mxid: str, id_server: str, id_access_token: str, ) -> JsonDict: """Bind a 3PID to an identity server Args: client_secret: A unique secret provided by the client sid: The ID of the validation session mxid: The MXID to bind the 3PID to id_server: The domain of the identity server to query id_access_token: The access token to authenticate to the identity server with Raises: SynapseError: On any of the following conditions - the supplied id_server is not a valid identity server name - we failed to contact the supplied identity server Returns: The response from the identity server """ logger.debug("Proxying threepid bind request for %s to %s", mxid, id_server) if not valid_id_server_location(id_server): raise SynapseError( 400, "id_server must be a valid hostname with optional port and path components", ) bind_data = {"sid": sid, "client_secret": client_secret, "mxid": mxid} bind_url = "https://%s/_matrix/identity/v2/3pid/bind" % (id_server,) headers = {"Authorization": create_id_access_token_header(id_access_token)} try: # Use the blacklisting http client as this call is only to identity servers # provided by a client data = await self._http_client.post_json_get_json( bind_url, bind_data, headers=headers ) # Remember where we bound the threepid await self.store.add_user_bound_threepid( user_id=mxid, medium=data["medium"], address=data["address"], id_server=id_server, ) return data except HttpResponseException as e: logger.error("3PID bind failed with Matrix error: %r", e) raise e.to_synapse_error() except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except CodeMessageException as e: data = json_decoder.decode(e.msg) # XXX WAT? return data async def try_unbind_threepid( self, mxid: str, medium: str, address: str, id_server: Optional[str] ) -> bool: """Attempt to remove a 3PID from one or more identity servers. Args: mxid: Matrix user ID of binding to be removed medium: The medium of the third-party ID. address: The address of the third-party ID. id_server: An identity server to attempt to unbind from. If None, attempt to remove the association from all identity servers known to potentially have it. Raises: SynapseError: If we failed to contact one or more identity servers. Returns: True on success, otherwise False if the identity server doesn't support unbinding (or no identity server to contact was found). """ if id_server: id_servers = [id_server] else: id_servers = await self.store.get_id_servers_user_bound( mxid, medium, address ) # We don't know where to unbind, so we don't have a choice but to return if not id_servers: return False changed = True for id_server in id_servers: changed &= await self._try_unbind_threepid_with_id_server( mxid, medium, address, id_server ) return changed async def _try_unbind_threepid_with_id_server( self, mxid: str, medium: str, address: str, id_server: str ) -> bool: """Removes a binding from an identity server Args: mxid: Matrix user ID of binding to be removed medium: The medium of the third-party ID address: The address of the third-party ID id_server: Identity server to unbind from Raises: SynapseError: On any of the following conditions - the supplied id_server is not a valid identity server name - we failed to contact the supplied identity server Returns: True on success, otherwise False if the identity server doesn't support unbinding """ if not valid_id_server_location(id_server): raise SynapseError( 400, "id_server must be a valid hostname with optional port and path components", ) url = "https://%s/_matrix/identity/v2/3pid/unbind" % (id_server,) url_bytes = b"/_matrix/identity/v2/3pid/unbind" content = { "mxid": mxid, "threepid": {"medium": medium, "address": address}, } # we abuse the federation http client to sign the request, but we have to send it # using the normal http client since we don't want the SRV lookup and want normal # 'browser-like' HTTPS. auth_headers = self.federation_http_client.build_auth_headers( destination=None, method=b"POST", url_bytes=url_bytes, content=content, destination_is=id_server.encode("ascii"), ) headers = {b"Authorization": auth_headers} try: # Use the blacklisting http client as this call is only to identity servers # provided by a client await self._http_client.post_json_get_json(url, content, headers) changed = True except HttpResponseException as e: changed = False if e.code in (400, 404, 501): # The remote server probably doesn't support unbinding (yet) logger.warning("Received %d response while unbinding threepid", e.code) else: logger.error("Failed to unbind threepid on identity server: %s", e) raise SynapseError(500, "Failed to contact identity server") except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") await self.store.remove_user_bound_threepid(mxid, medium, address, id_server) return changed async def send_threepid_validation( self, email_address: str, client_secret: str, send_attempt: int, send_email_func: Callable[[str, str, str, str], Awaitable], next_link: Optional[str] = None, ) -> str: """Send a threepid validation email for password reset or registration purposes Args: email_address: The user's email address client_secret: The provided client secret send_attempt: Which send attempt this is send_email_func: A function that takes an email address, token, client_secret and session_id, sends an email and returns an Awaitable. next_link: The URL to redirect the user to after validation Returns: The new session_id upon success Raises: SynapseError is an error occurred when sending the email """ # Check that this email/client_secret/send_attempt combo is new or # greater than what we've seen previously session = await self.store.get_threepid_validation_session( "email", client_secret, address=email_address, validated=False ) # Check to see if a session already exists and that it is not yet # marked as validated if session and session.validated_at is None: session_id = session.session_id last_send_attempt = session.last_send_attempt # Check that the send_attempt is higher than previous attempts if send_attempt <= last_send_attempt: # If not, just return a success without sending an email return session_id else: # An non-validated session does not exist yet. # Generate a session id session_id = random_string(16) if next_link: # Manipulate the next_link to add the sid, because the caller won't get # it until we send a response, by which time we've sent the mail. if "?" in next_link: next_link += "&" else: next_link += "?" next_link += "sid=" + urllib.parse.quote(session_id) # Generate a new validation token token = random_string(32) # Send the mail with the link containing the token, client_secret # and session_id try: await send_email_func(email_address, token, client_secret, session_id) except Exception: logger.exception( "Error sending threepid validation email to %s", email_address ) raise SynapseError(500, "An error was encountered when sending the email") token_expires = ( self.hs.get_clock().time_msec() + self.hs.config.email.email_validation_token_lifetime ) await self.store.start_or_continue_validation_session( "email", email_address, session_id, client_secret, send_attempt, next_link, token, token_expires, ) return session_id async def requestMsisdnToken( self, id_server: str, country: str, phone_number: str, client_secret: str, send_attempt: int, next_link: Optional[str] = None, ) -> JsonDict: """ Request an external server send an SMS message on our behalf for the purposes of threepid validation. Args: id_server: The identity server to proxy to country: The country code of the phone number phone_number: The number to send the message to client_secret: The unique client_secret sends by the user send_attempt: Which attempt this is next_link: A link to redirect the user to once they submit the token Returns: The json response body from the server """ params = { "country": country, "phone_number": phone_number, "client_secret": client_secret, "send_attempt": send_attempt, } if next_link: params["next_link"] = next_link try: data = await self.http_client.post_json_get_json( id_server + "/_matrix/identity/api/v1/validate/msisdn/requestToken", params, ) except HttpResponseException as e: logger.info("Proxied requestToken failed: %r", e) raise e.to_synapse_error() except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") # we need to tell the client to send the token back to us, since it doesn't # otherwise know where to send it, so add submit_url response parameter # (see also MSC2078) data["submit_url"] = ( self.hs.config.server.public_baseurl + "_matrix/client/unstable/add_threepid/msisdn/submit_token" ) return data async def validate_threepid_session( self, client_secret: str, sid: str ) -> Optional[JsonDict]: """Validates a threepid session with only the client secret and session ID Tries validating against any configured account_threepid_delegates as well as locally. Args: client_secret: A secret provided by the client sid: The ID of the session Returns: The json response if validation was successful, otherwise None """ # XXX: We shouldn't need to keep wrapping and unwrapping this value threepid_creds = {"client_secret": client_secret, "sid": sid} # We don't actually know which medium this 3PID is. Thus we first assume it's email, # and if validation fails we try msisdn # Try to validate as email if self.hs.config.email.can_verify_email: # Get a validated session matching these details validation_session = await self.store.get_threepid_validation_session( "email", client_secret, sid=sid, validated=True ) if validation_session: return attr.asdict(validation_session) # Try to validate as msisdn if self.hs.config.registration.account_threepid_delegate_msisdn: # Ask our delegated msisdn identity server return await self.threepid_from_creds( self.hs.config.registration.account_threepid_delegate_msisdn, threepid_creds, ) return None async def proxy_msisdn_submit_token( self, id_server: str, client_secret: str, sid: str, token: str ) -> JsonDict: """Proxy a POST submitToken request to an identity server for verification purposes Args: id_server: The identity server URL to contact client_secret: Secret provided by the client sid: The ID of the session token: The verification token Raises: SynapseError: If we failed to contact the identity server Returns: The response dict from the identity server """ body = {"client_secret": client_secret, "sid": sid, "token": token} try: return await self.http_client.post_json_get_json( id_server + "/_matrix/identity/api/v1/validate/msisdn/submitToken", body, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except HttpResponseException as e: logger.warning("Error contacting msisdn account_threepid_delegate: %s", e) raise SynapseError(400, "Error contacting the identity server") async def lookup_3pid( self, id_server: str, medium: str, address: str, id_access_token: str ) -> Optional[str]: """Looks up a 3pid in the passed identity server. Args: id_server: The server name (including port, if required) of the identity server to use. medium: The type of the third party identifier (e.g. "email"). address: The third party identifier (e.g. "foo@example.com"). id_access_token: The access token to authenticate to the identity server with Returns: the matrix ID of the 3pid, or None if it is not recognized. """ try: results = await self._lookup_3pid_v2( id_server, id_access_token, medium, address ) return results except Exception as e: logger.warning("Error when looking up hashing details: %s", e) return None async def _lookup_3pid_v2( self, id_server: str, id_access_token: str, medium: str, address: str ) -> Optional[str]: """Looks up a 3pid in the passed identity server using v2 lookup. Args: id_server: The server name (including port, if required) of the identity server to use. id_access_token: The access token to authenticate to the identity server with medium: The type of the third party identifier (e.g. "email"). address: The third party identifier (e.g. "foo@example.com"). Returns: the matrix ID of the 3pid, or None if it is not recognised. """ # Check what hashing details are supported by this identity server try: hash_details = await self._http_client.get_json( "%s%s/_matrix/identity/v2/hash_details" % (id_server_scheme, id_server), {"access_token": id_access_token}, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") if not isinstance(hash_details, dict): logger.warning( "Got non-dict object when checking hash details of %s%s: %s", id_server_scheme, id_server, hash_details, ) raise SynapseError( 400, "Non-dict object from %s%s during v2 hash_details request: %s" % (id_server_scheme, id_server, hash_details), ) # Extract information from hash_details supported_lookup_algorithms = hash_details.get("algorithms") lookup_pepper = hash_details.get("lookup_pepper") if ( not supported_lookup_algorithms or not isinstance(supported_lookup_algorithms, list) or not lookup_pepper or not isinstance(lookup_pepper, str) ): raise SynapseError( 400, "Invalid hash details received from identity server %s%s: %s" % (id_server_scheme, id_server, hash_details), ) # Check if any of the supported lookup algorithms are present if LookupAlgorithm.SHA256 in supported_lookup_algorithms: # Perform a hashed lookup lookup_algorithm = LookupAlgorithm.SHA256 # Hash address, medium and the pepper with sha256 to_hash = "%s %s %s" % (address, medium, lookup_pepper) lookup_value = sha256_and_url_safe_base64(to_hash) elif LookupAlgorithm.NONE in supported_lookup_algorithms: # Perform a non-hashed lookup lookup_algorithm = LookupAlgorithm.NONE # Combine together plaintext address and medium lookup_value = "%s %s" % (address, medium) else: logger.warning( "None of the provided lookup algorithms of %s are supported: %s", id_server, supported_lookup_algorithms, ) raise SynapseError( 400, "Provided identity server does not support any v2 lookup " "algorithms that this homeserver supports.", ) # Authenticate with identity server given the access token from the client headers = {"Authorization": create_id_access_token_header(id_access_token)} try: lookup_results = await self._http_client.post_json_get_json( "%s%s/_matrix/identity/v2/lookup" % (id_server_scheme, id_server), { "addresses": [lookup_value], "algorithm": lookup_algorithm, "pepper": lookup_pepper, }, headers=headers, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") except Exception as e: logger.warning("Error when performing a v2 3pid lookup: %s", e) raise SynapseError( 500, "Unknown error occurred during identity server lookup" ) # Check for a mapping from what we looked up to an MXID if "mappings" not in lookup_results or not isinstance( lookup_results["mappings"], dict ): logger.warning("No results from 3pid lookup") return None # Return the MXID if it's available, or None otherwise mxid = lookup_results["mappings"].get(lookup_value) return mxid async def ask_id_server_for_third_party_invite( self, requester: Requester, id_server: str, medium: str, address: str, room_id: str, inviter_user_id: str, room_alias: str, room_avatar_url: str, room_join_rules: str, room_name: str, room_type: Optional[str], inviter_display_name: str, inviter_avatar_url: str, id_access_token: str, ) -> Tuple[str, List[Dict[str, str]], Dict[str, str], str]: """ Asks an identity server for a third party invite. Args: requester id_server: hostname + optional port for the identity server. medium: The literal string "email". address: The third party address being invited. room_id: The ID of the room to which the user is invited. inviter_user_id: The user ID of the inviter. room_alias: An alias for the room, for cosmetic notifications. room_avatar_url: The URL of the room's avatar, for cosmetic notifications. room_join_rules: The join rules of the email (e.g. "public"). room_name: The m.room.name of the room. room_type: The type of the room from its m.room.create event (e.g "m.space"). inviter_display_name: The current display name of the inviter. inviter_avatar_url: The URL of the inviter's avatar. id_access_token: The access token to authenticate to the identity server with Returns: A tuple containing: token: The token which must be signed to prove authenticity. public_keys ([{"public_key": str, "key_validity_url": str}]): public_key is a base64-encoded ed25519 public key. fallback_public_key: One element from public_keys. display_name: A user-friendly name to represent the invited user. """ invite_config = { "medium": medium, "address": address, "room_id": room_id, "room_alias": room_alias, "room_avatar_url": room_avatar_url, "room_join_rules": room_join_rules, "room_name": room_name, "sender": inviter_user_id, "sender_display_name": inviter_display_name, "sender_avatar_url": inviter_avatar_url, } if room_type is not None: invite_config["room_type"] = room_type # If a custom web client location is available, include it in the request. if self._web_client_location: invite_config["org.matrix.web_client_location"] = self._web_client_location # Add the identity service access token to the JSON body and use the v2 # Identity Service endpoints data = None key_validity_url = "%s%s/_matrix/identity/v2/pubkey/isvalid" % ( id_server_scheme, id_server, ) url = "%s%s/_matrix/identity/v2/store-invite" % (id_server_scheme, id_server) try: data = await self._http_client.post_json_get_json( url, invite_config, {"Authorization": create_id_access_token_header(id_access_token)}, ) except RequestTimedOutError: raise SynapseError(500, "Timed out contacting identity server") token = data["token"] public_keys = data.get("public_keys", []) if "public_key" in data: fallback_public_key = { "public_key": data["public_key"], "key_validity_url": key_validity_url, } else: fallback_public_key = public_keys[0] if not public_keys: public_keys.append(fallback_public_key) display_name = data["display_name"] return token, public_keys, fallback_public_key, display_name def create_id_access_token_header(id_access_token: str) -> List[str]: """Create an Authorization header for passing to SimpleHttpClient as the header value of an HTTP request. Args: id_access_token: An identity server access token. Returns: The ascii-encoded bearer token encased in a list. """ # Prefix with Bearer bearer_token = "Bearer %s" % id_access_token # Encode headers to standard ascii bearer_token.encode("ascii") # Return as a list as that's how SimpleHttpClient takes header values return [bearer_token] class LookupAlgorithm: """ Supported hashing algorithms when performing a 3PID lookup. SHA256 - Hashing an (address, medium, pepper) combo with sha256, then url-safe base64 encoding NONE - Not performing any hashing. Simply sending an (address, medium) combo in plaintext """ SHA256 = "sha256" NONE = "none" synapse-1.100.0/synapse/handlers/initial_sync.py000066400000000000000000000437551455622526000217010ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, List, Optional, Tuple from synapse.api.constants import ( AccountDataTypes, Direction, EduTypes, EventTypes, Membership, ) from synapse.api.errors import SynapseError from synapse.events.utils import SerializeEventConfig from synapse.events.validator import EventValidator from synapse.handlers.presence import format_user_presence_state from synapse.handlers.receipts import ReceiptEventSource from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.storage.roommember import RoomsForUser from synapse.streams.config import PaginationConfig from synapse.types import ( JsonDict, JsonMapping, Requester, RoomStreamToken, StreamKeyType, StreamToken, UserID, ) from synapse.util import unwrapFirstError from synapse.util.async_helpers import concurrently_execute, gather_results from synapse.util.caches.response_cache import ResponseCache from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class InitialSyncHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.auth = hs.get_auth() self.state_handler = hs.get_state_handler() self.hs = hs self.state = hs.get_state_handler() self.clock = hs.get_clock() self.validator = EventValidator() self.snapshot_cache: ResponseCache[ Tuple[ str, Optional[StreamToken], Optional[StreamToken], Direction, int, bool, bool, ] ] = ResponseCache(hs.get_clock(), "initial_sync_cache") self._event_serializer = hs.get_event_client_serializer() self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state async def snapshot_all_rooms( self, user_id: str, pagin_config: PaginationConfig, as_client_event: bool = True, include_archived: bool = False, ) -> JsonDict: """Retrieve a snapshot of all rooms the user is invited or has joined. This snapshot may include messages for all rooms where the user is joined, depending on the pagination config. Args: user_id: The ID of the user making the request. pagin_config: The pagination config used to determine how many messages *PER ROOM* to return. as_client_event: True to get events in client-server format. include_archived: True to get rooms that the user has left Returns: A JsonDict with the same format as the response to `/intialSync` API """ key = ( user_id, pagin_config.from_token, pagin_config.to_token, pagin_config.direction, pagin_config.limit, as_client_event, include_archived, ) return await self.snapshot_cache.wrap( key, self._snapshot_all_rooms, user_id, pagin_config, as_client_event, include_archived, ) async def _snapshot_all_rooms( self, user_id: str, pagin_config: PaginationConfig, as_client_event: bool = True, include_archived: bool = False, ) -> JsonDict: memberships = [Membership.INVITE, Membership.JOIN] if include_archived: memberships.append(Membership.LEAVE) room_list = await self.store.get_rooms_for_local_user_where_membership_is( user_id=user_id, membership_list=memberships ) user = UserID.from_string(user_id) rooms_ret = [] now_token = self.hs.get_event_sources().get_current_token() presence_stream = self.hs.get_event_sources().sources.presence presence, _ = await presence_stream.get_new_events( user, from_key=None, include_offline=False ) joined_rooms = [r.room_id for r in room_list if r.membership == Membership.JOIN] receipt = await self.store.get_linearized_receipts_for_rooms( joined_rooms, to_key=now_token.receipt_key, ) receipt = ReceiptEventSource.filter_out_private_receipts(receipt, user_id) tags_by_room = await self.store.get_tags_for_user(user_id) account_data = await self.store.get_global_account_data_for_user(user_id) account_data_by_room = await self.store.get_room_account_data_for_user(user_id) public_room_ids = await self.store.get_public_room_ids() serializer_options = SerializeEventConfig(as_client_event=as_client_event) async def handle_room(event: RoomsForUser) -> None: d: JsonDict = { "room_id": event.room_id, "membership": event.membership, "visibility": ( "public" if event.room_id in public_room_ids else "private" ), } if event.membership == Membership.INVITE: time_now = self.clock.time_msec() d["inviter"] = event.sender invite_event = await self.store.get_event(event.event_id) d["invite"] = await self._event_serializer.serialize_event( invite_event, time_now, config=serializer_options, ) rooms_ret.append(d) if event.membership not in (Membership.JOIN, Membership.LEAVE): return try: if event.membership == Membership.JOIN: room_end_token = now_token.room_key deferred_room_state = run_in_background( self._state_storage_controller.get_current_state, event.room_id ) elif event.membership == Membership.LEAVE: room_end_token = RoomStreamToken( stream=event.stream_ordering, ) deferred_room_state = run_in_background( self._state_storage_controller.get_state_for_events, [event.event_id], ).addCallback(lambda states: states[event.event_id]) (messages, token), current_state = await make_deferred_yieldable( gather_results( ( run_in_background( self.store.get_recent_events_for_room, event.room_id, limit=pagin_config.limit, end_token=room_end_token, ), deferred_room_state, ) ) ).addErrback(unwrapFirstError) messages = await filter_events_for_client( self._storage_controllers, user_id, messages ) start_token = now_token.copy_and_replace(StreamKeyType.ROOM, token) end_token = now_token.copy_and_replace( StreamKeyType.ROOM, room_end_token ) time_now = self.clock.time_msec() d["messages"] = { "chunk": ( await self._event_serializer.serialize_events( messages, time_now=time_now, config=serializer_options, ) ), "start": await start_token.to_string(self.store), "end": await end_token.to_string(self.store), } d["state"] = await self._event_serializer.serialize_events( current_state.values(), time_now=time_now, config=serializer_options, ) account_data_events = [] tags = tags_by_room.get(event.room_id) if tags: account_data_events.append( {"type": AccountDataTypes.TAG, "content": {"tags": tags}} ) account_data = account_data_by_room.get(event.room_id, {}) for account_data_type, content in account_data.items(): account_data_events.append( {"type": account_data_type, "content": content} ) d["account_data"] = account_data_events except Exception: logger.exception("Failed to get snapshot") await concurrently_execute(handle_room, room_list, 10) account_data_events = [] for account_data_type, content in account_data.items(): account_data_events.append({"type": account_data_type, "content": content}) now = self.clock.time_msec() ret = { "rooms": rooms_ret, "presence": [ { "type": EduTypes.PRESENCE, "content": format_user_presence_state(event, now), } for event in presence ], "account_data": account_data_events, "receipts": receipt, "end": await now_token.to_string(self.store), } return ret async def room_initial_sync( self, requester: Requester, room_id: str, pagin_config: PaginationConfig ) -> JsonDict: """Capture the a snapshot of a room. If user is currently a member of the room this will be what is currently in the room. If the user left the room this will be what was in the room when they left. Args: requester: The user to get a snapshot for. room_id: The room to get a snapshot of. pagin_config: The pagination config used to determine how many messages to return. Raises: AuthError if the user wasn't in the room. Returns: A JSON serialisable dict with the snapshot of the room. """ blocked = await self.store.is_room_blocked(room_id) if blocked: raise SynapseError(403, "This room has been blocked on this server") ( membership, member_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, requester, allow_departed_users=True, ) is_peeking = member_event_id is None if membership == Membership.JOIN: result = await self._room_initial_sync_joined( requester, room_id, pagin_config, membership, is_peeking ) elif membership == Membership.LEAVE: # The member_event_id will always be available if membership is set # to leave. assert member_event_id result = await self._room_initial_sync_parted( requester, room_id, pagin_config, membership, member_event_id, is_peeking, ) account_data_events = [] user_id = requester.user.to_string() tags = await self.store.get_tags_for_room(user_id, room_id) if tags: account_data_events.append( {"type": AccountDataTypes.TAG, "content": {"tags": tags}} ) account_data = await self.store.get_account_data_for_room(user_id, room_id) for account_data_type, content in account_data.items(): account_data_events.append({"type": account_data_type, "content": content}) result["account_data"] = account_data_events return result async def _room_initial_sync_parted( self, requester: Requester, room_id: str, pagin_config: PaginationConfig, membership: str, member_event_id: str, is_peeking: bool, ) -> JsonDict: room_state = await self._state_storage_controller.get_state_for_event( member_event_id ) leave_position = await self.store.get_position_for_event(member_event_id) stream_token = leave_position.to_room_stream_token() messages, token = await self.store.get_recent_events_for_room( room_id, limit=pagin_config.limit, end_token=stream_token ) messages = await filter_events_for_client( self._storage_controllers, requester.user.to_string(), messages, is_peeking=is_peeking, ) start_token = StreamToken.START.copy_and_replace(StreamKeyType.ROOM, token) end_token = StreamToken.START.copy_and_replace(StreamKeyType.ROOM, stream_token) time_now = self.clock.time_msec() serialize_options = SerializeEventConfig(requester=requester) return { "membership": membership, "room_id": room_id, "messages": { "chunk": ( # Don't bundle aggregations as this is a deprecated API. await self._event_serializer.serialize_events( messages, time_now, config=serialize_options ) ), "start": await start_token.to_string(self.store), "end": await end_token.to_string(self.store), }, "state": ( # Don't bundle aggregations as this is a deprecated API. await self._event_serializer.serialize_events( room_state.values(), time_now, config=serialize_options ) ), "presence": [], "receipts": [], } async def _room_initial_sync_joined( self, requester: Requester, room_id: str, pagin_config: PaginationConfig, membership: str, is_peeking: bool, ) -> JsonDict: current_state = await self._storage_controllers.state.get_current_state( room_id=room_id ) # TODO: These concurrently time_now = self.clock.time_msec() serialize_options = SerializeEventConfig(requester=requester) # Don't bundle aggregations as this is a deprecated API. state = await self._event_serializer.serialize_events( current_state.values(), time_now, config=serialize_options, ) now_token = self.hs.get_event_sources().get_current_token() room_members = [ m for m in current_state.values() if m.type == EventTypes.Member and m.content["membership"] == Membership.JOIN ] presence_handler = self.hs.get_presence_handler() async def get_presence() -> List[JsonDict]: # If presence is disabled, return an empty list if not self.hs.config.server.presence_enabled: return [] states = await presence_handler.get_states( [m.user_id for m in room_members] ) return [ { "type": EduTypes.PRESENCE, "content": format_user_presence_state(s, time_now), } for s in states ] async def get_receipts() -> List[JsonMapping]: receipts = await self.store.get_linearized_receipts_for_room( room_id, to_key=now_token.receipt_key ) if not receipts: return [] return ReceiptEventSource.filter_out_private_receipts( receipts, requester.user.to_string(), ) presence, receipts, (messages, token) = await make_deferred_yieldable( gather_results( ( run_in_background(get_presence), run_in_background(get_receipts), run_in_background( self.store.get_recent_events_for_room, room_id, limit=pagin_config.limit, end_token=now_token.room_key, ), ), consumeErrors=True, ).addErrback(unwrapFirstError) ) messages = await filter_events_for_client( self._storage_controllers, requester.user.to_string(), messages, is_peeking=is_peeking, ) start_token = now_token.copy_and_replace(StreamKeyType.ROOM, token) end_token = now_token ret = { "room_id": room_id, "messages": { "chunk": ( # Don't bundle aggregations as this is a deprecated API. await self._event_serializer.serialize_events( messages, time_now, config=serialize_options ) ), "start": await start_token.to_string(self.store), "end": await end_token.to_string(self.store), }, "state": state, "presence": presence, "receipts": receipts, } if not is_peeking: ret["membership"] = membership return ret synapse-1.100.0/synapse/handlers/jwt.py000066400000000000000000000076141455622526000200120ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import TYPE_CHECKING from authlib.jose import JsonWebToken, JWTClaims from authlib.jose.errors import BadSignatureError, InvalidClaimError, JoseError from synapse.api.errors import Codes, LoginError from synapse.types import JsonDict, UserID if TYPE_CHECKING: from synapse.server import HomeServer class JwtHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.jwt_secret = hs.config.jwt.jwt_secret self.jwt_subject_claim = hs.config.jwt.jwt_subject_claim self.jwt_algorithm = hs.config.jwt.jwt_algorithm self.jwt_issuer = hs.config.jwt.jwt_issuer self.jwt_audiences = hs.config.jwt.jwt_audiences def validate_login(self, login_submission: JsonDict) -> str: """ Authenticates the user for the /login API Args: login_submission: the whole of the login submission (including 'type' and other relevant fields) Returns: The user ID that is logging in. Raises: LoginError if there was an authentication problem. """ token = login_submission.get("token", None) if token is None: raise LoginError( 403, "Token field for JWT is missing", errcode=Codes.FORBIDDEN ) jwt = JsonWebToken([self.jwt_algorithm]) claim_options = {} if self.jwt_issuer is not None: claim_options["iss"] = {"value": self.jwt_issuer, "essential": True} if self.jwt_audiences is not None: claim_options["aud"] = {"values": self.jwt_audiences, "essential": True} try: claims = jwt.decode( token, key=self.jwt_secret, claims_cls=JWTClaims, claims_options=claim_options, ) except BadSignatureError: # We handle this case separately to provide a better error message raise LoginError( 403, "JWT validation failed: Signature verification failed", errcode=Codes.FORBIDDEN, ) except JoseError as e: # A JWT error occurred, return some info back to the client. raise LoginError( 403, "JWT validation failed: %s" % (str(e),), errcode=Codes.FORBIDDEN, ) try: claims.validate(leeway=120) # allows 2 min of clock skew # Enforce the old behavior which is rolled out in productive # servers: if the JWT contains an 'aud' claim but none is # configured, the login attempt will fail if claims.get("aud") is not None: if self.jwt_audiences is None or len(self.jwt_audiences) == 0: raise InvalidClaimError("aud") except JoseError as e: raise LoginError( 403, "JWT validation failed: %s" % (str(e),), errcode=Codes.FORBIDDEN, ) user = claims.get(self.jwt_subject_claim, None) if user is None: raise LoginError(403, "Invalid JWT", errcode=Codes.FORBIDDEN) return UserID(user, self.hs.hostname).to_string() synapse-1.100.0/synapse/handlers/message.py000066400000000000000000002613521455622526000206330ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019-2020 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random from http import HTTPStatus from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, Tuple from canonicaljson import encode_canonical_json from twisted.internet.interfaces import IDelayedCall from synapse import event_auth from synapse.api.constants import ( EventContentFields, EventTypes, GuestAccess, HistoryVisibility, Membership, RelationTypes, UserTypes, ) from synapse.api.errors import ( AuthError, Codes, ConsentNotGivenError, NotFoundError, PartialStateConflictError, ShadowBanError, SynapseError, UnstableSpecAuthError, UnsupportedRoomVersionError, ) from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.api.urls import ConsentURIBuilder from synapse.event_auth import validate_event_for_room_version from synapse.events import EventBase, relation_from_event from synapse.events.builder import EventBuilder from synapse.events.snapshot import EventContext, UnpersistedEventContextBase from synapse.events.utils import SerializeEventConfig, maybe_upsert_event_field from synapse.events.validator import EventValidator from synapse.handlers.directory import DirectoryHandler from synapse.handlers.worker_lock import NEW_EVENT_DURING_PURGE_LOCK_NAME from synapse.logging import opentracing from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.metrics.background_process_metrics import run_as_background_process from synapse.replication.http.send_event import ReplicationSendEventRestServlet from synapse.replication.http.send_events import ReplicationSendEventsRestServlet from synapse.storage.databases.main.events_worker import EventRedactBehaviour from synapse.types import ( PersistedEventPosition, Requester, RoomAlias, StateMap, StreamToken, UserID, create_requester, ) from synapse.types.state import StateFilter from synapse.util import json_decoder, json_encoder, log_failure, unwrapFirstError from synapse.util.async_helpers import Linearizer, gather_results from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.metrics import measure_func from synapse.visibility import get_effective_room_visibility_from_state if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class MessageHandler: """Contains some read only APIs to get state about a room""" def __init__(self, hs: "HomeServer"): self.auth = hs.get_auth() self.clock = hs.get_clock() self.state = hs.get_state_handler() self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self._event_serializer = hs.get_event_client_serializer() self._ephemeral_events_enabled = hs.config.server.enable_ephemeral_messages # The scheduled call to self._expire_event. None if no call is currently # scheduled. self._scheduled_expiry: Optional[IDelayedCall] = None if not hs.config.worker.worker_app: run_as_background_process( "_schedule_next_expiry", self._schedule_next_expiry ) async def get_room_data( self, requester: Requester, room_id: str, event_type: str, state_key: str, ) -> Optional[EventBase]: """Get data from a room. Args: requester: The user who did the request. room_id event_type state_key Returns: The path data content. Raises: SynapseError or AuthError if the user is not in the room """ ( membership, membership_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, requester, allow_departed_users=True ) if membership == Membership.JOIN: data = await self._storage_controllers.state.get_current_state_event( room_id, event_type, state_key ) elif membership == Membership.LEAVE: key = (event_type, state_key) # If the membership is not JOIN, then the event ID should exist. assert ( membership_event_id is not None ), "check_user_in_room_or_world_readable returned invalid data" room_state = await self._state_storage_controller.get_state_for_events( [membership_event_id], StateFilter.from_types([key]) ) data = room_state[membership_event_id].get(key) else: # check_user_in_room_or_world_readable, if it doesn't raise an AuthError, should # only ever return a Membership.JOIN/LEAVE object # # Safeguard in case it returned something else logger.error( "Attempted to retrieve data from a room for a user that has never been in it. " "This should not have happened." ) raise UnstableSpecAuthError( 403, "User not in room", errcode=Codes.NOT_JOINED, ) return data async def get_state_events( self, requester: Requester, room_id: str, state_filter: Optional[StateFilter] = None, at_token: Optional[StreamToken] = None, ) -> List[dict]: """Retrieve all state events for a given room. If the user is joined to the room then return the current state. If the user has left the room return the state events from when they left. If an explicit 'at' parameter is passed, return the state events as of that event, if visible. Args: requester: The user requesting state events. room_id: The room ID to get all state events from. state_filter: The state filter used to fetch state from the database. at_token: the stream token of the at which we are requesting the stats. If the user is not allowed to view the state as of that stream token, we raise a 403 SynapseError. If None, returns the current state based on the current_state_events table. Returns: A list of dicts representing state events. [{}, {}, {}] Raises: NotFoundError (404) if the at token does not yield an event AuthError (403) if the user doesn't have permission to view members of this room. """ state_filter = state_filter or StateFilter.all() user_id = requester.user.to_string() if at_token: last_event_id = ( await self.store.get_last_event_in_room_before_stream_ordering( room_id, end_token=at_token.room_key, ) ) if not last_event_id: raise NotFoundError("Can't find event for token %s" % (at_token,)) if not await self._user_can_see_state_at_event( user_id, room_id, last_event_id ): raise AuthError( 403, "User %s not allowed to view events in room %s at token %s" % (user_id, room_id, at_token), ) room_state_events = ( await self._state_storage_controller.get_state_for_events( [last_event_id], state_filter=state_filter ) ) room_state: Mapping[Any, EventBase] = room_state_events[last_event_id] else: ( membership, membership_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, requester, allow_departed_users=True ) if membership == Membership.JOIN: state_ids = await self._state_storage_controller.get_current_state_ids( room_id, state_filter=state_filter ) room_state = await self.store.get_events(state_ids.values()) elif membership == Membership.LEAVE: # If the membership is not JOIN, then the event ID should exist. assert ( membership_event_id is not None ), "check_user_in_room_or_world_readable returned invalid data" room_state_events = ( await self._state_storage_controller.get_state_for_events( [membership_event_id], state_filter=state_filter ) ) room_state = room_state_events[membership_event_id] events = await self._event_serializer.serialize_events( room_state.values(), self.clock.time_msec(), config=SerializeEventConfig(requester=requester), ) return events async def _user_can_see_state_at_event( self, user_id: str, room_id: str, event_id: str ) -> bool: # check whether the user was in the room, and the history visibility, # at that time. state_map = await self._state_storage_controller.get_state_for_event( event_id, StateFilter.from_types( [ (EventTypes.Member, user_id), (EventTypes.RoomHistoryVisibility, ""), ] ), ) membership = None membership_event = state_map.get((EventTypes.Member, user_id)) if membership_event: membership = membership_event.membership # if the user was a member of the room at the time of the event, # they can see it. if membership == Membership.JOIN: return True # otherwise, it depends on the history visibility. visibility = get_effective_room_visibility_from_state(state_map) if visibility == HistoryVisibility.JOINED: # we weren't a member at the time of the event, so we can't see this event. return False # otherwise *invited* is good enough if membership == Membership.INVITE: return True if visibility == HistoryVisibility.INVITED: # we weren't invited, so we can't see this event. return False if visibility == HistoryVisibility.WORLD_READABLE: return True # So it's SHARED, and the user was not a member at the time. The user cannot # see history, unless they have *subsequently* joined the room. # # XXX: if the user has subsequently joined and then left again, # ideally we would share history up to the point they left. But # we don't know when they left. We just treat it as though they # never joined, and restrict access. ( current_membership, _, ) = await self.store.get_local_current_membership_for_user_in_room( user_id, event_id ) return current_membership == Membership.JOIN async def get_joined_members(self, requester: Requester, room_id: str) -> dict: """Get all the joined members in the room and their profile information. If the user has left the room return the state events from when they left. Args: requester: The user requesting state events. room_id: The room ID to get all state events from. Returns: A dict of user_id to profile info """ if not requester.app_service: # We check AS auth after fetching the room membership, as it # requires us to pull out all joined members anyway. membership, _ = await self.auth.check_user_in_room_or_world_readable( room_id, requester, allow_departed_users=True ) if membership != Membership.JOIN: raise SynapseError( code=403, errcode=Codes.FORBIDDEN, msg="Getting joined members while not being a current member of the room is forbidden.", ) users_with_profile = ( await self._state_storage_controller.get_users_in_room_with_profiles( room_id ) ) # If this is an AS, double check that they are allowed to see the members. # This can either be because the AS user is in the room or because there # is a user in the room that the AS is "interested in" if ( requester.app_service and requester.user.to_string() not in users_with_profile ): for uid in users_with_profile: if requester.app_service.is_interested_in_user(uid): break else: # Loop fell through, AS has no interested users in room raise UnstableSpecAuthError( 403, "Appservice not in room", errcode=Codes.NOT_JOINED, ) return { user_id: { "avatar_url": profile.avatar_url, "display_name": profile.display_name, } for user_id, profile in users_with_profile.items() } def maybe_schedule_expiry(self, event: EventBase) -> None: """Schedule the expiry of an event if there's not already one scheduled, or if the one running is for an event that will expire after the provided timestamp. This function needs to invalidate the event cache, which is only possible on the master process, and therefore needs to be run on there. Args: event: The event to schedule the expiry of. """ expiry_ts = event.content.get(EventContentFields.SELF_DESTRUCT_AFTER) if type(expiry_ts) is not int or event.is_state(): # noqa: E721 return # _schedule_expiry_for_event won't actually schedule anything if there's already # a task scheduled for a timestamp that's sooner than the provided one. self._schedule_expiry_for_event(event.event_id, expiry_ts) async def _schedule_next_expiry(self) -> None: """Retrieve the ID and the expiry timestamp of the next event to be expired, and schedule an expiry task for it. If there's no event left to expire, set _expiry_scheduled to None so that a future call to save_expiry_ts can schedule a new expiry task. """ # Try to get the expiry timestamp of the next event to expire. res = await self.store.get_next_event_to_expire() if res: event_id, expiry_ts = res self._schedule_expiry_for_event(event_id, expiry_ts) def _schedule_expiry_for_event(self, event_id: str, expiry_ts: int) -> None: """Schedule an expiry task for the provided event if there's not already one scheduled at a timestamp that's sooner than the provided one. Args: event_id: The ID of the event to expire. expiry_ts: The timestamp at which to expire the event. """ if self._scheduled_expiry: # If the provided timestamp refers to a time before the scheduled time of the # next expiry task, cancel that task and reschedule it for this timestamp. next_scheduled_expiry_ts = self._scheduled_expiry.getTime() * 1000 if expiry_ts < next_scheduled_expiry_ts: self._scheduled_expiry.cancel() else: return # Figure out how many seconds we need to wait before expiring the event. now_ms = self.clock.time_msec() delay = (expiry_ts - now_ms) / 1000 # callLater doesn't support negative delays, so trim the delay to 0 if we're # in that case. if delay < 0: delay = 0 logger.info("Scheduling expiry for event %s in %.3fs", event_id, delay) self._scheduled_expiry = self.clock.call_later( delay, run_as_background_process, "_expire_event", self._expire_event, event_id, ) async def _expire_event(self, event_id: str) -> None: """Retrieve and expire an event that needs to be expired from the database. If the event doesn't exist in the database, log it and delete the expiry date from the database (so that we don't try to expire it again). """ assert self._ephemeral_events_enabled self._scheduled_expiry = None logger.info("Expiring event %s", event_id) try: # Expire the event if we know about it. This function also deletes the expiry # date from the database in the same database transaction. await self.store.expire_event(event_id) except Exception as e: logger.error("Could not expire event %s: %r", event_id, e) # Schedule the expiry of the next event to expire. await self._schedule_next_expiry() # The duration (in ms) after which rooms should be removed # `_rooms_to_exclude_from_dummy_event_insertion` (with the effect that we will try # to generate a dummy event for them once more) # _DUMMY_EVENT_ROOM_EXCLUSION_EXPIRY = 7 * 24 * 60 * 60 * 1000 class EventCreationHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.auth_blocking = hs.get_auth_blocking() self._event_auth_handler = hs.get_event_auth_handler() self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.state = hs.get_state_handler() self.clock = hs.get_clock() self.validator = EventValidator() self.profile_handler = hs.get_profile_handler() self.event_builder_factory = hs.get_event_builder_factory() self.server_name = hs.hostname self.notifier = hs.get_notifier() self.config = hs.config self.require_membership_for_aliases = ( hs.config.server.require_membership_for_aliases ) self._events_shard_config = self.config.worker.events_shard_config self._instance_name = hs.get_instance_name() self._notifier = hs.get_notifier() self._worker_lock_handler = hs.get_worker_locks_handler() self.room_prejoin_state_types = self.hs.config.api.room_prejoin_state self.membership_types_to_include_profile_data_in = { Membership.JOIN, Membership.KNOCK, } if self.hs.config.server.include_profile_data_on_invite: self.membership_types_to_include_profile_data_in.add(Membership.INVITE) self.send_event = ReplicationSendEventRestServlet.make_client(hs) self.send_events = ReplicationSendEventsRestServlet.make_client(hs) self.request_ratelimiter = hs.get_request_ratelimiter() # We limit concurrent event creation for a room to 1. This prevents state resolution # from occurring when sending bursts of events to a local room self.limiter = Linearizer(max_count=1, name="room_event_creation_limit") self._bulk_push_rule_evaluator = hs.get_bulk_push_rule_evaluator() self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self._third_party_event_rules = ( self.hs.get_module_api_callbacks().third_party_event_rules ) self._block_events_without_consent_error = ( self.config.consent.block_events_without_consent_error ) # we need to construct a ConsentURIBuilder here, as it checks that the necessary # config options, but *only* if we have a configuration for which we are # going to need it. if self._block_events_without_consent_error: self._consent_uri_builder = ConsentURIBuilder(self.config) # Rooms which should be excluded from dummy insertion. (For instance, # those without local users who can send events into the room). # # map from room id to time-of-last-attempt. # self._rooms_to_exclude_from_dummy_event_insertion: Dict[str, int] = {} # The number of forward extremeities before a dummy event is sent. self._dummy_events_threshold = hs.config.server.dummy_events_threshold if ( self.config.worker.run_background_tasks and self.config.server.cleanup_extremities_with_dummy_events ): self.clock.looping_call( lambda: run_as_background_process( "send_dummy_events_to_fill_extremities", self._send_dummy_events_to_fill_extremities, ), 5 * 60 * 1000, ) self._message_handler = hs.get_message_handler() self._ephemeral_events_enabled = hs.config.server.enable_ephemeral_messages self._external_cache = hs.get_external_cache() # Stores the state groups we've recently added to the joined hosts # external cache. Note that the timeout must be significantly less than # the TTL on the external cache. self._external_cache_joined_hosts_updates: Optional[ExpiringCache] = None if self._external_cache.is_enabled(): self._external_cache_joined_hosts_updates = ExpiringCache( "_external_cache_joined_hosts_updates", self.clock, expiry_ms=30 * 60 * 1000, ) async def create_event( self, requester: Requester, event_dict: dict, txn_id: Optional[str] = None, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, state_event_ids: Optional[List[str]] = None, require_consent: bool = True, outlier: bool = False, depth: Optional[int] = None, state_map: Optional[StateMap[str]] = None, for_batch: bool = False, current_state_group: Optional[int] = None, ) -> Tuple[EventBase, UnpersistedEventContextBase]: """ Given a dict from a client, create a new event. If bool for_batch is true, will create an event using the prev_event_ids, and will create an event context for the event using the parameters state_map and current_state_group, thus these parameters must be provided in this case if for_batch is True. The subsequently created event and context are suitable for being batched up and bulk persisted to the database with other similarly created events. Creates an FrozenEvent object, filling out auth_events, prev_events, etc. Adds display names to Join membership events. Args: requester event_dict: An entire event txn_id allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases (previously useful for MSC2716). prev_event_ids: the forward extremities to use as the prev_events for the new event. If None, they will be requested from the database. auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. If non-None, prev_event_ids must also be provided. state_event_ids: The full state at a given event. This was previously used particularly by the MSC2716 /batch_send endpoint. This should normally be left as None, which will cause the auth_event_ids to be calculated based on the room state at the prev_events. require_consent: Whether to check if the requester has consented to the privacy policy. outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. state_map: A state map of previously created events, used only when creating events for batch persisting for_batch: whether the event is being created for batch persisting to the db current_state_group: the current state group, used only for creating events for batch persisting Raises: ResourceLimitError if server is blocked to some resource being exceeded Returns: Tuple of created event, Context """ await self.auth_blocking.check_auth_blocking(requester=requester) if event_dict["type"] == EventTypes.Create and event_dict["state_key"] == "": room_version_id = event_dict["content"]["room_version"] maybe_room_version_obj = KNOWN_ROOM_VERSIONS.get(room_version_id) if not maybe_room_version_obj: # this can happen if support is withdrawn for a room version raise UnsupportedRoomVersionError(room_version_id) room_version_obj = maybe_room_version_obj else: try: room_version_obj = await self.store.get_room_version( event_dict["room_id"] ) except NotFoundError: raise AuthError(403, "Unknown room") builder = self.event_builder_factory.for_room_version( room_version_obj, event_dict ) self.validator.validate_builder(builder) if builder.type == EventTypes.Member: membership = builder.content.get("membership", None) target = UserID.from_string(builder.state_key) if membership in self.membership_types_to_include_profile_data_in: # If event doesn't include a display name, add one. profile = self.profile_handler content = builder.content try: if "displayname" not in content: displayname = await profile.get_displayname(target) if displayname is not None: content["displayname"] = displayname if "avatar_url" not in content: avatar_url = await profile.get_avatar_url(target) if avatar_url is not None: content["avatar_url"] = avatar_url except Exception as e: logger.info( "Failed to get profile information for %r: %s", target, e ) is_exempt = await self._is_exempt_from_privacy_policy(builder, requester) if require_consent and not is_exempt: await self.assert_accepted_privacy_policy(requester) # Save the the device ID and the transaction ID in the event internal metadata. # This is useful to determine if we should echo the transaction_id in events. # See `synapse.events.utils.EventClientSerializer.serialize_event` if requester.device_id is not None: builder.internal_metadata.device_id = requester.device_id if txn_id is not None: builder.internal_metadata.txn_id = txn_id builder.internal_metadata.outlier = outlier event, unpersisted_context = await self.create_new_client_event( builder=builder, requester=requester, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, state_event_ids=state_event_ids, depth=depth, state_map=state_map, for_batch=for_batch, current_state_group=current_state_group, ) # In an ideal world we wouldn't need the second part of this condition. However, # this behaviour isn't spec'd yet, meaning we should be able to deactivate this # behaviour. Another reason is that this code is also evaluated each time a new # m.room.aliases event is created, which includes hitting a /directory route. # Therefore not including this condition here would render the similar one in # synapse.handlers.directory pointless. if builder.type == EventTypes.Aliases and self.require_membership_for_aliases: # Ideally we'd do the membership check in event_auth.check(), which # describes a spec'd algorithm for authenticating events received over # federation as well as those created locally. As of room v3, aliases events # can be created by users that are not in the room, therefore we have to # tolerate them in event_auth.check(). if for_batch: assert state_map is not None prev_event_id = state_map.get((EventTypes.Member, event.sender)) else: prev_state_ids = await unpersisted_context.get_prev_state_ids( StateFilter.from_types([(EventTypes.Member, event.sender)]) ) prev_event_id = prev_state_ids.get((EventTypes.Member, event.sender)) prev_event = ( await self.store.get_event(prev_event_id, allow_none=True) if prev_event_id else None ) if not prev_event or prev_event.membership != Membership.JOIN: logger.warning( ( "Attempt to send `m.room.aliases` in room %s by user %s but" " membership is %s" ), event.room_id, event.sender, prev_event.membership if prev_event else None, ) raise AuthError( 403, "You must be in the room to create an alias for it" ) self.validator.validate_new(event, self.config) return event, unpersisted_context async def _is_exempt_from_privacy_policy( self, builder: EventBuilder, requester: Requester ) -> bool: """ "Determine if an event to be sent is exempt from having to consent to the privacy policy Args: builder: event being created requester: user requesting this event Returns: true if the event can be sent without the user consenting """ # the only thing the user can do is join the server notices room. if builder.type == EventTypes.Member: membership = builder.content.get("membership", None) if membership == Membership.JOIN: return await self.store.is_server_notice_room(builder.room_id) elif membership == Membership.LEAVE: # the user is always allowed to leave (but not kick people) return builder.state_key == requester.user.to_string() return False async def assert_accepted_privacy_policy(self, requester: Requester) -> None: """Check if a user has accepted the privacy policy Called when the given user is about to do something that requires privacy consent. We see if the user is exempt and otherwise check that they have given consent. If they have not, a ConsentNotGiven error is raised. Args: requester: The user making the request Returns: Returns normally if the user has consented or is exempt Raises: ConsentNotGivenError: if the user has not given consent yet """ if self._block_events_without_consent_error is None: return # exempt AS users from needing consent if requester.app_service is not None: return user_id = requester.authenticated_entity if not user_id.startswith("@"): # The authenticated entity might not be a user, e.g. if it's the # server puppetting the user. return user = UserID.from_string(user_id) # exempt the system notices user if ( self.config.servernotices.server_notices_mxid is not None and user_id == self.config.servernotices.server_notices_mxid ): return u = await self.store.get_user_by_id(user_id) assert u is not None if u.user_type in (UserTypes.SUPPORT, UserTypes.BOT): # support and bot users are not required to consent return if u.appservice_id is not None: # users registered by an appservice are exempt return if u.consent_version == self.config.consent.user_consent_version: return consent_uri = self._consent_uri_builder.build_user_consent_uri(user.localpart) msg = self._block_events_without_consent_error % {"consent_uri": consent_uri} raise ConsentNotGivenError(msg=msg, consent_uri=consent_uri) async def deduplicate_state_event( self, event: EventBase, context: EventContext ) -> Optional[EventBase]: """ Checks whether event is in the latest resolved state in context. Args: event: The event to check for duplication. context: The event context. Returns: The previous version of the event is returned, if it is found in the event context. Otherwise, None is returned. """ if event.internal_metadata.is_outlier(): # This can happen due to out of band memberships return None prev_state_ids = await context.get_prev_state_ids( StateFilter.from_types([(event.type, event.state_key)]) ) prev_event_id = prev_state_ids.get((event.type, event.state_key)) if not prev_event_id: return None prev_event = await self.store.get_event(prev_event_id, allow_none=True) if not prev_event: return None if prev_event and event.user_id == prev_event.user_id: prev_content = encode_canonical_json(prev_event.content) next_content = encode_canonical_json(event.content) if prev_content == next_content: return prev_event return None async def get_event_id_from_transaction( self, requester: Requester, txn_id: str, room_id: str, ) -> Optional[str]: """For the given transaction ID and room ID, check if there is a matching event ID. Args: requester: The requester making the request in the context of which we want to fetch the event. txn_id: The transaction ID. room_id: The room ID. Returns: An event ID if one could be found, None otherwise. """ existing_event_id = None # According to the spec, transactions are scoped to a user's device ID. if requester.device_id: existing_event_id = ( await self.store.get_event_id_from_transaction_id_and_device_id( room_id, requester.user.to_string(), requester.device_id, txn_id, ) ) if existing_event_id: return existing_event_id return existing_event_id async def get_event_from_transaction( self, requester: Requester, txn_id: str, room_id: str, ) -> Optional[EventBase]: """For the given transaction ID and room ID, check if there is a matching event. If so, fetch it and return it. Args: requester: The requester making the request in the context of which we want to fetch the event. txn_id: The transaction ID. room_id: The room ID. Returns: An event if one could be found, None otherwise. """ existing_event_id = await self.get_event_id_from_transaction( requester, txn_id, room_id ) if existing_event_id: return await self.store.get_event(existing_event_id) return None async def create_and_send_nonmember_event( self, requester: Requester, event_dict: dict, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, state_event_ids: Optional[List[str]] = None, ratelimit: bool = True, txn_id: Optional[str] = None, ignore_shadow_ban: bool = False, outlier: bool = False, depth: Optional[int] = None, ) -> Tuple[EventBase, int]: """ Creates an event, then sends it. See self.create_event and self.handle_new_client_event. Args: requester: The requester sending the event. event_dict: An entire event. allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases (previously useful for MSC2716). prev_event_ids: The event IDs to use as the prev events. Should normally be left as None to automatically request them from the database. state_event_ids: The full state at a given event. This was previously used particularly by the MSC2716 /batch_send endpoint. This should normally be left as None, which will cause the auth_event_ids to be calculated based on the room state at the prev_events. ratelimit: Whether to rate limit this send. txn_id: The transaction ID. ignore_shadow_ban: True if shadow-banned users should be allowed to send this event. outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. Returns: The event, and its stream ordering (if deduplication happened, the previous, duplicate event). Raises: ShadowBanError if the requester has been shadow-banned. """ if event_dict["type"] == EventTypes.Member: raise SynapseError( 500, "Tried to send member event through non-member codepath" ) if not ignore_shadow_ban and requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() if ratelimit: room_id = event_dict["room_id"] try: room_version = await self.store.get_room_version(room_id) except NotFoundError: # The room doesn't exist. raise AuthError(403, f"User {requester.user} not in room {room_id}") if room_version.updated_redaction_rules: redacts = event_dict["content"].get("redacts") else: redacts = event_dict.get("redacts") is_admin_redaction = await self.is_admin_redaction( event_type=event_dict["type"], sender=event_dict["sender"], redacts=redacts, ) await self.request_ratelimiter.ratelimit( requester, is_admin_redaction=is_admin_redaction, update=False ) # We limit the number of concurrent event sends in a room so that we # don't fork the DAG too much. If we don't limit then we can end up in # a situation where event persistence can't keep up, causing # extremities to pile up, which in turn leads to state resolution # taking longer. room_id = event_dict["room_id"] async with self.limiter.queue(room_id): if txn_id: event = await self.get_event_from_transaction( requester, txn_id, room_id ) if event: # we know it was persisted, so must have a stream ordering assert event.internal_metadata.stream_ordering return ( event, event.internal_metadata.stream_ordering, ) async with self._worker_lock_handler.acquire_read_write_lock( NEW_EVENT_DURING_PURGE_LOCK_NAME, room_id, write=False ): return await self._create_and_send_nonmember_event_locked( requester=requester, event_dict=event_dict, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, state_event_ids=state_event_ids, ratelimit=ratelimit, txn_id=txn_id, ignore_shadow_ban=ignore_shadow_ban, outlier=outlier, depth=depth, ) async def _create_and_send_nonmember_event_locked( self, requester: Requester, event_dict: dict, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, state_event_ids: Optional[List[str]] = None, ratelimit: bool = True, txn_id: Optional[str] = None, ignore_shadow_ban: bool = False, outlier: bool = False, depth: Optional[int] = None, ) -> Tuple[EventBase, int]: room_id = event_dict["room_id"] # If we don't have any prev event IDs specified then we need to # check that the host is in the room (as otherwise populating the # prev events will fail), at which point we may as well check the # local user is in the room. if not prev_event_ids: user_id = requester.user.to_string() is_user_in_room = await self.store.check_local_user_in_room( user_id, room_id ) if not is_user_in_room: raise AuthError(403, f"User {user_id} not in room {room_id}") # Try several times, it could fail with PartialStateConflictError # in handle_new_client_event, cf comment in except block. max_retries = 5 for i in range(max_retries): try: event, unpersisted_context = await self.create_event( requester, event_dict, txn_id=txn_id, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, state_event_ids=state_event_ids, outlier=outlier, depth=depth, ) context = await unpersisted_context.persist(event) assert self.hs.is_mine_id(event.sender), "User must be our own: %s" % ( event.sender, ) spam_check_result = ( await self._spam_checker_module_callbacks.check_event_for_spam( event ) ) if spam_check_result != self._spam_checker_module_callbacks.NOT_SPAM: if isinstance(spam_check_result, tuple): try: [code, dict] = spam_check_result raise SynapseError( 403, "This message had been rejected as probable spam", code, dict, ) except ValueError: logger.error( "Spam-check module returned invalid error value. Expecting [code, dict], got %s", spam_check_result, ) raise SynapseError( 403, "This message has been rejected as probable spam", Codes.FORBIDDEN, ) # Backwards compatibility: if the return value is not an error code, it # means the module returned an error message to be included in the # SynapseError (which is now deprecated). raise SynapseError( 403, spam_check_result, Codes.FORBIDDEN, ) ev = await self.handle_new_client_event( requester=requester, events_and_context=[(event, context)], ratelimit=ratelimit, ignore_shadow_ban=ignore_shadow_ban, ) break except PartialStateConflictError as e: # Persisting couldn't happen because the room got un-partial stated # in the meantime and context needs to be recomputed, so let's do so. if i == max_retries - 1: raise e # we know it was persisted, so must have a stream ordering assert ev.internal_metadata.stream_ordering return ev, ev.internal_metadata.stream_ordering @measure_func("create_new_client_event") async def create_new_client_event( self, builder: EventBuilder, requester: Optional[Requester] = None, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, auth_event_ids: Optional[List[str]] = None, state_event_ids: Optional[List[str]] = None, depth: Optional[int] = None, state_map: Optional[StateMap[str]] = None, for_batch: bool = False, current_state_group: Optional[int] = None, ) -> Tuple[EventBase, UnpersistedEventContextBase]: """Create a new event for a local client. If bool for_batch is true, will create an event using the prev_event_ids, and will create an event context for the event using the parameters state_map and current_state_group, thus these parameters must be provided in this case if for_batch is True. The subsequently created event and context are suitable for being batched up and bulk persisted to the database with other similarly created events. Note that this returns an UnpersistedEventContext, which must be converted to an EventContext before it can be sent to the DB. Args: builder: requester: allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases (previously useful for MSC2716). prev_event_ids: the forward extremities to use as the prev_events for the new event. If None, they will be requested from the database. auth_event_ids: The event ids to use as the auth_events for the new event. Should normally be left as None, which will cause them to be calculated based on the room state at the prev_events. state_event_ids: The full state at a given event. This was previously used particularly by the MSC2716 /batch_send endpoint. This should normally be left as None, which will cause the auth_event_ids to be calculated based on the room state at the prev_events. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. state_map: A state map of previously created events, used only when creating events for batch persisting for_batch: whether the event is being created for batch persisting to the db current_state_group: the current state group, used only for creating events for batch persisting Returns: Tuple of created event, UnpersistedEventContext """ # Strip down the state_event_ids to only what we need to auth the event. # For example, we don't need extra m.room.member that don't match event.sender if state_event_ids is not None: # Do a quick check to make sure that prev_event_ids is present to # make the type-checking around `builder.build` happy. # prev_event_ids could be an empty array though. assert prev_event_ids is not None temp_event = await builder.build( prev_event_ids=prev_event_ids, auth_event_ids=state_event_ids, depth=depth, ) state_events = await self.store.get_events_as_list(state_event_ids) # Create a StateMap[str] current_state_ids = { (e.type, e.state_key): e.event_id for e in state_events } # Actually strip down and only use the necessary auth events auth_event_ids = self._event_auth_handler.compute_auth_events( event=temp_event, current_state_ids=current_state_ids, for_verification=False, ) if prev_event_ids is not None: assert ( len(prev_event_ids) <= 10 ), "Attempting to create an event with %i prev_events" % ( len(prev_event_ids), ) else: prev_event_ids = await self.store.get_prev_events_for_room(builder.room_id) # Do a quick sanity check here, rather than waiting until we've created the # event and then try to auth it (which fails with a somewhat confusing "No # create event in auth events") if allow_no_prev_events: # We allow events with no `prev_events` but it better have some `auth_events` assert ( builder.type == EventTypes.Create # Allow an event to have empty list of prev_event_ids # only if it has auth_event_ids. or auth_event_ids ), "Attempting to create a non-m.room.create event with no prev_events or auth_event_ids" else: # we now ought to have some prev_events (unless it's a create event). assert ( builder.type == EventTypes.Create or prev_event_ids ), "Attempting to create a non-m.room.create event with no prev_events" if for_batch: assert prev_event_ids is not None assert state_map is not None auth_ids = self._event_auth_handler.compute_auth_events(builder, state_map) event = await builder.build( prev_event_ids=prev_event_ids, auth_event_ids=auth_ids, depth=depth ) context: UnpersistedEventContextBase = ( await self.state.calculate_context_info( event, state_ids_before_event=state_map, partial_state=False, state_group_before_event=current_state_group, ) ) else: event = await builder.build( prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, depth=depth, ) # Pass on the outlier property from the builder to the event # after it is created if builder.internal_metadata.outlier: event.internal_metadata.outlier = True context = EventContext.for_outlier(self._storage_controllers) else: context = await self.state.calculate_context_info(event) if requester: context.app_service = requester.app_service res, new_content = await self._third_party_event_rules.check_event_allowed( event, context ) if res is False: logger.info( "Event %s forbidden by third-party rules", event, ) raise SynapseError( 403, "This event is not allowed in this context", Codes.FORBIDDEN ) elif new_content is not None: # the third-party rules want to replace the event. We'll need to build a new # event. event, context = await self._rebuild_event_after_third_party_rules( new_content, event ) self.validator.validate_new(event, self.config) await self._validate_event_relation(event) logger.debug("Created event %s", event.event_id) return event, context async def _validate_event_relation(self, event: EventBase) -> None: """ Ensure the relation data on a new event is not bogus. Args: event: The event being created. Raises: SynapseError if the event is invalid. """ relation = relation_from_event(event) if not relation: return parent_event = await self.store.get_event(relation.parent_id, allow_none=True) if parent_event: # And in the same room. if parent_event.room_id != event.room_id: raise SynapseError(400, "Relations must be in the same room") else: # There must be some reason that the client knows the event exists, # see if there are existing relations. If so, assume everything is fine. if not await self.store.event_is_target_of_relation(relation.parent_id): # Otherwise, the client can't know about the parent event! raise SynapseError(400, "Can't send relation to unknown event") # If this event is an annotation then we check that that the sender # can't annotate the same way twice (e.g. stops users from liking an # event multiple times). if relation.rel_type == RelationTypes.ANNOTATION: aggregation_key = relation.aggregation_key if aggregation_key is None: raise SynapseError(400, "Missing aggregation key") if len(aggregation_key) > 500: raise SynapseError(400, "Aggregation key is too long") already_exists = await self.store.has_user_annotated_event( relation.parent_id, event.type, aggregation_key, event.sender ) if already_exists: raise SynapseError( 400, "Can't send same reaction twice", errcode=Codes.DUPLICATE_ANNOTATION, ) # Don't attempt to start a thread if the parent event is a relation. elif relation.rel_type == RelationTypes.THREAD: if await self.store.event_includes_relation(relation.parent_id): raise SynapseError( 400, "Cannot start threads from an event with a relation" ) @measure_func("handle_new_client_event") async def handle_new_client_event( self, requester: Requester, events_and_context: List[Tuple[EventBase, EventContext]], ratelimit: bool = True, extra_users: Optional[List[UserID]] = None, ignore_shadow_ban: bool = False, ) -> EventBase: """Processes new events. Please note that if batch persisting events, an error in handling any one of these events will result in all of the events being dropped. This includes deduplicating, checking auth, persisting, notifying users, sending to remote servers, etc. If called from a worker will hit out to the master process for final processing. Args: requester events_and_context: A list of one or more tuples of event, context to be persisted ratelimit extra_users: Any extra users to notify about event ignore_shadow_ban: True if shadow-banned users should be allowed to send this event. Return: If the event was deduplicated, the previous, duplicate, event. Otherwise, `event`. Raises: ShadowBanError if the requester has been shadow-banned. PartialStateConflictError if attempting to persist a partial state event in a room that has been un-partial stated. """ extra_users = extra_users or [] for event, context in events_and_context: # we don't apply shadow-banning to membership events here. Invites are blocked # higher up the stack, and we allow shadow-banned users to send join and leave # events as normal. if ( event.type != EventTypes.Member and not ignore_shadow_ban and requester.shadow_banned ): # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() if event.is_state(): prev_event = await self.deduplicate_state_event(event, context) if prev_event is not None: logger.info( "Not bothering to persist state event %s duplicated by %s", event.event_id, prev_event.event_id, ) return prev_event if event.internal_metadata.is_out_of_band_membership(): # the only sort of out-of-band-membership events we expect to see here are # invite rejections and rescinded knocks that we have generated ourselves. assert event.type == EventTypes.Member assert event.content["membership"] == Membership.LEAVE else: try: validate_event_for_room_version(event) # If we are persisting a batch of events the event(s) needed to auth the # current event may be part of the batch and will not be in the DB yet event_id_to_event = {e.event_id: e for e, _ in events_and_context} batched_auth_events = {} for event_id in event.auth_event_ids(): auth_event = event_id_to_event.get(event_id) if auth_event: batched_auth_events[event_id] = auth_event await self._event_auth_handler.check_auth_rules_from_context( event, batched_auth_events ) except AuthError as err: logger.warning("Denying new event %r because %s", event, err) raise err # Ensure that we can round trip before trying to persist in db try: dump = json_encoder.encode(event.content) json_decoder.decode(dump) except Exception: logger.exception("Failed to encode content: %r", event.content) raise # We now persist the event (and update the cache in parallel, since we # don't want to block on it). # # Note: mypy gets confused if we inline dl and check with twisted#11770. # Some kind of bug in mypy's deduction? deferreds = ( run_in_background( self._persist_events, requester=requester, events_and_context=events_and_context, ratelimit=ratelimit, extra_users=extra_users, ), run_in_background( self.cache_joined_hosts_for_events, events_and_context ).addErrback(log_failure, "cache_joined_hosts_for_event failed"), ) result, _ = await make_deferred_yieldable( gather_results(deferreds, consumeErrors=True) ).addErrback(unwrapFirstError) return result async def _persist_events( self, requester: Requester, events_and_context: List[Tuple[EventBase, EventContext]], ratelimit: bool = True, extra_users: Optional[List[UserID]] = None, ) -> EventBase: """Actually persists new events. Should only be called by `handle_new_client_event`, and see its docstring for documentation of the arguments. Please note that if batch persisting events, an error in handling any one of these events will result in all of the events being dropped. PartialStateConflictError: if attempting to persist a partial state event in a room that has been un-partial stated. """ await self._bulk_push_rule_evaluator.action_for_events_by_user( events_and_context ) try: # If we're a worker we need to hit out to the master. first_event, _ = events_and_context[0] writer_instance = self._events_shard_config.get_instance( first_event.room_id ) if writer_instance != self._instance_name: # Ratelimit before sending to the other event persister, to # ensure that we correctly have ratelimits on both the event # creators and event persisters. if ratelimit: for event, _ in events_and_context: is_admin_redaction = await self.is_admin_redaction( event.type, event.sender, event.redacts ) await self.request_ratelimiter.ratelimit( requester, is_admin_redaction=is_admin_redaction ) try: result = await self.send_events( instance_name=writer_instance, events_and_context=events_and_context, store=self.store, requester=requester, ratelimit=ratelimit, extra_users=extra_users, ) except SynapseError as e: if e.code == HTTPStatus.CONFLICT: raise PartialStateConflictError() raise stream_id = result["stream_id"] event_id = result["event_id"] # If we batch persisted events we return the last persisted event, otherwise # we return the one event that was persisted event, _ = events_and_context[-1] if event_id != event.event_id: # If we get a different event back then it means that its # been de-duplicated, so we replace the given event with the # one already persisted. event = await self.store.get_event(event_id) else: # If we newly persisted the event then we need to update its # stream_ordering entry manually (as it was persisted on # another worker). event.internal_metadata.stream_ordering = stream_id return event event = await self.persist_and_notify_client_events( requester, events_and_context, ratelimit=ratelimit, extra_users=extra_users, ) return event except Exception: for event, _ in events_and_context: # Ensure that we actually remove the entries in the push actions # staging area, if we calculated them. await self.store.remove_push_actions_from_staging(event.event_id) raise async def cache_joined_hosts_for_events( self, events_and_context: List[Tuple[EventBase, EventContext]] ) -> None: """Precalculate the joined hosts at each of the given events, when using Redis, so that external federation senders don't have to recalculate it themselves. """ if not self._external_cache.is_enabled(): return # If external cache is enabled we should always have this. assert self._external_cache_joined_hosts_updates is not None for event, event_context in events_and_context: if event_context.partial_state: # To populate the cache for a partial-state event, we either have to # block until full state, which the code below does, or change the # meaning of cache values to be the list of hosts to which we plan to # send events and calculate that instead. # # The federation senders don't use the external cache when sending # events in partial-state rooms anyway, so let's not bother populating # the cache. continue # We actually store two mappings, event ID -> prev state group, # state group -> joined hosts, which is much more space efficient # than event ID -> joined hosts. # # Note: We have to cache event ID -> prev state group, as we don't # store that in the DB. # # Note: We set the state group -> joined hosts cache if it hasn't been # set for a while, so that the expiry time is reset. state_entry = await self.state.resolve_state_groups_for_events( event.room_id, event_ids=event.prev_event_ids() ) if state_entry.state_group: await self._external_cache.set( "event_to_prev_state_group", event.event_id, state_entry.state_group, expiry_ms=60 * 60 * 1000, ) if state_entry.state_group in self._external_cache_joined_hosts_updates: return with opentracing.start_active_span("get_joined_hosts"): joined_hosts = ( await self._storage_controllers.state.get_joined_hosts( event.room_id, state_entry ) ) # Note that the expiry times must be larger than the expiry time in # _external_cache_joined_hosts_updates. await self._external_cache.set( "get_joined_hosts", str(state_entry.state_group), list(joined_hosts), expiry_ms=60 * 60 * 1000, ) self._external_cache_joined_hosts_updates[ state_entry.state_group ] = None async def _validate_canonical_alias( self, directory_handler: DirectoryHandler, room_alias_str: str, expected_room_id: str, ) -> None: """ Ensure that the given room alias points to the expected room ID. Args: directory_handler: The directory handler object. room_alias_str: The room alias to check. expected_room_id: The room ID that the alias should point to. """ room_alias = RoomAlias.from_string(room_alias_str) try: mapping = await directory_handler.get_association(room_alias) except SynapseError as e: # Turn M_NOT_FOUND errors into M_BAD_ALIAS errors. if e.errcode == Codes.NOT_FOUND: raise SynapseError( 400, "Room alias %s does not point to the room" % (room_alias_str,), Codes.BAD_ALIAS, ) raise if mapping["room_id"] != expected_room_id: raise SynapseError( 400, "Room alias %s does not point to the room" % (room_alias_str,), Codes.BAD_ALIAS, ) async def persist_and_notify_client_events( self, requester: Requester, events_and_context: List[Tuple[EventBase, EventContext]], ratelimit: bool = True, extra_users: Optional[List[UserID]] = None, ) -> EventBase: """Called when we have fully built the events, have already calculated the push actions for the events, and checked auth. This should only be run on the instance in charge of persisting events. Please note that if batch persisting events, an error in handling any one of these events will result in all of the events being dropped. Returns: The persisted event, if one event is passed in, or the last event in the list in the case of batch persisting. If only one event was persisted, the returned event may be different than the given event if it was de-duplicated (e.g. because we had already persisted an event with the same transaction ID.) Raises: PartialStateConflictError: if attempting to persist a partial state event in a room that has been un-partial stated. """ extra_users = extra_users or [] for event, context in events_and_context: assert self._events_shard_config.should_handle( self._instance_name, event.room_id ) if ratelimit: # We check if this is a room admin redacting an event so that we # can apply different ratelimiting. We do this by simply checking # it's not a self-redaction (to avoid having to look up whether the # user is actually admin or not). is_admin_redaction = await self.is_admin_redaction( event.type, event.sender, event.redacts ) await self.request_ratelimiter.ratelimit( requester, is_admin_redaction=is_admin_redaction ) # run checks/actions on event based on type if event.type == EventTypes.Member and event.membership == Membership.JOIN: ( current_membership, _, ) = await self.store.get_local_current_membership_for_user_in_room( event.state_key, event.room_id ) if current_membership != Membership.JOIN: self._notifier.notify_user_joined_room( event.event_id, event.room_id ) if event.type == EventTypes.ServerACL: self._storage_controllers.state.get_server_acl_for_room.invalidate( (event.room_id,) ) await self._maybe_kick_guest_users(event, context) if event.type == EventTypes.CanonicalAlias: # Validate a newly added alias or newly added alt_aliases. original_alias = None original_alt_aliases: object = [] original_event_id = event.unsigned.get("replaces_state") if original_event_id: original_alias_event = await self.store.get_event(original_event_id) if original_alias_event: original_alias = original_alias_event.content.get("alias", None) original_alt_aliases = original_alias_event.content.get( "alt_aliases", [] ) # Check the alias is currently valid (if it has changed). room_alias_str = event.content.get("alias", None) directory_handler = self.hs.get_directory_handler() if room_alias_str and room_alias_str != original_alias: await self._validate_canonical_alias( directory_handler, room_alias_str, event.room_id ) # Check that alt_aliases is the proper form. alt_aliases = event.content.get("alt_aliases", []) if not isinstance(alt_aliases, (list, tuple)): raise SynapseError( 400, "The alt_aliases property must be a list.", Codes.INVALID_PARAM, ) # If the old version of alt_aliases is of an unknown form, # completely replace it. if not isinstance(original_alt_aliases, (list, tuple)): # TODO: check that the original_alt_aliases' entries are all strings original_alt_aliases = [] # Check that each alias is currently valid. new_alt_aliases = set(alt_aliases) - set(original_alt_aliases) if new_alt_aliases: for alias_str in new_alt_aliases: await self._validate_canonical_alias( directory_handler, alias_str, event.room_id ) federation_handler = self.hs.get_federation_handler() if event.type == EventTypes.Member: if event.content["membership"] == Membership.INVITE: maybe_upsert_event_field( event, event.unsigned, "invite_room_state", await self.store.get_stripped_room_state_from_event_context( context, self.room_prejoin_state_types, membership_user_id=event.sender, ), ) invitee = UserID.from_string(event.state_key) if not self.hs.is_mine(invitee): # TODO: Can we add signature from remote server in a nicer # way? If we have been invited by a remote server, we need # to get them to sign the event. returned_invite = await federation_handler.send_invite( invitee.domain, event ) event.unsigned.pop("room_state", None) # TODO: Make sure the signatures actually are correct. event.signatures.update(returned_invite.signatures) if event.content["membership"] == Membership.KNOCK: maybe_upsert_event_field( event, event.unsigned, "knock_room_state", await self.store.get_stripped_room_state_from_event_context( context, self.room_prejoin_state_types, ), ) if event.type == EventTypes.Redaction: assert event.redacts is not None original_event = await self.store.get_event( event.redacts, redact_behaviour=EventRedactBehaviour.as_is, get_prev_content=False, allow_rejected=False, allow_none=True, ) room_version = await self.store.get_room_version_id(event.room_id) room_version_obj = KNOWN_ROOM_VERSIONS[room_version] # we can make some additional checks now if we have the original event. if original_event: if original_event.type == EventTypes.Create: raise AuthError(403, "Redacting create events is not permitted") if original_event.room_id != event.room_id: raise SynapseError( 400, "Cannot redact event from a different room" ) if original_event.type == EventTypes.ServerACL: raise AuthError( 403, "Redacting server ACL events is not permitted" ) event_types = event_auth.auth_types_for_event(event.room_version, event) prev_state_ids = await context.get_prev_state_ids( StateFilter.from_types(event_types) ) auth_events_ids = self._event_auth_handler.compute_auth_events( event, prev_state_ids, for_verification=True ) auth_events_map = await self.store.get_events(auth_events_ids) auth_events = { (e.type, e.state_key): e for e in auth_events_map.values() } if event_auth.check_redaction( room_version_obj, event, auth_events=auth_events ): # this user doesn't have 'redact' rights, so we need to do some more # checks on the original event. Let's start by checking the original # event exists. if not original_event: raise NotFoundError( "Could not find event %s" % (event.redacts,) ) if event.user_id != original_event.user_id: raise AuthError( 403, "You don't have permission to redact events" ) # all the checks are done. event.internal_metadata.recheck_redaction = False if event.type == EventTypes.Create: prev_state_ids = await context.get_prev_state_ids() if prev_state_ids: raise AuthError(403, "Changing the room create event is forbidden") assert self._storage_controllers.persistence is not None ( persisted_events, max_stream_token, ) = await self._storage_controllers.persistence.persist_events( events_and_context, ) events_and_pos = [] for event in persisted_events: if self._ephemeral_events_enabled: # If there's an expiry timestamp on the event, schedule its expiry. self._message_handler.maybe_schedule_expiry(event) stream_ordering = event.internal_metadata.stream_ordering assert stream_ordering is not None pos = PersistedEventPosition(self._instance_name, stream_ordering) events_and_pos.append((event, pos)) if event.type == EventTypes.Message: # We don't want to block sending messages on any presence code. This # matters as sometimes presence code can take a while. run_as_background_process( "bump_presence_active_time", self._bump_active_time, requester.user, requester.device_id, ) async def _notify() -> None: try: await self.notifier.on_new_room_events( events_and_pos, max_stream_token, extra_users=extra_users ) except Exception: logger.exception("Error notifying about new room events") run_in_background(_notify) return persisted_events[-1] async def is_admin_redaction( self, event_type: str, sender: str, redacts: Optional[str] ) -> bool: """Return whether the event is a redaction made by an admin, and thus should use a different ratelimiter. """ if event_type != EventTypes.Redaction: return False assert redacts is not None original_event = await self.store.get_event( redacts, redact_behaviour=EventRedactBehaviour.as_is, get_prev_content=False, allow_rejected=False, allow_none=True, ) return bool(original_event and sender != original_event.sender) async def _maybe_kick_guest_users( self, event: EventBase, context: EventContext ) -> None: if event.type != EventTypes.GuestAccess: return guest_access = event.content.get(EventContentFields.GUEST_ACCESS) if guest_access == GuestAccess.CAN_JOIN: return current_state_ids = await context.get_current_state_ids() # since this is a client-generated event, it cannot be an outlier and we must # therefore have the state ids. assert current_state_ids is not None current_state_dict = await self.store.get_events( list(current_state_ids.values()) ) current_state = list(current_state_dict.values()) logger.info("maybe_kick_guest_users %r", current_state) await self.hs.get_room_member_handler().kick_guest_users(current_state) async def _bump_active_time(self, user: UserID, device_id: Optional[str]) -> None: try: presence = self.hs.get_presence_handler() await presence.bump_presence_active_time(user, device_id) except Exception: logger.exception("Error bumping presence active time") async def _send_dummy_events_to_fill_extremities(self) -> None: """Background task to send dummy events into rooms that have a large number of extremities """ self._expire_rooms_to_exclude_from_dummy_event_insertion() room_ids = await self.store.get_rooms_with_many_extremities( min_count=self._dummy_events_threshold, limit=5, room_id_filter=self._rooms_to_exclude_from_dummy_event_insertion.keys(), ) for room_id in room_ids: async with self._worker_lock_handler.acquire_read_write_lock( NEW_EVENT_DURING_PURGE_LOCK_NAME, room_id, write=False ): dummy_event_sent = await self._send_dummy_event_for_room(room_id) if not dummy_event_sent: # Did not find a valid user in the room, so remove from future attempts # Exclusion is time limited, so the room will be rechecked in the future # dependent on _DUMMY_EVENT_ROOM_EXCLUSION_EXPIRY logger.info( "Failed to send dummy event into room %s. Will exclude it from " "future attempts until cache expires" % (room_id,) ) now = self.clock.time_msec() self._rooms_to_exclude_from_dummy_event_insertion[room_id] = now async def _send_dummy_event_for_room(self, room_id: str) -> bool: """Attempt to send a dummy event for the given room. Args: room_id: room to try to send an event from Returns: True if a dummy event was successfully sent. False if no user was able to send an event. """ # For each room we need to find a joined member we can use to send # the dummy event with. members = await self.store.get_local_users_in_room(room_id) for user_id in members: requester = create_requester(user_id, authenticated_entity=self.server_name) try: # Try several times, it could fail with PartialStateConflictError # in handle_new_client_event, cf comment in except block. max_retries = 5 for i in range(max_retries): try: event, unpersisted_context = await self.create_event( requester, { "type": EventTypes.Dummy, "content": {}, "room_id": room_id, "sender": user_id, }, ) context = await unpersisted_context.persist(event) event.internal_metadata.proactively_send = False # Since this is a dummy-event it is OK if it is sent by a # shadow-banned user. await self.handle_new_client_event( requester, events_and_context=[(event, context)], ratelimit=False, ignore_shadow_ban=True, ) break except PartialStateConflictError as e: # Persisting couldn't happen because the room got un-partial stated # in the meantime and context needs to be recomputed, so let's do so. if i == max_retries - 1: raise e return True except AuthError: logger.info( "Failed to send dummy event into room %s for user %s due to " "lack of power. Will try another user" % (room_id, user_id) ) return False def _expire_rooms_to_exclude_from_dummy_event_insertion(self) -> None: expire_before = self.clock.time_msec() - _DUMMY_EVENT_ROOM_EXCLUSION_EXPIRY to_expire = set() for room_id, time in self._rooms_to_exclude_from_dummy_event_insertion.items(): if time < expire_before: to_expire.add(room_id) for room_id in to_expire: logger.debug( "Expiring room id %s from dummy event insertion exclusion cache", room_id, ) del self._rooms_to_exclude_from_dummy_event_insertion[room_id] async def _rebuild_event_after_third_party_rules( self, third_party_result: dict, original_event: EventBase ) -> Tuple[EventBase, UnpersistedEventContextBase]: # the third_party_event_rules want to replace the event. # we do some basic checks, and then return the replacement event. # Construct a new EventBuilder and validate it, which helps with the # rest of these checks. try: builder = self.event_builder_factory.for_room_version( original_event.room_version, third_party_result ) self.validator.validate_builder(builder) except SynapseError as e: raise Exception( "Third party rules module created an invalid event: " + e.msg, ) immutable_fields = [ # changing the room is going to break things: we've already checked that the # room exists, and are holding a concurrency limiter token for that room. # Also, we might need to use a different room version. "room_id", # changing the type or state key might work, but we'd need to check that the # calling functions aren't making assumptions about them. "type", "state_key", ] for k in immutable_fields: if getattr(builder, k, None) != original_event.get(k): raise Exception( "Third party rules module created an invalid event: " "cannot change field " + k ) # check that the new sender belongs to this HS if not self.hs.is_mine_id(builder.sender): raise Exception( "Third party rules module created an invalid event: " "invalid sender " + builder.sender ) # copy over the original internal metadata for k, v in original_event.internal_metadata.get_dict().items(): setattr(builder.internal_metadata, k, v) # modules can send new state events, so we re-calculate the auth events just in # case. prev_event_ids = await self.store.get_prev_events_for_room(builder.room_id) event = await builder.build( prev_event_ids=prev_event_ids, auth_event_ids=None, ) # we rebuild the event context, to be on the safe side. If nothing else, # delta_ids might need an update. context = await self.state.calculate_context_info(event) return event, context synapse-1.100.0/synapse/handlers/oidc.py000066400000000000000000002030621455622526000201170ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2020 Quentin Gliech # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import binascii import inspect import json import logging from typing import ( TYPE_CHECKING, Any, Dict, Generic, List, Optional, Type, TypeVar, Union, ) from urllib.parse import urlencode, urlparse import attr import unpaddedbase64 from authlib.common.security import generate_token from authlib.jose import JsonWebToken, JWTClaims from authlib.jose.errors import InvalidClaimError, JoseError, MissingClaimError from authlib.oauth2.auth import ClientAuth from authlib.oauth2.rfc6749.parameters import prepare_grant_uri from authlib.oauth2.rfc7636.challenge import create_s256_code_challenge from authlib.oidc.core import CodeIDToken, UserInfo from authlib.oidc.discovery import OpenIDProviderMetadata, get_well_known_url from jinja2 import Environment, Template from pymacaroons.exceptions import ( MacaroonDeserializationException, MacaroonInitException, MacaroonInvalidSignatureException, ) from typing_extensions import TypedDict from twisted.web.client import readBody from twisted.web.http_headers import Headers from synapse.api.errors import SynapseError from synapse.config import ConfigError from synapse.config.oidc import OidcProviderClientSecretJwtKey, OidcProviderConfig from synapse.handlers.sso import MappingException, UserAttributes from synapse.http.server import finish_request from synapse.http.servlet import parse_string from synapse.http.site import SynapseRequest from synapse.logging.context import make_deferred_yieldable from synapse.types import JsonDict, UserID, map_username_to_mxid_localpart from synapse.util import Clock, json_decoder from synapse.util.caches.cached_call import RetryOnExceptionCachedCall from synapse.util.macaroons import MacaroonGenerator, OidcSessionData from synapse.util.templates import _localpart_from_email_filter if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # we want the cookie to be returned to us even when the request is the POSTed # result of a form on another domain, as is used with `response_mode=form_post`. # # Modern browsers will not do so unless we set SameSite=None; however *older* # browsers (including all versions of Safari on iOS 12?) don't support # SameSite=None, and interpret it as SameSite=Strict: # https://bugs.webkit.org/show_bug.cgi?id=198181 # # As a rather painful workaround, we set *two* cookies, one with SameSite=None # and one with no SameSite, in the hope that at least one of them will get # back to us. # # Secure is necessary for SameSite=None (and, empirically, also breaks things # on iOS 12.) # # Here we have the names of the cookies, and the options we use to set them. _SESSION_COOKIES = [ (b"oidc_session", b"HttpOnly; Secure; SameSite=None"), (b"oidc_session_no_samesite", b"HttpOnly"), ] #: A token exchanged from the token endpoint, as per RFC6749 sec 5.1. and #: OpenID.Core sec 3.1.3.3. class Token(TypedDict): access_token: str token_type: str id_token: Optional[str] refresh_token: Optional[str] expires_in: int scope: Optional[str] #: A JWK, as per RFC7517 sec 4. The type could be more precise than that, but #: there is no real point of doing this in our case. JWK = Dict[str, str] C = TypeVar("C") #: A JWK Set, as per RFC7517 sec 5. class JWKS(TypedDict): keys: List[JWK] class OidcHandler: """Handles requests related to the OpenID Connect login flow.""" def __init__(self, hs: "HomeServer"): self._sso_handler = hs.get_sso_handler() provider_confs = hs.config.oidc.oidc_providers # we should not have been instantiated if there is no configured provider. assert provider_confs self._macaroon_generator = hs.get_macaroon_generator() self._providers: Dict[str, "OidcProvider"] = { p.idp_id: OidcProvider(hs, self._macaroon_generator, p) for p in provider_confs } async def load_metadata(self) -> None: """Validate the config and load the metadata from the remote endpoint. Called at startup to ensure we have everything we need. """ for idp_id, p in self._providers.items(): try: await p.load_metadata() if not p._uses_userinfo: await p.load_jwks() except Exception as e: raise Exception( "Error while initialising OIDC provider %r" % (idp_id,) ) from e async def handle_oidc_callback(self, request: SynapseRequest) -> None: """Handle an incoming request to /_synapse/client/oidc/callback Since we might want to display OIDC-related errors in a user-friendly way, we don't raise SynapseError from here. Instead, we call ``self._sso_handler.render_error`` which displays an HTML page for the error. Most of the OpenID Connect logic happens here: - first, we check if there was any error returned by the provider and display it - then we fetch the session cookie, decode and verify it - the ``state`` query parameter should match with the one stored in the session cookie Once we know the session is legit, we then delegate to the OIDC Provider implementation, which will exchange the code with the provider and complete the login/authentication. Args: request: the incoming request from the browser. """ # This will always be set by the time Twisted calls us. assert request.args is not None # The provider might redirect with an error. # In that case, just display it as-is. if b"error" in request.args: # error response from the auth server. see: # https://tools.ietf.org/html/rfc6749#section-4.1.2.1 # https://openid.net/specs/openid-connect-core-1_0.html#AuthError error = request.args[b"error"][0].decode() description = request.args.get(b"error_description", [b""])[0].decode() # Most of the errors returned by the provider could be due by # either the provider misbehaving or Synapse being misconfigured. # The only exception of that is "access_denied", where the user # probably cancelled the login flow. In other cases, log those errors. logger.log( logging.INFO if error == "access_denied" else logging.ERROR, "Received OIDC callback with error: %s %s", error, description, ) self._sso_handler.render_error(request, error, description) return # otherwise, it is presumably a successful response. see: # https://tools.ietf.org/html/rfc6749#section-4.1.2 # Fetch the session cookie. See the comments on SESSION_COOKIES for why there # are two. for cookie_name, _ in _SESSION_COOKIES: session: Optional[bytes] = request.getCookie(cookie_name) if session is not None: break else: logger.info("Received OIDC callback, with no session cookie") self._sso_handler.render_error( request, "missing_session", "No session cookie found" ) return # Remove the cookies. There is a good chance that if the callback failed # once, it will fail next time and the code will already be exchanged. # Removing the cookies early avoids spamming the provider with token requests. # # we have to build the header by hand rather than calling request.addCookie # because the latter does not support SameSite=None # (https://twistedmatrix.com/trac/ticket/10088) for cookie_name, options in _SESSION_COOKIES: request.cookies.append( b"%s=; Expires=Thu, Jan 01 1970 00:00:00 UTC; %s" % (cookie_name, options) ) # Check for the state query parameter if b"state" not in request.args: logger.info("Received OIDC callback, with no state parameter") self._sso_handler.render_error( request, "invalid_request", "State parameter is missing" ) return state = request.args[b"state"][0].decode() # Deserialize the session token and verify it. try: session_data = self._macaroon_generator.verify_oidc_session_token( session, state ) except (MacaroonInitException, MacaroonDeserializationException, KeyError) as e: logger.exception("Invalid session for OIDC callback") self._sso_handler.render_error(request, "invalid_session", str(e)) return except MacaroonInvalidSignatureException as e: logger.warning("Could not verify session for OIDC callback: %s", e) self._sso_handler.render_error(request, "mismatching_session", str(e)) return logger.info("Received OIDC callback for IdP %s", session_data.idp_id) oidc_provider = self._providers.get(session_data.idp_id) if not oidc_provider: logger.error("OIDC session uses unknown IdP %r", oidc_provider) self._sso_handler.render_error(request, "unknown_idp", "Unknown IdP") return if b"code" not in request.args: logger.info("Code parameter is missing") self._sso_handler.render_error( request, "invalid_request", "Code parameter is missing" ) return code = request.args[b"code"][0].decode() await oidc_provider.handle_oidc_callback(request, session_data, code) async def handle_backchannel_logout(self, request: SynapseRequest) -> None: """Handle an incoming request to /_synapse/client/oidc/backchannel_logout This extracts the logout_token from the request and tries to figure out which OpenID Provider it is comming from. This works by matching the iss claim with the issuer and the aud claim with the client_id. Since at this point we don't know who signed the JWT, we can't just decode it using authlib since it will always verifies the signature. We have to decode it manually without validating the signature. The actual JWT verification is done in the `OidcProvider.handler_backchannel_logout` method, once we figured out which provider sent the request. Args: request: the incoming request from the browser. """ logout_token = parse_string(request, "logout_token") if logout_token is None: raise SynapseError(400, "Missing logout_token in request") # A JWT looks like this: # header.payload.signature # where all parts are encoded with urlsafe base64. # The aud and iss claims we care about are in the payload part, which # is a JSON object. try: # By destructuring the list after splitting, we ensure that we have # exactly 3 segments _, payload, _ = logout_token.split(".") except ValueError: raise SynapseError(400, "Invalid logout_token in request") try: payload_bytes = unpaddedbase64.decode_base64(payload) claims = json_decoder.decode(payload_bytes.decode("utf-8")) except (json.JSONDecodeError, binascii.Error, UnicodeError): raise SynapseError(400, "Invalid logout_token payload in request") try: # Let's extract the iss and aud claims iss = claims["iss"] aud = claims["aud"] # The aud claim can be either a string or a list of string. Here we # normalize it as a list of strings. if isinstance(aud, str): aud = [aud] # Check that we have the right types for the aud and the iss claims if not isinstance(iss, str) or not isinstance(aud, list): raise TypeError() for a in aud: if not isinstance(a, str): raise TypeError() # At this point we properly checked both claims types issuer: str = iss audience: List[str] = aud except (TypeError, KeyError): raise SynapseError(400, "Invalid issuer/audience in logout_token") # Now that we know the audience and the issuer, we can figure out from # what provider it is coming from oidc_provider: Optional[OidcProvider] = None for provider in self._providers.values(): if provider.issuer == issuer and provider.client_id in audience: oidc_provider = provider break if oidc_provider is None: raise SynapseError(400, "Could not find the OP that issued this event") # Ask the provider to handle the logout request. await oidc_provider.handle_backchannel_logout(request, logout_token) class OidcError(Exception): """Used to catch errors when calling the token_endpoint""" def __init__(self, error: str, error_description: Optional[str] = None): self.error = error self.error_description = error_description def __str__(self) -> str: if self.error_description: return f"{self.error}: {self.error_description}" return self.error class OidcProvider: """Wraps the config for a single OIDC IdentityProvider Provides methods for handling redirect requests and callbacks via that particular IdP. """ def __init__( self, hs: "HomeServer", macaroon_generator: MacaroonGenerator, provider: OidcProviderConfig, ): self._store = hs.get_datastores().main self._clock = hs.get_clock() self._macaroon_generaton = macaroon_generator self._config = provider self._callback_url: str = hs.config.oidc.oidc_callback_url # Calculate the prefix for OIDC callback paths based on the public_baseurl. # We'll insert this into the Path= parameter of any session cookies we set. public_baseurl_path = urlparse(hs.config.server.public_baseurl).path self._callback_path_prefix = ( public_baseurl_path.encode("utf-8") + b"_synapse/client/oidc" ) self._oidc_attribute_requirements = provider.attribute_requirements self._scopes = provider.scopes self._user_profile_method = provider.user_profile_method client_secret: Optional[Union[str, JwtClientSecret]] = None if provider.client_secret: client_secret = provider.client_secret elif provider.client_secret_jwt_key: client_secret = JwtClientSecret( provider.client_secret_jwt_key, provider.client_id, provider.issuer, hs.get_clock(), ) self._client_auth = ClientAuth( provider.client_id, client_secret, provider.client_auth_method, ) self._client_auth_method = provider.client_auth_method # cache of metadata for the identity provider (endpoint uris, mostly). This is # loaded on-demand from the discovery endpoint (if discovery is enabled), with # possible overrides from the config. Access via `load_metadata`. self._provider_metadata = RetryOnExceptionCachedCall(self._load_metadata) # cache of JWKs used by the identity provider to sign tokens. Loaded on demand # from the IdP's jwks_uri, if required. self._jwks = RetryOnExceptionCachedCall(self._load_jwks) self._user_mapping_provider = provider.user_mapping_provider_class( provider.user_mapping_provider_config ) self._skip_verification = provider.skip_verification self._allow_existing_users = provider.allow_existing_users self._http_client = hs.get_proxied_http_client() self._server_name: str = hs.config.server.server_name # identifier for the external_ids table self.idp_id = provider.idp_id # user-facing name of this auth provider self.idp_name = provider.idp_name # MXC URI for icon for this auth provider self.idp_icon = provider.idp_icon # optional brand identifier for this auth provider self.idp_brand = provider.idp_brand self._sso_handler = hs.get_sso_handler() self._device_handler = hs.get_device_handler() self._sso_handler.register_identity_provider(self) def _validate_metadata(self, m: OpenIDProviderMetadata) -> None: """Verifies the provider metadata. This checks the validity of the currently loaded provider. Not everything is checked, only: - ``issuer`` - ``authorization_endpoint`` - ``token_endpoint`` - ``response_types_supported`` (checks if "code" is in it) - ``jwks_uri`` Raises: ValueError: if something in the provider is not valid """ # Skip verification to allow non-compliant providers (e.g. issuers not running on a secure origin) if self._skip_verification is True: return m.validate_issuer() m.validate_authorization_endpoint() m.validate_token_endpoint() if m.get("token_endpoint_auth_methods_supported") is not None: m.validate_token_endpoint_auth_methods_supported() if ( self._client_auth_method not in m["token_endpoint_auth_methods_supported"] ): raise ValueError( '"{auth_method}" not in "token_endpoint_auth_methods_supported" ({supported!r})'.format( auth_method=self._client_auth_method, supported=m["token_endpoint_auth_methods_supported"], ) ) # If PKCE support is advertised ensure the wanted method is available. if m.get("code_challenge_methods_supported") is not None: m.validate_code_challenge_methods_supported() if "S256" not in m["code_challenge_methods_supported"]: raise ValueError( '"S256" not in "code_challenge_methods_supported" ({supported!r})'.format( supported=m["code_challenge_methods_supported"], ) ) if m.get("response_types_supported") is not None: m.validate_response_types_supported() if "code" not in m["response_types_supported"]: raise ValueError( '"code" not in "response_types_supported" (%r)' % (m["response_types_supported"],) ) # Ensure there's a userinfo endpoint to fetch from if it is required. if self._uses_userinfo: if m.get("userinfo_endpoint") is None: raise ValueError( 'provider has no "userinfo_endpoint", even though it is required' ) else: # If we're not using userinfo, we need a valid jwks to validate the ID token m.validate_jwks_uri() if self._config.backchannel_logout_enabled: if not m.get("backchannel_logout_supported", False): logger.warning( "OIDC Back-Channel Logout is enabled for issuer %r" "but it does not advertise support for it", self.issuer, ) elif not m.get("backchannel_logout_session_supported", False): logger.warning( "OIDC Back-Channel Logout is enabled and supported " "by issuer %r but it might not send a session ID with " "logout tokens, which is required for the logouts to work", self.issuer, ) if not self._config.backchannel_logout_ignore_sub: # If OIDC backchannel logouts are enabled, the provider mapping provider # should use the `sub` claim. We verify that by mapping a dumb user and # see if we get back the sub claim user = UserInfo({"sub": "thisisasubject"}) try: subject = self._user_mapping_provider.get_remote_user_id(user) if subject != user["sub"]: raise ValueError("Unexpected subject") except Exception: logger.warning( f"OIDC Back-Channel Logout is enabled for issuer {self.issuer!r} " "but it looks like the configured `user_mapping_provider` " "does not use the `sub` claim as subject. If it is the case, " "and you want Synapse to ignore the `sub` claim in OIDC " "Back-Channel Logouts, set `backchannel_logout_ignore_sub` " "to `true` in the issuer config." ) @property def _uses_userinfo(self) -> bool: """Returns True if the ``userinfo_endpoint`` should be used. This is based on the requested scopes: if the scopes include ``openid``, the provider should give use an ID token containing the user information. If not, we should fetch them using the ``access_token`` with the ``userinfo_endpoint``. """ return ( "openid" not in self._scopes or self._user_profile_method == "userinfo_endpoint" ) @property def issuer(self) -> str: """The issuer identifying this provider.""" return self._config.issuer @property def client_id(self) -> str: """The client_id used when interacting with this provider.""" return self._config.client_id async def load_metadata(self, force: bool = False) -> OpenIDProviderMetadata: """Return the provider metadata. If this is the first call, the metadata is built from the config and from the metadata discovery endpoint (if enabled), and then validated. If the metadata is successfully validated, it is then cached for future use. Args: force: If true, any cached metadata is discarded to force a reload. Raises: ValueError: if something in the provider is not valid Returns: The provider's metadata. """ if force: # reset the cached call to ensure we get a new result self._provider_metadata = RetryOnExceptionCachedCall(self._load_metadata) return await self._provider_metadata.get() async def _load_metadata(self) -> OpenIDProviderMetadata: # start out with just the issuer (unlike the other settings, discovered issuer # takes precedence over configured issuer, because configured issuer is # required for discovery to take place.) # metadata = OpenIDProviderMetadata(issuer=self._config.issuer) # load any data from the discovery endpoint, if enabled if self._config.discover: url = get_well_known_url(self._config.issuer, external=True) metadata_response = await self._http_client.get_json(url) metadata.update(metadata_response) # override any discovered data with any settings in our config if self._config.authorization_endpoint: metadata["authorization_endpoint"] = self._config.authorization_endpoint if self._config.token_endpoint: metadata["token_endpoint"] = self._config.token_endpoint if self._config.userinfo_endpoint: metadata["userinfo_endpoint"] = self._config.userinfo_endpoint if self._config.jwks_uri: metadata["jwks_uri"] = self._config.jwks_uri if self._config.pkce_method == "always": metadata["code_challenge_methods_supported"] = ["S256"] elif self._config.pkce_method == "never": metadata.pop("code_challenge_methods_supported", None) self._validate_metadata(metadata) return metadata async def load_jwks(self, force: bool = False) -> JWKS: """Load the JSON Web Key Set used to sign ID tokens. If we're not using the ``userinfo_endpoint``, user infos are extracted from the ID token, which is a JWT signed by keys given by the provider. The keys are then cached. Args: force: Force reloading the keys. Returns: The key set Looks like this:: { 'keys': [ { 'kid': 'abcdef', 'kty': 'RSA', 'alg': 'RS256', 'use': 'sig', 'e': 'XXXX', 'n': 'XXXX', } ] } """ if force: # reset the cached call to ensure we get a new result self._jwks = RetryOnExceptionCachedCall(self._load_jwks) return await self._jwks.get() async def _load_jwks(self) -> JWKS: metadata = await self.load_metadata() # Load the JWKS using the `jwks_uri` metadata. uri = metadata.get("jwks_uri") if not uri: # this should be unreachable: load_metadata validates that # there is a jwks_uri in the metadata if _uses_userinfo is unset raise RuntimeError('Missing "jwks_uri" in metadata') jwk_set = await self._http_client.get_json(uri) return jwk_set async def _exchange_code(self, code: str, code_verifier: str) -> Token: """Exchange an authorization code for a token. This calls the ``token_endpoint`` with the authorization code we received in the callback to exchange it for a token. The call uses the ``ClientAuth`` to authenticate with the client with its ID and secret. See: https://tools.ietf.org/html/rfc6749#section-3.2 https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint Args: code: The authorization code we got from the callback. code_verifier: The PKCE code verifier to send, blank if unused. Returns: A dict containing various tokens. May look like this:: { 'token_type': 'bearer', 'access_token': 'abcdef', 'expires_in': 3599, 'id_token': 'ghijkl', 'refresh_token': 'mnopqr', } Raises: OidcError: when the ``token_endpoint`` returned an error. """ metadata = await self.load_metadata() token_endpoint = metadata.get("token_endpoint") raw_headers: Dict[str, str] = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": self._http_client.user_agent.decode("ascii"), "Accept": "application/json", } args = { "grant_type": "authorization_code", "code": code, "redirect_uri": self._callback_url, } if code_verifier: args["code_verifier"] = code_verifier body = urlencode(args, True) # Fill the body/headers with credentials uri, raw_headers, body = self._client_auth.prepare( method="POST", uri=token_endpoint, headers=raw_headers, body=body ) headers = Headers({k: [v] for (k, v) in raw_headers.items()}) # Do the actual request # We're not using the SimpleHttpClient util methods as we don't want to # check the HTTP status code and we do the body encoding ourself. response = await self._http_client.request( method="POST", uri=uri, data=body.encode("utf-8"), headers=headers, ) # This is used in multiple error messages below status = "{code} {phrase}".format( code=response.code, phrase=response.phrase.decode("utf-8") ) resp_body = await make_deferred_yieldable(readBody(response)) if response.code >= 500: # In case of a server error, we should first try to decode the body # and check for an error field. If not, we respond with a generic # error message. try: resp = json_decoder.decode(resp_body.decode("utf-8")) error = resp["error"] description = resp.get("error_description", error) except (ValueError, KeyError): # Catch ValueError for the JSON decoding and KeyError for the "error" field error = "server_error" description = ( ( 'Authorization server responded with a "{status}" error ' "while exchanging the authorization code." ).format(status=status), ) raise OidcError(error, description) # Since it is a not a 5xx code, body should be a valid JSON. It will # raise if not. resp = json_decoder.decode(resp_body.decode("utf-8")) if "error" in resp: error = resp["error"] # In case the authorization server responded with an error field, # it should be a 4xx code. If not, warn about it but don't do # anything special and report the original error message. if response.code < 400: logger.debug( "Invalid response from the authorization server: " 'responded with a "{status}" ' "but body has an error field: {error!r}".format( status=status, error=resp["error"] ) ) description = resp.get("error_description", error) raise OidcError(error, description) # Now, this should not be an error. According to RFC6749 sec 5.1, it # should be a 200 code. We're a bit more flexible than that, and will # only throw on a 4xx code. if response.code >= 400: description = ( 'Authorization server responded with a "{status}" error ' 'but did not include an "error" field in its response.'.format( status=status ) ) logger.warning(description) # Body was still valid JSON. Might be useful to log it for debugging. logger.warning("Code exchange response: %r", resp) raise OidcError("server_error", description) return resp async def _fetch_userinfo(self, token: Token) -> UserInfo: """Fetch user information from the ``userinfo_endpoint``. Args: token: the token given by the ``token_endpoint``. Must include an ``access_token`` field. Returns: an object representing the user. """ logger.debug("Using the OAuth2 access_token to request userinfo") metadata = await self.load_metadata() resp = await self._http_client.get_json( metadata["userinfo_endpoint"], headers={"Authorization": ["Bearer {}".format(token["access_token"])]}, ) logger.debug("Retrieved user info from userinfo endpoint: %r", resp) return UserInfo(resp) async def _verify_jwt( self, alg_values: List[str], token: str, claims_cls: Type[C], claims_options: Optional[dict] = None, claims_params: Optional[dict] = None, ) -> C: """Decode and validate a JWT, re-fetching the JWKS as needed. Args: alg_values: list of `alg` values allowed when verifying the JWT. token: the JWT. claims_cls: the JWTClaims class to use to validate the claims. claims_options: dict of options passed to the `claims_cls` constructor. claims_params: dict of params passed to the `claims_cls` constructor. Returns: The decoded claims in the JWT. """ jwt = JsonWebToken(alg_values) logger.debug("Attempting to decode JWT (%s) %r", claims_cls.__name__, token) # Try to decode the keys in cache first, then retry by forcing the keys # to be reloaded jwk_set = await self.load_jwks() try: claims = jwt.decode( token, key=jwk_set, claims_cls=claims_cls, claims_options=claims_options, claims_params=claims_params, ) except ValueError: logger.info("Reloading JWKS after decode error") jwk_set = await self.load_jwks(force=True) # try reloading the jwks claims = jwt.decode( token, key=jwk_set, claims_cls=claims_cls, claims_options=claims_options, claims_params=claims_params, ) logger.debug("Decoded JWT (%s) %r; validating", claims_cls.__name__, claims) claims.validate( now=self._clock.time(), leeway=120 ) # allows 2 min of clock skew return claims async def _parse_id_token(self, token: Token, nonce: str) -> CodeIDToken: """Return an instance of UserInfo from token's ``id_token``. Args: token: the token given by the ``token_endpoint``. Must include an ``id_token`` field. nonce: the nonce value originally sent in the initial authorization request. This value should match the one inside the token. Returns: The decoded claims in the ID token. """ id_token = token.get("id_token") # That has been theoritically been checked by the caller, so even though # assertion are not enabled in production, it is mainly here to appease mypy assert id_token is not None metadata = await self.load_metadata() claims_params = { "nonce": nonce, "client_id": self._client_auth.client_id, } if "access_token" in token: # If we got an `access_token`, there should be an `at_hash` claim # in the `id_token` that we can check against. claims_params["access_token"] = token["access_token"] claims_options = {"iss": {"values": [metadata["issuer"]]}} alg_values = metadata.get("id_token_signing_alg_values_supported", ["RS256"]) claims = await self._verify_jwt( alg_values=alg_values, token=id_token, claims_cls=CodeIDToken, claims_options=claims_options, claims_params=claims_params, ) return claims async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Handle an incoming request to /login/sso/redirect It returns a redirect to the authorization endpoint with a few parameters: - ``client_id``: the client ID set in ``oidc_config.client_id`` - ``response_type``: ``code`` - ``redirect_uri``: the callback URL ; ``{base url}/_synapse/client/oidc/callback`` - ``scope``: the list of scopes set in ``oidc_config.scopes`` - ``state``: a random string - ``nonce``: a random string - ``code_challenge``: a RFC7636 code challenge (if PKCE is supported) In addition to generating a redirect URL, we are setting a cookie with a signed macaroon token containing the state, the nonce, the client_redirect_url, and (optionally) the code_verifier params. The state, nonce, and client_redirect_url are then checked when the client comes back from the provider. The code_verifier is passed back to the server during the token exchange and compared to the code_challenge sent in this request. Args: request: the incoming request from the browser. We'll respond to it with a redirect and a cookie. client_redirect_url: the URL that we should redirect the client to when everything is done (or None for UI Auth) ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: The redirect URL to the authorization endpoint. """ state = generate_token() nonce = generate_token() code_verifier = "" if not client_redirect_url: client_redirect_url = b"" metadata = await self.load_metadata() # Automatically enable PKCE if it is supported. extra_grant_values = {} if metadata.get("code_challenge_methods_supported"): code_verifier = generate_token(48) # Note that we verified the server supports S256 earlier (in # OidcProvider._validate_metadata). extra_grant_values = { "code_challenge_method": "S256", "code_challenge": create_s256_code_challenge(code_verifier), } cookie = self._macaroon_generaton.generate_oidc_session_token( state=state, session_data=OidcSessionData( idp_id=self.idp_id, nonce=nonce, client_redirect_url=client_redirect_url.decode(), ui_auth_session_id=ui_auth_session_id or "", code_verifier=code_verifier, ), ) # Set the cookies. See the comments on _SESSION_COOKIES for why there are two. # # we have to build the header by hand rather than calling request.addCookie # because the latter does not support SameSite=None # (https://twistedmatrix.com/trac/ticket/10088) for cookie_name, options in _SESSION_COOKIES: request.cookies.append( b"%s=%s; Max-Age=3600; Path=%s; %s" % ( cookie_name, cookie.encode("utf-8"), self._callback_path_prefix, options, ) ) authorization_endpoint = metadata.get("authorization_endpoint") return prepare_grant_uri( authorization_endpoint, client_id=self._client_auth.client_id, response_type="code", redirect_uri=self._callback_url, scope=self._scopes, state=state, nonce=nonce, **extra_grant_values, ) async def handle_oidc_callback( self, request: SynapseRequest, session_data: "OidcSessionData", code: str ) -> None: """Handle an incoming request to /_synapse/client/oidc/callback By this time we have already validated the session on the synapse side, and now need to do the provider-specific operations. This includes: - exchange the code with the provider using the ``token_endpoint`` (see ``_exchange_code``) - once we have the token, use it to either extract the UserInfo from the ``id_token`` (``_parse_id_token``), or use the ``access_token`` to fetch UserInfo from the ``userinfo_endpoint`` (``_fetch_userinfo``) - map those UserInfo to a Matrix user (``_map_userinfo_to_user``) and finish the login Args: request: the incoming request from the browser. session_data: the session data, extracted from our cookie code: The authorization code we got from the callback. """ # Exchange the code with the provider try: logger.debug("Exchanging OAuth2 code for a token") token = await self._exchange_code( code, code_verifier=session_data.code_verifier ) except OidcError as e: logger.warning("Could not exchange OAuth2 code: %s", e) self._sso_handler.render_error(request, e.error, e.error_description) return logger.debug("Successfully obtained OAuth2 token data: %r", token) # If there is an id_token, it should be validated, regardless of the # userinfo endpoint is used or not. if token.get("id_token") is not None: try: id_token = await self._parse_id_token(token, nonce=session_data.nonce) sid = id_token.get("sid") except Exception as e: logger.exception("Invalid id_token") self._sso_handler.render_error(request, "invalid_token", str(e)) return else: id_token = None sid = None # Now that we have a token, get the userinfo either from the `id_token` # claims or by fetching the `userinfo_endpoint`. if self._uses_userinfo: try: userinfo = await self._fetch_userinfo(token) except Exception as e: logger.exception("Could not fetch userinfo") self._sso_handler.render_error(request, "fetch_error", str(e)) return elif id_token is not None: userinfo = UserInfo(id_token) else: logger.error("Missing id_token in token response") self._sso_handler.render_error( request, "invalid_token", "Missing id_token in token response" ) return # first check if we're doing a UIA if session_data.ui_auth_session_id: try: remote_user_id = self._remote_id_from_userinfo(userinfo) except Exception as e: logger.exception("Could not extract remote user id") self._sso_handler.render_error(request, "mapping_error", str(e)) return return await self._sso_handler.complete_sso_ui_auth_request( self.idp_id, remote_user_id, session_data.ui_auth_session_id, request ) # otherwise, it's a login logger.debug("Userinfo for OIDC login: %s", userinfo) # Ensure that the attributes of the logged in user meet the required # attributes by checking the userinfo against attribute_requirements # In order to deal with the fact that OIDC userinfo can contain many # types of data, we wrap non-list values in lists. if not self._sso_handler.check_required_attributes( request, {k: v if isinstance(v, list) else [v] for k, v in userinfo.items()}, self._oidc_attribute_requirements, ): return # Call the mapper to register/login the user try: await self._complete_oidc_login( userinfo, token, request, session_data.client_redirect_url, sid ) except MappingException as e: logger.exception("Could not map user") self._sso_handler.render_error(request, "mapping_error", str(e)) async def _complete_oidc_login( self, userinfo: UserInfo, token: Token, request: SynapseRequest, client_redirect_url: str, sid: Optional[str], ) -> None: """Given a UserInfo response, complete the login flow UserInfo should have a claim that uniquely identifies users. This claim is usually `sub`, but can be configured with `oidc_config.subject_claim`. It is then used as an `external_id`. If we don't find the user that way, we should register the user, mapping the localpart and the display name from the UserInfo. If a user already exists with the mxid we've mapped and allow_existing_users is disabled, raise an exception. Otherwise, render a redirect back to the client_redirect_url with a loginToken. Args: userinfo: an object representing the user token: a dict with the tokens obtained from the provider request: The request to respond to client_redirect_url: The redirect URL passed in by the client. Raises: MappingException: if there was an error while mapping some properties """ try: remote_user_id = self._remote_id_from_userinfo(userinfo) except Exception as e: raise MappingException( "Failed to extract subject from OIDC response: %s" % (e,) ) # Older mapping providers don't accept the `failures` argument, so we # try and detect support. mapper_signature = inspect.signature( self._user_mapping_provider.map_user_attributes ) supports_failures = "failures" in mapper_signature.parameters async def oidc_response_to_user_attributes(failures: int) -> UserAttributes: """ Call the mapping provider to map the OIDC userinfo and token to user attributes. This is backwards compatibility for abstraction for the SSO handler. """ if supports_failures: attributes = await self._user_mapping_provider.map_user_attributes( userinfo, token, failures ) else: # If the mapping provider does not support processing failures, # do not continually generate the same Matrix ID since it will # continue to already be in use. Note that the error raised is # arbitrary and will get turned into a MappingException. if failures: raise MappingException( "Mapping provider does not support de-duplicating Matrix IDs" ) attributes = await self._user_mapping_provider.map_user_attributes( userinfo, token ) return UserAttributes(**attributes) async def grandfather_existing_users() -> Optional[str]: if self._allow_existing_users: # If allowing existing users we want to generate a single localpart # and attempt to match it. attributes = await oidc_response_to_user_attributes(failures=0) if attributes.localpart is None: # If no localpart is returned then we will generate one, so # there is no need to search for existing users. return None user_id = UserID(attributes.localpart, self._server_name).to_string() users = await self._store.get_users_by_id_case_insensitive(user_id) if users: # If an existing matrix ID is returned, then use it. if len(users) == 1: previously_registered_user_id = next(iter(users)) elif user_id in users: previously_registered_user_id = user_id else: # Do not attempt to continue generating Matrix IDs. raise MappingException( "Attempted to login as '{}' but it matches more than one user inexactly: {}".format( user_id, users ) ) return previously_registered_user_id return None # Mapping providers might not have get_extra_attributes: only call this # method if it exists. extra_attributes = None get_extra_attributes = getattr( self._user_mapping_provider, "get_extra_attributes", None ) if get_extra_attributes: extra_attributes = await get_extra_attributes(userinfo, token) await self._sso_handler.complete_sso_login_request( self.idp_id, remote_user_id, request, client_redirect_url, oidc_response_to_user_attributes, grandfather_existing_users, extra_attributes, auth_provider_session_id=sid, registration_enabled=self._config.enable_registration, ) def _remote_id_from_userinfo(self, userinfo: UserInfo) -> str: """Extract the unique remote id from an OIDC UserInfo block Args: userinfo: An object representing the user given by the OIDC provider Returns: remote user id """ remote_user_id = self._user_mapping_provider.get_remote_user_id(userinfo) # Some OIDC providers use integer IDs, but Synapse expects external IDs # to be strings. return str(remote_user_id) async def handle_backchannel_logout( self, request: SynapseRequest, logout_token: str ) -> None: """Handle an incoming request to /_synapse/client/oidc/backchannel_logout The OIDC Provider posts a logout token to this endpoint when a user session ends. That token is a JWT signed with the same keys as ID tokens. The OpenID Connect Back-Channel Logout draft explains how to validate the JWT and figure out what session to end. Args: request: The request to respond to logout_token: The logout token (a JWT) extracted from the request body """ # Back-Channel Logout can be disabled in the config, hence this check. # This is not that important for now since Synapse is registered # manually to the OP, so not specifying the backchannel-logout URI is # as effective than disabling it here. It might make more sense if we # support dynamic registration in Synapse at some point. if not self._config.backchannel_logout_enabled: logger.warning( f"Received an OIDC Back-Channel Logout request from issuer {self.issuer!r} but it is disabled in config" ) # TODO: this responds with a 400 status code, which is what the OIDC # Back-Channel Logout spec expects, but spec also suggests answering with # a JSON object, with the `error` and `error_description` fields set, which # we are not doing here. # See https://openid.net/specs/openid-connect-backchannel-1_0.html#BCResponse raise SynapseError( 400, "OpenID Connect Back-Channel Logout is disabled for this provider" ) metadata = await self.load_metadata() # As per OIDC Back-Channel Logout 1.0 sec. 2.4: # A Logout Token MUST be signed and MAY also be encrypted. The same # keys are used to sign and encrypt Logout Tokens as are used for ID # Tokens. If the Logout Token is encrypted, it SHOULD replicate the # iss (issuer) claim in the JWT Header Parameters, as specified in # Section 5.3 of [JWT]. alg_values = metadata.get("id_token_signing_alg_values_supported", ["RS256"]) # As per sec. 2.6: # 3. Validate the iss, aud, and iat Claims in the same way they are # validated in ID Tokens. # Which means the audience should contain Synapse's client_id and the # issuer should be the IdP issuer claims_options = { "iss": {"values": [metadata["issuer"]]}, "aud": {"values": [self.client_id]}, } try: claims = await self._verify_jwt( alg_values=alg_values, token=logout_token, claims_cls=LogoutToken, claims_options=claims_options, ) except JoseError: logger.exception("Invalid logout_token") raise SynapseError(400, "Invalid logout_token") # As per sec. 2.6: # 4. Verify that the Logout Token contains a sub Claim, a sid Claim, # or both. # 5. Verify that the Logout Token contains an events Claim whose # value is JSON object containing the member name # http://schemas.openid.net/event/backchannel-logout. # 6. Verify that the Logout Token does not contain a nonce Claim. # This is all verified by the LogoutToken claims class, so at this # point the `sid` claim exists and is a string. sid: str = claims.get("sid") # If the `sub` claim was included in the logout token, we check that it matches # that it matches the right user. We can have cases where the `sub` claim is not # the ID saved in database, so we let admins disable this check in config. sub: Optional[str] = claims.get("sub") expected_user_id: Optional[str] = None if sub is not None and not self._config.backchannel_logout_ignore_sub: expected_user_id = await self._store.get_user_by_external_id( self.idp_id, sub ) # Invalidate any running user-mapping sessions, in-flight login tokens and # active devices await self._sso_handler.revoke_sessions_for_provider_session_id( auth_provider_id=self.idp_id, auth_provider_session_id=sid, expected_user_id=expected_user_id, ) request.setResponseCode(200) request.setHeader(b"Cache-Control", b"no-cache, no-store") request.setHeader(b"Pragma", b"no-cache") finish_request(request) class LogoutToken(JWTClaims): # type: ignore[misc] """ Holds and verify claims of a logout token, as per https://openid.net/specs/openid-connect-backchannel-1_0.html#LogoutToken """ REGISTERED_CLAIMS = ["iss", "sub", "aud", "iat", "jti", "events", "sid"] def validate(self, now: Optional[int] = None, leeway: int = 0) -> None: """Validate everything in claims payload.""" super().validate(now, leeway) self.validate_sid() self.validate_events() self.validate_nonce() def validate_sid(self) -> None: """Ensure the sid claim is present""" sid = self.get("sid") if not sid: raise MissingClaimError("sid") if not isinstance(sid, str): raise InvalidClaimError("sid") def validate_nonce(self) -> None: """Ensure the nonce claim is absent""" if "nonce" in self: raise InvalidClaimError("nonce") def validate_events(self) -> None: """Ensure the events claim is present and with the right value""" events = self.get("events") if not events: raise MissingClaimError("events") if not isinstance(events, dict): raise InvalidClaimError("events") if "http://schemas.openid.net/event/backchannel-logout" not in events: raise InvalidClaimError("events") # number of seconds a newly-generated client secret should be valid for CLIENT_SECRET_VALIDITY_SECONDS = 3600 # minimum remaining validity on a client secret before we should generate a new one CLIENT_SECRET_MIN_VALIDITY_SECONDS = 600 class JwtClientSecret: """A class which generates a new client secret on demand, based on a JWK This implementation is designed to comply with the requirements for Apple Sign in: https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens#3262048 It looks like those requirements are based on https://tools.ietf.org/html/rfc7523, but it's worth noting that we still put the generated secret in the "client_secret" field (or rather, whereever client_auth_method puts it) rather than in a client_assertion field in the body as that RFC seems to require. """ def __init__( self, key: OidcProviderClientSecretJwtKey, oauth_client_id: str, oauth_issuer: str, clock: Clock, ): self._key = key self._oauth_client_id = oauth_client_id self._oauth_issuer = oauth_issuer self._clock = clock self._cached_secret = b"" self._cached_secret_replacement_time = 0 def __str__(self) -> str: # if client_auth_method is client_secret_basic, then ClientAuth.prepare calls # encode_client_secret_basic, which calls "{}".format(secret), which ends up # here. return self._get_secret().decode("ascii") def __bytes__(self) -> bytes: # if client_auth_method is client_secret_post, then ClientAuth.prepare calls # encode_client_secret_post, which ends up here. return self._get_secret() def _get_secret(self) -> bytes: now = self._clock.time() # if we have enough validity on our existing secret, use it if now < self._cached_secret_replacement_time: return self._cached_secret issued_at = int(now) expires_at = issued_at + CLIENT_SECRET_VALIDITY_SECONDS # we copy the configured header because jwt.encode modifies it. header = dict(self._key.jwt_header) # see https://tools.ietf.org/html/rfc7523#section-3 payload = { "sub": self._oauth_client_id, "aud": self._oauth_issuer, "iat": issued_at, "exp": expires_at, **self._key.jwt_payload, } logger.info( "Generating new JWT for %s: %s %s", self._oauth_issuer, header, payload ) jwt = JsonWebToken(header["alg"]) self._cached_secret = jwt.encode(header, payload, self._key.key) self._cached_secret_replacement_time = ( expires_at - CLIENT_SECRET_MIN_VALIDITY_SECONDS ) return self._cached_secret class UserAttributeDict(TypedDict): localpart: Optional[str] confirm_localpart: bool display_name: Optional[str] picture: Optional[str] # may be omitted by older `OidcMappingProviders` emails: List[str] class OidcMappingProvider(Generic[C]): """A mapping provider maps a UserInfo object to user attributes. It should provide the API described by this class. """ def __init__(self, config: C): """ Args: config: A custom config object from this module, parsed by ``parse_config()`` """ @staticmethod def parse_config(config: dict) -> C: """Parse the dict provided by the homeserver's config Args: config: A dictionary containing configuration options for this provider Returns: A custom config object for this module """ raise NotImplementedError() def get_remote_user_id(self, userinfo: UserInfo) -> str: """Get a unique user ID for this user. Usually, in an OIDC-compliant scenario, it should be the ``sub`` claim from the UserInfo object. Args: userinfo: An object representing the user given by the OIDC provider Returns: A unique user ID """ raise NotImplementedError() async def map_user_attributes( self, userinfo: UserInfo, token: Token, failures: int ) -> UserAttributeDict: """Map a `UserInfo` object into user attributes. Args: userinfo: An object representing the user given by the OIDC provider token: A dict with the tokens returned by the provider failures: How many times a call to this function with this UserInfo has resulted in a failure. Returns: A dict containing the ``localpart`` and (optionally) the ``display_name`` """ raise NotImplementedError() async def get_extra_attributes(self, userinfo: UserInfo, token: Token) -> JsonDict: """Map a `UserInfo` object into additional attributes passed to the client during login. Args: userinfo: An object representing the user given by the OIDC provider token: A dict with the tokens returned by the provider Returns: A dict containing additional attributes. Must be JSON serializable. """ return {} # Used to clear out "None" values in templates def jinja_finalize(thing: Any) -> Any: return thing if thing is not None else "" env = Environment(finalize=jinja_finalize) env.filters.update( { "localpart_from_email": _localpart_from_email_filter, } ) @attr.s(slots=True, frozen=True, auto_attribs=True) class JinjaOidcMappingConfig: subject_template: Template picture_template: Template localpart_template: Optional[Template] display_name_template: Optional[Template] email_template: Optional[Template] extra_attributes: Dict[str, Template] confirm_localpart: bool = False class JinjaOidcMappingProvider(OidcMappingProvider[JinjaOidcMappingConfig]): """An implementation of a mapping provider based on Jinja templates. This is the default mapping provider. """ def __init__(self, config: JinjaOidcMappingConfig): self._config = config @staticmethod def parse_config(config: dict) -> JinjaOidcMappingConfig: def parse_template_config_with_claim( option_name: str, default_claim: str ) -> Template: template_name = f"{option_name}_template" template = config.get(template_name) if not template: # Convert the legacy subject_claim into a template. claim = config.get(f"{option_name}_claim", default_claim) template = "{{ user.%s }}" % (claim,) try: return env.from_string(template) except Exception as e: raise ConfigError("invalid jinja template", path=[template_name]) from e subject_template = parse_template_config_with_claim("subject", "sub") picture_template = parse_template_config_with_claim("picture", "picture") def parse_template_config(option_name: str) -> Optional[Template]: if option_name not in config: return None try: return env.from_string(config[option_name]) except Exception as e: raise ConfigError("invalid jinja template", path=[option_name]) from e localpart_template = parse_template_config("localpart_template") display_name_template = parse_template_config("display_name_template") email_template = parse_template_config("email_template") extra_attributes = {} # type Dict[str, Template] if "extra_attributes" in config: extra_attributes_config = config.get("extra_attributes") or {} if not isinstance(extra_attributes_config, dict): raise ConfigError("must be a dict", path=["extra_attributes"]) for key, value in extra_attributes_config.items(): try: extra_attributes[key] = env.from_string(value) except Exception as e: raise ConfigError( "invalid jinja template", path=["extra_attributes", key] ) from e confirm_localpart = config.get("confirm_localpart") or False if not isinstance(confirm_localpart, bool): raise ConfigError("must be a bool", path=["confirm_localpart"]) return JinjaOidcMappingConfig( subject_template=subject_template, picture_template=picture_template, localpart_template=localpart_template, display_name_template=display_name_template, email_template=email_template, extra_attributes=extra_attributes, confirm_localpart=confirm_localpart, ) def get_remote_user_id(self, userinfo: UserInfo) -> str: return self._config.subject_template.render(user=userinfo).strip() async def map_user_attributes( self, userinfo: UserInfo, token: Token, failures: int ) -> UserAttributeDict: localpart = None if self._config.localpart_template: localpart = self._config.localpart_template.render(user=userinfo).strip() # Ensure only valid characters are included in the MXID. localpart = map_username_to_mxid_localpart(localpart) # Append suffix integer if last call to this function failed to produce # a usable mxid. localpart += str(failures) if failures else "" def render_template_field(template: Optional[Template]) -> Optional[str]: if template is None: return None return template.render(user=userinfo).strip() display_name = render_template_field(self._config.display_name_template) if display_name == "": display_name = None emails: List[str] = [] email = render_template_field(self._config.email_template) if email: emails.append(email) picture = self._config.picture_template.render(user=userinfo).strip() return UserAttributeDict( localpart=localpart, display_name=display_name, emails=emails, picture=picture, confirm_localpart=self._config.confirm_localpart, ) async def get_extra_attributes(self, userinfo: UserInfo, token: Token) -> JsonDict: extras: Dict[str, str] = {} for key, template in self._config.extra_attributes.items(): try: extras[key] = template.render(user=userinfo).strip() except Exception as e: # Log an error and skip this value (don't break login for this). logger.error("Failed to render OIDC extra attribute %s: %s" % (key, e)) return extras synapse-1.100.0/synapse/handlers/pagination.py000066400000000000000000000721141455622526000213340ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014 - 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, List, Optional, Set, Tuple, cast from twisted.python.failure import Failure from synapse.api.constants import Direction, EventTypes, Membership from synapse.api.errors import SynapseError from synapse.api.filtering import Filter from synapse.events.utils import SerializeEventConfig from synapse.handlers.room import ShutdownRoomParams, ShutdownRoomResponse from synapse.handlers.worker_lock import NEW_EVENT_DURING_PURGE_LOCK_NAME from synapse.logging.opentracing import trace from synapse.metrics.background_process_metrics import run_as_background_process from synapse.rest.admin._base import assert_user_is_admin from synapse.streams.config import PaginationConfig from synapse.types import ( JsonDict, JsonMapping, Requester, ScheduledTask, StreamKeyType, TaskStatus, ) from synapse.types.state import StateFilter from synapse.util.async_helpers import ReadWriteLock from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # How many single event gaps we tolerate returning in a `/messages` response before we # backfill and try to fill in the history. This is an arbitrarily picked number so feel # free to tune it in the future. BACKFILL_BECAUSE_TOO_MANY_GAPS_THRESHOLD = 3 # This is used to avoid purging a room several time at the same moment, # and also paginating during a purge. Pagination can trigger backfill, # which would create old events locally, and would potentially clash with the room delete. PURGE_PAGINATION_LOCK_NAME = "purge_pagination_lock" PURGE_HISTORY_ACTION_NAME = "purge_history" PURGE_ROOM_ACTION_NAME = "purge_room" SHUTDOWN_AND_PURGE_ROOM_ACTION_NAME = "shutdown_and_purge_room" class PaginationHandler: """Handles pagination and purge history requests. These are in the same handler due to the fact we need to block clients paginating during a purge. """ def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self.clock = hs.get_clock() self._server_name = hs.hostname self._room_shutdown_handler = hs.get_room_shutdown_handler() self._relations_handler = hs.get_relations_handler() self._worker_locks = hs.get_worker_locks_handler() self._task_scheduler = hs.get_task_scheduler() self.pagination_lock = ReadWriteLock() # IDs of rooms in which there currently an active purge *or delete* operation. self._purges_in_progress_by_room: Set[str] = set() self._event_serializer = hs.get_event_client_serializer() self._retention_default_max_lifetime = ( hs.config.retention.retention_default_max_lifetime ) self._retention_allowed_lifetime_min = ( hs.config.retention.retention_allowed_lifetime_min ) self._retention_allowed_lifetime_max = ( hs.config.retention.retention_allowed_lifetime_max ) self._forgotten_room_retention_period = ( hs.config.server.forgotten_room_retention_period ) self._is_master = hs.config.worker.worker_app is None if hs.config.retention.retention_enabled and self._is_master: # Run the purge jobs described in the configuration file. for job in hs.config.retention.retention_purge_jobs: logger.info("Setting up purge job with config: %s", job) self.clock.looping_call( run_as_background_process, job.interval, "purge_history_for_rooms_in_range", self.purge_history_for_rooms_in_range, job.shortest_max_lifetime, job.longest_max_lifetime, ) self._task_scheduler.register_action( self._purge_history, PURGE_HISTORY_ACTION_NAME ) self._task_scheduler.register_action(self._purge_room, PURGE_ROOM_ACTION_NAME) self._task_scheduler.register_action( self._shutdown_and_purge_room, SHUTDOWN_AND_PURGE_ROOM_ACTION_NAME ) async def purge_history_for_rooms_in_range( self, min_ms: Optional[int], max_ms: Optional[int] ) -> None: """Purge outdated events from rooms within the given retention range. If a default retention policy is defined in the server's configuration and its 'max_lifetime' is within this range, also targets rooms which don't have a retention policy. Args: min_ms: Duration in milliseconds that define the lower limit of the range to handle (exclusive). If None, it means that the range has no lower limit. max_ms: Duration in milliseconds that define the upper limit of the range to handle (inclusive). If None, it means that the range has no upper limit. """ # We want the storage layer to include rooms with no retention policy in its # return value only if a default retention policy is defined in the server's # configuration and that policy's 'max_lifetime' is either lower (or equal) than # max_ms or higher than min_ms (or both). if self._retention_default_max_lifetime is not None: include_null = True if min_ms is not None and min_ms >= self._retention_default_max_lifetime: # The default max_lifetime is lower than (or equal to) min_ms. include_null = False if max_ms is not None and max_ms < self._retention_default_max_lifetime: # The default max_lifetime is higher than max_ms. include_null = False else: include_null = False logger.info( "[purge] Running retention purge job for %s < max_lifetime <= %s (include NULLs = %s)", min_ms, max_ms, include_null, ) rooms = await self.store.get_rooms_for_retention_period_in_range( min_ms, max_ms, include_null ) logger.debug("[purge] Rooms to purge: %s", rooms) for room_id, retention_policy in rooms.items(): logger.info("[purge] Attempting to purge messages in room %s", room_id) if len(await self.get_delete_tasks_by_room(room_id, only_active=True)) > 0: logger.warning( "[purge] not purging room %s for retention as there's an ongoing purge" " running for this room", room_id, ) continue # If max_lifetime is None, it means that the room has no retention policy. # Given we only retrieve such rooms when there's a default retention policy # defined in the server's configuration, we can safely assume that's the # case and use it for this room. max_lifetime = ( retention_policy.max_lifetime or self._retention_default_max_lifetime ) # Cap the effective max_lifetime to be within the range allowed in the # config. # We do this in two steps: # 1. Make sure it's higher or equal to the minimum allowed value, and if # it's not replace it with that value. This is because the server # operator can be required to not delete information before a given # time, e.g. to comply with freedom of information laws. # 2. Make sure the resulting value is lower or equal to the maximum allowed # value, and if it's not replace it with that value. This is because the # server operator can be required to delete any data after a specific # amount of time. if self._retention_allowed_lifetime_min is not None: max_lifetime = max(self._retention_allowed_lifetime_min, max_lifetime) if self._retention_allowed_lifetime_max is not None: max_lifetime = min(max_lifetime, self._retention_allowed_lifetime_max) logger.debug("[purge] max_lifetime for room %s: %s", room_id, max_lifetime) # Figure out what token we should start purging at. ts = self.clock.time_msec() - max_lifetime stream_ordering = await self.store.find_first_stream_ordering_after_ts(ts) r = await self.store.get_room_event_before_stream_ordering( room_id, stream_ordering, ) if not r: logger.warning( "[purge] purging events not possible: No event found " "(ts %i => stream_ordering %i)", ts, stream_ordering, ) continue (stream, topo, _event_id) = r token = "t%d-%d" % (topo, stream) logger.info("Starting purging events in room %s", room_id) # We want to purge everything, including local events, and to run the purge in # the background so that it's not blocking any other operation apart from # other purges in the same room. run_as_background_process( PURGE_HISTORY_ACTION_NAME, self.purge_history, room_id, token, True, ) async def start_purge_history( self, room_id: str, token: str, delete_local_events: bool = False ) -> str: """Start off a history purge on a room. Args: room_id: The room to purge from token: topological token to delete events before delete_local_events: True to delete local events as well as remote ones Returns: unique ID for this purge transaction. """ purge_id = await self._task_scheduler.schedule_task( PURGE_HISTORY_ACTION_NAME, resource_id=room_id, params={"token": token, "delete_local_events": delete_local_events}, ) # we log the purge_id here so that it can be tied back to the # request id in the log lines. logger.info("[purge] starting purge_id %s", purge_id) return purge_id async def _purge_history( self, task: ScheduledTask, ) -> Tuple[TaskStatus, Optional[JsonMapping], Optional[str]]: """ Scheduler action to purge some history of a room. """ if ( task.resource_id is None or task.params is None or "token" not in task.params or "delete_local_events" not in task.params ): return ( TaskStatus.FAILED, None, "Not enough parameters passed to _purge_history", ) err = await self.purge_history( task.resource_id, task.params["token"], task.params["delete_local_events"], ) if err is not None: return TaskStatus.FAILED, None, err return TaskStatus.COMPLETE, None, None async def purge_history( self, room_id: str, token: str, delete_local_events: bool, ) -> Optional[str]: """Carry out a history purge on a room. Args: room_id: The room to purge from token: topological token to delete events before delete_local_events: True to delete local events as well as remote ones """ try: async with self._worker_locks.acquire_read_write_lock( PURGE_PAGINATION_LOCK_NAME, room_id, write=True ): await self._storage_controllers.purge_events.purge_history( room_id, token, delete_local_events ) logger.info("[purge] complete") return None except Exception: f = Failure() logger.error( "[purge] failed", exc_info=(f.type, f.value, f.getTracebackObject()) ) return f.getErrorMessage() async def get_delete_task(self, delete_id: str) -> Optional[ScheduledTask]: """Get the current status of an active deleting Args: delete_id: delete_id returned by start_shutdown_and_purge_room or start_purge_history. """ return await self._task_scheduler.get_task(delete_id) async def get_delete_tasks_by_room( self, room_id: str, only_active: Optional[bool] = False ) -> List[ScheduledTask]: """Get complete, failed or active delete tasks by room Args: room_id: room_id that is deleted only_active: if True, completed&failed tasks will be omitted """ statuses = [TaskStatus.ACTIVE] if not only_active: statuses += [TaskStatus.COMPLETE, TaskStatus.FAILED] return await self._task_scheduler.get_tasks( actions=[PURGE_ROOM_ACTION_NAME, SHUTDOWN_AND_PURGE_ROOM_ACTION_NAME], resource_id=room_id, statuses=statuses, ) async def _purge_room( self, task: ScheduledTask, ) -> Tuple[TaskStatus, Optional[JsonMapping], Optional[str]]: """ Scheduler action to purge a room. """ if not task.resource_id: raise Exception("No room id passed to purge_room task") params = task.params if task.params else {} await self.purge_room(task.resource_id, params.get("force", False)) return TaskStatus.COMPLETE, None, None async def purge_room( self, room_id: str, force: bool, ) -> None: """Purge the given room from the database. Args: room_id: room to be purged force: set true to skip checking for joined users. """ logger.info("starting purge room_id=%s force=%s", room_id, force) async with self._worker_locks.acquire_multi_read_write_lock( [ (PURGE_PAGINATION_LOCK_NAME, room_id), (NEW_EVENT_DURING_PURGE_LOCK_NAME, room_id), ], write=True, ): # first check that we have no users in this room joined = await self.store.is_host_joined(room_id, self._server_name) if joined: if force: logger.info( "force-purging room %s with some local users still joined", room_id, ) else: raise SynapseError(400, "Users are still joined to this room") await self._storage_controllers.purge_events.purge_room(room_id) logger.info("purge complete for room_id %s", room_id) @trace async def get_messages( self, requester: Requester, room_id: str, pagin_config: PaginationConfig, as_client_event: bool = True, event_filter: Optional[Filter] = None, use_admin_priviledge: bool = False, ) -> JsonDict: """Get messages in a room. Args: requester: The user requesting messages. room_id: The room they want messages from. pagin_config: The pagination config rules to apply, if any. as_client_event: True to get events in client-server format. event_filter: Filter to apply to results or None use_admin_priviledge: if `True`, return all events, regardless of whether `user` has access to them. To be used **ONLY** from the admin API. Returns: Pagination API results """ if use_admin_priviledge: await assert_user_is_admin(self.auth, requester) user_id = requester.user.to_string() if pagin_config.from_token: from_token = pagin_config.from_token elif pagin_config.direction == Direction.FORWARDS: from_token = ( await self.hs.get_event_sources().get_start_token_for_pagination( room_id ) ) else: from_token = ( await self.hs.get_event_sources().get_current_token_for_pagination( room_id ) ) # We expect `/messages` to use historic pagination tokens by default but # `/messages` should still works with live tokens when manually provided. assert from_token.room_key.topological is not None room_token = from_token.room_key (membership, member_event_id) = (None, None) if not use_admin_priviledge: ( membership, member_event_id, ) = await self.auth.check_user_in_room_or_world_readable( room_id, requester, allow_departed_users=True ) if pagin_config.direction == Direction.BACKWARDS: # if we're going backwards, we might need to backfill. This # requires that we have a topo token. if room_token.topological: curr_topo = room_token.topological else: curr_topo = await self.store.get_current_topological_token( room_id, room_token.stream ) # If they have left the room then clamp the token to be before # they left the room, to save the effort of loading from the # database. if ( pagin_config.direction == Direction.BACKWARDS and not use_admin_priviledge and membership == Membership.LEAVE ): # This is only None if the room is world_readable, in which case # "Membership.JOIN" would have been returned and we should never hit # this branch. assert member_event_id leave_token = await self.store.get_topological_token_for_event( member_event_id ) assert leave_token.topological is not None if leave_token.topological < curr_topo: from_token = from_token.copy_and_replace( StreamKeyType.ROOM, leave_token ) to_room_key = None if pagin_config.to_token: to_room_key = pagin_config.to_token.room_key # Initially fetch the events from the database. With any luck, we can return # these without blocking on backfill (handled below). events, next_key = await self.store.paginate_room_events( room_id=room_id, from_key=from_token.room_key, to_key=to_room_key, direction=pagin_config.direction, limit=pagin_config.limit, event_filter=event_filter, ) if pagin_config.direction == Direction.BACKWARDS: # We use a `Set` because there can be multiple events at a given depth # and we only care about looking at the unique continum of depths to # find gaps. event_depths: Set[int] = {event.depth for event in events} sorted_event_depths = sorted(event_depths) # Inspect the depths of the returned events to see if there are any gaps found_big_gap = False number_of_gaps = 0 previous_event_depth = ( sorted_event_depths[0] if len(sorted_event_depths) > 0 else 0 ) for event_depth in sorted_event_depths: # We don't expect a negative depth but we'll just deal with it in # any case by taking the absolute value to get the true gap between # any two integers. depth_gap = abs(event_depth - previous_event_depth) # A `depth_gap` of 1 is a normal continuous chain to the next event # (1 <-- 2 <-- 3) so anything larger indicates a missing event (it's # also possible there is no event at a given depth but we can't ever # know that for sure) if depth_gap > 1: number_of_gaps += 1 # We only tolerate a small number single-event long gaps in the # returned events because those are most likely just events we've # failed to pull in the past. Anything longer than that is probably # a sign that we're missing a decent chunk of history and we should # try to backfill it. # # XXX: It's possible we could tolerate longer gaps if we checked # that a given events `prev_events` is one that has failed pull # attempts and we could just treat it like a dead branch of history # for now or at least something that we don't need the block the # client on to try pulling. # # XXX: If we had something like MSC3871 to indicate gaps in the # timeline to the client, we could also get away with any sized gap # and just have the client refetch the holes as they see fit. if depth_gap > 2: found_big_gap = True break previous_event_depth = event_depth # Backfill in the foreground if we found a big gap, have too many holes, # or we don't have enough events to fill the limit that the client asked # for. missing_too_many_events = ( number_of_gaps > BACKFILL_BECAUSE_TOO_MANY_GAPS_THRESHOLD ) not_enough_events_to_fill_response = len(events) < pagin_config.limit if ( found_big_gap or missing_too_many_events or not_enough_events_to_fill_response ): did_backfill = await self.hs.get_federation_handler().maybe_backfill( room_id, curr_topo, limit=pagin_config.limit, ) # If we did backfill something, refetch the events from the database to # catch anything new that might have been added since we last fetched. if did_backfill: events, next_key = await self.store.paginate_room_events( room_id=room_id, from_key=from_token.room_key, to_key=to_room_key, direction=pagin_config.direction, limit=pagin_config.limit, event_filter=event_filter, ) else: # Otherwise, we can backfill in the background for eventual # consistency's sake but we don't need to block the client waiting # for a costly federation call and processing. run_as_background_process( "maybe_backfill_in_the_background", self.hs.get_federation_handler().maybe_backfill, room_id, curr_topo, limit=pagin_config.limit, ) next_token = from_token.copy_and_replace(StreamKeyType.ROOM, next_key) # if no events are returned from pagination, that implies # we have reached the end of the available events. # In that case we do not return end, to tell the client # there is no need for further queries. if not events: return { "chunk": [], "start": await from_token.to_string(self.store), } if event_filter: events = await event_filter.filter(events) if not use_admin_priviledge: events = await filter_events_for_client( self._storage_controllers, user_id, events, is_peeking=(member_event_id is None), ) # if after the filter applied there are no more events # return immediately - but there might be more in next_token batch if not events: return { "chunk": [], "start": await from_token.to_string(self.store), "end": await next_token.to_string(self.store), } state = None if event_filter and event_filter.lazy_load_members and len(events) > 0: # TODO: remove redundant members # FIXME: we also care about invite targets etc. state_filter = StateFilter.from_types( (EventTypes.Member, event.sender) for event in events ) state_ids = await self._state_storage_controller.get_state_ids_for_event( events[0].event_id, state_filter=state_filter ) if state_ids: state_dict = await self.store.get_events(list(state_ids.values())) state = state_dict.values() aggregations = await self._relations_handler.get_bundled_aggregations( events, user_id ) time_now = self.clock.time_msec() serialize_options = SerializeEventConfig( as_client_event=as_client_event, requester=requester ) chunk = { "chunk": ( await self._event_serializer.serialize_events( events, time_now, config=serialize_options, bundle_aggregations=aggregations, ) ), "start": await from_token.to_string(self.store), "end": await next_token.to_string(self.store), } if state: chunk["state"] = await self._event_serializer.serialize_events( state, time_now, config=serialize_options ) return chunk async def _shutdown_and_purge_room( self, task: ScheduledTask, ) -> Tuple[TaskStatus, Optional[JsonMapping], Optional[str]]: """ Scheduler action to shutdown and purge a room. """ if task.resource_id is None or task.params is None: raise Exception( "No room id and/or no parameters passed to shutdown_and_purge_room task" ) room_id = task.resource_id async def update_result(result: Optional[JsonMapping]) -> None: await self._task_scheduler.update_task(task.id, result=result) shutdown_result = ( cast(ShutdownRoomResponse, task.result) if task.result else None ) shutdown_result = await self._room_shutdown_handler.shutdown_room( room_id, cast(ShutdownRoomParams, task.params), shutdown_result, update_result, ) if task.params.get("purge", False): await self.purge_room( room_id, task.params.get("force_purge", False), ) return (TaskStatus.COMPLETE, shutdown_result, None) async def start_shutdown_and_purge_room( self, room_id: str, shutdown_params: ShutdownRoomParams, ) -> str: """Start off shut down and purge on a room. Args: room_id: The ID of the room to shut down. shutdown_params: parameters for the shutdown Returns: unique ID for this delete transaction. """ if len(await self.get_delete_tasks_by_room(room_id, only_active=True)) > 0: raise SynapseError(400, "Purge already in progress for %s" % (room_id,)) # This check is double to `RoomShutdownHandler.shutdown_room` # But here the requester get a direct response / error with HTTP request # and do not have to check the purge status new_room_user_id = shutdown_params["new_room_user_id"] if new_room_user_id is not None: if not self.hs.is_mine_id(new_room_user_id): raise SynapseError( 400, "User must be our own: %s" % (new_room_user_id,) ) delete_id = await self._task_scheduler.schedule_task( SHUTDOWN_AND_PURGE_ROOM_ACTION_NAME, resource_id=room_id, params=shutdown_params, ) # we log the delete_id here so that it can be tied back to the # request id in the log lines. logger.info( "starting shutdown room_id %s with delete_id %s", room_id, delete_id, ) return delete_id synapse-1.100.0/synapse/handlers/password_policy.py000066400000000000000000000065631455622526000224310ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import re from typing import TYPE_CHECKING from synapse.api.errors import Codes, PasswordRefusedError if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class PasswordPolicyHandler: def __init__(self, hs: "HomeServer"): self.policy = hs.config.auth.password_policy self.enabled = hs.config.auth.password_policy_enabled # Regexps for the spec'd policy parameters. self.regexp_digit = re.compile("[0-9]") self.regexp_symbol = re.compile("[^a-zA-Z0-9]") self.regexp_uppercase = re.compile("[A-Z]") self.regexp_lowercase = re.compile("[a-z]") def validate_password(self, password: str) -> None: """Checks whether a given password complies with the server's policy. Args: password: The password to check against the server's policy. Raises: PasswordRefusedError: The password doesn't comply with the server's policy. """ if not self.enabled: return minimum_accepted_length = self.policy.get("minimum_length", 0) if len(password) < minimum_accepted_length: raise PasswordRefusedError( msg=( "The password must be at least %d characters long" % minimum_accepted_length ), errcode=Codes.PASSWORD_TOO_SHORT, ) if ( self.policy.get("require_digit", False) and self.regexp_digit.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one digit", errcode=Codes.PASSWORD_NO_DIGIT, ) if ( self.policy.get("require_symbol", False) and self.regexp_symbol.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one symbol", errcode=Codes.PASSWORD_NO_SYMBOL, ) if ( self.policy.get("require_uppercase", False) and self.regexp_uppercase.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one uppercase letter", errcode=Codes.PASSWORD_NO_UPPERCASE, ) if ( self.policy.get("require_lowercase", False) and self.regexp_lowercase.search(password) is None ): raise PasswordRefusedError( msg="The password must include at least one lowercase letter", errcode=Codes.PASSWORD_NO_LOWERCASE, ) synapse-1.100.0/synapse/handlers/presence.py000066400000000000000000003033221455622526000210050ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ This module is responsible for keeping track of presence status of local and remote users. The methods that define policy are: - PresenceHandler._update_states - PresenceHandler._handle_timeouts - should_notify # Tracking local presence For local users, presence is tracked on a per-device basis. When a user has multiple devices the user presence state is derived by coalescing the presence from each device: BUSY > ONLINE > UNAVAILABLE > OFFLINE The time that each device was last active and last synced is tracked in order to automatically downgrade a device's presence state: A device may move from ONLINE -> UNAVAILABLE, if it has not been active for a period of time. A device may go from any state -> OFFLINE, if it is not active and has not synced for a period of time. The timeouts are handled using a wheel timer, which has coarse buckets. Timings do not need to be exact. Generally a device's presence state is updated whenever a user syncs (via the set_presence parameter), when the presence API is called, or if "pro-active" events occur, including: * Sending an event, receipt, read marker. * Updating typing status. The busy state has special status that it cannot is not downgraded by a call to sync with a lower priority state *and* it takes a long period of time to transition to offline. # Persisting (and restoring) presence For all users, presence is persisted on a per-user basis. Data is kept in-memory and persisted periodically. When Synapse starts each worker loads the current presence state and then tracks the presence stream to keep itself up-to-date. When restoring presence for local users a pseudo-device is created to match the user state; this device follows the normal timeout logic (see above) and will automatically be replaced with any information from currently available devices. """ import abc import contextlib import itertools import logging from bisect import bisect from contextlib import contextmanager from types import TracebackType from typing import ( TYPE_CHECKING, AbstractSet, Any, Callable, Collection, ContextManager, Dict, Generator, Iterable, List, Optional, Set, Tuple, Type, ) from prometheus_client import Counter import synapse.metrics from synapse.api.constants import EduTypes, EventTypes, Membership, PresenceState from synapse.api.errors import SynapseError from synapse.api.presence import UserDevicePresenceState, UserPresenceState from synapse.appservice import ApplicationService from synapse.events.presence_router import PresenceRouter from synapse.logging.context import run_in_background from synapse.metrics import LaterGauge from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.replication.http.presence import ( ReplicationBumpPresenceActiveTime, ReplicationPresenceSetState, ) from synapse.replication.http.streams import ReplicationGetStreamUpdates from synapse.replication.tcp.commands import ClearUserSyncsCommand from synapse.replication.tcp.streams import PresenceFederationStream, PresenceStream from synapse.storage.databases.main import DataStore from synapse.storage.databases.main.state_deltas import StateDelta from synapse.streams import EventSource from synapse.types import ( JsonDict, StrCollection, StreamKeyType, UserID, get_domain_from_id, ) from synapse.util.async_helpers import Linearizer from synapse.util.metrics import Measure from synapse.util.wheel_timer import WheelTimer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) notified_presence_counter = Counter("synapse_handler_presence_notified_presence", "") federation_presence_out_counter = Counter( "synapse_handler_presence_federation_presence_out", "" ) presence_updates_counter = Counter("synapse_handler_presence_presence_updates", "") timers_fired_counter = Counter("synapse_handler_presence_timers_fired", "") federation_presence_counter = Counter( "synapse_handler_presence_federation_presence", "" ) bump_active_time_counter = Counter("synapse_handler_presence_bump_active_time", "") get_updates_counter = Counter("synapse_handler_presence_get_updates", "", ["type"]) notify_reason_counter = Counter( "synapse_handler_presence_notify_reason", "", ["locality", "reason"] ) state_transition_counter = Counter( "synapse_handler_presence_state_transition", "", ["locality", "from", "to"] ) # If a user was last active in the last LAST_ACTIVE_GRANULARITY, consider them # "currently_active" LAST_ACTIVE_GRANULARITY = 60 * 1000 # How long to wait until a new /events or /sync request before assuming # the client has gone. SYNC_ONLINE_TIMEOUT = 30 * 1000 # Busy status waits longer, but does eventually go offline. BUSY_ONLINE_TIMEOUT = 60 * 60 * 1000 # How long to wait before marking the user as idle. Compared against last active IDLE_TIMER = 5 * 60 * 1000 # How often we expect remote servers to resend us presence. FEDERATION_TIMEOUT = 30 * 60 * 1000 # How often to resend presence to remote servers FEDERATION_PING_INTERVAL = 25 * 60 * 1000 # How long we will wait before assuming that the syncs from an external process # are dead. EXTERNAL_PROCESS_EXPIRY = 5 * 60 * 1000 # Delay before a worker tells the presence handler that a user has stopped # syncing. UPDATE_SYNCING_USERS_MS = 10 * 1000 assert LAST_ACTIVE_GRANULARITY < IDLE_TIMER class BasePresenceHandler(abc.ABC): """Parts of the PresenceHandler that are shared between workers and presence writer""" def __init__(self, hs: "HomeServer"): self.hs = hs self.clock = hs.get_clock() self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.presence_router = hs.get_presence_router() self.state = hs.get_state_handler() self.is_mine_id = hs.is_mine_id self._presence_enabled = hs.config.server.presence_enabled self._track_presence = hs.config.server.track_presence self._federation = None if hs.should_send_federation(): self._federation = hs.get_federation_sender() self._federation_queue = PresenceFederationQueue(hs, self) self.VALID_PRESENCE: Tuple[str, ...] = ( PresenceState.ONLINE, PresenceState.UNAVAILABLE, PresenceState.OFFLINE, ) if hs.config.experimental.msc3026_enabled: self.VALID_PRESENCE += (PresenceState.BUSY,) active_presence = self.store.take_presence_startup_info() # The combined status across all user devices. self.user_to_current_state = {state.user_id: state for state in active_presence} @abc.abstractmethod async def user_syncing( self, user_id: str, device_id: Optional[str], affect_presence: bool, presence_state: str, ) -> ContextManager[None]: """Returns a context manager that should surround any stream requests from the user. This allows us to keep track of who is currently streaming and who isn't without having to have timers outside of this module to avoid flickering when users disconnect/reconnect. Args: user_id: the user that is starting a sync device_id: the user's device that is starting a sync affect_presence: If false this function will be a no-op. Useful for streams that are not associated with an actual client that is being used by a user. presence_state: The presence state indicated in the sync request """ @abc.abstractmethod def get_currently_syncing_users_for_replication( self, ) -> Iterable[Tuple[str, Optional[str]]]: """Get an iterable of syncing users and devices on this worker, to send to the presence handler This is called when a replication connection is established. It should return a list of tuples of user ID & device ID, which are then sent as USER_SYNC commands to inform the process handling presence about those users/devices. Returns: An iterable of tuples of user ID and device ID. """ async def get_state(self, target_user: UserID) -> UserPresenceState: results = await self.get_states([target_user.to_string()]) return results[0] async def get_states( self, target_user_ids: Iterable[str] ) -> List[UserPresenceState]: """Get the presence state for users.""" updates_d = await self.current_state_for_users(target_user_ids) updates = list(updates_d.values()) for user_id in set(target_user_ids) - {u.user_id for u in updates}: updates.append(UserPresenceState.default(user_id)) return updates async def current_state_for_users( self, user_ids: Iterable[str] ) -> Dict[str, UserPresenceState]: """Get the current presence state for multiple users. Returns: A mapping of `user_id` -> `UserPresenceState` """ states = {} missing = [] for user_id in user_ids: state = self.user_to_current_state.get(user_id, None) if state: states[user_id] = state else: missing.append(user_id) if missing: # There are things not in our in memory cache. Lets pull them out of # the database. res = await self.store.get_presence_for_users(missing) states.update(res) for user_id in missing: # if user has no state in database, create the state if not res.get(user_id, None): new_state = UserPresenceState.default(user_id) states[user_id] = new_state self.user_to_current_state[user_id] = new_state return states async def current_state_for_user(self, user_id: str) -> UserPresenceState: """Get the current presence state for a user.""" res = await self.current_state_for_users([user_id]) return res[user_id] @abc.abstractmethod async def set_state( self, target_user: UserID, device_id: Optional[str], state: JsonDict, force_notify: bool = False, is_sync: bool = False, ) -> None: """Set the presence state of the user. Args: target_user: The ID of the user to set the presence state of. device_id: the device that the user is setting the presence state of. state: The presence state as a JSON dictionary. force_notify: Whether to force notification of the update to clients. is_sync: True if this update was from a sync, which results in *not* overriding a previously set BUSY status, updating the user's last_user_sync_ts, and ignoring the "status_msg" field of the `state` dict. """ @abc.abstractmethod async def bump_presence_active_time( self, user: UserID, device_id: Optional[str] ) -> None: """We've seen the user do something that indicates they're interacting with the app. """ async def update_external_syncs_row( # noqa: B027 (no-op by design) self, process_id: str, user_id: str, device_id: Optional[str], is_syncing: bool, sync_time_msec: int, ) -> None: """Update the syncing users for an external process as a delta. This is a no-op when presence is handled by a different worker. Args: process_id: An identifier for the process the users are syncing against. This allows synapse to process updates as user start and stop syncing against a given process. user_id: The user who has started or stopped syncing device_id: The user's device that has started or stopped syncing is_syncing: Whether or not the user is now syncing sync_time_msec: Time in ms when the user was last syncing """ async def update_external_syncs_clear( # noqa: B027 (no-op by design) self, process_id: str ) -> None: """Marks all users that had been marked as syncing by a given process as offline. Used when the process has stopped/disappeared. This is a no-op when presence is handled by a different worker. """ async def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: """Process streams received over replication.""" await self._federation_queue.process_replication_rows( stream_name, instance_name, token, rows ) def get_federation_queue(self) -> "PresenceFederationQueue": """Get the presence federation queue.""" return self._federation_queue async def maybe_send_presence_to_interested_destinations( self, states: List[UserPresenceState] ) -> None: """If this instance is a federation sender, send the states to all destinations that are interested. Filters out any states for remote users. """ if not self._federation: return states = [s for s in states if self.is_mine_id(s.user_id)] if not states: return hosts_to_states = await get_interested_remotes( self.store, self.presence_router, states, ) for destinations, host_states in hosts_to_states: await self._federation.send_presence_to_destinations( host_states, destinations ) async def send_full_presence_to_users(self, user_ids: StrCollection) -> None: """ Adds to the list of users who should receive a full snapshot of presence upon their next sync. Note that this only works for local users. Then, grabs the current presence state for a given set of users and adds it to the top of the presence stream. Args: user_ids: The IDs of the local users to send full presence to. """ # Retrieve one of the users from the given set if not user_ids: raise Exception( "send_full_presence_to_users must be called with at least one user" ) user_id = next(iter(user_ids)) # Mark all users as receiving full presence on their next sync await self.store.add_users_to_send_full_presence_to(user_ids) # Add a new entry to the presence stream. Since we use stream tokens to determine whether a # local user should receive a full snapshot of presence when they sync, we need to bump the # presence stream so that subsequent syncs with no presence activity in between won't result # in the client receiving multiple full snapshots of presence. # # If we bump the stream ID, then the user will get a higher stream token next sync, and thus # correctly won't receive a second snapshot. # Get the current presence state for one of the users (defaults to offline if not found) current_presence_state = await self.get_state(UserID.from_string(user_id)) # Convert the UserPresenceState object into a serializable dict state = { "presence": current_presence_state.state, "status_message": current_presence_state.status_msg, } # Copy the presence state to the tip of the presence stream. # We set force_notify=True here so that this presence update is guaranteed to # increment the presence stream ID (which resending the current user's presence # otherwise would not do). await self.set_state( UserID.from_string(user_id), None, state, force_notify=True ) async def is_visible(self, observed_user: UserID, observer_user: UserID) -> bool: raise NotImplementedError( "Attempting to check presence on a non-presence worker." ) class _NullContextManager(ContextManager[None]): """A context manager which does nothing.""" def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: pass class WorkerPresenceHandler(BasePresenceHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self._presence_writer_instance = hs.config.worker.writers.presence[0] # Route presence EDUs to the right worker hs.get_federation_registry().register_instances_for_edu( EduTypes.PRESENCE, hs.config.worker.writers.presence, ) # The number of ongoing syncs on this process, by (user ID, device ID). # Empty if _presence_enabled is false. self._user_device_to_num_current_syncs: Dict[ Tuple[str, Optional[str]], int ] = {} self.notifier = hs.get_notifier() self.instance_id = hs.get_instance_id() # (user_id, device_id) -> last_sync_ms. Lists the devices that have stopped # syncing but we haven't notified the presence writer of that yet self._user_devices_going_offline: Dict[Tuple[str, Optional[str]], int] = {} self._bump_active_client = ReplicationBumpPresenceActiveTime.make_client(hs) self._set_state_client = ReplicationPresenceSetState.make_client(hs) self._send_stop_syncing_loop = self.clock.looping_call( self.send_stop_syncing, UPDATE_SYNCING_USERS_MS ) hs.get_reactor().addSystemEventTrigger( "before", "shutdown", run_as_background_process, "generic_presence.on_shutdown", self._on_shutdown, ) async def _on_shutdown(self) -> None: if self._track_presence: self.hs.get_replication_command_handler().send_command( ClearUserSyncsCommand(self.instance_id) ) def send_user_sync( self, user_id: str, device_id: Optional[str], is_syncing: bool, last_sync_ms: int, ) -> None: if self._track_presence: self.hs.get_replication_command_handler().send_user_sync( self.instance_id, user_id, device_id, is_syncing, last_sync_ms ) def mark_as_coming_online(self, user_id: str, device_id: Optional[str]) -> None: """A user has started syncing. Send a UserSync to the presence writer, unless they had recently stopped syncing. """ going_offline = self._user_devices_going_offline.pop((user_id, device_id), None) if not going_offline: # Safe to skip because we haven't yet told the presence writer they # were offline self.send_user_sync(user_id, device_id, True, self.clock.time_msec()) def mark_as_going_offline(self, user_id: str, device_id: Optional[str]) -> None: """A user has stopped syncing. We wait before notifying the presence writer as its likely they'll come back soon. This allows us to avoid sending a stopped syncing immediately followed by a started syncing notification to the presence writer """ self._user_devices_going_offline[(user_id, device_id)] = self.clock.time_msec() def send_stop_syncing(self) -> None: """Check if there are any users who have stopped syncing a while ago and haven't come back yet. If there are poke the presence writer about them. """ now = self.clock.time_msec() for (user_id, device_id), last_sync_ms in list( self._user_devices_going_offline.items() ): if now - last_sync_ms > UPDATE_SYNCING_USERS_MS: self._user_devices_going_offline.pop((user_id, device_id), None) self.send_user_sync(user_id, device_id, False, last_sync_ms) async def user_syncing( self, user_id: str, device_id: Optional[str], affect_presence: bool, presence_state: str, ) -> ContextManager[None]: """Record that a user is syncing. Called by the sync and events servlets to record that a user has connected to this worker and is waiting for some events. """ if not affect_presence or not self._track_presence: return _NullContextManager() # Note that this causes last_active_ts to be incremented which is not # what the spec wants. await self.set_state( UserID.from_string(user_id), device_id, state={"presence": presence_state}, is_sync=True, ) curr_sync = self._user_device_to_num_current_syncs.get((user_id, device_id), 0) self._user_device_to_num_current_syncs[(user_id, device_id)] = curr_sync + 1 # If this is the first in-flight sync, notify replication if self._user_device_to_num_current_syncs[(user_id, device_id)] == 1: self.mark_as_coming_online(user_id, device_id) def _end() -> None: # We check that the user_id is in user_to_num_current_syncs because # user_to_num_current_syncs may have been cleared if we are # shutting down. if (user_id, device_id) in self._user_device_to_num_current_syncs: self._user_device_to_num_current_syncs[(user_id, device_id)] -= 1 # If there are no more in-flight syncs, notify replication if self._user_device_to_num_current_syncs[(user_id, device_id)] == 0: self.mark_as_going_offline(user_id, device_id) @contextlib.contextmanager def _user_syncing() -> Generator[None, None, None]: try: yield finally: _end() return _user_syncing() async def notify_from_replication( self, states: List[UserPresenceState], stream_id: int ) -> None: parties = await get_interested_parties(self.store, self.presence_router, states) room_ids_to_states, users_to_states = parties self.notifier.on_new_event( StreamKeyType.PRESENCE, stream_id, rooms=room_ids_to_states.keys(), users=users_to_states.keys(), ) async def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: await super().process_replication_rows(stream_name, instance_name, token, rows) if stream_name != PresenceStream.NAME: return states = [ UserPresenceState( row.user_id, row.state, row.last_active_ts, row.last_federation_update_ts, row.last_user_sync_ts, row.status_msg, row.currently_active, ) for row in rows ] # The list of states to notify sync streams and remote servers about. # This is calculated by comparing the old and new states for each user # using `should_notify(..)`. # # Note that this is necessary as the presence writer will periodically # flush presence state changes that should not be notified about to the # DB, and so will be sent over the replication stream. state_to_notify = [] for new_state in states: old_state = self.user_to_current_state.get(new_state.user_id) self.user_to_current_state[new_state.user_id] = new_state is_mine = self.is_mine_id(new_state.user_id) if not old_state or should_notify(old_state, new_state, is_mine): state_to_notify.append(new_state) stream_id = token await self.notify_from_replication(state_to_notify, stream_id) # If this is a federation sender, notify about presence updates. await self.maybe_send_presence_to_interested_destinations(state_to_notify) def get_currently_syncing_users_for_replication( self, ) -> Iterable[Tuple[str, Optional[str]]]: return [ user_id_device_id for user_id_device_id, count in self._user_device_to_num_current_syncs.items() if count > 0 ] async def set_state( self, target_user: UserID, device_id: Optional[str], state: JsonDict, force_notify: bool = False, is_sync: bool = False, ) -> None: """Set the presence state of the user. Args: target_user: The ID of the user to set the presence state of. device_id: the device that the user is setting the presence state of. state: The presence state as a JSON dictionary. force_notify: Whether to force notification of the update to clients. is_sync: True if this update was from a sync, which results in *not* overriding a previously set BUSY status, updating the user's last_user_sync_ts, and ignoring the "status_msg" field of the `state` dict. """ presence = state["presence"] if presence not in self.VALID_PRESENCE: raise SynapseError(400, "Invalid presence state") user_id = target_user.to_string() # If tracking of presence is disabled, no-op if not self._track_presence: return # Proxy request to instance that writes presence await self._set_state_client( instance_name=self._presence_writer_instance, user_id=user_id, device_id=device_id, state=state, force_notify=force_notify, is_sync=is_sync, ) async def bump_presence_active_time( self, user: UserID, device_id: Optional[str] ) -> None: """We've seen the user do something that indicates they're interacting with the app. """ # If presence is disabled, no-op if not self._track_presence: return # Proxy request to instance that writes presence user_id = user.to_string() await self._bump_active_client( instance_name=self._presence_writer_instance, user_id=user_id, device_id=device_id, ) class PresenceHandler(BasePresenceHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.wheel_timer: WheelTimer[str] = WheelTimer() self.notifier = hs.get_notifier() federation_registry = hs.get_federation_registry() federation_registry.register_edu_handler( EduTypes.PRESENCE, self.incoming_presence ) LaterGauge( "synapse_handlers_presence_user_to_current_state_size", "", [], lambda: len(self.user_to_current_state), ) # The per-device presence state, maps user to devices to per-device presence state. self._user_to_device_to_current_state: Dict[ str, Dict[Optional[str], UserDevicePresenceState] ] = {} now = self.clock.time_msec() if self._track_presence: for state in self.user_to_current_state.values(): # Create a psuedo-device to properly handle time outs. This will # be overridden by any "real" devices within SYNC_ONLINE_TIMEOUT. pseudo_device_id = None self._user_to_device_to_current_state[state.user_id] = { pseudo_device_id: UserDevicePresenceState( user_id=state.user_id, device_id=pseudo_device_id, state=state.state, last_active_ts=state.last_active_ts, last_sync_ts=state.last_user_sync_ts, ) } self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_active_ts + IDLE_TIMER ) self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_user_sync_ts + SYNC_ONLINE_TIMEOUT, ) if self.is_mine_id(state.user_id): self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_federation_update_ts + FEDERATION_PING_INTERVAL, ) else: self.wheel_timer.insert( now=now, obj=state.user_id, then=state.last_federation_update_ts + FEDERATION_TIMEOUT, ) # Set of users who have presence in the `user_to_current_state` that # have not yet been persisted self.unpersisted_users_changes: Set[str] = set() hs.get_reactor().addSystemEventTrigger( "before", "shutdown", run_as_background_process, "presence.on_shutdown", self._on_shutdown, ) # Keeps track of the number of *ongoing* syncs on this process. While # this is non zero a user will never go offline. self._user_device_to_num_current_syncs: Dict[ Tuple[str, Optional[str]], int ] = {} # Keeps track of the number of *ongoing* syncs on other processes. # # While any sync is ongoing on another process the user's device will never # go offline. # # Each process has a unique identifier and an update frequency. If # no update is received from that process within the update period then # we assume that all the sync requests on that process have stopped. # Stored as a dict from process_id to set of (user_id, device_id), and # a dict of process_id to millisecond timestamp last updated. self.external_process_to_current_syncs: Dict[ str, Set[Tuple[str, Optional[str]]] ] = {} self.external_process_last_updated_ms: Dict[str, int] = {} self.external_sync_linearizer = Linearizer(name="external_sync_linearizer") if self._track_presence: # Start a LoopingCall in 30s that fires every 5s. # The initial delay is to allow disconnected clients a chance to # reconnect before we treat them as offline. self.clock.call_later( 30, self.clock.looping_call, self._handle_timeouts, 5000 ) # Presence information is persisted, whether or not it is being tracked # internally. if self._presence_enabled: self.clock.call_later( 60, self.clock.looping_call, self._persist_unpersisted_changes, 60 * 1000, ) LaterGauge( "synapse_handlers_presence_wheel_timer_size", "", [], lambda: len(self.wheel_timer), ) # Used to handle sending of presence to newly joined users/servers if self._track_presence: self.notifier.add_replication_callback(self.notify_new_event) # Presence is best effort and quickly heals itself, so lets just always # stream from the current state when we restart. self._event_pos = self.store.get_room_max_stream_ordering() self._event_processing = False async def _on_shutdown(self) -> None: """Gets called when shutting down. This lets us persist any updates that we haven't yet persisted, e.g. updates that only changes some internal timers. This allows changes to persist across startup without having to persist every single change. If this does not run it simply means that some of the timers will fire earlier than they should when synapse is restarted. This affect of this is some spurious presence changes that will self-correct. """ # If the DB pool has already terminated, don't try updating if not self.store.db_pool.is_running(): return logger.info( "Performing _on_shutdown. Persisting %d unpersisted changes", len(self.user_to_current_state), ) if self.unpersisted_users_changes: await self.store.update_presence( [ self.user_to_current_state[user_id] for user_id in self.unpersisted_users_changes ] ) logger.info("Finished _on_shutdown") @wrap_as_background_process("persist_presence_changes") async def _persist_unpersisted_changes(self) -> None: """We periodically persist the unpersisted changes, as otherwise they may stack up and slow down shutdown times. """ unpersisted = self.unpersisted_users_changes self.unpersisted_users_changes = set() if unpersisted: logger.info("Persisting %d unpersisted presence updates", len(unpersisted)) await self.store.update_presence( [self.user_to_current_state[user_id] for user_id in unpersisted] ) async def _update_states( self, new_states: Iterable[UserPresenceState], force_notify: bool = False, ) -> None: """Updates presence of users. Sets the appropriate timeouts. Pokes the notifier and federation if and only if the changed presence state should be sent to clients/servers. Args: new_states: The new user presence state updates to process. force_notify: Whether to force notifying clients of this presence state update, even if it doesn't change the state of a user's presence (e.g online -> online). This is currently used to bump the max presence stream ID without changing any user's presence (see PresenceHandler.add_users_to_send_full_presence_to). """ if not self._presence_enabled: # We shouldn't get here if presence is disabled, but we check anyway # to ensure that we don't a) send out presence federation and b) # don't add things to the wheel timer that will never be handled. logger.warning("Tried to update presence states when presence is disabled") return now = self.clock.time_msec() with Measure(self.clock, "presence_update_states"): # NOTE: We purposefully don't await between now and when we've # calculated what we want to do with the new states, to avoid races. to_notify = {} # Changes we want to notify everyone about to_federation_ping = {} # These need sending keep-alives # Only bother handling the last presence change for each user new_states_dict = {} for new_state in new_states: new_states_dict[new_state.user_id] = new_state new_states = new_states_dict.values() for new_state in new_states: user_id = new_state.user_id # It's fine to not hit the database here, as the only thing not in # the current state cache are OFFLINE states, where the only field # of interest is last_active which is safe enough to assume is 0 # here. prev_state = self.user_to_current_state.get( user_id, UserPresenceState.default(user_id) ) new_state, should_notify, should_ping = handle_update( prev_state, new_state, is_mine=self.is_mine_id(user_id), wheel_timer=self.wheel_timer, now=now, # When overriding disabled presence, don't kick off all the # wheel timers. persist=not self._track_presence, ) if force_notify: should_notify = True self.user_to_current_state[user_id] = new_state if should_notify: to_notify[user_id] = new_state elif should_ping: to_federation_ping[user_id] = new_state # TODO: We should probably ensure there are no races hereafter presence_updates_counter.inc(len(new_states)) if to_notify: notified_presence_counter.inc(len(to_notify)) await self._persist_and_notify(list(to_notify.values())) self.unpersisted_users_changes |= {s.user_id for s in new_states} self.unpersisted_users_changes -= set(to_notify.keys()) # Check if we need to resend any presence states to remote hosts. We # only do this for states that haven't been updated in a while to # ensure that the remote host doesn't time the presence state out. # # Note that since these are states that have *not* been updated, # they won't get sent down the normal presence replication stream, # and so we have to explicitly send them via the federation stream. to_federation_ping = { user_id: state for user_id, state in to_federation_ping.items() if user_id not in to_notify } if to_federation_ping: federation_presence_out_counter.inc(len(to_federation_ping)) hosts_to_states = await get_interested_remotes( self.store, self.presence_router, list(to_federation_ping.values()), ) for destinations, states in hosts_to_states: await self._federation_queue.send_presence_to_destinations( states, destinations ) @wrap_as_background_process("handle_presence_timeouts") async def _handle_timeouts(self) -> None: """Checks the presence of users that have timed out and updates as appropriate. """ logger.debug("Handling presence timeouts") now = self.clock.time_msec() # Fetch the list of users that *may* have timed out. Things may have # changed since the timeout was set, so we won't necessarily have to # take any action. users_to_check = set(self.wheel_timer.fetch(now)) # Check whether the lists of syncing processes from an external # process have expired. expired_process_ids = [ process_id for process_id, last_update in self.external_process_last_updated_ms.items() if now - last_update > EXTERNAL_PROCESS_EXPIRY ] for process_id in expired_process_ids: # For each expired process drop tracking info and check the users # that were syncing on that process to see if they need to be timed # out. users_to_check.update( user_id for user_id, device_id in self.external_process_to_current_syncs.pop( process_id, () ) ) self.external_process_last_updated_ms.pop(process_id) states = [ self.user_to_current_state.get(user_id, UserPresenceState.default(user_id)) for user_id in users_to_check ] timers_fired_counter.inc(len(states)) # Set of user ID & device IDs which are currently syncing. syncing_user_devices = { user_id_device_id for user_id_device_id, count in self._user_device_to_num_current_syncs.items() if count } syncing_user_devices.update( itertools.chain(*self.external_process_to_current_syncs.values()) ) changes = handle_timeouts( states, is_mine_fn=self.is_mine_id, syncing_user_devices=syncing_user_devices, user_to_devices=self._user_to_device_to_current_state, now=now, ) return await self._update_states(changes) async def bump_presence_active_time( self, user: UserID, device_id: Optional[str] ) -> None: """We've seen the user do something that indicates they're interacting with the app. """ # If presence is disabled, no-op if not self._track_presence: return user_id = user.to_string() bump_active_time_counter.inc() now = self.clock.time_msec() # Update the device information & mark the device as online if it was # unavailable. devices = self._user_to_device_to_current_state.setdefault(user_id, {}) device_state = devices.setdefault( device_id, UserDevicePresenceState.default(user_id, device_id), ) device_state.last_active_ts = now if device_state.state == PresenceState.UNAVAILABLE: device_state.state = PresenceState.ONLINE # Update the user state, this will always update last_active_ts and # might update the presence state. prev_state = await self.current_state_for_user(user_id) new_fields: Dict[str, Any] = { "last_active_ts": now, "state": _combine_device_states(devices.values()), } await self._update_states([prev_state.copy_and_replace(**new_fields)]) async def user_syncing( self, user_id: str, device_id: Optional[str], affect_presence: bool = True, presence_state: str = PresenceState.ONLINE, ) -> ContextManager[None]: """Returns a context manager that should surround any stream requests from the user. This allows us to keep track of who is currently streaming and who isn't without having to have timers outside of this module to avoid flickering when users disconnect/reconnect. Args: user_id: the user that is starting a sync device_id: the user's device that is starting a sync affect_presence: If false this function will be a no-op. Useful for streams that are not associated with an actual client that is being used by a user. presence_state: The presence state indicated in the sync request """ if not affect_presence or not self._track_presence: return _NullContextManager() curr_sync = self._user_device_to_num_current_syncs.get((user_id, device_id), 0) self._user_device_to_num_current_syncs[(user_id, device_id)] = curr_sync + 1 # Note that this causes last_active_ts to be incremented which is not # what the spec wants. await self.set_state( UserID.from_string(user_id), device_id, state={"presence": presence_state}, is_sync=True, ) async def _end() -> None: try: self._user_device_to_num_current_syncs[(user_id, device_id)] -= 1 prev_state = await self.current_state_for_user(user_id) await self._update_states( [ prev_state.copy_and_replace( last_user_sync_ts=self.clock.time_msec() ) ] ) except Exception: logger.exception("Error updating presence after sync") @contextmanager def _user_syncing() -> Generator[None, None, None]: try: yield finally: run_in_background(_end) return _user_syncing() def get_currently_syncing_users_for_replication( self, ) -> Iterable[Tuple[str, Optional[str]]]: # since we are the process handling presence, there is nothing to do here. return [] async def update_external_syncs_row( self, process_id: str, user_id: str, device_id: Optional[str], is_syncing: bool, sync_time_msec: int, ) -> None: """Update the syncing users for an external process as a delta. Args: process_id: An identifier for the process the users are syncing against. This allows synapse to process updates as user start and stop syncing against a given process. user_id: The user who has started or stopped syncing device_id: The user's device that has started or stopped syncing is_syncing: Whether or not the user is now syncing sync_time_msec: Time in ms when the user was last syncing """ async with self.external_sync_linearizer.queue(process_id): prev_state = await self.current_state_for_user(user_id) process_presence = self.external_process_to_current_syncs.setdefault( process_id, set() ) # USER_SYNC is sent when a user's device starts or stops syncing on # a remote # process. (But only for the initial and last sync for that # device.) # # When a device *starts* syncing it also calls set_state(...) which # will update the state, last_active_ts, and last_user_sync_ts. # Simply ensure the user & device is tracked as syncing in this case. # # When a device *stops* syncing, update the last_user_sync_ts and mark # them as no longer syncing. Note this doesn't quite match the # monolith behaviour, which updates last_user_sync_ts at the end of # every sync, not just the last in-flight sync. if is_syncing and (user_id, device_id) not in process_presence: process_presence.add((user_id, device_id)) elif not is_syncing and (user_id, device_id) in process_presence: devices = self._user_to_device_to_current_state.setdefault(user_id, {}) device_state = devices.setdefault( device_id, UserDevicePresenceState.default(user_id, device_id) ) device_state.last_sync_ts = sync_time_msec new_state = prev_state.copy_and_replace( last_user_sync_ts=sync_time_msec ) await self._update_states([new_state]) process_presence.discard((user_id, device_id)) self.external_process_last_updated_ms[process_id] = self.clock.time_msec() async def update_external_syncs_clear(self, process_id: str) -> None: """Marks all users that had been marked as syncing by a given process as offline. Used when the process has stopped/disappeared. """ async with self.external_sync_linearizer.queue(process_id): process_presence = self.external_process_to_current_syncs.pop( process_id, set() ) time_now_ms = self.clock.time_msec() # Mark each device as having a last sync time. updated_users = set() for user_id, device_id in process_presence: device_state = self._user_to_device_to_current_state.setdefault( user_id, {} ).setdefault( device_id, UserDevicePresenceState.default(user_id, device_id) ) device_state.last_sync_ts = time_now_ms updated_users.add(user_id) # Update each user (and insert into the appropriate timers to check if # they've gone offline). prev_states = await self.current_state_for_users(updated_users) await self._update_states( [ prev_state.copy_and_replace(last_user_sync_ts=time_now_ms) for prev_state in prev_states.values() ] ) self.external_process_last_updated_ms.pop(process_id, None) async def _persist_and_notify(self, states: List[UserPresenceState]) -> None: """Persist states in the database, poke the notifier and send to interested remote servers """ stream_id, max_token = await self.store.update_presence(states) parties = await get_interested_parties(self.store, self.presence_router, states) room_ids_to_states, users_to_states = parties self.notifier.on_new_event( StreamKeyType.PRESENCE, stream_id, rooms=room_ids_to_states.keys(), users=[UserID.from_string(u) for u in users_to_states], ) # We only want to poke the local federation sender, if any, as other # workers will receive the presence updates via the presence replication # stream (which is updated by `store.update_presence`). await self.maybe_send_presence_to_interested_destinations(states) async def incoming_presence(self, origin: str, content: JsonDict) -> None: """Called when we receive a `m.presence` EDU from a remote server.""" if not self._track_presence: return now = self.clock.time_msec() updates = [] for push in content.get("push", []): # A "push" contains a list of presence that we are probably interested # in. user_id = push.get("user_id", None) if not user_id: logger.info( "Got presence update from %r with no 'user_id': %r", origin, push ) continue if get_domain_from_id(user_id) != origin: logger.info( "Got presence update from %r with bad 'user_id': %r", origin, user_id, ) continue presence_state = push.get("presence", None) if not presence_state: logger.info( "Got presence update from %r with no 'presence_state': %r", origin, push, ) continue new_fields = {"state": presence_state, "last_federation_update_ts": now} last_active_ago = push.get("last_active_ago", None) if last_active_ago is not None: new_fields["last_active_ts"] = now - last_active_ago new_fields["status_msg"] = push.get("status_msg", None) new_fields["currently_active"] = push.get("currently_active", False) prev_state = await self.current_state_for_user(user_id) updates.append(prev_state.copy_and_replace(**new_fields)) if updates: federation_presence_counter.inc(len(updates)) await self._update_states(updates) async def set_state( self, target_user: UserID, device_id: Optional[str], state: JsonDict, force_notify: bool = False, is_sync: bool = False, ) -> None: """Set the presence state of the user. Args: target_user: The ID of the user to set the presence state of. device_id: the device that the user is setting the presence state of. state: The presence state as a JSON dictionary. force_notify: Whether to force notification of the update to clients. is_sync: True if this update was from a sync, which results in *not* overriding a previously set BUSY status, updating the user's last_user_sync_ts, and ignoring the "status_msg" field of the `state` dict. """ status_msg = state.get("status_msg", None) presence = state["presence"] if presence not in self.VALID_PRESENCE: raise SynapseError(400, "Invalid presence state") # If presence is disabled, no-op if not self._track_presence: return user_id = target_user.to_string() now = self.clock.time_msec() prev_state = await self.current_state_for_user(user_id) # Syncs do not override a previous presence of busy. # # TODO: This is a hack for lack of multi-device support. Unfortunately # removing this requires coordination with clients. if prev_state.state == PresenceState.BUSY and is_sync: presence = PresenceState.BUSY # Update the device specific information. devices = self._user_to_device_to_current_state.setdefault(user_id, {}) device_state = devices.setdefault( device_id, UserDevicePresenceState.default(user_id, device_id), ) device_state.state = presence device_state.last_active_ts = now if is_sync: device_state.last_sync_ts = now # Based on the state of each user's device calculate the new presence state. presence = _combine_device_states(devices.values()) new_fields = {"state": presence} if presence == PresenceState.ONLINE or presence == PresenceState.BUSY: new_fields["last_active_ts"] = now if is_sync: new_fields["last_user_sync_ts"] = now else: # Syncs do not override the status message. new_fields["status_msg"] = status_msg await self._update_states( [prev_state.copy_and_replace(**new_fields)], force_notify=force_notify ) async def is_visible(self, observed_user: UserID, observer_user: UserID) -> bool: """Returns whether a user can see another user's presence.""" observer_room_ids = await self.store.get_rooms_for_user( observer_user.to_string() ) observed_room_ids = await self.store.get_rooms_for_user( observed_user.to_string() ) if observer_room_ids & observed_room_ids: return True return False async def get_all_presence_updates( self, instance_name: str, last_id: int, current_id: int, limit: int ) -> Tuple[List[Tuple[int, list]], int, bool]: """ Gets a list of presence update rows from between the given stream ids. Each row has: - stream_id(str) - user_id(str) - state(str) - last_active_ts(int) - last_federation_update_ts(int) - last_user_sync_ts(int) - status_msg(int) - currently_active(int) Args: instance_name: The writer we want to fetch updates from. Unused here since there is only ever one writer. last_id: The token to fetch updates from. Exclusive. current_id: The token to fetch updates up to. Inclusive. limit: The requested limit for the number of rows to return. The function may return more or fewer rows. Returns: A tuple consisting of: the updates, a token to use to fetch subsequent updates, and whether we returned fewer rows than exists between the requested tokens due to the limit. The token returned can be used in a subsequent call to this function to get further updates. The updates are a list of 2-tuples of stream ID and the row data """ # TODO(markjh): replicate the unpersisted changes. # This could use the in-memory stores for recent changes. rows = await self.store.get_all_presence_updates( instance_name, last_id, current_id, limit ) return rows def notify_new_event(self) -> None: """Called when new events have happened. Handles users and servers joining rooms and require being sent presence. """ if self._event_processing: return async def _process_presence() -> None: assert not self._event_processing self._event_processing = True try: await self._unsafe_process() finally: self._event_processing = False run_as_background_process("presence.notify_new_event", _process_presence) async def _unsafe_process(self) -> None: # Loop round handling deltas until we're up to date while True: with Measure(self.clock, "presence_delta"): room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self._event_pos == room_max_stream_ordering: return logger.debug( "Processing presence stats %s->%s", self._event_pos, room_max_stream_ordering, ) ( max_pos, deltas, ) = await self._storage_controllers.state.get_current_state_deltas( self._event_pos, room_max_stream_ordering ) # We may get multiple deltas for different rooms, but we want to # handle them on a room by room basis, so we batch them up by # room. deltas_by_room: Dict[str, List[StateDelta]] = {} for delta in deltas: deltas_by_room.setdefault(delta.room_id, []).append(delta) for room_id, deltas_for_room in deltas_by_room.items(): await self._handle_state_delta(room_id, deltas_for_room) self._event_pos = max_pos # Expose current event processing position to prometheus synapse.metrics.event_processing_positions.labels("presence").set( max_pos ) async def _handle_state_delta(self, room_id: str, deltas: List[StateDelta]) -> None: """Process current state deltas for the room to find new joins that need to be handled. """ # Sets of newly joined users. Note that if the local server is # joining a remote room for the first time we'll see both the joining # user and all remote users as newly joined. newly_joined_users = set() for delta in deltas: assert room_id == delta.room_id logger.debug( "Handling: %r %r, %s", delta.event_type, delta.state_key, delta.event_id ) # Drop any event that isn't a membership join if delta.event_type != EventTypes.Member: continue if delta.event_id is None: # state has been deleted, so this is not a join. We only care about # joins. continue event = await self.store.get_event(delta.event_id, allow_none=True) if not event or event.content.get("membership") != Membership.JOIN: # We only care about joins continue if delta.prev_event_id: prev_event = await self.store.get_event( delta.prev_event_id, allow_none=True ) if ( prev_event and prev_event.content.get("membership") == Membership.JOIN ): # Ignore changes to join events. continue newly_joined_users.add(delta.state_key) if not newly_joined_users: # If nobody has joined then there's nothing to do. return # We want to send: # 1. presence states of all local users in the room to newly joined # remote servers # 2. presence states of newly joined users to all remote servers in # the room. # # TODO: Only send presence states to remote hosts that don't already # have them (because they already share rooms). # Get all the users who were already in the room, by fetching the # current users in the room and removing the newly joined users. users = await self.store.get_users_in_room(room_id) prev_users = set(users) - newly_joined_users # Construct sets for all the local users and remote hosts that were # already in the room prev_local_users = [] prev_remote_hosts = set() for user_id in prev_users: if self.is_mine_id(user_id): prev_local_users.append(user_id) else: prev_remote_hosts.add(get_domain_from_id(user_id)) # Similarly, construct sets for all the local users and remote hosts # that were *not* already in the room. Care needs to be taken with the # calculating the remote hosts, as a host may have already been in the # room even if there is a newly joined user from that host. newly_joined_local_users = [] newly_joined_remote_hosts = set() for user_id in newly_joined_users: if self.is_mine_id(user_id): newly_joined_local_users.append(user_id) else: host = get_domain_from_id(user_id) if host not in prev_remote_hosts: newly_joined_remote_hosts.add(host) # Send presence states of all local users in the room to newly joined # remote servers. (We actually only send states for local users already # in the room, as we'll send states for newly joined local users below.) if prev_local_users and newly_joined_remote_hosts: local_states = await self.current_state_for_users(prev_local_users) # Filter out old presence, i.e. offline presence states where # the user hasn't been active for a week. We can change this # depending on what we want the UX to be, but at the least we # should filter out offline presence where the state is just the # default state. now = self.clock.time_msec() states = [ state for state in local_states.values() if state.state != PresenceState.OFFLINE or now - state.last_active_ts < 7 * 24 * 60 * 60 * 1000 or state.status_msg is not None ] await self._federation_queue.send_presence_to_destinations( destinations=newly_joined_remote_hosts, states=states, ) # Send presence states of newly joined users to all remote servers in # the room if newly_joined_local_users and ( prev_remote_hosts or newly_joined_remote_hosts ): local_states = await self.current_state_for_users(newly_joined_local_users) await self._federation_queue.send_presence_to_destinations( destinations=prev_remote_hosts | newly_joined_remote_hosts, states=list(local_states.values()), ) def should_notify( old_state: UserPresenceState, new_state: UserPresenceState, is_mine: bool ) -> bool: """Decides if a presence state change should be sent to interested parties.""" user_location = "remote" if is_mine: user_location = "local" if old_state == new_state: return False if old_state.status_msg != new_state.status_msg: notify_reason_counter.labels(user_location, "status_msg_change").inc() return True if old_state.state != new_state.state: notify_reason_counter.labels(user_location, "state_change").inc() state_transition_counter.labels( user_location, old_state.state, new_state.state ).inc() return True if old_state.state == PresenceState.ONLINE: if new_state.currently_active != old_state.currently_active: notify_reason_counter.labels(user_location, "current_active_change").inc() return True if ( new_state.last_active_ts - old_state.last_active_ts > LAST_ACTIVE_GRANULARITY ): # Only notify about last active bumps if we're not currently active if not new_state.currently_active: notify_reason_counter.labels( user_location, "last_active_change_online" ).inc() return True elif new_state.last_active_ts - old_state.last_active_ts > LAST_ACTIVE_GRANULARITY: # Always notify for a transition where last active gets bumped. notify_reason_counter.labels( user_location, "last_active_change_not_online" ).inc() return True return False def format_user_presence_state( state: UserPresenceState, now: int, include_user_id: bool = True ) -> JsonDict: """Convert UserPresenceState to a JSON format that can be sent down to clients and to other servers. Args: state: The user presence state to format. now: The current timestamp since the epoch in ms. include_user_id: Whether to include `user_id` in the returned dictionary. As this function can be used both to format presence updates for client /sync responses and for federation /send requests, only the latter needs the include the `user_id` field. Returns: A JSON dictionary with the following keys: * presence: The presence state as a str. * user_id: Optional. Included if `include_user_id` is truthy. The canonical Matrix ID of the user. * last_active_ago: Optional. Included if `last_active_ts` is set on `state`. The timestamp that the user was last active. * status_msg: Optional. Included if `status_msg` is set on `state`. The user's status. * currently_active: Optional. Included only if `state.state` is "online". Example: { "presence": "online", "user_id": "@alice:example.com", "last_active_ago": 16783813918, "status_msg": "Hello world!", "currently_active": True } """ content: JsonDict = {"presence": state.state} if include_user_id: content["user_id"] = state.user_id if state.last_active_ts: content["last_active_ago"] = now - state.last_active_ts if state.status_msg: content["status_msg"] = state.status_msg if state.state == PresenceState.ONLINE: content["currently_active"] = state.currently_active return content class PresenceEventSource(EventSource[int, UserPresenceState]): def __init__(self, hs: "HomeServer"): # We can't call get_presence_handler here because there's a cycle: # # Presence -> Notifier -> PresenceEventSource -> Presence # # Same with get_presence_router: # # AuthHandler -> Notifier -> PresenceEventSource -> ModuleApi -> AuthHandler self.get_presence_handler = hs.get_presence_handler self.get_presence_router = hs.get_presence_router self.clock = hs.get_clock() self.store = hs.get_datastores().main async def get_new_events( self, user: UserID, from_key: Optional[int], # Having a default limit doesn't match the EventSource API, but some # callers do not provide it. It is unused in this class. limit: int = 0, room_ids: Optional[StrCollection] = None, is_guest: bool = False, explicit_room_id: Optional[str] = None, include_offline: bool = True, service: Optional[ApplicationService] = None, ) -> Tuple[List[UserPresenceState], int]: # The process for getting presence events are: # 1. Get the rooms the user is in. # 2. Get the list of user in the rooms. # 3. Get the list of users that are in the user's presence list. # 4. If there is a from_key set, cross reference the list of users # with the `presence_stream_cache` to see which ones we actually # need to check. # 5. Load current state for the users. # # We don't try and limit the presence updates by the current token, as # sending down the rare duplicate is not a concern. user_id = user.to_string() stream_change_cache = self.store.presence_stream_cache with Measure(self.clock, "presence.get_new_events"): if from_key is not None: from_key = int(from_key) # Check if this user should receive all current, online user presence. We only # bother to do this if from_key is set, as otherwise the user will receive all # user presence anyways. if await self.store.should_user_receive_full_presence_with_token( user_id, from_key ): # This user has been specified by a module to receive all current, online # user presence. Removing from_key and setting include_offline to false # will do effectively this. from_key = None include_offline = False max_token = self.store.get_current_presence_token() if from_key == max_token: # This is necessary as due to the way stream ID generators work # we may get updates that have a stream ID greater than the max # token (e.g. max_token is N but stream generator may return # results for N+2, due to N+1 not having finished being # persisted yet). # # This is usually fine, as it just means that we may send down # some presence updates multiple times. However, we need to be # careful that the sync stream either actually does make some # progress or doesn't return, otherwise clients will end up # tight looping calling /sync due to it immediately returning # the same token repeatedly. # # Hence this guard where we just return nothing so that the sync # doesn't return. C.f. https://github.com/matrix-org/synapse/issues/5503. return [], max_token # Figure out which other users this user should explicitly receive # updates for additional_users_interested_in = ( await self.get_presence_router().get_interested_users(user.to_string()) ) # We have a set of users that we're interested in the presence of. We want to # cross-reference that with the users that have actually changed their presence. # Check whether this user should see all user updates if additional_users_interested_in == PresenceRouter.ALL_USERS: # Provide presence state for all users presence_updates = await self._filter_all_presence_updates_for_user( user_id, include_offline, from_key ) return presence_updates, max_token # Make mypy happy. users_interested_in should now be a set assert not isinstance(additional_users_interested_in, str) # We always care about our own presence. additional_users_interested_in.add(user_id) if explicit_room_id: user_ids = await self.store.get_users_in_room(explicit_room_id) additional_users_interested_in.update(user_ids) # The set of users that we're interested in and that have had a presence update. # We'll actually pull the presence updates for these users at the end. interested_and_updated_users: StrCollection if from_key is not None: # First get all users that have had a presence update result = stream_change_cache.get_all_entities_changed(from_key) # Cross-reference users we're interested in with those that have had updates. if result.hit: updated_users = result.entities # If we have the full list of changes for presence we can # simply check which ones share a room with the user. get_updates_counter.labels("stream").inc() sharing_users = await self.store.do_users_share_a_room( user_id, updated_users ) interested_and_updated_users = ( sharing_users.union(additional_users_interested_in) ).intersection(updated_users) else: # Too many possible updates. Find all users we can see and check # if any of them have changed. get_updates_counter.labels("full").inc() users_interested_in = ( await self.store.get_users_who_share_room_with_user(user_id) ) users_interested_in.update(additional_users_interested_in) interested_and_updated_users = ( stream_change_cache.get_entities_changed( users_interested_in, from_key ) ) else: # No from_key has been specified. Return the presence for all users # this user is interested in interested_and_updated_users = ( await self.store.get_users_who_share_room_with_user(user_id) ) interested_and_updated_users.update(additional_users_interested_in) # Retrieve the current presence state for each user users_to_state = await self.get_presence_handler().current_state_for_users( interested_and_updated_users ) presence_updates = list(users_to_state.values()) if not include_offline: # Filter out offline presence states presence_updates = self._filter_offline_presence_state(presence_updates) return presence_updates, max_token async def _filter_all_presence_updates_for_user( self, user_id: str, include_offline: bool, from_key: Optional[int] = None, ) -> List[UserPresenceState]: """ Computes the presence updates a user should receive. First pulls presence updates from the database. Then consults PresenceRouter for whether any updates should be excluded by user ID. Args: user_id: The User ID of the user to compute presence updates for. include_offline: Whether to include offline presence states from the results. from_key: The minimum stream ID of updates to pull from the database before filtering. Returns: A list of presence states for the given user to receive. """ updated_users = None if from_key: # Only return updates since the last sync result = self.store.presence_stream_cache.get_all_entities_changed(from_key) if result.hit: updated_users = result.entities if updated_users is not None: # Get the actual presence update for each change users_to_state = await self.get_presence_handler().current_state_for_users( updated_users ) presence_updates = list(users_to_state.values()) if not include_offline: # Filter out offline states presence_updates = self._filter_offline_presence_state(presence_updates) else: users_to_state = await self.store.get_presence_for_all_users( include_offline=include_offline ) presence_updates = list(users_to_state.values()) # TODO: This feels wildly inefficient, and it's unfortunate we need to ask the # module for information on a number of users when we then only take the info # for a single user # Filter through the presence router users_to_state_set = await self.get_presence_router().get_users_for_states( presence_updates ) # We only want the mapping for the syncing user presence_updates = list(users_to_state_set[user_id]) # Return presence information for all users return presence_updates def _filter_offline_presence_state( self, presence_updates: Iterable[UserPresenceState] ) -> List[UserPresenceState]: """Given an iterable containing user presence updates, return a list with any offline presence states removed. Args: presence_updates: Presence states to filter Returns: A new list with any offline presence states removed. """ return [ update for update in presence_updates if update.state != PresenceState.OFFLINE ] def get_current_key(self) -> int: return self.store.get_current_presence_token() def handle_timeouts( user_states: List[UserPresenceState], is_mine_fn: Callable[[str], bool], syncing_user_devices: AbstractSet[Tuple[str, Optional[str]]], user_to_devices: Dict[str, Dict[Optional[str], UserDevicePresenceState]], now: int, ) -> List[UserPresenceState]: """Checks the presence of users that have timed out and updates as appropriate. Args: user_states: List of UserPresenceState's to check. is_mine_fn: Function that returns if a user_id is ours syncing_user_devices: A set of (user ID, device ID) tuples with active syncs.. user_to_devices: A map of user ID to device ID to UserDevicePresenceState. now: Current time in ms. Returns: List of UserPresenceState updates """ changes = {} # Actual changes we need to notify people about for state in user_states: user_id = state.user_id is_mine = is_mine_fn(user_id) new_state = handle_timeout( state, is_mine, syncing_user_devices, user_to_devices.get(user_id, {}), now, ) if new_state: changes[state.user_id] = new_state return list(changes.values()) def handle_timeout( state: UserPresenceState, is_mine: bool, syncing_device_ids: AbstractSet[Tuple[str, Optional[str]]], user_devices: Dict[Optional[str], UserDevicePresenceState], now: int, ) -> Optional[UserPresenceState]: """Checks the presence of the user to see if any of the timers have elapsed Args: state: UserPresenceState to check. is_mine: Whether the user is ours syncing_user_devices: A set of (user ID, device ID) tuples with active syncs.. user_devices: A map of device ID to UserDevicePresenceState. now: Current time in ms. Returns: A UserPresenceState update or None if no update. """ if state.state == PresenceState.OFFLINE: # No timeouts are associated with offline states. return None changed = False if is_mine: # Check per-device whether the device should be considered idle or offline # due to timeouts. device_changed = False offline_devices = [] for device_id, device_state in user_devices.items(): if device_state.state == PresenceState.ONLINE: if now - device_state.last_active_ts > IDLE_TIMER: # Currently online, but last activity ages ago so auto # idle device_state.state = PresenceState.UNAVAILABLE device_changed = True # If there are have been no sync for a while (and none ongoing), # set presence to offline. if (state.user_id, device_id) not in syncing_device_ids: # If the user has done something recently but hasn't synced, # don't set them as offline. sync_or_active = max( device_state.last_sync_ts, device_state.last_active_ts ) # Implementations aren't meant to timeout a device with a busy # state, but it needs to timeout *eventually* or else the user # will be stuck in that state. online_timeout = ( BUSY_ONLINE_TIMEOUT if device_state.state == PresenceState.BUSY else SYNC_ONLINE_TIMEOUT ) if now - sync_or_active > online_timeout: # Mark the device as going offline. offline_devices.append(device_id) device_changed = True # Offline devices are not needed and do not add information. for device_id in offline_devices: user_devices.pop(device_id) # If the presence state of the devices changed, then (maybe) update # the user's overall presence state. if device_changed: new_presence = _combine_device_states(user_devices.values()) if new_presence != state.state: state = state.copy_and_replace(state=new_presence) changed = True if now - state.last_active_ts > LAST_ACTIVE_GRANULARITY: # So that we send down a notification that we've # stopped updating. changed = True if now - state.last_federation_update_ts > FEDERATION_PING_INTERVAL: # Need to send ping to other servers to ensure they don't # timeout and set us to offline changed = True else: # We expect to be poked occasionally by the other side. # This is to protect against forgetful/buggy servers, so that # no one gets stuck online forever. if now - state.last_federation_update_ts > FEDERATION_TIMEOUT: # The other side seems to have disappeared. state = state.copy_and_replace(state=PresenceState.OFFLINE) changed = True return state if changed else None def handle_update( prev_state: UserPresenceState, new_state: UserPresenceState, is_mine: bool, wheel_timer: WheelTimer, now: int, persist: bool, ) -> Tuple[UserPresenceState, bool, bool]: """Given a presence update: 1. Add any appropriate timers. 2. Check if we should notify anyone. Args: prev_state new_state is_mine: Whether the user is ours wheel_timer now: Time now in ms persist: True if this state should persist until another update occurs. Skips insertion into wheel timers. Returns: 3-tuple: `(new_state, persist_and_notify, federation_ping)` where: - new_state: is the state to actually persist - persist_and_notify: whether to persist and notify people - federation_ping: whether we should send a ping over federation """ user_id = new_state.user_id persist_and_notify = False federation_ping = False # If the users are ours then we want to set up a bunch of timers # to time things out. if is_mine: if new_state.state == PresenceState.ONLINE: # Idle timer if not persist: wheel_timer.insert( now=now, obj=user_id, then=new_state.last_active_ts + IDLE_TIMER ) active = now - new_state.last_active_ts < LAST_ACTIVE_GRANULARITY new_state = new_state.copy_and_replace(currently_active=active) if active and not persist: wheel_timer.insert( now=now, obj=user_id, then=new_state.last_active_ts + LAST_ACTIVE_GRANULARITY, ) if new_state.state != PresenceState.OFFLINE: # User has stopped syncing if not persist: wheel_timer.insert( now=now, obj=user_id, then=new_state.last_user_sync_ts + SYNC_ONLINE_TIMEOUT, ) last_federate = new_state.last_federation_update_ts if now - last_federate > FEDERATION_PING_INTERVAL: # Been a while since we've poked remote servers new_state = new_state.copy_and_replace(last_federation_update_ts=now) federation_ping = True if new_state.state == PresenceState.BUSY and not persist: wheel_timer.insert( now=now, obj=user_id, then=new_state.last_user_sync_ts + BUSY_ONLINE_TIMEOUT, ) else: # An update for a remote user was received. if not persist: wheel_timer.insert( now=now, obj=user_id, then=new_state.last_federation_update_ts + FEDERATION_TIMEOUT, ) # Check whether the change was something worth notifying about if should_notify(prev_state, new_state, is_mine): new_state = new_state.copy_and_replace(last_federation_update_ts=now) persist_and_notify = True return new_state, persist_and_notify, federation_ping PRESENCE_BY_PRIORITY = { PresenceState.BUSY: 4, PresenceState.ONLINE: 3, PresenceState.UNAVAILABLE: 2, PresenceState.OFFLINE: 1, } def _combine_device_states( device_states: Iterable[UserDevicePresenceState], ) -> str: """ Find the device to use presence information from. Orders devices by priority, then last_active_ts. Args: device_states: An iterable of device presence states Return: The combined presence state. """ # Based on (all) the user's devices calculate the new presence state. presence = PresenceState.OFFLINE last_active_ts = -1 # Find the device to use the presence state of based on the presence priority, # but tie-break with how recently the device has been seen. for device_state in device_states: if (PRESENCE_BY_PRIORITY[device_state.state], device_state.last_active_ts) > ( PRESENCE_BY_PRIORITY[presence], last_active_ts, ): presence = device_state.state last_active_ts = device_state.last_active_ts return presence async def get_interested_parties( store: DataStore, presence_router: PresenceRouter, states: List[UserPresenceState] ) -> Tuple[Dict[str, List[UserPresenceState]], Dict[str, List[UserPresenceState]]]: """Given a list of states return which entities (rooms, users) are interested in the given states. Args: store: The homeserver's data store. presence_router: A module for augmenting the destinations for presence updates. states: A list of incoming user presence updates. Returns: A 2-tuple of `(room_ids_to_states, users_to_states)`, with each item being a dict of `entity_name` -> `[UserPresenceState]` """ room_ids_to_states: Dict[str, List[UserPresenceState]] = {} users_to_states: Dict[str, List[UserPresenceState]] = {} for state in states: room_ids = await store.get_rooms_for_user(state.user_id) for room_id in room_ids: room_ids_to_states.setdefault(room_id, []).append(state) # Always notify self users_to_states.setdefault(state.user_id, []).append(state) # Ask a presence routing module for any additional parties if one # is loaded. router_users_to_states = await presence_router.get_users_for_states(states) # Update the dictionaries with additional destinations and state to send for user_id, user_states in router_users_to_states.items(): users_to_states.setdefault(user_id, []).extend(user_states) return room_ids_to_states, users_to_states async def get_interested_remotes( store: DataStore, presence_router: PresenceRouter, states: List[UserPresenceState], ) -> List[Tuple[StrCollection, Collection[UserPresenceState]]]: """Given a list of presence states figure out which remote servers should be sent which. All the presence states should be for local users only. Args: store: The homeserver's data store. presence_router: A module for augmenting the destinations for presence updates. states: A list of incoming user presence updates. Returns: A map from destinations to presence states to send to that destination. """ hosts_and_states: List[Tuple[StrCollection, Collection[UserPresenceState]]] = [] # First we look up the rooms each user is in (as well as any explicit # subscriptions), then for each distinct room we look up the remote # hosts in those rooms. for state in states: room_ids = await store.get_rooms_for_user(state.user_id) hosts: Set[str] = set() for room_id in room_ids: room_hosts = await store.get_current_hosts_in_room(room_id) hosts.update(room_hosts) hosts_and_states.append((hosts, [state])) # Ask a presence routing module for any additional parties if one # is loaded. router_users_to_states = await presence_router.get_users_for_states(states) for user_id, user_states in router_users_to_states.items(): host = get_domain_from_id(user_id) hosts_and_states.append(([host], user_states)) return hosts_and_states class PresenceFederationQueue: """Handles sending ad hoc presence updates over federation, which are *not* due to state updates (that get handled via the presence stream), e.g. federation pings and sending existing present states to newly joined hosts. Only the last N minutes will be queued, so if a federation sender instance is down for longer then some updates will be dropped. This is OK as presence is ephemeral, and so it will self correct eventually. On workers the class tracks the last received position of the stream from replication, and handles querying for missed updates over HTTP replication, c.f. `get_current_token` and `get_replication_rows`. """ # How long to keep entries in the queue for. Workers that are down for # longer than this duration will miss out on older updates. _KEEP_ITEMS_IN_QUEUE_FOR_MS = 5 * 60 * 1000 # How often to check if we can expire entries from the queue. _CLEAR_ITEMS_EVERY_MS = 60 * 1000 def __init__(self, hs: "HomeServer", presence_handler: BasePresenceHandler): self._clock = hs.get_clock() self._notifier = hs.get_notifier() self._instance_name = hs.get_instance_name() self._presence_handler = presence_handler self._repl_client = ReplicationGetStreamUpdates.make_client(hs) # Should we keep a queue of recent presence updates? We only bother if # another process may be handling federation sending. self._queue_presence_updates = True # Whether this instance is a presence writer. self._presence_writer = self._instance_name in hs.config.worker.writers.presence # The FederationSender instance, if this process sends federation traffic directly. self._federation = None if hs.should_send_federation(): self._federation = hs.get_federation_sender() # We don't bother queuing up presence states if only this instance # is sending federation. if hs.config.worker.federation_shard_config.instances == [ self._instance_name ]: self._queue_presence_updates = False # The queue of recently queued updates as tuples of: `(timestamp, # stream_id, destinations, user_ids)`. We don't store the full states # for efficiency, and remote workers will already have the full states # cached. self._queue: List[Tuple[int, int, StrCollection, Set[str]]] = [] self._next_id = 1 # Map from instance name to current token self._current_tokens: Dict[str, int] = {} if self._queue_presence_updates: self._clock.looping_call(self._clear_queue, self._CLEAR_ITEMS_EVERY_MS) def _clear_queue(self) -> None: """Clear out older entries from the queue.""" clear_before = self._clock.time_msec() - self._KEEP_ITEMS_IN_QUEUE_FOR_MS # The queue is sorted by timestamp, so we can bisect to find the right # place to purge before. Note that we are searching using a 1-tuple with # the time, which does The Right Thing since the queue is a tuple where # the first item is a timestamp. index = bisect(self._queue, (clear_before,)) self._queue = self._queue[index:] async def send_presence_to_destinations( self, states: Collection[UserPresenceState], destinations: StrCollection ) -> None: """Send the presence states to the given destinations. Will forward to the local federation sender (if there is one) and queue to send over replication (if there are other federation sender instances.). Must only be called on the presence writer process. """ # This should only be called on a presence writer. assert self._presence_writer if not states or not destinations: # Ignore calls which either don't have any new states or don't need # to be sent anywhere. return if self._federation: await self._federation.send_presence_to_destinations( states=states, destinations=destinations, ) if not self._queue_presence_updates: return now = self._clock.time_msec() stream_id = self._next_id self._next_id += 1 self._queue.append((now, stream_id, destinations, {s.user_id for s in states})) self._notifier.notify_replication() def get_current_token(self, instance_name: str) -> int: """Get the current position of the stream. On workers this returns the last stream ID received from replication. """ if instance_name == self._instance_name: return self._next_id - 1 else: return self._current_tokens.get(instance_name, 0) async def get_replication_rows( self, instance_name: str, from_token: int, upto_token: int, target_row_count: int, ) -> Tuple[List[Tuple[int, Tuple[str, str]]], int, bool]: """Get all the updates between the two tokens. We return rows in the form of `(destination, user_id)` to keep the size of each row bounded (rather than returning the sets in a row). On workers this will query the presence writer process via HTTP replication. """ if instance_name != self._instance_name: # If not local we query over http replication from the presence # writer result = await self._repl_client( instance_name=instance_name, stream_name=PresenceFederationStream.NAME, from_token=from_token, upto_token=upto_token, ) return result["updates"], result["upto_token"], result["limited"] # If the from_token is the current token then there's nothing to return # and we can trivially no-op. if from_token == self._next_id - 1: return [], upto_token, False # We can find the correct position in the queue by noting that there is # exactly one entry per stream ID, and that the last entry has an ID of # `self._next_id - 1`, so we can count backwards from the end. # # Since we are returning all states in the range `from_token < stream_id # <= upto_token` we look for the index with a `stream_id` of `from_token # + 1`. # # Since the start of the queue is periodically truncated we need to # handle the case where `from_token` stream ID has already been dropped. start_idx = max(from_token + 1 - self._next_id, -len(self._queue)) to_send: List[Tuple[int, Tuple[str, str]]] = [] limited = False new_id = upto_token for _, stream_id, destinations, user_ids in self._queue[start_idx:]: if stream_id <= from_token: # Paranoia check that we are actually only sending states that # are have stream_id strictly greater than from_token. We should # never hit this. logger.warning( "Tried returning presence federation stream ID: %d less than from_token: %d (next_id: %d, len: %d)", stream_id, from_token, self._next_id, len(self._queue), ) continue if stream_id > upto_token: break new_id = stream_id to_send.extend( (stream_id, (destination, user_id)) for destination in destinations for user_id in user_ids ) if len(to_send) > target_row_count: limited = True break return to_send, new_id, limited async def process_replication_rows( self, stream_name: str, instance_name: str, token: int, rows: list ) -> None: if stream_name != PresenceFederationStream.NAME: return # We keep track of the current tokens (so that we can catch up with anything we missed after a disconnect) self._current_tokens[instance_name] = token # If we're a federation sender we pull out the presence states to send # and forward them on. if not self._federation: return hosts_to_users: Dict[str, Set[str]] = {} for row in rows: hosts_to_users.setdefault(row.destination, set()).add(row.user_id) for host, user_ids in hosts_to_users.items(): states = await self._presence_handler.current_state_for_users(user_ids) await self._federation.send_presence_to_destinations( states=states.values(), destinations=[host], ) synapse-1.100.0/synapse/handlers/profile.py000066400000000000000000000440611455622526000206430ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random from typing import TYPE_CHECKING, Optional, Union from synapse.api.errors import ( AuthError, Codes, HttpResponseException, RequestSendFailed, StoreError, SynapseError, ) from synapse.storage.databases.main.media_repository import LocalMedia, RemoteMedia from synapse.types import JsonDict, Requester, UserID, create_requester from synapse.util.caches.descriptors import cached from synapse.util.stringutils import parse_and_validate_mxc_uri if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) MAX_DISPLAYNAME_LEN = 256 MAX_AVATAR_URL_LEN = 1000 class ProfileHandler: """Handles fetching and updating user profile information. ProfileHandler can be instantiated directly on workers and will delegate to master when necessary. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.clock = hs.get_clock() self.hs = hs self.federation = hs.get_federation_client() hs.get_federation_registry().register_query_handler( "profile", self.on_profile_query ) self.user_directory_handler = hs.get_user_directory_handler() self.request_ratelimiter = hs.get_request_ratelimiter() self.max_avatar_size = hs.config.server.max_avatar_size self.allowed_avatar_mimetypes = hs.config.server.allowed_avatar_mimetypes self._is_mine_server_name = hs.is_mine_server_name self._third_party_rules = hs.get_module_api_callbacks().third_party_event_rules async def get_profile(self, user_id: str, ignore_backoff: bool = True) -> JsonDict: target_user = UserID.from_string(user_id) if self.hs.is_mine(target_user): profileinfo = await self.store.get_profileinfo(target_user) if profileinfo.display_name is None and profileinfo.avatar_url is None: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) return { "displayname": profileinfo.display_name, "avatar_url": profileinfo.avatar_url, } else: try: result = await self.federation.make_query( destination=target_user.domain, query_type="profile", args={"user_id": user_id}, ignore_backoff=ignore_backoff, ) return result except RequestSendFailed as e: raise SynapseError(502, "Failed to fetch profile") from e except HttpResponseException as e: if e.code < 500 and e.code != 404: # Other codes are not allowed in c2s API logger.info( "Server replied with wrong response: %s %s", e.code, e.msg ) raise SynapseError(502, "Failed to fetch profile") raise e.to_synapse_error() async def get_displayname(self, target_user: UserID) -> Optional[str]: if self.hs.is_mine(target_user): try: displayname = await self.store.get_profile_displayname(target_user) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return displayname else: try: result = await self.federation.make_query( destination=target_user.domain, query_type="profile", args={"user_id": target_user.to_string(), "field": "displayname"}, ignore_backoff=True, ) except RequestSendFailed as e: raise SynapseError(502, "Failed to fetch profile") from e except HttpResponseException as e: raise e.to_synapse_error() return result.get("displayname") async def set_displayname( self, target_user: UserID, requester: Requester, new_displayname: str, by_admin: bool = False, deactivation: bool = False, propagate: bool = True, ) -> None: """Set the displayname of a user Args: target_user: the user whose displayname is to be changed. requester: The user attempting to make this change. new_displayname: The displayname to give this user. by_admin: Whether this change was made by an administrator. deactivation: Whether this change was made while deactivating the user. propagate: Whether this change also applies to the user's membership events. """ if not self.hs.is_mine(target_user): raise SynapseError(400, "User is not hosted on this homeserver") if not by_admin and target_user != requester.user: raise AuthError(400, "Cannot set another user's displayname") if not by_admin and not self.hs.config.registration.enable_set_displayname: profile = await self.store.get_profileinfo(target_user) if profile.display_name: raise SynapseError( 400, "Changing display name is disabled on this server", Codes.FORBIDDEN, ) if not isinstance(new_displayname, str): raise SynapseError( 400, "'displayname' must be a string", errcode=Codes.INVALID_PARAM ) if len(new_displayname) > MAX_DISPLAYNAME_LEN: raise SynapseError( 400, "Displayname is too long (max %i)" % (MAX_DISPLAYNAME_LEN,) ) displayname_to_set: Optional[str] = new_displayname.strip() if new_displayname == "": displayname_to_set = None # If the admin changes the display name of a user, the requesting user cannot send # the join event to update the display name in the rooms. # This must be done by the target user themselves. if by_admin: requester = create_requester( target_user, authenticated_entity=requester.authenticated_entity, ) await self.store.set_profile_displayname(target_user, displayname_to_set) profile = await self.store.get_profileinfo(target_user) await self.user_directory_handler.handle_local_profile_change( target_user.to_string(), profile ) await self._third_party_rules.on_profile_update( target_user.to_string(), profile, by_admin, deactivation ) if propagate: await self._update_join_states(requester, target_user) async def get_avatar_url(self, target_user: UserID) -> Optional[str]: if self.hs.is_mine(target_user): try: avatar_url = await self.store.get_profile_avatar_url(target_user) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return avatar_url else: try: result = await self.federation.make_query( destination=target_user.domain, query_type="profile", args={"user_id": target_user.to_string(), "field": "avatar_url"}, ignore_backoff=True, ) except RequestSendFailed as e: raise SynapseError(502, "Failed to fetch profile") from e except HttpResponseException as e: raise e.to_synapse_error() return result.get("avatar_url") async def set_avatar_url( self, target_user: UserID, requester: Requester, new_avatar_url: str, by_admin: bool = False, deactivation: bool = False, propagate: bool = True, ) -> None: """Set a new avatar URL for a user. Args: target_user: the user whose avatar URL is to be changed. requester: The user attempting to make this change. new_avatar_url: The avatar URL to give this user. by_admin: Whether this change was made by an administrator. deactivation: Whether this change was made while deactivating the user. propagate: Whether this change also applies to the user's membership events. """ if not self.hs.is_mine(target_user): raise SynapseError(400, "User is not hosted on this homeserver") if not by_admin and target_user != requester.user: raise AuthError(400, "Cannot set another user's avatar_url") if not by_admin and not self.hs.config.registration.enable_set_avatar_url: profile = await self.store.get_profileinfo(target_user) if profile.avatar_url: raise SynapseError( 400, "Changing avatar is disabled on this server", Codes.FORBIDDEN ) if not isinstance(new_avatar_url, str): raise SynapseError( 400, "'avatar_url' must be a string", errcode=Codes.INVALID_PARAM ) if len(new_avatar_url) > MAX_AVATAR_URL_LEN: raise SynapseError( 400, "Avatar URL is too long (max %i)" % (MAX_AVATAR_URL_LEN,) ) if not await self.check_avatar_size_and_mime_type(new_avatar_url): raise SynapseError(403, "This avatar is not allowed", Codes.FORBIDDEN) avatar_url_to_set: Optional[str] = new_avatar_url if new_avatar_url == "": avatar_url_to_set = None # Same like set_displayname if by_admin: requester = create_requester( target_user, authenticated_entity=requester.authenticated_entity ) await self.store.set_profile_avatar_url(target_user, avatar_url_to_set) profile = await self.store.get_profileinfo(target_user) await self.user_directory_handler.handle_local_profile_change( target_user.to_string(), profile ) await self._third_party_rules.on_profile_update( target_user.to_string(), profile, by_admin, deactivation ) if propagate: await self._update_join_states(requester, target_user) @cached() async def check_avatar_size_and_mime_type(self, mxc: str) -> bool: """Check that the size and content type of the avatar at the given MXC URI are within the configured limits. If the given `mxc` is empty, no checks are performed. (Users are always able to unset their avatar.) Args: mxc: The MXC URI at which the avatar can be found. Returns: A boolean indicating whether the file can be allowed to be set as an avatar. """ if mxc == "": return True if not self.max_avatar_size and not self.allowed_avatar_mimetypes: return True host, port, media_id = parse_and_validate_mxc_uri(mxc) if port is not None: server_name = host + ":" + str(port) else: server_name = host if self._is_mine_server_name(server_name): media_info: Optional[ Union[LocalMedia, RemoteMedia] ] = await self.store.get_local_media(media_id) else: media_info = await self.store.get_cached_remote_media(server_name, media_id) if media_info is None: # Both configuration options need to access the file's metadata, and # retrieving remote avatars just for this becomes a bit of a faff, especially # if e.g. the file is too big. It's also generally safe to assume most files # used as avatar are uploaded locally, or if the upload didn't happen as part # of a PUT request on /avatar_url that the file was at least previewed by the # user locally (and therefore downloaded to the remote media cache). logger.warning("Forbidding avatar change to %s: avatar not on server", mxc) return False if self.max_avatar_size: # Ensure avatar does not exceed max allowed avatar size if media_info.media_length > self.max_avatar_size: logger.warning( "Forbidding avatar change to %s: %d bytes is above the allowed size " "limit", mxc, media_info.media_length, ) return False if self.allowed_avatar_mimetypes: # Ensure the avatar's file type is allowed if ( self.allowed_avatar_mimetypes and media_info.media_type not in self.allowed_avatar_mimetypes ): logger.warning( "Forbidding avatar change to %s: mimetype %s not allowed", mxc, media_info.media_type, ) return False return True async def on_profile_query(self, args: JsonDict) -> JsonDict: """Handles federation profile query requests.""" if not self.hs.config.federation.allow_profile_lookup_over_federation: raise SynapseError( 403, "Profile lookup over federation is disabled on this homeserver", Codes.FORBIDDEN, ) user = UserID.from_string(args["user_id"]) if not self.hs.is_mine(user): raise SynapseError(400, "User is not hosted on this homeserver") just_field = args.get("field", None) response = {} try: if just_field is None or just_field == "displayname": response["displayname"] = await self.store.get_profile_displayname(user) if just_field is None or just_field == "avatar_url": response["avatar_url"] = await self.store.get_profile_avatar_url(user) except StoreError as e: if e.code == 404: raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise return response async def _update_join_states( self, requester: Requester, target_user: UserID ) -> None: if not self.hs.is_mine(target_user): return await self.request_ratelimiter.ratelimit(requester) # Do not actually update the room state for shadow-banned users. if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) return room_ids = await self.store.get_rooms_for_user(target_user.to_string()) for room_id in room_ids: handler = self.hs.get_room_member_handler() try: # Assume the target_user isn't a guest, # because we don't let guests set profile or avatar data. await handler.update_membership( requester, target_user, room_id, "join", # We treat a profile update like a join. ratelimit=False, # Try to hide that these events aren't atomic. ) except Exception as e: logger.warning( "Failed to update join event for room %s - %s", room_id, str(e) ) async def check_profile_query_allowed( self, target_user: UserID, requester: Optional[UserID] = None ) -> None: """Checks whether a profile query is allowed. If the 'require_auth_for_profile_requests' config flag is set to True and a 'requester' is provided, the query is only allowed if the two users share a room. Args: target_user: The owner of the queried profile. requester: The user querying for the profile. Raises: SynapseError(403): The two users share no room, or ne user couldn't be found to be in any room the server is in, and therefore the query is denied. """ # Implementation of MSC1301: don't allow looking up profiles if the # requester isn't in the same room as the target. We expect requester to # be None when this function is called outside of a profile query, e.g. # when building a membership event. In this case, we must allow the # lookup. if ( not self.hs.config.server.limit_profile_requests_to_users_who_share_rooms or not requester ): return # Always allow the user to query their own profile. if target_user.to_string() == requester.to_string(): return try: requester_rooms = await self.store.get_rooms_for_user(requester.to_string()) target_user_rooms = await self.store.get_rooms_for_user( target_user.to_string() ) # Check if the room lists have no elements in common. if requester_rooms.isdisjoint(target_user_rooms): raise SynapseError(403, "Profile isn't available", Codes.FORBIDDEN) except StoreError as e: if e.code == 404: # This likely means that one of the users doesn't exist, # so we act as if we couldn't find the profile. raise SynapseError(403, "Profile isn't available", Codes.FORBIDDEN) raise synapse-1.100.0/synapse/handlers/push_rules.py000066400000000000000000000136561455622526000214020ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union import attr from synapse.api.errors import SynapseError, UnrecognizedRequestError from synapse.push.clientformat import format_push_rules_for_user from synapse.storage.push_rule import RuleNotFoundException from synapse.synapse_rust.push import get_base_rule_ids from synapse.types import JsonDict, StreamKeyType, UserID if TYPE_CHECKING: from synapse.server import HomeServer BASE_RULE_IDS = get_base_rule_ids() @attr.s(slots=True, frozen=True, auto_attribs=True) class RuleSpec: scope: str template: str rule_id: str attr: Optional[str] class PushRulesHandler: """A class to handle changes in push rules for users.""" def __init__(self, hs: "HomeServer"): self._notifier = hs.get_notifier() self._main_store = hs.get_datastores().main async def set_rule_attr( self, user_id: str, spec: RuleSpec, val: Union[bool, JsonDict] ) -> None: """Set an attribute (enabled or actions) on an existing push rule. Notifies listeners (e.g. sync handler) of the change. Args: user_id: the user for which to modify the push rule. spec: the spec of the push rule to modify. val: the value to change the attribute to. Raises: RuleNotFoundException if the rule being modified doesn't exist. SynapseError(400) if the value is malformed. UnrecognizedRequestError if the attribute to change is unknown. InvalidRuleException if we're trying to change the actions on a rule but the provided actions aren't compliant with the spec. """ if spec.attr not in ("enabled", "actions"): # for the sake of potential future expansion, shouldn't report # 404 in the case of an unknown request so check it corresponds to # a known attribute first. raise UnrecognizedRequestError() namespaced_rule_id = f"global/{spec.template}/{spec.rule_id}" rule_id = spec.rule_id is_default_rule = rule_id.startswith(".") if is_default_rule: if namespaced_rule_id not in BASE_RULE_IDS: raise RuleNotFoundException("Unknown rule %r" % (namespaced_rule_id,)) if spec.attr == "enabled": if isinstance(val, dict) and "enabled" in val: val = val["enabled"] if not isinstance(val, bool): # Legacy fallback # This should *actually* take a dict, but many clients pass # bools directly, so let's not break them. raise SynapseError(400, "Value for 'enabled' must be boolean") await self._main_store.set_push_rule_enabled( user_id, namespaced_rule_id, val, is_default_rule ) elif spec.attr == "actions": if not isinstance(val, dict): raise SynapseError(400, "Value must be a dict") actions = val.get("actions") if not isinstance(actions, list): raise SynapseError(400, "Value for 'actions' must be dict") check_actions(actions) rule_id = spec.rule_id is_default_rule = rule_id.startswith(".") if is_default_rule: if namespaced_rule_id not in BASE_RULE_IDS: raise RuleNotFoundException( "Unknown rule %r" % (namespaced_rule_id,) ) await self._main_store.set_push_rule_actions( user_id, namespaced_rule_id, actions, is_default_rule ) else: raise UnrecognizedRequestError() self.notify_user(user_id) def notify_user(self, user_id: str) -> None: """Notify listeners about a push rule change. Args: user_id: the user ID the change is for. """ stream_id = self._main_store.get_max_push_rules_stream_id() self._notifier.on_new_event( StreamKeyType.PUSH_RULES, stream_id, users=[user_id] ) async def push_rules_for_user( self, user: UserID ) -> Dict[str, Dict[str, List[Dict[str, Any]]]]: """ Push rules aren't really account data, but get formatted as such for /sync. """ user_id = user.to_string() rules_raw = await self._main_store.get_push_rules_for_user(user_id) rules = format_push_rules_for_user(user, rules_raw) return rules def check_actions(actions: List[Union[str, JsonDict]]) -> None: """Check if the given actions are spec compliant. Args: actions: the actions to check. Raises: InvalidRuleException if the rules aren't compliant with the spec. """ if not isinstance(actions, list): raise InvalidRuleException("No actions found") for a in actions: # "dont_notify" and "coalesce" are legacy actions. They are allowed, but # ignored (resulting in no action from the pusher). if a in ["notify", "dont_notify", "coalesce"]: pass elif isinstance(a, dict) and "set_tweak" in a: pass else: raise InvalidRuleException("Unrecognised action %s" % a) class InvalidRuleException(Exception): pass synapse-1.100.0/synapse/handlers/read_marker.py000066400000000000000000000055601455622526000214600ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2017 Vector Creations Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING from synapse.api.constants import ReceiptTypes from synapse.api.errors import SynapseError from synapse.util.async_helpers import Linearizer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReadMarkerHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.account_data_handler = hs.get_account_data_handler() self.read_marker_linearizer = Linearizer(name="read_marker") async def received_client_read_marker( self, room_id: str, user_id: str, event_id: str ) -> None: """Updates the read marker for a given user in a given room if the event ID given is ahead in the stream relative to the current read marker. This uses a notifier to indicate that account data should be sent down /sync if the read marker has changed. """ async with self.read_marker_linearizer.queue((room_id, user_id)): existing_read_marker = await self.store.get_account_data_for_room_and_type( user_id, room_id, ReceiptTypes.FULLY_READ ) should_update = True # Get event ordering, this also ensures we know about the event event_ordering = await self.store.get_event_ordering(event_id) if existing_read_marker: try: old_event_ordering = await self.store.get_event_ordering( existing_read_marker["event_id"] ) except SynapseError: # Old event no longer exists, assume new is ahead. This may # happen if the old event was removed due to retention. pass else: # Only update if the new marker is ahead in the stream should_update = event_ordering > old_event_ordering if should_update: content = {"event_id": event_id} await self.account_data_handler.add_account_data_to_room( user_id, room_id, ReceiptTypes.FULLY_READ, content ) synapse-1.100.0/synapse/handlers/receipts.py000066400000000000000000000313031455622526000210140ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Iterable, List, Optional, Sequence, Tuple from synapse.api.constants import EduTypes, ReceiptTypes from synapse.appservice import ApplicationService from synapse.streams import EventSource from synapse.types import ( JsonDict, JsonMapping, MultiWriterStreamToken, ReadReceipt, StreamKeyType, UserID, get_domain_from_id, ) if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ReceiptsHandler: def __init__(self, hs: "HomeServer"): self.notifier = hs.get_notifier() self.server_name = hs.config.server.server_name self.store = hs.get_datastores().main self.event_auth_handler = hs.get_event_auth_handler() self.event_handler = hs.get_event_handler() self._storage_controllers = hs.get_storage_controllers() self.hs = hs # We only need to poke the federation sender explicitly if its on the # same instance. Other federation sender instances will get notified by # `synapse.app.generic_worker.FederationSenderHandler` when it sees it # in the receipts stream. self.federation_sender = None if hs.should_send_federation(): self.federation_sender = hs.get_federation_sender() # If we can handle the receipt EDUs we do so, otherwise we route them # to the appropriate worker. if hs.get_instance_name() in hs.config.worker.writers.receipts: hs.get_federation_registry().register_edu_handler( EduTypes.RECEIPT, self._received_remote_receipt ) else: hs.get_federation_registry().register_instances_for_edu( EduTypes.RECEIPT, hs.config.worker.writers.receipts, ) self.clock = self.hs.get_clock() self.state = hs.get_state_handler() async def _received_remote_receipt(self, origin: str, content: JsonDict) -> None: """Called when we receive an EDU of type m.receipt from a remote HS.""" receipts = [] for room_id, room_values in content.items(): # If we're not in the room just ditch the event entirely. This is # probably an old server that has come back and thinks we're still in # the room (or we've been rejoined to the room by a state reset). is_in_room = await self.event_auth_handler.is_host_in_room( room_id, self.server_name ) if not is_in_room: logger.info( "Ignoring receipt for room %r from server %s as we're not in the room", room_id, origin, ) continue # Let's check that the origin server is in the room before accepting the receipt. # We don't want to block waiting on a partial state so take an # approximation if needed. domains = await self._storage_controllers.state.get_current_hosts_in_room_or_partial_state_approximation( room_id ) if origin not in domains: logger.info( "Ignoring receipt for room %r from server %s as they're not in the room", room_id, origin, ) continue for receipt_type, users in room_values.items(): for user_id, user_values in users.items(): if get_domain_from_id(user_id) != origin: logger.info( "Received receipt for user %r from server %s, ignoring", user_id, origin, ) continue # Check if these receipts apply to a thread. data = user_values.get("data", {}) thread_id = data.get("thread_id") # If the thread ID is invalid, consider it missing. if not isinstance(thread_id, str): thread_id = None receipts.append( ReadReceipt( room_id=room_id, receipt_type=receipt_type, user_id=user_id, event_ids=user_values["event_ids"], thread_id=thread_id, data=data, ) ) await self._handle_new_receipts(receipts) async def _handle_new_receipts(self, receipts: List[ReadReceipt]) -> bool: """Takes a list of receipts, stores them and informs the notifier.""" receipts_persisted: List[ReadReceipt] = [] for receipt in receipts: stream_id = await self.store.insert_receipt( receipt.room_id, receipt.receipt_type, receipt.user_id, receipt.event_ids, receipt.thread_id, receipt.data, ) if stream_id is None: # stream_id will be None if this receipt is 'old' continue receipts_persisted.append(receipt) if not receipts_persisted: # no new receipts return False max_batch_id = self.store.get_max_receipt_stream_id() affected_room_ids = list({r.room_id for r in receipts_persisted}) self.notifier.on_new_event( StreamKeyType.RECEIPT, max_batch_id, rooms=affected_room_ids ) # Note that the min here shouldn't be relied upon to be accurate. await self.hs.get_pusherpool().on_new_receipts( {r.user_id for r in receipts_persisted} ) return True async def received_client_receipt( self, room_id: str, receipt_type: str, user_id: UserID, event_id: str, thread_id: Optional[str], ) -> None: """Called when a client tells us a local user has read up to the given event_id in the room. """ # Ensure the room/event exists, this will raise an error if the user # cannot view the event. if not await self.event_handler.get_event(user_id, room_id, event_id): return receipt = ReadReceipt( room_id=room_id, receipt_type=receipt_type, user_id=user_id.to_string(), event_ids=[event_id], thread_id=thread_id, data={"ts": int(self.clock.time_msec())}, ) is_new = await self._handle_new_receipts([receipt]) if not is_new: return if self.federation_sender and receipt_type != ReceiptTypes.READ_PRIVATE: await self.federation_sender.send_read_receipt(receipt) class ReceiptEventSource(EventSource[MultiWriterStreamToken, JsonMapping]): def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.config = hs.config @staticmethod def filter_out_private_receipts( rooms: Sequence[JsonMapping], user_id: str ) -> List[JsonMapping]: """ Filters a list of serialized receipts (as returned by /sync and /initialSync) and removes private read receipts of other users. This operates on the return value of get_linearized_receipts_for_rooms(), which is wrapped in a cache. Care must be taken to ensure that the input values are not modified. Args: rooms: A list of mappings, each mapping has a `content` field, which is a map of event ID -> receipt type -> user ID -> receipt information. Returns: The same as rooms, but filtered. """ result: List[JsonMapping] = [] # Iterate through each room's receipt content. for room in rooms: # The receipt content with other user's private read receipts removed. content = {} # Iterate over each event ID / receipts for that event. for event_id, orig_event_content in room.get("content", {}).items(): event_content = orig_event_content # If there are private read receipts, additional logic is necessary. if ReceiptTypes.READ_PRIVATE in event_content: # Make a copy without private read receipts to avoid leaking # other user's private read receipts.. event_content = { receipt_type: receipt_value for receipt_type, receipt_value in event_content.items() if receipt_type != ReceiptTypes.READ_PRIVATE } # Copy the current user's private read receipt from the # original content, if it exists. user_private_read_receipt = orig_event_content[ ReceiptTypes.READ_PRIVATE ].get(user_id, None) if user_private_read_receipt: event_content[ReceiptTypes.READ_PRIVATE] = { user_id: user_private_read_receipt } # Include the event if there is at least one non-private read # receipt or the current user has a private read receipt. if event_content: content[event_id] = event_content # Include the event if there is at least one non-private read receipt # or the current user has a private read receipt. if content: # Build a new event to avoid mutating the cache. new_room = {k: v for k, v in room.items() if k != "content"} new_room["content"] = content result.append(new_room) return result async def get_new_events( self, user: UserID, from_key: MultiWriterStreamToken, limit: int, room_ids: Iterable[str], is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[JsonMapping], MultiWriterStreamToken]: to_key = self.get_current_key() if from_key == to_key: return [], to_key events = await self.store.get_linearized_receipts_for_rooms( room_ids, from_key=from_key, to_key=to_key ) events = ReceiptEventSource.filter_out_private_receipts( events, user.to_string() ) return events, to_key async def get_new_events_as( self, from_key: MultiWriterStreamToken, to_key: MultiWriterStreamToken, service: ApplicationService, ) -> Tuple[List[JsonMapping], MultiWriterStreamToken]: """Returns a set of new read receipt events that an appservice may be interested in. Args: from_key: the stream position at which events should be fetched from to_key: the stream position up to which events should be fetched to service: The appservice which may be interested Returns: A two-tuple containing the following: * A list of json dictionaries derived from read receipts that the appservice may be interested in. * The current read receipt stream token. """ if from_key == to_key: return [], to_key # Fetch all read receipts for all rooms, up to a limit of 100. This is ordered # by most recent. rooms_to_events = await self.store.get_linearized_receipts_for_all_rooms( from_key=from_key, to_key=to_key ) # Then filter down to rooms that the AS can read events = [] for room_id, event in rooms_to_events.items(): if not await service.is_interested_in_room(room_id, self.store): continue events.append(event) return events, to_key def get_current_key(self) -> MultiWriterStreamToken: return self.store.get_max_receipt_stream_id() synapse-1.100.0/synapse/handlers/register.py000066400000000000000000001232271455622526000210310ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright 2014 - 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """Contains functions for registering clients.""" import logging from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple from prometheus_client import Counter from typing_extensions import TypedDict from synapse import types from synapse.api.constants import ( MAX_USERID_LENGTH, EventContentFields, EventTypes, JoinRules, LoginType, ) from synapse.api.errors import ( AuthError, Codes, ConsentNotGivenError, InvalidClientTokenError, SynapseError, ) from synapse.appservice import ApplicationService from synapse.config.server import is_threepid_reserved from synapse.handlers.device import DeviceHandler from synapse.http.servlet import assert_params_in_dict from synapse.replication.http.login import RegisterDeviceReplicationServlet from synapse.replication.http.register import ( ReplicationPostRegisterActionsServlet, ReplicationRegisterServlet, ) from synapse.spam_checker_api import RegistrationBehaviour from synapse.types import GUEST_USER_ID_PATTERN, RoomAlias, UserID, create_requester from synapse.types.state import StateFilter if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) registration_counter = Counter( "synapse_user_registrations_total", "Number of new users registered (since restart)", ["guest", "shadow_banned", "auth_provider"], ) login_counter = Counter( "synapse_user_logins_total", "Number of user logins (since restart)", ["guest", "auth_provider"], ) def init_counters_for_auth_provider(auth_provider_id: str) -> None: """Ensure the prometheus counters for the given auth provider are initialised This fixes a problem where the counters are not reported for a given auth provider until the user first logs in/registers. """ for is_guest in (True, False): login_counter.labels(guest=is_guest, auth_provider=auth_provider_id) for shadow_banned in (True, False): registration_counter.labels( guest=is_guest, shadow_banned=shadow_banned, auth_provider=auth_provider_id, ) class LoginDict(TypedDict): device_id: str access_token: str valid_until_ms: Optional[int] refresh_token: Optional[str] class RegistrationHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.clock = hs.get_clock() self.hs = hs self.auth = hs.get_auth() self.auth_blocking = hs.get_auth_blocking() self._auth_handler = hs.get_auth_handler() self.profile_handler = hs.get_profile_handler() self.user_directory_handler = hs.get_user_directory_handler() self.identity_handler = self.hs.get_identity_handler() self.ratelimiter = hs.get_registration_ratelimiter() self.macaroon_gen = hs.get_macaroon_generator() self._account_validity_handler = hs.get_account_validity_handler() self._user_consent_version = self.hs.config.consent.user_consent_version self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self._server_name = hs.hostname self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker if hs.config.worker.worker_app: self._register_client = ReplicationRegisterServlet.make_client(hs) self._register_device_client = RegisterDeviceReplicationServlet.make_client( hs ) self._post_registration_client = ( ReplicationPostRegisterActionsServlet.make_client(hs) ) else: self.device_handler = hs.get_device_handler() self._register_device_client = self.register_device_inner self.pusher_pool = hs.get_pusherpool() self.session_lifetime = hs.config.registration.session_lifetime self.nonrefreshable_access_token_lifetime = ( hs.config.registration.nonrefreshable_access_token_lifetime ) self.refreshable_access_token_lifetime = ( hs.config.registration.refreshable_access_token_lifetime ) self.refresh_token_lifetime = hs.config.registration.refresh_token_lifetime init_counters_for_auth_provider("") async def check_username( self, localpart: str, guest_access_token: Optional[str] = None, assigned_user_id: Optional[str] = None, inhibit_user_in_use_error: bool = False, ) -> None: if types.contains_invalid_mxid_characters(localpart): raise SynapseError( 400, "User ID can only contain characters a-z, 0-9, or '=_-./+'", Codes.INVALID_USERNAME, ) if not localpart: raise SynapseError(400, "User ID cannot be empty", Codes.INVALID_USERNAME) if localpart[0] == "_": raise SynapseError( 400, "User ID may not begin with _", Codes.INVALID_USERNAME ) user = UserID(localpart, self.hs.hostname) user_id = user.to_string() if assigned_user_id: if user_id == assigned_user_id: return else: raise SynapseError( 400, "A different user ID has already been registered for this session", ) self.check_user_id_not_appservice_exclusive(user_id) if len(user_id) > MAX_USERID_LENGTH: raise SynapseError( 400, "User ID may not be longer than %s characters" % (MAX_USERID_LENGTH,), Codes.INVALID_USERNAME, ) users = await self.store.get_users_by_id_case_insensitive(user_id) if users: if not inhibit_user_in_use_error and not guest_access_token: raise SynapseError( 400, "User ID already taken.", errcode=Codes.USER_IN_USE ) if guest_access_token: user_data = await self.auth.get_user_by_access_token(guest_access_token) if not user_data.is_guest or user_data.user.localpart != localpart: raise AuthError( 403, "Cannot register taken user ID without valid guest " "credentials for that user.", errcode=Codes.FORBIDDEN, ) if guest_access_token is None and GUEST_USER_ID_PATTERN.fullmatch(localpart): raise SynapseError( 400, "Numeric user IDs are reserved for guest users.", errcode=Codes.INVALID_USERNAME, ) async def register_user( self, localpart: Optional[str] = None, password_hash: Optional[str] = None, guest_access_token: Optional[str] = None, make_guest: bool = False, admin: bool = False, threepid: Optional[dict] = None, user_type: Optional[str] = None, default_display_name: Optional[str] = None, address: Optional[str] = None, bind_emails: Optional[Iterable[str]] = None, by_admin: bool = False, user_agent_ips: Optional[List[Tuple[str, str]]] = None, auth_provider_id: Optional[str] = None, approved: bool = False, ) -> str: """Registers a new client on the server. Args: localpart: The local part of the user ID to register. If None, one will be generated. password_hash: The hashed password to assign to this user so they can login again. This can be None which means they cannot login again via a password (e.g. the user is an application service user). guest_access_token: The access token used when this was a guest account. make_guest: True if the the new user should be guest, false to add a regular user account. admin: True if the user should be registered as a server admin. threepid: The threepid used for registering, if any. user_type: type of user. One of the values from api.constants.UserTypes, or None for a normal user. default_display_name: if set, the new user's displayname will be set to this. Defaults to 'localpart'. address: the IP address used to perform the registration. bind_emails: list of emails to bind to this account. by_admin: True if this registration is being made via the admin api, otherwise False. user_agent_ips: Tuples of user-agents and IP addresses used during the registration process. auth_provider_id: The SSO IdP the user used, if any. approved: True if the new user should be considered already approved by an administrator. Returns: The registered user_id. Raises: SynapseError if there was a problem registering. """ bind_emails = bind_emails or [] await self.check_registration_ratelimit(address) result = await self._spam_checker_module_callbacks.check_registration_for_spam( threepid, localpart, user_agent_ips or [], auth_provider_id=auth_provider_id, ) if result == RegistrationBehaviour.DENY: logger.info( "Blocked registration of %r", localpart, ) # We return a 429 to make it not obvious that they've been # denied. raise SynapseError(429, "Rate limited") shadow_banned = result == RegistrationBehaviour.SHADOW_BAN if shadow_banned: logger.info( "Shadow banning registration of %r", localpart, ) # do not check_auth_blocking if the call is coming through the Admin API if not by_admin: await self.auth_blocking.check_auth_blocking(threepid=threepid) if localpart is not None: await self.check_username(localpart, guest_access_token=guest_access_token) was_guest = guest_access_token is not None user = UserID(localpart, self.hs.hostname) user_id = user.to_string() if was_guest: # If the user was a guest then they already have a profile default_display_name = None elif default_display_name is None: default_display_name = localpart await self.register_with_store( user_id=user_id, password_hash=password_hash, was_guest=was_guest, make_guest=make_guest, create_profile_with_displayname=default_display_name, admin=admin, user_type=user_type, address=address, shadow_banned=shadow_banned, approved=approved, ) profile = await self.store.get_profileinfo(user) await self.user_directory_handler.handle_local_profile_change( user_id, profile ) else: # autogen a sequential user ID fail_count = 0 # If a default display name is not given, generate one. generate_display_name = default_display_name is None # This breaks on successful registration *or* errors after 10 failures. while True: # Fail after being unable to find a suitable ID a few times if fail_count > 10: raise SynapseError(500, "Unable to find a suitable guest user ID") generated_localpart = await self.store.generate_user_id() user = UserID(generated_localpart, self.hs.hostname) user_id = user.to_string() self.check_user_id_not_appservice_exclusive(user_id) if generate_display_name: default_display_name = generated_localpart try: await self.register_with_store( user_id=user_id, password_hash=password_hash, make_guest=make_guest, create_profile_with_displayname=default_display_name, address=address, shadow_banned=shadow_banned, ) # Successfully registered break except SynapseError: # if user id is taken, just generate another fail_count += 1 registration_counter.labels( guest=make_guest, shadow_banned=shadow_banned, auth_provider=(auth_provider_id or ""), ).inc() # If the user does not need to consent at registration, auto-join any # configured rooms. if not self.hs.config.consent.user_consent_at_registration: if ( not self.hs.config.registration.auto_join_rooms_for_guests and make_guest ): logger.info( "Skipping auto-join for %s because auto-join for guests is disabled", user_id, ) else: await self._auto_join_rooms(user_id) else: logger.info( "Skipping auto-join for %s because consent is required at registration", user_id, ) # Bind any specified emails to this account current_time = self.hs.get_clock().time_msec() for email in bind_emails: # generate threepid dict threepid_dict = { "medium": "email", "address": email, "validated_at": current_time, } # Bind email to new account await self._register_email_threepid(user_id, threepid_dict, None) return user_id async def _create_and_join_rooms(self, user_id: str) -> None: """ Create the auto-join rooms and join or invite the user to them. This should only be called when the first "real" user registers. Args: user_id: The user to join """ # Getting the handlers during init gives a dependency loop. room_creation_handler = self.hs.get_room_creation_handler() room_member_handler = self.hs.get_room_member_handler() # Generate a stub for how the rooms will be configured. stub_config = { "preset": self.hs.config.registration.autocreate_auto_join_room_preset, } # If the configuration provides a user ID to create rooms with, use # that instead of the first user registered. requires_join = False if self.hs.config.registration.auto_join_user_id: fake_requester = create_requester( self.hs.config.registration.auto_join_user_id, authenticated_entity=self._server_name, ) # If the room requires an invite, add the user to the list of invites. if self.hs.config.registration.auto_join_room_requires_invite: stub_config["invite"] = [user_id] # If the room is being created by a different user, the first user # registered needs to join it. Note that in the case of an invitation # being necessary this will occur after the invite was sent. requires_join = True else: fake_requester = create_requester( user_id, authenticated_entity=self._server_name ) # Choose whether to federate the new room. if not self.hs.config.registration.autocreate_auto_join_rooms_federated: stub_config["creation_content"] = {EventContentFields.FEDERATE: False} for r in self.hs.config.registration.auto_join_rooms: logger.info("Auto-joining %s to %s", user_id, r) try: room_alias = RoomAlias.from_string(r) if self.hs.hostname != room_alias.domain: # If the alias is remote, try to join the room. This might fail # because the room might be invite only, but we don't have any local # user in the room to invite this one with, so at this point that's # the best we can do. logger.info( "Cannot automatically create room with alias %s as it isn't" " local, trying to join the room instead", r, ) ( room, remote_room_hosts, ) = await room_member_handler.lookup_room_alias(room_alias) room_id = room.to_string() await room_member_handler.update_membership( requester=create_requester( user_id, authenticated_entity=self._server_name ), target=UserID.from_string(user_id), room_id=room_id, remote_room_hosts=remote_room_hosts, action="join", ratelimit=False, ) else: # A shallow copy is OK here since the only key that is # modified is room_alias_name. config = stub_config.copy() # create room expects the localpart of the room alias config["room_alias_name"] = room_alias.localpart room_id, _, _ = await room_creation_handler.create_room( fake_requester, config=config, ratelimit=False, ) # If the room does not require an invite, but another user # created it, then ensure the first user joins it. if requires_join: await room_member_handler.update_membership( requester=create_requester( user_id, authenticated_entity=self._server_name ), target=UserID.from_string(user_id), room_id=room_id, # Since it was just created, there are no remote hosts. remote_room_hosts=[], action="join", ratelimit=False, ) except Exception as e: logger.error("Failed to join new user to %r: %r", r, e) async def _join_rooms(self, user_id: str) -> None: """ Join or invite the user to the auto-join rooms. Args: user_id: The user to join """ room_member_handler = self.hs.get_room_member_handler() for r in self.hs.config.registration.auto_join_rooms: logger.info("Auto-joining %s to %s", user_id, r) try: room_alias = RoomAlias.from_string(r) if RoomAlias.is_valid(r): ( room, remote_room_hosts, ) = await room_member_handler.lookup_room_alias(room_alias) room_id = room.to_string() else: raise SynapseError( 400, "%s was not legal room ID or room alias" % (r,) ) # Calculate whether the room requires an invite or can be # joined directly. By default, we consider the room as requiring an # invite if the homeserver is in the room (unless told otherwise by the # join rules). Otherwise we consider it as being joinable, at the risk of # failing to join, but in this case there's little more we can do since # we don't have a local user in the room to craft up an invite with. requires_invite = await self.store.is_host_joined( room_id, self._server_name, ) if requires_invite: # If the server is in the room, check if the room is public. state = await self._storage_controllers.state.get_current_state_ids( room_id, StateFilter.from_types([(EventTypes.JoinRules, "")]) ) event_id = state.get((EventTypes.JoinRules, "")) if event_id: join_rules_event = await self.store.get_event( event_id, allow_none=True ) if join_rules_event: join_rule = join_rules_event.content.get("join_rule", None) requires_invite = ( join_rule and join_rule != JoinRules.PUBLIC ) # Send the invite, if necessary. if requires_invite: # If an invite is required, there must be a auto-join user ID. assert self.hs.config.registration.auto_join_user_id await room_member_handler.update_membership( requester=create_requester( self.hs.config.registration.auto_join_user_id, authenticated_entity=self._server_name, ), target=UserID.from_string(user_id), room_id=room_id, remote_room_hosts=remote_room_hosts, action="invite", ratelimit=False, ) # Send the join. await room_member_handler.update_membership( requester=create_requester( user_id, authenticated_entity=self._server_name ), target=UserID.from_string(user_id), room_id=room_id, remote_room_hosts=remote_room_hosts, action="join", ratelimit=False, ) except ConsentNotGivenError as e: # Technically not necessary to pull out this error though # moving away from bare excepts is a good thing to do. logger.error("Failed to join new user to %r: %r", r, e) except Exception as e: logger.error("Failed to join new user to %r: %r", r, e) async def _auto_join_rooms(self, user_id: str) -> None: """Automatically joins users to auto join rooms - creating the room in the first place if the user is the first to be created. Args: user_id: The user to join """ # If there are no rooms to auto-join, just bail. if not self.hs.config.registration.auto_join_rooms: return # auto-join the user to any rooms we're supposed to dump them into # try to create the room if we're the first real user on the server. Note # that an auto-generated support or bot user is not a real user and will never be # the user to create the room should_auto_create_rooms = False if ( self.hs.config.registration.autocreate_auto_join_rooms and await self.store.is_real_user(user_id) ): count = await self.store.count_real_users() should_auto_create_rooms = count == 1 if should_auto_create_rooms: await self._create_and_join_rooms(user_id) else: await self._join_rooms(user_id) async def post_consent_actions(self, user_id: str) -> None: """A series of registration actions that can only be carried out once consent has been granted Args: user_id: The user to join """ await self._auto_join_rooms(user_id) async def appservice_register(self, user_localpart: str, as_token: str) -> str: user = UserID(user_localpart, self.hs.hostname) user_id = user.to_string() service = self.store.get_app_service_by_token(as_token) if not service: raise InvalidClientTokenError() if not service.is_interested_in_user(user_id): raise SynapseError( 400, "Invalid user localpart for this application service.", errcode=Codes.EXCLUSIVE, ) service_id = service.id if service.is_exclusive_user(user_id) else None self.check_user_id_not_appservice_exclusive(user_id, allowed_appservice=service) await self.register_with_store( user_id=user_id, password_hash="", appservice_id=service_id, create_profile_with_displayname=user.localpart, ) return user_id def check_user_id_not_appservice_exclusive( self, user_id: str, allowed_appservice: Optional[ApplicationService] = None ) -> None: # don't allow people to register the server notices mxid if self._server_notices_mxid is not None: if user_id == self._server_notices_mxid: raise SynapseError( 400, "This user ID is reserved.", errcode=Codes.EXCLUSIVE ) # valid user IDs must not clash with any user ID namespaces claimed by # application services. services = self.store.get_app_services() interested_services = [ s for s in services if s.is_interested_in_user(user_id) and s != allowed_appservice ] for service in interested_services: if service.is_exclusive_user(user_id): raise SynapseError( 400, "This user ID is reserved by an application service.", errcode=Codes.EXCLUSIVE, ) async def check_registration_ratelimit(self, address: Optional[str]) -> None: """A simple helper method to check whether the registration rate limit has been hit for a given IP address Args: address: the IP address used to perform the registration. If this is None, no ratelimiting will be performed. Raises: LimitExceededError: If the rate limit has been exceeded. """ if not address: return await self.ratelimiter.ratelimit(None, address) async def register_with_store( self, user_id: str, password_hash: Optional[str] = None, was_guest: bool = False, make_guest: bool = False, appservice_id: Optional[str] = None, create_profile_with_displayname: Optional[str] = None, admin: bool = False, user_type: Optional[str] = None, address: Optional[str] = None, shadow_banned: bool = False, approved: bool = False, ) -> None: """Register user in the datastore. Args: user_id: The desired user ID to register. password_hash: Optional. The password hash for this user. was_guest: Optional. Whether this is a guest account being upgraded to a non-guest account. make_guest: True if the the new user should be guest, false to add a regular user account. appservice_id: The ID of the appservice registering the user. create_profile_with_displayname: Optionally create a profile for the user, setting their displayname to the given value admin: is an admin user? user_type: type of user. One of the values from api.constants.UserTypes, or None for a normal user. address: the IP address used to perform the registration. shadow_banned: Whether to shadow-ban the user approved: Whether to mark the user as approved by an administrator """ if self.hs.config.worker.worker_app: await self._register_client( user_id=user_id, password_hash=password_hash, was_guest=was_guest, make_guest=make_guest, appservice_id=appservice_id, create_profile_with_displayname=create_profile_with_displayname, admin=admin, user_type=user_type, address=address, shadow_banned=shadow_banned, approved=approved, ) else: await self.store.register_user( user_id=user_id, password_hash=password_hash, was_guest=was_guest, make_guest=make_guest, appservice_id=appservice_id, create_profile_with_displayname=create_profile_with_displayname, admin=admin, user_type=user_type, shadow_banned=shadow_banned, approved=approved, ) # Only call the account validity module(s) on the main process, to avoid # repeating e.g. database writes on all of the workers. await self._account_validity_handler.on_user_registration(user_id) async def register_device( self, user_id: str, device_id: Optional[str], initial_display_name: Optional[str], is_guest: bool = False, is_appservice_ghost: bool = False, auth_provider_id: Optional[str] = None, should_issue_refresh_token: bool = False, auth_provider_session_id: Optional[str] = None, ) -> Tuple[str, str, Optional[int], Optional[str]]: """Register a device for a user and generate an access token. The access token will be limited by the homeserver's session_lifetime config. Args: user_id: full canonical @user:id device_id: The device ID to check, or None to generate a new one. initial_display_name: An optional display name for the device. is_guest: Whether this is a guest account auth_provider_id: The SSO IdP the user used, if any. should_issue_refresh_token: Whether it should also issue a refresh token auth_provider_session_id: The session ID received during login from the SSO IdP. Returns: Tuple of device ID, access token, access token expiration time and refresh token """ res = await self._register_device_client( user_id=user_id, device_id=device_id, initial_display_name=initial_display_name, is_guest=is_guest, is_appservice_ghost=is_appservice_ghost, should_issue_refresh_token=should_issue_refresh_token, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) login_counter.labels( guest=is_guest, auth_provider=(auth_provider_id or ""), ).inc() return ( res["device_id"], res["access_token"], res["valid_until_ms"], res["refresh_token"], ) async def register_device_inner( self, user_id: str, device_id: Optional[str], initial_display_name: Optional[str], is_guest: bool = False, is_appservice_ghost: bool = False, should_issue_refresh_token: bool = False, auth_provider_id: Optional[str] = None, auth_provider_session_id: Optional[str] = None, ) -> LoginDict: """Helper for register_device Does the bits that need doing on the main process. Not for use outside this class and RegisterDeviceReplicationServlet. """ assert not self.hs.config.worker.worker_app now_ms = self.clock.time_msec() access_token_expiry = None if self.session_lifetime is not None: if is_guest: raise Exception( "session_lifetime is not currently implemented for guest access" ) access_token_expiry = now_ms + self.session_lifetime if self.nonrefreshable_access_token_lifetime is not None: if access_token_expiry is not None: # Don't allow the non-refreshable access token to outlive the # session. access_token_expiry = min( now_ms + self.nonrefreshable_access_token_lifetime, access_token_expiry, ) else: access_token_expiry = now_ms + self.nonrefreshable_access_token_lifetime refresh_token = None refresh_token_id = None # This can only run on the main process. assert isinstance(self.device_handler, DeviceHandler) registered_device_id = await self.device_handler.check_device_registered( user_id, device_id, initial_display_name, auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) if is_guest: assert access_token_expiry is None access_token = self.macaroon_gen.generate_guest_access_token(user_id) else: if should_issue_refresh_token: # A refreshable access token lifetime must be configured # since we're told to issue a refresh token (the caller checks # that this value is set before setting this flag). assert self.refreshable_access_token_lifetime is not None # Set the expiry time of the refreshable access token access_token_expiry = now_ms + self.refreshable_access_token_lifetime # Set the refresh token expiry time (if configured) refresh_token_expiry = None if self.refresh_token_lifetime is not None: refresh_token_expiry = now_ms + self.refresh_token_lifetime # Set an ultimate session expiry time (if configured) ultimate_session_expiry_ts = None if self.session_lifetime is not None: ultimate_session_expiry_ts = now_ms + self.session_lifetime # Also ensure that the issued tokens don't outlive the # session. # (It would be weird to configure a homeserver with a shorter # session lifetime than token lifetime, but may as well handle # it.) access_token_expiry = min( access_token_expiry, ultimate_session_expiry_ts ) if refresh_token_expiry is not None: refresh_token_expiry = min( refresh_token_expiry, ultimate_session_expiry_ts ) ( refresh_token, refresh_token_id, ) = await self._auth_handler.create_refresh_token_for_user_id( user_id, device_id=registered_device_id, expiry_ts=refresh_token_expiry, ultimate_session_expiry_ts=ultimate_session_expiry_ts, ) access_token = await self._auth_handler.create_access_token_for_user_id( user_id, device_id=registered_device_id, valid_until_ms=access_token_expiry, is_appservice_ghost=is_appservice_ghost, refresh_token_id=refresh_token_id, ) return { "device_id": registered_device_id, "access_token": access_token, "valid_until_ms": access_token_expiry, "refresh_token": refresh_token, } async def post_registration_actions( self, user_id: str, auth_result: dict, access_token: Optional[str] ) -> None: """A user has completed registration Args: user_id: The user ID that consented auth_result: The authenticated credentials of the newly registered user. access_token: The access token of the newly logged in device, or None if `inhibit_login` enabled. """ # TODO: 3pid registration can actually happen on the workers. Consider # refactoring it. if self.hs.config.worker.worker_app: await self._post_registration_client( user_id=user_id, auth_result=auth_result, access_token=access_token ) return if auth_result and LoginType.EMAIL_IDENTITY in auth_result: threepid = auth_result[LoginType.EMAIL_IDENTITY] # Necessary due to auth checks prior to the threepid being # written to the db if is_threepid_reserved( self.hs.config.server.mau_limits_reserved_threepids, threepid ): await self.store.upsert_monthly_active_user(user_id) await self._register_email_threepid(user_id, threepid, access_token) if auth_result and LoginType.MSISDN in auth_result: threepid = auth_result[LoginType.MSISDN] await self._register_msisdn_threepid(user_id, threepid) if auth_result and LoginType.TERMS in auth_result: # The terms type should only exist if consent is enabled. assert self._user_consent_version is not None await self._on_user_consented(user_id, self._user_consent_version) async def _on_user_consented(self, user_id: str, consent_version: str) -> None: """A user consented to the terms on registration Args: user_id: The user ID that consented. consent_version: version of the policy the user has consented to. """ logger.info("%s has consented to the privacy policy", user_id) await self.store.user_set_consent_version(user_id, consent_version) await self.post_consent_actions(user_id) async def _register_email_threepid( self, user_id: str, threepid: dict, token: Optional[str] ) -> None: """Add an email address as a 3pid identifier Also adds an email pusher for the email address, if configured in the HS config Must be called on master. Args: user_id: id of user threepid: m.login.email.identity auth response token: access_token for the user, or None if not logged in. """ reqd = ("medium", "address", "validated_at") if any(x not in threepid for x in reqd): # This will only happen if the ID server returns a malformed response logger.info("Can't add incomplete 3pid") return await self._auth_handler.add_threepid( user_id, threepid["medium"], threepid["address"], threepid["validated_at"], ) # And we add an email pusher for them by default, but only # if email notifications are enabled (so people don't start # getting mail spam where they weren't before if email # notifs are set up on a homeserver) if ( self.hs.config.email.email_enable_notifs and self.hs.config.email.email_notif_for_new_users and token ): # Pull the ID of the access token back out of the db # It would really make more sense for this to be passed # up when the access token is saved, but that's quite an # invasive change I'd rather do separately. user_tuple = await self.store.get_user_by_access_token(token) # The token better still exist. assert user_tuple device_id = user_tuple.device_id await self.pusher_pool.add_or_update_pusher( user_id=user_id, device_id=device_id, kind="email", app_id="m.email", app_display_name="Email Notifications", device_display_name=threepid["address"], pushkey=threepid["address"], lang=None, data={}, ) async def _register_msisdn_threepid(self, user_id: str, threepid: dict) -> None: """Add a phone number as a 3pid identifier Must be called on master. Args: user_id: id of user threepid: m.login.msisdn auth response """ try: assert_params_in_dict(threepid, ["medium", "address", "validated_at"]) except SynapseError as ex: if ex.errcode == Codes.MISSING_PARAM: # This will only happen if the ID server returns a malformed response logger.info("Can't add incomplete 3pid") return None raise await self._auth_handler.add_threepid( user_id, threepid["medium"], threepid["address"], threepid["validated_at"], ) synapse-1.100.0/synapse/handlers/relations.py000066400000000000000000000557151455622526000212130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import enum import logging from typing import ( TYPE_CHECKING, Collection, Dict, FrozenSet, Iterable, List, Mapping, Optional, Sequence, ) import attr from synapse.api.constants import Direction, EventTypes, RelationTypes from synapse.api.errors import SynapseError from synapse.events import EventBase, relation_from_event from synapse.events.utils import SerializeEventConfig from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.logging.opentracing import trace from synapse.storage.databases.main.relations import ThreadsNextBatch, _RelatedEvent from synapse.streams.config import PaginationConfig from synapse.types import JsonDict, Requester, UserID from synapse.util.async_helpers import gather_results from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class ThreadsListInclude(str, enum.Enum): """Valid values for the 'include' flag of /threads.""" all = "all" participated = "participated" @attr.s(slots=True, frozen=True, auto_attribs=True) class _ThreadAggregation: # The latest event in the thread. latest_event: EventBase # The total number of events in the thread. count: int # True if the current user has sent an event to the thread. current_user_participated: bool @attr.s(slots=True, auto_attribs=True) class BundledAggregations: """ The bundled aggregations for an event. Some values require additional processing during serialization. """ references: Optional[JsonDict] = None replace: Optional[EventBase] = None thread: Optional[_ThreadAggregation] = None def __bool__(self) -> bool: return bool(self.references or self.replace or self.thread) class RelationsHandler: def __init__(self, hs: "HomeServer"): self._main_store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._auth = hs.get_auth() self._clock = hs.get_clock() self._event_handler = hs.get_event_handler() self._event_serializer = hs.get_event_client_serializer() self._event_creation_handler = hs.get_event_creation_handler() async def get_relations( self, requester: Requester, event_id: str, room_id: str, pagin_config: PaginationConfig, recurse: bool, include_original_event: bool, relation_type: Optional[str] = None, event_type: Optional[str] = None, ) -> JsonDict: """Get related events of a event, ordered by topological ordering. TODO Accept a PaginationConfig instead of individual pagination parameters. Args: requester: The user requesting the relations. event_id: Fetch events that relate to this event ID. room_id: The room the event belongs to. pagin_config: The pagination config rules to apply, if any. recurse: Whether to recursively find relations. include_original_event: Whether to include the parent event. relation_type: Only fetch events with this relation type, if given. event_type: Only fetch events with this event type, if given. Returns: The pagination chunk. """ user_id = requester.user.to_string() # TODO Properly handle a user leaving a room. (_, member_event_id) = await self._auth.check_user_in_room_or_world_readable( room_id, requester, allow_departed_users=True ) # This gets the original event and checks that a) the event exists and # b) the user is allowed to view it. event = await self._event_handler.get_event(requester.user, room_id, event_id) if event is None: raise SynapseError(404, "Unknown parent event.") # Note that ignored users are not passed into get_relations_for_event # below. Ignored users are handled in filter_events_for_client (and by # not passing them in here we should get a better cache hit rate). related_events, next_token = await self._main_store.get_relations_for_event( event_id=event_id, event=event, room_id=room_id, relation_type=relation_type, event_type=event_type, limit=pagin_config.limit, direction=pagin_config.direction, from_token=pagin_config.from_token, to_token=pagin_config.to_token, recurse=recurse, ) events = await self._main_store.get_events_as_list( [e.event_id for e in related_events] ) events = await filter_events_for_client( self._storage_controllers, user_id, events, is_peeking=(member_event_id is None), ) # The relations returned for the requested event do include their # bundled aggregations. aggregations = await self.get_bundled_aggregations( events, requester.user.to_string() ) now = self._clock.time_msec() serialize_options = SerializeEventConfig(requester=requester) return_value: JsonDict = { "chunk": await self._event_serializer.serialize_events( events, now, bundle_aggregations=aggregations, config=serialize_options, ), } if recurse: return_value["recursion_depth"] = 3 if include_original_event: # Do not bundle aggregations when retrieving the original event because # we want the content before relations are applied to it. return_value[ "original_event" ] = await self._event_serializer.serialize_event( event, now, bundle_aggregations=None, config=serialize_options, ) if next_token: return_value["next_batch"] = await next_token.to_string(self._main_store) if pagin_config.from_token: return_value["prev_batch"] = await pagin_config.from_token.to_string( self._main_store ) return return_value async def redact_events_related_to( self, requester: Requester, event_id: str, initial_redaction_event: EventBase, relation_types: List[str], ) -> None: """Redacts all events related to the given event ID with one of the given relation types. This method is expected to be called when redacting the event referred to by the given event ID. If an event cannot be redacted (e.g. because of insufficient permissions), log the error and try to redact the next one. Args: requester: The requester to redact events on behalf of. event_id: The event IDs to look and redact relations of. initial_redaction_event: The redaction for the event referred to by event_id. relation_types: The types of relations to look for. If "*" is in the list, all related events will be redacted regardless of the type. Raises: ShadowBanError if the requester is shadow-banned """ if "*" in relation_types: related_event_ids = await self._main_store.get_all_relations_for_event( event_id ) else: related_event_ids = ( await self._main_store.get_all_relations_for_event_with_types( event_id, relation_types ) ) for related_event_id in related_event_ids: try: await self._event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.Redaction, "content": initial_redaction_event.content, "room_id": initial_redaction_event.room_id, "sender": requester.user.to_string(), "redacts": related_event_id, }, ratelimit=False, ) except SynapseError as e: logger.warning( "Failed to redact event %s (related to event %s): %s", related_event_id, event_id, e.msg, ) async def get_references_for_events( self, event_ids: Collection[str], ignored_users: FrozenSet[str] = frozenset() ) -> Mapping[str, Sequence[_RelatedEvent]]: """Get a list of references to the given events. Args: event_ids: Fetch events that relate to this event ID. ignored_users: The users ignored by the requesting user. Returns: A map of event IDs to a list related events. """ related_events = await self._main_store.get_references_for_events(event_ids) # Avoid additional logic if there are no ignored users. if not ignored_users: return { event_id: results for event_id, results in related_events.items() if results } # Filter out ignored users. results = {} for event_id, events in related_events.items(): # If no references, skip. if not events: continue # Filter ignored users out. events = [event for event in events if event.sender not in ignored_users] # If there are no events left, skip this event. if not events: continue results[event_id] = events return results async def _get_threads_for_events( self, events_by_id: Dict[str, EventBase], relations_by_id: Dict[str, str], user_id: str, ignored_users: FrozenSet[str], ) -> Dict[str, _ThreadAggregation]: """Get the bundled aggregations for threads for the requested events. Args: events_by_id: A map of event_id to events to get aggregations for threads. relations_by_id: A map of event_id to the relation type, if one exists for that event. user_id: The user requesting the bundled aggregations. ignored_users: The users ignored by the requesting user. Returns: A dictionary mapping event ID to the thread information. May not contain a value for all requested event IDs. """ user = UserID.from_string(user_id) # It is not valid to start a thread on an event which itself relates to another event. event_ids = [eid for eid in events_by_id.keys() if eid not in relations_by_id] # Fetch thread summaries. summaries = await self._main_store.get_thread_summaries(event_ids) # Limit fetching whether the requester has participated in a thread to # events which are thread roots. thread_event_ids = [ event_id for event_id, summary in summaries.items() if summary ] # Pre-seed thread participation with whether the requester sent the event. participated = { event_id: events_by_id[event_id].sender == user_id for event_id in thread_event_ids } # For events the requester did not send, check the database for whether # the requester sent a threaded reply. participated.update( await self._main_store.get_threads_participated( [ event_id for event_id in thread_event_ids if not participated[event_id] ], user_id, ) ) # Then subtract off the results for any ignored users. ignored_results = await self._main_store.get_threaded_messages_per_user( thread_event_ids, ignored_users ) # A map of event ID to the thread aggregation. results = {} for event_id, summary in summaries.items(): # If no thread, skip. if not summary: continue thread_count, latest_thread_event = summary # Subtract off the count of any ignored users. for ignored_user in ignored_users: thread_count -= ignored_results.get((event_id, ignored_user), 0) # This is gnarly, but if the latest event is from an ignored user, # attempt to find one that isn't from an ignored user. if latest_thread_event.sender in ignored_users: room_id = latest_thread_event.room_id # If the root event is not found, something went wrong, do # not include a summary of the thread. event = await self._event_handler.get_event(user, room_id, event_id) if event is None: continue # Attempt to find another event to use as the latest event. potential_events, _ = await self._main_store.get_relations_for_event( event_id, event, room_id, RelationTypes.THREAD, direction=Direction.FORWARDS, ) # Filter out ignored users. potential_events = [ event for event in potential_events if event.sender not in ignored_users ] # If all found events are from ignored users, do not include # a summary of the thread. if not potential_events: continue # The *last* event returned is the one that is cared about. event = await self._event_handler.get_event( user, room_id, potential_events[-1].event_id ) # It is unexpected that the event will not exist. if event is None: logger.warning( "Unable to fetch latest event in a thread with event ID: %s", potential_events[-1].event_id, ) continue latest_thread_event = event results[event_id] = _ThreadAggregation( latest_event=latest_thread_event, count=thread_count, # If there's a thread summary it must also exist in the # participated dictionary. current_user_participated=events_by_id[event_id].sender == user_id or participated[event_id], ) return results @trace async def get_bundled_aggregations( self, events: Iterable[EventBase], user_id: str ) -> Dict[str, BundledAggregations]: """Generate bundled aggregations for events. Args: events: The iterable of events to calculate bundled aggregations for. user_id: The user requesting the bundled aggregations. Returns: A map of event ID to the bundled aggregations for the event. Not all requested events may exist in the results (if they don't have bundled aggregations). The results may include additional events which are related to the requested events. """ # De-duplicated events by ID to handle the same event requested multiple times. events_by_id = {} # A map of event ID to the relation in that event, if there is one. relations_by_id: Dict[str, str] = {} for event in events: # State events do not get bundled aggregations. if event.is_state(): continue relates_to = relation_from_event(event) if relates_to: # An event which is a replacement (ie edit) or annotation (ie, # reaction) may not have any other event related to it. if relates_to.rel_type in ( RelationTypes.ANNOTATION, RelationTypes.REPLACE, ): continue # Track the event's relation information for later. relations_by_id[event.event_id] = relates_to.rel_type # The event should get bundled aggregations. events_by_id[event.event_id] = event # event ID -> bundled aggregation in non-serialized form. results: Dict[str, BundledAggregations] = {} # Fetch any ignored users of the requesting user. ignored_users = await self._main_store.ignored_users(user_id) # Threads are special as the latest event of a thread might cause additional # events to be fetched. Thus, we check those first! # Fetch thread summaries (but only for the directly requested events). threads = await self._get_threads_for_events( events_by_id, relations_by_id, user_id, ignored_users, ) for event_id, thread in threads.items(): results.setdefault(event_id, BundledAggregations()).thread = thread # If the latest event in a thread is not already being fetched, # add it. This ensures that the bundled aggregations for the # latest thread event is correct. latest_thread_event = thread.latest_event if latest_thread_event and latest_thread_event.event_id not in events_by_id: events_by_id[latest_thread_event.event_id] = latest_thread_event # Keep relations_by_id in sync with events_by_id: # # We know that the latest event in a thread has a thread relation # (as that is what makes it part of the thread). relations_by_id[latest_thread_event.event_id] = RelationTypes.THREAD async def _fetch_references() -> None: """Fetch any references to bundle with this event.""" references_by_event_id = await self.get_references_for_events( events_by_id.keys(), ignored_users=ignored_users ) for event_id, references in references_by_event_id.items(): if references: results.setdefault(event_id, BundledAggregations()).references = { "chunk": [{"event_id": ev.event_id} for ev in references] } async def _fetch_edits() -> None: """ Fetch any edits (but not for redacted events). Note that there is no use in limiting edits by ignored users since the parent event should be ignored in the first place if the user is ignored. """ edits = await self._main_store.get_applicable_edits( [ event_id for event_id, event in events_by_id.items() if not event.internal_metadata.is_redacted() ] ) for event_id, edit in edits.items(): results.setdefault(event_id, BundledAggregations()).replace = edit # Parallelize the calls for annotations, references, and edits since they # are unrelated. await make_deferred_yieldable( gather_results( ( run_in_background(_fetch_references), run_in_background(_fetch_edits), ) ) ) return results async def get_threads( self, requester: Requester, room_id: str, include: ThreadsListInclude, limit: int = 5, from_token: Optional[ThreadsNextBatch] = None, ) -> JsonDict: """Get related events of a event, ordered by topological ordering. Args: requester: The user requesting the relations. room_id: The room the event belongs to. include: One of "all" or "participated" to indicate which threads should be returned. limit: Only fetch the most recent `limit` events. from_token: Fetch rows from the given token, or from the start if None. Returns: The pagination chunk. """ user_id = requester.user.to_string() # TODO Properly handle a user leaving a room. (_, member_event_id) = await self._auth.check_user_in_room_or_world_readable( room_id, requester, allow_departed_users=True ) # Note that ignored users are not passed into get_threads # below. Ignored users are handled in filter_events_for_client (and by # not passing them in here we should get a better cache hit rate). thread_roots, next_batch = await self._main_store.get_threads( room_id=room_id, limit=limit, from_token=from_token ) events = await self._main_store.get_events_as_list(thread_roots) if include == ThreadsListInclude.participated: # Pre-seed thread participation with whether the requester sent the event. participated = {event.event_id: event.sender == user_id for event in events} # For events the requester did not send, check the database for whether # the requester sent a threaded reply. participated.update( await self._main_store.get_threads_participated( [eid for eid, p in participated.items() if not p], user_id, ) ) # Limit the returned threads to those the user has participated in. events = [event for event in events if participated[event.event_id]] events = await filter_events_for_client( self._storage_controllers, user_id, events, is_peeking=(member_event_id is None), ) aggregations = await self.get_bundled_aggregations( events, requester.user.to_string() ) now = self._clock.time_msec() serialized_events = await self._event_serializer.serialize_events( events, now, bundle_aggregations=aggregations ) return_value: JsonDict = {"chunk": serialized_events} if next_batch: return_value["next_batch"] = str(next_batch) return return_value synapse-1.100.0/synapse/handlers/room.py000066400000000000000000002377721455622526000201740ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """Contains functions for performing actions on rooms.""" import itertools import logging import math import random import string from collections import OrderedDict from http import HTTPStatus from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, List, Optional, Tuple, cast, ) import attr from typing_extensions import TypedDict import synapse.events.snapshot from synapse.api.constants import ( Direction, EventContentFields, EventTypes, GuestAccess, HistoryVisibility, JoinRules, Membership, RoomCreationPreset, RoomEncryptionAlgorithms, RoomTypes, ) from synapse.api.errors import ( AuthError, Codes, LimitExceededError, NotFoundError, PartialStateConflictError, StoreError, SynapseError, ) from synapse.api.filtering import Filter from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion from synapse.event_auth import validate_event_for_room_version from synapse.events import EventBase from synapse.events.snapshot import UnpersistedEventContext from synapse.events.utils import copy_and_fixup_power_levels_contents from synapse.handlers.relations import BundledAggregations from synapse.rest.admin._base import assert_user_is_admin from synapse.streams import EventSource from synapse.types import ( JsonDict, JsonMapping, MutableStateMap, Requester, RoomAlias, RoomID, RoomStreamToken, StateMap, StrCollection, StreamKeyType, StreamToken, UserID, create_requester, ) from synapse.types.state import StateFilter from synapse.util import stringutils from synapse.util.caches.response_cache import ResponseCache from synapse.util.stringutils import parse_and_validate_server_name from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) id_server_scheme = "https://" FIVE_MINUTES_IN_MS = 5 * 60 * 1000 @attr.s(slots=True, frozen=True, auto_attribs=True) class EventContext: events_before: List[EventBase] event: EventBase events_after: List[EventBase] state: List[EventBase] aggregations: Dict[str, BundledAggregations] start: str end: str class RoomCreationHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.auth = hs.get_auth() self.auth_blocking = hs.get_auth_blocking() self.clock = hs.get_clock() self.hs = hs self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self.event_creation_handler = hs.get_event_creation_handler() self.room_member_handler = hs.get_room_member_handler() self._event_auth_handler = hs.get_event_auth_handler() self.config = hs.config self.request_ratelimiter = hs.get_request_ratelimiter() # Room state based off defined presets self._presets_dict: Dict[str, Dict[str, Any]] = { RoomCreationPreset.PRIVATE_CHAT: { "join_rules": JoinRules.INVITE, "history_visibility": HistoryVisibility.SHARED, "original_invitees_have_ops": False, "guest_can_join": True, "power_level_content_override": {"invite": 0}, }, RoomCreationPreset.TRUSTED_PRIVATE_CHAT: { "join_rules": JoinRules.INVITE, "history_visibility": HistoryVisibility.SHARED, "original_invitees_have_ops": True, "guest_can_join": True, "power_level_content_override": {"invite": 0}, }, RoomCreationPreset.PUBLIC_CHAT: { "join_rules": JoinRules.PUBLIC, "history_visibility": HistoryVisibility.SHARED, "original_invitees_have_ops": False, "guest_can_join": False, "power_level_content_override": {}, }, } # Modify presets to selectively enable encryption by default per homeserver config for preset_name, preset_config in self._presets_dict.items(): encrypted = ( preset_name in self.config.room.encryption_enabled_by_default_for_room_presets ) preset_config["encrypted"] = encrypted self._default_power_level_content_override = ( self.config.room.default_power_level_content_override ) self._replication = hs.get_replication_data_handler() # If a user tries to update the same room multiple times in quick # succession, only process the first attempt and return its result to # subsequent requests self._upgrade_response_cache: ResponseCache[Tuple[str, str]] = ResponseCache( hs.get_clock(), "room_upgrade", timeout_ms=FIVE_MINUTES_IN_MS ) self._server_notices_mxid = hs.config.servernotices.server_notices_mxid self._third_party_event_rules = ( hs.get_module_api_callbacks().third_party_event_rules ) async def upgrade_room( self, requester: Requester, old_room_id: str, new_version: RoomVersion ) -> str: """Replace a room with a new room with a different version Args: requester: the user requesting the upgrade old_room_id: the id of the room to be replaced new_version: the new room version to use Returns: the new room id Raises: ShadowBanError if the requester is shadow-banned. """ await self.request_ratelimiter.ratelimit(requester) user_id = requester.user.to_string() # Check if this room is already being upgraded by another person for key in self._upgrade_response_cache.keys(): if key[0] == old_room_id and key[1] != user_id: # Two different people are trying to upgrade the same room. # Send the second an error. # # Note that this of course only gets caught if both users are # on the same homeserver. raise SynapseError( 400, "An upgrade for this room is currently in progress" ) # Check whether the room exists and 404 if it doesn't. # We could go straight for the auth check, but that will raise a 403 instead. old_room = await self.store.get_room(old_room_id) if old_room is None: raise NotFoundError("Unknown room id %s" % (old_room_id,)) new_room_id = self._generate_room_id() # Try several times, it could fail with PartialStateConflictError # in _upgrade_room, cf comment in except block. max_retries = 5 for i in range(max_retries): try: # Check whether the user has the power level to carry out the upgrade. # `check_auth_rules_from_context` will check that they are in the room and have # the required power level to send the tombstone event. ( tombstone_event, tombstone_unpersisted_context, ) = await self.event_creation_handler.create_event( requester, { "type": EventTypes.Tombstone, "state_key": "", "room_id": old_room_id, "sender": user_id, "content": { "body": "This room has been replaced", "replacement_room": new_room_id, }, }, ) tombstone_context = await tombstone_unpersisted_context.persist( tombstone_event ) validate_event_for_room_version(tombstone_event) await self._event_auth_handler.check_auth_rules_from_context( tombstone_event ) # Upgrade the room # # If this user has sent multiple upgrade requests for the same room # and one of them is not complete yet, cache the response and # return it to all subsequent requests ret = await self._upgrade_response_cache.wrap( (old_room_id, user_id), self._upgrade_room, requester, old_room_id, old_room, # args for _upgrade_room new_room_id, new_version, tombstone_event, tombstone_context, ) return ret except PartialStateConflictError as e: # Clean up the cache so we can retry properly self._upgrade_response_cache.unset((old_room_id, user_id)) # Persisting couldn't happen because the room got un-partial stated # in the meantime and context needs to be recomputed, so let's do so. if i == max_retries - 1: raise e # This is to satisfy mypy and should never happen raise PartialStateConflictError() async def _upgrade_room( self, requester: Requester, old_room_id: str, old_room: Tuple[bool, str, bool], new_room_id: str, new_version: RoomVersion, tombstone_event: EventBase, tombstone_context: synapse.events.snapshot.EventContext, ) -> str: """ Args: requester: the user requesting the upgrade old_room_id: the id of the room to be replaced old_room: a tuple containing room information for the room to be replaced, as returned by `RoomWorkerStore.get_room`. new_room_id: the id of the replacement room new_version: the version to upgrade the room to tombstone_event: the tombstone event to send to the old room tombstone_context: the context for the tombstone event Raises: ShadowBanError if the requester is shadow-banned. """ user_id = requester.user.to_string() assert self.hs.is_mine_id(user_id), "User must be our own: %s" % (user_id,) logger.info("Creating new room %s to replace %s", new_room_id, old_room_id) # create the new room. may raise a `StoreError` in the exceedingly unlikely # event of a room ID collision. await self.store.store_room( room_id=new_room_id, room_creator_user_id=user_id, is_public=old_room[0], room_version=new_version, ) await self.clone_existing_room( requester, old_room_id=old_room_id, new_room_id=new_room_id, new_room_version=new_version, tombstone_event_id=tombstone_event.event_id, ) # now send the tombstone await self.event_creation_handler.handle_new_client_event( requester=requester, events_and_context=[(tombstone_event, tombstone_context)], ) state_filter = StateFilter.from_types( [(EventTypes.CanonicalAlias, ""), (EventTypes.PowerLevels, "")] ) old_room_state = await tombstone_context.get_current_state_ids(state_filter) # We know the tombstone event isn't an outlier so it has current state. assert old_room_state is not None # update any aliases await self._move_aliases_to_new_room( requester, old_room_id, new_room_id, old_room_state ) # Copy over user push rules, tags and migrate room directory state await self.room_member_handler.transfer_room_state_on_room_upgrade( old_room_id, new_room_id ) # finally, shut down the PLs in the old room, and update them in the new # room. await self._update_upgraded_room_pls( requester, old_room_id, new_room_id, old_room_state, ) return new_room_id async def _update_upgraded_room_pls( self, requester: Requester, old_room_id: str, new_room_id: str, old_room_state: StateMap[str], ) -> None: """Send updated power levels in both rooms after an upgrade Args: requester: the user requesting the upgrade old_room_id: the id of the room to be replaced new_room_id: the id of the replacement room old_room_state: the state map for the old room Raises: ShadowBanError if the requester is shadow-banned. """ old_room_pl_event_id = old_room_state.get((EventTypes.PowerLevels, "")) if old_room_pl_event_id is None: logger.warning( "Not supported: upgrading a room with no PL event. Not setting PLs " "in old room." ) return old_room_pl_state = await self.store.get_event(old_room_pl_event_id) # we try to stop regular users from speaking by setting the PL required # to send regular events and invites to 'Moderator' level. That's normally # 50, but if the default PL in a room is 50 or more, then we set the # required PL above that. pl_content = copy_and_fixup_power_levels_contents(old_room_pl_state.content) users_default: int = pl_content.get("users_default", 0) # type: ignore[assignment] restricted_level = max(users_default + 1, 50) updated = False for v in ("invite", "events_default"): current: int = pl_content.get(v, 0) # type: ignore[assignment] if current < restricted_level: logger.debug( "Setting level for %s in %s to %i (was %i)", v, old_room_id, restricted_level, current, ) pl_content[v] = restricted_level updated = True else: logger.debug("Not setting level for %s (already %i)", v, current) if updated: try: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.PowerLevels, "state_key": "", "room_id": old_room_id, "sender": requester.user.to_string(), "content": pl_content, }, ratelimit=False, ) except AuthError as e: logger.warning("Unable to update PLs in old room: %s", e) await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.PowerLevels, "state_key": "", "room_id": new_room_id, "sender": requester.user.to_string(), "content": copy_and_fixup_power_levels_contents( old_room_pl_state.content ), }, ratelimit=False, ) async def clone_existing_room( self, requester: Requester, old_room_id: str, new_room_id: str, new_room_version: RoomVersion, tombstone_event_id: str, ) -> None: """Populate a new room based on an old room Args: requester: the user requesting the upgrade old_room_id : the id of the room to be replaced new_room_id: the id to give the new room (should already have been created with _generate_room_id()) new_room_version: the new room version to use tombstone_event_id: the ID of the tombstone event in the old room. """ user_id = requester.user.to_string() spam_check = await self._spam_checker_module_callbacks.user_may_create_room( user_id ) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: raise SynapseError( 403, "You are not permitted to create rooms", errcode=spam_check[0], additional_fields=spam_check[1], ) creation_content: JsonDict = { "room_version": new_room_version.identifier, "predecessor": {"room_id": old_room_id, "event_id": tombstone_event_id}, } # Check if old room was non-federatable # Get old room's create event old_room_create_event = await self.store.get_create_event_for_room(old_room_id) # Check if the create event specified a non-federatable room if not old_room_create_event.content.get(EventContentFields.FEDERATE, True): # If so, mark the new room as non-federatable as well creation_content[EventContentFields.FEDERATE] = False initial_state = {} # Replicate relevant room events types_to_copy: List[Tuple[str, Optional[str]]] = [ (EventTypes.JoinRules, ""), (EventTypes.Name, ""), (EventTypes.Topic, ""), (EventTypes.RoomHistoryVisibility, ""), (EventTypes.GuestAccess, ""), (EventTypes.RoomAvatar, ""), (EventTypes.RoomEncryption, ""), (EventTypes.ServerACL, ""), (EventTypes.PowerLevels, ""), ] # Copy the room type as per MSC3818. room_type = old_room_create_event.content.get(EventContentFields.ROOM_TYPE) if room_type is not None: creation_content[EventContentFields.ROOM_TYPE] = room_type # If the old room was a space, copy over the rooms in the space. if room_type == RoomTypes.SPACE: types_to_copy.append((EventTypes.SpaceChild, None)) old_room_state_ids = ( await self._storage_controllers.state.get_current_state_ids( old_room_id, StateFilter.from_types(types_to_copy) ) ) # map from event_id to BaseEvent old_room_state_events = await self.store.get_events(old_room_state_ids.values()) for k, old_event_id in old_room_state_ids.items(): old_event = old_room_state_events.get(old_event_id) if old_event: # If the event is an space child event with empty content, it was # removed from the space and should be ignored. if k[0] == EventTypes.SpaceChild and not old_event.content: continue initial_state[k] = old_event.content # deep-copy the power-levels event before we start modifying it # note that if frozen_dicts are enabled, `power_levels` will be a frozen # dict so we can't just copy.deepcopy it. initial_state[ (EventTypes.PowerLevels, "") ] = power_levels = copy_and_fixup_power_levels_contents( initial_state[(EventTypes.PowerLevels, "")] ) # Resolve the minimum power level required to send any state event # We will give the upgrading user this power level temporarily (if necessary) such that # they are able to copy all of the state events over, then revert them back to their # original power level afterwards in _update_upgraded_room_pls # Copy over user power levels now as this will not be possible with >100PL users once # the room has been created # Calculate the minimum power level needed to clone the room event_power_levels = power_levels.get("events", {}) if not isinstance(event_power_levels, dict): event_power_levels = {} state_default = power_levels.get("state_default", 50) try: state_default_int = int(state_default) # type: ignore[arg-type] except (TypeError, ValueError): state_default_int = 50 ban = power_levels.get("ban", 50) try: ban = int(ban) # type: ignore[arg-type] except (TypeError, ValueError): ban = 50 needed_power_level = max( state_default_int, ban, max(event_power_levels.values(), default=0) ) # Get the user's current power level, this matches the logic in get_user_power_level, # but without the entire state map. user_power_levels = power_levels.setdefault("users", {}) if not isinstance(user_power_levels, dict): user_power_levels = {} users_default = power_levels.get("users_default", 0) current_power_level = user_power_levels.get(user_id, users_default) try: current_power_level_int = int(current_power_level) # type: ignore[arg-type] except (TypeError, ValueError): current_power_level_int = 0 # Raise the requester's power level in the new room if necessary if current_power_level_int < needed_power_level: user_power_levels[user_id] = needed_power_level await self._send_events_for_new_room( requester, new_room_id, new_room_version, # we expect to override all the presets with initial_state, so this is # somewhat arbitrary. room_config={"preset": RoomCreationPreset.PRIVATE_CHAT}, invite_list=[], initial_state=initial_state, creation_content=creation_content, ) # Transfer membership events old_room_member_state_ids = ( await self._storage_controllers.state.get_current_state_ids( old_room_id, StateFilter.from_types([(EventTypes.Member, None)]) ) ) # map from event_id to BaseEvent old_room_member_state_events = await self.store.get_events( old_room_member_state_ids.values() ) for old_event in old_room_member_state_events.values(): # Only transfer ban events if ( "membership" in old_event.content and old_event.content["membership"] == "ban" ): await self.room_member_handler.update_membership( requester, UserID.from_string(old_event.state_key), new_room_id, "ban", ratelimit=False, content=old_event.content, ) # XXX invites/joins # XXX 3pid invites async def _move_aliases_to_new_room( self, requester: Requester, old_room_id: str, new_room_id: str, old_room_state: StateMap[str], ) -> None: # check to see if we have a canonical alias. canonical_alias_event = None canonical_alias_event_id = old_room_state.get((EventTypes.CanonicalAlias, "")) if canonical_alias_event_id: canonical_alias_event = await self.store.get_event(canonical_alias_event_id) await self.store.update_aliases_for_room(old_room_id, new_room_id) if not canonical_alias_event: return # If there is a canonical alias we need to update the one in the old # room and set one in the new one. old_canonical_alias_content = dict(canonical_alias_event.content) new_canonical_alias_content = {} canonical = canonical_alias_event.content.get("alias") if canonical and self.hs.is_mine_id(canonical): new_canonical_alias_content["alias"] = canonical old_canonical_alias_content.pop("alias", None) # We convert to a list as it will be a Tuple. old_alt_aliases = list(old_canonical_alias_content.get("alt_aliases", [])) if old_alt_aliases: old_canonical_alias_content["alt_aliases"] = old_alt_aliases new_alt_aliases = new_canonical_alias_content.setdefault("alt_aliases", []) for alias in canonical_alias_event.content.get("alt_aliases", []): try: if self.hs.is_mine_id(alias): new_alt_aliases.append(alias) old_alt_aliases.remove(alias) except Exception: logger.info( "Invalid alias %s in canonical alias event %s", alias, canonical_alias_event_id, ) if not old_alt_aliases: old_canonical_alias_content.pop("alt_aliases") # If a canonical alias event existed for the old room, fire a canonical # alias event for the new room with a copy of the information. try: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.CanonicalAlias, "state_key": "", "room_id": old_room_id, "sender": requester.user.to_string(), "content": old_canonical_alias_content, }, ratelimit=False, ) except SynapseError as e: # again I'm not really expecting this to fail, but if it does, I'd rather # we returned the new room to the client at this point. logger.error("Unable to send updated alias events in old room: %s", e) try: await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.CanonicalAlias, "state_key": "", "room_id": new_room_id, "sender": requester.user.to_string(), "content": new_canonical_alias_content, }, ratelimit=False, ) except SynapseError as e: # again I'm not really expecting this to fail, but if it does, I'd rather # we returned the new room to the client at this point. logger.error("Unable to send updated alias events in new room: %s", e) async def create_room( self, requester: Requester, config: JsonDict, ratelimit: bool = True, creator_join_profile: Optional[JsonDict] = None, ignore_forced_encryption: bool = False, ) -> Tuple[str, Optional[RoomAlias], int]: """Creates a new room. Args: requester: The user who requested the room creation. config: A dict of configuration options. This will be the body of a /createRoom request; see https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3createroom ratelimit: set to False to disable the rate limiter creator_join_profile: Set to override the displayname and avatar for the creating user in this room. If unset, displayname and avatar will be derived from the user's profile. If set, should contain the values to go in the body of the 'join' event (typically `avatar_url` and/or `displayname`. ignore_forced_encryption: Ignore encryption forced by `encryption_enabled_by_default_for_room_type` setting. Returns: A 3-tuple containing: - the room ID; - if requested, the room alias, otherwise None; and - the `stream_id` of the last persisted event. Raises: SynapseError: if the room ID couldn't be stored, 3pid invitation config validation failed, or something went horribly wrong. ResourceLimitError: if server is blocked to some resource being exceeded """ user_id = requester.user.to_string() await self.auth_blocking.check_auth_blocking(requester=requester) if ( self._server_notices_mxid is not None and user_id == self._server_notices_mxid ): # allow the server notices mxid to create rooms is_requester_admin = True else: is_requester_admin = await self.auth.is_server_admin(requester) # Let the third party rules modify the room creation config if needed, or abort # the room creation entirely with an exception. await self._third_party_event_rules.on_create_room( requester, config, is_requester_admin=is_requester_admin ) invite_3pid_list = config.get("invite_3pid", []) invite_list = config.get("invite", []) # validate each entry for correctness for invite_3pid in invite_3pid_list: if not all( key in invite_3pid for key in ("medium", "address", "id_server", "id_access_token") ): raise SynapseError( HTTPStatus.BAD_REQUEST, "all of `medium`, `address`, `id_server` and `id_access_token` " "are required when making a 3pid invite", Codes.MISSING_PARAM, ) if not is_requester_admin: spam_check = await self._spam_checker_module_callbacks.user_may_create_room( user_id ) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: raise SynapseError( 403, "You are not permitted to create rooms", errcode=spam_check[0], additional_fields=spam_check[1], ) if ratelimit: # Rate limit once in advance, but don't rate limit the individual # events in the room — room creation isn't atomic and it's very # janky if half the events in the initial state don't make it because # of rate limiting. await self.request_ratelimiter.ratelimit(requester) room_version_id = config.get( "room_version", self.config.server.default_room_version.identifier ) if not isinstance(room_version_id, str): raise SynapseError(400, "room_version must be a string", Codes.BAD_JSON) room_version = KNOWN_ROOM_VERSIONS.get(room_version_id) if room_version is None: raise SynapseError( 400, "Your homeserver does not support this room version", Codes.UNSUPPORTED_ROOM_VERSION, ) room_alias = None if "room_alias_name" in config: for wchar in string.whitespace: if wchar in config["room_alias_name"]: raise SynapseError(400, "Invalid characters in room alias") if ":" in config["room_alias_name"]: # Prevent someone from trying to pass in a full alias here. # Note that it's permissible for a room alias to have multiple # hash symbols at the start (notably bridged over from IRC, too), # but the first colon in the alias is defined to separate the local # part from the server name. # (remember server names can contain port numbers, also separated # by a colon. But under no circumstances should the local part be # allowed to contain a colon!) raise SynapseError( 400, "':' is not permitted in the room alias name. " "Please note this expects a local part — 'wombat', not '#wombat:example.com'.", ) room_alias = RoomAlias(config["room_alias_name"], self.hs.hostname) mapping = await self.store.get_association_from_room_alias(room_alias) if mapping: raise SynapseError(400, "Room alias already taken", Codes.ROOM_IN_USE) for i in invite_list: try: uid = UserID.from_string(i) parse_and_validate_server_name(uid.domain) except Exception: raise SynapseError(400, "Invalid user_id: %s" % (i,)) if (invite_list or invite_3pid_list) and requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) # Allow the request to go through, but remove any associated invites. invite_3pid_list = [] invite_list = [] if invite_list or invite_3pid_list: try: # If there are invites in the request, see if the ratelimiting settings # allow that number of invites to be sent from the current user. await self.room_member_handler.ratelimit_multiple_invites( requester, room_id=None, n_invites=len(invite_list) + len(invite_3pid_list), update=False, ) except LimitExceededError: raise SynapseError(400, "Cannot invite so many users at once") await self.event_creation_handler.assert_accepted_privacy_policy(requester) power_level_content_override = config.get("power_level_content_override") if ( power_level_content_override and "users" in power_level_content_override and user_id not in power_level_content_override["users"] ): raise SynapseError( 400, "Not a valid power_level_content_override: 'users' did not contain %s" % (user_id,), ) # The spec says rooms should default to private visibility if # `visibility` is not specified. visibility = config.get("visibility", "private") is_public = visibility == "public" self._validate_room_config(config, visibility) room_id = await self._generate_and_create_room_id( creator_id=user_id, is_public=is_public, room_version=room_version, ) # Check whether this visibility value is blocked by a third party module allowed_by_third_party_rules = ( await ( self._third_party_event_rules.check_visibility_can_be_modified( room_id, visibility ) ) ) if not allowed_by_third_party_rules: raise SynapseError(403, "Room visibility value not allowed.") if is_public: room_aliases = [] if room_alias: room_aliases.append(room_alias.to_string()) if not self.config.roomdirectory.is_publishing_room_allowed( user_id, room_id, room_aliases ): # allow room creation to continue but do not publish room await self.store.set_room_is_public(room_id, False) directory_handler = self.hs.get_directory_handler() if room_alias: await directory_handler.create_association( requester=requester, room_id=room_id, room_alias=room_alias, servers=[self.hs.hostname], check_membership=False, ) raw_initial_state = config.get("initial_state", []) initial_state = OrderedDict() for val in raw_initial_state: initial_state[(val["type"], val.get("state_key", ""))] = val["content"] creation_content = config.get("creation_content", {}) # override any attempt to set room versions via the creation_content creation_content["room_version"] = room_version.identifier ( last_stream_id, last_sent_event_id, depth, ) = await self._send_events_for_new_room( requester, room_id, room_version, room_config=config, invite_list=invite_list, initial_state=initial_state, creation_content=creation_content, room_alias=room_alias, power_level_content_override=power_level_content_override, creator_join_profile=creator_join_profile, ) # we avoid dropping the lock between invites, as otherwise joins can # start coming in and making the createRoom slow. # # we also don't need to check the requester's shadow-ban here, as we # have already done so above (and potentially emptied invite_list). async with self.room_member_handler.member_linearizer.queue((room_id,)): content = {} is_direct = config.get("is_direct", None) if is_direct: content["is_direct"] = is_direct for invitee in invite_list: ( member_event_id, last_stream_id, ) = await self.room_member_handler.update_membership_locked( requester, UserID.from_string(invitee), room_id, "invite", ratelimit=False, content=content, new_room=True, prev_event_ids=[last_sent_event_id], depth=depth, ) last_sent_event_id = member_event_id depth += 1 for invite_3pid in invite_3pid_list: id_server = invite_3pid["id_server"] id_access_token = invite_3pid["id_access_token"] address = invite_3pid["address"] medium = invite_3pid["medium"] # Note that do_3pid_invite can raise a ShadowBanError, but this was # handled above by emptying invite_3pid_list. ( member_event_id, last_stream_id, ) = await self.hs.get_room_member_handler().do_3pid_invite( room_id, requester.user, medium, address, id_server, requester, txn_id=None, id_access_token=id_access_token, prev_event_ids=[last_sent_event_id], depth=depth, ) last_sent_event_id = member_event_id depth += 1 # Always wait for room creation to propagate before returning await self._replication.wait_for_stream_position( self.hs.config.worker.events_shard_config.get_instance(room_id), "events", last_stream_id, ) return room_id, room_alias, last_stream_id async def _send_events_for_new_room( self, creator: Requester, room_id: str, room_version: RoomVersion, room_config: JsonDict, invite_list: List[str], initial_state: MutableStateMap, creation_content: JsonDict, room_alias: Optional[RoomAlias] = None, power_level_content_override: Optional[JsonDict] = None, creator_join_profile: Optional[JsonDict] = None, ignore_forced_encryption: bool = False, ) -> Tuple[int, str, int]: """Sends the initial events into a new room. Sends the room creation, membership, and power level events into the room sequentially, then creates and batches up the rest of the events to persist as a batch to the DB. `power_level_content_override` doesn't apply when initial state has power level state event content. Rate limiting should already have been applied by this point. Args: creator: the user requesting the room creation room_id: room id for the room being created room_version: The room version of the new room. room_config: A dict of configuration options. This will be the body of a /createRoom request; see https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3createroom invite_list: a list of user ids to invite to the room initial_state: A list of state events to set in the new room. creation_content: Extra keys, such as m.federate, to be added to the content of the m.room.create event. room_alias: alias for the room power_level_content_override: The power level content to override in the default power level event. creator_join_profile: Set to override the displayname and avatar for the creating user in this room. ignore_forced_encryption: Ignore encryption forced by `encryption_enabled_by_default_for_room_type` setting. Returns: A tuple containing the stream ID, event ID and depth of the last event sent to the room. """ creator_id = creator.user.to_string() event_keys = {"room_id": room_id, "sender": creator_id, "state_key": ""} depth = 1 # the most recently created event prev_event: List[str] = [] # a map of event types, state keys -> event_ids. We collect these mappings this as events are # created (but not persisted to the db) to determine state for future created events # (as this info can't be pulled from the db) state_map: MutableStateMap[str] = {} async def create_event( etype: str, content: JsonDict, for_batch: bool, **kwargs: Any, ) -> Tuple[EventBase, synapse.events.snapshot.UnpersistedEventContextBase]: """ Creates an event and associated event context. Args: etype: the type of event to be created content: content of the event for_batch: whether the event is being created for batch persisting. If bool for_batch is true, this will create an event using the prev_event_ids, and will create an event context for the event using the parameters state_map and current_state_group, thus these parameters must be provided in this case if for_batch is True. The subsequently created event and context are suitable for being batched up and bulk persisted to the database with other similarly created events. """ nonlocal depth nonlocal prev_event # Create the event dictionary. event_dict = {"type": etype, "content": content} event_dict.update(event_keys) event_dict.update(kwargs) ( new_event, new_unpersisted_context, ) = await self.event_creation_handler.create_event( creator, event_dict, prev_event_ids=prev_event, depth=depth, # Take a copy to ensure each event gets a unique copy of # state_map since it is modified below. state_map=dict(state_map), for_batch=for_batch, ) depth += 1 prev_event = [new_event.event_id] state_map[(new_event.type, new_event.state_key)] = new_event.event_id return new_event, new_unpersisted_context preset_config, config = self._room_preset_config(room_config) # MSC2175 removes the creator field from the create event. if not room_version.implicit_room_creator: creation_content["creator"] = creator_id creation_event, unpersisted_creation_context = await create_event( EventTypes.Create, creation_content, False ) creation_context = await unpersisted_creation_context.persist(creation_event) logger.debug("Sending %s in new room", EventTypes.Member) ev = await self.event_creation_handler.handle_new_client_event( requester=creator, events_and_context=[(creation_event, creation_context)], ratelimit=False, ignore_shadow_ban=True, ) last_sent_event_id = ev.event_id member_event_id, _ = await self.room_member_handler.update_membership( creator, creator.user, room_id, "join", ratelimit=False, content=creator_join_profile, new_room=True, prev_event_ids=[last_sent_event_id], depth=depth, ) prev_event = [member_event_id] # update the depth and state map here as the membership event has been created # through a different code path depth += 1 state_map[(EventTypes.Member, creator.user.to_string())] = member_event_id # we need the state group of the membership event as it is the current state group event_to_state = ( await self._storage_controllers.state.get_state_group_for_events( [member_event_id] ) ) current_state_group = event_to_state[member_event_id] events_to_send = [] # We treat the power levels override specially as this needs to be one # of the first events that get sent into a room. pl_content = initial_state.pop((EventTypes.PowerLevels, ""), None) if pl_content is not None: power_event, power_context = await create_event( EventTypes.PowerLevels, pl_content, True ) events_to_send.append((power_event, power_context)) else: power_level_content: JsonDict = { "users": {creator_id: 100}, "users_default": 0, "events": { EventTypes.Name: 50, EventTypes.PowerLevels: 100, EventTypes.RoomHistoryVisibility: 100, EventTypes.CanonicalAlias: 50, EventTypes.RoomAvatar: 50, EventTypes.Tombstone: 100, EventTypes.ServerACL: 100, EventTypes.RoomEncryption: 100, }, "events_default": 0, "state_default": 50, "ban": 50, "kick": 50, "redact": 50, "invite": 50, "historical": 100, } if config["original_invitees_have_ops"]: for invitee in invite_list: power_level_content["users"][invitee] = 100 # If the user supplied a preset name e.g. "private_chat", # we apply that preset power_level_content.update(config["power_level_content_override"]) # If the server config contains default_power_level_content_override, # and that contains information for this room preset, apply it. if self._default_power_level_content_override: override = self._default_power_level_content_override.get(preset_config) if override is not None: power_level_content.update(override) # Finally, if the user supplied specific permissions for this room, # apply those. if power_level_content_override: power_level_content.update(power_level_content_override) pl_event, pl_context = await create_event( EventTypes.PowerLevels, power_level_content, True, ) events_to_send.append((pl_event, pl_context)) if room_alias and (EventTypes.CanonicalAlias, "") not in initial_state: room_alias_event, room_alias_context = await create_event( EventTypes.CanonicalAlias, {"alias": room_alias.to_string()}, True ) events_to_send.append((room_alias_event, room_alias_context)) if (EventTypes.JoinRules, "") not in initial_state: join_rules_event, join_rules_context = await create_event( EventTypes.JoinRules, {"join_rule": config["join_rules"]}, True, ) events_to_send.append((join_rules_event, join_rules_context)) if (EventTypes.RoomHistoryVisibility, "") not in initial_state: visibility_event, visibility_context = await create_event( EventTypes.RoomHistoryVisibility, {"history_visibility": config["history_visibility"]}, True, ) events_to_send.append((visibility_event, visibility_context)) if config["guest_can_join"]: if (EventTypes.GuestAccess, "") not in initial_state: guest_access_event, guest_access_context = await create_event( EventTypes.GuestAccess, {EventContentFields.GUEST_ACCESS: GuestAccess.CAN_JOIN}, True, ) events_to_send.append((guest_access_event, guest_access_context)) for (etype, state_key), content in initial_state.items(): event, context = await create_event( etype, content, True, state_key=state_key ) events_to_send.append((event, context)) if config["encrypted"] and not ignore_forced_encryption: encryption_event, encryption_context = await create_event( EventTypes.RoomEncryption, {"algorithm": RoomEncryptionAlgorithms.DEFAULT}, True, state_key="", ) events_to_send.append((encryption_event, encryption_context)) if "name" in room_config: name = room_config["name"] name_event, name_context = await create_event( EventTypes.Name, {"name": name}, True, ) events_to_send.append((name_event, name_context)) if "topic" in room_config: topic = room_config["topic"] topic_event, topic_context = await create_event( EventTypes.Topic, {"topic": topic}, True, ) events_to_send.append((topic_event, topic_context)) datastore = self.hs.get_datastores().state events_and_context = ( await UnpersistedEventContext.batch_persist_unpersisted_contexts( events_to_send, room_id, current_state_group, datastore ) ) last_event = await self.event_creation_handler.handle_new_client_event( creator, events_and_context, ignore_shadow_ban=True, ratelimit=False, ) assert last_event.internal_metadata.stream_ordering is not None return last_event.internal_metadata.stream_ordering, last_event.event_id, depth def _validate_room_config( self, config: JsonDict, visibility: str, ) -> None: """Checks configuration parameters for a /createRoom request. If validation detects invalid parameters an exception may be raised to cause room creation to be aborted and an error response to be returned to the client. Args: config: A dict of configuration options. Originally from the body of the /createRoom request visibility: One of "public" or "private" """ # Validate the requested preset, raise a 400 error if not valid preset_name, preset_config = self._room_preset_config(config) # If the user is trying to create an encrypted room and this is forbidden # by the configured default_power_level_content_override, then reject the # request before the room is created. raw_initial_state = config.get("initial_state", []) room_encryption_event = any( s.get("type", "") == EventTypes.RoomEncryption for s in raw_initial_state ) if preset_config["encrypted"] or room_encryption_event: if self._default_power_level_content_override: override = self._default_power_level_content_override.get(preset_name) if override is not None: event_levels = override.get("events", {}) room_admin_level = event_levels.get(EventTypes.PowerLevels, 100) encryption_level = event_levels.get(EventTypes.RoomEncryption, 100) if encryption_level > room_admin_level: raise SynapseError( 403, f"You cannot create an encrypted room. user_level ({room_admin_level}) < send_level ({encryption_level})", ) def _room_preset_config(self, room_config: JsonDict) -> Tuple[str, dict]: # The spec says rooms should default to private visibility if # `visibility` is not specified. visibility = room_config.get("visibility", "private") preset_name = room_config.get( "preset", RoomCreationPreset.PRIVATE_CHAT if visibility == "private" else RoomCreationPreset.PUBLIC_CHAT, ) try: preset_config = self._presets_dict[preset_name] except KeyError: raise SynapseError( 400, f"'{preset_name}' is not a valid preset", errcode=Codes.BAD_JSON ) return preset_name, preset_config def _generate_room_id(self) -> str: """Generates a random room ID. Room IDs look like "!opaque_id:domain" and are case-sensitive as per the spec at https://spec.matrix.org/v1.2/appendices/#room-ids-and-event-ids. Does not check for collisions with existing rooms or prevent future calls from returning the same room ID. To ensure the uniqueness of a new room ID, use `_generate_and_create_room_id` instead. Synapse's room IDs are 18 [a-zA-Z] characters long, which comes out to around 102 bits. Returns: A random room ID of the form "!opaque_id:domain". """ random_string = stringutils.random_string(18) return RoomID(random_string, self.hs.hostname).to_string() async def _generate_and_create_room_id( self, creator_id: str, is_public: bool, room_version: RoomVersion, ) -> str: # autogen room IDs and try to create it. We may clash, so just # try a few times till one goes through, giving up eventually. attempts = 0 while attempts < 5: try: gen_room_id = self._generate_room_id() await self.store.store_room( room_id=gen_room_id, room_creator_user_id=creator_id, is_public=is_public, room_version=room_version, ) return gen_room_id except StoreError: attempts += 1 raise StoreError(500, "Couldn't generate a room ID.") class RoomContextHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self._relations_handler = hs.get_relations_handler() async def get_event_context( self, requester: Requester, room_id: str, event_id: str, limit: int, event_filter: Optional[Filter], use_admin_priviledge: bool = False, ) -> Optional[EventContext]: """Retrieves events, pagination tokens and state around a given event in a room. Args: requester room_id event_id limit: The maximum number of events to return in total (excluding state). event_filter: the filter to apply to the events returned (excluding the target event_id) use_admin_priviledge: if `True`, return all events, regardless of whether `user` has access to them. To be used **ONLY** from the admin API. Returns: dict, or None if the event isn't found """ user = requester.user if use_admin_priviledge: await assert_user_is_admin(self.auth, requester) before_limit = math.floor(limit / 2.0) after_limit = limit - before_limit is_user_in_room = await self.store.check_local_user_in_room( user_id=user.to_string(), room_id=room_id ) # The user is peeking if they aren't in the room already is_peeking = not is_user_in_room async def filter_evts(events: List[EventBase]) -> List[EventBase]: if use_admin_priviledge: return events return await filter_events_for_client( self._storage_controllers, user.to_string(), events, is_peeking=is_peeking, ) event = await self.store.get_event( event_id, get_prev_content=True, allow_none=True ) if not event: return None filtered = await filter_evts([event]) if not filtered: raise AuthError(403, "You don't have permission to access that event.") results = await self.store.get_events_around( room_id, event_id, before_limit, after_limit, event_filter ) events_before = results.events_before events_after = results.events_after if event_filter: events_before = await event_filter.filter(events_before) events_after = await event_filter.filter(events_after) events_before = await filter_evts(events_before) events_after = await filter_evts(events_after) # filter_evts can return a pruned event in case the user is allowed to see that # there's something there but not see the content, so use the event that's in # `filtered` rather than the event we retrieved from the datastore. event = filtered[0] # Fetch the aggregations. aggregations = await self._relations_handler.get_bundled_aggregations( itertools.chain(events_before, (event,), events_after), user.to_string(), ) if events_after: last_event_id = events_after[-1].event_id else: last_event_id = event_id if event_filter and event_filter.lazy_load_members: state_filter = StateFilter.from_lazy_load_member_list( ev.sender for ev in itertools.chain( events_before, (event,), events_after, ) ) else: state_filter = StateFilter.all() # XXX: why do we return the state as of the last event rather than the # first? Shouldn't we be consistent with /sync? # https://github.com/matrix-org/matrix-doc/issues/687 state = await self._state_storage_controller.get_state_for_events( [last_event_id], state_filter=state_filter ) state_events = list(state[last_event_id].values()) if event_filter: state_events = await event_filter.filter(state_events) # We use a dummy token here as we only care about the room portion of # the token, which we replace. token = StreamToken.START return EventContext( events_before=events_before, event=event, events_after=events_after, state=state_events, aggregations=aggregations, start=await token.copy_and_replace( StreamKeyType.ROOM, results.start ).to_string(self.store), end=await token.copy_and_replace(StreamKeyType.ROOM, results.end).to_string( self.store ), ) class TimestampLookupHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.state_handler = hs.get_state_handler() self.federation_client = hs.get_federation_client() self.federation_event_handler = hs.get_federation_event_handler() self._storage_controllers = hs.get_storage_controllers() async def get_event_for_timestamp( self, requester: Requester, room_id: str, timestamp: int, direction: Direction, ) -> Tuple[str, int]: """Find the closest event to the given timestamp in the given direction. If we can't find an event locally or the event we have locally is next to a gap, it will ask other federated homeservers for an event. Args: requester: The user making the request according to the access token room_id: Room to fetch the event from timestamp: The point in time (inclusive) we should navigate from in the given direction to find the closest event. direction: indicates whether we should navigate forward or backward from the given timestamp to find the closest event. Returns: A tuple containing the `event_id` closest to the given timestamp in the given direction and the `origin_server_ts`. Raises: SynapseError if unable to find any event locally in the given direction """ logger.debug( "get_event_for_timestamp(room_id=%s, timestamp=%s, direction=%s) Finding closest event...", room_id, timestamp, direction, ) local_event_id = await self.store.get_event_id_for_timestamp( room_id, timestamp, direction ) logger.debug( "get_event_for_timestamp: locally, we found event_id=%s closest to timestamp=%s", local_event_id, timestamp, ) # Check for gaps in the history where events could be hiding in between # the timestamp given and the event we were able to find locally is_event_next_to_backward_gap = False is_event_next_to_forward_gap = False local_event = None if local_event_id: local_event = await self.store.get_event( local_event_id, allow_none=False, allow_rejected=False ) if direction == Direction.FORWARDS: # We only need to check for a backward gap if we're looking forwards # to ensure there is nothing in between. is_event_next_to_backward_gap = ( await self.store.is_event_next_to_backward_gap(local_event) ) elif direction == Direction.BACKWARDS: # We only need to check for a forward gap if we're looking backwards # to ensure there is nothing in between is_event_next_to_forward_gap = ( await self.store.is_event_next_to_forward_gap(local_event) ) # If we found a gap, we should probably ask another homeserver first # about more history in between if ( not local_event_id or is_event_next_to_backward_gap or is_event_next_to_forward_gap ): logger.debug( "get_event_for_timestamp: locally, we found event_id=%s closest to timestamp=%s which is next to a gap in event history so we're asking other homeservers first", local_event_id, timestamp, ) likely_domains = ( await self._storage_controllers.state.get_current_hosts_in_room_ordered( room_id ) ) remote_response = await self.federation_client.timestamp_to_event( destinations=likely_domains, room_id=room_id, timestamp=timestamp, direction=direction, ) if remote_response is not None: logger.debug( "get_event_for_timestamp: remote_response=%s", remote_response, ) remote_event_id = remote_response.event_id remote_origin_server_ts = remote_response.origin_server_ts # Backfill this event so we can get a pagination token for # it with `/context` and paginate `/messages` from this # point. pulled_pdu_info = await self.federation_event_handler.backfill_event_id( likely_domains, room_id, remote_event_id ) remote_event = pulled_pdu_info.pdu # XXX: When we see that the remote server is not trustworthy, # maybe we should not ask them first in the future. if remote_origin_server_ts != remote_event.origin_server_ts: logger.info( "get_event_for_timestamp: Remote server (%s) claimed that remote_event_id=%s occured at remote_origin_server_ts=%s but that isn't true (actually occured at %s). Their claims are dubious and we should consider not trusting them.", pulled_pdu_info.pull_origin, remote_event_id, remote_origin_server_ts, remote_event.origin_server_ts, ) # Only return the remote event if it's closer than the local event if not local_event or ( abs(remote_event.origin_server_ts - timestamp) < abs(local_event.origin_server_ts - timestamp) ): logger.info( "get_event_for_timestamp: returning remote_event_id=%s (%s) since it's closer to timestamp=%s than local_event=%s (%s)", remote_event_id, remote_event.origin_server_ts, timestamp, local_event.event_id if local_event else None, local_event.origin_server_ts if local_event else None, ) return remote_event_id, remote_origin_server_ts # To appease mypy, we have to add both of these conditions to check for # `None`. We only expect `local_event` to be `None` when # `local_event_id` is `None` but mypy isn't as smart and assuming as us. if not local_event_id or not local_event: raise SynapseError( 404, "Unable to find event from %s in direction %s" % (timestamp, direction), errcode=Codes.NOT_FOUND, ) return local_event_id, local_event.origin_server_ts class RoomEventSource(EventSource[RoomStreamToken, EventBase]): def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main async def get_new_events( self, user: UserID, from_key: RoomStreamToken, limit: int, room_ids: StrCollection, is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[EventBase], RoomStreamToken]: # We just ignore the key for now. to_key = self.get_current_key() if from_key.topological: logger.warning("Stream has topological part!!!! %r", from_key) from_key = RoomStreamToken(stream=from_key.stream) app_service = self.store.get_app_service_by_user_id(user.to_string()) if app_service: # We no longer support AS users using /sync directly. # See https://github.com/matrix-org/matrix-doc/issues/1144 raise NotImplementedError() else: room_events = await self.store.get_membership_changes_for_user( user.to_string(), from_key, to_key ) room_to_events = await self.store.get_room_events_stream_for_rooms( room_ids=room_ids, from_key=from_key, to_key=to_key, limit=limit or 10, order="ASC", ) events = list(room_events) events.extend(e for evs, _ in room_to_events.values() for e in evs) # We know stream_ordering must be not None here, as its been # persisted, but mypy doesn't know that events.sort(key=lambda e: cast(int, e.internal_metadata.stream_ordering)) if limit: events[:] = events[:limit] if events: last_event = events[-1] assert last_event.internal_metadata.stream_ordering end_key = RoomStreamToken( stream=last_event.internal_metadata.stream_ordering, ) else: end_key = to_key return events, end_key def get_current_key(self) -> RoomStreamToken: return self.store.get_room_max_token() def get_current_key_for_room(self, room_id: str) -> Awaitable[RoomStreamToken]: return self.store.get_current_room_stream_token_for_room_id(room_id) class ShutdownRoomParams(TypedDict): """ Attributes: requester_user_id: User who requested the action. Will be recorded as putting the room on the blocking list. new_room_user_id: If set, a new room will be created with this user ID as the creator and admin, and all users in the old room will be moved into that room. If not set, no new room will be created and the users will just be removed from the old room. new_room_name: A string representing the name of the room that new users will be invited to. Defaults to `Content Violation Notification` message: A string containing the first message that will be sent as `new_room_user_id` in the new room. Ideally this will clearly convey why the original room was shut down. Defaults to `Sharing illegal content on this server is not permitted and rooms in violation will be blocked.` block: If set to `true`, this room will be added to a blocking list, preventing future attempts to join the room. Defaults to `false`. purge: If set to `true`, purge the given room from the database. force_purge: If set to `true`, the room will be purged from database even if there are still users joined to the room. """ requester_user_id: Optional[str] new_room_user_id: Optional[str] new_room_name: Optional[str] message: Optional[str] block: bool purge: bool force_purge: bool class ShutdownRoomResponse(TypedDict): """ Attributes: kicked_users: An array of users (`user_id`) that were kicked. failed_to_kick_users: An array of users (`user_id`) that that were not kicked. local_aliases: An array of strings representing the local aliases that were migrated from the old room to the new. new_room_id: A string representing the room ID of the new room. """ kicked_users: List[str] failed_to_kick_users: List[str] local_aliases: List[str] new_room_id: Optional[str] class RoomShutdownHandler: DEFAULT_MESSAGE = ( "Sharing illegal content on this server is not permitted and rooms in" " violation will be blocked." ) DEFAULT_ROOM_NAME = "Content Violation Notification" def __init__(self, hs: "HomeServer"): self.hs = hs self.room_member_handler = hs.get_room_member_handler() self._room_creation_handler = hs.get_room_creation_handler() self._replication = hs.get_replication_data_handler() self._third_party_rules = hs.get_module_api_callbacks().third_party_event_rules self.event_creation_handler = hs.get_event_creation_handler() self.store = hs.get_datastores().main async def shutdown_room( self, room_id: str, params: ShutdownRoomParams, result: Optional[ShutdownRoomResponse] = None, update_result_fct: Optional[ Callable[[Optional[JsonMapping]], Awaitable[None]] ] = None, ) -> Optional[ShutdownRoomResponse]: """ Shuts down a room. Moves all local users and room aliases automatically to a new room if `new_room_user_id` is set. Otherwise local users only leave the room without any information. The new room will be created with the user specified by the `new_room_user_id` parameter as room administrator and will contain a message explaining what happened. Users invited to the new room will have power level `-10` by default, and thus be unable to speak. The local server will only have the power to move local user and room aliases to the new room. Users on other servers will be unaffected. Args: room_id: The ID of the room to shut down. delete_id: The delete ID identifying this delete request params: parameters for the shutdown, cf `ShutdownRoomParams` result: current status of the shutdown, if it was interrupted update_result_fct: function called when `result` is updated locally Returns: a dict matching `ShutdownRoomResponse`. """ requester_user_id = params["requester_user_id"] new_room_user_id = params["new_room_user_id"] block = params["block"] new_room_name = ( params["new_room_name"] if params["new_room_name"] else self.DEFAULT_ROOM_NAME ) message = params["message"] if params["message"] else self.DEFAULT_MESSAGE if not RoomID.is_valid(room_id): raise SynapseError(400, "%s is not a legal room ID" % (room_id,)) if not await self._third_party_rules.check_can_shutdown_room( requester_user_id, room_id ): raise SynapseError( 403, "Shutdown of this room is forbidden", Codes.FORBIDDEN ) result = ( result if result else { "kicked_users": [], "failed_to_kick_users": [], "local_aliases": [], "new_room_id": None, } ) # Action the block first (even if the room doesn't exist yet) if block: if requester_user_id is None: raise ValueError( "shutdown_room: block=True not allowed when requester_user_id is None." ) # This will work even if the room is already blocked, but that is # desirable in case the first attempt at blocking the room failed below. await self.store.block_room(room_id, requester_user_id) if not await self.store.get_room(room_id): # if we don't know about the room, there is nothing left to do. return result new_room_id = result.get("new_room_id") if new_room_user_id is not None and new_room_id is None: if not self.hs.is_mine_id(new_room_user_id): raise SynapseError( 400, "User must be our own: %s" % (new_room_user_id,) ) room_creator_requester = create_requester( new_room_user_id, authenticated_entity=requester_user_id ) new_room_id, _, stream_id = await self._room_creation_handler.create_room( room_creator_requester, config={ "preset": RoomCreationPreset.PUBLIC_CHAT, "name": new_room_name, "power_level_content_override": {"users_default": -10}, }, ratelimit=False, ) result["new_room_id"] = new_room_id if update_result_fct: await update_result_fct(result) logger.info( "Shutting down room %r, joining to new room: %r", room_id, new_room_id ) # We now wait for the create room to come back in via replication so # that we can assume that all the joins/invites have propagated before # we try and auto join below. await self._replication.wait_for_stream_position( self.hs.config.worker.events_shard_config.get_instance(new_room_id), "events", stream_id, ) else: logger.info("Shutting down room %r", room_id) users = await self.store.get_local_users_related_to_room(room_id) for user_id, membership in users: # If the user is not in the room (or is banned), nothing to do. if membership not in (Membership.JOIN, Membership.INVITE, Membership.KNOCK): continue logger.info("Kicking %r from %r...", user_id, room_id) try: # Kick users from room target_requester = create_requester( user_id, authenticated_entity=requester_user_id ) _, stream_id = await self.room_member_handler.update_membership( requester=target_requester, target=target_requester.user, room_id=room_id, action=Membership.LEAVE, content={}, ratelimit=False, require_consent=False, ) # Wait for leave to come in over replication before trying to forget. await self._replication.wait_for_stream_position( self.hs.config.worker.events_shard_config.get_instance(room_id), "events", stream_id, ) await self.room_member_handler.forget( target_requester.user, room_id, do_not_schedule_purge=True ) # Join users to new room if new_room_user_id: assert new_room_id is not None await self.room_member_handler.update_membership( requester=target_requester, target=target_requester.user, room_id=new_room_id, action=Membership.JOIN, content={}, ratelimit=False, require_consent=False, ) result["kicked_users"].append(user_id) if update_result_fct: await update_result_fct(result) except Exception: logger.exception( "Failed to leave old room and join new room for %r", user_id ) result["failed_to_kick_users"].append(user_id) if update_result_fct: await update_result_fct(result) # Send message in new room and move aliases if new_room_user_id: room_creator_requester = create_requester( new_room_user_id, authenticated_entity=requester_user_id ) await self.event_creation_handler.create_and_send_nonmember_event( room_creator_requester, { "type": "m.room.message", "content": {"body": message, "msgtype": "m.text"}, "room_id": new_room_id, "sender": new_room_user_id, }, ratelimit=False, ) result["local_aliases"] = list( await self.store.get_aliases_for_room(room_id) ) assert new_room_id is not None await self.store.update_aliases_for_room( room_id, new_room_id, requester_user_id ) else: result["local_aliases"] = [] return result synapse-1.100.0/synapse/handlers/room_list.py000066400000000000000000000564441455622526000212220ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014 - 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Any, List, Optional, Tuple import attr import msgpack from unpaddedbase64 import decode_base64, encode_base64 from synapse.api.constants import ( EventContentFields, EventTypes, GuestAccess, HistoryVisibility, JoinRules, PublicRoomsFilterFields, ) from synapse.api.errors import ( Codes, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.storage.databases.main.room import LargestRoomStats from synapse.types import JsonDict, JsonMapping, ThirdPartyInstanceID from synapse.util.caches.descriptors import _CacheContext, cached from synapse.util.caches.response_cache import ResponseCache if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) REMOTE_ROOM_LIST_POLL_INTERVAL = 60 * 1000 # This is used to indicate we should only return rooms published to the main list. EMPTY_THIRD_PARTY_ID = ThirdPartyInstanceID(None, None) # Maximum number of local public rooms returned over the CS or SS API MAX_PUBLIC_ROOMS_IN_RESPONSE = 100 class RoomListHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.hs = hs self.enable_room_list_search = hs.config.roomdirectory.enable_room_list_search self.response_cache: ResponseCache[ Tuple[Optional[int], Optional[str], Optional[ThirdPartyInstanceID]] ] = ResponseCache(hs.get_clock(), "room_list") self.remote_response_cache: ResponseCache[ Tuple[str, Optional[int], Optional[str], bool, Optional[str]] ] = ResponseCache(hs.get_clock(), "remote_room_list", timeout_ms=30 * 1000) async def get_local_public_room_list( self, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[dict] = None, network_tuple: Optional[ThirdPartyInstanceID] = EMPTY_THIRD_PARTY_ID, from_federation_origin: Optional[str] = None, ) -> JsonDict: """Generate a local public room list. There are multiple different lists: the main one plus one per third party network. A client can ask for a specific list or to return all. Args: limit since_token search_filter network_tuple: Which public list to use. This can be (None, None) to indicate the main list, or a particular appservice and network id to use an appservice specific one. Setting to None returns all public rooms across all lists. from_federation_origin: the server name of the requester, or None if the request is not from federation. """ if not self.enable_room_list_search: return {"chunk": [], "total_room_count_estimate": 0} logger.info( "Getting public room list: limit=%r, since=%r, search=%r, network=%r", limit, since_token, bool(search_filter), network_tuple, ) capped_limit: int = ( MAX_PUBLIC_ROOMS_IN_RESPONSE if limit is None or limit > MAX_PUBLIC_ROOMS_IN_RESPONSE else limit ) if search_filter or from_federation_origin is not None: # We explicitly don't bother caching searches or requests for # appservice specific lists. # We also don't bother caching requests from federated homeservers. logger.debug("Bypassing cache as search or federation request.") return await self._get_public_room_list( capped_limit, since_token, search_filter, network_tuple=network_tuple, from_federation_origin=from_federation_origin, ) key = (capped_limit, since_token, network_tuple) return await self.response_cache.wrap( key, self._get_public_room_list, capped_limit, since_token, network_tuple=network_tuple, from_federation_origin=from_federation_origin, ) async def _get_public_room_list( self, limit: int, since_token: Optional[str] = None, search_filter: Optional[dict] = None, network_tuple: Optional[ThirdPartyInstanceID] = EMPTY_THIRD_PARTY_ID, from_federation_origin: Optional[str] = None, ) -> JsonDict: """Generate a public room list. Args: limit: Maximum amount of rooms to return. since_token: search_filter: Dictionary to filter rooms by. network_tuple: Which public list to use. This can be (None, None) to indicate the main list, or a particular appservice and network id to use an appservice specific one. Setting to None returns all public rooms across all lists. from_federation_origin: the server name of the requester, or None if the request is not from federation. """ # Pagination tokens work by storing the room ID sent in the last batch, # plus the direction (forwards or backwards). Next batch tokens always # go forwards, prev batch tokens always go backwards. if since_token: batch_token = RoomListNextBatch.from_token(since_token) bounds: Optional[Tuple[int, str]] = ( batch_token.last_joined_members, batch_token.last_room_id, ) forwards = batch_token.direction_is_forward has_batch_token = True else: bounds = None forwards = True has_batch_token = False if from_federation_origin is None: # Client-Server API: # we request one more than wanted to see if there are more pages to come probing_limit = limit + 1 else: # Federation API: # we request a handful more in case any get filtered out by ACLs # as a best easy effort attempt to return the full number of entries # specified by `limit`. probing_limit = limit + 10 results = await self.store.get_largest_public_rooms( network_tuple, search_filter, probing_limit, bounds=bounds, forwards=forwards, ignore_non_federatable=from_federation_origin is not None, ) def build_room_entry(room: LargestRoomStats) -> JsonDict: entry = { "room_id": room.room_id, "name": room.name, "topic": room.topic, "canonical_alias": room.canonical_alias, "num_joined_members": room.joined_members, "avatar_url": room.avatar, "world_readable": room.history_visibility == HistoryVisibility.WORLD_READABLE, "guest_can_join": room.guest_access == "can_join", "join_rule": room.join_rules, "room_type": room.room_type, } # Filter out Nones – rather omit the field altogether return {k: v for k, v in entry.items() if v is not None} # Build a list of up to `limit` entries. room_entries: List[JsonDict] = [] rooms_iterator = results if forwards else reversed(results) # Track the first and last 'considered' rooms so that we can provide correct # next_batch/prev_batch tokens. # This is needed because the loop might finish early when # `len(room_entries) >= limit` and we might be left with rooms we didn't # 'consider' (iterate over) and we should save those rooms for the next # batch. first_considered_room: Optional[LargestRoomStats] = None last_considered_room: Optional[LargestRoomStats] = None cut_off_due_to_limit: bool = False for room_result in rooms_iterator: if len(room_entries) >= limit: cut_off_due_to_limit = True break if first_considered_room is None: first_considered_room = room_result last_considered_room = room_result if from_federation_origin is not None: # If this is a federated request, apply server ACLs if the room has any set acl_evaluator = ( await self._storage_controllers.state.get_server_acl_for_room( room_result.room_id ) ) if acl_evaluator is not None: if not acl_evaluator.server_matches_acl_event( from_federation_origin ): # the requesting server is ACL blocked by the room, # don't show in directory continue room_entries.append(build_room_entry(room_result)) if not forwards: # If we are paginating backwards, we still return the chunk in # biggest-first order, so reverse again. room_entries.reverse() # Swap the order of first/last considered rooms. first_considered_room, last_considered_room = ( last_considered_room, first_considered_room, ) response: JsonDict = { "chunk": room_entries, } num_results = len(results) more_to_come_from_database = num_results == probing_limit if forwards and has_batch_token: # If there was a token given then we assume that there # must be previous results, even if there were no results in this batch. if first_considered_room is not None: response["prev_batch"] = RoomListNextBatch( last_joined_members=first_considered_room.joined_members, last_room_id=first_considered_room.room_id, direction_is_forward=False, ).to_token() else: # If we didn't find any results this time, # we don't have an actual room ID to put in the token. # But since `first_considered_room` is None, we know that we have # reached the end of the results. # So we can use a token of (0, empty room ID) to paginate from the end # next time. response["prev_batch"] = RoomListNextBatch( last_joined_members=0, last_room_id="", direction_is_forward=False, ).to_token() if num_results > 0: assert first_considered_room is not None assert last_considered_room is not None if forwards: if more_to_come_from_database or cut_off_due_to_limit: response["next_batch"] = RoomListNextBatch( last_joined_members=last_considered_room.joined_members, last_room_id=last_considered_room.room_id, direction_is_forward=True, ).to_token() else: # backwards if has_batch_token: response["next_batch"] = RoomListNextBatch( last_joined_members=last_considered_room.joined_members, last_room_id=last_considered_room.room_id, direction_is_forward=True, ).to_token() if more_to_come_from_database or cut_off_due_to_limit: response["prev_batch"] = RoomListNextBatch( last_joined_members=first_considered_room.joined_members, last_room_id=first_considered_room.room_id, direction_is_forward=False, ).to_token() # We can't efficiently count the total number of rooms that are not # blocked by ACLs, but this is just an estimate so that should be # good enough. response["total_room_count_estimate"] = await self.store.count_public_rooms( network_tuple, ignore_non_federatable=from_federation_origin is not None, search_filter=search_filter, ) return response @cached(num_args=1, cache_context=True) async def generate_room_entry( self, room_id: str, num_joined_users: int, cache_context: _CacheContext, with_alias: bool = True, allow_private: bool = False, ) -> Optional[JsonMapping]: """Returns the entry for a room Args: room_id: The room's ID. num_joined_users: Number of users in the room. cache_context: Information for cached responses. with_alias: Whether to return the room's aliases in the result. allow_private: Whether invite-only rooms should be shown. Returns: Returns a room entry as a dictionary, or None if this room was determined not to be shown publicly. """ result = {"room_id": room_id, "num_joined_members": num_joined_users} if with_alias: aliases = await self.store.get_aliases_for_room( room_id, on_invalidate=cache_context.invalidate ) if aliases: result["aliases"] = aliases current_state_ids = await self._storage_controllers.state.get_current_state_ids( room_id, on_invalidate=cache_context.invalidate ) if not current_state_ids: # We're not in the room, so may as well bail out here. return result event_map = await self.store.get_events( [ event_id for key, event_id in current_state_ids.items() if key[0] in ( EventTypes.Create, EventTypes.JoinRules, EventTypes.Name, EventTypes.Topic, EventTypes.CanonicalAlias, EventTypes.RoomHistoryVisibility, EventTypes.GuestAccess, "m.room.avatar", ) ] ) current_state = {(ev.type, ev.state_key): ev for ev in event_map.values()} # Double check that this is actually a public room. join_rules_event = current_state.get((EventTypes.JoinRules, "")) if join_rules_event: join_rule = join_rules_event.content.get("join_rule", None) if not allow_private and join_rule and join_rule != JoinRules.PUBLIC: return None # Return whether this room is open to federation users or not create_event = current_state[EventTypes.Create, ""] result["m.federate"] = create_event.content.get( EventContentFields.FEDERATE, True ) name_event = current_state.get((EventTypes.Name, "")) if name_event: name = name_event.content.get("name", None) if name: result["name"] = name topic_event = current_state.get((EventTypes.Topic, "")) if topic_event: topic = topic_event.content.get("topic", None) if topic: result["topic"] = topic canonical_event = current_state.get((EventTypes.CanonicalAlias, "")) if canonical_event: canonical_alias = canonical_event.content.get("alias", None) if canonical_alias: result["canonical_alias"] = canonical_alias visibility_event = current_state.get((EventTypes.RoomHistoryVisibility, "")) visibility = None if visibility_event: visibility = visibility_event.content.get("history_visibility", None) result["world_readable"] = visibility == HistoryVisibility.WORLD_READABLE guest_event = current_state.get((EventTypes.GuestAccess, "")) guest = None if guest_event: guest = guest_event.content.get(EventContentFields.GUEST_ACCESS) result["guest_can_join"] = guest == GuestAccess.CAN_JOIN avatar_event = current_state.get(("m.room.avatar", "")) if avatar_event: avatar_url = avatar_event.content.get("url", None) if avatar_url: result["avatar_url"] = avatar_url return result async def get_remote_public_room_list( self, server_name: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Get the public room list from remote server Raises: SynapseError """ if not self.enable_room_list_search: return {"chunk": [], "total_room_count_estimate": 0} if search_filter: # Searching across federation is defined in MSC2197. # However, the remote homeserver may or may not actually support it. # So we first try an MSC2197 remote-filtered search, then fall back # to a locally-filtered search if we must. try: res = await self._get_remote_list_cached( server_name, limit=limit, since_token=since_token, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, search_filter=search_filter, ) return res except HttpResponseException as hre: syn_err = hre.to_synapse_error() if hre.code in (404, 405) or syn_err.errcode in ( Codes.UNRECOGNIZED, Codes.NOT_FOUND, ): logger.debug("Falling back to locally-filtered /publicRooms") else: # Not an error that should trigger a fallback. raise SynapseError(502, "Failed to fetch room list") except RequestSendFailed: # Not an error that should trigger a fallback. raise SynapseError(502, "Failed to fetch room list") # if we reach this point, then we fall back to the situation where # we currently don't support searching across federation, so we have # to do it manually without pagination limit = None since_token = None try: res = await self._get_remote_list_cached( server_name, limit=limit, since_token=since_token, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) except (RequestSendFailed, HttpResponseException): raise SynapseError(502, "Failed to fetch room list") if search_filter: res = { "chunk": [ entry for entry in list(res.get("chunk", [])) if _matches_room_entry(entry, search_filter) ] } return res async def _get_remote_list_cached( self, server_name: str, limit: Optional[int] = None, since_token: Optional[str] = None, search_filter: Optional[dict] = None, include_all_networks: bool = False, third_party_instance_id: Optional[str] = None, ) -> JsonDict: """Wrapper around FederationClient.get_public_rooms that caches the result. """ repl_layer = self.hs.get_federation_client() if search_filter: # We can't cache when asking for search return await repl_layer.get_public_rooms( server_name, limit=limit, since_token=since_token, search_filter=search_filter, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) key = ( server_name, limit, since_token, include_all_networks, third_party_instance_id, ) return await self.remote_response_cache.wrap( key, repl_layer.get_public_rooms, server_name, limit=limit, since_token=since_token, search_filter=search_filter, include_all_networks=include_all_networks, third_party_instance_id=third_party_instance_id, ) @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomListNextBatch: last_joined_members: int # The count to get rooms after/before last_room_id: str # The room_id to get rooms after/before direction_is_forward: bool # True if this is a next_batch, false if prev_batch KEY_DICT = { "last_joined_members": "m", "last_room_id": "r", "direction_is_forward": "d", } REVERSE_KEY_DICT = {v: k for k, v in KEY_DICT.items()} @classmethod def from_token(cls, token: str) -> "RoomListNextBatch": decoded = msgpack.loads(decode_base64(token), raw=False) return RoomListNextBatch( **{cls.REVERSE_KEY_DICT[key]: val for key, val in decoded.items()} ) def to_token(self) -> str: return encode_base64( msgpack.dumps( {self.KEY_DICT[key]: val for key, val in attr.asdict(self).items()} ) ) def copy_and_replace(self, **kwds: Any) -> "RoomListNextBatch": return attr.evolve(self, **kwds) def _matches_room_entry(room_entry: JsonDict, search_filter: dict) -> bool: """Determines whether the given search filter matches a room entry returned over federation. Only used if the remote server does not support MSC2197 remote-filtered search, and hence does not support MSC3827 filtering of `/publicRooms` by room type either. In this case, we cannot apply the `room_type` filter since no `room_type` field is returned. """ if search_filter and search_filter.get( PublicRoomsFilterFields.GENERIC_SEARCH_TERM, None ): generic_search_term = search_filter[ PublicRoomsFilterFields.GENERIC_SEARCH_TERM ].upper() if generic_search_term in room_entry.get("name", "").upper(): return True elif generic_search_term in room_entry.get("topic", "").upper(): return True elif generic_search_term in room_entry.get("canonical_alias", "").upper(): return True else: return True return False synapse-1.100.0/synapse/handlers/room_member.py000066400000000000000000002575451455622526000215230ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 Sorunome # Copyright 2016-2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import logging import random from http import HTTPStatus from typing import TYPE_CHECKING, Iterable, List, Optional, Set, Tuple from synapse import types from synapse.api.constants import ( AccountDataTypes, EventContentFields, EventTypes, GuestAccess, Membership, ) from synapse.api.errors import ( AuthError, Codes, PartialStateConflictError, ShadowBanError, SynapseError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.event_auth import get_named_level, get_power_level_event from synapse.events import EventBase from synapse.events.snapshot import EventContext from synapse.handlers.pagination import PURGE_ROOM_ACTION_NAME from synapse.handlers.profile import MAX_AVATAR_URL_LEN, MAX_DISPLAYNAME_LEN from synapse.handlers.state_deltas import MatchChange, StateDeltasHandler from synapse.handlers.worker_lock import NEW_EVENT_DURING_PURGE_LOCK_NAME from synapse.logging import opentracing from synapse.metrics import event_processing_positions from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.databases.main.state_deltas import StateDelta from synapse.types import ( JsonDict, Requester, RoomAlias, RoomID, StateMap, UserID, create_requester, get_domain_from_id, ) from synapse.types.state import StateFilter from synapse.util.async_helpers import Linearizer from synapse.util.distributor import user_left_room if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class NoKnownServersError(SynapseError): """No server already resident to the room was provided to the join/knock operation.""" def __init__(self, msg: str = "No known servers"): super().__init__(404, msg) class RoomMemberHandler(metaclass=abc.ABCMeta): # TODO(paul): This handler currently contains a messy conflation of # low-level API that works on UserID objects and so on, and REST-level # API that takes ID strings and returns pagination chunks. These concerns # ought to be separated out a lot better. def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.auth = hs.get_auth() self.state_handler = hs.get_state_handler() self.config = hs.config self._server_name = hs.hostname self.federation_handler = hs.get_federation_handler() self.directory_handler = hs.get_directory_handler() self.identity_handler = hs.get_identity_handler() self.registration_handler = hs.get_registration_handler() self.profile_handler = hs.get_profile_handler() self.event_creation_handler = hs.get_event_creation_handler() self.account_data_handler = hs.get_account_data_handler() self.event_auth_handler = hs.get_event_auth_handler() self._worker_lock_handler = hs.get_worker_locks_handler() self.member_linearizer: Linearizer = Linearizer(name="member") self.member_as_limiter = Linearizer(max_count=10, name="member_as_limiter") self.clock = hs.get_clock() self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self._third_party_event_rules = ( hs.get_module_api_callbacks().third_party_event_rules ) self._server_notices_mxid = self.config.servernotices.server_notices_mxid self._enable_lookup = hs.config.registration.enable_3pid_lookup self.allow_per_room_profiles = self.config.server.allow_per_room_profiles self._join_rate_limiter_local = Ratelimiter( store=self.store, clock=self.clock, cfg=hs.config.ratelimiting.rc_joins_local, ) # Tracks joins from local users to rooms this server isn't a member of. # I.e. joins this server makes by requesting /make_join /send_join from # another server. self._join_rate_limiter_remote = Ratelimiter( store=self.store, clock=self.clock, cfg=hs.config.ratelimiting.rc_joins_remote, ) # TODO: find a better place to keep this Ratelimiter. # It needs to be # - written to by event persistence code # - written to by something which can snoop on replication streams # - read by the RoomMemberHandler to rate limit joins from local users # - read by the FederationServer to rate limit make_joins and send_joins from # other homeservers # I wonder if a homeserver-wide collection of rate limiters might be cleaner? self._join_rate_per_room_limiter = Ratelimiter( store=self.store, clock=self.clock, cfg=hs.config.ratelimiting.rc_joins_per_room, ) # Ratelimiter for invites, keyed by room (across all issuers, all # recipients). self._invites_per_room_limiter = Ratelimiter( store=self.store, clock=self.clock, cfg=hs.config.ratelimiting.rc_invites_per_room, ) # Ratelimiter for invites, keyed by recipient (across all rooms, all # issuers). self._invites_per_recipient_limiter = Ratelimiter( store=self.store, clock=self.clock, cfg=hs.config.ratelimiting.rc_invites_per_user, ) # Ratelimiter for invites, keyed by issuer (across all rooms, all # recipients). self._invites_per_issuer_limiter = Ratelimiter( store=self.store, clock=self.clock, cfg=hs.config.ratelimiting.rc_invites_per_issuer, ) self._third_party_invite_limiter = Ratelimiter( store=self.store, clock=self.clock, cfg=hs.config.ratelimiting.rc_third_party_invite, ) self.request_ratelimiter = hs.get_request_ratelimiter() hs.get_notifier().add_new_join_in_room_callback(self._on_user_joined_room) self._forgotten_room_retention_period = ( hs.config.server.forgotten_room_retention_period ) def _on_user_joined_room(self, event_id: str, room_id: str) -> None: """Notify the rate limiter that a room join has occurred. Use this to inform the RoomMemberHandler about joins that have either - taken place on another homeserver, or - on another worker in this homeserver. Joins actioned by this worker should use the usual `ratelimit` method, which checks the limit and increments the counter in one go. """ self._join_rate_per_room_limiter.record_action(requester=None, key=room_id) @abc.abstractmethod async def _remote_join( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Try and join a room that this server is not in Args: requester: The user making the request, according to the access token. remote_room_hosts: List of servers that can be used to join via. room_id: Room that we are trying to join user: User who is trying to join content: A dict that should be used as the content of the join event. Raises: NoKnownServersError: if remote_room_hosts does not contain a server joined to the room. """ raise NotImplementedError() @abc.abstractmethod async def remote_knock( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Try and knock on a room that this server is not in Args: remote_room_hosts: List of servers that can be used to knock via. room_id: Room that we are trying to knock on. user: User who is trying to knock. content: A dict that should be used as the content of the knock event. """ raise NotImplementedError() @abc.abstractmethod async def remote_reject_invite( self, invite_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rejects an out-of-band invite we have received from a remote server Args: invite_event_id: ID of the invite to be rejected txn_id: optional transaction ID supplied by the client requester: user making the rejection request, according to the access token content: additional content to include in the rejection event. Normally an empty dict. Returns: event id, stream_id of the leave event """ raise NotImplementedError() @abc.abstractmethod async def remote_rescind_knock( self, knock_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """Rescind a local knock made on a remote room. Args: knock_event_id: The ID of the knock event to rescind. txn_id: An optional transaction ID supplied by the client. requester: The user making the request, according to the access token. content: The content of the generated leave event. Returns: A tuple containing (event_id, stream_id of the leave event). """ raise NotImplementedError() @abc.abstractmethod async def _user_left_room(self, target: UserID, room_id: str) -> None: """Notifies distributor on master process that the user has left the room. Args: target room_id """ raise NotImplementedError() async def forget( self, user: UserID, room_id: str, do_not_schedule_purge: bool = False ) -> None: user_id = user.to_string() member = await self._storage_controllers.state.get_current_state_event( room_id=room_id, event_type=EventTypes.Member, state_key=user_id ) membership = member.membership if member else None if membership is not None and membership not in [ Membership.LEAVE, Membership.BAN, ]: raise SynapseError(400, "User %s in room %s" % (user_id, room_id)) # In normal case this call is only required if `membership` is not `None`. # But: After the last member had left the room, the background update # `_background_remove_left_rooms` is deleting rows related to this room from # the table `current_state_events` and `get_current_state_events` is `None`. await self.store.forget(user_id, room_id) # If everyone locally has left the room, then there is no reason for us to keep the # room around and we automatically purge room after a little bit if ( not do_not_schedule_purge and self._forgotten_room_retention_period and await self.store.is_locally_forgotten_room(room_id) ): await self.hs.get_task_scheduler().schedule_task( PURGE_ROOM_ACTION_NAME, resource_id=room_id, timestamp=self.clock.time_msec() + self._forgotten_room_retention_period, ) async def ratelimit_multiple_invites( self, requester: Optional[Requester], room_id: Optional[str], n_invites: int, update: bool = True, ) -> None: """Ratelimit more than one invite sent by the given requester in the given room. Args: requester: The requester sending the invites. room_id: The room the invites are being sent in. n_invites: The amount of invites to ratelimit for. update: Whether to update the ratelimiter's cache. Raises: LimitExceededError: The requester can't send that many invites in the room. """ await self._invites_per_room_limiter.ratelimit( requester, room_id, update=update, n_actions=n_invites, ) async def ratelimit_invite( self, requester: Optional[Requester], room_id: Optional[str], invitee_user_id: str, ) -> None: """Ratelimit invites by room and by target user. If room ID is missing then we just rate limit by target user. """ if room_id: await self._invites_per_room_limiter.ratelimit(requester, room_id) await self._invites_per_recipient_limiter.ratelimit(requester, invitee_user_id) if requester is not None: await self._invites_per_issuer_limiter.ratelimit(requester) async def _local_membership_update( self, requester: Requester, target: UserID, room_id: str, membership: str, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, state_event_ids: Optional[List[str]] = None, depth: Optional[int] = None, txn_id: Optional[str] = None, ratelimit: bool = True, content: Optional[dict] = None, require_consent: bool = True, outlier: bool = False, origin_server_ts: Optional[int] = None, ) -> Tuple[str, int]: """ Internal membership update function to get an existing event or create and persist a new event for the new membership change. Args: requester: User requesting the membership change, i.e. the sender of the desired membership event. target: Use whose membership should change, i.e. the state_key of the desired membership event. room_id: membership: allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases (previously useful for MSC2716). prev_event_ids: The event IDs to use as the prev events state_event_ids: The full state at a given event. This was previously used particularly by the MSC2716 /batch_send endpoint. This should normally be left as None, which will cause the auth_event_ids to be calculated based on the room state at the prev_events. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. txn_id: ratelimit: content: require_consent: outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. origin_server_ts: The origin_server_ts to use if a new event is created. Uses the current timestamp if set to None. Returns: Tuple of event ID and stream ordering position """ user_id = target.to_string() if content is None: content = {} content["membership"] = membership if requester.is_guest: content["kind"] = "guest" # Check if we already have an event with a matching transaction ID. (We # do this check just before we persist an event as well, but may as well # do it up front for efficiency.) if txn_id: existing_event_id = ( await self.event_creation_handler.get_event_id_from_transaction( requester, txn_id, room_id ) ) if existing_event_id: event_pos = await self.store.get_position_for_event(existing_event_id) return existing_event_id, event_pos.stream # Try several times, it could fail with PartialStateConflictError, # in handle_new_client_event, cf comment in except block. max_retries = 5 for i in range(max_retries): try: ( event, unpersisted_context, ) = await self.event_creation_handler.create_event( requester, { "type": EventTypes.Member, "content": content, "room_id": room_id, "sender": requester.user.to_string(), "state_key": user_id, # For backwards compatibility: "membership": membership, "origin_server_ts": origin_server_ts, }, txn_id=txn_id, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, state_event_ids=state_event_ids, depth=depth, require_consent=require_consent, outlier=outlier, ) context = await unpersisted_context.persist(event) prev_state_ids = await context.get_prev_state_ids( StateFilter.from_types([(EventTypes.Member, user_id)]) ) prev_member_event_id = prev_state_ids.get( (EventTypes.Member, user_id), None ) with opentracing.start_active_span("handle_new_client_event"): result_event = ( await self.event_creation_handler.handle_new_client_event( requester, events_and_context=[(event, context)], extra_users=[target], ratelimit=ratelimit, ) ) if event.membership == Membership.LEAVE: if prev_member_event_id: prev_member_event = await self.store.get_event( prev_member_event_id ) if prev_member_event.membership == Membership.JOIN: await self._user_left_room(target, room_id) break except PartialStateConflictError as e: # Persisting couldn't happen because the room got un-partial stated # in the meantime and context needs to be recomputed, so let's do so. if i == max_retries - 1: raise e # we know it was persisted, so should have a stream ordering assert result_event.internal_metadata.stream_ordering return result_event.event_id, result_event.internal_metadata.stream_ordering async def copy_room_tags_and_direct_to_room( self, old_room_id: str, new_room_id: str, user_id: str ) -> None: """Copies the tags and direct room state from one room to another. Args: old_room_id: The room ID of the old room. new_room_id: The room ID of the new room. user_id: The user's ID. """ # Retrieve user account data for predecessor room user_account_data = await self.store.get_global_account_data_for_user(user_id) # Copy direct message state if applicable direct_rooms = user_account_data.get(AccountDataTypes.DIRECT, {}) # Check which key this room is under if isinstance(direct_rooms, dict): for key, room_id_list in direct_rooms.items(): if old_room_id in room_id_list and new_room_id not in room_id_list: # Add new room_id to this key direct_rooms[key].append(new_room_id) # Save back to user's m.direct account data await self.account_data_handler.add_account_data_for_user( user_id, AccountDataTypes.DIRECT, direct_rooms ) break # Copy room tags if applicable room_tags = await self.store.get_tags_for_room(user_id, old_room_id) # Copy each room tag to the new room for tag, tag_content in room_tags.items(): await self.account_data_handler.add_tag_to_room( user_id, new_room_id, tag, tag_content ) async def update_membership( self, requester: Requester, target: UserID, room_id: str, action: str, txn_id: Optional[str] = None, remote_room_hosts: Optional[List[str]] = None, third_party_signed: Optional[dict] = None, ratelimit: bool = True, content: Optional[dict] = None, new_room: bool = False, require_consent: bool = True, outlier: bool = False, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, state_event_ids: Optional[List[str]] = None, depth: Optional[int] = None, origin_server_ts: Optional[int] = None, ) -> Tuple[str, int]: """Update a user's membership in a room. Params: requester: The user who is performing the update. target: The user whose membership is being updated. room_id: The room ID whose membership is being updated. action: The membership change, see synapse.api.constants.Membership. txn_id: The transaction ID, if given. remote_room_hosts: Remote servers to send the update to. third_party_signed: Information from a 3PID invite. ratelimit: Whether to rate limit the request. content: The content of the created event. new_room: Whether the membership update is happening in the context of a room creation. require_consent: Whether consent is required. outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases (previously useful for MSC2716). prev_event_ids: The event IDs to use as the prev events state_event_ids: The full state at a given event. This was previously used particularly by the MSC2716 /batch_send endpoint. This should normally be left as None, which will cause the auth_event_ids to be calculated based on the room state at the prev_events. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. origin_server_ts: The origin_server_ts to use if a new event is created. Uses the current timestamp if set to None. Returns: A tuple of the new event ID and stream ID. Raises: ShadowBanError if a shadow-banned requester attempts to send an invite. """ if ratelimit: if action == Membership.JOIN: # Only rate-limit if the user isn't already joined to the room, otherwise # we'll end up blocking profile updates. ( current_membership, _, ) = await self.store.get_local_current_membership_for_user_in_room( requester.user.to_string(), room_id, ) if current_membership != Membership.JOIN: await self._join_rate_limiter_local.ratelimit(requester) await self._join_rate_per_room_limiter.ratelimit( requester, key=room_id, update=False ) elif action == Membership.INVITE: await self.ratelimit_invite(requester, room_id, target.to_string()) if action == Membership.INVITE and requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() key = (room_id,) as_id = object() if requester.app_service: as_id = requester.app_service.id # We first linearise by the application service (to try to limit concurrent joins # by application services), and then by room ID. async with self.member_as_limiter.queue(as_id): async with self.member_linearizer.queue(key): async with self._worker_lock_handler.acquire_read_write_lock( NEW_EVENT_DURING_PURGE_LOCK_NAME, room_id, write=False ): with opentracing.start_active_span("update_membership_locked"): result = await self.update_membership_locked( requester, target, room_id, action, txn_id=txn_id, remote_room_hosts=remote_room_hosts, third_party_signed=third_party_signed, ratelimit=ratelimit, content=content, new_room=new_room, require_consent=require_consent, outlier=outlier, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, state_event_ids=state_event_ids, depth=depth, origin_server_ts=origin_server_ts, ) return result async def update_membership_locked( self, requester: Requester, target: UserID, room_id: str, action: str, txn_id: Optional[str] = None, remote_room_hosts: Optional[List[str]] = None, third_party_signed: Optional[dict] = None, ratelimit: bool = True, content: Optional[dict] = None, new_room: bool = False, require_consent: bool = True, outlier: bool = False, allow_no_prev_events: bool = False, prev_event_ids: Optional[List[str]] = None, state_event_ids: Optional[List[str]] = None, depth: Optional[int] = None, origin_server_ts: Optional[int] = None, ) -> Tuple[str, int]: """Helper for update_membership. Assumes that the membership linearizer is already held for the room. Args: requester: target: room_id: action: txn_id: remote_room_hosts: third_party_signed: ratelimit: content: new_room: Whether the membership update is happening in the context of a room creation. require_consent: outlier: Indicates whether the event is an `outlier`, i.e. if it's from an arbitrary point and floating in the DAG as opposed to being inline with the current DAG. allow_no_prev_events: Whether to allow this event to be created an empty list of prev_events. Normally this is prohibited just because most events should have a prev_event and we should only use this in special cases (previously useful for MSC2716). prev_event_ids: The event IDs to use as the prev events state_event_ids: The full state at a given event. This was previously used particularly by the MSC2716 /batch_send endpoint. This should normally be left as None, which will cause the auth_event_ids to be calculated based on the room state at the prev_events. depth: Override the depth used to order the event in the DAG. Should normally be set to None, which will cause the depth to be calculated based on the prev_events. origin_server_ts: The origin_server_ts to use if a new event is created. Uses the current timestamp if set to None. Returns: A tuple of the new event ID and stream ID. """ content_specified = bool(content) if content is None: content = {} else: # We do a copy here as we potentially change some keys # later on. content = dict(content) # allow the server notices mxid to set room-level profile is_requester_server_notices_user = ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ) if ( not self.allow_per_room_profiles and not is_requester_server_notices_user ) or requester.shadow_banned: # Strip profile data, knowing that new profile data will be added to the # event's content in event_creation_handler.create_event() using the target's # global profile. content.pop("displayname", None) content.pop("avatar_url", None) if len(content.get("displayname") or "") > MAX_DISPLAYNAME_LEN: raise SynapseError( 400, f"Displayname is too long (max {MAX_DISPLAYNAME_LEN})", errcode=Codes.BAD_JSON, ) if len(content.get("avatar_url") or "") > MAX_AVATAR_URL_LEN: raise SynapseError( 400, f"Avatar URL is too long (max {MAX_AVATAR_URL_LEN})", errcode=Codes.BAD_JSON, ) if "avatar_url" in content and content.get("avatar_url") is not None: if not await self.profile_handler.check_avatar_size_and_mime_type( content["avatar_url"], ): raise SynapseError(403, "This avatar is not allowed", Codes.FORBIDDEN) # The event content should *not* include the authorising user as # it won't be properly signed. Strip it out since it might come # back from a client updating a display name / avatar. # # This only applies to restricted rooms, but there should be no reason # for a client to include it. Unconditionally remove it. content.pop(EventContentFields.AUTHORISING_USER, None) effective_membership_state = action if action in ["kick", "unban"]: effective_membership_state = "leave" # if this is a join with a 3pid signature, we may need to turn a 3pid # invite into a normal invite before we can handle the join. if third_party_signed is not None: await self.federation_handler.exchange_third_party_invite( third_party_signed["sender"], target.to_string(), room_id, third_party_signed, ) if not remote_room_hosts: remote_room_hosts = [] if effective_membership_state not in ("leave", "ban"): is_blocked = await self.store.is_room_blocked(room_id) if is_blocked: raise SynapseError(403, "This room has been blocked on this server") if effective_membership_state == Membership.INVITE: target_id = target.to_string() # block any attempts to invite the server notices mxid if target_id == self._server_notices_mxid: raise SynapseError(HTTPStatus.FORBIDDEN, "Cannot invite this user") block_invite_result = None if ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ): # allow the server notices mxid to send invites is_requester_admin = True else: is_requester_admin = await self.auth.is_server_admin(requester) if not is_requester_admin: if self.config.server.block_non_admin_invites: logger.info( "Blocking invite: user is not admin and non-admin " "invites disabled" ) block_invite_result = (Codes.FORBIDDEN, {}) spam_check = await self._spam_checker_module_callbacks.user_may_invite( requester.user.to_string(), target_id, room_id ) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: logger.info("Blocking invite due to spam checker") block_invite_result = spam_check if block_invite_result is not None: raise SynapseError( 403, "Invites have been disabled on this server", errcode=block_invite_result[0], additional_fields=block_invite_result[1], ) # An empty prev_events list is allowed as long as the auth_event_ids are present if prev_event_ids is not None: return await self._local_membership_update( requester=requester, target=target, room_id=room_id, membership=effective_membership_state, txn_id=txn_id, ratelimit=ratelimit, allow_no_prev_events=allow_no_prev_events, prev_event_ids=prev_event_ids, state_event_ids=state_event_ids, depth=depth, content=content, require_consent=require_consent, outlier=outlier, origin_server_ts=origin_server_ts, ) latest_event_ids = await self.store.get_prev_events_for_room(room_id) is_partial_state_room = await self.store.is_partial_state_room(room_id) partial_state_before_join = await self.state_handler.compute_state_after_events( room_id, latest_event_ids, await_full_state=False ) # `is_partial_state_room` also indicates whether `partial_state_before_join` is # partial. is_host_in_room = await self._is_host_in_room(partial_state_before_join) # if we are not in the room, we won't have the current state if is_host_in_room: # TODO: Refactor into dictionary of explicitly allowed transitions # between old and new state, with specific error messages for some # transitions and generic otherwise old_state_id = partial_state_before_join.get( (EventTypes.Member, target.to_string()) ) if old_state_id: old_state = await self.store.get_event(old_state_id, allow_none=True) old_membership = ( old_state.content.get("membership") if old_state else None ) if action == "unban" and old_membership != "ban": raise SynapseError( 403, "Cannot unban user who was not banned" " (membership=%s)" % old_membership, errcode=Codes.BAD_STATE, ) if old_membership == "ban" and action not in ["ban", "unban", "leave"]: raise SynapseError( 403, "Cannot %s user who was banned" % (action,), errcode=Codes.BAD_STATE, ) if old_state: same_content = content == old_state.content same_membership = old_membership == effective_membership_state same_sender = requester.user.to_string() == old_state.sender if same_sender and same_membership and same_content: # duplicate event. # we know it was persisted, so must have a stream ordering. assert old_state.internal_metadata.stream_ordering return ( old_state.event_id, old_state.internal_metadata.stream_ordering, ) if old_membership in ["ban", "leave"] and action == "kick": raise AuthError(403, "The target user is not in the room") # we don't allow people to reject invites to the server notice # room, but they can leave it once they are joined. if ( old_membership == Membership.INVITE and effective_membership_state == Membership.LEAVE ): is_blocked = await self.store.is_server_notice_room(room_id) if is_blocked: raise SynapseError( HTTPStatus.FORBIDDEN, "You cannot reject this invite", errcode=Codes.CANNOT_LEAVE_SERVER_NOTICE_ROOM, ) else: if action == "kick": raise AuthError(403, "The target user is not in the room") if effective_membership_state == Membership.JOIN: if requester.is_guest: guest_can_join = await self._can_guest_join(partial_state_before_join) if not guest_can_join: # This should be an auth check, but guests are a local concept, # so don't really fit into the general auth process. raise AuthError(403, "Guest access not allowed") # Figure out whether the user is a server admin to determine whether they # should be able to bypass the spam checker. if ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ): # allow the server notices mxid to join rooms bypass_spam_checker = True else: bypass_spam_checker = await self.auth.is_server_admin(requester) inviter = await self._get_inviter(target.to_string(), room_id) if ( not bypass_spam_checker # We assume that if the spam checker allowed the user to create # a room then they're allowed to join it. and not new_room ): spam_check = ( await self._spam_checker_module_callbacks.user_may_join_room( target.to_string(), room_id, is_invited=inviter is not None ) ) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: raise SynapseError( 403, "Not allowed to join this room", errcode=spam_check[0], additional_fields=spam_check[1], ) # Check if a remote join should be performed. remote_join, remote_room_hosts = await self._should_perform_remote_join( target.to_string(), room_id, remote_room_hosts, content, is_partial_state_room, is_host_in_room, partial_state_before_join, ) if remote_join: if ratelimit: await self._join_rate_limiter_remote.ratelimit( requester, ) await self._join_rate_per_room_limiter.ratelimit( requester, key=room_id, update=False, ) inviter = await self._get_inviter(target.to_string(), room_id) if inviter and not self.hs.is_mine(inviter): remote_room_hosts.append(inviter.domain) content["membership"] = Membership.JOIN try: profile = self.profile_handler if not content_specified: content["displayname"] = await profile.get_displayname(target) content["avatar_url"] = await profile.get_avatar_url(target) except Exception as e: logger.info( "Failed to get profile information while processing remote join for %r: %s", target, e, ) if requester.is_guest: content["kind"] = "guest" remote_join_response = await self._remote_join( requester, remote_room_hosts, room_id, target, content ) return remote_join_response elif effective_membership_state == Membership.LEAVE: if not is_host_in_room: # Figure out the user's current membership state for the room ( current_membership_type, current_membership_event_id, ) = await self.store.get_local_current_membership_for_user_in_room( target.to_string(), room_id ) if not current_membership_type or not current_membership_event_id: logger.info( "%s sent a leave request to %s, but that is not an active room " "on this server, or there is no pending invite or knock", target, room_id, ) raise SynapseError(404, "Not a known room") # perhaps we've been invited if current_membership_type == Membership.INVITE: invite = await self.store.get_event(current_membership_event_id) logger.info( "%s rejects invite to %s from %s", target, room_id, invite.sender, ) if not self.hs.is_mine_id(invite.sender): # send the rejection to the inviter's HS (with fallback to # local event) return await self.remote_reject_invite( invite.event_id, txn_id, requester, content, ) # the inviter was on our server, but has now left. Carry on # with the normal rejection codepath, which will also send the # rejection out to any other servers we believe are still in the room. # thanks to overzealous cleaning up of event_forward_extremities in # `delete_old_current_state_events`, it's possible to end up with no # forward extremities here. If that happens, let's just hang the # rejection off the invite event. # # see: https://github.com/matrix-org/synapse/issues/7139 if len(latest_event_ids) == 0: latest_event_ids = [invite.event_id] # or perhaps this is a remote room that a local user has knocked on elif current_membership_type == Membership.KNOCK: knock = await self.store.get_event(current_membership_event_id) return await self.remote_rescind_knock( knock.event_id, txn_id, requester, content ) elif effective_membership_state == Membership.KNOCK: if not is_host_in_room: # The knock needs to be sent over federation instead remote_room_hosts.append(get_domain_from_id(room_id)) content["membership"] = Membership.KNOCK try: profile = self.profile_handler if "displayname" not in content: content["displayname"] = await profile.get_displayname(target) if "avatar_url" not in content: content["avatar_url"] = await profile.get_avatar_url(target) except Exception as e: logger.info( "Failed to get profile information while processing remote knock for %r: %s", target, e, ) return await self.remote_knock( requester, remote_room_hosts, room_id, target, content ) return await self._local_membership_update( requester=requester, target=target, room_id=room_id, membership=effective_membership_state, txn_id=txn_id, ratelimit=ratelimit, prev_event_ids=latest_event_ids, state_event_ids=state_event_ids, depth=depth, content=content, require_consent=require_consent, outlier=outlier, origin_server_ts=origin_server_ts, ) async def _should_perform_remote_join( self, user_id: str, room_id: str, remote_room_hosts: List[str], content: JsonDict, is_partial_state_room: bool, is_host_in_room: bool, partial_state_before_join: StateMap[str], ) -> Tuple[bool, List[str]]: """ Check whether the server should do a remote join (as opposed to a local join) for a user. Generally a remote join is used if: * The server is not yet in the room. * The server is in the room, the room has restricted join rules, the user is not joined or invited to the room, and the server does not have another user who is capable of issuing invites. Args: user_id: The user joining the room. room_id: The room being joined. remote_room_hosts: A list of remote room hosts. content: The content to use as the event body of the join. This may be modified. is_partial_state_room: `True` if the server currently doesn't hold the full state of the room. is_host_in_room: `True` if the host is in the room. partial_state_before_join: The state before the join event (i.e. the resolution of the states after its parent events). May be full or partial state, depending on `is_partial_state_room`. Returns: A tuple of: True if a remote join should be performed. False if the join can be done locally. A list of remote room hosts to use. This is an empty list if a local join is to be done. """ # If the host isn't in the room, pass through the prospective hosts. if not is_host_in_room: return True, remote_room_hosts prev_member_event_id = partial_state_before_join.get( (EventTypes.Member, user_id), None ) previous_membership = None if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) previous_membership = prev_member_event.membership # If we are not fully joined yet, and the target is not already in the room, # let's do a remote join so another server with the full state can validate # that the user has not been banned for example. # We could just accept the join and wait for state res to resolve that later on # but we would then leak room history to this person until then, which is pretty # bad. if is_partial_state_room and previous_membership != Membership.JOIN: return True, remote_room_hosts # If the host is in the room, but not one of the authorised hosts # for restricted join rules, a remote join must be used. room_version = await self.store.get_room_version(room_id) # If restricted join rules are not being used, a local join can always # be used. if not await self.event_auth_handler.has_restricted_join_rules( partial_state_before_join, room_version ): return False, [] # If the user is invited to the room or already joined, the join # event can always be issued locally. if previous_membership in (Membership.JOIN, Membership.INVITE): return False, [] # All the partial state cases are covered above. We have been given the full # state of the room. assert not is_partial_state_room state_before_join = partial_state_before_join # If the local host has a user who can issue invites, then a local # join can be done. # # If not, generate a new list of remote hosts based on which # can issue invites. event_map = await self.store.get_events(state_before_join.values()) current_state = { state_key: event_map[event_id] for state_key, event_id in state_before_join.items() } allowed_servers = get_servers_from_users( get_users_which_can_issue_invite(current_state) ) # If the local server is not one of allowed servers, then a remote # join must be done. Return the list of prospective servers based on # which can issue invites. if self.hs.hostname not in allowed_servers: return True, list(allowed_servers) # Ensure the member should be allowed access via membership in a room. await self.event_auth_handler.check_restricted_join_rules( state_before_join, room_version, user_id, previous_membership ) # If this is going to be a local join, additional information must # be included in the event content in order to efficiently validate # the event. content[ EventContentFields.AUTHORISING_USER ] = await self.event_auth_handler.get_user_which_could_invite( room_id, state_before_join, ) return False, [] async def transfer_room_state_on_room_upgrade( self, old_room_id: str, room_id: str ) -> None: """Upon our server becoming aware of an upgraded room, either by upgrading a room ourselves or joining one, we can transfer over information from the previous room. Copies user state (tags/push rules) for every local user that was in the old room, as well as migrating the room directory state. Args: old_room_id: The ID of the old room room_id: The ID of the new room """ logger.info("Transferring room state from %s to %s", old_room_id, room_id) # Find all local users that were in the old room and copy over each user's state local_users = await self.store.get_local_users_in_room(old_room_id) await self.copy_user_state_on_room_upgrade(old_room_id, room_id, local_users) # Add new room to the room directory if the old room was there # Remove old room from the room directory old_room = await self.store.get_room(old_room_id) # If the old room exists and is public. if old_room is not None and old_room[0]: await self.store.set_room_is_public(old_room_id, False) await self.store.set_room_is_public(room_id, True) # Transfer alias mappings in the room directory await self.store.update_aliases_for_room(old_room_id, room_id) async def copy_user_state_on_room_upgrade( self, old_room_id: str, new_room_id: str, user_ids: Iterable[str] ) -> None: """Copy user-specific information when they join a new room when that new room is the result of a room upgrade Args: old_room_id: The ID of upgraded room new_room_id: The ID of the new room user_ids: User IDs to copy state for """ logger.debug( "Copying over room tags and push rules from %s to %s for users %s", old_room_id, new_room_id, user_ids, ) for user_id in user_ids: try: # It is an upgraded room. Copy over old tags await self.copy_room_tags_and_direct_to_room( old_room_id, new_room_id, user_id ) # Copy over push rules await self.store.copy_push_rules_from_room_to_room_for_user( old_room_id, new_room_id, user_id ) except Exception: logger.exception( "Error copying tags and/or push rules from rooms %s to %s for user %s. " "Skipping...", old_room_id, new_room_id, user_id, ) continue async def send_membership_event( self, requester: Optional[Requester], event: EventBase, context: EventContext, ratelimit: bool = True, ) -> None: """ Change the membership status of a user in a room. Args: requester: The local user who requested the membership event. If None, certain checks, like whether this homeserver can act as the sender, will be skipped. event: The membership event. context: The context of the event. ratelimit: Whether to rate limit this request. Raises: SynapseError if there was a problem changing the membership. PartialStateConflictError: if attempting to persist a partial state event in a room that has been un-partial stated. """ target_user = UserID.from_string(event.state_key) room_id = event.room_id if requester is not None: sender = UserID.from_string(event.sender) assert ( sender == requester.user ), "Sender (%s) must be same as requester (%s)" % (sender, requester.user) assert self.hs.is_mine(sender), "Sender must be our own: %s" % (sender,) else: requester = types.create_requester(target_user) prev_state_ids = await context.get_prev_state_ids( StateFilter.from_types([(EventTypes.GuestAccess, "")]) ) if event.membership == Membership.JOIN: if requester.is_guest: guest_can_join = await self._can_guest_join(prev_state_ids) if not guest_can_join: # This should be an auth check, but guests are a local concept, # so don't really fit into the general auth process. raise AuthError(403, "Guest access not allowed") if event.membership not in (Membership.LEAVE, Membership.BAN): is_blocked = await self.store.is_room_blocked(room_id) if is_blocked: raise SynapseError(403, "This room has been blocked on this server") event = await self.event_creation_handler.handle_new_client_event( requester, events_and_context=[(event, context)], extra_users=[target_user], ratelimit=ratelimit, ) if event.membership == Membership.LEAVE: prev_state_ids = await context.get_prev_state_ids( StateFilter.from_types([(EventTypes.Member, event.state_key)]) ) prev_member_event_id = prev_state_ids.get( (EventTypes.Member, event.state_key), None ) if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) if prev_member_event.membership == Membership.JOIN: await self._user_left_room(target_user, room_id) async def _can_guest_join(self, partial_current_state_ids: StateMap[str]) -> bool: """ Returns whether a guest can join a room based on its current state. Args: partial_current_state_ids: The current state of the room. May be full or partial state. """ guest_access_id = partial_current_state_ids.get( (EventTypes.GuestAccess, ""), None ) if not guest_access_id: return False guest_access = await self.store.get_event(guest_access_id) return bool( guest_access and guest_access.content and guest_access.content.get(EventContentFields.GUEST_ACCESS) == GuestAccess.CAN_JOIN ) async def kick_guest_users(self, current_state: Iterable[EventBase]) -> None: """Kick any local guest users from the room. This is called when the room state changes from guests allowed to not-allowed. Params: current_state: the current state of the room. We will iterate this to look for guest users to kick. """ for member_event in current_state: try: if member_event.type != EventTypes.Member: continue if not self.hs.is_mine_id(member_event.state_key): continue if member_event.content["membership"] not in { Membership.JOIN, Membership.INVITE, }: continue if ( "kind" not in member_event.content or member_event.content["kind"] != "guest" ): continue # We make the user choose to leave, rather than have the # event-sender kick them. This is partially because we don't # need to worry about power levels, and partially because guest # users are a concept which doesn't hugely work over federation, # and having homeservers have their own users leave keeps more # of that decision-making and control local to the guest-having # homeserver. target_user = UserID.from_string(member_event.state_key) requester = create_requester( target_user, is_guest=True, authenticated_entity=self._server_name ) handler = self.hs.get_room_member_handler() await handler.update_membership( requester, target_user, member_event.room_id, "leave", ratelimit=False, require_consent=False, ) except Exception as e: logger.exception("Error kicking guest user: %s" % (e,)) async def lookup_room_alias( self, room_alias: RoomAlias ) -> Tuple[RoomID, List[str]]: """ Get the room ID associated with a room alias. Args: room_alias: The alias to look up. Returns: A tuple of: The room ID as a RoomID object. Hosts likely to be participating in the room ([str]). Raises: SynapseError if room alias could not be found. """ directory_handler = self.directory_handler mapping = await directory_handler.get_association(room_alias) if not mapping: raise SynapseError(404, "No such room alias") room_id = mapping["room_id"] servers = mapping["servers"] # put the server which owns the alias at the front of the server list. if room_alias.domain in servers: servers.remove(room_alias.domain) servers.insert(0, room_alias.domain) return RoomID.from_string(room_id), servers async def _get_inviter(self, user_id: str, room_id: str) -> Optional[UserID]: invite = await self.store.get_invite_for_local_user_in_room( user_id=user_id, room_id=room_id ) if invite: return UserID.from_string(invite.sender) return None async def do_3pid_invite( self, room_id: str, inviter: UserID, medium: str, address: str, id_server: str, requester: Requester, txn_id: Optional[str], id_access_token: str, prev_event_ids: Optional[List[str]] = None, depth: Optional[int] = None, ) -> Tuple[str, int]: """Invite a 3PID to a room. Args: room_id: The room to invite the 3PID to. inviter: The user sending the invite. medium: The 3PID's medium. address: The 3PID's address. id_server: The identity server to use. requester: The user making the request. txn_id: The transaction ID this is part of, or None if this is not part of a transaction. id_access_token: Identity server access token. depth: Override the depth used to order the event in the DAG. prev_event_ids: The event IDs to use as the prev events Should normally be set to None, which will cause the depth to be calculated based on the prev_events. Returns: Tuple of event ID and stream ordering position Raises: ShadowBanError if the requester has been shadow-banned. """ if self.config.server.block_non_admin_invites: is_requester_admin = await self.auth.is_server_admin(requester) if not is_requester_admin: raise SynapseError( 403, "Invites have been disabled on this server", Codes.FORBIDDEN ) if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() # We need to rate limit *before* we send out any 3PID invites, so we # can't just rely on the standard ratelimiting of events. await self._third_party_invite_limiter.ratelimit(requester) can_invite = await self._third_party_event_rules.check_threepid_can_be_invited( medium, address, room_id ) if not can_invite: raise SynapseError( 403, "This third-party identifier can not be invited in this room", Codes.FORBIDDEN, ) if not self._enable_lookup: raise SynapseError( 403, "Looking up third-party identifiers is denied from this server" ) invitee = await self.identity_handler.lookup_3pid( id_server, medium, address, id_access_token ) if invitee: # Note that update_membership with an action of "invite" can raise # a ShadowBanError, but this was done above already. # We don't check the invite against the spamchecker(s) here (through # user_may_invite) because we'll do it further down the line anyway (in # update_membership_locked). event_id, stream_id = await self.update_membership( requester, UserID.from_string(invitee), room_id, "invite", txn_id=txn_id ) else: # Check if the spamchecker(s) allow this invite to go through. spam_check = ( await self._spam_checker_module_callbacks.user_may_send_3pid_invite( inviter_userid=requester.user.to_string(), medium=medium, address=address, room_id=room_id, ) ) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: raise SynapseError( 403, "Cannot send threepid invite", errcode=spam_check[0], additional_fields=spam_check[1], ) event, stream_id = await self._make_and_store_3pid_invite( requester, id_server, medium, address, room_id, inviter, txn_id=txn_id, id_access_token=id_access_token, prev_event_ids=prev_event_ids, depth=depth, ) event_id = event.event_id return event_id, stream_id async def _make_and_store_3pid_invite( self, requester: Requester, id_server: str, medium: str, address: str, room_id: str, user: UserID, txn_id: Optional[str], id_access_token: str, prev_event_ids: Optional[List[str]] = None, depth: Optional[int] = None, ) -> Tuple[EventBase, int]: room_state = await self._storage_controllers.state.get_current_state( room_id, StateFilter.from_types( [ (EventTypes.Member, user.to_string()), (EventTypes.CanonicalAlias, ""), (EventTypes.Name, ""), (EventTypes.Create, ""), (EventTypes.JoinRules, ""), (EventTypes.RoomAvatar, ""), ] ), ) inviter_display_name = "" inviter_avatar_url = "" member_event = room_state.get((EventTypes.Member, user.to_string())) if member_event: inviter_display_name = member_event.content.get("displayname", "") inviter_avatar_url = member_event.content.get("avatar_url", "") # if user has no display name, default to their MXID if not inviter_display_name: inviter_display_name = user.to_string() canonical_room_alias = "" canonical_alias_event = room_state.get((EventTypes.CanonicalAlias, "")) if canonical_alias_event: canonical_room_alias = canonical_alias_event.content.get("alias", "") room_name = "" room_name_event = room_state.get((EventTypes.Name, "")) if room_name_event: room_name = room_name_event.content.get("name", "") room_type = None room_create_event = room_state.get((EventTypes.Create, "")) if room_create_event: room_type = room_create_event.content.get(EventContentFields.ROOM_TYPE) room_join_rules = "" join_rules_event = room_state.get((EventTypes.JoinRules, "")) if join_rules_event: room_join_rules = join_rules_event.content.get("join_rule", "") room_avatar_url = "" room_avatar_event = room_state.get((EventTypes.RoomAvatar, "")) if room_avatar_event: room_avatar_url = room_avatar_event.content.get("url", "") ( token, public_keys, fallback_public_key, display_name, ) = await self.identity_handler.ask_id_server_for_third_party_invite( requester=requester, id_server=id_server, medium=medium, address=address, room_id=room_id, inviter_user_id=user.to_string(), room_alias=canonical_room_alias, room_avatar_url=room_avatar_url, room_join_rules=room_join_rules, room_name=room_name, room_type=room_type, inviter_display_name=inviter_display_name, inviter_avatar_url=inviter_avatar_url, id_access_token=id_access_token, ) ( event, stream_id, ) = await self.event_creation_handler.create_and_send_nonmember_event( requester, { "type": EventTypes.ThirdPartyInvite, "content": { "display_name": display_name, "public_keys": public_keys, # For backwards compatibility: "key_validity_url": fallback_public_key["key_validity_url"], "public_key": fallback_public_key["public_key"], }, "room_id": room_id, "sender": user.to_string(), "state_key": token, }, ratelimit=False, txn_id=txn_id, prev_event_ids=prev_event_ids, depth=depth, ) return event, stream_id async def _is_host_in_room(self, partial_current_state_ids: StateMap[str]) -> bool: """Returns whether the homeserver is in the room based on its current state. Args: partial_current_state_ids: The current state of the room. May be full or partial state. """ # Have we just created the room, and is this about to be the very # first member event? create_event_id = partial_current_state_ids.get(("m.room.create", "")) if len(partial_current_state_ids) == 1 and create_event_id: # We can only get here if we're in the process of creating the room return True for etype, state_key in partial_current_state_ids: if etype != EventTypes.Member or not self.hs.is_mine_id(state_key): continue event_id = partial_current_state_ids[(etype, state_key)] event = await self.store.get_event(event_id, allow_none=True) if not event: continue if event.membership == Membership.JOIN: return True return False class RoomMemberMasterHandler(RoomMemberHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self.distributor = hs.get_distributor() self.distributor.declare("user_left_room") async def _is_remote_room_too_complex( self, room_id: str, remote_room_hosts: List[str] ) -> Optional[bool]: """ Check if complexity of a remote room is too great. Args: room_id remote_room_hosts Returns: bool of whether the complexity is too great, or None if unable to be fetched """ max_complexity = self.hs.config.server.limit_remote_rooms.complexity complexity = await self.federation_handler.get_room_complexity( remote_room_hosts, room_id ) if complexity: return complexity["v1"] > max_complexity return None async def _is_local_room_too_complex(self, room_id: str) -> bool: """ Check if the complexity of a local room is too great. Args: room_id: The room ID to check for complexity. """ max_complexity = self.hs.config.server.limit_remote_rooms.complexity complexity = await self.store.get_room_complexity(room_id) return complexity["v1"] > max_complexity async def _remote_join( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Implements RoomMemberHandler._remote_join""" # filter ourselves out of remote_room_hosts: do_invite_join ignores it # and if it is the only entry we'd like to return a 404 rather than a # 500. remote_room_hosts = [ host for host in remote_room_hosts if host != self.hs.hostname ] if len(remote_room_hosts) == 0: raise NoKnownServersError( "Can't join remote room because no servers " "that are in the room have been provided.", ) check_complexity = self.hs.config.server.limit_remote_rooms.enabled if ( check_complexity and self.hs.config.server.limit_remote_rooms.admins_can_join ): check_complexity = not await self.store.is_server_admin(user) if check_complexity: # Fetch the room complexity too_complex = await self._is_remote_room_too_complex( room_id, remote_room_hosts ) if too_complex is True: raise SynapseError( code=400, msg=self.hs.config.server.limit_remote_rooms.complexity_error, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, ) # We don't do an auth check if we are doing an invite # join dance for now, since we're kinda implicitly checking # that we are allowed to join when we decide whether or not we # need to do the invite/join dance. event_id, stream_id = await self.federation_handler.do_invite_join( remote_room_hosts, room_id, user.to_string(), content ) # Check the room we just joined wasn't too large, if we didn't fetch the # complexity of it before. if check_complexity: if too_complex is False: # We checked, and we're under the limit. return event_id, stream_id # Check again, but with the local state events too_complex = await self._is_local_room_too_complex(room_id) if too_complex is False: # We're under the limit. return event_id, stream_id # The room is too large. Leave. requester = types.create_requester( user, authenticated_entity=self._server_name ) await self.update_membership( requester=requester, target=user, room_id=room_id, action="leave" ) raise SynapseError( code=400, msg=self.hs.config.server.limit_remote_rooms.complexity_error, errcode=Codes.RESOURCE_LIMIT_EXCEEDED, ) return event_id, stream_id async def remote_reject_invite( self, invite_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rejects an out-of-band invite received from a remote user Implements RoomMemberHandler.remote_reject_invite """ invite_event = await self.store.get_event(invite_event_id) room_id = invite_event.room_id target_user = invite_event.state_key # first of all, try doing a rejection via the inviting server fed_handler = self.federation_handler try: inviter_id = UserID.from_string(invite_event.sender) event, stream_id = await fed_handler.do_remotely_reject_invite( [inviter_id.domain], room_id, target_user, content=content ) return event.event_id, stream_id except Exception as e: # if we were unable to reject the invite, we will generate our own # leave event. # # The 'except' clause is very broad, but we need to # capture everything from DNS failures upwards # logger.warning("Failed to reject invite: %s", e) return await self._generate_local_out_of_band_leave( invite_event, txn_id, requester, content ) async def remote_rescind_knock( self, knock_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rescinds a local knock made on a remote room Args: knock_event_id: The ID of the knock event to rescind. txn_id: The transaction ID to use. requester: The originator of the request. content: The content of the leave event. Implements RoomMemberHandler.remote_rescind_knock """ # TODO: We don't yet support rescinding knocks over federation # as we don't know which homeserver to send it to. An obvious # candidate is the remote homeserver we originally knocked through, # however we don't currently store that information. # Just rescind the knock locally knock_event = await self.store.get_event(knock_event_id) return await self._generate_local_out_of_band_leave( knock_event, txn_id, requester, content ) async def _generate_local_out_of_band_leave( self, previous_membership_event: EventBase, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """Generate a local leave event for a room This can be called after we e.g fail to reject an invite via a remote server. It generates an out-of-band membership event locally. Args: previous_membership_event: the previous membership event for this user txn_id: optional transaction ID supplied by the client requester: user making the request, according to the access token content: additional content to include in the leave event. Normally an empty dict. Returns: A tuple containing (event_id, stream_id of the leave event) """ room_id = previous_membership_event.room_id target_user = previous_membership_event.state_key content["membership"] = Membership.LEAVE event_dict = { "type": EventTypes.Member, "room_id": room_id, "sender": target_user, "content": content, "state_key": target_user, } # the auth events for the new event are the same as that of the previous event, plus # the event itself. # # the prev_events consist solely of the previous membership event. prev_event_ids = [previous_membership_event.event_id] auth_event_ids = ( list(previous_membership_event.auth_event_ids()) + prev_event_ids ) # Try several times, it could fail with PartialStateConflictError # in handle_new_client_event, cf comment in except block. max_retries = 5 for i in range(max_retries): try: ( event, unpersisted_context, ) = await self.event_creation_handler.create_event( requester, event_dict, txn_id=txn_id, prev_event_ids=prev_event_ids, auth_event_ids=auth_event_ids, outlier=True, ) context = await unpersisted_context.persist(event) event.internal_metadata.out_of_band_membership = True result_event = ( await self.event_creation_handler.handle_new_client_event( requester, events_and_context=[(event, context)], extra_users=[UserID.from_string(target_user)], ) ) break except PartialStateConflictError as e: # Persisting couldn't happen because the room got un-partial stated # in the meantime and context needs to be recomputed, so let's do so. if i == max_retries - 1: raise e # we know it was persisted, so must have a stream ordering assert result_event.internal_metadata.stream_ordering return result_event.event_id, result_event.internal_metadata.stream_ordering async def remote_knock( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Sends a knock to a room. Attempts to do so via one remote out of a given list. Args: remote_room_hosts: A list of homeservers to try knocking through. room_id: The ID of the room to knock on. user: The user to knock on behalf of. content: The content of the knock event. Returns: A tuple of (event ID, stream ID). """ # filter ourselves out of remote_room_hosts remote_room_hosts = [ host for host in remote_room_hosts if host != self.hs.hostname ] if len(remote_room_hosts) == 0: raise NoKnownServersError() return await self.federation_handler.do_knock( remote_room_hosts, room_id, user.to_string(), content=content ) async def _user_left_room(self, target: UserID, room_id: str) -> None: """Implements RoomMemberHandler._user_left_room""" user_left_room(self.distributor, target, room_id) class RoomForgetterHandler(StateDeltasHandler): """Forgets rooms when they are left, when enabled in the homeserver config. For the purposes of this feature, kicks, bans and "leaves" via state resolution weirdness are all considered to be leaves. Derived from `StatsHandler` and `UserDirectoryHandler`. """ def __init__(self, hs: "HomeServer"): super().__init__(hs) self._hs = hs self._store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._clock = hs.get_clock() self._notifier = hs.get_notifier() self._room_member_handler = hs.get_room_member_handler() # The current position in the current_state_delta stream self.pos: Optional[int] = None # Guard to ensure we only process deltas one at a time self._is_processing = False if hs.config.worker.run_background_tasks: self._notifier.add_replication_callback(self.notify_new_event) # We kick this off to pick up outstanding work from before the last restart. self._clock.call_later(0, self.notify_new_event) def notify_new_event(self) -> None: """Called when there may be more deltas to process""" if self._is_processing: return self._is_processing = True async def process() -> None: try: await self._unsafe_process() finally: self._is_processing = False run_as_background_process("room_forgetter.notify_new_event", process) async def _unsafe_process(self) -> None: # If self.pos is None then means we haven't fetched it from DB if self.pos is None: self.pos = await self._store.get_room_forgetter_stream_pos() room_max_stream_ordering = self._store.get_room_max_stream_ordering() if self.pos > room_max_stream_ordering: # apparently, we've processed more events than exist in the database! # this can happen if events are removed with history purge or similar. logger.warning( "Event stream ordering appears to have gone backwards (%i -> %i): " "rewinding room forgetter processor", self.pos, room_max_stream_ordering, ) self.pos = room_max_stream_ordering if not self._hs.config.room.forget_on_leave: # Update the processing position, so that if the server admin turns # the feature on at a later date, we don't decide to forget every # room that has ever been left in the past. # # We wait for a short time so that we don't "tight" loop just # keeping the table up to date. await self._clock.sleep(0.5) self.pos = self._store.get_room_max_stream_ordering() await self._store.update_room_forgetter_stream_pos(self.pos) return # Loop round handling deltas until we're up to date while True: # Be sure to read the max stream_ordering *before* checking if there are any outstanding # deltas, since there is otherwise a chance that we could miss updates which arrive # after we check the deltas. room_max_stream_ordering = self._store.get_room_max_stream_ordering() if self.pos == room_max_stream_ordering: break logger.debug( "Processing room forgetting %s->%s", self.pos, room_max_stream_ordering ) ( max_pos, deltas, ) = await self._storage_controllers.state.get_current_state_deltas( self.pos, room_max_stream_ordering ) logger.debug("Handling %d state deltas", len(deltas)) await self._handle_deltas(deltas) self.pos = max_pos # Expose current event processing position to prometheus event_processing_positions.labels("room_forgetter").set(max_pos) await self._store.update_room_forgetter_stream_pos(max_pos) async def _handle_deltas(self, deltas: List[StateDelta]) -> None: """Called with the state deltas to process""" for delta in deltas: if delta.event_type != EventTypes.Member: continue if not self._hs.is_mine_id(delta.state_key): continue change = await self._get_key_change( delta.prev_event_id, delta.event_id, key_name="membership", public_value=Membership.JOIN, ) is_leave = change is MatchChange.now_false if is_leave: try: await self._room_member_handler.forget( UserID.from_string(delta.state_key), delta.room_id ) except SynapseError as e: if e.code == 400: # The user is back in the room. pass else: raise def get_users_which_can_issue_invite(auth_events: StateMap[EventBase]) -> List[str]: """ Return the list of users which can issue invites. This is done by exploring the joined users and comparing their power levels to the necessyar power level to issue an invite. Args: auth_events: state in force at this point in the room Returns: The users which can issue invites. """ invite_level = get_named_level(auth_events, "invite", 0) users_default_level = get_named_level(auth_events, "users_default", 0) power_level_event = get_power_level_event(auth_events) # Custom power-levels for users. if power_level_event: users = power_level_event.content.get("users", {}) else: users = {} result = [] # Check which members are able to invite by ensuring they're joined and have # the necessary power level. for (event_type, state_key), event in auth_events.items(): if event_type != EventTypes.Member: continue if event.membership != Membership.JOIN: continue # Check if the user has a custom power level. if users.get(state_key, users_default_level) >= invite_level: result.append(state_key) return result def get_servers_from_users(users: List[str]) -> Set[str]: """ Resolve a list of users into their servers. Args: users: A list of users. Returns: A set of servers. """ servers = set() for user in users: try: servers.add(get_domain_from_id(user)) except SynapseError: pass return servers synapse-1.100.0/synapse/handlers/room_member_worker.py000066400000000000000000000113351455622526000230750ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2018-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, List, Optional, Tuple from synapse.handlers.room_member import NoKnownServersError, RoomMemberHandler from synapse.replication.http.membership import ( ReplicationRemoteJoinRestServlet as ReplRemoteJoin, ReplicationRemoteKnockRestServlet as ReplRemoteKnock, ReplicationRemoteRejectInviteRestServlet as ReplRejectInvite, ReplicationRemoteRescindKnockRestServlet as ReplRescindKnock, ReplicationUserJoinedLeftRoomRestServlet as ReplJoinedLeft, ) from synapse.types import JsonDict, Requester, UserID if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class RoomMemberWorkerHandler(RoomMemberHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) self._remote_join_client = ReplRemoteJoin.make_client(hs) self._remote_knock_client = ReplRemoteKnock.make_client(hs) self._remote_reject_client = ReplRejectInvite.make_client(hs) self._remote_rescind_client = ReplRescindKnock.make_client(hs) self._notify_change_client = ReplJoinedLeft.make_client(hs) async def _remote_join( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Implements RoomMemberHandler._remote_join""" if len(remote_room_hosts) == 0: raise NoKnownServersError() ret = await self._remote_join_client( requester=requester, remote_room_hosts=remote_room_hosts, room_id=room_id, user_id=user.to_string(), content=content, ) return ret["event_id"], ret["stream_id"] async def remote_reject_invite( self, invite_event_id: str, txn_id: Optional[str], requester: Requester, content: dict, ) -> Tuple[str, int]: """ Rejects an out-of-band invite received from a remote user Implements RoomMemberHandler.remote_reject_invite """ ret = await self._remote_reject_client( invite_event_id=invite_event_id, txn_id=txn_id, requester=requester, content=content, ) return ret["event_id"], ret["stream_id"] async def remote_rescind_knock( self, knock_event_id: str, txn_id: Optional[str], requester: Requester, content: JsonDict, ) -> Tuple[str, int]: """ Rescinds a local knock made on a remote room Args: knock_event_id: the knock event txn_id: optional transaction ID supplied by the client requester: user making the request, according to the access token content: additional content to include in the leave event. Normally an empty dict. Returns: A tuple containing (event_id, stream_id of the leave event) """ ret = await self._remote_rescind_client( knock_event_id=knock_event_id, txn_id=txn_id, requester=requester, content=content, ) return ret["event_id"], ret["stream_id"] async def remote_knock( self, requester: Requester, remote_room_hosts: List[str], room_id: str, user: UserID, content: dict, ) -> Tuple[str, int]: """Sends a knock to a room. Implements RoomMemberHandler.remote_knock """ ret = await self._remote_knock_client( requester=requester, remote_room_hosts=remote_room_hosts, room_id=room_id, user_id=user.to_string(), content=content, ) return ret["event_id"], ret["stream_id"] async def _user_left_room(self, target: UserID, room_id: str) -> None: """Implements RoomMemberHandler._user_left_room""" await self._notify_change_client( user_id=target.to_string(), room_id=room_id, change="left" ) synapse-1.100.0/synapse/handlers/room_summary.py000066400000000000000000001112611455622526000217310ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import itertools import logging import re from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Sequence, Set, Tuple import attr from synapse.api.constants import ( EventTypes, HistoryVisibility, JoinRules, Membership, RoomTypes, ) from synapse.api.errors import ( Codes, NotFoundError, StoreError, SynapseError, UnstableSpecAuthError, UnsupportedRoomVersionError, ) from synapse.api.ratelimiting import Ratelimiter from synapse.config.ratelimiting import RatelimitSettings from synapse.events import EventBase from synapse.types import JsonDict, Requester, StrCollection from synapse.types.state import StateFilter from synapse.util.caches.response_cache import ResponseCache if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # number of rooms to return. We'll stop once we hit this limit. MAX_ROOMS = 50 # max number of events to return per room. MAX_ROOMS_PER_SPACE = 50 # max number of federation servers to hit per room MAX_SERVERS_PER_SPACE = 3 @attr.s(slots=True, frozen=True, auto_attribs=True) class _PaginationKey: """The key used to find unique pagination session.""" # The first three entries match the request parameters (and cannot change # during a pagination session). room_id: str suggested_only: bool max_depth: Optional[int] # The randomly generated token. token: str @attr.s(slots=True, frozen=True, auto_attribs=True) class _PaginationSession: """The information that is stored for pagination.""" # The time the pagination session was created, in milliseconds. creation_time_ms: int # The queue of rooms which are still to process. room_queue: List["_RoomQueueEntry"] # A set of rooms which have been processed. processed_rooms: Set[str] class RoomSummaryHandler: # A unique key used for pagination sessions for the room hierarchy endpoint. _PAGINATION_SESSION_TYPE = "room_hierarchy_pagination" # The time a pagination session remains valid for. _PAGINATION_SESSION_VALIDITY_PERIOD_MS = 5 * 60 * 1000 def __init__(self, hs: "HomeServer"): self._event_auth_handler = hs.get_event_auth_handler() self._store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self._event_serializer = hs.get_event_client_serializer() self._server_name = hs.hostname self._federation_client = hs.get_federation_client() self._ratelimiter = Ratelimiter( store=self._store, clock=hs.get_clock(), cfg=RatelimitSettings("", per_second=5, burst_count=10), ) # If a user tries to fetch the same page multiple times in quick succession, # only process the first attempt and return its result to subsequent requests. self._pagination_response_cache: ResponseCache[ Tuple[str, str, bool, Optional[int], Optional[int], Optional[str]] ] = ResponseCache( hs.get_clock(), "get_room_hierarchy", ) self._msc3266_enabled = hs.config.experimental.msc3266_enabled async def get_room_hierarchy( self, requester: Requester, requested_room_id: str, suggested_only: bool = False, max_depth: Optional[int] = None, limit: Optional[int] = None, from_token: Optional[str] = None, ) -> JsonDict: """ Implementation of the room hierarchy C-S API. Args: requester: The user ID of the user making this request. requested_room_id: The room ID to start the hierarchy at (the "root" room). suggested_only: Whether we should only return children with the "suggested" flag set. max_depth: The maximum depth in the tree to explore, must be a non-negative integer. 0 would correspond to just the root room, 1 would include just the root room's children, etc. limit: An optional limit on the number of rooms to return per page. Must be a positive integer. from_token: An optional pagination token. Returns: The JSON hierarchy dictionary. """ await self._ratelimiter.ratelimit(requester) # If a user tries to fetch the same page multiple times in quick succession, # only process the first attempt and return its result to subsequent requests. # # This is due to the pagination process mutating internal state, attempting # to process multiple requests for the same page will result in errors. return await self._pagination_response_cache.wrap( ( requester.user.to_string(), requested_room_id, suggested_only, max_depth, limit, from_token, ), self._get_room_hierarchy, requester.user.to_string(), requested_room_id, suggested_only, max_depth, limit, from_token, ) async def _get_room_hierarchy( self, requester: str, requested_room_id: str, suggested_only: bool = False, max_depth: Optional[int] = None, limit: Optional[int] = None, from_token: Optional[str] = None, ) -> JsonDict: """See docstring for SpaceSummaryHandler.get_room_hierarchy.""" # First of all, check that the room is accessible. if not await self._is_local_room_accessible(requested_room_id, requester): raise UnstableSpecAuthError( 403, "User %s not in room %s, and room previews are disabled" % (requester, requested_room_id), errcode=Codes.NOT_JOINED, ) # If this is continuing a previous session, pull the persisted data. if from_token: try: pagination_session = await self._store.get_session( session_type=self._PAGINATION_SESSION_TYPE, session_id=from_token, ) except StoreError: raise SynapseError(400, "Unknown pagination token", Codes.INVALID_PARAM) # If the requester, room ID, suggested-only, or max depth were modified # the session is invalid. if ( requester != pagination_session["requester"] or requested_room_id != pagination_session["room_id"] or suggested_only != pagination_session["suggested_only"] or max_depth != pagination_session["max_depth"] ): raise SynapseError(400, "Unknown pagination token", Codes.INVALID_PARAM) # Load the previous state. room_queue = [ _RoomQueueEntry(*fields) for fields in pagination_session["room_queue"] ] processed_rooms = set(pagination_session["processed_rooms"]) else: # The queue of rooms to process, the next room is last on the stack. room_queue = [_RoomQueueEntry(requested_room_id, ())] # Rooms we have already processed. processed_rooms = set() rooms_result: List[JsonDict] = [] # Cap the limit to a server-side maximum. if limit is None: limit = MAX_ROOMS else: limit = min(limit, MAX_ROOMS) # Iterate through the queue until we reach the limit or run out of # rooms to include. while room_queue and len(rooms_result) < limit: queue_entry = room_queue.pop() room_id = queue_entry.room_id current_depth = queue_entry.depth if room_id in processed_rooms: # already done this room continue logger.debug("Processing room %s", room_id) # A map of summaries for children rooms that might be returned over # federation. The rationale for caching these and *maybe* using them # is to prefer any information local to the homeserver before trusting # data received over federation. children_room_entries: Dict[str, JsonDict] = {} # A set of room IDs which are children that did not have information # returned over federation and are known to be inaccessible to the # current server. We should not reach out over federation to try to # summarise these rooms. inaccessible_children: Set[str] = set() # If the room is known locally, summarise it! is_in_room = await self._store.is_host_joined(room_id, self._server_name) if is_in_room: room_entry = await self._summarize_local_room( requester, None, room_id, suggested_only, ) # Otherwise, attempt to use information for federation. else: # A previous call might have included information for this room. # It can be used if either: # # 1. The room is not a space. # 2. The maximum depth has been achieved (since no children # information is needed). if queue_entry.remote_room and ( queue_entry.remote_room.get("room_type") != RoomTypes.SPACE or (max_depth is not None and current_depth >= max_depth) ): room_entry = _RoomEntry( queue_entry.room_id, queue_entry.remote_room ) # If the above isn't true, attempt to fetch the room # information over federation. else: ( room_entry, children_room_entries, inaccessible_children, ) = await self._summarize_remote_room_hierarchy( queue_entry, suggested_only, ) # Ensure this room is accessible to the requester (and not just # the homeserver). if room_entry and not await self._is_remote_room_accessible( requester, queue_entry.room_id, room_entry.room ): room_entry = None # This room has been processed and should be ignored if it appears # elsewhere in the hierarchy. processed_rooms.add(room_id) # There may or may not be a room entry based on whether it is # inaccessible to the requesting user. if room_entry: # Add the room (including the stripped m.space.child events). rooms_result.append(room_entry.as_json(for_client=True)) # If this room is not at the max-depth, check if there are any # children to process. if max_depth is None or current_depth < max_depth: # The children get added in reverse order so that the next # room to process, according to the ordering, is the last # item in the list. room_queue.extend( _RoomQueueEntry( ev["state_key"], ev["content"]["via"], current_depth + 1, children_room_entries.get(ev["state_key"]), ) for ev in reversed(room_entry.children_state_events) if ev["type"] == EventTypes.SpaceChild and ev["state_key"] not in inaccessible_children ) result: JsonDict = {"rooms": rooms_result} # If there's additional data, generate a pagination token (and persist state). if room_queue: result["next_batch"] = await self._store.create_session( session_type=self._PAGINATION_SESSION_TYPE, value={ # Information which must be identical across pagination. "requester": requester, "room_id": requested_room_id, "suggested_only": suggested_only, "max_depth": max_depth, # The stored state. "room_queue": [ attr.astuple(room_entry) for room_entry in room_queue ], "processed_rooms": list(processed_rooms), }, expiry_ms=self._PAGINATION_SESSION_VALIDITY_PERIOD_MS, ) return result async def get_federation_hierarchy( self, origin: str, requested_room_id: str, suggested_only: bool, ) -> JsonDict: """ Implementation of the room hierarchy Federation API. This is similar to get_room_hierarchy, but does not recurse into the space. It also considers whether anyone on the server may be able to access the room, as opposed to whether a specific user can. Args: origin: The server requesting the spaces summary. requested_room_id: The room ID to start the hierarchy at (the "root" room). suggested_only: whether we should only return children with the "suggested" flag set. Returns: The JSON hierarchy dictionary. """ root_room_entry = await self._summarize_local_room( None, origin, requested_room_id, suggested_only ) if root_room_entry is None: # Room is inaccessible to the requesting server. raise SynapseError(404, "Unknown room: %s" % (requested_room_id,)) children_rooms_result: List[JsonDict] = [] inaccessible_children: List[str] = [] # Iterate through each child and potentially add it, but not its children, # to the response. for child_room in itertools.islice( root_room_entry.children_state_events, MAX_ROOMS_PER_SPACE ): room_id = child_room.get("state_key") assert isinstance(room_id, str) # If the room is unknown, skip it. if not await self._store.is_host_joined(room_id, self._server_name): continue room_entry = await self._summarize_local_room( None, origin, room_id, suggested_only, include_children=False ) # If the room is accessible, include it in the results. # # Note that only the room summary (without information on children) # is included in the summary. if room_entry: children_rooms_result.append(room_entry.room) # Otherwise, note that the requesting server shouldn't bother # trying to summarize this room - they do not have access to it. else: inaccessible_children.append(room_id) return { # Include the requested room (including the stripped children events). "room": root_room_entry.as_json(), "children": children_rooms_result, "inaccessible_children": inaccessible_children, } async def _summarize_local_room( self, requester: Optional[str], origin: Optional[str], room_id: str, suggested_only: bool, include_children: bool = True, ) -> Optional["_RoomEntry"]: """ Generate a room entry and a list of event entries for a given room. Args: requester: The user requesting the summary, if it is a local request. None if this is a federation request. origin: The server requesting the summary, if it is a federation request. None if this is a local request. room_id: The room ID to summarize. suggested_only: True if only suggested children should be returned. Otherwise, all children are returned. include_children: Whether to include the events of any children. Returns: A room entry if the room should be returned. None, otherwise. """ if not await self._is_local_room_accessible(room_id, requester, origin): return None room_entry = await self._build_room_entry(room_id, for_federation=bool(origin)) # If the room is not a space return just the room information. if room_entry.get("room_type") != RoomTypes.SPACE or not include_children: return _RoomEntry(room_id, room_entry) # Otherwise, look for child rooms/spaces. child_events = await self._get_child_events(room_id) if suggested_only: # we only care about suggested children child_events = filter(_is_suggested_child_event, child_events) stripped_events: List[JsonDict] = [ { "type": e.type, "state_key": e.state_key, "content": e.content, "sender": e.sender, "origin_server_ts": e.origin_server_ts, } for e in child_events ] return _RoomEntry(room_id, room_entry, stripped_events) async def _summarize_remote_room_hierarchy( self, room: "_RoomQueueEntry", suggested_only: bool ) -> Tuple[Optional["_RoomEntry"], Dict[str, JsonDict], Set[str]]: """ Request room entries and a list of event entries for a given room by querying a remote server. Args: room: The room to summarize. suggested_only: True if only suggested children should be returned. Otherwise, all children are returned. Returns: A tuple of: The room entry. Partial room data return over federation. A set of inaccessible children room IDs. """ room_id = room.room_id logger.info("Requesting summary for %s via %s", room_id, room.via) via = itertools.islice(room.via, MAX_SERVERS_PER_SPACE) try: ( room_response, children_state_events, children, inaccessible_children, ) = await self._federation_client.get_room_hierarchy( via, room_id, suggested_only=suggested_only, ) except Exception as e: logger.warning( "Unable to get hierarchy of %s via federation: %s", room_id, e, exc_info=logger.isEnabledFor(logging.DEBUG), ) return None, {}, set() # Map the children to their room ID. children_by_room_id = { c["room_id"]: c for c in children if "room_id" in c and isinstance(c["room_id"], str) } return ( _RoomEntry(room_id, room_response, children_state_events), children_by_room_id, set(inaccessible_children), ) async def _is_local_room_accessible( self, room_id: str, requester: Optional[str], origin: Optional[str] = None ) -> bool: """ Calculate whether the room should be shown to the requester. It should return true if: * The requesting user is joined or can join the room (per MSC3173); or * The origin server has any user that is joined or can join the room; or * The history visibility is set to world readable. Args: room_id: The room ID to check accessibility of. requester: The user making the request, if it is a local request. None if this is a federation request. origin: The server making the request, if it is a federation request. None if this is a local request. Returns: True if the room is accessible to the requesting user or server. """ event_types = [ (EventTypes.JoinRules, ""), (EventTypes.RoomHistoryVisibility, ""), ] if requester: event_types.append((EventTypes.Member, requester)) state_ids = await self._storage_controllers.state.get_current_state_ids( room_id, state_filter=StateFilter.from_types(event_types) ) # If there's no state for the room, it isn't known. if not state_ids: # The user might have a pending invite for the room. if requester and await self._store.get_invite_for_local_user_in_room( requester, room_id ): return True logger.info("room %s is unknown, omitting from summary", room_id) return False try: room_version = await self._store.get_room_version(room_id) except UnsupportedRoomVersionError: # If a room with an unsupported room version is encountered, ignore # it to avoid breaking the entire summary response. return False # Include the room if it has join rules of public or knock. join_rules_event_id = state_ids.get((EventTypes.JoinRules, "")) if join_rules_event_id: join_rules_event = await self._store.get_event(join_rules_event_id) join_rule = join_rules_event.content.get("join_rule") if ( join_rule == JoinRules.PUBLIC or (room_version.knock_join_rule and join_rule == JoinRules.KNOCK) or ( room_version.knock_restricted_join_rule and join_rule == JoinRules.KNOCK_RESTRICTED ) ): return True # Include the room if it is peekable. hist_vis_event_id = state_ids.get((EventTypes.RoomHistoryVisibility, "")) if hist_vis_event_id: hist_vis_ev = await self._store.get_event(hist_vis_event_id) hist_vis = hist_vis_ev.content.get("history_visibility") if hist_vis == HistoryVisibility.WORLD_READABLE: return True # Otherwise we need to check information specific to the user or server. # If we have an authenticated requesting user, check if they are a member # of the room (or can join the room). if requester: member_event_id = state_ids.get((EventTypes.Member, requester), None) # If they're in the room they can see info on it. if member_event_id: member_event = await self._store.get_event(member_event_id) if member_event.membership in (Membership.JOIN, Membership.INVITE): return True # Otherwise, check if they should be allowed access via membership in a space. if await self._event_auth_handler.has_restricted_join_rules( state_ids, room_version ): allowed_rooms = ( await self._event_auth_handler.get_rooms_that_allow_join(state_ids) ) if await self._event_auth_handler.is_user_in_rooms( allowed_rooms, requester ): return True # If this is a request over federation, check if the host is in the room or # has a user who could join the room. elif origin: if await self._event_auth_handler.is_host_in_room( room_id, origin ) or await self._store.is_host_invited(room_id, origin): return True # Alternately, if the host has a user in any of the spaces specified # for access, then the host can see this room (and should do filtering # if the requester cannot see it). if await self._event_auth_handler.has_restricted_join_rules( state_ids, room_version ): allowed_rooms = ( await self._event_auth_handler.get_rooms_that_allow_join(state_ids) ) for space_id in allowed_rooms: if await self._event_auth_handler.is_host_in_room(space_id, origin): return True logger.info( "room %s is unpeekable and requester %s is not a member / not allowed to join, omitting from summary", room_id, requester or origin, ) return False async def _is_remote_room_accessible( self, requester: Optional[str], room_id: str, room: JsonDict ) -> bool: """ Calculate whether the room received over federation should be shown to the requester. It should return true if: * The requester is joined or can join the room (per MSC3173). * The history visibility is set to world readable. Note that the local server is not in the requested room (which is why the remote call was made in the first place), but the user could have access due to an invite, etc. Args: requester: The user requesting the summary. If not passed only world readability is checked. room_id: The room ID returned over federation. room: The summary of the room returned over federation. Returns: True if the room is accessible to the requesting user. """ # The API doesn't return the room version so assume that a # join rule of knock is valid. if ( room.get("join_rule") in (JoinRules.PUBLIC, JoinRules.KNOCK, JoinRules.KNOCK_RESTRICTED) or room.get("world_readable") is True ): return True elif not requester: return False # Check if the user is a member of any of the allowed rooms from the response. allowed_rooms = room.get("allowed_room_ids") if allowed_rooms and isinstance(allowed_rooms, list): if await self._event_auth_handler.is_user_in_rooms( allowed_rooms, requester ): return True # Finally, check locally if we can access the room. The user might # already be in the room (if it was a child room), or there might be a # pending invite, etc. return await self._is_local_room_accessible(room_id, requester) async def _build_room_entry(self, room_id: str, for_federation: bool) -> JsonDict: """ Generate en entry summarising a single room. Args: room_id: The room ID to summarize. for_federation: True if this is a summary requested over federation (which includes additional fields). Returns: The JSON dictionary for the room. """ stats = await self._store.get_room_with_stats(room_id) # currently this should be impossible because we call # _is_local_room_accessible on the room before we get here, so # there should always be an entry assert stats is not None, "unable to retrieve stats for %s" % (room_id,) entry: JsonDict = { "room_id": stats.room_id, "name": stats.name, "topic": stats.topic, "canonical_alias": stats.canonical_alias, "num_joined_members": stats.joined_members, "avatar_url": stats.avatar, "join_rule": stats.join_rules, "world_readable": ( stats.history_visibility == HistoryVisibility.WORLD_READABLE ), "guest_can_join": stats.guest_access == "can_join", "room_type": stats.room_type, } if self._msc3266_enabled: entry["im.nheko.summary.version"] = stats.version entry["im.nheko.summary.encryption"] = stats.encryption # Federation requests need to provide additional information so the # requested server is able to filter the response appropriately. if for_federation: current_state_ids = ( await self._storage_controllers.state.get_current_state_ids(room_id) ) room_version = await self._store.get_room_version(room_id) if await self._event_auth_handler.has_restricted_join_rules( current_state_ids, room_version ): allowed_rooms = ( await self._event_auth_handler.get_rooms_that_allow_join( current_state_ids ) ) if allowed_rooms: entry["allowed_room_ids"] = allowed_rooms # Filter out Nones – rather omit the field altogether room_entry = {k: v for k, v in entry.items() if v is not None} return room_entry async def _get_child_events(self, room_id: str) -> Iterable[EventBase]: """ Get the child events for a given room. The returned results are sorted for stability. Args: room_id: The room id to get the children of. Returns: An iterable of sorted child events. """ # look for child rooms/spaces. current_state_ids = await self._storage_controllers.state.get_current_state_ids( room_id ) events = await self._store.get_events_as_list( [ event_id for key, event_id in current_state_ids.items() if key[0] == EventTypes.SpaceChild ] ) # filter out any events without a "via" (which implies it has been redacted), # and order to ensure we return stable results. return sorted(filter(_has_valid_via, events), key=_child_events_comparison_key) async def get_room_summary( self, requester: Optional[str], room_id: str, remote_room_hosts: Optional[List[str]] = None, ) -> JsonDict: """ Implementation of the room summary C-S API from MSC3266 Args: requester: user id of the user making this request, will be None for unauthenticated requests room_id: room id to summarise. remote_room_hosts: a list of homeservers to try fetching data through if we don't know it ourselves Returns: summary dict to return """ is_in_room = await self._store.is_host_joined(room_id, self._server_name) if is_in_room: room_entry = await self._summarize_local_room( requester, None, room_id, # Suggested-only doesn't matter since no children are requested. suggested_only=False, include_children=False, ) if not room_entry: raise NotFoundError("Room not found or is not accessible") room_summary = room_entry.room # If there was a requester, add their membership. if requester: ( membership, _, ) = await self._store.get_local_current_membership_for_user_in_room( requester, room_id ) room_summary["membership"] = membership or "leave" else: # Reuse the hierarchy query over federation if remote_room_hosts is None: raise SynapseError(400, "Missing via to query remote room") ( room_entry, children_room_entries, inaccessible_children, ) = await self._summarize_remote_room_hierarchy( _RoomQueueEntry(room_id, remote_room_hosts), suggested_only=True, ) # The results over federation might include rooms that we, as the # requesting server, are allowed to see, but the requesting user is # not permitted to see. # # Filter the returned results to only what is accessible to the user. if not room_entry or not await self._is_remote_room_accessible( requester, room_entry.room_id, room_entry.room ): raise NotFoundError("Room not found or is not accessible") room = dict(room_entry.room) room.pop("allowed_room_ids", None) # If there was a requester, add their membership. # We keep the membership in the local membership table unless the # room is purged even for remote rooms. if requester: ( membership, _, ) = await self._store.get_local_current_membership_for_user_in_room( requester, room_id ) room["membership"] = membership or "leave" return room return room_summary @attr.s(frozen=True, slots=True, auto_attribs=True) class _RoomQueueEntry: # The room ID of this entry. room_id: str # The server to query if the room is not known locally. via: StrCollection # The minimum number of hops necessary to get to this room (compared to the # originally requested room). depth: int = 0 # The room summary for this room returned via federation. This will only be # used if the room is not known locally (and is not a space). remote_room: Optional[JsonDict] = None @attr.s(frozen=True, slots=True, auto_attribs=True) class _RoomEntry: room_id: str # The room summary for this room. room: JsonDict # An iterable of the sorted, stripped children events for children of this room. # # This may not include all children. children_state_events: Sequence[JsonDict] = () def as_json(self, for_client: bool = False) -> JsonDict: """ Returns a JSON dictionary suitable for the room hierarchy endpoint. It returns the room summary including the stripped m.space.child events as a sub-key. Args: for_client: If true, any server-server only fields are stripped from the result. """ result = dict(self.room) # Before returning to the client, remove the allowed_room_ids key, if it # exists. if for_client: result.pop("allowed_room_ids", False) result["children_state"] = self.children_state_events return result def _has_valid_via(e: EventBase) -> bool: via = e.content.get("via") if not via or not isinstance(via, list): return False for v in via: if not isinstance(v, str): logger.debug("Ignoring edge event %s with invalid via entry", e.event_id) return False return True def _is_suggested_child_event(edge_event: EventBase) -> bool: suggested = edge_event.content.get("suggested") if isinstance(suggested, bool) and suggested: return True logger.debug("Ignorning not-suggested child %s", edge_event.state_key) return False # Order may only contain characters in the range of \x20 (space) to \x7E (~) inclusive. _INVALID_ORDER_CHARS_RE = re.compile(r"[^\x20-\x7E]") def _child_events_comparison_key( child: EventBase, ) -> Tuple[bool, Optional[str], int, str]: """ Generate a value for comparing two child events for ordering. The rules for ordering are: 1. The 'order' key, if it is valid. 2. The 'origin_server_ts' of the 'm.space.child' event. 3. The 'room_id'. Args: child: The event for generating a comparison key. Returns: The comparison key as a tuple of: False if the ordering is valid. The 'order' field or None if it is not given or invalid. The 'origin_server_ts' field. The room ID. """ order = child.content.get("order") # If order is not a string or doesn't meet the requirements, ignore it. if not isinstance(order, str): order = None elif len(order) > 50 or _INVALID_ORDER_CHARS_RE.search(order): order = None # Items without an order come last. return order is None, order, child.origin_server_ts, child.room_id synapse-1.100.0/synapse/handlers/saml.py000066400000000000000000000457031455622526000201430ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import re from typing import TYPE_CHECKING, Callable, Dict, Optional, Set, Tuple import attr import saml2 import saml2.response from saml2.client import Saml2Client from synapse.api.errors import SynapseError from synapse.config import ConfigError from synapse.handlers.sso import MappingException, UserAttributes from synapse.http.servlet import parse_string from synapse.http.site import SynapseRequest from synapse.module_api import ModuleApi from synapse.types import ( MXID_LOCALPART_ALLOWED_CHARACTERS, UserID, map_username_to_mxid_localpart, ) from synapse.util.iterutils import chunk_seq if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, auto_attribs=True) class Saml2SessionData: """Data we track about SAML2 sessions""" # time the session was created, in milliseconds creation_time: int # The user interactive authentication session ID associated with this SAML # session (or None if this SAML session is for an initial login). ui_auth_session_id: Optional[str] = None class SamlHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.clock = hs.get_clock() self.server_name = hs.hostname self._saml_client = Saml2Client(hs.config.saml2.saml2_sp_config) self._saml_idp_entityid = hs.config.saml2.saml2_idp_entityid self._saml2_session_lifetime = hs.config.saml2.saml2_session_lifetime self._grandfathered_mxid_source_attribute = ( hs.config.saml2.saml2_grandfathered_mxid_source_attribute ) self._saml2_attribute_requirements = hs.config.saml2.attribute_requirements # plugin to do custom mapping from saml response to mxid self._user_mapping_provider = hs.config.saml2.saml2_user_mapping_provider_class( hs.config.saml2.saml2_user_mapping_provider_config, ModuleApi(hs, hs.get_auth_handler()), ) # identifier for the external_ids table self.idp_id = "saml" # user-facing name of this auth provider self.idp_name = hs.config.saml2.idp_name # MXC URI for icon for this auth provider self.idp_icon = hs.config.saml2.idp_icon # optional brand identifier for this auth provider self.idp_brand = hs.config.saml2.idp_brand # a map from saml session id to Saml2SessionData object self._outstanding_requests_dict: Dict[str, Saml2SessionData] = {} self._sso_handler = hs.get_sso_handler() self._sso_handler.register_identity_provider(self) async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Handle an incoming request to /login/sso/redirect Args: request: the incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login (or None for UI Auth). ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: URL to redirect to """ if not client_redirect_url: # Some SAML identity providers (e.g. Google) require a # RelayState parameter on requests, so pass in a dummy redirect URL # (which will never get used). client_redirect_url = b"unused" reqid, info = self._saml_client.prepare_for_authenticate( entityid=self._saml_idp_entityid, relay_state=client_redirect_url ) # Since SAML sessions timeout it is useful to log when they were created. logger.info("Initiating a new SAML session: %s" % (reqid,)) now = self.clock.time_msec() self._outstanding_requests_dict[reqid] = Saml2SessionData( creation_time=now, ui_auth_session_id=ui_auth_session_id, ) for key, value in info["headers"]: if key == "Location": return value # this shouldn't happen! raise Exception("prepare_for_authenticate didn't return a Location header") async def handle_saml_response(self, request: SynapseRequest) -> None: """Handle an incoming request to /_synapse/client/saml2/authn_response Args: request: the incoming request from the browser. We'll respond to it with a redirect. Returns: Completes once we have handled the request. """ resp_bytes = parse_string(request, "SAMLResponse", required=True) relay_state = parse_string(request, "RelayState", required=True) # expire outstanding sessions before parse_authn_request_response checks # the dict. self.expire_sessions() try: saml2_auth = self._saml_client.parse_authn_request_response( resp_bytes, saml2.BINDING_HTTP_POST, outstanding=self._outstanding_requests_dict, ) except saml2.response.UnsolicitedResponse as e: # the pysaml2 library helpfully logs an ERROR here, but neglects to log # the session ID. I don't really want to put the full text of the exception # in the (user-visible) exception message, so let's log the exception here # so we can track down the session IDs later. logger.warning(str(e)) self._sso_handler.render_error( request, "unsolicited_response", "Unexpected SAML2 login." ) return except Exception as e: self._sso_handler.render_error( request, "invalid_response", "Unable to parse SAML2 response: %s." % (e,), ) return if saml2_auth.not_signed: self._sso_handler.render_error( request, "unsigned_respond", "SAML2 response was not signed." ) return logger.debug("SAML2 response: %s", saml2_auth.origxml) await self._handle_authn_response(request, saml2_auth, relay_state) async def _handle_authn_response( self, request: SynapseRequest, saml2_auth: saml2.response.AuthnResponse, relay_state: str, ) -> None: """Handle an AuthnResponse, having parsed it from the request params Assumes that the signature on the response object has been checked. Maps the user onto an MXID, registering them if necessary, and returns a response to the browser. Args: request: the incoming request from the browser. We'll respond to it with an HTML page or a redirect saml2_auth: the parsed AuthnResponse object relay_state: the RelayState query param, which encodes the URI to rediret back to """ for assertion in saml2_auth.assertions: # kibana limits the length of a log field, whereas this is all rather # useful, so split it up. count = 0 for part in chunk_seq(str(assertion), 10000): logger.info( "SAML2 assertion: %s%s", "(%i)..." % (count,) if count else "", part ) count += 1 logger.info("SAML2 mapped attributes: %s", saml2_auth.ava) current_session = self._outstanding_requests_dict.pop( saml2_auth.in_response_to, None ) # first check if we're doing a UIA if current_session and current_session.ui_auth_session_id: try: remote_user_id = self._remote_id_from_saml_response(saml2_auth, None) except MappingException as e: logger.exception("Failed to extract remote user id from SAML response") self._sso_handler.render_error(request, "mapping_error", str(e)) return return await self._sso_handler.complete_sso_ui_auth_request( self.idp_id, remote_user_id, current_session.ui_auth_session_id, request, ) # otherwise, we're handling a login request. # Ensure that the attributes of the logged in user meet the required # attributes. if not self._sso_handler.check_required_attributes( request, saml2_auth.ava, self._saml2_attribute_requirements ): return # Call the mapper to register/login the user try: await self._complete_saml_login(saml2_auth, request, relay_state) except MappingException as e: logger.exception("Could not map user") self._sso_handler.render_error(request, "mapping_error", str(e)) async def _complete_saml_login( self, saml2_auth: saml2.response.AuthnResponse, request: SynapseRequest, client_redirect_url: str, ) -> None: """ Given a SAML response, complete the login flow Retrieves the remote user ID, registers the user if necessary, and serves a redirect back to the client with a login-token. Args: saml2_auth: The parsed SAML2 response. request: The request to respond to client_redirect_url: The redirect URL passed in by the client. Raises: MappingException if there was a problem mapping the response to a user. RedirectException: some mapping providers may raise this if they need to redirect to an interstitial page. """ remote_user_id = self._remote_id_from_saml_response( saml2_auth, client_redirect_url ) async def saml_response_to_remapped_user_attributes( failures: int, ) -> UserAttributes: """ Call the mapping provider to map a SAML response to user attributes and coerce the result into the standard form. This is backwards compatibility for abstraction for the SSO handler. """ # Call the mapping provider. result = self._user_mapping_provider.saml_response_to_user_attributes( saml2_auth, failures, client_redirect_url ) # Remap some of the results. return UserAttributes( localpart=result.get("mxid_localpart"), display_name=result.get("displayname"), emails=result.get("emails", []), ) async def grandfather_existing_users() -> Optional[str]: # backwards-compatibility hack: see if there is an existing user with a # suitable mapping from the uid if ( self._grandfathered_mxid_source_attribute and self._grandfathered_mxid_source_attribute in saml2_auth.ava ): attrval = saml2_auth.ava[self._grandfathered_mxid_source_attribute][0] user_id = UserID( map_username_to_mxid_localpart(attrval), self.server_name ).to_string() logger.debug( "Looking for existing account based on mapped %s %s", self._grandfathered_mxid_source_attribute, user_id, ) users = await self.store.get_users_by_id_case_insensitive(user_id) if users: registered_user_id = list(users.keys())[0] logger.info("Grandfathering mapping to %s", registered_user_id) return registered_user_id return None await self._sso_handler.complete_sso_login_request( self.idp_id, remote_user_id, request, client_redirect_url, saml_response_to_remapped_user_attributes, grandfather_existing_users, ) def _remote_id_from_saml_response( self, saml2_auth: saml2.response.AuthnResponse, client_redirect_url: Optional[str], ) -> str: """Extract the unique remote id from a SAML2 AuthnResponse Args: saml2_auth: The parsed SAML2 response. client_redirect_url: The redirect URL passed in by the client. Returns: remote user id Raises: MappingException if there was an error extracting the user id """ # It's not obvious why we need to pass in the redirect URI to the mapping # provider, but we do :/ remote_user_id = self._user_mapping_provider.get_remote_user_id( saml2_auth, client_redirect_url ) if not remote_user_id: raise MappingException( "Failed to extract remote user id from SAML response" ) return remote_user_id def expire_sessions(self) -> None: expire_before = self.clock.time_msec() - self._saml2_session_lifetime to_expire = set() for reqid, data in self._outstanding_requests_dict.items(): if data.creation_time < expire_before: to_expire.add(reqid) for reqid in to_expire: logger.debug("Expiring session id %s", reqid) del self._outstanding_requests_dict[reqid] DOT_REPLACE_PATTERN = re.compile( "[^%s]" % (re.escape("".join(MXID_LOCALPART_ALLOWED_CHARACTERS)),) ) def dot_replace_for_mxid(username: str) -> str: """Replace any characters which are not allowed in Matrix IDs with a dot.""" username = username.lower() username = DOT_REPLACE_PATTERN.sub(".", username) # regular mxids aren't allowed to start with an underscore either username = re.sub("^_", "", username) return username MXID_MAPPER_MAP: Dict[str, Callable[[str], str]] = { "hexencode": map_username_to_mxid_localpart, "dotreplace": dot_replace_for_mxid, } @attr.s(auto_attribs=True) class SamlConfig: mxid_source_attribute: str mxid_mapper: Callable[[str], str] class DefaultSamlMappingProvider: __version__ = "0.0.1" def __init__(self, parsed_config: SamlConfig, module_api: ModuleApi): """The default SAML user mapping provider Args: parsed_config: Module configuration module_api: module api proxy """ self._mxid_source_attribute = parsed_config.mxid_source_attribute self._mxid_mapper = parsed_config.mxid_mapper self._grandfathered_mxid_source_attribute = ( module_api._hs.config.saml2.saml2_grandfathered_mxid_source_attribute ) def get_remote_user_id( self, saml_response: saml2.response.AuthnResponse, client_redirect_url: str ) -> str: """Extracts the remote user id from the SAML response""" try: return saml_response.ava["uid"][0] except KeyError: logger.warning("SAML2 response lacks a 'uid' attestation") raise MappingException("'uid' not in SAML2 response") def saml_response_to_user_attributes( self, saml_response: saml2.response.AuthnResponse, failures: int, client_redirect_url: str, ) -> dict: """Maps some text from a SAML response to attributes of a new user Args: saml_response: A SAML auth response object failures: How many times a call to this function with this saml_response has resulted in a failure client_redirect_url: where the client wants to redirect to Returns: A dict containing new user attributes. Possible keys: * mxid_localpart (str): Required. The localpart of the user's mxid * displayname (str): The displayname of the user * emails (list[str]): Any emails for the user """ try: mxid_source = saml_response.ava[self._mxid_source_attribute][0] except KeyError: logger.warning( "SAML2 response lacks a '%s' attestation", self._mxid_source_attribute, ) raise SynapseError( 400, "%s not in SAML2 response" % (self._mxid_source_attribute,) ) # Use the configured mapper for this mxid_source localpart = self._mxid_mapper(mxid_source) # Append suffix integer if last call to this function failed to produce # a usable mxid. localpart += str(failures) if failures else "" # Retrieve the display name from the saml response # If displayname is None, the mxid_localpart will be used instead displayname = saml_response.ava.get("displayName", [None])[0] # Retrieve any emails present in the saml response emails = saml_response.ava.get("email", []) return { "mxid_localpart": localpart, "displayname": displayname, "emails": emails, } @staticmethod def parse_config(config: dict) -> SamlConfig: """Parse the dict provided by the homeserver's config Args: config: A dictionary containing configuration options for this provider Returns: A custom config object for this module """ # Parse config options and use defaults where necessary mxid_source_attribute = config.get("mxid_source_attribute", "uid") mapping_type = config.get("mxid_mapping", "hexencode") # Retrieve the associating mapping function try: mxid_mapper = MXID_MAPPER_MAP[mapping_type] except KeyError: raise ConfigError( "saml2_config.user_mapping_provider.config: '%s' is not a valid " "mxid_mapping value" % (mapping_type,) ) return SamlConfig(mxid_source_attribute, mxid_mapper) @staticmethod def get_saml_attributes(config: SamlConfig) -> Tuple[Set[str], Set[str]]: """Returns the required attributes of a SAML Args: config: A SamlConfig object containing configuration params for this provider Returns: The first set equates to the saml auth response attributes that are required for the module to function, whereas the second set consists of those attributes which can be used if available, but are not necessary """ return {"uid", config.mxid_source_attribute}, {"displayName", "email"} synapse-1.100.0/synapse/handlers/search.py000066400000000000000000000621571455622526000204560ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015, 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import itertools import logging from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Set, Tuple import attr from unpaddedbase64 import decode_base64, encode_base64 from synapse.api.constants import EventTypes, Membership from synapse.api.errors import NotFoundError, SynapseError from synapse.api.filtering import Filter from synapse.events import EventBase from synapse.events.utils import SerializeEventConfig from synapse.types import JsonDict, Requester, StrCollection, StreamKeyType, UserID from synapse.types.state import StateFilter from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, auto_attribs=True) class _SearchResult: # The count of results. count: int # A mapping of event ID to the rank of that event. rank_map: Dict[str, int] # A list of the resulting events. allowed_events: List[EventBase] # A map of room ID to results. room_groups: Dict[str, JsonDict] # A set of event IDs to highlight. highlights: Set[str] class SearchHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self.state_handler = hs.get_state_handler() self.clock = hs.get_clock() self.hs = hs self._event_serializer = hs.get_event_client_serializer() self._relations_handler = hs.get_relations_handler() self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self.auth = hs.get_auth() async def get_old_rooms_from_upgraded_room(self, room_id: str) -> Iterable[str]: """Retrieves room IDs of old rooms in the history of an upgraded room. We do so by checking the m.room.create event of the room for a `predecessor` key. If it exists, we add the room ID to our return list and then check that room for a m.room.create event and so on until we can no longer find any more previous rooms. The full list of all found rooms in then returned. Args: room_id: id of the room to search through. Returns: Predecessor room ids """ historical_room_ids = [] # The initial room must have been known for us to get this far predecessor = await self.store.get_room_predecessor(room_id) while True: if not predecessor: # We have reached the end of the chain of predecessors break if not isinstance(predecessor.get("room_id"), str): # This predecessor object is malformed. Exit here break predecessor_room_id = predecessor["room_id"] # Don't add it to the list until we have checked that we are in the room try: next_predecessor_room = await self.store.get_room_predecessor( predecessor_room_id ) except NotFoundError: # The predecessor is not a known room, so we are done here break historical_room_ids.append(predecessor_room_id) # And repeat predecessor = next_predecessor_room return historical_room_ids async def search( self, requester: Requester, content: JsonDict, batch: Optional[str] = None ) -> JsonDict: """Performs a full text search for a user. Args: requester: The user performing the search. content: Search parameters batch: The next_batch parameter. Used for pagination. Returns: dict to be returned to the client with results of search """ if not self.hs.config.server.enable_search: raise SynapseError(400, "Search is disabled on this homeserver") batch_group = None batch_group_key = None batch_token = None if batch: try: b = decode_base64(batch).decode("ascii") batch_group, batch_group_key, batch_token = b.split("\n") assert batch_group is not None assert batch_group_key is not None assert batch_token is not None except Exception: raise SynapseError(400, "Invalid batch") logger.info( "Search batch properties: %r, %r, %r", batch_group, batch_group_key, batch_token, ) logger.info("Search content: %s", content) try: room_cat = content["search_categories"]["room_events"] # The actual thing to query in FTS search_term = room_cat["search_term"] # Which "keys" to search over in FTS query keys = room_cat.get( "keys", ["content.body", "content.name", "content.topic"] ) # Filter to apply to results filter_dict = room_cat.get("filter", {}) # What to order results by (impacts whether pagination can be done) order_by = room_cat.get("order_by", "rank") # Return the current state of the rooms? include_state = room_cat.get("include_state", False) # Include context around each event? event_context = room_cat.get("event_context", None) before_limit = after_limit = None include_profile = False # Group results together? May allow clients to paginate within a # group group_by = room_cat.get("groupings", {}).get("group_by", {}) group_keys = [g["key"] for g in group_by] if event_context is not None: before_limit = int(event_context.get("before_limit", 5)) after_limit = int(event_context.get("after_limit", 5)) # Return the historic display name and avatar for the senders # of the events? include_profile = bool(event_context.get("include_profile", False)) except KeyError: raise SynapseError(400, "Invalid search query") if order_by not in ("rank", "recent"): raise SynapseError(400, "Invalid order by: %r" % (order_by,)) if set(group_keys) - {"room_id", "sender"}: raise SynapseError( 400, "Invalid group by keys: %r" % (set(group_keys) - {"room_id", "sender"},), ) return await self._search( requester, batch_group, batch_group_key, batch_token, search_term, keys, filter_dict, order_by, include_state, group_keys, event_context, before_limit, after_limit, include_profile, ) async def _search( self, requester: Requester, batch_group: Optional[str], batch_group_key: Optional[str], batch_token: Optional[str], search_term: str, keys: List[str], filter_dict: JsonDict, order_by: str, include_state: bool, group_keys: List[str], event_context: Optional[bool], before_limit: Optional[int], after_limit: Optional[int], include_profile: bool, ) -> JsonDict: """Performs a full text search for a user. Args: requester: The user performing the search. batch_group: Pagination information. batch_group_key: Pagination information. batch_token: Pagination information. search_term: Search term to search for keys: List of keys to search in, currently supports "content.body", "content.name", "content.topic" filter_dict: The JSON to build a filter out of. order_by: How to order the results. Valid values ore "rank" and "recent". include_state: True if the state of the room at each result should be included. group_keys: A list of ways to group the results. Valid values are "room_id" and "sender". event_context: True to include contextual events around results. before_limit: The number of events before a result to include as context. Only used if event_context is True. after_limit: The number of events after a result to include as context. Only used if event_context is True. include_profile: True if historical profile information should be included in the event context. Only used if event_context is True. Returns: dict to be returned to the client with results of search """ search_filter = Filter(self.hs, filter_dict) # TODO: Search through left rooms too rooms = await self.store.get_rooms_for_local_user_where_membership_is( requester.user.to_string(), membership_list=[Membership.JOIN], # membership_list=[Membership.JOIN, Membership.LEAVE, Membership.Ban], ) room_ids = {r.room_id for r in rooms} # If doing a subset of all rooms search, check if any of the rooms # are from an upgraded room, and search their contents as well if search_filter.rooms: historical_room_ids: List[str] = [] for room_id in search_filter.rooms: # Add any previous rooms to the search if they exist ids = await self.get_old_rooms_from_upgraded_room(room_id) historical_room_ids += ids # Prevent any historical events from being filtered search_filter = search_filter.with_room_ids(historical_room_ids) room_ids = search_filter.filter_rooms(room_ids) if batch_group == "room_id": room_ids.intersection_update({batch_group_key}) if not room_ids: return { "search_categories": { "room_events": {"results": [], "count": 0, "highlights": []} } } sender_group: Optional[Dict[str, JsonDict]] if order_by == "rank": search_result, sender_group = await self._search_by_rank( requester.user, room_ids, search_term, keys, search_filter ) # Unused return values for rank search. global_next_batch = None elif order_by == "recent": search_result, global_next_batch = await self._search_by_recent( requester.user, room_ids, search_term, keys, search_filter, batch_group, batch_group_key, batch_token, ) # Unused return values for recent search. sender_group = None else: # We should never get here due to the guard earlier. raise NotImplementedError() logger.info("Found %d events to return", len(search_result.allowed_events)) # If client has asked for "context" for each event (i.e. some surrounding # events and state), fetch that if event_context is not None: # Note that before and after limit must be set in this case. assert before_limit is not None assert after_limit is not None contexts = await self._calculate_event_contexts( requester.user, search_result.allowed_events, before_limit, after_limit, include_profile, ) else: contexts = {} # TODO: Add a limit state_results = {} if include_state: for room_id in {e.room_id for e in search_result.allowed_events}: state = await self._storage_controllers.state.get_current_state(room_id) state_results[room_id] = list(state.values()) aggregations = await self._relations_handler.get_bundled_aggregations( # Generate an iterable of EventBase for all the events that will be # returned, including contextual events. itertools.chain( # The events_before and events_after for each context. itertools.chain.from_iterable( itertools.chain(context["events_before"], context["events_after"]) for context in contexts.values() ), # The returned events. search_result.allowed_events, ), requester.user.to_string(), ) # We're now about to serialize the events. We should not make any # blocking calls after this. Otherwise, the 'age' will be wrong. time_now = self.clock.time_msec() serialize_options = SerializeEventConfig(requester=requester) for context in contexts.values(): context["events_before"] = await self._event_serializer.serialize_events( context["events_before"], time_now, bundle_aggregations=aggregations, config=serialize_options, ) context["events_after"] = await self._event_serializer.serialize_events( context["events_after"], time_now, bundle_aggregations=aggregations, config=serialize_options, ) results = [ { "rank": search_result.rank_map[e.event_id], "result": await self._event_serializer.serialize_event( e, time_now, bundle_aggregations=aggregations, config=serialize_options, ), "context": contexts.get(e.event_id, {}), } for e in search_result.allowed_events ] rooms_cat_res: JsonDict = { "results": results, "count": search_result.count, "highlights": list(search_result.highlights), } if state_results: rooms_cat_res["state"] = { room_id: await self._event_serializer.serialize_events( state_events, time_now, config=serialize_options ) for room_id, state_events in state_results.items() } if search_result.room_groups and "room_id" in group_keys: rooms_cat_res.setdefault("groups", {})[ "room_id" ] = search_result.room_groups if sender_group and "sender" in group_keys: rooms_cat_res.setdefault("groups", {})["sender"] = sender_group if global_next_batch: rooms_cat_res["next_batch"] = global_next_batch return {"search_categories": {"room_events": rooms_cat_res}} async def _search_by_rank( self, user: UserID, room_ids: StrCollection, search_term: str, keys: Iterable[str], search_filter: Filter, ) -> Tuple[_SearchResult, Dict[str, JsonDict]]: """ Performs a full text search for a user ordering by rank. Args: user: The user performing the search. room_ids: List of room ids to search in search_term: Search term to search for keys: List of keys to search in, currently supports "content.body", "content.name", "content.topic" search_filter: The event filter to use. Returns: A tuple of: The search results. A map of sender ID to results. """ rank_map = {} # event_id -> rank of event # Holds result of grouping by room, if applicable room_groups: Dict[str, JsonDict] = {} # Holds result of grouping by sender, if applicable sender_group: Dict[str, JsonDict] = {} search_result = await self.store.search_msgs(room_ids, search_term, keys) if search_result["highlights"]: highlights = search_result["highlights"] else: highlights = set() results = search_result["results"] # event_id -> rank of event rank_map = {r["event"].event_id: r["rank"] for r in results} filtered_events = await search_filter.filter([r["event"] for r in results]) events = await filter_events_for_client( self._storage_controllers, user.to_string(), filtered_events ) events.sort(key=lambda e: -rank_map[e.event_id]) allowed_events = events[: search_filter.limit] for e in allowed_events: rm = room_groups.setdefault( e.room_id, {"results": [], "order": rank_map[e.event_id]} ) rm["results"].append(e.event_id) s = sender_group.setdefault( e.sender, {"results": [], "order": rank_map[e.event_id]} ) s["results"].append(e.event_id) return ( _SearchResult( search_result["count"], rank_map, allowed_events, room_groups, highlights, ), sender_group, ) async def _search_by_recent( self, user: UserID, room_ids: StrCollection, search_term: str, keys: Iterable[str], search_filter: Filter, batch_group: Optional[str], batch_group_key: Optional[str], batch_token: Optional[str], ) -> Tuple[_SearchResult, Optional[str]]: """ Performs a full text search for a user ordering by recent. Args: user: The user performing the search. room_ids: List of room ids to search in search_term: Search term to search for keys: List of keys to search in, currently supports "content.body", "content.name", "content.topic" search_filter: The event filter to use. batch_group: Pagination information. batch_group_key: Pagination information. batch_token: Pagination information. Returns: A tuple of: The search results. Optionally, a pagination token. """ rank_map = {} # event_id -> rank of event # Holds result of grouping by room, if applicable room_groups: Dict[str, JsonDict] = {} # Holds the next_batch for the entire result set if one of those exists global_next_batch = None highlights = set() room_events: List[EventBase] = [] i = 0 pagination_token = batch_token # We keep looping and we keep filtering until we reach the limit # or we run out of things. # But only go around 5 times since otherwise synapse will be sad. while len(room_events) < search_filter.limit and i < 5: i += 1 search_result = await self.store.search_rooms( room_ids, search_term, keys, search_filter.limit * 2, pagination_token=pagination_token, ) if search_result["highlights"]: highlights.update(search_result["highlights"]) count = search_result["count"] results = search_result["results"] results_map = {r["event"].event_id: r for r in results} rank_map.update({r["event"].event_id: r["rank"] for r in results}) filtered_events = await search_filter.filter([r["event"] for r in results]) events = await filter_events_for_client( self._storage_controllers, user.to_string(), filtered_events ) room_events.extend(events) room_events = room_events[: search_filter.limit] if len(results) < search_filter.limit * 2: break else: pagination_token = results[-1]["pagination_token"] for event in room_events: group = room_groups.setdefault(event.room_id, {"results": []}) group["results"].append(event.event_id) if room_events and len(room_events) >= search_filter.limit: last_event_id = room_events[-1].event_id pagination_token = results_map[last_event_id]["pagination_token"] # We want to respect the given batch group and group keys so # that if people blindly use the top level `next_batch` token # it returns more from the same group (if applicable) rather # than reverting to searching all results again. if batch_group and batch_group_key: global_next_batch = encode_base64( ( "%s\n%s\n%s" % (batch_group, batch_group_key, pagination_token) ).encode("ascii") ) else: global_next_batch = encode_base64( ("%s\n%s\n%s" % ("all", "", pagination_token)).encode("ascii") ) for room_id, group in room_groups.items(): group["next_batch"] = encode_base64( ("%s\n%s\n%s" % ("room_id", room_id, pagination_token)).encode( "ascii" ) ) return ( _SearchResult(count, rank_map, room_events, room_groups, highlights), global_next_batch, ) async def _calculate_event_contexts( self, user: UserID, allowed_events: List[EventBase], before_limit: int, after_limit: int, include_profile: bool, ) -> Dict[str, JsonDict]: """ Calculates the contextual events for any search results. Args: user: The user performing the search. allowed_events: The search results. before_limit: The number of events before a result to include as context. after_limit: The number of events after a result to include as context. include_profile: True if historical profile information should be included in the event context. Returns: A map of event ID to contextual information. """ now_token = self.hs.get_event_sources().get_current_token() contexts = {} for event in allowed_events: res = await self.store.get_events_around( event.room_id, event.event_id, before_limit, after_limit ) logger.info( "Context for search returned %d and %d events", len(res.events_before), len(res.events_after), ) events_before = await filter_events_for_client( self._storage_controllers, user.to_string(), res.events_before ) events_after = await filter_events_for_client( self._storage_controllers, user.to_string(), res.events_after ) context: JsonDict = { "events_before": events_before, "events_after": events_after, "start": await now_token.copy_and_replace( StreamKeyType.ROOM, res.start ).to_string(self.store), "end": await now_token.copy_and_replace( StreamKeyType.ROOM, res.end ).to_string(self.store), } if include_profile: senders = { ev.sender for ev in itertools.chain(events_before, [event], events_after) } if events_after: last_event_id = events_after[-1].event_id else: last_event_id = event.event_id state_filter = StateFilter.from_types( [(EventTypes.Member, sender) for sender in senders] ) state = await self._state_storage_controller.get_state_for_event( last_event_id, state_filter ) context["profile_info"] = { s.state_key: { "displayname": s.content.get("displayname", None), "avatar_url": s.content.get("avatar_url", None), } for s in state.values() if s.type == EventTypes.Member and s.state_key in senders } contexts[event.event_id] = context return contexts synapse-1.100.0/synapse/handlers/send_email.py000066400000000000000000000201261455622526000212770ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org C.I.C. Foundation # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import email.utils import logging from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from io import BytesIO from typing import TYPE_CHECKING, Any, Dict, Optional from pkg_resources import parse_version import twisted from twisted.internet.defer import Deferred from twisted.internet.endpoints import HostnameEndpoint from twisted.internet.interfaces import IOpenSSLContextFactory, IProtocolFactory from twisted.internet.ssl import optionsForClientTLS from twisted.mail.smtp import ESMTPSender, ESMTPSenderFactory from twisted.protocols.tls import TLSMemoryBIOFactory from synapse.logging.context import make_deferred_yieldable from synapse.types import ISynapseReactor if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) _is_old_twisted = parse_version(twisted.__version__) < parse_version("21") class _NoTLSESMTPSender(ESMTPSender): """Extend ESMTPSender to disable TLS Unfortunately, before Twisted 21.2, ESMTPSender doesn't give an easy way to disable TLS, so we override its internal method which it uses to generate a context factory. """ def _getContextFactory(self) -> Optional[IOpenSSLContextFactory]: return None async def _sendmail( reactor: ISynapseReactor, smtphost: str, smtpport: int, from_addr: str, to_addr: str, msg_bytes: bytes, username: Optional[bytes] = None, password: Optional[bytes] = None, require_auth: bool = False, require_tls: bool = False, enable_tls: bool = True, force_tls: bool = False, ) -> None: """A simple wrapper around ESMTPSenderFactory, to allow substitution in tests Params: reactor: reactor to use to make the outbound connection smtphost: hostname to connect to smtpport: port to connect to from_addr: "From" address for email to_addr: "To" address for email msg_bytes: Message content username: username to authenticate with, if auth is enabled password: password to give when authenticating require_auth: if auth is not offered, fail the request require_tls: if TLS is not offered, fail the reqest enable_tls: True to enable STARTTLS. If this is False and require_tls is True, the request will fail. force_tls: True to enable Implicit TLS. """ msg = BytesIO(msg_bytes) d: "Deferred[object]" = Deferred() def build_sender_factory(**kwargs: Any) -> ESMTPSenderFactory: return ESMTPSenderFactory( username, password, from_addr, to_addr, msg, d, heloFallback=True, requireAuthentication=require_auth, requireTransportSecurity=require_tls, **kwargs, ) factory: IProtocolFactory if _is_old_twisted: # before twisted 21.2, we have to override the ESMTPSender protocol to disable # TLS factory = build_sender_factory() if not enable_tls: factory.protocol = _NoTLSESMTPSender else: # for twisted 21.2 and later, there is a 'hostname' parameter which we should # set to enable TLS. factory = build_sender_factory(hostname=smtphost if enable_tls else None) if force_tls: factory = TLSMemoryBIOFactory(optionsForClientTLS(smtphost), True, factory) endpoint = HostnameEndpoint( reactor, smtphost, smtpport, timeout=30, bindAddress=None ) await make_deferred_yieldable(endpoint.connect(factory)) await make_deferred_yieldable(d) class SendEmailHandler: def __init__(self, hs: "HomeServer"): self.hs = hs self._reactor = hs.get_reactor() self._from = hs.config.email.email_notif_from self._smtp_host = hs.config.email.email_smtp_host self._smtp_port = hs.config.email.email_smtp_port user = hs.config.email.email_smtp_user self._smtp_user = user.encode("utf-8") if user is not None else None passwd = hs.config.email.email_smtp_pass self._smtp_pass = passwd.encode("utf-8") if passwd is not None else None self._require_transport_security = hs.config.email.require_transport_security self._enable_tls = hs.config.email.enable_smtp_tls self._force_tls = hs.config.email.force_tls self._sendmail = _sendmail async def send_email( self, email_address: str, subject: str, app_name: str, html: str, text: str, additional_headers: Optional[Dict[str, str]] = None, ) -> None: """Send a multipart email with the given information. Args: email_address: The address to send the email to. subject: The email's subject. app_name: The app name to include in the From header. html: The HTML content to include in the email. text: The plain text content to include in the email. additional_headers: A map of additional headers to include. """ try: from_string = self._from % {"app": app_name} except (KeyError, TypeError): from_string = self._from raw_from = email.utils.parseaddr(from_string)[1] raw_to = email.utils.parseaddr(email_address)[1] if raw_to == "": raise RuntimeError("Invalid 'to' address") html_part = MIMEText(html, "html", "utf-8") text_part = MIMEText(text, "plain", "utf-8") multipart_msg = MIMEMultipart("alternative") multipart_msg["Subject"] = subject multipart_msg["From"] = from_string multipart_msg["To"] = email_address multipart_msg["Date"] = email.utils.formatdate() multipart_msg["Message-ID"] = email.utils.make_msgid() # Discourage automatic responses to Synapse's emails. # Per RFC 3834, automatic responses should not be sent if the "Auto-Submitted" # header is present with any value other than "no". See # https://www.rfc-editor.org/rfc/rfc3834.html#section-5.1 multipart_msg["Auto-Submitted"] = "auto-generated" # Also include a Microsoft-Exchange specific header: # https://learn.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxcmail/ced68690-498a-4567-9d14-5c01f974d8b1 # which suggests it can take the value "All" to "suppress all auto-replies", # or a comma separated list of auto-reply classes to suppress. # The following stack overflow question has a little more context: # https://stackoverflow.com/a/25324691/5252017 # https://stackoverflow.com/a/61646381/5252017 multipart_msg["X-Auto-Response-Suppress"] = "All" if additional_headers: for header, value in additional_headers.items(): multipart_msg[header] = value multipart_msg.attach(text_part) multipart_msg.attach(html_part) logger.info("Sending email to %s" % email_address) await self._sendmail( self._reactor, self._smtp_host, self._smtp_port, raw_from, raw_to, multipart_msg.as_string().encode("utf8"), username=self._smtp_user, password=self._smtp_pass, require_auth=self._smtp_user is not None, require_tls=self._require_transport_security, enable_tls=self._enable_tls, force_tls=self._force_tls, ) synapse-1.100.0/synapse/handlers/set_password.py000066400000000000000000000052621455622526000217200ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import TYPE_CHECKING, Optional from synapse.api.errors import Codes, StoreError, SynapseError from synapse.handlers.device import DeviceHandler from synapse.types import Requester if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class SetPasswordHandler: """Handler which deals with changing user account passwords""" def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self._auth_handler = hs.get_auth_handler() # This can only be instantiated on the main process. device_handler = hs.get_device_handler() assert isinstance(device_handler, DeviceHandler) self._device_handler = device_handler async def set_password( self, user_id: str, password_hash: str, logout_devices: bool, requester: Optional[Requester] = None, ) -> None: if not self._auth_handler.can_change_password(): raise SynapseError(403, "Password change disabled", errcode=Codes.FORBIDDEN) try: await self.store.user_set_password_hash(user_id, password_hash) except StoreError as e: if e.code == 404: raise SynapseError(404, "Unknown user", Codes.NOT_FOUND) raise e # Optionally, log out all of the user's other sessions. if logout_devices: except_device_id = requester.device_id if requester else None except_access_token_id = requester.access_token_id if requester else None # First delete all of their other devices. await self._device_handler.delete_all_devices_for_user( user_id, except_device_id=except_device_id ) # and now delete any access tokens which weren't associated with # devices (or were associated with this device). await self._auth_handler.delete_access_tokens_for_user( user_id, except_token_id=except_access_token_id ) synapse-1.100.0/synapse/handlers/sso.py000066400000000000000000001354621455622526000200150ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import hashlib import io import logging from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, List, Mapping, NoReturn, Optional, Set, ) from urllib.parse import urlencode import attr from typing_extensions import Protocol from twisted.web.iweb import IRequest from twisted.web.server import Request from synapse.api.constants import LoginType from synapse.api.errors import Codes, NotFoundError, RedirectException, SynapseError from synapse.config.sso import SsoAttributeRequirement from synapse.handlers.device import DeviceHandler from synapse.handlers.register import init_counters_for_auth_provider from synapse.handlers.ui_auth import UIAuthSessionDataConstants from synapse.http import get_request_user_agent from synapse.http.server import respond_with_html, respond_with_redirect from synapse.http.site import SynapseRequest from synapse.types import ( JsonDict, StrCollection, UserID, contains_invalid_mxid_characters, create_requester, ) from synapse.util.async_helpers import Linearizer from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class MappingException(Exception): """Used to catch errors when mapping an SSO response to user attributes. Note that the msg that is raised is shown to end-users. """ class SsoIdentityProvider(Protocol): """Abstract base class to be implemented by SSO Identity Providers An Identity Provider, or IdP, is an external HTTP service which authenticates a user to say whether they should be allowed to log in, or perform a given action. Synapse supports various implementations of IdPs, including OpenID Connect, SAML, and CAS. The main entry point is `handle_redirect_request`, which should return a URI to redirect the user's browser to the IdP's authentication page. Each IdP should be registered with the SsoHandler via `hs.get_sso_handler().register_identity_provider()`, so that requests to `/_matrix/client/r0/login/sso/redirect` can be correctly dispatched. """ @property @abc.abstractmethod def idp_id(self) -> str: """A unique identifier for this SSO provider Eg, "saml", "cas", "github" """ @property @abc.abstractmethod def idp_name(self) -> str: """User-facing name for this provider""" @property def idp_icon(self) -> Optional[str]: """Optional MXC URI for user-facing icon""" return None @property def idp_brand(self) -> Optional[str]: """Optional branding identifier""" return None @abc.abstractmethod async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: Optional[bytes], ui_auth_session_id: Optional[str] = None, ) -> str: """Handle an incoming request to /login/sso/redirect Args: request: the incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login (or None for UI Auth). ui_auth_session_id: The session ID of the ongoing UI Auth (or None if this is a login). Returns: URL to redirect to """ raise NotImplementedError() @attr.s(auto_attribs=True) class UserAttributes: # NB: This struct is documented in docs/sso_mapping_providers.md so that users can # populate it with data from their own mapping providers. # the localpart of the mxid that the mapper has assigned to the user. # if `None`, the mapper has not picked a userid, and the user should be prompted to # enter one. localpart: Optional[str] confirm_localpart: bool = False display_name: Optional[str] = None picture: Optional[str] = None # mypy thinks these are incompatible for some reason. emails: StrCollection = attr.Factory(list) # type: ignore[assignment] @attr.s(slots=True, auto_attribs=True) class UsernameMappingSession: """Data we track about SSO sessions""" # A unique identifier for this SSO provider, e.g. "oidc" or "saml". auth_provider_id: str # An optional session ID from the IdP. auth_provider_session_id: Optional[str] # user ID on the IdP server remote_user_id: str # attributes returned by the ID mapper display_name: Optional[str] emails: StrCollection # An optional dictionary of extra attributes to be provided to the client in the # login response. extra_login_attributes: Optional[JsonDict] # where to redirect the client back to client_redirect_url: str # expiry time for the session, in milliseconds expiry_time_ms: int # choices made by the user chosen_localpart: Optional[str] = None use_display_name: bool = True emails_to_use: StrCollection = () terms_accepted_version: Optional[str] = None # the HTTP cookie used to track the mapping session id USERNAME_MAPPING_SESSION_COOKIE_NAME = b"username_mapping_session" class SsoHandler: # The number of attempts to ask the mapping provider for when generating an MXID. _MAP_USERNAME_RETRIES = 1000 # the time a UsernameMappingSession remains valid for _MAPPING_SESSION_VALIDITY_PERIOD_MS = 15 * 60 * 1000 def __init__(self, hs: "HomeServer"): self._clock = hs.get_clock() self._store = hs.get_datastores().main self._server_name = hs.hostname self._is_mine_server_name = hs.is_mine_server_name self._registration_handler = hs.get_registration_handler() self._auth_handler = hs.get_auth_handler() self._device_handler = hs.get_device_handler() self._error_template = hs.config.sso.sso_error_template self._bad_user_template = hs.config.sso.sso_auth_bad_user_template self._profile_handler = hs.get_profile_handler() self._media_repo = ( hs.get_media_repository() if hs.config.media.can_load_media_repo else None ) self._http_client = hs.get_proxied_blocklisted_http_client() # The following template is shown after a successful user interactive # authentication session. It tells the user they can close the window. self._sso_auth_success_template = hs.config.sso.sso_auth_success_template self._sso_update_profile_information = ( hs.config.sso.sso_update_profile_information ) # a lock on the mappings self._mapping_lock = Linearizer(name="sso_user_mapping", clock=hs.get_clock()) # a map from session id to session data self._username_mapping_sessions: Dict[str, UsernameMappingSession] = {} # map from idp_id to SsoIdentityProvider self._identity_providers: Dict[str, SsoIdentityProvider] = {} self._consent_at_registration = hs.config.consent.user_consent_at_registration def register_identity_provider(self, p: SsoIdentityProvider) -> None: p_id = p.idp_id assert p_id not in self._identity_providers self._identity_providers[p_id] = p init_counters_for_auth_provider(p_id) def get_identity_providers(self) -> Mapping[str, SsoIdentityProvider]: """Get the configured identity providers""" return self._identity_providers async def get_identity_providers_for_user( self, user_id: str ) -> Mapping[str, SsoIdentityProvider]: """Get the SsoIdentityProviders which a user has used Given a user id, get the identity providers that that user has used to log in with in the past (and thus could use to re-identify themselves for UI Auth). Args: user_id: MXID of user to look up Raises: a map of idp_id to SsoIdentityProvider """ external_ids = await self._store.get_external_ids_by_user(user_id) valid_idps = {} for idp_id, _ in external_ids: idp = self._identity_providers.get(idp_id) if not idp: logger.warning( "User %r has an SSO mapping for IdP %r, but this is no longer " "configured.", user_id, idp_id, ) else: valid_idps[idp_id] = idp return valid_idps def render_error( self, request: Request, error: str, error_description: Optional[str] = None, code: int = 400, ) -> None: """Renders the error template and responds with it. This is used to show errors to the user. The template of this page can be found under `synapse/res/templates/sso_error.html`. Args: request: The incoming request from the browser. We'll respond with an HTML page describing the error. error: A technical identifier for this error. error_description: A human-readable description of the error. code: The integer error code (an HTTP response code) """ html = self._error_template.render( error=error, error_description=error_description ) respond_with_html(request, code, html) async def handle_redirect_request( self, request: SynapseRequest, client_redirect_url: bytes, idp_id: Optional[str], ) -> str: """Handle a request to /login/sso/redirect Args: request: incoming HTTP request client_redirect_url: the URL that we should redirect the client to after login. idp_id: optional identity provider chosen by the client Returns: the URI to redirect to """ if not self._identity_providers: raise SynapseError( 400, "Homeserver not configured for SSO.", errcode=Codes.UNRECOGNIZED ) # if the client chose an IdP, use that idp: Optional[SsoIdentityProvider] = None if idp_id: idp = self._identity_providers.get(idp_id) if not idp: raise NotFoundError("Unknown identity provider") # if we only have one auth provider, redirect to it directly elif len(self._identity_providers) == 1: idp = next(iter(self._identity_providers.values())) if idp: return await idp.handle_redirect_request(request, client_redirect_url) # otherwise, redirect to the IDP picker return "/_synapse/client/pick_idp?" + urlencode( (("redirectUrl", client_redirect_url),) ) async def get_sso_user_by_remote_user_id( self, auth_provider_id: str, remote_user_id: str ) -> Optional[str]: """ Maps the user ID of a remote IdP to a mxid for a previously seen user. If the user has not been seen yet, this will return None. Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The user ID according to the remote IdP. This might be an e-mail address, a GUID, or some other form. It must be unique and immutable. Returns: The mxid of a previously seen user. """ logger.debug( "Looking for existing mapping for user %s:%s", auth_provider_id, remote_user_id, ) # Check if we already have a mapping for this user. previously_registered_user_id = await self._store.get_user_by_external_id( auth_provider_id, remote_user_id, ) # A match was found, return the user ID. if previously_registered_user_id is not None: logger.info( "Found existing mapping for IdP '%s' and remote_user_id '%s': %s", auth_provider_id, remote_user_id, previously_registered_user_id, ) return previously_registered_user_id # No match. return None async def complete_sso_login_request( self, auth_provider_id: str, remote_user_id: str, request: SynapseRequest, client_redirect_url: str, sso_to_matrix_id_mapper: Callable[[int], Awaitable[UserAttributes]], grandfather_existing_users: Callable[[], Awaitable[Optional[str]]], extra_login_attributes: Optional[JsonDict] = None, auth_provider_session_id: Optional[str] = None, registration_enabled: bool = True, ) -> None: """ Given an SSO ID, retrieve the user ID for it and possibly register the user. This first checks if the SSO ID has previously been linked to a matrix ID, if it has that matrix ID is returned regardless of the current mapping logic. If a callable is provided for grandfathering users, it is called and can potentially return a matrix ID to use. If it does, the SSO ID is linked to this matrix ID for subsequent calls. The mapping function is called (potentially multiple times) to generate a localpart for the user. If an unused localpart is generated, the user is registered from the given user-agent and IP address and the SSO ID is linked to this matrix ID for subsequent calls. Finally, we generate a redirect to the supplied redirect uri, with a login token Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. request: The request to respond to client_redirect_url: The redirect URL passed in by the client. sso_to_matrix_id_mapper: A callable to generate the user attributes. The only parameter is an integer which represents the amount of times the returned mxid localpart mapping has failed. It is expected that the mapper can raise two exceptions, which will get passed through to the caller: MappingException if there was a problem mapping the response to the user. RedirectException to redirect to an additional page (e.g. to prompt the user for more information). grandfather_existing_users: A callable which can return an previously existing matrix ID. The SSO ID is then linked to the returned matrix ID. extra_login_attributes: An optional dictionary of extra attributes to be provided to the client in the login response. auth_provider_session_id: An optional session ID from the IdP. registration_enabled: An optional boolean to enable/disable automatic registrations of new users. If false and the user does not exist then the flow is aborted. Defaults to true. Raises: MappingException if there was a problem mapping the response to a user. RedirectException: if the mapping provider needs to redirect the user to an additional page. (e.g. to prompt for more information) """ new_user = False # grab a lock while we try to find a mapping for this user. This seems... # optimistic, especially for implementations that end up redirecting to # interstitial pages. async with self._mapping_lock.queue(auth_provider_id): # first of all, check if we already have a mapping for this user user_id = await self.get_sso_user_by_remote_user_id( auth_provider_id, remote_user_id, ) # Check for grandfathering of users. if not user_id: user_id = await grandfather_existing_users() if user_id: # Future logins should also match this user ID. await self._store.record_user_external_id( auth_provider_id, remote_user_id, user_id ) if not user_id and not registration_enabled: logger.info( "User does not exist and registration are disabled for IdP '%s' and remote_user_id '%s'", auth_provider_id, remote_user_id, ) raise MappingException( "User does not exist and registrations are disabled" ) elif not user_id: # Otherwise, generate a new user. attributes = await self._call_attribute_mapper(sso_to_matrix_id_mapper) next_step_url = self._get_url_for_next_new_user_step( attributes=attributes ) if next_step_url: await self._redirect_to_next_new_user_step( auth_provider_id, remote_user_id, attributes, client_redirect_url, next_step_url, extra_login_attributes, auth_provider_session_id, ) user_id = await self._register_mapped_user( attributes, auth_provider_id, remote_user_id, get_request_user_agent(request), request.getClientAddress().host, ) new_user = True elif self._sso_update_profile_information: attributes = await self._call_attribute_mapper(sso_to_matrix_id_mapper) if attributes.display_name: user_id_obj = UserID.from_string(user_id) profile_display_name = await self._profile_handler.get_displayname( user_id_obj ) if profile_display_name != attributes.display_name: requester = create_requester( user_id, authenticated_entity=user_id, ) await self._profile_handler.set_displayname( user_id_obj, requester, attributes.display_name, True ) if attributes.picture: await self.set_avatar(user_id, attributes.picture) await self._auth_handler.complete_sso_login( user_id, auth_provider_id, request, client_redirect_url, extra_login_attributes, new_user=new_user, auth_provider_session_id=auth_provider_session_id, ) async def _call_attribute_mapper( self, sso_to_matrix_id_mapper: Callable[[int], Awaitable[UserAttributes]], ) -> UserAttributes: """Call the attribute mapper function in a loop, until we get a unique userid""" for i in range(self._MAP_USERNAME_RETRIES): try: attributes = await sso_to_matrix_id_mapper(i) except (RedirectException, MappingException): # Mapping providers are allowed to issue a redirect (e.g. to ask # the user for more information) and can issue a mapping exception # if a name cannot be generated. raise except Exception as e: # Any other exception is unexpected. raise MappingException( "Could not extract user attributes from SSO response." ) from e logger.debug( "Retrieved user attributes from user mapping provider: %r (attempt %d)", attributes, i, ) if not attributes.localpart: # the mapper has not picked a localpart return attributes # Check if this mxid already exists user_id = UserID(attributes.localpart, self._server_name).to_string() if not await self._store.get_users_by_id_case_insensitive(user_id): # This mxid is free break else: # Unable to generate a username in 1000 iterations # Break and return error to the user raise MappingException( "Unable to generate a Matrix ID from the SSO response" ) return attributes def _get_url_for_next_new_user_step( self, attributes: Optional[UserAttributes] = None, session: Optional[UsernameMappingSession] = None, ) -> bytes: """Returns the URL to redirect to for the next step of new user registration Given attributes from the user mapping provider or a UsernameMappingSession, returns the URL to redirect to for the next step of the registration flow. Args: attributes: the user attributes returned by the user mapping provider, from before a UsernameMappingSession has begun. session: an active UsernameMappingSession, possibly with some of its attributes chosen by the user. Returns: The URL to redirect to, or an empty value if no redirect is necessary """ # Must provide either attributes or session, not both assert (attributes is not None) != (session is not None) if ( attributes and (attributes.localpart is None or attributes.confirm_localpart is True) ) or (session and session.chosen_localpart is None): return b"/_synapse/client/pick_username/account_details" elif self._consent_at_registration and not ( session and session.terms_accepted_version ): return b"/_synapse/client/new_user_consent" else: return b"/_synapse/client/sso_register" if session else b"" async def _redirect_to_next_new_user_step( self, auth_provider_id: str, remote_user_id: str, attributes: UserAttributes, client_redirect_url: str, next_step_url: bytes, extra_login_attributes: Optional[JsonDict], auth_provider_session_id: Optional[str], ) -> NoReturn: """Creates a UsernameMappingSession and redirects the browser Called if the user mapping provider doesn't return complete information for a new user. Raises a RedirectException which redirects the browser to a specified URL. Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. attributes: the user attributes returned by the user mapping provider. client_redirect_url: The redirect URL passed in by the client, which we will eventually redirect back to. next_step_url: The URL to redirect to for the next step of the new user flow. extra_login_attributes: An optional dictionary of extra attributes to be provided to the client in the login response. auth_provider_session_id: An optional session ID from the IdP. Raises: RedirectException """ # TODO: If needed, allow using/looking up an existing session here. session_id = random_string(16) now = self._clock.time_msec() session = UsernameMappingSession( auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, remote_user_id=remote_user_id, display_name=attributes.display_name, emails=attributes.emails, client_redirect_url=client_redirect_url, expiry_time_ms=now + self._MAPPING_SESSION_VALIDITY_PERIOD_MS, extra_login_attributes=extra_login_attributes, # Treat the localpart returned by the user mapping provider as though # it was chosen by the user. If it's None, it must be chosen eventually. chosen_localpart=attributes.localpart, # TODO: Consider letting the user mapping provider specify defaults for # other user-chosen attributes. ) self._username_mapping_sessions[session_id] = session logger.info("Recorded registration session id %s", session_id) # Set the cookie and redirect to the next step e = RedirectException(next_step_url) e.cookies.append( b"%s=%s; path=/" % (USERNAME_MAPPING_SESSION_COOKIE_NAME, session_id.encode("ascii")) ) raise e async def _register_mapped_user( self, attributes: UserAttributes, auth_provider_id: str, remote_user_id: str, user_agent: str, ip_address: str, ) -> str: """Register a new SSO user. This is called once we have successfully mapped the remote user id onto a local user id, one way or another. Args: attributes: user attributes returned by the user mapping provider, including a non-empty localpart. auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. user_agent: The user-agent in the HTTP request (used for potential shadow-banning.) ip_address: The IP address of the requester (used for potential shadow-banning.) Raises: a MappingException if the localpart is invalid. a SynapseError with code 400 and errcode Codes.USER_IN_USE if the localpart is already taken. """ # Since the localpart is provided via a potentially untrusted module, # ensure the MXID is valid before registering. if not attributes.localpart or contains_invalid_mxid_characters( attributes.localpart ): raise MappingException("localpart is invalid: %s" % (attributes.localpart,)) logger.debug("Mapped SSO user to local part %s", attributes.localpart) registered_user_id = await self._registration_handler.register_user( localpart=attributes.localpart, default_display_name=attributes.display_name, bind_emails=attributes.emails, user_agent_ips=[(user_agent, ip_address)], auth_provider_id=auth_provider_id, ) await self._store.record_user_external_id( auth_provider_id, remote_user_id, registered_user_id ) # Set avatar, if available if attributes.picture: await self.set_avatar(registered_user_id, attributes.picture) return registered_user_id async def set_avatar(self, user_id: str, picture_https_url: str) -> bool: """Set avatar of the user. This downloads the image file from the URL provided, stores that in the media repository and then sets the avatar on the user's profile. It can detect if the same image is being saved again and bails early by storing the hash of the file in the `upload_name` of the avatar image. Currently, it only supports server configurations which run the media repository within the same process. It silently fails and logs a warning by raising an exception and catching it internally if: * it is unable to fetch the image itself (non 200 status code) or * the image supplied is bigger than max allowed size or * the image type is not one of the allowed image types. Args: user_id: matrix user ID in the form @localpart:domain as a string. picture_https_url: HTTPS url for the picture image file. Returns: `True` if the user's avatar has been successfully set to the image at `picture_https_url`. """ if self._media_repo is None: logger.info( "failed to set user avatar because out-of-process media repositories " "are not supported yet " ) return False try: uid = UserID.from_string(user_id) def is_allowed_mime_type(content_type: str) -> bool: if ( self._profile_handler.allowed_avatar_mimetypes and content_type not in self._profile_handler.allowed_avatar_mimetypes ): return False return True # download picture, enforcing size limit & mime type check picture = io.BytesIO() content_length, headers, uri, code = await self._http_client.get_file( url=picture_https_url, output_stream=picture, max_size=self._profile_handler.max_avatar_size, is_allowed_content_type=is_allowed_mime_type, ) if code != 200: raise Exception( f"GET request to download sso avatar image returned {code}" ) # upload name includes hash of the image file's content so that we can # easily check if it requires an update or not, the next time user logs in upload_name = "sso_avatar_" + hashlib.sha256(picture.read()).hexdigest() # bail if user already has the same avatar profile = await self._profile_handler.get_profile(user_id) if profile["avatar_url"] is not None: server_name = profile["avatar_url"].split("/")[-2] media_id = profile["avatar_url"].split("/")[-1] if self._is_mine_server_name(server_name): media = await self._media_repo.store.get_local_media(media_id) if media is not None and upload_name == media.upload_name: logger.info("skipping saving the user avatar") return True # store it in media repository avatar_mxc_url = await self._media_repo.create_content( media_type=headers[b"Content-Type"][0].decode("utf-8"), upload_name=upload_name, content=picture, content_length=content_length, auth_user=uid, ) # save it as user avatar await self._profile_handler.set_avatar_url( uid, create_requester(uid), str(avatar_mxc_url), ) logger.info("successfully saved the user avatar") return True except Exception: logger.warning("failed to save the user avatar") return False async def complete_sso_ui_auth_request( self, auth_provider_id: str, remote_user_id: str, ui_auth_session_id: str, request: Request, ) -> None: """ Given an SSO ID, retrieve the user ID for it and complete UIA. Note that this requires that the user is mapped in the "user_external_ids" table. This will be the case if they have ever logged in via SAML or OIDC in recentish synapse versions, but may not be for older users. Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". remote_user_id: The unique identifier from the SSO provider. ui_auth_session_id: The ID of the user-interactive auth session. request: The request to complete. """ user_id = await self.get_sso_user_by_remote_user_id( auth_provider_id, remote_user_id, ) user_id_to_verify: str = await self._auth_handler.get_session_data( ui_auth_session_id, UIAuthSessionDataConstants.REQUEST_USER_ID ) if not user_id: logger.warning( "Remote user %s/%s has not previously logged in here: UIA will fail", auth_provider_id, remote_user_id, ) elif user_id != user_id_to_verify: logger.warning( "Remote user %s/%s mapped onto incorrect user %s: UIA will fail", auth_provider_id, remote_user_id, user_id, ) else: # success! # Mark the stage of the authentication as successful. await self._store.mark_ui_auth_stage_complete( ui_auth_session_id, LoginType.SSO, user_id ) # Render the HTML confirmation page and return. html = self._sso_auth_success_template respond_with_html(request, 200, html) return # the user_id didn't match: mark the stage of the authentication as unsuccessful await self._store.mark_ui_auth_stage_complete( ui_auth_session_id, LoginType.SSO, "" ) # render an error page. html = self._bad_user_template.render( server_name=self._server_name, user_id_to_verify=user_id_to_verify, ) respond_with_html(request, 200, html) def get_mapping_session(self, session_id: str) -> UsernameMappingSession: """Look up the given username mapping session If it is not found, raises a SynapseError with an http code of 400 Args: session_id: session to look up Returns: active mapping session Raises: SynapseError if the session is not found/has expired """ self._expire_old_sessions() session = self._username_mapping_sessions.get(session_id) if session: return session logger.info("Couldn't find session id %s", session_id) raise SynapseError(400, "unknown session") async def check_username_availability( self, localpart: str, session_id: str, ) -> bool: """Handle an "is username available" callback check Args: localpart: desired localpart session_id: the session id for the username picker Returns: True if the username is available Raises: SynapseError if the localpart is invalid or the session is unknown """ # make sure that there is a valid mapping session, to stop people dictionary- # scanning for accounts self.get_mapping_session(session_id) logger.info( "[session %s] Checking for availability of username %s", session_id, localpart, ) if contains_invalid_mxid_characters(localpart): raise SynapseError(400, "localpart is invalid: %s" % (localpart,)) user_id = UserID(localpart, self._server_name).to_string() user_infos = await self._store.get_users_by_id_case_insensitive(user_id) logger.info("[session %s] users: %s", session_id, user_infos) return not user_infos async def handle_submit_username_request( self, request: SynapseRequest, session_id: str, localpart: str, use_display_name: bool, emails_to_use: Iterable[str], ) -> None: """Handle a request to the username-picker 'submit' endpoint Will serve an HTTP response to the request. Args: request: HTTP request localpart: localpart requested by the user session_id: ID of the username mapping session, extracted from a cookie use_display_name: whether the user wants to use the suggested display name emails_to_use: emails that the user would like to use """ try: session = self.get_mapping_session(session_id) except SynapseError as e: self.render_error(request, "bad_session", e.msg, code=e.code) return # update the session with the user's choices session.chosen_localpart = localpart session.use_display_name = use_display_name emails_from_idp = set(session.emails) filtered_emails: Set[str] = set() # we iterate through the list rather than just building a set conjunction, so # that we can log attempts to use unknown addresses for email in emails_to_use: if email in emails_from_idp: filtered_emails.add(email) else: logger.warning( "[session %s] ignoring user request to use unknown email address %r", session_id, email, ) session.emails_to_use = filtered_emails respond_with_redirect( request, self._get_url_for_next_new_user_step(session=session) ) async def handle_terms_accepted( self, request: SynapseRequest, session_id: str, terms_version: str ) -> None: """Handle a request to the new-user 'consent' endpoint Will serve an HTTP response to the request. Args: request: HTTP request session_id: ID of the username mapping session, extracted from a cookie terms_version: the version of the terms which the user viewed and consented to """ logger.info( "[session %s] User consented to terms version %s", session_id, terms_version, ) try: session = self.get_mapping_session(session_id) except SynapseError as e: self.render_error(request, "bad_session", e.msg, code=e.code) return session.terms_accepted_version = terms_version respond_with_redirect( request, self._get_url_for_next_new_user_step(session=session) ) async def register_sso_user(self, request: Request, session_id: str) -> None: """Called once we have all the info we need to register a new user. Does so and serves an HTTP response Args: request: HTTP request session_id: ID of the username mapping session, extracted from a cookie """ try: session = self.get_mapping_session(session_id) except SynapseError as e: self.render_error(request, "bad_session", e.msg, code=e.code) return logger.info( "[session %s] Registering localpart %s", session_id, session.chosen_localpart, ) attributes = UserAttributes( localpart=session.chosen_localpart, emails=session.emails_to_use, ) if session.use_display_name: attributes.display_name = session.display_name # the following will raise a 400 error if the username has been taken in the # meantime. user_id = await self._register_mapped_user( attributes, session.auth_provider_id, session.remote_user_id, get_request_user_agent(request), request.getClientAddress().host, ) logger.info( "[session %s] Registered userid %s with attributes %s", session_id, user_id, attributes, ) # delete the mapping session and the cookie del self._username_mapping_sessions[session_id] # delete the cookie request.addCookie( USERNAME_MAPPING_SESSION_COOKIE_NAME, b"", expires=b"Thu, 01 Jan 1970 00:00:00 GMT", path=b"/", ) auth_result = {} if session.terms_accepted_version: # TODO: make this less awful. auth_result[LoginType.TERMS] = True await self._registration_handler.post_registration_actions( user_id, auth_result, access_token=None ) await self._auth_handler.complete_sso_login( user_id, session.auth_provider_id, request, session.client_redirect_url, session.extra_login_attributes, new_user=True, auth_provider_session_id=session.auth_provider_session_id, ) def _expire_old_sessions(self) -> None: to_expire = [] now = int(self._clock.time_msec()) for session_id, session in self._username_mapping_sessions.items(): if session.expiry_time_ms <= now: to_expire.append(session_id) for session_id in to_expire: logger.info("Expiring mapping session %s", session_id) del self._username_mapping_sessions[session_id] def check_required_attributes( self, request: SynapseRequest, attributes: Mapping[str, List[Any]], attribute_requirements: Iterable[SsoAttributeRequirement], ) -> bool: """ Confirm that the required attributes were present in the SSO response. If all requirements are met, this will return True. If any requirement is not met, then the request will be finalized by showing an error page to the user and False will be returned. Args: request: The request to (potentially) respond to. attributes: The attributes from the SSO IdP. attribute_requirements: The requirements that attributes must meet. Returns: True if all requirements are met, False if any attribute fails to meet the requirement. """ # Ensure that the attributes of the logged in user meet the required # attributes. for requirement in attribute_requirements: if not _check_attribute_requirement(attributes, requirement): self.render_error( request, "unauthorised", "You are not authorised to log in here." ) return False return True async def revoke_sessions_for_provider_session_id( self, auth_provider_id: str, auth_provider_session_id: str, expected_user_id: Optional[str] = None, ) -> None: """Revoke any devices and in-flight logins tied to a provider session. Can only be called from the main process. Args: auth_provider_id: A unique identifier for this SSO provider, e.g. "oidc" or "saml". auth_provider_session_id: The session ID from the provider to logout expected_user_id: The user we're expecting to logout. If set, it will ignore sessions belonging to other users and log an error. """ # It is expected that this is the main process. assert isinstance( self._device_handler, DeviceHandler ), "revoking SSO sessions can only be called on the main process" # Invalidate any running user-mapping sessions to_delete = [] for session_id, session in self._username_mapping_sessions.items(): if ( session.auth_provider_id == auth_provider_id and session.auth_provider_session_id == auth_provider_session_id ): to_delete.append(session_id) for session_id in to_delete: logger.info("Revoking mapping session %s", session_id) del self._username_mapping_sessions[session_id] # Invalidate any in-flight login tokens await self._store.invalidate_login_tokens_by_session_id( auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) # Fetch any device(s) in the store associated with the session ID. devices = await self._store.get_devices_by_auth_provider_session_id( auth_provider_id=auth_provider_id, auth_provider_session_id=auth_provider_session_id, ) # We have no guarantee that all the devices of that session are for the same # `user_id`. Hence, we have to iterate over the list of devices and log them out # one by one. for user_id, device_id in devices: # If the user_id associated with that device/session is not the one we got # out of the `sub` claim, skip that device and show log an error. if expected_user_id is not None and user_id != expected_user_id: logger.error( "Received a logout notification from SSO provider " f"{auth_provider_id!r} for the user {expected_user_id!r}, but with " f"a session ID ({auth_provider_session_id!r}) which belongs to " f"{user_id!r}. This may happen when the SSO provider user mapper " "uses something else than the standard attribute as mapping ID. " "For OIDC providers, set `backchannel_logout_ignore_sub` to `true` " "in the provider config if that is the case." ) continue logger.info( "Logging out %r (device %r) via SSO (%r) logout notification (session %r).", user_id, device_id, auth_provider_id, auth_provider_session_id, ) await self._device_handler.delete_devices(user_id, [device_id]) def get_username_mapping_session_cookie_from_request(request: IRequest) -> str: """Extract the session ID from the cookie Raises a SynapseError if the cookie isn't found """ session_id = request.getCookie(USERNAME_MAPPING_SESSION_COOKIE_NAME) if not session_id: raise SynapseError(code=400, msg="missing session_id") return session_id.decode("ascii", errors="replace") def _check_attribute_requirement( attributes: Mapping[str, List[Any]], req: SsoAttributeRequirement ) -> bool: """Check if SSO attributes meet the proper requirements. Args: attributes: A mapping of attributes to an iterable of one or more values. requirement: The configured requirement to check. Returns: True if the required attribute was found and had a proper value. """ if req.attribute not in attributes: logger.info("SSO attribute missing: %s", req.attribute) return False # If the requirement is None, the attribute existing is enough. if req.value is None: return True values = attributes[req.attribute] if req.value in values: return True logger.info( "SSO attribute %s did not match required value '%s' (was '%s')", req.attribute, req.value, values, ) return False synapse-1.100.0/synapse/handlers/state_deltas.py000066400000000000000000000046721455622526000216630ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from enum import Enum, auto from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class MatchChange(Enum): no_change = auto() now_true = auto() now_false = auto() class StateDeltasHandler: def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main async def _get_key_change( self, prev_event_id: Optional[str], event_id: Optional[str], key_name: str, public_value: str, ) -> MatchChange: """Given two events check if the `key_name` field in content changed from not matching `public_value` to doing so. For example, check if `history_visibility` (`key_name`) changed from `shared` to `world_readable` (`public_value`). """ prev_event = None event = None if prev_event_id: prev_event = await self.store.get_event(prev_event_id, allow_none=True) if event_id: event = await self.store.get_event(event_id, allow_none=True) if not event and not prev_event: logger.debug("Neither event exists: %r %r", prev_event_id, event_id) return MatchChange.no_change prev_value = None value = None if prev_event: prev_value = prev_event.content.get(key_name) if event: value = event.content.get(key_name) logger.debug("prev_value: %r -> value: %r", prev_value, value) if value == public_value and prev_value != public_value: return MatchChange.now_true elif value != public_value and prev_value == public_value: return MatchChange.now_false else: return MatchChange.no_change synapse-1.100.0/synapse/handlers/stats.py000066400000000000000000000315151455622526000203410ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 Sorunome # Copyright 2018-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from collections import Counter from typing import ( TYPE_CHECKING, Any, Counter as CounterType, Dict, Iterable, Optional, Tuple, ) from synapse.api.constants import EventContentFields, EventTypes, Membership from synapse.metrics import event_processing_positions from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.databases.main.state_deltas import StateDelta from synapse.types import JsonDict if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class StatsHandler: """Handles keeping the *_stats tables updated with a simple time-series of information about the users, rooms and media on the server, such that admins have some idea of who is consuming their resources. Heavily derived from UserDirectoryHandler """ def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.state = hs.get_state_handler() self.clock = hs.get_clock() self.notifier = hs.get_notifier() self.is_mine_id = hs.is_mine_id self.stats_enabled = hs.config.stats.stats_enabled # The current position in the current_state_delta stream self.pos: Optional[int] = None # Guard to ensure we only process deltas one at a time self._is_processing = False if self.stats_enabled and hs.config.worker.run_background_tasks: self.notifier.add_replication_callback(self.notify_new_event) # We kick this off so that we don't have to wait for a change before # we start populating stats self.clock.call_later(0, self.notify_new_event) def notify_new_event(self) -> None: """Called when there may be more deltas to process""" if not self.stats_enabled or self._is_processing: return self._is_processing = True async def process() -> None: try: await self._unsafe_process() finally: self._is_processing = False run_as_background_process("stats.notify_new_event", process) async def _unsafe_process(self) -> None: # If self.pos is None then means we haven't fetched it from DB if self.pos is None: self.pos = await self.store.get_stats_positions() room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos > room_max_stream_ordering: # apparently, we've processed more events than exist in the database! # this can happen if events are removed with history purge or similar. logger.warning( "Event stream ordering appears to have gone backwards (%i -> %i): " "rewinding stats processor", self.pos, room_max_stream_ordering, ) self.pos = room_max_stream_ordering # Loop round handling deltas until we're up to date while True: # Be sure to read the max stream_ordering *before* checking if there are any outstanding # deltas, since there is otherwise a chance that we could miss updates which arrive # after we check the deltas. room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos == room_max_stream_ordering: break logger.debug( "Processing room stats %s->%s", self.pos, room_max_stream_ordering ) ( max_pos, deltas, ) = await self._storage_controllers.state.get_current_state_deltas( self.pos, room_max_stream_ordering ) if deltas: logger.debug("Handling %d state deltas", len(deltas)) room_deltas, user_deltas = await self._handle_deltas(deltas) else: room_deltas = {} user_deltas = {} logger.debug("room_deltas: %s", room_deltas) logger.debug("user_deltas: %s", user_deltas) # Always call this so that we update the stats position. await self.store.bulk_update_stats_delta( self.clock.time_msec(), updates={"room": room_deltas, "user": user_deltas}, stream_id=max_pos, ) logger.debug("Handled room stats to %s -> %s", self.pos, max_pos) event_processing_positions.labels("stats").set(max_pos) self.pos = max_pos async def _handle_deltas( self, deltas: Iterable[StateDelta] ) -> Tuple[Dict[str, CounterType[str]], Dict[str, CounterType[str]]]: """Called with the state deltas to process Returns: Two dicts: the room deltas and the user deltas, mapping from room/user ID to changes in the various fields. """ room_to_stats_deltas: Dict[str, CounterType[str]] = {} user_to_stats_deltas: Dict[str, CounterType[str]] = {} room_to_state_updates: Dict[str, Dict[str, Any]] = {} for delta in deltas: logger.debug( "Handling: %r, %r %r, %s", delta.room_id, delta.event_type, delta.state_key, delta.event_id, ) token = await self.store.get_earliest_token_for_stats("room", delta.room_id) # If the earliest token to begin from is larger than our current # stream ID, skip processing this delta. if token is not None and token >= delta.stream_id: logger.debug( "Ignoring: %s as earlier than this room's initial ingestion event", delta.event_id, ) continue if delta.event_id is None and delta.prev_event_id is None: logger.error( "event ID is None and so is the previous event ID. stream_id: %s", delta.stream_id, ) continue event_content: JsonDict = {} if delta.event_id is not None: event = await self.store.get_event(delta.event_id, allow_none=True) if event: event_content = event.content or {} # All the values in this dict are deltas (RELATIVE changes) room_stats_delta = room_to_stats_deltas.setdefault(delta.room_id, Counter()) room_state = room_to_state_updates.setdefault(delta.room_id, {}) if delta.prev_event_id is None: # this state event doesn't overwrite another, # so it is a new effective/current state event room_stats_delta["current_state_events"] += 1 if delta.event_type == EventTypes.Member: # we could use StateDeltasHandler._get_key_change here but it's # a bit inefficient given we're not testing for a specific # result; might as well just grab the prev_membership and # membership strings and compare them. # We take None rather than leave as a previous membership # in the absence of a previous event because we do not want to # reduce the leave count when a new-to-the-room user joins. prev_membership = None if delta.prev_event_id is not None: prev_event = await self.store.get_event( delta.prev_event_id, allow_none=True ) if prev_event: prev_event_content = prev_event.content prev_membership = prev_event_content.get( "membership", Membership.LEAVE ) membership = event_content.get("membership", Membership.LEAVE) if prev_membership is None: logger.debug("No previous membership for this user.") elif membership == prev_membership: pass # noop elif prev_membership == Membership.JOIN: room_stats_delta["joined_members"] -= 1 elif prev_membership == Membership.INVITE: room_stats_delta["invited_members"] -= 1 elif prev_membership == Membership.LEAVE: room_stats_delta["left_members"] -= 1 elif prev_membership == Membership.BAN: room_stats_delta["banned_members"] -= 1 elif prev_membership == Membership.KNOCK: room_stats_delta["knocked_members"] -= 1 else: raise ValueError( "%r is not a valid prev_membership" % (prev_membership,) ) if membership == prev_membership: pass # noop elif membership == Membership.JOIN: room_stats_delta["joined_members"] += 1 elif membership == Membership.INVITE: room_stats_delta["invited_members"] += 1 elif membership == Membership.LEAVE: room_stats_delta["left_members"] += 1 elif membership == Membership.BAN: room_stats_delta["banned_members"] += 1 elif membership == Membership.KNOCK: room_stats_delta["knocked_members"] += 1 else: raise ValueError("%r is not a valid membership" % (membership,)) user_id = delta.state_key if self.is_mine_id(user_id): # this accounts for transitions like leave → ban and so on. has_changed_joinedness = (prev_membership == Membership.JOIN) != ( membership == Membership.JOIN ) if has_changed_joinedness: membership_delta = +1 if membership == Membership.JOIN else -1 user_to_stats_deltas.setdefault(user_id, Counter())[ "joined_rooms" ] += membership_delta room_stats_delta["local_users_in_room"] += membership_delta elif delta.event_type == EventTypes.Create: room_state["is_federatable"] = ( event_content.get(EventContentFields.FEDERATE, True) is True ) room_type = event_content.get(EventContentFields.ROOM_TYPE) if isinstance(room_type, str): room_state["room_type"] = room_type elif delta.event_type == EventTypes.JoinRules: room_state["join_rules"] = event_content.get("join_rule") elif delta.event_type == EventTypes.RoomHistoryVisibility: room_state["history_visibility"] = event_content.get( "history_visibility" ) elif delta.event_type == EventTypes.RoomEncryption: room_state["encryption"] = event_content.get("algorithm") elif delta.event_type == EventTypes.Name: room_state["name"] = event_content.get("name") elif delta.event_type == EventTypes.Topic: room_state["topic"] = event_content.get("topic") elif delta.event_type == EventTypes.RoomAvatar: room_state["avatar"] = event_content.get("url") elif delta.event_type == EventTypes.CanonicalAlias: room_state["canonical_alias"] = event_content.get("alias") elif delta.event_type == EventTypes.GuestAccess: room_state["guest_access"] = event_content.get( EventContentFields.GUEST_ACCESS ) for room_id, state in room_to_state_updates.items(): logger.debug("Updating room_stats_state for %s: %s", room_id, state) await self.store.update_room_state(room_id, state) return room_to_stats_deltas, user_to_stats_deltas synapse-1.100.0/synapse/handlers/sync.py000066400000000000000000003473021455622526000201630ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2015-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import itertools import logging from typing import ( TYPE_CHECKING, AbstractSet, Any, Dict, FrozenSet, List, Mapping, Optional, Sequence, Set, Tuple, ) import attr from prometheus_client import Counter from synapse.api.constants import ( AccountDataTypes, EventContentFields, EventTypes, Membership, ) from synapse.api.filtering import FilterCollection from synapse.api.presence import UserPresenceState from synapse.api.room_versions import KNOWN_ROOM_VERSIONS from synapse.events import EventBase from synapse.handlers.relations import BundledAggregations from synapse.logging import issue9533_logger from synapse.logging.context import current_context from synapse.logging.opentracing import ( SynapseTags, log_kv, set_tag, start_active_span, trace, ) from synapse.storage.databases.main.event_push_actions import RoomNotifCounts from synapse.storage.databases.main.roommember import extract_heroes_from_room_summary from synapse.storage.roommember import MemberSummary from synapse.types import ( DeviceListUpdates, JsonDict, JsonMapping, MultiWriterStreamToken, MutableStateMap, Requester, RoomStreamToken, StateMap, StrCollection, StreamKeyType, StreamToken, UserID, ) from synapse.types.state import StateFilter from synapse.util.async_helpers import concurrently_execute from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.caches.lrucache import LruCache from synapse.util.caches.response_cache import ResponseCache, ResponseCacheContext from synapse.util.metrics import Measure, measure_func from synapse.visibility import filter_events_for_client if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Counts the number of times we returned a non-empty sync. `type` is one of # "initial_sync", "full_state_sync" or "incremental_sync", `lazy_loaded` is # "true" or "false" depending on if the request asked for lazy loaded members or # not. non_empty_sync_counter = Counter( "synapse_handlers_sync_nonempty_total", "Count of non empty sync responses. type is initial_sync/full_state_sync" "/incremental_sync. lazy_loaded indicates if lazy loaded members were " "enabled for that request.", ["type", "lazy_loaded"], ) # Store the cache that tracks which lazy-loaded members have been sent to a given # client for no more than 30 minutes. LAZY_LOADED_MEMBERS_CACHE_MAX_AGE = 30 * 60 * 1000 # Remember the last 100 members we sent to a client for the purposes of # avoiding redundantly sending the same lazy-loaded members to the client LAZY_LOADED_MEMBERS_CACHE_MAX_SIZE = 100 SyncRequestKey = Tuple[Any, ...] @attr.s(slots=True, frozen=True, auto_attribs=True) class SyncConfig: user: UserID filter_collection: FilterCollection is_guest: bool request_key: SyncRequestKey device_id: Optional[str] @attr.s(slots=True, frozen=True, auto_attribs=True) class TimelineBatch: prev_batch: StreamToken events: Sequence[EventBase] limited: bool # A mapping of event ID to the bundled aggregations for the above events. # This is only calculated if limited is true. bundled_aggregations: Optional[Dict[str, BundledAggregations]] = None def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if room needs to be part of the sync result. """ return bool(self.events) # We can't freeze this class, because we need to update it after it's instantiated to # update its unread count. This is because we calculate the unread count for a room only # if there are updates for it, which we check after the instance has been created. # This should not be a big deal because we update the notification counts afterwards as # well anyway. @attr.s(slots=True, auto_attribs=True) class JoinedSyncResult: room_id: str timeline: TimelineBatch state: StateMap[EventBase] ephemeral: List[JsonDict] account_data: List[JsonDict] unread_notifications: JsonDict unread_thread_notifications: JsonDict summary: Optional[JsonDict] unread_count: int def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if room needs to be part of the sync result. """ return bool( self.timeline or self.state or self.ephemeral or self.account_data # nb the notification count does not, er, count: if there's nothing # else in the result, we don't need to send it. ) @attr.s(slots=True, frozen=True, auto_attribs=True) class ArchivedSyncResult: room_id: str timeline: TimelineBatch state: StateMap[EventBase] account_data: List[JsonDict] def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if room needs to be part of the sync result. """ return bool(self.timeline or self.state or self.account_data) @attr.s(slots=True, frozen=True, auto_attribs=True) class InvitedSyncResult: room_id: str invite: EventBase def __bool__(self) -> bool: """Invited rooms should always be reported to the client""" return True @attr.s(slots=True, frozen=True, auto_attribs=True) class KnockedSyncResult: room_id: str knock: EventBase def __bool__(self) -> bool: """Knocked rooms should always be reported to the client""" return True @attr.s(slots=True, auto_attribs=True) class _RoomChanges: """The set of room entries to include in the sync, plus the set of joined and left room IDs since last sync. """ room_entries: List["RoomSyncResultBuilder"] invited: List[InvitedSyncResult] knocked: List[KnockedSyncResult] newly_joined_rooms: List[str] newly_left_rooms: List[str] @attr.s(slots=True, frozen=True, auto_attribs=True) class SyncResult: """ Attributes: next_batch: Token for the next sync presence: List of presence events for the user. account_data: List of account_data events for the user. joined: JoinedSyncResult for each joined room. invited: InvitedSyncResult for each invited room. knocked: KnockedSyncResult for each knocked on room. archived: ArchivedSyncResult for each archived room. to_device: List of direct messages for the device. device_lists: List of user_ids whose devices have changed device_one_time_keys_count: Dict of algorithm to count for one time keys for this device device_unused_fallback_key_types: List of key types that have an unused fallback key """ next_batch: StreamToken presence: List[UserPresenceState] account_data: List[JsonDict] joined: List[JoinedSyncResult] invited: List[InvitedSyncResult] knocked: List[KnockedSyncResult] archived: List[ArchivedSyncResult] to_device: List[JsonDict] device_lists: DeviceListUpdates device_one_time_keys_count: JsonMapping device_unused_fallback_key_types: List[str] def __bool__(self) -> bool: """Make the result appear empty if there are no updates. This is used to tell if the notifier needs to wait for more events when polling for events. """ return bool( self.presence or self.joined or self.invited or self.knocked or self.archived or self.account_data or self.to_device or self.device_lists ) class SyncHandler: def __init__(self, hs: "HomeServer"): self.hs_config = hs.config self.store = hs.get_datastores().main self.notifier = hs.get_notifier() self.presence_handler = hs.get_presence_handler() self._relations_handler = hs.get_relations_handler() self._push_rules_handler = hs.get_push_rules_handler() self.event_sources = hs.get_event_sources() self.clock = hs.get_clock() self.state = hs.get_state_handler() self.auth_blocking = hs.get_auth_blocking() self._storage_controllers = hs.get_storage_controllers() self._state_storage_controller = self._storage_controllers.state self._device_handler = hs.get_device_handler() self._task_scheduler = hs.get_task_scheduler() self.should_calculate_push_rules = hs.config.push.enable_push # TODO: flush cache entries on subsequent sync request. # Once we get the next /sync request (ie, one with the same access token # that sets 'since' to 'next_batch'), we know that device won't need a # cached result any more, and we could flush the entry from the cache to save # memory. self.response_cache: ResponseCache[SyncRequestKey] = ResponseCache( hs.get_clock(), "sync", timeout_ms=hs.config.caches.sync_response_cache_duration, ) # ExpiringCache((User, Device)) -> LruCache(user_id => event_id) self.lazy_loaded_members_cache: ExpiringCache[ Tuple[str, Optional[str]], LruCache[str, str] ] = ExpiringCache( "lazy_loaded_members_cache", self.clock, max_len=0, expiry_ms=LAZY_LOADED_MEMBERS_CACHE_MAX_AGE, ) self.rooms_to_exclude_globally = hs.config.server.rooms_to_exclude_from_sync async def wait_for_sync_for_user( self, requester: Requester, sync_config: SyncConfig, since_token: Optional[StreamToken] = None, timeout: int = 0, full_state: bool = False, ) -> SyncResult: """Get the sync for a client if we have new data for it now. Otherwise wait for new data to arrive on the server. If the timeout expires, then return an empty sync result. """ # If the user is not part of the mau group, then check that limits have # not been exceeded (if not part of the group by this point, almost certain # auth_blocking will occur) user_id = sync_config.user.to_string() await self.auth_blocking.check_auth_blocking(requester=requester) res = await self.response_cache.wrap( sync_config.request_key, self._wait_for_sync_for_user, sync_config, since_token, timeout, full_state, cache_context=True, ) logger.debug("Returning sync response for %s", user_id) return res async def _wait_for_sync_for_user( self, sync_config: SyncConfig, since_token: Optional[StreamToken], timeout: int, full_state: bool, cache_context: ResponseCacheContext[SyncRequestKey], ) -> SyncResult: """The start of the machinery that produces a /sync response. See https://spec.matrix.org/v1.1/client-server-api/#syncing for full details. This method does high-level bookkeeping: - tracking the kind of sync in the logging context - deleting any to_device messages whose delivery has been acknowledged. - deciding if we should dispatch an instant or delayed response - marking the sync as being lazily loaded, if appropriate Computing the body of the response begins in the next method, `current_sync_for_user`. """ if since_token is None: sync_type = "initial_sync" elif full_state: sync_type = "full_state_sync" else: sync_type = "incremental_sync" context = current_context() if context: context.tag = sync_type # if we have a since token, delete any to-device messages before that token # (since we now know that the device has received them) if since_token is not None: since_stream_id = since_token.to_device_key deleted = await self.store.delete_messages_for_device( sync_config.user.to_string(), sync_config.device_id, since_stream_id, ) logger.debug( "Deleted %d to-device messages up to %d", deleted, since_stream_id ) if timeout == 0 or since_token is None or full_state: # we are going to return immediately, so don't bother calling # notifier.wait_for_events. result: SyncResult = await self.current_sync_for_user( sync_config, since_token, full_state=full_state ) else: # Otherwise, we wait for something to happen and report it to the user. async def current_sync_callback( before_token: StreamToken, after_token: StreamToken ) -> SyncResult: return await self.current_sync_for_user(sync_config, since_token) result = await self.notifier.wait_for_events( sync_config.user.to_string(), timeout, current_sync_callback, from_token=since_token, ) # if nothing has happened in any of the users' rooms since /sync was called, # the resultant next_batch will be the same as since_token (since the result # is generated when wait_for_events is first called, and not regenerated # when wait_for_events times out). # # If that happens, we mustn't cache it, so that when the client comes back # with the same cache token, we don't immediately return the same empty # result, causing a tightloop. (https://github.com/matrix-org/synapse/issues/8518) if result.next_batch == since_token: cache_context.should_cache = False if result: if sync_config.filter_collection.lazy_load_members(): lazy_loaded = "true" else: lazy_loaded = "false" non_empty_sync_counter.labels(sync_type, lazy_loaded).inc() return result async def current_sync_for_user( self, sync_config: SyncConfig, since_token: Optional[StreamToken] = None, full_state: bool = False, ) -> SyncResult: """Generates the response body of a sync result, represented as a SyncResult. This is a wrapper around `generate_sync_result` which starts an open tracing span to track the sync. See `generate_sync_result` for the next part of your indoctrination. """ with start_active_span("sync.current_sync_for_user"): log_kv({"since_token": since_token}) sync_result = await self.generate_sync_result( sync_config, since_token, full_state ) set_tag(SynapseTags.SYNC_RESULT, bool(sync_result)) return sync_result async def ephemeral_by_room( self, sync_result_builder: "SyncResultBuilder", now_token: StreamToken, since_token: Optional[StreamToken] = None, ) -> Tuple[StreamToken, Dict[str, List[JsonDict]]]: """Get the ephemeral events for each room the user is in Args: sync_result_builder now_token: Where the server is currently up to. since_token: Where the server was when the client last synced. Returns: A tuple of the now StreamToken, updated to reflect the which typing events are included, and a dict mapping from room_id to a list of typing events for that room. """ sync_config = sync_result_builder.sync_config with Measure(self.clock, "ephemeral_by_room"): typing_key = since_token.typing_key if since_token else 0 room_ids = sync_result_builder.joined_room_ids typing_source = self.event_sources.sources.typing typing, typing_key = await typing_source.get_new_events( user=sync_config.user, from_key=typing_key, limit=sync_config.filter_collection.ephemeral_limit(), room_ids=room_ids, is_guest=sync_config.is_guest, ) now_token = now_token.copy_and_replace(StreamKeyType.TYPING, typing_key) ephemeral_by_room: JsonDict = {} for event in typing: # we want to exclude the room_id from the event, but modifying the # result returned by the event source is poor form (it might cache # the object) room_id = event["room_id"] event_copy = {k: v for (k, v) in event.items() if k != "room_id"} ephemeral_by_room.setdefault(room_id, []).append(event_copy) receipt_key = ( since_token.receipt_key if since_token else MultiWriterStreamToken(stream=0) ) receipt_source = self.event_sources.sources.receipt receipts, receipt_key = await receipt_source.get_new_events( user=sync_config.user, from_key=receipt_key, limit=sync_config.filter_collection.ephemeral_limit(), room_ids=room_ids, is_guest=sync_config.is_guest, ) now_token = now_token.copy_and_replace(StreamKeyType.RECEIPT, receipt_key) for event in receipts: room_id = event["room_id"] # exclude room id, as above event_copy = {k: v for (k, v) in event.items() if k != "room_id"} ephemeral_by_room.setdefault(room_id, []).append(event_copy) return now_token, ephemeral_by_room async def _load_filtered_recents( self, room_id: str, sync_result_builder: "SyncResultBuilder", sync_config: SyncConfig, upto_token: StreamToken, since_token: Optional[StreamToken] = None, potential_recents: Optional[List[EventBase]] = None, newly_joined_room: bool = False, ) -> TimelineBatch: """Create a timeline batch for the room Args: room_id sync_result_builder sync_config upto_token: The token up to which we should fetch (more) events. If `potential_results` is non-empty then this is *start* of the the list. since_token potential_recents: If non-empty, the events between the since token and current token to send down to clients. newly_joined_room """ with Measure(self.clock, "load_filtered_recents"): timeline_limit = sync_config.filter_collection.timeline_limit() block_all_timeline = ( sync_config.filter_collection.blocks_all_room_timeline() ) if ( potential_recents is None or newly_joined_room or timeline_limit < len(potential_recents) ): limited = True else: limited = False # Check if there is a gap, if so we need to mark this as limited and # recalculate which events to send down. gap_token = await self.store.get_timeline_gaps( room_id, since_token.room_key if since_token else None, sync_result_builder.now_token.room_key, ) if gap_token: # There's a gap, so we need to ignore the passed in # `potential_recents`, and reset `upto_token` to match. potential_recents = None upto_token = sync_result_builder.now_token limited = True log_kv({"limited": limited}) if potential_recents: recents = await sync_config.filter_collection.filter_room_timeline( potential_recents ) log_kv({"recents_after_sync_filtering": len(recents)}) # We check if there are any state events, if there are then we pass # all current state events to the filter_events function. This is to # ensure that we always include current state in the timeline current_state_ids: FrozenSet[str] = frozenset() if any(e.is_state() for e in recents): # FIXME(faster_joins): We use the partial state here as # we don't want to block `/sync` on finishing a lazy join. # Which should be fine once # https://github.com/matrix-org/synapse/issues/12989 is resolved, # since we shouldn't reach here anymore? # Note that we use the current state as a whitelist for filtering # `recents`, so partial state is only a problem when a membership # event turns up in `recents` but has not made it into the current # state. current_state_ids = ( await self.store.check_if_events_in_current_state( {e.event_id for e in recents if e.is_state()} ) ) recents = await filter_events_for_client( self._storage_controllers, sync_config.user.to_string(), recents, always_include_ids=current_state_ids, ) log_kv({"recents_after_visibility_filtering": len(recents)}) else: recents = [] if not limited or block_all_timeline: prev_batch_token = upto_token if recents: assert recents[0].internal_metadata.stream_ordering room_key = RoomStreamToken( stream=recents[0].internal_metadata.stream_ordering - 1 ) prev_batch_token = upto_token.copy_and_replace( StreamKeyType.ROOM, room_key ) return TimelineBatch( events=recents, prev_batch=prev_batch_token, limited=False ) filtering_factor = 2 load_limit = max(timeline_limit * filtering_factor, 10) max_repeat = 5 # Only try a few times per room, otherwise room_key = upto_token.room_key end_key = room_key since_key = None if since_token and gap_token: # If there is a gap then we need to only include events after # it. since_key = gap_token elif since_token and not newly_joined_room: since_key = since_token.room_key while limited and len(recents) < timeline_limit and max_repeat: # If we have a since_key then we are trying to get any events # that have happened since `since_key` up to `end_key`, so we # can just use `get_room_events_stream_for_room`. # Otherwise, we want to return the last N events in the room # in topological ordering. if since_key: events, end_key = await self.store.get_room_events_stream_for_room( room_id, limit=load_limit + 1, from_key=since_key, to_key=end_key, ) else: events, end_key = await self.store.get_recent_events_for_room( room_id, limit=load_limit + 1, end_token=end_key ) log_kv({"loaded_recents": len(events)}) loaded_recents = ( await sync_config.filter_collection.filter_room_timeline(events) ) log_kv({"loaded_recents_after_sync_filtering": len(loaded_recents)}) # We check if there are any state events, if there are then we pass # all current state events to the filter_events function. This is to # ensure that we always include current state in the timeline current_state_ids = frozenset() if any(e.is_state() for e in loaded_recents): # FIXME(faster_joins): We use the partial state here as # we don't want to block `/sync` on finishing a lazy join. # Which should be fine once # https://github.com/matrix-org/synapse/issues/12989 is resolved, # since we shouldn't reach here anymore? # Note that we use the current state as a whitelist for filtering # `loaded_recents`, so partial state is only a problem when a # membership event turns up in `loaded_recents` but has not made it # into the current state. current_state_ids = ( await self.store.check_if_events_in_current_state( {e.event_id for e in loaded_recents if e.is_state()} ) ) loaded_recents = await filter_events_for_client( self._storage_controllers, sync_config.user.to_string(), loaded_recents, always_include_ids=current_state_ids, ) log_kv({"loaded_recents_after_client_filtering": len(loaded_recents)}) loaded_recents.extend(recents) recents = loaded_recents if len(events) <= load_limit: limited = False break max_repeat -= 1 if len(recents) > timeline_limit: limited = True recents = recents[-timeline_limit:] assert recents[0].internal_metadata.stream_ordering room_key = RoomStreamToken( stream=recents[0].internal_metadata.stream_ordering - 1 ) prev_batch_token = upto_token.copy_and_replace(StreamKeyType.ROOM, room_key) # Don't bother to bundle aggregations if the timeline is unlimited, # as clients will have all the necessary information. bundled_aggregations = None if limited or newly_joined_room: bundled_aggregations = ( await self._relations_handler.get_bundled_aggregations( recents, sync_config.user.to_string() ) ) return TimelineBatch( events=recents, prev_batch=prev_batch_token, # Also mark as limited if this is a new room or there has been a gap # (to force client to paginate the gap). limited=limited or newly_joined_room or gap_token is not None, bundled_aggregations=bundled_aggregations, ) async def get_state_after_event( self, event_id: str, state_filter: Optional[StateFilter] = None, await_full_state: bool = True, ) -> StateMap[str]: """ Get the room state after the given event Args: event_id: event of interest state_filter: The state filter used to fetch state from the database. await_full_state: if `True`, will block if we do not yet have complete state at the event and `state_filter` is not satisfied by partial state. Defaults to `True`. """ state_ids = await self._state_storage_controller.get_state_ids_for_event( event_id, state_filter=state_filter or StateFilter.all(), await_full_state=await_full_state, ) # using get_metadata_for_events here (instead of get_event) sidesteps an issue # with redactions: if `event_id` is a redaction event, and we don't have the # original (possibly because it got purged), get_event will refuse to return # the redaction event, which isn't terribly helpful here. # # (To be fair, in that case we could assume it's *not* a state event, and # therefore we don't need to worry about it. But still, it seems cleaner just # to pull the metadata.) m = (await self.store.get_metadata_for_events([event_id]))[event_id] if m.state_key is not None and m.rejection_reason is None: state_ids = dict(state_ids) state_ids[(m.event_type, m.state_key)] = event_id return state_ids async def get_state_at( self, room_id: str, stream_position: StreamToken, state_filter: Optional[StateFilter] = None, await_full_state: bool = True, ) -> StateMap[str]: """Get the room state at a particular stream position Args: room_id: room for which to get state stream_position: point at which to get state state_filter: The state filter used to fetch state from the database. await_full_state: if `True`, will block if we do not yet have complete state at the last event in the room before `stream_position` and `state_filter` is not satisfied by partial state. Defaults to `True`. """ # FIXME: This gets the state at the latest event before the stream ordering, # which might not be the same as the "current state" of the room at the time # of the stream token if there were multiple forward extremities at the time. last_event_id = await self.store.get_last_event_in_room_before_stream_ordering( room_id, end_token=stream_position.room_key, ) if last_event_id: state = await self.get_state_after_event( last_event_id, state_filter=state_filter or StateFilter.all(), await_full_state=await_full_state, ) else: # no events in this room - so presumably no state state = {} # (erikj) This should be rarely hit, but we've had some reports that # we get more state down gappy syncs than we should, so let's add # some logging. logger.info( "Failed to find any events in room %s at %s", room_id, stream_position.room_key, ) return state async def compute_summary( self, room_id: str, sync_config: SyncConfig, batch: TimelineBatch, state: MutableStateMap[EventBase], now_token: StreamToken, ) -> Optional[JsonDict]: """Works out a room summary block for this room, summarising the number of joined members in the room, and providing the 'hero' members if the room has no name so clients can consistently name rooms. Also adds state events to 'state' if needed to describe the heroes. Args room_id sync_config batch: The timeline batch for the room that will be sent to the user. state: State as returned by compute_state_delta now_token: Token of the end of the current batch. """ # FIXME: we could/should get this from room_stats when matthew/stats lands # FIXME: this promulgates https://github.com/matrix-org/synapse/issues/3305 last_events, _ = await self.store.get_recent_event_ids_for_room( room_id, end_token=now_token.room_key, limit=1 ) if not last_events: return None last_event = last_events[-1] state_ids = await self._state_storage_controller.get_state_ids_for_event( last_event.event_id, state_filter=StateFilter.from_types( [(EventTypes.Name, ""), (EventTypes.CanonicalAlias, "")] ), ) # this is heavily cached, thus: fast. details = await self.store.get_room_summary(room_id) name_id = state_ids.get((EventTypes.Name, "")) canonical_alias_id = state_ids.get((EventTypes.CanonicalAlias, "")) summary: JsonDict = {} empty_ms = MemberSummary([], 0) # TODO: only send these when they change. summary["m.joined_member_count"] = details.get(Membership.JOIN, empty_ms).count summary["m.invited_member_count"] = details.get( Membership.INVITE, empty_ms ).count # if the room has a name or canonical_alias set, we can skip # calculating heroes. Empty strings are falsey, so we check # for the "name" value and default to an empty string. if name_id: name = await self.store.get_event(name_id, allow_none=True) if name and name.content.get("name"): return summary if canonical_alias_id: canonical_alias = await self.store.get_event( canonical_alias_id, allow_none=True ) if canonical_alias and canonical_alias.content.get("alias"): return summary # FIXME: only build up a member_ids list for our heroes member_ids = {} for membership in ( Membership.JOIN, Membership.INVITE, Membership.LEAVE, Membership.BAN, ): for user_id, event_id in details.get(membership, empty_ms).members: member_ids[user_id] = event_id me = sync_config.user.to_string() summary["m.heroes"] = extract_heroes_from_room_summary(details, me) if not sync_config.filter_collection.lazy_load_members(): return summary # ensure we send membership events for heroes if needed cache_key = (sync_config.user.to_string(), sync_config.device_id) cache = self.get_lazy_loaded_members_cache(cache_key) # track which members the client should already know about via LL: # Ones which are already in state... existing_members = { user_id for (typ, user_id) in state.keys() if typ == EventTypes.Member } # ...or ones which are in the timeline... for ev in batch.events: if ev.type == EventTypes.Member: existing_members.add(ev.state_key) # ...and then ensure any missing ones get included in state. missing_hero_event_ids = [ member_ids[hero_id] for hero_id in summary["m.heroes"] if ( cache.get(hero_id) != member_ids[hero_id] and hero_id not in existing_members ) ] missing_hero_state = await self.store.get_events(missing_hero_event_ids) for s in missing_hero_state.values(): cache.set(s.state_key, s.event_id) state[(EventTypes.Member, s.state_key)] = s return summary def get_lazy_loaded_members_cache( self, cache_key: Tuple[str, Optional[str]] ) -> LruCache[str, str]: cache: Optional[LruCache[str, str]] = self.lazy_loaded_members_cache.get( cache_key ) if cache is None: logger.debug("creating LruCache for %r", cache_key) cache = LruCache(LAZY_LOADED_MEMBERS_CACHE_MAX_SIZE) self.lazy_loaded_members_cache[cache_key] = cache else: logger.debug("found LruCache for %r", cache_key) return cache async def compute_state_delta( self, room_id: str, batch: TimelineBatch, sync_config: SyncConfig, since_token: Optional[StreamToken], now_token: StreamToken, full_state: bool, ) -> MutableStateMap[EventBase]: """Works out the difference in state between the end of the previous sync and the start of the timeline. Args: room_id: batch: The timeline batch for the room that will be sent to the user. sync_config: since_token: Token of the end of the previous batch. May be `None`. now_token: Token of the end of the current batch. full_state: Whether to force returning the full state. `lazy_load_members` still applies when `full_state` is `True`. Returns: The state to return in the sync response for the room. Clients will overlay this onto the state at the end of the previous sync to arrive at the state at the start of the timeline. Clients will then overlay state events in the timeline to arrive at the state at the end of the timeline, in preparation for the next sync. """ # TODO(mjark) Check if the state events were received by the server # after the previous sync, since we need to include those state # updates even if they occurred logically before the previous event. # TODO(mjark) Check for new redactions in the state events. with Measure(self.clock, "compute_state_delta"): # The memberships needed for events in the timeline. # Only calculated when `lazy_load_members` is on. members_to_fetch: Optional[Set[str]] = None # A dictionary mapping user IDs to the first event in the timeline sent by # them. Only calculated when `lazy_load_members` is on. first_event_by_sender_map: Optional[Dict[str, EventBase]] = None # The contribution to the room state from state events in the timeline. # Only contains the last event for any given state key. timeline_state: StateMap[str] lazy_load_members = sync_config.filter_collection.lazy_load_members() include_redundant_members = ( sync_config.filter_collection.include_redundant_members() ) if lazy_load_members: # We only request state for the members needed to display the # timeline: timeline_state = {} # Membership events to fetch that can be found in the room state, or in # the case of partial state rooms, the auth events of timeline events. members_to_fetch = set() first_event_by_sender_map = {} for event in batch.events: # Build the map from user IDs to the first timeline event they sent. if event.sender not in first_event_by_sender_map: first_event_by_sender_map[event.sender] = event # We need the event's sender, unless their membership was in a # previous timeline event. if (EventTypes.Member, event.sender) not in timeline_state: members_to_fetch.add(event.sender) # FIXME: we also care about invite targets etc. if event.is_state(): timeline_state[(event.type, event.state_key)] = event.event_id if full_state: # always make sure we LL ourselves so we know we're in the room # (if we are) to fix https://github.com/vector-im/riot-web/issues/7209 # We only need apply this on full state syncs given we disabled # LL for incr syncs in https://github.com/matrix-org/synapse/pull/3840. # We don't insert ourselves into `members_to_fetch`, because in some # rare cases (an empty event batch with a now_token after the user's # leave in a partial state room which another local user has # joined), the room state will be missing our membership and there # is no guarantee that our membership will be in the auth events of # timeline events when the room is partial stated. state_filter = StateFilter.from_lazy_load_member_list( members_to_fetch.union((sync_config.user.to_string(),)) ) else: state_filter = StateFilter.from_lazy_load_member_list( members_to_fetch ) # We are happy to use partial state to compute the `/sync` response. # Since partial state may not include the lazy-loaded memberships we # require, we fix up the state response afterwards with memberships from # auth events. await_full_state = False else: timeline_state = { (event.type, event.state_key): event.event_id for event in batch.events if event.is_state() } state_filter = StateFilter.all() await_full_state = True # Now calculate the state to return in the sync response for the room. # This is more or less the change in state between the end of the previous # sync's timeline and the start of the current sync's timeline. # See the docstring above for details. state_ids: StateMap[str] # We need to know whether the state we fetch may be partial, so check # whether the room is partial stated *before* fetching it. is_partial_state_room = await self.store.is_partial_state_room(room_id) if full_state: if batch: state_at_timeline_end = ( await self._state_storage_controller.get_state_ids_for_event( batch.events[-1].event_id, state_filter=state_filter, await_full_state=await_full_state, ) ) state_at_timeline_start = ( await self._state_storage_controller.get_state_ids_for_event( batch.events[0].event_id, state_filter=state_filter, await_full_state=await_full_state, ) ) else: state_at_timeline_end = await self.get_state_at( room_id, stream_position=now_token, state_filter=state_filter, await_full_state=await_full_state, ) state_at_timeline_start = state_at_timeline_end state_ids = _calculate_state( timeline_contains=timeline_state, timeline_start=state_at_timeline_start, timeline_end=state_at_timeline_end, previous_timeline_end={}, lazy_load_members=lazy_load_members, ) elif batch.limited: if batch: state_at_timeline_start = ( await self._state_storage_controller.get_state_ids_for_event( batch.events[0].event_id, state_filter=state_filter, await_full_state=await_full_state, ) ) else: # We can get here if the user has ignored the senders of all # the recent events. state_at_timeline_start = await self.get_state_at( room_id, stream_position=now_token, state_filter=state_filter, await_full_state=await_full_state, ) # for now, we disable LL for gappy syncs - see # https://github.com/vector-im/riot-web/issues/7211#issuecomment-419976346 # N.B. this slows down incr syncs as we are now processing way # more state in the server than if we were LLing. # # We still have to filter timeline_start to LL entries (above) in order # for _calculate_state's LL logic to work, as we have to include LL # members for timeline senders in case they weren't loaded in the initial # sync. We do this by (counterintuitively) by filtering timeline_start # members to just be ones which were timeline senders, which then ensures # all of the rest get included in the state block (if we need to know # about them). state_filter = StateFilter.all() # If this is an initial sync then full_state should be set, and # that case is handled above. We assert here to ensure that this # is indeed the case. assert since_token is not None state_at_previous_sync = await self.get_state_at( room_id, stream_position=since_token, state_filter=state_filter, await_full_state=await_full_state, ) if batch: state_at_timeline_end = ( await self._state_storage_controller.get_state_ids_for_event( batch.events[-1].event_id, state_filter=state_filter, await_full_state=await_full_state, ) ) else: # We can get here if the user has ignored the senders of all # the recent events. state_at_timeline_end = await self.get_state_at( room_id, stream_position=now_token, state_filter=state_filter, await_full_state=await_full_state, ) state_ids = _calculate_state( timeline_contains=timeline_state, timeline_start=state_at_timeline_start, timeline_end=state_at_timeline_end, previous_timeline_end=state_at_previous_sync, # we have to include LL members in case LL initial sync missed them lazy_load_members=lazy_load_members, ) else: state_ids = {} if lazy_load_members: if members_to_fetch and batch.events: # We're returning an incremental sync, with no # "gap" since the previous sync, so normally there would be # no state to return. # But we're lazy-loading, so the client might need some more # member events to understand the events in this timeline. # So we fish out all the member events corresponding to the # timeline here, and then dedupe any redundant ones below. state_ids = await self._state_storage_controller.get_state_ids_for_event( batch.events[0].event_id, # we only want members! state_filter=StateFilter.from_types( (EventTypes.Member, member) for member in members_to_fetch ), await_full_state=False, ) # If we only have partial state for the room, `state_ids` may be missing the # memberships we wanted. We attempt to find some by digging through the auth # events of timeline events. if lazy_load_members and is_partial_state_room: assert members_to_fetch is not None assert first_event_by_sender_map is not None additional_state_ids = ( await self._find_missing_partial_state_memberships( room_id, members_to_fetch, first_event_by_sender_map, state_ids ) ) state_ids = {**state_ids, **additional_state_ids} # At this point, if `lazy_load_members` is enabled, `state_ids` includes # the memberships of all event senders in the timeline. This is because we # may not have sent the memberships in a previous sync. # When `include_redundant_members` is on, we send all the lazy-loaded # memberships of event senders. Otherwise we make an effort to limit the set # of memberships we send to those that we have not already sent to this client. if lazy_load_members and not include_redundant_members: cache_key = (sync_config.user.to_string(), sync_config.device_id) cache = self.get_lazy_loaded_members_cache(cache_key) # if it's a new sync sequence, then assume the client has had # amnesia and doesn't want any recent lazy-loaded members # de-duplicated. if since_token is None: logger.debug("clearing LruCache for %r", cache_key) cache.clear() else: # only send members which aren't in our LruCache (either # because they're new to this client or have been pushed out # of the cache) logger.debug("filtering state from %r...", state_ids) state_ids = { t: event_id for t, event_id in state_ids.items() if cache.get(t[1]) != event_id } logger.debug("...to %r", state_ids) # add any member IDs we are about to send into our LruCache for t, event_id in itertools.chain( state_ids.items(), timeline_state.items() ): if t[0] == EventTypes.Member: cache.set(t[1], event_id) state: Dict[str, EventBase] = {} if state_ids: state = await self.store.get_events(list(state_ids.values())) return { (e.type, e.state_key): e for e in await sync_config.filter_collection.filter_room_state( list(state.values()) ) if e.type != EventTypes.Aliases # until MSC2261 or alternative solution } async def _find_missing_partial_state_memberships( self, room_id: str, members_to_fetch: StrCollection, events_with_membership_auth: Mapping[str, EventBase], found_state_ids: StateMap[str], ) -> StateMap[str]: """Finds missing memberships from a set of auth events and returns them as a state map. Args: room_id: The partial state room to find the remaining memberships for. members_to_fetch: The memberships to find. events_with_membership_auth: A mapping from user IDs to events whose auth events would contain their prior membership, if one exists. Note that join events will not cite a prior membership if a user has never been in a room before. found_state_ids: A dict from (type, state_key) -> state_event_id, containing memberships that have been previously found. Entries in `members_to_fetch` that have a membership in `found_state_ids` are ignored. Returns: A dict from ("m.room.member", state_key) -> state_event_id, containing the memberships missing from `found_state_ids`. When `events_with_membership_auth` contains a join event for a given user which does not cite a prior membership, no membership is returned for that user. Raises: KeyError: if `events_with_membership_auth` does not have an entry for a missing membership. Memberships in `found_state_ids` do not need an entry in `events_with_membership_auth`. """ additional_state_ids: MutableStateMap[str] = {} # Tracks the missing members for logging purposes. missing_members = set() # Identify memberships missing from `found_state_ids` and pick out the auth # events in which to look for them. auth_event_ids: Set[str] = set() for member in members_to_fetch: if (EventTypes.Member, member) in found_state_ids: continue event_with_membership_auth = events_with_membership_auth[member] is_create = ( event_with_membership_auth.is_state() and event_with_membership_auth.type == EventTypes.Create ) is_join = ( event_with_membership_auth.is_state() and event_with_membership_auth.type == EventTypes.Member and event_with_membership_auth.state_key == member and event_with_membership_auth.content.get("membership") == Membership.JOIN ) if not is_create and not is_join: # The event must include the desired membership as an auth event, unless # it's the `m.room.create` event for a room or the first join event for # a given user. missing_members.add(member) auth_event_ids.update(event_with_membership_auth.auth_event_ids()) auth_events = await self.store.get_events(auth_event_ids) # Run through the missing memberships once more, picking out the memberships # from the pile of auth events we have just fetched. for member in members_to_fetch: if (EventTypes.Member, member) in found_state_ids: continue event_with_membership_auth = events_with_membership_auth[member] # Dig through the auth events to find the desired membership. for auth_event_id in event_with_membership_auth.auth_event_ids(): # We only store events once we have all their auth events, # so the auth event must be in the pile we have just # fetched. auth_event = auth_events[auth_event_id] if ( auth_event.type == EventTypes.Member and auth_event.state_key == member ): missing_members.discard(member) additional_state_ids[ (EventTypes.Member, member) ] = auth_event.event_id break if missing_members: # There really shouldn't be any missing memberships now. Either: # * we couldn't find an auth event, which shouldn't happen because we do # not persist events with persisting their auth events first, or # * the set of auth events did not contain a membership we wanted, which # means our caller didn't compute the events in `members_to_fetch` # correctly, or we somehow accepted an event whose auth events were # dodgy. logger.error( "Failed to find memberships for %s in partial state room " "%s in the auth events of %s.", missing_members, room_id, [ events_with_membership_auth[member].event_id for member in missing_members ], ) return additional_state_ids async def unread_notifs_for_room_id( self, room_id: str, sync_config: SyncConfig ) -> RoomNotifCounts: if not self.should_calculate_push_rules: # If push rules have been universally disabled then we know we won't # have any unread counts in the DB, so we may as well skip asking # the DB. return RoomNotifCounts.empty() with Measure(self.clock, "unread_notifs_for_room_id"): return await self.store.get_unread_event_push_actions_by_room_for_user( room_id, sync_config.user.to_string(), ) async def generate_sync_result( self, sync_config: SyncConfig, since_token: Optional[StreamToken] = None, full_state: bool = False, ) -> SyncResult: """Generates the response body of a sync result. This is represented by a `SyncResult` struct, which is built from small pieces using a `SyncResultBuilder`. See also https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3sync the `sync_result_builder` is passed as a mutable ("inout") parameter to various helper functions. These retrieve and process the data which forms the sync body, often writing to the `sync_result_builder` to store their output. At the end, we transfer data from the `sync_result_builder` to a new `SyncResult` instance to signify that the sync calculation is complete. """ user_id = sync_config.user.to_string() app_service = self.store.get_app_service_by_user_id(user_id) if app_service: # We no longer support AS users using /sync directly. # See https://github.com/matrix-org/matrix-doc/issues/1144 raise NotImplementedError() # Note: we get the users room list *before* we get the current token, this # avoids checking back in history if rooms are joined after the token is fetched. token_before_rooms = self.event_sources.get_current_token() mutable_joined_room_ids = set(await self.store.get_rooms_for_user(user_id)) # NB: The now_token gets changed by some of the generate_sync_* methods, # this is due to some of the underlying streams not supporting the ability # to query up to a given point. # Always use the `now_token` in `SyncResultBuilder` now_token = self.event_sources.get_current_token() log_kv({"now_token": now_token}) # Since we fetched the users room list before the token, there's a small window # during which membership events may have been persisted, so we fetch these now # and modify the joined room list for any changes between the get_rooms_for_user # call and the get_current_token call. membership_change_events = [] if since_token: membership_change_events = await self.store.get_membership_changes_for_user( user_id, since_token.room_key, now_token.room_key, self.rooms_to_exclude_globally, ) mem_last_change_by_room_id: Dict[str, EventBase] = {} for event in membership_change_events: mem_last_change_by_room_id[event.room_id] = event # For the latest membership event in each room found, add/remove the room ID # from the joined room list accordingly. In this case we only care if the # latest change is JOIN. for room_id, event in mem_last_change_by_room_id.items(): assert event.internal_metadata.stream_ordering if ( event.internal_metadata.stream_ordering < token_before_rooms.room_key.stream ): continue logger.info( "User membership change between getting rooms and current token: %s %s %s", user_id, event.membership, room_id, ) # User joined a room - we have to then check the room state to ensure we # respect any bans if there's a race between the join and ban events. if event.membership == Membership.JOIN: user_ids_in_room = await self.store.get_users_in_room(room_id) if user_id in user_ids_in_room: mutable_joined_room_ids.add(room_id) # The user left the room, or left and was re-invited but not joined yet else: mutable_joined_room_ids.discard(room_id) # Tweak the set of rooms to return to the client for eager (non-lazy) syncs. mutable_rooms_to_exclude = set(self.rooms_to_exclude_globally) if not sync_config.filter_collection.lazy_load_members(): # Non-lazy syncs should never include partially stated rooms. # Exclude all partially stated rooms from this sync. results = await self.store.is_partial_state_room_batched( mutable_joined_room_ids ) mutable_rooms_to_exclude.update( room_id for room_id, is_partial_state in results.items() if is_partial_state ) membership_change_events = [ event for event in membership_change_events if not results.get(event.room_id, False) ] # Incremental eager syncs should additionally include rooms that # - we are joined to # - are full-stated # - became fully-stated at some point during the sync period # (These rooms will have been omitted during a previous eager sync.) forced_newly_joined_room_ids: Set[str] = set() if since_token and not sync_config.filter_collection.lazy_load_members(): un_partial_stated_rooms = ( await self.store.get_un_partial_stated_rooms_between( since_token.un_partial_stated_rooms_key, now_token.un_partial_stated_rooms_key, mutable_joined_room_ids, ) ) results = await self.store.is_partial_state_room_batched( un_partial_stated_rooms ) forced_newly_joined_room_ids.update( room_id for room_id, is_partial_state in results.items() if not is_partial_state ) # Now we have our list of joined room IDs, exclude as configured and freeze joined_room_ids = frozenset( room_id for room_id in mutable_joined_room_ids if room_id not in mutable_rooms_to_exclude ) logger.debug( "Calculating sync response for %r between %s and %s", sync_config.user, since_token, now_token, ) sync_result_builder = SyncResultBuilder( sync_config, full_state, since_token=since_token, now_token=now_token, joined_room_ids=joined_room_ids, excluded_room_ids=frozenset(mutable_rooms_to_exclude), forced_newly_joined_room_ids=frozenset(forced_newly_joined_room_ids), membership_change_events=membership_change_events, ) logger.debug("Fetching account data") # Global account data is included if it is not filtered out. if not sync_config.filter_collection.blocks_all_global_account_data(): await self._generate_sync_entry_for_account_data(sync_result_builder) # Presence data is included if the server has it enabled and not filtered out. include_presence_data = bool( self.hs_config.server.presence_enabled and not sync_config.filter_collection.blocks_all_presence() ) # Device list updates are sent if a since token is provided. include_device_list_updates = bool(since_token and since_token.device_list_key) # If we do not care about the rooms or things which depend on the room # data (namely presence and device list updates), then we can skip # this process completely. device_lists = DeviceListUpdates() if ( not sync_result_builder.sync_config.filter_collection.blocks_all_rooms() or include_presence_data or include_device_list_updates ): logger.debug("Fetching room data") # Note that _generate_sync_entry_for_rooms sets sync_result_builder.joined, which # is used in calculate_user_changes below. ( newly_joined_rooms, newly_left_rooms, ) = await self._generate_sync_entry_for_rooms(sync_result_builder) # Work out which users have joined or left rooms we're in. We use this # to build the presence and device_list parts of the sync response in # `_generate_sync_entry_for_presence` and # `_generate_sync_entry_for_device_list` respectively. if include_presence_data or include_device_list_updates: # This uses the sync_result_builder.joined which is set in # `_generate_sync_entry_for_rooms`, if that didn't find any joined # rooms for some reason it is a no-op. ( newly_joined_or_invited_or_knocked_users, newly_left_users, ) = sync_result_builder.calculate_user_changes() if include_presence_data: logger.debug("Fetching presence data") await self._generate_sync_entry_for_presence( sync_result_builder, newly_joined_rooms, newly_joined_or_invited_or_knocked_users, ) if include_device_list_updates: device_lists = await self._generate_sync_entry_for_device_list( sync_result_builder, newly_joined_rooms=newly_joined_rooms, newly_joined_or_invited_or_knocked_users=newly_joined_or_invited_or_knocked_users, newly_left_rooms=newly_left_rooms, newly_left_users=newly_left_users, ) logger.debug("Fetching to-device data") await self._generate_sync_entry_for_to_device(sync_result_builder) logger.debug("Fetching OTK data") device_id = sync_config.device_id one_time_keys_count: JsonMapping = {} unused_fallback_key_types: List[str] = [] if device_id: # TODO: We should have a way to let clients differentiate between the states of: # * no change in OTK count since the provided since token # * the server has zero OTKs left for this device # Spec issue: https://github.com/matrix-org/matrix-doc/issues/3298 one_time_keys_count = await self.store.count_e2e_one_time_keys( user_id, device_id ) unused_fallback_key_types = list( await self.store.get_e2e_unused_fallback_key_types(user_id, device_id) ) num_events = 0 # debug for https://github.com/matrix-org/synapse/issues/9424 for joined_room in sync_result_builder.joined: num_events += len(joined_room.timeline.events) log_kv( { "joined_rooms_in_result": len(sync_result_builder.joined), "events_in_result": num_events, } ) logger.debug("Sync response calculation complete") return SyncResult( presence=sync_result_builder.presence, account_data=sync_result_builder.account_data, joined=sync_result_builder.joined, invited=sync_result_builder.invited, knocked=sync_result_builder.knocked, archived=sync_result_builder.archived, to_device=sync_result_builder.to_device, device_lists=device_lists, device_one_time_keys_count=one_time_keys_count, device_unused_fallback_key_types=unused_fallback_key_types, next_batch=sync_result_builder.now_token, ) @measure_func("_generate_sync_entry_for_device_list") async def _generate_sync_entry_for_device_list( self, sync_result_builder: "SyncResultBuilder", newly_joined_rooms: AbstractSet[str], newly_joined_or_invited_or_knocked_users: AbstractSet[str], newly_left_rooms: AbstractSet[str], newly_left_users: AbstractSet[str], ) -> DeviceListUpdates: """Generate the DeviceListUpdates section of sync Args: sync_result_builder newly_joined_rooms: Set of rooms user has joined since previous sync newly_joined_or_invited_or_knocked_users: Set of users that have joined, been invited to a room or are knocking on a room since previous sync. newly_left_rooms: Set of rooms user has left since previous sync newly_left_users: Set of users that have left a room we're in since previous sync """ user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token assert since_token is not None # Take a copy since these fields will be mutated later. newly_joined_or_invited_or_knocked_users = set( newly_joined_or_invited_or_knocked_users ) newly_left_users = set(newly_left_users) # We want to figure out what user IDs the client should refetch # device keys for, and which users we aren't going to track changes # for anymore. # # For the first step we check: # a. if any users we share a room with have updated their devices, # and # b. we also check if we've joined any new rooms, or if a user has # joined a room we're in. # # For the second step we just find any users we no longer share a # room with by looking at all users that have left a room plus users # that were in a room we've left. users_that_have_changed = set() joined_rooms = sync_result_builder.joined_room_ids # Step 1a, check for changes in devices of users we share a room # with # # We do this in two different ways depending on what we have cached. # If we already have a list of all the user that have changed since # the last sync then it's likely more efficient to compare the rooms # they're in with the rooms the syncing user is in. # # If we don't have that info cached then we get all the users that # share a room with our user and check if those users have changed. cache_result = self.store.get_cached_device_list_changes( since_token.device_list_key ) if cache_result.hit: changed_users = cache_result.entities result = await self.store.get_rooms_for_users(changed_users) for changed_user_id, entries in result.items(): # Check if the changed user shares any rooms with the user, # or if the changed user is the syncing user (as we always # want to include device list updates of their own devices). if user_id == changed_user_id or any( rid in joined_rooms for rid in entries ): users_that_have_changed.add(changed_user_id) else: users_that_have_changed = ( await self._device_handler.get_device_changes_in_shared_rooms( user_id, sync_result_builder.joined_room_ids, from_token=since_token, ) ) # Step 1b, check for newly joined rooms for room_id in newly_joined_rooms: joined_users = await self.store.get_users_in_room(room_id) newly_joined_or_invited_or_knocked_users.update(joined_users) # TODO: Check that these users are actually new, i.e. either they # weren't in the previous sync *or* they left and rejoined. users_that_have_changed.update(newly_joined_or_invited_or_knocked_users) user_signatures_changed = await self.store.get_users_whose_signatures_changed( user_id, since_token.device_list_key ) users_that_have_changed.update(user_signatures_changed) # Now find users that we no longer track for room_id in newly_left_rooms: left_users = await self.store.get_users_in_room(room_id) newly_left_users.update(left_users) # Remove any users that we still share a room with. left_users_rooms = await self.store.get_rooms_for_users(newly_left_users) for user_id, entries in left_users_rooms.items(): if any(rid in joined_rooms for rid in entries): newly_left_users.discard(user_id) return DeviceListUpdates(changed=users_that_have_changed, left=newly_left_users) @trace async def _generate_sync_entry_for_to_device( self, sync_result_builder: "SyncResultBuilder" ) -> None: """Generates the portion of the sync response. Populates `sync_result_builder` with the result. """ user_id = sync_result_builder.sync_config.user.to_string() device_id = sync_result_builder.sync_config.device_id now_token = sync_result_builder.now_token since_stream_id = 0 if sync_result_builder.since_token is not None: since_stream_id = int(sync_result_builder.since_token.to_device_key) if device_id is not None and since_stream_id != int(now_token.to_device_key): messages, stream_id = await self.store.get_messages_for_device( user_id, device_id, since_stream_id, now_token.to_device_key ) for message in messages: log_kv( { "event": "to_device_message", "sender": message["sender"], "type": message["type"], EventContentFields.TO_DEVICE_MSGID: message["content"].get( EventContentFields.TO_DEVICE_MSGID ), } ) if messages and issue9533_logger.isEnabledFor(logging.DEBUG): issue9533_logger.debug( "Returning to-device messages with stream_ids (%d, %d]; now: %d;" " msgids: %s", since_stream_id, stream_id, now_token.to_device_key, [ message["content"].get(EventContentFields.TO_DEVICE_MSGID) for message in messages ], ) sync_result_builder.now_token = now_token.copy_and_replace( StreamKeyType.TO_DEVICE, stream_id ) sync_result_builder.to_device = messages else: sync_result_builder.to_device = [] async def _generate_sync_entry_for_account_data( self, sync_result_builder: "SyncResultBuilder" ) -> None: """Generates the global account data portion of the sync response. Account data (called "Client Config" in the spec) can be set either globally or for a specific room. Account data consists of a list of events which accumulate state, much like a room. This function retrieves global account data and writes it to the given `sync_result_builder`. See `_generate_sync_entry_for_rooms` for handling of per-room account data. Args: sync_result_builder """ sync_config = sync_result_builder.sync_config user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token if since_token and not sync_result_builder.full_state: global_account_data = ( await self.store.get_updated_global_account_data_for_user( user_id, since_token.account_data_key ) ) push_rules_changed = await self.store.have_push_rules_changed_for_user( user_id, int(since_token.push_rules_key) ) if push_rules_changed: global_account_data = { AccountDataTypes.PUSH_RULES: await self._push_rules_handler.push_rules_for_user( sync_config.user ), **global_account_data, } else: all_global_account_data = await self.store.get_global_account_data_for_user( user_id ) global_account_data = { AccountDataTypes.PUSH_RULES: await self._push_rules_handler.push_rules_for_user( sync_config.user ), **all_global_account_data, } account_data_for_user = ( await sync_config.filter_collection.filter_global_account_data( [ {"type": account_data_type, "content": content} for account_data_type, content in global_account_data.items() ] ) ) sync_result_builder.account_data = account_data_for_user async def _generate_sync_entry_for_presence( self, sync_result_builder: "SyncResultBuilder", newly_joined_rooms: AbstractSet[str], newly_joined_or_invited_users: AbstractSet[str], ) -> None: """Generates the presence portion of the sync response. Populates the `sync_result_builder` with the result. Args: sync_result_builder newly_joined_rooms: Set of rooms that the user has joined since the last sync (or empty if an initial sync) newly_joined_or_invited_users: Set of users that have joined or been invited to rooms since the last sync (or empty if an initial sync) """ now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config user = sync_result_builder.sync_config.user presence_source = self.event_sources.sources.presence since_token = sync_result_builder.since_token presence_key = None include_offline = False if since_token and not sync_result_builder.full_state: presence_key = since_token.presence_key include_offline = True presence, presence_key = await presence_source.get_new_events( user=user, from_key=presence_key, is_guest=sync_config.is_guest, include_offline=include_offline, ) assert presence_key sync_result_builder.now_token = now_token.copy_and_replace( StreamKeyType.PRESENCE, presence_key ) extra_users_ids = set(newly_joined_or_invited_users) for room_id in newly_joined_rooms: users = await self.store.get_users_in_room(room_id) extra_users_ids.update(users) extra_users_ids.discard(user.to_string()) if extra_users_ids: states = await self.presence_handler.get_states(extra_users_ids) presence.extend(states) # Deduplicate the presence entries so that there's at most one per user presence = list({p.user_id: p for p in presence}.values()) presence = await sync_config.filter_collection.filter_presence(presence) sync_result_builder.presence = presence async def _generate_sync_entry_for_rooms( self, sync_result_builder: "SyncResultBuilder" ) -> Tuple[AbstractSet[str], AbstractSet[str]]: """Generates the rooms portion of the sync response. Populates the `sync_result_builder` with the result. In the response that reaches the client, rooms are divided into four categories: `invite`, `join`, `knock`, `leave`. These aren't the same as the four sets of room ids returned by this function. Args: sync_result_builder Returns: Returns a 2-tuple describing rooms the user has joined or left. Its entries are: - newly_joined_rooms - newly_left_rooms """ since_token = sync_result_builder.since_token user_id = sync_result_builder.sync_config.user.to_string() blocks_all_rooms = ( sync_result_builder.sync_config.filter_collection.blocks_all_rooms() ) # 0. Start by fetching room account data (if required). if ( blocks_all_rooms or sync_result_builder.sync_config.filter_collection.blocks_all_room_account_data() ): account_data_by_room: Mapping[str, Mapping[str, JsonMapping]] = {} elif since_token and not sync_result_builder.full_state: account_data_by_room = ( await self.store.get_updated_room_account_data_for_user( user_id, since_token.account_data_key ) ) else: account_data_by_room = await self.store.get_room_account_data_for_user( user_id ) # 1. Start by fetching all ephemeral events in rooms we've joined (if required). block_all_room_ephemeral = ( blocks_all_rooms or sync_result_builder.sync_config.filter_collection.blocks_all_room_ephemeral() ) if block_all_room_ephemeral: ephemeral_by_room: Dict[str, List[JsonDict]] = {} else: now_token, ephemeral_by_room = await self.ephemeral_by_room( sync_result_builder, now_token=sync_result_builder.now_token, since_token=sync_result_builder.since_token, ) sync_result_builder.now_token = now_token # 2. We check up front if anything has changed, if it hasn't then there is # no point in going further. if not sync_result_builder.full_state: if since_token and not ephemeral_by_room and not account_data_by_room: have_changed = await self._have_rooms_changed(sync_result_builder) log_kv({"rooms_have_changed": have_changed}) if not have_changed: tags_by_room = await self.store.get_updated_tags( user_id, since_token.account_data_key ) if not tags_by_room: logger.debug("no-oping sync") return set(), set() # 3. Work out which rooms need reporting in the sync response. ignored_users = await self.store.ignored_users(user_id) if since_token: room_changes = await self._get_room_changes_for_incremental_sync( sync_result_builder, ignored_users ) tags_by_room = await self.store.get_updated_tags( user_id, since_token.account_data_key ) else: room_changes = await self._get_room_changes_for_initial_sync( sync_result_builder, ignored_users ) tags_by_room = await self.store.get_tags_for_user(user_id) log_kv({"rooms_changed": len(room_changes.room_entries)}) room_entries = room_changes.room_entries invited = room_changes.invited knocked = room_changes.knocked newly_joined_rooms = room_changes.newly_joined_rooms newly_left_rooms = room_changes.newly_left_rooms # 4. We need to apply further processing to `room_entries` (rooms considered # joined or archived). async def handle_room_entries(room_entry: "RoomSyncResultBuilder") -> None: logger.debug("Generating room entry for %s", room_entry.room_id) # Note that this mutates sync_result_builder.{joined,archived}. await self._generate_room_entry( sync_result_builder, room_entry, ephemeral=ephemeral_by_room.get(room_entry.room_id, []), tags=tags_by_room.get(room_entry.room_id), account_data=account_data_by_room.get(room_entry.room_id, {}), always_include=sync_result_builder.full_state, ) logger.debug("Generated room entry for %s", room_entry.room_id) with start_active_span("sync.generate_room_entries"): await concurrently_execute(handle_room_entries, room_entries, 10) sync_result_builder.invited.extend(invited) sync_result_builder.knocked.extend(knocked) return set(newly_joined_rooms), set(newly_left_rooms) async def _have_rooms_changed( self, sync_result_builder: "SyncResultBuilder" ) -> bool: """Returns whether there may be any new events that should be sent down the sync. Returns True if there are. Does not modify the `sync_result_builder`. """ since_token = sync_result_builder.since_token membership_change_events = sync_result_builder.membership_change_events assert since_token if membership_change_events or sync_result_builder.forced_newly_joined_room_ids: return True stream_id = since_token.room_key.stream for room_id in sync_result_builder.joined_room_ids: if self.store.has_room_changed_since(room_id, stream_id): return True return False async def _get_room_changes_for_incremental_sync( self, sync_result_builder: "SyncResultBuilder", ignored_users: FrozenSet[str], ) -> _RoomChanges: """Determine the changes in rooms to report to the user. This function is a first pass at generating the rooms part of the sync response. It determines which rooms have changed during the sync period, and categorises them into four buckets: "knock", "invite", "join" and "leave". It also excludes from that list any room that appears in the list of rooms to exclude from sync results in the server configuration. 1. Finds all membership changes for the user in the sync period (from `since_token` up to `now_token`). 2. Uses those to place the room in one of the four categories above. 3. Builds a `_RoomChanges` struct to record this, and return that struct. For rooms classified as "knock", "invite" or "leave", we just need to report a single membership event in the eventual /sync response. For "join" we need to fetch additional non-membership events, e.g. messages in the room. That is more complicated, so instead we report an intermediary `RoomSyncResultBuilder` struct, and leave the additional work to `_generate_room_entry`. The sync_result_builder is not modified by this function. """ user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config membership_change_events = sync_result_builder.membership_change_events assert since_token mem_change_events_by_room_id: Dict[str, List[EventBase]] = {} for event in membership_change_events: mem_change_events_by_room_id.setdefault(event.room_id, []).append(event) newly_joined_rooms: List[str] = list( sync_result_builder.forced_newly_joined_room_ids ) newly_left_rooms: List[str] = [] room_entries: List[RoomSyncResultBuilder] = [] invited: List[InvitedSyncResult] = [] knocked: List[KnockedSyncResult] = [] for room_id, events in mem_change_events_by_room_id.items(): # The body of this loop will add this room to at least one of the five lists # above. Things get messy if you've e.g. joined, left, joined then left the # room all in the same sync period. logger.debug( "Membership changes in %s: [%s]", room_id, ", ".join("%s (%s)" % (e.event_id, e.membership) for e in events), ) non_joins = [e for e in events if e.membership != Membership.JOIN] has_join = len(non_joins) != len(events) # We want to figure out if we joined the room at some point since # the last sync (even if we have since left). This is to make sure # we do send down the room, and with full state, where necessary old_state_ids = None if room_id in sync_result_builder.joined_room_ids and non_joins: # Always include if the user (re)joined the room, especially # important so that device list changes are calculated correctly. # If there are non-join member events, but we are still in the room, # then the user must have left and joined newly_joined_rooms.append(room_id) # User is in the room so we don't need to do the invite/leave checks continue if room_id in sync_result_builder.joined_room_ids or has_join: old_state_ids = await self.get_state_at( room_id, since_token, state_filter=StateFilter.from_types([(EventTypes.Member, user_id)]), ) old_mem_ev_id = old_state_ids.get((EventTypes.Member, user_id), None) old_mem_ev = None if old_mem_ev_id: old_mem_ev = await self.store.get_event( old_mem_ev_id, allow_none=True ) if not old_mem_ev or old_mem_ev.membership != Membership.JOIN: newly_joined_rooms.append(room_id) # If user is in the room then we don't need to do the invite/leave checks if room_id in sync_result_builder.joined_room_ids: continue if not non_joins: continue last_non_join = non_joins[-1] # Check if we have left the room. This can either be because we were # joined before *or* that we since joined and then left. if events[-1].membership != Membership.JOIN: if has_join: newly_left_rooms.append(room_id) else: if not old_state_ids: old_state_ids = await self.get_state_at( room_id, since_token, state_filter=StateFilter.from_types( [(EventTypes.Member, user_id)] ), ) old_mem_ev_id = old_state_ids.get( (EventTypes.Member, user_id), None ) old_mem_ev = None if old_mem_ev_id: old_mem_ev = await self.store.get_event( old_mem_ev_id, allow_none=True ) if old_mem_ev and old_mem_ev.membership == Membership.JOIN: newly_left_rooms.append(room_id) # Only bother if we're still currently invited should_invite = last_non_join.membership == Membership.INVITE if should_invite: if last_non_join.sender not in ignored_users: invite_room_sync = InvitedSyncResult(room_id, invite=last_non_join) if invite_room_sync: invited.append(invite_room_sync) # Only bother if our latest membership in the room is knock (and we haven't # been accepted/rejected in the meantime). should_knock = last_non_join.membership == Membership.KNOCK if should_knock: knock_room_sync = KnockedSyncResult(room_id, knock=last_non_join) if knock_room_sync: knocked.append(knock_room_sync) # Always include leave/ban events. Just take the last one. # TODO: How do we handle ban -> leave in same batch? leave_events = [ e for e in non_joins if e.membership in (Membership.LEAVE, Membership.BAN) ] if leave_events: leave_event = leave_events[-1] leave_position = await self.store.get_position_for_event( leave_event.event_id ) # If the leave event happened before the since token then we # bail. if since_token and not leave_position.persisted_after( since_token.room_key ): continue # We can safely convert the position of the leave event into a # stream token as it'll only be used in the context of this # room. (c.f. the docstring of `to_room_stream_token`). leave_token = since_token.copy_and_replace( StreamKeyType.ROOM, leave_position.to_room_stream_token() ) # If this is an out of band message, like a remote invite # rejection, we include it in the recents batch. Otherwise, we # let _load_filtered_recents handle fetching the correct # batches. # # This is all screaming out for a refactor, as the logic here is # subtle and the moving parts numerous. if leave_event.internal_metadata.is_out_of_band_membership(): batch_events: Optional[List[EventBase]] = [leave_event] else: batch_events = None room_entries.append( RoomSyncResultBuilder( room_id=room_id, rtype="archived", events=batch_events, newly_joined=room_id in newly_joined_rooms, full_state=False, since_token=since_token, upto_token=leave_token, out_of_band=leave_event.internal_metadata.is_out_of_band_membership(), ) ) timeline_limit = sync_config.filter_collection.timeline_limit() # Get all events since the `from_key` in rooms we're currently joined to. # If there are too many, we get the most recent events only. This leaves # a "gap" in the timeline, as described by the spec for /sync. room_to_events = await self.store.get_room_events_stream_for_rooms( room_ids=sync_result_builder.joined_room_ids, from_key=since_token.room_key, to_key=now_token.room_key, limit=timeline_limit + 1, ) # We loop through all room ids, even if there are no new events, in case # there are non room events that we need to notify about. for room_id in sync_result_builder.joined_room_ids: room_entry = room_to_events.get(room_id, None) newly_joined = room_id in newly_joined_rooms if room_entry: events, start_key = room_entry prev_batch_token = now_token.copy_and_replace( StreamKeyType.ROOM, start_key ) entry = RoomSyncResultBuilder( room_id=room_id, rtype="joined", events=events, newly_joined=newly_joined, full_state=False, since_token=None if newly_joined else since_token, upto_token=prev_batch_token, ) else: entry = RoomSyncResultBuilder( room_id=room_id, rtype="joined", events=[], newly_joined=newly_joined, full_state=False, since_token=since_token, upto_token=since_token, ) room_entries.append(entry) return _RoomChanges( room_entries, invited, knocked, newly_joined_rooms, newly_left_rooms, ) async def _get_room_changes_for_initial_sync( self, sync_result_builder: "SyncResultBuilder", ignored_users: FrozenSet[str], ) -> _RoomChanges: """Returns entries for all rooms for the user. Like `_get_rooms_changed`, but assumes the `since_token` is `None`. This function does not modify the sync_result_builder. Args: sync_result_builder ignored_users: Set of users ignored by user. ignored_rooms: List of rooms to ignore. """ user_id = sync_result_builder.sync_config.user.to_string() since_token = sync_result_builder.since_token now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config room_list = await self.store.get_rooms_for_local_user_where_membership_is( user_id=user_id, membership_list=Membership.LIST, excluded_rooms=sync_result_builder.excluded_room_ids, ) room_entries = [] invited = [] knocked = [] for event in room_list: if event.room_version_id not in KNOWN_ROOM_VERSIONS: continue if event.membership == Membership.JOIN: room_entries.append( RoomSyncResultBuilder( room_id=event.room_id, rtype="joined", events=None, newly_joined=False, full_state=True, since_token=since_token, upto_token=now_token, ) ) elif event.membership == Membership.INVITE: if event.sender in ignored_users: continue invite = await self.store.get_event(event.event_id) invited.append(InvitedSyncResult(room_id=event.room_id, invite=invite)) elif event.membership == Membership.KNOCK: knock = await self.store.get_event(event.event_id) knocked.append(KnockedSyncResult(room_id=event.room_id, knock=knock)) elif event.membership in (Membership.LEAVE, Membership.BAN): # Always send down rooms we were banned from or kicked from. if not sync_config.filter_collection.include_leave: if event.membership == Membership.LEAVE: if user_id == event.sender: continue leave_token = now_token.copy_and_replace( StreamKeyType.ROOM, RoomStreamToken(stream=event.stream_ordering) ) room_entries.append( RoomSyncResultBuilder( room_id=event.room_id, rtype="archived", events=None, newly_joined=False, full_state=True, since_token=since_token, upto_token=leave_token, ) ) return _RoomChanges(room_entries, invited, knocked, [], []) async def _generate_room_entry( self, sync_result_builder: "SyncResultBuilder", room_builder: "RoomSyncResultBuilder", ephemeral: List[JsonDict], tags: Optional[Mapping[str, JsonMapping]], account_data: Mapping[str, JsonMapping], always_include: bool = False, ) -> None: """Populates the `joined` and `archived` section of `sync_result_builder` based on the `room_builder`. Ideally, we want to report all events whose stream ordering `s` lies in the range `since_token < s <= now_token`, where the two tokens are read from the sync_result_builder. If there are too many events in that range to report, things get complicated. In this situation we return a truncated list of the most recent events, and indicate in the response that there is a "gap" of omitted events. Lots of this is handled in `_load_filtered_recents`, but some of is handled in this method. Additionally: - we include a "state_delta", to describe the changes in state over the gap, - we include all membership events applying to the user making the request, even those in the gap. See the spec for the rationale: https://spec.matrix.org/v1.1/client-server-api/#syncing Args: sync_result_builder room_builder ephemeral: List of new ephemeral events for room tags: List of *all* tags for room, or None if there has been no change. account_data: List of new account data for room always_include: Always include this room in the sync response, even if empty. """ newly_joined = room_builder.newly_joined full_state = ( room_builder.full_state or newly_joined or sync_result_builder.full_state ) events = room_builder.events # We want to shortcut out as early as possible. if not (always_include or account_data or ephemeral or full_state): if events == [] and tags is None: return now_token = sync_result_builder.now_token sync_config = sync_result_builder.sync_config room_id = room_builder.room_id since_token = room_builder.since_token upto_token = room_builder.upto_token with start_active_span("sync.generate_room_entry"): set_tag("room_id", room_id) log_kv({"events": len(events or ())}) log_kv( { "since_token": since_token, "upto_token": upto_token, } ) batch = await self._load_filtered_recents( room_id, sync_result_builder, sync_config, upto_token=upto_token, since_token=since_token, potential_recents=events, newly_joined_room=newly_joined, ) log_kv( { "batch_events": len(batch.events), "prev_batch": batch.prev_batch, "batch_limited": batch.limited, } ) # Note: `batch` can be both empty and limited here in the case where # `_load_filtered_recents` can't find any events the user should see # (e.g. due to having ignored the sender of the last 50 events). # When we join the room (or the client requests full_state), we should # send down any existing tags. Usually the user won't have tags in a # newly joined room, unless either a) they've joined before or b) the # tag was added by synapse e.g. for server notice rooms. if full_state: user_id = sync_result_builder.sync_config.user.to_string() tags = await self.store.get_tags_for_room(user_id, room_id) # If there aren't any tags, don't send the empty tags list down # sync if not tags: tags = None account_data_events = [] if tags is not None: account_data_events.append( {"type": AccountDataTypes.TAG, "content": {"tags": tags}} ) for account_data_type, content in account_data.items(): account_data_events.append( {"type": account_data_type, "content": content} ) account_data_events = ( await sync_config.filter_collection.filter_room_account_data( account_data_events ) ) ephemeral = await sync_config.filter_collection.filter_room_ephemeral( ephemeral ) if not ( always_include or batch or account_data_events or ephemeral or full_state ): return if not room_builder.out_of_band: state = await self.compute_state_delta( room_id, batch, sync_config, since_token, now_token, full_state=full_state, ) else: # An out of band room won't have any state changes. state = {} summary: Optional[JsonDict] = {} # we include a summary in room responses when we're lazy loading # members (as the client otherwise doesn't have enough info to form # the name itself). if ( not room_builder.out_of_band and sync_config.filter_collection.lazy_load_members() and ( # we recalculate the summary: # if there are membership changes in the timeline, or # if membership has changed during a gappy sync, or # if this is an initial sync. any(ev.type == EventTypes.Member for ev in batch.events) or ( # XXX: this may include false positives in the form of LL # members which have snuck into state batch.limited and any(t == EventTypes.Member for (t, k) in state) ) or since_token is None ) ): summary = await self.compute_summary( room_id, sync_config, batch, state, now_token ) if room_builder.rtype == "joined": unread_notifications: Dict[str, int] = {} room_sync = JoinedSyncResult( room_id=room_id, timeline=batch, state=state, ephemeral=ephemeral, account_data=account_data_events, unread_notifications=unread_notifications, unread_thread_notifications={}, summary=summary, unread_count=0, ) if room_sync or always_include: notifs = await self.unread_notifs_for_room_id(room_id, sync_config) # Notifications for the main timeline. notify_count = notifs.main_timeline.notify_count highlight_count = notifs.main_timeline.highlight_count unread_count = notifs.main_timeline.unread_count # Check the sync configuration. if sync_config.filter_collection.unread_thread_notifications(): # And add info for each thread. room_sync.unread_thread_notifications = { thread_id: { "notification_count": thread_notifs.notify_count, "highlight_count": thread_notifs.highlight_count, } for thread_id, thread_notifs in notifs.threads.items() if thread_id is not None } else: # Combine the unread counts for all threads and main timeline. for thread_notifs in notifs.threads.values(): notify_count += thread_notifs.notify_count highlight_count += thread_notifs.highlight_count unread_count += thread_notifs.unread_count unread_notifications["notification_count"] = notify_count unread_notifications["highlight_count"] = highlight_count room_sync.unread_count = unread_count sync_result_builder.joined.append(room_sync) if batch.limited and since_token: user_id = sync_result_builder.sync_config.user.to_string() logger.debug( "Incremental gappy sync of %s for user %s with %d state events" % (room_id, user_id, len(state)) ) elif room_builder.rtype == "archived": archived_room_sync = ArchivedSyncResult( room_id=room_id, timeline=batch, state=state, account_data=account_data_events, ) if archived_room_sync or always_include: sync_result_builder.archived.append(archived_room_sync) else: raise Exception("Unrecognized rtype: %r", room_builder.rtype) def _action_has_highlight(actions: List[JsonDict]) -> bool: for action in actions: try: if action.get("set_tweak", None) == "highlight": return action.get("value", True) except AttributeError: pass return False def _calculate_state( timeline_contains: StateMap[str], timeline_start: StateMap[str], timeline_end: StateMap[str], previous_timeline_end: StateMap[str], lazy_load_members: bool, ) -> StateMap[str]: """Works out what state to include in a sync response. Args: timeline_contains: state in the timeline timeline_start: state at the start of the timeline timeline_end: state at the end of the timeline previous_timeline_end: state at the end of the previous sync (or empty dict if this is an initial sync) lazy_load_members: whether to return members from timeline_start or not. assumes that timeline_start has already been filtered to include only the members the client needs to know about. """ event_id_to_state_key = { event_id: state_key for state_key, event_id in itertools.chain( timeline_contains.items(), timeline_start.items(), timeline_end.items(), previous_timeline_end.items(), ) } timeline_end_ids = set(timeline_end.values()) timeline_start_ids = set(timeline_start.values()) previous_timeline_end_ids = set(previous_timeline_end.values()) timeline_contains_ids = set(timeline_contains.values()) # If we are lazyloading room members, we explicitly add the membership events # for the senders in the timeline into the state block returned by /sync, # as we may not have sent them to the client before. We find these membership # events by filtering them out of timeline_start, which has already been filtered # to only include membership events for the senders in the timeline. # In practice, we can do this by removing them from the previous_timeline_end_ids # list, which is the list of relevant state we know we have already sent to the # client. # see https://github.com/matrix-org/synapse/pull/2970/files/efcdacad7d1b7f52f879179701c7e0d9b763511f#r204732809 if lazy_load_members: previous_timeline_end_ids.difference_update( e for t, e in timeline_start.items() if t[0] == EventTypes.Member ) state_ids = ( (timeline_end_ids | timeline_start_ids) - previous_timeline_end_ids - timeline_contains_ids ) return {event_id_to_state_key[e]: e for e in state_ids} @attr.s(slots=True, auto_attribs=True) class SyncResultBuilder: """Used to help build up a new SyncResult for a user Attributes: sync_config full_state: The full_state flag as specified by user since_token: The token supplied by user, or None. now_token: The token to sync up to. joined_room_ids: List of rooms the user is joined to excluded_room_ids: Set of room ids we should omit from the /sync response. forced_newly_joined_room_ids: Rooms that should be presented in the /sync response as if they were newly joined during the sync period, even if that's not the case. (This is useful if the room was previously excluded from a /sync response, and now the client should be made aware of it.) Only used by incremental syncs. # The following mirror the fields in a sync response presence account_data joined invited knocked archived to_device """ sync_config: SyncConfig full_state: bool since_token: Optional[StreamToken] now_token: StreamToken joined_room_ids: FrozenSet[str] excluded_room_ids: FrozenSet[str] forced_newly_joined_room_ids: FrozenSet[str] membership_change_events: List[EventBase] presence: List[UserPresenceState] = attr.Factory(list) account_data: List[JsonDict] = attr.Factory(list) joined: List[JoinedSyncResult] = attr.Factory(list) invited: List[InvitedSyncResult] = attr.Factory(list) knocked: List[KnockedSyncResult] = attr.Factory(list) archived: List[ArchivedSyncResult] = attr.Factory(list) to_device: List[JsonDict] = attr.Factory(list) def calculate_user_changes(self) -> Tuple[AbstractSet[str], AbstractSet[str]]: """Work out which other users have joined or left rooms we are joined to. This data only is only useful for an incremental sync. The SyncResultBuilder is not modified by this function. """ newly_joined_or_invited_or_knocked_users = set() newly_left_users = set() if self.since_token: for joined_sync in self.joined: it = itertools.chain( joined_sync.timeline.events, joined_sync.state.values() ) for event in it: if event.type == EventTypes.Member: if ( event.membership == Membership.JOIN or event.membership == Membership.INVITE or event.membership == Membership.KNOCK ): newly_joined_or_invited_or_knocked_users.add( event.state_key ) else: prev_content = event.unsigned.get("prev_content", {}) prev_membership = prev_content.get("membership", None) if prev_membership == Membership.JOIN: newly_left_users.add(event.state_key) newly_left_users -= newly_joined_or_invited_or_knocked_users return newly_joined_or_invited_or_knocked_users, newly_left_users @attr.s(slots=True, auto_attribs=True) class RoomSyncResultBuilder: """Stores information needed to create either a `JoinedSyncResult` or `ArchivedSyncResult`. Attributes: room_id rtype: One of `"joined"` or `"archived"` events: List of events to include in the room (more events may be added when generating result). newly_joined: If the user has newly joined the room full_state: Whether the full state should be sent in result since_token: Earliest point to return events from, or None upto_token: Latest point to return events from. out_of_band: whether the events in the room are "out of band" events and the server isn't in the room. """ room_id: str rtype: str events: Optional[List[EventBase]] newly_joined: bool full_state: bool since_token: Optional[StreamToken] upto_token: StreamToken out_of_band: bool = False synapse-1.100.0/synapse/handlers/typing.py000066400000000000000000000514341455622526000205170ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Set, Tuple import attr from synapse.api.constants import EduTypes from synapse.api.errors import AuthError, ShadowBanError, SynapseError from synapse.appservice import ApplicationService from synapse.metrics.background_process_metrics import ( run_as_background_process, wrap_as_background_process, ) from synapse.replication.tcp.streams import TypingStream from synapse.streams import EventSource from synapse.types import ( JsonDict, JsonMapping, Requester, StrCollection, StreamKeyType, UserID, ) from synapse.util.caches.stream_change_cache import StreamChangeCache from synapse.util.metrics import Measure from synapse.util.retryutils import filter_destinations_by_retry_limiter from synapse.util.wheel_timer import WheelTimer if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # A tiny object useful for storing a user's membership in a room, as a mapping # key @attr.s(slots=True, frozen=True, auto_attribs=True) class RoomMember: room_id: str user_id: str # How often we expect remote servers to resend us presence. FEDERATION_TIMEOUT = 60 * 1000 # How often to resend typing across federation. FEDERATION_PING_INTERVAL = 40 * 1000 # How long to remember a typing notification happened in a room before # forgetting about it. FORGET_TIMEOUT = 10 * 60 * 1000 class FollowerTypingHandler: """A typing handler on a different process than the writer that is updated via replication. """ def __init__(self, hs: "HomeServer"): self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.server_name = hs.config.server.server_name self.clock = hs.get_clock() self.is_mine_id = hs.is_mine_id self.is_mine_server_name = hs.is_mine_server_name self.federation = None if hs.should_send_federation(): self.federation = hs.get_federation_sender() if hs.get_instance_name() not in hs.config.worker.writers.typing: hs.get_federation_registry().register_instances_for_edu( EduTypes.TYPING, hs.config.worker.writers.typing, ) # map room IDs to serial numbers self._room_serials: Dict[str, int] = {} # map room IDs to sets of users currently typing self._room_typing: Dict[str, Set[str]] = {} self._member_last_federation_poke: Dict[RoomMember, int] = {} self.wheel_timer: WheelTimer[RoomMember] = WheelTimer(bucket_size=5000) self._latest_room_serial = 0 self._rooms_updated: Set[str] = set() self.clock.looping_call(self._handle_timeouts, 5000) self.clock.looping_call(self._prune_old_typing, FORGET_TIMEOUT) def _reset(self) -> None: """Reset the typing handler's data caches.""" # map room IDs to serial numbers self._room_serials = {} # map room IDs to sets of users currently typing self._room_typing = {} self._rooms_updated = set() self._member_last_federation_poke = {} self.wheel_timer = WheelTimer(bucket_size=5000) @wrap_as_background_process("typing._handle_timeouts") async def _handle_timeouts(self) -> None: logger.debug("Checking for typing timeouts") now = self.clock.time_msec() members = set(self.wheel_timer.fetch(now)) for member in members: self._handle_timeout_for_member(now, member) def _handle_timeout_for_member(self, now: int, member: RoomMember) -> None: if not self.is_typing(member): # Nothing to do if they're no longer typing return # Check if we need to resend a keep alive over federation for this # user. if self.federation and self.is_mine_id(member.user_id): last_fed_poke = self._member_last_federation_poke.get(member, None) if not last_fed_poke or last_fed_poke + FEDERATION_PING_INTERVAL <= now: run_as_background_process( "typing._push_remote", self._push_remote, member=member, typing=True ) # Add a paranoia timer to ensure that we always have a timer for # each person typing. self.wheel_timer.insert(now=now, obj=member, then=now + 60 * 1000) def is_typing(self, member: RoomMember) -> bool: return member.user_id in self._room_typing.get(member.room_id, set()) async def _push_remote(self, member: RoomMember, typing: bool) -> None: if not self.federation: return try: self._member_last_federation_poke[member] = self.clock.time_msec() now = self.clock.time_msec() self.wheel_timer.insert( now=now, obj=member, then=now + FEDERATION_PING_INTERVAL ) hosts: StrCollection = ( await self._storage_controllers.state.get_current_hosts_in_room( member.room_id ) ) hosts = await filter_destinations_by_retry_limiter( hosts, clock=self.clock, store=self.store, ) for domain in hosts: if not self.is_mine_server_name(domain): logger.debug("sending typing update to %s", domain) self.federation.build_and_send_edu( destination=domain, edu_type=EduTypes.TYPING, content={ "room_id": member.room_id, "user_id": member.user_id, "typing": typing, }, key=member, ) except Exception: logger.exception("Error pushing typing notif to remotes") def process_replication_rows( self, token: int, rows: List[TypingStream.TypingStreamRow] ) -> None: """Should be called whenever we receive updates for typing stream.""" if self._latest_room_serial > token: # The typing worker has gone backwards (e.g. it may have restarted). # To prevent inconsistent data, just clear everything. logger.info("Typing handler stream went backwards; resetting") self._reset() # Set the latest serial token to whatever the server gave us. self._latest_room_serial = token for row in rows: self._room_serials[row.room_id] = token prev_typing = self._room_typing.get(row.room_id, set()) now_typing = set(row.user_ids) self._room_typing[row.room_id] = now_typing self._rooms_updated.add(row.room_id) if self.federation: run_as_background_process( "_send_changes_in_typing_to_remotes", self._send_changes_in_typing_to_remotes, row.room_id, prev_typing, now_typing, ) async def _send_changes_in_typing_to_remotes( self, room_id: str, prev_typing: Set[str], now_typing: Set[str] ) -> None: """Process a change in typing of a room from replication, sending EDUs for any local users. """ if not self.federation: return for user_id in now_typing - prev_typing: if self.is_mine_id(user_id): await self._push_remote(RoomMember(room_id, user_id), True) for user_id in prev_typing - now_typing: if self.is_mine_id(user_id): await self._push_remote(RoomMember(room_id, user_id), False) def get_current_token(self) -> int: return self._latest_room_serial def _prune_old_typing(self) -> None: """Prune rooms that haven't seen typing updates since last time. This is safe to do as clients should time out old typing notifications. """ stale_rooms = self._room_serials.keys() - self._rooms_updated for room_id in stale_rooms: self._room_serials.pop(room_id, None) self._room_typing.pop(room_id, None) self._rooms_updated = set() class TypingWriterHandler(FollowerTypingHandler): def __init__(self, hs: "HomeServer"): super().__init__(hs) assert hs.get_instance_name() in hs.config.worker.writers.typing self.auth = hs.get_auth() self.notifier = hs.get_notifier() self.event_auth_handler = hs.get_event_auth_handler() self.hs = hs hs.get_federation_registry().register_edu_handler( EduTypes.TYPING, self._recv_edu ) hs.get_distributor().observe("user_left_room", self.user_left_room) # clock time we expect to stop self._member_typing_until: Dict[RoomMember, int] = {} # caches which room_ids changed at which serials self._typing_stream_change_cache = StreamChangeCache( "TypingStreamChangeCache", self._latest_room_serial ) def _handle_timeout_for_member(self, now: int, member: RoomMember) -> None: super()._handle_timeout_for_member(now, member) if not self.is_typing(member): # Nothing to do if they're no longer typing return until = self._member_typing_until.get(member, None) if not until or until <= now: logger.info("Timing out typing for: %s", member.user_id) self._stopped_typing(member) return async def started_typing( self, target_user: UserID, requester: Requester, room_id: str, timeout: int ) -> None: target_user_id = target_user.to_string() if not self.is_mine_id(target_user_id): raise SynapseError(400, "User is not hosted on this homeserver") if target_user != requester.user: raise AuthError(400, "Cannot set another user's typing state") if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() await self.auth.check_user_in_room(room_id, requester) logger.debug("%s has started typing in %s", target_user_id, room_id) member = RoomMember(room_id=room_id, user_id=target_user_id) was_present = member.user_id in self._room_typing.get(room_id, set()) now = self.clock.time_msec() self._member_typing_until[member] = now + timeout self.wheel_timer.insert(now=now, obj=member, then=now + timeout) if was_present: # No point sending another notification return self._push_update(member=member, typing=True) async def stopped_typing( self, target_user: UserID, requester: Requester, room_id: str ) -> None: target_user_id = target_user.to_string() if not self.is_mine_id(target_user_id): raise SynapseError(400, "User is not hosted on this homeserver") if target_user != requester.user: raise AuthError(400, "Cannot set another user's typing state") if requester.shadow_banned: # We randomly sleep a bit just to annoy the requester. await self.clock.sleep(random.randint(1, 10)) raise ShadowBanError() await self.auth.check_user_in_room(room_id, requester) logger.debug("%s has stopped typing in %s", target_user_id, room_id) member = RoomMember(room_id=room_id, user_id=target_user_id) self._stopped_typing(member) def user_left_room(self, user: UserID, room_id: str) -> None: user_id = user.to_string() if self.is_mine_id(user_id): member = RoomMember(room_id=room_id, user_id=user_id) self._stopped_typing(member) def _stopped_typing(self, member: RoomMember) -> None: if member.user_id not in self._room_typing.get(member.room_id, set()): # No point return self._member_typing_until.pop(member, None) self._member_last_federation_poke.pop(member, None) self._push_update(member=member, typing=False) def _push_update(self, member: RoomMember, typing: bool) -> None: if self.hs.is_mine_id(member.user_id): # Only send updates for changes to our own users. run_as_background_process( "typing._push_remote", self._push_remote, member, typing ) self._push_update_local(member=member, typing=typing) async def _recv_edu(self, origin: str, content: JsonDict) -> None: room_id = content["room_id"] user_id = content["user_id"] # If we're not in the room just ditch the event entirely. This is # probably an old server that has come back and thinks we're still in # the room (or we've been rejoined to the room by a state reset). is_in_room = await self.event_auth_handler.is_host_in_room( room_id, self.server_name ) if not is_in_room: logger.info( "Ignoring typing update for room %r from server %s as we're not in the room", room_id, origin, ) return member = RoomMember(user_id=user_id, room_id=room_id) # Check that the string is a valid user id user = UserID.from_string(user_id) if user.domain != origin: logger.info( "Got typing update from %r with bad 'user_id': %r", origin, user_id ) return # Let's check that the origin server is in the room before accepting the typing # event. We don't want to block waiting on a partial state so take an # approximation if needed. domains = await self._storage_controllers.state.get_current_hosts_in_room_or_partial_state_approximation( room_id ) if user.domain in domains: logger.info("Got typing update from %s: %r", user_id, content) now = self.clock.time_msec() self._member_typing_until[member] = now + FEDERATION_TIMEOUT self.wheel_timer.insert(now=now, obj=member, then=now + FEDERATION_TIMEOUT) self._push_update_local(member=member, typing=content["typing"]) def _push_update_local(self, member: RoomMember, typing: bool) -> None: room_set = self._room_typing.setdefault(member.room_id, set()) if typing: room_set.add(member.user_id) else: room_set.discard(member.user_id) self._latest_room_serial += 1 self._room_serials[member.room_id] = self._latest_room_serial self._typing_stream_change_cache.entity_has_changed( member.room_id, self._latest_room_serial ) self._rooms_updated.add(member.room_id) self.notifier.on_new_event( StreamKeyType.TYPING, self._latest_room_serial, rooms=[member.room_id] ) async def get_all_typing_updates( self, instance_name: str, last_id: int, current_id: int, limit: int ) -> Tuple[List[Tuple[int, list]], int, bool]: """Get updates for typing replication stream. Args: instance_name: The writer we want to fetch updates from. Unused here since there is only ever one writer. last_id: The token to fetch updates from. Exclusive. current_id: The token to fetch updates up to. Inclusive. limit: The requested limit for the number of rows to return. The function may return more or fewer rows. Returns: A tuple consisting of: the updates, a token to use to fetch subsequent updates, and whether we returned fewer rows than exists between the requested tokens due to the limit. The token returned can be used in a subsequent call to this function to get further updates. The updates are a list of 2-tuples of stream ID and the row data """ if last_id == current_id: return [], current_id, False result = self._typing_stream_change_cache.get_all_entities_changed(last_id) if result.hit: changed_rooms: Iterable[str] = result.entities else: changed_rooms = self._room_serials rows = [] for room_id in changed_rooms: serial = self._room_serials[room_id] if last_id < serial <= current_id: typing = self._room_typing[room_id] rows.append((serial, [room_id, list(typing)])) rows.sort() limited = False # We, unusually, use a strict limit here as we have all the rows in # memory rather than pulling them out of the database with a `LIMIT ?` # clause. if len(rows) > limit: rows = rows[:limit] current_id = rows[-1][0] limited = True return rows, current_id, limited def process_replication_rows( self, token: int, rows: List[TypingStream.TypingStreamRow] ) -> None: # The writing process should never get updates from replication. raise Exception("Typing writer instance got typing info over replication") class TypingNotificationEventSource(EventSource[int, JsonMapping]): def __init__(self, hs: "HomeServer"): self._main_store = hs.get_datastores().main self.clock = hs.get_clock() # We can't call get_typing_handler here because there's a cycle: # # Typing -> Notifier -> TypingNotificationEventSource -> Typing # self.get_typing_handler = hs.get_typing_handler def _make_event_for(self, room_id: str) -> JsonMapping: typing = self.get_typing_handler()._room_typing[room_id] return { "type": EduTypes.TYPING, "room_id": room_id, "content": {"user_ids": list(typing)}, } async def get_new_events_as( self, from_key: int, service: ApplicationService ) -> Tuple[List[JsonMapping], int]: """Returns a set of new typing events that an appservice may be interested in. Args: from_key: the stream position at which events should be fetched from. service: The appservice which may be interested. Returns: A two-tuple containing the following: * A list of json dictionaries derived from typing events that the appservice may be interested in. * The latest known room serial. """ with Measure(self.clock, "typing.get_new_events_as"): handler = self.get_typing_handler() events = [] # Work on a copy of things here as these may change in the handler while # waiting for the AS `is_interested_in_room` call to complete. # Shallow copy is safe as no nested data is present. latest_room_serial = handler._latest_room_serial room_serials = handler._room_serials.copy() for room_id, serial in room_serials.items(): if serial <= from_key: continue if not await service.is_interested_in_room(room_id, self._main_store): continue events.append(self._make_event_for(room_id)) return events, latest_room_serial async def get_new_events( self, user: UserID, from_key: int, limit: int, room_ids: Iterable[str], is_guest: bool, explicit_room_id: Optional[str] = None, ) -> Tuple[List[JsonMapping], int]: with Measure(self.clock, "typing.get_new_events"): from_key = int(from_key) handler = self.get_typing_handler() events = [] for room_id in room_ids: if room_id not in handler._room_serials: continue if handler._room_serials[room_id] <= from_key: continue events.append(self._make_event_for(room_id)) return events, handler._latest_room_serial def get_current_key(self) -> int: return self.get_typing_handler()._latest_room_serial synapse-1.100.0/synapse/handlers/ui_auth/000077500000000000000000000000001455622526000202625ustar00rootroot00000000000000synapse-1.100.0/synapse/handlers/ui_auth/__init__.py000066400000000000000000000033451455622526000224000ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """This module implements user-interactive auth verification. TODO: move more stuff out of AuthHandler in here. """ from synapse.handlers.ui_auth.checkers import INTERACTIVE_AUTH_CHECKERS # noqa: F401 class UIAuthSessionDataConstants: """Constants for use with AuthHandler.set_session_data""" # used during registration and password reset to store a hashed copy of the # password, so that the client does not need to submit it each time. PASSWORD_HASH = "password_hash" # used during registration to store the mxid of the registered user REGISTERED_USER_ID = "registered_user_id" # used by validate_user_via_ui_auth to store the mxid of the user we are validating # for. REQUEST_USER_ID = "request_user_id" # used during registration to store the registration token used (if required) so that: # - we can prevent a token being used twice by one session # - we can 'use up' the token after registration has successfully completed REGISTRATION_TOKEN = "m.login.registration_token" synapse-1.100.0/synapse/handlers/ui_auth/checkers.py000066400000000000000000000272341455622526000224330ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Any, ClassVar, Sequence, Type from twisted.web.client import PartialDownloadError from synapse.api.constants import LoginType from synapse.api.errors import Codes, LoginError, SynapseError from synapse.util import json_decoder if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) class UserInteractiveAuthChecker(ABC): """Abstract base class for an interactive auth checker""" # This should really be an "abstract class property", i.e. it should # be an error to instantiate a subclass that doesn't specify an AUTH_TYPE. # But calling this a `ClassVar` is simpler than a decorator stack of # @property @abstractmethod and @classmethod (if that's even the right order). AUTH_TYPE: ClassVar[str] def __init__(self, hs: "HomeServer"): # noqa: B027 pass @abstractmethod def is_enabled(self) -> bool: """Check if the configuration of the homeserver allows this checker to work Returns: True if this login type is enabled. """ raise NotImplementedError() @abstractmethod async def check_auth(self, authdict: dict, clientip: str) -> Any: """Given the authentication dict from the client, attempt to check this step Args: authdict: authentication dictionary from the client clientip: The IP address of the client. Raises: LoginError if authentication failed. Returns: The result of authentication (to pass back to the client?) """ raise NotImplementedError() class DummyAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.DUMMY def is_enabled(self) -> bool: return True async def check_auth(self, authdict: dict, clientip: str) -> Any: return True class TermsAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.TERMS def is_enabled(self) -> bool: return True async def check_auth(self, authdict: dict, clientip: str) -> Any: return True class RecaptchaAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.RECAPTCHA def __init__(self, hs: "HomeServer"): super().__init__(hs) self._enabled = bool(hs.config.captcha.recaptcha_private_key) self._http_client = hs.get_proxied_http_client() self._url = hs.config.captcha.recaptcha_siteverify_api self._secret = hs.config.captcha.recaptcha_private_key def is_enabled(self) -> bool: return self._enabled async def check_auth(self, authdict: dict, clientip: str) -> Any: try: user_response = authdict["response"] except KeyError: # Client tried to provide captcha but didn't give the parameter: # bad request. raise LoginError( 400, "Captcha response is required", errcode=Codes.CAPTCHA_NEEDED ) logger.info( "Submitting recaptcha response %s with remoteip %s", user_response, clientip ) # TODO: get this from the homeserver rather than creating a new one for # each request try: assert self._secret is not None resp_body = await self._http_client.post_urlencoded_get_json( self._url, args={ "secret": self._secret, "response": user_response, "remoteip": clientip, }, ) except PartialDownloadError as pde: # Twisted is silly data = pde.response # For mypy's benefit. A general Error.response is Optional[bytes], but # a PartialDownloadError.response should be bytes AFAICS. assert data is not None resp_body = json_decoder.decode(data.decode("utf-8")) if "success" in resp_body: # Note that we do NOT check the hostname here: we explicitly # intend the CAPTCHA to be presented by whatever client the # user is using, we just care that they have completed a CAPTCHA. logger.info( "%s reCAPTCHA from hostname %s", "Successful" if resp_body["success"] else "Failed", resp_body.get("hostname"), ) if resp_body["success"]: return True raise LoginError( 401, "Captcha authentication failed", errcode=Codes.UNAUTHORIZED ) class _BaseThreepidAuthChecker: def __init__(self, hs: "HomeServer"): self.hs = hs self.store = hs.get_datastores().main async def _check_threepid(self, medium: str, authdict: dict) -> dict: if "threepid_creds" not in authdict: raise LoginError(400, "Missing threepid_creds", Codes.MISSING_PARAM) threepid_creds = authdict["threepid_creds"] identity_handler = self.hs.get_identity_handler() logger.info("Getting validated threepid. threepidcreds: %r", (threepid_creds,)) # msisdns are currently always verified via the IS if medium == "msisdn": if not self.hs.config.registration.account_threepid_delegate_msisdn: raise SynapseError( 400, "Phone number verification is not enabled on this homeserver" ) threepid = await identity_handler.threepid_from_creds( self.hs.config.registration.account_threepid_delegate_msisdn, threepid_creds, ) elif medium == "email": if self.hs.config.email.can_verify_email: threepid = None row = await self.store.get_threepid_validation_session( medium, threepid_creds["client_secret"], sid=threepid_creds["sid"], validated=True, ) if row: threepid = { "medium": row.medium, "address": row.address, "validated_at": row.validated_at, } # Valid threepid returned, delete from the db await self.store.delete_threepid_session(threepid_creds["sid"]) else: raise SynapseError( 400, "Email address verification is not enabled on this homeserver" ) else: # this can't happen! raise AssertionError("Unrecognized threepid medium: %s" % (medium,)) if not threepid: raise LoginError( 401, "Unable to get validated threepid", errcode=Codes.UNAUTHORIZED ) if threepid["medium"] != medium: raise LoginError( 401, "Expecting threepid of type '%s', got '%s'" % (medium, threepid["medium"]), errcode=Codes.UNAUTHORIZED, ) threepid["threepid_creds"] = authdict["threepid_creds"] return threepid class EmailIdentityAuthChecker(UserInteractiveAuthChecker, _BaseThreepidAuthChecker): AUTH_TYPE = LoginType.EMAIL_IDENTITY def __init__(self, hs: "HomeServer"): UserInteractiveAuthChecker.__init__(self, hs) _BaseThreepidAuthChecker.__init__(self, hs) def is_enabled(self) -> bool: return self.hs.config.email.can_verify_email async def check_auth(self, authdict: dict, clientip: str) -> Any: return await self._check_threepid("email", authdict) class MsisdnAuthChecker(UserInteractiveAuthChecker, _BaseThreepidAuthChecker): AUTH_TYPE = LoginType.MSISDN def __init__(self, hs: "HomeServer"): UserInteractiveAuthChecker.__init__(self, hs) _BaseThreepidAuthChecker.__init__(self, hs) def is_enabled(self) -> bool: return bool(self.hs.config.registration.account_threepid_delegate_msisdn) async def check_auth(self, authdict: dict, clientip: str) -> Any: return await self._check_threepid("msisdn", authdict) class RegistrationTokenAuthChecker(UserInteractiveAuthChecker): AUTH_TYPE = LoginType.REGISTRATION_TOKEN def __init__(self, hs: "HomeServer"): super().__init__(hs) self.hs = hs self._enabled = bool( hs.config.registration.registration_requires_token ) or bool(hs.config.registration.enable_registration_token_3pid_bypass) self.store = hs.get_datastores().main def is_enabled(self) -> bool: return self._enabled async def check_auth(self, authdict: dict, clientip: str) -> Any: if "token" not in authdict: raise LoginError(400, "Missing registration token", Codes.MISSING_PARAM) if not isinstance(authdict["token"], str): raise LoginError( 400, "Registration token must be a string", Codes.INVALID_PARAM ) if "session" not in authdict: raise LoginError(400, "Missing UIA session", Codes.MISSING_PARAM) # Get these here to avoid cyclic dependencies from synapse.handlers.ui_auth import UIAuthSessionDataConstants auth_handler = self.hs.get_auth_handler() session = authdict["session"] token = authdict["token"] # If the LoginType.REGISTRATION_TOKEN stage has already been completed, # return early to avoid incrementing `pending` again. stored_token = await auth_handler.get_session_data( session, UIAuthSessionDataConstants.REGISTRATION_TOKEN ) if stored_token: if token != stored_token: raise LoginError( 400, "Registration token has changed", Codes.INVALID_PARAM ) else: return token if await self.store.registration_token_is_valid(token): # Increment pending counter, so that if token has limited uses it # can't be used up by someone else in the meantime. await self.store.set_registration_token_pending(token) # Store the token in the UIA session, so that once registration # is complete `completed` can be incremented. await auth_handler.set_session_data( session, UIAuthSessionDataConstants.REGISTRATION_TOKEN, token, ) # The token will be stored as the result of the authentication stage # in ui_auth_sessions_credentials. This allows the pending counter # for tokens to be decremented when expired sessions are deleted. return token else: raise LoginError( 401, "Invalid registration token", errcode=Codes.UNAUTHORIZED ) INTERACTIVE_AUTH_CHECKERS: Sequence[Type[UserInteractiveAuthChecker]] = [ DummyAuthChecker, TermsAuthChecker, RecaptchaAuthChecker, EmailIdentityAuthChecker, MsisdnAuthChecker, RegistrationTokenAuthChecker, ] """A list of UserInteractiveAuthChecker classes""" synapse-1.100.0/synapse/handlers/user_directory.py000066400000000000000000000762041455622526000222510ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2017 Vector Creations Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from http import HTTPStatus from typing import TYPE_CHECKING, List, Optional, Set, Tuple from twisted.internet.interfaces import IDelayedCall import synapse.metrics from synapse.api.constants import EventTypes, HistoryVisibility, JoinRules, Membership from synapse.api.errors import Codes, SynapseError from synapse.handlers.state_deltas import MatchChange, StateDeltasHandler from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.databases.main.state_deltas import StateDelta from synapse.storage.databases.main.user_directory import SearchResult from synapse.storage.roommember import ProfileInfo from synapse.types import UserID from synapse.util.metrics import Measure from synapse.util.retryutils import NotRetryingDestination from synapse.util.stringutils import non_null_str_or_none if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # Don't refresh a stale user directory entry, using a Federation /profile request, # for 60 seconds. This gives time for other state events to arrive (which will # then be coalesced such that only one /profile request is made). USER_DIRECTORY_STALE_REFRESH_TIME_MS = 60 * 1000 # Maximum number of remote servers that we will attempt to refresh profiles for # in one go. MAX_SERVERS_TO_REFRESH_PROFILES_FOR_IN_ONE_GO = 5 # As long as we have servers to refresh (without backoff), keep adding more # every 15 seconds. INTERVAL_TO_ADD_MORE_SERVERS_TO_REFRESH_PROFILES = 15 def calculate_time_of_next_retry(now_ts: int, retry_count: int) -> int: """ Calculates the time of a next retry given `now_ts` in ms and the number of failures encountered thus far. Currently the sequence goes: 1 min, 5 min, 25 min, 2 hour, 10 hour, 52 hour, 10 day, 7.75 week """ return now_ts + 60_000 * (5 ** min(retry_count, 7)) class UserDirectoryHandler(StateDeltasHandler): """Handles queries and updates for the user_directory. N.B.: ASSUMES IT IS THE ONLY THING THAT MODIFIES THE USER DIRECTORY When a local user searches the user_directory, we report two kinds of users: - users this server can see are joined to a world_readable or publicly joinable room, and - users belonging to a private room shared by that local user. The two cases are tracked separately in the `users_in_public_rooms` and `users_who_share_private_rooms` tables. Both kinds of users have their username and avatar tracked in a `user_directory` table. This handler has three responsibilities: 1. Forwarding requests to `/user_directory/search` to the UserDirectoryStore. 2. Providing hooks for the application to call when local users are added, removed, or have their profile changed. 3. Listening for room state changes that indicate remote users have joined or left a room, or that their profile has changed. """ def __init__(self, hs: "HomeServer"): super().__init__(hs) self.store = hs.get_datastores().main self._storage_controllers = hs.get_storage_controllers() self.server_name = hs.hostname self.clock = hs.get_clock() self.notifier = hs.get_notifier() self.is_mine_id = hs.is_mine_id self.update_user_directory = hs.config.worker.should_update_user_directory self.search_all_users = hs.config.userdirectory.user_directory_search_all_users self.show_locked_users = hs.config.userdirectory.show_locked_users self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self._hs = hs # The current position in the current_state_delta stream self.pos: Optional[int] = None # Guard to ensure we only process deltas one at a time self._is_processing = False # Guard to ensure we only have one process for refreshing remote profiles self._is_refreshing_remote_profiles = False # Handle to cancel the `call_later` of `kick_off_remote_profile_refresh_process` self._refresh_remote_profiles_call_later: Optional[IDelayedCall] = None # Guard to ensure we only have one process for refreshing remote profiles # for the given servers. # Set of server names. self._is_refreshing_remote_profiles_for_servers: Set[str] = set() if self.update_user_directory: self.notifier.add_replication_callback(self.notify_new_event) # We kick this off so that we don't have to wait for a change before # we start populating the user directory self.clock.call_later(0, self.notify_new_event) # Kick off the profile refresh process on startup self._refresh_remote_profiles_call_later = self.clock.call_later( 10, self.kick_off_remote_profile_refresh_process ) async def search_users( self, user_id: str, search_term: str, limit: int ) -> SearchResult: """Searches for users in directory Returns: dict of the form:: { "limited": , # whether there were more results or not "results": [ # Ordered by best match first { "user_id": , "display_name": , "avatar_url": } ] } """ results = await self.store.search_user_dir( user_id, search_term, limit, self.show_locked_users ) # Remove any spammy users from the results. non_spammy_users = [] for user in results["results"]: if not await self._spam_checker_module_callbacks.check_username_for_spam( user ): non_spammy_users.append(user) results["results"] = non_spammy_users return results def notify_new_event(self) -> None: """Called when there may be more deltas to process""" if not self.update_user_directory: return if self._is_processing: return async def process() -> None: try: await self._unsafe_process() finally: self._is_processing = False self._is_processing = True run_as_background_process("user_directory.notify_new_event", process) async def handle_local_profile_change( self, user_id: str, profile: ProfileInfo ) -> None: """Called to update index of our local user profiles when they change irrespective of any rooms the user may be in. """ # FIXME(https://github.com/matrix-org/synapse/issues/3714): We should # probably do this in the same worker as all the other changes. if await self.store.should_include_local_user_in_dir(user_id): await self.store.update_profile_in_user_dir( user_id, profile.display_name, profile.avatar_url ) async def handle_local_user_deactivated(self, user_id: str) -> None: """Called when a user ID is deactivated""" # FIXME(https://github.com/matrix-org/synapse/issues/3714): We should # probably do this in the same worker as all the other changes. await self.store.remove_from_user_dir(user_id) async def _unsafe_process(self) -> None: # If self.pos is None then means we haven't fetched it from DB if self.pos is None: self.pos = await self.store.get_user_directory_stream_pos() # If still None then the initial background update hasn't happened yet. if self.pos is None: return None room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos > room_max_stream_ordering: # apparently, we've processed more events than exist in the database! # this can happen if events are removed with history purge or similar. logger.warning( "Event stream ordering appears to have gone backwards (%i -> %i): " "rewinding user directory processor", self.pos, room_max_stream_ordering, ) self.pos = room_max_stream_ordering # Loop round handling deltas until we're up to date while True: with Measure(self.clock, "user_dir_delta"): room_max_stream_ordering = self.store.get_room_max_stream_ordering() if self.pos == room_max_stream_ordering: return logger.debug( "Processing user stats %s->%s", self.pos, room_max_stream_ordering ) ( max_pos, deltas, ) = await self._storage_controllers.state.get_current_state_deltas( self.pos, room_max_stream_ordering ) logger.debug("Handling %d state deltas", len(deltas)) await self._handle_deltas(deltas) self.pos = max_pos # Expose current event processing position to prometheus synapse.metrics.event_processing_positions.labels("user_dir").set( max_pos ) await self.store.update_user_directory_stream_pos(max_pos) async def _handle_deltas(self, deltas: List[StateDelta]) -> None: """Called with the state deltas to process""" for delta in deltas: logger.debug( "Handling: %r %r, %s", delta.event_type, delta.state_key, delta.event_id ) # For join rule and visibility changes we need to check if the room # may have become public or not and add/remove the users in said room if delta.event_type in ( EventTypes.RoomHistoryVisibility, EventTypes.JoinRules, ): await self._handle_room_publicity_change( delta.room_id, delta.prev_event_id, delta.event_id, delta.event_type ) elif delta.event_type == EventTypes.Member: await self._handle_room_membership_event( delta.room_id, delta.prev_event_id, delta.event_id, delta.state_key, ) else: logger.debug("Ignoring irrelevant type: %r", delta.event_type) async def _handle_room_publicity_change( self, room_id: str, prev_event_id: Optional[str], event_id: Optional[str], typ: str, ) -> None: """Handle a room having potentially changed from/to world_readable/publicly joinable. Args: room_id: The ID of the room which changed. prev_event_id: The previous event before the state change event_id: The new event after the state change typ: Type of the event """ logger.debug("Handling change for %s: %s", typ, room_id) if typ == EventTypes.RoomHistoryVisibility: publicness = await self._get_key_change( prev_event_id, event_id, key_name="history_visibility", public_value=HistoryVisibility.WORLD_READABLE, ) elif typ == EventTypes.JoinRules: publicness = await self._get_key_change( prev_event_id, event_id, key_name="join_rule", public_value=JoinRules.PUBLIC, ) else: raise Exception("Invalid event type") if publicness is MatchChange.no_change: logger.debug("No change") return # There's been a change to or from being world readable. is_public = await self.store.is_room_world_readable_or_publicly_joinable( room_id ) logger.debug("Publicness change: %r, is_public: %r", publicness, is_public) if publicness is MatchChange.now_true and not is_public: # If we became world readable but room isn't currently public then # we ignore the change return elif publicness is MatchChange.now_false and is_public: # If we stopped being world readable but are still public, # ignore the change return users_in_room = await self.store.get_users_in_room(room_id) # Remove every user from the sharing tables for that room. for user_id in users_in_room: await self.store.remove_user_who_share_room(user_id, room_id) # Then, re-add all remote users and some local users to the tables. # NOTE: this is not the most efficient method, as _track_user_joined_room sets # up local_user -> other_user and other_user_whos_local -> local_user, # which when ran over an entire room, will result in the same values # being added multiple times. The batching upserts shouldn't make this # too bad, though. for user_id in users_in_room: if not self.is_mine_id( user_id ) or await self.store.should_include_local_user_in_dir(user_id): await self._track_user_joined_room(room_id, user_id) async def _handle_room_membership_event( self, room_id: str, prev_event_id: Optional[str], event_id: Optional[str], state_key: str, ) -> None: """Process a single room membershp event. We have to do two things: 1. Update the room-sharing tables. This applies to remote users and non-excluded local users. 2. Update the user_directory and user_directory_search tables. This applies to remote users only, because we only become aware of the (and any profile changes) by listening to these events. The rest of the application knows exactly when local users are created or their profile changed---it will directly call methods on this class. """ joined = await self._get_key_change( prev_event_id, event_id, key_name="membership", public_value=Membership.JOIN, ) # Both cases ignore excluded local users, so start by discarding them. is_remote = not self.is_mine_id(state_key) if not is_remote and not await self.store.should_include_local_user_in_dir( state_key ): return if joined is MatchChange.now_false: # Need to check if the server left the room entirely, if so # we might need to remove all the users in that room is_in_room = await self.store.is_host_joined(room_id, self.server_name) if not is_in_room: logger.debug("Server left room: %r", room_id) # Fetch all the users that we marked as being in user # directory due to being in the room and then check if # need to remove those users or not user_ids = await self.store.get_users_in_dir_due_to_room(room_id) for user_id in user_ids: await self._handle_remove_user(room_id, user_id) else: logger.debug("Server is still in room: %r", room_id) await self._handle_remove_user(room_id, state_key) elif joined is MatchChange.no_change: # Handle any profile changes for remote users. # (For local users the rest of the application calls # `handle_local_profile_change`.) # Only process if there is an event_id. if is_remote and event_id is not None: await self._handle_possible_remote_profile_change( state_key, room_id, prev_event_id, event_id ) elif joined is MatchChange.now_true: # The user joined # This may be the first time we've seen a remote user. If # so, ensure we have a directory entry for them. (For local users, # the rest of the application calls `handle_local_profile_change`.) # Only process if there is an event_id. if is_remote and event_id is not None: await self._handle_possible_remote_profile_change( state_key, room_id, None, event_id ) await self._track_user_joined_room(room_id, state_key) async def _track_user_joined_room(self, room_id: str, joining_user_id: str) -> None: """Someone's just joined a room. Update `users_in_public_rooms` or `users_who_share_private_rooms` as appropriate. The caller is responsible for ensuring that the given user should be included in the user directory. """ is_public = await self.store.is_room_world_readable_or_publicly_joinable( room_id ) if is_public: await self.store.add_users_in_public_rooms(room_id, (joining_user_id,)) else: users_in_room = await self.store.get_users_in_room(room_id) other_users_in_room = [ other for other in users_in_room if other != joining_user_id and ( # We can't apply any special rules to remote users so # they're always included not self.is_mine_id(other) # Check the special rules whether the local user should be # included in the user directory or await self.store.should_include_local_user_in_dir(other) ) ] updates_to_users_who_share_rooms: Set[Tuple[str, str]] = set() # First, if the joining user is our local user then we need an # update for every other user in the room. if self.is_mine_id(joining_user_id): for other_user_id in other_users_in_room: updates_to_users_who_share_rooms.add( (joining_user_id, other_user_id) ) # Next, we need an update for every other local user in the room # that they now share a room with the joining user. for other_user_id in other_users_in_room: if self.is_mine_id(other_user_id): updates_to_users_who_share_rooms.add( (other_user_id, joining_user_id) ) if updates_to_users_who_share_rooms: await self.store.add_users_who_share_private_room( room_id, updates_to_users_who_share_rooms ) async def _handle_remove_user(self, room_id: str, user_id: str) -> None: """Called when when someone leaves a room. The user may be local or remote. (If the person who left was the last local user in this room, the server is no longer in the room. We call this function to forget that the remaining remote users are in the room, even though they haven't left. So the name is a little misleading!) Args: room_id: The room ID that user left or stopped being public that user_id """ logger.debug("Removing user %r from room %r", user_id, room_id) # Remove user from sharing tables await self.store.remove_user_who_share_room(user_id, room_id) # Additionally, if they're a remote user and we're no longer joined # to any rooms they're in, remove them from the user directory. if not self.is_mine_id(user_id): rooms_user_is_in = await self.store.get_user_dir_rooms_user_is_in(user_id) if len(rooms_user_is_in) == 0: logger.debug("Removing user %r from directory", user_id) await self.store.remove_from_user_dir(user_id) async def _handle_possible_remote_profile_change( self, user_id: str, room_id: str, prev_event_id: Optional[str], event_id: str, ) -> None: """Check member event changes for any profile changes and update the database if there are. This is intended for remote users only. The caller is responsible for checking that the given user is remote. """ if not prev_event_id: # If we don't have an older event to fall back on, just fetch the same # event itself. prev_event_id = event_id prev_event = await self.store.get_event(prev_event_id, allow_none=True) event = await self.store.get_event(event_id, allow_none=True) if not prev_event or not event: return if event.membership != Membership.JOIN: return is_public = await self.store.is_room_world_readable_or_publicly_joinable( room_id ) if not is_public: # Don't collect user profiles from private rooms as they are not guaranteed # to be the same as the user's global profile. now_ts = self.clock.time_msec() await self.store.set_remote_user_profile_in_user_dir_stale( user_id, next_try_at_ms=now_ts + USER_DIRECTORY_STALE_REFRESH_TIME_MS, retry_counter=0, ) # Schedule a wake-up to refresh the user directory for this server. # We intentionally wake up this server directly because we don't want # other servers ahead of it in the queue to get in the way of updating # the profile if the server only just sent us an event. self.clock.call_later( USER_DIRECTORY_STALE_REFRESH_TIME_MS // 1000 + 1, self.kick_off_remote_profile_refresh_process_for_remote_server, UserID.from_string(user_id).domain, ) # Schedule a wake-up to handle any backoffs that may occur in the future. self.clock.call_later( 2 * USER_DIRECTORY_STALE_REFRESH_TIME_MS // 1000 + 1, self.kick_off_remote_profile_refresh_process, ) return prev_name = prev_event.content.get("displayname") new_name = event.content.get("displayname") # If the new name is an unexpected form, replace with None. if not isinstance(new_name, str): new_name = None prev_avatar = prev_event.content.get("avatar_url") new_avatar = event.content.get("avatar_url") # If the new avatar is an unexpected form, replace with None. if not isinstance(new_avatar, str): new_avatar = None if ( prev_name != new_name or prev_avatar != new_avatar or prev_event_id == event_id ): # Only update if something has changed, or we didn't have a previous event # in the first place. await self.store.update_profile_in_user_dir(user_id, new_name, new_avatar) def kick_off_remote_profile_refresh_process(self) -> None: """Called when there may be remote users with stale profiles to be refreshed""" if not self.update_user_directory: return if self._is_refreshing_remote_profiles: return if self._refresh_remote_profiles_call_later: if self._refresh_remote_profiles_call_later.active(): self._refresh_remote_profiles_call_later.cancel() self._refresh_remote_profiles_call_later = None async def process() -> None: try: await self._unsafe_refresh_remote_profiles() finally: self._is_refreshing_remote_profiles = False self._is_refreshing_remote_profiles = True run_as_background_process("user_directory.refresh_remote_profiles", process) async def _unsafe_refresh_remote_profiles(self) -> None: limit = MAX_SERVERS_TO_REFRESH_PROFILES_FOR_IN_ONE_GO - len( self._is_refreshing_remote_profiles_for_servers ) if limit <= 0: # nothing to do: already refreshing the maximum number of servers # at once. # Come back later. self._refresh_remote_profiles_call_later = self.clock.call_later( INTERVAL_TO_ADD_MORE_SERVERS_TO_REFRESH_PROFILES, self.kick_off_remote_profile_refresh_process, ) return servers_to_refresh = ( await self.store.get_remote_servers_with_profiles_to_refresh( now_ts=self.clock.time_msec(), limit=limit ) ) if not servers_to_refresh: # Do we have any backing-off servers that we should try again # for eventually? # By setting `now` is a point in the far future, we can ask for # which server/user is next to be refreshed, even though it is # not actually refreshable *now*. end_of_time = 1 << 62 backing_off_servers = ( await self.store.get_remote_servers_with_profiles_to_refresh( now_ts=end_of_time, limit=1 ) ) if backing_off_servers: # Find out when the next user is refreshable and schedule a # refresh then. backing_off_server_name = backing_off_servers[0] users = await self.store.get_remote_users_to_refresh_on_server( backing_off_server_name, now_ts=end_of_time, limit=1 ) if not users: return _, _, next_try_at_ts = users[0] self._refresh_remote_profiles_call_later = self.clock.call_later( ((next_try_at_ts - self.clock.time_msec()) // 1000) + 2, self.kick_off_remote_profile_refresh_process, ) return for server_to_refresh in servers_to_refresh: self.kick_off_remote_profile_refresh_process_for_remote_server( server_to_refresh ) self._refresh_remote_profiles_call_later = self.clock.call_later( INTERVAL_TO_ADD_MORE_SERVERS_TO_REFRESH_PROFILES, self.kick_off_remote_profile_refresh_process, ) def kick_off_remote_profile_refresh_process_for_remote_server( self, server_name: str ) -> None: """Called when there may be remote users with stale profiles to be refreshed on the given server.""" if not self.update_user_directory: return if server_name in self._is_refreshing_remote_profiles_for_servers: return async def process() -> None: try: await self._unsafe_refresh_remote_profiles_for_remote_server( server_name ) finally: self._is_refreshing_remote_profiles_for_servers.remove(server_name) self._is_refreshing_remote_profiles_for_servers.add(server_name) run_as_background_process( "user_directory.refresh_remote_profiles_for_remote_server", process ) async def _unsafe_refresh_remote_profiles_for_remote_server( self, server_name: str ) -> None: logger.info("Refreshing profiles in user directory for %s", server_name) while True: # Get a handful of users to process. next_batch = await self.store.get_remote_users_to_refresh_on_server( server_name, now_ts=self.clock.time_msec(), limit=10 ) if not next_batch: # Finished for now return for user_id, retry_counter, _ in next_batch: # Request the profile of the user. try: profile = await self._hs.get_profile_handler().get_profile( user_id, ignore_backoff=False ) except NotRetryingDestination as e: logger.info( "Failed to refresh profile for %r because the destination is undergoing backoff", user_id, ) # As a special-case, we back off until the destination is no longer # backed off from. await self.store.set_remote_user_profile_in_user_dir_stale( user_id, e.retry_last_ts + e.retry_interval, retry_counter=retry_counter + 1, ) continue except SynapseError as e: if e.code == HTTPStatus.NOT_FOUND and e.errcode == Codes.NOT_FOUND: # The profile doesn't exist. # TODO Does this mean we should clear it from our user # directory? await self.store.clear_remote_user_profile_in_user_dir_stale( user_id ) logger.warning( "Refresh of remote profile %r: not found (%r)", user_id, e.msg, ) continue logger.warning( "Failed to refresh profile for %r because %r", user_id, e ) await self.store.set_remote_user_profile_in_user_dir_stale( user_id, calculate_time_of_next_retry( self.clock.time_msec(), retry_counter + 1 ), retry_counter=retry_counter + 1, ) continue except Exception: logger.error( "Failed to refresh profile for %r due to unhandled exception", user_id, exc_info=True, ) await self.store.set_remote_user_profile_in_user_dir_stale( user_id, calculate_time_of_next_retry( self.clock.time_msec(), retry_counter + 1 ), retry_counter=retry_counter + 1, ) continue await self.store.update_profile_in_user_dir( user_id, display_name=non_null_str_or_none(profile.get("displayname")), avatar_url=non_null_str_or_none(profile.get("avatar_url")), ) synapse-1.100.0/synapse/handlers/worker_lock.py000066400000000000000000000256741455622526000215350ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import random from types import TracebackType from typing import ( TYPE_CHECKING, AsyncContextManager, Collection, Dict, Optional, Tuple, Type, Union, ) from weakref import WeakSet import attr from twisted.internet import defer from twisted.internet.interfaces import IReactorTime from synapse.logging.context import PreserveLoggingContext from synapse.logging.opentracing import start_active_span from synapse.metrics.background_process_metrics import wrap_as_background_process from synapse.storage.databases.main.lock import Lock, LockStore from synapse.util.async_helpers import timeout_deferred if TYPE_CHECKING: from synapse.logging.opentracing import opentracing from synapse.server import HomeServer # This lock is used to avoid creating an event while we are purging the room. # We take a read lock when creating an event, and a write one when purging a room. # This is because it is fine to create several events concurrently, since referenced events # will not disappear under our feet as long as we don't delete the room. NEW_EVENT_DURING_PURGE_LOCK_NAME = "new_event_during_purge_lock" class WorkerLocksHandler: """A class for waiting on taking out locks, rather than using the storage functions directly (which don't support awaiting). """ def __init__(self, hs: "HomeServer") -> None: self._reactor = hs.get_reactor() self._store = hs.get_datastores().main self._clock = hs.get_clock() self._notifier = hs.get_notifier() self._instance_name = hs.get_instance_name() # Map from lock name/key to set of `WaitingLock` that are active for # that lock. self._locks: Dict[ Tuple[str, str], WeakSet[Union[WaitingLock, WaitingMultiLock]] ] = {} self._clock.looping_call(self._cleanup_locks, 30_000) self._notifier.add_lock_released_callback(self._on_lock_released) def acquire_lock(self, lock_name: str, lock_key: str) -> "WaitingLock": """Acquire a standard lock, returns a context manager that will block until the lock is acquired. Note: Care must be taken to avoid deadlocks. In particular, this function does *not* timeout. Usage: async with handler.acquire_lock(name, key): # Do work while holding the lock... """ lock = WaitingLock( reactor=self._reactor, store=self._store, handler=self, lock_name=lock_name, lock_key=lock_key, write=None, ) self._locks.setdefault((lock_name, lock_key), WeakSet()).add(lock) return lock def acquire_read_write_lock( self, lock_name: str, lock_key: str, *, write: bool, ) -> "WaitingLock": """Acquire a read/write lock, returns a context manager that will block until the lock is acquired. Note: Care must be taken to avoid deadlocks. In particular, this function does *not* timeout. Usage: async with handler.acquire_read_write_lock(name, key, write=True): # Do work while holding the lock... """ lock = WaitingLock( reactor=self._reactor, store=self._store, handler=self, lock_name=lock_name, lock_key=lock_key, write=write, ) self._locks.setdefault((lock_name, lock_key), WeakSet()).add(lock) return lock def acquire_multi_read_write_lock( self, lock_names: Collection[Tuple[str, str]], *, write: bool, ) -> "WaitingMultiLock": """Acquires multi read/write locks at once, returns a context manager that will block until all the locks are acquired. This will try and acquire all locks at once, and will never hold on to a subset of the locks. (This avoids accidentally creating deadlocks). Note: Care must be taken to avoid deadlocks. In particular, this function does *not* timeout. """ lock = WaitingMultiLock( lock_names=lock_names, write=write, reactor=self._reactor, store=self._store, handler=self, ) for lock_name, lock_key in lock_names: self._locks.setdefault((lock_name, lock_key), WeakSet()).add(lock) return lock def notify_lock_released(self, lock_name: str, lock_key: str) -> None: """Notify that a lock has been released. Pokes both the notifier and replication. """ self._notifier.notify_lock_released(self._instance_name, lock_name, lock_key) def _on_lock_released( self, instance_name: str, lock_name: str, lock_key: str ) -> None: """Called when a lock has been released. Wakes up any locks that might be waiting on this. """ locks = self._locks.get((lock_name, lock_key)) if not locks: return def _wake_deferred(deferred: defer.Deferred) -> None: if not deferred.called: deferred.callback(None) for lock in locks: self._clock.call_later(0, _wake_deferred, lock.deferred) @wrap_as_background_process("_cleanup_locks") async def _cleanup_locks(self) -> None: """Periodically cleans out stale entries in the locks map""" self._locks = {key: value for key, value in self._locks.items() if value} @attr.s(auto_attribs=True, eq=False) class WaitingLock: reactor: IReactorTime store: LockStore handler: WorkerLocksHandler lock_name: str lock_key: str write: Optional[bool] deferred: "defer.Deferred[None]" = attr.Factory(defer.Deferred) _inner_lock: Optional[Lock] = None _retry_interval: float = 0.1 _lock_span: "opentracing.Scope" = attr.Factory( lambda: start_active_span("WaitingLock.lock") ) async def __aenter__(self) -> None: self._lock_span.__enter__() with start_active_span("WaitingLock.waiting_for_lock"): while self._inner_lock is None: self.deferred = defer.Deferred() if self.write is not None: lock = await self.store.try_acquire_read_write_lock( self.lock_name, self.lock_key, write=self.write ) else: lock = await self.store.try_acquire_lock( self.lock_name, self.lock_key ) if lock: self._inner_lock = lock break try: # Wait until the we get notified the lock might have been # released (by the deferred being resolved). We also # periodically wake up in case the lock was released but we # weren't notified. with PreserveLoggingContext(): await timeout_deferred( deferred=self.deferred, timeout=self._get_next_retry_interval(), reactor=self.reactor, ) except Exception: pass return await self._inner_lock.__aenter__() async def __aexit__( self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], tb: Optional[TracebackType], ) -> Optional[bool]: assert self._inner_lock self.handler.notify_lock_released(self.lock_name, self.lock_key) try: r = await self._inner_lock.__aexit__(exc_type, exc, tb) finally: self._lock_span.__exit__(exc_type, exc, tb) return r def _get_next_retry_interval(self) -> float: next = self._retry_interval self._retry_interval = max(5, next * 2) return next * random.uniform(0.9, 1.1) @attr.s(auto_attribs=True, eq=False) class WaitingMultiLock: lock_names: Collection[Tuple[str, str]] write: bool reactor: IReactorTime store: LockStore handler: WorkerLocksHandler deferred: "defer.Deferred[None]" = attr.Factory(defer.Deferred) _inner_lock_cm: Optional[AsyncContextManager] = None _retry_interval: float = 0.1 _lock_span: "opentracing.Scope" = attr.Factory( lambda: start_active_span("WaitingLock.lock") ) async def __aenter__(self) -> None: self._lock_span.__enter__() with start_active_span("WaitingLock.waiting_for_lock"): while self._inner_lock_cm is None: self.deferred = defer.Deferred() lock_cm = await self.store.try_acquire_multi_read_write_lock( self.lock_names, write=self.write ) if lock_cm: self._inner_lock_cm = lock_cm break try: # Wait until the we get notified the lock might have been # released (by the deferred being resolved). We also # periodically wake up in case the lock was released but we # weren't notified. with PreserveLoggingContext(): await timeout_deferred( deferred=self.deferred, timeout=self._get_next_retry_interval(), reactor=self.reactor, ) except Exception: pass assert self._inner_lock_cm await self._inner_lock_cm.__aenter__() return async def __aexit__( self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], tb: Optional[TracebackType], ) -> Optional[bool]: assert self._inner_lock_cm for lock_name, lock_key in self.lock_names: self.handler.notify_lock_released(lock_name, lock_key) try: r = await self._inner_lock_cm.__aexit__(exc_type, exc, tb) finally: self._lock_span.__exit__(exc_type, exc, tb) return r def _get_next_retry_interval(self) -> float: next = self._retry_interval self._retry_interval = max(5, next * 2) return next * random.uniform(0.9, 1.1) synapse-1.100.0/synapse/http/000077500000000000000000000000001455622526000160035ustar00rootroot00000000000000synapse-1.100.0/synapse/http/__init__.py000066400000000000000000000064271455622526000201250ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import re from typing import Union from twisted.internet import address, task from twisted.web.client import FileBodyProducer from twisted.web.iweb import IRequest from synapse.api.errors import SynapseError class RequestTimedOutError(SynapseError): """Exception representing timeout of an outbound request""" def __init__(self, msg: str): super().__init__(504, msg) ACCESS_TOKEN_RE = re.compile(r"(\?.*access(_|%5[Ff])token=)[^&]*(.*)$") CLIENT_SECRET_RE = re.compile(r"(\?.*client(_|%5[Ff])secret=)[^&]*(.*)$") def redact_uri(uri: str) -> str: """Strips sensitive information from the uri replaces with """ uri = ACCESS_TOKEN_RE.sub(r"\1\3", uri) return CLIENT_SECRET_RE.sub(r"\1\3", uri) class QuieterFileBodyProducer(FileBodyProducer): """Wrapper for FileBodyProducer that avoids CRITICAL errors when the connection drops. Workaround for https://github.com/matrix-org/synapse/issues/4003 / https://twistedmatrix.com/trac/ticket/6528 """ def stopProducing(self) -> None: try: FileBodyProducer.stopProducing(self) except task.TaskStopped: pass def get_request_uri(request: IRequest) -> bytes: """Return the full URI that was requested by the client""" return b"%s://%s%s" % ( b"https" if request.isSecure() else b"http", _get_requested_host(request), # despite its name, "request.uri" is only the path and query-string. request.uri, ) def _get_requested_host(request: IRequest) -> bytes: hostname = request.getHeader(b"host") if hostname: return hostname # no Host header, use the address/port that the request arrived on host: Union[address.IPv4Address, address.IPv6Address] = request.getHost() hostname = host.host.encode("ascii") if request.isSecure() and host.port == 443: # default port for https return hostname if not request.isSecure() and host.port == 80: # default port for http return hostname return b"%s:%i" % ( hostname, host.port, ) def get_request_user_agent(request: IRequest, default: str = "") -> str: """Return the last User-Agent header, or the given default.""" # There could be raw utf-8 bytes in the User-Agent header. # N.B. if you don't do this, the logger explodes cryptically # with maximum recursion trying to log errors about # the charset problem. # c.f. https://github.com/matrix-org/synapse/issues/3471 h = request.getHeader(b"User-Agent") return h.decode("ascii", "replace") if h else default synapse-1.100.0/synapse/http/additional_resource.py000066400000000000000000000040541455622526000223770ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import TYPE_CHECKING, Any, Awaitable, Callable, Optional, Tuple from twisted.web.server import Request from synapse.http.server import DirectServeJsonResource if TYPE_CHECKING: from synapse.server import HomeServer class AdditionalResource(DirectServeJsonResource): """Resource wrapper for additional_resources If the user has configured additional_resources, we need to wrap the handler class with a Resource so that we can map it into the resource tree. This class is also where we wrap the request handler with logging, metrics, and exception handling. """ def __init__( self, hs: "HomeServer", handler: Callable[[Request], Awaitable[Optional[Tuple[int, Any]]]], ): """Initialise AdditionalResource The ``handler`` should return a deferred which completes when it has done handling the request. It should write a response with ``request.write()``, and call ``request.finish()``. Args: hs: homeserver handler: function to be called to handle the request. """ super().__init__() self._handler = handler async def _async_render(self, request: Request) -> Optional[Tuple[int, Any]]: # Cheekily pass the result straight through, so we don't need to worry # if its an awaitable or not. return await self._handler(request) synapse-1.100.0/synapse/http/client.py000066400000000000000000001170131455622526000176360ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import urllib.parse from http import HTTPStatus from io import BytesIO from typing import ( TYPE_CHECKING, Any, BinaryIO, Callable, Dict, List, Mapping, Optional, Tuple, Union, ) import treq from canonicaljson import encode_canonical_json from netaddr import AddrFormatError, IPAddress, IPSet from prometheus_client import Counter from typing_extensions import Protocol from zope.interface import implementer, provider from OpenSSL import SSL from OpenSSL.SSL import VERIFY_NONE from twisted.internet import defer, error as twisted_error, protocol, ssl from twisted.internet.address import IPv4Address, IPv6Address from twisted.internet.interfaces import ( IAddress, IDelayedCall, IHostResolution, IOpenSSLContextFactory, IReactorCore, IReactorPluggableNameResolver, IReactorTime, IResolutionReceiver, ITCPTransport, ) from twisted.internet.protocol import connectionDone from twisted.internet.task import Cooperator from twisted.python.failure import Failure from twisted.web._newclient import ResponseDone from twisted.web.client import ( Agent, HTTPConnectionPool, ResponseNeverReceived, readBody, ) from twisted.web.http import PotentialDataLoss from twisted.web.http_headers import Headers from twisted.web.iweb import ( UNKNOWN_LENGTH, IAgent, IBodyProducer, IPolicyForHTTPS, IResponse, ) from synapse.api.errors import Codes, HttpResponseException, SynapseError from synapse.http import QuieterFileBodyProducer, RequestTimedOutError, redact_uri from synapse.http.proxyagent import ProxyAgent from synapse.http.replicationagent import ReplicationAgent from synapse.http.types import QueryParams from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.logging.opentracing import set_tag, start_active_span, tags from synapse.types import ISynapseReactor, StrSequence from synapse.util import json_decoder from synapse.util.async_helpers import timeout_deferred if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) outgoing_requests_counter = Counter("synapse_http_client_requests", "", ["method"]) incoming_responses_counter = Counter( "synapse_http_client_responses", "", ["method", "code"] ) # the type of the headers map, to be passed to the t.w.h.Headers. # # The actual type accepted by Twisted is # Mapping[Union[str, bytes], Sequence[Union[str, bytes]] , # allowing us to mix and match str and bytes freely. However: any str is also a # Sequence[str]; passing a header string value which is a # standalone str is interpreted as a sequence of 1-codepoint strings. This is a disastrous footgun. # We use a narrower value type (RawHeaderValue) to avoid this footgun. # # We also simplify the keys to be either all str or all bytes. This helps because # Dict[K, V] is invariant in K (and indeed V). RawHeaders = Union[Mapping[str, "RawHeaderValue"], Mapping[bytes, "RawHeaderValue"]] # the value actually has to be a List, but List is invariant so we can't specify that # the entries can either be Lists or bytes. RawHeaderValue = Union[ StrSequence, List[bytes], List[Union[str, bytes]], Tuple[bytes, ...], Tuple[Union[str, bytes], ...], ] def _is_ip_blocked( ip_address: IPAddress, allowlist: Optional[IPSet], blocklist: IPSet ) -> bool: """ Compares an IP address to allowed and disallowed IP sets. Args: ip_address: The IP address to check allowlist: Allowed IP addresses. blocklist: Disallowed IP addresses. Returns: True if the IP address is in the blocklist and not in the allowlist. """ if ip_address in blocklist: if allowlist is None or ip_address not in allowlist: return True return False _EPSILON = 0.00000001 def _make_scheduler( reactor: IReactorTime, ) -> Callable[[Callable[[], object]], IDelayedCall]: """Makes a schedular suitable for a Cooperator using the given reactor. (This is effectively just a copy from `twisted.internet.task`) """ def _scheduler(x: Callable[[], object]) -> IDelayedCall: return reactor.callLater(_EPSILON, x) return _scheduler class _IPBlockingResolver: """ A proxy for reactor.nameResolver which only produces non-blocklisted IP addresses, preventing DNS rebinding attacks. """ def __init__( self, reactor: IReactorPluggableNameResolver, ip_allowlist: Optional[IPSet], ip_blocklist: IPSet, ): """ Args: reactor: The twisted reactor. ip_allowlist: IP addresses to allow. ip_blocklist: IP addresses to disallow. """ self._reactor = reactor self._ip_allowlist = ip_allowlist self._ip_blocklist = ip_blocklist def resolveHostName( self, recv: IResolutionReceiver, hostname: str, portNumber: int = 0 ) -> IResolutionReceiver: addresses: List[IAddress] = [] def _callback() -> None: has_bad_ip = False for address in addresses: # We only expect IPv4 and IPv6 addresses since only A/AAAA lookups # should go through this path. if not isinstance(address, (IPv4Address, IPv6Address)): continue ip_address = IPAddress(address.host) if _is_ip_blocked(ip_address, self._ip_allowlist, self._ip_blocklist): logger.info( "Blocked %s from DNS resolution to %s" % (ip_address, hostname) ) has_bad_ip = True # if we have a blocked IP, we'd like to raise an error to block the # request, but all we can really do from here is claim that there were no # valid results. if not has_bad_ip: for address in addresses: recv.addressResolved(address) recv.resolutionComplete() @provider(IResolutionReceiver) class EndpointReceiver: @staticmethod def resolutionBegan(resolutionInProgress: IHostResolution) -> None: recv.resolutionBegan(resolutionInProgress) @staticmethod def addressResolved(address: IAddress) -> None: addresses.append(address) @staticmethod def resolutionComplete() -> None: _callback() self._reactor.nameResolver.resolveHostName( EndpointReceiver, hostname, portNumber=portNumber ) return recv # ISynapseReactor implies IReactorCore, but explicitly marking it this as an implementer # of IReactorCore seems to keep mypy-zope happier. @implementer(IReactorCore, ISynapseReactor) class BlocklistingReactorWrapper: """ A Reactor wrapper which will prevent DNS resolution to blocked IP addresses, to prevent DNS rebinding. """ def __init__( self, reactor: IReactorPluggableNameResolver, ip_allowlist: Optional[IPSet], ip_blocklist: IPSet, ): self._reactor = reactor # We need to use a DNS resolver which filters out blocked IP # addresses, to prevent DNS rebinding. self._nameResolver = _IPBlockingResolver( self._reactor, ip_allowlist, ip_blocklist ) def __getattr__(self, attr: str) -> Any: # Passthrough to the real reactor except for the DNS resolver. if attr == "nameResolver": return self._nameResolver else: return getattr(self._reactor, attr) class BlocklistingAgentWrapper(Agent): """ An Agent wrapper which will prevent access to IP addresses being accessed directly (without an IP address lookup). """ def __init__( self, agent: IAgent, ip_blocklist: IPSet, ip_allowlist: Optional[IPSet] = None, ): """ Args: agent: The Agent to wrap. ip_allowlist: IP addresses to allow. ip_blocklist: IP addresses to disallow. """ self._agent = agent self._ip_allowlist = ip_allowlist self._ip_blocklist = ip_blocklist def request( self, method: bytes, uri: bytes, headers: Optional[Headers] = None, bodyProducer: Optional[IBodyProducer] = None, ) -> defer.Deferred: h = urllib.parse.urlparse(uri.decode("ascii")) try: # h.hostname is Optional[str], None raises an AddrFormatError, so # this is safe even though IPAddress requires a str. ip_address = IPAddress(h.hostname) # type: ignore[arg-type] except AddrFormatError: # Not an IP pass else: if _is_ip_blocked(ip_address, self._ip_allowlist, self._ip_blocklist): logger.info("Blocking access to %s" % (ip_address,)) e = SynapseError(HTTPStatus.FORBIDDEN, "IP address blocked") return defer.fail(Failure(e)) return self._agent.request( method, uri, headers=headers, bodyProducer=bodyProducer ) class BaseHttpClient: """ A simple, no-frills HTTP client with methods that wrap up common ways of using HTTP in Matrix. Does not come with a default Agent, subclasses will need to define their own. Args: hs: The HomeServer instance to pass in treq_args: Extra keyword arguments to be given to treq.request. """ agent: IAgent def __init__( self, hs: "HomeServer", treq_args: Optional[Dict[str, Any]] = None, ): self.hs = hs self.reactor = hs.get_reactor() self._extra_treq_args = treq_args or {} self.clock = hs.get_clock() user_agent = hs.version_string if hs.config.server.user_agent_suffix: user_agent = "%s %s" % ( user_agent, hs.config.server.user_agent_suffix, ) self.user_agent = user_agent.encode("ascii") # We use this for our body producers to ensure that they use the correct # reactor. self._cooperator = Cooperator(scheduler=_make_scheduler(hs.get_reactor())) async def request( self, method: str, uri: str, data: Optional[bytes] = None, headers: Optional[Headers] = None, ) -> IResponse: """ Args: method: HTTP method to use. uri: URI to query. data: Data to send in the request body, if applicable. headers: Request headers. Returns: Response object, once the headers have been read. Raises: RequestTimedOutError if the request times out before the headers are read """ outgoing_requests_counter.labels(method).inc() # log request but strip `access_token` (AS requests for example include this) logger.debug("Sending request %s %s", method, redact_uri(uri)) with start_active_span( "outgoing-client-request", tags={ tags.SPAN_KIND: tags.SPAN_KIND_RPC_CLIENT, tags.HTTP_METHOD: method, tags.HTTP_URL: uri, }, finish_on_close=True, ): try: body_producer = None if data is not None: body_producer = QuieterFileBodyProducer( BytesIO(data), cooperator=self._cooperator, ) request_deferred: defer.Deferred = treq.request( method, uri, agent=self.agent, data=body_producer, headers=headers, # Avoid buffering the body in treq since we do not reuse # response bodies. unbuffered=True, **self._extra_treq_args, ) # we use our own timeout mechanism rather than treq's as a workaround # for https://twistedmatrix.com/trac/ticket/9534. request_deferred = timeout_deferred( request_deferred, 60, self.hs.get_reactor(), ) # turn timeouts into RequestTimedOutErrors request_deferred.addErrback(_timeout_to_request_timed_out_error) response = await make_deferred_yieldable(request_deferred) incoming_responses_counter.labels(method, response.code).inc() logger.info( "Received response to %s %s: %s", method, redact_uri(uri), response.code, ) return response except Exception as e: incoming_responses_counter.labels(method, "ERR").inc() logger.info( "Error sending request to %s %s: %s %s", method, redact_uri(uri), type(e).__name__, e.args[0], ) set_tag(tags.ERROR, True) set_tag("error_reason", e.args[0]) raise async def post_urlencoded_get_json( self, uri: str, args: Optional[Mapping[str, Union[str, List[str]]]] = None, headers: Optional[RawHeaders] = None, ) -> Any: """ Args: uri: uri to query args: parameters to be url-encoded in the body headers: a map from header name to a list of values for that header Returns: parsed json Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException: On a non-2xx HTTP response. ValueError: if the response was not JSON """ # TODO: Do we ever want to log message contents? logger.debug("post_urlencoded_get_json args: %s", args) query_bytes = encode_query_args(args) actual_headers = { b"Content-Type": [b"application/x-www-form-urlencoded"], b"User-Agent": [self.user_agent], b"Accept": [b"application/json"], } if headers: actual_headers.update(headers) # type: ignore response = await self.request( "POST", uri, headers=Headers(actual_headers), data=query_bytes ) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return json_decoder.decode(body.decode("utf-8")) else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) async def post_json_get_json( self, uri: str, post_json: Any, headers: Optional[RawHeaders] = None ) -> Any: """ Args: uri: URI to query. post_json: request body, to be encoded as json headers: a map from header name to a list of values for that header Returns: parsed json Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException: On a non-2xx HTTP response. ValueError: if the response was not JSON """ json_str = encode_canonical_json(post_json) logger.debug("HTTP POST %s -> %s", json_str, uri) actual_headers = { b"Content-Type": [b"application/json"], b"User-Agent": [self.user_agent], b"Accept": [b"application/json"], } if headers: actual_headers.update(headers) # type: ignore response = await self.request( "POST", uri, headers=Headers(actual_headers), data=json_str ) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return json_decoder.decode(body.decode("utf-8")) else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) async def get_json( self, uri: str, args: Optional[QueryParams] = None, headers: Optional[RawHeaders] = None, ) -> Any: """Gets some json from the given URI. Args: uri: The URI to request, not including query parameters args: A dictionary used to create query string headers: a map from header name to a list of values for that header Returns: Succeeds when we get a 2xx HTTP response, with the HTTP body as JSON. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException On a non-2xx HTTP response. ValueError: if the response was not JSON """ actual_headers = {b"Accept": [b"application/json"]} if headers: actual_headers.update(headers) # type: ignore body = await self.get_raw(uri, args, headers=actual_headers) return json_decoder.decode(body.decode("utf-8")) async def put_json( self, uri: str, json_body: Any, args: Optional[QueryParams] = None, headers: Optional[RawHeaders] = None, ) -> Any: """Puts some json to the given URI. Args: uri: The URI to request, not including query parameters json_body: The JSON to put in the HTTP body, args: A dictionary used to create query strings headers: a map from header name to a list of values for that header Returns: Succeeds when we get a 2xx HTTP response, with the HTTP body as JSON. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException On a non-2xx HTTP response. ValueError: if the response was not JSON """ if args: query_str = urllib.parse.urlencode(args, True) uri = "%s?%s" % (uri, query_str) json_str = encode_canonical_json(json_body) actual_headers = { b"Content-Type": [b"application/json"], b"User-Agent": [self.user_agent], b"Accept": [b"application/json"], } if headers: actual_headers.update(headers) # type: ignore response = await self.request( "PUT", uri, headers=Headers(actual_headers), data=json_str ) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return json_decoder.decode(body.decode("utf-8")) else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) async def get_raw( self, uri: str, args: Optional[QueryParams] = None, headers: Optional[RawHeaders] = None, ) -> bytes: """Gets raw text from the given URI. Args: uri: The URI to request, not including query parameters args: A dictionary used to create query strings headers: a map from header name to a list of values for that header Returns: Succeeds when we get a 2xx HTTP response, with the HTTP body as bytes. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. HttpResponseException on a non-2xx HTTP response. """ if args: query_str = urllib.parse.urlencode(args, True) uri = "%s?%s" % (uri, query_str) actual_headers = {b"User-Agent": [self.user_agent]} if headers: actual_headers.update(headers) # type: ignore response = await self.request("GET", uri, headers=Headers(actual_headers)) body = await make_deferred_yieldable(readBody(response)) if 200 <= response.code < 300: return body else: raise HttpResponseException( response.code, response.phrase.decode("ascii", errors="replace"), body ) # XXX: FIXME: This is horribly copy-pasted from matrixfederationclient. # The two should be factored out. async def get_file( self, url: str, output_stream: BinaryIO, max_size: Optional[int] = None, headers: Optional[RawHeaders] = None, is_allowed_content_type: Optional[Callable[[str], bool]] = None, ) -> Tuple[int, Dict[bytes, List[bytes]], str, int]: """GETs a file from a given URL Args: url: The URL to GET output_stream: File to write the response body to. headers: A map from header name to a list of values for that header is_allowed_content_type: A predicate to determine whether the content type of the file we're downloading is allowed. If set and it evaluates to False when called with the content type, the request will be terminated before completing the download by raising SynapseError. Returns: A tuple of the file length, dict of the response headers, absolute URI of the response and HTTP response code. Raises: RequestTimedOutError: if there is a timeout before the response headers are received. Note there is currently no timeout on reading the response body. SynapseError: if the response is not a 2xx, the remote file is too large, or another exception happens during the download. """ actual_headers = {b"User-Agent": [self.user_agent]} if headers: actual_headers.update(headers) # type: ignore response = await self.request("GET", url, headers=Headers(actual_headers)) resp_headers = dict(response.headers.getAllRawHeaders()) if response.code > 299: logger.warning("Got %d when downloading %s" % (response.code, url)) raise SynapseError( HTTPStatus.BAD_GATEWAY, "Got error %d" % (response.code,), Codes.UNKNOWN ) if is_allowed_content_type and b"Content-Type" in resp_headers: content_type = resp_headers[b"Content-Type"][0].decode("ascii") if not is_allowed_content_type(content_type): raise SynapseError( HTTPStatus.BAD_GATEWAY, ( "Requested file's content type not allowed for this operation: %s" % content_type ), ) # TODO: if our Content-Type is HTML or something, just read the first # N bytes into RAM rather than saving it all to disk only to read it # straight back in again try: d = read_body_with_max_size(response, output_stream, max_size) # Ensure that the body is not read forever. d = timeout_deferred(d, 30, self.hs.get_reactor()) length = await make_deferred_yieldable(d) except BodyExceededMaxSize: raise SynapseError( HTTPStatus.BAD_GATEWAY, "Requested file is too large > %r bytes" % (max_size,), Codes.TOO_LARGE, ) except defer.TimeoutError: raise SynapseError( HTTPStatus.BAD_GATEWAY, "Requested file took too long to download", Codes.TOO_LARGE, ) except Exception as e: raise SynapseError( HTTPStatus.BAD_GATEWAY, ("Failed to download remote body: %s" % e) ) from e return ( length, resp_headers, response.request.absoluteURI.decode("ascii"), response.code, ) class SimpleHttpClient(BaseHttpClient): """ An HTTP client capable of crossing a proxy and respecting a block/allow list. This also configures a larger / longer lasting HTTP connection pool. Args: hs: The HomeServer instance to pass in treq_args: Extra keyword arguments to be given to treq.request. ip_blocklist: The IP addresses that we may not request. ip_allowlist: The allowed IP addresses, that we can request if it were otherwise caught in a blocklist. use_proxy: Whether proxy settings should be discovered and used from conventional environment variables. """ def __init__( self, hs: "HomeServer", treq_args: Optional[Dict[str, Any]] = None, ip_allowlist: Optional[IPSet] = None, ip_blocklist: Optional[IPSet] = None, use_proxy: bool = False, ): super().__init__(hs, treq_args=treq_args) self._ip_allowlist = ip_allowlist self._ip_blocklist = ip_blocklist if self._ip_blocklist: # If we have an IP blocklist, we need to use a DNS resolver which # filters out blocked IP addresses, to prevent DNS rebinding. self.reactor: ISynapseReactor = BlocklistingReactorWrapper( self.reactor, self._ip_allowlist, self._ip_blocklist ) # the pusher makes lots of concurrent SSL connections to Sygnal, and tends to # do so in batches, so we need to allow the pool to keep lots of idle # connections around. pool = HTTPConnectionPool(self.reactor) # XXX: The justification for using the cache factor here is that larger # instances will need both more cache and more connections. # Still, this should probably be a separate dial pool.maxPersistentPerHost = max(int(100 * hs.config.caches.global_factor), 5) pool.cachedConnectionTimeout = 2 * 60 self.agent: IAgent = ProxyAgent( self.reactor, hs.get_reactor(), connectTimeout=15, contextFactory=self.hs.get_http_client_context_factory(), pool=pool, use_proxy=use_proxy, ) if self._ip_blocklist: # If we have an IP blocklist, we then install the Agent which prevents # direct access to IP addresses, that are not caught by the DNS resolution. self.agent = BlocklistingAgentWrapper( self.agent, ip_blocklist=self._ip_blocklist, ip_allowlist=self._ip_allowlist, ) class ReplicationClient(BaseHttpClient): """Client for connecting to replication endpoints via HTTP and HTTPS. Attributes: agent: The custom Twisted Agent used for constructing the connection. """ def __init__( self, hs: "HomeServer", ): """ Args: hs: The HomeServer instance to pass in """ super().__init__(hs) # Use a pool, but a very small one. pool = HTTPConnectionPool(self.reactor) pool.maxPersistentPerHost = 5 pool.cachedConnectionTimeout = 2 * 60 self.agent: IAgent = ReplicationAgent( hs.get_reactor(), hs.config.worker.instance_map, contextFactory=hs.get_http_client_context_factory(), pool=pool, ) async def request( self, method: str, uri: str, data: Optional[bytes] = None, headers: Optional[Headers] = None, ) -> IResponse: """ Make a request, differs from BaseHttpClient.request in that it does not use treq. Args: method: HTTP method to use. uri: URI to query. data: Data to send in the request body, if applicable. headers: Request headers. Returns: Response object, once the headers have been read. Raises: RequestTimedOutError if the request times out before the headers are read """ outgoing_requests_counter.labels(method).inc() logger.debug("Sending request %s %s", method, uri) with start_active_span( "outgoing-replication-request", tags={ tags.SPAN_KIND: tags.SPAN_KIND_RPC_CLIENT, tags.HTTP_METHOD: method, tags.HTTP_URL: uri, }, finish_on_close=True, ): try: body_producer = None if data is not None: body_producer = QuieterFileBodyProducer( BytesIO(data), cooperator=self._cooperator, ) # Skip the fancy treq stuff, we don't need cookie handling, redirects, # or buffered response bodies. method_bytes = method.encode("ascii") uri_bytes = uri.encode("ascii") # To preserve the logging context, the timeout is treated # in a similar way to `defer.gatherResults`: # * Each logging context-preserving fork is wrapped in # `run_in_background`. In this case there is only one, # since the timeout fork is not logging-context aware. # * The `Deferred` that joins the forks back together is # wrapped in `make_deferred_yieldable` to restore the # logging context regardless of the path taken. # (The logic/comments for this came from MatrixFederationHttpClient) request_deferred = run_in_background( self.agent.request, method_bytes, uri_bytes, headers, bodyProducer=body_producer, ) # we use our own timeout mechanism rather than twisted's as a workaround # for https://twistedmatrix.com/trac/ticket/9534. # (Updated url https://github.com/twisted/twisted/issues/9534) request_deferred = timeout_deferred( request_deferred, 60, self.hs.get_reactor(), ) # turn timeouts into RequestTimedOutErrors request_deferred.addErrback(_timeout_to_request_timed_out_error) response = await make_deferred_yieldable(request_deferred) incoming_responses_counter.labels(method, response.code).inc() logger.info( "Received response to %s %s: %s", method, uri, response.code, ) return response except Exception as e: incoming_responses_counter.labels(method, "ERR").inc() logger.info( "Error sending request to %s %s: %s %s", method, uri, type(e).__name__, e.args[0], ) set_tag(tags.ERROR, True) set_tag("error_reason", e.args[0]) raise def _timeout_to_request_timed_out_error(f: Failure) -> Failure: if f.check(twisted_error.TimeoutError, twisted_error.ConnectingCancelledError): # The TCP connection has its own timeout (set by the 'connectTimeout' param # on the Agent), which raises twisted_error.TimeoutError exception. raise RequestTimedOutError("Timeout connecting to remote server") elif f.check(defer.TimeoutError, ResponseNeverReceived): # this one means that we hit our overall timeout on the request raise RequestTimedOutError("Timeout waiting for response from remote server") return f class ByteWriteable(Protocol): """The type of object which must be passed into read_body_with_max_size. Typically this is a file object. """ def write(self, data: bytes) -> int: pass class BodyExceededMaxSize(Exception): """The maximum allowed size of the HTTP body was exceeded.""" class _DiscardBodyWithMaxSizeProtocol(protocol.Protocol): """A protocol which immediately errors upon receiving data.""" transport: Optional[ITCPTransport] = None def __init__(self, deferred: defer.Deferred): self.deferred = deferred def _maybe_fail(self) -> None: """ Report a max size exceed error and disconnect the first time this is called. """ if not self.deferred.called: self.deferred.errback(BodyExceededMaxSize()) # Close the connection (forcefully) since all the data will get # discarded anyway. assert self.transport is not None self.transport.abortConnection() def dataReceived(self, data: bytes) -> None: self._maybe_fail() def connectionLost(self, reason: Failure = connectionDone) -> None: self._maybe_fail() class _ReadBodyWithMaxSizeProtocol(protocol.Protocol): """A protocol which reads body to a stream, erroring if the body exceeds a maximum size.""" transport: Optional[ITCPTransport] = None def __init__( self, stream: ByteWriteable, deferred: defer.Deferred, max_size: Optional[int] ): self.stream = stream self.deferred = deferred self.length = 0 self.max_size = max_size def dataReceived(self, data: bytes) -> None: # If the deferred was called, bail early. if self.deferred.called: return try: self.stream.write(data) except Exception: self.deferred.errback() return self.length += len(data) # The first time the maximum size is exceeded, error and cancel the # connection. dataReceived might be called again if data was received # in the meantime. if self.max_size is not None and self.length >= self.max_size: self.deferred.errback(BodyExceededMaxSize()) # Close the connection (forcefully) since all the data will get # discarded anyway. assert self.transport is not None self.transport.abortConnection() def connectionLost(self, reason: Failure = connectionDone) -> None: # If the maximum size was already exceeded, there's nothing to do. if self.deferred.called: return if reason.check(ResponseDone): self.deferred.callback(self.length) elif reason.check(PotentialDataLoss): # This applies to requests which don't set `Content-Length` or a # `Transfer-Encoding` in the response because in this case the end of the # response is indicated by the connection being closed, an event which may # also be due to a transient network problem or other error. But since this # behavior is expected of some servers (like YouTube), let's ignore it. # Stolen from https://github.com/twisted/treq/pull/49/files # http://twistedmatrix.com/trac/ticket/4840 self.deferred.callback(self.length) else: self.deferred.errback(reason) def read_body_with_max_size( response: IResponse, stream: ByteWriteable, max_size: Optional[int] ) -> "defer.Deferred[int]": """ Read a HTTP response body to a file-object. Optionally enforcing a maximum file size. If the maximum file size is reached, the returned Deferred will resolve to a Failure with a BodyExceededMaxSize exception. Args: response: The HTTP response to read from. stream: The file-object to write to. max_size: The maximum file size to allow. Returns: A Deferred which resolves to the length of the read body. """ d: "defer.Deferred[int]" = defer.Deferred() # If the Content-Length header gives a size larger than the maximum allowed # size, do not bother downloading the body. if max_size is not None and response.length != UNKNOWN_LENGTH: if response.length > max_size: response.deliverBody(_DiscardBodyWithMaxSizeProtocol(d)) return d response.deliverBody(_ReadBodyWithMaxSizeProtocol(stream, d, max_size)) return d def encode_query_args(args: Optional[QueryParams]) -> bytes: """ Encodes a map of query arguments to bytes which can be appended to a URL. Args: args: The query arguments, a mapping of string to string or list of strings. Returns: The query arguments encoded as bytes. """ if args is None: return b"" query_str = urllib.parse.urlencode(args, True) return query_str.encode("utf8") @implementer(IPolicyForHTTPS) class InsecureInterceptableContextFactory(ssl.ContextFactory): """ Factory for PyOpenSSL SSL contexts which accepts any certificate for any domain. Do not use this since it allows an attacker to intercept your communications. """ def __init__(self) -> None: self._context = SSL.Context(SSL.SSLv23_METHOD) self._context.set_verify(VERIFY_NONE, lambda *_: False) def getContext(self) -> SSL.Context: return self._context def creatorForNetloc(self, hostname: bytes, port: int) -> IOpenSSLContextFactory: return self def is_unknown_endpoint( e: HttpResponseException, synapse_error: Optional[SynapseError] = None ) -> bool: """ Returns true if the response was due to an endpoint being unimplemented. Args: e: The error response received from the remote server. synapse_error: The above error converted to a SynapseError. This is automatically generated if not provided. """ if synapse_error is None: synapse_error = e.to_synapse_error() # Matrix v1.6 specifies that servers should return a 404 or 405 with an errcode # of M_UNRECOGNIZED when they receive a request to an unknown endpoint or # to an unknown method, respectively. # # Older versions of servers don't return proper errors, so be graceful. But, # also handle that some endpoints truly do return 404 errors. return ( # 404 is an unknown endpoint, 405 is a known endpoint, but unknown method. (e.code == 404 or e.code == 405) and ( # Consider empty body or non-JSON bodies to be unrecognised (matches # older Dendrites & Conduits). not e.response or not e.response.startswith(b"{") # The proper response JSON with M_UNRECOGNIZED errcode. or synapse_error.errcode == Codes.UNRECOGNIZED ) ) or ( # Older Synapses returned a 400 error. e.code == 400 and synapse_error.errcode == Codes.UNRECOGNIZED ) synapse-1.100.0/synapse/http/connectproxyclient.py000066400000000000000000000243011455622526000223070ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import base64 import logging from typing import Optional, Union import attr from zope.interface import implementer from twisted.internet import defer, protocol from twisted.internet.error import ConnectError from twisted.internet.interfaces import ( IAddress, IConnector, IProtocol, IReactorCore, IStreamClientEndpoint, ) from twisted.internet.protocol import ClientFactory, Protocol, connectionDone from twisted.python.failure import Failure from twisted.web import http logger = logging.getLogger(__name__) class ProxyConnectError(ConnectError): pass class ProxyCredentials: @abc.abstractmethod def as_proxy_authorization_value(self) -> bytes: raise NotImplementedError() @attr.s(auto_attribs=True) class BasicProxyCredentials(ProxyCredentials): username_password: bytes def as_proxy_authorization_value(self) -> bytes: """ Return the value for a Proxy-Authorization header (i.e. 'Basic abdef=='). Returns: A transformation of the authentication string the encoded value for a Proxy-Authorization header. """ # Encode as base64 and prepend the authorization type return b"Basic " + base64.b64encode(self.username_password) @attr.s(auto_attribs=True) class BearerProxyCredentials(ProxyCredentials): access_token: bytes def as_proxy_authorization_value(self) -> bytes: """ Return the value for a Proxy-Authorization header (i.e. 'Bearer xxx'). """ return b"Bearer " + self.access_token @implementer(IStreamClientEndpoint) class HTTPConnectProxyEndpoint: """An Endpoint implementation which will send a CONNECT request to an http proxy Wraps an existing HostnameEndpoint for the proxy. When we get the connect() request from the connection pool (via the TLS wrapper), we'll first connect to the proxy endpoint with a ProtocolFactory which will make the CONNECT request. Once that completes, we invoke the protocolFactory which was passed in. Args: reactor: the Twisted reactor to use for the connection proxy_endpoint: the endpoint to use to connect to the proxy host: hostname that we want to CONNECT to port: port that we want to connect to proxy_creds: credentials to authenticate at proxy """ def __init__( self, reactor: IReactorCore, proxy_endpoint: IStreamClientEndpoint, host: bytes, port: int, proxy_creds: Optional[ProxyCredentials], ): self._reactor = reactor self._proxy_endpoint = proxy_endpoint self._host = host self._port = port self._proxy_creds = proxy_creds def __repr__(self) -> str: return "" % (self._proxy_endpoint,) # Mypy encounters a false positive here: it complains that ClientFactory # is incompatible with IProtocolFactory. But ClientFactory inherits from # Factory, which implements IProtocolFactory. So I think this is a bug # in mypy-zope. def connect(self, protocolFactory: ClientFactory) -> "defer.Deferred[IProtocol]": # type: ignore[override] f = HTTPProxiedClientFactory( self._host, self._port, protocolFactory, self._proxy_creds ) d = self._proxy_endpoint.connect(f) # once the tcp socket connects successfully, we need to wait for the # CONNECT to complete. d.addCallback(lambda conn: f.on_connection) return d class HTTPProxiedClientFactory(protocol.ClientFactory): """ClientFactory wrapper that triggers an HTTP proxy CONNECT on connect. Once the CONNECT completes, invokes the original ClientFactory to build the HTTP Protocol object and run the rest of the connection. Args: dst_host: hostname that we want to CONNECT to dst_port: port that we want to connect to wrapped_factory: The original Factory proxy_creds: credentials to authenticate at proxy """ def __init__( self, dst_host: bytes, dst_port: int, wrapped_factory: ClientFactory, proxy_creds: Optional[ProxyCredentials], ): self.dst_host = dst_host self.dst_port = dst_port self.wrapped_factory = wrapped_factory self.proxy_creds = proxy_creds self.on_connection: "defer.Deferred[None]" = defer.Deferred() def startedConnecting(self, connector: IConnector) -> None: return self.wrapped_factory.startedConnecting(connector) def buildProtocol(self, addr: IAddress) -> "HTTPConnectProtocol": wrapped_protocol = self.wrapped_factory.buildProtocol(addr) if wrapped_protocol is None: raise TypeError("buildProtocol produced None instead of a Protocol") return HTTPConnectProtocol( self.dst_host, self.dst_port, wrapped_protocol, self.on_connection, self.proxy_creds, ) def clientConnectionFailed(self, connector: IConnector, reason: Failure) -> None: logger.debug("Connection to proxy failed: %s", reason) if not self.on_connection.called: self.on_connection.errback(reason) return self.wrapped_factory.clientConnectionFailed(connector, reason) def clientConnectionLost(self, connector: IConnector, reason: Failure) -> None: logger.debug("Connection to proxy lost: %s", reason) if not self.on_connection.called: self.on_connection.errback(reason) return self.wrapped_factory.clientConnectionLost(connector, reason) class HTTPConnectProtocol(protocol.Protocol): """Protocol that wraps an existing Protocol to do a CONNECT handshake at connect Args: host: The original HTTP(s) hostname or IPv4 or IPv6 address literal to put in the CONNECT request port: The original HTTP(s) port to put in the CONNECT request wrapped_protocol: the original protocol (probably HTTPChannel or TLSMemoryBIOProtocol, but could be anything really) connected_deferred: a Deferred which will be callbacked with wrapped_protocol when the CONNECT completes proxy_creds: credentials to authenticate at proxy """ def __init__( self, host: bytes, port: int, wrapped_protocol: Protocol, connected_deferred: defer.Deferred, proxy_creds: Optional[ProxyCredentials], ): self.host = host self.port = port self.wrapped_protocol = wrapped_protocol self.connected_deferred = connected_deferred self.proxy_creds = proxy_creds self.http_setup_client = HTTPConnectSetupClient( self.host, self.port, self.proxy_creds ) self.http_setup_client.on_connected.addCallback(self.proxyConnected) def connectionMade(self) -> None: self.http_setup_client.makeConnection(self.transport) def connectionLost(self, reason: Failure = connectionDone) -> None: if self.wrapped_protocol.connected: self.wrapped_protocol.connectionLost(reason) self.http_setup_client.connectionLost(reason) if not self.connected_deferred.called: self.connected_deferred.errback(reason) def proxyConnected(self, _: Union[None, "defer.Deferred[None]"]) -> None: self.wrapped_protocol.makeConnection(self.transport) self.connected_deferred.callback(self.wrapped_protocol) # Get any pending data from the http buf and forward it to the original protocol buf = self.http_setup_client.clearLineBuffer() if buf: self.wrapped_protocol.dataReceived(buf) def dataReceived(self, data: bytes) -> None: # if we've set up the HTTP protocol, we can send the data there if self.wrapped_protocol.connected: return self.wrapped_protocol.dataReceived(data) # otherwise, we must still be setting up the connection: send the data to the # setup client return self.http_setup_client.dataReceived(data) class HTTPConnectSetupClient(http.HTTPClient): """HTTPClient protocol to send a CONNECT message for proxies and read the response. Args: host: The hostname to send in the CONNECT message port: The port to send in the CONNECT message proxy_creds: credentials to authenticate at proxy """ def __init__( self, host: bytes, port: int, proxy_creds: Optional[ProxyCredentials], ): self.host = host self.port = port self.proxy_creds = proxy_creds self.on_connected: "defer.Deferred[None]" = defer.Deferred() def connectionMade(self) -> None: logger.debug("Connected to proxy, sending CONNECT") self.sendCommand(b"CONNECT", b"%s:%d" % (self.host, self.port)) # Determine whether we need to set Proxy-Authorization headers if self.proxy_creds: # Set a Proxy-Authorization header self.sendHeader( b"Proxy-Authorization", self.proxy_creds.as_proxy_authorization_value(), ) self.endHeaders() def handleStatus(self, version: bytes, status: bytes, message: bytes) -> None: logger.debug("Got Status: %s %s %s", status, message, version) if status != b"200": raise ProxyConnectError(f"Unexpected status on CONNECT: {status!s}") def handleEndHeaders(self) -> None: logger.debug("End Headers") self.on_connected.callback(None) def handleResponse(self, body: bytes) -> None: pass synapse-1.100.0/synapse/http/federation/000077500000000000000000000000001455622526000201235ustar00rootroot00000000000000synapse-1.100.0/synapse/http/federation/__init__.py000066400000000000000000000012411455622526000222320ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # synapse-1.100.0/synapse/http/federation/matrix_federation_agent.py000066400000000000000000000411321455622526000253600ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import urllib.parse from typing import Any, Generator, List, Optional from urllib.request import ( # type: ignore[attr-defined] getproxies_environment, proxy_bypass_environment, ) from netaddr import AddrFormatError, IPAddress, IPSet from zope.interface import implementer from twisted.internet import defer from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS from twisted.internet.interfaces import ( IProtocol, IProtocolFactory, IReactorCore, IStreamClientEndpoint, ) from twisted.web.client import URI, Agent, HTTPConnectionPool from twisted.web.http_headers import Headers from twisted.web.iweb import IAgent, IAgentEndpointFactory, IBodyProducer, IResponse from synapse.crypto.context_factory import FederationPolicyForHTTPS from synapse.http import proxyagent from synapse.http.client import BlocklistingAgentWrapper, BlocklistingReactorWrapper from synapse.http.connectproxyclient import HTTPConnectProxyEndpoint from synapse.http.federation.srv_resolver import Server, SrvResolver from synapse.http.federation.well_known_resolver import WellKnownResolver from synapse.http.proxyagent import ProxyAgent from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.types import ISynapseReactor from synapse.util import Clock logger = logging.getLogger(__name__) @implementer(IAgent) class MatrixFederationAgent: """An Agent-like thing which provides a `request` method which correctly handles resolving matrix server names when using `matrix-federation://`. Handles standard https URIs as normal. The `matrix-federation://` scheme is internal to Synapse and we purposely want to avoid colliding with the `matrix://` URL scheme which is now specced. Doesn't implement any retries. (Those are done in MatrixFederationHttpClient.) Args: reactor: twisted reactor to use for underlying requests tls_client_options_factory: factory to use for fetching client tls options, or none to disable TLS. user_agent: The user agent header to use for federation requests. ip_allowlist: Allowed IP addresses. ip_blocklist: Disallowed IP addresses. proxy_reactor: twisted reactor to use for connections to the proxy server reactor might have some blocking applied (i.e. for DNS queries), but we need unblocked access to the proxy. _srv_resolver: SrvResolver implementation to use for looking up SRV records. None to use a default implementation. _well_known_resolver: WellKnownResolver to use to perform well-known lookups. None to use a default implementation. """ def __init__( self, reactor: ISynapseReactor, tls_client_options_factory: Optional[FederationPolicyForHTTPS], user_agent: bytes, ip_allowlist: Optional[IPSet], ip_blocklist: IPSet, _srv_resolver: Optional[SrvResolver] = None, _well_known_resolver: Optional[WellKnownResolver] = None, ): # proxy_reactor is not blocklisting reactor proxy_reactor = reactor # We need to use a DNS resolver which filters out blocked IP # addresses, to prevent DNS rebinding. reactor = BlocklistingReactorWrapper(reactor, ip_allowlist, ip_blocklist) self._clock = Clock(reactor) self._pool = HTTPConnectionPool(reactor) self._pool.retryAutomatically = False self._pool.maxPersistentPerHost = 5 self._pool.cachedConnectionTimeout = 2 * 60 self._agent = Agent.usingEndpointFactory( reactor, MatrixHostnameEndpointFactory( reactor, proxy_reactor, tls_client_options_factory, _srv_resolver, ), pool=self._pool, ) self.user_agent = user_agent if _well_known_resolver is None: _well_known_resolver = WellKnownResolver( reactor, agent=BlocklistingAgentWrapper( ProxyAgent( reactor, proxy_reactor, pool=self._pool, contextFactory=tls_client_options_factory, use_proxy=True, ), ip_blocklist=ip_blocklist, ), user_agent=self.user_agent, ) self._well_known_resolver = _well_known_resolver @defer.inlineCallbacks def request( self, method: bytes, uri: bytes, headers: Optional[Headers] = None, bodyProducer: Optional[IBodyProducer] = None, ) -> Generator[defer.Deferred, Any, IResponse]: """ Args: method: HTTP method: GET/POST/etc uri: Absolute URI to be retrieved headers: HTTP headers to send with the request, or None to send no extra headers. bodyProducer: An object which can generate bytes to make up the body of this request (for example, the properly encoded contents of a file for a file upload). Or None if the request is to have no body. Returns: A deferred which fires when the header of the response has been received (regardless of the response status code). Fails if there is any problem which prevents that response from being received (including problems that prevent the request from being sent). """ # We use urlparse as that will set `port` to None if there is no # explicit port. parsed_uri = urllib.parse.urlparse(uri) # There must be a valid hostname. assert parsed_uri.hostname # If this is a matrix-federation:// URI check if the server has delegated matrix # traffic using well-known delegation. # # We have to do this here and not in the endpoint as we need to rewrite # the host header with the delegated server name. delegated_server = None if ( parsed_uri.scheme == b"matrix-federation" and not _is_ip_literal(parsed_uri.hostname) and not parsed_uri.port ): well_known_result = yield defer.ensureDeferred( self._well_known_resolver.get_well_known(parsed_uri.hostname) ) delegated_server = well_known_result.delegated_server if delegated_server: # Ok, the server has delegated matrix traffic to somewhere else, so # lets rewrite the URL to replace the server with the delegated # server name. uri = urllib.parse.urlunparse( ( parsed_uri.scheme, delegated_server, parsed_uri.path, parsed_uri.params, parsed_uri.query, parsed_uri.fragment, ) ) parsed_uri = urllib.parse.urlparse(uri) # We need to make sure the host header is set to the netloc of the # server and that a user-agent is provided. if headers is None: request_headers = Headers() else: request_headers = headers.copy() if not request_headers.hasHeader(b"host"): request_headers.addRawHeader(b"host", parsed_uri.netloc) if not request_headers.hasHeader(b"user-agent"): request_headers.addRawHeader(b"user-agent", self.user_agent) res = yield make_deferred_yieldable( self._agent.request(method, uri, request_headers, bodyProducer) ) return res @implementer(IAgentEndpointFactory) class MatrixHostnameEndpointFactory: """Factory for MatrixHostnameEndpoint for parsing to an Agent.""" def __init__( self, reactor: IReactorCore, proxy_reactor: IReactorCore, tls_client_options_factory: Optional[FederationPolicyForHTTPS], srv_resolver: Optional[SrvResolver], ): self._reactor = reactor self._proxy_reactor = proxy_reactor self._tls_client_options_factory = tls_client_options_factory if srv_resolver is None: srv_resolver = SrvResolver() self._srv_resolver = srv_resolver def endpointForURI(self, parsed_uri: URI) -> "MatrixHostnameEndpoint": return MatrixHostnameEndpoint( self._reactor, self._proxy_reactor, self._tls_client_options_factory, self._srv_resolver, parsed_uri, ) @implementer(IStreamClientEndpoint) class MatrixHostnameEndpoint: """An endpoint that resolves matrix-federation:// URLs using Matrix server name resolution (i.e. via SRV). Does not check for well-known delegation. Args: reactor: twisted reactor to use for underlying requests proxy_reactor: twisted reactor to use for connections to the proxy server. 'reactor' might have some blocking applied (i.e. for DNS queries), but we need unblocked access to the proxy. tls_client_options_factory: factory to use for fetching client tls options, or none to disable TLS. srv_resolver: The SRV resolver to use parsed_uri: The parsed URI that we're wanting to connect to. Raises: ValueError if the environment variables contain an invalid proxy specification. RuntimeError if no tls_options_factory is given for a https connection """ def __init__( self, reactor: IReactorCore, proxy_reactor: IReactorCore, tls_client_options_factory: Optional[FederationPolicyForHTTPS], srv_resolver: SrvResolver, parsed_uri: URI, ): self._reactor = reactor self._parsed_uri = parsed_uri # http_proxy is not needed because federation is always over TLS proxies = getproxies_environment() https_proxy = proxies["https"].encode() if "https" in proxies else None self.no_proxy = proxies["no"] if "no" in proxies else None # endpoint and credentials to use to connect to the outbound https proxy, if any. ( self._https_proxy_endpoint, self._https_proxy_creds, ) = proxyagent.http_proxy_endpoint( https_proxy, proxy_reactor, tls_client_options_factory, ) # set up the TLS connection params # # XXX disabling TLS is really only supported here for the benefit of the # unit tests. We should make the UTs cope with TLS rather than having to make # the code support the unit tests. if tls_client_options_factory is None: self._tls_options = None else: self._tls_options = tls_client_options_factory.get_options( self._parsed_uri.host ) self._srv_resolver = srv_resolver def connect( self, protocol_factory: IProtocolFactory ) -> "defer.Deferred[IProtocol]": """Implements IStreamClientEndpoint interface""" return run_in_background(self._do_connect, protocol_factory) async def _do_connect(self, protocol_factory: IProtocolFactory) -> IProtocol: first_exception = None server_list = await self._resolve_server() for server in server_list: host = server.host port = server.port should_skip_proxy = False if self.no_proxy is not None: should_skip_proxy = proxy_bypass_environment( host.decode(), proxies={"no": self.no_proxy}, ) endpoint: IStreamClientEndpoint try: if self._https_proxy_endpoint and not should_skip_proxy: logger.debug( "Connecting to %s:%i via %s", host.decode("ascii"), port, self._https_proxy_endpoint, ) endpoint = HTTPConnectProxyEndpoint( self._reactor, self._https_proxy_endpoint, host, port, proxy_creds=self._https_proxy_creds, ) else: logger.debug("Connecting to %s:%i", host.decode("ascii"), port) # not using a proxy endpoint = HostnameEndpoint(self._reactor, host, port) if self._tls_options: endpoint = wrapClientTLS(self._tls_options, endpoint) result = await make_deferred_yieldable( endpoint.connect(protocol_factory) ) return result except Exception as e: logger.info( "Failed to connect to %s:%i: %s", host.decode("ascii"), port, e ) if not first_exception: first_exception = e # We return the first failure because that's probably the most interesting. if first_exception: raise first_exception # This shouldn't happen as we should always have at least one host/port # to try and if that doesn't work then we'll have an exception. raise Exception("Failed to resolve server %r" % (self._parsed_uri.netloc,)) async def _resolve_server(self) -> List[Server]: """Resolves the server name to a list of hosts and ports to attempt to connect to. """ if self._parsed_uri.scheme != b"matrix-federation": return [Server(host=self._parsed_uri.host, port=self._parsed_uri.port)] # Note: We don't do well-known lookup as that needs to have happened # before now, due to needing to rewrite the Host header of the HTTP # request. # We reparse the URI so that defaultPort is -1 rather than 80 parsed_uri = urllib.parse.urlparse(self._parsed_uri.toBytes()) host = parsed_uri.hostname port = parsed_uri.port # If there is an explicit port or the host is an IP address we bypass # SRV lookups and just use the given host/port. if port or _is_ip_literal(host): return [Server(host, port or 8448)] # Check _matrix-fed._tcp SRV record. logger.debug("Looking up SRV record for %s", host.decode(errors="replace")) server_list = await self._srv_resolver.resolve_service( b"_matrix-fed._tcp." + host ) if server_list: if logger.isEnabledFor(logging.DEBUG): logger.debug( "Got %s from SRV lookup for %s", ", ".join(map(str, server_list)), host.decode(errors="replace"), ) return server_list # No _matrix-fed._tcp SRV record, fallback to legacy _matrix._tcp SRV record. logger.debug( "Looking up deprecated SRV record for %s", host.decode(errors="replace") ) server_list = await self._srv_resolver.resolve_service(b"_matrix._tcp." + host) if server_list: if logger.isEnabledFor(logging.DEBUG): logger.debug( "Got %s from deprecated SRV lookup for %s", ", ".join(map(str, server_list)), host.decode(errors="replace"), ) return server_list # No SRV records, so we fallback to host and 8448 logger.debug("No SRV records for %s", host.decode(errors="replace")) return [Server(host, 8448)] def _is_ip_literal(host: bytes) -> bool: """Test if the given host name is either an IPv4 or IPv6 literal. Args: host: The host name to check Returns: True if the hostname is an IP address literal. """ host_str = host.decode("ascii") try: IPAddress(host_str) return True except AddrFormatError: return False synapse-1.100.0/synapse/http/federation/srv_resolver.py000066400000000000000000000137321455622526000232360ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random import time from typing import Any, Callable, Dict, List import attr from twisted.internet.error import ConnectError from twisted.names import client, dns from twisted.names.error import DNSNameError, DNSNotImplementedError, DomainError from synapse.logging.context import make_deferred_yieldable logger = logging.getLogger(__name__) SERVER_CACHE: Dict[bytes, List["Server"]] = {} @attr.s(auto_attribs=True, slots=True, frozen=True) class Server: """ Our record of an individual server which can be tried to reach a destination. Attributes: host: target hostname port: priority: weight: expires: when the cache should expire this record - in *seconds* since the epoch """ host: bytes port: int priority: int = 0 weight: int = 0 expires: int = 0 def _sort_server_list(server_list: List[Server]) -> List[Server]: """Given a list of SRV records sort them into priority order and shuffle each priority with the given weight. """ priority_map: Dict[int, List[Server]] = {} for server in server_list: priority_map.setdefault(server.priority, []).append(server) results = [] for priority in sorted(priority_map): servers = priority_map[priority] # This algorithms roughly follows the algorithm described in RFC2782, # changed to remove an off-by-one error. # # N.B. Weights can be zero, which means that they should be picked # rarely. total_weight = sum(s.weight for s in servers) # Total weight can become zero if there are only zero weight servers # left, which we handle by just shuffling and appending to the results. while servers and total_weight: target_weight = random.randint(1, total_weight) for s in servers: target_weight -= s.weight if target_weight <= 0: break results.append(s) servers.remove(s) total_weight -= s.weight if servers: random.shuffle(servers) results.extend(servers) return results class SrvResolver: """Interface to the dns client to do SRV lookups, with result caching. The default resolver in twisted.names doesn't do any caching (it has a CacheResolver, but the cache never gets populated), so we add our own caching layer here. Args: dns_client (twisted.internet.interfaces.IResolver): twisted resolver impl cache: cache object get_time: clock implementation. Should return seconds since the epoch """ def __init__( self, dns_client: Any = client, cache: Dict[bytes, List[Server]] = SERVER_CACHE, get_time: Callable[[], float] = time.time, ): self._dns_client = dns_client self._cache = cache self._get_time = get_time async def resolve_service(self, service_name: bytes) -> List[Server]: """Look up a SRV record Args: service_name: record to look up Returns: a list of the SRV records, or an empty list if none found """ now = int(self._get_time()) if not isinstance(service_name, bytes): raise TypeError("%r is not a byte string" % (service_name,)) cache_entry = self._cache.get(service_name, None) if cache_entry: if all(s.expires > now for s in cache_entry): servers = list(cache_entry) return _sort_server_list(servers) try: answers, _, _ = await make_deferred_yieldable( self._dns_client.lookupService(service_name) ) except DNSNameError: # TODO: cache this. We can get the SOA out of the exception, and use # the negative-TTL value. return [] except DNSNotImplementedError: # For .onion homeservers this is unavailable, just fallback to host:8448 return [] except DomainError as e: # We failed to resolve the name (other than a NameError) # Try something in the cache, else rereaise cache_entry = self._cache.get(service_name, None) if cache_entry: logger.warning( "Failed to resolve %r, falling back to cache. %r", service_name, e ) return list(cache_entry) else: raise e if ( len(answers) == 1 and answers[0].type == dns.SRV and answers[0].payload and answers[0].payload.target == dns.Name(b".") ): raise ConnectError(f"Service {service_name!r} unavailable") servers = [] for answer in answers: if answer.type != dns.SRV or not answer.payload: continue payload = answer.payload servers.append( Server( host=payload.target.name, port=payload.port, priority=payload.priority, weight=payload.weight, expires=now + answer.ttl, ) ) self._cache[service_name] = list(servers) return _sort_server_list(servers) synapse-1.100.0/synapse/http/federation/well_known_resolver.py000066400000000000000000000302431455622526000245770ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random import time from io import BytesIO from typing import Callable, Dict, Optional, Tuple import attr from twisted.internet import defer from twisted.internet.interfaces import IReactorTime from twisted.web.client import RedirectAgent from twisted.web.http import stringToDatetime from twisted.web.http_headers import Headers from twisted.web.iweb import IAgent, IResponse from synapse.http.client import BodyExceededMaxSize, read_body_with_max_size from synapse.logging.context import make_deferred_yieldable from synapse.util import Clock, json_decoder from synapse.util.caches.ttlcache import TTLCache from synapse.util.metrics import Measure # period to cache .well-known results for by default WELL_KNOWN_DEFAULT_CACHE_PERIOD = 24 * 3600 # jitter factor to add to the .well-known default cache ttls WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER = 0.1 # period to cache failure to fetch .well-known for WELL_KNOWN_INVALID_CACHE_PERIOD = 1 * 3600 # period to cache failure to fetch .well-known if there has recently been a # valid well-known for that domain. WELL_KNOWN_DOWN_CACHE_PERIOD = 2 * 60 # period to remember there was a valid well-known after valid record expires WELL_KNOWN_REMEMBER_DOMAIN_HAD_VALID = 2 * 3600 # cap for .well-known cache period WELL_KNOWN_MAX_CACHE_PERIOD = 48 * 3600 # lower bound for .well-known cache period WELL_KNOWN_MIN_CACHE_PERIOD = 5 * 60 # The maximum size (in bytes) to allow a well-known file to be. WELL_KNOWN_MAX_SIZE = 50 * 1024 # 50 KiB # Attempt to refetch a cached well-known N% of the TTL before it expires. # e.g. if set to 0.2 and we have a cached entry with a TTL of 5mins, then # we'll start trying to refetch 1 minute before it expires. WELL_KNOWN_GRACE_PERIOD_FACTOR = 0.2 # Number of times we retry fetching a well-known for a domain we know recently # had a valid entry. WELL_KNOWN_RETRY_ATTEMPTS = 3 logger = logging.getLogger(__name__) _well_known_cache: TTLCache[bytes, Optional[bytes]] = TTLCache("well-known") _had_valid_well_known_cache: TTLCache[bytes, bool] = TTLCache("had-valid-well-known") @attr.s(slots=True, frozen=True, auto_attribs=True) class WellKnownLookupResult: delegated_server: Optional[bytes] class WellKnownResolver: """Handles well-known lookups for matrix servers.""" def __init__( self, reactor: IReactorTime, agent: IAgent, user_agent: bytes, well_known_cache: Optional[TTLCache[bytes, Optional[bytes]]] = None, had_well_known_cache: Optional[TTLCache[bytes, bool]] = None, ): self._reactor = reactor self._clock = Clock(reactor) if well_known_cache is None: well_known_cache = _well_known_cache if had_well_known_cache is None: had_well_known_cache = _had_valid_well_known_cache self._well_known_cache = well_known_cache self._had_valid_well_known_cache = had_well_known_cache self._well_known_agent = RedirectAgent(agent) self.user_agent = user_agent async def get_well_known(self, server_name: bytes) -> WellKnownLookupResult: """Attempt to fetch and parse a .well-known file for the given server Args: server_name: name of the server, from the requested url Returns: The result of the lookup """ try: prev_result, expiry, ttl = self._well_known_cache.get_with_expiry( server_name ) now = self._clock.time() if now < expiry - WELL_KNOWN_GRACE_PERIOD_FACTOR * ttl: return WellKnownLookupResult(delegated_server=prev_result) except KeyError: prev_result = None # TODO: should we linearise so that we don't end up doing two .well-known # requests for the same server in parallel? try: with Measure(self._clock, "get_well_known"): result: Optional[bytes] cache_period: float result, cache_period = await self._fetch_well_known(server_name) except _FetchWellKnownFailure as e: if prev_result and e.temporary: # This is a temporary failure and we have a still valid cached # result, so lets return that. Hopefully the next time we ask # the remote will be back up again. return WellKnownLookupResult(delegated_server=prev_result) result = None if self._had_valid_well_known_cache.get(server_name, False): # We have recently seen a valid well-known record for this # server, so we cache the lack of well-known for a shorter time. cache_period = WELL_KNOWN_DOWN_CACHE_PERIOD else: cache_period = WELL_KNOWN_INVALID_CACHE_PERIOD # add some randomness to the TTL to avoid a stampeding herd cache_period *= random.uniform( 1 - WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, 1 + WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, ) if cache_period > 0: self._well_known_cache.set(server_name, result, cache_period) return WellKnownLookupResult(delegated_server=result) async def _fetch_well_known(self, server_name: bytes) -> Tuple[bytes, float]: """Actually fetch and parse a .well-known, without checking the cache Args: server_name: name of the server, from the requested url Raises: _FetchWellKnownFailure if we fail to lookup a result Returns: The lookup result and cache period. """ had_valid_well_known = self._had_valid_well_known_cache.get(server_name, False) # We do this in two steps to differentiate between possibly transient # errors (e.g. can't connect to host, 503 response) and more permanent # errors (such as getting a 404 response). response, body = await self._make_well_known_request( server_name, retry=had_valid_well_known ) try: if response.code != 200: raise Exception("Non-200 response %s" % (response.code,)) parsed_body = json_decoder.decode(body.decode("utf-8")) logger.info("Response from .well-known: %s", parsed_body) result = parsed_body["m.server"].encode("ascii") except defer.CancelledError: # Bail if we've been cancelled raise except Exception as e: logger.info("Error parsing well-known for %s: %s", server_name, e) raise _FetchWellKnownFailure(temporary=False) cache_period = _cache_period_from_headers( response.headers, time_now=self._reactor.seconds ) if cache_period is None: cache_period = WELL_KNOWN_DEFAULT_CACHE_PERIOD # add some randomness to the TTL to avoid a stampeding herd every 24 hours # after startup cache_period *= random.uniform( 1 - WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, 1 + WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER, ) else: cache_period = min(cache_period, WELL_KNOWN_MAX_CACHE_PERIOD) cache_period = max(cache_period, WELL_KNOWN_MIN_CACHE_PERIOD) # We got a success, mark as such in the cache self._had_valid_well_known_cache.set( server_name, bool(result), cache_period + WELL_KNOWN_REMEMBER_DOMAIN_HAD_VALID, ) return result, cache_period async def _make_well_known_request( self, server_name: bytes, retry: bool ) -> Tuple[IResponse, bytes]: """Make the well known request. This will retry the request if requested and it fails (with unable to connect or receives a 5xx error). Args: server_name: name of the server, from the requested url retry: Whether to retry the request if it fails. Raises: _FetchWellKnownFailure if we fail to lookup a result Returns: Returns the response object and body. Response may be a non-200 response. """ uri = b"https://%s/.well-known/matrix/server" % (server_name,) uri_str = uri.decode("ascii") headers = { b"User-Agent": [self.user_agent], } i = 0 while True: i += 1 logger.info("Fetching %s", uri_str) try: response = await make_deferred_yieldable( self._well_known_agent.request( b"GET", uri, headers=Headers(headers) ) ) body_stream = BytesIO() await make_deferred_yieldable( read_body_with_max_size(response, body_stream, WELL_KNOWN_MAX_SIZE) ) body = body_stream.getvalue() if 500 <= response.code < 600: raise Exception("Non-200 response %s" % (response.code,)) return response, body except defer.CancelledError: # Bail if we've been cancelled raise except BodyExceededMaxSize: # If the well-known file was too large, do not keep attempting # to download it, but consider it a temporary error. logger.warning( "Requested .well-known file for %s is too large > %r bytes", server_name.decode("ascii"), WELL_KNOWN_MAX_SIZE, ) raise _FetchWellKnownFailure(temporary=True) except Exception as e: if not retry or i >= WELL_KNOWN_RETRY_ATTEMPTS: logger.info("Error fetching %s: %s", uri_str, e) raise _FetchWellKnownFailure(temporary=True) logger.info("Error fetching %s: %s. Retrying", uri_str, e) # Sleep briefly in the hopes that they come back up await self._clock.sleep(0.5) def _cache_period_from_headers( headers: Headers, time_now: Callable[[], float] = time.time ) -> Optional[float]: cache_controls = _parse_cache_control(headers) if b"no-store" in cache_controls: return 0 if b"max-age" in cache_controls: max_age = cache_controls[b"max-age"] if max_age: try: return int(max_age) except ValueError: pass expires = headers.getRawHeaders(b"expires") if expires is not None: try: expires_date = stringToDatetime(expires[-1]) return expires_date - time_now() except ValueError: # RFC7234 says 'A cache recipient MUST interpret invalid date formats, # especially the value "0", as representing a time in the past (i.e., # "already expired"). return 0 return None def _parse_cache_control(headers: Headers) -> Dict[bytes, Optional[bytes]]: cache_controls = {} cache_control_headers = headers.getRawHeaders(b"cache-control") or [] for hdr in cache_control_headers: for directive in hdr.split(b","): splits = [x.strip() for x in directive.split(b"=", 1)] k = splits[0].lower() v = splits[1] if len(splits) > 1 else None cache_controls[k] = v return cache_controls @attr.s(slots=True) class _FetchWellKnownFailure(Exception): # True if we didn't get a non-5xx HTTP response, i.e. this may or may not be # a temporary failure. temporary: bool = attr.ib() synapse-1.100.0/synapse/http/matrixfederationclient.py000066400000000000000000001571231455622526000231320ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import cgi import codecs import logging import random import sys import urllib.parse from http import HTTPStatus from io import BytesIO, StringIO from typing import ( TYPE_CHECKING, Any, BinaryIO, Callable, Dict, Generic, List, Optional, TextIO, Tuple, TypeVar, Union, cast, overload, ) import attr import treq from canonicaljson import encode_canonical_json from prometheus_client import Counter from signedjson.sign import sign_json from typing_extensions import Literal from twisted.internet import defer from twisted.internet.error import DNSLookupError from twisted.internet.interfaces import IReactorTime from twisted.internet.task import Cooperator from twisted.web.client import ResponseFailed from twisted.web.http_headers import Headers from twisted.web.iweb import IAgent, IBodyProducer, IResponse import synapse.metrics import synapse.util.retryutils from synapse.api.errors import ( Codes, FederationDeniedError, HttpResponseException, RequestSendFailed, SynapseError, ) from synapse.crypto.context_factory import FederationPolicyForHTTPS from synapse.http import QuieterFileBodyProducer from synapse.http.client import ( BlocklistingAgentWrapper, BodyExceededMaxSize, ByteWriteable, _make_scheduler, encode_query_args, read_body_with_max_size, ) from synapse.http.connectproxyclient import BearerProxyCredentials from synapse.http.federation.matrix_federation_agent import MatrixFederationAgent from synapse.http.proxyagent import ProxyAgent from synapse.http.types import QueryParams from synapse.logging import opentracing from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.logging.opentracing import set_tag, start_active_span, tags from synapse.types import JsonDict from synapse.util import json_decoder from synapse.util.async_helpers import AwakenableSleeper, timeout_deferred from synapse.util.metrics import Measure from synapse.util.stringutils import parse_and_validate_server_name if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) outgoing_requests_counter = Counter( "synapse_http_matrixfederationclient_requests", "", ["method"] ) incoming_responses_counter = Counter( "synapse_http_matrixfederationclient_responses", "", ["method", "code"] ) MAXINT = sys.maxsize _next_id = 1 T = TypeVar("T") class ByteParser(ByteWriteable, Generic[T], abc.ABC): """A `ByteWriteable` that has an additional `finish` function that returns the parsed data. """ CONTENT_TYPE: str = abc.abstractproperty() # type: ignore """The expected content type of the response, e.g. `application/json`. If the content type doesn't match we fail the request. """ # a federation response can be rather large (eg a big state_ids is 50M or so), so we # need a generous limit here. MAX_RESPONSE_SIZE: int = 100 * 1024 * 1024 """The largest response this parser will accept.""" @abc.abstractmethod def finish(self) -> T: """Called when response has finished streaming and the parser should return the final result (or error). """ @attr.s(slots=True, frozen=True, auto_attribs=True) class MatrixFederationRequest: method: str """HTTP method """ path: str """HTTP path """ destination: str """The remote server to send the HTTP request to. """ json: Optional[JsonDict] = None """JSON to send in the body. """ json_callback: Optional[Callable[[], JsonDict]] = None """A callback to generate the JSON. """ query: Optional[QueryParams] = None """Query arguments. """ txn_id: str = attr.ib(init=False) """Unique ID for this request (for logging), this is autogenerated. """ uri: bytes = b"" """The URI of this request, usually generated from the above information. """ _generate_uri: bool = True """True to automatically generate the uri field based on the above information. Set to False if manually configuring the URI. """ def __attrs_post_init__(self) -> None: global _next_id txn_id = "%s-O-%s" % (self.method, _next_id) _next_id = (_next_id + 1) % (MAXINT - 1) object.__setattr__(self, "txn_id", txn_id) if self._generate_uri: destination_bytes = self.destination.encode("ascii") path_bytes = self.path.encode("ascii") query_bytes = encode_query_args(self.query) # The object is frozen so we can pre-compute this. uri = urllib.parse.urlunparse( ( b"matrix-federation", destination_bytes, path_bytes, None, query_bytes, b"", ) ) object.__setattr__(self, "uri", uri) def get_json(self) -> Optional[JsonDict]: if self.json_callback: return self.json_callback() return self.json class _BaseJsonParser(ByteParser[T]): """A parser that buffers the response and tries to parse it as JSON.""" CONTENT_TYPE = "application/json" def __init__( self, validator: Optional[Callable[[Optional[object]], bool]] = None ) -> None: """ Args: validator: A callable which takes the parsed JSON value and returns true if the value is valid. """ self._buffer = StringIO() self._binary_wrapper = BinaryIOWrapper(self._buffer) self._validator = validator def write(self, data: bytes) -> int: return self._binary_wrapper.write(data) def finish(self) -> T: result = json_decoder.decode(self._buffer.getvalue()) if self._validator is not None and not self._validator(result): raise ValueError( f"Received incorrect JSON value: {result.__class__.__name__}" ) return result class JsonParser(_BaseJsonParser[JsonDict]): """A parser that buffers the response and tries to parse it as a JSON object.""" def __init__(self) -> None: super().__init__(self._validate) @staticmethod def _validate(v: Any) -> bool: return isinstance(v, dict) class LegacyJsonSendParser(_BaseJsonParser[Tuple[int, JsonDict]]): """Ensure the legacy responses of /send_join & /send_leave are correct.""" def __init__(self) -> None: super().__init__(self._validate) @staticmethod def _validate(v: Any) -> bool: # Match [integer, JSON dict] return ( isinstance(v, list) and len(v) == 2 and type(v[0]) == int # noqa: E721 and isinstance(v[1], dict) ) async def _handle_response( reactor: IReactorTime, timeout_sec: float, request: MatrixFederationRequest, response: IResponse, start_ms: int, parser: ByteParser[T], ) -> T: """ Reads the body of a response with a timeout and sends it to a parser Args: reactor: twisted reactor, for the timeout timeout_sec: number of seconds to wait for response to complete request: the request that triggered the response response: response to the request start_ms: Timestamp when request was made parser: The parser for the response Returns: The parsed response """ max_response_size = parser.MAX_RESPONSE_SIZE finished = False try: check_content_type_is(response.headers, parser.CONTENT_TYPE) d = read_body_with_max_size(response, parser, max_response_size) d = timeout_deferred(d, timeout=timeout_sec, reactor=reactor) length = await make_deferred_yieldable(d) finished = True value = parser.finish() except BodyExceededMaxSize as e: # The response was too big. logger.warning( "{%s} [%s] JSON response exceeded max size %i - %s %s", request.txn_id, request.destination, max_response_size, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=False) from e except ValueError as e: # The content was invalid. logger.warning( "{%s} [%s] Failed to parse response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=False) from e except defer.TimeoutError as e: logger.warning( "{%s} [%s] Timed out reading response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except ResponseFailed as e: logger.warning( "{%s} [%s] Failed to read response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except Exception as e: logger.warning( "{%s} [%s] Error reading response %s %s: %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), e, ) raise finally: if not finished: # There was an exception and we didn't `finish()` the parse. # Let the parser know that it can free up any resources. try: parser.finish() except Exception: # Ignore any additional exceptions. pass time_taken_secs = reactor.seconds() - start_ms / 1000 logger.info( "{%s} [%s] Completed request: %d %s in %.2f secs, got %d bytes - %s %s", request.txn_id, request.destination, response.code, response.phrase.decode("ascii", errors="replace"), time_taken_secs, length, request.method, request.uri.decode("ascii"), ) return value class BinaryIOWrapper: """A wrapper for a TextIO which converts from bytes on the fly.""" def __init__(self, file: TextIO, encoding: str = "utf-8", errors: str = "strict"): self.decoder = codecs.getincrementaldecoder(encoding)(errors) self.file = file def write(self, b: Union[bytes, bytearray]) -> int: self.file.write(self.decoder.decode(b)) return len(b) class MatrixFederationHttpClient: """HTTP client used to talk to other homeservers over the federation protocol. Send client certificates and signs requests. Attributes: agent (twisted.web.client.Agent): The twisted Agent used to send the requests. """ def __init__( self, hs: "HomeServer", tls_client_options_factory: Optional[FederationPolicyForHTTPS], ): self.hs = hs self.signing_key = hs.signing_key self.server_name = hs.hostname self.reactor = hs.get_reactor() user_agent = hs.version_string if hs.config.server.user_agent_suffix: user_agent = "%s %s" % (user_agent, hs.config.server.user_agent_suffix) outbound_federation_restricted_to = ( hs.config.worker.outbound_federation_restricted_to ) if hs.get_instance_name() in outbound_federation_restricted_to: # Talk to federation directly federation_agent: IAgent = MatrixFederationAgent( self.reactor, tls_client_options_factory, user_agent.encode("ascii"), hs.config.server.federation_ip_range_allowlist, hs.config.server.federation_ip_range_blocklist, ) else: proxy_authorization_secret = hs.config.worker.worker_replication_secret assert ( proxy_authorization_secret is not None ), "`worker_replication_secret` must be set when using `outbound_federation_restricted_to` (used to authenticate requests across workers)" federation_proxy_credentials = BearerProxyCredentials( proxy_authorization_secret.encode("ascii") ) # We need to talk to federation via the proxy via one of the configured # locations federation_proxy_locations = outbound_federation_restricted_to.locations federation_agent = ProxyAgent( self.reactor, self.reactor, tls_client_options_factory, federation_proxy_locations=federation_proxy_locations, federation_proxy_credentials=federation_proxy_credentials, ) # Use a BlocklistingAgentWrapper to prevent circumventing the IP # blocking via IP literals in server names self.agent: IAgent = BlocklistingAgentWrapper( federation_agent, ip_blocklist=hs.config.server.federation_ip_range_blocklist, ) self.clock = hs.get_clock() self._store = hs.get_datastores().main self.version_string_bytes = hs.version_string.encode("ascii") self.default_timeout_seconds = hs.config.federation.client_timeout_ms / 1000 self.max_long_retry_delay_seconds = ( hs.config.federation.max_long_retry_delay_ms / 1000 ) self.max_short_retry_delay_seconds = ( hs.config.federation.max_short_retry_delay_ms / 1000 ) self.max_long_retries = hs.config.federation.max_long_retries self.max_short_retries = hs.config.federation.max_short_retries self._cooperator = Cooperator(scheduler=_make_scheduler(self.reactor)) self._sleeper = AwakenableSleeper(self.reactor) def wake_destination(self, destination: str) -> None: """Called when the remote server may have come back online.""" self._sleeper.wake(destination) async def _send_request_with_optional_trailing_slash( self, request: MatrixFederationRequest, try_trailing_slash_on_400: bool = False, **send_request_args: Any, ) -> IResponse: """Wrapper for _send_request which can optionally retry the request upon receiving a combination of a 400 HTTP response code and a 'M_UNRECOGNIZED' errcode. This is a workaround for Synapse <= v0.99.3 due to https://github.com/matrix-org/synapse/issues/3622. Args: request: details of request to be sent try_trailing_slash_on_400: Whether on receiving a 400 'M_UNRECOGNIZED' from the server to retry the request with a trailing slash appended to the request path. send_request_args: A dictionary of arguments to pass to `_send_request()`. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). Returns: Parsed JSON response body. """ try: response = await self._send_request(request, **send_request_args) except HttpResponseException as e: # Received an HTTP error > 300. Check if it meets the requirements # to retry with a trailing slash if not try_trailing_slash_on_400: raise if e.code != 400 or e.to_synapse_error().errcode != "M_UNRECOGNIZED": raise # Retry with a trailing slash if we received a 400 with # 'M_UNRECOGNIZED' which some endpoints can return when omitting a # trailing slash on Synapse <= v0.99.3. logger.info("Retrying request with trailing slash") # Request is frozen so we create a new instance request = attr.evolve(request, path=request.path + "/") response = await self._send_request(request, **send_request_args) return response async def _send_request( self, request: MatrixFederationRequest, retry_on_dns_fail: bool = True, timeout: Optional[int] = None, long_retries: bool = False, ignore_backoff: bool = False, backoff_on_404: bool = False, backoff_on_all_error_codes: bool = False, follow_redirects: bool = False, ) -> IResponse: """ Sends a request to the given server. Args: request: details of request to be sent retry_on_dns_fail: true if the request should be retried on DNS failures timeout: number of milliseconds to wait for the response headers (including connecting to the server), *for each attempt*. 60s by default. long_retries: whether to use the long retry algorithm. The regular retry algorithm makes 4 attempts, with intervals [0.5s, 1s, 2s]. The long retry algorithm makes 11 attempts, with intervals [4s, 16s, 60s, 60s, ...] Both algorithms add -20%/+40% jitter to the retry intervals. Note that the above intervals are *in addition* to the time spent waiting for the request to complete (up to `timeout` ms). NB: the long retry algorithm takes over 20 minutes to complete, with a default timeout of 60s! It's best not to use the `long_retries` option for something that is blocking a client so we don't make them wait for aaaaages, whereas some things like sending transactions (server to server) we can be a lot more lenient but its very fuzzy / hand-wavey. In the future, we could be more intelligent about doing this sort of thing by looking at things with the bigger picture in mind, https://github.com/matrix-org/synapse/issues/8917 ignore_backoff: true to ignore the historical backoff data and try the request anyway. backoff_on_404: Back off if we get a 404 backoff_on_all_error_codes: Back off if we get any error response follow_redirects: True to follow the Location header of 307/308 redirect responses. This does not recurse. Returns: Resolves with the HTTP response object on success. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ # Validate server name and log if it is an invalid destination, this is # partially to help track down code paths where we haven't validated before here try: parse_and_validate_server_name(request.destination) except ValueError: logger.exception(f"Invalid destination: {request.destination}.") raise FederationDeniedError(request.destination) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout_seconds if ( self.hs.config.federation.federation_domain_whitelist is not None and request.destination not in self.hs.config.federation.federation_domain_whitelist ): raise FederationDeniedError(request.destination) limiter = await synapse.util.retryutils.get_retry_limiter( request.destination, self.clock, self._store, backoff_on_404=backoff_on_404, ignore_backoff=ignore_backoff, notifier=self.hs.get_notifier(), replication_client=self.hs.get_replication_command_handler(), backoff_on_all_error_codes=backoff_on_all_error_codes, ) method_bytes = request.method.encode("ascii") destination_bytes = request.destination.encode("ascii") path_bytes = request.path.encode("ascii") query_bytes = encode_query_args(request.query) scope = start_active_span( "outgoing-federation-request", tags={ tags.SPAN_KIND: tags.SPAN_KIND_RPC_CLIENT, tags.PEER_ADDRESS: request.destination, tags.HTTP_METHOD: request.method, tags.HTTP_URL: request.path, }, finish_on_close=True, ) # Inject the span into the headers headers_dict: Dict[bytes, List[bytes]] = {} opentracing.inject_header_dict(headers_dict, request.destination) headers_dict[b"User-Agent"] = [self.version_string_bytes] with limiter, scope: # XXX: Would be much nicer to retry only at the transaction-layer # (once we have reliable transactions in place) if long_retries: retries_left = self.max_long_retries else: retries_left = self.max_short_retries url_bytes = request.uri url_str = url_bytes.decode("ascii") url_to_sign_bytes = urllib.parse.urlunparse( (b"", b"", path_bytes, None, query_bytes, b"") ) while True: try: json = request.get_json() if json: headers_dict[b"Content-Type"] = [b"application/json"] auth_headers = self.build_auth_headers( destination_bytes, method_bytes, url_to_sign_bytes, json ) data = encode_canonical_json(json) producer: Optional[IBodyProducer] = QuieterFileBodyProducer( BytesIO(data), cooperator=self._cooperator ) else: producer = None auth_headers = self.build_auth_headers( destination_bytes, method_bytes, url_to_sign_bytes ) headers_dict[b"Authorization"] = auth_headers logger.debug( "{%s} [%s] Sending request: %s %s; timeout %fs", request.txn_id, request.destination, request.method, url_str, _sec_timeout, ) outgoing_requests_counter.labels(request.method).inc() try: with Measure(self.clock, "outbound_request"): # we don't want all the fancy cookie and redirect handling # that treq.request gives: just use the raw Agent. # To preserve the logging context, the timeout is treated # in a similar way to `defer.gatherResults`: # * Each logging context-preserving fork is wrapped in # `run_in_background`. In this case there is only one, # since the timeout fork is not logging-context aware. # * The `Deferred` that joins the forks back together is # wrapped in `make_deferred_yieldable` to restore the # logging context regardless of the path taken. request_deferred = run_in_background( self.agent.request, method_bytes, url_bytes, headers=Headers(headers_dict), bodyProducer=producer, ) request_deferred = timeout_deferred( request_deferred, timeout=_sec_timeout, reactor=self.reactor, ) response = await make_deferred_yieldable(request_deferred) except DNSLookupError as e: raise RequestSendFailed(e, can_retry=retry_on_dns_fail) from e except Exception as e: raise RequestSendFailed(e, can_retry=True) from e incoming_responses_counter.labels( request.method, response.code ).inc() set_tag(tags.HTTP_STATUS_CODE, response.code) response_phrase = response.phrase.decode("ascii", errors="replace") if 200 <= response.code < 300: logger.debug( "{%s} [%s] Got response headers: %d %s", request.txn_id, request.destination, response.code, response_phrase, ) elif ( response.code in (307, 308) and follow_redirects and response.headers.hasHeader("Location") ): # The Location header *might* be relative so resolve it. location = response.headers.getRawHeaders(b"Location")[0] new_uri = urllib.parse.urljoin(request.uri, location) return await self._send_request( attr.evolve(request, uri=new_uri, generate_uri=False), retry_on_dns_fail, timeout, long_retries, ignore_backoff, backoff_on_404, backoff_on_all_error_codes, # Do not continue following redirects. follow_redirects=False, ) else: logger.info( "{%s} [%s] Got response headers: %d %s", request.txn_id, request.destination, response.code, response_phrase, ) # :'( # Update transactions table? d = treq.content(response) d = timeout_deferred( d, timeout=_sec_timeout, reactor=self.reactor ) try: body = await make_deferred_yieldable(d) except Exception as e: # Eh, we're already going to raise an exception so lets # ignore if this fails. logger.warning( "{%s} [%s] Failed to get error response: %s %s: %s", request.txn_id, request.destination, request.method, url_str, _flatten_response_never_received(e), ) body = None exc = HttpResponseException( response.code, response_phrase, body ) # Retry if the error is a 5xx or a 429 (Too Many # Requests), otherwise just raise a standard # `HttpResponseException` if 500 <= response.code < 600 or response.code == 429: raise RequestSendFailed(exc, can_retry=True) from exc else: raise exc break except RequestSendFailed as e: logger.info( "{%s} [%s] Request failed: %s %s: %s", request.txn_id, request.destination, request.method, url_str, _flatten_response_never_received(e.inner_exception), ) if not e.can_retry: raise if retries_left and not timeout: if long_retries: delay_seconds = 4 ** ( self.max_long_retries + 1 - retries_left ) delay_seconds = min( delay_seconds, self.max_long_retry_delay_seconds ) delay_seconds *= random.uniform(0.8, 1.4) else: delay_seconds = 0.5 * 2 ** ( self.max_short_retries - retries_left ) delay_seconds = min( delay_seconds, self.max_short_retry_delay_seconds ) delay_seconds *= random.uniform(0.8, 1.4) logger.debug( "{%s} [%s] Waiting %ss before re-sending...", request.txn_id, request.destination, delay_seconds, ) # Sleep for the calculated delay, or wake up immediately # if we get notified that the server is back up. await self._sleeper.sleep( request.destination, delay_seconds * 1000 ) retries_left -= 1 else: raise except Exception as e: logger.warning( "{%s} [%s] Request failed: %s %s: %s", request.txn_id, request.destination, request.method, url_str, _flatten_response_never_received(e), ) raise return response def build_auth_headers( self, destination: Optional[bytes], method: bytes, url_bytes: bytes, content: Optional[JsonDict] = None, destination_is: Optional[bytes] = None, ) -> List[bytes]: """ Builds the Authorization headers for a federation request Args: destination: The destination homeserver of the request. May be None if the destination is an identity server, in which case destination_is must be non-None. method: The HTTP method of the request url_bytes: The URI path of the request content: The body of the request destination_is: As 'destination', but if the destination is an identity server Returns: A list of headers to be added as "Authorization:" headers """ if not destination and not destination_is: raise ValueError( "At least one of the arguments destination and destination_is " "must be a nonempty bytestring." ) request: JsonDict = { "method": method.decode("ascii"), "uri": url_bytes.decode("ascii"), "origin": self.server_name, } if destination is not None: request["destination"] = destination.decode("ascii") if destination_is is not None: request["destination_is"] = destination_is.decode("ascii") if content is not None: request["content"] = content request = sign_json(request, self.server_name, self.signing_key) auth_headers = [] for key, sig in request["signatures"][self.server_name].items(): auth_headers.append( ( 'X-Matrix origin="%s",key="%s",sig="%s",destination="%s"' % ( self.server_name, key, sig, request.get("destination") or request["destination_is"], ) ).encode("ascii") ) return auth_headers @overload async def put_json( self, destination: str, path: str, args: Optional[QueryParams] = None, data: Optional[JsonDict] = None, json_data_callback: Optional[Callable[[], JsonDict]] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, backoff_on_404: bool = False, try_trailing_slash_on_400: bool = False, parser: Literal[None] = None, backoff_on_all_error_codes: bool = False, ) -> JsonDict: ... @overload async def put_json( self, destination: str, path: str, args: Optional[QueryParams] = None, data: Optional[JsonDict] = None, json_data_callback: Optional[Callable[[], JsonDict]] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, backoff_on_404: bool = False, try_trailing_slash_on_400: bool = False, parser: Optional[ByteParser[T]] = None, backoff_on_all_error_codes: bool = False, ) -> T: ... async def put_json( self, destination: str, path: str, args: Optional[QueryParams] = None, data: Optional[JsonDict] = None, json_data_callback: Optional[Callable[[], JsonDict]] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, backoff_on_404: bool = False, try_trailing_slash_on_400: bool = False, parser: Optional[ByteParser[T]] = None, backoff_on_all_error_codes: bool = False, ) -> Union[JsonDict, T]: """Sends the specified json data using PUT Args: destination: The remote server to send the HTTP request to. path: The HTTP path. args: query params data: A dict containing the data that will be used as the request body. This will be encoded as JSON. json_data_callback: A callable returning the dict to use as the request body. long_retries: whether to use the long retry algorithm. See docs on _send_request for details. timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. backoff_on_404: True if we should count a 404 response as a failure of the server (and should therefore back off future requests). try_trailing_slash_on_400: True if on a 400 M_UNRECOGNIZED response we should try appending a trailing slash to the end of the request. Workaround for https://github.com/matrix-org/synapse/issues/3622 in Synapse <= v0.99.3. This will be attempted before backing off if backing off has been enabled. parser: The parser to use to decode the response. Defaults to parsing as JSON. backoff_on_all_error_codes: Back off if we get any error response Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="PUT", destination=destination, path=path, query=args, json_callback=json_data_callback, json=data, ) start_ms = self.clock.time_msec() response = await self._send_request_with_optional_trailing_slash( request, try_trailing_slash_on_400, backoff_on_404=backoff_on_404, ignore_backoff=ignore_backoff, long_retries=long_retries, timeout=timeout, backoff_on_all_error_codes=backoff_on_all_error_codes, ) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout_seconds if parser is None: parser = cast(ByteParser[T], JsonParser()) body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=parser, ) return body async def post_json( self, destination: str, path: str, data: Optional[JsonDict] = None, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, args: Optional[QueryParams] = None, ) -> JsonDict: """Sends the specified json data using POST Args: destination: The remote server to send the HTTP request to. path: The HTTP path. data: A dict containing the data that will be used as the request body. This will be encoded as JSON. long_retries: whether to use the long retry algorithm. See docs on _send_request for details. timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. args: query params Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="POST", destination=destination, path=path, query=args, json=data ) start_ms = self.clock.time_msec() response = await self._send_request( request, long_retries=long_retries, timeout=timeout, ignore_backoff=ignore_backoff, ) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout_seconds body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=JsonParser() ) return body @overload async def get_json( self, destination: str, path: str, args: Optional[QueryParams] = None, retry_on_dns_fail: bool = True, timeout: Optional[int] = None, ignore_backoff: bool = False, try_trailing_slash_on_400: bool = False, parser: Literal[None] = None, ) -> JsonDict: ... @overload async def get_json( self, destination: str, path: str, args: Optional[QueryParams] = ..., retry_on_dns_fail: bool = ..., timeout: Optional[int] = ..., ignore_backoff: bool = ..., try_trailing_slash_on_400: bool = ..., parser: ByteParser[T] = ..., ) -> T: ... async def get_json( self, destination: str, path: str, args: Optional[QueryParams] = None, retry_on_dns_fail: bool = True, timeout: Optional[int] = None, ignore_backoff: bool = False, try_trailing_slash_on_400: bool = False, parser: Optional[ByteParser[T]] = None, ) -> Union[JsonDict, T]: """GETs some json from the given host homeserver and path Args: destination: The remote server to send the HTTP request to. path: The HTTP path. args: A dictionary used to create query strings, defaults to None. retry_on_dns_fail: true if the request should be retried on DNS failures timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. try_trailing_slash_on_400: True if on a 400 M_UNRECOGNIZED response we should try appending a trailing slash to the end of the request. Workaround for https://github.com/matrix-org/synapse/issues/3622 in Synapse <= v0.99.3. parser: The parser to use to decode the response. Defaults to parsing as JSON. Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ json_dict, _ = await self.get_json_with_headers( destination=destination, path=path, args=args, retry_on_dns_fail=retry_on_dns_fail, timeout=timeout, ignore_backoff=ignore_backoff, try_trailing_slash_on_400=try_trailing_slash_on_400, parser=parser, ) return json_dict @overload async def get_json_with_headers( self, destination: str, path: str, args: Optional[QueryParams] = None, retry_on_dns_fail: bool = True, timeout: Optional[int] = None, ignore_backoff: bool = False, try_trailing_slash_on_400: bool = False, parser: Literal[None] = None, ) -> Tuple[JsonDict, Dict[bytes, List[bytes]]]: ... @overload async def get_json_with_headers( self, destination: str, path: str, args: Optional[QueryParams] = ..., retry_on_dns_fail: bool = ..., timeout: Optional[int] = ..., ignore_backoff: bool = ..., try_trailing_slash_on_400: bool = ..., parser: ByteParser[T] = ..., ) -> Tuple[T, Dict[bytes, List[bytes]]]: ... async def get_json_with_headers( self, destination: str, path: str, args: Optional[QueryParams] = None, retry_on_dns_fail: bool = True, timeout: Optional[int] = None, ignore_backoff: bool = False, try_trailing_slash_on_400: bool = False, parser: Optional[ByteParser[T]] = None, ) -> Tuple[Union[JsonDict, T], Dict[bytes, List[bytes]]]: """GETs some json from the given host homeserver and path Args: destination: The remote server to send the HTTP request to. path: The HTTP path. args: A dictionary used to create query strings, defaults to None. retry_on_dns_fail: true if the request should be retried on DNS failures timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. try_trailing_slash_on_400: True if on a 400 M_UNRECOGNIZED response we should try appending a trailing slash to the end of the request. Workaround for https://github.com/matrix-org/synapse/issues/3622 in Synapse <= v0.99.3. parser: The parser to use to decode the response. Defaults to parsing as JSON. Returns: Succeeds when we get a 2xx HTTP response. The result will be a tuple of the decoded JSON body and a dict of the response headers. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="GET", destination=destination, path=path, query=args ) start_ms = self.clock.time_msec() response = await self._send_request_with_optional_trailing_slash( request, try_trailing_slash_on_400, backoff_on_404=False, ignore_backoff=ignore_backoff, retry_on_dns_fail=retry_on_dns_fail, timeout=timeout, ) headers = dict(response.headers.getAllRawHeaders()) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout_seconds if parser is None: parser = cast(ByteParser[T], JsonParser()) body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=parser, ) return body, headers async def delete_json( self, destination: str, path: str, long_retries: bool = False, timeout: Optional[int] = None, ignore_backoff: bool = False, args: Optional[QueryParams] = None, ) -> JsonDict: """Send a DELETE request to the remote expecting some json response Args: destination: The remote server to send the HTTP request to. path: The HTTP path. long_retries: whether to use the long retry algorithm. See docs on _send_request for details. timeout: number of milliseconds to wait for the response. self._default_timeout (60s) by default. Note that we may make several attempts to send the request; this timeout applies to the time spent waiting for response headers for *each* attempt (including connection time) as well as the time spent reading the response body after a 200 response. ignore_backoff: true to ignore the historical backoff data and try the request anyway. args: query params Returns: Succeeds when we get a 2xx HTTP response. The result will be the decoded JSON body. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="DELETE", destination=destination, path=path, query=args ) start_ms = self.clock.time_msec() response = await self._send_request( request, long_retries=long_retries, timeout=timeout, ignore_backoff=ignore_backoff, ) if timeout is not None: _sec_timeout = timeout / 1000 else: _sec_timeout = self.default_timeout_seconds body = await _handle_response( self.reactor, _sec_timeout, request, response, start_ms, parser=JsonParser() ) return body async def get_file( self, destination: str, path: str, output_stream: BinaryIO, args: Optional[QueryParams] = None, retry_on_dns_fail: bool = True, max_size: Optional[int] = None, ignore_backoff: bool = False, follow_redirects: bool = False, ) -> Tuple[int, Dict[bytes, List[bytes]]]: """GETs a file from a given homeserver Args: destination: The remote server to send the HTTP request to. path: The HTTP path to GET. output_stream: File to write the response body to. args: Optional dictionary used to create the query string. ignore_backoff: true to ignore the historical backoff data and try the request anyway. follow_redirects: True to follow the Location header of 307/308 redirect responses. This does not recurse. Returns: Resolves with an (int,dict) tuple of the file length and a dict of the response headers. Raises: HttpResponseException: If we get an HTTP response code >= 300 (except 429). NotRetryingDestination: If we are not yet ready to retry this server. FederationDeniedError: If this destination is not on our federation whitelist RequestSendFailed: If there were problems connecting to the remote, due to e.g. DNS failures, connection timeouts etc. """ request = MatrixFederationRequest( method="GET", destination=destination, path=path, query=args ) response = await self._send_request( request, retry_on_dns_fail=retry_on_dns_fail, ignore_backoff=ignore_backoff, follow_redirects=follow_redirects, ) headers = dict(response.headers.getAllRawHeaders()) try: d = read_body_with_max_size(response, output_stream, max_size) d.addTimeout(self.default_timeout_seconds, self.reactor) length = await make_deferred_yieldable(d) except BodyExceededMaxSize: msg = "Requested file is too large > %r bytes" % (max_size,) logger.warning( "{%s} [%s] %s", request.txn_id, request.destination, msg, ) raise SynapseError(HTTPStatus.BAD_GATEWAY, msg, Codes.TOO_LARGE) except defer.TimeoutError as e: logger.warning( "{%s} [%s] Timed out reading response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except ResponseFailed as e: logger.warning( "{%s} [%s] Failed to read response - %s %s", request.txn_id, request.destination, request.method, request.uri.decode("ascii"), ) raise RequestSendFailed(e, can_retry=True) from e except Exception as e: logger.warning( "{%s} [%s] Error reading response: %s", request.txn_id, request.destination, e, ) raise logger.info( "{%s} [%s] Completed: %d %s [%d bytes] %s %s", request.txn_id, request.destination, response.code, response.phrase.decode("ascii", errors="replace"), length, request.method, request.uri.decode("ascii"), ) return length, headers def _flatten_response_never_received(e: BaseException) -> str: if hasattr(e, "reasons"): reasons = ", ".join( _flatten_response_never_received(f.value) for f in e.reasons ) return "%s:[%s]" % (type(e).__name__, reasons) else: return repr(e) def check_content_type_is(headers: Headers, expected_content_type: str) -> None: """ Check that a set of HTTP headers have a Content-Type header, and that it is the expected value.. Args: headers: headers to check Raises: RequestSendFailed: if the Content-Type header is missing or doesn't match """ content_type_headers = headers.getRawHeaders(b"Content-Type") if content_type_headers is None: raise RequestSendFailed( RuntimeError("No Content-Type header received from remote server"), can_retry=False, ) c_type = content_type_headers[0].decode("ascii") # only the first header val, options = cgi.parse_header(c_type) if val != expected_content_type: raise RequestSendFailed( RuntimeError( f"Remote server sent Content-Type header of '{c_type}', not '{expected_content_type}'", ), can_retry=False, ) synapse-1.100.0/synapse/http/proxy.py000066400000000000000000000237231455622526000175450ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import json import logging import urllib.parse from typing import TYPE_CHECKING, Any, Optional, Set, Tuple, cast from twisted.internet import protocol from twisted.internet.interfaces import ITCPTransport from twisted.internet.protocol import connectionDone from twisted.python import failure from twisted.python.failure import Failure from twisted.web.client import ResponseDone from twisted.web.http_headers import Headers from twisted.web.iweb import IResponse from twisted.web.resource import IResource from twisted.web.server import Request, Site from synapse.api.errors import Codes, InvalidProxyCredentialsError from synapse.http import QuieterFileBodyProducer from synapse.http.server import _AsyncResource from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.types import ISynapseReactor from synapse.util.async_helpers import timeout_deferred if TYPE_CHECKING: from synapse.http.site import SynapseRequest from synapse.server import HomeServer logger = logging.getLogger(__name__) # "Hop-by-hop" headers (as opposed to "end-to-end" headers) as defined by RFC2616 # section 13.5.1 and referenced in RFC9110 section 7.6.1. These are meant to only be # consumed by the immediate recipient and not be forwarded on. HOP_BY_HOP_HEADERS = { "Connection", "Keep-Alive", "Proxy-Authenticate", "Proxy-Authorization", "TE", "Trailers", "Transfer-Encoding", "Upgrade", } def parse_connection_header_value( connection_header_value: Optional[bytes], ) -> Set[str]: """ Parse the `Connection` header to determine which headers we should not be copied over from the remote response. As defined by RFC2616 section 14.10 and RFC9110 section 7.6.1 Example: `Connection: close, X-Foo, X-Bar` will return `{"Close", "X-Foo", "X-Bar"}` Even though "close" is a special directive, let's just treat it as just another header for simplicity. If people want to check for this directive, they can simply check for `"Close" in headers`. Args: connection_header_value: The value of the `Connection` header. Returns: The set of header names that should not be copied over from the remote response. The keys are capitalized in canonical capitalization. """ headers = Headers() extra_headers_to_remove: Set[str] = set() if connection_header_value: extra_headers_to_remove = { headers._canonicalNameCaps(connection_option.strip()).decode("ascii") for connection_option in connection_header_value.split(b",") } return extra_headers_to_remove class ProxyResource(_AsyncResource): """ A stub resource that proxies any requests with a `matrix-federation://` scheme through the given `federation_agent` to the remote homeserver and ferries back the info. """ isLeaf = True def __init__(self, reactor: ISynapseReactor, hs: "HomeServer"): super().__init__(True) self.reactor = reactor self.agent = hs.get_federation_http_client().agent self._proxy_authorization_secret = hs.config.worker.worker_replication_secret def _check_auth(self, request: Request) -> None: # The `matrix-federation://` proxy functionality can only be used with auth. # Protect homserver admins forgetting to configure a secret. assert self._proxy_authorization_secret is not None # Get the authorization header. auth_headers = request.requestHeaders.getRawHeaders(b"Proxy-Authorization") if not auth_headers: raise InvalidProxyCredentialsError( "Missing Proxy-Authorization header.", Codes.MISSING_TOKEN ) if len(auth_headers) > 1: raise InvalidProxyCredentialsError( "Too many Proxy-Authorization headers.", Codes.UNAUTHORIZED ) parts = auth_headers[0].split(b" ") if parts[0] == b"Bearer" and len(parts) == 2: received_secret = parts[1].decode("ascii") if self._proxy_authorization_secret == received_secret: # Success! return raise InvalidProxyCredentialsError( "Invalid Proxy-Authorization header.", Codes.UNAUTHORIZED ) async def _async_render(self, request: "SynapseRequest") -> Tuple[int, Any]: uri = urllib.parse.urlparse(request.uri) assert uri.scheme == b"matrix-federation" # Check the authorization headers before handling the request. self._check_auth(request) headers = Headers() for header_name in (b"User-Agent", b"Authorization", b"Content-Type"): header_value = request.getHeader(header_name) if header_value: headers.addRawHeader(header_name, header_value) request_deferred = run_in_background( self.agent.request, request.method, request.uri, headers=headers, bodyProducer=QuieterFileBodyProducer(request.content), ) request_deferred = timeout_deferred( request_deferred, # This should be set longer than the timeout in `MatrixFederationHttpClient` # so that it has enough time to complete and pass us the data before we give # up. timeout=90, reactor=self.reactor, ) response = await make_deferred_yieldable(request_deferred) return response.code, response def _send_response( self, request: "SynapseRequest", code: int, response_object: Any, ) -> None: response = cast(IResponse, response_object) response_headers = cast(Headers, response.headers) request.setResponseCode(code) # The `Connection` header also defines which headers should not be copied over. connection_header = response_headers.getRawHeaders(b"connection") extra_headers_to_remove = parse_connection_header_value( connection_header[0] if connection_header else None ) # Copy headers. for k, v in response_headers.getAllRawHeaders(): # Do not copy over any hop-by-hop headers. These are meant to only be # consumed by the immediate recipient and not be forwarded on. header_key = k.decode("ascii") if ( header_key in HOP_BY_HOP_HEADERS or header_key in extra_headers_to_remove ): continue request.responseHeaders.setRawHeaders(k, v) response.deliverBody(_ProxyResponseBody(request)) def _send_error_response( self, f: failure.Failure, request: "SynapseRequest", ) -> None: if isinstance(f.value, InvalidProxyCredentialsError): error_response_code = f.value.code error_response_json = {"errcode": f.value.errcode, "err": f.value.msg} else: error_response_code = 502 error_response_json = { "errcode": Codes.UNKNOWN, "err": "ProxyResource: Error when proxying request: %s %s -> %s" % ( request.method.decode("ascii"), request.uri.decode("ascii"), f, ), } request.setResponseCode(error_response_code) request.setHeader(b"Content-Type", b"application/json") request.write((json.dumps(error_response_json)).encode()) request.finish() class _ProxyResponseBody(protocol.Protocol): """ A protocol that proxies the given remote response data back out to the given local request. """ transport: Optional[ITCPTransport] = None def __init__(self, request: "SynapseRequest") -> None: self._request = request def dataReceived(self, data: bytes) -> None: # Avoid sending response data to the local request that already disconnected if self._request._disconnected and self.transport is not None: # Close the connection (forcefully) since all the data will get # discarded anyway. self.transport.abortConnection() return self._request.write(data) def connectionLost(self, reason: Failure = connectionDone) -> None: # If the local request is already finished (successfully or failed), don't # worry about sending anything back. if self._request.finished: return if reason.check(ResponseDone): self._request.finish() else: # Abort the underlying request since our remote request also failed. self._request.transport.abortConnection() class ProxySite(Site): """ Proxies any requests with a `matrix-federation://` scheme through the given `federation_agent`. Otherwise, behaves like a normal `Site`. """ def __init__( self, resource: IResource, reactor: ISynapseReactor, hs: "HomeServer", ): super().__init__(resource, reactor=reactor) self._proxy_resource = ProxyResource(reactor, hs=hs) def getResourceFor(self, request: "SynapseRequest") -> IResource: uri = urllib.parse.urlparse(request.uri) if uri.scheme == b"matrix-federation": return self._proxy_resource return super().getResourceFor(request) synapse-1.100.0/synapse/http/proxyagent.py000066400000000000000000000423411455622526000205610ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import random import re from typing import Any, Collection, Dict, List, Optional, Sequence, Tuple from urllib.parse import urlparse from urllib.request import ( # type: ignore[attr-defined] getproxies_environment, proxy_bypass_environment, ) from zope.interface import implementer from twisted.internet import defer from twisted.internet.endpoints import ( HostnameEndpoint, UNIXClientEndpoint, wrapClientTLS, ) from twisted.internet.interfaces import ( IProtocol, IProtocolFactory, IReactorCore, IStreamClientEndpoint, ) from twisted.python.failure import Failure from twisted.web.client import ( URI, BrowserLikePolicyForHTTPS, HTTPConnectionPool, _AgentBase, ) from twisted.web.error import SchemeNotSupported from twisted.web.http_headers import Headers from twisted.web.iweb import IAgent, IBodyProducer, IPolicyForHTTPS, IResponse from synapse.config.workers import ( InstanceLocationConfig, InstanceTcpLocationConfig, InstanceUnixLocationConfig, ) from synapse.http import redact_uri from synapse.http.connectproxyclient import ( BasicProxyCredentials, HTTPConnectProxyEndpoint, ProxyCredentials, ) from synapse.logging.context import run_in_background logger = logging.getLogger(__name__) _VALID_URI = re.compile(rb"\A[\x21-\x7e]+\Z") @implementer(IAgent) class ProxyAgent(_AgentBase): """An Agent implementation which will use an HTTP proxy if one was requested Args: reactor: twisted reactor to place outgoing connections. proxy_reactor: twisted reactor to use for connections to the proxy server reactor might have some blocking applied (i.e. for DNS queries), but we need unblocked access to the proxy. contextFactory: A factory for TLS contexts, to control the verification parameters of OpenSSL. The default is to use a `BrowserLikePolicyForHTTPS`, so unless you have special requirements you can leave this as-is. connectTimeout: The amount of time that this Agent will wait for the peer to accept a connection, in seconds. If 'None', HostnameEndpoint's default (30s) will be used. This is used for connections to both proxies and destination servers. bindAddress: The local address for client sockets to bind to. pool: connection pool to be used. If None, a non-persistent pool instance will be created. use_proxy: Whether proxy settings should be discovered and used from conventional environment variables. federation_proxy_locations: An optional list of locations to proxy outbound federation traffic through (only requests that use the `matrix-federation://` scheme will be proxied). federation_proxy_credentials: Required if `federation_proxy_locations` is set. The credentials to use when proxying outbound federation traffic through another worker. Raises: ValueError if use_proxy is set and the environment variables contain an invalid proxy specification. RuntimeError if no tls_options_factory is given for a https connection """ def __init__( self, reactor: IReactorCore, proxy_reactor: Optional[IReactorCore] = None, contextFactory: Optional[IPolicyForHTTPS] = None, connectTimeout: Optional[float] = None, bindAddress: Optional[bytes] = None, pool: Optional[HTTPConnectionPool] = None, use_proxy: bool = False, federation_proxy_locations: Collection[InstanceLocationConfig] = (), federation_proxy_credentials: Optional[ProxyCredentials] = None, ): contextFactory = contextFactory or BrowserLikePolicyForHTTPS() _AgentBase.__init__(self, reactor, pool) if proxy_reactor is None: self.proxy_reactor = reactor else: self.proxy_reactor = proxy_reactor self._endpoint_kwargs: Dict[str, Any] = {} if connectTimeout is not None: self._endpoint_kwargs["timeout"] = connectTimeout if bindAddress is not None: self._endpoint_kwargs["bindAddress"] = bindAddress http_proxy = None https_proxy = None no_proxy = None if use_proxy: proxies = getproxies_environment() http_proxy = proxies["http"].encode() if "http" in proxies else None https_proxy = proxies["https"].encode() if "https" in proxies else None no_proxy = proxies["no"] if "no" in proxies else None self.http_proxy_endpoint, self.http_proxy_creds = http_proxy_endpoint( http_proxy, self.proxy_reactor, contextFactory, **self._endpoint_kwargs ) self.https_proxy_endpoint, self.https_proxy_creds = http_proxy_endpoint( https_proxy, self.proxy_reactor, contextFactory, **self._endpoint_kwargs ) self.no_proxy = no_proxy self._policy_for_https = contextFactory self._reactor = reactor self._federation_proxy_endpoint: Optional[IStreamClientEndpoint] = None self._federation_proxy_credentials: Optional[ProxyCredentials] = None if federation_proxy_locations: assert ( federation_proxy_credentials is not None ), "`federation_proxy_credentials` are required when using `federation_proxy_locations`" endpoints: List[IStreamClientEndpoint] = [] for federation_proxy_location in federation_proxy_locations: endpoint: IStreamClientEndpoint if isinstance(federation_proxy_location, InstanceTcpLocationConfig): endpoint = HostnameEndpoint( self.proxy_reactor, federation_proxy_location.host, federation_proxy_location.port, ) if federation_proxy_location.tls: tls_connection_creator = ( self._policy_for_https.creatorForNetloc( federation_proxy_location.host.encode("utf-8"), federation_proxy_location.port, ) ) endpoint = wrapClientTLS(tls_connection_creator, endpoint) elif isinstance(federation_proxy_location, InstanceUnixLocationConfig): endpoint = UNIXClientEndpoint( self.proxy_reactor, federation_proxy_location.path ) else: # It is supremely unlikely we ever hit this raise SchemeNotSupported( f"Unknown type of Endpoint requested, check {federation_proxy_location}" ) endpoints.append(endpoint) self._federation_proxy_endpoint = _RandomSampleEndpoints(endpoints) self._federation_proxy_credentials = federation_proxy_credentials def request( self, method: bytes, uri: bytes, headers: Optional[Headers] = None, bodyProducer: Optional[IBodyProducer] = None, ) -> "defer.Deferred[IResponse]": """ Issue a request to the server indicated by the given uri. Supports `http` and `https` schemes. An existing connection from the connection pool may be used or a new one may be created. See also: twisted.web.iweb.IAgent.request Args: method: The request method to use, such as `GET`, `POST`, etc uri: The location of the resource to request. headers: Extra headers to send with the request bodyProducer: An object which can generate bytes to make up the body of this request (for example, the properly encoded contents of a file for a file upload). Or, None if the request is to have no body. Returns: A deferred which completes when the header of the response has been received (regardless of the response status code). Can fail with: SchemeNotSupported: if the uri is not http or https twisted.internet.error.TimeoutError if the server we are connecting to (proxy or destination) does not accept a connection before connectTimeout. ... other things too. """ uri = uri.strip() if not _VALID_URI.match(uri): raise ValueError(f"Invalid URI {uri!r}") parsed_uri = URI.fromBytes(uri) pool_key = f"{parsed_uri.scheme!r}{parsed_uri.host!r}{parsed_uri.port}" request_path = parsed_uri.originForm should_skip_proxy = False if self.no_proxy is not None: should_skip_proxy = proxy_bypass_environment( parsed_uri.host.decode(), proxies={"no": self.no_proxy}, ) if ( parsed_uri.scheme == b"http" and self.http_proxy_endpoint and not should_skip_proxy ): # Determine whether we need to set Proxy-Authorization headers if self.http_proxy_creds: # Set a Proxy-Authorization header if headers is None: headers = Headers() headers.addRawHeader( b"Proxy-Authorization", self.http_proxy_creds.as_proxy_authorization_value(), ) # Cache *all* connections under the same key, since we are only # connecting to a single destination, the proxy: pool_key = "http-proxy" endpoint = self.http_proxy_endpoint request_path = uri elif ( parsed_uri.scheme == b"https" and self.https_proxy_endpoint and not should_skip_proxy ): endpoint = HTTPConnectProxyEndpoint( self.proxy_reactor, self.https_proxy_endpoint, parsed_uri.host, parsed_uri.port, self.https_proxy_creds, ) elif ( parsed_uri.scheme == b"matrix-federation" and self._federation_proxy_endpoint ): assert ( self._federation_proxy_credentials is not None ), "`federation_proxy_credentials` are required when using `federation_proxy_locations`" # Set a Proxy-Authorization header if headers is None: headers = Headers() # We always need authentication for the outbound federation proxy headers.addRawHeader( b"Proxy-Authorization", self._federation_proxy_credentials.as_proxy_authorization_value(), ) endpoint = self._federation_proxy_endpoint request_path = uri else: # not using a proxy endpoint = HostnameEndpoint( self._reactor, parsed_uri.host, parsed_uri.port, **self._endpoint_kwargs ) logger.debug( "Requesting %s via %s", redact_uri(uri.decode("ascii", errors="replace")), endpoint, ) if parsed_uri.scheme == b"https": tls_connection_creator = self._policy_for_https.creatorForNetloc( parsed_uri.host, parsed_uri.port ) endpoint = wrapClientTLS(tls_connection_creator, endpoint) elif parsed_uri.scheme == b"http": pass elif ( parsed_uri.scheme == b"matrix-federation" and self._federation_proxy_endpoint ): pass else: return defer.fail( Failure( SchemeNotSupported("Unsupported scheme: %r" % (parsed_uri.scheme,)) ) ) return self._requestWithEndpoint( pool_key, endpoint, method, parsed_uri, headers, bodyProducer, request_path ) def http_proxy_endpoint( proxy: Optional[bytes], reactor: IReactorCore, tls_options_factory: Optional[IPolicyForHTTPS], **kwargs: object, ) -> Tuple[Optional[IStreamClientEndpoint], Optional[ProxyCredentials]]: """Parses an http proxy setting and returns an endpoint for the proxy Args: proxy: the proxy setting in the form: [scheme://][:@][:] This currently supports http:// and https:// proxies. A hostname without scheme is assumed to be http. reactor: reactor to be used to connect to the proxy tls_options_factory: the TLS options to use when connecting through a https proxy kwargs: other args to be passed to HostnameEndpoint Returns: a tuple of endpoint to use to connect to the proxy, or None ProxyCredentials or if no credentials were found, or None Raise: ValueError if proxy has no hostname or unsupported scheme. RuntimeError if no tls_options_factory is given for a https connection """ if proxy is None: return None, None # Note: urlsplit/urlparse cannot be used here as that does not work (for Python # 3.9+) on scheme-less proxies, e.g. host:port. scheme, host, port, credentials = parse_proxy(proxy) proxy_endpoint = HostnameEndpoint(reactor, host, port, **kwargs) if scheme == b"https": if tls_options_factory: tls_options = tls_options_factory.creatorForNetloc(host, port) proxy_endpoint = wrapClientTLS(tls_options, proxy_endpoint) else: raise RuntimeError( f"No TLS options for a https connection via proxy {proxy!s}" ) return proxy_endpoint, credentials def parse_proxy( proxy: bytes, default_scheme: bytes = b"http", default_port: int = 1080 ) -> Tuple[bytes, bytes, int, Optional[ProxyCredentials]]: """ Parse a proxy connection string. Given a HTTP proxy URL, breaks it down into components and checks that it has a hostname (otherwise it is not useful to us when trying to find a proxy) and asserts that the URL has a scheme we support. Args: proxy: The proxy connection string. Must be in the form '[scheme://][:@]host[:port]'. default_scheme: The default scheme to return if one is not found in `proxy`. Defaults to http default_port: The default port to return if one is not found in `proxy`. Defaults to 1080 Returns: A tuple containing the scheme, hostname, port and ProxyCredentials. If no credentials were found, the ProxyCredentials instance is replaced with None. Raise: ValueError if proxy has no hostname or unsupported scheme. """ # First check if we have a scheme present # Note: urlsplit/urlparse cannot be used (for Python # 3.9+) on scheme-less proxies, e.g. host:port. if b"://" not in proxy: proxy = b"".join([default_scheme, b"://", proxy]) url = urlparse(proxy) if not url.hostname: raise ValueError("Proxy URL did not contain a hostname! Please specify one.") if url.scheme not in (b"http", b"https"): raise ValueError( f"Unknown proxy scheme {url.scheme!s}; only 'http' and 'https' is supported." ) credentials = None if url.username and url.password: credentials = BasicProxyCredentials( b"".join([url.username, b":", url.password]) ) return url.scheme, url.hostname, url.port or default_port, credentials @implementer(IStreamClientEndpoint) class _RandomSampleEndpoints: """An endpoint that randomly iterates through a given list of endpoints at each connection attempt. """ def __init__( self, endpoints: Sequence[IStreamClientEndpoint], ) -> None: assert endpoints self._endpoints = endpoints def __repr__(self) -> str: return f"<_RandomSampleEndpoints endpoints={self._endpoints}>" def connect( self, protocol_factory: IProtocolFactory ) -> "defer.Deferred[IProtocol]": """Implements IStreamClientEndpoint interface""" return run_in_background(self._do_connect, protocol_factory) async def _do_connect(self, protocol_factory: IProtocolFactory) -> IProtocol: failures: List[Failure] = [] for endpoint in random.sample(self._endpoints, k=len(self._endpoints)): try: return await endpoint.connect(protocol_factory) except Exception: failures.append(Failure()) failures.pop().raiseException() synapse-1.100.0/synapse/http/replicationagent.py000066400000000000000000000153011455622526000217050ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2023 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing import Dict, Optional from zope.interface import implementer from twisted.internet import defer from twisted.internet.endpoints import ( HostnameEndpoint, UNIXClientEndpoint, wrapClientTLS, ) from twisted.internet.interfaces import IStreamClientEndpoint from twisted.python.failure import Failure from twisted.web.client import URI, HTTPConnectionPool, _AgentBase from twisted.web.error import SchemeNotSupported from twisted.web.http_headers import Headers from twisted.web.iweb import ( IAgent, IAgentEndpointFactory, IBodyProducer, IPolicyForHTTPS, IResponse, ) from synapse.config.workers import ( InstanceLocationConfig, InstanceTcpLocationConfig, InstanceUnixLocationConfig, ) from synapse.types import ISynapseReactor logger = logging.getLogger(__name__) @implementer(IAgentEndpointFactory) class ReplicationEndpointFactory: """Connect to a given TCP or UNIX socket""" def __init__( self, reactor: ISynapseReactor, instance_map: Dict[str, InstanceLocationConfig], context_factory: IPolicyForHTTPS, ) -> None: self.reactor = reactor self.instance_map = instance_map self.context_factory = context_factory def endpointForURI(self, uri: URI) -> IStreamClientEndpoint: """ This part of the factory decides what kind of endpoint is being connected to. Args: uri: The pre-parsed URI object containing all the uri data Returns: The correct client endpoint object """ # The given URI has a special scheme and includes the worker name. The # actual connection details are pulled from the instance map. worker_name = uri.netloc.decode("utf-8") location_config = self.instance_map[worker_name] scheme = location_config.scheme() if isinstance(location_config, InstanceTcpLocationConfig): endpoint = HostnameEndpoint( self.reactor, location_config.host, location_config.port, ) if scheme == "https": endpoint = wrapClientTLS( # The 'port' argument below isn't actually used by the function self.context_factory.creatorForNetloc( location_config.host.encode("utf-8"), location_config.port, ), endpoint, ) return endpoint elif isinstance(location_config, InstanceUnixLocationConfig): return UNIXClientEndpoint(self.reactor, location_config.path) else: raise SchemeNotSupported(f"Unsupported scheme: {scheme}") @implementer(IAgent) class ReplicationAgent(_AgentBase): """ Client for connecting to replication endpoints via HTTP and HTTPS. Much of this code is copied from Twisted's twisted.web.client.Agent. """ def __init__( self, reactor: ISynapseReactor, instance_map: Dict[str, InstanceLocationConfig], contextFactory: IPolicyForHTTPS, connectTimeout: Optional[float] = None, bindAddress: Optional[bytes] = None, pool: Optional[HTTPConnectionPool] = None, ): """ Create a ReplicationAgent. Args: reactor: A reactor for this Agent to place outgoing connections. contextFactory: A factory for TLS contexts, to control the verification parameters of OpenSSL. The default is to use a BrowserLikePolicyForHTTPS, so unless you have special requirements you can leave this as-is. connectTimeout: The amount of time that this Agent will wait for the peer to accept a connection. bindAddress: The local address for client sockets to bind to. pool: An HTTPConnectionPool instance, or None, in which case a non-persistent HTTPConnectionPool instance will be created. """ _AgentBase.__init__(self, reactor, pool) endpoint_factory = ReplicationEndpointFactory( reactor, instance_map, contextFactory ) self._endpointFactory = endpoint_factory def request( self, method: bytes, uri: bytes, headers: Optional[Headers] = None, bodyProducer: Optional[IBodyProducer] = None, ) -> "defer.Deferred[IResponse]": """ Issue a request to the server indicated by the given uri. An existing connection from the connection pool may be used or a new one may be created. Currently, HTTP, HTTPS and UNIX schemes are supported in uri. This is copied from twisted.web.client.Agent, except: * It uses a different pool key (combining the scheme with either host & port or socket path). * It does not call _ensureValidURI(...) as the strictness of IDNA2008 is not required when using a worker's name as a 'hostname' for Synapse HTTP Replication machinery. Specifically, this allows a range of ascii characters such as '+' and '_' in hostnames/worker's names. See: twisted.web.iweb.IAgent.request """ parsedURI = URI.fromBytes(uri) try: endpoint = self._endpointFactory.endpointForURI(parsedURI) except SchemeNotSupported: return defer.fail(Failure()) worker_name = parsedURI.netloc.decode("utf-8") key_scheme = self._endpointFactory.instance_map[worker_name].scheme() key_netloc = self._endpointFactory.instance_map[worker_name].netloc() # This sets the Pool key to be: # (http(s), ) or (unix, ) key = (key_scheme, key_netloc) # _requestWithEndpoint comes from _AgentBase class return self._requestWithEndpoint( key, endpoint, method, parsedURI, headers, bodyProducer, parsedURI.originForm, ) synapse-1.100.0/synapse/http/request_metrics.py000066400000000000000000000205011455622526000215710ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import threading import traceback from typing import Dict, Mapping, Set, Tuple from prometheus_client.core import Counter, Histogram from synapse.logging.context import current_context from synapse.metrics import LaterGauge logger = logging.getLogger(__name__) # total number of responses served, split by method/servlet/tag response_count = Counter( "synapse_http_server_response_count", "", ["method", "servlet", "tag"] ) requests_counter = Counter( "synapse_http_server_requests_received", "", ["method", "servlet"] ) outgoing_responses_counter = Counter( "synapse_http_server_responses", "", ["method", "code"] ) response_timer = Histogram( "synapse_http_server_response_time_seconds", "sec", ["method", "servlet", "tag", "code"], ) response_ru_utime = Counter( "synapse_http_server_response_ru_utime_seconds", "sec", ["method", "servlet", "tag"] ) response_ru_stime = Counter( "synapse_http_server_response_ru_stime_seconds", "sec", ["method", "servlet", "tag"] ) response_db_txn_count = Counter( "synapse_http_server_response_db_txn_count", "", ["method", "servlet", "tag"] ) # seconds spent waiting for db txns, excluding scheduling time, when processing # this request response_db_txn_duration = Counter( "synapse_http_server_response_db_txn_duration_seconds", "", ["method", "servlet", "tag"], ) # seconds spent waiting for a db connection, when processing this request response_db_sched_duration = Counter( "synapse_http_server_response_db_sched_duration_seconds", "", ["method", "servlet", "tag"], ) # size in bytes of the response written response_size = Counter( "synapse_http_server_response_size", "", ["method", "servlet", "tag"] ) # In flight metrics are incremented while the requests are in flight, rather # than when the response was written. in_flight_requests_ru_utime = Counter( "synapse_http_server_in_flight_requests_ru_utime_seconds", "", ["method", "servlet"] ) in_flight_requests_ru_stime = Counter( "synapse_http_server_in_flight_requests_ru_stime_seconds", "", ["method", "servlet"] ) in_flight_requests_db_txn_count = Counter( "synapse_http_server_in_flight_requests_db_txn_count", "", ["method", "servlet"] ) # seconds spent waiting for db txns, excluding scheduling time, when processing # this request in_flight_requests_db_txn_duration = Counter( "synapse_http_server_in_flight_requests_db_txn_duration_seconds", "", ["method", "servlet"], ) # seconds spent waiting for a db connection, when processing this request in_flight_requests_db_sched_duration = Counter( "synapse_http_server_in_flight_requests_db_sched_duration_seconds", "", ["method", "servlet"], ) _in_flight_requests: Set["RequestMetrics"] = set() # Protects the _in_flight_requests set from concurrent access _in_flight_requests_lock = threading.Lock() def _get_in_flight_counts() -> Mapping[Tuple[str, ...], int]: """Returns a count of all in flight requests by (method, server_name)""" # Cast to a list to prevent it changing while the Prometheus # thread is collecting metrics with _in_flight_requests_lock: reqs = list(_in_flight_requests) for rm in reqs: rm.update_metrics() # Map from (method, name) -> int, the number of in flight requests of that # type. The key type is Tuple[str, str], but we leave the length unspecified # for compatability with LaterGauge's annotations. counts: Dict[Tuple[str, ...], int] = {} for rm in reqs: key = (rm.method, rm.name) counts[key] = counts.get(key, 0) + 1 return counts LaterGauge( "synapse_http_server_in_flight_requests_count", "", ["method", "servlet"], _get_in_flight_counts, ) class RequestMetrics: def start(self, time_sec: float, name: str, method: str) -> None: self.start_ts = time_sec self.start_context = current_context() self.name = name self.method = method if self.start_context: # _request_stats records resource usage that we have already added # to the "in flight" metrics. self._request_stats = self.start_context.get_resource_usage() else: logger.error( "Tried to start a RequestMetric from the sentinel context.\n%s", "".join(traceback.format_stack()), ) with _in_flight_requests_lock: _in_flight_requests.add(self) def stop(self, time_sec: float, response_code: int, sent_bytes: int) -> None: with _in_flight_requests_lock: _in_flight_requests.discard(self) context = current_context() tag = "" if context: tag = context.tag if context != self.start_context: logger.error( "Context have unexpectedly changed %r, %r", context, self.start_context, ) return else: logger.error( "Trying to stop RequestMetrics in the sentinel context.\n%s", "".join(traceback.format_stack()), ) return response_code_str = str(response_code) outgoing_responses_counter.labels(self.method, response_code_str).inc() response_count.labels(self.method, self.name, tag).inc() response_timer.labels(self.method, self.name, tag, response_code_str).observe( time_sec - self.start_ts ) resource_usage = context.get_resource_usage() response_ru_utime.labels(self.method, self.name, tag).inc( resource_usage.ru_utime ) response_ru_stime.labels(self.method, self.name, tag).inc( resource_usage.ru_stime ) response_db_txn_count.labels(self.method, self.name, tag).inc( resource_usage.db_txn_count ) response_db_txn_duration.labels(self.method, self.name, tag).inc( resource_usage.db_txn_duration_sec ) response_db_sched_duration.labels(self.method, self.name, tag).inc( resource_usage.db_sched_duration_sec ) response_size.labels(self.method, self.name, tag).inc(sent_bytes) # We always call this at the end to ensure that we update the metrics # regardless of whether a call to /metrics while the request was in # flight. self.update_metrics() def update_metrics(self) -> None: """Updates the in flight metrics with values from this request.""" if not self.start_context: logger.error( "Tried to update a RequestMetric from the sentinel context.\n%s", "".join(traceback.format_stack()), ) return new_stats = self.start_context.get_resource_usage() diff = new_stats - self._request_stats self._request_stats = new_stats # max() is used since rapid use of ru_stime/ru_utime can end up with the # count going backwards due to NTP, time smearing, fine-grained # correction, or floating points. Who knows, really? in_flight_requests_ru_utime.labels(self.method, self.name).inc( max(diff.ru_utime, 0) ) in_flight_requests_ru_stime.labels(self.method, self.name).inc( max(diff.ru_stime, 0) ) in_flight_requests_db_txn_count.labels(self.method, self.name).inc( diff.db_txn_count ) in_flight_requests_db_txn_duration.labels(self.method, self.name).inc( diff.db_txn_duration_sec ) in_flight_requests_db_sched_duration.labels(self.method, self.name).inc( diff.db_sched_duration_sec ) synapse-1.100.0/synapse/http/server.py000066400000000000000000001055551455622526000176760ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import abc import html import logging import types import urllib import urllib.parse from http import HTTPStatus from http.client import FOUND from inspect import isawaitable from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Dict, Iterable, Iterator, List, Optional, Pattern, Tuple, Union, ) import attr import jinja2 from canonicaljson import encode_canonical_json from typing_extensions import Protocol from zope.interface import implementer from twisted.internet import defer, interfaces from twisted.internet.defer import CancelledError from twisted.python import failure from twisted.web import resource try: from twisted.web.pages import notFound except ImportError: from twisted.web.resource import NoResource as notFound # type: ignore[assignment] from twisted.web.resource import IResource from twisted.web.server import NOT_DONE_YET, Request from twisted.web.static import File from twisted.web.util import redirectTo from synapse.api.errors import ( CodeMessageException, Codes, RedirectException, SynapseError, UnrecognizedRequestError, ) from synapse.config.homeserver import HomeServerConfig from synapse.logging.context import defer_to_thread, preserve_fn, run_in_background from synapse.logging.opentracing import active_span, start_active_span, trace_servlet from synapse.util import json_encoder from synapse.util.caches import intern_dict from synapse.util.cancellation import is_function_cancellable from synapse.util.iterutils import chunk_seq if TYPE_CHECKING: import opentracing from synapse.http.site import SynapseRequest from synapse.server import HomeServer logger = logging.getLogger(__name__) HTML_ERROR_TEMPLATE = """ Error {code}

    {msg}

    """ # A fictional HTTP status code for requests where the client has disconnected and we # successfully cancelled the request. Used only for logging purposes. Clients will never # observe this code unless cancellations leak across requests or we raise a # `CancelledError` ourselves. # Analogous to nginx's 499 status code: # https://github.com/nginx/nginx/blob/release-1.21.6/src/http/ngx_http_request.h#L128-L134 HTTP_STATUS_REQUEST_CANCELLED = 499 def return_json_error( f: failure.Failure, request: "SynapseRequest", config: Optional[HomeServerConfig] ) -> None: """Sends a JSON error response to clients.""" if f.check(SynapseError): # mypy doesn't understand that f.check asserts the type. exc: SynapseError = f.value error_code = exc.code error_dict = exc.error_dict(config) if exc.headers is not None: for header, value in exc.headers.items(): request.setHeader(header, value) error_ctx = exc.debug_context if error_ctx: logger.info( "%s SynapseError: %s - %s (%s)", request, error_code, exc.msg, error_ctx ) else: logger.info("%s SynapseError: %s - %s", request, error_code, exc.msg) elif f.check(CancelledError): error_code = HTTP_STATUS_REQUEST_CANCELLED error_dict = {"error": "Request cancelled", "errcode": Codes.UNKNOWN} if not request._disconnected: logger.error( "Got cancellation before client disconnection from %r: %r", request.request_metrics.name, request, exc_info=(f.type, f.value, f.getTracebackObject()), ) else: error_code = 500 error_dict = {"error": "Internal server error", "errcode": Codes.UNKNOWN} logger.error( "Failed handle request via %r: %r", request.request_metrics.name, request, exc_info=(f.type, f.value, f.getTracebackObject()), ) # Only respond with an error response if we haven't already started writing, # otherwise lets just kill the connection if request.startedWriting: if request.transport: try: request.transport.abortConnection() except Exception: # abortConnection throws if the connection is already closed pass else: respond_with_json( request, error_code, error_dict, send_cors=True, ) def return_html_error( f: failure.Failure, request: Request, error_template: Union[str, jinja2.Template], ) -> None: """Sends an HTML error page corresponding to the given failure. Handles RedirectException and other CodeMessageExceptions (such as SynapseError) Args: f: the error to report request: the failing request error_template: the HTML template. Can be either a string (with `{code}`, `{msg}` placeholders), or a jinja2 template """ if f.check(CodeMessageException): # mypy doesn't understand that f.check asserts the type. cme: CodeMessageException = f.value code = cme.code msg = cme.msg if cme.headers is not None: for header, value in cme.headers.items(): request.setHeader(header, value) if isinstance(cme, RedirectException): logger.info("%s redirect to %s", request, cme.location) request.setHeader(b"location", cme.location) request.cookies.extend(cme.cookies) elif isinstance(cme, SynapseError): logger.info("%s SynapseError: %s - %s", request, code, msg) else: logger.error( "Failed handle request %r", request, exc_info=(f.type, f.value, f.getTracebackObject()), ) elif f.check(CancelledError): code = HTTP_STATUS_REQUEST_CANCELLED msg = "Request cancelled" if not request._disconnected: logger.error( "Got cancellation before client disconnection when handling request %r", request, exc_info=(f.type, f.value, f.getTracebackObject()), ) else: code = HTTPStatus.INTERNAL_SERVER_ERROR msg = "Internal server error" logger.error( "Failed handle request %r", request, exc_info=(f.type, f.value, f.getTracebackObject()), ) if isinstance(error_template, str): body = error_template.format(code=code, msg=html.escape(msg)) else: body = error_template.render(code=code, msg=msg) respond_with_html(request, code, body) def wrap_async_request_handler( h: Callable[["_AsyncResource", "SynapseRequest"], Awaitable[None]] ) -> Callable[["_AsyncResource", "SynapseRequest"], "defer.Deferred[None]"]: """Wraps an async request handler so that it calls request.processing. This helps ensure that work done by the request handler after the request is completed is correctly recorded against the request metrics/logs. The handler method must have a signature of "handle_foo(self, request)", where "request" must be a SynapseRequest. The handler may return a deferred, in which case the completion of the request isn't logged until the deferred completes. """ async def wrapped_async_request_handler( self: "_AsyncResource", request: "SynapseRequest" ) -> None: with request.processing(): await h(self, request) # we need to preserve_fn here, because the synchronous render method won't yield for # us (obviously) return preserve_fn(wrapped_async_request_handler) # Type of a callback method for processing requests # it is actually called with a SynapseRequest and a kwargs dict for the params, # but I can't figure out how to represent that. ServletCallback = Callable[ ..., Union[None, Awaitable[None], Tuple[int, Any], Awaitable[Tuple[int, Any]]] ] class HttpServer(Protocol): """Interface for registering callbacks on a HTTP server""" def register_paths( self, method: str, path_patterns: Iterable[Pattern[str]], callback: ServletCallback, servlet_classname: str, ) -> None: """Register a callback that gets fired if we receive a http request with the given method for a path that matches the given regex. If the regex contains groups these gets passed to the callback via an unpacked tuple. The callback may be marked with the `@cancellable` decorator, which will cause request processing to be cancelled when clients disconnect early. Args: method: The HTTP method to listen to. path_patterns: The regex used to match requests. callback: The function to fire if we receive a matched request. The first argument will be the request object and subsequent arguments will be any matched groups from the regex. This should return either tuple of (code, response), or None. servlet_classname: The name of the handler to be used in prometheus and opentracing logs. """ class _AsyncResource(resource.Resource, metaclass=abc.ABCMeta): """Base class for resources that have async handlers. Sub classes can either implement `_async_render_` to handle requests by method, or override `_async_render` to handle all requests. Args: extract_context: Whether to attempt to extract the opentracing context from the request the servlet is handling. """ def __init__(self, extract_context: bool = False): super().__init__() self._extract_context = extract_context def render(self, request: "SynapseRequest") -> int: """This gets called by twisted every time someone sends us a request.""" request.render_deferred = defer.ensureDeferred( self._async_render_wrapper(request) ) return NOT_DONE_YET @wrap_async_request_handler async def _async_render_wrapper(self, request: "SynapseRequest") -> None: """This is a wrapper that delegates to `_async_render` and handles exceptions, return values, metrics, etc. """ try: request.request_metrics.name = self.__class__.__name__ with trace_servlet(request, self._extract_context): callback_return = await self._async_render(request) if callback_return is not None: code, response = callback_return self._send_response(request, code, response) except Exception: # failure.Failure() fishes the original Failure out # of our stack, and thus gives us a sensible stack # trace. f = failure.Failure() self._send_error_response(f, request) async def _async_render( self, request: "SynapseRequest" ) -> Optional[Tuple[int, Any]]: """Delegates to `_async_render_` methods, or returns a 400 if no appropriate method exists. Can be overridden in sub classes for different routing. """ # Treat HEAD requests as GET requests. request_method = request.method.decode("ascii") if request_method == "HEAD": request_method = "GET" method_handler = getattr(self, "_async_render_%s" % (request_method,), None) if method_handler: request.is_render_cancellable = is_function_cancellable(method_handler) raw_callback_return = method_handler(request) # Is it synchronous? We'll allow this for now. if isawaitable(raw_callback_return): callback_return = await raw_callback_return else: callback_return = raw_callback_return return callback_return # A request with an unknown method (for a known endpoint) was received. raise UnrecognizedRequestError(code=405) @abc.abstractmethod def _send_response( self, request: "SynapseRequest", code: int, response_object: Any, ) -> None: raise NotImplementedError() @abc.abstractmethod def _send_error_response( self, f: failure.Failure, request: "SynapseRequest", ) -> None: raise NotImplementedError() class DirectServeJsonResource(_AsyncResource): """A resource that will call `self._async_on_` on new requests, formatting responses and errors as JSON. """ def __init__(self, canonical_json: bool = False, extract_context: bool = False): super().__init__(extract_context) self.canonical_json = canonical_json def _send_response( self, request: "SynapseRequest", code: int, response_object: Any, ) -> None: """Implements _AsyncResource._send_response""" # TODO: Only enable CORS for the requests that need it. respond_with_json( request, code, response_object, send_cors=True, canonical_json=self.canonical_json, ) def _send_error_response( self, f: failure.Failure, request: "SynapseRequest", ) -> None: """Implements _AsyncResource._send_error_response""" return_json_error(f, request, None) @attr.s(slots=True, frozen=True, auto_attribs=True) class _PathEntry: callback: ServletCallback servlet_classname: str class JsonResource(DirectServeJsonResource): """This implements the HttpServer interface and provides JSON support for Resources. Register callbacks via register_paths() Callbacks can return a tuple of status code and a dict in which case the the dict will automatically be sent to the client as a JSON object. The JsonResource is primarily intended for returning JSON, but callbacks may send something other than JSON, they may do so by using the methods on the request object and instead returning None. """ isLeaf = True def __init__( self, hs: "HomeServer", canonical_json: bool = True, extract_context: bool = False, ): super().__init__(canonical_json, extract_context) self.clock = hs.get_clock() # Map of path regex -> method -> callback. self._routes: Dict[Pattern[str], Dict[bytes, _PathEntry]] = {} self.hs = hs def register_paths( self, method: str, path_patterns: Iterable[Pattern[str]], callback: ServletCallback, servlet_classname: str, ) -> None: """ Registers a request handler against a regular expression. Later request URLs are checked against these regular expressions in order to identify an appropriate handler for that request. Args: method: GET, POST etc path_patterns: A list of regular expressions to which the request URLs are compared. callback: The handler for the request. Usually a Servlet servlet_classname: The name of the handler to be used in prometheus and opentracing logs. """ method_bytes = method.encode("utf-8") for path_pattern in path_patterns: logger.debug("Registering for %s %s", method, path_pattern.pattern) self._routes.setdefault(path_pattern, {})[method_bytes] = _PathEntry( callback, servlet_classname ) def _get_handler_for_request( self, request: "SynapseRequest" ) -> Tuple[ServletCallback, str, Dict[str, str]]: """Finds a callback method to handle the given request. Returns: A tuple of the callback to use, the name of the servlet, and the key word arguments to pass to the callback """ # At this point the path must be bytes. request_path_bytes: bytes = request.path # type: ignore request_path = request_path_bytes.decode("ascii") # Treat HEAD requests as GET requests. request_method = request.method if request_method == b"HEAD": request_method = b"GET" # Loop through all the registered callbacks to check if the method # and path regex match for path_pattern, methods in self._routes.items(): m = path_pattern.match(request_path) if m: # We found a matching path! path_entry = methods.get(request_method) if not path_entry: raise UnrecognizedRequestError(code=405) return path_entry.callback, path_entry.servlet_classname, m.groupdict() # Huh. No one wanted to handle that? Fiiiiiine. raise UnrecognizedRequestError(code=404) async def _async_render(self, request: "SynapseRequest") -> Tuple[int, Any]: callback, servlet_classname, group_dict = self._get_handler_for_request(request) request.is_render_cancellable = is_function_cancellable(callback) # Make sure we have an appropriate name for this handler in prometheus # (rather than the default of JsonResource). request.request_metrics.name = servlet_classname # Now trigger the callback. If it returns a response, we send it # here. If it throws an exception, that is handled by the wrapper # installed by @request_handler. kwargs = intern_dict( { name: urllib.parse.unquote(value) if value else value for name, value in group_dict.items() } ) raw_callback_return = callback(request, **kwargs) # Is it synchronous? We'll allow this for now. if isinstance(raw_callback_return, (defer.Deferred, types.CoroutineType)): callback_return = await raw_callback_return else: callback_return = raw_callback_return return callback_return def _send_error_response( self, f: failure.Failure, request: "SynapseRequest", ) -> None: """Implements _AsyncResource._send_error_response""" return_json_error(f, request, self.hs.config) class DirectServeHtmlResource(_AsyncResource): """A resource that will call `self._async_on_` on new requests, formatting responses and errors as HTML. """ # The error template to use for this resource ERROR_TEMPLATE = HTML_ERROR_TEMPLATE def _send_response( self, request: "SynapseRequest", code: int, response_object: Any, ) -> None: """Implements _AsyncResource._send_response""" # We expect to get bytes for us to write assert isinstance(response_object, bytes) html_bytes = response_object respond_with_html_bytes(request, code, html_bytes) def _send_error_response( self, f: failure.Failure, request: "SynapseRequest", ) -> None: """Implements _AsyncResource._send_error_response""" return_html_error(f, request, self.ERROR_TEMPLATE) class StaticResource(File): """ A resource that represents a plain non-interpreted file or directory. Differs from the File resource by adding clickjacking protection. """ def render_GET(self, request: Request) -> bytes: set_clickjacking_protection_headers(request) return super().render_GET(request) def directoryListing(self) -> IResource: return notFound() class UnrecognizedRequestResource(resource.Resource): """ Similar to twisted.web.resource.NoResource, but returns a JSON 404 with an errcode of M_UNRECOGNIZED. """ def render(self, request: "SynapseRequest") -> int: f = failure.Failure(UnrecognizedRequestError(code=404)) return_json_error(f, request, None) # A response has already been sent but Twisted requires either NOT_DONE_YET # or the response bytes as a return value. return NOT_DONE_YET def getChild(self, name: str, request: Request) -> resource.Resource: return self class RootRedirect(resource.Resource): """Redirects the root '/' path to another path.""" def __init__(self, path: str): super().__init__() self.url = path def render_GET(self, request: Request) -> bytes: return redirectTo(self.url.encode("ascii"), request) def getChild(self, name: str, request: Request) -> resource.Resource: if len(name) == 0: return self # select ourselves as the child to render return super().getChild(name, request) class OptionsResource(resource.Resource): """Responds to OPTION requests for itself and all children.""" def render_OPTIONS(self, request: "SynapseRequest") -> bytes: request.setResponseCode(204) request.setHeader(b"Content-Length", b"0") set_cors_headers(request) return b"" def getChildWithDefault(self, path: str, request: Request) -> resource.Resource: if request.method == b"OPTIONS": return self # select ourselves as the child to render return super().getChildWithDefault(path, request) class RootOptionsRedirectResource(OptionsResource, RootRedirect): pass @implementer(interfaces.IPushProducer) class _ByteProducer: """ Iteratively write bytes to the request. """ # The minimum number of bytes for each chunk. Note that the last chunk will # usually be smaller than this. min_chunk_size = 1024 def __init__( self, request: Request, iterator: Iterator[bytes], ): self._request: Optional[Request] = request self._iterator = iterator self._paused = False try: self._request.registerProducer(self, True) except AttributeError as e: # Calling self._request.registerProducer might raise an AttributeError since # the underlying Twisted code calls self._request.channel.registerProducer, # however self._request.channel will be None if the connection was lost. logger.info("Connection disconnected before response was written: %r", e) # We drop our references to data we'll not use. self._request = None self._iterator = iter(()) else: # Start producing if `registerProducer` was successful self.resumeProducing() def _send_data(self, data: List[bytes]) -> None: """ Send a list of bytes as a chunk of a response. """ if not data or not self._request: return self._request.write(b"".join(data)) def pauseProducing(self) -> None: self._paused = True def resumeProducing(self) -> None: # We've stopped producing in the meantime (note that this might be # re-entrant after calling write). if not self._request: return self._paused = False # Write until there's backpressure telling us to stop. while not self._paused: # Get the next chunk and write it to the request. # # The output of the JSON encoder is buffered and coalesced until # min_chunk_size is reached. This is because JSON encoders produce # very small output per iteration and the Request object converts # each call to write() to a separate chunk. Without this there would # be an explosion in bytes written (e.g. b"{" becoming "1\r\n{\r\n"). # # Note that buffer stores a list of bytes (instead of appending to # bytes) to hopefully avoid many allocations. buffer = [] buffered_bytes = 0 while buffered_bytes < self.min_chunk_size: try: data = next(self._iterator) buffer.append(data) buffered_bytes += len(data) except StopIteration: # The entire JSON object has been serialized, write any # remaining data, finalize the producer and the request, and # clean-up any references. self._send_data(buffer) self._request.unregisterProducer() self._request.finish() self.stopProducing() return self._send_data(buffer) def stopProducing(self) -> None: # Clear a circular reference. self._request = None def _encode_json_bytes(json_object: object) -> bytes: """ Encode an object into JSON. Returns an iterator of bytes. """ return json_encoder.encode(json_object).encode("utf-8") def respond_with_json( request: "SynapseRequest", code: int, json_object: Any, send_cors: bool = False, canonical_json: bool = True, ) -> Optional[int]: """Sends encoded JSON in response to the given request. Args: request: The http request to respond to. code: The HTTP response code. json_object: The object to serialize to JSON. send_cors: Whether to send Cross-Origin Resource Sharing headers https://fetch.spec.whatwg.org/#http-cors-protocol canonical_json: Whether to use the canonicaljson algorithm when encoding the JSON bytes. Returns: twisted.web.server.NOT_DONE_YET if the request is still active. """ # The response code must always be set, for logging purposes. request.setResponseCode(code) # could alternatively use request.notifyFinish() and flip a flag when # the Deferred fires, but since the flag is RIGHT THERE it seems like # a waste. if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return None if canonical_json: encoder: Callable[[object], bytes] = encode_canonical_json else: encoder = _encode_json_bytes request.setHeader(b"Content-Type", b"application/json") request.setHeader(b"Cache-Control", b"no-cache, no-store, must-revalidate") if send_cors: set_cors_headers(request) run_in_background( _async_write_json_to_request_in_thread, request, encoder, json_object ) return NOT_DONE_YET def respond_with_json_bytes( request: "SynapseRequest", code: int, json_bytes: bytes, send_cors: bool = False, ) -> Optional[int]: """Sends encoded JSON in response to the given request. Args: request: The http request to respond to. code: The HTTP response code. json_bytes: The json bytes to use as the response body. send_cors: Whether to send Cross-Origin Resource Sharing headers https://fetch.spec.whatwg.org/#http-cors-protocol Returns: twisted.web.server.NOT_DONE_YET if the request is still active. """ # The response code must always be set, for logging purposes. request.setResponseCode(code) if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return None request.setHeader(b"Content-Type", b"application/json") request.setHeader(b"Content-Length", b"%d" % (len(json_bytes),)) request.setHeader(b"Cache-Control", b"no-cache, no-store, must-revalidate") if send_cors: set_cors_headers(request) _write_bytes_to_request(request, json_bytes) return NOT_DONE_YET async def _async_write_json_to_request_in_thread( request: "SynapseRequest", json_encoder: Callable[[Any], bytes], json_object: Any, ) -> None: """Encodes the given JSON object on a thread and then writes it to the request. This is done so that encoding large JSON objects doesn't block the reactor thread. Note: We don't use JsonEncoder.iterencode here as that falls back to the Python implementation (rather than the C backend), which is *much* more expensive. """ def encode(opentracing_span: "Optional[opentracing.Span]") -> bytes: # it might take a while for the threadpool to schedule us, so we write # opentracing logs once we actually get scheduled, so that we can see how # much that contributed. if opentracing_span: opentracing_span.log_kv({"event": "scheduled"}) res = json_encoder(json_object) if opentracing_span: opentracing_span.log_kv({"event": "encoded"}) return res with start_active_span("encode_json_response"): span = active_span() json_str = await defer_to_thread(request.reactor, encode, span) _write_bytes_to_request(request, json_str) def _write_bytes_to_request(request: Request, bytes_to_write: bytes) -> None: """Writes the bytes to the request using an appropriate producer. Note: This should be used instead of `Request.write` to correctly handle large response bodies. """ # The problem with dumping all of the response into the `Request` object at # once (via `Request.write`) is that doing so starts the timeout for the # next request to be received: so if it takes longer than 60s to stream back # the response to the client, the client never gets it. # # The correct solution is to use a Producer; then the timeout is only # started once all of the content is sent over the TCP connection. # To make sure we don't write all of the bytes at once we split it up into # chunks. chunk_size = 4096 bytes_generator = chunk_seq(bytes_to_write, chunk_size) # We use a `_ByteProducer` here rather than `NoRangeStaticProducer` as the # unit tests can't cope with being given a pull producer. _ByteProducer(request, bytes_generator) def set_cors_headers(request: "SynapseRequest") -> None: """Set the CORS headers so that javascript running in a web browsers can use this API Args: request: The http request to add CORS to. """ request.setHeader(b"Access-Control-Allow-Origin", b"*") request.setHeader( b"Access-Control-Allow-Methods", b"GET, HEAD, POST, PUT, DELETE, OPTIONS" ) if request.experimental_cors_msc3886: request.setHeader( b"Access-Control-Allow-Headers", b"X-Requested-With, Content-Type, Authorization, Date, If-Match, If-None-Match", ) request.setHeader( b"Access-Control-Expose-Headers", b"ETag, Location, X-Max-Bytes", ) else: request.setHeader( b"Access-Control-Allow-Headers", b"X-Requested-With, Content-Type, Authorization, Date", ) request.setHeader( b"Access-Control-Expose-Headers", b"Synapse-Trace-Id, Server", ) def set_corp_headers(request: Request) -> None: """Set the CORP headers so that javascript running in a web browsers can embed the resource returned from this request when their client requires the `Cross-Origin-Embedder-Policy: require-corp` header. Args: request: The http request to add the CORP header to. """ request.setHeader(b"Cross-Origin-Resource-Policy", b"cross-origin") def respond_with_html(request: Request, code: int, html: str) -> None: """ Wraps `respond_with_html_bytes` by first encoding HTML from a str to UTF-8 bytes. """ respond_with_html_bytes(request, code, html.encode("utf-8")) def respond_with_html_bytes(request: Request, code: int, html_bytes: bytes) -> None: """ Sends HTML (encoded as UTF-8 bytes) as the response to the given request. Note that this adds clickjacking protection headers and finishes the request. Args: request: The http request to respond to. code: The HTTP response code. html_bytes: The HTML bytes to use as the response body. """ # The response code must always be set, for logging purposes. request.setResponseCode(code) # could alternatively use request.notifyFinish() and flip a flag when # the Deferred fires, but since the flag is RIGHT THERE it seems like # a waste. if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return None request.setHeader(b"Content-Type", b"text/html; charset=utf-8") request.setHeader(b"Content-Length", b"%d" % (len(html_bytes),)) # Ensure this content cannot be embedded. set_clickjacking_protection_headers(request) request.write(html_bytes) finish_request(request) def set_clickjacking_protection_headers(request: Request) -> None: """ Set headers to guard against clickjacking of embedded content. This sets the X-Frame-Options and Content-Security-Policy headers which instructs browsers to not allow the HTML of the response to be embedded onto another page. Args: request: The http request to add the headers to. """ request.setHeader(b"X-Frame-Options", b"DENY") request.setHeader(b"Content-Security-Policy", b"frame-ancestors 'none';") def respond_with_redirect( request: "SynapseRequest", url: bytes, statusCode: int = FOUND, cors: bool = False ) -> None: """ Write a 302 (or other specified status code) response to the request, if it is still alive. Args: request: The http request to respond to. url: The URL to redirect to. statusCode: The HTTP status code to use for the redirect (defaults to 302). cors: Whether to set CORS headers on the response. """ logger.debug("Redirect to %s", url.decode("utf-8")) if cors: set_cors_headers(request) request.setResponseCode(statusCode) request.setHeader(b"location", url) finish_request(request) def finish_request(request: Request) -> None: """Finish writing the response to the request. Twisted throws a RuntimeException if the connection closed before the response was written but doesn't provide a convenient or reliable way to determine if the connection was closed. So we catch and log the RuntimeException You might think that ``request.notifyFinish`` could be used to tell if the request was finished. However the deferred it returns won't fire if the connection was already closed, meaning we'd have to have called the method right at the start of the request. By the time we want to write the response it will already be too late. """ try: request.finish() except RuntimeError as e: logger.info("Connection disconnected before response was written: %r", e) synapse-1.100.0/synapse/http/servlet.py000066400000000000000000000635071455622526000200540ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ This module contains base REST classes for constructing REST servlets. """ import enum import logging from http import HTTPStatus from typing import ( TYPE_CHECKING, List, Mapping, Optional, Sequence, Tuple, Type, TypeVar, overload, ) from synapse._pydantic_compat import HAS_PYDANTIC_V2 if TYPE_CHECKING or HAS_PYDANTIC_V2: from pydantic.v1 import BaseModel, MissingError, PydanticValueError, ValidationError from pydantic.v1.error_wrappers import ErrorWrapper else: from pydantic import BaseModel, MissingError, PydanticValueError, ValidationError from pydantic.error_wrappers import ErrorWrapper from typing_extensions import Literal from twisted.web.server import Request from synapse.api.errors import Codes, SynapseError from synapse.http import redact_uri from synapse.http.server import HttpServer from synapse.types import JsonDict, RoomAlias, RoomID, StrCollection from synapse.util import json_decoder if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) @overload def parse_integer(request: Request, name: str, default: int) -> int: ... @overload def parse_integer(request: Request, name: str, *, required: Literal[True]) -> int: ... @overload def parse_integer( request: Request, name: str, default: Optional[int] = None, required: bool = False ) -> Optional[int]: ... def parse_integer( request: Request, name: str, default: Optional[int] = None, required: bool = False ) -> Optional[int]: """Parse an integer parameter from the request string Args: request: the twisted HTTP request. name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: An int value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not an integer. """ args: Mapping[bytes, Sequence[bytes]] = request.args # type: ignore return parse_integer_from_args(args, name, default, required) @overload def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[int] = None, ) -> Optional[int]: ... @overload def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, required: Literal[True], ) -> int: ... @overload def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[int] = None, required: bool = False, ) -> Optional[int]: ... def parse_integer_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[int] = None, required: bool = False, ) -> Optional[int]: """Parse an integer parameter from the request string Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: An int value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not an integer. """ name_bytes = name.encode("ascii") if name_bytes in args: try: return int(args[name_bytes][0]) except Exception: message = "Query parameter %r must be an integer" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM ) else: if required: message = "Missing integer query parameter %r" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM ) else: return default @overload def parse_boolean(request: Request, name: str, default: bool) -> bool: ... @overload def parse_boolean(request: Request, name: str, *, required: Literal[True]) -> bool: ... @overload def parse_boolean( request: Request, name: str, default: Optional[bool] = None, required: bool = False ) -> Optional[bool]: ... def parse_boolean( request: Request, name: str, default: Optional[bool] = None, required: bool = False ) -> Optional[bool]: """Parse a boolean parameter from the request query string Args: request: the twisted HTTP request. name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: A bool value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not one of "true" or "false". """ args: Mapping[bytes, Sequence[bytes]] = request.args # type: ignore return parse_boolean_from_args(args, name, default, required) @overload def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: bool, ) -> bool: ... @overload def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, required: Literal[True], ) -> bool: ... @overload def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bool] = None, required: bool = False, ) -> Optional[bool]: ... def parse_boolean_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bool] = None, required: bool = False, ) -> Optional[bool]: """Parse a boolean parameter from the request query string Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: A bool value or the default. Raises: SynapseError: if the parameter is absent and required, or if the parameter is present and not one of "true" or "false". """ name_bytes = name.encode("ascii") if name_bytes in args: try: return {b"true": True, b"false": False}[args[name_bytes][0]] except Exception: message = ( "Boolean query parameter %r must be one of ['true', 'false']" ) % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM ) else: if required: message = "Missing boolean query parameter %r" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM ) else: return default @overload def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bytes] = None, ) -> Optional[bytes]: ... @overload def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Literal[None] = None, *, required: Literal[True], ) -> bytes: ... @overload def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bytes] = None, required: bool = False, ) -> Optional[bytes]: ... def parse_bytes_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[bytes] = None, required: bool = False, ) -> Optional[bytes]: """ Parse a string parameter as bytes from the request query string. Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. Must be bytes if encoding is None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: Bytes or the default value. Raises: SynapseError if the parameter is absent and required. """ name_bytes = name.encode("ascii") if name_bytes in args: return args[name_bytes][0] elif required: message = "Missing string query parameter %s" % (name,) raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM) return default @overload def parse_string( request: Request, name: str, default: str, *, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> str: ... @overload def parse_string( request: Request, name: str, *, required: Literal[True], allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> str: ... @overload def parse_string( request: Request, name: str, *, default: Optional[str] = None, required: bool = False, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[str]: ... def parse_string( request: Request, name: str, default: Optional[str] = None, required: bool = False, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[str]: """ Parse a string parameter from the request query string. If encoding is not None, the content of the query param will be decoded to Unicode using the encoding, otherwise it will be encoded Args: request: the twisted HTTP request. name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. allowed_values: List of allowed values for the string, or None if any value is allowed, defaults to None. Must be the same type as name, if given. encoding: The encoding to decode the string content with. Returns: A string value or the default. Raises: SynapseError if the parameter is absent and required, or if the parameter is present, must be one of a list of allowed values and is not one of those allowed values. """ args: Mapping[bytes, Sequence[bytes]] = request.args # type: ignore return parse_string_from_args( args, name, default, required=required, allowed_values=allowed_values, encoding=encoding, ) EnumT = TypeVar("EnumT", bound=enum.Enum) @overload def parse_enum( request: Request, name: str, E: Type[EnumT], default: EnumT, ) -> EnumT: ... @overload def parse_enum( request: Request, name: str, E: Type[EnumT], *, required: Literal[True], ) -> EnumT: ... def parse_enum( request: Request, name: str, E: Type[EnumT], default: Optional[EnumT] = None, required: bool = False, ) -> Optional[EnumT]: """ Parse an enum parameter from the request query string. Note that the enum *must only have string values*. Args: request: the twisted HTTP request. name: the name of the query parameter. E: the enum which represents valid values default: enum value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. Returns: An enum value. Raises: SynapseError if the parameter is absent and required, or if the parameter is present, must be one of a list of allowed values and is not one of those allowed values. """ # Assert the enum values are strings. assert all( isinstance(e.value, str) for e in E ), "parse_enum only works with string values" str_value = parse_string( request, name, default=default.value if default is not None else None, required=required, allowed_values=[e.value for e in E], ) if str_value is None: return None return E(str_value) def _parse_string_value( value: bytes, allowed_values: Optional[StrCollection], name: str, encoding: str, ) -> str: try: value_str = value.decode(encoding) except ValueError: raise SynapseError( HTTPStatus.BAD_REQUEST, "Query parameter %r must be %s" % (name, encoding) ) if allowed_values is not None and value_str not in allowed_values: message = "Query parameter %r must be one of [%s]" % ( name, ", ".join(repr(v) for v in allowed_values), ) raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.INVALID_PARAM) else: return value_str @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[List[str]]: ... @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: List[str], *, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> List[str]: ... @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, *, required: Literal[True], allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> List[str]: ... @overload def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[List[str]] = None, *, required: bool = False, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[List[str]]: ... def parse_strings_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[List[str]] = None, required: bool = False, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[List[str]]: """ Parse a string parameter from the request query string list. The content of the query param will be decoded to Unicode using the encoding. Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. allowed_values: List of allowed values for the string, or None if any value is allowed, defaults to None. encoding: The encoding to decode the string content with. Returns: A string value or the default. Raises: SynapseError if the parameter is absent and required, or if the parameter is present, must be one of a list of allowed values and is not one of those allowed values. """ name_bytes = name.encode("ascii") if name_bytes in args: values = args[name_bytes] return [ _parse_string_value(value, allowed_values, name=name, encoding=encoding) for value in values ] else: if required: message = "Missing string query parameter %r" % (name,) raise SynapseError( HTTPStatus.BAD_REQUEST, message, errcode=Codes.MISSING_PARAM ) return default @overload def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, *, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[str]: ... @overload def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, *, required: Literal[True], allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> str: ... @overload def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, required: bool = False, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[str]: ... def parse_string_from_args( args: Mapping[bytes, Sequence[bytes]], name: str, default: Optional[str] = None, required: bool = False, allowed_values: Optional[StrCollection] = None, encoding: str = "ascii", ) -> Optional[str]: """ Parse the string parameter from the request query string list and return the first result. The content of the query param will be decoded to Unicode using the encoding. Args: args: A mapping of request args as bytes to a list of bytes (e.g. request.args). name: the name of the query parameter. default: value to use if the parameter is absent, defaults to None. required: whether to raise a 400 SynapseError if the parameter is absent, defaults to False. allowed_values: List of allowed values for the string, or None if any value is allowed, defaults to None. Must be the same type as name, if given. encoding: The encoding to decode the string content with. Returns: A string value or the default. Raises: SynapseError if the parameter is absent and required, or if the parameter is present, must be one of a list of allowed values and is not one of those allowed values. """ strings = parse_strings_from_args( args, name, default=[default] if default is not None else None, required=required, allowed_values=allowed_values, encoding=encoding, ) if strings is None: return None return strings[0] @overload def parse_json_value_from_request(request: Request) -> JsonDict: ... @overload def parse_json_value_from_request( request: Request, allow_empty_body: Literal[False] ) -> JsonDict: ... @overload def parse_json_value_from_request( request: Request, allow_empty_body: bool = False ) -> Optional[JsonDict]: ... def parse_json_value_from_request( request: Request, allow_empty_body: bool = False ) -> Optional[JsonDict]: """Parse a JSON value from the body of a twisted HTTP request. Args: request: the twisted HTTP request. allow_empty_body: if True, an empty body will be accepted and turned into None Returns: The JSON value. Raises: SynapseError if the request body couldn't be decoded as JSON. """ try: content_bytes = request.content.read() # type: ignore except Exception: raise SynapseError(HTTPStatus.BAD_REQUEST, "Error reading JSON content.") if not content_bytes and allow_empty_body: return None try: content = json_decoder.decode(content_bytes.decode("utf-8")) except Exception as e: logger.warning( "Unable to parse JSON from %s %s response: %s (%s)", request.method.decode("ascii", errors="replace"), redact_uri(request.uri.decode("ascii", errors="replace")), e, content_bytes, ) raise SynapseError( HTTPStatus.BAD_REQUEST, "Content not JSON.", errcode=Codes.NOT_JSON ) return content def parse_json_object_from_request( request: Request, allow_empty_body: bool = False ) -> JsonDict: """Parse a JSON object from the body of a twisted HTTP request. Args: request: the twisted HTTP request. allow_empty_body: if True, an empty body will be accepted and turned into an empty dict. Raises: SynapseError if the request body couldn't be decoded as JSON or if it wasn't a JSON object. """ content = parse_json_value_from_request(request, allow_empty_body=allow_empty_body) if allow_empty_body and content is None: return {} if not isinstance(content, dict): message = "Content must be a JSON object." raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.BAD_JSON) return content Model = TypeVar("Model", bound=BaseModel) def validate_json_object(content: JsonDict, model_type: Type[Model]) -> Model: """Validate a deserialized JSON object using the given pydantic model. Raises: SynapseError if the request body couldn't be decoded as JSON or if it wasn't a JSON object. """ try: instance = model_type.parse_obj(content) except ValidationError as e: # Choose a matrix error code. The catch-all is BAD_JSON, but we try to find a # more specific error if possible (which occasionally helps us to be spec- # compliant) This is a bit awkward because the spec's error codes aren't very # clear-cut: BAD_JSON arguably overlaps with MISSING_PARAM and INVALID_PARAM. errcode = Codes.BAD_JSON raw_errors = e.raw_errors if len(raw_errors) == 1 and isinstance(raw_errors[0], ErrorWrapper): raw_error = raw_errors[0].exc if isinstance(raw_error, MissingError): errcode = Codes.MISSING_PARAM elif isinstance(raw_error, PydanticValueError): errcode = Codes.INVALID_PARAM raise SynapseError(HTTPStatus.BAD_REQUEST, str(e), errcode=errcode) return instance def parse_and_validate_json_object_from_request( request: Request, model_type: Type[Model] ) -> Model: """Parse a JSON object from the body of a twisted HTTP request, then deserialise and validate using the given pydantic model. Raises: SynapseError if the request body couldn't be decoded as JSON or if it wasn't a JSON object. """ content = parse_json_object_from_request(request, allow_empty_body=False) return validate_json_object(content, model_type) def assert_params_in_dict(body: JsonDict, required: StrCollection) -> None: absent = [] for k in required: if k not in body: absent.append(k) if len(absent) > 0: raise SynapseError( HTTPStatus.BAD_REQUEST, "Missing params: %r" % absent, Codes.MISSING_PARAM ) class RestServlet: """A Synapse REST Servlet. An implementing class can either provide its own custom 'register' method, or use the automatic pattern handling provided by the base class. To use this latter, the implementing class instead provides a `PATTERN` class attribute containing a pre-compiled regular expression. The automatic register method will then use this method to register any of the following instance methods associated with the corresponding HTTP method: on_GET on_PUT on_POST on_DELETE Automatically handles turning CodeMessageExceptions thrown by these methods into the appropriate HTTP response. """ def register(self, http_server: HttpServer) -> None: """Register this servlet with the given HTTP server.""" patterns = getattr(self, "PATTERNS", None) if patterns: for method in ("GET", "PUT", "POST", "DELETE"): if hasattr(self, "on_%s" % (method,)): servlet_classname = self.__class__.__name__ method_handler = getattr(self, "on_%s" % (method,)) http_server.register_paths( method, patterns, method_handler, servlet_classname ) else: raise NotImplementedError("RestServlet must register something.") class ResolveRoomIdMixin: def __init__(self, hs: "HomeServer"): self.room_member_handler = hs.get_room_member_handler() async def resolve_room_id( self, room_identifier: str, remote_room_hosts: Optional[List[str]] = None ) -> Tuple[str, Optional[List[str]]]: """ Resolve a room identifier to a room ID, if necessary. This also performanes checks to ensure the room ID is of the proper form. Args: room_identifier: The room ID or alias. remote_room_hosts: The potential remote room hosts to use. Returns: The resolved room ID. Raises: SynapseError if the room ID is of the wrong form. """ if RoomID.is_valid(room_identifier): resolved_room_id = room_identifier elif RoomAlias.is_valid(room_identifier): room_alias = RoomAlias.from_string(room_identifier) ( room_id, remote_room_hosts, ) = await self.room_member_handler.lookup_room_alias(room_alias) resolved_room_id = room_id.to_string() else: raise SynapseError( HTTPStatus.BAD_REQUEST, "%s was not legal room ID or room alias" % (room_identifier,), ) if not resolved_room_id: raise SynapseError( HTTPStatus.BAD_REQUEST, "Unknown room ID or room alias %s" % room_identifier, ) return resolved_room_id, remote_room_hosts synapse-1.100.0/synapse/http/site.py000066400000000000000000000644661455622526000173410ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import contextlib import logging import time from typing import TYPE_CHECKING, Any, Generator, Optional, Tuple, Union import attr from zope.interface import implementer from twisted.internet.address import UNIXAddress from twisted.internet.defer import Deferred from twisted.internet.interfaces import IAddress from twisted.python.failure import Failure from twisted.web.http import HTTPChannel from twisted.web.resource import IResource, Resource from twisted.web.server import Request from synapse.config.server import ListenerConfig from synapse.http import get_request_user_agent, redact_uri from synapse.http.proxy import ProxySite from synapse.http.request_metrics import RequestMetrics, requests_counter from synapse.logging.context import ( ContextRequest, LoggingContext, PreserveLoggingContext, ) from synapse.types import ISynapseReactor, Requester if TYPE_CHECKING: import opentracing from synapse.server import HomeServer logger = logging.getLogger(__name__) _next_request_seq = 0 class SynapseRequest(Request): """Class which encapsulates an HTTP request to synapse. All of the requests processed in synapse are of this type. It extends twisted's twisted.web.server.Request, and adds: * Unique request ID * A log context associated with the request * Redaction of access_token query-params in __repr__ * Logging at start and end * Metrics to record CPU, wallclock and DB time by endpoint. * A limit to the size of request which will be accepted It also provides a method `processing`, which returns a context manager. If this method is called, the request won't be logged until the context manager is closed; this is useful for asynchronous request handlers which may go on processing the request even after the client has disconnected. Attributes: logcontext: the log context for this request """ def __init__( self, channel: HTTPChannel, site: "SynapseSite", *args: Any, max_request_body_size: int = 1024, request_id_header: Optional[str] = None, **kw: Any, ): super().__init__(channel, *args, **kw) self._max_request_body_size = max_request_body_size self.request_id_header = request_id_header self.synapse_site = site self.reactor = site.reactor self._channel = channel # this is used by the tests self.start_time = 0.0 self.experimental_cors_msc3886 = site.experimental_cors_msc3886 # The requester, if authenticated. For federation requests this is the # server name, for client requests this is the Requester object. self._requester: Optional[Union[Requester, str]] = None # An opentracing span for this request. Will be closed when the request is # completely processed. self._opentracing_span: "Optional[opentracing.Span]" = None # we can't yet create the logcontext, as we don't know the method. self.logcontext: Optional[LoggingContext] = None # The `Deferred` to cancel if the client disconnects early and # `is_render_cancellable` is set. Expected to be set by `Resource.render`. self.render_deferred: Optional["Deferred[None]"] = None # A boolean indicating whether `render_deferred` should be cancelled if the # client disconnects early. Expected to be set by the coroutine started by # `Resource.render`, if rendering is asynchronous. self.is_render_cancellable: bool = False global _next_request_seq self.request_seq = _next_request_seq _next_request_seq += 1 # whether an asynchronous request handler has called processing() self._is_processing = False # the time when the asynchronous request handler completed its processing self._processing_finished_time: Optional[float] = None # what time we finished sending the response to the client (or the connection # dropped) self.finish_time: Optional[float] = None def __repr__(self) -> str: # We overwrite this so that we don't log ``access_token`` return "<%s at 0x%x method=%r uri=%r clientproto=%r site=%r>" % ( self.__class__.__name__, id(self), self.get_method(), self.get_redacted_uri(), self.clientproto.decode("ascii", errors="replace"), self.synapse_site.site_tag, ) def handleContentChunk(self, data: bytes) -> None: # we should have a `content` by now. assert self.content, "handleContentChunk() called before gotLength()" if self.content.tell() + len(data) > self._max_request_body_size: logger.warning( "Aborting connection from %s because the request exceeds maximum size: %s %s", self.client, self.get_method(), self.get_redacted_uri(), ) self.transport.abortConnection() return super().handleContentChunk(data) @property def requester(self) -> Optional[Union[Requester, str]]: return self._requester @requester.setter def requester(self, value: Union[Requester, str]) -> None: # Store the requester, and update some properties based on it. # This should only be called once. assert self._requester is None self._requester = value # A logging context should exist by now (and have a ContextRequest). assert self.logcontext is not None assert self.logcontext.request is not None ( requester, authenticated_entity, ) = self.get_authenticated_entity() self.logcontext.request.requester = requester # If there's no authenticated entity, it was the requester. self.logcontext.request.authenticated_entity = authenticated_entity or requester def set_opentracing_span(self, span: "opentracing.Span") -> None: """attach an opentracing span to this request Doing so will cause the span to be closed when we finish processing the request """ self._opentracing_span = span def get_request_id(self) -> str: request_id_value = None if self.request_id_header: request_id_value = self.getHeader(self.request_id_header) if request_id_value is None: request_id_value = str(self.request_seq) return "%s-%s" % (self.get_method(), request_id_value) def get_redacted_uri(self) -> str: """Gets the redacted URI associated with the request (or placeholder if the URI has not yet been received). Note: This is necessary as the placeholder value in twisted is str rather than bytes, so we need to sanitise `self.uri`. Returns: The redacted URI as a string. """ uri: Union[bytes, str] = self.uri if isinstance(uri, bytes): uri = uri.decode("ascii", errors="replace") return redact_uri(uri) def get_method(self) -> str: """Gets the method associated with the request (or placeholder if method has not yet been received). Note: This is necessary as the placeholder value in twisted is str rather than bytes, so we need to sanitise `self.method`. Returns: The request method as a string. """ method: Union[bytes, str] = self.method if isinstance(method, bytes): return self.method.decode("ascii") return method def get_authenticated_entity(self) -> Tuple[Optional[str], Optional[str]]: """ Get the "authenticated" entity of the request, which might be the user performing the action, or a user being puppeted by a server admin. Returns: A tuple: The first item is a string representing the user making the request. The second item is a string or None representing the user who authenticated when making this request. See Requester.authenticated_entity. """ # Convert the requester into a string that we can log if isinstance(self._requester, str): return self._requester, None elif isinstance(self._requester, Requester): requester = self._requester.user.to_string() authenticated_entity = self._requester.authenticated_entity # If this is a request where the target user doesn't match the user who # authenticated (e.g. and admin is puppetting a user) then we return both. if requester != authenticated_entity: return requester, authenticated_entity return requester, None elif self._requester is not None: # This shouldn't happen, but we log it so we don't lose information # and can see that we're doing something wrong. return repr(self._requester), None # type: ignore[unreachable] return None, None def render(self, resrc: Resource) -> None: # this is called once a Resource has been found to serve the request; in our # case the Resource in question will normally be a JsonResource. # create a LogContext for this request request_id = self.get_request_id() self.logcontext = LoggingContext( request_id, request=ContextRequest( request_id=request_id, ip_address=self.get_client_ip_if_available(), site_tag=self.synapse_site.site_tag, # The requester is going to be unknown at this point. requester=None, authenticated_entity=None, method=self.get_method(), url=self.get_redacted_uri(), protocol=self.clientproto.decode("ascii", errors="replace"), user_agent=get_request_user_agent(self), ), ) # override the Server header which is set by twisted self.setHeader("Server", self.synapse_site.server_version_string) with PreserveLoggingContext(self.logcontext): # we start the request metrics timer here with an initial stab # at the servlet name. For most requests that name will be # JsonResource (or a subclass), and JsonResource._async_render # will update it once it picks a servlet. servlet_name = resrc.__class__.__name__ self._started_processing(servlet_name) Request.render(self, resrc) # record the arrival of the request *after* # dispatching to the handler, so that the handler # can update the servlet name in the request # metrics requests_counter.labels(self.get_method(), self.request_metrics.name).inc() @contextlib.contextmanager def processing(self) -> Generator[None, None, None]: """Record the fact that we are processing this request. Returns a context manager; the correct way to use this is: async def handle_request(request): with request.processing("FooServlet"): await really_handle_the_request() Once the context manager is closed, the completion of the request will be logged, and the various metrics will be updated. """ if self._is_processing: raise RuntimeError("Request is already processing") self._is_processing = True try: yield except Exception: # this should already have been caught, and sent back to the client as a 500. logger.exception( "Asynchronous message handler raised an uncaught exception" ) finally: # the request handler has finished its work and either sent the whole response # back, or handed over responsibility to a Producer. self._processing_finished_time = time.time() self._is_processing = False if self._opentracing_span: self._opentracing_span.log_kv({"event": "finished processing"}) # if we've already sent the response, log it now; otherwise, we wait for the # response to be sent. if self.finish_time is not None: self._finished_processing() def finish(self) -> None: """Called when all response data has been written to this Request. Overrides twisted.web.server.Request.finish to record the finish time and do logging. """ self.finish_time = time.time() Request.finish(self) if self._opentracing_span: self._opentracing_span.log_kv({"event": "response sent"}) if not self._is_processing: assert self.logcontext is not None with PreserveLoggingContext(self.logcontext): self._finished_processing() def connectionLost(self, reason: Union[Failure, Exception]) -> None: """Called when the client connection is closed before the response is written. Overrides twisted.web.server.Request.connectionLost to record the finish time and do logging. """ # There is a bug in Twisted where reason is not wrapped in a Failure object # Detect this and wrap it manually as a workaround # More information: https://github.com/matrix-org/synapse/issues/7441 if not isinstance(reason, Failure): reason = Failure(reason) self.finish_time = time.time() Request.connectionLost(self, reason) if self.logcontext is None: logger.info( "Connection from %s lost before request headers were read", self.client ) return # we only get here if the connection to the client drops before we send # the response. # # It's useful to log it here so that we can get an idea of when # the client disconnects. with PreserveLoggingContext(self.logcontext): logger.info("Connection from client lost before response was sent") if self._opentracing_span: self._opentracing_span.log_kv( {"event": "client connection lost", "reason": str(reason.value)} ) if self._is_processing: if self.is_render_cancellable: if self.render_deferred is not None: # Throw a cancellation into the request processing, in the hope # that it will finish up sooner than it normally would. # The `self.processing()` context manager will call # `_finished_processing()` when done. with PreserveLoggingContext(): self.render_deferred.cancel() else: logger.error( "Connection from client lost, but have no Deferred to " "cancel even though the request is marked as cancellable." ) else: self._finished_processing() def _started_processing(self, servlet_name: str) -> None: """Record the fact that we are processing this request. This will log the request's arrival. Once the request completes, be sure to call finished_processing. Args: servlet_name: the name of the servlet which will be processing this request. This is used in the metrics. It is possible to update this afterwards by updating self.request_metrics.name. """ self.start_time = time.time() self.request_metrics = RequestMetrics() self.request_metrics.start( self.start_time, name=servlet_name, method=self.get_method() ) self.synapse_site.access_logger.debug( "%s - %s - Received request: %s %s", self.get_client_ip_if_available(), self.synapse_site.site_tag, self.get_method(), self.get_redacted_uri(), ) def _finished_processing(self) -> None: """Log the completion of this request and update the metrics""" assert self.logcontext is not None assert self.finish_time is not None usage = self.logcontext.get_resource_usage() if self._processing_finished_time is None: # we completed the request without anything calling processing() self._processing_finished_time = time.time() # the time between receiving the request and the request handler finishing processing_time = self._processing_finished_time - self.start_time # the time between the request handler finishing and the response being sent # to the client (nb may be negative) response_send_time = self.finish_time - self._processing_finished_time user_agent = get_request_user_agent(self, "-") # int(self.code) looks redundant, because self.code is already an int. # But self.code might be an HTTPStatus (which inherits from int)---which has # a different string representation. So ensure we really have an integer. code = str(int(self.code)) if not self.finished: # we didn't send the full response before we gave up (presumably because # the connection dropped) code += "!" log_level = logging.INFO if self._should_log_request() else logging.DEBUG # If this is a request where the target user doesn't match the user who # authenticated (e.g. and admin is puppetting a user) then we log both. requester, authenticated_entity = self.get_authenticated_entity() if authenticated_entity: requester = f"{authenticated_entity}|{requester}" self.synapse_site.access_logger.log( log_level, "%s - %s - {%s}" " Processed request: %.3fsec/%.3fsec (%.3fsec, %.3fsec) (%.3fsec/%.3fsec/%d)" ' %sB %s "%s %s %s" "%s" [%d dbevts]', self.get_client_ip_if_available(), self.synapse_site.site_tag, requester, processing_time, response_send_time, usage.ru_utime, usage.ru_stime, usage.db_sched_duration_sec, usage.db_txn_duration_sec, int(usage.db_txn_count), self.sentLength, code, self.get_method(), self.get_redacted_uri(), self.clientproto.decode("ascii", errors="replace"), user_agent, usage.evt_db_fetch_count, ) # complete the opentracing span, if any. if self._opentracing_span: self._opentracing_span.finish() try: self.request_metrics.stop(self.finish_time, self.code, self.sentLength) except Exception as e: logger.warning("Failed to stop metrics: %r", e) def _should_log_request(self) -> bool: """Whether we should log at INFO that we processed the request.""" if self.path == b"/health": return False if self.method == b"OPTIONS": return False return True def get_client_ip_if_available(self) -> str: """Logging helper. Return something useful when a client IP is not retrievable from a unix socket. In practice, this returns the socket file path on a SynapseRequest if using a unix socket and the normal IP address for TCP sockets. """ # getClientAddress().host returns a proper IP address for a TCP socket. But # unix sockets have no concept of IP addresses or ports and return a # UNIXAddress containing a 'None' value. In order to get something usable for # logs(where this is used) get the unix socket file. getHost() returns a # UNIXAddress containing a value of the socket file and has an instance # variable of 'name' encoded as a byte string containing the path we want. # Decode to utf-8 so it looks nice. if isinstance(self.getClientAddress(), UNIXAddress): return self.getHost().name.decode("utf-8") else: return self.getClientAddress().host def request_info(self) -> "RequestInfo": h = self.getHeader(b"User-Agent") user_agent = h.decode("ascii", "replace") if h else None return RequestInfo(user_agent=user_agent, ip=self.get_client_ip_if_available()) class XForwardedForRequest(SynapseRequest): """Request object which honours proxy headers Extends SynapseRequest to replace getClientIP, getClientAddress, and isSecure with information from request headers. """ # the client IP and ssl flag, as extracted from the headers. _forwarded_for: "Optional[_XForwardedForAddress]" = None _forwarded_https: bool = False def requestReceived(self, command: bytes, path: bytes, version: bytes) -> None: # this method is called by the Channel once the full request has been # received, to dispatch the request to a resource. # We can use it to set the IP address and protocol according to the # headers. self._process_forwarded_headers() return super().requestReceived(command, path, version) def _process_forwarded_headers(self) -> None: headers = self.requestHeaders.getRawHeaders(b"x-forwarded-for") if not headers: return # for now, we just use the first x-forwarded-for header. Really, we ought # to start from the client IP address, and check whether it is trusted; if it # is, work backwards through the headers until we find an untrusted address. # see https://github.com/matrix-org/synapse/issues/9471 self._forwarded_for = _XForwardedForAddress( headers[0].split(b",")[0].strip().decode("ascii") ) # if we got an x-forwarded-for header, also look for an x-forwarded-proto header header = self.getHeader(b"x-forwarded-proto") if header is not None: self._forwarded_https = header.lower() == b"https" else: # this is done largely for backwards-compatibility so that people that # haven't set an x-forwarded-proto header don't get a redirect loop. logger.warning( "forwarded request lacks an x-forwarded-proto header: assuming https" ) self._forwarded_https = True def isSecure(self) -> bool: if self._forwarded_https: return True return super().isSecure() def getClientIP(self) -> str: """ Return the IP address of the client who submitted this request. This method is deprecated. Use getClientAddress() instead. """ if self._forwarded_for is not None: return self._forwarded_for.host return super().getClientIP() def getClientAddress(self) -> IAddress: """ Return the address of the client who submitted this request. """ if self._forwarded_for is not None: return self._forwarded_for return super().getClientAddress() @implementer(IAddress) @attr.s(frozen=True, slots=True, auto_attribs=True) class _XForwardedForAddress: host: str class SynapseSite(ProxySite): """ Synapse-specific twisted http Site This does two main things. First, it replaces the requestFactory in use so that we build SynapseRequests instead of regular t.w.server.Requests. All of the constructor params are really just parameters for SynapseRequest. Second, it inhibits the log() method called by Request.finish, since SynapseRequest does its own logging. """ def __init__( self, logger_name: str, site_tag: str, config: ListenerConfig, resource: IResource, server_version_string: str, max_request_body_size: int, reactor: ISynapseReactor, hs: "HomeServer", ): """ Args: logger_name: The name of the logger to use for access logs. site_tag: A tag to use for this site - mostly in access logs. config: Configuration for the HTTP listener corresponding to this site resource: The base of the resource tree to be used for serving requests on this site server_version_string: A string to present for the Server header max_request_body_size: Maximum request body length to allow before dropping the connection reactor: reactor to be used to manage connection timeouts """ super().__init__( resource=resource, reactor=reactor, hs=hs, ) self.site_tag = site_tag self.reactor = reactor assert config.http_options is not None proxied = config.http_options.x_forwarded request_class = XForwardedForRequest if proxied else SynapseRequest request_id_header = config.http_options.request_id_header self.experimental_cors_msc3886: bool = ( config.http_options.experimental_cors_msc3886 ) def request_factory(channel: HTTPChannel, queued: bool) -> Request: return request_class( channel, self, max_request_body_size=max_request_body_size, queued=queued, request_id_header=request_id_header, ) self.requestFactory = request_factory # type: ignore self.access_logger = logging.getLogger(logger_name) self.server_version_string = server_version_string.encode("ascii") def log(self, request: SynapseRequest) -> None: pass @attr.s(auto_attribs=True, frozen=True, slots=True) class RequestInfo: user_agent: Optional[str] ip: str synapse-1.100.0/synapse/http/types.py000066400000000000000000000020021455622526000175130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2022 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # from typing import Iterable, Mapping, Union # the type of the query params, to be passed into `urlencode` with `doseq=True`. QueryParamValue = Union[str, bytes, Iterable[Union[str, bytes]]] QueryParams = Union[Mapping[str, QueryParamValue], Mapping[bytes, QueryParamValue]] __all__ = ["QueryParams"] synapse-1.100.0/synapse/logging/000077500000000000000000000000001455622526000164525ustar00rootroot00000000000000synapse-1.100.0/synapse/logging/__init__.py000066400000000000000000000021561455622526000205670ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from synapse.logging._remote import RemoteHandler from synapse.logging._terse_json import JsonFormatter, TerseJsonFormatter # These are imported to allow for nicer logging configuration files. __all__ = ["RemoteHandler", "JsonFormatter", "TerseJsonFormatter"] # Debug logger for https://github.com/matrix-org/synapse/issues/9533 etc issue9533_logger = logging.getLogger("synapse.9533_debug") synapse-1.100.0/synapse/logging/_remote.py000066400000000000000000000207011455622526000204560ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import sys import traceback from collections import deque from ipaddress import IPv4Address, IPv6Address, ip_address from math import floor from typing import Callable, Deque, Optional import attr from zope.interface import implementer from twisted.application.internet import ClientService from twisted.internet.defer import CancelledError, Deferred from twisted.internet.endpoints import ( HostnameEndpoint, TCP4ClientEndpoint, TCP6ClientEndpoint, ) from twisted.internet.interfaces import ( IPushProducer, IReactorTCP, IStreamClientEndpoint, ) from twisted.internet.protocol import Factory, Protocol from twisted.internet.tcp import Connection from twisted.python.failure import Failure logger = logging.getLogger(__name__) @attr.s(slots=True, auto_attribs=True) @implementer(IPushProducer) class LogProducer: """ An IPushProducer that writes logs from its buffer to its transport when it is resumed. Args: buffer: Log buffer to read logs from. transport: Transport to write to. format: A callable to format the log record to a string. """ # This is essentially ITCPTransport, but that is missing certain fields # (connected and registerProducer) which are part of the implementation. transport: Connection _format: Callable[[logging.LogRecord], str] _buffer: Deque[logging.LogRecord] _paused: bool = attr.ib(default=False, init=False) def pauseProducing(self) -> None: self._paused = True def stopProducing(self) -> None: self._paused = True self._buffer = deque() def resumeProducing(self) -> None: # If we're already producing, nothing to do. self._paused = False # Loop until paused. while self._paused is False and (self._buffer and self.transport.connected): try: # Request the next record and format it. record = self._buffer.popleft() msg = self._format(record) # Send it as a new line over the transport. self.transport.write(msg.encode("utf8")) self.transport.write(b"\n") except Exception: # Something has gone wrong writing to the transport -- log it # and break out of the while. traceback.print_exc(file=sys.__stderr__) break class RemoteHandler(logging.Handler): """ An logging handler that writes logs to a TCP target. Args: host: The host of the logging target. port: The logging target's port. maximum_buffer: The maximum buffer size. """ def __init__( self, host: str, port: int, maximum_buffer: int = 1000, level: int = logging.NOTSET, _reactor: Optional[IReactorTCP] = None, ): super().__init__(level=level) self.host = host self.port = port self.maximum_buffer = maximum_buffer self._buffer: Deque[logging.LogRecord] = deque() self._connection_waiter: Optional[Deferred] = None self._producer: Optional[LogProducer] = None # Connect without DNS lookups if it's a direct IP. if _reactor is None: from twisted.internet import reactor _reactor = reactor # type: ignore[assignment] try: ip = ip_address(self.host) if isinstance(ip, IPv4Address): endpoint: IStreamClientEndpoint = TCP4ClientEndpoint( _reactor, self.host, self.port ) elif isinstance(ip, IPv6Address): endpoint = TCP6ClientEndpoint(_reactor, self.host, self.port) else: raise ValueError("Unknown IP address provided: %s" % (self.host,)) except ValueError: endpoint = HostnameEndpoint(_reactor, self.host, self.port) factory = Factory.forProtocol(Protocol) self._service = ClientService(endpoint, factory, clock=_reactor) self._service.startService() self._stopping = False self._connect() def close(self) -> None: self._stopping = True self._service.stopService() def _connect(self) -> None: """ Triggers an attempt to connect then write to the remote if not already writing. """ # Do not attempt to open multiple connections. if self._connection_waiter: return def fail(failure: Failure) -> None: # If the Deferred was cancelled (e.g. during shutdown) do not try to # reconnect (this will cause an infinite loop of errors). if failure.check(CancelledError) and self._stopping: return # For a different error, print the traceback and re-connect. failure.printTraceback(file=sys.__stderr__) self._connection_waiter = None self._connect() def writer(result: Protocol) -> None: # Force recognising transport as a Connection and not the more # generic ITransport. transport: Connection = result.transport # type: ignore # We have a connection. If we already have a producer, and its # transport is the same, just trigger a resumeProducing. if self._producer and transport is self._producer.transport: self._producer.resumeProducing() self._connection_waiter = None return # If the producer is still producing, stop it. if self._producer: self._producer.stopProducing() # Make a new producer and start it. self._producer = LogProducer( buffer=self._buffer, transport=transport, format=self.format, ) transport.registerProducer(self._producer, True) self._producer.resumeProducing() self._connection_waiter = None deferred: Deferred = self._service.whenConnected(failAfterFailures=1) deferred.addCallbacks(writer, fail) self._connection_waiter = deferred def _handle_pressure(self) -> None: """ Handle backpressure by shedding records. The buffer will, in this order, until the buffer is below the maximum: - Shed DEBUG records. - Shed INFO records. - Shed the middle 50% of the records. """ if len(self._buffer) <= self.maximum_buffer: return # Strip out DEBUGs self._buffer = deque( filter(lambda record: record.levelno > logging.DEBUG, self._buffer) ) if len(self._buffer) <= self.maximum_buffer: return # Strip out INFOs self._buffer = deque( filter(lambda record: record.levelno > logging.INFO, self._buffer) ) if len(self._buffer) <= self.maximum_buffer: return # Cut the middle entries out buffer_split = floor(self.maximum_buffer / 2) old_buffer = self._buffer self._buffer = deque() for _ in range(buffer_split): self._buffer.append(old_buffer.popleft()) end_buffer = [] for _ in range(buffer_split): end_buffer.append(old_buffer.pop()) self._buffer.extend(reversed(end_buffer)) def emit(self, record: logging.LogRecord) -> None: self._buffer.append(record) # Handle backpressure, if it exists. try: self._handle_pressure() except Exception: # If handling backpressure fails, clear the buffer and log the # exception. self._buffer.clear() logger.warning("Failed clearing backpressure") # Try and write immediately. self._connect() synapse-1.100.0/synapse/logging/_terse_json.py000066400000000000000000000050751455622526000213450ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ Log formatters that output terse JSON. """ import json import logging _encoder = json.JSONEncoder(ensure_ascii=False, separators=(",", ":")) # The properties of a standard LogRecord that should be ignored when generating # JSON logs. _IGNORED_LOG_RECORD_ATTRIBUTES = { "args", "asctime", "created", "exc_info", # exc_text isn't a public attribute, but is used to cache the result of formatException. "exc_text", "filename", "funcName", "levelname", "levelno", "lineno", "message", "module", "msecs", "msg", "name", "pathname", "process", "processName", "relativeCreated", "stack_info", "taskName", "thread", "threadName", } class JsonFormatter(logging.Formatter): def format(self, record: logging.LogRecord) -> str: event = { "log": record.getMessage(), "namespace": record.name, "level": record.levelname, } return self._format(record, event) def _format(self, record: logging.LogRecord, event: dict) -> str: # Add attributes specified via the extra keyword to the logged event. for key, value in record.__dict__.items(): if key not in _IGNORED_LOG_RECORD_ATTRIBUTES: event[key] = value if record.exc_info: exc_type, exc_value, _ = record.exc_info if exc_type: event["exc_type"] = f"{exc_type.__name__}" event["exc_value"] = f"{exc_value}" return _encoder.encode(event) class TerseJsonFormatter(JsonFormatter): def format(self, record: logging.LogRecord) -> str: event = { "log": record.getMessage(), "namespace": record.name, "level": record.levelname, "time": round(record.created, 2), } return self._format(record, event) synapse-1.100.0/synapse/logging/context.py000066400000000000000000001000101455622526000205000ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # """ Thread-local-alike tracking of log contexts within synapse This module provides objects and utilities for tracking contexts through synapse code, so that log lines can include a request identifier, and so that CPU and database activity can be accounted for against the request that caused them. See doc/log_contexts.rst for details on how this works. """ import logging import threading import typing import warnings from types import TracebackType from typing import ( TYPE_CHECKING, Awaitable, Callable, Optional, Tuple, Type, TypeVar, Union, overload, ) import attr from typing_extensions import Literal, ParamSpec from twisted.internet import defer, threads from twisted.python.threadpool import ThreadPool if TYPE_CHECKING: from synapse.logging.scopecontextmanager import _LogContextScope from synapse.types import ISynapseReactor logger = logging.getLogger(__name__) try: import resource # Python doesn't ship with a definition of RUSAGE_THREAD but it's defined # to be 1 on linux so we hard code it. RUSAGE_THREAD = 1 # If the system doesn't support RUSAGE_THREAD then this should throw an # exception. resource.getrusage(RUSAGE_THREAD) is_thread_resource_usage_supported = True def get_thread_resource_usage() -> "Optional[resource.struct_rusage]": return resource.getrusage(RUSAGE_THREAD) except Exception: # If the system doesn't support resource.getrusage(RUSAGE_THREAD) then we # won't track resource usage. is_thread_resource_usage_supported = False def get_thread_resource_usage() -> "Optional[resource.struct_rusage]": return None # a hook which can be set during testing to assert that we aren't abusing logcontexts. def logcontext_error(msg: str) -> None: logger.warning(msg) # get an id for the current thread. # # threading.get_ident doesn't actually return an OS-level tid, and annoyingly, # on Linux it actually returns the same value either side of a fork() call. However # we only fork in one place, so it's not worth the hoop-jumping to get a real tid. # get_thread_id = threading.get_ident class ContextResourceUsage: """Object for tracking the resources used by a log context Attributes: ru_utime (float): user CPU time (in seconds) ru_stime (float): system CPU time (in seconds) db_txn_count (int): number of database transactions done db_sched_duration_sec (float): amount of time spent waiting for a database connection db_txn_duration_sec (float): amount of time spent doing database transactions (excluding scheduling time) evt_db_fetch_count (int): number of events requested from the database """ __slots__ = [ "ru_stime", "ru_utime", "db_txn_count", "db_txn_duration_sec", "db_sched_duration_sec", "evt_db_fetch_count", ] def __init__(self, copy_from: "Optional[ContextResourceUsage]" = None) -> None: """Create a new ContextResourceUsage Args: copy_from: if not None, an object to copy stats from """ if copy_from is None: self.reset() else: # FIXME: mypy can't infer the types set via reset() above, so specify explicitly for now self.ru_utime: float = copy_from.ru_utime self.ru_stime: float = copy_from.ru_stime self.db_txn_count: int = copy_from.db_txn_count self.db_txn_duration_sec: float = copy_from.db_txn_duration_sec self.db_sched_duration_sec: float = copy_from.db_sched_duration_sec self.evt_db_fetch_count: int = copy_from.evt_db_fetch_count def copy(self) -> "ContextResourceUsage": return ContextResourceUsage(copy_from=self) def reset(self) -> None: self.ru_stime = 0.0 self.ru_utime = 0.0 self.db_txn_count = 0 self.db_txn_duration_sec = 0.0 self.db_sched_duration_sec = 0.0 self.evt_db_fetch_count = 0 def __repr__(self) -> str: return ( "" ) % ( self.ru_stime, self.ru_utime, self.db_txn_count, self.db_txn_duration_sec, self.db_sched_duration_sec, self.evt_db_fetch_count, ) def __iadd__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": """Add another ContextResourceUsage's stats to this one's. Args: other: the other resource usage object """ self.ru_utime += other.ru_utime self.ru_stime += other.ru_stime self.db_txn_count += other.db_txn_count self.db_txn_duration_sec += other.db_txn_duration_sec self.db_sched_duration_sec += other.db_sched_duration_sec self.evt_db_fetch_count += other.evt_db_fetch_count return self def __isub__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": self.ru_utime -= other.ru_utime self.ru_stime -= other.ru_stime self.db_txn_count -= other.db_txn_count self.db_txn_duration_sec -= other.db_txn_duration_sec self.db_sched_duration_sec -= other.db_sched_duration_sec self.evt_db_fetch_count -= other.evt_db_fetch_count return self def __add__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": res = ContextResourceUsage(copy_from=self) res += other return res def __sub__(self, other: "ContextResourceUsage") -> "ContextResourceUsage": res = ContextResourceUsage(copy_from=self) res -= other return res @attr.s(slots=True, auto_attribs=True) class ContextRequest: """ A bundle of attributes from the SynapseRequest object. This exists to: * Avoid a cycle between LoggingContext and SynapseRequest. * Be a single variable that can be passed from parent LoggingContexts to their children. """ request_id: str ip_address: str site_tag: str requester: Optional[str] authenticated_entity: Optional[str] method: str url: str protocol: str user_agent: str LoggingContextOrSentinel = Union["LoggingContext", "_Sentinel"] class _Sentinel: """Sentinel to represent the root context""" __slots__ = ["previous_context", "finished", "request", "scope", "tag"] def __init__(self) -> None: # Minimal set for compatibility with LoggingContext self.previous_context = None self.finished = False self.request = None self.scope = None self.tag = None def __str__(self) -> str: return "sentinel" def start(self, rusage: "Optional[resource.struct_rusage]") -> None: pass def stop(self, rusage: "Optional[resource.struct_rusage]") -> None: pass def add_database_transaction(self, duration_sec: float) -> None: pass def add_database_scheduled(self, sched_sec: float) -> None: pass def record_event_fetch(self, event_count: int) -> None: pass def __bool__(self) -> Literal[False]: return False SENTINEL_CONTEXT = _Sentinel() class LoggingContext: """Additional context for log formatting. Contexts are scoped within a "with" block. If a parent is given when creating a new context, then: - logging fields are copied from the parent to the new context on entry - when the new context exits, the cpu usage stats are copied from the child to the parent Args: name: Name for the context for logging. If this is omitted, it is inherited from the parent context. parent_context (LoggingContext|None): The parent of the new context """ __slots__ = [ "previous_context", "name", "parent_context", "_resource_usage", "usage_start", "main_thread", "finished", "request", "tag", "scope", ] def __init__( self, name: Optional[str] = None, parent_context: "Optional[LoggingContext]" = None, request: Optional[ContextRequest] = None, ) -> None: self.previous_context = current_context() # track the resources used by this context so far self._resource_usage = ContextResourceUsage() # The thread resource usage when the logcontext became active. None # if the context is not currently active. self.usage_start: Optional[resource.struct_rusage] = None self.main_thread = get_thread_id() self.request = None self.tag = "" self.scope: Optional["_LogContextScope"] = None # keep track of whether we have hit the __exit__ block for this context # (suggesting that the the thing that created the context thinks it should # be finished, and that re-activating it would suggest an error). self.finished = False self.parent_context = parent_context if self.parent_context is not None: # we track the current request_id self.request = self.parent_context.request # we also track the current scope: self.scope = self.parent_context.scope if request is not None: # the request param overrides the request from the parent context self.request = request # if we don't have a `name`, but do have a parent context, use its name. if self.parent_context and name is None: name = str(self.parent_context) if name is None: raise ValueError( "LoggingContext must be given either a name or a parent context" ) self.name = name def __str__(self) -> str: return self.name @classmethod def current_context(cls) -> LoggingContextOrSentinel: """Get the current logging context from thread local storage This exists for backwards compatibility. ``current_context()`` should be called directly. Returns: The current logging context """ warnings.warn( "synapse.logging.context.LoggingContext.current_context() is deprecated " "in favor of synapse.logging.context.current_context().", DeprecationWarning, stacklevel=2, ) return current_context() @classmethod def set_current_context( cls, context: LoggingContextOrSentinel ) -> LoggingContextOrSentinel: """Set the current logging context in thread local storage This exists for backwards compatibility. ``set_current_context()`` should be called directly. Args: context: The context to activate. Returns: The context that was previously active """ warnings.warn( "synapse.logging.context.LoggingContext.set_current_context() is deprecated " "in favor of synapse.logging.context.set_current_context().", DeprecationWarning, stacklevel=2, ) return set_current_context(context) def __enter__(self) -> "LoggingContext": """Enters this logging context into thread local storage""" old_context = set_current_context(self) if self.previous_context != old_context: logcontext_error( "Expected previous context %r, found %r" % ( self.previous_context, old_context, ) ) return self def __exit__( self, type: Optional[Type[BaseException]], value: Optional[BaseException], traceback: Optional[TracebackType], ) -> None: """Restore the logging context in thread local storage to the state it was before this context was entered. Returns: None to avoid suppressing any exceptions that were thrown. """ current = set_current_context(self.previous_context) if current is not self: if current is SENTINEL_CONTEXT: logcontext_error("Expected logging context %s was lost" % (self,)) else: logcontext_error( "Expected logging context %s but found %s" % (self, current) ) # the fact that we are here suggests that the caller thinks that everything # is done and dusted for this logcontext, and further activity will not get # recorded against the correct metrics. self.finished = True def start(self, rusage: "Optional[resource.struct_rusage]") -> None: """ Record that this logcontext is currently running. This should not be called directly: use set_current_context Args: rusage: the resources used by the current thread, at the point of switching to this logcontext. May be None if this platform doesn't support getrusuage. """ if get_thread_id() != self.main_thread: logcontext_error("Started logcontext %s on different thread" % (self,)) return if self.finished: logcontext_error("Re-starting finished log context %s" % (self,)) # If we haven't already started record the thread resource usage so # far if self.usage_start: logcontext_error("Re-starting already-active log context %s" % (self,)) else: self.usage_start = rusage def stop(self, rusage: "Optional[resource.struct_rusage]") -> None: """ Record that this logcontext is no longer running. This should not be called directly: use set_current_context Args: rusage: the resources used by the current thread, at the point of switching away from this logcontext. May be None if this platform doesn't support getrusuage. """ try: if get_thread_id() != self.main_thread: logcontext_error("Stopped logcontext %s on different thread" % (self,)) return if not rusage: return # Record the cpu used since we started if not self.usage_start: logcontext_error( "Called stop on logcontext %s without recording a start rusage" % (self,) ) return utime_delta, stime_delta = self._get_cputime(rusage) self.add_cputime(utime_delta, stime_delta) finally: self.usage_start = None def get_resource_usage(self) -> ContextResourceUsage: """Get resources used by this logcontext so far. Returns: A *copy* of the object tracking resource usage so far """ # we always return a copy, for consistency res = self._resource_usage.copy() # If we are on the correct thread and we're currently running then we # can include resource usage so far. is_main_thread = get_thread_id() == self.main_thread if self.usage_start and is_main_thread: rusage = get_thread_resource_usage() assert rusage is not None utime_delta, stime_delta = self._get_cputime(rusage) res.ru_utime += utime_delta res.ru_stime += stime_delta return res def _get_cputime(self, current: "resource.struct_rusage") -> Tuple[float, float]: """Get the cpu usage time between start() and the given rusage Args: rusage: the current resource usage Returns: Tuple[float, float]: seconds in user mode, seconds in system mode """ assert self.usage_start is not None utime_delta = current.ru_utime - self.usage_start.ru_utime stime_delta = current.ru_stime - self.usage_start.ru_stime # sanity check if utime_delta < 0: logger.error( "utime went backwards! %f < %f", current.ru_utime, self.usage_start.ru_utime, ) utime_delta = 0 if stime_delta < 0: logger.error( "stime went backwards! %f < %f", current.ru_stime, self.usage_start.ru_stime, ) stime_delta = 0 return utime_delta, stime_delta def add_cputime(self, utime_delta: float, stime_delta: float) -> None: """Update the CPU time usage of this context (and any parents, recursively). Args: utime_delta: additional user time, in seconds, spent in this context. stime_delta: additional system time, in seconds, spent in this context. """ self._resource_usage.ru_utime += utime_delta self._resource_usage.ru_stime += stime_delta if self.parent_context: self.parent_context.add_cputime(utime_delta, stime_delta) def add_database_transaction(self, duration_sec: float) -> None: """Record the use of a database transaction and the length of time it took. Args: duration_sec: The number of seconds the database transaction took. """ if duration_sec < 0: raise ValueError("DB txn time can only be non-negative") self._resource_usage.db_txn_count += 1 self._resource_usage.db_txn_duration_sec += duration_sec if self.parent_context: self.parent_context.add_database_transaction(duration_sec) def add_database_scheduled(self, sched_sec: float) -> None: """Record a use of the database pool Args: sched_sec: number of seconds it took us to get a connection """ if sched_sec < 0: raise ValueError("DB scheduling time can only be non-negative") self._resource_usage.db_sched_duration_sec += sched_sec if self.parent_context: self.parent_context.add_database_scheduled(sched_sec) def record_event_fetch(self, event_count: int) -> None: """Record a number of events being fetched from the db Args: event_count: number of events being fetched """ self._resource_usage.evt_db_fetch_count += event_count if self.parent_context: self.parent_context.record_event_fetch(event_count) class LoggingContextFilter(logging.Filter): """Logging filter that adds values from the current logging context to each record. """ def __init__(self, request: str = ""): self._default_request = request def filter(self, record: logging.LogRecord) -> Literal[True]: """Add each fields from the logging contexts to the record. Returns: True to include the record in the log output. """ context = current_context() record.request = self._default_request # context should never be None, but if it somehow ends up being, then # we end up in a death spiral of infinite loops, so let's check, for # robustness' sake. if context is not None: # Logging is interested in the request ID. Note that for backwards # compatibility this is stored as the "request" on the record. record.request = str(context) # Add some data from the HTTP request. request = context.request if request is None: return True record.ip_address = request.ip_address record.site_tag = request.site_tag record.requester = request.requester record.authenticated_entity = request.authenticated_entity record.method = request.method record.url = request.url record.protocol = request.protocol record.user_agent = request.user_agent return True class PreserveLoggingContext: """Context manager which replaces the logging context The previous logging context is restored on exit.""" __slots__ = ["_old_context", "_new_context"] def __init__( self, new_context: LoggingContextOrSentinel = SENTINEL_CONTEXT ) -> None: self._new_context = new_context def __enter__(self) -> None: self._old_context = set_current_context(self._new_context) def __exit__( self, type: Optional[Type[BaseException]], value: Optional[BaseException], traceback: Optional[TracebackType], ) -> None: context = set_current_context(self._old_context) if context != self._new_context: if not context: logcontext_error( "Expected logging context %s was lost" % (self._new_context,) ) else: logcontext_error( "Expected logging context %s but found %s" % ( self._new_context, context, ) ) _thread_local = threading.local() _thread_local.current_context = SENTINEL_CONTEXT def current_context() -> LoggingContextOrSentinel: """Get the current logging context from thread local storage""" return getattr(_thread_local, "current_context", SENTINEL_CONTEXT) def set_current_context(context: LoggingContextOrSentinel) -> LoggingContextOrSentinel: """Set the current logging context in thread local storage Args: context: The context to activate. Returns: The context that was previously active """ # everything blows up if we allow current_context to be set to None, so sanity-check # that now. if context is None: raise TypeError("'context' argument may not be None") current = current_context() if current is not context: rusage = get_thread_resource_usage() current.stop(rusage) _thread_local.current_context = context context.start(rusage) return current def nested_logging_context(suffix: str) -> LoggingContext: """Creates a new logging context as a child of another. The nested logging context will have a 'name' made up of the parent context's name, plus the given suffix. CPU/db usage stats will be added to the parent context's on exit. Normal usage looks like: with nested_logging_context(suffix): # ... do stuff Args: suffix: suffix to add to the parent context's 'name'. Returns: A new logging context. """ curr_context = current_context() if not curr_context: logger.warning( "Starting nested logging context from sentinel context: metrics will be lost" ) parent_context = None else: assert isinstance(curr_context, LoggingContext) parent_context = curr_context prefix = str(curr_context) return LoggingContext( prefix + "-" + suffix, parent_context=parent_context, ) P = ParamSpec("P") R = TypeVar("R") async def _unwrap_awaitable(awaitable: Awaitable[R]) -> R: """Unwraps an arbitrary awaitable by awaiting it.""" return await awaitable @overload def preserve_fn( f: Callable[P, Awaitable[R]], ) -> Callable[P, "defer.Deferred[R]"]: # The `type: ignore[misc]` above suppresses # "Overloaded function signatures 1 and 2 overlap with incompatible return types" ... @overload def preserve_fn(f: Callable[P, R]) -> Callable[P, "defer.Deferred[R]"]: ... def preserve_fn( f: Union[ Callable[P, R], Callable[P, Awaitable[R]], ] ) -> Callable[P, "defer.Deferred[R]"]: """Function decorator which wraps the function with run_in_background""" def g(*args: P.args, **kwargs: P.kwargs) -> "defer.Deferred[R]": return run_in_background(f, *args, **kwargs) return g @overload def run_in_background( f: Callable[P, Awaitable[R]], *args: P.args, **kwargs: P.kwargs ) -> "defer.Deferred[R]": # The `type: ignore[misc]` above suppresses # "Overloaded function signatures 1 and 2 overlap with incompatible return types" ... @overload def run_in_background( f: Callable[P, R], *args: P.args, **kwargs: P.kwargs ) -> "defer.Deferred[R]": ... def run_in_background( # type: ignore[misc] # The `type: ignore[misc]` above suppresses # "Overloaded function implementation does not accept all possible arguments of signature 1" # "Overloaded function implementation does not accept all possible arguments of signature 2" # which seems like a bug in mypy. f: Union[ Callable[P, R], Callable[P, Awaitable[R]], ], *args: P.args, **kwargs: P.kwargs, ) -> "defer.Deferred[R]": """Calls a function, ensuring that the current context is restored after return from the function, and that the sentinel context is set once the deferred returned by the function completes. Useful for wrapping functions that return a deferred or coroutine, which you don't yield or await on (for instance because you want to pass it to deferred.gatherResults()). If f returns a Coroutine object, it will be wrapped into a Deferred (which will have the side effect of executing the coroutine). Note that if you completely discard the result, you should make sure that `f` doesn't raise any deferred exceptions, otherwise a scary-looking CRITICAL error about an unhandled error will be logged without much indication about where it came from. """ current = current_context() try: res = f(*args, **kwargs) except Exception: # the assumption here is that the caller doesn't want to be disturbed # by synchronous exceptions, so let's turn them into Failures. return defer.fail() # `res` may be a coroutine, `Deferred`, some other kind of awaitable, or a plain # value. Convert it to a `Deferred`. d: "defer.Deferred[R]" if isinstance(res, typing.Coroutine): # Wrap the coroutine in a `Deferred`. d = defer.ensureDeferred(res) elif isinstance(res, defer.Deferred): d = res elif isinstance(res, Awaitable): # `res` is probably some kind of completed awaitable, such as a `DoneAwaitable` # or `Future` from `make_awaitable`. d = defer.ensureDeferred(_unwrap_awaitable(res)) else: # `res` is a plain value. Wrap it in a `Deferred`. d = defer.succeed(res) if d.called and not d.paused: # The function should have maintained the logcontext, so we can # optimise out the messing about return d # The function may have reset the context before returning, so # we need to restore it now. ctx = set_current_context(current) # The original context will be restored when the deferred # completes, but there is nothing waiting for it, so it will # get leaked into the reactor or some other function which # wasn't expecting it. We therefore need to reset the context # here. # # (If this feels asymmetric, consider it this way: we are # effectively forking a new thread of execution. We are # probably currently within a ``with LoggingContext()`` block, # which is supposed to have a single entry and exit point. But # by spawning off another deferred, we are effectively # adding a new exit point.) d.addBoth(_set_context_cb, ctx) return d T = TypeVar("T") def make_deferred_yieldable(deferred: "defer.Deferred[T]") -> "defer.Deferred[T]": """Given a deferred, make it follow the Synapse logcontext rules: If the deferred has completed, essentially does nothing (just returns another completed deferred with the result/failure). If the deferred has not yet completed, resets the logcontext before returning a deferred. Then, when the deferred completes, restores the current logcontext before running callbacks/errbacks. (This is more-or-less the opposite operation to run_in_background.) """ if deferred.called and not deferred.paused: # it looks like this deferred is ready to run any callbacks we give it # immediately. We may as well optimise out the logcontext faffery. return deferred # ok, we can't be sure that a yield won't block, so let's reset the # logcontext, and add a callback to the deferred to restore it. prev_context = set_current_context(SENTINEL_CONTEXT) deferred.addBoth(_set_context_cb, prev_context) return deferred ResultT = TypeVar("ResultT") def _set_context_cb(result: ResultT, context: LoggingContextOrSentinel) -> ResultT: """A callback function which just sets the logging context""" set_current_context(context) return result def defer_to_thread( reactor: "ISynapseReactor", f: Callable[P, R], *args: P.args, **kwargs: P.kwargs ) -> "defer.Deferred[R]": """ Calls the function `f` using a thread from the reactor's default threadpool and returns the result as a Deferred. Creates a new logcontext for `f`, which is created as a child of the current logcontext (so its CPU usage metrics will get attributed to the current logcontext). `f` should preserve the logcontext it is given. The result deferred follows the Synapse logcontext rules: you should `yield` on it. Args: reactor: The reactor in whose main thread the Deferred will be invoked, and whose threadpool we should use for the function. Normally this will be hs.get_reactor(). f: The function to call. args: positional arguments to pass to f. kwargs: keyword arguments to pass to f. Returns: A Deferred which fires a callback with the result of `f`, or an errback if `f` throws an exception. """ return defer_to_threadpool(reactor, reactor.getThreadPool(), f, *args, **kwargs) def defer_to_threadpool( reactor: "ISynapseReactor", threadpool: ThreadPool, f: Callable[P, R], *args: P.args, **kwargs: P.kwargs, ) -> "defer.Deferred[R]": """ A wrapper for twisted.internet.threads.deferToThreadpool, which handles logcontexts correctly. Calls the function `f` using a thread from the given threadpool and returns the result as a Deferred. Creates a new logcontext for `f`, which is created as a child of the current logcontext (so its CPU usage metrics will get attributed to the current logcontext). `f` should preserve the logcontext it is given. The result deferred follows the Synapse logcontext rules: you should `yield` on it. Args: reactor: The reactor in whose main thread the Deferred will be invoked. Normally this will be hs.get_reactor(). threadpool: The threadpool to use for running `f`. Normally this will be hs.get_reactor().getThreadPool(). f: The function to call. args: positional arguments to pass to f. kwargs: keyword arguments to pass to f. Returns: A Deferred which fires a callback with the result of `f`, or an errback if `f` throws an exception. """ curr_context = current_context() if not curr_context: logger.warning( "Calling defer_to_threadpool from sentinel context: metrics will be lost" ) parent_context = None else: assert isinstance(curr_context, LoggingContext) parent_context = curr_context def g() -> R: with LoggingContext(str(curr_context), parent_context=parent_context): return f(*args, **kwargs) return make_deferred_yieldable(threads.deferToThreadPool(reactor, threadpool, g)) synapse-1.100.0/synapse/logging/filter.py000066400000000000000000000022711455622526000203130ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from typing_extensions import Literal class MetadataFilter(logging.Filter): """Logging filter that adds constant values to each record. Args: metadata: Key-value pairs to add to each record. """ def __init__(self, metadata: dict): self._metadata = metadata def filter(self, record: logging.LogRecord) -> Literal[True]: for key, value in self._metadata.items(): setattr(record, key, value) return True synapse-1.100.0/synapse/logging/formatter.py000066400000000000000000000040211455622526000210240ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import traceback from io import StringIO from types import TracebackType from typing import Optional, Tuple, Type class LogFormatter(logging.Formatter): """Log formatter which gives more detail for exceptions This is the same as the standard log formatter, except that when logging exceptions [typically via log.foo("msg", exc_info=1)], it prints the sequence that led up to the point at which the exception was caught. (Normally only stack frames between the point the exception was raised and where it was caught are logged). """ def formatException( self, ei: Tuple[ Optional[Type[BaseException]], Optional[BaseException], Optional[TracebackType], ], ) -> str: sio = StringIO() (typ, val, tb) = ei # log the stack above the exception capture point if possible, but # check that we actually have an f_back attribute to work around # https://twistedmatrix.com/trac/ticket/9305 if tb and hasattr(tb.tb_frame, "f_back"): sio.write("Capture point (most recent call last):\n") traceback.print_stack(tb.tb_frame.f_back, None, sio) traceback.print_exception(typ, val, tb, None, sio) s = sio.getvalue() sio.close() if s[-1:] == "\n": s = s[:-1] return s synapse-1.100.0/synapse/logging/handlers.py000066400000000000000000000053231455622526000206270ustar00rootroot00000000000000import logging import time from logging import Handler, LogRecord from logging.handlers import MemoryHandler from threading import Thread from typing import Optional, cast from twisted.internet.interfaces import IReactorCore class PeriodicallyFlushingMemoryHandler(MemoryHandler): """ This is a subclass of MemoryHandler that additionally spawns a background thread to periodically flush the buffer. This prevents messages from being buffered for too long. Additionally, all messages will be immediately flushed if the reactor has not yet been started. """ def __init__( self, capacity: int, flushLevel: int = logging.ERROR, target: Optional[Handler] = None, flushOnClose: bool = True, period: float = 5.0, reactor: Optional[IReactorCore] = None, ) -> None: """ period: the period between automatic flushes reactor: if specified, a custom reactor to use. If not specifies, defaults to the globally-installed reactor. Log entries will be flushed immediately until this reactor has started. """ super().__init__(capacity, flushLevel, target, flushOnClose) self._flush_period: float = period self._active: bool = True self._reactor_started = False self._flushing_thread: Thread = Thread( name="PeriodicallyFlushingMemoryHandler flushing thread", target=self._flush_periodically, daemon=True, ) self._flushing_thread.start() def on_reactor_running() -> None: self._reactor_started = True reactor_to_use: IReactorCore if reactor is None: from twisted.internet import reactor as global_reactor reactor_to_use = cast(IReactorCore, global_reactor) else: reactor_to_use = reactor # call our hook when the reactor start up reactor_to_use.callWhenRunning(on_reactor_running) def shouldFlush(self, record: LogRecord) -> bool: """ Before reactor start-up, log everything immediately. Otherwise, fall back to original behaviour of waiting for the buffer to fill. """ if self._reactor_started: return super().shouldFlush(record) else: return True def _flush_periodically(self) -> None: """ Whilst this handler is active, flush the handler periodically. """ while self._active: # flush is thread-safe; it acquires and releases the lock internally self.flush() time.sleep(self._flush_period) def close(self) -> None: self._active = False super().close() synapse-1.100.0/synapse/logging/opentracing.py000066400000000000000000001104071455622526000213400ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # # NOTE # This is a small wrapper around opentracing because opentracing is not currently # packaged downstream (specifically debian). Since opentracing instrumentation is # fairly invasive it was awkward to make it optional. As a result we opted to encapsulate # all opentracing state in these methods which effectively noop if opentracing is # not present. We should strongly consider encouraging the downstream distributers # to package opentracing and making opentracing a full dependency. In order to facilitate # this move the methods have work very similarly to opentracing's and it should only # be a matter of few regexes to move over to opentracing's access patterns proper. """ ============================ Using OpenTracing in Synapse ============================ Python-specific tracing concepts are at https://opentracing.io/guides/python/. Note that Synapse wraps OpenTracing in a small module (this one) in order to make the OpenTracing dependency optional. That means that the access patterns are different to those demonstrated in the OpenTracing guides. However, it is still useful to know, especially if OpenTracing is included as a full dependency in the future or if you are modifying this module. OpenTracing is encapsulated so that no span objects from OpenTracing are exposed in Synapse's code. This allows OpenTracing to be easily disabled in Synapse and thereby have OpenTracing as an optional dependency. This does however limit the number of modifiable spans at any point in the code to one. From here out references to `opentracing` in the code snippets refer to the Synapses module. Most methods provided in the module have a direct correlation to those provided by opentracing. Refer to docs there for a more in-depth documentation on some of the args and methods. Tracing ------- In Synapse it is not possible to start a non-active span. Spans can be started using the ``start_active_span`` method. This returns a scope (see OpenTracing docs) which is a context manager that needs to be entered and exited. This is usually done by using ``with``. .. code-block:: python from synapse.logging.opentracing import start_active_span with start_active_span("operation name"): # Do something we want to tracer Forgetting to enter or exit a scope will result in some mysterious and grievous log context errors. At anytime where there is an active span ``opentracing.set_tag`` can be used to set a tag on the current active span. Tracing functions ----------------- Functions can be easily traced using decorators. The name of the function becomes the operation name for the span. .. code-block:: python from synapse.logging.opentracing import trace # Start a span using 'interesting_function' as the operation name @trace def interesting_function(*args, **kwargs): # Does all kinds of cool and expected things return something_usual_and_useful Operation names can be explicitly set for a function by using ``trace_with_opname``: .. code-block:: python from synapse.logging.opentracing import trace_with_opname @trace_with_opname("a_better_operation_name") def interesting_badly_named_function(*args, **kwargs): # Does all kinds of cool and expected things return something_usual_and_useful Setting Tags ------------ To set a tag on the active span do .. code-block:: python from synapse.logging.opentracing import set_tag set_tag(tag_name, tag_value) There's a convenient decorator to tag all the args of the method. It uses inspection in order to use the formal parameter names prefixed with 'ARG_' as tag names. It uses kwarg names as tag names without the prefix. .. code-block:: python from synapse.logging.opentracing import tag_args @tag_args def set_fates(clotho, lachesis, atropos, father="Zues", mother="Themis"): pass set_fates("the story", "the end", "the act") # This will have the following tags # - ARG_clotho: "the story" # - ARG_lachesis: "the end" # - ARG_atropos: "the act" # - father: "Zues" # - mother: "Themis" Contexts and carriers --------------------- There are a selection of wrappers for injecting and extracting contexts from carriers provided. Unfortunately OpenTracing's three context injection techniques are not adequate for our inject of OpenTracing span-contexts into Twisted's http headers, EDU contents and our database tables. Also note that the binary encoding format mandated by OpenTracing is not actually implemented by jaeger_client v4.0.0 - it will silently noop. Please refer to the end of ``logging/opentracing.py`` for the available injection and extraction methods. Homeserver whitelisting ----------------------- Most of the whitelist checks are encapsulated in the modules's injection and extraction method but be aware that using custom carriers or crossing unchartered waters will require the enforcement of the whitelist. ``logging/opentracing.py`` has a ``whitelisted_homeserver`` method which takes in a destination and compares it to the whitelist. Most injection methods take a 'destination' arg. The context will only be injected if the destination matches the whitelist or the destination is None. ======= Gotchas ======= - Checking whitelists on span propagation - Inserting pii - Forgetting to enter or exit a scope - Span source: make sure that the span you expect to be active across a function call really will be that one. Does the current function have more than one caller? Will all of those calling functions have be in a context with an active span? """ import contextlib import enum import inspect import logging import re from functools import wraps from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, Collection, ContextManager, Dict, Generator, Iterable, List, Optional, Pattern, Type, TypeVar, Union, cast, overload, ) import attr from typing_extensions import Concatenate, ParamSpec from twisted.internet import defer from twisted.web.http import Request from twisted.web.http_headers import Headers from synapse.config import ConfigError from synapse.util import json_decoder, json_encoder if TYPE_CHECKING: from synapse.http.site import SynapseRequest from synapse.server import HomeServer # Helper class # Matches the number suffix in an instance name like "matrix.org client_reader-8" STRIP_INSTANCE_NUMBER_SUFFIX_REGEX = re.compile(r"[_-]?\d+$") class _DummyTagNames: """wrapper of opentracings tags. We need to have them if we want to reference them without opentracing around. Clearly they should never actually show up in a trace. `set_tags` overwrites these with the correct ones.""" INVALID_TAG = "invalid-tag" COMPONENT = INVALID_TAG DATABASE_INSTANCE = INVALID_TAG DATABASE_STATEMENT = INVALID_TAG DATABASE_TYPE = INVALID_TAG DATABASE_USER = INVALID_TAG ERROR = INVALID_TAG HTTP_METHOD = INVALID_TAG HTTP_STATUS_CODE = INVALID_TAG HTTP_URL = INVALID_TAG MESSAGE_BUS_DESTINATION = INVALID_TAG PEER_ADDRESS = INVALID_TAG PEER_HOSTNAME = INVALID_TAG PEER_HOST_IPV4 = INVALID_TAG PEER_HOST_IPV6 = INVALID_TAG PEER_PORT = INVALID_TAG PEER_SERVICE = INVALID_TAG SAMPLING_PRIORITY = INVALID_TAG SERVICE = INVALID_TAG SPAN_KIND = INVALID_TAG SPAN_KIND_CONSUMER = INVALID_TAG SPAN_KIND_PRODUCER = INVALID_TAG SPAN_KIND_RPC_CLIENT = INVALID_TAG SPAN_KIND_RPC_SERVER = INVALID_TAG try: import opentracing import opentracing.tags tags = opentracing.tags except ImportError: opentracing = None # type: ignore[assignment] tags = _DummyTagNames # type: ignore[assignment] try: from jaeger_client import Config as JaegerConfig from synapse.logging.scopecontextmanager import LogContextScopeManager except ImportError: JaegerConfig = None # type: ignore LogContextScopeManager = None # type: ignore try: from rust_python_jaeger_reporter import Reporter # jaeger-client 4.7.0 requires that reporters inherit from BaseReporter, which # didn't exist before that version. try: from jaeger_client.reporter import BaseReporter except ImportError: class BaseReporter: # type: ignore[no-redef] pass @attr.s(slots=True, frozen=True, auto_attribs=True) class _WrappedRustReporter(BaseReporter): """Wrap the reporter to ensure `report_span` never throws.""" _reporter: Reporter = attr.Factory(Reporter) def set_process(self, *args: Any, **kwargs: Any) -> None: return self._reporter.set_process(*args, **kwargs) def report_span(self, span: "opentracing.Span") -> None: try: return self._reporter.report_span(span) except Exception: logger.exception("Failed to report span") RustReporter: Optional[Type[_WrappedRustReporter]] = _WrappedRustReporter except ImportError: RustReporter = None logger = logging.getLogger(__name__) class SynapseTags: # The message ID of any to_device EDU processed TO_DEVICE_EDU_ID = "to_device.edu_id" # Details about to-device messages TO_DEVICE_TYPE = "to_device.type" TO_DEVICE_SENDER = "to_device.sender" TO_DEVICE_RECIPIENT = "to_device.recipient" TO_DEVICE_RECIPIENT_DEVICE = "to_device.recipient_device" TO_DEVICE_MSGID = "to_device.msgid" # client-generated ID # Whether the sync response has new data to be returned to the client. SYNC_RESULT = "sync.new_data" INSTANCE_NAME = "instance_name" # incoming HTTP request ID (as written in the logs) REQUEST_ID = "request_id" # HTTP request tag (used to distinguish full vs incremental syncs, etc) REQUEST_TAG = "request_tag" # Text description of a database transaction DB_TXN_DESC = "db.txn_desc" # Uniqueish ID of a database transaction DB_TXN_ID = "db.txn_id" # The name of the external cache CACHE_NAME = "cache.name" # Boolean. Present on /v2/send_join requests, omitted from all others. # True iff partial state was requested and we provided (or intended to provide) # partial state in the response. SEND_JOIN_RESPONSE_IS_PARTIAL_STATE = "send_join.partial_state_response" # Used to tag function arguments # # Tag a named arg. The name of the argument should be appended to this prefix. FUNC_ARG_PREFIX = "ARG." # Tag extra variadic number of positional arguments (`def foo(first, second, *extras)`) FUNC_ARGS = "args" # Tag keyword args FUNC_KWARGS = "kwargs" # Some intermediate result that's interesting to the function. The label for # the result should be appended to this prefix. RESULT_PREFIX = "RESULT." class SynapseBaggage: FORCE_TRACING = "synapse-force-tracing" # Block everything by default # A regex which matches the server_names to expose traces for. # None means 'block everything'. _homeserver_whitelist: Optional[Pattern[str]] = None # Util methods class _Sentinel(enum.Enum): # defining a sentinel in this way allows mypy to correctly handle the # type of a dictionary lookup. sentinel = object() P = ParamSpec("P") R = TypeVar("R") T = TypeVar("T") def only_if_tracing(func: Callable[P, R]) -> Callable[P, Optional[R]]: """Executes the function only if we're tracing. Otherwise returns None.""" @wraps(func) def _only_if_tracing_inner(*args: P.args, **kwargs: P.kwargs) -> Optional[R]: if opentracing: return func(*args, **kwargs) else: return None return _only_if_tracing_inner @overload def ensure_active_span( message: str, ) -> Callable[[Callable[P, R]], Callable[P, Optional[R]]]: ... @overload def ensure_active_span( message: str, ret: T ) -> Callable[[Callable[P, R]], Callable[P, Union[T, R]]]: ... def ensure_active_span( message: str, ret: Optional[T] = None ) -> Callable[[Callable[P, R]], Callable[P, Union[Optional[T], R]]]: """Executes the operation only if opentracing is enabled and there is an active span. If there is no active span it logs message at the error level. Args: message: Message which fills in "There was no active span when trying to %s" in the error log if there is no active span and opentracing is enabled. ret: return value if opentracing is None or there is no active span. Returns: The result of the func, falling back to ret if opentracing is disabled or there was no active span. """ def ensure_active_span_inner_1( func: Callable[P, R] ) -> Callable[P, Union[Optional[T], R]]: @wraps(func) def ensure_active_span_inner_2( *args: P.args, **kwargs: P.kwargs ) -> Union[Optional[T], R]: if not opentracing: return ret if not opentracing.tracer.active_span: logger.error( "There was no active span when trying to %s." " Did you forget to start one or did a context slip?", message, stack_info=True, ) return ret return func(*args, **kwargs) return ensure_active_span_inner_2 return ensure_active_span_inner_1 # Setup def init_tracer(hs: "HomeServer") -> None: """Set the whitelists and initialise the JaegerClient tracer""" global opentracing if not hs.config.tracing.opentracer_enabled: # We don't have a tracer opentracing = None # type: ignore[assignment] return if opentracing is None or JaegerConfig is None: raise ConfigError( "The server has been configured to use opentracing but opentracing is not " "installed." ) # Pull out the jaeger config if it was given. Otherwise set it to something sensible. # See https://github.com/jaegertracing/jaeger-client-python/blob/master/jaeger_client/config.py set_homeserver_whitelist(hs.config.tracing.opentracer_whitelist) from jaeger_client.metrics.prometheus import PrometheusMetricsFactory # Instance names are opaque strings but by stripping off the number suffix, # we can get something that looks like a "worker type", e.g. # "client_reader-1" -> "client_reader" so we don't spread the traces across # so many services. instance_name_by_type = re.sub( STRIP_INSTANCE_NUMBER_SUFFIX_REGEX, "", hs.get_instance_name() ) jaeger_config = hs.config.tracing.jaeger_config tags = jaeger_config.setdefault("tags", {}) # tag the Synapse instance name so that it's an easy jumping # off point into the logs. Can also be used to filter for an # instance that is under load. tags[SynapseTags.INSTANCE_NAME] = hs.get_instance_name() config = JaegerConfig( config=jaeger_config, service_name=f"{hs.config.server.server_name} {instance_name_by_type}", scope_manager=LogContextScopeManager(), metrics_factory=PrometheusMetricsFactory(), ) # If we have the rust jaeger reporter available let's use that. if RustReporter: logger.info("Using rust_python_jaeger_reporter library") assert config.sampler is not None tracer = config.create_tracer(RustReporter(), config.sampler) opentracing.set_global_tracer(tracer) else: config.initialize_tracer() # Whitelisting @only_if_tracing def set_homeserver_whitelist(homeserver_whitelist: Iterable[str]) -> None: """Sets the homeserver whitelist Args: homeserver_whitelist: regexes specifying whitelisted homeservers """ global _homeserver_whitelist if homeserver_whitelist: # Makes a single regex which accepts all passed in regexes in the list _homeserver_whitelist = re.compile( "({})".format(")|(".join(homeserver_whitelist)) ) @only_if_tracing def whitelisted_homeserver(destination: str) -> bool: """Checks if a destination matches the whitelist Args: destination """ if _homeserver_whitelist: return _homeserver_whitelist.match(destination) is not None return False # Start spans and scopes # Could use kwargs but I want these to be explicit def start_active_span( operation_name: str, child_of: Optional[Union["opentracing.Span", "opentracing.SpanContext"]] = None, references: Optional[List["opentracing.Reference"]] = None, tags: Optional[Dict[str, str]] = None, start_time: Optional[float] = None, ignore_active_span: bool = False, finish_on_close: bool = True, *, tracer: Optional["opentracing.Tracer"] = None, ) -> "opentracing.Scope": """Starts an active opentracing span. Records the start time for the span, and sets it as the "active span" in the scope manager. Args: See opentracing.tracer Returns: scope (Scope) or contextlib.nullcontext """ if opentracing is None: return contextlib.nullcontext() # type: ignore[unreachable] if tracer is None: # use the global tracer by default tracer = opentracing.tracer return tracer.start_active_span( operation_name, child_of=child_of, references=references, tags=tags, start_time=start_time, ignore_active_span=ignore_active_span, finish_on_close=finish_on_close, ) def start_active_span_follows_from( operation_name: str, contexts: Collection, child_of: Optional[Union["opentracing.Span", "opentracing.SpanContext"]] = None, start_time: Optional[float] = None, *, inherit_force_tracing: bool = False, tracer: Optional["opentracing.Tracer"] = None, ) -> "opentracing.Scope": """Starts an active opentracing span, with additional references to previous spans Args: operation_name: name of the operation represented by the new span contexts: the previous spans to inherit from child_of: optionally override the parent span. If unset, the currently active span will be the parent. (If there is no currently active span, the first span in `contexts` will be the parent.) start_time: optional override for the start time of the created span. Seconds since the epoch. inherit_force_tracing: if set, and any of the previous contexts have had tracing forced, the new span will also have tracing forced. tracer: override the opentracing tracer. By default the global tracer is used. """ if opentracing is None: return contextlib.nullcontext() # type: ignore[unreachable] references = [opentracing.follows_from(context) for context in contexts] scope = start_active_span( operation_name, child_of=child_of, references=references, start_time=start_time, tracer=tracer, ) if inherit_force_tracing and any( is_context_forced_tracing(ctx) for ctx in contexts ): force_tracing(scope.span) return scope def start_active_span_from_edu( edu_content: Dict[str, Any], operation_name: str, references: Optional[List["opentracing.Reference"]] = None, tags: Optional[Dict[str, str]] = None, start_time: Optional[float] = None, ignore_active_span: bool = False, finish_on_close: bool = True, ) -> "opentracing.Scope": """ Extracts a span context from an edu and uses it to start a new active span Args: edu_content: an edu_content with a `context` field whose value is canonical json for a dict which contains opentracing information. For the other args see opentracing.tracer """ references = references or [] if opentracing is None: return contextlib.nullcontext() # type: ignore[unreachable] carrier = json_decoder.decode(edu_content.get("context", "{}")).get( "opentracing", {} ) context = opentracing.tracer.extract(opentracing.Format.TEXT_MAP, carrier) _references = [ opentracing.child_of(span_context_from_string(x)) for x in carrier.get("references", []) ] # For some reason jaeger decided not to support the visualization of multiple parent # spans or explicitly show references. I include the span context as a tag here as # an aid to people debugging but it's really not an ideal solution. references += _references scope = opentracing.tracer.start_active_span( operation_name, child_of=context, references=references, tags=tags, start_time=start_time, ignore_active_span=ignore_active_span, finish_on_close=finish_on_close, ) scope.span.set_tag("references", carrier.get("references", [])) return scope # Opentracing setters for tags, logs, etc @only_if_tracing def active_span() -> Optional["opentracing.Span"]: """Get the currently active span, if any""" return opentracing.tracer.active_span @ensure_active_span("set a tag") def set_tag(key: str, value: Union[str, bool, int, float]) -> None: """Sets a tag on the active span""" assert opentracing.tracer.active_span is not None opentracing.tracer.active_span.set_tag(key, value) @ensure_active_span("log") def log_kv(key_values: Dict[str, Any], timestamp: Optional[float] = None) -> None: """Log to the active span""" assert opentracing.tracer.active_span is not None opentracing.tracer.active_span.log_kv(key_values, timestamp) @ensure_active_span("set the traces operation name") def set_operation_name(operation_name: str) -> None: """Sets the operation name of the active span""" assert opentracing.tracer.active_span is not None opentracing.tracer.active_span.set_operation_name(operation_name) @only_if_tracing def force_tracing( span: Union["opentracing.Span", _Sentinel] = _Sentinel.sentinel ) -> None: """Force sampling for the active/given span and its children. Args: span: span to force tracing for. By default, the active span. """ if isinstance(span, _Sentinel): span_to_trace = opentracing.tracer.active_span else: span_to_trace = span if span_to_trace is None: logger.error("No active span in force_tracing") return span_to_trace.set_tag(opentracing.tags.SAMPLING_PRIORITY, 1) # also set a bit of baggage, so that we have a way of figuring out if # it is enabled later span_to_trace.set_baggage_item(SynapseBaggage.FORCE_TRACING, "1") def is_context_forced_tracing( span_context: Optional["opentracing.SpanContext"], ) -> bool: """Check if sampling has been force for the given span context.""" if span_context is None: return False return span_context.baggage.get(SynapseBaggage.FORCE_TRACING) is not None # Injection and extraction @ensure_active_span("inject the span into a header dict") def inject_header_dict( headers: Dict[bytes, List[bytes]], destination: Optional[str] = None, check_destination: bool = True, ) -> None: """ Injects a span context into a dict of HTTP headers Args: headers: the dict to inject headers into destination: address of entity receiving the span context. Must be given unless check_destination is False. The context will only be injected if the destination matches the opentracing whitelist check_destination: If false, destination will be ignored and the context will always be injected. Note: The headers set by the tracer are custom to the tracer implementation which should be unique enough that they don't interfere with any headers set by synapse or twisted. If we're still using jaeger these headers would be those here: https://github.com/jaegertracing/jaeger-client-python/blob/master/jaeger_client/constants.py """ if check_destination: if destination is None: raise ValueError( "destination must be given unless check_destination is False" ) if not whitelisted_homeserver(destination): return span = opentracing.tracer.active_span carrier: Dict[str, str] = {} assert span is not None opentracing.tracer.inject(span.context, opentracing.Format.HTTP_HEADERS, carrier) for key, value in carrier.items(): headers[key.encode()] = [value.encode()] def inject_response_headers(response_headers: Headers) -> None: """Inject the current trace id into the HTTP response headers""" if not opentracing: return span = opentracing.tracer.active_span if not span: return # This is a bit implementation-specific. # # Jaeger's Spans have a trace_id property; other implementations (including the # dummy opentracing.span.Span which we use if init_tracer is not called) do not # expose it trace_id = getattr(span, "trace_id", None) if trace_id is not None: response_headers.addRawHeader("Synapse-Trace-Id", f"{trace_id:x}") @ensure_active_span( "get the active span context as a dict", ret=cast(Dict[str, str], {}) ) def get_active_span_text_map(destination: Optional[str] = None) -> Dict[str, str]: """ Gets a span context as a dict. This can be used instead of manually injecting a span into an empty carrier. Args: destination: the name of the remote server. Returns: the active span's context if opentracing is enabled, otherwise empty. """ if destination and not whitelisted_homeserver(destination): return {} carrier: Dict[str, str] = {} assert opentracing.tracer.active_span is not None opentracing.tracer.inject( opentracing.tracer.active_span.context, opentracing.Format.TEXT_MAP, carrier ) return carrier @ensure_active_span("get the span context as a string.", ret={}) def active_span_context_as_string() -> str: """ Returns: The active span context encoded as a string. """ carrier: Dict[str, str] = {} if opentracing: assert opentracing.tracer.active_span is not None opentracing.tracer.inject( opentracing.tracer.active_span.context, opentracing.Format.TEXT_MAP, carrier ) return json_encoder.encode(carrier) def span_context_from_request(request: Request) -> "Optional[opentracing.SpanContext]": """Extract an opentracing context from the headers on an HTTP request This is useful when we have received an HTTP request from another part of our system, and want to link our spans to those of the remote system. """ if not opentracing: return None header_dict = { k.decode(): v[0].decode() for k, v in request.requestHeaders.getAllRawHeaders() } return opentracing.tracer.extract(opentracing.Format.HTTP_HEADERS, header_dict) @only_if_tracing def span_context_from_string(carrier: str) -> Optional["opentracing.SpanContext"]: """ Returns: The active span context decoded from a string. """ payload: Dict[str, str] = json_decoder.decode(carrier) return opentracing.tracer.extract(opentracing.Format.TEXT_MAP, payload) @only_if_tracing def extract_text_map(carrier: Dict[str, str]) -> Optional["opentracing.SpanContext"]: """ Wrapper method for opentracing's tracer.extract for TEXT_MAP. Args: carrier: a dict possibly containing a span context. Returns: The active span context extracted from carrier. """ return opentracing.tracer.extract(opentracing.Format.TEXT_MAP, carrier) # Tracing decorators def _custom_sync_async_decorator( func: Callable[P, R], wrapping_logic: Callable[Concatenate[Callable[P, R], P], ContextManager[None]], ) -> Callable[P, R]: """ Decorates a function that is sync or async (coroutines), or that returns a Twisted `Deferred`. The custom business logic of the decorator goes in `wrapping_logic`. Example usage: ```py # Decorator to time the function and log it out def duration(func: Callable[P, R]) -> Callable[P, R]: @contextlib.contextmanager def _wrapping_logic(func: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> Generator[None, None, None]: start_ts = time.time() try: yield finally: end_ts = time.time() duration = end_ts - start_ts logger.info("%s took %s seconds", func.__name__, duration) return _custom_sync_async_decorator(func, _wrapping_logic) ``` Args: func: The function to be decorated wrapping_logic: The business logic of your custom decorator. This should be a ContextManager so you are able to run your logic before/after the function as desired. """ if inspect.iscoroutinefunction(func): # For this branch, we handle async functions like `async def func() -> RInner`. # In this branch, R = Awaitable[RInner], for some other type RInner @wraps(func) async def _wrapper( *args: P.args, **kwargs: P.kwargs ) -> Any: # Return type is RInner # type-ignore: func() returns R, but mypy doesn't know that R is # Awaitable here. with wrapping_logic(func, *args, **kwargs): # type: ignore[arg-type] return await func(*args, **kwargs) else: # The other case here handles sync functions including those decorated with # `@defer.inlineCallbacks` or that return a `Deferred` or other `Awaitable`. @wraps(func) def _wrapper(*args: P.args, **kwargs: P.kwargs) -> Any: scope = wrapping_logic(func, *args, **kwargs) scope.__enter__() try: result = func(*args, **kwargs) if isinstance(result, defer.Deferred): def call_back(result: R) -> R: scope.__exit__(None, None, None) return result def err_back(result: R) -> R: # TODO: Pass the error details into `scope.__exit__(...)` for # consistency with the other paths. scope.__exit__(None, None, None) return result result.addCallbacks(call_back, err_back) elif inspect.isawaitable(result): async def wrap_awaitable() -> Any: try: assert isinstance(result, Awaitable) awaited_result = await result scope.__exit__(None, None, None) return awaited_result except Exception as e: scope.__exit__(type(e), None, e.__traceback__) raise # The original method returned an awaitable, eg. a coroutine, so we # create another awaitable wrapping it that calls # `scope.__exit__(...)`. return wrap_awaitable() else: # Just a simple sync function so we can just exit the scope and # return the result without any fuss. scope.__exit__(None, None, None) return result except Exception as e: scope.__exit__(type(e), None, e.__traceback__) raise return _wrapper # type: ignore[return-value] def trace_with_opname( opname: str, *, tracer: Optional["opentracing.Tracer"] = None, ) -> Callable[[Callable[P, R]], Callable[P, R]]: """ Decorator to trace a function with a custom opname. See the module's doc string for usage examples. """ @contextlib.contextmanager def _wrapping_logic( func: Callable[P, R], *args: P.args, **kwargs: P.kwargs ) -> Generator[None, None, None]: with start_active_span(opname, tracer=tracer): yield def _decorator(func: Callable[P, R]) -> Callable[P, R]: if not opentracing: return func return _custom_sync_async_decorator(func, _wrapping_logic) return _decorator def trace(func: Callable[P, R]) -> Callable[P, R]: """ Decorator to trace a function. Sets the operation name to that of the function's name. See the module's doc string for usage examples. """ return trace_with_opname(func.__name__)(func) def tag_args(func: Callable[P, R]) -> Callable[P, R]: """ Decorator to tag all of the args to the active span. Args: func: `func` is assumed to be a method taking a `self` parameter, or a `classmethod` taking a `cls` parameter. In either case, a tag is not created for this parameter. """ if not opentracing: return func # getfullargspec is somewhat expensive, so ensure it is only called a single # time (the function signature shouldn't change anyway). argspec = inspect.getfullargspec(func) @contextlib.contextmanager def _wrapping_logic( _func: Callable[P, R], *args: P.args, **kwargs: P.kwargs ) -> Generator[None, None, None]: # We use `[1:]` to skip the `self` object reference and `start=1` to # make the index line up with `argspec.args`. # # FIXME: We could update this to handle any type of function by ignoring the # first argument only if it's named `self` or `cls`. This isn't fool-proof # but handles the idiomatic cases. for i, arg in enumerate(args[1:], start=1): set_tag(SynapseTags.FUNC_ARG_PREFIX + argspec.args[i], str(arg)) set_tag(SynapseTags.FUNC_ARGS, str(args[len(argspec.args) :])) set_tag(SynapseTags.FUNC_KWARGS, str(kwargs)) yield return _custom_sync_async_decorator(func, _wrapping_logic) @contextlib.contextmanager def trace_servlet( request: "SynapseRequest", extract_context: bool = False ) -> Generator[None, None, None]: """Returns a context manager which traces a request. It starts a span with some servlet specific tags such as the request metrics name and request information. Args: request extract_context: Whether to attempt to extract the opentracing context from the request the servlet is handling. """ if opentracing is None: yield # type: ignore[unreachable] return request_tags = { SynapseTags.REQUEST_ID: request.get_request_id(), tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER, tags.HTTP_METHOD: request.get_method(), tags.HTTP_URL: request.get_redacted_uri(), tags.PEER_HOST_IPV6: request.get_client_ip_if_available(), } request_name = request.request_metrics.name context = span_context_from_request(request) if extract_context else None # we configure the scope not to finish the span immediately on exit, and instead # pass the span into the SynapseRequest, which will finish it once we've finished # sending the response to the client. scope = start_active_span(request_name, child_of=context, finish_on_close=False) request.set_opentracing_span(scope.span) with scope: inject_response_headers(request.responseHeaders) try: yield finally: # We set the operation name again in case its changed (which happens # with JsonResource). scope.span.set_operation_name(request.request_metrics.name) # Mypy seems to think that start_context.tag below can be Optional[str], but # that doesn't appear to be correct and works in practice. request_tags[ SynapseTags.REQUEST_TAG ] = request.request_metrics.start_context.tag # type: ignore[assignment] # set the tags *after* the servlet completes, in case it decided to # prioritise the span (tags will get dropped on unprioritised spans) for k, v in request_tags.items(): scope.span.set_tag(k, v) synapse-1.100.0/synapse/logging/scopecontextmanager.py000066400000000000000000000134351455622526000231030ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging from types import TracebackType from typing import Optional, Type from opentracing import Scope, ScopeManager, Span import twisted from synapse.logging.context import ( LoggingContext, current_context, nested_logging_context, ) logger = logging.getLogger(__name__) class LogContextScopeManager(ScopeManager): """ The LogContextScopeManager tracks the active scope in opentracing by using the log contexts which are native to synapse. This is so that the basic opentracing api can be used across twisted defereds. It would be nice just to use opentracing's ContextVarsScopeManager, but currently that doesn't work due to https://twistedmatrix.com/trac/ticket/10301. """ def __init__(self) -> None: pass @property def active(self) -> Optional[Scope]: """ Returns the currently active Scope which can be used to access the currently active Scope.span. If there is a non-null Scope, its wrapped Span becomes an implicit parent of any newly-created Span at Tracer.start_active_span() time. Return: The Scope that is active, or None if not available. """ ctx = current_context() return ctx.scope def activate(self, span: Span, finish_on_close: bool) -> Scope: """ Makes a Span active. Args span: the span that should become active. finish_on_close: whether Span should be automatically finished when Scope.close() is called. Returns: Scope to control the end of the active period for *span*. It is a programming error to neglect to call Scope.close() on the returned instance. """ ctx = current_context() if not ctx: logger.error("Tried to activate scope outside of loggingcontext") return Scope(None, span) # type: ignore[arg-type] if ctx.scope is not None: # start a new logging context as a child of the existing one. # Doing so -- rather than updating the existing logcontext -- means that # creating several concurrent spans under the same logcontext works # correctly. ctx = nested_logging_context("") enter_logcontext = True else: # if there is no span currently associated with the current logcontext, we # just store the scope in it. # # This feels a bit dubious, but it does hack around a problem where a # span outlasts its parent logcontext (which would otherwise lead to # "Re-starting finished log context" errors). enter_logcontext = False scope = _LogContextScope(self, span, ctx, enter_logcontext, finish_on_close) ctx.scope = scope if enter_logcontext: ctx.__enter__() return scope class _LogContextScope(Scope): """ A custom opentracing scope, associated with a LogContext * filters out _DefGen_Return exceptions which arise from calling `defer.returnValue` in Twisted code * When the scope is closed, the logcontext's active scope is reset to None. and - if enter_logcontext was set - the logcontext is finished too. """ def __init__( self, manager: LogContextScopeManager, span: Span, logcontext: LoggingContext, enter_logcontext: bool, finish_on_close: bool, ): """ Args: manager: the manager that is responsible for this scope. span: the opentracing span which this scope represents the local lifetime for. logcontext: the log context to which this scope is attached. enter_logcontext: if True the log context will be exited when the scope is finished finish_on_close: if True finish the span when the scope is closed """ super().__init__(manager, span) self.logcontext = logcontext self._finish_on_close = finish_on_close self._enter_logcontext = enter_logcontext def __exit__( self, exc_type: Optional[Type[BaseException]], value: Optional[BaseException], traceback: Optional[TracebackType], ) -> None: if exc_type == twisted.internet.defer._DefGen_Return: # filter out defer.returnValue() calls exc_type = value = traceback = None super().__exit__(exc_type, value, traceback) def __str__(self) -> str: return f"Scope<{self.span}>" def close(self) -> None: active_scope = self.manager.active if active_scope is not self: logger.error( "Closing scope %s which is not the currently-active one %s", self, active_scope, ) if self._finish_on_close: self.span.finish() self.logcontext.scope = None if self._enter_logcontext: self.logcontext.__exit__(None, None, None) synapse-1.100.0/synapse/media/000077500000000000000000000000001455622526000161035ustar00rootroot00000000000000synapse-1.100.0/synapse/media/_base.py000066400000000000000000000362271455622526000175400ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2019-2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import logging import os import urllib from abc import ABC, abstractmethod from types import TracebackType from typing import Awaitable, Dict, Generator, List, Optional, Tuple, Type import attr from twisted.internet.interfaces import IConsumer from twisted.protocols.basic import FileSender from twisted.web.server import Request from synapse.api.errors import Codes, cs_error from synapse.http.server import finish_request, respond_with_json from synapse.http.site import SynapseRequest from synapse.logging.context import make_deferred_yieldable from synapse.util.stringutils import is_ascii logger = logging.getLogger(__name__) # list all text content types that will have the charset default to UTF-8 when # none is given TEXT_CONTENT_TYPES = [ "text/css", "text/csv", "text/html", "text/calendar", "text/plain", "text/javascript", "application/json", "application/ld+json", "application/rtf", "image/svg+xml", "text/xml", ] # A list of all content types that are "safe" to be rendered inline in a browser. INLINE_CONTENT_TYPES = [ "text/css", "text/plain", "text/csv", "application/json", "application/ld+json", # We allow some media files deemed as safe, which comes from the matrix-react-sdk. # https://github.com/matrix-org/matrix-react-sdk/blob/a70fcfd0bcf7f8c85986da18001ea11597989a7c/src/utils/blobs.ts#L51 # SVGs are *intentionally* omitted. "image/jpeg", "image/gif", "image/png", "image/apng", "image/webp", "image/avif", "video/mp4", "video/webm", "video/ogg", "video/quicktime", "audio/mp4", "audio/webm", "audio/aac", "audio/mpeg", "audio/ogg", "audio/wave", "audio/wav", "audio/x-wav", "audio/x-pn-wav", "audio/flac", "audio/x-flac", ] # Default timeout_ms for download and thumbnail requests DEFAULT_MAX_TIMEOUT_MS = 20_000 # Maximum allowed timeout_ms for download and thumbnail requests MAXIMUM_ALLOWED_MAX_TIMEOUT_MS = 60_000 def respond_404(request: SynapseRequest) -> None: assert request.path is not None respond_with_json( request, 404, cs_error("Not found '%s'" % (request.path.decode(),), code=Codes.NOT_FOUND), send_cors=True, ) async def respond_with_file( request: SynapseRequest, media_type: str, file_path: str, file_size: Optional[int] = None, upload_name: Optional[str] = None, ) -> None: logger.debug("Responding with %r", file_path) if os.path.isfile(file_path): if file_size is None: stat = os.stat(file_path) file_size = stat.st_size add_file_headers(request, media_type, file_size, upload_name) with open(file_path, "rb") as f: await make_deferred_yieldable(FileSender().beginFileTransfer(f, request)) finish_request(request) else: respond_404(request) def add_file_headers( request: Request, media_type: str, file_size: Optional[int], upload_name: Optional[str], ) -> None: """Adds the correct response headers in preparation for responding with the media. Args: request media_type: The media/content type. file_size: Size in bytes of the media, if known. upload_name: The name of the requested file, if any. """ def _quote(x: str) -> str: return urllib.parse.quote(x.encode("utf-8")) # Default to a UTF-8 charset for text content types. # ex, uses UTF-8 for 'text/css' but not 'text/css; charset=UTF-16' if media_type.lower() in TEXT_CONTENT_TYPES: content_type = media_type + "; charset=UTF-8" else: content_type = media_type request.setHeader(b"Content-Type", content_type.encode("UTF-8")) # A strict subset of content types is allowed to be inlined so that they may # be viewed directly in a browser. Other file types are forced to be downloads. # # Only the type & subtype are important, parameters can be ignored. if media_type.lower().split(";", 1)[0] in INLINE_CONTENT_TYPES: disposition = "inline" else: disposition = "attachment" if upload_name: # RFC6266 section 4.1 [1] defines both `filename` and `filename*`. # # `filename` is defined to be a `value`, which is defined by RFC2616 # section 3.6 [2] to be a `token` or a `quoted-string`, where a `token` # is (essentially) a single US-ASCII word, and a `quoted-string` is a # US-ASCII string surrounded by double-quotes, using backslash as an # escape character. Note that %-encoding is *not* permitted. # # `filename*` is defined to be an `ext-value`, which is defined in # RFC5987 section 3.2.1 [3] to be `charset "'" [ language ] "'" value-chars`, # where `value-chars` is essentially a %-encoded string in the given charset. # # [1]: https://tools.ietf.org/html/rfc6266#section-4.1 # [2]: https://tools.ietf.org/html/rfc2616#section-3.6 # [3]: https://tools.ietf.org/html/rfc5987#section-3.2.1 # We avoid the quoted-string version of `filename`, because (a) synapse didn't # correctly interpret those as of 0.99.2 and (b) they are a bit of a pain and we # may as well just do the filename* version. if _can_encode_filename_as_token(upload_name): disposition = "%s; filename=%s" % ( disposition, upload_name, ) else: disposition = "%s; filename*=utf-8''%s" % ( disposition, _quote(upload_name), ) request.setHeader(b"Content-Disposition", disposition.encode("ascii")) # cache for at least a day. # XXX: we might want to turn this off for data we don't want to # recommend caching as it's sensitive or private - or at least # select private. don't bother setting Expires as all our # clients are smart enough to be happy with Cache-Control request.setHeader(b"Cache-Control", b"public,max-age=86400,s-maxage=86400") if file_size is not None: request.setHeader(b"Content-Length", b"%d" % (file_size,)) # Tell web crawlers to not index, archive, or follow links in media. This # should help to prevent things in the media repo from showing up in web # search results. request.setHeader(b"X-Robots-Tag", "noindex, nofollow, noarchive, noimageindex") # separators as defined in RFC2616. SP and HT are handled separately. # see _can_encode_filename_as_token. _FILENAME_SEPARATOR_CHARS = { "(", ")", "<", ">", "@", ",", ";", ":", "\\", '"', "/", "[", "]", "?", "=", "{", "}", } def _can_encode_filename_as_token(x: str) -> bool: for c in x: # from RFC2616: # # token = 1* # # separators = "(" | ")" | "<" | ">" | "@" # | "," | ";" | ":" | "\" | <"> # | "/" | "[" | "]" | "?" | "=" # | "{" | "}" | SP | HT # # CHAR = # # CTL = # if ord(c) >= 127 or ord(c) <= 32 or c in _FILENAME_SEPARATOR_CHARS: return False return True async def respond_with_responder( request: SynapseRequest, responder: "Optional[Responder]", media_type: str, file_size: Optional[int], upload_name: Optional[str] = None, ) -> None: """Responds to the request with given responder. If responder is None then returns 404. Args: request responder media_type: The media/content type. file_size: Size in bytes of the media. If not known it should be None upload_name: The name of the requested file, if any. """ if not responder: respond_404(request) return # If we have a responder we *must* use it as a context manager. with responder: if request._disconnected: logger.warning( "Not sending response to request %s, already disconnected.", request ) return logger.debug("Responding to media request with responder %s", responder) add_file_headers(request, media_type, file_size, upload_name) try: await responder.write_to_consumer(request) except Exception as e: # The majority of the time this will be due to the client having gone # away. Unfortunately, Twisted simply throws a generic exception at us # in that case. logger.warning("Failed to write to consumer: %s %s", type(e), e) # Unregister the producer, if it has one, so Twisted doesn't complain if request.producer: request.unregisterProducer() finish_request(request) class Responder(ABC): """Represents a response that can be streamed to the requester. Responder is a context manager which *must* be used, so that any resources held can be cleaned up. """ @abstractmethod def write_to_consumer(self, consumer: IConsumer) -> Awaitable: """Stream response into consumer Args: consumer: The consumer to stream into. Returns: Resolves once the response has finished being written """ raise NotImplementedError() def __enter__(self) -> None: # noqa: B027 pass def __exit__( # noqa: B027 self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: pass @attr.s(slots=True, frozen=True, auto_attribs=True) class ThumbnailInfo: """Details about a generated thumbnail.""" width: int height: int method: str # Content type of thumbnail, e.g. image/png type: str # The size of the media file, in bytes. length: int @attr.s(slots=True, frozen=True, auto_attribs=True) class FileInfo: """Details about a requested/uploaded file.""" # The server name where the media originated from, or None if local. server_name: Optional[str] # The local ID of the file. For local files this is the same as the media_id file_id: str # If the file is for the url preview cache url_cache: bool = False # Whether the file is a thumbnail or not. thumbnail: Optional[ThumbnailInfo] = None # The below properties exist to maintain compatibility with third-party modules. @property def thumbnail_width(self) -> Optional[int]: if not self.thumbnail: return None return self.thumbnail.width @property def thumbnail_height(self) -> Optional[int]: if not self.thumbnail: return None return self.thumbnail.height @property def thumbnail_method(self) -> Optional[str]: if not self.thumbnail: return None return self.thumbnail.method @property def thumbnail_type(self) -> Optional[str]: if not self.thumbnail: return None return self.thumbnail.type @property def thumbnail_length(self) -> Optional[int]: if not self.thumbnail: return None return self.thumbnail.length def get_filename_from_headers(headers: Dict[bytes, List[bytes]]) -> Optional[str]: """ Get the filename of the downloaded file by inspecting the Content-Disposition HTTP header. Args: headers: The HTTP request headers. Returns: The filename, or None. """ content_disposition = headers.get(b"Content-Disposition", [b""]) # No header, bail out. if not content_disposition[0]: return None _, params = _parse_header(content_disposition[0]) upload_name = None # First check if there is a valid UTF-8 filename upload_name_utf8 = params.get(b"filename*", None) if upload_name_utf8: if upload_name_utf8.lower().startswith(b"utf-8''"): upload_name_utf8 = upload_name_utf8[7:] # We have a filename*= section. This MUST be ASCII, and any UTF-8 # bytes are %-quoted. try: # Once it is decoded, we can then unquote the %-encoded # parts strictly into a unicode string. upload_name = urllib.parse.unquote( upload_name_utf8.decode("ascii"), errors="strict" ) except UnicodeDecodeError: # Incorrect UTF-8. pass # If there isn't check for an ascii name. if not upload_name: upload_name_ascii = params.get(b"filename", None) if upload_name_ascii and is_ascii(upload_name_ascii): upload_name = upload_name_ascii.decode("ascii") # This may be None here, indicating we did not find a matching name. return upload_name def _parse_header(line: bytes) -> Tuple[bytes, Dict[bytes, bytes]]: """Parse a Content-type like header. Cargo-culted from `cgi`, but works on bytes rather than strings. Args: line: header to be parsed Returns: The main content-type, followed by the parameter dictionary """ parts = _parseparam(b";" + line) key = next(parts) pdict = {} for p in parts: i = p.find(b"=") if i >= 0: name = p[:i].strip().lower() value = p[i + 1 :].strip() # strip double-quotes if len(value) >= 2 and value[0:1] == value[-1:] == b'"': value = value[1:-1] value = value.replace(b"\\\\", b"\\").replace(b'\\"', b'"') pdict[name] = value return key, pdict def _parseparam(s: bytes) -> Generator[bytes, None, None]: """Generator which splits the input on ;, respecting double-quoted sequences Cargo-culted from `cgi`, but works on bytes rather than strings. Args: s: header to be parsed Returns: The split input """ while s[:1] == b";": s = s[1:] # look for the next ; end = s.find(b";") # if there is an odd number of " marks between here and the next ;, skip to the # next ; instead while end > 0 and (s.count(b'"', 0, end) - s.count(b'\\"', 0, end)) % 2: end = s.find(b";", end + 1) if end < 0: end = len(s) f = s[:end] yield f.strip() s = s[end:] synapse-1.100.0/synapse/media/filepath.py000066400000000000000000000371041455622526000202560ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2020-2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import functools import os import re import string from typing import Any, Callable, List, TypeVar, Union, cast NEW_FORMAT_ID_RE = re.compile(r"^\d\d\d\d-\d\d-\d\d") F = TypeVar("F", bound=Callable[..., str]) def _wrap_in_base_path(func: F) -> F: """Takes a function that returns a relative path and turns it into an absolute path based on the location of the primary media store """ @functools.wraps(func) def _wrapped(self: "MediaFilePaths", *args: Any, **kwargs: Any) -> str: path = func(self, *args, **kwargs) return os.path.join(self.base_path, path) return cast(F, _wrapped) GetPathMethod = TypeVar( "GetPathMethod", bound=Union[Callable[..., str], Callable[..., List[str]]] ) def _wrap_with_jail_check(relative: bool) -> Callable[[GetPathMethod], GetPathMethod]: """Wraps a path-returning method to check that the returned path(s) do not escape the media store directory. The path-returning method may return either a single path, or a list of paths. The check is not expected to ever fail, unless `func` is missing a call to `_validate_path_component`, or `_validate_path_component` is buggy. Args: relative: A boolean indicating whether the wrapped method returns paths relative to the media store directory. Returns: A method which will wrap a path-returning method, adding a check to ensure that the returned path(s) lie within the media store directory. The check will raise a `ValueError` if it fails. """ def _wrap_with_jail_check_inner(func: GetPathMethod) -> GetPathMethod: @functools.wraps(func) def _wrapped( self: "MediaFilePaths", *args: Any, **kwargs: Any ) -> Union[str, List[str]]: path_or_paths = func(self, *args, **kwargs) if isinstance(path_or_paths, list): paths_to_check = path_or_paths else: paths_to_check = [path_or_paths] for path in paths_to_check: # Construct the path that will ultimately be used. # We cannot guess whether `path` is relative to the media store # directory, since the media store directory may itself be a relative # path. if relative: path = os.path.join(self.base_path, path) normalized_path = os.path.normpath(path) # Now that `normpath` has eliminated `../`s and `./`s from the path, # `os.path.commonpath` can be used to check whether it lies within the # media store directory. if ( os.path.commonpath([normalized_path, self.normalized_base_path]) != self.normalized_base_path ): # The path resolves to outside the media store directory, # or `self.base_path` is `.`, which is an unlikely configuration. raise ValueError(f"Invalid media store path: {path!r}") # Note that `os.path.normpath`/`abspath` has a subtle caveat: # `a/b/c/../c` will normalize to `a/b/c`, but the former refers to a # different path if `a/b/c` is a symlink. That is, the check above is # not perfect and may allow a certain restricted subset of untrustworthy # paths through. Since the check above is secondary to the main # `_validate_path_component` checks, it's less important for it to be # perfect. # # As an alternative, `os.path.realpath` will resolve symlinks, but # proves problematic if there are symlinks inside the media store. # eg. if `url_store/` is symlinked to elsewhere, its canonical path # won't match that of the main media store directory. return path_or_paths return cast(GetPathMethod, _wrapped) return _wrap_with_jail_check_inner ALLOWED_CHARACTERS = set( string.ascii_letters + string.digits + "_-" + ".[]:" # Domain names, IPv6 addresses and ports in server names ) FORBIDDEN_NAMES = { "", os.path.curdir, # "." for the current platform os.path.pardir, # ".." for the current platform } def _validate_path_component(name: str) -> str: """Checks that the given string can be safely used as a path component Args: name: The path component to check. Returns: The path component if valid. Raises: ValueError: If `name` cannot be safely used as a path component. """ if not ALLOWED_CHARACTERS.issuperset(name) or name in FORBIDDEN_NAMES: raise ValueError(f"Invalid path component: {name!r}") return name class MediaFilePaths: """Describes where files are stored on disk. Most of the functions have a `*_rel` variant which returns a file path that is relative to the base media store path. This is mainly used when we want to write to the backup media store (when one is configured) """ def __init__(self, primary_base_path: str): self.base_path = primary_base_path self.normalized_base_path = os.path.normpath(self.base_path) # Refuse to initialize if paths cannot be validated correctly for the current # platform. assert os.path.sep not in ALLOWED_CHARACTERS assert os.path.altsep not in ALLOWED_CHARACTERS # On Windows, paths have all sorts of weirdness which `_validate_path_component` # does not consider. In any case, the remote media store can't work correctly # for certain homeservers there, since ":"s aren't allowed in paths. assert os.name == "posix" @_wrap_with_jail_check(relative=True) def local_media_filepath_rel(self, media_id: str) -> str: return os.path.join( "local_content", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) local_media_filepath = _wrap_in_base_path(local_media_filepath_rel) @_wrap_with_jail_check(relative=True) def local_media_thumbnail_rel( self, media_id: str, width: int, height: int, content_type: str, method: str ) -> str: top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s-%s" % (width, height, top_level_type, sub_type, method) return os.path.join( "local_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), _validate_path_component(file_name), ) local_media_thumbnail = _wrap_in_base_path(local_media_thumbnail_rel) @_wrap_with_jail_check(relative=False) def local_media_thumbnail_dir(self, media_id: str) -> str: """ Retrieve the local store path of thumbnails of a given media_id Args: media_id: The media ID to query. Returns: Path of local_thumbnails from media_id """ return os.path.join( self.base_path, "local_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) @_wrap_with_jail_check(relative=True) def remote_media_filepath_rel(self, server_name: str, file_id: str) -> str: return os.path.join( "remote_content", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), ) remote_media_filepath = _wrap_in_base_path(remote_media_filepath_rel) @_wrap_with_jail_check(relative=True) def remote_media_thumbnail_rel( self, server_name: str, file_id: str, width: int, height: int, content_type: str, method: str, ) -> str: top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s-%s" % (width, height, top_level_type, sub_type, method) return os.path.join( "remote_thumbnail", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), _validate_path_component(file_name), ) remote_media_thumbnail = _wrap_in_base_path(remote_media_thumbnail_rel) # Legacy path that was used to store thumbnails previously. # Should be removed after some time, when most of the thumbnails are stored # using the new path. @_wrap_with_jail_check(relative=True) def remote_media_thumbnail_rel_legacy( self, server_name: str, file_id: str, width: int, height: int, content_type: str ) -> str: top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s" % (width, height, top_level_type, sub_type) return os.path.join( "remote_thumbnail", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), _validate_path_component(file_name), ) @_wrap_with_jail_check(relative=False) def remote_media_thumbnail_dir(self, server_name: str, file_id: str) -> str: return os.path.join( self.base_path, "remote_thumbnail", _validate_path_component(server_name), _validate_path_component(file_id[0:2]), _validate_path_component(file_id[2:4]), _validate_path_component(file_id[4:]), ) @_wrap_with_jail_check(relative=True) def url_cache_filepath_rel(self, media_id: str) -> str: if NEW_FORMAT_ID_RE.match(media_id): # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf return os.path.join( "url_cache", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), ) else: return os.path.join( "url_cache", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) url_cache_filepath = _wrap_in_base_path(url_cache_filepath_rel) @_wrap_with_jail_check(relative=False) def url_cache_filepath_dirs_to_delete(self, media_id: str) -> List[str]: "The dirs to try and remove if we delete the media_id file" if NEW_FORMAT_ID_RE.match(media_id): return [ os.path.join( self.base_path, "url_cache", _validate_path_component(media_id[:10]) ) ] else: return [ os.path.join( self.base_path, "url_cache", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), ), os.path.join( self.base_path, "url_cache", _validate_path_component(media_id[0:2]) ), ] @_wrap_with_jail_check(relative=True) def url_cache_thumbnail_rel( self, media_id: str, width: int, height: int, content_type: str, method: str ) -> str: # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf top_level_type, sub_type = content_type.split("/") file_name = "%i-%i-%s-%s-%s" % (width, height, top_level_type, sub_type, method) if NEW_FORMAT_ID_RE.match(media_id): return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), _validate_path_component(file_name), ) else: return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), _validate_path_component(file_name), ) url_cache_thumbnail = _wrap_in_base_path(url_cache_thumbnail_rel) @_wrap_with_jail_check(relative=True) def url_cache_thumbnail_directory_rel(self, media_id: str) -> str: # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf if NEW_FORMAT_ID_RE.match(media_id): return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), ) else: return os.path.join( "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ) url_cache_thumbnail_directory = _wrap_in_base_path( url_cache_thumbnail_directory_rel ) @_wrap_with_jail_check(relative=False) def url_cache_thumbnail_dirs_to_delete(self, media_id: str) -> List[str]: "The dirs to try and remove if we delete the media_id thumbnails" # Media id is of the form # E.g.: 2017-09-28-fsdRDt24DS234dsf if NEW_FORMAT_ID_RE.match(media_id): return [ os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[:10]), _validate_path_component(media_id[11:]), ), os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[:10]), ), ] else: return [ os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), _validate_path_component(media_id[4:]), ), os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[0:2]), _validate_path_component(media_id[2:4]), ), os.path.join( self.base_path, "url_cache_thumbnails", _validate_path_component(media_id[0:2]), ), ] synapse-1.100.0/synapse/media/media_repository.py000066400000000000000000001325371455622526000220460ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2018-2021 The Matrix.org Foundation C.I.C. # Copyright 2014-2016 OpenMarket Ltd # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import errno import logging import os import shutil from io import BytesIO from typing import IO, TYPE_CHECKING, Dict, List, Optional, Set, Tuple import attr from matrix_common.types.mxc_uri import MXCUri import twisted.internet.error import twisted.web.http from twisted.internet.defer import Deferred from synapse.api.errors import ( Codes, FederationDeniedError, HttpResponseException, NotFoundError, RequestSendFailed, SynapseError, cs_error, ) from synapse.config.repository import ThumbnailRequirement from synapse.http.server import respond_with_json from synapse.http.site import SynapseRequest from synapse.logging.context import defer_to_thread from synapse.logging.opentracing import trace from synapse.media._base import ( FileInfo, Responder, ThumbnailInfo, get_filename_from_headers, respond_404, respond_with_responder, ) from synapse.media.filepath import MediaFilePaths from synapse.media.media_storage import MediaStorage from synapse.media.storage_provider import StorageProviderWrapper from synapse.media.thumbnailer import Thumbnailer, ThumbnailError from synapse.media.url_previewer import UrlPreviewer from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.databases.main.media_repository import LocalMedia, RemoteMedia from synapse.types import UserID from synapse.util.async_helpers import Linearizer from synapse.util.retryutils import NotRetryingDestination from synapse.util.stringutils import random_string if TYPE_CHECKING: from synapse.server import HomeServer logger = logging.getLogger(__name__) # How often to run the background job to update the "recently accessed" # attribute of local and remote media. UPDATE_RECENTLY_ACCESSED_TS = 60 * 1000 # 1 minute # How often to run the background job to check for local and remote media # that should be purged according to the configured media retention settings. MEDIA_RETENTION_CHECK_PERIOD_MS = 60 * 60 * 1000 # 1 hour class MediaRepository: def __init__(self, hs: "HomeServer"): self.hs = hs self.auth = hs.get_auth() self.client = hs.get_federation_client() self.clock = hs.get_clock() self.server_name = hs.hostname self.store = hs.get_datastores().main self.max_upload_size = hs.config.media.max_upload_size self.max_image_pixels = hs.config.media.max_image_pixels self.unused_expiration_time = hs.config.media.unused_expiration_time self.max_pending_media_uploads = hs.config.media.max_pending_media_uploads Thumbnailer.set_limits(self.max_image_pixels) self.primary_base_path: str = hs.config.media.media_store_path self.filepaths: MediaFilePaths = MediaFilePaths(self.primary_base_path) self.dynamic_thumbnails = hs.config.media.dynamic_thumbnails self.thumbnail_requirements = hs.config.media.thumbnail_requirements self.remote_media_linearizer = Linearizer(name="media_remote") self.recently_accessed_remotes: Set[Tuple[str, str]] = set() self.recently_accessed_locals: Set[str] = set() self.federation_domain_whitelist = ( hs.config.federation.federation_domain_whitelist ) self.prevent_media_downloads_from = hs.config.media.prevent_media_downloads_from # List of StorageProviders where we should search for media and # potentially upload to. storage_providers = [] for ( clz, provider_config, wrapper_config, ) in hs.config.media.media_storage_providers: backend = clz(hs, provider_config) provider = StorageProviderWrapper( backend, store_local=wrapper_config.store_local, store_remote=wrapper_config.store_remote, store_synchronous=wrapper_config.store_synchronous, ) storage_providers.append(provider) self.media_storage: MediaStorage = MediaStorage( self.hs, self.primary_base_path, self.filepaths, storage_providers ) self.clock.looping_call( self._start_update_recently_accessed, UPDATE_RECENTLY_ACCESSED_TS ) # Media retention configuration options self._media_retention_local_media_lifetime_ms = ( hs.config.media.media_retention_local_media_lifetime_ms ) self._media_retention_remote_media_lifetime_ms = ( hs.config.media.media_retention_remote_media_lifetime_ms ) # Check whether local or remote media retention is configured if ( hs.config.media.media_retention_local_media_lifetime_ms is not None or hs.config.media.media_retention_remote_media_lifetime_ms is not None ): # Run the background job to apply media retention rules routinely, # with the duration between runs dictated by the homeserver config. self.clock.looping_call( self._start_apply_media_retention_rules, MEDIA_RETENTION_CHECK_PERIOD_MS, ) if hs.config.media.url_preview_enabled: self.url_previewer: Optional[UrlPreviewer] = UrlPreviewer( hs, self, self.media_storage ) else: self.url_previewer = None def _start_update_recently_accessed(self) -> Deferred: return run_as_background_process( "update_recently_accessed_media", self._update_recently_accessed ) def _start_apply_media_retention_rules(self) -> Deferred: return run_as_background_process( "apply_media_retention_rules", self._apply_media_retention_rules ) async def _update_recently_accessed(self) -> None: remote_media = self.recently_accessed_remotes self.recently_accessed_remotes = set() local_media = self.recently_accessed_locals self.recently_accessed_locals = set() await self.store.update_cached_last_access_time( local_media, remote_media, self.clock.time_msec() ) def mark_recently_accessed(self, server_name: Optional[str], media_id: str) -> None: """Mark the given media as recently accessed. Args: server_name: Origin server of media, or None if local media_id: The media ID of the content """ if server_name: self.recently_accessed_remotes.add((server_name, media_id)) else: self.recently_accessed_locals.add(media_id) @trace async def create_media_id(self, auth_user: UserID) -> Tuple[str, int]: """Create and store a media ID for a local user and return the MXC URI and its expiration. Args: auth_user: The user_id of the uploader Returns: A tuple containing the MXC URI of the stored content and the timestamp at which the MXC URI expires. """ media_id = random_string(24) now = self.clock.time_msec() await self.store.store_local_media_id( media_id=media_id, time_now_ms=now, user_id=auth_user, ) return f"mxc://{self.server_name}/{media_id}", now + self.unused_expiration_time @trace async def reached_pending_media_limit(self, auth_user: UserID) -> Tuple[bool, int]: """Check if the user is over the limit for pending media uploads. Args: auth_user: The user_id of the uploader Returns: A tuple with a boolean and an integer indicating whether the user has too many pending media uploads and the timestamp at which the first pending media will expire, respectively. """ pending, first_expiration_ts = await self.store.count_pending_media( user_id=auth_user ) return pending >= self.max_pending_media_uploads, first_expiration_ts @trace async def verify_can_upload(self, media_id: str, auth_user: UserID) -> None: """Verify that the media ID can be uploaded to by the given user. This function checks that: * the media ID exists * the media ID does not already have content * the user uploading is the same as the one who created the media ID * the media ID has not expired Args: media_id: The media ID to verify auth_user: The user_id of the uploader """ media = await self.store.get_local_media(media_id) if media is None: raise SynapseError(404, "Unknow media ID", errcode=Codes.NOT_FOUND) if media.user_id != auth_user.to_string(): raise SynapseError( 403, "Only the creator of the media ID can upload to it", errcode=Codes.FORBIDDEN, ) if media.media_length is not None: raise SynapseError( 409, "Media ID already has content", errcode=Codes.CANNOT_OVERWRITE_MEDIA, ) expired_time_ms = self.clock.time_msec() - self.unused_expiration_time if media.created_ts < expired_time_ms: raise NotFoundError("Media ID has expired") @trace async def update_content( self, media_id: str, media_type: str, upload_name: Optional[str], content: IO, content_length: int, auth_user: UserID, ) -> None: """Update the content of the given media ID. Args: media_id: The media ID to replace. media_type: The content type of the file. upload_name: The name of the file, if provided. content: A file like object that is the content to store content_length: The length of the content auth_user: The user_id of the uploader """ file_info = FileInfo(server_name=None, file_id=media_id) fname = await self.media_storage.store_file(content, file_info) logger.info("Stored local media in file %r", fname) await self.store.update_local_media( media_id=media_id, media_type=media_type, upload_name=upload_name, media_length=content_length, user_id=auth_user, ) try: await self._generate_thumbnails(None, media_id, media_id, media_type) except Exception as e: logger.info("Failed to generate thumbnails: %s", e) @trace async def create_content( self, media_type: str, upload_name: Optional[str], content: IO, content_length: int, auth_user: UserID, ) -> MXCUri: """Store uploaded content for a local user and return the mxc URL Args: media_type: The content type of the file. upload_name: The name of the file, if provided. content: A file like object that is the content to store content_length: The length of the content auth_user: The user_id of the uploader Returns: The mxc url of the stored content """ media_id = random_string(24) file_info = FileInfo(server_name=None, file_id=media_id) fname = await self.media_storage.store_file(content, file_info) logger.info("Stored local media in file %r", fname) await self.store.store_local_media( media_id=media_id, media_type=media_type, time_now_ms=self.clock.time_msec(), upload_name=upload_name, media_length=content_length, user_id=auth_user, ) try: await self._generate_thumbnails(None, media_id, media_id, media_type) except Exception as e: logger.info("Failed to generate thumbnails: %s", e) return MXCUri(self.server_name, media_id) def respond_not_yet_uploaded(self, request: SynapseRequest) -> None: respond_with_json( request, 504, cs_error("Media has not been uploaded yet", code=Codes.NOT_YET_UPLOADED), send_cors=True, ) async def get_local_media_info( self, request: SynapseRequest, media_id: str, max_timeout_ms: int ) -> Optional[LocalMedia]: """Gets the info dictionary for given local media ID. If the media has not been uploaded yet, this function will wait up to ``max_timeout_ms`` milliseconds for the media to be uploaded. Args: request: The incoming request. media_id: The media ID of the content. (This is the same as the file_id for local content.) max_timeout_ms: the maximum number of milliseconds to wait for the media to be uploaded. Returns: Either the info dictionary for the given local media ID or ``None``. If ``None``, then no further processing is necessary as this function will send the necessary JSON response. """ wait_until = self.clock.time_msec() + max_timeout_ms while True: # Get the info for the media media_info = await self.store.get_local_media(media_id) if not media_info: logger.info("Media %s is unknown", media_id) respond_404(request) return None if media_info.quarantined_by: logger.info("Media %s is quarantined", media_id) respond_404(request) return None # The file has been uploaded, so stop looping if media_info.media_length is not None: return media_info # Check if the media ID has expired and still hasn't been uploaded to. now = self.clock.time_msec() expired_time_ms = now - self.unused_expiration_time if media_info.created_ts < expired_time_ms: logger.info("Media %s has expired without being uploaded", media_id) respond_404(request) return None if now >= wait_until: break await self.clock.sleep(0.5) logger.info("Media %s has not yet been uploaded", media_id) self.respond_not_yet_uploaded(request) return None async def get_local_media( self, request: SynapseRequest, media_id: str, name: Optional[str], max_timeout_ms: int, ) -> None: """Responds to requests for local media, if exists, or returns 404. Args: request: The incoming request. media_id: The media ID of the content. (This is the same as the file_id for local content.) name: Optional name that, if specified, will be used as the filename in the Content-Disposition header of the response. max_timeout_ms: the maximum number of milliseconds to wait for the media to be uploaded. Returns: Resolves once a response has successfully been written to request """ media_info = await self.get_local_media_info(request, media_id, max_timeout_ms) if not media_info: return self.mark_recently_accessed(None, media_id) media_type = media_info.media_type if not media_type: media_type = "application/octet-stream" media_length = media_info.media_length upload_name = name if name else media_info.upload_name url_cache = media_info.url_cache file_info = FileInfo(None, media_id, url_cache=bool(url_cache)) responder = await self.media_storage.fetch_media(file_info) await respond_with_responder( request, responder, media_type, media_length, upload_name ) async def get_remote_media( self, request: SynapseRequest, server_name: str, media_id: str, name: Optional[str], max_timeout_ms: int, ) -> None: """Respond to requests for remote media. Args: request: The incoming request. server_name: Remote server_name where the media originated. media_id: The media ID of the content (as defined by the remote server). name: Optional name that, if specified, will be used as the filename in the Content-Disposition header of the response. max_timeout_ms: the maximum number of milliseconds to wait for the media to be uploaded. Returns: Resolves once a response has successfully been written to request """ if ( self.federation_domain_whitelist is not None and server_name not in self.federation_domain_whitelist ): raise FederationDeniedError(server_name) # Don't let users download media from domains listed in the config, even # if we might have the media to serve. This is Trust & Safety tooling to # block some servers' media from being accessible to local users. # See `prevent_media_downloads_from` config docs for more info. if server_name in self.prevent_media_downloads_from: respond_404(request) return self.mark_recently_accessed(server_name, media_id) # We linearize here to ensure that we don't try and download remote # media multiple times concurrently key = (server_name, media_id) async with self.remote_media_linearizer.queue(key): responder, media_info = await self._get_remote_media_impl( server_name, media_id, max_timeout_ms ) # We deliberately stream the file outside the lock if responder and media_info: upload_name = name if name else media_info.upload_name await respond_with_responder( request, responder, media_info.media_type, media_info.media_length, upload_name, ) else: respond_404(request) async def get_remote_media_info( self, server_name: str, media_id: str, max_timeout_ms: int ) -> RemoteMedia: """Gets the media info associated with the remote file, downloading if necessary. Args: server_name: Remote server_name where the media originated. media_id: The media ID of the content (as defined by the remote server). max_timeout_ms: the maximum number of milliseconds to wait for the media to be uploaded. Returns: The media info of the file """ if ( self.federation_domain_whitelist is not None and server_name not in self.federation_domain_whitelist ): raise FederationDeniedError(server_name) # We linearize here to ensure that we don't try and download remote # media multiple times concurrently key = (server_name, media_id) async with self.remote_media_linearizer.queue(key): responder, media_info = await self._get_remote_media_impl( server_name, media_id, max_timeout_ms ) # Ensure we actually use the responder so that it releases resources if responder: with responder: pass return media_info async def _get_remote_media_impl( self, server_name: str, media_id: str, max_timeout_ms: int ) -> Tuple[Optional[Responder], RemoteMedia]: """Looks for media in local cache, if not there then attempt to download from remote server. Args: server_name: Remote server_name where the media originated. media_id: The media ID of the content (as defined by the remote server). max_timeout_ms: the maximum number of milliseconds to wait for the media to be uploaded. Returns: A tuple of responder and the media info of the file. """ media_info = await self.store.get_cached_remote_media(server_name, media_id) # file_id is the ID we use to track the file locally. If we've already # seen the file then reuse the existing ID, otherwise generate a new # one. # If we have an entry in the DB, try and look for it if media_info: file_id = media_info.filesystem_id file_info = FileInfo(server_name, file_id) if media_info.quarantined_by: logger.info("Media is quarantined") raise NotFoundError() if not media_info.media_type: media_info = attr.evolve( media_info, media_type="application/octet-stream" ) responder = await self.media_storage.fetch_media(file_info) if responder: return responder, media_info # Failed to find the file anywhere, lets download it. try: media_info = await self._download_remote_file( server_name, media_id, max_timeout_ms ) except SynapseError: raise except Exception as e: # An exception may be because we downloaded media in another # process, so let's check if we magically have the media. media_info = await self.store.get_cached_remote_media(server_name, media_id) if not media_info: raise e file_id = media_info.filesystem_id if not media_info.media_type: media_info = attr.evolve(media_info, media_type="application/octet-stream") file_info = FileInfo(server_name, file_id) # We generate thumbnails even if another process downloaded the media # as a) it's conceivable that the other download request dies before it # generates thumbnails, but mainly b) we want to be sure the thumbnails # have finished being generated before responding to the client, # otherwise they'll request thumbnails and get a 404 if they're not # ready yet. await self._generate_thumbnails( server_name, media_id, file_id, media_info.media_type ) responder = await self.media_storage.fetch_media(file_info) return responder, media_info async def _download_remote_file( self, server_name: str, media_id: str, max_timeout_ms: int, ) -> RemoteMedia: """Attempt to download the remote file from the given server name, using the given file_id as the local id. Args: server_name: Originating server media_id: The media ID of the content (as defined by the remote server). This is different than the file_id, which is locally generated. max_timeout_ms: the maximum number of milliseconds to wait for the media to be uploaded. Returns: The media info of the file. """ file_id = random_string(24) file_info = FileInfo(server_name=server_name, file_id=file_id) with self.media_storage.store_into_file(file_info) as (f, fname, finish): try: length, headers = await self.client.download_media( server_name, media_id, output_stream=f, max_size=self.max_upload_size, max_timeout_ms=max_timeout_ms, ) except RequestSendFailed as e: logger.warning( "Request failed fetching remote media %s/%s: %r", server_name, media_id, e, ) raise SynapseError(502, "Failed to fetch remote media") except HttpResponseException as e: logger.warning( "HTTP error fetching remote media %s/%s: %s", server_name, media_id, e.response, ) if e.code == twisted.web.http.NOT_FOUND: raise e.to_synapse_error() raise SynapseError(502, "Failed to fetch remote media") except SynapseError: logger.warning( "Failed to fetch remote media %s/%s", server_name, media_id ) raise except NotRetryingDestination: logger.warning("Not retrying destination %r", server_name) raise SynapseError(502, "Failed to fetch remote media") except Exception: logger.exception( "Failed to fetch remote media %s/%s", server_name, media_id ) raise SynapseError(502, "Failed to fetch remote media") await finish() if b"Content-Type" in headers: media_type = headers[b"Content-Type"][0].decode("ascii") else: media_type = "application/octet-stream" upload_name = get_filename_from_headers(headers) time_now_ms = self.clock.time_msec() # Multiple remote media download requests can race (when using # multiple media repos), so this may throw a violation constraint # exception. If it does we'll delete the newly downloaded file from # disk (as we're in the ctx manager). # # However: we've already called `finish()` so we may have also # written to the storage providers. This is preferable to the # alternative where we call `finish()` *after* this, where we could # end up having an entry in the DB but fail to write the files to # the storage providers. await self.store.store_cached_remote_media( origin=server_name, media_id=media_id, media_type=media_type, time_now_ms=time_now_ms, upload_name=upload_name, media_length=length, filesystem_id=file_id, ) logger.info("Stored remote media in file %r", fname) return RemoteMedia( media_origin=server_name, media_id=media_id, media_type=media_type, media_length=length, upload_name=upload_name, created_ts=time_now_ms, filesystem_id=file_id, last_access_ts=time_now_ms, quarantined_by=None, ) def _get_thumbnail_requirements( self, media_type: str ) -> Tuple[ThumbnailRequirement, ...]: scpos = media_type.find(";") if scpos > 0: media_type = media_type[:scpos] return self.thumbnail_requirements.get(media_type, ()) def _generate_thumbnail( self, thumbnailer: Thumbnailer, t_width: int, t_height: int, t_method: str, t_type: str, ) -> Optional[BytesIO]: m_width = thumbnailer.width m_height = thumbnailer.height if m_width * m_height >= self.max_image_pixels: logger.info( "Image too large to thumbnail %r x %r > %r", m_width, m_height, self.max_image_pixels, ) return None if thumbnailer.transpose_method is not None: m_width, m_height = thumbnailer.transpose() if t_method == "crop": return thumbnailer.crop(t_width, t_height, t_type) elif t_method == "scale": t_width, t_height = thumbnailer.aspect(t_width, t_height) t_width = min(m_width, t_width) t_height = min(m_height, t_height) return thumbnailer.scale(t_width, t_height, t_type) return None async def generate_local_exact_thumbnail( self, media_id: str, t_width: int, t_height: int, t_method: str, t_type: str, url_cache: bool, ) -> Optional[str]: input_path = await self.media_storage.ensure_media_is_in_local_cache( FileInfo(None, media_id, url_cache=url_cache) ) try: thumbnailer = Thumbnailer(input_path) except ThumbnailError as e: logger.warning( "Unable to generate a thumbnail for local media %s using a method of %s and type of %s: %s", media_id, t_method, t_type, e, ) return None with thumbnailer: t_byte_source = await defer_to_thread( self.hs.get_reactor(), self._generate_thumbnail, thumbnailer, t_width, t_height, t_method, t_type, ) if t_byte_source: try: file_info = FileInfo( server_name=None, file_id=media_id, url_cache=url_cache, thumbnail=ThumbnailInfo( width=t_width, height=t_height, method=t_method, type=t_type, length=t_byte_source.tell(), ), ) output_path = await self.media_storage.store_file( t_byte_source, file_info ) finally: t_byte_source.close() logger.info("Stored thumbnail in file %r", output_path) t_len = os.path.getsize(output_path) await self.store.store_local_thumbnail( media_id, t_width, t_height, t_type, t_method, t_len ) return output_path # Could not generate thumbnail. return None async def generate_remote_exact_thumbnail( self, server_name: str, file_id: str, media_id: str, t_width: int, t_height: int, t_method: str, t_type: str, ) -> Optional[str]: input_path = await self.media_storage.ensure_media_is_in_local_cache( FileInfo(server_name, file_id) ) try: thumbnailer = Thumbnailer(input_path) except ThumbnailError as e: logger.warning( "Unable to generate a thumbnail for remote media %s from %s using a method of %s and type of %s: %s", media_id, server_name, t_method, t_type, e, ) return None with thumbnailer: t_byte_source = await defer_to_thread( self.hs.get_reactor(), self._generate_thumbnail, thumbnailer, t_width, t_height, t_method, t_type, ) if t_byte_source: try: file_info = FileInfo( server_name=server_name, file_id=file_id, thumbnail=ThumbnailInfo( width=t_width, height=t_height, method=t_method, type=t_type, length=t_byte_source.tell(), ), ) output_path = await self.media_storage.store_file( t_byte_source, file_info ) finally: t_byte_source.close() logger.info("Stored thumbnail in file %r", output_path) t_len = os.path.getsize(output_path) await self.store.store_remote_media_thumbnail( server_name, media_id, file_id, t_width, t_height, t_type, t_method, t_len, ) return output_path # Could not generate thumbnail. return None @trace async def _generate_thumbnails( self, server_name: Optional[str], media_id: str, file_id: str, media_type: str, url_cache: bool = False, ) -> Optional[dict]: """Generate and store thumbnails for an image. Args: server_name: The server name if remote media, else None if local media_id: The media ID of the content. (This is the same as the file_id for local content) file_id: Local file ID media_type: The content type of the file url_cache: If we are thumbnailing images downloaded for the URL cache, used exclusively by the url previewer Returns: Dict with "width" and "height" keys of original image or None if the media cannot be thumbnailed. """ requirements = self._get_thumbnail_requirements(media_type) if not requirements: return None input_path = await self.media_storage.ensure_media_is_in_local_cache( FileInfo(server_name, file_id, url_cache=url_cache) ) try: thumbnailer = Thumbnailer(input_path) except ThumbnailError as e: logger.warning( "Unable to generate thumbnails for remote media %s from %s of type %s: %s", media_id, server_name, media_type, e, ) return None with thumbnailer: m_width = thumbnailer.width m_height = thumbnailer.height if m_width * m_height >= self.max_image_pixels: logger.info( "Image too large to thumbnail %r x %r > %r", m_width, m_height, self.max_image_pixels, ) return None if thumbnailer.transpose_method is not None: m_width, m_height = await defer_to_thread( self.hs.get_reactor(), thumbnailer.transpose ) # We deduplicate the thumbnail sizes by ignoring the cropped versions if # they have the same dimensions of a scaled one. thumbnails: Dict[Tuple[int, int, str], str] = {} for requirement in requirements: if requirement.method == "crop": thumbnails.setdefault( (requirement.width, requirement.height, requirement.media_type), requirement.method, ) elif requirement.method == "scale": t_width, t_height = thumbnailer.aspect( requirement.width, requirement.height ) t_width = min(m_width, t_width) t_height = min(m_height, t_height) thumbnails[ (t_width, t_height, requirement.media_type) ] = requirement.method # Now we generate the thumbnails for each dimension, store it for (t_width, t_height, t_type), t_method in thumbnails.items(): # Generate the thumbnail if t_method == "crop": t_byte_source = await defer_to_thread( self.hs.get_reactor(), thumbnailer.crop, t_width, t_height, t_type, ) elif t_method == "scale": t_byte_source = await defer_to_thread( self.hs.get_reactor(), thumbnailer.scale, t_width, t_height, t_type, ) else: logger.error("Unrecognized method: %r", t_method) continue if not t_byte_source: continue file_info = FileInfo( server_name=server_name, file_id=file_id, url_cache=url_cache, thumbnail=ThumbnailInfo( width=t_width, height=t_height, method=t_method, type=t_type, length=t_byte_source.tell(), ), ) with self.media_storage.store_into_file(file_info) as ( f, fname, finish, ): try: await self.media_storage.write_to_file(t_byte_source, f) await finish() finally: t_byte_source.close() t_len = os.path.getsize(fname) # Write to database if server_name: # Multiple remote media download requests can race (when # using multiple media repos), so this may throw a violation # constraint exception. If it does we'll delete the newly # generated thumbnail from disk (as we're in the ctx # manager). # # However: we've already called `finish()` so we may have # also written to the storage providers. This is preferable # to the alternative where we call `finish()` *after* this, # where we could end up having an entry in the DB but fail # to write the files to the storage providers. try: await self.store.store_remote_media_thumbnail( server_name, media_id, file_id, t_width, t_height, t_type, t_method, t_len, ) except Exception as e: thumbnail_exists = ( await self.store.get_remote_media_thumbnail( server_name, media_id, t_width, t_height, t_type, ) ) if not thumbnail_exists: raise e else: await self.store.store_local_thumbnail( media_id, t_width, t_height, t_type, t_method, t_len ) return {"width": m_width, "height": m_height} async def _apply_media_retention_rules(self) -> None: """ Purge old local and remote media according to the media retention rules defined in the homeserver config. """ # Purge remote media if self._media_retention_remote_media_lifetime_ms is not None: # Calculate a threshold timestamp derived from the configured lifetime. Any # media that has not been accessed since this timestamp will be removed. remote_media_threshold_timestamp_ms = ( self.clock.time_msec() - self._media_retention_remote_media_lifetime_ms ) logger.info( "Purging remote media last accessed before" f" {remote_media_threshold_timestamp_ms}" ) await self.delete_old_remote_media( before_ts=remote_media_threshold_timestamp_ms ) # And now do the same for local media if self._media_retention_local_media_lifetime_ms is not None: # This works the same as the remote media threshold local_media_threshold_timestamp_ms = ( self.clock.time_msec() - self._media_retention_local_media_lifetime_ms ) logger.info( "Purging local media last accessed before" f" {local_media_threshold_timestamp_ms}" ) await self.delete_old_local_media( before_ts=local_media_threshold_timestamp_ms, keep_profiles=True, delete_quarantined_media=False, delete_protected_media=False, ) async def delete_old_remote_media(self, before_ts: int) -> Dict[str, int]: old_media = await self.store.get_remote_media_ids( before_ts, include_quarantined_media=False ) deleted = 0 for origin, media_id, file_id in old_media: key = (origin, media_id) logger.info("Deleting: %r", key) # TODO: Should we delete from the backup store async with self.remote_media_linearizer.queue(key): full_path = self.filepaths.remote_media_filepath(origin, file_id) try: os.remove(full_path) except OSError as e: logger.warning("Failed to remove file: %r", full_path) if e.errno == errno.ENOENT: pass else: continue thumbnail_dir = self.filepaths.remote_media_thumbnail_dir( origin, file_id ) shutil.rmtree(thumbnail_dir, ignore_errors=True) await self.store.delete_remote_media(origin, media_id) deleted += 1 return {"deleted": deleted} async def delete_local_media_ids( self, media_ids: List[str] ) -> Tuple[List[str], int]: """ Delete the given local or remote media ID from this server Args: media_id: The media ID to delete. Returns: A tuple of (list of deleted media IDs, total deleted media IDs). """ return await self._remove_local_media_from_disk(media_ids) async def delete_old_local_media( self, before_ts: int, size_gt: int = 0, keep_profiles: bool = True, delete_quarantined_media: bool = False, delete_protected_media: bool = False, ) -> Tuple[List[str], int]: """ Delete local or remote media from this server by size and timestamp. Removes media files, any thumbnails and cached URLs. Args: before_ts: Unix timestamp in ms. Files that were last used before this timestamp will be deleted. size_gt: Size of the media in bytes. Files that are larger will be deleted. keep_profiles: Switch to delete also files that are still used in image data (e.g user profile, room avatar). If false these files will be deleted. delete_quarantined_media: If True, media marked as quarantined will be deleted. delete_protected_media: If True, media marked as protected will be deleted. Returns: A tuple of (list of deleted media IDs, total deleted media IDs). """ old_media = await self.store.get_local_media_ids( before_ts, size_gt, keep_profiles, include_quarantined_media=delete_quarantined_media, include_protected_media=delete_protected_media, ) return await self._remove_local_media_from_disk(old_media) async def _remove_local_media_from_disk( self, media_ids: List[str] ) -> Tuple[List[str], int]: """ Delete local or remote media from this server. Removes media files, any thumbnails and cached URLs. Args: media_ids: List of media_id to delete Returns: A tuple of (list of deleted media IDs, total deleted media IDs). """ removed_media = [] for media_id in media_ids: logger.info("Deleting media with ID '%s'", media_id) full_path = self.filepaths.local_media_filepath(media_id) try: os.remove(full_path) except OSError as e: logger.warning("Failed to remove file: %r: %s", full_path, e) if e.errno == errno.ENOENT: pass else: continue thumbnail_dir = self.filepaths.local_media_thumbnail_dir(media_id) shutil.rmtree(thumbnail_dir, ignore_errors=True) await self.store.delete_remote_media(self.server_name, media_id) await self.store.delete_url_cache((media_id,)) await self.store.delete_url_cache_media((media_id,)) removed_media.append(media_id) return removed_media, len(removed_media) synapse-1.100.0/synapse/media/media_storage.py000066400000000000000000000342271455622526000212700ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2018-2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import contextlib import logging import os import shutil from types import TracebackType from typing import ( IO, TYPE_CHECKING, Any, Awaitable, BinaryIO, Callable, Generator, Optional, Sequence, Tuple, Type, ) import attr from twisted.internet.defer import Deferred from twisted.internet.interfaces import IConsumer from twisted.protocols.basic import FileSender from synapse.api.errors import NotFoundError from synapse.logging.context import defer_to_thread, make_deferred_yieldable from synapse.logging.opentracing import start_active_span, trace, trace_with_opname from synapse.util import Clock from synapse.util.file_consumer import BackgroundFileConsumer from ._base import FileInfo, Responder from .filepath import MediaFilePaths if TYPE_CHECKING: from synapse.media.storage_provider import StorageProvider from synapse.server import HomeServer logger = logging.getLogger(__name__) class MediaStorage: """Responsible for storing/fetching files from local sources. Args: hs local_media_directory: Base path where we store media on disk filepaths storage_providers: List of StorageProvider that are used to fetch and store files. """ def __init__( self, hs: "HomeServer", local_media_directory: str, filepaths: MediaFilePaths, storage_providers: Sequence["StorageProvider"], ): self.hs = hs self.reactor = hs.get_reactor() self.local_media_directory = local_media_directory self.filepaths = filepaths self.storage_providers = storage_providers self._spam_checker_module_callbacks = hs.get_module_api_callbacks().spam_checker self.clock = hs.get_clock() @trace_with_opname("MediaStorage.store_file") async def store_file(self, source: IO, file_info: FileInfo) -> str: """Write `source` to the on disk media store, and also any other configured storage providers Args: source: A file like object that should be written file_info: Info about the file to store Returns: the file path written to in the primary media store """ with self.store_into_file(file_info) as (f, fname, finish_cb): # Write to the main media repository await self.write_to_file(source, f) # Write to the other storage providers await finish_cb() return fname @trace_with_opname("MediaStorage.write_to_file") async def write_to_file(self, source: IO, output: IO) -> None: """Asynchronously write the `source` to `output`.""" await defer_to_thread(self.reactor, _write_file_synchronously, source, output) @trace_with_opname("MediaStorage.store_into_file") @contextlib.contextmanager def store_into_file( self, file_info: FileInfo ) -> Generator[Tuple[BinaryIO, str, Callable[[], Awaitable[None]]], None, None]: """Context manager used to get a file like object to write into, as described by file_info. Actually yields a 3-tuple (file, fname, finish_cb), where file is a file like object that can be written to, fname is the absolute path of file on disk, and finish_cb is a function that returns an awaitable. fname can be used to read the contents from after upload, e.g. to generate thumbnails. finish_cb must be called and waited on after the file has been successfully been written to. Should not be called if there was an error. Checks for spam and stores the file into the configured storage providers. Args: file_info: Info about the file to store Example: with media_storage.store_into_file(info) as (f, fname, finish_cb): # .. write into f ... await finish_cb() """ path = self._file_info_to_path(file_info) fname = os.path.join(self.local_media_directory, path) dirname = os.path.dirname(fname) os.makedirs(dirname, exist_ok=True) finished_called = [False] main_media_repo_write_trace_scope = start_active_span( "writing to main media repo" ) main_media_repo_write_trace_scope.__enter__() try: with open(fname, "wb") as f: async def finish() -> None: # When someone calls finish, we assume they are done writing to the main media repo main_media_repo_write_trace_scope.__exit__(None, None, None) with start_active_span("writing to other storage providers"): # Ensure that all writes have been flushed and close the # file. f.flush() f.close() spam_check = await self._spam_checker_module_callbacks.check_media_file_for_spam( ReadableFileWrapper(self.clock, fname), file_info ) if spam_check != self._spam_checker_module_callbacks.NOT_SPAM: logger.info("Blocking media due to spam checker") # Note that we'll delete the stored media, due to the # try/except below. The media also won't be stored in # the DB. # We currently ignore any additional field returned by # the spam-check API. raise SpamMediaException(errcode=spam_check[0]) for provider in self.storage_providers: with start_active_span(str(provider)): await provider.store_file(path, file_info) finished_called[0] = True yield f, fname, finish except Exception as e: try: main_media_repo_write_trace_scope.__exit__( type(e), None, e.__traceback__ ) os.remove(fname) except Exception: pass raise e from None if not finished_called: exc = Exception("Finished callback not called") main_media_repo_write_trace_scope.__exit__( type(exc), None, exc.__traceback__ ) raise exc async def fetch_media(self, file_info: FileInfo) -> Optional[Responder]: """Attempts to fetch media described by file_info from the local cache and configured storage providers. Args: file_info Returns: Returns a Responder if the file was found, otherwise None. """ paths = [self._file_info_to_path(file_info)] # fallback for remote thumbnails with no method in the filename if file_info.thumbnail and file_info.server_name: paths.append( self.filepaths.remote_media_thumbnail_rel_legacy( server_name=file_info.server_name, file_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, ) ) for path in paths: local_path = os.path.join(self.local_media_directory, path) if os.path.exists(local_path): logger.debug("responding with local file %s", local_path) return FileResponder(open(local_path, "rb")) logger.debug("local file %s did not exist", local_path) for provider in self.storage_providers: for path in paths: res: Any = await provider.fetch(path, file_info) if res: logger.debug("Streaming %s from %s", path, provider) return res logger.debug("%s not found on %s", path, provider) return None @trace async def ensure_media_is_in_local_cache(self, file_info: FileInfo) -> str: """Ensures that the given file is in the local cache. Attempts to download it from storage providers if it isn't. Args: file_info Returns: Full path to local file """ path = self._file_info_to_path(file_info) local_path = os.path.join(self.local_media_directory, path) if os.path.exists(local_path): return local_path # Fallback for paths without method names # Should be removed in the future if file_info.thumbnail and file_info.server_name: legacy_path = self.filepaths.remote_media_thumbnail_rel_legacy( server_name=file_info.server_name, file_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, ) legacy_local_path = os.path.join(self.local_media_directory, legacy_path) if os.path.exists(legacy_local_path): return legacy_local_path dirname = os.path.dirname(local_path) os.makedirs(dirname, exist_ok=True) for provider in self.storage_providers: res: Any = await provider.fetch(path, file_info) if res: with res: consumer = BackgroundFileConsumer( open(local_path, "wb"), self.reactor ) await res.write_to_consumer(consumer) await consumer.wait() return local_path raise NotFoundError() @trace def _file_info_to_path(self, file_info: FileInfo) -> str: """Converts file_info into a relative path. The path is suitable for storing files under a directory, e.g. used to store files on local FS under the base media repository directory. """ if file_info.url_cache: if file_info.thumbnail: return self.filepaths.url_cache_thumbnail_rel( media_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, method=file_info.thumbnail.method, ) return self.filepaths.url_cache_filepath_rel(file_info.file_id) if file_info.server_name: if file_info.thumbnail: return self.filepaths.remote_media_thumbnail_rel( server_name=file_info.server_name, file_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, method=file_info.thumbnail.method, ) return self.filepaths.remote_media_filepath_rel( file_info.server_name, file_info.file_id ) if file_info.thumbnail: return self.filepaths.local_media_thumbnail_rel( media_id=file_info.file_id, width=file_info.thumbnail.width, height=file_info.thumbnail.height, content_type=file_info.thumbnail.type, method=file_info.thumbnail.method, ) return self.filepaths.local_media_filepath_rel(file_info.file_id) @trace def _write_file_synchronously(source: IO, dest: IO) -> None: """Write `source` to the file like `dest` synchronously. Should be called from a thread. Args: source: A file like object that's to be written dest: A file like object to be written to """ source.seek(0) # Ensure we read from the start of the file shutil.copyfileobj(source, dest) class FileResponder(Responder): """Wraps an open file that can be sent to a request. Args: open_file: A file like object to be streamed ot the client, is closed when finished streaming. """ def __init__(self, open_file: IO): self.open_file = open_file def write_to_consumer(self, consumer: IConsumer) -> Deferred: return make_deferred_yieldable( FileSender().beginFileTransfer(self.open_file, consumer) ) def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: self.open_file.close() class SpamMediaException(NotFoundError): """The media was blocked by a spam checker, so we simply 404 the request (in the same way as if it was quarantined). """ @attr.s(slots=True, auto_attribs=True) class ReadableFileWrapper: """Wrapper that allows reading a file in chunks, yielding to the reactor, and writing to a callback. This is simplified `FileSender` that takes an IO object rather than an `IConsumer`. """ CHUNK_SIZE = 2**14 clock: Clock path: str async def write_chunks_to(self, callback: Callable[[bytes], object]) -> None: """Reads the file in chunks and calls the callback with each chunk.""" with open(self.path, "rb") as file: while True: chunk = file.read(self.CHUNK_SIZE) if not chunk: break callback(chunk) # We yield to the reactor by sleeping for 0 seconds. await self.clock.sleep(0) synapse-1.100.0/synapse/media/oembed.py000066400000000000000000000241031455622526000177100ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import html import logging import urllib.parse from typing import TYPE_CHECKING, List, Optional, cast import attr from synapse.media.preview_html import parse_html_description from synapse.types import JsonDict from synapse.util import json_decoder if TYPE_CHECKING: from lxml import etree from synapse.server import HomeServer logger = logging.getLogger(__name__) @attr.s(slots=True, frozen=True, auto_attribs=True) class OEmbedResult: # The Open Graph result (converted from the oEmbed result). open_graph_result: JsonDict # The author_name of the oEmbed result author_name: Optional[str] # Number of milliseconds to cache the content, according to the oEmbed response. # # This will be None if no cache-age is provided in the oEmbed response (or # if the oEmbed response cannot be turned into an Open Graph response). cache_age: Optional[int] class OEmbedProvider: """ A helper for accessing oEmbed content. It can be used to check if a URL should be accessed via oEmbed and for requesting/parsing oEmbed content. """ def __init__(self, hs: "HomeServer"): self._oembed_patterns = {} for oembed_endpoint in hs.config.oembed.oembed_patterns: api_endpoint = oembed_endpoint.api_endpoint # Only JSON is supported at the moment. This could be declared in # the formats field. Otherwise, if the endpoint ends in .xml assume # it doesn't support JSON. if ( oembed_endpoint.formats is not None and "json" not in oembed_endpoint.formats ) or api_endpoint.endswith(".xml"): logger.info( "Ignoring oEmbed endpoint due to not supporting JSON: %s", api_endpoint, ) continue # Iterate through each URL pattern and point it to the endpoint. for pattern in oembed_endpoint.url_patterns: self._oembed_patterns[pattern] = api_endpoint def get_oembed_url(self, url: str) -> Optional[str]: """ Check whether the URL should be downloaded as oEmbed content instead. Args: url: The URL to check. Returns: A URL to use instead or None if the original URL should be used. """ for url_pattern, endpoint in self._oembed_patterns.items(): if url_pattern.fullmatch(url): # TODO Specify max height / width. # Note that only the JSON format is supported, some endpoints want # this in the URL, others want it as an argument. endpoint = endpoint.replace("{format}", "json") args = {"url": url, "format": "json"} query_str = urllib.parse.urlencode(args, True) return f"{endpoint}?{query_str}" # No match. return None def autodiscover_from_html(self, tree: "etree._Element") -> Optional[str]: """ Search an HTML document for oEmbed autodiscovery information. Args: tree: The parsed HTML body. Returns: The URL to use for oEmbed information, or None if no URL was found. """ # Search for link elements with the proper rel and type attributes. # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. for tag in cast( List["etree._Element"], tree.xpath("//link[@rel='alternate'][@type='application/json+oembed']"), ): if "href" in tag.attrib: return cast(str, tag.attrib["href"]) # Some providers (e.g. Flickr) use alternative instead of alternate. # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. for tag in cast( List["etree._Element"], tree.xpath("//link[@rel='alternative'][@type='application/json+oembed']"), ): if "href" in tag.attrib: return cast(str, tag.attrib["href"]) return None def parse_oembed_response(self, url: str, raw_body: bytes) -> OEmbedResult: """ Parse the oEmbed response into an Open Graph response. Args: url: The URL which is being previewed (not the one which was requested). raw_body: The oEmbed response as JSON encoded as bytes. Returns: json-encoded Open Graph data """ try: # oEmbed responses *must* be UTF-8 according to the spec. oembed = json_decoder.decode(raw_body.decode("utf-8")) except ValueError: return OEmbedResult({}, None, None) # The version is a required string field, but not always provided, # or sometimes provided as a float. Be lenient. oembed_version = oembed.get("version", "1.0") if oembed_version != "1.0" and oembed_version != 1: return OEmbedResult({}, None, None) # Attempt to parse the cache age, if possible. try: cache_age = int(oembed.get("cache_age")) * 1000 except (TypeError, ValueError): # If the cache age cannot be parsed (e.g. wrong type or invalid # string), ignore it. cache_age = None # The oEmbed response converted to Open Graph. open_graph_response: JsonDict = {"og:url": url} title = oembed.get("title") if title and isinstance(title, str): # A common WordPress plug-in seems to incorrectly escape entities # in the oEmbed response. open_graph_response["og:title"] = html.unescape(title) author_name = oembed.get("author_name") if not isinstance(author_name, str): author_name = None # Use the provider name and as the site. provider_name = oembed.get("provider_name") if provider_name and isinstance(provider_name, str): open_graph_response["og:site_name"] = provider_name # If a thumbnail exists, use it. Note that dimensions will be calculated later. thumbnail_url = oembed.get("thumbnail_url") if thumbnail_url and isinstance(thumbnail_url, str): open_graph_response["og:image"] = thumbnail_url # Process each type separately. oembed_type = oembed.get("type") if oembed_type == "rich": html_str = oembed.get("html") if isinstance(html_str, str): calc_description_and_urls(open_graph_response, html_str) elif oembed_type == "photo": # If this is a photo, use the full image, not the thumbnail. url = oembed.get("url") if url and isinstance(url, str): open_graph_response["og:image"] = url elif oembed_type == "video": open_graph_response["og:type"] = "video.other" html_str = oembed.get("html") if html_str and isinstance(html_str, str): calc_description_and_urls(open_graph_response, oembed["html"]) for size in ("width", "height"): val = oembed.get(size) if type(val) is int: # noqa: E721 open_graph_response[f"og:video:{size}"] = val elif oembed_type == "link": open_graph_response["og:type"] = "website" else: logger.warning("Unknown oEmbed type: %s", oembed_type) return OEmbedResult(open_graph_response, author_name, cache_age) def _fetch_urls(tree: "etree._Element", tag_name: str) -> List[str]: results = [] # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. for tag in cast(List["etree._Element"], tree.xpath("//*/" + tag_name)): if "src" in tag.attrib: results.append(cast(str, tag.attrib["src"])) return results def calc_description_and_urls(open_graph_response: JsonDict, html_body: str) -> None: """ Calculate description for an HTML document. This uses lxml to convert the HTML document into plaintext. If errors occur during processing of the document, an empty response is returned. Args: open_graph_response: The current Open Graph summary. This is updated with additional fields. html_body: The HTML document, as bytes. Returns: The summary """ # If there's no body, nothing useful is going to be found. if not html_body: return from lxml import etree # Create an HTML parser. If this fails, log and return no metadata. parser = etree.HTMLParser(recover=True, encoding="utf-8") # Attempt to parse the body. If this fails, log and return no metadata. # TODO Develop of lxml-stubs has this correct. tree = etree.fromstring(html_body, parser) # type: ignore[arg-type] # The data was successfully parsed, but no tree was found. if tree is None: return # type: ignore[unreachable] # Attempt to find interesting URLs (images, videos, embeds). if "og:image" not in open_graph_response: image_urls = _fetch_urls(tree, "img") if image_urls: open_graph_response["og:image"] = image_urls[0] video_urls = _fetch_urls(tree, "video") + _fetch_urls(tree, "embed") if video_urls: open_graph_response["og:video"] = video_urls[0] description = parse_html_description(tree) if description: open_graph_response["og:description"] = description synapse-1.100.0/synapse/media/preview_html.py000066400000000000000000000453371455622526000211760ustar00rootroot00000000000000# # This file is licensed under the Affero General Public License (AGPL) version 3. # # Copyright 2021 The Matrix.org Foundation C.I.C. # Copyright (C) 2023 New Vector, Ltd # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # See the GNU Affero General Public License for more details: # . # # Originally licensed under the Apache License, Version 2.0: # . # # [This file includes modifications made by New Vector Limited] # # import codecs import logging import re from typing import ( TYPE_CHECKING, Callable, Dict, Generator, Iterable, List, Optional, Set, Union, cast, ) if TYPE_CHECKING: from lxml import etree logger = logging.getLogger(__name__) _charset_match = re.compile( rb'<\s*meta[^>]*charset\s*=\s*"?([a-z0-9_-]+)"?', flags=re.I ) _xml_encoding_match = re.compile( rb'\s*<\s*\?\s*xml[^>]*encoding="([a-z0-9_-]+)"', flags=re.I ) _content_type_match = re.compile(r'.*; *charset="?(.*?)"?(;|$)', flags=re.I) # Certain elements aren't meant for display. ARIA_ROLES_TO_IGNORE = {"directory", "menu", "menubar", "toolbar"} def _normalise_encoding(encoding: str) -> Optional[str]: """Use the Python codec's name as the normalised entry.""" try: return codecs.lookup(encoding).name except LookupError: return None def _get_html_media_encodings( body: bytes, content_type: Optional[str] ) -> Iterable[str]: """ Get potential encoding of the body based on the (presumably) HTML body or the content-type header. The precedence used for finding a character encoding is: 1. tag with a charset declared. 2. The XML document's character encoding attribute. 3. The Content-Type header. 4. Fallback to utf-8. 5. Fallback to windows-1252. This roughly follows the algorithm used by BeautifulSoup's bs4.dammit.EncodingDetector. Args: body: The HTML document, as bytes. content_type: The Content-Type header. Returns: The character encoding of the body, as a string. """ # There's no point in returning an encoding more than once. attempted_encodings: Set[str] = set() # Limit searches to the first 1kb, since it ought to be at the top. body_start = body[:1024] # Check if it has an encoding set in a meta tag. match = _charset_match.search(body_start) if match: encoding = _normalise_encoding(match.group(1).decode("ascii")) if encoding: attempted_encodings.add(encoding) yield encoding # TODO Support # Check if it has an XML document with an encoding. match = _xml_encoding_match.match(body_start) if match: encoding = _normalise_encoding(match.group(1).decode("ascii")) if encoding and encoding not in attempted_encodings: attempted_encodings.add(encoding) yield encoding # Check the HTTP Content-Type header for a character set. if content_type: content_match = _content_type_match.match(content_type) if content_match: encoding = _normalise_encoding(content_match.group(1)) if encoding and encoding not in attempted_encodings: attempted_encodings.add(encoding) yield encoding # Finally, fallback to UTF-8, then windows-1252. for fallback in ("utf-8", "cp1252"): if fallback not in attempted_encodings: yield fallback def decode_body( body: bytes, uri: str, content_type: Optional[str] = None ) -> Optional["etree._Element"]: """ This uses lxml to parse the HTML document. Args: body: The HTML document, as bytes. uri: The URI used to download the body. content_type: The Content-Type header. Returns: The parsed HTML body, or None if an error occurred during processed. """ # If there's no body, nothing useful is going to be found. if not body: return None # The idea here is that multiple encodings are tried until one works. # Unfortunately the result is never used and then LXML will decode the string # again with the found encoding. for encoding in _get_html_media_encodings(body, content_type): try: body.decode(encoding) except Exception: pass else: break else: logger.warning("Unable to decode HTML body for %s", uri) return None from lxml import etree # Create an HTML parser. parser = etree.HTMLParser(recover=True, encoding=encoding) # Attempt to parse the body. Returns None if the body was successfully # parsed, but no tree was found. # TODO Develop of lxml-stubs has this correct. return etree.fromstring(body, parser) # type: ignore[arg-type] def _get_meta_tags( tree: "etree._Element", property: str, prefix: str, property_mapper: Optional[Callable[[str], Optional[str]]] = None, ) -> Dict[str, Optional[str]]: """ Search for meta tags prefixed with a particular string. Args: tree: The parsed HTML document. property: The name of the property which contains the tag name, e.g. "property" for Open Graph. prefix: The prefix on the property to search for, e.g. "og" for Open Graph. property_mapper: An optional callable to map the property to the Open Graph form. Can return None for a key to ignore that key. Returns: A map of tag name to value. """ # This actually returns Dict[str, str], but the caller sets this as a variable # which is Dict[str, Optional[str]]. results: Dict[str, Optional[str]] = {} # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. for tag in cast( List["etree._Element"], tree.xpath( f"//*/meta[starts-with(@{property}, '{prefix}:')][@content][not(@content='')]" ), ): # if we've got more than 50 tags, someone is taking the piss if len(results) >= 50: logger.warning( "Skipping parsing of Open Graph for page with too many '%s:' tags", prefix, ) return {} key = cast(str, tag.attrib[property]) if property_mapper: new_key = property_mapper(key) # None is a special value used to ignore a value. if new_key is None: continue key = new_key results[key] = cast(str, tag.attrib["content"]) return results def _map_twitter_to_open_graph(key: str) -> Optional[str]: """ Map a Twitter card property to the analogous Open Graph property. Args: key: The Twitter card property (starts with "twitter:"). Returns: The Open Graph property (starts with "og:") or None to have this property be ignored. """ # Twitter card properties with no analogous Open Graph property. if key == "twitter:card" or key == "twitter:creator": return None if key == "twitter:site": return "og:site_name" # Otherwise, swap twitter to og. return "og" + key[7:] def parse_html_to_open_graph(tree: "etree._Element") -> Dict[str, Optional[str]]: """ Parse the HTML document into an Open Graph response. This uses lxml to search the HTML document for Open Graph data (or synthesizes it from the document). Args: tree: The parsed HTML document. Returns: The Open Graph response as a dictionary. """ # Search for Open Graph (og:) meta tags, e.g.: # # "og:type" : "video", # "og:url" : "https://www.youtube.com/watch?v=LXDBoHyjmtw", # "og:site_name" : "YouTube", # "og:video:type" : "application/x-shockwave-flash", # "og:description" : "Fun stuff happening here", # "og:title" : "RemoteJam - Matrix team hack for Disrupt Europe Hackathon", # "og:image" : "https://i.ytimg.com/vi/LXDBoHyjmtw/maxresdefault.jpg", # "og:video:url" : "http://www.youtube.com/v/LXDBoHyjmtw?version=3&autohide=1", # "og:video:width" : "1280" # "og:video:height" : "720", # "og:video:secure_url": "https://www.youtube.com/v/LXDBoHyjmtw?version=3", og = _get_meta_tags(tree, "property", "og") # TODO: Search for properties specific to the different Open Graph types, # such as article: meta tags, e.g.: # # "article:publisher" : "https://www.facebook.com/thethudonline" /> # "article:author" content="https://www.facebook.com/thethudonline" /> # "article:tag" content="baby" /> # "article:section" content="Breaking News" /> # "article:published_time" content="2016-03-31T19:58:24+00:00" /> # "article:modified_time" content="2016-04-01T18:31:53+00:00" /> # Search for Twitter Card (twitter:) meta tags, e.g.: # # "twitter:site" : "@matrixdotorg" # "twitter:creator" : "@matrixdotorg" # # Twitter cards tags also duplicate Open Graph tags. # # See https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started twitter = _get_meta_tags(tree, "name", "twitter", _map_twitter_to_open_graph) # Merge the Twitter values with the Open Graph values, but do not overwrite # information from Open Graph tags. for key, value in twitter.items(): if key not in og: og[key] = value if "og:title" not in og: # Attempt to find a title from the title tag, or the biggest header on the page. # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. title = cast( List["etree._ElementUnicodeResult"], tree.xpath("((//title)[1] | (//h1)[1] | (//h2)[1] | (//h3)[1])/text()"), ) if title: og["og:title"] = title[0].strip() else: og["og:title"] = None if "og:image" not in og: # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. meta_image = cast( List["etree._ElementUnicodeResult"], tree.xpath( "//*/meta[translate(@itemprop, 'IMAGE', 'image')='image'][not(@content='')]/@content[1]" ), ) # If a meta image is found, use it. if meta_image: og["og:image"] = meta_image[0] else: # Try to find images which are larger than 10px by 10px. # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. # # TODO: consider inlined CSS styles as well as width & height attribs images = cast( List["etree._Element"], tree.xpath("//img[@src][number(@width)>10][number(@height)>10]"), ) images = sorted( images, key=lambda i: ( -1 * float(i.attrib["width"]) * float(i.attrib["height"]) ), ) # If no images were found, try to find *any* images. if not images: # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. images = cast(List["etree._Element"], tree.xpath("//img[@src][1]")) if images: og["og:image"] = cast(str, images[0].attrib["src"]) # Finally, fallback to the favicon if nothing else. else: # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. favicons = cast( List["etree._ElementUnicodeResult"], tree.xpath("//link[@href][contains(@rel, 'icon')]/@href[1]"), ) if favicons: og["og:image"] = favicons[0] if "og:description" not in og: # Check the first meta description tag for content. # Cast: the type returned by xpath depends on the xpath expression: mypy can't deduce this. meta_description = cast( List["etree._ElementUnicodeResult"], tree.xpath( "//*/meta[translate(@name, 'DESCRIPTION', 'description')='description'][not(@content='')]/@content[1]" ), ) # If a meta description is found with content, use it. if meta_description: og["og:description"] = meta_description[0] else: og["og:description"] = parse_html_description(tree) elif og["og:description"]: # This must be a non-empty string at this point. assert isinstance(og["og:description"], str) og["og:description"] = summarize_paragraphs([og["og:description"]]) # TODO: delete the url downloads to stop diskfilling, # as we only ever cared about its OG return og def parse_html_description(tree: "etree._Element") -> Optional[str]: """ Calculate a text description based on an HTML document. Grabs any text nodes which are inside the tag, unless they are within an HTML5 semantic markup tag (
    ,